Li4gU2VxdWVuY2VzL1ZpZXdzLy90cmFuc2Zvcm1fdmlldwoKdHJhbnNmb3JtX3ZpZXcKPT09PT09PT09PT09PT0KClN5bm9wc2lzCi0tLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHRlbXBsYXRlPAogICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKICAgICAgICAsIHR5cGVuYW1lIEYKICAgICAgICA+CiAgICBzdHJ1Y3QgdHJhbnNmb3JtX3ZpZXcKICAgIHsKICAgICAgICAvLyB8dW5zcGVjaWZpZWR8CiAgICAgICAgLy8gfC4uLnwKICAgIH07CgoKRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0KCkEgdmlldyB0aGUgZnVsbCByYW5nZSBvZiBgYFNlcXVlbmNlYGBcICdzIHRyYW5zZm9ybWVkIGVsZW1lbnRzLgoKCkhlYWRlcgotLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgI2luY2x1ZGUgPGJvb3N0L21wbC90cmFuc2Zvcm1fdmlldy5ocHA+CgoKTW9kZWwgb2YKLS0tLS0tLS0KCiogfEZvcndhcmQgU2VxdWVuY2V8CgoKUGFyYW1ldGVycwotLS0tLS0tLS0tCgorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBQYXJhbWV0ZXIgICAgIHwgUmVxdWlyZW1lbnQgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IGBgU2VxdWVuY2VgYCAgfCB8Rm9yd2FyZCBTZXF1ZW5jZXwgICAgICAgICAgICB8IEEgc2VxdWVuY2UgdG8gd3JhcC4gICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBGYGAgICAgICAgICB8IFVuYXJ5IHxMYW1iZGEgRXhwcmVzc2lvbnwgICAgIHwgQSB0cmFuc2Zvcm1hdGlvbi4gICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKfFNlbWFudGljcyBkaXNjbGFpbWVyLi4ufCB8Rm9yd2FyZCBTZXF1ZW5jZXwuCgpJbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBgYHZgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYHRyYW5zZm9ybV92aWV3YGAsIGBgc2BgIGlzIGFuIGFyYml0cmFyeSAKfEZvcndhcmQgU2VxdWVuY2V8LCBhbmQgYGBmYGAgaXMgYW4gdW5hcnkgfExhbWJkYSBFeHByZXNzaW9ufC4KCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgfCBTZW1hbnRpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCnwgLi4gcGFyc2VkLWxpdGVyYWw6OiAgICAgICAgICAgICAgIHwgQSBsYXp5IHxGb3J3YXJkIFNlcXVlbmNlfCBzdWNoIHRoYXQgZm9yIGVhY2ggYGBpYGAgaW4gdGhlIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByYW5nZSB8YmVnaW4vZW5kPHY+fCBhbmQgZWFjaCBgYGpgYCBpbiBmb3IgaW4gdGhlIHJhbmdlICAgfAp8ICAgIHRyYW5zZm9ybV92aWV3PHMsZj4gICAgICAgICAgICB8IHxiZWdpbi9lbmQ8cz58IGBgZGVyZWY8aT46OnR5cGVgYCBpcyBpZGVudGljYWwgdG8gICAgICAgICB8CnwgICAgdHJhbnNmb3JtX3ZpZXc8cyxmPjo6dHlwZSAgICAgIHwgYGBhcHBseTwgZiwgZGVyZWY8aj46OnR5cGUgPjo6dHlwZWBgLiAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IGBgc2l6ZTx2Pjo6dHlwZWBgICAgICAgICAgICAgICAgICB8IFRoZSBzaXplIG9mIGBgdmBgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzaXplPHY+Ojp2YWx1ZSA9PSBzaXplPHM+Ojp2YWx1ZWBgOyAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsaW5lYXIgY29tcGxleGl0eTsgc2VlIHxGb3J3YXJkIFNlcXVlbmNlfC4gICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKRXhhbXBsZQotLS0tLS0tCgpGaW5kIHRoZSBsYXJnZXN0IHR5cGUgaW4gYSBzZXF1ZW5jZS4KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgdHlwZWRlZiB2ZWN0b3I8aW50LGxvbmcsY2hhcixjaGFyWzUwXSxkb3VibGU+IHR5cGVzOwogICAgdHlwZWRlZiBtYXhfZWxlbWVudDwKICAgICAgICAgIHRyYW5zZm9ybV92aWV3PCB0eXBlcywgc2l6ZV9vZjxfPiA+CiAgICAgICAgPjo6dHlwZSBpdGVyOwoKICAgIEJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oIGRlcmVmPGl0ZXI+Ojp0eXBlOjp2YWx1ZSwgPT0sIDUwICk7CgoKU2VlIGFsc28KLS0tLS0tLS0KCnxTZXF1ZW5jZXN8LCB8Vmlld3N8LCB8ZmlsdGVyX3ZpZXd8LCB8am9pbnRfdmlld3wsIHx6aXBfdmlld3wsIHxpdGVyYXRvcl9yYW5nZXwKCgouLiBjb3B5cmlnaHQ6OiBDb3B5cmlnaHQgqSAgMjAwMS0yMDA5IEFsZWtzZXkgR3VydG92b3kgYW5kIERhdmlkIEFicmFoYW1zCiAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCg==