Li4gU2VxdWVuY2VzL1ZpZXdzLy9lbXB0eV9zZXF1ZW5jZQoKZW1wdHlfc2VxdWVuY2UKPT09PT09PT09PT09PT0KClN5bm9wc2lzCi0tLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHN0cnVjdCBlbXB0eV9zZXF1ZW5jZQogICAgewogICAgICAgIC8vIHx1bnNwZWNpZmllZHwKICAgICAgICAvLyB8Li4ufAogICAgfTsKCgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKUmVwcmVzZW50cyBhIHNlcXVlbmNlIGNvbnRhaW5pbmcgbm8gZWxlbWVudHMuCgoKSGVhZGVyCi0tLS0tLQoKLi4gcGFyc2VkLWxpdGVyYWw6OgogICAgCiAgICAjaW5jbHVkZSA8Ym9vc3QvbXBsL2VtcHR5X3NlcXVlbmNlLmhwcD4KCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKfFNlbWFudGljcyBkaXNjbGFpbWVyLi4ufCB8UmFuZG9tIEFjY2VzcyBTZXF1ZW5jZXwuCgpJbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBgYHNgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYGVtcHR5X3NlcXVlbmNlYGAuCgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICB8IFNlbWFudGljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IGBgZW1wdHlfc2VxdWVuY2VgYCAgICAgICAgICAgIHwgQW4gZW1wdHkgfFJhbmRvbSBBY2Nlc3MgU2VxdWVuY2V8LiAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBzaXplPHM+Ojp0eXBlYGAgICAgICAgICAgICAgfCBgYHNpemU8cz46OnZhbHVlID09IDBgYDsgc2VlIHxSYW5kb20gQWNjZXNzIFNlcXVlbmNlfC4gICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpFeGFtcGxlCi0tLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKCiAgICB0eXBlZGVmIGJlZ2luPGVtcHR5X3NlcXVlbmNlPjo6dHlwZSBmaXJzdDsKICAgIHR5cGVkZWYgZW5kPGVtcHR5X3NlcXVlbmNlPjo6dHlwZSBsYXN0OwoKICAgIEJPT1NUX01QTF9BU1NFUlQoKCBpc19zYW1lPGZpcnN0LGxhc3Q+ICkpOwogICAgQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTiggc2l6ZTxlbXB0eV9zZXF1ZW5jZT46OnZhbHVlLCA9PSwgMCApOwoKICAgIHR5cGVkZWYgdHJhbnNmb3JtX3ZpZXc8CiAgICAgICAgICBlbXB0eV9zZXF1ZW5jZQogICAgICAgICwgYWRkX3BvaW50ZXI8Xz4KICAgICAgICA+IGVtcHR5X3ZpZXc7CgogICAgQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTiggc2l6ZTxlbXB0eV9zZXF1ZW5jZT46OnZhbHVlLCA9PSwgMCApOwoKClNlZSBhbHNvCi0tLS0tLS0tCgp8U2VxdWVuY2VzfCwgfFZpZXdzfCwgfHZlY3RvcnwsIHxsaXN0fCwgfHNpbmdsZV92aWV3fAoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkK