Ly8gUlVOOiAlY2xhbmdfY2MxIC10cmlwbGUgaTM4Ni11bmtub3duLXVua25vd24gLWVtaXQtbGx2bSAlcyAtbyAtIHwgRmlsZUNoZWNrIC1jaGVjay1wcmVmaXg9Q0hFQ0stQyAlcwovLyBSVU46ICVjbGFuZ19jYzEgLXggYysrIC1zdGQ9YysrMHggLXRyaXBsZSBpMzg2LXVua25vd24tdW5rbm93biAtZW1pdC1sbHZtICVzIC1vIC0gfCBGaWxlQ2hlY2sgLWNoZWNrLXByZWZpeD1DSEVDSy1DUFAwWCAlcwovLyBSVU46ICVjbGFuZ19jYzEgLXggYysrIC1zdGQ9YysrMHggLWZ3Y2hhci10eXBlPXNob3J0IC1mbm8tc2lnbmVkLXdjaGFyIC10cmlwbGUgaTM4Ni11bmtub3duLXVua25vd24gLWVtaXQtbGx2bSAlcyAtbyAtIHwgRmlsZUNoZWNrIC1jaGVjay1wcmVmaXg9Q0hFQ0stU0hPUlRXQ0hBUiAlcwoKLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgbWl4IG9mIElTTy04ODU5LTEgYW5kIFVURi04IGVuY29kZWQgZGF0YS4KLy8gdGhlIGxpdGVyYWwgYXNzaWduZWQgdG8gJ2FhJyBzaG91bGQgYmUgdGhlIElTTy04ODU5LTEgZW5jb2RpbmcgZm9yIHRoZSBjb2RlCi8vIHBvaW50cyBVKzAwQzAgVSswMEU5IFUrMDBFRSBVKzAwRjUgVSswMEZDCgovLyBUaGUgcmVzdCBvZiB0aGUgbGl0ZXJhbHMgc2hvdWxkIGNvbnRhaW4gdGhlIFVURi04IGVuY29kaW5nIGZvciBVKzA0MUEgVSswNDNFCi8vIFUrMDQ0OCBVKzA0M0EgVSswNDMwCgojaWZuZGVmIF9fY3BsdXNwbHVzCiNpbmNsdWRlIDxzdGRkZWYuaD4KI2VuZGlmCgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIgojZW5kaWYKdm9pZCBmKCkgewogIC8vIENIRUNLLUM6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs2IHggaThdIGMiXEMwXEU5XEVFXEY1XEZDXDAwIiwgYWxpZ24gMQogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNiB4IGk4XSBjIlxDMFxFOVxFRVxGNVxGQ1wwMCIsIGFsaWduIDEKICBjaGFyIGNvbnN0ICphYSA9ICLA6e71/CI7CiAgCiAgLy8gQ0hFQ0stQzogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzExIHggaThdIGMiXEQwXDlBXEQwXEJFXEQxXDg4XEQwXEJBXEQwXEIwXDAwIiwgYWxpZ24gMQogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbMTEgeCBpOF0gYyJcRDBcOUFcRDBcQkVcRDFcODhcRDBcQkFcRDBcQjBcMDAiLCBhbGlnbiAxCiAgY2hhciBjb25zdCAqYSA9ICLQmtC+0YjQutCwIjsKICAKICAvLyBDSEVDSy1DOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNiB4IGkzMl0gW2kzMiAxMDUwLCBpMzIgMTA4NiwgaTMyIDEwOTYsIGkzMiAxMDgyLCBpMzIgMTA3MiwgaTMyIDBdLCBhbGlnbiA0CiAgLy8gQ0hFQ0stU0hPUlRXQ0hBUjogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzYgeCBpMTZdIFtpMTYgMTA1MCwgaTE2IDEwODYsIGkxNiAxMDk2LCBpMTYgMTA4MiwgaTE2IDEwNzIsIGkxNiAwXSwgYWxpZ24gMgogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbNiB4IGkzMl0gW2kzMiAxMDUwLCBpMzIgMTA4NiwgaTMyIDEwOTYsIGkzMiAxMDgyLCBpMzIgMTA3MiwgaTMyIDBdLCBhbGlnbiA0CiAgd2NoYXJfdCBjb25zdCAqYiA9IEwi0JrQvtGI0LrQsCI7CgogIC8vIENIRUNLLUM6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs0IHggaTMyXSBbaTMyIDIwMzIwLCBpMzIgMjI5MDksIGkzMiA2NjMwNCwgaTMyIDBdLCBhbGlnbiA0CiAgLy8gQ0hFQ0stQ1BQMFg6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs0IHggaTMyXSBbaTMyIDIwMzIwLCBpMzIgMjI5MDksIGkzMiA2NjMwNCwgaTMyIDBdLCBhbGlnbiA0CiNpZiBfX1dDSEFSX01BWF9fID09IDIxNDc0ODM2NDcKICB3Y2hhcl90IGNvbnN0ICpiMiA9IEwiXHg0ZjYwXHg1OTdkXHgxMDMwMCI7CiNlbmRpZgoKI2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wKICAKICAvLyBDSEVDSy1DUFAwWDogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzEyIHggaThdIGMiMVxEMFw5QVxEMFxCRVxEMVw4OFxEMFxCQVxEMFxCMFwwMCIsIGFsaWduIDEKICBjaGFyIGNvbnN0ICpjID0gdTgiMdCa0L7RiNC60LAiOwogICAgCiAgLy8gQ0hFQ0stQ1BQMFg6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs3IHggaTE2XSBbaTE2IDUwLCBpMTYgMTA1MCwgaTE2IDEwODYsIGkxNiAxMDk2LCBpMTYgMTA4MiwgaTE2IDEwNzIsIGkxNiAwXSwgYWxpZ24gMgogIGNoYXIxNl90IGNvbnN0ICplID0gdSIy0JrQvtGI0LrQsCI7CiAgCiAgLy8gQ0hFQ0stQ1BQMFg6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs3IHggaTMyXSBbaTMyIDUxLCBpMzIgMTA1MCwgaTMyIDEwODYsIGkzMiAxMDk2LCBpMzIgMTA4MiwgaTMyIDEwNzIsIGkzMiAwXSwgYWxpZ24gNAogIGNoYXIzMl90IGNvbnN0ICpmID0gVSIz0JrQvtGI0LrQsCI7CgogIC8vIENIRUNLLUNQUDBYOiBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbMTIgeCBpOF0gYyI0XEQwXDlBXEQwXEJFXEQxXDg4XEQwXEJBXEQwXEIwXDAwIiwgYWxpZ24gMQogIGNoYXIgY29uc3QgKmQgPSB1OFIiKDTQmtC+0YjQutCwKSI7CiAgCiAgLy8gQ0hFQ0stQ1BQMFg6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs3IHggaTE2XSBbaTE2IDUzLCBpMTYgMTA1MCwgaTE2IDEwODYsIGkxNiAxMDk2LCBpMTYgMTA4MiwgaTE2IDEwNzIsIGkxNiAwXSwgYWxpZ24gMgogIGNoYXIxNl90IGNvbnN0ICpnID0gdVIiKDXQmtC+0YjQutCwKSI7CiAgCiAgLy8gQ0hFQ0stQ1BQMFg6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs3IHggaTMyXSBbaTMyIDU0LCBpMzIgMTA1MCwgaTMyIDEwODYsIGkzMiAxMDk2LCBpMzIgMTA4MiwgaTMyIDEwNzIsIGkzMiAwXSwgYWxpZ24gNAogIGNoYXIzMl90IGNvbnN0ICpoID0gVVIiKDbQmtC+0YjQutCwKSI7CiAgCiAgLy8gQ0hFQ0stU0hPUlRXQ0hBUjogcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzcgeCBpMTZdIFtpMTYgNTUsIGkxNiAxMDUwLCBpMTYgMTA4NiwgaTE2IDEwOTYsIGkxNiAxMDgyLCBpMTYgMTA3MiwgaTE2IDBdLCBhbGlnbiAyCiAgLy8gQ0hFQ0stQ1BQMFg6IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs3IHggaTMyXSBbaTMyIDU1LCBpMzIgMTA1MCwgaTMyIDEwODYsIGkzMiAxMDk2LCBpMzIgMTA4MiwgaTMyIDEwNzIsIGkzMiAwXSwgYWxpZ24gNAogIHdjaGFyX3QgY29uc3QgKmkgPSBMUiIoN9Ca0L7RiNC60LApIjsKICAKI2VuZGlmCn0K