@codedrifters/configulator 0.0.16 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -132,7 +132,11 @@ class MonorepoProject extends typescript_1.TypeScriptAppProject {
|
|
|
132
132
|
if (options.turbo) {
|
|
133
133
|
new turbo_repo_1.TurboRepo(this, options.turboOptions);
|
|
134
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Specify package manager
|
|
137
|
+
*/
|
|
138
|
+
this.package.file.addOverride("packageManager", "pnpm");
|
|
135
139
|
}
|
|
136
140
|
}
|
|
137
141
|
exports.MonorepoProject = MonorepoProject;
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9tb25vcmVwby1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUEyRDtBQUMzRCxzREFHK0I7QUFDL0IsMkRBQXVEO0FBQ3ZELG9EQUFrRTtBQUNsRSw2Q0FBZ0Q7QUFtQ2hELE1BQWEsZUFBZ0IsU0FBUSxpQ0FBb0I7SUFDdkQsWUFBWSxXQUFtQztRQUM3Qzs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLGNBQWMsR0FHaEI7WUFDRjs7ZUFFRztZQUNILFVBQVUsRUFBRSxJQUFJO1lBRWhCOztlQUVHO1lBQ0gsUUFBUSxFQUFFLElBQUk7WUFFZDs7ZUFFRztZQUNILFFBQVEsRUFBRSxLQUFLO1lBRWY7OztlQUdHO1lBQ0gsYUFBYSxFQUFFO2dCQUNiLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEdBQUcsV0FBVyxDQUFDLGFBQWE7YUFDN0I7WUFFRDs7ZUFFRztZQUNILFVBQVUsRUFBRSxLQUFLO1lBRWpCOztlQUVHO1lBQ0gsSUFBSSxFQUFFLEtBQUs7WUFFWDs7ZUFFRztZQUNILE9BQU8sRUFBRSxLQUFLO1lBRWQ7O2VBRUc7WUFDSCxXQUFXLEVBQUUsS0FBSztZQUVsQjs7OztlQUlHO1lBQ0gsa0JBQWtCLEVBQUUsSUFBSTtZQUV4Qjs7ZUFFRztZQUNILFFBQVEsRUFBRTtnQkFDUixlQUFlLEVBQUU7b0JBQ2YsT0FBTyxFQUFFLFNBQVM7aUJBQ25CO2dCQUNELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUMxQjtZQUVEOztlQUVHO1lBQ0gsS0FBSyxFQUFFLElBQUk7WUFFWDs7ZUFFRztZQUNILE9BQU8sRUFBRSxDQUFDLDRCQUE0QixDQUFDO1NBQ3hDLENBQUM7UUFFRjs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLGVBQWUsR0FBMkM7WUFDOUQ7OztlQUdHO1lBQ0gsb0JBQW9CLEVBQUUsTUFBTTtZQUU1Qjs7O2VBR0c7WUFDSCxjQUFjLEVBQUUsK0JBQWtCLENBQUMsSUFBSTtTQUN4QyxDQUFDO1FBRUY7Ozs7Ozs7O29GQVE0RTtRQUU1RSxNQUFNLE9BQU8sR0FBbUI7WUFDOUIsR0FBRyxjQUFjO1lBQ2pCLEdBQUcsV0FBVztZQUNkLEdBQUcsZUFBZTtTQUNuQixDQUFDO1FBRUYsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXRCOzs7Ozs7O29GQU80RTtRQUU1RTs7V0FFRztRQUNILElBQUkscUJBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2Qjs7V0FFRztRQUNILElBQUksOEJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4Qjs7V0FFRztRQUNILElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksc0JBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRDs7V0FFRztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUE3SkQsMENBNkpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZVBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtcbiAgVHlwZVNjcmlwdEFwcFByb2plY3QsXG4gIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbn0gZnJvbSBcInByb2plbi9saWIvdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgUG5wbVdvcmtzcGFjZSB9IGZyb20gXCIuLi9wbnBtL3BucG0td29ya3NwYWNlXCI7XG5pbXBvcnQgeyBUdXJib1JlcG8sIFR1cmJvUmVwb09wdGlvbnMgfSBmcm9tIFwiLi4vdHVyYm8vdHVyYm8tcmVwb1wiO1xuaW1wb3J0IHsgVlNDb2RlQ29uZmlnIH0gZnJvbSBcIi4uL3ZzY29kZS92c2NvZGVcIjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiBNb25vcmVwbyBSb290IFByb2plY3RcbiAqXG4gKiBUaGlzIHByb2plY3Qgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGJhc2UgcHJvamVjdCBmb3Igb3RoZXIgcHJvamVjdHMgaW4gYVxuICogbW9ub3JlcG8uIFRoZSBNb25vcmVwbyByb290IHByb2plY3QgZ2VuZXJhbGx5IHdvbid0IGNvbnRhaW4gYW55IGNvZGUsIGJ1dCBpdFxuICogd2lsbCBjb250YWluIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBtb25vcmVwbywgc3VjaCBhcyBwYWNrYWdlIG1hbmFnZW1lbnQsXG4gKiBsaW50aW5nLCB0ZXN0aW5nLCBhbmQgb3RoZXIgcHJvamVjdC13aWRlIHNldHRpbmdzLlxuICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbW9ub3JlcG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9ub3JlcG9Qcm9qZWN0T3B0aW9uc1xuICBleHRlbmRzIE9taXQ8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCI+IHtcbiAgLyoqXG4gICAqIFR1cm4gb24gVHVyYm9yZXBvIHN1cHBvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHR1cmJvPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uc2FsIG9wdGlvbnMgZm9yIHR1cmJvcmVwbyBjb25maWdcbiAgICovXG4gIHR1cmJvT3B0aW9ucz86IFR1cmJvUmVwb09wdGlvbnM7XG59XG5cbmludGVyZmFjZSBBcHBsaWVkT3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbiAgICBNb25vcmVwb1Byb2plY3RPcHRpb25zIHt9XG5cbmV4cG9ydCBjbGFzcyBNb25vcmVwb1Byb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKHVzZXJPcHRpb25zOiBNb25vcmVwb1Byb2plY3RPcHRpb25zKSB7XG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogREVGQVVMVCBPUFRJT05TXG4gICAgICpcbiAgICAgKiBUaGVzZSBhcmUgdGhlIGRlZmF1bHQgb3B0aW9ucyB1bmxlc3MgeW91IG92ZXJyaWRlIHdpdGggb3B0aW9uIGlucHV0cy5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBPbWl0PFxuICAgICAgTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucyxcbiAgICAgIFwibmFtZVwiIHwgXCJkZWZhdWx0UmVsZWFzZUJyYW5jaFwiXG4gICAgPiA9IHtcbiAgICAgIC8qKlxuICAgICAgICogVXNlIHR5cGVzY3JpcHQgYmFzZWQgY29uZmlnIGZpbGUuXG4gICAgICAgKi9cbiAgICAgIHByb2plbnJjVHM6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlIFByZXR0aWVyIGZvciBjb2RlIGZvcm1hdHRpbmcuXG4gICAgICAgKi9cbiAgICAgIHByZXR0aWVyOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIE5vdCBsaWNlbnNlZCBieSBkZWZhdWx0LlxuICAgICAgICovXG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG5cbiAgICAgIC8qKlxuICAgICAgICogR2l0SHViIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwby5cbiAgICAgICAqIERvbid0IGVuYWJsZSBtZXJnaWZ5IGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIGdpdGh1Yk9wdGlvbnM6IHtcbiAgICAgICAgbWVyZ2lmeTogZmFsc2UsXG4gICAgICAgIC4uLnVzZXJPcHRpb25zLmdpdGh1Yk9wdGlvbnMsXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFdlIGRvbid0IHdhbnQgc2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGZvciB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBKZXN0IGlzIG5vdCByZXF1aXJlZCBpbiB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBqZXN0OiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCByZWxlYXNlIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIHJlbGVhc2U6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERvbid0IHVwZ3JhZGUgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEaXNhYmxlIHRzY29uZmlnLmRldi5qc29uIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCBnb2luZyB0byBiZVxuICAgICAgICogZGV2ZWxvcGluZyBhbnkgY29kZSBoZXJlLiBJdCdzIGp1c3QgYSB0YXNrIHJ1bm5lciBhbmQgY29uZmlndXJhdGlvblxuICAgICAgICogdG9vbCBmb3Igc3ViLXByb2plY3RzLlxuICAgICAgICovXG4gICAgICBkaXNhYmxlVHNjb25maWdEZXY6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogS2lsbCB0aGUgc3JjZGlyIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCB1c2luZyBvbmUuXG4gICAgICAgKi9cbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHJvb3REaXI6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBFbmFibGUgdHVyYm9yZXBvIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHR1cmJvOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEluY2x1ZGUgc2VsZiBhcyBhIGRldkRlcFxuICAgICAgICovXG4gICAgICBkZXZEZXBzOiBbXCJAY29kZWRyaWZ0ZXJzL2NvbmZpZ3VsYXRvclwiXSxcbiAgICB9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogUkVRVUlSRUQgT1BUSU9OU1xuICAgICAqXG4gICAgICogVGhlc2Ugb3B0aW9ucyBjYW5ub3QgYmUgY2hhbmdlZCBieSB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IHJlcXVpcmVkT3B0aW9uczogT21pdDxUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsIFwibmFtZVwiPiA9IHtcbiAgICAgIC8qKlxuICAgICAgICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGl0J3Mgc3RhbmRhcmQgcHJhY3RpY2UgYW5kIGFsc28gdG8gc2ltcGxpZnlcbiAgICAgICAqIHNvbWUgd29ya2Zsb3cgZGVzaWduLlxuICAgICAgICovXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogXCJtYWluXCIsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlIFBOUE0gaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAoWWFybikuIE11Y2ggb2YgdGhlIGVjb3N5c3RlbSBkZXBlbmRzXG4gICAgICAgKiBvbiBQTlBNIGFuZCBtYWtpbmcgbW9ub3JlcG9zIFBOUE0gb25seSBzaW1wbGlmaWVzIG1hbnkgY29uZmlndXJhdGlvbnMuXG4gICAgICAgKi9cbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSxcbiAgICB9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQ09OU1RSVUNUT1JcbiAgICAgKlxuICAgICAqIENvbWJpbmVzIGRlZmF1bHQgb3B0aW9ucyB3aXRoIHVzZXIgcHJvdmlkZWQgb3B0aW9ucyBhbmQgcmVxdWlyZWQgb3B0aW9ucy5cbiAgICAgKiBTdG9yZSB0aGUgb3B0aW9ucyBpbiBhIGNvbnN0IHNvIHdlIGNhbiB1c2UgdGhlbSBhZnRlciBzdXBlcigpLCBmYXJ0aGVyXG4gICAgICogaW50byB0aGUgY29uc3RydWN0b3IgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IG9wdGlvbnM6IEFwcGxpZWRPcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAuLi51c2VyT3B0aW9ucyxcbiAgICAgIC4uLnJlcXVpcmVkT3B0aW9ucyxcbiAgICB9O1xuXG4gICAgc3VwZXIoeyAuLi5vcHRpb25zIH0pO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQ1VTVE9NIENPTkZJR1NcbiAgICAgKlxuICAgICAqIFdlIGFkZCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgdG8gdGhlIG1vbm9yZXBvIHJvb3QgcHJvamVjdCBiZWxvd1xuICAgICAqIHN1Y2ggYXMgVHVyYm9yZXBvLCBWUyBDb2RlIGNvbmZpZywgYW5kIHRoZSBQTlBNIHdvcmtzcGFjZSBmaWxlLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIFZTQ29kZSBjb25maWd1cmF0aW9uXG4gICAgICovXG4gICAgbmV3IFZTQ29kZUNvbmZpZyh0aGlzKTtcblxuICAgIC8qKlxuICAgICAqIEFkZCB3b3Jrc3BhY2UgZGVmaW5pdGlvbiB0byBQTlBNIHJvb3RcbiAgICAgKi9cbiAgICBuZXcgUG5wbVdvcmtzcGFjZSh0aGlzKTtcblxuICAgIC8qKlxuICAgICAqIFR1cm4gb24gdHVyYm9yZXBvIHN1cHBvcnQgaWYgcmVxdWVzdGVkLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnR1cmJvKSB7XG4gICAgICBuZXcgVHVyYm9SZXBvKHRoaXMsIG9wdGlvbnMudHVyYm9PcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IHBhY2thZ2UgbWFuYWdlclxuICAgICAqL1xuICAgIHRoaXMucGFja2FnZS5maWxlLmFkZE92ZXJyaWRlKFwicGFja2FnZU1hbmFnZXJcIiwgXCJwbnBtXCIpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Component
|
|
1
|
+
import { Component } from "projen/lib";
|
|
2
|
+
import { NodeProject } from "projen/lib/javascript";
|
|
2
3
|
import { TurboRepoTask } from "./turbo-repo-task";
|
|
3
4
|
/*******************************************************************************
|
|
4
5
|
*
|
|
@@ -121,7 +122,7 @@ export interface TurboRepoOptions {
|
|
|
121
122
|
readonly envMode?: string;
|
|
122
123
|
}
|
|
123
124
|
export declare class TurboRepo extends Component {
|
|
124
|
-
readonly project:
|
|
125
|
+
readonly project: NodeProject;
|
|
125
126
|
/**
|
|
126
127
|
* Version of turborepo to use.
|
|
127
128
|
*/
|
|
@@ -263,6 +264,6 @@ export declare class TurboRepo extends Component {
|
|
|
263
264
|
* Sub-Tasks to run
|
|
264
265
|
*/
|
|
265
266
|
readonly tasks: Array<TurboRepoTask>;
|
|
266
|
-
constructor(project:
|
|
267
|
+
constructor(project: NodeProject, options?: TurboRepoOptions);
|
|
267
268
|
preSynthesize(): void;
|
|
268
269
|
}
|
package/lib/turbo/turbo-repo.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TurboRepo = exports.ROOT_CI_TASK_NAME = exports.ROOT_TURBO_TASK_NAME = void 0;
|
|
4
4
|
const lib_1 = require("projen/lib");
|
|
5
|
-
const javascript_1 = require("projen/lib/javascript");
|
|
6
5
|
const turbo_repo_task_1 = require("./turbo-repo-task");
|
|
7
6
|
/*******************************************************************************
|
|
8
7
|
*
|
|
@@ -19,9 +18,6 @@ class TurboRepo extends lib_1.Component {
|
|
|
19
18
|
* Sub-Tasks to run
|
|
20
19
|
*/
|
|
21
20
|
this.tasks = [];
|
|
22
|
-
if (!(project instanceof javascript_1.NodeProject)) {
|
|
23
|
-
throw new Error("TurboRepo can only be added to Node.js projects.");
|
|
24
|
-
}
|
|
25
21
|
this.turboVersion = options.turboVersion ?? "^2.0.0";
|
|
26
22
|
this.isRootProject = project === project.root;
|
|
27
23
|
/**
|
|
@@ -211,4 +207,4 @@ class TurboRepo extends lib_1.Component {
|
|
|
211
207
|
}
|
|
212
208
|
}
|
|
213
209
|
exports.TurboRepo = TurboRepo;
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVyYm8tcmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90dXJiby90dXJiby1yZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQUFnRTtBQUNoRSxzREFBb0Q7QUFDcEQsdURBQWtEO0FBRWxEOzs7O2dGQUlnRjtBQUVuRSxRQUFBLG9CQUFvQixHQUFHLGFBQWEsQ0FBQztBQUNyQyxRQUFBLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztBQTZIN0MsTUFBYSxTQUFVLFNBQVEsZUFBUztJQStKdEMsWUFDa0IsT0FBZ0IsRUFDaEMsVUFBNEIsRUFBRTtRQUU5QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBTmxDOztXQUVHO1FBQ2EsVUFBSyxHQUF5QixFQUFFLENBQUM7UUFRL0MsSUFBSSxDQUFDLENBQUMsT0FBTyxZQUFZLHdCQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBRTlDOztXQUVHO1FBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRDs7V0FFRztRQUNILE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNDOzs7O29GQUk0RTtRQUU1RSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxP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QUFDO1FBRUgsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQXRZRCw4QkFzWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEpzb25GaWxlLCBQcm9qZWN0LCBUYXNrIH0gZnJvbSBcInByb2plbi9saWJcIjtcbmltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgVHVyYm9SZXBvVGFzayB9IGZyb20gXCIuL3R1cmJvLXJlcG8tdGFza1wiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIFR1cmJvIFJlcG8gQ29uZmlnXG4gKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGNvbnN0IFJPT1RfVFVSQk9fVEFTS19OQU1FID0gXCJ0dXJibzpidWlsZFwiO1xuZXhwb3J0IGNvbnN0IFJPT1RfQ0lfVEFTS19OQU1FID0gXCJidWlsZDphbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUdXJib1JlcG9PcHRpb25zIHtcbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdHVyYm9yZXBvIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQ6IHNwZWNpZmllZCBpbiB2ZXJzaW9ucyBmaWxlXG4gICAqL1xuICByZWFkb25seSB0dXJib1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBmcm9tIHRoZSByb290IHR1cmJvLmpzb24gdG8gY3JlYXRlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGEgcGFja2FnZSB1c2luZyBQYWNrYWdlIENvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBUaGUgb25seSB2YWxpZCB2YWx1ZSBmb3IgZXh0ZW5kcyBpcyBbXCIvL1wiXSB0byBpbmhlcml0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgcm9vdCB0dXJiby5qc29uLlxuICAgKiBJZiBleHRlbmRzIGlzIHVzZWQgaW4gdGhlIHJvb3QgdHVyYm8uanNvbiwgaXQgd2lsbCBiZSBpZ25vcmVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNleHRlbmRzXG4gICAqL1xuICByZWFkb25seSBleHRlbmRzPzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2JzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBpbiBhbGwgdGFzayBoYXNoZXMuIElmIGFueSBmaWxlIG1hdGNoaW5nIHRoZXNlIGdsb2JzIGNoYW5nZXMsIGFsbCB0YXNrcyB3aWxsIG1pc3MgY2FjaGUuIEdsb2JzIGFyZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdHVyYm8uanNvbi5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYWxsIGZpbGVzIGluIHNvdXJjZSBjb250cm9sIGluIHRoZSBXb3Jrc3BhY2Ugcm9vdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdsb2JhbCBoYXNoLlxuICAgKlxuICAgKiBHbG9icyBtdXN0IGJlIGluIHRoZSByZXBvc2l0b3J5J3Mgc291cmNlIGNvbnRyb2wgcm9vdC4gR2xvYnMgb3V0c2lkZSBvZiB0aGUgcmVwb3NpdG9yeSBhcmVuJ3Qgc3VwcG9ydGVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxkZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbERlcGVuZGVuY2llcz86IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBpbXBhY3QgdGhlIGhhc2ggb2YgYWxsIHRhc2tzLiBBbnkgY2hhbmdlIHRvIHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGNhdXNlIGFsbCB0YXNrcyB0byBtaXNzIGNhY2hlLlxuICAgKlxuICAgKiBGb3IgbW9yZSBvbiB3aWxkY2FyZCBhbmQgbmVnYXRpb24gc3ludGF4LCBzZWUgdGhlIGVudiBzZWN0aW9uLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxlbnZcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbEVudj86IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byB0YXNrcy5cbiAgICogVXNpbmcgdGhpcyBrZXkgb3B0cyBhbGwgdGFza3MgaW50byBTdHJpY3RcbiAgICogRW52aXJvbm1lbnQgVmFyaWFibGUgTW9kZS5cbiAgICpcbiAgICogQWRkaXRpb25hbGx5LCBUdXJib3JlcG8gaGFzIGEgYnVpbHQtaW4gc2V0IG9mIGdsb2JhbCBwYXNzdGhyb3VnaCB2YXJpYWJsZXNcbiAgICogZm9yIGNvbW1vbiBjYXNlcywgbGlrZSBvcGVyYXRpbmcgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhpc1xuICAgKiBpbmNsdWRlcyB2YXJpYWJsZXMgbGlrZSBIT01FLCBQQVRILCBBUFBEQVRBLCBTSEVMTCwgUFdELCBhbmQgbW9yZS4gVGhlIGZ1bGxcbiAgICogbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgKlxuICAgKiBQYXNzdGhyb3VnaCB2YWx1ZXMgZG8gbm90IGNvbnRyaWJ1dGUgdG8gaGFzaGVzIGZvciBjYWNoaW5nXG4gICAqXG4gICAqIElmIHlvdSB3YW50IGNoYW5nZXMgaW4gdGhlc2UgdmFyaWFibGVzIHRvIGNhdXNlIGNhY2hlIG1pc3NlcywgeW91IHdpbGwgbmVlZFxuICAgKiB0byBpbmNsdWRlIHRoZW0gaW4gZW52IG9yIGdsb2JhbEVudi5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZ2xvYmFscGFzc3Rocm91Z2hlbnZcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFBhc3NUaHJvdWdoRW52PzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IFwic3RyZWFtXCJcbiAgICpcbiAgICogU2VsZWN0IGEgdGVybWluYWwgVUkgZm9yIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBcInR1aVwiIGFsbG93cyBmb3Igdmlld2luZyBlYWNoIGxvZyBhdCBvbmNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSB0YXNrLlxuICAgKiBcInN0cmVhbVwiIG91dHB1dHMgbG9ncyBhcyB0aGV5IGNvbWUgaW4gYW5kIGlzIG5vdCBpbnRlcmFjdGl2ZS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jdWlcbiAgICovXG4gIHJlYWRvbmx5IHVpPzogXCJ0dWlcIiB8IFwic3RyZWFtXCI7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBmYWxzZVxuICAgKlxuICAgKiBUdXJib3JlcG8gdXNlcyB5b3VyIHJlcG9zaXRvcnkncyBsb2NrZmlsZSB0byBkZXRlcm1pbmUgY2FjaGluZyBiZWhhdmlvcixcbiAgICogUGFja2FnZSBHcmFwaHMsIGFuZCBtb3JlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIHVzZSB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGRcbiAgICogdG8gaGVscCB5b3Ugc3RhYmlsaXplIHlvdXIgVHVyYm9yZXBvLlxuICAgKlxuICAgKiBUbyBoZWxwIHdpdGggaW5jcmVtZW50YWwgbWlncmF0aW9uIG9yIGluIHNpdHVhdGlvbnMgd2hlcmUgeW91IGNhbid0IHVzZVxuICAgKiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQsIHlvdSBtYXkgdXNlXG4gICAqIC0tZGFuZ2Vyb3VzbHktZGlzYWJsZS1wYWNrYWdlLW1hbmFnZXItY2hlY2sgdG8gb3B0IG91dCBvZiB0aGlzIGNoZWNrIGFuZFxuICAgKiBhc3N1bWUgdGhlIHJpc2tzIG9mIHVuc3RhYmxlIGxvY2tmaWxlcyBwcm9kdWNpbmcgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci5cbiAgICogV2hlbiBkaXNhYmxlZCwgVHVyYm9yZXBvIHdpbGwgYXR0ZW1wdCBhIGJlc3QtZWZmb3J0IGRpc2NvdmVyeSBvZiB0aGVcbiAgICogaW50ZW5kZWQgcGFja2FnZSBtYW5hZ2VyIG1lYW50IGZvciB0aGUgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFuZ2Vyb3VzbHlkaXNhYmxlcGFja2FnZW1hbmFnZXJjaGVja1xuICAgKi9cbiAgcmVhZG9ubHkgZGFuZ2Vyb3VzbHlEaXNhYmxlUGFja2FnZU1hbmFnZXJDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBcIi50dXJiby9jYWNoZVwiXG4gICAqXG4gICAqIFNwZWNpZnkgdGhlIGZpbGVzeXN0ZW0gY2FjaGUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNjYWNoZWRpclxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiB0cnVlXG4gICAqXG4gICAqIFR1cmJvcmVwbyBydW5zIGEgYmFja2dyb3VuZCBwcm9jZXNzIHRvIHByZS1jYWxjdWxhdGUgc29tZSBleHBlbnNpdmVcbiAgICogb3BlcmF0aW9ucy4gVGhpcyBzdGFuZGFsb25lIHByb2Nlc3MgKGRhZW1vbikgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sXG4gICAqIGFuZCBub3QgcmVxdWlyZWQgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiB0dXJiby5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFlbW9uXG4gICAqL1xuICByZWFkb25seSBkYWVtb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogXCJzdHJpY3RcIlxuICAgKlxuICAgKiBUdXJib3JlcG8ncyBFbnZpcm9ubWVudCBNb2RlcyBhbGxvdyB5b3UgdG8gY29udHJvbCB3aGljaCBlbnZpcm9ubWVudFxuICAgKiB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSB0byBhIHRhc2sgYXQgcnVudGltZTpcbiAgICpcbiAgICpcInN0cmljdFwiOiBGaWx0ZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG9ubHkgdGhvc2UgdGhhdCBhcmUgc3BlY2lmaWVkXG4gICAqIGluIHRoZSBlbnYgYW5kIGdsb2JhbEVudiBrZXlzIGluIHR1cmJvLmpzb24uXG4gICAqXG4gICAqIFwibG9vc2VcIjogQWxsb3cgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIHByb2Nlc3MgdG8gYmUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNlbnZtb2RlXG4gICAqL1xuICByZWFkb25seSBlbnZNb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVHVyYm9SZXBvIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdHVyYm9yZXBvIHRvIHVzZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0dXJib1ZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZW5kIGZyb20gdGhlIHJvb3QgdHVyYm8uanNvbiB0byBjcmVhdGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgYSBwYWNrYWdlIHVzaW5nIFBhY2thZ2UgQ29uZmlndXJhdGlvbnMuXG4gICAqXG4gICAqIFRoZSBvbmx5IHZhbGlkIHZhbHVlIGZvciBleHRlbmRzIGlzIFtcIi8vXCJdIHRvIGluaGVyaXQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSByb290IHR1cmJvLmpzb24uXG4gICAqIElmIGV4dGVuZHMgaXMgdXNlZCBpbiB0aGUgcm9vdCB0dXJiby5qc29uLCBpdCB3aWxsIGJlIGlnbm9yZWQuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2V4dGVuZHNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleHRlbmRzOiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZ2xvYnMgdGhhdCB5b3Ugd2FudCB0byBpbmNsdWRlIGluIGFsbCB0YXNrIGhhc2hlcy4gSWYgYW55IGZpbGUgbWF0Y2hpbmcgdGhlc2UgZ2xvYnMgY2hhbmdlcywgYWxsIHRhc2tzIHdpbGwgbWlzcyBjYWNoZS4gR2xvYnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsb2NhdGlvbiBvZiB0dXJiby5qc29uLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBhbGwgZmlsZXMgaW4gc291cmNlIGNvbnRyb2wgaW4gdGhlIFdvcmtzcGFjZSByb290IGFyZSBpbmNsdWRlZCBpbiB0aGUgZ2xvYmFsIGhhc2guXG4gICAqXG4gICAqIEdsb2JzIG11c3QgYmUgaW4gdGhlIHJlcG9zaXRvcnkncyBzb3VyY2UgY29udHJvbCByb290LiBHbG9icyBvdXRzaWRlIG9mIHRoZSByZXBvc2l0b3J5IGFyZW4ndCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2dsb2JhbGRlcGVuZGVuY2llc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdsb2JhbERlcGVuZGVuY2llczogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSB3YW50IHRvIGltcGFjdCB0aGUgaGFzaCBvZiBhbGwgdGFza3MuIEFueSBjaGFuZ2UgdG8gdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpbGwgY2F1c2UgYWxsIHRhc2tzIHRvIG1pc3MgY2FjaGUuXG4gICAqXG4gICAqIEZvciBtb3JlIG9uIHdpbGRjYXJkIGFuZCBuZWdhdGlvbiBzeW50YXgsIHNlZSB0aGUgZW52IHNlY3Rpb24uXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2dsb2JhbGVudlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdsb2JhbEVudjogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSB3YW50IHRvIG1ha2UgYXZhaWxhYmxlIHRvIHRhc2tzLlxuICAgKiBVc2luZyB0aGlzIGtleSBvcHRzIGFsbCB0YXNrcyBpbnRvIFN0cmljdFxuICAgKiBFbnZpcm9ubWVudCBWYXJpYWJsZSBNb2RlLlxuICAgKlxuICAgKiBBZGRpdGlvbmFsbHksIFR1cmJvcmVwbyBoYXMgYSBidWlsdC1pbiBzZXQgb2YgZ2xvYmFsIHBhc3N0aHJvdWdoIHZhcmlhYmxlc1xuICAgKiBmb3IgY29tbW9uIGNhc2VzLCBsaWtlIG9wZXJhdGluZyBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGlzXG4gICAqIGluY2x1ZGVzIHZhcmlhYmxlcyBsaWtlIEhPTUUsIFBBVEgsIEFQUERBVEEsIFNIRUxMLCBQV0QsIGFuZCBtb3JlLiBUaGUgZnVsbFxuICAgKiBsaXN0IGNhbiBiZSBmb3VuZCBpbiB0aGUgc291cmNlIGNvZGUuXG4gICAqXG4gICAqIFBhc3N0aHJvdWdoIHZhbHVlcyBkbyBub3QgY29udHJpYnV0ZSB0byBoYXNoZXMgZm9yIGNhY2hpbmdcbiAgICpcbiAgICogSWYgeW91IHdhbnQgY2hhbmdlcyBpbiB0aGVzZSB2YXJpYWJsZXMgdG8gY2F1c2UgY2FjaGUgbWlzc2VzLCB5b3Ugd2lsbCBuZWVkXG4gICAqIHRvIGluY2x1ZGUgdGhlbSBpbiBlbnYgb3IgZ2xvYmFsRW52LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxwYXNzdGhyb3VnaGVudlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdsb2JhbFBhc3NUaHJvdWdoRW52OiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogXCJzdHJlYW1cIlxuICAgKlxuICAgKiBTZWxlY3QgYSB0ZXJtaW5hbCBVSSBmb3IgdGhlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIFwidHVpXCIgYWxsb3dzIGZvciB2aWV3aW5nIGVhY2ggbG9nIGF0IG9uY2UgYW5kIGludGVyYWN0aW5nIHdpdGggdGhlIHRhc2suXG4gICAqIFwic3RyZWFtXCIgb3V0cHV0cyBsb2dzIGFzIHRoZXkgY29tZSBpbiBhbmQgaXMgbm90IGludGVyYWN0aXZlLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiN1aVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVpOiBcInR1aVwiIHwgXCJzdHJlYW1cIjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IGZhbHNlXG4gICAqXG4gICAqIFR1cmJvcmVwbyB1c2VzIHlvdXIgcmVwb3NpdG9yeSdzIGxvY2tmaWxlIHRvIGRldGVybWluZSBjYWNoaW5nIGJlaGF2aW9yLFxuICAgKiBQYWNrYWdlIEdyYXBocywgYW5kIG1vcmUuIEJlY2F1c2Ugb2YgdGhpcywgd2UgdXNlIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZFxuICAgKiB0byBoZWxwIHlvdSBzdGFiaWxpemUgeW91ciBUdXJib3JlcG8uXG4gICAqXG4gICAqIFRvIGhlbHAgd2l0aCBpbmNyZW1lbnRhbCBtaWdyYXRpb24gb3IgaW4gc2l0dWF0aW9ucyB3aGVyZSB5b3UgY2FuJ3QgdXNlXG4gICAqIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZCwgeW91IG1heSB1c2VcbiAgICogLS1kYW5nZXJvdXNseS1kaXNhYmxlLXBhY2thZ2UtbWFuYWdlci1jaGVjayB0byBvcHQgb3V0IG9mIHRoaXMgY2hlY2sgYW5kXG4gICAqIGFzc3VtZSB0aGUgcmlza3Mgb2YgdW5zdGFibGUgbG9ja2ZpbGVzIHByb2R1Y2luZyB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLlxuICAgKiBXaGVuIGRpc2FibGVkLCBUdXJib3JlcG8gd2lsbCBhdHRlbXB0IGEgYmVzdC1lZmZvcnQgZGlzY292ZXJ5IG9mIHRoZVxuICAgKiBpbnRlbmRlZCBwYWNrYWdlIG1hbmFnZXIgbWVhbnQgZm9yIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNkYW5nZXJvdXNseWRpc2FibGVwYWNrYWdlbWFuYWdlcmNoZWNrXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGFuZ2Vyb3VzbHlEaXNhYmxlUGFja2FnZU1hbmFnZXJDaGVjazogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IFwiLnR1cmJvL2NhY2hlXCJcbiAgICpcbiAgICogU3BlY2lmeSB0aGUgZmlsZXN5c3RlbSBjYWNoZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2NhY2hlZGlyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2FjaGVEaXI6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IHRydWVcbiAgICpcbiAgICogVHVyYm9yZXBvIHJ1bnMgYSBiYWNrZ3JvdW5kIHByb2Nlc3MgdG8gcHJlLWNhbGN1bGF0ZSBzb21lIGV4cGVuc2l2ZVxuICAgKiBvcGVyYXRpb25zLiBUaGlzIHN0YW5kYWxvbmUgcHJvY2VzcyAoZGFlbW9uKSBpcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbixcbiAgICogYW5kIG5vdCByZXF1aXJlZCBmb3IgcHJvcGVyIGZ1bmN0aW9uaW5nIG9mIHR1cmJvLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNkYWVtb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkYWVtb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBcInN0cmljdFwiXG4gICAqXG4gICAqIFR1cmJvcmVwbydzIEVudmlyb25tZW50IE1vZGVzIGFsbG93IHlvdSB0byBjb250cm9sIHdoaWNoIGVudmlyb25tZW50XG4gICAqIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIHRvIGEgdGFzayBhdCBydW50aW1lOlxuICAgKlxuICAgKlwic3RyaWN0XCI6IEZpbHRlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gb25seSB0aG9zZSB0aGF0IGFyZSBzcGVjaWZpZWRcbiAgICogaW4gdGhlIGVudiBhbmQgZ2xvYmFsRW52IGtleXMgaW4gdHVyYm8uanNvbi5cbiAgICpcbiAgICogXCJsb29zZVwiOiBBbGxvdyBhbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgcHJvY2VzcyB0byBiZSBhdmFpbGFibGUuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2Vudm1vZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbnZNb2RlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGlzIHRoaXMgdGhlIHJvb3QgcHJvamVjdD9cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1Jvb3RQcm9qZWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNYWluIHR1cmJvOmJ1aWxkIHRhc2tcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWlsZFRhc2s6IFR1cmJvUmVwb1Rhc2s7XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlQ29tcGlsZVRhc2s/OiBUdXJib1JlcG9UYXNrO1xuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb21waWxlVGFzaz86IFR1cmJvUmVwb1Rhc2s7XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9zdENvbXBpbGVUYXNrPzogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0VGFzaz86IFR1cmJvUmVwb1Rhc2s7XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFja2FnZVRhc2s/OiBUdXJib1JlcG9UYXNrO1xuXG4gIC8qKlxuICAgKiBTdWItVGFza3MgdG8gcnVuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFza3M6IEFycmF5PFR1cmJvUmVwb1Rhc2s+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IFByb2plY3QsXG4gICAgb3B0aW9uczogVHVyYm9SZXBvT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGlmICghKHByb2plY3QgaW5zdGFuY2VvZiBOb2RlUHJvamVjdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlR1cmJvUmVwbyBjYW4gb25seSBiZSBhZGRlZCB0byBOb2RlLmpzIHByb2plY3RzLlwiKTtcbiAgICB9XG5cbiAgICB0aGlzLnR1cmJvVmVyc2lvbiA9IG9wdGlvbnMudHVyYm9WZXJzaW9uID8/IFwiXjIuMC4wXCI7XG4gICAgdGhpcy5pc1Jvb3RQcm9qZWN0ID0gcHJvamVjdCA9PT0gcHJvamVjdC5yb290O1xuXG4gICAgLyoqXG4gICAgICogQWRkIHR1cmJvcmVwbyBwYWNrYWdlIHRvIHJvb3QgcHJvamVjdC5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5pc1Jvb3RQcm9qZWN0KSB7XG4gICAgICBwcm9qZWN0LmFkZERldkRlcHMoYHR1cmJvQCR7dGhpcy50dXJib1ZlcnNpb259YCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWdub3JlIHRoZSB3b3JraW5nIGNhY2hlIGZvciB0dXJiby5cbiAgICAgKi9cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5hZGRQYXR0ZXJucyhcIi8udHVyYm9cIik7XG4gICAgcHJvamVjdC5ucG1pZ25vcmU/LmFkZFBhdHRlcm5zKFwiLy50dXJiby9cIik7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBTZXQgc29tZSBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHRoaXMuZXh0ZW5kcyA9IG9wdGlvbnMuZXh0ZW5kcyA/PyAodGhpcy5pc1Jvb3RQcm9qZWN0ID8gW10gOiBbXCIvL1wiXSk7XG4gICAgdGhpcy5nbG9iYWxEZXBlbmRlbmNpZXMgPSBvcHRpb25zLmdsb2JhbERlcGVuZGVuY2llcyA/PyBbXTtcbiAgICB0aGlzLmdsb2JhbEVudiA9IG9wdGlvbnMuZ2xvYmFsRW52ID8/IFtdO1xuICAgIHRoaXMuZ2xvYmFsUGFzc1Rocm91Z2hFbnYgPSBvcHRpb25zLmdsb2JhbFBhc3NUaHJvdWdoRW52ID8/IFtdO1xuICAgIHRoaXMudWkgPSBvcHRpb25zLnVpID8/IFwic3RyZWFtXCI7XG4gICAgdGhpcy5kYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrID1cbiAgICAgIG9wdGlvbnMuZGFuZ2Vyb3VzbHlEaXNhYmxlUGFja2FnZU1hbmFnZXJDaGVjayA/PyBmYWxzZTtcbiAgICB0aGlzLmNhY2hlRGlyID0gb3B0aW9ucy5jYWNoZURpciA/PyBcIi50dXJiby9jYWNoZVwiO1xuICAgIHRoaXMuZGFlbW9uID0gb3B0aW9ucy5kYWVtb24gPz8gdHJ1ZTtcbiAgICB0aGlzLmVudk1vZGUgPSBvcHRpb25zLmVudk1vZGUgPz8gXCJzdHJpY3RcIjtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFR1cmJvIEJ1aWxkIFRhc2tcbiAgICAgKlxuICAgICAqIEFsbCB0dXJibyBjb25maWdzIGNvbnRhaW4gYSB0dXJibyBidWlsZCB0YXNrLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogVGhlIHR1cmJvIGVudHJ5IHBvaW50IGRlZmluaXRpb24gZm9yIHRoZSB0dXJibzpidWlsZCB0YXNrLiBUaGlzIGV4aXN0c1xuICAgICAqIGluIGVhY2ggcHJvamVjdCBhbmQgaXMgd3JpdHRlbiB0b3QgaGUgdHVyYm8uanNvbiBmaWxlLiBUaGlzIHRhc2sgaXMgbm90XG4gICAgICogYSBwcm9qZW4gdGFzayBvciBhIE5vZGUgdGFzay5cbiAgICAgKi9cbiAgICB0aGlzLmJ1aWxkVGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHRoaXMucHJvamVjdCwge1xuICAgICAgbmFtZTogUk9PVF9UVVJCT19UQVNLX05BTUUsXG4gICAgICBkZXBlbmRzT246IHRoaXMuaXNSb290UHJvamVjdCA/IFtgXiR7Uk9PVF9UVVJCT19UQVNLX05BTUV9YF0gOiBbXSxcbiAgICB9KTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFR1cmJvIEJ1aWxkIEFsbCBUYXNrXG4gICAgICpcbiAgICAgKiBUaGUgUHJvamVuIGVudHJ5IHBvaW50LiBUaGlzIG9ubHkgZXhpc3RzIGluIHRoZSByb290IGFuZCBpcyBhIHByb2plblxuICAgICAqIHRhc2sgdGhhdCBjYW4gYmUgcnVuIHVzaW5nIHBucG0uXG4gICAgICpcbiAgICAgKiAtIFR1cm5zIG9mZiB0ZWxlbWV0cnlcbiAgICAgKiAtIFJ1bnMgcm9vdCB0dXJibyB0YXNrIHRvIGJ1aWxkIGFsbCBzdWItcHJvamVjdHMuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBpZiAodGhpcy5pc1Jvb3RQcm9qZWN0KSB7XG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZSBhbmQgY29uZmlndXJlIHRoZSBidWlsZCBhbGwgdGFzay5cbiAgICAgICAqL1xuICAgICAgY29uc3QgYnVpbGRBbGwgPSB0aGlzLnByb2plY3QudGFza3MuYWRkVGFzayhST09UX0NJX1RBU0tfTkFNRSwge1xuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICBcIlJvb3QgYnVpbGQgZm9sbG93ZWQgYnkgc3ViLXByb2plY3QgYnVpbGRzLiBNaW1pY3MgdGhlIENJIGJ1aWxkIHByb2Nlc3MgaW4gb25lIHN0ZXAuXCIsXG4gICAgICB9KTtcbiAgICAgIGJ1aWxkQWxsLmV4ZWMoXCJ0dXJibyB0ZWxlbWV0cnkgZGlzYWJsZVwiKTtcbiAgICAgIGJ1aWxkQWxsLmV4ZWMoXG4gICAgICAgIGB0dXJibyAke1JPT1RfVFVSQk9fVEFTS19OQU1FfSAtLXN1bW1hcml6ZSAtLWNvbmN1cnJlbmN5PTEwYCxcbiAgICAgICk7XG5cbiAgICAgIC8qKlxuICAgICAgICogQXR0YWNoIGJ1aWxkIGFsbCB0dXJibyBydW5uZXIgdG8gdGhlIGJ1aWxkIHdvcmtmbG93IGF0IGdpdGh1Yi5cbiAgICAgICAqL1xuICAgICAgcHJvamVjdC5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICAgIG5hbWU6IFwiQnVpbGQgU3ViIFByb2plY3RzXCIsXG4gICAgICAgIHJ1bjogYG5weCBwcm9qZW4gJHtST09UX0NJX1RBU0tfTkFNRX1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU1VCLVBST0pFQ1RcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgdGFza3MgZm9yIHRoZSB0eXBpY2FsIGxpZmVjeWNsZSBmb3IgYWxsIHByb2plY3QgcHJvamVjdHMuXG4gICAgICovXG4gICAgaWYgKCF0aGlzLmlzUm9vdFByb2plY3QpIHtcbiAgICAgIHRoaXMucHJlQ29tcGlsZVRhc2sgPSBuZXcgVHVyYm9SZXBvVGFzayhwcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IFwicHJlLWNvbXBpbGVcIixcbiAgICAgICAgaW5wdXRzOiBbXCJzcmMvKiovKlwiLCBcIiouanNvblwiXSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21waWxlVGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHByb2plY3QsIHsgbmFtZTogXCJjb21waWxlXCIgfSk7XG4gICAgICB0aGlzLnBvc3RDb21waWxlVGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHByb2plY3QsIHtcbiAgICAgICAgbmFtZTogXCJwb3N0LWNvbXBpbGVcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZXN0VGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHByb2plY3QsIHsgbmFtZTogXCJ0ZXN0XCIgfSk7XG4gICAgICB0aGlzLnBhY2thZ2VUYXNrID0gbmV3IFR1cmJvUmVwb1Rhc2socHJvamVjdCwge1xuICAgICAgICBuYW1lOiBcInBhY2thZ2VcIixcbiAgICAgICAgaW5wdXRzOiBbXCIubnBtaWdub3JlXCJdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRhc2tzLnB1c2goXG4gICAgICAgIHRoaXMucHJlQ29tcGlsZVRhc2ssXG4gICAgICAgIHRoaXMuY29tcGlsZVRhc2ssXG4gICAgICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLFxuICAgICAgICB0aGlzLnRlc3RUYXNrLFxuICAgICAgICB0aGlzLnBhY2thZ2VUYXNrLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEFkZCBhbnkgbG9jYWwgd29ya3NwYWNlIHNwZWNpZmljIGRlcHMgdG8gZGVwZW5kc09uIHNvIHRoYXQgd2Uga25vd1xuICAgICAqIGNvbXBpbGUgaGFzIGZpbmlzaGVkIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHVzZSBhbnkgZGlzdHJpYnV0aW9uIGFydGlmYWN0cy5cbiAgICAgKlxuICAgICAqIERvIHRoaXMgaW4gcHJlc3ludGggc28gdGhhdCB3ZSBjYW4gYmUgc3VyZSBhbGwgcHJvamVjdCBkZXBlbmRlbmNpZXMgaGF2ZVxuICAgICAqIGJlZW4gZGVmaW5lZCBmaXJzdC5cbiAgICAgKi9cbiAgICBsZXQgbmV4dERlcGVuZHNPbiA9IHRoaXMucHJvamVjdC5kZXBzLmFsbFxuICAgICAgLmZpbHRlcigoZCkgPT4gZC52ZXJzaW9uID09PSBcIndvcmtzcGFjZToqXCIpXG4gICAgICAubWFwKChkKSA9PiBbZC5uYW1lLCBST09UX1RVUkJPX1RBU0tfTkFNRV0uam9pbihcIiNcIikpO1xuXG4gICAgLyoqXG4gICAgICogTG9vcCBvdmVyIGFsbCBwcm9qZW4gdGFza3MgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgdHVyYm8gdGFza1xuICAgICAqIGRlZmluaXRpb25zLiBDaGFpbiB0aGVtIHRvZ2V0aGVyIHVzaW5nIGRlcGVuZHNPbiwgYWxvbmcgd2l0aCBhbnkgb3V0c2lkZVxuICAgICAqIHBhY2thZ2UgZGVwZW5kZW5jaWVzLlxuICAgICAqL1xuICAgIGlmICghdGhpcy5pc1Jvb3RQcm9qZWN0KSB7XG4gICAgICAoXG4gICAgICAgIFtcbiAgICAgICAgICBbdGhpcy5wcm9qZWN0LnByZUNvbXBpbGVUYXNrLCB0aGlzLnByZUNvbXBpbGVUYXNrXSxcbiAgICAgICAgICBbdGhpcy5wcm9qZWN0LmNvbXBpbGVUYXNrLCB0aGlzLmNvbXBpbGVUYXNrXSxcbiAgICAgICAgICBbdGhpcy5wcm9qZWN0LnBvc3RDb21waWxlVGFzaywgdGhpcy5wb3N0Q29tcGlsZVRhc2tdLFxuICAgICAgICAgIFt0aGlzLnByb2plY3QudGVzdFRhc2ssIHRoaXMudGVzdFRhc2tdLFxuICAgICAgICAgIFt0aGlzLnByb2plY3QucGFja2FnZVRhc2ssIHRoaXMucGFja2FnZVRhc2tdLFxuICAgICAgICBdIGFzIEFycmF5PFtUYXNrLCBUdXJib1JlcG9UYXNrXT5cbiAgICAgICkuZm9yRWFjaCgoW3BqVGFzaywgdHVyYm9UYXNrXSkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogSWYgc3RlcHMgZXhpc3QgY2hhaW4gdXNpbmcgZGVwZW5kc09uXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocGpUYXNrICYmIHR1cmJvVGFzayAmJiBwalRhc2suc3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmIChuZXh0RGVwZW5kc09uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHR1cmJvVGFzay5kZXBlbmRzT24ucHVzaCguLi5uZXh0RGVwZW5kc09uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dERlcGVuZHNPbiA9IFt0dXJib1Rhc2submFtZV07XG5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBPdGhlcndpc2UsIGlmIGEgdGFzayBkb2Vzbid0IGRvIGFueXRoaW5nLCBkZWFjdGl2YXRlIGl0LlxuICAgICAgICAgICAqL1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHR1cmJvVGFzay5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLyoqXG4gICAgICAgKiBNYWluIGJ1aWxkIGVudHJ5IHBvaW50IGRlcGVuZHMgb24gd2hhdGV2ZXIgd2FzIGxhc3QuXG4gICAgICAgKi9cbiAgICAgIHRoaXMuYnVpbGRUYXNrLmRlcGVuZHNPbi5wdXNoKC4uLm5leHREZXBlbmRzT24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIGZvciB0aGUgdHVyYm8gY29uZmlnIGZpbGUuXG4gICAgICovXG4gICAgY29uc3QgZmlsZU5hbWU6IHN0cmluZyA9IFwidHVyYm8uanNvblwiO1xuXG4gICAgLyoqXG4gICAgICogRW5zdXJlIHRoYXQgdHVyYm8gY29uZmlnIGRvZXNuJ3QgZW5kIHVwIGluIGFueSBwYWNrYWdlIGRpc3RyaWJ1dGlvbnMuXG4gICAgICovXG4gICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoZmlsZU5hbWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbnRlbnQgb2YgdGhpcyBZQU1MIGZpbGUgd2lsbCBiZSByZXNvbHZlZCBhdCBzeW50aCB0aW1lLiBCeSB0aGVuLFxuICAgICAqIGFueSBzdWItcHJvamVjdHMgd2lsbCBiZSBkZWZpbmVkIGFuZCB0aGlzIHdpbGwgYmUgYSBjb21wbGV0ZSBsaXN0LlxuICAgICAqL1xuICAgIG5ldyBKc29uRmlsZSh0aGlzLnByb2plY3QsIGZpbGVOYW1lLCB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgZXh0ZW5kczogdGhpcy5leHRlbmRzLmxlbmd0aCA/IHRoaXMuZXh0ZW5kcyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2xvYmFsRGVwZW5kZW5jaWVzOlxuICAgICAgICAgIHRoaXMuaXNSb290UHJvamVjdCAmJiB0aGlzLmdsb2JhbERlcGVuZGVuY2llcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5nbG9iYWxEZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBnbG9iYWxFbnY6XG4gICAgICAgICAgdGhpcy5pc1Jvb3RQcm9qZWN0ICYmIHRoaXMuZ2xvYmFsRW52Lmxlbmd0aFxuICAgICAgICAgICAgPyB0aGlzLmdsb2JhbEVudlxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGdsb2JhbFBhc3NUaHJvdWdoRW52OlxuICAgICAgICAgIHRoaXMuaXNSb290UHJvamVjdCAmJiB0aGlzLmdsb2JhbFBhc3NUaHJvdWdoRW52Lmxlbmd0aFxuICAgICAgICAgICAgPyB0aGlzLmdsb2JhbFBhc3NUaHJvdWdoRW52XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgdWk6IHRoaXMuaXNSb290UHJvamVjdCA/IHRoaXMudWkgOiB1bmRlZmluZWQsXG4gICAgICAgIGRhbmdlcm91c2x5RGlzYWJsZVBhY2thZ2VNYW5hZ2VyQ2hlY2s6IHRoaXMuaXNSb290UHJvamVjdFxuICAgICAgICAgID8gdGhpcy5kYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGNhY2hlRGlyOiB0aGlzLmlzUm9vdFByb2plY3QgPyB0aGlzLmNhY2hlRGlyIDogdW5kZWZpbmVkLFxuICAgICAgICBkYWVtb246IHRoaXMuaXNSb290UHJvamVjdCA/IHRoaXMuZGFlbW9uIDogdW5kZWZpbmVkLFxuICAgICAgICBlbnZNb2RlOiB0aGlzLmlzUm9vdFByb2plY3QgPyB0aGlzLmVudk1vZGUgOiB1bmRlZmluZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGwgdGFza3NcbiAgICAgICAgICovXG4gICAgICAgIHRhc2tzOiB0aGlzLnRhc2tzXG4gICAgICAgICAgLmZpbHRlcigodGFzaykgPT4gdGFzay5pc0FjdGl2ZSlcbiAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgdGFzaykgPT4ge1xuICAgICAgICAgICAgICBhY2NbdGFzay5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAuLi50YXNrLnRhc2tDb25maWcoKSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFt0aGlzLmJ1aWxkVGFzay5uYW1lXTogeyAuLi50aGlzLmJ1aWxkVGFzay50YXNrQ29uZmlnKCkgfSxcbiAgICAgICAgICAgIH0gYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICAgICApLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcbiAgfVxufVxuIl19
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVyYm8tcmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90dXJiby90dXJiby1yZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQUF1RDtBQUV2RCx1REFBa0Q7QUFFbEQ7Ozs7Z0ZBSWdGO0FBRW5FLFFBQUEsb0JBQW9CLEdBQUcsYUFBYSxDQUFDO0FBQ3JDLFFBQUEsaUJBQWlCLEdBQUcsV0FBVyxDQUFDO0FBNkg3QyxNQUFhLFNBQVUsU0FBUSxlQUFTO0lBK0p0QyxZQUNrQixPQUFvQixFQUNwQyxVQUE0QixFQUFFO1FBRTlCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhDLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFOdEM7O1dBRUc7UUFDYSxVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQVEvQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFOUM7O1dBRUc7UUFDSCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVEOztXQUVHO1FBQ0gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0M7Ozs7b0ZBSTRFO1FBRTVFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxP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fSBmcm9tIFwicHJvamVuL2xpYlwiO1xuaW1wb3J0IHsgTm9kZVByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBUdXJib1JlcG9UYXNrIH0gZnJvbSBcIi4vdHVyYm8tcmVwby10YXNrXCI7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogVHVyYm8gUmVwbyBDb25maWdcbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgY29uc3QgUk9PVF9UVVJCT19UQVNLX05BTUUgPSBcInR1cmJvOmJ1aWxkXCI7XG5leHBvcnQgY29uc3QgUk9PVF9DSV9UQVNLX05BTUUgPSBcImJ1aWxkOmFsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR1cmJvUmVwb09wdGlvbnMge1xuICAvKipcbiAgICogVmVyc2lvbiBvZiB0dXJib3JlcG8gdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdDogc3BlY2lmaWVkIGluIHZlcnNpb25zIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHR1cmJvVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZW5kIGZyb20gdGhlIHJvb3QgdHVyYm8uanNvbiB0byBjcmVhdGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgYSBwYWNrYWdlIHVzaW5nIFBhY2thZ2UgQ29uZmlndXJhdGlvbnMuXG4gICAqXG4gICAqIFRoZSBvbmx5IHZhbGlkIHZhbHVlIGZvciBleHRlbmRzIGlzIFtcIi8vXCJdIHRvIGluaGVyaXQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSByb290IHR1cmJvLmpzb24uXG4gICAqIElmIGV4dGVuZHMgaXMgdXNlZCBpbiB0aGUgcm9vdCB0dXJiby5qc29uLCBpdCB3aWxsIGJlIGlnbm9yZWQuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2V4dGVuZHNcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuZHM/OiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZ2xvYnMgdGhhdCB5b3Ugd2FudCB0byBpbmNsdWRlIGluIGFsbCB0YXNrIGhhc2hlcy4gSWYgYW55IGZpbGUgbWF0Y2hpbmcgdGhlc2UgZ2xvYnMgY2hhbmdlcywgYWxsIHRhc2tzIHdpbGwgbWlzcyBjYWNoZS4gR2xvYnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsb2NhdGlvbiBvZiB0dXJiby5qc29uLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBhbGwgZmlsZXMgaW4gc291cmNlIGNvbnRyb2wgaW4gdGhlIFdvcmtzcGFjZSByb290IGFyZSBpbmNsdWRlZCBpbiB0aGUgZ2xvYmFsIGhhc2guXG4gICAqXG4gICAqIEdsb2JzIG11c3QgYmUgaW4gdGhlIHJlcG9zaXRvcnkncyBzb3VyY2UgY29udHJvbCByb290LiBHbG9icyBvdXRzaWRlIG9mIHRoZSByZXBvc2l0b3J5IGFyZW4ndCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2dsb2JhbGRlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsRGVwZW5kZW5jaWVzPzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSB3YW50IHRvIGltcGFjdCB0aGUgaGFzaCBvZiBhbGwgdGFza3MuIEFueSBjaGFuZ2UgdG8gdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpbGwgY2F1c2UgYWxsIHRhc2tzIHRvIG1pc3MgY2FjaGUuXG4gICAqXG4gICAqIEZvciBtb3JlIG9uIHdpbGRjYXJkIGFuZCBuZWdhdGlvbiBzeW50YXgsIHNlZSB0aGUgZW52IHNlY3Rpb24uXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2dsb2JhbGVudlxuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsRW52PzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSB3YW50IHRvIG1ha2UgYXZhaWxhYmxlIHRvIHRhc2tzLlxuICAgKiBVc2luZyB0aGlzIGtleSBvcHRzIGFsbCB0YXNrcyBpbnRvIFN0cmljdFxuICAgKiBFbnZpcm9ubWVudCBWYXJpYWJsZSBNb2RlLlxuICAgKlxuICAgKiBBZGRpdGlvbmFsbHksIFR1cmJvcmVwbyBoYXMgYSBidWlsdC1pbiBzZXQgb2YgZ2xvYmFsIHBhc3N0aHJvdWdoIHZhcmlhYmxlc1xuICAgKiBmb3IgY29tbW9uIGNhc2VzLCBsaWtlIG9wZXJhdGluZyBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGlzXG4gICAqIGluY2x1ZGVzIHZhcmlhYmxlcyBsaWtlIEhPTUUsIFBBVEgsIEFQUERBVEEsIFNIRUxMLCBQV0QsIGFuZCBtb3JlLiBUaGUgZnVsbFxuICAgKiBsaXN0IGNhbiBiZSBmb3VuZCBpbiB0aGUgc291cmNlIGNvZGUuXG4gICAqXG4gICAqIFBhc3N0aHJvdWdoIHZhbHVlcyBkbyBub3QgY29udHJpYnV0ZSB0byBoYXNoZXMgZm9yIGNhY2hpbmdcbiAgICpcbiAgICogSWYgeW91IHdhbnQgY2hhbmdlcyBpbiB0aGVzZSB2YXJpYWJsZXMgdG8gY2F1c2UgY2FjaGUgbWlzc2VzLCB5b3Ugd2lsbCBuZWVkXG4gICAqIHRvIGluY2x1ZGUgdGhlbSBpbiBlbnYgb3IgZ2xvYmFsRW52LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxwYXNzdGhyb3VnaGVudlxuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsUGFzc1Rocm91Z2hFbnY/OiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogXCJzdHJlYW1cIlxuICAgKlxuICAgKiBTZWxlY3QgYSB0ZXJtaW5hbCBVSSBmb3IgdGhlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIFwidHVpXCIgYWxsb3dzIGZvciB2aWV3aW5nIGVhY2ggbG9nIGF0IG9uY2UgYW5kIGludGVyYWN0aW5nIHdpdGggdGhlIHRhc2suXG4gICAqIFwic3RyZWFtXCIgb3V0cHV0cyBsb2dzIGFzIHRoZXkgY29tZSBpbiBhbmQgaXMgbm90IGludGVyYWN0aXZlLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiN1aVxuICAgKi9cbiAgcmVhZG9ubHkgdWk/OiBcInR1aVwiIHwgXCJzdHJlYW1cIjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IGZhbHNlXG4gICAqXG4gICAqIFR1cmJvcmVwbyB1c2VzIHlvdXIgcmVwb3NpdG9yeSdzIGxvY2tmaWxlIHRvIGRldGVybWluZSBjYWNoaW5nIGJlaGF2aW9yLFxuICAgKiBQYWNrYWdlIEdyYXBocywgYW5kIG1vcmUuIEJlY2F1c2Ugb2YgdGhpcywgd2UgdXNlIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZFxuICAgKiB0byBoZWxwIHlvdSBzdGFiaWxpemUgeW91ciBUdXJib3JlcG8uXG4gICAqXG4gICAqIFRvIGhlbHAgd2l0aCBpbmNyZW1lbnRhbCBtaWdyYXRpb24gb3IgaW4gc2l0dWF0aW9ucyB3aGVyZSB5b3UgY2FuJ3QgdXNlXG4gICAqIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZCwgeW91IG1heSB1c2VcbiAgICogLS1kYW5nZXJvdXNseS1kaXNhYmxlLXBhY2thZ2UtbWFuYWdlci1jaGVjayB0byBvcHQgb3V0IG9mIHRoaXMgY2hlY2sgYW5kXG4gICAqIGFzc3VtZSB0aGUgcmlza3Mgb2YgdW5zdGFibGUgbG9ja2ZpbGVzIHByb2R1Y2luZyB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLlxuICAgKiBXaGVuIGRpc2FibGVkLCBUdXJib3JlcG8gd2lsbCBhdHRlbXB0IGEgYmVzdC1lZmZvcnQgZGlzY292ZXJ5IG9mIHRoZVxuICAgKiBpbnRlbmRlZCBwYWNrYWdlIG1hbmFnZXIgbWVhbnQgZm9yIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNkYW5nZXJvdXNseWRpc2FibGVwYWNrYWdlbWFuYWdlcmNoZWNrXG4gICAqL1xuICByZWFkb25seSBkYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IFwiLnR1cmJvL2NhY2hlXCJcbiAgICpcbiAgICogU3BlY2lmeSB0aGUgZmlsZXN5c3RlbSBjYWNoZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2NhY2hlZGlyXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IHRydWVcbiAgICpcbiAgICogVHVyYm9yZXBvIHJ1bnMgYSBiYWNrZ3JvdW5kIHByb2Nlc3MgdG8gcHJlLWNhbGN1bGF0ZSBzb21lIGV4cGVuc2l2ZVxuICAgKiBvcGVyYXRpb25zLiBUaGlzIHN0YW5kYWxvbmUgcHJvY2VzcyAoZGFlbW9uKSBpcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbixcbiAgICogYW5kIG5vdCByZXF1aXJlZCBmb3IgcHJvcGVyIGZ1bmN0aW9uaW5nIG9mIHR1cmJvLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNkYWVtb25cbiAgICovXG4gIHJlYWRvbmx5IGRhZW1vbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBcInN0cmljdFwiXG4gICAqXG4gICAqIFR1cmJvcmVwbydzIEVudmlyb25tZW50IE1vZGVzIGFsbG93IHlvdSB0byBjb250cm9sIHdoaWNoIGVudmlyb25tZW50XG4gICAqIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIHRvIGEgdGFzayBhdCBydW50aW1lOlxuICAgKlxuICAgKlwic3RyaWN0XCI6IEZpbHRlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gb25seSB0aG9zZSB0aGF0IGFyZSBzcGVjaWZpZWRcbiAgICogaW4gdGhlIGVudiBhbmQgZ2xvYmFsRW52IGtleXMgaW4gdHVyYm8uanNvbi5cbiAgICpcbiAgICogXCJsb29zZVwiOiBBbGxvdyBhbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgcHJvY2VzcyB0byBiZSBhdmFpbGFibGUuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2Vudm1vZGVcbiAgICovXG4gIHJlYWRvbmx5IGVudk1vZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBUdXJib1JlcG8gZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogVmVyc2lvbiBvZiB0dXJib3JlcG8gdG8gdXNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHR1cmJvVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlbmQgZnJvbSB0aGUgcm9vdCB0dXJiby5qc29uIHRvIGNyZWF0ZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBhIHBhY2thZ2UgdXNpbmcgUGFja2FnZSBDb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogVGhlIG9ubHkgdmFsaWQgdmFsdWUgZm9yIGV4dGVuZHMgaXMgW1wiLy9cIl0gdG8gaW5oZXJpdCBjb25maWd1cmF0aW9uIGZyb20gdGhlIHJvb3QgdHVyYm8uanNvbi5cbiAgICogSWYgZXh0ZW5kcyBpcyB1c2VkIGluIHRoZSByb290IHR1cmJvLmpzb24sIGl0IHdpbGwgYmUgaWdub3JlZC5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZXh0ZW5kc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4dGVuZHM6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBnbG9icyB0aGF0IHlvdSB3YW50IHRvIGluY2x1ZGUgaW4gYWxsIHRhc2sgaGFzaGVzLiBJZiBhbnkgZmlsZSBtYXRjaGluZyB0aGVzZSBnbG9icyBjaGFuZ2VzLCBhbGwgdGFza3Mgd2lsbCBtaXNzIGNhY2hlLiBHbG9icyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHR1cmJvLmpzb24uXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGFsbCBmaWxlcyBpbiBzb3VyY2UgY29udHJvbCBpbiB0aGUgV29ya3NwYWNlIHJvb3QgYXJlIGluY2x1ZGVkIGluIHRoZSBnbG9iYWwgaGFzaC5cbiAgICpcbiAgICogR2xvYnMgbXVzdCBiZSBpbiB0aGUgcmVwb3NpdG9yeSdzIHNvdXJjZSBjb250cm9sIHJvb3QuIEdsb2JzIG91dHNpZGUgb2YgdGhlIHJlcG9zaXRvcnkgYXJlbid0IHN1cHBvcnRlZC5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZ2xvYmFsZGVwZW5kZW5jaWVzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2xvYmFsRGVwZW5kZW5jaWVzOiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgeW91IHdhbnQgdG8gaW1wYWN0IHRoZSBoYXNoIG9mIGFsbCB0YXNrcy4gQW55IGNoYW5nZSB0byB0aGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2lsbCBjYXVzZSBhbGwgdGFza3MgdG8gbWlzcyBjYWNoZS5cbiAgICpcbiAgICogRm9yIG1vcmUgb24gd2lsZGNhcmQgYW5kIG5lZ2F0aW9uIHN5bnRheCwgc2VlIHRoZSBlbnYgc2VjdGlvbi5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZ2xvYmFsZW52XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2xvYmFsRW52OiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgeW91IHdhbnQgdG8gbWFrZSBhdmFpbGFibGUgdG8gdGFza3MuXG4gICAqIFVzaW5nIHRoaXMga2V5IG9wdHMgYWxsIHRhc2tzIGludG8gU3RyaWN0XG4gICAqIEVudmlyb25tZW50IFZhcmlhYmxlIE1vZGUuXG4gICAqXG4gICAqIEFkZGl0aW9uYWxseSwgVHVyYm9yZXBvIGhhcyBhIGJ1aWx0LWluIHNldCBvZiBnbG9iYWwgcGFzc3Rocm91Z2ggdmFyaWFibGVzXG4gICAqIGZvciBjb21tb24gY2FzZXMsIGxpa2Ugb3BlcmF0aW5nIHN5c3RlbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFRoaXNcbiAgICogaW5jbHVkZXMgdmFyaWFibGVzIGxpa2UgSE9NRSwgUEFUSCwgQVBQREFUQSwgU0hFTEwsIFBXRCwgYW5kIG1vcmUuIFRoZSBmdWxsXG4gICAqIGxpc3QgY2FuIGJlIGZvdW5kIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICpcbiAgICogUGFzc3Rocm91Z2ggdmFsdWVzIGRvIG5vdCBjb250cmlidXRlIHRvIGhhc2hlcyBmb3IgY2FjaGluZ1xuICAgKlxuICAgKiBJZiB5b3Ugd2FudCBjaGFuZ2VzIGluIHRoZXNlIHZhcmlhYmxlcyB0byBjYXVzZSBjYWNoZSBtaXNzZXMsIHlvdSB3aWxsIG5lZWRcbiAgICogdG8gaW5jbHVkZSB0aGVtIGluIGVudiBvciBnbG9iYWxFbnYuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2dsb2JhbHBhc3N0aHJvdWdoZW52XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2xvYmFsUGFzc1Rocm91Z2hFbnY6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBcInN0cmVhbVwiXG4gICAqXG4gICAqIFNlbGVjdCBhIHRlcm1pbmFsIFVJIGZvciB0aGUgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogXCJ0dWlcIiBhbGxvd3MgZm9yIHZpZXdpbmcgZWFjaCBsb2cgYXQgb25jZSBhbmQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdGFzay5cbiAgICogXCJzdHJlYW1cIiBvdXRwdXRzIGxvZ3MgYXMgdGhleSBjb21lIGluIGFuZCBpcyBub3QgaW50ZXJhY3RpdmUuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI3VpXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdWk6IFwidHVpXCIgfCBcInN0cmVhbVwiO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogZmFsc2VcbiAgICpcbiAgICogVHVyYm9yZXBvIHVzZXMgeW91ciByZXBvc2l0b3J5J3MgbG9ja2ZpbGUgdG8gZGV0ZXJtaW5lIGNhY2hpbmcgYmVoYXZpb3IsXG4gICAqIFBhY2thZ2UgR3JhcGhzLCBhbmQgbW9yZS4gQmVjYXVzZSBvZiB0aGlzLCB3ZSB1c2UgdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkXG4gICAqIHRvIGhlbHAgeW91IHN0YWJpbGl6ZSB5b3VyIFR1cmJvcmVwby5cbiAgICpcbiAgICogVG8gaGVscCB3aXRoIGluY3JlbWVudGFsIG1pZ3JhdGlvbiBvciBpbiBzaXR1YXRpb25zIHdoZXJlIHlvdSBjYW4ndCB1c2VcbiAgICogdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkLCB5b3UgbWF5IHVzZVxuICAgKiAtLWRhbmdlcm91c2x5LWRpc2FibGUtcGFja2FnZS1tYW5hZ2VyLWNoZWNrIHRvIG9wdCBvdXQgb2YgdGhpcyBjaGVjayBhbmRcbiAgICogYXNzdW1lIHRoZSByaXNrcyBvZiB1bnN0YWJsZSBsb2NrZmlsZXMgcHJvZHVjaW5nIHVucHJlZGljdGFibGUgYmVoYXZpb3IuXG4gICAqIFdoZW4gZGlzYWJsZWQsIFR1cmJvcmVwbyB3aWxsIGF0dGVtcHQgYSBiZXN0LWVmZm9ydCBkaXNjb3Zlcnkgb2YgdGhlXG4gICAqIGludGVuZGVkIHBhY2thZ2UgbWFuYWdlciBtZWFudCBmb3IgdGhlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2Rhbmdlcm91c2x5ZGlzYWJsZXBhY2thZ2VtYW5hZ2VyY2hlY2tcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogXCIudHVyYm8vY2FjaGVcIlxuICAgKlxuICAgKiBTcGVjaWZ5IHRoZSBmaWxlc3lzdGVtIGNhY2hlIGRpcmVjdG9yeS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jY2FjaGVkaXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjYWNoZURpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogdHJ1ZVxuICAgKlxuICAgKiBUdXJib3JlcG8gcnVucyBhIGJhY2tncm91bmQgcHJvY2VzcyB0byBwcmUtY2FsY3VsYXRlIHNvbWUgZXhwZW5zaXZlXG4gICAqIG9wZXJhdGlvbnMuIFRoaXMgc3RhbmRhbG9uZSBwcm9jZXNzIChkYWVtb24pIGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLFxuICAgKiBhbmQgbm90IHJlcXVpcmVkIGZvciBwcm9wZXIgZnVuY3Rpb25pbmcgb2YgdHVyYm8uXG4gICAqXG4gICAqIGh0dHBzOi8vdHVyYm8uYnVpbGQvcmVwby9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2RhZW1vblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhZW1vbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IFwic3RyaWN0XCJcbiAgICpcbiAgICogVHVyYm9yZXBvJ3MgRW52aXJvbm1lbnQgTW9kZXMgYWxsb3cgeW91IHRvIGNvbnRyb2wgd2hpY2ggZW52aXJvbm1lbnRcbiAgICogdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgdG8gYSB0YXNrIGF0IHJ1bnRpbWU6XG4gICAqXG4gICAqXCJzdHJpY3RcIjogRmlsdGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBvbmx5IHRob3NlIHRoYXQgYXJlIHNwZWNpZmllZFxuICAgKiBpbiB0aGUgZW52IGFuZCBnbG9iYWxFbnYga2V5cyBpbiB0dXJiby5qc29uLlxuICAgKlxuICAgKiBcImxvb3NlXCI6IEFsbG93IGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBwcm9jZXNzIHRvIGJlIGF2YWlsYWJsZS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZW52bW9kZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVudk1vZGU6IHN0cmluZztcblxuICAvKipcbiAgICogaXMgdGhpcyB0aGUgcm9vdCBwcm9qZWN0P1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzUm9vdFByb2plY3Q6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1haW4gdHVyYm86YnVpbGQgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkVGFzazogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVDb21waWxlVGFzaz86IFR1cmJvUmVwb1Rhc2s7XG4gIC8qKlxuICAgKlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBpbGVUYXNrPzogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwb3N0Q29tcGlsZVRhc2s/OiBUdXJib1JlcG9UYXNrO1xuXG4gIC8qKlxuICAgKlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlc3RUYXNrPzogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwYWNrYWdlVGFzaz86IFR1cmJvUmVwb1Rhc2s7XG5cbiAgLyoqXG4gICAqIFN1Yi1UYXNrcyB0byBydW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXNrczogQXJyYXk8VHVyYm9SZXBvVGFzaz4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogTm9kZVByb2plY3QsXG4gICAgb3B0aW9uczogVHVyYm9SZXBvT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMudHVyYm9WZXJzaW9uID0gb3B0aW9ucy50dXJib1ZlcnNpb24gPz8gXCJeMi4wLjBcIjtcbiAgICB0aGlzLmlzUm9vdFByb2plY3QgPSBwcm9qZWN0ID09PSBwcm9qZWN0LnJvb3Q7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdHVyYm9yZXBvIHBhY2thZ2UgdG8gcm9vdCBwcm9qZWN0LlxuICAgICAqL1xuICAgIGlmICh0aGlzLmlzUm9vdFByb2plY3QpIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhgdHVyYm9AJHt0aGlzLnR1cmJvVmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZ25vcmUgdGhlIHdvcmtpbmcgY2FjaGUgZm9yIHR1cmJvLlxuICAgICAqL1xuICAgIHByb2plY3QuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFwiLy50dXJib1wiKTtcbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uYWRkUGF0dGVybnMoXCIvLnR1cmJvL1wiKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFNldCBzb21lIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgdGhpcy5leHRlbmRzID0gb3B0aW9ucy5leHRlbmRzID8/ICh0aGlzLmlzUm9vdFByb2plY3QgPyBbXSA6IFtcIi8vXCJdKTtcbiAgICB0aGlzLmdsb2JhbERlcGVuZGVuY2llcyA9IG9wdGlvbnMuZ2xvYmFsRGVwZW5kZW5jaWVzID8/IFtdO1xuICAgIHRoaXMuZ2xvYmFsRW52ID0gb3B0aW9ucy5nbG9iYWxFbnYgPz8gW107XG4gICAgdGhpcy5nbG9iYWxQYXNzVGhyb3VnaEVudiA9IG9wdGlvbnMuZ2xvYmFsUGFzc1Rocm91Z2hFbnYgPz8gW107XG4gICAgdGhpcy51aSA9IG9wdGlvbnMudWkgPz8gXCJzdHJlYW1cIjtcbiAgICB0aGlzLmRhbmdlcm91c2x5RGlzYWJsZVBhY2thZ2VNYW5hZ2VyQ2hlY2sgPVxuICAgICAgb3B0aW9ucy5kYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrID8/IGZhbHNlO1xuICAgIHRoaXMuY2FjaGVEaXIgPSBvcHRpb25zLmNhY2hlRGlyID8/IFwiLnR1cmJvL2NhY2hlXCI7XG4gICAgdGhpcy5kYWVtb24gPSBvcHRpb25zLmRhZW1vbiA/PyB0cnVlO1xuICAgIHRoaXMuZW52TW9kZSA9IG9wdGlvbnMuZW52TW9kZSA/PyBcInN0cmljdFwiO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogVHVyYm8gQnVpbGQgVGFza1xuICAgICAqXG4gICAgICogQWxsIHR1cmJvIGNvbmZpZ3MgY29udGFpbiBhIHR1cmJvIGJ1aWxkIHRhc2suXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHVyYm8gZW50cnkgcG9pbnQgZGVmaW5pdGlvbiBmb3IgdGhlIHR1cmJvOmJ1aWxkIHRhc2suIFRoaXMgZXhpc3RzXG4gICAgICogaW4gZWFjaCBwcm9qZWN0IGFuZCBpcyB3cml0dGVuIHRvdCBoZSB0dXJiby5qc29uIGZpbGUuIFRoaXMgdGFzayBpcyBub3RcbiAgICAgKiBhIHByb2plbiB0YXNrIG9yIGEgTm9kZSB0YXNrLlxuICAgICAqL1xuICAgIHRoaXMuYnVpbGRUYXNrID0gbmV3IFR1cmJvUmVwb1Rhc2sodGhpcy5wcm9qZWN0LCB7XG4gICAgICBuYW1lOiBST09UX1RVUkJPX1RBU0tfTkFNRSxcbiAgICAgIGRlcGVuZHNPbjogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gW2BeJHtST09UX1RVUkJPX1RBU0tfTkFNRX1gXSA6IFtdLFxuICAgIH0pO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogVHVyYm8gQnVpbGQgQWxsIFRhc2tcbiAgICAgKlxuICAgICAqIFRoZSBQcm9qZW4gZW50cnkgcG9pbnQuIFRoaXMgb25seSBleGlzdHMgaW4gdGhlIHJvb3QgYW5kIGlzIGEgcHJvamVuXG4gICAgICogdGFzayB0aGF0IGNhbiBiZSBydW4gdXNpbmcgcG5wbS5cbiAgICAgKlxuICAgICAqIC0gVHVybnMgb2ZmIHRlbGVtZXRyeVxuICAgICAqIC0gUnVucyByb290IHR1cmJvIHRhc2sgdG8gYnVpbGQgYWxsIHN1Yi1wcm9qZWN0cy5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGlmICh0aGlzLmlzUm9vdFByb2plY3QpIHtcbiAgICAgIC8qKlxuICAgICAgICogQ3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIGJ1aWxkIGFsbCB0YXNrLlxuICAgICAgICovXG4gICAgICBjb25zdCBidWlsZEFsbCA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKFJPT1RfQ0lfVEFTS19OQU1FLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiUm9vdCBidWlsZCBmb2xsb3dlZCBieSBzdWItcHJvamVjdCBidWlsZHMuIE1pbWljcyB0aGUgQ0kgYnVpbGQgcHJvY2VzcyBpbiBvbmUgc3RlcC5cIixcbiAgICAgIH0pO1xuICAgICAgYnVpbGRBbGwuZXhlYyhcInR1cmJvIHRlbGVtZXRyeSBkaXNhYmxlXCIpO1xuICAgICAgYnVpbGRBbGwuZXhlYyhcbiAgICAgICAgYHR1cmJvICR7Uk9PVF9UVVJCT19UQVNLX05BTUV9IC0tc3VtbWFyaXplIC0tY29uY3VycmVuY3k9MTBgLFxuICAgICAgKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBBdHRhY2ggYnVpbGQgYWxsIHR1cmJvIHJ1bm5lciB0byB0aGUgYnVpbGQgd29ya2Zsb3cgYXQgZ2l0aHViLlxuICAgICAgICovXG4gICAgICBwcm9qZWN0LmJ1aWxkV29ya2Zsb3c/LmFkZFBvc3RCdWlsZFN0ZXBzKHtcbiAgICAgICAgbmFtZTogXCJCdWlsZCBTdWIgUHJvamVjdHNcIixcbiAgICAgICAgcnVuOiBgbnB4IHByb2plbiAke1JPT1RfQ0lfVEFTS19OQU1FfWAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTVUItUFJPSkVDVFxuICAgICAqXG4gICAgICogQ3JlYXRlcyB0YXNrcyBmb3IgdGhlIHR5cGljYWwgbGlmZWN5Y2xlIGZvciBhbGwgcHJvamVjdCBwcm9qZWN0cy5cbiAgICAgKi9cbiAgICBpZiAoIXRoaXMuaXNSb290UHJvamVjdCkge1xuICAgICAgdGhpcy5wcmVDb21waWxlVGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHByb2plY3QsIHtcbiAgICAgICAgbmFtZTogXCJwcmUtY29tcGlsZVwiLFxuICAgICAgICBpbnB1dHM6IFtcInNyYy8qKi8qXCIsIFwiKi5qc29uXCJdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmNvbXBpbGVUYXNrID0gbmV3IFR1cmJvUmVwb1Rhc2socHJvamVjdCwgeyBuYW1lOiBcImNvbXBpbGVcIiB9KTtcbiAgICAgIHRoaXMucG9zdENvbXBpbGVUYXNrID0gbmV3IFR1cmJvUmVwb1Rhc2socHJvamVjdCwge1xuICAgICAgICBuYW1lOiBcInBvc3QtY29tcGlsZVwiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRlc3RUYXNrID0gbmV3IFR1cmJvUmVwb1Rhc2socHJvamVjdCwgeyBuYW1lOiBcInRlc3RcIiB9KTtcbiAgICAgIHRoaXMucGFja2FnZVRhc2sgPSBuZXcgVHVyYm9SZXBvVGFzayhwcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IFwicGFja2FnZVwiLFxuICAgICAgICBpbnB1dHM6IFtcIi5ucG1pZ25vcmVcIl0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFza3MucHVzaChcbiAgICAgICAgdGhpcy5wcmVDb21waWxlVGFzayxcbiAgICAgICAgdGhpcy5jb21waWxlVGFzayxcbiAgICAgICAgdGhpcy5wb3N0Q29tcGlsZVRhc2ssXG4gICAgICAgIHRoaXMudGVzdFRhc2ssXG4gICAgICAgIHRoaXMucGFja2FnZVRhc2ssXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogQWRkIGFueSBsb2NhbCB3b3Jrc3BhY2Ugc3BlY2lmaWMgZGVwcyB0byBkZXBlbmRzT24gc28gdGhhdCB3ZSBrbm93XG4gICAgICogY29tcGlsZSBoYXMgZmluaXNoZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGFueSBkaXN0cmlidXRpb24gYXJ0aWZhY3RzLlxuICAgICAqXG4gICAgICogRG8gdGhpcyBpbiBwcmVzeW50aCBzbyB0aGF0IHdlIGNhbiBiZSBzdXJlIGFsbCBwcm9qZWN0IGRlcGVuZGVuY2llcyBoYXZlXG4gICAgICogYmVlbiBkZWZpbmVkIGZpcnN0LlxuICAgICAqL1xuICAgIGxldCBuZXh0RGVwZW5kc09uID0gdGhpcy5wcm9qZWN0LmRlcHMuYWxsXG4gICAgICAuZmlsdGVyKChkKSA9PiBkLnZlcnNpb24gPT09IFwid29ya3NwYWNlOipcIilcbiAgICAgIC5tYXAoKGQpID0+IFtkLm5hbWUsIFJPT1RfVFVSQk9fVEFTS19OQU1FXS5qb2luKFwiI1wiKSk7XG5cbiAgICAvKipcbiAgICAgKiBMb29wIG92ZXIgYWxsIHByb2plbiB0YXNrcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyB0dXJibyB0YXNrXG4gICAgICogZGVmaW5pdGlvbnMuIENoYWluIHRoZW0gdG9nZXRoZXIgdXNpbmcgZGVwZW5kc09uLCBhbG9uZyB3aXRoIGFueSBvdXRzaWRlXG4gICAgICogcGFja2FnZSBkZXBlbmRlbmNpZXMuXG4gICAgICovXG4gICAgaWYgKCF0aGlzLmlzUm9vdFByb2plY3QpIHtcbiAgICAgIChcbiAgICAgICAgW1xuICAgICAgICAgIFt0aGlzLnByb2plY3QucHJlQ29tcGlsZVRhc2ssIHRoaXMucHJlQ29tcGlsZVRhc2tdLFxuICAgICAgICAgIFt0aGlzLnByb2plY3QuY29tcGlsZVRhc2ssIHRoaXMuY29tcGlsZVRhc2tdLFxuICAgICAgICAgIFt0aGlzLnByb2plY3QucG9zdENvbXBpbGVUYXNrLCB0aGlzLnBvc3RDb21waWxlVGFza10sXG4gICAgICAgICAgW3RoaXMucHJvamVjdC50ZXN0VGFzaywgdGhpcy50ZXN0VGFza10sXG4gICAgICAgICAgW3RoaXMucHJvamVjdC5wYWNrYWdlVGFzaywgdGhpcy5wYWNrYWdlVGFza10sXG4gICAgICAgIF0gYXMgQXJyYXk8W1Rhc2ssIFR1cmJvUmVwb1Rhc2tdPlxuICAgICAgKS5mb3JFYWNoKChbcGpUYXNrLCB0dXJib1Rhc2tdKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBzdGVwcyBleGlzdCBjaGFpbiB1c2luZyBkZXBlbmRzT25cbiAgICAgICAgICovXG4gICAgICAgIGlmIChwalRhc2sgJiYgdHVyYm9UYXNrICYmIHBqVGFzay5zdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKG5leHREZXBlbmRzT24ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdHVyYm9UYXNrLmRlcGVuZHNPbi5wdXNoKC4uLm5leHREZXBlbmRzT24pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0RGVwZW5kc09uID0gW3R1cmJvVGFzay5uYW1lXTtcblxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIE90aGVyd2lzZSwgaWYgYSB0YXNrIGRvZXNuJ3QgZG8gYW55dGhpbmcsIGRlYWN0aXZhdGUgaXQuXG4gICAgICAgICAgICovXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHVyYm9UYXNrLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvKipcbiAgICAgICAqIE1haW4gYnVpbGQgZW50cnkgcG9pbnQgZGVwZW5kcyBvbiB3aGF0ZXZlciB3YXMgbGFzdC5cbiAgICAgICAqL1xuICAgICAgdGhpcy5idWlsZFRhc2suZGVwZW5kc09uLnB1c2goLi4ubmV4dERlcGVuZHNPbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgZm9yIHRoZSB0dXJibyBjb25maWcgZmlsZS5cbiAgICAgKi9cbiAgICBjb25zdCBmaWxlTmFtZTogc3RyaW5nID0gXCJ0dXJiby5qc29uXCI7XG5cbiAgICAvKipcbiAgICAgKiBFbnN1cmUgdGhhdCB0dXJibyBjb25maWcgZG9lc24ndCBlbmQgdXAgaW4gYW55IHBhY2thZ2UgZGlzdHJpYnV0aW9ucy5cbiAgICAgKi9cbiAgICB0aGlzLnByb2plY3QuYWRkUGFja2FnZUlnbm9yZShmaWxlTmFtZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29udGVudCBvZiB0aGlzIFlBTUwgZmlsZSB3aWxsIGJlIHJlc29sdmVkIGF0IHN5bnRoIHRpbWUuIEJ5IHRoZW4sXG4gICAgICogYW55IHN1Yi1wcm9qZWN0cyB3aWxsIGJlIGRlZmluZWQgYW5kIHRoaXMgd2lsbCBiZSBhIGNvbXBsZXRlIGxpc3QuXG4gICAgICovXG4gICAgbmV3IEpzb25GaWxlKHRoaXMucHJvamVjdCwgZmlsZU5hbWUsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBleHRlbmRzOiB0aGlzLmV4dGVuZHMubGVuZ3RoID8gdGhpcy5leHRlbmRzIDogdW5kZWZpbmVkLFxuICAgICAgICBnbG9iYWxEZXBlbmRlbmNpZXM6XG4gICAgICAgICAgdGhpcy5pc1Jvb3RQcm9qZWN0ICYmIHRoaXMuZ2xvYmFsRGVwZW5kZW5jaWVzLmxlbmd0aFxuICAgICAgICAgICAgPyB0aGlzLmdsb2JhbERlcGVuZGVuY2llc1xuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGdsb2JhbEVudjpcbiAgICAgICAgICB0aGlzLmlzUm9vdFByb2plY3QgJiYgdGhpcy5nbG9iYWxFbnYubGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMuZ2xvYmFsRW52XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2xvYmFsUGFzc1Rocm91Z2hFbnY6XG4gICAgICAgICAgdGhpcy5pc1Jvb3RQcm9qZWN0ICYmIHRoaXMuZ2xvYmFsUGFzc1Rocm91Z2hFbnYubGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMuZ2xvYmFsUGFzc1Rocm91Z2hFbnZcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICB1aTogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gdGhpcy51aSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGFuZ2Vyb3VzbHlEaXNhYmxlUGFja2FnZU1hbmFnZXJDaGVjazogdGhpcy5pc1Jvb3RQcm9qZWN0XG4gICAgICAgICAgPyB0aGlzLmRhbmdlcm91c2x5RGlzYWJsZVBhY2thZ2VNYW5hZ2VyQ2hlY2tcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgY2FjaGVEaXI6IHRoaXMuaXNSb290UHJvamVjdCA/IHRoaXMuY2FjaGVEaXIgOiB1bmRlZmluZWQsXG4gICAgICAgIGRhZW1vbjogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gdGhpcy5kYWVtb24gOiB1bmRlZmluZWQsXG4gICAgICAgIGVudk1vZGU6IHRoaXMuaXNSb290UHJvamVjdCA/IHRoaXMuZW52TW9kZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsbCB0YXNrc1xuICAgICAgICAgKi9cbiAgICAgICAgdGFza3M6IHRoaXMudGFza3NcbiAgICAgICAgICAuZmlsdGVyKCh0YXNrKSA9PiB0YXNrLmlzQWN0aXZlKVxuICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCB0YXNrKSA9PiB7XG4gICAgICAgICAgICAgIGFjY1t0YXNrLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIC4uLnRhc2sudGFza0NvbmZpZygpLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgW3RoaXMuYnVpbGRUYXNrLm5hbWVdOiB7IC4uLnRoaXMuYnVpbGRUYXNrLnRhc2tDb25maWcoKSB9LFxuICAgICAgICAgICAgfSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgICAgICksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED