@sam17896/ngx-speech-recognition
Version:
Angular 5+ speech recognition service (based on browser implementation such as Chrome).
207 lines • 18.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/service/speech-recognition.common.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export class SpeechRecognitionCommon {
/**
* @param {?} _grammars
* @param {?} _lang
* @param {?} _continuous
* @param {?} _interimResults
* @param {?} _maxAlternatives
* @param {?} _serviceURI
*/
constructor(_grammars, _lang, _continuous, _interimResults, _maxAlternatives, _serviceURI) {
this._grammars = _grammars;
this._lang = _lang;
this._continuous = _continuous;
this._interimResults = _interimResults;
this._maxAlternatives = _maxAlternatives;
this._serviceURI = _serviceURI;
this.internal = new SpeechRecognition();
}
/**
* Property
* @return {?}
*/
// The grammars property of the SpeechRecognition interface returns and sets
// a collection of SpeechGrammar objects
// that represent the grammars that will be understood
// by the current SpeechRecognition.
//
// SpeechRecognitionインターフェイスのgrammarsプロパティは、
// 現在のSpeechRecognitionで認識される文法を表す
// SpeechGrammarオブジェクトのコレクションを返して設定します。
get grammars() {
return this._grammars;
}
/**
* @param {?} grammars
* @return {?}
*/
set grammars(grammars) {
this._grammars = grammars;
if (this._grammars !== undefined && this._grammars != null && this.internal) {
this.internal.grammars = this._grammars;
}
}
// The lang property of the SpeechRecognition interface returns
// and sets the language of the current SpeechRecognition.
// If not specified, this defaults to the HTML lang attribute value,
// or the user agent's language setting if that isn't set either.
//
// SpeechRecognitionインターフェイスのlangプロパティは、
// 現在のSpeechRecognitionの言語を返して設定します。
// 指定されていない場合、これはデフォルトでHTMLのlang属性の値、
// またはユーザエージェントの言語設定が設定されていない場合は
// その値になります。
/**
* @return {?}
*/
get lang() {
return this._lang;
}
/**
* @param {?} lang
* @return {?}
*/
set lang(lang) {
this._lang = lang;
if (this._lang !== undefined && this._lang != null && this.internal) {
this.internal.lang = this._lang;
}
}
// The continuous property of the SpeechRecognition interface controls
// whether continuous results are returned for each recognition, or only a single result.
//
// SpeechRecognitionインターフェイスの連続プロパティは、
// 認識結果ごとに連続した結果を返すか、単一の結果のみを返すかを制御します。
/**
* @return {?}
*/
get continuous() {
return this._continuous;
}
/**
* @param {?} continuous
* @return {?}
*/
set continuous(continuous) {
this._continuous = continuous;
if (this._continuous !== undefined && this._continuous != null && this.internal) {
this.internal.continuous = this._continuous;
}
}
// The interimResults property of the SpeechRecognition interface controls
// whether interim results should be returned (true)
// or not (false.) Interim results are results that are not yet final
// (e.g. the SpeechRecognitionResult.isFinal property is false.)
//
// SpeechRecognitionインターフェイスのinterimResultsプロパティは、
// 中間結果を返すかどうか(true)、そうでないか(false)を制御します。
// 中間結果は、最終段階ではない結果です(SpeechRecognitionResult.isFinalプロパティはfalseです)。
/**
* @return {?}
*/
get interimResults() {
return this._interimResults;
}
/**
* @param {?} interimResults
* @return {?}
*/
set interimResults(interimResults) {
this._interimResults = interimResults;
if (this._interimResults !== undefined && this._interimResults != null && this.internal) {
this.internal.interimResults = this._interimResults;
}
}
// The maxAlternatives property of the SpeechRecognition interface sets
// the maximum number of SpeechRecognitionAlternatives
// provided per SpeechRecognitionResult.
//
// SpeechRecognitionインターフェイスのmaxAlternativesプロパティは、
// SpeechRecognitionResultごとに提供される
// SpeechRecognitionAlternativesの最大数を設定します。
/**
* @return {?}
*/
get maxAlternatives() {
return this._maxAlternatives;
}
/**
* @param {?} maxAlternatives
* @return {?}
*/
set maxAlternatives(maxAlternatives) {
this._maxAlternatives = maxAlternatives;
if (this._maxAlternatives !== undefined && this._maxAlternatives != null && this.internal) {
this.internal.maxAlternatives = this._maxAlternatives;
}
}
// The serviceURI property of the SpeechRecognition interface specifies
// the location of the speech recognition service
// used by the current SpeechRecognition to handle
// the actual recognition. The default is the user agent's
// default speech service.
//
// SpeechRecognitionインターフェイスのserviceURIプロパティは、
// 現在のSpeechRecognitionが実際の認識を処理するために使用する
// 音声認識サービスの場所を指定します。
// デフォルトはユーザエージェントのデフォルト音声サービスです。
/**
* @return {?}
*/
get serviceURI() {
return this._serviceURI;
}
/**
* @param {?} serviceURI
* @return {?}
*/
set serviceURI(serviceURI) {
this._serviceURI = serviceURI;
if (this._serviceURI !== undefined && this._serviceURI != null && this.internal) {
this.internal.serviceURI = this._serviceURI;
}
}
}
if (false) {
/**
* @type {?}
* @protected
*/
SpeechRecognitionCommon.prototype.internal;
/**
* @type {?}
* @protected
*/
SpeechRecognitionCommon.prototype._grammars;
/**
* @type {?}
* @protected
*/
SpeechRecognitionCommon.prototype._lang;
/**
* @type {?}
* @protected
*/
SpeechRecognitionCommon.prototype._continuous;
/**
* @type {?}
* @protected
*/
SpeechRecognitionCommon.prototype._interimResults;
/**
* @type {?}
* @protected
*/
SpeechRecognitionCommon.prototype._maxAlternatives;
/**
* @type {?}
* @protected
*/
SpeechRecognitionCommon.prototype._serviceURI;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLmNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzYW0xNzg5Ni9uZ3gtc3BlZWNoLXJlY29nbml0aW9uLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2Uvc3BlZWNoLXJlY29nbml0aW9uLmNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLE1BQU0sT0FBTyx1QkFBdUI7Ozs7Ozs7OztJQUlsQyxZQUNZLFNBQWdDLEVBQ2hDLEtBQWEsRUFDYixXQUFvQixFQUNwQixlQUF3QixFQUN4QixnQkFBd0IsRUFDeEIsV0FBbUI7UUFMbkIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFTO1FBQ3BCLG9CQUFlLEdBQWYsZUFBZSxDQUFTO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQVJyQixhQUFRLEdBQXNCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztJQVM1RCxDQUFDOzs7Ozs7Ozs7Ozs7O0lBZ0JMLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7OztJQUVELElBQUksUUFBUSxDQUFDLFFBQStCO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUFZRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7Ozs7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzs7Ozs7Ozs7O0lBT0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBRUQsSUFBSSxVQUFVLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQy9FLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDN0M7SUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7SUFVRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7Ozs7O0lBQ0QsSUFBSSxjQUFjLENBQUMsY0FBdUI7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZGLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDckQ7SUFDSCxDQUFDOzs7Ozs7Ozs7OztJQVNELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDOzs7OztJQUNELElBQUksZUFBZSxDQUFDLGVBQXVCO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6RixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDdkQ7SUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7OztJQVlELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOzs7OztJQUNELElBQUksVUFBVSxDQUFDLFVBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMvRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztDQUVGOzs7Ozs7SUFoSUMsMkNBQWdFOzs7OztJQUc5RCw0Q0FBMEM7Ozs7O0lBQzFDLHdDQUF1Qjs7Ozs7SUFDdkIsOENBQThCOzs7OztJQUM5QixrREFBa0M7Ozs7O0lBQ2xDLG1EQUFrQzs7Ozs7SUFDbEMsOENBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBTcGVlY2hHcmFtbWFyTGlzdFR5cGUsXHJcbn0gZnJvbSAnLi4vYWRhcHRlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db21tb24ge1xyXG5cclxuICBwcm90ZWN0ZWQgaW50ZXJuYWw6IFNwZWVjaFJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIF9ncmFtbWFyczogU3BlZWNoR3JhbW1hckxpc3RUeXBlLFxyXG4gICAgcHJvdGVjdGVkIF9sYW5nOiBzdHJpbmcsXHJcbiAgICBwcm90ZWN0ZWQgX2NvbnRpbnVvdXM6IGJvb2xlYW4sXHJcbiAgICBwcm90ZWN0ZWQgX2ludGVyaW1SZXN1bHRzOiBib29sZWFuLFxyXG4gICAgcHJvdGVjdGVkIF9tYXhBbHRlcm5hdGl2ZXM6IG51bWJlcixcclxuICAgIHByb3RlY3RlZCBfc2VydmljZVVSSTogc3RyaW5nLFxyXG4gICkgeyB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBQcm9wZXJ0eVxyXG4gICAqL1xyXG5cclxuXHJcbiAgLy8gVGhlIGdyYW1tYXJzIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2UgcmV0dXJucyBhbmQgc2V0c1xyXG4gIC8vIGEgY29sbGVjdGlvbiBvZiBTcGVlY2hHcmFtbWFyIG9iamVjdHNcclxuICAvLyB0aGF0IHJlcHJlc2VudCB0aGUgZ3JhbW1hcnMgdGhhdCB3aWxsIGJlIHVuZGVyc3Rvb2RcclxuICAvLyBieSB0aGUgY3VycmVudCBTcGVlY2hSZWNvZ25pdGlvbi5cclxuICAvL1xyXG4gIC8vIFNwZWVjaFJlY29nbml0aW9u44Kk44Oz44K/44O844OV44Kn44Kk44K544GuZ3JhbW1hcnPjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyDnj77lnKjjga5TcGVlY2hSZWNvZ25pdGlvbuOBp+iqjeitmOOBleOCjOOCi+aWh+azleOCkuihqOOBmVxyXG4gIC8vIFNwZWVjaEdyYW1tYXLjgqrjg5bjgrjjgqfjgq/jg4jjga7jgrPjg6zjgq/jgrfjg6fjg7PjgpLov5TjgZfjgaboqK3lrprjgZfjgb7jgZnjgIJcclxuICBnZXQgZ3JhbW1hcnMoKTogU3BlZWNoR3JhbW1hckxpc3RUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl9ncmFtbWFycztcclxuICB9XHJcblxyXG4gIHNldCBncmFtbWFycyhncmFtbWFyczogU3BlZWNoR3JhbW1hckxpc3RUeXBlKSB7XHJcbiAgICB0aGlzLl9ncmFtbWFycyA9IGdyYW1tYXJzO1xyXG4gICAgaWYgKHRoaXMuX2dyYW1tYXJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fZ3JhbW1hcnMgIT0gbnVsbCAmJiB0aGlzLmludGVybmFsKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWwuZ3JhbW1hcnMgPSB0aGlzLl9ncmFtbWFycztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRoZSBsYW5nIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2UgcmV0dXJuc1xyXG4gIC8vIGFuZCBzZXRzIHRoZSBsYW5ndWFnZSBvZiB0aGUgY3VycmVudCBTcGVlY2hSZWNvZ25pdGlvbi5cclxuICAvLyBJZiBub3Qgc3BlY2lmaWVkLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBIVE1MIGxhbmcgYXR0cmlidXRlIHZhbHVlLFxyXG4gIC8vIG9yIHRoZSB1c2VyIGFnZW50J3MgbGFuZ3VhZ2Ugc2V0dGluZyBpZiB0aGF0IGlzbid0IHNldCBlaXRoZXIuXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrmxhbmfjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyDnj77lnKjjga5TcGVlY2hSZWNvZ25pdGlvbuOBruiogOiqnuOCkui/lOOBl+OBpuioreWumuOBl+OBvuOBmeOAglxyXG4gIC8vIOaMh+WumuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOAgeOBk+OCjOOBr+ODh+ODleOCqeODq+ODiOOBp0hUTUzjga5sYW5n5bGe5oCn44Gu5YCk44CBXHJcbiAgLy8g44G+44Gf44Gv44Om44O844K244Ko44O844K444Kn44Oz44OI44Gu6KiA6Kqe6Kit5a6a44GM6Kit5a6a44GV44KM44Gm44GE44Gq44GE5aC05ZCI44GvXHJcbiAgLy8g44Gd44Gu5YCk44Gr44Gq44KK44G+44GZ44CCXHJcbiAgZ2V0IGxhbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYW5nO1xyXG4gIH1cclxuXHJcbiAgc2V0IGxhbmcobGFuZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9sYW5nID0gbGFuZztcclxuICAgIGlmICh0aGlzLl9sYW5nICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fbGFuZyAhPSBudWxsICYmIHRoaXMuaW50ZXJuYWwpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbC5sYW5nID0gdGhpcy5fbGFuZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRoZSBjb250aW51b3VzIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2UgY29udHJvbHNcclxuICAvLyB3aGV0aGVyIGNvbnRpbnVvdXMgcmVzdWx0cyBhcmUgcmV0dXJuZWQgZm9yIGVhY2ggcmVjb2duaXRpb24sIG9yIG9ubHkgYSBzaW5nbGUgcmVzdWx0LlxyXG4gIC8vXHJcbiAgLy8gU3BlZWNoUmVjb2duaXRpb27jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7pgKPntprjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyDoqo3orZjntZDmnpzjgZTjgajjgavpgKPntprjgZfjgZ/ntZDmnpzjgpLov5TjgZnjgYvjgIHljZjkuIDjga7ntZDmnpzjga7jgb/jgpLov5TjgZnjgYvjgpLliLblvqHjgZfjgb7jgZnjgIJcclxuICBnZXQgY29udGludW91cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250aW51b3VzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGNvbnRpbnVvdXMoY29udGludW91czogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fY29udGludW91cyA9IGNvbnRpbnVvdXM7XHJcbiAgICBpZiAodGhpcy5fY29udGludW91cyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2NvbnRpbnVvdXMgIT0gbnVsbCAmJiB0aGlzLmludGVybmFsKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWwuY29udGludW91cyA9IHRoaXMuX2NvbnRpbnVvdXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgaW50ZXJpbVJlc3VsdHMgcHJvcGVydHkgb2YgdGhlIFNwZWVjaFJlY29nbml0aW9uIGludGVyZmFjZSBjb250cm9sc1xyXG4gIC8vIHdoZXRoZXIgaW50ZXJpbSByZXN1bHRzIHNob3VsZCBiZSByZXR1cm5lZCAodHJ1ZSlcclxuICAvLyBvciBub3QgKGZhbHNlLikgSW50ZXJpbSByZXN1bHRzIGFyZSByZXN1bHRzIHRoYXQgYXJlIG5vdCB5ZXQgZmluYWxcclxuICAvLyAoZS5nLiB0aGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaXNGaW5hbCBwcm9wZXJ0eSBpcyBmYWxzZS4pXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrmludGVyaW1SZXN1bHRz44OX44Ot44OR44OG44Kj44Gv44CBXHJcbiAgLy8g5Lit6ZaT57WQ5p6c44KS6L+U44GZ44GL44Gp44GG44GL77yIdHJ1Ze+8ieOAgeOBneOBhuOBp+OBquOBhOOBi++8iGZhbHNl77yJ44KS5Yi25b6h44GX44G+44GZ44CCXHJcbiAgLy8g5Lit6ZaT57WQ5p6c44Gv44CB5pyA57WC5q616ZqO44Gn44Gv44Gq44GE57WQ5p6c44Gn44GZ77yIU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaXNGaW5hbOODl+ODreODkeODhuOCo+OBr2ZhbHNl44Gn44GZ77yJ44CCXHJcbiAgZ2V0IGludGVyaW1SZXN1bHRzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ludGVyaW1SZXN1bHRzO1xyXG4gIH1cclxuICBzZXQgaW50ZXJpbVJlc3VsdHMoaW50ZXJpbVJlc3VsdHM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ludGVyaW1SZXN1bHRzID0gaW50ZXJpbVJlc3VsdHM7XHJcbiAgICBpZiAodGhpcy5faW50ZXJpbVJlc3VsdHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9pbnRlcmltUmVzdWx0cyAhPSBudWxsICYmIHRoaXMuaW50ZXJuYWwpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbC5pbnRlcmltUmVzdWx0cyA9IHRoaXMuX2ludGVyaW1SZXN1bHRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVGhlIG1heEFsdGVybmF0aXZlcyBwcm9wZXJ0eSBvZiB0aGUgU3BlZWNoUmVjb2duaXRpb24gaW50ZXJmYWNlIHNldHNcclxuICAvLyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZXNcclxuICAvLyBwcm92aWRlZCBwZXIgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrm1heEFsdGVybmF0aXZlc+ODl+ODreODkeODhuOCo+OBr+OAgVxyXG4gIC8vIFNwZWVjaFJlY29nbml0aW9uUmVzdWx044GU44Go44Gr5o+Q5L6b44GV44KM44KLXHJcbiAgLy8gU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZXPjga7mnIDlpKfmlbDjgpLoqK3lrprjgZfjgb7jgZnjgIJcclxuICBnZXQgbWF4QWx0ZXJuYXRpdmVzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4QWx0ZXJuYXRpdmVzO1xyXG4gIH1cclxuICBzZXQgbWF4QWx0ZXJuYXRpdmVzKG1heEFsdGVybmF0aXZlczogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9tYXhBbHRlcm5hdGl2ZXMgPSBtYXhBbHRlcm5hdGl2ZXM7XHJcbiAgICBpZiAodGhpcy5fbWF4QWx0ZXJuYXRpdmVzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fbWF4QWx0ZXJuYXRpdmVzICE9IG51bGwgJiYgdGhpcy5pbnRlcm5hbCkge1xyXG4gICAgICB0aGlzLmludGVybmFsLm1heEFsdGVybmF0aXZlcyA9IHRoaXMuX21heEFsdGVybmF0aXZlcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRoZSBzZXJ2aWNlVVJJIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2Ugc3BlY2lmaWVzXHJcbiAgLy8gdGhlIGxvY2F0aW9uIG9mIHRoZSBzcGVlY2ggcmVjb2duaXRpb24gc2VydmljZVxyXG4gIC8vIHVzZWQgYnkgdGhlIGN1cnJlbnQgU3BlZWNoUmVjb2duaXRpb24gdG8gaGFuZGxlXHJcbiAgLy8gdGhlIGFjdHVhbCByZWNvZ25pdGlvbi4gVGhlIGRlZmF1bHQgaXMgdGhlIHVzZXIgYWdlbnQnc1xyXG4gIC8vIGRlZmF1bHQgc3BlZWNoIHNlcnZpY2UuXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrnNlcnZpY2VVUknjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyDnj77lnKjjga5TcGVlY2hSZWNvZ25pdGlvbuOBjOWun+mam+OBruiqjeitmOOCkuWHpueQhuOBmeOCi+OBn+OCgeOBq+S9v+eUqOOBmeOCi1xyXG4gIC8vIOmfs+WjsOiqjeitmOOCteODvOODk+OCueOBruWgtOaJgOOCkuaMh+WumuOBl+OBvuOBmeOAglxyXG4gIC8vIOODh+ODleOCqeODq+ODiOOBr+ODpuODvOOCtuOCqOODvOOCuOOCp+ODs+ODiOOBruODh+ODleOCqeODq+ODiOmfs+WjsOOCteODvOODk+OCueOBp+OBmeOAglxyXG4gIGdldCBzZXJ2aWNlVVJJKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZVVSSTtcclxuICB9XHJcbiAgc2V0IHNlcnZpY2VVUkkoc2VydmljZVVSSTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlVVJJID0gc2VydmljZVVSSTtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlVVJJICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fc2VydmljZVVSSSAhPSBudWxsICYmIHRoaXMuaW50ZXJuYWwpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbC5zZXJ2aWNlVVJJID0gdGhpcy5fc2VydmljZVVSSTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==