IiBWaW0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZToJRm9ydHJhbiAyMDA4IChhbmQgb2xkZXI6IEZvcnRyYW4gMjAwMywgOTUsIDkwLCBhbmQgNzcpCiIgVmVyc2lvbjoJMC45NwoiIExhc3QgQ2hhbmdlOgkyMDE2IEZlYi4gMjYKIiBNYWludGFpbmVyOglBaml0IEouIFRoYWtrYXIgPGFqaXRAdW5iLmNhPjsgPGh0dHA6Ly93d3cyLnVuYi5jYS9+YWppdC8+CiIgVXNhZ2U6CUZvciBpbnN0cnVjdGlvbnMsIGRvIDpoZWxwIGZvcnRyYW4tc3ludGF4IGZyb20gVmltCiIgQ3JlZGl0czoKIiAgVmVyc2lvbiAwLjEgKEFwcmlsIDIwMDApIHdhcyBiYXNlZCBvbiB0aGUgZm9ydHJhbiA3NyBzeW50YXggZmlsZSBieSBNYXJpbyBFdXNlYmlvIGFuZAoiICBQcmViZW4gR3VsZGJlcmcuIFNpbmNlIHRoZW4sIHVzZWZ1bCBzdWdnZXN0aW9ucyBhbmQgY29udHJpYnV0aW9ucyBoYXZlIGJlZW4gbWFkZSwKIiAgaW4gY2hyb25vbG9naWNhbCBvcmRlciwgYnk6CiIgIEFuZHJlaiBQYW5qa292LCBCcmFtIE1vb2xlbmFhciwgVGhvbWFzIE9sc2VuLCBNaWNoYWVsIFN0ZXJuYmVyZywgQ2hyaXN0aWFuIFJlaWxlLAoiICBXYWx0ZXIgRGlldWRvbm7pLCBBbGV4YW5kZXIgV2FnbmVyLCBSb21hbiBCZXJ0bGUsIENoYXJsZXMgUmVuZGxlbWFuLAoiICBBbmRyZXcgR3JpZmZpdGhzLCBKb2UgS3JhaG4sIEhlbmRyaWsgTWVyeCwgTWF0dCBUaG9tcHNvbiwgYW5kIEphbiBIZXJtYW5uLgoKaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKICBmaW5pc2gKZW5kaWYKCmxldCBzOmNwb19zYXZlID0gJmNwbwpzZXQgY3BvJnZpbQoKIiBDaG9vc2UgZm9ydHJhbl9kaWFsZWN0IHVzaW5nIHRoZSBwcmlvcml0eToKIiBzb3VyY2UgZmlsZSBkaXJlY3RpdmUgPiBidWZmZXItbG9jYWwgdmFsdWUgPiBnbG9iYWwgdmFsdWUgPiBmaWxlIGV4dGVuc2lvbgoiIGZpcnN0IHRyeSB1c2luZyBkaXJlY3RpdmUgaW4gZmlyc3QgdGhyZWUgbGluZXMgb2YgZmlsZQpsZXQgYjpmb3J0cmFuX3JldHlwZSA9IGdldGxpbmUoMSkuIiAiLmdldGxpbmUoMikuIiAiLmdldGxpbmUoMykKaWYgYjpmb3J0cmFuX3JldHlwZSA9fj8gJ1w8Zm9ydHJhbl9kaWFsZWN0XHMqPVxzKkZcPicKICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiRiIKZWxzZWlmIGI6Zm9ydHJhbl9yZXR5cGUgPX4/ICdcPGZvcnRyYW5fZGlhbGVjdFxzKj1ccypmMDhcPicKICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiZjA4IgplbHNlaWYgIWV4aXN0cygiYjpmb3J0cmFuX2RpYWxlY3QiKQogIGlmIGV4aXN0cygiZzpmb3J0cmFuX2RpYWxlY3QiKSAmJiBnOmZvcnRyYW5fZGlhbGVjdCA9fiMgJ1w8Rlx8ZjA4XD4nCiAgICAiIHRyeSBnbG9iYWwgdmFyaWFibGUKICAgIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9IGc6Zm9ydHJhbl9kaWFsZWN0CiAgZWxzZSAgICAgICAgICIgbm90aGluZyBmb3VuZCwgc28gdXNlIGRlZmF1bHQKICAgIGxldCBiOmZvcnRyYW5fZGlhbGVjdCA9ICJmMDgiCiAgZW5kaWYKZW5kaWYKdW5sZXQhIGI6Zm9ydHJhbl9yZXR5cGUKIiBtYWtlIHN1cmUgYnVmZmVyLWxvY2FsIHZhbHVlIGlzIG5vdCBpbnZhbGlkCmlmIGI6Zm9ydHJhbl9kaWFsZWN0ICF+IyAnXDxGXHxmMDhcPicKICBsZXQgYjpmb3J0cmFuX2RpYWxlY3QgPSAiZjA4IgplbmRpZgoKIiBDaG9vc2UgYmV0d2VlbiBmaXhlZCBhbmQgZnJlZSBzb3VyY2UgZm9ybSBpZiB0aGlzIGhhc24ndCBiZWVuIGRvbmUgeWV0CmlmICFleGlzdHMoImI6Zm9ydHJhbl9maXhlZF9zb3VyY2UiKQogIGlmIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJGIgogICAgIiBGIHJlcXVpcmVzIGZyZWUgc291cmNlIGZvcm0KICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMAogIGVsc2VpZiBleGlzdHMoImZvcnRyYW5fZnJlZV9zb3VyY2UiKQogICAgIiBVc2VyIGd1YXJhbnRlZXMgZnJlZSBzb3VyY2UgZm9ybSBmb3IgYWxsIGZvcnRyYW4gZmlsZXMKICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMAogIGVsc2VpZiBleGlzdHMoImZvcnRyYW5fZml4ZWRfc291cmNlIikKICAgICIgVXNlciBndWFyYW50ZWVzIGZpeGVkIHNvdXJjZSBmb3JtIGZvciBhbGwgZm9ydHJhbiBmaWxlcwogICAgbGV0IGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPSAxCiAgZWxzZWlmIGV4cGFuZCgiJTplIikgPT0/ICJmXDw5MFx8OTVcfDAzXHwwOFw+IgogICAgIiBGcmVlLWZvcm0gZmlsZSBleHRlbnNpb24gZGVmYXVsdHMgYXMgaW4gSW50ZWwgaWZvcnQsIGdjYyhnZm9ydHJhbiksIE5BRywgUGF0aHNjYWxlLCBhbmQgQ3JheSBjb21waWxlcnMKICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMAogIGVsc2VpZiBleHBhbmQoIiU6ZSIpID09PyAiZlx8Zjc3XHxmb3IiCiAgICAiIEZpeGVkLWZvcm0gZmlsZSBleHRlbnNpb24gZGVmYXVsdHMKICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMQogIGVsc2UKICAgICIgTW9kZXJuIGZvcnRyYW4gc3RpbGwgYWxsb3dzIGJvdGggZnJlZSBhbmQgZml4ZWQgc291cmNlIGZvcm0uCiAgICAiIEFzc3VtZSBmaXhlZCBzb3VyY2UgZm9ybSB1bmxlc3Mgc2lnbnMgb2YgZnJlZSBzb3VyY2UgZm9ybQogICAgIiBhcmUgZGV0ZWN0ZWQgaW4gdGhlIGZpcnN0IGZpdmUgY29sdW1ucyBvZiB0aGUgZmlyc3QgczpsbWF4IGxpbmVzLgogICAgIiBEZXRlY3Rpb24gYmVjb21lcyBtb3JlIGFjY3VyYXRlIGFuZCB0aW1lLWNvbnN1bWluZyBpZiBtb3JlIGxpbmVzCiAgICAiIGFyZSBjaGVja2VkLiBJbmNyZWFzZSB0aGUgbGltaXQgYmVsb3cgaWYgeW91IGtlZXAgbG90cyBvZiBjb21tZW50cyBhdAogICAgIiB0aGUgdmVyeSB0b3Agb2YgZWFjaCBmaWxlIGFuZCB5b3UgaGF2ZSBhIGZhc3QgY29tcHV0ZXIuCiAgICBsZXQgczpsbWF4ID0gNTAwCiAgICBpZiAoIHM6bG1heCA+IGxpbmUoIiQiKSApCiAgICAgIGxldCBzOmxtYXggPSBsaW5lKCIkIikKICAgIGVuZGlmCiAgICBsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDEKICAgIGxldCBzOmxuPTEKICAgIHdoaWxlIHM6bG4gPD0gczpsbWF4CiAgICAgIGxldCBzOnRlc3QgPSBzdHJwYXJ0KGdldGxpbmUoczpsbiksMCw1KQogICAgICBpZiBzOnRlc3QgIX4gJ15bQ2MqXScgJiYgczp0ZXN0ICF+ICdeICpbISNdJyAmJiBzOnRlc3QgPX4gJ1teIDAtOVx0XScgJiYgczp0ZXN0ICF+ICdeWyAwLTldKlx0JwogICAgICAgIGxldCBiOmZvcnRyYW5fZml4ZWRfc291cmNlID0gMAogICAgICAgIGJyZWFrCiAgICAgIGVuZGlmCiAgICAgIGxldCBzOmxuID0gczpsbiArIDEKICAgIGVuZHdoaWxlCiAgICB1bmxldCEgczpsbWF4IHM6bG4gczp0ZXN0CiAgZW5kaWYKZW5kaWYKCnN5biBjYXNlIGlnbm9yZQoKaWYgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9PSAxCiAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lCSJeXHNcezYsfVx6c1xhXHcqXHplXHMqOiIKZWxzZQogIHN5biBtYXRjaCBmb3J0cmFuQ29uc3RydWN0TmFtZQkiXlxzKlx6c1xhXHcqXHplXHMqOiIKZW5kaWYKaWYgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lICJcKFw8ZW5kXHMqZG9cc1wrXClcQDw9XGFcdyoiCiAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lICJcKFw8ZW5kXHMqaWZcc1wrXClcQDw9XGFcdyoiCiAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lICJcKFw8ZW5kXHMqc2VsZWN0XHNcK1wpXEA8PVxhXHcqIgplbmRpZgoKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFw+IgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGNoYXJhY3Rlclw+IgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGNvbXBsZXhcPiIKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxpbnRlZ2VyXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5UeXBlCQlpbnRyaW5zaWMKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkiXDxpbXBsaWNpdFw+IgpzeW4ga2V5d29yZCBmb3J0cmFuU3RydWN0dXJlCWRpbWVuc2lvbgpzeW4ga2V5d29yZCBmb3J0cmFuU3RvcmFnZUNsYXNzCXBhcmFtZXRlciBzYXZlCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxzdWJyb3V0aW5lXD4iCnN5biBrZXl3b3JkIGZvcnRyYW5DYWxsCQljYWxsCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxmdW5jdGlvblw+IgpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8cHJvZ3JhbVw+IgpzeW4ga2V5d29yZCBmb3J0cmFuS2V5d29yZAlyZXR1cm4gc3RvcApzeW4ga2V5d29yZCBmb3J0cmFuQ29uZGl0aW9uYWwJZWxzZSB0aGVuCnN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8aWZcPiIKc3luIG1hdGNoIGZvcnRyYW5Db25kaXRpb25hbE9iCSJcPGlmXHMqKC4qKVxzKlxkXCtccyosXHMqXGRcK1xzKixccypcZFwrXHMqJCIKc3luIG1hdGNoIGZvcnRyYW5SZXBlYXQJCSJcPGRvXD4iCgpzeW4ga2V5d29yZCBmb3J0cmFuVG9kbwkJY29udGFpbmVkIHRvZG8gZml4bWUKCiJDYXRjaCBlcnJvcnMgY2F1c2VkIGJ5IHRvbyBtYW55IHJpZ2h0IHBhcmVudGhlc2VzCnN5biByZWdpb24gZm9ydHJhblBhcmVuIHRyYW5zcGFyZW50IHN0YXJ0PSIoIiBlbmQ9IikiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUGFyZW5FcnJvcixAZm9ydHJhbkNvbW1lbnRHcm91cCxjSW5jbHVkZWQsQHNwZWxsCnN5biBtYXRjaCAgZm9ydHJhblBhcmVuRXJyb3IgICAiKSIKCnN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IJIlwuXHMqblw9ZXF2XHMqXC4iCnN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IJIlwuXHMqXChhbmRcfG9yXHxub3RcKVxzKlwuIgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSJcKCtcfC1cfC9cfFwqXCkiCnN5biBtYXRjaCBmb3J0cmFuVHlwZU9iCQkiXDxjaGFyYWN0ZXJccypcKiIKCnN5biBtYXRjaCBmb3J0cmFuQm9vbGVhbgkiXC5ccypcKHRydWVcfGZhbHNlXClccypcLiIKCnN5biBrZXl3b3JkIGZvcnRyYW5SZWFkV3JpdGUJYmFja3NwYWNlIGNsb3NlIGVuZGZpbGUgaW5xdWlyZSBvcGVuIHByaW50IHJlYWQgcmV3aW5kIHdyaXRlCgoiSWYgdGFicyBhcmUgYWxsb3dlZCB0aGVuIHRoZSBsZWZ0IG1hcmdpbiBjaGVja3MgZG8gbm90IHdvcmsKaWYgZXhpc3RzKCJmb3J0cmFuX2hhdmVfdGFicyIpCiAgc3luIG1hdGNoIGZvcnRyYW5UYWIJCSJcdCIgIHRyYW5zcGFyZW50CmVsc2UKICBzeW4gbWF0Y2ggZm9ydHJhblRhYgkJIlx0IgplbmRpZgoKc3luIGtleXdvcmQgZm9ydHJhbklPCQlhY2Nlc3MgYmxhbmsgZGlyZWN0IGV4aXN0IGZpbGUgZm10IGZvcm0gZm9ybWF0dGVkIGlvc3RhdCBuYW1lIG5hbWVkIG5leHRyZWMgbnVtYmVyIG9wZW5lZCByZWMgcmVjbCBzZXF1ZW50aWFsIHN0YXR1cyB1bmZvcm1hdHRlZCB1bml0CgpzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljUgkJYWxvZyBhbG9nMTAgYW1heDAgYW1heDEgYW1pbjAgYW1pbjEgYW1vZCBjYWJzIGNjb3MgY2V4cCBjbG9nIGNzaW4gY3NxcnQgZGFicyBkYWNvcyBkYXNpbiBkYXRhbiBkYXRhbjIgZGNvcyBkY29zaCBkZGltIGRleHAgZGludCBkbG9nIGRsb2cxMCBkbWF4MSBkbWluMSBkbW9kIGRuaW50IGRzaWduIGRzaW4gZHNpbmggZHNxcnQgZHRhbiBkdGFuaCBmbG9hdCBpYWJzIGlkaW0gaWRpbnQgaWRuaW50IGlmaXggaXNpZ24gbWF4MCBtYXgxIG1pbjAgbWluMSBzbmdsCgoiIEludHJpbnNpY3MgcHJvdmlkZWQgYnkgc29tZSB2ZW5kb3JzCnN5biBrZXl3b3JkIGZvcnRyYW5FeHRyYUludHJpbnNpYwlhbGdhbWEgY2RhYnMgY2Rjb3MgY2RleHAgY2Rsb2cgY2RzaW4gY2RzcXJ0IGNxYWJzIGNxY29zIGNxZXhwIGNxbG9nIGNxc2luIGNxc3FydCBkY21wbHggZGNvbmpnIGRlcmYgZGVyZmMgZGZsb2F0IGRnYW1tYSBkaW1hZyBkbGdhbWEgaXFpbnQgcWFicyBxYWNvcyBxYXNpbiBxYXRhbiBxYXRhbjIgcWNtcGx4IHFjb25qZyBxY29zIHFjb3NoIHFkaW0gcWVyZiBxZXJmYyBxZXhwIHFnYW1tYSBxaW1hZyBxbGdhbWEgcWxvZyBxbG9nMTAgcW1heDEgcW1pbjEgcW1vZCBxbmludCBxc2lnbiBxc2luIHFzaW5oIHFzcXJ0IHF0YW4gcXRhbmgKCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMJYWJzIGFjb3MgYWltYWcgYWludCBhbmludCBhc2luIGF0YW4gYXRhbjIgY2hhciBjbXBseCBjb25qZyBjb3MgY29zaCBleHAgaWNoYXIgaW5kZXggaW50IGxvZyBsb2cxMCBtYXggbWluIG5pbnQgc2lnbiBzaW4gc2luaCBzcXJ0IHRhbiB0YW5oCnN5biBtYXRjaCBmb3J0cmFuSW50cmluc2ljCSJcPGxlblxzKlsoLF0ibWU9cyszCnN5biBtYXRjaCBmb3J0cmFuSW50cmluc2ljCSJcPHJlYWxccyooIm1lPXMrNApzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGltcGxpY2l0XHNcK3JlYWwiCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIl5ccypyZWFsXD4iCnN5biBtYXRjaCBmb3J0cmFuSW50cmluc2ljCSJcPGxvZ2ljYWxccyooIm1lPXMrNwpzeW4gbWF0Y2ggZm9ydHJhblR5cGUJCSJcPGltcGxpY2l0XHNcK2xvZ2ljYWwiCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJIl5ccypsb2dpY2FsXD4iCgoiTnVtYmVycyBvZiB2YXJpb3VzIHNvcnRzCiIgSW50ZWdlcnMKc3luIG1hdGNoIGZvcnRyYW5OdW1iZXIJZGlzcGxheSAiXDxcZFwrXChfXGFcdypcKVw9XD4iCiIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB3aXRob3V0IGEgZGVjaW1hbCBwb2ludApzeW4gbWF0Y2ggZm9ydHJhbkZsb2F0SWxsCWRpc3BsYXkJIlw8XGRcK1tkZXFdWy0rXVw9XGRcK1woX1xhXHcqXClcPVw+IgoiIGZsb2F0aW5nIHBvaW50IG51bWJlciwgc3RhcnRpbmcgd2l0aCBhIGRlY2ltYWwgcG9pbnQKc3luIG1hdGNoIGZvcnRyYW5GbG9hdElsbAlkaXNwbGF5CSJcLlxkXCtcKFtkZXFdWy0rXVw9XGRcK1wpXD1cKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIsIG5vIGRpZ2l0cyBhZnRlciBkZWNpbWFsCnN5biBtYXRjaCBmb3J0cmFuRmxvYXRJbGwJZGlzcGxheQkiXDxcZFwrXC5cKFtkZXFdWy0rXVw9XGRcK1wpXD1cKF9cYVx3KlwpXD1cPiIKIiBmbG9hdGluZyBwb2ludCBudW1iZXIsIEQgb3IgUSBleHBvbmVudHMKc3luIG1hdGNoIGZvcnRyYW5GbG9hdElsbAlkaXNwbGF5CSJcPFxkXCtcLlxkXCtcKFtkcV1bLStdXD1cZFwrXClcPVwoX1xhXHcqXClcPVw+IgoiIGZsb2F0aW5nIHBvaW50IG51bWJlcgpzeW4gbWF0Y2ggZm9ydHJhbkZsb2F0CWRpc3BsYXkJIlw8XGRcK1wuXGRcK1woZVstK11cPVxkXCtcKVw9XChfXGFcdypcKVw9XD4iCiIgTnVtYmVycyBpbiBmb3JtYXRzCnN5biBtYXRjaCBmb3J0cmFuRm9ybWF0U3BlYwlkaXNwbGF5CSJcZCpmXGRcK1wuXGRcKyIKc3luIG1hdGNoIGZvcnRyYW5Gb3JtYXRTcGVjCWRpc3BsYXkJIlxkKmVbc25dXD1cZFwrXC5cZFwrXChlXGQrXD5cKVw9IgpzeW4gbWF0Y2ggZm9ydHJhbkZvcm1hdFNwZWMJZGlzcGxheQkiXGQqXChkXHxxXHxnXClcZFwrXC5cZFwrXChlXGQrXClcPSIKc3luIG1hdGNoIGZvcnRyYW5Gb3JtYXRTcGVjCWRpc3BsYXkJIlxkXCt4XD4iCiIgVGhlIG5leHQgbWF0Y2ggY2Fubm90IGJlIHVzZWQgYmVjYXVzZSBpdCB3b3VsZCBwaWNrIHVwIGlkZW50aWZpZXJzIGFzIHdlbGwKIiBzeW4gbWF0Y2ggZm9ydHJhbkZvcm1hdFNwZWMJZGlzcGxheQkiXDxcKGFcfGlcKVxkXCsiCgoiIE51bWJlcnMgYXMgbGFiZWxzCnN5biBtYXRjaCBmb3J0cmFuTGFiZWxOdW1iZXIJZGlzcGxheQkiXlxkXHsxLDV9XHMibWU9ZS0xCnN5biBtYXRjaCBmb3J0cmFuTGFiZWxOdW1iZXIJZGlzcGxheQkiXiBcZFx7MSw0fVxzIm1zPXMrMSxtZT1lLTEKc3luIG1hdGNoIGZvcnRyYW5MYWJlbE51bWJlcglkaXNwbGF5CSJeICBcZFx7MSwzfVxzIm1zPXMrMixtZT1lLTEKc3luIG1hdGNoIGZvcnRyYW5MYWJlbE51bWJlcglkaXNwbGF5CSJeICAgXGRcZFw9XHMibXM9cyszLG1lPWUtMQpzeW4gbWF0Y2ggZm9ydHJhbkxhYmVsTnVtYmVyCWRpc3BsYXkJIl4gICAgXGRccyJtcz1zKzQsbWU9ZS0xCgppZiBleGlzdHMoImZvcnRyYW5fbW9yZV9wcmVjaXNlIikKICAiIE51bWJlcnMgYXMgdGFyZ2V0cwogIHN5biBtYXRjaCBmb3J0cmFuVGFyZ2V0CWRpc3BsYXkJIlwoXDxpZlxzKiguXCspXHMqXClcQDw9XChcZFwrXHMqLFxzKlwpXHsyfVxkXCtcPiIKICBzeW4gbWF0Y2ggZm9ydHJhblRhcmdldAlkaXNwbGF5CSJcKFw8ZG9cc1wrXClcQDw9XGRcK1w+IgogIHN5biBtYXRjaCBmb3J0cmFuVGFyZ2V0CWRpc3BsYXkJIlwoXDxnb1xzKnRvXHMqKFw9XClcQDw9XChcZFwrXHMqLFxzKlwpKlxkXCtcPiIKZW5kaWYKCnN5biBrZXl3b3JkIGZvcnRyYW5UeXBlUglleHRlcm5hbApzeW4ga2V5d29yZCBmb3J0cmFuSU9SCQlmb3JtYXQKc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkUgkiXDxjb250aW51ZVw+IgpzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmQJIl5ccypcZFwrXHNcK2NvbnRpbnVlXD4iCnN5biBtYXRjaCBmb3J0cmFuS2V5d29yZCAgCSJcPGdvXHMqdG9cPiIKc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkRGVsICAJIlw8Z29ccyp0b1x6ZVxzXCsuKixccyooLiokIgpzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmRPYiAgCSJcPGdvXHMqdG9cemVccyooXGRcKy4qJCIKc3luIHJlZ2lvbiBmb3J0cmFuU3RyaW5nUglzdGFydD0rJysgZW5kPSsnKyBjb250YWlucz1mb3J0cmFuQ29udGludWVNYXJrLGZvcnRyYW5MZWZ0TWFyZ2luLGZvcnRyYW5TZXJpYWxOdW1iZXIKc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY1IJZGltIGxnZSBsZ3QgbGxlIGxsdCBtb2QKc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmREZWwJYXNzaWduIHBhdXNlCgpzeW4gbWF0Y2ggZm9ydHJhblR5cGUgICAgICAgICAgICJcPHR5cGVcPiIKc3luIGtleXdvcmQgZm9ydHJhblR5cGUJICAgICAgICBub25lCgpzeW4ga2V5d29yZCBmb3J0cmFuU3RydWN0dXJlCXByaXZhdGUgcHVibGljIGludGVudCBvcHRpb25hbApzeW4ga2V5d29yZCBmb3J0cmFuU3RydWN0dXJlCXBvaW50ZXIgdGFyZ2V0IGFsbG9jYXRhYmxlCnN5biBrZXl3b3JkIGZvcnRyYW5TdG9yYWdlQ2xhc3MJaW4gb3V0CnN5biBtYXRjaCBmb3J0cmFuU3RvcmFnZUNsYXNzCSJcPGtpbmRccyo9Im1lPXMrNApzeW4gbWF0Y2ggZm9ydHJhblN0b3JhZ2VDbGFzcwkiXDxsZW5ccyo9Im1lPXMrMwoKc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyCSJcPG1vZHVsZVw+IgpzeW4ga2V5d29yZCBmb3J0cmFuVW5pdEhlYWRlcgl1c2Ugb25seSBjb250YWlucwpzeW4ga2V5d29yZCBmb3J0cmFuVW5pdEhlYWRlcglyZXN1bHQgb3BlcmF0b3IgYXNzaWdubWVudApzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXIJIlw8aW50ZXJmYWNlXD4iCnN5biBtYXRjaCBmb3J0cmFuVW5pdEhlYWRlcgkiXDxyZWN1cnNpdmVcPiIKc3luIGtleXdvcmQgZm9ydHJhbktleXdvcmQJYWxsb2NhdGUgZGVhbGxvY2F0ZSBudWxsaWZ5IGN5Y2xlIGV4aXQKc3luIG1hdGNoIGZvcnRyYW5Db25kaXRpb25hbAkiXDxzZWxlY3RcPiIKc3luIGtleXdvcmQgZm9ydHJhbkNvbmRpdGlvbmFsCWNhc2UgZGVmYXVsdCB3aGVyZSBlbHNld2hlcmUKCnN5biBtYXRjaCBmb3J0cmFuT3BlcmF0b3IJIlwoXCg+XHw8XCk9XD1cfD09XHwvPVx8PVwpIgpzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yCSI9PiIKCnN5biByZWdpb24gZm9ydHJhblN0cmluZwlzdGFydD0rIisgZW5kPSsiKwljb250YWlucz1mb3J0cmFuTGVmdE1hcmdpbixmb3J0cmFuQ29udGludWVNYXJrLGZvcnRyYW5TZXJpYWxOdW1iZXIKc3luIGtleXdvcmQgZm9ydHJhbklPCQlwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZQpzeW4ga2V5d29yZCBmb3J0cmFuSU8JCWVvciBhZHZhbmNlIG5tbAoKc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYwlhZGp1c3RsIGFkanVzdHIgYWxsIGFsbG9jYXRlZCBhbnkgYXNzb2NpYXRlZCBiaXRfc2l6ZSBidGVzdCBjZWlsaW5nIGNvdW50IGNzaGlmdCBkYXRlX2FuZF90aW1lIGRpZ2l0cyBkb3RfcHJvZHVjdCBlb3NoaWZ0IGVwc2lsb24gZXhwb25lbnQgZmxvb3IgZnJhY3Rpb24gaHVnZSBpYW5kIGliY2xyIGliaXRzIGlic2V0IGllb3IgaW9yIGlzaGZ0IGlzaGZ0YyBsYm91bmQgbGVuX3RyaW0gbWF0bXVsIG1heGV4cG9uZW50IG1heGxvYyBtYXh2YWwgbWVyZ2UgbWluZXhwb25lbnQgbWlubG9jIG1pbnZhbCBtb2R1bG8gbXZiaXRzIG5lYXJlc3QgcGFjayBwcmVjaXNpb24gcHJlc2VudCBwcm9kdWN0IHJhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWMJc2NhbGUgc2NhbiBzZWxlY3RlZF9pbnRfa2luZCBzZWxlY3RlZF9yZWFsX2tpbmQgc2V0X2V4cG9uZW50IHNoYXBlIHNpemUgc3BhY2luZyBzcHJlYWQgc3VtIHN5c3RlbV9jbG9jayB0aW55IHRyYW5zcG9zZSB0cmltIHVib3VuZCB1bnBhY2sgdmVyaWZ5CnN5biBtYXRjaCBmb3J0cmFuSW50cmluc2ljCQkiXDxub3RcPlwoXHMqXC5cKVxAISJtZT1zKzMKc3luIG1hdGNoIGZvcnRyYW5JbnRyaW5zaWMJIlw8a2luZFw+XHMqWygsXSJtZT1zKzQKCnN5biBtYXRjaCAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXHMqZnVuY3Rpb24iCnN5biBtYXRjaCAgZm9ydHJhblVuaXRIZWFkZXIJIlw8ZW5kXHMqaW50ZXJmYWNlIgpzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKm1vZHVsZSIKc3luIG1hdGNoICBmb3J0cmFuVW5pdEhlYWRlcgkiXDxlbmRccypwcm9ncmFtIgpzeW4gbWF0Y2ggIGZvcnRyYW5Vbml0SGVhZGVyCSJcPGVuZFxzKnN1YnJvdXRpbmUiCnN5biBtYXRjaCAgZm9ydHJhblJlcGVhdAkiXDxlbmRccypkbyIKc3luIG1hdGNoICBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8ZW5kXHMqd2hlcmUiCnN5biBtYXRjaCAgZm9ydHJhbkNvbmRpdGlvbmFsCSJcPHNlbGVjdFxzKmNhc2UiCnN5biBtYXRjaCAgZm9ydHJhbkNvbmRpdGlvbmFsCSJcPGVuZFxzKnNlbGVjdCIKc3luIG1hdGNoICBmb3J0cmFuVHlwZQkiXDxlbmRccyp0eXBlIgpzeW4gbWF0Y2ggIGZvcnRyYW5UeXBlCSJcPGluXHMqb3V0IgoKc3luIGtleXdvcmQgZm9ydHJhblR5cGUJICAgICAgICBwcm9jZWR1cmUKc3luIG1hdGNoICBmb3J0cmFuVHlwZQkgICAgICAgICJcPG1vZHVsZVx6ZVxzXCtwcm9jZWR1cmVcPiIKc3luIGtleXdvcmQgZm9ydHJhbklPUgkJbmFtZWxpc3QKc3luIGtleXdvcmQgZm9ydHJhbkNvbmRpdGlvbmFsUgl3aGlsZQpzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljUglhY2hhciBpYWNoYXIgdHJhbnNmZXIKCnN5biBrZXl3b3JkIGZvcnRyYW5JbmNsdWRlCQlpbmNsdWRlCnN5biBrZXl3b3JkIGZvcnRyYW5TdG9yYWdlQ2xhc3NSCXNlcXVlbmNlCgpzeW4gbWF0Y2ggICBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8ZW5kXHMqaWYiCnN5biBtYXRjaCAgIGZvcnRyYW5JTwkJY29udGFpbnM9Zm9ydHJhbk9wZXJhdG9yICJcPGVcKG5kXHxyclwpXHMqPVxzKlxkXCsiCnN5biBtYXRjaCAgIGZvcnRyYW5Db25kaXRpb25hbAkiXDxlbHNlXHMqaWYiCgpzeW4ga2V5d29yZCBmb3J0cmFuVW5pdEhlYWRlck9iCWVudHJ5CnN5biBtYXRjaCBmb3J0cmFuVHlwZVIJCWRpc3BsYXkgImRvdWJsZVxzXCtwcmVjaXNpb24iCnN5biBtYXRjaCBmb3J0cmFuVHlwZVIJCWRpc3BsYXkgImRvdWJsZVxzXCtjb21wbGV4IgpzeW4gbWF0Y2ggZm9ydHJhblVuaXRIZWFkZXJSCWRpc3BsYXkgImJsb2NrXHNcK2RhdGEiCnN5biBrZXl3b3JkIGZvcnRyYW5TdG9yYWdlQ2xhc3NSCWNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhCnN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNSCWRibGUgZHByb2QKc3luIG1hdGNoICAgZm9ydHJhbk9wZXJhdG9yUgkiXC5ccypbZ2xdW2V0XVxzKlwuIgpzeW4gbWF0Y2ggICBmb3J0cmFuT3BlcmF0b3JSCSJcLlxzKlwoZXFcfG5lXClccypcLiIKCnN5biBrZXl3b3JkIGZvcnRyYW5SZXBlYXQJCWZvcmFsbApzeW4gbWF0Y2ggZm9ydHJhblJlcGVhdAkJIlw8ZW5kXHMqZm9yYWxsIgpzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljCW51bGwgY3B1X3RpbWUKc3luIG1hdGNoIGZvcnRyYW5UeXBlCQkJIlw8ZWxlbWVudGFsXD4iCnN5biBtYXRjaCBmb3J0cmFuVHlwZQkJCSJcPHB1cmVcPiIKaWYgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgc3luIG1hdGNoIGZvcnRyYW5Db25zdHJ1Y3ROYW1lICJcKFw8ZW5kXHMqZm9yYWxsXHNcK1wpXEA8PVxhXHcqXD4iCmVuZGlmCgppZiBiOmZvcnRyYW5fZGlhbGVjdCA9PSAiZjA4IgogICIgRjIwMDMKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljICAgICAgICBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kIGlzX2lvc3RhdF9lb3IgbW92ZV9hbGxvYyBuZXdfbGluZSBzZWxlY3RlZF9jaGFyX2tpbmQgc2FtZV90eXBlX2FzIGV4dGVuZHNfdHlwZV9vZgogICIgSVNPX0NfYmluZGluZwogIHN5biBrZXl3b3JkIGZvcnRyYW5Db25zdGFudCAgICAgICAgIGNfbnVsbF9jaGFyIGNfYWxlcnQgY19iYWNrc3BhY2UgY19mb3JtX2ZlZWQgY19uZXdfbGluZSBjX2NhcnJpYWdlX3JldHVybiBjX2hvcml6b250YWxfdGFiIGNfdmVydGljYWxfdGFiCiAgc3luIGtleXdvcmQgZm9ydHJhbkNvbnN0YW50ICAgICAgICAgY19pbnQgY19zaG9ydCBjX2xvbmcgY19sb25nX2xvbmcgY19zaWduZWRfY2hhciBjX3NpemVfdCBjX2ludDhfdCBjX2ludDE2X3QgY19pbnQzMl90IGNfaW50NjRfdCBjX2ludF9sZWFzdDhfdCBjX2ludF9sZWFzdDE2X3QgY19pbnRfbGVhc3QzMl90IGNfaW50X2xlYXN0NjRfdCBjX2ludF9mYXN0OF90IGNfaW50X2Zhc3QxNl90IGNfaW50X2Zhc3QzMl90IGNfaW50X2Zhc3Q2NF90IGNfaW50bWF4X3QgQ19pbnRwdHJfdCBjX2Zsb2F0IGNfZG91YmxlIGNfbG9uZ19kb3VibGUgY19mbG9hdF9jb21wbGV4IGNfZG91YmxlX2NvbXBsZXggY19sb25nX2RvdWJsZV9jb21wbGV4IGNfYm9vbCBjX2NoYXIgY19udWxsX3B0ciBjX251bGxfZnVucHRyCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYyAgICAgICAgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyIGNfZl9wcm9jcG9pbnRlcgogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlICAgICAgICAgICAgIGNfcHRyIGNfZnVucHRyCiAgIiBJU09fRm9ydHJhbl9lbnYKICBzeW4ga2V5d29yZCBmb3J0cmFuQ29uc3RhbnQgICAgICAgICBpc29fZm9ydHJhbl9lbnYgY2hhcmFjdGVyX3N0b3JhZ2Vfc2l6ZSBlcnJvcl91bml0IGZpbGVfc3RvcmFnZV9zaXplIGlucHV0X3VuaXQgaW9zdGF0X2VuZCBpb3N0YXRfZW9yIG51bWVyaWNfc3RvcmFnZV9zaXplIG91dHB1dF91bml0CiAgIiBJRUVFX2FyaXRobWV0aWMKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljICAgICAgICBpZWVlX2FyaXRobWV0aWMgaWVlZV9zdXBwb3J0X3VuZGVyZmxvd19jb250cm9sIGllZWVfZ2V0X3VuZGVyZmxvd19tb2RlIGllZWVfc2V0X3VuZGVyZmxvd19tb2RlCgogIHN5biBrZXl3b3JkIGZvcnRyYW5SZWFkV3JpdGUJZmx1c2ggd2FpdAogIHN5biBrZXl3b3JkIGZvcnRyYW5JTyAJICAgICAgZGVjaW1hbCByb3VuZCBpb21zZwogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlICAgICAgICAgICAgIGFzeW5jaHJvbm91cyBub3Bhc3Mgbm9uX292ZXJyaWRhYmxlIHBhc3MgcHJvdGVjdGVkIHZvbGF0aWxlIGFic3RyYWN0IGV4dGVuZHMgaW1wb3J0CiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGUgICAgICAgICAgICAgbm9uX2ludHJpbnNpYyB2YWx1ZSBiaW5kIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvcgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZSAgICAgICAgICAgICAgICJcPGNsYXNzXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5UeXBlICAgICAgICAgICAgICAgIlw8YXNzb2NpYXRlXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5UeXBlICAgICAgICAgICAgICAgIlw8ZW5kXHMqYXNzb2NpYXRlIgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZSAgICAgICAgICAgICAgICJcPGVudW1ccyosXHMqYmluZFxzKihccypjXHMqKSIKICBzeW4gbWF0Y2ggZm9ydHJhblR5cGUgICAgICAgICAgICAgICAiXDxlbmRccyplbnVtIgogIHN5biBtYXRjaCBmb3J0cmFuQ29uZGl0aW9uYWwJIlw8c2VsZWN0XHMqdHlwZSIKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbmRpdGlvbmFsICAgICAgICAiXDx0eXBlXHMqaXNcPiIKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbmRpdGlvbmFsICAgICAgICAiXDxjbGFzc1xzKmlzXD4iCiAgc3luIG1hdGNoIGZvcnRyYW5Vbml0SGVhZGVyICAgICAgICAgIlw8YWJzdHJhY3RccyppbnRlcmZhY2VcPiIKICBzeW4gbWF0Y2ggZm9ydHJhbk9wZXJhdG9yICAgICAgICAgICAiXChbXHxdXCkiCgogICIgRjIwMDgKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljICAgICAgICBhY29zaCBhc2luaCBhdGFuaCBiZXNzZWxfajAgYmVzc2VsX2oxIGJlc3NlbF9qbiBiZXNzZWxfeTAgYmVzc2VsX3kxIGJlc3NlbF95biBlcmYgZXJmYyBlcmZjX3NjYWxlZCBnYW1tYSBsb2dfZ2FtbWEgaHlwb3Qgbm9ybTIKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljICAgICAgICBhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpYyAgICAgICAgYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyIG51bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZQogIHN5biBrZXl3b3JkIGZvcnRyYW5JTyAgICAgICAgICAgICAgIG5ld3VuaXQKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZSAgICAgICAgICAgICBjb250aWd1b3VzCgoiIENVREEgZm9ydHJhbgogIHN5biBtYXRjaCBmb3J0cmFuVHlwZUNVREEgICAgICAgICAgICJcPGF0dHJpYnV0ZXNcPiIKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBob3N0IGdsb2JhbCBkZXZpY2UgdmFsdWUKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBzaGFyZWQgY29uc3RhbnQgcGlubmVkIHRleHR1cmUKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBkaW0xIGRpbTIgZGltMyBkaW00CiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYWRldmljZXByb3AgY3VkYV9jb3VudF9raW5kIGN1ZGFfc3RyZWFtX2tpbmQKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhRXZlbnQgY3VkYUZ1bmNBdHRyaWJ1dGVzIGN1ZGFBcnJheVB0cgogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFTeW1ib2wgY3VkYUNoYW5uZWxGb3JtYXREZXNjIGN1ZGFQaXRjaGVkUHRyCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYUV4dGVudCBjdWRhTWVtY3B5M0RQYXJtcwogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFGdW5jQ2FjaGVQcmVmZXJOb25lIGN1ZGFGdW5jQ2FjaGVQcmVmZXJTaGFyZWQKICBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUNVREEgICAgICAgICBjdWRhRnVuY0NhY2hlUHJlZmVyTDEgY3VkYUxpbWl0U3RhY2tTaXplCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYUxpbWl0UHJpbnRmU2l6ZSBjdWRhTGltaXRNYWxsb2NIZWFwU2l6ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFTaGFyZWRNZW1CYW5rU2l6ZURlZmF1bHQgY3VkYVNoYXJlZE1lbUJhbmtTaXplRm91ckJ5dGUgY3VkYVNoYXJlZE1lbUJhbmtTaXplRWlnaHRCeXRlCiAgc3luIGtleXdvcmQgZm9ydHJhblR5cGVDVURBICAgICAgICAgY3VkYUV2ZW50RGVmYXVsdCBjdWRhRXZlbnRCbG9ja2luZ1N5bmMgY3VkYUV2ZW50RGlzYWJsZVRpbWluZwogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFNZW1jcHlIb3N0VG9EZXZpY2UgY3VkYU1lbWNweURldmljZVRvSG9zdAogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFNZW1jcHlEZXZpY2VUb0RldmljZQogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGN1ZGFFcnJvck5vdFJlYWR5IGN1ZGFTdWNjZXNzIGN1ZGFFcnJvckludmFsaWRWYWx1ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5UeXBlQ1VEQSAgICAgICAgIGNfZGV2cHRyCgogIHN5biBtYXRjaCBmb3J0cmFuU3RyaW5nQ1VEQSAgICAgICAgICJibG9ja2lkeCVbeHl6XSIKICBzeW4gbWF0Y2ggZm9ydHJhblN0cmluZ0NVREEgICAgICAgICAiYmxvY2tkaW0lW3h5el0iCiAgc3luIG1hdGNoIGZvcnRyYW5TdHJpbmdDVURBICAgICAgICAgImdyaWRkaW0lW3h5el0iCiAgc3luIG1hdGNoIGZvcnRyYW5TdHJpbmdDVURBICAgICAgICAgInRocmVhZGlkeCVbeHl6XSIKCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY0NVREEgICAgd2FycHNpemUgc3luY3RocmVhZHMgc3luY3RocmVhZHNfYW5kIHN5bmN0aHJlYWRzX2NvdW50IHN5bmN0aHJlYWRzX29yIHRocmVhZGZlbmNlIHRocmVhZGZlbmNlX2Jsb2NrIHRocmVhZGZlbmNlX3N5c3RlbSBncHVfdGltZSBhbGx0aHJlYWRzIGFueXRocmVhZCBiYWxsb3QKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBhdG9taWNhZGQgYXRvbWljc3ViIGF0b21pY21heCBhdG9taWNtaW4gYXRvbWljYW5kIGF0b21pY29yIGF0b21pY3hvciBhdG9taWNleGNoIGF0b21pY2luYyBhdG9taWNkZWMgYXRvbWljY2FzIHNpemVvZiBfX3NoZmwgX19zaGZsX3VwIF9fc2hmbF9kb3duIF9fc2hmbF94b3IKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBjdWRhQ2hvb3NlRGV2aWNlIGN1ZGFEZXZpY2VHZXRDYWNoZUNvbmZpZyBjdWRhRGV2aWNlR2V0TGltaXQgY3VkYURldmljZUdldFNoYXJlZE1lbUNvbmZpZyBjdWRhRGV2aWNlUmVzZXQgY3VkYURldmljZVNldENhY2hlQ29uZmlnIGN1ZGFEZXZpY2VTZXRMaW1pdCBjdWRhRGV2aWNlU2V0U2hhcmVkTWVtQ29uZmlnIGN1ZGFEZXZpY2VTeW5jaHJvbml6ZSBjdWRhR2V0RGV2aWNlIGN1ZGFHZXREZXZpY2VDb3VudCBjdWRhR2V0RGV2aWNlUHJvcGVydGllcyBjdWRhU2V0RGV2aWNlIGN1ZGFTZXREZXZpY2VGbGFncyBjdWRhU2V0VmFsaWREZXZpY2VzCiAgc3luIGtleXdvcmQgZm9ydHJhbkludHJpbnNpY0NVREEgICAgY3VkYVRocmVhZEV4aXQgY3VkYVRocmVhZFN5bmNocm9uaXplIGN1ZGFHZXRMYXN0RXJyb3IgY3VkYUdldEVycm9yU3RyaW5nIGN1ZGFQZWVrQXRMYXN0RXJyb3IgY3VkYVN0cmVhbUNyZWF0ZSBjdWRhU3RyZWFtRGVzdHJveSBjdWRhU3RyZWFtUXVlcnkgY3VkYVN0cmVhbVN5bmNocm9uaXplIGN1ZGFTdHJlYW1XYWl0RXZlbnQgY3VkYUV2ZW50Q3JlYXRlIGN1ZGFFdmVudENyZWF0ZVdpdGhGbGFncyBjdWRhRXZlbnREZXN0cm95IGN1ZGFFdmVudEVsYXBzZWRUaW1lIGN1ZGFFdmVudFF1ZXJ5IGN1ZGFFdmVudFJlY29yZCBjdWRhRXZlbnRTeW5jaHJvbml6ZQogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNDVURBICAgIGN1ZGFGdW5jR2V0QXR0cmlidXRlcyBjdWRhRnVuY1NldENhY2hlQ29uZmlnIGN1ZGFGdW5jU2V0U2hhcmVkTWVtQ29uZmlnIGN1ZGFTZXREb3VibGVGb3JEZXZpY2UgY3VkYVNldERvdWJsZUZvckhvc3QgY3VkYUZyZWUgY3VkYUZyZWVBcnJheSBjdWRhRnJlZUhvc3QgY3VkYUdldFN5bWJvbEFkZHJlc3MgY3VkYUdldFN5bWJvbFNpemUKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBjdWRhSG9zdEFsbG9jIGN1ZGFIb3N0R2V0RGV2aWNlUG9pbnRlciBjdWRhSG9zdEdldEZsYWdzIGN1ZGFIb3N0UmVnaXN0ZXIgY3VkYUhvc3RVbnJlZ2lzdGVyIGN1ZGFNYWxsb2MgY3VkYU1hbGxvY0FycmF5IGN1ZGFNYWxsb2NIb3N0IGN1ZGFNYWxsb2NQaXRjaCBjdWRhTWFsbG9jM0QgY3VkYU1hbGxvYzNEQXJyYXkKICBzeW4ga2V5d29yZCBmb3J0cmFuSW50cmluc2ljQ1VEQSAgICBjdWRhTWVtY3B5IGN1ZGFNZW1jcHlBcnJheXRvQXJyYXkgY3VkYU1lbWNweUFzeW5jIGN1ZGFNZW1jcHlGcm9tQXJyYXkgY3VkYU1lbWNweUZyb21TeW1ib2wgY3VkYU1lbWNweUZyb21TeW1ib2xBc3luYyBjdWRhTWVtY3B5UGVlciBjdWRhTWVtY3B5UGVlckFzeW5jIGN1ZGFNZW1jcHlUb0FycmF5IGN1ZGFNZW1jcHlUb1N5bWJvbCBjdWRhTWVtY3B5VG9TeW1ib2xBc3luYyBjdWRhTWVtY3B5MkQgY3VkYU1lbWNweTJEQXJyYXlUb0FycmF5IGN1ZGFNZW1jcHkyREFzeW5jIGN1ZGFNZW1jcHkyREZyb21BcnJheSBjdWRhTWVtY3B5MkRUb0FycmF5IGN1ZGFNZW1jcHkzRCBjdWRhTWVtY3B5M0RBc3luYwogIHN5biBrZXl3b3JkIGZvcnRyYW5JbnRyaW5zaWNDVURBICAgIGN1ZGFNZW1HZXRJbmZvIGN1ZGFNZW1zZXQgY3VkYU1lbXNldDJEIGN1ZGFNZW1zZXQzRCBjdWRhRGV2aWNlQ2FuQWNjZXNzUGVlciBjdWRhRGV2aWNlRGlzYWJsZVBlZXJBY2Nlc3MgY3VkYURldmljZUVuYWJsZVBlZXJBY2Nlc3MgY3VkYVBvaW50ZXJHZXRBdHRyaWJ1dGVzIGN1ZGFEcml2ZXJHZXRWZXJzaW9uIGN1ZGFSdW50aW1lR2V0VmVyc2lvbgoKICBzeW4gcmVnaW9uIG5vbmUgbWF0Y2hncm91cD1mb3J0cmFuVHlwZSBzdGFydD0iPDw8IiBlbmQ9Ij4+PiIgY29udGFpbnM9QUxMQlVULG5vbmUKZW5kaWYKCnN5biBjbHVzdGVyIGZvcnRyYW5Db21tZW50R3JvdXAgY29udGFpbnM9Zm9ydHJhblRvZG8KCmlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEpCiAgaWYgIWV4aXN0cygiZm9ydHJhbl9oYXZlX3RhYnMiKQogICAgIkZsYWcgaXRlbXMgYmV5b25kIGNvbHVtbiA3MgogICAgc3luIG1hdGNoIGZvcnRyYW5TZXJpYWxOdW1iZXIJZXhjbHVkZW5sICJeLlx7NzMsfSQibGM9NzIKICAgICJGbGFnIGxlZnQgbWFyZ2luIGVycm9ycwogICAgc3luIG1hdGNoIGZvcnRyYW5MYWJlbEVycm9yCSJeLlx7LSw0fVteMC05IF0iIGNvbnRhaW5zPWZvcnRyYW5UYWIKICAgIHN5biBtYXRjaCBmb3J0cmFuTGFiZWxFcnJvcgkiXi5cezR9XGRcUyIKICBlbmRpZgogIHN5biBtYXRjaCBmb3J0cmFuQ29tbWVudAkJZXhjbHVkZW5sICJeWyFjKl0uKiQiIGNvbnRhaW5zPUBmb3J0cmFuQ29tbWVudEdyb3VwLEBzcGVsbAogIHN5biBtYXRjaCBmb3J0cmFuTGVmdE1hcmdpbgkJdHJhbnNwYXJlbnQgIl4gXHs1fSIKICBzeW4gbWF0Y2ggZm9ydHJhbkNvbnRpbnVlTWFyawkJZGlzcGxheSAiXi5cezV9XFMibGM9NQplbHNlCiAgc3luIG1hdGNoIGZvcnRyYW5Db250aW51ZU1hcmsJCWRpc3BsYXkgIiYiCmVuZGlmCgpzeW4gbWF0Y2ggZm9ydHJhbkNvbW1lbnQJZXhjbHVkZW5sICIhLiokIiBjb250YWlucz1AZm9ydHJhbkNvbW1lbnRHcm91cCxAc3BlbGwKCiJjcHAgaXMgb2Z0ZW4gdXNlZCB3aXRoIEZvcnRyYW4Kc3luIG1hdGNoCWNQcmVQcm9jCQkiXlxzKiNccypcKGRlZmluZVx8aWZkZWZcKVw+LioiCnN5biBtYXRjaAljUHJlUHJvYwkJIl5ccyojXHMqXChlbGlmXHxpZlwpXD4uKiIKc3luIG1hdGNoCWNQcmVQcm9jCQkiXlxzKiNccypcKGlmbmRlZlx8dW5kZWZcKVw+LioiCnN5biBtYXRjaAljUHJlQ29uZGl0CQkiXlxzKiNccypcKGVsc2VcfGVuZGlmXClcPi4qIgpzeW4gcmVnaW9uCWNJbmNsdWRlZAljb250YWluZWQgc3RhcnQ9KyJbXihdKyBza2lwPStcXFxcXHxcXCIrIGVuZD0rIisgY29udGFpbnM9Zm9ydHJhbkxlZnRNYXJnaW4sZm9ydHJhbkNvbnRpbnVlTWFyayxmb3J0cmFuU2VyaWFsTnVtYmVyCnN5biBtYXRjaAljSW5jbHVkZWQJCWNvbnRhaW5lZCAiPFtePl0qPiIKc3luIG1hdGNoCWNJbmNsdWRlCQkiXlxzKiNccyppbmNsdWRlXD5ccypbIjxdIiBjb250YWlucz1jSW5jbHVkZWQKCiJTeW5jaHJvbmlzaW5nIGxpbWl0cyBhc3N1bWUgdGhhdCBjb21tZW50IGFuZCBjb250aW51YXRpb24gbGluZXMgYXJlIG5vdCBtaXhlZAppZiBleGlzdHMoImZvcnRyYW5fZm9sZCIpIHx8IGV4aXN0cygiZm9ydHJhbl9tb3JlX3ByZWNpc2UiKQogIHN5biBzeW5jIGZyb21zdGFydAplbHNlaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMCkKICBzeW4gc3luYyBsaW5lY29udCAiJiIgbWlubGluZXM9MzAKZWxzZQogIHN5biBzeW5jIG1pbmxpbmVzPTMwCmVuZGlmCgppZiBleGlzdHMoImZvcnRyYW5fZm9sZCIpCgogIGlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEpCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5Qcm9ncmFtIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKnByb2dyYW1cc1wrXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKHByb2dyYW1cKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Nb2R1bGUKICAgIHN5biByZWdpb24gZm9ydHJhbk1vZHVsZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Il5ccyptb2R1bGVcc1wrXChwcm9jZWR1cmVcKVxAIVx6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChtb2R1bGVcKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5GdW5jdGlvbiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypcKFwoXChyZWFsIFx8aW50ZWdlciBcfGxvZ2ljYWwgXHxjb21wbGV4IFx8ZG91YmxlIFxzKnByZWNpc2lvbiBcKVxzKlwoKFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcfHR5cGVcc1wrKFxzKlx3XCtccyopIFx8Y2hhcmFjdGVyIFwoKFwoXHMqbGVuXHMqPVwpXD1ccypcZFwrXHMqKVx8KFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcPVxzKmZ1bmN0aW9uXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxmdW5jdGlvblwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuU3Vicm91dGluZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypzdWJyb3V0aW5lXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxzdWJyb3V0aW5lXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5CbG9ja0RhdGEgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJcPGJsb2NrXHMqZGF0YVwoXHNcK1x6KFxhXHcqXClcKVw9IiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8YmxvY2tccypkYXRhXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICAgIHN5biByZWdpb24gZm9ydHJhbkludGVyZmFjZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqaW50ZXJmYWNlXD4iIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqaW50ZXJmYWNlXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawogICAgc3luIHJlZ2lvbiBmb3J0cmFuVHlwZURlZiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqdHlwZVxzKlwoLFxzKlwocHVibGljXHxwcml2YXRlXClcKVw9XHMqOjoiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqdHlwZVw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKICBlbHNlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5Qcm9ncmFtIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKnByb2dyYW1cc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChwcm9ncmFtXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuTW9kdWxlCiAgICBzeW4gcmVnaW9uIGZvcnRyYW5Nb2R1bGUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJeXHMqbW9kdWxlXHNcK1wocHJvY2VkdXJlXClcQCFceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKG1vZHVsZVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0KICAgIHN5biByZWdpb24gZm9ydHJhbkZ1bmN0aW9uIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccypcKGVsZW1lbnRhbCBcfHB1cmUgXHxyZWN1cnNpdmUgXClcPVxzKlwoXChcKHJlYWwgXHxpbnRlZ2VyIFx8bG9naWNhbCBcfGNvbXBsZXggXHxkb3VibGUgXHMqcHJlY2lzaW9uIFwpXHMqXCgoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVx8dHlwZVxzXCsoXHMqXHdcK1xzKikgXHxjaGFyYWN0ZXIgXCgoXChccypsZW5ccyo9XClcPVxzKlxkXCtccyopXHwoXChccypraW5kXHMqPVwpXD1ccypcd1wrXHMqKVwpXD1cKVw9XHMqZnVuY3Rpb25cc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxmdW5jdGlvblwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuU3Vicm91dGluZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypzdWJyb3V0aW5lXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8c3Vicm91dGluZVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQogICAgc3luIHJlZ2lvbiBmb3J0cmFuQmxvY2tEYXRhIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXDxibG9ja1xzKmRhdGFcKFxzXCtceihcYVx3KlwpXClcPSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxibG9ja1xzKmRhdGFcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawogICAgc3luIHJlZ2lvbiBmb3J0cmFuSW50ZXJmYWNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccyppbnRlcmZhY2VcPiIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqaW50ZXJmYWNlXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawogICAgc3luIHJlZ2lvbiBmb3J0cmFuVHlwZURlZiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqdHlwZVxzKlwoLFxzKlwocHVibGljXHxwcml2YXRlXClcKVw9XHMqOjoiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKnR5cGVcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgZW5kaWYKCiAgaWYgZXhpc3RzKCJmb3J0cmFuX2ZvbGRfY29uZGl0aW9uYWxzIikKICAgIGlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEpCiAgICAgIHN5biByZWdpb24gZm9ydHJhbjc3TG9vcCB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8ZG9cc1wrXHooXGRcK1wpIiBlbmQ9Il5ccypcejFcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICAgIHN5biByZWdpb24gZm9ydHJhbjkwTG9vcCB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJcKFw8ZW5kXHNcK1wpXEA8IVw8ZG9cKFxzXCtcYVx8XHMqJFwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKmRvXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuVW5pdEhlYWRlcixmb3J0cmFuU3RydWN0dXJlLGZvcnRyYW5TdG9yYWdlQ2xhc3MsZm9ydHJhblR5cGUsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbkJsb2NrRGF0YQogICAgICBzeW4gcmVnaW9uIGZvcnRyYW5JZkJsb2NrIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9IlwoXDxlXChuZFx8bHNlXClcc1wrXClcQDwhXDxpZlxzKiguXCspXHMqdGhlblw+IiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBlbmQ9Ilw8ZW5kXHMqaWZcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICAgIHN5biByZWdpb24gZm9ydHJhbkNhc2UgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXDxzZWxlY3RccypjYXNlXD4iIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGVuZD0iXDxlbmRccypzZWxlY3RcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICBlbHNlCiAgICAgIHN5biByZWdpb24gZm9ydHJhbjc3TG9vcCB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8ZG9cc1wrXHooXGRcK1wpIiBlbmQ9Il5ccypcejFcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICAgIHN5biByZWdpb24gZm9ydHJhbjkwTG9vcCB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJcKFw8ZW5kXHNcK1wpXEA8IVw8ZG9cKFxzXCtcYVx8XHMqJFwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypkb1w+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuSWZCbG9jayB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJcKFw8ZVwobmRcfGxzZVwpXHNcK1wpXEA8IVw8aWZccyooXCguXHwmXHMqXG5cKVwrKVwoXHNcfCZccypcblwpKnRoZW5cPiIgc2tpcD0iXlxzKlshI10uKiQiIGVuZD0iXDxlbmRccyppZlw+IiBjb250YWlucz1BTExCVVQsZm9ydHJhblVuaXRIZWFkZXIsZm9ydHJhblN0cnVjdHVyZSxmb3J0cmFuU3RvcmFnZUNsYXNzLGZvcnRyYW5UeXBlLGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW5CbG9ja0RhdGEKICAgICAgc3luIHJlZ2lvbiBmb3J0cmFuQ2FzZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJcPHNlbGVjdFxzKmNhc2VcPiIgc2tpcD0iXlxzKlshI10uKiQiIGVuZD0iXDxlbmRccypzZWxlY3RcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Vbml0SGVhZGVyLGZvcnRyYW5TdHJ1Y3R1cmUsZm9ydHJhblN0b3JhZ2VDbGFzcyxmb3J0cmFuVHlwZSxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuQmxvY2tEYXRhCiAgICBlbmRpZgogIGVuZGlmCgogIGlmIGV4aXN0cygiZm9ydHJhbl9mb2xkX211bHRpbGluZWNvbW1lbnRzIikKICAgIGlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEpCiAgICAgIHN5biBtYXRjaCBmb3J0cmFuTXVsdGlMaW5lQ29tbWVudHMgdHJhbnNwYXJlbnQgZm9sZCAiXCheWyFjKl0uKlwoXG5cfFwlJFwpXClcezQsfSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5NdWx0aUNvbW1lbnRMaW5lcwogICAgZWxzZQogICAgICBzeW4gbWF0Y2ggZm9ydHJhbk11bHRpTGluZUNvbW1lbnRzIHRyYW5zcGFyZW50IGZvbGQgIlwoXlxzKiEuKlwoXG5cfFwlJFwpXClcezQsfSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5NdWx0aUNvbW1lbnRMaW5lcwogICAgZW5kaWYKICBlbmRpZgplbmRpZgoKIiBEZWZpbmUgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0aW5nLgoiIFRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZyBkaWZmZXJzIGZvciBlYWNoIGRpYWxlY3QuCiIgVHJhbnNwYXJlbnQgZ3JvdXBzOgoiIGZvcnRyYW5QYXJlbiwgZm9ydHJhbkxlZnRNYXJnaW4KIiBmb3J0cmFuUHJvZ3JhbSwgZm9ydHJhbk1vZHVsZSwgZm9ydHJhblN1YnJvdXRpbmUsIGZvcnRyYW5GdW5jdGlvbiwKIiBmb3J0cmFuQmxvY2tEYXRhCiIgZm9ydHJhbjc3TG9vcCwgZm9ydHJhbjkwTG9vcCwgZm9ydHJhbklmQmxvY2ssIGZvcnRyYW5DYXNlCiIgZm9ydHJhbk11bHRpQ29tbWVudExpbmVzCmhpIGRlZiBsaW5rIGZvcnRyYW5LZXl3b3JkIAlLZXl3b3JkCmhpIGRlZiBsaW5rIGZvcnRyYW5Db25zdHJ1Y3ROYW1lCUlkZW50aWZpZXIKaGkgZGVmIGxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsCUNvbmRpdGlvbmFsCmhpIGRlZiBsaW5rIGZvcnRyYW5SZXBlYXQJUmVwZWF0CmhpIGRlZiBsaW5rIGZvcnRyYW5Ub2RvCQlUb2RvCmhpIGRlZiBsaW5rIGZvcnRyYW5Db250aW51ZU1hcmsJU3BlY2lhbApoaSBkZWYgbGluayBmb3J0cmFuU3RyaW5nCVN0cmluZwpoaSBkZWYgbGluayBmb3J0cmFuTnVtYmVyCU51bWJlcgpoaSBkZWYgbGluayBmb3J0cmFuT3BlcmF0b3IJT3BlcmF0b3IKaGkgZGVmIGxpbmsgZm9ydHJhbkJvb2xlYW4JQm9vbGVhbgpoaSBkZWYgbGluayBmb3J0cmFuTGFiZWxFcnJvcglFcnJvcgpoaSBkZWYgbGluayBmb3J0cmFuT2Jzb2xldGUJVG9kbwpoaSBkZWYgbGluayBmb3J0cmFuVHlwZQkJVHlwZQpoaSBkZWYgbGluayBmb3J0cmFuU3RydWN0dXJlCVR5cGUKaGkgZGVmIGxpbmsgZm9ydHJhblN0b3JhZ2VDbGFzcwlTdG9yYWdlQ2xhc3MKaGkgZGVmIGxpbmsgZm9ydHJhbkNhbGwJCUZ1bmN0aW9uCmhpIGRlZiBsaW5rIGZvcnRyYW5Vbml0SGVhZGVyCWZvcnRyYW5QcmVDb25kaXQKaGkgZGVmIGxpbmsgZm9ydHJhblJlYWRXcml0ZQlLZXl3b3JkCmhpIGRlZiBsaW5rIGZvcnRyYW5JTwkJS2V5d29yZApoaSBkZWYgbGluayBmb3J0cmFuSW50cmluc2ljCUZ1bmN0aW9uCmhpIGRlZiBsaW5rIGZvcnRyYW5Db25zdGFudAlDb25zdGFudAoKIiBUbyBzdG9wIGRlbGV0ZWQgJiBvYnNvbGVzY2VudCBmZWF0dXJlcyBiZWluZyBoaWdobGlnaHRlZCBhcyBUb2RvIGl0ZW1zLAoiIGNvbW1lbnQgb3V0IHRoZSBuZXh0IDUgbGluZXMgYW5kIHVuY29tbWVudCB0aGUgNSBsaW5lcyBhZnRlciB0aGF0CmhpIGRlZiBsaW5rIGZvcnRyYW5Vbml0SGVhZGVyT2IgICAgZm9ydHJhbk9ic29sZXRlCmhpIGRlZiBsaW5rIGZvcnRyYW5LZXl3b3JkT2IgICAgICAgZm9ydHJhbk9ic29sZXRlCmhpIGRlZiBsaW5rIGZvcnRyYW5Db25kaXRpb25hbE9iICAgZm9ydHJhbk9ic29sZXRlCmhpIGRlZiBsaW5rIGZvcnRyYW5UeXBlT2IgICAgICAgICAgZm9ydHJhbk9ic29sZXRlCmhpIGRlZiBsaW5rIGZvcnRyYW5LZXl3b3JkRGVsICAgICAgZm9ydHJhbk9ic29sZXRlCiJoaSBkZWYgbGluayBmb3J0cmFuVW5pdEhlYWRlck9iICAgIGZvcnRyYW5Vbml0SGVhZGVyCiJoaSBkZWYgbGluayBmb3J0cmFuS2V5d29yZE9iICAgICAgIGZvcnRyYW5LZXl3b3JkCiJoaSBkZWYgbGluayBmb3J0cmFuQ29uZGl0aW9uYWxPYiAgIGZvcnRyYW5Db25kaXRpb25hbAoiaGkgZGVmIGxpbmsgZm9ydHJhblR5cGVPYiAgICAgICAgICBmb3J0cmFuVHlwZQoiaGkgZGVmIGxpbmsgZm9ydHJhbktleXdvcmREZWwgICAgICBmb3J0cmFuS2V5d29yZAoKaWYgYjpmb3J0cmFuX2RpYWxlY3QgPT0gIkYiCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5JbnRyaW5zaWNSCWZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuVW5pdEhlYWRlclIJZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5UeXBlUgkJZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5TdG9yYWdlQ2xhc3NSCWZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuT3BlcmF0b3JSIAlmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkluY2x1ZGUgICAJZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5MYWJlbE51bWJlcglmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhblRhcmdldAkgICAgICAgIGZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuRmxvYXRJbGwJICAgICAgICBmb3J0cmFuT2Jzb2xldGUKICBoaSEgZGVmIGxpbmsgZm9ydHJhbklPUgkJZm9ydHJhbk9ic29sZXRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5LZXl3b3JkUgkgICAgICAgIGZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuU3RyaW5nUgkgICAgICAgIGZvcnRyYW5PYnNvbGV0ZQogIGhpISBkZWYgbGluayBmb3J0cmFuQ29uZGl0aW9uYWxSCWZvcnRyYW5PYnNvbGV0ZQplbHNlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5JbnRyaW5zaWNSCWZvcnRyYW5JbnRyaW5zaWMKICBoaSEgZGVmIGxpbmsgZm9ydHJhblVuaXRIZWFkZXJSCWZvcnRyYW5QcmVDb25kaXQKICBoaSEgZGVmIGxpbmsgZm9ydHJhblR5cGVSCQlmb3J0cmFuVHlwZQogIGhpISBkZWYgbGluayBmb3J0cmFuU3RvcmFnZUNsYXNzUglmb3J0cmFuU3RvcmFnZUNsYXNzCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5PcGVyYXRvclIJICAgICAgICBmb3J0cmFuT3BlcmF0b3IKICBoaSEgZGVmIGxpbmsgZm9ydHJhbkluY2x1ZGUJICAgICAgICBJbmNsdWRlCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5MYWJlbE51bWJlcglTcGVjaWFsCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5UYXJnZXQJICAgICAgICBTcGVjaWFsCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5GbG9hdElsbAkgICAgICAgIGZvcnRyYW5GbG9hdAogIGhpISBkZWYgbGluayBmb3J0cmFuSU9SCQlmb3J0cmFuSU8KICBoaSEgZGVmIGxpbmsgZm9ydHJhbktleXdvcmRSCSAgICAgICAgZm9ydHJhbktleXdvcmQKICBoaSEgZGVmIGxpbmsgZm9ydHJhblN0cmluZ1IJICAgICAgICBmb3J0cmFuU3RyaW5nCiAgaGkhIGRlZiBsaW5rIGZvcnRyYW5Db25kaXRpb25hbFIJZm9ydHJhbkNvbmRpdGlvbmFsCmVuZGlmCgoiIENVREEKaGkgZGVmIGxpbmsgZm9ydHJhbkludHJpbnNpY0NVREEgICAgICAgIGZvcnRyYW5JbnRyaW5zaWMKaGkgZGVmIGxpbmsgZm9ydHJhblR5cGVDVURBICAgICAgICAgICAgIGZvcnRyYW5UeXBlCmhpIGRlZiBsaW5rIGZvcnRyYW5TdHJpbmdDVURBICAgICAgICAgICBmb3J0cmFuU3RyaW5nCgpoaSBkZWYgbGluayBmb3J0cmFuRm9ybWF0U3BlYwlJZGVudGlmaWVyCmhpIGRlZiBsaW5rIGZvcnRyYW5GbG9hdAlGbG9hdApoaSBkZWYgbGluayBmb3J0cmFuUHJlQ29uZGl0CVByZUNvbmRpdApoaSBkZWYgbGluayBjSW5jbHVkZWQJCWZvcnRyYW5TdHJpbmcKaGkgZGVmIGxpbmsgY0luY2x1ZGUJCUluY2x1ZGUKaGkgZGVmIGxpbmsgY1ByZVByb2MJCVByZVByb2MKaGkgZGVmIGxpbmsgY1ByZUNvbmRpdAkJUHJlQ29uZGl0CmhpIGRlZiBsaW5rIGZvcnRyYW5QYXJlbkVycm9yCUVycm9yCmhpIGRlZiBsaW5rIGZvcnRyYW5Db21tZW50CUNvbW1lbnQKaGkgZGVmIGxpbmsgZm9ydHJhblNlcmlhbE51bWJlcglUb2RvCmhpIGRlZiBsaW5rIGZvcnRyYW5UYWIJCUVycm9yCgoiIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIGlmIHlvdSB1c2UgZXh0cmEgaW50cmluc2ljcyBwcm92aWRlZCBieSB2ZW5kb3JzCiJoaSBkZWYgbGluayBmb3J0cmFuRXh0cmFJbnRyaW5zaWMJRnVuY3Rpb24KCmxldCBiOmN1cnJlbnRfc3ludGF4ID0gImZvcnRyYW4iCgpsZXQgJmNwbyA9IHM6Y3BvX3NhdmUKdW5sZXQgczpjcG9fc2F2ZQoiIHZpbTogdHM9OCB0dz0xMzIK