Li4gU2VxdWVuY2VzL0NvbmNlcHRzLy9FeHRlbnNpYmxlIFNlcXVlbmNlIHw0MAoKRXh0ZW5zaWJsZSBTZXF1ZW5jZQo9PT09PT09PT09PT09PT09PT09CgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKQW4gfEV4dGVuc2libGUgU2VxdWVuY2V8IGlzIGEgc2VxdWVuY2UgdGhhdCBzdXBwb3J0cyBpbnNlcnRpb24gYW5kIHJlbW92YWwgb2YgCmVsZW1lbnRzLiBFeHRlbnNpYmlsaXR5IGlzIG9ydGhvZ29uYWwgdG8gc2VxdWVuY2UgdHJhdmVyc2FsIGNoYXJhY3RlcmlzdGljcy4KCgpFeHByZXNzaW9uIHJlcXVpcmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKRm9yIGFueSB8RXh0ZW5zaWJsZSBTZXF1ZW5jZXwgYGBzYGAsIGl0cyBpdGVyYXRvcnMgYGBwb3NgYCBhbmQgYGBsYXN0YGAsIAp8Rm9yd2FyZCBTZXF1ZW5jZXwgYGByYGAsIGFuZCBhbnkgdHlwZSBgYHhgYCwgdGhlIGZvbGxvd2luZyBleHByZXNzaW9ucyBtdXN0CmJlIHZhbGlkOgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgRXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICB8IENvbXBsZXhpdHkgICAgICAgICAgICAgICAgfAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYGluc2VydDxzLHBvcyx4Pjo6dHlwZWBgICAgICAgICAgfCB8RXh0ZW5zaWJsZSBTZXF1ZW5jZXwgICAgIHwgVW5zcGVjaWZpZWQgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IGBgaW5zZXJ0X3JhbmdlPHMscG9zLHI+Ojp0eXBlYGAgICB8IHxFeHRlbnNpYmxlIFNlcXVlbmNlfCAgICAgfCBVbnNwZWNpZmllZCAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBlcmFzZTxzLHBvcz46OnR5cGVgYCAgICAgICAgICAgIHwgfEV4dGVuc2libGUgU2VxdWVuY2V8ICAgICB8IFVuc3BlY2lmaWVkICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVyYXNlPHMscG9zLGxhc3Q+Ojp0eXBlYGAgICAgICAgfCB8RXh0ZW5zaWJsZSBTZXF1ZW5jZXwgICAgIHwgVW5zcGVjaWZpZWQgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IGBgY2xlYXI8cz46OnR5cGVgYCAgICAgICAgICAgICAgICB8IHxFeHRlbnNpYmxlIFNlcXVlbmNlfCAgICAgfCBDb25zdGFudCB0aW1lICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgfCBTZW1hbnRpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYGluc2VydDxzLHBvcyx4Pjo6dHlwZWBgICAgICAgICAgfCBBIG5ldyBzZXF1ZW5jZSwgY29uY2VwdC1pZGVudGljYWwgdG8gYGBzYGAsIG9mICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgZm9sbG93aW5nIGVsZW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBiZWdpbjxzPjo6dHlwZWBgLCBgYHBvc2BgKSwgYGB4YGAsICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBwb3NgYCwgYGBlbmQ8cz46OnR5cGVgYCk7IHNlZSB8aW5zZXJ0fC4gICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGluc2VydF9yYW5nZTxzLHBvcyxyPjo6dHlwZWBgICAgfCBBIG5ldyBzZXF1ZW5jZSwgY29uY2VwdC1pZGVudGljYWwgdG8gYGBzYGAsIG9mICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgZm9sbG93aW5nIGVsZW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBiZWdpbjxzPjo6dHlwZWBgLCBgYHBvc2BgKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBiZWdpbjxyPjo6dHlwZWBgLCBgYGVuZDxyPjo6dHlwZWBgKSwgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBwb3NgYCwgYGBlbmQ8cz46OnR5cGVgYCk7IHNlZSB8aW5zZXJ0X3JhbmdlfC4gICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVyYXNlPHMscG9zPjo6dHlwZWBgICAgICAgICAgICAgfCBBIG5ldyBzZXF1ZW5jZSwgY29uY2VwdC1pZGVudGljYWwgdG8gYGBzYGAsIG9mICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgZm9sbG93aW5nIGVsZW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBiZWdpbjxzPjo6dHlwZWBgLCBgYHBvc2BgKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBuZXh0PHBvcz46OnR5cGVgYCwgYGBlbmQ8cz46OnR5cGVgYCk7IHNlZSB8ZXJhc2V8LiAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVyYXNlPHMscG9zLGxhc3Q+Ojp0eXBlYGAgICAgICAgfCBBIG5ldyBzZXF1ZW5jZSwgY29uY2VwdC1pZGVudGljYWwgdG8gYGBzYGAsIG9mICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgZm9sbG93aW5nIGVsZW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBiZWdpbjxzPjo6dHlwZWBgLCBgYHBvc2BgKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGBsYXN0YGAsIGBgZW5kPHM+Ojp0eXBlYGApOyBzZWUgfGVyYXNlfC4gICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGNsZWFyPHM+Ojp0eXBlYGAgICAgICAgICAgICAgICAgfCBBbiBlbXB0eSBzZXF1ZW5jZSBjb25jZXB0LWlkZW50aWNhbCB0byBgYHNgYDsgc2VlICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Y2xlYXJ8LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpNb2RlbHMKLS0tLS0tCgoqIHx2ZWN0b3J8CiogfGxpc3R8CgoKU2VlIGFsc28KLS0tLS0tLS0KCnxTZXF1ZW5jZXN8LCB8QmFjayBFeHRlbnNpYmxlIFNlcXVlbmNlfCwgfGluc2VydHwsIHxpbnNlcnRfcmFuZ2V8LCB8ZXJhc2V8LCB8Y2xlYXJ8CgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=