Li4gU2VxdWVuY2VzL1ZpZXdzLy9maWx0ZXJfdmlldwoKZmlsdGVyX3ZpZXcKPT09PT09PT09PT0KClN5bm9wc2lzCi0tLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHRlbXBsYXRlPAogICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKICAgICAgICAsIHR5cGVuYW1lIFByZWQKICAgICAgICA+CiAgICBzdHJ1Y3QgZmlsdGVyX3ZpZXcKICAgIHsKICAgICAgICAvLyB8dW5zcGVjaWZpZWR8CiAgICAgICAgLy8gfC4uLnwKICAgIH07CgoKCkRlc2NyaXB0aW9uCi0tLS0tLS0tLS0tCgpBIHZpZXcgaW50byBhIHN1YnNldCBvZiBgYFNlcXVlbmNlYGBcICdzIGVsZW1lbnRzIHNhdGlzZnlpbmcgdGhlIHByZWRpY2F0ZSBgYFByZWRgYC4KCgpIZWFkZXIKLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgICNpbmNsdWRlIDxib29zdC9tcGwvZmlsdGVyX3ZpZXcuaHBwPgoKCk1vZGVsIG9mCi0tLS0tLS0tCgoqIHxGb3J3YXJkIFNlcXVlbmNlfAoKClBhcmFtZXRlcnMKLS0tLS0tLS0tLQoKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBQYXJhbWV0ZXIgICAgIHwgUmVxdWlyZW1lbnQgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYFNlcXVlbmNlYGAgIHwgfEZvcndhcmQgU2VxdWVuY2V8ICAgICAgICAgICAgICAgIHwgQSBzZXF1ZW5jZSB0byB3cmFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYFByZWRgYCAgICAgIHwgVW5hcnkgfExhbWJkYSBFeHByZXNzaW9ufCAgICAgICAgIHwgQSBmaWx0ZXJpbmcgcHJlZGljYXRlLiAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKU2VtYW50aWNzIG9mIGFuIGV4cHJlc3Npb24gaXMgZGVmaW5lZCBvbmx5IHdoZXJlIGl0IGRpZmZlcnMgZnJvbSwgb3IgaXMgbm90IApkZWZpbmVkIGluIHxGb3J3YXJkIFNlcXVlbmNlfC4KCkluIHRoZSBmb2xsb3dpbmcgdGFibGUsIGBgdmBgIGlzIGFuIGluc3RhbmNlIG9mIGBgZmlsdGVyX3ZpZXdgYCwgYGBzYGAgaXMgYW4gYXJiaXRyYXJ5IAp8Rm9yd2FyZCBTZXF1ZW5jZXwsIGBgcHJlZGBgIGlzIGFuIHVuYXJ5IHxMYW1iZGEgRXhwcmVzc2lvbnwuCgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IEV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTZW1hbnRpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IC4uIHBhcnNlZC1saXRlcmFsOjogICAgICAgICAgICAgICAgICAgfCBBIGxhenkgfEZvcndhcmQgU2VxdWVuY2V8IHNlcXVlbmNlIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgcmFuZ2UgfGJlZ2luL2VuZDxzPnwgdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgICAgICAgfAp8ICAgIGZpbHRlcl92aWV3PHMscHJlZD4gICAgICAgICAgICAgICAgfCBgYHByZWRgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgIGZpbHRlcl92aWV3PHMscHJlZD46OnR5cGUgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IGBgc2l6ZTx2Pjo6dHlwZWBgICAgICAgICAgICAgICAgICAgICAgfCBUaGUgc2l6ZSBvZiBgYHZgYDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNpemU8dj46OnZhbHVlID09IGNvdW50X2lmPHMscHJlZD46OnZhbHVlYGA7ICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsaW5lYXIgY29tcGxleGl0eTsgc2VlIHxGb3J3YXJkIFNlcXVlbmNlfC4gICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKCkV4YW1wbGUKLS0tLS0tLQoKRmluZCB0aGUgbGFyZ2VzdCBmbG9hdGluZyB0eXBlIGluIGEgc2VxdWVuY2UuCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHR5cGVkZWYgdmVjdG9yPGludCxmbG9hdCxsb25nLGZsb2F0LGNoYXJbNTBdLGxvbmcgZG91YmxlLGNoYXI+IHR5cGVzOwogICAgdHlwZWRlZiBtYXhfZWxlbWVudDwKICAgICAgICAgIHRyYW5zZm9ybV92aWV3PCBmaWx0ZXJfdmlldzwgdHlwZXMsYm9vc3Q6OmlzX2Zsb2F0PF8+ID4sIHNpemVfb2Y8Xz4gPgogICAgICAgID46OnR5cGUgaXRlcjsKICAgIAogICAgQk9PU1RfTVBMX0FTU0VSVCgoIGlzX3NhbWU8IGRlcmVmPGl0ZXI6OmJhc2U+Ojp0eXBlLCBsb25nIGRvdWJsZSA+ICkpOwoKClNlZSBhbHNvCi0tLS0tLS0tCgp8U2VxdWVuY2VzfCwgfFZpZXdzfCwgfHRyYW5zZm9ybV92aWV3fCwgfGpvaW50X3ZpZXd8LCB8emlwX3ZpZXd8LCB8aXRlcmF0b3JfcmFuZ2V8CgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=