f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAD4DwAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHJ1bnRpbWU7CnBrZ3BhdGggcnVudGltZTsKcHJpb3JpdHkgMTsKaW1wb3J0IHVuc2FmZSB1bnNhZmUgInVuc2FmZSI7CmluaXQgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMTsKZnVuYyBCbG9ja1Byb2ZpbGUgKHAgPHR5cGUgMSBbXSA8dHlwZSAyICJCbG9ja1Byb2ZpbGVSZWNvcmQiIDx0eXBlIDMgc3RydWN0IHsgQ291bnQgPHR5cGUgLTQ+OyBDeWNsZXMgPHR5cGUgLTQ+OyA/IDx0eXBlIDQgIlN0YWNrUmVjb3JkIiA8dHlwZSA1IHN0cnVjdCB7IFN0YWNrMCA8dHlwZSA2IFszMiBdIDx0eXBlIC0xMz4+OyB9PgogZnVuYyAociA8dHlwZSA3ICo8dHlwZSA0Pj4pIFN0YWNrICgpIDx0eXBlIDggW10gPHR5cGUgLTEzPj47Cj47IH0+Pj4pIChuIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOwp0eXBlIDx0eXBlIDI+OwpmdW5jIEJyZWFrcG9pbnQgKCk7CmZ1bmMgQ1BVUHJvZmlsZSAoKSA8dHlwZSA5IFtdIDx0eXBlIC0yMD4+OwpmdW5jIENhbGxlciAoc2tpcCA8dHlwZSAtMTE+KSAocGMgPHR5cGUgLTEzPiwgZmlsZSA8dHlwZSAtMTY+LCBsaW5lIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOwpmdW5jIENhbGxlcnMgKHNraXAgPHR5cGUgLTExPiwgcGMgPHR5cGUgMTAgW10gPHR5cGUgLTEzPj4pIDx0eXBlIC0xMT47CmNvbnN0IENvbXBpbGVyID0gImdjY2dvIjsKdHlwZSA8dHlwZSAxMSAiRXJyb3IiIDx0eXBlIDEyIGludGVyZmFjZSB7ID8gPHR5cGUgLTE5PjsgUnVudGltZUVycm9yICgpOyB9Pj47CmZ1bmMgRmllbGR0cmFjayAoPyA8dHlwZSAxMyBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC0xNT4+KTsKdHlwZSA8dHlwZSAxNCAiRnVuYyIgPHR5cGUgMTUgc3RydWN0IHsgLnJ1bnRpbWUub3BhcXVlIDx0eXBlIDE2IHN0cnVjdCB7IH0+OyB9PgogZnVuYyAoZiA8dHlwZSAxNyAqPHR5cGUgMTQ+PikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZiA8dHlwZSAxNz4pIEVudHJ5ICgpIDx0eXBlIC0xMz47CiBmdW5jIChmIDx0eXBlIDE3PikgRmlsZUxpbmUgKHBjIDx0eXBlIC0xMz4pIChmaWxlIDx0eXBlIC0xNj4sIGxpbmUgPHR5cGUgLTExPik7Cj47CmZ1bmMgRnVuY0ZvclBDIChwYyA8dHlwZSAtMTM+KSA8dHlwZSAxNz47CmZ1bmMgR0MgKCk7CmNvbnN0IEdDQ0dPVE9PTERJUiA8dHlwZSAtMTY+ID0gIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvc21jZ3J1ZXIvRGVza3RvcC9idWlsZHJvb3Qvb3V0cHV0L2hvc3QvdXNyL2xpYmV4ZWMvZ2NjL21pcHNlbC1idWlsZHJvb3QtbGludXgtdWNsaWJjLzUuMy4wIjsKY29uc3QgR09BUkNIIDx0eXBlIC0xNj4gPSAibWlwc28zMiI7CmZ1bmMgR09NQVhQUk9DUyAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+Owpjb25zdCBHT09TIDx0eXBlIC0xNj4gPSAibGludXgiOwpmdW5jIEdPUk9PVCAoKSA8dHlwZSAtMTY+OwpmdW5jIEdvZXhpdCAoKTsKZnVuYyBHb3JvdXRpbmVQcm9maWxlIChwIDx0eXBlIDE4IFtdIDx0eXBlIDQ+PikgKG4gPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7CmZ1bmMgR29zY2hlZCAoKTsKZnVuYyBMb2NrT1NUaHJlYWQgKCk7CmZ1bmMgTWVtUHJvZmlsZSAocCA8dHlwZSAxOSBbXSA8dHlwZSAyMCAiTWVtUHJvZmlsZVJlY29yZCIgPHR5cGUgMjEgc3RydWN0IHsgQWxsb2NCeXRlcyA8dHlwZSAtND47IEZyZWVCeXRlcyA8dHlwZSAtND47IEFsbG9jT2JqZWN0cyA8dHlwZSAtND47IEZyZWVPYmplY3RzIDx0eXBlIC00PjsgU3RhY2swIDx0eXBlIDIyIFszMiBdIDx0eXBlIC0xMz4+OyB9PgogZnVuYyAociA8dHlwZSAyMyAqPHR5cGUgMjA+PikgSW5Vc2VCeXRlcyAoKSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDIzPikgSW5Vc2VPYmplY3RzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMjM+KSBTdGFjayAoKSA8dHlwZSAyNCBbXSA8dHlwZSAtMTM+PjsKPj4sIGludXNlWmVybyA8dHlwZSAtMTU+KSAobiA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsKdmFyIE1lbVByb2ZpbGVSYXRlIDx0eXBlIC0xMT47CnR5cGUgPHR5cGUgMjA+Owp0eXBlIDx0eXBlIDI1ICJNZW1TdGF0cyIgPHR5cGUgMjYgc3RydWN0IHsgQWxsb2MgPHR5cGUgLTg+OyBUb3RhbEFsbG9jIDx0eXBlIC04PjsgU3lzIDx0eXBlIC04PjsgTG9va3VwcyA8dHlwZSAtOD47IE1hbGxvY3MgPHR5cGUgLTg+OyBGcmVlcyA8dHlwZSAtOD47IEhlYXBBbGxvYyA8dHlwZSAtOD47IEhlYXBTeXMgPHR5cGUgLTg+OyBIZWFwSWRsZSA8dHlwZSAtOD47IEhlYXBJbnVzZSA8dHlwZSAtOD47IEhlYXBSZWxlYXNlZCA8dHlwZSAtOD47IEhlYXBPYmplY3RzIDx0eXBlIC04PjsgU3RhY2tJbnVzZSA8dHlwZSAtOD47IFN0YWNrU3lzIDx0eXBlIC04PjsgTVNwYW5JbnVzZSA8dHlwZSAtOD47IE1TcGFuU3lzIDx0eXBlIC04PjsgTUNhY2hlSW51c2UgPHR5cGUgLTg+OyBNQ2FjaGVTeXMgPHR5cGUgLTg+OyBCdWNrSGFzaFN5cyA8dHlwZSAtOD47IEdDU3lzIDx0eXBlIC04PjsgT3RoZXJTeXMgPHR5cGUgLTg+OyBOZXh0R0MgPHR5cGUgLTg+OyBMYXN0R0MgPHR5cGUgLTg+OyBQYXVzZVRvdGFsTnMgPHR5cGUgLTg+OyBQYXVzZU5zIDx0eXBlIDI3IFsyNTYgXSA8dHlwZSAtOD4+OyBOdW1HQyA8dHlwZSAtNz47IEVuYWJsZUdDIDx0eXBlIC0xNT47IERlYnVnR0MgPHR5cGUgLTE1PjsgQnlTaXplIDx0eXBlIDI4IFs2MSBdIDx0eXBlIDI5IHN0cnVjdCB7IFNpemUgPHR5cGUgLTc+OyBNYWxsb2NzIDx0eXBlIC04PjsgRnJlZXMgPHR5cGUgLTg+OyB9Pj47IH0+PjsKZnVuYyBOZXdFcnJvckNTdHJpbmcgKHMgPHR5cGUgLTEzPiwgcmV0IDx0eXBlIDMwICo8dHlwZSAzMSBpbnRlcmZhY2UgeyB9Pj4pOwpmdW5jIE5ld0Vycm9yU3RyaW5nIChzIDx0eXBlIC0xNj4sIHJldCA8dHlwZSAzMiAqPHR5cGUgMzMgaW50ZXJmYWNlIHsgfT4+KTsKZnVuYyBOZXdUeXBlQXNzZXJ0aW9uRXJyb3IgKHBzMSA8dHlwZSAzNCAqPHR5cGUgLTE2Pj4sIHBzMiA8dHlwZSAzND4sIHBzMyA8dHlwZSAzND4sIHBtZXRoIDx0eXBlIDM1ICo8dHlwZSAtMTY+PiwgcmV0IDx0eXBlIDM2ICo8dHlwZSAzNyBpbnRlcmZhY2UgeyB9Pj4pOwpmdW5jIE51bUNQVSAoKSA8dHlwZSAtMTE+OwpmdW5jIE51bUNnb0NhbGwgKCkgPHR5cGUgLTQ+OwpmdW5jIE51bUdvcm91dGluZSAoKSA8dHlwZSAtMTE+OwpmdW5jIFByaW50YW55IChpIDx0eXBlIDM4IGludGVyZmFjZSB7IH0+KTsKZnVuYyBSZWFkTWVtU3RhdHMgKG0gPHR5cGUgMzkgKjx0eXBlIDI1Pj4pOwpmdW5jIFNldEJsb2NrUHJvZmlsZVJhdGUgKHJhdGUgPHR5cGUgLTExPik7CmZ1bmMgU2V0Q1BVUHJvZmlsZVJhdGUgKGh6IDx0eXBlIC0xMT4pOwpmdW5jIFNldEZpbmFsaXplciAoeCA8dHlwZSA0MCBpbnRlcmZhY2UgeyB9PiwgZiA8dHlwZSA0MD4pOwp2YXIgU2l6ZW9mX0NfTVN0YXRzIDx0eXBlIC0xMz47CmZ1bmMgU3RhY2sgKGJ1ZiA8dHlwZSA0MSBbXSA8dHlwZSAtMjA+PiwgYWxsIDx0eXBlIC0xNT4pIDx0eXBlIC0xMT47CnR5cGUgPHR5cGUgND47CmZ1bmMgVGhyZWFkQ3JlYXRlUHJvZmlsZSAocCA8dHlwZSA0MiBbXSA8dHlwZSA0Pj4pIChuIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOwp0eXBlIDx0eXBlIDQzICJUeXBlQXNzZXJ0aW9uRXJyb3IiIDx0eXBlIDQ0IHN0cnVjdCB7IC5ydW50aW1lLmludGVyZmFjZVN0cmluZyA8dHlwZSAtMTY+OyAucnVudGltZS5jb25jcmV0ZVN0cmluZyA8dHlwZSAtMTY+OyAucnVudGltZS5hc3NlcnRlZFN0cmluZyA8dHlwZSAtMTY+OyAucnVudGltZS5taXNzaW5nTWV0aG9kIDx0eXBlIC0xNj47IH0+CiBmdW5jICg/IDx0eXBlIDQ1ICo8dHlwZSA0Mz4+KSBSdW50aW1lRXJyb3IgKCk7CiBmdW5jIChlIDx0eXBlIDQ1PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKZnVuYyBVbmxvY2tPU1RocmVhZCAoKTsKZnVuYyBWZXJzaW9uICgpIDx0eXBlIC0xNj47CmNoZWNrc3VtIDgyQUU2RkE2MUI0QzZBRTMxRkQ2RDc2MUIyMDlBMzAxQTVCOERGMDM7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAAB4DwAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAACsDwAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAA1A8AACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAPQPAAABAAAAAAAAAAAAAAABAAAAAAAAAA==