@commercetools-uikit/money-input 12.2.2 → 12.2.6
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.
|
@@ -7,7 +7,6 @@ import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-st
|
|
|
7
7
|
import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';
|
|
8
8
|
import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
|
|
9
9
|
import _typeof from '@babel/runtime-corejs3/helpers/esm/typeof';
|
|
10
|
-
import _extends from '@babel/runtime-corejs3/helpers/esm/extends';
|
|
11
10
|
import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
|
|
12
11
|
import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
|
|
13
12
|
import _objectWithoutProperties from '@babel/runtime-corejs3/helpers/esm/objectWithoutProperties';
|
|
@@ -21,14 +20,14 @@ import _trimInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instanc
|
|
|
21
20
|
import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
|
|
22
21
|
import _findInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/find';
|
|
23
22
|
import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
|
|
24
|
-
import
|
|
23
|
+
import { useRef, useCallback } from 'react';
|
|
25
24
|
import ReactDOM from 'react-dom';
|
|
26
25
|
import PropTypes from 'prop-types';
|
|
27
26
|
import has from 'lodash/has';
|
|
28
27
|
import requiredIf from 'react-required-if';
|
|
29
28
|
import Select, { components } from 'react-select';
|
|
30
29
|
import { defineMessages, useIntl } from 'react-intl';
|
|
31
|
-
import { css, useTheme
|
|
30
|
+
import { css, useTheme } from '@emotion/react';
|
|
32
31
|
import { customProperties } from '@commercetools-uikit/design-system';
|
|
33
32
|
import { isNumberish, filterDataAttributes, warning, SafeHTMLElement } from '@commercetools-uikit/utils';
|
|
34
33
|
import Tooltip from '@commercetools-uikit/tooltip';
|
|
@@ -37,6 +36,7 @@ import { FractionDigitsIcon } from '@commercetools-uikit/icons';
|
|
|
37
36
|
import Constraints from '@commercetools-uikit/constraints';
|
|
38
37
|
import { useToggleState } from '@commercetools-uikit/hooks';
|
|
39
38
|
import { getInputStyles } from '@commercetools-uikit/input-utils';
|
|
39
|
+
import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
|
|
40
40
|
|
|
41
41
|
var currencies = {
|
|
42
42
|
ADP: {
|
|
@@ -702,16 +702,16 @@ var currencies = {
|
|
|
702
702
|
};
|
|
703
703
|
|
|
704
704
|
var getCurrencyLabelStyles = function getCurrencyLabelStyles() {
|
|
705
|
-
return /*#__PURE__*/css("display:flex;color:", customProperties.fontColorForInputWhenDisabled, ";background-color:", customProperties.backgroundColorForInputWhenDisabled, ";border-top-left-radius:", customProperties.borderRadiusForInput, ";border-bottom-left-radius:", customProperties.borderRadiusForInput, ";border:1px ", customProperties.borderColorForInputWhenDisabled, " solid;border-right:0;padding:0 ", customProperties.spacingS, ";align-items:center;font-size:", customProperties.fontSizeForInput, ";box-sizing:border-box;" + (process.env.NODE_ENV === "production" ? "" : ";label:getCurrencyLabelStyles;"));
|
|
705
|
+
return /*#__PURE__*/css("display:flex;color:", customProperties.fontColorForInputWhenDisabled, ";background-color:", customProperties.backgroundColorForInputWhenDisabled, ";border-top-left-radius:", customProperties.borderRadiusForInput, ";border-bottom-left-radius:", customProperties.borderRadiusForInput, ";border:1px ", customProperties.borderColorForInputWhenDisabled, " solid;border-right:0;padding:0 ", customProperties.spacingS, ";align-items:center;font-size:", customProperties.fontSizeForInput, ";box-sizing:border-box;" + (process.env.NODE_ENV === "production" ? "" : ";label:getCurrencyLabelStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vbmV5LWlucHV0LnN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJd0MiLCJmaWxlIjoibW9uZXktaW5wdXQuc3R5bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyBhcyB2YXJzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBnZXRJbnB1dFN0eWxlcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2lucHV0LXV0aWxzJztcblxuY29uc3QgZ2V0Q3VycmVuY3lMYWJlbFN0eWxlcyA9ICgpID0+IGNzc2BcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6ICR7dmFycy5mb250Q29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZH07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7dmFycy5iYWNrZ3JvdW5kQ29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZH07XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICR7dmFycy5ib3JkZXJSYWRpdXNGb3JJbnB1dH07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICR7dmFycy5ib3JkZXJSYWRpdXNGb3JJbnB1dH07XG4gIGJvcmRlcjogMXB4ICR7dmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkRpc2FibGVkfSBzb2xpZDtcbiAgYm9yZGVyLXJpZ2h0OiAwO1xuICBwYWRkaW5nOiAwICR7dmFycy5zcGFjaW5nU307XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogJHt2YXJzLmZvbnRTaXplRm9ySW5wdXR9O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuYDtcblxuY29uc3QgZ2V0QW1vdW50SW5wdXRTdHlsZXMgPSAocHJvcHMpID0+IFtcbiAgZ2V0SW5wdXRTdHlsZXMocHJvcHMpLFxuICBjc3NgXG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICR7dmFycy5wbGFjZWhvbGRlckZvbnRDb2xvckZvcklucHV0fTtcbiAgICB9XG4gIGAsXG5dO1xuXG5jb25zdCBnZXRIaWdoUHJlY2lzaW9uV3JhcHBlclN0eWxlcyA9ICh7IGlzRGlzYWJsZWQgfSkgPT4gY3NzYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIG1hcmdpbi1yaWdodDogJHt2YXJzLnNwYWNpbmdYc307XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiAke2lzRGlzYWJsZWQgPyAnbm90LWFsbG93ZWQnIDogJ2RlZmF1bHQnfTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xuXG5leHBvcnQge1xuICBnZXRIaWdoUHJlY2lzaW9uV3JhcHBlclN0eWxlcyxcbiAgZ2V0Q3VycmVuY3lMYWJlbFN0eWxlcyxcbiAgZ2V0QW1vdW50SW5wdXRTdHlsZXMsXG59O1xuIl19 */");
|
|
706
706
|
};
|
|
707
707
|
|
|
708
708
|
var getAmountInputStyles = function getAmountInputStyles(props) {
|
|
709
|
-
return [getInputStyles(props), /*#__PURE__*/css("border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0;&::placeholder{color:", customProperties.placeholderFontColorForInput, ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:getAmountInputStyles;"))];
|
|
709
|
+
return [getInputStyles(props), /*#__PURE__*/css("border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0;&::placeholder{color:", customProperties.placeholderFontColorForInput, ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:getAmountInputStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vbmV5LWlucHV0LnN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQksiLCJmaWxlIjoibW9uZXktaW5wdXQuc3R5bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyBhcyB2YXJzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBnZXRJbnB1dFN0eWxlcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2lucHV0LXV0aWxzJztcblxuY29uc3QgZ2V0Q3VycmVuY3lMYWJlbFN0eWxlcyA9ICgpID0+IGNzc2BcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6ICR7dmFycy5mb250Q29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZH07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7dmFycy5iYWNrZ3JvdW5kQ29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZH07XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICR7dmFycy5ib3JkZXJSYWRpdXNGb3JJbnB1dH07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICR7dmFycy5ib3JkZXJSYWRpdXNGb3JJbnB1dH07XG4gIGJvcmRlcjogMXB4ICR7dmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkRpc2FibGVkfSBzb2xpZDtcbiAgYm9yZGVyLXJpZ2h0OiAwO1xuICBwYWRkaW5nOiAwICR7dmFycy5zcGFjaW5nU307XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogJHt2YXJzLmZvbnRTaXplRm9ySW5wdXR9O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuYDtcblxuY29uc3QgZ2V0QW1vdW50SW5wdXRTdHlsZXMgPSAocHJvcHMpID0+IFtcbiAgZ2V0SW5wdXRTdHlsZXMocHJvcHMpLFxuICBjc3NgXG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICR7dmFycy5wbGFjZWhvbGRlckZvbnRDb2xvckZvcklucHV0fTtcbiAgICB9XG4gIGAsXG5dO1xuXG5jb25zdCBnZXRIaWdoUHJlY2lzaW9uV3JhcHBlclN0eWxlcyA9ICh7IGlzRGlzYWJsZWQgfSkgPT4gY3NzYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIG1hcmdpbi1yaWdodDogJHt2YXJzLnNwYWNpbmdYc307XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiAke2lzRGlzYWJsZWQgPyAnbm90LWFsbG93ZWQnIDogJ2RlZmF1bHQnfTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xuXG5leHBvcnQge1xuICBnZXRIaWdoUHJlY2lzaW9uV3JhcHBlclN0eWxlcyxcbiAgZ2V0Q3VycmVuY3lMYWJlbFN0eWxlcyxcbiAgZ2V0QW1vdW50SW5wdXRTdHlsZXMsXG59O1xuIl19 */")];
|
|
710
710
|
};
|
|
711
711
|
|
|
712
712
|
var getHighPrecisionWrapperStyles = function getHighPrecisionWrapperStyles(_ref) {
|
|
713
713
|
var isDisabled = _ref.isDisabled;
|
|
714
|
-
return /*#__PURE__*/css("position:absolute;top:0;right:0;margin-right:", customProperties.spacingXs, ";height:100%;display:flex;align-items:center;cursor:", isDisabled ? 'not-allowed' : 'default', ";justify-content:center;" + (process.env.NODE_ENV === "production" ? "" : ";label:getHighPrecisionWrapperStyles;"));
|
|
714
|
+
return /*#__PURE__*/css("position:absolute;top:0;right:0;margin-right:", customProperties.spacingXs, ";height:100%;display:flex;align-items:center;cursor:", isDisabled ? 'not-allowed' : 'default', ";justify-content:center;" + (process.env.NODE_ENV === "production" ? "" : ";label:getHighPrecisionWrapperStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vbmV5LWlucHV0LnN0eWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQjZEIiwiZmlsZSI6Im1vbmV5LWlucHV0LnN0eWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgYXMgdmFycyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgZ2V0SW5wdXRTdHlsZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pbnB1dC11dGlscyc7XG5cbmNvbnN0IGdldEN1cnJlbmN5TGFiZWxTdHlsZXMgPSAoKSA9PiBjc3NgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGNvbG9yOiAke3ZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuRGlzYWJsZWR9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3ZhcnMuYmFja2dyb3VuZENvbG9yRm9ySW5wdXRXaGVuRGlzYWJsZWR9O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAke3ZhcnMuYm9yZGVyUmFkaXVzRm9ySW5wdXR9O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAke3ZhcnMuYm9yZGVyUmFkaXVzRm9ySW5wdXR9O1xuICBib3JkZXI6IDFweCAke3ZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZH0gc29saWQ7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgcGFkZGluZzogMCAke3ZhcnMuc3BhY2luZ1N9O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6ICR7dmFycy5mb250U2l6ZUZvcklucHV0fTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbmA7XG5cbmNvbnN0IGdldEFtb3VudElucHV0U3R5bGVzID0gKHByb3BzKSA9PiBbXG4gIGdldElucHV0U3R5bGVzKHByb3BzKSxcbiAgY3NzYFxuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAke3ZhcnMucGxhY2Vob2xkZXJGb250Q29sb3JGb3JJbnB1dH07XG4gICAgfVxuICBgLFxuXTtcblxuY29uc3QgZ2V0SGlnaFByZWNpc2lvbldyYXBwZXJTdHlsZXMgPSAoeyBpc0Rpc2FibGVkIH0pID0+IGNzc2BcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBtYXJnaW4tcmlnaHQ6ICR7dmFycy5zcGFjaW5nWHN9O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogJHtpc0Rpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdkZWZhdWx0J307XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYDtcblxuZXhwb3J0IHtcbiAgZ2V0SGlnaFByZWNpc2lvbldyYXBwZXJTdHlsZXMsXG4gIGdldEN1cnJlbmN5TGFiZWxTdHlsZXMsXG4gIGdldEFtb3VudElucHV0U3R5bGVzLFxufTtcbiJdfQ== */");
|
|
715
715
|
};
|
|
716
716
|
|
|
717
717
|
var messages = defineMessages({
|
|
@@ -741,6 +741,7 @@ var TooltipWrapper = _styled("div", process.env.NODE_ENV === "production" ? {
|
|
|
741
741
|
} : {
|
|
742
742
|
name: "zjik7",
|
|
743
743
|
styles: "display:flex",
|
|
744
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vbmV5LWlucHV0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdDaUMiLCJmaWxlIjoibW9uZXktaW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VSZWYsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcbmltcG9ydCByZXF1aXJlZElmIGZyb20gJ3JlYWN0LXJlcXVpcmVkLWlmJztcbmltcG9ydCBTZWxlY3QsIHsgY29tcG9uZW50cyB9IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyB1c2VJbnRsIH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgeyBjc3MsIHVzZVRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyBhcyB2YXJzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQge1xuICB3YXJuaW5nLFxuICBpc051bWJlcmlzaCxcbiAgU2FmZUhUTUxFbGVtZW50LFxuICBmaWx0ZXJEYXRhQXR0cmlidXRlcyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvdXRpbHMnO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvdG9vbHRpcCc7XG5pbXBvcnQge1xuICBEcm9wZG93bkluZGljYXRvcixcbiAgY3JlYXRlU2VsZWN0U3R5bGVzLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zZWxlY3QtdXRpbHMnO1xuaW1wb3J0IHsgRnJhY3Rpb25EaWdpdHNJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IENvbnN0cmFpbnRzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2NvbnN0cmFpbnRzJztcbmltcG9ydCB7IHVzZVRvZ2dsZVN0YXRlIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaG9va3MnO1xuaW1wb3J0IGN1cnJlbmNpZXMgZnJvbSAnLi9jdXJyZW5jaWVzLmpzb24nO1xuaW1wb3J0IHtcbiAgZ2V0SGlnaFByZWNpc2lvbldyYXBwZXJTdHlsZXMsXG4gIGdldEN1cnJlbmN5TGFiZWxTdHlsZXMsXG4gIGdldEFtb3VudElucHV0U3R5bGVzLFxufSBmcm9tICcuL21vbmV5LWlucHV0LnN0eWxlcyc7XG5pbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi9tZXNzYWdlcyc7XG5cbmNvbnN0IFRvb2x0aXBXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbmA7XG5cbmNvbnN0IGdldFBvcnRhbElkID0gKGlkKSA9PiBgcG9ydGFsLSR7aWR9YDtcbmNvbnN0IGdldFBvcnRhbE5vZGUgPSAoaWQpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2dldFBvcnRhbElkKGlkKX1gKTtcblxuY29uc3QgUG9ydGFsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGRvbU5vZGUgPSBnZXRQb3J0YWxOb2RlKHByb3BzLmlkKTtcbiAgcmV0dXJuIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChwcm9wcy5jaGlsZHJlbiwgZG9tTm9kZSk7XG59O1xuXG5jb25zdCBDdXJyZW5jeUxhYmVsID0gKHByb3BzKSA9PiAoXG4gIDxsYWJlbCBodG1sRm9yPXtwcm9wcy5pZH0gY3NzPXtnZXRDdXJyZW5jeUxhYmVsU3R5bGVzKCl9PlxuICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgPC9sYWJlbD5cbik7XG5cbkN1cnJlbmN5TGFiZWwuZGlzcGxheU5hbWUgPSAnQ3VycmVuY3lMYWJlbCc7XG5cbkN1cnJlbmN5TGFiZWwucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuY29uc3QgU2luZ2xlVmFsdWUgPSAoeyBpZCwgLi4ucHJvcHMgfSkgPT4gKFxuICA8Y29tcG9uZW50cy5TaW5nbGVWYWx1ZSB7Li4ucHJvcHN9PlxuICAgIDxsYWJlbCBodG1sRm9yPXtpZH0+e3Byb3BzLmNoaWxkcmVufTwvbGFiZWw+XG4gIDwvY29tcG9uZW50cy5TaW5nbGVWYWx1ZT5cbik7XG5cblNpbmdsZVZhbHVlLmRpc3BsYXlOYW1lID0gJ1NpbmdsZVZhbHVlJztcblxuU2luZ2xlVmFsdWUucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuLy8gb3ZlcndyaXRlIHN0eWxlcyBvZiBjcmVhdGVTZWxlY3RTdHlsZXNcbmNvbnN0IGNyZWF0ZUN1cnJlbmN5U2VsZWN0U3R5bGVzID0gKFxuICB7IGhhc1dhcm5pbmcsIGhhc0Vycm9yLCBpc0Rpc2FibGVkLCBpc1JlYWRPbmx5LCBoYXNGb2N1cywgbWVudVBvcnRhbFpJbmRleCB9LFxuICB0aGVtZVxuKSA9PiB7XG4gIGNvbnN0IHNlbGVjdFN0eWxlcyA9IGNyZWF0ZVNlbGVjdFN0eWxlcyhcbiAgICB7XG4gICAgICBoYXNXYXJuaW5nLFxuICAgICAgaGFzRXJyb3IsXG4gICAgICBtZW51UG9ydGFsWkluZGV4LFxuICAgIH0sXG4gICAgdGhlbWVcbiAgKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zZWxlY3RTdHlsZXMsXG4gICAgY29udHJvbDogKGJhc2UsIHN0YXRlKSA9PiAoe1xuICAgICAgLi4uc2VsZWN0U3R5bGVzLmNvbnRyb2woYmFzZSwgc3RhdGUpLFxuICAgICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6ICcwJyxcbiAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAnMCcsXG4gICAgICBib3JkZXJSaWdodDogJzAnLFxuICAgICAgbWluV2lkdGg6ICc3MnB4JyxcbiAgICAgIGJvcmRlckNvbG9yOiAoKCkgPT4ge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZClcbiAgICAgICAgICByZXR1cm4gYCR7dmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkRpc2FibGVkfSAhaW1wb3J0YW50YDtcbiAgICAgICAgaWYgKGhhc0Vycm9yKSByZXR1cm4gdmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkVycm9yO1xuICAgICAgICBpZiAoaGFzV2FybmluZykgcmV0dXJuIHZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5XYXJuaW5nO1xuICAgICAgICBpZiAoaGFzRm9jdXMpIHJldHVybiB2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuRm9jdXNlZDtcbiAgICAgICAgaWYgKGlzUmVhZE9ubHkpXG4gICAgICAgICAgcmV0dXJuIGAke3ZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5SZWFkb25seX0gIWltcG9ydGFudGA7XG4gICAgICAgIHJldHVybiB2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXQ7XG4gICAgICB9KSgpLFxuICAgICAgY3Vyc29yOiAoKCkgPT4ge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuICdub3QtYWxsb3dlZCc7XG4gICAgICAgIGlmIChpc1JlYWRPbmx5KSByZXR1cm4gYGRlZmF1bHRgO1xuICAgICAgICByZXR1cm4gJ3BvaW50ZXInO1xuICAgICAgfSkoKSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzUmVhZE9ubHkpIHJldHVybiB2YXJzLmJhY2tncm91bmRDb2xvckZvcklucHV0O1xuICAgICAgICByZXR1cm4gYmFzZS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9KSgpLFxuICAgIH0pLFxuICAgIHNpbmdsZVZhbHVlOiAoYmFzZSkgPT4gKHtcbiAgICAgIC4uLmJhc2UsXG4gICAgICBtYXJnaW5MZWZ0OiAwLFxuICAgICAgbWF4V2lkdGg6ICdpbml0aWFsJyxcbiAgICAgIGNvbG9yOiAoKCkgPT4ge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuRGlzYWJsZWQ7XG4gICAgICAgIGlmIChoYXNFcnJvcikgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuRXJyb3I7XG4gICAgICAgIGlmIChoYXNXYXJuaW5nKSByZXR1cm4gdmFycy5mb250Q29sb3JGb3JJbnB1dFdoZW5XYXJuaW5nO1xuICAgICAgICBpZiAoaXNSZWFkT25seSkgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuUmVhZG9ubHk7XG4gICAgICAgIHJldHVybiBiYXNlLmNvbG9yO1xuICAgICAgfSkoKSxcbiAgICB9KSxcbiAgICBkcm9wZG93bkluZGljYXRvcjogKCkgPT4gKHtcbiAgICAgIGZpbGw6IGlzUmVhZE9ubHkgPyB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlblJlYWRvbmx5IDogJycsXG4gICAgfSksXG4gIH07XG59O1xuXG4vLyBUaGUgTW9uZXlJbnB1dCBjb21wb25lbnQgYWx3YXlzIG9wZXJhdGVzIG9uIGEgdmFsdWUgY29uc2lzdGluZyBvZjpcbi8vICAgeyBhbW91bnQ6IFN0cmluZywgY3VycmVuY3lDb2RlOiBTdHJpbmcgfVxuLy9cbi8vIFRoZSBhbW91bnQgbWF5IG9ubHkgdXNlIGEgZG90IGFzIHRoZSBkZWNpbWFsIHNlcGFyYXRvci5cbi8vIFRoZSBjdXJyZW5jeUNvZGUgbXVzdCBiZSBzdXBwb3J0ZWQgYnkgdGhlIEFQSS5cbi8vXG4vLyBUaGUgTW9uZXlJbnB1dCBkb2VzIG5vdCBkbyBhbnkgdmFsaWRhdGlvbiBvbiBpdHMgb3duLiBJdCBvbmx5IHNlcnZlcyBhcyBhIHdheVxuLy8gdG8gZ2V0IHRoZSBhbW91bnQgYW5kIGN1cnJlbmN5Q29kZSBpbnB1dCBmcm9tIHRoZSB1c2VyLiBWYWxpZGF0aW9uIGlzIGFsd2F5c1xuLy8gdXAgdG8gdGhlIHBhcmVudC5cbi8vXG4vLyBUaGUgQ1RQIEFQSSBzdXBwb3J0cyBwcmljZXMgdHdvIHR5cGVzIG9mIHByaWNlczogY2VudFByZWNpc2lvbiBhbmRcbi8vIGhpZ2hQcmVjaXNpb24uIFRoZSBNb25leUlucHV0IGl0c2VsZiBkb2VzIG5vdCBrbm93IGFib3V0IHRoZXNlLiBIb3dldmVyLFxuLy8gaXQgaGFzIHR3byBzdGF0aWMgbWV0aG9kcyBkZWZpbmVkIChjb252ZXJ0VG9Nb25leVZhbHVlIGFuZCBwYXJzZU1vbmV5VmFsdWUpLFxuLy8gd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIE1vbmV5SW5wdXQgdmFsdWUgYW5kIHRoZSBNb25leVZhbHVlXG4vLyBzdXBwb3J0ZWQgYnkgdGhlIEFQSS5cbi8vIFNvbWUgcGxhY2VzIGluIHRoZSBBUEkgZG8gbm90IHN1cHBvcnQgaGlnaFByZWNpc2lvbiBwcmljZXMsIGJ1dCB0aGVcbi8vIGNvbnZlcnRUb01vbmV5VmFsdWUgd2lsbCBhbHdheXMgcmV0dXJuIGVpdGhlciBhIGNlbnRQcmVjaXNpb24gb3IgYVxuLy8gaGlnaFByZWNpc2lvbiBwcmljZS4gSXQncyB1cCB0aGUgTW9uZXlJbnB1dCdzIHBhcmVudCB0byBzaG93IGEgdmFsaWRhdGlvblxuLy8gZXJyb3IgaW4gY2FzZSBhIGhpZ2hQcmVjaXNpb24gcHJpY2UgaXMgdXNlZC5cbi8vXG4vLyBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXMgdG8gaGF2ZSBoaWdoUHJlY2lzaW9uIHdoZW4gdGhlIG51bWJlciBvZiBzdXBwbGllZFxuLy8gZnJhY3Rpb24gZGlnaXRzIGV4Y2VlZCB0aGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0aGUgY3VycmVuY3kgdXNlcy4gRm9yXG4vLyBleGFtcGxlLCA0Mi4wMCDigqwgaXMgYWx3YXlzIGEgY2VudFByZWNpc2lvbiBwcmljZSwgd2hpbGUgNDIuMDAxIOKCrCBpcyBhbHdheXMgYVxuLy8gaGlnaFByZWNpc2lvbiBwcmljZS4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhZSA0Mi4wMCDigqwgYXMgYSBoaWdoUHJlY2lzaW9uXG4vLyBwcmljZS5cbi8vXG4vLyBUaGUgZmlyc3QgdGltZSB0aGUgY29tcG9uZW50IHJlbmRlcnMsIHdlIHdhbnQgdG8gdHJ5IHRvIHNob3cgdGhlIGNlbnRBbW91bnRcbi8vIGFzIGEgZm9ybWF0dGVkIG51bWJlci4gVG8gYWNoaWV2ZSB0aGlzLCB0aGUgcGFyc2VNb25leVZhbHVlIGZ1bmN0aW9uIGNhblxuLy8gYmUgdXNlZCB0byB0dXJuIHRoZSBBUEkgdmFsdWUgaW50byBhIHZhbHVlIHRoZSBNb25leUlucHV0IHVuZGVyc3RhbmRzLlxuLy8gRHVyaW5nIHRoaXMgdHJhbnNmb3JtYXRpb24sIHRoZSBtb25leSB2YWx1ZSB3aWxsIGdldCBmb3JtYXR0ZWQgaW50byBcImFtb3VudFwiLlxuLy9cbi8vIFdoZW4gdGhlIHVzZXIgY2hhbmdlcyB0aGUgdmFsdWUsIHdlIGRvbid0IHdhbnQgdG8gZm9ybWF0IGFnYWluLiBXZSBvbmx5IGZvcm1hdFxuLy8gaW4gY2FzZSB0aGUgdXNlciBibHVycyB0aGUgZmllbGQuIFRoaXMgYXZvaWRzIG1hbnkgZWRnZSBjYXNlcyB3aGVyZSB0aGVcbi8vIGZvcm1hdHRpbmcgd291bGQgbWVzcyB3aXRoIHRoZSB1c2VyJ3MgaW5wdXQuXG4vL1xuLy9cbi8vIEEgZnVsbCBleGFtcGxlIG9mIGFuIE1vbmV5VmFsdWUgd2l0aCBjZW50UHJlY2lzaW9uIHdvdWxkIGJlXG4vLyB7XG4vLyAgIFwidHlwZVwiOiBcImNlbnRQcmVjaXNpb25cIixcbi8vICAgXCJjdXJyZW5jeUNvZGVcIjogXCJFVVJcIixcbi8vICAgXCJjZW50QW1vdW50XCI6IDQyMDAsXG4vLyAgIFwiZnJhY3Rpb25EaWdpdHNcIjogMlxuLy8gfVxuLy8gd2hpY2ggZXF1YWxzIDQyLjAwIOKCrFxuLy9cbi8vIEEgZnVsbCBleGFtcGxlIG9mIGFuIE1vbmV5VmFsdWUgd2l0aCBoaWdoUHJlY2lzaW9uIHdvdWxkIGJlXG4vLyB7XG4vLyAgXCJ0eXBlXCI6IFwiaGlnaFByZWNpc2lvblwiLFxuLy8gIFwiY3VycmVuY3lDb2RlXCI6IFwiRVVSXCIsXG4vLyAgXCJjZW50QW1vdW50XCI6IDEsXG4vLyAgXCJwcmVjaXNlQW1vdW50XCI6IDEyMzQ1Nixcbi8vICBcImZyYWN0aW9uRGlnaXRzXCI6IDdcbi8vIH1cbi8vIHdoaWNoIGVxdWFscyAwLjAxMjM0NTYg4oKsXG5cbi8vIFBhcnNpbmdcbi8vIFNpbmNlIG1vc3QgdXNlcnMgYXJlIG5vdCBjYXJlZnVsIGFib3V0IGhvdyB0aGV5IGVudGVyIHZhbHVlcywgd2Ugd2lsbCBwYXJzZVxuLy8gYm90aCBgLmAgYW5kIGAsYCBhcyBkZWNpbWFsIHNlcGFyYXRvcnMuXG4vLyBXaGVuIGEgdmFsdWUgaXMgYDEuMDAwLDAwYCB3ZSBwYXJzZSBpdCBhcyBgMTAwMGAuXG4vLyBXaGVuIGEgdmFsdWUgaXMgYDEsMDAwLjAwYCB3ZSBhbHNvIHBhcnNlIGl0IGFzIGAxMDAwYC5cbi8vXG4vLyBUaGlzIG1lYW5zIHRoZSBoaWdoZXN0IGFtb3VudCBhbHdheXMgd2lucy4gV2UgZG8gdGhpcyBieSBjb21wYXJpbmcgdGhlIGxhc3Rcbi8vIHBvc2l0aW9uIG9mIGAuYCBhbmQgYCxgLiBXaGF0ZXZlciBvY2N1cnMgbGF0ZXIgaXMgdXNlZCBhcyB0aGUgZGVjaW1hbFxuLy8gc2VwYXJhdG9yLlxuZXhwb3J0IGNvbnN0IHBhcnNlUmF3QW1vdW50VG9OdW1iZXIgPSAocmF3QW1vdW50LCBsb2NhbGUpID0+IHtcbiAgbGV0IGZyYWN0aW9uc1NlcGFyYXRvcjtcblxuICBpZiAobG9jYWxlKSB7XG4gICAgZnJhY3Rpb25zU2VwYXJhdG9yID0gKDIuNSkgLy8gd2UgbmVlZCBhbnkgbnVtYmVyIHdpdGggZnJhY3Rpb25zLCBzbyB0aGF0IHdlIGtub3cgd2hhdCBpcyB0aGUgZnJhY3Rpb25cbiAgICAgIC50b0xvY2FsZVN0cmluZyhsb2NhbGUpIC8vIFwic3ltYm9sXCIgZm9yIHRoZSBwcm92aWRlZCBsb2NhbGVcbiAgICAgIC5yZXBsYWNlKC9cXGQvZywgJycpOyAvLyB0aGVuIHdlIHJlbW92ZSB0aGUgbnVtYmVycyBhbmQga2VlcCB0aGUgXCJzeW1ib2xcIlxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhc3REb3QgPSBTdHJpbmcocmF3QW1vdW50KS5sYXN0SW5kZXhPZignLicpO1xuICAgIGNvbnN0IGxhc3RDb21tYSA9IFN0cmluZyhyYXdBbW91bnQpLmxhc3RJbmRleE9mKCcsJyk7XG4gICAgZnJhY3Rpb25zU2VwYXJhdG9yID0gbGFzdENvbW1hID4gbGFzdERvdCA/ICcsJyA6ICcuJztcbiAgfVxuXG4gIGZyYWN0aW9uc1NlcGFyYXRvciA9IGZyYWN0aW9uc1NlcGFyYXRvciA9PT0gJy4nID8gJ1xcXFwuJyA6IGZyYWN0aW9uc1NlcGFyYXRvcjsgLy8gaGVyZSB3ZSBlc2NhcGUgdGhlICcuJyB0byB1c2UgaXQgYXMgcmVnZXhcbiAgLy8gVGhlIHJhdyBhbW91bnQgd2l0aCBvbmx5IG9uZSBzcGFyYXRvclxuICBjb25zdCBub3JtYWxpemVkQW1vdW50ID0gU3RyaW5nKHJhd0Ftb3VudClcbiAgICAucmVwbGFjZShuZXcgUmVnRXhwKGBbXjAtOSR7ZnJhY3Rpb25zU2VwYXJhdG9yfV1gLCAnZycpLCAnJykgLy8gd2UganVzdCBrZWVwIHRoZSBudW1iZXJzIGFuZCB0aGUgZnJhY3Rpb24gc3ltYm9sXG4gICAgLnJlcGxhY2UoZnJhY3Rpb25zU2VwYXJhdG9yLCAnLicpOyAvLyB0aGVuIHdlIGNoYW5nZSB3aGF0ZXZlciBgZnJhY3Rpb25zU2VwYXJhdG9yYCB3YXMgdG8gYC5gIHNvIHdlIGNhbiBwYXJzZSBpdCBhcyBmbG9hdFxuXG4gIHJldHVybiBwYXJzZUZsb2F0KG5vcm1hbGl6ZWRBbW91bnQsIDEwKTtcbn07XG5cbi8vIFR1cm5zIHRoZSB1c2VyIGlucHV0IGludG8gYSB2YWx1ZSB0aGUgTW9uZXlJbnB1dCBjYW4gcGFzcyB1cCB0aHJvdWdoIG9uQ2hhbmdlXG4vLyBJbiBjYXNlIHRoZSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIGNvbnRhaW5lZCBpbiBcImFtb3VudFwiIGV4Y2VlZHMgdGhlXG4vLyBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRoZSBjdXJyZW5jeSB1c2VzLCBpdCB3aWxsIGVtaXQgYSBwcmljZSBvZlxuLy8gdHlwZSBcImhpZ2hQcmVjaXNpb25cIiBpbnN0ZWFkIG9mIHRoZSByZWd1bGFyIFwiY2VudFByZWNpc2lvblwiLlxuLy8gSXQgd2lsbCByZXR1cm4gXCJudWxsXCIgaW4gY2FzZSBhbiBpbnZhbGlkIHZhbHVlIGlzIGVudGVyZWQuXG4vLyBUaGUgdmFsdWUgaXMgaW52YWxpZCB3aGVuXG4vLyAgLSBubyBhbW91bnQgd2FzIGVudGVyZWRcbi8vICAtIGFuIGludmFsaWQgYW1vdW50IHdhcyBlbnRlcmVkXG4vLyAgLSBubyBjdXJyZW5jeSB3YXMgc2VsZWN0ZWRcbi8vXG4vLyBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgdGhlIFwiYW1vdW50XCIgdG8gYmUgYSB0cmltbWVkIHZhbHVlLlxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1vbmV5VmFsdWUgPSAoY3VycmVuY3lDb2RlLCByYXdBbW91bnQsIGxvY2FsZSkgPT4ge1xuICBpZiAoIWN1cnJlbmN5Q29kZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgY3VycmVuY3kgPSBjdXJyZW5jaWVzW2N1cnJlbmN5Q29kZV07XG4gIGlmICghY3VycmVuY3kpIHJldHVybiBudWxsO1xuXG4gIGlmIChyYXdBbW91bnQubGVuZ3RoID09PSAwIHx8ICFpc051bWJlcmlzaChyYXdBbW91bnQpKSByZXR1cm4gbnVsbDtcblxuICB3YXJuaW5nKFxuICAgIGxvY2FsZSB8fCBjdXJyZW5jeS5mcmFjdGlvbkRpZ2l0cyAhPT0gMCxcbiAgICBgQSBsb2NhbGUgbXVzdCBiZSBwcm92aWRlZCB3aGVuIGN1cnJlbmN5IGhhcyBubyBmcmFjdGlvbiBkaWdpdHMgKCR7Y3VycmVuY3lDb2RlfSlgXG4gICk7XG4gIGNvbnN0IGFtb3VudEFzTnVtYmVyID0gcGFyc2VSYXdBbW91bnRUb051bWJlcihyYXdBbW91bnQsIGxvY2FsZSk7XG4gIGlmIChpc05hTihhbW91bnRBc051bWJlcikpIHJldHVybiBudWxsO1xuXG4gIC8vIFRoZSBjZW50IGFtb3VudCBpcyByb3VuZGVkIHRvIHRoZSBjdXJyZW5jaWUncyBkZWZhdWx0IG51bWJlclxuICAvLyBvZiBmcmFjdGlvbiBkaWdpdHMgZm9yIHByaWNlcyB3aXRoIGhpZ2ggcHJlY2lzaW9uLlxuICAvL1xuICAvLyBBZGRpdGlvbmFsbHksIEphdmFTY3JpcHQgaXMgc29tZXRpbWVzIGluY29ycmVjdCB3aGVuIG11bHRpcGx5aW5nIGZsb2F0cyxcbiAgLy8gICBlLmcuIDIuNDkgKiAxMDAgLT4gMjQ5LjAwMDAwMDAwMDAwMDAzXG4gIC8vIFdoaWxlIGluYWNjdXJhY3kgZnJvbSBtdWx0aXBseWluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzIGlzIGFcbiAgLy8gZ2VuZXJhbCBwcm9ibGVtIGluIEpTLCB3ZSBjYW4gYXZvaWQgaXQgYnkgY3V0dGluZyBvZmYgYWxsXG4gIC8vIGRlY2ltYWxzLiBUaGlzIGlzIHBvc3NpYmxlIHNpbmNlIGNlbnRzIGlzIHRoZSBiYXNlIHVuaXQsIHNvIHdlXG4gIC8vIG9wZXJhdGUgb24gaW50ZWdlcnMgYW55d2F5c1xuICAvLyBBbHNvIHdlIHNob3VsZCB0aGUgcm91bmQgdGhlIHZhbHVlIHRvIGVuc3VyZSB0aGF0IHdlIGNvbWUgY2xvc2VcbiAgLy8gdG8gdGhlIG5lYXJlc3QgZGVjaW1hbCB2YWx1ZVxuICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb21tZXJjZXRvb2xzL21lcmNoYW50LWNlbnRlci1mcm9udGVuZC9wdWxsLzc3MFxuICBjb25zdCBjZW50QW1vdW50ID0gTWF0aC50cnVuYyhcbiAgICBNYXRoLnJvdW5kKGFtb3VudEFzTnVtYmVyICogMTAgKiogY3VycmVuY3kuZnJhY3Rpb25EaWdpdHMpXG4gICk7XG5cbiAgY29uc3QgZnJhY3Rpb25EaWdpdHNPZkFtb3VudCA9XG4gICAgLy8gVGhlIGNvbnZlcnNpb24gdG8gYSBzdHJpbmcgd2lsbCBhbHdheXMgdXNlIGEgZG90IGFzIHRoZSBzZXBhcmF0b3IuXG4gICAgLy8gVGhhdCBtZWFucyB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSBhIGNvbW1hLlxuICAgIFN0cmluZyhhbW91bnRBc051bWJlcikuaW5kZXhPZignLicpID09PSAtMVxuICAgICAgPyAwXG4gICAgICA6IFN0cmluZyhhbW91bnRBc051bWJlcikubGVuZ3RoIC0gU3RyaW5nKGFtb3VudEFzTnVtYmVyKS5pbmRleE9mKCcuJykgLSAxO1xuXG4gIGlmIChmcmFjdGlvbkRpZ2l0c09mQW1vdW50ID4gY3VycmVuY3kuZnJhY3Rpb25EaWdpdHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2hpZ2hQcmVjaXNpb24nLFxuICAgICAgY3VycmVuY3lDb2RlLFxuICAgICAgY2VudEFtb3VudCxcbiAgICAgIHByZWNpc2VBbW91bnQ6IHBhcnNlSW50KFxuICAgICAgICAvLyBIZXJlIHdlIG5lZWQgdG8gY29udmVydCAgYSBudW1iZXIgbGlrZSA4LjA2NjY1MiB0byBpdHMgY2VudGFtb3VudFxuICAgICAgICAvLyBXZSBjb3VsZCBkbyB0aGF0IGJ5IG11bHRpcGx5aW5nIGl0IHdpdGggMTAgKiogbnVtYmVyLW9mLWZyYWN0aW9uLWRpZ2l0c1xuICAgICAgICAvLyBidXQgdGhlbiB3ZSdsbCBydW4gaW50byBwcm9ibGVtcyB3aXRoIEphdmFTY3JpcHQncyBmbG9hdGluZyBwb2ludFxuICAgICAgICAvLyBudW1iZXIgcHJlY2lzaW9uIGFuZCBlbmQgdXAgd2l0aCA4MDY2NjUxLjk5OTk5OTksIGFuZCB0aGVuIHBhcnNlSW50XG4gICAgICAgIC8vIGN1dHMgb2ZmIHRoZSByZW1haW5kZXIuXG4gICAgICAgIC8vIFNvIGluc3RlYWQgb2YgdXNpbmcgbWF0aHMgdG8gY29udmVydCB0aGUgbnVtYmVyLCB3ZSBqdXN0IHJlcGxhY2VcbiAgICAgICAgLy8gdGhlIGRvdCBpbnNpZGUgdGhlIG51bWJlciB3aGljaCBkb2VzIHRoZSBzYW1lIHRoaW5nLlxuICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHJlcGxhY2UgXCIsXCIgYXMgd2VsbCwgYXMgbnVtYmVycyBhbHdheXMgdXMgYSBkb3RcbiAgICAgICAgLy8gd2hlbiBjb252ZXJ0ZWQgdXNpbmcgU3RyaW5nKCkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZSBtYXRoZW1hdGljYWwgd2F5OiBhbW91bnRBc051bWJlciAqIDEwICoqIGZyYWN0aW9uRGlnaXRzT2ZBbW91bnQsXG4gICAgICAgIFN0cmluZyhhbW91bnRBc051bWJlcikucmVwbGFjZSgnLicsICcnKSxcbiAgICAgICAgMTBcbiAgICAgICksXG4gICAgICBmcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHNPZkFtb3VudCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnY2VudFByZWNpc2lvbicsXG4gICAgY3VycmVuY3lDb2RlLFxuICAgIGNlbnRBbW91bnQsXG4gICAgZnJhY3Rpb25EaWdpdHM6IGN1cnJlbmN5LmZyYWN0aW9uRGlnaXRzLFxuICB9O1xufTtcblxuY29uc3QgZ2V0QW1vdW50QXNOdW1iZXJGcm9tTW9uZXlWYWx1ZSA9IChtb25leVZhbHVlKSA9PlxuICBtb25leVZhbHVlLnR5cGUgPT09ICdoaWdoUHJlY2lzaW9uJ1xuICAgID8gbW9uZXlWYWx1ZS5wcmVjaXNlQW1vdW50IC8gMTAgKiogbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0c1xuICAgIDogbW9uZXlWYWx1ZS5jZW50QW1vdW50IC9cbiAgICAgIDEwICoqIGN1cnJlbmNpZXNbbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGVdLmZyYWN0aW9uRGlnaXRzO1xuXG4vLyBnZXRzIGNhbGxlZCB3aXRoIGEgc3RyaW5nIGFuZCBzaG91bGQgcmV0dXJuIGEgZm9ybWF0dGVkIHN0cmluZ1xuY29uc3QgZm9ybWF0QW1vdW50ID0gKHJhd0Ftb3VudCwgY3VycmVuY3lDb2RlLCBsb2NhbGUpID0+IHtcbiAgLy8gZmFsbGJhY2sgaW4gY2FzZSB0aGUgdXNlciBkaWRuJ3QgZW50ZXIgYW4gYW1vdW50IHlldCAob3IgaXQncyBpbnZhbGlkKVxuICBjb25zdCBtb25leVZhbHVlID0gY3JlYXRlTW9uZXlWYWx1ZShjdXJyZW5jeUNvZGUsIHJhd0Ftb3VudCwgbG9jYWxlKSB8fCB7XG4gICAgY3VycmVuY3lDb2RlLFxuICAgIGNlbnRBbW91bnQ6IE5hTixcbiAgfTtcblxuICBjb25zdCBhbW91bnQgPSBnZXRBbW91bnRBc051bWJlckZyb21Nb25leVZhbHVlKG1vbmV5VmFsdWUpO1xuXG4gIGNvbnN0IGZyYWN0aW9uRGlnaXRzID0gbW9uZXlWYWx1ZS5wcmVjaXNlQW1vdW50XG4gICAgPyBtb25leVZhbHVlLmZyYWN0aW9uRGlnaXRzXG4gICAgOiBjdXJyZW5jaWVzW21vbmV5VmFsdWUuY3VycmVuY3lDb2RlXS5mcmFjdGlvbkRpZ2l0cztcblxuICByZXR1cm4gaXNOYU4oYW1vdW50KVxuICAgID8gJydcbiAgICA6IGFtb3VudC50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBmcmFjdGlvbkRpZ2l0cyB9KTtcbn07XG5cbmNvbnN0IGdldEFtb3VudElucHV0TmFtZSA9IChuYW1lKSA9PiAobmFtZSA/IGAke25hbWV9LmFtb3VudGAgOiB1bmRlZmluZWQpO1xuY29uc3QgZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUgPSAobmFtZSkgPT5cbiAgbmFtZSA/IGAke25hbWV9LmN1cnJlbmN5Q29kZWAgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IE1vbmV5SW5wdXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW2N1cnJlbmN5SGFzRm9jdXMsIHRvZ2dsZUN1cnJlbmN5SGFzRm9jdXNdID0gdXNlVG9nZ2xlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbYW1vdW50SGFzRm9jdXMsIHRvZ2dsZUFtb3VudEhhc0ZvY3VzXSA9IHVzZVRvZ2dsZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgYW1vdW50SW5wdXRSZWYgPSB1c2VSZWYoKTtcblxuICBjb25zdCB7IG9uRm9jdXMgfSA9IHByb3BzO1xuICBjb25zdCBoYW5kbGVBbW91bnRGb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAob25Gb2N1cylcbiAgICAgIG9uRm9jdXMoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICBuYW1lOiBnZXRBbW91bnRJbnB1dE5hbWUocHJvcHMubmFtZSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB0b2dnbGVBbW91bnRIYXNGb2N1cyh0cnVlKTtcbiAgfSwgW3RvZ2dsZUFtb3VudEhhc0ZvY3VzLCBvbkZvY3VzLCBwcm9wcy5pZCwgcHJvcHMubmFtZV0pO1xuXG4gIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHByb3BzO1xuICBjb25zdCBoYW5kbGVBbW91bnRCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGFtb3VudCA9IHByb3BzLnZhbHVlLmFtb3VudC50cmltKCk7XG4gICAgdG9nZ2xlQW1vdW50SGFzRm9jdXMoZmFsc2UpO1xuICAgIC8vIFNraXAgZm9ybWF0dGluZyBmb3IgZW1wdHkgdmFsdWUgb3Igd2hlbiB0aGUgaW5wdXQgaXMgdXNlZCB3aXRoIGFuXG4gICAgLy8gdW5rbm93biBjdXJyZW5jeS5cbiAgICBpZiAoYW1vdW50Lmxlbmd0aCA+IDAgJiYgY3VycmVuY2llc1twcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGVdKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRBbW91bnQgPSBmb3JtYXRBbW91bnQoXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgICAgICBpbnRsLmxvY2FsZVxuICAgICAgKTtcblxuICAgICAgLy8gV2hlbiB0aGUgdXNlciBlbnRlcmVkIGEgdmFsdWUgd2l0aCBjZW50UHJlY2lzaW9uLCB3ZSBjYW4gZm9ybWF0XG4gICAgICAvLyB0aGUgcmVzdWx0aW5nIHZhbHVlIHRvIHRoYXQgY3VycmVuY3ksIGUuZy4gMjAuMSB0byAyMC4xMFxuICAgICAgaWYgKFN0cmluZyhmb3JtYXR0ZWRBbW91bnQpICE9PSBhbW91bnQpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBlbWl0IGFuIGV2ZW50IHdpdGggdGhlIG5vdyBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgICAgY29uc3QgZmFrZUV2ZW50ID0ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZEFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBvbkNoYW5nZShmYWtlRXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGludGwubG9jYWxlLFxuICAgIG9uQ2hhbmdlLFxuICAgIHByb3BzLmlkLFxuICAgIHByb3BzLm5hbWUsXG4gICAgcHJvcHMudmFsdWUuYW1vdW50LFxuICAgIHByb3BzLnZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICB0b2dnbGVBbW91bnRIYXNGb2N1cyxcbiAgXSk7XG5cbiAgY29uc3QgaGFuZGxlQW1vdW50Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoaXNOdW1iZXJpc2goZXZlbnQudGFyZ2V0LnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZSh7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgIHBlcnNpc3Q6ICgpID0+IHt9LFxuICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgaWQ6IE1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCksXG4gICAgICAgICAgICBuYW1lOiBnZXRBbW91bnRJbnB1dE5hbWUocHJvcHMubmFtZSksXG4gICAgICAgICAgICB2YWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQ2hhbmdlLCBwcm9wcy5pZCwgcHJvcHMubmFtZV1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVDdXJyZW5jeUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbmN5Q29kZSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgIGlmIChwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUgIT09IGN1cnJlbmN5Q29kZSkge1xuICAgICAgICAvLyBXaGVuIHRoZSB1c2VyIGNoYW5nZXMgZnJvbSBhIGN1cnJlbmN5IHdpdGggMyBmcmFjdGlvbiBkaWdpdHMgdG9cbiAgICAgICAgLy8gYSBjdXJyZW5jeSB3aXRoIDIgZnJhY3Rpb24gZGlnaXRzLCBhbmQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgd2FzXG4gICAgICAgIC8vIFwiOS4wMDBcIiAoOSksIHRoZW4gaXQgc2hvdWxkIGNoYW5nZSB0byBcIjkuMDBcIiB0byByZWZsZWN0IHRoZSBuZXdcbiAgICAgICAgLy8gY3VycmVuY3kncyBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzLlxuICAgICAgICAvLyBXaGVuIHRoZSBjdXJyZW5jeSB3YXMgYSBoaWdoLXByZWNpc2lvbiBwcmljZSwgdGhlbiBubyBkaWdpdHMgc2hvdWxkXG4gICAgICAgIC8vIGJlIGxvc3RcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQW1vdW50ID0gZm9ybWF0QW1vdW50KFxuICAgICAgICAgIHByb3BzLnZhbHVlLmFtb3VudC50cmltKCksXG4gICAgICAgICAgY3VycmVuY3lDb2RlLFxuICAgICAgICAgIGludGwubG9jYWxlXG4gICAgICAgICk7XG4gICAgICAgIC8vIFRoZSB1c2VyIGNvdWxkIGJlIGNoYW5naW5nIHRoZSBjdXJyZW5jeSBiZWZvcmUgZW50ZXJpbmcgYW55IGFtb3VudCxcbiAgICAgICAgLy8gb3Igd2hpbGUgdGhlIGFtb3VudCBpcyBpbnZhbGlkLiBJbiB0aGVzZSBjYXNlcywgd2UgZG9uJ3QgYXR0ZW1wdCB0b1xuICAgICAgICAvLyBmb3JtYXQgdGhlIGFtb3VudC5cbiAgICAgICAgY29uc3QgbmV4dEFtb3VudCA9IGlzTmFOKGZvcm1hdHRlZEFtb3VudClcbiAgICAgICAgICA/IHByb3BzLnZhbHVlLmFtb3VudFxuICAgICAgICAgIDogZm9ybWF0dGVkQW1vdW50O1xuXG4gICAgICAgIC8vIGNoYW5nZSBjdXJyZW5jeSBjb2RlXG4gICAgICAgIGNvbnN0IGZha2VDdXJyZW5jeUV2ZW50ID0ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEN1cnJlbmN5RHJvcGRvd25JZChwcm9wcy5pZCksXG4gICAgICAgICAgICBuYW1lOiBnZXRDdXJyZW5jeURyb3Bkb3duTmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlOiBjdXJyZW5jeUNvZGUgfHwgJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgb25DaGFuZ2UoZmFrZUN1cnJlbmN5RXZlbnQpO1xuXG4gICAgICAgIC8vIGNoYW5nZSBhbW91bnQgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGlmIChwcm9wcy52YWx1ZS5hbW91bnQgIT09IG5leHRBbW91bnQpIHtcbiAgICAgICAgICBvbkNoYW5nZSh7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgICAgICB2YWx1ZTogbmV4dEFtb3VudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhbW91bnRJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBpbnRsLmxvY2FsZSxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgcHJvcHMuaWQsXG4gICAgICBwcm9wcy5uYW1lLFxuICAgICAgcHJvcHMudmFsdWUuYW1vdW50LFxuICAgICAgcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVDdXJyZW5jeUZvY3VzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChvbkZvY3VzKVxuICAgICAgb25Gb2N1cyh7XG4gICAgICAgIHRhcmdldDoge1xuICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEN1cnJlbmN5RHJvcGRvd25JZChwcm9wcy5pZCksXG4gICAgICAgICAgbmFtZTogZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIHRvZ2dsZUN1cnJlbmN5SGFzRm9jdXModHJ1ZSk7XG4gIH0sIFtvbkZvY3VzLCB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzLCBwcm9wcy5uYW1lLCBwcm9wcy5pZF0pO1xuXG4gIGNvbnN0IGhhbmRsZUN1cnJlbmN5Qmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzKGZhbHNlKTtcbiAgfSwgW3RvZ2dsZUN1cnJlbmN5SGFzRm9jdXNdKTtcblxuICBjb25zdCBoYXNOb0N1cnJlbmNpZXMgPSBwcm9wcy5jdXJyZW5jaWVzLmxlbmd0aCA9PT0gMDtcbiAgY29uc3QgaGFzRm9jdXMgPSBjdXJyZW5jeUhhc0ZvY3VzIHx8IGFtb3VudEhhc0ZvY3VzO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGN1cnJlbmN5U2VsZWN0U3R5bGVzID0gY3JlYXRlQ3VycmVuY3lTZWxlY3RTdHlsZXMoXG4gICAge1xuICAgICAgaGFzV2FybmluZzogcHJvcHMuaGFzV2FybmluZyxcbiAgICAgIGhhc0Vycm9yOiBwcm9wcy5oYXNFcnJvcixcbiAgICAgIGlzRGlzYWJsZWQ6IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICBpc1JlYWRPbmx5OiBwcm9wcy5pc1JlYWRPbmx5LFxuICAgICAgaGFzRm9jdXMsXG4gICAgICBtZW51UG9ydGFsWkluZGV4OiBwcm9wcy5tZW51UG9ydGFsWkluZGV4LFxuICAgIH0sXG4gICAgdGhlbWVcbiAgKTtcbiAgY29uc3Qgb3B0aW9ucyA9IHByb3BzLmN1cnJlbmNpZXMubWFwKChjdXJyZW5jeUNvZGUpID0+ICh7XG4gICAgbGFiZWw6IGN1cnJlbmN5Q29kZSxcbiAgICB2YWx1ZTogY3VycmVuY3lDb2RlLFxuICB9KSk7XG5cbiAgY29uc3Qgb3B0aW9uID0gKCgpID0+IHtcbiAgICBjb25zdCBtYXRjaGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKFxuICAgICAgKG9wdGlvbkNhbmRpZGF0ZSkgPT4gb3B0aW9uQ2FuZGlkYXRlLnZhbHVlID09PSBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGVcbiAgICApO1xuICAgIGlmIChtYXRjaGVkT3B0aW9uKSByZXR1cm4gbWF0Y2hlZE9wdGlvbjtcbiAgICAvLyBlbnN1cmUgYW4gb3B0aW9uIGlzIGZvdW5kLCBldmVuIHdoZW4gdGhlIGN1cnJlbmNpZXMgZG9uJ3QgaW5jbHVkZVxuICAgIC8vIHRoZSBtb25leSB2YWx1ZSdzIGN1cnJlbmN5Q29kZVxuICAgIGlmIChwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUudHJpbSgpICE9PSAnJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgICAgIHZhbHVlOiBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgICB9O1xuICAgIHJldHVybiBudWxsO1xuICB9KSgpO1xuXG4gIGNvbnN0IGlkID0gTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpO1xuXG4gIGNvbnN0IGlzSGlnaFByZWNpc2lvbiA9XG4gICAgIU1vbmV5SW5wdXQuaXNFbXB0eShwcm9wcy52YWx1ZSkgJiZcbiAgICBNb25leUlucHV0LmlzSGlnaFByZWNpc2lvbihwcm9wcy52YWx1ZSwgaW50bC5sb2NhbGUpO1xuXG4gIGNvbnN0IHsgb25CbHVyIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQ29udGFpbmVyQmx1ciA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgLy8gZW5zdXJlcyB0aGF0IGJvdGggZmllbGRzIGFyZSBtYXJrZWQgYXMgdG91Y2hlZCB3aGVuIG9uZSBvZiB0aGVtXG4gICAgICAvLyBpcyBibHVycmVkXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBvbkJsdXIgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpXG4gICAgICApIHtcbiAgICAgICAgb25CbHVyKHtcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEN1cnJlbmN5RHJvcGRvd25JZChwcm9wcy5pZCksXG4gICAgICAgICAgICBuYW1lOiBnZXRDdXJyZW5jeURyb3Bkb3duTmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgb25CbHVyKHtcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQmx1ciwgcHJvcHMuaWQsIHByb3BzLm5hbWVdXG4gICk7XG5cbiAgY29uc3QgVG9vbHRpcFBvcnRhbCA9IHVzZUNhbGxiYWNrKFxuICAgIChyZW1haW5pbmdQcm9wcykgPT4gPFBvcnRhbCB7Li4ucmVtYWluaW5nUHJvcHN9IGlkPXtwcm9wcy5pZH0gLz4sXG4gICAgW3Byb3BzLmlkXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnN0cmFpbnRzLkhvcml6b250YWwgbWF4PXtwcm9wcy5ob3Jpem9udGFsQ29uc3RyYWludH0+XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJtb25leS1pbnB1dC1jb250YWluZXJcIlxuICAgICAgICBvbkJsdXI9e2hhbmRsZUNvbnRhaW5lckJsdXJ9XG4gICAgICA+XG4gICAgICAgIHtoYXNOb0N1cnJlbmNpZXMgPyAoXG4gICAgICAgICAgPEN1cnJlbmN5TGFiZWxcbiAgICAgICAgICAgIGlkPXtNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpfVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9uICYmIG9wdGlvbi5sYWJlbH1cbiAgICAgICAgICA8L0N1cnJlbmN5TGFiZWw+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgaW5wdXRJZD17aWR9XG4gICAgICAgICAgICBuYW1lPXtnZXRDdXJyZW5jeURyb3Bkb3duTmFtZShwcm9wcy5uYW1lKX1cbiAgICAgICAgICAgIHZhbHVlPXtvcHRpb259XG4gICAgICAgICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rpc3BsYXktbmFtZVxuICAgICAgICAgICAgICBTaW5nbGVWYWx1ZTogKGlubmVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICA8U2luZ2xlVmFsdWUgey4uLmlubmVyUHJvcHN9IGlkPXtpZH0gLz5cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rpc3BsYXktbmFtZVxuICAgICAgICAgICAgICBJbnB1dDogKG93blByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICAgICAgICAgICAgICA8Y29tcG9uZW50cy5JbnB1dCB7Li4ub3duUHJvcHN9IHJlYWRPbmx5PXtwcm9wcy5pc1JlYWRPbmx5fSAvPlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBEcm9wZG93bkluZGljYXRvcixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgbWVudUlzT3Blbj17cHJvcHMuaXNSZWFkT25seSA/IGZhbHNlIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgICAgc3R5bGVzPXtjdXJyZW5jeVNlbGVjdFN0eWxlc31cbiAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUN1cnJlbmN5Rm9jdXN9XG4gICAgICAgICAgICBtZW51UG9ydGFsVGFyZ2V0PXtwcm9wcy5tZW51UG9ydGFsVGFyZ2V0fVxuICAgICAgICAgICAgbWVudVNob3VsZEJsb2NrU2Nyb2xsPXtwcm9wcy5tZW51U2hvdWxkQmxvY2tTY3JvbGx9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUN1cnJlbmN5Qmx1cn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDdXJyZW5jeUNoYW5nZX1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY3VycmVuY3ktZHJvcGRvd25cIlxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHJlZj17YW1vdW50SW5wdXRSZWZ9XG4gICAgICAgICAgICBpZD17TW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKX1cbiAgICAgICAgICAgIGF1dG9Db21wbGV0ZT17cHJvcHMuYXV0b0NvbXBsZXRlfVxuICAgICAgICAgICAgbmFtZT17Z2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlQW1vdW50Rm9jdXN9XG4gICAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWUuYW1vdW50fVxuICAgICAgICAgICAgY3NzPXtbXG4gICAgICAgICAgICAgIGdldEFtb3VudElucHV0U3R5bGVzKHsgLi4ucHJvcHMsIGhhc0ZvY3VzIH0pLFxuICAgICAgICAgICAgICAvLyBhY2NvdW50cyBmb3Igc2l6ZSBvZiBpY29uXG4gICAgICAgICAgICAgIHByb3BzLmhhc0hpZ2hQcmVjaXNpb25CYWRnZSAmJlxuICAgICAgICAgICAgICAgIGlzSGlnaFByZWNpc2lvbiAmJlxuICAgICAgICAgICAgICAgIGNzc2BcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICR7dmFycy5zcGFjaW5nTH07XG4gICAgICAgICAgICAgICAgYCxcbiAgICAgICAgICAgIF19XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17cHJvcHMucGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQW1vdW50Q2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVBbW91bnRCbHVyfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgICByZWFkT25seT17cHJvcHMuaXNSZWFkT25seX1cbiAgICAgICAgICAgIGF1dG9Gb2N1cz17cHJvcHMuaXNBdXRvZm9jdXNzZWR9XG4gICAgICAgICAgICB7Li4uZmlsdGVyRGF0YUF0dHJpYnV0ZXMocHJvcHMpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge3Byb3BzLmhhc0hpZ2hQcmVjaXNpb25CYWRnZSAmJiBpc0hpZ2hQcmVjaXNpb24gJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgeyFwcm9wcy5pc0Rpc2FibGVkICYmIDxkaXYgaWQ9e2dldFBvcnRhbElkKHByb3BzLmlkKX0gLz59XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9eygpID0+XG4gICAgICAgICAgICAgICAgICBnZXRIaWdoUHJlY2lzaW9uV3JhcHBlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICBvZmY9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3AtZW5kXCJcbiAgICAgICAgICAgICAgICAgIC8vIHdlIHVzZSBuZWdhdGl2ZSBtYXJnaW4gdG8gbWFrZSB1cCBmb3IgdGhlIHBhZGRpbmcgaW4gdGhlIFRvb2x0aXAgV3JhcHBlclxuICAgICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgdG9vbHRpcCBpcyBmbHVzaCB3aXRoIHRoZSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAgIHN0eWxlcz17e1xuICAgICAgICAgICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBgJHt2YXJzLnNwYWNpbmdTfSAtJHt2YXJzLnNwYWNpbmdYc30gJHt2YXJzLnNwYWNpbmdTfSAwYCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0aXRsZT17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmhpZ2hQcmVjaXNpb24pfVxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICAgICAgICBUb29sdGlwV3JhcHBlckNvbXBvbmVudDogVG9vbHRpcFBvcnRhbCxcbiAgICAgICAgICAgICAgICAgICAgV3JhcHBlckNvbXBvbmVudDogVG9vbHRpcFdyYXBwZXIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxGcmFjdGlvbkRpZ2l0c0ljb25cbiAgICAgICAgICAgICAgICAgICAgY29sb3I9e3Byb3BzLmlzRGlzYWJsZWQgPyAnbmV1dHJhbDYwJyA6ICdpbmZvJ31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Db25zdHJhaW50cy5Ib3Jpem9udGFsPlxuICApO1xufTtcblxuTW9uZXlJbnB1dC5kaXNwbGF5TmFtZSA9ICdNb25leUlucHV0JztcblxuTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkID0gZ2V0QW1vdW50SW5wdXROYW1lO1xuXG5Nb25leUlucHV0LmdldEN1cnJlbmN5RHJvcGRvd25JZCA9IGdldEN1cnJlbmN5RHJvcGRvd25OYW1lO1xuXG5Nb25leUlucHV0LmNvbnZlcnRUb01vbmV5VmFsdWUgPSAodmFsdWUsIGxvY2FsZSkgPT5cbiAgY3JlYXRlTW9uZXlWYWx1ZShcbiAgICB2YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgdHlwZW9mIHZhbHVlLmFtb3VudCA9PT0gJ3N0cmluZycgPyB2YWx1ZS5hbW91bnQudHJpbSgpIDogJycsXG4gICAgbG9jYWxlXG4gICk7XG5cbk1vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlID0gKG1vbmV5VmFsdWUsIGxvY2FsZSkgPT4ge1xuICBpZiAoIW1vbmV5VmFsdWUpIHJldHVybiB7IGN1cnJlbmN5Q29kZTogJycsIGFtb3VudDogJycgfTtcblxuICB3YXJuaW5nKFxuICAgIHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogQSBsb2NhbGUgbXVzdCBiZSBwYXNzZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCdcbiAgKTtcblxuICB3YXJuaW5nKFxuICAgIHR5cGVvZiBtb25leVZhbHVlID09PSAnb2JqZWN0JyxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IFZhbHVlIG11c3QgYmUgcGFzc2VkIGFzIGFuIG9iamVjdCBvciBiZSB1bmRlZmluZWQnXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICB0eXBlb2YgbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUgPT09ICdzdHJpbmcnLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogVmFsdWUgbXVzdCBjb250YWluIFwiY3VycmVuY3lDb2RlXCInXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICBoYXMoY3VycmVuY2llcywgbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUpLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogVmFsdWUgbXVzdCB1c2Uga25vd24gY3VycmVuY3kgY29kZSdcbiAgKTtcblxuICB3YXJuaW5nKFxuICAgIC8vIGhpZ2hQcmVjaXNpb24gb3IgY2VudFByZWNpc2lvbiB2YWx1ZXMgbXVzdCBiZSBzZXRcbiAgICB0eXBlb2YgbW9uZXlWYWx1ZS5jZW50QW1vdW50ID09PSAnbnVtYmVyJyB8fFxuICAgICAgKHR5cGVvZiBtb25leVZhbHVlLnByZWNpc2VBbW91bnQgPT09ICdudW1iZXInICYmXG4gICAgICAgIHR5cGVvZiBtb25leVZhbHVlLmZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyksXG4gICAgJ01vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlOiBWYWx1ZSBtdXN0IGNvbnRhaW4gXCJhbW91bnRcIidcbiAgKTtcblxuICBjb25zdCBhbW91bnQgPSBmb3JtYXRBbW91bnQoXG4gICAgZ2V0QW1vdW50QXNOdW1iZXJGcm9tTW9uZXlWYWx1ZShtb25leVZhbHVlKS50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0cyxcbiAgICB9KSxcbiAgICBtb25leVZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICBsb2NhbGVcbiAgKTtcblxuICByZXR1cm4geyBhbW91bnQsIGN1cnJlbmN5Q29kZTogbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUgfTtcbn07XG5cbk1vbmV5SW5wdXQuaXNFbXB0eSA9IChmb3JtVmFsdWUpID0+XG4gICFmb3JtVmFsdWUgfHxcbiAgZm9ybVZhbHVlLmFtb3VudC50cmltKCkgPT09ICcnIHx8XG4gIGZvcm1WYWx1ZS5jdXJyZW5jeUNvZGUudHJpbSgpID09PSAnJztcblxuTW9uZXlJbnB1dC5pc0hpZ2hQcmVjaXNpb24gPSAoZm9ybVZhbHVlLCBsb2NhbGUpID0+IHtcbiAgd2FybmluZyhcbiAgICAhTW9uZXlJbnB1dC5pc0VtcHR5KGZvcm1WYWx1ZSksXG4gICAgJ01vbmV5VmFsdWUuaXNIaWdoUHJlY2lzaW9uIG1heSBub3QgYmUgY2FsbGVkIHdpdGggYW4gZW1wdHkgbW9uZXkgdmFsdWUuJ1xuICApO1xuICBjb25zdCBtb25leVZhbHVlID0gTW9uZXlJbnB1dC5jb252ZXJ0VG9Nb25leVZhbHVlKGZvcm1WYWx1ZSwgbG9jYWxlKTtcbiAgcmV0dXJuIG1vbmV5VmFsdWUgJiYgbW9uZXlWYWx1ZS50eXBlID09PSAnaGlnaFByZWNpc2lvbic7XG59O1xuXG5Nb25leUlucHV0LmlzVG91Y2hlZCA9ICh0b3VjaGVkKSA9PlxuICBCb29sZWFuKHRvdWNoZWQgJiYgdG91Y2hlZC5jdXJyZW5jeUNvZGUgJiYgdG91Y2hlZC5hbW91bnQpO1xuXG5Nb25leUlucHV0LnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFVzZWQgYXMgSFRNTCBpZCBwcm9wZXJ0eS4gQW4gaWQgaXMgYXV0by1nZW5lcmF0ZWQgd2hlbiBpdCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBVc2VkIGFzIEhUTUwgYGF1dG9jb21wbGV0ZWAgcHJvcGVydHlcbiAgICovXG4gIGF1dG9Db21wbGV0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdXNlZCB0byBjcmVhdGUgYSBIVE1MIGBuYW1lYCBwcm9wZXJ0eSBmb3IgdGhlIGFtb3VudCBpbnB1dCBmaWVsZCAoYCR7bmFtZX0uYW1vdW50YCkgYW5kIHRoZSBjdXJyZW5jeSBkcm9wZG93biAoYCR7bmFtZX0uY3VycmVuY3lDb2RlYCkuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVmFsdWUgb2YgdGhlIGlucHV0LiBDb25zaXN0cyBvZiB0aGUgY3VycmVuY3kgY29kZSBhbmQgYW4gYW1vdW50LiBgYW1vdW50YCBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFtb3VudC4gQSBkb3QgaGFzIHRvIGJlIHVzZWQgYXMgdGhlIGRlY2ltYWwgc2VwYXJhdG9yLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYW1vdW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY3VycmVuY3lDb2RlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBMaXN0IG9mIHBvc3NpYmxlIGN1cnJlbmNpZXMuIFdoZW4gbm90IHByb3ZpZGVkIG9yIGVtcHR5LCB0aGUgY29tcG9uZW50IHJlbmRlcnMgYSBsYWJlbCB3aXRoIHRoZSB2YWx1ZSdzIGN1cnJlbmN5IGluc3RlYWQgb2YgYSBkcm9wZG93bi5cbiAgICovXG4gIGN1cnJlbmNpZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgaW5wdXRcbiAgICovXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gaW5wdXQgaXMgYmx1cnJlZFxuICAgKi9cbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGZvY3VzZWRcbiAgICovXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGlucHV0IGNhbm5vdCBiZSBtb2RpZmllZCAoZS5nIG5vdCBhdXRob3JpemVkLCBvciBjaGFuZ2VzIGN1cnJlbnRseSBzYXZpbmcpLlxuICAgKi9cbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZmllbGQgaXMgZGlzcGxheWluZyByZWFkLW9ubHkgY29udGVudFxuICAgKi9cbiAgaXNSZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBGb2N1cyB0aGUgaW5wdXQgb24gaW5pdGlhbCByZW5kZXJcbiAgICovXG4gIGlzQXV0b2ZvY3Vzc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIENhbGxlZCB3aXRoIHRoZSBldmVudCBvZiB0aGUgaW5wdXQgb3IgZHJvcGRvd24gd2hlbiBlaXRoZXIgdGhlIGN1cnJlbmN5IG9yIHRoZSBhbW91bnQgaGF2ZSBjaGFuZ2VkLlxuICAgKiA8YnIgLz5cbiAgICogU2lnbmF0dXJlOiBgKGV2ZW50KSA9PiB2b2lkYFxuICAgKi9cbiAgb25DaGFuZ2U6IHJlcXVpcmVkSWYoUHJvcFR5cGVzLmZ1bmMsIChwcm9wcykgPT4gIXByb3BzLmlzUmVhZE9ubHkpLFxuICAvKipcbiAgICogRG9tIGVsZW1lbnQgdG8gcG9ydGFsIHRoZSBjdXJyZW5jeSBzZWxlY3QgbWVudSB0b1xuICAgKi9cbiAgbWVudVBvcnRhbFRhcmdldDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2FmZUhUTUxFbGVtZW50KSxcbiAgLyoqXG4gICAqIHotaW5kZXggdmFsdWUgZm9yIHRoZSBjdXJyZW5jeSBzZWxlY3QgbWVudSBwb3J0YWxcbiAgICovXG4gIG1lbnVQb3J0YWxaSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSBtZW51IHNob3VsZCBibG9jayBzY3JvbGwgd2hpbGUgb3BlblxuICAgKi9cbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IGlucHV0IGhhcyBlcnJvcnNcbiAgICovXG4gIGhhc0Vycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIENvbnRyb2wgdG8gaW5kaWNhdGUgb24gdGhlIGlucHV0IGlmIHRoZXJlIGFyZSBzZWxlY3RlZCB2YWx1ZXMgdGhhdCBhcmUgcG90ZW50aWFsbHkgaW52YWxpZFxuICAgKi9cbiAgaGFzV2FybmluZzogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBTaG93cyBoaWdoIHByZWNpc2lvbiBiYWRnZSBpbiBjYXNlIGN1cnJlbnQgdmFsdWUgdXNlcyBoaWdoIHByZWNpc2lvbi5cbiAgICovXG4gIGhhc0hpZ2hQcmVjaXNpb25CYWRnZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBIb3Jpem9udGFsIHNpemUgbGltaXQgb2YgdGhlIGlucHV0IGZpZWxkcy5cbiAgICovXG4gIGhvcml6b250YWxDb25zdHJhaW50OiBQcm9wVHlwZXMub25lT2YoW1xuICAgIDMsXG4gICAgNCxcbiAgICA1LFxuICAgIDYsXG4gICAgNyxcbiAgICA4LFxuICAgIDksXG4gICAgMTAsXG4gICAgMTEsXG4gICAgMTIsXG4gICAgMTMsXG4gICAgMTQsXG4gICAgMTUsXG4gICAgMTYsXG4gICAgJ3NjYWxlJyxcbiAgICAnYXV0bycsXG4gIF0pLFxufTtcblxuTW9uZXlJbnB1dC5kZWZhdWx0UHJvcHMgPSB7XG4gIGN1cnJlbmNpZXM6IFtdLFxuICBob3Jpem9udGFsQ29uc3RyYWludDogJ3NjYWxlJyxcbiAgbWVudVBvcnRhbFpJbmRleDogMSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vbmV5SW5wdXQ7XG4iXX0= */",
|
|
744
745
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
745
746
|
});
|
|
746
747
|
|
|
@@ -760,8 +761,9 @@ var Portal = function Portal(props) {
|
|
|
760
761
|
var CurrencyLabel = function CurrencyLabel(props) {
|
|
761
762
|
return jsx("label", {
|
|
762
763
|
htmlFor: props.id,
|
|
763
|
-
css: getCurrencyLabelStyles()
|
|
764
|
-
|
|
764
|
+
css: getCurrencyLabelStyles(),
|
|
765
|
+
children: props.children
|
|
766
|
+
});
|
|
765
767
|
};
|
|
766
768
|
|
|
767
769
|
CurrencyLabel.displayName = 'CurrencyLabel';
|
|
@@ -774,9 +776,12 @@ var _SingleValue = function SingleValue(_ref3) {
|
|
|
774
776
|
var id = _ref3.id,
|
|
775
777
|
props = _objectWithoutProperties(_ref3, _excluded);
|
|
776
778
|
|
|
777
|
-
return jsx(components.SingleValue, props,
|
|
778
|
-
|
|
779
|
-
|
|
779
|
+
return jsx(components.SingleValue, _objectSpread(_objectSpread({}, props), {}, {
|
|
780
|
+
children: jsx("label", {
|
|
781
|
+
htmlFor: id,
|
|
782
|
+
children: props.children
|
|
783
|
+
})
|
|
784
|
+
}));
|
|
780
785
|
};
|
|
781
786
|
|
|
782
787
|
_SingleValue.displayName = 'SingleValue';
|
|
@@ -911,7 +916,8 @@ var parseRawAmountToNumber = function parseRawAmountToNumber(rawAmount, locale)
|
|
|
911
916
|
var fractionsSeparator;
|
|
912
917
|
|
|
913
918
|
if (locale) {
|
|
914
|
-
fractionsSeparator = 2.5
|
|
919
|
+
fractionsSeparator = 2.5 // we need any number with fractions, so that we know what is the fraction
|
|
920
|
+
.toLocaleString(locale) // "symbol" for the provided locale
|
|
915
921
|
.replace(/\d/g, ''); // then we remove the numbers and keep the "symbol"
|
|
916
922
|
} else {
|
|
917
923
|
var _context, _context2;
|
|
@@ -1031,6 +1037,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
1031
1037
|
} : {
|
|
1032
1038
|
name: "h5hvsa-MoneyInput",
|
|
1033
1039
|
styles: "position:relative;width:100%;label:MoneyInput;",
|
|
1040
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vbmV5LWlucHV0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdsQmtCIiwiZmlsZSI6Im1vbmV5LWlucHV0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgcmVxdWlyZWRJZiBmcm9tICdyZWFjdC1yZXF1aXJlZC1pZic7XG5pbXBvcnQgU2VsZWN0LCB7IGNvbXBvbmVudHMgfSBmcm9tICdyZWFjdC1zZWxlY3QnO1xuaW1wb3J0IHsgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgY3NzLCB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgYXMgdmFycyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHtcbiAgd2FybmluZyxcbiAgaXNOdW1iZXJpc2gsXG4gIFNhZmVIVE1MRWxlbWVudCxcbiAgZmlsdGVyRGF0YUF0dHJpYnV0ZXMsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3V0aWxzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3Rvb2x0aXAnO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25JbmRpY2F0b3IsXG4gIGNyZWF0ZVNlbGVjdFN0eWxlcyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc2VsZWN0LXV0aWxzJztcbmltcG9ydCB7IEZyYWN0aW9uRGlnaXRzSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBDb25zdHJhaW50cyBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgeyB1c2VUb2dnbGVTdGF0ZSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2hvb2tzJztcbmltcG9ydCBjdXJyZW5jaWVzIGZyb20gJy4vY3VycmVuY2llcy5qc29uJztcbmltcG9ydCB7XG4gIGdldEhpZ2hQcmVjaXNpb25XcmFwcGVyU3R5bGVzLFxuICBnZXRDdXJyZW5jeUxhYmVsU3R5bGVzLFxuICBnZXRBbW91bnRJbnB1dFN0eWxlcyxcbn0gZnJvbSAnLi9tb25leS1pbnB1dC5zdHlsZXMnO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnO1xuXG5jb25zdCBUb29sdGlwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gO1xuXG5jb25zdCBnZXRQb3J0YWxJZCA9IChpZCkgPT4gYHBvcnRhbC0ke2lkfWA7XG5jb25zdCBnZXRQb3J0YWxOb2RlID0gKGlkKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtnZXRQb3J0YWxJZChpZCl9YCk7XG5cbmNvbnN0IFBvcnRhbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCBkb21Ob2RlID0gZ2V0UG9ydGFsTm9kZShwcm9wcy5pZCk7XG4gIHJldHVybiBSZWFjdERPTS5jcmVhdGVQb3J0YWwocHJvcHMuY2hpbGRyZW4sIGRvbU5vZGUpO1xufTtcblxuY29uc3QgQ3VycmVuY3lMYWJlbCA9IChwcm9wcykgPT4gKFxuICA8bGFiZWwgaHRtbEZvcj17cHJvcHMuaWR9IGNzcz17Z2V0Q3VycmVuY3lMYWJlbFN0eWxlcygpfT5cbiAgICB7cHJvcHMuY2hpbGRyZW59XG4gIDwvbGFiZWw+XG4pO1xuXG5DdXJyZW5jeUxhYmVsLmRpc3BsYXlOYW1lID0gJ0N1cnJlbmN5TGFiZWwnO1xuXG5DdXJyZW5jeUxhYmVsLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbn07XG5cbmNvbnN0IFNpbmdsZVZhbHVlID0gKHsgaWQsIC4uLnByb3BzIH0pID0+IChcbiAgPGNvbXBvbmVudHMuU2luZ2xlVmFsdWUgey4uLnByb3BzfT5cbiAgICA8bGFiZWwgaHRtbEZvcj17aWR9Pntwcm9wcy5jaGlsZHJlbn08L2xhYmVsPlxuICA8L2NvbXBvbmVudHMuU2luZ2xlVmFsdWU+XG4pO1xuXG5TaW5nbGVWYWx1ZS5kaXNwbGF5TmFtZSA9ICdTaW5nbGVWYWx1ZSc7XG5cblNpbmdsZVZhbHVlLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbn07XG5cbi8vIG92ZXJ3cml0ZSBzdHlsZXMgb2YgY3JlYXRlU2VsZWN0U3R5bGVzXG5jb25zdCBjcmVhdGVDdXJyZW5jeVNlbGVjdFN0eWxlcyA9IChcbiAgeyBoYXNXYXJuaW5nLCBoYXNFcnJvciwgaXNEaXNhYmxlZCwgaXNSZWFkT25seSwgaGFzRm9jdXMsIG1lbnVQb3J0YWxaSW5kZXggfSxcbiAgdGhlbWVcbikgPT4ge1xuICBjb25zdCBzZWxlY3RTdHlsZXMgPSBjcmVhdGVTZWxlY3RTdHlsZXMoXG4gICAge1xuICAgICAgaGFzV2FybmluZyxcbiAgICAgIGhhc0Vycm9yLFxuICAgICAgbWVudVBvcnRhbFpJbmRleCxcbiAgICB9LFxuICAgIHRoZW1lXG4gICk7XG4gIHJldHVybiB7XG4gICAgLi4uc2VsZWN0U3R5bGVzLFxuICAgIGNvbnRyb2w6IChiYXNlLCBzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnNlbGVjdFN0eWxlcy5jb250cm9sKGJhc2UsIHN0YXRlKSxcbiAgICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAnMCcsXG4gICAgICBib3JkZXJCb3R0b21SaWdodFJhZGl1czogJzAnLFxuICAgICAgYm9yZGVyUmlnaHQ6ICcwJyxcbiAgICAgIG1pbldpZHRoOiAnNzJweCcsXG4gICAgICBib3JkZXJDb2xvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuIGAke3ZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZH0gIWltcG9ydGFudGA7XG4gICAgICAgIGlmIChoYXNFcnJvcikgcmV0dXJuIHZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5FcnJvcjtcbiAgICAgICAgaWYgKGhhc1dhcm5pbmcpIHJldHVybiB2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuV2FybmluZztcbiAgICAgICAgaWYgKGhhc0ZvY3VzKSByZXR1cm4gdmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkZvY3VzZWQ7XG4gICAgICAgIGlmIChpc1JlYWRPbmx5KVxuICAgICAgICAgIHJldHVybiBgJHt2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuUmVhZG9ubHl9ICFpbXBvcnRhbnRgO1xuICAgICAgICByZXR1cm4gdmFycy5ib3JkZXJDb2xvckZvcklucHV0O1xuICAgICAgfSkoKSxcbiAgICAgIGN1cnNvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybiAnbm90LWFsbG93ZWQnO1xuICAgICAgICBpZiAoaXNSZWFkT25seSkgcmV0dXJuIGBkZWZhdWx0YDtcbiAgICAgICAgcmV0dXJuICdwb2ludGVyJztcbiAgICAgIH0pKCksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICgoKSA9PiB7XG4gICAgICAgIGlmIChpc1JlYWRPbmx5KSByZXR1cm4gdmFycy5iYWNrZ3JvdW5kQ29sb3JGb3JJbnB1dDtcbiAgICAgICAgcmV0dXJuIGJhc2UuYmFja2dyb3VuZENvbG9yO1xuICAgICAgfSkoKSxcbiAgICB9KSxcbiAgICBzaW5nbGVWYWx1ZTogKGJhc2UpID0+ICh7XG4gICAgICAuLi5iYXNlLFxuICAgICAgbWFyZ2luTGVmdDogMCxcbiAgICAgIG1heFdpZHRoOiAnaW5pdGlhbCcsXG4gICAgICBjb2xvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlbkRpc2FibGVkO1xuICAgICAgICBpZiAoaGFzRXJyb3IpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlbkVycm9yO1xuICAgICAgICBpZiAoaGFzV2FybmluZykgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuV2FybmluZztcbiAgICAgICAgaWYgKGlzUmVhZE9ubHkpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlblJlYWRvbmx5O1xuICAgICAgICByZXR1cm4gYmFzZS5jb2xvcjtcbiAgICAgIH0pKCksXG4gICAgfSksXG4gICAgZHJvcGRvd25JbmRpY2F0b3I6ICgpID0+ICh7XG4gICAgICBmaWxsOiBpc1JlYWRPbmx5ID8gdmFycy5mb250Q29sb3JGb3JJbnB1dFdoZW5SZWFkb25seSA6ICcnLFxuICAgIH0pLFxuICB9O1xufTtcblxuLy8gVGhlIE1vbmV5SW5wdXQgY29tcG9uZW50IGFsd2F5cyBvcGVyYXRlcyBvbiBhIHZhbHVlIGNvbnNpc3Rpbmcgb2Y6XG4vLyAgIHsgYW1vdW50OiBTdHJpbmcsIGN1cnJlbmN5Q29kZTogU3RyaW5nIH1cbi8vXG4vLyBUaGUgYW1vdW50IG1heSBvbmx5IHVzZSBhIGRvdCBhcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4vLyBUaGUgY3VycmVuY3lDb2RlIG11c3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBBUEkuXG4vL1xuLy8gVGhlIE1vbmV5SW5wdXQgZG9lcyBub3QgZG8gYW55IHZhbGlkYXRpb24gb24gaXRzIG93bi4gSXQgb25seSBzZXJ2ZXMgYXMgYSB3YXlcbi8vIHRvIGdldCB0aGUgYW1vdW50IGFuZCBjdXJyZW5jeUNvZGUgaW5wdXQgZnJvbSB0aGUgdXNlci4gVmFsaWRhdGlvbiBpcyBhbHdheXNcbi8vIHVwIHRvIHRoZSBwYXJlbnQuXG4vL1xuLy8gVGhlIENUUCBBUEkgc3VwcG9ydHMgcHJpY2VzIHR3byB0eXBlcyBvZiBwcmljZXM6IGNlbnRQcmVjaXNpb24gYW5kXG4vLyBoaWdoUHJlY2lzaW9uLiBUaGUgTW9uZXlJbnB1dCBpdHNlbGYgZG9lcyBub3Qga25vdyBhYm91dCB0aGVzZS4gSG93ZXZlcixcbi8vIGl0IGhhcyB0d28gc3RhdGljIG1ldGhvZHMgZGVmaW5lZCAoY29udmVydFRvTW9uZXlWYWx1ZSBhbmQgcGFyc2VNb25leVZhbHVlKSxcbi8vIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBNb25leUlucHV0IHZhbHVlIGFuZCB0aGUgTW9uZXlWYWx1ZVxuLy8gc3VwcG9ydGVkIGJ5IHRoZSBBUEkuXG4vLyBTb21lIHBsYWNlcyBpbiB0aGUgQVBJIGRvIG5vdCBzdXBwb3J0IGhpZ2hQcmVjaXNpb24gcHJpY2VzLCBidXQgdGhlXG4vLyBjb252ZXJ0VG9Nb25leVZhbHVlIHdpbGwgYWx3YXlzIHJldHVybiBlaXRoZXIgYSBjZW50UHJlY2lzaW9uIG9yIGFcbi8vIGhpZ2hQcmVjaXNpb24gcHJpY2UuIEl0J3MgdXAgdGhlIE1vbmV5SW5wdXQncyBwYXJlbnQgdG8gc2hvdyBhIHZhbGlkYXRpb25cbi8vIGVycm9yIGluIGNhc2UgYSBoaWdoUHJlY2lzaW9uIHByaWNlIGlzIHVzZWQuXG4vL1xuLy8gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFzIHRvIGhhdmUgaGlnaFByZWNpc2lvbiB3aGVuIHRoZSBudW1iZXIgb2Ygc3VwcGxpZWRcbi8vIGZyYWN0aW9uIGRpZ2l0cyBleGNlZWQgdGhlIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdGhlIGN1cnJlbmN5IHVzZXMuIEZvclxuLy8gZXhhbXBsZSwgNDIuMDAg4oKsIGlzIGFsd2F5cyBhIGNlbnRQcmVjaXNpb24gcHJpY2UsIHdoaWxlIDQyLjAwMSDigqwgaXMgYWx3YXlzIGFcbi8vIGhpZ2hQcmVjaXNpb24gcHJpY2UuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYWUgNDIuMDAg4oKsIGFzIGEgaGlnaFByZWNpc2lvblxuLy8gcHJpY2UuXG4vL1xuLy8gVGhlIGZpcnN0IHRpbWUgdGhlIGNvbXBvbmVudCByZW5kZXJzLCB3ZSB3YW50IHRvIHRyeSB0byBzaG93IHRoZSBjZW50QW1vdW50XG4vLyBhcyBhIGZvcm1hdHRlZCBudW1iZXIuIFRvIGFjaGlldmUgdGhpcywgdGhlIHBhcnNlTW9uZXlWYWx1ZSBmdW5jdGlvbiBjYW5cbi8vIGJlIHVzZWQgdG8gdHVybiB0aGUgQVBJIHZhbHVlIGludG8gYSB2YWx1ZSB0aGUgTW9uZXlJbnB1dCB1bmRlcnN0YW5kcy5cbi8vIER1cmluZyB0aGlzIHRyYW5zZm9ybWF0aW9uLCB0aGUgbW9uZXkgdmFsdWUgd2lsbCBnZXQgZm9ybWF0dGVkIGludG8gXCJhbW91bnRcIi5cbi8vXG4vLyBXaGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZhbHVlLCB3ZSBkb24ndCB3YW50IHRvIGZvcm1hdCBhZ2Fpbi4gV2Ugb25seSBmb3JtYXRcbi8vIGluIGNhc2UgdGhlIHVzZXIgYmx1cnMgdGhlIGZpZWxkLiBUaGlzIGF2b2lkcyBtYW55IGVkZ2UgY2FzZXMgd2hlcmUgdGhlXG4vLyBmb3JtYXR0aW5nIHdvdWxkIG1lc3Mgd2l0aCB0aGUgdXNlcidzIGlucHV0LlxuLy9cbi8vXG4vLyBBIGZ1bGwgZXhhbXBsZSBvZiBhbiBNb25leVZhbHVlIHdpdGggY2VudFByZWNpc2lvbiB3b3VsZCBiZVxuLy8ge1xuLy8gICBcInR5cGVcIjogXCJjZW50UHJlY2lzaW9uXCIsXG4vLyAgIFwiY3VycmVuY3lDb2RlXCI6IFwiRVVSXCIsXG4vLyAgIFwiY2VudEFtb3VudFwiOiA0MjAwLFxuLy8gICBcImZyYWN0aW9uRGlnaXRzXCI6IDJcbi8vIH1cbi8vIHdoaWNoIGVxdWFscyA0Mi4wMCDigqxcbi8vXG4vLyBBIGZ1bGwgZXhhbXBsZSBvZiBhbiBNb25leVZhbHVlIHdpdGggaGlnaFByZWNpc2lvbiB3b3VsZCBiZVxuLy8ge1xuLy8gIFwidHlwZVwiOiBcImhpZ2hQcmVjaXNpb25cIixcbi8vICBcImN1cnJlbmN5Q29kZVwiOiBcIkVVUlwiLFxuLy8gIFwiY2VudEFtb3VudFwiOiAxLFxuLy8gIFwicHJlY2lzZUFtb3VudFwiOiAxMjM0NTYsXG4vLyAgXCJmcmFjdGlvbkRpZ2l0c1wiOiA3XG4vLyB9XG4vLyB3aGljaCBlcXVhbHMgMC4wMTIzNDU2IOKCrFxuXG4vLyBQYXJzaW5nXG4vLyBTaW5jZSBtb3N0IHVzZXJzIGFyZSBub3QgY2FyZWZ1bCBhYm91dCBob3cgdGhleSBlbnRlciB2YWx1ZXMsIHdlIHdpbGwgcGFyc2Vcbi8vIGJvdGggYC5gIGFuZCBgLGAgYXMgZGVjaW1hbCBzZXBhcmF0b3JzLlxuLy8gV2hlbiBhIHZhbHVlIGlzIGAxLjAwMCwwMGAgd2UgcGFyc2UgaXQgYXMgYDEwMDBgLlxuLy8gV2hlbiBhIHZhbHVlIGlzIGAxLDAwMC4wMGAgd2UgYWxzbyBwYXJzZSBpdCBhcyBgMTAwMGAuXG4vL1xuLy8gVGhpcyBtZWFucyB0aGUgaGlnaGVzdCBhbW91bnQgYWx3YXlzIHdpbnMuIFdlIGRvIHRoaXMgYnkgY29tcGFyaW5nIHRoZSBsYXN0XG4vLyBwb3NpdGlvbiBvZiBgLmAgYW5kIGAsYC4gV2hhdGV2ZXIgb2NjdXJzIGxhdGVyIGlzIHVzZWQgYXMgdGhlIGRlY2ltYWxcbi8vIHNlcGFyYXRvci5cbmV4cG9ydCBjb25zdCBwYXJzZVJhd0Ftb3VudFRvTnVtYmVyID0gKHJhd0Ftb3VudCwgbG9jYWxlKSA9PiB7XG4gIGxldCBmcmFjdGlvbnNTZXBhcmF0b3I7XG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIGZyYWN0aW9uc1NlcGFyYXRvciA9ICgyLjUpIC8vIHdlIG5lZWQgYW55IG51bWJlciB3aXRoIGZyYWN0aW9ucywgc28gdGhhdCB3ZSBrbm93IHdoYXQgaXMgdGhlIGZyYWN0aW9uXG4gICAgICAudG9Mb2NhbGVTdHJpbmcobG9jYWxlKSAvLyBcInN5bWJvbFwiIGZvciB0aGUgcHJvdmlkZWQgbG9jYWxlXG4gICAgICAucmVwbGFjZSgvXFxkL2csICcnKTsgLy8gdGhlbiB3ZSByZW1vdmUgdGhlIG51bWJlcnMgYW5kIGtlZXAgdGhlIFwic3ltYm9sXCJcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0RG90ID0gU3RyaW5nKHJhd0Ftb3VudCkubGFzdEluZGV4T2YoJy4nKTtcbiAgICBjb25zdCBsYXN0Q29tbWEgPSBTdHJpbmcocmF3QW1vdW50KS5sYXN0SW5kZXhPZignLCcpO1xuICAgIGZyYWN0aW9uc1NlcGFyYXRvciA9IGxhc3RDb21tYSA+IGxhc3REb3QgPyAnLCcgOiAnLic7XG4gIH1cblxuICBmcmFjdGlvbnNTZXBhcmF0b3IgPSBmcmFjdGlvbnNTZXBhcmF0b3IgPT09ICcuJyA/ICdcXFxcLicgOiBmcmFjdGlvbnNTZXBhcmF0b3I7IC8vIGhlcmUgd2UgZXNjYXBlIHRoZSAnLicgdG8gdXNlIGl0IGFzIHJlZ2V4XG4gIC8vIFRoZSByYXcgYW1vdW50IHdpdGggb25seSBvbmUgc3BhcmF0b3JcbiAgY29uc3Qgbm9ybWFsaXplZEFtb3VudCA9IFN0cmluZyhyYXdBbW91bnQpXG4gICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgW14wLTkke2ZyYWN0aW9uc1NlcGFyYXRvcn1dYCwgJ2cnKSwgJycpIC8vIHdlIGp1c3Qga2VlcCB0aGUgbnVtYmVycyBhbmQgdGhlIGZyYWN0aW9uIHN5bWJvbFxuICAgIC5yZXBsYWNlKGZyYWN0aW9uc1NlcGFyYXRvciwgJy4nKTsgLy8gdGhlbiB3ZSBjaGFuZ2Ugd2hhdGV2ZXIgYGZyYWN0aW9uc1NlcGFyYXRvcmAgd2FzIHRvIGAuYCBzbyB3ZSBjYW4gcGFyc2UgaXQgYXMgZmxvYXRcblxuICByZXR1cm4gcGFyc2VGbG9hdChub3JtYWxpemVkQW1vdW50LCAxMCk7XG59O1xuXG4vLyBUdXJucyB0aGUgdXNlciBpbnB1dCBpbnRvIGEgdmFsdWUgdGhlIE1vbmV5SW5wdXQgY2FuIHBhc3MgdXAgdGhyb3VnaCBvbkNoYW5nZVxuLy8gSW4gY2FzZSB0aGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyBjb250YWluZWQgaW4gXCJhbW91bnRcIiBleGNlZWRzIHRoZVxuLy8gbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0aGUgY3VycmVuY3kgdXNlcywgaXQgd2lsbCBlbWl0IGEgcHJpY2Ugb2Zcbi8vIHR5cGUgXCJoaWdoUHJlY2lzaW9uXCIgaW5zdGVhZCBvZiB0aGUgcmVndWxhciBcImNlbnRQcmVjaXNpb25cIi5cbi8vIEl0IHdpbGwgcmV0dXJuIFwibnVsbFwiIGluIGNhc2UgYW4gaW52YWxpZCB2YWx1ZSBpcyBlbnRlcmVkLlxuLy8gVGhlIHZhbHVlIGlzIGludmFsaWQgd2hlblxuLy8gIC0gbm8gYW1vdW50IHdhcyBlbnRlcmVkXG4vLyAgLSBhbiBpbnZhbGlkIGFtb3VudCB3YXMgZW50ZXJlZFxuLy8gIC0gbm8gY3VycmVuY3kgd2FzIHNlbGVjdGVkXG4vL1xuLy8gVGhpcyBmdW5jdGlvbiBleHBlY3RzIHRoZSBcImFtb3VudFwiIHRvIGJlIGEgdHJpbW1lZCB2YWx1ZS5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb25leVZhbHVlID0gKGN1cnJlbmN5Q29kZSwgcmF3QW1vdW50LCBsb2NhbGUpID0+IHtcbiAgaWYgKCFjdXJyZW5jeUNvZGUpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGN1cnJlbmN5ID0gY3VycmVuY2llc1tjdXJyZW5jeUNvZGVdO1xuICBpZiAoIWN1cnJlbmN5KSByZXR1cm4gbnVsbDtcblxuICBpZiAocmF3QW1vdW50Lmxlbmd0aCA9PT0gMCB8fCAhaXNOdW1iZXJpc2gocmF3QW1vdW50KSkgcmV0dXJuIG51bGw7XG5cbiAgd2FybmluZyhcbiAgICBsb2NhbGUgfHwgY3VycmVuY3kuZnJhY3Rpb25EaWdpdHMgIT09IDAsXG4gICAgYEEgbG9jYWxlIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBjdXJyZW5jeSBoYXMgbm8gZnJhY3Rpb24gZGlnaXRzICgke2N1cnJlbmN5Q29kZX0pYFxuICApO1xuICBjb25zdCBhbW91bnRBc051bWJlciA9IHBhcnNlUmF3QW1vdW50VG9OdW1iZXIocmF3QW1vdW50LCBsb2NhbGUpO1xuICBpZiAoaXNOYU4oYW1vdW50QXNOdW1iZXIpKSByZXR1cm4gbnVsbDtcblxuICAvLyBUaGUgY2VudCBhbW91bnQgaXMgcm91bmRlZCB0byB0aGUgY3VycmVuY2llJ3MgZGVmYXVsdCBudW1iZXJcbiAgLy8gb2YgZnJhY3Rpb24gZGlnaXRzIGZvciBwcmljZXMgd2l0aCBoaWdoIHByZWNpc2lvbi5cbiAgLy9cbiAgLy8gQWRkaXRpb25hbGx5LCBKYXZhU2NyaXB0IGlzIHNvbWV0aW1lcyBpbmNvcnJlY3Qgd2hlbiBtdWx0aXBseWluZyBmbG9hdHMsXG4gIC8vICAgZS5nLiAyLjQ5ICogMTAwIC0+IDI0OS4wMDAwMDAwMDAwMDAwM1xuICAvLyBXaGlsZSBpbmFjY3VyYWN5IGZyb20gbXVsdGlwbHlpbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpcyBhXG4gIC8vIGdlbmVyYWwgcHJvYmxlbSBpbiBKUywgd2UgY2FuIGF2b2lkIGl0IGJ5IGN1dHRpbmcgb2ZmIGFsbFxuICAvLyBkZWNpbWFscy4gVGhpcyBpcyBwb3NzaWJsZSBzaW5jZSBjZW50cyBpcyB0aGUgYmFzZSB1bml0LCBzbyB3ZVxuICAvLyBvcGVyYXRlIG9uIGludGVnZXJzIGFueXdheXNcbiAgLy8gQWxzbyB3ZSBzaG91bGQgdGhlIHJvdW5kIHRoZSB2YWx1ZSB0byBlbnN1cmUgdGhhdCB3ZSBjb21lIGNsb3NlXG4gIC8vIHRvIHRoZSBuZWFyZXN0IGRlY2ltYWwgdmFsdWVcbiAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vY29tbWVyY2V0b29scy9tZXJjaGFudC1jZW50ZXItZnJvbnRlbmQvcHVsbC83NzBcbiAgY29uc3QgY2VudEFtb3VudCA9IE1hdGgudHJ1bmMoXG4gICAgTWF0aC5yb3VuZChhbW91bnRBc051bWJlciAqIDEwICoqIGN1cnJlbmN5LmZyYWN0aW9uRGlnaXRzKVxuICApO1xuXG4gIGNvbnN0IGZyYWN0aW9uRGlnaXRzT2ZBbW91bnQgPVxuICAgIC8vIFRoZSBjb252ZXJzaW9uIHRvIGEgc3RyaW5nIHdpbGwgYWx3YXlzIHVzZSBhIGRvdCBhcyB0aGUgc2VwYXJhdG9yLlxuICAgIC8vIFRoYXQgbWVhbnMgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgYSBjb21tYS5cbiAgICBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLmluZGV4T2YoJy4nKSA9PT0gLTFcbiAgICAgID8gMFxuICAgICAgOiBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLmxlbmd0aCAtIFN0cmluZyhhbW91bnRBc051bWJlcikuaW5kZXhPZignLicpIC0gMTtcblxuICBpZiAoZnJhY3Rpb25EaWdpdHNPZkFtb3VudCA+IGN1cnJlbmN5LmZyYWN0aW9uRGlnaXRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdoaWdoUHJlY2lzaW9uJyxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGNlbnRBbW91bnQsXG4gICAgICBwcmVjaXNlQW1vdW50OiBwYXJzZUludChcbiAgICAgICAgLy8gSGVyZSB3ZSBuZWVkIHRvIGNvbnZlcnQgIGEgbnVtYmVyIGxpa2UgOC4wNjY2NTIgdG8gaXRzIGNlbnRhbW91bnRcbiAgICAgICAgLy8gV2UgY291bGQgZG8gdGhhdCBieSBtdWx0aXBseWluZyBpdCB3aXRoIDEwICoqIG51bWJlci1vZi1mcmFjdGlvbi1kaWdpdHNcbiAgICAgICAgLy8gYnV0IHRoZW4gd2UnbGwgcnVuIGludG8gcHJvYmxlbXMgd2l0aCBKYXZhU2NyaXB0J3MgZmxvYXRpbmcgcG9pbnRcbiAgICAgICAgLy8gbnVtYmVyIHByZWNpc2lvbiBhbmQgZW5kIHVwIHdpdGggODA2NjY1MS45OTk5OTk5LCBhbmQgdGhlbiBwYXJzZUludFxuICAgICAgICAvLyBjdXRzIG9mZiB0aGUgcmVtYWluZGVyLlxuICAgICAgICAvLyBTbyBpbnN0ZWFkIG9mIHVzaW5nIG1hdGhzIHRvIGNvbnZlcnQgdGhlIG51bWJlciwgd2UganVzdCByZXBsYWNlXG4gICAgICAgIC8vIHRoZSBkb3QgaW5zaWRlIHRoZSBudW1iZXIgd2hpY2ggZG9lcyB0aGUgc2FtZSB0aGluZy5cbiAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byByZXBsYWNlIFwiLFwiIGFzIHdlbGwsIGFzIG51bWJlcnMgYWx3YXlzIHVzIGEgZG90XG4gICAgICAgIC8vIHdoZW4gY29udmVydGVkIHVzaW5nIFN0cmluZygpLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGUgbWF0aGVtYXRpY2FsIHdheTogYW1vdW50QXNOdW1iZXIgKiAxMCAqKiBmcmFjdGlvbkRpZ2l0c09mQW1vdW50LFxuICAgICAgICBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLnJlcGxhY2UoJy4nLCAnJyksXG4gICAgICAgIDEwXG4gICAgICApLFxuICAgICAgZnJhY3Rpb25EaWdpdHM6IGZyYWN0aW9uRGlnaXRzT2ZBbW91bnQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2NlbnRQcmVjaXNpb24nLFxuICAgIGN1cnJlbmN5Q29kZSxcbiAgICBjZW50QW1vdW50LFxuICAgIGZyYWN0aW9uRGlnaXRzOiBjdXJyZW5jeS5mcmFjdGlvbkRpZ2l0cyxcbiAgfTtcbn07XG5cbmNvbnN0IGdldEFtb3VudEFzTnVtYmVyRnJvbU1vbmV5VmFsdWUgPSAobW9uZXlWYWx1ZSkgPT5cbiAgbW9uZXlWYWx1ZS50eXBlID09PSAnaGlnaFByZWNpc2lvbidcbiAgICA/IG1vbmV5VmFsdWUucHJlY2lzZUFtb3VudCAvIDEwICoqIG1vbmV5VmFsdWUuZnJhY3Rpb25EaWdpdHNcbiAgICA6IG1vbmV5VmFsdWUuY2VudEFtb3VudCAvXG4gICAgICAxMCAqKiBjdXJyZW5jaWVzW21vbmV5VmFsdWUuY3VycmVuY3lDb2RlXS5mcmFjdGlvbkRpZ2l0cztcblxuLy8gZ2V0cyBjYWxsZWQgd2l0aCBhIHN0cmluZyBhbmQgc2hvdWxkIHJldHVybiBhIGZvcm1hdHRlZCBzdHJpbmdcbmNvbnN0IGZvcm1hdEFtb3VudCA9IChyYXdBbW91bnQsIGN1cnJlbmN5Q29kZSwgbG9jYWxlKSA9PiB7XG4gIC8vIGZhbGxiYWNrIGluIGNhc2UgdGhlIHVzZXIgZGlkbid0IGVudGVyIGFuIGFtb3VudCB5ZXQgKG9yIGl0J3MgaW52YWxpZClcbiAgY29uc3QgbW9uZXlWYWx1ZSA9IGNyZWF0ZU1vbmV5VmFsdWUoY3VycmVuY3lDb2RlLCByYXdBbW91bnQsIGxvY2FsZSkgfHwge1xuICAgIGN1cnJlbmN5Q29kZSxcbiAgICBjZW50QW1vdW50OiBOYU4sXG4gIH07XG5cbiAgY29uc3QgYW1vdW50ID0gZ2V0QW1vdW50QXNOdW1iZXJGcm9tTW9uZXlWYWx1ZShtb25leVZhbHVlKTtcblxuICBjb25zdCBmcmFjdGlvbkRpZ2l0cyA9IG1vbmV5VmFsdWUucHJlY2lzZUFtb3VudFxuICAgID8gbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0c1xuICAgIDogY3VycmVuY2llc1ttb25leVZhbHVlLmN1cnJlbmN5Q29kZV0uZnJhY3Rpb25EaWdpdHM7XG5cbiAgcmV0dXJuIGlzTmFOKGFtb3VudClcbiAgICA/ICcnXG4gICAgOiBhbW91bnQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHMgfSk7XG59O1xuXG5jb25zdCBnZXRBbW91bnRJbnB1dE5hbWUgPSAobmFtZSkgPT4gKG5hbWUgPyBgJHtuYW1lfS5hbW91bnRgIDogdW5kZWZpbmVkKTtcbmNvbnN0IGdldEN1cnJlbmN5RHJvcGRvd25OYW1lID0gKG5hbWUpID0+XG4gIG5hbWUgPyBgJHtuYW1lfS5jdXJyZW5jeUNvZGVgIDogdW5kZWZpbmVkO1xuXG5jb25zdCBNb25leUlucHV0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gIGNvbnN0IFtjdXJyZW5jeUhhc0ZvY3VzLCB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzXSA9IHVzZVRvZ2dsZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Ftb3VudEhhc0ZvY3VzLCB0b2dnbGVBbW91bnRIYXNGb2N1c10gPSB1c2VUb2dnbGVTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGFtb3VudElucHV0UmVmID0gdXNlUmVmKCk7XG5cbiAgY29uc3QgeyBvbkZvY3VzIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQW1vdW50Rm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG9uRm9jdXMpXG4gICAgICBvbkZvY3VzKHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgaWQ6IE1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCksXG4gICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgdG9nZ2xlQW1vdW50SGFzRm9jdXModHJ1ZSk7XG4gIH0sIFt0b2dnbGVBbW91bnRIYXNGb2N1cywgb25Gb2N1cywgcHJvcHMuaWQsIHByb3BzLm5hbWVdKTtcblxuICBjb25zdCB7IG9uQ2hhbmdlIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQW1vdW50Qmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBhbW91bnQgPSBwcm9wcy52YWx1ZS5hbW91bnQudHJpbSgpO1xuICAgIHRvZ2dsZUFtb3VudEhhc0ZvY3VzKGZhbHNlKTtcbiAgICAvLyBTa2lwIGZvcm1hdHRpbmcgZm9yIGVtcHR5IHZhbHVlIG9yIHdoZW4gdGhlIGlucHV0IGlzIHVzZWQgd2l0aCBhblxuICAgIC8vIHVua25vd24gY3VycmVuY3kuXG4gICAgaWYgKGFtb3VudC5sZW5ndGggPiAwICYmIGN1cnJlbmNpZXNbcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlXSkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkQW1vdW50ID0gZm9ybWF0QW1vdW50KFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIHByb3BzLnZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgaW50bC5sb2NhbGVcbiAgICAgICk7XG5cbiAgICAgIC8vIFdoZW4gdGhlIHVzZXIgZW50ZXJlZCBhIHZhbHVlIHdpdGggY2VudFByZWNpc2lvbiwgd2UgY2FuIGZvcm1hdFxuICAgICAgLy8gdGhlIHJlc3VsdGluZyB2YWx1ZSB0byB0aGF0IGN1cnJlbmN5LCBlLmcuIDIwLjEgdG8gMjAuMTBcbiAgICAgIGlmIChTdHJpbmcoZm9ybWF0dGVkQW1vdW50KSAhPT0gYW1vdW50KSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gZW1pdCBhbiBldmVudCB3aXRoIHRoZSBub3cgZm9ybWF0dGVkIHZhbHVlXG4gICAgICAgIGNvbnN0IGZha2VFdmVudCA9IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZWRBbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgb25DaGFuZ2UoZmFrZUV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpbnRsLmxvY2FsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBwcm9wcy5pZCxcbiAgICBwcm9wcy5uYW1lLFxuICAgIHByb3BzLnZhbHVlLmFtb3VudCxcbiAgICBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgdG9nZ2xlQW1vdW50SGFzRm9jdXMsXG4gIF0pO1xuXG4gIGNvbnN0IGhhbmRsZUFtb3VudENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgaWYgKGlzTnVtYmVyaXNoKGV2ZW50LnRhcmdldC52YWx1ZSkpIHtcbiAgICAgICAgb25DaGFuZ2Uoe1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgICAgdmFsdWU6IGV2ZW50LnRhcmdldC52YWx1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgcHJvcHMuaWQsIHByb3BzLm5hbWVdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ3VycmVuY3lDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW5jeUNvZGUgPSBvcHRpb24udmFsdWU7XG4gICAgICBpZiAocHJvcHMudmFsdWUuY3VycmVuY3lDb2RlICE9PSBjdXJyZW5jeUNvZGUpIHtcbiAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBjaGFuZ2VzIGZyb20gYSBjdXJyZW5jeSB3aXRoIDMgZnJhY3Rpb24gZGlnaXRzIHRvXG4gICAgICAgIC8vIGEgY3VycmVuY3kgd2l0aCAyIGZyYWN0aW9uIGRpZ2l0cywgYW5kIHdoZW4gdGhlIGlucHV0IHZhbHVlIHdhc1xuICAgICAgICAvLyBcIjkuMDAwXCIgKDkpLCB0aGVuIGl0IHNob3VsZCBjaGFuZ2UgdG8gXCI5LjAwXCIgdG8gcmVmbGVjdCB0aGUgbmV3XG4gICAgICAgIC8vIGN1cnJlbmN5J3MgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cy5cbiAgICAgICAgLy8gV2hlbiB0aGUgY3VycmVuY3kgd2FzIGEgaGlnaC1wcmVjaXNpb24gcHJpY2UsIHRoZW4gbm8gZGlnaXRzIHNob3VsZFxuICAgICAgICAvLyBiZSBsb3N0XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEFtb3VudCA9IGZvcm1hdEFtb3VudChcbiAgICAgICAgICBwcm9wcy52YWx1ZS5hbW91bnQudHJpbSgpLFxuICAgICAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgICAgICBpbnRsLmxvY2FsZVxuICAgICAgICApO1xuICAgICAgICAvLyBUaGUgdXNlciBjb3VsZCBiZSBjaGFuZ2luZyB0aGUgY3VycmVuY3kgYmVmb3JlIGVudGVyaW5nIGFueSBhbW91bnQsXG4gICAgICAgIC8vIG9yIHdoaWxlIHRoZSBhbW91bnQgaXMgaW52YWxpZC4gSW4gdGhlc2UgY2FzZXMsIHdlIGRvbid0IGF0dGVtcHQgdG9cbiAgICAgICAgLy8gZm9ybWF0IHRoZSBhbW91bnQuXG4gICAgICAgIGNvbnN0IG5leHRBbW91bnQgPSBpc05hTihmb3JtYXR0ZWRBbW91bnQpXG4gICAgICAgICAgPyBwcm9wcy52YWx1ZS5hbW91bnRcbiAgICAgICAgICA6IGZvcm1hdHRlZEFtb3VudDtcblxuICAgICAgICAvLyBjaGFuZ2UgY3VycmVuY3kgY29kZVxuICAgICAgICBjb25zdCBmYWtlQ3VycmVuY3lFdmVudCA9IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSksXG4gICAgICAgICAgICB2YWx1ZTogY3VycmVuY3lDb2RlIHx8ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIG9uQ2hhbmdlKGZha2VDdXJyZW5jeUV2ZW50KTtcblxuICAgICAgICAvLyBjaGFuZ2UgYW1vdW50IGlmIG5lY2Vzc2FyeVxuICAgICAgICBpZiAocHJvcHMudmFsdWUuYW1vdW50ICE9PSBuZXh0QW1vdW50KSB7XG4gICAgICAgICAgb25DaGFuZ2Uoe1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgICAgaWQ6IE1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCksXG4gICAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICAgICAgdmFsdWU6IG5leHRBbW91bnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYW1vdW50SW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgaW50bC5sb2NhbGUsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHByb3BzLmlkLFxuICAgICAgcHJvcHMubmFtZSxcbiAgICAgIHByb3BzLnZhbHVlLmFtb3VudCxcbiAgICAgIHByb3BzLnZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICBdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ3VycmVuY3lGb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAob25Gb2N1cylcbiAgICAgIG9uRm9jdXMoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgIG5hbWU6IGdldEN1cnJlbmN5RHJvcGRvd25OYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzKHRydWUpO1xuICB9LCBbb25Gb2N1cywgdG9nZ2xlQ3VycmVuY3lIYXNGb2N1cywgcHJvcHMubmFtZSwgcHJvcHMuaWRdKTtcblxuICBjb25zdCBoYW5kbGVDdXJyZW5jeUJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdG9nZ2xlQ3VycmVuY3lIYXNGb2N1cyhmYWxzZSk7XG4gIH0sIFt0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzXSk7XG5cbiAgY29uc3QgaGFzTm9DdXJyZW5jaWVzID0gcHJvcHMuY3VycmVuY2llcy5sZW5ndGggPT09IDA7XG4gIGNvbnN0IGhhc0ZvY3VzID0gY3VycmVuY3lIYXNGb2N1cyB8fCBhbW91bnRIYXNGb2N1cztcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjdXJyZW5jeVNlbGVjdFN0eWxlcyA9IGNyZWF0ZUN1cnJlbmN5U2VsZWN0U3R5bGVzKFxuICAgIHtcbiAgICAgIGhhc1dhcm5pbmc6IHByb3BzLmhhc1dhcm5pbmcsXG4gICAgICBoYXNFcnJvcjogcHJvcHMuaGFzRXJyb3IsXG4gICAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxuICAgICAgaXNSZWFkT25seTogcHJvcHMuaXNSZWFkT25seSxcbiAgICAgIGhhc0ZvY3VzLFxuICAgICAgbWVudVBvcnRhbFpJbmRleDogcHJvcHMubWVudVBvcnRhbFpJbmRleCxcbiAgICB9LFxuICAgIHRoZW1lXG4gICk7XG4gIGNvbnN0IG9wdGlvbnMgPSBwcm9wcy5jdXJyZW5jaWVzLm1hcCgoY3VycmVuY3lDb2RlKSA9PiAoe1xuICAgIGxhYmVsOiBjdXJyZW5jeUNvZGUsXG4gICAgdmFsdWU6IGN1cnJlbmN5Q29kZSxcbiAgfSkpO1xuXG4gIGNvbnN0IG9wdGlvbiA9ICgoKSA9PiB7XG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbiA9IG9wdGlvbnMuZmluZChcbiAgICAgIChvcHRpb25DYW5kaWRhdGUpID0+IG9wdGlvbkNhbmRpZGF0ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlXG4gICAgKTtcbiAgICBpZiAobWF0Y2hlZE9wdGlvbikgcmV0dXJuIG1hdGNoZWRPcHRpb247XG4gICAgLy8gZW5zdXJlIGFuIG9wdGlvbiBpcyBmb3VuZCwgZXZlbiB3aGVuIHRoZSBjdXJyZW5jaWVzIGRvbid0IGluY2x1ZGVcbiAgICAvLyB0aGUgbW9uZXkgdmFsdWUncyBjdXJyZW5jeUNvZGVcbiAgICBpZiAocHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLnRyaW0oKSAhPT0gJycpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgICAgICB2YWx1ZTogcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgICAgfTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSkoKTtcblxuICBjb25zdCBpZCA9IE1vbmV5SW5wdXQuZ2V0Q3VycmVuY3lEcm9wZG93bklkKHByb3BzLmlkKTtcblxuICBjb25zdCBpc0hpZ2hQcmVjaXNpb24gPVxuICAgICFNb25leUlucHV0LmlzRW1wdHkocHJvcHMudmFsdWUpICYmXG4gICAgTW9uZXlJbnB1dC5pc0hpZ2hQcmVjaXNpb24ocHJvcHMudmFsdWUsIGludGwubG9jYWxlKTtcblxuICBjb25zdCB7IG9uQmx1ciB9ID0gcHJvcHM7XG4gIGNvbnN0IGhhbmRsZUNvbnRhaW5lckJsdXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIGVuc3VyZXMgdGhhdCBib3RoIGZpZWxkcyBhcmUgbWFya2VkIGFzIHRvdWNoZWQgd2hlbiBvbmUgb2YgdGhlbVxuICAgICAgLy8gaXMgYmx1cnJlZFxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2Ygb25CbHVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICFjb250YWluZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KVxuICAgICAgKSB7XG4gICAgICAgIG9uQmx1cih7XG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIG9uQmx1cih7XG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkJsdXIsIHByb3BzLmlkLCBwcm9wcy5uYW1lXVxuICApO1xuXG4gIGNvbnN0IFRvb2x0aXBQb3J0YWwgPSB1c2VDYWxsYmFjayhcbiAgICAocmVtYWluaW5nUHJvcHMpID0+IDxQb3J0YWwgey4uLnJlbWFpbmluZ1Byb3BzfSBpZD17cHJvcHMuaWR9IC8+LFxuICAgIFtwcm9wcy5pZF1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb25zdHJhaW50cy5Ib3Jpem9udGFsIG1heD17cHJvcHMuaG9yaXpvbnRhbENvbnN0cmFpbnR9PlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGB9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwibW9uZXktaW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgb25CbHVyPXtoYW5kbGVDb250YWluZXJCbHVyfVxuICAgICAgPlxuICAgICAgICB7aGFzTm9DdXJyZW5jaWVzID8gKFxuICAgICAgICAgIDxDdXJyZW5jeUxhYmVsXG4gICAgICAgICAgICBpZD17TW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKX1cbiAgICAgICAgICAgIGlzRGlzYWJsZWQ9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbiAmJiBvcHRpb24ubGFiZWx9XG4gICAgICAgICAgPC9DdXJyZW5jeUxhYmVsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIGlucHV0SWQ9e2lkfVxuICAgICAgICAgICAgbmFtZT17Z2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSl9XG4gICAgICAgICAgICB2YWx1ZT17b3B0aW9ufVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgICAgICAgIGlzU2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICBjb21wb25lbnRzPXt7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9kaXNwbGF5LW5hbWVcbiAgICAgICAgICAgICAgU2luZ2xlVmFsdWU6IChpbm5lclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNpbmdsZVZhbHVlIHsuLi5pbm5lclByb3BzfSBpZD17aWR9IC8+XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9kaXNwbGF5LW5hbWVcbiAgICAgICAgICAgICAgSW5wdXQ6IChvd25Qcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICAgICAgICAgICAgPGNvbXBvbmVudHMuSW5wdXQgey4uLm93blByb3BzfSByZWFkT25seT17cHJvcHMuaXNSZWFkT25seX0gLz5cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRHJvcGRvd25JbmRpY2F0b3IsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgIG1lbnVJc09wZW49e3Byb3BzLmlzUmVhZE9ubHkgPyBmYWxzZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgICAgICAgIHN0eWxlcz17Y3VycmVuY3lTZWxlY3RTdHlsZXN9XG4gICAgICAgICAgICBvbkZvY3VzPXtoYW5kbGVDdXJyZW5jeUZvY3VzfVxuICAgICAgICAgICAgbWVudVBvcnRhbFRhcmdldD17cHJvcHMubWVudVBvcnRhbFRhcmdldH1cbiAgICAgICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbD17cHJvcHMubWVudVNob3VsZEJsb2NrU2Nyb2xsfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVDdXJyZW5jeUJsdXJ9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ3VycmVuY3lDaGFuZ2V9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImN1cnJlbmN5LWRyb3Bkb3duXCJcbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICByZWY9e2Ftb3VudElucHV0UmVmfVxuICAgICAgICAgICAgaWQ9e01vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCl9XG4gICAgICAgICAgICBhdXRvQ29tcGxldGU9e3Byb3BzLmF1dG9Db21wbGV0ZX1cbiAgICAgICAgICAgIG5hbWU9e2dldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUFtb3VudEZvY3VzfVxuICAgICAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlLmFtb3VudH1cbiAgICAgICAgICAgIGNzcz17W1xuICAgICAgICAgICAgICBnZXRBbW91bnRJbnB1dFN0eWxlcyh7IC4uLnByb3BzLCBoYXNGb2N1cyB9KSxcbiAgICAgICAgICAgICAgLy8gYWNjb3VudHMgZm9yIHNpemUgb2YgaWNvblxuICAgICAgICAgICAgICBwcm9wcy5oYXNIaWdoUHJlY2lzaW9uQmFkZ2UgJiZcbiAgICAgICAgICAgICAgICBpc0hpZ2hQcmVjaXNpb24gJiZcbiAgICAgICAgICAgICAgICBjc3NgXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAke3ZhcnMuc3BhY2luZ0x9O1xuICAgICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUFtb3VudENoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQW1vdW50Qmx1cn1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgcmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgICBhdXRvRm9jdXM9e3Byb3BzLmlzQXV0b2ZvY3Vzc2VkfVxuICAgICAgICAgICAgey4uLmZpbHRlckRhdGFBdHRyaWJ1dGVzKHByb3BzKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtwcm9wcy5oYXNIaWdoUHJlY2lzaW9uQmFkZ2UgJiYgaXNIaWdoUHJlY2lzaW9uICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHshcHJvcHMuaXNEaXNhYmxlZCAmJiA8ZGl2IGlkPXtnZXRQb3J0YWxJZChwcm9wcy5pZCl9IC8+fVxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgZ2V0SGlnaFByZWNpc2lvbldyYXBwZXJTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgb2ZmPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wLWVuZFwiXG4gICAgICAgICAgICAgICAgICAvLyB3ZSB1c2UgbmVnYXRpdmUgbWFyZ2luIHRvIG1ha2UgdXAgZm9yIHRoZSBwYWRkaW5nIGluIHRoZSBUb29sdGlwIFdyYXBwZXJcbiAgICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHRvb2x0aXAgaXMgZmx1c2ggd2l0aCB0aGUgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICBzdHlsZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogYCR7dmFycy5zcGFjaW5nU30gLSR7dmFycy5zcGFjaW5nWHN9ICR7dmFycy5zcGFjaW5nU30gMGAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5oaWdoUHJlY2lzaW9uKX1cbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgICAgICAgICAgVG9vbHRpcFdyYXBwZXJDb21wb25lbnQ6IFRvb2x0aXBQb3J0YWwsXG4gICAgICAgICAgICAgICAgICAgIFdyYXBwZXJDb21wb25lbnQ6IFRvb2x0aXBXcmFwcGVyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RnJhY3Rpb25EaWdpdHNJY29uXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPXtwcm9wcy5pc0Rpc2FibGVkID8gJ25ldXRyYWw2MCcgOiAnaW5mbyd9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvQ29uc3RyYWludHMuSG9yaXpvbnRhbD5cbiAgKTtcbn07XG5cbk1vbmV5SW5wdXQuZGlzcGxheU5hbWUgPSAnTW9uZXlJbnB1dCc7XG5cbk1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZCA9IGdldEFtb3VudElucHV0TmFtZTtcblxuTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQgPSBnZXRDdXJyZW5jeURyb3Bkb3duTmFtZTtcblxuTW9uZXlJbnB1dC5jb252ZXJ0VG9Nb25leVZhbHVlID0gKHZhbHVlLCBsb2NhbGUpID0+XG4gIGNyZWF0ZU1vbmV5VmFsdWUoXG4gICAgdmFsdWUuY3VycmVuY3lDb2RlLFxuICAgIHR5cGVvZiB2YWx1ZS5hbW91bnQgPT09ICdzdHJpbmcnID8gdmFsdWUuYW1vdW50LnRyaW0oKSA6ICcnLFxuICAgIGxvY2FsZVxuICApO1xuXG5Nb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZSA9IChtb25leVZhbHVlLCBsb2NhbGUpID0+IHtcbiAgaWYgKCFtb25leVZhbHVlKSByZXR1cm4geyBjdXJyZW5jeUNvZGU6ICcnLCBhbW91bnQ6ICcnIH07XG5cbiAgd2FybmluZyhcbiAgICB0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJyxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IEEgbG9jYWxlIG11c3QgYmUgcGFzc2VkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQnXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICB0eXBlb2YgbW9uZXlWYWx1ZSA9PT0gJ29iamVjdCcsXG4gICAgJ01vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlOiBWYWx1ZSBtdXN0IGJlIHBhc3NlZCBhcyBhbiBvYmplY3Qgb3IgYmUgdW5kZWZpbmVkJ1xuICApO1xuXG4gIHdhcm5pbmcoXG4gICAgdHlwZW9mIG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlID09PSAnc3RyaW5nJyxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IFZhbHVlIG11c3QgY29udGFpbiBcImN1cnJlbmN5Q29kZVwiJ1xuICApO1xuXG4gIHdhcm5pbmcoXG4gICAgaGFzKGN1cnJlbmNpZXMsIG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlKSxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IFZhbHVlIG11c3QgdXNlIGtub3duIGN1cnJlbmN5IGNvZGUnXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICAvLyBoaWdoUHJlY2lzaW9uIG9yIGNlbnRQcmVjaXNpb24gdmFsdWVzIG11c3QgYmUgc2V0XG4gICAgdHlwZW9mIG1vbmV5VmFsdWUuY2VudEFtb3VudCA9PT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlb2YgbW9uZXlWYWx1ZS5wcmVjaXNlQW1vdW50ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICB0eXBlb2YgbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicpLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogVmFsdWUgbXVzdCBjb250YWluIFwiYW1vdW50XCInXG4gICk7XG5cbiAgY29uc3QgYW1vdW50ID0gZm9ybWF0QW1vdW50KFxuICAgIGdldEFtb3VudEFzTnVtYmVyRnJvbU1vbmV5VmFsdWUobW9uZXlWYWx1ZSkudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1vbmV5VmFsdWUuZnJhY3Rpb25EaWdpdHMsXG4gICAgfSksXG4gICAgbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgbG9jYWxlXG4gICk7XG5cbiAgcmV0dXJuIHsgYW1vdW50LCBjdXJyZW5jeUNvZGU6IG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlIH07XG59O1xuXG5Nb25leUlucHV0LmlzRW1wdHkgPSAoZm9ybVZhbHVlKSA9PlxuICAhZm9ybVZhbHVlIHx8XG4gIGZvcm1WYWx1ZS5hbW91bnQudHJpbSgpID09PSAnJyB8fFxuICBmb3JtVmFsdWUuY3VycmVuY3lDb2RlLnRyaW0oKSA9PT0gJyc7XG5cbk1vbmV5SW5wdXQuaXNIaWdoUHJlY2lzaW9uID0gKGZvcm1WYWx1ZSwgbG9jYWxlKSA9PiB7XG4gIHdhcm5pbmcoXG4gICAgIU1vbmV5SW5wdXQuaXNFbXB0eShmb3JtVmFsdWUpLFxuICAgICdNb25leVZhbHVlLmlzSGlnaFByZWNpc2lvbiBtYXkgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGVtcHR5IG1vbmV5IHZhbHVlLidcbiAgKTtcbiAgY29uc3QgbW9uZXlWYWx1ZSA9IE1vbmV5SW5wdXQuY29udmVydFRvTW9uZXlWYWx1ZShmb3JtVmFsdWUsIGxvY2FsZSk7XG4gIHJldHVybiBtb25leVZhbHVlICYmIG1vbmV5VmFsdWUudHlwZSA9PT0gJ2hpZ2hQcmVjaXNpb24nO1xufTtcblxuTW9uZXlJbnB1dC5pc1RvdWNoZWQgPSAodG91Y2hlZCkgPT5cbiAgQm9vbGVhbih0b3VjaGVkICYmIHRvdWNoZWQuY3VycmVuY3lDb2RlICYmIHRvdWNoZWQuYW1vdW50KTtcblxuTW9uZXlJbnB1dC5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBVc2VkIGFzIEhUTUwgaWQgcHJvcGVydHkuIEFuIGlkIGlzIGF1dG8tZ2VuZXJhdGVkIHdoZW4gaXQgaXMgbm90IHNwZWNpZmllZC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVXNlZCBhcyBIVE1MIGBhdXRvY29tcGxldGVgIHByb3BlcnR5XG4gICAqL1xuICBhdXRvQ29tcGxldGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVzZWQgdG8gY3JlYXRlIGEgSFRNTCBgbmFtZWAgcHJvcGVydHkgZm9yIHRoZSBhbW91bnQgaW5wdXQgZmllbGQgKGAke25hbWV9LmFtb3VudGApIGFuZCB0aGUgY3VycmVuY3kgZHJvcGRvd24gKGAke25hbWV9LmN1cnJlbmN5Q29kZWApLlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBpbnB1dC4gQ29uc2lzdHMgb2YgdGhlIGN1cnJlbmN5IGNvZGUgYW5kIGFuIGFtb3VudC4gYGFtb3VudGAgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbW91bnQuIEEgZG90IGhhcyB0byBiZSB1c2VkIGFzIHRoZSBkZWNpbWFsIHNlcGFyYXRvci5cbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFtb3VudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGN1cnJlbmN5Q29kZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogTGlzdCBvZiBwb3NzaWJsZSBjdXJyZW5jaWVzLiBXaGVuIG5vdCBwcm92aWRlZCBvciBlbXB0eSwgdGhlIGNvbXBvbmVudCByZW5kZXJzIGEgbGFiZWwgd2l0aCB0aGUgdmFsdWUncyBjdXJyZW5jeSBpbnN0ZWFkIG9mIGEgZHJvcGRvd24uXG4gICAqL1xuICBjdXJyZW5jaWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIGlucHV0XG4gICAqL1xuICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGJsdXJyZWRcbiAgICovXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCBpcyBmb2N1c2VkXG4gICAqL1xuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBpbnB1dCBjYW5ub3QgYmUgbW9kaWZpZWQgKGUuZyBub3QgYXV0aG9yaXplZCwgb3IgY2hhbmdlcyBjdXJyZW50bHkgc2F2aW5nKS5cbiAgICovXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGZpZWxkIGlzIGRpc3BsYXlpbmcgcmVhZC1vbmx5IGNvbnRlbnRcbiAgICovXG4gIGlzUmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRm9jdXMgdGhlIGlucHV0IG9uIGluaXRpYWwgcmVuZGVyXG4gICAqL1xuICBpc0F1dG9mb2N1c3NlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCB0aGUgZXZlbnQgb2YgdGhlIGlucHV0IG9yIGRyb3Bkb3duIHdoZW4gZWl0aGVyIHRoZSBjdXJyZW5jeSBvciB0aGUgYW1vdW50IGhhdmUgY2hhbmdlZC5cbiAgICogPGJyIC8+XG4gICAqIFNpZ25hdHVyZTogYChldmVudCkgPT4gdm9pZGBcbiAgICovXG4gIG9uQ2hhbmdlOiByZXF1aXJlZElmKFByb3BUeXBlcy5mdW5jLCAocHJvcHMpID0+ICFwcm9wcy5pc1JlYWRPbmx5KSxcbiAgLyoqXG4gICAqIERvbSBlbGVtZW50IHRvIHBvcnRhbCB0aGUgY3VycmVuY3kgc2VsZWN0IG1lbnUgdG9cbiAgICovXG4gIG1lbnVQb3J0YWxUYXJnZXQ6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNhZmVIVE1MRWxlbWVudCksXG4gIC8qKlxuICAgKiB6LWluZGV4IHZhbHVlIGZvciB0aGUgY3VycmVuY3kgc2VsZWN0IG1lbnUgcG9ydGFsXG4gICAqL1xuICBtZW51UG9ydGFsWkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogd2hldGhlciB0aGUgbWVudSBzaG91bGQgYmxvY2sgc2Nyb2xsIHdoaWxlIG9wZW5cbiAgICovXG4gIG1lbnVTaG91bGRCbG9ja1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBpbnB1dCBoYXMgZXJyb3JzXG4gICAqL1xuICBoYXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBDb250cm9sIHRvIGluZGljYXRlIG9uIHRoZSBpbnB1dCBpZiB0aGVyZSBhcmUgc2VsZWN0ZWQgdmFsdWVzIHRoYXQgYXJlIHBvdGVudGlhbGx5IGludmFsaWRcbiAgICovXG4gIGhhc1dhcm5pbmc6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogU2hvd3MgaGlnaCBwcmVjaXNpb24gYmFkZ2UgaW4gY2FzZSBjdXJyZW50IHZhbHVlIHVzZXMgaGlnaCBwcmVjaXNpb24uXG4gICAqL1xuICBoYXNIaWdoUHJlY2lzaW9uQmFkZ2U6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSG9yaXpvbnRhbCBzaXplIGxpbWl0IG9mIHRoZSBpbnB1dCBmaWVsZHMuXG4gICAqL1xuICBob3Jpem9udGFsQ29uc3RyYWludDogUHJvcFR5cGVzLm9uZU9mKFtcbiAgICAzLFxuICAgIDQsXG4gICAgNSxcbiAgICA2LFxuICAgIDcsXG4gICAgOCxcbiAgICA5LFxuICAgIDEwLFxuICAgIDExLFxuICAgIDEyLFxuICAgIDEzLFxuICAgIDE0LFxuICAgIDE1LFxuICAgIDE2LFxuICAgICdzY2FsZScsXG4gICAgJ2F1dG8nLFxuICBdKSxcbn07XG5cbk1vbmV5SW5wdXQuZGVmYXVsdFByb3BzID0ge1xuICBjdXJyZW5jaWVzOiBbXSxcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdzY2FsZScsXG4gIG1lbnVQb3J0YWxaSW5kZXg6IDEsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb25leUlucHV0O1xuIl19 */",
|
|
1034
1041
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
1035
1042
|
};
|
|
1036
1043
|
|
|
@@ -1040,6 +1047,7 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
|
1040
1047
|
} : {
|
|
1041
1048
|
name: "1w49f4-MoneyInput",
|
|
1042
1049
|
styles: "font-family:inherit;width:100%;position:relative;display:flex;label:MoneyInput;",
|
|
1050
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vbmV5LWlucHV0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdpQmdCIiwiZmlsZSI6Im1vbmV5LWlucHV0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgcmVxdWlyZWRJZiBmcm9tICdyZWFjdC1yZXF1aXJlZC1pZic7XG5pbXBvcnQgU2VsZWN0LCB7IGNvbXBvbmVudHMgfSBmcm9tICdyZWFjdC1zZWxlY3QnO1xuaW1wb3J0IHsgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgY3NzLCB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgYXMgdmFycyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHtcbiAgd2FybmluZyxcbiAgaXNOdW1iZXJpc2gsXG4gIFNhZmVIVE1MRWxlbWVudCxcbiAgZmlsdGVyRGF0YUF0dHJpYnV0ZXMsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3V0aWxzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3Rvb2x0aXAnO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25JbmRpY2F0b3IsXG4gIGNyZWF0ZVNlbGVjdFN0eWxlcyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc2VsZWN0LXV0aWxzJztcbmltcG9ydCB7IEZyYWN0aW9uRGlnaXRzSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBDb25zdHJhaW50cyBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgeyB1c2VUb2dnbGVTdGF0ZSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2hvb2tzJztcbmltcG9ydCBjdXJyZW5jaWVzIGZyb20gJy4vY3VycmVuY2llcy5qc29uJztcbmltcG9ydCB7XG4gIGdldEhpZ2hQcmVjaXNpb25XcmFwcGVyU3R5bGVzLFxuICBnZXRDdXJyZW5jeUxhYmVsU3R5bGVzLFxuICBnZXRBbW91bnRJbnB1dFN0eWxlcyxcbn0gZnJvbSAnLi9tb25leS1pbnB1dC5zdHlsZXMnO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnO1xuXG5jb25zdCBUb29sdGlwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gO1xuXG5jb25zdCBnZXRQb3J0YWxJZCA9IChpZCkgPT4gYHBvcnRhbC0ke2lkfWA7XG5jb25zdCBnZXRQb3J0YWxOb2RlID0gKGlkKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtnZXRQb3J0YWxJZChpZCl9YCk7XG5cbmNvbnN0IFBvcnRhbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCBkb21Ob2RlID0gZ2V0UG9ydGFsTm9kZShwcm9wcy5pZCk7XG4gIHJldHVybiBSZWFjdERPTS5jcmVhdGVQb3J0YWwocHJvcHMuY2hpbGRyZW4sIGRvbU5vZGUpO1xufTtcblxuY29uc3QgQ3VycmVuY3lMYWJlbCA9IChwcm9wcykgPT4gKFxuICA8bGFiZWwgaHRtbEZvcj17cHJvcHMuaWR9IGNzcz17Z2V0Q3VycmVuY3lMYWJlbFN0eWxlcygpfT5cbiAgICB7cHJvcHMuY2hpbGRyZW59XG4gIDwvbGFiZWw+XG4pO1xuXG5DdXJyZW5jeUxhYmVsLmRpc3BsYXlOYW1lID0gJ0N1cnJlbmN5TGFiZWwnO1xuXG5DdXJyZW5jeUxhYmVsLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbn07XG5cbmNvbnN0IFNpbmdsZVZhbHVlID0gKHsgaWQsIC4uLnByb3BzIH0pID0+IChcbiAgPGNvbXBvbmVudHMuU2luZ2xlVmFsdWUgey4uLnByb3BzfT5cbiAgICA8bGFiZWwgaHRtbEZvcj17aWR9Pntwcm9wcy5jaGlsZHJlbn08L2xhYmVsPlxuICA8L2NvbXBvbmVudHMuU2luZ2xlVmFsdWU+XG4pO1xuXG5TaW5nbGVWYWx1ZS5kaXNwbGF5TmFtZSA9ICdTaW5nbGVWYWx1ZSc7XG5cblNpbmdsZVZhbHVlLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbn07XG5cbi8vIG92ZXJ3cml0ZSBzdHlsZXMgb2YgY3JlYXRlU2VsZWN0U3R5bGVzXG5jb25zdCBjcmVhdGVDdXJyZW5jeVNlbGVjdFN0eWxlcyA9IChcbiAgeyBoYXNXYXJuaW5nLCBoYXNFcnJvciwgaXNEaXNhYmxlZCwgaXNSZWFkT25seSwgaGFzRm9jdXMsIG1lbnVQb3J0YWxaSW5kZXggfSxcbiAgdGhlbWVcbikgPT4ge1xuICBjb25zdCBzZWxlY3RTdHlsZXMgPSBjcmVhdGVTZWxlY3RTdHlsZXMoXG4gICAge1xuICAgICAgaGFzV2FybmluZyxcbiAgICAgIGhhc0Vycm9yLFxuICAgICAgbWVudVBvcnRhbFpJbmRleCxcbiAgICB9LFxuICAgIHRoZW1lXG4gICk7XG4gIHJldHVybiB7XG4gICAgLi4uc2VsZWN0U3R5bGVzLFxuICAgIGNvbnRyb2w6IChiYXNlLCBzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnNlbGVjdFN0eWxlcy5jb250cm9sKGJhc2UsIHN0YXRlKSxcbiAgICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAnMCcsXG4gICAgICBib3JkZXJCb3R0b21SaWdodFJhZGl1czogJzAnLFxuICAgICAgYm9yZGVyUmlnaHQ6ICcwJyxcbiAgICAgIG1pbldpZHRoOiAnNzJweCcsXG4gICAgICBib3JkZXJDb2xvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuIGAke3ZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZH0gIWltcG9ydGFudGA7XG4gICAgICAgIGlmIChoYXNFcnJvcikgcmV0dXJuIHZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5FcnJvcjtcbiAgICAgICAgaWYgKGhhc1dhcm5pbmcpIHJldHVybiB2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuV2FybmluZztcbiAgICAgICAgaWYgKGhhc0ZvY3VzKSByZXR1cm4gdmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkZvY3VzZWQ7XG4gICAgICAgIGlmIChpc1JlYWRPbmx5KVxuICAgICAgICAgIHJldHVybiBgJHt2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuUmVhZG9ubHl9ICFpbXBvcnRhbnRgO1xuICAgICAgICByZXR1cm4gdmFycy5ib3JkZXJDb2xvckZvcklucHV0O1xuICAgICAgfSkoKSxcbiAgICAgIGN1cnNvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybiAnbm90LWFsbG93ZWQnO1xuICAgICAgICBpZiAoaXNSZWFkT25seSkgcmV0dXJuIGBkZWZhdWx0YDtcbiAgICAgICAgcmV0dXJuICdwb2ludGVyJztcbiAgICAgIH0pKCksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICgoKSA9PiB7XG4gICAgICAgIGlmIChpc1JlYWRPbmx5KSByZXR1cm4gdmFycy5iYWNrZ3JvdW5kQ29sb3JGb3JJbnB1dDtcbiAgICAgICAgcmV0dXJuIGJhc2UuYmFja2dyb3VuZENvbG9yO1xuICAgICAgfSkoKSxcbiAgICB9KSxcbiAgICBzaW5nbGVWYWx1ZTogKGJhc2UpID0+ICh7XG4gICAgICAuLi5iYXNlLFxuICAgICAgbWFyZ2luTGVmdDogMCxcbiAgICAgIG1heFdpZHRoOiAnaW5pdGlhbCcsXG4gICAgICBjb2xvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlbkRpc2FibGVkO1xuICAgICAgICBpZiAoaGFzRXJyb3IpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlbkVycm9yO1xuICAgICAgICBpZiAoaGFzV2FybmluZykgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuV2FybmluZztcbiAgICAgICAgaWYgKGlzUmVhZE9ubHkpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlblJlYWRvbmx5O1xuICAgICAgICByZXR1cm4gYmFzZS5jb2xvcjtcbiAgICAgIH0pKCksXG4gICAgfSksXG4gICAgZHJvcGRvd25JbmRpY2F0b3I6ICgpID0+ICh7XG4gICAgICBmaWxsOiBpc1JlYWRPbmx5ID8gdmFycy5mb250Q29sb3JGb3JJbnB1dFdoZW5SZWFkb25seSA6ICcnLFxuICAgIH0pLFxuICB9O1xufTtcblxuLy8gVGhlIE1vbmV5SW5wdXQgY29tcG9uZW50IGFsd2F5cyBvcGVyYXRlcyBvbiBhIHZhbHVlIGNvbnNpc3Rpbmcgb2Y6XG4vLyAgIHsgYW1vdW50OiBTdHJpbmcsIGN1cnJlbmN5Q29kZTogU3RyaW5nIH1cbi8vXG4vLyBUaGUgYW1vdW50IG1heSBvbmx5IHVzZSBhIGRvdCBhcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4vLyBUaGUgY3VycmVuY3lDb2RlIG11c3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBBUEkuXG4vL1xuLy8gVGhlIE1vbmV5SW5wdXQgZG9lcyBub3QgZG8gYW55IHZhbGlkYXRpb24gb24gaXRzIG93bi4gSXQgb25seSBzZXJ2ZXMgYXMgYSB3YXlcbi8vIHRvIGdldCB0aGUgYW1vdW50IGFuZCBjdXJyZW5jeUNvZGUgaW5wdXQgZnJvbSB0aGUgdXNlci4gVmFsaWRhdGlvbiBpcyBhbHdheXNcbi8vIHVwIHRvIHRoZSBwYXJlbnQuXG4vL1xuLy8gVGhlIENUUCBBUEkgc3VwcG9ydHMgcHJpY2VzIHR3byB0eXBlcyBvZiBwcmljZXM6IGNlbnRQcmVjaXNpb24gYW5kXG4vLyBoaWdoUHJlY2lzaW9uLiBUaGUgTW9uZXlJbnB1dCBpdHNlbGYgZG9lcyBub3Qga25vdyBhYm91dCB0aGVzZS4gSG93ZXZlcixcbi8vIGl0IGhhcyB0d28gc3RhdGljIG1ldGhvZHMgZGVmaW5lZCAoY29udmVydFRvTW9uZXlWYWx1ZSBhbmQgcGFyc2VNb25leVZhbHVlKSxcbi8vIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBNb25leUlucHV0IHZhbHVlIGFuZCB0aGUgTW9uZXlWYWx1ZVxuLy8gc3VwcG9ydGVkIGJ5IHRoZSBBUEkuXG4vLyBTb21lIHBsYWNlcyBpbiB0aGUgQVBJIGRvIG5vdCBzdXBwb3J0IGhpZ2hQcmVjaXNpb24gcHJpY2VzLCBidXQgdGhlXG4vLyBjb252ZXJ0VG9Nb25leVZhbHVlIHdpbGwgYWx3YXlzIHJldHVybiBlaXRoZXIgYSBjZW50UHJlY2lzaW9uIG9yIGFcbi8vIGhpZ2hQcmVjaXNpb24gcHJpY2UuIEl0J3MgdXAgdGhlIE1vbmV5SW5wdXQncyBwYXJlbnQgdG8gc2hvdyBhIHZhbGlkYXRpb25cbi8vIGVycm9yIGluIGNhc2UgYSBoaWdoUHJlY2lzaW9uIHByaWNlIGlzIHVzZWQuXG4vL1xuLy8gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFzIHRvIGhhdmUgaGlnaFByZWNpc2lvbiB3aGVuIHRoZSBudW1iZXIgb2Ygc3VwcGxpZWRcbi8vIGZyYWN0aW9uIGRpZ2l0cyBleGNlZWQgdGhlIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdGhlIGN1cnJlbmN5IHVzZXMuIEZvclxuLy8gZXhhbXBsZSwgNDIuMDAg4oKsIGlzIGFsd2F5cyBhIGNlbnRQcmVjaXNpb24gcHJpY2UsIHdoaWxlIDQyLjAwMSDigqwgaXMgYWx3YXlzIGFcbi8vIGhpZ2hQcmVjaXNpb24gcHJpY2UuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYWUgNDIuMDAg4oKsIGFzIGEgaGlnaFByZWNpc2lvblxuLy8gcHJpY2UuXG4vL1xuLy8gVGhlIGZpcnN0IHRpbWUgdGhlIGNvbXBvbmVudCByZW5kZXJzLCB3ZSB3YW50IHRvIHRyeSB0byBzaG93IHRoZSBjZW50QW1vdW50XG4vLyBhcyBhIGZvcm1hdHRlZCBudW1iZXIuIFRvIGFjaGlldmUgdGhpcywgdGhlIHBhcnNlTW9uZXlWYWx1ZSBmdW5jdGlvbiBjYW5cbi8vIGJlIHVzZWQgdG8gdHVybiB0aGUgQVBJIHZhbHVlIGludG8gYSB2YWx1ZSB0aGUgTW9uZXlJbnB1dCB1bmRlcnN0YW5kcy5cbi8vIER1cmluZyB0aGlzIHRyYW5zZm9ybWF0aW9uLCB0aGUgbW9uZXkgdmFsdWUgd2lsbCBnZXQgZm9ybWF0dGVkIGludG8gXCJhbW91bnRcIi5cbi8vXG4vLyBXaGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZhbHVlLCB3ZSBkb24ndCB3YW50IHRvIGZvcm1hdCBhZ2Fpbi4gV2Ugb25seSBmb3JtYXRcbi8vIGluIGNhc2UgdGhlIHVzZXIgYmx1cnMgdGhlIGZpZWxkLiBUaGlzIGF2b2lkcyBtYW55IGVkZ2UgY2FzZXMgd2hlcmUgdGhlXG4vLyBmb3JtYXR0aW5nIHdvdWxkIG1lc3Mgd2l0aCB0aGUgdXNlcidzIGlucHV0LlxuLy9cbi8vXG4vLyBBIGZ1bGwgZXhhbXBsZSBvZiBhbiBNb25leVZhbHVlIHdpdGggY2VudFByZWNpc2lvbiB3b3VsZCBiZVxuLy8ge1xuLy8gICBcInR5cGVcIjogXCJjZW50UHJlY2lzaW9uXCIsXG4vLyAgIFwiY3VycmVuY3lDb2RlXCI6IFwiRVVSXCIsXG4vLyAgIFwiY2VudEFtb3VudFwiOiA0MjAwLFxuLy8gICBcImZyYWN0aW9uRGlnaXRzXCI6IDJcbi8vIH1cbi8vIHdoaWNoIGVxdWFscyA0Mi4wMCDigqxcbi8vXG4vLyBBIGZ1bGwgZXhhbXBsZSBvZiBhbiBNb25leVZhbHVlIHdpdGggaGlnaFByZWNpc2lvbiB3b3VsZCBiZVxuLy8ge1xuLy8gIFwidHlwZVwiOiBcImhpZ2hQcmVjaXNpb25cIixcbi8vICBcImN1cnJlbmN5Q29kZVwiOiBcIkVVUlwiLFxuLy8gIFwiY2VudEFtb3VudFwiOiAxLFxuLy8gIFwicHJlY2lzZUFtb3VudFwiOiAxMjM0NTYsXG4vLyAgXCJmcmFjdGlvbkRpZ2l0c1wiOiA3XG4vLyB9XG4vLyB3aGljaCBlcXVhbHMgMC4wMTIzNDU2IOKCrFxuXG4vLyBQYXJzaW5nXG4vLyBTaW5jZSBtb3N0IHVzZXJzIGFyZSBub3QgY2FyZWZ1bCBhYm91dCBob3cgdGhleSBlbnRlciB2YWx1ZXMsIHdlIHdpbGwgcGFyc2Vcbi8vIGJvdGggYC5gIGFuZCBgLGAgYXMgZGVjaW1hbCBzZXBhcmF0b3JzLlxuLy8gV2hlbiBhIHZhbHVlIGlzIGAxLjAwMCwwMGAgd2UgcGFyc2UgaXQgYXMgYDEwMDBgLlxuLy8gV2hlbiBhIHZhbHVlIGlzIGAxLDAwMC4wMGAgd2UgYWxzbyBwYXJzZSBpdCBhcyBgMTAwMGAuXG4vL1xuLy8gVGhpcyBtZWFucyB0aGUgaGlnaGVzdCBhbW91bnQgYWx3YXlzIHdpbnMuIFdlIGRvIHRoaXMgYnkgY29tcGFyaW5nIHRoZSBsYXN0XG4vLyBwb3NpdGlvbiBvZiBgLmAgYW5kIGAsYC4gV2hhdGV2ZXIgb2NjdXJzIGxhdGVyIGlzIHVzZWQgYXMgdGhlIGRlY2ltYWxcbi8vIHNlcGFyYXRvci5cbmV4cG9ydCBjb25zdCBwYXJzZVJhd0Ftb3VudFRvTnVtYmVyID0gKHJhd0Ftb3VudCwgbG9jYWxlKSA9PiB7XG4gIGxldCBmcmFjdGlvbnNTZXBhcmF0b3I7XG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIGZyYWN0aW9uc1NlcGFyYXRvciA9ICgyLjUpIC8vIHdlIG5lZWQgYW55IG51bWJlciB3aXRoIGZyYWN0aW9ucywgc28gdGhhdCB3ZSBrbm93IHdoYXQgaXMgdGhlIGZyYWN0aW9uXG4gICAgICAudG9Mb2NhbGVTdHJpbmcobG9jYWxlKSAvLyBcInN5bWJvbFwiIGZvciB0aGUgcHJvdmlkZWQgbG9jYWxlXG4gICAgICAucmVwbGFjZSgvXFxkL2csICcnKTsgLy8gdGhlbiB3ZSByZW1vdmUgdGhlIG51bWJlcnMgYW5kIGtlZXAgdGhlIFwic3ltYm9sXCJcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0RG90ID0gU3RyaW5nKHJhd0Ftb3VudCkubGFzdEluZGV4T2YoJy4nKTtcbiAgICBjb25zdCBsYXN0Q29tbWEgPSBTdHJpbmcocmF3QW1vdW50KS5sYXN0SW5kZXhPZignLCcpO1xuICAgIGZyYWN0aW9uc1NlcGFyYXRvciA9IGxhc3RDb21tYSA+IGxhc3REb3QgPyAnLCcgOiAnLic7XG4gIH1cblxuICBmcmFjdGlvbnNTZXBhcmF0b3IgPSBmcmFjdGlvbnNTZXBhcmF0b3IgPT09ICcuJyA/ICdcXFxcLicgOiBmcmFjdGlvbnNTZXBhcmF0b3I7IC8vIGhlcmUgd2UgZXNjYXBlIHRoZSAnLicgdG8gdXNlIGl0IGFzIHJlZ2V4XG4gIC8vIFRoZSByYXcgYW1vdW50IHdpdGggb25seSBvbmUgc3BhcmF0b3JcbiAgY29uc3Qgbm9ybWFsaXplZEFtb3VudCA9IFN0cmluZyhyYXdBbW91bnQpXG4gICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgW14wLTkke2ZyYWN0aW9uc1NlcGFyYXRvcn1dYCwgJ2cnKSwgJycpIC8vIHdlIGp1c3Qga2VlcCB0aGUgbnVtYmVycyBhbmQgdGhlIGZyYWN0aW9uIHN5bWJvbFxuICAgIC5yZXBsYWNlKGZyYWN0aW9uc1NlcGFyYXRvciwgJy4nKTsgLy8gdGhlbiB3ZSBjaGFuZ2Ugd2hhdGV2ZXIgYGZyYWN0aW9uc1NlcGFyYXRvcmAgd2FzIHRvIGAuYCBzbyB3ZSBjYW4gcGFyc2UgaXQgYXMgZmxvYXRcblxuICByZXR1cm4gcGFyc2VGbG9hdChub3JtYWxpemVkQW1vdW50LCAxMCk7XG59O1xuXG4vLyBUdXJucyB0aGUgdXNlciBpbnB1dCBpbnRvIGEgdmFsdWUgdGhlIE1vbmV5SW5wdXQgY2FuIHBhc3MgdXAgdGhyb3VnaCBvbkNoYW5nZVxuLy8gSW4gY2FzZSB0aGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyBjb250YWluZWQgaW4gXCJhbW91bnRcIiBleGNlZWRzIHRoZVxuLy8gbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0aGUgY3VycmVuY3kgdXNlcywgaXQgd2lsbCBlbWl0IGEgcHJpY2Ugb2Zcbi8vIHR5cGUgXCJoaWdoUHJlY2lzaW9uXCIgaW5zdGVhZCBvZiB0aGUgcmVndWxhciBcImNlbnRQcmVjaXNpb25cIi5cbi8vIEl0IHdpbGwgcmV0dXJuIFwibnVsbFwiIGluIGNhc2UgYW4gaW52YWxpZCB2YWx1ZSBpcyBlbnRlcmVkLlxuLy8gVGhlIHZhbHVlIGlzIGludmFsaWQgd2hlblxuLy8gIC0gbm8gYW1vdW50IHdhcyBlbnRlcmVkXG4vLyAgLSBhbiBpbnZhbGlkIGFtb3VudCB3YXMgZW50ZXJlZFxuLy8gIC0gbm8gY3VycmVuY3kgd2FzIHNlbGVjdGVkXG4vL1xuLy8gVGhpcyBmdW5jdGlvbiBleHBlY3RzIHRoZSBcImFtb3VudFwiIHRvIGJlIGEgdHJpbW1lZCB2YWx1ZS5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb25leVZhbHVlID0gKGN1cnJlbmN5Q29kZSwgcmF3QW1vdW50LCBsb2NhbGUpID0+IHtcbiAgaWYgKCFjdXJyZW5jeUNvZGUpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGN1cnJlbmN5ID0gY3VycmVuY2llc1tjdXJyZW5jeUNvZGVdO1xuICBpZiAoIWN1cnJlbmN5KSByZXR1cm4gbnVsbDtcblxuICBpZiAocmF3QW1vdW50Lmxlbmd0aCA9PT0gMCB8fCAhaXNOdW1iZXJpc2gocmF3QW1vdW50KSkgcmV0dXJuIG51bGw7XG5cbiAgd2FybmluZyhcbiAgICBsb2NhbGUgfHwgY3VycmVuY3kuZnJhY3Rpb25EaWdpdHMgIT09IDAsXG4gICAgYEEgbG9jYWxlIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBjdXJyZW5jeSBoYXMgbm8gZnJhY3Rpb24gZGlnaXRzICgke2N1cnJlbmN5Q29kZX0pYFxuICApO1xuICBjb25zdCBhbW91bnRBc051bWJlciA9IHBhcnNlUmF3QW1vdW50VG9OdW1iZXIocmF3QW1vdW50LCBsb2NhbGUpO1xuICBpZiAoaXNOYU4oYW1vdW50QXNOdW1iZXIpKSByZXR1cm4gbnVsbDtcblxuICAvLyBUaGUgY2VudCBhbW91bnQgaXMgcm91bmRlZCB0byB0aGUgY3VycmVuY2llJ3MgZGVmYXVsdCBudW1iZXJcbiAgLy8gb2YgZnJhY3Rpb24gZGlnaXRzIGZvciBwcmljZXMgd2l0aCBoaWdoIHByZWNpc2lvbi5cbiAgLy9cbiAgLy8gQWRkaXRpb25hbGx5LCBKYXZhU2NyaXB0IGlzIHNvbWV0aW1lcyBpbmNvcnJlY3Qgd2hlbiBtdWx0aXBseWluZyBmbG9hdHMsXG4gIC8vICAgZS5nLiAyLjQ5ICogMTAwIC0+IDI0OS4wMDAwMDAwMDAwMDAwM1xuICAvLyBXaGlsZSBpbmFjY3VyYWN5IGZyb20gbXVsdGlwbHlpbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpcyBhXG4gIC8vIGdlbmVyYWwgcHJvYmxlbSBpbiBKUywgd2UgY2FuIGF2b2lkIGl0IGJ5IGN1dHRpbmcgb2ZmIGFsbFxuICAvLyBkZWNpbWFscy4gVGhpcyBpcyBwb3NzaWJsZSBzaW5jZSBjZW50cyBpcyB0aGUgYmFzZSB1bml0LCBzbyB3ZVxuICAvLyBvcGVyYXRlIG9uIGludGVnZXJzIGFueXdheXNcbiAgLy8gQWxzbyB3ZSBzaG91bGQgdGhlIHJvdW5kIHRoZSB2YWx1ZSB0byBlbnN1cmUgdGhhdCB3ZSBjb21lIGNsb3NlXG4gIC8vIHRvIHRoZSBuZWFyZXN0IGRlY2ltYWwgdmFsdWVcbiAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vY29tbWVyY2V0b29scy9tZXJjaGFudC1jZW50ZXItZnJvbnRlbmQvcHVsbC83NzBcbiAgY29uc3QgY2VudEFtb3VudCA9IE1hdGgudHJ1bmMoXG4gICAgTWF0aC5yb3VuZChhbW91bnRBc051bWJlciAqIDEwICoqIGN1cnJlbmN5LmZyYWN0aW9uRGlnaXRzKVxuICApO1xuXG4gIGNvbnN0IGZyYWN0aW9uRGlnaXRzT2ZBbW91bnQgPVxuICAgIC8vIFRoZSBjb252ZXJzaW9uIHRvIGEgc3RyaW5nIHdpbGwgYWx3YXlzIHVzZSBhIGRvdCBhcyB0aGUgc2VwYXJhdG9yLlxuICAgIC8vIFRoYXQgbWVhbnMgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgYSBjb21tYS5cbiAgICBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLmluZGV4T2YoJy4nKSA9PT0gLTFcbiAgICAgID8gMFxuICAgICAgOiBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLmxlbmd0aCAtIFN0cmluZyhhbW91bnRBc051bWJlcikuaW5kZXhPZignLicpIC0gMTtcblxuICBpZiAoZnJhY3Rpb25EaWdpdHNPZkFtb3VudCA+IGN1cnJlbmN5LmZyYWN0aW9uRGlnaXRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdoaWdoUHJlY2lzaW9uJyxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGNlbnRBbW91bnQsXG4gICAgICBwcmVjaXNlQW1vdW50OiBwYXJzZUludChcbiAgICAgICAgLy8gSGVyZSB3ZSBuZWVkIHRvIGNvbnZlcnQgIGEgbnVtYmVyIGxpa2UgOC4wNjY2NTIgdG8gaXRzIGNlbnRhbW91bnRcbiAgICAgICAgLy8gV2UgY291bGQgZG8gdGhhdCBieSBtdWx0aXBseWluZyBpdCB3aXRoIDEwICoqIG51bWJlci1vZi1mcmFjdGlvbi1kaWdpdHNcbiAgICAgICAgLy8gYnV0IHRoZW4gd2UnbGwgcnVuIGludG8gcHJvYmxlbXMgd2l0aCBKYXZhU2NyaXB0J3MgZmxvYXRpbmcgcG9pbnRcbiAgICAgICAgLy8gbnVtYmVyIHByZWNpc2lvbiBhbmQgZW5kIHVwIHdpdGggODA2NjY1MS45OTk5OTk5LCBhbmQgdGhlbiBwYXJzZUludFxuICAgICAgICAvLyBjdXRzIG9mZiB0aGUgcmVtYWluZGVyLlxuICAgICAgICAvLyBTbyBpbnN0ZWFkIG9mIHVzaW5nIG1hdGhzIHRvIGNvbnZlcnQgdGhlIG51bWJlciwgd2UganVzdCByZXBsYWNlXG4gICAgICAgIC8vIHRoZSBkb3QgaW5zaWRlIHRoZSBudW1iZXIgd2hpY2ggZG9lcyB0aGUgc2FtZSB0aGluZy5cbiAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byByZXBsYWNlIFwiLFwiIGFzIHdlbGwsIGFzIG51bWJlcnMgYWx3YXlzIHVzIGEgZG90XG4gICAgICAgIC8vIHdoZW4gY29udmVydGVkIHVzaW5nIFN0cmluZygpLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGUgbWF0aGVtYXRpY2FsIHdheTogYW1vdW50QXNOdW1iZXIgKiAxMCAqKiBmcmFjdGlvbkRpZ2l0c09mQW1vdW50LFxuICAgICAgICBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLnJlcGxhY2UoJy4nLCAnJyksXG4gICAgICAgIDEwXG4gICAgICApLFxuICAgICAgZnJhY3Rpb25EaWdpdHM6IGZyYWN0aW9uRGlnaXRzT2ZBbW91bnQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2NlbnRQcmVjaXNpb24nLFxuICAgIGN1cnJlbmN5Q29kZSxcbiAgICBjZW50QW1vdW50LFxuICAgIGZyYWN0aW9uRGlnaXRzOiBjdXJyZW5jeS5mcmFjdGlvbkRpZ2l0cyxcbiAgfTtcbn07XG5cbmNvbnN0IGdldEFtb3VudEFzTnVtYmVyRnJvbU1vbmV5VmFsdWUgPSAobW9uZXlWYWx1ZSkgPT5cbiAgbW9uZXlWYWx1ZS50eXBlID09PSAnaGlnaFByZWNpc2lvbidcbiAgICA/IG1vbmV5VmFsdWUucHJlY2lzZUFtb3VudCAvIDEwICoqIG1vbmV5VmFsdWUuZnJhY3Rpb25EaWdpdHNcbiAgICA6IG1vbmV5VmFsdWUuY2VudEFtb3VudCAvXG4gICAgICAxMCAqKiBjdXJyZW5jaWVzW21vbmV5VmFsdWUuY3VycmVuY3lDb2RlXS5mcmFjdGlvbkRpZ2l0cztcblxuLy8gZ2V0cyBjYWxsZWQgd2l0aCBhIHN0cmluZyBhbmQgc2hvdWxkIHJldHVybiBhIGZvcm1hdHRlZCBzdHJpbmdcbmNvbnN0IGZvcm1hdEFtb3VudCA9IChyYXdBbW91bnQsIGN1cnJlbmN5Q29kZSwgbG9jYWxlKSA9PiB7XG4gIC8vIGZhbGxiYWNrIGluIGNhc2UgdGhlIHVzZXIgZGlkbid0IGVudGVyIGFuIGFtb3VudCB5ZXQgKG9yIGl0J3MgaW52YWxpZClcbiAgY29uc3QgbW9uZXlWYWx1ZSA9IGNyZWF0ZU1vbmV5VmFsdWUoY3VycmVuY3lDb2RlLCByYXdBbW91bnQsIGxvY2FsZSkgfHwge1xuICAgIGN1cnJlbmN5Q29kZSxcbiAgICBjZW50QW1vdW50OiBOYU4sXG4gIH07XG5cbiAgY29uc3QgYW1vdW50ID0gZ2V0QW1vdW50QXNOdW1iZXJGcm9tTW9uZXlWYWx1ZShtb25leVZhbHVlKTtcblxuICBjb25zdCBmcmFjdGlvbkRpZ2l0cyA9IG1vbmV5VmFsdWUucHJlY2lzZUFtb3VudFxuICAgID8gbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0c1xuICAgIDogY3VycmVuY2llc1ttb25leVZhbHVlLmN1cnJlbmN5Q29kZV0uZnJhY3Rpb25EaWdpdHM7XG5cbiAgcmV0dXJuIGlzTmFOKGFtb3VudClcbiAgICA/ICcnXG4gICAgOiBhbW91bnQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHMgfSk7XG59O1xuXG5jb25zdCBnZXRBbW91bnRJbnB1dE5hbWUgPSAobmFtZSkgPT4gKG5hbWUgPyBgJHtuYW1lfS5hbW91bnRgIDogdW5kZWZpbmVkKTtcbmNvbnN0IGdldEN1cnJlbmN5RHJvcGRvd25OYW1lID0gKG5hbWUpID0+XG4gIG5hbWUgPyBgJHtuYW1lfS5jdXJyZW5jeUNvZGVgIDogdW5kZWZpbmVkO1xuXG5jb25zdCBNb25leUlucHV0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gIGNvbnN0IFtjdXJyZW5jeUhhc0ZvY3VzLCB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzXSA9IHVzZVRvZ2dsZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Ftb3VudEhhc0ZvY3VzLCB0b2dnbGVBbW91bnRIYXNGb2N1c10gPSB1c2VUb2dnbGVTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGFtb3VudElucHV0UmVmID0gdXNlUmVmKCk7XG5cbiAgY29uc3QgeyBvbkZvY3VzIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQW1vdW50Rm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG9uRm9jdXMpXG4gICAgICBvbkZvY3VzKHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgaWQ6IE1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCksXG4gICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgdG9nZ2xlQW1vdW50SGFzRm9jdXModHJ1ZSk7XG4gIH0sIFt0b2dnbGVBbW91bnRIYXNGb2N1cywgb25Gb2N1cywgcHJvcHMuaWQsIHByb3BzLm5hbWVdKTtcblxuICBjb25zdCB7IG9uQ2hhbmdlIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQW1vdW50Qmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBhbW91bnQgPSBwcm9wcy52YWx1ZS5hbW91bnQudHJpbSgpO1xuICAgIHRvZ2dsZUFtb3VudEhhc0ZvY3VzKGZhbHNlKTtcbiAgICAvLyBTa2lwIGZvcm1hdHRpbmcgZm9yIGVtcHR5IHZhbHVlIG9yIHdoZW4gdGhlIGlucHV0IGlzIHVzZWQgd2l0aCBhblxuICAgIC8vIHVua25vd24gY3VycmVuY3kuXG4gICAgaWYgKGFtb3VudC5sZW5ndGggPiAwICYmIGN1cnJlbmNpZXNbcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlXSkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkQW1vdW50ID0gZm9ybWF0QW1vdW50KFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIHByb3BzLnZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgaW50bC5sb2NhbGVcbiAgICAgICk7XG5cbiAgICAgIC8vIFdoZW4gdGhlIHVzZXIgZW50ZXJlZCBhIHZhbHVlIHdpdGggY2VudFByZWNpc2lvbiwgd2UgY2FuIGZvcm1hdFxuICAgICAgLy8gdGhlIHJlc3VsdGluZyB2YWx1ZSB0byB0aGF0IGN1cnJlbmN5LCBlLmcuIDIwLjEgdG8gMjAuMTBcbiAgICAgIGlmIChTdHJpbmcoZm9ybWF0dGVkQW1vdW50KSAhPT0gYW1vdW50KSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gZW1pdCBhbiBldmVudCB3aXRoIHRoZSBub3cgZm9ybWF0dGVkIHZhbHVlXG4gICAgICAgIGNvbnN0IGZha2VFdmVudCA9IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZWRBbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgb25DaGFuZ2UoZmFrZUV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpbnRsLmxvY2FsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBwcm9wcy5pZCxcbiAgICBwcm9wcy5uYW1lLFxuICAgIHByb3BzLnZhbHVlLmFtb3VudCxcbiAgICBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgdG9nZ2xlQW1vdW50SGFzRm9jdXMsXG4gIF0pO1xuXG4gIGNvbnN0IGhhbmRsZUFtb3VudENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgaWYgKGlzTnVtYmVyaXNoKGV2ZW50LnRhcmdldC52YWx1ZSkpIHtcbiAgICAgICAgb25DaGFuZ2Uoe1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgICAgdmFsdWU6IGV2ZW50LnRhcmdldC52YWx1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgcHJvcHMuaWQsIHByb3BzLm5hbWVdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ3VycmVuY3lDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW5jeUNvZGUgPSBvcHRpb24udmFsdWU7XG4gICAgICBpZiAocHJvcHMudmFsdWUuY3VycmVuY3lDb2RlICE9PSBjdXJyZW5jeUNvZGUpIHtcbiAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBjaGFuZ2VzIGZyb20gYSBjdXJyZW5jeSB3aXRoIDMgZnJhY3Rpb24gZGlnaXRzIHRvXG4gICAgICAgIC8vIGEgY3VycmVuY3kgd2l0aCAyIGZyYWN0aW9uIGRpZ2l0cywgYW5kIHdoZW4gdGhlIGlucHV0IHZhbHVlIHdhc1xuICAgICAgICAvLyBcIjkuMDAwXCIgKDkpLCB0aGVuIGl0IHNob3VsZCBjaGFuZ2UgdG8gXCI5LjAwXCIgdG8gcmVmbGVjdCB0aGUgbmV3XG4gICAgICAgIC8vIGN1cnJlbmN5J3MgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cy5cbiAgICAgICAgLy8gV2hlbiB0aGUgY3VycmVuY3kgd2FzIGEgaGlnaC1wcmVjaXNpb24gcHJpY2UsIHRoZW4gbm8gZGlnaXRzIHNob3VsZFxuICAgICAgICAvLyBiZSBsb3N0XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEFtb3VudCA9IGZvcm1hdEFtb3VudChcbiAgICAgICAgICBwcm9wcy52YWx1ZS5hbW91bnQudHJpbSgpLFxuICAgICAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgICAgICBpbnRsLmxvY2FsZVxuICAgICAgICApO1xuICAgICAgICAvLyBUaGUgdXNlciBjb3VsZCBiZSBjaGFuZ2luZyB0aGUgY3VycmVuY3kgYmVmb3JlIGVudGVyaW5nIGFueSBhbW91bnQsXG4gICAgICAgIC8vIG9yIHdoaWxlIHRoZSBhbW91bnQgaXMgaW52YWxpZC4gSW4gdGhlc2UgY2FzZXMsIHdlIGRvbid0IGF0dGVtcHQgdG9cbiAgICAgICAgLy8gZm9ybWF0IHRoZSBhbW91bnQuXG4gICAgICAgIGNvbnN0IG5leHRBbW91bnQgPSBpc05hTihmb3JtYXR0ZWRBbW91bnQpXG4gICAgICAgICAgPyBwcm9wcy52YWx1ZS5hbW91bnRcbiAgICAgICAgICA6IGZvcm1hdHRlZEFtb3VudDtcblxuICAgICAgICAvLyBjaGFuZ2UgY3VycmVuY3kgY29kZVxuICAgICAgICBjb25zdCBmYWtlQ3VycmVuY3lFdmVudCA9IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSksXG4gICAgICAgICAgICB2YWx1ZTogY3VycmVuY3lDb2RlIHx8ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIG9uQ2hhbmdlKGZha2VDdXJyZW5jeUV2ZW50KTtcblxuICAgICAgICAvLyBjaGFuZ2UgYW1vdW50IGlmIG5lY2Vzc2FyeVxuICAgICAgICBpZiAocHJvcHMudmFsdWUuYW1vdW50ICE9PSBuZXh0QW1vdW50KSB7XG4gICAgICAgICAgb25DaGFuZ2Uoe1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgICAgaWQ6IE1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCksXG4gICAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICAgICAgdmFsdWU6IG5leHRBbW91bnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYW1vdW50SW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgaW50bC5sb2NhbGUsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHByb3BzLmlkLFxuICAgICAgcHJvcHMubmFtZSxcbiAgICAgIHByb3BzLnZhbHVlLmFtb3VudCxcbiAgICAgIHByb3BzLnZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICBdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ3VycmVuY3lGb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAob25Gb2N1cylcbiAgICAgIG9uRm9jdXMoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgIG5hbWU6IGdldEN1cnJlbmN5RHJvcGRvd25OYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzKHRydWUpO1xuICB9LCBbb25Gb2N1cywgdG9nZ2xlQ3VycmVuY3lIYXNGb2N1cywgcHJvcHMubmFtZSwgcHJvcHMuaWRdKTtcblxuICBjb25zdCBoYW5kbGVDdXJyZW5jeUJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdG9nZ2xlQ3VycmVuY3lIYXNGb2N1cyhmYWxzZSk7XG4gIH0sIFt0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzXSk7XG5cbiAgY29uc3QgaGFzTm9DdXJyZW5jaWVzID0gcHJvcHMuY3VycmVuY2llcy5sZW5ndGggPT09IDA7XG4gIGNvbnN0IGhhc0ZvY3VzID0gY3VycmVuY3lIYXNGb2N1cyB8fCBhbW91bnRIYXNGb2N1cztcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjdXJyZW5jeVNlbGVjdFN0eWxlcyA9IGNyZWF0ZUN1cnJlbmN5U2VsZWN0U3R5bGVzKFxuICAgIHtcbiAgICAgIGhhc1dhcm5pbmc6IHByb3BzLmhhc1dhcm5pbmcsXG4gICAgICBoYXNFcnJvcjogcHJvcHMuaGFzRXJyb3IsXG4gICAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxuICAgICAgaXNSZWFkT25seTogcHJvcHMuaXNSZWFkT25seSxcbiAgICAgIGhhc0ZvY3VzLFxuICAgICAgbWVudVBvcnRhbFpJbmRleDogcHJvcHMubWVudVBvcnRhbFpJbmRleCxcbiAgICB9LFxuICAgIHRoZW1lXG4gICk7XG4gIGNvbnN0IG9wdGlvbnMgPSBwcm9wcy5jdXJyZW5jaWVzLm1hcCgoY3VycmVuY3lDb2RlKSA9PiAoe1xuICAgIGxhYmVsOiBjdXJyZW5jeUNvZGUsXG4gICAgdmFsdWU6IGN1cnJlbmN5Q29kZSxcbiAgfSkpO1xuXG4gIGNvbnN0IG9wdGlvbiA9ICgoKSA9PiB7XG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbiA9IG9wdGlvbnMuZmluZChcbiAgICAgIChvcHRpb25DYW5kaWRhdGUpID0+IG9wdGlvbkNhbmRpZGF0ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlXG4gICAgKTtcbiAgICBpZiAobWF0Y2hlZE9wdGlvbikgcmV0dXJuIG1hdGNoZWRPcHRpb247XG4gICAgLy8gZW5zdXJlIGFuIG9wdGlvbiBpcyBmb3VuZCwgZXZlbiB3aGVuIHRoZSBjdXJyZW5jaWVzIGRvbid0IGluY2x1ZGVcbiAgICAvLyB0aGUgbW9uZXkgdmFsdWUncyBjdXJyZW5jeUNvZGVcbiAgICBpZiAocHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLnRyaW0oKSAhPT0gJycpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgICAgICB2YWx1ZTogcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgICAgfTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSkoKTtcblxuICBjb25zdCBpZCA9IE1vbmV5SW5wdXQuZ2V0Q3VycmVuY3lEcm9wZG93bklkKHByb3BzLmlkKTtcblxuICBjb25zdCBpc0hpZ2hQcmVjaXNpb24gPVxuICAgICFNb25leUlucHV0LmlzRW1wdHkocHJvcHMudmFsdWUpICYmXG4gICAgTW9uZXlJbnB1dC5pc0hpZ2hQcmVjaXNpb24ocHJvcHMudmFsdWUsIGludGwubG9jYWxlKTtcblxuICBjb25zdCB7IG9uQmx1ciB9ID0gcHJvcHM7XG4gIGNvbnN0IGhhbmRsZUNvbnRhaW5lckJsdXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIGVuc3VyZXMgdGhhdCBib3RoIGZpZWxkcyBhcmUgbWFya2VkIGFzIHRvdWNoZWQgd2hlbiBvbmUgb2YgdGhlbVxuICAgICAgLy8gaXMgYmx1cnJlZFxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2Ygb25CbHVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICFjb250YWluZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KVxuICAgICAgKSB7XG4gICAgICAgIG9uQmx1cih7XG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIG9uQmx1cih7XG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkJsdXIsIHByb3BzLmlkLCBwcm9wcy5uYW1lXVxuICApO1xuXG4gIGNvbnN0IFRvb2x0aXBQb3J0YWwgPSB1c2VDYWxsYmFjayhcbiAgICAocmVtYWluaW5nUHJvcHMpID0+IDxQb3J0YWwgey4uLnJlbWFpbmluZ1Byb3BzfSBpZD17cHJvcHMuaWR9IC8+LFxuICAgIFtwcm9wcy5pZF1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb25zdHJhaW50cy5Ib3Jpem9udGFsIG1heD17cHJvcHMuaG9yaXpvbnRhbENvbnN0cmFpbnR9PlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGB9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwibW9uZXktaW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgb25CbHVyPXtoYW5kbGVDb250YWluZXJCbHVyfVxuICAgICAgPlxuICAgICAgICB7aGFzTm9DdXJyZW5jaWVzID8gKFxuICAgICAgICAgIDxDdXJyZW5jeUxhYmVsXG4gICAgICAgICAgICBpZD17TW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKX1cbiAgICAgICAgICAgIGlzRGlzYWJsZWQ9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbiAmJiBvcHRpb24ubGFiZWx9XG4gICAgICAgICAgPC9DdXJyZW5jeUxhYmVsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIGlucHV0SWQ9e2lkfVxuICAgICAgICAgICAgbmFtZT17Z2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSl9XG4gICAgICAgICAgICB2YWx1ZT17b3B0aW9ufVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgICAgICAgIGlzU2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICBjb21wb25lbnRzPXt7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9kaXNwbGF5LW5hbWVcbiAgICAgICAgICAgICAgU2luZ2xlVmFsdWU6IChpbm5lclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNpbmdsZVZhbHVlIHsuLi5pbm5lclByb3BzfSBpZD17aWR9IC8+XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9kaXNwbGF5LW5hbWVcbiAgICAgICAgICAgICAgSW5wdXQ6IChvd25Qcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICAgICAgICAgICAgPGNvbXBvbmVudHMuSW5wdXQgey4uLm93blByb3BzfSByZWFkT25seT17cHJvcHMuaXNSZWFkT25seX0gLz5cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRHJvcGRvd25JbmRpY2F0b3IsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgIG1lbnVJc09wZW49e3Byb3BzLmlzUmVhZE9ubHkgPyBmYWxzZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgICAgICAgIHN0eWxlcz17Y3VycmVuY3lTZWxlY3RTdHlsZXN9XG4gICAgICAgICAgICBvbkZvY3VzPXtoYW5kbGVDdXJyZW5jeUZvY3VzfVxuICAgICAgICAgICAgbWVudVBvcnRhbFRhcmdldD17cHJvcHMubWVudVBvcnRhbFRhcmdldH1cbiAgICAgICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbD17cHJvcHMubWVudVNob3VsZEJsb2NrU2Nyb2xsfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVDdXJyZW5jeUJsdXJ9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ3VycmVuY3lDaGFuZ2V9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImN1cnJlbmN5LWRyb3Bkb3duXCJcbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICByZWY9e2Ftb3VudElucHV0UmVmfVxuICAgICAgICAgICAgaWQ9e01vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCl9XG4gICAgICAgICAgICBhdXRvQ29tcGxldGU9e3Byb3BzLmF1dG9Db21wbGV0ZX1cbiAgICAgICAgICAgIG5hbWU9e2dldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUFtb3VudEZvY3VzfVxuICAgICAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlLmFtb3VudH1cbiAgICAgICAgICAgIGNzcz17W1xuICAgICAgICAgICAgICBnZXRBbW91bnRJbnB1dFN0eWxlcyh7IC4uLnByb3BzLCBoYXNGb2N1cyB9KSxcbiAgICAgICAgICAgICAgLy8gYWNjb3VudHMgZm9yIHNpemUgb2YgaWNvblxuICAgICAgICAgICAgICBwcm9wcy5oYXNIaWdoUHJlY2lzaW9uQmFkZ2UgJiZcbiAgICAgICAgICAgICAgICBpc0hpZ2hQcmVjaXNpb24gJiZcbiAgICAgICAgICAgICAgICBjc3NgXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAke3ZhcnMuc3BhY2luZ0x9O1xuICAgICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUFtb3VudENoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQW1vdW50Qmx1cn1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgcmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgICBhdXRvRm9jdXM9e3Byb3BzLmlzQXV0b2ZvY3Vzc2VkfVxuICAgICAgICAgICAgey4uLmZpbHRlckRhdGFBdHRyaWJ1dGVzKHByb3BzKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtwcm9wcy5oYXNIaWdoUHJlY2lzaW9uQmFkZ2UgJiYgaXNIaWdoUHJlY2lzaW9uICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHshcHJvcHMuaXNEaXNhYmxlZCAmJiA8ZGl2IGlkPXtnZXRQb3J0YWxJZChwcm9wcy5pZCl9IC8+fVxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgZ2V0SGlnaFByZWNpc2lvbldyYXBwZXJTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgb2ZmPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wLWVuZFwiXG4gICAgICAgICAgICAgICAgICAvLyB3ZSB1c2UgbmVnYXRpdmUgbWFyZ2luIHRvIG1ha2UgdXAgZm9yIHRoZSBwYWRkaW5nIGluIHRoZSBUb29sdGlwIFdyYXBwZXJcbiAgICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHRvb2x0aXAgaXMgZmx1c2ggd2l0aCB0aGUgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICBzdHlsZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogYCR7dmFycy5zcGFjaW5nU30gLSR7dmFycy5zcGFjaW5nWHN9ICR7dmFycy5zcGFjaW5nU30gMGAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5oaWdoUHJlY2lzaW9uKX1cbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgICAgICAgICAgVG9vbHRpcFdyYXBwZXJDb21wb25lbnQ6IFRvb2x0aXBQb3J0YWwsXG4gICAgICAgICAgICAgICAgICAgIFdyYXBwZXJDb21wb25lbnQ6IFRvb2x0aXBXcmFwcGVyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RnJhY3Rpb25EaWdpdHNJY29uXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPXtwcm9wcy5pc0Rpc2FibGVkID8gJ25ldXRyYWw2MCcgOiAnaW5mbyd9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvQ29uc3RyYWludHMuSG9yaXpvbnRhbD5cbiAgKTtcbn07XG5cbk1vbmV5SW5wdXQuZGlzcGxheU5hbWUgPSAnTW9uZXlJbnB1dCc7XG5cbk1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZCA9IGdldEFtb3VudElucHV0TmFtZTtcblxuTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQgPSBnZXRDdXJyZW5jeURyb3Bkb3duTmFtZTtcblxuTW9uZXlJbnB1dC5jb252ZXJ0VG9Nb25leVZhbHVlID0gKHZhbHVlLCBsb2NhbGUpID0+XG4gIGNyZWF0ZU1vbmV5VmFsdWUoXG4gICAgdmFsdWUuY3VycmVuY3lDb2RlLFxuICAgIHR5cGVvZiB2YWx1ZS5hbW91bnQgPT09ICdzdHJpbmcnID8gdmFsdWUuYW1vdW50LnRyaW0oKSA6ICcnLFxuICAgIGxvY2FsZVxuICApO1xuXG5Nb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZSA9IChtb25leVZhbHVlLCBsb2NhbGUpID0+IHtcbiAgaWYgKCFtb25leVZhbHVlKSByZXR1cm4geyBjdXJyZW5jeUNvZGU6ICcnLCBhbW91bnQ6ICcnIH07XG5cbiAgd2FybmluZyhcbiAgICB0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJyxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IEEgbG9jYWxlIG11c3QgYmUgcGFzc2VkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQnXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICB0eXBlb2YgbW9uZXlWYWx1ZSA9PT0gJ29iamVjdCcsXG4gICAgJ01vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlOiBWYWx1ZSBtdXN0IGJlIHBhc3NlZCBhcyBhbiBvYmplY3Qgb3IgYmUgdW5kZWZpbmVkJ1xuICApO1xuXG4gIHdhcm5pbmcoXG4gICAgdHlwZW9mIG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlID09PSAnc3RyaW5nJyxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IFZhbHVlIG11c3QgY29udGFpbiBcImN1cnJlbmN5Q29kZVwiJ1xuICApO1xuXG4gIHdhcm5pbmcoXG4gICAgaGFzKGN1cnJlbmNpZXMsIG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlKSxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IFZhbHVlIG11c3QgdXNlIGtub3duIGN1cnJlbmN5IGNvZGUnXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICAvLyBoaWdoUHJlY2lzaW9uIG9yIGNlbnRQcmVjaXNpb24gdmFsdWVzIG11c3QgYmUgc2V0XG4gICAgdHlwZW9mIG1vbmV5VmFsdWUuY2VudEFtb3VudCA9PT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlb2YgbW9uZXlWYWx1ZS5wcmVjaXNlQW1vdW50ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICB0eXBlb2YgbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicpLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogVmFsdWUgbXVzdCBjb250YWluIFwiYW1vdW50XCInXG4gICk7XG5cbiAgY29uc3QgYW1vdW50ID0gZm9ybWF0QW1vdW50KFxuICAgIGdldEFtb3VudEFzTnVtYmVyRnJvbU1vbmV5VmFsdWUobW9uZXlWYWx1ZSkudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1vbmV5VmFsdWUuZnJhY3Rpb25EaWdpdHMsXG4gICAgfSksXG4gICAgbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgbG9jYWxlXG4gICk7XG5cbiAgcmV0dXJuIHsgYW1vdW50LCBjdXJyZW5jeUNvZGU6IG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlIH07XG59O1xuXG5Nb25leUlucHV0LmlzRW1wdHkgPSAoZm9ybVZhbHVlKSA9PlxuICAhZm9ybVZhbHVlIHx8XG4gIGZvcm1WYWx1ZS5hbW91bnQudHJpbSgpID09PSAnJyB8fFxuICBmb3JtVmFsdWUuY3VycmVuY3lDb2RlLnRyaW0oKSA9PT0gJyc7XG5cbk1vbmV5SW5wdXQuaXNIaWdoUHJlY2lzaW9uID0gKGZvcm1WYWx1ZSwgbG9jYWxlKSA9PiB7XG4gIHdhcm5pbmcoXG4gICAgIU1vbmV5SW5wdXQuaXNFbXB0eShmb3JtVmFsdWUpLFxuICAgICdNb25leVZhbHVlLmlzSGlnaFByZWNpc2lvbiBtYXkgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGVtcHR5IG1vbmV5IHZhbHVlLidcbiAgKTtcbiAgY29uc3QgbW9uZXlWYWx1ZSA9IE1vbmV5SW5wdXQuY29udmVydFRvTW9uZXlWYWx1ZShmb3JtVmFsdWUsIGxvY2FsZSk7XG4gIHJldHVybiBtb25leVZhbHVlICYmIG1vbmV5VmFsdWUudHlwZSA9PT0gJ2hpZ2hQcmVjaXNpb24nO1xufTtcblxuTW9uZXlJbnB1dC5pc1RvdWNoZWQgPSAodG91Y2hlZCkgPT5cbiAgQm9vbGVhbih0b3VjaGVkICYmIHRvdWNoZWQuY3VycmVuY3lDb2RlICYmIHRvdWNoZWQuYW1vdW50KTtcblxuTW9uZXlJbnB1dC5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBVc2VkIGFzIEhUTUwgaWQgcHJvcGVydHkuIEFuIGlkIGlzIGF1dG8tZ2VuZXJhdGVkIHdoZW4gaXQgaXMgbm90IHNwZWNpZmllZC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVXNlZCBhcyBIVE1MIGBhdXRvY29tcGxldGVgIHByb3BlcnR5XG4gICAqL1xuICBhdXRvQ29tcGxldGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVzZWQgdG8gY3JlYXRlIGEgSFRNTCBgbmFtZWAgcHJvcGVydHkgZm9yIHRoZSBhbW91bnQgaW5wdXQgZmllbGQgKGAke25hbWV9LmFtb3VudGApIGFuZCB0aGUgY3VycmVuY3kgZHJvcGRvd24gKGAke25hbWV9LmN1cnJlbmN5Q29kZWApLlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBpbnB1dC4gQ29uc2lzdHMgb2YgdGhlIGN1cnJlbmN5IGNvZGUgYW5kIGFuIGFtb3VudC4gYGFtb3VudGAgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbW91bnQuIEEgZG90IGhhcyB0byBiZSB1c2VkIGFzIHRoZSBkZWNpbWFsIHNlcGFyYXRvci5cbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFtb3VudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGN1cnJlbmN5Q29kZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogTGlzdCBvZiBwb3NzaWJsZSBjdXJyZW5jaWVzLiBXaGVuIG5vdCBwcm92aWRlZCBvciBlbXB0eSwgdGhlIGNvbXBvbmVudCByZW5kZXJzIGEgbGFiZWwgd2l0aCB0aGUgdmFsdWUncyBjdXJyZW5jeSBpbnN0ZWFkIG9mIGEgZHJvcGRvd24uXG4gICAqL1xuICBjdXJyZW5jaWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIGlucHV0XG4gICAqL1xuICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGJsdXJyZWRcbiAgICovXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCBpcyBmb2N1c2VkXG4gICAqL1xuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBpbnB1dCBjYW5ub3QgYmUgbW9kaWZpZWQgKGUuZyBub3QgYXV0aG9yaXplZCwgb3IgY2hhbmdlcyBjdXJyZW50bHkgc2F2aW5nKS5cbiAgICovXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGZpZWxkIGlzIGRpc3BsYXlpbmcgcmVhZC1vbmx5IGNvbnRlbnRcbiAgICovXG4gIGlzUmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRm9jdXMgdGhlIGlucHV0IG9uIGluaXRpYWwgcmVuZGVyXG4gICAqL1xuICBpc0F1dG9mb2N1c3NlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCB0aGUgZXZlbnQgb2YgdGhlIGlucHV0IG9yIGRyb3Bkb3duIHdoZW4gZWl0aGVyIHRoZSBjdXJyZW5jeSBvciB0aGUgYW1vdW50IGhhdmUgY2hhbmdlZC5cbiAgICogPGJyIC8+XG4gICAqIFNpZ25hdHVyZTogYChldmVudCkgPT4gdm9pZGBcbiAgICovXG4gIG9uQ2hhbmdlOiByZXF1aXJlZElmKFByb3BUeXBlcy5mdW5jLCAocHJvcHMpID0+ICFwcm9wcy5pc1JlYWRPbmx5KSxcbiAgLyoqXG4gICAqIERvbSBlbGVtZW50IHRvIHBvcnRhbCB0aGUgY3VycmVuY3kgc2VsZWN0IG1lbnUgdG9cbiAgICovXG4gIG1lbnVQb3J0YWxUYXJnZXQ6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNhZmVIVE1MRWxlbWVudCksXG4gIC8qKlxuICAgKiB6LWluZGV4IHZhbHVlIGZvciB0aGUgY3VycmVuY3kgc2VsZWN0IG1lbnUgcG9ydGFsXG4gICAqL1xuICBtZW51UG9ydGFsWkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogd2hldGhlciB0aGUgbWVudSBzaG91bGQgYmxvY2sgc2Nyb2xsIHdoaWxlIG9wZW5cbiAgICovXG4gIG1lbnVTaG91bGRCbG9ja1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBpbnB1dCBoYXMgZXJyb3JzXG4gICAqL1xuICBoYXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBDb250cm9sIHRvIGluZGljYXRlIG9uIHRoZSBpbnB1dCBpZiB0aGVyZSBhcmUgc2VsZWN0ZWQgdmFsdWVzIHRoYXQgYXJlIHBvdGVudGlhbGx5IGludmFsaWRcbiAgICovXG4gIGhhc1dhcm5pbmc6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogU2hvd3MgaGlnaCBwcmVjaXNpb24gYmFkZ2UgaW4gY2FzZSBjdXJyZW50IHZhbHVlIHVzZXMgaGlnaCBwcmVjaXNpb24uXG4gICAqL1xuICBoYXNIaWdoUHJlY2lzaW9uQmFkZ2U6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSG9yaXpvbnRhbCBzaXplIGxpbWl0IG9mIHRoZSBpbnB1dCBmaWVsZHMuXG4gICAqL1xuICBob3Jpem9udGFsQ29uc3RyYWludDogUHJvcFR5cGVzLm9uZU9mKFtcbiAgICAzLFxuICAgIDQsXG4gICAgNSxcbiAgICA2LFxuICAgIDcsXG4gICAgOCxcbiAgICA5LFxuICAgIDEwLFxuICAgIDExLFxuICAgIDEyLFxuICAgIDEzLFxuICAgIDE0LFxuICAgIDE1LFxuICAgIDE2LFxuICAgICdzY2FsZScsXG4gICAgJ2F1dG8nLFxuICBdKSxcbn07XG5cbk1vbmV5SW5wdXQuZGVmYXVsdFByb3BzID0ge1xuICBjdXJyZW5jaWVzOiBbXSxcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdzY2FsZScsXG4gIG1lbnVQb3J0YWxaSW5kZXg6IDEsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb25leUlucHV0O1xuIl19 */",
|
|
1043
1051
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
1044
1052
|
};
|
|
1045
1053
|
|
|
@@ -1058,10 +1066,10 @@ var MoneyInput = function MoneyInput(props) {
|
|
|
1058
1066
|
amountHasFocus = _useToggleState4[0],
|
|
1059
1067
|
toggleAmountHasFocus = _useToggleState4[1];
|
|
1060
1068
|
|
|
1061
|
-
var containerRef =
|
|
1062
|
-
var amountInputRef =
|
|
1069
|
+
var containerRef = useRef();
|
|
1070
|
+
var amountInputRef = useRef();
|
|
1063
1071
|
var onFocus = props.onFocus;
|
|
1064
|
-
var handleAmountFocus =
|
|
1072
|
+
var handleAmountFocus = useCallback(function () {
|
|
1065
1073
|
if (onFocus) onFocus({
|
|
1066
1074
|
target: {
|
|
1067
1075
|
id: MoneyInput.getAmountInputId(props.id),
|
|
@@ -1071,7 +1079,7 @@ var MoneyInput = function MoneyInput(props) {
|
|
|
1071
1079
|
toggleAmountHasFocus(true);
|
|
1072
1080
|
}, [toggleAmountHasFocus, onFocus, props.id, props.name]);
|
|
1073
1081
|
var onChange = props.onChange;
|
|
1074
|
-
var handleAmountBlur =
|
|
1082
|
+
var handleAmountBlur = useCallback(function () {
|
|
1075
1083
|
var _context5;
|
|
1076
1084
|
|
|
1077
1085
|
var amount = _trimInstanceProperty(_context5 = props.value.amount).call(_context5);
|
|
@@ -1098,7 +1106,7 @@ var MoneyInput = function MoneyInput(props) {
|
|
|
1098
1106
|
}
|
|
1099
1107
|
}
|
|
1100
1108
|
}, [intl.locale, onChange, props.id, props.name, props.value.amount, props.value.currencyCode, toggleAmountHasFocus]);
|
|
1101
|
-
var handleAmountChange =
|
|
1109
|
+
var handleAmountChange = useCallback(function (event) {
|
|
1102
1110
|
if (isNumberish(event.target.value)) {
|
|
1103
1111
|
onChange({
|
|
1104
1112
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -1111,7 +1119,7 @@ var MoneyInput = function MoneyInput(props) {
|
|
|
1111
1119
|
});
|
|
1112
1120
|
}
|
|
1113
1121
|
}, [onChange, props.id, props.name]);
|
|
1114
|
-
var handleCurrencyChange =
|
|
1122
|
+
var handleCurrencyChange = useCallback(function (option) {
|
|
1115
1123
|
var currencyCode = option.value;
|
|
1116
1124
|
|
|
1117
1125
|
if (props.value.currencyCode !== currencyCode) {
|
|
@@ -1155,7 +1163,7 @@ var MoneyInput = function MoneyInput(props) {
|
|
|
1155
1163
|
amountInputRef.current.focus();
|
|
1156
1164
|
}
|
|
1157
1165
|
}, [intl.locale, onChange, props.id, props.name, props.value.amount, props.value.currencyCode]);
|
|
1158
|
-
var handleCurrencyFocus =
|
|
1166
|
+
var handleCurrencyFocus = useCallback(function () {
|
|
1159
1167
|
if (onFocus) onFocus({
|
|
1160
1168
|
target: {
|
|
1161
1169
|
id: MoneyInput.getCurrencyDropdownId(props.id),
|
|
@@ -1164,7 +1172,7 @@ var MoneyInput = function MoneyInput(props) {
|
|
|
1164
1172
|
});
|
|
1165
1173
|
toggleCurrencyHasFocus(true);
|
|
1166
1174
|
}, [onFocus, toggleCurrencyHasFocus, props.name, props.id]);
|
|
1167
|
-
var handleCurrencyBlur =
|
|
1175
|
+
var handleCurrencyBlur = useCallback(function () {
|
|
1168
1176
|
toggleCurrencyHasFocus(false);
|
|
1169
1177
|
}, [toggleCurrencyHasFocus]);
|
|
1170
1178
|
var hasNoCurrencies = props.currencies.length === 0;
|
|
@@ -1206,7 +1214,7 @@ var MoneyInput = function MoneyInput(props) {
|
|
|
1206
1214
|
var id = MoneyInput.getCurrencyDropdownId(props.id);
|
|
1207
1215
|
var isHighPrecision = !MoneyInput.isEmpty(props.value) && MoneyInput.isHighPrecision(props.value, intl.locale);
|
|
1208
1216
|
var onBlur = props.onBlur;
|
|
1209
|
-
var handleContainerBlur =
|
|
1217
|
+
var handleContainerBlur = useCallback(function (event) {
|
|
1210
1218
|
// ensures that both fields are marked as touched when one of them
|
|
1211
1219
|
// is blurred
|
|
1212
1220
|
if (typeof onBlur === 'function' && !containerRef.current.contains(event.relatedTarget)) {
|
|
@@ -1224,100 +1232,108 @@ var MoneyInput = function MoneyInput(props) {
|
|
|
1224
1232
|
});
|
|
1225
1233
|
}
|
|
1226
1234
|
}, [onBlur, props.id, props.name]);
|
|
1227
|
-
var TooltipPortal =
|
|
1228
|
-
return jsx(Portal,
|
|
1235
|
+
var TooltipPortal = useCallback(function (remainingProps) {
|
|
1236
|
+
return jsx(Portal, _objectSpread(_objectSpread({}, remainingProps), {}, {
|
|
1229
1237
|
id: props.id
|
|
1230
1238
|
}));
|
|
1231
1239
|
}, [props.id]);
|
|
1232
1240
|
return jsx(Constraints.Horizontal, {
|
|
1233
|
-
max: props.horizontalConstraint
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
placeholder: props.placeholder,
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1241
|
+
max: props.horizontalConstraint,
|
|
1242
|
+
children: jsxs("div", {
|
|
1243
|
+
ref: containerRef,
|
|
1244
|
+
css: _ref2,
|
|
1245
|
+
"data-testid": "money-input-container",
|
|
1246
|
+
onBlur: handleContainerBlur,
|
|
1247
|
+
children: [hasNoCurrencies ? jsx(CurrencyLabel, {
|
|
1248
|
+
id: MoneyInput.getAmountInputId(props.id),
|
|
1249
|
+
isDisabled: props.isDisabled,
|
|
1250
|
+
children: option && option.label
|
|
1251
|
+
}) : jsx(Select, {
|
|
1252
|
+
inputId: id,
|
|
1253
|
+
name: getCurrencyDropdownName(props.name),
|
|
1254
|
+
value: option,
|
|
1255
|
+
isDisabled: props.isDisabled,
|
|
1256
|
+
isSearchable: false,
|
|
1257
|
+
components: {
|
|
1258
|
+
// eslint-disable-next-line react/display-name
|
|
1259
|
+
SingleValue: function SingleValue(innerProps) {
|
|
1260
|
+
return jsx(_SingleValue, _objectSpread(_objectSpread({}, innerProps), {}, {
|
|
1261
|
+
id: id
|
|
1262
|
+
}));
|
|
1263
|
+
},
|
|
1264
|
+
// eslint-disable-next-line react/display-name
|
|
1265
|
+
Input: function Input(ownProps) {
|
|
1266
|
+
return (// eslint-disable-next-line react/prop-types
|
|
1267
|
+
jsx(components.Input, _objectSpread(_objectSpread({}, ownProps), {}, {
|
|
1268
|
+
readOnly: props.isReadOnly
|
|
1269
|
+
}))
|
|
1270
|
+
);
|
|
1271
|
+
},
|
|
1272
|
+
DropdownIndicator: DropdownIndicator
|
|
1273
|
+
},
|
|
1274
|
+
options: options,
|
|
1275
|
+
menuIsOpen: props.isReadOnly ? false : undefined,
|
|
1276
|
+
placeholder: "",
|
|
1277
|
+
styles: currencySelectStyles,
|
|
1278
|
+
onFocus: handleCurrencyFocus,
|
|
1279
|
+
menuPortalTarget: props.menuPortalTarget,
|
|
1280
|
+
menuShouldBlockScroll: props.menuShouldBlockScroll,
|
|
1281
|
+
onBlur: handleCurrencyBlur,
|
|
1282
|
+
onChange: handleCurrencyChange,
|
|
1283
|
+
"data-testid": "currency-dropdown"
|
|
1284
|
+
}), jsxs("div", {
|
|
1285
|
+
css: _ref,
|
|
1286
|
+
children: [jsx("input", _objectSpread({
|
|
1287
|
+
ref: amountInputRef,
|
|
1288
|
+
id: MoneyInput.getAmountInputId(props.id),
|
|
1289
|
+
autoComplete: props.autoComplete,
|
|
1290
|
+
name: getAmountInputName(props.name),
|
|
1291
|
+
type: "text",
|
|
1292
|
+
onFocus: handleAmountFocus,
|
|
1293
|
+
value: props.value.amount,
|
|
1294
|
+
css: [getAmountInputStyles(_objectSpread(_objectSpread({}, props), {}, {
|
|
1295
|
+
hasFocus: hasFocus
|
|
1296
|
+
})), // accounts for size of icon
|
|
1297
|
+
props.hasHighPrecisionBadge && isHighPrecision && /*#__PURE__*/css("padding-right:", customProperties.spacingL, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:MoneyInput;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vbmV5LWlucHV0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBtQm1CIiwiZmlsZSI6Im1vbmV5LWlucHV0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgcmVxdWlyZWRJZiBmcm9tICdyZWFjdC1yZXF1aXJlZC1pZic7XG5pbXBvcnQgU2VsZWN0LCB7IGNvbXBvbmVudHMgfSBmcm9tICdyZWFjdC1zZWxlY3QnO1xuaW1wb3J0IHsgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgY3NzLCB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgYXMgdmFycyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHtcbiAgd2FybmluZyxcbiAgaXNOdW1iZXJpc2gsXG4gIFNhZmVIVE1MRWxlbWVudCxcbiAgZmlsdGVyRGF0YUF0dHJpYnV0ZXMsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3V0aWxzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3Rvb2x0aXAnO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25JbmRpY2F0b3IsXG4gIGNyZWF0ZVNlbGVjdFN0eWxlcyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc2VsZWN0LXV0aWxzJztcbmltcG9ydCB7IEZyYWN0aW9uRGlnaXRzSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBDb25zdHJhaW50cyBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgeyB1c2VUb2dnbGVTdGF0ZSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2hvb2tzJztcbmltcG9ydCBjdXJyZW5jaWVzIGZyb20gJy4vY3VycmVuY2llcy5qc29uJztcbmltcG9ydCB7XG4gIGdldEhpZ2hQcmVjaXNpb25XcmFwcGVyU3R5bGVzLFxuICBnZXRDdXJyZW5jeUxhYmVsU3R5bGVzLFxuICBnZXRBbW91bnRJbnB1dFN0eWxlcyxcbn0gZnJvbSAnLi9tb25leS1pbnB1dC5zdHlsZXMnO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnO1xuXG5jb25zdCBUb29sdGlwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gO1xuXG5jb25zdCBnZXRQb3J0YWxJZCA9IChpZCkgPT4gYHBvcnRhbC0ke2lkfWA7XG5jb25zdCBnZXRQb3J0YWxOb2RlID0gKGlkKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtnZXRQb3J0YWxJZChpZCl9YCk7XG5cbmNvbnN0IFBvcnRhbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCBkb21Ob2RlID0gZ2V0UG9ydGFsTm9kZShwcm9wcy5pZCk7XG4gIHJldHVybiBSZWFjdERPTS5jcmVhdGVQb3J0YWwocHJvcHMuY2hpbGRyZW4sIGRvbU5vZGUpO1xufTtcblxuY29uc3QgQ3VycmVuY3lMYWJlbCA9IChwcm9wcykgPT4gKFxuICA8bGFiZWwgaHRtbEZvcj17cHJvcHMuaWR9IGNzcz17Z2V0Q3VycmVuY3lMYWJlbFN0eWxlcygpfT5cbiAgICB7cHJvcHMuY2hpbGRyZW59XG4gIDwvbGFiZWw+XG4pO1xuXG5DdXJyZW5jeUxhYmVsLmRpc3BsYXlOYW1lID0gJ0N1cnJlbmN5TGFiZWwnO1xuXG5DdXJyZW5jeUxhYmVsLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbn07XG5cbmNvbnN0IFNpbmdsZVZhbHVlID0gKHsgaWQsIC4uLnByb3BzIH0pID0+IChcbiAgPGNvbXBvbmVudHMuU2luZ2xlVmFsdWUgey4uLnByb3BzfT5cbiAgICA8bGFiZWwgaHRtbEZvcj17aWR9Pntwcm9wcy5jaGlsZHJlbn08L2xhYmVsPlxuICA8L2NvbXBvbmVudHMuU2luZ2xlVmFsdWU+XG4pO1xuXG5TaW5nbGVWYWx1ZS5kaXNwbGF5TmFtZSA9ICdTaW5nbGVWYWx1ZSc7XG5cblNpbmdsZVZhbHVlLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbn07XG5cbi8vIG92ZXJ3cml0ZSBzdHlsZXMgb2YgY3JlYXRlU2VsZWN0U3R5bGVzXG5jb25zdCBjcmVhdGVDdXJyZW5jeVNlbGVjdFN0eWxlcyA9IChcbiAgeyBoYXNXYXJuaW5nLCBoYXNFcnJvciwgaXNEaXNhYmxlZCwgaXNSZWFkT25seSwgaGFzRm9jdXMsIG1lbnVQb3J0YWxaSW5kZXggfSxcbiAgdGhlbWVcbikgPT4ge1xuICBjb25zdCBzZWxlY3RTdHlsZXMgPSBjcmVhdGVTZWxlY3RTdHlsZXMoXG4gICAge1xuICAgICAgaGFzV2FybmluZyxcbiAgICAgIGhhc0Vycm9yLFxuICAgICAgbWVudVBvcnRhbFpJbmRleCxcbiAgICB9LFxuICAgIHRoZW1lXG4gICk7XG4gIHJldHVybiB7XG4gICAgLi4uc2VsZWN0U3R5bGVzLFxuICAgIGNvbnRyb2w6IChiYXNlLCBzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnNlbGVjdFN0eWxlcy5jb250cm9sKGJhc2UsIHN0YXRlKSxcbiAgICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAnMCcsXG4gICAgICBib3JkZXJCb3R0b21SaWdodFJhZGl1czogJzAnLFxuICAgICAgYm9yZGVyUmlnaHQ6ICcwJyxcbiAgICAgIG1pbldpZHRoOiAnNzJweCcsXG4gICAgICBib3JkZXJDb2xvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpXG4gICAgICAgICAgcmV0dXJuIGAke3ZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5EaXNhYmxlZH0gIWltcG9ydGFudGA7XG4gICAgICAgIGlmIChoYXNFcnJvcikgcmV0dXJuIHZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5FcnJvcjtcbiAgICAgICAgaWYgKGhhc1dhcm5pbmcpIHJldHVybiB2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuV2FybmluZztcbiAgICAgICAgaWYgKGhhc0ZvY3VzKSByZXR1cm4gdmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkZvY3VzZWQ7XG4gICAgICAgIGlmIChpc1JlYWRPbmx5KVxuICAgICAgICAgIHJldHVybiBgJHt2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuUmVhZG9ubHl9ICFpbXBvcnRhbnRgO1xuICAgICAgICByZXR1cm4gdmFycy5ib3JkZXJDb2xvckZvcklucHV0O1xuICAgICAgfSkoKSxcbiAgICAgIGN1cnNvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybiAnbm90LWFsbG93ZWQnO1xuICAgICAgICBpZiAoaXNSZWFkT25seSkgcmV0dXJuIGBkZWZhdWx0YDtcbiAgICAgICAgcmV0dXJuICdwb2ludGVyJztcbiAgICAgIH0pKCksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICgoKSA9PiB7XG4gICAgICAgIGlmIChpc1JlYWRPbmx5KSByZXR1cm4gdmFycy5iYWNrZ3JvdW5kQ29sb3JGb3JJbnB1dDtcbiAgICAgICAgcmV0dXJuIGJhc2UuYmFja2dyb3VuZENvbG9yO1xuICAgICAgfSkoKSxcbiAgICB9KSxcbiAgICBzaW5nbGVWYWx1ZTogKGJhc2UpID0+ICh7XG4gICAgICAuLi5iYXNlLFxuICAgICAgbWFyZ2luTGVmdDogMCxcbiAgICAgIG1heFdpZHRoOiAnaW5pdGlhbCcsXG4gICAgICBjb2xvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlbkRpc2FibGVkO1xuICAgICAgICBpZiAoaGFzRXJyb3IpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlbkVycm9yO1xuICAgICAgICBpZiAoaGFzV2FybmluZykgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuV2FybmluZztcbiAgICAgICAgaWYgKGlzUmVhZE9ubHkpIHJldHVybiB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlblJlYWRvbmx5O1xuICAgICAgICByZXR1cm4gYmFzZS5jb2xvcjtcbiAgICAgIH0pKCksXG4gICAgfSksXG4gICAgZHJvcGRvd25JbmRpY2F0b3I6ICgpID0+ICh7XG4gICAgICBmaWxsOiBpc1JlYWRPbmx5ID8gdmFycy5mb250Q29sb3JGb3JJbnB1dFdoZW5SZWFkb25seSA6ICcnLFxuICAgIH0pLFxuICB9O1xufTtcblxuLy8gVGhlIE1vbmV5SW5wdXQgY29tcG9uZW50IGFsd2F5cyBvcGVyYXRlcyBvbiBhIHZhbHVlIGNvbnNpc3Rpbmcgb2Y6XG4vLyAgIHsgYW1vdW50OiBTdHJpbmcsIGN1cnJlbmN5Q29kZTogU3RyaW5nIH1cbi8vXG4vLyBUaGUgYW1vdW50IG1heSBvbmx5IHVzZSBhIGRvdCBhcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4vLyBUaGUgY3VycmVuY3lDb2RlIG11c3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBBUEkuXG4vL1xuLy8gVGhlIE1vbmV5SW5wdXQgZG9lcyBub3QgZG8gYW55IHZhbGlkYXRpb24gb24gaXRzIG93bi4gSXQgb25seSBzZXJ2ZXMgYXMgYSB3YXlcbi8vIHRvIGdldCB0aGUgYW1vdW50IGFuZCBjdXJyZW5jeUNvZGUgaW5wdXQgZnJvbSB0aGUgdXNlci4gVmFsaWRhdGlvbiBpcyBhbHdheXNcbi8vIHVwIHRvIHRoZSBwYXJlbnQuXG4vL1xuLy8gVGhlIENUUCBBUEkgc3VwcG9ydHMgcHJpY2VzIHR3byB0eXBlcyBvZiBwcmljZXM6IGNlbnRQcmVjaXNpb24gYW5kXG4vLyBoaWdoUHJlY2lzaW9uLiBUaGUgTW9uZXlJbnB1dCBpdHNlbGYgZG9lcyBub3Qga25vdyBhYm91dCB0aGVzZS4gSG93ZXZlcixcbi8vIGl0IGhhcyB0d28gc3RhdGljIG1ldGhvZHMgZGVmaW5lZCAoY29udmVydFRvTW9uZXlWYWx1ZSBhbmQgcGFyc2VNb25leVZhbHVlKSxcbi8vIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBNb25leUlucHV0IHZhbHVlIGFuZCB0aGUgTW9uZXlWYWx1ZVxuLy8gc3VwcG9ydGVkIGJ5IHRoZSBBUEkuXG4vLyBTb21lIHBsYWNlcyBpbiB0aGUgQVBJIGRvIG5vdCBzdXBwb3J0IGhpZ2hQcmVjaXNpb24gcHJpY2VzLCBidXQgdGhlXG4vLyBjb252ZXJ0VG9Nb25leVZhbHVlIHdpbGwgYWx3YXlzIHJldHVybiBlaXRoZXIgYSBjZW50UHJlY2lzaW9uIG9yIGFcbi8vIGhpZ2hQcmVjaXNpb24gcHJpY2UuIEl0J3MgdXAgdGhlIE1vbmV5SW5wdXQncyBwYXJlbnQgdG8gc2hvdyBhIHZhbGlkYXRpb25cbi8vIGVycm9yIGluIGNhc2UgYSBoaWdoUHJlY2lzaW9uIHByaWNlIGlzIHVzZWQuXG4vL1xuLy8gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFzIHRvIGhhdmUgaGlnaFByZWNpc2lvbiB3aGVuIHRoZSBudW1iZXIgb2Ygc3VwcGxpZWRcbi8vIGZyYWN0aW9uIGRpZ2l0cyBleGNlZWQgdGhlIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdGhlIGN1cnJlbmN5IHVzZXMuIEZvclxuLy8gZXhhbXBsZSwgNDIuMDAg4oKsIGlzIGFsd2F5cyBhIGNlbnRQcmVjaXNpb24gcHJpY2UsIHdoaWxlIDQyLjAwMSDigqwgaXMgYWx3YXlzIGFcbi8vIGhpZ2hQcmVjaXNpb24gcHJpY2UuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYWUgNDIuMDAg4oKsIGFzIGEgaGlnaFByZWNpc2lvblxuLy8gcHJpY2UuXG4vL1xuLy8gVGhlIGZpcnN0IHRpbWUgdGhlIGNvbXBvbmVudCByZW5kZXJzLCB3ZSB3YW50IHRvIHRyeSB0byBzaG93IHRoZSBjZW50QW1vdW50XG4vLyBhcyBhIGZvcm1hdHRlZCBudW1iZXIuIFRvIGFjaGlldmUgdGhpcywgdGhlIHBhcnNlTW9uZXlWYWx1ZSBmdW5jdGlvbiBjYW5cbi8vIGJlIHVzZWQgdG8gdHVybiB0aGUgQVBJIHZhbHVlIGludG8gYSB2YWx1ZSB0aGUgTW9uZXlJbnB1dCB1bmRlcnN0YW5kcy5cbi8vIER1cmluZyB0aGlzIHRyYW5zZm9ybWF0aW9uLCB0aGUgbW9uZXkgdmFsdWUgd2lsbCBnZXQgZm9ybWF0dGVkIGludG8gXCJhbW91bnRcIi5cbi8vXG4vLyBXaGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZhbHVlLCB3ZSBkb24ndCB3YW50IHRvIGZvcm1hdCBhZ2Fpbi4gV2Ugb25seSBmb3JtYXRcbi8vIGluIGNhc2UgdGhlIHVzZXIgYmx1cnMgdGhlIGZpZWxkLiBUaGlzIGF2b2lkcyBtYW55IGVkZ2UgY2FzZXMgd2hlcmUgdGhlXG4vLyBmb3JtYXR0aW5nIHdvdWxkIG1lc3Mgd2l0aCB0aGUgdXNlcidzIGlucHV0LlxuLy9cbi8vXG4vLyBBIGZ1bGwgZXhhbXBsZSBvZiBhbiBNb25leVZhbHVlIHdpdGggY2VudFByZWNpc2lvbiB3b3VsZCBiZVxuLy8ge1xuLy8gICBcInR5cGVcIjogXCJjZW50UHJlY2lzaW9uXCIsXG4vLyAgIFwiY3VycmVuY3lDb2RlXCI6IFwiRVVSXCIsXG4vLyAgIFwiY2VudEFtb3VudFwiOiA0MjAwLFxuLy8gICBcImZyYWN0aW9uRGlnaXRzXCI6IDJcbi8vIH1cbi8vIHdoaWNoIGVxdWFscyA0Mi4wMCDigqxcbi8vXG4vLyBBIGZ1bGwgZXhhbXBsZSBvZiBhbiBNb25leVZhbHVlIHdpdGggaGlnaFByZWNpc2lvbiB3b3VsZCBiZVxuLy8ge1xuLy8gIFwidHlwZVwiOiBcImhpZ2hQcmVjaXNpb25cIixcbi8vICBcImN1cnJlbmN5Q29kZVwiOiBcIkVVUlwiLFxuLy8gIFwiY2VudEFtb3VudFwiOiAxLFxuLy8gIFwicHJlY2lzZUFtb3VudFwiOiAxMjM0NTYsXG4vLyAgXCJmcmFjdGlvbkRpZ2l0c1wiOiA3XG4vLyB9XG4vLyB3aGljaCBlcXVhbHMgMC4wMTIzNDU2IOKCrFxuXG4vLyBQYXJzaW5nXG4vLyBTaW5jZSBtb3N0IHVzZXJzIGFyZSBub3QgY2FyZWZ1bCBhYm91dCBob3cgdGhleSBlbnRlciB2YWx1ZXMsIHdlIHdpbGwgcGFyc2Vcbi8vIGJvdGggYC5gIGFuZCBgLGAgYXMgZGVjaW1hbCBzZXBhcmF0b3JzLlxuLy8gV2hlbiBhIHZhbHVlIGlzIGAxLjAwMCwwMGAgd2UgcGFyc2UgaXQgYXMgYDEwMDBgLlxuLy8gV2hlbiBhIHZhbHVlIGlzIGAxLDAwMC4wMGAgd2UgYWxzbyBwYXJzZSBpdCBhcyBgMTAwMGAuXG4vL1xuLy8gVGhpcyBtZWFucyB0aGUgaGlnaGVzdCBhbW91bnQgYWx3YXlzIHdpbnMuIFdlIGRvIHRoaXMgYnkgY29tcGFyaW5nIHRoZSBsYXN0XG4vLyBwb3NpdGlvbiBvZiBgLmAgYW5kIGAsYC4gV2hhdGV2ZXIgb2NjdXJzIGxhdGVyIGlzIHVzZWQgYXMgdGhlIGRlY2ltYWxcbi8vIHNlcGFyYXRvci5cbmV4cG9ydCBjb25zdCBwYXJzZVJhd0Ftb3VudFRvTnVtYmVyID0gKHJhd0Ftb3VudCwgbG9jYWxlKSA9PiB7XG4gIGxldCBmcmFjdGlvbnNTZXBhcmF0b3I7XG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIGZyYWN0aW9uc1NlcGFyYXRvciA9ICgyLjUpIC8vIHdlIG5lZWQgYW55IG51bWJlciB3aXRoIGZyYWN0aW9ucywgc28gdGhhdCB3ZSBrbm93IHdoYXQgaXMgdGhlIGZyYWN0aW9uXG4gICAgICAudG9Mb2NhbGVTdHJpbmcobG9jYWxlKSAvLyBcInN5bWJvbFwiIGZvciB0aGUgcHJvdmlkZWQgbG9jYWxlXG4gICAgICAucmVwbGFjZSgvXFxkL2csICcnKTsgLy8gdGhlbiB3ZSByZW1vdmUgdGhlIG51bWJlcnMgYW5kIGtlZXAgdGhlIFwic3ltYm9sXCJcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0RG90ID0gU3RyaW5nKHJhd0Ftb3VudCkubGFzdEluZGV4T2YoJy4nKTtcbiAgICBjb25zdCBsYXN0Q29tbWEgPSBTdHJpbmcocmF3QW1vdW50KS5sYXN0SW5kZXhPZignLCcpO1xuICAgIGZyYWN0aW9uc1NlcGFyYXRvciA9IGxhc3RDb21tYSA+IGxhc3REb3QgPyAnLCcgOiAnLic7XG4gIH1cblxuICBmcmFjdGlvbnNTZXBhcmF0b3IgPSBmcmFjdGlvbnNTZXBhcmF0b3IgPT09ICcuJyA/ICdcXFxcLicgOiBmcmFjdGlvbnNTZXBhcmF0b3I7IC8vIGhlcmUgd2UgZXNjYXBlIHRoZSAnLicgdG8gdXNlIGl0IGFzIHJlZ2V4XG4gIC8vIFRoZSByYXcgYW1vdW50IHdpdGggb25seSBvbmUgc3BhcmF0b3JcbiAgY29uc3Qgbm9ybWFsaXplZEFtb3VudCA9IFN0cmluZyhyYXdBbW91bnQpXG4gICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgW14wLTkke2ZyYWN0aW9uc1NlcGFyYXRvcn1dYCwgJ2cnKSwgJycpIC8vIHdlIGp1c3Qga2VlcCB0aGUgbnVtYmVycyBhbmQgdGhlIGZyYWN0aW9uIHN5bWJvbFxuICAgIC5yZXBsYWNlKGZyYWN0aW9uc1NlcGFyYXRvciwgJy4nKTsgLy8gdGhlbiB3ZSBjaGFuZ2Ugd2hhdGV2ZXIgYGZyYWN0aW9uc1NlcGFyYXRvcmAgd2FzIHRvIGAuYCBzbyB3ZSBjYW4gcGFyc2UgaXQgYXMgZmxvYXRcblxuICByZXR1cm4gcGFyc2VGbG9hdChub3JtYWxpemVkQW1vdW50LCAxMCk7XG59O1xuXG4vLyBUdXJucyB0aGUgdXNlciBpbnB1dCBpbnRvIGEgdmFsdWUgdGhlIE1vbmV5SW5wdXQgY2FuIHBhc3MgdXAgdGhyb3VnaCBvbkNoYW5nZVxuLy8gSW4gY2FzZSB0aGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyBjb250YWluZWQgaW4gXCJhbW91bnRcIiBleGNlZWRzIHRoZVxuLy8gbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0aGUgY3VycmVuY3kgdXNlcywgaXQgd2lsbCBlbWl0IGEgcHJpY2Ugb2Zcbi8vIHR5cGUgXCJoaWdoUHJlY2lzaW9uXCIgaW5zdGVhZCBvZiB0aGUgcmVndWxhciBcImNlbnRQcmVjaXNpb25cIi5cbi8vIEl0IHdpbGwgcmV0dXJuIFwibnVsbFwiIGluIGNhc2UgYW4gaW52YWxpZCB2YWx1ZSBpcyBlbnRlcmVkLlxuLy8gVGhlIHZhbHVlIGlzIGludmFsaWQgd2hlblxuLy8gIC0gbm8gYW1vdW50IHdhcyBlbnRlcmVkXG4vLyAgLSBhbiBpbnZhbGlkIGFtb3VudCB3YXMgZW50ZXJlZFxuLy8gIC0gbm8gY3VycmVuY3kgd2FzIHNlbGVjdGVkXG4vL1xuLy8gVGhpcyBmdW5jdGlvbiBleHBlY3RzIHRoZSBcImFtb3VudFwiIHRvIGJlIGEgdHJpbW1lZCB2YWx1ZS5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb25leVZhbHVlID0gKGN1cnJlbmN5Q29kZSwgcmF3QW1vdW50LCBsb2NhbGUpID0+IHtcbiAgaWYgKCFjdXJyZW5jeUNvZGUpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGN1cnJlbmN5ID0gY3VycmVuY2llc1tjdXJyZW5jeUNvZGVdO1xuICBpZiAoIWN1cnJlbmN5KSByZXR1cm4gbnVsbDtcblxuICBpZiAocmF3QW1vdW50Lmxlbmd0aCA9PT0gMCB8fCAhaXNOdW1iZXJpc2gocmF3QW1vdW50KSkgcmV0dXJuIG51bGw7XG5cbiAgd2FybmluZyhcbiAgICBsb2NhbGUgfHwgY3VycmVuY3kuZnJhY3Rpb25EaWdpdHMgIT09IDAsXG4gICAgYEEgbG9jYWxlIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBjdXJyZW5jeSBoYXMgbm8gZnJhY3Rpb24gZGlnaXRzICgke2N1cnJlbmN5Q29kZX0pYFxuICApO1xuICBjb25zdCBhbW91bnRBc051bWJlciA9IHBhcnNlUmF3QW1vdW50VG9OdW1iZXIocmF3QW1vdW50LCBsb2NhbGUpO1xuICBpZiAoaXNOYU4oYW1vdW50QXNOdW1iZXIpKSByZXR1cm4gbnVsbDtcblxuICAvLyBUaGUgY2VudCBhbW91bnQgaXMgcm91bmRlZCB0byB0aGUgY3VycmVuY2llJ3MgZGVmYXVsdCBudW1iZXJcbiAgLy8gb2YgZnJhY3Rpb24gZGlnaXRzIGZvciBwcmljZXMgd2l0aCBoaWdoIHByZWNpc2lvbi5cbiAgLy9cbiAgLy8gQWRkaXRpb25hbGx5LCBKYXZhU2NyaXB0IGlzIHNvbWV0aW1lcyBpbmNvcnJlY3Qgd2hlbiBtdWx0aXBseWluZyBmbG9hdHMsXG4gIC8vICAgZS5nLiAyLjQ5ICogMTAwIC0+IDI0OS4wMDAwMDAwMDAwMDAwM1xuICAvLyBXaGlsZSBpbmFjY3VyYWN5IGZyb20gbXVsdGlwbHlpbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpcyBhXG4gIC8vIGdlbmVyYWwgcHJvYmxlbSBpbiBKUywgd2UgY2FuIGF2b2lkIGl0IGJ5IGN1dHRpbmcgb2ZmIGFsbFxuICAvLyBkZWNpbWFscy4gVGhpcyBpcyBwb3NzaWJsZSBzaW5jZSBjZW50cyBpcyB0aGUgYmFzZSB1bml0LCBzbyB3ZVxuICAvLyBvcGVyYXRlIG9uIGludGVnZXJzIGFueXdheXNcbiAgLy8gQWxzbyB3ZSBzaG91bGQgdGhlIHJvdW5kIHRoZSB2YWx1ZSB0byBlbnN1cmUgdGhhdCB3ZSBjb21lIGNsb3NlXG4gIC8vIHRvIHRoZSBuZWFyZXN0IGRlY2ltYWwgdmFsdWVcbiAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vY29tbWVyY2V0b29scy9tZXJjaGFudC1jZW50ZXItZnJvbnRlbmQvcHVsbC83NzBcbiAgY29uc3QgY2VudEFtb3VudCA9IE1hdGgudHJ1bmMoXG4gICAgTWF0aC5yb3VuZChhbW91bnRBc051bWJlciAqIDEwICoqIGN1cnJlbmN5LmZyYWN0aW9uRGlnaXRzKVxuICApO1xuXG4gIGNvbnN0IGZyYWN0aW9uRGlnaXRzT2ZBbW91bnQgPVxuICAgIC8vIFRoZSBjb252ZXJzaW9uIHRvIGEgc3RyaW5nIHdpbGwgYWx3YXlzIHVzZSBhIGRvdCBhcyB0aGUgc2VwYXJhdG9yLlxuICAgIC8vIFRoYXQgbWVhbnMgd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgYSBjb21tYS5cbiAgICBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLmluZGV4T2YoJy4nKSA9PT0gLTFcbiAgICAgID8gMFxuICAgICAgOiBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLmxlbmd0aCAtIFN0cmluZyhhbW91bnRBc051bWJlcikuaW5kZXhPZignLicpIC0gMTtcblxuICBpZiAoZnJhY3Rpb25EaWdpdHNPZkFtb3VudCA+IGN1cnJlbmN5LmZyYWN0aW9uRGlnaXRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdoaWdoUHJlY2lzaW9uJyxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGNlbnRBbW91bnQsXG4gICAgICBwcmVjaXNlQW1vdW50OiBwYXJzZUludChcbiAgICAgICAgLy8gSGVyZSB3ZSBuZWVkIHRvIGNvbnZlcnQgIGEgbnVtYmVyIGxpa2UgOC4wNjY2NTIgdG8gaXRzIGNlbnRhbW91bnRcbiAgICAgICAgLy8gV2UgY291bGQgZG8gdGhhdCBieSBtdWx0aXBseWluZyBpdCB3aXRoIDEwICoqIG51bWJlci1vZi1mcmFjdGlvbi1kaWdpdHNcbiAgICAgICAgLy8gYnV0IHRoZW4gd2UnbGwgcnVuIGludG8gcHJvYmxlbXMgd2l0aCBKYXZhU2NyaXB0J3MgZmxvYXRpbmcgcG9pbnRcbiAgICAgICAgLy8gbnVtYmVyIHByZWNpc2lvbiBhbmQgZW5kIHVwIHdpdGggODA2NjY1MS45OTk5OTk5LCBhbmQgdGhlbiBwYXJzZUludFxuICAgICAgICAvLyBjdXRzIG9mZiB0aGUgcmVtYWluZGVyLlxuICAgICAgICAvLyBTbyBpbnN0ZWFkIG9mIHVzaW5nIG1hdGhzIHRvIGNvbnZlcnQgdGhlIG51bWJlciwgd2UganVzdCByZXBsYWNlXG4gICAgICAgIC8vIHRoZSBkb3QgaW5zaWRlIHRoZSBudW1iZXIgd2hpY2ggZG9lcyB0aGUgc2FtZSB0aGluZy5cbiAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byByZXBsYWNlIFwiLFwiIGFzIHdlbGwsIGFzIG51bWJlcnMgYWx3YXlzIHVzIGEgZG90XG4gICAgICAgIC8vIHdoZW4gY29udmVydGVkIHVzaW5nIFN0cmluZygpLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGUgbWF0aGVtYXRpY2FsIHdheTogYW1vdW50QXNOdW1iZXIgKiAxMCAqKiBmcmFjdGlvbkRpZ2l0c09mQW1vdW50LFxuICAgICAgICBTdHJpbmcoYW1vdW50QXNOdW1iZXIpLnJlcGxhY2UoJy4nLCAnJyksXG4gICAgICAgIDEwXG4gICAgICApLFxuICAgICAgZnJhY3Rpb25EaWdpdHM6IGZyYWN0aW9uRGlnaXRzT2ZBbW91bnQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2NlbnRQcmVjaXNpb24nLFxuICAgIGN1cnJlbmN5Q29kZSxcbiAgICBjZW50QW1vdW50LFxuICAgIGZyYWN0aW9uRGlnaXRzOiBjdXJyZW5jeS5mcmFjdGlvbkRpZ2l0cyxcbiAgfTtcbn07XG5cbmNvbnN0IGdldEFtb3VudEFzTnVtYmVyRnJvbU1vbmV5VmFsdWUgPSAobW9uZXlWYWx1ZSkgPT5cbiAgbW9uZXlWYWx1ZS50eXBlID09PSAnaGlnaFByZWNpc2lvbidcbiAgICA/IG1vbmV5VmFsdWUucHJlY2lzZUFtb3VudCAvIDEwICoqIG1vbmV5VmFsdWUuZnJhY3Rpb25EaWdpdHNcbiAgICA6IG1vbmV5VmFsdWUuY2VudEFtb3VudCAvXG4gICAgICAxMCAqKiBjdXJyZW5jaWVzW21vbmV5VmFsdWUuY3VycmVuY3lDb2RlXS5mcmFjdGlvbkRpZ2l0cztcblxuLy8gZ2V0cyBjYWxsZWQgd2l0aCBhIHN0cmluZyBhbmQgc2hvdWxkIHJldHVybiBhIGZvcm1hdHRlZCBzdHJpbmdcbmNvbnN0IGZvcm1hdEFtb3VudCA9IChyYXdBbW91bnQsIGN1cnJlbmN5Q29kZSwgbG9jYWxlKSA9PiB7XG4gIC8vIGZhbGxiYWNrIGluIGNhc2UgdGhlIHVzZXIgZGlkbid0IGVudGVyIGFuIGFtb3VudCB5ZXQgKG9yIGl0J3MgaW52YWxpZClcbiAgY29uc3QgbW9uZXlWYWx1ZSA9IGNyZWF0ZU1vbmV5VmFsdWUoY3VycmVuY3lDb2RlLCByYXdBbW91bnQsIGxvY2FsZSkgfHwge1xuICAgIGN1cnJlbmN5Q29kZSxcbiAgICBjZW50QW1vdW50OiBOYU4sXG4gIH07XG5cbiAgY29uc3QgYW1vdW50ID0gZ2V0QW1vdW50QXNOdW1iZXJGcm9tTW9uZXlWYWx1ZShtb25leVZhbHVlKTtcblxuICBjb25zdCBmcmFjdGlvbkRpZ2l0cyA9IG1vbmV5VmFsdWUucHJlY2lzZUFtb3VudFxuICAgID8gbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0c1xuICAgIDogY3VycmVuY2llc1ttb25leVZhbHVlLmN1cnJlbmN5Q29kZV0uZnJhY3Rpb25EaWdpdHM7XG5cbiAgcmV0dXJuIGlzTmFOKGFtb3VudClcbiAgICA/ICcnXG4gICAgOiBhbW91bnQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHMgfSk7XG59O1xuXG5jb25zdCBnZXRBbW91bnRJbnB1dE5hbWUgPSAobmFtZSkgPT4gKG5hbWUgPyBgJHtuYW1lfS5hbW91bnRgIDogdW5kZWZpbmVkKTtcbmNvbnN0IGdldEN1cnJlbmN5RHJvcGRvd25OYW1lID0gKG5hbWUpID0+XG4gIG5hbWUgPyBgJHtuYW1lfS5jdXJyZW5jeUNvZGVgIDogdW5kZWZpbmVkO1xuXG5jb25zdCBNb25leUlucHV0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gIGNvbnN0IFtjdXJyZW5jeUhhc0ZvY3VzLCB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzXSA9IHVzZVRvZ2dsZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Ftb3VudEhhc0ZvY3VzLCB0b2dnbGVBbW91bnRIYXNGb2N1c10gPSB1c2VUb2dnbGVTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGFtb3VudElucHV0UmVmID0gdXNlUmVmKCk7XG5cbiAgY29uc3QgeyBvbkZvY3VzIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQW1vdW50Rm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG9uRm9jdXMpXG4gICAgICBvbkZvY3VzKHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgaWQ6IE1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCksXG4gICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgdG9nZ2xlQW1vdW50SGFzRm9jdXModHJ1ZSk7XG4gIH0sIFt0b2dnbGVBbW91bnRIYXNGb2N1cywgb25Gb2N1cywgcHJvcHMuaWQsIHByb3BzLm5hbWVdKTtcblxuICBjb25zdCB7IG9uQ2hhbmdlIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQW1vdW50Qmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBhbW91bnQgPSBwcm9wcy52YWx1ZS5hbW91bnQudHJpbSgpO1xuICAgIHRvZ2dsZUFtb3VudEhhc0ZvY3VzKGZhbHNlKTtcbiAgICAvLyBTa2lwIGZvcm1hdHRpbmcgZm9yIGVtcHR5IHZhbHVlIG9yIHdoZW4gdGhlIGlucHV0IGlzIHVzZWQgd2l0aCBhblxuICAgIC8vIHVua25vd24gY3VycmVuY3kuXG4gICAgaWYgKGFtb3VudC5sZW5ndGggPiAwICYmIGN1cnJlbmNpZXNbcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlXSkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkQW1vdW50ID0gZm9ybWF0QW1vdW50KFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIHByb3BzLnZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgaW50bC5sb2NhbGVcbiAgICAgICk7XG5cbiAgICAgIC8vIFdoZW4gdGhlIHVzZXIgZW50ZXJlZCBhIHZhbHVlIHdpdGggY2VudFByZWNpc2lvbiwgd2UgY2FuIGZvcm1hdFxuICAgICAgLy8gdGhlIHJlc3VsdGluZyB2YWx1ZSB0byB0aGF0IGN1cnJlbmN5LCBlLmcuIDIwLjEgdG8gMjAuMTBcbiAgICAgIGlmIChTdHJpbmcoZm9ybWF0dGVkQW1vdW50KSAhPT0gYW1vdW50KSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gZW1pdCBhbiBldmVudCB3aXRoIHRoZSBub3cgZm9ybWF0dGVkIHZhbHVlXG4gICAgICAgIGNvbnN0IGZha2VFdmVudCA9IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZWRBbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgb25DaGFuZ2UoZmFrZUV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpbnRsLmxvY2FsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBwcm9wcy5pZCxcbiAgICBwcm9wcy5uYW1lLFxuICAgIHByb3BzLnZhbHVlLmFtb3VudCxcbiAgICBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgdG9nZ2xlQW1vdW50SGFzRm9jdXMsXG4gIF0pO1xuXG4gIGNvbnN0IGhhbmRsZUFtb3VudENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgaWYgKGlzTnVtYmVyaXNoKGV2ZW50LnRhcmdldC52YWx1ZSkpIHtcbiAgICAgICAgb25DaGFuZ2Uoe1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgICAgdmFsdWU6IGV2ZW50LnRhcmdldC52YWx1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgcHJvcHMuaWQsIHByb3BzLm5hbWVdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ3VycmVuY3lDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW5jeUNvZGUgPSBvcHRpb24udmFsdWU7XG4gICAgICBpZiAocHJvcHMudmFsdWUuY3VycmVuY3lDb2RlICE9PSBjdXJyZW5jeUNvZGUpIHtcbiAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBjaGFuZ2VzIGZyb20gYSBjdXJyZW5jeSB3aXRoIDMgZnJhY3Rpb24gZGlnaXRzIHRvXG4gICAgICAgIC8vIGEgY3VycmVuY3kgd2l0aCAyIGZyYWN0aW9uIGRpZ2l0cywgYW5kIHdoZW4gdGhlIGlucHV0IHZhbHVlIHdhc1xuICAgICAgICAvLyBcIjkuMDAwXCIgKDkpLCB0aGVuIGl0IHNob3VsZCBjaGFuZ2UgdG8gXCI5LjAwXCIgdG8gcmVmbGVjdCB0aGUgbmV3XG4gICAgICAgIC8vIGN1cnJlbmN5J3MgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cy5cbiAgICAgICAgLy8gV2hlbiB0aGUgY3VycmVuY3kgd2FzIGEgaGlnaC1wcmVjaXNpb24gcHJpY2UsIHRoZW4gbm8gZGlnaXRzIHNob3VsZFxuICAgICAgICAvLyBiZSBsb3N0XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEFtb3VudCA9IGZvcm1hdEFtb3VudChcbiAgICAgICAgICBwcm9wcy52YWx1ZS5hbW91bnQudHJpbSgpLFxuICAgICAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgICAgICBpbnRsLmxvY2FsZVxuICAgICAgICApO1xuICAgICAgICAvLyBUaGUgdXNlciBjb3VsZCBiZSBjaGFuZ2luZyB0aGUgY3VycmVuY3kgYmVmb3JlIGVudGVyaW5nIGFueSBhbW91bnQsXG4gICAgICAgIC8vIG9yIHdoaWxlIHRoZSBhbW91bnQgaXMgaW52YWxpZC4gSW4gdGhlc2UgY2FzZXMsIHdlIGRvbid0IGF0dGVtcHQgdG9cbiAgICAgICAgLy8gZm9ybWF0IHRoZSBhbW91bnQuXG4gICAgICAgIGNvbnN0IG5leHRBbW91bnQgPSBpc05hTihmb3JtYXR0ZWRBbW91bnQpXG4gICAgICAgICAgPyBwcm9wcy52YWx1ZS5hbW91bnRcbiAgICAgICAgICA6IGZvcm1hdHRlZEFtb3VudDtcblxuICAgICAgICAvLyBjaGFuZ2UgY3VycmVuY3kgY29kZVxuICAgICAgICBjb25zdCBmYWtlQ3VycmVuY3lFdmVudCA9IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSksXG4gICAgICAgICAgICB2YWx1ZTogY3VycmVuY3lDb2RlIHx8ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIG9uQ2hhbmdlKGZha2VDdXJyZW5jeUV2ZW50KTtcblxuICAgICAgICAvLyBjaGFuZ2UgYW1vdW50IGlmIG5lY2Vzc2FyeVxuICAgICAgICBpZiAocHJvcHMudmFsdWUuYW1vdW50ICE9PSBuZXh0QW1vdW50KSB7XG4gICAgICAgICAgb25DaGFuZ2Uoe1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICAgcGVyc2lzdDogKCkgPT4ge30sXG4gICAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgICAgaWQ6IE1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCksXG4gICAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICAgICAgdmFsdWU6IG5leHRBbW91bnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYW1vdW50SW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgaW50bC5sb2NhbGUsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHByb3BzLmlkLFxuICAgICAgcHJvcHMubmFtZSxcbiAgICAgIHByb3BzLnZhbHVlLmFtb3VudCxcbiAgICAgIHByb3BzLnZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICBdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ3VycmVuY3lGb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAob25Gb2N1cylcbiAgICAgIG9uRm9jdXMoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgIG5hbWU6IGdldEN1cnJlbmN5RHJvcGRvd25OYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzKHRydWUpO1xuICB9LCBbb25Gb2N1cywgdG9nZ2xlQ3VycmVuY3lIYXNGb2N1cywgcHJvcHMubmFtZSwgcHJvcHMuaWRdKTtcblxuICBjb25zdCBoYW5kbGVDdXJyZW5jeUJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdG9nZ2xlQ3VycmVuY3lIYXNGb2N1cyhmYWxzZSk7XG4gIH0sIFt0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzXSk7XG5cbiAgY29uc3QgaGFzTm9DdXJyZW5jaWVzID0gcHJvcHMuY3VycmVuY2llcy5sZW5ndGggPT09IDA7XG4gIGNvbnN0IGhhc0ZvY3VzID0gY3VycmVuY3lIYXNGb2N1cyB8fCBhbW91bnRIYXNGb2N1cztcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjdXJyZW5jeVNlbGVjdFN0eWxlcyA9IGNyZWF0ZUN1cnJlbmN5U2VsZWN0U3R5bGVzKFxuICAgIHtcbiAgICAgIGhhc1dhcm5pbmc6IHByb3BzLmhhc1dhcm5pbmcsXG4gICAgICBoYXNFcnJvcjogcHJvcHMuaGFzRXJyb3IsXG4gICAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxuICAgICAgaXNSZWFkT25seTogcHJvcHMuaXNSZWFkT25seSxcbiAgICAgIGhhc0ZvY3VzLFxuICAgICAgbWVudVBvcnRhbFpJbmRleDogcHJvcHMubWVudVBvcnRhbFpJbmRleCxcbiAgICB9LFxuICAgIHRoZW1lXG4gICk7XG4gIGNvbnN0IG9wdGlvbnMgPSBwcm9wcy5jdXJyZW5jaWVzLm1hcCgoY3VycmVuY3lDb2RlKSA9PiAoe1xuICAgIGxhYmVsOiBjdXJyZW5jeUNvZGUsXG4gICAgdmFsdWU6IGN1cnJlbmN5Q29kZSxcbiAgfSkpO1xuXG4gIGNvbnN0IG9wdGlvbiA9ICgoKSA9PiB7XG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbiA9IG9wdGlvbnMuZmluZChcbiAgICAgIChvcHRpb25DYW5kaWRhdGUpID0+IG9wdGlvbkNhbmRpZGF0ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlXG4gICAgKTtcbiAgICBpZiAobWF0Y2hlZE9wdGlvbikgcmV0dXJuIG1hdGNoZWRPcHRpb247XG4gICAgLy8gZW5zdXJlIGFuIG9wdGlvbiBpcyBmb3VuZCwgZXZlbiB3aGVuIHRoZSBjdXJyZW5jaWVzIGRvbid0IGluY2x1ZGVcbiAgICAvLyB0aGUgbW9uZXkgdmFsdWUncyBjdXJyZW5jeUNvZGVcbiAgICBpZiAocHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLnRyaW0oKSAhPT0gJycpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgICAgICB2YWx1ZTogcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgICAgfTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSkoKTtcblxuICBjb25zdCBpZCA9IE1vbmV5SW5wdXQuZ2V0Q3VycmVuY3lEcm9wZG93bklkKHByb3BzLmlkKTtcblxuICBjb25zdCBpc0hpZ2hQcmVjaXNpb24gPVxuICAgICFNb25leUlucHV0LmlzRW1wdHkocHJvcHMudmFsdWUpICYmXG4gICAgTW9uZXlJbnB1dC5pc0hpZ2hQcmVjaXNpb24ocHJvcHMudmFsdWUsIGludGwubG9jYWxlKTtcblxuICBjb25zdCB7IG9uQmx1ciB9ID0gcHJvcHM7XG4gIGNvbnN0IGhhbmRsZUNvbnRhaW5lckJsdXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIGVuc3VyZXMgdGhhdCBib3RoIGZpZWxkcyBhcmUgbWFya2VkIGFzIHRvdWNoZWQgd2hlbiBvbmUgb2YgdGhlbVxuICAgICAgLy8gaXMgYmx1cnJlZFxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2Ygb25CbHVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICFjb250YWluZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KVxuICAgICAgKSB7XG4gICAgICAgIG9uQmx1cih7XG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIG9uQmx1cih7XG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICAgIG5hbWU6IGdldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkJsdXIsIHByb3BzLmlkLCBwcm9wcy5uYW1lXVxuICApO1xuXG4gIGNvbnN0IFRvb2x0aXBQb3J0YWwgPSB1c2VDYWxsYmFjayhcbiAgICAocmVtYWluaW5nUHJvcHMpID0+IDxQb3J0YWwgey4uLnJlbWFpbmluZ1Byb3BzfSBpZD17cHJvcHMuaWR9IC8+LFxuICAgIFtwcm9wcy5pZF1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb25zdHJhaW50cy5Ib3Jpem9udGFsIG1heD17cHJvcHMuaG9yaXpvbnRhbENvbnN0cmFpbnR9PlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGB9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwibW9uZXktaW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgb25CbHVyPXtoYW5kbGVDb250YWluZXJCbHVyfVxuICAgICAgPlxuICAgICAgICB7aGFzTm9DdXJyZW5jaWVzID8gKFxuICAgICAgICAgIDxDdXJyZW5jeUxhYmVsXG4gICAgICAgICAgICBpZD17TW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKX1cbiAgICAgICAgICAgIGlzRGlzYWJsZWQ9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbiAmJiBvcHRpb24ubGFiZWx9XG4gICAgICAgICAgPC9DdXJyZW5jeUxhYmVsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIGlucHV0SWQ9e2lkfVxuICAgICAgICAgICAgbmFtZT17Z2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSl9XG4gICAgICAgICAgICB2YWx1ZT17b3B0aW9ufVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgICAgICAgIGlzU2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICBjb21wb25lbnRzPXt7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9kaXNwbGF5LW5hbWVcbiAgICAgICAgICAgICAgU2luZ2xlVmFsdWU6IChpbm5lclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNpbmdsZVZhbHVlIHsuLi5pbm5lclByb3BzfSBpZD17aWR9IC8+XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9kaXNwbGF5LW5hbWVcbiAgICAgICAgICAgICAgSW5wdXQ6IChvd25Qcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICAgICAgICAgICAgPGNvbXBvbmVudHMuSW5wdXQgey4uLm93blByb3BzfSByZWFkT25seT17cHJvcHMuaXNSZWFkT25seX0gLz5cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRHJvcGRvd25JbmRpY2F0b3IsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgIG1lbnVJc09wZW49e3Byb3BzLmlzUmVhZE9ubHkgPyBmYWxzZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgICAgICAgIHN0eWxlcz17Y3VycmVuY3lTZWxlY3RTdHlsZXN9XG4gICAgICAgICAgICBvbkZvY3VzPXtoYW5kbGVDdXJyZW5jeUZvY3VzfVxuICAgICAgICAgICAgbWVudVBvcnRhbFRhcmdldD17cHJvcHMubWVudVBvcnRhbFRhcmdldH1cbiAgICAgICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbD17cHJvcHMubWVudVNob3VsZEJsb2NrU2Nyb2xsfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVDdXJyZW5jeUJsdXJ9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ3VycmVuY3lDaGFuZ2V9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImN1cnJlbmN5LWRyb3Bkb3duXCJcbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICByZWY9e2Ftb3VudElucHV0UmVmfVxuICAgICAgICAgICAgaWQ9e01vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCl9XG4gICAgICAgICAgICBhdXRvQ29tcGxldGU9e3Byb3BzLmF1dG9Db21wbGV0ZX1cbiAgICAgICAgICAgIG5hbWU9e2dldEFtb3VudElucHV0TmFtZShwcm9wcy5uYW1lKX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUFtb3VudEZvY3VzfVxuICAgICAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlLmFtb3VudH1cbiAgICAgICAgICAgIGNzcz17W1xuICAgICAgICAgICAgICBnZXRBbW91bnRJbnB1dFN0eWxlcyh7IC4uLnByb3BzLCBoYXNGb2N1cyB9KSxcbiAgICAgICAgICAgICAgLy8gYWNjb3VudHMgZm9yIHNpemUgb2YgaWNvblxuICAgICAgICAgICAgICBwcm9wcy5oYXNIaWdoUHJlY2lzaW9uQmFkZ2UgJiZcbiAgICAgICAgICAgICAgICBpc0hpZ2hQcmVjaXNpb24gJiZcbiAgICAgICAgICAgICAgICBjc3NgXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAke3ZhcnMuc3BhY2luZ0x9O1xuICAgICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUFtb3VudENoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQW1vdW50Qmx1cn1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgcmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgICBhdXRvRm9jdXM9e3Byb3BzLmlzQXV0b2ZvY3Vzc2VkfVxuICAgICAgICAgICAgey4uLmZpbHRlckRhdGFBdHRyaWJ1dGVzKHByb3BzKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtwcm9wcy5oYXNIaWdoUHJlY2lzaW9uQmFkZ2UgJiYgaXNIaWdoUHJlY2lzaW9uICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHshcHJvcHMuaXNEaXNhYmxlZCAmJiA8ZGl2IGlkPXtnZXRQb3J0YWxJZChwcm9wcy5pZCl9IC8+fVxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgZ2V0SGlnaFByZWNpc2lvbldyYXBwZXJTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgb2ZmPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wLWVuZFwiXG4gICAgICAgICAgICAgICAgICAvLyB3ZSB1c2UgbmVnYXRpdmUgbWFyZ2luIHRvIG1ha2UgdXAgZm9yIHRoZSBwYWRkaW5nIGluIHRoZSBUb29sdGlwIFdyYXBwZXJcbiAgICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHRvb2x0aXAgaXMgZmx1c2ggd2l0aCB0aGUgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICBzdHlsZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogYCR7dmFycy5zcGFjaW5nU30gLSR7dmFycy5zcGFjaW5nWHN9ICR7dmFycy5zcGFjaW5nU30gMGAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5oaWdoUHJlY2lzaW9uKX1cbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgICAgICAgICAgVG9vbHRpcFdyYXBwZXJDb21wb25lbnQ6IFRvb2x0aXBQb3J0YWwsXG4gICAgICAgICAgICAgICAgICAgIFdyYXBwZXJDb21wb25lbnQ6IFRvb2x0aXBXcmFwcGVyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RnJhY3Rpb25EaWdpdHNJY29uXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPXtwcm9wcy5pc0Rpc2FibGVkID8gJ25ldXRyYWw2MCcgOiAnaW5mbyd9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvQ29uc3RyYWludHMuSG9yaXpvbnRhbD5cbiAgKTtcbn07XG5cbk1vbmV5SW5wdXQuZGlzcGxheU5hbWUgPSAnTW9uZXlJbnB1dCc7XG5cbk1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZCA9IGdldEFtb3VudElucHV0TmFtZTtcblxuTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQgPSBnZXRDdXJyZW5jeURyb3Bkb3duTmFtZTtcblxuTW9uZXlJbnB1dC5jb252ZXJ0VG9Nb25leVZhbHVlID0gKHZhbHVlLCBsb2NhbGUpID0+XG4gIGNyZWF0ZU1vbmV5VmFsdWUoXG4gICAgdmFsdWUuY3VycmVuY3lDb2RlLFxuICAgIHR5cGVvZiB2YWx1ZS5hbW91bnQgPT09ICdzdHJpbmcnID8gdmFsdWUuYW1vdW50LnRyaW0oKSA6ICcnLFxuICAgIGxvY2FsZVxuICApO1xuXG5Nb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZSA9IChtb25leVZhbHVlLCBsb2NhbGUpID0+IHtcbiAgaWYgKCFtb25leVZhbHVlKSByZXR1cm4geyBjdXJyZW5jeUNvZGU6ICcnLCBhbW91bnQ6ICcnIH07XG5cbiAgd2FybmluZyhcbiAgICB0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJyxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IEEgbG9jYWxlIG11c3QgYmUgcGFzc2VkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQnXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICB0eXBlb2YgbW9uZXlWYWx1ZSA9PT0gJ29iamVjdCcsXG4gICAgJ01vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlOiBWYWx1ZSBtdXN0IGJlIHBhc3NlZCBhcyBhbiBvYmplY3Qgb3IgYmUgdW5kZWZpbmVkJ1xuICApO1xuXG4gIHdhcm5pbmcoXG4gICAgdHlwZW9mIG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlID09PSAnc3RyaW5nJyxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IFZhbHVlIG11c3QgY29udGFpbiBcImN1cnJlbmN5Q29kZVwiJ1xuICApO1xuXG4gIHdhcm5pbmcoXG4gICAgaGFzKGN1cnJlbmNpZXMsIG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlKSxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IFZhbHVlIG11c3QgdXNlIGtub3duIGN1cnJlbmN5IGNvZGUnXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICAvLyBoaWdoUHJlY2lzaW9uIG9yIGNlbnRQcmVjaXNpb24gdmFsdWVzIG11c3QgYmUgc2V0XG4gICAgdHlwZW9mIG1vbmV5VmFsdWUuY2VudEFtb3VudCA9PT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlb2YgbW9uZXlWYWx1ZS5wcmVjaXNlQW1vdW50ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICB0eXBlb2YgbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicpLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogVmFsdWUgbXVzdCBjb250YWluIFwiYW1vdW50XCInXG4gICk7XG5cbiAgY29uc3QgYW1vdW50ID0gZm9ybWF0QW1vdW50KFxuICAgIGdldEFtb3VudEFzTnVtYmVyRnJvbU1vbmV5VmFsdWUobW9uZXlWYWx1ZSkudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1vbmV5VmFsdWUuZnJhY3Rpb25EaWdpdHMsXG4gICAgfSksXG4gICAgbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgbG9jYWxlXG4gICk7XG5cbiAgcmV0dXJuIHsgYW1vdW50LCBjdXJyZW5jeUNvZGU6IG1vbmV5VmFsdWUuY3VycmVuY3lDb2RlIH07XG59O1xuXG5Nb25leUlucHV0LmlzRW1wdHkgPSAoZm9ybVZhbHVlKSA9PlxuICAhZm9ybVZhbHVlIHx8XG4gIGZvcm1WYWx1ZS5hbW91bnQudHJpbSgpID09PSAnJyB8fFxuICBmb3JtVmFsdWUuY3VycmVuY3lDb2RlLnRyaW0oKSA9PT0gJyc7XG5cbk1vbmV5SW5wdXQuaXNIaWdoUHJlY2lzaW9uID0gKGZvcm1WYWx1ZSwgbG9jYWxlKSA9PiB7XG4gIHdhcm5pbmcoXG4gICAgIU1vbmV5SW5wdXQuaXNFbXB0eShmb3JtVmFsdWUpLFxuICAgICdNb25leVZhbHVlLmlzSGlnaFByZWNpc2lvbiBtYXkgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGVtcHR5IG1vbmV5IHZhbHVlLidcbiAgKTtcbiAgY29uc3QgbW9uZXlWYWx1ZSA9IE1vbmV5SW5wdXQuY29udmVydFRvTW9uZXlWYWx1ZShmb3JtVmFsdWUsIGxvY2FsZSk7XG4gIHJldHVybiBtb25leVZhbHVlICYmIG1vbmV5VmFsdWUudHlwZSA9PT0gJ2hpZ2hQcmVjaXNpb24nO1xufTtcblxuTW9uZXlJbnB1dC5pc1RvdWNoZWQgPSAodG91Y2hlZCkgPT5cbiAgQm9vbGVhbih0b3VjaGVkICYmIHRvdWNoZWQuY3VycmVuY3lDb2RlICYmIHRvdWNoZWQuYW1vdW50KTtcblxuTW9uZXlJbnB1dC5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBVc2VkIGFzIEhUTUwgaWQgcHJvcGVydHkuIEFuIGlkIGlzIGF1dG8tZ2VuZXJhdGVkIHdoZW4gaXQgaXMgbm90IHNwZWNpZmllZC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVXNlZCBhcyBIVE1MIGBhdXRvY29tcGxldGVgIHByb3BlcnR5XG4gICAqL1xuICBhdXRvQ29tcGxldGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVzZWQgdG8gY3JlYXRlIGEgSFRNTCBgbmFtZWAgcHJvcGVydHkgZm9yIHRoZSBhbW91bnQgaW5wdXQgZmllbGQgKGAke25hbWV9LmFtb3VudGApIGFuZCB0aGUgY3VycmVuY3kgZHJvcGRvd24gKGAke25hbWV9LmN1cnJlbmN5Q29kZWApLlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBpbnB1dC4gQ29uc2lzdHMgb2YgdGhlIGN1cnJlbmN5IGNvZGUgYW5kIGFuIGFtb3VudC4gYGFtb3VudGAgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbW91bnQuIEEgZG90IGhhcyB0byBiZSB1c2VkIGFzIHRoZSBkZWNpbWFsIHNlcGFyYXRvci5cbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFtb3VudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGN1cnJlbmN5Q29kZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogTGlzdCBvZiBwb3NzaWJsZSBjdXJyZW5jaWVzLiBXaGVuIG5vdCBwcm92aWRlZCBvciBlbXB0eSwgdGhlIGNvbXBvbmVudCByZW5kZXJzIGEgbGFiZWwgd2l0aCB0aGUgdmFsdWUncyBjdXJyZW5jeSBpbnN0ZWFkIG9mIGEgZHJvcGRvd24uXG4gICAqL1xuICBjdXJyZW5jaWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIGlucHV0XG4gICAqL1xuICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGJsdXJyZWRcbiAgICovXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCBpcyBmb2N1c2VkXG4gICAqL1xuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBpbnB1dCBjYW5ub3QgYmUgbW9kaWZpZWQgKGUuZyBub3QgYXV0aG9yaXplZCwgb3IgY2hhbmdlcyBjdXJyZW50bHkgc2F2aW5nKS5cbiAgICovXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGZpZWxkIGlzIGRpc3BsYXlpbmcgcmVhZC1vbmx5IGNvbnRlbnRcbiAgICovXG4gIGlzUmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRm9jdXMgdGhlIGlucHV0IG9uIGluaXRpYWwgcmVuZGVyXG4gICAqL1xuICBpc0F1dG9mb2N1c3NlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCB0aGUgZXZlbnQgb2YgdGhlIGlucHV0IG9yIGRyb3Bkb3duIHdoZW4gZWl0aGVyIHRoZSBjdXJyZW5jeSBvciB0aGUgYW1vdW50IGhhdmUgY2hhbmdlZC5cbiAgICogPGJyIC8+XG4gICAqIFNpZ25hdHVyZTogYChldmVudCkgPT4gdm9pZGBcbiAgICovXG4gIG9uQ2hhbmdlOiByZXF1aXJlZElmKFByb3BUeXBlcy5mdW5jLCAocHJvcHMpID0+ICFwcm9wcy5pc1JlYWRPbmx5KSxcbiAgLyoqXG4gICAqIERvbSBlbGVtZW50IHRvIHBvcnRhbCB0aGUgY3VycmVuY3kgc2VsZWN0IG1lbnUgdG9cbiAgICovXG4gIG1lbnVQb3J0YWxUYXJnZXQ6IFByb3BUeXBlcy5pbnN0YW5jZU9mKFNhZmVIVE1MRWxlbWVudCksXG4gIC8qKlxuICAgKiB6LWluZGV4IHZhbHVlIGZvciB0aGUgY3VycmVuY3kgc2VsZWN0IG1lbnUgcG9ydGFsXG4gICAqL1xuICBtZW51UG9ydGFsWkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogd2hldGhlciB0aGUgbWVudSBzaG91bGQgYmxvY2sgc2Nyb2xsIHdoaWxlIG9wZW5cbiAgICovXG4gIG1lbnVTaG91bGRCbG9ja1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBpbnB1dCBoYXMgZXJyb3JzXG4gICAqL1xuICBoYXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBDb250cm9sIHRvIGluZGljYXRlIG9uIHRoZSBpbnB1dCBpZiB0aGVyZSBhcmUgc2VsZWN0ZWQgdmFsdWVzIHRoYXQgYXJlIHBvdGVudGlhbGx5IGludmFsaWRcbiAgICovXG4gIGhhc1dhcm5pbmc6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogU2hvd3MgaGlnaCBwcmVjaXNpb24gYmFkZ2UgaW4gY2FzZSBjdXJyZW50IHZhbHVlIHVzZXMgaGlnaCBwcmVjaXNpb24uXG4gICAqL1xuICBoYXNIaWdoUHJlY2lzaW9uQmFkZ2U6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSG9yaXpvbnRhbCBzaXplIGxpbWl0IG9mIHRoZSBpbnB1dCBmaWVsZHMuXG4gICAqL1xuICBob3Jpem9udGFsQ29uc3RyYWludDogUHJvcFR5cGVzLm9uZU9mKFtcbiAgICAzLFxuICAgIDQsXG4gICAgNSxcbiAgICA2LFxuICAgIDcsXG4gICAgOCxcbiAgICA5LFxuICAgIDEwLFxuICAgIDExLFxuICAgIDEyLFxuICAgIDEzLFxuICAgIDE0LFxuICAgIDE1LFxuICAgIDE2LFxuICAgICdzY2FsZScsXG4gICAgJ2F1dG8nLFxuICBdKSxcbn07XG5cbk1vbmV5SW5wdXQuZGVmYXVsdFByb3BzID0ge1xuICBjdXJyZW5jaWVzOiBbXSxcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdzY2FsZScsXG4gIG1lbnVQb3J0YWxaSW5kZXg6IDEsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb25leUlucHV0O1xuIl19 */"), process.env.NODE_ENV === "production" ? "" : ";label:MoneyInput;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vbmV5LWlucHV0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFtQlkiLCJmaWxlIjoibW9uZXktaW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VSZWYsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcbmltcG9ydCByZXF1aXJlZElmIGZyb20gJ3JlYWN0LXJlcXVpcmVkLWlmJztcbmltcG9ydCBTZWxlY3QsIHsgY29tcG9uZW50cyB9IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyB1c2VJbnRsIH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgeyBjc3MsIHVzZVRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyBhcyB2YXJzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQge1xuICB3YXJuaW5nLFxuICBpc051bWJlcmlzaCxcbiAgU2FmZUhUTUxFbGVtZW50LFxuICBmaWx0ZXJEYXRhQXR0cmlidXRlcyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvdXRpbHMnO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvdG9vbHRpcCc7XG5pbXBvcnQge1xuICBEcm9wZG93bkluZGljYXRvcixcbiAgY3JlYXRlU2VsZWN0U3R5bGVzLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zZWxlY3QtdXRpbHMnO1xuaW1wb3J0IHsgRnJhY3Rpb25EaWdpdHNJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IENvbnN0cmFpbnRzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2NvbnN0cmFpbnRzJztcbmltcG9ydCB7IHVzZVRvZ2dsZVN0YXRlIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaG9va3MnO1xuaW1wb3J0IGN1cnJlbmNpZXMgZnJvbSAnLi9jdXJyZW5jaWVzLmpzb24nO1xuaW1wb3J0IHtcbiAgZ2V0SGlnaFByZWNpc2lvbldyYXBwZXJTdHlsZXMsXG4gIGdldEN1cnJlbmN5TGFiZWxTdHlsZXMsXG4gIGdldEFtb3VudElucHV0U3R5bGVzLFxufSBmcm9tICcuL21vbmV5LWlucHV0LnN0eWxlcyc7XG5pbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi9tZXNzYWdlcyc7XG5cbmNvbnN0IFRvb2x0aXBXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbmA7XG5cbmNvbnN0IGdldFBvcnRhbElkID0gKGlkKSA9PiBgcG9ydGFsLSR7aWR9YDtcbmNvbnN0IGdldFBvcnRhbE5vZGUgPSAoaWQpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2dldFBvcnRhbElkKGlkKX1gKTtcblxuY29uc3QgUG9ydGFsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGRvbU5vZGUgPSBnZXRQb3J0YWxOb2RlKHByb3BzLmlkKTtcbiAgcmV0dXJuIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChwcm9wcy5jaGlsZHJlbiwgZG9tTm9kZSk7XG59O1xuXG5jb25zdCBDdXJyZW5jeUxhYmVsID0gKHByb3BzKSA9PiAoXG4gIDxsYWJlbCBodG1sRm9yPXtwcm9wcy5pZH0gY3NzPXtnZXRDdXJyZW5jeUxhYmVsU3R5bGVzKCl9PlxuICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgPC9sYWJlbD5cbik7XG5cbkN1cnJlbmN5TGFiZWwuZGlzcGxheU5hbWUgPSAnQ3VycmVuY3lMYWJlbCc7XG5cbkN1cnJlbmN5TGFiZWwucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuY29uc3QgU2luZ2xlVmFsdWUgPSAoeyBpZCwgLi4ucHJvcHMgfSkgPT4gKFxuICA8Y29tcG9uZW50cy5TaW5nbGVWYWx1ZSB7Li4ucHJvcHN9PlxuICAgIDxsYWJlbCBodG1sRm9yPXtpZH0+e3Byb3BzLmNoaWxkcmVufTwvbGFiZWw+XG4gIDwvY29tcG9uZW50cy5TaW5nbGVWYWx1ZT5cbik7XG5cblNpbmdsZVZhbHVlLmRpc3BsYXlOYW1lID0gJ1NpbmdsZVZhbHVlJztcblxuU2luZ2xlVmFsdWUucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuLy8gb3ZlcndyaXRlIHN0eWxlcyBvZiBjcmVhdGVTZWxlY3RTdHlsZXNcbmNvbnN0IGNyZWF0ZUN1cnJlbmN5U2VsZWN0U3R5bGVzID0gKFxuICB7IGhhc1dhcm5pbmcsIGhhc0Vycm9yLCBpc0Rpc2FibGVkLCBpc1JlYWRPbmx5LCBoYXNGb2N1cywgbWVudVBvcnRhbFpJbmRleCB9LFxuICB0aGVtZVxuKSA9PiB7XG4gIGNvbnN0IHNlbGVjdFN0eWxlcyA9IGNyZWF0ZVNlbGVjdFN0eWxlcyhcbiAgICB7XG4gICAgICBoYXNXYXJuaW5nLFxuICAgICAgaGFzRXJyb3IsXG4gICAgICBtZW51UG9ydGFsWkluZGV4LFxuICAgIH0sXG4gICAgdGhlbWVcbiAgKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zZWxlY3RTdHlsZXMsXG4gICAgY29udHJvbDogKGJhc2UsIHN0YXRlKSA9PiAoe1xuICAgICAgLi4uc2VsZWN0U3R5bGVzLmNvbnRyb2woYmFzZSwgc3RhdGUpLFxuICAgICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6ICcwJyxcbiAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAnMCcsXG4gICAgICBib3JkZXJSaWdodDogJzAnLFxuICAgICAgbWluV2lkdGg6ICc3MnB4JyxcbiAgICAgIGJvcmRlckNvbG9yOiAoKCkgPT4ge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZClcbiAgICAgICAgICByZXR1cm4gYCR7dmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkRpc2FibGVkfSAhaW1wb3J0YW50YDtcbiAgICAgICAgaWYgKGhhc0Vycm9yKSByZXR1cm4gdmFycy5ib3JkZXJDb2xvckZvcklucHV0V2hlbkVycm9yO1xuICAgICAgICBpZiAoaGFzV2FybmluZykgcmV0dXJuIHZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5XYXJuaW5nO1xuICAgICAgICBpZiAoaGFzRm9jdXMpIHJldHVybiB2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXRXaGVuRm9jdXNlZDtcbiAgICAgICAgaWYgKGlzUmVhZE9ubHkpXG4gICAgICAgICAgcmV0dXJuIGAke3ZhcnMuYm9yZGVyQ29sb3JGb3JJbnB1dFdoZW5SZWFkb25seX0gIWltcG9ydGFudGA7XG4gICAgICAgIHJldHVybiB2YXJzLmJvcmRlckNvbG9yRm9ySW5wdXQ7XG4gICAgICB9KSgpLFxuICAgICAgY3Vyc29yOiAoKCkgPT4ge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuICdub3QtYWxsb3dlZCc7XG4gICAgICAgIGlmIChpc1JlYWRPbmx5KSByZXR1cm4gYGRlZmF1bHRgO1xuICAgICAgICByZXR1cm4gJ3BvaW50ZXInO1xuICAgICAgfSkoKSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKCgpID0+IHtcbiAgICAgICAgaWYgKGlzUmVhZE9ubHkpIHJldHVybiB2YXJzLmJhY2tncm91bmRDb2xvckZvcklucHV0O1xuICAgICAgICByZXR1cm4gYmFzZS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9KSgpLFxuICAgIH0pLFxuICAgIHNpbmdsZVZhbHVlOiAoYmFzZSkgPT4gKHtcbiAgICAgIC4uLmJhc2UsXG4gICAgICBtYXJnaW5MZWZ0OiAwLFxuICAgICAgbWF4V2lkdGg6ICdpbml0aWFsJyxcbiAgICAgIGNvbG9yOiAoKCkgPT4ge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuRGlzYWJsZWQ7XG4gICAgICAgIGlmIChoYXNFcnJvcikgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuRXJyb3I7XG4gICAgICAgIGlmIChoYXNXYXJuaW5nKSByZXR1cm4gdmFycy5mb250Q29sb3JGb3JJbnB1dFdoZW5XYXJuaW5nO1xuICAgICAgICBpZiAoaXNSZWFkT25seSkgcmV0dXJuIHZhcnMuZm9udENvbG9yRm9ySW5wdXRXaGVuUmVhZG9ubHk7XG4gICAgICAgIHJldHVybiBiYXNlLmNvbG9yO1xuICAgICAgfSkoKSxcbiAgICB9KSxcbiAgICBkcm9wZG93bkluZGljYXRvcjogKCkgPT4gKHtcbiAgICAgIGZpbGw6IGlzUmVhZE9ubHkgPyB2YXJzLmZvbnRDb2xvckZvcklucHV0V2hlblJlYWRvbmx5IDogJycsXG4gICAgfSksXG4gIH07XG59O1xuXG4vLyBUaGUgTW9uZXlJbnB1dCBjb21wb25lbnQgYWx3YXlzIG9wZXJhdGVzIG9uIGEgdmFsdWUgY29uc2lzdGluZyBvZjpcbi8vICAgeyBhbW91bnQ6IFN0cmluZywgY3VycmVuY3lDb2RlOiBTdHJpbmcgfVxuLy9cbi8vIFRoZSBhbW91bnQgbWF5IG9ubHkgdXNlIGEgZG90IGFzIHRoZSBkZWNpbWFsIHNlcGFyYXRvci5cbi8vIFRoZSBjdXJyZW5jeUNvZGUgbXVzdCBiZSBzdXBwb3J0ZWQgYnkgdGhlIEFQSS5cbi8vXG4vLyBUaGUgTW9uZXlJbnB1dCBkb2VzIG5vdCBkbyBhbnkgdmFsaWRhdGlvbiBvbiBpdHMgb3duLiBJdCBvbmx5IHNlcnZlcyBhcyBhIHdheVxuLy8gdG8gZ2V0IHRoZSBhbW91bnQgYW5kIGN1cnJlbmN5Q29kZSBpbnB1dCBmcm9tIHRoZSB1c2VyLiBWYWxpZGF0aW9uIGlzIGFsd2F5c1xuLy8gdXAgdG8gdGhlIHBhcmVudC5cbi8vXG4vLyBUaGUgQ1RQIEFQSSBzdXBwb3J0cyBwcmljZXMgdHdvIHR5cGVzIG9mIHByaWNlczogY2VudFByZWNpc2lvbiBhbmRcbi8vIGhpZ2hQcmVjaXNpb24uIFRoZSBNb25leUlucHV0IGl0c2VsZiBkb2VzIG5vdCBrbm93IGFib3V0IHRoZXNlLiBIb3dldmVyLFxuLy8gaXQgaGFzIHR3byBzdGF0aWMgbWV0aG9kcyBkZWZpbmVkIChjb252ZXJ0VG9Nb25leVZhbHVlIGFuZCBwYXJzZU1vbmV5VmFsdWUpLFxuLy8gd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIE1vbmV5SW5wdXQgdmFsdWUgYW5kIHRoZSBNb25leVZhbHVlXG4vLyBzdXBwb3J0ZWQgYnkgdGhlIEFQSS5cbi8vIFNvbWUgcGxhY2VzIGluIHRoZSBBUEkgZG8gbm90IHN1cHBvcnQgaGlnaFByZWNpc2lvbiBwcmljZXMsIGJ1dCB0aGVcbi8vIGNvbnZlcnRUb01vbmV5VmFsdWUgd2lsbCBhbHdheXMgcmV0dXJuIGVpdGhlciBhIGNlbnRQcmVjaXNpb24gb3IgYVxuLy8gaGlnaFByZWNpc2lvbiBwcmljZS4gSXQncyB1cCB0aGUgTW9uZXlJbnB1dCdzIHBhcmVudCB0byBzaG93IGEgdmFsaWRhdGlvblxuLy8gZXJyb3IgaW4gY2FzZSBhIGhpZ2hQcmVjaXNpb24gcHJpY2UgaXMgdXNlZC5cbi8vXG4vLyBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXMgdG8gaGF2ZSBoaWdoUHJlY2lzaW9uIHdoZW4gdGhlIG51bWJlciBvZiBzdXBwbGllZFxuLy8gZnJhY3Rpb24gZGlnaXRzIGV4Y2VlZCB0aGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0aGUgY3VycmVuY3kgdXNlcy4gRm9yXG4vLyBleGFtcGxlLCA0Mi4wMCDigqwgaXMgYWx3YXlzIGEgY2VudFByZWNpc2lvbiBwcmljZSwgd2hpbGUgNDIuMDAxIOKCrCBpcyBhbHdheXMgYVxuLy8gaGlnaFByZWNpc2lvbiBwcmljZS4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhZSA0Mi4wMCDigqwgYXMgYSBoaWdoUHJlY2lzaW9uXG4vLyBwcmljZS5cbi8vXG4vLyBUaGUgZmlyc3QgdGltZSB0aGUgY29tcG9uZW50IHJlbmRlcnMsIHdlIHdhbnQgdG8gdHJ5IHRvIHNob3cgdGhlIGNlbnRBbW91bnRcbi8vIGFzIGEgZm9ybWF0dGVkIG51bWJlci4gVG8gYWNoaWV2ZSB0aGlzLCB0aGUgcGFyc2VNb25leVZhbHVlIGZ1bmN0aW9uIGNhblxuLy8gYmUgdXNlZCB0byB0dXJuIHRoZSBBUEkgdmFsdWUgaW50byBhIHZhbHVlIHRoZSBNb25leUlucHV0IHVuZGVyc3RhbmRzLlxuLy8gRHVyaW5nIHRoaXMgdHJhbnNmb3JtYXRpb24sIHRoZSBtb25leSB2YWx1ZSB3aWxsIGdldCBmb3JtYXR0ZWQgaW50byBcImFtb3VudFwiLlxuLy9cbi8vIFdoZW4gdGhlIHVzZXIgY2hhbmdlcyB0aGUgdmFsdWUsIHdlIGRvbid0IHdhbnQgdG8gZm9ybWF0IGFnYWluLiBXZSBvbmx5IGZvcm1hdFxuLy8gaW4gY2FzZSB0aGUgdXNlciBibHVycyB0aGUgZmllbGQuIFRoaXMgYXZvaWRzIG1hbnkgZWRnZSBjYXNlcyB3aGVyZSB0aGVcbi8vIGZvcm1hdHRpbmcgd291bGQgbWVzcyB3aXRoIHRoZSB1c2VyJ3MgaW5wdXQuXG4vL1xuLy9cbi8vIEEgZnVsbCBleGFtcGxlIG9mIGFuIE1vbmV5VmFsdWUgd2l0aCBjZW50UHJlY2lzaW9uIHdvdWxkIGJlXG4vLyB7XG4vLyAgIFwidHlwZVwiOiBcImNlbnRQcmVjaXNpb25cIixcbi8vICAgXCJjdXJyZW5jeUNvZGVcIjogXCJFVVJcIixcbi8vICAgXCJjZW50QW1vdW50XCI6IDQyMDAsXG4vLyAgIFwiZnJhY3Rpb25EaWdpdHNcIjogMlxuLy8gfVxuLy8gd2hpY2ggZXF1YWxzIDQyLjAwIOKCrFxuLy9cbi8vIEEgZnVsbCBleGFtcGxlIG9mIGFuIE1vbmV5VmFsdWUgd2l0aCBoaWdoUHJlY2lzaW9uIHdvdWxkIGJlXG4vLyB7XG4vLyAgXCJ0eXBlXCI6IFwiaGlnaFByZWNpc2lvblwiLFxuLy8gIFwiY3VycmVuY3lDb2RlXCI6IFwiRVVSXCIsXG4vLyAgXCJjZW50QW1vdW50XCI6IDEsXG4vLyAgXCJwcmVjaXNlQW1vdW50XCI6IDEyMzQ1Nixcbi8vICBcImZyYWN0aW9uRGlnaXRzXCI6IDdcbi8vIH1cbi8vIHdoaWNoIGVxdWFscyAwLjAxMjM0NTYg4oKsXG5cbi8vIFBhcnNpbmdcbi8vIFNpbmNlIG1vc3QgdXNlcnMgYXJlIG5vdCBjYXJlZnVsIGFib3V0IGhvdyB0aGV5IGVudGVyIHZhbHVlcywgd2Ugd2lsbCBwYXJzZVxuLy8gYm90aCBgLmAgYW5kIGAsYCBhcyBkZWNpbWFsIHNlcGFyYXRvcnMuXG4vLyBXaGVuIGEgdmFsdWUgaXMgYDEuMDAwLDAwYCB3ZSBwYXJzZSBpdCBhcyBgMTAwMGAuXG4vLyBXaGVuIGEgdmFsdWUgaXMgYDEsMDAwLjAwYCB3ZSBhbHNvIHBhcnNlIGl0IGFzIGAxMDAwYC5cbi8vXG4vLyBUaGlzIG1lYW5zIHRoZSBoaWdoZXN0IGFtb3VudCBhbHdheXMgd2lucy4gV2UgZG8gdGhpcyBieSBjb21wYXJpbmcgdGhlIGxhc3Rcbi8vIHBvc2l0aW9uIG9mIGAuYCBhbmQgYCxgLiBXaGF0ZXZlciBvY2N1cnMgbGF0ZXIgaXMgdXNlZCBhcyB0aGUgZGVjaW1hbFxuLy8gc2VwYXJhdG9yLlxuZXhwb3J0IGNvbnN0IHBhcnNlUmF3QW1vdW50VG9OdW1iZXIgPSAocmF3QW1vdW50LCBsb2NhbGUpID0+IHtcbiAgbGV0IGZyYWN0aW9uc1NlcGFyYXRvcjtcblxuICBpZiAobG9jYWxlKSB7XG4gICAgZnJhY3Rpb25zU2VwYXJhdG9yID0gKDIuNSkgLy8gd2UgbmVlZCBhbnkgbnVtYmVyIHdpdGggZnJhY3Rpb25zLCBzbyB0aGF0IHdlIGtub3cgd2hhdCBpcyB0aGUgZnJhY3Rpb25cbiAgICAgIC50b0xvY2FsZVN0cmluZyhsb2NhbGUpIC8vIFwic3ltYm9sXCIgZm9yIHRoZSBwcm92aWRlZCBsb2NhbGVcbiAgICAgIC5yZXBsYWNlKC9cXGQvZywgJycpOyAvLyB0aGVuIHdlIHJlbW92ZSB0aGUgbnVtYmVycyBhbmQga2VlcCB0aGUgXCJzeW1ib2xcIlxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhc3REb3QgPSBTdHJpbmcocmF3QW1vdW50KS5sYXN0SW5kZXhPZignLicpO1xuICAgIGNvbnN0IGxhc3RDb21tYSA9IFN0cmluZyhyYXdBbW91bnQpLmxhc3RJbmRleE9mKCcsJyk7XG4gICAgZnJhY3Rpb25zU2VwYXJhdG9yID0gbGFzdENvbW1hID4gbGFzdERvdCA/ICcsJyA6ICcuJztcbiAgfVxuXG4gIGZyYWN0aW9uc1NlcGFyYXRvciA9IGZyYWN0aW9uc1NlcGFyYXRvciA9PT0gJy4nID8gJ1xcXFwuJyA6IGZyYWN0aW9uc1NlcGFyYXRvcjsgLy8gaGVyZSB3ZSBlc2NhcGUgdGhlICcuJyB0byB1c2UgaXQgYXMgcmVnZXhcbiAgLy8gVGhlIHJhdyBhbW91bnQgd2l0aCBvbmx5IG9uZSBzcGFyYXRvclxuICBjb25zdCBub3JtYWxpemVkQW1vdW50ID0gU3RyaW5nKHJhd0Ftb3VudClcbiAgICAucmVwbGFjZShuZXcgUmVnRXhwKGBbXjAtOSR7ZnJhY3Rpb25zU2VwYXJhdG9yfV1gLCAnZycpLCAnJykgLy8gd2UganVzdCBrZWVwIHRoZSBudW1iZXJzIGFuZCB0aGUgZnJhY3Rpb24gc3ltYm9sXG4gICAgLnJlcGxhY2UoZnJhY3Rpb25zU2VwYXJhdG9yLCAnLicpOyAvLyB0aGVuIHdlIGNoYW5nZSB3aGF0ZXZlciBgZnJhY3Rpb25zU2VwYXJhdG9yYCB3YXMgdG8gYC5gIHNvIHdlIGNhbiBwYXJzZSBpdCBhcyBmbG9hdFxuXG4gIHJldHVybiBwYXJzZUZsb2F0KG5vcm1hbGl6ZWRBbW91bnQsIDEwKTtcbn07XG5cbi8vIFR1cm5zIHRoZSB1c2VyIGlucHV0IGludG8gYSB2YWx1ZSB0aGUgTW9uZXlJbnB1dCBjYW4gcGFzcyB1cCB0aHJvdWdoIG9uQ2hhbmdlXG4vLyBJbiBjYXNlIHRoZSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIGNvbnRhaW5lZCBpbiBcImFtb3VudFwiIGV4Y2VlZHMgdGhlXG4vLyBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRoZSBjdXJyZW5jeSB1c2VzLCBpdCB3aWxsIGVtaXQgYSBwcmljZSBvZlxuLy8gdHlwZSBcImhpZ2hQcmVjaXNpb25cIiBpbnN0ZWFkIG9mIHRoZSByZWd1bGFyIFwiY2VudFByZWNpc2lvblwiLlxuLy8gSXQgd2lsbCByZXR1cm4gXCJudWxsXCIgaW4gY2FzZSBhbiBpbnZhbGlkIHZhbHVlIGlzIGVudGVyZWQuXG4vLyBUaGUgdmFsdWUgaXMgaW52YWxpZCB3aGVuXG4vLyAgLSBubyBhbW91bnQgd2FzIGVudGVyZWRcbi8vICAtIGFuIGludmFsaWQgYW1vdW50IHdhcyBlbnRlcmVkXG4vLyAgLSBubyBjdXJyZW5jeSB3YXMgc2VsZWN0ZWRcbi8vXG4vLyBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgdGhlIFwiYW1vdW50XCIgdG8gYmUgYSB0cmltbWVkIHZhbHVlLlxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1vbmV5VmFsdWUgPSAoY3VycmVuY3lDb2RlLCByYXdBbW91bnQsIGxvY2FsZSkgPT4ge1xuICBpZiAoIWN1cnJlbmN5Q29kZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgY3VycmVuY3kgPSBjdXJyZW5jaWVzW2N1cnJlbmN5Q29kZV07XG4gIGlmICghY3VycmVuY3kpIHJldHVybiBudWxsO1xuXG4gIGlmIChyYXdBbW91bnQubGVuZ3RoID09PSAwIHx8ICFpc051bWJlcmlzaChyYXdBbW91bnQpKSByZXR1cm4gbnVsbDtcblxuICB3YXJuaW5nKFxuICAgIGxvY2FsZSB8fCBjdXJyZW5jeS5mcmFjdGlvbkRpZ2l0cyAhPT0gMCxcbiAgICBgQSBsb2NhbGUgbXVzdCBiZSBwcm92aWRlZCB3aGVuIGN1cnJlbmN5IGhhcyBubyBmcmFjdGlvbiBkaWdpdHMgKCR7Y3VycmVuY3lDb2RlfSlgXG4gICk7XG4gIGNvbnN0IGFtb3VudEFzTnVtYmVyID0gcGFyc2VSYXdBbW91bnRUb051bWJlcihyYXdBbW91bnQsIGxvY2FsZSk7XG4gIGlmIChpc05hTihhbW91bnRBc051bWJlcikpIHJldHVybiBudWxsO1xuXG4gIC8vIFRoZSBjZW50IGFtb3VudCBpcyByb3VuZGVkIHRvIHRoZSBjdXJyZW5jaWUncyBkZWZhdWx0IG51bWJlclxuICAvLyBvZiBmcmFjdGlvbiBkaWdpdHMgZm9yIHByaWNlcyB3aXRoIGhpZ2ggcHJlY2lzaW9uLlxuICAvL1xuICAvLyBBZGRpdGlvbmFsbHksIEphdmFTY3JpcHQgaXMgc29tZXRpbWVzIGluY29ycmVjdCB3aGVuIG11bHRpcGx5aW5nIGZsb2F0cyxcbiAgLy8gICBlLmcuIDIuNDkgKiAxMDAgLT4gMjQ5LjAwMDAwMDAwMDAwMDAzXG4gIC8vIFdoaWxlIGluYWNjdXJhY3kgZnJvbSBtdWx0aXBseWluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzIGlzIGFcbiAgLy8gZ2VuZXJhbCBwcm9ibGVtIGluIEpTLCB3ZSBjYW4gYXZvaWQgaXQgYnkgY3V0dGluZyBvZmYgYWxsXG4gIC8vIGRlY2ltYWxzLiBUaGlzIGlzIHBvc3NpYmxlIHNpbmNlIGNlbnRzIGlzIHRoZSBiYXNlIHVuaXQsIHNvIHdlXG4gIC8vIG9wZXJhdGUgb24gaW50ZWdlcnMgYW55d2F5c1xuICAvLyBBbHNvIHdlIHNob3VsZCB0aGUgcm91bmQgdGhlIHZhbHVlIHRvIGVuc3VyZSB0aGF0IHdlIGNvbWUgY2xvc2VcbiAgLy8gdG8gdGhlIG5lYXJlc3QgZGVjaW1hbCB2YWx1ZVxuICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb21tZXJjZXRvb2xzL21lcmNoYW50LWNlbnRlci1mcm9udGVuZC9wdWxsLzc3MFxuICBjb25zdCBjZW50QW1vdW50ID0gTWF0aC50cnVuYyhcbiAgICBNYXRoLnJvdW5kKGFtb3VudEFzTnVtYmVyICogMTAgKiogY3VycmVuY3kuZnJhY3Rpb25EaWdpdHMpXG4gICk7XG5cbiAgY29uc3QgZnJhY3Rpb25EaWdpdHNPZkFtb3VudCA9XG4gICAgLy8gVGhlIGNvbnZlcnNpb24gdG8gYSBzdHJpbmcgd2lsbCBhbHdheXMgdXNlIGEgZG90IGFzIHRoZSBzZXBhcmF0b3IuXG4gICAgLy8gVGhhdCBtZWFucyB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSBhIGNvbW1hLlxuICAgIFN0cmluZyhhbW91bnRBc051bWJlcikuaW5kZXhPZignLicpID09PSAtMVxuICAgICAgPyAwXG4gICAgICA6IFN0cmluZyhhbW91bnRBc051bWJlcikubGVuZ3RoIC0gU3RyaW5nKGFtb3VudEFzTnVtYmVyKS5pbmRleE9mKCcuJykgLSAxO1xuXG4gIGlmIChmcmFjdGlvbkRpZ2l0c09mQW1vdW50ID4gY3VycmVuY3kuZnJhY3Rpb25EaWdpdHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2hpZ2hQcmVjaXNpb24nLFxuICAgICAgY3VycmVuY3lDb2RlLFxuICAgICAgY2VudEFtb3VudCxcbiAgICAgIHByZWNpc2VBbW91bnQ6IHBhcnNlSW50KFxuICAgICAgICAvLyBIZXJlIHdlIG5lZWQgdG8gY29udmVydCAgYSBudW1iZXIgbGlrZSA4LjA2NjY1MiB0byBpdHMgY2VudGFtb3VudFxuICAgICAgICAvLyBXZSBjb3VsZCBkbyB0aGF0IGJ5IG11bHRpcGx5aW5nIGl0IHdpdGggMTAgKiogbnVtYmVyLW9mLWZyYWN0aW9uLWRpZ2l0c1xuICAgICAgICAvLyBidXQgdGhlbiB3ZSdsbCBydW4gaW50byBwcm9ibGVtcyB3aXRoIEphdmFTY3JpcHQncyBmbG9hdGluZyBwb2ludFxuICAgICAgICAvLyBudW1iZXIgcHJlY2lzaW9uIGFuZCBlbmQgdXAgd2l0aCA4MDY2NjUxLjk5OTk5OTksIGFuZCB0aGVuIHBhcnNlSW50XG4gICAgICAgIC8vIGN1dHMgb2ZmIHRoZSByZW1haW5kZXIuXG4gICAgICAgIC8vIFNvIGluc3RlYWQgb2YgdXNpbmcgbWF0aHMgdG8gY29udmVydCB0aGUgbnVtYmVyLCB3ZSBqdXN0IHJlcGxhY2VcbiAgICAgICAgLy8gdGhlIGRvdCBpbnNpZGUgdGhlIG51bWJlciB3aGljaCBkb2VzIHRoZSBzYW1lIHRoaW5nLlxuICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHJlcGxhY2UgXCIsXCIgYXMgd2VsbCwgYXMgbnVtYmVycyBhbHdheXMgdXMgYSBkb3RcbiAgICAgICAgLy8gd2hlbiBjb252ZXJ0ZWQgdXNpbmcgU3RyaW5nKCkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZSBtYXRoZW1hdGljYWwgd2F5OiBhbW91bnRBc051bWJlciAqIDEwICoqIGZyYWN0aW9uRGlnaXRzT2ZBbW91bnQsXG4gICAgICAgIFN0cmluZyhhbW91bnRBc051bWJlcikucmVwbGFjZSgnLicsICcnKSxcbiAgICAgICAgMTBcbiAgICAgICksXG4gICAgICBmcmFjdGlvbkRpZ2l0czogZnJhY3Rpb25EaWdpdHNPZkFtb3VudCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnY2VudFByZWNpc2lvbicsXG4gICAgY3VycmVuY3lDb2RlLFxuICAgIGNlbnRBbW91bnQsXG4gICAgZnJhY3Rpb25EaWdpdHM6IGN1cnJlbmN5LmZyYWN0aW9uRGlnaXRzLFxuICB9O1xufTtcblxuY29uc3QgZ2V0QW1vdW50QXNOdW1iZXJGcm9tTW9uZXlWYWx1ZSA9IChtb25leVZhbHVlKSA9PlxuICBtb25leVZhbHVlLnR5cGUgPT09ICdoaWdoUHJlY2lzaW9uJ1xuICAgID8gbW9uZXlWYWx1ZS5wcmVjaXNlQW1vdW50IC8gMTAgKiogbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0c1xuICAgIDogbW9uZXlWYWx1ZS5jZW50QW1vdW50IC9cbiAgICAgIDEwICoqIGN1cnJlbmNpZXNbbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGVdLmZyYWN0aW9uRGlnaXRzO1xuXG4vLyBnZXRzIGNhbGxlZCB3aXRoIGEgc3RyaW5nIGFuZCBzaG91bGQgcmV0dXJuIGEgZm9ybWF0dGVkIHN0cmluZ1xuY29uc3QgZm9ybWF0QW1vdW50ID0gKHJhd0Ftb3VudCwgY3VycmVuY3lDb2RlLCBsb2NhbGUpID0+IHtcbiAgLy8gZmFsbGJhY2sgaW4gY2FzZSB0aGUgdXNlciBkaWRuJ3QgZW50ZXIgYW4gYW1vdW50IHlldCAob3IgaXQncyBpbnZhbGlkKVxuICBjb25zdCBtb25leVZhbHVlID0gY3JlYXRlTW9uZXlWYWx1ZShjdXJyZW5jeUNvZGUsIHJhd0Ftb3VudCwgbG9jYWxlKSB8fCB7XG4gICAgY3VycmVuY3lDb2RlLFxuICAgIGNlbnRBbW91bnQ6IE5hTixcbiAgfTtcblxuICBjb25zdCBhbW91bnQgPSBnZXRBbW91bnRBc051bWJlckZyb21Nb25leVZhbHVlKG1vbmV5VmFsdWUpO1xuXG4gIGNvbnN0IGZyYWN0aW9uRGlnaXRzID0gbW9uZXlWYWx1ZS5wcmVjaXNlQW1vdW50XG4gICAgPyBtb25leVZhbHVlLmZyYWN0aW9uRGlnaXRzXG4gICAgOiBjdXJyZW5jaWVzW21vbmV5VmFsdWUuY3VycmVuY3lDb2RlXS5mcmFjdGlvbkRpZ2l0cztcblxuICByZXR1cm4gaXNOYU4oYW1vdW50KVxuICAgID8gJydcbiAgICA6IGFtb3VudC50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBmcmFjdGlvbkRpZ2l0cyB9KTtcbn07XG5cbmNvbnN0IGdldEFtb3VudElucHV0TmFtZSA9IChuYW1lKSA9PiAobmFtZSA/IGAke25hbWV9LmFtb3VudGAgOiB1bmRlZmluZWQpO1xuY29uc3QgZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUgPSAobmFtZSkgPT5cbiAgbmFtZSA/IGAke25hbWV9LmN1cnJlbmN5Q29kZWAgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IE1vbmV5SW5wdXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW2N1cnJlbmN5SGFzRm9jdXMsIHRvZ2dsZUN1cnJlbmN5SGFzRm9jdXNdID0gdXNlVG9nZ2xlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbYW1vdW50SGFzRm9jdXMsIHRvZ2dsZUFtb3VudEhhc0ZvY3VzXSA9IHVzZVRvZ2dsZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgYW1vdW50SW5wdXRSZWYgPSB1c2VSZWYoKTtcblxuICBjb25zdCB7IG9uRm9jdXMgfSA9IHByb3BzO1xuICBjb25zdCBoYW5kbGVBbW91bnRGb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAob25Gb2N1cylcbiAgICAgIG9uRm9jdXMoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICBuYW1lOiBnZXRBbW91bnRJbnB1dE5hbWUocHJvcHMubmFtZSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB0b2dnbGVBbW91bnRIYXNGb2N1cyh0cnVlKTtcbiAgfSwgW3RvZ2dsZUFtb3VudEhhc0ZvY3VzLCBvbkZvY3VzLCBwcm9wcy5pZCwgcHJvcHMubmFtZV0pO1xuXG4gIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHByb3BzO1xuICBjb25zdCBoYW5kbGVBbW91bnRCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGFtb3VudCA9IHByb3BzLnZhbHVlLmFtb3VudC50cmltKCk7XG4gICAgdG9nZ2xlQW1vdW50SGFzRm9jdXMoZmFsc2UpO1xuICAgIC8vIFNraXAgZm9ybWF0dGluZyBmb3IgZW1wdHkgdmFsdWUgb3Igd2hlbiB0aGUgaW5wdXQgaXMgdXNlZCB3aXRoIGFuXG4gICAgLy8gdW5rbm93biBjdXJyZW5jeS5cbiAgICBpZiAoYW1vdW50Lmxlbmd0aCA+IDAgJiYgY3VycmVuY2llc1twcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGVdKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRBbW91bnQgPSBmb3JtYXRBbW91bnQoXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgICAgICBpbnRsLmxvY2FsZVxuICAgICAgKTtcblxuICAgICAgLy8gV2hlbiB0aGUgdXNlciBlbnRlcmVkIGEgdmFsdWUgd2l0aCBjZW50UHJlY2lzaW9uLCB3ZSBjYW4gZm9ybWF0XG4gICAgICAvLyB0aGUgcmVzdWx0aW5nIHZhbHVlIHRvIHRoYXQgY3VycmVuY3ksIGUuZy4gMjAuMSB0byAyMC4xMFxuICAgICAgaWYgKFN0cmluZyhmb3JtYXR0ZWRBbW91bnQpICE9PSBhbW91bnQpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBlbWl0IGFuIGV2ZW50IHdpdGggdGhlIG5vdyBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgICAgY29uc3QgZmFrZUV2ZW50ID0ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZEFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBvbkNoYW5nZShmYWtlRXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGludGwubG9jYWxlLFxuICAgIG9uQ2hhbmdlLFxuICAgIHByb3BzLmlkLFxuICAgIHByb3BzLm5hbWUsXG4gICAgcHJvcHMudmFsdWUuYW1vdW50LFxuICAgIHByb3BzLnZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICB0b2dnbGVBbW91bnRIYXNGb2N1cyxcbiAgXSk7XG5cbiAgY29uc3QgaGFuZGxlQW1vdW50Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoaXNOdW1iZXJpc2goZXZlbnQudGFyZ2V0LnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZSh7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgIHBlcnNpc3Q6ICgpID0+IHt9LFxuICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgaWQ6IE1vbmV5SW5wdXQuZ2V0QW1vdW50SW5wdXRJZChwcm9wcy5pZCksXG4gICAgICAgICAgICBuYW1lOiBnZXRBbW91bnRJbnB1dE5hbWUocHJvcHMubmFtZSksXG4gICAgICAgICAgICB2YWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQ2hhbmdlLCBwcm9wcy5pZCwgcHJvcHMubmFtZV1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVDdXJyZW5jeUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbmN5Q29kZSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgIGlmIChwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUgIT09IGN1cnJlbmN5Q29kZSkge1xuICAgICAgICAvLyBXaGVuIHRoZSB1c2VyIGNoYW5nZXMgZnJvbSBhIGN1cnJlbmN5IHdpdGggMyBmcmFjdGlvbiBkaWdpdHMgdG9cbiAgICAgICAgLy8gYSBjdXJyZW5jeSB3aXRoIDIgZnJhY3Rpb24gZGlnaXRzLCBhbmQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgd2FzXG4gICAgICAgIC8vIFwiOS4wMDBcIiAoOSksIHRoZW4gaXQgc2hvdWxkIGNoYW5nZSB0byBcIjkuMDBcIiB0byByZWZsZWN0IHRoZSBuZXdcbiAgICAgICAgLy8gY3VycmVuY3kncyBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzLlxuICAgICAgICAvLyBXaGVuIHRoZSBjdXJyZW5jeSB3YXMgYSBoaWdoLXByZWNpc2lvbiBwcmljZSwgdGhlbiBubyBkaWdpdHMgc2hvdWxkXG4gICAgICAgIC8vIGJlIGxvc3RcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQW1vdW50ID0gZm9ybWF0QW1vdW50KFxuICAgICAgICAgIHByb3BzLnZhbHVlLmFtb3VudC50cmltKCksXG4gICAgICAgICAgY3VycmVuY3lDb2RlLFxuICAgICAgICAgIGludGwubG9jYWxlXG4gICAgICAgICk7XG4gICAgICAgIC8vIFRoZSB1c2VyIGNvdWxkIGJlIGNoYW5naW5nIHRoZSBjdXJyZW5jeSBiZWZvcmUgZW50ZXJpbmcgYW55IGFtb3VudCxcbiAgICAgICAgLy8gb3Igd2hpbGUgdGhlIGFtb3VudCBpcyBpbnZhbGlkLiBJbiB0aGVzZSBjYXNlcywgd2UgZG9uJ3QgYXR0ZW1wdCB0b1xuICAgICAgICAvLyBmb3JtYXQgdGhlIGFtb3VudC5cbiAgICAgICAgY29uc3QgbmV4dEFtb3VudCA9IGlzTmFOKGZvcm1hdHRlZEFtb3VudClcbiAgICAgICAgICA/IHByb3BzLnZhbHVlLmFtb3VudFxuICAgICAgICAgIDogZm9ybWF0dGVkQW1vdW50O1xuXG4gICAgICAgIC8vIGNoYW5nZSBjdXJyZW5jeSBjb2RlXG4gICAgICAgIGNvbnN0IGZha2VDdXJyZW5jeUV2ZW50ID0ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEN1cnJlbmN5RHJvcGRvd25JZChwcm9wcy5pZCksXG4gICAgICAgICAgICBuYW1lOiBnZXRDdXJyZW5jeURyb3Bkb3duTmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlOiBjdXJyZW5jeUNvZGUgfHwgJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgb25DaGFuZ2UoZmFrZUN1cnJlbmN5RXZlbnQpO1xuXG4gICAgICAgIC8vIGNoYW5nZSBhbW91bnQgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGlmIChwcm9wcy52YWx1ZS5hbW91bnQgIT09IG5leHRBbW91bnQpIHtcbiAgICAgICAgICBvbkNoYW5nZSh7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgICAgICBwZXJzaXN0OiAoKSA9PiB7fSxcbiAgICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgICBpZDogTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKSxcbiAgICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgICAgICB2YWx1ZTogbmV4dEFtb3VudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhbW91bnRJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBpbnRsLmxvY2FsZSxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgcHJvcHMuaWQsXG4gICAgICBwcm9wcy5uYW1lLFxuICAgICAgcHJvcHMudmFsdWUuYW1vdW50LFxuICAgICAgcHJvcHMudmFsdWUuY3VycmVuY3lDb2RlLFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVDdXJyZW5jeUZvY3VzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChvbkZvY3VzKVxuICAgICAgb25Gb2N1cyh7XG4gICAgICAgIHRhcmdldDoge1xuICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEN1cnJlbmN5RHJvcGRvd25JZChwcm9wcy5pZCksXG4gICAgICAgICAgbmFtZTogZ2V0Q3VycmVuY3lEcm9wZG93bk5hbWUocHJvcHMubmFtZSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIHRvZ2dsZUN1cnJlbmN5SGFzRm9jdXModHJ1ZSk7XG4gIH0sIFtvbkZvY3VzLCB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzLCBwcm9wcy5uYW1lLCBwcm9wcy5pZF0pO1xuXG4gIGNvbnN0IGhhbmRsZUN1cnJlbmN5Qmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB0b2dnbGVDdXJyZW5jeUhhc0ZvY3VzKGZhbHNlKTtcbiAgfSwgW3RvZ2dsZUN1cnJlbmN5SGFzRm9jdXNdKTtcblxuICBjb25zdCBoYXNOb0N1cnJlbmNpZXMgPSBwcm9wcy5jdXJyZW5jaWVzLmxlbmd0aCA9PT0gMDtcbiAgY29uc3QgaGFzRm9jdXMgPSBjdXJyZW5jeUhhc0ZvY3VzIHx8IGFtb3VudEhhc0ZvY3VzO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGN1cnJlbmN5U2VsZWN0U3R5bGVzID0gY3JlYXRlQ3VycmVuY3lTZWxlY3RTdHlsZXMoXG4gICAge1xuICAgICAgaGFzV2FybmluZzogcHJvcHMuaGFzV2FybmluZyxcbiAgICAgIGhhc0Vycm9yOiBwcm9wcy5oYXNFcnJvcixcbiAgICAgIGlzRGlzYWJsZWQ6IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICBpc1JlYWRPbmx5OiBwcm9wcy5pc1JlYWRPbmx5LFxuICAgICAgaGFzRm9jdXMsXG4gICAgICBtZW51UG9ydGFsWkluZGV4OiBwcm9wcy5tZW51UG9ydGFsWkluZGV4LFxuICAgIH0sXG4gICAgdGhlbWVcbiAgKTtcbiAgY29uc3Qgb3B0aW9ucyA9IHByb3BzLmN1cnJlbmNpZXMubWFwKChjdXJyZW5jeUNvZGUpID0+ICh7XG4gICAgbGFiZWw6IGN1cnJlbmN5Q29kZSxcbiAgICB2YWx1ZTogY3VycmVuY3lDb2RlLFxuICB9KSk7XG5cbiAgY29uc3Qgb3B0aW9uID0gKCgpID0+IHtcbiAgICBjb25zdCBtYXRjaGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKFxuICAgICAgKG9wdGlvbkNhbmRpZGF0ZSkgPT4gb3B0aW9uQ2FuZGlkYXRlLnZhbHVlID09PSBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGVcbiAgICApO1xuICAgIGlmIChtYXRjaGVkT3B0aW9uKSByZXR1cm4gbWF0Y2hlZE9wdGlvbjtcbiAgICAvLyBlbnN1cmUgYW4gb3B0aW9uIGlzIGZvdW5kLCBldmVuIHdoZW4gdGhlIGN1cnJlbmNpZXMgZG9uJ3QgaW5jbHVkZVxuICAgIC8vIHRoZSBtb25leSB2YWx1ZSdzIGN1cnJlbmN5Q29kZVxuICAgIGlmIChwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUudHJpbSgpICE9PSAnJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgICAgIHZhbHVlOiBwcm9wcy52YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgICB9O1xuICAgIHJldHVybiBudWxsO1xuICB9KSgpO1xuXG4gIGNvbnN0IGlkID0gTW9uZXlJbnB1dC5nZXRDdXJyZW5jeURyb3Bkb3duSWQocHJvcHMuaWQpO1xuXG4gIGNvbnN0IGlzSGlnaFByZWNpc2lvbiA9XG4gICAgIU1vbmV5SW5wdXQuaXNFbXB0eShwcm9wcy52YWx1ZSkgJiZcbiAgICBNb25leUlucHV0LmlzSGlnaFByZWNpc2lvbihwcm9wcy52YWx1ZSwgaW50bC5sb2NhbGUpO1xuXG4gIGNvbnN0IHsgb25CbHVyIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQ29udGFpbmVyQmx1ciA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgLy8gZW5zdXJlcyB0aGF0IGJvdGggZmllbGRzIGFyZSBtYXJrZWQgYXMgdG91Y2hlZCB3aGVuIG9uZSBvZiB0aGVtXG4gICAgICAvLyBpcyBibHVycmVkXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBvbkJsdXIgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpXG4gICAgICApIHtcbiAgICAgICAgb25CbHVyKHtcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEN1cnJlbmN5RHJvcGRvd25JZChwcm9wcy5pZCksXG4gICAgICAgICAgICBuYW1lOiBnZXRDdXJyZW5jeURyb3Bkb3duTmFtZShwcm9wcy5uYW1lKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgb25CbHVyKHtcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIGlkOiBNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpLFxuICAgICAgICAgICAgbmFtZTogZ2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQmx1ciwgcHJvcHMuaWQsIHByb3BzLm5hbWVdXG4gICk7XG5cbiAgY29uc3QgVG9vbHRpcFBvcnRhbCA9IHVzZUNhbGxiYWNrKFxuICAgIChyZW1haW5pbmdQcm9wcykgPT4gPFBvcnRhbCB7Li4ucmVtYWluaW5nUHJvcHN9IGlkPXtwcm9wcy5pZH0gLz4sXG4gICAgW3Byb3BzLmlkXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnN0cmFpbnRzLkhvcml6b250YWwgbWF4PXtwcm9wcy5ob3Jpem9udGFsQ29uc3RyYWludH0+XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJtb25leS1pbnB1dC1jb250YWluZXJcIlxuICAgICAgICBvbkJsdXI9e2hhbmRsZUNvbnRhaW5lckJsdXJ9XG4gICAgICA+XG4gICAgICAgIHtoYXNOb0N1cnJlbmNpZXMgPyAoXG4gICAgICAgICAgPEN1cnJlbmN5TGFiZWxcbiAgICAgICAgICAgIGlkPXtNb25leUlucHV0LmdldEFtb3VudElucHV0SWQocHJvcHMuaWQpfVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9uICYmIG9wdGlvbi5sYWJlbH1cbiAgICAgICAgICA8L0N1cnJlbmN5TGFiZWw+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgaW5wdXRJZD17aWR9XG4gICAgICAgICAgICBuYW1lPXtnZXRDdXJyZW5jeURyb3Bkb3duTmFtZShwcm9wcy5uYW1lKX1cbiAgICAgICAgICAgIHZhbHVlPXtvcHRpb259XG4gICAgICAgICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rpc3BsYXktbmFtZVxuICAgICAgICAgICAgICBTaW5nbGVWYWx1ZTogKGlubmVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICA8U2luZ2xlVmFsdWUgey4uLmlubmVyUHJvcHN9IGlkPXtpZH0gLz5cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rpc3BsYXktbmFtZVxuICAgICAgICAgICAgICBJbnB1dDogKG93blByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICAgICAgICAgICAgICA8Y29tcG9uZW50cy5JbnB1dCB7Li4ub3duUHJvcHN9IHJlYWRPbmx5PXtwcm9wcy5pc1JlYWRPbmx5fSAvPlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBEcm9wZG93bkluZGljYXRvcixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgbWVudUlzT3Blbj17cHJvcHMuaXNSZWFkT25seSA/IGZhbHNlIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgICAgc3R5bGVzPXtjdXJyZW5jeVNlbGVjdFN0eWxlc31cbiAgICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZUN1cnJlbmN5Rm9jdXN9XG4gICAgICAgICAgICBtZW51UG9ydGFsVGFyZ2V0PXtwcm9wcy5tZW51UG9ydGFsVGFyZ2V0fVxuICAgICAgICAgICAgbWVudVNob3VsZEJsb2NrU2Nyb2xsPXtwcm9wcy5tZW51U2hvdWxkQmxvY2tTY3JvbGx9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUN1cnJlbmN5Qmx1cn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDdXJyZW5jeUNoYW5nZX1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY3VycmVuY3ktZHJvcGRvd25cIlxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHJlZj17YW1vdW50SW5wdXRSZWZ9XG4gICAgICAgICAgICBpZD17TW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkKHByb3BzLmlkKX1cbiAgICAgICAgICAgIGF1dG9Db21wbGV0ZT17cHJvcHMuYXV0b0NvbXBsZXRlfVxuICAgICAgICAgICAgbmFtZT17Z2V0QW1vdW50SW5wdXROYW1lKHByb3BzLm5hbWUpfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgb25Gb2N1cz17aGFuZGxlQW1vdW50Rm9jdXN9XG4gICAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWUuYW1vdW50fVxuICAgICAgICAgICAgY3NzPXtbXG4gICAgICAgICAgICAgIGdldEFtb3VudElucHV0U3R5bGVzKHsgLi4ucHJvcHMsIGhhc0ZvY3VzIH0pLFxuICAgICAgICAgICAgICAvLyBhY2NvdW50cyBmb3Igc2l6ZSBvZiBpY29uXG4gICAgICAgICAgICAgIHByb3BzLmhhc0hpZ2hQcmVjaXNpb25CYWRnZSAmJlxuICAgICAgICAgICAgICAgIGlzSGlnaFByZWNpc2lvbiAmJlxuICAgICAgICAgICAgICAgIGNzc2BcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICR7dmFycy5zcGFjaW5nTH07XG4gICAgICAgICAgICAgICAgYCxcbiAgICAgICAgICAgIF19XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17cHJvcHMucGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQW1vdW50Q2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVBbW91bnRCbHVyfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgICByZWFkT25seT17cHJvcHMuaXNSZWFkT25seX1cbiAgICAgICAgICAgIGF1dG9Gb2N1cz17cHJvcHMuaXNBdXRvZm9jdXNzZWR9XG4gICAgICAgICAgICB7Li4uZmlsdGVyRGF0YUF0dHJpYnV0ZXMocHJvcHMpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge3Byb3BzLmhhc0hpZ2hQcmVjaXNpb25CYWRnZSAmJiBpc0hpZ2hQcmVjaXNpb24gJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgeyFwcm9wcy5pc0Rpc2FibGVkICYmIDxkaXYgaWQ9e2dldFBvcnRhbElkKHByb3BzLmlkKX0gLz59XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9eygpID0+XG4gICAgICAgICAgICAgICAgICBnZXRIaWdoUHJlY2lzaW9uV3JhcHBlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICBvZmY9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3AtZW5kXCJcbiAgICAgICAgICAgICAgICAgIC8vIHdlIHVzZSBuZWdhdGl2ZSBtYXJnaW4gdG8gbWFrZSB1cCBmb3IgdGhlIHBhZGRpbmcgaW4gdGhlIFRvb2x0aXAgV3JhcHBlclxuICAgICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgdG9vbHRpcCBpcyBmbHVzaCB3aXRoIHRoZSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAgIHN0eWxlcz17e1xuICAgICAgICAgICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBgJHt2YXJzLnNwYWNpbmdTfSAtJHt2YXJzLnNwYWNpbmdYc30gJHt2YXJzLnNwYWNpbmdTfSAwYCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0aXRsZT17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmhpZ2hQcmVjaXNpb24pfVxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICAgICAgICBUb29sdGlwV3JhcHBlckNvbXBvbmVudDogVG9vbHRpcFBvcnRhbCxcbiAgICAgICAgICAgICAgICAgICAgV3JhcHBlckNvbXBvbmVudDogVG9vbHRpcFdyYXBwZXIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxGcmFjdGlvbkRpZ2l0c0ljb25cbiAgICAgICAgICAgICAgICAgICAgY29sb3I9e3Byb3BzLmlzRGlzYWJsZWQgPyAnbmV1dHJhbDYwJyA6ICdpbmZvJ31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Db25zdHJhaW50cy5Ib3Jpem9udGFsPlxuICApO1xufTtcblxuTW9uZXlJbnB1dC5kaXNwbGF5TmFtZSA9ICdNb25leUlucHV0JztcblxuTW9uZXlJbnB1dC5nZXRBbW91bnRJbnB1dElkID0gZ2V0QW1vdW50SW5wdXROYW1lO1xuXG5Nb25leUlucHV0LmdldEN1cnJlbmN5RHJvcGRvd25JZCA9IGdldEN1cnJlbmN5RHJvcGRvd25OYW1lO1xuXG5Nb25leUlucHV0LmNvbnZlcnRUb01vbmV5VmFsdWUgPSAodmFsdWUsIGxvY2FsZSkgPT5cbiAgY3JlYXRlTW9uZXlWYWx1ZShcbiAgICB2YWx1ZS5jdXJyZW5jeUNvZGUsXG4gICAgdHlwZW9mIHZhbHVlLmFtb3VudCA9PT0gJ3N0cmluZycgPyB2YWx1ZS5hbW91bnQudHJpbSgpIDogJycsXG4gICAgbG9jYWxlXG4gICk7XG5cbk1vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlID0gKG1vbmV5VmFsdWUsIGxvY2FsZSkgPT4ge1xuICBpZiAoIW1vbmV5VmFsdWUpIHJldHVybiB7IGN1cnJlbmN5Q29kZTogJycsIGFtb3VudDogJycgfTtcblxuICB3YXJuaW5nKFxuICAgIHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogQSBsb2NhbGUgbXVzdCBiZSBwYXNzZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCdcbiAgKTtcblxuICB3YXJuaW5nKFxuICAgIHR5cGVvZiBtb25leVZhbHVlID09PSAnb2JqZWN0JyxcbiAgICAnTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWU6IFZhbHVlIG11c3QgYmUgcGFzc2VkIGFzIGFuIG9iamVjdCBvciBiZSB1bmRlZmluZWQnXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICB0eXBlb2YgbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUgPT09ICdzdHJpbmcnLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogVmFsdWUgbXVzdCBjb250YWluIFwiY3VycmVuY3lDb2RlXCInXG4gICk7XG5cbiAgd2FybmluZyhcbiAgICBoYXMoY3VycmVuY2llcywgbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUpLFxuICAgICdNb25leUlucHV0LnBhcnNlTW9uZXlWYWx1ZTogVmFsdWUgbXVzdCB1c2Uga25vd24gY3VycmVuY3kgY29kZSdcbiAgKTtcblxuICB3YXJuaW5nKFxuICAgIC8vIGhpZ2hQcmVjaXNpb24gb3IgY2VudFByZWNpc2lvbiB2YWx1ZXMgbXVzdCBiZSBzZXRcbiAgICB0eXBlb2YgbW9uZXlWYWx1ZS5jZW50QW1vdW50ID09PSAnbnVtYmVyJyB8fFxuICAgICAgKHR5cGVvZiBtb25leVZhbHVlLnByZWNpc2VBbW91bnQgPT09ICdudW1iZXInICYmXG4gICAgICAgIHR5cGVvZiBtb25leVZhbHVlLmZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyksXG4gICAgJ01vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlOiBWYWx1ZSBtdXN0IGNvbnRhaW4gXCJhbW91bnRcIidcbiAgKTtcblxuICBjb25zdCBhbW91bnQgPSBmb3JtYXRBbW91bnQoXG4gICAgZ2V0QW1vdW50QXNOdW1iZXJGcm9tTW9uZXlWYWx1ZShtb25leVZhbHVlKS50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbW9uZXlWYWx1ZS5mcmFjdGlvbkRpZ2l0cyxcbiAgICB9KSxcbiAgICBtb25leVZhbHVlLmN1cnJlbmN5Q29kZSxcbiAgICBsb2NhbGVcbiAgKTtcblxuICByZXR1cm4geyBhbW91bnQsIGN1cnJlbmN5Q29kZTogbW9uZXlWYWx1ZS5jdXJyZW5jeUNvZGUgfTtcbn07XG5cbk1vbmV5SW5wdXQuaXNFbXB0eSA9IChmb3JtVmFsdWUpID0+XG4gICFmb3JtVmFsdWUgfHxcbiAgZm9ybVZhbHVlLmFtb3VudC50cmltKCkgPT09ICcnIHx8XG4gIGZvcm1WYWx1ZS5jdXJyZW5jeUNvZGUudHJpbSgpID09PSAnJztcblxuTW9uZXlJbnB1dC5pc0hpZ2hQcmVjaXNpb24gPSAoZm9ybVZhbHVlLCBsb2NhbGUpID0+IHtcbiAgd2FybmluZyhcbiAgICAhTW9uZXlJbnB1dC5pc0VtcHR5KGZvcm1WYWx1ZSksXG4gICAgJ01vbmV5VmFsdWUuaXNIaWdoUHJlY2lzaW9uIG1heSBub3QgYmUgY2FsbGVkIHdpdGggYW4gZW1wdHkgbW9uZXkgdmFsdWUuJ1xuICApO1xuICBjb25zdCBtb25leVZhbHVlID0gTW9uZXlJbnB1dC5jb252ZXJ0VG9Nb25leVZhbHVlKGZvcm1WYWx1ZSwgbG9jYWxlKTtcbiAgcmV0dXJuIG1vbmV5VmFsdWUgJiYgbW9uZXlWYWx1ZS50eXBlID09PSAnaGlnaFByZWNpc2lvbic7XG59O1xuXG5Nb25leUlucHV0LmlzVG91Y2hlZCA9ICh0b3VjaGVkKSA9PlxuICBCb29sZWFuKHRvdWNoZWQgJiYgdG91Y2hlZC5jdXJyZW5jeUNvZGUgJiYgdG91Y2hlZC5hbW91bnQpO1xuXG5Nb25leUlucHV0LnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFVzZWQgYXMgSFRNTCBpZCBwcm9wZXJ0eS4gQW4gaWQgaXMgYXV0by1nZW5lcmF0ZWQgd2hlbiBpdCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBVc2VkIGFzIEhUTUwgYGF1dG9jb21wbGV0ZWAgcHJvcGVydHlcbiAgICovXG4gIGF1dG9Db21wbGV0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdXNlZCB0byBjcmVhdGUgYSBIVE1MIGBuYW1lYCBwcm9wZXJ0eSBmb3IgdGhlIGFtb3VudCBpbnB1dCBmaWVsZCAoYCR7bmFtZX0uYW1vdW50YCkgYW5kIHRoZSBjdXJyZW5jeSBkcm9wZG93biAoYCR7bmFtZX0uY3VycmVuY3lDb2RlYCkuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVmFsdWUgb2YgdGhlIGlucHV0LiBDb25zaXN0cyBvZiB0aGUgY3VycmVuY3kgY29kZSBhbmQgYW4gYW1vdW50LiBgYW1vdW50YCBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFtb3VudC4gQSBkb3QgaGFzIHRvIGJlIHVzZWQgYXMgdGhlIGRlY2ltYWwgc2VwYXJhdG9yLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYW1vdW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY3VycmVuY3lDb2RlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBMaXN0IG9mIHBvc3NpYmxlIGN1cnJlbmNpZXMuIFdoZW4gbm90IHByb3ZpZGVkIG9yIGVtcHR5LCB0aGUgY29tcG9uZW50IHJlbmRlcnMgYSBsYWJlbCB3aXRoIHRoZSB2YWx1ZSdzIGN1cnJlbmN5IGluc3RlYWQgb2YgYSBkcm9wZG93bi5cbiAgICovXG4gIGN1cnJlbmNpZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgaW5wdXRcbiAgICovXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gaW5wdXQgaXMgYmx1cnJlZFxuICAgKi9cbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGZvY3VzZWRcbiAgICovXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGlucHV0IGNhbm5vdCBiZSBtb2RpZmllZCAoZS5nIG5vdCBhdXRob3JpemVkLCBvciBjaGFuZ2VzIGN1cnJlbnRseSBzYXZpbmcpLlxuICAgKi9cbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZmllbGQgaXMgZGlzcGxheWluZyByZWFkLW9ubHkgY29udGVudFxuICAgKi9cbiAgaXNSZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBGb2N1cyB0aGUgaW5wdXQgb24gaW5pdGlhbCByZW5kZXJcbiAgICovXG4gIGlzQXV0b2ZvY3Vzc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIENhbGxlZCB3aXRoIHRoZSBldmVudCBvZiB0aGUgaW5wdXQgb3IgZHJvcGRvd24gd2hlbiBlaXRoZXIgdGhlIGN1cnJlbmN5IG9yIHRoZSBhbW91bnQgaGF2ZSBjaGFuZ2VkLlxuICAgKiA8YnIgLz5cbiAgICogU2lnbmF0dXJlOiBgKGV2ZW50KSA9PiB2b2lkYFxuICAgKi9cbiAgb25DaGFuZ2U6IHJlcXVpcmVkSWYoUHJvcFR5cGVzLmZ1bmMsIChwcm9wcykgPT4gIXByb3BzLmlzUmVhZE9ubHkpLFxuICAvKipcbiAgICogRG9tIGVsZW1lbnQgdG8gcG9ydGFsIHRoZSBjdXJyZW5jeSBzZWxlY3QgbWVudSB0b1xuICAgKi9cbiAgbWVudVBvcnRhbFRhcmdldDogUHJvcFR5cGVzLmluc3RhbmNlT2YoU2FmZUhUTUxFbGVtZW50KSxcbiAgLyoqXG4gICAqIHotaW5kZXggdmFsdWUgZm9yIHRoZSBjdXJyZW5jeSBzZWxlY3QgbWVudSBwb3J0YWxcbiAgICovXG4gIG1lbnVQb3J0YWxaSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSBtZW51IHNob3VsZCBibG9jayBzY3JvbGwgd2hpbGUgb3BlblxuICAgKi9cbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IGlucHV0IGhhcyBlcnJvcnNcbiAgICovXG4gIGhhc0Vycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIENvbnRyb2wgdG8gaW5kaWNhdGUgb24gdGhlIGlucHV0IGlmIHRoZXJlIGFyZSBzZWxlY3RlZCB2YWx1ZXMgdGhhdCBhcmUgcG90ZW50aWFsbHkgaW52YWxpZFxuICAgKi9cbiAgaGFzV2FybmluZzogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBTaG93cyBoaWdoIHByZWNpc2lvbiBiYWRnZSBpbiBjYXNlIGN1cnJlbnQgdmFsdWUgdXNlcyBoaWdoIHByZWNpc2lvbi5cbiAgICovXG4gIGhhc0hpZ2hQcmVjaXNpb25CYWRnZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBIb3Jpem9udGFsIHNpemUgbGltaXQgb2YgdGhlIGlucHV0IGZpZWxkcy5cbiAgICovXG4gIGhvcml6b250YWxDb25zdHJhaW50OiBQcm9wVHlwZXMub25lT2YoW1xuICAgIDMsXG4gICAgNCxcbiAgICA1LFxuICAgIDYsXG4gICAgNyxcbiAgICA4LFxuICAgIDksXG4gICAgMTAsXG4gICAgMTEsXG4gICAgMTIsXG4gICAgMTMsXG4gICAgMTQsXG4gICAgMTUsXG4gICAgMTYsXG4gICAgJ3NjYWxlJyxcbiAgICAnYXV0bycsXG4gIF0pLFxufTtcblxuTW9uZXlJbnB1dC5kZWZhdWx0UHJvcHMgPSB7XG4gIGN1cnJlbmNpZXM6IFtdLFxuICBob3Jpem9udGFsQ29uc3RyYWludDogJ3NjYWxlJyxcbiAgbWVudVBvcnRhbFpJbmRleDogMSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vbmV5SW5wdXQ7XG4iXX0= */"],
|
|
1298
|
+
placeholder: props.placeholder,
|
|
1299
|
+
onChange: handleAmountChange,
|
|
1300
|
+
onBlur: handleAmountBlur,
|
|
1301
|
+
disabled: props.isDisabled,
|
|
1302
|
+
readOnly: props.isReadOnly,
|
|
1303
|
+
autoFocus: props.isAutofocussed
|
|
1304
|
+
}, filterDataAttributes(props))), props.hasHighPrecisionBadge && isHighPrecision && jsxs(Fragment, {
|
|
1305
|
+
children: [!props.isDisabled && jsx("div", {
|
|
1306
|
+
id: getPortalId(props.id)
|
|
1307
|
+
}), jsx("div", {
|
|
1308
|
+
css: function css() {
|
|
1309
|
+
return getHighPrecisionWrapperStyles({
|
|
1310
|
+
isDisabled: props.isDisabled
|
|
1311
|
+
});
|
|
1312
|
+
},
|
|
1313
|
+
children: jsx(Tooltip, {
|
|
1314
|
+
off: props.isDisabled,
|
|
1315
|
+
placement: "top-end" // we use negative margin to make up for the padding in the Tooltip Wrapper
|
|
1316
|
+
// so that the tooltip is flush with the component
|
|
1317
|
+
,
|
|
1318
|
+
styles: {
|
|
1319
|
+
body: {
|
|
1320
|
+
margin: _concatInstanceProperty(_context9 = _concatInstanceProperty(_context10 = "".concat(customProperties.spacingS, " -")).call(_context10, customProperties.spacingXs, " ")).call(_context9, customProperties.spacingS, " 0")
|
|
1321
|
+
}
|
|
1322
|
+
},
|
|
1323
|
+
title: intl.formatMessage(messages.highPrecision),
|
|
1324
|
+
components: {
|
|
1325
|
+
TooltipWrapperComponent: TooltipPortal,
|
|
1326
|
+
WrapperComponent: TooltipWrapper
|
|
1327
|
+
},
|
|
1328
|
+
children: jsx(FractionDigitsIcon, {
|
|
1329
|
+
color: props.isDisabled ? 'neutral60' : 'info'
|
|
1330
|
+
})
|
|
1331
|
+
})
|
|
1332
|
+
})]
|
|
1333
|
+
})]
|
|
1334
|
+
})]
|
|
1335
|
+
})
|
|
1336
|
+
});
|
|
1321
1337
|
};
|
|
1322
1338
|
|
|
1323
1339
|
MoneyInput.displayName = 'MoneyInput';
|
|
@@ -1476,7 +1492,7 @@ MoneyInput.defaultProps = {
|
|
|
1476
1492
|
};
|
|
1477
1493
|
var MoneyInput$1 = MoneyInput;
|
|
1478
1494
|
|
|
1479
|
-
// NOTE: This string will be replaced
|
|
1480
|
-
var version =
|
|
1495
|
+
// NOTE: This string will be replaced on build time with the package version.
|
|
1496
|
+
var version = "12.2.6";
|
|
1481
1497
|
|
|
1482
1498
|
export { MoneyInput$1 as default, version };
|