f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADQcwAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGFzdDsKcGtncGF0aCBnby9hc3Q7CnByaW9yaXR5IDk7CmltcG9ydCBieXRlcyBieXRlcyAiYnl0ZXMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IHNjYW5uZXIgZ28vc2Nhbm5lciAiZ28vc2Nhbm5lciI7CmltcG9ydCB0b2tlbiBnby90b2tlbiAiZ28vdG9rZW4iOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IG9zIG9zICJvcyI7CmltcG9ydCByZWZsZWN0IHJlZmxlY3QgInJlZmxlY3QiOwppbXBvcnQgc29ydCBzb3J0ICJzb3J0IjsKaW1wb3J0IHN0cmNvbnYgc3RyY29udiAic3RyY29udiI7CmltcG9ydCBzdHJpbmdzIHN0cmluZ3MgInN0cmluZ3MiOwppbXBvcnQgdW5pY29kZSB1bmljb2RlICJ1bmljb2RlIjsKaW1wb3J0IHV0ZjggdW5pY29kZS91dGY4ICJ1bmljb2RlL3V0ZjgiOwppbml0IGFzdCBnb19hc3QuLmltcG9ydCA5IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IG9zIG9zLi5pbXBvcnQgNSBmaWxlcGF0aCBwYXRoX2ZpbGVwYXRoLi5pbXBvcnQgNiBmbXQgZm10Li5pbXBvcnQgNiB0b2tlbiBnb190b2tlbi4uaW1wb3J0IDcgc2Nhbm5lciBnb19zY2FubmVyLi5pbXBvcnQgODsKdHlwZSA8dHlwZSAxICJBcnJheVR5cGUiIDx0eXBlIDIgc3RydWN0IHsgTGJyYWNrIDx0eXBlIDMgImdvL3Rva2VuLlBvcyIgPHR5cGUgLTExPgogZnVuYyAocCA8dHlwZSAzPikgSXNWYWxpZCAoKSA8dHlwZSAtMTU+Owo+OyBMZW4gPHR5cGUgNCAiRXhwciIgPHR5cGUgNSBpbnRlcmZhY2UgeyA/IDx0eXBlIDYgIk5vZGUiIDx0eXBlIDcgaW50ZXJmYWNlIHsgUG9zICgpIDx0eXBlIDM+OyBFbmQgKCkgPHR5cGUgMz47IH0+PjsgLmdvL2FzdC5leHByTm9kZSAoKTsgfT4+OyBFbHQgPHR5cGUgND47IH0+CiBmdW5jICh4IDx0eXBlIDggKjx0eXBlIDE+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSA4PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSA4PikgLmdvL2FzdC5leHByTm9kZSAoKTsKPjsKdHlwZSA8dHlwZSA5ICJBc3NpZ25TdG10IiA8dHlwZSAxMCBzdHJ1Y3QgeyBMaHMgPHR5cGUgMTEgW10gPHR5cGUgND4+OyBUb2tQb3MgPHR5cGUgMz47IFRvayA8dHlwZSAxMiAiZ28vdG9rZW4uVG9rZW4iIDx0eXBlIC0xMT4KIGZ1bmMgKG9wIDx0eXBlIDEyPikgUHJlY2VkZW5jZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodG9rIDx0eXBlIDEyPikgSXNPcGVyYXRvciAoKSA8dHlwZSAtMTU+OwogZnVuYyAodG9rIDx0eXBlIDEyPikgSXNMaXRlcmFsICgpIDx0eXBlIC0xNT47CiBmdW5jICh0b2sgPHR5cGUgMTI+KSBJc0tleXdvcmQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHRvayA8dHlwZSAxMj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBSaHMgPHR5cGUgMTMgW10gPHR5cGUgND4+OyB9PgogZnVuYyAocyA8dHlwZSAxNCAqPHR5cGUgOT4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jIChzIDx0eXBlIDE0PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAxND4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CmNvbnN0IEJhZCA8dHlwZSAxNSAiT2JqS2luZCIgPHR5cGUgLTExPgogZnVuYyAoa2luZCA8dHlwZSAxNT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+ID0gMCA7CnR5cGUgPHR5cGUgMTYgIkJhZERlY2wiIDx0eXBlIDE3IHN0cnVjdCB7IEZyb20gPHR5cGUgMz47IFRvIDx0eXBlIDM+OyB9PgogZnVuYyAoZCA8dHlwZSAxOCAqPHR5cGUgMTY+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoZCA8dHlwZSAxOD4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMTg+KSAuZ28vYXN0LmRlY2xOb2RlICgpOwo+Owp0eXBlIDx0eXBlIDE5ICJCYWRFeHByIiA8dHlwZSAyMCBzdHJ1Y3QgeyBGcm9tIDx0eXBlIDM+OyBUbyA8dHlwZSAzPjsgfT4KIGZ1bmMgKHggPHR5cGUgMjEgKjx0eXBlIDE5Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHggPHR5cGUgMjE+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDIxPikgLmdvL2FzdC5leHByTm9kZSAoKTsKPjsKdHlwZSA8dHlwZSAyMiAiQmFkU3RtdCIgPHR5cGUgMjMgc3RydWN0IHsgRnJvbSA8dHlwZSAzPjsgVG8gPHR5cGUgMz47IH0+CiBmdW5jIChzIDx0eXBlIDI0ICo8dHlwZSAyMj4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jIChzIDx0eXBlIDI0PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAyND4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMjUgIkJhc2ljTGl0IiA8dHlwZSAyNiBzdHJ1Y3QgeyBWYWx1ZVBvcyA8dHlwZSAzPjsgS2luZCA8dHlwZSAxMj47IFZhbHVlIDx0eXBlIC0xNj47IH0+CiBmdW5jICh4IDx0eXBlIDI3ICo8dHlwZSAyNT4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDI3PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAyNz4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMjggIkJpbmFyeUV4cHIiIDx0eXBlIDI5IHN0cnVjdCB7IFggPHR5cGUgND47IE9wUG9zIDx0eXBlIDM+OyBPcCA8dHlwZSAxMj47IFkgPHR5cGUgND47IH0+CiBmdW5jICh4IDx0eXBlIDMwICo8dHlwZSAyOD4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDMwPikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAzMD4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMzEgIkJsb2NrU3RtdCIgPHR5cGUgMzIgc3RydWN0IHsgTGJyYWNlIDx0eXBlIDM+OyBMaXN0IDx0eXBlIDMzIFtdIDx0eXBlIDM0ICJTdG10IiA8dHlwZSAzNSBpbnRlcmZhY2UgeyA/IDx0eXBlIDY+OyAuZ28vYXN0LnN0bXROb2RlICgpOyB9Pj4+OyBSYnJhY2UgPHR5cGUgMz47IH0+CiBmdW5jIChzIDx0eXBlIDM2ICo8dHlwZSAzMT4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jIChzIDx0eXBlIDM2PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAzNj4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMzcgIkJyYW5jaFN0bXQiIDx0eXBlIDM4IHN0cnVjdCB7IFRva1BvcyA8dHlwZSAzPjsgVG9rIDx0eXBlIDEyPjsgTGFiZWwgPHR5cGUgMzkgKjx0eXBlIDQwICJJZGVudCIgPHR5cGUgNDEgc3RydWN0IHsgTmFtZVBvcyA8dHlwZSAzPjsgTmFtZSA8dHlwZSAtMTY+OyBPYmogPHR5cGUgNDIgKjx0eXBlIDQzICJPYmplY3QiIDx0eXBlIDQ0IHN0cnVjdCB7IEtpbmQgPHR5cGUgMTU+OyBOYW1lIDx0eXBlIC0xNj47IERlY2wgPHR5cGUgNDUgaW50ZXJmYWNlIHsgfT47IERhdGEgPHR5cGUgNDYgaW50ZXJmYWNlIHsgfT47IFR5cGUgPHR5cGUgNDcgaW50ZXJmYWNlIHsgfT47IH0+CiBmdW5jIChvYmogPHR5cGUgNDggKjx0eXBlIDQzPj4pIFBvcyAoKSA8dHlwZSAzPjsKPj47IH0+CiBmdW5jICh4IDx0eXBlIDQ5ICo8dHlwZSA0MD4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDQ5PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSA0OT4pIC5nby9hc3QuZXhwck5vZGUgKCk7CiBmdW5jIChpZCA8dHlwZSA0OT4pIElzRXhwb3J0ZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlkIDx0eXBlIDQ5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+OyB9PgogZnVuYyAocyA8dHlwZSA1MCAqPHR5cGUgMzc+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAocyA8dHlwZSA1MD4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgNTA+KSAuZ28vYXN0LnN0bXROb2RlICgpOwo+Owp0eXBlIDx0eXBlIDUxICJDYWxsRXhwciIgPHR5cGUgNTIgc3RydWN0IHsgRnVuIDx0eXBlIDQ+OyBMcGFyZW4gPHR5cGUgMz47IEFyZ3MgPHR5cGUgNTMgW10gPHR5cGUgND4+OyBFbGxpcHNpcyA8dHlwZSAzPjsgUnBhcmVuIDx0eXBlIDM+OyB9PgogZnVuYyAoeCA8dHlwZSA1NCAqPHR5cGUgNTE+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSA1ND4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgNTQ+KSAuZ28vYXN0LmV4cHJOb2RlICgpOwo+Owp0eXBlIDx0eXBlIDU1ICJDYXNlQ2xhdXNlIiA8dHlwZSA1NiBzdHJ1Y3QgeyBDYXNlIDx0eXBlIDM+OyBMaXN0IDx0eXBlIDU3IFtdIDx0eXBlIDQ+PjsgQ29sb24gPHR5cGUgMz47IEJvZHkgPHR5cGUgNTggW10gPHR5cGUgMzQ+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgNTkgKjx0eXBlIDU1Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHMgPHR5cGUgNTk+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDU5PikgLmdvL2FzdC5zdG10Tm9kZSAoKTsKPjsKdHlwZSA8dHlwZSA2MCAiQ2hhbkRpciIgPHR5cGUgLTExPj47CnR5cGUgPHR5cGUgNjEgIkNoYW5UeXBlIiA8dHlwZSA2MiBzdHJ1Y3QgeyBCZWdpbiA8dHlwZSAzPjsgQXJyb3cgPHR5cGUgMz47IERpciA8dHlwZSA2MD47IFZhbHVlIDx0eXBlIDQ+OyB9PgogZnVuYyAoeCA8dHlwZSA2MyAqPHR5cGUgNjE+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSA2Mz4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgNjM+KSAuZ28vYXN0LmV4cHJOb2RlICgpOwo+Owp0eXBlIDx0eXBlIDY0ICJDb21tQ2xhdXNlIiA8dHlwZSA2NSBzdHJ1Y3QgeyBDYXNlIDx0eXBlIDM+OyBDb21tIDx0eXBlIDM0PjsgQ29sb24gPHR5cGUgMz47IEJvZHkgPHR5cGUgNjYgW10gPHR5cGUgMzQ+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgNjcgKjx0eXBlIDY0Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHMgPHR5cGUgNjc+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDY3PikgLmdvL2FzdC5zdG10Tm9kZSAoKTsKPjsKdHlwZSA8dHlwZSA2OCAiQ29tbWVudCIgPHR5cGUgNjkgc3RydWN0IHsgU2xhc2ggPHR5cGUgMz47IFRleHQgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGMgPHR5cGUgNzAgKjx0eXBlIDY4Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKGMgPHR5cGUgNzA+KSBFbmQgKCkgPHR5cGUgMz47Cj47CnR5cGUgPHR5cGUgNzEgIkNvbW1lbnRHcm91cCIgPHR5cGUgNzIgc3RydWN0IHsgTGlzdCA8dHlwZSA3MyBbXSA8dHlwZSA3MD4+OyB9PgogZnVuYyAoZyA8dHlwZSA3NCAqPHR5cGUgNzE+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoZyA8dHlwZSA3ND4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKGcgPHR5cGUgNzQ+KSBUZXh0ICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgNzUgIkNvbW1lbnRNYXAiIDx0eXBlIDc2IG1hcCBbPHR5cGUgNj5dIDx0eXBlIDc3IFtdIDx0eXBlIDc0Pj4+CiBmdW5jIChjbWFwIDx0eXBlIDc1PikgLmdvL2FzdC5hZGRDb21tZW50IChuIDx0eXBlIDY+LCBjIDx0eXBlIDc0Pik7CiBmdW5jIChjbWFwIDx0eXBlIDc1PikgVXBkYXRlIChvbGQgPHR5cGUgNj4sIG5ldyA8dHlwZSA2PikgPHR5cGUgNj47CiBmdW5jIChjbWFwIDx0eXBlIDc1PikgRmlsdGVyIChub2RlIDx0eXBlIDY+KSA8dHlwZSA3NT47CiBmdW5jIChjbWFwIDx0eXBlIDc1PikgQ29tbWVudHMgKCkgPHR5cGUgNzggW10gPHR5cGUgNzQ+PjsKIGZ1bmMgKGNtYXAgPHR5cGUgNzU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSA3OSAiQ29tcG9zaXRlTGl0IiA8dHlwZSA4MCBzdHJ1Y3QgeyBUeXBlIDx0eXBlIDQ+OyBMYnJhY2UgPHR5cGUgMz47IEVsdHMgPHR5cGUgODEgW10gPHR5cGUgND4+OyBSYnJhY2UgPHR5cGUgMz47IH0+CiBmdW5jICh4IDx0eXBlIDgyICo8dHlwZSA3OT4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDgyPikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSA4Mj4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj47CmNvbnN0IENvbiA8dHlwZSAxNT4gPSAyIDsKdHlwZSA8dHlwZSA4MyAiRGVjbCIgPHR5cGUgODQgaW50ZXJmYWNlIHsgPyA8dHlwZSA2PjsgLmdvL2FzdC5kZWNsTm9kZSAoKTsgfT4+Owp0eXBlIDx0eXBlIDg1ICJEZWNsU3RtdCIgPHR5cGUgODYgc3RydWN0IHsgRGVjbCA8dHlwZSA4Mz47IH0+CiBmdW5jIChzIDx0eXBlIDg3ICo8dHlwZSA4NT4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jIChzIDx0eXBlIDg3PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSA4Nz4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgODggIkRlZmVyU3RtdCIgPHR5cGUgODkgc3RydWN0IHsgRGVmZXIgPHR5cGUgMz47IENhbGwgPHR5cGUgNTQ+OyB9PgogZnVuYyAocyA8dHlwZSA5MCAqPHR5cGUgODg+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAocyA8dHlwZSA5MD4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgOTA+KSAuZ28vYXN0LnN0bXROb2RlICgpOwo+Owp0eXBlIDx0eXBlIDkxICJFbGxpcHNpcyIgPHR5cGUgOTIgc3RydWN0IHsgRWxsaXBzaXMgPHR5cGUgMz47IEVsdCA8dHlwZSA0PjsgfT4KIGZ1bmMgKHggPHR5cGUgOTMgKjx0eXBlIDkxPj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHggPHR5cGUgOTM+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDkzPikgLmdvL2FzdC5leHByTm9kZSAoKTsKPjsKdHlwZSA8dHlwZSA5NCAiRW1wdHlTdG10IiA8dHlwZSA5NSBzdHJ1Y3QgeyBTZW1pY29sb24gPHR5cGUgMz47IH0+CiBmdW5jIChzIDx0eXBlIDk2ICo8dHlwZSA5ND4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jIChzIDx0eXBlIDk2PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSA5Nj4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgND47CnR5cGUgPHR5cGUgOTcgIkV4cHJTdG10IiA8dHlwZSA5OCBzdHJ1Y3QgeyBYIDx0eXBlIDQ+OyB9PgogZnVuYyAocyA8dHlwZSA5OSAqPHR5cGUgOTc+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAocyA8dHlwZSA5OT4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgOTk+KSAuZ28vYXN0LnN0bXROb2RlICgpOwo+Owp0eXBlIDx0eXBlIDEwMCAiRmllbGQiIDx0eXBlIDEwMSBzdHJ1Y3QgeyBEb2MgPHR5cGUgNzQ+OyBOYW1lcyA8dHlwZSAxMDIgW10gPHR5cGUgMTAzICo8dHlwZSA0MD4+PjsgVHlwZSA8dHlwZSA0PjsgVGFnIDx0eXBlIDEwNCAqPHR5cGUgMjU+PjsgQ29tbWVudCA8dHlwZSA3ND47IH0+CiBmdW5jIChmIDx0eXBlIDEwNSAqPHR5cGUgMTAwPj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKGYgPHR5cGUgMTA1PikgRW5kICgpIDx0eXBlIDM+Owo+Owp0eXBlIDx0eXBlIDEwNiAiRmllbGRGaWx0ZXIiIDx0eXBlIDEwNyAobmFtZSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAxMDggInJlZmxlY3QuVmFsdWUiIDx0eXBlIDEwOSBzdHJ1Y3QgeyAucmVmbGVjdC50eXAgPHR5cGUgMTEwICo8dHlwZSAxMTEgIi5yZWZsZWN0LnJ0eXBlIiA8dHlwZSAxMTIgc3RydWN0IHsgLnJlZmxlY3Qua2luZCA8dHlwZSAtNT47IC5yZWZsZWN0LmFsaWduIDx0eXBlIC0xPjsgLnJlZmxlY3QuZmllbGRBbGlnbiA8dHlwZSAtNT47IC5yZWZsZWN0Ll8gPHR5cGUgLTU+OyAucmVmbGVjdC5zaXplIDx0eXBlIC0xMz47IC5yZWZsZWN0Lmhhc2ggPHR5cGUgLTc+OyAucmVmbGVjdC5oYXNoZm4gPHR5cGUgLTEzPjsgLnJlZmxlY3QuZXF1YWxmbiA8dHlwZSAtMTM+OyAucmVmbGVjdC5nYyA8dHlwZSAxMTMgInVuc2FmZS5Qb2ludGVyIiAidW5zYWZlIiA8dHlwZSAxMTQgKmFueT4+OyAucmVmbGVjdC5zdHJpbmcgPHR5cGUgMTE1ICo8dHlwZSAtMTY+PjsgPyA8dHlwZSAxMTYgKjx0eXBlIDExNyAiLnJlZmxlY3QudW5jb21tb25UeXBlIiA8dHlwZSAxMTggc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSAxMTU+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDExNT47IC5yZWZsZWN0Lm1ldGhvZHMgPHR5cGUgMTE5IFtdIDx0eXBlIDEyMCAiLnJlZmxlY3QubWV0aG9kIiA8dHlwZSAxMjEgc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSAxMTU+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDExNT47IC5yZWZsZWN0Lm10eXAgPHR5cGUgMTIyICo8dHlwZSAxMTE+PjsgLnJlZmxlY3QudHlwIDx0eXBlIDEyMj47IC5yZWZsZWN0LnRmbiA8dHlwZSAxMTM+OyB9Pj4+OyB9PgogZnVuYyAodCA8dHlwZSAxMjMgKjx0eXBlIDExNz4+KSBQa2dQYXRoICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDEyMz4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAobSA8dHlwZSAxMjQgInJlZmxlY3QuTWV0aG9kIiA8dHlwZSAxMjUgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgMTI2ICJyZWZsZWN0LlR5cGUiIDx0eXBlIDEyNyBpbnRlcmZhY2UgeyBBbGlnbiAoKSA8dHlwZSAtMTE+OyBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47IE1ldGhvZCAoPyA8dHlwZSAtMTE+KSA8dHlwZSAxMjQ+OyBNZXRob2RCeU5hbWUgKD8gPHR5cGUgLTE2PikgKD8gPHR5cGUgMTI0PiwgPyA8dHlwZSAtMTU+KTsgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47IE5hbWUgKCkgPHR5cGUgLTE2PjsgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC0xMz47IFN0cmluZyAoKSA8dHlwZSAtMTY+OyAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsgS2luZCAoKSA8dHlwZSAxMjggInJlZmxlY3QuS2luZCIgPHR5cGUgLTEyPgogZnVuYyAoayA8dHlwZSAxMjg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgSW1wbGVtZW50cyAodSA8dHlwZSAxMjY+KSA8dHlwZSAtMTU+OyBBc3NpZ25hYmxlVG8gKHUgPHR5cGUgMTI2PikgPHR5cGUgLTE1PjsgQ29udmVydGlibGVUbyAodSA8dHlwZSAxMjY+KSA8dHlwZSAtMTU+OyBDb21wYXJhYmxlICgpIDx0eXBlIC0xNT47IEJpdHMgKCkgPHR5cGUgLTExPjsgQ2hhbkRpciAoKSA8dHlwZSAxMjkgInJlZmxlY3QuQ2hhbkRpciIgPHR5cGUgLTExPgogZnVuYyAoZCA8dHlwZSAxMjk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgSXNWYXJpYWRpYyAoKSA8dHlwZSAtMTU+OyBFbGVtICgpIDx0eXBlIDEyNj47IEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDEzMCAicmVmbGVjdC5TdHJ1Y3RGaWVsZCIgPHR5cGUgMTMxIHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgUGtnUGF0aCA8dHlwZSAtMTY+OyBUeXBlIDx0eXBlIDEyNj47IFRhZyA8dHlwZSAxMzIgInJlZmxlY3QuU3RydWN0VGFnIiA8dHlwZSAtMTY+CiBmdW5jICh0YWcgPHR5cGUgMTMyPikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKPjsgT2Zmc2V0IDx0eXBlIC0xMz47IEluZGV4IDx0eXBlIDEzMyBbXSA8dHlwZSAtMTE+PjsgQW5vbnltb3VzIDx0eXBlIC0xNT47IH0+PjsgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSAxMzQgW10gPHR5cGUgLTExPj4pIDx0eXBlIDEzMD47IEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDEzMD4sID8gPHR5cGUgLTE1Pik7IEZpZWxkQnlOYW1lRnVuYyAobWF0Y2ggPHR5cGUgMTM1ICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSAoPyA8dHlwZSAxMzA+LCA/IDx0eXBlIC0xNT4pOyBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxMjY+OyBLZXkgKCkgPHR5cGUgMTI2PjsgTGVuICgpIDx0eXBlIC0xMT47IE51bUZpZWxkICgpIDx0eXBlIC0xMT47IE51bUluICgpIDx0eXBlIC0xMT47IE51bU91dCAoKSA8dHlwZSAtMTE+OyBPdXQgKGkgPHR5cGUgLTExPikgPHR5cGUgMTI2PjsgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDEyMj47IC5yZWZsZWN0LnVuY29tbW9uICgpIDx0eXBlIDEyMz47IH0+PjsgRnVuYyA8dHlwZSAxMDg+OyBJbmRleCA8dHlwZSAtMTE+OyB9Pj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSAxMjM+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTIzPikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxMjM+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgMTI0Pik7CiBmdW5jICh0IDx0eXBlIDEyMz4pIC5yZWZsZWN0LnVuY29tbW9uICgpIDx0eXBlIDEyMz47Cj4+OyAucmVmbGVjdC5wdHJUb1RoaXMgPHR5cGUgMTIyPjsgLnJlZmxlY3QuemVybyA8dHlwZSAxMTM+OyB9PgogZnVuYyAodCA8dHlwZSAxMjI+KSBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDEyMj4pIC5yZWZsZWN0LmNvbW1vbiAoKSA8dHlwZSAxMjI+OwogZnVuYyAodCA8dHlwZSAxMjI+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgMTI0Pik7CiBmdW5jICh0IDx0eXBlIDEyMj4pIC5yZWZsZWN0LnB0clRvICgpIDx0eXBlIDEyMj47CiBmdW5jICh0IDx0eXBlIDEyMj4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAobSA8dHlwZSAxMjQ+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgLnJlZmxlY3QucmF3U3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDEyMj4pIEtleSAoKSA8dHlwZSAxMjY+OwogZnVuYyAodCA8dHlwZSAxMjI+KSBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxMjY+OwogZnVuYyAodCA8dHlwZSAxMjI+KSBJc1ZhcmlhZGljICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDEyMj4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgQ2hhbkRpciAoKSA8dHlwZSAxMjk+OwogZnVuYyAodCA8dHlwZSAxMjI+KSBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDEzNiBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMTMwPjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgS2luZCAoKSA8dHlwZSAxMjg+OwogZnVuYyAodCA8dHlwZSAxMjI+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDEyNj47CiBmdW5jICh0IDx0eXBlIDEyMj4pIEltcGxlbWVudHMgKHUgPHR5cGUgMTI2PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxMjI+KSBDb252ZXJ0aWJsZVRvICh1IDx0eXBlIDEyNj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDEyMj4pIEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDEzMD47CiBmdW5jICh0IDx0eXBlIDEyMj4pIEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDEyMj4pIEVsZW0gKCkgPHR5cGUgMTI2PjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgMTMwPiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgLnJlZmxlY3QucG9pbnRlcnMgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSAxMzcgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pICg/IDx0eXBlIDEzMD4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDEyMj4pIEJpdHMgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgTnVtSW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgTnVtT3V0ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDEyMj4pIFNpemUgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDEyMj4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDEyMj4pIENvbXBhcmFibGUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTIyPikgQXNzaWduYWJsZVRvICh1IDx0eXBlIDEyNj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDEyMj4pIExlbiAoKSA8dHlwZSAtMTE+Owo+PjsgLnJlZmxlY3QucHRyIDx0eXBlIDExMz47ID8gPHR5cGUgMTM4ICIucmVmbGVjdC5mbGFnIiA8dHlwZSAtMTM+CiBmdW5jIChmIDx0eXBlIDEzOD4pIC5yZWZsZWN0Lm11c3RCZSAoZXhwZWN0ZWQgPHR5cGUgMTI4Pik7CiBmdW5jIChmIDx0eXBlIDEzOD4pIC5yZWZsZWN0Lm11c3RCZUV4cG9ydGVkICgpOwogZnVuYyAoZiA8dHlwZSAxMzg+KSAucmVmbGVjdC5tdXN0QmVBc3NpZ25hYmxlICgpOwogZnVuYyAoZiA8dHlwZSAxMzg+KSAucmVmbGVjdC5raW5kICgpIDx0eXBlIDEyOD47Cj47IH0+CiBmdW5jICh2IDx0eXBlIDEwOD4pIFR5cGUgKCkgPHR5cGUgMTI2PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgT3ZlcmZsb3dDb21wbGV4ICh4IDx0eXBlIC0xOD4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDEwOD4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAxMDg+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBCeXRlcyAoKSA8dHlwZSAxMzkgW10gPHR5cGUgLTIwPj47CiBmdW5jICh2IDx0eXBlIDEwOD4pIEludGVyZmFjZSAoKSAoaSA8dHlwZSAxNDAgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAxMDg+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBTZW5kICh4IDx0eXBlIDEwOD4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSAucmVmbGVjdC5yZWN2IChuYiA8dHlwZSAtMTU+KSAodmFsIDx0eXBlIDEwOD4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBVaW50ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgSXNWYWxpZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgT3ZlcmZsb3dGbG9hdCAoeCA8dHlwZSAtMTA+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBNYXBLZXlzICgpIDx0eXBlIDE0MSBbXSA8dHlwZSAxMDg+PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgTWV0aG9kIChpIDx0eXBlIC0xMT4pIDx0eXBlIDEwOD47CiBmdW5jICh2IDx0eXBlIDEwOD4pIFNldEludCAoeCA8dHlwZSAtND4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBGaWVsZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxMDg+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBTZXRMZW4gKG4gPHR5cGUgLTExPik7CiBmdW5jICh2IDx0eXBlIDEwOD4pIFVuc2FmZUFkZHIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgU2xpY2UzIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPiwgayA8dHlwZSAtMTE+KSA8dHlwZSAxMDg+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBDb21wbGV4ICgpIDx0eXBlIC0xOD47CiBmdW5jICh2IDx0eXBlIDEwOD4pIFNldENhcCAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgQ2FsbFNsaWNlIChpbiA8dHlwZSAxNDIgW10gPHR5cGUgMTA4Pj4pIDx0eXBlIDE0MyBbXSA8dHlwZSAxMDg+PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgRmxvYXQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgLnJlZmxlY3QuYXNzaWduVG8gKGNvbnRleHQgPHR5cGUgLTE2PiwgZHN0IDx0eXBlIDExMD4sIHRhcmdldCA8dHlwZSAxMTM+KSA8dHlwZSAxMDg+OwogZnVuYyAodiA8dHlwZSAxMDg+KSAucmVmbGVjdC5ydW5lcyAoKSA8dHlwZSAxNDQgW10gPHR5cGUgLTIxPj47CiBmdW5jICh2IDx0eXBlIDEwOD4pIEVsZW0gKCkgPHR5cGUgMTA4PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgSW5kZXggKGkgPHR5cGUgLTExPikgPHR5cGUgMTA4PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgVHJ5U2VuZCAoeCA8dHlwZSAxMDg+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBTZXRCb29sICh4IDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBTZXRCeXRlcyAoeCA8dHlwZSAxNDUgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSAucmVmbGVjdC5zZXRSdW5lcyAoeCA8dHlwZSAxNDYgW10gPHR5cGUgLTIxPj4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDE0NyAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgPHR5cGUgMTA4PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgT3ZlcmZsb3dVaW50ICh4IDx0eXBlIC04PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgTWFwSW5kZXggKGtleSA8dHlwZSAxMDg+KSA8dHlwZSAxMDg+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBJc05pbCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBTZXRQb2ludGVyICh4IDx0eXBlIDExMz4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgLnJlZmxlY3QuY2FsbCAob3AgPHR5cGUgLTE2PiwgaW4gPHR5cGUgMTQ4IFtdIDx0eXBlIDEwOD4+KSA8dHlwZSAxNDkgW10gPHR5cGUgMTA4Pj47CiBmdW5jICh2IDx0eXBlIDEwOD4pIEludCAoKSA8dHlwZSAtND47CiBmdW5jICh2IDx0eXBlIDEwOD4pIFJlY3YgKCkgKHggPHR5cGUgMTA4Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDEwOD4pIENvbnZlcnQgKHQgPHR5cGUgMTI2PikgPHR5cGUgMTA4PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgS2luZCAoKSA8dHlwZSAxMjg+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBJbnRlcmZhY2VEYXRhICgpIDx0eXBlIDE1MCBbMiBdIDx0eXBlIC0xMz4+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBTZXRNYXBJbmRleCAoa2V5IDx0eXBlIDEwOD4sIHZhbCA8dHlwZSAxMDg+KTsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgQ2FsbCAoaW4gPHR5cGUgMTUxIFtdIDx0eXBlIDEwOD4+KSA8dHlwZSAxNTIgW10gPHR5cGUgMTA4Pj47CiBmdW5jICh2IDx0eXBlIDEwOD4pIFNldCAoeCA8dHlwZSAxMDg+KTsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgU2V0VWludCAoeCA8dHlwZSAtOD4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBCb29sICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDEwOD4pIFNsaWNlIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPikgPHR5cGUgMTA4PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgLnJlZmxlY3QucG9pbnRlciAoKSA8dHlwZSAxMTM+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBQb2ludGVyICgpIDx0eXBlIC0xMz47CiBmdW5jICh2IDx0eXBlIDEwOD4pIENhcCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBTZXRTdHJpbmcgKHggPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDEwOD4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBUcnlSZWN2ICgpICh4IDx0eXBlIDEwOD4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBDbG9zZSAoKTsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgQ2FuQWRkciAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBDYW5TZXQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgLnJlZmxlY3Quc2VuZCAoeCA8dHlwZSAxMDg+LCBuYiA8dHlwZSAtMTU+KSAoc2VsZWN0ZWQgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDEwOD4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgMTUzIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAxMDg+OwogZnVuYyAodiA8dHlwZSAxMDg+KSBPdmVyZmxvd0ludCAoeCA8dHlwZSAtND4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDEwOD4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDEwOD4pIFNldEZsb2F0ICh4IDx0eXBlIC0xMD4pOwogZnVuYyAodiA8dHlwZSAxMDg+KSBDYW5JbnRlcmZhY2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgU2V0Q29tcGxleCAoeCA8dHlwZSAtMTg+KTsKIGZ1bmMgKHYgPHR5cGUgMTA4PikgQWRkciAoKSA8dHlwZSAxMDg+Owo+KSA8dHlwZSAtMTU+Pj47CnR5cGUgPHR5cGUgMTU0ICJGaWVsZExpc3QiIDx0eXBlIDE1NSBzdHJ1Y3QgeyBPcGVuaW5nIDx0eXBlIDM+OyBMaXN0IDx0eXBlIDE1NiBbXSA8dHlwZSAxMDU+PjsgQ2xvc2luZyA8dHlwZSAzPjsgfT4KIGZ1bmMgKGYgPHR5cGUgMTU3ICo8dHlwZSAxNTQ+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoZiA8dHlwZSAxNTc+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jIChmIDx0eXBlIDE1Nz4pIE51bUZpZWxkcyAoKSA8dHlwZSAtMTE+Owo+Owp0eXBlIDx0eXBlIDE1OCAiRmlsZSIgPHR5cGUgMTU5IHN0cnVjdCB7IERvYyA8dHlwZSA3ND47IFBhY2thZ2UgPHR5cGUgMz47IE5hbWUgPHR5cGUgMzk+OyBEZWNscyA8dHlwZSAxNjAgW10gPHR5cGUgODM+PjsgU2NvcGUgPHR5cGUgMTYxICo8dHlwZSAxNjIgIlNjb3BlIiA8dHlwZSAxNjMgc3RydWN0IHsgT3V0ZXIgPHR5cGUgMTY0ICo8dHlwZSAxNjI+PjsgT2JqZWN0cyA8dHlwZSAxNjUgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxNjYgKjx0eXBlIDQzPj4+OyB9PgogZnVuYyAocyA8dHlwZSAxNjcgKjx0eXBlIDE2Mj4+KSBMb29rdXAgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMTY4ICo8dHlwZSA0Mz4+OwogZnVuYyAocyA8dHlwZSAxNjc+KSBJbnNlcnQgKG9iaiA8dHlwZSAxNjkgKjx0eXBlIDQzPj4pIChhbHQgPHR5cGUgMTcwICo8dHlwZSA0Mz4+KTsKIGZ1bmMgKHMgPHR5cGUgMTY3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+OyBJbXBvcnRzIDx0eXBlIDE3MSBbXSA8dHlwZSAxNzIgKjx0eXBlIDE3MyAiSW1wb3J0U3BlYyIgPHR5cGUgMTc0IHN0cnVjdCB7IERvYyA8dHlwZSA3ND47IE5hbWUgPHR5cGUgMzk+OyBQYXRoIDx0eXBlIDI3PjsgQ29tbWVudCA8dHlwZSA3ND47IEVuZFBvcyA8dHlwZSAzPjsgfT4KIGZ1bmMgKHMgPHR5cGUgMTc1ICo8dHlwZSAxNzM+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAocyA8dHlwZSAxNzU+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDE3NT4pIC5nby9hc3Quc3BlY05vZGUgKCk7Cj4+PjsgVW5yZXNvbHZlZCA8dHlwZSAxNzYgW10gPHR5cGUgMzk+PjsgQ29tbWVudHMgPHR5cGUgMTc3IFtdIDx0eXBlIDc0Pj47IH0+CiBmdW5jIChmIDx0eXBlIDE3OCAqPHR5cGUgMTU4Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKGYgPHR5cGUgMTc4PikgRW5kICgpIDx0eXBlIDM+Owo+OwpmdW5jIEZpbGVFeHBvcnRzIChzcmMgPHR5cGUgMTc4PikgPHR5cGUgLTE1PjsKdHlwZSA8dHlwZSAxNzkgIkZpbHRlciIgPHR5cGUgMTgwICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+PjsKZnVuYyBGaWx0ZXJEZWNsIChkZWNsIDx0eXBlIDgzPiwgZiA8dHlwZSAxNzk+KSA8dHlwZSAtMTU+OwpmdW5jIEZpbHRlckZpbGUgKHNyYyA8dHlwZSAxNzg+LCBmIDx0eXBlIDE3OT4pIDx0eXBlIC0xNT47CmNvbnN0IEZpbHRlckZ1bmNEdXBsaWNhdGVzIDx0eXBlIDE4MSAiTWVyZ2VNb2RlIiA8dHlwZSAtMTI+PiA9IDEgOwpjb25zdCBGaWx0ZXJJbXBvcnREdXBsaWNhdGVzIDx0eXBlIDE4MT4gPSA0IDsKZnVuYyBGaWx0ZXJQYWNrYWdlIChwa2cgPHR5cGUgMTgyICo8dHlwZSAxODMgIlBhY2thZ2UiIDx0eXBlIDE4NCBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFNjb3BlIDx0eXBlIDE4NSAqPHR5cGUgMTYyPj47IEltcG9ydHMgPHR5cGUgMTg2IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMTg3ICo8dHlwZSA0Mz4+PjsgRmlsZXMgPHR5cGUgMTg4IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMTc4Pj47IH0+CiBmdW5jIChwIDx0eXBlIDE4OSAqPHR5cGUgMTgzPj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHAgPHR5cGUgMTg5PikgRW5kICgpIDx0eXBlIDM+Owo+PiwgZiA8dHlwZSAxNzk+KSA8dHlwZSAtMTU+Owpjb25zdCBGaWx0ZXJVbmFzc29jaWF0ZWRDb21tZW50cyA8dHlwZSAxODE+ID0gMiA7CnR5cGUgPHR5cGUgMTkwICJGb3JTdG10IiA8dHlwZSAxOTEgc3RydWN0IHsgRm9yIDx0eXBlIDM+OyBJbml0IDx0eXBlIDM0PjsgQ29uZCA8dHlwZSA0PjsgUG9zdCA8dHlwZSAzND47IEJvZHkgPHR5cGUgMzY+OyB9PgogZnVuYyAocyA8dHlwZSAxOTIgKjx0eXBlIDE5MD4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jIChzIDx0eXBlIDE5Mj4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMTkyPikgLmdvL2FzdC5zdG10Tm9kZSAoKTsKPjsKZnVuYyBGcHJpbnQgKHcgPHR5cGUgMTkzICJpby5Xcml0ZXIiIDx0eXBlIDE5NCBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAxOTUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBmc2V0IDx0eXBlIDE5NiAqPHR5cGUgMTk3ICJnby90b2tlbi5GaWxlU2V0IiA8dHlwZSAxOTggc3RydWN0IHsgLmdvL3Rva2VuLm11dGV4IDx0eXBlIDE5OSAic3luYy5SV011dGV4IiAic3luYyIgPHR5cGUgMjAwIHN0cnVjdCB7IC5zeW5jLncgPHR5cGUgMjAxICJzeW5jLk11dGV4IiA8dHlwZSAyMDIgc3RydWN0IHsgLnN5bmMuc3RhdGUgPHR5cGUgLTM+OyAuc3luYy5zZW1hIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG0gPHR5cGUgMjAzICo8dHlwZSAyMDE+PikgVW5sb2NrICgpOwogZnVuYyAobSA8dHlwZSAyMDM+KSBMb2NrICgpOwo+OyAuc3luYy53cml0ZXJTZW0gPHR5cGUgLTc+OyAuc3luYy5yZWFkZXJTZW0gPHR5cGUgLTc+OyAuc3luYy5yZWFkZXJDb3VudCA8dHlwZSAtMz47IC5zeW5jLnJlYWRlcldhaXQgPHR5cGUgLTM+OyB9PgogZnVuYyAocncgPHR5cGUgMjA0ICo8dHlwZSAxOTk+PikgUlVubG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDIwND4pIFVubG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDIwND4pIFJMb2NrZXIgKCkgPHR5cGUgMjA1ICJzeW5jLkxvY2tlciIgPHR5cGUgMjA2IGludGVyZmFjZSB7IExvY2sgKCk7IFVubG9jayAoKTsgfT4+OwogZnVuYyAocncgPHR5cGUgMjA0PikgUkxvY2sgKCk7CiBmdW5jIChydyA8dHlwZSAyMDQ+KSBMb2NrICgpOwo+OyAuZ28vdG9rZW4uYmFzZSA8dHlwZSAtMTE+OyAuZ28vdG9rZW4uZmlsZXMgPHR5cGUgMjA3IFtdIDx0eXBlIDIwOCAqPHR5cGUgMjA5ICJnby90b2tlbi5GaWxlIiA8dHlwZSAyMTAgc3RydWN0IHsgLmdvL3Rva2VuLnNldCA8dHlwZSAyMTEgKjx0eXBlIDE5Nz4+OyAuZ28vdG9rZW4ubmFtZSA8dHlwZSAtMTY+OyAuZ28vdG9rZW4uYmFzZSA8dHlwZSAtMTE+OyAuZ28vdG9rZW4uc2l6ZSA8dHlwZSAtMTE+OyAuZ28vdG9rZW4ubGluZXMgPHR5cGUgMjEyIFtdIDx0eXBlIC0xMT4+OyAuZ28vdG9rZW4uaW5mb3MgPHR5cGUgMjEzIFtdIDx0eXBlIDIxNCAiLmdvL3Rva2VuLmxpbmVJbmZvIiA8dHlwZSAyMTUgc3RydWN0IHsgT2Zmc2V0IDx0eXBlIC0xMT47IEZpbGVuYW1lIDx0eXBlIC0xNj47IExpbmUgPHR5cGUgLTExPjsgfT4+PjsgfT4KIGZ1bmMgKGYgPHR5cGUgMjE2ICo8dHlwZSAyMDk+PikgUG9zaXRpb25Gb3IgKHAgPHR5cGUgMz4sIGFkanVzdGVkIDx0eXBlIC0xNT4pIChwb3MgPHR5cGUgMjE3ICJnby90b2tlbi5Qb3NpdGlvbiIgPHR5cGUgMjE4IHN0cnVjdCB7IEZpbGVuYW1lIDx0eXBlIC0xNj47IE9mZnNldCA8dHlwZSAtMTE+OyBMaW5lIDx0eXBlIC0xMT47IENvbHVtbiA8dHlwZSAtMTE+OyB9PgogZnVuYyAocG9zIDx0eXBlIDIxOSAqPHR5cGUgMjE3Pj4pIElzVmFsaWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHBvcyA8dHlwZSAyMTc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPik7CiBmdW5jIChmIDx0eXBlIDIxNj4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGYgPHR5cGUgMjE2PikgUG9zIChvZmZzZXQgPHR5cGUgLTExPikgPHR5cGUgMz47CiBmdW5jIChmIDx0eXBlIDIxNj4pIC5nby90b2tlbi5wb3NpdGlvbiAocCA8dHlwZSAzPiwgYWRqdXN0ZWQgPHR5cGUgLTE1PikgKHBvcyA8dHlwZSAyMTc+KTsKIGZ1bmMgKGYgPHR5cGUgMjE2PikgTWVyZ2VMaW5lIChsaW5lIDx0eXBlIC0xMT4pOwogZnVuYyAoZiA8dHlwZSAyMTY+KSBTZXRMaW5lc0ZvckNvbnRlbnQgKGNvbnRlbnQgPHR5cGUgMjIwIFtdIDx0eXBlIC0yMD4+KTsKIGZ1bmMgKGYgPHR5cGUgMjE2PikgU2V0TGluZXMgKGxpbmVzIDx0eXBlIDIyMSBbXSA8dHlwZSAtMTE+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGYgPHR5cGUgMjE2PikgUG9zaXRpb24gKHAgPHR5cGUgMz4pIChwb3MgPHR5cGUgMjE3Pik7CiBmdW5jIChmIDx0eXBlIDIxNj4pIExpbmUgKHAgPHR5cGUgMz4pIDx0eXBlIC0xMT47CiBmdW5jIChmIDx0eXBlIDIxNj4pIEFkZExpbmUgKG9mZnNldCA8dHlwZSAtMTE+KTsKIGZ1bmMgKGYgPHR5cGUgMjE2PikgU2l6ZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAyMTY+KSAuZ28vdG9rZW4udW5wYWNrIChvZmZzZXQgPHR5cGUgLTExPiwgYWRqdXN0ZWQgPHR5cGUgLTE1PikgKGZpbGVuYW1lIDx0eXBlIC0xNj4sIGxpbmUgPHR5cGUgLTExPiwgY29sdW1uIDx0eXBlIC0xMT4pOwogZnVuYyAoZiA8dHlwZSAyMTY+KSBPZmZzZXQgKHAgPHR5cGUgMz4pIDx0eXBlIC0xMT47CiBmdW5jIChmIDx0eXBlIDIxNj4pIExpbmVDb3VudCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAyMTY+KSBBZGRMaW5lSW5mbyAob2Zmc2V0IDx0eXBlIC0xMT4sIGZpbGVuYW1lIDx0eXBlIC0xNj4sIGxpbmUgPHR5cGUgLTExPik7CiBmdW5jIChmIDx0eXBlIDIxNj4pIEJhc2UgKCkgPHR5cGUgLTExPjsKPj4+OyAuZ28vdG9rZW4ubGFzdCA8dHlwZSAyMDg+OyB9PgogZnVuYyAocyA8dHlwZSAyMTE+KSAuZ28vdG9rZW4uZmlsZSAocCA8dHlwZSAzPikgPHR5cGUgMjA4PjsKIGZ1bmMgKHMgPHR5cGUgMjExPikgV3JpdGUgKGVuY29kZSA8dHlwZSAyMjIgKD8gPHR5cGUgMjIzIGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHMgPHR5cGUgMjExPikgQWRkRmlsZSAoZmlsZW5hbWUgPHR5cGUgLTE2PiwgYmFzZSA8dHlwZSAtMTE+LCBzaXplIDx0eXBlIC0xMT4pIDx0eXBlIDIwOD47CiBmdW5jIChzIDx0eXBlIDIxMT4pIFBvc2l0aW9uIChwIDx0eXBlIDM+KSAocG9zIDx0eXBlIDIxNz4pOwogZnVuYyAocyA8dHlwZSAyMTE+KSBQb3NpdGlvbkZvciAocCA8dHlwZSAzPiwgYWRqdXN0ZWQgPHR5cGUgLTE1PikgKHBvcyA8dHlwZSAyMTc+KTsKIGZ1bmMgKHMgPHR5cGUgMjExPikgUmVhZCAoZGVjb2RlIDx0eXBlIDIyNCAoPyA8dHlwZSAyMjUgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT4+KSA8dHlwZSAtMTk+OwogZnVuYyAocyA8dHlwZSAyMTE+KSBJdGVyYXRlIChmIDx0eXBlIDIyNiAoPyA8dHlwZSAyMDg+KSA8dHlwZSAtMTU+Pik7CiBmdW5jIChzIDx0eXBlIDIxMT4pIEJhc2UgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHMgPHR5cGUgMjExPikgRmlsZSAocCA8dHlwZSAzPikgKGYgPHR5cGUgMjA4Pik7Cj4+LCB4IDx0eXBlIDIyNyBpbnRlcmZhY2UgeyB9PiwgZiA8dHlwZSAxMDY+KSAoZXJyIDx0eXBlIC0xOT4pOwpjb25zdCBGdW4gPHR5cGUgMTU+ID0gNSA7CnR5cGUgPHR5cGUgMjI4ICJGdW5jRGVjbCIgPHR5cGUgMjI5IHN0cnVjdCB7IERvYyA8dHlwZSA3ND47IFJlY3YgPHR5cGUgMTU3PjsgTmFtZSA8dHlwZSAzOT47IFR5cGUgPHR5cGUgMjMwICo8dHlwZSAyMzEgIkZ1bmNUeXBlIiA8dHlwZSAyMzIgc3RydWN0IHsgRnVuYyA8dHlwZSAzPjsgUGFyYW1zIDx0eXBlIDE1Nz47IFJlc3VsdHMgPHR5cGUgMTU3PjsgfT4KIGZ1bmMgKHggPHR5cGUgMjMzICo8dHlwZSAyMzE+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSAyMzM+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDIzMz4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj4+OyBCb2R5IDx0eXBlIDM2PjsgfT4KIGZ1bmMgKGQgPHR5cGUgMjM0ICo8dHlwZSAyMjg+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoZCA8dHlwZSAyMzQ+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDIzND4pIC5nby9hc3QuZGVjbE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMjM1ICJGdW5jTGl0IiA8dHlwZSAyMzYgc3RydWN0IHsgVHlwZSA8dHlwZSAyMzcgKjx0eXBlIDIzMT4+OyBCb2R5IDx0eXBlIDIzOCAqPHR5cGUgMzE+PjsgfT4KIGZ1bmMgKHggPHR5cGUgMjM5ICo8dHlwZSAyMzU+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSAyMzk+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDIzOT4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMjMxPjsKdHlwZSA8dHlwZSAyNDAgIkdlbkRlY2wiIDx0eXBlIDI0MSBzdHJ1Y3QgeyBEb2MgPHR5cGUgNzQ+OyBUb2tQb3MgPHR5cGUgMz47IFRvayA8dHlwZSAxMj47IExwYXJlbiA8dHlwZSAzPjsgU3BlY3MgPHR5cGUgMjQyIFtdIDx0eXBlIDI0MyAiU3BlYyIgPHR5cGUgMjQ0IGludGVyZmFjZSB7ID8gPHR5cGUgNj47IC5nby9hc3Quc3BlY05vZGUgKCk7IH0+Pj47IFJwYXJlbiA8dHlwZSAzPjsgfT4KIGZ1bmMgKGQgPHR5cGUgMjQ1ICo8dHlwZSAyNDA+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoZCA8dHlwZSAyNDU+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDI0NT4pIC5nby9hc3QuZGVjbE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMjQ2ICJHb1N0bXQiIDx0eXBlIDI0NyBzdHJ1Y3QgeyBHbyA8dHlwZSAzPjsgQ2FsbCA8dHlwZSA1ND47IH0+CiBmdW5jIChzIDx0eXBlIDI0OCAqPHR5cGUgMjQ2Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHMgPHR5cGUgMjQ4PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAyNDg+KSAuZ28vYXN0LnN0bXROb2RlICgpOwo+Owp0eXBlIDx0eXBlIDQwPjsKdHlwZSA8dHlwZSAyNDkgIklmU3RtdCIgPHR5cGUgMjUwIHN0cnVjdCB7IElmIDx0eXBlIDM+OyBJbml0IDx0eXBlIDM0PjsgQ29uZCA8dHlwZSA0PjsgQm9keSA8dHlwZSAzNj47IEVsc2UgPHR5cGUgMzQ+OyB9PgogZnVuYyAocyA8dHlwZSAyNTEgKjx0eXBlIDI0OT4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jIChzIDx0eXBlIDI1MT4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMjUxPikgLmdvL2FzdC5zdG10Tm9kZSAoKTsKPjsKdHlwZSA8dHlwZSAxNzM+Owp0eXBlIDx0eXBlIDI1MiAiSW1wb3J0ZXIiIDx0eXBlIDI1MyAoaW1wb3J0cyA8dHlwZSAyNTQgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAyNTUgKjx0eXBlIDQzPj4+LCBwYXRoIDx0eXBlIC0xNj4pIChwa2cgPHR5cGUgMjU2ICo8dHlwZSA0Mz4+LCBlcnIgPHR5cGUgLTE5Pik+PjsKdHlwZSA8dHlwZSAyNTcgIkluY0RlY1N0bXQiIDx0eXBlIDI1OCBzdHJ1Y3QgeyBYIDx0eXBlIDQ+OyBUb2tQb3MgPHR5cGUgMz47IFRvayA8dHlwZSAxMj47IH0+CiBmdW5jIChzIDx0eXBlIDI1OSAqPHR5cGUgMjU3Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHMgPHR5cGUgMjU5PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAyNTk+KSAuZ28vYXN0LnN0bXROb2RlICgpOwo+Owp0eXBlIDx0eXBlIDI2MCAiSW5kZXhFeHByIiA8dHlwZSAyNjEgc3RydWN0IHsgWCA8dHlwZSA0PjsgTGJyYWNrIDx0eXBlIDM+OyBJbmRleCA8dHlwZSA0PjsgUmJyYWNrIDx0eXBlIDM+OyB9PgogZnVuYyAoeCA8dHlwZSAyNjIgKjx0eXBlIDI2MD4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDI2Mj4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMjYyPikgLmdvL2FzdC5leHByTm9kZSAoKTsKPjsKZnVuYyBJbnNwZWN0IChub2RlIDx0eXBlIDY+LCBmIDx0eXBlIDI2MyAoPyA8dHlwZSA2PikgPHR5cGUgLTE1Pj4pOwp0eXBlIDx0eXBlIDI2NCAiSW50ZXJmYWNlVHlwZSIgPHR5cGUgMjY1IHN0cnVjdCB7IEludGVyZmFjZSA8dHlwZSAzPjsgTWV0aG9kcyA8dHlwZSAxNTc+OyBJbmNvbXBsZXRlIDx0eXBlIC0xNT47IH0+CiBmdW5jICh4IDx0eXBlIDI2NiAqPHR5cGUgMjY0Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHggPHR5cGUgMjY2PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAyNjY+KSAuZ28vYXN0LmV4cHJOb2RlICgpOwo+OwpmdW5jIElzRXhwb3J0ZWQgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgLTE1PjsKdHlwZSA8dHlwZSAyNjcgIktleVZhbHVlRXhwciIgPHR5cGUgMjY4IHN0cnVjdCB7IEtleSA8dHlwZSA0PjsgQ29sb24gPHR5cGUgMz47IFZhbHVlIDx0eXBlIDQ+OyB9PgogZnVuYyAoeCA8dHlwZSAyNjkgKjx0eXBlIDI2Nz4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDI2OT4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMjY5PikgLmdvL2FzdC5leHByTm9kZSAoKTsKPjsKdHlwZSA8dHlwZSAyNzAgIkxhYmVsZWRTdG10IiA8dHlwZSAyNzEgc3RydWN0IHsgTGFiZWwgPHR5cGUgMzk+OyBDb2xvbiA8dHlwZSAzPjsgU3RtdCA8dHlwZSAzND47IH0+CiBmdW5jIChzIDx0eXBlIDI3MiAqPHR5cGUgMjcwPj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHMgPHR5cGUgMjcyPikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAyNzI+KSAuZ28vYXN0LnN0bXROb2RlICgpOwo+Owpjb25zdCBMYmwgPHR5cGUgMTU+ID0gNiA7CnR5cGUgPHR5cGUgMjczICJNYXBUeXBlIiA8dHlwZSAyNzQgc3RydWN0IHsgTWFwIDx0eXBlIDM+OyBLZXkgPHR5cGUgND47IFZhbHVlIDx0eXBlIDQ+OyB9PgogZnVuYyAoeCA8dHlwZSAyNzUgKjx0eXBlIDI3Mz4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDI3NT4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMjc1PikgLmdvL2FzdC5leHByTm9kZSAoKTsKPjsKdHlwZSA8dHlwZSAxODE+OwpmdW5jIE1lcmdlUGFja2FnZUZpbGVzIChwa2cgPHR5cGUgMTgyPiwgbW9kZSA8dHlwZSAxODE+KSA8dHlwZSAxNzg+OwpmdW5jIE5ld0NvbW1lbnRNYXAgKGZzZXQgPHR5cGUgMTk2Piwgbm9kZSA8dHlwZSA2PiwgY29tbWVudHMgPHR5cGUgMjc2IFtdIDx0eXBlIDc0Pj4pIDx0eXBlIDc1PjsKZnVuYyBOZXdJZGVudCAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAzOT47CmZ1bmMgTmV3T2JqIChraW5kIDx0eXBlIDE1PiwgbmFtZSA8dHlwZSAtMTY+KSA8dHlwZSA0OD47CmZ1bmMgTmV3UGFja2FnZSAoZnNldCA8dHlwZSAxOTY+LCBmaWxlcyA8dHlwZSAyNzcgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxNzg+PiwgaW1wb3J0ZXIgPHR5cGUgMjUyPiwgdW5pdmVyc2UgPHR5cGUgMjc4ICo8dHlwZSAxNjI+PikgKD8gPHR5cGUgMTgyPiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBOZXdTY29wZSAob3V0ZXIgPHR5cGUgMTY3PikgPHR5cGUgMTY3PjsKdHlwZSA8dHlwZSA2PjsKZnVuYyBOb3ROaWxGaWx0ZXIgKF8gPHR5cGUgLTE2PiwgdiA8dHlwZSAxMDg+KSA8dHlwZSAtMTU+Owp0eXBlIDx0eXBlIDE1PjsKdHlwZSA8dHlwZSA0Mz47CnR5cGUgPHR5cGUgMTgzPjsKZnVuYyBQYWNrYWdlRXhwb3J0cyAocGtnIDx0eXBlIDE4Mj4pIDx0eXBlIC0xNT47CnR5cGUgPHR5cGUgMjc5ICJQYXJlbkV4cHIiIDx0eXBlIDI4MCBzdHJ1Y3QgeyBMcGFyZW4gPHR5cGUgMz47IFggPHR5cGUgND47IFJwYXJlbiA8dHlwZSAzPjsgfT4KIGZ1bmMgKHggPHR5cGUgMjgxICo8dHlwZSAyNzk+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSAyODE+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDI4MT4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj47CmNvbnN0IFBrZyA8dHlwZSAxNT4gPSAxIDsKZnVuYyBQcmludCAoZnNldCA8dHlwZSAxOTY+LCB4IDx0eXBlIDI4MiBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsKY29uc3QgUkVDViA8dHlwZSA2MD4gPSAyIDsKdHlwZSA8dHlwZSAyODMgIlJhbmdlU3RtdCIgPHR5cGUgMjg0IHN0cnVjdCB7IEZvciA8dHlwZSAzPjsgS2V5IDx0eXBlIDQ+OyBWYWx1ZSA8dHlwZSA0PjsgVG9rUG9zIDx0eXBlIDM+OyBUb2sgPHR5cGUgMTI+OyBYIDx0eXBlIDQ+OyBCb2R5IDx0eXBlIDM2PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMjg1ICo8dHlwZSAyODM+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAocyA8dHlwZSAyODU+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDI4NT4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMjg2ICJSZXR1cm5TdG10IiA8dHlwZSAyODcgc3RydWN0IHsgUmV0dXJuIDx0eXBlIDM+OyBSZXN1bHRzIDx0eXBlIDI4OCBbXSA8dHlwZSA0Pj47IH0+CiBmdW5jIChzIDx0eXBlIDI4OSAqPHR5cGUgMjg2Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHMgPHR5cGUgMjg5PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAyODk+KSAuZ28vYXN0LnN0bXROb2RlICgpOwo+Owpjb25zdCBTRU5EIDx0eXBlIDYwPiA9IDEgOwp0eXBlIDx0eXBlIDE2Mj47CnR5cGUgPHR5cGUgMjkwICJTZWxlY3RTdG10IiA8dHlwZSAyOTEgc3RydWN0IHsgU2VsZWN0IDx0eXBlIDM+OyBCb2R5IDx0eXBlIDM2PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMjkyICo8dHlwZSAyOTA+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAocyA8dHlwZSAyOTI+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDI5Mj4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMjkzICJTZWxlY3RvckV4cHIiIDx0eXBlIDI5NCBzdHJ1Y3QgeyBYIDx0eXBlIDQ+OyBTZWwgPHR5cGUgMzk+OyB9PgogZnVuYyAoeCA8dHlwZSAyOTUgKjx0eXBlIDI5Mz4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDI5NT4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMjk1PikgLmdvL2FzdC5leHByTm9kZSAoKTsKPjsKdHlwZSA8dHlwZSAyOTYgIlNlbmRTdG10IiA8dHlwZSAyOTcgc3RydWN0IHsgQ2hhbiA8dHlwZSA0PjsgQXJyb3cgPHR5cGUgMz47IFZhbHVlIDx0eXBlIDQ+OyB9PgogZnVuYyAocyA8dHlwZSAyOTggKjx0eXBlIDI5Nj4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jIChzIDx0eXBlIDI5OD4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMjk4PikgLmdvL2FzdC5zdG10Tm9kZSAoKTsKPjsKdHlwZSA8dHlwZSAyOTkgIlNsaWNlRXhwciIgPHR5cGUgMzAwIHN0cnVjdCB7IFggPHR5cGUgND47IExicmFjayA8dHlwZSAzPjsgTG93IDx0eXBlIDQ+OyBIaWdoIDx0eXBlIDQ+OyBNYXggPHR5cGUgND47IFNsaWNlMyA8dHlwZSAtMTU+OyBSYnJhY2sgPHR5cGUgMz47IH0+CiBmdW5jICh4IDx0eXBlIDMwMSAqPHR5cGUgMjk5Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHggPHR5cGUgMzAxPikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAzMDE+KSAuZ28vYXN0LmV4cHJOb2RlICgpOwo+OwpmdW5jIFNvcnRJbXBvcnRzIChmc2V0IDx0eXBlIDE5Nj4sIGYgPHR5cGUgMTc4Pik7CnR5cGUgPHR5cGUgMjQzPjsKdHlwZSA8dHlwZSAzMDIgIlN0YXJFeHByIiA8dHlwZSAzMDMgc3RydWN0IHsgU3RhciA8dHlwZSAzPjsgWCA8dHlwZSA0PjsgfT4KIGZ1bmMgKHggPHR5cGUgMzA0ICo8dHlwZSAzMDI+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSAzMDQ+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDMwND4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMzQ+Owp0eXBlIDx0eXBlIDMwNSAiU3RydWN0VHlwZSIgPHR5cGUgMzA2IHN0cnVjdCB7IFN0cnVjdCA8dHlwZSAzPjsgRmllbGRzIDx0eXBlIDE1Nz47IEluY29tcGxldGUgPHR5cGUgLTE1PjsgfT4KIGZ1bmMgKHggPHR5cGUgMzA3ICo8dHlwZSAzMDU+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSAzMDc+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDMwNz4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMzA4ICJTd2l0Y2hTdG10IiA8dHlwZSAzMDkgc3RydWN0IHsgU3dpdGNoIDx0eXBlIDM+OyBJbml0IDx0eXBlIDM0PjsgVGFnIDx0eXBlIDQ+OyBCb2R5IDx0eXBlIDM2PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMzEwICo8dHlwZSAzMDg+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAocyA8dHlwZSAzMTA+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDMxMD4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CmNvbnN0IFR5cCA8dHlwZSAxNT4gPSAzIDsKdHlwZSA8dHlwZSAzMTEgIlR5cGVBc3NlcnRFeHByIiA8dHlwZSAzMTIgc3RydWN0IHsgWCA8dHlwZSA0PjsgTHBhcmVuIDx0eXBlIDM+OyBUeXBlIDx0eXBlIDQ+OyBScGFyZW4gPHR5cGUgMz47IH0+CiBmdW5jICh4IDx0eXBlIDMxMyAqPHR5cGUgMzExPj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHggPHR5cGUgMzEzPikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAzMTM+KSAuZ28vYXN0LmV4cHJOb2RlICgpOwo+Owp0eXBlIDx0eXBlIDMxNCAiVHlwZVNwZWMiIDx0eXBlIDMxNSBzdHJ1Y3QgeyBEb2MgPHR5cGUgNzQ+OyBOYW1lIDx0eXBlIDM5PjsgVHlwZSA8dHlwZSA0PjsgQ29tbWVudCA8dHlwZSA3ND47IH0+CiBmdW5jIChzIDx0eXBlIDMxNiAqPHR5cGUgMzE0Pj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHMgPHR5cGUgMzE2PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAzMTY+KSAuZ28vYXN0LnNwZWNOb2RlICgpOwo+Owp0eXBlIDx0eXBlIDMxNyAiVHlwZVN3aXRjaFN0bXQiIDx0eXBlIDMxOCBzdHJ1Y3QgeyBTd2l0Y2ggPHR5cGUgMz47IEluaXQgPHR5cGUgMzQ+OyBBc3NpZ24gPHR5cGUgMzQ+OyBCb2R5IDx0eXBlIDM2PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMzE5ICo8dHlwZSAzMTc+PikgUG9zICgpIDx0eXBlIDM+OwogZnVuYyAocyA8dHlwZSAzMTk+KSBFbmQgKCkgPHR5cGUgMz47CiBmdW5jICg/IDx0eXBlIDMxOT4pIC5nby9hc3Quc3RtdE5vZGUgKCk7Cj47CnR5cGUgPHR5cGUgMzIwICJVbmFyeUV4cHIiIDx0eXBlIDMyMSBzdHJ1Y3QgeyBPcFBvcyA8dHlwZSAzPjsgT3AgPHR5cGUgMTI+OyBYIDx0eXBlIDQ+OyB9PgogZnVuYyAoeCA8dHlwZSAzMjIgKjx0eXBlIDMyMD4+KSBQb3MgKCkgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDMyMj4pIEVuZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKD8gPHR5cGUgMzIyPikgLmdvL2FzdC5leHByTm9kZSAoKTsKPjsKdHlwZSA8dHlwZSAzMjMgIlZhbHVlU3BlYyIgPHR5cGUgMzI0IHN0cnVjdCB7IERvYyA8dHlwZSA3ND47IE5hbWVzIDx0eXBlIDMyNSBbXSA8dHlwZSAzOT4+OyBUeXBlIDx0eXBlIDQ+OyBWYWx1ZXMgPHR5cGUgMzI2IFtdIDx0eXBlIDQ+PjsgQ29tbWVudCA8dHlwZSA3ND47IH0+CiBmdW5jIChzIDx0eXBlIDMyNyAqPHR5cGUgMzIzPj4pIFBvcyAoKSA8dHlwZSAzPjsKIGZ1bmMgKHMgPHR5cGUgMzI3PikgRW5kICgpIDx0eXBlIDM+OwogZnVuYyAoPyA8dHlwZSAzMjc+KSAuZ28vYXN0LnNwZWNOb2RlICgpOwo+Owpjb25zdCBWYXIgPHR5cGUgMTU+ID0gNCA7CnR5cGUgPHR5cGUgMzI4ICJWaXNpdG9yIiA8dHlwZSAzMjkgaW50ZXJmYWNlIHsgVmlzaXQgKG5vZGUgPHR5cGUgNj4pICh3IDx0eXBlIDMyOD4pOyB9Pj47CmZ1bmMgV2FsayAodiA8dHlwZSAzMjg+LCBub2RlIDx0eXBlIDY+KTsKY2hlY2tzdW0gNEM5NzY2RURDRkM0MDVGMTdGMjIzNDE0NDlFNDFFQkU2ODY1MUVFQTsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAABPcwAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAACDcwAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAArHMAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAMxzAAABAAAAAAAAAAAAAAABAAAAAAAAAA==