@microsoft/windows-admin-center-sdk 4.87.0 → 4.167.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/angular/assets/strings/cs-CZ/strings.json +1 -1
- package/angular/assets/strings/de-DE/strings.json +1 -1
- package/angular/assets/strings/es-ES/strings.json +1 -1
- package/angular/assets/strings/fr-FR/strings.json +1 -1
- package/angular/assets/strings/hu-HU/strings.json +1 -1
- package/angular/assets/strings/id-ID/strings.json +1 -1
- package/angular/assets/strings/it-IT/strings.json +1 -1
- package/angular/assets/strings/ja-JP/strings.json +1 -1
- package/angular/assets/strings/ko-KR/strings.json +1 -1
- package/angular/assets/strings/nl-NL/strings.json +1 -1
- package/angular/assets/strings/pl-PL/strings.json +1 -1
- package/angular/assets/strings/pt-BR/strings.json +1 -1
- package/angular/assets/strings/pt-PT/strings.json +1 -1
- package/angular/assets/strings/ru-RU/strings.json +1 -1
- package/angular/assets/strings/strings.json +1 -1
- package/angular/assets/strings/sv-SE/strings.json +1 -1
- package/angular/assets/strings/tr-TR/strings.json +1 -1
- package/angular/assets/strings/zh-CN/strings.json +1 -1
- package/angular/assets/strings/zh-TW/strings.json +1 -1
- package/angular/esm2020/src/controls/actions/containers/action-bar/action-bar.component.mjs +2 -2
- package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
- package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
- package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
- package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
- package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
- package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
- package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
- package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
- package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
- package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
- package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
- package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
- package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
- package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
- package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
- package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
- package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
- package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
- package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
- package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
- package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
- package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
- package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
- package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
- package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
- package/angular/esm2020/src/generated/strings.mjs +1 -1
- package/angular/esm2020/src/service/navigation.service.mjs +3 -8
- package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +128 -73
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +116 -71
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/package.json +1 -1
- package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
- package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
- package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
- package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
- package/angular/src/directives/svg/svg.directive.d.ts +1 -2
- package/angular/src/generated/strings.d.ts +12 -0
- package/core/assets/strings/cs-CZ/strings.json +1 -1
- package/core/assets/strings/es-ES/strings.json +1 -1
- package/core/assets/strings/fr-FR/strings.json +1 -1
- package/core/assets/strings/hu-HU/strings.json +1 -1
- package/core/assets/strings/id-ID/strings.json +1 -1
- package/core/assets/strings/it-IT/strings.json +1 -1
- package/core/assets/strings/ja-JP/strings.json +1 -1
- package/core/assets/strings/ko-KR/strings.json +1 -1
- package/core/assets/strings/pl-PL/strings.json +1 -1
- package/core/assets/strings/pt-BR/strings.json +1 -1
- package/core/assets/strings/pt-PT/strings.json +1 -1
- package/core/assets/strings/ru-RU/strings.json +1 -1
- package/core/assets/strings/sv-SE/strings.json +1 -1
- package/core/assets/strings/tr-TR/strings.json +1 -1
- package/core/assets/strings/zh-CN/strings.json +1 -1
- package/core/assets/strings/zh-TW/strings.json +1 -1
- package/core/azure/azure-constants.d.ts +3 -2
- package/core/azure/azure-constants.d.ts.map +1 -1
- package/core/azure/azure-constants.js +11 -3
- package/core/azure/azure-constants.js.map +1 -1
- package/core/base/utilities.d.ts +3 -3
- package/core/base/utilities.d.ts.map +1 -1
- package/core/base/utilities.js +2 -2
- package/core/base/utilities.js.map +1 -1
- package/core/data/active-directory/active-directory.d.ts.map +1 -1
- package/core/data/active-directory/active-directory.js +1 -1
- package/core/data/active-directory/active-directory.js.map +1 -1
- package/core/data/cookie.d.ts.map +1 -1
- package/core/data/cookie.js +7 -0
- package/core/data/cookie.js.map +1 -1
- package/core/data/gateway-url-translator.d.ts +1 -0
- package/core/data/gateway-url-translator.d.ts.map +1 -1
- package/core/data/gateway-url-translator.js +21 -6
- package/core/data/gateway-url-translator.js.map +1 -1
- package/core/data/gateway-urls.d.ts +6 -0
- package/core/data/gateway-urls.d.ts.map +1 -1
- package/core/data/gateway-urls.js +8 -0
- package/core/data/gateway-urls.js.map +1 -1
- package/core/data/node-connection.d.ts.map +1 -1
- package/core/data/node-connection.js +0 -2
- package/core/data/node-connection.js.map +1 -1
- package/core/generated/powershell-scripts.d.ts.map +1 -1
- package/core/generated/powershell-scripts.js +1 -1
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +38 -16
- package/core/security/tool-condition-validator.d.ts.map +1 -1
- package/core/security/tool-condition-validator.js +5 -5
- package/core/security/tool-condition-validator.js.map +1 -1
- package/core/shared/server-inventory/server-inventory-cache.d.ts.map +1 -1
- package/core/shared/server-inventory/server-inventory-cache.js +1 -1
- package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
- package/core/shared/server-inventory/server-inventory.d.ts +4 -4
- package/core/shared/server-inventory/server-inventory.d.ts.map +1 -1
- package/core/shared/server-inventory/server-inventory.js +2 -2
- package/core/shared/server-inventory/server-inventory.js.map +1 -1
- package/microsoft-windows-admin-center-sdk-4.167.0.tgz +0 -0
- package/package.json +10 -8
- package/styles/css/main-v2.css +1 -1
- package/tools/code-formatter/.eslintrc.base.json +1 -0
- package/tools/code-formatter/lint.d.ts.map +1 -1
- package/tools/code-formatter/lint.js +7 -1
- package/tools/code-formatter/lint.js.map +1 -1
- package/tools/code-formatter/utilities.d.ts +7 -0
- package/tools/code-formatter/utilities.d.ts.map +1 -0
- package/tools/code-formatter/utilities.js +79 -0
- package/tools/code-formatter/utilities.js.map +1 -0
- package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
- package/tools/gulp-update-notes-resource/index.js +4 -4
- package/tools/gulp-update-notes-resource/index.js.map +1 -1
- package/tools/module-template/.eslintrc.json +3 -0
- package/tools/module-template/build/pipelines/ci-build.yml +2 -2
- package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
- package/tools/wac-cli/src/angular15/configs/angular-json-config.d.ts +2 -7
- package/tools/wac-cli/src/angular15/configs/angular-json-config.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js +8 -1
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js.map +1 -1
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +16 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.d.ts +4 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/configs/package-json-config.js +13 -9
- package/tools/wac-cli/src/angular15/configs/package-json-config.js.map +1 -1
- package/tools/wac-cli/src/angular15/main.d.ts +20 -4
- package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/main.js +44 -8
- package/tools/wac-cli/src/angular15/main.js.map +1 -1
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +49 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
- package/tools/wac-cli/templates/wac-template/package.json +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"Strings":{"MsftSmeShell":{"Angular":{"searchPlaceHolder":"搜尋設定","Banner":{"DismissalDialog":{"footnote":"您隨時可以在 [設定] > [建議] 中變更這些喜好設定","title":"{0} 建議設定","Choices":{"Session":{"label":"暫時關閉此通知"},"Permanent":{"label":"不要顯示 {0} 建議"}}},"LearnMore":{"label":"深入了解"},"SetUpNow":{"label":"立即更新"},"ButtonClose":{"label":"關閉"},"ChevronLeft":{"label":"請按這裡取得上一頁的橫幅"},"ChevronRight":{"label":"請按這裡取得下一頁的橫幅"}},"CapacityBarChart":{"freeFormat":"{0} 可用","totalFormat":"總計: {0}","usedFormat":"已使用: {0} ({1})"},"Common":{"add":"新增","apply":"套用","back":"上一步","skip":"略過","cancel":"取消","close":"關閉","clear":"清除","continue":"繼續","details":"詳細資料","disable":"停用","disabled":"已停用","discard":"捨棄","discarded":"已捨棄","enable":"啟用","enabled":"已啟用","exit":"結束","failed":"失敗","failure":"失敗","finish":"完成","free":"可用","inProgress":"進行中","message":"訊息","next":"下一步","no":"否","remove":"移除","save":"儲存","search":"搜尋","succeeded":"成功","success":"成功","submit":"提交","total":"總計","used":"已使用","yes":"是","more":"更多","actions":"動作","expand":"展開","collapse":"摺疊","on":"開啟","off":"關閉","reset":"重設","none":"無","OK":{"affirmative":"確定","state":"良好"},"Capacity":{"criticalState":"嚴重狀態","warningState":"警告狀態","normalState":"標準狀態"},"Form":{"Validation":{"required":"*","UnknownFieldName":"這個欄位","IllegalNumber":"'{0}' 必須是 '{2}' 位移的 '{1}' 倍數","AlertTypes":{"error":"錯誤","warn":"警告","info":"資訊","success":"成功","pending":"正在處理"},"Required":{"label":"必要項目","format":"'{0}' 是必要欄位"},"Min":{"format":"{0} 不得小於 {1}"},"Max":{"format":"{0} 不得大於 {1}"},"Email":{"format":"{0} 必須是有效的電子郵件地址"},"MinLength":{"format":"{0} 必須至少有 {1} 個字元"},"MaxLength":{"format":"{0} 的長度上限為 {1} 個字元"},"Pattern":{"format":"{0} 不符合要求的模式"},"Capslock":{"message":"Caps Lock 已啟用"},"isNumber":{"format":"{0} 必須為有效的數字"},"Input":{"UnknownRegex":{"invalidCharacters":"不能包含無效字元。"},"DefaultRegex":{"invalidCharacters":"不能包含無效字元: 反斜線 (\\),斜線符號 (/),星號 (*),問號 (?),單引號 (‘)、雙引號 (“),小於符號 (<),大於符號 (>),或是分隔號 (|)。"}},"MachineName":{"invalidCharacters":"不能包含無效字元: 反斜線 (\\),斜線符號 (/),星號 (*),問號 (?),單引號 (‘)、雙引號 (“),小於符號 (<),大於符號 (>),或是分隔號 (|)。","invalidCharactersWithSpace":"不能包含無效字元: 反斜線 (\\),斜線符號 (/),星號 (*),問號 (?),單引號 (‘)、雙引號 (“),小於符號 (<),大於符號 (>),分隔號 (|),或是空格 ( )。","whitespaceWillBeTrimmed":"將修剪前置和後端空白字元。","noStartWithPeriod":"不能以句點 (.) 字元開頭。"},"MatchField":{"noMatch":"此欄位必須符合 \"{0}\" 完全相同。"},"Pending":{"message":"正在驗證..."}},"Loading":{"message":"正在載入..."}},"InfoBubble":{"title":"檢視詳細資訊"}},"Badges":{"Preview":{"label":"預覽","tooltip":"此工具包含可供評估和測試的預覽功能。"},"Feedback":{"label":"意見反應"},"ComingSoon":{"label":"更多即將推出","tooltip":"已規劃在此工具的未來更新中加入其他功能。"},"New":{"label":"新增","tooltip":"此工具是新的或是已更新全新功能。","Feature":{"label":"新增"}},"Improvement":{"Feature":{"label":"改進"}},"BugFixes":{"Feature":{"label":"錯誤修正"}},"Common":{"learnMore":"深入了解","feedback":"提供意見反應給我們","Aria":{"labelFormat":"{0} {1}"},"Severities":{"warn":"警告","critical":"重要"}},"CredSSPEnabled":{"label":"CredSSP 已啟用","tooltip":"CredSSP 已在此伺服器上啟用。若要提高安全性,請在完成任何需要 CredSSP 的工作之後將其停用。"}},"ActiveDirectoryFormField":{"Button":{"Search":{"Label":"搜尋","PlaceHolder":"輸入搜尋名稱,支援萬用字元"}},"ResultTable":{"NameColumnHeader":"名稱","TypeColumnHeader":"類型","LoginNameColumnHeader":"登入名稱"},"SearchString":{"label":"輸入搜尋字串"},"Search":{"Progress":"正在搜尋 '{0}'"},"SizeLimit":{"Warning":"搜尋結果達到可顯示的最大數量 - 顯示前 {0}"},"ActiveDirectorySearchNotAvailable":{"message":"因為 Windows Admin Center 未加入 Active Directory 網域,無法搜尋 Active Directory。也有可能是因為您的帳號沒有 Active Directory 的讀取授權。"},"Error":{"message":"我們無法從 Active Directory 搜尋 \"{0}\"。錯誤: {1}"}},"Form":{"Checklist":{"indexDescription":"第 {0} 個 (共 {1} 個)"},"File":{"placeholder":"選擇要上傳的檔案","allowedFileTypesFormat":"允許的檔案類型: {0}","allFileTypes":"全部","removeButtonAriaLabelFormat":"移除 {0}","invalidFileTypeFormat":"不允許「{0}」個檔案","directoriesNotAllowed":"目錄不允許檔案上傳","invalidFileUnknownTypeFormat":"\"{0}\" 是不允許的檔案類型","removeButtonTooltip":"從清單中移除此項目","buttonText":{"singular":"選取檔案","plural":"選取檔案"},"dragDropText":{"singular":"或將檔案拖放至此","plural":"或將檔案拖放至此"},"selectedFilesFormat":{"plural":"已選取 {0} 個檔案","singular":"已選取 1 個檔案","none":"指定要匯出的檔案。","multipleEnabled":{"none":"指定要匯入的檔案。"}}},"Actions":{"clear":"清除","copy":"複製","copied":"已複製"},"OrderedList":{"addButtonAriaLabel":"新增","addButtonTooltip":"將項目新增到清單","demoteButtonAriaLabel":"下移","demoteButtonTooltip":"在清單中將此項目下移","emptyValues":"清單不得包含任何空白的值","instructions":"","itemAriaDescription":"第 {0} 個 (共 {1} 個)","promoteButtonAriaLabel":"上移","promoteButtonTooltip":"在清單中將此項目上移","removeButtonAriaLabel":"移除","removeButtonTooltip":"從清單中移除此項目","addColumn":"新增欄位"},"Array":{"addButtonAriaLabel":"新增","addButtonTooltip":"將項目新增到清單","demoteButtonAriaLabel":"下移","demoteButtonTooltip":"在清單中將此項目下移","itemTitle":"項目 {0}","demoteButtonEvent":"項目在清單中下移。","demoteButtonPreventedEvent":"項目已位於清單底端。","itemAriaDescription":"第 {0} 個 (共 {1} 個)","promoteButtonAriaLabel":"上移","promoteButtonTooltip":"在清單中將此項目上移","promoteButtonEvent":"項目在清單中上移。","promoteButtonPreventedEvent":"項目已位於清單頂端。","removeButtonAriaLabel":"移除","removeButtonTooltip":"從清單中移除此項目","removeButtonEvent":"項目已從清單中移除。"},"List":{"addButtonAriaLabel":"新增","addButtonTooltip":"將項目新增到清單","emptyValues":"清單不得包含任何空白的值","itemAriaLabel":"{0}; 項目 {1}/{2}","removeButtonAriaLabel":"移除","removeButtonTooltip":"從清單中移除此項目"},"ConfirmationDialog":{"unsavedChangesCancelText":"捨棄變更","unsavedChangesConfirmText":"繼續編輯","unsavedChangesMessage":"要繼續編輯或捨棄您的變更嗎?","unsavedChangesTitle":"您有尚未儲存的變更"},"SearchField":{"count":"找到 {0} 筆結果。","Searching":{"label":"正在搜尋"}},"Common":{"SelectAll":{"label":"全選"}},"Date":{"InvalidDate":"請以此格式提供有效的日期:{0}","InvalidDateTime":"請以此格式提供有效的日期/時間:{0},HH:mm:ss","MinDateErrorFormat":"日期不能早於 {0}","MaxDateErrorFormat":"日期不能晚於 {0}"},"Time":{"InvalidTime":"請提供有效時間的格式:'hh:mm:ss AM/PM'、'hh:mm AM/PM'、'HH:mm:ss' 或 HH:mm","MinTimeErrorFormat":"時間不能早於 {0}","MaxTimeErrorFormat":"時間不能晚於 {0}"},"DateTimeRange":{"Custom":{"label":"自訂"},"StartTime":{"label":"開始時間"},"EndTime":{"label":"結束時間"},"Invalid":{"StartTime":"無效的開始時間,其不應該在結束時間之後。","EndTime":"無效的結束時間,其不應該在開始時間之前。"}}},"HtmlScanner":{"UnrecognizedClass":{"messageFormat":"CSS 類別 \"{0}\" 是無法辨識的 SME 樣式。錯誤使用已插入 SME 的類別 (具有 'sme-' 首碼的項目) 可能會導致樣式不一,甚至會在往後的 SME 殼層與 SDK 反覆項目引起中斷性變更。"}},"Decorators":{"Deprecated":{"messageFormat":"\"{0}\" 已在 {1} 淘汰。{2} {3}","alternateSignatureFormat":"改用 \"{0}\"。","CssClass":{"messageFormat":"CSS 類別 \"{0}\" 已在 {1} 淘汰。{2} {3}"}},"Obsolete":{"messageFormat":"\"{0}\" 已在 {1} 淘汰,且即將移除。{2} {3}","alternateSignatureFormat":"改用 \"{0}\"。"}},"DataTable":{"NoRecordsFound":"找不到任何記錄","removeThisRow":"移除此列。","Loading":"正在載入...","aria":{"label":{"selectAllItems":"選取所有項目","unselectAllItems":"取消選取所有項目","expand":"展開","collapse":"摺疊","nItemsInGroup":"包含 {0} 個項目的群組","oneItemInGroup":"包含 1 個項目的群組","nSubNodesInTreeNode":"'包含 {0} 個子節點的樹狀節點","oneSubNodeInTreeNode":"'包含 1 個子節點的樹狀節點"}},"Templates":{"Tags":{"Header":"標籤"}},"Aria":{"Label":{"rowSelection":"列 {0} 選取範圍","ascendSortOrderButton":"遞增排序順序的按鈕","descendSortOrderButton":"遞減排序順序的按鈕"}},"DownloadService":{"inProgressTitle":"正在下載資料表檢視","inProgressContent":"正在下載 {0} 的資料表檢視...","successTitle":"已成功下載資料表檢視","successContent":"已成功下載{0}的資料表檢視。檢查您的下載資料夾。","failedTitle":"無法下載資料表檢視","failedContent":"無法下載{0}的資料表檢視。錯誤訊息: {1}"}},"Details":{"AriaDescription":"按下 tab 鍵,然後使用方向鍵在此窗格內瀏覽。"},"Documentation":{"Tabs":{"Overview":{"label":"概觀"},"API":{"label":"API"},"Examples":{"label":"範例"}},"Overview":{"liveExampleHeader":"即時範例"}},"LoadingWheel":{"ARIA":{"loading":"正在載入"}},"DoughnutChart":{"Aria":{"RefreshInterval":"環圈圖每隔 {0} 重新整理","CenterText":"圖表總計"}},"Resizer":{"Splitter":"分隔器"},"MasterView":{"oneItem":"1 個項目","items":"{0} 個項目","results":"找到 {0} 筆結果。","selected":"已選取 {0} 個","selectedAria":"清除 {0} 個已選取的項目","selectedTitle":"清除選取項目","refresh":{"title":"重新整理","ariaLabel":{"header":"重新整理 {0}","noHeader":"重新整理"}},"columnPicker":{"title":"欄位選擇器"},"filter":{"title":"篩選"},"group":{"title":"群組"}},"NodeCredentialsForm":{"deploymentGuideMessage":"若要使用 Windows 帳戶進行單一登入,您可能需要設定 Kerberos 限制委派。","refreshMessage":"若要改回使用您的 Windows 帳戶,請重新整理頁面。","ApplyToAll":{"label":"請使用這些認證進行所有連線。","warning":"這將會覆寫您先前儲存的任何認證。"},"ConstrainedDelegation":{"title":"Kerberos 委派"},"Kerberos":{"link":{"text":"深入了解","href":"https://go.microsoft.com/fwlink/?linkid=863170"}},"lapsLocalAdminName":{"label":"本機系統管理員帳戶名稱","placeholder":"系統管理員"},"Password":{"label":"密碼","placeholder":"請輸入密碼。"},"trustedHosts":{"configureMessage":"您的環境可能需要設定 WinRM TrustedHosts 才能連線到受管理節點。","title":"設定 TrustedHosts"},"UseGlobalAuth":{"labelFormat":"使用 {0} 進行此連線","myWindowsAccount":"我的 Windows 帳戶","myLinuxAccount":"我的 Linux 帳戶","warning":"這些認證只會在這個工作階段儲存。"},"UseLaps":{"label":"搭配隨機化密碼使用區域系統管理員密碼解決方案 (必須已設定)"},"UsePerNodeAuth":{"label":"使用另一個帳戶進行此連線"},"Username":{"label":"使用者名稱","placeholder":"輸入使用者名稱..."}},"Navigation":{"NavigationTitleReturnTypeError":{"message":"具有不支援物件類型的 navigationTitle 回呼失敗。"}},"Wizard":{"validating":"正在驗證","stageName":"下一步: {0}","disabledStepAlert":"根據之前輸入的內容,您無需完成此步驟。請繼續進行下一步。","expandStepsList":"展開步驟清單","collapseStepsList":"摺疊步驟清單","Exit":{"Dialog":{"title":"結束確認","message":"是否要立即結束?"}},"Busy":{"Dialog":{"title":"您即將中斷重要程序","message":"重要的程式目前正在執行中。您確定要離開嗎?"}},"PreviousStep":{"Dialog":{"title":"上一步確認","message":"不能導航到已完成步驟。"}},"Lite":{"Actions":{"previous":"上一步","next":"下一步"},"FooterTemplate":{"review":"檢閱 + 建立","exit":"結束"}}},"TagsInput":{"RemoveTag":{"labelFormat":"移除 \"{0}\" 標籤"},"AddTag":{"label":"新增標籤"},"Instructions":{"label":"使用 ENTER 鍵新增標籤。使用 ',' (英文逗號) 分隔多個標籤項目。"}},"TooltipZone":{"Aria":{"keyShortcuts":"如需詳細資訊,請按 ALT + F1"}},"AlertBar":{"Warning":"警告","Information":"資訊","Success":"成功","Error":"錯誤","InProgress":"進行中","DismissAriaLabel":"關閉警示","Dismiss":"關閉","Expand":"展開"},"QueryEditor":{"ColumnFilter":"欄位篩選器","Delete":"刪除","New":"新增篩選器","Reset":"重設篩選器","Unset":"未設定","Selected":"已選取 {0} 個","ReadOnly":"唯讀","Irremovable":"不可移除","RemovableHint":"使用 DELETE 鍵刪除項目","SelectKey":"選取金鑰","SelectValue":"選取值"},"ColumnPicker":{"Header":"自訂表格","Pivot":{"chooseColumn":"選取欄位","groupBy":"群組依據"}},"Lint":{"Accessibility":{"MixedUseZone":"區域不得有區域子系,以及在相同層級中為可設定焦點元素的子系。請以類別 class sme-focus-zone 包裝所有可設定焦點元素來避免混用區域。","AnchorRoleOrHref":"錨點標籤需要角色屬性或 href。","AnchorTabIndexOrHref":"錨點標籤需要 href 或 tabindex = 0,才可設定焦點。","DialogInForm":"不要在對話方塊以外放置表單元素。","InputWithoutForm":"不要在表單以外使用輸入、選取或 textarea 元素。"}},"StackedHorizontalBarChart":{"totalLabel":"總計","Aria":{"roleDescription":"橫條圖"}},"Connectivity":{"Restricted":{"title":"受限制的網際網路存取","Azure":{"text":"此動作需要連線到 Microsoft Azure,但 Windows Admin Center 設定了受限制的網際網路連線能力。"},"Offline":{"text":"無法達到 {0}。Windows Admin Center 設定了受限制的網際網路連線能力。"},"ChangeSettings":{"text":"變更連線設定。"}}},"Layout":{"Edit":"編輯","Done":"完成"},"SchemaForm":{"NoSchemaMessage":{"Row1":"首先將「結構描述」和「資料」屬性設為結構描述驅動型表單元件。","Row2":"您也可以按一下底下的 [編輯] 按鈕,建立新的結構描述或編輯現有的結構描述。","Row3":"在生產模式下將不會顯示 [編輯] 按鈕。"},"EditButton":{"Text":"編輯"},"Editor":{"Title":"結構描述驅動型表單編輯器","SwitchToCodeViewMessage":"別忘了切換到 [程式碼] 檢視以取得編輯後的結構描述程式碼。","PreviewForm":{"Title":"預覽","EmptySchemaMessage":"結構描述中未加入任何屬性。請選取 [結構描述] 樹狀節點,再按一下 [+] 按鈕以加入一些屬性。","ValidationResult":{"Passed":"通過","Failed":"失敗","Title":"表單驗證: "}},"Welcome":{"Title":"歡迎使用結構描述驅動型表單編輯器","Row1":"結構描述驅動型表單利用表單結構描述,轉譯表單 UI 以及處理 UI 與表單檢視模型之間的雙向繫結。","Row2":"此工具可協助您利用表單結構描述建構表單 UI。","Row3":"您可以透過結構描述樹狀結構 ([視覺化] 檢視) 或結構描述程式碼編輯器 ([程式碼] 檢視) 編輯表單結構描述。","Row4":"您可前往 [資料] 索引標籤以查看表單 JSON 資料產生的方式,或是直接編輯表單 JSON 資料後再查看表單 UI 將如何轉譯該資料。","Row5":"您可前往 [表單檢視模型協定] 索引標籤以產生表單檢視模型協定,然後在您的原始程式碼中使用該協定對表單檢視模型進行強式類型檢查。","Row6":"若想要快速入門,您可以在編輯器 UI 中央的樹狀結構中選取 [結構描述] 節點,然後按一下 [+] 按鈕以由該處加入一些屬性。","Row7":"您隨時皆可按一下 [套用結構描述並加以預覽] 按鈕,查看表單會如何根據您建構的結構描述進行轉譯。","Row8":"編輯結構描述完成後,請切換到 [程式碼] 檢視以複製產生的結構描述程式碼。","Row9":"若要使用您剛建立或更新的結構描述轉譯表單,請將結構描述程式碼存回您的原始程式碼或放到任何不致丟失的位置,然後將該結構描述繫結至結構描述表單元件。","Row10":"結構描述驅動型表單的一個終極訣竅: 您可以使用程式碼動態建構結構描述物件。","Row11":"敬請親自體驗。"},"SchemaView":{"Title":"檢視:","Visual":"視覺化","Code":"程式碼"},"ApplySchemaButton":{"Text":"套用結構描述並加以預覽"},"GoToCodeViewButton":{"Text":"移至 [程式碼] 檢視"},"CloseButton":{"Text":"關閉"},"SchemaTree":{"Welcome":{"Row1":"結構描述樹狀結構是供您建構結構描述的地方。除了 [結構描述] 根節點外,每個樹狀節點各代表某一屬性結構描述。","Row2":"字串及數字之類的簡單屬性不能有子系屬性。","Row3":"物件屬性可以有多個子系屬性,用於定義各物件屬性的結構描述。","Row4":"陣列屬性只能有一個子系屬性,用於定義陣列項目結構描述。","Row5":"若想要快速入門,您可以在上面的樹狀結構中選取 [結構描述] 節點,然後按一下 [+] 按鈕以由該處加入一些屬性。"}},"PropertyForm":{"Header":"在這裡定義屬性結構描述","Footer":"順道一提,即便此表單是由結構描述驅動型表單進行轉譯,此表單的結構描述乃為動態產生。","DataType":"資料類型","Advance":"進階","Required":"必要項","DefaultValue":"預設值","Description":"描述","HideCondition":"隱藏條件","ConditionForDisabled":"符合此條件時即停用","CustomValidation":"自訂驗證","ReadonlyCondition":"唯讀條件","MoreOptions":"更多選項","EmptyByDefault":"預設情況下使用空值","NoOptionSchema":"此類型與格式未定義「選項」結構描述而無法轉譯各欄位,所以請直接在這裡編輯「選項」JSON。","Welcome":{"Row1":"按一下 [結構描述] 節點旁的 [+] 按鈕以加入屬性。","Row2":"或者選擇任何子系屬性結構描述節點,編輯該節點的屬性結構描述。","Row3":"每個屬性都對應到 UI 中的某一表單欄位。","Row4":"按一下表單屬性樹狀節點,接著即可編輯表單屬性的詳細資料。","Row5":"您還可以管理各個屬性的順序或移除任何屬性。","Row6":"若將屬性設為「物件」類型,您便可再為其加入更多子系屬性。","Row7":"若將屬性設為「陣列」類型,您即必須定義陣列項目結構描述。"},"Type":{"Description":"這表示可供用於 JSON 資料的基本資料類型。例如,表單資料中的字串無論是使用文字方塊或下拉式清單呈現,當成表單資料來看終究仍是字串。"},"Format":{"Description":"同屬某一資料類型的不同表單欄位可能需要使用不同的 UI (格式) 與使用者互動。例如,有時我們會使用文字方塊以供輸入字串,或是使用下拉式方塊讓使用者從指定的選項中選擇任一字串。"},"Name":{"Description":"這是表單 JSON 資料中所使用的屬性名稱。"},"Label":{"Description":"這段文字會顯示為表單欄位的標籤。"},"MultipleLine":{"Title":"多行"},"ObjectType":{"ColumnCount":"欄數","Collapsible":"可摺疊","HideHeader":"隱藏標題","Yes":"是","State":"狀態","Collapsed":"已摺疊","Expanded":"已展開"},"Options":{"StaticOptions":"靜態選項","DynamicOptions":"動態選項 - 繫結運算式","Label":"標籤","Value":"值"},"CodeEditor":{"Language":{"label":"語言","description":"要在編輯器中顯示的程式碼語言。應選擇摩納哥程式碼編輯器中內建的任一種語言。"},"Options":{"label":"摩納哥編輯器選項","description":"選項在建立時,拒絕傳送至摩納哥編輯器。"}}},"SchemaText":{"Message1":"您可以直接在這裡編輯結構描述程式碼。編輯完成後,請套用結構描述以預覽表單。","Message2":"編輯完成後,請別忘了複製該結構描述程式碼並貼至您的原始程式碼或任何能夠予以儲存的位置。","LintMessage":"順道一提,您可能需要此程式碼......","CopyToClipboardButton":{"Text":"將結構描述複製到剪貼簿"}},"ViewModel":{"Message":"* 下面的文字方塊只是為了便於您選取全部內容並複製。在這裡進行任何編輯都不會有任何作用。","GenerateButton":{"Text":"產生"}},"ResourceStringPicker":{"ActualTextPrefix":"實際文字: ","InvalidResourceKey":"資源識別碼無效","NoResourceKeyMessage":"請在這裡提供資源識別碼。","CannotFindResourceKey":"找不到資源識別碼: {0}","WrongFormatActualText":"結構描述中的實際文字格式錯誤。"}}},"ActionButton":{"Templates":{"EditTags":{"Label":"編輯標籤"}},"OpenInANewWindow":{"label":"彈出至新視窗","title":"彈出至新視窗"}},"Calendar":{"PreviousMonth":"上個月","NextMonth":"下個月","goToToday":"移至今日","Heading":{"Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日"},"Day":{"Sunday":"星期日","Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六"},"Month":{"1":"一月","2":"二月","3":"三月","4":"四月","5":"五月","6":"六月","7":"七月","8":"八月","9":"九月","10":"十月","11":"十一月","12":"十二月"},"AriaLabel":{"Required":"{0}為必要。"}},"Clock":{"Headings":{"hour":"小時","minute":"分鐘","meridiem":"上午/下午"},"Meridiem":{"AM":{"label":"上午"},"PM":{"label":"下午"}},"AriaLabel":{"Required":"{0}為必要。"}},"Overlay":{"closeErrorTitle":"無法關閉重疊檢視","openErrorTitle":"無法開啟重疊檢視"},"StatusIcon":{"Critical":"嚴重","Error":"錯誤","Warning":"警告","Progress":"進度","Success":"成功","Info":"資訊","Unknown":"未知"},"PivotTab":{"HasError":"此索引標籤有錯誤。"}}}}}
|
|
1
|
+
{"Strings":{"MsftSmeShell":{"Angular":{"searchPlaceHolder":"搜尋設定","Banner":{"DismissalDialog":{"footnote":"您隨時可以在 [設定] > [建議] 中變更這些喜好設定","title":"{0} 建議設定","Choices":{"Session":{"label":"暫時關閉此通知"},"Permanent":{"label":"不要顯示 {0} 建議"}}},"LearnMore":{"label":"深入了解"},"SetUpNow":{"label":"立即更新"},"ButtonClose":{"label":"關閉"},"ChevronLeft":{"label":"請按這裡取得上一頁的橫幅"},"ChevronRight":{"label":"請按這裡取得下一頁的橫幅"}},"CapacityBarChart":{"freeFormat":"{0} 可用","totalFormat":"總計: {0}","usedFormat":"已使用: {0} ({1})"},"Common":{"add":"新增","apply":"套用","back":"上一步","skip":"略過","cancel":"取消","close":"關閉","clear":"清除","continue":"繼續","details":"詳細資料","disable":"停用","disabled":"已停用","discard":"捨棄","discarded":"已捨棄","enable":"啟用","enabled":"已啟用","exit":"結束","failed":"失敗","failure":"失敗","finish":"完成","free":"可用","inProgress":"進行中","message":"訊息","next":"下一步","no":"否","remove":"移除","save":"儲存","search":"搜尋","succeeded":"成功","success":"成功","submit":"提交","total":"總計","used":"已使用","yes":"是","more":"更多","actions":"動作","expand":"展開","collapse":"摺疊","on":"開啟","off":"關閉","reset":"重設","none":"無","OK":{"affirmative":"確定","state":"良好"},"Capacity":{"criticalState":"嚴重狀態","warningState":"警告狀態","normalState":"標準狀態"},"Form":{"Validation":{"required":"*","UnknownFieldName":"這個欄位","IllegalNumber":"'{0}' 必須是 '{2}' 位移的 '{1}' 倍數","AlertTypes":{"error":"錯誤","warn":"警告","info":"資訊","success":"成功","pending":"正在處理"},"Required":{"label":"必要項目","format":"'{0}' 是必要欄位"},"Min":{"format":"{0} 不得小於 {1}"},"Max":{"format":"{0} 不得大於 {1}"},"Email":{"format":"{0} 必須是有效的電子郵件地址"},"MinLength":{"format":"{0} 必須至少有 {1} 個字元"},"MaxLength":{"format":"{0} 的長度上限為 {1} 個字元"},"Pattern":{"format":"{0} 不符合要求的模式"},"Capslock":{"message":"Caps Lock 已啟用"},"isNumber":{"format":"{0} 必須為有效的數字"},"Input":{"UnknownRegex":{"invalidCharacters":"不能包含無效字元。"},"DefaultRegex":{"invalidCharacters":"不能包含無效字元: 反斜線 (\\),斜線符號 (/),星號 (*),問號 (?),單引號 (‘)、雙引號 (“),小於符號 (<),大於符號 (>),或是分隔號 (|)。"}},"MachineName":{"invalidCharacters":"不能包含無效字元: 反斜線 (\\),斜線符號 (/),星號 (*),問號 (?),單引號 (‘)、雙引號 (“),小於符號 (<),大於符號 (>),或是分隔號 (|)。","invalidCharactersWithSpace":"不能包含無效字元: 反斜線 (\\),斜線符號 (/),星號 (*),問號 (?),單引號 (‘)、雙引號 (“),小於符號 (<),大於符號 (>),分隔號 (|),或是空格 ( )。","whitespaceWillBeTrimmed":"將修剪前置和後端空白字元。","noStartWithPeriod":"不能以句點 (.) 字元開頭。"},"MatchField":{"noMatch":"此欄位必須符合 \"{0}\" 完全相同。"},"Pending":{"message":"正在驗證..."}},"Loading":{"message":"正在載入..."}},"InfoBubble":{"title":"檢視詳細資訊"}},"Badges":{"Preview":{"label":"預覽","tooltip":"此工具包含可供評估和測試的預覽功能。"},"Feedback":{"label":"意見反應"},"ComingSoon":{"label":"更多即將推出","tooltip":"已規劃在此工具的未來更新中加入其他功能。"},"New":{"label":"新增","tooltip":"此工具是新的或是已更新全新功能。","Feature":{"label":"新增"}},"Improvement":{"Feature":{"label":"改進"}},"BugFixes":{"Feature":{"label":"錯誤修正"}},"Common":{"learnMore":"深入了解","feedback":"提供意見反應給我們","Aria":{"labelFormat":"{0} {1}"},"Severities":{"warn":"警告","critical":"重要"}},"CredSSPEnabled":{"label":"CredSSP 已啟用","tooltip":"CredSSP 已在此伺服器上啟用。若要提高安全性,請在完成任何需要 CredSSP 的工作之後將其停用。"}},"ActiveDirectoryFormField":{"Button":{"Search":{"Label":"搜尋","PlaceHolder":"輸入搜尋名稱,支援萬用字元"}},"ResultTable":{"NameColumnHeader":"名稱","TypeColumnHeader":"類型","LoginNameColumnHeader":"登入名稱"},"SearchString":{"label":"輸入搜尋字串"},"Search":{"Progress":"正在搜尋 '{0}'"},"SizeLimit":{"Warning":"搜尋結果達到可顯示的最大數量 - 顯示前 {0}"},"ActiveDirectorySearchNotAvailable":{"message":"因為 Windows Admin Center 未加入 Active Directory 網域,無法搜尋 Active Directory。也有可能是因為您的帳號沒有 Active Directory 的讀取授權。"},"Error":{"message":"我們無法從 Active Directory 搜尋 \"{0}\"。錯誤: {1}"}},"Form":{"Checklist":{"indexDescription":"第 {0} 個 (共 {1} 個)"},"File":{"placeholder":"選擇要上傳的檔案","allowedFileTypesFormat":"允許的檔案類型: {0}","allFileTypes":"全部","removeButtonAriaLabelFormat":"移除 {0}","invalidFileTypeFormat":"不允許「{0}」個檔案","directoriesNotAllowed":"目錄不允許檔案上傳","invalidFileUnknownTypeFormat":"\"{0}\" 是不允許的檔案類型","removeButtonTooltip":"從清單中移除此項目","buttonText":{"singular":"選取檔案","plural":"選取檔案"},"dragDropText":{"singular":"或將檔案拖放至此","plural":"或將檔案拖放至此"},"selectedFilesFormat":{"plural":"已選取 {0} 個檔案","singular":"已選取 1 個檔案","none":"指定要匯出的檔案。","multipleEnabled":{"none":"指定要匯入的檔案。"}}},"Actions":{"clear":"清除","copy":"複製","copied":"已複製"},"SpinButton":{"increase":"將值增加 {0}","decrease":"將值減少 {0}"},"OrderedList":{"addButtonAriaLabel":"新增","addButtonTooltip":"將項目新增到清單","demoteButtonAriaLabel":"下移","demoteButtonTooltip":"在清單中將此項目下移","emptyValues":"清單不得包含任何空白的值","instructions":"","itemAriaDescription":"第 {0} 個 (共 {1} 個)","promoteButtonAriaLabel":"上移","promoteButtonTooltip":"在清單中將此項目上移","removeButtonAriaLabel":"移除","removeButtonTooltip":"從清單中移除此項目","addColumn":"新增欄位"},"Array":{"addButtonAriaLabel":"新增","addButtonTooltip":"將項目新增到清單","demoteButtonAriaLabel":"下移","demoteButtonTooltip":"在清單中將此項目下移","itemTitle":"項目 {0}","demoteButtonEvent":"項目在清單中下移。","demoteButtonPreventedEvent":"項目已位於清單底端。","itemAriaDescription":"第 {0} 個 (共 {1} 個)","promoteButtonAriaLabel":"上移","promoteButtonTooltip":"在清單中將此項目上移","promoteButtonEvent":"項目在清單中上移。","promoteButtonPreventedEvent":"項目已位於清單頂端。","removeButtonAriaLabel":"移除","removeButtonTooltip":"從清單中移除此項目","removeButtonEvent":"項目已從清單中移除。"},"List":{"addButtonAriaLabel":"新增","addButtonTooltip":"將項目新增到清單","emptyValues":"清單不得包含任何空白的值","itemAriaLabel":"{0}; 項目 {1}/{2}","removeButtonAriaLabel":"移除","removeButtonTooltip":"從清單中移除此項目"},"ConfirmationDialog":{"unsavedChangesCancelText":"捨棄變更","unsavedChangesConfirmText":"繼續編輯","unsavedChangesMessage":"要繼續編輯或捨棄您的變更嗎?","unsavedChangesTitle":"您有尚未儲存的變更"},"SearchField":{"count":"找到 {0} 筆結果。","Searching":{"label":"正在搜尋"}},"Common":{"SelectAll":{"label":"全選"}},"Date":{"InvalidDate":"請以此格式提供有效的日期:{0}","InvalidDateTime":"請以此格式提供有效的日期/時間:{0},HH:mm:ss","MinDateErrorFormat":"日期不能早於 {0}","MaxDateErrorFormat":"日期不能晚於 {0}"},"Time":{"InvalidTime":"請提供有效時間的格式:'hh:mm:ss AM/PM'、'hh:mm AM/PM'、'HH:mm:ss' 或 HH:mm","MinTimeErrorFormat":"時間不能早於 {0}","MaxTimeErrorFormat":"時間不能晚於 {0}"},"DateTimeRange":{"Custom":{"label":"自訂"},"StartTime":{"label":"開始時間"},"EndTime":{"label":"結束時間"},"Invalid":{"StartTime":"無效的開始時間,其不應該在結束時間之後。","EndTime":"無效的結束時間,其不應該在開始時間之前。"}}},"HtmlScanner":{"UnrecognizedClass":{"messageFormat":"CSS 類別 \"{0}\" 是無法辨識的 SME 樣式。錯誤使用已插入 SME 的類別 (具有 'sme-' 首碼的項目) 可能會導致樣式不一,甚至會在往後的 SME 殼層與 SDK 反覆項目引起中斷性變更。"}},"Decorators":{"Deprecated":{"messageFormat":"\"{0}\" 已在 {1} 淘汰。{2} {3}","alternateSignatureFormat":"改用 \"{0}\"。","CssClass":{"messageFormat":"CSS 類別 \"{0}\" 已在 {1} 淘汰。{2} {3}"}},"Obsolete":{"messageFormat":"\"{0}\" 已在 {1} 淘汰,且即將移除。{2} {3}","alternateSignatureFormat":"改用 \"{0}\"。"}},"DataTable":{"NoRecordsFound":"找不到任何記錄","removeThisRow":"移除此列。","Loading":"正在載入...","aria":{"label":{"selectAllItems":"選取所有項目","unselectAllItems":"取消選取所有項目","expand":"展開","collapse":"摺疊","nItemsInGroup":"包含 {0} 個項目的群組","oneItemInGroup":"包含 1 個項目的群組","nSubNodesInTreeNode":"'包含 {0} 個子節點的樹狀節點","oneSubNodeInTreeNode":"'包含 1 個子節點的樹狀節點"}},"Templates":{"Tags":{"Header":"標籤"}},"Aria":{"Label":{"rowSelection":"列 {0} 選取範圍","ascendSortOrderButton":"遞增排序順序的按鈕","descendSortOrderButton":"遞減排序順序的按鈕"}},"DownloadService":{"inProgressTitle":"正在下載資料表檢視","inProgressContent":"正在下載 {0} 的資料表檢視...","successTitle":"已成功下載資料表檢視","successContent":"已成功下載{0}的資料表檢視。檢查您的下載資料夾。","failedTitle":"無法下載資料表檢視","failedContent":"無法下載{0}的資料表檢視。錯誤訊息: {1}"}},"Details":{"AriaDescription":"按下 tab 鍵,然後使用方向鍵在此窗格內瀏覽。"},"Documentation":{"Tabs":{"Overview":{"label":"概觀"},"API":{"label":"API"},"Examples":{"label":"範例"}},"Overview":{"liveExampleHeader":"即時範例"}},"LoadingWheel":{"ARIA":{"loading":"正在載入"}},"DoughnutChart":{"Aria":{"RefreshInterval":"環圈圖每隔 {0} 重新整理","CenterText":"圖表總計"}},"Resizer":{"Splitter":"分隔器"},"MasterView":{"oneItem":"1 個項目","items":"{0} 個項目","results":"找到 {0} 筆結果。","selected":"已選取 {0} 個","selectedAria":"清除 {0} 個已選取的項目","selectedTitle":"清除選取項目","refresh":{"title":"重新整理","ariaLabel":{"header":"重新整理 {0}","noHeader":"重新整理"}},"columnPicker":{"title":"欄位選擇器"},"filter":{"title":"篩選"},"group":{"title":"群組"}},"NodeCredentialsForm":{"deploymentGuideMessage":"若要使用 Windows 帳戶進行單一登入,您可能需要設定 Kerberos 限制委派。","refreshMessage":"若要改回使用您的 Windows 帳戶,請重新整理頁面。","ApplyToAll":{"label":"請使用這些認證進行所有連線。","warning":"這將會覆寫您先前儲存的任何認證。"},"ConstrainedDelegation":{"title":"Kerberos 委派"},"Kerberos":{"link":{"text":"深入了解","href":"https://go.microsoft.com/fwlink/?linkid=863170"}},"lapsLocalAdminName":{"label":"本機系統管理員帳戶名稱","placeholder":"系統管理員"},"Password":{"label":"密碼","placeholder":"請輸入密碼。"},"trustedHosts":{"configureMessage":"您的環境可能需要設定 WinRM TrustedHosts 才能連線到受管理節點。","title":"設定 TrustedHosts"},"UseGlobalAuth":{"labelFormat":"使用 {0} 進行此連線","myWindowsAccount":"我的 Windows 帳戶","myLinuxAccount":"我的 Linux 帳戶","warning":"這些認證只會在這個工作階段儲存。"},"UseLaps":{"label":"搭配隨機化密碼使用區域系統管理員密碼解決方案 (必須已設定)"},"UsePerNodeAuth":{"label":"使用另一個帳戶進行此連線"},"Username":{"label":"使用者名稱","placeholder":"輸入使用者名稱..."}},"Navigation":{"NavigationTitleReturnTypeError":{"message":"具有不支援物件類型的 navigationTitle 回呼失敗。"}},"Wizard":{"validating":"正在驗證","stageName":"下一步: {0}","disabledStepAlert":"根據之前輸入的內容,您無需完成此步驟。請繼續進行下一步。","expandStepsList":"展開步驟清單","collapseStepsList":"摺疊步驟清單","Exit":{"Dialog":{"title":"結束確認","message":"是否要立即結束?"}},"Busy":{"Dialog":{"title":"您即將中斷重要程序","message":"重要的程式目前正在執行中。您確定要離開嗎?"}},"PreviousStep":{"Dialog":{"title":"上一步確認","message":"不能導航到已完成步驟。"}},"Lite":{"Actions":{"previous":"上一步","next":"下一步"},"FooterTemplate":{"review":"檢閱 + 建立","exit":"結束"}}},"TagsInput":{"RemoveTag":{"labelFormat":"移除 \"{0}\" 標籤"},"AddTag":{"label":"新增標籤"},"Instructions":{"label":"使用 ENTER 鍵新增標籤。使用 ',' (英文逗號) 分隔多個標籤項目。"}},"TooltipZone":{"Aria":{"keyShortcuts":"如需詳細資訊,請按 ALT + F1"}},"AlertBar":{"Warning":"警告","Information":"資訊","Success":"成功","Error":"錯誤","InProgress":"進行中","DismissAriaLabel":"關閉警示","Dismiss":"關閉","Expand":"展開"},"QueryEditor":{"ColumnFilter":"欄位篩選器","Delete":"刪除","New":"新增篩選器","Reset":"重設篩選器","Unset":"未設定","Selected":"已選取 {0} 個","ReadOnly":"唯讀","Irremovable":"不可移除","RemovableHint":"使用 DELETE 鍵刪除項目","SelectKey":"選取金鑰","SelectValue":"選取值"},"ColumnPicker":{"Header":"自訂表格","Pivot":{"chooseColumn":"選取欄位","groupBy":"群組依據"}},"Lint":{"Accessibility":{"MixedUseZone":"區域不得有區域子系,以及在相同層級中為可設定焦點元素的子系。請以類別 class sme-focus-zone 包裝所有可設定焦點元素來避免混用區域。","AnchorRoleOrHref":"錨點標籤需要角色屬性或 href。","AnchorTabIndexOrHref":"錨點標籤需要 href 或 tabindex = 0,才可設定焦點。","DialogInForm":"不要在對話方塊以外放置表單元素。","InputWithoutForm":"不要在表單以外使用輸入、選取或 textarea 元素。"}},"StackedHorizontalBarChart":{"totalLabel":"總計","Aria":{"roleDescription":"橫條圖"}},"Connectivity":{"Restricted":{"title":"受限制的網際網路存取","Azure":{"text":"此動作需要連線到 Microsoft Azure,但 Windows Admin Center 設定了受限制的網際網路連線能力。"},"Offline":{"text":"無法達到 {0}。Windows Admin Center 設定了受限制的網際網路連線能力。"},"ChangeSettings":{"text":"變更連線設定。"}}},"Layout":{"Edit":"編輯","Done":"完成"},"SchemaForm":{"NoSchemaMessage":{"Row1":"首先將「結構描述」和「資料」屬性設為結構描述驅動型表單元件。","Row2":"您也可以按一下底下的 [編輯] 按鈕,建立新的結構描述或編輯現有的結構描述。","Row3":"在生產模式下將不會顯示 [編輯] 按鈕。"},"EditButton":{"Text":"編輯"},"Editor":{"Title":"結構描述驅動型表單編輯器","SwitchToCodeViewMessage":"別忘了切換到 [程式碼] 檢視以取得編輯後的結構描述程式碼。","PreviewForm":{"Title":"預覽","EmptySchemaMessage":"結構描述中未加入任何屬性。請選取 [結構描述] 樹狀節點,再按一下 [+] 按鈕以加入一些屬性。","ValidationResult":{"Passed":"通過","Failed":"失敗","Title":"表單驗證: "}},"Welcome":{"Title":"歡迎使用結構描述驅動型表單編輯器","Row1":"結構描述驅動型表單利用表單結構描述,轉譯表單 UI 以及處理 UI 與表單檢視模型之間的雙向繫結。","Row2":"此工具可協助您利用表單結構描述建構表單 UI。","Row3":"您可以透過結構描述樹狀結構 ([視覺化] 檢視) 或結構描述程式碼編輯器 ([程式碼] 檢視) 編輯表單結構描述。","Row4":"您可前往 [資料] 索引標籤以查看表單 JSON 資料產生的方式,或是直接編輯表單 JSON 資料後再查看表單 UI 將如何轉譯該資料。","Row5":"您可前往 [表單檢視模型協定] 索引標籤以產生表單檢視模型協定,然後在您的原始程式碼中使用該協定對表單檢視模型進行強式類型檢查。","Row6":"若想要快速入門,您可以在編輯器 UI 中央的樹狀結構中選取 [結構描述] 節點,然後按一下 [+] 按鈕以由該處加入一些屬性。","Row7":"您隨時皆可按一下 [套用結構描述並加以預覽] 按鈕,查看表單會如何根據您建構的結構描述進行轉譯。","Row8":"編輯結構描述完成後,請切換到 [程式碼] 檢視以複製產生的結構描述程式碼。","Row9":"若要使用您剛建立或更新的結構描述轉譯表單,請將結構描述程式碼存回您的原始程式碼或放到任何不致丟失的位置,然後將該結構描述繫結至結構描述表單元件。","Row10":"結構描述驅動型表單的一個終極訣竅: 您可以使用程式碼動態建構結構描述物件。","Row11":"敬請親自體驗。"},"SchemaView":{"Title":"檢視:","Visual":"視覺化","Code":"程式碼"},"ApplySchemaButton":{"Text":"套用結構描述並加以預覽"},"GoToCodeViewButton":{"Text":"移至 [程式碼] 檢視"},"CloseButton":{"Text":"關閉"},"SchemaTree":{"Welcome":{"Row1":"結構描述樹狀結構是供您建構結構描述的地方。除了 [結構描述] 根節點外,每個樹狀節點各代表某一屬性結構描述。","Row2":"字串及數字之類的簡單屬性不能有子系屬性。","Row3":"物件屬性可以有多個子系屬性,用於定義各物件屬性的結構描述。","Row4":"陣列屬性只能有一個子系屬性,用於定義陣列項目結構描述。","Row5":"若想要快速入門,您可以在上面的樹狀結構中選取 [結構描述] 節點,然後按一下 [+] 按鈕以由該處加入一些屬性。"}},"PropertyForm":{"Header":"在這裡定義屬性結構描述","Footer":"順道一提,即便此表單是由結構描述驅動型表單進行轉譯,此表單的結構描述乃為動態產生。","DataType":"資料類型","Advance":"進階","Required":"必要項","DefaultValue":"預設值","Description":"描述","HideCondition":"隱藏條件","ConditionForDisabled":"符合此條件時即停用","CustomValidation":"自訂驗證","ReadonlyCondition":"唯讀條件","MoreOptions":"更多選項","EmptyByDefault":"預設情況下使用空值","NoOptionSchema":"此類型與格式未定義「選項」結構描述而無法轉譯各欄位,所以請直接在這裡編輯「選項」JSON。","Welcome":{"Row1":"按一下 [結構描述] 節點旁的 [+] 按鈕以加入屬性。","Row2":"或者選擇任何子系屬性結構描述節點,編輯該節點的屬性結構描述。","Row3":"每個屬性都對應到 UI 中的某一表單欄位。","Row4":"按一下表單屬性樹狀節點,接著即可編輯表單屬性的詳細資料。","Row5":"您還可以管理各個屬性的順序或移除任何屬性。","Row6":"若將屬性設為「物件」類型,您便可再為其加入更多子系屬性。","Row7":"若將屬性設為「陣列」類型,您即必須定義陣列項目結構描述。"},"Type":{"Description":"這表示可供用於 JSON 資料的基本資料類型。例如,表單資料中的字串無論是使用文字方塊或下拉式清單呈現,當成表單資料來看終究仍是字串。"},"Format":{"Description":"同屬某一資料類型的不同表單欄位可能需要使用不同的 UI (格式) 與使用者互動。例如,有時我們會使用文字方塊以供輸入字串,或是使用下拉式方塊讓使用者從指定的選項中選擇任一字串。"},"Name":{"Description":"這是表單 JSON 資料中所使用的屬性名稱。"},"Label":{"Description":"這段文字會顯示為表單欄位的標籤。"},"MultipleLine":{"Title":"多行"},"ObjectType":{"ColumnCount":"欄數","Collapsible":"可摺疊","HideHeader":"隱藏標題","Yes":"是","State":"狀態","Collapsed":"已摺疊","Expanded":"已展開"},"Options":{"StaticOptions":"靜態選項","DynamicOptions":"動態選項 - 繫結運算式","Label":"標籤","Value":"值"},"CodeEditor":{"Language":{"label":"語言","description":"要在編輯器中顯示的程式碼語言。應選擇摩納哥程式碼編輯器中內建的任一種語言。"},"Options":{"label":"摩納哥編輯器選項","description":"選項在建立時,拒絕傳送至摩納哥編輯器。"}}},"SchemaText":{"Message1":"您可以直接在這裡編輯結構描述程式碼。編輯完成後,請套用結構描述以預覽表單。","Message2":"編輯完成後,請別忘了複製該結構描述程式碼並貼至您的原始程式碼或任何能夠予以儲存的位置。","LintMessage":"順道一提,您可能需要此程式碼......","CopyToClipboardButton":{"Text":"將結構描述複製到剪貼簿"}},"ViewModel":{"Message":"* 下面的文字方塊只是為了便於您選取全部內容並複製。在這裡進行任何編輯都不會有任何作用。","GenerateButton":{"Text":"產生"}},"ResourceStringPicker":{"ActualTextPrefix":"實際文字: ","InvalidResourceKey":"資源識別碼無效","NoResourceKeyMessage":"請在這裡提供資源識別碼。","CannotFindResourceKey":"找不到資源識別碼: {0}","WrongFormatActualText":"結構描述中的實際文字格式錯誤。"}}},"ActionButton":{"Templates":{"EditTags":{"Label":"編輯標籤"}},"OpenInANewWindow":{"label":"彈出至新視窗","title":"彈出至新視窗"}},"Calendar":{"PreviousMonth":"上個月","NextMonth":"下個月","goToToday":"移至今日","Heading":{"Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日"},"Day":{"Sunday":"星期日","Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六"},"Month":{"1":"一月","2":"二月","3":"三月","4":"四月","5":"五月","6":"六月","7":"七月","8":"八月","9":"九月","10":"十月","11":"十一月","12":"十二月"},"AriaLabel":{"Required":"{0}為必要。"}},"Clock":{"Headings":{"hour":"小時","minute":"分鐘","meridiem":"上午/下午"},"Meridiem":{"AM":{"label":"上午"},"PM":{"label":"下午"}},"AriaLabel":{"Required":"{0}為必要。"}},"Overlay":{"closeErrorTitle":"無法關閉重疊檢視","openErrorTitle":"無法開啟重疊檢視"},"StatusIcon":{"Critical":"嚴重","Error":"錯誤","Warning":"警告","Progress":"進度","Success":"成功","Info":"資訊","Unknown":"未知"},"PivotTab":{"HasError":"此索引標籤有錯誤。"},"PropertyGrid":{"InternalLink":{"label":"內部連結 {0}"},"ExternalLink":{"label":"外部連結 {0}"}}}}}}
|
|
@@ -137,7 +137,7 @@ export class ActionBarComponent extends ActionContainerComponent {
|
|
|
137
137
|
*/
|
|
138
138
|
ngOnDestroy() {
|
|
139
139
|
super.ngOnDestroy();
|
|
140
|
-
this.layoutSubscription
|
|
140
|
+
this.layoutSubscription?.unsubscribe();
|
|
141
141
|
}
|
|
142
142
|
/**
|
|
143
143
|
* On layout changed event handler, occurs every time the layout has been changed.
|
|
@@ -460,4 +460,4 @@ __decorate([
|
|
|
460
460
|
type: HostListener,
|
|
461
461
|
args: ['window:resize']
|
|
462
462
|
}] }); })();
|
|
463
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2FjdGlvbnMvY29udGFpbmVycy9hY3Rpb24tYmFyL2FjdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixlQUFlLEVBRWYsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUd6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDekJ2RSxtREFHNEQ7SUFGMUQsZ05BQWUsZUFBQSw0QkFBcUIsQ0FBQSxJQUFDO0lBRXFCLGlCQUEwQjs7OztJQUFwRix5RUFBeUQ7SUFIa0IsOEJBQWE7OztBRDJCNUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztH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O1lBV3RDLFFBQVE7a0JBRFAsWUFBWTttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWWllbGQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy95aWVsZC5kZWNvcmF0b3InO1xyXG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL2FjY2Vzc2liaWxpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL2xvZ2dpbmcnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uLy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2l0ZW1zL2FjdGlvbi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lck9yaWVudGF0aW9uIH0gZnJvbSAnLi4vYWN0aW9uLWNvbnRhaW5lcic7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1jb250YWluZXIuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgQWN0aW9ucyBAaWQgc21lLWFjdGlvbnN9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgRGVmaW5lZCBhY3Rpb25zIGZyb20gY29tcG9uZW50IEBpZCBkZWZpbmVkLWFjdGlvbnMtZnJvbS1jb21wb25lbnR9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGVmaW5lZC1hY3Rpb25zLWZyb20tY29tcG9uZW50LmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIERlZmluZWQgYWN0aW9ucyBmcm9tIGh0bWwgQGlkIGRlZmluZWQtYWN0aW9ucy1mcm9tLWh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGVmaW5lZC1hY3Rpb25zLWZyb20taHRtbC5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9ucy1leGFtcGxlLmNvbXBvbmVudC50c31cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBEZWZpbmVkIGFjdGlvbnMgZnJvbSBib3RoIEBpZCBkZWZpbmVkLWFjdGlvbnMtZnJvbS1ib3RofVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2RlZmluZWQtYWN0aW9ucy1mcm9tLWJvdGguY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbnMtZXhhbXBsZS5jb21wb25lbnQudHN9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQWxsIGJ1dHRvbnMgZGlzYWJsZWQgQGlkIGFsbC1idXR0b25zLWRpc2FibGVkfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FsbC1idXR0b25zLWRpc2FibGVkLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIE1vZGVsIGRyaXZlbiBhY3Rpb24gYmFyIEBpZCBtb2RlbC1kcml2ZW59XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbW9kZWwtZHJpdmVuLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIENvbnRhaW5lciBlbWJlZGRlZCBhY3Rpb24gYmFyIEBpZCBjb250YWluZXItZW1iZWRkZWQtYWN0aW9uLWJhcn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9jb250YWluZXItZW1iZWRkZWQtYWN0aW9uLWJhci5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9ucy1leGFtcGxlLmNvbXBvbmVudC50c31cclxuICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWFjdGlvbi1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25CYXJDb21wb25lbnQgZXh0ZW5kcyBBY3Rpb25Db250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJvdGVjdGVkIGxvZ1NvdXJjZU5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgdGhhdCB3aGVuIHNldCB3aWxsIGRpc3BsYXkgbWluaW1hbCBVSSBmb3IgdGhlIGFjdGlvbiBiYXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgY29tcGFjdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0NvbXBhY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdHRyaWJ1dGUgdGhhdCBzZXRzIHZlcnRpY2FsIG9yIGhvcml6b250YWwgb3JpZW50YXRpb24gd2hlcmUgdmVydGljYWwgZGlzcGxheXMgYWN0aW9uIGJhciBmcm9tIHRvcCB0byBib3R0b20gb2YgcGFnZVxyXG4gICAgICogYW5kIGhvcml6b250YWwgZGlzcGxheXMgYWN0aW9uIGJhciBmcm9tIGxlZnQgdG8gcmlnaHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgb3JpZW50YXRpb24oKTogQWN0aW9uQ29udGFpbmVyT3JpZW50YXRpb24ge1xyXG4gICAgICAgIHJldHVybiAndmVydGljYWwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBBY3Rpb25JdGVtIG9iamVjdHMgdGhhdCB3ZSB3YW50IHRvIHBlcmZvcm0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkaXNwbGF5ZWRBY3Rpb25zOiBBY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgQWN0aW9uSXRlbSBvYmplY3RzIHRoYXQgYXJlIGNvbGxhcHNlZCBpbnRvIGRyb3Bkb3duLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJheUFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCBkaXNwbGF5ZWQgZm9yIHRyYXkgZHJvcGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3JlQWN0aW9uc0Rpc3BsYXk6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIG9uIGFjdGlvbiBtZW51IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWN0aW9uc0FyaWFMYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmxhZyB0byBtYWtlIHN1cmUgaWYgdGhlIGhlaWdodCBvZiB0aGUgYmFyIGlzIGN1cnJlbnRseSBncmVhdGVyIHRoYW4gdGhlIGF2YWlsYWJsZSBoZWlnaHQgb2YgdGhlIHRhcmdldCxcclxuICAgICAqIHRoZW4gdGhlIGl0ZW1zIGFyZSBhZGp1c3RlZCBhY2NvcmRpbmdseS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhlaWdodE92ZXJmbG93OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnV0dG9uIGVsZW1lbnQgZm9yIHRyYXkgZHJvcGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3JlQnV0dG9uRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2NhbGl6ZWQgc2V0IG9mIHN0cmluZ3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdHJpbmdzID0gTXNmdFNtZS5nZXRTdHJpbmdzPFN0cmluZ3M+KCk7XHJcbiAgICBwcml2YXRlIGlzQ29tcGFjdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBob3ZlcmVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgYXR0YWNoZWRUbzogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHNob3VsZFNob3cgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBsYXlvdXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IGZpcmVkIHdoZW4gbGlzdCBvZiBBY3Rpb25JdGVtcyBjaGFuZ2VzLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhY3Rpb25zVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0IGlzQXR0YWNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYXR0YWNoZWRUbyk7XHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uQmFyRWxlbWVudCcpIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3BEb3duQnV0dG9uJykgcHJpdmF0ZSBkcm9wRG93bkJ1dHRvbkVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEcm9wZG93bkNvbXBvbmVudCBlbGVtZW50IGZvciBhY3Rpb24gdHJheS5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcERvd24nKSBwdWJsaWMgZHJvcERvd246IERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3IgZm9yIHRoZSBBY3Rpb25CYXJDb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGl0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQsIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGl0ZXJhYmxlRGlmZmVycywgaW5qZWN0b3IpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtcG9zaXRpb24tc3RyZXRjaC1oJyk7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1sYXlvdXQtYWN0aW9uLWJhcicpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYXJyYW5nZS1zdGFjay1oJyk7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1hcnJhbmdlLXdzLW5vd3JhcCcpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYXJyYW5nZS1vdmVyZmxvdy1zaG93Jyk7XHJcbiAgICAgICAgcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScsIDApO1xyXG4gICAgICAgIHRoaXMubW9yZUFjdGlvbnNEaXNwbGF5ID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5tb3JlO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uc0FyaWFMYWJlbCA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uYWN0aW9ucztcclxuXHJcbiAgICAgICAgaWYgKGxheW91dCkge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dFN1YnNjcmlwdGlvbiA9IGxheW91dC5sYXlvdXRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIG91dCBBY3Rpb25JdGVtIG9iamVjdHMgdG8gYmUgaGlkZGVuLlxyXG4gICAgICogQHBhcmFtIGl0ZW1zIEFjdGlvbkl0ZW0gb2JqZWN0cyB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIExpc3Qgb2YgdW5oaWRkZW4gQWN0aW9uSXRlbSBvYmplY3RzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGlkZGVuRmlsdGVyKGl0ZW1zOiBBY3Rpb25JdGVtW10pOiBBY3Rpb25JdGVtW10ge1xyXG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5oaWRkZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgdHJpZ2dlcmVkIGFmdGVyIHZpZXcgaW5pdGlhbGl6ZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayB0cmlnZ2VyZWQgYWZ0ZXIgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9uIGxheW91dCBjaGFuZ2VkIGV2ZW50IGhhbmRsZXIsIG9jY3VycyBldmVyeSB0aW1lIHRoZSBsYXlvdXQgaGFzIGJlZW4gY2hhbmdlZC5cclxuICAgICAqL1xyXG4gICAgQFlpZWxkKClcclxuICAgIHByaXZhdGUgb25MYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb3N0IGxpc3RlbmVycyBmb3IgZm9jdXMgZXZlbnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbkZvY3VzRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgLy8gb24gZm9jdXMgaW4vb3V0IGNoYW5nZSBmb2N1c2VkIHN0YXRlXHJcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZXZlbnQudHlwZSA9PT0gJ2ZvY3VzaW4nIHx8ICh0aGlzLmZvY3VzZWQgJiYgZXZlbnQudHlwZSAhPT0gJ2ZvY3Vzb3V0Jyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVIZWlnaHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvc3QgbGlzdGVuZXJzIGZvciBrZXlib2FyZCBldmVudHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uVG9nZ2xlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGFjY2Vzc2liaWxpdHksIHRha2UgZm9jdXMgdG8gdGhlIG1vcmUgYnV0dG9uIGFmdGVyIGEgc2VsZWN0aW9uIGluIGRyb3Bkb3duIGVsZW1lbnRzLlxyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xyXG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRW50ZXI6IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyb3BEb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9yZUJ1dHRvbkVsZW1lbnQgJiYgdGhpcy5kcm9wRG93bi5pc09wZW4gJiYgdGhpcy5kcm9wRG93bi5jb250ZW50RWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vcmVCdXR0b25FbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wRG93bi5vblRvZ2dsZWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3BlbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJsdXIvZm9jdXMgdG8gcmVmcmVzaCBmb2N1cyAtIHRoaXMgd2lsbCBtYWtlIHRoZSB0b29sdGlwIGRpc2FwcGVhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWxlIG1lbnUgaXMgb3BlbiAoYi9jIHRvb2x0aXAgd2lsbCBibG9jayB2aWV3KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcERvd25CdXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcERvd25CdXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vcmVCdXR0b25FbGVtZW50ID0gPEhUTUxFbGVtZW50PmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdCBsaXN0ZW5lcnMgZm9yIG1vdXNlIGV2ZW50cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbk1vdXNlRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgLy8gb24gbW91c2UgZW50ZXIvbGVhdmUgY2hhbmdlIGhvdmVyZWQgc3RhdGVcclxuICAgICAgICB0aGlzLmhvdmVyZWQgPSBldmVudC50eXBlID09PSAnbW91c2VlbnRlcicgfHwgKHRoaXMuaG92ZXJlZCAmJiBldmVudC50eXBlICE9PSAnbW91c2VsZWF2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb3N0IGxpc3RlbmVyIGZvciBwYWdlIHJlc2l6ZSBldmVudC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcbiAgICBvblJlc2l6ZSgpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvbkJhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgdHJpZ2dlcmVkIGFmdGVyIGNoaWxkIEFjdGlvbkl0ZW0gY2hhbmdlcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQWN0aW9uSXRlbUNoYW5nZWQoKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVIZWlnaHQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBdHRhY2hlZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1Zpc2libGUgJiYgKHRoaXMuc2hvdWxkU2hvdyB8fCB0aGlzLmZvY3VzZWQgfHwgdGhpcy5ob3ZlcmVkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvdmVyZmxvdycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYW5pbWF0aW9uLWZhZGUtb3V0LXhzJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1hbmltYXRpb24tZmFkZS1pbi14cycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvcGFjaXR5JywgMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYW5pbWF0aW9uLWZhZGUtb3V0LXhzJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gc2V0IHZpc2liaWxpdHkgZm9yIEFjdGlvbkJhckNvbXBvbmVudC5cclxuICAgICAqIEBwYXJhbSBpc1Zpc2libGUgVHJ1ZSBmb3IgdmlzaWJsZSwgZmFsc2UgZm9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFZpc2liaWxpdHkoaXNWaXNpYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBpc1Zpc2libGU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVIZWlnaHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0byBzZXQgdmlzaWJpbGl0eSBmb3IgQWN0aW9uQmFyQ29tcG9uZW50LlxyXG4gICAgICogQHBhcmFtIHNob3VsZFNob3cgVHJ1ZSBmb3Igc2hvd2luZywgZmFsc2UgZm9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNob3dIaWRlKHNob3VsZFNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNob3VsZFNob3cgPSBzaG91bGRTaG93O1xyXG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBvc2l0aW9ucyBnaXZlbiBIVE1MRWxlbWVudCB0byBiZSByZWxhdGl2ZSB0byBpdHMgc2libGluZyBlbGVtZW50LlxyXG4gICAgICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB0byByZXBvc2l0aW9uLlxyXG4gICAgICogQHBhcmFtIGNvbXBhY3QgQm9vbGVhbiBmbGFnIHRvIHNldCB3aGV0aGVyIG9yIG5vdCBBY3Rpb25CYXJDb21wb25lbnQgc2hvdWxkIGJlIGNvbXBhY3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXBvc2l0aW9uUmVsYXRpdmVUbyhlbGVtZW50OiBIVE1MRWxlbWVudCwgY29tcGFjdDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmIChNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKGVsZW1lbnQub2Zmc2V0UGFyZW50KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaXNTaWJsaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3MuaXRlbShpKTtcclxuICAgICAgICAgICAgaWYgKHNpYmxpbmcgPT09IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaXNTaWJsaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNTaWJsaW5nKSB7XHJcbiAgICAgICAgICAgIExvZ2dpbmcubG9nRXJyb3IoJ0FjdGlvbkJhci5yZXBvc2l0aW9uUmVsYXRpdmVUbycsICdBY3Rpb25CYXIgY2FuIG9ubHkgYmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0byBhIHNpYmxpbmcgZWxlbWVudC4nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB3YXNBdHRhY2hlZCA9IHRoaXMuaXNBdHRhY2hlZDtcclxuICAgICAgICB0aGlzLmF0dGFjaGVkVG8gPSBlbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAoIXdhc0F0dGFjaGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0hpZGUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gd2hlbiBwb3NpdGlvbmluZyBvbiBhbiBlbGVtZW50LCB1c2UgY29tcGFjdCBzZXR0aW5ncyBpZiBkZXNpcmVkXHJcbiAgICAgICAgdGhpcy5pc0NvbXBhY3QgPSBjb21wYWN0O1xyXG5cclxuICAgICAgICAvLyBjaGFuZ2UgY2xhc3NlcyB0byBhY2NvdW50IGZvciBkaWZmZXJlbnQgcG9zaXRpb25pbmcgbWVjaGFuaXNtXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLXBvc2l0aW9uLXN0cmV0Y2gtaCcpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWxheW91dC1hYnNvbHV0ZScpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWJhY2tncm91bmQtY29sb3ItYmFzZScpO1xyXG5cclxuICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IHBvc2l0aW9uXHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcclxuICAgICAgICBjb25zdCBtYXJnaW4gPSB7XHJcbiAgICAgICAgICAgIHRvcDogcGFyc2VJbnQoc3R5bGUubWFyZ2luVG9wLCAxMCksXHJcbiAgICAgICAgICAgIGJvdHRvbTogcGFyc2VJbnQoc3R5bGUubWFyZ2luQm90dG9tLCAxMCksXHJcbiAgICAgICAgICAgIGxlZnQ6IHBhcnNlSW50KHN0eWxlLm1hcmdpbkxlZnQsIDEwKSxcclxuICAgICAgICAgICAgcmlnaHQ6IHBhcnNlSW50KHN0eWxlLm1hcmdpblJpZ2h0LCAxMClcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGJvcmRlciA9IHtcclxuICAgICAgICAgICAgdG9wOiBwYXJzZUludChzdHlsZS5ib3JkZXJUb3AsIDEwKSxcclxuICAgICAgICAgICAgYm90dG9tOiBwYXJzZUludChzdHlsZS5ib3JkZXJCb3R0b20sIDEwKSxcclxuICAgICAgICAgICAgbGVmdDogcGFyc2VJbnQoc3R5bGUuYm9yZGVyTGVmdCwgMTApLFxyXG4gICAgICAgICAgICByaWdodDogcGFyc2VJbnQoc3R5bGUuYm9yZGVyUmlnaHQsIDEwKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlV2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoIC0gYm9yZGVyLmxlZnQgLSBib3JkZXIucmlnaHQgLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodDtcclxuICAgICAgICBjb25zdCBhdmFpbGFibGVIZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAtIGJvcmRlci5ib3R0b20gLSBtYXJnaW4uYm90dG9tO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5taW4oTWF0aC5tYXgoYXZhaWxhYmxlV2lkdGggLyAyLCAzMDApLCBhdmFpbGFibGVXaWR0aCk7XHJcbiAgICAgICAgY29uc3QgcmlnaHQgPSBlbGVtZW50Lm9mZnNldFBhcmVudC5jbGllbnRXaWR0aCAtIChlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoKTtcclxuICAgICAgICBjb25zdCB0b3AgPSBlbGVtZW50Lm9mZnNldFRvcCArIGJvcmRlci50b3AgKyBtYXJnaW4udG9wO1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3JpZ2h0JywgYCR7cmlnaHR9cHhgKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3RvcCcsIGAke3RvcH1weGApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBgdW5zZXRgKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ21heC13aWR0aCcsIGAke3dpZHRofXB4YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdtYXgtaGVpZ2h0JywgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdqdXN0aWZ5LWNvbnRlbnQnLCBgZmxleC1lbmRgKTtcclxuXHJcbiAgICAgICAgLy8gaWYgdGhlIGhlaWdodCBvZiB0aGUgYmFyIGlzIGN1cnJlbnRseSBncmVhdGVyIHRoYW4gdGhlIGF2YWlsYWJsZSBoZWlnaHQgb2YgdGhlIHRhcmdldCxcclxuICAgICAgICAvLyB0aGVuIG1ha2Ugc3VyZSBkaXNwbGF5ZWQgaXRlbXMgYXJlIGFkanVzdGVkIGFjY29yZGluZ2x5XHJcbiAgICAgICAgdGhpcy5oZWlnaHRPdmVyZmxvdyA9IHBhcnNlSW50KHN0eWxlLmhlaWdodCwgMTApID4gYXZhaWxhYmxlSGVpZ2h0O1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25CYXIoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0byB1cGRhdGUgaG93IEFjdGlvbkJhckNvbXBvbmVudCBpcyBkaXNwbGF5ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGRhdGVBY3Rpb25CYXIoKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRGaWxsID0gMDtcclxuXHJcbiAgICAgICAgLy8gU2V0IHVwIHRoZSBmb2xsb3dpbmcgc3R5bGVzIGR1cmluZyB0aGUgVUkgY2FsY3VsYXRpb24gdG8gbWFrZSBzdXJlIHRoZSBodG1sIGVsZW1lbnQgZmxpY2tlcmluZyB3b24ndCBleGNlZWRcclxuICAgICAgICAvLyB0aGUgYWN0aW9uIGJhciBjb250YWluZXIuXHJcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBpbmxpbmUgc3R5bGVzIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciB0aGUgVUkgY2FsY3VsYXRpb24gaXMgZG9uZS5cclxuICAgICAgICBjb25zdCBob3N0RWxlbWVudCA9IDxIVE1MRWxlbWVudD50aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob3N0RWxlbWVudCwgJ292ZXJmbG93JywgYGhpZGRlbmApO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNBdHRhY2hlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbGVtZW50LCAncG9zaXRpb24nLCBgcmVsYXRpdmVgKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvcGFjaXR5Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXllZEFjdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLnRyYXlBY3Rpb25zID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShob3N0RWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgcGFkZGluZyA9IHBhcnNlSW50KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctbGVmdCcpLCAxMCkgKyBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXJpZ2h0JyksIDEwKTtcclxuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9ICh0aGlzLmlzQXR0YWNoZWQgPyBwYXJzZUludChzdHlsZS5tYXhXaWR0aCwgMTApIDogaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGgpIC0gcGFkZGluZztcclxuXHJcbiAgICAgICAgLy8gRmlyc3RseSwgd2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIHRvdGFsIHdpZHRoIG9mIGFsbCBidXR0b25zIHdpdGhvdXQgXCJtb3JlXCIgYnV0dG9uLlxyXG4gICAgICAgIGxldCBidXR0b25zVG90YWxXaWR0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFjdGlvbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb25zW2ldO1xyXG4gICAgICAgICAgICAvLyBhc3N1bWUgaGlkZGVuIGFjdGlvbnMgaGF2ZSBhIDAgd2lkdGguIFdoZW4gdGhleSBhcmUgdW4taGlkZGVuLCB0aGVyZSB3aWR0aCB3aWxsIGNoYW5nZSBhbmQgdHJpZ2dlciBhbm90aGVyIHVwZGF0ZS5cclxuICAgICAgICAgICAgY29uc3QgYWN0aW9uV2lkdGggPSBhY3Rpb24uaGlkZGVuID8gMCA6IGFjdGlvbi53aWR0aCB8fCAwO1xyXG4gICAgICAgICAgICBidXR0b25zVG90YWxXaWR0aCArPSBhY3Rpb25XaWR0aDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChidXR0b25zVG90YWxXaWR0aCA8PSBjb250YWluZXJXaWR0aCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hY3Rpb25zLmxlbmd0aDsgKytpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zLnB1c2godGhpcy5hY3Rpb25zW2luZGV4XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBJZiB0aGUgYnV0dG9ucyB0b3RhbCB3aWR0aCBleGNlZWRzIHRoZSBjb250YWluZXIgd2lkdGgsIHRoZW4gd2UgY2FsY3VsYXRlIHdoaWNoIGJ1dHRvbiBzaG91bGQgYmVcclxuICAgICAgICAgICAgLy8gZGlzcGxheWVkIGFuZCB3aGljaCBidXR0b24gc2hvdWxkIGJlIHB1dCBpbnRvIFwibW9yZVwiIGRyb3AtZG93bi5cclxuICAgICAgICAgICAgLy8gTm90ZTogdGhlIGF2YWlsYWJsZSBjb250YWluZXIgd2lkdGggc2hvdWxkIGJlIHRoZSBjb250YWluZXIgd2lkdGggLSBcIm1vcmVcIiBidXR0b24ncyB3aWR0aC5cclxuICAgICAgICAgICAgY29uc3QgdmlzaWJsZUJ1dHRvbkNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyV2lkdGggLSB0aGlzLmRyb3BEb3duQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hY3Rpb25zLmxlbmd0aDsgKytpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb25zW2luZGV4XTtcclxuICAgICAgICAgICAgICAgIC8vIGFzc3VtZSBoaWRkZW4gYWN0aW9ucyBoYXZlIGEgMCB3aWR0aC4gV2hlbiB0aGV5IGFyZSB1bi1oaWRkZW4sIHRoZXJlIHdpZHRoIHdpbGwgY2hhbmdlIGFuZCB0cmlnZ2VyIGFub3RoZXIgdXBkYXRlLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uV2lkdGggPSBhY3Rpb24uaGlkZGVuID8gMCA6IGFjdGlvbi53aWR0aCB8fCAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGaWxsICsgYWN0aW9uV2lkdGggPiB2aXNpYmxlQnV0dG9uQ29udGFpbmVyV2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYXlBY3Rpb25zLnB1c2goYWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zLnB1c2goYWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50RmlsbCArPSBhY3Rpb25XaWR0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheWVkQWN0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5tb3JlQWN0aW9uc0Rpc3BsYXkgPSB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLmFjdGlvbnM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tb3JlQWN0aW9uc0Rpc3BsYXkgPSB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLm1vcmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiBhbnkgYWN0aW9uIGJhciB3aWR0aCBpcyBOYU4sIHRoYXQgbWVhbnMgbm90IGFsbCB0aGUgYWN0aW9uLWJ1dHRvbnMgZmluaXNoZWQgcmVuZGVyaW5nIG9uIHRoZSBVSS5cclxuICAgICAgICAvLyBUaHVzIFwiY3VycmVudEZpbGxcIiBpcyBzdGlsbCBOYU4uIE90aGVyd2lzZSwgd2UgY29uc2lkZXIgYWxsIHRoZSBhY3Rpb24tYnV0dG9ucyBmaW5pc2ggcmVuZGVyaW5nLlxyXG4gICAgICAgIC8vIFRoZW4gaXQncyB0aW1lIHRvIHJlbW92ZSB0aGUgdGVtcG9yYXJ5IGlubGluZSBzdHlsZXMuXHJcbiAgICAgICAgaWYgKCEhY3VycmVudEZpbGwpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQXR0YWNoZWQgJiYgKHRoaXMuc2hvdWxkU2hvdyB8fCB0aGlzLmhvdmVyZWQgfHwgdGhpcy5mb2N1c2VkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShob3N0RWxlbWVudCwgJ292ZXJmbG93Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShob3N0RWxlbWVudCwgJ3Bvc2l0aW9uJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzb21lIGFjdGlvbiBpdGVtIHN0YXRlcyBkZXBlbmQgb24gd2hhdCBjb250YWluZXIgdGhleSByZXNpZGUgaW4uXHJcbiAgICAgICAgLy8gVHJheUFjdGlvbnMgd2lsbCBiZSB1cGRhdGVkIGJlY2F1c2UgdGhleSB3ZXJlIG1vdmVkIGludG8gdGhlIGFjdGlvbk1lbnUsXHJcbiAgICAgICAgLy8gaG93ZXZlciBkaXNwbGF5ZWQgYWN0aW9ucyBzaG91bGQgYmUgcmVzZXQgYXMgdGhleSBtYXkgaGF2ZSBtb3ZlZC5cclxuICAgICAgICBpZiAodGhpcy5kaXNwbGF5ZWRBY3Rpb25zICYmIHRoaXMuZGlzcGxheWVkQWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiBhY3Rpb24uc2V0QWN0aW9uU3RhdGUodGhpcy50YXJnZXQsIHRoaXMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWN0aW9uc1VwZGF0ZWQuZW1pdCgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgcm9sZT1cIm1lbnViYXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFjdGlvbnNBcmlhTGFiZWxcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWFycmFuZ2Utc3RhY2staFwiICNhY3Rpb25CYXJFbGVtZW50PlxyXG4gIDxzbWUtZHluYW1pYy1hY3Rpb24taXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBoaWRkZW5GaWx0ZXIoZGlzcGxheWVkQWN0aW9ucylcIiBbaXRlbV09XCJpdGVtXCJcclxuICAgIChpdGVtQ2hhbmdlZCk9XCJvbkFjdGlvbkl0ZW1DaGFuZ2VkKClcIlxyXG4gICAgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oIHNtZS1hcnJhbmdlLXN0YWNrLWNlbnRlcmVkIHNtZS1hcnJhbmdlLXN0YWNrLWlubGluZVwiXHJcbiAgICBbY2xhc3Muc21lLWFjdGlvbi1iYXItaXRlbS1uby1wYWRkaW5nLXZdPVwiaGVpZ2h0T3ZlcmZsb3dcIj48L3NtZS1keW5hbWljLWFjdGlvbi1pdGVtPlxyXG5cclxuICA8c21lLWRyb3Bkb3duICNkcm9wRG93biByb2xlPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lXCJcclxuICAgIFtjbGFzcy5zbWUtbGF5b3V0LWhpZGRlbl09XCIhY29tcGFjdCAmJiB0cmF5QWN0aW9ucy5sZW5ndGggPT09IDBcIlxyXG4gICAgW2NsYXNzLnNtZS1sYXlvdXQtbm9uZV09XCJjb21wYWN0ICYmIHRyYXlBY3Rpb25zLmxlbmd0aCA9PT0gMFwiIFt0aXRsZV09XCJtb3JlQWN0aW9uc0Rpc3BsYXlcIiBbc21lVG9vbHRpcFNob3ddPVwiIXRoaXMuZHJvcERvd24uaXNPcGVuXCI+XHJcbiAgICA8YnV0dG9uICNkcm9wRG93bkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3JlQWN0aW9uc0Rpc3BsYXlcIiByb2xlPVwibWVudWl0ZW1cIlxyXG4gICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbS1oZWlnaHQgc21lLWJ1dHRvbi1hdXRvLXdpZHRoIHNtZS1kcm9wZG93bi10b2dnbGVcIlxyXG4gICAgICBbY2xhc3Muc21lLXRvZ2dsZWRdPVwiZHJvcERvd24uaXNPcGVuXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJkcm9wRG93bi5pc09wZW5cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgIGRhdGEtdXRhLWlkPVwiYWN0aW9uLWJhci1tb3JlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tbW9yZVwiIFt0aXRsZV09XCJtb3JlQWN0aW9uc0Rpc3BsYXlcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIj57eyBtb3JlQWN0aW9uc0Rpc3BsYXkgfX08L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxzbWUtYWN0aW9uLW1lbnUgW2FjdGlvbnNdPVwidHJheUFjdGlvbnNcIiByb2xlPVwibWVudVwiIGNsYXNzPVwic21lLWRyb3Bkb3duLWNvbnRlbnRcIiBbKHRhcmdldCldPVwidGFyZ2V0XCJcclxuICAgICAgKGVycm9yKT1cImVycm9yLmVtaXQoJGV2ZW50KVwiIChleGVjdXRlZCk9XCJleGVjdXRlZC5lbWl0KCRldmVudClcIj48L3NtZS1hY3Rpb24tbWVudT5cclxuICA8L3NtZS1kcm9wZG93bj5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2FjdGlvbnMvY29udGFpbmVycy9hY3Rpb24tYmFyL2FjdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixlQUFlLEVBRWYsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUd6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDekJ2RSxtREFHNEQ7SUFGMUQsZ05BQWUsZUFBQSw0QkFBcUIsQ0FBQSxJQUFDO0lBRXFCLGlCQUEwQjs7OztJQUFwRix5RUFBeUQ7SUFIa0IsOEJBQWE7OztBRDJCNUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztH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O1lBV3RDLFFBQVE7a0JBRFAsWUFBWTttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWWllbGQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy95aWVsZC5kZWNvcmF0b3InO1xyXG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL2FjY2Vzc2liaWxpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL2xvZ2dpbmcnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uLy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2l0ZW1zL2FjdGlvbi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lck9yaWVudGF0aW9uIH0gZnJvbSAnLi4vYWN0aW9uLWNvbnRhaW5lcic7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1jb250YWluZXIuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgQWN0aW9ucyBAaWQgc21lLWFjdGlvbnN9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgRGVmaW5lZCBhY3Rpb25zIGZyb20gY29tcG9uZW50IEBpZCBkZWZpbmVkLWFjdGlvbnMtZnJvbS1jb21wb25lbnR9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGVmaW5lZC1hY3Rpb25zLWZyb20tY29tcG9uZW50LmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIERlZmluZWQgYWN0aW9ucyBmcm9tIGh0bWwgQGlkIGRlZmluZWQtYWN0aW9ucy1mcm9tLWh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGVmaW5lZC1hY3Rpb25zLWZyb20taHRtbC5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9ucy1leGFtcGxlLmNvbXBvbmVudC50c31cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBEZWZpbmVkIGFjdGlvbnMgZnJvbSBib3RoIEBpZCBkZWZpbmVkLWFjdGlvbnMtZnJvbS1ib3RofVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2RlZmluZWQtYWN0aW9ucy1mcm9tLWJvdGguY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbnMtZXhhbXBsZS5jb21wb25lbnQudHN9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQWxsIGJ1dHRvbnMgZGlzYWJsZWQgQGlkIGFsbC1idXR0b25zLWRpc2FibGVkfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FsbC1idXR0b25zLWRpc2FibGVkLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIE1vZGVsIGRyaXZlbiBhY3Rpb24gYmFyIEBpZCBtb2RlbC1kcml2ZW59XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbW9kZWwtZHJpdmVuLmNvbXBvbmVudC5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb25zLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIENvbnRhaW5lciBlbWJlZGRlZCBhY3Rpb24gYmFyIEBpZCBjb250YWluZXItZW1iZWRkZWQtYWN0aW9uLWJhcn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9jb250YWluZXItZW1iZWRkZWQtYWN0aW9uLWJhci5jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9ucy1leGFtcGxlLmNvbXBvbmVudC50c31cclxuICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWFjdGlvbi1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25CYXJDb21wb25lbnQgZXh0ZW5kcyBBY3Rpb25Db250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJvdGVjdGVkIGxvZ1NvdXJjZU5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgdGhhdCB3aGVuIHNldCB3aWxsIGRpc3BsYXkgbWluaW1hbCBVSSBmb3IgdGhlIGFjdGlvbiBiYXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgY29tcGFjdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0NvbXBhY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdHRyaWJ1dGUgdGhhdCBzZXRzIHZlcnRpY2FsIG9yIGhvcml6b250YWwgb3JpZW50YXRpb24gd2hlcmUgdmVydGljYWwgZGlzcGxheXMgYWN0aW9uIGJhciBmcm9tIHRvcCB0byBib3R0b20gb2YgcGFnZVxyXG4gICAgICogYW5kIGhvcml6b250YWwgZGlzcGxheXMgYWN0aW9uIGJhciBmcm9tIGxlZnQgdG8gcmlnaHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgb3JpZW50YXRpb24oKTogQWN0aW9uQ29udGFpbmVyT3JpZW50YXRpb24ge1xyXG4gICAgICAgIHJldHVybiAndmVydGljYWwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBBY3Rpb25JdGVtIG9iamVjdHMgdGhhdCB3ZSB3YW50IHRvIHBlcmZvcm0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkaXNwbGF5ZWRBY3Rpb25zOiBBY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgQWN0aW9uSXRlbSBvYmplY3RzIHRoYXQgYXJlIGNvbGxhcHNlZCBpbnRvIGRyb3Bkb3duLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJheUFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCBkaXNwbGF5ZWQgZm9yIHRyYXkgZHJvcGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3JlQWN0aW9uc0Rpc3BsYXk6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIG9uIGFjdGlvbiBtZW51IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWN0aW9uc0FyaWFMYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmxhZyB0byBtYWtlIHN1cmUgaWYgdGhlIGhlaWdodCBvZiB0aGUgYmFyIGlzIGN1cnJlbnRseSBncmVhdGVyIHRoYW4gdGhlIGF2YWlsYWJsZSBoZWlnaHQgb2YgdGhlIHRhcmdldCxcclxuICAgICAqIHRoZW4gdGhlIGl0ZW1zIGFyZSBhZGp1c3RlZCBhY2NvcmRpbmdseS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhlaWdodE92ZXJmbG93OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnV0dG9uIGVsZW1lbnQgZm9yIHRyYXkgZHJvcGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3JlQnV0dG9uRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2NhbGl6ZWQgc2V0IG9mIHN0cmluZ3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdHJpbmdzID0gTXNmdFNtZS5nZXRTdHJpbmdzPFN0cmluZ3M+KCk7XHJcbiAgICBwcml2YXRlIGlzQ29tcGFjdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBob3ZlcmVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgYXR0YWNoZWRUbzogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHNob3VsZFNob3cgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBsYXlvdXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IGZpcmVkIHdoZW4gbGlzdCBvZiBBY3Rpb25JdGVtcyBjaGFuZ2VzLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhY3Rpb25zVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0IGlzQXR0YWNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYXR0YWNoZWRUbyk7XHJcbiAgICB9XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uQmFyRWxlbWVudCcpIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3BEb3duQnV0dG9uJykgcHJpdmF0ZSBkcm9wRG93bkJ1dHRvbkVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEcm9wZG93bkNvbXBvbmVudCBlbGVtZW50IGZvciBhY3Rpb24gdHJheS5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcERvd24nKSBwdWJsaWMgZHJvcERvd246IERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3IgZm9yIHRoZSBBY3Rpb25CYXJDb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGl0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQsIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGl0ZXJhYmxlRGlmZmVycywgaW5qZWN0b3IpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtcG9zaXRpb24tc3RyZXRjaC1oJyk7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1sYXlvdXQtYWN0aW9uLWJhcicpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYXJyYW5nZS1zdGFjay1oJyk7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1hcnJhbmdlLXdzLW5vd3JhcCcpO1xyXG4gICAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYXJyYW5nZS1vdmVyZmxvdy1zaG93Jyk7XHJcbiAgICAgICAgcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScsIDApO1xyXG4gICAgICAgIHRoaXMubW9yZUFjdGlvbnNEaXNwbGF5ID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5tb3JlO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uc0FyaWFMYWJlbCA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uYWN0aW9ucztcclxuXHJcbiAgICAgICAgaWYgKGxheW91dCkge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dFN1YnNjcmlwdGlvbiA9IGxheW91dC5sYXlvdXRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIG91dCBBY3Rpb25JdGVtIG9iamVjdHMgdG8gYmUgaGlkZGVuLlxyXG4gICAgICogQHBhcmFtIGl0ZW1zIEFjdGlvbkl0ZW0gb2JqZWN0cyB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIExpc3Qgb2YgdW5oaWRkZW4gQWN0aW9uSXRlbSBvYmplY3RzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGlkZGVuRmlsdGVyKGl0ZW1zOiBBY3Rpb25JdGVtW10pOiBBY3Rpb25JdGVtW10ge1xyXG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5oaWRkZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgdHJpZ2dlcmVkIGFmdGVyIHZpZXcgaW5pdGlhbGl6ZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayB0cmlnZ2VyZWQgYWZ0ZXIgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPbiBsYXlvdXQgY2hhbmdlZCBldmVudCBoYW5kbGVyLCBvY2N1cnMgZXZlcnkgdGltZSB0aGUgbGF5b3V0IGhhcyBiZWVuIGNoYW5nZWQuXHJcbiAgICAgKi9cclxuICAgIEBZaWVsZCgpXHJcbiAgICBwcml2YXRlIG9uTGF5b3V0Q2hhbmdlZCgpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvbkJhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdCBsaXN0ZW5lcnMgZm9yIGZvY3VzIGV2ZW50cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25Gb2N1c0V2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIC8vIG9uIGZvY3VzIGluL291dCBjaGFuZ2UgZm9jdXNlZCBzdGF0ZVxyXG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGV2ZW50LnR5cGUgPT09ICdmb2N1c2luJyB8fCAodGhpcy5mb2N1c2VkICYmIGV2ZW50LnR5cGUgIT09ICdmb2N1c291dCcpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb3N0IGxpc3RlbmVycyBmb3Iga2V5Ym9hcmQgZXZlbnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvblRvZ2dsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICAvLyBhY2Nlc3NpYmlsaXR5LCB0YWtlIGZvY3VzIHRvIHRoZSBtb3JlIGJ1dHRvbiBhZnRlciBhIHNlbGVjdGlvbiBpbiBkcm9wZG93biBlbGVtZW50cy5cclxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcclxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVudGVyOiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcm9wRG93bikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vcmVCdXR0b25FbGVtZW50ICYmIHRoaXMuZHJvcERvd24uaXNPcGVuICYmIHRoaXMuZHJvcERvd24uY29udGVudEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3JlQnV0dG9uRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcERvd24ub25Ub2dnbGVkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKG9wZW4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBibHVyL2ZvY3VzIHRvIHJlZnJlc2ggZm9jdXMgLSB0aGlzIHdpbGwgbWFrZSB0aGUgdG9vbHRpcCBkaXNhcHBlYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGlsZSBtZW51IGlzIG9wZW4gKGIvYyB0b29sdGlwIHdpbGwgYmxvY2sgdmlldylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BEb3duQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BEb3duQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3JlQnV0dG9uRWxlbWVudCA9IDxIVE1MRWxlbWVudD5kb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvc3QgbGlzdGVuZXJzIGZvciBtb3VzZSBldmVudHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25Nb3VzZUV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIC8vIG9uIG1vdXNlIGVudGVyL2xlYXZlIGNoYW5nZSBob3ZlcmVkIHN0YXRlXHJcbiAgICAgICAgdGhpcy5ob3ZlcmVkID0gZXZlbnQudHlwZSA9PT0gJ21vdXNlZW50ZXInIHx8ICh0aGlzLmhvdmVyZWQgJiYgZXZlbnQudHlwZSAhPT0gJ21vdXNlbGVhdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUhlaWdodCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdCBsaXN0ZW5lciBmb3IgcGFnZSByZXNpemUgZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxyXG4gICAgb25SZXNpemUoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25CYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIHRyaWdnZXJlZCBhZnRlciBjaGlsZCBBY3Rpb25JdGVtIGNoYW5nZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkFjdGlvbkl0ZW1DaGFuZ2VkKCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvbkJhcigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlSGVpZ2h0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQXR0YWNoZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlICYmICh0aGlzLnNob3VsZFNob3cgfHwgdGhpcy5mb2N1c2VkIHx8IHRoaXMuaG92ZXJlZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3ZlcmZsb3cnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWFuaW1hdGlvbi1mYWRlLW91dC14cycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzbWUtYW5pbWF0aW9uLWZhZGUtaW4teHMnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScsIDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvdmVyZmxvdycsICdoaWRkZW4nKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWFuaW1hdGlvbi1mYWRlLW91dC14cycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRvIHNldCB2aXNpYmlsaXR5IGZvciBBY3Rpb25CYXJDb21wb25lbnQuXHJcbiAgICAgKiBAcGFyYW0gaXNWaXNpYmxlIFRydWUgZm9yIHZpc2libGUsIGZhbHNlIGZvciBub3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRWaXNpYmlsaXR5KGlzVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gaXNWaXNpYmxlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gc2V0IHZpc2liaWxpdHkgZm9yIEFjdGlvbkJhckNvbXBvbmVudC5cclxuICAgICAqIEBwYXJhbSBzaG91bGRTaG93IFRydWUgZm9yIHNob3dpbmcsIGZhbHNlIGZvciBub3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93SGlkZShzaG91bGRTaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG91bGRTaG93ID0gc2hvdWxkU2hvdztcclxuICAgICAgICB0aGlzLnVwZGF0ZUhlaWdodCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVwb3NpdGlvbnMgZ2l2ZW4gSFRNTEVsZW1lbnQgdG8gYmUgcmVsYXRpdmUgdG8gaXRzIHNpYmxpbmcgZWxlbWVudC5cclxuICAgICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gcmVwb3NpdGlvbi5cclxuICAgICAqIEBwYXJhbSBjb21wYWN0IEJvb2xlYW4gZmxhZyB0byBzZXQgd2hldGhlciBvciBub3QgQWN0aW9uQmFyQ29tcG9uZW50IHNob3VsZCBiZSBjb21wYWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVwb3NpdGlvblJlbGF0aXZlVG8oZWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbXBhY3Q6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPclVuZGVmaW5lZChlbGVtZW50Lm9mZnNldFBhcmVudCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGlzU2libGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gZWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2libGluZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgc2libGluZyA9IHNpYmxpbmdzLml0ZW0oaSk7XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nID09PSB0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlzU2libGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzU2libGluZykge1xyXG4gICAgICAgICAgICBMb2dnaW5nLmxvZ0Vycm9yKCdBY3Rpb25CYXIucmVwb3NpdGlvblJlbGF0aXZlVG8nLCAnQWN0aW9uQmFyIGNhbiBvbmx5IGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gYSBzaWJsaW5nIGVsZW1lbnQuJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgd2FzQXR0YWNoZWQgPSB0aGlzLmlzQXR0YWNoZWQ7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hlZFRvID0gZWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKCF3YXNBdHRhY2hlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dIaWRlKGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHdoZW4gcG9zaXRpb25pbmcgb24gYW4gZWxlbWVudCwgdXNlIGNvbXBhY3Qgc2V0dGluZ3MgaWYgZGVzaXJlZFxyXG4gICAgICAgIHRoaXMuaXNDb21wYWN0ID0gY29tcGFjdDtcclxuXHJcbiAgICAgICAgLy8gY2hhbmdlIGNsYXNzZXMgdG8gYWNjb3VudCBmb3IgZGlmZmVyZW50IHBvc2l0aW9uaW5nIG1lY2hhbmlzbVxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAncG9zaXRpb24nKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1wb3NpdGlvbi1zdHJldGNoLWgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1sYXlvdXQtYWJzb2x1dGUnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3NtZS1iYWNrZ3JvdW5kLWNvbG9yLWJhc2UnKTtcclxuXHJcbiAgICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBwb3NpdGlvblxyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgbWFyZ2luID0ge1xyXG4gICAgICAgICAgICB0b3A6IHBhcnNlSW50KHN0eWxlLm1hcmdpblRvcCwgMTApLFxyXG4gICAgICAgICAgICBib3R0b206IHBhcnNlSW50KHN0eWxlLm1hcmdpbkJvdHRvbSwgMTApLFxyXG4gICAgICAgICAgICBsZWZ0OiBwYXJzZUludChzdHlsZS5tYXJnaW5MZWZ0LCAxMCksXHJcbiAgICAgICAgICAgIHJpZ2h0OiBwYXJzZUludChzdHlsZS5tYXJnaW5SaWdodCwgMTApXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBib3JkZXIgPSB7XHJcbiAgICAgICAgICAgIHRvcDogcGFyc2VJbnQoc3R5bGUuYm9yZGVyVG9wLCAxMCksXHJcbiAgICAgICAgICAgIGJvdHRvbTogcGFyc2VJbnQoc3R5bGUuYm9yZGVyQm90dG9tLCAxMCksXHJcbiAgICAgICAgICAgIGxlZnQ6IHBhcnNlSW50KHN0eWxlLmJvcmRlckxlZnQsIDEwKSxcclxuICAgICAgICAgICAgcmlnaHQ6IHBhcnNlSW50KHN0eWxlLmJvcmRlclJpZ2h0LCAxMClcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAtIGJvcmRlci5sZWZ0IC0gYm9yZGVyLnJpZ2h0IC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQ7XHJcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgLSBib3JkZXIuYm90dG9tIC0gbWFyZ2luLmJvdHRvbTtcclxuICAgICAgICBjb25zdCB3aWR0aCA9IE1hdGgubWluKE1hdGgubWF4KGF2YWlsYWJsZVdpZHRoIC8gMiwgMzAwKSwgYXZhaWxhYmxlV2lkdGgpO1xyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggLSAoZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aCk7XHJcbiAgICAgICAgY29uc3QgdG9wID0gZWxlbWVudC5vZmZzZXRUb3AgKyBib3JkZXIudG9wICsgbWFyZ2luLnRvcDtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdyaWdodCcsIGAke3JpZ2h0fXB4YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHt0b3B9cHhgKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYHVuc2V0YCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdtYXgtd2lkdGgnLCBgJHt3aWR0aH1weGApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke2F2YWlsYWJsZUhlaWdodH1weGApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnanVzdGlmeS1jb250ZW50JywgYGZsZXgtZW5kYCk7XHJcblxyXG4gICAgICAgIC8vIGlmIHRoZSBoZWlnaHQgb2YgdGhlIGJhciBpcyBjdXJyZW50bHkgZ3JlYXRlciB0aGFuIHRoZSBhdmFpbGFibGUgaGVpZ2h0IG9mIHRoZSB0YXJnZXQsXHJcbiAgICAgICAgLy8gdGhlbiBtYWtlIHN1cmUgZGlzcGxheWVkIGl0ZW1zIGFyZSBhZGp1c3RlZCBhY2NvcmRpbmdseVxyXG4gICAgICAgIHRoaXMuaGVpZ2h0T3ZlcmZsb3cgPSBwYXJzZUludChzdHlsZS5oZWlnaHQsIDEwKSA+IGF2YWlsYWJsZUhlaWdodDtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gdXBkYXRlIGhvdyBBY3Rpb25CYXJDb21wb25lbnQgaXMgZGlzcGxheWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlQWN0aW9uQmFyKCkge1xyXG4gICAgICAgIGxldCBjdXJyZW50RmlsbCA9IDA7XHJcblxyXG4gICAgICAgIC8vIFNldCB1cCB0aGUgZm9sbG93aW5nIHN0eWxlcyBkdXJpbmcgdGhlIFVJIGNhbGN1bGF0aW9uIHRvIG1ha2Ugc3VyZSB0aGUgaHRtbCBlbGVtZW50IGZsaWNrZXJpbmcgd29uJ3QgZXhjZWVkXHJcbiAgICAgICAgLy8gdGhlIGFjdGlvbiBiYXIgY29udGFpbmVyLlxyXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaW5saW5lIHN0eWxlcyB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIFVJIGNhbGN1bGF0aW9uIGlzIGRvbmUuXHJcbiAgICAgICAgY29uc3QgaG9zdEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+dGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsZW1lbnQsICdvdmVyZmxvdycsIGBoaWRkZW5gKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQXR0YWNoZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob3N0RWxlbWVudCwgJ3Bvc2l0aW9uJywgYHJlbGF0aXZlYCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zID0gW107XHJcbiAgICAgICAgdGhpcy50cmF5QWN0aW9ucyA9IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoaG9zdEVsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IHBhZGRpbmcgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKSwgMTApICsgcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1yaWdodCcpLCAxMCk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSAodGhpcy5pc0F0dGFjaGVkID8gcGFyc2VJbnQoc3R5bGUubWF4V2lkdGgsIDEwKSA6IGhvc3RFbGVtZW50Lm9mZnNldFdpZHRoKSAtIHBhZGRpbmc7XHJcblxyXG4gICAgICAgIC8vIEZpcnN0bHksIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSB0b3RhbCB3aWR0aCBvZiBhbGwgYnV0dG9ucyB3aXRob3V0IFwibW9yZVwiIGJ1dHRvbi5cclxuICAgICAgICBsZXQgYnV0dG9uc1RvdGFsV2lkdGggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hY3Rpb25zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uc1tpXTtcclxuICAgICAgICAgICAgLy8gYXNzdW1lIGhpZGRlbiBhY3Rpb25zIGhhdmUgYSAwIHdpZHRoLiBXaGVuIHRoZXkgYXJlIHVuLWhpZGRlbiwgdGhlcmUgd2lkdGggd2lsbCBjaGFuZ2UgYW5kIHRyaWdnZXIgYW5vdGhlciB1cGRhdGUuXHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbldpZHRoID0gYWN0aW9uLmhpZGRlbiA/IDAgOiBhY3Rpb24ud2lkdGggfHwgMDtcclxuICAgICAgICAgICAgYnV0dG9uc1RvdGFsV2lkdGggKz0gYWN0aW9uV2lkdGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYnV0dG9uc1RvdGFsV2lkdGggPD0gY29udGFpbmVyV2lkdGgpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuYWN0aW9ucy5sZW5ndGg7ICsraW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQWN0aW9ucy5wdXNoKHRoaXMuYWN0aW9uc1tpbmRleF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gSWYgdGhlIGJ1dHRvbnMgdG90YWwgd2lkdGggZXhjZWVkcyB0aGUgY29udGFpbmVyIHdpZHRoLCB0aGVuIHdlIGNhbGN1bGF0ZSB3aGljaCBidXR0b24gc2hvdWxkIGJlXHJcbiAgICAgICAgICAgIC8vIGRpc3BsYXllZCBhbmQgd2hpY2ggYnV0dG9uIHNob3VsZCBiZSBwdXQgaW50byBcIm1vcmVcIiBkcm9wLWRvd24uXHJcbiAgICAgICAgICAgIC8vIE5vdGU6IHRoZSBhdmFpbGFibGUgY29udGFpbmVyIHdpZHRoIHNob3VsZCBiZSB0aGUgY29udGFpbmVyIHdpZHRoIC0gXCJtb3JlXCIgYnV0dG9uJ3Mgd2lkdGguXHJcbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVCdXR0b25Db250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gdGhpcy5kcm9wRG93bkJ1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuYWN0aW9ucy5sZW5ndGg7ICsraW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgaGlkZGVuIGFjdGlvbnMgaGF2ZSBhIDAgd2lkdGguIFdoZW4gdGhleSBhcmUgdW4taGlkZGVuLCB0aGVyZSB3aWR0aCB3aWxsIGNoYW5nZSBhbmQgdHJpZ2dlciBhbm90aGVyIHVwZGF0ZS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbldpZHRoID0gYWN0aW9uLmhpZGRlbiA/IDAgOiBhY3Rpb24ud2lkdGggfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RmlsbCArIGFjdGlvbldpZHRoID4gdmlzaWJsZUJ1dHRvbkNvbnRhaW5lcldpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmF5QWN0aW9ucy5wdXNoKGFjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQWN0aW9ucy5wdXNoKGFjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbGwgKz0gYWN0aW9uV2lkdGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXllZEFjdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9yZUFjdGlvbnNEaXNwbGF5ID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5hY3Rpb25zO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9yZUFjdGlvbnNEaXNwbGF5ID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5tb3JlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgYW55IGFjdGlvbiBiYXIgd2lkdGggaXMgTmFOLCB0aGF0IG1lYW5zIG5vdCBhbGwgdGhlIGFjdGlvbi1idXR0b25zIGZpbmlzaGVkIHJlbmRlcmluZyBvbiB0aGUgVUkuXHJcbiAgICAgICAgLy8gVGh1cyBcImN1cnJlbnRGaWxsXCIgaXMgc3RpbGwgTmFOLiBPdGhlcndpc2UsIHdlIGNvbnNpZGVyIGFsbCB0aGUgYWN0aW9uLWJ1dHRvbnMgZmluaXNoIHJlbmRlcmluZy5cclxuICAgICAgICAvLyBUaGVuIGl0J3MgdGltZSB0byByZW1vdmUgdGhlIHRlbXBvcmFyeSBpbmxpbmUgc3R5bGVzLlxyXG4gICAgICAgIGlmICghIWN1cnJlbnRGaWxsKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0F0dGFjaGVkICYmICh0aGlzLnNob3VsZFNob3cgfHwgdGhpcy5ob3ZlcmVkIHx8IHRoaXMuZm9jdXNlZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoaG9zdEVsZW1lbnQsICdvdmVyZmxvdycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoaG9zdEVsZW1lbnQsICdwb3NpdGlvbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc29tZSBhY3Rpb24gaXRlbSBzdGF0ZXMgZGVwZW5kIG9uIHdoYXQgY29udGFpbmVyIHRoZXkgcmVzaWRlIGluLlxyXG4gICAgICAgIC8vIFRyYXlBY3Rpb25zIHdpbGwgYmUgdXBkYXRlZCBiZWNhdXNlIHRoZXkgd2VyZSBtb3ZlZCBpbnRvIHRoZSBhY3Rpb25NZW51LFxyXG4gICAgICAgIC8vIGhvd2V2ZXIgZGlzcGxheWVkIGFjdGlvbnMgc2hvdWxkIGJlIHJlc2V0IGFzIHRoZXkgbWF5IGhhdmUgbW92ZWQuXHJcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheWVkQWN0aW9ucyAmJiB0aGlzLmRpc3BsYXllZEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZEFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4gYWN0aW9uLnNldEFjdGlvblN0YXRlKHRoaXMudGFyZ2V0LCB0aGlzKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFjdGlvbnNVcGRhdGVkLmVtaXQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IHJvbGU9XCJtZW51YmFyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb25zQXJpYUxhYmVsXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1hcnJhbmdlLXN0YWNrLWhcIiAjYWN0aW9uQmFyRWxlbWVudD5cclxuICA8c21lLWR5bmFtaWMtYWN0aW9uLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaGlkZGVuRmlsdGVyKGRpc3BsYXllZEFjdGlvbnMpXCIgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAoaXRlbUNoYW5nZWQpPVwib25BY3Rpb25JdGVtQ2hhbmdlZCgpXCJcclxuICAgIGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2staCBzbWUtYXJyYW5nZS1zdGFjay1jZW50ZXJlZCBzbWUtYXJyYW5nZS1zdGFjay1pbmxpbmVcIlxyXG4gICAgW2NsYXNzLnNtZS1hY3Rpb24tYmFyLWl0ZW0tbm8tcGFkZGluZy12XT1cImhlaWdodE92ZXJmbG93XCI+PC9zbWUtZHluYW1pYy1hY3Rpb24taXRlbT5cclxuXHJcbiAgPHNtZS1kcm9wZG93biAjZHJvcERvd24gcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZVwiXHJcbiAgICBbY2xhc3Muc21lLWxheW91dC1oaWRkZW5dPVwiIWNvbXBhY3QgJiYgdHJheUFjdGlvbnMubGVuZ3RoID09PSAwXCJcclxuICAgIFtjbGFzcy5zbWUtbGF5b3V0LW5vbmVdPVwiY29tcGFjdCAmJiB0cmF5QWN0aW9ucy5sZW5ndGggPT09IDBcIiBbdGl0bGVdPVwibW9yZUFjdGlvbnNEaXNwbGF5XCIgW3NtZVRvb2x0aXBTaG93XT1cIiF0aGlzLmRyb3BEb3duLmlzT3BlblwiPlxyXG4gICAgPGJ1dHRvbiAjZHJvcERvd25CdXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibW9yZUFjdGlvbnNEaXNwbGF5XCIgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgY2xhc3M9XCJzbWUtYnV0dG9uLXRyaWdnZXIgc21lLWxheW91dC1hY3Rpb24tYmFyLWl0ZW0taGVpZ2h0IHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImRyb3BEb3duLmlzT3BlblwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZHJvcERvd24uaXNPcGVuXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICBkYXRhLXV0YS1pZD1cImFjdGlvbi1iYXItbW9yZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLW1vcmVcIiBbdGl0bGVdPVwibW9yZUFjdGlvbnNEaXNwbGF5XCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3sgbW9yZUFjdGlvbnNEaXNwbGF5IH19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8c21lLWFjdGlvbi1tZW51IFthY3Rpb25zXT1cInRyYXlBY3Rpb25zXCIgcm9sZT1cIm1lbnVcIiBjbGFzcz1cInNtZS1kcm9wZG93bi1jb250ZW50XCIgWyh0YXJnZXQpXT1cInRhcmdldFwiXHJcbiAgICAgIChlcnJvcik9XCJlcnJvci5lbWl0KCRldmVudClcIiAoZXhlY3V0ZWQpPVwiZXhlY3V0ZWQuZW1pdCgkZXZlbnQpXCI+PC9zbWUtYWN0aW9uLW1lbnU+XHJcbiAgPC9zbWUtZHJvcGRvd24+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -15,7 +15,6 @@ export class ActionContainerComponent extends CoreBaseComponent {
|
|
|
15
15
|
/**
|
|
16
16
|
* Event emitter fired whenever an error occurs within a child ActionItem.
|
|
17
17
|
*/
|
|
18
|
-
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
19
18
|
this.error = new EventEmitter();
|
|
20
19
|
/**
|
|
21
20
|
* Event emitter fired whenever a child ActionItem is executed.
|
|
@@ -100,7 +99,7 @@ export class ActionContainerComponent extends CoreBaseComponent {
|
|
|
100
99
|
* Callback method run when ActionContainerComponent is destroyed.
|
|
101
100
|
*/
|
|
102
101
|
ngOnDestroy() {
|
|
103
|
-
this.completedSubscription
|
|
102
|
+
this.completedSubscription?.unsubscribe();
|
|
104
103
|
}
|
|
105
104
|
/**
|
|
106
105
|
* Callback method run immediately after Angular has completed initialization of all of ActionContainerComponent's content.
|
|
@@ -171,4 +170,4 @@ export class ActionContainerComponent extends CoreBaseComponent {
|
|
|
171
170
|
}], executed: [{
|
|
172
171
|
type: Output
|
|
173
172
|
}] }); })();
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBRVQsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsZUFBZSxFQUdmLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUtoRSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQix3QkFDbEIsU0FBUSxpQkFBaUI7SUEySHpCOztPQUVHO0lBQ0gsWUFBb0IsZUFBZ0MsRUFBRSxRQUFrQjtRQUNwRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEQSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUEzRDdDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQWM5Qzs7V0FFRztRQUNILDREQUE0RDtRQUVyRCxVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFMUQ7O1dBRUc7UUFFSSxhQUFRLEdBQThDLElBQUksWUFBWSxFQUErQixDQUFDO1FBUzdHOztXQUVHO1FBQ0ksb0JBQWUsR0FBaUIsRUFBRSxDQUFDO1FBRTFDOztXQUVHO1FBQ0ksb0JBQWUsR0FBaUIsRUFBRSxDQUFDO1FBRTFDOztVQUVFO1FBQ0ssa0JBQWEsR0FBaUIsRUFBRSxDQUFDO1FBRWhDLHNDQUFpQyxHQUFHLEtBQUssQ0FBQztRQUMxQyxvQkFBZSxHQUFHLElBQUksQ0FBQztJQVcvQixDQUFDO0lBNUdEOztPQUVHO0lBQ0gsSUFD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LENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDOUIsQ0FBQzs7bUhBbE1pQix3QkFBd0I7MEdBQXhCLHdCQUF3Qjs7Ozs7O3VGQUF4Qix3QkFBd0I7Y0FGN0MsU0FBUzt5RkFxQkMsWUFBWTtrQkFEbEIsZUFBZTttQkFBQyxRQUFRO1lBT2QsT0FBTztrQkFEakIsS0FBSztZQVdLLHlCQUF5QjtrQkFEbkMsS0FBSztZQXdCSyxNQUFNO2tCQURoQixLQUFLO1lBV0MsWUFBWTtrQkFEbEIsTUFBTTtZQU9JLE9BQU87a0JBRGpCLEtBQUs7WUFjQyxLQUFLO2tCQURYLE1BQU07WUFPQSxRQUFRO2tCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIERvQ2hlY2ssXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgSXRlcmFibGVDaGFuZ2VSZWNvcmQsXHJcbiAgICBJdGVyYWJsZURpZmZlcixcclxuICAgIEl0ZXJhYmxlRGlmZmVycyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtZXJnZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSwgQWN0aW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2l0ZW1zL2FjdGlvbi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRhaW5lciwgQWN0aW9uQ29udGFpbmVyT3JpZW50YXRpb24sIEFjdGlvbkl0ZW1FeGVjdXRlZEV2ZW50QXJncyB9IGZyb20gJy4vYWN0aW9uLWNvbnRhaW5lcic7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY3Rpb25Db250YWluZXJDb21wb25lbnRcclxuICAgIGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnRcclxuICAgIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgRG9DaGVjaywgT25Jbml0LCBPbkRlc3Ryb3ksIEFjdGlvbkNvbnRhaW5lciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSB0aGF0IHN0b3JlcyBBY3Rpb25Db250YWluZXJDb21wb25lbnQgY29tcGFjdCBzdGF0ZS4gVHJ1ZSBmb3IgY29tcGFjdCwgZmFsc2UgZm9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IGdldCBjb21wYWN0KCk6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSB0aGF0IHN0b3JlcyBBY3Rpb25Db250YWluZXJDb21wb25lbnQgb3JpZW50YXRpb24uXHJcbiAgICAgKiBWZXJ0aWNhbCBkaXNwbGF5cyBjb250YWluZXIgZnJvbSB0b3AgdG8gYm90dG9tIG9mIHBhZ2UsIGhvcml6b250YWwgZGlzcGxheXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IG9yaWVudGF0aW9uKCk6IEFjdGlvbkNvbnRhaW5lck9yaWVudGF0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBIVE1MIGRlZmluZWQgQWN0aW9uSXRlbSBvYmplY3RzIHN0b3JlZCBpbiBBY3Rpb25Db250YWluZXJDb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2FjdGlvbicpXHJcbiAgICBwdWJsaWMgY2hpbGRBY3Rpb25zOiBRdWVyeUxpc3Q8QWN0aW9uSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IG9mIHByb2dyYW1tYXRpY2FsbHkgZGVmaW5lZCBBY3Rpb25JdGVtIG9iamVjdHMgc3RvcmVkIGluIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgYWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25JdGVtW10pIHtcclxuICAgICAgICB0aGlzLmludGVybmFsQWN0aW9ucyA9IGFjdGlvbnMgfHwgW107XHJcbiAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGbGFnIHNldCB0byBkaXNwbGF5IGVpdGhlciBIVE1MIG9yIHByb2dyYW1tYXRpY2FsbHkgZGVmaW5lZCBBY3Rpb25JdGVtIG9iamVjdHMgZmlyc3QuXHJcbiAgICAgKiBUcnVlIHRvIGRpc3BsYXkgSFRNTCBkZWZpbmVkIGFjdGlvbnMgZmlyc3QsIGZhbHNlIHRvIGRpc3BsYXkgcHJvZ3JhbW1hdGljYWxseSBkZWZpbmVkIGFjdGlvbnMgZmlyc3QgKGRlZmF1bHRzIHRvIGZhbHNlKS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZGlzcGxheUlubGluZUFjdGlvbnNGaXJzdChkaXNwbGF5Rmlyc3Q6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlJbmxpbmVBY3Rpb25zRmlyc3RJbnRlcm5hbCA9IGRpc3BsYXlGaXJzdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgYWxsIEFjdGlvbkl0ZW0gb2JqZWN0cyBzdG9yZWQgaW4gQWN0aW9uQ29udGFpbmVyQ29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGFjdGlvbnMoKTogQWN0aW9uSXRlbVtdIHtcclxuICAgICAgICB0aGlzLmNvbWJpbmVkQWN0aW9ucy5sZW5ndGggPSAwO1xyXG5cclxuICAgICAgICB0aGlzLmNvbWJpbmVkQWN0aW9ucy5wdXNoLmFwcGx5KFxyXG4gICAgICAgICAgICB0aGlzLmNvbWJpbmVkQWN0aW9ucyxcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW5saW5lQWN0aW9uc0ZpcnN0SW50ZXJuYWwgPyB0aGlzLmlubGluZUFjdGlvbnMuY29uY2F0KHRoaXMuaW50ZXJuYWxBY3Rpb25zKVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmludGVybmFsQWN0aW9ucy5jb25jYXQodGhpcy5pbmxpbmVBY3Rpb25zKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJpbmVkQWN0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRhcmdldCBvYmplY3QgdXNlZCBieSBjaGlsZCBhY3Rpb25zIG9mIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgdGFyZ2V0KGlucHV0OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmludGVybmFsVGFyZ2V0ID0gaW5wdXQ7XHJcbiAgICAgICAgdGhpcy50YXJnZXRDaGFuZ2UuZW1pdCh0aGlzLmludGVybmFsVGFyZ2V0KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvblN0YXRlcygpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCB0YXJnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxUYXJnZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdGFyZ2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGbGFnIHNldCB0byBlbmFibGUgb3IgZGlzYWJsZSBBY3Rpb25Db250YWluZXJDb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGVuYWJsZWQoaW5wdXQ6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmVuYWJsZWRJbnRlcm5hbCA9ICEhaW5wdXQ7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25TdGF0ZXMoKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgZW5hYmxlZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbmFibGVkSW50ZXJuYWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCBlbWl0dGVyIGZpcmVkIHdoZW5ldmVyIGFuIGVycm9yIG9jY3VycyB3aXRoaW4gYSBjaGlsZCBBY3Rpb25JdGVtLlxyXG4gICAgICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgZW1pdHRlciBmaXJlZCB3aGVuZXZlciBhIGNoaWxkIEFjdGlvbkl0ZW0gaXMgZXhlY3V0ZWQuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGV4ZWN1dGVkOiBFdmVudEVtaXR0ZXI8QWN0aW9uSXRlbUV4ZWN1dGVkRXZlbnRBcmdzPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uSXRlbUV4ZWN1dGVkRXZlbnRBcmdzPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0cnVlIGlmIGFueSBjaGlsZCBBY3Rpb25JdGVtIG9iamVjdHMgaGF2ZSB0aGUgYnVzeSBmbGFnIHNldCwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGlzQnVzeSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zICYmIHRoaXMuYWN0aW9ucy5zb21lKGFjdGlvbiA9PiBhY3Rpb24uYnVzeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IG9mIGFsbCBjaGlsZCBBY3Rpb25JdGVtIG9iamVjdHMsIGJvdGggSFRNTCBhbmQgcHJvZ3JhbW1hdGljYWxseSBkZWZpbmVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29tYmluZWRBY3Rpb25zOiBBY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgcHJvZ3JhbW1hdGljYWxseSBkZWZpbmVkIEFjdGlvbkl0ZW0gb2JqZWN0cyBzdG9yZWQgaW4gQWN0aW9uQ29udGFpbmVyQ29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW50ZXJuYWxBY3Rpb25zOiBBY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICogTGlzdCBvZiBIVE1MIGRlZmluZWQgQWN0aW9uSXRlbSBvYmplY3RzIHN0b3JlZCBpbiBBY3Rpb25Db250YWluZXJDb21wb25lbnQuXHJcbiAgICAqL1xyXG4gICAgcHVibGljIGlubGluZUFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgZGlzcGxheUlubGluZUFjdGlvbnNGaXJzdEludGVybmFsID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGVuYWJsZWRJbnRlcm5hbCA9IHRydWU7XHJcbiAgICBwcml2YXRlIGludGVybmFsVGFyZ2V0OiBhbnk7XHJcbiAgICBwcml2YXRlIGFjdGlvbnNEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPGFueT47XHJcbiAgICBwcml2YXRlIHdhc0J1c3k6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGNvbXBsZXRlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3IgZm9yIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpdGVyYWJsZURpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycywgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHJ1biB3aGVuIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICAgIC8vIHdoZW5ldmVyIGFuIGFjdGlvbiBleGVjdXRlcyBvciBlcnJvcnMsIHVwZGF0ZSBhY3Rpb24gc3RhdGVzXHJcbiAgICAgICAgLy8gTk9URTogQW5ndWxhciBkb2N1bWVudGF0aW9uIHN0YXRlcyB0aGF0IHdlIHNob3VsZCBub3QgdHJlYXQgZXZlbnQgZW1pdHRlcnMgYXMgb2JzZXJ2YWJsZXMuXHJcbiAgICAgICAgLy8gaW4gdGhlIGZ1dHVyZSB0aGlzIGNvdWxkIGJyZWFrIGlmIGFuZ3VsYXIgY2hhbmdlcyBpdHMgaW1wbGVtZW50YXRpb24uXHJcbiAgICAgICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIGFub3RoZXIgd2F5IG9mIHN1cmZhY2luZyB0aGlzLlxyXG4gICAgICAgIHRoaXMuY29tcGxldGVkU3Vic2NyaXB0aW9uID0gbWVyZ2UodGhpcy5leGVjdXRlZCwgdGhpcy5lcnJvcikuc3Vic2NyaWJlKG5leHQgPT4gdGhpcy51cGRhdGVBY3Rpb25TdGF0ZXMoKSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHJ1biB3aGVuIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmNvbXBsZXRlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHJ1biBpbW1lZGlhdGVseSBhZnRlciBBbmd1bGFyIGhhcyBjb21wbGV0ZWQgaW5pdGlhbGl6YXRpb24gb2YgYWxsIG9mIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCdzIGNvbnRlbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jaGlsZEFjdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmxpbmVBY3Rpb25zLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuaW5saW5lQWN0aW9ucy5wdXNoLmFwcGx5KHRoaXMuaW5saW5lQWN0aW9ucywgdGhpcy5jaGlsZEFjdGlvbnMubWFwKGl0ZW0gPT4gaXRlbS5hY3Rpb24pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlubGluZUFjdGlvbnMgPSB0aGlzLmNoaWxkQWN0aW9ucy5tYXAoaXRlbSA9PiBpdGVtLmFjdGlvbik7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTmVlZHMgbW9yZSBpbnZlc3RpZ2F0aW9uLlxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFyJ3MgZG9DaGVjayBsaWZlIGN5Y2xlIGhvb2suIE5vdGUgdGhlcmUgaXMgYW4gb2RkIGNvbmRpdGlvbiB3aGVuIHRyeWluZyB0byBjcmVhdGUgZHluYW1pYyB0b29sYmFyIGl0ZW1zIGlubGluZSB3aXRoIG5nIGZvci5cclxuICAgICAqIFNvbWVob3cgdGhpcyBtZXRob2QgaXMgbm90IGdldHRpbmcgY2FsbGVkIGluIHRpbWUgdG8gaW5pdGlhbGl6ZSB0aGUgYnV0dG9uIHRoYXQgaXMgY3JlYXRlZCBieSB0aGUgbmcgZm9yIHN0YXRlbWVudC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hY3Rpb25zRGlmZmVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmFjdGlvbnNEaWZmZXIuZGlmZih0aGlzLmFjdGlvbnMpO1xyXG4gICAgICAgICAgICBpZiAoY2hhbmdlcykge1xyXG4gICAgICAgICAgICAgICAgY2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPEFjdGlvbkl0ZW0+KSA9PiAocmVjb3JkLml0ZW0pLmFkZGVkVG9Db250YWluZXIodGhpcy50YXJnZXQsIHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPEFjdGlvbkl0ZW0+KSA9PiAocmVjb3JkLml0ZW0pLnJlbW92ZWRGcm9tQ29udGFpbmVyKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy53YXNCdXN5ICE9PSB0aGlzLmlzQnVzeSkge1xyXG4gICAgICAgICAgICB0aGlzLndhc0J1c3kgPSB0aGlzLmlzQnVzeTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25TdGF0ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gdXBkYXRlIGFsbCBjaGlsZCBBY3Rpb25JdGVtIG9iamVjdHMgc3RhdGVzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlQWN0aW9uU3RhdGVzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbnMgJiYgdGhpcy5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IGFjdGlvbi5zZXRBY3Rpb25TdGF0ZSh0aGlzLnRhcmdldCwgdGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUFjdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25zRGlmZmVyID0gdGhpcy5pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLmFjdGlvbnMpLmNyZWF0ZShudWxsKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvblN0YXRlcygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBRVQsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsZUFBZSxFQUdmLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUtoRSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQix3QkFDbEIsU0FBUSxpQkFBaUI7SUEySHpCOztPQUVHO0lBQ0gsWUFBb0IsZUFBZ0MsRUFBRSxRQUFrQjtRQUNwRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEQSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUEzRDdDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQWM5Qzs7V0FFRztRQUdJLFVBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUUxRDs7V0FFRztRQUVJLGFBQVEsR0FBOEMsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFTN0c7O1dBRUc7UUFDSSxvQkFBZSxHQUFpQixFQUFFLENBQUM7UUFFMUM7O1dBRUc7UUFDSSxvQkFBZSxHQUFpQixFQUFFLENBQUM7UUFFMUM7O1VBRUU7UUFDSyxrQkFBYSxHQUFpQixFQUFFLENBQUM7UUFFaEMsc0NBQWlDLEdBQUcsS0FBSyxDQUFDO1FBQzFDLG9CQUFlLEdBQUcsSUFBSSxDQUFDO0lBVy9CLENBQUM7SUE1R0Q7O09BRUc7SUFDSCxJQUNXLE9BQU8sQ0FBQyxP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QU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDOzttSEFsTWlCLHdCQUF3QjswR0FBeEIsd0JBQXdCOzs7Ozs7dUZBQXhCLHdCQUF3QjtjQUY3QyxTQUFTO3lGQXFCQyxZQUFZO2tCQURsQixlQUFlO21CQUFDLFFBQVE7WUFPZCxPQUFPO2tCQURqQixLQUFLO1lBV0sseUJBQXlCO2tCQURuQyxLQUFLO1lBd0JLLE1BQU07a0JBRGhCLEtBQUs7WUFXQyxZQUFZO2tCQURsQixNQUFNO1lBT0ksT0FBTztrQkFEakIsS0FBSztZQWNDLEtBQUs7a0JBRlgsTUFBTTtZQVFBLFFBQVE7a0JBRGQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRGlyZWN0aXZlLFxyXG4gICAgRG9DaGVjayxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBJdGVyYWJsZUNoYW5nZVJlY29yZCxcclxuICAgIEl0ZXJhYmxlRGlmZmVyLFxyXG4gICAgSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUXVlcnlMaXN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtLCBBY3Rpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vaXRlbXMvYWN0aW9uLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uQ29udGFpbmVyLCBBY3Rpb25Db250YWluZXJPcmllbnRhdGlvbiwgQWN0aW9uSXRlbUV4ZWN1dGVkRXZlbnRBcmdzIH0gZnJvbSAnLi9hY3Rpb24tY29udGFpbmVyJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudFxyXG4gICAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBEb0NoZWNrLCBPbkluaXQsIE9uRGVzdHJveSwgQWN0aW9uQ29udGFpbmVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IHRoYXQgc3RvcmVzIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCBjb21wYWN0IHN0YXRlLiBUcnVlIGZvciBjb21wYWN0LCBmYWxzZSBmb3Igbm90LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IGNvbXBhY3QoKTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IHRoYXQgc3RvcmVzIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCBvcmllbnRhdGlvbi5cclxuICAgICAqIFZlcnRpY2FsIGRpc3BsYXlzIGNvbnRhaW5lciBmcm9tIHRvcCB0byBib3R0b20gb2YgcGFnZSwgaG9yaXpvbnRhbCBkaXNwbGF5cyBmcm9tIGxlZnQgdG8gcmlnaHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXQgb3JpZW50YXRpb24oKTogQWN0aW9uQ29udGFpbmVyT3JpZW50YXRpb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IG9mIEhUTUwgZGVmaW5lZCBBY3Rpb25JdGVtIG9iamVjdHMgc3RvcmVkIGluIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbignYWN0aW9uJylcclxuICAgIHB1YmxpYyBjaGlsZEFjdGlvbnM6IFF1ZXJ5TGlzdDxBY3Rpb25JdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgcHJvZ3JhbW1hdGljYWxseSBkZWZpbmVkIEFjdGlvbkl0ZW0gb2JqZWN0cyBzdG9yZWQgaW4gQWN0aW9uQ29udGFpbmVyQ29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBhY3Rpb25zKGFjdGlvbnM6IEFjdGlvbkl0ZW1bXSkge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxBY3Rpb25zID0gYWN0aW9ucyB8fCBbXTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgc2V0IHRvIGRpc3BsYXkgZWl0aGVyIEhUTUwgb3IgcHJvZ3JhbW1hdGljYWxseSBkZWZpbmVkIEFjdGlvbkl0ZW0gb2JqZWN0cyBmaXJzdC5cclxuICAgICAqIFRydWUgdG8gZGlzcGxheSBIVE1MIGRlZmluZWQgYWN0aW9ucyBmaXJzdCwgZmFsc2UgdG8gZGlzcGxheSBwcm9ncmFtbWF0aWNhbGx5IGRlZmluZWQgYWN0aW9ucyBmaXJzdCAoZGVmYXVsdHMgdG8gZmFsc2UpLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBkaXNwbGF5SW5saW5lQWN0aW9uc0ZpcnN0KGRpc3BsYXlGaXJzdDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUlubGluZUFjdGlvbnNGaXJzdEludGVybmFsID0gZGlzcGxheUZpcnN0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBhbGwgQWN0aW9uSXRlbSBvYmplY3RzIHN0b3JlZCBpbiBBY3Rpb25Db250YWluZXJDb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgYWN0aW9ucygpOiBBY3Rpb25JdGVtW10ge1xyXG4gICAgICAgIHRoaXMuY29tYmluZWRBY3Rpb25zLmxlbmd0aCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuY29tYmluZWRBY3Rpb25zLnB1c2guYXBwbHkoXHJcbiAgICAgICAgICAgIHRoaXMuY29tYmluZWRBY3Rpb25zLFxyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbmxpbmVBY3Rpb25zRmlyc3RJbnRlcm5hbCA/IHRoaXMuaW5saW5lQWN0aW9ucy5jb25jYXQodGhpcy5pbnRlcm5hbEFjdGlvbnMpXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuaW50ZXJuYWxBY3Rpb25zLmNvbmNhdCh0aGlzLmlubGluZUFjdGlvbnMpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tYmluZWRBY3Rpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGFyZ2V0IG9iamVjdCB1c2VkIGJ5IGNoaWxkIGFjdGlvbnMgb2YgQWN0aW9uQ29udGFpbmVyQ29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0YXJnZXQoaW5wdXQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxUYXJnZXQgPSBpbnB1dDtcclxuICAgICAgICB0aGlzLnRhcmdldENoYW5nZS5lbWl0KHRoaXMuaW50ZXJuYWxUYXJnZXQpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQWN0aW9uU3RhdGVzKCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHRhcmdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFRhcmdldDtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB0YXJnZXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgc2V0IHRvIGVuYWJsZSBvciBkaXNhYmxlIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZW5hYmxlZChpbnB1dDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuZW5hYmxlZEludGVybmFsID0gISFpbnB1dDtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvblN0YXRlcygpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBlbmFibGVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVuYWJsZWRJbnRlcm5hbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IGVtaXR0ZXIgZmlyZWQgd2hlbmV2ZXIgYW4gZXJyb3Igb2NjdXJzIHdpdGhpbiBhIGNoaWxkIEFjdGlvbkl0ZW0uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXHJcbiAgICBwdWJsaWMgZXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCBlbWl0dGVyIGZpcmVkIHdoZW5ldmVyIGEgY2hpbGQgQWN0aW9uSXRlbSBpcyBleGVjdXRlZC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZXhlY3V0ZWQ6IEV2ZW50RW1pdHRlcjxBY3Rpb25JdGVtRXhlY3V0ZWRFdmVudEFyZ3M+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25JdGVtRXhlY3V0ZWRFdmVudEFyZ3M+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgYW55IGNoaWxkIEFjdGlvbkl0ZW0gb2JqZWN0cyBoYXZlIHRoZSBidXN5IGZsYWcgc2V0LCBmYWxzZSBvdGhlcndpc2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaXNCdXN5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMgJiYgdGhpcy5hY3Rpb25zLnNvbWUoYWN0aW9uID0+IGFjdGlvbi5idXN5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgYWxsIGNoaWxkIEFjdGlvbkl0ZW0gb2JqZWN0cywgYm90aCBIVE1MIGFuZCBwcm9ncmFtbWF0aWNhbGx5IGRlZmluZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb21iaW5lZEFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBwcm9ncmFtbWF0aWNhbGx5IGRlZmluZWQgQWN0aW9uSXRlbSBvYmplY3RzIHN0b3JlZCBpbiBBY3Rpb25Db250YWluZXJDb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbnRlcm5hbEFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBMaXN0IG9mIEhUTUwgZGVmaW5lZCBBY3Rpb25JdGVtIG9iamVjdHMgc3RvcmVkIGluIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudC5cclxuICAgICovXHJcbiAgICBwdWJsaWMgaW5saW5lQWN0aW9uczogQWN0aW9uSXRlbVtdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBkaXNwbGF5SW5saW5lQWN0aW9uc0ZpcnN0SW50ZXJuYWwgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgZW5hYmxlZEludGVybmFsID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgaW50ZXJuYWxUYXJnZXQ6IGFueTtcclxuICAgIHByaXZhdGUgYWN0aW9uc0RpZmZlcjogSXRlcmFibGVEaWZmZXI8YW55PjtcclxuICAgIHByaXZhdGUgd2FzQnVzeTogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgY29tcGxldGVkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvciBmb3IgQWN0aW9uQ29udGFpbmVyQ29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGl0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBtZXRob2QgcnVuIHdoZW4gQWN0aW9uQ29udGFpbmVyQ29tcG9uZW50IGlzIGluaXRpYWxpemVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gd2hlbmV2ZXIgYW4gYWN0aW9uIGV4ZWN1dGVzIG9yIGVycm9ycywgdXBkYXRlIGFjdGlvbiBzdGF0ZXNcclxuICAgICAgICAvLyBOT1RFOiBBbmd1bGFyIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgd2Ugc2hvdWxkIG5vdCB0cmVhdCBldmVudCBlbWl0dGVycyBhcyBvYnNlcnZhYmxlcy5cclxuICAgICAgICAvLyBpbiB0aGUgZnV0dXJlIHRoaXMgY291bGQgYnJlYWsgaWYgYW5ndWxhciBjaGFuZ2VzIGl0cyBpbXBsZW1lbnRhdGlvbi5cclxuICAgICAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIgYW5vdGhlciB3YXkgb2Ygc3VyZmFjaW5nIHRoaXMuXHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZWRTdWJzY3JpcHRpb24gPSBtZXJnZSh0aGlzLmV4ZWN1dGVkLCB0aGlzLmVycm9yKS5zdWJzY3JpYmUobmV4dCA9PiB0aGlzLnVwZGF0ZUFjdGlvblN0YXRlcygpKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBtZXRob2QgcnVuIHdoZW4gQWN0aW9uQ29udGFpbmVyQ29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuY29tcGxldGVkU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHJ1biBpbW1lZGlhdGVseSBhZnRlciBBbmd1bGFyIGhhcyBjb21wbGV0ZWQgaW5pdGlhbGl6YXRpb24gb2YgYWxsIG9mIEFjdGlvbkNvbnRhaW5lckNvbXBvbmVudCdzIGNvbnRlbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jaGlsZEFjdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmxpbmVBY3Rpb25zLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuaW5saW5lQWN0aW9ucy5wdXNoLmFwcGx5KHRoaXMuaW5saW5lQWN0aW9ucywgdGhpcy5jaGlsZEFjdGlvbnMubWFwKGl0ZW0gPT4gaXRlbS5hY3Rpb24pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlubGluZUFjdGlvbnMgPSB0aGlzLmNoaWxkQWN0aW9ucy5tYXAoaXRlbSA9PiBpdGVtLmFjdGlvbik7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTmVlZHMgbW9yZSBpbnZlc3RpZ2F0aW9uLlxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFyJ3MgZG9DaGVjayBsaWZlIGN5Y2xlIGhvb2suIE5vdGUgdGhlcmUgaXMgYW4gb2RkIGNvbmRpdGlvbiB3aGVuIHRyeWluZyB0byBjcmVhdGUgZHluYW1pYyB0b29sYmFyIGl0ZW1zIGlubGluZSB3aXRoIG5nIGZvci5cclxuICAgICAqIFNvbWVob3cgdGhpcyBtZXRob2QgaXMgbm90IGdldHRpbmcgY2FsbGVkIGluIHRpbWUgdG8gaW5pdGlhbGl6ZSB0aGUgYnV0dG9uIHRoYXQgaXMgY3JlYXRlZCBieSB0aGUgbmcgZm9yIHN0YXRlbWVudC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hY3Rpb25zRGlmZmVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmFjdGlvbnNEaWZmZXIuZGlmZih0aGlzLmFjdGlvbnMpO1xyXG4gICAgICAgICAgICBpZiAoY2hhbmdlcykge1xyXG4gICAgICAgICAgICAgICAgY2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPEFjdGlvbkl0ZW0+KSA9PiAocmVjb3JkLml0ZW0pLmFkZGVkVG9Db250YWluZXIodGhpcy50YXJnZXQsIHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPEFjdGlvbkl0ZW0+KSA9PiAocmVjb3JkLml0ZW0pLnJlbW92ZWRGcm9tQ29udGFpbmVyKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy53YXNCdXN5ICE9PSB0aGlzLmlzQnVzeSkge1xyXG4gICAgICAgICAgICB0aGlzLndhc0J1c3kgPSB0aGlzLmlzQnVzeTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3Rpb25TdGF0ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gdXBkYXRlIGFsbCBjaGlsZCBBY3Rpb25JdGVtIG9iamVjdHMgc3RhdGVzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlQWN0aW9uU3RhdGVzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbnMgJiYgdGhpcy5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IGFjdGlvbi5zZXRBY3Rpb25TdGF0ZSh0aGlzLnRhcmdldCwgdGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUFjdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25zRGlmZmVyID0gdGhpcy5pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLmFjdGlvbnMpLmNyZWF0ZShudWxsKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvblN0YXRlcygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -205,7 +205,7 @@ export class AlertBarComponent extends CoreBaseComponent {
|
|
|
205
205
|
ngOnDestroy() {
|
|
206
206
|
this.alertBarService.unregister(this.id);
|
|
207
207
|
if (this.dialogSubscriptions) {
|
|
208
|
-
this.dialogSubscriptions.forEach(sub => sub
|
|
208
|
+
this.dialogSubscriptions.forEach(sub => sub?.unsubscribe());
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
/**
|
|
@@ -336,4 +336,4 @@ __decorate([
|
|
|
336
336
|
}], function () { return [{ type: i0.Injector }, { type: i1.AlertBarService }, { type: i2.DialogService }]; }, { id: [{
|
|
337
337
|
type: Input
|
|
338
338
|
}], assignClamped: [] }); })();
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2FsZXJ0LWJhci9hbGVydC1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvYWxlcnQtYmFyL2FsZXJ0LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFFeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQW1CLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7SUNHaEYsZ0NBR3lEO0lBSEcsd05BQVMsZUFBQSxvQ0FBMEIsQ0FBQSxJQUFDO0lBR3ZDLGlCQUFPOzs7O0lBRDlELCtGQUFpRyw4REFBQTs7O0lBYy9GLDZCQUFxRztJQUNuRyxZQUNGO0lBQUEsaUJBQUk7OztJQUYrRCw4Q0FBaUM7SUFDbEcsZUFDRjtJQURFLGlEQUNGOzs7SUFDQSw2QkFBb0c7SUFDbEcsWUFDRjtJQUFBLGlCQUFJOzs7SUFGOEQsOENBQWlDO0lBQ2pHLGVBQ0Y7SUFERSxpREFDRjs7OztJQUlJLDZCQUEyRjtJQUFwRCw2TkFBUyxnQkFBWSxTQUFDLGVBQUEsb0NBQTRCLENBQUEsSUFBQztJQUN4RixZQUNGO0lBQUEsaUJBQUk7OztJQURGLGVBQ0Y7SUFERSxxREFD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dkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssU0FBUyxDQUFDLEtBQVk7UUFDMUIsT0FBTyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzNGLENBQUM7O3FHQTdLUSxpQkFBaUI7bUdBQWpCLGlCQUFpQjtRQ1o5Qiw4QkFBMkY7UUFFekYsb0VBK0RNO1FBQ1IsaUJBQU07O1FBaEVtQixlQUFTO1FBQVQsb0NBQVM7O0FEaUc5QjtJQUFDLFFBQVEsRUFBRTs7OztzREFHVjt1RkExRlEsaUJBQWlCO2NBSjdCLFNBQVM7MkJBQ0ksZUFBZTtxSEFZbEIsRUFBRTtrQkFEUixLQUFLO1lBZ0ZDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGVib3VuY2UgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy9kZWJvdW5jZS5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nQ2hhbmdlRXZlbnQsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdGF0dXNJY29uVHlwZSB9IGZyb20gJy4uL2ljb24vbGF5ZXJlZC1pY29uL3N0YXR1cy9zdGF0dXMtaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydCwgQWxlcnRCYXIsIEFsZXJ0QmFyU2VydmljZSwgQWxlcnRTZXZlcml0eSB9IGZyb20gJy4vYWxlcnQtYmFyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1hbGVydC1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LWJhci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFsZXJ0QmFyQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWxlcnRCYXIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ0FsZXJ0QmFyQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlkOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGRpYWxvZ1N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgLy8gS2VlcCB0aGUgYXJyYXkgdG8gbWFpbnRhaW4gdGhlIG9yZGVyIG9mIEFsZXJ0cyByZWNlaXZlZC5cclxuICAgIHB1YmxpYyBhbGVydHM6IEFsZXJ0W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUge0FsZXJ0QmFyQ29tcG9uZW50fSBjbGFzcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYWxlcnRCYXJTZXJ2aWNlIFRoZSBhbGVydCBzZXJ2aWNlLlxyXG4gICAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyLlxyXG4gICAgICogQHBhcmFtIGFjdGl2YXRlZFJvdXRlIFRoZSBhY3RpdmF0ZWQgcm91dGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBhbGVydEJhclNlcnZpY2U6IEFsZXJ0QmFyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1ldGhvZCB0byBydW4gd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGVydHMgPSBbXTtcclxuICAgICAgICB0aGlzLmFsZXJ0QmFyU2VydmljZS5yZWdpc3Rlcih0aGlzLCB0aGlzLmlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTdWJzY3JpcHRpb25zLnB1c2godGhpcy5kaWFsb2dTZXJ2aWNlLmNoYW5nZWQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgLy8gY2xlYXIgYWxsIGFsZXJ0cyBpZiB0aGUgbm90aWZpY2F0aW9uIGRpYWxvZyBvcGVuc1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuZGlhbG9nSWQgPT09IHRoaXMuZGlhbG9nU2VydmljZS5jb21tb25JZHMubm90aWZpY2F0aW9uc1BhbmUgJiYgZXZlbnQuY2hhbmdlRXZlbnQgPT09IERpYWxvZ0NoYW5nZUV2ZW50LlNob3cpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRzID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWV0aG9kIHRvIHJ1biB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGVydEJhclNlcnZpY2UudW5yZWdpc3Rlcih0aGlzLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2dTdWJzY3JpcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3BlbiBkZXRhaWxzIHZpZXcgaW4gbm90aWZpY2F0aW9uIHBhbmVcclxuICAgICAqIEBwYXJhbSBhbGVydCB0aGUgYWxlcnQgY2xpY2tlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3Blbk5vdGlmaWNhdGlvbkRldGFpbHMoYWxlcnQ6IEFsZXJ0KSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93KHRoaXMuZGlhbG9nU2VydmljZS5jb21tb25JZHMubm90aWZpY2F0aW9uc1BhbmUsIHsgaWQ6IGFsZXJ0LmlkIH0pLnN1YnNjcmliZSgpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNsaWNrIHRoZSBtZXNzYWdlIGV4cGFuZCBidXR0b25cclxuICAgICAqIEBwYXJhbSBldmVudCB0aGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBhbGVydCB0aGUgYWxlcnQgY2xpY2tlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xpY2tFeHBhbmQoZXZlbnQ6IEV2ZW50LCBhbGVydDogQWxlcnQpIHtcclxuICAgICAgICBhbGVydC5pc0V4cGFuZGVkID0gIWFsZXJ0LmlzRXhwYW5kZWQ7XHJcbiAgICAgICAgdGhpcy5zdG9wQ2xpY2tQcm9wYWdhdGlvbihldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBldmVudFxyXG4gICAgICogQHBhcmFtIGV2ZW50IHRoZSBldmVudCB0byBzdG9wXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdG9wQ2xpY2tQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFzc2lnbnMgbmVlZHNDbGFtcCBwcm9wZXJseSB0byBnaXZlbiBhbGVydFxyXG4gICAgICogQHBhcmFtIGFsZXJ0IHRoZSBhbGVydFxyXG4gICAgICogQHBhcmFtIGV2ZW50IHRoZSBjbGFtcGVkIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIEBEZWJvdW5jZSgpXHJcbiAgICBwdWJsaWMgYXNzaWduQ2xhbXBlZChhbGVydDogQWxlcnQsIGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBhbGVydC5uZWVkc0NsYW1wID0gZXZlbnQuY2xhbXBlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHN0YXR1cyBzdHJpbmcgZm9yIHRoZSBzdGF0dXMgaWNvblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGVydCBUaGUgYWxlcnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTdGF0dXNTdHJpbmcoYWxlcnQ6IEFsZXJ0KTogU3RhdHVzSWNvblR5cGUge1xyXG4gICAgICAgIHN3aXRjaCAoYWxlcnQuc2V2ZXJpdHkpIHtcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkVycm9yOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1c0ljb25UeXBlLkVycm9yO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuV2FybmluZzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5XYXJuaW5nO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuU3VjY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5TdWNjZXNzO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuSW5Qcm9ncmVzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5Qcm9ncmVzcztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkluZm9ybWF0aW9uYWw6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuSW5mbztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEljb25UaXRsZShhbGVydDogQWxlcnQpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoYWxlcnQuc2V2ZXJpdHkpIHtcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkVycm9yOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5FcnJvcjtcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5Lldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkFsZXJ0QmFyLldhcm5pbmc7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRTZXZlcml0eS5TdWNjZXNzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5TdWNjZXNzO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuSW5Qcm9ncmVzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQWxlcnRCYXIuSW5Qcm9ncmVzcztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkluZm9ybWF0aW9uYWw6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkFsZXJ0QmFyLkluZm9ybWF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIGFuIGFsZXJ0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGVydCBUaGUgYWxlcnQgdG8gc2hvdy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNob3coYWxlcnQ6IEFsZXJ0KTogdm9pZCB7XHJcbiAgICAgICAgLy8gZG9uJ3Qgc2hvdyBwb3B1cCBpZiBub3RpZmljYXRpb25zIGFyZSBhbHJlYWR5IG9wZW5cclxuICAgICAgICBpZiAoIU1zZnRTbWUuZmluZCh0aGlzLmRpYWxvZ1NlcnZpY2UuYWN0aXZlRGlhbG9nc1N0YWNrLCBkaWFsb2cgPT4gZGlhbG9nLmlkID09PSB0aGlzLmRpYWxvZ1NlcnZpY2UuY29tbW9uSWRzLm5vdGlmaWNhdGlvbnNQYW5lKSkge1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0FsZXJ0ID0gdGhpcy5hbGVydHMuZmluZCh4ID0+IHguaWQgPT09IGFsZXJ0LmlkIHx8IHRoaXMuaW5kZXhOYW1lKHgpID09PSB0aGlzLmluZGV4TmFtZShhbGVydCkpO1xyXG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdBbGVydCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nQWxlcnQuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChleGlzdGluZ0FsZXJ0LnNldFRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWxlcnQuc2V0VGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNzKGV4aXN0aW5nQWxlcnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoYWxlcnQuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGFsZXJ0LnNldFRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgYWxlcnQuc2V0VGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnRzLnVuc2hpZnQoYWxlcnQpO1xyXG4gICAgICAgICAgICBhbGVydC5zZXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZGlzbWlzcyhhbGVydCk7IH0sIDcwMDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc21pc3NlcyBhbiBhbGVydC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYWxlcnQgVGhlIGFsZXJ0IHRvIGRpc21pc3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkaXNtaXNzKGFsZXJ0OiBBbGVydCk6IHZvaWQge1xyXG4gICAgICAgIE1zZnRTbWUucmVtb3ZlKHRoaXMuYWxlcnRzLCBhbGVydCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGUgdGhlIGluZGV4IG5hbWUgaW4gbWFwIGNvbGxlY3Rpb24uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGFsZXJ0IHRoZSBhbGVydFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluZGV4TmFtZShhbGVydDogQWxlcnQpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBhbGVydC5zZXZlcml0eSArICc6JyArIGFsZXJ0LnRpdGxlICsgJzonICsgYWxlcnQubWVzc2FnZSArICc6JyArIGFsZXJ0Lm5vZGVOYW1lO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWUtbGF5ZXItbm90aWZpY2F0aW9uIHNtZS1sYXlvdXQtYWJzb2x1dGUgc21lLWxheW91dC1ub3RpZmljYXRpb24tcG9wdXAtbGlzdFwiPlxyXG5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBhbGVydCBvZiBhbGVydHNcIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwib3Blbk5vdGlmaWNhdGlvbkRldGFpbHMoYWxlcnQpXCJcclxuICAgIGNsYXNzPVwic21lLWxheW91dC1ub3RpZmljYXRpb24tcG9wdXAgc21lLXNoYWRvdy1ub3RpZmljYXRpb24tcG9wdXAgc21lLW1hcmdpbi1yaWdodC1zbSBzbWUtbWFyZ2luLXRvcC1zbSBzbWUtYXJyYW5nZS1zdGFjay1oXHJcbiAgICBzbWUtYmFja2dyb3VuZC1jb2xvci1hbHQtNSBzbWUtYm9yZGVyLWNvbG9yLWFsdC01IHNtZS1wYWRkaW5nLXRvcC14cyBzbWUtcGFkZGluZy1sZWZ0LXNtIHNtZS1wYWRkaW5nLXJpZ2h0LXhzIHNtZS1wYWRkaW5nLWJvdHRvbS14cyBzbWUtYmVoYXZpb3ItaG92ZXItdHJpZ2dlclwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay12XCI+XHJcbiAgICAgIDxzbWUtc3RhdHVzLWljb24gY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14cyBzbWUtcGFkZGluZy10b3AteHh4c1wiIFtzdGF0dXNdPVwiZ2V0U3RhdHVzU3RyaW5nKGFsZXJ0KVwiIHNpemU9XCIxNnB4XCJcclxuICAgICAgICBbdGl0bGVdPVwiZ2V0SWNvblRpdGxlKGFsZXJ0KVwiPjwvc21lLXN0YXR1cy1pY29uPlxyXG4gICAgICA8c3BhbiByb2xlPVwiYnV0dG9uXCIgKm5nSWY9XCJhbGVydC50aXRsZSAmJiBhbGVydC5uZWVkc0NsYW1wXCIgKGNsaWNrKT1cImNsaWNrRXhwYW5kKCRldmVudCwgYWxlcnQpXCJcclxuICAgICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtcGFkZGluZy1pbnNldC1ub25lIHNtZS1pY29uIHNtZS1wYWRkaW5nLXRvcC14eHMgc21lLWJlaGF2aW9yLWhvdmVyLXRhcmdldC1zaG93XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J3NtZS1pY29uLWNoZXZyb25Eb3duJzphbGVydC5pc0V4cGFuZGVkLCAnc21lLWljb24tY2hldnJvblJpZ2h0JzogIWFsZXJ0LmlzRXhwYW5kZWR9XCJcclxuICAgICAgICBbdGl0bGVdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5FeHBhbmRcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IHJvbGU9XCJhbGVydFwiIGlkPVwic21lLWFsZXJ0LWJhci1jb250ZW50XCJcclxuICAgICAgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUteCBzbWUtYXJyYW5nZS13b3JkLXdyYXAtYnJlYWstd29yZCBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21lLWxheW91dC1ub3RpZmljYXRpb24tbWVzc2FnZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3sgZ2V0SWNvblRpdGxlKGFsZXJ0KSB9fTwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwic21lLWZvbnQtZmFtaWx5LWJvbGQgc21lLWZvbnQtbGFiZWwgc21lLW1hcmdpbi1pbnNldC1ub25lIHNtZS1wYWRkaW5nLXRvcC14eHhzIHNtZS1wb3NpdGlvbi1zdHJldGNoLWggc21lLXBvc2l0aW9uLWxlZnQtaW5saW5lXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhbGVydC50aXRsZSB8fCBhbGVydC5tZXNzYWdlXCI+e3sgYWxlcnQudGl0bGUgfHwgYWxlcnQubWVzc2FnZSB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2stdlwiPlxyXG4gICAgICAgICAgPHAgKm5nSWY9XCJhbGVydC50aXRsZSAmJiAhYWxlcnQuaXNFeHBhbmRlZFwiIGNsYXNzPVwic21lLWZvbnQtbGFiZWxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFsZXJ0Lm1lc3NhZ2VcIj5cclxuICAgICAgICAgICAge3sgYWxlcnQubWVzc2FnZSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPHAgKm5nSWY9XCJhbGVydC50aXRsZSAmJiBhbGVydC5pc0V4cGFuZGVkXCIgY2xhc3M9XCJzbWUtZm9udC1sYWJlbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYWxlcnQubWVzc2FnZVwiPlxyXG4gICAgICAgICAgICB7eyBhbGVydC5tZXNzYWdlIH19XHJcbiAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgPGxhYmVsICpuZ0lmPVwiYWxlcnQubGlua3NcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbGluayBvZiBhbGVydC5saW5rc1wiPlxyXG4gICAgICAgICAgICAgIDxhICpuZ0lmPVwibGluay5ldmVudFwiIGNsYXNzPVwic21lLWxpbmtcIiAoY2xpY2spPVwibGluay5ldmVudCgpO3N0b3BDbGlja1Byb3BhZ2F0aW9uKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxpbmsuZGlzcGxheVRleHQgfX1cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFsaW5rLmV2ZW50ICYmIGxpbmsudXJpXCIgKGNsaWNrKT1cInN0b3BDbGlja1Byb3BhZ2F0aW9uKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwibGluay5pc0V4dGVybmFsTGlua1wiIGNsYXNzPVwic21lLWxpbmtcIiBbaHJlZl09XCJsaW5rLnVyaVwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBsaW5rLmRpc3BsYXlUZXh0IH19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiFsaW5rLmlzRXh0ZXJuYWxMaW5rXCIgY2xhc3M9XCJzbWUtbGlua1wiIFtyb3V0ZXJMaW5rXT1cImxpbmsudXJpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGxpbmsuZGlzcGxheVRleHQgfX1cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLWggc21lLWZvbnQtbGFiZWwgc21lLWNvbG9yLWJhc2UtNDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0byBzbWUtYXJyYW5nZS1lbGxpcHNpc1wiPnt7IGFsZXJ0Lm5vZGVOYW1lIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLW1hcmdpbi1sZWZ0LXh4c1wiPiB7eyBhbGVydC50aW1lc3RhbXAgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLXZcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwic21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1wYWRkaW5nLWluc2V0LW5vbmUgc21lLXBhZGRpbmctbGVmdC14eHMgc21lLXBhZGRpbmctcmlnaHQteHhzXCJcclxuICAgICAgICAoY2xpY2spPVwiZGlzbWlzcyhhbGVydClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQWxlcnRCYXIuRGlzbWlzc0FyaWFMYWJlbFwiXHJcbiAgICAgICAgZGF0YS11dGEtaWQ9XCJjYW5jZWwtYWxlcnRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwic21lLWFsZXJ0LWJhci1jb250ZW50XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1jYW5jZWxcIiBbdGl0bGVdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5EaXNtaXNzXCI+PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2FsZXJ0LWJhci9hbGVydC1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvYWxlcnQtYmFyL2FsZXJ0LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFFeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQW1CLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7SUNHaEYsZ0NBR3lEO0lBSEcsd05BQVMsZUFBQSxvQ0FBMEIsQ0FBQSxJQUFDO0lBR3ZDLGlCQUFPOzs7O0lBRDlELCtGQUFpRyw4REFBQTs7O0lBYy9GLDZCQUFxRztJQUNuRyxZQUNGO0lBQUEsaUJBQUk7OztJQUYrRCw4Q0FBaUM7SUFDbEcsZUFDRjtJQURFLGlEQUNGOzs7SUFDQSw2QkFBb0c7SUFDbEcsWUFDRjtJQUFBLGlCQUFJOzs7SUFGOEQsOENBQWlDO0lBQ2pHLGVBQ0Y7SUFERSxpREFDRjs7OztJQUlJLDZCQUEyRjtJQUFwRCw2TkFBUyxnQkFBWSxTQUFDLGVBQUEsb0NBQTRCLENBQUEsSUFBQztJQUN4RixZQUNGO0lBQUEsaUJBQUk7OztJQURGLGVBQ0Y7SUFERSxxREFDRjs7O0lBRUUsNkJBQWtGO0lBQ2hGLFlBQ0Y7SUFBQSxpQkFBSTs7O0lBRjRDLHFEQUFpQjtJQUMvRCxlQUNGO0lBREUscURBQ0Y7OztJQUNBLDZCQUF5RTtJQUN2RSxZQUNGO0lBQUEsaUJBQUk7OztJQUY2Qyx5Q0FBdUI7SUFDdEUsZUFDRjtJQURFLHFEQUNGOzs7O0lBTkYsK0JBQTRFO0lBQXZDLHlMQUFTLGVBQUEsb0NBQTRCLENBQUEsSUFBQztJQUN6RSwwRkFFSTtJQUNKLDBGQUVJO0lBQ04saUJBQU07OztJQU5BLGVBQXlCO0lBQXpCLDhDQUF5QjtJQUd6QixlQUEwQjtJQUExQiwrQ0FBMEI7OztJQVJsQywyQkFBc0M7SUFDcEMsb0ZBRUk7SUFDSix3RkFPTTtJQUNSLGlCQUFNOzs7SUFYQSxlQUFnQjtJQUFoQixxQ0FBZ0I7SUFHZCxlQUE2QjtJQUE3QixzREFBNkI7OztJQUx2Qyw2QkFBMkI7SUFDekIsa0ZBWU07SUFDUixpQkFBUTs7O0lBYmdCLGVBQWM7SUFBZCx3Q0FBYzs7OztJQS9COUMsOEJBRWtLO0lBRm5ILHlOQUFTLGVBQUEseUNBQThCLENBQUEsSUFBQztJQUlyRiw4QkFBaUM7SUFDL0IscUNBQ2tEO0lBQ2xELDBFQUdnRTtJQUNsRSxpQkFBTTtJQUVOLDhCQUNrSCxhQUFBLGFBQUEsV0FBQTtJQUkvRSxZQUF5QjtJQUFBLGlCQUFJO0lBQzFELDZCQUNtRDtJQUFBLGFBQWtDO0lBQUEsaUJBQUksRUFBQTtJQUUzRiwrQkFBaUM7SUFDL0IsdUVBRUk7SUFDSix1RUFFSTtJQUVKLCtFQWNRO0lBQ1YsaUJBQU0sRUFBQTtJQUVSLGdDQUFrRSxlQUFBO0lBQ1AsYUFBb0I7SUFBQSxpQkFBTTtJQUNuRixnQ0FBd0Q7SUFBQyxhQUFxQjtJQUFBLGlCQUFNLEVBQUEsRUFBQTtJQUt4RiwrQkFBaUMsa0JBQUE7SUFHN0IsNk5BQVMsZUFBQSx5QkFBYyxDQUFBLElBQUM7SUFFeEIsNEJBQXNHO0lBQ3hHLGlCQUFTLEVBQUEsRUFBQTs7OztJQXZEMEQsZUFBaUM7SUFBakMseURBQWlDLHdDQUFBO0lBRS9FLGVBQXFDO0lBQXJDLDREQUFxQztJQVd6QixlQUF5QjtJQUF6QixtREFBeUI7SUFFcEQsZUFBZ0Q7SUFBaEQsZ0VBQWdEO0lBQUMsZUFBa0M7SUFBbEMsd0RBQWtDO0lBR2pGLGVBQXNDO0lBQXRDLDZEQUFzQztJQUd0QyxlQUFxQztJQUFyQyw0REFBcUM7SUFJakMsZUFBaUI7SUFBakIscUNBQWlCO0lBa0I4QixlQUFvQjtJQUFwQix1Q0FBb0I7SUFDcEIsZUFBcUI7SUFBckIsa0RBQXFCO0lBUXJELGVBQTBFO0lBQTFFLDJGQUEwRTtJQUU1RCxlQUF1RDtJQUF2RCw0RUFBdUQ7O0FEakR0RyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBZXBEOzs7Ozs7T0FNRztJQUNILFlBQ0ksUUFBa0IsRUFDVixlQUFnQyxFQUNoQyxhQUE0QjtRQUNoQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFGWixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFmaEMsd0JBQW1CLEdBQW1CLEVBQUUsQ0FBQztJQWlCakQsQ0FBQztJQTFCRDs7T0FFRztJQUNILElBQWMsYUFBYTtRQUN2QixPQUFPLG1CQUFtQixDQUFDO0lBQy9CLENBQUM7SUF1QkQ7O09BRUc7SUFDSSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RSxvREFBb0Q7WUFDcEQsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssaUJBQWlCLENBQUMsSUFBSSxFQUFFO2dCQUNuSCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUNwQjtRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUMvRDtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSx1QkFBdUIsQ0FBQyxLQUFZO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUN4RyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsS0FBWSxFQUFFLEtBQVk7UUFDekMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFZO1FBQ3BDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUVJLGFBQWEsQ0FBQyxLQUFZLEVBQUUsS0FBVTtRQUN6QyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsS0FBWTtRQUMvQixRQUFRLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDcEIsS0FBSyxhQUFhLENBQUMsS0FBSztnQkFDcEIsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ2hDLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3RCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQztZQUNsQyxLQUFLLGFBQWEsQ0FBQyxPQUFPO2dCQUN0QixPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDbEMsS0FBSyxhQUFhLENBQUMsVUFBVTtnQkFDekIsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQ25DLEtBQUssYUFBYSxDQUFDLGFBQWEsQ0FBQztZQUNqQztnQkFDSSxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQVk7UUFDNUIsUUFBUSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3BCLEtBQUssYUFBYSxDQUFDLEtBQUs7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDNUQsS0FBSyxhQUFhLENBQUMsT0FBTztnQkFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUM5RCxLQUFLLGFBQWEsQ0FBQyxPQUFPO2dCQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzlELEtBQUssYUFBYSxDQUFDLFVBQVU7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDakUsS0FBSyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ2pDO2dCQUNJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7U0FDckU7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxLQUFZO1FBQ3BCLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzlILE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlHLElBQUksYUFBYSxFQUFFO2dCQUNmLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRTtvQkFDMUIsWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdkMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQ25DO2dCQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDL0I7WUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7Z0JBQ2xCLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9CLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2FBQzNCO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsS0FBSyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLEtBQVk7UUFDdkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssU0FBUyxDQUFDLEtBQVk7UUFDMUIsT0FBTyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzNGLENBQUM7O3FHQTdLUSxpQkFBaUI7bUdBQWpCLGlCQUFpQjtRQ1o5Qiw4QkFBMkY7UUFFekYsb0VBK0RNO1FBQ1IsaUJBQU07O1FBaEVtQixlQUFTO1FBQVQsb0NBQVM7O0FEaUc5QjtJQUFDLFFBQVEsRUFBRTs7OztzREFHVjt1RkExRlEsaUJBQWlCO2NBSjdCLFNBQVM7MkJBQ0ksZUFBZTtxSEFZbEIsRUFBRTtrQkFEUixLQUFLO1lBZ0ZDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGVib3VuY2UgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy9kZWJvdW5jZS5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nQ2hhbmdlRXZlbnQsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdGF0dXNJY29uVHlwZSB9IGZyb20gJy4uL2ljb24vbGF5ZXJlZC1pY29uL3N0YXR1cy9zdGF0dXMtaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydCwgQWxlcnRCYXIsIEFsZXJ0QmFyU2VydmljZSwgQWxlcnRTZXZlcml0eSB9IGZyb20gJy4vYWxlcnQtYmFyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1hbGVydC1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LWJhci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFsZXJ0QmFyQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWxlcnRCYXIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ0FsZXJ0QmFyQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlkOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGRpYWxvZ1N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgLy8gS2VlcCB0aGUgYXJyYXkgdG8gbWFpbnRhaW4gdGhlIG9yZGVyIG9mIEFsZXJ0cyByZWNlaXZlZC5cclxuICAgIHB1YmxpYyBhbGVydHM6IEFsZXJ0W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUge0FsZXJ0QmFyQ29tcG9uZW50fSBjbGFzcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYWxlcnRCYXJTZXJ2aWNlIFRoZSBhbGVydCBzZXJ2aWNlLlxyXG4gICAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyLlxyXG4gICAgICogQHBhcmFtIGFjdGl2YXRlZFJvdXRlIFRoZSBhY3RpdmF0ZWQgcm91dGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBhbGVydEJhclNlcnZpY2U6IEFsZXJ0QmFyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1ldGhvZCB0byBydW4gd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGVydHMgPSBbXTtcclxuICAgICAgICB0aGlzLmFsZXJ0QmFyU2VydmljZS5yZWdpc3Rlcih0aGlzLCB0aGlzLmlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTdWJzY3JpcHRpb25zLnB1c2godGhpcy5kaWFsb2dTZXJ2aWNlLmNoYW5nZWQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgLy8gY2xlYXIgYWxsIGFsZXJ0cyBpZiB0aGUgbm90aWZpY2F0aW9uIGRpYWxvZyBvcGVuc1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuZGlhbG9nSWQgPT09IHRoaXMuZGlhbG9nU2VydmljZS5jb21tb25JZHMubm90aWZpY2F0aW9uc1BhbmUgJiYgZXZlbnQuY2hhbmdlRXZlbnQgPT09IERpYWxvZ0NoYW5nZUV2ZW50LlNob3cpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRzID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWV0aG9kIHRvIHJ1biB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGVydEJhclNlcnZpY2UudW5yZWdpc3Rlcih0aGlzLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2dTdWJzY3JpcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWI/LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4gZGV0YWlscyB2aWV3IGluIG5vdGlmaWNhdGlvbiBwYW5lXHJcbiAgICAgKiBAcGFyYW0gYWxlcnQgdGhlIGFsZXJ0IGNsaWNrZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9wZW5Ob3RpZmljYXRpb25EZXRhaWxzKGFsZXJ0OiBBbGVydCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvdyh0aGlzLmRpYWxvZ1NlcnZpY2UuY29tbW9uSWRzLm5vdGlmaWNhdGlvbnNQYW5lLCB7IGlkOiBhbGVydC5pZCB9KS5zdWJzY3JpYmUoKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjbGljayB0aGUgbWVzc2FnZSBleHBhbmQgYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgdGhlIGV2ZW50XHJcbiAgICAgKiBAcGFyYW0gYWxlcnQgdGhlIGFsZXJ0IGNsaWNrZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsaWNrRXhwYW5kKGV2ZW50OiBFdmVudCwgYWxlcnQ6IEFsZXJ0KSB7XHJcbiAgICAgICAgYWxlcnQuaXNFeHBhbmRlZCA9ICFhbGVydC5pc0V4cGFuZGVkO1xyXG4gICAgICAgIHRoaXMuc3RvcENsaWNrUHJvcGFnYXRpb24oZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc3RvcCBwcm9wYWdhdGlvbiBvbiB0aGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBldmVudCB0aGUgZXZlbnQgdG8gc3RvcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RvcENsaWNrUHJvcGFnYXRpb24oZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBc3NpZ25zIG5lZWRzQ2xhbXAgcHJvcGVybHkgdG8gZ2l2ZW4gYWxlcnRcclxuICAgICAqIEBwYXJhbSBhbGVydCB0aGUgYWxlcnRcclxuICAgICAqIEBwYXJhbSBldmVudCB0aGUgY2xhbXBlZCBldmVudFxyXG4gICAgICovXHJcbiAgICBARGVib3VuY2UoKVxyXG4gICAgcHVibGljIGFzc2lnbkNsYW1wZWQoYWxlcnQ6IEFsZXJ0LCBldmVudDogYW55KSB7XHJcbiAgICAgICAgYWxlcnQubmVlZHNDbGFtcCA9IGV2ZW50LmNsYW1wZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBzdGF0dXMgc3RyaW5nIGZvciB0aGUgc3RhdHVzIGljb25cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYWxlcnQgVGhlIGFsZXJ0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U3RhdHVzU3RyaW5nKGFsZXJ0OiBBbGVydCk6IFN0YXR1c0ljb25UeXBlIHtcclxuICAgICAgICBzd2l0Y2ggKGFsZXJ0LnNldmVyaXR5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRTZXZlcml0eS5FcnJvcjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5FcnJvcjtcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5Lldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuV2FybmluZztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LlN1Y2Nlc3M6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuU3VjY2VzcztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkluUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuUHJvZ3Jlc3M7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRTZXZlcml0eS5JbmZvcm1hdGlvbmFsOlxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1c0ljb25UeXBlLkluZm87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRJY29uVGl0bGUoYWxlcnQ6IEFsZXJ0KTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKGFsZXJ0LnNldmVyaXR5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRTZXZlcml0eS5FcnJvcjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQWxlcnRCYXIuRXJyb3I7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRTZXZlcml0eS5XYXJuaW5nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5XYXJuaW5nO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuU3VjY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQWxlcnRCYXIuU3VjY2VzcztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkluUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkFsZXJ0QmFyLkluUHJvZ3Jlc3M7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRTZXZlcml0eS5JbmZvcm1hdGlvbmFsOlxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5JbmZvcm1hdGlvbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyBhbiBhbGVydC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYWxlcnQgVGhlIGFsZXJ0IHRvIHNob3cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93KGFsZXJ0OiBBbGVydCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGRvbid0IHNob3cgcG9wdXAgaWYgbm90aWZpY2F0aW9ucyBhcmUgYWxyZWFkeSBvcGVuXHJcbiAgICAgICAgaWYgKCFNc2Z0U21lLmZpbmQodGhpcy5kaWFsb2dTZXJ2aWNlLmFjdGl2ZURpYWxvZ3NTdGFjaywgZGlhbG9nID0+IGRpYWxvZy5pZCA9PT0gdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbW1vbklkcy5ub3RpZmljYXRpb25zUGFuZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBbGVydCA9IHRoaXMuYWxlcnRzLmZpbmQoeCA9PiB4LmlkID09PSBhbGVydC5pZCB8fCB0aGlzLmluZGV4TmFtZSh4KSA9PT0gdGhpcy5pbmRleE5hbWUoYWxlcnQpKTtcclxuICAgICAgICAgICAgaWYgKGV4aXN0aW5nQWxlcnQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0FsZXJ0LnNldFRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZXhpc3RpbmdBbGVydC5zZXRUaW1lb3V0KTtcclxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FsZXJ0LnNldFRpbWVvdXQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcyhleGlzdGluZ0FsZXJ0KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGFsZXJ0LnNldFRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChhbGVydC5zZXRUaW1lb3V0KTtcclxuICAgICAgICAgICAgICAgIGFsZXJ0LnNldFRpbWVvdXQgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0cy51bnNoaWZ0KGFsZXJ0KTtcclxuICAgICAgICAgICAgYWxlcnQuc2V0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmRpc21pc3MoYWxlcnQpOyB9LCA3MDAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXNtaXNzZXMgYW4gYWxlcnQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGFsZXJ0IFRoZSBhbGVydCB0byBkaXNtaXNzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGlzbWlzcyhhbGVydDogQWxlcnQpOiB2b2lkIHtcclxuICAgICAgICBNc2Z0U21lLnJlbW92ZSh0aGlzLmFsZXJ0cywgYWxlcnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIHRoZSBpbmRleCBuYW1lIGluIG1hcCBjb2xsZWN0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGVydCB0aGUgYWxlcnRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbmRleE5hbWUoYWxlcnQ6IEFsZXJ0KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYWxlcnQuc2V2ZXJpdHkgKyAnOicgKyBhbGVydC50aXRsZSArICc6JyArIGFsZXJ0Lm1lc3NhZ2UgKyAnOicgKyBhbGVydC5ub2RlTmFtZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic21lLWxheWVyLW5vdGlmaWNhdGlvbiBzbWUtbGF5b3V0LWFic29sdXRlIHNtZS1sYXlvdXQtbm90aWZpY2F0aW9uLXBvcHVwLWxpc3RcIj5cclxuXHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgYWxlcnQgb2YgYWxlcnRzXCIgdGFiaW5kZXg9XCIwXCIgKGNsaWNrKT1cIm9wZW5Ob3RpZmljYXRpb25EZXRhaWxzKGFsZXJ0KVwiXHJcbiAgICBjbGFzcz1cInNtZS1sYXlvdXQtbm90aWZpY2F0aW9uLXBvcHVwIHNtZS1zaGFkb3ctbm90aWZpY2F0aW9uLXBvcHVwIHNtZS1tYXJnaW4tcmlnaHQtc20gc21lLW1hcmdpbi10b3Atc20gc21lLWFycmFuZ2Utc3RhY2staFxyXG4gICAgc21lLWJhY2tncm91bmQtY29sb3ItYWx0LTUgc21lLWJvcmRlci1jb2xvci1hbHQtNSBzbWUtcGFkZGluZy10b3AteHMgc21lLXBhZGRpbmctbGVmdC1zbSBzbWUtcGFkZGluZy1yaWdodC14cyBzbWUtcGFkZGluZy1ib3R0b20teHMgc21lLWJlaGF2aW9yLWhvdmVyLXRyaWdnZXJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2stdlwiPlxyXG4gICAgICA8c21lLXN0YXR1cy1pY29uIGNsYXNzPVwic21lLXBhZGRpbmctcmlnaHQteHMgc21lLXBhZGRpbmctdG9wLXh4eHNcIiBbc3RhdHVzXT1cImdldFN0YXR1c1N0cmluZyhhbGVydClcIiBzaXplPVwiMTZweFwiXHJcbiAgICAgICAgW3RpdGxlXT1cImdldEljb25UaXRsZShhbGVydClcIj48L3NtZS1zdGF0dXMtaWNvbj5cclxuICAgICAgPHNwYW4gcm9sZT1cImJ1dHRvblwiICpuZ0lmPVwiYWxlcnQudGl0bGUgJiYgYWxlcnQubmVlZHNDbGFtcFwiIChjbGljayk9XCJjbGlja0V4cGFuZCgkZXZlbnQsIGFsZXJ0KVwiXHJcbiAgICAgICAgY2xhc3M9XCJzbWUtYnV0dG9uLXRyaWdnZXIgc21lLWJ1dHRvbi1hdXRvLXdpZHRoIHNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLXBhZGRpbmctaW5zZXQtbm9uZSBzbWUtaWNvbiBzbWUtcGFkZGluZy10b3AteHhzIHNtZS1iZWhhdmlvci1ob3Zlci10YXJnZXQtc2hvd1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydzbWUtaWNvbi1jaGV2cm9uRG93bic6YWxlcnQuaXNFeHBhbmRlZCwgJ3NtZS1pY29uLWNoZXZyb25SaWdodCc6ICFhbGVydC5pc0V4cGFuZGVkfVwiXHJcbiAgICAgICAgW3RpdGxlXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQWxlcnRCYXIuRXhwYW5kXCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiByb2xlPVwiYWxlcnRcIiBpZD1cInNtZS1hbGVydC1iYXItY29udGVudFwiXHJcbiAgICAgIGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2stdiBzbWUtYXJyYW5nZS1vdmVyZmxvdy1oaWRlLXggc21lLWFycmFuZ2Utd29yZC13cmFwLWJyZWFrLXdvcmQgc21lLXBvc2l0aW9uLXN0cmV0Y2gtaFwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtZS1sYXlvdXQtbm90aWZpY2F0aW9uLW1lc3NhZ2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2staFwiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJzbWUtc2NyZWVuLXJlYWRlclwiPnt7IGdldEljb25UaXRsZShhbGVydCkgfX08L3A+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInNtZS1mb250LWZhbWlseS1ib2xkIHNtZS1mb250LWxhYmVsIHNtZS1tYXJnaW4taW5zZXQtbm9uZSBzbWUtcGFkZGluZy10b3AteHh4cyBzbWUtcG9zaXRpb24tc3RyZXRjaC1oIHNtZS1wb3NpdGlvbi1sZWZ0LWlubGluZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWxlcnQudGl0bGUgfHwgYWxlcnQubWVzc2FnZVwiPnt7IGFsZXJ0LnRpdGxlIHx8IGFsZXJ0Lm1lc3NhZ2UgfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLXZcIj5cclxuICAgICAgICAgIDxwICpuZ0lmPVwiYWxlcnQudGl0bGUgJiYgIWFsZXJ0LmlzRXhwYW5kZWRcIiBjbGFzcz1cInNtZS1mb250LWxhYmVsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhbGVydC5tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgIHt7IGFsZXJ0Lm1lc3NhZ2UgfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDxwICpuZ0lmPVwiYWxlcnQudGl0bGUgJiYgYWxlcnQuaXNFeHBhbmRlZFwiIGNsYXNzPVwic21lLWZvbnQtbGFiZWxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFsZXJ0Lm1lc3NhZ2VcIj5cclxuICAgICAgICAgICAge3sgYWxlcnQubWVzc2FnZSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImFsZXJ0LmxpbmtzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxpbmsgb2YgYWxlcnQubGlua3NcIj5cclxuICAgICAgICAgICAgICA8YSAqbmdJZj1cImxpbmsuZXZlbnRcIiBjbGFzcz1cInNtZS1saW5rXCIgKGNsaWNrKT1cImxpbmsuZXZlbnQoKTtzdG9wQ2xpY2tQcm9wYWdhdGlvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsaW5rLmRpc3BsYXlUZXh0IH19XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGluay5ldmVudCAmJiBsaW5rLnVyaVwiIChjbGljayk9XCJzdG9wQ2xpY2tQcm9wYWdhdGlvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImxpbmsuaXNFeHRlcm5hbExpbmtcIiBjbGFzcz1cInNtZS1saW5rXCIgW2hyZWZdPVwibGluay51cmlcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgICAgICAgICAge3sgbGluay5kaXNwbGF5VGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhbGluay5pc0V4dGVybmFsTGlua1wiIGNsYXNzPVwic21lLWxpbmtcIiBbcm91dGVyTGlua109XCJsaW5rLnVyaVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBsaW5rLmRpc3BsYXlUZXh0IH19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oIHNtZS1mb250LWxhYmVsIHNtZS1jb2xvci1iYXNlLTQwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLWFycmFuZ2UtZWxsaXBzaXNcIj57eyBhbGVydC5ub2RlTmFtZSB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1tYXJnaW4tbGVmdC14eHNcIj4ge3sgYWxlcnQudGltZXN0YW1wIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay12XCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtcGFkZGluZy1pbnNldC1ub25lIHNtZS1wYWRkaW5nLWxlZnQteHhzIHNtZS1wYWRkaW5nLXJpZ2h0LXh4c1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImRpc21pc3MoYWxlcnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJzdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkFsZXJ0QmFyLkRpc21pc3NBcmlhTGFiZWxcIlxyXG4gICAgICAgIGRhdGEtdXRhLWlkPVwiY2FuY2VsLWFsZXJ0XCIgYXJpYS1kZXNjcmliZWRieT1cInNtZS1hbGVydC1iYXItY29udGVudFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tY2FuY2VsXCIgW3RpdGxlXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQWxlcnRCYXIuRGlzbWlzc1wiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|