stream-chat-angular 5.12.5 → 5.13.1
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/assets/version.d.ts +1 -1
- package/esm2020/assets/version.mjs +2 -2
- package/esm2020/lib/chat-client.service.mjs +15 -4
- package/esm2020/lib/message/message.component.mjs +2 -7
- package/fesm2015/stream-chat-angular.mjs +24 -18
- package/fesm2015/stream-chat-angular.mjs.map +1 -1
- package/fesm2020/stream-chat-angular.mjs +16 -10
- package/fesm2020/stream-chat-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/src/assets/version.ts +1 -1
package/assets/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "5.
|
|
1
|
+
export declare const version = "5.13.1";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '5.
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export const version = '5.13.1';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjEzLjEnO1xuIl19
|
|
@@ -45,9 +45,20 @@ export class ChatClientService {
|
|
|
45
45
|
this.trackPendingChannelInvites =
|
|
46
46
|
clientOptions?.trackPendingChannelInvites === true;
|
|
47
47
|
this.chatClient = StreamChat.getInstance(apiKey, clientOptions);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.chatClient.
|
|
48
|
+
if ('sdkIdentifier' in this.chatClient) {
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
|
|
50
|
+
this.chatClient.sdkIdentifier = {
|
|
51
|
+
name: 'angular',
|
|
52
|
+
version,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const userAgent = this.chatClient.getUserAgent();
|
|
57
|
+
if (!userAgent.includes('stream-chat-angular')) {
|
|
58
|
+
const parts = userAgent.split('-');
|
|
59
|
+
const jsVersion = parts[parts.length - 1] ?? '0.0.0';
|
|
60
|
+
this.chatClient.setUserAgent(`stream-chat-angular-v${version}-llc-v${jsVersion}`);
|
|
61
|
+
}
|
|
51
62
|
}
|
|
52
63
|
this.chatClient.recoverStateOnReconnect = false;
|
|
53
64
|
this.chatClient.devToken;
|
|
@@ -224,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
224
235
|
providedIn: 'root',
|
|
225
236
|
}]
|
|
226
237
|
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.NotificationService }]; } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFXbEUsT0FBTyxFQUFzQixVQUFVLEVBQW1CLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVN0Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUEyQzVCLFlBQ1UsTUFBYyxFQUNkLG1CQUF3QztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWYxQyx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBaUIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUM5QyxTQUFTLENBQ1YsQ0FBQztRQUNNLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzlELGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBRXJDLENBQUMsQ0FBQyxDQUFDO1FBQ0csa0JBQWEsR0FBa0MsRUFBRSxDQUFDO1FBQ2xELCtCQUEwQixHQUFHLElBQUksQ0FBQztRQU94QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcs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QyxJQUFJLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFDdEM7WUFDQSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQzs7OEdBblJVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBcHBTZXR0aW5nc0FQSVJlc3BvbnNlLFxuICBDaGFubmVsLFxuICBDaGFubmVsRmlsdGVycyxcbiAgQ29ubmVjdEFQSVJlc3BvbnNlLFxuICBPd25Vc2VyUmVzcG9uc2UsXG4gIFN0cmVhbUNoYXRPcHRpb25zLFxuICBVc2VyRmlsdGVycyxcbiAgVXNlclJlc3BvbnNlLFxufSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBcHBTZXR0aW5ncywgRXZlbnQsIFN0cmVhbUNoYXQsIFRva2VuT3JQcm92aWRlciB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi9hc3NldHMvdmVyc2lvbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBDbGllbnRFdmVudDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBldmVudFR5cGU6IHN0cmluZztcbiAgZXZlbnQ6IEV2ZW50PFQ+O1xufTtcblxuLyoqXG4gKiBUaGUgYENoYXRDbGllbnRgIHNlcnZpY2UgY29ubmVjdHMgdGhlIHVzZXIgdG8gdGhlIFN0cmVhbSBjaGF0LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdENsaWVudFNlcnZpY2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiB7XG4gIC8qKlxuICAgKiBUaGUgW1N0cmVhbUNoYXQgY2xpZW50XShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWpzL2Jsb2IvbWFzdGVyL3NyYy9jbGllbnQudHMpIGluc3RhbmNlLiBJbiBnZW5lcmFsIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBhY2Nlc3MgdGhlIGNsaWVudCwgYnV0IGl0J3MgdGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIGl0LlxuICAgKi9cbiAgY2hhdENsaWVudCE6IFN0cmVhbUNoYXQ8VD47XG4gIC8qKlxuICAgKiBFbWl0cyBbYENsaWVudEV2ZW50YF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1hbmd1bGFyL2Jsb2IvbWFzdGVyL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzKSBldmVudHMuIFRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uIGNvdmVycyBbdGhlIGxpc3Qgb2YgY2xpZW50LCB1c2VyIHByZXNlbmNlIGFuZCBub3RpZmljYXRpb24gZXZlbnRzXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvZXZlbnRfb2JqZWN0LykuXG4gICAqIDo6OmltcG9ydGFudFxuICAgKiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGlzIE9ic2VydmFibGUgb3BlcmF0ZXMgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIHpvbmUuIElmIHlvdSBzdWJzY3JpYmUgdG8gaXQsIHlvdSBuZWVkIHRvIG1hbnVhbGx5IHJlZW50ZXIgQW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gem9uZSwgb3VyIFtDaGFuZ2UgZGV0ZWN0aW9uIGd1aWRlXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbmNlcHRzL2NoYW5nZS1kZXRlY3Rpb24vKSBleHBsYWlucyB0aGlzIGluIGRldGFpbC5cbiAgICogOjo6XG4gICAqL1xuICBldmVudHMkOiBPYnNlcnZhYmxlPENsaWVudEV2ZW50PFQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IFthcHBsaWNhdGlvbiBzZXR0aW5nc10oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2FwcF9zZXR0aW5nX292ZXJ2aWV3LykuIFNpbmNlIGdldHRpbmcgdGhlIGFwcGxpY2F0aW9uIHNldHRpbmdzIGlzIGFuIGV4cGVuc2l2ZSBBUEkgY2FsbCBhbmQgd2UgZG9uJ3QgYWx3YXlzIG5lZWQgdGhlIHJlc3VsdCwgdGhpcyBpcyBub3QgaW5pdGlhbGl6ZWQgYnkgZGVmYXVsdCwgeW91IG5lZWQgdG8gY2FsbCBgZ2V0QXBwbGljYXRpb25TZXR0aW5nc2AgdG8gbG9hZCB0aGVtLlxuICAgKi9cbiAgYXBwU2V0dGluZ3MkOiBPYnNlcnZhYmxlPEFwcFNldHRpbmdzIHwgdW5kZWZpbmVkPjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gc3RhdGUgb2YgdGhlIHVzZXIgKGBvbmxpbmVgIG9yIGBvZmZsaW5lYClcbiAgICovXG4gIGNvbm5lY3Rpb25TdGF0ZSQ6IE9ic2VydmFibGU8J29mZmxpbmUnIHwgJ29ubGluZSc+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGxpc3Qgb2YgcGVuZGluZyBpbnZpdGVzIG9mIHRoZSB1c2VyLiBJdCBlbWl0cyBldmVyeSBwZW5kaW5nIGludml0YXRpb24gZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCB0aGVuIGV4dGVuZHMgdGhlIGxpc3Qgd2hlbiBhIG5ldyBpbnZpdGUgaXMgcmVjZWl2ZWQuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBbY2hhbm5lbCBpbnZpdGF0aW9uc10oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9jb2RlLWV4YW1wbGVzL2NoYW5uZWwtaW52aXRlcy8pIGd1aWRlLlxuICAgKi9cbiAgcGVuZGluZ0ludml0ZXMkOiBPYnNlcnZhYmxlPENoYW5uZWw8VD5bXT47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBjaGF0IHVzZXJcbiAgICovXG4gIHVzZXIkOiBPYnNlcnZhYmxlPE93blVzZXJSZXNwb25zZTxUPiB8IFVzZXJSZXNwb25zZTxUPiB8IHVuZGVmaW5lZD47XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PENsaWVudEV2ZW50PFQ+PigxKTtcbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdGVTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8J29mZmxpbmUnIHwgJ29ubGluZSc+KDEpO1xuICBwcml2YXRlIGFwcFNldHRpbmdzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXBwU2V0dGluZ3MgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICBwcml2YXRlIHBlbmRpbmdJbnZpdGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhbm5lbDxUPltdPihbXSk7XG4gIHByaXZhdGUgdXNlclN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxcbiAgICBPd25Vc2VyUmVzcG9uc2U8VD4gfCBVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWRcbiAgPigxKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiB7IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkIH1bXSA9IFtdO1xuICBwcml2YXRlIHRyYWNrUGVuZGluZ0NoYW5uZWxJbnZpdGVzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBhcHBTZXR0aW5nc1Byb21pc2U/OiBQcm9taXNlPEFwcFNldHRpbmdzQVBJUmVzcG9uc2U8VD4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZXZlbnRzJCA9IHRoaXMubm90aWZpY2F0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZSQgPSB0aGlzLmNvbm5lY3Rpb25TdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5hcHBTZXR0aW5ncyQgPSB0aGlzLmFwcFNldHRpbmdzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnBlbmRpbmdJbnZpdGVzJCA9IHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMudXNlciQgPSB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBbYFN0cmVhbUNoYXRgXShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWpzL2Jsb2IvNjY4YjNlNTUyMTMzOWY0ZTE0ZmM2NTc4MzQ1MzFiNGM4YmY4MTc2Yi9zcmMvY2xpZW50LnRzI0wxMjQpIGluc3RhbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBgYXBpS2V5YCwgYW5kIGNvbm5lY3RzIGEgdXNlciB3aXRoIHRoZSBnaXZlbiBtZXRhIGRhdGEgYW5kIHRva2VuLiBNb3JlIGluZm8gYWJvdXQgW2Nvbm5lY3RpbmcgdXNlcnNdKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9pbml0X2FuZF91c2Vycy8pIGNhbiBiZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbi5cbiAgICogQHBhcmFtIGFwaUtleVxuICAgKiBAcGFyYW0gdXNlck9ySWQgeW91IGNhbiBlbWl0IHRoaXMgZm9yIGFub255bW91cyBsb2dpbnNcbiAgICogQHBhcmFtIHVzZXJUb2tlbk9yUHJvdmlkZXIgWW91IGNhbiBwcm92aWRlOjx1bD5cbiAgICogIDxsaT4gYSB0b2tlbiwgPC9saT5cbiAgICogIDxsaT4gYSB0b2tlbiBwcm92aWRlciwgYSBtZXRob2QgdGhhdCByZXR1cm5zIGBQcm9taXNlPHN0cmluZz5gLCB3aGljaCBjYW4gYmUgY2FsbGVkIHdoZW4gdGhlIHByZXZpb3VzIHRva2VuIGV4cGlyZXMgKHJlY29tbWVuZGVkIHNldHVwIGZvciBwcm9kdWN0aW9uIGFwcGxpY2F0aW9ucyk8L2xpPlxuICAgKiAgPGxpPiB0aGUga2V5d29yZCAnZ3Vlc3QnIHRvIGNvbm5lY3QgYXMgW2d1ZXN0IHVzZXJdKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9hdXRobGVzc191c2Vycy8jZ3Vlc3QtdXNlcnMpIDwvbGk+XG4gICAqICA8bGk+IHRoZSBrZXl3b3JkICdhbm9ueW1vdXMnIHRvIGNvbm5lY3QgYXMgW2Fub255bW91cyB1c2VyXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvYXV0aGxlc3NfdXNlcnMvI2Fub255bW91cy11c2VycykgPC9saT5cbiAgICogIDwvdWw+XG4gICAqIEBwYXJhbSBjbGllbnRPcHRpb25zIFNldHRpbmcgdG8gcHJvdmlkZSB0byB0aGUgU3RyZWFtIGNsaWVudCBpbnN0YW5jZVxuICAgKi9cbiAgYXN5bmMgaW5pdChcbiAgICBhcGlLZXk6IHN0cmluZyxcbiAgICB1c2VyT3JJZDogc3RyaW5nIHwgT3duVXNlclJlc3BvbnNlPFQ+IHwgVXNlclJlc3BvbnNlPFQ+IHwgdW5kZWZpbmVkLFxuICAgIHVzZXJUb2tlbk9yUHJvdmlkZXI6IFRva2VuT3JQcm92aWRlcixcbiAgICBjbGllbnRPcHRpb25zPzogU3RyZWFtQ2hhdE9wdGlvbnMgJiB7XG4gICAgICB0cmFja1BlbmRpbmdDaGFubmVsSW52aXRlcz86IGJvb2xlYW47XG4gICAgfVxuICApOiBDb25uZWN0QVBJUmVzcG9uc2U8VD4ge1xuICAgIGlmICh0aGlzLmNoYXRDbGllbnQgJiYgdGhpcy5jaGF0Q2xpZW50LmtleSAhPT0gYXBpS2V5KSB7XG4gICAgICB0aGlzLmFwcFNldHRpbmdzU3ViamVjdC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLmFwcFNldHRpbmdzUHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy50cmFja1BlbmRpbmdDaGFubmVsSW52aXRlcyA9XG4gICAgICBjbGllbnRPcHRpb25zPy50cmFja1BlbmRpbmdDaGFubmVsSW52aXRlcyA9PT0gdHJ1ZTtcbiAgICB0aGlzLmNoYXRDbGllbnQgPSBTdHJlYW1DaGF0LmdldEluc3RhbmNlPFQ+KGFwaUtleSwgY2xpZW50T3B0aW9ucyk7XG4gICAgY29uc3Qgc2RrUHJlZml4ID0gJ3N0cmVhbS1jaGF0LWFuZ3VsYXInO1xuICAgIGlmICghdGhpcy5jaGF0Q2xpZW50LmdldFVzZXJBZ2VudCgpLmluY2x1ZGVzKHNka1ByZWZpeCkpIHtcbiAgICAgIHRoaXMuY2hhdENsaWVudC5zZXRVc2VyQWdlbnQoXG4gICAgICAgIGAke3Nka1ByZWZpeH0tJHt2ZXJzaW9ufS0ke3RoaXMuY2hhdENsaWVudC5nZXRVc2VyQWdlbnQoKX1gXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNoYXRDbGllbnQucmVjb3ZlclN0YXRlT25SZWNvbm5lY3QgPSBmYWxzZTtcbiAgICB0aGlzLmNoYXRDbGllbnQuZGV2VG9rZW47XG4gICAgbGV0IHJlc3VsdDtcbiAgICBhd2FpdCB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdHlwZW9mIHVzZXJPcklkID09PSAnc3RyaW5nJyA/IHsgaWQ6IHVzZXJPcklkIH0gOiB1c2VyT3JJZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBndWVzdDogKCkgPT4gdGhpcy5jaGF0Q2xpZW50LnNldEd1ZXN0VXNlcih1c2VyISksXG4gICAgICAgICAgICBhbm9ueW1vdXM6ICgpID0+IHRoaXMuY2hhdENsaWVudC5jb25uZWN0QW5vbnltb3VzVXNlcigpLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIH1bYCR7dXNlclRva2VuT3JQcm92aWRlcn1gXSA/P1xuICAgICAgICAgICgoKSA9PiB0aGlzLmNoYXRDbGllbnQuY29ubmVjdFVzZXIodXNlciEsIHVzZXJUb2tlbk9yUHJvdmlkZXIpKVxuICAgICAgICApKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkUGVybWFuZW50Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGNvbm5lY3RpbmcgdG8gY2hhdCwgcmVmcmVzaCB0aGUgcGFnZSB0byB0cnkgYWdhaW4uJyxcbiAgICAgICAgICAnZXJyb3InXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KFxuICAgICAgICB0aGlzLmNoYXRDbGllbnQudXNlciA/IHsgLi4udGhpcy5jaGF0Q2xpZW50LnVzZXIgfSA6IHVuZGVmaW5lZFxuICAgICAgKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkICYmIHRoaXMudHJhY2tQZW5kaW5nQ2hhbm5lbEludml0ZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWxzID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5Q2hhbm5lbHMoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnZpdGU6ICdwZW5kaW5nJyxcbiAgICAgICAgICBtZW1iZXJzOiB7ICRpbjogW3RoaXMuY2hhdENsaWVudC51c2VyPy5pZF0gfSxcbiAgICAgICAgfSBhcyB1bmtub3duIGFzIENoYW5uZWxGaWx0ZXJzPFQ+IC8vIFRPRE86IGZpbmQgb3V0IHdoeSB3ZSBuZWVkIHRoaXMgdHlwZWNhc3RcbiAgICAgICk7XG4gICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KGNoYW5uZWxzKTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQub24oKGUpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVVc2VyKGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVBlbmRpbmdJbnZpdGVzKGUpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QubmV4dCh7XG4gICAgICAgICAgZXZlbnRUeXBlOiBlLnR5cGUsXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICAgIGxldCByZW1vdmVOb3RpZmljYXRpb246IHVuZGVmaW5lZCB8ICgoKSA9PiB2b2lkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhdENsaWVudC5vbignY29ubmVjdGlvbi5jaGFuZ2VkJywgKGUpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc09ubGluZSA9IGUub25saW5lO1xuICAgICAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAgICAgaWYgKHJlbW92ZU5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICByZW1vdmVOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9uID1cbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgICAnc3RyZWFtQ2hhdC5Db25uZWN0aW9uIGZhaWx1cmUsIHJlY29ubmVjdGluZyBub3cuLi4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXRlU3ViamVjdC5uZXh0KGlzT25saW5lID8gJ29ubGluZScgOiAnb2ZmbGluZScpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2Nvbm5lY3RzIHRoZSBjdXJyZW50IHVzZXIsIGFuZCBjbG9zZXMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLiBVc2VmdWwgd2hlbiBkaXNjb25uZWN0aW5nIGEgY2hhdCB1c2VyLCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCBbYHJlc2V0YF0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9zZXJ2aWNlcy9DaGFubmVsU2VydmljZS8jcmVzZXQvKS5cbiAgICovXG4gIGFzeW5jIGRpc2Nvbm5lY3RVc2VyKCkge1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoW10pO1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5kaXNjb25uZWN0VXNlcigpO1xuICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjdXJyZW50IFthcHBsaWNhdGlvbiBzZXR0aW5nc10oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2FwcF9zZXR0aW5nX292ZXJ2aWV3LyksIGlmIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5ncyBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQsIGl0IGRvZXMgbm90aGluZy5cbiAgICovXG4gIGFzeW5jIGdldEFwcFNldHRpbmdzKCkge1xuICAgIGlmICh0aGlzLmFwcFNldHRpbmdzUHJvbWlzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFwcFNldHRpbmdzUHJvbWlzZSA9IHRoaXMuY2hhdENsaWVudC5nZXRBcHBTZXR0aW5ncygpO1xuICAgIHZvaWQgdGhpcy5hcHBTZXR0aW5nc1Byb21pc2UuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmFwcFNldHRpbmdzUHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBjb25zdCBzZXR0aW5ncyA9IGF3YWl0IHRoaXMuYXBwU2V0dGluZ3NQcm9taXNlO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQoKHNldHRpbmdzLmFwcCBhcyBBcHBTZXR0aW5ncykgfHwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgZ2l2ZW4gSUQuIElmIHlvdSB3YW50IHRvIGtub3cgW21vcmUgYWJvdXQgZmxhZ3NdKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9tb2RlcmF0aW9uLykgY2hlY2sgb3V0IHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkXG4gICAqL1xuICBhc3luYyBmbGFnTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5mbGFnTWVzc2FnZShtZXNzYWdlSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGZvciB1c2VycyBpbiB0aGUgYXBwbGljYXRpb24gdGhhdCBoYXZlIElEIG9yIG5hbWUgbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIHNlYXJjaCB0ZXJtXG4gICAqIEBwYXJhbSBzZWFyY2hUZXJtXG4gICAqIEByZXR1cm5zIFRoZSB1c2VycyBtYXRjaGluZyB0aGUgc2VhcmNoXG4gICAqL1xuICBhc3luYyBhdXRvY29tcGxldGVVc2VycyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAoIXNlYXJjaFRlcm0pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5VXNlcnMoe1xuICAgICAgJG9yOiBbXG4gICAgICAgIHsgaWQ6IHsgJGF1dG9jb21wbGV0ZTogc2VhcmNoVGVybSB9IH0sXG4gICAgICAgIHsgbmFtZTogeyAkYXV0b2NvbXBsZXRlOiBzZWFyY2hUZXJtIH0gfSxcbiAgICAgIF0sXG4gICAgfSBhcyBVc2VyRmlsdGVyczxUPik7IC8vIFRPRE86IGZpbmQgb3V0IHdoeSB3ZSBuZWVkIHRoaXMgdHlwZWNhc3RcbiAgICByZXR1cm4gcmVzdWx0LnVzZXJzLmZpbHRlcigodSkgPT4gdS5pZCAhPT0gdGhpcy5jaGF0Q2xpZW50Py51c2VyPy5pZCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBlbmRpbmdJbnZpdGVzKGU6IEV2ZW50PFQ+KSB7XG4gICAgaWYgKCF0aGlzLnRyYWNrUGVuZGluZ0NoYW5uZWxJbnZpdGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlLm1lbWJlcj8udXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudC51c2VyPy5pZCAmJiBlLmNoYW5uZWwpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmdJbnZpdGVzID0gdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlZCcpIHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuY2hhdENsaWVudC5jaGFubmVsKGUuY2hhbm5lbD8udHlwZSwgZS5jaGFubmVsPy5pZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoWy4uLnBlbmRpbmdJbnZpdGVzLCBjaGFubmVsXSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX2FjY2VwdGVkJyB8fFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX3JlamVjdGVkJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGVuZGluZ0ludml0ZXMuZmluZEluZGV4KFxuICAgICAgICAgIChpKSA9PiBpPy5jaWQgPT09IGUuY2hhbm5lbD8uY2lkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBwZW5kaW5nSW52aXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoWy4uLnBlbmRpbmdJbnZpdGVzXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVVzZXIoZTogRXZlbnQ8VD4pIHtcbiAgICBpZiAodHlwZW9mIGUudG90YWxfdW5yZWFkX2NvdW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IHVzZXI6IE93blVzZXJSZXNwb25zZTxUPiB8IFVzZXJSZXNwb25zZTxUPiB8IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXNlclN1YmplY3QucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHUpID0+IHtcbiAgICAgICAgdXNlciA9IHU7XG4gICAgICB9KTtcbiAgICAgIGlmICh1c2VyICYmIHVzZXIudG90YWxfdW5yZWFkX2NvdW50ICE9PSBlLnRvdGFsX3VucmVhZF9jb3VudCkge1xuICAgICAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgdG90YWxfdW5yZWFkX2NvdW50OiBlLnRvdGFsX3VucmVhZF9jb3VudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZS51bnJlYWRfY2hhbm5lbHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgdXNlcjogT3duVXNlclJlc3BvbnNlPFQ+IHwgVXNlclJlc3BvbnNlPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgdGhpcy51c2VyU3ViamVjdC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodSkgPT4ge1xuICAgICAgICB1c2VyID0gdTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHVzZXIgJiYgdXNlci51bnJlYWRfY2hhbm5lbHMgIT09IGUudW5yZWFkX2NoYW5uZWxzKSB7XG4gICAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh7XG4gICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICB1bnJlYWRfY2hhbm5lbHM6IGUudW5yZWFkX2NoYW5uZWxzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlLnVucmVhZF9jb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxldCB1c2VyOiBPd25Vc2VyUmVzcG9uc2U8VD4gfCBVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnVzZXJTdWJqZWN0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCh1KSA9PiB7XG4gICAgICAgIHVzZXIgPSB1O1xuICAgICAgfSk7XG4gICAgICBpZiAodXNlciAmJiB1c2VyLnVucmVhZF9jb3VudCAhPT0gZS51bnJlYWRfY291bnQpIHtcbiAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgIHVucmVhZF9jb3VudDogZS51bnJlYWRfY291bnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBlLnR5cGUgPT09ICd1c2VyLnVwZGF0ZWQnICYmXG4gICAgICB0aGlzLmNoYXRDbGllbnQudXNlciAmJlxuICAgICAgZS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50LnVzZXIuaWRcbiAgICApIHtcbiAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh7IC4uLnRoaXMuY2hhdENsaWVudC51c2VyIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFXbEUsT0FBTyxFQUFzQixVQUFVLEVBQW1CLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVN0Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUEyQzVCLFlBQ1UsTUFBYyxFQUNkLG1CQUF3QztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWYxQyx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBaUIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUM5QyxTQUFTLENBQ1YsQ0FBQztRQUNNLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzlELGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBRXJDLENBQUMsQ0FBQyxDQUFDO1FBQ0csa0JBQWEsR0FBa0MsRUFBRSxDQUFDO1FBQ2xELCtCQUEwQixHQUFHLElBQUksQ0FBQztRQU94QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcs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Q0gsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsWUFBWSxFQUFFO2dCQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsR0FBRyxJQUFJO29CQUNQLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTtpQkFDN0IsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUNELElBQ0UsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTtZQUNwQixDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3RDO1lBQ0EsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7OzhHQTdSVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQXBwU2V0dGluZ3NBUElSZXNwb25zZSxcbiAgQ2hhbm5lbCxcbiAgQ2hhbm5lbEZpbHRlcnMsXG4gIENvbm5lY3RBUElSZXNwb25zZSxcbiAgT3duVXNlclJlc3BvbnNlLFxuICBTdHJlYW1DaGF0T3B0aW9ucyxcbiAgVXNlckZpbHRlcnMsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3MsIEV2ZW50LCBTdHJlYW1DaGF0LCBUb2tlbk9yUHJvdmlkZXIgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vYXNzZXRzL3ZlcnNpb24nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgQ2xpZW50RXZlbnQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgZXZlbnRUeXBlOiBzdHJpbmc7XG4gIGV2ZW50OiBFdmVudDxUPjtcbn07XG5cbi8qKlxuICogVGhlIGBDaGF0Q2xpZW50YCBzZXJ2aWNlIGNvbm5lY3RzIHRoZSB1c2VyIHRvIHRoZSBTdHJlYW0gY2hhdC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENoYXRDbGllbnRTZXJ2aWNlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4ge1xuICAvKipcbiAgICogVGhlIFtTdHJlYW1DaGF0IGNsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1qcy9ibG9iL21hc3Rlci9zcmMvY2xpZW50LnRzKSBpbnN0YW5jZS4gSW4gZ2VuZXJhbCB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gYWNjZXNzIHRoZSBjbGllbnQsIGJ1dCBpdCdzIHRoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBpdC5cbiAgICovXG4gIGNoYXRDbGllbnQhOiBTdHJlYW1DaGF0PFQ+O1xuICAvKipcbiAgICogRW1pdHMgW2BDbGllbnRFdmVudGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtYW5ndWxhci9ibG9iL21hc3Rlci9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvY2hhdC1jbGllbnQuc2VydmljZS50cykgZXZlbnRzLiBUaGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbiBjb3ZlcnMgW3RoZSBsaXN0IG9mIGNsaWVudCwgdXNlciBwcmVzZW5jZSBhbmQgbm90aWZpY2F0aW9uIGV2ZW50c10oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2V2ZW50X29iamVjdC8pLlxuICAgKiA6OjppbXBvcnRhbnRcbiAgICogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgdGhpcyBPYnNlcnZhYmxlIG9wZXJhdGVzIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiB6b25lLiBJZiB5b3Ugc3Vic2NyaWJlIHRvIGl0LCB5b3UgbmVlZCB0byBtYW51YWxseSByZWVudGVyIEFuZ3VsYXIncyBjaGFuZ2UgZGV0ZWN0aW9uIHpvbmUsIG91ciBbQ2hhbmdlIGRldGVjdGlvbiBndWlkZV0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9jb25jZXB0cy9jaGFuZ2UtZGV0ZWN0aW9uLykgZXhwbGFpbnMgdGhpcyBpbiBkZXRhaWwuXG4gICAqIDo6OlxuICAgKi9cbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxDbGllbnRFdmVudDxUPj47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBbYXBwbGljYXRpb24gc2V0dGluZ3NdKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9hcHBfc2V0dGluZ19vdmVydmlldy8pLiBTaW5jZSBnZXR0aW5nIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5ncyBpcyBhbiBleHBlbnNpdmUgQVBJIGNhbGwgYW5kIHdlIGRvbid0IGFsd2F5cyBuZWVkIHRoZSByZXN1bHQsIHRoaXMgaXMgbm90IGluaXRpYWxpemVkIGJ5IGRlZmF1bHQsIHlvdSBuZWVkIHRvIGNhbGwgYGdldEFwcGxpY2F0aW9uU2V0dGluZ3NgIHRvIGxvYWQgdGhlbS5cbiAgICovXG4gIGFwcFNldHRpbmdzJDogT2JzZXJ2YWJsZTxBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZD47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBjb25uZWN0aW9uIHN0YXRlIG9mIHRoZSB1c2VyIChgb25saW5lYCBvciBgb2ZmbGluZWApXG4gICAqL1xuICBjb25uZWN0aW9uU3RhdGUkOiBPYnNlcnZhYmxlPCdvZmZsaW5lJyB8ICdvbmxpbmUnPjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBsaXN0IG9mIHBlbmRpbmcgaW52aXRlcyBvZiB0aGUgdXNlci4gSXQgZW1pdHMgZXZlcnkgcGVuZGluZyBpbnZpdGF0aW9uIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBleHRlbmRzIHRoZSBsaXN0IHdoZW4gYSBuZXcgaW52aXRlIGlzIHJlY2VpdmVkLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgW2NoYW5uZWwgaW52aXRhdGlvbnNdKC9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvY29kZS1leGFtcGxlcy9jaGFubmVsLWludml0ZXMvKSBndWlkZS5cbiAgICovXG4gIHBlbmRpbmdJbnZpdGVzJDogT2JzZXJ2YWJsZTxDaGFubmVsPFQ+W10+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgY2hhdCB1c2VyXG4gICAqL1xuICB1c2VyJDogT2JzZXJ2YWJsZTxPd25Vc2VyUmVzcG9uc2U8VD4gfCBVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIG5vdGlmaWNhdGlvblN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxDbGllbnRFdmVudDxUPj4oMSk7XG4gIHByaXZhdGUgY29ubmVjdGlvblN0YXRlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PCdvZmZsaW5lJyB8ICdvbmxpbmUnPigxKTtcbiAgcHJpdmF0ZSBhcHBTZXR0aW5nc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFwcFNldHRpbmdzIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgcHJpdmF0ZSBwZW5kaW5nSW52aXRlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoYW5uZWw8VD5bXT4oW10pO1xuICBwcml2YXRlIHVzZXJTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8XG4gICAgT3duVXNlclJlc3BvbnNlPFQ+IHwgVXNlclJlc3BvbnNlPFQ+IHwgdW5kZWZpbmVkXG4gID4oMSk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9W10gPSBbXTtcbiAgcHJpdmF0ZSB0cmFja1BlbmRpbmdDaGFubmVsSW52aXRlcyA9IHRydWU7XG4gIHByaXZhdGUgYXBwU2V0dGluZ3NQcm9taXNlPzogUHJvbWlzZTxBcHBTZXR0aW5nc0FQSVJlc3BvbnNlPFQ+PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdGUkID0gdGhpcy5jb25uZWN0aW9uU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3MkID0gdGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlcyQgPSB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnVzZXIkID0gdGhpcy51c2VyU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgW2BTdHJlYW1DaGF0YF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1qcy9ibG9iLzY2OGIzZTU1MjEzMzlmNGUxNGZjNjU3ODM0NTMxYjRjOGJmODE3NmIvc3JjL2NsaWVudC50cyNMMTI0KSBpbnN0YW5jZSB1c2luZyB0aGUgcHJvdmlkZWQgYGFwaUtleWAsIGFuZCBjb25uZWN0cyBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gbWV0YSBkYXRhIGFuZCB0b2tlbi4gTW9yZSBpbmZvIGFib3V0IFtjb25uZWN0aW5nIHVzZXJzXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvaW5pdF9hbmRfdXNlcnMvKSBjYW4gYmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24uXG4gICAqIEBwYXJhbSBhcGlLZXlcbiAgICogQHBhcmFtIHVzZXJPcklkIHlvdSBjYW4gZW1pdCB0aGlzIGZvciBhbm9ueW1vdXMgbG9naW5zXG4gICAqIEBwYXJhbSB1c2VyVG9rZW5PclByb3ZpZGVyIFlvdSBjYW4gcHJvdmlkZTo8dWw+XG4gICAqICA8bGk+IGEgdG9rZW4sIDwvbGk+XG4gICAqICA8bGk+IGEgdG9rZW4gcHJvdmlkZXIsIGEgbWV0aG9kIHRoYXQgcmV0dXJucyBgUHJvbWlzZTxzdHJpbmc+YCwgd2hpY2ggY2FuIGJlIGNhbGxlZCB3aGVuIHRoZSBwcmV2aW91cyB0b2tlbiBleHBpcmVzIChyZWNvbW1lbmRlZCBzZXR1cCBmb3IgcHJvZHVjdGlvbiBhcHBsaWNhdGlvbnMpPC9saT5cbiAgICogIDxsaT4gdGhlIGtleXdvcmQgJ2d1ZXN0JyB0byBjb25uZWN0IGFzIFtndWVzdCB1c2VyXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvYXV0aGxlc3NfdXNlcnMvI2d1ZXN0LXVzZXJzKSA8L2xpPlxuICAgKiAgPGxpPiB0aGUga2V5d29yZCAnYW5vbnltb3VzJyB0byBjb25uZWN0IGFzIFthbm9ueW1vdXMgdXNlcl0oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2F1dGhsZXNzX3VzZXJzLyNhbm9ueW1vdXMtdXNlcnMpIDwvbGk+XG4gICAqICA8L3VsPlxuICAgKiBAcGFyYW0gY2xpZW50T3B0aW9ucyBTZXR0aW5nIHRvIHByb3ZpZGUgdG8gdGhlIFN0cmVhbSBjbGllbnQgaW5zdGFuY2VcbiAgICovXG4gIGFzeW5jIGluaXQoXG4gICAgYXBpS2V5OiBzdHJpbmcsXG4gICAgdXNlck9ySWQ6IHN0cmluZyB8IE93blVzZXJSZXNwb25zZTxUPiB8IFVzZXJSZXNwb25zZTxUPiB8IHVuZGVmaW5lZCxcbiAgICB1c2VyVG9rZW5PclByb3ZpZGVyOiBUb2tlbk9yUHJvdmlkZXIsXG4gICAgY2xpZW50T3B0aW9ucz86IFN0cmVhbUNoYXRPcHRpb25zICYge1xuICAgICAgdHJhY2tQZW5kaW5nQ2hhbm5lbEludml0ZXM/OiBib29sZWFuO1xuICAgIH1cbiAgKTogQ29ubmVjdEFQSVJlc3BvbnNlPFQ+IHtcbiAgICBpZiAodGhpcy5jaGF0Q2xpZW50ICYmIHRoaXMuY2hhdENsaWVudC5rZXkgIT09IGFwaUtleSkge1xuICAgICAgdGhpcy5hcHBTZXR0aW5nc1N1YmplY3QubmV4dCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5hcHBTZXR0aW5nc1Byb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMudHJhY2tQZW5kaW5nQ2hhbm5lbEludml0ZXMgPVxuICAgICAgY2xpZW50T3B0aW9ucz8udHJhY2tQZW5kaW5nQ2hhbm5lbEludml0ZXMgPT09IHRydWU7XG4gICAgdGhpcy5jaGF0Q2xpZW50ID0gU3RyZWFtQ2hhdC5nZXRJbnN0YW5jZTxUPihhcGlLZXksIGNsaWVudE9wdGlvbnMpO1xuICAgIGlmICgnc2RrSWRlbnRpZmllcicgaW4gdGhpcy5jaGF0Q2xpZW50KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgICAodGhpcy5jaGF0Q2xpZW50IGFzIGFueSkuc2RrSWRlbnRpZmllciA9IHtcbiAgICAgICAgbmFtZTogJ2FuZ3VsYXInLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdXNlckFnZW50ID0gdGhpcy5jaGF0Q2xpZW50LmdldFVzZXJBZ2VudCgpO1xuICAgICAgaWYgKCF1c2VyQWdlbnQuaW5jbHVkZXMoJ3N0cmVhbS1jaGF0LWFuZ3VsYXInKSkge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHVzZXJBZ2VudC5zcGxpdCgnLScpO1xuICAgICAgICBjb25zdCBqc1ZlcnNpb24gPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSA/PyAnMC4wLjAnO1xuICAgICAgICB0aGlzLmNoYXRDbGllbnQuc2V0VXNlckFnZW50KFxuICAgICAgICAgIGBzdHJlYW0tY2hhdC1hbmd1bGFyLXYke3ZlcnNpb259LWxsYy12JHtqc1ZlcnNpb259YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoYXRDbGllbnQucmVjb3ZlclN0YXRlT25SZWNvbm5lY3QgPSBmYWxzZTtcbiAgICB0aGlzLmNoYXRDbGllbnQuZGV2VG9rZW47XG4gICAgbGV0IHJlc3VsdDtcbiAgICBhd2FpdCB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdHlwZW9mIHVzZXJPcklkID09PSAnc3RyaW5nJyA/IHsgaWQ6IHVzZXJPcklkIH0gOiB1c2VyT3JJZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBndWVzdDogKCkgPT4gdGhpcy5jaGF0Q2xpZW50LnNldEd1ZXN0VXNlcih1c2VyISksXG4gICAgICAgICAgICBhbm9ueW1vdXM6ICgpID0+IHRoaXMuY2hhdENsaWVudC5jb25uZWN0QW5vbnltb3VzVXNlcigpLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIH1bYCR7dXNlclRva2VuT3JQcm92aWRlcn1gXSA/P1xuICAgICAgICAgICgoKSA9PiB0aGlzLmNoYXRDbGllbnQuY29ubmVjdFVzZXIodXNlciEsIHVzZXJUb2tlbk9yUHJvdmlkZXIpKVxuICAgICAgICApKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkUGVybWFuZW50Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGNvbm5lY3RpbmcgdG8gY2hhdCwgcmVmcmVzaCB0aGUgcGFnZSB0byB0cnkgYWdhaW4uJyxcbiAgICAgICAgICAnZXJyb3InXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KFxuICAgICAgICB0aGlzLmNoYXRDbGllbnQudXNlciA/IHsgLi4udGhpcy5jaGF0Q2xpZW50LnVzZXIgfSA6IHVuZGVmaW5lZFxuICAgICAgKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkICYmIHRoaXMudHJhY2tQZW5kaW5nQ2hhbm5lbEludml0ZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWxzID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5Q2hhbm5lbHMoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnZpdGU6ICdwZW5kaW5nJyxcbiAgICAgICAgICBtZW1iZXJzOiB7ICRpbjogW3RoaXMuY2hhdENsaWVudC51c2VyPy5pZF0gfSxcbiAgICAgICAgfSBhcyB1bmtub3duIGFzIENoYW5uZWxGaWx0ZXJzPFQ+IC8vIFRPRE86IGZpbmQgb3V0IHdoeSB3ZSBuZWVkIHRoaXMgdHlwZWNhc3RcbiAgICAgICk7XG4gICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KGNoYW5uZWxzKTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQub24oKGUpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVVc2VyKGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVBlbmRpbmdJbnZpdGVzKGUpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QubmV4dCh7XG4gICAgICAgICAgZXZlbnRUeXBlOiBlLnR5cGUsXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICAgIGxldCByZW1vdmVOb3RpZmljYXRpb246IHVuZGVmaW5lZCB8ICgoKSA9PiB2b2lkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhdENsaWVudC5vbignY29ubmVjdGlvbi5jaGFuZ2VkJywgKGUpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc09ubGluZSA9IGUub25saW5lO1xuICAgICAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAgICAgaWYgKHJlbW92ZU5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICByZW1vdmVOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9uID1cbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgICAnc3RyZWFtQ2hhdC5Db25uZWN0aW9uIGZhaWx1cmUsIHJlY29ubmVjdGluZyBub3cuLi4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXRlU3ViamVjdC5uZXh0KGlzT25saW5lID8gJ29ubGluZScgOiAnb2ZmbGluZScpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2Nvbm5lY3RzIHRoZSBjdXJyZW50IHVzZXIsIGFuZCBjbG9zZXMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLiBVc2VmdWwgd2hlbiBkaXNjb25uZWN0aW5nIGEgY2hhdCB1c2VyLCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCBbYHJlc2V0YF0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9zZXJ2aWNlcy9DaGFubmVsU2VydmljZS8jcmVzZXQvKS5cbiAgICovXG4gIGFzeW5jIGRpc2Nvbm5lY3RVc2VyKCkge1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoW10pO1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5kaXNjb25uZWN0VXNlcigpO1xuICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjdXJyZW50IFthcHBsaWNhdGlvbiBzZXR0aW5nc10oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2FwcF9zZXR0aW5nX292ZXJ2aWV3LyksIGlmIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5ncyBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQsIGl0IGRvZXMgbm90aGluZy5cbiAgICovXG4gIGFzeW5jIGdldEFwcFNldHRpbmdzKCkge1xuICAgIGlmICh0aGlzLmFwcFNldHRpbmdzUHJvbWlzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFwcFNldHRpbmdzUHJvbWlzZSA9IHRoaXMuY2hhdENsaWVudC5nZXRBcHBTZXR0aW5ncygpO1xuICAgIHZvaWQgdGhpcy5hcHBTZXR0aW5nc1Byb21pc2UuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmFwcFNldHRpbmdzUHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBjb25zdCBzZXR0aW5ncyA9IGF3YWl0IHRoaXMuYXBwU2V0dGluZ3NQcm9taXNlO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQoKHNldHRpbmdzLmFwcCBhcyBBcHBTZXR0aW5ncykgfHwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgZ2l2ZW4gSUQuIElmIHlvdSB3YW50IHRvIGtub3cgW21vcmUgYWJvdXQgZmxhZ3NdKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9tb2RlcmF0aW9uLykgY2hlY2sgb3V0IHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkXG4gICAqL1xuICBhc3luYyBmbGFnTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5mbGFnTWVzc2FnZShtZXNzYWdlSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGZvciB1c2VycyBpbiB0aGUgYXBwbGljYXRpb24gdGhhdCBoYXZlIElEIG9yIG5hbWUgbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIHNlYXJjaCB0ZXJtXG4gICAqIEBwYXJhbSBzZWFyY2hUZXJtXG4gICAqIEByZXR1cm5zIFRoZSB1c2VycyBtYXRjaGluZyB0aGUgc2VhcmNoXG4gICAqL1xuICBhc3luYyBhdXRvY29tcGxldGVVc2VycyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAoIXNlYXJjaFRlcm0pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5VXNlcnMoe1xuICAgICAgJG9yOiBbXG4gICAgICAgIHsgaWQ6IHsgJGF1dG9jb21wbGV0ZTogc2VhcmNoVGVybSB9IH0sXG4gICAgICAgIHsgbmFtZTogeyAkYXV0b2NvbXBsZXRlOiBzZWFyY2hUZXJtIH0gfSxcbiAgICAgIF0sXG4gICAgfSBhcyBVc2VyRmlsdGVyczxUPik7IC8vIFRPRE86IGZpbmQgb3V0IHdoeSB3ZSBuZWVkIHRoaXMgdHlwZWNhc3RcbiAgICByZXR1cm4gcmVzdWx0LnVzZXJzLmZpbHRlcigodSkgPT4gdS5pZCAhPT0gdGhpcy5jaGF0Q2xpZW50Py51c2VyPy5pZCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBlbmRpbmdJbnZpdGVzKGU6IEV2ZW50PFQ+KSB7XG4gICAgaWYgKCF0aGlzLnRyYWNrUGVuZGluZ0NoYW5uZWxJbnZpdGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlLm1lbWJlcj8udXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudC51c2VyPy5pZCAmJiBlLmNoYW5uZWwpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmdJbnZpdGVzID0gdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlZCcpIHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuY2hhdENsaWVudC5jaGFubmVsKGUuY2hhbm5lbD8udHlwZSwgZS5jaGFubmVsPy5pZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoWy4uLnBlbmRpbmdJbnZpdGVzLCBjaGFubmVsXSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX2FjY2VwdGVkJyB8fFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX3JlamVjdGVkJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGVuZGluZ0ludml0ZXMuZmluZEluZGV4KFxuICAgICAgICAgIChpKSA9PiBpPy5jaWQgPT09IGUuY2hhbm5lbD8uY2lkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBwZW5kaW5nSW52aXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoWy4uLnBlbmRpbmdJbnZpdGVzXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVVzZXIoZTogRXZlbnQ8VD4pIHtcbiAgICBpZiAodHlwZW9mIGUudG90YWxfdW5yZWFkX2NvdW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IHVzZXI6IE93blVzZXJSZXNwb25zZTxUPiB8IFVzZXJSZXNwb25zZTxUPiB8IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXNlclN1YmplY3QucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHUpID0+IHtcbiAgICAgICAgdXNlciA9IHU7XG4gICAgICB9KTtcbiAgICAgIGlmICh1c2VyICYmIHVzZXIudG90YWxfdW5yZWFkX2NvdW50ICE9PSBlLnRvdGFsX3VucmVhZF9jb3VudCkge1xuICAgICAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgdG90YWxfdW5yZWFkX2NvdW50OiBlLnRvdGFsX3VucmVhZF9jb3VudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZS51bnJlYWRfY2hhbm5lbHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgdXNlcjogT3duVXNlclJlc3BvbnNlPFQ+IHwgVXNlclJlc3BvbnNlPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgdGhpcy51c2VyU3ViamVjdC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodSkgPT4ge1xuICAgICAgICB1c2VyID0gdTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHVzZXIgJiYgdXNlci51bnJlYWRfY2hhbm5lbHMgIT09IGUudW5yZWFkX2NoYW5uZWxzKSB7XG4gICAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh7XG4gICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICB1bnJlYWRfY2hhbm5lbHM6IGUudW5yZWFkX2NoYW5uZWxzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlLnVucmVhZF9jb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxldCB1c2VyOiBPd25Vc2VyUmVzcG9uc2U8VD4gfCBVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnVzZXJTdWJqZWN0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCh1KSA9PiB7XG4gICAgICAgIHVzZXIgPSB1O1xuICAgICAgfSk7XG4gICAgICBpZiAodXNlciAmJiB1c2VyLnVucmVhZF9jb3VudCAhPT0gZS51bnJlYWRfY291bnQpIHtcbiAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgIHVucmVhZF9jb3VudDogZS51bnJlYWRfY291bnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBlLnR5cGUgPT09ICd1c2VyLnVwZGF0ZWQnICYmXG4gICAgICB0aGlzLmNoYXRDbGllbnQudXNlciAmJlxuICAgICAgZS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50LnVzZXIuaWRcbiAgICApIHtcbiAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh7IC4uLnRoaXMuY2hhdENsaWVudC51c2VyIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -206,12 +206,7 @@ export class MessageComponent {
|
|
|
206
206
|
});
|
|
207
207
|
}
|
|
208
208
|
this.subscriptions.push(this.messageActionsService.messageMenuOpenedFor$.subscribe((id) => {
|
|
209
|
-
if (
|
|
210
|
-
if (!this.areMessageOptionsOpen) {
|
|
211
|
-
this.messageMenuTrigger?.show();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
else if ((id === undefined || this.message?.id !== id) &&
|
|
209
|
+
if ((id === undefined || this.message?.id !== id) &&
|
|
215
210
|
this.areMessageOptionsOpen) {
|
|
216
211
|
this.messageMenuTrigger?.hide();
|
|
217
212
|
}
|
|
@@ -483,4 +478,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
483
478
|
type: ViewChild,
|
|
484
479
|
args: ['messageBubble']
|
|
485
480
|
}] } });
|
|
486
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBTUwsdUJBQXVCLEVBRXZCLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxFQUE0QixJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVExQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUV4Qzs7R0FFRztBQU9ILE1BQU0sT0FBTyxnQkFBZ0I7SUFvRTNCLFlBQ1UsaUJBQW9DLEVBQ3BDLGNBQThCLEVBQy9CLHNCQUE4QyxFQUM3QyxLQUF3QixFQUN4QixVQUE2QixFQUM5QixxQkFBNEMsRUFDM0MsTUFBYyxFQUNkLGdCQUFrQztRQVBsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzdDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzlCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFyRTVDOztXQUVHO1FBQ00sMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBSzlDOztXQUVH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QUFTO3VCQUFDLG9CQUFvQjtnQkFDSCxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEFmdGVyVmlld0luaXQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF0dGFjaG1lbnQsIFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBBdHRhY2htZW50TGlzdENvbnRleHQsXG4gIE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCxcbiAgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIFN0cmVhbU1lc3NhZ2UsXG4gIERlbGl2ZXJlZFN0YXR1c0NvbnRleHQsXG4gIFNlbmRpbmdTdGF0dXNDb250ZXh0LFxuICBSZWFkU3RhdHVzQ29udGV4dCxcbiAgU3lzdGVtTWVzc2FnZUNvbnRleHQsXG4gIEN1c3RvbU1ldGFkYXRhQ29udGV4dCxcbiAgTWVzc2FnZVRleHRDb250ZXh0LFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgbGlzdFVzZXJzIH0gZnJvbSAnLi4vbGlzdC11c2Vycyc7XG5pbXBvcnQgeyBEYXRlUGFyc2VyU2VydmljZSB9IGZyb20gJy4uL2RhdGUtcGFyc2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTmd4RmxvYXRVaUNvbnRlbnRDb21wb25lbnQsXG4gIE5neEZsb2F0VWlMb29zZURpcmVjdGl2ZSxcbn0gZnJvbSAnbmd4LWZsb2F0LXVpJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnLi4vaXMtc2FmYXJpJztcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VgIGNvbXBvbmVudCBkaXNwbGF5cyBhIG1lc3NhZ2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgc2VuZGVyIGFuZCBkYXRlLCBhbmQgZW5hYmxlcyBbaW50ZXJhY3Rpb24gd2l0aCB0aGUgbWVzc2FnZSAoaS5lLiBlZGl0IG9yIHJlYWN0KV0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9jb25jZXB0cy9tZXNzYWdlLWludGVyYWN0aW9ucy8pLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBbY2hhbm5lbCBjYXBhYmlsaXRpZXNdKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8pIHRoYXQgYXJlIGVuYWJsZWQgZm9yIHRoZSBjdXJyZW50IHVzZXIsIHRoZSBsaXN0IG9mIFtzdXBwb3J0ZWQgaW50ZXJhY3Rpb25zXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbmNlcHRzL21lc3NhZ2UtaW50ZXJhY3Rpb25zLykgY2FuIGJlIGZvdW5kIGluIG91ciBtZXNzYWdlIGludGVyYWN0aW9uIGd1aWRlLiBVbmF0aG9yaXplZCBhY3Rpb25zIHdvbid0IGJlIGRpc3BsYXllZCBvbiB0aGUgVUkuIFRoZSBbYE1lc3NhZ2VMaXN0YF0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9jb21wb25lbnRzL01lc3NhZ2VMaXN0Q29tcG9uZW50LykgY29tcG9uZW50IGF1dG9tYXRpY2FsbHkgc2V0cyB0aGlzIGJhc2VkIG9uIFtjaGFubmVsIGNhcGFiaWxpdGllc10oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLykuXG4gICAqL1xuICBASW5wdXQoKSBlbmFibGVkTWVzc2FnZUFjdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBtZXNzYWdlIHN0YXR1cyAoc2VuZGluZywgc2VudCwgd2hvIHJlYWQgdGhlIG1lc3NhZ2UpIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGlzTGFzdFNlbnRNZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgbWVzc2FnZSBpcyBiZWluZyBkaXNwYWx5ZWQgaW4gYSBjaGFubmVsIG9yIGluIGEgW3RocmVhZF0oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3RocmVhZHMvKS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICd0aHJlYWQnIHwgJ21haW4nID0gJ21haW4nO1xuICAvKipcbiAgICogSGlnaGxpZ2h0aW5nIGlzIHVzZWQgdG8gYWRkIHZpc3VhbCBlbXBoYXNpemUgdG8gYSBtZXNzYWdlIHdoZW4ganVtcGluZyB0byB0aGUgbWVzc2FnZVxuICAgKi9cbiAgQElucHV0KCkgaXNIaWdobGlnaHRlZCA9IGZhbHNlO1xuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gdGhlIG1lc3NhZ2UgbGlzdCBpcyBzY3JvbGxlZCwgaXQncyB1c2VkIHRvIHByZXZlbnQgb3BlbmluZyB0aGUgbWVzc2FnZSBtZW51IHdoaWxlIHNjcm9sbCBpcyBpbiBwcm9ncmVzc1xuICAgKi9cbiAgQElucHV0KCkgc2Nyb2xsJD86IE9ic2VydmFibGU8dm9pZD47XG4gIGNhblJlY2VpdmVSZWFkRXZlbnRzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjYW5SZWFjdFRvTWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0ZWRGbGFnT3BlbmVkID0gZmFsc2U7XG4gIHNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZSA9IGZhbHNlO1xuICBkaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQ6ICdvcmlnaW5hbCcgfCAndHJhbnNsYXRpb24nID0gJ29yaWdpbmFsJztcbiAgaW1hZ2VBdHRhY2htZW50TW9kYWxTdGF0ZTogJ29wZW5lZCcgfCAnY2xvc2VkJyA9ICdjbG9zZWQnO1xuICBzaG91bGREaXNwbGF5VGhyZWFkTGluayA9IGZhbHNlO1xuICBpc1NlbnRCeUN1cnJlbnRVc2VyID0gZmFsc2U7XG4gIHJlYWRCeVRleHQgPSAnJztcbiAgbGFzdFJlYWRVc2VyOiBVc2VyUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGlzT25seVJlYWRCeU1lID0gZmFsc2U7XG4gIGlzUmVhZEJ5TXVsdGlwbGVVc2VycyA9IGZhbHNlO1xuICBpc01lc3NhZ2VEZWxpdmVyZWRBbmRSZWFkID0gZmFsc2U7XG4gIHBhcnNlZERhdGUgPSAnJztcbiAgcGFzZWRFZGl0ZWREYXRlID0gJyc7XG4gIGFyZU9wdGlvbnNWaXNpYmxlID0gZmFsc2U7XG4gIGhhc0F0dGFjaG1lbnQgPSBmYWxzZTtcbiAgaGFzUmVhY3Rpb25zID0gZmFsc2U7XG4gIHJlcGx5Q291bnRQYXJhbTogeyByZXBseUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQgfSA9IHtcbiAgICByZXBseUNvdW50OiB1bmRlZmluZWQsXG4gIH07XG4gIGFyZU1lc3NhZ2VPcHRpb25zT3BlbiA9IGZhbHNlO1xuICBjYW5EaXNwbGF5UmVhZFN0YXR1cyA9IGZhbHNlO1xuICBoYXNUb3VjaFN1cHBvcnQgPSBpc1NhZmFyaSgpXG4gICAgPyAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMFxuICAgIDogd2luZG93Lm1hdGNoTWVkaWEoJyhhbnktaG92ZXI6IG5vbmUpJykubWF0Y2hlcztcbiAgcHJpdmF0ZSBxdW90ZWRNZXNzYWdlQXR0YWNobWVudHM6IEF0dGFjaG1lbnRbXSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHVzZXJJZD86IHN0cmluZztcbiAgQFZpZXdDaGlsZCgnbWVzc2FnZU1lbnVUcmlnZ2VyJylcbiAgbWVzc2FnZU1lbnVUcmlnZ2VyITogTmd4RmxvYXRVaUxvb3NlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCdtZXNzYWdlTWVudUZsb2F0JylcbiAgbWVzc2FnZU1lbnVGbG9hdCE6IE5neEZsb2F0VWlDb250ZW50Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtZXNzYWdlVGV4dEVsZW1lbnQnKSBtZXNzYWdlVGV4dEVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbWVzc2FnZUJ1YmJsZScpIG1lc3NhZ2VCdWJibGU/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgcHJpdmF0ZSBzaG93TWVzc2FnZU1lbnVUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgc2hvdWxkUHJldmVudE1lc3NhZ2VNZW51Q2xvc2UgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAwO1xuICBwcml2YXRlIGNoYW5uZWxNZW1iZXJDb3VudD86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwdWJsaWMgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRhdGVQYXJzZXI6IERhdGVQYXJzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBtZXNzYWdlQWN0aW9uc1NlcnZpY2U6IE1lc3NhZ2VBY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgZ2V0IHZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudDtcbiAgfVxuXG4gIHNldCB2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudChjb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSBjb3VudDtcbiAgICBpZiAodGhpcy5hcmVPcHRpb25zVmlzaWJsZSAmJiB0aGlzLl92aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy5hcmVPcHRpb25zVmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS51c2VyJC5zdWJzY3JpYmUoKHUpID0+IHtcbiAgICAgICAgaWYgKHU/LmlkICE9PSB0aGlzLnVzZXJJZCkge1xuICAgICAgICAgIHRoaXMudXNlcklkID0gdT8uaWQ7XG4gICAgICAgICAgdGhpcy5zZXRJc1NlbnRCeUN1cnJlbnRVc2VyKCk7XG4gICAgICAgICAgdGhpcy5zZXRMYXN0UmVhZFVzZXIoKTtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZSkge1xuICAgICAgICAgIGNvbnN0IG51bWJlck9mRW5hYmxlZEFjdGlvbnMgPVxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuZ2V0QXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zQ291bnQoXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG51bWJlck9mRW5hYmxlZEFjdGlvbnMgIT09IHRoaXMudmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSBudW1iZXJPZkVuYWJsZWRBY3Rpb25zO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoKGFjdGl2ZUNoYW5uZWwpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q2hhbm5lbE1lbWJlckNvdW50ID0gYWN0aXZlQ2hhbm5lbD8uZGF0YT8ubWVtYmVyX2NvdW50O1xuICAgICAgICBpZiAobmV3Q2hhbm5lbE1lbWJlckNvdW50ICE9PSB0aGlzLmNoYW5uZWxNZW1iZXJDb3VudCkge1xuICAgICAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZVRleHQgPVxuICAgICAgICAgICAgdGhpcy5jaGFubmVsTWVtYmVyQ291bnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgbmV3Q2hhbm5lbE1lbWJlckNvdW50ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKCh0aGlzLmNoYW5uZWxNZW1iZXJDb3VudCA8PSAxMDAwICYmIG5ld0NoYW5uZWxNZW1iZXJDb3VudCA+IDEwMCkgfHxcbiAgICAgICAgICAgICAgKHRoaXMuY2hhbm5lbE1lbWJlckNvdW50ID4gMTAwICYmIG5ld0NoYW5uZWxNZW1iZXJDb3VudCA8PSAxMDApKTtcbiAgICAgICAgICB0aGlzLmNoYW5uZWxNZW1iZXJDb3VudCA9IGFjdGl2ZUNoYW5uZWw/LmRhdGE/Lm1lbWJlcl9jb3VudDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgJiZcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5jaWQgPT09IGFjdGl2ZUNoYW5uZWw/LmNpZCAmJlxuICAgICAgICAgICAgc2hvdWxkVXBkYXRlVGV4dFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSZWFkQnlUZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQgPSB0aGlzLm1lc3NhZ2U/LnRyYW5zbGF0aW9uXG4gICAgICAgID8gJ3RyYW5zbGF0aW9uJ1xuICAgICAgICA6ICdvcmlnaW5hbCc7XG4gICAgICB0aGlzLnNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZSA9XG4gICAgICAgIHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAndHJhbnNsYXRpb24nO1xuICAgICAgY29uc3Qgb3JpZ2luYWxBdHRhY2htZW50cyA9IHRoaXMubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzO1xuICAgICAgdGhpcy5xdW90ZWRNZXNzYWdlQXR0YWNobWVudHMgPVxuICAgICAgICBvcmlnaW5hbEF0dGFjaG1lbnRzICYmIG9yaWdpbmFsQXR0YWNobWVudHMubGVuZ3RoXG4gICAgICAgICAgPyBbb3JpZ2luYWxBdHRhY2htZW50c1swXV1cbiAgICAgICAgICA6IFtdO1xuICAgICAgdGhpcy5zZXRJc1NlbnRCeUN1cnJlbnRVc2VyKCk7XG4gICAgICB0aGlzLnNldExhc3RSZWFkVXNlcigpO1xuICAgICAgdGhpcy51cGRhdGVSZWFkQnlUZXh0KCk7XG4gICAgICB0aGlzLmlzT25seVJlYWRCeU1lID0gISEoXG4gICAgICAgIHRoaXMubWVzc2FnZSAmJlxuICAgICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5ICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkubGVuZ3RoID09PSAwXG4gICAgICApO1xuICAgICAgdGhpcy5pc1JlYWRCeU11bHRpcGxlVXNlcnMgPSAhIShcbiAgICAgICAgdGhpcy5tZXNzYWdlICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPiAxXG4gICAgICApO1xuICAgICAgdGhpcy5pc01lc3NhZ2VEZWxpdmVyZWRBbmRSZWFkID0gISEoXG4gICAgICAgIHRoaXMubWVzc2FnZSAmJlxuICAgICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5ICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdyZWNlaXZlZCcgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPiAwXG4gICAgICApO1xuICAgICAgdGhpcy5wYXJzZWREYXRlID1cbiAgICAgICAgKHRoaXMubWVzc2FnZSAmJlxuICAgICAgICAgIHRoaXMubWVzc2FnZS5jcmVhdGVkX2F0ICYmXG4gICAgICAgICAgdGhpcy5kYXRlUGFyc2VyLnBhcnNlRGF0ZVRpbWUodGhpcy5tZXNzYWdlLmNyZWF0ZWRfYXQpKSB8fFxuICAgICAgICAnJztcbiAgICAgIHRoaXMucGFzZWRFZGl0ZWREYXRlID1cbiAgICAgICAgKHRoaXMubWVzc2FnZSAmJlxuICAgICAgICAgIHRoaXMubWVzc2FnZS5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdCAmJlxuICAgICAgICAgIHRoaXMuZGF0ZVBhcnNlci5wYXJzZURhdGVUaW1lKFxuICAgICAgICAgICAgbmV3IERhdGUodGhpcy5tZXNzYWdlLm1lc3NhZ2VfdGV4dF91cGRhdGVkX2F0KVxuICAgICAgICAgICkpIHx8XG4gICAgICAgICcnO1xuICAgICAgdGhpcy5oYXNBdHRhY2htZW50ID1cbiAgICAgICAgISF0aGlzLm1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmICEhdGhpcy5tZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aDtcbiAgICAgIHRoaXMuaGFzUmVhY3Rpb25zID1cbiAgICAgICAgISF0aGlzLm1lc3NhZ2U/LnJlYWN0aW9uX2dyb3VwcyAmJlxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm1lc3NhZ2UucmVhY3Rpb25fZ3JvdXBzKS5sZW5ndGggPiAwO1xuICAgICAgdGhpcy5yZXBseUNvdW50UGFyYW0gPSB7IHJlcGx5Q291bnQ6IHRoaXMubWVzc2FnZT8ucmVwbHlfY291bnQgfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zKSB7XG4gICAgICB0aGlzLmNhblJlYWN0VG9NZXNzYWdlID1cbiAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMuaW5kZXhPZignc2VuZC1yZWFjdGlvbicpICE9PSAtMTtcbiAgICAgIHRoaXMuY2FuUmVjZWl2ZVJlYWRFdmVudHMgPVxuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICAgIHRoaXMuY2FuRGlzcGxheVJlYWRTdGF0dXMgPVxuICAgICAgICB0aGlzLmNhblJlY2VpdmVSZWFkRXZlbnRzICE9PSBmYWxzZSAmJlxuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyB8fCBjaGFuZ2VzLm1vZGUpIHtcbiAgICAgIHRoaXMuc2hvdWxkRGlzcGxheVRocmVhZExpbmsgPVxuICAgICAgICAhIXRoaXMubWVzc2FnZT8ucmVwbHlfY291bnQgJiYgdGhpcy5tb2RlICE9PSAndGhyZWFkJztcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLm1vZGUgfHwgY2hhbmdlcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMpIHtcbiAgICAgIHRoaXMuYXJlT3B0aW9uc1Zpc2libGUgPSB0aGlzLm1lc3NhZ2VcbiAgICAgICAgPyAhKFxuICAgICAgICAgICAgIXRoaXMubWVzc2FnZS50eXBlIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2Vycm9yJyB8fFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLnR5cGUgPT09ICdzeXN0ZW0nIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2RlbGV0ZWQnIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2VwaGVtZXJhbCcgfHxcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdmYWlsZWQnIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2Uuc3RhdHVzID09PSAnc2VuZGluZycgfHxcbiAgICAgICAgICAgICh0aGlzLm1vZGUgPT09ICd0aHJlYWQnICYmICF0aGlzLm1lc3NhZ2UucGFyZW50X2lkKSB8fFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLmRlbGV0ZWRfYXQgfHxcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgIClcbiAgICAgICAgOiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucykge1xuICAgICAgaWYgKHRoaXMubWVzc2FnZSkge1xuICAgICAgICB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID1cbiAgICAgICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5nZXRBdXRob3JpemVkTWVzc2FnZUFjdGlvbnNDb3VudChcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaGFzVG91Y2hTdXBwb3J0ICYmIHRoaXMubWVzc2FnZUJ1YmJsZT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyTWVudVRyaWdnZXJFdmVudEhhbmRsZXJzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5tZXNzYWdlTWVudU9wZW5lZEZvciQuc3Vic2NyaWJlKChpZCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICYmIHRoaXMubWVzc2FnZS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuYXJlTWVzc2FnZU9wdGlvbnNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VNZW51VHJpZ2dlcj8uc2hvdygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAoaWQgPT09IHVuZGVmaW5lZCB8fCB0aGlzLm1lc3NhZ2U/LmlkICE9PSBpZCkgJiZcbiAgICAgICAgICB0aGlzLmFyZU1lc3NhZ2VPcHRpb25zT3BlblxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VNZW51VHJpZ2dlcj8uaGlkZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICBpZiAodGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxuICBtb3VzZVB1c2hlZERvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5oYXNUb3VjaFN1cHBvcnQgfHxcbiAgICAgIGV2ZW50LmJ1dHRvbiAhPT0gMCB8fFxuICAgICAgIXRoaXMuYXJlT3B0aW9uc1Zpc2libGVcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGFydE1lc3NhZ2VNZW51U2hvd1RpbWVyKHsgZnJvbVRvdWNoOiBmYWxzZSB9KTtcbiAgfVxuXG4gIG1vdXNlUmVsZWFzZWQoKSB7XG4gICAgdGhpcy5zdG9wTWVzc2FnZU1lbnVTaG93VGltZXIoKTtcbiAgfVxuXG4gIHRvdWNoU3RhcnRlZCgpIHtcbiAgICBpZiAoIXRoaXMuYXJlT3B0aW9uc1Zpc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGFydE1lc3NhZ2VNZW51U2hvd1RpbWVyKHsgZnJvbVRvdWNoOiB0cnVlIH0pO1xuICB9XG5cbiAgdG91Y2hFbmRlZCgpIHtcbiAgICB0aGlzLnN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpO1xuICB9XG5cbiAgbWVzc2FnZUJ1YmJsZUNsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmhhc1RvdWNoU3VwcG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG91bGRQcmV2ZW50TWVzc2FnZU1lbnVDbG9zZSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnNob3VsZFByZXZlbnRNZXNzYWdlTWVudUNsb3NlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFyZU1lc3NhZ2VPcHRpb25zT3Blbikge1xuICAgICAgdGhpcy5tZXNzYWdlTWVudVRyaWdnZXI/LmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBtZXNzYWdlT3B0aW9uc0J1dHRvbkNsaWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbkNsaWNrSGFuZGxlcikge1xuICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgICBlbmFibGVkQWN0aW9uczogdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMsXG4gICAgICAgIGN1c3RvbUFjdGlvbnM6IHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLmdldFZhbHVlKCksXG4gICAgICAgIGlzTWluZTogdGhpcy5pc1NlbnRCeUN1cnJlbnRVc2VyLFxuICAgICAgICBtZXNzYWdlVGV4dEh0bWxFbGVtZW50OiB0aGlzLm1lc3NhZ2VUZXh0RWxlbWVudD8ubmF0aXZlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFyZU1lc3NhZ2VPcHRpb25zT3BlbiA9ICF0aGlzLmFyZU1lc3NhZ2VPcHRpb25zT3BlbjtcbiAgICB9XG4gIH1cblxuICBtZXNzYWdlQWN0aW9uc0JveENsaWNrZWQoZmxvYXRpbmdDb250ZW50OiBOZ3hGbG9hdFVpQ29udGVudENvbXBvbmVudCkge1xuICAgIGZsb2F0aW5nQ29udGVudC5oaWRlKCk7XG4gIH1cblxuICBnZXRBdHRhY2htZW50TGlzdENvbnRleHQoKTogQXR0YWNobWVudExpc3RDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZUlkOiB0aGlzLm1lc3NhZ2U/LmlkIHx8ICcnLFxuICAgICAgYXR0YWNobWVudHM6IHRoaXMubWVzc2FnZT8uYXR0YWNobWVudHMgfHwgW10sXG4gICAgICBwYXJlbnRNZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8ucGFyZW50X2lkLFxuICAgICAgaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcjogKHN0YXRlKSA9PlxuICAgICAgICAodGhpcy5pbWFnZUF0dGFjaG1lbnRNb2RhbFN0YXRlID0gc3RhdGUpLFxuICAgIH07XG4gIH1cblxuICBnZXRNZXNzYWdlQ29udGV4dCgpOiBTeXN0ZW1NZXNzYWdlQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMsXG4gICAgICBpc0hpZ2hsaWdodGVkOiB0aGlzLmlzSGlnaGxpZ2h0ZWQsXG4gICAgICBpc0xhc3RTZW50TWVzc2FnZTogdGhpcy5pc0xhc3RTZW50TWVzc2FnZSxcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIGN1c3RvbUFjdGlvbnM6IHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLmdldFZhbHVlKCksXG4gICAgICBwYXJzZWREYXRlOiB0aGlzLnBhcnNlZERhdGUsXG4gICAgICBzY3JvbGwkOiB0aGlzLnNjcm9sbCQsXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VUZXh0Q29udGV4dCgpOiBNZXNzYWdlVGV4dENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBpc1F1b3RlZDogZmFsc2UsXG4gICAgICBzaG91bGRUcmFuc2xhdGU6IHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAndHJhbnNsYXRpb24nLFxuICAgIH07XG4gIH1cblxuICBnZXRRdW90ZWRNZXNzYWdlVGV4dENvbnRleHQoKTogTWVzc2FnZVRleHRDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlPy5xdW90ZWRfbWVzc2FnZSxcbiAgICAgIGlzUXVvdGVkOiB0cnVlLFxuICAgICAgc2hvdWxkVHJhbnNsYXRlOiB0aGlzLmRpc3BsYXllZE1lc3NhZ2VUZXh0Q29udGVudCA9PT0gJ3RyYW5zbGF0aW9uJyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0UXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRMaXN0Q29udGV4dCgpOiBBdHRhY2htZW50TGlzdENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmlkIHx8ICcnLFxuICAgICAgYXR0YWNobWVudHM6IHRoaXMucXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzISxcbiAgICAgIHBhcmVudE1lc3NhZ2VJZDogdGhpcz8ubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnBhcmVudF9pZCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TWVzc2FnZVJlYWN0aW9uc0NvbnRleHQoKTogTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHRoaXMubWVzc2FnZT8ucmVhY3Rpb25fY291bnRzIHx8IHt9LFxuICAgICAgbGF0ZXN0UmVhY3Rpb25zOiB0aGlzLm1lc3NhZ2U/LmxhdGVzdF9yZWFjdGlvbnMgfHwgW10sXG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8uaWQsXG4gICAgICBvd25SZWFjdGlvbnM6IHRoaXMubWVzc2FnZT8ub3duX3JlYWN0aW9ucyB8fCBbXSxcbiAgICAgIG1lc3NhZ2VSZWFjdGlvbkdyb3VwczogdGhpcy5tZXNzYWdlPy5yZWFjdGlvbl9ncm91cHMgfHwge30sXG4gICAgfTtcbiAgfVxuXG4gIG1lc3NhZ2VDbGlja2VkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJlxuICAgICAgdGhpcy5tZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwM1xuICAgICkge1xuICAgICAgdGhpcy5yZXNlbmRNZXNzYWdlKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMubWVzc2FnZT8udHlwZSA9PT0gJ2Vycm9yJyAmJlxuICAgICAgdGhpcy5tZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHNcbiAgICApIHtcbiAgICAgIHRoaXMub3Blbk1lc3NhZ2VCb3VuY2VQcm9tcHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0VkaXRlZEZsYWdPcGVuZWQgPSAhdGhpcy5pc0VkaXRlZEZsYWdPcGVuZWQ7XG4gICAgfVxuICB9XG5cbiAgcmVzZW5kTWVzc2FnZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UucmVzZW5kTWVzc2FnZSh0aGlzLm1lc3NhZ2UhKTtcbiAgfVxuXG4gIHNldEFzQWN0aXZlUGFyZW50TWVzc2FnZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKHRoaXMubWVzc2FnZSk7XG4gIH1cblxuICBnZXRNZXNzYWdlQWN0aW9uc0JveENvbnRleHQoKTogTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNNaW5lOiB0aGlzLmlzU2VudEJ5Q3VycmVudFVzZXIsXG4gICAgICBlbmFibGVkQWN0aW9uczogdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMsXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBtZXNzYWdlVGV4dEh0bWxFbGVtZW50OiB0aGlzLm1lc3NhZ2VUZXh0RWxlbWVudD8ubmF0aXZlRWxlbWVudCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVsaXZlcmVkU3RhdHVzQ29udGV4dCgpOiBEZWxpdmVyZWRTdGF0dXNDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlISxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U2VuZGluZ1N0YXR1c0NvbnRleHQoKTogU2VuZGluZ1N0YXR1c0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UhLFxuICAgIH07XG4gIH1cblxuICBnZXRSZWFkU3RhdHVzQ29udGV4dCgpOiBSZWFkU3RhdHVzQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSEsXG4gICAgICByZWFkQnlUZXh0OiB0aGlzLnJlYWRCeVRleHQsXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VNZXRhZGF0YUNvbnRleHQoKTogQ3VzdG9tTWV0YWRhdGFDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlISxcbiAgICB9O1xuICB9XG5cbiAganVtcFRvTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZywgcGFyZW50TWVzc2FnZUlkPzogc3RyaW5nKSB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmp1bXBUb01lc3NhZ2UobWVzc2FnZUlkLCBwYXJlbnRNZXNzYWdlSWQpO1xuICB9XG5cbiAgb3Blbk1lc3NhZ2VCb3VuY2VQcm9tcHQoKSB7XG4gICAgdGhpcy5jaGFubmVsU2VydmljZS5ib3VuY2VkTWVzc2FnZSQubmV4dCh0aGlzLm1lc3NhZ2UpO1xuICB9XG5cbiAgZGlzcGxheVRyYW5zbGF0ZWRNZXNzYWdlKCkge1xuICAgIHRoaXMuc2hvdWxkRGlzcGxheVRyYW5zbGF0aW9uTm90aWNlID0gdHJ1ZTtcbiAgICB0aGlzLmRpc3BsYXllZE1lc3NhZ2VUZXh0Q29udGVudCA9ICd0cmFuc2xhdGlvbic7XG4gIH1cblxuICBkaXNwbGF5T3JpZ2luYWxNZXNzYWdlKCkge1xuICAgIHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID0gJ29yaWdpbmFsJztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmVhZEJ5VGV4dCgpIHtcbiAgICBjb25zdCBvdGhlcnMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICdzdHJlYW1DaGF0LmFuZCBvdGhlcnMnXG4gICAgKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgaGFzTW9yZVRoYW4xMDBNZW1iZXJzID0gKHRoaXMuY2hhbm5lbE1lbWJlckNvdW50ID8/IDApID4gMTAwO1xuICAgIHRoaXMucmVhZEJ5VGV4dCA9IHRoaXMubWVzc2FnZT8ucmVhZEJ5XG4gICAgICA/IGxpc3RVc2Vycyh0aGlzLm1lc3NhZ2UucmVhZEJ5LCAhaGFzTW9yZVRoYW4xMDBNZW1iZXJzLCBvdGhlcnMpXG4gICAgICA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJc1NlbnRCeUN1cnJlbnRVc2VyKCkge1xuICAgIHRoaXMuaXNTZW50QnlDdXJyZW50VXNlciA9IHRoaXMubWVzc2FnZT8udXNlcj8uaWQgPT09IHRoaXMudXNlcklkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXN0UmVhZFVzZXIoKSB7XG4gICAgdGhpcy5sYXN0UmVhZFVzZXIgPSB0aGlzLm1lc3NhZ2U/LnJlYWRCeT8uZmlsdGVyKFxuICAgICAgKHUpID0+IHUuaWQgIT09IHRoaXMudXNlcklkXG4gICAgKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRNZXNzYWdlTWVudVNob3dUaW1lcihvcHRpb25zOiB7IGZyb21Ub3VjaDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5zdG9wTWVzc2FnZU1lbnVTaG93VGltZXIoKTtcbiAgICBpZiAodGhpcy5zY3JvbGwkKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5zY3JvbGwkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgICAgICAgIGN1c3RvbUFjdGlvbnM6IHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLmdldFZhbHVlKCksXG4gICAgICAgICAgICBpc01pbmU6IHRoaXMuaXNTZW50QnlDdXJyZW50VXNlcixcbiAgICAgICAgICAgIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IHRoaXMubWVzc2FnZVRleHRFbGVtZW50Py5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNob3VsZFByZXZlbnRNZXNzYWdlTWVudUNsb3NlID0gIW9wdGlvbnMuZnJvbVRvdWNoO1xuICAgICAgICAgIC8vIEZpeCBmb3IgaU9TIFNhZmFyaTogaU9TIFNhZmFyaSB3b24ndCBjbG9zZSB0aGUgaW5wdXQgaWYgd2Ugb3BlbiBtZXNzYWdlIG1lbnVcbiAgICAgICAgICAvLyBUaGUgdmlydHVhbCBrZXlib2FyZCBjYW4gaGlkZSBwYXJ0cyBvZiB0aGUgbWVzc2FnZSBtZW51LCBzbyB3ZSBjbG9zZSB0aGUgaW5wdXQgaGVyZVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIHR5cGVvZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5ibHVyICE9PVxuICAgICAgICAgICAgICAndW5kZWZpbmVkJ1xuICAgICAgICAgIClcbiAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmJsdXIoKTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VNZW51VHJpZ2dlci5zaG93KCk7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UubWVzc2FnZU1lbnVPcGVuZWRGb3IkLm5leHQoXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2U/LmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlTWVudVRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICB9LCA0MDApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3Rlck1lbnVUcmlnZ2VyRXZlbnRIYW5kbGVycygpIHtcbiAgICB0aGlzLm1lc3NhZ2VCdWJibGUhLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsICgpID0+XG4gICAgICB0aGlzLnRvdWNoU3RhcnRlZCgpXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VCdWJibGUhLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCAoKSA9PlxuICAgICAgdGhpcy50b3VjaEVuZGVkKClcbiAgICApO1xuICAgIHRoaXMubWVzc2FnZUJ1YmJsZSEubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoZSkgPT5cbiAgICAgIHRoaXMubW91c2VQdXNoZWREb3duKGUpXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VCdWJibGUhLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+XG4gICAgICB0aGlzLm1vdXNlUmVsZWFzZWQoKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlQnViYmxlIS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+XG4gICAgICB0aGlzLm1lc3NhZ2VCdWJibGVDbGlja2VkKGUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcE1lc3NhZ2VNZW51U2hvd1RpbWVyKCkge1xuICAgIGlmICh0aGlzLnNob3dNZXNzYWdlTWVudVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dNZXNzYWdlTWVudVRpbWVvdXQpO1xuICAgICAgdGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtY29udGFpbmVyXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUgc3RyLWNoYXRfX21lc3NhZ2Ugc3RyLWNoYXRfX21lc3NhZ2UtLXt7XG4gICAgbWVzc2FnZT8udHlwZVxuICB9fSBzdHItY2hhdF9fbWVzc2FnZS0te3sgbWVzc2FnZT8uc3RhdHVzIH19IHt7XG4gICAgbWVzc2FnZT8udGV4dCA/ICdzdHItY2hhdF9fbWVzc2FnZS0taGFzLXRleHQnIDogJ2hhcy1uby10ZXh0J1xuICB9fSBzdHItY2hhdF9fbWVzc2FnZS1tZW51LXt7IGFyZU1lc3NhZ2VPcHRpb25zT3BlbiA/ICdvcGVuZWQnIDogJ2Nsb3NlZCcgfX1cIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLW1lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLW90aGVyXT1cIiFpc1NlbnRCeUN1cnJlbnRVc2VyXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS0tbWVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0taGFzLWF0dGFjaG1lbnRdPVwiaGFzQXR0YWNobWVudFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0td2l0aC1yZWFjdGlvbnNdPVwiaGFzUmVhY3Rpb25zXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS1oaWdobGlnaHRlZF09XCJpc0hpZ2hsaWdodGVkXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXdpdGgtdGhyZWFkLWxpbmtdPVwic2hvdWxkRGlzcGxheVRocmVhZExpbmtcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2Utc2VuZC1jYW4tYmUtcmV0cmllZF09XCJcbiAgICAobWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJiBtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwMykgfHxcbiAgICAobWVzc2FnZT8udHlwZSA9PT0gJ2Vycm9yJyAmJiBtZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHMpXG4gIFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS13aXRoLXRvdWNoLXN1cHBvcnRdPVwiaGFzVG91Y2hTdXBwb3J0XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXdpdGhvdXQtdG91Y2gtc3VwcG9ydF09XCIhaGFzVG91Y2hTdXBwb3J0XCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZXNzYWdlPy5kZWxldGVkX2F0OyBlbHNlIGRlbGV0ZWRNZXNzYWdlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2U/LnR5cGUgIT09ICdzeXN0ZW0nOyBlbHNlIHN5c3RlbU1lc3NhZ2VcIj5cbiAgICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXZhdGFyXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdCBzdHItY2hhdF9fbWVzc2FnZS1zZW5kZXItYXZhdGFyXCJcbiAgICAgICAgdHlwZT1cInVzZXJcIlxuICAgICAgICBsb2NhdGlvbj1cIm1lc3NhZ2Utc2VuZGVyXCJcbiAgICAgICAgW2ltYWdlVXJsXT1cIm1lc3NhZ2U/LnVzZXI/LmltYWdlXCJcbiAgICAgICAgW25hbWVdPVwibWVzc2FnZT8udXNlcj8ubmFtZSB8fCBtZXNzYWdlPy51c2VyPy5pZFwiXG4gICAgICAgIFt1c2VyXT1cIm1lc3NhZ2U/LnVzZXIgfHwgdW5kZWZpbmVkXCJcbiAgICAgID48L3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtaW5uZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiIWhhc1RvdWNoU3VwcG9ydCAmJiBhcmVPcHRpb25zVmlzaWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnMgc3RyLWNoYXRfX21lc3NhZ2Utb3B0aW9uc1wiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLW9wdGlvbnNcIlxuICAgICAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLW9wZW5dPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICNtZXNzYWdlQWN0aW9uc1RvZ2dsZVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWFjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1jb250YWluZXIgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb24gc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb24tLW9wdGlvbnNcIlxuICAgICAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJtZXNzYWdlTWVudUZsb2F0XCJcbiAgICAgICAgICAgIFtsb29zZVRyaWdnZXJdPVwiXG4gICAgICAgICAgICAgIG1lc3NhZ2VBY3Rpb25zU2VydmljZS5jdXN0b21BY3Rpb25DbGlja0hhbmRsZXIgPyAnbm9uZScgOiAnY2xpY2snXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2hpZGVPblNjcm9sbF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgICAgW2hpZGVPbk1vdXNlTGVhdmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVBbmltYXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3ByZXZlbnRPdmVyZmxvd109XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwb3NpdGlvbkZpeGVkXT1cInRydWVcIlxuICAgICAgICAgICAgKG9uU0hvd24pPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gdHJ1ZVwiXG4gICAgICAgICAgICAob25IaWRkZW4pPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA+IDBcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94LWJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1vcHRpb25zLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJtZXNzYWdlT3B0aW9uc0J1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlT3B0aW9uc0J1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIGljb249XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmN1c3RvbU1lc3NhZ2VNZXRhZGF0YUluc2lkZUJ1YmJsZVRlbXBsYXRlJFxuICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuY3VzdG9tTWVzc2FnZU1ldGFkYXRhSW5zaWRlQnViYmxlVGVtcGxhdGUkXG4gICAgICAgICAgICAgICAgfCBhc3luYykhO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IG1lc3NhZ2UgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtaG9zdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2RlZmF1bHRNZXNzYWdlUmVhY3Rpb25zXG4gICAgICAgICAgICBsZXQtbWVzc2FnZVJlYWN0aW9uQ291bnRzPVwibWVzc2FnZVJlYWN0aW9uQ291bnRzXCJcbiAgICAgICAgICAgIGxldC1sYXRlc3RSZWFjdGlvbnM9XCJsYXRlc3RSZWFjdGlvbnNcIlxuICAgICAgICAgICAgbGV0LW1lc3NhZ2VJZD1cIm1lc3NhZ2VJZFwiXG4gICAgICAgICAgICBsZXQtb3duUmVhY3Rpb25zPVwib3duUmVhY3Rpb25zXCJcbiAgICAgICAgICAgIGxldC1tZXNzYWdlUmVhY3Rpb25Hcm91cHM9XCJtZXNzYWdlUmVhY3Rpb25Hcm91cHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnNcbiAgICAgICAgICAgICAgW21lc3NhZ2VSZWFjdGlvbkNvdW50c109XCJtZXNzYWdlUmVhY3Rpb25Db3VudHNcIlxuICAgICAgICAgICAgICBbbGF0ZXN0UmVhY3Rpb25zXT1cImxhdGVzdFJlYWN0aW9uc1wiXG4gICAgICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICAgICAgW293blJlYWN0aW9uc109XCJvd25SZWFjdGlvbnNcIlxuICAgICAgICAgICAgICBbbWVzc2FnZVJlYWN0aW9uR3JvdXBzXT1cIm1lc3NhZ2VSZWFjdGlvbkdyb3Vwc1wiXG4gICAgICAgICAgICA+PC9zdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnM+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlUmVhY3Rpb25zVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2VSZWFjdGlvbnM7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VSZWFjdGlvbnNDb250ZXh0KClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZsb2F0LXVpLWNvbnRlbnQgI21lc3NhZ2VNZW51RmxvYXQ+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAjZGVmYXVsdE1lc3NhZ2VBY3Rpb25zQm94XG4gICAgICAgICAgICBsZXQtaXNNaW5lPVwiaXNNaW5lXCJcbiAgICAgICAgICAgIGxldC1tZXNzYWdlSW5wdXQ9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIGxldC1lbmFibGVkQWN0aW9ucz1cImVuYWJsZWRBY3Rpb25zXCJcbiAgICAgICAgICAgIGxldC1tZXNzYWdlVGV4dEh0bWxFbGVtZW50PVwibWVzc2FnZVRleHRIdG1sRWxlbWVudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0cmVhbS1tZXNzYWdlLWFjdGlvbnMtYm94XG4gICAgICAgICAgICAgIFtpc01pbmVdPVwiaXNNaW5lXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZUlucHV0XCJcbiAgICAgICAgICAgICAgW2VuYWJsZWRBY3Rpb25zXT1cImVuYWJsZWRBY3Rpb25zXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VUZXh0SHRtbEVsZW1lbnRdPVwibWVzc2FnZVRleHRIdG1sRWxlbWVudFwiXG4gICAgICAgICAgICA+PC9zdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJtZXNzYWdlQWN0aW9uc0JveENsaWNrZWQobWVzc2FnZU1lbnVGbG9hdClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibWVzc2FnZUFjdGlvbnNCb3hDbGlja2VkKG1lc3NhZ2VNZW51RmxvYXQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlQWN0aW9uc0JveFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZUFjdGlvbnNCb3g7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlQWN0aW9uc0JveENvbnRleHQoKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mbG9hdC11aS1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1idWJibGUgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1idWJibGVcIlxuICAgICAgICAgIFtjbGFzcy5zdHItY2hhdC1hbmd1bGFyX19tZXNzYWdlLWJ1YmJsZS0tYXR0YWNobWVudC1tb2RhbC1vcGVuXT1cIlxuICAgICAgICAgICAgaW1hZ2VBdHRhY2htZW50TW9kYWxTdGF0ZSA9PT0gJ29wZW5lZCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1idWJibGVcIlxuICAgICAgICAgIFtmbG9hdFVpTG9vc2VdPVwibWVzc2FnZU1lbnVGbG9hdFwiXG4gICAgICAgICAgI21lc3NhZ2VNZW51VHJpZ2dlcj1cImZsb2F0VWlMb29zZVwiXG4gICAgICAgICAgI21lc3NhZ2VCdWJibGVcbiAgICAgICAgICBsb29zZVRyaWdnZXI9XCJub25lXCJcbiAgICAgICAgICBbaGlkZU9uU2Nyb2xsXT1cImZhbHNlXCJcbiAgICAgICAgICBbaGlkZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgIFtoaWRlT25Nb3VzZUxlYXZlXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcHJldmVudE92ZXJmbG93XT1cInRydWVcIlxuICAgICAgICAgIChvblNob3duKT1cImFyZU1lc3NhZ2VPcHRpb25zT3BlbiA9IHRydWVcIlxuICAgICAgICAgIChvbkhpZGRlbik9XCJhcmVNZXNzYWdlT3B0aW9uc09wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQXR0YWNobWVudCAmJiAhbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fYXR0YWNobWVudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImF0dGFjaG1lbnRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnRleHQgfHwgKG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlICYmIGhhc0F0dGFjaG1lbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXRleHQtLXBvaW50ZXItY3Vyc29yXT1cIlxuICAgICAgICAgICAgICAobWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJlxuICAgICAgICAgICAgICAgIG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSAhPT0gNDAzKSB8fFxuICAgICAgICAgICAgICAodGhpcy5tZXNzYWdlPy50eXBlID09PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHMpIHx8XG4gICAgICAgICAgICAgIG1lc3NhZ2U/Lm1lc3NhZ2VfdGV4dF91cGRhdGVkX2F0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm1lc3NhZ2VDbGlja2VkKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm1lc3NhZ2VDbGlja2VkKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpbm5lci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS10ZXh0LWlubmVyIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10ZXh0LWlubmVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLWxpZ2h0LXRleHQtaW5uZXItLWhhcy1hdHRhY2htZW50XT1cIlxuICAgICAgICAgICAgICAgIGhhc0F0dGFjaG1lbnRcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInF1b3RlZE1lc3NhZ2VcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0F0dGFjaG1lbnQgJiYgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImF0dGFjaG1lbnRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnR5cGUgPT09ICdlcnJvcidcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2xpZW50LWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NpbXBsZS1tZXNzYWdlLS1lcnJvci1tZXNzYWdlIHN0ci1jaGF0X19tZXNzYWdlLS1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVzc2FnZT8ubW9kZXJhdGlvbl9kZXRhaWxzXCI+e3tcbiAgICAgICAgICAgICAgICAgIFwic3RyZWFtQ2hhdC5FcnJvciDCtyBVbnNlbnRcIiB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZXNzYWdlPy5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NpbXBsZS1tZXNzYWdlLS1lcnJvci1tZXNzYWdlIHN0ci1jaGF0X19tZXNzYWdlLS1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAobWVzc2FnZT8uZXJyb3JTdGF0dXNDb2RlID09PSA0MDNcbiAgICAgICAgICAgICAgICAgICAgPyBcInN0cmVhbUNoYXQuTWVzc2FnZSBGYWlsZWQgwrcgVW5hdXRob3JpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcInN0cmVhbUNoYXQuTWVzc2FnZSBGYWlsZWQgwrcgQ2xpY2sgdG8gdHJ5IGFnYWluXCJcbiAgICAgICAgICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlVGV4dFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VGV4dDtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VUZXh0Q29udGV4dCgpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAjZGVmYXVsdFRleHRcbiAgICAgICAgICAgICAgICBsZXQtbWVzc2FnZT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGxldC1pc1F1b3RlZD1cImlzUXVvdGVkXCJcbiAgICAgICAgICAgICAgICBsZXQtc2hvdWxkVHJhbnNsYXRlPVwic2hvdWxkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZS10ZXh0XG4gICAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgIFtpc1F1b3RlZF09XCJpc1F1b3RlZFwiXG4gICAgICAgICAgICAgICAgICBbc2hvdWxkVHJhbnNsYXRlXT1cInNob3VsZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInF1b3RlZC1tZXNzYWdlLXRleHRcIlxuICAgICAgICAgICAgICAgID48L3N0cmVhbS1tZXNzYWdlLXRleHQ+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtZXJyb3ItaWNvblwiXG4gICAgICAgICAgICBpY29uPVwiZXJyb3JcIlxuICAgICAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInJlcGx5Q291bnRCdXR0b247IGNvbnRleHQ6IHsgbWVzc2FnZTogbWVzc2FnZSB9XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lc3NhZ2VEYXRlQW5kU2VuZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVsZXRlZE1lc3NhZ2U+XG4gIDxkaXYgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWRlbGV0ZWQtY29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1kZWxldGVkLWlubmVyXCIgdHJhbnNsYXRlPlxuICAgICAgc3RyZWFtQ2hhdC5UaGlzIG1lc3NhZ2Ugd2FzIGRlbGV0ZWQuLi5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N5c3RlbU1lc3NhZ2U+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2Uuc3lzdGVtTWVzc2FnZVRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICBkZWZhdWx0U3lzdGVtTWVzc2FnZTtcbiAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN5c3RlbU1lc3NhZ2UgbGV0LW1lc3NhZ2VJbnB1dD1cIm1lc3NhZ2VcIj5cbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwic3lzdGVtLW1lc3NhZ2VcIiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX190ZXh0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19saW5lXCI+PC9kaXY+XG4gICAgICAgIDxwPnt7IG1lc3NhZ2VJbnB1dD8udGV4dCB9fTwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2xpbmVcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2RhdGVcIj5cbiAgICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3F1b3RlZE1lc3NhZ2U+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlXCJcbiAgICBjbGFzcz1cInF1b3RlZC1tZXNzYWdlIHN0ci1jaGF0X19xdW90ZWQtbWVzc2FnZS1wcmV2aWV3XCJcbiAgICBkYXRhLXRlc3RpZD1cInF1b3RlZC1tZXNzYWdlLWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLm1pbmVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gICAgKGNsaWNrKT1cIlxuICAgICAganVtcFRvTWVzc2FnZShcbiAgICAgICAgKG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlKSEuaWQsXG4gICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy5wYXJlbnRfaWRcbiAgICAgIClcbiAgICBcIlxuICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgIGp1bXBUb01lc3NhZ2UoXG4gICAgICAgIChtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZSkhLmlkLFxuICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8ucGFyZW50X2lkXG4gICAgICApXG4gICAgXCJcbiAgPlxuICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICBkYXRhLXRlc3RpZD1cInFvdXRlZC1tZXNzYWdlLWF2YXRhclwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0IHN0ci1jaGF0X19tZXNzYWdlLXNlbmRlci1hdmF0YXJcIlxuICAgICAgdHlwZT1cInVzZXJcIlxuICAgICAgbG9jYXRpb249XCJxdW90ZWQtbWVzc2FnZS1zZW5kZXJcIlxuICAgICAgW2ltYWdlVXJsXT1cIm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy51c2VyPy5pbWFnZVwiXG4gICAgICBbbmFtZV09XCJcbiAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXI/Lm5hbWUgfHwgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXI/LmlkXG4gICAgICBcIlxuICAgICAgW3VzZXJdPVwibWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXIgfHwgdW5kZWZpbmVkXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZS1pbm5lciBzdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtYnViYmxlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzICYmXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2RlZmF1bHRBdHRhY2htZW50c1xuICAgICAgICAgIGxldC1tZXNzYWdlSWQ9XCJtZXNzYWdlSWRcIlxuICAgICAgICAgIGxldC1hdHRhY2htZW50cz1cImF0dGFjaG1lbnRzXCJcbiAgICAgICAgICBsZXQtcGFyZW50TWVzc2FnZUlkPVwicGFyZW50TWVzc2FnZUlkXCJcbiAgICAgICAgICBsZXQtaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcj1cImltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgICBbcGFyZW50TWVzc2FnZUlkXT1cInBhcmVudE1lc3NhZ2VJZFwiXG4gICAgICAgICAgICAoaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlKT1cImltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5hdHRhY2htZW50TGlzdFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICBkZWZhdWx0QXR0YWNobWVudHM7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRRdW90ZWRNZXNzYWdlQXR0YWNobWVudExpc3RDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lc3NhZ2VUZXh0VGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICAgIGRlZmF1bHRUZXh0O1xuICAgICAgICAgICAgY29udGV4dDogZ2V0UXVvdGVkTWVzc2FnZVRleHRDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICNkZWZhdWx0VGV4dFxuICAgICAgICAgIGxldC1tZXNzYWdlPVwibWVzc2FnZVwiXG4gICAgICAgICAgbGV0LWlzUXVvdGVkPVwiaXNRdW90ZWRcIlxuICAgICAgICAgIGxldC1zaG91bGRUcmFuc2xhdGU9XCJzaG91bGRUcmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1tZXNzYWdlLXRleHRcbiAgICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgW2lzUXVvdGVkXT1cImlzUXVvdGVkXCJcbiAgICAgICAgICAgIFtzaG91bGRUcmFuc2xhdGVdPVwic2hvdWxkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgPjwvc3RyZWFtLW1lc3NhZ2UtdGV4dD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZURhdGVBbmRTZW5kZXI+XG4gIDxuZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaG91bGREaXNwbGF5VHJhbnNsYXRpb25Ob3RpY2VcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdHJhbnNsYXRpb24tbm90aWNlXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwidHJhbnNsYXRpb24tbm90aWNlXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAndHJhbnNsYXRpb24nXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWUtb3JpZ2luYWxcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlPcmlnaW5hbE1lc3NhZ2UoKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJkaXNwbGF5T3JpZ2luYWxNZXNzYWdlKClcIlxuICAgICAgPlxuICAgICAgICBzdHJlYW1DaGF0LlNlZSBvcmlnaW5hbCAoYXV0b21hdGljYWxseSB0cmFuc2xhdGVkKVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAnb3JpZ2luYWwnXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWUtdHJhbnNsYXRpb25cIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlUcmFuc2xhdGVkTWVzc2FnZSgpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImRpc3BsYXlUcmFuc2xhdGVkTWVzc2FnZSgpXCJcbiAgICAgID5cbiAgICAgICAgc3RyZWFtQ2hhdC5TZWUgdHJhbnNsYXRpb25cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiY3VzdG9tVGVtcGxhdGVzU2VydmljZS5jdXN0b21NZXNzYWdlTWV0YWRhdGFUZW1wbGF0ZSQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19jdXN0b20tbWVzc2FnZS1tZXRhZGF0YVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmN1c3RvbU1lc3NhZ2VNZXRhZGF0YVRlbXBsYXRlJCB8IGFzeW5jKSE7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlTWV0YWRhdGFDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWRhdGEgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLWRhdGEgc3RyLWNoYXRfX21lc3NhZ2UtbWV0YWRhdGFcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZXNzYWdlU3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiIWlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmRlclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLW5hbWUgc3RyLWNoYXRfX21lc3NhZ2Utc2VuZGVyLW5hbWVcIlxuICAgICAgPlxuICAgICAgICB7eyBtZXNzYWdlPy51c2VyPy5uYW1lID8gbWVzc2FnZT8udXNlcj8ubmFtZSA6IG1lc3NhZ2U/LnVzZXI/LmlkIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBkYXRhLXRlc3RpZD1cImRhdGVcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10aW1lc3RhbXAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXRpbWVcIlxuICAgICAgPlxuICAgICAgICB7eyBwYXJzZWREYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZT8ubWVzc2FnZV90ZXh0X3VwZGF0ZWRfYXRcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImVkaXRlZC1mbGFnXCJcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNhZ2Utc2ltcGxlLWVkaXRlZFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPnN0cmVhbUNoYXQuRWRpdGVkPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZWRpdGVkLXRpbWVzdGFtcFwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1lZGl0ZWQtdGltZXN0YW1wXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnc3RyLWNoYXRfX21lc3NhZ2UtZWRpdGVkLXRpbWVzdGFtcC0tb3Blbic6IGlzRWRpdGVkRmxhZ09wZW5lZCxcbiAgICAgICAgICAgICdzdHItY2hhdF9fbWVzc2FnZS1lZGl0ZWQtdGltZXN0YW1wLS1jb2xsYXBzZWQnOiAhaXNFZGl0ZWRGbGFnT3BlbmVkXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+c3RyZWFtQ2hhdC5FZGl0ZWQ8L3NwYW4+XG4gICAgICAgICAgPHRpbWVcbiAgICAgICAgICAgIGRhdGVUaW1lPVwie3sgbWVzc2FnZT8ubWVzc2FnZV90ZXh0X3VwZGF0ZWRfYXQgfX1cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBtZXNzYWdlPy5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdCB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcGFzZWRFZGl0ZWREYXRlIH19XG4gICAgICAgICAgPC90aW1lPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZVN0YXR1cz5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBpc1NlbnRCeUN1cnJlbnRVc2VyICYmXG4gICAgICAoKGlzTGFzdFNlbnRNZXNzYWdlICYmIG1lc3NhZ2U/LnN0YXR1cyA9PT0gJ3JlY2VpdmVkJykgfHxcbiAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnc2VuZGluZycpXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5zdGF0dXMgPT09ICdzZW5kaW5nJzsgZWxzZSBzZW50U3RhdHVzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VuZGluZ1N0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VudFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtb2RlID09PSAnbWFpbicgJiYgaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZCAmJiBjYW5EaXNwbGF5UmVhZFN0YXR1cztcbiAgICAgICAgICBlbHNlIGRlbGl2ZXJlZFN0YXR1c1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVhZFN0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlbGl2ZXJlZFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5kZWxpdmVyZWRTdGF0dXNUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgICAgIGRlZmF1bHREZWxpdmVyZWRTdGF0dXM7XG4gICAgICAgICAgY29udGV4dDogZ2V0RGVsaXZlcmVkU3RhdHVzQ29udGV4dCgpXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHREZWxpdmVyZWRTdGF0dXM+XG4gICAgICA8c3BhblxuICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdtYWluJ1wiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cyBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzLWFuZ3VsYXIgc3RyLWNoYXRfX21lc3NhZ2Utc3RhdHVzXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZWxpdmVyZWQtaW5kaWNhdG9yXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJmbG9hdGluZ0NvbnRlbnRcIlxuICAgICAgICBsb29zZVBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIFtsb29zZVRyaWdnZXJdPVwiaGFzVG91Y2hTdXBwb3J0ID8gJ2NsaWNrJyA6ICdob3ZlcidcIlxuICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNmbG9hdGluZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwIHN0ci1jaGF0X190b29sdGlwLWFuZ3VsYXJcIj5cbiAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5EZWxpdmVyZWRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zsb2F0LXVpLWNvbnRlbnQ+XG4gICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZGVsaXZlcmVkLWljb25cIlxuICAgICAgICAgIGljb249XCJkZWxpdmVyZWRcIlxuICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VuZGluZ1N0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5zZW5kaW5nU3RhdHVzVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICBkZWZhdWx0U2VuZGluZ1N0YXR1cztcbiAgICAgICAgICBjb250ZXh0OiBnZXRTZW5kaW5nU3RhdHVzQ29udGV4dCgpXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTZW5kaW5nU3RhdHVzPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhciBzdHItY2hhdF9fbWVzc2FnZS1zdGF0dXNcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmRpbmctaW5kaWNhdG9yXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJmbG9hdGluZ0NvbnRlbnRcIlxuICAgICAgICBsb29zZVBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIFtsb29zZVRyaWdnZXJdPVwiaGFzVG91Y2hTdXBwb3J0ID8gJ2NsaWNrJyA6ICdob3ZlcidcIlxuICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNmbG9hdGluZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwIHN0ci1jaGF0X190b29sdGlwLWFuZ3VsYXJcIj5cbiAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5TZW5kaW5nLi4uXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mbG9hdC11aS1jb250ZW50PlxuICAgICAgICA8c3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yLXBsYWNlaG9sZGVyXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJsb2FkaW5nLWluZGljYXRvclwiXG4gICAgICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvci1wbGFjZWhvbGRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjcmVhZFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5yZWFkU3RhdHVzVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICBkZWZhdWx0UmVhZFN0YXR1cztcbiAgICAgICAgICBjb250ZXh0OiBnZXRSZWFkU3RhdHVzQ29udGV4dCgpXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRSZWFkU3RhdHVzIGxldC1yZWFkQnlUZXh0PVwicmVhZEJ5VGV4dFwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhciBzdHItY2hhdF9fbWVzc2FnZS1zdGF0dXNcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlYWQtaW5kaWNhdG9yXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJmbG9hdGluZ0NvbnRlbnRcIlxuICAgICAgICBsb29zZVBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIFtsb29zZVRyaWdnZXJdPVwiaGFzVG91Y2hTdXBwb3J0ID8gJ2NsaWNrJyA6ICdob3ZlcidcIlxuICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNmbG9hdGluZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcCBzdHItY2hhdF9fdG9vbHRpcC1hbmd1bGFyXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVhZC1ieS10b29sdGlwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyByZWFkQnlUZXh0IH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmxvYXQtdWktY29udGVudD5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJyZWFkXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVwbHlDb3VudEJ1dHRvbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXJlcGx5LWJ1dHRvbiBzdHItY2hhdF9fbWVzc2FnZS1yZXBsaWVzLWNvdW50LWJ1dHRvbi13cmFwcGVyXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG91bGREaXNwbGF5VGhyZWFkTGlua1wiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UudGhyZWFkTGlua0J1dHRvbiQgfCBhc3luYykgfHwgZGVmYXVsdEJ1dHRvbjtcbiAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IG1lc3NhZ2UgfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QnV0dG9uIGxldC1tZXNzYWdlPVwibWVzc2FnZVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlcGxpZXMtY291bnQtYnV0dG9uXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZXBseS1jb3VudC1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwic2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKClcIlxuICAgICAgPlxuICAgICAgICB7e21lc3NhZ2U/LnJlcGx5X2NvdW50ID09PSAxID8gKCdzdHJlYW1DaGF0LjEgcmVwbHknIHwgdHJhbnNsYXRlKSA6ICgnc3RyZWFtQ2hhdC57eyByZXBseUNvdW50IH19XG4gICAgICAgIHJlcGxpZXMnIHwgdHJhbnNsYXRlOnJlcGx5Q291bnRQYXJhbSl9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2F0dGFjaG1lbnRzVGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZVxuICAgICNkZWZhdWx0QXR0YWNobWVudHNcbiAgICBsZXQtbWVzc2FnZUlkPVwibWVzc2FnZUlkXCJcbiAgICBsZXQtYXR0YWNobWVudHM9XCJhdHRhY2htZW50c1wiXG4gICAgbGV0LXBhcmVudE1lc3NhZ2VJZD1cInBhcmVudE1lc3NhZ2VJZFwiXG4gICAgbGV0LWltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXI9XCJpbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyXCJcbiAgPlxuICAgIDxzdHJlYW0tYXR0YWNobWVudC1saXN0XG4gICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICBbYXR0YWNobWVudHNdPVwiYXR0YWNobWVudHNcIlxuICAgICAgW3BhcmVudE1lc3NhZ2VJZF09XCJwYXJlbnRNZXNzYWdlSWRcIlxuICAgICAgKGltYWdlTW9kYWxTdGF0ZUNoYW5nZSk9XCJpbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICAgID48L3N0cmVhbS1hdHRhY2htZW50LWxpc3Q+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuYXR0YWNobWVudExpc3RUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgZGVmYXVsdEF0dGFjaG1lbnRzO1xuICAgICAgY29udGV4dDogZ2V0QXR0YWNobWVudExpc3RDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
481
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBTUwsdUJBQXVCLEVBRXZCLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxFQUE0QixJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVExQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUV4Qzs7R0FFRztBQU9ILE1BQU0sT0FBTyxnQkFBZ0I7SUFvRTNCLFlBQ1UsaUJBQW9DLEVBQ3BDLGNBQThCLEVBQy9CLHNCQUE4QyxFQUM3QyxLQUF3QixFQUN4QixVQUE2QixFQUM5QixxQkFBNEMsRUFDM0MsTUFBYyxFQUNkLGdCQUFrQztRQVBsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzdDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzlCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFyRTVDOztXQUVHO1FBQ00sMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBSzlDOztXQUVH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QztRQUNGLElBQUksQ0FBQyxhQUFjLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FDakUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDaEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixZQUFZLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztTQUN6QztJQUNILENBQUM7OzZHQTVoQlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0Isa3JCQ25EN0IseTZ0QkE2bUJBOzJGRDFqQmEsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNO2tVQVF0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsYUFBYTtzQkFBckIsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBZ0NOLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRy9CLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQjtnQkFFSSxrQkFBa0I7c0JBQWxELFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNILGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXR0YWNobWVudCwgVXNlclJlc3BvbnNlIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEF0dGFjaG1lbnRMaXN0Q29udGV4dCxcbiAgTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0LFxuICBNZXNzYWdlUmVhY3Rpb25zQ29udGV4dCxcbiAgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyxcbiAgU3RyZWFtTWVzc2FnZSxcbiAgRGVsaXZlcmVkU3RhdHVzQ29udGV4dCxcbiAgU2VuZGluZ1N0YXR1c0NvbnRleHQsXG4gIFJlYWRTdGF0dXNDb250ZXh0LFxuICBTeXN0ZW1NZXNzYWdlQ29udGV4dCxcbiAgQ3VzdG9tTWV0YWRhdGFDb250ZXh0LFxuICBNZXNzYWdlVGV4dENvbnRleHQsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBsaXN0VXNlcnMgfSBmcm9tICcuLi9saXN0LXVzZXJzJztcbmltcG9ydCB7IERhdGVQYXJzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0ZS1wYXJzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBNZXNzYWdlQWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9tZXNzYWdlLWFjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQge1xuICBOZ3hGbG9hdFVpQ29udGVudENvbXBvbmVudCxcbiAgTmd4RmxvYXRVaUxvb3NlRGlyZWN0aXZlLFxufSBmcm9tICduZ3gtZmxvYXQtdWknO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuLi9pcy1zYWZhcmknO1xuXG4vKipcbiAqIFRoZSBgTWVzc2FnZWAgY29tcG9uZW50IGRpc3BsYXlzIGEgbWVzc2FnZSB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyBzZW5kZXIgYW5kIGRhdGUsIGFuZCBlbmFibGVzIFtpbnRlcmFjdGlvbiB3aXRoIHRoZSBtZXNzYWdlIChpLmUuIGVkaXQgb3IgcmVhY3QpXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbmNlcHRzL21lc3NhZ2UtaW50ZXJhY3Rpb25zLykuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIFtjaGFubmVsIGNhcGFiaWxpdGllc10oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLykgdGhhdCBhcmUgZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciwgdGhlIGxpc3Qgb2YgW3N1cHBvcnRlZCBpbnRlcmFjdGlvbnNdKC9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvY29uY2VwdHMvbWVzc2FnZS1pbnRlcmFjdGlvbnMvKSBjYW4gYmUgZm91bmQgaW4gb3VyIG1lc3NhZ2UgaW50ZXJhY3Rpb24gZ3VpZGUuIFVuYXRob3JpemVkIGFjdGlvbnMgd29uJ3QgYmUgZGlzcGxheWVkIG9uIHRoZSBVSS4gVGhlIFtgTWVzc2FnZUxpc3RgXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbXBvbmVudHMvTWVzc2FnZUxpc3RDb21wb25lbnQvKSBjb21wb25lbnQgYXV0b21hdGljYWxseSBzZXRzIHRoaXMgYmFzZWQgb24gW2NoYW5uZWwgY2FwYWJpbGl0aWVzXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvY2hhbm5lbF9jYXBhYmlsaXRpZXMvKS5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG1lc3NhZ2Ugc3RhdHVzIChzZW5kaW5nLCBzZW50LCB3aG8gcmVhZCB0aGUgbWVzc2FnZSkgaXMgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgaXNMYXN0U2VudE1lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBtZXNzYWdlIGlzIGJlaW5nIGRpc3BhbHllZCBpbiBhIGNoYW5uZWwgb3IgaW4gYSBbdGhyZWFkXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvdGhyZWFkcy8pLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ3RocmVhZCcgfCAnbWFpbicgPSAnbWFpbic7XG4gIC8qKlxuICAgKiBIaWdobGlnaHRpbmcgaXMgdXNlZCB0byBhZGQgdmlzdWFsIGVtcGhhc2l6ZSB0byBhIG1lc3NhZ2Ugd2hlbiBqdW1waW5nIHRvIHRoZSBtZXNzYWdlXG4gICAqL1xuICBASW5wdXQoKSBpc0hpZ2hsaWdodGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgbWVzc2FnZSBsaXN0IGlzIHNjcm9sbGVkLCBpdCdzIHVzZWQgdG8gcHJldmVudCBvcGVuaW5nIHRoZSBtZXNzYWdlIG1lbnUgd2hpbGUgc2Nyb2xsIGlzIGluIHByb2dyZXNzXG4gICAqL1xuICBASW5wdXQoKSBzY3JvbGwkPzogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgY2FuUmVjZWl2ZVJlYWRFdmVudHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNhblJlYWN0VG9NZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc0VkaXRlZEZsYWdPcGVuZWQgPSBmYWxzZTtcbiAgc2hvdWxkRGlzcGxheVRyYW5zbGF0aW9uTm90aWNlID0gZmFsc2U7XG4gIGRpc3BsYXllZE1lc3NhZ2VUZXh0Q29udGVudDogJ29yaWdpbmFsJyB8ICd0cmFuc2xhdGlvbicgPSAnb3JpZ2luYWwnO1xuICBpbWFnZUF0dGFjaG1lbnRNb2RhbFN0YXRlOiAnb3BlbmVkJyB8ICdjbG9zZWQnID0gJ2Nsb3NlZCc7XG4gIHNob3VsZERpc3BsYXlUaHJlYWRMaW5rID0gZmFsc2U7XG4gIGlzU2VudEJ5Q3VycmVudFVzZXIgPSBmYWxzZTtcbiAgcmVhZEJ5VGV4dCA9ICcnO1xuICBsYXN0UmVhZFVzZXI6IFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgaXNPbmx5UmVhZEJ5TWUgPSBmYWxzZTtcbiAgaXNSZWFkQnlNdWx0aXBsZVVzZXJzID0gZmFsc2U7XG4gIGlzTWVzc2FnZURlbGl2ZXJlZEFuZFJlYWQgPSBmYWxzZTtcbiAgcGFyc2VkRGF0ZSA9ICcnO1xuICBwYXNlZEVkaXRlZERhdGUgPSAnJztcbiAgYXJlT3B0aW9uc1Zpc2libGUgPSBmYWxzZTtcbiAgaGFzQXR0YWNobWVudCA9IGZhbHNlO1xuICBoYXNSZWFjdGlvbnMgPSBmYWxzZTtcbiAgcmVwbHlDb3VudFBhcmFtOiB7IHJlcGx5Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCB9ID0ge1xuICAgIHJlcGx5Q291bnQ6IHVuZGVmaW5lZCxcbiAgfTtcbiAgYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gZmFsc2U7XG4gIGNhbkRpc3BsYXlSZWFkU3RhdHVzID0gZmFsc2U7XG4gIGhhc1RvdWNoU3VwcG9ydCA9IGlzU2FmYXJpKClcbiAgICA/ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdyB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwXG4gICAgOiB3aW5kb3cubWF0Y2hNZWRpYSgnKGFueS1ob3Zlcjogbm9uZSknKS5tYXRjaGVzO1xuICBwcml2YXRlIHF1b3RlZE1lc3NhZ2VBdHRhY2htZW50czogQXR0YWNobWVudFtdIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgaXNWaWV3SW5pdGVkID0gZmFsc2U7XG4gIHByaXZhdGUgdXNlcklkPzogc3RyaW5nO1xuICBAVmlld0NoaWxkKCdtZXNzYWdlTWVudVRyaWdnZXInKVxuICBtZXNzYWdlTWVudVRyaWdnZXIhOiBOZ3hGbG9hdFVpTG9vc2VEaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGQoJ21lc3NhZ2VNZW51RmxvYXQnKVxuICBtZXNzYWdlTWVudUZsb2F0ITogTmd4RmxvYXRVaUNvbnRlbnRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ21lc3NhZ2VUZXh0RWxlbWVudCcpIG1lc3NhZ2VUZXh0RWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdtZXNzYWdlQnViYmxlJykgbWVzc2FnZUJ1YmJsZT86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIHNob3dNZXNzYWdlTWVudVRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSBzaG91bGRQcmV2ZW50TWVzc2FnZU1lbnVDbG9zZSA9IGZhbHNlO1xuICBwcml2YXRlIF92aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA9IDA7XG4gIHByaXZhdGUgY2hhbm5lbE1lbWJlckNvdW50PzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGF0ZVBhcnNlcjogRGF0ZVBhcnNlclNlcnZpY2UsXG4gICAgcHVibGljIG1lc3NhZ2VBY3Rpb25zU2VydmljZTogTWVzc2FnZUFjdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBnZXQgdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50O1xuICB9XG5cbiAgc2V0IHZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl92aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA9IGNvdW50O1xuICAgIGlmICh0aGlzLmFyZU9wdGlvbnNWaXNpYmxlICYmIHRoaXMuX3Zpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLmFyZU9wdGlvbnNWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLnVzZXIkLnN1YnNjcmliZSgodSkgPT4ge1xuICAgICAgICBpZiAodT8uaWQgIT09IHRoaXMudXNlcklkKSB7XG4gICAgICAgICAgdGhpcy51c2VySWQgPSB1Py5pZDtcbiAgICAgICAgICB0aGlzLnNldElzU2VudEJ5Q3VycmVudFVzZXIoKTtcbiAgICAgICAgICB0aGlzLnNldExhc3RSZWFkVXNlcigpO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5jdXN0b21BY3Rpb25zJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlKSB7XG4gICAgICAgICAgY29uc3QgbnVtYmVyT2ZFbmFibGVkQWN0aW9ucyA9XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5nZXRBdXRob3JpemVkTWVzc2FnZUFjdGlvbnNDb3VudChcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlLFxuICAgICAgICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobnVtYmVyT2ZFbmFibGVkQWN0aW9ucyAhPT0gdGhpcy52aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA9IG51bWJlck9mRW5hYmxlZEFjdGlvbnM7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoYWN0aXZlQ2hhbm5lbCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdDaGFubmVsTWVtYmVyQ291bnQgPSBhY3RpdmVDaGFubmVsPy5kYXRhPy5tZW1iZXJfY291bnQ7XG4gICAgICAgIGlmIChuZXdDaGFubmVsTWVtYmVyQ291bnQgIT09IHRoaXMuY2hhbm5lbE1lbWJlckNvdW50KSB7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkVXBkYXRlVGV4dCA9XG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxNZW1iZXJDb3VudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBuZXdDaGFubmVsTWVtYmVyQ291bnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAoKHRoaXMuY2hhbm5lbE1lbWJlckNvdW50IDw9IDEwMDAgJiYgbmV3Q2hhbm5lbE1lbWJlckNvdW50ID4gMTAwKSB8fFxuICAgICAgICAgICAgICAodGhpcy5jaGFubmVsTWVtYmVyQ291bnQgPiAxMDAgJiYgbmV3Q2hhbm5lbE1lbWJlckNvdW50IDw9IDEwMCkpO1xuICAgICAgICAgIHRoaXMuY2hhbm5lbE1lbWJlckNvdW50ID0gYWN0aXZlQ2hhbm5lbD8uZGF0YT8ubWVtYmVyX2NvdW50O1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSAmJlxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLmNpZCA9PT0gYWN0aXZlQ2hhbm5lbD8uY2lkICYmXG4gICAgICAgICAgICBzaG91bGRVcGRhdGVUZXh0XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJlYWRCeVRleHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZE1lc3NhZ2VUZXh0Q29udGVudCA9IHRoaXMubWVzc2FnZT8udHJhbnNsYXRpb25cbiAgICAgICAgPyAndHJhbnNsYXRpb24nXG4gICAgICAgIDogJ29yaWdpbmFsJztcbiAgICAgIHRoaXMuc2hvdWxkRGlzcGxheVRyYW5zbGF0aW9uTm90aWNlID1cbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQgPT09ICd0cmFuc2xhdGlvbic7XG4gICAgICBjb25zdCBvcmlnaW5hbEF0dGFjaG1lbnRzID0gdGhpcy5tZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8uYXR0YWNobWVudHM7XG4gICAgICB0aGlzLnF1b3RlZE1lc3NhZ2VBdHRhY2htZW50cyA9XG4gICAgICAgIG9yaWdpbmFsQXR0YWNobWVudHMgJiYgb3JpZ2luYWxBdHRhY2htZW50cy5sZW5ndGhcbiAgICAgICAgICA/IFtvcmlnaW5hbEF0dGFjaG1lbnRzWzBdXVxuICAgICAgICAgIDogW107XG4gICAgICB0aGlzLnNldElzU2VudEJ5Q3VycmVudFVzZXIoKTtcbiAgICAgIHRoaXMuc2V0TGFzdFJlYWRVc2VyKCk7XG4gICAgICB0aGlzLnVwZGF0ZVJlYWRCeVRleHQoKTtcbiAgICAgIHRoaXMuaXNPbmx5UmVhZEJ5TWUgPSAhIShcbiAgICAgICAgdGhpcy5tZXNzYWdlICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPT09IDBcbiAgICAgICk7XG4gICAgICB0aGlzLmlzUmVhZEJ5TXVsdGlwbGVVc2VycyA9ICEhKFxuICAgICAgICB0aGlzLm1lc3NhZ2UgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeSAmJlxuICAgICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5Lmxlbmd0aCA+IDFcbiAgICAgICk7XG4gICAgICB0aGlzLmlzTWVzc2FnZURlbGl2ZXJlZEFuZFJlYWQgPSAhIShcbiAgICAgICAgdGhpcy5tZXNzYWdlICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnN0YXR1cyA9PT0gJ3JlY2VpdmVkJyAmJlxuICAgICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5Lmxlbmd0aCA+IDBcbiAgICAgICk7XG4gICAgICB0aGlzLnBhcnNlZERhdGUgPVxuICAgICAgICAodGhpcy5tZXNzYWdlICYmXG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmNyZWF0ZWRfYXQgJiZcbiAgICAgICAgICB0aGlzLmRhdGVQYXJzZXIucGFyc2VEYXRlVGltZSh0aGlzLm1lc3NhZ2UuY3JlYXRlZF9hdCkpIHx8XG4gICAgICAgICcnO1xuICAgICAgdGhpcy5wYXNlZEVkaXRlZERhdGUgPVxuICAgICAgICAodGhpcy5tZXNzYWdlICYmXG4gICAgICAgICAgdGhpcy5tZXNzYWdlLm1lc3NhZ2VfdGV4dF91cGRhdGVkX2F0ICYmXG4gICAgICAgICAgdGhpcy5kYXRlUGFyc2VyLnBhcnNlRGF0ZVRpbWUoXG4gICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLm1lc3NhZ2UubWVzc2FnZV90ZXh0X3VwZGF0ZWRfYXQpXG4gICAgICAgICAgKSkgfHxcbiAgICAgICAgJyc7XG4gICAgICB0aGlzLmhhc0F0dGFjaG1lbnQgPVxuICAgICAgICAhIXRoaXMubWVzc2FnZT8uYXR0YWNobWVudHMgJiYgISF0aGlzLm1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoO1xuICAgICAgdGhpcy5oYXNSZWFjdGlvbnMgPVxuICAgICAgICAhIXRoaXMubWVzc2FnZT8ucmVhY3Rpb25fZ3JvdXBzICYmXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMubWVzc2FnZS5yZWFjdGlvbl9ncm91cHMpLmxlbmd0aCA+IDA7XG4gICAgICB0aGlzLnJlcGx5Q291bnRQYXJhbSA9IHsgcmVwbHlDb3VudDogdGhpcy5tZXNzYWdlPy5yZXBseV9jb3VudCB9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMpIHtcbiAgICAgIHRoaXMuY2FuUmVhY3RUb01lc3NhZ2UgPVxuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdzZW5kLXJlYWN0aW9uJykgIT09IC0xO1xuICAgICAgdGhpcy5jYW5SZWNlaXZlUmVhZEV2ZW50cyA9XG4gICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLmluZGV4T2YoJ3JlYWQtZXZlbnRzJykgIT09IC0xO1xuICAgICAgdGhpcy5jYW5EaXNwbGF5UmVhZFN0YXR1cyA9XG4gICAgICAgIHRoaXMuY2FuUmVjZWl2ZVJlYWRFdmVudHMgIT09IGZhbHNlICYmXG4gICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLmluZGV4T2YoJ3JlYWQtZXZlbnRzJykgIT09IC0xO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlIHx8IGNoYW5nZXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zIHx8IGNoYW5nZXMubW9kZSkge1xuICAgICAgdGhpcy5zaG91bGREaXNwbGF5VGhyZWFkTGluayA9XG4gICAgICAgICEhdGhpcy5tZXNzYWdlPy5yZXBseV9jb3VudCAmJiB0aGlzLm1vZGUgIT09ICd0aHJlYWQnO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlIHx8IGNoYW5nZXMubW9kZSB8fCBjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucykge1xuICAgICAgdGhpcy5hcmVPcHRpb25zVmlzaWJsZSA9IHRoaXMubWVzc2FnZVxuICAgICAgICA/ICEoXG4gICAgICAgICAgICAhdGhpcy5tZXNzYWdlLnR5cGUgfHxcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS50eXBlID09PSAnZXJyb3InIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ3N5c3RlbScgfHxcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS50eXBlID09PSAnZGVsZXRlZCcgfHxcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS50eXBlID09PSAnZXBoZW1lcmFsJyB8fFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLnN0YXR1cyA9PT0gJ2ZhaWxlZCcgfHxcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdzZW5kaW5nJyB8fFxuICAgICAgICAgICAgKHRoaXMubW9kZSA9PT0gJ3RocmVhZCcgJiYgIXRoaXMubWVzc2FnZS5wYXJlbnRfaWQpIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UuZGVsZXRlZF9hdCB8fFxuICAgICAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMubGVuZ3RoID09PSAwXG4gICAgICAgICAgKVxuICAgICAgICA6IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlIHx8IGNoYW5nZXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zKSB7XG4gICAgICBpZiAodGhpcy5tZXNzYWdlKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPVxuICAgICAgICAgIHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmdldEF1dGhvcml6ZWRNZXNzYWdlQWN0aW9uc0NvdW50KFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLFxuICAgICAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnNcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaWV3SW5pdGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5oYXNUb3VjaFN1cHBvcnQgJiYgdGhpcy5tZXNzYWdlQnViYmxlPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJNZW51VHJpZ2dlckV2ZW50SGFuZGxlcnMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLm1lc3NhZ2VNZW51T3BlbmVkRm9yJC5zdWJzY3JpYmUoKGlkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoaWQgPT09IHVuZGVmaW5lZCB8fCB0aGlzLm1lc3NhZ2U/LmlkICE9PSBpZCkgJiZcbiAgICAgICAgICB0aGlzLmFyZU1lc3NhZ2VPcHRpb25zT3BlblxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VNZW51VHJpZ2dlcj8uaGlkZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICBpZiAodGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxuICBtb3VzZVB1c2hlZERvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5oYXNUb3VjaFN1cHBvcnQgfHxcbiAgICAgIGV2ZW50LmJ1dHRvbiAhPT0gMCB8fFxuICAgICAgIXRoaXMuYXJlT3B0aW9uc1Zpc2libGVcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGFydE1lc3NhZ2VNZW51U2hvd1RpbWVyKHsgZnJvbVRvdWNoOiBmYWxzZSB9KTtcbiAgfVxuXG4gIG1vdXNlUmVsZWFzZWQoKSB7XG4gICAgdGhpcy5zdG9wTWVzc2FnZU1lbnVTaG93VGltZXIoKTtcbiAgfVxuXG4gIHRvdWNoU3RhcnRlZCgpIHtcbiAgICBpZiAoIXRoaXMuYXJlT3B0aW9uc1Zpc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGFydE1lc3NhZ2VNZW51U2hvd1RpbWVyKHsgZnJvbVRvdWNoOiB0cnVlIH0pO1xuICB9XG5cbiAgdG91Y2hFbmRlZCgpIHtcbiAgICB0aGlzLnN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpO1xuICB9XG5cbiAgbWVzc2FnZUJ1YmJsZUNsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmhhc1RvdWNoU3VwcG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG91bGRQcmV2ZW50TWVzc2FnZU1lbnVDbG9zZSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnNob3VsZFByZXZlbnRNZXNzYWdlTWVudUNsb3NlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFyZU1lc3NhZ2VPcHRpb25zT3Blbikge1xuICAgICAgdGhpcy5tZXNzYWdlTWVudVRyaWdnZXI/LmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBtZXNzYWdlT3B0aW9uc0J1dHRvbkNsaWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbkNsaWNrSGFuZGxlcikge1xuICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgICBlbmFibGVkQWN0aW9uczogdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMsXG4gICAgICAgIGN1c3RvbUFjdGlvbnM6IHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLmdldFZhbHVlKCksXG4gICAgICAgIGlzTWluZTogdGhpcy5pc1NlbnRCeUN1cnJlbnRVc2VyLFxuICAgICAgICBtZXNzYWdlVGV4dEh0bWxFbGVtZW50OiB0aGlzLm1lc3NhZ2VUZXh0RWxlbWVudD8ubmF0aXZlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFyZU1lc3NhZ2VPcHRpb25zT3BlbiA9ICF0aGlzLmFyZU1lc3NhZ2VPcHRpb25zT3BlbjtcbiAgICB9XG4gIH1cblxuICBtZXNzYWdlQWN0aW9uc0JveENsaWNrZWQoZmxvYXRpbmdDb250ZW50OiBOZ3hGbG9hdFVpQ29udGVudENvbXBvbmVudCkge1xuICAgIGZsb2F0aW5nQ29udGVudC5oaWRlKCk7XG4gIH1cblxuICBnZXRBdHRhY2htZW50TGlzdENvbnRleHQoKTogQXR0YWNobWVudExpc3RDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZUlkOiB0aGlzLm1lc3NhZ2U/LmlkIHx8ICcnLFxuICAgICAgYXR0YWNobWVudHM6IHRoaXMubWVzc2FnZT8uYXR0YWNobWVudHMgfHwgW10sXG4gICAgICBwYXJlbnRNZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8ucGFyZW50X2lkLFxuICAgICAgaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcjogKHN0YXRlKSA9PlxuICAgICAgICAodGhpcy5pbWFnZUF0dGFjaG1lbnRNb2RhbFN0YXRlID0gc3RhdGUpLFxuICAgIH07XG4gIH1cblxuICBnZXRNZXNzYWdlQ29udGV4dCgpOiBTeXN0ZW1NZXNzYWdlQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMsXG4gICAgICBpc0hpZ2hsaWdodGVkOiB0aGlzLmlzSGlnaGxpZ2h0ZWQsXG4gICAgICBpc0xhc3RTZW50TWVzc2FnZTogdGhpcy5pc0xhc3RTZW50TWVzc2FnZSxcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIGN1c3RvbUFjdGlvbnM6IHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLmdldFZhbHVlKCksXG4gICAgICBwYXJzZWREYXRlOiB0aGlzLnBhcnNlZERhdGUsXG4gICAgICBzY3JvbGwkOiB0aGlzLnNjcm9sbCQsXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VUZXh0Q29udGV4dCgpOiBNZXNzYWdlVGV4dENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBpc1F1b3RlZDogZmFsc2UsXG4gICAgICBzaG91bGRUcmFuc2xhdGU6IHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAndHJhbnNsYXRpb24nLFxuICAgIH07XG4gIH1cblxuICBnZXRRdW90ZWRNZXNzYWdlVGV4dENvbnRleHQoKTogTWVzc2FnZVRleHRDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlPy5xdW90ZWRfbWVzc2FnZSxcbiAgICAgIGlzUXVvdGVkOiB0cnVlLFxuICAgICAgc2hvdWxkVHJhbnNsYXRlOiB0aGlzLmRpc3BsYXllZE1lc3NhZ2VUZXh0Q29udGVudCA9PT0gJ3RyYW5zbGF0aW9uJyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0UXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRMaXN0Q29udGV4dCgpOiBBdHRhY2htZW50TGlzdENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmlkIHx8ICcnLFxuICAgICAgYXR0YWNobWVudHM6IHRoaXMucXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzISxcbiAgICAgIHBhcmVudE1lc3NhZ2VJZDogdGhpcz8ubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnBhcmVudF9pZCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TWVzc2FnZVJlYWN0aW9uc0NvbnRleHQoKTogTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHRoaXMubWVzc2FnZT8ucmVhY3Rpb25fY291bnRzIHx8IHt9LFxuICAgICAgbGF0ZXN0UmVhY3Rpb25zOiB0aGlzLm1lc3NhZ2U/LmxhdGVzdF9yZWFjdGlvbnMgfHwgW10sXG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8uaWQsXG4gICAgICBvd25SZWFjdGlvbnM6IHRoaXMubWVzc2FnZT8ub3duX3JlYWN0aW9ucyB8fCBbXSxcbiAgICAgIG1lc3NhZ2VSZWFjdGlvbkdyb3VwczogdGhpcy5tZXNzYWdlPy5yZWFjdGlvbl9ncm91cHMgfHwge30sXG4gICAgfTtcbiAgfVxuXG4gIG1lc3NhZ2VDbGlja2VkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJlxuICAgICAgdGhpcy5tZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwM1xuICAgICkge1xuICAgICAgdGhpcy5yZXNlbmRNZXNzYWdlKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMubWVzc2FnZT8udHlwZSA9PT0gJ2Vycm9yJyAmJlxuICAgICAgdGhpcy5tZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHNcbiAgICApIHtcbiAgICAgIHRoaXMub3Blbk1lc3NhZ2VCb3VuY2VQcm9tcHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0VkaXRlZEZsYWdPcGVuZWQgPSAhdGhpcy5pc0VkaXRlZEZsYWdPcGVuZWQ7XG4gICAgfVxuICB9XG5cbiAgcmVzZW5kTWVzc2FnZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UucmVzZW5kTWVzc2FnZSh0aGlzLm1lc3NhZ2UhKTtcbiAgfVxuXG4gIHNldEFzQWN0aXZlUGFyZW50TWVzc2FnZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKHRoaXMubWVzc2FnZSk7XG4gIH1cblxuICBnZXRNZXNzYWdlQWN0aW9uc0JveENvbnRleHQoKTogTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNNaW5lOiB0aGlzLmlzU2VudEJ5Q3VycmVudFVzZXIsXG4gICAgICBlbmFibGVkQWN0aW9uczogdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMsXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBtZXNzYWdlVGV4dEh0bWxFbGVtZW50OiB0aGlzLm1lc3NhZ2VUZXh0RWxlbWVudD8ubmF0aXZlRWxlbWVudCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVsaXZlcmVkU3RhdHVzQ29udGV4dCgpOiBEZWxpdmVyZWRTdGF0dXNDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlISxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U2VuZGluZ1N0YXR1c0NvbnRleHQoKTogU2VuZGluZ1N0YXR1c0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UhLFxuICAgIH07XG4gIH1cblxuICBnZXRSZWFkU3RhdHVzQ29udGV4dCgpOiBSZWFkU3RhdHVzQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSEsXG4gICAgICByZWFkQnlUZXh0OiB0aGlzLnJlYWRCeVRleHQsXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VNZXRhZGF0YUNvbnRleHQoKTogQ3VzdG9tTWV0YWRhdGFDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlISxcbiAgICB9O1xuICB9XG5cbiAganVtcFRvTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZywgcGFyZW50TWVzc2FnZUlkPzogc3RyaW5nKSB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmp1bXBUb01lc3NhZ2UobWVzc2FnZUlkLCBwYXJlbnRNZXNzYWdlSWQpO1xuICB9XG5cbiAgb3Blbk1lc3NhZ2VCb3VuY2VQcm9tcHQoKSB7XG4gICAgdGhpcy5jaGFubmVsU2VydmljZS5ib3VuY2VkTWVzc2FnZSQubmV4dCh0aGlzLm1lc3NhZ2UpO1xuICB9XG5cbiAgZGlzcGxheVRyYW5zbGF0ZWRNZXNzYWdlKCkge1xuICAgIHRoaXMuc2hvdWxkRGlzcGxheVRyYW5zbGF0aW9uTm90aWNlID0gdHJ1ZTtcbiAgICB0aGlzLmRpc3BsYXllZE1lc3NhZ2VUZXh0Q29udGVudCA9ICd0cmFuc2xhdGlvbic7XG4gIH1cblxuICBkaXNwbGF5T3JpZ2luYWxNZXNzYWdlKCkge1xuICAgIHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID0gJ29yaWdpbmFsJztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmVhZEJ5VGV4dCgpIHtcbiAgICBjb25zdCBvdGhlcnMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICdzdHJlYW1DaGF0LmFuZCBvdGhlcnMnXG4gICAgKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgaGFzTW9yZVRoYW4xMDBNZW1iZXJzID0gKHRoaXMuY2hhbm5lbE1lbWJlckNvdW50ID8/IDApID4gMTAwO1xuICAgIHRoaXMucmVhZEJ5VGV4dCA9IHRoaXMubWVzc2FnZT8ucmVhZEJ5XG4gICAgICA/IGxpc3RVc2Vycyh0aGlzLm1lc3NhZ2UucmVhZEJ5LCAhaGFzTW9yZVRoYW4xMDBNZW1iZXJzLCBvdGhlcnMpXG4gICAgICA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJc1NlbnRCeUN1cnJlbnRVc2VyKCkge1xuICAgIHRoaXMuaXNTZW50QnlDdXJyZW50VXNlciA9IHRoaXMubWVzc2FnZT8udXNlcj8uaWQgPT09IHRoaXMudXNlcklkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXN0UmVhZFVzZXIoKSB7XG4gICAgdGhpcy5sYXN0UmVhZFVzZXIgPSB0aGlzLm1lc3NhZ2U/LnJlYWRCeT8uZmlsdGVyKFxuICAgICAgKHUpID0+IHUuaWQgIT09IHRoaXMudXNlcklkXG4gICAgKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRNZXNzYWdlTWVudVNob3dUaW1lcihvcHRpb25zOiB7IGZyb21Ub3VjaDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5zdG9wTWVzc2FnZU1lbnVTaG93VGltZXIoKTtcbiAgICBpZiAodGhpcy5zY3JvbGwkKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5zY3JvbGwkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgICAgICAgIGN1c3RvbUFjdGlvbnM6IHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLmdldFZhbHVlKCksXG4gICAgICAgICAgICBpc01pbmU6IHRoaXMuaXNTZW50QnlDdXJyZW50VXNlcixcbiAgICAgICAgICAgIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IHRoaXMubWVzc2FnZVRleHRFbGVtZW50Py5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNob3VsZFByZXZlbnRNZXNzYWdlTWVudUNsb3NlID0gIW9wdGlvbnMuZnJvbVRvdWNoO1xuICAgICAgICAgIC8vIEZpeCBmb3IgaU9TIFNhZmFyaTogaU9TIFNhZmFyaSB3b24ndCBjbG9zZSB0aGUgaW5wdXQgaWYgd2Ugb3BlbiBtZXNzYWdlIG1lbnVcbiAgICAgICAgICAvLyBUaGUgdmlydHVhbCBrZXlib2FyZCBjYW4gaGlkZSBwYXJ0cyBvZiB0aGUgbWVzc2FnZSBtZW51LCBzbyB3ZSBjbG9zZSB0aGUgaW5wdXQgaGVyZVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIHR5cGVvZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5ibHVyICE9PVxuICAgICAgICAgICAgICAndW5kZWZpbmVkJ1xuICAgICAgICAgIClcbiAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmJsdXIoKTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VNZW51VHJpZ2dlci5zaG93KCk7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UubWVzc2FnZU1lbnVPcGVuZWRGb3IkLm5leHQoXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2U/LmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlTWVudVRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICB9LCA0MDApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3Rlck1lbnVUcmlnZ2VyRXZlbnRIYW5kbGVycygpIHtcbiAgICB0aGlzLm1lc3NhZ2VCdWJibGUhLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsICgpID0+XG4gICAgICB0aGlzLnRvdWNoU3RhcnRlZCgpXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VCdWJibGUhLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCAoKSA9PlxuICAgICAgdGhpcy50b3VjaEVuZGVkKClcbiAgICApO1xuICAgIHRoaXMubWVzc2FnZUJ1YmJsZSEubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoZSkgPT5cbiAgICAgIHRoaXMubW91c2VQdXNoZWREb3duKGUpXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VCdWJibGUhLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+XG4gICAgICB0aGlzLm1vdXNlUmVsZWFzZWQoKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlQnViYmxlIS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+XG4gICAgICB0aGlzLm1lc3NhZ2VCdWJibGVDbGlja2VkKGUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcE1lc3NhZ2VNZW51U2hvd1RpbWVyKCkge1xuICAgIGlmICh0aGlzLnNob3dNZXNzYWdlTWVudVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dNZXNzYWdlTWVudVRpbWVvdXQpO1xuICAgICAgdGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtY29udGFpbmVyXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUgc3RyLWNoYXRfX21lc3NhZ2Ugc3RyLWNoYXRfX21lc3NhZ2UtLXt7XG4gICAgbWVzc2FnZT8udHlwZVxuICB9fSBzdHItY2hhdF9fbWVzc2FnZS0te3sgbWVzc2FnZT8uc3RhdHVzIH19IHt7XG4gICAgbWVzc2FnZT8udGV4dCA/ICdzdHItY2hhdF9fbWVzc2FnZS0taGFzLXRleHQnIDogJ2hhcy1uby10ZXh0J1xuICB9fSBzdHItY2hhdF9fbWVzc2FnZS1tZW51LXt7IGFyZU1lc3NhZ2VPcHRpb25zT3BlbiA/ICdvcGVuZWQnIDogJ2Nsb3NlZCcgfX1cIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLW1lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLW90aGVyXT1cIiFpc1NlbnRCeUN1cnJlbnRVc2VyXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS0tbWVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0taGFzLWF0dGFjaG1lbnRdPVwiaGFzQXR0YWNobWVudFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0td2l0aC1yZWFjdGlvbnNdPVwiaGFzUmVhY3Rpb25zXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS1oaWdobGlnaHRlZF09XCJpc0hpZ2hsaWdodGVkXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXdpdGgtdGhyZWFkLWxpbmtdPVwic2hvdWxkRGlzcGxheVRocmVhZExpbmtcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2Utc2VuZC1jYW4tYmUtcmV0cmllZF09XCJcbiAgICAobWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJiBtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwMykgfHxcbiAgICAobWVzc2FnZT8udHlwZSA9PT0gJ2Vycm9yJyAmJiBtZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHMpXG4gIFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS13aXRoLXRvdWNoLXN1cHBvcnRdPVwiaGFzVG91Y2hTdXBwb3J0XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXdpdGhvdXQtdG91Y2gtc3VwcG9ydF09XCIhaGFzVG91Y2hTdXBwb3J0XCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZXNzYWdlPy5kZWxldGVkX2F0OyBlbHNlIGRlbGV0ZWRNZXNzYWdlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2U/LnR5cGUgIT09ICdzeXN0ZW0nOyBlbHNlIHN5c3RlbU1lc3NhZ2VcIj5cbiAgICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXZhdGFyXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdCBzdHItY2hhdF9fbWVzc2FnZS1zZW5kZXItYXZhdGFyXCJcbiAgICAgICAgdHlwZT1cInVzZXJcIlxuICAgICAgICBsb2NhdGlvbj1cIm1lc3NhZ2Utc2VuZGVyXCJcbiAgICAgICAgW2ltYWdlVXJsXT1cIm1lc3NhZ2U/LnVzZXI/LmltYWdlXCJcbiAgICAgICAgW25hbWVdPVwibWVzc2FnZT8udXNlcj8ubmFtZSB8fCBtZXNzYWdlPy51c2VyPy5pZFwiXG4gICAgICAgIFt1c2VyXT1cIm1lc3NhZ2U/LnVzZXIgfHwgdW5kZWZpbmVkXCJcbiAgICAgID48L3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtaW5uZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiIWhhc1RvdWNoU3VwcG9ydCAmJiBhcmVPcHRpb25zVmlzaWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnMgc3RyLWNoYXRfX21lc3NhZ2Utb3B0aW9uc1wiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLW9wdGlvbnNcIlxuICAgICAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLW9wZW5dPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICNtZXNzYWdlQWN0aW9uc1RvZ2dsZVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWFjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1jb250YWluZXIgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb24gc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb24tLW9wdGlvbnNcIlxuICAgICAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJtZXNzYWdlTWVudUZsb2F0XCJcbiAgICAgICAgICAgIFtsb29zZVRyaWdnZXJdPVwiXG4gICAgICAgICAgICAgIG1lc3NhZ2VBY3Rpb25zU2VydmljZS5jdXN0b21BY3Rpb25DbGlja0hhbmRsZXIgPyAnbm9uZScgOiAnY2xpY2snXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2hpZGVPblNjcm9sbF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgICAgW2hpZGVPbk1vdXNlTGVhdmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVBbmltYXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3ByZXZlbnRPdmVyZmxvd109XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwb3NpdGlvbkZpeGVkXT1cInRydWVcIlxuICAgICAgICAgICAgKG9uU0hvd24pPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gdHJ1ZVwiXG4gICAgICAgICAgICAob25IaWRkZW4pPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA+IDBcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94LWJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1vcHRpb25zLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJtZXNzYWdlT3B0aW9uc0J1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlT3B0aW9uc0J1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIGljb249XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmN1c3RvbU1lc3NhZ2VNZXRhZGF0YUluc2lkZUJ1YmJsZVRlbXBsYXRlJFxuICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuY3VzdG9tTWVzc2FnZU1ldGFkYXRhSW5zaWRlQnViYmxlVGVtcGxhdGUkXG4gICAgICAgICAgICAgICAgfCBhc3luYykhO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IG1lc3NhZ2UgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtaG9zdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2RlZmF1bHRNZXNzYWdlUmVhY3Rpb25zXG4gICAgICAgICAgICBsZXQtbWVzc2FnZVJlYWN0aW9uQ291bnRzPVwibWVzc2FnZVJlYWN0aW9uQ291bnRzXCJcbiAgICAgICAgICAgIGxldC1sYXRlc3RSZWFjdGlvbnM9XCJsYXRlc3RSZWFjdGlvbnNcIlxuICAgICAgICAgICAgbGV0LW1lc3NhZ2VJZD1cIm1lc3NhZ2VJZFwiXG4gICAgICAgICAgICBsZXQtb3duUmVhY3Rpb25zPVwib3duUmVhY3Rpb25zXCJcbiAgICAgICAgICAgIGxldC1tZXNzYWdlUmVhY3Rpb25Hcm91cHM9XCJtZXNzYWdlUmVhY3Rpb25Hcm91cHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnNcbiAgICAgICAgICAgICAgW21lc3NhZ2VSZWFjdGlvbkNvdW50c109XCJtZXNzYWdlUmVhY3Rpb25Db3VudHNcIlxuICAgICAgICAgICAgICBbbGF0ZXN0UmVhY3Rpb25zXT1cImxhdGVzdFJlYWN0aW9uc1wiXG4gICAgICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICAgICAgW293blJlYWN0aW9uc109XCJvd25SZWFjdGlvbnNcIlxuICAgICAgICAgICAgICBbbWVzc2FnZVJlYWN0aW9uR3JvdXBzXT1cIm1lc3NhZ2VSZWFjdGlvbkdyb3Vwc1wiXG4gICAgICAgICAgICA+PC9zdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnM+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlUmVhY3Rpb25zVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2VSZWFjdGlvbnM7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VSZWFjdGlvbnNDb250ZXh0KClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZsb2F0LXVpLWNvbnRlbnQgI21lc3NhZ2VNZW51RmxvYXQ+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAjZGVmYXVsdE1lc3NhZ2VBY3Rpb25zQm94XG4gICAgICAgICAgICBsZXQtaXNNaW5lPVwiaXNNaW5lXCJcbiAgICAgICAgICAgIGxldC1tZXNzYWdlSW5wdXQ9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIGxldC1lbmFibGVkQWN0aW9ucz1cImVuYWJsZWRBY3Rpb25zXCJcbiAgICAgICAgICAgIGxldC1tZXNzYWdlVGV4dEh0bWxFbGVtZW50PVwibWVzc2FnZVRleHRIdG1sRWxlbWVudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0cmVhbS1tZXNzYWdlLWFjdGlvbnMtYm94XG4gICAgICAgICAgICAgIFtpc01pbmVdPVwiaXNNaW5lXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZUlucHV0XCJcbiAgICAgICAgICAgICAgW2VuYWJsZWRBY3Rpb25zXT1cImVuYWJsZWRBY3Rpb25zXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VUZXh0SHRtbEVsZW1lbnRdPVwibWVzc2FnZVRleHRIdG1sRWxlbWVudFwiXG4gICAgICAgICAgICA+PC9zdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJtZXNzYWdlQWN0aW9uc0JveENsaWNrZWQobWVzc2FnZU1lbnVGbG9hdClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibWVzc2FnZUFjdGlvbnNCb3hDbGlja2VkKG1lc3NhZ2VNZW51RmxvYXQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlQWN0aW9uc0JveFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZUFjdGlvbnNCb3g7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlQWN0aW9uc0JveENvbnRleHQoKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mbG9hdC11aS1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1idWJibGUgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1idWJibGVcIlxuICAgICAgICAgIFtjbGFzcy5zdHItY2hhdC1hbmd1bGFyX19tZXNzYWdlLWJ1YmJsZS0tYXR0YWNobWVudC1tb2RhbC1vcGVuXT1cIlxuICAgICAgICAgICAgaW1hZ2VBdHRhY2htZW50TW9kYWxTdGF0ZSA9PT0gJ29wZW5lZCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1idWJibGVcIlxuICAgICAgICAgIFtmbG9hdFVpTG9vc2VdPVwibWVzc2FnZU1lbnVGbG9hdFwiXG4gICAgICAgICAgI21lc3NhZ2VNZW51VHJpZ2dlcj1cImZsb2F0VWlMb29zZVwiXG4gICAgICAgICAgI21lc3NhZ2VCdWJibGVcbiAgICAgICAgICBsb29zZVRyaWdnZXI9XCJub25lXCJcbiAgICAgICAgICBbaGlkZU9uU2Nyb2xsXT1cImZhbHNlXCJcbiAgICAgICAgICBbaGlkZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgIFtoaWRlT25Nb3VzZUxlYXZlXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcHJldmVudE92ZXJmbG93XT1cInRydWVcIlxuICAgICAgICAgIChvblNob3duKT1cImFyZU1lc3NhZ2VPcHRpb25zT3BlbiA9IHRydWVcIlxuICAgICAgICAgIChvbkhpZGRlbik9XCJhcmVNZXNzYWdlT3B0aW9uc09wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQXR0YWNobWVudCAmJiAhbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fYXR0YWNobWVudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImF0dGFjaG1lbnRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnRleHQgfHwgKG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlICYmIGhhc0F0dGFjaG1lbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXRleHQtLXBvaW50ZXItY3Vyc29yXT1cIlxuICAgICAgICAgICAgICAobWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJlxuICAgICAgICAgICAgICAgIG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSAhPT0gNDAzKSB8fFxuICAgICAgICAgICAgICAodGhpcy5tZXNzYWdlPy50eXBlID09PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHMpIHx8XG4gICAgICAgICAgICAgIG1lc3NhZ2U/Lm1lc3NhZ2VfdGV4dF91cGRhdGVkX2F0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm1lc3NhZ2VDbGlja2VkKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm1lc3NhZ2VDbGlja2VkKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpbm5lci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS10ZXh0LWlubmVyIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10ZXh0LWlubmVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLWxpZ2h0LXRleHQtaW5uZXItLWhhcy1hdHRhY2htZW50XT1cIlxuICAgICAgICAgICAgICAgIGhhc0F0dGFjaG1lbnRcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInF1b3RlZE1lc3NhZ2VcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0F0dGFjaG1lbnQgJiYgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImF0dGFjaG1lbnRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnR5cGUgPT09ICdlcnJvcidcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2xpZW50LWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NpbXBsZS1tZXNzYWdlLS1lcnJvci1tZXNzYWdlIHN0ci1jaGF0X19tZXNzYWdlLS1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVzc2FnZT8ubW9kZXJhdGlvbl9kZXRhaWxzXCI+e3tcbiAgICAgICAgICAgICAgICAgIFwic3RyZWFtQ2hhdC5FcnJvciDCtyBVbnNlbnRcIiB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZXNzYWdlPy5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NpbXBsZS1tZXNzYWdlLS1lcnJvci1tZXNzYWdlIHN0ci1jaGF0X19tZXNzYWdlLS1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAobWVzc2FnZT8uZXJyb3JTdGF0dXNDb2RlID09PSA0MDNcbiAgICAgICAgICAgICAgICAgICAgPyBcInN0cmVhbUNoYXQuTWVzc2FnZSBGYWlsZWQgwrcgVW5hdXRob3JpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcInN0cmVhbUNoYXQuTWVzc2FnZSBGYWlsZWQgwrcgQ2xpY2sgdG8gdHJ5IGFnYWluXCJcbiAgICAgICAgICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlVGV4dFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VGV4dDtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VUZXh0Q29udGV4dCgpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAjZGVmYXVsdFRleHRcbiAgICAgICAgICAgICAgICBsZXQtbWVzc2FnZT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGxldC1pc1F1b3RlZD1cImlzUXVvdGVkXCJcbiAgICAgICAgICAgICAgICBsZXQtc2hvdWxkVHJhbnNsYXRlPVwic2hvdWxkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZS10ZXh0XG4gICAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgIFtpc1F1b3RlZF09XCJpc1F1b3RlZFwiXG4gICAgICAgICAgICAgICAgICBbc2hvdWxkVHJhbnNsYXRlXT1cInNob3VsZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInF1b3RlZC1tZXNzYWdlLXRleHRcIlxuICAgICAgICAgICAgICAgID48L3N0cmVhbS1tZXNzYWdlLXRleHQ+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtZXJyb3ItaWNvblwiXG4gICAgICAgICAgICBpY29uPVwiZXJyb3JcIlxuICAgICAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInJlcGx5Q291bnRCdXR0b247IGNvbnRleHQ6IHsgbWVzc2FnZTogbWVzc2FnZSB9XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lc3NhZ2VEYXRlQW5kU2VuZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVsZXRlZE1lc3NhZ2U+XG4gIDxkaXYgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWRlbGV0ZWQtY29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1kZWxldGVkLWlubmVyXCIgdHJhbnNsYXRlPlxuICAgICAgc3RyZWFtQ2hhdC5UaGlzIG1lc3NhZ2Ugd2FzIGRlbGV0ZWQuLi5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N5c3RlbU1lc3NhZ2U+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2Uuc3lzdGVtTWVzc2FnZVRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICBkZWZhdWx0U3lzdGVtTWVzc2FnZTtcbiAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN5c3RlbU1lc3NhZ2UgbGV0LW1lc3NhZ2VJbnB1dD1cIm1lc3NhZ2VcIj5cbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwic3lzdGVtLW1lc3NhZ2VcIiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX190ZXh0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19saW5lXCI+PC9kaXY+XG4gICAgICAgIDxwPnt7IG1lc3NhZ2VJbnB1dD8udGV4dCB9fTwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2xpbmVcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2RhdGVcIj5cbiAgICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3F1b3RlZE1lc3NhZ2U+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlXCJcbiAgICBjbGFzcz1cInF1b3RlZC1tZXNzYWdlIHN0ci1jaGF0X19xdW90ZWQtbWVzc2FnZS1wcmV2aWV3XCJcbiAgICBkYXRhLXRlc3RpZD1cInF1b3RlZC1tZXNzYWdlLWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLm1pbmVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gICAgKGNsaWNrKT1cIlxuICAgICAganVtcFRvTWVzc2FnZShcbiAgICAgICAgKG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlKSEuaWQsXG4gICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy5wYXJlbnRfaWRcbiAgICAgIClcbiAgICBcIlxuICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgIGp1bXBUb01lc3NhZ2UoXG4gICAgICAgIChtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZSkhLmlkLFxuICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8ucGFyZW50X2lkXG4gICAgICApXG4gICAgXCJcbiAgPlxuICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICBkYXRhLXRlc3RpZD1cInFvdXRlZC1tZXNzYWdlLWF2YXRhclwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0IHN0ci1jaGF0X19tZXNzYWdlLXNlbmRlci1hdmF0YXJcIlxuICAgICAgdHlwZT1cInVzZXJcIlxuICAgICAgbG9jYXRpb249XCJxdW90ZWQtbWVzc2FnZS1zZW5kZXJcIlxuICAgICAgW2ltYWdlVXJsXT1cIm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy51c2VyPy5pbWFnZVwiXG4gICAgICBbbmFtZV09XCJcbiAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXI/Lm5hbWUgfHwgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXI/LmlkXG4gICAgICBcIlxuICAgICAgW3VzZXJdPVwibWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXIgfHwgdW5kZWZpbmVkXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZS1pbm5lciBzdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtYnViYmxlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzICYmXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2RlZmF1bHRBdHRhY2htZW50c1xuICAgICAgICAgIGxldC1tZXNzYWdlSWQ9XCJtZXNzYWdlSWRcIlxuICAgICAgICAgIGxldC1hdHRhY2htZW50cz1cImF0dGFjaG1lbnRzXCJcbiAgICAgICAgICBsZXQtcGFyZW50TWVzc2FnZUlkPVwicGFyZW50TWVzc2FnZUlkXCJcbiAgICAgICAgICBsZXQtaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcj1cImltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgICBbcGFyZW50TWVzc2FnZUlkXT1cInBhcmVudE1lc3NhZ2VJZFwiXG4gICAgICAgICAgICAoaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlKT1cImltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5hdHRhY2htZW50TGlzdFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICBkZWZhdWx0QXR0YWNobWVudHM7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRRdW90ZWRNZXNzYWdlQXR0YWNobWVudExpc3RDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lc3NhZ2VUZXh0VGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICAgIGRlZmF1bHRUZXh0O1xuICAgICAgICAgICAgY29udGV4dDogZ2V0UXVvdGVkTWVzc2FnZVRleHRDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICNkZWZhdWx0VGV4dFxuICAgICAgICAgIGxldC1tZXNzYWdlPVwibWVzc2FnZVwiXG4gICAgICAgICAgbGV0LWlzUXVvdGVkPVwiaXNRdW90ZWRcIlxuICAgICAgICAgIGxldC1zaG91bGRUcmFuc2xhdGU9XCJzaG91bGRUcmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1tZXNzYWdlLXRleHRcbiAgICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgW2lzUXVvdGVkXT1cImlzUXVvdGVkXCJcbiAgICAgICAgICAgIFtzaG91bGRUcmFuc2xhdGVdPVwic2hvdWxkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgPjwvc3RyZWFtLW1lc3NhZ2UtdGV4dD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZURhdGVBbmRTZW5kZXI+XG4gIDxuZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaG91bGREaXNwbGF5VHJhbnNsYXRpb25Ob3RpY2VcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdHJhbnNsYXRpb24tbm90aWNlXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwidHJhbnNsYXRpb24tbm90aWNlXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAndHJhbnNsYXRpb24nXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWUtb3JpZ2luYWxcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlPcmlnaW5hbE1lc3NhZ2UoKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJkaXNwbGF5T3JpZ2luYWxNZXNzYWdlKClcIlxuICAgICAgPlxuICAgICAgICBzdHJlYW1DaGF0LlNlZSBvcmlnaW5hbCAoYXV0b21hdGljYWxseSB0cmFuc2xhdGVkKVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAnb3JpZ2luYWwnXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWUtdHJhbnNsYXRpb25cIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlUcmFuc2xhdGVkTWVzc2FnZSgpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImRpc3BsYXlUcmFuc2xhdGVkTWVzc2FnZSgpXCJcbiAgICAgID5cbiAgICAgICAgc3RyZWFtQ2hhdC5TZWUgdHJhbnNsYXRpb25cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiY3VzdG9tVGVtcGxhdGVzU2VydmljZS5jdXN0b21NZXNzYWdlTWV0YWRhdGFUZW1wbGF0ZSQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19jdXN0b20tbWVzc2FnZS1tZXRhZGF0YVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmN1c3RvbU1lc3NhZ2VNZXRhZGF0YVRlbXBsYXRlJCB8IGFzeW5jKSE7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlTWV0YWRhdGFDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWRhdGEgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLWRhdGEgc3RyLWNoYXRfX21lc3NhZ2UtbWV0YWRhdGFcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZXNzYWdlU3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiIWlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmRlclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLW5hbWUgc3RyLWNoYXRfX21lc3NhZ2Utc2VuZGVyLW5hbWVcIlxuICAgICAgPlxuICAgICAgICB7eyBtZXNzYWdlPy51c2VyPy5uYW1lID8gbWVzc2FnZT8udXNlcj8ubmFtZSA6IG1lc3NhZ2U/LnVzZXI/LmlkIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBkYXRhLXRlc3RpZD1cImRhdGVcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10aW1lc3RhbXAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXRpbWVcIlxuICAgICAgPlxuICAgICAgICB7eyBwYXJzZWREYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZT8ubWVzc2FnZV90ZXh0X3VwZGF0ZWRfYXRcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImVkaXRlZC1mbGFnXCJcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNhZ2Utc2ltcGxlLWVkaXRlZFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPnN0cmVhbUNoYXQuRWRpdGVkPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZWRpdGVkLXRpbWVzdGFtcFwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1lZGl0ZWQtdGltZXN0YW1wXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnc3RyLWNoYXRfX21lc3NhZ2UtZWRpdGVkLXRpbWVzdGFtcC0tb3Blbic6IGlzRWRpdGVkRmxhZ09wZW5lZCxcbiAgICAgICAgICAgICdzdHItY2hhdF9fbWVzc2FnZS1lZGl0ZWQtdGltZXN0YW1wLS1jb2xsYXBzZWQnOiAhaXNFZGl0ZWRGbGFnT3BlbmVkXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+c3RyZWFtQ2hhdC5FZGl0ZWQ8L3NwYW4+XG4gICAgICAgICAgPHRpbWVcbiAgICAgICAgICAgIGRhdGVUaW1lPVwie3sgbWVzc2FnZT8ubWVzc2FnZV90ZXh0X3VwZGF0ZWRfYXQgfX1cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBtZXNzYWdlPy5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdCB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcGFzZWRFZGl0ZWREYXRlIH19XG4gICAgICAgICAgPC90aW1lPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZVN0YXR1cz5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBpc1NlbnRCeUN1cnJlbnRVc2VyICYmXG4gICAgICAoKGlzTGFzdFNlbnRNZXNzYWdlICYmIG1lc3NhZ2U/LnN0YXR1cyA9PT0gJ3JlY2VpdmVkJykgfHxcbiAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnc2VuZGluZycpXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5zdGF0dXMgPT09ICdzZW5kaW5nJzsgZWxzZSBzZW50U3RhdHVzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VuZGluZ1N0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VudFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtb2RlID09PSAnbWFpbicgJiYgaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZCAmJiBjYW5EaXNwbGF5UmVhZFN0YXR1cztcbiAgICAgICAgICBlbHNlIGRlbGl2ZXJlZFN0YXR1c1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVhZFN0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlbGl2ZXJlZFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5kZWxpdmVyZWRTdGF0dXNUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgICAgIGRlZmF1bHREZWxpdmVyZWRTdGF0dXM7XG4gICAgICAgICAgY29udGV4dDogZ2V0RGVsaXZlcmVkU3RhdHVzQ29udGV4dCgpXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHREZWxpdmVyZWRTdGF0dXM+XG4gICAgICA8c3BhblxuICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdtYWluJ1wiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cyBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzLWFuZ3VsYXIgc3RyLWNoYXRfX21lc3NhZ2Utc3RhdHVzXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZWxpdmVyZWQtaW5kaWNhdG9yXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJmbG9hdGluZ0NvbnRlbnRcIlxuICAgICAgICBsb29zZVBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIFtsb29zZVRyaWdnZXJdPVwiaGFzVG91Y2hTdXBwb3J0ID8gJ2NsaWNrJyA6ICdob3ZlcidcIlxuICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNmbG9hdGluZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwIHN0ci1jaGF0X190b29sdGlwLWFuZ3VsYXJcIj5cbiAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5EZWxpdmVyZWRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zsb2F0LXVpLWNvbnRlbnQ+XG4gICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZGVsaXZlcmVkLWljb25cIlxuICAgICAgICAgIGljb249XCJkZWxpdmVyZWRcIlxuICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VuZGluZ1N0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5zZW5kaW5nU3RhdHVzVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICBkZWZhdWx0U2VuZGluZ1N0YXR1cztcbiAgICAgICAgICBjb250ZXh0OiBnZXRTZW5kaW5nU3RhdHVzQ29udGV4dCgpXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTZW5kaW5nU3RhdHVzPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhciBzdHItY2hhdF9fbWVzc2FnZS1zdGF0dXNcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmRpbmctaW5kaWNhdG9yXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJmbG9hdGluZ0NvbnRlbnRcIlxuICAgICAgICBsb29zZVBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIFtsb29zZVRyaWdnZXJdPVwiaGFzVG91Y2hTdXBwb3J0ID8gJ2NsaWNrJyA6ICdob3ZlcidcIlxuICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNmbG9hdGluZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwIHN0ci1jaGF0X190b29sdGlwLWFuZ3VsYXJcIj5cbiAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5TZW5kaW5nLi4uXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mbG9hdC11aS1jb250ZW50PlxuICAgICAgICA8c3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yLXBsYWNlaG9sZGVyXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJsb2FkaW5nLWluZGljYXRvclwiXG4gICAgICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvci1wbGFjZWhvbGRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjcmVhZFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5yZWFkU3RhdHVzVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICBkZWZhdWx0UmVhZFN0YXR1cztcbiAgICAgICAgICBjb250ZXh0OiBnZXRSZWFkU3RhdHVzQ29udGV4dCgpXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRSZWFkU3RhdHVzIGxldC1yZWFkQnlUZXh0PVwicmVhZEJ5VGV4dFwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhciBzdHItY2hhdF9fbWVzc2FnZS1zdGF0dXNcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlYWQtaW5kaWNhdG9yXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJmbG9hdGluZ0NvbnRlbnRcIlxuICAgICAgICBsb29zZVBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIFtsb29zZVRyaWdnZXJdPVwiaGFzVG91Y2hTdXBwb3J0ID8gJ2NsaWNrJyA6ICdob3ZlcidcIlxuICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNmbG9hdGluZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcCBzdHItY2hhdF9fdG9vbHRpcC1hbmd1bGFyXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVhZC1ieS10b29sdGlwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyByZWFkQnlUZXh0IH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmxvYXQtdWktY29udGVudD5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJyZWFkXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVwbHlDb3VudEJ1dHRvbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXJlcGx5LWJ1dHRvbiBzdHItY2hhdF9fbWVzc2FnZS1yZXBsaWVzLWNvdW50LWJ1dHRvbi13cmFwcGVyXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG91bGREaXNwbGF5VGhyZWFkTGlua1wiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UudGhyZWFkTGlua0J1dHRvbiQgfCBhc3luYykgfHwgZGVmYXVsdEJ1dHRvbjtcbiAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IG1lc3NhZ2UgfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QnV0dG9uIGxldC1tZXNzYWdlPVwibWVzc2FnZVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlcGxpZXMtY291bnQtYnV0dG9uXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZXBseS1jb3VudC1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwic2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKClcIlxuICAgICAgPlxuICAgICAgICB7e21lc3NhZ2U/LnJlcGx5X2NvdW50ID09PSAxID8gKCdzdHJlYW1DaGF0LjEgcmVwbHknIHwgdHJhbnNsYXRlKSA6ICgnc3RyZWFtQ2hhdC57eyByZXBseUNvdW50IH19XG4gICAgICAgIHJlcGxpZXMnIHwgdHJhbnNsYXRlOnJlcGx5Q291bnRQYXJhbSl9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2F0dGFjaG1lbnRzVGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZVxuICAgICNkZWZhdWx0QXR0YWNobWVudHNcbiAgICBsZXQtbWVzc2FnZUlkPVwibWVzc2FnZUlkXCJcbiAgICBsZXQtYXR0YWNobWVudHM9XCJhdHRhY2htZW50c1wiXG4gICAgbGV0LXBhcmVudE1lc3NhZ2VJZD1cInBhcmVudE1lc3NhZ2VJZFwiXG4gICAgbGV0LWltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXI9XCJpbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyXCJcbiAgPlxuICAgIDxzdHJlYW0tYXR0YWNobWVudC1saXN0XG4gICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICBbYXR0YWNobWVudHNdPVwiYXR0YWNobWVudHNcIlxuICAgICAgW3BhcmVudE1lc3NhZ2VJZF09XCJwYXJlbnRNZXNzYWdlSWRcIlxuICAgICAgKGltYWdlTW9kYWxTdGF0ZUNoYW5nZSk9XCJpbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICAgID48L3N0cmVhbS1hdHRhY2htZW50LWxpc3Q+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuYXR0YWNobWVudExpc3RUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgZGVmYXVsdEF0dGFjaG1lbnRzO1xuICAgICAgY29udGV4dDogZ2V0QXR0YWNobWVudExpc3RDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|