Lyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NDoKICoKICogVklNIC0gVmkgSU1wcm92ZWQJYnkgQnJhbSBNb29sZW5hYXIKICoKICogRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCiAqIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgogKiBTZWUgUkVBRE1FLnR4dCBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIFZpbSBzb3VyY2UgY29kZS4KICovCgojaW5jbHVkZSAidmltLmgiCgojaWZuZGVmIEhBTkdVTF9ERUZBVUxUX0tFWUJPQVJECiMgZGVmaW5lIEhBTkdVTF9ERUZBVUxUX0tFWUJPQVJEIDMKI2VuZGlmCgojZGVmaW5lIEFVVE9NQVRBX05FVwkJMAojZGVmaW5lIEFVVE9NQVRBX0NPUlJFQ1QJMQojZGVmaW5lIEFVVE9NQVRBX1NQRUNJQUwJMgojZGVmaW5lIEFVVE9NQVRBX0NPUlJFQ1RfTkVXCTMKI2RlZmluZSBBVVRPTUFUQV9FUlJPUgkJNAojZGVmaW5lIEFVVE9NQVRBX05VTEwJCTUKCiNkZWZpbmUgRl9GCTB4MQkvKiDDyry6IChpbml0aWFsIHNvdW5kKSAqLwojZGVmaW5lIEZfTQkweDIJLyogwd+8uiAobWVkaWFsIHZvd2VsKSAqLwojZGVmaW5lIEZfTAkweDQJLyogwb68uiAoZmluYWwgY29uc29uYW50KSAqLwojZGVmaW5lIEZfQQkweDgJLyogQVNDSUkgKi8KI2RlZmluZSBGX05VTEwgMQojZGVmaW5lIE1fTlVMTCAyCiNkZWZpbmUgTF9OVUxMIDEKCnN0YXRpYyBpbnQgaGFuZ3VsX2lucHV0X3N0YXRlID0gMDsKc3RhdGljIGludCBmPUZfTlVMTCwgbT1NX05VTEwsIGw9TF9OVUxMOwpzdGF0aWMgaW50IHNwPTA7CnN0YXRpYyBjaGFyX3Ugc3RhY2tbMjBdID0gezB9OwpzdGF0aWMgaW50IGxhc3RfbCA9IC0xLCBsYXN0X2xsID0gLTE7CnN0YXRpYyBpbnQgaGFuZ3VsX2tleWJvYXJkX3R5cGUgPSBIQU5HVUxfREVGQVVMVF9LRVlCT0FSRDsKCnN0YXRpYyB2b2lkIGNvbnZlcnRfa3NfdG9fMyBfX0FSR1MoKGNvbnN0IGNoYXJfdSAqc3JjLCBpbnQgKmZwLCBpbnQgKm1wLCBpbnQgKmxwKSk7CnN0YXRpYyBpbnQgY29udmVydF8zX3RvX2tzIF9fQVJHUygoaW50IGZ2LCBpbnQgbXYsIGludCBsdiwgY2hhcl91ICpkZXMpKTsKc3RhdGljIGludCBoYW5ndWxfYXV0b21hdGEyIF9fQVJHUygoY2hhcl91ICpidWYsIHVuc2lnbmVkIGludCAqYykpOwpzdGF0aWMgaW50IGhhbmd1bF9hdXRvbWF0YTMgX19BUkdTKChjaGFyX3UgKmJ1ZiwgdW5zaWduZWQgaW50ICpjKSk7CgojZGVmaW5lIHB1c2goeCkJIHtzdGFja1sgc3ArKyBdID0gKih4KTsgc3RhY2tbc3ArK10gPSAqKCh4KSsxKTt9CiNkZWZpbmUgcG9wKHgpCSB7KigoeCkgKyAxKSA9IHN0YWNrWy0tc3BdOyAqKHgpID0gc3RhY2tbLS1zcF07fQojZGVmaW5lIHF1ZXJ5KHgpIHsqKCh4KSArIDEpID0gc3RhY2tbc3AgLSAxXTsgKih4KSA9IHN0YWNrW3NwIC0gMl07fQoKI2RlZmluZSBjb252ZXJ0XzNfdG9fY29kZSBjb252ZXJ0XzNfdG9fa3MKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKiAzILn6vcTA2sbHwLsgwKfH0SC358a+ICAoUm91dGluZXMgZm9yIDMgYnVsc2lrIGtleWJvYXJkKSAqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogMyC5+r3Ev6G8rSDA2sbHILqvyK8gKDMgYnVsc2lrIGtleWJvYXJkIGNvbnZlcnNpb24pICovCgpzdGF0aWMgY2hhcl91IHZhbHVlX3RhYmxlX2Zvcl8zW10gPQp7CiAgICAyNCAgLCAnIicgLCAnIycgLCAnJCcgLCAnJScgLCAnJicgLAkvKiAhICIgIyAkICUgJiAqLwogICAgMTggICwgJygnICwgJyknICwgJyonICwgJysnICwgJywnICwJLyogJyAoICkgKiArICwgKi8KICAgICctJyAsICcuJyAsIDEzICAsIDE3ICAsIDI5ICAsIDIyICAsCS8qIC0gLiAvIDAgMSAyICovCiAgICAxOSAgLCAxOSAgLCAyNiAgLCA1ICAgLCAxMiAgLCAyOCAgLAkvKiAzIDQgNSA2IDcgOCAqLwogICAgMjAgICwgJzonICwgOSAgICwgJzInICwgJz0nICwgJzMnICwJLyogOSA6IDsgPCA9ID4gKi8KICAgICc/JyAsICdAJyAsIDggICAsICchJyAsIDExICAsIDEwICAsCS8qID8gQCBBIEIgQyBEICovCiAgICAyNiAgLCAzICAgLCAnLycgLCAzOSAgLCAnOCcgLCAnNCcgLAkvKiBFIEYgRyBIIEkgSiAqLwogICAgJzUnICwgJzYnICwgJzEnICwgJzAnICwgJzknICwgJz4nICwJLyogSyBMIE0gTiBPIFAgKi8KICAgIDI4ICAsIDYgICAsIDcgICAsICc7JyAsICc3JyAsIDE2ICAsCS8qIFEgUiBTIFQgVSBWICovCiAgICAyNyAgLCAyMCAgLCAnPCcgLCAyNSAgLCAnWycgLCA5MiAgLAkvKiBXIFggWSBaIFsgXCAqLwogICAgJ10nICwgJ14nICwgJ18nICwgJ2AnICwgMjMgICwgMjAgICwJLyogXSBeIF8gYCBhIGIgKi8KICAgIDEwICAsIDI5ICAsIDExICAsIDMgICAsIDI3ICAsIDQgICAsCS8qIGMgZCBlIGYgZyBoICovCiAgICA4ICAgLCAxMyAgLCAyICAgLCAxNCAgLCAyMCAgLCAxMSAgLAkvKiBpIGogayBsIG0gbiAqLwogICAgMTYgICwgMTkgICwgMjEgICwgNCAgICwgNSAgICwgNyAgICwJLyogbyBwIHEgciBzIHQgKi8KICAgIDUgICAsIDEzICAsIDkgICAsIDIgICAsIDcgICAsIDE3ICAsCS8qIHUgdiB3IHggeSB6ICovCn07CgpzdGF0aWMgc2hvcnRfdSBraW5kX3RhYmxlX2Zvcl8zW10gPQp7CiAgICBGX0wsIEZfQSwgRl9BLCBGX0EsIEZfQSwgRl9BLAkvKiAhICIgIyAkICUgJiAqLwogICAgRl9GLCBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfQSwJLyogJyAoICkgKiArICwgKi8KICAgIEZfQSwgRl9BLCBGX00sIEZfRiwgRl9MLCBGX0wsCS8qIC0gLiAvIDAgMSAyICovCiAgICBGX0wsIEZfTSwgRl9NLCBGX00sIEZfTSwgRl9NLAkvKiAzIDQgNSA2IDcgOCAqLwogICAgRl9NLCBGX0EsIEZfRiwgRl9BLCBGX0EsIEZfQSwJLyogOSA6IDsgPCA9ID4gKi8KICAgIEZfQSwgRl9BLCBGX0wsIEZfQSwgRl9MLCBGX0wsCS8qID8gQCBBIEIgQyBEICovCiAgICBGX0wsIEZfTCwgRl9BLCBGX0EsIEZfQSwgRl9BLAkvKiBFIEYgRyBIIEkgSiAqLwogICAgRl9BLCBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfQSwJLyogSyBMIE0gTiBPIFAgKi8KICAgIEZfTCwgRl9NLCBGX0wsIEZfQSwgRl9BLCBGX0wsCS8qIFEgUiBTIFQgVSBWICovCiAgICBGX0wsIEZfTCwgRl9BLCBGX0wsIEZfQSwgRl9BLAkvKiBXIFggWSBaIFsgXCAqLwogICAgRl9BLCBGX0EsIEZfQSwgRl9BLCBGX0wsIEZfTSwJLyogXSBeIF8gYCBhIGIgKi8KICAgIEZfTSwgRl9NLCBGX00sIEZfTSwgRl9NLCBGX0YsCS8qIGMgZCBlIGYgZyBoICovCiAgICBGX0YsIEZfRiwgRl9GLCBGX0YsIEZfRiwgRl9GLAkvKiBpIGogayBsIG0gbiAqLwogICAgRl9GLCBGX0YsIEZfTCwgRl9NLCBGX0wsIEZfTSwJLyogbyBwIHEgciBzIHQgKi8KICAgIEZfRiwgRl9NLCBGX0wsIEZfTCwgRl9GLCBGX0wsCS8qIHUgdiB3IHggeSB6ICovCn07CgovKiAzILn6vcS/obytICjH9sDnw8q8uiwgwNS3wr+1ua4pIC0+ILq5x9XDyry6IMOzuK4KICogMyBidWxzaWs6IChjdXJyZW50IGluaXRpYWwgc291bmQsIGlucHV0IGVuZ2xpc2gpIC0+IGNvbXBvdW5kIGluaXRpYWwgc291bmQuCiAqLwoKICAgIHN0YXRpYyBpbnQKY29tZmNvbjModiwgYykKICAgIGludAl2OwogICAgaW50IGM7CnsKICAgIGlmICh2ID09IDIgJiYgYyA9PSAyKQoJcmV0dXJuIDM7CiAgICBpZiAodiA9PSA1ICYmIGMgPT0gNSkKCXJldHVybiA2OwogICAgaWYgKHYgPT0gOSAmJiBjID09IDkpCglyZXR1cm4gMTA7CiAgICBpZiAodiA9PSAxMSAmJiBjID09IDExKQoJcmV0dXJuIDEyOwogICAgaWYgKHYgPT0gMTQgJiYgYyA9PSAxNCkKCXJldHVybiAxNTsKICAgIHJldHVybiAwOwp9CgovKiAzILn6vcS/obytICjH9sDnuPDAvSwgwNS3wiC/tbmuKSAtPiC6ucfVILjwwL0gw7O4rgogKiAzIGJ1bHNpazogKGN1cnJlbnQgdm93ZWwsIGlucHV0IGVuZ2xpc2gpIC0+IGNvbXBvdW5kIHZvd2VsLgogKi8KCiAgICBzdGF0aWMgaW50CmNvbXZvdzModiwgYykKICAgIGludCB2OwogICAgaW50IGM7CnsKICAgIHN3aXRjaCAodikKICAgIHsKCWNhc2UgMTM6CQkJCQkvKiCkxyAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgMzoJCQkJCS8qIKTHpL8gKi8KCQkgICAgcmV0dXJuIDE0OwoJCWNhc2UgNDoJCQkJCS8qIKTHpMAgKi8KCQkgICAgcmV0dXJuIDE1OwoJCWNhc2UgMjk6CQkJCS8qIKTHpNMgKi8KCQkgICAgcmV0dXJuIDE4OwoJICAgIH0KCSAgICBicmVhazsKCgljYXNlIDIwOgkJCQkJLyogpMwgKi8KCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlIDc6CQkJCQkvKiCkzKTDICovCgkJICAgIHJldHVybiAyMTsKCQljYXNlIDEwOgkJCQkvKiCkzKTEICovCgkJICAgIHJldHVybiAyMjsKCQljYXNlIDI5OgkJCQkvKiCkzKTTICovCgkJICAgIHJldHVybiAyMzsKCSAgICB9CgkgICAgYnJlYWs7CgoJICAgIC8qIDMgufq9xCDA2sbHwLogpNGk0yCwoSDA1sC4uce3ziAuLi4gKi8KICAgIH0KICAgIHJldHVybiAwOwp9CgovKiAzILn6vcS/obytICjH9sDnILnexKcsIL+1ua7A2iDA1LfCKSAtPiC53sSnCiAqIDMgYnVsc2lrOiAoY3VycmVudCBwcm9wKD8pLCBpbnB1dCBlbmdsaXNoKSAtPiBwcm9wKD8pLgogKiBJIHdhbnQgdG8gc2F5LCB0aGUgJ3Byb3AnIGlzIHNpbWlsYXIgdG8gJ2ZpbmFsIGNvbnNvbmFudCcsIGJ1dCBub3Qgdm93ZWwuCiAqIChJIGNhbm5vdCBmaW5kIHRoZSByZWFsIGVuZ2xpc2ggZnJvbSBteSBkaWN0aW9uYXJ5LiBTb3JyeSEpCiAqIFZJTTogViA9IGluaXRpYWwgc291bmQsIEkgPSBtZWRpYWwgdm93ZWwsIE0gPSBmaW5hbCBjb25zb25hbnQuCiAqLwoKICAgIHN0YXRpYyBpbnQKY29tY29uMyhrLCBjKQogICAgaW50IGs7CiAgICBpbnQgYzsKewogICAgc3dpdGNoIChrKQogICAgewoJY2FzZSAyOgkJCQkJCS8qIKShICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAyOgoJCSAgICByZXR1cm4gMzsJCQkJLyogpKGkoSAqLwoJCWNhc2UgMjE6CgkJICAgIHJldHVybiA0OwkJCQkvKiCkoaS1ICovCgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgNToJCQkJCQkvKiCkpCAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgMjQ6CQkJCS8qIKSkpLggKi8KCQkgICAgcmV0dXJuIDY7CgkJY2FzZSAyOToKCQkgICAgcmV0dXJuIDc7CQkJCS8qIKSkpL4gKi8KCSAgICB9CgkgICAgYnJlYWs7CgoJY2FzZSA5OgkJCQkJCS8qIKSpICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAyOgkJCQkJLyogpKmkoSAqLwoJCSAgICByZXR1cm4gMTA7CgkJY2FzZSAxNzoJCQkJLyogpKmksSAqLwoJCSAgICByZXR1cm4gMTE7CgkJY2FzZSAxOToJCQkJLyogpKmksiAqLwoJCSAgICByZXR1cm4gMTI7CgkJY2FzZSAyMToJCQkJLyogpKmktSAqLwoJCSAgICByZXR1cm4gMTM7CgkJY2FzZSAyNzoJCQkJLyogpKmkvCAqLwoJCSAgICByZXR1cm4gMTQ7CgkJY2FzZSAyODoJCQkJLyogpKmkvSAqLwoJCSAgICByZXR1cm4gMTU7CgkJY2FzZSAyOToJCQkJLyogpKmkviAqLwoJCSAgICByZXR1cm4gMTY7CgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgMTk6CgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAyMToJCQkJLyogpLKktSAqLwoJCSAgICByZXR1cm4gMjA7CgkgICAgfQoJICAgIGJyZWFrOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqIDIgufq9xMDaxsfAuyDAp8fRILfnxr4gIChSb3V0aW5lcyBmb3IgMiBidWxzaWsga2V5Ym9hcmQpICoqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgc3RhdGljIGludApraW5kX3RhYmxlX2Zvcl8yKGMpCiAgICBpbnQgYzsKewogICAgc3RhdGljIGNoYXJfdSB0YWJsZVtdID0KICAgIHsKICAgICAvKiBhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsLCBtLCBuLCBvLCBwLCBxLCByLCBzICovCgkwLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAwLAogICAgIC8qIHQsIHUsIHYsIHcsIHgsIHksIHogKi8KCTAsIDEsIDAsIDAsIDAsIDEsIDAKICAgIH07CgogICAgaWYgKGMgPD0gJ1onKQoJYyAtPSAnQSc7CiAgICBlbHNlCgljIC09ICdhJzsKCiAgICByZXR1cm4gdGFibGVbY107Cn0KCi8qIDIgufq9xL+hvK0gv7W5rsDaIC0+IMG2x9XH/CDDyry6ILqvyK8KICogKDIgYnVsc2lrOiBjb252ZXJzaW9uIGVuZ2xpc2ggY2hhci4gdG8gaW5pdGlhbCBzb3VuZCBvZiBjb21wb3VuZCB0eXBlKQogKiCw4bD6OiDDyry6wMwgvsa0z7jpIDAgKElmIGl0IGlzIG5vdCBpbml0aWFsIHNvdW5kLCByZXR1cm4gMCkuCiAqLwogICAgc3RhdGljIGludApmY29uKGMpCiAgICBpbnQgYzsKewogICAgc3RhdGljIGNoYXJfdSB0YWJsZVtdID0KICAgIHsKCS8qRSAqLyA2ICwgLypGICovIDAgLCAvKkcgKi8gMCAsIC8qSCAqLyAwICwgLypJICovIDAgLCAvKkogKi8gMCAsIC8qSyAqLyAwICwKCS8qTCAqLyAwICwgLypNICovIDAgLCAvKk4gKi8gMCAsIC8qTyAqLyAwICwgLypQICovIDAgLCAvKlEgKi8gMTAsIC8qUiAqLyAzICwKCS8qUyAqLyAwICwgLypUICovIDEyLCAvKlUgKi8gMCAsIC8qViAqLyAwICwgLypXICovIDE1LCAvKlggKi8gMCAsIC8qWSAqLyAwICwKCS8qWiAqLyAwICwgLypbICovIDAgLCAvKlwgKi8gMCAsIC8qXSAqLyAwICwgLypeICovIDAgLCAvKl8gKi8gMCAsIC8qYCAqLyAwICwKCS8qYSAqLyA4ICwgLypiICovIDAgLCAvKmMgKi8gMTYsIC8qZCAqLyAxMywgLyplICovIDUgLCAvKmYgKi8gNyAsIC8qZyAqLyAyMCwKCS8qaCAqLyAwICwgLyppICovIDAgLCAvKmogKi8gMCAsIC8qayAqLyAwICwgLypsICovIDAgLCAvKm0gKi8gMCAsIC8qbiAqLyAwICwKCS8qbyAqLyAwICwgLypwICovIDAgLCAvKnEgKi8gOSAsIC8qciAqLyAyICwgLypzICovIDQgLCAvKnQgKi8gMTEsIC8qdSAqLyAwICwKCS8qdiAqLyAxOSwgLyp3ICovIDE0LCAvKnggKi8gMTgsIC8qeSAqLyAwICwgLyp6ICovIDE3CiAgICB9OwoKICAgIGlmIChjIDwgJ0UnIHx8IGMgPiAneicpCglyZXR1cm4gMDsKICAgIHJldHVybiB0YWJsZVtjIC0gJ0UnXTsKfQoKLyogMiC5+r3Ev6G8rSC/tbmuwNogLT4gwd+8uiC6r8ivCiAqICgyIGJ1bHNpazogY29udmVyc2lvbiBlbmdsaXNoIGNoYXIuIHRvIG1lZGlhbCB2b3dlbCkKICogsOGw+jogwd+8usDMIL7GtM+46SAwIChJZiBpdCBpcyBub3QgbWVkaWFsIHZvd2VsLCByZXR1cm4gMCkuCiAqLwogICAgc3RhdGljIGludAp2b3coYykKICAgIGludCBjOwp7CiAgICBzdGF0aWMgY2hhcl91IHRhYmxlW10gPQogICAgewoJLypPICovIDYgLCAvKlAgKi8gMTIsIC8qUSAqLyAwICwgLypSICovIDAgLCAvKlMgKi8gMCAsIC8qVCAqLyAwICwgLypVICovIDAgLAoJLypWICovIDAgLCAvKlcgKi8gMCAsIC8qWCAqLyAwICwgLypZICovIDAgLCAvKlogKi8gMCAsIC8qWyAqLyAwICwgLypcICovIDAgLAoJLypdICovIDAgLCAvKl4gKi8gMCAsIC8qXyAqLyAwICwgLypgICovIDAgLCAvKmEgKi8gMCAsIC8qYiAqLyAyNiwgLypjICovIDAgLAoJLypkICovIDAgLCAvKmUgKi8gMCAsIC8qZiAqLyAwICwgLypnICovIDAgLCAvKmggKi8gMTMsIC8qaSAqLyA1ICwgLypqICovIDcgLAoJLyprICovIDMgLCAvKmwgKi8gMjksIC8qbSAqLyAyNywgLypuICovIDIwLCAvKm8gKi8gNCAsIC8qcCAqLyAxMCwgLypxICovIDAgLAoJLypyICovIDAgLCAvKnMgKi8gMCAsIC8qdCAqLyAwICwgLyp1ICovIDExLCAvKnYgKi8gMCAsIC8qdyAqLyAwICwgLyp4ICovIDAgLAoJLyp5ICovIDE5fTsKCiAgICBpZiAoYyA8ICdPJyB8fCBjID4gJ3knKQoJcmV0dXJuIDA7CiAgICByZXR1cm4gdGFibGVbYyAtICdPJ107Cn0KCi8qIDK5+r3Ev6G8rSC/tbmuwNogLT4gud7EpyC6r8ivCiAqICgyIGJ1bHNpazogY29udmVyc2lvbiBlbmdsaXNoIGNoYXIuIHRvIHByb3ApCiAqILDhsPo6ILnexKfAzCC+xrTPuOkgMCAoSWYgbm90IHByb3AsIHJldHVybiAwKQogKi8KICAgIHN0YXRpYyBpbnQKbGNvbihjKQogICAgaW50IGM7CnsKICAgIHN0YXRpYyBjaGFyX3UgdGFibGVbXSA9CiAgICB7CgkvKlIgKi8gMyAsIC8qUyAqLyAwICwgLypUICovIDIyLCAvKlUgKi8gMCAsIC8qViAqLyAwICwgLypXICovIDAgLCAvKlggKi8gMCAsCgkvKlkgKi8gMCAsIC8qWiAqLyAwICwgLypbICovIDAgLCAvKlwgKi8gMCAsIC8qXSAqLyAwICwgLypeICovIDAgLCAvKl8gKi8gMCAsCgkvKmAgKi8gMCAsIC8qYSAqLyAxNywgLypiICovIDAgLCAvKmMgKi8gMjUsIC8qZCAqLyAyMywgLyplICovIDggLCAvKmYgKi8gOSAsCgkvKmcgKi8gMjksIC8qaCAqLyAwICwgLyppICovIDAgLCAvKmogKi8gMCAsIC8qayAqLyAwICwgLypsICovIDAgLCAvKm0gKi8gMCAsCgkvKm4gKi8gMCAsIC8qbyAqLyAwICwgLypwICovIDAgLCAvKnEgKi8gMTksIC8qciAqLyAyICwgLypzICovIDUgLCAvKnQgKi8gMjEsCgkvKnUgKi8gMCAsIC8qdiAqLyAyOCwgLyp3ICovIDI0LCAvKnggKi8gMjcsIC8qeSAqLyAwICwgLyp6ICovIDI2CiAgICB9OwoKICAgIGlmIChjIDwgJ1InIHx8IGMgPiAneicpCglyZXR1cm4gMDsKICAgIHJldHVybiB0YWJsZVtjIC0gJ1InXTsKfQoKLyogMiC5+r3Ev6G8rSAox/bA5yC53sSnLCC/tbmuwNogwNS3wikgLT4gud7EpyC6r8ivCiAqICgyIGJ1bHNpazogY29udmVyc2lvbiAoY3Vyci4gcHJvcCwgaW5wdXQgZW5nbGlzaCkgdG8gcHJvcCkKICovCgogICAgc3RhdGljIGludApjb21jb24yKGssIGMpCiAgICBpbnQgazsKICAgIGludCBjOwp7CiAgICBzd2l0Y2ggKGspCiAgICB7CgljYXNlIDI6CQkJCQkvKiCkoSAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ3QnOgoJCSAgICByZXR1cm4gNDsJCQkvKiCkoaS1ICovCgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgNToJCQkJCS8qIKSkICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAndyc6CQkJLyogpKSkuCAqLwoJCSAgICByZXR1cm4gNjsKCQljYXNlICdnJzoJCQkvKiCkpKS+ICovCgkJICAgIHJldHVybiA3OwoJICAgIH0KCSAgICBicmVhazsKCgljYXNlIDk6CQkJCQkvKiCkqSAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ3InOgkJCS8qIKSppKEgKi8KCQkgICAgcmV0dXJuIDEwOwoJCWNhc2UgJ2EnOgkJCS8qIKSppLEgKi8KCQkgICAgcmV0dXJuIDExOwoJCWNhc2UgJ3EnOgkJCS8qIKSppLIgKi8KCQkgICAgcmV0dXJuIDEyOwoJCWNhc2UgJ3QnOgkJCS8qIKSppLUgKi8KCQkgICAgcmV0dXJuIDEzOwoJCWNhc2UgJ3gnOgkJCS8qIKSppLwgKi8KCQkgICAgcmV0dXJuIDE0OwoJCWNhc2UgJ3YnOgkJCS8qIKSppL0gKi8KCQkgICAgcmV0dXJuIDE1OwoJCWNhc2UgJ2cnOgkJCS8qIKSppL4gKi8KCQkgICAgcmV0dXJuIDE2OwoJICAgIH0KCSAgICBicmVhazsKCgljYXNlIDE5OgkJCQkvKiCksiAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ3QnOgkJCS8qIKSypLUgKi8KCQkgICAgcmV0dXJuIDIwOwoJICAgIH0KCSAgICBicmVhazsKICAgIH0KICAgIHJldHVybiAwOwp9CgovKiAyufq9xL+hvK0gKMf2wOcgwd+8uiwgv7W5riDA1LfCKSAtPiDB37y6ILqvyK8KICogKDIgYnVsc2lrOiBjb252ZXJzaW9uIChjdXJyLiBtZWRpYWwgdm93ZWwsIGlucHV0IGVuZ2xpc2gpIHRvIG1lZGlhbAogKiB2b3dlbCkKICovCgogICAgc3RhdGljIGludApjb212b3cyKHYsIGMpCiAgICBpbnQgdjsKICAgIGludCBjOwp7CiAgICBzd2l0Y2ggKHYpCiAgICB7CgljYXNlIDEzOgkJCQkJLyogpMcgKi8KCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlICdrJzoJCQkJLyogpMekvyAqLwoJCSAgICByZXR1cm4gMTQ7CgkJY2FzZSAnbyc6CQkJCS8qIKTHpMAgKi8KCQkgICAgcmV0dXJuIDE1OwoJCWNhc2UgJ2wnOgkJCQkvKiCkx6TTICovCgkJICAgIHJldHVybiAxODsKCSAgICB9CgkgICAgYnJlYWs7CgoJY2FzZSAyMDoJCQkJCS8qIKTMICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAnaic6CQkJCS8qIKTMpMMgKi8KCQkgICAgcmV0dXJuIDIxOwoJCWNhc2UgJ3AnOgkJCQkvKiCkzKTEICovCgkJICAgIHJldHVybiAyMjsKCQljYXNlICdsJzoJCQkJLyogpMyk0yAqLwoJCSAgICByZXR1cm4gMjM7CgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgMjc6CQkJCQkvKiCk0SAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ2wnOgkJCQkvKiCk0aTTICovCgkJICAgIHJldHVybiAyODsKCSAgICB9CgkgICAgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKICAgIGludApoYW5ndWxfaW5wdXRfc3RhdGVfZ2V0KCkKewogICAgcmV0dXJuIGhhbmd1bF9pbnB1dF9zdGF0ZTsKfQoKICAgIHZvaWQKaGFuZ3VsX2lucHV0X3N0YXRlX3NldChzdGF0ZSkKICAgIGludCBzdGF0ZTsKewogICAgaGFuZ3VsX2lucHV0X3N0YXRlID0gc3RhdGU7CiAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKfQoKICAgIGludAppbV9nZXRfc3RhdHVzKCkKewogICAgcmV0dXJuIGhhbmd1bF9pbnB1dF9zdGF0ZV9nZXQoKTsKfQoKICAgIHZvaWQKaGFuZ3VsX2lucHV0X3N0YXRlX3RvZ2dsZSgpCnsKICAgIGlmIChoYW5ndWxfaW5wdXRfc3RhdGVfZ2V0KCkpCiAgICB7CgloYW5ndWxfaW5wdXRfc3RhdGVfc2V0KDApOwoJaWYgKGNvbXBvc2luZ19oYW5ndWwpCgl7CgkgICAgcHVzaF9yYXdfa2V5KGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCAyKTsKCSAgICBjb21wb3NpbmdfaGFuZ3VsID0gMDsKCX0KICAgIH0KICAgIGVsc2UKCWhhbmd1bF9pbnB1dF9zdGF0ZV9zZXQoMSk7CgogICAgaWYgKHNob3dtb2RlKCkpCiAgICB7CglzZXRjdXJzb3IoKTsKCW91dF9mbHVzaCgpOwogICAgfQoKICAgIGd1aV91cGRhdGVfY3Vyc29yKFRSVUUsIEZBTFNFKTsKfQoKICAgIHN0YXRpYyBpbnQKaGFuZ3VsX2F1dG9tYXRhMihidWYsIGMpCiAgICBjaGFyX3UgICpidWY7CiAgICBpbnRfdSAgICpjOwp7CiAgICBpbnQgdCx0MjsKCiAgICBpZiAoKmMgPT0gQlMpCiAgICB7CglpZiAoc3AgPT0gMCkKCSAgICByZXR1cm4gQVVUT01BVEFfU1BFQ0lBTDsKCWVsc2UgaWYgKHNwIDwgNCkKCXsKCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCSAgICByZXR1cm4gQVVUT01BVEFfTlVMTDsKCX0KCXBvcChidWYpOwoJcXVlcnkoYnVmKTsKCWNvbnZlcnRfa3NfdG9fMyhidWYsICZmLCAmbSwgJmwpOwoJbGFzdF9sID0gbGFzdF9sbDsKCWxhc3RfbGwgPSAtMTsKCXJldHVybiBBVVRPTUFUQV9DT1JSRUNUOwogICAgfQogICAgaWYgKCghKCpjID49ICdBJyAmJiAqYyA8PSAnWicpKSAmJiAoISgqYyA+PSAnYScgJiYgKmMgPD0gJ3onKSkpCiAgICB7CgloYW5ndWxfaW5wdXRfY2xlYXIoKTsKCXJldHVybiBBVVRPTUFUQV9TUEVDSUFMOwogICAgfQogICAgdCA9ICpjOwogICAgc3dpdGNoIChraW5kX3RhYmxlX2Zvcl8yKHQpKQogICAgewoJY2FzZSAwOiAvKiDA2sC9IChjb25zb25hbnQpICovCgkgICAgaWYgKGYgPT0gRl9OVUxMKQoJICAgIHsKCQlpZiAobSAhPSBNX05VTEwpCgkJICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwoJCWYgPSBmY29uKHQpOwoJCWNvbnZlcnRfM190b19jb2RlKGYsIE1fTlVMTCwgTF9OVUxMLCBidWYpOwoJCXB1c2goYnVmKTsKCQlsYXN0X2xsID0gbGFzdF9sID0gLTE7CgkJcmV0dXJuIEFVVE9NQVRBX05FVzsKCSAgICB9CgkgICAgaWYgKG0gPT0gTV9OVUxMKQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCSAgICBpZiAobCA9PSBMX05VTEwpCgkgICAgewoJCXQyID0gbGNvbih0KTsKCQlpZiAoIXQyKSAgICAvKiC53sSnwLi3ziDA+8fVx8/B9r7KtNkgKGNhbm5vdCB1c2UgaXQgYXMgYSBwcm9wKSAqLwoJCXsKCQkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQkgICAgZiA9IGZjb24odCk7CgkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIG0sIGwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX05FVzsKCQl9CgkJaWYgKDIgPT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgdDIsIGJ1ZikpCgkJewoJCSAgICBsYXN0X2xsID0gLTE7CgkJICAgIGxhc3RfbCA9IHQ7CgkJICAgIGwgPSB0MjsKCQkgICAgcHVzaChidWYpOwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkJZWxzZQkvKiC53sSnwLi3ziC+srfBx8+/tMC4s6ogY29kZb+hIL74tMIgsdvA2sDMtNkgKi8KCQl7CS8qIGNhbm5vdCBmaW5kIHN1Y2ggYSBwcm9wIGluIHRoZSBjb2RlIHRhYmxlICovCgkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkJICAgIGYgPSBmY29uKHQpOwoJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBsLCBidWYpOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIHJldHVybiBBVVRPTUFUQV9ORVc7CgkJfQoJICAgIH0KCSAgICAvKiDDyiDB3yDBvry6wMwguPC1ziCwrsPfvu7BriDA1rTZCgkgICAgICogSSBoYXZlIGFsbCB0aGUgJ2luaXRpYWwgc291bmQnIGFuZCAnbWVkaWFsIHZvd2VsJyBhbmQgJ2ZpbmFsCgkgICAgICogY29uc29uYW50Jy4KCSAgICAgKi8KCSAgICB0MiA9IGNvbWNvbjIobCwgdCk7CgkgICAgaWYgKHQyKQoJICAgIHsKCQlpZiAoMiA9PSBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCB0MiwgYnVmKSkKCQl7CgkJICAgIGwgPSB0MjsKCQkgICAgbGFzdF9sbCA9IGxhc3RfbDsKCQkgICAgbGFzdF9sID0gdDsKCQkgICAgcHVzaChidWYpOwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkgICAgfQoJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCSAgICBmID0gZmNvbih0KTsKCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBsLCBidWYpOwoJICAgIHB1c2goYnVmKTsKCSAgICByZXR1cm4gQVVUT01BVEFfTkVXOwoKCWNhc2UgMToKCSAgICBpZiAoZiA9PSBGX05VTEwpCgkgICAgewoJCWhhbmd1bF9pbnB1dF9jbGVhcigpOwoJCW0gPSB2b3codCk7CgkJY29udmVydF8zX3RvX2NvZGUgKGYsIG0sIExfTlVMTCwgYnVmKTsKCQlwdXNoIChidWYpOwoJCWxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQlyZXR1cm4gQVVUT01BVEFfTkVXOwoJICAgIH0KCSAgICBpZiAobSA9PSBNX05VTEwpCgkgICAgewoJCW0gPSB2b3codCk7CgkJaWYgKDIgPT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgTF9OVUxMLCBidWYpKQoJCXsKCQkgICAgbGFzdF9sbCA9IGxhc3RfbCA9IC0xOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOwoJCX0KCQltID0gTV9OVUxMOwoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCSAgICB9CgkgICAgaWYgKGwgPT0gTF9OVUxMKQoJICAgIHsKCQl0MiA9IGNvbXZvdzIobSwgdCk7CgkJaWYgKHQyKQoJCXsKCQkgICAgaWYgKDIgIT0gY29udmVydF8zX3RvX2NvZGUoZiwgdDIsIExfTlVMTCwgYnVmKSkKCQkJcmV0dXJuIEFVVE9NQVRBX0VSUk9SOwoKCQkgICAgbSA9IHQyOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCSAgICB9CgkgICAgcG9wKGJ1Zik7CgkgICAgcG9wKGJ1Zik7CgkgICAgc3AgPSAwOwoJICAgIGlmIChsYXN0X2wgPT0gLTEpCgkgICAgewoJCS8qIMC9Li4uIMDMsNQgx8q/5MfPs6o/PyAoSG1tLi4uIElzIGl0IG5lZWRlZD8pICovCgkJY29udmVydF9rc190b18zKGJ1ZiwgJmYsICZtLCAmbCk7CgkgICAgfQoJICAgIGVsc2UKCSAgICB7CgkJY2hhcl91IHRtcFszXTsKCQlmID0gZmNvbihsYXN0X2wpOwoJCWNvbnZlcnRfM190b19jb2RlIChmLCBNX05VTEwsIExfTlVMTCwgdG1wKTsKCQlwdXNoICh0bXApOwoJICAgIH0KCSAgICBtID0gdm93KHQpOwoJICAgIGwgPSBMX05VTEw7CgkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgbSwgbCwgYnVmICsgMik7CgkgICAgcHVzaChidWYgKyAyKTsKCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVF9ORVc7CgoJZGVmYXVsdDoKCSAgICBFTVNHKF8oIkUyNTY6IEhhbmd1bCBhdXRvbWF0YSBFUlJPUiIpKTsKCSAgICBicmVhazsKICAgIH0KICAgIHJldHVybiBBVVRPTUFUQV9FUlJPUjsgLyogUnJFZUFhTGxMbFl5IEVlUnJSck9vUnIgKi8KfQoKICAgIHN0YXRpYyBpbnQKaGFuZ3VsX2F1dG9tYXRhMyhidWYsIGMpCiAgICBjaGFyX3UgICpidWY7CiAgICBpbnRfdSAgICpjOwp7CiAgICBpbnQgdCwgdDI7CgogICAgaWYgKCpjID49ICchJyAmJiAqYyA8PSAneicpCiAgICB7CgkqYyAtPSAnISc7Cgl0ID0gdmFsdWVfdGFibGVfZm9yXzNbKmNdOwoJc3dpdGNoIChraW5kX3RhYmxlX2Zvcl8zWypjXSkKCXsKCSAgICBjYXNlIEZfRjogLyogw8q8urmuwNogKGNoYXIuIG9mIGFuIGluaXRpYWwgc291bmQpICovCgkJaWYgKG0gIT0gTV9OVUxMIHx8IHNwID09IDApCgkJewoJCSAgICAvKiDDyry6wMwguvG++rDFs6ogtNnAvSCx28DaILjwwLix4iC9w8DbCgkJICAgICAqIEVtcHR5ICdpbml0aWFsIHNvdW5kJywgc28gc3RhcnRpbmcgYXV0b21hdGEuCgkJICAgICAqLwoJCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCQkgICAgZiA9IHQ7CgkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIE1fTlVMTCwgTF9OVUxMLCBidWYpOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIHJldHVybiBBVVRPTUFUQV9ORVc7CgkJfQoJCWlmICgodDIgPSBjb21mY29uMyhmLHQpKSAhPSAwKQkvKiC6ucDawL0gKGRvdWJsZT8gY29uc29uYW50KSAqLwoJCXsKCQkgICAgZj10MjsKCQkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgTV9OVUxMLCBMX05VTEwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX006CS8qILjwwL0gKHZvd2VsKSAqLwoJCWlmIChtID09IE1fTlVMTCkKCQl7CgkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIHQsIExfTlVMTCxidWYpKQoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgoJCSAgICBtID0gdDsKCQkgICAgcHVzaChidWYpOwoJCSAgICBpZiAoZiA9PSBGX05VTEwpCgkJCXJldHVybiBBVVRPTUFUQV9ORVc7CgkJICAgIGVsc2UKCQkJcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCWlmICgodDIgPSBjb212b3czKG0sdCkpKSAgICAvKiC6ubjwwL0gKGEgZGlwaHRob25nKSAqLwoJCXsKCQkgICAgbSA9IHQyOwoJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBMX05VTEwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX0w6CS8qILnexKcgKHByb3A/KSAqLwoJCWlmIChtID09IE1fTlVMTCkKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0VSUk9SOyAvKiDB37y6vvi0wiDBvry6ICovCgkJaWYgKGwgPT0gTF9OVUxMKQoJCXsKCQkgICAgaWYgKDIgIT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgdCwgYnVmKSkKCQkgICAgewoJCQlsID0gTF9OVUxMOwoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgkJICAgIH0KCQkgICAgcHVzaChidWYpOwoJCSAgICBsID0gdDsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCWlmICgodDIgPSBjb21jb24zKGwsdCkpICE9IDApCS8qILq5ILnexKcgPz8gKGRvdWJsZSBwcm9wPykgKi8KCQl7CgkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIG0sIHQyLCBidWYpKQoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIGwgPSB0MjsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX0E6IC8qIMavvPa5rsDas6ogvP3A2iAoc3BlY2lhbCBjaGFyLiBvciBudW1iZXIpICovCgkJaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkJKmMgPSB0OwoJCXJldHVybiBBVVRPTUFUQV9TUEVDSUFMOwoJfQogICAgfQogICAgaWYgKCpjID09IEJTKQogICAgewoJaWYgKHNwID49IDQpCgl7CgkgICAgcG9wKGJ1Zik7CgkgICAgcG9wKGJ1Zik7CgkgICAgY29udmVydF9rc190b18zKGJ1ZiwgJmYsICZtLCAmbCk7CgkgICAgcHVzaChidWYpOwoJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOwoJfQoJZWxzZSBpZiAoc3AgPT0gMCkKCXsKCSAgICByZXR1cm4gQVVUT01BVEFfU1BFQ0lBTDsKCX0KCWVsc2UKCXsKCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCSAgICByZXR1cm4gQVVUT01BVEFfTlVMTDsKCX0KICAgIH0KICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwogICAgcmV0dXJuIEFVVE9NQVRBX1NQRUNJQUw7Cn0KCiAgICB2b2lkCmhhbmd1bF9rZXlib2FyZF9zZXQoKQp7CiAgICBpbnQJICAgIGtleWJvYXJkOwogICAgY2hhciAgICAqczsKCiAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCiAgICBpZiAoKHMgPSBnZXRlbnYoIlZJTV9LRVlCT0FSRCIpKSA9PSBOVUxMKQoJcyA9IGdldGVudigiSEFOR1VMX0tFWUJPQVJEX1RZUEUiKTsKCiAgICBpZiAocykKICAgIHsKCWlmICgqcyA9PSAnMicpCgkgICAga2V5Ym9hcmQgPSAyOwoJZWxzZQoJICAgIGtleWJvYXJkID0gMzsKCWhhbmd1bF9rZXlib2FyZF90eXBlID0ga2V5Ym9hcmQ7CiAgICB9Cn0KCiAgICBpbnQKaGFuZ3VsX2lucHV0X3Byb2Nlc3MocywgbGVuKQogICAgY2hhcl91ICAqczsKICAgIGludAkgICAgbGVuOwp7CiAgICBpbnQgbjsKICAgIHVuc2lnbmVkIGludCBjOwogICAgY2hhcl91IGhhbmJ1ZlsyMF07CgogICAgaWYgKGxlbiA9PSAxKQoJLyogbm9ybWFsIGtleSBwcmVzcyAqLwoJYyA9ICpzOwogICAgZWxzZSBpZiAobGVuID09IDMgJiYgc1swXSA9PSBDU0kgJiYgc1sxXSA9PSAnaycgJiYgc1syXSA9PSAnYicpCiAgICB7CgkvKiBiYWNrc3BhY2UgKi8KCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJICAgIGMgPSBDdHJsX0g7CgllbHNlCgkgICAgcmV0dXJuIGxlbjsKICAgIH0KICAgIGVsc2UKICAgIHsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJICAgIHB1c2hfcmF3X2tleShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CgloYW5ndWxfaW5wdXRfY2xlYXIoKTsKCWNvbXBvc2luZ19oYW5ndWwgPSAwOwoJcmV0dXJuIGxlbjsKICAgIH0KCiAgICBpZiAoaGFuZ3VsX2tleWJvYXJkX3R5cGUgPT0gMikKCW4gPSBoYW5ndWxfYXV0b21hdGEyKGhhbmJ1ZiwgJmMpOwogICAgZWxzZQoJbiA9IGhhbmd1bF9hdXRvbWF0YTMoaGFuYnVmLCAmYyk7CgogICAgaWYgKG4gPT0gQVVUT01BVEFfQ09SUkVDVCkKICAgIHsKCVNUUk5DUFkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIGhhbmJ1ZiwgMik7CglndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CglyZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfTkVXKQogICAgewoJaWYgKGNvbXBvc2luZ19oYW5ndWwpCgkgICAgcHVzaF9yYXdfa2V5KGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCAyKTsKCVNUUk5DUFkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIGhhbmJ1ZiwgMik7Cgljb21wb3NpbmdfaGFuZ3VsID0gMTsKCWd1aV91cGRhdGVfY3Vyc29yKFRSVUUsIEZBTFNFKTsKCXJldHVybiAwOwogICAgfQogICAgZWxzZSBpZiAobiA9PSBBVVRPTUFUQV9DT1JSRUNUX05FVykKICAgIHsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJICAgIHB1c2hfcmF3X2tleShoYW5idWYsIDIpOwoJU1RSTkNQWShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgaGFuYnVmKzIsIDIpOwoJY29tcG9zaW5nX2hhbmd1bCA9IDE7CglndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CglyZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfTlVMTCkKICAgIHsKCWNvbXBvc2luZ19oYW5ndWwgPSAwOwoJZ3VpX3JlZHJhd19ibG9jayhndWkuY3Vyc29yX3JvdywgZ3VpLmN1cnNvcl9jb2wsCgkJCSBndWkuY3Vyc29yX3JvdywgZ3VpLmN1cnNvcl9jb2wgKyAxLAoJCQkgR1VJX01PTl9OT0NMRUFSKTsKCWd1aV91cGRhdGVfY3Vyc29yKFRSVUUsIEZBTFNFKTsKCXJldHVybiAwOwogICAgfQogICAgZWxzZSBpZiAobiA9PSBBVVRPTUFUQV9TUEVDSUFMKQogICAgewoJaWYgKGNvbXBvc2luZ19oYW5ndWwpCgl7CgkgICAgcHVzaF9yYXdfa2V5KGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCAyKTsKCSAgICBjb21wb3NpbmdfaGFuZ3VsID0gMDsKCX0KCSpzID0gYzsKCXJldHVybiAxOwogICAgfQogICAgZWxzZSBpZiAobiA9PSBBVVRPTUFUQV9FUlJPUikKICAgIHsKCXZpbV9iZWVwKEJPX0hBTkdVTCk7CglyZXR1cm4gMDsKICAgIH0KICAgIHJldHVybiBsZW47Cn0KCiAgICB2b2lkCmhhbmd1bF9pbnB1dF9jbGVhcigpCnsKICAgIHNwID0gMDsKICAgIGYgPSBGX05VTEw7CiAgICBtID0gTV9OVUxMOwogICAgbCA9IExfTlVMTDsKfQoKI2RlZmluZSBoYW5faW5kZXgoaCwgbCkJKCgoaCktMHhiMCkqKDB4ZmYtMHhhMSkrKChsKS0weGExKSkKCnN0YXRpYyBjb25zdCBjaGFyX3Uga3NfdGFibGUxW11bM10gPQp7CiAgICB7ICAyLCAgMywgIDF9LCB7ICAyLCAgMywgIDJ9LCB7ICAyLCAgMywgIDV9LCB7ICAyLCAgMywgIDh9LAogICAgeyAgMiwgIDMsICA5fSwgeyAgMiwgIDMsIDEwfSwgeyAgMiwgIDMsIDExfSwgeyAgMiwgIDMsIDE3fSwKICAgIHsgIDIsICAzLCAxOX0sIHsgIDIsICAzLCAyMH0sIHsgIDIsICAzLCAyMX0sIHsgIDIsICAzLCAyMn0sCiAgICB7ICAyLCAgMywgMjN9LCB7ICAyLCAgMywgMjR9LCB7ICAyLCAgMywgMjV9LCB7ICAyLCAgMywgMjd9LAogICAgeyAgMiwgIDMsIDI4fSwgeyAgMiwgIDMsIDI5fSwgeyAgMiwgIDQsICAxfSwgeyAgMiwgIDQsICAyfSwKICAgIHsgIDIsICA0LCAgNX0sIHsgIDIsICA0LCAgOX0sIHsgIDIsICA0LCAxN30sIHsgIDIsICA0LCAxOX0sCiAgICB7ICAyLCAgNCwgMjF9LCB7ICAyLCAgNCwgMjJ9LCB7ICAyLCAgNCwgMjN9LCB7ICAyLCAgNSwgIDF9LAogICAgeyAgMiwgIDUsICAyfSwgeyAgMiwgIDUsICA1fSwgeyAgMiwgIDUsICA5fSwgeyAgMiwgIDUsIDIxfSwKICAgIHsgIDIsICA1LCAyM30sIHsgIDIsICA2LCAgMX0sIHsgIDIsICA2LCAgNX0sIHsgIDIsICA2LCAgOX0sCiAgICB7ICAyLCAgNywgIDF9LCB7ICAyLCAgNywgIDJ9LCB7ICAyLCAgNywgIDV9LCB7ICAyLCAgNywgIDh9LAogICAgeyAgMiwgIDcsICA5fSwgeyAgMiwgIDcsIDExfSwgeyAgMiwgIDcsIDE3fSwgeyAgMiwgIDcsIDE5fSwKICAgIHsgIDIsICA3LCAyMX0sIHsgIDIsICA3LCAyMn0sIHsgIDIsICA3LCAyM30sIHsgIDIsICA3LCAyNH0sCiAgICB7ICAyLCAgNywgMjd9LCB7ICAyLCAgNywgMjh9LCB7ICAyLCAgNywgMjl9LCB7ICAyLCAxMCwgIDF9LAogICAgeyAgMiwgMTAsICA1fSwgeyAgMiwgMTAsICA5fSwgeyAgMiwgMTAsIDE3fSwgeyAgMiwgMTAsIDE5fSwKICAgIHsgIDIsIDEwLCAyMX0sIHsgIDIsIDEwLCAyMn0sIHsgIDIsIDEwLCAyM30sIHsgIDIsIDExLCAgMX0sCiAgICB7ICAyLCAxMSwgIDJ9LCB7ICAyLCAxMSwgIDN9LCB7ICAyLCAxMSwgIDV9LCB7ICAyLCAxMSwgIDh9LAogICAgeyAgMiwgMTEsICA5fSwgeyAgMiwgMTEsIDE3fSwgeyAgMiwgMTEsIDE5fSwgeyAgMiwgMTEsIDIxfSwKICAgIHsgIDIsIDExLCAyMn0sIHsgIDIsIDExLCAyM30sIHsgIDIsIDExLCAyN30sIHsgIDIsIDEyLCAgMX0sCiAgICB7ICAyLCAxMiwgIDV9LCB7ICAyLCAxMiwgIDl9LCB7ICAyLCAxMiwgMTl9LCB7ICAyLCAxMiwgMjF9LAogICAgeyAgMiwgMTMsICAxfSwgeyAgMiwgMTMsICAyfSwgeyAgMiwgMTMsICA1fSwgeyAgMiwgMTMsICA4fSwKICAgIHsgIDIsIDEzLCAgOX0sIHsgIDIsIDEzLCAxMX0sIHsgIDIsIDEzLCAxM30sIHsgIDIsIDEzLCAxNn0sCiAgICB7ICAyLCAxMywgMTd9LCB7ICAyLCAxMywgMTl9LCB7ICAyLCAxMywgMjF9LCB7ICAyLCAxMywgMjN9LAogICAgeyAgMiwgMTMsIDI0fSwgeyAgMiwgMTQsICAxfSwgeyAgMiwgMTQsICAyfSwgeyAgMiwgMTQsICA1fSwKICAgIHsgIDIsIDE0LCAgOX0sIHsgIDIsIDE0LCAxMX0sIHsgIDIsIDE0LCAxN30sIHsgIDIsIDE0LCAxOX0sCiAgICB7ICAyLCAxNCwgMjF9LCB7ICAyLCAxNCwgMjN9LCB7ICAyLCAxNSwgIDF9LCB7ICAyLCAxNSwgIDV9LAogICAgeyAgMiwgMTUsICA5fSwgeyAgMiwgMTUsIDE5fSwgeyAgMiwgMTUsIDIyfSwgeyAgMiwgMTUsIDIzfSwKICAgIHsgIDIsIDE4LCAgMX0sIHsgIDIsIDE4LCAgMn0sIHsgIDIsIDE4LCAgNX0sIHsgIDIsIDE4LCAgOX0sCiAgICB7ICAyLCAxOCwgMTd9LCB7ICAyLCAxOCwgMTl9LCB7ICAyLCAxOCwgMjF9LCB7ICAyLCAxOCwgMjN9LAogICAgeyAgMiwgMTksICAxfSwgeyAgMiwgMTksICA1fSwgeyAgMiwgMTksICA5fSwgeyAgMiwgMTksIDE5fSwKICAgIHsgIDIsIDE5LCAyMX0sIHsgIDIsIDIwLCAgMX0sIHsgIDIsIDIwLCAgMn0sIHsgIDIsIDIwLCAgNX0sCiAgICB7ICAyLCAyMCwgIDh9LCB7ICAyLCAyMCwgIDl9LCB7ICAyLCAyMCwgMTB9LCB7ICAyLCAyMCwgMTF9LAogICAgeyAgMiwgMjAsIDE2fSwgeyAgMiwgMjAsIDE3fSwgeyAgMiwgMjAsIDE5fSwgeyAgMiwgMjAsIDIxfSwKICAgIHsgIDIsIDIwLCAyM30sIHsgIDIsIDIwLCAyNH0sIHsgIDIsIDIxLCAgMX0sIHsgIDIsIDIxLCAgMn0sCiAgICB7ICAyLCAyMSwgIDV9LCB7ICAyLCAyMSwgIDl9LCB7ICAyLCAyMSwgMjJ9LCB7ICAyLCAyMSwgMjN9LAogICAgeyAgMiwgMjIsICAxfSwgeyAgMiwgMjIsIDIxfSwgeyAgMiwgMjMsICAxfSwgeyAgMiwgMjMsICAyfSwKICAgIHsgIDIsIDIzLCAgNX0sIHsgIDIsIDIzLCAgOX0sIHsgIDIsIDIzLCAxN30sIHsgIDIsIDIzLCAxOX0sCiAgICB7ICAyLCAyMywgMjF9LCB7ICAyLCAyNiwgIDF9LCB7ICAyLCAyNiwgIDV9LCB7ICAyLCAyNiwgIDl9LAogICAgeyAgMiwgMjcsICAxfSwgeyAgMiwgMjcsICAyfSwgeyAgMiwgMjcsICA1fSwgeyAgMiwgMjcsICA4fSwKICAgIHsgIDIsIDI3LCAgOX0sIHsgIDIsIDI3LCAxMH0sIHsgIDIsIDI3LCAxN30sIHsgIDIsIDI3LCAxOX0sCiAgICB7ICAyLCAyNywgMjF9LCB7ICAyLCAyNywgMjN9LCB7ICAyLCAyOCwgIDF9LCB7ICAyLCAyOSwgIDF9LAogICAgeyAgMiwgMjksICAyfSwgeyAgMiwgMjksICA1fSwgeyAgMiwgMjksICA4fSwgeyAgMiwgMjksICA5fSwKICAgIHsgIDIsIDI5LCAxMX0sIHsgIDIsIDI5LCAxN30sIHsgIDIsIDI5LCAxOX0sIHsgIDIsIDI5LCAyMX0sCiAgICB7ICAyLCAyOSwgMjN9LCB7ICAyLCAyOSwgMjR9LCB7ICAyLCAyOSwgMjh9LCB7ICAzLCAgMywgIDF9LAogICAgeyAgMywgIDMsICAyfSwgeyAgMywgIDMsICAzfSwgeyAgMywgIDMsICA1fSwgeyAgMywgIDMsICA5fSwKICAgIHsgIDMsICAzLCAxMX0sIHsgIDMsICAzLCAxN30sIHsgIDMsICAzLCAxOX0sIHsgIDMsICAzLCAyMX0sCiAgICB7ICAzLCAgMywgMjJ9LCB7ICAzLCAgMywgMjN9LCB7ICAzLCAgMywgMjd9LCB7ICAzLCAgNCwgIDF9LAogICAgeyAgMywgIDQsICAyfSwgeyAgMywgIDQsICA1fSwgeyAgMywgIDQsICA5fSwgeyAgMywgIDQsIDE3fSwKICAgIHsgIDMsICA0LCAxOX0sIHsgIDMsICA0LCAyMX0sIHsgIDMsICA0LCAyMn0sIHsgIDMsICA0LCAyM30sCiAgICB7ICAzLCAgNSwgIDF9LCB7ICAzLCAgNSwgIDJ9LCB7ICAzLCAgNSwgIDl9LCB7ICAzLCAgNywgIDF9LAogICAgeyAgMywgIDcsICAyfSwgeyAgMywgIDcsICAzfSwgeyAgMywgIDcsICA1fSwgeyAgMywgIDcsICA5fSwKICAgIHsgIDMsICA3LCAxN30sIHsgIDMsICA3LCAxOX0sIHsgIDMsICA3LCAyMX0sIHsgIDMsICA3LCAyMn0sCiAgICB7ICAzLCAgNywgMjN9LCB7ICAzLCAxMCwgIDF9LCB7ICAzLCAxMCwgIDJ9LCB7ICAzLCAxMCwgIDV9LAogICAgeyAgMywgMTAsIDE3fSwgeyAgMywgMTAsIDIxfSwgeyAgMywgMTAsIDIzfSwgeyAgMywgMTEsICAxfSwKICAgIHsgIDMsIDExLCAgNX0sIHsgIDMsIDExLCAgOX0sIHsgIDMsIDExLCAyMX0sIHsgIDMsIDExLCAyMn0sCiAgICB7ICAzLCAxMSwgMjd9LCB7ICAzLCAxMiwgIDF9LCB7ICAzLCAxMywgIDF9LCB7ICAzLCAxMywgIDJ9LAogICAgeyAgMywgMTMsICA1fSwgeyAgMywgMTMsICA3fSwgeyAgMywgMTMsICA5fSwgeyAgMywgMTMsIDE3fSwKICAgIHsgIDMsIDEzLCAxOX0sIHsgIDMsIDEzLCAyMX0sIHsgIDMsIDEzLCAyM30sIHsgIDMsIDEzLCAyNH0sCiAgICB7ICAzLCAxMywgMjV9LCB7ICAzLCAxNCwgIDF9LCB7ICAzLCAxNCwgIDJ9LCB7ICAzLCAxNCwgIDl9LAogICAgeyAgMywgMTQsIDIyfSwgeyAgMywgMTQsIDIzfSwgeyAgMywgMTUsICAxfSwgeyAgMywgMTUsICAyfSwKICAgIHsgIDMsIDE1LCAyM30sIHsgIDMsIDE4LCAgMX0sIHsgIDMsIDE4LCAgNX0sIHsgIDMsIDE4LCAgOX0sCiAgICB7ICAzLCAxOCwgMTd9LCB7ICAzLCAxOCwgMTl9LCB7ICAzLCAxOCwgMjN9LCB7ICAzLCAxOSwgIDF9LAogICAgeyAgMywgMjAsICAxfSwgeyAgMywgMjAsICAyfSwgeyAgMywgMjAsICA1fSwgeyAgMywgMjAsICA5fSwKICAgIHsgIDMsIDIwLCAxNn0sIHsgIDMsIDIwLCAxN30sIHsgIDMsIDIwLCAxOX0sIHsgIDMsIDIwLCAyMX0sCiAgICB7ICAzLCAyMCwgMjN9LCB7ICAzLCAyMCwgMjR9LCB7ICAzLCAyMSwgIDF9LCB7ICAzLCAyMSwgIDl9LAogICAgeyAgMywgMjEsIDIyfSwgeyAgMywgMjEsIDIzfSwgeyAgMywgMjIsICAxfSwgeyAgMywgMjIsICAyfSwKICAgIHsgIDMsIDIyLCAgNX0sIHsgIDMsIDIyLCAgOX0sIHsgIDMsIDIyLCAxN30sIHsgIDMsIDIyLCAxOX0sCiAgICB7ICAzLCAyMiwgMjJ9LCB7ICAzLCAyMywgIDF9LCB7ICAzLCAyMywgIDV9LCB7ICAzLCAyMywgIDl9LAogICAgeyAgMywgMjMsIDE3fSwgeyAgMywgMjMsIDE5fSwgeyAgMywgMjYsICAxfSwgeyAgMywgMjcsICAxfSwKICAgIHsgIDMsIDI3LCAgMn0sIHsgIDMsIDI3LCAgNX0sIHsgIDMsIDI3LCAgN30sIHsgIDMsIDI3LCAgOX0sCiAgICB7ICAzLCAyNywgMTF9LCB7ICAzLCAyNywgMTZ9LCB7ICAzLCAyNywgMTd9LCB7ICAzLCAyNywgMTl9LAogICAgeyAgMywgMjcsIDIxfSwgeyAgMywgMjcsIDIzfSwgeyAgMywgMjcsIDI3fSwgeyAgMywgMjksICAxfSwKICAgIHsgIDMsIDI5LCAgMn0sIHsgIDMsIDI5LCAgNX0sIHsgIDMsIDI5LCAgOX0sIHsgIDMsIDI5LCAxN30sCiAgICB7ICAzLCAyOSwgMTl9LCB7ICAzLCAyOSwgMjF9LCB7ICAzLCAyOSwgMjN9LCB7ICA0LCAgMywgIDF9LAogICAgeyAgNCwgIDMsICAyfSwgeyAgNCwgIDMsICAzfSwgeyAgNCwgIDMsICA1fSwgeyAgNCwgIDMsICA4fSwKICAgIHsgIDQsICAzLCAgOX0sIHsgIDQsICAzLCAxMH0sIHsgIDQsICAzLCAxMX0sIHsgIDQsICAzLCAxN30sCiAgICB7ICA0LCAgMywgMTl9LCB7ICA0LCAgMywgMjF9LCB7ICA0LCAgMywgMjJ9LCB7ICA0LCAgMywgMjN9LAogICAgeyAgNCwgIDMsIDI0fSwgeyAgNCwgIDMsIDI1fSwgeyAgNCwgIDMsIDI3fSwgeyAgNCwgIDMsIDI5fSwKICAgIHsgIDQsICA0LCAgMX0sIHsgIDQsICA0LCAgMn0sIHsgIDQsICA0LCAgNX0sIHsgIDQsICA0LCAgOX0sCiAgICB7ICA0LCAgNCwgMTd9LCB7ICA0LCAgNCwgMTl9LCB7ICA0LCAgNCwgMjF9LCB7ICA0LCAgNCwgMjJ9LAogICAgeyAgNCwgIDQsIDIzfSwgeyAgNCwgIDUsICAxfSwgeyAgNCwgIDUsICAyfSwgeyAgNCwgIDUsICA1fSwKICAgIHsgIDQsICA1LCAgOX0sIHsgIDQsICA1LCAxN30sIHsgIDQsICA1LCAyM30sIHsgIDQsICA3LCAgMX0sCiAgICB7ICA0LCAgNywgIDJ9LCB7ICA0LCAgNywgIDR9LCB7ICA0LCAgNywgIDV9LCB7ICA0LCAgNywgIDl9LAogICAgeyAgNCwgIDcsIDExfSwgeyAgNCwgIDcsIDEyfSwgeyAgNCwgIDcsIDE3fSwgeyAgNCwgIDcsIDE5fSwKICAgIHsgIDQsICA3LCAyMX0sIHsgIDQsICA3LCAyMn0sIHsgIDQsICA3LCAyM30sIHsgIDQsICA3LCAyOX0sCiAgICB7ICA0LCAxMCwgIDF9LCB7ICA0LCAxMCwgIDJ9LCB7ICA0LCAxMCwgIDV9LCB7ICA0LCAxMCwgIDl9LAogICAgeyAgNCwgMTAsIDE3fSwgeyAgNCwgMTAsIDE5fSwgeyAgNCwgMTAsIDIxfSwgeyAgNCwgMTAsIDIyfSwKICAgIHsgIDQsIDEwLCAyM30sIHsgIDQsIDExLCAgMX0sIHsgIDQsIDExLCAgMn0sIHsgIDQsIDExLCAgNX0sCiAgICB7ICA0LCAxMSwgIDl9LCB7ICA0LCAxMSwgMTd9LCB7ICA0LCAxMSwgMTl9LCB7ICA0LCAxMSwgMjJ9LAogICAgeyAgNCwgMTEsIDIzfSwgeyAgNCwgMTEsIDI2fSwgeyAgNCwgMTIsICAxfSwgeyAgNCwgMTIsICA1fSwKICAgIHsgIDQsIDEzLCAgMX0sIHsgIDQsIDEzLCAgMn0sIHsgIDQsIDEzLCAgNX0sIHsgIDQsIDEzLCAgOX0sCiAgICB7ICA0LCAxMywgMTF9LCB7ICA0LCAxMywgMTd9LCB7ICA0LCAxMywgMTl9LCB7ICA0LCAxMywgMjF9LAogICAgeyAgNCwgMTMsIDIzfSwgeyAgNCwgMTMsIDI4fSwgeyAgNCwgMTMsIDI5fSwgeyAgNCwgMTQsICAxfSwKICAgIHsgIDQsIDE0LCAgNX0sIHsgIDQsIDE0LCAgOX0sIHsgIDQsIDE0LCAyMn0sIHsgIDQsIDE4LCAgMX0sCiAgICB7ICA0LCAxOCwgIDV9LCB7ICA0LCAxOCwgIDl9LCB7ICA0LCAxOCwgMTd9LCB7ICA0LCAxOCwgMTl9LAogICAgeyAgNCwgMTgsIDIxfSwgeyAgNCwgMTksICAxfSwgeyAgNCwgMTksICAyfSwgeyAgNCwgMTksICA1fSwKICAgIHsgIDQsIDE5LCAgOX0sIHsgIDQsIDE5LCAxOX0sIHsgIDQsIDE5LCAyMX0sIHsgIDQsIDE5LCAyM30sCiAgICB7ICA0LCAyMCwgIDF9LCB7ICA0LCAyMCwgIDJ9LCB7ICA0LCAyMCwgIDV9LCB7ICA0LCAyMCwgIDh9LAogICAgeyAgNCwgMjAsICA5fSwgeyAgNCwgMjAsIDE3fSwgeyAgNCwgMjAsIDE5fSwgeyAgNCwgMjAsIDIxfSwKICAgIHsgIDQsIDIwLCAyM30sIHsgIDQsIDIxLCAgMX0sIHsgIDQsIDIxLCAyMn0sIHsgIDQsIDIyLCAgMX0sCiAgICB7ICA0LCAyMywgIDF9LCB7ICA0LCAyMywgIDV9LCB7ICA0LCAyMywgIDl9LCB7ICA0LCAyMywgMTd9LAogICAgeyAgNCwgMjMsIDE5fSwgeyAgNCwgMjYsICAxfSwgeyAgNCwgMjYsICAyfSwgeyAgNCwgMjYsICA5fSwKICAgIHsgIDQsIDI2LCAxN30sIHsgIDQsIDI2LCAxOX0sIHsgIDQsIDI2LCAyM30sIHsgIDQsIDI3LCAgMX0sCiAgICB7ICA0LCAyNywgIDJ9LCB7ICA0LCAyNywgIDV9LCB7ICA0LCAyNywgIDl9LCB7ICA0LCAyNywgMTB9LAogICAgeyAgNCwgMjcsIDExfSwgeyAgNCwgMjcsIDE3fSwgeyAgNCwgMjcsIDE5fSwgeyAgNCwgMjcsIDIxfSwKICAgIHsgIDQsIDI3LCAyM30sIHsgIDQsIDI3LCAyNH0sIHsgIDQsIDI3LCAyOH0sIHsgIDQsIDI4LCAgMX0sCiAgICB7ICA0LCAyOCwgIDV9LCB7ICA0LCAyOCwgIDl9LCB7ICA0LCAyOSwgIDF9LCB7ICA0LCAyOSwgIDJ9LAogICAgeyAgNCwgMjksICA1fSwgeyAgNCwgMjksICA5fSwgeyAgNCwgMjksIDExfSwgeyAgNCwgMjksIDE3fSwKICAgIHsgIDQsIDI5LCAxOX0sIHsgIDQsIDI5LCAyMX0sIHsgIDQsIDI5LCAyM30sIHsgIDQsIDI5LCAyOH0sCiAgICB7ICA1LCAgMywgIDF9LCB7ICA1LCAgMywgIDJ9LCB7ICA1LCAgMywgIDN9LCB7ICA1LCAgMywgIDV9LAogICAgeyAgNSwgIDMsICA4fSwgeyAgNSwgIDMsICA5fSwgeyAgNSwgIDMsIDEwfSwgeyAgNSwgIDMsIDExfSwKICAgIHsgIDUsICAzLCAxMn0sIHsgIDUsICAzLCAxNn0sIHsgIDUsICAzLCAxN30sIHsgIDUsICAzLCAxOX0sCiAgICB7ICA1LCAgMywgMjF9LCB7ICA1LCAgMywgMjJ9LCB7ICA1LCAgMywgMjN9LCB7ICA1LCAgMywgMjR9LAogICAgeyAgNSwgIDMsIDI1fSwgeyAgNSwgIDMsIDI5fSwgeyAgNSwgIDQsICAxfSwgeyAgNSwgIDQsICAyfSwKICAgIHsgIDUsICA0LCAgNX0sIHsgIDUsICA0LCAgOX0sIHsgIDUsICA0LCAxN30sIHsgIDUsICA0LCAxOX0sCiAgICB7ICA1LCAgNCwgMjF9LCB7ICA1LCAgNCwgMjJ9LCB7ICA1LCAgNCwgMjN9LCB7ICA1LCAgNSwgIDF9LAogICAgeyAgNSwgIDcsICAxfSwgeyAgNSwgIDcsICAyfSwgeyAgNSwgIDcsICAzfSwgeyAgNSwgIDcsICA1fSwKICAgIHsgIDUsICA3LCAgOH0sIHsgIDUsICA3LCAgOX0sIHsgIDUsICA3LCAxMX0sIHsgIDUsICA3LCAxMn0sCiAgICB7ICA1LCAgNywgMTd9LCB7ICA1LCAgNywgMTl9LCB7ICA1LCAgNywgMjF9LCB7ICA1LCAgNywgMjN9LAogICAgeyAgNSwgIDcsIDI1fSwgeyAgNSwgIDcsIDI4fSwgeyAgNSwgMTAsICAxfSwgeyAgNSwgMTAsICAyfSwKICAgIHsgIDUsIDEwLCAgNX0sIHsgIDUsIDEwLCAgOX0sIHsgIDUsIDEwLCAxN30sIHsgIDUsIDEwLCAxOX0sCiAgICB7ICA1LCAxMCwgMjF9LCB7ICA1LCAxMCwgMjJ9LCB7ICA1LCAxMCwgMjN9LCB7ICA1LCAxMSwgIDF9LAogICAgeyAgNSwgMTEsICA1fSwgeyAgNSwgMTEsICA5fSwgeyAgNSwgMTEsIDIyfSwgeyAgNSwgMTEsIDIzfSwKICAgIHsgIDUsIDEyLCAgMX0sIHsgIDUsIDEyLCAgNX0sIHsgIDUsIDEzLCAgMX0sIHsgIDUsIDEzLCAgMn0sCiAgICB7ICA1LCAxMywgIDV9LCB7ICA1LCAxMywgIDh9LCB7ICA1LCAxMywgIDl9LCB7ICA1LCAxMywgMTF9LAogICAgeyAgNSwgMTMsIDEzfSwgeyAgNSwgMTMsIDE3fSwgeyAgNSwgMTMsIDE5fSwgeyAgNSwgMTMsIDIxfSwKICAgIHsgIDUsIDEzLCAyM30sIHsgIDUsIDEzLCAyNX0sIHsgIDUsIDEzLCAyN30sIHsgIDUsIDE0LCAgMX0sCiAgICB7ICA1LCAxNCwgIDV9LCB7ICA1LCAxNCwgIDl9LCB7ICA1LCAxNSwgIDF9LCB7ICA1LCAxNSwgMjJ9LAogICAgeyAgNSwgMTgsICAxfSwgeyAgNSwgMTgsICA1fSwgeyAgNSwgMTgsICA5fSwgeyAgNSwgMTgsIDE3fSwKICAgIHsgIDUsIDE4LCAxOX0sIHsgIDUsIDE4LCAyMX0sIHsgIDUsIDE5LCAgMX0sIHsgIDUsIDIwLCAgMX0sCiAgICB7ICA1LCAyMCwgIDJ9LCB7ICA1LCAyMCwgIDV9LCB7ICA1LCAyMCwgIDl9LCB7ICA1LCAyMCwgMTd9LAogICAgeyAgNSwgMjAsIDE5fSwgeyAgNSwgMjAsIDIxfSwgeyAgNSwgMjAsIDIzfSwgeyAgNSwgMjEsICAxfSwKICAgIHsgIDUsIDIxLCAyMn0sIHsgIDUsIDIyLCAgMX0sIHsgIDUsIDIyLCAyM30sIHsgIDUsIDIzLCAgMX0sCiAgICB7ICA1LCAyMywgIDV9LCB7ICA1LCAyMywgIDl9LCB7ICA1LCAyMywgMTl9LCB7ICA1LCAyMywgMjF9LAogICAgeyAgNSwgMjMsIDIzfSwgeyAgNSwgMjYsICAxfSwgeyAgNSwgMjYsICA1fSwgeyAgNSwgMjYsICA5fSwKICAgIHsgIDUsIDI2LCAxN30sIHsgIDUsIDI2LCAyM30sIHsgIDUsIDI3LCAgMX0sIHsgIDUsIDI3LCAgMn0sCiAgICB7ICA1LCAyNywgIDV9LCB7ICA1LCAyNywgIDh9LCB7ICA1LCAyNywgIDl9LCB7ICA1LCAyNywgMTF9LAogICAgeyAgNSwgMjcsIDE3fSwgeyAgNSwgMjcsIDE5fSwgeyAgNSwgMjcsIDIxfSwgeyAgNSwgMjcsIDIzfSwKICAgIHsgIDUsIDI4LCAgMX0sIHsgIDUsIDI5LCAgMX0sIHsgIDUsIDI5LCAgMn0sIHsgIDUsIDI5LCAgNX0sCiAgICB7ICA1LCAyOSwgIDh9LCB7ICA1LCAyOSwgIDl9LCB7ICA1LCAyOSwgMTd9LCB7ICA1LCAyOSwgMTl9LAogICAgeyAgNSwgMjksIDIxfSwgeyAgNSwgMjksIDIyfSwgeyAgNSwgMjksIDIzfSwgeyAgNSwgMjksIDI0fSwKICAgIHsgIDYsICAzLCAgMX0sIHsgIDYsICAzLCAgMn0sIHsgIDYsICAzLCAgNX0sIHsgIDYsICAzLCAgOX0sCiAgICB7ICA2LCAgMywgMTd9LCB7ICA2LCAgMywgMTl9LCB7ICA2LCAgMywgMjF9LCB7ICA2LCAgMywgMjJ9LAogICAgeyAgNiwgIDMsIDIzfSwgeyAgNiwgIDMsIDI5fSwgeyAgNiwgIDQsICAxfSwgeyAgNiwgIDQsICAyfSwKICAgIHsgIDYsICA0LCAgNX0sIHsgIDYsICA0LCAgOX0sIHsgIDYsICA0LCAxN30sIHsgIDYsICA0LCAxOX0sCiAgICB7ICA2LCAgNCwgMjF9LCB7ICA2LCAgNCwgMjJ9LCB7ICA2LCAgNCwgMjN9LCB7ICA2LCAgNywgIDF9LAogICAgeyAgNiwgIDcsICAyfSwgeyAgNiwgIDcsICA1fSwgeyAgNiwgIDcsICA5fSwgeyAgNiwgIDcsIDExfSwKICAgIHsgIDYsICA3LCAxMn0sIHsgIDYsICA3LCAxN30sIHsgIDYsICA3LCAxOX0sIHsgIDYsICA3LCAyMX0sCiAgICB7ICA2LCAgNywgMjJ9LCB7ICA2LCAgNywgMjN9LCB7ICA2LCAgNywgMjl9LCB7ICA2LCAxMCwgIDF9LAogICAgeyAgNiwgMTAsICAyfSwgeyAgNiwgMTAsICA1fSwgeyAgNiwgMTAsICA5fSwgeyAgNiwgMTAsIDE3fSwKICAgIHsgIDYsIDEwLCAxOX0sIHsgIDYsIDEwLCAyMX0sIHsgIDYsIDEwLCAyMn0sIHsgIDYsIDEwLCAyM30sCiAgICB7ICA2LCAxMSwgIDF9LCB7ICA2LCAxMSwgMjJ9LCB7ICA2LCAxMywgIDF9LCB7ICA2LCAxMywgIDJ9LAogICAgeyAgNiwgMTMsICA1fSwgeyAgNiwgMTMsICA5fSwgeyAgNiwgMTMsIDIzfSwgeyAgNiwgMTQsICAxfSwKICAgIHsgIDYsIDE0LCAgOX0sIHsgIDYsIDE1LCAgMX0sIHsgIDYsIDE4LCAgMX0sIHsgIDYsIDE4LCAgNX0sCiAgICB7ICA2LCAyMCwgIDF9LCB7ICA2LCAyMCwgIDJ9LCB7ICA2LCAyMCwgIDV9LCB7ICA2LCAyMCwgIDl9LAogICAgeyAgNiwgMjAsIDE2fSwgeyAgNiwgMjAsIDE3fSwgeyAgNiwgMjAsIDIzfSwgeyAgNiwgMjIsICAxfSwKICAgIHsgIDYsIDIzLCAgMX0sIHsgIDYsIDIzLCAgNX0sIHsgIDYsIDIzLCAgOX0sIHsgIDYsIDIzLCAxN30sCiAgICB7ICA2LCAyMywgMTl9LCB7ICA2LCAyMywgMjN9LCB7ICA2LCAyNywgIDF9LCB7ICA2LCAyNywgIDJ9LAogICAgeyAgNiwgMjcsICA1fSwgeyAgNiwgMjcsICA4fSwgeyAgNiwgMjcsICA5fSwgeyAgNiwgMjcsIDE3fSwKICAgIHsgIDYsIDI3LCAxOX0sIHsgIDYsIDI3LCAyMX0sIHsgIDYsIDI4LCAgMX0sIHsgIDYsIDI4LCAgNX0sCiAgICB7ICA2LCAyOCwgIDl9LCB7ICA2LCAyOCwgMTd9LCB7ICA2LCAyOCwgMTl9LCB7ICA2LCAyOSwgIDF9LAogICAgeyAgNiwgMjksICA1fSwgeyAgNiwgMjksICA5fSwgeyAgNiwgMjksIDE3fSwgeyAgNiwgMjksIDE5fSwKICAgIHsgIDYsIDI5LCAyMX0sIHsgIDYsIDI5LCAyM30sIHsgIDcsICAzLCAgMX0sIHsgIDcsICAzLCAgMn0sCiAgICB7ICA3LCAgMywgIDV9LCB7ICA3LCAgMywgIDl9LCB7ICA3LCAgMywgMTd9LCB7ICA3LCAgMywgMTl9LAogICAgeyAgNywgIDMsIDIxfSwgeyAgNywgIDMsIDIyfSwgeyAgNywgIDMsIDIzfSwgeyAgNywgIDMsIDI0fSwKICAgIHsgIDcsICAzLCAyOH0sIHsgIDcsICAzLCAyOX0sIHsgIDcsICA0LCAgMX0sIHsgIDcsICA0LCAgMn0sCiAgICB7ICA3LCAgNCwgIDV9LCB7ICA3LCAgNCwgIDl9LCB7ICA3LCAgNCwgMTd9LCB7ICA3LCAgNCwgMTl9LAogICAgeyAgNywgIDQsIDIxfSwgeyAgNywgIDQsIDIyfSwgeyAgNywgIDQsIDIzfSwgeyAgNywgIDUsICAxfSwKICAgIHsgIDcsICA1LCAgMn0sIHsgIDcsICA1LCAgNX0sIHsgIDcsICA1LCAyMX0sIHsgIDcsICA1LCAyM30sCiAgICB7ICA3LCAgNywgIDF9LCB7ICA3LCAgNywgIDJ9LCB7ICA3LCAgNywgIDV9LCB7ICA3LCAgNywgIDl9LAogICAgeyAgNywgIDcsIDE3fSwgeyAgNywgIDcsIDE5fSwgeyAgNywgIDcsIDIxfSwgeyAgNywgIDcsIDIyfSwKICAgIHsgIDcsICA3LCAyM30sIHsgIDcsICA3LCAyOX0sIHsgIDcsIDEwLCAgMX0sIHsgIDcsIDEwLCAgMn0sCiAgICB7ICA3LCAxMCwgIDV9LCB7ICA3LCAxMCwgIDl9LCB7ICA3LCAxMCwgMTd9LCB7ICA3LCAxMCwgMTl9LAogICAgeyAgNywgMTAsIDIxfSwgeyAgNywgMTAsIDIzfSwgeyAgNywgMTEsICAxfSwgeyAgNywgMTEsICAyfSwKICAgIHsgIDcsIDExLCAgNX0sIHsgIDcsIDExLCAgOX0sIHsgIDcsIDExLCAxN30sIHsgIDcsIDExLCAxOX0sCiAgICB7ICA3LCAxMSwgMjF9LCB7ICA3LCAxMSwgMjJ9LCB7ICA3LCAxMSwgMjN9LCB7ICA3LCAxMiwgIDF9LAogICAgeyAgNywgMTIsICA1fSwgeyAgNywgMTIsIDE5fSwgeyAgNywgMTIsIDIxfSwgeyAgNywgMTMsICAxfSwKICAgIHsgIDcsIDEzLCAgMn0sIHsgIDcsIDEzLCAgNX0sIHsgIDcsIDEzLCAgOX0sIHsgIDcsIDEzLCAxN30sCiAgICB7ICA3LCAxMywgMTl9LCB7ICA3LCAxMywgMjF9LCB7ICA3LCAxMywgMjN9LCB7ICA3LCAxNCwgIDF9LAogICAgeyAgNywgMTQsICA1fSwgeyAgNywgMTQsIDIzfSwgeyAgNywgMTUsIDIyfSwgeyAgNywgMTgsICAxfSwKICAgIHsgIDcsIDE4LCAgNX0sIHsgIDcsIDE4LCAgOX0sIHsgIDcsIDE4LCAxN30sIHsgIDcsIDE4LCAxOX0sCiAgICB7ICA3LCAxOCwgMjF9LCB7ICA3LCAxOCwgMjN9LCB7ICA3LCAxOSwgIDF9LCB7ICA3LCAxOSwgIDV9LAogICAgeyAgNywgMTksICA5fSwgeyAgNywgMTksIDE5fSwgeyAgNywgMTksIDIxfSwgeyAgNywgMTksIDIzfSwKICAgIHsgIDcsIDIwLCAgMX0sIHsgIDcsIDIwLCAgMn0sIHsgIDcsIDIwLCAgNX0sIHsgIDcsIDIwLCAgOX0sCiAgICB7ICA3LCAyMCwgMTd9LCB7ICA3LCAyMCwgMTl9LCB7ICA3LCAyMCwgMjF9LCB7ICA3LCAyMCwgMjN9LAogICAgeyAgNywgMjEsICAxfSwgeyAgNywgMjEsIDIyfSwgeyAgNywgMjIsICAxfSwgeyAgNywgMjMsICAxfSwKICAgIHsgIDcsIDIzLCAgMn0sIHsgIDcsIDIzLCAgNX0sIHsgIDcsIDIzLCAgOX0sIHsgIDcsIDIzLCAxN30sCiAgICB7ICA3LCAyMywgMjF9LCB7ICA3LCAyMywgMjN9LCB7ICA3LCAyNiwgIDF9LCB7ICA3LCAyNiwgIDJ9LAogICAgeyAgNywgMjYsICA1fSwgeyAgNywgMjYsICA5fSwgeyAgNywgMjYsIDE3fSwgeyAgNywgMjYsIDE5fSwKICAgIHsgIDcsIDI2LCAyMX0sIHsgIDcsIDI2LCAyM30sIHsgIDcsIDI3LCAgMX0sIHsgIDcsIDI3LCAgMn0sCiAgICB7ICA3LCAyNywgIDV9LCB7ICA3LCAyNywgIDl9LCB7ICA3LCAyNywgMTd9LCB7ICA3LCAyNywgMTl9LAogICAgeyAgNywgMjcsIDIxfSwgeyAgNywgMjcsIDIzfSwgeyAgNywgMjcsIDI0fSwgeyAgNywgMjcsIDI3fSwKICAgIHsgIDcsIDI3LCAyOH0sIHsgIDcsIDI5LCAgMX0sIHsgIDcsIDI5LCAgMn0sIHsgIDcsIDI5LCAgNX0sCiAgICB7ICA3LCAyOSwgIDl9LCB7ICA3LCAyOSwgMTd9LCB7ICA3LCAyOSwgMTl9LCB7ICA3LCAyOSwgMjF9LAogICAgeyAgNywgMjksIDIzfSwgeyAgOCwgIDMsICAxfSwgeyAgOCwgIDMsICAyfSwgeyAgOCwgIDMsICA1fSwKICAgIHsgIDgsICAzLCAgN30sIHsgIDgsICAzLCAgOH0sIHsgIDgsICAzLCAgOX0sIHsgIDgsICAzLCAxMH0sCiAgICB7ICA4LCAgMywgMTF9LCB7ICA4LCAgMywgMTd9LCB7ICA4LCAgMywgMTl9LCB7ICA4LCAgMywgMjF9LAogICAgeyAgOCwgIDMsIDIzfSwgeyAgOCwgIDMsIDI0fSwgeyAgOCwgIDMsIDI3fSwgeyAgOCwgIDMsIDI5fSwKICAgIHsgIDgsICA0LCAgMX0sIHsgIDgsICA0LCAgMn0sIHsgIDgsICA0LCAgNX0sIHsgIDgsICA0LCAgOX0sCiAgICB7ICA4LCAgNCwgMTd9LCB7ICA4LCAgNCwgMTl9LCB7ICA4LCAgNCwgMjF9LCB7ICA4LCAgNCwgMjJ9LAogICAgeyAgOCwgIDQsIDIzfSwgeyAgOCwgIDQsIDI0fSwgeyAgOCwgIDUsICAxfSwgeyAgOCwgIDUsICAyfSwKICAgIHsgIDgsICA1LCAgOX0sIHsgIDgsICA1LCAyM30sIHsgIDgsICA3LCAgMX0sIHsgIDgsICA3LCAgMn0sCiAgICB7ICA4LCAgNywgIDV9LCB7ICA4LCAgNywgIDl9LCB7ICA4LCAgNywgMTF9LCB7ICA4LCAgNywgMTd9LAogICAgeyAgOCwgIDcsIDE5fSwgeyAgOCwgIDcsIDIxfSwgeyAgOCwgIDcsIDIzfSwgeyAgOCwgIDcsIDI0fSwKICAgIHsgIDgsICA3LCAyOX0sIHsgIDgsIDEwLCAgMX0sIHsgIDgsIDEwLCAgMn0sIHsgIDgsIDEwLCAgNX0sCiAgICB7ICA4LCAxMCwgIDl9LCB7ICA4LCAxMCwgMTd9LCB7ICA4LCAxMCwgMTl9LCB7ICA4LCAxMCwgMjF9LAogICAgeyAgOCwgMTAsIDIyfSwgeyAgOCwgMTAsIDIzfSwgeyAgOCwgMTEsICAxfSwgeyAgOCwgMTEsICAyfSwKICAgIHsgIDgsIDExLCAgNX0sIHsgIDgsIDExLCAgOX0sIHsgIDgsIDExLCAyMX0sIHsgIDgsIDExLCAyMn0sCiAgICB7ICA4LCAxMSwgMjN9LCB7ICA4LCAxMSwgMjV9LCB7ICA4LCAxMiwgIDF9LCB7ICA4LCAxMywgIDF9LAogICAgeyAgOCwgMTMsICAyfSwgeyAgOCwgMTMsICA0fSwgeyAgOCwgMTMsICA1fSwgeyAgOCwgMTMsICA5fSwKICAgIHsgIDgsIDEzLCAxMX0sIHsgIDgsIDEzLCAxN30sIHsgIDgsIDEzLCAxOX0sIHsgIDgsIDEzLCAyMX0sCiAgICB7ICA4LCAxMywgMjN9LCB7ICA4LCAxNCwgIDF9LCB7ICA4LCAxNCwgIDV9LCB7ICA4LCAxNCwgMjJ9LAogICAgeyAgOCwgMTQsIDIzfSwgeyAgOCwgMTgsICAxfSwgeyAgOCwgMTgsICA1fSwgeyAgOCwgMTgsICA5fSwKICAgIHsgIDgsIDE4LCAxOX0sIHsgIDgsIDE4LCAyMX0sIHsgIDgsIDE4LCAyM30sIHsgIDgsIDE5LCAgMX0sCiAgICB7ICA4LCAxOSwgIDV9LCB7ICA4LCAxOSwgIDl9LCB7ICA4LCAxOSwgMTl9LCB7ICA4LCAxOSwgMjF9LAogICAgeyAgOCwgMjAsICAxfSwgeyAgOCwgMjAsICAyfSwgeyAgOCwgMjAsICAzfSwgeyAgOCwgMjAsICA1fSwKICAgIHsgIDgsIDIwLCAgOH0sIHsgIDgsIDIwLCAgOX0sIHsgIDgsIDIwLCAxMH0sIHsgIDgsIDIwLCAxMX0sCiAgICB7ICA4LCAyMCwgMTd9LCB7ICA4LCAyMCwgMTl9LCB7ICA4LCAyMCwgMjF9LCB7ICA4LCAyMCwgMjN9LAogICAgeyAgOCwgMjAsIDI3fSwgeyAgOCwgMjAsIDI5fSwgeyAgOCwgMjEsICAxfSwgeyAgOCwgMjEsICA1fSwKICAgIHsgIDgsIDIxLCAgOX0sIHsgIDgsIDIxLCAxOX0sIHsgIDgsIDIxLCAyMX0sIHsgIDgsIDIyLCAgMX0sCiAgICB7ICA4LCAyMywgIDF9LCB7ICA4LCAyMywgIDV9LCB7ICA4LCAyMywgIDl9LCB7ICA4LCAyNiwgIDF9LAogICAgeyAgOCwgMjYsICA1fSwgeyAgOCwgMjYsICA5fSwgeyAgOCwgMjYsIDE3fSwgeyAgOCwgMjYsIDIxfSwKICAgIHsgIDgsIDI3LCAgMX0sIHsgIDgsIDI3LCAgNX0sIHsgIDgsIDI3LCAgOX0sIHsgIDgsIDI3LCAxN30sCiAgICB7ICA4LCAyNywgMjF9LCB7ICA4LCAyOSwgIDF9LCB7ICA4LCAyOSwgIDJ9LCB7ICA4LCAyOSwgIDV9LAogICAgeyAgOCwgMjksICA4fSwgeyAgOCwgMjksICA5fSwgeyAgOCwgMjksIDExfSwgeyAgOCwgMjksIDE3fSwKICAgIHsgIDgsIDI5LCAxOX0sIHsgIDgsIDI5LCAyMX0sIHsgIDgsIDI5LCAyMn0sIHsgIDgsIDI5LCAyM30sCiAgICB7ICA4LCAyOSwgMjV9LCB7ICA4LCAyOSwgMjd9LCB7ICA5LCAgMywgIDF9LCB7ICA5LCAgMywgIDJ9LAogICAgeyAgOSwgIDMsICAzfSwgeyAgOSwgIDMsICA0fSwgeyAgOSwgIDMsICA1fSwgeyAgOSwgIDMsICA4fSwKICAgIHsgIDksICAzLCAgOX0sIHsgIDksICAzLCAxMH0sIHsgIDksICAzLCAxMX0sIHsgIDksICAzLCAxMn0sCiAgICB7ICA5LCAgMywgMTd9LCB7ICA5LCAgMywgMTl9LCB7ICA5LCAgMywgMjF9LCB7ICA5LCAgMywgMjN9LAogICAgeyAgOSwgIDMsIDI3fSwgeyAgOSwgIDQsICAxfSwgeyAgOSwgIDQsICAyfSwgeyAgOSwgIDQsICA1fSwKICAgIHsgIDksICA0LCAgOX0sIHsgIDksICA0LCAxN30sIHsgIDksICA0LCAxOX0sIHsgIDksICA0LCAyMX0sCiAgICB7ICA5LCAgNCwgMjJ9LCB7ICA5LCAgNCwgMjN9LCB7ICA5LCAgNCwgMjd9LCB7ICA5LCAgNSwgIDF9LAogICAgeyAgOSwgIDUsICAyfSwgeyAgOSwgIDUsICA1fSwgeyAgOSwgIDUsIDE5fSwgeyAgOSwgIDcsICAxfSwKICAgIHsgIDksICA3LCAgMn0sIHsgIDksICA3LCAgNX0sIHsgIDksICA3LCAgOH0sIHsgIDksICA3LCAgOX0sCiAgICB7ICA5LCAgNywgMTF9LCB7ICA5LCAgNywgMTd9LCB7ICA5LCAgNywgMTl9LCB7ICA5LCAgNywgMjF9LAogICAgeyAgOSwgIDcsIDIzfSwgeyAgOSwgIDcsIDI0fSwgeyAgOSwgMTAsICAxfSwgeyAgOSwgMTAsICAyfSwKICAgIHsgIDksIDEwLCAgNX0sIHsgIDksIDEwLCAgOH0sIHsgIDksIDEwLCAgOX0sIHsgIDksIDEwLCAxN30sCiAgICB7ICA5LCAxMCwgMTl9LCB7ICA5LCAxMCwgMjF9LCB7ICA5LCAxMCwgMjJ9LCB7ICA5LCAxMCwgMjN9LAogICAgeyAgOSwgMTEsICAxfSwgeyAgOSwgMTEsICAyfSwgeyAgOSwgMTEsICA1fSwgeyAgOSwgMTEsICA5fSwKICAgIHsgIDksIDExLCAxOX0sIHsgIDksIDExLCAyMX0sIHsgIDksIDExLCAyMn0sIHsgIDksIDExLCAyM30sCiAgICB7ICA5LCAxMSwgMjd9LCB7ICA5LCAxMiwgIDF9LCB7ICA5LCAxMiwgIDV9LCB7ICA5LCAxMywgIDF9LAogICAgeyAgOSwgMTMsICAyfSwgeyAgOSwgMTMsICAzfSwgeyAgOSwgMTMsICA1fSwgeyAgOSwgMTMsICA5fSwKICAgIHsgIDksIDEzLCAxN30sIHsgIDksIDEzLCAxOX0sIHsgIDksIDEzLCAyMX0sIHsgIDksIDEzLCAyM30sCiAgICB7ICA5LCAxNCwgIDF9LCB7ICA5LCAxNCwgIDV9LCB7ICA5LCAxNCwgMjJ9LCB7ICA5LCAxNSwgIDF9LAogICAgeyAgOSwgMTUsIDIyfSwgeyAgOSwgMTgsICAxfSwgeyAgOSwgMTgsICAyfSwgeyAgOSwgMTgsICA1fSwKICAgIHsgIDksIDE4LCAgOX0sIHsgIDksIDE4LCAxN30sIHsgIDksIDE4LCAxOX0sIHsgIDksIDE5LCAgMX0sCiAgICB7ICA5LCAxOSwgIDV9LCB7ICA5LCAyMCwgIDF9LCB7ICA5LCAyMCwgIDJ9LCB7ICA5LCAyMCwgIDV9LAogICAgeyAgOSwgMjAsICA4fSwgeyAgOSwgMjAsICA5fSwgeyAgOSwgMjAsIDEwfSwgeyAgOSwgMjAsIDExfSwKICAgIHsgIDksIDIwLCAxN30sIHsgIDksIDIwLCAxOX0sIHsgIDksIDIwLCAyMX0sIHsgIDksIDIwLCAyM30sCiAgICB7ICA5LCAyMCwgMjd9LCB7ICA5LCAyMCwgMjh9LCB7ICA5LCAyMSwgIDF9LCB7ICA5LCAyMSwgIDl9LAogICAgeyAgOSwgMjEsIDIyfSwgeyAgOSwgMjIsICAxfSwgeyAgOSwgMjMsICAxfSwgeyAgOSwgMjMsICAyfSwKICAgIHsgIDksIDIzLCAgNX0sIHsgIDksIDIzLCAgOX0sIHsgIDksIDIzLCAyM30sIHsgIDksIDI2LCAgMX0sCiAgICB7ICA5LCAyNiwgIDV9LCB7ICA5LCAyNiwgIDl9LCB7ICA5LCAyNiwgMTd9LCB7ICA5LCAyNiwgMjF9LAogICAgeyAgOSwgMjYsIDIzfSwgeyAgOSwgMjcsICAxfSwgeyAgOSwgMjcsICAyfSwgeyAgOSwgMjcsICA1fSwKICAgIHsgIDksIDI3LCAgOX0sIHsgIDksIDI3LCAxN30sIHsgIDksIDI3LCAxOX0sIHsgIDksIDI3LCAyMX0sCiAgICB7ICA5LCAyOSwgIDF9LCB7ICA5LCAyOSwgIDJ9LCB7ICA5LCAyOSwgIDV9LCB7ICA5LCAyOSwgIDl9LAogICAgeyAgOSwgMjksIDExfSwgeyAgOSwgMjksIDE3fSwgeyAgOSwgMjksIDE5fSwgeyAgOSwgMjksIDIxfSwKICAgIHsgIDksIDI5LCAyM30sIHsgIDksIDI5LCAyNH0sIHsgIDksIDI5LCAyNX0sIHsgMTAsICAzLCAgMX0sCiAgICB7IDEwLCAgMywgIDJ9LCB7IDEwLCAgMywgIDV9LCB7IDEwLCAgMywgIDl9LCB7IDEwLCAgMywgMTF9LAogICAgeyAxMCwgIDMsIDE3fSwgeyAxMCwgIDMsIDE5fSwgeyAxMCwgIDMsIDIxfSwgeyAxMCwgIDMsIDIyfSwKICAgIHsgMTAsICAzLCAyM30sIHsgMTAsICAzLCAyOX0sIHsgMTAsICA0LCAgMX0sIHsgMTAsICA0LCAgMn0sCiAgICB7IDEwLCAgNCwgIDV9LCB7IDEwLCAgNCwgIDl9LCB7IDEwLCAgNCwgMTd9LCB7IDEwLCAgNCwgMTl9LAogICAgeyAxMCwgIDQsIDIxfSwgeyAxMCwgIDQsIDIyfSwgeyAxMCwgIDQsIDIzfSwgeyAxMCwgIDUsICAxfSwKICAgIHsgMTAsICA1LCAgMn0sIHsgMTAsICA1LCAxN30sIHsgMTAsICA3LCAgMX0sIHsgMTAsICA3LCAgMn0sCiAgICB7IDEwLCAgNywgIDV9LCB7IDEwLCAgNywgIDh9LCB7IDEwLCAgNywgIDl9LCB7IDEwLCAgNywgMTd9LAogICAgeyAxMCwgIDcsIDIxfSwgeyAxMCwgIDcsIDIyfSwgeyAxMCwgIDcsIDIzfSwgeyAxMCwgMTAsICAxfSwKICAgIHsgMTAsIDEwLCAyM30sIHsgMTAsIDExLCAgMX0sIHsgMTAsIDExLCAgMn0sIHsgMTAsIDExLCAxN30sCiAgICB7IDEwLCAxMSwgMTl9LCB7IDEwLCAxMSwgMjF9LCB7IDEwLCAxMSwgMjJ9LCB7IDEwLCAxMSwgMjN9LAogICAgeyAxMCwgMTMsICAxfSwgeyAxMCwgMTMsICAyfSwgeyAxMCwgMTMsICA1fSwgeyAxMCwgMTMsICA5fSwKICAgIHsgMTAsIDEzLCAxN30sIHsgMTAsIDEzLCAxOX0sIHsgMTAsIDEzLCAyM30sIHsgMTAsIDE4LCAgMX0sCiAgICB7IDEwLCAxOSwgIDF9LCB7IDEwLCAxOSwgMjN9LCB7IDEwLCAyMCwgIDF9LCB7IDEwLCAyMCwgIDJ9LAogICAgeyAxMCwgMjAsICA1fSwgeyAxMCwgMjAsICA5fSwgeyAxMCwgMjAsIDE3fSwgeyAxMCwgMjAsIDIxfSwKICAgIHsgMTAsIDIwLCAyM30sIHsgMTAsIDI2LCAgMX0sIHsgMTAsIDI2LCAyM30sIHsgMTAsIDI3LCAgMX0sCiAgICB7IDEwLCAyNywgIDV9LCB7IDEwLCAyNywgIDl9LCB7IDEwLCAyNywgMTd9LCB7IDEwLCAyNywgMTl9LAogICAgeyAxMCwgMjksICAxfSwgeyAxMCwgMjksICAyfSwgeyAxMCwgMjksICA1fSwgeyAxMCwgMjksICA5fSwKICAgIHsgMTAsIDI5LCAxN30sIHsgMTAsIDI5LCAxOX0sIHsgMTAsIDI5LCAyMX0sIHsgMTAsIDI5LCAyM30sCiAgICB7IDExLCAgMywgIDF9LCB7IDExLCAgMywgIDJ9LCB7IDExLCAgMywgIDR9LCB7IDExLCAgMywgIDV9LAogICAgeyAxMSwgIDMsICA4fSwgeyAxMSwgIDMsICA5fSwgeyAxMSwgIDMsIDEwfSwgeyAxMSwgIDMsIDExfSwKICAgIHsgMTEsICAzLCAxN30sIHsgMTEsICAzLCAxOX0sIHsgMTEsICAzLCAyMX0sIHsgMTEsICAzLCAyMn0sCiAgICB7IDExLCAgMywgMjN9LCB7IDExLCAgMywgMjd9LCB7IDExLCAgNCwgIDF9LCB7IDExLCAgNCwgIDJ9LAogICAgeyAxMSwgIDQsICA1fSwgeyAxMSwgIDQsICA5fSwgeyAxMSwgIDQsIDE3fSwgeyAxMSwgIDQsIDE5fSwKICAgIHsgMTEsICA0LCAyMX0sIHsgMTEsICA0LCAyMn0sIHsgMTEsICA0LCAyM30sIHsgMTEsICA1LCAgMX0sCiAgICB7IDExLCAgNSwgIDJ9LCB7IDExLCAgNSwgIDV9LCB7IDExLCAgNSwgIDl9LCB7IDExLCAgNSwgMTd9LAogICAgeyAxMSwgIDUsIDE5fSwgeyAxMSwgIDUsIDIxfSwgeyAxMSwgIDUsIDIzfSwgeyAxMSwgIDYsICAxfSwKICAgIHsgMTEsICA2LCAgNX0sIHsgMTEsICA2LCAgOX0sIHsgMTEsICA2LCAxN30sIHsgMTEsICA2LCAyM30sCiAgICB7IDExLCAgNywgIDF9LCB7IDExLCAgNywgIDJ9LCB7IDExLCAgNywgIDN9LCB7IDExLCAgNywgIDR9LAogICAgeyAxMSwgIDcsICA1fSwgeyAxMSwgIDcsICA4fSwgeyAxMSwgIDcsICA5fSwgeyAxMSwgIDcsIDExfSwKICAgIHsgMTEsICA3LCAxMn0sIHsgMTEsICA3LCAxN30sIHsgMTEsICA3LCAxOX0sIHsgMTEsICA3LCAyMX0sCiAgICB7IDExLCAgNywgMjJ9LCB7IDExLCAgNywgMjN9LCB7IDExLCAgNywgMjh9LCB7IDExLCAxMCwgIDF9LAogICAgeyAxMSwgMTAsICAyfSwgeyAxMSwgMTAsICA1fSwgeyAxMSwgMTAsICA5fSwgeyAxMSwgMTAsIDE3fSwKICAgIHsgMTEsIDEwLCAxOX0sIHsgMTEsIDEwLCAyMX0sIHsgMTEsIDEwLCAyMn0sIHsgMTEsIDEwLCAyM30sCiAgICB7IDExLCAxMSwgIDF9LCB7IDExLCAxMSwgIDJ9LCB7IDExLCAxMSwgIDV9LCB7IDExLCAxMSwgIDl9LAogICAgeyAxMSwgMTEsIDE3fSwgeyAxMSwgMTEsIDE5fSwgeyAxMSwgMTEsIDIxfSwgeyAxMSwgMTEsIDIyfSwKICAgIHsgMTEsIDExLCAyM30sIHsgMTEsIDEyLCAgMX0sIHsgMTEsIDEyLCAgNX0sIHsgMTEsIDEyLCAgOX0sCiAgICB7IDExLCAxMiwgMjN9LCB7IDExLCAxMywgIDF9LCB7IDExLCAxMywgIDJ9LCB7IDExLCAxMywgIDN9LAogICAgeyAxMSwgMTMsICA1fSwgeyAxMSwgMTMsICA5fSwgeyAxMSwgMTMsIDExfSwgeyAxMSwgMTMsIDE3fSwKICAgIHsgMTEsIDEzLCAxOX0sIHsgMTEsIDEzLCAyMX0sIHsgMTEsIDEzLCAyM30sIHsgMTEsIDEzLCAyN30sCiAgICB7IDExLCAxNCwgIDF9LCB7IDExLCAxNCwgIDJ9LCB7IDExLCAxNCwgIDV9LCB7IDExLCAxNCwgIDl9LAogICAgeyAxMSwgMTQsIDIzfSwgeyAxMSwgMTUsICAxfSwgeyAxMSwgMTUsICA1fSwgeyAxMSwgMTUsICA5fSwKICAgIHsgMTEsIDE1LCAxN30sIHsgMTEsIDE1LCAyMX0sIHsgMTEsIDE1LCAyMn0sIHsgMTEsIDE4LCAgMX0sCiAgICB7IDExLCAxOCwgIDV9LCB7IDExLCAxOCwgIDl9LCB7IDExLCAxOCwgMTd9LCB7IDExLCAxOCwgMTl9LAogICAgeyAxMSwgMTgsIDIxfSwgeyAxMSwgMTksICAxfSwgeyAxMSwgMTksICAyfSwgeyAxMSwgMTksICA1fSwKICAgIHsgMTEsIDE5LCAgOX0sIHsgMTEsIDE5LCAxN30sIHsgMTEsIDE5LCAxOX0sIHsgMTEsIDE5LCAyMX0sCiAgICB7IDExLCAxOSwgMjN9LCB7IDExLCAyMCwgIDF9LCB7IDExLCAyMCwgIDJ9LCB7IDExLCAyMCwgIDV9LAogICAgeyAxMSwgMjAsICA4fSwgeyAxMSwgMjAsICA5fSwgeyAxMSwgMjAsIDE3fSwgeyAxMSwgMjAsIDE5fSwKICAgIHsgMTEsIDIwLCAyMX0sIHsgMTEsIDIwLCAyM30sIHsgMTEsIDIwLCAyNX0sIHsgMTEsIDIwLCAyN30sCiAgICB7IDExLCAyMCwgMjh9LCB7IDExLCAyMSwgIDF9LCB7IDExLCAyMSwgMjJ9LCB7IDExLCAyMiwgIDF9LAogICAgeyAxMSwgMjIsICAyfSwgeyAxMSwgMjIsICA1fSwgeyAxMSwgMjIsICA5fSwgeyAxMSwgMjIsIDE3fSwKICAgIHsgMTEsIDIyLCAyM30sIHsgMTEsIDIzLCAgMX0sIHsgMTEsIDIzLCAgMn0sIHsgMTEsIDIzLCAgNX0sCiAgICB7IDExLCAyMywgIDl9LCB7IDExLCAyMywgMTd9LCB7IDExLCAyMywgMTl9LCB7IDExLCAyMywgMjF9LAogICAgeyAxMSwgMjMsIDIzfSwgeyAxMSwgMjYsICAxfSwgeyAxMSwgMjYsICAyfSwgeyAxMSwgMjYsICA5fSwKICAgIHsgMTEsIDI2LCAxN30sIHsgMTEsIDI2LCAyMX0sIHsgMTEsIDI2LCAyM30sIHsgMTEsIDI3LCAgMX0sCiAgICB7IDExLCAyNywgIDJ9LCB7IDExLCAyNywgIDV9LCB7IDExLCAyNywgIDl9LCB7IDExLCAyNywgMTB9LAogICAgeyAxMSwgMjcsIDE3fSwgeyAxMSwgMjcsIDE5fSwgeyAxMSwgMjcsIDIxfSwgeyAxMSwgMjcsIDIzfSwKICAgIHsgMTEsIDI5LCAgMX0sIHsgMTEsIDI5LCAgMn0sIHsgMTEsIDI5LCAgNX0sIHsgMTEsIDI5LCAgOH0sCiAgICB7IDExLCAyOSwgIDl9LCB7IDExLCAyOSwgMTZ9LCB7IDExLCAyOSwgMTd9LCB7IDExLCAyOSwgMTl9LAogICAgeyAxMSwgMjksIDIxfSwgeyAxMSwgMjksIDIzfSwgeyAxMSwgMjksIDI4fSwgeyAxMiwgIDMsICAxfSwKICAgIHsgMTIsICAzLCAgMn0sIHsgMTIsICAzLCAgNH0sIHsgMTIsICAzLCAgNX0sIHsgMTIsICAzLCAgOX0sCiAgICB7IDEyLCAgMywgMTd9LCB7IDEyLCAgMywgMTl9LCB7IDEyLCAgMywgMjJ9LCB7IDEyLCAgMywgMjN9LAogICAgeyAxMiwgIDMsIDI5fSwgeyAxMiwgIDQsICAxfSwgeyAxMiwgIDQsICAyfSwgeyAxMiwgIDQsICA1fSwKICAgIHsgMTIsICA0LCAgOX0sIHsgMTIsICA0LCAxN30sIHsgMTIsICA0LCAxOX0sIHsgMTIsICA0LCAyMn0sCiAgICB7IDEyLCAgNCwgMjN9LCB7IDEyLCAgNSwgMjN9LCB7IDEyLCAgNywgIDF9LCB7IDEyLCAgNywgIDJ9LAogICAgeyAxMiwgIDcsICA1fSwgeyAxMiwgIDcsICA5fSwgeyAxMiwgIDcsIDExfSwgeyAxMiwgIDcsIDE3fSwKICAgIHsgMTIsICA3LCAxOX0sIHsgMTIsICA3LCAyMn0sIHsgMTIsICA3LCAyM30sIHsgMTIsIDEwLCAgMX0sCiAgICB7IDEyLCAxMCwgIDV9LCB7IDEyLCAxMCwgIDl9LCB7IDEyLCAxMiwgIDV9LCB7IDEyLCAxMywgIDF9LAogICAgeyAxMiwgMTMsICAyfSwgeyAxMiwgMTMsICA1fSwgeyAxMiwgMTMsICA4fSwgeyAxMiwgMTMsICA5fSwKICAgIHsgMTIsIDEzLCAxMX0sIHsgMTIsIDEzLCAxN30sIHsgMTIsIDEzLCAxOX0sIHsgMTIsIDEzLCAyM30sCiAgICB7IDEyLCAxNCwgIDF9LCB7IDEyLCAxNCwgIDJ9LCB7IDEyLCAxNCwgIDV9LCB7IDEyLCAxNCwgMjJ9LAogICAgeyAxMiwgMTUsICAxfSwgeyAxMiwgMTUsIDIyfSwgeyAxMiwgMTgsICAxfSwgeyAxMiwgMTgsICA1fSwKICAgIHsgMTIsIDE4LCAgOX0sIHsgMTIsIDE4LCAxN30sIHsgMTIsIDE4LCAxOX0sIHsgMTIsIDE5LCAgMX0sCiAgICB7IDEyLCAyMCwgIDF9LCB7IDEyLCAyMCwgIDJ9LCB7IDEyLCAyMCwgIDV9LCB7IDEyLCAyMCwgIDl9LAogICAgeyAxMiwgMjAsIDE3fSwgeyAxMiwgMjAsIDE5fSwgeyAxMiwgMjAsIDIzfSwgeyAxMiwgMjEsICAxfSwKICAgIHsgMTIsIDIxLCAyMn0sIHsgMTIsIDIyLCAgMX0sIHsgMTIsIDIzLCAgMX0sIHsgMTIsIDIzLCAgNX0sCiAgICB7IDEyLCAyNiwgMjN9LCB7IDEyLCAyNywgIDF9LCB7IDEyLCAyNywgIDJ9LCB7IDEyLCAyNywgIDV9LAogICAgeyAxMiwgMjcsICA5fSwgeyAxMiwgMjcsIDExfSwgeyAxMiwgMjcsIDE2fSwgeyAxMiwgMjcsIDE3fSwKICAgIHsgMTIsIDI3LCAxOX0sIHsgMTIsIDI4LCAgMX0sIHsgMTIsIDI4LCAgNX0sIHsgMTIsIDI4LCAgOX0sCiAgICB7IDEyLCAyOCwgMTd9LCB7IDEyLCAyOSwgIDF9LCB7IDEyLCAyOSwgIDJ9LCB7IDEyLCAyOSwgIDV9LAogICAgeyAxMiwgMjksICA5fSwgeyAxMiwgMjksIDE3fSwgeyAxMiwgMjksIDE5fSwgeyAxMiwgMjksIDIxfSwKICAgIHsgMTIsIDI5LCAyM30sIHsgMTMsICAzLCAgMX0sIHsgMTMsICAzLCAgMn0sIHsgMTMsICAzLCAgNX0sCiAgICB7IDEzLCAgMywgIDZ9LCB7IDEzLCAgMywgIDd9LCB7IDEzLCAgMywgIDl9LCB7IDEzLCAgMywgMTB9LAogICAgeyAxMywgIDMsIDExfSwgeyAxMywgIDMsIDE2fSwgeyAxMywgIDMsIDE3fSwgeyAxMywgIDMsIDE5fSwKICAgIHsgMTMsICAzLCAyMX0sIHsgMTMsICAzLCAyMn0sIHsgMTMsICAzLCAyM30sIHsgMTMsICAzLCAyN30sCiAgICB7IDEzLCAgMywgMjh9LCB7IDEzLCAgNCwgIDF9LCB7IDEzLCAgNCwgIDJ9LCB7IDEzLCAgNCwgIDV9LAogICAgeyAxMywgIDQsICA5fSwgeyAxMywgIDQsIDE3fSwgeyAxMywgIDQsIDE5fSwgeyAxMywgIDQsIDIxfSwKICAgIHsgMTMsICA0LCAyMn0sIHsgMTMsICA0LCAyM30sIHsgMTMsICA1LCAgMX0sIHsgMTMsICA1LCAgMn0sCiAgICB7IDEzLCAgNSwgIDV9LCB7IDEzLCAgNSwgIDl9LCB7IDEzLCAgNSwgMTJ9LCB7IDEzLCAgNSwgMTd9LAogICAgeyAxMywgIDUsIDE5fSwgeyAxMywgIDUsIDIxfSwgeyAxMywgIDUsIDIzfSwgeyAxMywgIDUsIDI3fSwKICAgIHsgMTMsICA1LCAyOX0sIHsgMTMsICA2LCAgMX0sIHsgMTMsICA2LCAgNX0sIHsgMTMsICA2LCAgOX0sCiAgICB7IDEzLCAgNiwgMTl9LCB7IDEzLCAgNywgIDF9LCB7IDEzLCAgNywgIDJ9LCB7IDEzLCAgNywgIDV9LAogICAgeyAxMywgIDcsICA2fSwgeyAxMywgIDcsICA4fSwgeyAxMywgIDcsICA5fSwgeyAxMywgIDcsIDEwfSwKICAgIHsgMTMsICA3LCAxMX0sIHsgMTMsICA3LCAxN30sIHsgMTMsICA3LCAxOX0sIHsgMTMsICA3LCAyMH0sCiAgICB7IDEzLCAgNywgMjF9LCB7IDEzLCAgNywgMjJ9LCB7IDEzLCAgNywgMjN9LCB7IDEzLCAgNywgMjR9LAogICAgeyAxMywgIDcsIDI2fSwgeyAxMywgIDcsIDI4fSwgeyAxMywgMTAsICAxfSwgeyAxMywgMTAsICAyfSwKICAgIHsgMTMsIDEwLCAgNX0sIHsgMTMsIDEwLCAgOX0sIHsgMTMsIDEwLCAxN30sIHsgMTMsIDEwLCAxOX0sCiAgICB7IDEzLCAxMCwgMjF9LCB7IDEzLCAxMCwgMjN9LCB7IDEzLCAxMSwgIDF9LCB7IDEzLCAxMSwgIDJ9LAogICAgeyAxMywgMTEsICAzfSwgeyAxMywgMTEsICA1fSwgeyAxMywgMTEsICA5fSwgeyAxMywgMTEsIDExfSwKICAgIHsgMTMsIDExLCAxMn0sIHsgMTMsIDExLCAxN30sIHsgMTMsIDExLCAxOX0sIHsgMTMsIDExLCAyMH0sCiAgICB7IDEzLCAxMSwgMjF9LCB7IDEzLCAxMSwgMjJ9LCB7IDEzLCAxMSwgMjN9LCB7IDEzLCAxMSwgMjd9LAogICAgeyAxMywgMTEsIDI4fSwgeyAxMywgMTEsIDI5fSwgeyAxMywgMTIsICAxfSwgeyAxMywgMTIsICA1fSwKICAgIHsgMTMsIDEyLCAgOX0sIHsgMTMsIDEyLCAxN30sIHsgMTMsIDEyLCAxOX0sIHsgMTMsIDEyLCAyMX0sCiAgICB7IDEzLCAxMiwgMjJ9LCB7IDEzLCAxMywgIDF9LCB7IDEzLCAxMywgIDJ9LCB7IDEzLCAxMywgIDV9LAogICAgeyAxMywgMTMsICA5fSwgeyAxMywgMTMsIDEwfSwgeyAxMywgMTMsIDExfSwgeyAxMywgMTMsIDEzfSwKICAgIHsgMTMsIDEzLCAxNn0sIHsgMTMsIDEzLCAxN30sIHsgMTMsIDEzLCAxOX0sIHsgMTMsIDEzLCAyMX0sCiAgICB7IDEzLCAxMywgMjN9LCB7IDEzLCAxMywgMjV9LCB7IDEzLCAxNCwgIDF9LCB7IDEzLCAxNCwgIDJ9LAogICAgeyAxMywgMTQsICA1fSwgeyAxMywgMTQsICA5fSwgeyAxMywgMTQsIDE3fSwgeyAxMywgMTQsIDE5fSwKICAgIHsgMTMsIDE0LCAyMX0sIHsgMTMsIDE0LCAyMn0sIHsgMTMsIDE0LCAyM30sIHsgMTMsIDE1LCAgMX0sCiAgICB7IDEzLCAxNSwgIDJ9LCB7IDEzLCAxNSwgIDV9LCB7IDEzLCAxNSwgMTd9LCB7IDEzLCAxNSwgMjF9LAogICAgeyAxMywgMTUsIDIzfSwgeyAxMywgMTgsICAxfSwgeyAxMywgMTgsICAyfSwgeyAxMywgMTgsICA1fSwKICAgIHsgMTMsIDE4LCAgOX0sIHsgMTMsIDE4LCAxN30sIHsgMTMsIDE4LCAxOX0sIHsgMTMsIDE4LCAyMX0sCiAgICB7IDEzLCAxOCwgMjN9LCB7IDEzLCAxOSwgIDF9LCB7IDEzLCAxOSwgIDJ9LCB7IDEzLCAxOSwgIDV9LAogICAgeyAxMywgMTksICA5fSwgeyAxMywgMTksIDE3fSwgeyAxMywgMTksIDE5fSwgeyAxMywgMTksIDIxfSwKICAgIHsgMTMsIDE5LCAyM30sIHsgMTMsIDIwLCAgMX0sIHsgMTMsIDIwLCAgMn0sIHsgMTMsIDIwLCAgNX0sCiAgICB7IDEzLCAyMCwgIDl9LCB7IDEzLCAyMCwgMTB9LCB7IDEzLCAyMCwgMTF9LCB7IDEzLCAyMCwgMTd9LAogICAgeyAxMywgMjAsIDE5fSwgeyAxMywgMjAsIDIxfSwgeyAxMywgMjAsIDIzfSwgeyAxMywgMjEsICAxfSwKICAgIHsgMTMsIDIxLCAgMn0sIHsgMTMsIDIxLCAgNX0sIHsgMTMsIDIxLCAgOX0sIHsgMTMsIDIxLCAxN30sCiAgICB7IDEzLCAyMSwgMTl9LCB7IDEzLCAyMSwgMjJ9LCB7IDEzLCAyMSwgMjN9LCB7IDEzLCAyMiwgIDF9LAogICAgeyAxMywgMjIsICAyfSwgeyAxMywgMjIsICA1fSwgeyAxMywgMjIsICA5fSwgeyAxMywgMjIsIDE3fSwKICAgIHsgMTMsIDIyLCAxOX0sIHsgMTMsIDIyLCAyM30sIHsgMTMsIDIzLCAgMX0sIHsgMTMsIDIzLCAgMn0sCiAgICB7IDEzLCAyMywgIDV9LCB7IDEzLCAyMywgIDl9LCB7IDEzLCAyMywgMTd9LCB7IDEzLCAyMywgMTl9LAogICAgeyAxMywgMjMsIDIxfSwgeyAxMywgMjMsIDIzfSwgeyAxMywgMjYsICAxfSwgeyAxMywgMjYsICAyfSwKICAgIHsgMTMsIDI2LCAgNX0sIHsgMTMsIDI2LCAgOX0sIHsgMTMsIDI2LCAxN30sIHsgMTMsIDI2LCAxOX0sCiAgICB7IDEzLCAyNiwgMjF9LCB7IDEzLCAyNiwgMjN9LCB7IDEzLCAyNiwgMjV9LCB7IDEzLCAyNywgIDF9LAogICAgeyAxMywgMjcsICAyfSwgeyAxMywgMjcsICA1fSwgeyAxMywgMjcsICA5fSwgeyAxMywgMjcsIDE1fSwKICAgIHsgMTMsIDI3LCAxN30sIHsgMTMsIDI3LCAxOX0sIHsgMTMsIDI3LCAyMX0sIHsgMTMsIDI3LCAyM30sCiAgICB7IDEzLCAyNywgMjR9LCB7IDEzLCAyNywgMjV9LCB7IDEzLCAyNywgMjZ9LCB7IDEzLCAyNywgMjd9LAogICAgeyAxMywgMjcsIDI4fSwgeyAxMywgMjcsIDI5fSwgeyAxMywgMjgsICAxfSwgeyAxMywgMjgsICA1fSwKICAgIHsgMTMsIDI4LCAgOX0sIHsgMTMsIDI4LCAxN30sIHsgMTMsIDI4LCAyMX0sIHsgMTMsIDI5LCAgMX0sCiAgICB7IDEzLCAyOSwgIDJ9LCB7IDEzLCAyOSwgIDV9LCB7IDEzLCAyOSwgIDl9LCB7IDEzLCAyOSwgMTB9LAogICAgeyAxMywgMjksIDExfSwgeyAxMywgMjksIDE2fSwgeyAxMywgMjksIDE3fSwgeyAxMywgMjksIDE5fSwKICAgIHsgMTMsIDI5LCAyMX0sIHsgMTMsIDI5LCAyMn0sIHsgMTMsIDI5LCAyM30sIHsgMTMsIDI5LCAyNH0sCiAgICB7IDEzLCAyOSwgMjh9LCB7IDE0LCAgMywgIDF9LCB7IDE0LCAgMywgIDJ9LCB7IDE0LCAgMywgIDV9LAogICAgeyAxNCwgIDMsICA3fSwgeyAxNCwgIDMsICA4fSwgeyAxNCwgIDMsICA5fSwgeyAxNCwgIDMsIDExfSwKICAgIHsgMTQsICAzLCAxN30sIHsgMTQsICAzLCAxOX0sIHsgMTQsICAzLCAyMX0sIHsgMTQsICAzLCAyMn0sCiAgICB7IDE0LCAgMywgMjN9LCB7IDE0LCAgMywgMjR9LCB7IDE0LCAgNCwgIDF9LCB7IDE0LCAgNCwgIDJ9LAogICAgeyAxNCwgIDQsICA1fSwgeyAxNCwgIDQsICA5fSwgeyAxNCwgIDQsIDE3fSwgeyAxNCwgIDQsIDE5fSwKICAgIHsgMTQsICA0LCAyMX0sIHsgMTQsICA0LCAyMn0sIHsgMTQsICA0LCAyM30sIHsgMTQsICA1LCAgMX0sCiAgICB7IDE0LCAgNSwgIDJ9LCB7IDE0LCAgNSwgIDV9LCB7IDE0LCAgNSwgIDd9LCB7IDE0LCAgNSwgIDl9LAogICAgeyAxNCwgIDUsIDE3fSwgeyAxNCwgIDUsIDIzfSwgeyAxNCwgIDYsICAxfSwgeyAxNCwgIDYsICA1fSwKICAgIHsgMTQsICA2LCAgOX0sIHsgMTQsICA3LCAgMX0sIHsgMTQsICA3LCAgMn0sIHsgMTQsICA3LCAgNX0sCiAgICB7IDE0LCAgNywgIDl9LCB7IDE0LCAgNywgMTF9LCB7IDE0LCAgNywgMTd9LCB7IDE0LCAgNywgMTl9LAogICAgeyAxNCwgIDcsIDIxfSwgeyAxNCwgIDcsIDIzfSwgeyAxNCwgIDcsIDI0fSwgeyAxNCwgMTAsICAxfSwKICAgIHsgMTQsIDEwLCAgMn0sIHsgMTQsIDEwLCAgNX0sIHsgMTQsIDEwLCAgOX0sIHsgMTQsIDEwLCAxN30sCiAgICB7IDE0LCAxMCwgMTl9LCB7IDE0LCAxMCwgMjF9LCB7IDE0LCAxMCwgMjN9LCB7IDE0LCAxMSwgIDF9LAogICAgeyAxNCwgMTEsICA1fSwgeyAxNCwgMTEsICA5fSwgeyAxNCwgMTEsIDE3fSwgeyAxNCwgMTEsIDE5fSwKICAgIHsgMTQsIDExLCAyMn0sIHsgMTQsIDExLCAyM30sIHsgMTQsIDEyLCAgMX0sIHsgMTQsIDEzLCAgMX0sCiAgICB7IDE0LCAxMywgIDJ9LCB7IDE0LCAxMywgIDV9LCB7IDE0LCAxMywgIDl9LCB7IDE0LCAxMywgMTF9LAogICAgeyAxNCwgMTMsIDE3fSwgeyAxNCwgMTMsIDE5fSwgeyAxNCwgMTMsIDIxfSwgeyAxNCwgMTMsIDIzfSwKICAgIHsgMTQsIDEzLCAyNH0sIHsgMTQsIDEzLCAyNX0sIHsgMTQsIDEzLCAyOX0sIHsgMTQsIDE0LCAgMX0sCiAgICB7IDE0LCAxNCwgIDJ9LCB7IDE0LCAxNCwgIDl9LCB7IDE0LCAxNCwgMTl9LCB7IDE0LCAxNCwgMjF9LAogICAgeyAxNCwgMTQsIDIzfSwgeyAxNCwgMTUsICAxfSwgeyAxNCwgMTUsIDIyfSwgeyAxNCwgMTUsIDIzfSwKICAgIHsgMTQsIDE4LCAgMX0sIHsgMTQsIDE4LCAgNX0sIHsgMTQsIDE4LCAgOX0sIHsgMTQsIDE4LCAxN30sCiAgICB7IDE0LCAxOCwgMTl9LCB7IDE0LCAxOCwgMjF9LCB7IDE0LCAxOCwgMjN9LCB7IDE0LCAxOSwgIDF9LAogICAgeyAxNCwgMTksICAyfSwgeyAxNCwgMTksICA1fSwgeyAxNCwgMTksIDIzfSwgeyAxNCwgMjAsICAxfSwKICAgIHsgMTQsIDIwLCAgMn0sIHsgMTQsIDIwLCAgNX0sIHsgMTQsIDIwLCAgOX0sIHsgMTQsIDIwLCAxMH0sCiAgICB7IDE0LCAyMCwgMTF9LCB7IDE0LCAyMCwgMTd9LCB7IDE0LCAyMCwgMTl9LCB7IDE0LCAyMCwgMjF9LAogICAgeyAxNCwgMjAsIDIzfSwgeyAxNCwgMjEsICAxfSwgeyAxNCwgMjEsIDIyfSwgeyAxNCwgMjIsICAxfSwKICAgIHsgMTQsIDIzLCAgMX0sIHsgMTQsIDIzLCAgMn0sIHsgMTQsIDIzLCAgNX0sIHsgMTQsIDIzLCAgOX0sCiAgICB7IDE0LCAyMywgMTd9LCB7IDE0LCAyMywgMTl9LCB7IDE0LCAyMywgMjF9LCB7IDE0LCAyNiwgIDF9LAogICAgeyAxNCwgMjYsICA1fSwgeyAxNCwgMjYsICA5fSwgeyAxNCwgMjYsIDE3fSwgeyAxNCwgMjcsICAxfSwKICAgIHsgMTQsIDI3LCAgMn0sIHsgMTQsIDI3LCAgNX0sIHsgMTQsIDI3LCAgOX0sIHsgMTQsIDI3LCAxN30sCiAgICB7IDE0LCAyNywgMTl9LCB7IDE0LCAyNywgMjF9LCB7IDE0LCAyNywgMjN9LCB7IDE0LCAyOSwgIDF9LAogICAgeyAxNCwgMjksICAyfSwgeyAxNCwgMjksICA1fSwgeyAxNCwgMjksICA4fSwgeyAxNCwgMjksICA5fSwKICAgIHsgMTQsIDI5LCAxMX0sIHsgMTQsIDI5LCAxN30sIHsgMTQsIDI5LCAxOX0sIHsgMTQsIDI5LCAyMX0sCiAgICB7IDE0LCAyOSwgMjN9LCB7IDE0LCAyOSwgMjR9LCB7IDE0LCAyOSwgMjd9LCB7IDE0LCAyOSwgMjh9LAogICAgeyAxNSwgIDMsICAxfSwgeyAxNSwgIDMsICAyfSwgeyAxNSwgIDMsICA1fSwgeyAxNSwgIDMsICA3fSwKICAgIHsgMTUsICAzLCAgOX0sIHsgMTUsICAzLCAxMn0sIHsgMTUsICAzLCAxN30sIHsgMTUsICAzLCAxOX0sCiAgICB7IDE1LCAgMywgMjF9LCB7IDE1LCAgMywgMjJ9LCB7IDE1LCAgMywgMjN9LCB7IDE1LCAgNCwgIDF9LAogICAgeyAxNSwgIDQsICAyfSwgeyAxNSwgIDQsICA1fSwgeyAxNSwgIDQsICA5fSwgeyAxNSwgIDQsIDE3fSwKICAgIHsgMTUsICA0LCAxOX0sIHsgMTUsICA0LCAyMX0sIHsgMTUsICA0LCAyMn0sIHsgMTUsICA0LCAyM30sCiAgICB7IDE1LCAgNSwgIDF9LCB7IDE1LCAgNSwgIDV9LCB7IDE1LCAgNSwgMjN9LCB7IDE1LCAgNywgIDF9LAogICAgeyAxNSwgIDcsICAyfSwgeyAxNSwgIDcsICA1fSwgeyAxNSwgIDcsICA5fSwgeyAxNSwgIDcsIDE3fSwKICAgIHsgMTUsICA3LCAxOX0sIHsgMTUsICA3LCAyMX0sIHsgMTUsICA3LCAyMn0sIHsgMTUsICA3LCAyM30sCiAgICB7IDE1LCAxMCwgIDF9LCB7IDE1LCAxMCwgMjN9LCB7IDE1LCAxMSwgIDF9LCB7IDE1LCAxMSwgMjJ9LAogICAgeyAxNSwgMTMsICAxfSwgeyAxNSwgMTMsICAyfSwgeyAxNSwgMTMsICA1fSwgeyAxNSwgMTMsICA5fSwKICAgIHsgMTUsIDEzLCAxN30sIHsgMTUsIDEzLCAxOX0sIHsgMTUsIDEzLCAyMX0sIHsgMTUsIDEzLCAyM30sCiAgICB7IDE1LCAxMywgMjV9LCB7IDE1LCAxNCwgIDF9LCB7IDE1LCAxNCwgIDJ9LCB7IDE1LCAxNCwgIDl9LAogICAgeyAxNSwgMTQsIDIyfSwgeyAxNSwgMTUsICAxfSwgeyAxNSwgMTUsIDIyfSwgeyAxNSwgMTgsICAxfSwKICAgIHsgMTUsIDE4LCAgNX0sIHsgMTUsIDE4LCAgOX0sIHsgMTUsIDE4LCAxN30sIHsgMTUsIDE4LCAxOX0sCiAgICB7IDE1LCAxOSwgMjN9LCB7IDE1LCAyMCwgIDF9LCB7IDE1LCAyMCwgIDJ9LCB7IDE1LCAyMCwgIDV9LAogICAgeyAxNSwgMjAsICA5fSwgeyAxNSwgMjAsIDE3fSwgeyAxNSwgMjAsIDE5fSwgeyAxNSwgMjAsIDIzfSwKICAgIHsgMTUsIDIxLCAgMX0sIHsgMTUsIDIxLCAyMn0sIHsgMTUsIDIxLCAyM30sIHsgMTUsIDIzLCAgMX0sCiAgICB7IDE1LCAyNiwgIDF9LCB7IDE1LCAyNywgIDF9LCB7IDE1LCAyNywgMTd9LCB7IDE1LCAyNywgMjF9LAogICAgeyAxNSwgMjcsIDIzfSwgeyAxNSwgMjksICAxfSwgeyAxNSwgMjksICAyfSwgeyAxNSwgMjksICA1fSwKICAgIHsgMTUsIDI5LCAgOX0sIHsgMTUsIDI5LCAxN30sIHsgMTUsIDI5LCAxOX0sIHsgMTUsIDI5LCAyM30sCiAgICB7IDE1LCAyOSwgMjR9LCB7IDE1LCAyOSwgMjl9LCB7IDE2LCAgMywgIDF9LCB7IDE2LCAgMywgIDJ9LAogICAgeyAxNiwgIDMsICA1fSwgeyAxNiwgIDMsICA3fSwgeyAxNiwgIDMsICA5fSwgeyAxNiwgIDMsIDE3fSwKICAgIHsgMTYsICAzLCAxOX0sIHsgMTYsICAzLCAyMX0sIHsgMTYsICAzLCAyMn0sIHsgMTYsICAzLCAyM30sCiAgICB7IDE2LCAgMywgMjR9LCB7IDE2LCAgNCwgIDF9LCB7IDE2LCAgNCwgIDJ9LCB7IDE2LCAgNCwgIDV9LAogICAgeyAxNiwgIDQsICA5fSwgeyAxNiwgIDQsIDE3fSwgeyAxNiwgIDQsIDE5fSwgeyAxNiwgIDQsIDIxfSwKICAgIHsgMTYsICA0LCAyMn0sIHsgMTYsICA0LCAyM30sIHsgMTYsICA1LCAgMX0sIHsgMTYsICA1LCAgNX0sCiAgICB7IDE2LCAgNSwgIDd9LCB7IDE2LCAgNSwgIDl9LCB7IDE2LCAgNSwgMTd9LCB7IDE2LCAgNSwgMjN9LAogICAgeyAxNiwgIDcsICAxfSwgeyAxNiwgIDcsICAyfSwgeyAxNiwgIDcsICA1fSwgeyAxNiwgIDcsICA5fSwKICAgIHsgMTYsICA3LCAxN30sIHsgMTYsICA3LCAxOX0sIHsgMTYsICA3LCAyMX0sIHsgMTYsICA3LCAyMn0sCiAgICB7IDE2LCAgNywgMjN9LCB7IDE2LCAxMCwgIDF9LCB7IDE2LCAxMCwgIDJ9LCB7IDE2LCAxMCwgIDV9LAogICAgeyAxNiwgMTAsICA5fSwgeyAxNiwgMTAsIDE3fSwgeyAxNiwgMTAsIDE5fSwgeyAxNiwgMTAsIDIxfSwKICAgIHsgMTYsIDEwLCAyM30sIHsgMTYsIDExLCAgMX0sIHsgMTYsIDExLCAgNX0sIHsgMTYsIDExLCAyMn0sCiAgICB7IDE2LCAxMiwgIDF9LCB7IDE2LCAxMiwgIDV9LCB7IDE2LCAxMiwgMjN9LCB7IDE2LCAxMywgIDF9LAogICAgeyAxNiwgMTMsICAyfSwgeyAxNiwgMTMsICA1fSwgeyAxNiwgMTMsICA5fSwgeyAxNiwgMTMsIDE3fSwKICAgIHsgMTYsIDEzLCAxOX0sIHsgMTYsIDEzLCAyMX0sIHsgMTYsIDEzLCAyM30sIHsgMTYsIDE0LCAgMX0sCiAgICB7IDE2LCAxNCwgIDV9LCB7IDE2LCAxNCwgIDl9LCB7IDE2LCAxNCwgMjN9LCB7IDE2LCAxOCwgIDF9LAogICAgeyAxNiwgMTgsICA1fSwgeyAxNiwgMTgsICA5fSwgeyAxNiwgMTgsIDE3fSwgeyAxNiwgMTgsIDE5fSwKICAgIHsgMTYsIDE4LCAyMX0sIHsgMTYsIDE4LCAyM30sIHsgMTYsIDE5LCAgMX0sIHsgMTYsIDE5LCAxN30sCiAgICB7IDE2LCAyMCwgIDF9LCB7IDE2LCAyMCwgIDJ9LCB7IDE2LCAyMCwgIDV9LCB7IDE2LCAyMCwgIDl9LAogICAgeyAxNiwgMjAsIDE3fSwgeyAxNiwgMjAsIDE5fSwgeyAxNiwgMjAsIDIxfSwgeyAxNiwgMjAsIDIzfSwKICAgIHsgMTYsIDIxLCAgMX0sIHsgMTYsIDIxLCAyMn0sIHsgMTYsIDIyLCAgMX0sIHsgMTYsIDIyLCAgNX0sCiAgICB7IDE2LCAyMywgIDF9LCB7IDE2LCAyMywgIDV9LCB7IDE2LCAyMywgIDl9LCB7IDE2LCAyMywgMTd9LAogICAgeyAxNiwgMjMsIDE5fSwgeyAxNiwgMjMsIDIxfSwgeyAxNiwgMjMsIDIzfSwgeyAxNiwgMjYsICAxfSwKICAgIHsgMTYsIDI2LCAgNX0sIHsgMTYsIDI2LCAgOX0sIHsgMTYsIDI2LCAxN30sIHsgMTYsIDI2LCAyM30sCiAgICB7IDE2LCAyNywgIDF9LCB7IDE2LCAyNywgIDJ9LCB7IDE2LCAyNywgIDV9LCB7IDE2LCAyNywgIDl9LAogICAgeyAxNiwgMjcsIDE3fSwgeyAxNiwgMjcsIDE5fSwgeyAxNiwgMjcsIDIxfSwgeyAxNiwgMjcsIDIzfSwKICAgIHsgMTYsIDI5LCAgMX0sIHsgMTYsIDI5LCAgMn0sIHsgMTYsIDI5LCAgNX0sIHsgMTYsIDI5LCAgOH0sCiAgICB7IDE2LCAyOSwgIDl9LCB7IDE2LCAyOSwgMTB9LCB7IDE2LCAyOSwgMTd9LCB7IDE2LCAyOSwgMTl9LAogICAgeyAxNiwgMjksIDIxfSwgeyAxNiwgMjksIDIzfSwgeyAxNywgIDMsICAxfSwgeyAxNywgIDMsICAyfSwKICAgIHsgMTcsICAzLCAgNX0sIHsgMTcsICAzLCAgOX0sIHsgMTcsICAzLCAxN30sIHsgMTcsICAzLCAxOX0sCiAgICB7IDE3LCAgMywgMjF9LCB7IDE3LCAgMywgMjN9LCB7IDE3LCAgNCwgIDF9LCB7IDE3LCAgNCwgIDJ9LAogICAgeyAxNywgIDQsICA1fSwgeyAxNywgIDQsICA5fSwgeyAxNywgIDQsIDE3fSwgeyAxNywgIDQsIDE5fSwKICAgIHsgMTcsICA0LCAyMX0sIHsgMTcsICA0LCAyMn0sIHsgMTcsICA0LCAyM30sIHsgMTcsICA1LCAgMX0sCiAgICB7IDE3LCAgNSwgIDJ9LCB7IDE3LCAgNSwgMjN9LCB7IDE3LCAgNywgIDF9LCB7IDE3LCAgNywgIDJ9LAogICAgeyAxNywgIDcsICA1fSwgeyAxNywgIDcsICA4fSwgeyAxNywgIDcsICA5fSwgeyAxNywgIDcsIDE3fSwKICAgIHsgMTcsICA3LCAxOX0sIHsgMTcsICA3LCAyMX0sIHsgMTcsICA3LCAyMn0sIHsgMTcsICA3LCAyM30sCiAgICB7IDE3LCAxMCwgIDF9LCB7IDE3LCAxMCwgIDJ9LCB7IDE3LCAxMCwgIDV9LCB7IDE3LCAxMCwgIDl9LAogICAgeyAxNywgMTAsIDE3fSwgeyAxNywgMTAsIDE5fSwgeyAxNywgMTAsIDIxfSwgeyAxNywgMTAsIDIzfSwKICAgIHsgMTcsIDExLCAgMX0sIHsgMTcsIDExLCAgNX0sIHsgMTcsIDExLCAgOX0sIHsgMTcsIDExLCAxN30sCiAgICB7IDE3LCAxMSwgMTl9LCB7IDE3LCAxMSwgMjF9LCB7IDE3LCAxMSwgMjJ9LCB7IDE3LCAxMSwgMjN9LAogICAgeyAxNywgMTIsICAxfSwgeyAxNywgMTMsICAxfSwgeyAxNywgMTMsICAyfSwgeyAxNywgMTMsICA1fSwKICAgIHsgMTcsIDEzLCAgOX0sIHsgMTcsIDEzLCAxN30sIHsgMTcsIDEzLCAxOX0sIHsgMTcsIDEzLCAyMX0sCiAgICB7IDE3LCAxMywgMjN9LCB7IDE3LCAxNCwgIDF9LCB7IDE3LCAxNCwgIDJ9LCB7IDE3LCAxNCwgIDV9LAogICAgeyAxNywgMTQsICA5fSwgeyAxNywgMTQsIDE3fSwgeyAxNywgMTQsIDIzfSwgeyAxNywgMTUsICAxfSwKICAgIHsgMTcsIDE1LCAyM30sIHsgMTcsIDE4LCAgMX0sIHsgMTcsIDE4LCAgOX0sIHsgMTcsIDE5LCAgMX0sCiAgICB7IDE3LCAyMCwgIDF9LCB7IDE3LCAyMCwgIDJ9LCB7IDE3LCAyMCwgIDV9LCB7IDE3LCAyMCwgIDl9LAogICAgeyAxNywgMjAsIDE3fSwgeyAxNywgMjAsIDE5fSwgeyAxNywgMjAsIDIxfSwgeyAxNywgMjAsIDIzfSwKICAgIHsgMTcsIDIxLCAgMX0sIHsgMTcsIDIxLCAgNX0sIHsgMTcsIDIxLCAgOX0sIHsgMTcsIDIxLCAyM30sCiAgICB7IDE3LCAyMiwgIDF9LCB7IDE3LCAyMiwgMjN9LCB7IDE3LCAyMywgIDF9LCB7IDE3LCAyMywgIDJ9LAogICAgeyAxNywgMjMsICA1fSwgeyAxNywgMjMsICA5fSwgeyAxNywgMjMsIDE3fSwgeyAxNywgMjMsIDE5fSwKICAgIHsgMTcsIDIzLCAyMX0sIHsgMTcsIDIzLCAyM30sIHsgMTcsIDI2LCAgMX0sIHsgMTcsIDI2LCAgNX0sCiAgICB7IDE3LCAyNiwgIDl9LCB7IDE3LCAyNiwgMTd9LCB7IDE3LCAyNywgIDF9LCB7IDE3LCAyNywgIDJ9LAogICAgeyAxNywgMjcsICA1fSwgeyAxNywgMjcsICA5fSwgeyAxNywgMjcsIDE3fSwgeyAxNywgMjcsIDE5fSwKICAgIHsgMTcsIDI3LCAyM30sIHsgMTcsIDI5LCAgMX0sIHsgMTcsIDI5LCAgMn0sIHsgMTcsIDI5LCAgNX0sCiAgICB7IDE3LCAyOSwgIDl9LCB7IDE3LCAyOSwgMTd9LCB7IDE3LCAyOSwgMTl9LCB7IDE3LCAyOSwgMjF9LAogICAgeyAxNywgMjksIDIzfSwgeyAxOCwgIDMsICAxfSwgeyAxOCwgIDMsICAyfSwgeyAxOCwgIDMsICA1fSwKICAgIHsgMTgsICAzLCAgOX0sIHsgMTgsICAzLCAxMH0sIHsgMTgsICAzLCAxN30sIHsgMTgsICAzLCAxOX0sCiAgICB7IDE4LCAgMywgMjF9LCB7IDE4LCAgMywgMjJ9LCB7IDE4LCAgMywgMjN9LCB7IDE4LCAgNCwgIDF9LAogICAgeyAxOCwgIDQsICAyfSwgeyAxOCwgIDQsICA1fSwgeyAxOCwgIDQsICA5fSwgeyAxOCwgIDQsIDE3fSwKICAgIHsgMTgsICA0LCAxOX0sIHsgMTgsICA0LCAyMX0sIHsgMTgsICA0LCAyMn0sIHsgMTgsICA0LCAyM30sCiAgICB7IDE4LCAgNSwgIDF9LCB7IDE4LCAgNSwgMjN9LCB7IDE4LCAgNywgIDF9LCB7IDE4LCAgNywgIDJ9LAogICAgeyAxOCwgIDcsICA1fSwgeyAxOCwgIDcsICA5fSwgeyAxOCwgIDcsIDExfSwgeyAxOCwgIDcsIDE3fSwKICAgIHsgMTgsICA3LCAxOX0sIHsgMTgsICA3LCAyMX0sIHsgMTgsICA3LCAyMn0sIHsgMTgsICA3LCAyM30sCiAgICB7IDE4LCAxMCwgIDF9LCB7IDE4LCAxMCwgIDJ9LCB7IDE4LCAxMCwgIDV9LCB7IDE4LCAxMCwgIDl9LAogICAgeyAxOCwgMTAsIDE3fSwgeyAxOCwgMTAsIDE5fSwgeyAxOCwgMTAsIDIxfSwgeyAxOCwgMTAsIDIzfSwKICAgIHsgMTgsIDExLCAgMX0sIHsgMTgsIDExLCAgNX0sIHsgMTgsIDExLCAyMn0sIHsgMTgsIDEyLCAgMX0sCiAgICB7IDE4LCAxMiwgIDV9LCB7IDE4LCAxMywgIDF9LCB7IDE4LCAxMywgIDJ9LCB7IDE4LCAxMywgIDV9LAogICAgeyAxOCwgMTMsICA5fSwgeyAxOCwgMTMsIDE3fSwgeyAxOCwgMTMsIDE5fSwgeyAxOCwgMTMsIDIxfSwKICAgIHsgMTgsIDEzLCAyM30sIHsgMTgsIDEzLCAyOH0sIHsgMTgsIDE0LCAgMX0sIHsgMTgsIDE0LCAgNX0sCiAgICB7IDE4LCAxNSwgIDF9LCB7IDE4LCAxOCwgIDF9LCB7IDE4LCAxOCwgIDV9LCB7IDE4LCAxOCwgMjF9LAogICAgeyAxOCwgMTgsIDIzfSwgeyAxOCwgMTksICAxfSwgeyAxOCwgMjAsICAxfSwgeyAxOCwgMjAsICAyfSwKICAgIHsgMTgsIDIwLCAgNX0sIHsgMTgsIDIwLCAgOX0sIHsgMTgsIDIwLCAxN30sIHsgMTgsIDIwLCAxOX0sCiAgICB7IDE4LCAyMCwgMjF9LCB7IDE4LCAyMCwgMjN9LCB7IDE4LCAyMSwgIDF9LCB7IDE4LCAyMSwgMjJ9LAogICAgeyAxOCwgMjIsICAxfSwgeyAxOCwgMjMsICAxfSwgeyAxOCwgMjMsICAyfSwgeyAxOCwgMjMsICA1fSwKICAgIHsgMTgsIDIzLCAgOX0sIHsgMTgsIDIzLCAxN30sIHsgMTgsIDIzLCAxOX0sIHsgMTgsIDIzLCAyM30sCiAgICB7IDE4LCAyNiwgIDF9LCB7IDE4LCAyNiwgIDV9LCB7IDE4LCAyNiwgIDl9LCB7IDE4LCAyNiwgMTd9LAogICAgeyAxOCwgMjYsIDIzfSwgeyAxOCwgMjcsICAxfSwgeyAxOCwgMjcsICAyfSwgeyAxOCwgMjcsICA1fSwKICAgIHsgMTgsIDI3LCAgOH0sIHsgMTgsIDI3LCAgOX0sIHsgMTgsIDI3LCAxMX0sIHsgMTgsIDI3LCAxN30sCiAgICB7IDE4LCAyNywgMTl9LCB7IDE4LCAyNywgMjF9LCB7IDE4LCAyOCwgIDF9LCB7IDE4LCAyOCwgIDV9LAogICAgeyAxOCwgMjgsICA5fSwgeyAxOCwgMjgsIDE3fSwgeyAxOCwgMjgsIDE5fSwgeyAxOCwgMjksICAxfSwKICAgIHsgMTgsIDI5LCAgMn0sIHsgMTgsIDI5LCAgNX0sIHsgMTgsIDI5LCAgOX0sIHsgMTgsIDI5LCAxN30sCiAgICB7IDE4LCAyOSwgMTl9LCB7IDE4LCAyOSwgMjF9LCB7IDE4LCAyOSwgMjN9LCB7IDE5LCAgMywgIDF9LAogICAgeyAxOSwgIDMsICAyfSwgeyAxOSwgIDMsICAzfSwgeyAxOSwgIDMsICA1fSwgeyAxOSwgIDMsICA5fSwKICAgIHsgMTksICAzLCAxMX0sIHsgMTksICAzLCAxN30sIHsgMTksICAzLCAxOX0sIHsgMTksICAzLCAyMX0sCiAgICB7IDE5LCAgMywgMjJ9LCB7IDE5LCAgMywgMjN9LCB7IDE5LCAgMywgMjd9LCB7IDE5LCAgNCwgIDF9LAogICAgeyAxOSwgIDQsICAyfSwgeyAxOSwgIDQsICA1fSwgeyAxOSwgIDQsICA5fSwgeyAxOSwgIDQsIDE3fSwKICAgIHsgMTksICA0LCAxOX0sIHsgMTksICA0LCAyMX0sIHsgMTksICA0LCAyMn0sIHsgMTksICA0LCAyM30sCiAgICB7IDE5LCAgNSwgIDF9LCB7IDE5LCAgNSwgIDJ9LCB7IDE5LCAgNywgIDF9LCB7IDE5LCAgNywgIDJ9LAogICAgeyAxOSwgIDcsICA1fSwgeyAxOSwgIDcsICA5fSwgeyAxOSwgIDcsIDE3fSwgeyAxOSwgIDcsIDE5fSwKICAgIHsgMTksICA3LCAyMX0sIHsgMTksICA3LCAyMn0sIHsgMTksICA3LCAyM30sIHsgMTksIDEwLCAgMX0sCiAgICB7IDE5LCAxMCwgIDJ9LCB7IDE5LCAxMCwgIDV9LCB7IDE5LCAxMCwgIDl9LCB7IDE5LCAxMCwgMTd9LAogICAgeyAxOSwgMTAsIDE5fSwgeyAxOSwgMTAsIDIxfSwgeyAxOSwgMTAsIDIzfSwgeyAxOSwgMTEsICAxfSwKICAgIHsgMTksIDExLCAgNX0sIHsgMTksIDExLCAgOX0sIHsgMTksIDExLCAxN30sIHsgMTksIDExLCAxOX0sCiAgICB7IDE5LCAxMSwgMjJ9LCB7IDE5LCAxMSwgMjN9LCB7IDE5LCAxMiwgIDF9LCB7IDE5LCAxMiwgIDl9LAogICAgeyAxOSwgMTIsIDE5fSwgeyAxOSwgMTIsIDIxfSwgeyAxOSwgMTMsICAxfSwgeyAxOSwgMTMsICAyfSwKICAgIHsgMTksIDEzLCAgNX0sIHsgMTksIDEzLCAgOX0sIHsgMTksIDEzLCAxN30sIHsgMTksIDEzLCAxOX0sCiAgICB7IDE5LCAxMywgMjF9LCB7IDE5LCAxMywgMjN9LCB7IDE5LCAxNCwgIDF9LCB7IDE5LCAxNCwgMjN9LAogICAgeyAxOSwgMTgsICAxfSwgeyAxOSwgMTgsICA1fSwgeyAxOSwgMTksICAxfSwgeyAxOSwgMTksICA1fSwKICAgIHsgMTksIDE5LCAgOX0sIHsgMTksIDE5LCAxOX0sIHsgMTksIDE5LCAyMX0sIHsgMTksIDIwLCAgMX0sCiAgICB7IDE5LCAyMCwgIDJ9LCB7IDE5LCAyMCwgIDV9LCB7IDE5LCAyMCwgIDh9LCB7IDE5LCAyMCwgIDl9LAogICAgeyAxOSwgMjAsIDExfSwgeyAxOSwgMjAsIDE3fSwgeyAxOSwgMjAsIDE5fSwgeyAxOSwgMjAsIDIxfSwKICAgIHsgMTksIDIwLCAyM30sIHsgMTksIDIxLCAgMX0sIHsgMTksIDIxLCAyM30sIHsgMTksIDIzLCAgMX0sCiAgICB7IDE5LCAyMywgIDV9LCB7IDE5LCAyMywgIDl9LCB7IDE5LCAyMywgMTd9LCB7IDE5LCAyMywgMjF9LAogICAgeyAxOSwgMjYsICAxfSwgeyAxOSwgMjYsICA1fSwgeyAxOSwgMjYsICA5fSwgeyAxOSwgMjYsIDE3fSwKICAgIHsgMTksIDI2LCAyMX0sIHsgMTksIDI2LCAyM30sIHsgMTksIDI3LCAgMX0sIHsgMTksIDI3LCAgNX0sCiAgICB7IDE5LCAyNywgIDl9LCB7IDE5LCAyNywgMTd9LCB7IDE5LCAyNywgMTl9LCB7IDE5LCAyNywgMjF9LAogICAgeyAxOSwgMjksICAxfSwgeyAxOSwgMjksICAyfSwgeyAxOSwgMjksICA1fSwgeyAxOSwgMjksICA5fSwKICAgIHsgMTksIDI5LCAxN30sIHsgMTksIDI5LCAxOX0sIHsgMTksIDI5LCAyMX0sIHsgMTksIDI5LCAyM30sCiAgICB7IDIwLCAgMywgIDF9LCB7IDIwLCAgMywgIDJ9LCB7IDIwLCAgMywgIDV9LCB7IDIwLCAgMywgIDl9LAogICAgeyAyMCwgIDMsIDE0fSwgeyAyMCwgIDMsIDE3fSwgeyAyMCwgIDMsIDE5fSwgeyAyMCwgIDMsIDIxfSwKICAgIHsgMjAsICAzLCAyM30sIHsgMjAsICA0LCAgMX0sIHsgMjAsICA0LCAgMn0sIHsgMjAsICA0LCAgNX0sCiAgICB7IDIwLCAgNCwgIDl9LCB7IDIwLCAgNCwgMTd9LCB7IDIwLCAgNCwgMTl9LCB7IDIwLCAgNCwgMjF9LAogICAgeyAyMCwgIDQsIDIyfSwgeyAyMCwgIDQsIDIzfSwgeyAyMCwgIDUsICAxfSwgeyAyMCwgIDUsIDIzfSwKICAgIHsgMjAsICA3LCAgMX0sIHsgMjAsICA3LCAgMn0sIHsgMjAsICA3LCAgNX0sIHsgMjAsICA3LCAgOX0sCiAgICB7IDIwLCAgNywgMTF9LCB7IDIwLCAgNywgMTd9LCB7IDIwLCAgNywgMTl9LCB7IDIwLCAgNywgMjF9LAogICAgeyAyMCwgIDcsIDIzfSwgeyAyMCwgMTAsICAxfSwgeyAyMCwgMTAsICAyfSwgeyAyMCwgMTAsICA1fSwKICAgIHsgMjAsIDEwLCAgOX0sIHsgMjAsIDEwLCAxN30sIHsgMjAsIDEwLCAxOX0sIHsgMjAsIDEwLCAyMX0sCiAgICB7IDIwLCAxMCwgMjN9LCB7IDIwLCAxMSwgIDF9LCB7IDIwLCAxMSwgIDJ9LCB7IDIwLCAxMSwgIDV9LAogICAgeyAyMCwgMTEsICA5fSwgeyAyMCwgMTEsIDE3fSwgeyAyMCwgMTEsIDE5fSwgeyAyMCwgMTEsIDIxfSwKICAgIHsgMjAsIDExLCAyMn0sIHsgMjAsIDExLCAyM30sIHsgMjAsIDEyLCAgMX0sIHsgMjAsIDEyLCAgNX0sCiAgICB7IDIwLCAxMiwgIDl9LCB7IDIwLCAxMiwgMTl9LCB7IDIwLCAxMywgIDF9LCB7IDIwLCAxMywgIDJ9LAogICAgeyAyMCwgMTMsICA1fSwgeyAyMCwgMTMsICA5fSwgeyAyMCwgMTMsIDE0fSwgeyAyMCwgMTMsIDE3fSwKICAgIHsgMjAsIDEzLCAxOX0sIHsgMjAsIDEzLCAyMX0sIHsgMjAsIDEzLCAyM30sIHsgMjAsIDEzLCAyN30sCiAgICB7IDIwLCAxNCwgIDF9LCB7IDIwLCAxNCwgIDJ9LCB7IDIwLCAxNCwgIDV9LCB7IDIwLCAxNCwgIDl9LAogICAgeyAyMCwgMTQsIDIxfSwgeyAyMCwgMTQsIDIzfSwgeyAyMCwgMTUsICAxfSwgeyAyMCwgMTUsICAyfSwKICAgIHsgMjAsIDE1LCAgNX0sIHsgMjAsIDE1LCAyMX0sIHsgMjAsIDE1LCAyM30sIHsgMjAsIDE4LCAgMX0sCiAgICB7IDIwLCAxOCwgIDJ9LCB7IDIwLCAxOCwgIDV9LCB7IDIwLCAxOCwgIDl9LCB7IDIwLCAxOCwgMTl9LAogICAgeyAyMCwgMTgsIDIxfSwgeyAyMCwgMTgsIDIzfSwgeyAyMCwgMTksICAxfSwgeyAyMCwgMTksICA1fSwKICAgIHsgMjAsIDE5LCAgOX0sIHsgMjAsIDE5LCAxOX0sIHsgMjAsIDE5LCAyMX0sIHsgMjAsIDIwLCAgMX0sCiAgICB7IDIwLCAyMCwgIDJ9LCB7IDIwLCAyMCwgIDV9LCB7IDIwLCAyMCwgIDl9LCB7IDIwLCAyMCwgMTR9LAogICAgeyAyMCwgMjAsIDE3fSwgeyAyMCwgMjAsIDIxfSwgeyAyMCwgMjAsIDIzfSwgeyAyMCwgMjEsICAxfSwKICAgIHsgMjAsIDIxLCAgNX0sIHsgMjAsIDIxLCAgOX0sIHsgMjAsIDIxLCAxN30sIHsgMjAsIDIxLCAyM30sCiAgICB7IDIwLCAyMiwgIDF9LCB7IDIwLCAyMiwgIDJ9LCB7IDIwLCAyMiwgIDV9LCB7IDIwLCAyMiwgIDl9LAogICAgeyAyMCwgMjIsIDIzfSwgeyAyMCwgMjMsICAxfSwgeyAyMCwgMjMsICAyfSwgeyAyMCwgMjMsICA1fSwKICAgIHsgMjAsIDIzLCAgOX0sIHsgMjAsIDIzLCAxN30sIHsgMjAsIDIzLCAxOX0sIHsgMjAsIDIzLCAyMX0sCiAgICB7IDIwLCAyMywgMjN9LCB7IDIwLCAyNiwgIDF9LCB7IDIwLCAyNiwgIDJ9LCB7IDIwLCAyNiwgIDV9LAogICAgeyAyMCwgMjYsICA5fSwgeyAyMCwgMjYsIDE3fSwgeyAyMCwgMjYsIDIxfSwgeyAyMCwgMjYsIDIzfSwKICAgIHsgMjAsIDI3LCAgMX0sIHsgMjAsIDI3LCAgMn0sIHsgMjAsIDI3LCAgNX0sIHsgMjAsIDI3LCAgN30sCiAgICB7IDIwLCAyNywgIDh9LCB7IDIwLCAyNywgIDl9LCB7IDIwLCAyNywgMTB9LCB7IDIwLCAyNywgMTd9LAogICAgeyAyMCwgMjcsIDE5fSwgeyAyMCwgMjcsIDIxfSwgeyAyMCwgMjcsIDIzfSwgeyAyMCwgMjcsIDI3fSwKICAgIHsgMjAsIDI4LCAgMX0sIHsgMjAsIDI4LCAgNX0sIHsgMjAsIDI4LCAgOX0sIHsgMjAsIDI4LCAxN30sCiAgICB7IDIwLCAyOCwgMTl9LCB7IDIwLCAyOCwgMjN9LCB7IDIwLCAyOSwgIDF9LCB7IDIwLCAyOSwgIDJ9LAogICAgeyAyMCwgMjksICA1fSwgeyAyMCwgMjksICA5fSwgeyAyMCwgMjksIDE3fSwgeyAyMCwgMjksIDE5fSwKICAgIHsgMjAsIDI5LCAyMX0sIHsgMjAsIDI5LCAyM30sCn07CgoKc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGtzX3RhYmxlMltdWzRdID0KewogICAgezB4YTRiZiwgIDEsICAzLCAgMX0sICB7MHhhNGMwLCAgMSwgIDQsICAxfSwKICAgIHsweGE0YzEsICAxLCAgNSwgIDF9LCAgezB4YTRjMiwgIDEsICA2LCAgMX0sCiAgICB7MHhhNGMzLCAgMSwgIDcsICAxfSwgIHsweGE0YzQsICAxLCAxMCwgIDF9LAogICAgezB4YTRjNSwgIDEsIDExLCAgMX0sICB7MHhhNGM2LCAgMSwgMTIsICAxfSwKICAgIHsweGE0YzcsICAxLCAxMywgIDF9LCAgezB4YTRjOCwgIDEsIDE0LCAgMX0sCiAgICB7MHhhNGM5LCAgMSwgMTUsICAxfSwgIHsweGE0Y2EsICAxLCAxOCwgIDF9LAogICAgezB4YTRjYiwgIDEsIDE5LCAgMX0sICB7MHhhNGNjLCAgMSwgMjAsICAxfSwKICAgIHsweGE0Y2QsICAxLCAyMSwgIDF9LCAgezB4YTRjZSwgIDEsIDIyLCAgMX0sCiAgICB7MHhhNGNmLCAgMSwgMjMsICAxfSwgIHsweGE0ZDAsICAxLCAyNiwgIDF9LAogICAgezB4YTRkMSwgIDEsIDI3LCAgMX0sICB7MHhhNGQyLCAgMSwgMjgsICAxfSwKICAgIHsweGE0ZDMsICAxLCAyOSwgIDF9LCAgezB4YTRhMSwgIDIsICAyLCAgMX0sCiAgICB7MHhhNGEyLCAgMywgIDIsICAxfSwgIHsweGE0YTQsICA0LCAgMiwgIDF9LAogICAgezB4YTRhNywgIDUsICAyLCAgMX0sICB7MHhhNGE4LCAgNiwgIDIsICAxfSwKICAgIHsweGE0YTksICA3LCAgMiwgIDF9LCAgezB4YTRiMSwgIDgsICAyLCAgMX0sCiAgICB7MHhhNGIyLCAgOSwgIDIsICAxfSwgIHsweGE0YjMsIDEwLCAgMiwgIDF9LAogICAgezB4YTRiNSwgMTEsICAyLCAgMX0sICB7MHhhNGI2LCAxMiwgIDIsICAxfSwKICAgIHsweGE0YjcsIDEzLCAgMiwgIDF9LCAgezB4YTRiOCwgMTQsICAyLCAgMX0sCiAgICB7MHhhNGI5LCAxNSwgIDIsICAxfSwgIHsweGE0YmEsIDE2LCAgMiwgIDF9LAogICAgezB4YTRiYiwgMTcsICAyLCAgMX0sICB7MHhhNGJjLCAxOCwgIDIsICAxfSwKICAgIHsweGE0YmQsIDE5LCAgMiwgIDF9LCAgezB4YTRiZSwgMjAsICAyLCAgMX0sCn07CgovKiDBtsfVx/wgw8q8uiAtIL/PvLrH/CCzucDaILqvyK8KICogY29udmVyc2lvbjogaW5pdGlhbCBzb3VuZCBvZiBjb21wb3VuZCB0eXBlIC0gPz8/IG9mIGNvbXBsZXRpb24gdHlwZQogKi8KCnN0YXRpYyBjb25zdCBjaGFyX3Ugam9oYWJfZmNvbl90b193YW5bXSA9CnsKICAgIDAsCiAgICAweGQ0LCAweGExLCAweGEyLCAweGE0LCAweGE3LCAgICAvKiAow6S/8ikspKEspKIspKQspKcgKi8KICAgIDB4YTgsIDB4YTksIDB4YjEsIDB4YjIsIDB4YjMsICAgIC8qIKSoLKSpLKSxLKSyLKSzICovCiAgICAweGI1LCAweGI2LCAweGI3LCAweGI4LCAweGI5LCAgICAvKiCktSyktiyktyykuCykuSAqLwogICAgMHhiYSwgMHhiYiwgMHhiYywgMHhiZCwgMHhiZSAgICAgLyogpLospLsspLwspL0spL4gKi8KfTsKCi8qIMG2x9XH/CDB37y6IC0+IL/PvLrH/CCzucDaILqvyK8KICogY29udmVyc2lvbjogbWVkaWFsIHZvd2VsIG9mIGNvbXBvdW5kIHR5cGUgLSA/Pz8gb2YgY29tcGxldGlvbiB0eXBlCiAqLwoKc3RhdGljIGNvbnN0IGNoYXJfdSBqb2hhYl92b3dfdG9fd2FuW10gPQp7CiAgICAwLCAwLAogICAgMHhkNCwgMHhiZiwgMHhjMCwgMHhjMSwgMHhjMiwgMHhjMywJLyogKMOkv/IpLKS/LKTALKTBLKTCLKTDICovCiAgICAwLCAwLAogICAgMHhjNCwgMHhjNSwgMHhjNiwgMHhjNywgMHhjOCwgMHhjOSwgLyogpMQspMUspMYspMcspMekvyykx6TAICovCiAgICAwLCAwLAogICAgMHhjYSwgMHhjYiwgMHhjYywgMHhjZCwgMHhjZSwgMHhjZiwgLyogpMek0yykyyykzCykzKTDLKTMpMQspMyk0yAqLwogICAgMCwgMCwKICAgIDB4ZDAsIDB4ZDEsIDB4ZDIsIDB4ZDMJICAgICAvKiCk0Cyk0Syk0aTTLKTTICovCn07CgovKiDBtsfVx/wgwb68uiAtPiC/z7y6x/wgs7nA2iC6r8ivCiAqIGNvbnZlcnNpb246IGZpbmFsIGNvbnNvbmFudCBvZiBjb21wb3VuZCB0eXBlIC0gPz8/IG9mIGNvbXBsZXRpb24gdHlwZQogKi8KCnN0YXRpYyBjb25zdCBjaGFyX3Ugam9oYWJfbGNvbl90b193YW5bXSA9CnsKICAgIDAsCiAgICAweGQ0LCAweGExLCAweGEyLCAweGEzLCAweGE0LCAgICAvKiAow6S/8iksIKShLCCkoiwgpKGktSwgpKQgKi8KICAgIDB4YTUsIDB4YTYsIDB4YTcsIDB4YTksIDB4YWEsICAgIC8qIKSkpLgsIKSkpL4sIKSnLCCkqSwgpKmkoSAqLwogICAgMHhhYiwgMHhhYywgMHhhZCwgMHhhZSwgMHhhZiwgICAgLyogpKmksSwgpKmksiwgpKmktSwgpKmkvCwgpKmkvSAqLwogICAgMHhiMCwgMHhiMSwgMCwgICAgMHhiMiwgMHhiNCwgICAgLyogpKmkviwgpLEsIDAsIKSyLCCksqS1ICovCiAgICAweGI1LCAweGI2LCAweGI3LCAweGI4LCAweGJhLCAgICAvKiCktSwgpLYsIKS3LCCkuCwgpLogKi8KICAgIDB4YmIsIDB4YmMsIDB4YmQsIDB4YmUJICAgICAvKiCkuywgpLwsIKS9LCCkviAqLwp9OwoKICAgIHN0YXRpYyB2b2lkCmNvbnZlcnRfa3NfdG9fMyhzcmMsIGZwLCBtcCwgbHApCiAgICBjb25zdCBjaGFyX3UgICAgKnNyYzsKICAgIGludAkJICAgICpmcDsKICAgIGludAkJICAgICptcDsKICAgIGludAkJICAgICpscDsKewogICAgaW50IGggPSAqc3JjOwogICAgaW50IGxvdyA9ICooc3JjICsgMSk7CiAgICBpbnQgYzsKICAgIGludCBpOwoKICAgIGlmICgoaSA9IGhhbl9pbmRleChoLCBsb3cpKSA+PSAwCgkmJiBpIDwgKGludCkoc2l6ZW9mKGtzX3RhYmxlMSkvc2l6ZW9mKGtzX3RhYmxlMVswXSkpKQogICAgewoJKmZwID0ga3NfdGFibGUxW2ldWzBdOwoJKm1wID0ga3NfdGFibGUxW2ldWzFdOwoJKmxwID0ga3NfdGFibGUxW2ldWzJdOwogICAgfQogICAgZWxzZQogICAgewoJYyA9IChoIDw8IDgpIHwgbG93OwoJZm9yIChpID0gMDsgaSA8IDQwOyBpKyspCgkgICAgaWYgKGtzX3RhYmxlMltpXVswXSA9PSBjKQoJICAgIHsKCQkqZnAgPSBrc190YWJsZTJbaV1bMV07CgkJKm1wID0ga3NfdGFibGUyW2ldWzJdOwoJCSpscCA9IGtzX3RhYmxlMltpXVszXTsKCQlyZXR1cm47CgkgICAgfQoJKmZwID0gMHhmZjsJLyogsde3ocfIIMTateUgKGdyYXBoaWMgY29kZSkgKi8KCSptcCA9IGg7CgkqbHAgPSBsb3c7CiAgICB9Cn0KCiAgICBzdGF0aWMgaW50CmNvbnZlcnRfM190b19rcyhmdiwgbXYsIGx2LCBkZXMpCiAgICBpbnQJICAgIGZ2OwogICAgaW50CSAgICBtdjsKICAgIGludAkgICAgbHY7CiAgICBjaGFyX3UgICpkZXM7CnsKICAgIGNoYXJfdSBrZXlbM107CiAgICByZWdpc3RlciBpbnQgaGksIGxvLCBtaSA9IDAsIHJlc3VsdCwgZm91bmQ7CgogICAgaWYgKGZ2ID09IDB4ZmYpCiAgICB7CglkZXNbMF0gPSBtdjsKCWRlc1sxXSA9IGx2OwoJcmV0dXJuIDI7CiAgICB9CiAgICBrZXlbMF0gPSBmdjsKICAgIGtleVsxXSA9IG12OwogICAga2V5WzJdID0gbHY7CiAgICBsbyA9IDA7CiAgICBoaSA9IHNpemVvZihrc190YWJsZTEpLzMgLSAxOwogICAgZm91bmQgPSAwOwogICAgd2hpbGUgKGxvICsgMSA8IGhpKQogICAgewoJbWkgPSAobG8gKyBoaSkvMjsKCXJlc3VsdCA9IFNUUk5DTVAoa3NfdGFibGUxW21pXSwga2V5LCAzKTsKCWlmIChyZXN1bHQgPT0gMCkKCXsKCSAgICBmb3VuZCA9IDE7CgkgICAgYnJlYWs7Cgl9CgllbHNlIGlmIChyZXN1bHQgPiAwKQoJICAgIGhpID0gbWk7CgllbHNlCgkgICAgbG8gPSBtaTsKICAgIH0KICAgIGlmICghZm91bmQpCiAgICB7CglpZiAoIVNUUk5DTVAoa3NfdGFibGUxW2xvXSwga2V5LCAzKSkKCXsKCSAgICBmb3VuZCA9IDE7CgkgICAgbWkgPSBsbzsKCX0KCWlmICghU1RSTkNNUChrc190YWJsZTFbaGldLCBrZXksIDMpKQoJewoJICAgIGZvdW5kID0gMTsKCSAgICBtaSA9IGhpOwoJfQogICAgfQogICAgaWYgKCFmb3VuZCkKICAgIHsKCWZvciAobWkgPSAwOyBtaSA8IDQwOyBtaSsrKQoJICAgIGlmIChrc190YWJsZTJbbWldWzFdID09IGZ2ICYmIGtzX3RhYmxlMlttaV1bMl0gPT0gbXYgJiYKCQlrc190YWJsZTJbbWldWzNdID09IGx2KQoJICAgIHsKCQlkZXNbMF0gPSAodW5zaWduZWQpKGtzX3RhYmxlMlttaV1bMF0pID4+IDg7CgkJZGVzWzFdID0ga3NfdGFibGUyW21pXVswXTsKCQlyZXR1cm4gMjsJLyogZm91bmQgKi8KCSAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CglkZXNbMF0gPSBtaSAvICgweGZmLTB4YTEpICsgMHhiMDsKCWRlc1sxXSA9IG1pICUgKDB4ZmYtMHhhMSkgKyAweGExOwoJcmV0dXJuIDI7CQkvKiBmb3VuZCAqLwogICAgfQoKICAgIC8qIL/PvLrH/CDHpb+hIL74tNkuIGBgS1MgQyA1NjAxIC0gMTk5MiDBpLq4ILGzyK+/6yC6zsijIMfYvLMnJwogICAgICogMy4zIMD9v6EgvLO47bXIILnmuf3AuLfOIGVuY29kaW5nIMfRtNkuCiAgICAgKi8KCiAgICAqZGVzKysgPSAweGE0OwkJICAgICAvKiDDpL/yICovCiAgICAqZGVzKysgPSAweGQ0OwogICAgKmRlcysrID0gMHhhNDsJCSAgICAgLyogs7nA2rTCILjwtc4gYTQgx+C/oSDA1rTZLiAqLwogICAgKmRlcysrID0gam9oYWJfZmNvbl90b193YW5bZnZdOwogICAgKmRlcysrID0gMHhhNDsKICAgICpkZXMrKyA9IGpvaGFiX3Zvd190b193YW5bbXZdOwogICAgKmRlcysrID0gMHhhNDsKICAgICpkZXMrKyA9IGpvaGFiX2xjb25fdG9fd2FuW2x2XTsKICAgIHJldHVybiA4Owp9CgogICAgY2hhcl91ICoKaGFuZ3VsX3N0cmluZ19jb252ZXJ0KGJ1ZiwgcF9sZW4pCiAgICBjaGFyX3UgICpidWY7CiAgICBpbnQJICAgICpwX2xlbjsKewogICAgY2hhcl91ICp0bXBidWYgPSBOVUxMOwogICAgdmltY29udl9UIHZjOwoKICAgIGlmIChlbmNfdXRmOCkKICAgIHsKCXZjLnZjX3R5cGUgPSBDT05WX05PTkU7CglpZiAoY29udmVydF9zZXR1cCgmdmMsIChjaGFyX3UgKikiZXVjLWtyIiwgcF9lbmMpID09IE9LKQoJewoJICAgIHRtcGJ1ZiA9IHN0cmluZ19jb252ZXJ0KCZ2YywgYnVmLCBwX2xlbik7CgkgICAgY29udmVydF9zZXR1cCgmdmMsIE5VTEwsIE5VTEwpOwoJfQogICAgfQoKICAgIHJldHVybiB0bXBidWY7Cn0KCiAgICBjaGFyX3UgKgpoYW5ndWxfY29tcG9zaW5nX2J1ZmZlcl9nZXQocF9sZW4pCiAgICBpbnQJICAgICpwX2xlbjsKewogICAgY2hhcl91ICp0bXBidWYgPSBOVUxMOwoKICAgIGlmIChjb21wb3NpbmdfaGFuZ3VsKQogICAgewoJaW50IGxlbiA9IDI7CgoJdG1wYnVmID0gaGFuZ3VsX3N0cmluZ19jb252ZXJ0KGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCAmbGVuKTsKCWlmICh0bXBidWYgIT0gTlVMTCkKCXsKCSAgICAqcF9sZW4gPSBsZW47Cgl9CgllbHNlCgl7CgkgICAgdG1wYnVmID0gdmltX3N0cm5zYXZlKGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCAyKTsKCSAgICAqcF9sZW4gPSAyOwoJfQogICAgfQoKICAgIHJldHVybiB0bXBidWY7Cn0K