botframework-webchat 4.13.0 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.yml +5 -104
- package/.prettierrc.yml +1 -1
- package/README.md +33 -36
- package/babel.config.json +2 -2
- package/babel.sanitize-html.config.json +10 -0
- package/lib/AddFullBundle.d.ts +30 -0
- package/lib/AddFullBundle.d.ts.map +1 -0
- package/lib/AddFullBundle.js +76 -0
- package/lib/FullComposer.d.ts +8 -0
- package/lib/FullComposer.d.ts.map +1 -0
- package/lib/FullComposer.js +6 -16
- package/lib/FullReactWebChat.d.ts +8 -0
- package/lib/FullReactWebChat.d.ts.map +1 -0
- package/lib/FullReactWebChat.js +8 -23
- package/lib/adaptiveCards/AdaptiveCardsComposer.d.ts +10 -0
- package/lib/adaptiveCards/AdaptiveCardsComposer.d.ts.map +1 -0
- package/lib/adaptiveCards/AdaptiveCardsComposer.js +6 -2
- package/lib/adaptiveCards/AdaptiveCardsContext.d.ts +8 -0
- package/lib/adaptiveCards/AdaptiveCardsContext.d.ts.map +1 -0
- package/lib/adaptiveCards/AdaptiveCardsContext.js +3 -3
- package/lib/adaptiveCards/AdaptiveCardsStyleOptions.d.ts +5 -3
- package/lib/adaptiveCards/AdaptiveCardsStyleOptions.d.ts.map +1 -1
- package/lib/adaptiveCards/AdaptiveCardsStyleSet.d.ts +7 -0
- package/lib/adaptiveCards/AdaptiveCardsStyleSet.d.ts.map +1 -0
- package/lib/{FullBundleStyleOptions.js → adaptiveCards/AdaptiveCardsStyleSet.js} +0 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.d.ts +9 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.js +1 -1
- package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.d.ts +28 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.js +13 -6
- package/lib/adaptiveCards/Attachment/AdaptiveCardContent.d.ts +9 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardContent.js +8 -4
- package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.d.ts +12 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.js +310 -85
- package/lib/adaptiveCards/Attachment/AnimationCardContent.d.ts +10 -0
- package/lib/adaptiveCards/Attachment/AnimationCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/AnimationCardContent.js +1 -1
- package/lib/adaptiveCards/Attachment/AudioCardContent.d.ts +10 -0
- package/lib/adaptiveCards/Attachment/AudioCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/AudioCardContent.js +1 -1
- package/lib/adaptiveCards/Attachment/CommonCard.js +11 -6
- package/lib/adaptiveCards/Attachment/HeroCardContent.d.ts +10 -0
- package/lib/adaptiveCards/Attachment/HeroCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/HeroCardContent.js +11 -6
- package/lib/adaptiveCards/Attachment/OAuthCardContent.d.ts +10 -0
- package/lib/adaptiveCards/Attachment/OAuthCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/OAuthCardContent.js +11 -6
- package/lib/adaptiveCards/Attachment/ReceiptCardContent.d.ts +10 -0
- package/lib/adaptiveCards/Attachment/ReceiptCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/ReceiptCardContent.js +11 -6
- package/lib/adaptiveCards/Attachment/SignInCardContent.d.ts +10 -0
- package/lib/adaptiveCards/Attachment/SignInCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/SignInCardContent.js +1 -1
- package/lib/adaptiveCards/Attachment/ThumbnailCardContent.d.ts +10 -0
- package/lib/adaptiveCards/Attachment/ThumbnailCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/ThumbnailCardContent.js +11 -6
- package/lib/adaptiveCards/Attachment/VideoCardContent.d.ts +20 -0
- package/lib/adaptiveCards/Attachment/VideoCardContent.d.ts.map +1 -0
- package/lib/adaptiveCards/Attachment/VideoCardContent.js +7 -5
- package/lib/adaptiveCards/AttachmentForScreenReader/AdaptiveCardAttachment.js +7 -3
- package/lib/adaptiveCards/AttachmentForScreenReader/RichCardAttachment.js +1 -1
- package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.d.ts +59 -0
- package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.d.ts.map +1 -0
- package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.js +8 -1
- package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.d.ts +126 -0
- package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.d.ts.map +1 -0
- package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.js +29 -9
- package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.d.ts +5 -0
- package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.d.ts.map +1 -0
- package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.js +2 -2
- package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.d.ts +3 -0
- package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.d.ts.map +1 -0
- package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.js +5 -11
- package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.d.ts +3 -0
- package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.d.ts.map +1 -0
- package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.js +2 -15
- package/lib/adaptiveCards/defaultStyleOptions.d.ts +4 -0
- package/lib/adaptiveCards/defaultStyleOptions.d.ts.map +1 -0
- package/lib/adaptiveCards/defaultStyleOptions.js +3 -2
- package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.d.ts +3 -0
- package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.d.ts.map +1 -0
- package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.js +1 -1
- package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.d.ts +2 -0
- package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.d.ts.map +1 -0
- package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.js +7 -5
- package/lib/adaptiveCards/hooks/internal/useUniqueId.js +1 -1
- package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.d.ts +2 -0
- package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.d.ts.map +1 -0
- package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.js +3 -5
- package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.d.ts +3 -0
- package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.d.ts.map +1 -0
- package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.js +1 -1
- package/lib/adaptiveCards/normalizeStyleOptions.d.ts +3 -0
- package/lib/adaptiveCards/normalizeStyleOptions.d.ts.map +1 -0
- package/lib/adaptiveCards/normalizeStyleOptions.js +1 -1
- package/lib/addVersion.js +2 -2
- package/lib/createBrowserWebSpeechPonyfillFactory.d.ts +3 -0
- package/lib/createBrowserWebSpeechPonyfillFactory.d.ts.map +1 -0
- package/lib/createBrowserWebSpeechPonyfillFactory.js +7 -4
- package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.d.ts +17 -0
- package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.d.ts.map +1 -0
- package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.js +17 -11
- package/lib/createDirectLine.d.ts +17 -0
- package/lib/createDirectLine.d.ts.map +1 -0
- package/lib/createDirectLine.js +3 -2
- package/lib/createDirectLineAppServiceExtension.d.ts +7 -0
- package/lib/createDirectLineAppServiceExtension.d.ts.map +1 -0
- package/lib/createDirectLineAppServiceExtension.js +1 -1
- package/lib/createDirectLineSpeechAdapters.d.ts +25 -0
- package/lib/createDirectLineSpeechAdapters.d.ts.map +1 -0
- package/lib/createDirectLineSpeechAdapters.js +57 -3
- package/lib/createFullStyleSet.d.ts +1375 -0
- package/lib/createFullStyleSet.d.ts.map +1 -0
- package/lib/createFullStyleSet.js +2 -2
- package/lib/fullBundleDefaultStyleOptions.js +4 -4
- package/lib/hooks/useStyleOptions.d.ts +3 -0
- package/lib/hooks/useStyleOptions.d.ts.map +1 -0
- package/lib/hooks/useStyleOptions.js +21 -0
- package/lib/index-es5.d.ts +4 -20
- package/lib/index-es5.d.ts.map +1 -1
- package/lib/index-es5.js +3 -43
- package/lib/index-minimal.d.ts +9 -6
- package/lib/index-minimal.d.ts.map +1 -1
- package/lib/index-minimal.js +27 -21
- package/lib/index.d.ts +164 -18
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +19 -12
- package/lib/polyfill.d.ts +23 -0
- package/lib/polyfill.d.ts.map +1 -0
- package/lib/polyfill.js +46 -0
- package/lib/renderMarkdown.d.ts +6 -0
- package/lib/renderMarkdown.d.ts.map +1 -0
- package/lib/renderMarkdown.js +36 -5
- package/lib/renderWebChat.d.ts +3 -0
- package/lib/renderWebChat.d.ts.map +1 -0
- package/lib/renderWebChat.js +1 -1
- package/lib/speech/CustomAudioInputStream.d.ts +94 -0
- package/lib/speech/CustomAudioInputStream.d.ts.map +1 -0
- package/lib/speech/CustomAudioInputStream.js +441 -0
- package/lib/speech/bytesPerSample.d.ts +2 -0
- package/lib/speech/bytesPerSample.d.ts.map +1 -0
- package/lib/speech/bytesPerSample.js +12 -0
- package/lib/speech/createAudioConfig.d.ts +23 -0
- package/lib/speech/createAudioConfig.d.ts.map +1 -0
- package/lib/speech/createAudioConfig.js +90 -0
- package/lib/speech/createAudioContext.d.ts +3 -0
- package/lib/speech/createAudioContext.d.ts.map +1 -0
- package/lib/speech/createAudioContext.js +22 -0
- package/lib/speech/createMicrophoneAudioConfigAndAudioContext.d.ts +9 -0
- package/lib/speech/createMicrophoneAudioConfigAndAudioContext.d.ts.map +1 -0
- package/lib/speech/createMicrophoneAudioConfigAndAudioContext.js +161 -0
- package/lib/speech/getUserMedia.d.ts +2 -0
- package/lib/speech/getUserMedia.d.ts.map +1 -0
- package/lib/speech/getUserMedia.js +25 -0
- package/lib/types/AdaptiveCardsPackage.d.ts +13 -0
- package/lib/types/AdaptiveCardsPackage.d.ts.map +1 -0
- package/lib/types/AdaptiveCardsPackage.js +2 -0
- package/lib/types/CognitiveServicesAudioOutputFormat.d.ts +3 -0
- package/lib/types/CognitiveServicesAudioOutputFormat.d.ts.map +1 -0
- package/lib/types/CognitiveServicesAudioOutputFormat.js +2 -0
- package/lib/types/CognitiveServicesCredentials.d.ts +18 -0
- package/lib/types/CognitiveServicesCredentials.d.ts.map +1 -0
- package/lib/types/CognitiveServicesCredentials.js +2 -0
- package/lib/types/CognitiveServicesTextNormalization.d.ts +3 -0
- package/lib/types/CognitiveServicesTextNormalization.d.ts.map +1 -0
- package/lib/types/CognitiveServicesTextNormalization.js +2 -0
- package/lib/{FullBundleStyleOptions.d.ts → types/FullBundleStyleOptions.d.ts} +1 -1
- package/lib/types/FullBundleStyleOptions.d.ts.map +1 -0
- package/lib/types/FullBundleStyleOptions.js +2 -0
- package/lib/useComposerProps.d.ts +22 -0
- package/lib/useComposerProps.d.ts.map +1 -0
- package/lib/useComposerProps.js +6 -8
- package/package.json +46 -48
- package/src/AddFullBundle.tsx +93 -0
- package/src/FullComposer.tsx +38 -0
- package/src/FullReactWebChat.tsx +32 -0
- package/src/__tests__/createDirectLine.spec.js +2 -0
- package/src/__tests__/renderMarkdown.spec.js +1 -1
- package/src/__tests__/versionTag.es5.spec.js +3 -0
- package/src/__tests__/versionTag.full.spec.js +3 -0
- package/src/__tests__/versionTag.minimal.spec.js +3 -0
- package/src/adaptiveCards/{AdaptiveCardsComposer.js → AdaptiveCardsComposer.tsx} +17 -5
- package/src/adaptiveCards/AdaptiveCardsContext.ts +12 -0
- package/src/adaptiveCards/AdaptiveCardsStyleOptions.ts +5 -3
- package/src/adaptiveCards/AdaptiveCardsStyleSet.ts +7 -0
- package/src/adaptiveCards/Attachment/{AdaptiveCardAttachment.js → AdaptiveCardAttachment.tsx} +8 -2
- package/src/adaptiveCards/Attachment/AdaptiveCardBuilder.ts +27 -17
- package/src/adaptiveCards/Attachment/{AdaptiveCardContent.js → AdaptiveCardContent.tsx} +8 -2
- package/src/adaptiveCards/Attachment/AdaptiveCardRenderer.tsx +768 -0
- package/src/adaptiveCards/Attachment/{AnimationCardContent.js → AnimationCardContent.tsx} +9 -2
- package/src/adaptiveCards/Attachment/{AudioCardContent.js → AudioCardContent.tsx} +9 -2
- package/src/adaptiveCards/Attachment/CommonCard.js +2 -1
- package/src/adaptiveCards/Attachment/{HeroCardContent.js → HeroCardContent.tsx} +12 -3
- package/src/adaptiveCards/Attachment/{OAuthCardContent.js → OAuthCardContent.tsx} +11 -3
- package/src/adaptiveCards/Attachment/{ReceiptCardContent.js → ReceiptCardContent.tsx} +58 -28
- package/src/adaptiveCards/Attachment/{SignInCardContent.js → SignInCardContent.tsx} +9 -2
- package/src/adaptiveCards/Attachment/{ThumbnailCardContent.js → ThumbnailCardContent.tsx} +12 -3
- package/src/adaptiveCards/Attachment/{VideoCardContent.js → VideoCardContent.tsx} +15 -3
- package/src/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.ts +9 -1
- package/src/adaptiveCards/Styles/adaptiveCardHostConfig.ts +28 -8
- package/src/adaptiveCards/Styles/createAdaptiveCardsStyleSet.spec.js +2 -0
- package/src/adaptiveCards/Styles/createAdaptiveCardsStyleSet.ts +7 -4
- package/src/adaptiveCards/{createAdaptiveCardsAttachmentForScreenReaderMiddleware.js → createAdaptiveCardsAttachmentForScreenReaderMiddleware.tsx} +16 -15
- package/src/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.tsx +44 -0
- package/src/adaptiveCards/defaultStyleOptions.ts +2 -1
- package/src/adaptiveCards/hooks/internal/{useAdaptiveCardsContext.js → useAdaptiveCardsContext.ts} +1 -1
- package/src/adaptiveCards/hooks/internal/{useParseAdaptiveCardJSON.js → useParseAdaptiveCardJSON.ts} +5 -2
- package/src/adaptiveCards/hooks/internal/{useUniqueId.js → useUniqueId.ts} +1 -1
- package/src/adaptiveCards/hooks/{useAdaptiveCardsHostConfig.js → useAdaptiveCardsHostConfig.ts} +6 -8
- package/src/adaptiveCards/hooks/{useAdaptiveCardsPackage.js → useAdaptiveCardsPackage.ts} +2 -1
- package/src/createBrowserWebSpeechPonyfillFactory.ts +21 -0
- package/src/createCognitiveServicesSpeechServicesPonyfillFactory.spec.js +36 -6
- package/src/createCognitiveServicesSpeechServicesPonyfillFactory.ts +78 -0
- package/src/createDirectLine.ts +65 -0
- package/src/createDirectLineAppServiceExtension.ts +22 -0
- package/src/createDirectLineSpeechAdapters.ts +84 -0
- package/src/createFullStyleSet.ts +2 -2
- package/src/fullBundleDefaultStyleOptions.ts +3 -3
- package/src/hooks/useStyleOptions.ts +9 -0
- package/src/index-es5.ts +3 -28
- package/src/index-minimal.ts +3 -2
- package/src/index.ts +22 -10
- package/src/polyfill.ts +29 -0
- package/src/renderMarkdown.ts +140 -0
- package/src/renderWebChat.tsx +6 -0
- package/src/speech/CustomAudioInputStream.ts +356 -0
- package/src/speech/bytesPerSample.ts +4 -0
- package/src/speech/createAudioConfig.spec.js +23 -0
- package/src/speech/createAudioConfig.ts +77 -0
- package/src/speech/createAudioContext.ts +16 -0
- package/src/speech/createMicrophoneAudioConfigAndAudioContext.ts +146 -0
- package/src/speech/getUserMedia.ts +14 -0
- package/src/tsconfig.json +1 -1
- package/src/types/AdaptiveCardsPackage.ts +23 -0
- package/src/types/CognitiveServicesAudioOutputFormat.ts +28 -0
- package/src/types/CognitiveServicesCredentials.ts +28 -0
- package/src/types/CognitiveServicesTextNormalization.ts +3 -0
- package/src/{FullBundleStyleOptions.ts → types/FullBundleStyleOptions.ts} +1 -1
- package/src/{useComposerProps.js → useComposerProps.ts} +21 -11
- package/webpack.config.js +46 -6
- package/.eslintignore +0 -9
- package/lib/FullBundleStyleOptions.d.ts.map +0 -1
- package/src/FullComposer.js +0 -40
- package/src/FullReactWebChat.js +0 -47
- package/src/adaptiveCards/AdaptiveCardsContext.js +0 -5
- package/src/adaptiveCards/Attachment/AdaptiveCardRenderer.js +0 -492
- package/src/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.js +0 -41
- package/src/createBrowserWebSpeechPonyfillFactory.js +0 -16
- package/src/createCognitiveServicesSpeechServicesPonyfillFactory.js +0 -58
- package/src/createDirectLine.js +0 -38
- package/src/createDirectLineAppServiceExtension.js +0 -12
- package/src/createDirectLineSpeechAdapters.js +0 -5
- package/src/index-es5.tsx +0 -49
- package/src/index-minimal.tsx +0 -9
- package/src/index.tsx +0 -45
- package/src/renderMarkdown.js +0 -97
- package/src/renderWebChat.js +0 -6
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
16
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
+
|
|
18
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
+
|
|
20
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
21
|
+
|
|
22
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
23
|
+
|
|
24
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
25
|
+
|
|
26
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
27
|
+
|
|
28
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
29
|
+
|
|
30
|
+
var _microsoftCognitiveservicesSpeechSdk = require("microsoft-cognitiveservices-speech-sdk");
|
|
31
|
+
|
|
32
|
+
var _Exports = require("microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/Exports");
|
|
33
|
+
|
|
34
|
+
var _AudioStreamFormat = require("microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/AudioStreamFormat");
|
|
35
|
+
|
|
36
|
+
var _Exports2 = require("microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Exports");
|
|
37
|
+
|
|
38
|
+
var _botframeworkWebchatCore = require("botframework-webchat-core");
|
|
39
|
+
|
|
40
|
+
var _uuid = require("uuid");
|
|
41
|
+
|
|
42
|
+
var _pDeferEs = _interopRequireDefault(require("p-defer-es5"));
|
|
43
|
+
|
|
44
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
45
|
+
|
|
46
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
47
|
+
|
|
48
|
+
var SYMBOL_DEVICE_INFO_DEFERRED = Symbol('deviceInfoDeferred');
|
|
49
|
+
var SYMBOL_EVENTS = Symbol('events');
|
|
50
|
+
var SYMBOL_FORMAT_DEFERRED = Symbol('formatDeferred');
|
|
51
|
+
var SYMBOL_OPTIONS = Symbol('options'); // Speech SDK quirks: Only 2 lifecycle functions are actually used.
|
|
52
|
+
// They are: attach() and turnOff().
|
|
53
|
+
// Others are not used, including: blob(), close(), detach(), turnOn().
|
|
54
|
+
|
|
55
|
+
var CustomAudioInputStream = /*#__PURE__*/function (_AudioInputStream) {
|
|
56
|
+
(0, _inherits2.default)(CustomAudioInputStream, _AudioInputStream);
|
|
57
|
+
|
|
58
|
+
var _super = _createSuper(CustomAudioInputStream);
|
|
59
|
+
|
|
60
|
+
function CustomAudioInputStream() {
|
|
61
|
+
var _this;
|
|
62
|
+
|
|
63
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
64
|
+
(0, _classCallCheck2.default)(this, CustomAudioInputStream);
|
|
65
|
+
_this = _super.call(this);
|
|
66
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_DEVICE_INFO_DEFERRED, void 0);
|
|
67
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_EVENTS, void 0);
|
|
68
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_FORMAT_DEFERRED, void 0);
|
|
69
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_OPTIONS, void 0);
|
|
70
|
+
var normalizedOptions = {
|
|
71
|
+
debug: options.debug || false,
|
|
72
|
+
id: options.id || (0, _uuid.v4)().replace(/\x2D/g, '')
|
|
73
|
+
}; // False alarm: indexer is a constant of type Symbol.
|
|
74
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
75
|
+
|
|
76
|
+
_this[SYMBOL_DEVICE_INFO_DEFERRED] = (0, _pDeferEs.default)(); // False alarm: indexer is a constant of type Symbol.
|
|
77
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
78
|
+
|
|
79
|
+
_this[SYMBOL_EVENTS] = new _Exports.EventSource(); // False alarm: indexer is a constant of type Symbol.
|
|
80
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
81
|
+
|
|
82
|
+
_this[SYMBOL_FORMAT_DEFERRED] = (0, _pDeferEs.default)(); // False alarm: indexer is a constant of type Symbol.
|
|
83
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
84
|
+
|
|
85
|
+
_this[SYMBOL_OPTIONS] = normalizedOptions;
|
|
86
|
+
return _this;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
(0, _createClass2.default)(CustomAudioInputStream, [{
|
|
90
|
+
key: "events",
|
|
91
|
+
get:
|
|
92
|
+
/** Gets the event source for listening to events. */
|
|
93
|
+
// ESLint: This code will only works in browsers other than IE11. Only works in ES5 is okay.
|
|
94
|
+
// @ts-ignore Accessors are only available when targeting ECMAScript 5 and higher.ts(1056)
|
|
95
|
+
function get() {
|
|
96
|
+
// False alarm: indexer is a constant of type Symbol.
|
|
97
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
98
|
+
return this[SYMBOL_EVENTS];
|
|
99
|
+
}
|
|
100
|
+
/** Gets the format of the audio stream. */
|
|
101
|
+
// Speech SDK quirks: `AudioStreamFormatImpl` is internal implementation while `AudioStreamFormat` is public.
|
|
102
|
+
// It is weird to expose `AudioStreamFormatImpl` instead of `AudioStreamFormat`.
|
|
103
|
+
// Speech SDK quirks: It is weird to return a `Promise` in a property.
|
|
104
|
+
// Speech SDK quirks: In normal speech recognition, getter of "format" is called only after "attach".
|
|
105
|
+
// But in Direct Line Speech, it is called before "attach".
|
|
106
|
+
// ESLint: This code will only works in browsers other than IE11. Only works in ES5 is okay.
|
|
107
|
+
// @ts-ignore Accessors are only available when targeting ECMAScript 5 and higher.ts(1056)
|
|
108
|
+
|
|
109
|
+
}, {
|
|
110
|
+
key: "format",
|
|
111
|
+
get: function get() {
|
|
112
|
+
this.debug('Getting "format".'); // False alarm: indexer is a constant of type Symbol.
|
|
113
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
114
|
+
|
|
115
|
+
return this[SYMBOL_FORMAT_DEFERRED].promise;
|
|
116
|
+
}
|
|
117
|
+
/** Gets the ID of this audio stream. */
|
|
118
|
+
|
|
119
|
+
}, {
|
|
120
|
+
key: "id",
|
|
121
|
+
value: function id() {
|
|
122
|
+
// False alarm: indexer is a constant of type Symbol.
|
|
123
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
124
|
+
return this[SYMBOL_OPTIONS].id;
|
|
125
|
+
}
|
|
126
|
+
/** Emits an event. */
|
|
127
|
+
// Speech SDK quirks: In JavaScript, onXxx means "listen to event XXX".
|
|
128
|
+
// Instead, in Speech SDK, it means "emit event XXX".
|
|
129
|
+
|
|
130
|
+
}, {
|
|
131
|
+
key: "onEvent",
|
|
132
|
+
value: function onEvent(event) {
|
|
133
|
+
// False alarm: indexer is a constant of type Symbol.
|
|
134
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
135
|
+
this[SYMBOL_EVENTS].onEvent(event);
|
|
136
|
+
|
|
137
|
+
_Exports.Events.instance.onEvent(event);
|
|
138
|
+
}
|
|
139
|
+
/** Emits an `AudioSourceInitializingEvent`. */
|
|
140
|
+
|
|
141
|
+
}, {
|
|
142
|
+
key: "emitInitializing",
|
|
143
|
+
value: function emitInitializing() {
|
|
144
|
+
this.debug('Emitting "AudioSourceInitializingEvent".');
|
|
145
|
+
this.onEvent(new _Exports.AudioSourceInitializingEvent(this.id()));
|
|
146
|
+
}
|
|
147
|
+
/** Emits an `AudioSourceReadyEvent`. */
|
|
148
|
+
|
|
149
|
+
}, {
|
|
150
|
+
key: "emitReady",
|
|
151
|
+
value: function emitReady() {
|
|
152
|
+
this.debug('Emitting "AudioSourceReadyEvent".');
|
|
153
|
+
this.onEvent(new _Exports.AudioSourceReadyEvent(this.id()));
|
|
154
|
+
}
|
|
155
|
+
/** Emits an `AudioSourceErrorEvent`. */
|
|
156
|
+
// Speech SDK quirks: Since "turnOn" is never called and "turnOff" does not work in Direct Line Speech, the "source error" event is not emitted at all.
|
|
157
|
+
// Instead, we only emit "node error" event.
|
|
158
|
+
|
|
159
|
+
}, {
|
|
160
|
+
key: "emitError",
|
|
161
|
+
value: function emitError(error) {
|
|
162
|
+
this.debug('Emitting "AudioSourceErrorEvent".', {
|
|
163
|
+
error: error
|
|
164
|
+
}); // Speech SDK quirks: "error" is a string, instead of object of type "Error".
|
|
165
|
+
|
|
166
|
+
this.onEvent(new _Exports.AudioSourceErrorEvent(this.id(), error.message));
|
|
167
|
+
}
|
|
168
|
+
/** Emits an `AudioStreamNodeAttachingEvent`. */
|
|
169
|
+
|
|
170
|
+
}, {
|
|
171
|
+
key: "emitNodeAttaching",
|
|
172
|
+
value: function emitNodeAttaching(audioNodeId) {
|
|
173
|
+
this.debug("Emitting \"AudioStreamNodeAttachingEvent\" for node \"".concat(audioNodeId, "\"."));
|
|
174
|
+
this.onEvent(new _Exports.AudioStreamNodeAttachingEvent(this.id(), audioNodeId));
|
|
175
|
+
}
|
|
176
|
+
/** Emits an `AudioStreamNodeAttachedEvent`. */
|
|
177
|
+
|
|
178
|
+
}, {
|
|
179
|
+
key: "emitNodeAttached",
|
|
180
|
+
value: function emitNodeAttached(audioNodeId) {
|
|
181
|
+
this.debug("Emitting \"AudioStreamNodeAttachedEvent\" for node \"".concat(audioNodeId, "\"."));
|
|
182
|
+
this.onEvent(new _Exports.AudioStreamNodeAttachedEvent(this.id(), audioNodeId));
|
|
183
|
+
}
|
|
184
|
+
/** Emits an `AudioStreamNodeErrorEvent`. */
|
|
185
|
+
|
|
186
|
+
}, {
|
|
187
|
+
key: "emitNodeError",
|
|
188
|
+
value: function emitNodeError(audioNodeId, error) {
|
|
189
|
+
this.debug("Emitting \"AudioStreamNodeErrorEvent\" for node \"".concat(audioNodeId, "\"."), {
|
|
190
|
+
error: error
|
|
191
|
+
}); // Speech SDK quirks: "error" is a string, instead of object of type "Error".
|
|
192
|
+
|
|
193
|
+
this.onEvent(new _Exports.AudioStreamNodeErrorEvent(this.id(), audioNodeId, error.message));
|
|
194
|
+
}
|
|
195
|
+
/** Emits an `AudioStreamNodeDetachedEvent`. */
|
|
196
|
+
|
|
197
|
+
}, {
|
|
198
|
+
key: "emitNodeDetached",
|
|
199
|
+
value: function emitNodeDetached(audioNodeId) {
|
|
200
|
+
this.debug('Emitting "AudioStreamNodeDetachedEvent".');
|
|
201
|
+
this.onEvent(new _Exports.AudioStreamNodeDetachedEvent(this.id(), audioNodeId));
|
|
202
|
+
}
|
|
203
|
+
/** Emits an `AudioSourceOffEvent`. */
|
|
204
|
+
|
|
205
|
+
}, {
|
|
206
|
+
key: "emitOff",
|
|
207
|
+
value: function emitOff() {
|
|
208
|
+
this.debug('Emitting "AudioSourceOffEvent".');
|
|
209
|
+
this.onEvent(new _Exports.AudioSourceOffEvent(this.id()));
|
|
210
|
+
} // Speech SDK quirks: Although "close" is marked as abstract, it is never called in our observations.
|
|
211
|
+
// ESLint: Speech SDK requires this function, but we are not implementing it.
|
|
212
|
+
|
|
213
|
+
}, {
|
|
214
|
+
key: "close",
|
|
215
|
+
value: function close() {
|
|
216
|
+
this.debug('Callback for "close".');
|
|
217
|
+
throw new Error('Not implemented');
|
|
218
|
+
} // Speech SDK quirks: Although "turnOn" is implemented in Speech SDK Push/PullAudioInputStream, it is never called in our observations.
|
|
219
|
+
|
|
220
|
+
}, {
|
|
221
|
+
key: "turnOn",
|
|
222
|
+
value: function turnOn() {
|
|
223
|
+
this.debug('Callback for "turnOn".');
|
|
224
|
+
throw new Error('Not implemented');
|
|
225
|
+
} // Speech SDK quirks: Although "detach" is implemented in Speech SDK Push/PullAudioInputStream, it is never called in our observations.
|
|
226
|
+
|
|
227
|
+
}, {
|
|
228
|
+
key: "detach",
|
|
229
|
+
value: function detach() {
|
|
230
|
+
this.debug('Callback for "detach".');
|
|
231
|
+
throw new Error('Not implemented');
|
|
232
|
+
}
|
|
233
|
+
/** Log the message to console if `debug` is set to `true`. */
|
|
234
|
+
|
|
235
|
+
}, {
|
|
236
|
+
key: "debug",
|
|
237
|
+
value: function debug(message) {
|
|
238
|
+
var _console;
|
|
239
|
+
|
|
240
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
241
|
+
args[_key - 1] = arguments[_key];
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// ESLint: For debugging, will only log when "debug" is set to "true".
|
|
245
|
+
// False alarm: indexer is a constant of type Symbol.
|
|
246
|
+
// eslint-disable-next-line no-console, security/detect-object-injection
|
|
247
|
+
this[SYMBOL_OPTIONS].debug && (_console = console).info.apply(_console, ["CustomAudioInputStream: ".concat(message)].concat(args));
|
|
248
|
+
}
|
|
249
|
+
/** Implements this function. When called, it should start recording and return an `IAudioStreamNode`. */
|
|
250
|
+
|
|
251
|
+
}, {
|
|
252
|
+
key: "attach",
|
|
253
|
+
value:
|
|
254
|
+
/** Attaches the device by returning an audio node. */
|
|
255
|
+
function attach(audioNodeId) {
|
|
256
|
+
var _this2 = this;
|
|
257
|
+
|
|
258
|
+
this.debug("Callback for \"attach\" with \"".concat(audioNodeId, "\"."));
|
|
259
|
+
this.emitNodeAttaching(audioNodeId);
|
|
260
|
+
return Promise.resolve().then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
261
|
+
var _yield$_this2$perform, audioStreamNode, deviceInfo, format;
|
|
262
|
+
|
|
263
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
264
|
+
while (1) {
|
|
265
|
+
switch (_context2.prev = _context2.next) {
|
|
266
|
+
case 0:
|
|
267
|
+
_this2.emitInitializing();
|
|
268
|
+
|
|
269
|
+
_context2.prev = 1;
|
|
270
|
+
_context2.next = 4;
|
|
271
|
+
return _this2.performAttach(audioNodeId);
|
|
272
|
+
|
|
273
|
+
case 4:
|
|
274
|
+
_yield$_this2$perform = _context2.sent;
|
|
275
|
+
audioStreamNode = _yield$_this2$perform.audioStreamNode;
|
|
276
|
+
deviceInfo = _yield$_this2$perform.deviceInfo;
|
|
277
|
+
format = _yield$_this2$perform.format;
|
|
278
|
+
|
|
279
|
+
// Although only getter of "format" is called before "attach" (in Direct Line Speech),
|
|
280
|
+
// we are handling both "deviceInfo" and "format" in similar way for uniformity.
|
|
281
|
+
// False alarm: indexer is a constant of type Symbol.
|
|
282
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
283
|
+
_this2[SYMBOL_DEVICE_INFO_DEFERRED].resolve(deviceInfo); // False alarm: indexer is a constant of type Symbol.
|
|
284
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
_this2[SYMBOL_FORMAT_DEFERRED].resolve(new _AudioStreamFormat.AudioStreamFormatImpl(format.samplesPerSec, format.bitsPerSample, format.channels));
|
|
288
|
+
|
|
289
|
+
_this2.emitReady();
|
|
290
|
+
|
|
291
|
+
_this2.emitNodeAttached(audioNodeId);
|
|
292
|
+
|
|
293
|
+
return _context2.abrupt("return", {
|
|
294
|
+
detach: function () {
|
|
295
|
+
var _detach = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
296
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
297
|
+
while (1) {
|
|
298
|
+
switch (_context.prev = _context.next) {
|
|
299
|
+
case 0:
|
|
300
|
+
_this2.debug("Detaching audio node \"".concat(audioNodeId, "\"."));
|
|
301
|
+
|
|
302
|
+
_context.next = 3;
|
|
303
|
+
return audioStreamNode.detach();
|
|
304
|
+
|
|
305
|
+
case 3:
|
|
306
|
+
// Speech SDK quirks: Since "turnOff" is not called in Direct Line Speech, we will emit event "source off" here instead.
|
|
307
|
+
_this2.emitOff();
|
|
308
|
+
|
|
309
|
+
_this2.emitNodeDetached(audioNodeId);
|
|
310
|
+
|
|
311
|
+
case 5:
|
|
312
|
+
case "end":
|
|
313
|
+
return _context.stop();
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}, _callee);
|
|
317
|
+
}));
|
|
318
|
+
|
|
319
|
+
function detach() {
|
|
320
|
+
return _detach.apply(this, arguments);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
return detach;
|
|
324
|
+
}(),
|
|
325
|
+
id: function id() {
|
|
326
|
+
return audioStreamNode.id();
|
|
327
|
+
},
|
|
328
|
+
read: function read() {
|
|
329
|
+
_this2.debug('Reading');
|
|
330
|
+
|
|
331
|
+
return audioStreamNode.read();
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
case 15:
|
|
336
|
+
_context2.prev = 15;
|
|
337
|
+
_context2.t0 = _context2["catch"](1);
|
|
338
|
+
|
|
339
|
+
_this2.emitNodeError(audioNodeId, _context2.t0);
|
|
340
|
+
|
|
341
|
+
throw _context2.t0;
|
|
342
|
+
|
|
343
|
+
case 19:
|
|
344
|
+
case "end":
|
|
345
|
+
return _context2.stop();
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}, _callee2, null, [[1, 15]]);
|
|
349
|
+
})));
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Implements this function. When called, it should stop recording. This is called before the `IAudioStreamNode.detach` function.
|
|
353
|
+
*
|
|
354
|
+
* Note: when using with Direct Line Speech, this function is never called.
|
|
355
|
+
*/
|
|
356
|
+
// ESLint: We are not implementing this function because it is not called by Direct Line Speech.
|
|
357
|
+
// eslint-disable-next-line class-methods-use-this
|
|
358
|
+
|
|
359
|
+
}, {
|
|
360
|
+
key: "performTurnOff",
|
|
361
|
+
value: function performTurnOff() {
|
|
362
|
+
// ESLint: "return" is required by TypeScript
|
|
363
|
+
// eslint-disable-next-line no-useless-return
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
/** Turn off the audio device. This is called before detaching from the graph. */
|
|
367
|
+
// Speech SDK quirks: It is confused to have both "turnOff" and "detach". "turnOff" is called before "detach".
|
|
368
|
+
// Why don't we put all logics at "detach"?
|
|
369
|
+
// Speech SDK quirks: Direct Line Speech never call "turnOff". "Source off" event need to be emitted during "detach" instead.
|
|
370
|
+
// Also, custom implementation should be done at "detach" instead, such as ending and closing output streams.
|
|
371
|
+
|
|
372
|
+
}, {
|
|
373
|
+
key: "turnOff",
|
|
374
|
+
value: function () {
|
|
375
|
+
var _turnOff = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
376
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
377
|
+
while (1) {
|
|
378
|
+
switch (_context3.prev = _context3.next) {
|
|
379
|
+
case 0:
|
|
380
|
+
this.debug("Callback for \"turnOff\".");
|
|
381
|
+
_context3.next = 3;
|
|
382
|
+
return this.performTurnOff();
|
|
383
|
+
|
|
384
|
+
case 3:
|
|
385
|
+
case "end":
|
|
386
|
+
return _context3.stop();
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}, _callee3, this);
|
|
390
|
+
}));
|
|
391
|
+
|
|
392
|
+
function turnOff() {
|
|
393
|
+
return _turnOff.apply(this, arguments);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
return turnOff;
|
|
397
|
+
}()
|
|
398
|
+
/** Gets the device information. */
|
|
399
|
+
// ESLint: This code will only works in browsers other than IE11. Only works in ES5 is okay.
|
|
400
|
+
// @ts-ignore Accessors are only available when targeting ECMAScript 5 and higher.ts(1056)
|
|
401
|
+
|
|
402
|
+
}, {
|
|
403
|
+
key: "deviceInfo",
|
|
404
|
+
get: function get() {
|
|
405
|
+
this.debug("Getting \"deviceInfo\"."); // False alarm: indexer is a constant of type Symbol.
|
|
406
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
407
|
+
|
|
408
|
+
return Promise.all([this[SYMBOL_DEVICE_INFO_DEFERRED].promise, this[SYMBOL_FORMAT_DEFERRED].promise]).then(function (_ref2) {
|
|
409
|
+
var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
|
|
410
|
+
_ref3$ = _ref3[0],
|
|
411
|
+
connectivity = _ref3$.connectivity,
|
|
412
|
+
manufacturer = _ref3$.manufacturer,
|
|
413
|
+
model = _ref3$.model,
|
|
414
|
+
type = _ref3$.type,
|
|
415
|
+
_ref3$2 = _ref3[1],
|
|
416
|
+
bitsPerSample = _ref3$2.bitsPerSample,
|
|
417
|
+
channels = _ref3$2.channels,
|
|
418
|
+
samplesPerSec = _ref3$2.samplesPerSec;
|
|
419
|
+
|
|
420
|
+
return {
|
|
421
|
+
bitspersample: bitsPerSample,
|
|
422
|
+
channelcount: channels,
|
|
423
|
+
connectivity: typeof connectivity === 'string' && !(0, _botframeworkWebchatCore.isForbiddenPropertyName)(connectivity) ? // Mitigated through denylisting.
|
|
424
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
425
|
+
_Exports2.connectivity[connectivity] : connectivity || _Exports2.connectivity.Unknown,
|
|
426
|
+
manufacturer: manufacturer || '',
|
|
427
|
+
model: model || '',
|
|
428
|
+
samplerate: samplesPerSec,
|
|
429
|
+
// Mitigated through denylisting.
|
|
430
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
431
|
+
type: typeof type === 'string' && !(0, _botframeworkWebchatCore.isForbiddenPropertyName)(type) ? _Exports2.type[type] : type || _Exports2.type.Unknown
|
|
432
|
+
};
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
}]);
|
|
436
|
+
return CustomAudioInputStream;
|
|
437
|
+
}(_microsoftCognitiveservicesSpeechSdk.AudioInputStream);
|
|
438
|
+
|
|
439
|
+
var _default = CustomAudioInputStream;
|
|
440
|
+
exports.default = _default;
|
|
441
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcGVlY2gvQ3VzdG9tQXVkaW9JbnB1dFN0cmVhbS50cyJdLCJuYW1lcyI6WyJTWU1CT0xfREVWSUNFX0lORk9fREVGRVJSRUQiLCJTeW1ib2wiLCJTWU1CT0xfRVZFTlRTIiwiU1lNQk9MX0ZPUk1BVF9ERUZFUlJFRCIsIlNZTUJPTF9PUFRJT05TIiwiQ3VzdG9tQXVkaW9JbnB1dFN0cmVhbSIsIm9wdGlvbnMiLCJub3JtYWxpemVkT3B0aW9ucyIsImRlYnVnIiwiaWQiLCJyZXBsYWNlIiwiRXZlbnRTb3VyY2UiLCJwcm9taXNlIiwiZXZlbnQiLCJvbkV2ZW50IiwiRXZlbnRzIiwiaW5zdGFuY2UiLCJBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50IiwiQXVkaW9Tb3VyY2VSZWFkeUV2ZW50IiwiZXJyb3IiLCJBdWRpb1NvdXJjZUVycm9yRXZlbnQiLCJtZXNzYWdlIiwiYXVkaW9Ob2RlSWQiLCJBdWRpb1N0cmVhbU5vZGVBdHRhY2hpbmdFdmVudCIsIkF1ZGlvU3RyZWFtTm9kZUF0dGFjaGVkRXZlbnQiLCJBdWRpb1N0cmVhbU5vZGVFcnJvckV2ZW50IiwiQXVkaW9TdHJlYW1Ob2RlRGV0YWNoZWRFdmVudCIsIkF1ZGlvU291cmNlT2ZmRXZlbnQiLCJFcnJvciIsImFyZ3MiLCJjb25zb2xlIiwiaW5mbyIsImVtaXROb2RlQXR0YWNoaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiZW1pdEluaXRpYWxpemluZyIsInBlcmZvcm1BdHRhY2giLCJhdWRpb1N0cmVhbU5vZGUiLCJkZXZpY2VJbmZvIiwiZm9ybWF0IiwiQXVkaW9TdHJlYW1Gb3JtYXRJbXBsIiwic2FtcGxlc1BlclNlYyIsImJpdHNQZXJTYW1wbGUiLCJjaGFubmVscyIsImVtaXRSZWFkeSIsImVtaXROb2RlQXR0YWNoZWQiLCJkZXRhY2giLCJlbWl0T2ZmIiwiZW1pdE5vZGVEZXRhY2hlZCIsInJlYWQiLCJlbWl0Tm9kZUVycm9yIiwicGVyZm9ybVR1cm5PZmYiLCJhbGwiLCJjb25uZWN0aXZpdHkiLCJtYW51ZmFjdHVyZXIiLCJtb2RlbCIsInR5cGUiLCJiaXRzcGVyc2FtcGxlIiwiY2hhbm5lbGNvdW50IiwiQ29ubmVjdGl2aXR5IiwiVW5rbm93biIsInNhbXBsZXJhdGUiLCJUeXBlIiwiQXVkaW9JbnB1dFN0cmVhbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFjQTs7QUFFQTs7QUFNQTs7QUFDQTs7QUFDQTs7Ozs7O0FBZ0RBLElBQU1BLDJCQUEyQixHQUFHQyxNQUFNLENBQUMsb0JBQUQsQ0FBMUM7QUFDQSxJQUFNQyxhQUFhLEdBQUdELE1BQU0sQ0FBQyxRQUFELENBQTVCO0FBQ0EsSUFBTUUsc0JBQXNCLEdBQUdGLE1BQU0sQ0FBQyxnQkFBRCxDQUFyQztBQUNBLElBQU1HLGNBQWMsR0FBR0gsTUFBTSxDQUFDLFNBQUQsQ0FBN0IsQyxDQUVBO0FBQ0E7QUFDQTs7SUFDZUksc0I7Ozs7O0FBQ2Isb0NBQW1DO0FBQUE7O0FBQUEsUUFBdkJDLE9BQXVCLHVFQUFKLEVBQUk7QUFBQTtBQUNqQztBQURpQywrRUF5QmxDTiwyQkF6QmtDO0FBQUEsK0VBMEJsQ0UsYUExQmtDO0FBQUEsK0VBMkJsQ0Msc0JBM0JrQztBQUFBLCtFQTRCbENDLGNBNUJrQztBQUdqQyxRQUFNRyxpQkFBb0MsR0FBRztBQUMzQ0MsTUFBQUEsS0FBSyxFQUFFRixPQUFPLENBQUNFLEtBQVIsSUFBaUIsS0FEbUI7QUFFM0NDLE1BQUFBLEVBQUUsRUFBRUgsT0FBTyxDQUFDRyxFQUFSLElBQWMsZ0JBQUtDLE9BQUwsQ0FBYSxPQUFiLEVBQW9CLEVBQXBCO0FBRnlCLEtBQTdDLENBSGlDLENBUWpDO0FBQ0E7O0FBQ0EsVUFBS1YsMkJBQUwsSUFBb0Msd0JBQXBDLENBVmlDLENBWWpDO0FBQ0E7O0FBQ0EsVUFBS0UsYUFBTCxJQUFzQixJQUFJUyxvQkFBSixFQUF0QixDQWRpQyxDQWdCakM7QUFDQTs7QUFDQSxVQUFLUixzQkFBTCxJQUErQix3QkFBL0IsQ0FsQmlDLENBb0JqQztBQUNBOztBQUNBLFVBQUtDLGNBQUwsSUFBdUJHLGlCQUF2QjtBQXRCaUM7QUF1QmxDOzs7OztBQU9EO0FBQ0E7QUFDQTtBQUNBLG1CQUE0QztBQUMxQztBQUNBO0FBQ0EsYUFBTyxLQUFLTCxhQUFMLENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7U0FDQSxlQUE2QztBQUMzQyxXQUFLTSxLQUFMLENBQVcsbUJBQVgsRUFEMkMsQ0FHM0M7QUFDQTs7QUFDQSxhQUFPLEtBQUtMLHNCQUFMLEVBQTZCUyxPQUFwQztBQUNEO0FBRUQ7Ozs7V0FDQSxjQUFhO0FBQ1g7QUFDQTtBQUNBLGFBQU8sS0FBS1IsY0FBTCxFQUFxQkssRUFBNUI7QUFDRDtBQUVEO0FBQ0E7QUFDQTs7OztXQUNBLGlCQUFrQkksS0FBbEIsRUFBaUQ7QUFDL0M7QUFDQTtBQUNBLFdBQUtYLGFBQUwsRUFBb0JZLE9BQXBCLENBQTRCRCxLQUE1Qjs7QUFDQUUsc0JBQU9DLFFBQVAsQ0FBZ0JGLE9BQWhCLENBQXdCRCxLQUF4QjtBQUNEO0FBRUQ7Ozs7V0FDQSw0QkFBbUM7QUFDakMsV0FBS0wsS0FBTCxDQUFXLDBDQUFYO0FBQ0EsV0FBS00sT0FBTCxDQUFhLElBQUlHLHFDQUFKLENBQWlDLEtBQUtSLEVBQUwsRUFBakMsQ0FBYjtBQUNEO0FBRUQ7Ozs7V0FDQSxxQkFBNEI7QUFDMUIsV0FBS0QsS0FBTCxDQUFXLG1DQUFYO0FBQ0EsV0FBS00sT0FBTCxDQUFhLElBQUlJLDhCQUFKLENBQTBCLEtBQUtULEVBQUwsRUFBMUIsQ0FBYjtBQUNEO0FBRUQ7QUFDQTtBQUNBOzs7O1dBQ0EsbUJBQW9CVSxLQUFwQixFQUF3QztBQUN0QyxXQUFLWCxLQUFMLENBQVcsbUNBQVgsRUFBZ0Q7QUFBRVcsUUFBQUEsS0FBSyxFQUFMQTtBQUFGLE9BQWhELEVBRHNDLENBR3RDOztBQUNBLFdBQUtMLE9BQUwsQ0FBYSxJQUFJTSw4QkFBSixDQUEwQixLQUFLWCxFQUFMLEVBQTFCLEVBQXFDVSxLQUFLLENBQUNFLE9BQTNDLENBQWI7QUFDRDtBQUVEOzs7O1dBQ0EsMkJBQTRCQyxXQUE1QixFQUF1RDtBQUNyRCxXQUFLZCxLQUFMLGlFQUFpRWMsV0FBakU7QUFDQSxXQUFLUixPQUFMLENBQWEsSUFBSVMsc0NBQUosQ0FBa0MsS0FBS2QsRUFBTCxFQUFsQyxFQUE2Q2EsV0FBN0MsQ0FBYjtBQUNEO0FBRUQ7Ozs7V0FDQSwwQkFBMkJBLFdBQTNCLEVBQXNEO0FBQ3BELFdBQUtkLEtBQUwsZ0VBQWdFYyxXQUFoRTtBQUNBLFdBQUtSLE9BQUwsQ0FBYSxJQUFJVSxxQ0FBSixDQUFpQyxLQUFLZixFQUFMLEVBQWpDLEVBQTRDYSxXQUE1QyxDQUFiO0FBQ0Q7QUFFRDs7OztXQUNBLHVCQUF3QkEsV0FBeEIsRUFBNkNILEtBQTdDLEVBQWlFO0FBQy9ELFdBQUtYLEtBQUwsNkRBQTZEYyxXQUE3RCxVQUE4RTtBQUFFSCxRQUFBQSxLQUFLLEVBQUxBO0FBQUYsT0FBOUUsRUFEK0QsQ0FHL0Q7O0FBQ0EsV0FBS0wsT0FBTCxDQUFhLElBQUlXLGtDQUFKLENBQThCLEtBQUtoQixFQUFMLEVBQTlCLEVBQXlDYSxXQUF6QyxFQUFzREgsS0FBSyxDQUFDRSxPQUE1RCxDQUFiO0FBQ0Q7QUFFRDs7OztXQUNBLDBCQUEyQkMsV0FBM0IsRUFBc0Q7QUFDcEQsV0FBS2QsS0FBTCxDQUFXLDBDQUFYO0FBQ0EsV0FBS00sT0FBTCxDQUFhLElBQUlZLHFDQUFKLENBQWlDLEtBQUtqQixFQUFMLEVBQWpDLEVBQTRDYSxXQUE1QyxDQUFiO0FBQ0Q7QUFFRDs7OztXQUNBLG1CQUEwQjtBQUN4QixXQUFLZCxLQUFMLENBQVcsaUNBQVg7QUFDQSxXQUFLTSxPQUFMLENBQWEsSUFBSWEsNEJBQUosQ0FBd0IsS0FBS2xCLEVBQUwsRUFBeEIsQ0FBYjtBQUNELEssQ0FFRDtBQUNBOzs7O1dBQ0EsaUJBQWM7QUFDWixXQUFLRCxLQUFMLENBQVcsdUJBQVg7QUFFQSxZQUFNLElBQUlvQixLQUFKLENBQVUsaUJBQVYsQ0FBTjtBQUNELEssQ0FFRDs7OztXQUNBLGtCQUFlO0FBQ2IsV0FBS3BCLEtBQUwsQ0FBVyx3QkFBWDtBQUVBLFlBQU0sSUFBSW9CLEtBQUosQ0FBVSxpQkFBVixDQUFOO0FBQ0QsSyxDQUVEOzs7O1dBQ0Esa0JBQWU7QUFDYixXQUFLcEIsS0FBTCxDQUFXLHdCQUFYO0FBRUEsWUFBTSxJQUFJb0IsS0FBSixDQUFVLGlCQUFWLENBQU47QUFDRDtBQUVEOzs7O1dBQ0EsZUFBY1AsT0FBZCxFQUFnQztBQUFBOztBQUFBLHdDQUFOUSxJQUFNO0FBQU5BLFFBQUFBLElBQU07QUFBQTs7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsV0FBS3pCLGNBQUwsRUFBcUJJLEtBQXJCLElBQThCLFlBQUFzQixPQUFPLEVBQUNDLElBQVIsb0RBQXdDVixPQUF4QyxVQUFzRFEsSUFBdEQsRUFBOUI7QUFDRDtBQUVEOzs7OztBQU9BO0FBQ0Esb0JBQU9QLFdBQVAsRUFBc0Q7QUFBQTs7QUFDcEQsV0FBS2QsS0FBTCwwQ0FBMENjLFdBQTFDO0FBRUEsV0FBS1UsaUJBQUwsQ0FBdUJWLFdBQXZCO0FBRUEsYUFBT1csT0FBTyxDQUFDQyxPQUFSLEdBQWtCQyxJQUFsQix1RkFBd0M7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUM3QyxnQkFBQSxNQUFJLENBQUNDLGdCQUFMOztBQUQ2QztBQUFBO0FBQUEsdUJBSVcsTUFBSSxDQUFDQyxhQUFMLENBQW1CZixXQUFuQixDQUpYOztBQUFBO0FBQUE7QUFJbkNnQixnQkFBQUEsZUFKbUMseUJBSW5DQSxlQUptQztBQUlsQkMsZ0JBQUFBLFVBSmtCLHlCQUlsQkEsVUFKa0I7QUFJTkMsZ0JBQUFBLE1BSk0seUJBSU5BLE1BSk07O0FBTTNDO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsZ0JBQUEsTUFBSSxDQUFDeEMsMkJBQUQsQ0FBSixDQUFrQ2tDLE9BQWxDLENBQTBDSyxVQUExQyxFQVgyQyxDQWEzQztBQUNBOzs7QUFDQSxnQkFBQSxNQUFJLENBQUNwQyxzQkFBRCxDQUFKLENBQTZCK0IsT0FBN0IsQ0FDRSxJQUFJTyx3Q0FBSixDQUEwQkQsTUFBTSxDQUFDRSxhQUFqQyxFQUFnREYsTUFBTSxDQUFDRyxhQUF2RCxFQUFzRUgsTUFBTSxDQUFDSSxRQUE3RSxDQURGOztBQUlBLGdCQUFBLE1BQUksQ0FBQ0MsU0FBTDs7QUFDQSxnQkFBQSxNQUFJLENBQUNDLGdCQUFMLENBQXNCeEIsV0FBdEI7O0FBcEIyQyxrREFzQnBDO0FBQ0x5QixrQkFBQUEsTUFBTTtBQUFBLDBHQUFFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDTiw4QkFBQSxNQUFJLENBQUN2QyxLQUFMLGtDQUFvQ2MsV0FBcEM7O0FBRE07QUFBQSxxQ0FHQWdCLGVBQWUsQ0FBQ1MsTUFBaEIsRUFIQTs7QUFBQTtBQUtOO0FBQ0EsOEJBQUEsTUFBSSxDQUFDQyxPQUFMOztBQUNBLDhCQUFBLE1BQUksQ0FBQ0MsZ0JBQUwsQ0FBc0IzQixXQUF0Qjs7QUFQTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFBRjs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxxQkFERDtBQVVMYixrQkFBQUEsRUFBRSxFQUFFO0FBQUEsMkJBQU02QixlQUFlLENBQUM3QixFQUFoQixFQUFOO0FBQUEsbUJBVkM7QUFXTHlDLGtCQUFBQSxJQUFJLEVBQUUsZ0JBQU07QUFDVixvQkFBQSxNQUFJLENBQUMxQyxLQUFMLENBQVcsU0FBWDs7QUFFQSwyQkFBTzhCLGVBQWUsQ0FBQ1ksSUFBaEIsRUFBUDtBQUNEO0FBZkksaUJBdEJvQzs7QUFBQTtBQUFBO0FBQUE7O0FBd0MzQyxnQkFBQSxNQUFJLENBQUNDLGFBQUwsQ0FBbUI3QixXQUFuQjs7QUF4QzJDOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQXhDLEdBQVA7QUE2Q0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBRUU7QUFDQTs7OztXQUNBLDBCQUEwQztBQUN4QztBQUNBO0FBQ0E7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OzZGQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDRSxxQkFBS2QsS0FBTDtBQURGO0FBQUEsdUJBR1EsS0FBSzRDLGNBQUwsRUFIUjs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7OztBQU1BO0FBQ0E7QUFDQTs7OztTQUNBLGVBQW9EO0FBQ2xELFdBQUs1QyxLQUFMLDRCQURrRCxDQUdsRDtBQUNBOztBQUNBLGFBQU95QixPQUFPLENBQUNvQixHQUFSLENBQVksQ0FBQyxLQUFLckQsMkJBQUwsRUFBa0NZLE9BQW5DLEVBQTRDLEtBQUtULHNCQUFMLEVBQTZCUyxPQUF6RSxDQUFaLEVBQStGdUIsSUFBL0YsQ0FDTDtBQUFBO0FBQUE7QUFBQSxZQUFJbUIsWUFBSixVQUFJQSxZQUFKO0FBQUEsWUFBa0JDLFlBQWxCLFVBQWtCQSxZQUFsQjtBQUFBLFlBQWdDQyxLQUFoQyxVQUFnQ0EsS0FBaEM7QUFBQSxZQUF1Q0MsSUFBdkMsVUFBdUNBLElBQXZDO0FBQUE7QUFBQSxZQUFpRGQsYUFBakQsV0FBaURBLGFBQWpEO0FBQUEsWUFBZ0VDLFFBQWhFLFdBQWdFQSxRQUFoRTtBQUFBLFlBQTBFRixhQUExRSxXQUEwRUEsYUFBMUU7O0FBQUEsZUFBZ0c7QUFDOUZnQixVQUFBQSxhQUFhLEVBQUVmLGFBRCtFO0FBRTlGZ0IsVUFBQUEsWUFBWSxFQUFFZixRQUZnRjtBQUc5RlUsVUFBQUEsWUFBWSxFQUNWLE9BQU9BLFlBQVAsS0FBd0IsUUFBeEIsSUFBb0MsQ0FBQyxzREFBd0JBLFlBQXhCLENBQXJDLEdBQ0k7QUFDQTtBQUNBTSxpQ0FBYU4sWUFBYixDQUhKLEdBSUlBLFlBQVksSUFBSU0sdUJBQWFDLE9BUjJEO0FBUzlGTixVQUFBQSxZQUFZLEVBQUVBLFlBQVksSUFBSSxFQVRnRTtBQVU5RkMsVUFBQUEsS0FBSyxFQUFFQSxLQUFLLElBQUksRUFWOEU7QUFXOUZNLFVBQUFBLFVBQVUsRUFBRXBCLGFBWGtGO0FBWTlGO0FBQ0E7QUFDQWUsVUFBQUEsSUFBSSxFQUFFLE9BQU9BLElBQVAsS0FBZ0IsUUFBaEIsSUFBNEIsQ0FBQyxzREFBd0JBLElBQXhCLENBQTdCLEdBQTZETSxlQUFLTixJQUFMLENBQTdELEdBQTBFQSxJQUFJLElBQUlNLGVBQUtGO0FBZEMsU0FBaEc7QUFBQSxPQURLLENBQVA7QUFrQkQ7OztFQTVRMkNHLHFEOztlQStRL0IzRCxzQiIsInNvdXJjZVJvb3QiOiJidW5kbGU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXVkaW9JbnB1dFN0cmVhbSB9IGZyb20gJ21pY3Jvc29mdC1jb2duaXRpdmVzZXJ2aWNlcy1zcGVlY2gtc2RrJztcblxuaW1wb3J0IHtcbiAgQXVkaW9Tb3VyY2VFcnJvckV2ZW50LFxuICBBdWRpb1NvdXJjZUV2ZW50LFxuICBBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50LFxuICBBdWRpb1NvdXJjZU9mZkV2ZW50LFxuICBBdWRpb1NvdXJjZVJlYWR5RXZlbnQsXG4gIEF1ZGlvU3RyZWFtTm9kZUF0dGFjaGVkRXZlbnQsXG4gIEF1ZGlvU3RyZWFtTm9kZUF0dGFjaGluZ0V2ZW50LFxuICBBdWRpb1N0cmVhbU5vZGVEZXRhY2hlZEV2ZW50LFxuICBBdWRpb1N0cmVhbU5vZGVFcnJvckV2ZW50LFxuICBFdmVudHMsXG4gIEV2ZW50U291cmNlXG59IGZyb20gJ21pY3Jvc29mdC1jb2duaXRpdmVzZXJ2aWNlcy1zcGVlY2gtc2RrL2Rpc3RyaWIvbGliL3NyYy9jb21tb24vRXhwb3J0cyc7XG5cbmltcG9ydCB7IEF1ZGlvU3RyZWFtRm9ybWF0SW1wbCB9IGZyb20gJ21pY3Jvc29mdC1jb2duaXRpdmVzZXJ2aWNlcy1zcGVlY2gtc2RrL2Rpc3RyaWIvbGliL3NyYy9zZGsvQXVkaW8vQXVkaW9TdHJlYW1Gb3JtYXQnO1xuXG5pbXBvcnQge1xuICBjb25uZWN0aXZpdHkgYXMgQ29ubmVjdGl2aXR5LFxuICBJU3BlZWNoQ29uZmlnQXVkaW9EZXZpY2UsXG4gIHR5cGUgYXMgVHlwZVxufSBmcm9tICdtaWNyb3NvZnQtY29nbml0aXZlc2VydmljZXMtc3BlZWNoLXNkay9kaXN0cmliL2xpYi9zcmMvY29tbW9uLnNwZWVjaC9FeHBvcnRzJztcblxuaW1wb3J0IHsgaXNGb3JiaWRkZW5Qcm9wZXJ0eU5hbWUgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1jb3JlJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgY3JlYXRlRGVmZXJyZWQsIHsgRGVmZXJyZWRQcm9taXNlIH0gZnJvbSAncC1kZWZlci1lczUnO1xuXG50eXBlIEF1ZGlvU3RyZWFtTm9kZSA9IHtcbiAgZGV0YWNoOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpZDogKCkgPT4gc3RyaW5nO1xuICByZWFkOiAoKSA9PiBQcm9taXNlPFN0cmVhbUNodW5rPEFycmF5QnVmZmVyPj47XG59O1xuXG50eXBlIERldmljZUluZm8gPSB7XG4gIGNvbm5lY3Rpdml0eT86IENvbm5lY3Rpdml0eSB8ICdCbHVldG9vdGgnIHwgJ1dpcmVkJyB8ICdXaUZpJyB8ICdDZWxsdWxhcicgfCAnSW5CdWlsdCcgfCAnVW5rbm93bic7XG4gIG1hbnVmYWN0dXJlcj86IHN0cmluZztcbiAgbW9kZWw/OiBzdHJpbmc7XG4gIHR5cGU/OlxuICAgIHwgVHlwZVxuICAgIHwgJ1Bob25lJ1xuICAgIHwgJ1NwZWFrZXInXG4gICAgfCAnQ2FyJ1xuICAgIHwgJ0hlYWRzZXQnXG4gICAgfCAnVGhlcm1vc3RhdCdcbiAgICB8ICdNaWNyb3Bob25lcydcbiAgICB8ICdEZXNrcGhvbmUnXG4gICAgfCAnUmVtb3RlQ29udHJvbCdcbiAgICB8ICdVbmtub3duJ1xuICAgIHwgJ0ZpbGUnXG4gICAgfCAnU3RyZWFtJztcbn07XG5cbnR5cGUgRm9ybWF0ID0ge1xuICBiaXRzUGVyU2FtcGxlOiBudW1iZXI7XG4gIGNoYW5uZWxzOiBudW1iZXI7XG4gIHNhbXBsZXNQZXJTZWM6IG51bWJlcjtcbn07XG5cbnR5cGUgTm9ybWFsaXplZE9wdGlvbnMgPSBSZXF1aXJlZDxPbWl0PE9wdGlvbnMsICdkZWJ1Zyc+PiAmIHtcbiAgZGVidWc6IGJvb2xlYW47XG59O1xuXG50eXBlIE9wdGlvbnMgPSB7XG4gIGRlYnVnPzogdHJ1ZTtcbiAgaWQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIFN0cmVhbUNodW5rPFQ+ID0ge1xuICBpc0VuZDogYm9vbGVhbjtcbiAgYnVmZmVyOiBUO1xuICB0aW1lUmVjZWl2ZWQ6IG51bWJlcjtcbn07XG5cbmNvbnN0IFNZTUJPTF9ERVZJQ0VfSU5GT19ERUZFUlJFRCA9IFN5bWJvbCgnZGV2aWNlSW5mb0RlZmVycmVkJyk7XG5jb25zdCBTWU1CT0xfRVZFTlRTID0gU3ltYm9sKCdldmVudHMnKTtcbmNvbnN0IFNZTUJPTF9GT1JNQVRfREVGRVJSRUQgPSBTeW1ib2woJ2Zvcm1hdERlZmVycmVkJyk7XG5jb25zdCBTWU1CT0xfT1BUSU9OUyA9IFN5bWJvbCgnb3B0aW9ucycpO1xuXG4vLyBTcGVlY2ggU0RLIHF1aXJrczogT25seSAyIGxpZmVjeWNsZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHVzZWQuXG4vLyAgICAgICAgICAgICAgICAgICAgVGhleSBhcmU6IGF0dGFjaCgpIGFuZCB0dXJuT2ZmKCkuXG4vLyAgICAgICAgICAgICAgICAgICAgT3RoZXJzIGFyZSBub3QgdXNlZCwgaW5jbHVkaW5nOiBibG9iKCksIGNsb3NlKCksIGRldGFjaCgpLCB0dXJuT24oKS5cbmFic3RyYWN0IGNsYXNzIEN1c3RvbUF1ZGlvSW5wdXRTdHJlYW0gZXh0ZW5kcyBBdWRpb0lucHV0U3RyZWFtIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRPcHRpb25zOiBOb3JtYWxpemVkT3B0aW9ucyA9IHtcbiAgICAgIGRlYnVnOiBvcHRpb25zLmRlYnVnIHx8IGZhbHNlLFxuICAgICAgaWQ6IG9wdGlvbnMuaWQgfHwgdjQoKS5yZXBsYWNlKC8tL2d1LCAnJylcbiAgICB9O1xuXG4gICAgLy8gRmFsc2UgYWxhcm06IGluZGV4ZXIgaXMgYSBjb25zdGFudCBvZiB0eXBlIFN5bWJvbC5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICB0aGlzW1NZTUJPTF9ERVZJQ0VfSU5GT19ERUZFUlJFRF0gPSBjcmVhdGVEZWZlcnJlZDxEZXZpY2VJbmZvPigpO1xuXG4gICAgLy8gRmFsc2UgYWxhcm06IGluZGV4ZXIgaXMgYSBjb25zdGFudCBvZiB0eXBlIFN5bWJvbC5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICB0aGlzW1NZTUJPTF9FVkVOVFNdID0gbmV3IEV2ZW50U291cmNlPEF1ZGlvU291cmNlRXZlbnQ+KCk7XG5cbiAgICAvLyBGYWxzZSBhbGFybTogaW5kZXhlciBpcyBhIGNvbnN0YW50IG9mIHR5cGUgU3ltYm9sLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgIHRoaXNbU1lNQk9MX0ZPUk1BVF9ERUZFUlJFRF0gPSBjcmVhdGVEZWZlcnJlZDxBdWRpb1N0cmVhbUZvcm1hdEltcGw+KCk7XG5cbiAgICAvLyBGYWxzZSBhbGFybTogaW5kZXhlciBpcyBhIGNvbnN0YW50IG9mIHR5cGUgU3ltYm9sLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgIHRoaXNbU1lNQk9MX09QVElPTlNdID0gbm9ybWFsaXplZE9wdGlvbnM7XG4gIH1cblxuICBbU1lNQk9MX0RFVklDRV9JTkZPX0RFRkVSUkVEXTogRGVmZXJyZWRQcm9taXNlPERldmljZUluZm8+O1xuICBbU1lNQk9MX0VWRU5UU106IEV2ZW50U291cmNlPEF1ZGlvU291cmNlRXZlbnQ+O1xuICBbU1lNQk9MX0ZPUk1BVF9ERUZFUlJFRF06IERlZmVycmVkUHJvbWlzZTxBdWRpb1N0cmVhbUZvcm1hdEltcGw+O1xuICBbU1lNQk9MX09QVElPTlNdOiBOb3JtYWxpemVkT3B0aW9ucztcblxuICAvKiogR2V0cyB0aGUgZXZlbnQgc291cmNlIGZvciBsaXN0ZW5pbmcgdG8gZXZlbnRzLiAqL1xuICAvLyBFU0xpbnQ6IFRoaXMgY29kZSB3aWxsIG9ubHkgd29ya3MgaW4gYnJvd3NlcnMgb3RoZXIgdGhhbiBJRTExLiBPbmx5IHdvcmtzIGluIEVTNSBpcyBva2F5LlxuICAvLyBAdHMtaWdub3JlIEFjY2Vzc29ycyBhcmUgb25seSBhdmFpbGFibGUgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCA1IGFuZCBoaWdoZXIudHMoMTA1NilcbiAgZ2V0IGV2ZW50cygpOiBFdmVudFNvdXJjZTxBdWRpb1NvdXJjZUV2ZW50PiB7XG4gICAgLy8gRmFsc2UgYWxhcm06IGluZGV4ZXIgaXMgYSBjb25zdGFudCBvZiB0eXBlIFN5bWJvbC5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICByZXR1cm4gdGhpc1tTWU1CT0xfRVZFTlRTXTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBmb3JtYXQgb2YgdGhlIGF1ZGlvIHN0cmVhbS4gKi9cbiAgLy8gU3BlZWNoIFNESyBxdWlya3M6IGBBdWRpb1N0cmVhbUZvcm1hdEltcGxgIGlzIGludGVybmFsIGltcGxlbWVudGF0aW9uIHdoaWxlIGBBdWRpb1N0cmVhbUZvcm1hdGAgaXMgcHVibGljLlxuICAvLyAgICAgICAgICAgICAgICAgICAgSXQgaXMgd2VpcmQgdG8gZXhwb3NlIGBBdWRpb1N0cmVhbUZvcm1hdEltcGxgIGluc3RlYWQgb2YgYEF1ZGlvU3RyZWFtRm9ybWF0YC5cbiAgLy8gU3BlZWNoIFNESyBxdWlya3M6IEl0IGlzIHdlaXJkIHRvIHJldHVybiBhIGBQcm9taXNlYCBpbiBhIHByb3BlcnR5LlxuICAvLyBTcGVlY2ggU0RLIHF1aXJrczogSW4gbm9ybWFsIHNwZWVjaCByZWNvZ25pdGlvbiwgZ2V0dGVyIG9mIFwiZm9ybWF0XCIgaXMgY2FsbGVkIG9ubHkgYWZ0ZXIgXCJhdHRhY2hcIi5cbiAgLy8gICAgICAgICAgICAgICAgICAgIEJ1dCBpbiBEaXJlY3QgTGluZSBTcGVlY2gsIGl0IGlzIGNhbGxlZCBiZWZvcmUgXCJhdHRhY2hcIi5cbiAgLy8gRVNMaW50OiBUaGlzIGNvZGUgd2lsbCBvbmx5IHdvcmtzIGluIGJyb3dzZXJzIG90aGVyIHRoYW4gSUUxMS4gT25seSB3b3JrcyBpbiBFUzUgaXMgb2theS5cbiAgLy8gQHRzLWlnbm9yZSBBY2Nlc3NvcnMgYXJlIG9ubHkgYXZhaWxhYmxlIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgNSBhbmQgaGlnaGVyLnRzKDEwNTYpXG4gIGdldCBmb3JtYXQoKTogUHJvbWlzZTxBdWRpb1N0cmVhbUZvcm1hdEltcGw+IHtcbiAgICB0aGlzLmRlYnVnKCdHZXR0aW5nIFwiZm9ybWF0XCIuJyk7XG5cbiAgICAvLyBGYWxzZSBhbGFybTogaW5kZXhlciBpcyBhIGNvbnN0YW50IG9mIHR5cGUgU3ltYm9sLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgIHJldHVybiB0aGlzW1NZTUJPTF9GT1JNQVRfREVGRVJSRURdLnByb21pc2U7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgSUQgb2YgdGhpcyBhdWRpbyBzdHJlYW0uICovXG4gIGlkKCk6IHN0cmluZyB7XG4gICAgLy8gRmFsc2UgYWxhcm06IGluZGV4ZXIgaXMgYSBjb25zdGFudCBvZiB0eXBlIFN5bWJvbC5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICByZXR1cm4gdGhpc1tTWU1CT0xfT1BUSU9OU10uaWQ7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gZXZlbnQuICovXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBJbiBKYXZhU2NyaXB0LCBvblh4eCBtZWFucyBcImxpc3RlbiB0byBldmVudCBYWFhcIi5cbiAgLy8gICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIGluIFNwZWVjaCBTREssIGl0IG1lYW5zIFwiZW1pdCBldmVudCBYWFhcIi5cbiAgcHJvdGVjdGVkIG9uRXZlbnQoZXZlbnQ6IEF1ZGlvU291cmNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBGYWxzZSBhbGFybTogaW5kZXhlciBpcyBhIGNvbnN0YW50IG9mIHR5cGUgU3ltYm9sLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgIHRoaXNbU1lNQk9MX0VWRU5UU10ub25FdmVudChldmVudCk7XG4gICAgRXZlbnRzLmluc3RhbmNlLm9uRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGBBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50YC4gKi9cbiAgcHJvdGVjdGVkIGVtaXRJbml0aWFsaXppbmcoKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZygnRW1pdHRpbmcgXCJBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50XCIuJyk7XG4gICAgdGhpcy5vbkV2ZW50KG5ldyBBdWRpb1NvdXJjZUluaXRpYWxpemluZ0V2ZW50KHRoaXMuaWQoKSkpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGBBdWRpb1NvdXJjZVJlYWR5RXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdFJlYWR5KCk6IHZvaWQge1xuICAgIHRoaXMuZGVidWcoJ0VtaXR0aW5nIFwiQXVkaW9Tb3VyY2VSZWFkeUV2ZW50XCIuJyk7XG4gICAgdGhpcy5vbkV2ZW50KG5ldyBBdWRpb1NvdXJjZVJlYWR5RXZlbnQodGhpcy5pZCgpKSk7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gYEF1ZGlvU291cmNlRXJyb3JFdmVudGAuICovXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBTaW5jZSBcInR1cm5PblwiIGlzIG5ldmVyIGNhbGxlZCBhbmQgXCJ0dXJuT2ZmXCIgZG9lcyBub3Qgd29yayBpbiBEaXJlY3QgTGluZSBTcGVlY2gsIHRoZSBcInNvdXJjZSBlcnJvclwiIGV2ZW50IGlzIG5vdCBlbWl0dGVkIGF0IGFsbC5cbiAgLy8gICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHdlIG9ubHkgZW1pdCBcIm5vZGUgZXJyb3JcIiBldmVudC5cbiAgcHJvdGVjdGVkIGVtaXRFcnJvcihlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmRlYnVnKCdFbWl0dGluZyBcIkF1ZGlvU291cmNlRXJyb3JFdmVudFwiLicsIHsgZXJyb3IgfSk7XG5cbiAgICAvLyBTcGVlY2ggU0RLIHF1aXJrczogXCJlcnJvclwiIGlzIGEgc3RyaW5nLCBpbnN0ZWFkIG9mIG9iamVjdCBvZiB0eXBlIFwiRXJyb3JcIi5cbiAgICB0aGlzLm9uRXZlbnQobmV3IEF1ZGlvU291cmNlRXJyb3JFdmVudCh0aGlzLmlkKCksIGVycm9yLm1lc3NhZ2UpKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBgQXVkaW9TdHJlYW1Ob2RlQXR0YWNoaW5nRXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdE5vZGVBdHRhY2hpbmcoYXVkaW9Ob2RlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGVidWcoYEVtaXR0aW5nIFwiQXVkaW9TdHJlYW1Ob2RlQXR0YWNoaW5nRXZlbnRcIiBmb3Igbm9kZSBcIiR7YXVkaW9Ob2RlSWR9XCIuYCk7XG4gICAgdGhpcy5vbkV2ZW50KG5ldyBBdWRpb1N0cmVhbU5vZGVBdHRhY2hpbmdFdmVudCh0aGlzLmlkKCksIGF1ZGlvTm9kZUlkKSk7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gYEF1ZGlvU3RyZWFtTm9kZUF0dGFjaGVkRXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdE5vZGVBdHRhY2hlZChhdWRpb05vZGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZyhgRW1pdHRpbmcgXCJBdWRpb1N0cmVhbU5vZGVBdHRhY2hlZEV2ZW50XCIgZm9yIG5vZGUgXCIke2F1ZGlvTm9kZUlkfVwiLmApO1xuICAgIHRoaXMub25FdmVudChuZXcgQXVkaW9TdHJlYW1Ob2RlQXR0YWNoZWRFdmVudCh0aGlzLmlkKCksIGF1ZGlvTm9kZUlkKSk7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gYEF1ZGlvU3RyZWFtTm9kZUVycm9yRXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdE5vZGVFcnJvcihhdWRpb05vZGVJZDogc3RyaW5nLCBlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmRlYnVnKGBFbWl0dGluZyBcIkF1ZGlvU3RyZWFtTm9kZUVycm9yRXZlbnRcIiBmb3Igbm9kZSBcIiR7YXVkaW9Ob2RlSWR9XCIuYCwgeyBlcnJvciB9KTtcblxuICAgIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBcImVycm9yXCIgaXMgYSBzdHJpbmcsIGluc3RlYWQgb2Ygb2JqZWN0IG9mIHR5cGUgXCJFcnJvclwiLlxuICAgIHRoaXMub25FdmVudChuZXcgQXVkaW9TdHJlYW1Ob2RlRXJyb3JFdmVudCh0aGlzLmlkKCksIGF1ZGlvTm9kZUlkLCBlcnJvci5tZXNzYWdlKSk7XG4gIH1cblxuICAvKiogRW1pdHMgYW4gYEF1ZGlvU3RyZWFtTm9kZURldGFjaGVkRXZlbnRgLiAqL1xuICBwcm90ZWN0ZWQgZW1pdE5vZGVEZXRhY2hlZChhdWRpb05vZGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZygnRW1pdHRpbmcgXCJBdWRpb1N0cmVhbU5vZGVEZXRhY2hlZEV2ZW50XCIuJyk7XG4gICAgdGhpcy5vbkV2ZW50KG5ldyBBdWRpb1N0cmVhbU5vZGVEZXRhY2hlZEV2ZW50KHRoaXMuaWQoKSwgYXVkaW9Ob2RlSWQpKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBgQXVkaW9Tb3VyY2VPZmZFdmVudGAuICovXG4gIHByb3RlY3RlZCBlbWl0T2ZmKCk6IHZvaWQge1xuICAgIHRoaXMuZGVidWcoJ0VtaXR0aW5nIFwiQXVkaW9Tb3VyY2VPZmZFdmVudFwiLicpO1xuICAgIHRoaXMub25FdmVudChuZXcgQXVkaW9Tb3VyY2VPZmZFdmVudCh0aGlzLmlkKCkpKTtcbiAgfVxuXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBBbHRob3VnaCBcImNsb3NlXCIgaXMgbWFya2VkIGFzIGFic3RyYWN0LCBpdCBpcyBuZXZlciBjYWxsZWQgaW4gb3VyIG9ic2VydmF0aW9ucy5cbiAgLy8gRVNMaW50OiBTcGVlY2ggU0RLIHJlcXVpcmVzIHRoaXMgZnVuY3Rpb24sIGJ1dCB3ZSBhcmUgbm90IGltcGxlbWVudGluZyBpdC5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZygnQ2FsbGJhY2sgZm9yIFwiY2xvc2VcIi4nKTtcblxuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvLyBTcGVlY2ggU0RLIHF1aXJrczogQWx0aG91Z2ggXCJ0dXJuT25cIiBpcyBpbXBsZW1lbnRlZCBpbiBTcGVlY2ggU0RLIFB1c2gvUHVsbEF1ZGlvSW5wdXRTdHJlYW0sIGl0IGlzIG5ldmVyIGNhbGxlZCBpbiBvdXIgb2JzZXJ2YXRpb25zLlxuICB0dXJuT24oKTogdm9pZCB7XG4gICAgdGhpcy5kZWJ1ZygnQ2FsbGJhY2sgZm9yIFwidHVybk9uXCIuJyk7XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLy8gU3BlZWNoIFNESyBxdWlya3M6IEFsdGhvdWdoIFwiZGV0YWNoXCIgaXMgaW1wbGVtZW50ZWQgaW4gU3BlZWNoIFNESyBQdXNoL1B1bGxBdWRpb0lucHV0U3RyZWFtLCBpdCBpcyBuZXZlciBjYWxsZWQgaW4gb3VyIG9ic2VydmF0aW9ucy5cbiAgZGV0YWNoKCk6IHZvaWQge1xuICAgIHRoaXMuZGVidWcoJ0NhbGxiYWNrIGZvciBcImRldGFjaFwiLicpO1xuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBMb2cgdGhlIG1lc3NhZ2UgdG8gY29uc29sZSBpZiBgZGVidWdgIGlzIHNldCB0byBgdHJ1ZWAuICovXG4gIHByaXZhdGUgZGVidWcobWVzc2FnZSwgLi4uYXJncykge1xuICAgIC8vIEVTTGludDogRm9yIGRlYnVnZ2luZywgd2lsbCBvbmx5IGxvZyB3aGVuIFwiZGVidWdcIiBpcyBzZXQgdG8gXCJ0cnVlXCIuXG4gICAgLy8gRmFsc2UgYWxhcm06IGluZGV4ZXIgaXMgYSBjb25zdGFudCBvZiB0eXBlIFN5bWJvbC5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSwgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICB0aGlzW1NZTUJPTF9PUFRJT05TXS5kZWJ1ZyAmJiBjb25zb2xlLmluZm8oYEN1c3RvbUF1ZGlvSW5wdXRTdHJlYW06ICR7bWVzc2FnZX1gLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb24uIFdoZW4gY2FsbGVkLCBpdCBzaG91bGQgc3RhcnQgcmVjb3JkaW5nIGFuZCByZXR1cm4gYW4gYElBdWRpb1N0cmVhbU5vZGVgLiAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGVyZm9ybUF0dGFjaChhdWRpb05vZGVJZDogc3RyaW5nKTogUHJvbWlzZTx7XG4gICAgYXVkaW9TdHJlYW1Ob2RlOiBBdWRpb1N0cmVhbU5vZGU7XG4gICAgZGV2aWNlSW5mbzogRGV2aWNlSW5mbztcbiAgICBmb3JtYXQ6IEZvcm1hdDtcbiAgfT47XG5cbiAgLyoqIEF0dGFjaGVzIHRoZSBkZXZpY2UgYnkgcmV0dXJuaW5nIGFuIGF1ZGlvIG5vZGUuICovXG4gIGF0dGFjaChhdWRpb05vZGVJZDogc3RyaW5nKTogUHJvbWlzZTxBdWRpb1N0cmVhbU5vZGU+IHtcbiAgICB0aGlzLmRlYnVnKGBDYWxsYmFjayBmb3IgXCJhdHRhY2hcIiB3aXRoIFwiJHthdWRpb05vZGVJZH1cIi5gKTtcblxuICAgIHRoaXMuZW1pdE5vZGVBdHRhY2hpbmcoYXVkaW9Ob2RlSWQpO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW48QXVkaW9TdHJlYW1Ob2RlPihhc3luYyAoKSA9PiB7XG4gICAgICB0aGlzLmVtaXRJbml0aWFsaXppbmcoKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBhdWRpb1N0cmVhbU5vZGUsIGRldmljZUluZm8sIGZvcm1hdCB9ID0gYXdhaXQgdGhpcy5wZXJmb3JtQXR0YWNoKGF1ZGlvTm9kZUlkKTtcblxuICAgICAgICAvLyBBbHRob3VnaCBvbmx5IGdldHRlciBvZiBcImZvcm1hdFwiIGlzIGNhbGxlZCBiZWZvcmUgXCJhdHRhY2hcIiAoaW4gRGlyZWN0IExpbmUgU3BlZWNoKSxcbiAgICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIGJvdGggXCJkZXZpY2VJbmZvXCIgYW5kIFwiZm9ybWF0XCIgaW4gc2ltaWxhciB3YXkgZm9yIHVuaWZvcm1pdHkuXG5cbiAgICAgICAgLy8gRmFsc2UgYWxhcm06IGluZGV4ZXIgaXMgYSBjb25zdGFudCBvZiB0eXBlIFN5bWJvbC5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgIHRoaXNbU1lNQk9MX0RFVklDRV9JTkZPX0RFRkVSUkVEXS5yZXNvbHZlKGRldmljZUluZm8pO1xuXG4gICAgICAgIC8vIEZhbHNlIGFsYXJtOiBpbmRleGVyIGlzIGEgY29uc3RhbnQgb2YgdHlwZSBTeW1ib2wuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICB0aGlzW1NZTUJPTF9GT1JNQVRfREVGRVJSRURdLnJlc29sdmUoXG4gICAgICAgICAgbmV3IEF1ZGlvU3RyZWFtRm9ybWF0SW1wbChmb3JtYXQuc2FtcGxlc1BlclNlYywgZm9ybWF0LmJpdHNQZXJTYW1wbGUsIGZvcm1hdC5jaGFubmVscylcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmVtaXRSZWFkeSgpO1xuICAgICAgICB0aGlzLmVtaXROb2RlQXR0YWNoZWQoYXVkaW9Ob2RlSWQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGV0YWNoOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGBEZXRhY2hpbmcgYXVkaW8gbm9kZSBcIiR7YXVkaW9Ob2RlSWR9XCIuYCk7XG5cbiAgICAgICAgICAgIGF3YWl0IGF1ZGlvU3RyZWFtTm9kZS5kZXRhY2goKTtcblxuICAgICAgICAgICAgLy8gU3BlZWNoIFNESyBxdWlya3M6IFNpbmNlIFwidHVybk9mZlwiIGlzIG5vdCBjYWxsZWQgaW4gRGlyZWN0IExpbmUgU3BlZWNoLCB3ZSB3aWxsIGVtaXQgZXZlbnQgXCJzb3VyY2Ugb2ZmXCIgaGVyZSBpbnN0ZWFkLlxuICAgICAgICAgICAgdGhpcy5lbWl0T2ZmKCk7XG4gICAgICAgICAgICB0aGlzLmVtaXROb2RlRGV0YWNoZWQoYXVkaW9Ob2RlSWQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaWQ6ICgpID0+IGF1ZGlvU3RyZWFtTm9kZS5pZCgpLFxuICAgICAgICAgIHJlYWQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoJ1JlYWRpbmcnKTtcblxuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU3RyZWFtTm9kZS5yZWFkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5lbWl0Tm9kZUVycm9yKGF1ZGlvTm9kZUlkLCBlcnJvcik7XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50cyB0aGlzIGZ1bmN0aW9uLiBXaGVuIGNhbGxlZCwgaXQgc2hvdWxkIHN0b3AgcmVjb3JkaW5nLiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGBJQXVkaW9TdHJlYW1Ob2RlLmRldGFjaGAgZnVuY3Rpb24uXG4gICAqXG4gICAqIE5vdGU6IHdoZW4gdXNpbmcgd2l0aCBEaXJlY3QgTGluZSBTcGVlY2gsIHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkLlxuICAgKi9cblxuICAvLyBFU0xpbnQ6IFdlIGFyZSBub3QgaW1wbGVtZW50aW5nIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSBpdCBpcyBub3QgY2FsbGVkIGJ5IERpcmVjdCBMaW5lIFNwZWVjaC5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgcHJvdGVjdGVkIHBlcmZvcm1UdXJuT2ZmKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIEVTTGludDogXCJyZXR1cm5cIiBpcyByZXF1aXJlZCBieSBUeXBlU2NyaXB0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqIFR1cm4gb2ZmIHRoZSBhdWRpbyBkZXZpY2UuIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSBkZXRhY2hpbmcgZnJvbSB0aGUgZ3JhcGguICovXG4gIC8vIFNwZWVjaCBTREsgcXVpcmtzOiBJdCBpcyBjb25mdXNlZCB0byBoYXZlIGJvdGggXCJ0dXJuT2ZmXCIgYW5kIFwiZGV0YWNoXCIuIFwidHVybk9mZlwiIGlzIGNhbGxlZCBiZWZvcmUgXCJkZXRhY2hcIi5cbiAgLy8gICAgICAgICAgICAgICAgICAgIFdoeSBkb24ndCB3ZSBwdXQgYWxsIGxvZ2ljcyBhdCBcImRldGFjaFwiP1xuICAvLyBTcGVlY2ggU0RLIHF1aXJrczogRGlyZWN0IExpbmUgU3BlZWNoIG5ldmVyIGNhbGwgXCJ0dXJuT2ZmXCIuIFwiU291cmNlIG9mZlwiIGV2ZW50IG5lZWQgdG8gYmUgZW1pdHRlZCBkdXJpbmcgXCJkZXRhY2hcIiBpbnN0ZWFkLlxuICAvLyAgICAgICAgICAgICAgICAgICAgQWxzbywgY3VzdG9tIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBkb25lIGF0IFwiZGV0YWNoXCIgaW5zdGVhZCwgc3VjaCBhcyBlbmRpbmcgYW5kIGNsb3Npbmcgb3V0cHV0IHN0cmVhbXMuXG4gIGFzeW5jIHR1cm5PZmYoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5kZWJ1ZyhgQ2FsbGJhY2sgZm9yIFwidHVybk9mZlwiLmApO1xuXG4gICAgYXdhaXQgdGhpcy5wZXJmb3JtVHVybk9mZigpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRldmljZSBpbmZvcm1hdGlvbi4gKi9cbiAgLy8gRVNMaW50OiBUaGlzIGNvZGUgd2lsbCBvbmx5IHdvcmtzIGluIGJyb3dzZXJzIG90aGVyIHRoYW4gSUUxMS4gT25seSB3b3JrcyBpbiBFUzUgaXMgb2theS5cbiAgLy8gQHRzLWlnbm9yZSBBY2Nlc3NvcnMgYXJlIG9ubHkgYXZhaWxhYmxlIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgNSBhbmQgaGlnaGVyLnRzKDEwNTYpXG4gIGdldCBkZXZpY2VJbmZvKCk6IFByb21pc2U8SVNwZWVjaENvbmZpZ0F1ZGlvRGV2aWNlPiB7XG4gICAgdGhpcy5kZWJ1ZyhgR2V0dGluZyBcImRldmljZUluZm9cIi5gKTtcblxuICAgIC8vIEZhbHNlIGFsYXJtOiBpbmRleGVyIGlzIGEgY29uc3RhbnQgb2YgdHlwZSBTeW1ib2wuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFt0aGlzW1NZTUJPTF9ERVZJQ0VfSU5GT19ERUZFUlJFRF0ucHJvbWlzZSwgdGhpc1tTWU1CT0xfRk9STUFUX0RFRkVSUkVEXS5wcm9taXNlXSkudGhlbihcbiAgICAgIChbeyBjb25uZWN0aXZpdHksIG1hbnVmYWN0dXJlciwgbW9kZWwsIHR5cGUgfSwgeyBiaXRzUGVyU2FtcGxlLCBjaGFubmVscywgc2FtcGxlc1BlclNlYyB9XSkgPT4gKHtcbiAgICAgICAgYml0c3BlcnNhbXBsZTogYml0c1BlclNhbXBsZSxcbiAgICAgICAgY2hhbm5lbGNvdW50OiBjaGFubmVscyxcbiAgICAgICAgY29ubmVjdGl2aXR5OlxuICAgICAgICAgIHR5cGVvZiBjb25uZWN0aXZpdHkgPT09ICdzdHJpbmcnICYmICFpc0ZvcmJpZGRlblByb3BlcnR5TmFtZShjb25uZWN0aXZpdHkpXG4gICAgICAgICAgICA/IC8vIE1pdGlnYXRlZCB0aHJvdWdoIGRlbnlsaXN0aW5nLlxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgQ29ubmVjdGl2aXR5W2Nvbm5lY3Rpdml0eV1cbiAgICAgICAgICAgIDogY29ubmVjdGl2aXR5IHx8IENvbm5lY3Rpdml0eS5Vbmtub3duLFxuICAgICAgICBtYW51ZmFjdHVyZXI6IG1hbnVmYWN0dXJlciB8fCAnJyxcbiAgICAgICAgbW9kZWw6IG1vZGVsIHx8ICcnLFxuICAgICAgICBzYW1wbGVyYXRlOiBzYW1wbGVzUGVyU2VjLFxuICAgICAgICAvLyBNaXRpZ2F0ZWQgdGhyb3VnaCBkZW55bGlzdGluZy5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgIHR5cGU6IHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyAmJiAhaXNGb3JiaWRkZW5Qcm9wZXJ0eU5hbWUodHlwZSkgPyBUeXBlW3R5cGVdIDogdHlwZSB8fCBUeXBlLlVua25vd25cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21BdWRpb0lucHV0U3RyZWFtO1xuXG5leHBvcnQgdHlwZSB7IEF1ZGlvU3RyZWFtTm9kZSwgRGV2aWNlSW5mbywgRm9ybWF0LCBPcHRpb25zIH07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytesPerSample.d.ts","sourceRoot":"","sources":["../../src/speech/bytesPerSample.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,QAAQ,EAAE,kBAAkB,UAGlE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = bytesPerSample;
|
|
7
|
+
|
|
8
|
+
function bytesPerSample(settings) {
|
|
9
|
+
// eslint-disable-next-line no-magic-numbers
|
|
10
|
+
return (settings.sampleSize >> 3) * settings.channelCount * settings.sampleRate;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcGVlY2gvYnl0ZXNQZXJTYW1wbGUudHMiXSwibmFtZXMiOlsiYnl0ZXNQZXJTYW1wbGUiLCJzZXR0aW5ncyIsInNhbXBsZVNpemUiLCJjaGFubmVsQ291bnQiLCJzYW1wbGVSYXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWUsU0FBU0EsY0FBVCxDQUF3QkMsUUFBeEIsRUFBc0Q7QUFDbkU7QUFDQSxTQUFPLENBQUVBLFFBQVEsQ0FBQ0MsVUFBVixJQUFtQyxDQUFwQyxJQUEwQ0QsUUFBUSxDQUFDRSxZQUFuRCxHQUE4RUYsUUFBUSxDQUFDRyxVQUE5RjtBQUNEIiwic291cmNlUm9vdCI6ImJ1bmRsZTovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBieXRlc1BlclNhbXBsZShzZXR0aW5nczogTWVkaWFUcmFja1NldHRpbmdzKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIHJldHVybiAoKHNldHRpbmdzLnNhbXBsZVNpemUgYXMgbnVtYmVyKSA+PiAzKSAqIChzZXR0aW5ncy5jaGFubmVsQ291bnQgYXMgbnVtYmVyKSAqIChzZXR0aW5ncy5zYW1wbGVSYXRlIGFzIG51bWJlcik7XG59XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AudioConfig } from 'microsoft-cognitiveservices-speech-sdk';
|
|
2
|
+
import { AudioStreamNode, DeviceInfo, Format } from './CustomAudioInputStream';
|
|
3
|
+
declare type AttachFunction = (audioNodeId: string) => Promise<{
|
|
4
|
+
audioStreamNode: AudioStreamNode;
|
|
5
|
+
deviceInfo: DeviceInfo;
|
|
6
|
+
format: Format;
|
|
7
|
+
}>;
|
|
8
|
+
declare type TurnOffFunction = () => Promise<void>;
|
|
9
|
+
declare type CreateAudioConfigOptions = {
|
|
10
|
+
/** Callback function for attaching the device by returning an audio node. */
|
|
11
|
+
attach: AttachFunction;
|
|
12
|
+
/** `true` to enable diagnostic information, otherwise, `false`. */
|
|
13
|
+
debug?: true;
|
|
14
|
+
/**
|
|
15
|
+
* Callback function for turning off the device before detaching its node from an audio graph.
|
|
16
|
+
*
|
|
17
|
+
* Note: this is not called for Direct Line Speech.
|
|
18
|
+
*/
|
|
19
|
+
turnOff?: TurnOffFunction;
|
|
20
|
+
};
|
|
21
|
+
export default function createAudioConfig(options: CreateAudioConfigOptions): AudioConfig;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=createAudioConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAudioConfig.d.ts","sourceRoot":"","sources":["../../src/speech/createAudioConfig.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,OAA+B,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvG,aAAK,cAAc,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,aAAK,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAK3C,aAAK,wBAAwB,GAAG;IAC9B,6EAA6E;IAC7E,MAAM,EAAE,cAAc,CAAC;IAEvB,mEAAmE;IACnE,KAAK,CAAC,EAAE,IAAI,CAAC;IAEb;;;;OAIG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B,CAAC;AA2CF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,eAE1E"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = createAudioConfig;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var _microsoftCognitiveservicesSpeechSdk = require("microsoft-cognitiveservices-speech-sdk");
|
|
25
|
+
|
|
26
|
+
var _CustomAudioInputStream = _interopRequireDefault(require("./CustomAudioInputStream"));
|
|
27
|
+
|
|
28
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
29
|
+
|
|
30
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
31
|
+
|
|
32
|
+
var SYMBOL_ATTACH = Symbol('attach');
|
|
33
|
+
var SYMBOL_TURN_OFF = Symbol('turnOff');
|
|
34
|
+
|
|
35
|
+
var CreateAudioConfigAudioInputStream = /*#__PURE__*/function (_CustomAudioInputStre) {
|
|
36
|
+
(0, _inherits2.default)(CreateAudioConfigAudioInputStream, _CustomAudioInputStre);
|
|
37
|
+
|
|
38
|
+
var _super = _createSuper(CreateAudioConfigAudioInputStream);
|
|
39
|
+
|
|
40
|
+
function CreateAudioConfigAudioInputStream(_ref) {
|
|
41
|
+
var _this;
|
|
42
|
+
|
|
43
|
+
var attach = _ref.attach,
|
|
44
|
+
debug = _ref.debug,
|
|
45
|
+
turnOff = _ref.turnOff;
|
|
46
|
+
(0, _classCallCheck2.default)(this, CreateAudioConfigAudioInputStream);
|
|
47
|
+
|
|
48
|
+
if (!attach || typeof attach !== 'function') {
|
|
49
|
+
throw new Error('"attach" must be a function.');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (turnOff && typeof turnOff !== 'function') {
|
|
53
|
+
throw new Error('"turnOff", if defined, must be a function.');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
_this = _super.call(this, {
|
|
57
|
+
debug: debug
|
|
58
|
+
}); // False alarm: indexer is a constant of type Symbol.
|
|
59
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
60
|
+
|
|
61
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_ATTACH, void 0);
|
|
62
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), SYMBOL_TURN_OFF, void 0);
|
|
63
|
+
_this[SYMBOL_ATTACH] = attach; // False alarm: indexer is a constant of type Symbol.
|
|
64
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
65
|
+
|
|
66
|
+
_this[SYMBOL_TURN_OFF] = turnOff;
|
|
67
|
+
return _this;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
(0, _createClass2.default)(CreateAudioConfigAudioInputStream, [{
|
|
71
|
+
key: "performAttach",
|
|
72
|
+
value: function performAttach(audioNodeId) {
|
|
73
|
+
// False alarm: indexer is a constant of type Symbol.
|
|
74
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
75
|
+
return this[SYMBOL_ATTACH](audioNodeId);
|
|
76
|
+
}
|
|
77
|
+
}, {
|
|
78
|
+
key: "performTurnOff",
|
|
79
|
+
value: function performTurnOff() {
|
|
80
|
+
var turnOff = this[SYMBOL_TURN_OFF];
|
|
81
|
+
return turnOff && turnOff();
|
|
82
|
+
}
|
|
83
|
+
}]);
|
|
84
|
+
return CreateAudioConfigAudioInputStream;
|
|
85
|
+
}(_CustomAudioInputStream.default);
|
|
86
|
+
|
|
87
|
+
function createAudioConfig(options) {
|
|
88
|
+
return _microsoftCognitiveservicesSpeechSdk.AudioConfig.fromStreamInput(new CreateAudioConfigAudioInputStream(options));
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcGVlY2gvY3JlYXRlQXVkaW9Db25maWcudHMiXSwibmFtZXMiOlsiU1lNQk9MX0FUVEFDSCIsIlN5bWJvbCIsIlNZTUJPTF9UVVJOX09GRiIsIkNyZWF0ZUF1ZGlvQ29uZmlnQXVkaW9JbnB1dFN0cmVhbSIsImF0dGFjaCIsImRlYnVnIiwidHVybk9mZiIsIkVycm9yIiwiYXVkaW9Ob2RlSWQiLCJDdXN0b21BdWRpb0lucHV0U3RyZWFtIiwiY3JlYXRlQXVkaW9Db25maWciLCJvcHRpb25zIiwiQXVkaW9Db25maWciLCJmcm9tU3RyZWFtSW5wdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBRUE7Ozs7OztBQVVBLElBQU1BLGFBQWEsR0FBR0MsTUFBTSxDQUFDLFFBQUQsQ0FBNUI7QUFDQSxJQUFNQyxlQUFlLEdBQUdELE1BQU0sQ0FBQyxTQUFELENBQTlCOztJQWlCTUUsaUM7Ozs7O0FBQ0osbURBQWtFO0FBQUE7O0FBQUEsUUFBcERDLE1BQW9ELFFBQXBEQSxNQUFvRDtBQUFBLFFBQTVDQyxLQUE0QyxRQUE1Q0EsS0FBNEM7QUFBQSxRQUFyQ0MsT0FBcUMsUUFBckNBLE9BQXFDO0FBQUE7O0FBQ2hFLFFBQUksQ0FBQ0YsTUFBRCxJQUFXLE9BQU9BLE1BQVAsS0FBa0IsVUFBakMsRUFBNkM7QUFDM0MsWUFBTSxJQUFJRyxLQUFKLENBQVUsOEJBQVYsQ0FBTjtBQUNEOztBQUVELFFBQUlELE9BQU8sSUFBSSxPQUFPQSxPQUFQLEtBQW1CLFVBQWxDLEVBQThDO0FBQzVDLFlBQU0sSUFBSUMsS0FBSixDQUFVLDRDQUFWLENBQU47QUFDRDs7QUFFRCw4QkFBTTtBQUFFRixNQUFBQSxLQUFLLEVBQUxBO0FBQUYsS0FBTixFQVRnRSxDQVdoRTtBQUNBOztBQVpnRSwrRUFvQmpFTCxhQXBCaUU7QUFBQSwrRUFxQmpFRSxlQXJCaUU7QUFhaEUsVUFBS0YsYUFBTCxJQUFzQkksTUFBdEIsQ0FiZ0UsQ0FlaEU7QUFDQTs7QUFDQSxVQUFLRixlQUFMLElBQXdCSSxPQUF4QjtBQWpCZ0U7QUFrQmpFOzs7O1dBS0QsdUJBQXdCRSxXQUF4QixFQUlHO0FBQ0Q7QUFDQTtBQUNBLGFBQU8sS0FBS1IsYUFBTCxFQUFvQlEsV0FBcEIsQ0FBUDtBQUNEOzs7V0FFRCwwQkFBMEM7QUFDeEMsVUFBMkJGLE9BQTNCLEdBQXVDLElBQXZDLENBQVNKLGVBQVQ7QUFFQSxhQUFPSSxPQUFPLElBQUlBLE9BQU8sRUFBekI7QUFDRDs7O0VBdEM2Q0csK0I7O0FBeUNqQyxTQUFTQyxpQkFBVCxDQUEyQkMsT0FBM0IsRUFBOEQ7QUFDM0UsU0FBT0MsaURBQVlDLGVBQVosQ0FBNEIsSUFBSVYsaUNBQUosQ0FBc0NRLE9BQXRDLENBQTVCLENBQVA7QUFDRCIsInNvdXJjZVJvb3QiOiJidW5kbGU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETzogW1AyXSAjMzk3NiBXZSBzaG91bGQgZXhwb3J0IHRoaXMgdG8gYWxsb3cgd2ViIGRldmVsb3BlcnMgdG8gYnJpbmcgaW4gdGhlaXIgb3duIG1pY3JvcGhvbmUuXG4vLyAgICAgICBGb3IgZXhhbXBsZSwgaXQgc2hvdWxkIGVuYWJsZSBSZWFjdCBOYXRpdmUgZGV2cyB0byBicmluZyBpbiB0aGVpciBtaWNyb3Bob25lIGltcGxlbWVudGF0aW9uIGFuZCB1c2UgQ29nbml0aXZlIFNlcnZpY2VzIFNwZWVjaCBTZXJ2aWNlcy5cblxuaW1wb3J0IHsgQXVkaW9Db25maWcgfSBmcm9tICdtaWNyb3NvZnQtY29nbml0aXZlc2VydmljZXMtc3BlZWNoLXNkayc7XG5cbmltcG9ydCBDdXN0b21BdWRpb0lucHV0U3RyZWFtLCB7IEF1ZGlvU3RyZWFtTm9kZSwgRGV2aWNlSW5mbywgRm9ybWF0IH0gZnJvbSAnLi9DdXN0b21BdWRpb0lucHV0U3RyZWFtJztcblxudHlwZSBBdHRhY2hGdW5jdGlvbiA9IChhdWRpb05vZGVJZDogc3RyaW5nKSA9PiBQcm9taXNlPHtcbiAgYXVkaW9TdHJlYW1Ob2RlOiBBdWRpb1N0cmVhbU5vZGU7XG4gIGRldmljZUluZm86IERldmljZUluZm87XG4gIGZvcm1hdDogRm9ybWF0O1xufT47XG5cbnR5cGUgVHVybk9mZkZ1bmN0aW9uID0gKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuY29uc3QgU1lNQk9MX0FUVEFDSCA9IFN5bWJvbCgnYXR0YWNoJyk7XG5jb25zdCBTWU1CT0xfVFVSTl9PRkYgPSBTeW1ib2woJ3R1cm5PZmYnKTtcblxudHlwZSBDcmVhdGVBdWRpb0NvbmZpZ09wdGlvbnMgPSB7XG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgYXR0YWNoaW5nIHRoZSBkZXZpY2UgYnkgcmV0dXJuaW5nIGFuIGF1ZGlvIG5vZGUuICovXG4gIGF0dGFjaDogQXR0YWNoRnVuY3Rpb247XG5cbiAgLyoqIGB0cnVlYCB0byBlbmFibGUgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiwgb3RoZXJ3aXNlLCBgZmFsc2VgLiAqL1xuICBkZWJ1Zz86IHRydWU7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0dXJuaW5nIG9mZiB0aGUgZGV2aWNlIGJlZm9yZSBkZXRhY2hpbmcgaXRzIG5vZGUgZnJvbSBhbiBhdWRpbyBncmFwaC5cbiAgICpcbiAgICogTm90ZTogdGhpcyBpcyBub3QgY2FsbGVkIGZvciBEaXJlY3QgTGluZSBTcGVlY2guXG4gICAqL1xuICB0dXJuT2ZmPzogVHVybk9mZkZ1bmN0aW9uO1xufTtcblxuY2xhc3MgQ3JlYXRlQXVkaW9Db25maWdBdWRpb0lucHV0U3RyZWFtIGV4dGVuZHMgQ3VzdG9tQXVkaW9JbnB1dFN0cmVhbSB7XG4gIGNvbnN0cnVjdG9yKHsgYXR0YWNoLCBkZWJ1ZywgdHVybk9mZiB9OiBDcmVhdGVBdWRpb0NvbmZpZ09wdGlvbnMpIHtcbiAgICBpZiAoIWF0dGFjaCB8fCB0eXBlb2YgYXR0YWNoICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiYXR0YWNoXCIgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIGlmICh0dXJuT2ZmICYmIHR5cGVvZiB0dXJuT2ZmICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1widHVybk9mZlwiLCBpZiBkZWZpbmVkLCBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgc3VwZXIoeyBkZWJ1ZyB9KTtcblxuICAgIC8vIEZhbHNlIGFsYXJtOiBpbmRleGVyIGlzIGEgY29uc3RhbnQgb2YgdHlwZSBTeW1ib2wuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgdGhpc1tTWU1CT0xfQVRUQUNIXSA9IGF0dGFjaDtcblxuICAgIC8vIEZhbHNlIGFsYXJtOiBpbmRleGVyIGlzIGEgY29uc3RhbnQgb2YgdHlwZSBTeW1ib2wuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgdGhpc1tTWU1CT0xfVFVSTl9PRkZdID0gdHVybk9mZjtcbiAgfVxuXG4gIFtTWU1CT0xfQVRUQUNIXTogQXR0YWNoRnVuY3Rpb247XG4gIFtTWU1CT0xfVFVSTl9PRkZdOiBUdXJuT2ZmRnVuY3Rpb247XG5cbiAgcHJvdGVjdGVkIHBlcmZvcm1BdHRhY2goYXVkaW9Ob2RlSWQ6IHN0cmluZyk6IFByb21pc2U8e1xuICAgIGF1ZGlvU3RyZWFtTm9kZTogQXVkaW9TdHJlYW1Ob2RlO1xuICAgIGRldmljZUluZm86IERldmljZUluZm87XG4gICAgZm9ybWF0OiBGb3JtYXQ7XG4gIH0+IHtcbiAgICAvLyBGYWxzZSBhbGFybTogaW5kZXhlciBpcyBhIGNvbnN0YW50IG9mIHR5cGUgU3ltYm9sLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgIHJldHVybiB0aGlzW1NZTUJPTF9BVFRBQ0hdKGF1ZGlvTm9kZUlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwZXJmb3JtVHVybk9mZigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IFtTWU1CT0xfVFVSTl9PRkZdOiB0dXJuT2ZmIH0gPSB0aGlzO1xuXG4gICAgcmV0dXJuIHR1cm5PZmYgJiYgdHVybk9mZigpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUF1ZGlvQ29uZmlnKG9wdGlvbnM6IENyZWF0ZUF1ZGlvQ29uZmlnT3B0aW9ucykge1xuICByZXR1cm4gQXVkaW9Db25maWcuZnJvbVN0cmVhbUlucHV0KG5ldyBDcmVhdGVBdWRpb0NvbmZpZ0F1ZGlvSW5wdXRTdHJlYW0ob3B0aW9ucykpO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAudioContext.d.ts","sourceRoot":"","sources":["../../src/speech/createAudioContext.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,CAAC,OAAO,UAAU,kBAAkB,IAAI,YAAY,CAczD"}
|