f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABoFAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHNjYW5uZXI7CnBrZ3BhdGggdGV4dC9zY2FubmVyOwpwcmlvcml0eSA3OwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgb3Mgb3MgIm9zIjsKaW1wb3J0IHVuaWNvZGUgdW5pY29kZSAidW5pY29kZSI7CmltcG9ydCB1dGY4IHVuaWNvZGUvdXRmOCAidW5pY29kZS91dGY4IjsKaW5pdCBzY2FubmVyIHRleHRfc2Nhbm5lci4uaW1wb3J0IDcgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgb3Mgb3MuLmltcG9ydCA1IGZtdCBmbXQuLmltcG9ydCA2Owpjb25zdCBDaGFyID0gLTUgOwpjb25zdCBDb21tZW50ID0gLTggOwpjb25zdCBFT0YgPSAtMSA7CmNvbnN0IEZsb2F0ID0gLTQgOwpjb25zdCBHb1Rva2VucyA9IDEwMTIgOwpjb25zdCBHb1doaXRlc3BhY2UgPSA0Mjk0OTc3MDI0IDsKY29uc3QgSWRlbnQgPSAtMiA7CmNvbnN0IEludCA9IC0zIDsKdHlwZSA8dHlwZSAxICJQb3NpdGlvbiIgPHR5cGUgMiBzdHJ1Y3QgeyBGaWxlbmFtZSA8dHlwZSAtMTY+OyBPZmZzZXQgPHR5cGUgLTExPjsgTGluZSA8dHlwZSAtMTE+OyBDb2x1bW4gPHR5cGUgLTExPjsgfT4KIGZ1bmMgKHBvcyA8dHlwZSAzICo8dHlwZSAxPj4pIElzVmFsaWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHBvcyA8dHlwZSAxPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CmNvbnN0IFJhd1N0cmluZyA9IC03IDsKY29uc3QgU2NhbkNoYXJzID0gMzIgOwpjb25zdCBTY2FuQ29tbWVudHMgPSAyNTYgOwpjb25zdCBTY2FuRmxvYXRzID0gMTYgOwpjb25zdCBTY2FuSWRlbnRzID0gNCA7CmNvbnN0IFNjYW5JbnRzID0gOCA7CmNvbnN0IFNjYW5SYXdTdHJpbmdzID0gMTI4IDsKY29uc3QgU2NhblN0cmluZ3MgPSA2NCA7CnR5cGUgPHR5cGUgNCAiU2Nhbm5lciIgPHR5cGUgNSBzdHJ1Y3QgeyAudGV4dC9zY2FubmVyLnNyYyA8dHlwZSA2ICJpby5SZWFkZXIiIDx0eXBlIDcgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSA4IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgLnRleHQvc2Nhbm5lci5zcmNCdWYgPHR5cGUgOSBbMTAyNSBdIDx0eXBlIC0yMD4+OyAudGV4dC9zY2FubmVyLnNyY1BvcyA8dHlwZSAtMTE+OyAudGV4dC9zY2FubmVyLnNyY0VuZCA8dHlwZSAtMTE+OyAudGV4dC9zY2FubmVyLnNyY0J1Zk9mZnNldCA8dHlwZSAtMTE+OyAudGV4dC9zY2FubmVyLmxpbmUgPHR5cGUgLTExPjsgLnRleHQvc2Nhbm5lci5jb2x1bW4gPHR5cGUgLTExPjsgLnRleHQvc2Nhbm5lci5sYXN0TGluZUxlbiA8dHlwZSAtMTE+OyAudGV4dC9zY2FubmVyLmxhc3RDaGFyTGVuIDx0eXBlIC0xMT47IC50ZXh0L3NjYW5uZXIudG9rQnVmIDx0eXBlIDEwICJieXRlcy5CdWZmZXIiIDx0eXBlIDExIHN0cnVjdCB7IC5ieXRlcy5idWYgPHR5cGUgMTIgW10gPHR5cGUgLTIwPj47IC5ieXRlcy5vZmYgPHR5cGUgLTExPjsgLmJ5dGVzLnJ1bmVCeXRlcyA8dHlwZSAxMyBbNCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMuYm9vdHN0cmFwIDx0eXBlIDE0IFs2NCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMubGFzdFJlYWQgPHR5cGUgMTUgIi5ieXRlcy5yZWFkT3AiIDx0eXBlIC0xMT4+OyB9PgogZnVuYyAoYiA8dHlwZSAxNiAqPHR5cGUgMTA+PikgVW5yZWFkQnl0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAxNj4pIFRydW5jYXRlIChuIDx0eXBlIC0xMT4pOwogZnVuYyAoYiA8dHlwZSAxNj4pIFdyaXRlU3RyaW5nIChzIDx0eXBlIC0xNj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTY+KSBSZWFkU3RyaW5nIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAtMTY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDE2PikgUmVhZEJ5dGUgKCkgKGMgPHR5cGUgLTIwPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAxNj4pIE5leHQgKG4gPHR5cGUgLTExPikgPHR5cGUgMTcgW10gPHR5cGUgLTIwPj47CiBmdW5jIChiIDx0eXBlIDE2PikgV3JpdGVSdW5lIChyIDx0eXBlIC0yMT4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGIgPHR5cGUgMTY+KSBXcml0ZVRvICh3IDx0eXBlIDE4ICJpby5Xcml0ZXIiIDx0eXBlIDE5IGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDIwIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PikgKG4gPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDE2PikgUmVhZEJ5dGVzIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAyMSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAxNj4pIC5ieXRlcy5ncm93IChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDE2PikgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDE2PikgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAxNj4pIFJlYWQgKHAgPHR5cGUgMjIgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTY+KSBSZXNldCAoKTsKIGZ1bmMgKGIgPHR5cGUgMTY+KSAuYnl0ZXMucmVhZFNsaWNlIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAyMyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAxNj4pIFdyaXRlQnl0ZSAoYyA8dHlwZSAtMjA+KSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAxNj4pIFdyaXRlIChwIDx0eXBlIDI0IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDE2PikgUmVhZEZyb20gKHIgPHR5cGUgNj4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAxNj4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAxNj4pIEdyb3cgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDE2PikgQnl0ZXMgKCkgPHR5cGUgMjUgW10gPHR5cGUgLTIwPj47Cj47IC50ZXh0L3NjYW5uZXIudG9rUG9zIDx0eXBlIC0xMT47IC50ZXh0L3NjYW5uZXIudG9rRW5kIDx0eXBlIC0xMT47IC50ZXh0L3NjYW5uZXIuY2ggPHR5cGUgLTIxPjsgRXJyb3IgPHR5cGUgMjYgKHMgPHR5cGUgMjcgKjx0eXBlIDQ+PiwgbXNnIDx0eXBlIC0xNj4pPjsgRXJyb3JDb3VudCA8dHlwZSAtMTE+OyBNb2RlIDx0eXBlIC0xMj47IFdoaXRlc3BhY2UgPHR5cGUgLTg+OyBJc0lkZW50UnVuZSA8dHlwZSAyOCAoY2ggPHR5cGUgLTIxPiwgaSA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+PjsgPyA8dHlwZSAxPjsgfT4KIGZ1bmMgKHMgPHR5cGUgMjkgKjx0eXBlIDQ+PikgSW5pdCAoc3JjIDx0eXBlIDY+KSA8dHlwZSAyOT47CiBmdW5jIChzIDx0eXBlIDI5PikgLnRleHQvc2Nhbm5lci5uZXh0ICgpIDx0eXBlIC0yMT47CiBmdW5jIChzIDx0eXBlIDI5PikgTmV4dCAoKSA8dHlwZSAtMjE+OwogZnVuYyAocyA8dHlwZSAyOT4pIFBlZWsgKCkgPHR5cGUgLTIxPjsKIGZ1bmMgKHMgPHR5cGUgMjk+KSAudGV4dC9zY2FubmVyLmVycm9yIChtc2cgPHR5cGUgLTE2Pik7CiBmdW5jIChzIDx0eXBlIDI5PikgLnRleHQvc2Nhbm5lci5pc0lkZW50UnVuZSAoY2ggPHR5cGUgLTIxPiwgaSA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocyA8dHlwZSAyOT4pIC50ZXh0L3NjYW5uZXIuc2NhbklkZW50aWZpZXIgKCkgPHR5cGUgLTIxPjsKIGZ1bmMgKHMgPHR5cGUgMjk+KSAudGV4dC9zY2FubmVyLnNjYW5NYW50aXNzYSAoY2ggPHR5cGUgLTIxPikgPHR5cGUgLTIxPjsKIGZ1bmMgKHMgPHR5cGUgMjk+KSAudGV4dC9zY2FubmVyLnNjYW5GcmFjdGlvbiAoY2ggPHR5cGUgLTIxPikgPHR5cGUgLTIxPjsKIGZ1bmMgKHMgPHR5cGUgMjk+KSAudGV4dC9zY2FubmVyLnNjYW5FeHBvbmVudCAoY2ggPHR5cGUgLTIxPikgPHR5cGUgLTIxPjsKIGZ1bmMgKHMgPHR5cGUgMjk+KSAudGV4dC9zY2FubmVyLnNjYW5OdW1iZXIgKGNoIDx0eXBlIC0yMT4pICg/IDx0eXBlIC0yMT4sID8gPHR5cGUgLTIxPik7CiBmdW5jIChzIDx0eXBlIDI5PikgLnRleHQvc2Nhbm5lci5zY2FuRGlnaXRzIChjaCA8dHlwZSAtMjE+LCBiYXNlIDx0eXBlIC0xMT4sIG4gPHR5cGUgLTExPikgPHR5cGUgLTIxPjsKIGZ1bmMgKHMgPHR5cGUgMjk+KSAudGV4dC9zY2FubmVyLnNjYW5Fc2NhcGUgKHF1b3RlIDx0eXBlIC0yMT4pIDx0eXBlIC0yMT47CiBmdW5jIChzIDx0eXBlIDI5PikgLnRleHQvc2Nhbm5lci5zY2FuU3RyaW5nIChxdW90ZSA8dHlwZSAtMjE+KSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKHMgPHR5cGUgMjk+KSAudGV4dC9zY2FubmVyLnNjYW5SYXdTdHJpbmcgKCk7CiBmdW5jIChzIDx0eXBlIDI5PikgLnRleHQvc2Nhbm5lci5zY2FuQ2hhciAoKTsKIGZ1bmMgKHMgPHR5cGUgMjk+KSAudGV4dC9zY2FubmVyLnNjYW5Db21tZW50IChjaCA8dHlwZSAtMjE+KSA8dHlwZSAtMjE+OwogZnVuYyAocyA8dHlwZSAyOT4pIFNjYW4gKCkgPHR5cGUgLTIxPjsKIGZ1bmMgKHMgPHR5cGUgMjk+KSBQb3MgKCkgKHBvcyA8dHlwZSAxPik7CiBmdW5jIChzIDx0eXBlIDI5PikgVG9rZW5UZXh0ICgpIDx0eXBlIC0xNj47Cj47CmNvbnN0IFNraXBDb21tZW50cyA9IDUxMiA7CmNvbnN0IFN0cmluZyA9IC02IDsKZnVuYyBUb2tlblN0cmluZyAodG9rIDx0eXBlIC0yMT4pIDx0eXBlIC0xNj47CmNoZWNrc3VtIDM5RDdFQTAwM0RFMEJGQTk1NDlGQzc1OEE1QkM1NDkyOTg5MDJDNzc7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAOkTAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAB0UAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAABEFAAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAZBQAAAEAAAAAAAAAAAAAAAEAAAAAAAAA