f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADcFQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGdvc3ltOwpwa2dwYXRoIGRlYnVnL2dvc3ltOwpwcmlvcml0eSA3OwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGJpbmFyeSBlbmNvZGluZy9iaW5hcnkgImVuY29kaW5nL2JpbmFyeSI7CmltcG9ydCBmbXQgZm10ICJmbXQiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmltcG9ydCBzeW5jIHN5bmMgInN5bmMiOwppbml0IGdvc3ltIGRlYnVnX2dvc3ltLi5pbXBvcnQgNyBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCBieXRlcyBieXRlcy4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBvcyBvcy4uaW1wb3J0IDUgZm10IGZtdC4uaW1wb3J0IDY7CnR5cGUgPHR5cGUgMSAiRGVjb2RpbmdFcnJvciIgPHR5cGUgMiBzdHJ1Y3QgeyAuZGVidWcvZ29zeW0ub2ZmIDx0eXBlIC0xMT47IC5kZWJ1Zy9nb3N5bS5tc2cgPHR5cGUgLTE2PjsgLmRlYnVnL2dvc3ltLnZhbCA8dHlwZSAzIGludGVyZmFjZSB7IH0+OyB9PgogZnVuYyAoZSA8dHlwZSA0ICo8dHlwZSAxPj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgNSAiRnVuYyIgPHR5cGUgNiBzdHJ1Y3QgeyBFbnRyeSA8dHlwZSAtOD47ID8gPHR5cGUgNyAqPHR5cGUgOCAiU3ltIiA8dHlwZSA5IHN0cnVjdCB7IFZhbHVlIDx0eXBlIC04PjsgVHlwZSA8dHlwZSAtMjA+OyBOYW1lIDx0eXBlIC0xNj47IEdvVHlwZSA8dHlwZSAtOD47IEZ1bmMgPHR5cGUgMTAgKjx0eXBlIDU+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMTEgKjx0eXBlIDg+PikgU3RhdGljICgpIDx0eXBlIC0xNT47CiBmdW5jIChzIDx0eXBlIDExPikgUGFja2FnZU5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHMgPHR5cGUgMTE+KSBSZWNlaXZlck5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHMgPHR5cGUgMTE+KSBCYXNlTmFtZSAoKSA8dHlwZSAtMTY+Owo+PjsgRW5kIDx0eXBlIC04PjsgUGFyYW1zIDx0eXBlIDEyIFtdIDx0eXBlIDc+PjsgTG9jYWxzIDx0eXBlIDEzIFtdIDx0eXBlIDc+PjsgRnJhbWVTaXplIDx0eXBlIC0xMT47IExpbmVUYWJsZSA8dHlwZSAxNCAqPHR5cGUgMTUgIkxpbmVUYWJsZSIgPHR5cGUgMTYgc3RydWN0IHsgRGF0YSA8dHlwZSAxNyBbXSA8dHlwZSAtMjA+PjsgUEMgPHR5cGUgLTg+OyBMaW5lIDx0eXBlIC0xMT47IC5kZWJ1Zy9nb3N5bS5tdSA8dHlwZSAxOCAic3luYy5NdXRleCIgPHR5cGUgMTkgc3RydWN0IHsgLnN5bmMuc3RhdGUgPHR5cGUgLTM+OyAuc3luYy5zZW1hIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG0gPHR5cGUgMjAgKjx0eXBlIDE4Pj4pIFVubG9jayAoKTsKIGZ1bmMgKG0gPHR5cGUgMjA+KSBMb2NrICgpOwo+OyAuZGVidWcvZ29zeW0uZ28xMiA8dHlwZSAtMTE+OyAuZGVidWcvZ29zeW0uYmluYXJ5IDx0eXBlIDIxICJlbmNvZGluZy9iaW5hcnkuQnl0ZU9yZGVyIiA8dHlwZSAyMiBpbnRlcmZhY2UgeyBVaW50MTYgKD8gPHR5cGUgMjMgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC02PjsgVWludDMyICg/IDx0eXBlIDI0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtNz47IFVpbnQ2NCAoPyA8dHlwZSAyNSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTg+OyBQdXRVaW50MTYgKD8gPHR5cGUgMjYgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTY+KTsgUHV0VWludDMyICg/IDx0eXBlIDI3IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC03Pik7IFB1dFVpbnQ2NCAoPyA8dHlwZSAyOCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtOD4pOyBTdHJpbmcgKCkgPHR5cGUgLTE2PjsgfT4+OyAuZGVidWcvZ29zeW0ucXVhbnR1bSA8dHlwZSAtNz47IC5kZWJ1Zy9nb3N5bS5wdHJzaXplIDx0eXBlIC03PjsgLmRlYnVnL2dvc3ltLmZ1bmN0YWIgPHR5cGUgMjkgW10gPHR5cGUgLTIwPj47IC5kZWJ1Zy9nb3N5bS5uZnVuY3RhYiA8dHlwZSAtNz47IC5kZWJ1Zy9nb3N5bS5maWxldGFiIDx0eXBlIDMwIFtdIDx0eXBlIC0yMD4+OyAuZGVidWcvZ29zeW0ubmZpbGV0YWIgPHR5cGUgLTc+OyAuZGVidWcvZ29zeW0uZmlsZU1hcCA8dHlwZSAzMSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC03Pj47IH0+CiBmdW5jICh0IDx0eXBlIDMyICo8dHlwZSAxNT4+KSAuZGVidWcvZ29zeW0ucGFyc2UgKHRhcmdldFBDIDx0eXBlIC04PiwgdGFyZ2V0TGluZSA8dHlwZSAtMTE+KSAoYiA8dHlwZSAzMyBbXSA8dHlwZSAtMjA+PiwgcGMgPHR5cGUgLTg+LCBsaW5lIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAzMj4pIC5kZWJ1Zy9nb3N5bS5zbGljZSAocGMgPHR5cGUgLTg+KSA8dHlwZSAzMj47CiBmdW5jICh0IDx0eXBlIDMyPikgUENUb0xpbmUgKHBjIDx0eXBlIC04PikgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMzI+KSBMaW5lVG9QQyAobGluZSA8dHlwZSAtMTE+LCBtYXhwYyA8dHlwZSAtOD4pIDx0eXBlIC04PjsKIGZ1bmMgKHQgPHR5cGUgMzI+KSAuZGVidWcvZ29zeW0uaXNHbzEyICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDMyPikgLmRlYnVnL2dvc3ltLnVpbnRwdHIgKGIgPHR5cGUgMzQgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC04PjsKIGZ1bmMgKHQgPHR5cGUgMzI+KSAuZGVidWcvZ29zeW0uZ28xMkluaXQgKCk7CiBmdW5jICh0IDx0eXBlIDMyPikgLmRlYnVnL2dvc3ltLmdvMTJGdW5jcyAoKSA8dHlwZSAzNSBbXSA8dHlwZSA1Pj47CiBmdW5jICh0IDx0eXBlIDMyPikgLmRlYnVnL2dvc3ltLmZpbmRGdW5jIChwYyA8dHlwZSAtOD4pIDx0eXBlIDM2IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAodCA8dHlwZSAzMj4pIC5kZWJ1Zy9nb3N5bS5yZWFkdmFyaW50IChwcCA8dHlwZSAzNyAqPHR5cGUgMzggW10gPHR5cGUgLTIwPj4+KSA8dHlwZSAtNz47CiBmdW5jICh0IDx0eXBlIDMyPikgLmRlYnVnL2dvc3ltLnN0cmluZyAob2ZmIDx0eXBlIC03PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMzI+KSAuZGVidWcvZ29zeW0uc3RlcCAocCA8dHlwZSAzOSAqPHR5cGUgNDAgW10gPHR5cGUgLTIwPj4+LCBwYyA8dHlwZSA0MSAqPHR5cGUgLTg+PiwgdmFsIDx0eXBlIDQyICo8dHlwZSAtMz4+LCBmaXJzdCA8dHlwZSAtMTU+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAzMj4pIC5kZWJ1Zy9nb3N5bS5wY3ZhbHVlIChvZmYgPHR5cGUgLTc+LCBlbnRyeSA8dHlwZSAtOD4sIHRhcmdldHBjIDx0eXBlIC04PikgPHR5cGUgLTM+OwogZnVuYyAodCA8dHlwZSAzMj4pIC5kZWJ1Zy9nb3N5bS5maW5kRmlsZUxpbmUgKGVudHJ5IDx0eXBlIC04PiwgZmlsZXRhYiA8dHlwZSAtNz4sIGxpbmV0YWIgPHR5cGUgLTc+LCBmaWxlbnVtIDx0eXBlIC0zPiwgbGluZSA8dHlwZSAtMz4pIDx0eXBlIC04PjsKIGZ1bmMgKHQgPHR5cGUgMzI+KSAuZGVidWcvZ29zeW0uZ28xMlBDVG9MaW5lIChwYyA8dHlwZSAtOD4pIChsaW5lIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAzMj4pIC5kZWJ1Zy9nb3N5bS5nbzEyUENUb0ZpbGUgKHBjIDx0eXBlIC04PikgKGZpbGUgPHR5cGUgLTE2Pik7CiBmdW5jICh0IDx0eXBlIDMyPikgLmRlYnVnL2dvc3ltLmdvMTJMaW5lVG9QQyAoZmlsZSA8dHlwZSAtMTY+LCBsaW5lIDx0eXBlIC0xMT4pIChwYyA8dHlwZSAtOD4pOwogZnVuYyAodCA8dHlwZSAzMj4pIC5kZWJ1Zy9nb3N5bS5pbml0RmlsZU1hcCAoKTsKIGZ1bmMgKHQgPHR5cGUgMzI+KSAuZGVidWcvZ29zeW0uZ28xMk1hcEZpbGVzIChtIDx0eXBlIDQzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgNDQgKjx0eXBlIDQ1ICJPYmoiIDx0eXBlIDQ2IHN0cnVjdCB7IEZ1bmNzIDx0eXBlIDQ3IFtdIDx0eXBlIDU+PjsgUGF0aHMgPHR5cGUgNDggW10gPHR5cGUgOD4+OyB9PgogZnVuYyAobyA8dHlwZSA0OSAqPHR5cGUgNDU+PikgLmRlYnVnL2dvc3ltLmxpbmVGcm9tQWxpbmUgKGFsaW5lIDx0eXBlIC0xMT4pICg/IDx0eXBlIC0xNj4sID8gPHR5cGUgLTExPik7CiBmdW5jIChvIDx0eXBlIDQ5PikgLmRlYnVnL2dvc3ltLmFsaW5lRnJvbUxpbmUgKHBhdGggPHR5cGUgLTE2PiwgbGluZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwo+Pj4sIG9iaiA8dHlwZSA1MCAqPHR5cGUgNDU+Pik7Cj4+OyBPYmogPHR5cGUgNTEgKjx0eXBlIDQ1Pj47IH0+PjsKdHlwZSA8dHlwZSAxNT47CmZ1bmMgTmV3TGluZVRhYmxlIChkYXRhIDx0eXBlIDUyIFtdIDx0eXBlIC0yMD4+LCB0ZXh0IDx0eXBlIC04PikgPHR5cGUgMTQ+OwpmdW5jIE5ld1RhYmxlIChzeW10YWIgPHR5cGUgNTMgW10gPHR5cGUgLTIwPj4sIHBjbG4gPHR5cGUgMTQ+KSAoPyA8dHlwZSA1NCAqPHR5cGUgNTUgIlRhYmxlIiA8dHlwZSA1NiBzdHJ1Y3QgeyBTeW1zIDx0eXBlIDU3IFtdIDx0eXBlIDg+PjsgRnVuY3MgPHR5cGUgNTggW10gPHR5cGUgNT4+OyBGaWxlcyA8dHlwZSA1OSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDQ5Pj47IE9ianMgPHR5cGUgNjAgW10gPHR5cGUgNDU+PjsgLmRlYnVnL2dvc3ltLmdvMTJsaW5lIDx0eXBlIDE0PjsgfT4KIGZ1bmMgKHQgPHR5cGUgNjEgKjx0eXBlIDU1Pj4pIFBDVG9GdW5jIChwYyA8dHlwZSAtOD4pIDx0eXBlIDYyICo8dHlwZSA1Pj47CiBmdW5jICh0IDx0eXBlIDYxPikgUENUb0xpbmUgKHBjIDx0eXBlIC04PikgKGZpbGUgPHR5cGUgLTE2PiwgbGluZSA8dHlwZSAtMTE+LCBmbiA8dHlwZSA2Mj4pOwogZnVuYyAodCA8dHlwZSA2MT4pIExpbmVUb1BDIChmaWxlIDx0eXBlIC0xNj4sIGxpbmUgPHR5cGUgLTExPikgKHBjIDx0eXBlIC04PiwgZm4gPHR5cGUgNjI+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDYxPikgTG9va3VwU3ltIChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDc+OwogZnVuYyAodCA8dHlwZSA2MT4pIExvb2t1cEZ1bmMgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgNjI+OwogZnVuYyAodCA8dHlwZSA2MT4pIFN5bUJ5QWRkciAoYWRkciA8dHlwZSAtOD4pIDx0eXBlIDc+Owo+PiwgPyA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSA0NT47CnR5cGUgPHR5cGUgOD47CnR5cGUgPHR5cGUgNTU+Owp0eXBlIDx0eXBlIDYzICJVbmtub3duRmlsZUVycm9yIiA8dHlwZSAtMTY+CiBmdW5jIChlIDx0eXBlIDYzPikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSA2NCAiVW5rbm93bkxpbmVFcnJvciIgPHR5cGUgNjUgc3RydWN0IHsgRmlsZSA8dHlwZSAtMTY+OyBMaW5lIDx0eXBlIC0xMT47IH0+CiBmdW5jIChlIDx0eXBlIDY2ICo8dHlwZSA2ND4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+OwpjaGVja3N1bSBDN0JGRUNEMTdCQTE1RkJCQkZDRDA1N0JGNTk1OEY4RDA0NUQ0MUUxOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAF4VAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAJIVAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAC4FQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAA2BUAAAEAAAAAAAAAAAAAAAEAAAAAAAAA