f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABkLQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGVjZHNhOwpwa2dwYXRoIGNyeXB0by9lY2RzYTsKcHJpb3JpdHkgOTsKaW1wb3J0IGNyeXB0byBjcnlwdG8gImNyeXB0byI7CmltcG9ydCBlbGxpcHRpYyBjcnlwdG8vZWxsaXB0aWMgImNyeXB0by9lbGxpcHRpYyI7CmltcG9ydCBhc24xIGVuY29kaW5nL2FzbjEgImVuY29kaW5nL2FzbjEiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IGJpZyBtYXRoL2JpZyAibWF0aC9iaWciOwppbml0IGVjZHNhIGNyeXB0b19lY2RzYS4uaW1wb3J0IDkgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByYW5kIG1hdGhfcmFuZC4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJpbmFyeSBlbmNvZGluZ19iaW5hcnkuLmltcG9ydCA0IGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IGNyeXB0byBjcnlwdG8uLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBmbXQgZm10Li5pbXBvcnQgNiBiaWcgbWF0aF9iaWcuLmltcG9ydCA3IGFzbjEgZW5jb2RpbmdfYXNuMS4uaW1wb3J0IDggZWxsaXB0aWMgY3J5cHRvX2VsbGlwdGljLi5pbXBvcnQgODsKZnVuYyBHZW5lcmF0ZUtleSAoYyA8dHlwZSAxICJjcnlwdG8vZWxsaXB0aWMuQ3VydmUiIDx0eXBlIDIgaW50ZXJmYWNlIHsgUGFyYW1zICgpIDx0eXBlIDMgKjx0eXBlIDQgImNyeXB0by9lbGxpcHRpYy5DdXJ2ZVBhcmFtcyIgPHR5cGUgNSBzdHJ1Y3QgeyBQIDx0eXBlIDYgKjx0eXBlIDcgIm1hdGgvYmlnLkludCIgPHR5cGUgOCBzdHJ1Y3QgeyAubWF0aC9iaWcubmVnIDx0eXBlIC0xNT47IC5tYXRoL2JpZy5hYnMgPHR5cGUgOSAiLm1hdGgvYmlnLm5hdCIgPHR5cGUgMTAgW10gPHR5cGUgMTEgIm1hdGgvYmlnLldvcmQiIDx0eXBlIC0xMz4+PgogZnVuYyAoeiA8dHlwZSA5PikgLm1hdGgvYmlnLm11bCAoeCA8dHlwZSA5PiwgeSA8dHlwZSA5PikgPHR5cGUgOT47CiBmdW5jICh6IDx0eXBlIDk+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSAxMiAiaW8uUnVuZVNjYW5uZXIiIDx0eXBlIDEzIGludGVyZmFjZSB7ID8gPHR5cGUgMTQgImlvLlJ1bmVSZWFkZXIiIDx0eXBlIDE1IGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgfT4+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDk+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDk+KSAubWF0aC9iaWcuYWRkICh4IDx0eXBlIDk+LCB5IDx0eXBlIDk+KSA8dHlwZSA5PjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5hbmROb3QgKHggPHR5cGUgOT4sIHkgPHR5cGUgOT4pIDx0eXBlIDk+OwogZnVuYyAoeiA8dHlwZSA5PikgLm1hdGgvYmlnLnNldEJpdCAoeCA8dHlwZSA5PiwgaSA8dHlwZSAtMTI+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDk+OwogZnVuYyAoeiA8dHlwZSA5PikgLm1hdGgvYmlnLnN1YiAoeCA8dHlwZSA5PiwgeSA8dHlwZSA5PikgPHR5cGUgOT47CiBmdW5jICh4IDx0eXBlIDk+KSAubWF0aC9iaWcubW9kVyAoZCA8dHlwZSAxMT4pIChyIDx0eXBlIDExPik7CiBmdW5jIChuIDx0eXBlIDk+KSAubWF0aC9iaWcucHJvYmFibHlQcmltZSAocmVwcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocSA8dHlwZSA5PikgLm1hdGgvYmlnLmNvbnZlcnRXb3JkcyAocyA8dHlwZSAxNiBbXSA8dHlwZSAtMjA+PiwgY2hhcnNldCA8dHlwZSAtMTY+LCBiIDx0eXBlIDExPiwgbmRpZ2l0cyA8dHlwZSAtMTE+LCBiYiA8dHlwZSAxMT4sIHRhYmxlIDx0eXBlIDE3IFtdIDx0eXBlIDE4ICIubWF0aC9iaWcuZGl2aXNvciIgPHR5cGUgMTkgc3RydWN0IHsgLm1hdGgvYmlnLmJiYiA8dHlwZSA5PjsgLm1hdGgvYmlnLm5iaXRzIDx0eXBlIC0xMT47IC5tYXRoL2JpZy5uZGlnaXRzIDx0eXBlIC0xMT47IH0+Pj4pOwogZnVuYyAoeCA8dHlwZSA5PikgLm1hdGgvYmlnLnN0cmluZyAoY2hhcnNldCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSA5PikgLm1hdGgvYmlnLmRpdlcgKHggPHR5cGUgOT4sIHkgPHR5cGUgMTE+KSAocSA8dHlwZSA5PiwgciA8dHlwZSAxMT4pOwogZnVuYyAoeiA8dHlwZSA5PikgLm1hdGgvYmlnLnNociAoeCA8dHlwZSA5PiwgcyA8dHlwZSAtMTI+KSA8dHlwZSA5PjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5tdWxSYW5nZSAoYSA8dHlwZSAtOD4sIGIgPHR5cGUgLTg+KSA8dHlwZSA5PjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5tdWxBZGRXVyAoeCA8dHlwZSA5PiwgeSA8dHlwZSAxMT4sIHIgPHR5cGUgMTE+KSA8dHlwZSA5PjsKIGZ1bmMgKHggPHR5cGUgOT4pIC5tYXRoL2JpZy5kZWNpbWFsU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDk+KSAubWF0aC9iaWcuYW5kICh4IDx0eXBlIDk+LCB5IDx0eXBlIDk+KSA8dHlwZSA5PjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5iaXQgKGkgPHR5cGUgLTEyPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy54b3IgKHggPHR5cGUgOT4sIHkgPHR5cGUgOT4pIDx0eXBlIDk+OwogZnVuYyAoeiA8dHlwZSA5PikgLm1hdGgvYmlnLnNldCAoeCA8dHlwZSA5PikgPHR5cGUgOT47CiBmdW5jICh6IDx0eXBlIDk+KSAubWF0aC9iaWcucmFuZG9tIChyYW5kIDx0eXBlIDIwICo8dHlwZSAyMSAibWF0aC9yYW5kLlJhbmQiICJyYW5kIiA8dHlwZSAyMiBzdHJ1Y3QgeyAubWF0aC9yYW5kLnNyYyA8dHlwZSAyMyAibWF0aC9yYW5kLlNvdXJjZSIgPHR5cGUgMjQgaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMjUgKjx0eXBlIDIxPj4pIEV4cEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMjU+KSBJbnQzMW4gKG4gPHR5cGUgLTM+KSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDI1PikgVWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKHIgPHR5cGUgMjU+KSBJbnRuIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDI1PikgUGVybSAobiA8dHlwZSAtMTE+KSA8dHlwZSAyNiBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHIgPHR5cGUgMjU+KSBOb3JtRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAyNT4pIEludDMxICgpIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMjU+KSBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDI1PikgU2VlZCAoc2VlZCA8dHlwZSAtND4pOwogZnVuYyAociA8dHlwZSAyNT4pIEludCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAyNT4pIEludDYzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMjU+KSBJbnQ2M24gKG4gPHR5cGUgLTQ+KSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDI1PikgRmxvYXQzMiAoKSA8dHlwZSAtOT47Cj4+LCBsaW1pdCA8dHlwZSA5PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSA5PjsKIGZ1bmMgKHggPHR5cGUgOT4pIC5tYXRoL2JpZy5jbXAgKHkgPHR5cGUgOT4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSA5PikgLm1hdGgvYmlnLm9yICh4IDx0eXBlIDk+LCB5IDx0eXBlIDk+KSA8dHlwZSA5PjsKIGZ1bmMgKHggPHR5cGUgOT4pIC5tYXRoL2JpZy5iaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5zZXRXb3JkICh4IDx0eXBlIDExPikgPHR5cGUgOT47CiBmdW5jICh6IDx0eXBlIDk+KSAubWF0aC9iaWcuZGl2ICh6MiA8dHlwZSA5PiwgdSA8dHlwZSA5PiwgdiA8dHlwZSA5PikgKHEgPHR5cGUgOT4sIHIgPHR5cGUgOT4pOwogZnVuYyAoeiA8dHlwZSA5PikgLm1hdGgvYmlnLnNldFVpbnQ2NCAoeCA8dHlwZSAtOD4pIDx0eXBlIDk+OwogZnVuYyAoeCA8dHlwZSA5PikgLm1hdGgvYmlnLnRyYWlsaW5nWmVyb0JpdHMgKCkgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5kaXZMYXJnZSAodSA8dHlwZSA5PiwgdUluIDx0eXBlIDk+LCB2IDx0eXBlIDk+KSAocSA8dHlwZSA5PiwgciA8dHlwZSA5Pik7CiBmdW5jICh6IDx0eXBlIDk+KSAubWF0aC9iaWcuZXhwTk5XaW5kb3dlZCAoeCA8dHlwZSA5PiwgeSA8dHlwZSA5PiwgbSA8dHlwZSA5PikgPHR5cGUgOT47CiBmdW5jICh6IDx0eXBlIDk+KSAubWF0aC9iaWcubm9ybSAoKSA8dHlwZSA5PjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5zZXRCeXRlcyAoYnVmIDx0eXBlIDI3IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA5PjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5zaGwgKHggPHR5cGUgOT4sIHMgPHR5cGUgLTEyPikgPHR5cGUgOT47CiBmdW5jICh6IDx0eXBlIDk+KSAubWF0aC9iaWcubWFrZSAobiA8dHlwZSAtMTE+KSA8dHlwZSA5PjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5jbGVhciAoKTsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5ieXRlcyAoYnVmIDx0eXBlIDI4IFtdIDx0eXBlIC0yMD4+KSAoaSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5leHBXVyAoeCA8dHlwZSAxMT4sIHkgPHR5cGUgMTE+KSA8dHlwZSA5PjsKIGZ1bmMgKHogPHR5cGUgOT4pIC5tYXRoL2JpZy5leHBOTiAoeCA8dHlwZSA5PiwgeSA8dHlwZSA5PiwgbSA8dHlwZSA5PikgPHR5cGUgOT47Cj47IH0+CiBmdW5jICh6IDx0eXBlIDI5ICo8dHlwZSA3Pj4pIE5lZyAoeCA8dHlwZSAyOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBRdW9SZW0gKHggPHR5cGUgMjk+LCB5IDx0eXBlIDI5PiwgciA8dHlwZSAyOT4pICg/IDx0eXBlIDI5PiwgPyA8dHlwZSAyOT4pOwogZnVuYyAoeCA8dHlwZSAyOT4pIEJ5dGVzICgpIDx0eXBlIDMwIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoeiA8dHlwZSAyOT4pIFNldEJpdHMgKGFicyA8dHlwZSAzMSBbXSA8dHlwZSAxMT4+KSA8dHlwZSAyOT47CiBmdW5jICh6IDx0eXBlIDI5PikgU2V0Qml0ICh4IDx0eXBlIDI5PiwgaSA8dHlwZSAtMTE+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBYb3IgKHggPHR5cGUgMjk+LCB5IDx0eXBlIDI5PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIFNldEludDY0ICh4IDx0eXBlIC00PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIE5vdCAoeCA8dHlwZSAyOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBVbm1hcnNoYWxKU09OICh0ZXh0IDx0eXBlIDMyIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIE9yICh4IDx0eXBlIDI5PiwgeSA8dHlwZSAyOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBTZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSAyOT47CiBmdW5jICh4IDx0eXBlIDI5PikgSW50NjQgKCkgPHR5cGUgLTQ+OwogZnVuYyAoeiA8dHlwZSAyOT4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDEyPiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAyOT4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMjk+KSBHQ0QgKHggPHR5cGUgMjk+LCB5IDx0eXBlIDI5PiwgYSA8dHlwZSAyOT4sIGIgPHR5cGUgMjk+KSA8dHlwZSAyOT47CiBmdW5jICh6IDx0eXBlIDI5PikgUmVtICh4IDx0eXBlIDI5PiwgeSA8dHlwZSAyOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHggPHR5cGUgMjk+KSBCaXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHggPHR5cGUgMjk+KSBCaXRzICgpIDx0eXBlIDMzIFtdIDx0eXBlIDExPj47CiBmdW5jICh6IDx0eXBlIDI5PikgU2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAzNCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIERpdk1vZCAoeCA8dHlwZSAyOT4sIHkgPHR5cGUgMjk+LCBtIDx0eXBlIDI5PikgKD8gPHR5cGUgMjk+LCA/IDx0eXBlIDI5Pik7CiBmdW5jICh6IDx0eXBlIDI5PikgUnNoICh4IDx0eXBlIDI5PiwgbiA8dHlwZSAtMTI+KSA8dHlwZSAyOT47CiBmdW5jICh4IDx0eXBlIDI5PikgQ21wICh5IDx0eXBlIDI5PikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDI5PikgU2NhbiAocyA8dHlwZSAzNSAiZm10LlNjYW5TdGF0ZSIgImZtdCIgPHR5cGUgMzYgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgU2tpcFNwYWNlICgpOyBUb2tlbiAoc2tpcFNwYWNlIDx0eXBlIC0xNT4sIGYgPHR5cGUgMzcgKD8gPHR5cGUgLTIxPikgPHR5cGUgLTE1Pj4pICh0b2tlbiA8dHlwZSAzOCBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBSZWFkIChidWYgPHR5cGUgMzkgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBjaCA8dHlwZSAtMjE+KSA8dHlwZSAtMTk+OwogZnVuYyAoeCA8dHlwZSAyOT4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSA0MCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMjk+KSBQcm9iYWJseVByaW1lIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jICh4IDx0eXBlIDI5PikgU2lnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAyOT4pIE1vZCAoeCA8dHlwZSAyOT4sIHkgPHR5cGUgMjk+KSA8dHlwZSAyOT47CiBmdW5jICh6IDx0eXBlIDI5PikgRXhwICh4IDx0eXBlIDI5PiwgeSA8dHlwZSAyOT4sIG0gPHR5cGUgMjk+KSA8dHlwZSAyOT47CiBmdW5jICh4IDx0eXBlIDI5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDI5PikgQWJzICh4IDx0eXBlIDI5PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIFVubWFyc2hhbFRleHQgKHRleHQgPHR5cGUgNDEgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDI5PikgUmFuZCAocm5kIDx0eXBlIDIwPiwgbiA8dHlwZSAyOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBBbmQgKHggPHR5cGUgMjk+LCB5IDx0eXBlIDI5PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIE1vZEludmVyc2UgKGcgPHR5cGUgMjk+LCBuIDx0eXBlIDI5PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIFF1byAoeCA8dHlwZSAyOT4sIHkgPHR5cGUgMjk+KSA8dHlwZSAyOT47CiBmdW5jICh6IDx0eXBlIDI5PikgQWRkICh4IDx0eXBlIDI5PiwgeSA8dHlwZSAyOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBMc2ggKHggPHR5cGUgMjk+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBBbmROb3QgKHggPHR5cGUgMjk+LCB5IDx0eXBlIDI5PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIFNldCAoeCA8dHlwZSAyOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBNdWwgKHggPHR5cGUgMjk+LCB5IDx0eXBlIDI5PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIE1hcnNoYWxUZXh0ICgpICh0ZXh0IDx0eXBlIDQyIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDI5PikgRGl2ICh4IDx0eXBlIDI5PiwgeSA8dHlwZSAyOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHogPHR5cGUgMjk+KSBCaW5vbWlhbCAobiA8dHlwZSAtND4sIGsgPHR5cGUgLTQ+KSA8dHlwZSAyOT47CiBmdW5jICh4IDx0eXBlIDI5PikgRm9ybWF0IChzIDx0eXBlIDQzICJmbXQuU3RhdGUiIDx0eXBlIDQ0IGludGVyZmFjZSB7IFdyaXRlIChiIDx0eXBlIDQ1IFtdIDx0eXBlIC0yMD4+KSAocmV0IDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUHJlY2lzaW9uICgpIChwcmVjIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBGbGFnIChjIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47IH0+PiwgY2ggPHR5cGUgLTIxPik7CiBmdW5jICh6IDx0eXBlIDI5PikgTXVsUmFuZ2UgKGEgPHR5cGUgLTQ+LCBiIDx0eXBlIC00PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIFNldFN0cmluZyAocyA8dHlwZSAtMTY+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDI5PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHggPHR5cGUgMjk+KSBVaW50NjQgKCkgPHR5cGUgLTg+OwogZnVuYyAoeiA8dHlwZSAyOT4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDQ2IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAyOT4pIEdvYkRlY29kZSAoYnVmIDx0eXBlIDQ3IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeCA8dHlwZSAyOT4pIEJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAyOT4pIC5tYXRoL2JpZy5iaW5hcnlHQ0QgKGEgPHR5cGUgMjk+LCBiIDx0eXBlIDI5PikgPHR5cGUgMjk+OwogZnVuYyAoeiA8dHlwZSAyOT4pIFN1YiAoeCA8dHlwZSAyOT4sIHkgPHR5cGUgMjk+KSA8dHlwZSAyOT47Cj4+OyBOIDx0eXBlIDY+OyBCIDx0eXBlIDY+OyBHeCA8dHlwZSA2PjsgR3kgPHR5cGUgNj47IEJpdFNpemUgPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGN1cnZlIDx0eXBlIDQ4ICo8dHlwZSA0Pj4pIC5jcnlwdG8vZWxsaXB0aWMuYWRkSmFjb2JpYW4gKHgxIDx0eXBlIDY+LCB5MSA8dHlwZSA2PiwgejEgPHR5cGUgNj4sIHgyIDx0eXBlIDY+LCB5MiA8dHlwZSA2PiwgejIgPHR5cGUgNj4pICg/IDx0eXBlIDY+LCA/IDx0eXBlIDY+LCA/IDx0eXBlIDY+KTsKIGZ1bmMgKGN1cnZlIDx0eXBlIDQ4PikgUGFyYW1zICgpIDx0eXBlIDQ4PjsKIGZ1bmMgKGN1cnZlIDx0eXBlIDQ4PikgU2NhbGFyTXVsdCAoQnggPHR5cGUgNj4sIEJ5IDx0eXBlIDY+LCBrIDx0eXBlIDQ5IFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSA2PiwgPyA8dHlwZSA2Pik7CiBmdW5jIChjdXJ2ZSA8dHlwZSA0OD4pIERvdWJsZSAoeDEgPHR5cGUgNj4sIHkxIDx0eXBlIDY+KSAoPyA8dHlwZSA2PiwgPyA8dHlwZSA2Pik7CiBmdW5jIChjdXJ2ZSA8dHlwZSA0OD4pIFNjYWxhckJhc2VNdWx0IChrIDx0eXBlIDUwIFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSA2PiwgPyA8dHlwZSA2Pik7CiBmdW5jIChjdXJ2ZSA8dHlwZSA0OD4pIEFkZCAoeDEgPHR5cGUgNj4sIHkxIDx0eXBlIDY+LCB4MiA8dHlwZSA2PiwgeTIgPHR5cGUgNj4pICg/IDx0eXBlIDY+LCA/IDx0eXBlIDY+KTsKIGZ1bmMgKGN1cnZlIDx0eXBlIDQ4PikgLmNyeXB0by9lbGxpcHRpYy5kb3VibGVKYWNvYmlhbiAoeCA8dHlwZSA2PiwgeSA8dHlwZSA2PiwgeiA8dHlwZSA2PikgKD8gPHR5cGUgNj4sID8gPHR5cGUgNj4sID8gPHR5cGUgNj4pOwogZnVuYyAoY3VydmUgPHR5cGUgNDg+KSBJc09uQ3VydmUgKHggPHR5cGUgNj4sIHkgPHR5cGUgNj4pIDx0eXBlIC0xNT47CiBmdW5jIChjdXJ2ZSA8dHlwZSA0OD4pIC5jcnlwdG8vZWxsaXB0aWMuYWZmaW5lRnJvbUphY29iaWFuICh4IDx0eXBlIDY+LCB5IDx0eXBlIDY+LCB6IDx0eXBlIDY+KSAoeE91dCA8dHlwZSA2PiwgeU91dCA8dHlwZSA2Pik7Cj4+OyBJc09uQ3VydmUgKHggPHR5cGUgNj4sIHkgPHR5cGUgNj4pIDx0eXBlIC0xNT47IEFkZCAoeDEgPHR5cGUgNj4sIHkxIDx0eXBlIDY+LCB4MiA8dHlwZSA2PiwgeTIgPHR5cGUgNj4pICh4IDx0eXBlIDY+LCB5IDx0eXBlIDY+KTsgRG91YmxlICh4MSA8dHlwZSA2PiwgeTEgPHR5cGUgNj4pICh4IDx0eXBlIDY+LCB5IDx0eXBlIDY+KTsgU2NhbGFyTXVsdCAoeDEgPHR5cGUgNj4sIHkxIDx0eXBlIDY+LCBrIDx0eXBlIDUxIFtdIDx0eXBlIC0yMD4+KSAoeCA8dHlwZSA2PiwgeSA8dHlwZSA2Pik7IFNjYWxhckJhc2VNdWx0IChrIDx0eXBlIDUyIFtdIDx0eXBlIC0yMD4+KSAoeCA8dHlwZSA2PiwgeSA8dHlwZSA2Pik7IH0+PiwgcmFuZCA8dHlwZSA1MyAiaW8uUmVhZGVyIiA8dHlwZSA1NCBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDU1IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PikgKHByaXYgPHR5cGUgNTYgKjx0eXBlIDU3ICJQcml2YXRlS2V5IiA8dHlwZSA1OCBzdHJ1Y3QgeyA/IDx0eXBlIDU5ICJQdWJsaWNLZXkiIDx0eXBlIDYwIHN0cnVjdCB7ID8gPHR5cGUgMT47IFggPHR5cGUgNj47IFkgPHR5cGUgNj47IH0+PjsgRCA8dHlwZSA2PjsgfT4KIGZ1bmMgKHByaXYgPHR5cGUgNjEgKjx0eXBlIDU3Pj4pIFB1YmxpYyAoKSA8dHlwZSA2MiAiY3J5cHRvLlB1YmxpY0tleSIgPHR5cGUgNjMgaW50ZXJmYWNlIHsgfT4+OwogZnVuYyAocHJpdiA8dHlwZSA2MT4pIFNpZ24gKHJhbmQgPHR5cGUgNTM+LCBtc2cgPHR5cGUgNjQgW10gPHR5cGUgLTIwPj4sIG9wdHMgPHR5cGUgNjUgImNyeXB0by5TaWduZXJPcHRzIiA8dHlwZSA2NiBpbnRlcmZhY2UgeyBIYXNoRnVuYyAoKSA8dHlwZSA2NyAiY3J5cHRvLkhhc2giIDx0eXBlIC0xMj4KIGZ1bmMgKGggPHR5cGUgNjc+KSBIYXNoRnVuYyAoKSA8dHlwZSA2Nz47CiBmdW5jIChoIDx0eXBlIDY3PikgQXZhaWxhYmxlICgpIDx0eXBlIC0xNT47CiBmdW5jIChoIDx0eXBlIDY3PikgTmV3ICgpIDx0eXBlIDY4ICJoYXNoLkhhc2giICJoYXNoIiA8dHlwZSA2OSBpbnRlcmZhY2UgeyA/IDx0eXBlIDcwICJpby5Xcml0ZXIiIDx0eXBlIDcxIGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDcyIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgU3VtIChiIDx0eXBlIDczIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA3NCBbXSA8dHlwZSAtMjA+PjsgUmVzZXQgKCk7IFNpemUgKCkgPHR5cGUgLTExPjsgQmxvY2tTaXplICgpIDx0eXBlIC0xMT47IH0+PjsKIGZ1bmMgKGggPHR5cGUgNjc+KSBTaXplICgpIDx0eXBlIC0xMT47Cj47IH0+PikgKD8gPHR5cGUgNzUgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7Cj4+LCBlcnIgPHR5cGUgLTE5Pik7CnR5cGUgPHR5cGUgNTc+Owp0eXBlIDx0eXBlIDU5PjsKZnVuYyBTaWduIChyYW5kIDx0eXBlIDUzPiwgcHJpdiA8dHlwZSA1Nj4sIGhhc2ggPHR5cGUgNzYgW10gPHR5cGUgLTIwPj4pIChyIDx0eXBlIDY+LCBzIDx0eXBlIDY+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgVmVyaWZ5IChwdWIgPHR5cGUgNzcgKjx0eXBlIDU5Pj4sIGhhc2ggPHR5cGUgNzggW10gPHR5cGUgLTIwPj4sIHIgPHR5cGUgNj4sIHMgPHR5cGUgNj4pIDx0eXBlIC0xNT47CmNoZWNrc3VtIDRFNTRDQUM5Rjk0RUVERTAwNTcyOUVFRDU4MURDQzYxMUREMDA1QUE7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAOUsAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAABktAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAABALQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAYC0AAAEAAAAAAAAAAAAAAAEAAAAAAAAA