tnx-shared 5.3.212 → 5.3.213
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/bundles/tnx-shared.umd.js +6 -5
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/components/tn-tinymce/tn-tinymce.component.d.ts.map +1 -1
- package/esm2015/components/tn-tinymce/tn-tinymce.component.js +7 -6
- package/fesm2015/tnx-shared.js +6 -5
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tn-tinymce.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/tn-tinymce/tn-tinymce.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,YAAY,EAAc,QAAQ,EAAS,SAAS,EAAE,MAAM,EAAqB,MAAM,eAAe,CAAC;AAC1I,OAAO,EAAE,oBAAoB,EAAqB,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAGtF,qBAaa,kBAAmB,SAAQ,aAAc,YAAW,MAAM,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS;IAuCxG,sBAAsB,EAAE,qBAAqB;IACpD,SAAS,CAAC,gBAAgB,EAAE,eAAe;IAC3C,SAAS,CAAC,YAAY,EAAE,mBAAmB;IAC3C,SAAS,CAAC,kBAAkB,EAAE,iBAAiB;IAzCf,YAAY,EAAE,uBAAuB,CAAC;IAEjE,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAW;IACxD,QAAQ,UAAS;IACjB,QAAQ,UAAS;IACjB,MAAM,SAAO;IACb,KAAK,SAAM;IACX,WAAW,EAAE,MAAM,CAAM;IACzB,YAAY,MAAC;IAEZ,MAAM,oBAA2B;IACjC,OAAO,oBAA2B;IAClC,MAAM,oBAA2B;IACjC,SAAS,oBAA2B;IACpC,OAAO,oBAA2B;IAE5C,KAAK,EAAE,GAAG,CAAM;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,QAAQ,CAAC;IACpB,EAAE,SAAa;IACf,MAAM,EAAE,GAAG,CAAC;IACZ,YAAY,EAAE,GAAG,CAAM;IAEvB,MAAM,UAAS;IACf,SAAS,EAAE,OAAO,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAM;IACnB,SAAS,UAAS;IAClB,EAAE,UAAS;IACX,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,GAAG,CAAmB;IACzC,SAAS,YAGN;IACH,YAAY,EAAE,OAAO,CAAS;gBAG1B,QAAQ,EAAE,QAAQ,EACX,sBAAsB,EAAE,qBAAqB,EAC1C,gBAAgB,EAAE,eAAe,EACjC,YAAY,EAAE,mBAAmB,EACjC,kBAAkB,EAAE,iBAAiB;IASnD,QAAQ;IAKR,eAAe,IAAI,IAAI;IAevB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAQ1B,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAG/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAGhC,gBAAgB,CAAC,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAI5C,UAAU,CAAC,IAAI,KAAK;IAKpB,sBAAsB,CAAC,IAAI,KAAA;
|
|
1
|
+
{"version":3,"file":"tn-tinymce.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/tn-tinymce/tn-tinymce.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -215,6 +215,7 @@ export class TnTinymceComponent extends ComponentBase {
|
|
|
215
215
|
content_css: [
|
|
216
216
|
'/assets/vendor/tinymce/custom.css'
|
|
217
217
|
],
|
|
218
|
+
custom_elements: "style,link,~link",
|
|
218
219
|
imagetools_toolbar: 'rotateleft rotateright | flipv fliph | editimage imageoptions',
|
|
219
220
|
language: 'vi_VN',
|
|
220
221
|
statusbar: false,
|
|
@@ -244,31 +245,31 @@ export class TnTinymceComponent extends ComponentBase {
|
|
|
244
245
|
},
|
|
245
246
|
mobile: {
|
|
246
247
|
theme: 'silver',
|
|
247
|
-
plugins: ['advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'],
|
|
248
|
+
plugins: ['fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'],
|
|
248
249
|
}
|
|
249
250
|
};
|
|
250
251
|
if (mode == 'full') {
|
|
251
252
|
config.plugins = [
|
|
252
|
-
'advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus editFileNew addNews'
|
|
253
|
+
'fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus editFileNew addNews'
|
|
253
254
|
];
|
|
254
255
|
config.toolbar = 'formatselect | bold italic Strikethrough forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | table link editFileNew addNews | print removeformat undo redo | fullscreen ';
|
|
255
256
|
config.mobile.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
256
257
|
return config;
|
|
257
258
|
}
|
|
258
259
|
else if (mode == 'medium') {
|
|
259
|
-
config.plugins = ['advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
260
|
+
config.plugins = ['fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
260
261
|
config.toolbar = 'formatselect | bold italic Strikethrough forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | table link | print removeformat undo redo | fullscreen';
|
|
261
262
|
config.mobile.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
262
263
|
return config;
|
|
263
264
|
}
|
|
264
265
|
else if (mode == 'simple') {
|
|
265
|
-
config.plugins = ['advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
266
|
+
config.plugins = ['fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
266
267
|
config.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
267
268
|
config.mobile.toolbar = 'fullscreen | bold italic Strikethrough forecolor backcolor | bullist numlist';
|
|
268
269
|
return config;
|
|
269
270
|
}
|
|
270
271
|
else {
|
|
271
|
-
config.plugins = ['advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
272
|
+
config.plugins = ['fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
272
273
|
config.toolbar = 'formatselect | bold italic Strikethrough forecolor backcolor| alignleft aligncenter alignright alignjustify | bullist numlist';
|
|
273
274
|
config.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
274
275
|
}
|
|
@@ -462,4 +463,4 @@ TnTinymceComponent.propDecorators = {
|
|
|
462
463
|
onChanged: [{ type: Output }],
|
|
463
464
|
onKeyUp: [{ type: Output }]
|
|
464
465
|
};
|
|
465
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tdGlueW1jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy90bi10aW55bWNlL3RuLXRpbnltY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBZ0J0RixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsYUFBYTtJQXFDakQsWUFDSSxRQUFrQixFQUNYLHNCQUE2QyxFQUMxQyxnQkFBaUMsRUFDakMsWUFBaUMsRUFDakMsa0JBQXFDO1FBRS9DLEtBQUssQ0FBQyxRQUFRLENB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RSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OztZQXZkSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLHVpRUFBMEM7Z0JBRTFDLFNBQVMsRUFBRTtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO3dCQUNqRCxLQUFLLEVBQUUsSUFBSTtxQkFDZDtvQkFDRCx1QkFBdUI7aUJBQzFCOzthQUNKOzs7WUExQjRELFFBQVE7WUFHNUQscUJBQXFCO1lBTXJCLGVBQWU7WUFFZixtQkFBbUI7WUFIbkIsaUJBQWlCOzs7MkJBb0JyQixTQUFTLFNBQUMsdUJBQXVCO21CQUVqQyxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSztxQkFDTCxLQUFLO29CQUNMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLO3FCQUVMLE1BQU07c0JBQ04sTUFBTTtxQkFDTixNQUFNO3dCQUNOLE1BQU07c0JBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSAnbmFub2lkJztcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xuaW1wb3J0IHsgUG9wdXBTaXplIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBDb21DdHhDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25maWdzL2NvbXBvbmVudC1jb250ZXh0LmNvbnN0YW50JztcbmltcG9ydCB7IEZpbGVPYmplY3RTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLW9iamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXF1YXRpb25FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9lcXVhdGlvbi1lZGl0b3IvZXF1YXRpb24tZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlRXhwbG9yZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWV4cGxvcmVyLnNlcnZpY2UnO1xuZGVjbGFyZSBsZXQgdGlueW1jZTogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RuLXRpbnltY2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90bi10aW55bWNlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90bi10aW55bWNlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVG5UaW55bWNlQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENvbXBvbmVudENvbnRleHRTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUblRpbnltY2VDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKEVxdWF0aW9uRWRpdG9yQ29tcG9uZW50KSBlcXVhdGlvbkZvcm06IEVxdWF0aW9uRWRpdG9yQ29tcG9uZW50O1xuXG4gICAgQElucHV0KCkgbW9kZT86ICdiYXNpYycgfCAnbWVkaXVtJyB8ICdmdWxsJyB8ICdzaW1wbGUnID0gJ2Jhc2ljJztcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgaGVpZ2h0ID0gMjAwO1xuICAgIEBJbnB1dCgpIGZpZWxkID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIGxhbmd1YWdlQ29kZTtcblxuICAgIEBPdXRwdXQoKSBvbkluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkga2V5ZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uS2V5VXAgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIG1vZGVsOiBhbnkgPSAnJztcbiAgICBvbkNoYW5nZTogRnVuY3Rpb247XG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbjtcbiAgICBpZCA9IG5hbm9pZCg4KTtcbiAgICBlZGl0b3I6IGFueTtcbiAgICBkYXRhRXF1YXRpb246IGFueSA9IHt9O1xuXG4gICAgaXNTaG93ID0gZmFsc2U7XG4gICAgaXNBZGROZXdzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtb2RlcyA9IHt9O1xuICAgIGlzQWRkRmlsZSA9IGZhbHNlO1xuICAgIGlzID0gZmFsc2U7XG4gICAgaGVhZGVyOiBzdHJpbmc7XG4gICAgZXF1YXRpb25Gb3JtTW9kZWw6IGFueSA9IHsgc2hvdzogZmFsc2UgfTtcbiAgICBwb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHtcbiAgICAgICAgd2lkdGg6IDExMDAsXG4gICAgICAgIGhlaWdodDogNjUwXG4gICAgfSk7XG4gICAgc2hvd1RlbXBsYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgX2RldmljZURldGVjdG9yU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX25vdGlmaWVyU2VydmljZTogTm90aWZpZXJTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX2ZpbGVTZXJ2aWNlOiBGaWxlRXhwbG9yZXJTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX2ZpbGVPYmplY3RTZXJ2aWNlOiBGaWxlT2JqZWN0U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIGNvbnN0IG0gPSBbJ2Jhc2ljJywgJ21lZGl1bScsICdmdWxsJywgJ3NpbXBsZSddO1xuICAgICAgICBtLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vZGVzW3hdID0gdGhpcy5nZXRUaW55TWNlQ29uZmlnQnlNb2RlKHgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVDb250ZW50SW5zZXJ0KCk7XG4gICAgICAgIHRoaXMub25Jbml0LmVtaXQodGhpcyk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBsZXQgbW9kZSA9IHRoaXMubW9kZTtcbiAgICAgICAgaWYgKCF0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNEZXNrdG9wKCkpIHtcbiAgICAgICAgICAgIG1vZGUgPSAnc2ltcGxlJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLm1vZGVzW21vZGVdO1xuICAgICAgICBjb25maWcuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICBjb25maWcucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGlueW1jZS5pbml0KGNvbmZpZyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSBvYmogPSAnJztcbiAgICAgICAgdGhpcy5tb2RlbCA9IG9iajtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5zZXRDb250ZW50KHRoaXMubW9kZWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG9wZW5EaWFsb2coZGF0YSA9IHt9KSB7XG4gICAgICAgIHRoaXMuZXF1YXRpb25Gb3JtTW9kZWwuc2hvdyA9IHRydWU7XG4gICAgICAgIHRoaXMuZXF1YXRpb25Gb3JtTW9kZWwuZGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgZ2V0VGlueU1jZUNvbmZpZ0J5TW9kZShtb2RlKSB7XG4gICAgICAgIGNvbnN0ICR0aGlzID0gdGhpcztcblxuICAgICAgICB0aW55bWNlLlBsdWdpbk1hbmFnZXIuYWRkKCdhZGROZXdzJywgZnVuY3Rpb24gKGVkaXRvcikge1xuICAgICAgICAgICAgY29uc3Qgb3BlbkRpYWxvZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAkdGhpcy5oZWFkZXIgPSAnVGjDqm0vQ2jhu41uIHRpbiBiw6BpJztcbiAgICAgICAgICAgICAgICAkdGhpcy5pc0FkZE5ld3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICR0aGlzLmlzQWRkRmlsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICR0aGlzLnBvcHVwU2l6ZSA9IHsgd2lkdGg6IDEyMDAsIGhlaWdodDogNzAwIH07XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlZGl0b3IudWkucmVnaXN0cnkuYWRkQnV0dG9uKCdhZGROZXdzJywge1xuICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdUaMOqbS9DaMOobiB0aW4gYsOgaSB2w6BvIG7hu5lpIGR1bmcnLFxuICAgICAgICAgICAgICAgIGljb246ICdub24tYnJlYWtpbmcnLFxuICAgICAgICAgICAgICAgIG9uQWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgICAgICB0aW55bWNlLlBsdWdpbk1hbmFnZXIuYWRkKCd0ZW1wbGF0ZScsIGZ1bmN0aW9uIChlZGl0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wZW5EaWFsb2cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgJHRoaXMuaGVhZGVyID0gJ1Row6ptL0No4buNbiB0ZW1wbGF0ZSc7XG4gICAgICAgICAgICAgICAgJHRoaXMuc2hvd1RlbXBsYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAkdGhpcy5wb3B1cFNpemUgPSB7IHdpZHRoOiAxMjAwLCBoZWlnaHQ6IDcwMCB9O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigndGVtcGxhdGUnLCB7XG4gICAgICAgICAgICAgICAgdG9vbHRpcDogJ1RlbXBsYXRlJyxcbiAgICAgICAgICAgICAgICBpY29uOiAndGVtcGxhdGUnLFxuICAgICAgICAgICAgICAgIG9uQWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGlueW1jZS5QbHVnaW5NYW5hZ2VyLmFkZCgnZWRpdEZpbGVOZXcnLCBmdW5jdGlvbiAoZWRpdG9yKSB7XG4gICAgICAgICAgICBjb25zdCBvcGVuRGlhbG9nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICR0aGlzLmhlYWRlciA9ICdUaMOqbS9DaOG7iW5oIHPhu61hIGZpbGUgY8OhIG5ow6JuJztcbiAgICAgICAgICAgICAgICAkdGhpcy5pc0FkZE5ld3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAkdGhpcy5pc0FkZEZpbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICR0aGlzLnBvcHVwU2l6ZSA9IHsgd2lkdGg6IDEyMDAsIGhlaWdodDogNzAwIH07XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlZGl0b3IudWkucmVnaXN0cnkuYWRkQnV0dG9uKCdlZGl0RmlsZU5ldycsIHtcbiAgICAgICAgICAgICAgICB0b29sdGlwOiAnVGjDqm0vQ2jDqG4g4bqjbmgsIHZpZGVvLCBmaWxlIHbDoG8gbuG7mWkgZHVuZycsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2R1cGxpY2F0ZScsXG4gICAgICAgICAgICAgICAgb25BY3Rpb246IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlbkRpYWxvZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjYWxsYmFja0Z1bmMgPSBlZGl0b3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGVkaXRvci5zZXRNb2RlKCdyZWFkb25seScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZWRCb2R5ID0galF1ZXJ5KGVkaXRvci5pZnJhbWVFbGVtZW50KS5jb250ZW50cygpLmZpbmQoJ2JvZHknKTtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckhvbGRlciA9IGVkaXRvci5pZnJhbWVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2RldmljZURldGVjdG9yU2VydmljZS5pc0Rlc2t0b3AoKSkge1xuICAgICAgICAgICAgICAgIGVkQm9keS5hZGRDbGFzcygnbW9iaWxlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVkQm9keS5vbignYmx1cicsIGUgPT4ge1xuICAgICAgICAgICAgICAgIGVkaXRvckhvbGRlci5jbGFzc0xpc3QucmVtb3ZlKCd0aW55bWNlLWZvY3VzJyk7XG4gICAgICAgICAgICB9KS5vbignZm9jdXMnLCBlID0+IHtcbiAgICAgICAgICAgICAgICBlZGl0b3JIb2xkZXIuY2xhc3NMaXN0LmFkZCgndGlueW1jZS1mb2N1cycpO1xuICAgICAgICAgICAgfSkub24oJ3Bhc3RlJywgKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJlZ2luID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9IGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLnR5cGVzO1xuICAgICAgICAgICAgICAgIGlmICgoKHR5cGVzIGluc3RhbmNlb2YgRE9NU3RyaW5nTGlzdCkgJiYgdHlwZXMuY29udGFpbnMoJ3RleHQvaHRtbCcpKSB8fCAodHlwZXMuaW5kZXhPZiAmJiAodHlwZXMuaW5kZXhPZigndGV4dC9odG1sJykgIT09IC0xKSB8fCB0eXBlcy5pbmRleE9mKCdGaWxlcycpICE9PSAtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCfEkGFuZyB0aeG6v24gaMOgbmggeOG7rSBsw70gbuG7mWkgZHVuZywgdnVpIGzDsm5nIGNo4budIHRyb25nIGdpw6J5IGzDoXQhJyk7XG4gICAgICAgICAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID0gZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuZmlsZXM7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXN0ZWREYXRhID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXN0ZWRSdGZEYXRhID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMgaW5zdGFuY2VvZiBET01TdHJpbmdMaXN0ICYmIGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLnR5cGVzLmNvbnRhaW5zKCd0ZXh0L2h0bWwnKSkgfHwgKGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLnR5cGVzLmluZGV4T2YgJiYgZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5kZXhPZigndGV4dC9odG1sJykgIT09IC0xKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVkRGF0YSA9IGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvaHRtbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMgaW5zdGFuY2VvZiBET01TdHJpbmdMaXN0KSAmJiBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5jb250YWlucygndGV4dC9ydGYnKSkgfHwgKGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLnR5cGVzLmluZGV4T2YgJiYgZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5kZXhPZigndGV4dC9ydGYnKSAhPT0gLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVkUnRmRGF0YSA9IGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcnRmJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBhc3RlKHR5cGVzLCBwYXN0ZWREYXRhLCBwYXN0ZWRSdGZEYXRhLCBmaWxlcykudGhlbigoY29udGVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVGltZSB0byBydW4gaGFuZGxlUGFzdGUgaXMgJyArIChlbmQuZ2V0VGltZSgpIC0gYmVnaW4uZ2V0VGltZSgpKSArICdtcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoLzwhXFxbaWZbXFxzXFxTXSo/Pi9nbSwgJycpLnJlcGxhY2UoLzwhXFxbZW5kaWZbXFxzXFxTXSo/Pi9nbSwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gdGhpcy5ub3JtYWxpemVIVE1MKGNvbnRlbnQsICc8IVtpZiAhc3VwcG9ydExpc3RzXT4nLCAnPCFbZW5kaWZdPicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gdGhpcy5ub3JtYWxpemVIVE1MKGNvbnRlbnQsICc8IVtpZiAhbXNFcXVhdGlvbl0+JywgJzwhW2VuZGlmXT4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRDb250ZW50JywgZmFsc2UsIGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLm9uKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKFN0cmluZy5mcm9tQ2hhckNvZGUoZS53aGljaCkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleURvd24oZSwgQ29tQ3R4Q29uc3RhbnRzLlJPT1QuS0VZX0RPV05fQ1RSTF9TKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZS53aGljaCA9PSAyNykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5RG93bihlLCBDb21DdHhDb25zdGFudHMuUk9PVC5LRVlfRE9XTl9FU0MpO1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkub24oJ2RibGNsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSAnaW1nJyAmJiBlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2xhdGV4JykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKHsgY29udGVudDogZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdhbHQnKSwgc3R5bGU6IGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgnc3R5bGUnKSwgaGVpZ2h0OiBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLm9uKCdrZXl1cCcsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGVkaXRvci5nZXRDb250ZW50KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShjb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5VXAuZW1pdChjb250ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBlZGl0b3Iub24oJ2JsdXInLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQmx1cigpO1xuICAgICAgICAgICAgfSkub24oJ2NoYW5nZScsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGVkaXRvci5nZXRDb250ZW50KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShjb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlZC5lbWl0KGNvbnRlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVkaXRvci5zZXRDb250ZW50KHRoaXMubW9kZWwpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xuICAgICAgICAgICAgc2VsZWN0b3I6ICcjJyArIHRoaXMuaWQsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgICAgICAgY29udGVudF9jc3M6IFtcbiAgICAgICAgICAgICAgICAnL2Fzc2V0cy92ZW5kb3IvdGlueW1jZS9jdXN0b20uY3NzJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGltYWdldG9vbHNfdG9vbGJhcjogJ3JvdGF0ZWxlZnQgcm90YXRlcmlnaHQgfCBmbGlwdiBmbGlwaCB8IGVkaXRpbWFnZSBpbWFnZW9wdGlvbnMnLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICd2aV9WTicsXG4gICAgICAgICAgICBzdGF0dXNiYXI6IGZhbHNlLFxuICAgICAgICAgICAgcmVsYXRpdmVfdXJsczogZmFsc2UsXG4gICAgICAgICAgICBjb252ZXJ0X3VybHM6IGZhbHNlLFxuICAgICAgICAgICAgdGFiZm9jdXNfZWxlbWVudHM6ICc6cHJldiw6bmV4dCcsXG4gICAgICAgICAgICBpbml0X2luc3RhbmNlX2NhbGxiYWNrOiBjYWxsYmFja0Z1bmMsXG4gICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24gKGVkaXRvcikge1xuICAgICAgICAgICAgICAgIGVkaXRvci5hZGRTaG9ydGN1dCgnY3RybCtFJywgJ0NhbkdpdWEnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvci5leGVjQ29tbWFuZCgnSnVzdGlmeUNlbnRlcicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBlZGl0b3IuYWRkU2hvcnRjdXQoJ2N0cmwrTCcsICdDYW5UcmFpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZXhlY0NvbW1hbmQoJ0p1c3RpZnlMZWZ0JywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGVkaXRvci5hZGRTaG9ydGN1dCgnY3RybCtSJywgJ0NhblBoYWknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvci5leGVjQ29tbWFuZCgnSnVzdGlmeVJpZ2h0JywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGVkaXRvci5hZGRTaG9ydGN1dCgnY3RybCtKJywgJ0NhbkRldScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmV4ZWNDb21tYW5kKCdKdXN0aWZ5RnVsbCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBlZGl0b3IuYWRkU2hvcnRjdXQoJ0FsdCtNJywgJ0x1aVZhbycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmV4ZWNDb21tYW5kKCdpbmRlbnQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZWRpdG9yLmFkZFNob3J0Y3V0KCdBbHQrTicsICdMdWlSYScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmV4ZWNDb21tYW5kKCdvdXRkZW50JywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vYmlsZToge1xuICAgICAgICAgICAgICAgIHRoZW1lOiAnc2lsdmVyJyxcbiAgICAgICAgICAgICAgICBwbHVnaW5zOiBbJ2Fkdmxpc3QgYXV0b2xpbmsgbGlzdHMgbGluayBpbWFnZSBjaGFybWFwIHByaW50IHByZXZpZXcgYW5jaG9yIHRleHRjb2xvciBzZWFyY2hyZXBsYWNlIHZpc3VhbGJsb2NrcyBjb2RlIGZ1bGxzY3JlZW4gaW5zZXJ0ZGF0ZXRpbWUgbWVkaWEgdGFibGUgbWVkaWEgY29kZSBsaXN0cyBjb2xvcnBpY2tlciBpbWFnZXRvb2xzIHRhYmZvY3VzIHRleHRjb2xvciddLFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAobW9kZSA9PSAnZnVsbCcpIHtcbiAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5zID0gW1xuICAgICAgICAgICAgICAgICdhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGFuY2hvciB0ZXh0Y29sb3Igc2VhcmNocmVwbGFjZSB2aXN1YWxibG9ja3MgY29kZSBmdWxsc2NyZWVuIGluc2VydGRhdGV0aW1lIG1lZGlhIHRhYmxlIG1lZGlhIGNvZGUgbGlzdHMgY29sb3JwaWNrZXIgaW1hZ2V0b29scyB0YWJmb2N1cyBlZGl0RmlsZU5ldyBhZGROZXdzJ1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGNvbmZpZy50b29sYmFyID0gJ2Zvcm1hdHNlbGVjdCB8IGJvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvciB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSB8IGJ1bGxpc3QgbnVtbGlzdCBvdXRkZW50IGluZGVudCB8IHRhYmxlIGxpbmsgZWRpdEZpbGVOZXcgYWRkTmV3cyB8IHByaW50IHJlbW92ZWZvcm1hdCB1bmRvIHJlZG8gfCBmdWxsc2NyZWVuICc7XG4gICAgICAgICAgICBjb25maWcubW9iaWxlLnRvb2xiYXIgPSAnYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYnVsbGlzdCBudW1saXN0IHwgZnVsbHNjcmVlbic7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gJ21lZGl1bScpIHtcbiAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5zID0gWydhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGFuY2hvciB0ZXh0Y29sb3Igc2VhcmNocmVwbGFjZSB2aXN1YWxibG9ja3MgY29kZSBmdWxsc2NyZWVuIGluc2VydGRhdGV0aW1lIG1lZGlhIHRhYmxlIG1lZGlhIGNvZGUgbGlzdHMgY29sb3JwaWNrZXIgaW1hZ2V0b29scyB0YWJmb2N1cyB0ZXh0Y29sb3InXTtcbiAgICAgICAgICAgIGNvbmZpZy50b29sYmFyID0gJ2Zvcm1hdHNlbGVjdCB8IGJvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvciB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSB8IGJ1bGxpc3QgbnVtbGlzdCBvdXRkZW50IGluZGVudCB8IHRhYmxlIGxpbmsgIHwgcHJpbnQgcmVtb3ZlZm9ybWF0IHVuZG8gcmVkbyB8IGZ1bGxzY3JlZW4nO1xuICAgICAgICAgICAgY29uZmlnLm1vYmlsZS50b29sYmFyID0gJ2JvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvciB8IGJ1bGxpc3QgbnVtbGlzdCB8IGZ1bGxzY3JlZW4nO1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtb2RlID09ICdzaW1wbGUnKSB7XG4gICAgICAgICAgICBjb25maWcucGx1Z2lucyA9IFsnYWR2bGlzdCBhdXRvbGluayBsaXN0cyBsaW5rIGltYWdlIGNoYXJtYXAgcHJpbnQgcHJldmlldyBhbmNob3IgdGV4dGNvbG9yIHNlYXJjaHJlcGxhY2UgdmlzdWFsYmxvY2tzIGNvZGUgZnVsbHNjcmVlbiBpbnNlcnRkYXRldGltZSBtZWRpYSB0YWJsZSBtZWRpYSBjb2RlIGxpc3RzIGNvbG9ycGlja2VyIGltYWdldG9vbHMgdGFiZm9jdXMgdGV4dGNvbG9yJ107XG4gICAgICAgICAgICBjb25maWcudG9vbGJhciA9ICdib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBidWxsaXN0IG51bWxpc3QgfCBmdWxsc2NyZWVuJztcbiAgICAgICAgICAgIGNvbmZpZy5tb2JpbGUudG9vbGJhciA9ICdmdWxsc2NyZWVuIHwgYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYnVsbGlzdCBudW1saXN0JztcbiAgICAgICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25maWcucGx1Z2lucyA9IFsnYWR2bGlzdCBhdXRvbGluayBsaXN0cyBsaW5rIGltYWdlIGNoYXJtYXAgcHJpbnQgcHJldmlldyBhbmNob3IgdGV4dGNvbG9yIHNlYXJjaHJlcGxhY2UgdmlzdWFsYmxvY2tzIGNvZGUgZnVsbHNjcmVlbiBpbnNlcnRkYXRldGltZSBtZWRpYSB0YWJsZSBtZWRpYSBjb2RlIGxpc3RzIGNvbG9ycGlja2VyIGltYWdldG9vbHMgdGFiZm9jdXMgdGV4dGNvbG9yJ107XG4gICAgICAgICAgICBjb25maWcudG9vbGJhciA9ICdmb3JtYXRzZWxlY3QgfCBib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3J8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSB8IGJ1bGxpc3QgbnVtbGlzdCc7XG4gICAgICAgICAgICBjb25maWcudG9vbGJhciA9ICdib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBidWxsaXN0IG51bWxpc3QgfCBmdWxsc2NyZWVuJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZy5wYXN0ZV9kYXRhX2ltYWdlcyA9IHRydWU7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplSFRNTChjb250ZW50OiBzdHJpbmcsIGJlZ2luOiBzdHJpbmcsIGVuZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGluZGV4ID0gY29udGVudC5pbmRleE9mKGJlZ2luKTtcbiAgICAgICAgd2hpbGUgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4MiA9IGNvbnRlbnQuaW5kZXhPZihlbmQsIGluZGV4KTtcbiAgICAgICAgICAgIGlmIChpbmRleDIgPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCBpbmRleDIpICsgY29udGVudC5zdWJzdHJpbmcoaW5kZXgyICsgZW5kLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCBpbmRleCkgKyBjb250ZW50LnN1YnN0cmluZyhpbmRleCArIGJlZ2luLmxlbmd0aCk7XG4gICAgICAgICAgICBpbmRleCA9IGNvbnRlbnQuaW5kZXhPZihiZWdpbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgaGFuZGxlQmx1cigpIHtcbiAgICAgICAgdGhpcy5vbkJsdXIubmV4dCgpO1xuICAgIH1cblxuICAgIG9uS2V5RG93bihlOiBhbnksIHRvcGljOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5rZXlkb3duLm5leHQoeyBldmVudDogZSwgdG9waWMgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlT2soZXZ0KSB7XG4gICAgICAgIGNvbnN0IGh0bWwgPSB0aGlzLmVxdWF0aW9uRm9ybS5wcmV2aWV3Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGh0bWwuaGVpZ2h0ID0gNDE7XG4gICAgICAgIGxldCBkYXRhID0gaHRtbC5vdXRlckhUTUw7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC93aWR0aFxccyo9XFxzKlwiKC4rPylcIi9nLCAnJyk7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5pbnNlcnRDb250ZW50KGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXF1YXRpb25Gb3JtTW9kZWwuc2hvdyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGZvY3VzVHJhcChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5lZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmlmcmFtZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0aW55bWNlLWZvY3VzJyk7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlUGFzdGUodHlwZXMsIHBhc3RlZERhdGEsIHBhc3RlZFJ0ZkRhdGEsIGZpbGVzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VzID0gW107XG4gICAgICAgICAgICBpZiAodHlwZXMuaW5kZXhPZigndGV4dC9odG1sJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhc3RlZERhdGEuaW5kZXhPZignPHY6aW1hZ2VkYXRhICcpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocGFzdGVkRGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZXMuaW5kZXhPZigndGV4dC9ydGYnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHBhc3RlZERhdGEuaW5kZXhPZignPHY6aW1hZ2VkYXRhICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VVcGxvYWRlZCA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG9jbSA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcocGFzdGVkRGF0YSwgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltZyA9IGRvY20uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAxID0gcGFzdGVkRGF0YS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4MiA9IHBhc3RlZERhdGEuaW5kZXhPZignLz4nLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcDIgPSBwYXN0ZWREYXRhLnN1YnN0cmluZyhpbmRleDIgKyAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlcy5sZW5ndGggPiBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleEltZyA9IGltYWdlc1tpXS5pbmRleE9mKCc8aW1nIHNyYz0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleEltZyAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXNbaV0gPSBpbWFnZXNbaV0uc3Vic3RyaW5nKGluZGV4SW1nICsgMTAsIGltYWdlc1tpXS5sZW5ndGggLSAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlVHlwZSA9IGltYWdlc1tpXS5zdWJzdHJpbmcoNSwgaW1hZ2VzW2ldLmluZGV4T2YoJzsnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlNjQgPSBpbWFnZXNbaV0uc3Vic3RyaW5nKGltYWdlc1tpXS5pbmRleE9mKCdiYXNlNjQsJykgKyA3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlQmxvYiA9IHRoaXMuZGF0YVVSSXRvQmxvYihiYXNlNjQsIGltYWdlVHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcmNBcnIgPSBpbWdbaV0uc3JjLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHNyY0FycltzcmNBcnIubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2ltYWdlQmxvYl0sIGZpbGVOYW1lLCB7IHR5cGU6IGltYWdlVHlwZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwbG9hZEltYWdlID0gYXdhaXQgdGhpcy5fZmlsZU9iamVjdFNlcnZpY2UudXBsb2FkV2l0aEJ5dGVBcnJheShmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdXBsb2FkSW1hZ2UgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVVwbG9hZGVkLnB1c2godGhpcy5fZmlsZU9iamVjdFNlcnZpY2UuZ2V0VXJsSW1hZ2UodXBsb2FkSW1hZ2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnVXBsb2FkIGZpbGUgdGjhuqV0IGLhuqFpJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZWREYXRhID0gcDEgKyAnPGltZyBzcmM9JyArIGltYWdlVXBsb2FkZWRbaV0gKyAnLz4nICsgcDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGFzdGVkRGF0YS5pbmRleE9mKCc8djppbWFnZWRhdGEgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY20gPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHBhc3RlZERhdGEsICd0ZXh0L2h0bWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZyA9IGRvY20uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZVVwbG9hZGVkW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ1tpXS5zcmMgPSBpbWFnZVVwbG9hZGVkW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWdbaV0uYWx0ID0gaW1hZ2VVcGxvYWRlZFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoZG9jbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlcy5pbmRleE9mKCdGaWxlcycpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwbG9hZEltYWdlID0gYXdhaXQgdGhpcy5fZmlsZU9iamVjdFNlcnZpY2UudXBsb2FkV2l0aEJ5dGVBcnJheShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdXBsb2FkSW1hZ2UgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJzxpbWcgc3JjPScgKyB0aGlzLl9maWxlT2JqZWN0U2VydmljZS5nZXRVcmxJbWFnZSh1cGxvYWRJbWFnZSkgKyAnLz4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdVcGxvYWQgZmlsZSB0aOG6pXQgYuG6oWknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuRmlsZU1hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuaXNTaG93ID0gdHJ1ZTtcbiAgICB9XG4gICAgc3Vic2NyaWJlQ29udGVudEluc2VydCgpIHtcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC5zdWJzY3JpYmUoJ0lOU0VSVF9DT05URU5UX0JPRFknLCB4ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmluc2VydENvbnRlbnQoeC5jb250ZW50KTtcbiAgICAgICAgICAgIHRoaXMuaXNTaG93ID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGlueW1jZS5FZGl0b3JNYW5hZ2VyLnJlbW92ZSgnIycgKyB0aGlzLmlkKTtcbiAgICB9XG5cbiAgICBoYW5kbGVSRkNhbmNlbChldnQpIHtcbiAgICAgICAgdGhpcy5pc0FkZEZpbGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBzaG93Q2hhbmdlZChldnQpIHtcbiAgICAgICAgdGhpcy5pc0FkZEZpbGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0FkZE5ld3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lZGl0b3IuaW5zZXJ0Q29udGVudChldnQpO1xuICAgIH1cblxuICAgIGFkZFRlbXBsYXRlKGV2dCkge1xuICAgICAgICB0aGlzLnNob3dUZW1wbGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVkaXRvci5pbnNlcnRDb250ZW50KGV2dCk7XG4gICAgfVxuXG4gICAgZGF0YVVSSXRvQmxvYihkYXRhVVJJLCBmaWxlVHlwZSkge1xuICAgICAgICBjb25zdCBieXRlU3RyaW5nID0gd2luZG93LmF0b2IoZGF0YVVSSSk7XG4gICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGludDhBcnJheVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ludDhBcnJheV0sIHsgdHlwZTogZmlsZVR5cGUgfSk7XG4gICAgICAgIHJldHVybiBibG9iO1xuICAgIH1cbn1cbiJdfQ==
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tdGlueW1jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy90bi10aW55bWNlL3RuLXRpbnltY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBZ0J0RixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsYUFBYTtJQXFDakQsWUFDSSxRQUFrQixFQUNYLHNCQUE2QyxFQUMxQyxnQkFBaUMsRUFDakMsWUFBaUMsRUFDakMsa0JBQXFDO1FBRS9DLEtBQUssQ0FBQyxRQUFRLENB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Q0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7O1lBeGRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsdWlFQUEwQztnQkFFMUMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7d0JBQ2pELEtBQUssRUFBRSxJQUFJO3FCQUNkO29CQUNELHVCQUF1QjtpQkFDMUI7O2FBQ0o7OztZQTFCNEQsUUFBUTtZQUc1RCxxQkFBcUI7WUFNckIsZUFBZTtZQUVmLG1CQUFtQjtZQUhuQixpQkFBaUI7OzsyQkFvQnJCLFNBQVMsU0FBQyx1QkFBdUI7bUJBRWpDLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLO3FCQUNMLEtBQUs7b0JBQ0wsS0FBSzswQkFDTCxLQUFLOzJCQUNMLEtBQUs7cUJBRUwsTUFBTTtzQkFDTixNQUFNO3FCQUNOLE1BQU07d0JBQ04sTUFBTTtzQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XG5pbXBvcnQgeyBQb3B1cFNpemUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IENvbUN0eENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbmZpZ3MvY29tcG9uZW50LWNvbnRleHQuY29uc3RhbnQnO1xuaW1wb3J0IHsgRmlsZU9iamVjdFNlcnZpY2UgfSBmcm9tICcuLi9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtb2JqZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFcXVhdGlvbkVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2VxdWF0aW9uLWVkaXRvci9lcXVhdGlvbi1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVFeHBsb3JlclNlcnZpY2UgfSBmcm9tICcuLi9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZXhwbG9yZXIuc2VydmljZSc7XG5kZWNsYXJlIGxldCB0aW55bWNlOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG4tdGlueW1jZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RuLXRpbnltY2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RuLXRpbnltY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUblRpbnltY2VDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ29tcG9uZW50Q29udGV4dFNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRuVGlueW1jZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoRXF1YXRpb25FZGl0b3JDb21wb25lbnQpIGVxdWF0aW9uRm9ybTogRXF1YXRpb25FZGl0b3JDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKSBtb2RlPzogJ2Jhc2ljJyB8ICdtZWRpdW0nIHwgJ2Z1bGwnIHwgJ3NpbXBsZScgPSAnYmFzaWMnO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBoZWlnaHQgPSAyMDA7XG4gICAgQElucHV0KCkgZmllbGQgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgbGFuZ3VhZ2VDb2RlO1xuXG4gICAgQE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBrZXlkb3duID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25LZXlVcCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgbW9kZWw6IGFueSA9ICcnO1xuICAgIG9uQ2hhbmdlOiBGdW5jdGlvbjtcbiAgICBvblRvdWNoZWQ6IEZ1bmN0aW9uO1xuICAgIGlkID0gbmFub2lkKDgpO1xuICAgIGVkaXRvcjogYW55O1xuICAgIGRhdGFFcXVhdGlvbjogYW55ID0ge307XG5cbiAgICBpc1Nob3cgPSBmYWxzZTtcbiAgICBpc0FkZE5ld3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIG1vZGVzID0ge307XG4gICAgaXNBZGRGaWxlID0gZmFsc2U7XG4gICAgaXMgPSBmYWxzZTtcbiAgICBoZWFkZXI6IHN0cmluZztcbiAgICBlcXVhdGlvbkZvcm1Nb2RlbDogYW55ID0geyBzaG93OiBmYWxzZSB9O1xuICAgIHBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoe1xuICAgICAgICB3aWR0aDogMTEwMCxcbiAgICAgICAgaGVpZ2h0OiA2NTBcbiAgICB9KTtcbiAgICBzaG93VGVtcGxhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHB1YmxpYyBfZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfZmlsZVNlcnZpY2U6IEZpbGVFeHBsb3JlclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfZmlsZU9iamVjdFNlcnZpY2U6IEZpbGVPYmplY3RTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgICAgY29uc3QgbSA9IFsnYmFzaWMnLCAnbWVkaXVtJywgJ2Z1bGwnLCAnc2ltcGxlJ107XG4gICAgICAgIG0uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgIHRoaXMubW9kZXNbeF0gPSB0aGlzLmdldFRpbnlNY2VDb25maWdCeU1vZGUoeCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmliZUNvbnRlbnRJbnNlcnQoKTtcbiAgICAgICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGxldCBtb2RlID0gdGhpcy5tb2RlO1xuICAgICAgICBpZiAoIXRoaXMuX2RldmljZURldGVjdG9yU2VydmljZS5pc0Rlc2t0b3AoKSkge1xuICAgICAgICAgICAgbW9kZSA9ICdzaW1wbGUnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMubW9kZXNbbW9kZV07XG4gICAgICAgIGNvbmZpZy5oZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIGNvbmZpZy5wbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aW55bWNlLmluaXQoY29uZmlnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAob2JqID09IG51bGwpIG9iaiA9ICcnO1xuICAgICAgICB0aGlzLm1vZGVsID0gb2JqO1xuICAgICAgICBpZiAodGhpcy5lZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLnNldENvbnRlbnQodGhpcy5tb2RlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgb3BlbkRpYWxvZyhkYXRhID0ge30pIHtcbiAgICAgICAgdGhpcy5lcXVhdGlvbkZvcm1Nb2RlbC5zaG93ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lcXVhdGlvbkZvcm1Nb2RlbC5kYXRhID0gZGF0YTtcbiAgICB9XG5cbiAgICBnZXRUaW55TWNlQ29uZmlnQnlNb2RlKG1vZGUpIHtcbiAgICAgICAgY29uc3QgJHRoaXMgPSB0aGlzO1xuXG4gICAgICAgIHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoJ2FkZE5ld3MnLCBmdW5jdGlvbiAoZWRpdG9yKSB7XG4gICAgICAgICAgICBjb25zdCBvcGVuRGlhbG9nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICR0aGlzLmhlYWRlciA9ICdUaMOqbS9DaOG7jW4gdGluIGLDoGknO1xuICAgICAgICAgICAgICAgICR0aGlzLmlzQWRkTmV3cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgJHRoaXMuaXNBZGRGaWxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgJHRoaXMucG9wdXBTaXplID0geyB3aWR0aDogMTIwMCwgaGVpZ2h0OiA3MDAgfTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVkaXRvci51aS5yZWdpc3RyeS5hZGRCdXR0b24oJ2FkZE5ld3MnLCB7XG4gICAgICAgICAgICAgICAgdG9vbHRpcDogJ1Row6ptL0Now6huIHRpbiBiw6BpIHbDoG8gbuG7mWkgZHVuZycsXG4gICAgICAgICAgICAgICAgaWNvbjogJ25vbi1icmVha2luZycsXG4gICAgICAgICAgICAgICAgb25BY3Rpb246IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlbkRpYWxvZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoJ3RlbXBsYXRlJywgZnVuY3Rpb24gKGVkaXRvcikge1xuICAgICAgICAgICAgY29uc3Qgb3BlbkRpYWxvZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAkdGhpcy5oZWFkZXIgPSAnVGjDqm0vQ2jhu41uIHRlbXBsYXRlJztcbiAgICAgICAgICAgICAgICAkdGhpcy5zaG93VGVtcGxhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICR0aGlzLnBvcHVwU2l6ZSA9IHsgd2lkdGg6IDEyMDAsIGhlaWdodDogNzAwIH07XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlZGl0b3IudWkucmVnaXN0cnkuYWRkQnV0dG9uKCd0ZW1wbGF0ZScsIHtcbiAgICAgICAgICAgICAgICB0b29sdGlwOiAnVGVtcGxhdGUnLFxuICAgICAgICAgICAgICAgIGljb246ICd0ZW1wbGF0ZScsXG4gICAgICAgICAgICAgICAgb25BY3Rpb246IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlbkRpYWxvZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aW55bWNlLlBsdWdpbk1hbmFnZXIuYWRkKCdlZGl0RmlsZU5ldycsIGZ1bmN0aW9uIChlZGl0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wZW5EaWFsb2cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgJHRoaXMuaGVhZGVyID0gJ1Row6ptL0No4buJbmggc+G7rWEgZmlsZSBjw6EgbmjDom4nO1xuICAgICAgICAgICAgICAgICR0aGlzLmlzQWRkTmV3cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICR0aGlzLmlzQWRkRmlsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgJHRoaXMucG9wdXBTaXplID0geyB3aWR0aDogMTIwMCwgaGVpZ2h0OiA3MDAgfTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVkaXRvci51aS5yZWdpc3RyeS5hZGRCdXR0b24oJ2VkaXRGaWxlTmV3Jywge1xuICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdUaMOqbS9DaMOobiDhuqNuaCwgdmlkZW8sIGZpbGUgdsOgbyBu4buZaSBkdW5nJyxcbiAgICAgICAgICAgICAgICBpY29uOiAnZHVwbGljYXRlJyxcbiAgICAgICAgICAgICAgICBvbkFjdGlvbjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBvcGVuRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNhbGxiYWNrRnVuYyA9IGVkaXRvciA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZWRpdG9yLnNldE1vZGUoJ3JlYWRvbmx5Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlZEJvZHkgPSBqUXVlcnkoZWRpdG9yLmlmcmFtZUVsZW1lbnQpLmNvbnRlbnRzKCkuZmluZCgnYm9keScpO1xuICAgICAgICAgICAgY29uc3QgZWRpdG9ySG9sZGVyID0gZWRpdG9yLmlmcmFtZUVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIGlmICghdGhpcy5fZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmlzRGVza3RvcCgpKSB7XG4gICAgICAgICAgICAgICAgZWRCb2R5LmFkZENsYXNzKCdtb2JpbGUnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWRCb2R5Lm9uKCdibHVyJywgZSA9PiB7XG4gICAgICAgICAgICAgICAgZWRpdG9ySG9sZGVyLmNsYXNzTGlzdC5yZW1vdmUoJ3RpbnltY2UtZm9jdXMnKTtcbiAgICAgICAgICAgIH0pLm9uKCdmb2N1cycsIGUgPT4ge1xuICAgICAgICAgICAgICAgIGVkaXRvckhvbGRlci5jbGFzc0xpc3QuYWRkKCd0aW55bWNlLWZvY3VzJyk7XG4gICAgICAgICAgICB9KS5vbigncGFzdGUnLCAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmVnaW4gPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID0gZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXM7XG4gICAgICAgICAgICAgICAgaWYgKCgodHlwZXMgaW5zdGFuY2VvZiBET01TdHJpbmdMaXN0KSAmJiB0eXBlcy5jb250YWlucygndGV4dC9odG1sJykpIHx8ICh0eXBlcy5pbmRleE9mICYmICh0eXBlcy5pbmRleE9mKCd0ZXh0L2h0bWwnKSAhPT0gLTEpIHx8IHR5cGVzLmluZGV4T2YoJ0ZpbGVzJykgIT09IC0xKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ8SQYW5nIHRp4bq/biBow6BuaCB44butIGzDvSBu4buZaSBkdW5nLCB2dWkgbMOybmcgY2jhu50gdHJvbmcgZ2nDonkgbMOhdCEnKTtcbiAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZXMgPSBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS5maWxlcztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhc3RlZERhdGEgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhc3RlZFJ0ZkRhdGEgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKChlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcyBpbnN0YW5jZW9mIERPTVN0cmluZ0xpc3QgJiYgZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuY29udGFpbnMoJ3RleHQvaHRtbCcpKSB8fCAoZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5kZXhPZiAmJiBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5pbmRleE9mKCd0ZXh0L2h0bWwnKSAhPT0gLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZWREYXRhID0gZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9odG1sJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcyBpbnN0YW5jZW9mIERPTVN0cmluZ0xpc3QpICYmIGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLnR5cGVzLmNvbnRhaW5zKCd0ZXh0L3J0ZicpKSB8fCAoZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5kZXhPZiAmJiBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5pbmRleE9mKCd0ZXh0L3J0ZicpICE9PSAtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZWRSdGZEYXRhID0gZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9ydGYnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUGFzdGUodHlwZXMsIHBhc3RlZERhdGEsIHBhc3RlZFJ0ZkRhdGEsIGZpbGVzKS50aGVuKChjb250ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUaW1lIHRvIHJ1biBoYW5kbGVQYXN0ZSBpcyAnICsgKGVuZC5nZXRUaW1lKCkgLSBiZWdpbi5nZXRUaW1lKCkpICsgJ21zJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgvPCFcXFtpZltcXHNcXFNdKj8+L2dtLCAnJykucmVwbGFjZSgvPCFcXFtlbmRpZltcXHNcXFNdKj8+L2dtLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLm5vcm1hbGl6ZUhUTUwoY29udGVudCwgJzwhW2lmICFzdXBwb3J0TGlzdHNdPicsICc8IVtlbmRpZl0+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLm5vcm1hbGl6ZUhUTUwoY29udGVudCwgJzwhW2lmICFtc0VxdWF0aW9uXT4nLCAnPCFbZW5kaWZdPicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZXhlY0NvbW1hbmQoJ21jZUluc2VydENvbnRlbnQnLCBmYWxzZSwgY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkub24oJ2tleWRvd24nLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoU3RyaW5nLmZyb21DaGFyQ29kZShlLndoaWNoKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5RG93bihlLCBDb21DdHhDb25zdGFudHMuUk9PVC5LRVlfRE9XTl9DVFJMX1MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChlLndoaWNoID09IDI3KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlEb3duKGUsIENvbUN0eENvbnN0YW50cy5ST09ULktFWV9ET1dOX0VTQyk7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KS5vbignZGJsY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09ICdpbWcnICYmIGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnbGF0ZXgnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5EaWFsb2coeyBjb250ZW50OiBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2FsdCcpLCBzdHlsZTogZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdzdHlsZScpLCBoZWlnaHQ6IGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaGVpZ2h0JykgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkub24oJ2tleXVwJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZWRpdG9yLmdldENvbnRlbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMub25LZXlVcC5lbWl0KGNvbnRlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVkaXRvci5vbignYmx1cicsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVCbHVyKCk7XG4gICAgICAgICAgICB9KS5vbignY2hhbmdlJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZWRpdG9yLmdldENvbnRlbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQoY29udGVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZWRpdG9yLnNldENvbnRlbnQodGhpcy5tb2RlbCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29uZmlnOiBhbnkgPSB7XG4gICAgICAgICAgICBzZWxlY3RvcjogJyMnICsgdGhpcy5pZCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICAgICAgICBjb250ZW50X2NzczogW1xuICAgICAgICAgICAgICAgICcvYXNzZXRzL3ZlbmRvci90aW55bWNlL2N1c3RvbS5jc3MnXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgY3VzdG9tX2VsZW1lbnRzOlwic3R5bGUsbGluayx+bGlua1wiLFxuICAgICAgICAgICAgaW1hZ2V0b29sc190b29sYmFyOiAncm90YXRlbGVmdCByb3RhdGVyaWdodCB8IGZsaXB2IGZsaXBoIHwgZWRpdGltYWdlIGltYWdlb3B0aW9ucycsXG4gICAgICAgICAgICBsYW5ndWFnZTogJ3ZpX1ZOJyxcbiAgICAgICAgICAgIHN0YXR1c2JhcjogZmFsc2UsXG4gICAgICAgICAgICByZWxhdGl2ZV91cmxzOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnZlcnRfdXJsczogZmFsc2UsXG4gICAgICAgICAgICB0YWJmb2N1c19lbGVtZW50czogJzpwcmV2LDpuZXh0JyxcbiAgICAgICAgICAgIGluaXRfaW5zdGFuY2VfY2FsbGJhY2s6IGNhbGxiYWNrRnVuYyxcbiAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbiAoZWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgZWRpdG9yLmFkZFNob3J0Y3V0KCdjdHJsK0UnLCAnQ2FuR2l1YScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmV4ZWNDb21tYW5kKCdKdXN0aWZ5Q2VudGVyJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGVkaXRvci5hZGRTaG9ydGN1dCgnY3RybCtMJywgJ0NhblRyYWknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvci5leGVjQ29tbWFuZCgnSnVzdGlmeUxlZnQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZWRpdG9yLmFkZFNob3J0Y3V0KCdjdHJsK1InLCAnQ2FuUGhhaScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmV4ZWNDb21tYW5kKCdKdXN0aWZ5UmlnaHQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZWRpdG9yLmFkZFNob3J0Y3V0KCdjdHJsK0onLCAnQ2FuRGV1JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZXhlY0NvbW1hbmQoJ0p1c3RpZnlGdWxsJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGVkaXRvci5hZGRTaG9ydGN1dCgnQWx0K00nLCAnTHVpVmFvJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZXhlY0NvbW1hbmQoJ2luZGVudCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBlZGl0b3IuYWRkU2hvcnRjdXQoJ0FsdCtOJywgJ0x1aVJhJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZXhlY0NvbW1hbmQoJ291dGRlbnQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9iaWxlOiB7XG4gICAgICAgICAgICAgICAgdGhlbWU6ICdzaWx2ZXInLFxuICAgICAgICAgICAgICAgIHBsdWdpbnM6IFsnZnVsbHBhZ2UgYWR2bGlzdCBhdXRvbGluayBsaXN0cyBsaW5rIGltYWdlIGNoYXJtYXAgcHJpbnQgcHJldmlldyBhbmNob3IgdGV4dGNvbG9yIHNlYXJjaHJlcGxhY2UgdmlzdWFsYmxvY2tzIGNvZGUgZnVsbHNjcmVlbiBpbnNlcnRkYXRldGltZSBtZWRpYSB0YWJsZSBtZWRpYSBjb2RlIGxpc3RzIGNvbG9ycGlja2VyIGltYWdldG9vbHMgdGFiZm9jdXMgdGV4dGNvbG9yJ10sXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmIChtb2RlID09ICdmdWxsJykge1xuICAgICAgICAgICAgY29uZmlnLnBsdWdpbnMgPSBbXG4gICAgICAgICAgICAgICAgJ2Z1bGxwYWdlIGFkdmxpc3QgYXV0b2xpbmsgbGlzdHMgbGluayBpbWFnZSBjaGFybWFwIHByaW50IHByZXZpZXcgYW5jaG9yIHRleHRjb2xvciBzZWFyY2hyZXBsYWNlIHZpc3VhbGJsb2NrcyBjb2RlIGZ1bGxzY3JlZW4gaW5zZXJ0ZGF0ZXRpbWUgbWVkaWEgdGFibGUgbWVkaWEgY29kZSBsaXN0cyBjb2xvcnBpY2tlciBpbWFnZXRvb2xzIHRhYmZvY3VzIGVkaXRGaWxlTmV3IGFkZE5ld3MnXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uZmlnLnRvb2xiYXIgPSAnZm9ybWF0c2VsZWN0IHwgYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgYWxpZ25qdXN0aWZ5IHwgYnVsbGlzdCBudW1saXN0IG91dGRlbnQgaW5kZW50IHwgdGFibGUgbGluayBlZGl0RmlsZU5ldyBhZGROZXdzIHwgcHJpbnQgcmVtb3ZlZm9ybWF0IHVuZG8gcmVkbyB8IGZ1bGxzY3JlZW4gJztcbiAgICAgICAgICAgIGNvbmZpZy5tb2JpbGUudG9vbGJhciA9ICdib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBidWxsaXN0IG51bWxpc3QgfCBmdWxsc2NyZWVuJztcbiAgICAgICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobW9kZSA9PSAnbWVkaXVtJykge1xuICAgICAgICAgICAgY29uZmlnLnBsdWdpbnMgPSBbJ2Z1bGxwYWdlIGFkdmxpc3QgYXV0b2xpbmsgbGlzdHMgbGluayBpbWFnZSBjaGFybWFwIHByaW50IHByZXZpZXcgYW5jaG9yIHRleHRjb2xvciBzZWFyY2hyZXBsYWNlIHZpc3VhbGJsb2NrcyBjb2RlIGZ1bGxzY3JlZW4gaW5zZXJ0ZGF0ZXRpbWUgbWVkaWEgdGFibGUgbWVkaWEgY29kZSBsaXN0cyBjb2xvcnBpY2tlciBpbWFnZXRvb2xzIHRhYmZvY3VzIHRleHRjb2xvciddO1xuICAgICAgICAgICAgY29uZmlnLnRvb2xiYXIgPSAnZm9ybWF0c2VsZWN0IHwgYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgYWxpZ25qdXN0aWZ5IHwgYnVsbGlzdCBudW1saXN0IG91dGRlbnQgaW5kZW50IHwgdGFibGUgbGluayAgfCBwcmludCByZW1vdmVmb3JtYXQgdW5kbyByZWRvIHwgZnVsbHNjcmVlbic7XG4gICAgICAgICAgICBjb25maWcubW9iaWxlLnRvb2xiYXIgPSAnYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYnVsbGlzdCBudW1saXN0IHwgZnVsbHNjcmVlbic7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gJ3NpbXBsZScpIHtcbiAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5zID0gWydmdWxscGFnZSBhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGFuY2hvciB0ZXh0Y29sb3Igc2VhcmNocmVwbGFjZSB2aXN1YWxibG9ja3MgY29kZSBmdWxsc2NyZWVuIGluc2VydGRhdGV0aW1lIG1lZGlhIHRhYmxlIG1lZGlhIGNvZGUgbGlzdHMgY29sb3JwaWNrZXIgaW1hZ2V0b29scyB0YWJmb2N1cyB0ZXh0Y29sb3InXTtcbiAgICAgICAgICAgIGNvbmZpZy50b29sYmFyID0gJ2JvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvciB8IGJ1bGxpc3QgbnVtbGlzdCB8IGZ1bGxzY3JlZW4nO1xuICAgICAgICAgICAgY29uZmlnLm1vYmlsZS50b29sYmFyID0gJ2Z1bGxzY3JlZW4gfCBib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBidWxsaXN0IG51bWxpc3QnO1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5zID0gWydmdWxscGFnZSBhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGFuY2hvciB0ZXh0Y29sb3Igc2VhcmNocmVwbGFjZSB2aXN1YWxibG9ja3MgY29kZSBmdWxsc2NyZWVuIGluc2VydGRhdGV0aW1lIG1lZGlhIHRhYmxlIG1lZGlhIGNvZGUgbGlzdHMgY29sb3JwaWNrZXIgaW1hZ2V0b29scyB0YWJmb2N1cyB0ZXh0Y29sb3InXTtcbiAgICAgICAgICAgIGNvbmZpZy50b29sYmFyID0gJ2Zvcm1hdHNlbGVjdCB8IGJvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvcnwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgYWxpZ25qdXN0aWZ5IHwgYnVsbGlzdCBudW1saXN0JztcbiAgICAgICAgICAgIGNvbmZpZy50b29sYmFyID0gJ2JvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvciB8IGJ1bGxpc3QgbnVtbGlzdCB8IGZ1bGxzY3JlZW4nO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnLnBhc3RlX2RhdGFfaW1hZ2VzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBub3JtYWxpemVIVE1MKGNvbnRlbnQ6IHN0cmluZywgYmVnaW46IHN0cmluZywgZW5kOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgaW5kZXggPSBjb250ZW50LmluZGV4T2YoYmVnaW4pO1xuICAgICAgICB3aGlsZSAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXgyID0gY29udGVudC5pbmRleE9mKGVuZCwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGluZGV4MiA+IC0xKSB7XG4gICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIGluZGV4MikgKyBjb250ZW50LnN1YnN0cmluZyhpbmRleDIgKyBlbmQubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIGluZGV4KSArIGNvbnRlbnQuc3Vic3RyaW5nKGluZGV4ICsgYmVnaW4ubGVuZ3RoKTtcbiAgICAgICAgICAgIGluZGV4ID0gY29udGVudC5pbmRleE9mKGJlZ2luKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICBoYW5kbGVCbHVyKCkge1xuICAgICAgICB0aGlzLm9uQmx1ci5uZXh0KCk7XG4gICAgfVxuXG4gICAgb25LZXlEb3duKGU6IGFueSwgdG9waWM6IHN0cmluZykge1xuICAgICAgICB0aGlzLmtleWRvd24ubmV4dCh7IGV2ZW50OiBlLCB0b3BpYyB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVPayhldnQpIHtcbiAgICAgICAgY29uc3QgaHRtbCA9IHRoaXMuZXF1YXRpb25Gb3JtLnByZXZpZXcubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaHRtbC5oZWlnaHQgPSA0MTtcbiAgICAgICAgbGV0IGRhdGEgPSBodG1sLm91dGVySFRNTDtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoL3dpZHRoXFxzKj1cXHMqXCIoLis/KVwiL2csICcnKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmluc2VydENvbnRlbnQoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lcXVhdGlvbkZvcm1Nb2RlbC5zaG93ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9jdXNUcmFwKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IuaWZyYW1lRWxlbWVudC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RpbnltY2UtZm9jdXMnKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBoYW5kbGVQYXN0ZSh0eXBlcywgcGFzdGVkRGF0YSwgcGFzdGVkUnRmRGF0YSwgZmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZXMgPSBbXTtcbiAgICAgICAgICAgIGlmICh0eXBlcy5pbmRleE9mKCd0ZXh0L2h0bWwnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFzdGVkRGF0YS5pbmRleE9mKCc8djppbWFnZWRhdGEgJykgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShwYXN0ZWREYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlcy5pbmRleE9mKCd0ZXh0L3J0ZicpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gcGFzdGVkRGF0YS5pbmRleE9mKCc8djppbWFnZWRhdGEgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVVwbG9hZGVkID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb2NtID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhwYXN0ZWREYXRhLCAndGV4dC9odG1sJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1nID0gZG9jbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcDEgPSBwYXN0ZWREYXRhLnN1YnN0cmluZygwLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXgyID0gcGFzdGVkRGF0YS5pbmRleE9mKCcvPicsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwMiA9IHBhc3RlZERhdGEuc3Vic3RyaW5nKGluZGV4MiArIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2VzLmxlbmd0aCA+IGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4SW1nID0gaW1hZ2VzW2ldLmluZGV4T2YoJzxpbWcgc3JjPScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4SW1nICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc1tpXSA9IGltYWdlc1tpXS5zdWJzdHJpbmcoaW5kZXhJbWcgKyAxMCwgaW1hZ2VzW2ldLmxlbmd0aCAtIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VUeXBlID0gaW1hZ2VzW2ldLnN1YnN0cmluZyg1LCBpbWFnZXNbaV0uaW5kZXhPZignOycpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGltYWdlc1tpXS5zdWJzdHJpbmcoaW1hZ2VzW2ldLmluZGV4T2YoJ2Jhc2U2NCwnKSArIDcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VCbG9iID0gdGhpcy5kYXRhVVJJdG9CbG9iKGJhc2U2NCwgaW1hZ2VUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNyY0FyciA9IGltZ1tpXS5zcmMuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gc3JjQXJyW3NyY0Fyci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbaW1hZ2VCbG9iXSwgZmlsZU5hbWUsIHsgdHlwZTogaW1hZ2VUeXBlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBsb2FkSW1hZ2UgPSBhd2FpdCB0aGlzLl9maWxlT2JqZWN0U2VydmljZS51cGxvYWRXaXRoQnl0ZUFycmF5KGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB1cGxvYWRJbWFnZSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlVXBsb2FkZWQucHVzaCh0aGlzLl9maWxlT2JqZWN0U2VydmljZS5nZXRVcmxJbWFnZSh1cGxvYWRJbWFnZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdVcGxvYWQgZmlsZSB0aOG6pXQgYuG6oWknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlZERhdGEgPSBwMSArICc8aW1nIHNyYz0nICsgaW1hZ2VVcGxvYWRlZFtpXSArICcvPicgKyBwMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXN0ZWREYXRhLmluZGV4T2YoJzx2OmltYWdlZGF0YSAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jbSA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcocGFzdGVkRGF0YSwgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nID0gZG9jbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlVXBsb2FkZWRbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nW2ldLnNyYyA9IGltYWdlVXBsb2FkZWRbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ1tpXS5hbHQgPSBpbWFnZVVwbG9hZGVkW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2NtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVzLmluZGV4T2YoJ0ZpbGVzJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBmaWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBsb2FkSW1hZ2UgPSBhd2FpdCB0aGlzLl9maWxlT2JqZWN0U2VydmljZS51cGxvYWRXaXRoQnl0ZUFycmF5KGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB1cGxvYWRJbWFnZSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnPGltZyBzcmM9JyArIHRoaXMuX2ZpbGVPYmplY3RTZXJ2aWNlLmdldFVybEltYWdlKHVwbG9hZEltYWdlKSArICcvPic7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1VwbG9hZCBmaWxlIHRo4bqldCBi4bqhaScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5GaWxlTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5pc1Nob3cgPSB0cnVlO1xuICAgIH1cbiAgICBzdWJzY3JpYmVDb250ZW50SW5zZXJ0KCkge1xuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LnN1YnNjcmliZSgnSU5TRVJUX0NPTlRFTlRfQk9EWScsIHggPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IuaW5zZXJ0Q29udGVudCh4LmNvbnRlbnQpO1xuICAgICAgICAgICAgdGhpcy5pc1Nob3cgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aW55bWNlLkVkaXRvck1hbmFnZXIucmVtb3ZlKCcjJyArIHRoaXMuaWQpO1xuICAgIH1cblxuICAgIGhhbmRsZVJGQ2FuY2VsKGV2dCkge1xuICAgICAgICB0aGlzLmlzQWRkRmlsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHNob3dDaGFuZ2VkKGV2dCkge1xuICAgICAgICB0aGlzLmlzQWRkRmlsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQWRkTmV3cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVkaXRvci5pbnNlcnRDb250ZW50KGV2dCk7XG4gICAgfVxuXG4gICAgYWRkVGVtcGxhdGUoZXZ0KSB7XG4gICAgICAgIHRoaXMuc2hvd1RlbXBsYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZWRpdG9yLmluc2VydENvbnRlbnQoZXZ0KTtcbiAgICB9XG5cbiAgICBkYXRhVVJJdG9CbG9iKGRhdGFVUkksIGZpbGVUeXBlKSB7XG4gICAgICAgIGNvbnN0IGJ5dGVTdHJpbmcgPSB3aW5kb3cuYXRvYihkYXRhVVJJKTtcbiAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZVN0cmluZy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaW50OEFycmF5W2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbaW50OEFycmF5XSwgeyB0eXBlOiBmaWxlVHlwZSB9KTtcbiAgICAgICAgcmV0dXJuIGJsb2I7XG4gICAgfVxufVxuIl19
|
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -44885,6 +44885,7 @@ class TnTinymceComponent extends ComponentBase {
|
|
|
44885
44885
|
content_css: [
|
|
44886
44886
|
'/assets/vendor/tinymce/custom.css'
|
|
44887
44887
|
],
|
|
44888
|
+
custom_elements: "style,link,~link",
|
|
44888
44889
|
imagetools_toolbar: 'rotateleft rotateright | flipv fliph | editimage imageoptions',
|
|
44889
44890
|
language: 'vi_VN',
|
|
44890
44891
|
statusbar: false,
|
|
@@ -44914,31 +44915,31 @@ class TnTinymceComponent extends ComponentBase {
|
|
|
44914
44915
|
},
|
|
44915
44916
|
mobile: {
|
|
44916
44917
|
theme: 'silver',
|
|
44917
|
-
plugins: ['advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'],
|
|
44918
|
+
plugins: ['fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'],
|
|
44918
44919
|
}
|
|
44919
44920
|
};
|
|
44920
44921
|
if (mode == 'full') {
|
|
44921
44922
|
config.plugins = [
|
|
44922
|
-
'advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus editFileNew addNews'
|
|
44923
|
+
'fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus editFileNew addNews'
|
|
44923
44924
|
];
|
|
44924
44925
|
config.toolbar = 'formatselect | bold italic Strikethrough forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | table link editFileNew addNews | print removeformat undo redo | fullscreen ';
|
|
44925
44926
|
config.mobile.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
44926
44927
|
return config;
|
|
44927
44928
|
}
|
|
44928
44929
|
else if (mode == 'medium') {
|
|
44929
|
-
config.plugins = ['advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
44930
|
+
config.plugins = ['fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
44930
44931
|
config.toolbar = 'formatselect | bold italic Strikethrough forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | table link | print removeformat undo redo | fullscreen';
|
|
44931
44932
|
config.mobile.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
44932
44933
|
return config;
|
|
44933
44934
|
}
|
|
44934
44935
|
else if (mode == 'simple') {
|
|
44935
|
-
config.plugins = ['advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
44936
|
+
config.plugins = ['fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
44936
44937
|
config.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
44937
44938
|
config.mobile.toolbar = 'fullscreen | bold italic Strikethrough forecolor backcolor | bullist numlist';
|
|
44938
44939
|
return config;
|
|
44939
44940
|
}
|
|
44940
44941
|
else {
|
|
44941
|
-
config.plugins = ['advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
44942
|
+
config.plugins = ['fullpage advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus textcolor'];
|
|
44942
44943
|
config.toolbar = 'formatselect | bold italic Strikethrough forecolor backcolor| alignleft aligncenter alignright alignjustify | bullist numlist';
|
|
44943
44944
|
config.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
44944
44945
|
}
|