@hipay/hipay-material-ui 1.0.0-beta.13 → 1.0.0-beta.14
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/HiDatePicker/HiDateRangePicker.js +69 -28
- package/HiDatePicker/HiDateRangeSelector.js +14 -6
- package/HiDatePicker/Overlays/Overlay.js +9 -3
- package/HiDatePicker/stylesheet.js +7 -0
- package/HiSelect/HiSelect.js +1 -1
- package/es/HiDatePicker/HiDateRangePicker.js +65 -27
- package/es/HiDatePicker/HiDateRangeSelector.js +15 -7
- package/es/HiDatePicker/Overlays/Overlay.js +10 -3
- package/es/HiDatePicker/stylesheet.js +7 -0
- package/es/HiSelect/HiSelect.js +1 -1
- package/index.es.js +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/umd/hipay-material-ui.development.js +2 -2
- package/umd/hipay-material-ui.production.min.js +1 -1
@@ -37533,7 +37533,7 @@ HiSelect.defaultProps = {
|
|
37533
37533
|
var _initialiseProps = function _initialiseProps() {
|
37534
37534
|
var _this3 = this;
|
37535
37535
|
|
37536
|
-
this.handleClick = function (
|
37536
|
+
this.handleClick = function () {
|
37537
37537
|
if (_this3.state.open) {
|
37538
37538
|
_this3.handleClose();
|
37539
37539
|
} else {
|
@@ -37801,7 +37801,7 @@ var _initialiseProps = function _initialiseProps() {
|
|
37801
37801
|
};
|
37802
37802
|
|
37803
37803
|
exports.default = (0, _styles.withStyles)(styles, { name: 'HmuiHiSelect' })(HiSelect);
|
37804
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVNlbGVjdC9IaVNlbGVjdC5qcyJdLCJuYW1lcyI6WyJzdHlsZXMiLCJyb290IiwiYmFja2dyb3VuZENvbG9yIiwidGhlbWUiLCJwYWxldHRlIiwiYmFja2dyb3VuZDIiLCJtYXhXaWR0aCIsIndpZHRoIiwicG9zaXRpb24iLCJwb3BwZXIiLCJ6SW5kZXgiLCJwYXBlciIsImJvcmRlclJhZGl1cyIsIm1heEhlaWdodCIsInRyYW5zaXRpb24iLCJsYWJlbEljb24iLCJtYXJnaW5SaWdodCIsInNlbGVjdEljb25MYWJlbCIsIndoaXRlU3BhY2UiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsInBhZGRpbmdSaWdodCIsInR5cG9ncmFwaHkiLCJib2R5MSIsImRpc3BsYXkiLCJIaVNlbGVjdCIsInByb3BzIiwic3RhdGUiLCJvcGVuIiwiZm9jdXNlZCIsInN1Z2dlc3Rpb25zIiwiaGllcmFyY2h5U2VsZWN0ZWQiLCJoaWVyYXJjaHkiLCJuYk9wdGlvbnMiLCJkeW5hbWljIiwidmFsdWVJbk9wdGlvbnMiLCJ2YWwiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaW5kZXhPZiIsIml0ZW0iLCJpZCIsIkVycm9yIiwiaGllcmFyY2hpYyIsImhpZXJhcmNoeVRyZWVzIiwiYnVpbGRIaWVyYXJjaHlUcmVlcyIsIm9wdGlvbnNMZW5ndGgiLCJvcHRpb24iLCJoYXNDaGlsZHJlbiIsImhhbmRsZVNlbGVjdCIsImJpbmQiLCJoYW5kbGVDbGljayIsImhhbmRsZUNsb3NlIiwiaGFuZGxlQ2xpY2tBd2F5IiwiaGFuZGxlUmVxdWVzdERlbGV0ZSIsImhhbmRsZVN1Z2dlc3Rpb25zIiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVCbHVyIiwibmV4dFByb3BzIiwib25TZWFyY2giLCJzZXRTdGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsImhhc093blByb3BlcnR5IiwicGFyZW50SWQiLCJwdXNoIiwiaW5jbHVkZXMiLCJjbGFzc2VzIiwiZGlzYWJsZWQiLCJlcnJvciIsImNoZWNrYm94Iiwic2VhcmNoYWJsZSIsImRpc3BsYXlBc0NoaXAiLCJ0eXBlIiwidHJhbnNsYXRpb25zIiwicGFyZW50SXRlbVNlbGVjdGFibGUiLCJpY29uIiwicGFyZW50SWNvbiIsImhvdmVySWNvbiIsImNoZWNrZWRJY29uIiwicGxhY2Vob2xkZXIiLCJzdGF0aWNQb3NpdGlvbiIsInNlbGVjdGVkSWRMaXN0Iiwib25lX2l0ZW1fc2VsZWN0ZWQiLCJyZXBsYWNlIiwibl9pdGVtc19zZWxlY3RlZCIsImFsbCIsImZpbmQiLCJvIiwibGFiZWwiLCJvcHRpb25TZWxlY3RlZCIsImNoaXBGaWx0ZXIiLCJwb3BwZXJDbGFzcyIsInBvcHBlckNsb3NlIiwiYWxsU2VsZWN0ZWQiLCJwb3BwZXJTdHlsZSIsImNvbnRhaW5lcldpZHRoIiwiY29udGVudCIsInRyYW5zZm9ybU9yaWdpbiIsInNlYXJjaCIsInNlYXJjaEZpZWxkIiwiZWwiLCJoYW5kbGVLZXlEb3duU2VhcmNoIiwiaGFuZGxlS2V5RG93biIsIm92ZXJsYXkiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJzZWxlY3RJbnB1dEVsZW1lbnQiLCJQdXJlQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiYm9vbCIsIm5vZGUiLCJvYmplY3QiLCJoYXNBbGwiLCJpY29uQWxsIiwib25lT2ZUeXBlIiwic3RyaW5nIiwibXVsdGlwbGUiLCJuYW1lIiwiaXNSZXF1aXJlZCIsIm9uQ2hhbmdlIiwiZnVuYyIsIm9uQ2xvc2UiLCJhcnJheSIsIm9uZU9mIiwibnVtYmVyIiwiZGVmYXVsdFByb3BzIiwiaGVpZ2h0Iiwibm9fcmVzdWx0X21hdGNoIiwibl9jaGlsZHJlbiIsIm9uZV9jaGlsZCIsImV2ZW50IiwiZG9jdW1lbnQiLCJib2R5Iiwic3R5bGUiLCJzbGljZSIsIm9uQ2xpY2siLCJzZXRUaW1lb3V0IiwiZm9jdXMiLCJmb2N1c09uU2VsZWN0ZWRJdGVtIiwiaXRlbVNlbGVjdGVkIiwicXVlcnlTZWxlY3RvciIsInBhcmVudEVsZW1lbnQiLCJ0YWdOYW1lIiwiaXRlbXMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsIml0ZW1Ub0ZvY3VzIiwibmV4dEl0ZW0iLCJrZXkiLCJhY3RpdmVFbGVtZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJoaVNlbGVjdGVkIiwidmFsdWVMaXN0IiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsInNwbGljZSIsImlkc0luU3VnZ2VzdGlvbnMiLCJzdWdnZXN0aW9uIiwiYWxsQ2hpbGRyZW5TdWdnZXN0aW9uc1NlbGVjdGVkIiwiY29uY2F0IiwiY2VudGVyZWQiLCJhbGxJdGVtIiwidW5zaGlmdCIsImV2dCIsInN0b3BQcm9wYWdhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O2tRQUFBOztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVPLElBQU1BLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxXQUFVO0FBQzVCQyxjQUFNO0FBQ0ZDLDZCQUFpQkMsTUFBTUMsT0FBTixDQUFjQyxXQUQ3QjtBQUVGQyxzQkFBVSxHQUZSO0FBR0ZDLG1CQUFPLE1BSEw7QUFJRkMsc0JBQVU7QUFKUixTQURzQjtBQU81QkMsZ0JBQVE7QUFDSkYsbUJBQU8sTUFESDtBQUVKRyxvQkFBUTtBQUZKLFNBUG9CO0FBVzVCQyxlQUFPO0FBQ0hDLDBCQUFjLFNBRFg7QUFFSEMsdUJBQVcsR0FGUjtBQUdIQyx3QkFBWTtBQUhULFNBWHFCO0FBZ0I1QkMsbUJBQVc7QUFDUEMseUJBQWE7QUFETixTQWhCaUI7QUFtQjVCQztBQUNJQyx3QkFBWSxRQURoQjtBQUVJQyxzQkFBVSxRQUZkO0FBR0lDLDBCQUFjLFVBSGxCO0FBSUlDLDBCQUFjO0FBSmxCLFdBS09sQixNQUFNbUIsVUFBTixDQUFpQkMsS0FMeEI7QUFNSUMscUJBQVMsYUFOYjtBQU9JakIsbUJBQU87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MEJBQU1zQyxPQUZNO0FBR1p6QiwyQkFBT2YsYUFBYVk7QUFIUixpQkFBaEI7QUFLQSxvQkFBSTRCLFlBQVksS0FBaEIsRUFBdUI7QUFDbkJpRCw0QkFBUTFGLElBQVIsR0FBZSxNQUFmO0FBQ0g7QUFDRDdDLDRCQUFZd0ksT0FBWixDQUFvQkQsT0FBcEI7QUFDSDtBQUNKOztBQUVELGVBQUt2RyxRQUFMLENBQWM7QUFDVmhDO0FBRFUsU0FBZDtBQUdILEs7O1NBRUQwQixtQixHQUFzQixlQUFPO0FBQ3pCK0csWUFBSUMsZUFBSjtBQUNBLGVBQUs5SSxLQUFMLENBQVdnRyxRQUFYLENBQW9CLE9BQUtoRyxLQUFMLENBQVc4RixJQUEvQixFQUFxQyxFQUFyQztBQUNILEs7OztrQkFnS1Usd0JBQVd4SCxNQUFYLEVBQW1CLEVBQUV3SCxNQUFNLGNBQVIsRUFBbkIsRUFBNkMvRixRQUE3QyxDIiwiZmlsZSI6IkhpU2VsZWN0LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL21mYXppby9kZXYvcHJvamVjdHMvaGlwYXktbWF0ZXJpYWwtdWkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAaW5oZXJpdGVkQ29tcG9uZW50IElucHV0XG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgR3JvdyBmcm9tICdtYXRlcmlhbC11aS90cmFuc2l0aW9ucy9Hcm93JztcbmltcG9ydCB7IGZpbmRET01Ob2RlIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBQYXBlciBmcm9tICdtYXRlcmlhbC11aS9QYXBlcic7XG5pbXBvcnQgQ2xpY2tBd2F5TGlzdGVuZXIgZnJvbSAnbWF0ZXJpYWwtdWkvdXRpbHMvQ2xpY2tBd2F5TGlzdGVuZXInO1xuaW1wb3J0IHsgTWFuYWdlciwgVGFyZ2V0LCBQb3BwZXIgfSBmcm9tICdyZWFjdC1wb3BwZXInO1xuaW1wb3J0IHsgQ2hlY2tib3hCbGFua091dGxpbmUsIENoZWNrYm94TWFya2VkIH0gZnJvbSAnbWRpLW1hdGVyaWFsLXVpJztcbmltcG9ydCBIaVNlbGVjdGFibGVMaXN0IGZyb20gJy4uL0hpU2VsZWN0YWJsZUxpc3QnO1xuaW1wb3J0IHsgSGlTZWFyY2hGaWVsZCB9IGZyb20gJy4uL0hpRm9ybSc7XG5pbXBvcnQgU2VsZWN0SW5wdXQgZnJvbSAnLi9TZWxlY3RJbnB1dCc7XG5pbXBvcnQgSGlDaGlwIGZyb20gJy4uL0hpQ2hpcC9IaUNoaXAnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgeyBhcnJheVVuaXF1ZSwgZ2V0TmV4dEl0ZW1TZWxlY3RhYmxlIH0gZnJvbSAnLi4vdXRpbHMvaGlIZWxwZXJzJztcbmltcG9ydCBIaUljb25CdWlsZGVyIGZyb20gJy4uL3V0aWxzL0hpSWNvbkJ1aWxkZXInO1xuXG5leHBvcnQgY29uc3Qgc3R5bGVzID0gdGhlbWUgPT4gKHtcbiAgICByb290OiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kMixcbiAgICAgICAgbWF4V2lkdGg6IDUwMCxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgfSxcbiAgICBwb3BwZXI6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgekluZGV4OiA5LFxuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnMHB4IDJweCcsXG4gICAgICAgIG1heEhlaWdodDogNDQwLFxuICAgICAgICB0cmFuc2l0aW9uOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICB9LFxuICAgIGxhYmVsSWNvbjoge1xuICAgICAgICBtYXJnaW5SaWdodDogMTAsXG4gICAgfSxcbiAgICBzZWxlY3RJY29uTGFiZWw6IHtcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgICAgICBwYWRkaW5nUmlnaHQ6IDE2LFxuICAgICAgICAuLi50aGVtZS50eXBvZ3JhcGh5LmJvZHkxLFxuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH0sXG59KTtcblxuLyoqXG4gKlxuICogVXRpbGlzw6kgcG91ciB0b3VzIHR5cGVzIGRlIHNlbGVjdHMgZGFucyBsZXMgZm9ybXVsYWlyZXMuXG4gKiAtIHNpbmdsZSAvIG11bHRpcGxlICggbXVsdGktc2VsZWN0IClcbiAqIC0gYXZlYyAvIHNhbnMgY2hlY2tib3hlc1xuICogLSBhdmVjIC8gc2FucyBiYXJyZSBkZSByZWNoZXJjaGVcbiAqIC0gYXZlYyAvIHNhbnMgb3B0aW9uIFwiQWxsXCJcbiAqIC0gcHJpc2UgZW4gY29tcHRlIGR1IHR5cGUgZGVzIMOpbMOpbWVudHMgKHRleHQsIGltYWdlLCBpY29uLCAuLi4pXG4gKlxuICogQ2UgY29tcG9zYW50IHLDqXVuaSBsZXMgc291cy1jb21wb3NhbnRzXG4gKiAtIFNlbGVjdElucHV0IDogYWZmaWNoZSBsJ8OpbMOpbWVudCBkYW5zIGxlIGZvcm11bGFpcmVcbiAqIC0gSGlTZWFyY2hGaWVsZCA6IGludMOoZ3JlIHVuZSBiYXJyZSBkZSByZWNoZXJjaGUgZGFucyBsZSBQb3BwZXIsXG4gKiBpbCBmaWx0cmUgbGEgbGlzdGUgZGVzIHN1Z2dlc3Rpb25zXG4gKiAtIEhpU2VsZWN0YWJsZUxpc3QgOiBhZmZpY2hlIGxhIGxpc3RlIGRlcyBzdWdnZXN0aW9ucyBzZWxvbiBsZSB0eXBlIGRlcyDDqWzDqW1lbnRzXG4gKi9cbmNsYXNzIEhpU2VsZWN0IGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFmZmljaGUgdW5lIGNoZWNrYm94IHBvdXIgY2hhcXVlIMOpbMOpbWVudHMsIHBhciBkw6lmYXV0IHNpIG9wdGlvbnMgZXN0IG5lc3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2hlY2tib3g6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXVlIGwnaXRlbSBlc3Qgc8OpbGVjdGlvbm7DqVxuICAgICAgICAgKi9cbiAgICAgICAgY2hlY2tlZEljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogVXNlZnVsIHRvIGV4dGVuZCB0aGUgc3R5bGUgYXBwbGllZCB0byBjb21wb25lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluYWN0aWZcbiAgICAgICAgICovXG4gICAgICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9wdGlvbiBwZXJtZXR0YW50IGQnYWZmaWNoZXIgbGVzIHPDqWxlY3Rpb24gc291cyBmb3JtZSBkZSBDaGlwLlxuICAgICAgICAgKi9cbiAgICAgICAgZGlzcGxheUFzQ2hpcDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBcHBsaXF1ZSBsZSBzdHlsZSBlcnJvclxuICAgICAgICAgKi9cbiAgICAgICAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWZmaWNoZSBsJ8OpbMOpbWVudCAnQWxsJ1xuICAgICAgICAgKi9cbiAgICAgICAgaGFzQWxsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExlcyBpdGVtcyBzb250IGhpw6lyYXJjaGlzw6lzXG4gICAgICAgICAqL1xuICAgICAgICBoaWVyYXJjaGljOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEljb24gYWZmaWNow6kgbG9yc3F1ZSBsJ2l0ZW0gbidlc3QgcGFzIHPDqWxlY3Rpb25uw6kgZXQgcXUnb24gbGUgc3Vydm9sZVxuICAgICAgICAgKi9cbiAgICAgICAgaG92ZXJJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEljb24gYWZmaWNow6kgbG9yc3F1ZSBsJ2l0ZW0gbidlc3QgcGFzIHPDqWxlY3Rpb25uw6lcbiAgICAgICAgICovXG4gICAgICAgIGljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogTm9tIGRlIGwnaWPDtG5lXG4gICAgICAgICAqL1xuICAgICAgICBpY29uQWxsOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuYm9vbF0pLFxuICAgICAgICAvKipcbiAgICAgICAgICogaWQgZHUgc2VsZWN0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF1dG9yaXNlIGxhIHPDqWxlY3Rpb24gZGUgcGx1c2lldXJzIHZhbGV1cnNcbiAgICAgICAgICovXG4gICAgICAgIG11bHRpcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5vbSBkdSBjaGFtcCBkZSBmb3JtdWxhaXJlXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBxdWkgcmVudm9pdCBsYS9sZXMgdmFsZXVycyBzw6lsZWN0aW9ubsOpZXNcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nIHx8IGFycmF5fSB2YWx1ZVxuICAgICAgICAgKi9cbiAgICAgICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhcHBlbMOpZSBsb3JzcXUnb24gZmVybWUgbGUgc2VsZWN0XG4gICAgICAgICAqL1xuICAgICAgICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGxvcnNxdSdvbiBzdXJ2b2xlIGxlIGNoYW1wc1xuICAgICAgICAgKi9cbiAgICAgICAgb25Nb3VzZUVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGxvcnNxdWUgbGUgY3Vyc2V1ciBxdWl0dGUgbGUgY2hhbXBzXG4gICAgICAgICAqL1xuICAgICAgICBvbk1vdXNlTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXBwZWzDqWUgbG9yc3F1J29uIMOpY3JpdCBkYW5zIGxhIGJhcnJlIGRlIHJlY2hlcmNoZVxuICAgICAgICAgKiBBIHV0aWxpc2VyIHBvdXIgbGVzIHNlbGVjdHMgYXZlYyBkZXMgZG9ubsOpZXMgZHluYW1pcXVlc1xuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0ZXMgZGVzIG9wdGlvbnMgZHUgc2VsZWN0XG4gICAgICAgICAqL1xuICAgICAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEljb24gYWZmaWNow6kgbG9yc3F1J3VuIGl0ZW0gcGFyZW50IG4nZXN0IHBhcyBzw6lsZWN0aW9ubsOpXG4gICAgICAgICAqL1xuICAgICAgICBwYXJlbnRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExlcyBpdGVtcyBwYXJlbnRzIHNvbnQgc8OpbGVjdGlvbm5hYmxlc1xuICAgICAgICAgKi9cbiAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogUGxhY2Vob2xkZXIgYWZmaWNow6kgbG9yc3F1ZSBsZSBzZWxlY3QgZXN0IGZlcm3DqVxuICAgICAgICAgKiBTdXJjaGFyZ2UgbGUgcGxhY2Vob2xkZXIgcGFyIGTDqWZhdXRcbiAgICAgICAgICovXG4gICAgICAgIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWZmaWNoZSB1biBpbnB1dCBkZSByZWNoZXJjaGUgcGVybWV0dGFudCBkZSBmaWx0cmVyIGxlcyBvcHRpb25zXG4gICAgICAgICAqL1xuICAgICAgICBzZWFyY2hhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNpIHRydWUsIGxlIGNvbnRlbnUgZHUgc2VsZWN0IHNlcmEgZGFucyB1bmUgZGl2IHN0YXRpYyBwbHV0b3QgcXVlIGRhbnMgdW5lIHBvcHBlciBhYnNvbHV0ZVxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdGljUG9zaXRpb246IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVHJhZHVjdGlvbnMgKHBhciBkw6lmYXV0IGVuIGFuZ2xhaXMpXG4gICAgICAgICAqL1xuICAgICAgICB0cmFuc2xhdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUeXBlIGRlcyDDqWzDqW1lbnRzIGR1IHNlbGVjdCwgZMOpZmluaXQgbGUgcmVuZHUgZCd1biDDqWzDqW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IFByb3BUeXBlcy5vbmVPZihbJ2ljb24nLCAndGV4dCcsICdpbWFnZScsICdwcmltYXJ5LWhpZ2hsaWdodCddKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZhbHVlKHMpIGR1IHNlbGVjdFxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5hcnJheV0pLFxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIGVycm9yOiBmYWxzZSxcbiAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIGNoZWNrYm94OiBmYWxzZSxcbiAgICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICAgIGhhc0FsbDogZmFsc2UsXG4gICAgICAgIGljb25BbGw6IGZhbHNlLFxuICAgICAgICBoaWVyYXJjaGljOiBmYWxzZSxcbiAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICBkaXNwbGF5QXNDaGlwOiBmYWxzZSxcbiAgICAgICAgaWNvbjogPENoZWNrYm94QmxhbmtPdXRsaW5lIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9fSAvPixcbiAgICAgICAgcGFyZW50SWNvbjogPENoZWNrYm94QmxhbmtPdXRsaW5lIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9fSAvPixcbiAgICAgICAgaG92ZXJJY29uOiA8Q2hlY2tib3hCbGFua091dGxpbmUgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH19IC8+LFxuICAgICAgICBjaGVja2VkSWNvbjogPENoZWNrYm94TWFya2VkIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9fSAvPixcbiAgICAgICAgdHJhbnNsYXRpb25zOiB7XG4gICAgICAgICAgICBhbGw6ICdBbGwnLFxuICAgICAgICAgICAgbm9fcmVzdWx0X21hdGNoOiAnTm8gcmVzdWx0IG1hdGNoJyxcbiAgICAgICAgICAgIHNlYXJjaDogJ1NlYXJjaCcsXG4gICAgICAgICAgICBuX2l0ZW1zX3NlbGVjdGVkOiAnJXMgaXRlbXMgc2VsZWN0ZWQnLFxuICAgICAgICAgICAgb25lX2l0ZW1fc2VsZWN0ZWQ6ICclcyBpdGVtIHNlbGVjdGVkJyxcbiAgICAgICAgICAgIG5fY2hpbGRyZW46ICclcyBpdGVtcycsXG4gICAgICAgICAgICBvbmVfY2hpbGQ6ICclcyBpdGVtJyxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGljUG9zaXRpb246IGZhbHNlLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgICAgICAgZm9jdXNlZDogZmFsc2UsXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogW10sXG4gICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZDoge30sXG4gICAgICAgICAgICBoaWVyYXJjaHk6IHt9LFxuICAgICAgICAgICAgbmJPcHRpb25zOiAwLFxuICAgICAgICAgICAgZHluYW1pYzogZmFsc2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdmFsdWUgaXMgaW4gb3B0aW9uc1xuICAgICAgICBsZXQgdmFsdWVJbk9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdmFsID0gcHJvcHMudmFsdWU7XG4gICAgICAgIC8vIE5vIG9wdGlvbnMgcHJvdmlkZWQuXG4gICAgICAgIGlmICghcHJvcHMub3B0aW9ucy5sZW5ndGggfHwgIXZhbCB8fCAhdmFsLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFsdWVJbk9wdGlvbnMgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYW4gb3B0aW9uIG1hdGNoIHZhbHVlIHByb3AuXG4gICAgICAgICAgICBwcm9wcy5vcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUluT3B0aW9ucyAmJiB2YWwuaW5kZXhPZihpdGVtLmlkKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVJbk9wdGlvbnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZUluT3B0aW9ucykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9wIHZhbHVlIHByb3ZpZGVkIGRvZXMgbm90IG1hdGNoIGFueSBvcHRpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuaGllcmFyY2hpYyA9PT0gdHJ1ZSAmJiBwcm9wcy5vcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoeVRyZWVzID0gdGhpcy5idWlsZEhpZXJhcmNoeVRyZWVzKHByb3BzKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5oaWVyYXJjaHkgPSBoaWVyYXJjaHlUcmVlcy5oaWVyYXJjaHk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmhpZXJhcmNoeVNlbGVjdGVkID0gaGllcmFyY2h5VHJlZXMuaGllcmFyY2h5U2VsZWN0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBHZXQgcmVhbCBvcHRpb25zIG51bWJlciAocGFyZW50ICYgX2FsbCBhcmUgbm90IHJlYWwgb3B0aW9ucylcbiAgICAgICAgICAgIGxldCBvcHRpb25zTGVuZ3RoID0gMDtcbiAgICAgICAgICAgIHByb3BzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb24uaGFzQ2hpbGRyZW4gIT09IHRydWUgJiYgb3B0aW9uLmlkICE9PSAnX2FsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5uYk9wdGlvbnMgPSBvcHRpb25zTGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5keW5hbWljID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0ID0gdGhpcy5oYW5kbGVTZWxlY3QuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGljayA9IHRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbG9zZSA9IHRoaXMuaGFuZGxlQ2xvc2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja0F3YXkgPSB0aGlzLmhhbmRsZUNsaWNrQXdheS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZVJlcXVlc3REZWxldGUgPSB0aGlzLmhhbmRsZVJlcXVlc3REZWxldGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVTdWdnZXN0aW9ucyA9IHRoaXMuaGFuZGxlU3VnZ2VzdGlvbnMuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVGb2N1cyA9IHRoaXMuaGFuZGxlRm9jdXMuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVCbHVyID0gdGhpcy5oYW5kbGVCbHVyLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIHRoaXMucHJvcHMub25TZWFyY2ggIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB0aGlzLnByb3BzLm9wdGlvbnMgJiZcbiAgICAgICAgICAgIHRoaXMucHJvcHMub3B0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTdWdnZXN0aW9ucyhuZXh0UHJvcHMub3B0aW9ucyk7XG4gICAgICAgICAgICBsZXQgb3B0aW9uc0xlbmd0aCA9IDA7XG4gICAgICAgICAgICBuZXh0UHJvcHMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbi5oYXNDaGlsZHJlbiAhPT0gdHJ1ZSAmJiBvcHRpb24uaWQgIT09ICdfYWxsJykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zTGVuZ3RoKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbmJPcHRpb25zOiBvcHRpb25zTGVuZ3RoIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHRQcm9wcy5oaWVyYXJjaGljID09PSB0cnVlICYmIG5leHRQcm9wcy5vcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoeVRyZWVzID0gdGhpcy5idWlsZEhpZXJhcmNoeVRyZWVzKG5leHRQcm9wcyk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGllcmFyY2h5OiBoaWVyYXJjaHlUcmVlcy5oaWVyYXJjaHksIGhpZXJhcmNoeVNlbGVjdGVkOiBoaWVyYXJjaHlUcmVlcy5oaWVyYXJjaHlTZWxlY3RlZCB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRIaWVyYXJjaHlUcmVlcyhwcm9wcykge1xuICAgICAgICAvLyBDb25zdHJ1Y3QgdHdvIGFzc29jaWF0aXZlIGFycmF5c1xuICAgICAgICAvLyBoaWVyYXJjaHlbcGFyZW50SWRdID0+IGNoaWxkcmVuXG4gICAgICAgIC8vIGhpZXJhcmNoeVNlbGVjdGVkW3BhcmVudElkXSA9PiBzZWxlY3RlZCBjaGlsZHJlblxuICAgICAgICBjb25zdCBoaWVyYXJjaHkgPSB7fTtcbiAgICAgICAgY29uc3QgaGllcmFyY2h5U2VsZWN0ZWQgPSB7fTtcbiAgICAgICAgbGV0IHZhbHVlID0gcHJvcHMudmFsdWUgfHwgW107XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlID0gW3Byb3BzLnZhbHVlXTtcbiAgICAgICAgcHJvcHMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uLmhhc0NoaWxkcmVuID09PSB0cnVlICYmICFoaWVyYXJjaHkuaGFzT3duUHJvcGVydHkob3B0aW9uLmlkKSkge1xuICAgICAgICAgICAgICAgIGhpZXJhcmNoeVtvcHRpb24uaWRdID0gW107XG4gICAgICAgICAgICAgICAgaGllcmFyY2h5U2VsZWN0ZWRbb3B0aW9uLmlkXSA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb24uaGFzT3duUHJvcGVydHkoJ3BhcmVudElkJykpIHtcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHlbb3B0aW9uLnBhcmVudElkXS5wdXNoKG9wdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKG9wdGlvbi5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5U2VsZWN0ZWRbb3B0aW9uLnBhcmVudElkXS5wdXNoKG9wdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgaGllcmFyY2h5LCBoaWVyYXJjaHlTZWxlY3RlZCB9O1xuICAgIH1cblxuICAgIGhhbmRsZUNsaWNrID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wcm9wcy5zdGF0aWNQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe29wZW46IHRydWV9KTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnByb3BzLm9wdGlvbnMuc2xpY2UoKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU3VnZ2VzdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2xpY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2VzdGlvbiBkdSBmb2N1c1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgICAgICAgICAgICAvLyBzaSBzZWFyY2hhYmxlLCBmb2N1cyBzdXIgbGUgY2hhbXBzIGRlIHJlY2hlcmNoZVxuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaEZpZWxkID0gdGhpcy5zZWFyY2hGaWVsZDtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoRmllbGQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICAgICAgLy8gc2lub24gZm9jdXMgc3VyIGxlIGRlcm5pZXIgw6lsw6ltZW50IHNlbGVjdGlvbm7DqVxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPblNlbGVjdGVkSXRlbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZvY3VzT25TZWxlY3RlZEl0ZW0gPSAoKSA9PiB7XG4gICAgICAgIC8vIE9uIHLDqWN1cMOocmUgbGEgZGl2IHBhcmVudCBcIm92ZXJsYXlcIlxuICAgICAgICBjb25zdCBvdmVybGF5ID0gZmluZERPTU5vZGUodGhpcy5vdmVybGF5KTtcbiAgICAgICAgY29uc3QgbXVsdGlwbGUgPSB0aGlzLnByb3BzLm11bHRpcGxlO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucHJvcHMudmFsdWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSWRMaXN0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIFNpIHVuIG91IHBsdXNpZXVycyBpdGVtcyBzb250IHNlbGVjdGlvbm7DqXMsIG9uIGZvY3VzIHN1ciBsZSBkZXJuaWVyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJZExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1TZWxlY3RlZCA9IG92ZXJsYXkucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAgICAgYFtkYXRhLWlkPVwiJHtzZWxlY3RlZElkTGlzdFtzZWxlY3RlZElkTGlzdC5sZW5ndGggLSAxXX1cIl1gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1TZWxlY3RlZCAmJiBpdGVtU2VsZWN0ZWQucGFyZW50RWxlbWVudC50YWdOYW1lID09PSAnTEknKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1TZWxlY3RlZC5wYXJlbnRFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFNpIHBhcyBkJ2l0ZW0gc2VsZWN0aW9ubsOpLCBvdSBwYXMgdmlzaWJsZSAoZW4gY2FzIGRlIHJlY2hlcmNoZSksIGZvY3VzIHN1ciBsZSBwcmVtaWVyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJZExpc3QubGVuZ3RoID09PSAwIHx8ICFmb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gT24gcmVjdXDDqHJlIHRvdXMgbGVzIGl0ZW1zXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBvdmVybGF5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaScpO1xuICAgICAgICAgICAgICAgIGxldCBpdGVtVG9Gb2N1cyA9IGl0ZW1zWzBdO1xuICAgICAgICAgICAgICAgIC8vIFNpIHNlbGVjdCBtdWx0aXBsZSwgZXQgcXUnYXUgbW9pbnMgdW4gc2VsZWN0aW9ubsOpLCBmb2N1cyBzdXIgbGUgMmUgaXRlbVxuICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsZSAmJiBzZWxlY3RlZElkTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Ub0ZvY3VzID0gaXRlbXNbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtVG9Gb2N1cykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtVG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMSk7XG4gICAgfTtcblxuICAgIC8vIEtleSBkb3duIG9uIGxpc3QgaXRlbXNcbiAgICBoYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgICAgICBsZXQgbmV4dEl0ZW07XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgICAgICBuZXh0SXRlbSA9IGdldE5leHRJdGVtU2VsZWN0YWJsZShkb2N1bWVudC5hY3RpdmVFbGVtZW50LCAnZG93bicpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICBuZXh0SXRlbSA9IGdldE5leHRJdGVtU2VsZWN0YWJsZShkb2N1bWVudC5hY3RpdmVFbGVtZW50LCAndXAnKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucHJvcHMuc3RhdGljUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG9wZW46IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXh0SXRlbSkge1xuICAgICAgICAgICAgbmV4dEl0ZW0uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBLZXkgZG93biBvbiBzZWFyY2ggaW5wdXRcbiAgICBoYW5kbGVLZXlEb3duU2VhcmNoID0gZXZlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uU2VsZWN0ZWRJdGVtKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkOiB0cnVlIH0pO1xuICAgIH07XG5cbiAgICBoYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9jdXNlZDogZmFsc2UgfSk7XG4gICAgfTtcblxuICAgIGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMuc3RhdGljUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBvcGVuOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DbG9zZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0SW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdElucHV0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGhhbmRsZUNsaWNrQXdheSA9IChldmVudCkgPT4ge1xuICAgICAgICAvLyBBdSBjbGljIHN1ciBsZSBib3V0b24sIG9uIGxhaXNzZSBsZSBoYW5kbGVDbGljayBmZXJtZXIgbGUgc2VsZWN0XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RJbnB1dEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbG9zZShldmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2FsbCBvbkNoYW5nZSB3aXRoIHRoZSB1cGRhdGVkIHZhbHVlXG4gICAgICpcbiAgICAgKiAtIGhhbmRsZSBzaW5nbGUgdmFsdWVcbiAgICAgKiAtIGhhbmRsZSBtdWx0aXBsZSB2YWx1ZVxuICAgICAqIC0gaGFuZGxlICdfYWxsJyBpZFxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICogQHBhcmFtIGl0ZW1cbiAgICAgKi9cbiAgICBoYW5kbGVTZWxlY3QgPSAoZXZlbnQsIGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgeyBtdWx0aXBsZSwgdmFsdWUsIG5hbWUsIG9uQ2hhbmdlLCBvcHRpb25zLCBoaWVyYXJjaGljIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGhpZXJhcmNoeVNlbGVjdGVkLCBoaWVyYXJjaHksIG5iT3B0aW9ucyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3QgaGlTZWxlY3RlZCA9IHsgLi4uaGllcmFyY2h5U2VsZWN0ZWQgfTtcblxuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZUxpc3QgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSAnX2FsbCcpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVMaXN0Lmxlbmd0aCA9PT0gbmJPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGllcmFyY2hpYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgaGllcmFyY2hpYyBzZWxlY3QgPT4gZW1wdHkgYXNzb2NpYXRpdmUgYXJyYXkgb2Ygc2VsZWN0ZWQgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGhpU2VsZWN0ZWQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2tleV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmhhc0NoaWxkcmVuICE9PSB0cnVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIXZhbHVlTGlzdC5pbmNsdWRlcyhvcHRpb24uaWQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmlkICE9PSAnX2FsbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdC5wdXNoKG9wdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbi5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGhpZXJhcmNoaWMgc2VsZWN0ID0+IGZpbGwgYXNzb2NpYXRpdmUgYXJyYXkgb2Ygc2VsZWN0ZWQgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW29wdGlvbi5pZF0gPSBoaWVyYXJjaHlbb3B0aW9uLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB2YWx1ZUxpc3QuaW5jbHVkZXMoaXRlbS5pZCkgfHxcbiAgICAgICAgICAgICAgICAoaXRlbS5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZFtpdGVtLmlkXS5sZW5ndGggPT09IGhpZXJhcmNoeVtpdGVtLmlkXS5sZW5ndGgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBpdGVtIGTDqWrDoCBzw6lsZWN0aW9ubsOpID0+IG9uIGxlIGTDqXNlbGVjdGlvbm5lXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0ID0gdmFsdWVMaXN0LmZpbHRlcih2YWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbCAhPT0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGFsbCBjaGlsZHJlblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QgPSB2YWx1ZUxpc3QuZmlsdGVyKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuc3RhdGUuaGllcmFyY2h5W2l0ZW0uaWRdLmluY2x1ZGVzKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0uaWRdID0gW107XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmhhc093blByb3BlcnR5KCdwYXJlbnRJZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpIGl0ZW0gZXN0IHVuIGVuZmFudCBvbiBsJ2VubMOodmUgZHUgdGFibGVhdSBhc3NvY2lhdGlmIGRlc1xuICAgICAgICAgICAgICAgICAgICAvLyBlbG10cyBzw6lsZWN0aW9ubsOpc1xuICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0ucGFyZW50SWRdLnNwbGljZShoaVNlbGVjdGVkW2l0ZW0ucGFyZW50SWRdLmluZGV4T2YoaXRlbS5pZCksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaXRlbSBub24gc8OpbGVjdGlvbm7DqSA9PiBvbiBsZSBzw6lsZWN0aW9ubmVcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiAhPT0gdHJ1ZSkgdmFsdWVMaXN0LnB1c2goaXRlbS5pZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaSBpdGVtIHBhcmVudCA9PiBvbiBham91dGUgdG91cyBsZXMgZW5mYW50c1xuICAgICAgICAgICAgICAgICAgICAvLyBPdSBvbiBsZXMgc3VwcHJpbWUgcydpbHMgc29udCBkw6lqw6AgdG91cyBzw6lsZWN0aW9ubsOpcyAoZGFucyB1bmUgbGlzdGUgZmlsdHLDqWUpXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkc0luU3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zdWdnZXN0aW9ucy5mb3JFYWNoKHN1Z2dlc3Rpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuaGllcmFyY2h5W2l0ZW0uaWRdLmluY2x1ZGVzKHN1Z2dlc3Rpb24uaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRzSW5TdWdnZXN0aW9ucy5wdXNoKHN1Z2dlc3Rpb24uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYoaGllcmFyY2h5U2VsZWN0ZWRbaXRlbS5pZF0ubGVuZ3RoID4gMCkge31cbiAgICAgICAgICAgICAgICAgICAgbGV0IGFsbENoaWxkcmVuU3VnZ2VzdGlvbnNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlkc0luU3VnZ2VzdGlvbnMuZm9yRWFjaChpZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhpZXJhcmNoeVNlbGVjdGVkW2l0ZW0uaWRdLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbENoaWxkcmVuU3VnZ2VzdGlvbnNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQ2hpbGRyZW5TdWdnZXN0aW9uc1NlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiBzdXBwcmltZSBsZXMgZW5mYW50cyBjYXIgZMOpasOgIHRvdXMgc8OpbGVjdGlvbm7DqXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkc0luU3VnZ2VzdGlvbnMuZm9yRWFjaChpZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0LnNwbGljZSh2YWx1ZUxpc3QuaW5kZXhPZihpZCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbaXRlbS5pZF0uc3BsaWNlKGhpU2VsZWN0ZWRbaXRlbS5pZF0uaW5kZXhPZihpZCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiBham91dGUgdG91cyBsZXMgZW5mYW50cyBmaWx0csOpcyBhdSDDqWzDqW1lbnRzIHPDqWxlY3Rpb25uw6lzXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QgPSBhcnJheVVuaXF1ZSh2YWx1ZUxpc3QuY29uY2F0KGlkc0luU3VnZ2VzdGlvbnMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbaXRlbS5pZF0gPSBhcnJheVVuaXF1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0uaWRdLmNvbmNhdChpZHNJblN1Z2dlc3Rpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGllcmFyY2h5U2VsZWN0ZWQ6IGhpU2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmhhc093blByb3BlcnR5KCdwYXJlbnRJZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpIGl0ZW0gZXN0IHVuIGVuZmFudCBvbiBsJ2Fqb3V0ZSBkdSB0YWJsZWF1IGFzc29jaWF0aWYgZGVzXG4gICAgICAgICAgICAgICAgICAgIC8vIGVsbXRzIHPDqWxlY3Rpb25uw6lzXG4gICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbaXRlbS5wYXJlbnRJZF0ucHVzaChpdGVtLmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGllcmFyY2h5U2VsZWN0ZWQ6IGhpU2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICBvbkNoYW5nZShldmVudCwgdmFsdWVMaXN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGV2ZW50LCBpdGVtLmlkKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgc3VnZ2VzdGlvbnMgbGlzdFxuICAgICAqIC0gYWRkICdfbm9fcmVzdWx0JyBpdGVtIGlmIHN1Z2dlc3Rpb24gbGlzdCBpcyBlbXB0eVxuICAgICAqIC0gYWRkICdfYWxsJyBpdGVtIGlmIHN1Z2dlc3Rpb24gbGlzdCBpcyBjb21wbGV0ZVxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uc1xuICAgICAqL1xuICAgIGhhbmRsZVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMgPT4ge1xuICAgICAgICBjb25zdCB7IG9wdGlvbnMsIGhhc0FsbCwgaWNvbkFsbCwgdHJhbnNsYXRpb25zLCBtdWx0aXBsZSB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBpZiAoc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgTm8gUmVzdWx0XG4gICAgICAgICAgICAvLyBGSVggdG8gcmVtb3ZlIGFsbCBpdGVtXG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdfbm9fcmVzdWx0JyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hlY2tib3g6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnMubm9fcmVzdWx0X21hdGNoLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBoYXNBbGwgJiZcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gb3B0aW9ucy5sZW5ndGggJiZcbiAgICAgICAgICAgIG11bHRpcGxlID09PSB0cnVlXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gSGFuZGxlICdBbGwnXG4gICAgICAgICAgICBpZiAoc3VnZ2VzdGlvbnMuZmlsdGVyKHN1Z2dlc3Rpb24gPT4gc3VnZ2VzdGlvbi5pZCA9PT0gJ19hbGwnKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxJdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ19hbGwnLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBpY29uQWxsLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zLmFsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChpY29uQWxsICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBhbGxJdGVtLnR5cGUgPSAnaWNvbic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnVuc2hpZnQoYWxsSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgaGFuZGxlUmVxdWVzdERlbGV0ZSA9IGV2dCA9PiB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnByb3BzLm5hbWUsIFtdKTtcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBjaGVja2JveCxcbiAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICBkaXNwbGF5QXNDaGlwLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgdHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGUsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgcGFyZW50SWNvbixcbiAgICAgICAgICAgIGhvdmVySWNvbixcbiAgICAgICAgICAgIGNoZWNrZWRJY29uLFxuICAgICAgICAgICAgaGllcmFyY2hpYyxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBzdGF0aWNQb3NpdGlvbixcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgeyBvcGVuLCBzdWdnZXN0aW9ucywgZm9jdXNlZCB9ID0gdGhpcy5zdGF0ZTtcblxuICAgICAgICBsZXQgZGlzcGxheSA9ICcnO1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkTGlzdCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IFt2YWx1ZV0gOiBbXTtcblxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5keW5hbWljICYmIHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgZGlzcGxheSA9IHRyYW5zbGF0aW9ucy5vbmVfaXRlbV9zZWxlY3RlZC5yZXBsYWNlKCclcycsIHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5uYk9wdGlvbnMgIT09IHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCAmJiBzZWxlY3RlZElkTGlzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBkaXNwbGF5ID0gdHJhbnNsYXRpb25zLm5faXRlbXNfc2VsZWN0ZWQucmVwbGFjZSgnJXMnLCBzZWxlY3RlZElkTGlzdC5sZW5ndGgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUubmJPcHRpb25zID09PSBzZWxlY3RlZElkTGlzdC5sZW5ndGggJiYgdGhpcy5zdGF0ZS5uYk9wdGlvbnMgPj0gMSkge1xuICAgICAgICAgICAgZGlzcGxheSA9IHRyYW5zbGF0aW9ucy5hbGw7XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJZExpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBpZiAodHlwZSAhPT0gJ2ljb24nKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheSA9IG9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IHNlbGVjdGVkSWRMaXN0WzBdKS5sYWJlbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uU2VsZWN0ZWQgPSBvcHRpb25zLmZpbmQobyA9PiBvLmlkID09PSBzZWxlY3RlZElkTGlzdFswXSk7XG4gICAgICAgICAgICAgICAgZGlzcGxheSA9IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLnNlbGVjdEljb25MYWJlbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGlJY29uQnVpbGRlciBpY29uPXtvcHRpb25TZWxlY3RlZC5pY29ufSBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWxJY29ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvblNlbGVjdGVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkaXNwbGF5QXNDaGlwKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlwRmlsdGVyID0gPEhpQ2hpcCBsYWJlbD17cGxhY2Vob2xkZXIgfHwgZGlzcGxheX0gb25EZWxldGU9e3RoaXMuaGFuZGxlUmVxdWVzdERlbGV0ZX0gLz47XG4gICAgICAgICAgICBpZiAoZGlzcGxheSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBjaGlwRmlsdGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9wcGVyQ2xhc3MgPSBjbGFzc05hbWVzKGNsYXNzZXMucG9wcGVyLCB7XG4gICAgICAgICAgICBbY2xhc3Nlcy5wb3BwZXJDbG9zZV06ICFvcGVuLFxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgYWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA9PT0gdGhpcy5zdGF0ZS5uYk9wdGlvbnMpIHtcbiAgICAgICAgICAgIGFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwb3BwZXJTdHlsZSA9IHt9O1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5jb250YWluZXJXaWR0aCA+IDApIHtcbiAgICAgICAgICAgIHBvcHBlclN0eWxlID0geyB3aWR0aDogdGhpcy5wcm9wcy5jb250YWluZXJXaWR0aCB9O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjb250ZW50ID0gPENsaWNrQXdheUxpc3RlbmVyIG9uQ2xpY2tBd2F5PXt0aGlzLmhhbmRsZUNsaWNrQXdheX0+XG4gICAgICAgICAgICA8R3JvdyBpbj17b3Blbn0gaWQ9XCJtZW51LWxpc3RcIiBzdHlsZT17eyB0cmFuc2Zvcm1PcmlnaW46ICcwIDAgMCcgfX0+XG4gICAgICAgICAgICAgICAgPFBhcGVyIGNsYXNzTmFtZT17Y2xhc3Nlcy5wYXBlcn0+XG4gICAgICAgICAgICAgICAgICAgIHshIXNlYXJjaGFibGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpU2VhcmNoRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD17b3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0ZpbHRlcmVkTGlzdD17dGhpcy5oYW5kbGVTdWdnZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQcm9wZXJ0eUxpc3Q9e1snbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dHJhbnNsYXRpb25zLnNlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5wcm9wcy5vblNlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFJlZj17ZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoRmllbGQgPSBlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZUtleURvd25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgIDxIaVNlbGVjdGFibGVMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGU9e3BhcmVudEl0ZW1TZWxlY3RhYmxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUxpc3Q9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMuaGFuZGxlU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZExpc3Q9e3NlbGVjdGVkSWRMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g9e2NoZWNrYm94fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5PXt0aGlzLnN0YXRlLmhpZXJhcmNoeX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoaWM9e2hpZXJhcmNoaWN9XG4gICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZD17dGhpcy5zdGF0ZS5oaWVyYXJjaHlTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucz17dHJhbnNsYXRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17aWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEljb249e3BhcmVudEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlckljb249e2hvdmVySWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWRJY29uPXtjaGVja2VkSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbFNlbGVjdGVkPXthbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFwZXI+XG4gICAgICAgICAgICA8L0dyb3c+XG4gICAgICAgIDwvQ2xpY2tBd2F5TGlzdGVuZXI+XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucm9vdH1cbiAgICAgICAgICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5ID0gZWw7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TWFuYWdlcj5cbiAgICAgICAgICAgICAgICAgICAgPFRhcmdldD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cGxhY2Vob2xkZXIgfHwgZGlzcGxheX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9CdXR0b249e2Rpc3BsYXlBc0NoaXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17dGhpcy5oYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e3RoaXMucHJvcHMub25Nb3VzZUVudGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17dGhpcy5wcm9wcy5vbk1vdXNlTGVhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmRWxlbWVudD17KGVsKSA9PiB7IHRoaXMuc2VsZWN0SW5wdXRFbGVtZW50ID0gZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvVGFyZ2V0PlxuICAgICAgICAgICAgICAgICAgICB7b3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3BvcHBlclN0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9wcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0VuYWJsZWQ9e29wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17cG9wcGVyQ2xhc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtwb3BwZXJTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUG9wcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvTWFuYWdlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMsIHsgbmFtZTogJ0htdWlIaVNlbGVjdCcgfSkoSGlTZWxlY3QpO1xuIl19
|
37804
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVNlbGVjdC9IaVNlbGVjdC5qcyJdLCJuYW1lcyI6WyJzdHlsZXMiLCJyb290IiwiYmFja2dyb3VuZENvbG9yIiwidGhlbWUiLCJwYWxldHRlIiwiYmFja2dyb3VuZDIiLCJtYXhXaWR0aCIsIndpZHRoIiwicG9zaXRpb24iLCJwb3BwZXIiLCJ6SW5kZXgiLCJwYXBlciIsImJvcmRlclJhZGl1cyIsIm1heEhlaWdodCIsInRyYW5zaXRpb24iLCJsYWJlbEljb24iLCJtYXJnaW5SaWdodCIsInNlbGVjdEljb25MYWJlbCIsIndoaXRlU3BhY2UiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsInBhZGRpbmdSaWdodCIsInR5cG9ncmFwaHkiLCJib2R5MSIsImRpc3BsYXkiLCJIaVNlbGVjdCIsInByb3BzIiwic3RhdGUiLCJvcGVuIiwiZm9jdXNlZCIsInN1Z2dlc3Rpb25zIiwiaGllcmFyY2h5U2VsZWN0ZWQiLCJoaWVyYXJjaHkiLCJuYk9wdGlvbnMiLCJkeW5hbWljIiwidmFsdWVJbk9wdGlvbnMiLCJ2YWwiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaW5kZXhPZiIsIml0ZW0iLCJpZCIsIkVycm9yIiwiaGllcmFyY2hpYyIsImhpZXJhcmNoeVRyZWVzIiwiYnVpbGRIaWVyYXJjaHlUcmVlcyIsIm9wdGlvbnNMZW5ndGgiLCJvcHRpb24iLCJoYXNDaGlsZHJlbiIsImhhbmRsZVNlbGVjdCIsImJpbmQiLCJoYW5kbGVDbGljayIsImhhbmRsZUNsb3NlIiwiaGFuZGxlQ2xpY2tBd2F5IiwiaGFuZGxlUmVxdWVzdERlbGV0ZSIsImhhbmRsZVN1Z2dlc3Rpb25zIiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVCbHVyIiwibmV4dFByb3BzIiwib25TZWFyY2giLCJzZXRTdGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsImhhc093blByb3BlcnR5IiwicGFyZW50SWQiLCJwdXNoIiwiaW5jbHVkZXMiLCJjbGFzc2VzIiwiZGlzYWJsZWQiLCJlcnJvciIsImNoZWNrYm94Iiwic2VhcmNoYWJsZSIsImRpc3BsYXlBc0NoaXAiLCJ0eXBlIiwidHJhbnNsYXRpb25zIiwicGFyZW50SXRlbVNlbGVjdGFibGUiLCJpY29uIiwicGFyZW50SWNvbiIsImhvdmVySWNvbiIsImNoZWNrZWRJY29uIiwicGxhY2Vob2xkZXIiLCJzdGF0aWNQb3NpdGlvbiIsInNlbGVjdGVkSWRMaXN0Iiwib25lX2l0ZW1fc2VsZWN0ZWQiLCJyZXBsYWNlIiwibl9pdGVtc19zZWxlY3RlZCIsImFsbCIsImZpbmQiLCJvIiwibGFiZWwiLCJvcHRpb25TZWxlY3RlZCIsImNoaXBGaWx0ZXIiLCJwb3BwZXJDbGFzcyIsInBvcHBlckNsb3NlIiwiYWxsU2VsZWN0ZWQiLCJwb3BwZXJTdHlsZSIsImNvbnRhaW5lcldpZHRoIiwiY29udGVudCIsInRyYW5zZm9ybU9yaWdpbiIsInNlYXJjaCIsInNlYXJjaEZpZWxkIiwiZWwiLCJoYW5kbGVLZXlEb3duU2VhcmNoIiwiaGFuZGxlS2V5RG93biIsIm92ZXJsYXkiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJzZWxlY3RJbnB1dEVsZW1lbnQiLCJQdXJlQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiYm9vbCIsIm5vZGUiLCJvYmplY3QiLCJoYXNBbGwiLCJpY29uQWxsIiwib25lT2ZUeXBlIiwic3RyaW5nIiwibXVsdGlwbGUiLCJuYW1lIiwiaXNSZXF1aXJlZCIsIm9uQ2hhbmdlIiwiZnVuYyIsIm9uQ2xvc2UiLCJhcnJheSIsIm9uZU9mIiwibnVtYmVyIiwiZGVmYXVsdFByb3BzIiwiaGVpZ2h0Iiwibm9fcmVzdWx0X21hdGNoIiwibl9jaGlsZHJlbiIsIm9uZV9jaGlsZCIsImRvY3VtZW50IiwiYm9keSIsInN0eWxlIiwic2xpY2UiLCJvbkNsaWNrIiwic2V0VGltZW91dCIsImZvY3VzIiwiZm9jdXNPblNlbGVjdGVkSXRlbSIsIml0ZW1TZWxlY3RlZCIsInF1ZXJ5U2VsZWN0b3IiLCJwYXJlbnRFbGVtZW50IiwidGFnTmFtZSIsIml0ZW1zIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpdGVtVG9Gb2N1cyIsIm5leHRJdGVtIiwiZXZlbnQiLCJrZXkiLCJhY3RpdmVFbGVtZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJoaVNlbGVjdGVkIiwidmFsdWVMaXN0IiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsInNwbGljZSIsImlkc0luU3VnZ2VzdGlvbnMiLCJzdWdnZXN0aW9uIiwiYWxsQ2hpbGRyZW5TdWdnZXN0aW9uc1NlbGVjdGVkIiwiY29uY2F0IiwiY2VudGVyZWQiLCJhbGxJdGVtIiwidW5zaGlmdCIsImV2dCIsInN0b3BQcm9wYWdhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O2tRQUFBOztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVPLElBQU1BLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxXQUFVO0FBQzVCQyxjQUFNO0FBQ0ZDLDZCQUFpQkMsTUFBTUMsT0FBTixDQUFjQyxXQUQ3QjtBQUVGQyxzQkFBVSxHQUZSO0FBR0ZDLG1CQUFPLE1BSEw7QUFJRkMsc0JBQVU7QUFKUixTQURzQjtBQU81QkMsZ0JBQVE7QUFDSkYsbUJBQU8sTUFESDtBQUVKRyxvQkFBUTtBQUZKLFNBUG9CO0FBVzVCQyxlQUFPO0FBQ0hDLDBCQUFjLFNBRFg7QUFFSEMsdUJBQVcsR0FGUjtBQUdIQyx3QkFBWTtBQUhULFNBWHFCO0FBZ0I1QkMsbUJBQVc7QUFDUEMseUJBQWE7QUFETixTQWhCaUI7QUFtQjVCQztBQUNJQyx3QkFBWSxRQURoQjtBQUVJQyxzQkFBVSxRQUZkO0FBR0lDLDBCQUFjLFVBSGxCO0FBSUlDLDBCQUFjO0FBSmxCLFdBS09sQixNQUFNbUIsVUFBTixDQUFpQkMsS0FMeEI7QUFNSUMscUJBQVMsYUFOYjtBQU9JakIsbUJBQU87QUFQWDtBQW5CNEIsS0FBVjtBQUFBLENBQWY7O0FBOEJQOzs7Ozs7Ozs7Ozs7Ozs7O0lBZU1rQixROzs7QUF3SkYsc0JBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQSx3SEFDVEEsS0FEUzs7QUFBQTs7QUFHZixjQUFLQyxLQUFMLEdBQWE7QUFDVEMsa0JBQU0sS0FERztBQUVUQyxxQkFBUyxLQUZBO0FBR1RDLHlCQUFhLEVBSEo7QUFJVEMsK0JBQW1CLEVBSlY7QUFLVEMsdUJBQVcsRUFMRjtBQU1UQyx1QkFBVyxDQU5GO0FBT1RDLHFCQUFTO0FBUEEsU0FBYjs7QUFVQTtBQUNBLFlBQUlDLGlCQUFpQixLQUFyQjtBQUNBLFlBQU1DLE1BQU1WLE1BQU1XLEtBQWxCO0FBQ0E7QUFDQSxZQUFJLENBQUNYLE1BQU1ZLE9BQU4sQ0FBY0MsTUFBZixJQUF5QixDQUFDSCxHQUExQixJQUFpQyxDQUFDQSxJQUFJRyxNQUExQyxFQUFrRDtBQUM5Q0osNkJBQWlCLElBQWpCO0FBQ0gsU0FGRCxNQUVPO0FBQ0g7QUFDQVQsa0JBQU1ZLE9BQU4sQ0FBY0UsT0FBZCxDQUFzQixnQkFBUTtBQUMxQixvQkFBSSxDQUFDTCxjQUFELElBQW1CQyxJQUFJSyxPQUFKLENBQVlDLEtBQUtDLEVBQWpCLE1BQXlCLENBQUMsQ0FBakQsRUFBb0Q7QUFDaERSLHFDQUFpQixJQUFqQjtBQUNIO0FBQ0osYUFKRDtBQUtIOztBQUVELFlBQUksQ0FBQ0EsY0FBTCxFQUFxQjtBQUNqQixrQkFBTSxJQUFJUyxLQUFKLENBQVUsZ0RBQVYsQ0FBTjtBQUNIOztBQUVELFlBQUlsQixNQUFNbUIsVUFBTixLQUFxQixJQUFyQixJQUE2Qm5CLE1BQU1ZLE9BQU4sQ0FBY0MsTUFBZCxHQUF1QixDQUF4RCxFQUEyRDtBQUN2RCxnQkFBTU8saUJBQWlCLE1BQUtDLG1CQUFMLENBQXlCckIsS0FBekIsQ0FBdkI7O0FBRUEsa0JBQUtDLEtBQUwsQ0FBV0ssU0FBWCxHQUF1QmMsZUFBZWQsU0FBdEM7QUFDQSxrQkFBS0wsS0FBTCxDQUFXSSxpQkFBWCxHQUErQmUsZUFBZWYsaUJBQTlDO0FBQ0g7O0FBRUQsWUFBSUwsTUFBTVksT0FBTixDQUFjQyxNQUFkLEdBQXVCLENBQTNCLEVBQThCO0FBQzFCO0FBQ0EsZ0JBQUlTLGdCQUFnQixDQUFwQjtBQUNBdEIsa0JBQU1ZLE9BQU4sQ0FBY0UsT0FBZCxDQUFzQixrQkFBVTtBQUM1QixvQkFBSVMsT0FBT0MsV0FBUCxLQUF1QixJQUF2QixJQUErQkQsT0FBT04sRUFBUCxLQUFjLE1BQWpELEVBQXlEO0FBQ3JESztBQUNIO0FBQ0osYUFKRDtBQUtBLGtCQUFLckIsS0FBTCxDQUFXTSxTQUFYLEdBQXVCZSxhQUF2QjtBQUNILFNBVEQsTUFTTztBQUNILGtCQUFLckIsS0FBTCxDQUFXTyxPQUFYLEdBQXFCLElBQXJCO0FBQ0g7O0FBRUQsY0FBS2lCLFlBQUwsR0FBb0IsTUFBS0EsWUFBTCxDQUFrQkMsSUFBbEIsT0FBcEI7QUFDQSxjQUFLQyxXQUFMLEdBQW1CLE1BQUtBLFdBQUwsQ0FBaUJELElBQWpCLE9BQW5CO0FBQ0EsY0FBS0UsV0FBTCxHQUFtQixNQUFLQSxXQUFMLENBQWlCRixJQUFqQixPQUFuQjtBQUNBLGNBQUtHLGVBQUwsR0FBdUIsTUFBS0EsZUFBTCxDQUFxQkgsSUFBckIsT0FBdkI7QUFDQSxjQUFLSSxtQkFBTCxHQUEyQixNQUFLQSxtQkFBTCxDQUF5QkosSUFBekIsT0FBM0I7QUFDQSxjQUFLSyxpQkFBTCxHQUF5QixNQUFLQSxpQkFBTCxDQUF1QkwsSUFBdkIsT0FBekI7QUFDQSxjQUFLTSxXQUFMLEdBQW1CLE1BQUtBLFdBQUwsQ0FBaUJOLElBQWpCLE9BQW5CO0FBQ0EsY0FBS08sVUFBTCxHQUFrQixNQUFLQSxVQUFMLENBQWdCUCxJQUFoQixPQUFsQjtBQTNEZTtBQTREbEI7Ozs7a0RBRXlCUSxTLEVBQVc7QUFDakMsZ0JBQ0ksT0FBTyxLQUFLbEMsS0FBTCxDQUFXbUMsUUFBbEIsS0FBK0IsV0FBL0IsSUFDQSxLQUFLbkMsS0FBTCxDQUFXWSxPQURYLElBRUEsS0FBS1osS0FBTCxDQUFXWSxPQUFYLENBQW1CQyxNQUFuQixHQUE0QixDQUhoQyxFQUlFO0FBQ0UscUJBQUtrQixpQkFBTCxDQUF1QkcsVUFBVXRCLE9BQWpDO0FBQ0Esb0JBQUlVLGdCQUFnQixDQUFwQjtBQUNBWSwwQkFBVXRCLE9BQVYsQ0FBa0JFLE9BQWxCLENBQTBCLGtCQUFVO0FBQ2hDLHdCQUFJUyxPQUFPQyxXQUFQLEtBQXVCLElBQXZCLElBQStCRCxPQUFPTixFQUFQLEtBQWMsTUFBakQsRUFBeUQ7QUFDckRLO0FBQ0g7QUFDSixpQkFKRDtBQUtBLHFCQUFLYyxRQUFMLENBQWMsRUFBRTdCLFdBQVdlLGFBQWIsRUFBZDtBQUNIOztBQUVELGdCQUFJWSxVQUFVZixVQUFWLEtBQXlCLElBQXpCLElBQWlDZSxVQUFVdEIsT0FBVixDQUFrQkMsTUFBbEIsR0FBMkIsQ0FBaEUsRUFBbUU7QUFDL0Qsb0JBQU1PLGlCQUFpQixLQUFLQyxtQkFBTCxDQUF5QmEsU0FBekIsQ0FBdkI7QUFDQSxxQkFBS0UsUUFBTCxDQUFjLEVBQUU5QixXQUFXYyxlQUFlZCxTQUE1QixFQUF1Q0QsbUJBQW1CZSxlQUFlZixpQkFBekUsRUFBZDtBQUNIO0FBQ0o7Ozs0Q0FFbUJMLEssRUFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxnQkFBTU0sWUFBWSxFQUFsQjtBQUNBLGdCQUFNRCxvQkFBb0IsRUFBMUI7QUFDQSxnQkFBSU0sUUFBUVgsTUFBTVcsS0FBTixJQUFlLEVBQTNCO0FBQ0EsZ0JBQUksQ0FBQzBCLE1BQU1DLE9BQU4sQ0FBYzNCLEtBQWQsQ0FBTCxFQUEyQkEsUUFBUSxDQUFDWCxNQUFNVyxLQUFQLENBQVI7QUFDM0JYLGtCQUFNWSxPQUFOLENBQWNFLE9BQWQsQ0FBc0Isa0JBQVU7QUFDNUIsb0JBQUlTLE9BQU9DLFdBQVAsS0FBdUIsSUFBdkIsSUFBK0IsQ0FBQ2xCLFVBQVVpQyxjQUFWLENBQXlCaEIsT0FBT04sRUFBaEMsQ0FBcEMsRUFBeUU7QUFDckVYLDhCQUFVaUIsT0FBT04sRUFBakIsSUFBdUIsRUFBdkI7QUFDQVosc0NBQWtCa0IsT0FBT04sRUFBekIsSUFBK0IsRUFBL0I7QUFDSCxpQkFIRCxNQUdPLElBQUlNLE9BQU9nQixjQUFQLENBQXNCLFVBQXRCLENBQUosRUFBdUM7QUFDMUNqQyw4QkFBVWlCLE9BQU9pQixRQUFqQixFQUEyQkMsSUFBM0IsQ0FBZ0NsQixPQUFPTixFQUF2QztBQUNBLHdCQUFJTixNQUFNK0IsUUFBTixDQUFlbkIsT0FBT04sRUFBdEIsQ0FBSixFQUErQjtBQUMzQlosMENBQWtCa0IsT0FBT2lCLFFBQXpCLEVBQW1DQyxJQUFuQyxDQUF3Q2xCLE9BQU9OLEVBQS9DO0FBQ0g7QUFDSjtBQUNKLGFBVkQ7QUFXQSxtQkFBTyxFQUFFWCxvQkFBRixFQUFhRCxvQ0FBYixFQUFQO0FBQ0g7O0FBaUVEOzs7QUFrQkE7OztBQXNDQTs7Ozs7Ozs7Ozs7O0FBaUhBOzs7Ozs7Ozs7aUNBbURTO0FBQUE7O0FBQUEseUJBcUJELEtBQUtMLEtBckJKO0FBQUEsZ0JBRUQyQyxPQUZDLFVBRURBLE9BRkM7QUFBQSxnQkFHREMsUUFIQyxVQUdEQSxRQUhDO0FBQUEsZ0JBSURDLEtBSkMsVUFJREEsS0FKQztBQUFBLGdCQUtEakMsT0FMQyxVQUtEQSxPQUxDO0FBQUEsZ0JBTURrQyxRQU5DLFVBTURBLFFBTkM7QUFBQSxnQkFPREMsVUFQQyxVQU9EQSxVQVBDO0FBQUEsZ0JBUURDLGFBUkMsVUFRREEsYUFSQztBQUFBLGdCQVNEQyxJQVRDLFVBU0RBLElBVEM7QUFBQSxnQkFVRHRDLEtBVkMsVUFVREEsS0FWQztBQUFBLGdCQVdEdUMsWUFYQyxVQVdEQSxZQVhDO0FBQUEsZ0JBWURDLG9CQVpDLFVBWURBLG9CQVpDO0FBQUEsZ0JBYURDLElBYkMsVUFhREEsSUFiQztBQUFBLGdCQWNEQyxVQWRDLFVBY0RBLFVBZEM7QUFBQSxnQkFlREMsU0FmQyxVQWVEQSxTQWZDO0FBQUEsZ0JBZ0JEQyxXQWhCQyxVQWdCREEsV0FoQkM7QUFBQSxnQkFpQkRwQyxVQWpCQyxVQWlCREEsVUFqQkM7QUFBQSxnQkFrQkRGLEVBbEJDLFVBa0JEQSxFQWxCQztBQUFBLGdCQW1CRHVDLFdBbkJDLFVBbUJEQSxXQW5CQztBQUFBLGdCQW9CREMsY0FwQkMsVUFvQkRBLGNBcEJDO0FBQUEseUJBdUJrQyxLQUFLeEQsS0F2QnZDO0FBQUEsZ0JBdUJHQyxJQXZCSCxVQXVCR0EsSUF2Qkg7QUFBQSxnQkF1QlNFLFdBdkJULFVBdUJTQSxXQXZCVDtBQUFBLGdCQXVCc0JELE9BdkJ0QixVQXVCc0JBLE9BdkJ0Qjs7O0FBeUJMLGdCQUFJTCxVQUFVLEVBQWQ7QUFDQSxnQkFBTTRELGlCQUFpQnJCLE1BQU1DLE9BQU4sQ0FBYzNCLEtBQWQsSUFBdUJBLEtBQXZCLEdBQStCQSxRQUFRLENBQUNBLEtBQUQsQ0FBUixHQUFrQixFQUF4RTs7QUFFQSxnQkFBSSxLQUFLVixLQUFMLENBQVdPLE9BQVgsSUFBc0JrRCxlQUFlN0MsTUFBZixLQUEwQixDQUFwRCxFQUF1RDtBQUNuRGYsMEJBQVVvRCxhQUFhUyxpQkFBYixDQUErQkMsT0FBL0IsQ0FBdUMsSUFBdkMsRUFBNkNGLGVBQWU3QyxNQUE1RCxDQUFWO0FBQ0gsYUFGRCxNQUVPLElBQUksS0FBS1osS0FBTCxDQUFXTSxTQUFYLEtBQXlCbUQsZUFBZTdDLE1BQXhDLElBQWtENkMsZUFBZTdDLE1BQWYsR0FBd0IsQ0FBOUUsRUFBaUY7QUFDcEZmLDBCQUFVb0QsYUFBYVcsZ0JBQWIsQ0FBOEJELE9BQTlCLENBQXNDLElBQXRDLEVBQTRDRixlQUFlN0MsTUFBM0QsQ0FBVjtBQUNILGFBRk0sTUFFQSxJQUFJLEtBQUtaLEtBQUwsQ0FBV00sU0FBWCxLQUF5Qm1ELGVBQWU3QyxNQUF4QyxJQUFrRCxLQUFLWixLQUFMLENBQVdNLFNBQVgsSUFBd0IsQ0FBOUUsRUFBaUY7QUFDcEZULDBCQUFVb0QsYUFBYVksR0FBdkI7QUFDSCxhQUZNLE1BRUEsSUFBSUosZUFBZTdDLE1BQWYsS0FBMEIsQ0FBOUIsRUFBaUM7QUFDcEMsb0JBQUlvQyxTQUFTLE1BQWIsRUFBcUI7QUFDakJuRCw4QkFBVWMsUUFBUW1ELElBQVIsQ0FBYTtBQUFBLCtCQUFLQyxFQUFFL0MsRUFBRixLQUFTeUMsZUFBZSxDQUFmLENBQWQ7QUFBQSxxQkFBYixFQUE4Q08sS0FBeEQ7QUFDSCxpQkFGRCxNQUVPO0FBQ0gsd0JBQU1DLGlCQUFpQnRELFFBQVFtRCxJQUFSLENBQWE7QUFBQSwrQkFBS0MsRUFBRS9DLEVBQUYsS0FBU3lDLGVBQWUsQ0FBZixDQUFkO0FBQUEscUJBQWIsQ0FBdkI7QUFDQTVELDhCQUNJO0FBQUE7QUFBQSwwQkFBTSxXQUFXNkMsUUFBUXBELGVBQXpCO0FBQ0ksaUZBQWUsTUFBTTJFLGVBQWVkLElBQXBDLEVBQTBDLFdBQVdULFFBQVF0RCxTQUE3RCxHQURKO0FBRUs2RSx1Q0FBZUQ7QUFGcEIscUJBREo7QUFNSDtBQUNKOztBQUVELGdCQUFJakIsYUFBSixFQUFtQjtBQUNmLG9CQUFNbUIsYUFBYSxrREFBUSxPQUFPWCxlQUFlMUQsT0FBOUIsRUFBdUMsVUFBVSxLQUFLZ0MsbUJBQXRELEdBQW5CO0FBQ0Esb0JBQUloQyxPQUFKLEVBQWE7QUFDVEEsOEJBQVVxRSxVQUFWO0FBQ0g7QUFDSjs7QUFFRCxnQkFBTUMsY0FBYywwQkFBV3pCLFFBQVE1RCxNQUFuQixzQkFDZjRELFFBQVEwQixXQURPLEVBQ08sQ0FBQ25FLElBRFIsRUFBcEI7O0FBSUEsZ0JBQUlvRSxjQUFjLEtBQWxCO0FBQ0EsZ0JBQUlaLGVBQWU3QyxNQUFmLEtBQTBCLEtBQUtaLEtBQUwsQ0FBV00sU0FBekMsRUFBb0Q7QUFDaEQrRCw4QkFBYyxJQUFkO0FBQ0g7O0FBRUQsZ0JBQUlDLGNBQWMsRUFBbEI7QUFDQSxnQkFBSSxLQUFLdkUsS0FBTCxDQUFXd0UsY0FBWCxHQUE0QixDQUFoQyxFQUFtQztBQUMvQkQsOEJBQWMsRUFBRTFGLE9BQU8sS0FBS21CLEtBQUwsQ0FBV3dFLGNBQXBCLEVBQWQ7QUFDSDs7QUFFRCxnQkFBTUMsVUFBVTtBQUFBO0FBQUEsa0JBQW1CLGFBQWEsS0FBSzVDLGVBQXJDO0FBQ1o7QUFBQTtBQUFBLHNCQUFNLE1BQUkzQixJQUFWLEVBQWdCLElBQUcsV0FBbkIsRUFBK0IsT0FBTyxFQUFFd0UsaUJBQWlCLE9BQW5CLEVBQXRDO0FBQ0k7QUFBQTtBQUFBLDBCQUFPLFdBQVcvQixRQUFRMUQsS0FBMUI7QUFDSyx5QkFBQyxDQUFDOEQsVUFBRixJQUNHO0FBQ0ksc0NBQVVuQyxPQURkO0FBRUksa0RBQXNCLEtBQUttQixpQkFGL0I7QUFHSSxnREFBb0IsQ0FBQyxPQUFELENBSHhCO0FBSUkseUNBQWFtQixhQUFheUIsTUFKOUI7QUFLSSwyQ0FMSjtBQU1JLHNDQUFVLEtBQUszRSxLQUFMLENBQVdtQyxRQU56QjtBQU9JLHNDQUFVLHNCQUFNO0FBQ1EsdUNBQUt5QyxXQUFMLEdBQW1CQyxFQUFuQjtBQUNILDZCQVR6QjtBQVVJLHVDQUFXLEtBQUtDO0FBVnBCLDBCQUZSO0FBZ0JJO0FBQ0ksa0NBQU03QixJQURWO0FBRUksa0RBQXNCRSxvQkFGMUI7QUFHSSxzQ0FBVS9DLFdBSGQ7QUFJSSxzQ0FBVSxLQUFLcUIsWUFKbkI7QUFLSSw0Q0FBZ0JpQyxjQUxwQjtBQU1JLHNDQUFVWixRQU5kO0FBT0ksdUNBQVcsS0FBSzdDLEtBQUwsQ0FBV0ssU0FQMUI7QUFRSSx3Q0FBWWEsVUFSaEI7QUFTSSwrQ0FBbUIsS0FBS2xCLEtBQUwsQ0FBV0ksaUJBVGxDO0FBVUksMENBQWM2QyxZQVZsQjtBQVdJLGtDQUFNRSxJQVhWO0FBWUksd0NBQVlDLFVBWmhCO0FBYUksdUNBQVdDLFNBYmY7QUFjSSx5Q0FBYUMsV0FkakI7QUFlSSx5Q0FBYWUsV0FmakI7QUFnQkksbUNBQU8zRCxLQWhCWDtBQWlCSSx1Q0FBVyxLQUFLb0U7QUFqQnBCO0FBaEJKO0FBREo7QUFEWSxhQUFoQjs7QUF5Q0EsbUJBQ0k7QUFBQTtBQUFBO0FBQ0ksK0JBQVdwQyxRQUFRcEUsSUFEdkI7QUFFSSx5QkFBSyxpQkFBTTtBQUNQLCtCQUFLeUcsT0FBTCxHQUFlSCxFQUFmO0FBQ0g7QUFKTDtBQU1JO0FBQUE7QUFBQTtBQUNJO0FBQUE7QUFBQTtBQUNJO0FBQ0ksZ0NBQUk1RCxFQURSO0FBRUksbUNBQU91QyxlQUFlMUQsT0FGMUI7QUFHSSxrQ0FBTUksSUFIVjtBQUlJLHFDQUFTQyxPQUpiO0FBS0ksa0NBQU04QyxJQUxWO0FBTUksc0NBQVVMLFFBTmQ7QUFPSSxzQ0FBVUksYUFQZDtBQVFJLG1DQUFPSCxLQVJYO0FBU0kscUNBQVMsS0FBS2xCLFdBVGxCO0FBVUkscUNBQVMsS0FBS0ssV0FWbEI7QUFXSSxvQ0FBUSxLQUFLQyxVQVhqQjtBQVlJLDBDQUFjLEtBQUtqQyxLQUFMLENBQVdpRixZQVo3QjtBQWFJLDBDQUFjLEtBQUtqRixLQUFMLENBQVdrRixZQWI3QjtBQWNJLHdDQUFZLG9CQUFDTCxFQUFELEVBQVE7QUFBRSx1Q0FBS00sa0JBQUwsR0FBMEJOLEVBQTFCO0FBQThCO0FBZHhEO0FBREoscUJBREo7QUFtQkszRSw2QkFDR3VELGlCQUNBO0FBQUE7QUFBQSwwQkFBSyxPQUFPYyxXQUFaO0FBQ0tFO0FBREwscUJBREEsR0FLSTtBQUFBO0FBQUE7QUFDSSx1Q0FBVSxjQURkO0FBRUksMkNBQWV2RSxJQUZuQjtBQUdJLHVDQUFXa0UsV0FIZjtBQUlJLG1DQUFPRztBQUpYO0FBTUtFO0FBTkwscUJBTlA7QUFuQkw7QUFOSixhQURKO0FBNkNIOzs7O0VBeHJCa0IsZ0JBQU1XLGE7O0FBQXZCckYsUSxDQUNLc0YsUyxHQUFZO0FBQ2Y7OztBQUdBdkMsY0FBVSxvQkFBVXdDLElBSkw7QUFLZjs7O0FBR0EvQixpQkFBYSxvQkFBVWdDLElBUlI7QUFTZjs7O0FBR0E1QyxhQUFTLG9CQUFVNkMsTUFaSjtBQWFmOzs7QUFHQTVDLGNBQVUsb0JBQVUwQyxJQWhCTDtBQWlCZjs7O0FBR0F0QyxtQkFBZSxvQkFBVXNDLElBcEJWO0FBcUJmOzs7QUFHQXpDLFdBQU8sb0JBQVV5QyxJQXhCRjtBQXlCZjs7O0FBR0FHLFlBQVEsb0JBQVVILElBNUJIO0FBNkJmOzs7QUFHQW5FLGdCQUFZLG9CQUFVbUUsSUFoQ1A7QUFpQ2Y7OztBQUdBaEMsZUFBVyxvQkFBVWlDLElBcENOO0FBcUNmOzs7QUFHQW5DLFVBQU0sb0JBQVVtQyxJQXhDRDtBQXlDZjs7O0FBR0FHLGFBQVMsb0JBQVVDLFNBQVYsQ0FBb0IsQ0FBQyxvQkFBVUMsTUFBWCxFQUFtQixvQkFBVU4sSUFBN0IsQ0FBcEIsQ0E1Q007QUE2Q2Y7OztBQUdBckUsUUFBSSxvQkFBVTJFLE1BaERDO0FBaURmOzs7QUFHQUMsY0FBVSxvQkFBVVAsSUFwREw7QUFxRGY7OztBQUdBUSxVQUFNLG9CQUFVRixNQUFWLENBQWlCRyxVQXhEUjtBQXlEZjs7Ozs7O0FBTUFDLGNBQVUsb0JBQVVDLElBQVYsQ0FBZUYsVUEvRFY7QUFnRWY7OztBQUdBRyxhQUFTLG9CQUFVRCxJQW5FSjtBQW9FZjs7O0FBR0FoQixrQkFBYyxvQkFBVWdCLElBdkVUO0FBd0VmOzs7QUFHQWYsa0JBQWMsb0JBQVVlLElBM0VUO0FBNEVmOzs7Ozs7O0FBT0E5RCxjQUFVLG9CQUFVOEQsSUFuRkw7QUFvRmY7OztBQUdBckYsYUFBUyxvQkFBVXVGLEtBQVYsQ0FBZ0JKLFVBdkZWO0FBd0ZmOzs7QUFHQTFDLGdCQUFZLG9CQUFVa0MsSUEzRlA7QUE0RmY7OztBQUdBcEMsMEJBQXNCLG9CQUFVbUMsSUEvRmpCO0FBZ0dmOzs7O0FBSUE5QixpQkFBYSxvQkFBVW9DLE1BcEdSO0FBcUdmOzs7QUFHQTdDLGdCQUFZLG9CQUFVdUMsSUF4R1A7QUF5R2Y7OztBQUdBN0Isb0JBQWdCLG9CQUFVNkIsSUE1R1g7QUE2R2Y7OztBQUdBcEMsa0JBQWMsb0JBQVVzQyxNQWhIVDtBQWlIZjs7O0FBR0F2QyxVQUFNLG9CQUFVbUQsS0FBVixDQUFnQixDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLE9BQWpCLEVBQTBCLG1CQUExQixDQUFoQixDQXBIUztBQXFIZjs7O0FBR0F6RixXQUFPLG9CQUFVZ0YsU0FBVixDQUFvQixDQUFDLG9CQUFVVSxNQUFYLEVBQW1CLG9CQUFVVCxNQUE3QixFQUFxQyxvQkFBVU8sS0FBL0MsQ0FBcEI7QUF4SFEsQztBQURqQnBHLFEsQ0E0SEt1RyxZLEdBQWU7QUFDbEIxRCxjQUFVLEtBRFE7QUFFbEJDLFdBQU8sS0FGVztBQUdsQmdELGNBQVUsS0FIUTtBQUlsQjVDLFVBQU0sTUFKWTtBQUtsQkgsY0FBVSxLQUxRO0FBTWxCQyxnQkFBWSxLQU5NO0FBT2xCMEMsWUFBUSxLQVBVO0FBUWxCQyxhQUFTLEtBUlM7QUFTbEJ2RSxnQkFBWSxLQVRNO0FBVWxCZ0MsMEJBQXNCLEtBVko7QUFXbEJILG1CQUFlLEtBWEc7QUFZbEJJLFVBQU0scUVBQXNCLE9BQU8sRUFBRXZFLE9BQU8sRUFBVCxFQUFhMEgsUUFBUSxFQUFyQixFQUE3QixHQVpZO0FBYWxCbEQsZ0JBQVkscUVBQXNCLE9BQU8sRUFBRXhFLE9BQU8sRUFBVCxFQUFhMEgsUUFBUSxFQUFyQixFQUE3QixHQWJNO0FBY2xCakQsZUFBVyxxRUFBc0IsT0FBTyxFQUFFekUsT0FBTyxFQUFULEVBQWEwSCxRQUFRLEVBQXJCLEVBQTdCLEdBZE87QUFlbEJoRCxpQkFBYSwrREFBZ0IsT0FBTyxFQUFFMUUsT0FBTyxFQUFULEVBQWEwSCxRQUFRLEVBQXJCLEVBQXZCLEdBZks7QUFnQmxCckQsa0JBQWM7QUFDVlksYUFBSyxLQURLO0FBRVYwQyx5QkFBaUIsaUJBRlA7QUFHVjdCLGdCQUFRLFFBSEU7QUFJVmQsMEJBQWtCLG1CQUpSO0FBS1ZGLDJCQUFtQixrQkFMVDtBQU1WOEMsb0JBQVksVUFORjtBQU9WQyxtQkFBVztBQVBELEtBaEJJO0FBeUJsQmpELG9CQUFnQjtBQXpCRSxDOzs7OztTQXNJdEI5QixXLEdBQWMsWUFBTTtBQUNoQixZQUFJLE9BQUsxQixLQUFMLENBQVdDLElBQWYsRUFBcUI7QUFDakIsbUJBQUswQixXQUFMO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsZ0JBQUksQ0FBQyxPQUFLNUIsS0FBTCxDQUFXeUQsY0FBaEIsRUFBZ0M7QUFDNUJrRCx5QkFBU0MsSUFBVCxDQUFjQyxLQUFkLENBQW9CcEgsUUFBcEIsR0FBK0IsUUFBL0I7QUFDSDtBQUNELG1CQUFLMkMsUUFBTCxDQUFjLEVBQUNsQyxNQUFNLElBQVAsRUFBZDtBQUNBLGdCQUFNVSxVQUFVLE9BQUtaLEtBQUwsQ0FBV1ksT0FBWCxDQUFtQmtHLEtBQW5CLEVBQWhCO0FBQ0EsbUJBQUsvRSxpQkFBTCxDQUF1Qm5CLE9BQXZCOztBQUVBLGdCQUFJLE9BQUtaLEtBQUwsQ0FBVytHLE9BQWYsRUFBd0I7QUFDcEIsdUJBQUsvRyxLQUFMLENBQVcrRyxPQUFYO0FBQ0g7O0FBRUQ7QUFDQSxnQkFBSSxPQUFLbkMsV0FBVCxFQUFzQjtBQUNsQjtBQUNBLG9CQUFNQSxjQUFjLE9BQUtBLFdBQXpCO0FBQ0FvQywyQkFBVyxZQUFNO0FBQ2JwQyxnQ0FBWXFDLEtBQVo7QUFDSCxpQkFGRCxFQUVHLENBRkg7QUFHSCxhQU5ELE1BTU8sSUFBSSxPQUFLakMsT0FBVCxFQUFrQjtBQUNyQjtBQUNBLHVCQUFLa0MsbUJBQUw7QUFDSDtBQUNKO0FBQ0osSzs7U0FFREEsbUIsR0FBc0IsWUFBTTtBQUN4QjtBQUNBLFlBQU1sQyxVQUFVLDJCQUFZLE9BQUtBLE9BQWpCLENBQWhCO0FBQ0EsWUFBTWEsV0FBVyxPQUFLN0YsS0FBTCxDQUFXNkYsUUFBNUI7QUFDQSxZQUFNbEYsUUFBUSxPQUFLWCxLQUFMLENBQVdXLEtBQXpCO0FBQ0EsWUFBTStDLGlCQUFpQnJCLE1BQU1DLE9BQU4sQ0FBYzNCLEtBQWQsSUFBdUJBLEtBQXZCLEdBQStCLENBQUNBLEtBQUQsQ0FBdEQ7QUFDQXFHLG1CQUFXLFlBQU07QUFDYixnQkFBSTdHLFVBQVUsS0FBZDtBQUNBO0FBQ0EsZ0JBQUl1RCxlQUFlN0MsTUFBZixHQUF3QixDQUE1QixFQUErQjtBQUMzQixvQkFBTXNHLGVBQWVuQyxRQUFRb0MsYUFBUixnQkFDSjFELGVBQWVBLGVBQWU3QyxNQUFmLEdBQXdCLENBQXZDLENBREksUUFBckI7QUFHQSxvQkFBSXNHLGdCQUFnQkEsYUFBYUUsYUFBYixDQUEyQkMsT0FBM0IsS0FBdUMsSUFBM0QsRUFBaUU7QUFDN0RILGlDQUFhRSxhQUFiLENBQTJCSixLQUEzQjtBQUNBOUcsOEJBQVUsSUFBVjtBQUNIO0FBQ0o7QUFDRDtBQUNBLGdCQUFJdUQsZUFBZTdDLE1BQWYsS0FBMEIsQ0FBMUIsSUFBK0IsQ0FBQ1YsT0FBcEMsRUFBNkM7QUFDekM7QUFDQSxvQkFBTW9ILFFBQVF2QyxRQUFRd0Msb0JBQVIsQ0FBNkIsSUFBN0IsQ0FBZDtBQUNBLG9CQUFJQyxjQUFjRixNQUFNLENBQU4sQ0FBbEI7QUFDQTtBQUNBLG9CQUFJMUIsWUFBWW5DLGVBQWU3QyxNQUFmLEdBQXdCLENBQXhDLEVBQTJDO0FBQ3ZDNEcsa0NBQWNGLE1BQU0sQ0FBTixDQUFkO0FBQ0g7QUFDRCxvQkFBSUUsV0FBSixFQUFpQjtBQUNiQSxnQ0FBWVIsS0FBWjtBQUNIO0FBQ0o7QUFDSixTQXpCRCxFQXlCRyxDQXpCSDtBQTBCSCxLOztTQUdEbEMsYSxHQUFnQixpQkFBUztBQUNyQixZQUFJMkMsaUJBQUo7QUFDQSxZQUFJQyxNQUFNQyxHQUFOLEtBQWMsV0FBbEIsRUFBK0I7QUFDM0JGLHVCQUFXLHNDQUFzQmYsU0FBU2tCLGFBQS9CLEVBQThDLE1BQTlDLENBQVg7QUFDSCxTQUZELE1BRU8sSUFBSUYsTUFBTUMsR0FBTixLQUFjLFNBQWxCLEVBQTZCO0FBQ2hDRix1QkFBVyxzQ0FBc0JmLFNBQVNrQixhQUEvQixFQUE4QyxJQUE5QyxDQUFYO0FBQ0gsU0FGTSxNQUVBLElBQUlGLE1BQU1DLEdBQU4sS0FBYyxLQUFsQixFQUF5QjtBQUM1QixnQkFBSSxDQUFDLE9BQUs1SCxLQUFMLENBQVd5RCxjQUFoQixFQUFnQztBQUM1QmtELHlCQUFTQyxJQUFULENBQWNDLEtBQWQsQ0FBb0JwSCxRQUFwQixHQUErQixNQUEvQjtBQUNIO0FBQ0QsbUJBQUsyQyxRQUFMLENBQWMsRUFBRWxDLE1BQU0sS0FBUixFQUFkO0FBQ0g7QUFDRCxZQUFJd0gsUUFBSixFQUFjO0FBQ1ZBLHFCQUFTVCxLQUFUO0FBQ0g7QUFDSixLOztTQUdEbkMsbUIsR0FBc0IsaUJBQVM7QUFDM0IsWUFBSSxPQUFLRSxPQUFMLEtBQWlCMkMsTUFBTUMsR0FBTixLQUFjLFdBQWQsSUFBNkJELE1BQU1DLEdBQU4sS0FBYyxTQUE1RCxDQUFKLEVBQTRFO0FBQ3hFLG1CQUFLVixtQkFBTDtBQUNIO0FBQ0osSzs7U0FFRGxGLFcsR0FBYyxZQUFNO0FBQ2hCLGVBQUtJLFFBQUwsQ0FBYyxFQUFFakMsU0FBUyxJQUFYLEVBQWQ7QUFDSCxLOztTQUVEOEIsVSxHQUFhLFlBQU07QUFDZixlQUFLRyxRQUFMLENBQWMsRUFBRWpDLFNBQVMsS0FBWCxFQUFkO0FBQ0gsSzs7U0FFRHlCLFcsR0FBYyxZQUFNO0FBQ2hCLFlBQUksQ0FBQyxPQUFLNUIsS0FBTCxDQUFXeUQsY0FBaEIsRUFBZ0M7QUFDNUJrRCxxQkFBU0MsSUFBVCxDQUFjQyxLQUFkLENBQW9CcEgsUUFBcEIsR0FBK0IsTUFBL0I7QUFDSDtBQUNELGVBQUsyQyxRQUFMLENBQWM7QUFDVmxDLGtCQUFNO0FBREksU0FBZDs7QUFJQSxZQUFJLE9BQUtGLEtBQUwsQ0FBV2tHLE9BQWYsRUFBd0I7QUFDcEIsbUJBQUtsRyxLQUFMLENBQVdrRyxPQUFYO0FBQ0g7QUFDRCxZQUFJLE9BQUtmLGtCQUFULEVBQTZCO0FBQ3pCLG1CQUFLQSxrQkFBTCxDQUF3QjhCLEtBQXhCO0FBQ0g7QUFDSixLOztTQUVEcEYsZSxHQUFrQixVQUFDOEYsS0FBRCxFQUFXO0FBQ3pCO0FBQ0EsWUFBSSxDQUFDLE9BQUt4QyxrQkFBTCxDQUF3QjJDLFFBQXhCLENBQWlDSCxNQUFNSSxNQUF2QyxDQUFMLEVBQXFEO0FBQ2pELG1CQUFLbkcsV0FBTCxDQUFpQitGLEtBQWpCO0FBQ0g7QUFDSixLOztTQVlEbEcsWSxHQUFlLFVBQUNrRyxLQUFELEVBQVEzRyxJQUFSLEVBQWlCO0FBQUEsc0JBQ3FDLE9BQUtoQixLQUQxQztBQUFBLFlBQ3BCNkYsUUFEb0IsV0FDcEJBLFFBRG9CO0FBQUEsWUFDVmxGLEtBRFUsV0FDVkEsS0FEVTtBQUFBLFlBQ0htRixJQURHLFdBQ0hBLElBREc7QUFBQSxZQUNHRSxRQURILFdBQ0dBLFFBREg7QUFBQSxZQUNhcEYsT0FEYixXQUNhQSxPQURiO0FBQUEsWUFDc0JPLFVBRHRCLFdBQ3NCQSxVQUR0QjtBQUFBLHNCQUV3QixPQUFLbEIsS0FGN0I7QUFBQSxZQUVwQkksaUJBRm9CLFdBRXBCQSxpQkFGb0I7QUFBQSxZQUVEQyxTQUZDLFdBRURBLFNBRkM7QUFBQSxZQUVVQyxTQUZWLFdBRVVBLFNBRlY7O0FBRzVCLFlBQU15SCwwQkFBa0IzSCxpQkFBbEIsQ0FBTjs7QUFFQSxZQUFJd0YsUUFBSixFQUFjO0FBQ1YsZ0JBQUlvQyxZQUFZdEgsS0FBaEI7QUFDQSxnQkFBSUssS0FBS0MsRUFBTCxLQUFZLE1BQWhCLEVBQXdCO0FBQ3BCLG9CQUFJZ0gsVUFBVXBILE1BQVYsS0FBcUJOLFNBQXpCLEVBQW9DO0FBQ2hDMEgsZ0NBQVksRUFBWjtBQUNBLHdCQUFJOUcsVUFBSixFQUFnQjtBQUNaO0FBQ0ErRywrQkFBT0MsSUFBUCxDQUFZSCxVQUFaLEVBQXdCbEgsT0FBeEIsQ0FBZ0MsZUFBTztBQUNuQ2tILHVDQUFXSixHQUFYLElBQWtCLEVBQWxCO0FBQ0gseUJBRkQ7QUFHSDtBQUNKLGlCQVJELE1BUU87QUFDSGhILDRCQUFRRSxPQUFSLENBQWdCLGtCQUFVO0FBQ3RCLDRCQUNJUyxPQUFPQyxXQUFQLEtBQXVCLElBQXZCLElBQ0EsQ0FBQ3lHLFVBQVV2RixRQUFWLENBQW1CbkIsT0FBT04sRUFBMUIsQ0FERCxJQUVBTSxPQUFPTixFQUFQLEtBQWMsTUFIbEIsRUFJRTtBQUNFZ0gsc0NBQVV4RixJQUFWLENBQWVsQixPQUFPTixFQUF0QjtBQUNILHlCQU5ELE1BTU8sSUFBSU0sT0FBT0MsV0FBUCxLQUF1QixJQUEzQixFQUFpQztBQUNwQztBQUNBd0csdUNBQVd6RyxPQUFPTixFQUFsQixJQUF3QlgsVUFBVWlCLE9BQU9OLEVBQWpCLENBQXhCO0FBQ0g7QUFDSixxQkFYRDtBQVlIO0FBQ0osYUF2QkQsTUF1Qk8sSUFDSGdILFVBQVV2RixRQUFWLENBQW1CMUIsS0FBS0MsRUFBeEIsS0FDQ0QsS0FBS1EsV0FBTCxLQUFxQixJQUFyQixJQUNHbkIsa0JBQWtCVyxLQUFLQyxFQUF2QixFQUEyQkosTUFBM0IsS0FBc0NQLFVBQVVVLEtBQUtDLEVBQWYsRUFBbUJKLE1BSDFELEVBSUw7QUFDRTtBQUNBLG9CQUFJRyxLQUFLUSxXQUFMLEtBQXFCLElBQXpCLEVBQStCO0FBQzNCeUcsZ0NBQVlBLFVBQVVHLE1BQVYsQ0FBaUIsZUFBTztBQUNoQywrQkFBTzFILFFBQVFNLEtBQUtDLEVBQXBCO0FBQ0gscUJBRlcsQ0FBWjtBQUdIOztBQUVELG9CQUFJRCxLQUFLUSxXQUFMLEtBQXFCLElBQXpCLEVBQStCO0FBQzNCO0FBQ0F5RyxnQ0FBWUEsVUFBVUcsTUFBVixDQUFpQixlQUFPO0FBQ2hDLCtCQUFPLENBQUMsT0FBS25JLEtBQUwsQ0FBV0ssU0FBWCxDQUFxQlUsS0FBS0MsRUFBMUIsRUFBOEJ5QixRQUE5QixDQUF1Q2hDLEdBQXZDLENBQVI7QUFDSCxxQkFGVyxDQUFaO0FBR0FzSCwrQkFBV2hILEtBQUtDLEVBQWhCLElBQXNCLEVBQXRCO0FBQ0gsaUJBTkQsTUFNTyxJQUFJRCxLQUFLdUIsY0FBTCxDQUFvQixVQUFwQixDQUFKLEVBQXFDO0FBQ3hDO0FBQ0E7QUFDQXlGLCtCQUFXaEgsS0FBS3dCLFFBQWhCLEVBQTBCNkYsTUFBMUIsQ0FBaUNMLFdBQVdoSCxLQUFLd0IsUUFBaEIsRUFBMEJ6QixPQUExQixDQUFrQ0MsS0FBS0MsRUFBdkMsQ0FBakMsRUFBNkUsQ0FBN0U7QUFDSDtBQUNKLGFBdkJNLE1BdUJBO0FBQ0g7QUFDQSxvQkFBSUQsS0FBS1EsV0FBTCxLQUFxQixJQUF6QixFQUErQnlHLFVBQVV4RixJQUFWLENBQWV6QixLQUFLQyxFQUFwQjs7QUFFL0Isb0JBQUlELEtBQUtRLFdBQUwsS0FBcUIsSUFBekIsRUFBK0I7QUFDM0I7QUFDQTtBQUNBLHdCQUFNOEcsbUJBQW1CLEVBQXpCO0FBQ0EsMkJBQUtySSxLQUFMLENBQVdHLFdBQVgsQ0FBdUJVLE9BQXZCLENBQStCLHNCQUFjO0FBQ3pDLDRCQUFJLE9BQUtiLEtBQUwsQ0FBV0ssU0FBWCxDQUFxQlUsS0FBS0MsRUFBMUIsRUFBOEJ5QixRQUE5QixDQUF1QzZGLFdBQVd0SCxFQUFsRCxDQUFKLEVBQTJEO0FBQ3ZEcUgsNkNBQWlCN0YsSUFBakIsQ0FBc0I4RixXQUFXdEgsRUFBakM7QUFDSDtBQUNKLHFCQUpEO0FBS0E7QUFDQSx3QkFBSXVILGlDQUFpQyxJQUFyQztBQUNBRixxQ0FBaUJ4SCxPQUFqQixDQUF5QixjQUFNO0FBQzNCLDRCQUFJLENBQUNULGtCQUFrQlcsS0FBS0MsRUFBdkIsRUFBMkJ5QixRQUEzQixDQUFvQ3pCLEVBQXBDLENBQUwsRUFBOEM7QUFDMUN1SCw2REFBaUMsS0FBakM7QUFDSDtBQUNKLHFCQUpEOztBQU1BLHdCQUFJQSxtQ0FBbUMsSUFBdkMsRUFBNkM7QUFDekM7QUFDQUYseUNBQWlCeEgsT0FBakIsQ0FBeUIsY0FBTTtBQUMzQm1ILHNDQUFVSSxNQUFWLENBQWlCSixVQUFVbEgsT0FBVixDQUFrQkUsRUFBbEIsQ0FBakIsRUFBd0MsQ0FBeEM7QUFDQStHLHVDQUFXaEgsS0FBS0MsRUFBaEIsRUFBb0JvSCxNQUFwQixDQUEyQkwsV0FBV2hILEtBQUtDLEVBQWhCLEVBQW9CRixPQUFwQixDQUE0QkUsRUFBNUIsQ0FBM0IsRUFBNEQsQ0FBNUQ7QUFDSCx5QkFIRDtBQUlILHFCQU5ELE1BTU87QUFDSDtBQUNBZ0gsb0NBQVksNEJBQVlBLFVBQVVRLE1BQVYsQ0FBaUJILGdCQUFqQixDQUFaLENBQVo7QUFDQU4sbUNBQVdoSCxLQUFLQyxFQUFoQixJQUFzQiw0QkFDbEIrRyxXQUFXaEgsS0FBS0MsRUFBaEIsRUFBb0J3SCxNQUFwQixDQUEyQkgsZ0JBQTNCLENBRGtCLENBQXRCO0FBR0g7O0FBRUQsMkJBQUtsRyxRQUFMLENBQWMsRUFBRS9CLG1CQUFtQjJILFVBQXJCLEVBQWQ7QUFDSCxpQkFoQ0QsTUFnQ08sSUFBSWhILEtBQUt1QixjQUFMLENBQW9CLFVBQXBCLENBQUosRUFBcUM7QUFDeEM7QUFDQTtBQUNBeUYsK0JBQVdoSCxLQUFLd0IsUUFBaEIsRUFBMEJDLElBQTFCLENBQStCekIsS0FBS0MsRUFBcEM7QUFDSDtBQUNKO0FBQ0QsbUJBQUttQixRQUFMLENBQWMsRUFBRS9CLG1CQUFtQjJILFVBQXJCLEVBQWQ7QUFDQWhDLHFCQUFTMkIsS0FBVCxFQUFnQk0sU0FBaEI7QUFDSCxTQTVGRCxNQTRGTztBQUNIakMscUJBQVMyQixLQUFULEVBQWdCM0csS0FBS0MsRUFBckI7QUFDQSxtQkFBS1csV0FBTDtBQUNIO0FBQ0osSzs7U0FRREcsaUIsR0FBb0IsdUJBQWU7QUFBQSxzQkFDOEIsT0FBSy9CLEtBRG5DO0FBQUEsWUFDdkJZLE9BRHVCLFdBQ3ZCQSxPQUR1QjtBQUFBLFlBQ2Q2RSxNQURjLFdBQ2RBLE1BRGM7QUFBQSxZQUNOQyxPQURNLFdBQ05BLE9BRE07QUFBQSxZQUNHeEMsWUFESCxXQUNHQSxZQURIO0FBQUEsWUFDaUIyQyxRQURqQixXQUNpQkEsUUFEakI7OztBQUcvQixZQUFJekYsWUFBWVMsTUFBWixLQUF1QixDQUEzQixFQUE4QjtBQUMxQjtBQUNBO0FBQ0FULDBCQUFjLEVBQWQ7QUFDQUEsd0JBQVlxQyxJQUFaLENBQWlCO0FBQ2J4QixvQkFBSSxZQURTO0FBRWJnQyxzQkFBTSxNQUZPO0FBR2JMLDBCQUFVLElBSEc7QUFJYjhGLDBCQUFVLElBSkc7QUFLYjVGLDBCQUFVLEtBTEc7QUFNYm1CLHVCQUFPZixhQUFhc0Q7QUFOUCxhQUFqQjtBQVFILFNBWkQsTUFZTyxJQUNIZixVQUNBckYsWUFBWVMsTUFBWixHQUFxQixDQURyQixJQUVBVCxZQUFZUyxNQUFaLEtBQXVCRCxRQUFRQyxNQUYvQixJQUdBZ0YsYUFBYSxJQUpWLEVBS0w7QUFDRTtBQUNBLGdCQUFJekYsWUFBWWdJLE1BQVosQ0FBbUI7QUFBQSx1QkFBY0csV0FBV3RILEVBQVgsS0FBa0IsTUFBaEM7QUFBQSxhQUFuQixFQUEyREosTUFBM0QsS0FBc0UsQ0FBMUUsRUFBNkU7QUFDekUsb0JBQU04SCxVQUFVO0FBQ1oxSCx3QkFBSSxNQURRO0FBRVptQywwQkFBTXNDLE9BRk07QUFHWnpCLDJCQUFPZixhQUFhWTtBQUhSLGlCQUFoQjtBQUtBLG9CQUFJNEIsWUFBWSxLQUFoQixFQUF1QjtBQUNuQmlELDRCQUFRMUYsSUFBUixHQUFlLE1BQWY7QUFDSDtBQUNEN0MsNEJBQVl3SSxPQUFaLENBQW9CRCxPQUFwQjtBQUNIO0FBQ0o7O0FBRUQsZUFBS3ZHLFFBQUwsQ0FBYztBQUNWaEM7QUFEVSxTQUFkO0FBR0gsSzs7U0FFRDBCLG1CLEdBQXNCLGVBQU87QUFDekIrRyxZQUFJQyxlQUFKO0FBQ0EsZUFBSzlJLEtBQUwsQ0FBV2dHLFFBQVgsQ0FBb0IsT0FBS2hHLEtBQUwsQ0FBVzhGLElBQS9CLEVBQXFDLEVBQXJDO0FBQ0gsSzs7O2tCQWdLVSx3QkFBV3hILE1BQVgsRUFBbUIsRUFBRXdILE1BQU0sY0FBUixFQUFuQixFQUE2Qy9GLFFBQTdDLEMiLCJmaWxlIjoiSGlTZWxlY3QuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvbWZhemlvL2Rldi9wcm9qZWN0cy9oaXBheS1tYXRlcmlhbC11aSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBpbmhlcml0ZWRDb21wb25lbnQgSW5wdXRcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBHcm93IGZyb20gJ21hdGVyaWFsLXVpL3RyYW5zaXRpb25zL0dyb3cnO1xuaW1wb3J0IHsgZmluZERPTU5vZGUgfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFBhcGVyIGZyb20gJ21hdGVyaWFsLXVpL1BhcGVyJztcbmltcG9ydCBDbGlja0F3YXlMaXN0ZW5lciBmcm9tICdtYXRlcmlhbC11aS91dGlscy9DbGlja0F3YXlMaXN0ZW5lcic7XG5pbXBvcnQgeyBNYW5hZ2VyLCBUYXJnZXQsIFBvcHBlciB9IGZyb20gJ3JlYWN0LXBvcHBlcic7XG5pbXBvcnQgeyBDaGVja2JveEJsYW5rT3V0bGluZSwgQ2hlY2tib3hNYXJrZWQgfSBmcm9tICdtZGktbWF0ZXJpYWwtdWknO1xuaW1wb3J0IEhpU2VsZWN0YWJsZUxpc3QgZnJvbSAnLi4vSGlTZWxlY3RhYmxlTGlzdCc7XG5pbXBvcnQgeyBIaVNlYXJjaEZpZWxkIH0gZnJvbSAnLi4vSGlGb3JtJztcbmltcG9ydCBTZWxlY3RJbnB1dCBmcm9tICcuL1NlbGVjdElucHV0JztcbmltcG9ydCBIaUNoaXAgZnJvbSAnLi4vSGlDaGlwL0hpQ2hpcCc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnLi4vc3R5bGVzJztcbmltcG9ydCB7IGFycmF5VW5pcXVlLCBnZXROZXh0SXRlbVNlbGVjdGFibGUgfSBmcm9tICcuLi91dGlscy9oaUhlbHBlcnMnO1xuaW1wb3J0IEhpSWNvbkJ1aWxkZXIgZnJvbSAnLi4vdXRpbHMvSGlJY29uQnVpbGRlcic7XG5cbmV4cG9ydCBjb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQyLFxuICAgICAgICBtYXhXaWR0aDogNTAwLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB9LFxuICAgIHBvcHBlcjoge1xuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICB6SW5kZXg6IDksXG4gICAgfSxcbiAgICBwYXBlcjoge1xuICAgICAgICBib3JkZXJSYWRpdXM6ICcwcHggMnB4JyxcbiAgICAgICAgbWF4SGVpZ2h0OiA0NDAsXG4gICAgICAgIHRyYW5zaXRpb246ICdub25lICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gICAgbGFiZWxJY29uOiB7XG4gICAgICAgIG1hcmdpblJpZ2h0OiAxMCxcbiAgICB9LFxuICAgIHNlbGVjdEljb25MYWJlbDoge1xuICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgICAgIHBhZGRpbmdSaWdodDogMTYsXG4gICAgICAgIC4uLnRoZW1lLnR5cG9ncmFwaHkuYm9keTEsXG4gICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgfSxcbn0pO1xuXG4vKipcbiAqXG4gKiBVdGlsaXPDqSBwb3VyIHRvdXMgdHlwZXMgZGUgc2VsZWN0cyBkYW5zIGxlcyBmb3JtdWxhaXJlcy5cbiAqIC0gc2luZ2xlIC8gbXVsdGlwbGUgKCBtdWx0aS1zZWxlY3QgKVxuICogLSBhdmVjIC8gc2FucyBjaGVja2JveGVzXG4gKiAtIGF2ZWMgLyBzYW5zIGJhcnJlIGRlIHJlY2hlcmNoZVxuICogLSBhdmVjIC8gc2FucyBvcHRpb24gXCJBbGxcIlxuICogLSBwcmlzZSBlbiBjb21wdGUgZHUgdHlwZSBkZXMgw6lsw6ltZW50cyAodGV4dCwgaW1hZ2UsIGljb24sIC4uLilcbiAqXG4gKiBDZSBjb21wb3NhbnQgcsOpdW5pIGxlcyBzb3VzLWNvbXBvc2FudHNcbiAqIC0gU2VsZWN0SW5wdXQgOiBhZmZpY2hlIGwnw6lsw6ltZW50IGRhbnMgbGUgZm9ybXVsYWlyZVxuICogLSBIaVNlYXJjaEZpZWxkIDogaW50w6hncmUgdW5lIGJhcnJlIGRlIHJlY2hlcmNoZSBkYW5zIGxlIFBvcHBlcixcbiAqIGlsIGZpbHRyZSBsYSBsaXN0ZSBkZXMgc3VnZ2VzdGlvbnNcbiAqIC0gSGlTZWxlY3RhYmxlTGlzdCA6IGFmZmljaGUgbGEgbGlzdGUgZGVzIHN1Z2dlc3Rpb25zIHNlbG9uIGxlIHR5cGUgZGVzIMOpbMOpbWVudHNcbiAqL1xuY2xhc3MgSGlTZWxlY3QgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQWZmaWNoZSB1bmUgY2hlY2tib3ggcG91ciBjaGFxdWUgw6lsw6ltZW50cywgcGFyIGTDqWZhdXQgc2kgb3B0aW9ucyBlc3QgbmVzdGVkXG4gICAgICAgICAqL1xuICAgICAgICBjaGVja2JveDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJY29uIGFmZmljaMOpIGxvcnNxdWUgbCdpdGVtIGVzdCBzw6lsZWN0aW9ubsOpXG4gICAgICAgICAqL1xuICAgICAgICBjaGVja2VkSWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VmdWwgdG8gZXh0ZW5kIHRoZSBzdHlsZSBhcHBsaWVkIHRvIGNvbXBvbmVudHMuXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogSW5hY3RpZlxuICAgICAgICAgKi9cbiAgICAgICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogT3B0aW9uIHBlcm1ldHRhbnQgZCdhZmZpY2hlciBsZXMgc8OpbGVjdGlvbiBzb3VzIGZvcm1lIGRlIENoaXAuXG4gICAgICAgICAqL1xuICAgICAgICBkaXNwbGF5QXNDaGlwOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFwcGxpcXVlIGxlIHN0eWxlIGVycm9yXG4gICAgICAgICAqL1xuICAgICAgICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZmZpY2hlIGwnw6lsw6ltZW50ICdBbGwnXG4gICAgICAgICAqL1xuICAgICAgICBoYXNBbGw6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogTGVzIGl0ZW1zIHNvbnQgaGnDqXJhcmNoaXPDqXNcbiAgICAgICAgICovXG4gICAgICAgIGhpZXJhcmNoaWM6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXVlIGwnaXRlbSBuJ2VzdCBwYXMgc8OpbGVjdGlvbm7DqSBldCBxdSdvbiBsZSBzdXJ2b2xlXG4gICAgICAgICAqL1xuICAgICAgICBob3Zlckljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXVlIGwnaXRlbSBuJ2VzdCBwYXMgc8OpbGVjdGlvbm7DqVxuICAgICAgICAgKi9cbiAgICAgICAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb20gZGUgbCdpY8O0bmVcbiAgICAgICAgICovXG4gICAgICAgIGljb25BbGw6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ib29sXSksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBpZCBkdSBzZWxlY3RcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAvKipcbiAgICAgICAgICogQXV0b3Jpc2UgbGEgc8OpbGVjdGlvbiBkZSBwbHVzaWV1cnMgdmFsZXVyc1xuICAgICAgICAgKi9cbiAgICAgICAgbXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogTm9tIGR1IGNoYW1wIGRlIGZvcm11bGFpcmVcbiAgICAgICAgICovXG4gICAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIHF1aSByZW52b2l0IGxhL2xlcyB2YWxldXJzIHPDqWxlY3Rpb25uw6llc1xuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmcgfHwgYXJyYXl9IHZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGxvcnNxdSdvbiBmZXJtZSBsZSBzZWxlY3RcbiAgICAgICAgICovXG4gICAgICAgIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXBwZWzDqWUgbG9yc3F1J29uIHN1cnZvbGUgbGUgY2hhbXBzXG4gICAgICAgICAqL1xuICAgICAgICBvbk1vdXNlRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXBwZWzDqWUgbG9yc3F1ZSBsZSBjdXJzZXVyIHF1aXR0ZSBsZSBjaGFtcHNcbiAgICAgICAgICovXG4gICAgICAgIG9uTW91c2VMZWF2ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhcHBlbMOpZSBsb3JzcXUnb24gw6ljcml0IGRhbnMgbGEgYmFycmUgZGUgcmVjaGVyY2hlXG4gICAgICAgICAqIEEgdXRpbGlzZXIgcG91ciBsZXMgc2VsZWN0cyBhdmVjIGRlcyBkb25uw6llcyBkeW5hbWlxdWVzXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICAgICAgICovXG4gICAgICAgIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3RlcyBkZXMgb3B0aW9ucyBkdSBzZWxlY3RcbiAgICAgICAgICovXG4gICAgICAgIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXUndW4gaXRlbSBwYXJlbnQgbidlc3QgcGFzIHPDqWxlY3Rpb25uw6lcbiAgICAgICAgICovXG4gICAgICAgIHBhcmVudEljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogTGVzIGl0ZW1zIHBhcmVudHMgc29udCBzw6lsZWN0aW9ubmFibGVzXG4gICAgICAgICAqL1xuICAgICAgICBwYXJlbnRJdGVtU2VsZWN0YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQbGFjZWhvbGRlciBhZmZpY2jDqSBsb3JzcXVlIGxlIHNlbGVjdCBlc3QgZmVybcOpXG4gICAgICAgICAqIFN1cmNoYXJnZSBsZSBwbGFjZWhvbGRlciBwYXIgZMOpZmF1dFxuICAgICAgICAgKi9cbiAgICAgICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZmZpY2hlIHVuIGlucHV0IGRlIHJlY2hlcmNoZSBwZXJtZXR0YW50IGRlIGZpbHRyZXIgbGVzIG9wdGlvbnNcbiAgICAgICAgICovXG4gICAgICAgIHNlYXJjaGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogU2kgdHJ1ZSwgbGUgY29udGVudSBkdSBzZWxlY3Qgc2VyYSBkYW5zIHVuZSBkaXYgc3RhdGljIHBsdXRvdCBxdWUgZGFucyB1bmUgcG9wcGVyIGFic29sdXRlXG4gICAgICAgICAqL1xuICAgICAgICBzdGF0aWNQb3NpdGlvbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUcmFkdWN0aW9ucyAocGFyIGTDqWZhdXQgZW4gYW5nbGFpcylcbiAgICAgICAgICovXG4gICAgICAgIHRyYW5zbGF0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFR5cGUgZGVzIMOpbMOpbWVudHMgZHUgc2VsZWN0LCBkw6lmaW5pdCBsZSByZW5kdSBkJ3VuIMOpbMOpbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogUHJvcFR5cGVzLm9uZU9mKFsnaWNvbicsICd0ZXh0JywgJ2ltYWdlJywgJ3ByaW1hcnktaGlnaGxpZ2h0J10pLFxuICAgICAgICAvKipcbiAgICAgICAgICogVmFsdWUocykgZHUgc2VsZWN0XG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmFycmF5XSksXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IGZhbHNlLFxuICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgY2hlY2tib3g6IGZhbHNlLFxuICAgICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgICAgaGFzQWxsOiBmYWxzZSxcbiAgICAgICAgaWNvbkFsbDogZmFsc2UsXG4gICAgICAgIGhpZXJhcmNoaWM6IGZhbHNlLFxuICAgICAgICBwYXJlbnRJdGVtU2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIGRpc3BsYXlBc0NoaXA6IGZhbHNlLFxuICAgICAgICBpY29uOiA8Q2hlY2tib3hCbGFua091dGxpbmUgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH19IC8+LFxuICAgICAgICBwYXJlbnRJY29uOiA8Q2hlY2tib3hCbGFua091dGxpbmUgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH19IC8+LFxuICAgICAgICBob3Zlckljb246IDxDaGVja2JveEJsYW5rT3V0bGluZSBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAgfX0gLz4sXG4gICAgICAgIGNoZWNrZWRJY29uOiA8Q2hlY2tib3hNYXJrZWQgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH19IC8+LFxuICAgICAgICB0cmFuc2xhdGlvbnM6IHtcbiAgICAgICAgICAgIGFsbDogJ0FsbCcsXG4gICAgICAgICAgICBub19yZXN1bHRfbWF0Y2g6ICdObyByZXN1bHQgbWF0Y2gnLFxuICAgICAgICAgICAgc2VhcmNoOiAnU2VhcmNoJyxcbiAgICAgICAgICAgIG5faXRlbXNfc2VsZWN0ZWQ6ICclcyBpdGVtcyBzZWxlY3RlZCcsXG4gICAgICAgICAgICBvbmVfaXRlbV9zZWxlY3RlZDogJyVzIGl0ZW0gc2VsZWN0ZWQnLFxuICAgICAgICAgICAgbl9jaGlsZHJlbjogJyVzIGl0ZW1zJyxcbiAgICAgICAgICAgIG9uZV9jaGlsZDogJyVzIGl0ZW0nLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0aWNQb3NpdGlvbjogZmFsc2UsXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgb3BlbjogZmFsc2UsXG4gICAgICAgICAgICBmb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zOiBbXSxcbiAgICAgICAgICAgIGhpZXJhcmNoeVNlbGVjdGVkOiB7fSxcbiAgICAgICAgICAgIGhpZXJhcmNoeToge30sXG4gICAgICAgICAgICBuYk9wdGlvbnM6IDAsXG4gICAgICAgICAgICBkeW5hbWljOiBmYWxzZSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBDaGVjayBpZiB2YWx1ZSBpcyBpbiBvcHRpb25zXG4gICAgICAgIGxldCB2YWx1ZUluT3B0aW9ucyA9IGZhbHNlO1xuICAgICAgICBjb25zdCB2YWwgPSBwcm9wcy52YWx1ZTtcbiAgICAgICAgLy8gTm8gb3B0aW9ucyBwcm92aWRlZC5cbiAgICAgICAgaWYgKCFwcm9wcy5vcHRpb25zLmxlbmd0aCB8fCAhdmFsIHx8ICF2YWwubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YWx1ZUluT3B0aW9ucyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBhbiBvcHRpb24gbWF0Y2ggdmFsdWUgcHJvcC5cbiAgICAgICAgICAgIHByb3BzLm9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlSW5PcHRpb25zICYmIHZhbC5pbmRleE9mKGl0ZW0uaWQpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZUluT3B0aW9ucyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlSW5PcHRpb25zKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb3AgdmFsdWUgcHJvdmlkZWQgZG9lcyBub3QgbWF0Y2ggYW55IG9wdGlvbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5oaWVyYXJjaGljID09PSB0cnVlICYmIHByb3BzLm9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5VHJlZXMgPSB0aGlzLmJ1aWxkSGllcmFyY2h5VHJlZXMocHJvcHMpO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmhpZXJhcmNoeSA9IGhpZXJhcmNoeVRyZWVzLmhpZXJhcmNoeTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuaGllcmFyY2h5U2VsZWN0ZWQgPSBoaWVyYXJjaHlUcmVlcy5oaWVyYXJjaHlTZWxlY3RlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5vcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIEdldCByZWFsIG9wdGlvbnMgbnVtYmVyIChwYXJlbnQgJiBfYWxsIGFyZSBub3QgcmVhbCBvcHRpb25zKVxuICAgICAgICAgICAgbGV0IG9wdGlvbnNMZW5ndGggPSAwO1xuICAgICAgICAgICAgcHJvcHMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbi5oYXNDaGlsZHJlbiAhPT0gdHJ1ZSAmJiBvcHRpb24uaWQgIT09ICdfYWxsJykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zTGVuZ3RoKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5iT3B0aW9ucyA9IG9wdGlvbnNMZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmR5bmFtaWMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3QgPSB0aGlzLmhhbmRsZVNlbGVjdC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrID0gdGhpcy5oYW5kbGVDbGljay5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsb3NlID0gdGhpcy5oYW5kbGVDbG9zZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrQXdheSA9IHRoaXMuaGFuZGxlQ2xpY2tBd2F5LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlUmVxdWVzdERlbGV0ZSA9IHRoaXMuaGFuZGxlUmVxdWVzdERlbGV0ZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZVN1Z2dlc3Rpb25zID0gdGhpcy5oYW5kbGVTdWdnZXN0aW9ucy5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUZvY3VzID0gdGhpcy5oYW5kbGVGb2N1cy5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUJsdXIgPSB0aGlzLmhhbmRsZUJsdXIuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgdGhpcy5wcm9wcy5vblNlYXJjaCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIHRoaXMucHJvcHMub3B0aW9ucyAmJlxuICAgICAgICAgICAgdGhpcy5wcm9wcy5vcHRpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN1Z2dlc3Rpb25zKG5leHRQcm9wcy5vcHRpb25zKTtcbiAgICAgICAgICAgIGxldCBvcHRpb25zTGVuZ3RoID0gMDtcbiAgICAgICAgICAgIG5leHRQcm9wcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uLmhhc0NoaWxkcmVuICE9PSB0cnVlICYmIG9wdGlvbi5pZCAhPT0gJ19hbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNMZW5ndGgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBuYk9wdGlvbnM6IG9wdGlvbnNMZW5ndGggfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dFByb3BzLmhpZXJhcmNoaWMgPT09IHRydWUgJiYgbmV4dFByb3BzLm9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5VHJlZXMgPSB0aGlzLmJ1aWxkSGllcmFyY2h5VHJlZXMobmV4dFByb3BzKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBoaWVyYXJjaHk6IGhpZXJhcmNoeVRyZWVzLmhpZXJhcmNoeSwgaGllcmFyY2h5U2VsZWN0ZWQ6IGhpZXJhcmNoeVRyZWVzLmhpZXJhcmNoeVNlbGVjdGVkIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBidWlsZEhpZXJhcmNoeVRyZWVzKHByb3BzKSB7XG4gICAgICAgIC8vIENvbnN0cnVjdCB0d28gYXNzb2NpYXRpdmUgYXJyYXlzXG4gICAgICAgIC8vIGhpZXJhcmNoeVtwYXJlbnRJZF0gPT4gY2hpbGRyZW5cbiAgICAgICAgLy8gaGllcmFyY2h5U2VsZWN0ZWRbcGFyZW50SWRdID0+IHNlbGVjdGVkIGNoaWxkcmVuXG4gICAgICAgIGNvbnN0IGhpZXJhcmNoeSA9IHt9O1xuICAgICAgICBjb25zdCBoaWVyYXJjaHlTZWxlY3RlZCA9IHt9O1xuICAgICAgICBsZXQgdmFsdWUgPSBwcm9wcy52YWx1ZSB8fCBbXTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgdmFsdWUgPSBbcHJvcHMudmFsdWVdO1xuICAgICAgICBwcm9wcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb24uaGFzQ2hpbGRyZW4gPT09IHRydWUgJiYgIWhpZXJhcmNoeS5oYXNPd25Qcm9wZXJ0eShvcHRpb24uaWQpKSB7XG4gICAgICAgICAgICAgICAgaGllcmFyY2h5W29wdGlvbi5pZF0gPSBbXTtcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZFtvcHRpb24uaWRdID0gW107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbi5oYXNPd25Qcm9wZXJ0eSgncGFyZW50SWQnKSkge1xuICAgICAgICAgICAgICAgIGhpZXJhcmNoeVtvcHRpb24ucGFyZW50SWRdLnB1c2gob3B0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMob3B0aW9uLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZFtvcHRpb24ucGFyZW50SWRdLnB1c2gob3B0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBoaWVyYXJjaHksIGhpZXJhcmNoeVNlbGVjdGVkIH07XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wcm9wcy5zdGF0aWNQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe29wZW46IHRydWV9KTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnByb3BzLm9wdGlvbnMuc2xpY2UoKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU3VnZ2VzdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2xpY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2VzdGlvbiBkdSBmb2N1c1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoRmllbGQpIHtcbiAgICAgICAgICAgICAgICAvLyBzaSBzZWFyY2hhYmxlLCBmb2N1cyBzdXIgbGUgY2hhbXBzIGRlIHJlY2hlcmNoZVxuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaEZpZWxkID0gdGhpcy5zZWFyY2hGaWVsZDtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoRmllbGQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICAgICAgLy8gc2lub24gZm9jdXMgc3VyIGxlIGRlcm5pZXIgw6lsw6ltZW50IHNlbGVjdGlvbm7DqVxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPblNlbGVjdGVkSXRlbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZvY3VzT25TZWxlY3RlZEl0ZW0gPSAoKSA9PiB7XG4gICAgICAgIC8vIE9uIHLDqWN1cMOocmUgbGEgZGl2IHBhcmVudCBcIm92ZXJsYXlcIlxuICAgICAgICBjb25zdCBvdmVybGF5ID0gZmluZERPTU5vZGUodGhpcy5vdmVybGF5KTtcbiAgICAgICAgY29uc3QgbXVsdGlwbGUgPSB0aGlzLnByb3BzLm11bHRpcGxlO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucHJvcHMudmFsdWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSWRMaXN0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIFNpIHVuIG91IHBsdXNpZXVycyBpdGVtcyBzb250IHNlbGVjdGlvbm7DqXMsIG9uIGZvY3VzIHN1ciBsZSBkZXJuaWVyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJZExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1TZWxlY3RlZCA9IG92ZXJsYXkucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAgICAgYFtkYXRhLWlkPVwiJHtzZWxlY3RlZElkTGlzdFtzZWxlY3RlZElkTGlzdC5sZW5ndGggLSAxXX1cIl1gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1TZWxlY3RlZCAmJiBpdGVtU2VsZWN0ZWQucGFyZW50RWxlbWVudC50YWdOYW1lID09PSAnTEknKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1TZWxlY3RlZC5wYXJlbnRFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFNpIHBhcyBkJ2l0ZW0gc2VsZWN0aW9ubsOpLCBvdSBwYXMgdmlzaWJsZSAoZW4gY2FzIGRlIHJlY2hlcmNoZSksIGZvY3VzIHN1ciBsZSBwcmVtaWVyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJZExpc3QubGVuZ3RoID09PSAwIHx8ICFmb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gT24gcmVjdXDDqHJlIHRvdXMgbGVzIGl0ZW1zXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBvdmVybGF5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaScpO1xuICAgICAgICAgICAgICAgIGxldCBpdGVtVG9Gb2N1cyA9IGl0ZW1zWzBdO1xuICAgICAgICAgICAgICAgIC8vIFNpIHNlbGVjdCBtdWx0aXBsZSwgZXQgcXUnYXUgbW9pbnMgdW4gc2VsZWN0aW9ubsOpLCBmb2N1cyBzdXIgbGUgMmUgaXRlbVxuICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsZSAmJiBzZWxlY3RlZElkTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Ub0ZvY3VzID0gaXRlbXNbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtVG9Gb2N1cykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtVG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMSk7XG4gICAgfTtcblxuICAgIC8vIEtleSBkb3duIG9uIGxpc3QgaXRlbXNcbiAgICBoYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgICAgICBsZXQgbmV4dEl0ZW07XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgICAgICBuZXh0SXRlbSA9IGdldE5leHRJdGVtU2VsZWN0YWJsZShkb2N1bWVudC5hY3RpdmVFbGVtZW50LCAnZG93bicpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICBuZXh0SXRlbSA9IGdldE5leHRJdGVtU2VsZWN0YWJsZShkb2N1bWVudC5hY3RpdmVFbGVtZW50LCAndXAnKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucHJvcHMuc3RhdGljUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG9wZW46IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXh0SXRlbSkge1xuICAgICAgICAgICAgbmV4dEl0ZW0uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBLZXkgZG93biBvbiBzZWFyY2ggaW5wdXRcbiAgICBoYW5kbGVLZXlEb3duU2VhcmNoID0gZXZlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uU2VsZWN0ZWRJdGVtKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkOiB0cnVlIH0pO1xuICAgIH07XG5cbiAgICBoYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9jdXNlZDogZmFsc2UgfSk7XG4gICAgfTtcblxuICAgIGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMuc3RhdGljUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBvcGVuOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DbG9zZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0SW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdElucHV0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGhhbmRsZUNsaWNrQXdheSA9IChldmVudCkgPT4ge1xuICAgICAgICAvLyBBdSBjbGljIHN1ciBsZSBib3V0b24sIG9uIGxhaXNzZSBsZSBoYW5kbGVDbGljayBmZXJtZXIgbGUgc2VsZWN0XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RJbnB1dEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbG9zZShldmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2FsbCBvbkNoYW5nZSB3aXRoIHRoZSB1cGRhdGVkIHZhbHVlXG4gICAgICpcbiAgICAgKiAtIGhhbmRsZSBzaW5nbGUgdmFsdWVcbiAgICAgKiAtIGhhbmRsZSBtdWx0aXBsZSB2YWx1ZVxuICAgICAqIC0gaGFuZGxlICdfYWxsJyBpZFxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICogQHBhcmFtIGl0ZW1cbiAgICAgKi9cbiAgICBoYW5kbGVTZWxlY3QgPSAoZXZlbnQsIGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgeyBtdWx0aXBsZSwgdmFsdWUsIG5hbWUsIG9uQ2hhbmdlLCBvcHRpb25zLCBoaWVyYXJjaGljIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGhpZXJhcmNoeVNlbGVjdGVkLCBoaWVyYXJjaHksIG5iT3B0aW9ucyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3QgaGlTZWxlY3RlZCA9IHsgLi4uaGllcmFyY2h5U2VsZWN0ZWQgfTtcblxuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZUxpc3QgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSAnX2FsbCcpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVMaXN0Lmxlbmd0aCA9PT0gbmJPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGllcmFyY2hpYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgaGllcmFyY2hpYyBzZWxlY3QgPT4gZW1wdHkgYXNzb2NpYXRpdmUgYXJyYXkgb2Ygc2VsZWN0ZWQgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGhpU2VsZWN0ZWQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2tleV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmhhc0NoaWxkcmVuICE9PSB0cnVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIXZhbHVlTGlzdC5pbmNsdWRlcyhvcHRpb24uaWQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmlkICE9PSAnX2FsbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdC5wdXNoKG9wdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbi5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGhpZXJhcmNoaWMgc2VsZWN0ID0+IGZpbGwgYXNzb2NpYXRpdmUgYXJyYXkgb2Ygc2VsZWN0ZWQgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW29wdGlvbi5pZF0gPSBoaWVyYXJjaHlbb3B0aW9uLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB2YWx1ZUxpc3QuaW5jbHVkZXMoaXRlbS5pZCkgfHxcbiAgICAgICAgICAgICAgICAoaXRlbS5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZFtpdGVtLmlkXS5sZW5ndGggPT09IGhpZXJhcmNoeVtpdGVtLmlkXS5sZW5ndGgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBpdGVtIGTDqWrDoCBzw6lsZWN0aW9ubsOpID0+IG9uIGxlIGTDqXNlbGVjdGlvbm5lXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0ID0gdmFsdWVMaXN0LmZpbHRlcih2YWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbCAhPT0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGFsbCBjaGlsZHJlblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QgPSB2YWx1ZUxpc3QuZmlsdGVyKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuc3RhdGUuaGllcmFyY2h5W2l0ZW0uaWRdLmluY2x1ZGVzKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0uaWRdID0gW107XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmhhc093blByb3BlcnR5KCdwYXJlbnRJZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpIGl0ZW0gZXN0IHVuIGVuZmFudCBvbiBsJ2VubMOodmUgZHUgdGFibGVhdSBhc3NvY2lhdGlmIGRlc1xuICAgICAgICAgICAgICAgICAgICAvLyBlbG10cyBzw6lsZWN0aW9ubsOpc1xuICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0ucGFyZW50SWRdLnNwbGljZShoaVNlbGVjdGVkW2l0ZW0ucGFyZW50SWRdLmluZGV4T2YoaXRlbS5pZCksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaXRlbSBub24gc8OpbGVjdGlvbm7DqSA9PiBvbiBsZSBzw6lsZWN0aW9ubmVcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiAhPT0gdHJ1ZSkgdmFsdWVMaXN0LnB1c2goaXRlbS5pZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaSBpdGVtIHBhcmVudCA9PiBvbiBham91dGUgdG91cyBsZXMgZW5mYW50c1xuICAgICAgICAgICAgICAgICAgICAvLyBPdSBvbiBsZXMgc3VwcHJpbWUgcydpbHMgc29udCBkw6lqw6AgdG91cyBzw6lsZWN0aW9ubsOpcyAoZGFucyB1bmUgbGlzdGUgZmlsdHLDqWUpXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkc0luU3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zdWdnZXN0aW9ucy5mb3JFYWNoKHN1Z2dlc3Rpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuaGllcmFyY2h5W2l0ZW0uaWRdLmluY2x1ZGVzKHN1Z2dlc3Rpb24uaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRzSW5TdWdnZXN0aW9ucy5wdXNoKHN1Z2dlc3Rpb24uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYoaGllcmFyY2h5U2VsZWN0ZWRbaXRlbS5pZF0ubGVuZ3RoID4gMCkge31cbiAgICAgICAgICAgICAgICAgICAgbGV0IGFsbENoaWxkcmVuU3VnZ2VzdGlvbnNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlkc0luU3VnZ2VzdGlvbnMuZm9yRWFjaChpZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhpZXJhcmNoeVNlbGVjdGVkW2l0ZW0uaWRdLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbENoaWxkcmVuU3VnZ2VzdGlvbnNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQ2hpbGRyZW5TdWdnZXN0aW9uc1NlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiBzdXBwcmltZSBsZXMgZW5mYW50cyBjYXIgZMOpasOgIHRvdXMgc8OpbGVjdGlvbm7DqXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkc0luU3VnZ2VzdGlvbnMuZm9yRWFjaChpZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0LnNwbGljZSh2YWx1ZUxpc3QuaW5kZXhPZihpZCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbaXRlbS5pZF0uc3BsaWNlKGhpU2VsZWN0ZWRbaXRlbS5pZF0uaW5kZXhPZihpZCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiBham91dGUgdG91cyBsZXMgZW5mYW50cyBmaWx0csOpcyBhdSDDqWzDqW1lbnRzIHPDqWxlY3Rpb25uw6lzXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QgPSBhcnJheVVuaXF1ZSh2YWx1ZUxpc3QuY29uY2F0KGlkc0luU3VnZ2VzdGlvbnMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbaXRlbS5pZF0gPSBhcnJheVVuaXF1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0uaWRdLmNvbmNhdChpZHNJblN1Z2dlc3Rpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGllcmFyY2h5U2VsZWN0ZWQ6IGhpU2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmhhc093blByb3BlcnR5KCdwYXJlbnRJZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpIGl0ZW0gZXN0IHVuIGVuZmFudCBvbiBsJ2Fqb3V0ZSBkdSB0YWJsZWF1IGFzc29jaWF0aWYgZGVzXG4gICAgICAgICAgICAgICAgICAgIC8vIGVsbXRzIHPDqWxlY3Rpb25uw6lzXG4gICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbaXRlbS5wYXJlbnRJZF0ucHVzaChpdGVtLmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGllcmFyY2h5U2VsZWN0ZWQ6IGhpU2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICBvbkNoYW5nZShldmVudCwgdmFsdWVMaXN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGV2ZW50LCBpdGVtLmlkKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgc3VnZ2VzdGlvbnMgbGlzdFxuICAgICAqIC0gYWRkICdfbm9fcmVzdWx0JyBpdGVtIGlmIHN1Z2dlc3Rpb24gbGlzdCBpcyBlbXB0eVxuICAgICAqIC0gYWRkICdfYWxsJyBpdGVtIGlmIHN1Z2dlc3Rpb24gbGlzdCBpcyBjb21wbGV0ZVxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uc1xuICAgICAqL1xuICAgIGhhbmRsZVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMgPT4ge1xuICAgICAgICBjb25zdCB7IG9wdGlvbnMsIGhhc0FsbCwgaWNvbkFsbCwgdHJhbnNsYXRpb25zLCBtdWx0aXBsZSB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBpZiAoc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgTm8gUmVzdWx0XG4gICAgICAgICAgICAvLyBGSVggdG8gcmVtb3ZlIGFsbCBpdGVtXG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdfbm9fcmVzdWx0JyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hlY2tib3g6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnMubm9fcmVzdWx0X21hdGNoLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBoYXNBbGwgJiZcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gb3B0aW9ucy5sZW5ndGggJiZcbiAgICAgICAgICAgIG11bHRpcGxlID09PSB0cnVlXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gSGFuZGxlICdBbGwnXG4gICAgICAgICAgICBpZiAoc3VnZ2VzdGlvbnMuZmlsdGVyKHN1Z2dlc3Rpb24gPT4gc3VnZ2VzdGlvbi5pZCA9PT0gJ19hbGwnKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxJdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ19hbGwnLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBpY29uQWxsLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zLmFsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChpY29uQWxsICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBhbGxJdGVtLnR5cGUgPSAnaWNvbic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnVuc2hpZnQoYWxsSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgaGFuZGxlUmVxdWVzdERlbGV0ZSA9IGV2dCA9PiB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnByb3BzLm5hbWUsIFtdKTtcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBjaGVja2JveCxcbiAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICBkaXNwbGF5QXNDaGlwLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgdHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGUsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgcGFyZW50SWNvbixcbiAgICAgICAgICAgIGhvdmVySWNvbixcbiAgICAgICAgICAgIGNoZWNrZWRJY29uLFxuICAgICAgICAgICAgaGllcmFyY2hpYyxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBzdGF0aWNQb3NpdGlvbixcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgeyBvcGVuLCBzdWdnZXN0aW9ucywgZm9jdXNlZCB9ID0gdGhpcy5zdGF0ZTtcblxuICAgICAgICBsZXQgZGlzcGxheSA9ICcnO1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkTGlzdCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IFt2YWx1ZV0gOiBbXTtcblxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5keW5hbWljICYmIHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgZGlzcGxheSA9IHRyYW5zbGF0aW9ucy5vbmVfaXRlbV9zZWxlY3RlZC5yZXBsYWNlKCclcycsIHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5uYk9wdGlvbnMgIT09IHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCAmJiBzZWxlY3RlZElkTGlzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBkaXNwbGF5ID0gdHJhbnNsYXRpb25zLm5faXRlbXNfc2VsZWN0ZWQucmVwbGFjZSgnJXMnLCBzZWxlY3RlZElkTGlzdC5sZW5ndGgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUubmJPcHRpb25zID09PSBzZWxlY3RlZElkTGlzdC5sZW5ndGggJiYgdGhpcy5zdGF0ZS5uYk9wdGlvbnMgPj0gMSkge1xuICAgICAgICAgICAgZGlzcGxheSA9IHRyYW5zbGF0aW9ucy5hbGw7XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJZExpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBpZiAodHlwZSAhPT0gJ2ljb24nKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheSA9IG9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IHNlbGVjdGVkSWRMaXN0WzBdKS5sYWJlbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uU2VsZWN0ZWQgPSBvcHRpb25zLmZpbmQobyA9PiBvLmlkID09PSBzZWxlY3RlZElkTGlzdFswXSk7XG4gICAgICAgICAgICAgICAgZGlzcGxheSA9IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLnNlbGVjdEljb25MYWJlbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGlJY29uQnVpbGRlciBpY29uPXtvcHRpb25TZWxlY3RlZC5pY29ufSBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWxJY29ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvblNlbGVjdGVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkaXNwbGF5QXNDaGlwKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlwRmlsdGVyID0gPEhpQ2hpcCBsYWJlbD17cGxhY2Vob2xkZXIgfHwgZGlzcGxheX0gb25EZWxldGU9e3RoaXMuaGFuZGxlUmVxdWVzdERlbGV0ZX0gLz47XG4gICAgICAgICAgICBpZiAoZGlzcGxheSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBjaGlwRmlsdGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9wcGVyQ2xhc3MgPSBjbGFzc05hbWVzKGNsYXNzZXMucG9wcGVyLCB7XG4gICAgICAgICAgICBbY2xhc3Nlcy5wb3BwZXJDbG9zZV06ICFvcGVuLFxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgYWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA9PT0gdGhpcy5zdGF0ZS5uYk9wdGlvbnMpIHtcbiAgICAgICAgICAgIGFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwb3BwZXJTdHlsZSA9IHt9O1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5jb250YWluZXJXaWR0aCA+IDApIHtcbiAgICAgICAgICAgIHBvcHBlclN0eWxlID0geyB3aWR0aDogdGhpcy5wcm9wcy5jb250YWluZXJXaWR0aCB9O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjb250ZW50ID0gPENsaWNrQXdheUxpc3RlbmVyIG9uQ2xpY2tBd2F5PXt0aGlzLmhhbmRsZUNsaWNrQXdheX0+XG4gICAgICAgICAgICA8R3JvdyBpbj17b3Blbn0gaWQ9XCJtZW51LWxpc3RcIiBzdHlsZT17eyB0cmFuc2Zvcm1PcmlnaW46ICcwIDAgMCcgfX0+XG4gICAgICAgICAgICAgICAgPFBhcGVyIGNsYXNzTmFtZT17Y2xhc3Nlcy5wYXBlcn0+XG4gICAgICAgICAgICAgICAgICAgIHshIXNlYXJjaGFibGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpU2VhcmNoRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD17b3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0ZpbHRlcmVkTGlzdD17dGhpcy5oYW5kbGVTdWdnZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQcm9wZXJ0eUxpc3Q9e1snbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dHJhbnNsYXRpb25zLnNlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5wcm9wcy5vblNlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFJlZj17ZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoRmllbGQgPSBlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZUtleURvd25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgIDxIaVNlbGVjdGFibGVMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGU9e3BhcmVudEl0ZW1TZWxlY3RhYmxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUxpc3Q9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMuaGFuZGxlU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZExpc3Q9e3NlbGVjdGVkSWRMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g9e2NoZWNrYm94fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5PXt0aGlzLnN0YXRlLmhpZXJhcmNoeX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoaWM9e2hpZXJhcmNoaWN9XG4gICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZD17dGhpcy5zdGF0ZS5oaWVyYXJjaHlTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucz17dHJhbnNsYXRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17aWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEljb249e3BhcmVudEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlckljb249e2hvdmVySWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWRJY29uPXtjaGVja2VkSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbFNlbGVjdGVkPXthbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFwZXI+XG4gICAgICAgICAgICA8L0dyb3c+XG4gICAgICAgIDwvQ2xpY2tBd2F5TGlzdGVuZXI+XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucm9vdH1cbiAgICAgICAgICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5ID0gZWw7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TWFuYWdlcj5cbiAgICAgICAgICAgICAgICAgICAgPFRhcmdldD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cGxhY2Vob2xkZXIgfHwgZGlzcGxheX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9CdXR0b249e2Rpc3BsYXlBc0NoaXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17dGhpcy5oYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e3RoaXMucHJvcHMub25Nb3VzZUVudGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17dGhpcy5wcm9wcy5vbk1vdXNlTGVhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmRWxlbWVudD17KGVsKSA9PiB7IHRoaXMuc2VsZWN0SW5wdXRFbGVtZW50ID0gZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvVGFyZ2V0PlxuICAgICAgICAgICAgICAgICAgICB7b3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3BvcHBlclN0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9wcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0VuYWJsZWQ9e29wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17cG9wcGVyQ2xhc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtwb3BwZXJTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUG9wcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvTWFuYWdlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMsIHsgbmFtZTogJ0htdWlIaVNlbGVjdCcgfSkoSGlTZWxlY3QpO1xuIl19
|
37805
37805
|
|
37806
37806
|
/***/ }),
|
37807
37807
|
/* 346 */
|