Li4gU2VxdWVuY2VzL0NvbmNlcHRzLy9Gb3J3YXJkIFNlcXVlbmNlIHwxMAoKRm9yd2FyZCBTZXF1ZW5jZQo9PT09PT09PT09PT09PT09CgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKQSB8Rm9yd2FyZCBTZXF1ZW5jZXwgaXMgYW4gTVBMIGNvbmNlcHQgcmVwcmVzZW50aW5nIGEgY29tcGlsZS10aW1lIHNlcXVlbmNlIG9mIAplbGVtZW50cy4gU2VxdWVuY2UgZWxlbWVudHMgYXJlIAp0eXBlcywgYW5kIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggfGl0ZXJhdG9yc3wuIFRoZSB8YmVnaW58IGFuZCB8ZW5kfCBtZXRhZnVuY3Rpb25zCnByb3ZpZGUgaXRlcmF0b3JzIGRlbGltaXRpbmcgdGhlIHJhbmdlIG9mIHRoZSBzZXF1ZW5jZSAKZWxlbWVudHMuICBBIHNlcXVlbmNlIGd1YXJhbnRlZXMgdGhhdCBpdHMgZWxlbWVudHMgYXJlIGFycmFuZ2VkIGluIGEgZGVmaW5pdGUsIApidXQgcG9zc2libHkgdW5zcGVjaWZpZWQsIG9yZGVyLiBFdmVyeSBNUEwgc2VxdWVuY2UgaXMgYSB8Rm9yd2FyZCBTZXF1ZW5jZXwuCgpEZWZpbml0aW9ucwotLS0tLS0tLS0tLQoKKiBUaGUgKnNpemUqIG9mIGEgc2VxdWVuY2UgaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpdCBjb250YWlucy4gVGhlIHNpemUgaXMgYSAKICBub25uZWdhdGl2ZSBudW1iZXIuCgoqIEEgc2VxdWVuY2UgaXMgKmVtcHR5KiBpZiBpdHMgc2l6ZSBpcyB6ZXJvLgoKCkV4cHJlc3Npb24gcmVxdWlyZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpGb3IgYW55IHxGb3J3YXJkIFNlcXVlbmNlfCBgYHNgYCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIG11c3QgYmUgdmFsaWQ6CgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29tcGxleGl0eSAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IGBgYmVnaW48cz46OnR5cGVgYCAgICAgICAgfCB8Rm9yd2FyZCBJdGVyYXRvcnwgICAgICAgICAgICAgICAgfCBBbW9ydGl6ZWQgY29uc3RhbnQgdGltZSAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBlbmQ8cz46OnR5cGVgYCAgICAgICAgICB8IHxGb3J3YXJkIEl0ZXJhdG9yfCAgICAgICAgICAgICAgICB8IEFtb3J0aXplZCBjb25zdGFudCB0aW1lICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYHNpemU8cz46OnR5cGVgYCAgICAgICAgIHwgfEludGVncmFsIENvbnN0YW50fCAgICAgICAgICAgICAgIHwgVW5zcGVjaWZpZWQgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IGBgZW1wdHk8cz46OnR5cGVgYCAgICAgICAgfCBCb29sZWFuIHxJbnRlZ3JhbCBDb25zdGFudHwgICAgICAgfCBDb25zdGFudCB0aW1lICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBmcm9udDxzPjo6dHlwZWBgICAgICAgICB8IEFueSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFtb3J0aXplZCBjb25zdGFudCB0aW1lICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgIHwgU2VtYW50aWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYGJlZ2luPHM+Ojp0eXBlYGAgICAgICAgIHwgQW4gaXRlcmF0b3IgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHNlcXVlbmNlOyBzZWUgfGJlZ2lufC4gICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVuZDxzPjo6dHlwZWBgICAgICAgICAgIHwgQSBwYXN0LXRoZS1lbmQgaXRlcmF0b3IgdG8gdGhlIHNlcXVlbmNlOyBzZWUgfGVuZHwuICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYHNpemU8cz46OnR5cGVgYCAgICAgICAgIHwgVGhlIHNpemUgb2YgdGhlIHNlcXVlbmNlOyBzZWUgfHNpemV8LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGVtcHR5PHM+Ojp0eXBlYGAgICAgICAgIHwgfHRydWUgaWYgYW5kIG9ubHkgaWZ8IHRoZSBzZXF1ZW5jZSBpcyBlbXB0eTsgc2VlIHxlbXB0eXwuICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGZyb250PHM+Ojp0eXBlYGAgICAgICAgIHwgVGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNlcXVlbmNlOyBzZWUgfGZyb250fC4gICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpJbnZhcmlhbnRzCi0tLS0tLS0tLS0KCkZvciBhbnkgfEZvcndhcmQgU2VxdWVuY2V8IGBgc2BgIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBhbHdheXMgaG9sZDogCgoqIFtgYGJlZ2luPHM+Ojp0eXBlYGAsIGBgZW5kPHM+Ojp0eXBlYGApIGlzIGFsd2F5cyBhIHZhbGlkIHJhbmdlLgoKKiBBbiBhbGdvcml0aG0gdGhhdCBpdGVyYXRlcyB0aHJvdWdoIHRoZSByYW5nZSBbYGBiZWdpbjxzPjo6dHlwZWBgLCBgYGVuZDxzPjo6dHlwZWBgKSAKICB3aWxsIHBhc3MgdGhyb3VnaCBldmVyeSBlbGVtZW50IG9mIGBgc2BgIGV4YWN0bHkgb25jZS4KCiogYGBiZWdpbjxzPjo6dHlwZWBgIGlzIGlkZW50aWNhbCB0byBgYGVuZDxzPjo6dHlwZWBgIGlmIGFuZCBvbmx5IGlmIGBgc2BgIGlzIGVtcHR5LgoKKiBUd28gZGlmZmVyZW50IGl0ZXJhdGlvbnMgdGhyb3VnaCBgYHNgYCB3aWxsIGFjY2VzcyBpdHMgZWxlbWVudHMgaW4gdGhlIHNhbWUgb3JkZXIuIAoKCk1vZGVscwotLS0tLS0KCiogfHZlY3RvcnwKKiB8bWFwfAoqIHxyYW5nZV9jfAoqIHxpdGVyYXRvcl9yYW5nZXwKKiB8ZmlsdGVyX3ZpZXd8CgpTZWUgYWxzbwotLS0tLS0tLQoKfFNlcXVlbmNlc3wsIHxCaWRpcmVjdGlvbmFsIFNlcXVlbmNlfCwgfEZvcndhcmQgSXRlcmF0b3J8LCB8YmVnaW58IC8gfGVuZHwsIHxzaXplfCwgfGVtcHR5fCwgfGZyb250fAoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkK