LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6CiAqCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogT3JpZ2luYWxseSBkZXZlbG9wZWQgYW5kIGNvbnRyaWJ1dGVkIGJ5IEl0dGlhbSBTeXN0ZW1zIFB2dC4gTHRkLCBCYW5nYWxvcmUKKi8KLyoqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBAZmlsZQoqICBpaDI2NF9jb21tb25fdGFibGVzLmMKKgoqIEBicmllZgoqICBDb250YWlucyBjb21tb24gZ2xvYmFsIHRhYmxlcwoqCiogQGF1dGhvcgoqICBIYXJpc2ggTQoqCiogQHBhciBMaXN0IG9mIEZ1bmN0aW9uczoKKgoqIEByZW1hcmtzCiogIE5vbmUKKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEZpbGUgSW5jbHVkZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogVXNlciBpbmNsdWRlIGZpbGVzICovCiNpbmNsdWRlICJpaDI2NF90eXBlZGVmcy5oIgojaW5jbHVkZSAiaWgyNjRfZGVmcy5oIgojaW5jbHVkZSAiaWgyNjRfbWFjcm9zLmgiCiNpbmNsdWRlICJpaDI2NF9zdHJ1Y3RzLmgiCiNpbmNsdWRlICJpaDI2NF9jb21tb25fdGFibGVzLmgiCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBFeHRlcm4gZ2xvYmFsIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEBicmllZiAgd2hpbGUgZW5jb2RpbmcsIGJhc2luZyBvbiB0aGUgaW5wdXQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLCB0aGUKICogdGhlIGxldmVsIG9mIHRoZSBiaXRzdHJlYW0gaXMgY29tcHV0ZWQgYmFzaW5nIG9uIHRoZSB0YWJsZSBiZWxvdy4KICogaW5wdXQgIDogdGFibGVfaWR4CiAqIG91dHB1dCA6IGxldmVsX2lkYyBvciBjcGIgc2l6ZQogKiBAcmVtYXJrcyBUYWJsZSBBLTEgliBsZXZlbCB0YWJsZSBsaW1pdHMKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KY29uc3QgbGV2ZWxfdGFibGVzX3QgZ2FzX2loMjY0X2x2bF90YmxbMTZdID0KewogICAgeyBJSDI2NF9MRVZFTF8xMCwgICAgMTQ4NSwgICAgICAgOTksICAgICAgICAgMjk3LCAgICAgICA2NCwgICAgICAgICAxNzUsICAgICAgICAgNjQgIH0sCiAgICB7IElIMjY0X0xFVkVMXzFCLCAgICAxNDg1LCAgICAgICA5OSwgICAgICAgICAyOTcsICAgICAgIDEyOCwgICAgICAgIDM1MCwgICAgICAgICA2NCAgfSwKICAgIHsgSUgyNjRfTEVWRUxfMTEsICAgIDMwMDAsICAgICAgIDM5NiwgICAgICAgIDY3NSwgICAgICAgMTkyLCAgICAgICAgNTAwLCAgICAgICAgIDEyOCB9LAogICAgeyBJSDI2NF9MRVZFTF8xMiwgICAgNjAwMCwgICAgICAgMzk2LCAgICAgICAgMTc4MiwgICAgICAzODQsICAgICAgICAxMDAwLCAgICAgICAgMTI4IH0sCiAgICB7IElIMjY0X0xFVkVMXzEzLCAgICAxMTg4MCwgICAgICAzOTYsICAgICAgICAxNzgyLCAgICAgIDc2OCwgICAgICAgIDIwMDAsICAgICAgICAxMjggfSwKICAgIHsgSUgyNjRfTEVWRUxfMjAsICAgIDExODgwLCAgICAgIDM5NiwgICAgICAgIDE3ODIsICAgICAgMjAwMCwgICAgICAgMjAwMCwgICAgICAgIDEyOCB9LAogICAgeyBJSDI2NF9MRVZFTF8yMSwgICAgMTk4MDAsICAgICAgNzkyLCAgICAgICAgMzU2NCwgICAgICA0MDAwLCAgICAgICA0MDAwLCAgICAgICAgMjU2IH0sCiAgICB7IElIMjY0X0xFVkVMXzIyLCAgICAyMDI1MCwgICAgICAxNjIwLCAgICAgICA2MDc1LCAgICAgIDQwMDAsICAgICAgIDQwMDAsICAgICAgICAyNTYgfSwKICAgIHsgSUgyNjRfTEVWRUxfMzAsICAgIDQwNTAwLCAgICAgIDE2MjAsICAgICAgIDYwNzUsICAgICAgMTAwMDAsICAgICAgMTAwMDAsICAgICAgIDI1NiB9LAogICAgeyBJSDI2NF9MRVZFTF8zMSwgICAgMTA4MDAwLCAgICAgMzYwMCwgICAgICAgMTM1MDAsICAgICAxNDAwMCwgICAgICAxNDAwMCwgICAgICAgNTEyIH0sCiAgICB7IElIMjY0X0xFVkVMXzMyLCAgICAyMTYwMDAsICAgICA1MTIwLCAgICAgICAxNTM2MCwgICAgIDIwMDAwLCAgICAgIDIwMDAwLCAgICAgICA1MTIgfSwKICAgIHsgSUgyNjRfTEVWRUxfNDAsICAgIDI0NTc2MCwgICAgIDgxOTIsICAgICAgIDI0NTc2LCAgICAgMjAwMDAsICAgICAgMjUwMDAsICAgICAgIDUxMiB9LAogICAgeyBJSDI2NF9MRVZFTF80MSwgICAgMjQ1NzYwLCAgICAgODE5MiwgICAgICAgMjQ1NzYsICAgICA1MDAwMCwgICAgICA2MjUwMCwgICAgICAgNTEyIH0sCiAgICB7IElIMjY0X0xFVkVMXzQyLCAgICA1MjIyNDAsICAgICA4NzA0LCAgICAgICAyNjExMiwgICAgIDUwMDAwLCAgICAgIDYyNTAwLCAgICAgICA1MTIgfSwKICAgIHsgSUgyNjRfTEVWRUxfNTAsICAgIDU4OTgyNCwgICAgIDIyMDgwLCAgICAgIDgyODAwLCAgICAgMTM1MDAwLCAgICAgMTM1MDAwLCAgICAgIDUxMiB9LAogICAgeyBJSDI2NF9MRVZFTF81MSwgICAgOTgzMDQwLCAgICAgMzY4NjQsICAgICAgMTM4MjQwLCAgICAyNDAwMDAsICAgICAyNDAwMDAsICAgICAgNTEyIH0sCn07CgoKLyoqCiAqIEFycmF5IGNvbnRhaW5pbmcgc3VwcG9ydGVkIGxldmVscwogKi8KY29uc3QgV09SRDMyIGdhaTRfaWgyNjRfbGV2ZWxzW10gPQp7CiAgICBJSDI2NF9MRVZFTF8xMCwKICAgIElIMjY0X0xFVkVMXzExLAogICAgSUgyNjRfTEVWRUxfMTIsCiAgICBJSDI2NF9MRVZFTF8xMywKICAgIElIMjY0X0xFVkVMXzIwLAogICAgSUgyNjRfTEVWRUxfMjEsCiAgICBJSDI2NF9MRVZFTF8yMiwKICAgIElIMjY0X0xFVkVMXzMwLAogICAgSUgyNjRfTEVWRUxfMzEsCiAgICBJSDI2NF9MRVZFTF8zMiwKICAgIElIMjY0X0xFVkVMXzQwLAogICAgSUgyNjRfTEVWRUxfNDEsCiAgICBJSDI2NF9MRVZFTF80MiwKICAgIElIMjY0X0xFVkVMXzUwLAogICAgSUgyNjRfTEVWRUxfNTEsCn07CgoKLyoqCiAqIEFycmF5IGdpdmluZyBzaXplIG9mIG1heCBsdW1hIHNhbXBsZXMgaW4gYSBwaWN0dXJlIGZvciBhIGdpdmVuIGxldmVsCiAqLwpjb25zdCBXT1JEMzIgZ2FpNF9paDI2NF9tYXhfbHVtYV9waWNfc2l6ZVtdID0KewogICAgLyogTGV2ZWwgMSAqLwogICAgMjUzNDQsCiAgICAvKiBMZXZlbCAxLjEgKi8KICAgIDEwMTM3NiwKICAgIC8qIExldmVsIDEuMiAqLwogICAgMTAxMzc2LAogICAgLyogTGV2ZWwgMS4zICovCiAgICAxMDEzNzYsCiAgICAvKiBMZXZlbCAyICovCiAgICAxMDEzNzYsCiAgICAvKiBMZXZlbCAyLjEgKi8KICAgIDIwMjc1MiwKICAgIC8qIExldmVsIDIuMiAqLwogICAgNDE0NzIwLAogICAgLyogTGV2ZWwgMyAqLwogICAgNDE0NzIwLAogICAgLyogTGV2ZWwgMy4xICovCiAgICA5MjE2MDAsCiAgICAvKiBMZXZlbCAzLjIgKi8KICAgIDEzMTA3MjAsCiAgICAvKiBMZXZlbCA0ICovCiAgICAyMDk3MTUyLAogICAgLyogTGV2ZWwgNC4xICovCiAgICAyMDk3MTUyLAogICAgLyogTGV2ZWwgNC4yICovCiAgICAyMjI4MjI0LAogICAgLyogTGV2ZWwgNSAqLwogICAgNTY1MjQ4MCwKICAgIC8qIExldmVsIDUuMSAqLwogICAgOTQzNzE4NAp9OwoKCi8qKiBNYXggd2lkdGggYW5kIGhlaWdodCBhbGxvd2VkIGZvciBhIGdpdmVuIGxldmVsICovCi8qKiBUaGlzIGlzIGRlcml2ZWQgYXMgU1FSVCg4ICogZ2FpNF9paDI2NF9tYXhfbHVtYV9waWNfc2l6ZVtdKSAqLwpjb25zdCBXT1JEMzIgZ2FpNF9paDI2NF9tYXhfd2RfaHRbXSA9CnsKICAgIC8qIExldmVsIDEgKi8KICAgIDQ1MSwKICAgIC8qIExldmVsIDEuMSAqLwogICAgOTAxLAogICAgLyogTGV2ZWwgMS4yICovCiAgICA5MDEsCiAgICAvKiBMZXZlbCAxLjMgKi8KICAgIDkwMSwKICAgIC8qIExldmVsIDIgKi8KICAgIDkwMSwKICAgIC8qIExldmVsIDIuMSAqLwogICAgMTI3NCwKICAgIC8qIExldmVsIDIuMiAqLwogICAgMTgyMiwKICAgIC8qIExldmVsIDMgKi8KICAgIDE4MjIsCiAgICAvKiBMZXZlbCAzLjEgKi8KICAgIDI3MTYsCiAgICAvKiBMZXZlbCAzLjIgKi8KICAgIDMyMzksCiAgICAvKiBMZXZlbCA0ICovCiAgICA0MDk2LAogICAgLyogTGV2ZWwgNC4xICovCiAgICA0MDk2LAogICAgLyogTGV2ZWwgNC4yICovCiAgICA0MjIzLAogICAgLyogTGV2ZWwgNSAqLwogICAgNjcyNSwKICAgIC8qIExldmVsIDUuMSAqLwogICAgODY4OQp9OwoKLyoqIE1pbiB3aWR0aCBhbmQgaGVpZ2h0IGFsbG93ZWQgZm9yIGEgZ2l2ZW4gbGV2ZWwgKi8KLyoqIFRoaXMgaXMgZGVyaXZlZCBhcyBnYWk0X2loMjY0X21heF9sdW1hX3BpY19zaXplW10vZ2FpNF9paDI2NF9tYXhfd2RfaHRbXSAqLwpjb25zdCBXT1JEMzIgZ2FpNF9paDI2NF9taW5fd2RfaHRbXSA9CnsKICAgIC8qIExldmVsIDEgKi8KICAgIDU3LAogICAgLyogTGV2ZWwgMS4xICovCiAgICAxMTMsCiAgICAvKiBMZXZlbCAxLjIgKi8KICAgIDExMywKICAgIC8qIExldmVsIDEuMyAqLwogICAgMTEzLAogICAgLyogTGV2ZWwgMiAqLwogICAgMTEzLAogICAgLyogTGV2ZWwgMi4xICovCiAgICAxNjAsCiAgICAvKiBMZXZlbCAyLjIgKi8KICAgIDIyOCwKICAgIC8qIExldmVsIDMgKi8KICAgIDIyOCwKICAgIC8qIExldmVsIDMuMSAqLwogICAgMzQwLAogICAgLyogTGV2ZWwgMy4yICovCiAgICA0MDUsCiAgICAvKiBMZXZlbCA0ICovCiAgICA1MTIsCiAgICAvKiBMZXZlbCA0LjEgKi8KICAgIDUxMiwKICAgIC8qIExldmVsIDQuMiAqLwogICAgNTI4LAogICAgLyogTGV2ZWwgNSAqLwogICAgODQxLAogICAgLyogTGV2ZWwgNS4xICovCiAgICAxMDg3Cgp9OwoKCi8qKiBUYWJsZSA3LTExIE1hY3JvYmxvY2sgdHlwZXMgZm9yIEkgc2xpY2VzICovCmludHJhX21idHlwZV9pbmZvX3QgZ2FzX2loMjY0X2lfbWJ0eXBlX2luZm9bXSA9CnsKICAgIC8qIEZvciBmaXJzdCBlbnRyeSwgaWYgdHJhbnNmb3JtX3NpemVfOHg4X2ZsYWcgaXMgMSwgbW9kZSB3aWxsIGJlIE1CUEFSVF9JOHg4ICovCiAgICAvKiBUaGlzIGhhcyB0byBiZSB0YWtlbiBjYXJlIHdoaWxlIGFjY2Vzc2luZyB0aGUgdGFibGUgKi8KICAgIHswLCBNQlBBUlRfSTR4NCwgICBWRVJUX0kxNngxNiwgICAgIDAsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBWRVJUX0kxNngxNiwgICAgIDAsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBIT1JaX0kxNngxNiwgICAgIDAsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBEQ19JMTZ4MTYsICAgICAgIDAsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBQTEFORV9JMTZ4MTYsICAgIDAsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBWRVJUX0kxNngxNiwgICAgIDEsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBIT1JaX0kxNngxNiwgICAgIDEsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBEQ19JMTZ4MTYsICAgICAgIDEsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBQTEFORV9JMTZ4MTYsICAgIDEsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBWRVJUX0kxNngxNiwgICAgIDIsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBIT1JaX0kxNngxNiwgICAgIDIsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBEQ19JMTZ4MTYsICAgICAgIDIsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBQTEFORV9JMTZ4MTYsICAgIDIsICAwfSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBWRVJUX0kxNngxNiwgICAgIDAsICAxNX0sCiAgICB7MCwgTUJQQVJUX0kxNngxNiwgSE9SWl9JMTZ4MTYsICAgICAwLCAgMTV9LAogICAgezAsIE1CUEFSVF9JMTZ4MTYsIERDX0kxNngxNiwgICAgICAgMCwgIDE1fSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBQTEFORV9JMTZ4MTYsICAgIDAsICAxNX0sCiAgICB7MCwgTUJQQVJUX0kxNngxNiwgVkVSVF9JMTZ4MTYsICAgICAxLCAgMTV9LAogICAgezAsIE1CUEFSVF9JMTZ4MTYsIEhPUlpfSTE2eDE2LCAgICAgMSwgIDE1fSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBEQ19JMTZ4MTYsICAgICAgIDEsICAxNX0sCiAgICB7MCwgTUJQQVJUX0kxNngxNiwgUExBTkVfSTE2eDE2LCAgICAxLCAgMTV9LAogICAgezAsIE1CUEFSVF9JMTZ4MTYsIFZFUlRfSTE2eDE2LCAgICAgMiwgIDE1fSwKICAgIHswLCBNQlBBUlRfSTE2eDE2LCBIT1JaX0kxNngxNiwgICAgIDIsICAxNX0sCiAgICB7MCwgTUJQQVJUX0kxNngxNiwgRENfSTE2eDE2LCAgICAgICAyLCAgMTV9LAogICAgezAsIE1CUEFSVF9JMTZ4MTYsIFBMQU5FX0kxNngxNiwgICAgMiwgIDE1fSwKICAgIHswLCBNQlBBUlRfSVBDTSwgICBWRVJUX0kxNngxNiwgICAgIDAsICAwfQp9OwoKLyoqIFRhYmxlIDctMTMgTWFjcm9ibG9jayB0eXBlcyBmb3IgUCBzbGljZXMgKi8KaW50ZXJfbWJ0eXBlX2luZm9fdCBnYXNfaWgyNjRfcF9tYnR5cGVfaW5mb1tdID0KewogICAgezEsIE1CUEFSVF9MMCwgIE1CUEFSVF9OQSwgIDE2LCAxNn0sCiAgICB7MiwgTUJQQVJUX0wwLCAgTUJQQVJUX0wwLCAgMTYsIDh9LAogICAgezIsIE1CUEFSVF9MMCwgIE1CUEFSVF9MMCwgIDgsICAxNn0sCiAgICB7NCwgTUJQQVJUX05BLCAgTUJQQVJUX05BLCAgOCwgIDh9LAogICAgezQsIE1CUEFSVF9OQSwgIE1CUEFSVF9OQSwgIDgsICA4fSwKfTsKCi8qKiBUYWJsZSA3LTE0IE1hY3JvYmxvY2sgdHlwZXMgZm9yIEIgc2xpY2VzICovCmludGVyX21idHlwZV9pbmZvX3QgZ2FzX2loMjY0X2JfbWJ0eXBlX2luZm9bXSA9CnsKICAgIHswLCBNQlBBUlRfRElSRUNULCAgTUJQQVJUX05BLCAgOCwgIDgsICB9LAogICAgezEsIE1CUEFSVF9MMCwgICAgICBNQlBBUlRfTkEsICAxNiwgMTYsIH0sCiAgICB7MSwgTUJQQVJUX0wxLCAgICAgIE1CUEFSVF9OQSwgIDE2LCAxNiwgfSwKICAgIHsxLCBNQlBBUlRfQkksICAgICAgTUJQQVJUX05BLCAgMTYsIDE2LCB9LAogICAgezIsIE1CUEFSVF9MMCwgICAgICBNQlBBUlRfTDAsICAxNiwgOCwgIH0sCiAgICB7MiwgTUJQQVJUX0wwLCAgICAgIE1CUEFSVF9MMCwgIDgsICAxNiwgfSwKICAgIHsyLCBNQlBBUlRfTDEsICAgICAgTUJQQVJUX0wxLCAgMTYsIDgsICB9LAogICAgezIsIE1CUEFSVF9MMSwgICAgICBNQlBBUlRfTDEsICA4LCAgMTYsIH0sCiAgICB7MiwgTUJQQVJUX0wwLCAgICAgIE1CUEFSVF9MMSwgIDE2LCA4LCAgfSwKICAgIHsyLCBNQlBBUlRfTDAsICAgICAgTUJQQVJUX0wxLCAgOCwgIDE2LCB9LAogICAgezIsIE1CUEFSVF9MMSwgICAgICBNQlBBUlRfTDAsICAxNiwgOCwgIH0sCiAgICB7MiwgTUJQQVJUX0wxLCAgICAgIE1CUEFSVF9MMCwgIDgsICAxNiwgfSwKICAgIHsyLCBNQlBBUlRfTDAsICAgICAgTUJQQVJUX0JJLCAgMTYsIDgsICB9LAogICAgezIsIE1CUEFSVF9MMCwgICAgICBNQlBBUlRfQkksICA4LCAgMTYsIH0sCiAgICB7MiwgTUJQQVJUX0wxLCAgICAgIE1CUEFSVF9CSSwgIDE2LCA4LCAgfSwKICAgIHsyLCBNQlBBUlRfTDEsICAgICAgTUJQQVJUX0JJLCAgOCwgIDE2LCB9LAogICAgezIsIE1CUEFSVF9CSSwgICAgICBNQlBBUlRfTDAsICAxNiwgOCwgIH0sCiAgICB7MiwgTUJQQVJUX0JJLCAgICAgIE1CUEFSVF9MMCwgIDgsICAxNiwgfSwKICAgIHsyLCBNQlBBUlRfQkksICAgICAgTUJQQVJUX0wxLCAgMTYsIDgsICB9LAogICAgezIsIE1CUEFSVF9CSSwgICAgICBNQlBBUlRfTDEsICA4LCAgMTYsIH0sCiAgICB7MiwgTUJQQVJUX0JJLCAgICAgIE1CUEFSVF9CSSwgIDE2LCA4LCAgfSwKICAgIHsyLCBNQlBBUlRfQkksICAgICAgTUJQQVJUX0JJLCAgOCwgIDE2LCB9LAogICAgezQsIE1CUEFSVF9OQSwgICAgICBNQlBBUlRfTkEsICA4LCAgOCwgIH0sCn07CgovKiogVGFibGUgNy0xNyCWIFN1Yi1tYWNyb2Jsb2NrIHR5cGVzIGluIFAgbWFjcm9ibG9ja3MgKi8Kc3VibWJ0eXBlX2luZm9fdCBnYXNfaWgyNjRfcF9zdWJtYnR5cGVfaW5mb1tdID0KewogICB7MSwgTUJQQVJUX0wwLCA4LCAgOH0sCiAgIHsyLCBNQlBBUlRfTDAsIDgsICA0fSwKICAgezIsIE1CUEFSVF9MMCwgNCwgIDh9LAogICB7NCwgTUJQQVJUX0wwLCA0LCAgNH0sCn07CgovKiogVGFibGUgNy0xOCCWIFN1Yi1tYWNyb2Jsb2NrIHR5cGVzIGluIEIgbWFjcm9ibG9ja3MgKi8Kc3VibWJ0eXBlX2luZm9fdCBnYXNfaWgyNjRfYl9zdWJtYnR5cGVfaW5mb1tdID0KewogICAgezQsIE1CUEFSVF9ESVJFQ1QsICA0LCAgNH0sCiAgICB7MSwgTUJQQVJUX0wwLCAgICAgIDgsICA4fSwKICAgIHsxLCBNQlBBUlRfTDEsICAgICAgOCwgIDh9LAogICAgezEsIE1CUEFSVF9CSSwgICAgICA4LCAgOH0sCiAgICB7MiwgTUJQQVJUX0wwLCAgICAgIDgsICA0fSwKICAgIHsyLCBNQlBBUlRfTDAsICAgICAgNCwgIDh9LAogICAgezIsIE1CUEFSVF9MMSwgICAgICA4LCAgNH0sCiAgICB7MiwgTUJQQVJUX0wxLCAgICAgIDQsICA4fSwKICAgIHsyLCBNQlBBUlRfQkksICAgICAgOCwgIDR9LAogICAgezIsIE1CUEFSVF9CSSwgICAgICA0LCAgOH0sCiAgICB7NCwgTUJQQVJUX0wwLCAgICAgIDQsICA0fSwKICAgIHs0LCBNQlBBUlRfTDEsICAgICAgNCwgIDR9LAogICAgezQsIE1CUEFSVF9CSSwgICAgICA0LCAgNH0sCn07CgoKCgpjb25zdCBVV09SRDggZ2F1MV9paDI2NF9pbnZfc2Nhbl9wcm9nNHg0W10gPQp7CiAgICAwLCAgIDEsICA0LCAgOCwKICAgIDUsICAgMiwgIDMsICA2LAogICAgOSwgIDEyLCAxMywgMTAsCiAgICA3LCAgMTEsIDE0LCAxNQp9OwoKY29uc3QgVVdPUkQ4IGdhdTFfaWgyNjRfaW52X3NjYW5faW50NHg0W10gPQp7CiAgICAgMCwgNCwgIDEsICA4LAogICAgMTIsIDUsICA5LCAgMTMsCiAgICAgMiwgNiwgMTAsICAxNCwKICAgICAzLCA3LCAxMSwgIDE1Cn07CgovKiogSW52ZXJzZSBzY2FuIHRhYmxlcyBmb3IgaW5kaXZpZHVhbCA0eDQgYmxvY2tzIG9mIDh4OCB0cmFuc2Zvcm0gY29lZmZzIG9mIENBVkxDICovCi8qIHByb2dyZXNzaXZlICovCmNvbnN0IFVXT1JEOCBnYXUxX2loMjY0X2ludl9zY2FuX3Byb2c4eDhfY2F2bGNbNjRdID0KewogICAgIDAsICA5LCAxNywgMTgsIDEyLCA0MCwgMjcsICA3LAogICAgMzUsIDU3LCAyOSwgMzAsIDU4LCAzOCwgNTMsIDQ3LAogICAgIDEsICAyLCAyNCwgMTEsIDE5LCA0OCwgMjAsIDE0LAogICAgNDIsIDUwLCAyMiwgMzcsIDU5LCAzMSwgNjAsIDU1LAogICAgIDgsICAzLCAzMiwgIDQsIDI2LCA0MSwgMTMsIDIxLAogICAgNDksIDQzLCAxNSwgNDQsIDUyLCAzOSwgNjEsIDYyLAogICAgMTYsIDEwLCAyNSwgIDUsIDMzLCAzNCwgIDYsIDI4LAogICAgNTYsIDM2LCAyMywgNTEsIDQ1LCA0NiwgNTQsIDYzCn07CgovKiBpbnRlcmxhY2UgKi8KY29uc3QgVVdPUkQ4IGdhdTFfaWgyNjRfaW52X3NjYW5faW50OHg4X2NhdmxjWzY0XSA9CnsKICAgICAwLCAgOSwgIDIsIDU2LCAxOCwgMjYsIDM0LCAyNywKICAgIDM1LCAyOCwgMzYsIDI5LCA0NSwgIDcsIDU0LCAzOSwKICAgICA4LCAyNCwgMjUsIDMzLCA0MSwgMTEsIDQyLCAxMiwKICAgIDQzLCAxMywgNDQsIDE0LCA1MywgMTUsIDYyLCA0NywKICAgIDE2LCAzMiwgNDAsIDEwLCA0OSwgIDQsIDUwLCAgNSwKICAgIDUxLCAgNiwgNTIsIDIyLCA2MSwgMzgsIDIzLCA1NSwKICAgICAxLCAxNywgNDgsICAzLCA1NywgMTksIDU4LCAyMCwKICAgIDU5LCAyMSwgNjAsIDM3LCAzMCwgNDYsIDMxLCA2Mwp9OwoKCgovKkludmVyc2Ugc2NhbiB0YWJsZXMgZm9yIGluZGl2aWR1YWwgOHg4IGJsb2NrcyBvZiA4eDggdHJhbnNmb3JtIGNvZWZmcyBvZiBDQUJBQyAqLwovKiBwcm9ncmVzc2l2ZSAqLwoKY29uc3QgVVdPUkQ4IGdhdTFfaWgyNjRfaW52X3NjYW5fcHJvZzh4OF9jYWJhY1s2NF0gPQp7CiAgICAgMCwgIDEsICA4LCAxNiwgIDksIDIsICAgMywgMTAsCiAgICAxNywgMjQsIDMyLCAyNSwgMTgsIDExLCAgNCwgIDUsCiAgICAxMiwgMTksIDI2LCAzMywgNDAsIDQ4LCA0MSwgMzQsCiAgICAyNywgMjAsIDEzLCAgNiwgIDcsIDE0LCAyMSwgMjgsCiAgICAzNSwgNDIsIDQ5LCA1NiwgNTcsIDUwLCA0MywgMzYsCiAgICAyOSwgMjIsIDE1LCAyMywgMzAsIDM3LCA0NCwgNTEsCiAgICA1OCwgNTksIDUyLCA0NSwgMzgsIDMxLCAzOSwgNDYsCiAgICA1MywgNjAsIDYxLCA1NCwgNDcsIDU1LCA2MiwgNjMKfTsKCgovKiBpbnRlcmxhY2UgKi8KCmNvbnN0IFVXT1JEOCBnYXUxX2loMjY0X2ludl9zY2FuX2ludDh4OF9jYWJhY1s2NF0gPQp7CiAgICAgMCwgIDgsIDE2LCAgMSwgIDksIDI0LCAzMiwgMTcsCiAgICAgMiwgMjUsIDQwLCA0OCwgNTYsIDMzLCAxMCwgMywKICAgIDE4LCA0MSwgNDksIDU3LCAyNiwgMTEsICA0LCAxOSwKICAgIDM0LCA0MiwgNTAsIDU4LCAyNywgMTIsICA1LCAyMCwKICAgIDM1LCA0MywgNTEsIDU5LCAyOCwgMTMsICA2LCAyMSwKICAgIDM2LCA0NCwgNTIsIDYwLCAyOSwgMTQsIDIyLCAzNywKICAgIDQ1LCA1MywgNjEsIDMwLCAgNywgMTUsIDM4LCA0NiwKICAgIDU0LCA2MiwgMjMsIDMxLCAzOSwgNDcsIDU1LCA2Mwp9OwoKCmNvbnN0IFVXT1JEOCAqY29uc3QgZ3BhdTFfaWgyNjRfaW52X3NjYW44eDhbXSA9CnsKICAgICBnYXUxX2loMjY0X2ludl9zY2FuX3Byb2c4eDhfY2F2bGMsCiAgICAgZ2F1MV9paDI2NF9pbnZfc2Nhbl9pbnQ4eDhfY2F2bGMsCiAgICAgZ2F1MV9paDI2NF9pbnZfc2Nhbl9wcm9nOHg4X2NhYmFjLAogICAgIGdhdTFfaWgyNjRfaW52X3NjYW5faW50OHg4X2NhYmFjCn07Cgpjb25zdCBVV09SRDggKmNvbnN0IGdwYXUxX2loMjY0X2ludl9zY2FuNHg0W10gPQp7CiAgICAgZ2F1MV9paDI2NF9pbnZfc2Nhbl9wcm9nNHg0LAogICAgIGdhdTFfaWgyNjRfaW52X3NjYW5faW50NHg0LAp9OwoKY29uc3QgVVdPUkQ4IGdhdTFfaWgyNjRfOHg4X3N1YmJsa19pZHhbXSA9CnsKICAgICAgMCwgICAgMSwgICA0LCAgNSwKICAgICAgMiwgICAgMywgICA2LCAgNywKICAgICAgOCwgICAgOSwgIDEyLCAxMywKICAgICAxMCwgICAxMSwgIDE0LCAxNQp9OwoKCi8qIFRhYmxlIDgtMTUgQ2hyb21hIFFQIG9mZnNldCB0YWJsZSAqLwpjb25zdCBVV09SRDggZ2F1MV9paDI2NF9jaHJvbWFfcXBbXSA9CnsKICAgICAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsCiAgICAgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogICAgIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywKICAgICAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAyOSwgMzAsCiAgICAgMzEsIDMyLCAzMiwgMzMsIDM0LCAzNCwgMzUsIDM1LAogICAgIDM2LCAzNiwgMzcsIDM3LCAzNywgMzgsIDM4LCAzOCwKICAgICAzOSwgMzksIDM5LCAzOQp9OwoKCi8qKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBAYnJpZWYgIGxvb2sgdXAgdGFibGUgdG8gY29tcHV0ZSBuZWlnYm91ciBhdmFpbGFiaWxpdHkgb2YgNHg0IGJsb2NrcwoqIGlucHV0ICA6IHN1YmJsayBpZHgsIG1iIG5laWdoYm9yIGF2YWlsYWJpbGl0eQoqIG91dHB1dCA6IHN1YiBibGsgbmVpZ2hib3IgYXZhaWxhYmlsaXR5CiogQHJlbWFya3MKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiovCmNvbnN0IFVXT1JEOCBnYXUxX2loMjY0XzR4NF9uZ2JyX2F2YmxbMTZdWzE2XSA9CnsKICAgIHsgIDB4MCwgMHgxLCAweGMsIDB4NywgMHgxLCAweDEsIDB4ZiwgMHg3LCAweGMsIDB4ZiwgMHhjLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NyB9LAogICAgeyAgMHgxLCAweDEsIDB4ZiwgMHg3LCAweDEsIDB4MSwgMHhmLCAweDcsIDB4ZiwgMHhmLCAweGYsIDB4NywgMHhmLCAweDcsIDB4ZiwgMHg3IH0sCiAgICB7ICAweDIsIDB4MSwgMHhjLCAweDcsIDB4MSwgMHgxLCAweGYsIDB4NywgMHhjLCAweGYsIDB4YywgMHg3LCAweGYsIDB4NywgMHhmLCAweDcgfSwKICAgIHsgIDB4MywgMHgxLCAweGYsIDB4NywgMHgxLCAweDEsIDB4ZiwgMHg3LCAweGYsIDB4ZiwgMHhmLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NyB9LAoKICAgIHsgIDB4YywgMHhmLCAweGMsIDB4NywgMHhmLCAweDcsIDB4ZiwgMHg3LCAweGMsIDB4ZiwgMHhjLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NyB9LAogICAgeyAgMHhkLCAweGYsIDB4ZiwgMHg3LCAweGYsIDB4NywgMHhmLCAweDcsIDB4ZiwgMHhmLCAweGYsIDB4NywgMHhmLCAweDcsIDB4ZiwgMHg3IH0sCiAgICB7ICAweGUsIDB4ZiwgMHhjLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NywgMHhjLCAweGYsIDB4YywgMHg3LCAweGYsIDB4NywgMHhmLCAweDcgfSwKICAgIHsgIDB4ZiwgMHhmLCAweGYsIDB4NywgMHhmLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4ZiwgMHhmLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NyB9LAoKICAgIHsgIDB4MCwgMHgxLCAweGMsIDB4NywgMHgxLCAweDksIDB4ZiwgMHg3LCAweGMsIDB4ZiwgMHhjLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NyB9LAogICAgeyAgMHgxLCAweDEsIDB4ZiwgMHg3LCAweDEsIDB4OSwgMHhmLCAweDcsIDB4ZiwgMHhmLCAweGYsIDB4NywgMHhmLCAweDcsIDB4ZiwgMHg3IH0sCiAgICB7ICAweDIsIDB4MSwgMHhjLCAweDcsIDB4MSwgMHg5LCAweGYsIDB4NywgMHhjLCAweGYsIDB4YywgMHg3LCAweGYsIDB4NywgMHhmLCAweDcgfSwKICAgIHsgIDB4MywgMHgxLCAweGYsIDB4NywgMHgxLCAweDksIDB4ZiwgMHg3LCAweGYsIDB4ZiwgMHhmLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NyB9LAoKICAgIHsgIDB4YywgMHhmLCAweGMsIDB4NywgMHhmLCAweGYsIDB4ZiwgMHg3LCAweGMsIDB4ZiwgMHhjLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NyB9LAogICAgeyAgMHhkLCAweGYsIDB4ZiwgMHg3LCAweGYsIDB4ZiwgMHhmLCAweDcsIDB4ZiwgMHhmLCAweGYsIDB4NywgMHhmLCAweDcsIDB4ZiwgMHg3IH0sCiAgICB7ICAweGUsIDB4ZiwgMHhjLCAweDcsIDB4ZiwgMHhmLCAweGYsIDB4NywgMHhjLCAweGYsIDB4YywgMHg3LCAweGYsIDB4NywgMHhmLCAweDcgfSwKICAgIHsgIDB4ZiwgMHhmLCAweGYsIDB4NywgMHhmLCAweGYsIDB4ZiwgMHg3LCAweGYsIDB4ZiwgMHhmLCAweDcsIDB4ZiwgMHg3LCAweGYsIDB4NyB9LAp9OwoKCi8qKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBAYnJpZWYgIGxvb2sgdXAgdGFibGUgdG8gY29tcHV0ZSBuZWlnYm91ciBhdmFpbGFiaWxpdHkgb2YgOHg4IGJsb2NrcwoqIGlucHV0ICA6IHN1YmJsayBpZHgsIG1iIG5laWdoYm9yIGF2YWlsYWJpbGl0eQoqIG91dHB1dCA6IHN1YiBibGsgbmVpZ2hib3IgYXZhaWxhYmlsaXR5CiogQHJlbWFya3MKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiovCmNvbnN0IFVXT1JEOCBnYXUxX2loMjY0Xzh4OF9uZ2JyX2F2YmxbMTZdWzRdID0KewogICAgeyAgMHgwLCAweDEsIDB4YywgMHg3IH0sCiAgICB7ICAweDEsIDB4MSwgMHhmLCAweDcgfSwKICAgIHsgIDB4MiwgMHgxLCAweGMsIDB4NyB9LAogICAgeyAgMHgzLCAweDEsIDB4ZiwgMHg3IH0sCgogICAgeyAgMHhjLCAweDcsIDB4YywgMHg3IH0sCiAgICB7ICAweGQsIDB4NywgMHhmLCAweDcgfSwKICAgIHsgIDB4ZSwgMHg3LCAweGMsIDB4NyB9LAogICAgeyAgMHhmLCAweDcsIDB4ZiwgMHg3IH0sCgogICAgeyAgMHgwLCAweDksIDB4YywgMHg3IH0sCiAgICB7ICAweDEsIDB4OSwgMHhmLCAweDcgfSwKICAgIHsgIDB4MiwgMHg5LCAweGMsIDB4NyB9LAogICAgeyAgMHgzLCAweDksIDB4ZiwgMHg3IH0sCgogICAgeyAgMHhjLCAweGYsIDB4YywgMHg3IH0sCiAgICB7ICAweGQsIDB4ZiwgMHhmLCAweDcgfSwKICAgIHsgIDB4ZSwgMHhmLCAweGMsIDB4NyB9LAogICAgeyAgMHhmLCAweGYsIDB4ZiwgMHg3IH0sCn07CgovKiogVGFibGUgNy0zIERlZmF1bHQgaW50cmEgNHg0IHNjYWxpbmcgbGlzdCAqLwpjb25zdCBVV09SRDE2IGdhdTJfaWgyNjRfZGVmYXVsdF9pbnRyYTR4NF9zY2FsaW5nX2xpc3RbXSA9CnsKICAgICA2LCAxMywgMTMsIDIwLAogICAgMjAsIDIwLCAyOCwgMjgsCiAgICAyOCwgMjgsIDMyLCAzMiwKICAgIDMyLCAzNywgMzcsIDQyCn07CgovKiogVGFibGUgNy0zIERlZmF1bHQgaW50ZXIgNHg0IHNjYWxpbmcgbGlzdCAqLwpjb25zdCBVV09SRDE2IGdhdTJfaWgyNjRfZGVmYXVsdF9pbnRlcjR4NF9zY2FsaW5nX2xpc3RbXSA9CnsKICAgIDEwLCAxNCwgMTQsIDIwLAogICAgMjAsIDIwLCAyNCwgMjQsCiAgICAyNCwgMjQsIDI3LCAyNywKICAgIDI3LCAzMCwgMzAsIDM0Cn07CgovKiBJbnZlcnNlIHNjYW5uZWQgb3V0cHV0IG9mIGdhdTJfaWgyNjRfZGVmYXVsdF9pbnRyYTR4NF9zY2FsaW5nX2xpc3QgKi8KY29uc3QgVVdPUkQxNiBnYXUyX2loMjY0X2RlZmF1bHRfaW50cmE0eDRfd2VpZ2h0X3NjYWxlW10gPQp7CiAgICAgNiwgMTMsIDIwLCAyOCwKICAgIDEzLCAyMCwgMjgsIDMyLAogICAgMjAsIDI4LCAzMiwgMzcsCiAgICAyOCwgMzIsIDM3LCA0Mgp9OwoKLyogSW52ZXJzZSBzY2FubmVkIG91dHB1dCBvZiBnYXUyX2loMjY0X2RlZmF1bHRfaW50ZXI0eDRfc2NhbGluZ19saXN0ICovCmNvbnN0IFVXT1JEMTYgZ2F1Ml9paDI2NF9kZWZhdWx0X2ludGVyNHg0X3dlaWdodF9zY2FsZVtdID0KewogICAgIDEwLCAxNCwgMjAsIDI0LAogICAgIDE0LCAyMCwgMjQsIDI3LAogICAgIDIwLCAyNCwgMjcsIDMwLAogICAgIDI0LCAyNywgMzAsIDM0Cn07CgovKiogVGFibGUgNy00IERlZmF1bHQgaW50cmEgOHg4IHNjYWxpbmcgbGlzdCAqLwpjb25zdCBVV09SRDE2IGdhdTJfaWgyNjRfZGVmYXVsdF9pbnRyYTh4OF9zY2FsaW5nX2xpc3RbXSA9CnsKICAgICA2LCAxMCwgMTAsIDEzLCAxMSwgMTMsIDE2LCAxNiwKICAgIDE2LCAxNiwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMywKICAgIDIzLCAyMywgMjMsIDIzLCAyMywgMjUsIDI1LCAyNSwKICAgIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywKICAgIDI3LCAyNywgMjcsIDI3LCAyOSwgMjksIDI5LCAyOSwKICAgIDI5LCAyOSwgMjksIDMxLCAzMSwgMzEsIDMxLCAzMSwKICAgIDMxLCAzMywgMzMsIDMzLCAzMywgMzMsIDM2LCAzNiwKICAgIDM2LCAzNiwgMzgsIDM4LCAzOCwgNDAsIDQwLCA0Mgp9OwoKLyoqIFRhYmxlIDctNCBEZWZhdWx0IGludGVyIDh4OCBzY2FsaW5nIGxpc3QgKi8KY29uc3QgVVdPUkQxNiBnYXUyX2loMjY0X2RlZmF1bHRfaW50ZXI4eDhfc2NhbGluZ19saXN0W10gPQp7CiAgICA5LCAgMTMsIDEzLCAxNSwgMTMsIDE1LCAxNywgMTcsCiAgICAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMjEsCiAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIyLCAyMiwgMjIsCiAgICAyMiwgMjIsIDIyLCAyMiwgMjQsIDI0LCAyNCwgMjQsCiAgICAyNCwgMjQsIDI0LCAyNCwgMjUsIDI1LCAyNSwgMjUsCiAgICAyNSwgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsCiAgICAyNywgMjgsIDI4LCAyOCwgMjgsIDI4LCAzMCwgMzAsCiAgICAzMCwgMzAsIDMyLCAzMiwgMzIsIDMzLCAzMywgMzUKfTsKCi8qIEludmVyc2Ugc2Nhbm5lZCBvdXRwdXQgb2YgZ2F1Ml9paDI2NF9kZWZhdWx0X2ludHJhOHg4X3NjYWxpbmdfbGlzdCAqLwpjb25zdCBVV09SRDE2IGdhdTJfaWgyNjRfZGVmYXVsdF9pbnRyYTh4OF93ZWlnaHRfc2NhbGVbXSA9CnsKICAgICA2LCAxMCwgMTMsIDE2LCAxOCwgMjMsIDI1LCAyNywKICAgIDEwLCAxMSwgMTYsIDE4LCAyMywgMjUsIDI3LCAyOSwKICAgIDEzLCAxNiwgMTgsIDIzLCAyNSwgMjcsIDI5LCAzMSwKICAgIDE2LCAxOCwgMjMsIDI1LCAyNywgMjksIDMxLCAzMywKICAgIDE4LCAyMywgMjUsIDI3LCAyOSwgMzEsIDMzLCAzNiwKICAgIDIzLCAyNSwgMjcsIDI5LCAzMSwgMzMsIDM2LCAzOCwKICAgIDI1LCAyNywgMjksIDMxLCAzMywgMzYsIDM4LCA0MCwKICAgIDI3LCAyOSwgMzEsIDMzLCAzNiwgMzgsIDQwLCA0Mgp9OwoKLyogSW52ZXJzZSBzY2FubmVkIG91dHB1dCBvZiBnYXUyX2loMjY0X2RlZmF1bHRfaW50ZXI4eDhfc2NhbGluZ19saXN0ICovCmNvbnN0IFVXT1JEMTYgZ2F1Ml9paDI2NF9kZWZhdWx0X2ludGVyOHg4X3dlaWdodF9zY2FsZVtdID0KewogICAgIDksIDEzLCAxNSwgMTcsIDE5LCAyMSwgMjIsIDI0LAogICAgMTMsIDEzLCAxNywgMTksIDIxLCAyMiwgMjQsIDI1LAogICAgMTUsIDE3LCAxOSwgMjEsIDIyLCAyNCwgMjUsIDI3LAogICAgMTcsIDE5LCAyMSwgMjIsIDI0LCAyNSwgMjcsIDI4LAogICAgMTksIDIxLCAyMiwgMjQsIDI1LCAyNywgMjgsIDMwLAogICAgMjEsIDIyLCAyNCwgMjUsIDI3LCAyOCwgMzAsIDMyLAogICAgMjIsIDI0LCAyNSwgMjcsIDI4LCAzMCwgMzIsIDMzLAogICAgMjQsIDI1LCAyNywgMjgsIDMwLCAzMiwgMzMsIDM1Cn07Ci8qIEVxIDctOCBGbGF0IHNjYWxpbmcgbWF0cml4IGZvciA0eDQgKi8KY29uc3QgVVdPUkQxNiBnYXUyX2loMjY0X2ZsYXRfNHg0X3dlaWdodF9zY2FsZVtdID0KewogICAgMTYsIDE2LCAxNiwgMTYsCiAgICAxNiwgMTYsIDE2LCAxNiwKICAgIDE2LCAxNiwgMTYsIDE2LAogICAgMTYsIDE2LCAxNiwgMTYKfTsKCi8qIEVxIDctOSBGbGF0IHNjYWxpbmcgbWF0cml4IGZvciA4eDggKi8KY29uc3QgVVdPUkQxNiBnYXUyX2loMjY0X2ZsYXRfOHg4X3dlaWdodF9zY2FsZVtdID0KewogICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2Cn07CgoKLyoqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQGJyaWVmICBTY2FsZSBUYWJsZSBmb3IgaW52ZXJzZSBxdWFudGl6aW5nIDR4NCBzdWJibG9jay4gVG8gaW52ZXJzZSBxdWFudGl6ZQogKiBhIGdpdmVuIDR4NCBxdWFudGl6ZWQgYmxvY2ssIHRoZSBjb2VmZmljaWVudCBhdCBpbmRleCBsb2NhdGlvbiAoaSxqKSBpcyBzY2FsZWQKICogYnkgb25lIG9mIHRoZSBjb25zdGFudHMgaW4gdGhpcyB0YWJsZSBhbmQgcmlnaHQgc2hpZnQgdGhlIHJlc3VsdCBieSBhYnMgKDQgLQogKiBmbG9vcihxcC82KSksIGhlcmUgcXAgaXMgdGhlIHF1YW50aXphdGlvbiBwYXJhbWV0ZXIgdXNlZCB0byBxdWFudGl6ZSB0aGUgbWIuCiAqCiAqIGlucHV0ICAgOiAxNiAqIHFwJTYsIGluZGV4IGxvY2F0aW9uIChpLGopCiAqIG91dHB1dCAgOiBzY2FsZSBjb25zdGFudC4KICoKICogQHJlbWFya3MgMTYgY29uc3RhbnRzIGZvciBlYWNoIGluZGV4IHBvc2l0aW9uIG9mIHRoZSBzdWJibG9jayBhbmQgNiBmb3IgZWFjaAogKiBxcCU2IGluIHRoZSByYW5nZSAwLTUgaW5jbHVzaXZlLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKY29uc3QgVVdPUkQxNiBnYXUyX2loMjY0X2lxdWFudF9zY2FsZV9tYXRyaXhfNHg0Wzk2XSA9CnsKICAgICAgMTAsICAxMywgIDEwLCAgMTMsCiAgICAgIDEzLCAgMTYsICAxMywgIDE2LAogICAgICAxMCwgIDEzLCAgMTAsICAxMywKICAgICAgMTMsICAxNiwgIDEzLCAgMTYsCgogICAgICAxMSwgIDE0LCAgMTEsICAxNCwKICAgICAgMTQsICAxOCwgIDE0LCAgMTgsCiAgICAgIDExLCAgMTQsICAxMSwgIDE0LAogICAgICAxNCwgIDE4LCAgMTQsICAxOCwKCiAgICAgIDEzLCAgMTYsICAxMywgIDE2LAogICAgICAxNiwgIDIwLCAgMTYsICAyMCwKICAgICAgMTMsICAxNiwgIDEzLCAgMTYsCiAgICAgIDE2LCAgMjAsICAxNiwgIDIwLAoKICAgICAgMTQsICAxOCwgIDE0LCAgMTgsCiAgICAgIDE4LCAgMjMsICAxOCwgIDIzLAogICAgICAxNCwgIDE4LCAgMTQsICAxOCwKICAgICAgMTgsICAyMywgIDE4LCAgMjMsCgogICAgICAxNiwgIDIwLCAgMTYsICAyMCwKICAgICAgMjAsICAyNSwgIDIwLCAgMjUsCiAgICAgIDE2LCAgMjAsICAxNiwgIDIwLAogICAgICAyMCwgIDI1LCAgMjAsICAyNSwKCiAgICAgIDE4LCAgMjMsICAxOCwgIDIzLAogICAgICAyMywgIDI5LCAgMjMsICAyOSwKICAgICAgMTgsICAyMywgIDE4LCAgMjMsCiAgICAgIDIzLCAgMjksICAyMywgIDI5LAoKfTsKCi8qKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEBicmllZiAgU2NhbGUgVGFibGUgZm9yIGludmVyc2UgcXVhbnRpemluZyA4eDggc3ViYmxvY2suIFRvIGludmVyc2UgcXVhbnRpemUKICogYSBnaXZlbiA4eDggcXVhbnRpemVkIGJsb2NrLCB0aGUgY29lZmZpY2llbnQgYXQgaW5kZXggbG9jYXRpb24gKGksaikgaXMgc2NhbGVkCiAqIGJ5IG9uZSBvZiB0aGUgY29uc3RhbnRzIGluIHRoaXMgdGFibGUgYW5kIHJpZ2h0IHNoaWZ0IHRoZSByZXN1bHQgYnkgYWJzICg0IC0KICogZmxvb3IocXAvNikpLCBoZXJlIHFwIGlzIHRoZSBxdWFudGl6YXRpb24gcGFyYW1ldGVyIHVzZWQgdG8gcXVhbnRpemUgdGhlIG1iLgogKgogKiBpbnB1dCAgIDogcXAlNiwgaW5kZXggbG9jYXRpb24gKGksaikKICogb3V0cHV0ICA6IHNjYWxlIGNvbnN0YW50LgogKgogKiBAcmVtYXJrcyA2NCBjb25zdGFudHMgZm9yIGVhY2ggaW5kZXggcG9zaXRpb24gb2YgdGhlIHN1YmJsb2NrIGFuZCA2IGZvciBlYWNoCiAqIHFwJTYgaW4gdGhlIHJhbmdlIDAtNSBpbmNsdXNpdmUuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCmNvbnN0IFVXT1JEMTYgZ2F1Ml9paDI2NF9pcXVhbnRfc2NhbGVfbWF0cml4Xzh4OCBbMzg0XSA9CnsKICAgICAgMjAsICAxOSwgIDI1LCAgMTksICAyMCwgIDE5LCAgMjUsICAxOSwKICAgICAgMTksICAxOCwgIDI0LCAgMTgsICAxOSwgIDE4LCAgMjQsICAxOCwKICAgICAgMjUsICAyNCwgIDMyLCAgMjQsICAyNSwgIDI0LCAgMzIsICAyNCwKICAgICAgMTksICAxOCwgIDI0LCAgMTgsICAxOSwgIDE4LCAgMjQsICAxOCwKICAgICAgMjAsICAxOSwgIDI1LCAgMTksICAyMCwgIDE5LCAgMjUsICAxOSwKICAgICAgMTksICAxOCwgIDI0LCAgMTgsICAxOSwgIDE4LCAgMjQsICAxOCwKICAgICAgMjUsICAyNCwgIDMyLCAgMjQsICAyNSwgIDI0LCAgMzIsICAyNCwKICAgICAgMTksICAxOCwgIDI0LCAgMTgsICAxOSwgIDE4LCAgMjQsICAxOCwKCiAgICAgIDIyLCAgMjEsICAyOCwgIDIxLCAgMjIsICAyMSwgIDI4LCAgMjEsCiAgICAgIDIxLCAgMTksICAyNiwgIDE5LCAgMjEsICAxOSwgIDI2LCAgMTksCiAgICAgIDI4LCAgMjYsICAzNSwgIDI2LCAgMjgsICAyNiwgIDM1LCAgMjYsCiAgICAgIDIxLCAgMTksICAyNiwgIDE5LCAgMjEsICAxOSwgIDI2LCAgMTksCiAgICAgIDIyLCAgMjEsICAyOCwgIDIxLCAgMjIsICAyMSwgIDI4LCAgMjEsCiAgICAgIDIxLCAgMTksICAyNiwgIDE5LCAgMjEsICAxOSwgIDI2LCAgMTksCiAgICAgIDI4LCAgMjYsICAzNSwgIDI2LCAgMjgsICAyNiwgIDM1LCAgMjYsCiAgICAgIDIxLCAgMTksICAyNiwgIDE5LCAgMjEsICAxOSwgIDI2LCAgMTksCgogICAgICAyNiwgIDI0LCAgMzMsICAyNCwgIDI2LCAgMjQsICAzMywgIDI0LAogICAgICAyNCwgIDIzLCAgMzEsICAyMywgIDI0LCAgMjMsICAzMSwgIDIzLAogICAgICAzMywgIDMxLCAgNDIsICAzMSwgIDMzLCAgMzEsICA0MiwgIDMxLAogICAgICAyNCwgIDIzLCAgMzEsICAyMywgIDI0LCAgMjMsICAzMSwgIDIzLAogICAgICAyNiwgIDI0LCAgMzMsICAyNCwgIDI2LCAgMjQsICAzMywgIDI0LAogICAgICAyNCwgIDIzLCAgMzEsICAyMywgIDI0LCAgMjMsICAzMSwgIDIzLAogICAgICAzMywgIDMxLCAgNDIsICAzMSwgIDMzLCAgMzEsICA0MiwgIDMxLAogICAgICAyNCwgIDIzLCAgMzEsICAyMywgIDI0LCAgMjMsICAzMSwgIDIzLAoKICAgICAgMjgsICAyNiwgIDM1LCAgMjYsICAyOCwgIDI2LCAgMzUsICAyNiwKICAgICAgMjYsICAyNSwgIDMzLCAgMjUsICAyNiwgIDI1LCAgMzMsICAyNSwKICAgICAgMzUsICAzMywgIDQ1LCAgMzMsICAzNSwgIDMzLCAgNDUsICAzMywKICAgICAgMjYsICAyNSwgIDMzLCAgMjUsICAyNiwgIDI1LCAgMzMsICAyNSwKICAgICAgMjgsICAyNiwgIDM1LCAgMjYsICAyOCwgIDI2LCAgMzUsICAyNiwKICAgICAgMjYsICAyNSwgIDMzLCAgMjUsICAyNiwgIDI1LCAgMzMsICAyNSwKICAgICAgMzUsICAzMywgIDQ1LCAgMzMsICAzNSwgIDMzLCAgNDUsICAzMywKICAgICAgMjYsICAyNSwgIDMzLCAgMjUsICAyNiwgIDI1LCAgMzMsICAyNSwKCiAgICAgIDMyLCAgMzAsICA0MCwgIDMwLCAgMzIsICAzMCwgIDQwLCAgMzAsCiAgICAgIDMwLCAgMjgsICAzOCwgIDI4LCAgMzAsICAyOCwgIDM4LCAgMjgsCiAgICAgIDQwLCAgMzgsICA1MSwgIDM4LCAgNDAsICAzOCwgIDUxLCAgMzgsCiAgICAgIDMwLCAgMjgsICAzOCwgIDI4LCAgMzAsICAyOCwgIDM4LCAgMjgsCiAgICAgIDMyLCAgMzAsICA0MCwgIDMwLCAgMzIsICAzMCwgIDQwLCAgMzAsCiAgICAgIDMwLCAgMjgsICAzOCwgIDI4LCAgMzAsICAyOCwgIDM4LCAgMjgsCiAgICAgIDQwLCAgMzgsICA1MSwgIDM4LCAgNDAsICAzOCwgIDUxLCAgMzgsCiAgICAgIDMwLCAgMjgsICAzOCwgIDI4LCAgMzAsICAyOCwgIDM4LCAgMjgsCgogICAgICAzNiwgIDM0LCAgNDYsICAzNCwgIDM2LCAgMzQsICA0NiwgIDM0LAogICAgICAzNCwgIDMyLCAgNDMsICAzMiwgIDM0LCAgMzIsICA0MywgIDMyLAogICAgICA0NiwgIDQzLCAgNTgsICA0MywgIDQ2LCAgNDMsICA1OCwgIDQzLAogICAgICAzNCwgIDMyLCAgNDMsICAzMiwgIDM0LCAgMzIsICA0MywgIDMyLAogICAgICAzNiwgIDM0LCAgNDYsICAzNCwgIDM2LCAgMzQsICA0NiwgIDM0LAogICAgICAzNCwgIDMyLCAgNDMsICAzMiwgIDM0LCAgMzIsICA0MywgIDMyLAogICAgICA0NiwgIDQzLCAgNTgsICA0MywgIDQ2LCAgNDMsICA1OCwgIDQzLAogICAgICAzNCwgIDMyLCAgNDMsICAzMiwgIDM0LCAgMzIsICA0MywgIDMyLAoKfTsK