Li4gU2VxdWVuY2VzL0NsYXNzZXMvL3ZlY3RvciB8MTAKCnZlY3Rvcgo9PT09PT0KCkRlc2NyaXB0aW9uCi0tLS0tLS0tLS0tCgpgYHZlY3RvcmBgIGlzIGEgfHZhcmlhZGljfCwgYHJhbmRvbSBhY2Nlc3NgX18sIGBleHRlbnNpYmxlYF9fIHNlcXVlbmNlIG9mIHR5cGVzIHRoYXQgCnN1cHBvcnRzIGNvbnN0YW50LXRpbWUgaW5zZXJ0aW9uIGFuZCByZW1vdmFsIG9mIGVsZW1lbnRzIGF0IGJvdGggZW5kcywgYW5kIApsaW5lYXItdGltZSBpbnNlcnRpb24gYW5kIHJlbW92YWwgb2YgZWxlbWVudHMgaW4gdGhlIG1pZGRsZS4gT24gY29tcGlsZXJzIHRoYXQgCnN1cHBvcnQgdGhlIGBgdHlwZW9mYGAgZXh0ZW5zaW9uLCBgYHZlY3RvcmBgIGlzIHRoZSBzaW1wbGVzdCBhbmQgaW4gbWFueSBjYXNlcyB0aGUKbW9zdCBlZmZpY2llbnQgc2VxdWVuY2UuCgpfXyBgUmFuZG9tIEFjY2VzcyBTZXF1ZW5jZWBfCl9fIGBFeHRlbnNpYmxlIFNlcXVlbmNlYF8KCkhlYWRlcgotLS0tLS0KCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgU2VxdWVuY2UgZm9ybSAgICAgfCBIZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCnwgVmFyaWFkaWMgICAgICAgICAgfCBgYCNpbmNsdWRlIDxib29zdC9tcGwvdmVjdG9yLmhwcD5gYCAgICAgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgTnVtYmVyZWQgICAgICAgICAgfCBgYCNpbmNsdWRlIDxib29zdC9tcGwvdmVjdG9yL3ZlY3RvcmBgXCAqbipcIGBgLmhwcD5gYCB8CistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgpNb2RlbCBvZgotLS0tLS0tLQoKKiB8VmFyaWFkaWMgU2VxdWVuY2V8CiogfFJhbmRvbSBBY2Nlc3MgU2VxdWVuY2V8CiogfEV4dGVuc2libGUgU2VxdWVuY2V8CiogfEJhY2sgRXh0ZW5zaWJsZSBTZXF1ZW5jZXwKKiB8RnJvbnQgRXh0ZW5zaWJsZSBTZXF1ZW5jZXwKCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgYGB2YGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGB2ZWN0b3JgYCwgYGBwb3NgYCBhbmQgYGBsYXN0YGAgYXJlIGl0ZXJhdG9ycyAKaW50byBgYHZgYCwgYGByYGAgaXMgYSB8Rm9yd2FyZCBTZXF1ZW5jZXwsIGBgbmBgIGlzIGFuIHxJbnRlZ3JhbCBDb25zdGFudHwsIGFuZCBgYHhgYCBhbmQgCnx0MS4uLnRufCBhcmUgYXJiaXRyYXJ5IHR5cGVzLgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2VtYW50aWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCAuLiBwYXJzZWQtbGl0ZXJhbDo6ICAgICAgICAgICAgICAgICAgIHwgYGB2ZWN0b3JgYCBvZiBlbGVtZW50cyB8dDEuLi50bnw7IHNlZSAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfFZhcmlhZGljIFNlcXVlbmNlfC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICB2ZWN0b3I8fHQxLi4udG58PiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICB2ZWN0b3JcICpuKlwgPHx0MS4uLnRufD4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAuLiBwYXJzZWQtbGl0ZXJhbDo6ICAgICAgICAgICAgICAgICAgIHwgSWRlbnRpY2FsIHRvIGBgdmVjdG9yYGBcICpuKlwgYGA8YGBcIHx0MS4uLnRufFwgYGA+YGA7ICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VlIHxWYXJpYWRpYyBTZXF1ZW5jZXwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICB2ZWN0b3I8fHQxLi4udG58Pjo6dHlwZSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICB2ZWN0b3JcICpuKlwgPHx0MS4uLnRufD46OnR5cGUgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGJlZ2luPHY+Ojp0eXBlYGAgICAgICAgICAgICAgICAgICAgIHwgQW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGJlZ2lubmluZyBvZiBgYHZgYDsgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VlIHxSYW5kb20gQWNjZXNzIFNlcXVlbmNlfC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVuZDx2Pjo6dHlwZWBgICAgICAgICAgICAgICAgICAgICAgIHwgQW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiBgYHZgYDsgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VlIHxSYW5kb20gQWNjZXNzIFNlcXVlbmNlfC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYHNpemU8dj46OnR5cGVgYCAgICAgICAgICAgICAgICAgICAgIHwgVGhlIHNpemUgb2YgYGB2YGA7IHNlZSB8UmFuZG9tIEFjY2VzcyBTZXF1ZW5jZXwuICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVtcHR5PHY+Ojp0eXBlYGAgICAgICAgICAgICAgICAgICAgIHwgfHRydWUgaWYgYW5kIG9ubHkgaWZ8IHRoZSBzZXF1ZW5jZSBpcyBlbXB0eTsgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VlIHxSYW5kb20gQWNjZXNzIFNlcXVlbmNlfC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGZyb250PHY+Ojp0eXBlYGAgICAgICAgICAgICAgICAgICAgIHwgVGhlIGZpcnN0IGVsZW1lbnQgaW4gYGB2YGA7IHNlZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfFJhbmRvbSBBY2Nlc3MgU2VxdWVuY2V8LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGJhY2s8dj46OnR5cGVgYCAgICAgICAgICAgICAgICAgICAgIHwgVGhlIGxhc3QgZWxlbWVudCBpbiBgYHZgYDsgc2VlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfFJhbmRvbSBBY2Nlc3MgU2VxdWVuY2V8LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGF0PHYsbj46OnR5cGVgYCAgICAgICAgICAgICAgICAgICAgIHwgVGhlIGBgbmBgXCB0aCBlbGVtZW50IGZyb20gdGhlIGJlZ2lubmluZyBvZiBgYHZgYDsgc2VlICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfFJhbmRvbSBBY2Nlc3MgU2VxdWVuY2V8LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGluc2VydDx2LHBvcyx4Pjo6dHlwZWBgICAgICAgICAgICAgIHwgQSBuZXcgYGB2ZWN0b3JgYCBvZiBmb2xsb3dpbmcgZWxlbWVudHM6ICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgYmVnaW48dj46OnR5cGVgYCwgYGBwb3NgYCksIGBgeGBgLCAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgcG9zYGAsIGBgZW5kPHY+Ojp0eXBlYGApOyBzZWUgfEV4dGVuc2libGUgU2VxdWVuY2V8LiAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGluc2VydF9yYW5nZTx2LHBvcyxyPjo6dHlwZWBgICAgICAgIHwgQSBuZXcgYGB2ZWN0b3JgYCBvZiBmb2xsb3dpbmcgZWxlbWVudHM6ICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgYmVnaW48dj46OnR5cGVgYCwgYGBwb3NgYCksICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgYmVnaW48cj46OnR5cGVgYCwgYGBlbmQ8cj46OnR5cGVgYCkgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgcG9zYGAsIGBgZW5kPHY+Ojp0eXBlYGApOyBzZWUgfEV4dGVuc2libGUgU2VxdWVuY2V8LiAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVyYXNlPHYscG9zPjo6dHlwZWBgICAgICAgICAgICAgICAgIHwgQSBuZXcgYGB2ZWN0b3JgYCBvZiBmb2xsb3dpbmcgZWxlbWVudHM6ICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgYmVnaW48dj46OnR5cGVgYCwgYGBwb3NgYCksICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgbmV4dDxwb3M+Ojp0eXBlYGAsIGBgZW5kPHY+Ojp0eXBlYGApOyBzZWUgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfEV4dGVuc2libGUgU2VxdWVuY2V8LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVyYXNlPHYscG9zLGxhc3Q+Ojp0eXBlYGAgICAgICAgICAgIHwgQSBuZXcgYGB2ZWN0b3JgYCBvZiBmb2xsb3dpbmcgZWxlbWVudHM6ICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgYmVnaW48dj46OnR5cGVgYCwgYGBwb3NgYCksICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BgbGFzdGBgLCBgYGVuZDx2Pjo6dHlwZWBgKTsgc2VlIHxFeHRlbnNpYmxlIFNlcXVlbmNlfC4gIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGNsZWFyPHY+Ojp0eXBlYGAgICAgICAgICAgICAgICAgICAgIHwgQW4gZW1wdHkgYGB2ZWN0b3JgYDsgc2VlIHxFeHRlbnNpYmxlIFNlcXVlbmNlfC4gICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYHB1c2hfYmFjazx2LHg+Ojp0eXBlYGAgICAgICAgICAgICAgIHwgQSBuZXcgYGB2ZWN0b3JgYCBvZiBmb2xsb3dpbmcgZWxlbWVudHM6ICAgICAgICAgICAgICAgICAgIHwgCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHxiZWdpbi9lbmQ8dj58LCBgYHhgYDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZSB8QmFjayBFeHRlbnNpYmxlIFNlcXVlbmNlfC4gICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBwb3BfYmFjazx2Pjo6dHlwZWBgICAgICAgICAgICAgICAgICB8IEEgbmV3IGBgdmVjdG9yYGAgb2YgZm9sbG93aW5nIGVsZW1lbnRzOiAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtgYGJlZ2luPHY+Ojp0eXBlYGAsIGBgcHJpb3I8IGVuZDx2Pjo6dHlwZSA+Ojp0eXBlYGApOyAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZSB8QmFjayBFeHRlbnNpYmxlIFNlcXVlbmNlfC4gICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBwdXNoX2Zyb250PHYseD46OnR5cGVgYCAgICAgICAgICAgICB8IEEgbmV3IGBgdmVjdG9yYGAgb2YgZm9sbG93aW5nIGVsZW1lbnRzOiAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgeGBgLCB8YmVnaW4vZW5kPHY+fDsgc2VlIHxGcm9udCBFeHRlbnNpYmxlIFNlcXVlbmNlfC4gICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBwb3BfZnJvbnQ8dj46OnR5cGVgYCAgICAgICAgICAgICAgICB8IEEgbmV3IGBgdmVjdG9yYGAgb2YgZm9sbG93aW5nIGVsZW1lbnRzOiAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtgYG5leHQ8IGJlZ2luPHY+Ojp0eXBlID46OnR5cGVgYCwgYGBlbmQ8dj46OnR5cGVgYCk7ICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZSB8RnJvbnQgRXh0ZW5zaWJsZSBTZXF1ZW5jZXwuICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKRXhhbXBsZQotLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHR5cGVkZWYgdmVjdG9yPGZsb2F0LGRvdWJsZSxsb25nIGRvdWJsZT4gZmxvYXRzOwogICAgdHlwZWRlZiBwdXNoX2JhY2s8ZmxvYXRzLGludD46OnR5cGUgdHlwZXM7CgogICAgQk9PU1RfTVBMX0FTU0VSVCgoIHxpc19zYW1lfFw8IGF0X2M8dHlwZXMsMz46OnR5cGUsIGludCA+ICkpOwoKClNlZSBhbHNvCi0tLS0tLS0tCgp8U2VxdWVuY2VzfCwgfFZhcmlhZGljIFNlcXVlbmNlfCwgfFJhbmRvbSBBY2Nlc3MgU2VxdWVuY2V8LCB8RXh0ZW5zaWJsZSBTZXF1ZW5jZXwsIHx2ZWN0b3JfY3wsIHxsaXN0fAoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkK