f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAB8HAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGZsYXRlOwpwa2dwYXRoIGNvbXByZXNzL2ZsYXRlOwpwcmlvcml0eSA3OwppbXBvcnQgYnVmaW8gYnVmaW8gImJ1ZmlvIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgbWF0aCBtYXRoICJtYXRoIjsKaW1wb3J0IHNvcnQgc29ydCAic29ydCI7CmltcG9ydCBzdHJjb252IHN0cmNvbnYgInN0cmNvbnYiOwppbml0IGZsYXRlIGNvbXByZXNzX2ZsYXRlLi5pbXBvcnQgNyBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBieXRlcyBieXRlcy4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBidWZpbyBidWZpby4uaW1wb3J0IDUgb3Mgb3MuLmltcG9ydCA1IGZtdCBmbXQuLmltcG9ydCA2Owpjb25zdCBCZXN0Q29tcHJlc3Npb24gPSA5IDsKY29uc3QgQmVzdFNwZWVkID0gMSA7CnR5cGUgPHR5cGUgMSAiQ29ycnVwdElucHV0RXJyb3IiIDx0eXBlIC00PgogZnVuYyAoZSA8dHlwZSAxPikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKY29uc3QgRGVmYXVsdENvbXByZXNzaW9uID0gLTEgOwp0eXBlIDx0eXBlIDIgIkludGVybmFsRXJyb3IiIDx0eXBlIC0xNj4KIGZ1bmMgKGUgPHR5cGUgMj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CmZ1bmMgTmV3UmVhZGVyIChyIDx0eXBlIDMgImlvLlJlYWRlciIgPHR5cGUgNCBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSA8dHlwZSA2ICJpby5SZWFkQ2xvc2VyIiA8dHlwZSA3IGludGVyZmFjZSB7ID8gPHR5cGUgMz47ID8gPHR5cGUgOCAiaW8uQ2xvc2VyIiA8dHlwZSA5IGludGVyZmFjZSB7IENsb3NlICgpIDx0eXBlIC0xOT47IH0+PjsgfT4+OwpmdW5jIE5ld1JlYWRlckRpY3QgKHIgPHR5cGUgMz4sIGRpY3QgPHR5cGUgMTAgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDY+OwpmdW5jIE5ld1dyaXRlciAodyA8dHlwZSAxMSAiaW8uV3JpdGVyIiA8dHlwZSAxMiBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAxMyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIGxldmVsIDx0eXBlIC0xMT4pICg/IDx0eXBlIDE0ICo8dHlwZSAxNSAiV3JpdGVyIiA8dHlwZSAxNiBzdHJ1Y3QgeyAuY29tcHJlc3MvZmxhdGUuZCA8dHlwZSAxNyAiLmNvbXByZXNzL2ZsYXRlLmNvbXByZXNzb3IiIDx0eXBlIDE4IHN0cnVjdCB7ID8gPHR5cGUgMTkgIi5jb21wcmVzcy9mbGF0ZS5jb21wcmVzc2lvbkxldmVsIiA8dHlwZSAyMCBzdHJ1Y3QgeyAuY29tcHJlc3MvZmxhdGUuZ29vZCA8dHlwZSAtMTE+OyAuY29tcHJlc3MvZmxhdGUubGF6eSA8dHlwZSAtMTE+OyAuY29tcHJlc3MvZmxhdGUubmljZSA8dHlwZSAtMTE+OyAuY29tcHJlc3MvZmxhdGUuY2hhaW4gPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmZhc3RTa2lwSGFzaGluZyA8dHlwZSAtMTE+OyB9Pj47IC5jb21wcmVzcy9mbGF0ZS53IDx0eXBlIDIxICo8dHlwZSAyMiAiLmNvbXByZXNzL2ZsYXRlLmh1ZmZtYW5CaXRXcml0ZXIiIDx0eXBlIDIzIHN0cnVjdCB7IC5jb21wcmVzcy9mbGF0ZS53IDx0eXBlIDExPjsgLmNvbXByZXNzL2ZsYXRlLmJpdHMgPHR5cGUgLTc+OyAuY29tcHJlc3MvZmxhdGUubmJpdHMgPHR5cGUgLTc+OyAuY29tcHJlc3MvZmxhdGUuYnl0ZXMgPHR5cGUgMjQgWzY0IF0gPHR5cGUgLTIwPj47IC5jb21wcmVzcy9mbGF0ZS5uYnl0ZXMgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmxpdGVyYWxGcmVxIDx0eXBlIDI1IFtdIDx0eXBlIC0zPj47IC5jb21wcmVzcy9mbGF0ZS5vZmZzZXRGcmVxIDx0eXBlIDI2IFtdIDx0eXBlIC0zPj47IC5jb21wcmVzcy9mbGF0ZS5jb2RlZ2VuIDx0eXBlIDI3IFtdIDx0eXBlIC01Pj47IC5jb21wcmVzcy9mbGF0ZS5jb2RlZ2VuRnJlcSA8dHlwZSAyOCBbXSA8dHlwZSAtMz4+OyAuY29tcHJlc3MvZmxhdGUubGl0ZXJhbEVuY29kaW5nIDx0eXBlIDI5ICo8dHlwZSAzMCAiLmNvbXByZXNzL2ZsYXRlLmh1ZmZtYW5FbmNvZGVyIiA8dHlwZSAzMSBzdHJ1Y3QgeyAuY29tcHJlc3MvZmxhdGUuY29kZUJpdHMgPHR5cGUgMzIgW10gPHR5cGUgLTU+PjsgLmNvbXByZXNzL2ZsYXRlLmNvZGUgPHR5cGUgMzMgW10gPHR5cGUgLTY+PjsgfT4KIGZ1bmMgKGggPHR5cGUgMzQgKjx0eXBlIDMwPj4pIC5jb21wcmVzcy9mbGF0ZS5iaXRMZW5ndGggKGZyZXEgPHR5cGUgMzUgW10gPHR5cGUgLTM+PikgPHR5cGUgLTQ+OwogZnVuYyAoaCA8dHlwZSAzND4pIC5jb21wcmVzcy9mbGF0ZS5iaXRDb3VudHMgKGxpc3QgPHR5cGUgMzYgW10gPHR5cGUgMzcgIi5jb21wcmVzcy9mbGF0ZS5saXRlcmFsTm9kZSIgPHR5cGUgMzggc3RydWN0IHsgLmNvbXByZXNzL2ZsYXRlLmxpdGVyYWwgPHR5cGUgLTY+OyAuY29tcHJlc3MvZmxhdGUuZnJlcSA8dHlwZSAtMz47IH0+Pj4sIG1heEJpdHMgPHR5cGUgLTM+KSA8dHlwZSAzOSBbXSA8dHlwZSAtMz4+OwogZnVuYyAoaCA8dHlwZSAzND4pIC5jb21wcmVzcy9mbGF0ZS5hc3NpZ25FbmNvZGluZ0FuZFNpemUgKGJpdENvdW50IDx0eXBlIDQwIFtdIDx0eXBlIC0zPj4sIGxpc3QgPHR5cGUgNDEgW10gPHR5cGUgMzc+Pik7CiBmdW5jIChoIDx0eXBlIDM0PikgLmNvbXByZXNzL2ZsYXRlLmdlbmVyYXRlIChmcmVxIDx0eXBlIDQyIFtdIDx0eXBlIC0zPj4sIG1heEJpdHMgPHR5cGUgLTM+KTsKPj47IC5jb21wcmVzcy9mbGF0ZS5vZmZzZXRFbmNvZGluZyA8dHlwZSA0MyAqPHR5cGUgMzA+PjsgLmNvbXByZXNzL2ZsYXRlLmNvZGVnZW5FbmNvZGluZyA8dHlwZSA0NCAqPHR5cGUgMzA+PjsgLmNvbXByZXNzL2ZsYXRlLmVyciA8dHlwZSAtMTk+OyB9PgogZnVuYyAodyA8dHlwZSA0NSAqPHR5cGUgMjI+PikgLmNvbXByZXNzL2ZsYXRlLnJlc2V0ICh3cml0ZXIgPHR5cGUgMTE+KTsKIGZ1bmMgKHcgPHR5cGUgNDU+KSAuY29tcHJlc3MvZmxhdGUuZmx1c2hCaXRzICgpOwogZnVuYyAodyA8dHlwZSA0NT4pIC5jb21wcmVzcy9mbGF0ZS5mbHVzaCAoKTsKIGZ1bmMgKHcgPHR5cGUgNDU+KSAuY29tcHJlc3MvZmxhdGUud3JpdGVCaXRzIChiIDx0eXBlIC0zPiwgbmIgPHR5cGUgLTM+KTsKIGZ1bmMgKHcgPHR5cGUgNDU+KSAuY29tcHJlc3MvZmxhdGUud3JpdGVCeXRlcyAoYnl0ZXMgPHR5cGUgNDYgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodyA8dHlwZSA0NT4pIC5jb21wcmVzcy9mbGF0ZS5nZW5lcmF0ZUNvZGVnZW4gKG51bUxpdGVyYWxzIDx0eXBlIC0xMT4sIG51bU9mZnNldHMgPHR5cGUgLTExPik7CiBmdW5jICh3IDx0eXBlIDQ1PikgLmNvbXByZXNzL2ZsYXRlLndyaXRlQ29kZSAoY29kZSA8dHlwZSA0NyAqPHR5cGUgMzA+PiwgbGl0ZXJhbCA8dHlwZSAtNz4pOwogZnVuYyAodyA8dHlwZSA0NT4pIC5jb21wcmVzcy9mbGF0ZS53cml0ZUR5bmFtaWNIZWFkZXIgKG51bUxpdGVyYWxzIDx0eXBlIC0xMT4sIG51bU9mZnNldHMgPHR5cGUgLTExPiwgbnVtQ29kZWdlbnMgPHR5cGUgLTExPiwgaXNFb2YgPHR5cGUgLTE1Pik7CiBmdW5jICh3IDx0eXBlIDQ1PikgLmNvbXByZXNzL2ZsYXRlLndyaXRlU3RvcmVkSGVhZGVyIChsZW5ndGggPHR5cGUgLTExPiwgaXNFb2YgPHR5cGUgLTE1Pik7CiBmdW5jICh3IDx0eXBlIDQ1PikgLmNvbXByZXNzL2ZsYXRlLndyaXRlRml4ZWRIZWFkZXIgKGlzRW9mIDx0eXBlIC0xNT4pOwogZnVuYyAodyA8dHlwZSA0NT4pIC5jb21wcmVzcy9mbGF0ZS53cml0ZUJsb2NrICh0b2tlbnMgPHR5cGUgNDggW10gPHR5cGUgNDkgIi5jb21wcmVzcy9mbGF0ZS50b2tlbiIgPHR5cGUgLTc+CiBmdW5jICh0IDx0eXBlIDQ5PikgLmNvbXByZXNzL2ZsYXRlLnR5cCAoKSA8dHlwZSAtNz47CiBmdW5jICh0IDx0eXBlIDQ5PikgLmNvbXByZXNzL2ZsYXRlLmxpdGVyYWwgKCkgPHR5cGUgLTc+OwogZnVuYyAodCA8dHlwZSA0OT4pIC5jb21wcmVzcy9mbGF0ZS5vZmZzZXQgKCkgPHR5cGUgLTc+OwogZnVuYyAodCA8dHlwZSA0OT4pIC5jb21wcmVzcy9mbGF0ZS5sZW5ndGggKCkgPHR5cGUgLTc+Owo+PiwgZW9mIDx0eXBlIC0xNT4sIGlucHV0IDx0eXBlIDUwIFtdIDx0eXBlIC0yMD4+KTsKPj47IC5jb21wcmVzcy9mbGF0ZS5maWxsIDx0eXBlIDUxICg/IDx0eXBlIDUyICo8dHlwZSAxNz4+LCA/IDx0eXBlIDUzIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTE+PjsgLmNvbXByZXNzL2ZsYXRlLnN0ZXAgPHR5cGUgNTQgKD8gPHR5cGUgNTUgKjx0eXBlIDE3Pj4pPjsgLmNvbXByZXNzL2ZsYXRlLnN5bmMgPHR5cGUgLTE1PjsgLmNvbXByZXNzL2ZsYXRlLmNoYWluSGVhZCA8dHlwZSAtMTE+OyAuY29tcHJlc3MvZmxhdGUuaGFzaEhlYWQgPHR5cGUgNTYgW10gPHR5cGUgLTExPj47IC5jb21wcmVzcy9mbGF0ZS5oYXNoUHJldiA8dHlwZSA1NyBbXSA8dHlwZSAtMTE+PjsgLmNvbXByZXNzL2ZsYXRlLmhhc2hPZmZzZXQgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmluZGV4IDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS53aW5kb3cgPHR5cGUgNTggW10gPHR5cGUgLTIwPj47IC5jb21wcmVzcy9mbGF0ZS53aW5kb3dFbmQgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmJsb2NrU3RhcnQgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmJ5dGVBdmFpbGFibGUgPHR5cGUgLTE1PjsgLmNvbXByZXNzL2ZsYXRlLnRva2VucyA8dHlwZSA1OSBbXSA8dHlwZSA0OT4+OyAuY29tcHJlc3MvZmxhdGUubGVuZ3RoIDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS5vZmZzZXQgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmhhc2ggPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLm1heEluc2VydEluZGV4IDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS5lcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGQgPHR5cGUgNjAgKjx0eXBlIDE3Pj4pIC5jb21wcmVzcy9mbGF0ZS5maWxsRGVmbGF0ZSAoYiA8dHlwZSA2MSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTExPjsKIGZ1bmMgKGQgPHR5cGUgNjA+KSAuY29tcHJlc3MvZmxhdGUud3JpdGVCbG9jayAodG9rZW5zIDx0eXBlIDYyIFtdIDx0eXBlIDQ5Pj4sIGluZGV4IDx0eXBlIC0xMT4sIGVvZiA8dHlwZSAtMTU+KSA8dHlwZSAtMTk+OwogZnVuYyAoZCA8dHlwZSA2MD4pIC5jb21wcmVzcy9mbGF0ZS5maW5kTWF0Y2ggKHBvcyA8dHlwZSAtMTE+LCBwcmV2SGVhZCA8dHlwZSAtMTE+LCBwcmV2TGVuZ3RoIDx0eXBlIC0xMT4sIGxvb2thaGVhZCA8dHlwZSAtMTE+KSAobGVuZ3RoIDx0eXBlIC0xMT4sIG9mZnNldCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKGQgPHR5cGUgNjA+KSAuY29tcHJlc3MvZmxhdGUud3JpdGVTdG9yZWRCbG9jayAoYnVmIDx0eXBlIDYzIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoZCA8dHlwZSA2MD4pIC5jb21wcmVzcy9mbGF0ZS5pbml0RGVmbGF0ZSAoKTsKIGZ1bmMgKGQgPHR5cGUgNjA+KSAuY29tcHJlc3MvZmxhdGUuZGVmbGF0ZSAoKTsKIGZ1bmMgKGQgPHR5cGUgNjA+KSAuY29tcHJlc3MvZmxhdGUuZmlsbFN0b3JlIChiIDx0eXBlIDY0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTE+OwogZnVuYyAoZCA8dHlwZSA2MD4pIC5jb21wcmVzcy9mbGF0ZS5zdG9yZSAoKTsKIGZ1bmMgKGQgPHR5cGUgNjA+KSAuY29tcHJlc3MvZmxhdGUud3JpdGUgKGIgPHR5cGUgNjUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGQgPHR5cGUgNjA+KSAuY29tcHJlc3MvZmxhdGUuc3luY0ZsdXNoICgpIDx0eXBlIC0xOT47CiBmdW5jIChkIDx0eXBlIDYwPikgLmNvbXByZXNzL2ZsYXRlLmluaXQgKHcgPHR5cGUgMTE+LCBsZXZlbCA8dHlwZSAtMTE+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSA2MD4pIC5jb21wcmVzcy9mbGF0ZS5yZXNldCAodyA8dHlwZSAxMT4pOwogZnVuYyAoZCA8dHlwZSA2MD4pIC5jb21wcmVzcy9mbGF0ZS5jbG9zZSAoKSA8dHlwZSAtMTk+Owo+OyAuY29tcHJlc3MvZmxhdGUuZGljdCA8dHlwZSA2NiBbXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKHcgPHR5cGUgNjcgKjx0eXBlIDE1Pj4pIFdyaXRlIChkYXRhIDx0eXBlIDY4IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh3IDx0eXBlIDY3PikgRmx1c2ggKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHcgPHR5cGUgNjc+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAodyA8dHlwZSA2Nz4pIFJlc2V0IChkc3QgPHR5cGUgMTE+KTsKPj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgTmV3V3JpdGVyRGljdCAodyA8dHlwZSAxMT4sIGxldmVsIDx0eXBlIC0xMT4sIGRpY3QgPHR5cGUgNjkgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIDcwICo8dHlwZSAxNT4+LCA/IDx0eXBlIC0xOT4pOwpjb25zdCBOb0NvbXByZXNzaW9uID0gMCA7CnR5cGUgPHR5cGUgNzEgIlJlYWRFcnJvciIgPHR5cGUgNzIgc3RydWN0IHsgT2Zmc2V0IDx0eXBlIC00PjsgRXJyIDx0eXBlIC0xOT47IH0+CiBmdW5jIChlIDx0eXBlIDczICo8dHlwZSA3MT4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+Owp0eXBlIDx0eXBlIDc0ICJSZWFkZXIiIDx0eXBlIDc1IGludGVyZmFjZSB7ID8gPHR5cGUgMz47ID8gPHR5cGUgNzYgImlvLkJ5dGVSZWFkZXIiIDx0eXBlIDc3IGludGVyZmFjZSB7IFJlYWRCeXRlICgpIChjIDx0eXBlIC0yMD4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyB9Pj47CnR5cGUgPHR5cGUgNzggIlJlc2V0dGVyIiA8dHlwZSA3OSBpbnRlcmZhY2UgeyBSZXNldCAociA8dHlwZSAzPiwgZGljdCA8dHlwZSA4MCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsgfT4+Owp0eXBlIDx0eXBlIDgxICJXcml0ZUVycm9yIiA8dHlwZSA4MiBzdHJ1Y3QgeyBPZmZzZXQgPHR5cGUgLTQ+OyBFcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGUgPHR5cGUgODMgKjx0eXBlIDgxPj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgMTU+OwpjaGVja3N1bSAxQjVDMDQ1MkQ0QjIzQTEyRDNEQzYyMjRBNTVGMjk5Q0VERDI5MUE3OwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAAD9GwAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAAxHAAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAWBwAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAHgcAAABAAAAAAAAAAAAAAABAAAAAAAAAA==