aws-delivlib 14.1.112 → 14.2.0
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.
- package/lib/build-spec.d.ts +1 -0
- package/lib/build-spec.js +1 -1
- package/lib/shellable.d.ts +24 -1
- package/lib/shellable.js +17 -7
- package/package.json +1 -1
package/lib/build-spec.d.ts
CHANGED
package/lib/build-spec.js
CHANGED
|
@@ -167,4 +167,4 @@ function renameKey(xs, orig, rename) {
|
|
|
167
167
|
}
|
|
168
168
|
return ret;
|
|
169
169
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkLXNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWdEO0FBR2hELE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVM7SUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQXVCO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBMkI7UUFDOUMsaUZBQWlGO1FBQ2pGLHlEQUF5RDtRQUN6RCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUMxQyxLQUFLLENBQUMsNkJBQTZCLElBQUksRUFBRSxFQUN6QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xGLENBQUM7UUFFRixJQUFJLFNBQTRDLENBQUM7UUFDakQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsU0FBUyxHQUFHO2dCQUNWLHFCQUFxQixFQUFFLElBQUEsZ0JBQVMsRUFBQyxtQkFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNELGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDbEIsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUM7Z0JBQ2xCLE9BQU8sRUFB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U0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUMzSTtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBMUlELDhCQTBJQztBQXdFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUksRUFBc0I7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEVBQXNCLEVBQUUsSUFBWSxFQUFFLE1BQWM7SUFDeEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcFZhbHVlcywgbm9VbmRlZmluZWQgfSBmcm9tICcuL3V0aWwnO1xuXG5cbmNvbnN0IE1BR0lDX0FSVElGQUNUX05BTUUgPSAnUFJJTUFSWSc7XG5cbi8qKlxuICogQ2xhc3MgdG8gbW9kZWwgYSBidWlsZHNwZWMgdmVyc2lvbiAwLjJcbiAqXG4gKiBBcnRpZmFjdCBoYW5kbGluZyBpcyBhIGxpdHRsZSBzcGVjaWFsOiBDb2RlQnVpbGQgd2lsbCBpbnRlcnByZXQgdGhlXG4gKiAnYXJ0aWZhY3RzJyBzZWN0aW9uIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGFyZSBzZWNvbmRhcnlcbiAqIGFydGlmYWN0cyBvciBub3QuXG4gKlxuICogSWYgdGhlcmUgaXMgb25seSBvbmUgYXJ0aWZhY3QsIHRoZSBzaW5nbGUgYXJ0aWZhY3QgbXVzdCBnbyBpbnRvIHRoZSB0b3AtbGV2ZWxcbiAqICdhcnRpZmFjdHMnIHNlY3Rpb24uIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcnRpZmFjdHMsIGFsbCBvZiB0aGVtIG11c3QgZ29cbiAqIGludG8gdGhlICdzZWNvbmRhcnktYXJ0aWZhY3RzJyBzZWN0aW9uLiBVcG9uIHJlbmRlcmluZyB0byBKU09OLCB0aGUgY2FsbGVyXG4gKiBtdXN0IHN1cHBseSB0aGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBhcnRpZmFjdCAoaXQncyBkZXRlcm1pbmVkIGJ5XG4gKiB0aGUgQ29kZVBpcGVsaW5lIEFjdGlvbiB0aGF0IGludm9rZXMgdGhlIENvZGVCdWlsZCBQcm9qZWN0IHRoYXQgdXNlcyB0aGlzXG4gKiBidWlsZHNwZWMpLlxuICpcbiAqIElOVkFSSUFOVDogaW4tbWVtb3J5LCB0aGUgQnVpbGRTcGVjIHdpbGwgdHJlYXQgYWxsIGFydGlmYWN0cyB0aGUgc2FtZSAoYXNcbiAqIGEgYmFnIG9mIHNlY29uZGFyeSBhcnRpZmFjdHMpLiBBdCB0aGUgZWRnZXMgKGNvbnN0cnVjdGlvbiBvciByZW5kZXJpbmcpLFxuICogaWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGFydGlmYWN0IGl0IHdpbGwgYmUgcmVuZGVyZWQgdG8gdGhlIHByaW1hcnlcbiAqIGFydGlmYWN0LlxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRTcGVjIHtcbiAgcHVibGljIHN0YXRpYyBsaXRlcmFsKHN0cnVjdDogQnVpbGRTcGVjU3RydWN0KSB7XG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoc3RydWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2ltcGxlKHByb3BzOiBTaW1wbGVCdWlsZFNwZWNQcm9wcykge1xuICAgIC8vIFdlIG1lcmdlIHRoZSBwcmltYXJ5IGFydGlmYWN0IGludG8gdGhlIHNlY29uZGFyeSBhcnRpZmFjdHMgdW5kZXIgYSBzcGVjaWFsIGtleVxuICAgIC8vIFRoZXkgd2lsbCBiZSBjb21wYWN0ZWQgYmFjayB0b2dldGhlciBkdXJpbmcgcmVuZGVyaW5nLlxuICAgIGNvbnN0IGFydGlmYWN0RGlyZWN0b3JpZXMgPSBPYmplY3QuYXNzaWduKHt9LFxuICAgICAgcHJvcHMuYWRkaXRpb25hbEFydGlmYWN0RGlyZWN0b3JpZXMgfHwge30sXG4gICAgICBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSA/IHsgW01BR0lDX0FSVElGQUNUX05BTUVdOiBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSB9IDoge30sXG4gICAgKTtcblxuICAgIGxldCBhcnRpZmFjdHM6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoT2JqZWN0LmtleXMoYXJ0aWZhY3REaXJlY3RvcmllcyB8fCB7fSkubGVuZ3RoID4gMCkge1xuICAgICAgYXJ0aWZhY3RzID0ge1xuICAgICAgICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc6IG1hcFZhbHVlcyhhcnRpZmFjdERpcmVjdG9yaWVzISwgZCA9PiAoe1xuICAgICAgICAgICdiYXNlLWRpcmVjdG9yeSc6IGQsXG4gICAgICAgICAgJ2ZpbGVzJzogWycqKi8qJ10sXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoe1xuICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICBwaGFzZXM6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgaW5zdGFsbDogcHJvcHMuaW5zdGFsbCAhPT0gdW5kZWZpbmVkID8geyBjb21tYW5kczogcHJvcHMuaW5zdGFsbCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBwcmVfYnVpbGQ6IHByb3BzLnByZUJ1aWxkICE9PSB1bmRlZmluZWQgPyB7IGNvbW1hbmRzOiBwcm9wcy5wcmVCdWlsZCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBidWlsZDogcHJvcHMuYnVpbGQgIT09IHVuZGVmaW5lZCA/IHsgY29tbWFuZHM6IHByb3BzLmJ1aWxkIH0gOiB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIGFydGlmYWN0cyxcbiAgICAgIHJlcG9ydHM6IHByb3BzLnJlcG9ydHMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVtcHR5KCkge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHsgdmVyc2lvbjogJzAuMicgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3BlYzogQnVpbGRTcGVjU3RydWN0KSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZGl0aW9uYWxBcnRpZmFjdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zcGVjLmFydGlmYWN0cyAmJiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10gfHwge30pLmZpbHRlcihuID0+IG4gIT09IE1BR0lDX0FSVElGQUNUX05BTUUpO1xuICB9XG5cbiAgcHVibGljIG1lcmdlKG90aGVyOiBCdWlsZFNwZWMpOiBCdWlsZFNwZWMge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHtcbiAgICAgICd2ZXJzaW9uJzogJzAuMicsXG4gICAgICAncnVuLWFzJzogbWVyZ2VPYmoodGhpcy5zcGVjWydydW4tYXMnXSwgb3RoZXIuc3BlY1sncnVuLWFzJ10sIGVxdWFsT2JqZWN0cyksXG4gICAgICAnZW52JzogbWVyZ2VPYmoodGhpcy5zcGVjLmVudiwgb3RoZXIuc3BlYy5lbnYsIChhLCBiKSA9PiAoe1xuICAgICAgICAncGFyYW1ldGVyLXN0b3JlJzogbWVyZ2VEaWN0KGFbJ3BhcmFtZXRlci1zdG9yZSddLCBiWydwYXJhbWV0ZXItc3RvcmUnXSwgZXF1YWxPYmplY3RzKSxcbiAgICAgICAgJ3ZhcmlhYmxlcyc6IG1lcmdlRGljdChhLnZhcmlhYmxlcywgYi52YXJpYWJsZXMsIGVxdWFsT2JqZWN0cyksXG4gICAgICB9KSksXG4gICAgICAncGhhc2VzJzogbWVyZ2VEaWN0KHRoaXMuc3BlYy5waGFzZXMsIG90aGVyLnNwZWMucGhhc2VzLCAoYSwgYikgPT4gKHtcbiAgICAgICAgJ3J1bi1hcyc6IG1lcmdlT2JqKHRoaXMuc3BlY1sncnVuLWFzJ10sIG90aGVyLnNwZWNbJ3J1bi1hcyddLCBlcXVhbE9iamVjdHMpLFxuICAgICAgICAnY29tbWFuZHMnOiBtZXJnZUxpc3QoYS5jb21tYW5kcywgYi5jb21tYW5kcykhLFxuICAgICAgICAnZmluYWxseSc6IG1lcmdlTGlzdChhLmZpbmFsbHksIGIuZmluYWxseSksXG4gICAgICB9KSksXG4gICAgICAnYXJ0aWZhY3RzJzogbWVyZ2VPYmoodGhpcy5zcGVjLmFydGlmYWN0cywgb3RoZXIuc3BlYy5hcnRpZmFjdHMsIG1lcmdlQXJ0aWZhY3RzKSxcbiAgICAgICdjYWNoZSc6IG1lcmdlT2JqKHRoaXMuc3BlYy5jYWNoZSwgb3RoZXIuc3BlYy5jYWNoZSwgKGEsIGIpID0+ICh7XG4gICAgICAgIHBhdGhzOiBtZXJnZUxpc3QoYS5wYXRocywgYi5wYXRocykhLFxuICAgICAgfSkpLFxuICAgICAgJ3JlcG9ydHMnOiBtZXJnZURpY3QodGhpcy5zcGVjLnJlcG9ydHMsIG90aGVyLnNwZWMucmVwb3J0cywgKGEsIGIpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvcnRzIG11c3QgaGF2ZSB1bmlxdWUgbmFtZXMsIGdvdCAke2F9IGFuZCAke2J9YCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlQXJ0aWZhY3RzKGE6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCwgYjogUHJpbWFyeUFydGlmYWN0U3RydWN0KTogUHJpbWFyeUFydGlmYWN0U3RydWN0IHtcbiAgICAgIGlmIChhLmZpbGVzIHx8IGIuZmlsZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb25lIG9mIHRoZSBCdWlsZFNwZWNzIG1heSBoYXZlIGEgcHJpbWFyeSBhcnRpZmFjdC4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJ0aWZhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgYVsnc2Vjb25kYXJ5LWFydGlmYWN0cyddIHx8IHt9KTtcbiAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGJbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKGsgaW4gYXJ0aWZhY3RzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFydGlmYWN0IHdpdGggbmFtZSAke2t9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXJ0aWZhY3RzW2tdID0gdjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBhLCB7ICdzZWNvbmRhcnktYXJ0aWZhY3RzJzogYXJ0aWZhY3RzIH0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKGE6IHN0cmluZywgYjogc3RyaW5nKSB7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IG1lcmdlIHR3byBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGUgc2FtZSBrZXk6ICR7SlNPTi5zdHJpbmdpZnkoYSl9LCAke0pTT04uc3RyaW5naWZ5KGIpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VPYmo8VD4oYTogVCB8IHVuZGVmaW5lZCwgYjogVCB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBiOyB9XG4gICAgICBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBhOyB9XG4gICAgICByZXR1cm4gZm4oYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VEaWN0PFQ+KGFzOiB7W2s6IHN0cmluZ106IFR9IHwgdW5kZWZpbmVkLCBiczoge1trOiBzdHJpbmddOiBUfSB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKSB7XG4gICAgICByZXR1cm4gbWVyZ2VPYmooYXMsIGJzLCAoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCByZXQgPSBPYmplY3QuYXNzaWduKHt9LCBhKTtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYikpIHtcbiAgICAgICAgICBpZiAocmV0W2tdKSB7XG4gICAgICAgICAgICByZXRba10gPSBmbihyZXRba10sIHYpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRba10gPSB2O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VMaXN0PFQ+KGFzOiBUW10gfCB1bmRlZmluZWQsIGJzOiBUW10gfCB1bmRlZmluZWQpOiBUW10gfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIG1lcmdlT2JqKGFzLCBicywgKGEsIGIpID0+IGEuY29uY2F0KGIpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKG9wdGlvbnM6IEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMgPSB7fSk6IEJ1aWxkU3BlY1N0cnVjdCB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3BlYywgeyBhcnRpZmFjdHM6IHRoaXMucmVuZGVyQXJ0aWZhY3RzKG9wdGlvbnMpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJBcnRpZmFjdHMob3B0aW9uczogQnVpbGRTcGVjUmVuZGVyT3B0aW9ucyk6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnNwZWMuYXJ0aWZhY3RzIHx8ICF0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHsgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7IH1cblxuICAgIC8vIFNpbXBsaWZ5IGEgc2luZ2xlIFwic2Vjb25kYXJ5LWFydGlmYWN0c1wiIHRvIGEgc2luZ2xlIHByaW1hcnkgYXJ0aWZhY3QgKHJlZ2FyZGxlc3Mgb2YgdGhlIG5hbWUpXG4gICAgY29uc3Qgc2luZ2xlQXJ0ID0gZGljdFNpbmdsZXRvblZhbHVlKHRoaXMuc3BlYy5hcnRpZmFjdHNbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSk7XG4gICAgaWYgKHNpbmdsZUFydCkgeyByZXR1cm4gc2luZ2xlQXJ0OyB9XG5cbiAgICAvLyBPdGhlcndpc2UgcmVuYW1lIGEgJ1BSSU1BUlknIGtleSBpZiBpdCBleGlzdHNcbiAgICBpZiAoTUFHSUNfQVJUSUZBQ1RfTkFNRSBpbiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHtcbiAgICAgIGlmICghb3B0aW9ucy5wcmltYXJ5QXJ0aWZhY3ROYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVwbGFjZW1lbnQgbmFtZSBmb3IgJHtNQUdJQ19BUlRJRkFDVF9OQU1FfSBhcnRpZmFjdCBub3Qgc3VwcGxpZWRgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgJ3NlY29uZGFyeS1hcnRpZmFjdHMnOiByZW5hbWVLZXkodGhpcy5zcGVjLmFydGlmYWN0c1snc2Vjb25kYXJ5LWFydGlmYWN0cyddLCBNQUdJQ19BUlRJRkFDVF9OQU1FLCBvcHRpb25zLnByaW1hcnlBcnRpZmFjdE5hbWUpIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVCdWlsZFNwZWNQcm9wcyB7XG4gIGluc3RhbGw/OiBzdHJpbmdbXTtcbiAgcHJlQnVpbGQ/OiBzdHJpbmdbXTtcbiAgYnVpbGQ/OiBzdHJpbmdbXTtcbiAgcmVwb3J0cz86IHtba2V5OiBzdHJpbmddOiBSZXBvcnRTdHJ1Y3R9O1xuICBhcnRpZmFjdERpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlcmUgdGhlIGRpcmVjdG9yaWVzIGZvciBlYWNoIGFydGlmYWN0IGFyZVxuICAgKlxuICAgKiBVc2Ugc3BlY2lhbCBuYW1lIFBSSU1BUlkgdG8gcmVmZXIgdG8gdGhlIHByaW1hcnkgYXJ0aWZhY3QuIFdpbGwgYmVcbiAgICogcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGFydGlmYWN0IG5hbWUgd2hlbiB0aGUgYnVpbGQgc3BlYyBpcyBzeW50aGVzaXplZC5cbiAgICovXG4gIGFkZGl0aW9uYWxBcnRpZmFjdERpcmVjdG9yaWVzPzoge1tpZDogc3RyaW5nXTogc3RyaW5nfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNwZWNTdHJ1Y3Qge1xuICB2ZXJzaW9uOiAnMC4yJztcbiAgJ3J1bi1hcyc/OiBzdHJpbmc7XG4gIGVudj86IEVudlN0cnVjdDtcbiAgcGhhc2VzPzoge1trZXk6IHN0cmluZ106IFBoYXNlU3RydWN0fTtcbiAgYXJ0aWZhY3RzPzogUHJpbWFyeUFydGlmYWN0U3RydWN0O1xuICBjYWNoZT86IENhY2hlU3RydWN0O1xuICByZXBvcnRzPzoge1trZXk6IHN0cmluZ106IFJlcG9ydFN0cnVjdH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52U3RydWN0IHtcbiAgdmFyaWFibGVzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gICdwYXJhbWV0ZXItc3RvcmUnPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGhhc2VTdHJ1Y3Qge1xuICAncnVuLWFzJz86IHN0cmluZztcbiAgY29tbWFuZHM6IHN0cmluZ1tdO1xuICBmaW5hbGx5Pzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U3RydWN0IHtcbiAgZmlsZXM/OiBzdHJpbmdbXTtcbiAgJ2Jhc2UtZGlyZWN0b3J5Jz86IHN0cmluZztcbiAgJ2Rpc2NhcmQtcGF0aHMnPzogJ3llcycgfCAnbm8nO1xuICAnZmlsZS1mb3JtYXQnPzogJ0N1Y3VtYmVySnNvbicgfCAnSnVuaXRYbWwnIHwgJ051bml0WG1sJyB8ICdUZXN0TkdYbWwnIHwgJ1Zpc3VhbFN0dWRpb1RyeCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RTdHJ1Y3Qge1xuICBmaWxlcz86IHN0cmluZ1tdO1xuICBuYW1lPzogc3RyaW5nO1xuICAnYmFzZS1kaXJlY3RvcnknPzogc3RyaW5nO1xuICAnZGlzY2FyZC1wYXRocyc/OiAneWVzJyB8ICdubyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbWFyeUFydGlmYWN0U3RydWN0IGV4dGVuZHMgQXJ0aWZhY3RTdHJ1Y3Qge1xuICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc/OiB7W2tleTogc3RyaW5nXTogQXJ0aWZhY3RTdHJ1Y3R9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RydWN0IHtcbiAgcGF0aHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMge1xuICAvKipcbiAgICogUmVwbGFjZSBQUklNQVJZIGFydGlmYWN0IG5hbWUgd2l0aCB0aGlzXG4gICAqXG4gICAqIENhbm5vdCB1c2UgdGhlIHNwZWNpYWwgdGVybSBQUklNQVJZIGlmIHRoaXMgaXMgbm90IHN1cHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAgQ2Fubm90IHVzZSBQUklNQVJZXG4gICAqL1xuICBwcmltYXJ5QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElmIHRoZSBkaWN0IGlzIGEgc2luZ2xldG9uIGRpY3QsIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGtleSwgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZGljdFNpbmdsZXRvblZhbHVlPFQ+KHhzOiB7W2tleTogc3RyaW5nXTogVH0pOiBUIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHhzKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHhzW2tleXNbMF1dO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlbmFtZUtleTxUPih4czoge1trZXk6IHN0cmluZ106IFR9LCBvcmlnOiBzdHJpbmcsIHJlbmFtZTogc3RyaW5nKToge1trZXk6IHN0cmluZ106IFR9IHtcbiAgY29uc3QgcmV0ID0gT2JqZWN0LmFzc2lnbih7fSwgeHMpO1xuICBpZiAob3JpZyBpbiByZXQpIHtcbiAgICByZXRbcmVuYW1lXSA9IHJldFtvcmlnXTtcbiAgICBkZWxldGUgcmV0W29yaWddO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkLXNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWdEO0FBR2hELE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVM7SUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQXVCO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBMkI7UUFDOUMsaUZBQWlGO1FBQ2pGLHlEQUF5RDtRQUN6RCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUMxQyxLQUFLLENBQUMsNkJBQTZCLElBQUksRUFBRSxFQUN6QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xGLENBQUM7UUFFRixJQUFJLFNBQTRDLENBQUM7UUFDakQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsU0FBUyxHQUFHO2dCQUNWLHFCQUFxQixFQUFFLElBQUEsZ0JBQVMsRUFBQyxtQkFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNELGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDbEIsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUM7Z0JBQ2xCLE9BQU8sRUFB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U0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUMzSTtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBMUlELDhCQTBJQztBQXlFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUksRUFBc0I7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEVBQXNCLEVBQUUsSUFBWSxFQUFFLE1BQWM7SUFDeEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcFZhbHVlcywgbm9VbmRlZmluZWQgfSBmcm9tICcuL3V0aWwnO1xuXG5cbmNvbnN0IE1BR0lDX0FSVElGQUNUX05BTUUgPSAnUFJJTUFSWSc7XG5cbi8qKlxuICogQ2xhc3MgdG8gbW9kZWwgYSBidWlsZHNwZWMgdmVyc2lvbiAwLjJcbiAqXG4gKiBBcnRpZmFjdCBoYW5kbGluZyBpcyBhIGxpdHRsZSBzcGVjaWFsOiBDb2RlQnVpbGQgd2lsbCBpbnRlcnByZXQgdGhlXG4gKiAnYXJ0aWZhY3RzJyBzZWN0aW9uIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGFyZSBzZWNvbmRhcnlcbiAqIGFydGlmYWN0cyBvciBub3QuXG4gKlxuICogSWYgdGhlcmUgaXMgb25seSBvbmUgYXJ0aWZhY3QsIHRoZSBzaW5nbGUgYXJ0aWZhY3QgbXVzdCBnbyBpbnRvIHRoZSB0b3AtbGV2ZWxcbiAqICdhcnRpZmFjdHMnIHNlY3Rpb24uIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcnRpZmFjdHMsIGFsbCBvZiB0aGVtIG11c3QgZ29cbiAqIGludG8gdGhlICdzZWNvbmRhcnktYXJ0aWZhY3RzJyBzZWN0aW9uLiBVcG9uIHJlbmRlcmluZyB0byBKU09OLCB0aGUgY2FsbGVyXG4gKiBtdXN0IHN1cHBseSB0aGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBhcnRpZmFjdCAoaXQncyBkZXRlcm1pbmVkIGJ5XG4gKiB0aGUgQ29kZVBpcGVsaW5lIEFjdGlvbiB0aGF0IGludm9rZXMgdGhlIENvZGVCdWlsZCBQcm9qZWN0IHRoYXQgdXNlcyB0aGlzXG4gKiBidWlsZHNwZWMpLlxuICpcbiAqIElOVkFSSUFOVDogaW4tbWVtb3J5LCB0aGUgQnVpbGRTcGVjIHdpbGwgdHJlYXQgYWxsIGFydGlmYWN0cyB0aGUgc2FtZSAoYXNcbiAqIGEgYmFnIG9mIHNlY29uZGFyeSBhcnRpZmFjdHMpLiBBdCB0aGUgZWRnZXMgKGNvbnN0cnVjdGlvbiBvciByZW5kZXJpbmcpLFxuICogaWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGFydGlmYWN0IGl0IHdpbGwgYmUgcmVuZGVyZWQgdG8gdGhlIHByaW1hcnlcbiAqIGFydGlmYWN0LlxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRTcGVjIHtcbiAgcHVibGljIHN0YXRpYyBsaXRlcmFsKHN0cnVjdDogQnVpbGRTcGVjU3RydWN0KSB7XG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoc3RydWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2ltcGxlKHByb3BzOiBTaW1wbGVCdWlsZFNwZWNQcm9wcykge1xuICAgIC8vIFdlIG1lcmdlIHRoZSBwcmltYXJ5IGFydGlmYWN0IGludG8gdGhlIHNlY29uZGFyeSBhcnRpZmFjdHMgdW5kZXIgYSBzcGVjaWFsIGtleVxuICAgIC8vIFRoZXkgd2lsbCBiZSBjb21wYWN0ZWQgYmFjayB0b2dldGhlciBkdXJpbmcgcmVuZGVyaW5nLlxuICAgIGNvbnN0IGFydGlmYWN0RGlyZWN0b3JpZXMgPSBPYmplY3QuYXNzaWduKHt9LFxuICAgICAgcHJvcHMuYWRkaXRpb25hbEFydGlmYWN0RGlyZWN0b3JpZXMgfHwge30sXG4gICAgICBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSA/IHsgW01BR0lDX0FSVElGQUNUX05BTUVdOiBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSB9IDoge30sXG4gICAgKTtcblxuICAgIGxldCBhcnRpZmFjdHM6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoT2JqZWN0LmtleXMoYXJ0aWZhY3REaXJlY3RvcmllcyB8fCB7fSkubGVuZ3RoID4gMCkge1xuICAgICAgYXJ0aWZhY3RzID0ge1xuICAgICAgICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc6IG1hcFZhbHVlcyhhcnRpZmFjdERpcmVjdG9yaWVzISwgZCA9PiAoe1xuICAgICAgICAgICdiYXNlLWRpcmVjdG9yeSc6IGQsXG4gICAgICAgICAgJ2ZpbGVzJzogWycqKi8qJ10sXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoe1xuICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICBwaGFzZXM6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgaW5zdGFsbDogcHJvcHMuaW5zdGFsbCAhPT0gdW5kZWZpbmVkID8geyBjb21tYW5kczogcHJvcHMuaW5zdGFsbCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBwcmVfYnVpbGQ6IHByb3BzLnByZUJ1aWxkICE9PSB1bmRlZmluZWQgPyB7IGNvbW1hbmRzOiBwcm9wcy5wcmVCdWlsZCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBidWlsZDogcHJvcHMuYnVpbGQgIT09IHVuZGVmaW5lZCA/IHsgY29tbWFuZHM6IHByb3BzLmJ1aWxkIH0gOiB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIGFydGlmYWN0cyxcbiAgICAgIHJlcG9ydHM6IHByb3BzLnJlcG9ydHMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVtcHR5KCkge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHsgdmVyc2lvbjogJzAuMicgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3BlYzogQnVpbGRTcGVjU3RydWN0KSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZGl0aW9uYWxBcnRpZmFjdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zcGVjLmFydGlmYWN0cyAmJiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10gfHwge30pLmZpbHRlcihuID0+IG4gIT09IE1BR0lDX0FSVElGQUNUX05BTUUpO1xuICB9XG5cbiAgcHVibGljIG1lcmdlKG90aGVyOiBCdWlsZFNwZWMpOiBCdWlsZFNwZWMge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHtcbiAgICAgICd2ZXJzaW9uJzogJzAuMicsXG4gICAgICAncnVuLWFzJzogbWVyZ2VPYmoodGhpcy5zcGVjWydydW4tYXMnXSwgb3RoZXIuc3BlY1sncnVuLWFzJ10sIGVxdWFsT2JqZWN0cyksXG4gICAgICAnZW52JzogbWVyZ2VPYmoodGhpcy5zcGVjLmVudiwgb3RoZXIuc3BlYy5lbnYsIChhLCBiKSA9PiAoe1xuICAgICAgICAncGFyYW1ldGVyLXN0b3JlJzogbWVyZ2VEaWN0KGFbJ3BhcmFtZXRlci1zdG9yZSddLCBiWydwYXJhbWV0ZXItc3RvcmUnXSwgZXF1YWxPYmplY3RzKSxcbiAgICAgICAgJ3ZhcmlhYmxlcyc6IG1lcmdlRGljdChhLnZhcmlhYmxlcywgYi52YXJpYWJsZXMsIGVxdWFsT2JqZWN0cyksXG4gICAgICB9KSksXG4gICAgICAncGhhc2VzJzogbWVyZ2VEaWN0KHRoaXMuc3BlYy5waGFzZXMsIG90aGVyLnNwZWMucGhhc2VzLCAoYSwgYikgPT4gKHtcbiAgICAgICAgJ3J1bi1hcyc6IG1lcmdlT2JqKHRoaXMuc3BlY1sncnVuLWFzJ10sIG90aGVyLnNwZWNbJ3J1bi1hcyddLCBlcXVhbE9iamVjdHMpLFxuICAgICAgICAnY29tbWFuZHMnOiBtZXJnZUxpc3QoYS5jb21tYW5kcywgYi5jb21tYW5kcykhLFxuICAgICAgICAnZmluYWxseSc6IG1lcmdlTGlzdChhLmZpbmFsbHksIGIuZmluYWxseSksXG4gICAgICB9KSksXG4gICAgICAnYXJ0aWZhY3RzJzogbWVyZ2VPYmoodGhpcy5zcGVjLmFydGlmYWN0cywgb3RoZXIuc3BlYy5hcnRpZmFjdHMsIG1lcmdlQXJ0aWZhY3RzKSxcbiAgICAgICdjYWNoZSc6IG1lcmdlT2JqKHRoaXMuc3BlYy5jYWNoZSwgb3RoZXIuc3BlYy5jYWNoZSwgKGEsIGIpID0+ICh7XG4gICAgICAgIHBhdGhzOiBtZXJnZUxpc3QoYS5wYXRocywgYi5wYXRocykhLFxuICAgICAgfSkpLFxuICAgICAgJ3JlcG9ydHMnOiBtZXJnZURpY3QodGhpcy5zcGVjLnJlcG9ydHMsIG90aGVyLnNwZWMucmVwb3J0cywgKGEsIGIpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvcnRzIG11c3QgaGF2ZSB1bmlxdWUgbmFtZXMsIGdvdCAke2F9IGFuZCAke2J9YCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlQXJ0aWZhY3RzKGE6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCwgYjogUHJpbWFyeUFydGlmYWN0U3RydWN0KTogUHJpbWFyeUFydGlmYWN0U3RydWN0IHtcbiAgICAgIGlmIChhLmZpbGVzIHx8IGIuZmlsZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb25lIG9mIHRoZSBCdWlsZFNwZWNzIG1heSBoYXZlIGEgcHJpbWFyeSBhcnRpZmFjdC4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJ0aWZhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgYVsnc2Vjb25kYXJ5LWFydGlmYWN0cyddIHx8IHt9KTtcbiAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGJbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKGsgaW4gYXJ0aWZhY3RzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFydGlmYWN0IHdpdGggbmFtZSAke2t9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXJ0aWZhY3RzW2tdID0gdjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBhLCB7ICdzZWNvbmRhcnktYXJ0aWZhY3RzJzogYXJ0aWZhY3RzIH0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKGE6IHN0cmluZywgYjogc3RyaW5nKSB7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IG1lcmdlIHR3byBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGUgc2FtZSBrZXk6ICR7SlNPTi5zdHJpbmdpZnkoYSl9LCAke0pTT04uc3RyaW5naWZ5KGIpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VPYmo8VD4oYTogVCB8IHVuZGVmaW5lZCwgYjogVCB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBiOyB9XG4gICAgICBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBhOyB9XG4gICAgICByZXR1cm4gZm4oYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VEaWN0PFQ+KGFzOiB7W2s6IHN0cmluZ106IFR9IHwgdW5kZWZpbmVkLCBiczoge1trOiBzdHJpbmddOiBUfSB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKSB7XG4gICAgICByZXR1cm4gbWVyZ2VPYmooYXMsIGJzLCAoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCByZXQgPSBPYmplY3QuYXNzaWduKHt9LCBhKTtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYikpIHtcbiAgICAgICAgICBpZiAocmV0W2tdKSB7XG4gICAgICAgICAgICByZXRba10gPSBmbihyZXRba10sIHYpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRba10gPSB2O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VMaXN0PFQ+KGFzOiBUW10gfCB1bmRlZmluZWQsIGJzOiBUW10gfCB1bmRlZmluZWQpOiBUW10gfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIG1lcmdlT2JqKGFzLCBicywgKGEsIGIpID0+IGEuY29uY2F0KGIpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKG9wdGlvbnM6IEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMgPSB7fSk6IEJ1aWxkU3BlY1N0cnVjdCB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3BlYywgeyBhcnRpZmFjdHM6IHRoaXMucmVuZGVyQXJ0aWZhY3RzKG9wdGlvbnMpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJBcnRpZmFjdHMob3B0aW9uczogQnVpbGRTcGVjUmVuZGVyT3B0aW9ucyk6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnNwZWMuYXJ0aWZhY3RzIHx8ICF0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHsgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7IH1cblxuICAgIC8vIFNpbXBsaWZ5IGEgc2luZ2xlIFwic2Vjb25kYXJ5LWFydGlmYWN0c1wiIHRvIGEgc2luZ2xlIHByaW1hcnkgYXJ0aWZhY3QgKHJlZ2FyZGxlc3Mgb2YgdGhlIG5hbWUpXG4gICAgY29uc3Qgc2luZ2xlQXJ0ID0gZGljdFNpbmdsZXRvblZhbHVlKHRoaXMuc3BlYy5hcnRpZmFjdHNbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSk7XG4gICAgaWYgKHNpbmdsZUFydCkgeyByZXR1cm4gc2luZ2xlQXJ0OyB9XG5cbiAgICAvLyBPdGhlcndpc2UgcmVuYW1lIGEgJ1BSSU1BUlknIGtleSBpZiBpdCBleGlzdHNcbiAgICBpZiAoTUFHSUNfQVJUSUZBQ1RfTkFNRSBpbiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHtcbiAgICAgIGlmICghb3B0aW9ucy5wcmltYXJ5QXJ0aWZhY3ROYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVwbGFjZW1lbnQgbmFtZSBmb3IgJHtNQUdJQ19BUlRJRkFDVF9OQU1FfSBhcnRpZmFjdCBub3Qgc3VwcGxpZWRgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgJ3NlY29uZGFyeS1hcnRpZmFjdHMnOiByZW5hbWVLZXkodGhpcy5zcGVjLmFydGlmYWN0c1snc2Vjb25kYXJ5LWFydGlmYWN0cyddLCBNQUdJQ19BUlRJRkFDVF9OQU1FLCBvcHRpb25zLnByaW1hcnlBcnRpZmFjdE5hbWUpIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVCdWlsZFNwZWNQcm9wcyB7XG4gIGluc3RhbGw/OiBzdHJpbmdbXTtcbiAgcHJlQnVpbGQ/OiBzdHJpbmdbXTtcbiAgYnVpbGQ/OiBzdHJpbmdbXTtcbiAgcmVwb3J0cz86IHtba2V5OiBzdHJpbmddOiBSZXBvcnRTdHJ1Y3R9O1xuICBhcnRpZmFjdERpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlcmUgdGhlIGRpcmVjdG9yaWVzIGZvciBlYWNoIGFydGlmYWN0IGFyZVxuICAgKlxuICAgKiBVc2Ugc3BlY2lhbCBuYW1lIFBSSU1BUlkgdG8gcmVmZXIgdG8gdGhlIHByaW1hcnkgYXJ0aWZhY3QuIFdpbGwgYmVcbiAgICogcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGFydGlmYWN0IG5hbWUgd2hlbiB0aGUgYnVpbGQgc3BlYyBpcyBzeW50aGVzaXplZC5cbiAgICovXG4gIGFkZGl0aW9uYWxBcnRpZmFjdERpcmVjdG9yaWVzPzoge1tpZDogc3RyaW5nXTogc3RyaW5nfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNwZWNTdHJ1Y3Qge1xuICB2ZXJzaW9uOiAnMC4yJztcbiAgJ3J1bi1hcyc/OiBzdHJpbmc7XG4gIGVudj86IEVudlN0cnVjdDtcbiAgcGhhc2VzPzoge1trZXk6IHN0cmluZ106IFBoYXNlU3RydWN0fTtcbiAgYXJ0aWZhY3RzPzogUHJpbWFyeUFydGlmYWN0U3RydWN0O1xuICBjYWNoZT86IENhY2hlU3RydWN0O1xuICByZXBvcnRzPzoge1trZXk6IHN0cmluZ106IFJlcG9ydFN0cnVjdH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52U3RydWN0IHtcbiAgdmFyaWFibGVzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gICdwYXJhbWV0ZXItc3RvcmUnPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gICdleHBvcnRlZC12YXJpYWJsZXMnPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGhhc2VTdHJ1Y3Qge1xuICAncnVuLWFzJz86IHN0cmluZztcbiAgY29tbWFuZHM6IHN0cmluZ1tdO1xuICBmaW5hbGx5Pzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U3RydWN0IHtcbiAgZmlsZXM/OiBzdHJpbmdbXTtcbiAgJ2Jhc2UtZGlyZWN0b3J5Jz86IHN0cmluZztcbiAgJ2Rpc2NhcmQtcGF0aHMnPzogJ3llcycgfCAnbm8nO1xuICAnZmlsZS1mb3JtYXQnPzogJ0N1Y3VtYmVySnNvbicgfCAnSnVuaXRYbWwnIHwgJ051bml0WG1sJyB8ICdUZXN0TkdYbWwnIHwgJ1Zpc3VhbFN0dWRpb1RyeCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RTdHJ1Y3Qge1xuICBmaWxlcz86IHN0cmluZ1tdO1xuICBuYW1lPzogc3RyaW5nO1xuICAnYmFzZS1kaXJlY3RvcnknPzogc3RyaW5nO1xuICAnZGlzY2FyZC1wYXRocyc/OiAneWVzJyB8ICdubyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbWFyeUFydGlmYWN0U3RydWN0IGV4dGVuZHMgQXJ0aWZhY3RTdHJ1Y3Qge1xuICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc/OiB7W2tleTogc3RyaW5nXTogQXJ0aWZhY3RTdHJ1Y3R9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RydWN0IHtcbiAgcGF0aHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMge1xuICAvKipcbiAgICogUmVwbGFjZSBQUklNQVJZIGFydGlmYWN0IG5hbWUgd2l0aCB0aGlzXG4gICAqXG4gICAqIENhbm5vdCB1c2UgdGhlIHNwZWNpYWwgdGVybSBQUklNQVJZIGlmIHRoaXMgaXMgbm90IHN1cHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAgQ2Fubm90IHVzZSBQUklNQVJZXG4gICAqL1xuICBwcmltYXJ5QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElmIHRoZSBkaWN0IGlzIGEgc2luZ2xldG9uIGRpY3QsIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGtleSwgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZGljdFNpbmdsZXRvblZhbHVlPFQ+KHhzOiB7W2tleTogc3RyaW5nXTogVH0pOiBUIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHhzKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHhzW2tleXNbMF1dO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlbmFtZUtleTxUPih4czoge1trZXk6IHN0cmluZ106IFR9LCBvcmlnOiBzdHJpbmcsIHJlbmFtZTogc3RyaW5nKToge1trZXk6IHN0cmluZ106IFR9IHtcbiAgY29uc3QgcmV0ID0gT2JqZWN0LmFzc2lnbih7fSwgeHMpO1xuICBpZiAob3JpZyBpbiByZXQpIHtcbiAgICByZXRbcmVuYW1lXSA9IHJldFtvcmlnXTtcbiAgICBkZWxldGUgcmV0W29yaWddO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|
package/lib/shellable.d.ts
CHANGED
|
@@ -2,6 +2,10 @@ import { Duration, aws_cloudwatch as cloudwatch, aws_codebuild as cbuild, aws_co
|
|
|
2
2
|
import { Construct } from 'constructs';
|
|
3
3
|
import { BuildSpec } from './build-spec';
|
|
4
4
|
export interface ShellableOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Description for the CodeBuild Project
|
|
7
|
+
*/
|
|
8
|
+
readonly description?: string;
|
|
5
9
|
/**
|
|
6
10
|
* Source for the CodeBuild project
|
|
7
11
|
*
|
|
@@ -106,6 +110,24 @@ export interface ShellableOptions {
|
|
|
106
110
|
*/
|
|
107
111
|
alarmEvaluationPeriods?: number;
|
|
108
112
|
secondaryArtifactNames?: string[];
|
|
113
|
+
/**
|
|
114
|
+
* Clarify whether this Shellable produces any artifacts
|
|
115
|
+
*
|
|
116
|
+
* @default true
|
|
117
|
+
*/
|
|
118
|
+
readonly producesArtifacts?: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Namespace to use when adding as an action to the pipeline
|
|
121
|
+
*
|
|
122
|
+
* @default No namespace
|
|
123
|
+
*/
|
|
124
|
+
readonly actionNamespace?: string;
|
|
125
|
+
/**
|
|
126
|
+
* Additional environment variables to set from the pipeline action
|
|
127
|
+
*
|
|
128
|
+
* @default No environment variables
|
|
129
|
+
*/
|
|
130
|
+
readonly pipelineEnvironmentVars?: Record<string, string>;
|
|
109
131
|
}
|
|
110
132
|
/**
|
|
111
133
|
* Properties used to create a Shellable
|
|
@@ -201,6 +223,7 @@ export interface AssumeRole {
|
|
|
201
223
|
* Supports both Windows and Linux computes.
|
|
202
224
|
*/
|
|
203
225
|
export declare class Shellable extends Construct {
|
|
226
|
+
private readonly props;
|
|
204
227
|
readonly project: cbuild.Project;
|
|
205
228
|
readonly role: iam.IRole;
|
|
206
229
|
/**
|
|
@@ -209,7 +232,7 @@ export declare class Shellable extends Construct {
|
|
|
209
232
|
readonly alarm: cloudwatch.Alarm;
|
|
210
233
|
private readonly platform;
|
|
211
234
|
private readonly buildSpec;
|
|
212
|
-
private readonly outputArtifactName
|
|
235
|
+
private readonly outputArtifactName?;
|
|
213
236
|
constructor(parent: Construct, id: string, props: ShellableProps);
|
|
214
237
|
addToPipeline(stage: cpipeline.IStage, name: string, inputArtifact: cpipeline.Artifact, runOrder?: number): cpipeline_actions.CodeBuildAction;
|
|
215
238
|
/**
|
package/lib/shellable.js
CHANGED
|
@@ -47,8 +47,9 @@ const S3_KEY_ENV = 'SCRIPT_S3_KEY';
|
|
|
47
47
|
*/
|
|
48
48
|
class Shellable extends constructs_1.Construct {
|
|
49
49
|
constructor(parent, id, props) {
|
|
50
|
-
var _a, _b;
|
|
50
|
+
var _a, _b, _c;
|
|
51
51
|
super(parent, id);
|
|
52
|
+
this.props = props;
|
|
52
53
|
this.platform = props.platform || ShellPlatform.LinuxUbuntu;
|
|
53
54
|
const entrypoint = path.join(props.scriptDirectory, props.entrypoint);
|
|
54
55
|
if (!fs.existsSync(entrypoint)) {
|
|
@@ -57,8 +58,8 @@ class Shellable extends constructs_1.Construct {
|
|
|
57
58
|
const asset = new aws_cdk_lib_1.aws_s3_assets.Asset(this, 'ScriptDirectory', {
|
|
58
59
|
path: props.scriptDirectory,
|
|
59
60
|
});
|
|
60
|
-
this.outputArtifactName = `Artifact_${this.node.addr}
|
|
61
|
-
if (this.outputArtifactName.length > 100) {
|
|
61
|
+
this.outputArtifactName = ((_a = props.producesArtifacts) !== null && _a !== void 0 ? _a : true) ? `Artifact_${this.node.addr}` : undefined;
|
|
62
|
+
if (this.outputArtifactName && this.outputArtifactName.length > 100) {
|
|
62
63
|
throw new Error(`Whoops, too long: ${this.outputArtifactName}`);
|
|
63
64
|
}
|
|
64
65
|
this.buildSpec = build_spec_1.BuildSpec.simple({
|
|
@@ -69,6 +70,7 @@ class Shellable extends constructs_1.Construct {
|
|
|
69
70
|
const environmentSecretsAsSecretNames = this.convertEnvironmentSecretArnsToSecretNames(props.environmentSecrets);
|
|
70
71
|
this.project = new aws_cdk_lib_1.aws_codebuild.Project(this, 'Resource', {
|
|
71
72
|
projectName: props.buildProjectName,
|
|
73
|
+
description: props.description,
|
|
72
74
|
source: props.source,
|
|
73
75
|
environment: {
|
|
74
76
|
buildImage: this.platform.buildImage,
|
|
@@ -89,12 +91,12 @@ class Shellable extends constructs_1.Construct {
|
|
|
89
91
|
this.role = this.project.role; // not undefined, as it's a new Project
|
|
90
92
|
asset.grantRead(this.role);
|
|
91
93
|
// Grant read access to secrets
|
|
92
|
-
Object.entries((
|
|
94
|
+
Object.entries((_b = props.environmentSecrets) !== null && _b !== void 0 ? _b : {}).forEach(([name, secretArn]) => {
|
|
93
95
|
const secret = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretCompleteArn(this, `${name}Secret`, secretArn);
|
|
94
96
|
secret.grantRead(this.role);
|
|
95
97
|
});
|
|
96
98
|
// Grant read access to parameters
|
|
97
|
-
Object.entries((
|
|
99
|
+
Object.entries((_c = props.environmentParameters) !== null && _c !== void 0 ? _c : {}).forEach(([name, parameterName]) => {
|
|
98
100
|
const parameter = aws_cdk_lib_1.aws_ssm.StringParameter.fromStringParameterName(this, `${name}Parameter`, parameterName);
|
|
99
101
|
parameter.grantRead(this.role);
|
|
100
102
|
});
|
|
@@ -113,12 +115,20 @@ class Shellable extends constructs_1.Construct {
|
|
|
113
115
|
});
|
|
114
116
|
}
|
|
115
117
|
addToPipeline(stage, name, inputArtifact, runOrder) {
|
|
118
|
+
var _a;
|
|
116
119
|
const codeBuildAction = new aws_cdk_lib_1.aws_codepipeline_actions.CodeBuildAction({
|
|
117
120
|
actionName: name,
|
|
118
121
|
project: this.project,
|
|
119
122
|
runOrder,
|
|
120
123
|
input: inputArtifact,
|
|
121
|
-
|
|
124
|
+
variablesNamespace: this.props.actionNamespace,
|
|
125
|
+
environmentVariables: this.props.pipelineEnvironmentVars
|
|
126
|
+
? Object.fromEntries(Object.entries(this.props.pipelineEnvironmentVars)
|
|
127
|
+
.map(([k, v]) => [k, { type: aws_cdk_lib_1.aws_codebuild.BuildEnvironmentVariableType.PLAINTEXT, value: v }]))
|
|
128
|
+
: undefined,
|
|
129
|
+
outputs: this.outputArtifactName
|
|
130
|
+
? [this.outputArtifactName, ...(_a = this.buildSpec.additionalArtifactNames) !== null && _a !== void 0 ? _a : []].map(n => new aws_cdk_lib_1.aws_codepipeline.Artifact(n))
|
|
131
|
+
: undefined,
|
|
122
132
|
});
|
|
123
133
|
stage.addAction(codeBuildAction);
|
|
124
134
|
return codeBuildAction;
|
|
@@ -272,4 +282,4 @@ class WindowsPlatform extends ShellPlatform {
|
|
|
272
282
|
}
|
|
273
283
|
}
|
|
274
284
|
exports.WindowsPlatform = WindowsPlatform;
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2Q0FLcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBb0Q7QUFFcEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBK01uQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWN0QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQXFCOztRQUM5RCxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO1FBRTVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksMkJBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3RELElBQUksRUFBRSxLQUFLLENBQUMsZUFBZTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDeEMs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QyxVQUFrQjtRQUNyQyxPQUFPO1lBQ0wscUVBQXFFO1lBQ3JFLHVCQUF1QixhQUFhLFNBQVMsVUFBVSx3QkFBd0I7WUFDL0Usd0RBQXdEO1lBQ3hELGdGQUFnRjtZQUNoRix5Q0FBeUM7WUFDekMsMEJBQTBCLFVBQVUsRUFBRTtTQUN2QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbENELDBDQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCwgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLCBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19pYW0gYXMgaWFtLCBhd3NfczNfYXNzZXRzIGFzIGFzc2V0cywgYXdzX3NlY3JldHNtYW5hZ2VyLCBhd3Nfc3NtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJ1aWxkU3BlYyB9IGZyb20gJy4vYnVpbGQtc3BlYyc7XG5pbXBvcnQgeyByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IFMzX0JVQ0tFVF9FTlYgPSAnU0NSSVBUX1MzX0JVQ0tFVCc7XG5jb25zdCBTM19LRVlfRU5WID0gJ1NDUklQVF9TM19LRVknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBzb3VyY2VcbiAgICovXG4gIHNvdXJjZT86IGNidWlsZC5JU291cmNlO1xuXG4gIC8qKlxuICAgKiBXaGF0IHBsYXRmb3JtIHRvIHVzIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICAgKlxuICAgKiBAZGVmYXVsdCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1XG4gICAqL1xuICBwbGF0Zm9ybT86IFNoZWxsUGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggc2VjcmV0cyBtYW5hZ2VyIHZhbHVlcy4gVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBsZXRlIFNlY3JldCBNYW5hZ2VyIEFSTnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBTU00gcGFyYW1ldGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBjb21wdXRlIHR5cGUgdG8gdXNlIGZvciB0aGUgYnVpbGQgY29udGFpbmVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgbm90IGFsbCBjb21iaW5hdGlvbnMgYXJlIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUsXG4gICAqIFdpbmRvd3MgaW1hZ2VzIGNhbm5vdCBiZSBydW4gb24gQ29tcHV0ZVR5cGUuU21hbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IENvbXB1dGVUeXBlLk1lZGl1bVxuICAgKi9cbiAgY29tcHV0ZVR5cGU/OiBjYnVpbGQuQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBob3cgdGhlIHByb2plY3QgYnVpbGRzIERvY2tlciBpbWFnZXMuIFNwZWNpZnkgdHJ1ZSB0byBlbmFibGVcbiAgICogcnVubmluZyB0aGUgRG9ja2VyIGRhZW1vbiBpbnNpZGUgYSBEb2NrZXIgY29udGFpbmVyLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogc2V0IHRvIHRydWUgb25seSBpZiB0aGlzIGJ1aWxkIHByb2plY3Qgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlclxuICAgKiBpbWFnZXMsIGFuZCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGVudmlyb25tZW50IGltYWdlIGlzIG5vdCBvbmUgcHJvdmlkZWQgYnlcbiAgICogQVdTIENvZGVCdWlsZCB3aXRoIERvY2tlciBzdXBwb3J0LiBPdGhlcndpc2UsIGFsbCBhc3NvY2lhdGVkIGJ1aWxkcyB0aGF0XG4gICAqIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgRG9ja2VyIGRhZW1vbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBidWlsZCBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIG5hbWUgaXMgZ2VuZXJhdGVkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKi9cbiAgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzIHNob3VsZCBiZSB1c2VkIGluc3RlYWRcbiAgICogb2YgdGhlIGdsb2JhbCBlbmRwb2ludC4gU3BlY2lmeSB0cnVlIHRvIHVzZSBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gcnVuIHRoaXMgYnVpbGQgdXNpbmcgYSBzcGVjaWZpYyBJQU0gcm9sZS4gVGhpcyBjYW4gYmUgdXNlZCxcbiAgICogZm9yIGV4YW1wbGUsIHRvIGV4ZWN1dGUgaW4gdGhlIGNvbnRleHQgb2YgYW5vdGhlciBhY2NvdW50IChlLmcuIHRvIHJ1blxuICAgKiB0ZXN0cyBpbiBpc29sYXRpb24pLlxuICAgKi9cbiAgYXNzdW1lUm9sZT86IEFzc3VtZVJvbGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGRzcGVjIChmb3IgYXJ0aWZhY3RzIGV0Yy4pXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgYnVpbGRzcGVjXG4gICAqL1xuICBidWlsZFNwZWM/OiBCdWlsZFNwZWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IG9mIHRoZSBidWlsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIENvZGVCdWlsZCBkZWZhdWx0ICgxIGhvdXIpXG4gICAqL1xuICB0aW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMzAwIHNlY29uZHMgKDUgbWludXRlcylcbiAgICovXG4gIGFsYXJtUGVyaW9kPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFsYXJtIGV2YWx1YXRpb24gcGVyaW9kcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1FdmFsdWF0aW9uUGVyaW9kcz86IG51bWJlcjtcblxuICBzZWNvbmRhcnlBcnRpZmFjdE5hbWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB1c2VkIHRvIGNyZWF0ZSBhIFNoZWxsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZVByb3BzIGV4dGVuZHMgU2hlbGxhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2l0aCB0aGUgc2NyaXB0cy5cbiAgICpcbiAgICogVGhlIHdob2xlIGRpcmVjdG9yeSB3aWxsIGJlIHVwbG9hZGVkLlxuICAgKi9cbiAgc2NyaXB0RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBpbml0aWFsIHNjcmlwdCB0byBzdGFydCwgcmVsYXRpdmUgdG8gc2NyaXB0RGlyZWN0b3J5LlxuICAgKi9cbiAgZW50cnlwb2ludDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc3VtZVJvbGUge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSByb2xlIHRvIGFzc3VtZS5cbiAgICovXG4gIHJvbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGFzc3VtZWQgcm9sZSBzZXNzaW9uLlxuICAgKlxuICAgKiBVc2UgIHRoZSAgcm9sZSAgc2Vzc2lvbiBuYW1lIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgc2Vzc2lvbiB3aGVuIHRoZSBzYW1lXG4gICAqIHJvbGUgaXMgYXNzdW1lZCBieSBkaWZmZXJlbnQgcHJpbmNpcGFscyBvciBmb3IgZGlmZmVyZW50IHJlYXNvbnMuIEluXG4gICAqIGNyb3NzLWFjY291bnQgc2NlbmFyaW9zLCB0aGUgcm9sZSBzZXNzaW9uIG5hbWUgaXMgdmlzaWJsZSB0bywgYW5kIGNhbiBiZVxuICAgKiBsb2dnZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSByb2xlLiAgVGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIGFsc29cbiAgICogdXNlZCBpbiB0aGUgQVJOIG9mIHRoZSBhc3N1bWVkIHJvbGUgcHJpbmNpcGFsLiBUaGlzIG1lYW5zIHRoYXQgc3Vic2VxdWVudFxuICAgKiBjcm9zcy1hY2NvdW50IEFQSSByZXF1ZXN0cyB1c2luZyB0aGUgdGVtLSBwb3Jhcnkgc2VjdXJpdHkgY3JlZGVudGlhbHMgd2lsbFxuICAgKiBleHBvc2UgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIHRvIHRoZSBleHRlcm5hbCBhY2NvdW50IGluIHRoZWlyIENsb3VkVHJhaWxcbiAgICogbG9ncy5cbiAgICpcbiAgICogVGhlIHJlZ2V4IHVzZWQgdG8gdmFsaWRhdGUgdGhpcyBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgb2YgY2hhcmFjdGVyc1xuICAgKiBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBub1xuICAgKiBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlIHVuZGVyc2NvcmVzIG9yIGFueSBvZiB0aGUgZm9sbG93aW5nXG4gICAqIGNoYXJhY3RlcnM6ID0sLkAtXG4gICAqL1xuICBzZXNzaW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBICB1bmlxdWUgIGlkZW50aWZpZXIgIHRoYXQgIGlzICB1c2VkIGJ5IHRoaXJkIHBhcnRpZXMgd2hlbiBhc3N1bWluZyByb2xlc1xuICAgKiBpbiB0aGVpciBjdXN0b21lcnMnIGFjY291bnRzLiBGb3IgZWFjaCAgcm9sZSAgdGhhdCAgdGhlICB0aGlyZCBwYXJ0eSBjYW5cbiAgICogYXNzdW1lLCB0aGV5IHNob3VsZCBpbnN0cnVjdCB0aGVpciBjdXN0b21lcnMgdG8gZW5zdXJlIHRoZSByb2xlJ3MgdHJ1c3RcbiAgICogcG9saWN5IGNoZWNrcyBmb3IgdGhlIGV4dGVybmFsIElEIHRoYXQgdGhlIHRoaXJkICBwYXJ0eSBnZW5lcmF0ZWQuICBFYWNoXG4gICAqIHRpbWUgdGhlIHRoaXJkIHBhcnR5IGFzc3VtZXMgdGhlIHJvbGUsIHRoZXkgc2hvdWxkIHBhc3MgdGhlIGN1c3RvbWVyJ3NcbiAgICogZXh0ZXJuYWwgSUQuIFRoZSBleHRlcm5hbCBJRCBpcyB1c2VmdWwgaW4gIG9yZGVyIHRvICBoZWxwICB0aGlyZCAgcGFydGllc1xuICAgKiBiaW5kIGEgcm9sZSB0byB0aGUgY3VzdG9tZXIgd2hvIGNyZWF0ZWQgaXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgKiBleHRlcm5hbCBJRCwgc2VlIEhvdyB0byBVc2UgYW4gRXh0ZXItIG5hbCAgSUQgIFdoZW4gR3JhbnRpbmcgQWNjZXNzIHRvIFlvdXJcbiAgICogQVdTIFJlc291cmNlcyB0byBhIFRoaXJkIFBhcnR5IGluIHRoZSBJQU0gVXNlciBHdWlkZSAuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kXG4gICAqIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBubyBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlXG4gICAqIHVuZGVyc2NvcmVzIG9yICBhbnkgIG9mICB0aGUgIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiA9LC5AOi8tXG4gICAqL1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGEgcHJvZmllIG5hbWUgaXMgY29uZmlndXJlZCwgYW4gYXNzdW1lZCByb2xlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkXG4gICAqIGluIHRoZSBzaGFyZWQgYXdzIGNvbmZpZ3VyYXRpb24gZmlsZSAofi8uYXdzL2NvbmZpZykuIFRoaXMgaXMgaW4gY29udHJhcnkgb2Ygc2ltcGx5IGludm9raW5nXG4gICAqIGFuIGBzdHMgYXNzdW1lLXJvbGVgIGNvbW1hbmQgdGhhdCBjcmVhdGVzIGEgc2Vzc2lvbiB3aXRoIGEgZml4ZWQgZXhwaXJ5IGRhdGUuXG4gICAqXG4gICAqIFVzaW5nIGEgcHJvZmlsZSB3aWxsIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSS5cbiAgICogVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMgdGhhdCBuZWVkcyBzZXNzaW9ucyB0aGF0IGFyZSBsb25nZXIgdGhhblxuICAgKiB0aGUgc2Vzc2lvbiBkdXJhdGlvbiB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBgc3RzIGFzc3VtZS1yb2xlYC5cbiAgICpcbiAgICogVGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbCBhY2Nlc3MgdG8gdGhpcyBwcm9maWxlIGluIHRoZSBgQVdTX1BST0ZJTEVgIGVudiB2YXJpYWJsZS5cbiAgICpcbiAgICogT25seSByZWxldmFudCBpZiBgcmVmcmVzaGAgaXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLWZpbGVzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgJ2xvbmctcnVubmluZy1wcm9maWxlJ1xuICAgKi9cbiAgcHJvZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhpcyBpZiB5b3UgaGF2ZSBhIGxvbmcgcnVubmluZyBleGVjdXRpb24gdGhhdCBuZWVkcyBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMuXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBwcm9maWxlIGFuZCB1c2UgaXQgdG8gZGVsZWdhdGUgY3JlZGVudGlhbCByZWZyZXNoaW5nIHRvIHRoZSBTREsvQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWZyZXNoPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEEgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCBydW5zIGFyYml0cmFyeSBzY3JpcHRzLlxuICpcbiAqIFRoZSBzY3JpcHRzIHRvIGJlIHJ1biBhcmUgc3BlY2lmaWVkIGJ5IHN1cHBseWluZyBhIGRpcmVjdG9yeS5cbiAqIEFsbCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IGFyZSB1cGxvYWRlZCwgdGhlbiB0aGUgc2NyaXB0IGRlc2lnbmF0ZWRcbiAqIGFzIHRoZSBlbnRyeSBwb2ludCBpcyBzdGFydGVkLlxuICpcbiAqIFRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYnVpbGQgcHJvamVjdCdzXG4gKiBpbnB1dCBpcyBzdG9yZWQuIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNjcmlwdCBmaWxlcyBhcmUgc3RvcmVkXG4gKiBpcyBpbiB0aGUgJFNDUklQVF9ESVIgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKlxuICogU3VwcG9ydHMgYm90aCBXaW5kb3dzIGFuZCBMaW51eCBjb21wdXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNoZWxsYWJsZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogQ2xvdWRXYXRjaCBhbGFybSB0aGF0IHdpbGwgYmUgdHJpZ2dlcmVkIGlmIHRoaXMgYWN0aW9uIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm06IFNoZWxsUGxhdGZvcm07XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRTcGVjOiBCdWlsZFNwZWM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXRBcnRpZmFjdE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNoZWxsYWJsZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICB0aGlzLnBsYXRmb3JtID0gcHJvcHMucGxhdGZvcm0gfHwgU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBwYXRoLmpvaW4ocHJvcHMuc2NyaXB0RGlyZWN0b3J5LCBwcm9wcy5lbnRyeXBvaW50KTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlwb2ludCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGVzdCBlbnRyeXBvaW50OiAke2VudHJ5cG9pbnR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXQgPSBuZXcgYXNzZXRzLkFzc2V0KHRoaXMsICdTY3JpcHREaXJlY3RvcnknLCB7XG4gICAgICBwYXRoOiBwcm9wcy5zY3JpcHREaXJlY3RvcnksXG4gICAgfSk7XG5cbiAgICB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSA9IGBBcnRpZmFjdF8ke3RoaXMubm9kZS5hZGRyfWA7XG4gICAgaWYgKHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaG9vcHMsIHRvbyBsb25nOiAke3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRTcGVjID0gQnVpbGRTcGVjLnNpbXBsZSh7XG4gICAgICBpbnN0YWxsOiB0aGlzLnBsYXRmb3JtLmluc3RhbGxDb21tYW5kcygpLFxuICAgICAgcHJlQnVpbGQ6IHRoaXMucGxhdGZvcm0ucHJlYnVpbGRDb21tYW5kcyhwcm9wcy5hc3N1bWVSb2xlLCBwcm9wcy51c2VSZWdpb25hbFN0c0VuZHBvaW50cyksXG4gICAgICBidWlsZDogdGhpcy5wbGF0Zm9ybS5idWlsZENvbW1hbmRzKHByb3BzLmVudHJ5cG9pbnQpLFxuICAgIH0pLm1lcmdlKHByb3BzLmJ1aWxkU3BlYyB8fCBCdWlsZFNwZWMuZW1wdHkoKSk7XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudFNlY3JldHNBc1NlY3JldE5hbWVzID0gdGhpcy5jb252ZXJ0RW52aXJvbm1lbnRTZWNyZXRBcm5zVG9TZWNyZXROYW1lcyhwcm9wcy5lbnZpcm9ubWVudFNlY3JldHMpO1xuXG4gICAgdGhpcy5wcm9qZWN0ID0gbmV3IGNidWlsZC5Qcm9qZWN0KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHByb2plY3ROYW1lOiBwcm9wcy5idWlsZFByb2plY3ROYW1lLFxuICAgICAgc291cmNlOiBwcm9wcy5zb3VyY2UsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOiB0aGlzLnBsYXRmb3JtLmJ1aWxkSW1hZ2UsXG4gICAgICAgIGNvbXB1dGVUeXBlOiBwcm9wcy5jb21wdXRlVHlwZSB8fCBjYnVpbGQuQ29tcHV0ZVR5cGUuTUVESVVNLFxuICAgICAgICBwcml2aWxlZ2VkOiBwcm9wcy5wcml2aWxlZ2VkLFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgIFtTM19CVUNLRVRfRU5WXTogeyB2YWx1ZTogYXNzZXQuczNCdWNrZXROYW1lIH0sXG4gICAgICAgIFtTM19LRVlfRU5WXTogeyB2YWx1ZTogYXNzZXQuczNPYmplY3RLZXkgfSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHMuZW52aXJvbm1lbnQpLFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhlbnZpcm9ubWVudFNlY3JldHNBc1NlY3JldE5hbWVzLCBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5TRUNSRVRTX01BTkFHRVIpLFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wcy5lbnZpcm9ubWVudFBhcmFtZXRlcnMsIGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlBBUkFNRVRFUl9TVE9SRSksXG4gICAgICB9LFxuICAgICAgdGltZW91dDogcHJvcHMudGltZW91dCxcbiAgICAgIGJ1aWxkU3BlYzogY2J1aWxkLkJ1aWxkU3BlYy5mcm9tT2JqZWN0KHRoaXMuYnVpbGRTcGVjLnJlbmRlcih7IHByaW1hcnlBcnRpZmFjdE5hbWU6IHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lIH0pKSxcbiAgICAgIHNzbVNlc3Npb25QZXJtaXNzaW9uczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMucm9sZSA9IHRoaXMucHJvamVjdC5yb2xlITsgLy8gbm90IHVuZGVmaW5lZCwgYXMgaXQncyBhIG5ldyBQcm9qZWN0XG4gICAgYXNzZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBzZWNyZXRzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRTZWNyZXRzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgc2VjcmV0QXJuXSkgPT4ge1xuICAgICAgY29uc3Qgc2VjcmV0ID0gYXdzX3NlY3JldHNtYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0Q29tcGxldGVBcm4odGhpcywgYCR7bmFtZX1TZWNyZXRgLCBzZWNyZXRBcm4pO1xuICAgICAgc2VjcmV0LmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuICAgIH0pO1xuXG4gICAgLy8gR3JhbnQgcmVhZCBhY2Nlc3MgdG8gcGFyYW1ldGVyc1xuICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHBhcmFtZXRlck5hbWVdKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSBhd3Nfc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCBgJHtuYW1lfVBhcmFtZXRlcmAsIHBhcmFtZXRlck5hbWUpO1xuICAgICAgcGFyYW1ldGVyLmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmFzc3VtZVJvbGUpIHtcbiAgICAgIHRoaXMucm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnc3RzOkFzc3VtZVJvbGUnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMuYXNzdW1lUm9sZS5yb2xlQXJuXSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLmFsYXJtID0gbmV3IGNsb3Vkd2F0Y2guQWxhcm0odGhpcywgJ0FsYXJtJywge1xuICAgICAgbWV0cmljOiB0aGlzLnByb2plY3QubWV0cmljRmFpbGVkQnVpbGRzKHsgcGVyaW9kOiBwcm9wcy5hbGFybVBlcmlvZCB8fCBEdXJhdGlvbi5zZWNvbmRzKDMwMCkgfSksXG4gICAgICB0aHJlc2hvbGQ6IHByb3BzLmFsYXJtVGhyZXNob2xkIHx8IDEsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogcHJvcHMuYWxhcm1FdmFsdWF0aW9uUGVyaW9kcyB8fCAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLklHTk9SRSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBuYW1lOiBzdHJpbmcsIGlucHV0QXJ0aWZhY3Q6IGNwaXBlbGluZS5BcnRpZmFjdCwgcnVuT3JkZXI/OiBudW1iZXIpOlxuICBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24ge1xuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvbiA9IG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogbmFtZSxcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICAgIHJ1bk9yZGVyLFxuICAgICAgaW5wdXQ6IGlucHV0QXJ0aWZhY3QsXG4gICAgICBvdXRwdXRzOiBbbmV3IGNwaXBlbGluZS5BcnRpZmFjdCh0aGlzLm91dHB1dEFydGlmYWN0TmFtZSldLmNvbmNhdChcbiAgICAgICAgdGhpcy5idWlsZFNwZWMuYWRkaXRpb25hbEFydGlmYWN0TmFtZXMubWFwKGFydGlmYWN0TmFtZSA9PiBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KGFydGlmYWN0TmFtZSkpKSxcbiAgICB9KTtcbiAgICBzdGFnZS5hZGRBY3Rpb24oY29kZUJ1aWxkQWN0aW9uKTtcbiAgICByZXR1cm4gY29kZUJ1aWxkQWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250cmFjdCBvZiBgZW52aXJvbm1lbnRTZWNyZXRzYCBpcyB0aGF0IHRoZSB2YWx1ZXMgYXJlIGNvbXBsZXRlIFNlY3JldCBBUk5zO1xuICAgKiBob3dldmVyLCB0aGUgQ29kZUJ1aWxkIGNvbnN0cnVjdCBleHBlY3RzIHNlY3JldCBuYW1lcyBhcyB0aGUgaW5wdXRzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBlbnZpcm9ubWVudCBzZWNyZXRzIGZyb20gQVJOcyB0byBuYW1lcy5cbiAgICovXG4gIHByaXZhdGUgY29udmVydEVudmlyb25tZW50U2VjcmV0QXJuc1RvU2VjcmV0TmFtZXMoZW52aXJvbm1lbnRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIGlmICghZW52aXJvbm1lbnRTZWNyZXRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG91dDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgfTtcbiAgICBPYmplY3QuZW50cmllcyhlbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldEZyb21Bcm5gLCBzZWNyZXRBcm4pO1xuICAgICAgb3V0W25hbWVdID0gc2VjcmV0LnNlY3JldE5hbWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG4vKipcbiAqIFBsYXRmb3JtIGFyY2hldHlwZVxuICovXG5leHBvcnQgZW51bSBQbGF0Zm9ybVR5cGUge1xuICBMaW51eCA9ICdMaW51eCcsXG4gIFdpbmRvd3MgPSAnV2luZG93cydcbn1cblxuLyoqXG4gKiBUaGUgcGxhdGZvcm0gdHlwZSB0byBydW4gdGhlIHNjcmlwdHMgb25cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNoZWxsUGxhdGZvcm0ge1xuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBVYnVudHUgTGludXggcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IExpbnV4VWJ1bnR1KCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF80XzApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIGRlZmF1bHQgV2luZG93cyBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgV2luZG93cygpOiBTaGVsbFBsYXRmb3JtIHtcbiAgICAvLyBDYW5ub3QgYmUgc3RhdGljIG1lbWJlciBiZWNhdXNlIG9mIGluaXRpYWxpemF0aW9uIG9yZGVyXG4gICAgcmV0dXJuIG5ldyBXaW5kb3dzUGxhdGZvcm0oY2J1aWxkLldpbmRvd3NCdWlsZEltYWdlLldJTl9TRVJWRVJfQ09SRV8yMDE5X0JBU0UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGJ1aWxkSW1hZ2U6IGNidWlsZC5JQnVpbGRJbWFnZSkge1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJuIGNvbW1hbmRzIHRvIHByZXBhcmUgdGhlIGhvc3QgZm9yIHRoZSBzaGVsbGFibGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW5zdGFsbENvbW1hbmRzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gY29tbWFuZHMgdG8gZG93bmxvYWQgdGhlIHNjcmlwdCBidW5kbGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIHN0YXJ0IHRoZSBlbnRyeXBvaW50IHNjcmlwdFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgcGxhdGZvcm1UeXBlKCk6IFBsYXRmb3JtVHlwZTtcbn1cblxuLyoqXG4gKiBBIExpbnV4IFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBMaW51eFBsYXRmb3JtIGV4dGVuZHMgU2hlbGxQbGF0Zm9ybSB7XG4gIHB1YmxpYyByZWFkb25seSBwbGF0Zm9ybVR5cGUgPSBQbGF0Zm9ybVR5cGUuTGludXg7XG5cbiAgcHVibGljIGluc3RhbGxDb21tYW5kcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2V4cG9ydCBTQ1JJUFRfRElSPS90bXAvc2NyaXB0ZGlyJyxcbiAgICAgIGBlY2hvIFwiUnVubmluZyAke2VudHJ5cG9pbnR9XCJgLFxuICAgICAgYC9iaW4vYmFzaCAvdG1wL3NjcmlwdGRpci8ke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBpbnN0YWxsQ29tbWFuZHMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBVcGRhdGUgdGhlIGltYWdlJ3Mgbm9kZWpzIHRvIHRoZSBsYXRlc3QgTFRTIHJlbGVhc2UuXG4gICAgICAnSW1wb3J0LU1vZHVsZSBcIkM6XFxcXFByb2dyYW1EYXRhXFxcXGNob2NvbGF0ZXlcXFxcaGVscGVyc1xcXFxjaG9jb2xhdGV5UHJvZmlsZS5wc20xXCInLFxuICAgICAgJ0M6XFxcXFByb2dyYW1EYXRhXFxcXGNob2NvbGF0ZXlcXFxcYmluXFxcXGNob2NvLmV4ZSB1cGdyYWRlIG5vZGVqcy1sdHMgLXknLFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgX3VzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBpZiAoYXNzdW1lUm9sZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhc3N1bWVSb2xlIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93czogaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvYXdzLWRlbGl2bGliL2lzc3Vlcy81NycpO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAvLyBXb3VsZCBsb3ZlIHRvIGRvIGRvd25sb2FkaW5nIGhlcmUgYW5kIGV4ZWN1dGluZyBpbiB0aGUgbmV4dCBzdGVwLFxuICAgICAgLy8gYnV0IEkgZG9uJ3Qga25vdyBob3cgdG8gcHJvcGFnYXRlIHRoZSB2YWx1ZSBvZiAkVEVNUERJUi5cbiAgICAgIC8vXG4gICAgICAvLyBQdW50aW5nIGZvciBzb21lb25lIHdobyBrbm93cyBQb3dlclNoZWxsIHdlbGwgZW5vdWdoLlxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDb21tYW5kcyhlbnRyeXBvaW50OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdTZXQtVmFyaWFibGUgLU5hbWUgVEVNUERJUiAtVmFsdWUgKE5ldy1UZW1wb3JhcnlGaWxlKS5EaXJlY3RvcnlOYW1lJyxcbiAgICAgIGBhd3MgczMgY3AgczM6Ly8kZW52OiR7UzNfQlVDS0VUX0VOVn0vJGVudjoke1MzX0tFWV9FTlZ9ICRURU1QRElSXFxcXHNjcmlwdHMuemlwYCxcbiAgICAgICdOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnRXhwYW5kLUFyY2hpdmUgLVBhdGggJFRFTVBESVIvc2NyaXB0cy56aXAgLURlc3RpbmF0aW9uUGF0aCAkVEVNUERJUlxcXFxzY3JpcHRkaXInLFxuICAgICAgJyRlbnY6U0NSSVBUX0RJUiA9IFwiJFRFTVBESVJcXFxcc2NyaXB0ZGlyXCInLFxuICAgICAgYCYgJFRFTVBESVJcXFxcc2NyaXB0ZGlyXFxcXCR7ZW50cnlwb2ludH1gLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2Q0FLcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBb0Q7QUFFcEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBd09uQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWN0QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFtQixLQUFxQjs7UUFDL0UsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUR3QyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUcvRSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUU1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDL0Q7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLDJCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN0RCxJQUFJLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FDNUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsTUFBQSxLQUFLLENBQUMsaUJBQWlCLG1DQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FB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QyxDQUFDO2FBQ25HO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxhQUFhLENBQUMsVUFBa0I7UUFDckMsT0FBTztZQUNMLGtDQUFrQztZQUNsQyxpQkFBaUIsVUFBVSxHQUFHO1lBQzlCLDRCQUE0QixVQUFVLEVBQUU7U0FDekMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQW5FRCxzQ0FtRUM7QUFFRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxhQUFhO0lBQWxEOztRQUNrQixpQkFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFpQ3RELENBQUM7SUEvQlEsZUFBZTtRQUNwQixPQUFPO1lBQ0wsdURBQXVEO1lBQ3ZELDhFQUE4RTtZQUM5RSxtRUFBbUU7U0FDcEUsQ0FBQztJQUNKLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUF1QixFQUFFLHdCQUFrQztRQUNqRixJQUFJLFVBQVUsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsMkZBQTJGLENBQUMsQ0FBQztTQUM5RztRQUVELE9BQU87UUFDTCxvRUFBb0U7UUFDcEUsMkRBQTJEO1FBQzNELEVBQUU7UUFDRix3REFBd0Q7U0FDekQsQ0FBQztJQUNKLENBQUM7SUFFTSxhQUFhLENBQUMsVUFBa0I7UUFDckMsT0FBTztZQUNMLHFFQUFxRTtZQUNyRSx1QkFBdUIsYUFBYSxTQUFTLFVBQVUsd0JBQXdCO1lBQy9FLHdEQUF3RDtZQUN4RCxnRkFBZ0Y7WUFDaEYseUNBQXlDO1lBQ3pDLDBCQUEwQixVQUFVLEVBQUU7U0FDdkMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWxDRCwwQ0FrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgRHVyYXRpb24sXG4gIGF3c19jbG91ZHdhdGNoIGFzIGNsb3Vkd2F0Y2gsIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSwgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfaWFtIGFzIGlhbSwgYXdzX3MzX2Fzc2V0cyBhcyBhc3NldHMsIGF3c19zZWNyZXRzbWFuYWdlciwgYXdzX3NzbSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCdWlsZFNwZWMgfSBmcm9tICcuL2J1aWxkLXNwZWMnO1xuaW1wb3J0IHsgcmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBTM19CVUNLRVRfRU5WID0gJ1NDUklQVF9TM19CVUNLRVQnO1xuY29uc3QgUzNfS0VZX0VOViA9ICdTQ1JJUFRfUzNfS0VZJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGVsbGFibGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIFByb2plY3RcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBzb3VyY2VcbiAgICovXG4gIHNvdXJjZT86IGNidWlsZC5JU291cmNlO1xuXG4gIC8qKlxuICAgKiBXaGF0IHBsYXRmb3JtIHRvIHVzIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICAgKlxuICAgKiBAZGVmYXVsdCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1XG4gICAqL1xuICBwbGF0Zm9ybT86IFNoZWxsUGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggc2VjcmV0cyBtYW5hZ2VyIHZhbHVlcy4gVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBsZXRlIFNlY3JldCBNYW5hZ2VyIEFSTnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBTU00gcGFyYW1ldGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBjb21wdXRlIHR5cGUgdG8gdXNlIGZvciB0aGUgYnVpbGQgY29udGFpbmVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgbm90IGFsbCBjb21iaW5hdGlvbnMgYXJlIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUsXG4gICAqIFdpbmRvd3MgaW1hZ2VzIGNhbm5vdCBiZSBydW4gb24gQ29tcHV0ZVR5cGUuU21hbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IENvbXB1dGVUeXBlLk1lZGl1bVxuICAgKi9cbiAgY29tcHV0ZVR5cGU/OiBjYnVpbGQuQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBob3cgdGhlIHByb2plY3QgYnVpbGRzIERvY2tlciBpbWFnZXMuIFNwZWNpZnkgdHJ1ZSB0byBlbmFibGVcbiAgICogcnVubmluZyB0aGUgRG9ja2VyIGRhZW1vbiBpbnNpZGUgYSBEb2NrZXIgY29udGFpbmVyLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogc2V0IHRvIHRydWUgb25seSBpZiB0aGlzIGJ1aWxkIHByb2plY3Qgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlclxuICAgKiBpbWFnZXMsIGFuZCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGVudmlyb25tZW50IGltYWdlIGlzIG5vdCBvbmUgcHJvdmlkZWQgYnlcbiAgICogQVdTIENvZGVCdWlsZCB3aXRoIERvY2tlciBzdXBwb3J0LiBPdGhlcndpc2UsIGFsbCBhc3NvY2lhdGVkIGJ1aWxkcyB0aGF0XG4gICAqIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgRG9ja2VyIGRhZW1vbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBidWlsZCBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIG5hbWUgaXMgZ2VuZXJhdGVkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKi9cbiAgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzIHNob3VsZCBiZSB1c2VkIGluc3RlYWRcbiAgICogb2YgdGhlIGdsb2JhbCBlbmRwb2ludC4gU3BlY2lmeSB0cnVlIHRvIHVzZSBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gcnVuIHRoaXMgYnVpbGQgdXNpbmcgYSBzcGVjaWZpYyBJQU0gcm9sZS4gVGhpcyBjYW4gYmUgdXNlZCxcbiAgICogZm9yIGV4YW1wbGUsIHRvIGV4ZWN1dGUgaW4gdGhlIGNvbnRleHQgb2YgYW5vdGhlciBhY2NvdW50IChlLmcuIHRvIHJ1blxuICAgKiB0ZXN0cyBpbiBpc29sYXRpb24pLlxuICAgKi9cbiAgYXNzdW1lUm9sZT86IEFzc3VtZVJvbGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGRzcGVjIChmb3IgYXJ0aWZhY3RzIGV0Yy4pXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgYnVpbGRzcGVjXG4gICAqL1xuICBidWlsZFNwZWM/OiBCdWlsZFNwZWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IG9mIHRoZSBidWlsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIENvZGVCdWlsZCBkZWZhdWx0ICgxIGhvdXIpXG4gICAqL1xuICB0aW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMzAwIHNlY29uZHMgKDUgbWludXRlcylcbiAgICovXG4gIGFsYXJtUGVyaW9kPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFsYXJtIGV2YWx1YXRpb24gcGVyaW9kcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1FdmFsdWF0aW9uUGVyaW9kcz86IG51bWJlcjtcblxuICBzZWNvbmRhcnlBcnRpZmFjdE5hbWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENsYXJpZnkgd2hldGhlciB0aGlzIFNoZWxsYWJsZSBwcm9kdWNlcyBhbnkgYXJ0aWZhY3RzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHByb2R1Y2VzQXJ0aWZhY3RzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZXNwYWNlIHRvIHVzZSB3aGVuIGFkZGluZyBhcyBhbiBhY3Rpb24gdG8gdGhlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uTmFtZXNwYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgZnJvbSB0aGUgcGlwZWxpbmUgYWN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVFbnZpcm9ubWVudFZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdXNlZCB0byBjcmVhdGUgYSBTaGVsbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaGVsbGFibGVQcm9wcyBleHRlbmRzIFNoZWxsYWJsZU9wdGlvbnMge1xuICAvKipcbiAgICogRGlyZWN0b3J5IHdpdGggdGhlIHNjcmlwdHMuXG4gICAqXG4gICAqIFRoZSB3aG9sZSBkaXJlY3Rvcnkgd2lsbCBiZSB1cGxvYWRlZC5cbiAgICovXG4gIHNjcmlwdERpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaWxlbmFtZSBvZiB0aGUgaW5pdGlhbCBzY3JpcHQgdG8gc3RhcnQsIHJlbGF0aXZlIHRvIHNjcmlwdERpcmVjdG9yeS5cbiAgICovXG4gIGVudHJ5cG9pbnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3N1bWVSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgcm9sZSB0byBhc3N1bWUuXG4gICAqL1xuICByb2xlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBhc3N1bWVkIHJvbGUgc2Vzc2lvbi5cbiAgICpcbiAgICogVXNlICB0aGUgIHJvbGUgIHNlc3Npb24gbmFtZSB0byB1bmlxdWVseSBpZGVudGlmeSBhIHNlc3Npb24gd2hlbiB0aGUgc2FtZVxuICAgKiByb2xlIGlzIGFzc3VtZWQgYnkgZGlmZmVyZW50IHByaW5jaXBhbHMgb3IgZm9yIGRpZmZlcmVudCByZWFzb25zLiBJblxuICAgKiBjcm9zcy1hY2NvdW50IHNjZW5hcmlvcywgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIHZpc2libGUgdG8sIGFuZCBjYW4gYmVcbiAgICogbG9nZ2VkIGJ5IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgcm9sZS4gIFRoZSByb2xlIHNlc3Npb24gbmFtZSBpcyBhbHNvXG4gICAqIHVzZWQgaW4gdGhlIEFSTiBvZiB0aGUgYXNzdW1lZCByb2xlIHByaW5jaXBhbC4gVGhpcyBtZWFucyB0aGF0IHN1YnNlcXVlbnRcbiAgICogY3Jvc3MtYWNjb3VudCBBUEkgcmVxdWVzdHMgdXNpbmcgdGhlIHRlbS0gcG9yYXJ5IHNlY3VyaXR5IGNyZWRlbnRpYWxzIHdpbGxcbiAgICogZXhwb3NlIHRoZSByb2xlIHNlc3Npb24gbmFtZSB0byB0aGUgZXh0ZXJuYWwgYWNjb3VudCBpbiB0aGVpciBDbG91ZFRyYWlsXG4gICAqIGxvZ3MuXG4gICAqXG4gICAqIFRoZSByZWdleCB1c2VkIHRvIHZhbGlkYXRlIHRoaXMgcGFyYW1ldGVyIGlzIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnNcbiAgICogY29uc2lzdGluZyAgb2YgdXBwZXItIGFuZCBsb3dlci1jYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm9cbiAgICogc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZSB1bmRlcnNjb3JlcyBvciBhbnkgb2YgdGhlIGZvbGxvd2luZ1xuICAgKiBjaGFyYWN0ZXJzOiA9LC5ALVxuICAgKi9cbiAgc2Vzc2lvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSAgdW5pcXVlICBpZGVudGlmaWVyICB0aGF0ICBpcyAgdXNlZCBieSB0aGlyZCBwYXJ0aWVzIHdoZW4gYXNzdW1pbmcgcm9sZXNcbiAgICogaW4gdGhlaXIgY3VzdG9tZXJzJyBhY2NvdW50cy4gRm9yIGVhY2ggIHJvbGUgIHRoYXQgIHRoZSAgdGhpcmQgcGFydHkgY2FuXG4gICAqIGFzc3VtZSwgdGhleSBzaG91bGQgaW5zdHJ1Y3QgdGhlaXIgY3VzdG9tZXJzIHRvIGVuc3VyZSB0aGUgcm9sZSdzIHRydXN0XG4gICAqIHBvbGljeSBjaGVja3MgZm9yIHRoZSBleHRlcm5hbCBJRCB0aGF0IHRoZSB0aGlyZCAgcGFydHkgZ2VuZXJhdGVkLiAgRWFjaFxuICAgKiB0aW1lIHRoZSB0aGlyZCBwYXJ0eSBhc3N1bWVzIHRoZSByb2xlLCB0aGV5IHNob3VsZCBwYXNzIHRoZSBjdXN0b21lcidzXG4gICAqIGV4dGVybmFsIElELiBUaGUgZXh0ZXJuYWwgSUQgaXMgdXNlZnVsIGluICBvcmRlciB0byAgaGVscCAgdGhpcmQgIHBhcnRpZXNcbiAgICogYmluZCBhIHJvbGUgdG8gdGhlIGN1c3RvbWVyIHdobyBjcmVhdGVkIGl0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiAgICogZXh0ZXJuYWwgSUQsIHNlZSBIb3cgdG8gVXNlIGFuIEV4dGVyLSBuYWwgIElEICBXaGVuIEdyYW50aW5nIEFjY2VzcyB0byBZb3VyXG4gICAqIEFXUyBSZXNvdXJjZXMgdG8gYSBUaGlyZCBQYXJ0eSBpbiB0aGUgSUFNIFVzZXIgR3VpZGUgLlxuICAgKlxuICAgKiBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgY29uc2lzdGluZyAgb2YgdXBwZXItIGFuZFxuICAgKiBsb3dlci1jYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm8gc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZVxuICAgKiB1bmRlcnNjb3JlcyBvciAgYW55ICBvZiAgdGhlICBmb2xsb3dpbmcgY2hhcmFjdGVyczogPSwuQDovLVxuICAgKi9cbiAgZXh0ZXJuYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBhIHByb2ZpZSBuYW1lIGlzIGNvbmZpZ3VyZWQsIGFuIGFzc3VtZWQgcm9sZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY3JlYXRlZFxuICAgKiBpbiB0aGUgc2hhcmVkIGF3cyBjb25maWd1cmF0aW9uIGZpbGUgKH4vLmF3cy9jb25maWcpLiBUaGlzIGlzIGluIGNvbnRyYXJ5IG9mIHNpbXBseSBpbnZva2luZ1xuICAgKiBhbiBgc3RzIGFzc3VtZS1yb2xlYCBjb21tYW5kIHRoYXQgY3JlYXRlcyBhIHNlc3Npb24gd2l0aCBhIGZpeGVkIGV4cGlyeSBkYXRlLlxuICAgKlxuICAgKiBVc2luZyBhIHByb2ZpbGUgd2lsbCBkZWxlZ2F0ZSBjcmVkZW50aWFsIHJlZnJlc2hpbmcgdG8gdGhlIFNESy9DTEkuXG4gICAqIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgbG9uZyBydW5uaW5nIHNlc3Npb25zIHRoYXQgbmVlZHMgc2Vzc2lvbnMgdGhhdCBhcmUgbG9uZ2VyIHRoYW5cbiAgICogdGhlIHNlc3Npb24gZHVyYXRpb24gdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgYHN0cyBhc3N1bWUtcm9sZWAuXG4gICAqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwgYWNjZXNzIHRvIHRoaXMgcHJvZmlsZSBpbiB0aGUgYEFXU19QUk9GSUxFYCBlbnYgdmFyaWFibGUuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgaWYgYHJlZnJlc2hgIGlzIHNwZWNpZmllZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC91c2VyZ3VpZGUvY2xpLWNvbmZpZ3VyZS1maWxlcy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0ICdsb25nLXJ1bm5pbmctcHJvZmlsZSdcbiAgICovXG4gIHByb2ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoaXMgaWYgeW91IGhhdmUgYSBsb25nIHJ1bm5pbmcgZXhlY3V0aW9uIHRoYXQgbmVlZHMgbG9uZyBydW5uaW5nIHNlc3Npb25zLlxuICAgKiBUaGlzIHdpbGwgY3JlYXRlIGEgcHJvZmlsZSBhbmQgdXNlIGl0IHRvIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVmcmVzaD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBBIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgcnVucyBhcmJpdHJhcnkgc2NyaXB0cy5cbiAqXG4gKiBUaGUgc2NyaXB0cyB0byBiZSBydW4gYXJlIHNwZWNpZmllZCBieSBzdXBwbHlpbmcgYSBkaXJlY3RvcnkuXG4gKiBBbGwgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBhcmUgdXBsb2FkZWQsIHRoZW4gdGhlIHNjcmlwdCBkZXNpZ25hdGVkXG4gKiBhcyB0aGUgZW50cnkgcG9pbnQgaXMgc3RhcnRlZC5cbiAqXG4gKiBUaGUgc2NyaXB0IGlzIGV4ZWN1dGVkIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJ1aWxkIHByb2plY3Qnc1xuICogaW5wdXQgaXMgc3RvcmVkLiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBzY3JpcHQgZmlsZXMgYXJlIHN0b3JlZFxuICogaXMgaW4gdGhlICRTQ1JJUFRfRElSIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICpcbiAqIFN1cHBvcnRzIGJvdGggV2luZG93cyBhbmQgTGludXggY29tcHV0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaGVsbGFibGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIENsb3VkV2F0Y2ggYWxhcm0gdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCBpZiB0aGlzIGFjdGlvbiBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybTogY2xvdWR3YXRjaC5BbGFybTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtOiBTaGVsbFBsYXRmb3JtO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkU3BlYzogQnVpbGRTcGVjO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTaGVsbGFibGVQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgdGhpcy5wbGF0Zm9ybSA9IHByb3BzLnBsYXRmb3JtIHx8IFNoZWxsUGxhdGZvcm0uTGludXhVYnVudHU7XG5cbiAgICBjb25zdCBlbnRyeXBvaW50ID0gcGF0aC5qb2luKHByb3BzLnNjcmlwdERpcmVjdG9yeSwgcHJvcHMuZW50cnlwb2ludCk7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5cG9pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRlc3QgZW50cnlwb2ludDogJHtlbnRyeXBvaW50fWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0ID0gbmV3IGFzc2V0cy5Bc3NldCh0aGlzLCAnU2NyaXB0RGlyZWN0b3J5Jywge1xuICAgICAgcGF0aDogcHJvcHMuc2NyaXB0RGlyZWN0b3J5LFxuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgPSAocHJvcHMucHJvZHVjZXNBcnRpZmFjdHMgPz8gdHJ1ZSkgPyBgQXJ0aWZhY3RfJHt0aGlzLm5vZGUuYWRkcn1gIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLm91dHB1dEFydGlmYWN0TmFtZSAmJiB0aGlzLm91dHB1dEFydGlmYWN0TmFtZS5sZW5ndGggPiAxMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV2hvb3BzLCB0b28gbG9uZzogJHt0aGlzLm91dHB1dEFydGlmYWN0TmFtZX1gKTtcbiAgICB9XG5cbiAgICB0aGlzLmJ1aWxkU3BlYyA9IEJ1aWxkU3BlYy5zaW1wbGUoe1xuICAgICAgaW5zdGFsbDogdGhpcy5wbGF0Zm9ybS5pbnN0YWxsQ29tbWFuZHMoKSxcbiAgICAgIHByZUJ1aWxkOiB0aGlzLnBsYXRmb3JtLnByZWJ1aWxkQ29tbWFuZHMocHJvcHMuYXNzdW1lUm9sZSwgcHJvcHMudXNlUmVnaW9uYWxTdHNFbmRwb2ludHMpLFxuICAgICAgYnVpbGQ6IHRoaXMucGxhdGZvcm0uYnVpbGRDb21tYW5kcyhwcm9wcy5lbnRyeXBvaW50KSxcbiAgICB9KS5tZXJnZShwcm9wcy5idWlsZFNwZWMgfHwgQnVpbGRTcGVjLmVtcHR5KCkpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnRTZWNyZXRzQXNTZWNyZXROYW1lcyA9IHRoaXMuY29udmVydEVudmlyb25tZW50U2VjcmV0QXJuc1RvU2VjcmV0TmFtZXMocHJvcHMuZW52aXJvbm1lbnRTZWNyZXRzKTtcblxuICAgIHRoaXMucHJvamVjdCA9IG5ldyBjYnVpbGQuUHJvamVjdCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBwcm9qZWN0TmFtZTogcHJvcHMuYnVpbGRQcm9qZWN0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHNvdXJjZTogcHJvcHMuc291cmNlLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogdGhpcy5wbGF0Zm9ybS5idWlsZEltYWdlLFxuICAgICAgICBjb21wdXRlVHlwZTogcHJvcHMuY29tcHV0ZVR5cGUgfHwgY2J1aWxkLkNvbXB1dGVUeXBlLk1FRElVTSxcbiAgICAgICAgcHJpdmlsZWdlZDogcHJvcHMucHJpdmlsZWdlZCxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICBbUzNfQlVDS0VUX0VOVl06IHsgdmFsdWU6IGFzc2V0LnMzQnVja2V0TmFtZSB9LFxuICAgICAgICBbUzNfS0VZX0VOVl06IHsgdmFsdWU6IGFzc2V0LnMzT2JqZWN0S2V5IH0sXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50KSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMoZW52aXJvbm1lbnRTZWNyZXRzQXNTZWNyZXROYW1lcywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuU0VDUkVUU19NQU5BR0VSKSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzLCBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5QQVJBTUVURVJfU1RPUkUpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVvdXQsXG4gICAgICBidWlsZFNwZWM6IGNidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdCh0aGlzLmJ1aWxkU3BlYy5yZW5kZXIoeyBwcmltYXJ5QXJ0aWZhY3ROYW1lOiB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSB9KSksXG4gICAgICBzc21TZXNzaW9uUGVybWlzc2lvbnM6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJvbGUgPSB0aGlzLnByb2plY3Qucm9sZSE7IC8vIG5vdCB1bmRlZmluZWQsIGFzIGl0J3MgYSBuZXcgUHJvamVjdFxuICAgIGFzc2V0LmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuXG4gICAgLy8gR3JhbnQgcmVhZCBhY2Nlc3MgdG8gc2VjcmV0c1xuICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0YCwgc2VjcmV0QXJuKTtcbiAgICAgIHNlY3JldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcbiAgICB9KTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHBhcmFtZXRlcnNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFBhcmFtZXRlcnMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBwYXJhbWV0ZXJOYW1lXSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1ldGVyID0gYXdzX3NzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgYCR7bmFtZX1QYXJhbWV0ZXJgLCBwYXJhbWV0ZXJOYW1lKTtcbiAgICAgIHBhcmFtZXRlci5ncmFudFJlYWQodGhpcy5yb2xlKTtcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5hc3N1bWVSb2xlKSB7XG4gICAgICB0aGlzLnJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3N0czpBc3N1bWVSb2xlJ10sXG4gICAgICAgIHJlc291cmNlczogW3Byb3BzLmFzc3VtZVJvbGUucm9sZUFybl0sXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgdGhpcy5hbGFybSA9IG5ldyBjbG91ZHdhdGNoLkFsYXJtKHRoaXMsICdBbGFybScsIHtcbiAgICAgIG1ldHJpYzogdGhpcy5wcm9qZWN0Lm1ldHJpY0ZhaWxlZEJ1aWxkcyh7IHBlcmlvZDogcHJvcHMuYWxhcm1QZXJpb2QgfHwgRHVyYXRpb24uc2Vjb25kcygzMDApIH0pLFxuICAgICAgdGhyZXNob2xkOiBwcm9wcy5hbGFybVRocmVzaG9sZCB8fCAxLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IHByb3BzLmFsYXJtRXZhbHVhdGlvblBlcmlvZHMgfHwgMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgbmFtZTogc3RyaW5nLCBpbnB1dEFydGlmYWN0OiBjcGlwZWxpbmUuQXJ0aWZhY3QsIHJ1bk9yZGVyPzogbnVtYmVyKTpcbiAgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uIHtcbiAgICBjb25zdCBjb2RlQnVpbGRBY3Rpb24gPSBuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IG5hbWUsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgICBydW5PcmRlcixcbiAgICAgIGlucHV0OiBpbnB1dEFydGlmYWN0LFxuICAgICAgdmFyaWFibGVzTmFtZXNwYWNlOiB0aGlzLnByb3BzLmFjdGlvbk5hbWVzcGFjZSxcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB0aGlzLnByb3BzLnBpcGVsaW5lRW52aXJvbm1lbnRWYXJzXG4gICAgICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMucHJvcHMucGlwZWxpbmVFbnZpcm9ubWVudFZhcnMpXG4gICAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiAoW2ssIHsgdHlwZTogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuUExBSU5URVhULCB2YWx1ZTogdiB9XSBhcyBjb25zdCkpKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dHM6IHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lXG4gICAgICAgID8gW3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLCAuLi50aGlzLmJ1aWxkU3BlYy5hZGRpdGlvbmFsQXJ0aWZhY3ROYW1lcyA/PyBbXV0ubWFwKG4gPT4gbmV3IGNwaXBlbGluZS5BcnRpZmFjdChuKSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKGNvZGVCdWlsZEFjdGlvbik7XG4gICAgcmV0dXJuIGNvZGVCdWlsZEFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udHJhY3Qgb2YgYGVudmlyb25tZW50U2VjcmV0c2AgaXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBjb21wbGV0ZSBTZWNyZXQgQVJOcztcbiAgICogaG93ZXZlciwgdGhlIENvZGVCdWlsZCBjb25zdHJ1Y3QgZXhwZWN0cyBzZWNyZXQgbmFtZXMgYXMgdGhlIGlucHV0cyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKiBUaGlzIG1ldGhvZCBjb252ZXJ0cyB0aGUgZW52aXJvbm1lbnQgc2VjcmV0cyBmcm9tIEFSTnMgdG8gbmFtZXMuXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKGVudmlyb25tZW50U2VjcmV0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICBpZiAoIWVudmlyb25tZW50U2VjcmV0cykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBvdXQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7IH07XG4gICAgT2JqZWN0LmVudHJpZXMoZW52aXJvbm1lbnRTZWNyZXRzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgc2VjcmV0QXJuXSkgPT4ge1xuICAgICAgY29uc3Qgc2VjcmV0ID0gYXdzX3NlY3JldHNtYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0Q29tcGxldGVBcm4odGhpcywgYCR7bmFtZX1TZWNyZXRGcm9tQXJuYCwgc2VjcmV0QXJuKTtcbiAgICAgIG91dFtuYW1lXSA9IHNlY3JldC5zZWNyZXROYW1lO1xuICAgIH0pO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQbGF0Zm9ybSBhcmNoZXR5cGVcbiAqL1xuZXhwb3J0IGVudW0gUGxhdGZvcm1UeXBlIHtcbiAgTGludXggPSAnTGludXgnLFxuICBXaW5kb3dzID0gJ1dpbmRvd3MnXG59XG5cbi8qKlxuICogVGhlIHBsYXRmb3JtIHR5cGUgdG8gcnVuIHRoZSBzY3JpcHRzIG9uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaGVsbFBsYXRmb3JtIHtcbiAgLyoqXG4gICAqIFJldHVybiBhIGRlZmF1bHQgVWJ1bnR1IExpbnV4IHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBMaW51eFVidW50dSgpOiBTaGVsbFBsYXRmb3JtIHtcbiAgICAvLyBDYW5ub3QgYmUgc3RhdGljIG1lbWJlciBiZWNhdXNlIG9mIGluaXRpYWxpemF0aW9uIG9yZGVyXG4gICAgcmV0dXJuIG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNF8wKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFdpbmRvd3MgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IFdpbmRvd3MoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgV2luZG93c1BsYXRmb3JtKGNidWlsZC5XaW5kb3dzQnVpbGRJbWFnZS5XSU5fU0VSVkVSX0NPUkVfMjAxOV9CQVNFKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBidWlsZEltYWdlOiBjYnVpbGQuSUJ1aWxkSW1hZ2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRybiBjb21tYW5kcyB0byBwcmVwYXJlIHRoZSBob3N0IGZvciB0aGUgc2hlbGxhYmxlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGluc3RhbGxDb21tYW5kcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIGRvd25sb2FkIHRoZSBzY3JpcHQgYnVuZGxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybiBjb21tYW5kcyB0byBzdGFydCB0aGUgZW50cnlwb2ludCBzY3JpcHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHBsYXRmb3JtVHlwZSgpOiBQbGF0Zm9ybVR5cGU7XG59XG5cbi8qKlxuICogQSBMaW51eCBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgTGludXhQbGF0Zm9ybSBleHRlbmRzIFNoZWxsUGxhdGZvcm0ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm1UeXBlID0gUGxhdGZvcm1UeXBlLkxpbnV4O1xuXG4gIHB1YmxpYyBpbnN0YWxsQ29tbWFuZHMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGxpbmVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICAvLyBCZXR0ZXIgZWNobyB0aGUgbG9jYXRpb24gaGVyZTsgaWYgdGhpcyBmYWlscywgdGhlIGVycm9yIG1lc3NhZ2Ugb25seSBjb250YWluc1xuICAgIC8vIHRoZSB1bmV4cGFuZGVkIHZhcmlhYmxlcyBieSBkZWZhdWx0LiBJdCBtaWdodCBmYWlsIGlmIHlvdSdyZSBydW5uaW5nIGFuIG9sZFxuICAgIC8vIGRlZmluaXRpb24gb2YgdGhlIENvZGVCdWlsZCBwcm9qZWN0LS10aGUgcGVybWlzc2lvbnMgd2lsbCBoYXZlIGJlZW4gY2hhbmdlZFxuICAgIC8vIHRvIG9ubHkgYWxsb3cgZG93bmxvYWRpbmcgdGhlIHZlcnkgbGF0ZXN0IHZlcnNpb24uXG4gICAgbGluZXMucHVzaChgZWNobyBcIkRvd25sb2FkaW5nIHNjcmlwdHMgZnJvbSBzMzovL1xcJHske1MzX0JVQ0tFVF9FTlZ9fS9cXCR7JHtTM19LRVlfRU5WfX1cImApO1xuICAgIGxpbmVzLnB1c2goYGF3cyBzMyBjcCBzMzovL1xcJHske1MzX0JVQ0tFVF9FTlZ9fS9cXCR7JHtTM19LRVlfRU5WfX0gL3RtcGApO1xuICAgIGxpbmVzLnB1c2goJ21rZGlyIC1wIC90bXAvc2NyaXB0ZGlyJyk7XG4gICAgbGluZXMucHVzaChgdW56aXAgL3RtcC8kKGJhc2VuYW1lIFxcJCR7UzNfS0VZX0VOVn0pIC1kIC90bXAvc2NyaXB0ZGlyYCk7XG5cbiAgICBpZiAoYXNzdW1lUm9sZSkge1xuXG4gICAgICBpZiAoYXNzdW1lUm9sZS5yZWZyZXNoKSB7XG5cbiAgICAgICAgY29uc3QgYXdzSG9tZSA9ICd+Ly5hd3MnO1xuXG4gICAgICAgIGNvbnN0IHByb2ZpbGVOYW1lID0gYXNzdW1lUm9sZS5wcm9maWxlTmFtZSA/PyAnbG9uZy1ydW5uaW5nLXByb2ZpbGUnO1xuXG4gICAgICAgIGxpbmVzLnB1c2goYG1rZGlyIC1wICR7YXdzSG9tZX1gKTtcbiAgICAgICAgbGluZXMucHVzaChgdG91Y2ggJHthd3NIb21lfS9jcmVkZW50aWFsc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBjb25maWc9JHthd3NIb21lfS9jb25maWdgKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyBbcHJvZmlsZSAke3Byb2ZpbGVOYW1lfV0+PiAkXFx7Y29uZmlnXFx9YCk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2VjaG8gY3JlZGVudGlhbF9zb3VyY2UgPSBFY3NDb250YWluZXIgPj4gJFxce2NvbmZpZ1xcfScpO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIHJvbGVfc2Vzc2lvbl9uYW1lID0gJHthc3N1bWVSb2xlLnNlc3Npb25OYW1lfSA+PiAkXFx7Y29uZmlnXFx9YCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9hcm4gPSAke2Fzc3VtZVJvbGUucm9sZUFybn0gPj4gJGNvbmZpZ2ApO1xuXG4gICAgICAgIGlmIChhc3N1bWVSb2xlLmV4dGVybmFsSWQpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIGV4dGVybmFsX2lkID0gJHthc3N1bWVSb2xlLmV4dGVybmFsSWR9ID4+ICRjb25maWdgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGxldCB0aGUgYXBwbGljYXRpb24gY29kZSBrbm93IHdoaWNoIHJvbGUgaXMgYmVpbmcgdXNlZC5cbiAgICAgICAgbGluZXMucHVzaChgZXhwb3J0IEFXU19QUk9GSUxFPSR7cHJvZmlsZU5hbWV9YCk7XG5cbiAgICAgICAgLy8gZm9yY2UgdGhlIEFXUyBTREsgZm9yIEphdmFTY3JpcHQgdG8gYWN0dWFsbHkgbG9hZCB0aGUgY29uZmlnIGZpbGUgKGRvIGF1dG9tYXRpY2FsbHkgc28gdXNlcnMgZG9uJ3QgZm9yZ2V0KVxuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NES19MT0FEX0NPTkZJRz0xJyk7XG5cbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgY29uc3QgZXh0ZXJuYWxJZCA9IGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCA/IGAtLWV4dGVybmFsLWlkIFwiJHthc3N1bWVSb2xlLmV4dGVybmFsSWR9XCJgIDogJyc7XG4gICAgICAgIGNvbnN0IFN0c0VuZHBvaW50cyA9IHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzID8gJ3JlZ2lvbmFsJyA6ICdsZWdhY3knO1xuXG4gICAgICAgIGxpbmVzLnB1c2goJ2NyZWRzPSQobWt0ZW1wIC1kKS9jcmVkcy5qc29uJyk7XG4gICAgICAgIGxpbmVzLnB1c2goYEFXU19TVFNfUkVHSU9OQUxfRU5EUE9JTlRTPSR7U3RzRW5kcG9pbnRzfSBhd3Mgc3RzIGFzc3VtZS1yb2xlIC0tcm9sZS1hcm4gXCIke2Fzc3VtZVJvbGUucm9sZUFybn1cIiAtLXJvbGUtc2Vzc2lvbi1uYW1lIFwiJHthc3N1bWVSb2xlLnNlc3Npb25OYW1lfVwiICR7ZXh0ZXJuYWxJZH0gPiAkY3JlZHNgKTtcbiAgICAgICAgbGluZXMucHVzaCgnZXhwb3J0IEFXU19BQ0NFU1NfS0VZX0lEPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiQWNjZXNzS2V5SWRcIiB8IGN1dCAtZFxcJ1wiXFwnIC1mIDQpXCInKTtcbiAgICAgICAgbGluZXMucHVzaCgnZXhwb3J0IEFXU19TRUNSRVRfQUNDRVNTX0tFWT1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlY3JldEFjY2Vzc0tleVwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFU1NJT05fVE9LRU49XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJTZXNzaW9uVG9rZW5cIiB8IGN1dCAtZFxcJ1wiXFwnIC1mIDQpXCInKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXM7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDb21tYW5kcyhlbnRyeXBvaW50OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdleHBvcnQgU0NSSVBUX0RJUj0vdG1wL3NjcmlwdGRpcicsXG4gICAgICBgZWNobyBcIlJ1bm5pbmcgJHtlbnRyeXBvaW50fVwiYCxcbiAgICAgIGAvYmluL2Jhc2ggL3RtcC9zY3JpcHRkaXIvJHtlbnRyeXBvaW50fWAsXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIEEgV2luZG93cyBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgV2luZG93c1BsYXRmb3JtIGV4dGVuZHMgU2hlbGxQbGF0Zm9ybSB7XG4gIHB1YmxpYyByZWFkb25seSBwbGF0Zm9ybVR5cGUgPSBQbGF0Zm9ybVR5cGUuV2luZG93cztcblxuICBwdWJsaWMgaW5zdGFsbENvbW1hbmRzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gVXBkYXRlIHRoZSBpbWFnZSdzIG5vZGVqcyB0byB0aGUgbGF0ZXN0IExUUyByZWxlYXNlLlxuICAgICAgJ0ltcG9ydC1Nb2R1bGUgXCJDOlxcXFxQcm9ncmFtRGF0YVxcXFxjaG9jb2xhdGV5XFxcXGhlbHBlcnNcXFxcY2hvY29sYXRleVByb2ZpbGUucHNtMVwiJyxcbiAgICAgICdDOlxcXFxQcm9ncmFtRGF0YVxcXFxjaG9jb2xhdGV5XFxcXGJpblxcXFxjaG9jby5leGUgdXBncmFkZSBub2RlanMtbHRzIC15JyxcbiAgICBdO1xuICB9XG5cbiAgcHVibGljIHByZWJ1aWxkQ29tbWFuZHMoYXNzdW1lUm9sZT86IEFzc3VtZVJvbGUsIF91c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgaWYgKGFzc3VtZVJvbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXNzdW1lUm9sZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9jZGtsYWJzL2F3cy1kZWxpdmxpYi9pc3N1ZXMvNTcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgLy8gV291bGQgbG92ZSB0byBkbyBkb3dubG9hZGluZyBoZXJlIGFuZCBleGVjdXRpbmcgaW4gdGhlIG5leHQgc3RlcCxcbiAgICAgIC8vIGJ1dCBJIGRvbid0IGtub3cgaG93IHRvIHByb3BhZ2F0ZSB0aGUgdmFsdWUgb2YgJFRFTVBESVIuXG4gICAgICAvL1xuICAgICAgLy8gUHVudGluZyBmb3Igc29tZW9uZSB3aG8ga25vd3MgUG93ZXJTaGVsbCB3ZWxsIGVub3VnaC5cbiAgICBdO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnU2V0LVZhcmlhYmxlIC1OYW1lIFRFTVBESVIgLVZhbHVlIChOZXctVGVtcG9yYXJ5RmlsZSkuRGlyZWN0b3J5TmFtZScsXG4gICAgICBgYXdzIHMzIGNwIHMzOi8vJGVudjoke1MzX0JVQ0tFVF9FTlZ9LyRlbnY6JHtTM19LRVlfRU5WfSAkVEVNUERJUlxcXFxzY3JpcHRzLnppcGAsXG4gICAgICAnTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0aCAkVEVNUERJUlxcXFxzY3JpcHRkaXInLFxuICAgICAgJ0V4cGFuZC1BcmNoaXZlIC1QYXRoICRURU1QRElSL3NjcmlwdHMuemlwIC1EZXN0aW5hdGlvblBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICckZW52OlNDUklQVF9ESVIgPSBcIiRURU1QRElSXFxcXHNjcmlwdGRpclwiJyxcbiAgICAgIGAmICRURU1QRElSXFxcXHNjcmlwdGRpclxcXFwke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG4iXX0=
|