@glimmer/vm
Advanced tools
Comparing version 0.30.3 to 0.30.4
"use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGVkIGJ5IGEgc3ltYm9sIGZyb21cbiAgICogICB0aGUgdmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0VmFyaWFibGUgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFNldEJsb2NrIHN5bWJvbDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnlcbiAgICogICBhIHN5bWJvbCAoYSBwb3NpdGlvbmFsIG9yIG5hbWVkIGFyZ3VtZW50KSBvbnRvXG4gICAqICAgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hTeW1ib2wgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZVxuICAgKiAgIHN0YWNrLCBhbmQgcHVzaCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgY29uc3RydWN0ZWRcbiAgICogICBieSBgLmdldChwcm9wZXJ0eSlgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldFByb3BlcnR5IHByb3BlcnR5OiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0UHJvcGVydHksXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgc3BlY2lmaWVkIGJvdW5kIGJsb2NrIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldEJsb2NrIGJsb2NrOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBJbmxpbmVCbG9ja1xuICAgKi9cbiAgR2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kIGFuZCBGQUxTRSBpZiBpdCBpcyBub3QuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIGJvb2xlYW5cbiAgICovXG4gIEhhc0Jsb2NrLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBUUlVFIG9udG8gdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogICBpcyBib3VuZCAqYW5kKiBoYXMgYXQgbGVhc3Qgb25lIHNwZWNpZmllZCBmb3JtYWxcbiAgICogICBwYXJhbWV0ZXIsIGFuZCBGQUxTRSBvdGhlcndpc2UuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2tQYXJhbXMgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgKGJvb2xlYW4pXG4gICAqL1xuICBIYXNCbG9ja1BhcmFtcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBjb3VudCBgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZWBzIG9mZiB0aGUgc3RhY2sgYW5kXG4gICAqICAgY29uc3RydWN0IGEgbmV3IENvbmNhdFJlZmVyZW5jZSBmcm9tIHRoZW0gKGluIHJldmVyc2VcbiAgICogICBvcmRlcikuXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29uY2F0IGNvdW50OnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uLCBDb25jYXRSZWZlcmVuY2VcbiAgICovXG4gIENvbmNhdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYW4gT2JqZWN0IGNvbnN0YW50IG9udG8gdGhlIHN0YWNrIHRoYXQgaXMgbm90XG4gICAqICAgYSBKYXZhU2NyaXB0IHByaW1pdGl2ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29uc3RhbnQgY29uc3RhbnQ6I09iamVjdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcGFxdWVcbiAgICovXG4gIENvbnN0YW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgV3JhcCBhIEphdmFTY3JpcHQgcHJpbWl0aXZlIGluIGEgcmVmZXJlbmNlIGFuZCBwdXNoIGl0XG4gICAqICAgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFByaW1pdGl2ZSBjb25zdGFudDojUHJpbWl0aXZlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByaW1pdGl2ZVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgdHdvIGhpZ2ggYml0cyBvZiB0aGUgY29uc3RhbnQgcmVmZXJlbmNlIGRlc2NyaWJlXG4gICAqICAgdGhlIGtpbmQgb2YgcHJpbWl0aXZlOlxuICAgKlxuICAgKiAgIDAwOiBudW1iZXJcbiAgICogICAwMTogc3RyaW5nXG4gICAqICAgMTA6IHRydWUgfCBmYWxzZSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICovXG4gIFByaW1pdGl2ZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBwcmltaXRpdmUgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFByaW1pdGl2ZVJlZmVyZW5jZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByaW1pdGl2ZSDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPlxuICAgKi9cbiAgUHJpbWl0aXZlUmVmZXJlbmNlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IGNoaWxkIHNjb3BlIG9udG8gdGhlIHNjb3BlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENoaWxkU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBBIGNoaWxkIHNjb3BlIGluaGVyaXRzIGZyb20gdGhlIGN1cnJlbnQgcGFyZW50IHNjb3BlLCBhbmQgdGhlcmVmb3JlXG4gICAqICAgc2hhcmVzIGl0cyBsZXhpY2FsIHZhcmlhYmxlcy5cbiAgICovXG4gIENoaWxkU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIHRoZSBjdXJyZW50IHNjb3BlIGZyb20gdGhlIHNjb3BlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNjb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJldHVybiB0byB0aGUgcHJldmlvdXMgZnJhbWUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmV0dXJuKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgYWRkcmVzczpudW1iZXIg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZXR1cm4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIGEgcGxhY2UgaW4gdGhlIHByb2dyYW0gZ2l2ZW4gYW4gb2Zmc2V0XG4gICAqIEZvcm1hdDpcbiAgICogIChSZXR1cm5UbyBvZmZzZXQ6aTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICAuLi4g4oaSXG4gICAqL1xuICBSZXR1cm5UbyxcblxuICAvLy8gSFRNTFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIFRleHQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChUZXh0IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgYSBDb21tZW50IG5vZGUgd2l0aCB2YWx1ZSBgY29udGVudHNgXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWVudCBjb250ZW50czojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgRHluYW1pYyBub2RlIGJhc2VkIG9uIC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQ29udGVudCBpc1RydXN0aW5nOmJvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRHluYW1pY0NvbnRlbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50IHRhZzojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgIHdpdGggc3BlY2lhbCBvcGVyYXRpb25zIHByb3ZpZGVkXG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBFbGVtZW50T3BlcmF0aW9ucyDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAgICAgICAgICAgICAgICAgIC8vIChDb25zdGFudFN0cmluZywgQ29uc3RhbnRPdGhlcjxNb2RpZmllck1hbmFnZXI+LCBDb25zdGFudEV4cHJlc3Npb24pXG5cbiAgLy8vIFdPUk1IT0xFXG4gIFB1c2hSZW1vdGVFbGVtZW50LCAgICAgICAgIC8vICgpXG4gIFBvcFJlbW90ZUVsZW1lbnQsICAgICAgICAgIC8vICgpXG5cbiAgLy8vIERZTkFNSUMgU0NPUEVcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCaW5kIHN0YWNrIHZhbHVlcyBhcyBkeW5hbWljIHZhcmlhYmxlcy5cbiAgICogRm9ybWF0OlxuICAgKiAgIChCaW5kRHluYW1pY1Njb3BlIG5hbWVzOiNBcnJheTwjc3RyaW5nPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgaXMgdXNlZCB0byBleHBvc2UgYC13aXRoLWR5bmFtaWMtdmFyc2AsIGFuZCBpcyBhXG4gICAqICAgbmljaGUgZmVhdHVyZS5cbiAgICovXG4gIEJpbmREeW5hbWljU2NvcGUsXG5cbiAgUHVzaER5bmFtaWNTY29wZSwgICAgICAgICAgLy8gKClcbiAgUG9wRHluYW1pY1Njb3BlLCAgICAgICAgICAgLy8gKClcblxuICAvLy8gVk1cblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21waWxlIHRoZSBJbmxpbmVCbG9jayBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21waWxlQmxvY2spXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21waWxhYmxlQmxvY2sg4oaSXG4gICAqICAgLi4uLCBIYW5kbGVcbiAgICovXG4gIENvbXBpbGVCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc2NvcGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEJsb2NrU2NvcGUgI1Njb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTY29wZVxuICAgKi9cbiAgUHVzaEJsb2NrU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN5bWJvbCB0YWJsZSBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU3ltYm9sVGFibGUgI1N5bWJvbFRhYmxlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZVxuICAgKi9cbiAgUHVzaFN5bWJvbFRhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlVmlydHVhbClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEhhbmRsZSwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VWaXJ0dWFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlU3RhdGljIGhhbmRsZTp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlU3RhdGljLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFlpZWxkIHRvIGEgYmxvY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlWWllbGQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMsIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VZaWVsZCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXAgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXAsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRydWUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSnVtcElmIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wSWYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGZhbHNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBVbmxlc3MgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXBVbmxlc3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAkcmEsICRmcFxuICAgKi9cbiAgUHVzaEZyYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICRyYSwgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTdGFydCB0cmFja2luZyBhIG5ldyBvdXRwdXQgYmxvY2sgdGhhdCBjb3VsZCBjaGFuZ2VcbiAgICogICBpZiBvbmUgb2YgaXRzIGlucHV0cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyIGFyZ3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgU29vbiBhZnRlciB0aGlzIG9wY29kZSwgb25lIG9mIEp1bXAsIEp1bXBJZixcbiAgICogICBvciBKdW1wVW5sZXNzIHdpbGwgcHJvZHVjZSBhbiB1cGRhdGluZyBhc3NlcnRpb24uXG4gICAqICAgSWYgdGhhdCBhc3NlcnRpb24gZmFpbHMsIHRoZSBhcHBlbmRpbmcgVk0gd2lsbFxuICAgKiAgIGJlIHJlLWVudGVyZWQsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gYGZyb21gXG4gICAqICAgdG8gYHRvYCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAgIFRPRE86IFNhdmUgYW5kIHJlc3RvcmUuXG4gICAqL1xuICBFbnRlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEZpbmlzaCB0cmFja2luZyB0aGUgY3VycmVudCBibG9jay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBmaW5hbGl6ZXMgdGhlIHZhbGlkYXRvcnMgdGhhdCB0aGUgdXBkYXRpbmdcbiAgICogICBibG9jayBtdXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0b1xuICAgKiAgIHNraXAgcnVubmluZyB0aGUgY29udGVudHMuXG4gICAqL1xuICBFeGl0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIGJvb2xlYW4gcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRvQm9vbGVhbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Ym9vbD5cbiAgICovXG4gIFRvQm9vbGVhbixcblxuICAvLy8gTElTVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFbnRlciBhIGxpc3QuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXJMaXN0IGFkZHJlc3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSXRlcmF0b3Ig4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFbnRlckxpc3QsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRXhpdCB0aGUgY3VycmVudCBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEV4aXRMaXN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEV4aXRMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQ29udmVydCBhbiBvcGVyYW5kIGFuZCBrZXkgaW50byBhbiBpdGVyYXRvciBhbmRcbiAgICogICBwcmVzZW5jZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0SXRlcmF0b3IpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBrZXk6c3RyaW5nLCBsaXN0OlZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBpdGVyYXRvcjpSZWZlcmVuY2VJdGVyYXRvciwgcHJlc2VudDpQcmVzZW5jZVJlZmVyZW5jZVxuICAgKi9cbiAgUHV0SXRlcmF0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTZXQgdXAgdGhlIHN0YWNrIGZvciBpdGVyYXRpbmcgZm9yIGEgZ2l2ZW4ga2V5LFxuICAgKiAgIG9yIGp1bXAgdG8gYGVuZGAgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvXG4gICAqICAgaXRlcmF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJdGVyYXRlIGVuZDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRm9ybSAxOiAoc29tZXRoaW5nIHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgc3RyaW5nXG4gICAqICAgRm9ybSAyOiAobm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBJbiBGb3JtIDEsIHRoZSBzdGFjayB3aWxsIGhhdmUgKGluIHJldmVyc2Ugb3JkZXIpOlxuICAgKlxuICAgKiAgIC0gdGhlIGtleSwgYXMgYSBzdHJpbmdcbiAgICogICAtIHRoZSBjdXJyZW50IGl0ZXJhdGVkIHZhbHVlXG4gICAqICAgLSB0aGUgbWVtb2l6ZWQgaXRlcmF0ZWQgdmFsdWVcbiAgICovXG4gIEl0ZXJhdGUsXG5cbiAgLy8vIENPTVBPTkVOVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBUZXN0IHdoZXRoZXIgYSByZWZlcmVuY2UgY29udGFpbnMgYSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChNYWluIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSW52b2NhdGlvbiwgQ29tcG9uZW50RGVmaW5pdGlvbiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE1haW4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXNDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2xlYW4+XG4gICAqL1xuICBJc0NvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDdXJyeSBhIGNvbXBvbmVudCBkZWZpbml0aW9uIGZvciBhIGxhdGVyIGludm9jYXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3VycnlDb21wb25lbnQgdGVtcGxhdGVNZXRhOiNUZW1wbGF0ZU1ldGEpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uLCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFRlbXBsYXRlTWV0YSwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIGFuIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBtYW5hZ2VyIG9udG8gdGhlIHN0YWNrIGZyb21cbiAgICogICBhIHJ1bnRpbWUtcmVzb2x2ZWQgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBDb21wb25lbnRNYW5hZ2VyIH1cbiAgICovXG4gIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgdXNlciByZXByZXNlbnRhdGlvbiBvZiBhcmdzIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hBcmdzIG5hbWVzOiNBcnJheTwjc3RyaW5nPiBwb3NpdGlvbmFsQ291bnQ6dTMyIHN5bnRoZXRpYzojYm9vbGVhbilcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0gIOKGklxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgYXJndW1lbnRzIG9iamVjdCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIGNhbGxpbmcgaW50b1xuICAgKiAgIHVzZXItc3BlY2lmaWVkIGhvb2tzLiBJdCBpcyBtZWFudCB0byBiZSBpbXBsZW1lbnRlZCBhcyBhXG4gICAqICAgdHJhbnNpZW50IHByb3h5IHRoYXQgcmVhZHMgaW50byB0aGUgc3RhY2sgYXMgbmVlZGVkLlxuICAgKiAgIEhvbGRpbmcgb250byB0aGUgQXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsIGhhcyBjb21wbGV0ZWQgaXNcbiAgICogICBpbGxlZ2FsLlxuICAgKi9cbiAgUHVzaEFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDcmVhdGUgdGhlIGNvbXBvbmVudCBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDcmVhdGVDb21wb25lbnQgZmxhZ3M6dTMyIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRmxhZ3M6XG4gICAqXG4gICAqICAgKiAwYjAwMTogSGFzIGEgZGVmYXVsdCBibG9ja1xuICAgKiAgICogMGIwMTA6IEhhcyBhbiBpbnZlcnNlIGJsb2NrXG4gICAqL1xuICBDcmVhdGVDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmVnaXN0ZXIgYSBkZXN0cnVjdG9yIGZvciB0aGUgY3VycmVudCBjb21wb25lbnRcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Igc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgRWxlbWVudE9wZXJhdGlvbnMgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXRDb21wb25lbnRPcGVyYXRpb25zKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFB1dENvbXBvbmVudE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHNlbGZgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFNlbGYgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0Q29tcG9uZW50U2VsZixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBjb21wb25lbnQncyBgc2VsZmAgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50VGFnTmFtZSBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcHRpb248c3RyaW5nPlxuICAgKi9cbiAgR2V0Q29tcG9uZW50VGFnTmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBHZXQgdGhlIGNvbXBvbmVudCBsYXlvdXQgZnJvbSB0aGUgbWFuYWdlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBIYW5kbGVcbiAgICovXG4gIEdldENvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcHVsYXRlIHRoZSBzdGF0ZSByZWdpc3RlciB3aXRoIHRoZSBsYXlvdXQgY3VycmVudGx5XG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcHVsYXRlTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3B1bGF0ZUxheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgdGhlIGxheW91dCByZXR1cm5lZCBieSB0aGUgbWFuYWdlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJbnZva2VDb21wb25lbnRMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlQ29tcG9uZW50TGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJlZ2luIGEgbmV3IGNhY2hlIGdyb3VwXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIENvbXBvbmVudE1hbmFnZXI8VD4sIFQg4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUXG4gICAqL1xuICBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbW1pdCB0aGUgY3VycmVudCBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSBkaWRDcmVhdGVFbGVtZW50IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkQ3JlYXRlRWxlbWVudCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRDcmVhdGVFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSBkaWRSZW5kZXJMYXlvdXQgb24gdGhlIGN1cnJlbnQgY29tcG9uZW50IG1hbmFnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEaWRSZW5kZXJMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERpZFJlbmRlckxheW91dCxcblxuICAvLy8gUEFSVElBTFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBMb29rdXAgYW5kIGludm9rZSBhIHBhcnRpYWwgdGVtcGxhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlUGFydGlhbCB0ZW1wbGF0ZU1ldGE6I1RlbXBsYXRlTWV0YSBzeW1ib2xzOiNBcnJheTwjc3RyaW5nPiBldmFsSW5mbzojQXJyYXk8bnVtYmVyPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8c3RyaW5nPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVBhcnRpYWwsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBSZXNvbHZlIHt7Zm9vfX0gaW5zaWRlIGEgcGFydGlhbCwgd2hpY2ggY291bGQgYmUgZWl0aGVyIGEgc2VsZi1sb29rdXBcbiAgICogICBvciBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaXMgaW4tc2NvcGUgZm9yIHRoZSBjYWxsZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVzb2x2ZU1heWJlTG9jYWwgbG9jYWw6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBSZXNvbHZlTWF5YmVMb2NhbCxcblxuICAvLy8gREVCVUdHRVJcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBY3RpdmF0ZSB0aGUgZGVidWdnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEZWJ1Z2dlciBzeW1ib2xzOiNBcnJheTxzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERlYnVnZ2VyLFxuXG4gIC8qKiBUaGUgc2l6ZSBvZiB0aGUgb3Bjb2RlIGxpc3QgKi9cbiAgU2l6ZVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGVkIGJ5IGEgc3ltYm9sIGZyb21cbiAgICogICB0aGUgdmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0VmFyaWFibGUgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFNldEJsb2NrIHN5bWJvbDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnlcbiAgICogICBhIHN5bWJvbCAoYSBwb3NpdGlvbmFsIG9yIG5hbWVkIGFyZ3VtZW50KSBvbnRvXG4gICAqICAgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hTeW1ib2wgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZVxuICAgKiAgIHN0YWNrLCBhbmQgcHVzaCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgY29uc3RydWN0ZWRcbiAgICogICBieSBgLmdldChwcm9wZXJ0eSlgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldFByb3BlcnR5IHByb3BlcnR5OiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0UHJvcGVydHksXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgc3BlY2lmaWVkIGJvdW5kIGJsb2NrIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldEJsb2NrIGJsb2NrOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBJbmxpbmVCbG9ja1xuICAgKi9cbiAgR2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kIGFuZCBGQUxTRSBpZiBpdCBpcyBub3QuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIGJvb2xlYW5cbiAgICovXG4gIEhhc0Jsb2NrLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBUUlVFIG9udG8gdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogICBpcyBib3VuZCAqYW5kKiBoYXMgYXQgbGVhc3Qgb25lIHNwZWNpZmllZCBmb3JtYWxcbiAgICogICBwYXJhbWV0ZXIsIGFuZCBGQUxTRSBvdGhlcndpc2UuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2tQYXJhbXMgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgKGJvb2xlYW4pXG4gICAqL1xuICBIYXNCbG9ja1BhcmFtcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBjb3VudCBgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZWBzIG9mZiB0aGUgc3RhY2sgYW5kXG4gICAqICAgY29uc3RydWN0IGEgbmV3IENvbmNhdFJlZmVyZW5jZSBmcm9tIHRoZW0gKGluIHJldmVyc2VcbiAgICogICBvcmRlcikuXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29uY2F0IGNvdW50OnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uLCBDb25jYXRSZWZlcmVuY2VcbiAgICovXG4gIENvbmNhdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYW4gT2JqZWN0IGNvbnN0YW50IG9udG8gdGhlIHN0YWNrIHRoYXQgaXMgbm90XG4gICAqICAgYSBKYXZhU2NyaXB0IHByaW1pdGl2ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29uc3RhbnQgY29uc3RhbnQ6I09iamVjdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcGFxdWVcbiAgICovXG4gIENvbnN0YW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgV3JhcCBhIEphdmFTY3JpcHQgcHJpbWl0aXZlIGluIGEgcmVmZXJlbmNlIGFuZCBwdXNoIGl0XG4gICAqICAgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFByaW1pdGl2ZSBjb25zdGFudDojUHJpbWl0aXZlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByaW1pdGl2ZVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgdHdvIGhpZ2ggYml0cyBvZiB0aGUgY29uc3RhbnQgcmVmZXJlbmNlIGRlc2NyaWJlXG4gICAqICAgdGhlIGtpbmQgb2YgcHJpbWl0aXZlOlxuICAgKlxuICAgKiAgIDAwOiBudW1iZXJcbiAgICogICAwMTogc3RyaW5nXG4gICAqICAgMTA6IHRydWUgfCBmYWxzZSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICovXG4gIFByaW1pdGl2ZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBwcmltaXRpdmUgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFByaW1pdGl2ZVJlZmVyZW5jZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByaW1pdGl2ZSDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPlxuICAgKi9cbiAgUHJpbWl0aXZlUmVmZXJlbmNlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IGNoaWxkIHNjb3BlIG9udG8gdGhlIHNjb3BlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENoaWxkU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBBIGNoaWxkIHNjb3BlIGluaGVyaXRzIGZyb20gdGhlIGN1cnJlbnQgcGFyZW50IHNjb3BlLCBhbmQgdGhlcmVmb3JlXG4gICAqICAgc2hhcmVzIGl0cyBsZXhpY2FsIHZhcmlhYmxlcy5cbiAgICovXG4gIENoaWxkU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIHRoZSBjdXJyZW50IHNjb3BlIGZyb20gdGhlIHNjb3BlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNjb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJldHVybiB0byB0aGUgcHJldmlvdXMgZnJhbWUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmV0dXJuKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgYWRkcmVzczpudW1iZXIg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZXR1cm4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIGEgcGxhY2UgaW4gdGhlIHByb2dyYW0gZ2l2ZW4gYW4gb2Zmc2V0XG4gICAqIEZvcm1hdDpcbiAgICogIChSZXR1cm5UbyBvZmZzZXQ6aTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICAuLi4g4oaSXG4gICAqL1xuICBSZXR1cm5UbyxcblxuICAvLy8gSFRNTFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIFRleHQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChUZXh0IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgYSBDb21tZW50IG5vZGUgd2l0aCB2YWx1ZSBgY29udGVudHNgXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWVudCBjb250ZW50czojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgRHluYW1pYyBub2RlIGJhc2VkIG9uIC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQ29udGVudCBpc1RydXN0aW5nOmJvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRHluYW1pY0NvbnRlbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50IHRhZzojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgIHdpdGggc3BlY2lhbCBvcGVyYXRpb25zIHByb3ZpZGVkXG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBFbGVtZW50T3BlcmF0aW9ucyDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAgICAgICAgICAgICAgICAgIC8vIChDb25zdGFudFN0cmluZywgQ29uc3RhbnRPdGhlcjxNb2RpZmllck1hbmFnZXI+LCBDb25zdGFudEV4cHJlc3Npb24pXG5cbiAgLy8vIFdPUk1IT0xFXG4gIFB1c2hSZW1vdGVFbGVtZW50LCAgICAgICAgIC8vICgpXG4gIFBvcFJlbW90ZUVsZW1lbnQsICAgICAgICAgIC8vICgpXG5cbiAgLy8vIERZTkFNSUMgU0NPUEVcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCaW5kIHN0YWNrIHZhbHVlcyBhcyBkeW5hbWljIHZhcmlhYmxlcy5cbiAgICogRm9ybWF0OlxuICAgKiAgIChCaW5kRHluYW1pY1Njb3BlIG5hbWVzOiNBcnJheTwjc3RyaW5nPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgaXMgdXNlZCB0byBleHBvc2UgYC13aXRoLWR5bmFtaWMtdmFyc2AsIGFuZCBpcyBhXG4gICAqICAgbmljaGUgZmVhdHVyZS5cbiAgICovXG4gIEJpbmREeW5hbWljU2NvcGUsXG5cbiAgUHVzaER5bmFtaWNTY29wZSwgICAgICAgICAgLy8gKClcbiAgUG9wRHluYW1pY1Njb3BlLCAgICAgICAgICAgLy8gKClcblxuICAvLy8gVk1cblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21waWxlIHRoZSBJbmxpbmVCbG9jayBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21waWxlQmxvY2spXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21waWxhYmxlQmxvY2sg4oaSXG4gICAqICAgLi4uLCBIYW5kbGVcbiAgICovXG4gIENvbXBpbGVCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc2NvcGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEJsb2NrU2NvcGUgI1Njb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTY29wZVxuICAgKi9cbiAgUHVzaEJsb2NrU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN5bWJvbCB0YWJsZSBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU3ltYm9sVGFibGUgI1N5bWJvbFRhYmxlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZVxuICAgKi9cbiAgUHVzaFN5bWJvbFRhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlVmlydHVhbClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEhhbmRsZSwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VWaXJ0dWFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlU3RhdGljIGhhbmRsZTp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlU3RhdGljLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFlpZWxkIHRvIGEgYmxvY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlWWllbGQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMsIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VZaWVsZCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXAgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXAsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRydWUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSnVtcElmIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wSWYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGZhbHNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBVbmxlc3MgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXBVbmxlc3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAkcmEsICRmcFxuICAgKi9cbiAgUHVzaEZyYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICRyYSwgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTdGFydCB0cmFja2luZyBhIG5ldyBvdXRwdXQgYmxvY2sgdGhhdCBjb3VsZCBjaGFuZ2VcbiAgICogICBpZiBvbmUgb2YgaXRzIGlucHV0cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyIGFyZ3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgU29vbiBhZnRlciB0aGlzIG9wY29kZSwgb25lIG9mIEp1bXAsIEp1bXBJZixcbiAgICogICBvciBKdW1wVW5sZXNzIHdpbGwgcHJvZHVjZSBhbiB1cGRhdGluZyBhc3NlcnRpb24uXG4gICAqICAgSWYgdGhhdCBhc3NlcnRpb24gZmFpbHMsIHRoZSBhcHBlbmRpbmcgVk0gd2lsbFxuICAgKiAgIGJlIHJlLWVudGVyZWQsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gYGZyb21gXG4gICAqICAgdG8gYHRvYCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAgIFRPRE86IFNhdmUgYW5kIHJlc3RvcmUuXG4gICAqL1xuICBFbnRlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEZpbmlzaCB0cmFja2luZyB0aGUgY3VycmVudCBibG9jay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBmaW5hbGl6ZXMgdGhlIHZhbGlkYXRvcnMgdGhhdCB0aGUgdXBkYXRpbmdcbiAgICogICBibG9jayBtdXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0b1xuICAgKiAgIHNraXAgcnVubmluZyB0aGUgY29udGVudHMuXG4gICAqL1xuICBFeGl0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIGJvb2xlYW4gcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRvQm9vbGVhbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Ym9vbD5cbiAgICovXG4gIFRvQm9vbGVhbixcblxuICAvLy8gTElTVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFbnRlciBhIGxpc3QuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXJMaXN0IGFkZHJlc3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSXRlcmF0b3Ig4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFbnRlckxpc3QsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRXhpdCB0aGUgY3VycmVudCBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEV4aXRMaXN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEV4aXRMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQ29udmVydCBhbiBvcGVyYW5kIGFuZCBrZXkgaW50byBhbiBpdGVyYXRvciBhbmRcbiAgICogICBwcmVzZW5jZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0SXRlcmF0b3IpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBrZXk6c3RyaW5nLCBsaXN0OlZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBpdGVyYXRvcjpSZWZlcmVuY2VJdGVyYXRvciwgcHJlc2VudDpQcmVzZW5jZVJlZmVyZW5jZVxuICAgKi9cbiAgUHV0SXRlcmF0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTZXQgdXAgdGhlIHN0YWNrIGZvciBpdGVyYXRpbmcgZm9yIGEgZ2l2ZW4ga2V5LFxuICAgKiAgIG9yIGp1bXAgdG8gYGVuZGAgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvXG4gICAqICAgaXRlcmF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJdGVyYXRlIGVuZDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRm9ybSAxOiAoc29tZXRoaW5nIHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgc3RyaW5nXG4gICAqICAgRm9ybSAyOiAobm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBJbiBGb3JtIDEsIHRoZSBzdGFjayB3aWxsIGhhdmUgKGluIHJldmVyc2Ugb3JkZXIpOlxuICAgKlxuICAgKiAgIC0gdGhlIGtleSwgYXMgYSBzdHJpbmdcbiAgICogICAtIHRoZSBjdXJyZW50IGl0ZXJhdGVkIHZhbHVlXG4gICAqICAgLSB0aGUgbWVtb2l6ZWQgaXRlcmF0ZWQgdmFsdWVcbiAgICovXG4gIEl0ZXJhdGUsXG5cbiAgLy8vIENPTVBPTkVOVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBUZXN0IHdoZXRoZXIgYSByZWZlcmVuY2UgY29udGFpbnMgYSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChNYWluIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSW52b2NhdGlvbiwgQ29tcG9uZW50RGVmaW5pdGlvbiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE1haW4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXNDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2xlYW4+XG4gICAqL1xuICBJc0NvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDdXJyeSBhIGNvbXBvbmVudCBkZWZpbml0aW9uIGZvciBhIGxhdGVyIGludm9jYXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3VycnlDb21wb25lbnQgdGVtcGxhdGVNZXRhOiNUZW1wbGF0ZU1ldGEpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uLCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFRlbXBsYXRlTWV0YSwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50RGVmaW5pdGlvblxuICAgKi9cbiAgUmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHVzZXIgcmVwcmVzZW50YXRpb24gb2YgYXJncyBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQXJncyBuYW1lczojQXJyYXk8I3N0cmluZz4gcG9zaXRpb25hbENvdW50OnUzMiBzeW50aGV0aWM6I2Jvb2xlYW4pXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dICDihpJcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGlzIGFyZ3VtZW50cyBvYmplY3QgaXMgb25seSBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nIGludG9cbiAgICogICB1c2VyLXNwZWNpZmllZCBob29rcy4gSXQgaXMgbWVhbnQgdG8gYmUgaW1wbGVtZW50ZWQgYXMgYVxuICAgKiAgIHRyYW5zaWVudCBwcm94eSB0aGF0IHJlYWRzIGludG8gdGhlIHN0YWNrIGFzIG5lZWRlZC5cbiAgICogICBIb2xkaW5nIG9udG8gdGhlIEFyZ3VtZW50cyBhZnRlciB0aGUgY2FsbCBoYXMgY29tcGxldGVkIGlzXG4gICAqICAgaWxsZWdhbC5cbiAgICovXG4gIFB1c2hBcmdzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHMgQXJndW1lbnRzIGZyb20gdGhlIHN0YWNrIGFuZCBjbGVhcnMgdGhlIG5leHQgTiBhcmdzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcEFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMgIOKGklxuICAgKiAgIC4uLlxuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIGFyZ3VtZW50cyBvYmplY3QgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIG9mIGhvdyBtYW55IHVzZXJcbiAgICogc3VwcGxpZWQgYXJncyB0aGUgY29tcG9uZW50IHdhcyBpbnZva2VkIHdpdGguIFRvIGNsZWFyIHRoZW0gZnJvbVxuICAgKiB0aGUgc3RhY2sgd2UgbXVzdCBwb3AgaXQgZnJvbSB0aGUgc3RhY2sgYW5kIGNhbGwgYGNsZWFyYCBvbiBpdFxuICAgKiB0byByZW1vdmUgdGhlIGFyZ3VtZW50IHZhbHVlcyBmcm9tIHRoZSBzdGFjay5cbiAgICovXG4gIFBvcEFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogLi4uXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJlcGFyZUFyZ3Mgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUHJlcGFyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmVwbGFjZXMgQXJndW1lbnRzIG9uIHRoZSBzdGFjayB3aXRoIENhcHR1cmVkQXJndW1lbnRzXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2FwdHVyZUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMgIOKGklxuICAgKiAgIC4uLiwgQ2FwdHVyZWRBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqIFRoZSBBcmd1bWVudHMgb2JqZWN0IGlzIG11dGF0ZWQgaW4gcGxhY2UgYmVjYXVzZSBpdCBpcyB1c3VhbGx5IGNvbnN1bWVkIGltbWVkaWF0ZWx5XG4gICAqIGFmdGVyIGJlaW5nIHB1c2hlZCBvbiB0byB0aGUgc3RhY2suIEluIHNvbWUgc2l0dWF0aW9ucywgc3VjaCBhcyB3aXRoIGN1cnJpZWQgY29tcG9uZW50cyxcbiAgICogaW5mb3JtYXRpb24gYWJvdXQgbW9yZSB0aGFuIG9uZSBBcmd1bWVudCBtYXkgbmVlZCB0byBleGlzdCBvbiB0aGUgc3RhY2sgYXQgb25jZS4gSW4gdGhvc2VcbiAgICogY2FzZXMsIHRoZSBDYXB0dXJlQXJncyBpbnN0cnVjdGlvbiBwb3BzIGFuIEFyZ3VtZW50cyBvYmplY3Qgb2ZmIHRoZSBzdGFjayBhbmQgcmVwbGFjZXMgaXRcbiAgICogd2l0aCB0aGUgaW1tdXRhYmxlIENhcHR1cmVkQXJncyBzbmFwc2hvdC5cbiAgICovXG4gIENhcHR1cmVBcmdzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENyZWF0ZSB0aGUgY29tcG9uZW50IGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENyZWF0ZUNvbXBvbmVudCBmbGFnczp1MzIgc3RhdGU6cmVnaXN0ZXIpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICBGbGFnczpcbiAgICpcbiAgICogICAqIDBiMDAxOiBIYXMgYSBkZWZhdWx0IGJsb2NrXG4gICAqICAgKiAwYjAxMDogSGFzIGFuIGludmVyc2UgYmxvY2tcbiAgICovXG4gIENyZWF0ZUNvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZWdpc3RlciBhIGRlc3RydWN0b3IgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIG5ldyBFbGVtZW50T3BlcmF0aW9ucyBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dENvbXBvbmVudE9wZXJhdGlvbnMpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUHV0Q29tcG9uZW50T3BlcmF0aW9ucyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBjb21wb25lbnQncyBgc2VsZmAgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50U2VsZiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRDb21wb25lbnRTZWxmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRUYWdOYW1lIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wdGlvbjxzdHJpbmc+XG4gICAqL1xuICBHZXRDb21wb25lbnRUYWdOYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEdldCB0aGUgY29tcG9uZW50IGxheW91dCBmcm9tIHRoZSBtYW5hZ2VyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudExheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBQcm9ncmFtU3ltYm9sVGFibGUsIEhhbmRsZVxuICAgKi9cbiAgR2V0Q29tcG9uZW50TGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wdWxhdGUgdGhlIHN0YXRlIHJlZ2lzdGVyIHdpdGggdGhlIGxheW91dCBjdXJyZW50bHlcbiAgICogICBvbiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wdWxhdGVMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBQcm9ncmFtU3ltYm9sVGFibGUsIEhhbmRsZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcHVsYXRlTGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSB0aGUgbGF5b3V0IHJldHVybmVkIGJ5IHRoZSBtYW5hZ2VyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZUNvbXBvbmVudExheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQmVnaW4gYSBuZXcgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVCDihpJcbiAgICogICAuLi4sIENvbXBvbmVudE1hbmFnZXI8VD4sIFRcbiAgICovXG4gIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tbWl0IHRoZSBjdXJyZW50IGNhY2hlIGdyb3VwXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIGRpZENyZWF0ZUVsZW1lbnQgb24gdGhlIGN1cnJlbnQgY29tcG9uZW50IG1hbmFnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEaWRDcmVhdGVFbGVtZW50IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERpZENyZWF0ZUVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIGRpZFJlbmRlckxheW91dCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZFJlbmRlckxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkUmVuZGVyTGF5b3V0LFxuXG4gIC8vLyBQQVJUSUFMU1xuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvb2t1cCBhbmQgaW52b2tlIGEgcGFydGlhbCB0ZW1wbGF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJbnZva2VQYXJ0aWFsIHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplXG59XG4iXX0= |
"use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGVkIGJ5IGEgc3ltYm9sIGZyb21cbiAgICogICB0aGUgdmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0VmFyaWFibGUgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFNldEJsb2NrIHN5bWJvbDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnlcbiAgICogICBhIHN5bWJvbCAoYSBwb3NpdGlvbmFsIG9yIG5hbWVkIGFyZ3VtZW50KSBvbnRvXG4gICAqICAgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hTeW1ib2wgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZVxuICAgKiAgIHN0YWNrLCBhbmQgcHVzaCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgY29uc3RydWN0ZWRcbiAgICogICBieSBgLmdldChwcm9wZXJ0eSlgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldFByb3BlcnR5IHByb3BlcnR5OiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0UHJvcGVydHksXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgc3BlY2lmaWVkIGJvdW5kIGJsb2NrIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldEJsb2NrIGJsb2NrOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBJbmxpbmVCbG9ja1xuICAgKi9cbiAgR2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kIGFuZCBGQUxTRSBpZiBpdCBpcyBub3QuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIGJvb2xlYW5cbiAgICovXG4gIEhhc0Jsb2NrLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBUUlVFIG9udG8gdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogICBpcyBib3VuZCAqYW5kKiBoYXMgYXQgbGVhc3Qgb25lIHNwZWNpZmllZCBmb3JtYWxcbiAgICogICBwYXJhbWV0ZXIsIGFuZCBGQUxTRSBvdGhlcndpc2UuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2tQYXJhbXMgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgKGJvb2xlYW4pXG4gICAqL1xuICBIYXNCbG9ja1BhcmFtcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBjb3VudCBgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZWBzIG9mZiB0aGUgc3RhY2sgYW5kXG4gICAqICAgY29uc3RydWN0IGEgbmV3IENvbmNhdFJlZmVyZW5jZSBmcm9tIHRoZW0gKGluIHJldmVyc2VcbiAgICogICBvcmRlcikuXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29uY2F0IGNvdW50OnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uLCBDb25jYXRSZWZlcmVuY2VcbiAgICovXG4gIENvbmNhdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYW4gT2JqZWN0IGNvbnN0YW50IG9udG8gdGhlIHN0YWNrIHRoYXQgaXMgbm90XG4gICAqICAgYSBKYXZhU2NyaXB0IHByaW1pdGl2ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29uc3RhbnQgY29uc3RhbnQ6I09iamVjdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcGFxdWVcbiAgICovXG4gIENvbnN0YW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgV3JhcCBhIEphdmFTY3JpcHQgcHJpbWl0aXZlIGluIGEgcmVmZXJlbmNlIGFuZCBwdXNoIGl0XG4gICAqICAgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFByaW1pdGl2ZSBjb25zdGFudDojUHJpbWl0aXZlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByaW1pdGl2ZVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgdHdvIGhpZ2ggYml0cyBvZiB0aGUgY29uc3RhbnQgcmVmZXJlbmNlIGRlc2NyaWJlXG4gICAqICAgdGhlIGtpbmQgb2YgcHJpbWl0aXZlOlxuICAgKlxuICAgKiAgIDAwOiBudW1iZXJcbiAgICogICAwMTogc3RyaW5nXG4gICAqICAgMTA6IHRydWUgfCBmYWxzZSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICovXG4gIFByaW1pdGl2ZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBwcmltaXRpdmUgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFByaW1pdGl2ZVJlZmVyZW5jZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByaW1pdGl2ZSDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPlxuICAgKi9cbiAgUHJpbWl0aXZlUmVmZXJlbmNlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IGNoaWxkIHNjb3BlIG9udG8gdGhlIHNjb3BlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENoaWxkU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBBIGNoaWxkIHNjb3BlIGluaGVyaXRzIGZyb20gdGhlIGN1cnJlbnQgcGFyZW50IHNjb3BlLCBhbmQgdGhlcmVmb3JlXG4gICAqICAgc2hhcmVzIGl0cyBsZXhpY2FsIHZhcmlhYmxlcy5cbiAgICovXG4gIENoaWxkU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIHRoZSBjdXJyZW50IHNjb3BlIGZyb20gdGhlIHNjb3BlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNjb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJldHVybiB0byB0aGUgcHJldmlvdXMgZnJhbWUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmV0dXJuKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgYWRkcmVzczpudW1iZXIg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZXR1cm4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIGEgcGxhY2UgaW4gdGhlIHByb2dyYW0gZ2l2ZW4gYW4gb2Zmc2V0XG4gICAqIEZvcm1hdDpcbiAgICogIChSZXR1cm5UbyBvZmZzZXQ6aTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICAuLi4g4oaSXG4gICAqL1xuICBSZXR1cm5UbyxcblxuICAvLy8gSFRNTFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIFRleHQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChUZXh0IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgYSBDb21tZW50IG5vZGUgd2l0aCB2YWx1ZSBgY29udGVudHNgXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWVudCBjb250ZW50czojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgRHluYW1pYyBub2RlIGJhc2VkIG9uIC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQ29udGVudCBpc1RydXN0aW5nOmJvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRHluYW1pY0NvbnRlbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50IHRhZzojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgIHdpdGggc3BlY2lhbCBvcGVyYXRpb25zIHByb3ZpZGVkXG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBFbGVtZW50T3BlcmF0aW9ucyDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAgICAgICAgICAgICAgICAgIC8vIChDb25zdGFudFN0cmluZywgQ29uc3RhbnRPdGhlcjxNb2RpZmllck1hbmFnZXI+LCBDb25zdGFudEV4cHJlc3Npb24pXG5cbiAgLy8vIFdPUk1IT0xFXG4gIFB1c2hSZW1vdGVFbGVtZW50LCAgICAgICAgIC8vICgpXG4gIFBvcFJlbW90ZUVsZW1lbnQsICAgICAgICAgIC8vICgpXG5cbiAgLy8vIERZTkFNSUMgU0NPUEVcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCaW5kIHN0YWNrIHZhbHVlcyBhcyBkeW5hbWljIHZhcmlhYmxlcy5cbiAgICogRm9ybWF0OlxuICAgKiAgIChCaW5kRHluYW1pY1Njb3BlIG5hbWVzOiNBcnJheTwjc3RyaW5nPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgaXMgdXNlZCB0byBleHBvc2UgYC13aXRoLWR5bmFtaWMtdmFyc2AsIGFuZCBpcyBhXG4gICAqICAgbmljaGUgZmVhdHVyZS5cbiAgICovXG4gIEJpbmREeW5hbWljU2NvcGUsXG5cbiAgUHVzaER5bmFtaWNTY29wZSwgICAgICAgICAgLy8gKClcbiAgUG9wRHluYW1pY1Njb3BlLCAgICAgICAgICAgLy8gKClcblxuICAvLy8gVk1cblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21waWxlIHRoZSBJbmxpbmVCbG9jayBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21waWxlQmxvY2spXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21waWxhYmxlQmxvY2sg4oaSXG4gICAqICAgLi4uLCBIYW5kbGVcbiAgICovXG4gIENvbXBpbGVCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc2NvcGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEJsb2NrU2NvcGUgI1Njb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTY29wZVxuICAgKi9cbiAgUHVzaEJsb2NrU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN5bWJvbCB0YWJsZSBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU3ltYm9sVGFibGUgI1N5bWJvbFRhYmxlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZVxuICAgKi9cbiAgUHVzaFN5bWJvbFRhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlVmlydHVhbClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEhhbmRsZSwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VWaXJ0dWFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlU3RhdGljIGhhbmRsZTp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlU3RhdGljLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFlpZWxkIHRvIGEgYmxvY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlWWllbGQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMsIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VZaWVsZCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXAgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXAsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRydWUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSnVtcElmIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wSWYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGZhbHNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBVbmxlc3MgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXBVbmxlc3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAkcmEsICRmcFxuICAgKi9cbiAgUHVzaEZyYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICRyYSwgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTdGFydCB0cmFja2luZyBhIG5ldyBvdXRwdXQgYmxvY2sgdGhhdCBjb3VsZCBjaGFuZ2VcbiAgICogICBpZiBvbmUgb2YgaXRzIGlucHV0cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyIGFyZ3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgU29vbiBhZnRlciB0aGlzIG9wY29kZSwgb25lIG9mIEp1bXAsIEp1bXBJZixcbiAgICogICBvciBKdW1wVW5sZXNzIHdpbGwgcHJvZHVjZSBhbiB1cGRhdGluZyBhc3NlcnRpb24uXG4gICAqICAgSWYgdGhhdCBhc3NlcnRpb24gZmFpbHMsIHRoZSBhcHBlbmRpbmcgVk0gd2lsbFxuICAgKiAgIGJlIHJlLWVudGVyZWQsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gYGZyb21gXG4gICAqICAgdG8gYHRvYCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAgIFRPRE86IFNhdmUgYW5kIHJlc3RvcmUuXG4gICAqL1xuICBFbnRlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEZpbmlzaCB0cmFja2luZyB0aGUgY3VycmVudCBibG9jay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBmaW5hbGl6ZXMgdGhlIHZhbGlkYXRvcnMgdGhhdCB0aGUgdXBkYXRpbmdcbiAgICogICBibG9jayBtdXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0b1xuICAgKiAgIHNraXAgcnVubmluZyB0aGUgY29udGVudHMuXG4gICAqL1xuICBFeGl0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIGJvb2xlYW4gcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRvQm9vbGVhbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Ym9vbD5cbiAgICovXG4gIFRvQm9vbGVhbixcblxuICAvLy8gTElTVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFbnRlciBhIGxpc3QuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXJMaXN0IGFkZHJlc3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSXRlcmF0b3Ig4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFbnRlckxpc3QsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRXhpdCB0aGUgY3VycmVudCBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEV4aXRMaXN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEV4aXRMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQ29udmVydCBhbiBvcGVyYW5kIGFuZCBrZXkgaW50byBhbiBpdGVyYXRvciBhbmRcbiAgICogICBwcmVzZW5jZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0SXRlcmF0b3IpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBrZXk6c3RyaW5nLCBsaXN0OlZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBpdGVyYXRvcjpSZWZlcmVuY2VJdGVyYXRvciwgcHJlc2VudDpQcmVzZW5jZVJlZmVyZW5jZVxuICAgKi9cbiAgUHV0SXRlcmF0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTZXQgdXAgdGhlIHN0YWNrIGZvciBpdGVyYXRpbmcgZm9yIGEgZ2l2ZW4ga2V5LFxuICAgKiAgIG9yIGp1bXAgdG8gYGVuZGAgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvXG4gICAqICAgaXRlcmF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJdGVyYXRlIGVuZDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRm9ybSAxOiAoc29tZXRoaW5nIHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgc3RyaW5nXG4gICAqICAgRm9ybSAyOiAobm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBJbiBGb3JtIDEsIHRoZSBzdGFjayB3aWxsIGhhdmUgKGluIHJldmVyc2Ugb3JkZXIpOlxuICAgKlxuICAgKiAgIC0gdGhlIGtleSwgYXMgYSBzdHJpbmdcbiAgICogICAtIHRoZSBjdXJyZW50IGl0ZXJhdGVkIHZhbHVlXG4gICAqICAgLSB0aGUgbWVtb2l6ZWQgaXRlcmF0ZWQgdmFsdWVcbiAgICovXG4gIEl0ZXJhdGUsXG5cbiAgLy8vIENPTVBPTkVOVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBUZXN0IHdoZXRoZXIgYSByZWZlcmVuY2UgY29udGFpbnMgYSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChNYWluIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSW52b2NhdGlvbiwgQ29tcG9uZW50RGVmaW5pdGlvbiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE1haW4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXNDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2xlYW4+XG4gICAqL1xuICBJc0NvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDdXJyeSBhIGNvbXBvbmVudCBkZWZpbml0aW9uIGZvciBhIGxhdGVyIGludm9jYXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3VycnlDb21wb25lbnQgdGVtcGxhdGVNZXRhOiNUZW1wbGF0ZU1ldGEpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uLCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFRlbXBsYXRlTWV0YSwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIGFuIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBtYW5hZ2VyIG9udG8gdGhlIHN0YWNrIGZyb21cbiAgICogICBhIHJ1bnRpbWUtcmVzb2x2ZWQgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBDb21wb25lbnRNYW5hZ2VyIH1cbiAgICovXG4gIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgdXNlciByZXByZXNlbnRhdGlvbiBvZiBhcmdzIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hBcmdzIG5hbWVzOiNBcnJheTwjc3RyaW5nPiBwb3NpdGlvbmFsQ291bnQ6dTMyIHN5bnRoZXRpYzojYm9vbGVhbilcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0gIOKGklxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgYXJndW1lbnRzIG9iamVjdCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIGNhbGxpbmcgaW50b1xuICAgKiAgIHVzZXItc3BlY2lmaWVkIGhvb2tzLiBJdCBpcyBtZWFudCB0byBiZSBpbXBsZW1lbnRlZCBhcyBhXG4gICAqICAgdHJhbnNpZW50IHByb3h5IHRoYXQgcmVhZHMgaW50byB0aGUgc3RhY2sgYXMgbmVlZGVkLlxuICAgKiAgIEhvbGRpbmcgb250byB0aGUgQXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsIGhhcyBjb21wbGV0ZWQgaXNcbiAgICogICBpbGxlZ2FsLlxuICAgKi9cbiAgUHVzaEFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDcmVhdGUgdGhlIGNvbXBvbmVudCBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDcmVhdGVDb21wb25lbnQgZmxhZ3M6dTMyIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRmxhZ3M6XG4gICAqXG4gICAqICAgKiAwYjAwMTogSGFzIGEgZGVmYXVsdCBibG9ja1xuICAgKiAgICogMGIwMTA6IEhhcyBhbiBpbnZlcnNlIGJsb2NrXG4gICAqL1xuICBDcmVhdGVDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmVnaXN0ZXIgYSBkZXN0cnVjdG9yIGZvciB0aGUgY3VycmVudCBjb21wb25lbnRcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Igc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgRWxlbWVudE9wZXJhdGlvbnMgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXRDb21wb25lbnRPcGVyYXRpb25zKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFB1dENvbXBvbmVudE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHNlbGZgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFNlbGYgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0Q29tcG9uZW50U2VsZixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBjb21wb25lbnQncyBgc2VsZmAgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50VGFnTmFtZSBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcHRpb248c3RyaW5nPlxuICAgKi9cbiAgR2V0Q29tcG9uZW50VGFnTmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBHZXQgdGhlIGNvbXBvbmVudCBsYXlvdXQgZnJvbSB0aGUgbWFuYWdlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBIYW5kbGVcbiAgICovXG4gIEdldENvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcHVsYXRlIHRoZSBzdGF0ZSByZWdpc3RlciB3aXRoIHRoZSBsYXlvdXQgY3VycmVudGx5XG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcHVsYXRlTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3B1bGF0ZUxheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgdGhlIGxheW91dCByZXR1cm5lZCBieSB0aGUgbWFuYWdlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJbnZva2VDb21wb25lbnRMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlQ29tcG9uZW50TGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJlZ2luIGEgbmV3IGNhY2hlIGdyb3VwXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIENvbXBvbmVudE1hbmFnZXI8VD4sIFQg4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUXG4gICAqL1xuICBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbW1pdCB0aGUgY3VycmVudCBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSBkaWRDcmVhdGVFbGVtZW50IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkQ3JlYXRlRWxlbWVudCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRDcmVhdGVFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSBkaWRSZW5kZXJMYXlvdXQgb24gdGhlIGN1cnJlbnQgY29tcG9uZW50IG1hbmFnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEaWRSZW5kZXJMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERpZFJlbmRlckxheW91dCxcblxuICAvLy8gUEFSVElBTFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBMb29rdXAgYW5kIGludm9rZSBhIHBhcnRpYWwgdGVtcGxhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlUGFydGlhbCB0ZW1wbGF0ZU1ldGE6I1RlbXBsYXRlTWV0YSBzeW1ib2xzOiNBcnJheTwjc3RyaW5nPiBldmFsSW5mbzojQXJyYXk8bnVtYmVyPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8c3RyaW5nPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVBhcnRpYWwsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBSZXNvbHZlIHt7Zm9vfX0gaW5zaWRlIGEgcGFydGlhbCwgd2hpY2ggY291bGQgYmUgZWl0aGVyIGEgc2VsZi1sb29rdXBcbiAgICogICBvciBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaXMgaW4tc2NvcGUgZm9yIHRoZSBjYWxsZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVzb2x2ZU1heWJlTG9jYWwgbG9jYWw6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBSZXNvbHZlTWF5YmVMb2NhbCxcblxuICAvLy8gREVCVUdHRVJcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBY3RpdmF0ZSB0aGUgZGVidWdnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEZWJ1Z2dlciBzeW1ib2xzOiNBcnJheTxzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERlYnVnZ2VyLFxuXG4gIC8qKiBUaGUgc2l6ZSBvZiB0aGUgb3Bjb2RlIGxpc3QgKi9cbiAgU2l6ZVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGVkIGJ5IGEgc3ltYm9sIGZyb21cbiAgICogICB0aGUgdmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0VmFyaWFibGUgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFNldEJsb2NrIHN5bWJvbDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnlcbiAgICogICBhIHN5bWJvbCAoYSBwb3NpdGlvbmFsIG9yIG5hbWVkIGFyZ3VtZW50KSBvbnRvXG4gICAqICAgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hTeW1ib2wgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZVxuICAgKiAgIHN0YWNrLCBhbmQgcHVzaCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgY29uc3RydWN0ZWRcbiAgICogICBieSBgLmdldChwcm9wZXJ0eSlgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldFByb3BlcnR5IHByb3BlcnR5OiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0UHJvcGVydHksXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgc3BlY2lmaWVkIGJvdW5kIGJsb2NrIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldEJsb2NrIGJsb2NrOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBJbmxpbmVCbG9ja1xuICAgKi9cbiAgR2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kIGFuZCBGQUxTRSBpZiBpdCBpcyBub3QuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIGJvb2xlYW5cbiAgICovXG4gIEhhc0Jsb2NrLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBUUlVFIG9udG8gdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogICBpcyBib3VuZCAqYW5kKiBoYXMgYXQgbGVhc3Qgb25lIHNwZWNpZmllZCBmb3JtYWxcbiAgICogICBwYXJhbWV0ZXIsIGFuZCBGQUxTRSBvdGhlcndpc2UuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2tQYXJhbXMgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgKGJvb2xlYW4pXG4gICAqL1xuICBIYXNCbG9ja1BhcmFtcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBjb3VudCBgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZWBzIG9mZiB0aGUgc3RhY2sgYW5kXG4gICAqICAgY29uc3RydWN0IGEgbmV3IENvbmNhdFJlZmVyZW5jZSBmcm9tIHRoZW0gKGluIHJldmVyc2VcbiAgICogICBvcmRlcikuXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29uY2F0IGNvdW50OnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uLCBDb25jYXRSZWZlcmVuY2VcbiAgICovXG4gIENvbmNhdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYW4gT2JqZWN0IGNvbnN0YW50IG9udG8gdGhlIHN0YWNrIHRoYXQgaXMgbm90XG4gICAqICAgYSBKYXZhU2NyaXB0IHByaW1pdGl2ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29uc3RhbnQgY29uc3RhbnQ6I09iamVjdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcGFxdWVcbiAgICovXG4gIENvbnN0YW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgV3JhcCBhIEphdmFTY3JpcHQgcHJpbWl0aXZlIGluIGEgcmVmZXJlbmNlIGFuZCBwdXNoIGl0XG4gICAqICAgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFByaW1pdGl2ZSBjb25zdGFudDojUHJpbWl0aXZlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByaW1pdGl2ZVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgdHdvIGhpZ2ggYml0cyBvZiB0aGUgY29uc3RhbnQgcmVmZXJlbmNlIGRlc2NyaWJlXG4gICAqICAgdGhlIGtpbmQgb2YgcHJpbWl0aXZlOlxuICAgKlxuICAgKiAgIDAwOiBudW1iZXJcbiAgICogICAwMTogc3RyaW5nXG4gICAqICAgMTA6IHRydWUgfCBmYWxzZSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICovXG4gIFByaW1pdGl2ZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBwcmltaXRpdmUgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFByaW1pdGl2ZVJlZmVyZW5jZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByaW1pdGl2ZSDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPlxuICAgKi9cbiAgUHJpbWl0aXZlUmVmZXJlbmNlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IGNoaWxkIHNjb3BlIG9udG8gdGhlIHNjb3BlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENoaWxkU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBBIGNoaWxkIHNjb3BlIGluaGVyaXRzIGZyb20gdGhlIGN1cnJlbnQgcGFyZW50IHNjb3BlLCBhbmQgdGhlcmVmb3JlXG4gICAqICAgc2hhcmVzIGl0cyBsZXhpY2FsIHZhcmlhYmxlcy5cbiAgICovXG4gIENoaWxkU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIHRoZSBjdXJyZW50IHNjb3BlIGZyb20gdGhlIHNjb3BlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNjb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJldHVybiB0byB0aGUgcHJldmlvdXMgZnJhbWUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmV0dXJuKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgYWRkcmVzczpudW1iZXIg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZXR1cm4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIGEgcGxhY2UgaW4gdGhlIHByb2dyYW0gZ2l2ZW4gYW4gb2Zmc2V0XG4gICAqIEZvcm1hdDpcbiAgICogIChSZXR1cm5UbyBvZmZzZXQ6aTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICAuLi4g4oaSXG4gICAqL1xuICBSZXR1cm5UbyxcblxuICAvLy8gSFRNTFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIFRleHQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChUZXh0IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgYSBDb21tZW50IG5vZGUgd2l0aCB2YWx1ZSBgY29udGVudHNgXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWVudCBjb250ZW50czojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgRHluYW1pYyBub2RlIGJhc2VkIG9uIC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQ29udGVudCBpc1RydXN0aW5nOmJvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRHluYW1pY0NvbnRlbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50IHRhZzojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgIHdpdGggc3BlY2lhbCBvcGVyYXRpb25zIHByb3ZpZGVkXG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBFbGVtZW50T3BlcmF0aW9ucyDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAgICAgICAgICAgICAgICAgIC8vIChDb25zdGFudFN0cmluZywgQ29uc3RhbnRPdGhlcjxNb2RpZmllck1hbmFnZXI+LCBDb25zdGFudEV4cHJlc3Npb24pXG5cbiAgLy8vIFdPUk1IT0xFXG4gIFB1c2hSZW1vdGVFbGVtZW50LCAgICAgICAgIC8vICgpXG4gIFBvcFJlbW90ZUVsZW1lbnQsICAgICAgICAgIC8vICgpXG5cbiAgLy8vIERZTkFNSUMgU0NPUEVcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCaW5kIHN0YWNrIHZhbHVlcyBhcyBkeW5hbWljIHZhcmlhYmxlcy5cbiAgICogRm9ybWF0OlxuICAgKiAgIChCaW5kRHluYW1pY1Njb3BlIG5hbWVzOiNBcnJheTwjc3RyaW5nPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgaXMgdXNlZCB0byBleHBvc2UgYC13aXRoLWR5bmFtaWMtdmFyc2AsIGFuZCBpcyBhXG4gICAqICAgbmljaGUgZmVhdHVyZS5cbiAgICovXG4gIEJpbmREeW5hbWljU2NvcGUsXG5cbiAgUHVzaER5bmFtaWNTY29wZSwgICAgICAgICAgLy8gKClcbiAgUG9wRHluYW1pY1Njb3BlLCAgICAgICAgICAgLy8gKClcblxuICAvLy8gVk1cblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21waWxlIHRoZSBJbmxpbmVCbG9jayBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21waWxlQmxvY2spXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21waWxhYmxlQmxvY2sg4oaSXG4gICAqICAgLi4uLCBIYW5kbGVcbiAgICovXG4gIENvbXBpbGVCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc2NvcGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEJsb2NrU2NvcGUgI1Njb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTY29wZVxuICAgKi9cbiAgUHVzaEJsb2NrU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN5bWJvbCB0YWJsZSBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU3ltYm9sVGFibGUgI1N5bWJvbFRhYmxlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZVxuICAgKi9cbiAgUHVzaFN5bWJvbFRhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlVmlydHVhbClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEhhbmRsZSwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VWaXJ0dWFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlU3RhdGljIGhhbmRsZTp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlU3RhdGljLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFlpZWxkIHRvIGEgYmxvY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlWWllbGQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMsIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VZaWVsZCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXAgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXAsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRydWUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSnVtcElmIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wSWYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGZhbHNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBVbmxlc3MgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXBVbmxlc3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAkcmEsICRmcFxuICAgKi9cbiAgUHVzaEZyYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICRyYSwgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTdGFydCB0cmFja2luZyBhIG5ldyBvdXRwdXQgYmxvY2sgdGhhdCBjb3VsZCBjaGFuZ2VcbiAgICogICBpZiBvbmUgb2YgaXRzIGlucHV0cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyIGFyZ3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgU29vbiBhZnRlciB0aGlzIG9wY29kZSwgb25lIG9mIEp1bXAsIEp1bXBJZixcbiAgICogICBvciBKdW1wVW5sZXNzIHdpbGwgcHJvZHVjZSBhbiB1cGRhdGluZyBhc3NlcnRpb24uXG4gICAqICAgSWYgdGhhdCBhc3NlcnRpb24gZmFpbHMsIHRoZSBhcHBlbmRpbmcgVk0gd2lsbFxuICAgKiAgIGJlIHJlLWVudGVyZWQsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gYGZyb21gXG4gICAqICAgdG8gYHRvYCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAgIFRPRE86IFNhdmUgYW5kIHJlc3RvcmUuXG4gICAqL1xuICBFbnRlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEZpbmlzaCB0cmFja2luZyB0aGUgY3VycmVudCBibG9jay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBmaW5hbGl6ZXMgdGhlIHZhbGlkYXRvcnMgdGhhdCB0aGUgdXBkYXRpbmdcbiAgICogICBibG9jayBtdXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0b1xuICAgKiAgIHNraXAgcnVubmluZyB0aGUgY29udGVudHMuXG4gICAqL1xuICBFeGl0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIGJvb2xlYW4gcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRvQm9vbGVhbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Ym9vbD5cbiAgICovXG4gIFRvQm9vbGVhbixcblxuICAvLy8gTElTVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFbnRlciBhIGxpc3QuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXJMaXN0IGFkZHJlc3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSXRlcmF0b3Ig4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFbnRlckxpc3QsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRXhpdCB0aGUgY3VycmVudCBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEV4aXRMaXN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEV4aXRMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQ29udmVydCBhbiBvcGVyYW5kIGFuZCBrZXkgaW50byBhbiBpdGVyYXRvciBhbmRcbiAgICogICBwcmVzZW5jZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0SXRlcmF0b3IpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBrZXk6c3RyaW5nLCBsaXN0OlZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBpdGVyYXRvcjpSZWZlcmVuY2VJdGVyYXRvciwgcHJlc2VudDpQcmVzZW5jZVJlZmVyZW5jZVxuICAgKi9cbiAgUHV0SXRlcmF0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTZXQgdXAgdGhlIHN0YWNrIGZvciBpdGVyYXRpbmcgZm9yIGEgZ2l2ZW4ga2V5LFxuICAgKiAgIG9yIGp1bXAgdG8gYGVuZGAgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvXG4gICAqICAgaXRlcmF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJdGVyYXRlIGVuZDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRm9ybSAxOiAoc29tZXRoaW5nIHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgc3RyaW5nXG4gICAqICAgRm9ybSAyOiAobm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBJbiBGb3JtIDEsIHRoZSBzdGFjayB3aWxsIGhhdmUgKGluIHJldmVyc2Ugb3JkZXIpOlxuICAgKlxuICAgKiAgIC0gdGhlIGtleSwgYXMgYSBzdHJpbmdcbiAgICogICAtIHRoZSBjdXJyZW50IGl0ZXJhdGVkIHZhbHVlXG4gICAqICAgLSB0aGUgbWVtb2l6ZWQgaXRlcmF0ZWQgdmFsdWVcbiAgICovXG4gIEl0ZXJhdGUsXG5cbiAgLy8vIENPTVBPTkVOVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBUZXN0IHdoZXRoZXIgYSByZWZlcmVuY2UgY29udGFpbnMgYSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChNYWluIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSW52b2NhdGlvbiwgQ29tcG9uZW50RGVmaW5pdGlvbiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE1haW4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXNDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2xlYW4+XG4gICAqL1xuICBJc0NvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDdXJyeSBhIGNvbXBvbmVudCBkZWZpbml0aW9uIGZvciBhIGxhdGVyIGludm9jYXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3VycnlDb21wb25lbnQgdGVtcGxhdGVNZXRhOiNUZW1wbGF0ZU1ldGEpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uLCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFRlbXBsYXRlTWV0YSwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50RGVmaW5pdGlvblxuICAgKi9cbiAgUmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHVzZXIgcmVwcmVzZW50YXRpb24gb2YgYXJncyBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQXJncyBuYW1lczojQXJyYXk8I3N0cmluZz4gcG9zaXRpb25hbENvdW50OnUzMiBzeW50aGV0aWM6I2Jvb2xlYW4pXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dICDihpJcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGlzIGFyZ3VtZW50cyBvYmplY3QgaXMgb25seSBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nIGludG9cbiAgICogICB1c2VyLXNwZWNpZmllZCBob29rcy4gSXQgaXMgbWVhbnQgdG8gYmUgaW1wbGVtZW50ZWQgYXMgYVxuICAgKiAgIHRyYW5zaWVudCBwcm94eSB0aGF0IHJlYWRzIGludG8gdGhlIHN0YWNrIGFzIG5lZWRlZC5cbiAgICogICBIb2xkaW5nIG9udG8gdGhlIEFyZ3VtZW50cyBhZnRlciB0aGUgY2FsbCBoYXMgY29tcGxldGVkIGlzXG4gICAqICAgaWxsZWdhbC5cbiAgICovXG4gIFB1c2hBcmdzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHMgQXJndW1lbnRzIGZyb20gdGhlIHN0YWNrIGFuZCBjbGVhcnMgdGhlIG5leHQgTiBhcmdzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcEFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMgIOKGklxuICAgKiAgIC4uLlxuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIGFyZ3VtZW50cyBvYmplY3QgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIG9mIGhvdyBtYW55IHVzZXJcbiAgICogc3VwcGxpZWQgYXJncyB0aGUgY29tcG9uZW50IHdhcyBpbnZva2VkIHdpdGguIFRvIGNsZWFyIHRoZW0gZnJvbVxuICAgKiB0aGUgc3RhY2sgd2UgbXVzdCBwb3AgaXQgZnJvbSB0aGUgc3RhY2sgYW5kIGNhbGwgYGNsZWFyYCBvbiBpdFxuICAgKiB0byByZW1vdmUgdGhlIGFyZ3VtZW50IHZhbHVlcyBmcm9tIHRoZSBzdGFjay5cbiAgICovXG4gIFBvcEFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogLi4uXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJlcGFyZUFyZ3Mgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUHJlcGFyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmVwbGFjZXMgQXJndW1lbnRzIG9uIHRoZSBzdGFjayB3aXRoIENhcHR1cmVkQXJndW1lbnRzXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2FwdHVyZUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMgIOKGklxuICAgKiAgIC4uLiwgQ2FwdHVyZWRBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqIFRoZSBBcmd1bWVudHMgb2JqZWN0IGlzIG11dGF0ZWQgaW4gcGxhY2UgYmVjYXVzZSBpdCBpcyB1c3VhbGx5IGNvbnN1bWVkIGltbWVkaWF0ZWx5XG4gICAqIGFmdGVyIGJlaW5nIHB1c2hlZCBvbiB0byB0aGUgc3RhY2suIEluIHNvbWUgc2l0dWF0aW9ucywgc3VjaCBhcyB3aXRoIGN1cnJpZWQgY29tcG9uZW50cyxcbiAgICogaW5mb3JtYXRpb24gYWJvdXQgbW9yZSB0aGFuIG9uZSBBcmd1bWVudCBtYXkgbmVlZCB0byBleGlzdCBvbiB0aGUgc3RhY2sgYXQgb25jZS4gSW4gdGhvc2VcbiAgICogY2FzZXMsIHRoZSBDYXB0dXJlQXJncyBpbnN0cnVjdGlvbiBwb3BzIGFuIEFyZ3VtZW50cyBvYmplY3Qgb2ZmIHRoZSBzdGFjayBhbmQgcmVwbGFjZXMgaXRcbiAgICogd2l0aCB0aGUgaW1tdXRhYmxlIENhcHR1cmVkQXJncyBzbmFwc2hvdC5cbiAgICovXG4gIENhcHR1cmVBcmdzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENyZWF0ZSB0aGUgY29tcG9uZW50IGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENyZWF0ZUNvbXBvbmVudCBmbGFnczp1MzIgc3RhdGU6cmVnaXN0ZXIpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICBGbGFnczpcbiAgICpcbiAgICogICAqIDBiMDAxOiBIYXMgYSBkZWZhdWx0IGJsb2NrXG4gICAqICAgKiAwYjAxMDogSGFzIGFuIGludmVyc2UgYmxvY2tcbiAgICovXG4gIENyZWF0ZUNvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZWdpc3RlciBhIGRlc3RydWN0b3IgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIG5ldyBFbGVtZW50T3BlcmF0aW9ucyBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dENvbXBvbmVudE9wZXJhdGlvbnMpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUHV0Q29tcG9uZW50T3BlcmF0aW9ucyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBjb21wb25lbnQncyBgc2VsZmAgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50U2VsZiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRDb21wb25lbnRTZWxmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRUYWdOYW1lIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wdGlvbjxzdHJpbmc+XG4gICAqL1xuICBHZXRDb21wb25lbnRUYWdOYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEdldCB0aGUgY29tcG9uZW50IGxheW91dCBmcm9tIHRoZSBtYW5hZ2VyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudExheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBQcm9ncmFtU3ltYm9sVGFibGUsIEhhbmRsZVxuICAgKi9cbiAgR2V0Q29tcG9uZW50TGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wdWxhdGUgdGhlIHN0YXRlIHJlZ2lzdGVyIHdpdGggdGhlIGxheW91dCBjdXJyZW50bHlcbiAgICogICBvbiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wdWxhdGVMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBQcm9ncmFtU3ltYm9sVGFibGUsIEhhbmRsZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcHVsYXRlTGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSB0aGUgbGF5b3V0IHJldHVybmVkIGJ5IHRoZSBtYW5hZ2VyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZUNvbXBvbmVudExheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQmVnaW4gYSBuZXcgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVCDihpJcbiAgICogICAuLi4sIENvbXBvbmVudE1hbmFnZXI8VD4sIFRcbiAgICovXG4gIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tbWl0IHRoZSBjdXJyZW50IGNhY2hlIGdyb3VwXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIGRpZENyZWF0ZUVsZW1lbnQgb24gdGhlIGN1cnJlbnQgY29tcG9uZW50IG1hbmFnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEaWRDcmVhdGVFbGVtZW50IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERpZENyZWF0ZUVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIGRpZFJlbmRlckxheW91dCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZFJlbmRlckxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkUmVuZGVyTGF5b3V0LFxuXG4gIC8vLyBQQVJUSUFMU1xuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvb2t1cCBhbmQgaW52b2tlIGEgcGFydGlhbCB0ZW1wbGF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJbnZva2VQYXJ0aWFsIHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplXG59XG4iXX0= |
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGVkIGJ5IGEgc3ltYm9sIGZyb21cbiAgICogICB0aGUgdmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0VmFyaWFibGUgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFNldEJsb2NrIHN5bWJvbDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnlcbiAgICogICBhIHN5bWJvbCAoYSBwb3NpdGlvbmFsIG9yIG5hbWVkIGFyZ3VtZW50KSBvbnRvXG4gICAqICAgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hTeW1ib2wgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZVxuICAgKiAgIHN0YWNrLCBhbmQgcHVzaCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgY29uc3RydWN0ZWRcbiAgICogICBieSBgLmdldChwcm9wZXJ0eSlgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldFByb3BlcnR5IHByb3BlcnR5OiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0UHJvcGVydHksXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgc3BlY2lmaWVkIGJvdW5kIGJsb2NrIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldEJsb2NrIGJsb2NrOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBJbmxpbmVCbG9ja1xuICAgKi9cbiAgR2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kIGFuZCBGQUxTRSBpZiBpdCBpcyBub3QuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIGJvb2xlYW5cbiAgICovXG4gIEhhc0Jsb2NrLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBUUlVFIG9udG8gdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogICBpcyBib3VuZCAqYW5kKiBoYXMgYXQgbGVhc3Qgb25lIHNwZWNpZmllZCBmb3JtYWxcbiAgICogICBwYXJhbWV0ZXIsIGFuZCBGQUxTRSBvdGhlcndpc2UuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2tQYXJhbXMgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgKGJvb2xlYW4pXG4gICAqL1xuICBIYXNCbG9ja1BhcmFtcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBjb3VudCBgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZWBzIG9mZiB0aGUgc3RhY2sgYW5kXG4gICAqICAgY29uc3RydWN0IGEgbmV3IENvbmNhdFJlZmVyZW5jZSBmcm9tIHRoZW0gKGluIHJldmVyc2VcbiAgICogICBvcmRlcikuXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29uY2F0IGNvdW50OnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uLCBDb25jYXRSZWZlcmVuY2VcbiAgICovXG4gIENvbmNhdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYW4gT2JqZWN0IGNvbnN0YW50IG9udG8gdGhlIHN0YWNrIHRoYXQgaXMgbm90XG4gICAqICAgYSBKYXZhU2NyaXB0IHByaW1pdGl2ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29uc3RhbnQgY29uc3RhbnQ6I09iamVjdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcGFxdWVcbiAgICovXG4gIENvbnN0YW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgV3JhcCBhIEphdmFTY3JpcHQgcHJpbWl0aXZlIGluIGEgcmVmZXJlbmNlIGFuZCBwdXNoIGl0XG4gICAqICAgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFByaW1pdGl2ZSBjb25zdGFudDojUHJpbWl0aXZlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByaW1pdGl2ZVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgdHdvIGhpZ2ggYml0cyBvZiB0aGUgY29uc3RhbnQgcmVmZXJlbmNlIGRlc2NyaWJlXG4gICAqICAgdGhlIGtpbmQgb2YgcHJpbWl0aXZlOlxuICAgKlxuICAgKiAgIDAwOiBudW1iZXJcbiAgICogICAwMTogc3RyaW5nXG4gICAqICAgMTA6IHRydWUgfCBmYWxzZSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICovXG4gIFByaW1pdGl2ZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBwcmltaXRpdmUgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFByaW1pdGl2ZVJlZmVyZW5jZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByaW1pdGl2ZSDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPlxuICAgKi9cbiAgUHJpbWl0aXZlUmVmZXJlbmNlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IGNoaWxkIHNjb3BlIG9udG8gdGhlIHNjb3BlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENoaWxkU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBBIGNoaWxkIHNjb3BlIGluaGVyaXRzIGZyb20gdGhlIGN1cnJlbnQgcGFyZW50IHNjb3BlLCBhbmQgdGhlcmVmb3JlXG4gICAqICAgc2hhcmVzIGl0cyBsZXhpY2FsIHZhcmlhYmxlcy5cbiAgICovXG4gIENoaWxkU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIHRoZSBjdXJyZW50IHNjb3BlIGZyb20gdGhlIHNjb3BlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNjb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJldHVybiB0byB0aGUgcHJldmlvdXMgZnJhbWUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmV0dXJuKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgYWRkcmVzczpudW1iZXIg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZXR1cm4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIGEgcGxhY2UgaW4gdGhlIHByb2dyYW0gZ2l2ZW4gYW4gb2Zmc2V0XG4gICAqIEZvcm1hdDpcbiAgICogIChSZXR1cm5UbyBvZmZzZXQ6aTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICAuLi4g4oaSXG4gICAqL1xuICBSZXR1cm5UbyxcblxuICAvLy8gSFRNTFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIFRleHQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChUZXh0IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgYSBDb21tZW50IG5vZGUgd2l0aCB2YWx1ZSBgY29udGVudHNgXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWVudCBjb250ZW50czojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgRHluYW1pYyBub2RlIGJhc2VkIG9uIC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQ29udGVudCBpc1RydXN0aW5nOmJvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRHluYW1pY0NvbnRlbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50IHRhZzojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgIHdpdGggc3BlY2lhbCBvcGVyYXRpb25zIHByb3ZpZGVkXG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBFbGVtZW50T3BlcmF0aW9ucyDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAgICAgICAgICAgICAgICAgIC8vIChDb25zdGFudFN0cmluZywgQ29uc3RhbnRPdGhlcjxNb2RpZmllck1hbmFnZXI+LCBDb25zdGFudEV4cHJlc3Npb24pXG5cbiAgLy8vIFdPUk1IT0xFXG4gIFB1c2hSZW1vdGVFbGVtZW50LCAgICAgICAgIC8vICgpXG4gIFBvcFJlbW90ZUVsZW1lbnQsICAgICAgICAgIC8vICgpXG5cbiAgLy8vIERZTkFNSUMgU0NPUEVcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCaW5kIHN0YWNrIHZhbHVlcyBhcyBkeW5hbWljIHZhcmlhYmxlcy5cbiAgICogRm9ybWF0OlxuICAgKiAgIChCaW5kRHluYW1pY1Njb3BlIG5hbWVzOiNBcnJheTwjc3RyaW5nPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgaXMgdXNlZCB0byBleHBvc2UgYC13aXRoLWR5bmFtaWMtdmFyc2AsIGFuZCBpcyBhXG4gICAqICAgbmljaGUgZmVhdHVyZS5cbiAgICovXG4gIEJpbmREeW5hbWljU2NvcGUsXG5cbiAgUHVzaER5bmFtaWNTY29wZSwgICAgICAgICAgLy8gKClcbiAgUG9wRHluYW1pY1Njb3BlLCAgICAgICAgICAgLy8gKClcblxuICAvLy8gVk1cblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21waWxlIHRoZSBJbmxpbmVCbG9jayBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21waWxlQmxvY2spXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21waWxhYmxlQmxvY2sg4oaSXG4gICAqICAgLi4uLCBIYW5kbGVcbiAgICovXG4gIENvbXBpbGVCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc2NvcGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEJsb2NrU2NvcGUgI1Njb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTY29wZVxuICAgKi9cbiAgUHVzaEJsb2NrU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN5bWJvbCB0YWJsZSBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU3ltYm9sVGFibGUgI1N5bWJvbFRhYmxlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZVxuICAgKi9cbiAgUHVzaFN5bWJvbFRhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlVmlydHVhbClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEhhbmRsZSwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VWaXJ0dWFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlU3RhdGljIGhhbmRsZTp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlU3RhdGljLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFlpZWxkIHRvIGEgYmxvY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlWWllbGQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMsIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VZaWVsZCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXAgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXAsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRydWUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSnVtcElmIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wSWYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGZhbHNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBVbmxlc3MgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXBVbmxlc3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAkcmEsICRmcFxuICAgKi9cbiAgUHVzaEZyYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICRyYSwgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTdGFydCB0cmFja2luZyBhIG5ldyBvdXRwdXQgYmxvY2sgdGhhdCBjb3VsZCBjaGFuZ2VcbiAgICogICBpZiBvbmUgb2YgaXRzIGlucHV0cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyIGFyZ3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgU29vbiBhZnRlciB0aGlzIG9wY29kZSwgb25lIG9mIEp1bXAsIEp1bXBJZixcbiAgICogICBvciBKdW1wVW5sZXNzIHdpbGwgcHJvZHVjZSBhbiB1cGRhdGluZyBhc3NlcnRpb24uXG4gICAqICAgSWYgdGhhdCBhc3NlcnRpb24gZmFpbHMsIHRoZSBhcHBlbmRpbmcgVk0gd2lsbFxuICAgKiAgIGJlIHJlLWVudGVyZWQsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gYGZyb21gXG4gICAqICAgdG8gYHRvYCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAgIFRPRE86IFNhdmUgYW5kIHJlc3RvcmUuXG4gICAqL1xuICBFbnRlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEZpbmlzaCB0cmFja2luZyB0aGUgY3VycmVudCBibG9jay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBmaW5hbGl6ZXMgdGhlIHZhbGlkYXRvcnMgdGhhdCB0aGUgdXBkYXRpbmdcbiAgICogICBibG9jayBtdXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0b1xuICAgKiAgIHNraXAgcnVubmluZyB0aGUgY29udGVudHMuXG4gICAqL1xuICBFeGl0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIGJvb2xlYW4gcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRvQm9vbGVhbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Ym9vbD5cbiAgICovXG4gIFRvQm9vbGVhbixcblxuICAvLy8gTElTVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFbnRlciBhIGxpc3QuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXJMaXN0IGFkZHJlc3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSXRlcmF0b3Ig4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFbnRlckxpc3QsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRXhpdCB0aGUgY3VycmVudCBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEV4aXRMaXN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEV4aXRMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQ29udmVydCBhbiBvcGVyYW5kIGFuZCBrZXkgaW50byBhbiBpdGVyYXRvciBhbmRcbiAgICogICBwcmVzZW5jZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0SXRlcmF0b3IpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBrZXk6c3RyaW5nLCBsaXN0OlZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBpdGVyYXRvcjpSZWZlcmVuY2VJdGVyYXRvciwgcHJlc2VudDpQcmVzZW5jZVJlZmVyZW5jZVxuICAgKi9cbiAgUHV0SXRlcmF0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTZXQgdXAgdGhlIHN0YWNrIGZvciBpdGVyYXRpbmcgZm9yIGEgZ2l2ZW4ga2V5LFxuICAgKiAgIG9yIGp1bXAgdG8gYGVuZGAgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvXG4gICAqICAgaXRlcmF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJdGVyYXRlIGVuZDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRm9ybSAxOiAoc29tZXRoaW5nIHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgc3RyaW5nXG4gICAqICAgRm9ybSAyOiAobm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBJbiBGb3JtIDEsIHRoZSBzdGFjayB3aWxsIGhhdmUgKGluIHJldmVyc2Ugb3JkZXIpOlxuICAgKlxuICAgKiAgIC0gdGhlIGtleSwgYXMgYSBzdHJpbmdcbiAgICogICAtIHRoZSBjdXJyZW50IGl0ZXJhdGVkIHZhbHVlXG4gICAqICAgLSB0aGUgbWVtb2l6ZWQgaXRlcmF0ZWQgdmFsdWVcbiAgICovXG4gIEl0ZXJhdGUsXG5cbiAgLy8vIENPTVBPTkVOVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBUZXN0IHdoZXRoZXIgYSByZWZlcmVuY2UgY29udGFpbnMgYSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChNYWluIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSW52b2NhdGlvbiwgQ29tcG9uZW50RGVmaW5pdGlvbiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE1haW4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXNDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2xlYW4+XG4gICAqL1xuICBJc0NvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDdXJyeSBhIGNvbXBvbmVudCBkZWZpbml0aW9uIGZvciBhIGxhdGVyIGludm9jYXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3VycnlDb21wb25lbnQgdGVtcGxhdGVNZXRhOiNUZW1wbGF0ZU1ldGEpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uLCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFRlbXBsYXRlTWV0YSwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIGFuIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBtYW5hZ2VyIG9udG8gdGhlIHN0YWNrIGZyb21cbiAgICogICBhIHJ1bnRpbWUtcmVzb2x2ZWQgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBDb21wb25lbnRNYW5hZ2VyIH1cbiAgICovXG4gIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgdXNlciByZXByZXNlbnRhdGlvbiBvZiBhcmdzIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hBcmdzIG5hbWVzOiNBcnJheTwjc3RyaW5nPiBwb3NpdGlvbmFsQ291bnQ6dTMyIHN5bnRoZXRpYzojYm9vbGVhbilcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0gIOKGklxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgYXJndW1lbnRzIG9iamVjdCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIGNhbGxpbmcgaW50b1xuICAgKiAgIHVzZXItc3BlY2lmaWVkIGhvb2tzLiBJdCBpcyBtZWFudCB0byBiZSBpbXBsZW1lbnRlZCBhcyBhXG4gICAqICAgdHJhbnNpZW50IHByb3h5IHRoYXQgcmVhZHMgaW50byB0aGUgc3RhY2sgYXMgbmVlZGVkLlxuICAgKiAgIEhvbGRpbmcgb250byB0aGUgQXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsIGhhcyBjb21wbGV0ZWQgaXNcbiAgICogICBpbGxlZ2FsLlxuICAgKi9cbiAgUHVzaEFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDcmVhdGUgdGhlIGNvbXBvbmVudCBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDcmVhdGVDb21wb25lbnQgZmxhZ3M6dTMyIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRmxhZ3M6XG4gICAqXG4gICAqICAgKiAwYjAwMTogSGFzIGEgZGVmYXVsdCBibG9ja1xuICAgKiAgICogMGIwMTA6IEhhcyBhbiBpbnZlcnNlIGJsb2NrXG4gICAqL1xuICBDcmVhdGVDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmVnaXN0ZXIgYSBkZXN0cnVjdG9yIGZvciB0aGUgY3VycmVudCBjb21wb25lbnRcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Igc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgRWxlbWVudE9wZXJhdGlvbnMgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXRDb21wb25lbnRPcGVyYXRpb25zKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFB1dENvbXBvbmVudE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHNlbGZgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFNlbGYgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0Q29tcG9uZW50U2VsZixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBjb21wb25lbnQncyBgc2VsZmAgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50VGFnTmFtZSBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcHRpb248c3RyaW5nPlxuICAgKi9cbiAgR2V0Q29tcG9uZW50VGFnTmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBHZXQgdGhlIGNvbXBvbmVudCBsYXlvdXQgZnJvbSB0aGUgbWFuYWdlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBIYW5kbGVcbiAgICovXG4gIEdldENvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcHVsYXRlIHRoZSBzdGF0ZSByZWdpc3RlciB3aXRoIHRoZSBsYXlvdXQgY3VycmVudGx5XG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcHVsYXRlTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3B1bGF0ZUxheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgdGhlIGxheW91dCByZXR1cm5lZCBieSB0aGUgbWFuYWdlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJbnZva2VDb21wb25lbnRMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlQ29tcG9uZW50TGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJlZ2luIGEgbmV3IGNhY2hlIGdyb3VwXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIENvbXBvbmVudE1hbmFnZXI8VD4sIFQg4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUXG4gICAqL1xuICBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbW1pdCB0aGUgY3VycmVudCBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSBkaWRDcmVhdGVFbGVtZW50IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkQ3JlYXRlRWxlbWVudCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRDcmVhdGVFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSBkaWRSZW5kZXJMYXlvdXQgb24gdGhlIGN1cnJlbnQgY29tcG9uZW50IG1hbmFnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEaWRSZW5kZXJMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERpZFJlbmRlckxheW91dCxcblxuICAvLy8gUEFSVElBTFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBMb29rdXAgYW5kIGludm9rZSBhIHBhcnRpYWwgdGVtcGxhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlUGFydGlhbCB0ZW1wbGF0ZU1ldGE6I1RlbXBsYXRlTWV0YSBzeW1ib2xzOiNBcnJheTwjc3RyaW5nPiBldmFsSW5mbzojQXJyYXk8bnVtYmVyPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8c3RyaW5nPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVBhcnRpYWwsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBSZXNvbHZlIHt7Zm9vfX0gaW5zaWRlIGEgcGFydGlhbCwgd2hpY2ggY291bGQgYmUgZWl0aGVyIGEgc2VsZi1sb29rdXBcbiAgICogICBvciBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaXMgaW4tc2NvcGUgZm9yIHRoZSBjYWxsZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVzb2x2ZU1heWJlTG9jYWwgbG9jYWw6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBSZXNvbHZlTWF5YmVMb2NhbCxcblxuICAvLy8gREVCVUdHRVJcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBY3RpdmF0ZSB0aGUgZGVidWdnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEZWJ1Z2dlciBzeW1ib2xzOiNBcnJheTxzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERlYnVnZ2VyLFxuXG4gIC8qKiBUaGUgc2l6ZSBvZiB0aGUgb3Bjb2RlIGxpc3QgKi9cbiAgU2l6ZVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGVkIGJ5IGEgc3ltYm9sIGZyb21cbiAgICogICB0aGUgdmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0VmFyaWFibGUgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFNldEJsb2NrIHN5bWJvbDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnlcbiAgICogICBhIHN5bWJvbCAoYSBwb3NpdGlvbmFsIG9yIG5hbWVkIGFyZ3VtZW50KSBvbnRvXG4gICAqICAgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hTeW1ib2wgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZVxuICAgKiAgIHN0YWNrLCBhbmQgcHVzaCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgY29uc3RydWN0ZWRcbiAgICogICBieSBgLmdldChwcm9wZXJ0eSlgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldFByb3BlcnR5IHByb3BlcnR5OiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0UHJvcGVydHksXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgc3BlY2lmaWVkIGJvdW5kIGJsb2NrIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldEJsb2NrIGJsb2NrOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBJbmxpbmVCbG9ja1xuICAgKi9cbiAgR2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kIGFuZCBGQUxTRSBpZiBpdCBpcyBub3QuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIGJvb2xlYW5cbiAgICovXG4gIEhhc0Jsb2NrLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBUUlVFIG9udG8gdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogICBpcyBib3VuZCAqYW5kKiBoYXMgYXQgbGVhc3Qgb25lIHNwZWNpZmllZCBmb3JtYWxcbiAgICogICBwYXJhbWV0ZXIsIGFuZCBGQUxTRSBvdGhlcndpc2UuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2tQYXJhbXMgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgKGJvb2xlYW4pXG4gICAqL1xuICBIYXNCbG9ja1BhcmFtcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBjb3VudCBgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZWBzIG9mZiB0aGUgc3RhY2sgYW5kXG4gICAqICAgY29uc3RydWN0IGEgbmV3IENvbmNhdFJlZmVyZW5jZSBmcm9tIHRoZW0gKGluIHJldmVyc2VcbiAgICogICBvcmRlcikuXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29uY2F0IGNvdW50OnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uLCBDb25jYXRSZWZlcmVuY2VcbiAgICovXG4gIENvbmNhdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYW4gT2JqZWN0IGNvbnN0YW50IG9udG8gdGhlIHN0YWNrIHRoYXQgaXMgbm90XG4gICAqICAgYSBKYXZhU2NyaXB0IHByaW1pdGl2ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29uc3RhbnQgY29uc3RhbnQ6I09iamVjdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcGFxdWVcbiAgICovXG4gIENvbnN0YW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgV3JhcCBhIEphdmFTY3JpcHQgcHJpbWl0aXZlIGluIGEgcmVmZXJlbmNlIGFuZCBwdXNoIGl0XG4gICAqICAgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFByaW1pdGl2ZSBjb25zdGFudDojUHJpbWl0aXZlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByaW1pdGl2ZVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgdHdvIGhpZ2ggYml0cyBvZiB0aGUgY29uc3RhbnQgcmVmZXJlbmNlIGRlc2NyaWJlXG4gICAqICAgdGhlIGtpbmQgb2YgcHJpbWl0aXZlOlxuICAgKlxuICAgKiAgIDAwOiBudW1iZXJcbiAgICogICAwMTogc3RyaW5nXG4gICAqICAgMTA6IHRydWUgfCBmYWxzZSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICovXG4gIFByaW1pdGl2ZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBwcmltaXRpdmUgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFByaW1pdGl2ZVJlZmVyZW5jZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByaW1pdGl2ZSDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPlxuICAgKi9cbiAgUHJpbWl0aXZlUmVmZXJlbmNlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IGNoaWxkIHNjb3BlIG9udG8gdGhlIHNjb3BlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENoaWxkU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBBIGNoaWxkIHNjb3BlIGluaGVyaXRzIGZyb20gdGhlIGN1cnJlbnQgcGFyZW50IHNjb3BlLCBhbmQgdGhlcmVmb3JlXG4gICAqICAgc2hhcmVzIGl0cyBsZXhpY2FsIHZhcmlhYmxlcy5cbiAgICovXG4gIENoaWxkU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIHRoZSBjdXJyZW50IHNjb3BlIGZyb20gdGhlIHNjb3BlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNjb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJldHVybiB0byB0aGUgcHJldmlvdXMgZnJhbWUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmV0dXJuKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgYWRkcmVzczpudW1iZXIg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZXR1cm4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIGEgcGxhY2UgaW4gdGhlIHByb2dyYW0gZ2l2ZW4gYW4gb2Zmc2V0XG4gICAqIEZvcm1hdDpcbiAgICogIChSZXR1cm5UbyBvZmZzZXQ6aTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICAuLi4g4oaSXG4gICAqL1xuICBSZXR1cm5UbyxcblxuICAvLy8gSFRNTFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIFRleHQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChUZXh0IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgYSBDb21tZW50IG5vZGUgd2l0aCB2YWx1ZSBgY29udGVudHNgXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWVudCBjb250ZW50czojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgRHluYW1pYyBub2RlIGJhc2VkIG9uIC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQ29udGVudCBpc1RydXN0aW5nOmJvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRHluYW1pY0NvbnRlbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50IHRhZzojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgIHdpdGggc3BlY2lhbCBvcGVyYXRpb25zIHByb3ZpZGVkXG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBFbGVtZW50T3BlcmF0aW9ucyDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAgICAgICAgICAgICAgICAgIC8vIChDb25zdGFudFN0cmluZywgQ29uc3RhbnRPdGhlcjxNb2RpZmllck1hbmFnZXI+LCBDb25zdGFudEV4cHJlc3Npb24pXG5cbiAgLy8vIFdPUk1IT0xFXG4gIFB1c2hSZW1vdGVFbGVtZW50LCAgICAgICAgIC8vICgpXG4gIFBvcFJlbW90ZUVsZW1lbnQsICAgICAgICAgIC8vICgpXG5cbiAgLy8vIERZTkFNSUMgU0NPUEVcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCaW5kIHN0YWNrIHZhbHVlcyBhcyBkeW5hbWljIHZhcmlhYmxlcy5cbiAgICogRm9ybWF0OlxuICAgKiAgIChCaW5kRHluYW1pY1Njb3BlIG5hbWVzOiNBcnJheTwjc3RyaW5nPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgaXMgdXNlZCB0byBleHBvc2UgYC13aXRoLWR5bmFtaWMtdmFyc2AsIGFuZCBpcyBhXG4gICAqICAgbmljaGUgZmVhdHVyZS5cbiAgICovXG4gIEJpbmREeW5hbWljU2NvcGUsXG5cbiAgUHVzaER5bmFtaWNTY29wZSwgICAgICAgICAgLy8gKClcbiAgUG9wRHluYW1pY1Njb3BlLCAgICAgICAgICAgLy8gKClcblxuICAvLy8gVk1cblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21waWxlIHRoZSBJbmxpbmVCbG9jayBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21waWxlQmxvY2spXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21waWxhYmxlQmxvY2sg4oaSXG4gICAqICAgLi4uLCBIYW5kbGVcbiAgICovXG4gIENvbXBpbGVCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc2NvcGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEJsb2NrU2NvcGUgI1Njb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTY29wZVxuICAgKi9cbiAgUHVzaEJsb2NrU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN5bWJvbCB0YWJsZSBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU3ltYm9sVGFibGUgI1N5bWJvbFRhYmxlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZVxuICAgKi9cbiAgUHVzaFN5bWJvbFRhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlVmlydHVhbClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEhhbmRsZSwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VWaXJ0dWFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlU3RhdGljIGhhbmRsZTp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlU3RhdGljLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFlpZWxkIHRvIGEgYmxvY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlWWllbGQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMsIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VZaWVsZCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXAgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXAsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRydWUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSnVtcElmIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wSWYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGZhbHNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBVbmxlc3MgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXBVbmxlc3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAkcmEsICRmcFxuICAgKi9cbiAgUHVzaEZyYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICRyYSwgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTdGFydCB0cmFja2luZyBhIG5ldyBvdXRwdXQgYmxvY2sgdGhhdCBjb3VsZCBjaGFuZ2VcbiAgICogICBpZiBvbmUgb2YgaXRzIGlucHV0cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyIGFyZ3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgU29vbiBhZnRlciB0aGlzIG9wY29kZSwgb25lIG9mIEp1bXAsIEp1bXBJZixcbiAgICogICBvciBKdW1wVW5sZXNzIHdpbGwgcHJvZHVjZSBhbiB1cGRhdGluZyBhc3NlcnRpb24uXG4gICAqICAgSWYgdGhhdCBhc3NlcnRpb24gZmFpbHMsIHRoZSBhcHBlbmRpbmcgVk0gd2lsbFxuICAgKiAgIGJlIHJlLWVudGVyZWQsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gYGZyb21gXG4gICAqICAgdG8gYHRvYCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAgIFRPRE86IFNhdmUgYW5kIHJlc3RvcmUuXG4gICAqL1xuICBFbnRlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEZpbmlzaCB0cmFja2luZyB0aGUgY3VycmVudCBibG9jay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBmaW5hbGl6ZXMgdGhlIHZhbGlkYXRvcnMgdGhhdCB0aGUgdXBkYXRpbmdcbiAgICogICBibG9jayBtdXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0b1xuICAgKiAgIHNraXAgcnVubmluZyB0aGUgY29udGVudHMuXG4gICAqL1xuICBFeGl0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIGJvb2xlYW4gcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRvQm9vbGVhbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Ym9vbD5cbiAgICovXG4gIFRvQm9vbGVhbixcblxuICAvLy8gTElTVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFbnRlciBhIGxpc3QuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXJMaXN0IGFkZHJlc3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSXRlcmF0b3Ig4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFbnRlckxpc3QsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRXhpdCB0aGUgY3VycmVudCBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEV4aXRMaXN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEV4aXRMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQ29udmVydCBhbiBvcGVyYW5kIGFuZCBrZXkgaW50byBhbiBpdGVyYXRvciBhbmRcbiAgICogICBwcmVzZW5jZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0SXRlcmF0b3IpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBrZXk6c3RyaW5nLCBsaXN0OlZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBpdGVyYXRvcjpSZWZlcmVuY2VJdGVyYXRvciwgcHJlc2VudDpQcmVzZW5jZVJlZmVyZW5jZVxuICAgKi9cbiAgUHV0SXRlcmF0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTZXQgdXAgdGhlIHN0YWNrIGZvciBpdGVyYXRpbmcgZm9yIGEgZ2l2ZW4ga2V5LFxuICAgKiAgIG9yIGp1bXAgdG8gYGVuZGAgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvXG4gICAqICAgaXRlcmF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJdGVyYXRlIGVuZDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRm9ybSAxOiAoc29tZXRoaW5nIHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgc3RyaW5nXG4gICAqICAgRm9ybSAyOiAobm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBJbiBGb3JtIDEsIHRoZSBzdGFjayB3aWxsIGhhdmUgKGluIHJldmVyc2Ugb3JkZXIpOlxuICAgKlxuICAgKiAgIC0gdGhlIGtleSwgYXMgYSBzdHJpbmdcbiAgICogICAtIHRoZSBjdXJyZW50IGl0ZXJhdGVkIHZhbHVlXG4gICAqICAgLSB0aGUgbWVtb2l6ZWQgaXRlcmF0ZWQgdmFsdWVcbiAgICovXG4gIEl0ZXJhdGUsXG5cbiAgLy8vIENPTVBPTkVOVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBUZXN0IHdoZXRoZXIgYSByZWZlcmVuY2UgY29udGFpbnMgYSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChNYWluIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSW52b2NhdGlvbiwgQ29tcG9uZW50RGVmaW5pdGlvbiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE1haW4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXNDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2xlYW4+XG4gICAqL1xuICBJc0NvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDdXJyeSBhIGNvbXBvbmVudCBkZWZpbml0aW9uIGZvciBhIGxhdGVyIGludm9jYXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3VycnlDb21wb25lbnQgdGVtcGxhdGVNZXRhOiNUZW1wbGF0ZU1ldGEpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uLCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFRlbXBsYXRlTWV0YSwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50RGVmaW5pdGlvblxuICAgKi9cbiAgUmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHVzZXIgcmVwcmVzZW50YXRpb24gb2YgYXJncyBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQXJncyBuYW1lczojQXJyYXk8I3N0cmluZz4gcG9zaXRpb25hbENvdW50OnUzMiBzeW50aGV0aWM6I2Jvb2xlYW4pXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dICDihpJcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGlzIGFyZ3VtZW50cyBvYmplY3QgaXMgb25seSBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nIGludG9cbiAgICogICB1c2VyLXNwZWNpZmllZCBob29rcy4gSXQgaXMgbWVhbnQgdG8gYmUgaW1wbGVtZW50ZWQgYXMgYVxuICAgKiAgIHRyYW5zaWVudCBwcm94eSB0aGF0IHJlYWRzIGludG8gdGhlIHN0YWNrIGFzIG5lZWRlZC5cbiAgICogICBIb2xkaW5nIG9udG8gdGhlIEFyZ3VtZW50cyBhZnRlciB0aGUgY2FsbCBoYXMgY29tcGxldGVkIGlzXG4gICAqICAgaWxsZWdhbC5cbiAgICovXG4gIFB1c2hBcmdzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHMgQXJndW1lbnRzIGZyb20gdGhlIHN0YWNrIGFuZCBjbGVhcnMgdGhlIG5leHQgTiBhcmdzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcEFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMgIOKGklxuICAgKiAgIC4uLlxuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIGFyZ3VtZW50cyBvYmplY3QgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIG9mIGhvdyBtYW55IHVzZXJcbiAgICogc3VwcGxpZWQgYXJncyB0aGUgY29tcG9uZW50IHdhcyBpbnZva2VkIHdpdGguIFRvIGNsZWFyIHRoZW0gZnJvbVxuICAgKiB0aGUgc3RhY2sgd2UgbXVzdCBwb3AgaXQgZnJvbSB0aGUgc3RhY2sgYW5kIGNhbGwgYGNsZWFyYCBvbiBpdFxuICAgKiB0byByZW1vdmUgdGhlIGFyZ3VtZW50IHZhbHVlcyBmcm9tIHRoZSBzdGFjay5cbiAgICovXG4gIFBvcEFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogLi4uXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJlcGFyZUFyZ3Mgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUHJlcGFyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmVwbGFjZXMgQXJndW1lbnRzIG9uIHRoZSBzdGFjayB3aXRoIENhcHR1cmVkQXJndW1lbnRzXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2FwdHVyZUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMgIOKGklxuICAgKiAgIC4uLiwgQ2FwdHVyZWRBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqIFRoZSBBcmd1bWVudHMgb2JqZWN0IGlzIG11dGF0ZWQgaW4gcGxhY2UgYmVjYXVzZSBpdCBpcyB1c3VhbGx5IGNvbnN1bWVkIGltbWVkaWF0ZWx5XG4gICAqIGFmdGVyIGJlaW5nIHB1c2hlZCBvbiB0byB0aGUgc3RhY2suIEluIHNvbWUgc2l0dWF0aW9ucywgc3VjaCBhcyB3aXRoIGN1cnJpZWQgY29tcG9uZW50cyxcbiAgICogaW5mb3JtYXRpb24gYWJvdXQgbW9yZSB0aGFuIG9uZSBBcmd1bWVudCBtYXkgbmVlZCB0byBleGlzdCBvbiB0aGUgc3RhY2sgYXQgb25jZS4gSW4gdGhvc2VcbiAgICogY2FzZXMsIHRoZSBDYXB0dXJlQXJncyBpbnN0cnVjdGlvbiBwb3BzIGFuIEFyZ3VtZW50cyBvYmplY3Qgb2ZmIHRoZSBzdGFjayBhbmQgcmVwbGFjZXMgaXRcbiAgICogd2l0aCB0aGUgaW1tdXRhYmxlIENhcHR1cmVkQXJncyBzbmFwc2hvdC5cbiAgICovXG4gIENhcHR1cmVBcmdzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENyZWF0ZSB0aGUgY29tcG9uZW50IGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENyZWF0ZUNvbXBvbmVudCBmbGFnczp1MzIgc3RhdGU6cmVnaXN0ZXIpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICBGbGFnczpcbiAgICpcbiAgICogICAqIDBiMDAxOiBIYXMgYSBkZWZhdWx0IGJsb2NrXG4gICAqICAgKiAwYjAxMDogSGFzIGFuIGludmVyc2UgYmxvY2tcbiAgICovXG4gIENyZWF0ZUNvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZWdpc3RlciBhIGRlc3RydWN0b3IgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIG5ldyBFbGVtZW50T3BlcmF0aW9ucyBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dENvbXBvbmVudE9wZXJhdGlvbnMpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUHV0Q29tcG9uZW50T3BlcmF0aW9ucyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBjb21wb25lbnQncyBgc2VsZmAgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50U2VsZiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRDb21wb25lbnRTZWxmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRUYWdOYW1lIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wdGlvbjxzdHJpbmc+XG4gICAqL1xuICBHZXRDb21wb25lbnRUYWdOYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEdldCB0aGUgY29tcG9uZW50IGxheW91dCBmcm9tIHRoZSBtYW5hZ2VyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudExheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBQcm9ncmFtU3ltYm9sVGFibGUsIEhhbmRsZVxuICAgKi9cbiAgR2V0Q29tcG9uZW50TGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wdWxhdGUgdGhlIHN0YXRlIHJlZ2lzdGVyIHdpdGggdGhlIGxheW91dCBjdXJyZW50bHlcbiAgICogICBvbiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wdWxhdGVMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBQcm9ncmFtU3ltYm9sVGFibGUsIEhhbmRsZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcHVsYXRlTGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSB0aGUgbGF5b3V0IHJldHVybmVkIGJ5IHRoZSBtYW5hZ2VyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZUNvbXBvbmVudExheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQmVnaW4gYSBuZXcgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVCDihpJcbiAgICogICAuLi4sIENvbXBvbmVudE1hbmFnZXI8VD4sIFRcbiAgICovXG4gIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tbWl0IHRoZSBjdXJyZW50IGNhY2hlIGdyb3VwXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIGRpZENyZWF0ZUVsZW1lbnQgb24gdGhlIGN1cnJlbnQgY29tcG9uZW50IG1hbmFnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEaWRDcmVhdGVFbGVtZW50IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERpZENyZWF0ZUVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIGRpZFJlbmRlckxheW91dCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZFJlbmRlckxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkUmVuZGVyTGF5b3V0LFxuXG4gIC8vLyBQQVJUSUFMU1xuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvb2t1cCBhbmQgaW52b2tlIGEgcGFydGlhbCB0ZW1wbGF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJbnZva2VQYXJ0aWFsIHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplXG59XG4iXX0= |
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGVkIGJ5IGEgc3ltYm9sIGZyb21cbiAgICogICB0aGUgdmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0VmFyaWFibGUgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFNldEJsb2NrIHN5bWJvbDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnlcbiAgICogICBhIHN5bWJvbCAoYSBwb3NpdGlvbmFsIG9yIG5hbWVkIGFyZ3VtZW50KSBvbnRvXG4gICAqICAgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hTeW1ib2wgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZVxuICAgKiAgIHN0YWNrLCBhbmQgcHVzaCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgY29uc3RydWN0ZWRcbiAgICogICBieSBgLmdldChwcm9wZXJ0eSlgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldFByb3BlcnR5IHByb3BlcnR5OiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0UHJvcGVydHksXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgc3BlY2lmaWVkIGJvdW5kIGJsb2NrIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldEJsb2NrIGJsb2NrOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBJbmxpbmVCbG9ja1xuICAgKi9cbiAgR2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kIGFuZCBGQUxTRSBpZiBpdCBpcyBub3QuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIGJvb2xlYW5cbiAgICovXG4gIEhhc0Jsb2NrLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBUUlVFIG9udG8gdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogICBpcyBib3VuZCAqYW5kKiBoYXMgYXQgbGVhc3Qgb25lIHNwZWNpZmllZCBmb3JtYWxcbiAgICogICBwYXJhbWV0ZXIsIGFuZCBGQUxTRSBvdGhlcndpc2UuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2tQYXJhbXMgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgKGJvb2xlYW4pXG4gICAqL1xuICBIYXNCbG9ja1BhcmFtcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBjb3VudCBgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZWBzIG9mZiB0aGUgc3RhY2sgYW5kXG4gICAqICAgY29uc3RydWN0IGEgbmV3IENvbmNhdFJlZmVyZW5jZSBmcm9tIHRoZW0gKGluIHJldmVyc2VcbiAgICogICBvcmRlcikuXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29uY2F0IGNvdW50OnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uLCBDb25jYXRSZWZlcmVuY2VcbiAgICovXG4gIENvbmNhdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYW4gT2JqZWN0IGNvbnN0YW50IG9udG8gdGhlIHN0YWNrIHRoYXQgaXMgbm90XG4gICAqICAgYSBKYXZhU2NyaXB0IHByaW1pdGl2ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29uc3RhbnQgY29uc3RhbnQ6I09iamVjdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcGFxdWVcbiAgICovXG4gIENvbnN0YW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgV3JhcCBhIEphdmFTY3JpcHQgcHJpbWl0aXZlIGluIGEgcmVmZXJlbmNlIGFuZCBwdXNoIGl0XG4gICAqICAgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFByaW1pdGl2ZSBjb25zdGFudDojUHJpbWl0aXZlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByaW1pdGl2ZVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgdHdvIGhpZ2ggYml0cyBvZiB0aGUgY29uc3RhbnQgcmVmZXJlbmNlIGRlc2NyaWJlXG4gICAqICAgdGhlIGtpbmQgb2YgcHJpbWl0aXZlOlxuICAgKlxuICAgKiAgIDAwOiBudW1iZXJcbiAgICogICAwMTogc3RyaW5nXG4gICAqICAgMTA6IHRydWUgfCBmYWxzZSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICovXG4gIFByaW1pdGl2ZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBwcmltaXRpdmUgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFByaW1pdGl2ZVJlZmVyZW5jZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByaW1pdGl2ZSDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPlxuICAgKi9cbiAgUHJpbWl0aXZlUmVmZXJlbmNlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IGNoaWxkIHNjb3BlIG9udG8gdGhlIHNjb3BlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENoaWxkU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBBIGNoaWxkIHNjb3BlIGluaGVyaXRzIGZyb20gdGhlIGN1cnJlbnQgcGFyZW50IHNjb3BlLCBhbmQgdGhlcmVmb3JlXG4gICAqICAgc2hhcmVzIGl0cyBsZXhpY2FsIHZhcmlhYmxlcy5cbiAgICovXG4gIENoaWxkU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIHRoZSBjdXJyZW50IHNjb3BlIGZyb20gdGhlIHNjb3BlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNjb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJldHVybiB0byB0aGUgcHJldmlvdXMgZnJhbWUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmV0dXJuKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgYWRkcmVzczpudW1iZXIg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZXR1cm4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIGEgcGxhY2UgaW4gdGhlIHByb2dyYW0gZ2l2ZW4gYW4gb2Zmc2V0XG4gICAqIEZvcm1hdDpcbiAgICogIChSZXR1cm5UbyBvZmZzZXQ6aTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICAuLi4g4oaSXG4gICAqL1xuICBSZXR1cm5UbyxcblxuICAvLy8gSFRNTFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIFRleHQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChUZXh0IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgYSBDb21tZW50IG5vZGUgd2l0aCB2YWx1ZSBgY29udGVudHNgXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWVudCBjb250ZW50czojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgRHluYW1pYyBub2RlIGJhc2VkIG9uIC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQ29udGVudCBpc1RydXN0aW5nOmJvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRHluYW1pY0NvbnRlbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50IHRhZzojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgIHdpdGggc3BlY2lhbCBvcGVyYXRpb25zIHByb3ZpZGVkXG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBFbGVtZW50T3BlcmF0aW9ucyDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAgICAgICAgICAgICAgICAgIC8vIChDb25zdGFudFN0cmluZywgQ29uc3RhbnRPdGhlcjxNb2RpZmllck1hbmFnZXI+LCBDb25zdGFudEV4cHJlc3Npb24pXG5cbiAgLy8vIFdPUk1IT0xFXG4gIFB1c2hSZW1vdGVFbGVtZW50LCAgICAgICAgIC8vICgpXG4gIFBvcFJlbW90ZUVsZW1lbnQsICAgICAgICAgIC8vICgpXG5cbiAgLy8vIERZTkFNSUMgU0NPUEVcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCaW5kIHN0YWNrIHZhbHVlcyBhcyBkeW5hbWljIHZhcmlhYmxlcy5cbiAgICogRm9ybWF0OlxuICAgKiAgIChCaW5kRHluYW1pY1Njb3BlIG5hbWVzOiNBcnJheTwjc3RyaW5nPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgaXMgdXNlZCB0byBleHBvc2UgYC13aXRoLWR5bmFtaWMtdmFyc2AsIGFuZCBpcyBhXG4gICAqICAgbmljaGUgZmVhdHVyZS5cbiAgICovXG4gIEJpbmREeW5hbWljU2NvcGUsXG5cbiAgUHVzaER5bmFtaWNTY29wZSwgICAgICAgICAgLy8gKClcbiAgUG9wRHluYW1pY1Njb3BlLCAgICAgICAgICAgLy8gKClcblxuICAvLy8gVk1cblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21waWxlIHRoZSBJbmxpbmVCbG9jayBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21waWxlQmxvY2spXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21waWxhYmxlQmxvY2sg4oaSXG4gICAqICAgLi4uLCBIYW5kbGVcbiAgICovXG4gIENvbXBpbGVCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc2NvcGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEJsb2NrU2NvcGUgI1Njb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTY29wZVxuICAgKi9cbiAgUHVzaEJsb2NrU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN5bWJvbCB0YWJsZSBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU3ltYm9sVGFibGUgI1N5bWJvbFRhYmxlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZVxuICAgKi9cbiAgUHVzaFN5bWJvbFRhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlVmlydHVhbClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEhhbmRsZSwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VWaXJ0dWFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlU3RhdGljIGhhbmRsZTp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlU3RhdGljLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFlpZWxkIHRvIGEgYmxvY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlWWllbGQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMsIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VZaWVsZCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXAgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXAsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRydWUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSnVtcElmIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wSWYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGZhbHNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBVbmxlc3MgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXBVbmxlc3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAkcmEsICRmcFxuICAgKi9cbiAgUHVzaEZyYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICRyYSwgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTdGFydCB0cmFja2luZyBhIG5ldyBvdXRwdXQgYmxvY2sgdGhhdCBjb3VsZCBjaGFuZ2VcbiAgICogICBpZiBvbmUgb2YgaXRzIGlucHV0cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyIGFyZ3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgU29vbiBhZnRlciB0aGlzIG9wY29kZSwgb25lIG9mIEp1bXAsIEp1bXBJZixcbiAgICogICBvciBKdW1wVW5sZXNzIHdpbGwgcHJvZHVjZSBhbiB1cGRhdGluZyBhc3NlcnRpb24uXG4gICAqICAgSWYgdGhhdCBhc3NlcnRpb24gZmFpbHMsIHRoZSBhcHBlbmRpbmcgVk0gd2lsbFxuICAgKiAgIGJlIHJlLWVudGVyZWQsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gYGZyb21gXG4gICAqICAgdG8gYHRvYCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAgIFRPRE86IFNhdmUgYW5kIHJlc3RvcmUuXG4gICAqL1xuICBFbnRlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEZpbmlzaCB0cmFja2luZyB0aGUgY3VycmVudCBibG9jay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBmaW5hbGl6ZXMgdGhlIHZhbGlkYXRvcnMgdGhhdCB0aGUgdXBkYXRpbmdcbiAgICogICBibG9jayBtdXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0b1xuICAgKiAgIHNraXAgcnVubmluZyB0aGUgY29udGVudHMuXG4gICAqL1xuICBFeGl0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIGJvb2xlYW4gcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRvQm9vbGVhbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Ym9vbD5cbiAgICovXG4gIFRvQm9vbGVhbixcblxuICAvLy8gTElTVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFbnRlciBhIGxpc3QuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXJMaXN0IGFkZHJlc3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSXRlcmF0b3Ig4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFbnRlckxpc3QsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRXhpdCB0aGUgY3VycmVudCBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEV4aXRMaXN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEV4aXRMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQ29udmVydCBhbiBvcGVyYW5kIGFuZCBrZXkgaW50byBhbiBpdGVyYXRvciBhbmRcbiAgICogICBwcmVzZW5jZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0SXRlcmF0b3IpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBrZXk6c3RyaW5nLCBsaXN0OlZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBpdGVyYXRvcjpSZWZlcmVuY2VJdGVyYXRvciwgcHJlc2VudDpQcmVzZW5jZVJlZmVyZW5jZVxuICAgKi9cbiAgUHV0SXRlcmF0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTZXQgdXAgdGhlIHN0YWNrIGZvciBpdGVyYXRpbmcgZm9yIGEgZ2l2ZW4ga2V5LFxuICAgKiAgIG9yIGp1bXAgdG8gYGVuZGAgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvXG4gICAqICAgaXRlcmF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJdGVyYXRlIGVuZDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRm9ybSAxOiAoc29tZXRoaW5nIHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgc3RyaW5nXG4gICAqICAgRm9ybSAyOiAobm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBJbiBGb3JtIDEsIHRoZSBzdGFjayB3aWxsIGhhdmUgKGluIHJldmVyc2Ugb3JkZXIpOlxuICAgKlxuICAgKiAgIC0gdGhlIGtleSwgYXMgYSBzdHJpbmdcbiAgICogICAtIHRoZSBjdXJyZW50IGl0ZXJhdGVkIHZhbHVlXG4gICAqICAgLSB0aGUgbWVtb2l6ZWQgaXRlcmF0ZWQgdmFsdWVcbiAgICovXG4gIEl0ZXJhdGUsXG5cbiAgLy8vIENPTVBPTkVOVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBUZXN0IHdoZXRoZXIgYSByZWZlcmVuY2UgY29udGFpbnMgYSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChNYWluIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSW52b2NhdGlvbiwgQ29tcG9uZW50RGVmaW5pdGlvbiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE1haW4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXNDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2xlYW4+XG4gICAqL1xuICBJc0NvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDdXJyeSBhIGNvbXBvbmVudCBkZWZpbml0aW9uIGZvciBhIGxhdGVyIGludm9jYXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3VycnlDb21wb25lbnQgdGVtcGxhdGVNZXRhOiNUZW1wbGF0ZU1ldGEpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uLCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFRlbXBsYXRlTWV0YSwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIGFuIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBtYW5hZ2VyIG9udG8gdGhlIHN0YWNrIGZyb21cbiAgICogICBhIHJ1bnRpbWUtcmVzb2x2ZWQgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBDb21wb25lbnRNYW5hZ2VyIH1cbiAgICovXG4gIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgdXNlciByZXByZXNlbnRhdGlvbiBvZiBhcmdzIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hBcmdzIG5hbWVzOiNBcnJheTwjc3RyaW5nPiBwb3NpdGlvbmFsQ291bnQ6dTMyIHN5bnRoZXRpYzojYm9vbGVhbilcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0gIOKGklxuICAgKiAgIC4uLiwgW1ZlcnNpb25lZFBhdGhSZWZlcmVuY2UgLi4uXSwgQXJndW1lbnRzXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgYXJndW1lbnRzIG9iamVjdCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIGNhbGxpbmcgaW50b1xuICAgKiAgIHVzZXItc3BlY2lmaWVkIGhvb2tzLiBJdCBpcyBtZWFudCB0byBiZSBpbXBsZW1lbnRlZCBhcyBhXG4gICAqICAgdHJhbnNpZW50IHByb3h5IHRoYXQgcmVhZHMgaW50byB0aGUgc3RhY2sgYXMgbmVlZGVkLlxuICAgKiAgIEhvbGRpbmcgb250byB0aGUgQXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsIGhhcyBjb21wbGV0ZWQgaXNcbiAgICogICBpbGxlZ2FsLlxuICAgKi9cbiAgUHVzaEFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wcyBBcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgYW5kIGNsZWFycyB0aGUgbmV4dCBOIGFyZ3MuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wQXJncylcbiAgICpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyAg4oaSXG4gICAqICAgLi4uXG4gICAqXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgYXJndW1lbnRzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgaG93IG1hbnkgdXNlclxuICAgKiBzdXBwbGllZCBhcmdzIHRoZSBjb21wb25lbnQgd2FzIGludm9rZWQgd2l0aC4gVG8gY2xlYXIgdGhlbSBmcm9tXG4gICAqIHRoZSBzdGFjayB3ZSBtdXN0IHBvcCBpdCBmcm9tIHRoZSBzdGFjayBhbmQgY2FsbCBgY2xlYXJgIG9uIGl0XG4gICAqIHRvIHJlbW92ZSB0aGUgYXJndW1lbnQgdmFsdWVzIGZyb20gdGhlIHN0YWNrLlxuICAgKi9cbiAgUG9wQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiAuLi5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQcmVwYXJlQXJncyBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQcmVwYXJlQXJncyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDcmVhdGUgdGhlIGNvbXBvbmVudCBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDcmVhdGVDb21wb25lbnQgZmxhZ3M6dTMyIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRmxhZ3M6XG4gICAqXG4gICAqICAgKiAwYjAwMTogSGFzIGEgZGVmYXVsdCBibG9ja1xuICAgKiAgICogMGIwMTA6IEhhcyBhbiBpbnZlcnNlIGJsb2NrXG4gICAqL1xuICBDcmVhdGVDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmVnaXN0ZXIgYSBkZXN0cnVjdG9yIGZvciB0aGUgY3VycmVudCBjb21wb25lbnRcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Igc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggYSBuZXcgRWxlbWVudE9wZXJhdGlvbnMgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudC5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXRDb21wb25lbnRPcGVyYXRpb25zKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFB1dENvbXBvbmVudE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgY29tcG9uZW50J3MgYHNlbGZgIG9udG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudFNlbGYgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0Q29tcG9uZW50U2VsZixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBjb21wb25lbnQncyBgc2VsZmAgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50VGFnTmFtZSBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcHRpb248c3RyaW5nPlxuICAgKi9cbiAgR2V0Q29tcG9uZW50VGFnTmFtZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBHZXQgdGhlIGNvbXBvbmVudCBsYXlvdXQgZnJvbSB0aGUgbWFuYWdlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBIYW5kbGVcbiAgICovXG4gIEdldENvbXBvbmVudExheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcHVsYXRlIHRoZSBzdGF0ZSByZWdpc3RlciB3aXRoIHRoZSBsYXlvdXQgY3VycmVudGx5XG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcHVsYXRlTGF5b3V0IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBQb3B1bGF0ZUxheW91dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBJbnZva2UgdGhlIGxheW91dCByZXR1cm5lZCBieSB0aGUgbWFuYWdlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJbnZva2VDb21wb25lbnRMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlQ29tcG9uZW50TGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEJlZ2luIGEgbmV3IGNhY2hlIGdyb3VwXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIENvbXBvbmVudE1hbmFnZXI8VD4sIFQg4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnRNYW5hZ2VyPFQ+LCBUXG4gICAqL1xuICBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbW1pdCB0aGUgY3VycmVudCBjYWNoZSBncm91cFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSBkaWRDcmVhdGVFbGVtZW50IG9uIHRoZSBjdXJyZW50IGNvbXBvbmVudCBtYW5hZ2VyXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRGlkQ3JlYXRlRWxlbWVudCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBEaWRDcmVhdGVFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSBkaWRSZW5kZXJMYXlvdXQgb24gdGhlIGN1cnJlbnQgY29tcG9uZW50IG1hbmFnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEaWRSZW5kZXJMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERpZFJlbmRlckxheW91dCxcblxuICAvLy8gUEFSVElBTFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBMb29rdXAgYW5kIGludm9rZSBhIHBhcnRpYWwgdGVtcGxhdGUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlUGFydGlhbCB0ZW1wbGF0ZU1ldGE6I1RlbXBsYXRlTWV0YSBzeW1ib2xzOiNBcnJheTwjc3RyaW5nPiBldmFsSW5mbzojQXJyYXk8bnVtYmVyPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8c3RyaW5nPiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEludm9rZVBhcnRpYWwsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBSZXNvbHZlIHt7Zm9vfX0gaW5zaWRlIGEgcGFydGlhbCwgd2hpY2ggY291bGQgYmUgZWl0aGVyIGEgc2VsZi1sb29rdXBcbiAgICogICBvciBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaXMgaW4tc2NvcGUgZm9yIHRoZSBjYWxsZXIuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmVzb2x2ZU1heWJlTG9jYWwgbG9jYWw6I3N0cmluZylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBSZXNvbHZlTWF5YmVMb2NhbCxcblxuICAvLy8gREVCVUdHRVJcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBY3RpdmF0ZSB0aGUgZGVidWdnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEZWJ1Z2dlciBzeW1ib2xzOiNBcnJheTxzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERlYnVnZ2VyLFxuXG4gIC8qKiBUaGUgc2l6ZSBvZiB0aGUgb3Bjb2RlIGxpc3QgKi9cbiAgU2l6ZVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3ZtL2xpYi9vcGNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBPcCB7XG4gIC8qXG4gICAgRG9jdW1lbnRhdGlvbiBUT0RPOlxuXG4gICAgRG9jdW1lbnQgdGhlIGxvY2FsIHZhcmlhYmxlIGxheW91dCBpbiB0aGUgc3RhY2tcbiAgICBkaWFncmFtIGJlZm9yZS1hbmQtYWZ0ZXIuXG5cbiAgICBEb2N1bWVudCB1cGRhdGluZyBvcGNvZGVzIGVtaXR0aW5nIGZyb20gdW5yZWFjaGFibGVcbiAgICBhcHBlbmQgb3Bjb2RlLlxuXG4gICAgRG9jdW1lbnQgdGhlIGVsZW1lbnQgc3RhY2ssIGJsb2NrIHN0YWNrIGFuZCBMaXN0XG4gICAgYmxvY2sgc3RhY2suXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wY29kZSBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC5cbiAgICovXG4gIEJ1ZyxcblxuICAvLy8gRVhQUkVTU0lPTlNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFdmFsdWF0ZSBhIEhlbHBlci5cbiAgICogRm9ybWF0OlxuICAgKiAgIChIZWxwZXIgaGVscGVyOiNGdW5jdGlvbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50cyDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIEhlbHBlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGVkIGJ5IGEgc3ltYm9sIGZyb21cbiAgICogICB0aGUgdmFsdWUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoU2V0VmFyaWFibGUgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBTZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEJpbmQgdGhlIGJsb2NrIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFNldEJsb2NrIHN5bWJvbDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZSwgSGFuZGxlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaWFibGUgcmVwcmVzZW50ZWQgYnlcbiAgICogICBhIHN5bWJvbCAoYSBwb3NpdGlvbmFsIG9yIG5hbWVkIGFyZ3VtZW50KSBvbnRvXG4gICAqICAgdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hTeW1ib2wgc3ltYm9sOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRWYXJpYWJsZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZVxuICAgKiAgIHN0YWNrLCBhbmQgcHVzaCBhIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgY29uc3RydWN0ZWRcbiAgICogICBieSBgLmdldChwcm9wZXJ0eSlgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldFByb3BlcnR5IHByb3BlcnR5OiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZVxuICAgKi9cbiAgR2V0UHJvcGVydHksXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCB0aGUgc3BlY2lmaWVkIGJvdW5kIGJsb2NrIG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldEJsb2NrIGJsb2NrOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBJbmxpbmVCbG9ja1xuICAgKi9cbiAgR2V0QmxvY2ssXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoIFRSVUUgb250byB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiAgIGlzIGJvdW5kIGFuZCBGQUxTRSBpZiBpdCBpcyBub3QuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2sgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIGJvb2xlYW5cbiAgICovXG4gIEhhc0Jsb2NrLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUHVzaCBUUlVFIG9udG8gdGhlIHN0YWNrIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogICBpcyBib3VuZCAqYW5kKiBoYXMgYXQgbGVhc3Qgb25lIHNwZWNpZmllZCBmb3JtYWxcbiAgICogICBwYXJhbWV0ZXIsIGFuZCBGQUxTRSBvdGhlcndpc2UuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSGFzQmxvY2tQYXJhbXMgYmxvY2s6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgKGJvb2xlYW4pXG4gICAqL1xuICBIYXNCbG9ja1BhcmFtcyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFBvcCBjb3VudCBgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZWBzIG9mZiB0aGUgc3RhY2sgYW5kXG4gICAqICAgY29uc3RydWN0IGEgbmV3IENvbmNhdFJlZmVyZW5jZSBmcm9tIHRoZW0gKGluIHJldmVyc2VcbiAgICogICBvcmRlcikuXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29uY2F0IGNvdW50OnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uLCBDb25jYXRSZWZlcmVuY2VcbiAgICovXG4gIENvbmNhdCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYW4gT2JqZWN0IGNvbnN0YW50IG9udG8gdGhlIHN0YWNrIHRoYXQgaXMgbm90XG4gICAqICAgYSBKYXZhU2NyaXB0IHByaW1pdGl2ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29uc3RhbnQgY29uc3RhbnQ6I09iamVjdClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBPcGFxdWVcbiAgICovXG4gIENvbnN0YW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgV3JhcCBhIEphdmFTY3JpcHQgcHJpbWl0aXZlIGluIGEgcmVmZXJlbmNlIGFuZCBwdXNoIGl0XG4gICAqICAgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaFByaW1pdGl2ZSBjb25zdGFudDojUHJpbWl0aXZlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFByaW1pdGl2ZVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGUgdHdvIGhpZ2ggYml0cyBvZiB0aGUgY29uc3RhbnQgcmVmZXJlbmNlIGRlc2NyaWJlXG4gICAqICAgdGhlIGtpbmQgb2YgcHJpbWl0aXZlOlxuICAgKlxuICAgKiAgIDAwOiBudW1iZXJcbiAgICogICAwMTogc3RyaW5nXG4gICAqICAgMTA6IHRydWUgfCBmYWxzZSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICovXG4gIFByaW1pdGl2ZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb252ZXJ0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGludG8gYSBwcmltaXRpdmUgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFByaW1pdGl2ZVJlZmVyZW5jZSlcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFByaW1pdGl2ZSDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPlxuICAgKi9cbiAgUHJpbWl0aXZlUmVmZXJlbmNlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IER1cGxpY2F0ZSBhbmQgcHVzaCBpdGVtIGZyb20gYW4gb2Zmc2V0IGluIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEdXAgcmVnaXN0ZXI6dTMyLCBvZmZzZXQ6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlLCBPcGFxdWVcbiAgICovXG4gIER1cCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQb3AgTiBpdGVtcyBvZmYgdGhlIHN0YWNrIGFuZCB0aHJvdyBhd2F5IHRoZSB2YWx1ZS5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQb3ApXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBPcGFxdWUsIC4uLiwgT3BhcXVlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChMb2FkIHJlZ2lzdGVyOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIE9wYXF1ZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIExvYWQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICogRm9ybWF0OlxuICAgKiAgIChGZXRjaCByZWdpc3Rlcjp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgT3BhcXVlXG4gICAqL1xuICBGZXRjaCxcblxuICAvLy8gUFJFTFVERSAmIEVYSVRcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IHJvb3Qgc2NvcGUgb250byB0aGUgc2NvcGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUm9vdFNjb3BlIHN5bWJvbHM6dTMyIGJpbmRDYWxsZXJTY29wZTpib29sKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgQSByb290IHNjb3BlIGhhcyBubyBwYXJlbnQgc2NvcGUsIGFuZCB0aGVyZWZvcmUgaW5oZXJpdHMgbm8gbGV4aWNhbFxuICAgKiAgIHZhcmlhYmxlcy4gSWYgYGJpbmRDYWxsZXJTY29wZWAgaXMgYHRydWVgLCB0aGUgY3VycmVudCBzY29wZSByZW1lbWJlcnNcbiAgICogICB0aGUgY2FsbGVyIHNjb3BlIChmb3IgeWllbGRpbmcgYmxvY2tzKS5cbiAgICovXG4gIFJvb3RTY29wZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgbmV3IGNoaWxkIHNjb3BlIG9udG8gdGhlIHNjb3BlIHN0YWNrLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENoaWxkU2NvcGUpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBBIGNoaWxkIHNjb3BlIGluaGVyaXRzIGZyb20gdGhlIGN1cnJlbnQgcGFyZW50IHNjb3BlLCBhbmQgdGhlcmVmb3JlXG4gICAqICAgc2hhcmVzIGl0cyBsZXhpY2FsIHZhcmlhYmxlcy5cbiAgICovXG4gIENoaWxkU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUG9wIHRoZSBjdXJyZW50IHNjb3BlIGZyb20gdGhlIHNjb3BlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcFNjb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcFNjb3BlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFJldHVybiB0byB0aGUgcHJldmlvdXMgZnJhbWUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoUmV0dXJuKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgYWRkcmVzczpudW1iZXIg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZXR1cm4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmV0dXJuIHRvIGEgcGxhY2UgaW4gdGhlIHByb2dyYW0gZ2l2ZW4gYW4gb2Zmc2V0XG4gICAqIEZvcm1hdDpcbiAgICogIChSZXR1cm5UbyBvZmZzZXQ6aTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICAuLi4g4oaSXG4gICAqL1xuICBSZXR1cm5UbyxcblxuICAvLy8gSFRNTFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFwcGVuZCBhIFRleHQgbm9kZSB3aXRoIHZhbHVlIGBjb250ZW50c2BcbiAgICogRm9ybWF0OlxuICAgKiAgIChUZXh0IGNvbnRlbnRzOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgVGV4dCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBBcHBlbmQgYSBDb21tZW50IG5vZGUgd2l0aCB2YWx1ZSBgY29udGVudHNgXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWVudCBjb250ZW50czojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIENvbW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQXBwZW5kIGEgRHluYW1pYyBub2RlIGJhc2VkIG9uIC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQ29udGVudCBpc1RydXN0aW5nOmJvb2xlYW4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRHluYW1pY0NvbnRlbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50IHRhZzojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgT3BlbiBhIG5ldyBFbGVtZW50IG5hbWVkIGB0YWdgIHdpdGggc3BlY2lhbCBvcGVyYXRpb25zIHByb3ZpZGVkXG4gICAqICAgb24gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgdGFnOiNzdHJpbmcpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBFbGVtZW50T3BlcmF0aW9ucyDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBPcGVuIGEgbmV3IEVsZW1lbnQgd2l0aCBhIG5hbWUgb24gdGhlIHN0YWNrIGFuZCB3aXRoIHNwZWNpYWxcbiAgICogICBvcGVyYXRpb25zIHByb3ZpZGVkIG9uIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChPcGVuRHluYW1pY0VsZW1lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBzdHJpbmcsIEVsZW1lbnRPcGVyYXRpb25zIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgT3BlbkR5bmFtaWNFbGVtZW50LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgRWxlbWVudC5cbiAgICogRm9ybWF0OlxuICAgKiAgIChTdGF0aWNBdHRyIG5hbWU6I3N0cmluZyB2YWx1ZTojc3RyaW5nIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgU3RhdGljQXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCB1c2luZyB0aGUgdmFsdWVcbiAgICogICBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEeW5hbWljQXR0ciBuYW1lOiNzdHJpbmcgdHJ1c3Rpbmc6Ym9vbGVhbiBuYW1lc3BhY2U6T3B0aW9uPCNzdHJpbmc+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgSWYgYHRydXN0aW5nYCBpcyBmYWxzZSwgdGhlIGhvc3QgbWF5IHNhbml0aXplIHRoZSBhdHRyaWJ1dGVcbiAgICogICBiYXNlZCB1cG9uIGtub3duIHJpc2tzLlxuICAgKi9cbiAgRHluYW1pY0F0dHIsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdXNpbmcgdGhlIHZhbHVlXG4gICAqICAgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tcG9uZW50QXRyIG5hbWU6I3N0cmluZyB0cnVzdGluZzpib29sZWFuIG5hbWVzcGFjZTpPcHRpb248I3N0cmluZz4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tcG9uZW50QXR0cixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBGaW5pc2ggc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRmx1c2hFbGVtZW50KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEZsdXNoRWxlbWVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDbG9zZSB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENsb3NlRWxlbWVudClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBDbG9zZUVsZW1lbnQsXG5cbiAgLy8vIE1PRElGSUVSXG4gIE1vZGlmaWVyLCAgICAgICAgICAgICAgICAgIC8vIChDb25zdGFudFN0cmluZywgQ29uc3RhbnRPdGhlcjxNb2RpZmllck1hbmFnZXI+LCBDb25zdGFudEV4cHJlc3Npb24pXG5cbiAgLy8vIFdPUk1IT0xFXG4gIFB1c2hSZW1vdGVFbGVtZW50LCAgICAgICAgIC8vICgpXG4gIFBvcFJlbW90ZUVsZW1lbnQsICAgICAgICAgIC8vICgpXG5cbiAgLy8vIERZTkFNSUMgU0NPUEVcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBCaW5kIHN0YWNrIHZhbHVlcyBhcyBkeW5hbWljIHZhcmlhYmxlcy5cbiAgICogRm9ybWF0OlxuICAgKiAgIChCaW5kRHluYW1pY1Njb3BlIG5hbWVzOiNBcnJheTwjc3RyaW5nPilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0g4oaSXG4gICAqICAgLi4uXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiAgIFRoaXMgaXMgdXNlZCB0byBleHBvc2UgYC13aXRoLWR5bmFtaWMtdmFyc2AsIGFuZCBpcyBhXG4gICAqICAgbmljaGUgZmVhdHVyZS5cbiAgICovXG4gIEJpbmREeW5hbWljU2NvcGUsXG5cbiAgUHVzaER5bmFtaWNTY29wZSwgICAgICAgICAgLy8gKClcbiAgUG9wRHluYW1pY1Njb3BlLCAgICAgICAgICAgLy8gKClcblxuICAvLy8gVk1cblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDb21waWxlIHRoZSBJbmxpbmVCbG9jayBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChDb21waWxlQmxvY2spXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21waWxhYmxlQmxvY2sg4oaSXG4gICAqICAgLi4uLCBIYW5kbGVcbiAgICovXG4gIENvbXBpbGVCbG9jayxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIGEgc2NvcGUgb250byB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEJsb2NrU2NvcGUgI1Njb3BlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTY29wZVxuICAgKi9cbiAgUHVzaEJsb2NrU2NvcGUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN5bWJvbCB0YWJsZSBvbnRvIHRoZSBzdGFjay5cbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoU3ltYm9sVGFibGUgI1N5bWJvbFRhYmxlKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwg4oaSXG4gICAqICAgLi4uLCBTeW1ib2xUYWJsZVxuICAgKi9cbiAgUHVzaFN5bWJvbFRhYmxlLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlVmlydHVhbClcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIEhhbmRsZSwg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VWaXJ0dWFsLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEV2YWx1YXRlIHRoZSBoYW5kbGUuXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlU3RhdGljIGhhbmRsZTp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlU3RhdGljLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFlpZWxkIHRvIGEgYmxvY2suXG4gICAqIEZvcm1hdDpcbiAgICogICAoSW52b2tlWWllbGQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMsIFN5bWJvbFRhYmxlLCBIYW5kbGUg4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VZaWVsZCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXAgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXAsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRydWUuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSnVtcElmIHRvOnUzMilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBKdW1wSWYsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBKdW1wIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGlmIHRoZSB2YWx1ZSBhdFxuICAgKiAgIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGZhbHNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEp1bXBVbmxlc3MgdG86dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEp1bXBVbmxlc3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAkcmEsICRmcFxuICAgKi9cbiAgUHVzaEZyYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcCBhIHN0YWNrIGZyYW1lXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEZyYW1lKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgICRyYSwgJGZwIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUG9wRnJhbWUsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTdGFydCB0cmFja2luZyBhIG5ldyBvdXRwdXQgYmxvY2sgdGhhdCBjb3VsZCBjaGFuZ2VcbiAgICogICBpZiBvbmUgb2YgaXRzIGlucHV0cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEVudGVyIGFyZ3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgU29vbiBhZnRlciB0aGlzIG9wY29kZSwgb25lIG9mIEp1bXAsIEp1bXBJZixcbiAgICogICBvciBKdW1wVW5sZXNzIHdpbGwgcHJvZHVjZSBhbiB1cGRhdGluZyBhc3NlcnRpb24uXG4gICAqICAgSWYgdGhhdCBhc3NlcnRpb24gZmFpbHMsIHRoZSBhcHBlbmRpbmcgVk0gd2lsbFxuICAgKiAgIGJlIHJlLWVudGVyZWQsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gYGZyb21gXG4gICAqICAgdG8gYHRvYCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAgIFRPRE86IFNhdmUgYW5kIHJlc3RvcmUuXG4gICAqL1xuICBFbnRlcixcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIEZpbmlzaCB0cmFja2luZyB0aGUgY3VycmVudCBibG9jay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChFeGl0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICogRGVzY3JpcHRpb246XG4gICAqICAgVGhpcyBmaW5hbGl6ZXMgdGhlIHZhbGlkYXRvcnMgdGhhdCB0aGUgdXBkYXRpbmdcbiAgICogICBibG9jayBtdXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0b1xuICAgKiAgIHNraXAgcnVubmluZyB0aGUgY29udGVudHMuXG4gICAqL1xuICBFeGl0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENvbnZlcnQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaW50byBhIGJvb2xlYW4gcmVmZXJlbmNlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFRvQm9vbGVhbilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Ym9vbD5cbiAgICovXG4gIFRvQm9vbGVhbixcblxuICAvLy8gTElTVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBFbnRlciBhIGxpc3QuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoRW50ZXJMaXN0IGFkZHJlc3M6dTMyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSXRlcmF0b3Ig4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBFbnRlckxpc3QsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogRXhpdCB0aGUgY3VycmVudCBsaXN0LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEV4aXRMaXN0KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIEV4aXRMaXN0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgQ29udmVydCBhbiBvcGVyYW5kIGFuZCBrZXkgaW50byBhbiBpdGVyYXRvciBhbmRcbiAgICogICBwcmVzZW5jZSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHV0SXRlcmF0b3IpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBrZXk6c3RyaW5nLCBsaXN0OlZlcnNpb25lZFBhdGhSZWZlcmVuY2Ug4oaSXG4gICAqICAgLi4uLCBpdGVyYXRvcjpSZWZlcmVuY2VJdGVyYXRvciwgcHJlc2VudDpQcmVzZW5jZVJlZmVyZW5jZVxuICAgKi9cbiAgUHV0SXRlcmF0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBTZXQgdXAgdGhlIHN0YWNrIGZvciBpdGVyYXRpbmcgZm9yIGEgZ2l2ZW4ga2V5LFxuICAgKiAgIG9yIGp1bXAgdG8gYGVuZGAgaWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvXG4gICAqICAgaXRlcmF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJdGVyYXRlIGVuZDp1MzIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgRm9ybSAxOiAoc29tZXRoaW5nIHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgc3RyaW5nXG4gICAqICAgRm9ybSAyOiAobm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBJbiBGb3JtIDEsIHRoZSBzdGFjayB3aWxsIGhhdmUgKGluIHJldmVyc2Ugb3JkZXIpOlxuICAgKlxuICAgKiAgIC0gdGhlIGtleSwgYXMgYSBzdHJpbmdcbiAgICogICAtIHRoZSBjdXJyZW50IGl0ZXJhdGVkIHZhbHVlXG4gICAqICAgLSB0aGUgbWVtb2l6ZWQgaXRlcmF0ZWQgdmFsdWVcbiAgICovXG4gIEl0ZXJhdGUsXG5cbiAgLy8vIENPTVBPTkVOVFNcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBUZXN0IHdoZXRoZXIgYSByZWZlcmVuY2UgY29udGFpbnMgYSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChNYWluIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgSW52b2NhdGlvbiwgQ29tcG9uZW50RGVmaW5pdGlvbiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIE1haW4sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogVGVzdCB3aGV0aGVyIGEgcmVmZXJlbmNlIGNvbnRhaW5zIGEgY29tcG9uZW50IGRlZmluaXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoSXNDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPGJvb2xlYW4+XG4gICAqL1xuICBJc0NvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBDdXJyeSBhIGNvbXBvbmVudCBkZWZpbml0aW9uIGZvciBhIGxhdGVyIGludm9jYXRpb24uXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ3VycnlDb21wb25lbnQgdGVtcGxhdGVNZXRhOiNUZW1wbGF0ZU1ldGEpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMg4oaSXG4gICAqICAgLi4uLCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFRlbXBsYXRlTWV0YSwgQ2FwdHVyZWRBcmd1bWVudHMgfVxuICAgKi9cbiAgQ3VycnlDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhbiBhcHByb3ByaWF0ZSBjb21wb25lbnQgbWFuYWdlciBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQ29tcG9uZW50TWFuYWdlciAjQ29tcG9uZW50U3BlYylcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCB7IENvbXBvbmVudERlZmluaXRpb24sIENvbXBvbmVudE1hbmFnZXIgfVxuICAgKi9cbiAgUHVzaENvbXBvbmVudERlZmluaXRpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjpcbiAgICogICBQdXNoZXMgdGhlIENvbXBvbmVudEluc3RhbmNlIG9udG8gdGhlIHN0YWNrIHRoYXQgaXNcbiAgICogICB1c2VkIGR1cmluZyB0aGUgaW52b2tlLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1c2hEeW5hbWljQ29tcG9uZW50SW5zdGFuY2UpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uIOKGklxuICAgKiAgIC4uLiwgeyBDb21wb25lbnREZWZpbml0aW9uLCBtYW5hZ2VyOiBudWxsLCBsYXlvdXQ6IG51bGwsIHN0YXRlOiBudWxsLCBoYW5kbGU6IG51bGwsIHRhYmxlOiBudWxsIH1cbiAgICovXG5cbiAgUHVzaER5bmFtaWNDb21wb25lbnRJbnN0YW5jZSxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2hlcyBhIGN1cnJpZWQgY29tcG9uZW50IGRlZmluaXRpb24gb24gdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHVzaEN1cnJpZWRDb21wb25lbnQpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4g4oaSXG4gICAqICAgLi4uLCBDb21wb25lbnREZWZpbml0aW9uXG4gICAqL1xuICBQdXNoQ3VycmllZENvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFB1c2ggYSByZXNvbHZlZCBjb21wb25lbnQgZGVmaW5pdGlvbiBvbnRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlc29sdmVEeW5hbWljQ29tcG9uZW50IHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IOKGklxuICAgKiAgIC4uLiwgQ29tcG9uZW50RGVmaW5pdGlvblxuICAgKi9cbiAgUmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIHVzZXIgcmVwcmVzZW50YXRpb24gb2YgYXJncyBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChQdXNoQXJncyBuYW1lczojQXJyYXk8I3N0cmluZz4gcG9zaXRpb25hbENvdW50OnUzMiBzeW50aGV0aWM6I2Jvb2xlYW4pXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dICDihpJcbiAgICogICAuLi4sIFtWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIC4uLl0sIEFyZ3VtZW50c1xuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogICBUaGlzIGFyZ3VtZW50cyBvYmplY3QgaXMgb25seSBuZWNlc3Nhcnkgd2hlbiBjYWxsaW5nIGludG9cbiAgICogICB1c2VyLXNwZWNpZmllZCBob29rcy4gSXQgaXMgbWVhbnQgdG8gYmUgaW1wbGVtZW50ZWQgYXMgYVxuICAgKiAgIHRyYW5zaWVudCBwcm94eSB0aGF0IHJlYWRzIGludG8gdGhlIHN0YWNrIGFzIG5lZWRlZC5cbiAgICogICBIb2xkaW5nIG9udG8gdGhlIEFyZ3VtZW50cyBhZnRlciB0aGUgY2FsbCBoYXMgY29tcGxldGVkIGlzXG4gICAqICAgaWxsZWdhbC5cbiAgICovXG4gIFB1c2hBcmdzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFBvcHMgQXJndW1lbnRzIGZyb20gdGhlIHN0YWNrIGFuZCBjbGVhcnMgdGhlIG5leHQgTiBhcmdzLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFBvcEFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBbVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSAuLi5dLCBBcmd1bWVudHMgIOKGklxuICAgKiAgIC4uLlxuICAgKlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIGFyZ3VtZW50cyBvYmplY3QgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIG9mIGhvdyBtYW55IHVzZXJcbiAgICogc3VwcGxpZWQgYXJncyB0aGUgY29tcG9uZW50IHdhcyBpbnZva2VkIHdpdGguIFRvIGNsZWFyIHRoZW0gZnJvbVxuICAgKiB0aGUgc3RhY2sgd2UgbXVzdCBwb3AgaXQgZnJvbSB0aGUgc3RhY2sgYW5kIGNhbGwgYGNsZWFyYCBvbiBpdFxuICAgKiB0byByZW1vdmUgdGhlIGFyZ3VtZW50IHZhbHVlcyBmcm9tIHRoZSBzdGFjay5cbiAgICovXG4gIFBvcEFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogLi4uXG4gICAqIEZvcm1hdDpcbiAgICogICAoUHJlcGFyZUFyZ3Mgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUHJlcGFyZUFyZ3MsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUmVwbGFjZXMgQXJndW1lbnRzIG9uIHRoZSBzdGFjayB3aXRoIENhcHR1cmVkQXJndW1lbnRzXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ2FwdHVyZUFyZ3MpXG4gICAqXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBBcmd1bWVudHMgIOKGklxuICAgKiAgIC4uLiwgQ2FwdHVyZWRBcmd1bWVudHNcbiAgICpcbiAgICogRGVzY3JpcHRpb246XG4gICAqIFRoZSBBcmd1bWVudHMgb2JqZWN0IGlzIG11dGF0ZWQgaW4gcGxhY2UgYmVjYXVzZSBpdCBpcyB1c3VhbGx5IGNvbnN1bWVkIGltbWVkaWF0ZWx5XG4gICAqIGFmdGVyIGJlaW5nIHB1c2hlZCBvbiB0byB0aGUgc3RhY2suIEluIHNvbWUgc2l0dWF0aW9ucywgc3VjaCBhcyB3aXRoIGN1cnJpZWQgY29tcG9uZW50cyxcbiAgICogaW5mb3JtYXRpb24gYWJvdXQgbW9yZSB0aGFuIG9uZSBBcmd1bWVudCBtYXkgbmVlZCB0byBleGlzdCBvbiB0aGUgc3RhY2sgYXQgb25jZS4gSW4gdGhvc2VcbiAgICogY2FzZXMsIHRoZSBDYXB0dXJlQXJncyBpbnN0cnVjdGlvbiBwb3BzIGFuIEFyZ3VtZW50cyBvYmplY3Qgb2ZmIHRoZSBzdGFjayBhbmQgcmVwbGFjZXMgaXRcbiAgICogd2l0aCB0aGUgaW1tdXRhYmxlIENhcHR1cmVkQXJncyBzbmFwc2hvdC5cbiAgICovXG4gIENhcHR1cmVBcmdzLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IENyZWF0ZSB0aGUgY29tcG9uZW50IGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrLlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKENyZWF0ZUNvbXBvbmVudCBmbGFnczp1MzIgc3RhdGU6cmVnaXN0ZXIpXG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICBGbGFnczpcbiAgICpcbiAgICogICAqIDBiMDAxOiBIYXMgYSBkZWZhdWx0IGJsb2NrXG4gICAqICAgKiAwYjAxMDogSGFzIGFuIGludmVyc2UgYmxvY2tcbiAgICovXG4gIENyZWF0ZUNvbXBvbmVudCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBSZWdpc3RlciBhIGRlc3RydWN0b3IgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudFxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogUHVzaCBhIG5ldyBFbGVtZW50T3BlcmF0aW9ucyBmb3IgdGhlIGN1cnJlbnQgY29tcG9uZW50LlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKFB1dENvbXBvbmVudE9wZXJhdGlvbnMpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgUHV0Q29tcG9uZW50T3BlcmF0aW9ucyxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOiBQdXNoIHRoZSBjb21wb25lbnQncyBgc2VsZmAgb250byB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoR2V0Q29tcG9uZW50U2VsZiBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlXG4gICAqL1xuICBHZXRDb21wb25lbnRTZWxmLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IFB1c2ggdGhlIGNvbXBvbmVudCdzIGBzZWxmYCBvbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChHZXRDb21wb25lbnRUYWdOYW1lIHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIE9wdGlvbjxzdHJpbmc+XG4gICAqL1xuICBHZXRDb21wb25lbnRUYWdOYW1lLFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEdldCB0aGUgY29tcG9uZW50IGxheW91dCBmcm9tIHRoZSBtYW5hZ2VyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEdldENvbXBvbmVudExheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uLCBQcm9ncmFtU3ltYm9sVGFibGUsIEhhbmRsZVxuICAgKi9cbiAgR2V0Q29tcG9uZW50TGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246XG4gICAqICAgUG9wdWxhdGUgdGhlIHN0YXRlIHJlZ2lzdGVyIHdpdGggdGhlIGxheW91dCBjdXJyZW50bHlcbiAgICogICBvbiB0aGUgc3RhY2suXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoUG9wdWxhdGVMYXlvdXQgc3RhdGU6cmVnaXN0ZXIpXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uLCBQcm9ncmFtU3ltYm9sVGFibGUsIEhhbmRsZSDihpJcbiAgICogICAuLi5cbiAgICovXG4gIFBvcHVsYXRlTGF5b3V0LFxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEludm9rZSB0aGUgbGF5b3V0IHJldHVybmVkIGJ5IHRoZSBtYW5hZ2VyLlxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKEludm9rZUNvbXBvbmVudExheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4g4oaSXG4gICAqICAgLi4uXG4gICAqL1xuICBJbnZva2VDb21wb25lbnRMYXlvdXQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQmVnaW4gYSBuZXcgY2FjaGUgZ3JvdXBcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgQ29tcG9uZW50TWFuYWdlcjxUPiwgVCDihpJcbiAgICogICAuLi4sIENvbXBvbmVudE1hbmFnZXI8VD4sIFRcbiAgICovXG4gIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogQ29tbWl0IHRoZSBjdXJyZW50IGNhY2hlIGdyb3VwXG4gICAqXG4gICAqIEZvcm1hdDpcbiAgICogICAoQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIGRpZENyZWF0ZUVsZW1lbnQgb24gdGhlIGN1cnJlbnQgY29tcG9uZW50IG1hbmFnZXJcbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChEaWRDcmVhdGVFbGVtZW50IHN0YXRlOnJlZ2lzdGVyKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi5cbiAgICovXG4gIERpZENyZWF0ZUVsZW1lbnQsXG5cbiAgLyoqXG4gICAqIE9wZXJhdGlvbjogSW52b2tlIGRpZFJlbmRlckxheW91dCBvbiB0aGUgY3VycmVudCBjb21wb25lbnQgbWFuYWdlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERpZFJlbmRlckxheW91dCBzdGF0ZTpyZWdpc3RlcilcbiAgICogT3BlcmFuZCBTdGFjazpcbiAgICogICAuLi4sIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGlkUmVuZGVyTGF5b3V0LFxuXG4gIC8vLyBQQVJUSUFMU1xuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IExvb2t1cCBhbmQgaW52b2tlIGEgcGFydGlhbCB0ZW1wbGF0ZS5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChJbnZva2VQYXJ0aWFsIHRlbXBsYXRlTWV0YTojVGVtcGxhdGVNZXRhIHN5bWJvbHM6I0FycmF5PCNzdHJpbmc+IGV2YWxJbmZvOiNBcnJheTxudW1iZXI+KVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxzdHJpbmc+IOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgSW52b2tlUGFydGlhbCxcblxuICAvKipcbiAgICogT3BlcmF0aW9uOlxuICAgKiAgIFJlc29sdmUge3tmb299fSBpbnNpZGUgYSBwYXJ0aWFsLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSBzZWxmLWxvb2t1cFxuICAgKiAgIG9yIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBpcyBpbi1zY29wZSBmb3IgdGhlIGNhbGxlci5cbiAgICpcbiAgICogRm9ybWF0OlxuICAgKiAgIChSZXNvbHZlTWF5YmVMb2NhbCBsb2NhbDojc3RyaW5nKVxuICAgKiBPcGVyYW5kIFN0YWNrOlxuICAgKiAgIC4uLiDihpJcbiAgICogICAuLi4sIFZlcnNpb25lZFBhdGhSZWZlcmVuY2VcbiAgICovXG4gIFJlc29sdmVNYXliZUxvY2FsLFxuXG4gIC8vLyBERUJVR0dFUlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb246IEFjdGl2YXRlIHRoZSBkZWJ1Z2dlclxuICAgKlxuICAgKiBGb3JtYXQ6XG4gICAqICAgKERlYnVnZ2VyIHN5bWJvbHM6I0FycmF5PHN0cmluZz4gZXZhbEluZm86I0FycmF5PG51bWJlcj4pXG4gICAqIE9wZXJhbmQgU3RhY2s6XG4gICAqICAgLi4uIOKGklxuICAgKiAgIC4uLlxuICAgKi9cbiAgRGVidWdnZXIsXG5cbiAgLyoqIFRoZSBzaXplIG9mIHRoZSBvcGNvZGUgbGlzdCAqL1xuICBTaXplXG59XG4iXX0= |
@@ -613,13 +613,35 @@ export declare const enum Op { | ||
* Operation: | ||
* Push an appropriate component manager onto the stack from | ||
* a runtime-resolved component definition. | ||
* Pushes the ComponentInstance onto the stack that is | ||
* used during the invoke. | ||
* | ||
* Format: | ||
* (PushDynamicComponentManager templateMeta:#TemplateMeta) | ||
* (PushDynamicComponentInstance) | ||
* Operand Stack: | ||
* ..., ComponentDefinition → | ||
* ..., { ComponentDefinition, manager: null, layout: null, state: null, handle: null, table: null } | ||
*/ | ||
PushDynamicComponentInstance = 61, | ||
/** | ||
* Operation: | ||
* Pushes a curried component definition on to the stack | ||
* | ||
* Format: | ||
* (PushCurriedComponent) | ||
* Operand Stack: | ||
* ..., VersionedPathReference<Opaque> → | ||
* ..., { ComponentDefinition, ComponentManager } | ||
* ..., ComponentDefinition | ||
*/ | ||
PushDynamicComponentManager = 61, | ||
PushCurriedComponent = 62, | ||
/** | ||
* Operation: | ||
* Push a resolved component definition onto the stack | ||
* | ||
* Format: | ||
* (ResolveDynamicComponent templateMeta:#TemplateMeta) | ||
* Operand Stack: | ||
* ..., VersionedPathReference<Opaque> → | ||
* ..., ComponentDefinition | ||
*/ | ||
ResolveDynamicComponent = 63, | ||
/** | ||
* Operation: Push a user representation of args onto the stack. | ||
@@ -641,3 +663,3 @@ * | ||
*/ | ||
PushArgs = 62, | ||
PushArgs = 64, | ||
/** | ||
@@ -659,3 +681,3 @@ * Operation: Pops Arguments from the stack and clears the next N args. | ||
*/ | ||
PopArgs = 63, | ||
PopArgs = 65, | ||
/** | ||
@@ -669,4 +691,21 @@ * Operation: ... | ||
*/ | ||
PrepareArgs = 64, | ||
PrepareArgs = 66, | ||
/** | ||
* Operation: Replaces Arguments on the stack with CapturedArguments | ||
* Format: | ||
* (CaptureArgs) | ||
* | ||
* Operand Stack: | ||
* ..., Arguments → | ||
* ..., CapturedArguments | ||
* | ||
* Description: | ||
* The Arguments object is mutated in place because it is usually consumed immediately | ||
* after being pushed on to the stack. In some situations, such as with curried components, | ||
* information about more than one Argument may need to exist on the stack at once. In those | ||
* cases, the CaptureArgs instruction pops an Arguments object off the stack and replaces it | ||
* with the immutable CapturedArgs snapshot. | ||
*/ | ||
CaptureArgs = 67, | ||
/** | ||
* Operation: Create the component and push it onto the stack. | ||
@@ -684,3 +723,3 @@ * Format: | ||
*/ | ||
CreateComponent = 65, | ||
CreateComponent = 68, | ||
/** | ||
@@ -695,3 +734,3 @@ * Operation: Register a destructor for the current component | ||
*/ | ||
RegisterComponentDestructor = 66, | ||
RegisterComponentDestructor = 69, | ||
/** | ||
@@ -706,3 +745,3 @@ * Operation: Push a new ElementOperations for the current component. | ||
*/ | ||
PutComponentOperations = 67, | ||
PutComponentOperations = 70, | ||
/** | ||
@@ -717,3 +756,3 @@ * Operation: Push the component's `self` onto the stack. | ||
*/ | ||
GetComponentSelf = 68, | ||
GetComponentSelf = 71, | ||
/** | ||
@@ -728,3 +767,3 @@ * Operation: Push the component's `self` onto the stack. | ||
*/ | ||
GetComponentTagName = 69, | ||
GetComponentTagName = 72, | ||
/** | ||
@@ -739,3 +778,3 @@ * Operation: Get the component layout from the manager. | ||
*/ | ||
GetComponentLayout = 70, | ||
GetComponentLayout = 73, | ||
/** | ||
@@ -752,3 +791,3 @@ * Operation: | ||
*/ | ||
PopulateLayout = 71, | ||
PopulateLayout = 74, | ||
/** | ||
@@ -763,3 +802,3 @@ * Operation: Invoke the layout returned by the manager. | ||
*/ | ||
InvokeComponentLayout = 72, | ||
InvokeComponentLayout = 75, | ||
/** | ||
@@ -774,3 +813,3 @@ * Operation: Begin a new cache group | ||
*/ | ||
BeginComponentTransaction = 73, | ||
BeginComponentTransaction = 76, | ||
/** | ||
@@ -785,3 +824,3 @@ * Operation: Commit the current cache group | ||
*/ | ||
CommitComponentTransaction = 74, | ||
CommitComponentTransaction = 77, | ||
/** | ||
@@ -796,3 +835,3 @@ * Operation: Invoke didCreateElement on the current component manager | ||
*/ | ||
DidCreateElement = 75, | ||
DidCreateElement = 78, | ||
/** | ||
@@ -807,3 +846,3 @@ * Operation: Invoke didRenderLayout on the current component manager | ||
*/ | ||
DidRenderLayout = 76, | ||
DidRenderLayout = 79, | ||
/** | ||
@@ -818,3 +857,3 @@ * Operation: Lookup and invoke a partial template. | ||
*/ | ||
InvokePartial = 77, | ||
InvokePartial = 80, | ||
/** | ||
@@ -831,3 +870,3 @@ * Operation: | ||
*/ | ||
ResolveMaybeLocal = 78, | ||
ResolveMaybeLocal = 81, | ||
/** | ||
@@ -842,5 +881,5 @@ * Operation: Activate the debugger | ||
*/ | ||
Debugger = 79, | ||
Debugger = 82, | ||
/** The size of the opcode list */ | ||
Size = 80, | ||
Size = 83, | ||
} |
{ | ||
"name": "@glimmer/vm", | ||
"version": "0.30.3", | ||
"version": "0.30.4", | ||
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/vm", | ||
"dependencies": { | ||
"@glimmer/util": "^0.30.3", | ||
"@glimmer/interfaces": "^0.30.3", | ||
"@glimmer/program": "^0.30.3" | ||
"@glimmer/util": "^0.30.4", | ||
"@glimmer/interfaces": "^0.30.4", | ||
"@glimmer/program": "^0.30.4" | ||
}, | ||
"devDependencies": { | ||
"@glimmer/debug": "^0.30.3", | ||
"@glimmer/debug": "^0.30.4", | ||
"@types/qunit": "^2.0.31", | ||
@@ -13,0 +13,0 @@ "typescript": "^2.2.0" |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
159434
1087
Updated@glimmer/interfaces@^0.30.4
Updated@glimmer/program@^0.30.4
Updated@glimmer/util@^0.30.4