f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAIngAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHRsczsKcGtncGF0aCBjcnlwdG8vdGxzOwpwcmlvcml0eSAxMTsKaW1wb3J0IGJ5dGVzIGJ5dGVzICJieXRlcyI7CmltcG9ydCBsaXN0IGNvbnRhaW5lci9saXN0ICJjb250YWluZXIvbGlzdCI7CmltcG9ydCBjcnlwdG8gY3J5cHRvICJjcnlwdG8iOwppbXBvcnQgYWVzIGNyeXB0by9hZXMgImNyeXB0by9hZXMiOwppbXBvcnQgY2lwaGVyIGNyeXB0by9jaXBoZXIgImNyeXB0by9jaXBoZXIiOwppbXBvcnQgZGVzIGNyeXB0by9kZXMgImNyeXB0by9kZXMiOwppbXBvcnQgZWNkc2EgY3J5cHRvL2VjZHNhICJjcnlwdG8vZWNkc2EiOwppbXBvcnQgZWxsaXB0aWMgY3J5cHRvL2VsbGlwdGljICJjcnlwdG8vZWxsaXB0aWMiOwppbXBvcnQgaG1hYyBjcnlwdG8vaG1hYyAiY3J5cHRvL2htYWMiOwppbXBvcnQgbWQ1IGNyeXB0by9tZDUgImNyeXB0by9tZDUiOwppbXBvcnQgcmFuZCBjcnlwdG8vcmFuZCAiY3J5cHRvL3JhbmQiOwppbXBvcnQgcmM0IGNyeXB0by9yYzQgImNyeXB0by9yYzQiOwppbXBvcnQgcnNhIGNyeXB0by9yc2EgImNyeXB0by9yc2EiOwppbXBvcnQgc2hhMSBjcnlwdG8vc2hhMSAiY3J5cHRvL3NoYTEiOwppbXBvcnQgc2hhMjU2IGNyeXB0by9zaGEyNTYgImNyeXB0by9zaGEyNTYiOwppbXBvcnQgc3VidGxlIGNyeXB0by9zdWJ0bGUgImNyeXB0by9zdWJ0bGUiOwppbXBvcnQgeDUwOSBjcnlwdG8veDUwOSAiY3J5cHRvL3g1MDkiOwppbXBvcnQgYXNuMSBlbmNvZGluZy9hc24xICJlbmNvZGluZy9hc24xIjsKaW1wb3J0IHBlbSBlbmNvZGluZy9wZW0gImVuY29kaW5nL3BlbSI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IGhhc2ggaGFzaCAiaGFzaCI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgaW91dGlsIGlvL2lvdXRpbCAiaW8vaW91dGlsIjsKaW1wb3J0IGJpZyBtYXRoL2JpZyAibWF0aC9iaWciOwppbXBvcnQgbmV0IG5ldCAibmV0IjsKaW1wb3J0IHN0cmNvbnYgc3RyY29udiAic3RyY29udiI7CmltcG9ydCBzdHJpbmdzIHN0cmluZ3MgInN0cmluZ3MiOwppbXBvcnQgc3luYyBzeW5jICJzeW5jIjsKaW1wb3J0IHRpbWUgdGltZSAidGltZSI7CmluaXQgdGxzIGNyeXB0b190bHMuLmltcG9ydCAxMSBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJhbmQgbWF0aF9yYW5kLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYmluYXJ5IGVuY29kaW5nX2JpbmFyeS4uaW1wb3J0IDQgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IGNpcGhlciBjcnlwdG9fY2lwaGVyLi5pbXBvcnQgNCBzeXNjYWxsIGludGVybmFsX3N5c2NhbGwuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgYmFzZTY0IGVuY29kaW5nX2Jhc2U2NC4uaW1wb3J0IDUgYnVmaW8gYnVmaW8uLmltcG9ydCA1IGNyeXB0byBjcnlwdG8uLmltcG9ydCA1IGRlcyBjcnlwdG9fZGVzLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgZmlsZXBhdGggcGF0aF9maWxlcGF0aC4uaW1wb3J0IDYgZm10IGZtdC4uaW1wb3J0IDYgbWQ1IGNyeXB0b19tZDUuLmltcG9ydCA2IG5ldCBuZXQuLmltcG9ydCA2IHBlbSBlbmNvZGluZ19wZW0uLmltcG9ydCA2IHNoYTEgY3J5cHRvX3NoYTEuLmltcG9ydCA2IHNoYTI1NiBjcnlwdG9fc2hhMjU2Li5pbXBvcnQgNiBzaGE1MTIgY3J5cHRvX3NoYTUxMi4uaW1wb3J0IDYgYmlnIG1hdGhfYmlnLi5pbXBvcnQgNyBoZXggZW5jb2RpbmdfaGV4Li5pbXBvcnQgNyBpb3V0aWwgaW9faW91dGlsLi5pbXBvcnQgNyBhc24xIGVuY29kaW5nX2FzbjEuLmltcG9ydCA4IGRzYSBjcnlwdG9fZHNhLi5pbXBvcnQgOCBlbGxpcHRpYyBjcnlwdG9fZWxsaXB0aWMuLmltcG9ydCA4IHJhbmQgY3J5cHRvX3JhbmQuLmltcG9ydCA4IGVjZHNhIGNyeXB0b19lY2RzYS4uaW1wb3J0IDkgcGtpeCBjcnlwdG9feDUwOV9wa2l4Li5pbXBvcnQgOSByc2EgY3J5cHRvX3JzYS4uaW1wb3J0IDkgeDUwOSBjcnlwdG9feDUwOS4uaW1wb3J0IDEwOwp0eXBlIDx0eXBlIDEgIkNlcnRpZmljYXRlIiA8dHlwZSAyIHN0cnVjdCB7IENlcnRpZmljYXRlIDx0eXBlIDMgW10gPHR5cGUgNCBbXSA8dHlwZSAtMjA+Pj47IFByaXZhdGVLZXkgPHR5cGUgNSAiY3J5cHRvLlByaXZhdGVLZXkiIDx0eXBlIDYgaW50ZXJmYWNlIHsgfT4+OyBPQ1NQU3RhcGxlIDx0eXBlIDcgW10gPHR5cGUgLTIwPj47IExlYWYgPHR5cGUgOCAqPHR5cGUgOSAiY3J5cHRvL3g1MDkuQ2VydGlmaWNhdGUiIDx0eXBlIDEwIHN0cnVjdCB7IFJhdyA8dHlwZSAxMSBbXSA8dHlwZSAtMjA+PjsgUmF3VEJTQ2VydGlmaWNhdGUgPHR5cGUgMTIgW10gPHR5cGUgLTIwPj47IFJhd1N1YmplY3RQdWJsaWNLZXlJbmZvIDx0eXBlIDEzIFtdIDx0eXBlIC0yMD4+OyBSYXdTdWJqZWN0IDx0eXBlIDE0IFtdIDx0eXBlIC0yMD4+OyBSYXdJc3N1ZXIgPHR5cGUgMTUgW10gPHR5cGUgLTIwPj47IFNpZ25hdHVyZSA8dHlwZSAxNiBbXSA8dHlwZSAtMjA+PjsgU2lnbmF0dXJlQWxnb3JpdGhtIDx0eXBlIDE3ICJjcnlwdG8veDUwOS5TaWduYXR1cmVBbGdvcml0aG0iIDx0eXBlIC0xMT4+OyBQdWJsaWNLZXlBbGdvcml0aG0gPHR5cGUgMTggImNyeXB0by94NTA5LlB1YmxpY0tleUFsZ29yaXRobSIgPHR5cGUgLTExPj47IFB1YmxpY0tleSA8dHlwZSAxOSBpbnRlcmZhY2UgeyB9PjsgVmVyc2lvbiA8dHlwZSAtMTE+OyBTZXJpYWxOdW1iZXIgPHR5cGUgMjAgKjx0eXBlIDIxICJtYXRoL2JpZy5JbnQiIDx0eXBlIDIyIHN0cnVjdCB7IC5tYXRoL2JpZy5uZWcgPHR5cGUgLTE1PjsgLm1hdGgvYmlnLmFicyA8dHlwZSAyMyAiLm1hdGgvYmlnLm5hdCIgPHR5cGUgMjQgW10gPHR5cGUgMjUgIm1hdGgvYmlnLldvcmQiIDx0eXBlIC0xMz4+PgogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5tdWwgKHggPHR5cGUgMjM+LCB5IDx0eXBlIDIzPikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDI2ICJpby5SdW5lU2Nhbm5lciIgPHR5cGUgMjcgaW50ZXJmYWNlIHsgPyA8dHlwZSAyOCAiaW8uUnVuZVJlYWRlciIgPHR5cGUgMjkgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyB9Pj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMjM+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLmFkZCAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLmFuZE5vdCAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLnNldEJpdCAoeCA8dHlwZSAyMz4sIGkgPHR5cGUgLTEyPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLnN1YiAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh4IDx0eXBlIDIzPikgLm1hdGgvYmlnLm1vZFcgKGQgPHR5cGUgMjU+KSAociA8dHlwZSAyNT4pOwogZnVuYyAobiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5wcm9iYWJseVByaW1lIChyZXBzIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChxIDx0eXBlIDIzPikgLm1hdGgvYmlnLmNvbnZlcnRXb3JkcyAocyA8dHlwZSAzMCBbXSA8dHlwZSAtMjA+PiwgY2hhcnNldCA8dHlwZSAtMTY+LCBiIDx0eXBlIDI1PiwgbmRpZ2l0cyA8dHlwZSAtMTE+LCBiYiA8dHlwZSAyNT4sIHRhYmxlIDx0eXBlIDMxIFtdIDx0eXBlIDMyICIubWF0aC9iaWcuZGl2aXNvciIgPHR5cGUgMzMgc3RydWN0IHsgLm1hdGgvYmlnLmJiYiA8dHlwZSAyMz47IC5tYXRoL2JpZy5uYml0cyA8dHlwZSAtMTE+OyAubWF0aC9iaWcubmRpZ2l0cyA8dHlwZSAtMTE+OyB9Pj4+KTsKIGZ1bmMgKHggPHR5cGUgMjM+KSAubWF0aC9iaWcuc3RyaW5nIChjaGFyc2V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLmRpdlcgKHggPHR5cGUgMjM+LCB5IDx0eXBlIDI1PikgKHEgPHR5cGUgMjM+LCByIDx0eXBlIDI1Pik7CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLnNociAoeCA8dHlwZSAyMz4sIHMgPHR5cGUgLTEyPikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5tdWxSYW5nZSAoYSA8dHlwZSAtOD4sIGIgPHR5cGUgLTg+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLm11bEFkZFdXICh4IDx0eXBlIDIzPiwgeSA8dHlwZSAyNT4sIHIgPHR5cGUgMjU+KSA8dHlwZSAyMz47CiBmdW5jICh4IDx0eXBlIDIzPikgLm1hdGgvYmlnLmRlY2ltYWxTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcuYW5kICh4IDx0eXBlIDIzPiwgeSA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcuYml0IChpIDx0eXBlIC0xMj4pIDx0eXBlIC0xMj47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLnhvciAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLnNldCAoeCA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcucmFuZG9tIChyYW5kIDx0eXBlIDM0ICo8dHlwZSAzNSAibWF0aC9yYW5kLlJhbmQiICJyYW5kIiA8dHlwZSAzNiBzdHJ1Y3QgeyAubWF0aC9yYW5kLnNyYyA8dHlwZSAzNyAibWF0aC9yYW5kLlNvdXJjZSIgPHR5cGUgMzggaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMzkgKjx0eXBlIDM1Pj4pIEV4cEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMzk+KSBJbnQzMW4gKG4gPHR5cGUgLTM+KSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDM5PikgVWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKHIgPHR5cGUgMzk+KSBJbnRuIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDM5PikgUGVybSAobiA8dHlwZSAtMTE+KSA8dHlwZSA0MCBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHIgPHR5cGUgMzk+KSBOb3JtRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAzOT4pIEludDMxICgpIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMzk+KSBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDM5PikgU2VlZCAoc2VlZCA8dHlwZSAtND4pOwogZnVuYyAociA8dHlwZSAzOT4pIEludCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAzOT4pIEludDYzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMzk+KSBJbnQ2M24gKG4gPHR5cGUgLTQ+KSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDM5PikgRmxvYXQzMiAoKSA8dHlwZSAtOT47Cj4+LCBsaW1pdCA8dHlwZSAyMz4sIG4gPHR5cGUgLTExPikgPHR5cGUgMjM+OwogZnVuYyAoeCA8dHlwZSAyMz4pIC5tYXRoL2JpZy5jbXAgKHkgPHR5cGUgMjM+KSAociA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcub3IgKHggPHR5cGUgMjM+LCB5IDx0eXBlIDIzPikgPHR5cGUgMjM+OwogZnVuYyAoeCA8dHlwZSAyMz4pIC5tYXRoL2JpZy5iaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcuc2V0V29yZCAoeCA8dHlwZSAyNT4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcuc2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5kaXYgKHoyIDx0eXBlIDIzPiwgdSA8dHlwZSAyMz4sIHYgPHR5cGUgMjM+KSAocSA8dHlwZSAyMz4sIHIgPHR5cGUgMjM+KTsKIGZ1bmMgKHggPHR5cGUgMjM+KSAubWF0aC9iaWcudHJhaWxpbmdaZXJvQml0cyAoKSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5leHBOTldpbmRvd2VkICh4IDx0eXBlIDIzPiwgeSA8dHlwZSAyMz4sIG0gPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLmRpdkxhcmdlICh1IDx0eXBlIDIzPiwgdUluIDx0eXBlIDIzPiwgdiA8dHlwZSAyMz4pIChxIDx0eXBlIDIzPiwgciA8dHlwZSAyMz4pOwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5ub3JtICgpIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcuc2V0Qnl0ZXMgKGJ1ZiA8dHlwZSA0MSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5tYWtlIChuIDx0eXBlIC0xMT4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcuc2hsICh4IDx0eXBlIDIzPiwgcyA8dHlwZSAtMTI+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgLm1hdGgvYmlnLmJ5dGVzIChidWYgPHR5cGUgNDIgW10gPHR5cGUgLTIwPj4pIChpIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5jbGVhciAoKTsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcuZXhwV1cgKHggPHR5cGUgMjU+LCB5IDx0eXBlIDI1PikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5leHBOTiAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+LCBtIDx0eXBlIDIzPikgPHR5cGUgMjM+Owo+OyB9PgogZnVuYyAoeiA8dHlwZSA0MyAqPHR5cGUgMjE+PikgTmVnICh4IDx0eXBlIDQzPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIFF1b1JlbSAoeCA8dHlwZSA0Mz4sIHkgPHR5cGUgNDM+LCByIDx0eXBlIDQzPikgKD8gPHR5cGUgNDM+LCA/IDx0eXBlIDQzPik7CiBmdW5jICh4IDx0eXBlIDQzPikgQnl0ZXMgKCkgPHR5cGUgNDQgW10gPHR5cGUgLTIwPj47CiBmdW5jICh6IDx0eXBlIDQzPikgU2V0Qml0cyAoYWJzIDx0eXBlIDQ1IFtdIDx0eXBlIDI1Pj4pIDx0eXBlIDQzPjsKIGZ1bmMgKHogPHR5cGUgNDM+KSBTZXRCaXQgKHggPHR5cGUgNDM+LCBpIDx0eXBlIC0xMT4sIGIgPHR5cGUgLTEyPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIFhvciAoeCA8dHlwZSA0Mz4sIHkgPHR5cGUgNDM+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgU2V0SW50NjQgKHggPHR5cGUgLTQ+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgTm90ICh4IDx0eXBlIDQzPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIFVubWFyc2hhbEpTT04gKHRleHQgPHR5cGUgNDYgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDQzPikgT3IgKHggPHR5cGUgNDM+LCB5IDx0eXBlIDQzPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIFNldFVpbnQ2NCAoeCA8dHlwZSAtOD4pIDx0eXBlIDQzPjsKIGZ1bmMgKHggPHR5cGUgNDM+KSBJbnQ2NCAoKSA8dHlwZSAtND47CiBmdW5jICh6IDx0eXBlIDQzPikgLm1hdGgvYmlnLnNjYW4gKHIgPHR5cGUgMjY+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDQzPiwgPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSA0Mz4pIEdDRCAoeCA8dHlwZSA0Mz4sIHkgPHR5cGUgNDM+LCBhIDx0eXBlIDQzPiwgYiA8dHlwZSA0Mz4pIDx0eXBlIDQzPjsKIGZ1bmMgKHogPHR5cGUgNDM+KSBSZW0gKHggPHR5cGUgNDM+LCB5IDx0eXBlIDQzPikgPHR5cGUgNDM+OwogZnVuYyAoeCA8dHlwZSA0Mz4pIEJpdCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAtMTI+OwogZnVuYyAoeCA8dHlwZSA0Mz4pIEJpdHMgKCkgPHR5cGUgNDcgW10gPHR5cGUgMjU+PjsKIGZ1bmMgKHogPHR5cGUgNDM+KSBTZXRCeXRlcyAoYnVmIDx0eXBlIDQ4IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgRGl2TW9kICh4IDx0eXBlIDQzPiwgeSA8dHlwZSA0Mz4sIG0gPHR5cGUgNDM+KSAoPyA8dHlwZSA0Mz4sID8gPHR5cGUgNDM+KTsKIGZ1bmMgKHogPHR5cGUgNDM+KSBSc2ggKHggPHR5cGUgNDM+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDQzPjsKIGZ1bmMgKHggPHR5cGUgNDM+KSBDbXAgKHkgPHR5cGUgNDM+KSAociA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgNDM+KSBTY2FuIChzIDx0eXBlIDQ5ICJmbXQuU2NhblN0YXRlIiA8dHlwZSA1MCBpbnRlcmZhY2UgeyBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyBTa2lwU3BhY2UgKCk7IFRva2VuIChza2lwU3BhY2UgPHR5cGUgLTE1PiwgZiA8dHlwZSA1MSAoPyA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+PikgKHRva2VuIDx0eXBlIDUyIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7IFdpZHRoICgpICh3aWQgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IFJlYWQgKGJ1ZiA8dHlwZSA1MyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIGNoIDx0eXBlIC0yMT4pIDx0eXBlIC0xOT47CiBmdW5jICh4IDx0eXBlIDQzPikgR29iRW5jb2RlICgpICg/IDx0eXBlIDU0IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeCA8dHlwZSA0Mz4pIFByb2JhYmx5UHJpbWUgKG4gPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHggPHR5cGUgNDM+KSBTaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDQzPikgTW9kICh4IDx0eXBlIDQzPiwgeSA8dHlwZSA0Mz4pIDx0eXBlIDQzPjsKIGZ1bmMgKHogPHR5cGUgNDM+KSBFeHAgKHggPHR5cGUgNDM+LCB5IDx0eXBlIDQzPiwgbSA8dHlwZSA0Mz4pIDx0eXBlIDQzPjsKIGZ1bmMgKHggPHR5cGUgNDM+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgNDM+KSBBYnMgKHggPHR5cGUgNDM+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSA1NSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgNDM+KSBSYW5kIChybmQgPHR5cGUgMzQ+LCBuIDx0eXBlIDQzPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIEFuZCAoeCA8dHlwZSA0Mz4sIHkgPHR5cGUgNDM+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgTW9kSW52ZXJzZSAoZyA8dHlwZSA0Mz4sIG4gPHR5cGUgNDM+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgUXVvICh4IDx0eXBlIDQzPiwgeSA8dHlwZSA0Mz4pIDx0eXBlIDQzPjsKIGZ1bmMgKHogPHR5cGUgNDM+KSBBZGQgKHggPHR5cGUgNDM+LCB5IDx0eXBlIDQzPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIExzaCAoeCA8dHlwZSA0Mz4sIG4gPHR5cGUgLTEyPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIEFuZE5vdCAoeCA8dHlwZSA0Mz4sIHkgPHR5cGUgNDM+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgU2V0ICh4IDx0eXBlIDQzPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIE11bCAoeCA8dHlwZSA0Mz4sIHkgPHR5cGUgNDM+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgTWFyc2hhbFRleHQgKCkgKHRleHQgPHR5cGUgNTYgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgNDM+KSBEaXYgKHggPHR5cGUgNDM+LCB5IDx0eXBlIDQzPikgPHR5cGUgNDM+OwogZnVuYyAoeiA8dHlwZSA0Mz4pIEJpbm9taWFsIChuIDx0eXBlIC00PiwgayA8dHlwZSAtND4pIDx0eXBlIDQzPjsKIGZ1bmMgKHggPHR5cGUgNDM+KSBGb3JtYXQgKHMgPHR5cGUgNTcgImZtdC5TdGF0ZSIgPHR5cGUgNTggaW50ZXJmYWNlIHsgV3JpdGUgKGIgPHR5cGUgNTkgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBQcmVjaXNpb24gKCkgKHByZWMgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IEZsYWcgKGMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsgfT4+LCBjaCA8dHlwZSAtMjE+KTsKIGZ1bmMgKHogPHR5cGUgNDM+KSBNdWxSYW5nZSAoYSA8dHlwZSAtND4sIGIgPHR5cGUgLTQ+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgU2V0U3RyaW5nIChzIDx0eXBlIC0xNj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgNDM+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAoeCA8dHlwZSA0Mz4pIFVpbnQ2NCAoKSA8dHlwZSAtOD47CiBmdW5jICh6IDx0eXBlIDQzPikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgNjAgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh4IDx0eXBlIDQzPikgQml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDQzPikgR29iRGVjb2RlIChidWYgPHR5cGUgNjEgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDQzPikgLm1hdGgvYmlnLmJpbmFyeUdDRCAoYSA8dHlwZSA0Mz4sIGIgPHR5cGUgNDM+KSA8dHlwZSA0Mz47CiBmdW5jICh6IDx0eXBlIDQzPikgU3ViICh4IDx0eXBlIDQzPiwgeSA8dHlwZSA0Mz4pIDx0eXBlIDQzPjsKPj47IElzc3VlciA8dHlwZSA2MiAiY3J5cHRvL3g1MDkvcGtpeC5OYW1lIiAicGtpeCIgPHR5cGUgNjMgc3RydWN0IHsgQ291bnRyeSA8dHlwZSA2NCBbXSA8dHlwZSAtMTY+PjsgT3JnYW5pemF0aW9uIDx0eXBlIDY0PjsgT3JnYW5pemF0aW9uYWxVbml0IDx0eXBlIDY0PjsgTG9jYWxpdHkgPHR5cGUgNjUgW10gPHR5cGUgLTE2Pj47IFByb3ZpbmNlIDx0eXBlIDY1PjsgU3RyZWV0QWRkcmVzcyA8dHlwZSA2NiBbXSA8dHlwZSAtMTY+PjsgUG9zdGFsQ29kZSA8dHlwZSA2Nj47IFNlcmlhbE51bWJlciA8dHlwZSAtMTY+OyBDb21tb25OYW1lIDx0eXBlIC0xNj47IE5hbWVzIDx0eXBlIDY3IFtdIDx0eXBlIDY4ICJjcnlwdG8veDUwOS9wa2l4LkF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSIgPHR5cGUgNjkgc3RydWN0IHsgVHlwZSA8dHlwZSA3MCAiZW5jb2RpbmcvYXNuMS5PYmplY3RJZGVudGlmaWVyIiA8dHlwZSA3MSBbXSA8dHlwZSAtMTE+PgogZnVuYyAob2kgPHR5cGUgNzA+KSBFcXVhbCAob3RoZXIgPHR5cGUgNzA+KSA8dHlwZSAtMTU+OwogZnVuYyAob2kgPHR5cGUgNzA+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgVmFsdWUgPHR5cGUgNzIgaW50ZXJmYWNlIHsgfT47IH0+Pj47IH0+CiBmdW5jIChuIDx0eXBlIDYyPikgVG9SRE5TZXF1ZW5jZSAoKSAocmV0IDx0eXBlIDczICJjcnlwdG8veDUwOS9wa2l4LlJETlNlcXVlbmNlIiA8dHlwZSA3NCBbXSA8dHlwZSA3NSAiY3J5cHRvL3g1MDkvcGtpeC5SZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lU0VUIiA8dHlwZSA3NiBbXSA8dHlwZSA2OD4+Pj4+KTsKIGZ1bmMgKG4gPHR5cGUgNzcgKjx0eXBlIDYyPj4pIEZpbGxGcm9tUkROU2VxdWVuY2UgKHJkbnMgPHR5cGUgNzggKjx0eXBlIDczPj4pOwo+OyBTdWJqZWN0IDx0eXBlIDYyPjsgTm90QmVmb3JlIDx0eXBlIDc5ICJ0aW1lLlRpbWUiIDx0eXBlIDgwIHN0cnVjdCB7IC50aW1lLnNlYyA8dHlwZSAtND47IC50aW1lLm5zZWMgPHR5cGUgLTM+OyAudGltZS5sb2MgPHR5cGUgODEgKjx0eXBlIDgyICJ0aW1lLkxvY2F0aW9uIiA8dHlwZSA4MyBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLnpvbmUgPHR5cGUgODQgW10gPHR5cGUgODUgIi50aW1lLnpvbmUiIDx0eXBlIDg2IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUub2Zmc2V0IDx0eXBlIC0xMT47IC50aW1lLmlzRFNUIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLnR4IDx0eXBlIDg3IFtdIDx0eXBlIDg4ICIudGltZS56b25lVHJhbnMiIDx0eXBlIDg5IHN0cnVjdCB7IC50aW1lLndoZW4gPHR5cGUgLTQ+OyAudGltZS5pbmRleCA8dHlwZSAtNT47IC50aW1lLmlzc3RkIDx0eXBlIC0xNT47IC50aW1lLmlzdXRjIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLmNhY2hlU3RhcnQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZUVuZCA8dHlwZSAtND47IC50aW1lLmNhY2hlWm9uZSA8dHlwZSA5MCAqPHR5cGUgODU+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgOTEgKjx0eXBlIDgyPj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgOTE+KSAudGltZS5sb29rdXBOYW1lIChuYW1lIDx0eXBlIC0xNj4sIHVuaXggPHR5cGUgLTQ+KSAob2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAobCA8dHlwZSA5MT4pIC50aW1lLmxvb2t1cCAoc2VjIDx0eXBlIC00PikgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIHN0YXJ0IDx0eXBlIC00PiwgZW5kIDx0eXBlIC00Pik7CiBmdW5jIChsIDx0eXBlIDkxPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDkxPikgLnRpbWUubG9va3VwRmlyc3Rab25lICgpIDx0eXBlIC0xMT47CiBmdW5jIChsIDx0eXBlIDkxPikgLnRpbWUuZ2V0ICgpIDx0eXBlIDkxPjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDc5PikgQWZ0ZXIgKHUgPHR5cGUgNzk+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA3OT4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDkyIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA3OT4pIERhdGUgKCkgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgOTMgInRpbWUuTW9udGgiIDx0eXBlIC0xMT4KIGZ1bmMgKG0gPHR5cGUgOTM+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPiwgZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSA3OT4pIC50aW1lLmFicyAoKSA8dHlwZSAtOD47CiBmdW5jICh0IDx0eXBlIDc5PikgV2Vla2RheSAoKSA8dHlwZSA5NCAidGltZS5XZWVrZGF5IiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDk0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh0IDx0eXBlIDc5PikgTmFub3NlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5NSAqPHR5cGUgNzk+PikgR29iRGVjb2RlIChkYXRhIDx0eXBlIDk2IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSA3OT4pIEluIChsb2MgPHR5cGUgODE+KSA8dHlwZSA3OT47CiBmdW5jICh0IDx0eXBlIDc5PikgTG9jYWwgKCkgPHR5cGUgNzk+OwogZnVuYyAodCA8dHlwZSA3OT4pIE1vbnRoICgpIDx0eXBlIDkzPjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBIb3VyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDc5PikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSA5NyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBVbml4TmFubyAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDc5PikgRXF1YWwgKHUgPHR5cGUgNzk+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA3OT4pIEZvcm1hdCAobGF5b3V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDc5PikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgNzk+OwogZnVuYyAodCA8dHlwZSA3OT4pIFpvbmUgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSA3OT4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3OT4pIENsb2NrICgpIChob3VyIDx0eXBlIC0xMT4sIG1pbiA8dHlwZSAtMTE+LCBzZWMgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDc5PikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgOTggW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDc5PikgVVRDICgpIDx0eXBlIDc5PjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDkzPiwgZGF5IDx0eXBlIC0xMT4sIHlkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDc5PikgSXNaZXJvICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDc5PikgQmVmb3JlICh1IDx0eXBlIDc5PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBTZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBNaW51dGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBSb3VuZCAoZCA8dHlwZSA5OSAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDk5PikgU2Vjb25kcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSA5OT4pIE1pbnV0ZXMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgOTk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGQgPHR5cGUgOTk+KSBIb3VycyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSA5OT4pIE5hbm9zZWNvbmRzICgpIDx0eXBlIC00PjsKPikgPHR5cGUgNzk+OwogZnVuYyAodCA8dHlwZSA3OT4pIFN1YiAodSA8dHlwZSA3OT4pIDx0eXBlIDk5PjsKIGZ1bmMgKHQgPHR5cGUgOTU+KSBVbm1hcnNoYWxUZXh0IChkYXRhIDx0eXBlIDEwMCBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBVbml4ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBUcnVuY2F0ZSAoZCA8dHlwZSA5OT4pIDx0eXBlIDc5PjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBBZGQgKGQgPHR5cGUgOTk+KSA8dHlwZSA3OT47CiBmdW5jICh0IDx0eXBlIDc5PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDEwMSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBMb2NhdGlvbiAoKSA8dHlwZSA4MT47CiBmdW5jICh0IDx0eXBlIDk1PikgVW5tYXJzaGFsQmluYXJ5IChkYXRhIDx0eXBlIDEwMiBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBJU09XZWVrICgpICh5ZWFyIDx0eXBlIC0xMT4sIHdlZWsgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDc5PikgLnRpbWUubG9jYWJzICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBhYnMgPHR5cGUgLTg+KTsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBZZWFyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDc5PikgWWVhckRheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5NT4pIFVubWFyc2hhbEpTT04gKGRhdGEgPHR5cGUgMTAzIFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwo+OyBOb3RBZnRlciA8dHlwZSA3OT47IEtleVVzYWdlIDx0eXBlIDEwNCAiY3J5cHRvL3g1MDkuS2V5VXNhZ2UiIDx0eXBlIC0xMT4+OyBFeHRlbnNpb25zIDx0eXBlIDEwNSBbXSA8dHlwZSAxMDYgImNyeXB0by94NTA5L3BraXguRXh0ZW5zaW9uIiA8dHlwZSAxMDcgc3RydWN0IHsgSWQgPHR5cGUgNzA+OyBDcml0aWNhbCA8dHlwZSAtMTU+ICJhc24xOlwib3B0aW9uYWxcIiI7IFZhbHVlIDx0eXBlIDEwOCBbXSA8dHlwZSAtMjA+PjsgfT4+PjsgRXh0cmFFeHRlbnNpb25zIDx0eXBlIDEwOSBbXSA8dHlwZSAxMDY+PjsgRXh0S2V5VXNhZ2UgPHR5cGUgMTEwIFtdIDx0eXBlIDExMSAiY3J5cHRvL3g1MDkuRXh0S2V5VXNhZ2UiIDx0eXBlIC0xMT4+PjsgVW5rbm93bkV4dEtleVVzYWdlIDx0eXBlIDExMiBbXSA8dHlwZSA3MD4+OyBCYXNpY0NvbnN0cmFpbnRzVmFsaWQgPHR5cGUgLTE1PjsgSXNDQSA8dHlwZSAtMTU+OyBNYXhQYXRoTGVuIDx0eXBlIC0xMT47IE1heFBhdGhMZW5aZXJvIDx0eXBlIC0xNT47IFN1YmplY3RLZXlJZCA8dHlwZSAxMTMgW10gPHR5cGUgLTIwPj47IEF1dGhvcml0eUtleUlkIDx0eXBlIDExNCBbXSA8dHlwZSAtMjA+PjsgT0NTUFNlcnZlciA8dHlwZSAxMTUgW10gPHR5cGUgLTE2Pj47IElzc3VpbmdDZXJ0aWZpY2F0ZVVSTCA8dHlwZSAxMTYgW10gPHR5cGUgLTE2Pj47IEROU05hbWVzIDx0eXBlIDExNyBbXSA8dHlwZSAtMTY+PjsgRW1haWxBZGRyZXNzZXMgPHR5cGUgMTE4IFtdIDx0eXBlIC0xNj4+OyBJUEFkZHJlc3NlcyA8dHlwZSAxMTkgW10gPHR5cGUgMTIwICJuZXQuSVAiIDx0eXBlIDEyMSBbXSA8dHlwZSAtMjA+PgogZnVuYyAoaXAgPHR5cGUgMTIwPikgTWFyc2hhbFRleHQgKCkgKD8gPHR5cGUgMTIyIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoaXAgPHR5cGUgMTIwPikgSXNMaW5rTG9jYWxNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDEyMD4pIElzTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxMjA+KSBUbzQgKCkgPHR5cGUgMTIwPjsKIGZ1bmMgKGlwIDx0eXBlIDEyMyAqPHR5cGUgMTIwPj4pIFVubWFyc2hhbFRleHQgKHRleHQgPHR5cGUgMTI0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoaXAgPHR5cGUgMTIwPikgVG8xNiAoKSA8dHlwZSAxMjA+OwogZnVuYyAoaXAgPHR5cGUgMTIwPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChpcCA8dHlwZSAxMjA+KSBJc0xpbmtMb2NhbFVuaWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDEyMD4pIElzTG9vcGJhY2sgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDEyMD4pIEVxdWFsICh4IDx0eXBlIDEyMD4pIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxMjA+KSBEZWZhdWx0TWFzayAoKSA8dHlwZSAxMjUgIm5ldC5JUE1hc2siIDx0eXBlIDEyNiBbXSA8dHlwZSAtMjA+PgogZnVuYyAobSA8dHlwZSAxMjU+KSBTaXplICgpIChvbmVzIDx0eXBlIC0xMT4sIGJpdHMgPHR5cGUgLTExPik7CiBmdW5jIChtIDx0eXBlIDEyNT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OwogZnVuYyAoaXAgPHR5cGUgMTIwPikgTWFzayAobWFzayA8dHlwZSAxMjU+KSA8dHlwZSAxMjA+OwogZnVuYyAoaXAgPHR5cGUgMTIwPikgSXNVbnNwZWNpZmllZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTIwPikgSXNJbnRlcmZhY2VMb2NhbE11bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTIwPikgSXNHbG9iYWxVbmljYXN0ICgpIDx0eXBlIC0xNT47Cj4+OyBQZXJtaXR0ZWRETlNEb21haW5zQ3JpdGljYWwgPHR5cGUgLTE1PjsgUGVybWl0dGVkRE5TRG9tYWlucyA8dHlwZSAxMjcgW10gPHR5cGUgLTE2Pj47IENSTERpc3RyaWJ1dGlvblBvaW50cyA8dHlwZSAxMjggW10gPHR5cGUgLTE2Pj47IFBvbGljeUlkZW50aWZpZXJzIDx0eXBlIDEyOSBbXSA8dHlwZSA3MD4+OyB9PgogZnVuYyAoYyA8dHlwZSAxMzAgKjx0eXBlIDk+PikgQ2hlY2tTaWduYXR1cmUgKGFsZ28gPHR5cGUgMTc+LCBzaWduZWQgPHR5cGUgMTMxIFtdIDx0eXBlIC0yMD4+LCBzaWduYXR1cmUgPHR5cGUgMTMxPikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTMwPikgLmNyeXB0by94NTA5LnN5c3RlbVZlcmlmeSAob3B0cyA8dHlwZSAxMzIgKjx0eXBlIDEzMyAiY3J5cHRvL3g1MDkuVmVyaWZ5T3B0aW9ucyIgPHR5cGUgMTM0IHN0cnVjdCB7IEROU05hbWUgPHR5cGUgLTE2PjsgSW50ZXJtZWRpYXRlcyA8dHlwZSAxMzUgKjx0eXBlIDEzNiAiY3J5cHRvL3g1MDkuQ2VydFBvb2wiIDx0eXBlIDEzNyBzdHJ1Y3QgeyAuY3J5cHRvL3g1MDkuYnlTdWJqZWN0S2V5SWQgPHR5cGUgMTM4IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMTM5IFtdIDx0eXBlIC0xMT4+PjsgLmNyeXB0by94NTA5LmJ5TmFtZSA8dHlwZSAxNDAgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxNDEgW10gPHR5cGUgLTExPj4+OyAuY3J5cHRvL3g1MDkuY2VydHMgPHR5cGUgMTQyIFtdIDx0eXBlIDEzMD4+OyB9PgogZnVuYyAocyA8dHlwZSAxNDMgKjx0eXBlIDEzNj4+KSBBcHBlbmRDZXJ0c0Zyb21QRU0gKHBlbUNlcnRzIDx0eXBlIDE0NCBbXSA8dHlwZSAtMjA+PikgKG9rIDx0eXBlIC0xNT4pOwogZnVuYyAocyA8dHlwZSAxNDM+KSBTdWJqZWN0cyAoKSAocmVzIDx0eXBlIDE0NSBbXSA8dHlwZSAxNDYgW10gPHR5cGUgLTIwPj4+KTsKIGZ1bmMgKHMgPHR5cGUgMTQzPikgQWRkQ2VydCAoY2VydCA8dHlwZSAxMzA+KTsKIGZ1bmMgKHMgPHR5cGUgMTQzPikgLmNyeXB0by94NTA5LmZpbmRWZXJpZmllZFBhcmVudHMgKGNlcnQgPHR5cGUgMTMwPikgKHBhcmVudHMgPHR5cGUgMTQ3IFtdIDx0eXBlIC0xMT4+LCBlcnJDZXJ0IDx0eXBlIDEzMD4sIGVyciA8dHlwZSAtMTk+KTsKPj47IFJvb3RzIDx0eXBlIDEzNT47IEN1cnJlbnRUaW1lIDx0eXBlIDc5PjsgS2V5VXNhZ2VzIDx0eXBlIDE0OCBbXSA8dHlwZSAxMTE+PjsgfT4+PikgKGNoYWlucyA8dHlwZSAxNDkgW10gPHR5cGUgMTUwIFtdIDx0eXBlIDEzMD4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxMzA+KSBDaGVja1NpZ25hdHVyZUZyb20gKHBhcmVudCA8dHlwZSAxMzA+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxMzA+KSBFcXVhbCAob3RoZXIgPHR5cGUgMTMwPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGMgPHR5cGUgMTMwPikgVmVyaWZ5IChvcHRzIDx0eXBlIDEzMz4pIChjaGFpbnMgPHR5cGUgMTUxIFtdIDx0eXBlIDE1MiBbXSA8dHlwZSAxMzA+Pj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTMwPikgVmVyaWZ5SG9zdG5hbWUgKGggPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTMwPikgLmNyeXB0by94NTA5LmlzVmFsaWQgKGNlcnRUeXBlIDx0eXBlIC0xMT4sIGN1cnJlbnRDaGFpbiA8dHlwZSAxNTMgW10gPHR5cGUgMTMwPj4sIG9wdHMgPHR5cGUgMTMyPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTMwPikgQ2hlY2tDUkxTaWduYXR1cmUgKGNybCA8dHlwZSAxNTQgKjx0eXBlIDE1NSAiY3J5cHRvL3g1MDkvcGtpeC5DZXJ0aWZpY2F0ZUxpc3QiIDx0eXBlIDE1NiBzdHJ1Y3QgeyBUQlNDZXJ0TGlzdCA8dHlwZSAxNTcgImNyeXB0by94NTA5L3BraXguVEJTQ2VydGlmaWNhdGVMaXN0IiA8dHlwZSAxNTggc3RydWN0IHsgUmF3IDx0eXBlIDE1OSAiZW5jb2RpbmcvYXNuMS5SYXdDb250ZW50IiA8dHlwZSAxNjAgW10gPHR5cGUgLTIwPj4+OyBWZXJzaW9uIDx0eXBlIC0xMT4gImFzbjE6XCJvcHRpb25hbCxkZWZhdWx0OjJcIiI7IFNpZ25hdHVyZSA8dHlwZSAxNjEgImNyeXB0by94NTA5L3BraXguQWxnb3JpdGhtSWRlbnRpZmllciIgPHR5cGUgMTYyIHN0cnVjdCB7IEFsZ29yaXRobSA8dHlwZSA3MD47IFBhcmFtZXRlcnMgPHR5cGUgMTYzICJlbmNvZGluZy9hc24xLlJhd1ZhbHVlIiA8dHlwZSAxNjQgc3RydWN0IHsgQ2xhc3MgPHR5cGUgLTExPjsgVGFnIDx0eXBlIC0xMT47IElzQ29tcG91bmQgPHR5cGUgLTE1PjsgQnl0ZXMgPHR5cGUgMTY1IFtdIDx0eXBlIC0yMD4+OyBGdWxsQnl0ZXMgPHR5cGUgMTY2IFtdIDx0eXBlIC0yMD4+OyB9Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+OyBJc3N1ZXIgPHR5cGUgNzM+OyBUaGlzVXBkYXRlIDx0eXBlIDc5PjsgTmV4dFVwZGF0ZSA8dHlwZSA3OT4gImFzbjE6XCJvcHRpb25hbFwiIjsgUmV2b2tlZENlcnRpZmljYXRlcyA8dHlwZSAxNjcgW10gPHR5cGUgMTY4ICJjcnlwdG8veDUwOS9wa2l4LlJldm9rZWRDZXJ0aWZpY2F0ZSIgPHR5cGUgMTY5IHN0cnVjdCB7IFNlcmlhbE51bWJlciA8dHlwZSAyMD47IFJldm9jYXRpb25UaW1lIDx0eXBlIDc5PjsgRXh0ZW5zaW9ucyA8dHlwZSAxNzAgW10gPHR5cGUgMTA2Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBFeHRlbnNpb25zIDx0eXBlIDE3MSBbXSA8dHlwZSAxMDY+PiAiYXNuMTpcInRhZzowLG9wdGlvbmFsLGV4cGxpY2l0XCIiOyB9Pj47IFNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSAxNjE+OyBTaWduYXR1cmVWYWx1ZSA8dHlwZSAxNzIgImVuY29kaW5nL2FzbjEuQml0U3RyaW5nIiA8dHlwZSAxNzMgc3RydWN0IHsgQnl0ZXMgPHR5cGUgMTc0IFtdIDx0eXBlIC0yMD4+OyBCaXRMZW5ndGggPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGIgPHR5cGUgMTcyPikgQXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMTcyPikgUmlnaHRBbGlnbiAoKSA8dHlwZSAxNzUgW10gPHR5cGUgLTIwPj47Cj47IH0+CiBmdW5jIChjZXJ0TGlzdCA8dHlwZSAxNzYgKjx0eXBlIDE1NT4+KSBIYXNFeHBpcmVkIChub3cgPHR5cGUgNzk+KSA8dHlwZSAtMTU+Owo+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTMwPikgLmNyeXB0by94NTA5LmJ1aWxkQ2hhaW5zIChjYWNoZSA8dHlwZSAxNzcgbWFwIFs8dHlwZSAtMTE+XSA8dHlwZSAxNzggW10gPHR5cGUgMTc5IFtdIDx0eXBlIDEzMD4+Pj4sIGN1cnJlbnRDaGFpbiA8dHlwZSAxODAgW10gPHR5cGUgMTMwPj4sIG9wdHMgPHR5cGUgMTMyPikgKGNoYWlucyA8dHlwZSAxODEgW10gPHR5cGUgMTgyIFtdIDx0eXBlIDEzMD4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxMzA+KSBDcmVhdGVDUkwgKHJhbmQgPHR5cGUgMTgzICJpby5SZWFkZXIiIDx0eXBlIDE4NCBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDE4NSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIHByaXYgPHR5cGUgMTg2IGludGVyZmFjZSB7IH0+LCByZXZva2VkQ2VydHMgPHR5cGUgMTg3IFtdIDx0eXBlIDE2OD4+LCBub3cgPHR5cGUgNzk+LCBleHBpcnkgPHR5cGUgNzk+KSAoY3JsQnl0ZXMgPHR5cGUgMTg4IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7Cj4+OyB9Pj47CmZ1bmMgQ2xpZW50IChjb25uIDx0eXBlIDE4OSAibmV0LkNvbm4iIDx0eXBlIDE5MCBpbnRlcmZhY2UgeyBSZWFkIChiIDx0eXBlIDE5MSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBXcml0ZSAoYiA8dHlwZSAxOTIgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgTG9jYWxBZGRyICgpIDx0eXBlIDE5MyAibmV0LkFkZHIiIDx0eXBlIDE5NCBpbnRlcmZhY2UgeyBOZXR3b3JrICgpIDx0eXBlIC0xNj47IFN0cmluZyAoKSA8dHlwZSAtMTY+OyB9Pj47IFJlbW90ZUFkZHIgKCkgPHR5cGUgMTkzPjsgU2V0RGVhZGxpbmUgKHQgPHR5cGUgNzk+KSA8dHlwZSAtMTk+OyBTZXRSZWFkRGVhZGxpbmUgKHQgPHR5cGUgNzk+KSA8dHlwZSAtMTk+OyBTZXRXcml0ZURlYWRsaW5lICh0IDx0eXBlIDc5PikgPHR5cGUgLTE5PjsgfT4+LCBjb25maWcgPHR5cGUgMTk1ICo8dHlwZSAxOTYgIkNvbmZpZyIgPHR5cGUgMTk3IHN0cnVjdCB7IFJhbmQgPHR5cGUgMTgzPjsgVGltZSA8dHlwZSAxOTggKCkgPHR5cGUgNzk+PjsgQ2VydGlmaWNhdGVzIDx0eXBlIDE5OSBbXSA8dHlwZSAxPj47IE5hbWVUb0NlcnRpZmljYXRlIDx0eXBlIDIwMCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDIwMSAqPHR5cGUgMT4+PjsgR2V0Q2VydGlmaWNhdGUgPHR5cGUgMjAyIChjbGllbnRIZWxsbyA8dHlwZSAyMDMgKjx0eXBlIDIwNCAiQ2xpZW50SGVsbG9JbmZvIiA8dHlwZSAyMDUgc3RydWN0IHsgQ2lwaGVyU3VpdGVzIDx0eXBlIDIwNiBbXSA8dHlwZSAtNj4+OyBTZXJ2ZXJOYW1lIDx0eXBlIC0xNj47IFN1cHBvcnRlZEN1cnZlcyA8dHlwZSAyMDcgW10gPHR5cGUgMjA4ICJDdXJ2ZUlEIiA8dHlwZSAtNj4+PjsgU3VwcG9ydGVkUG9pbnRzIDx0eXBlIDIwOSBbXSA8dHlwZSAtNT4+OyB9Pj4+KSAoPyA8dHlwZSAyMTAgKjx0eXBlIDE+PiwgPyA8dHlwZSAtMTk+KT47IFJvb3RDQXMgPHR5cGUgMjExICo8dHlwZSAxMzY+PjsgTmV4dFByb3RvcyA8dHlwZSAyMTIgW10gPHR5cGUgLTE2Pj47IFNlcnZlck5hbWUgPHR5cGUgLTE2PjsgQ2xpZW50QXV0aCA8dHlwZSAyMTMgIkNsaWVudEF1dGhUeXBlIiA8dHlwZSAtMTE+PjsgQ2xpZW50Q0FzIDx0eXBlIDIxMT47IEluc2VjdXJlU2tpcFZlcmlmeSA8dHlwZSAtMTU+OyBDaXBoZXJTdWl0ZXMgPHR5cGUgMjE0IFtdIDx0eXBlIC02Pj47IFByZWZlclNlcnZlckNpcGhlclN1aXRlcyA8dHlwZSAtMTU+OyBTZXNzaW9uVGlja2V0c0Rpc2FibGVkIDx0eXBlIC0xNT47IFNlc3Npb25UaWNrZXRLZXkgPHR5cGUgMjE1IFszMiBdIDx0eXBlIC0yMD4+OyBDbGllbnRTZXNzaW9uQ2FjaGUgPHR5cGUgMjE2ICJDbGllbnRTZXNzaW9uQ2FjaGUiIDx0eXBlIDIxNyBpbnRlcmZhY2UgeyBHZXQgKHNlc3Npb25LZXkgPHR5cGUgLTE2PikgKHNlc3Npb24gPHR5cGUgMjE4ICo8dHlwZSAyMTkgIkNsaWVudFNlc3Npb25TdGF0ZSIgPHR5cGUgMjIwIHN0cnVjdCB7IC5jcnlwdG8vdGxzLnNlc3Npb25UaWNrZXQgPHR5cGUgMjIxIFtdIDx0eXBlIC01Pj47IC5jcnlwdG8vdGxzLnZlcnMgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLm1hc3RlclNlY3JldCA8dHlwZSAyMjIgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnNlcnZlckNlcnRpZmljYXRlcyA8dHlwZSAyMjMgW10gPHR5cGUgOD4+OyB9Pj4+LCBvayA8dHlwZSAtMTU+KTsgUHV0IChzZXNzaW9uS2V5IDx0eXBlIC0xNj4sIGNzIDx0eXBlIDIxOD4pOyB9Pj47IE1pblZlcnNpb24gPHR5cGUgLTY+OyBNYXhWZXJzaW9uIDx0eXBlIC02PjsgQ3VydmVQcmVmZXJlbmNlcyA8dHlwZSAyMjQgW10gPHR5cGUgMjA4Pj47IC5jcnlwdG8vdGxzLnNlcnZlckluaXRPbmNlIDx0eXBlIDIyNSAic3luYy5PbmNlIiA8dHlwZSAyMjYgc3RydWN0IHsgLnN5bmMubSA8dHlwZSAyMjcgInN5bmMuTXV0ZXgiIDx0eXBlIDIyOCBzdHJ1Y3QgeyAuc3luYy5zdGF0ZSA8dHlwZSAtMz47IC5zeW5jLnNlbWEgPHR5cGUgLTc+OyB9PgogZnVuYyAobSA8dHlwZSAyMjkgKjx0eXBlIDIyNz4+KSBVbmxvY2sgKCk7CiBmdW5jIChtIDx0eXBlIDIyOT4pIExvY2sgKCk7Cj47IC5zeW5jLmRvbmUgPHR5cGUgLTc+OyB9PgogZnVuYyAobyA8dHlwZSAyMzAgKjx0eXBlIDIyNT4+KSBEbyAoZiA8dHlwZSAyMzEgKCk+KTsKPjsgfT4KIGZ1bmMgKGMgPHR5cGUgMjMyICo8dHlwZSAxOTY+PikgLmNyeXB0by90bHMuc2VydmVySW5pdCAoKTsKIGZ1bmMgKGMgPHR5cGUgMjMyPikgLmNyeXB0by90bHMucmFuZCAoKSA8dHlwZSAxODM+OwogZnVuYyAoYyA8dHlwZSAyMzI+KSAuY3J5cHRvL3Rscy50aW1lICgpIDx0eXBlIDc5PjsKIGZ1bmMgKGMgPHR5cGUgMjMyPikgLmNyeXB0by90bHMuY2lwaGVyU3VpdGVzICgpIDx0eXBlIDIzMyBbXSA8dHlwZSAtNj4+OwogZnVuYyAoYyA8dHlwZSAyMzI+KSAuY3J5cHRvL3Rscy5taW5WZXJzaW9uICgpIDx0eXBlIC02PjsKIGZ1bmMgKGMgPHR5cGUgMjMyPikgLmNyeXB0by90bHMubWF4VmVyc2lvbiAoKSA8dHlwZSAtNj47CiBmdW5jIChjIDx0eXBlIDIzMj4pIC5jcnlwdG8vdGxzLmN1cnZlUHJlZmVyZW5jZXMgKCkgPHR5cGUgMjM0IFtdIDx0eXBlIDIwOD4+OwogZnVuYyAoYyA8dHlwZSAyMzI+KSAuY3J5cHRvL3Rscy5tdXR1YWxWZXJzaW9uICh2ZXJzIDx0eXBlIC02PikgKD8gPHR5cGUgLTY+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAoYyA8dHlwZSAyMzI+KSAuY3J5cHRvL3Rscy5nZXRDZXJ0aWZpY2F0ZSAoY2xpZW50SGVsbG8gPHR5cGUgMjAzPikgKD8gPHR5cGUgMjM1ICo8dHlwZSAxPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIzMj4pIEJ1aWxkTmFtZVRvQ2VydGlmaWNhdGUgKCk7Cj4+KSA8dHlwZSAyMzYgKjx0eXBlIDIzNyAiQ29ubiIgPHR5cGUgMjM4IHN0cnVjdCB7IC5jcnlwdG8vdGxzLmNvbm4gPHR5cGUgMTg5PjsgLmNyeXB0by90bHMuaXNDbGllbnQgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuaGFuZHNoYWtlTXV0ZXggPHR5cGUgMjI3PjsgLmNyeXB0by90bHMuaGFuZHNoYWtlRXJyIDx0eXBlIC0xOT47IC5jcnlwdG8vdGxzLnZlcnMgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5oYXZlVmVycyA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5jb25maWcgPHR5cGUgMTk1PjsgLmNyeXB0by90bHMuaGFuZHNoYWtlQ29tcGxldGUgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuZGlkUmVzdW1lIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLmNpcGhlclN1aXRlIDx0eXBlIC02PjsgLmNyeXB0by90bHMub2NzcFJlc3BvbnNlIDx0eXBlIDIzOSBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMucGVlckNlcnRpZmljYXRlcyA8dHlwZSAyNDAgW10gPHR5cGUgOD4+OyAuY3J5cHRvL3Rscy52ZXJpZmllZENoYWlucyA8dHlwZSAyNDEgW10gPHR5cGUgMjQyIFtdIDx0eXBlIDg+Pj47IC5jcnlwdG8vdGxzLnNlcnZlck5hbWUgPHR5cGUgLTE2PjsgLmNyeXB0by90bHMuZmlyc3RGaW5pc2hlZCA8dHlwZSAyNDMgWzEyIF0gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmNsaWVudFByb3RvY29sIDx0eXBlIC0xNj47IC5jcnlwdG8vdGxzLmNsaWVudFByb3RvY29sRmFsbGJhY2sgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuaW4gPHR5cGUgMjQ0ICIuY3J5cHRvL3Rscy5oYWxmQ29ubiIgPHR5cGUgMjQ1IHN0cnVjdCB7ID8gPHR5cGUgMjI3PjsgLmNyeXB0by90bHMuZXJyIDx0eXBlIC0xOT47IC5jcnlwdG8vdGxzLnZlcnNpb24gPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5jaXBoZXIgPHR5cGUgMjQ2IGludGVyZmFjZSB7IH0+OyAuY3J5cHRvL3Rscy5tYWMgPHR5cGUgMjQ3ICIuY3J5cHRvL3Rscy5tYWNGdW5jdGlvbiIgPHR5cGUgMjQ4IGludGVyZmFjZSB7IFNpemUgKCkgPHR5cGUgLTExPjsgTUFDIChkaWdlc3RCdWYgPHR5cGUgMjQ5IFtdIDx0eXBlIC0yMD4+LCBzZXEgPHR5cGUgMjQ5PiwgaGVhZGVyIDx0eXBlIDI0OT4sIGRhdGEgPHR5cGUgMjQ5PikgPHR5cGUgMjUwIFtdIDx0eXBlIC0yMD4+OyB9Pj47IC5jcnlwdG8vdGxzLnNlcSA8dHlwZSAyNTEgWzggXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuYmZyZWUgPHR5cGUgMjUyICo8dHlwZSAyNTMgIi5jcnlwdG8vdGxzLmJsb2NrIiA8dHlwZSAyNTQgc3RydWN0IHsgLmNyeXB0by90bHMuZGF0YSA8dHlwZSAyNTUgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLm9mZiA8dHlwZSAtMTE+OyAuY3J5cHRvL3Rscy5saW5rIDx0eXBlIDI1NiAqPHR5cGUgMjUzPj47IH0+CiBmdW5jIChiIDx0eXBlIDI1NyAqPHR5cGUgMjUzPj4pIC5jcnlwdG8vdGxzLnJlc2l6ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMjU3PikgLmNyeXB0by90bHMucmVzZXJ2ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMjU3PikgLmNyeXB0by90bHMucmVhZEZyb21VbnRpbCAociA8dHlwZSAxODM+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI1Nz4pIFJlYWQgKHAgPHR5cGUgMjU4IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7Cj4+OyAuY3J5cHRvL3Rscy5uZXh0Q2lwaGVyIDx0eXBlIDI1OSBpbnRlcmZhY2UgeyB9PjsgLmNyeXB0by90bHMubmV4dE1hYyA8dHlwZSAyNDc+OyAuY3J5cHRvL3Rscy5pbkRpZ2VzdEJ1ZiA8dHlwZSAyNjAgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLm91dERpZ2VzdEJ1ZiA8dHlwZSAyNjA+OyB9PgogZnVuYyAoaGMgPHR5cGUgMjYxICo8dHlwZSAyNDQ+PikgLmNyeXB0by90bHMuc2V0RXJyb3JMb2NrZWQgKGVyciA8dHlwZSAtMTk+KSA8dHlwZSAtMTk+OwogZnVuYyAoaGMgPHR5cGUgMjYxPikgLmNyeXB0by90bHMuZXJyb3IgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGhjIDx0eXBlIDI2MT4pIC5jcnlwdG8vdGxzLnByZXBhcmVDaXBoZXJTcGVjICh2ZXJzaW9uIDx0eXBlIC02PiwgY2lwaGVyIDx0eXBlIDI2MiBpbnRlcmZhY2UgeyB9PiwgbWFjIDx0eXBlIDI0Nz4pOwogZnVuYyAoaGMgPHR5cGUgMjYxPikgLmNyeXB0by90bHMuY2hhbmdlQ2lwaGVyU3BlYyAoKSA8dHlwZSAtMTk+OwogZnVuYyAoaGMgPHR5cGUgMjYxPikgLmNyeXB0by90bHMuaW5jU2VxICgpOwogZnVuYyAoaGMgPHR5cGUgMjYxPikgLmNyeXB0by90bHMucmVzZXRTZXEgKCk7CiBmdW5jIChoYyA8dHlwZSAyNjE+KSAuY3J5cHRvL3Rscy5kZWNyeXB0IChiIDx0eXBlIDI2MyAqPHR5cGUgMjUzPj4pIChvayA8dHlwZSAtMTU+LCBwcmVmaXhMZW4gPHR5cGUgLTExPiwgYWxlcnRWYWx1ZSA8dHlwZSAyNjQgIi5jcnlwdG8vdGxzLmFsZXJ0IiA8dHlwZSAtNT4KIGZ1bmMgKGUgPHR5cGUgMjY0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChlIDx0eXBlIDI2ND4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj4pOwogZnVuYyAoaGMgPHR5cGUgMjYxPikgLmNyeXB0by90bHMuZW5jcnlwdCAoYiA8dHlwZSAyNjUgKjx0eXBlIDI1Mz4+LCBleHBsaWNpdElWTGVuIDx0eXBlIC0xMT4pICg/IDx0eXBlIC0xNT4sID8gPHR5cGUgMjY0Pik7CiBmdW5jIChoYyA8dHlwZSAyNjE+KSAuY3J5cHRvL3Rscy5uZXdCbG9jayAoKSA8dHlwZSAyNTc+OwogZnVuYyAoaGMgPHR5cGUgMjYxPikgLmNyeXB0by90bHMuZnJlZUJsb2NrIChiIDx0eXBlIDI1Nz4pOwogZnVuYyAoaGMgPHR5cGUgMjYxPikgLmNyeXB0by90bHMuc3BsaXRCbG9jayAoYiA8dHlwZSAyNTc+LCBuIDx0eXBlIC0xMT4pICg/IDx0eXBlIDI1Nz4sID8gPHR5cGUgMjU3Pik7Cj47IC5jcnlwdG8vdGxzLm91dCA8dHlwZSAyNDQ+OyAuY3J5cHRvL3Rscy5yYXdJbnB1dCA8dHlwZSAyNjYgKjx0eXBlIDI1Mz4+OyAuY3J5cHRvL3Rscy5pbnB1dCA8dHlwZSAyNjcgKjx0eXBlIDI1Mz4+OyAuY3J5cHRvL3Rscy5oYW5kIDx0eXBlIDI2OCAiYnl0ZXMuQnVmZmVyIiA8dHlwZSAyNjkgc3RydWN0IHsgLmJ5dGVzLmJ1ZiA8dHlwZSAyNzAgW10gPHR5cGUgLTIwPj47IC5ieXRlcy5vZmYgPHR5cGUgLTExPjsgLmJ5dGVzLnJ1bmVCeXRlcyA8dHlwZSAyNzEgWzQgXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLmJvb3RzdHJhcCA8dHlwZSAyNzIgWzY0IF0gPHR5cGUgLTIwPj47IC5ieXRlcy5sYXN0UmVhZCA8dHlwZSAyNzMgIi5ieXRlcy5yZWFkT3AiIDx0eXBlIC0xMT4+OyB9PgogZnVuYyAoYiA8dHlwZSAyNzQgKjx0eXBlIDI2OD4+KSBVbnJlYWRCeXRlICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI3ND4pIFRydW5jYXRlIChuIDx0eXBlIC0xMT4pOwogZnVuYyAoYiA8dHlwZSAyNzQ+KSBXcml0ZVN0cmluZyAocyA8dHlwZSAtMTY+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3ND4pIFJlYWRTdHJpbmcgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIC0xNj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgUmVhZEJ5dGUgKCkgKGMgPHR5cGUgLTIwPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNzQ+KSBOZXh0IChuIDx0eXBlIC0xMT4pIDx0eXBlIDI3NSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgV3JpdGVSdW5lIChyIDx0eXBlIC0yMT4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChiIDx0eXBlIDI3ND4pIFdyaXRlVG8gKHcgPHR5cGUgMjc2ICJpby5Xcml0ZXIiIDx0eXBlIDI3NyBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAyNzggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgUmVhZEJ5dGVzIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAyNzkgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgLmJ5dGVzLmdyb3cgKG4gPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3ND4pIFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgUmVhZCAocCA8dHlwZSAyODAgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgUmVzZXQgKCk7CiBmdW5jIChiIDx0eXBlIDI3ND4pIC5ieXRlcy5yZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDI4MSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNzQ+KSBXcml0ZUJ5dGUgKGMgPHR5cGUgLTIwPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgV3JpdGUgKHAgPHR5cGUgMjgyIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3ND4pIFJlYWRGcm9tIChyIDx0eXBlIDE4Mz4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNzQ+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgR3JvdyAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMjc0PikgQnl0ZXMgKCkgPHR5cGUgMjgzIFtdIDx0eXBlIC0yMD4+Owo+OyAuY3J5cHRvL3Rscy50bXAgPHR5cGUgMjg0IFsxNiBdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAoYyA8dHlwZSAyODUgKjx0eXBlIDIzNz4+KSBMb2NhbEFkZHIgKCkgPHR5cGUgMTkzPjsKIGZ1bmMgKGMgPHR5cGUgMjg1PikgUmVtb3RlQWRkciAoKSA8dHlwZSAxOTM+OwogZnVuYyAoYyA8dHlwZSAyODU+KSBTZXREZWFkbGluZSAodCA8dHlwZSA3OT4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDI4NT4pIFNldFJlYWREZWFkbGluZSAodCA8dHlwZSA3OT4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDI4NT4pIFNldFdyaXRlRGVhZGxpbmUgKHQgPHR5cGUgNzk+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAyODU+KSAuY3J5cHRvL3Rscy5yZWFkUmVjb3JkICh3YW50IDx0eXBlIDI4NiAiLmNyeXB0by90bHMucmVjb3JkVHlwZSIgPHR5cGUgLTU+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjg1PikgLmNyeXB0by90bHMuc2VuZEFsZXJ0TG9ja2VkIChlcnIgPHR5cGUgMjY0PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjg1PikgLmNyeXB0by90bHMuc2VuZEFsZXJ0IChlcnIgPHR5cGUgMjY0PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjg1PikgLmNyeXB0by90bHMud3JpdGVSZWNvcmQgKHR5cCA8dHlwZSAyODY+LCBkYXRhIDx0eXBlIDI4NyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyODU+KSAuY3J5cHRvL3Rscy5yZWFkSGFuZHNoYWtlICgpICg/IDx0eXBlIDI4OCBpbnRlcmZhY2UgeyB9PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjg1PikgV3JpdGUgKGIgPHR5cGUgMjg5IFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyODU+KSBSZWFkIChiIDx0eXBlIDI5MCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyODU+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAyODU+KSBIYW5kc2hha2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjg1PikgQ29ubmVjdGlvblN0YXRlICgpIDx0eXBlIDI5MSAiQ29ubmVjdGlvblN0YXRlIiA8dHlwZSAyOTIgc3RydWN0IHsgVmVyc2lvbiA8dHlwZSAtNj47IEhhbmRzaGFrZUNvbXBsZXRlIDx0eXBlIC0xNT47IERpZFJlc3VtZSA8dHlwZSAtMTU+OyBDaXBoZXJTdWl0ZSA8dHlwZSAtNj47IE5lZ290aWF0ZWRQcm90b2NvbCA8dHlwZSAtMTY+OyBOZWdvdGlhdGVkUHJvdG9jb2xJc011dHVhbCA8dHlwZSAtMTU+OyBTZXJ2ZXJOYW1lIDx0eXBlIC0xNj47IFBlZXJDZXJ0aWZpY2F0ZXMgPHR5cGUgMjkzIFtdIDx0eXBlIDg+PjsgVmVyaWZpZWRDaGFpbnMgPHR5cGUgMjk0IFtdIDx0eXBlIDI5NSBbXSA8dHlwZSA4Pj4+OyBUTFNVbmlxdWUgPHR5cGUgMjk2IFtdIDx0eXBlIC0yMD4+OyB9Pj47CiBmdW5jIChjIDx0eXBlIDI4NT4pIE9DU1BSZXNwb25zZSAoKSA8dHlwZSAyOTcgW10gPHR5cGUgLTIwPj47CiBmdW5jIChjIDx0eXBlIDI4NT4pIFZlcmlmeUhvc3RuYW1lIChob3N0IDx0eXBlIC0xNj4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDI4NT4pIC5jcnlwdG8vdGxzLmNsaWVudEhhbmRzaGFrZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAyODU+KSAuY3J5cHRvL3Rscy5zZXJ2ZXJIYW5kc2hha2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjg1PikgLmNyeXB0by90bHMudHJ5Q2lwaGVyU3VpdGUgKGlkIDx0eXBlIC02Piwgc3VwcG9ydGVkQ2lwaGVyU3VpdGVzIDx0eXBlIDI5OCBbXSA8dHlwZSAtNj4+LCB2ZXJzaW9uIDx0eXBlIC02PiwgZWxsaXB0aWNPayA8dHlwZSAtMTU+LCBlY2RzYU9rIDx0eXBlIC0xNT4pIDx0eXBlIDI5OSAqPHR5cGUgMzAwICIuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSIgPHR5cGUgMzAxIHN0cnVjdCB7IC5jcnlwdG8vdGxzLmlkIDx0eXBlIC02PjsgLmNyeXB0by90bHMua2V5TGVuIDx0eXBlIC0xMT47IC5jcnlwdG8vdGxzLm1hY0xlbiA8dHlwZSAtMTE+OyAuY3J5cHRvL3Rscy5pdkxlbiA8dHlwZSAtMTE+OyAuY3J5cHRvL3Rscy5rYSA8dHlwZSAzMDIgKHZlcnNpb24gPHR5cGUgLTY+KSA8dHlwZSAzMDMgIi5jcnlwdG8vdGxzLmtleUFncmVlbWVudCIgPHR5cGUgMzA0IGludGVyZmFjZSB7IC5jcnlwdG8vdGxzLmdlbmVyYXRlU2VydmVyS2V5RXhjaGFuZ2UgKD8gPHR5cGUgMzA1ICo8dHlwZSAxOTY+PiwgPyA8dHlwZSAzMDYgKjx0eXBlIDE+PiwgPyA8dHlwZSAzMDcgKjx0eXBlIDMwOCAiLmNyeXB0by90bHMuY2xpZW50SGVsbG9Nc2ciIDx0eXBlIDMwOSBzdHJ1Y3QgeyAuY3J5cHRvL3Rscy5yYXcgPHR5cGUgMzEwIFtdIDx0eXBlIC0yMD4+OyAuY3J5cHRvL3Rscy52ZXJzIDx0eXBlIC02PjsgLmNyeXB0by90bHMucmFuZG9tIDx0eXBlIDMxMSBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuc2Vzc2lvbklkIDx0eXBlIDMxMiBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuY2lwaGVyU3VpdGVzIDx0eXBlIDMxMyBbXSA8dHlwZSAtNj4+OyAuY3J5cHRvL3Rscy5jb21wcmVzc2lvbk1ldGhvZHMgPHR5cGUgMzE0IFtdIDx0eXBlIC01Pj47IC5jcnlwdG8vdGxzLm5leHRQcm90b05lZyA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5zZXJ2ZXJOYW1lIDx0eXBlIC0xNj47IC5jcnlwdG8vdGxzLm9jc3BTdGFwbGluZyA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5zdXBwb3J0ZWRDdXJ2ZXMgPHR5cGUgMzE1IFtdIDx0eXBlIDIwOD4+OyAuY3J5cHRvL3Rscy5zdXBwb3J0ZWRQb2ludHMgPHR5cGUgMzE2IFtdIDx0eXBlIC01Pj47IC5jcnlwdG8vdGxzLnRpY2tldFN1cHBvcnRlZCA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5zZXNzaW9uVGlja2V0IDx0eXBlIDMxNyBbXSA8dHlwZSAtNT4+OyAuY3J5cHRvL3Rscy5zaWduYXR1cmVBbmRIYXNoZXMgPHR5cGUgMzE4IFtdIDx0eXBlIDMxOSAiLmNyeXB0by90bHMuc2lnbmF0dXJlQW5kSGFzaCIgPHR5cGUgMzIwIHN0cnVjdCB7IC5jcnlwdG8vdGxzLmhhc2ggPHR5cGUgLTU+OyAuY3J5cHRvL3Rscy5zaWduYXR1cmUgPHR5cGUgLTU+OyB9Pj4+OyAuY3J5cHRvL3Rscy5zZWN1cmVSZW5lZ290aWF0aW9uIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLmFscG5Qcm90b2NvbHMgPHR5cGUgMzIxIFtdIDx0eXBlIC0xNj4+OyB9PgogZnVuYyAobSA8dHlwZSAzMjIgKjx0eXBlIDMwOD4+KSAuY3J5cHRvL3Rscy5lcXVhbCAoaSA8dHlwZSAzMjMgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNT47CiBmdW5jIChtIDx0eXBlIDMyMj4pIC5jcnlwdG8vdGxzLm1hcnNoYWwgKCkgPHR5cGUgMzI0IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAobSA8dHlwZSAzMjI+KSAuY3J5cHRvL3Rscy51bm1hcnNoYWwgKGRhdGEgPHR5cGUgMzI1IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAzMjYgKjx0eXBlIDMyNyAiLmNyeXB0by90bHMuc2VydmVySGVsbG9Nc2ciIDx0eXBlIDMyOCBzdHJ1Y3QgeyAuY3J5cHRvL3Rscy5yYXcgPHR5cGUgMzI5IFtdIDx0eXBlIC0yMD4+OyAuY3J5cHRvL3Rscy52ZXJzIDx0eXBlIC02PjsgLmNyeXB0by90bHMucmFuZG9tIDx0eXBlIDMzMCBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuc2Vzc2lvbklkIDx0eXBlIDMzMSBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuY2lwaGVyU3VpdGUgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5jb21wcmVzc2lvbk1ldGhvZCA8dHlwZSAtNT47IC5jcnlwdG8vdGxzLm5leHRQcm90b05lZyA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5uZXh0UHJvdG9zIDx0eXBlIDMzMiBbXSA8dHlwZSAtMTY+PjsgLmNyeXB0by90bHMub2NzcFN0YXBsaW5nIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLnRpY2tldFN1cHBvcnRlZCA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5zZWN1cmVSZW5lZ290aWF0aW9uIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLmFscG5Qcm90b2NvbCA8dHlwZSAtMTY+OyB9PgogZnVuYyAobSA8dHlwZSAzMzMgKjx0eXBlIDMyNz4+KSAuY3J5cHRvL3Rscy5lcXVhbCAoaSA8dHlwZSAzMzQgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNT47CiBmdW5jIChtIDx0eXBlIDMzMz4pIC5jcnlwdG8vdGxzLm1hcnNoYWwgKCkgPHR5cGUgMzM1IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAobSA8dHlwZSAzMzM+KSAuY3J5cHRvL3Rscy51bm1hcnNoYWwgKGRhdGEgPHR5cGUgMzM2IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PikgKD8gPHR5cGUgMzM3ICo8dHlwZSAzMzggIi5jcnlwdG8vdGxzLnNlcnZlcktleUV4Y2hhbmdlTXNnIiA8dHlwZSAzMzkgc3RydWN0IHsgLmNyeXB0by90bHMucmF3IDx0eXBlIDM0MCBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMua2V5IDx0eXBlIDM0MSBbXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKG0gPHR5cGUgMzQyICo8dHlwZSAzMzg+PikgLmNyeXB0by90bHMuZXF1YWwgKGkgPHR5cGUgMzQzIGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTU+OwogZnVuYyAobSA8dHlwZSAzNDI+KSAuY3J5cHRvL3Rscy5tYXJzaGFsICgpIDx0eXBlIDM0NCBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKG0gPHR5cGUgMzQyPikgLmNyeXB0by90bHMudW5tYXJzaGFsIChkYXRhIDx0eXBlIDM0NSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKPj4sID8gPHR5cGUgLTE5Pik7IC5jcnlwdG8vdGxzLnByb2Nlc3NDbGllbnRLZXlFeGNoYW5nZSAoPyA8dHlwZSAzNDYgKjx0eXBlIDE5Nj4+LCA/IDx0eXBlIDM0NyAqPHR5cGUgMT4+LCA/IDx0eXBlIDM0OCAqPHR5cGUgMzQ5ICIuY3J5cHRvL3Rscy5jbGllbnRLZXlFeGNoYW5nZU1zZyIgPHR5cGUgMzUwIHN0cnVjdCB7IC5jcnlwdG8vdGxzLnJhdyA8dHlwZSAzNTEgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmNpcGhlcnRleHQgPHR5cGUgMzUyIFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAobSA8dHlwZSAzNTMgKjx0eXBlIDM0OT4+KSAuY3J5cHRvL3Rscy5lcXVhbCAoaSA8dHlwZSAzNTQgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNT47CiBmdW5jIChtIDx0eXBlIDM1Mz4pIC5jcnlwdG8vdGxzLm1hcnNoYWwgKCkgPHR5cGUgMzU1IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAobSA8dHlwZSAzNTM+KSAuY3J5cHRvL3Rscy51bm1hcnNoYWwgKGRhdGEgPHR5cGUgMzU2IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtNj4pICg/IDx0eXBlIDM1NyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsgLmNyeXB0by90bHMucHJvY2Vzc1NlcnZlcktleUV4Y2hhbmdlICg/IDx0eXBlIDM1OCAqPHR5cGUgMTk2Pj4sID8gPHR5cGUgMzU5ICo8dHlwZSAzMDg+PiwgPyA8dHlwZSAzNjAgKjx0eXBlIDMyNz4+LCA/IDx0eXBlIDg+LCA/IDx0eXBlIDM2MSAqPHR5cGUgMzM4Pj4pIDx0eXBlIC0xOT47IC5jcnlwdG8vdGxzLmdlbmVyYXRlQ2xpZW50S2V5RXhjaGFuZ2UgKD8gPHR5cGUgMzYyICo8dHlwZSAxOTY+PiwgPyA8dHlwZSAzNjMgKjx0eXBlIDMwOD4+LCA/IDx0eXBlIDg+KSAoPyA8dHlwZSAzNjQgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgMzY1ICo8dHlwZSAzNDk+PiwgPyA8dHlwZSAtMTk+KTsgfT4+PjsgLmNyeXB0by90bHMuZmxhZ3MgPHR5cGUgLTExPjsgLmNyeXB0by90bHMuY2lwaGVyIDx0eXBlIDM2NiAoa2V5IDx0eXBlIDM2NyBbXSA8dHlwZSAtMjA+PiwgaXYgPHR5cGUgMzY3PiwgaXNSZWFkIDx0eXBlIC0xNT4pIDx0eXBlIDM2OCBpbnRlcmZhY2UgeyB9Pj47IC5jcnlwdG8vdGxzLm1hYyA8dHlwZSAzNjkgKHZlcnNpb24gPHR5cGUgLTY+LCBtYWNLZXkgPHR5cGUgMzcwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAyNDc+PjsgLmNyeXB0by90bHMuYWVhZCA8dHlwZSAzNzEgKGtleSA8dHlwZSAzNzIgW10gPHR5cGUgLTIwPj4sIGZpeGVkTm9uY2UgPHR5cGUgMzcyPikgPHR5cGUgMzczICJjcnlwdG8vY2lwaGVyLkFFQUQiIDx0eXBlIDM3NCBpbnRlcmZhY2UgeyBOb25jZVNpemUgKCkgPHR5cGUgLTExPjsgT3ZlcmhlYWQgKCkgPHR5cGUgLTExPjsgU2VhbCAoZHN0IDx0eXBlIDM3NSBbXSA8dHlwZSAtMjA+Piwgbm9uY2UgPHR5cGUgMzc1PiwgcGxhaW50ZXh0IDx0eXBlIDM3NT4sIGRhdGEgPHR5cGUgMzc1PikgPHR5cGUgMzc2IFtdIDx0eXBlIC0yMD4+OyBPcGVuIChkc3QgPHR5cGUgMzc3IFtdIDx0eXBlIC0yMD4+LCBub25jZSA8dHlwZSAzNzc+LCBjaXBoZXJ0ZXh0IDx0eXBlIDM3Nz4sIGRhdGEgPHR5cGUgMzc3PikgKD8gPHR5cGUgMzc4IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOyB9Pj4+OyB9Pj4+OwogZnVuYyAoYyA8dHlwZSAyODU+KSAuY3J5cHRvL3Rscy5lbmNyeXB0VGlja2V0IChzdGF0ZSA8dHlwZSAzNzkgKjx0eXBlIDM4MCAiLmNyeXB0by90bHMuc2Vzc2lvblN0YXRlIiA8dHlwZSAzODEgc3RydWN0IHsgLmNyeXB0by90bHMudmVycyA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLmNpcGhlclN1aXRlIDx0eXBlIC02PjsgLmNyeXB0by90bHMubWFzdGVyU2VjcmV0IDx0eXBlIDM4MiBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuY2VydGlmaWNhdGVzIDx0eXBlIDM4MyBbXSA8dHlwZSAzODQgW10gPHR5cGUgLTIwPj4+OyB9PgogZnVuYyAocyA8dHlwZSAzODUgKjx0eXBlIDM4MD4+KSAuY3J5cHRvL3Rscy5lcXVhbCAoaSA8dHlwZSAzODYgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNT47CiBmdW5jIChzIDx0eXBlIDM4NT4pIC5jcnlwdG8vdGxzLm1hcnNoYWwgKCkgPHR5cGUgMzg3IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocyA8dHlwZSAzODU+KSAuY3J5cHRvL3Rscy51bm1hcnNoYWwgKGRhdGEgPHR5cGUgMzg4IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PikgKD8gPHR5cGUgMzg5IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyODU+KSAuY3J5cHRvL3Rscy5kZWNyeXB0VGlja2V0IChlbmNyeXB0ZWQgPHR5cGUgMzkwIFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSAzNzk+LCA/IDx0eXBlIC0xNT4pOwo+PjsKdHlwZSA8dHlwZSAyMTM+Owp0eXBlIDx0eXBlIDIwND47CnR5cGUgPHR5cGUgMjE2PjsKdHlwZSA8dHlwZSAyMTk+Owp0eXBlIDx0eXBlIDE5Nj47CnR5cGUgPHR5cGUgMjM3PjsKdHlwZSA8dHlwZSAyOTE+Owp0eXBlIDx0eXBlIDIwOD47CmNvbnN0IEN1cnZlUDI1NiA8dHlwZSAyMDg+ID0gMjMgOwpjb25zdCBDdXJ2ZVAzODQgPHR5cGUgMjA4PiA9IDI0IDsKY29uc3QgQ3VydmVQNTIxIDx0eXBlIDIwOD4gPSAyNSA7CmZ1bmMgRGlhbCAobmV0d29yayA8dHlwZSAtMTY+LCBhZGRyIDx0eXBlIC0xNj4sIGNvbmZpZyA8dHlwZSAxOTU+KSAoPyA8dHlwZSAyMzY+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIERpYWxXaXRoRGlhbGVyIChkaWFsZXIgPHR5cGUgMzkxICo8dHlwZSAzOTIgIm5ldC5EaWFsZXIiIDx0eXBlIDM5MyBzdHJ1Y3QgeyBUaW1lb3V0IDx0eXBlIDk5PjsgRGVhZGxpbmUgPHR5cGUgNzk+OyBMb2NhbEFkZHIgPHR5cGUgMTkzPjsgRHVhbFN0YWNrIDx0eXBlIC0xNT47IEtlZXBBbGl2ZSA8dHlwZSA5OT47IH0+CiBmdW5jIChkIDx0eXBlIDM5NCAqPHR5cGUgMzkyPj4pIC5uZXQuZGlhbEROUyAobmV0d29yayA8dHlwZSAtMTY+LCBzZXJ2ZXIgPHR5cGUgLTE2PikgKD8gPHR5cGUgMzk1ICIubmV0LmRuc0Nvbm4iIDx0eXBlIDM5NiBpbnRlcmZhY2UgeyA/IDx0eXBlIDE4OT47IC5uZXQucmVhZEROU1Jlc3BvbnNlICgpICg/IDx0eXBlIDM5NyAqPHR5cGUgMzk4ICIubmV0LmRuc01zZyIgPHR5cGUgMzk5IHN0cnVjdCB7ID8gPHR5cGUgNDAwICIubmV0LmRuc01zZ0hkciIgPHR5cGUgNDAxIHN0cnVjdCB7IC5uZXQuaWQgPHR5cGUgLTY+OyAubmV0LnJlc3BvbnNlIDx0eXBlIC0xNT47IC5uZXQub3Bjb2RlIDx0eXBlIC0xMT47IC5uZXQuYXV0aG9yaXRhdGl2ZSA8dHlwZSAtMTU+OyAubmV0LnRydW5jYXRlZCA8dHlwZSAtMTU+OyAubmV0LnJlY3Vyc2lvbl9kZXNpcmVkIDx0eXBlIC0xNT47IC5uZXQucmVjdXJzaW9uX2F2YWlsYWJsZSA8dHlwZSAtMTU+OyAubmV0LnJjb2RlIDx0eXBlIC0xMT47IH0+CiBmdW5jIChoIDx0eXBlIDQwMiAqPHR5cGUgNDAwPj4pIFdhbGsgKGYgPHR5cGUgNDAzICh2IDx0eXBlIDQwNCBpbnRlcmZhY2UgeyB9PiwgbmFtZSA8dHlwZSAtMTY+LCB0YWcgPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pIDx0eXBlIC0xNT47Cj47IC5uZXQucXVlc3Rpb24gPHR5cGUgNDA1IFtdIDx0eXBlIDQwNiAiLm5ldC5kbnNRdWVzdGlvbiIgPHR5cGUgNDA3IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PiAibmV0OlwiZG9tYWluLW5hbWVcIiI7IFF0eXBlIDx0eXBlIC02PjsgUWNsYXNzIDx0eXBlIC02PjsgfT4KIGZ1bmMgKHEgPHR5cGUgNDA4ICo8dHlwZSA0MDY+PikgV2FsayAoZiA8dHlwZSA0MDkgKHYgPHR5cGUgNDEwIGludGVyZmFjZSB7IH0+LCBuYW1lIDx0eXBlIC0xNj4sIHRhZyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgPHR5cGUgLTE1PjsKPj47IC5uZXQuYW5zd2VyIDx0eXBlIDQxMSBbXSA8dHlwZSA0MTIgIi5uZXQuZG5zUlIiIDx0eXBlIDQxMyBpbnRlcmZhY2UgeyA/IDx0eXBlIDQxNCAiLm5ldC5kbnNTdHJ1Y3QiIDx0eXBlIDQxNSBpbnRlcmZhY2UgeyBXYWxrIChmIDx0eXBlIDQxNiAodiA8dHlwZSA0MTcgaW50ZXJmYWNlIHsgfT4sIG5hbWUgPHR5cGUgLTE2PiwgdGFnIDx0eXBlIC0xNj4pIChvayA8dHlwZSAtMTU+KT4pIChvayA8dHlwZSAtMTU+KTsgfT4+OyBIZWFkZXIgKCkgPHR5cGUgNDE4ICo8dHlwZSA0MTkgIi5uZXQuZG5zUlJfSGVhZGVyIiA8dHlwZSA0MjAgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+ICJuZXQ6XCJkb21haW4tbmFtZVwiIjsgUnJ0eXBlIDx0eXBlIC02PjsgQ2xhc3MgPHR5cGUgLTY+OyBUdGwgPHR5cGUgLTc+OyBSZGxlbmd0aCA8dHlwZSAtNj47IH0+CiBmdW5jIChoIDx0eXBlIDQyMSAqPHR5cGUgNDE5Pj4pIEhlYWRlciAoKSA8dHlwZSA0MjE+OwogZnVuYyAoaCA8dHlwZSA0MjE+KSBXYWxrIChmIDx0eXBlIDQyMiAodiA8dHlwZSA0MjMgaW50ZXJmYWNlIHsgfT4sIG5hbWUgPHR5cGUgLTE2PiwgdGFnIDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTU+Owo+PjsgfT4+PjsgLm5ldC5ucyA8dHlwZSA0MjQgW10gPHR5cGUgNDEyPj47IC5uZXQuZXh0cmEgPHR5cGUgNDI1IFtdIDx0eXBlIDQxMj4+OyB9PgogZnVuYyAoZG5zIDx0eXBlIDQyNiAqPHR5cGUgMzk4Pj4pIFVucGFjayAobXNnIDx0eXBlIDQyNyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGRucyA8dHlwZSA0MjY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGRucyA8dHlwZSA0MjY+KSBQYWNrICgpIChtc2cgPHR5cGUgNDI4IFtdIDx0eXBlIC0yMD4+LCBvayA8dHlwZSAtMTU+KTsKPj4sID8gPHR5cGUgLTE5Pik7IC5uZXQud3JpdGVETlNRdWVyeSAoPyA8dHlwZSAzOTc+KSA8dHlwZSAtMTk+OyB9Pj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDM5ND4pIERpYWwgKG5ldHdvcmsgPHR5cGUgLTE2PiwgYWRkcmVzcyA8dHlwZSAtMTY+KSAoPyA8dHlwZSAxODk+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAzOTQ+KSAubmV0LmRlYWRsaW5lICgpIDx0eXBlIDc5PjsKPj4sIG5ldHdvcmsgPHR5cGUgLTE2PiwgYWRkciA8dHlwZSAtMTY+LCBjb25maWcgPHR5cGUgMTk1PikgKD8gPHR5cGUgMjM2PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBMaXN0ZW4gKG5ldHdvcmsgPHR5cGUgLTE2PiwgbGFkZHIgPHR5cGUgLTE2PiwgY29uZmlnIDx0eXBlIDE5NT4pICg/IDx0eXBlIDQyOSAibmV0Lkxpc3RlbmVyIiA8dHlwZSA0MzAgaW50ZXJmYWNlIHsgQWNjZXB0ICgpIChjIDx0eXBlIDE4OT4sIGVyciA8dHlwZSAtMTk+KTsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgQWRkciAoKSA8dHlwZSAxOTM+OyB9Pj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgTG9hZFg1MDlLZXlQYWlyIChjZXJ0RmlsZSA8dHlwZSAtMTY+LCBrZXlGaWxlIDx0eXBlIC0xNj4pIChjZXJ0IDx0eXBlIDE+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgTmV3TFJVQ2xpZW50U2Vzc2lvbkNhY2hlIChjYXBhY2l0eSA8dHlwZSAtMTE+KSA8dHlwZSAyMTY+OwpmdW5jIE5ld0xpc3RlbmVyIChpbm5lciA8dHlwZSA0Mjk+LCBjb25maWcgPHR5cGUgMTk1PikgPHR5cGUgNDI5PjsKY29uc3QgTm9DbGllbnRDZXJ0IDx0eXBlIDIxMz4gPSAwIDsKY29uc3QgUmVxdWVzdENsaWVudENlcnQgPHR5cGUgMjEzPiA9IDEgOwpjb25zdCBSZXF1aXJlQW5kVmVyaWZ5Q2xpZW50Q2VydCA8dHlwZSAyMTM+ID0gNCA7CmNvbnN0IFJlcXVpcmVBbnlDbGllbnRDZXJ0IDx0eXBlIDIxMz4gPSAyIDsKZnVuYyBTZXJ2ZXIgKGNvbm4gPHR5cGUgMTg5PiwgY29uZmlnIDx0eXBlIDE5NT4pIDx0eXBlIDIzNj47CmNvbnN0IFRMU19FQ0RIRV9FQ0RTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSA8dHlwZSAtNj4gPSA0OTE2MSA7CmNvbnN0IFRMU19FQ0RIRV9FQ0RTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiA8dHlwZSAtNj4gPSA0OTE5NSA7CmNvbnN0IFRMU19FQ0RIRV9FQ0RTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSA8dHlwZSAtNj4gPSA0OTE2MiA7CmNvbnN0IFRMU19FQ0RIRV9FQ0RTQV9XSVRIX1JDNF8xMjhfU0hBIDx0eXBlIC02PiA9IDQ5MTU5IDsKY29uc3QgVExTX0VDREhFX1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEgPHR5cGUgLTY+ID0gNDkxNzAgOwpjb25zdCBUTFNfRUNESEVfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBIDx0eXBlIC02PiA9IDQ5MTcxIDsKY29uc3QgVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiA8dHlwZSAtNj4gPSA0OTE5OSA7CmNvbnN0IFRMU19FQ0RIRV9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEgPHR5cGUgLTY+ID0gNDkxNzIgOwpjb25zdCBUTFNfRUNESEVfUlNBX1dJVEhfUkM0XzEyOF9TSEEgPHR5cGUgLTY+ID0gNDkxNjkgOwpjb25zdCBUTFNfRkFMTEJBQ0tfU0NTViA8dHlwZSAtNj4gPSAyMjAxNiA7CmNvbnN0IFRMU19SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hBIDx0eXBlIC02PiA9IDEwIDsKY29uc3QgVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSA8dHlwZSAtNj4gPSA0NyA7CmNvbnN0IFRMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEgPHR5cGUgLTY+ID0gNTMgOwpjb25zdCBUTFNfUlNBX1dJVEhfUkM0XzEyOF9TSEEgPHR5cGUgLTY+ID0gNSA7CmNvbnN0IFZlcmlmeUNsaWVudENlcnRJZkdpdmVuIDx0eXBlIDIxMz4gPSAzIDsKY29uc3QgVmVyc2lvblNTTDMwID0gNzY4IDsKY29uc3QgVmVyc2lvblRMUzEwID0gNzY5IDsKY29uc3QgVmVyc2lvblRMUzExID0gNzcwIDsKY29uc3QgVmVyc2lvblRMUzEyID0gNzcxIDsKZnVuYyBYNTA5S2V5UGFpciAoY2VydFBFTUJsb2NrIDx0eXBlIDQzMSBbXSA8dHlwZSAtMjA+Piwga2V5UEVNQmxvY2sgPHR5cGUgNDMxPikgKGNlcnQgPHR5cGUgMT4sIGVyciA8dHlwZSAtMTk+KTsKY2hlY2tzdW0gQkZENzAyOUY5RDI4MjhGOTA5M0RGRjQ1Q0UzNjRBMDk2NkFGNzUzMDsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAIidAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAALydAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAADknQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAABJ4AAAEAAAAAAAAAAAAAAAEAAAAAAAAA