From 4b05747330d7e647e63cffb500d50b2fdd79af59 Mon Sep 17 00:00:00 2001 From: iOS Date: Sat, 16 Jul 2022 23:03:26 +0200 Subject: [PATCH] mid-july --- .obsidian/community-plugins.json | 5 +- .obsidian/core-plugins.json | 1 - .../customizable-page-header-buttons/main.js | 2 +- .../manifest.json | 4 +- .../styles.css | 2 +- .../plugins/notion-like-tables/data.json | 271 +++++++++++++ .../obsidian-activity-history/data.json | 30 +- .obsidian/plugins/obsidian-commits/data.json | 231 ++++++++---- .../plugins/obsidian-icon-shortcodes/main.js | 14 +- .../obsidian-icon-shortcodes/manifest.json | 4 +- .../obsidian-icon-shortcodes/styles.css | 1 + .../obsidian-reminder-plugin/data.json | 90 +++-- .obsidian/workspace | 26 +- 00.01 Admin/Calendars/2022-07-10.md | 8 +- 00.01 Admin/Calendars/2022-07-11.md | 104 +++++ 00.01 Admin/Calendars/2022-07-12.md | 104 +++++ 00.01 Admin/Calendars/2022-07-13.md | 105 ++++++ 00.01 Admin/Calendars/2022-07-14.md | 104 +++++ 00.01 Admin/Calendars/2022-07-15.md | 105 ++++++ 00.01 Admin/Calendars/2022-07-16.md | 104 +++++ .../American Graffiti New Beverly Cinema.md | 151 ++++++++ ...ted in Florida, divides LGBTQ community.md | 337 +++++++++++++++++ ...t. It Changed His Best Friend’s Life..md | 223 +++++++++++ ... Unelectable Elected Official Defector.md | 357 ++++++++++++++++++ 00.03 News/The Holy Anarchy of Fun.md | 75 ++++ 01.01 Life Orga/@Finances.md | 3 +- 01.02 Home/@Main Dashboard.md | 53 ++- 01.02 Home/Household.md | 7 +- 01.03 Family/Jacqueline Bédier.md | 3 +- 01.03 Family/Opportune de Villeneuve.md | 3 +- 02.03 Zürich/@Restaurants Zürich.md | 8 + 02.03 Zürich/Daizy.md | 96 +++++ 02.03 Zürich/Modo.md | 95 +++++ 04.01 lebv.org/Hosting Tasks.md | 6 +- 05.01 Computer setup/Storage and Syncing.md | 3 +- 05.02 Networks/Configuring UFW.md | 6 +- 05.02 Networks/Server Alias.md | 2 +- 06.02 Investments/Crypto Tasks.md | 3 +- 06.02 Investments/Equity Tasks.md | 3 +- 06.02 Investments/VC Tasks.md | 3 +- 40 files changed, 2581 insertions(+), 171 deletions(-) create mode 100644 00.01 Admin/Calendars/2022-07-11.md create mode 100644 00.01 Admin/Calendars/2022-07-12.md create mode 100644 00.01 Admin/Calendars/2022-07-13.md create mode 100644 00.01 Admin/Calendars/2022-07-14.md create mode 100644 00.01 Admin/Calendars/2022-07-15.md create mode 100644 00.01 Admin/Calendars/2022-07-16.md create mode 100644 00.03 News/American Graffiti New Beverly Cinema.md create mode 100644 00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md create mode 100644 00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md create mode 100644 00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md create mode 100644 00.03 News/The Holy Anarchy of Fun.md create mode 100644 02.03 Zürich/Daizy.md create mode 100644 02.03 Zürich/Modo.md diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 6a31d742..dde34b68 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -2,7 +2,6 @@ "templater-obsidian", "obsidian-activity-history", "obsidian-admonition", - "table-editor-obsidian", "obsidian-advanced-uri", "obsidian-auto-link-title", "buttons", @@ -59,12 +58,12 @@ "markdown-table-editor", "obsidian-book-search-plugin", "obsidian-columns", - "notion-like-tables", "obsidian-media-db-plugin", "tasks-packrat-plugin", "obsidian-tts", "obsidian-chat-view", "obsidian-bbcode", "obsidian-style-settings", - "obsidian-camera" + "obsidian-camera", + "table-editor-obsidian" ] \ No newline at end of file diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json index 48e07b8e..ea77a9cf 100644 --- a/.obsidian/core-plugins.json +++ b/.obsidian/core-plugins.json @@ -14,6 +14,5 @@ "markdown-importer", "word-count", "audio-recorder", - "open-with-default-app", "file-recovery" ] \ No newline at end of file diff --git a/.obsidian/plugins/customizable-page-header-buttons/main.js b/.obsidian/plugins/customizable-page-header-buttons/main.js index e2ae9fb4..43598504 100644 --- a/.obsidian/plugins/customizable-page-header-buttons/main.js +++ b/.obsidian/plugins/customizable-page-header-buttons/main.js @@ -57,4 +57,4 @@ https://github.com/pjeby/monkey-around */ -var V=Object.create;var x=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,Y=Object.prototype.hasOwnProperty;var D=n=>x(n,"__esModule",{value:!0});var Z=(n,e)=>{D(n);for(var i in e)x(n,i,{get:e[i],enumerable:!0})},ee=(n,e,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of Q(e))!Y.call(n,t)&&t!=="default"&&x(n,t,{get:()=>e[t],enumerable:!(i=J(e,t))||i.enumerable});return n},v=n=>ee(D(x(n!=null?V(X(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);Z(exports,{default:()=>N});var r=v(require("obsidian"));function M(n,e){let i=Object.keys(e).map(t=>te(n,t,e[t]));return i.length===1?i[0]:function(){i.forEach(t=>t())}}function te(n,e,i){let t=n[e],l=n.hasOwnProperty(e),s=i(t);return t&&Object.setPrototypeOf(s,t),Object.setPrototypeOf(c,s),n[e]=c,o;function c(...d){return s===t&&n[e]===c&&o(),s.apply(this,d)}function o(){n[e]===c&&(l?n[e]=t:delete n[e]),s!==t&&(s=t,Object.setPrototypeOf(c,t||Function))}}var a=v(require("obsidian"));var G=v(require("obsidian"));var w=v(require("obsidian"));var k=v(require("obsidian"));var O=["add-note-glyph","any-key","audio-file","blocks","bold-glyph","box-glyph","bracket-glyph","broken-link","bullet-list-glyph","bullet-list","calendar-glyph","calendar-with-checkmark","check-in-circle","check-small","checkbox-glyph","checkmark","clock-glyph","clock","cloud","code-glyph","command-glyph","compress-glyph","create-new","cross-in-box","cross","crossed-star","dice-glyph","dice","document","documents","dot-network","double-down-arrow-glyph","double-up-arrow-glyph","down-arrow-with-tail","down-chevron-glyph","down-curly-arrow-glyph","duplicate-glyph","enlarge-glyph","enter","exit-fullscreen","expand-vertically","file-explorer-glyph","filled-pin","folder","forward-arrow","fullscreen","gear","github-glyph","go-to-file","graph-glyph","hashtag","heading-glyph","help","highlight-glyph","horizontal-split","image-file","image-glyph","import-glyph","indent-glyph","info","install","italic-glyph","keyboard-glyph","languages","left-arrow-with-tail","left-arrow","left-chevron-glyph","lines-of-text","link-glyph","link","links-coming-in","links-going-out","logo-crystal","magnifying-glass","merge-files-glyph","merge-files","microphone-filled","microphone","minus-with-circle","navigate-glyph","note-glyph","number-list-glyph","open-elsewhere-glyph","open-vault","pane-layout","paper-plane-glyph","paper-plane","paste-text","paste","paused","pdf-file","pencil","percent-sign-glyph","pin","play-audio-glyph","plus-minus-glyph","plus-with-circle","popup-open","presentation-glyph","presentation","price-tag-glyph","question-mark-glyph","quote-glyph","reading-glasses","redo-glyph","reset","restore-file-glyph","right-arrow-with-tail","right-arrow","right-chevron-glyph","right-triangle","run-command","scissors-glyph","scissors","search-glyph","search","select-all-text","sheets-in-box","split","stacked-levels","star-glyph","star-list","star","stop-audio-glyph","strikethrough-glyph","switch","sync-small","sync","tag-glyph","three-horizontal-bars","tomorrow-glyph","trash","two-blank-pages","undo-glyph","unindent-glyph","up-and-down-arrows","up-arrow-with-tail","up-chevron-glyph","up-curly-arrow-glyph","uppercase-lowercase-a","vault","vertical-split","vertical-three-dots","wand-glyph","wand","workspace-glyph","wrench-screwdriver-glyph","yesterday-glyph"],u="page-header-button",y="titlebar-button",T="titlebar-center",E=[y,u];function ie(n){return n.includes(":")?n.split(":")[1].trim():n}function q(){let n=24;return k.Platform.isMobile?n=24:k.Platform.isDesktop&&(n=18),n}function C(n,e,i,t,l,s="a"){let c=ie(n),o=l.concat([e]),d=createEl(s,{cls:o,attr:{"aria-label-position":"bottom","aria-label":c}});return(0,k.setIcon)(d,i,t),d}function L(n){for(let e=n.length;e>=0;e--)n[e]&&n[e].remove()}function S(n,e,i){let t=n.getElementsByClassName(`${i} ${u} ${e}`);t[0]&&t[0].remove()}function H(){return document.getElementsByClassName("titlebar-text")[0].getText()}function m(n){let e=document.getElementsByClassName(`${u} ${T}`)[0];e!==void 0&&(e.classList.remove(u,T),e.addClass("titlebar-text"),e.innerHTML=n)}function B(){let e=P().getElementsByClassName(`${u} ${y}`);L(e)}function _(){let n=document.getElementsByClassName("titlebar-text")[0];return n.classList.remove("titlebar-text"),n.addClasses([u,T]),n.innerHTML="",n}function j(){let n=[];app.workspace.iterateAllLeaves(e=>{n.push(e.view.containerEl)});for(let e=0;e0&&L(t)}}function I(n){let e=[];app.workspace.iterateAllLeaves(i=>{e.push(i.view.containerEl)});for(let i=0;i0&&L(e)}function g(){let e=z().getElementsByClassName(u);e.length>0&&L(e)}function F(n){let e=R();S(e,n,y)}function U(n){let e=z();S(e,n,y)}function W(n){let e=P();S(e,n,y)}function R(){return document.getElementsByClassName("titlebar-button-container mod-left")[0]}function z(){return document.getElementsByClassName("titlebar-button-container mod-right")[0]}function P(){return document.getElementsByClassName(`${u} ${T}`)[0]}var h=class extends w.FuzzySuggestModal{constructor(e,i,t,l=-1){super(e.app);this.plugin=e,this.command=i,this.type=t,this.index=l,this.setPlaceholder("Please pick an icon")}cap(e){return e.split(" ").map(t=>t[0].toUpperCase()+t.substring(1)).join(" ")}getItems(){return this.plugin.iconList}getItemText(e){return this.cap(e.replace("lucide-","").replace(/-/gi," "))}renderSuggestion(e,i){i.addClass("CS-icon-container");let t=i.createDiv({cls:"CS-icon"});(0,w.setIcon)(t,e.item),super.renderSuggestion(e,i)}async onChooseItem(e){let{id:i,name:t}=this.command,{settings:l}=this.plugin,s=0;if(this.type==="page"){let c="both";this.index===-1?c="both":c=l.enabledButtons[this.index].showButtons;let o={id:i,icon:e,name:t,showButtons:c};this.index===-1?l.enabledButtons.push(o):(l.enabledButtons[this.index]=o,new w.Notice("This change will take effect for new panes only."))}else{let c={id:i,icon:e,name:t};if(this.index===-1)if(this.type==="title-left")l.titleLeft.push(c);else if(this.type==="title-right")l.titleRight.push(c);else{let o=l.titleCenter.length;o!==0&&(s=o),l.titleCenter.push(c)}else if(this.type==="title-left")l.titleLeft[this.index]=c;else if(this.type==="title-right")l.titleRight[this.index]=c;else{let o=l.titleCenter.length;o!==0&&(s=o),l.titleCenter[this.index]=c}}await this.plugin.saveSettings(),this.type==="title-left"?(p(),this.plugin.addLeftTitleBarButtons()):this.type==="title-right"?(g(),this.plugin.addRightTitleBarButtons()):s===0?this.plugin.addInitialCenterTitleBarButtons():l.titleCenter.length===0?m(this.plugin.titlebarText):(B(),this.plugin.addCenterTitleBarButtons()),setTimeout(()=>{dispatchEvent(new Event("TopBar-addedCommand"))},100)}};var b=class extends G.FuzzySuggestModal{constructor(e,i){super(e.app);this.plugin=e,this.type=i}pushToSettings(e,i,t){t==="titleRight"||t==="titleLeft"||t==="titleCenter"?e[t].push({id:i.id,icon:i.icon,name:i.name}):e.enabledButtons.push({id:i.id,icon:i.icon,name:i.name,showButtons:"both"})}getItems(){return this.app.commands.listCommands()}getItemText(e){return e.name}async onChooseItem(e,i){let{settings:t}=this.plugin,l=0;if(e.icon!==void 0){if(this.type==="page")this.pushToSettings(t,e,"enabledSettings");else if(this.type==="title-left")this.pushToSettings(t,e,"titleLeft");else if(this.type==="title-right")this.pushToSettings(t,e,"titleRight");else{let s=this.plugin.settings.titleCenter.length;s!==0&&(l=s),this.pushToSettings(t,e,"titleCenter")}await this.plugin.saveSettings(),this.type==="title-left"?(p(),this.plugin.addLeftTitleBarButtons()):this.type==="title-right"?(g(),this.plugin.addRightTitleBarButtons()):this.type==="title-center"&&(l===0?this.plugin.addInitialCenterTitleBarButtons():this.plugin.settings.titleCenter.length===0?m(this.plugin.titlebarText):(B(),this.plugin.addCenterTitleBarButtons())),setTimeout(()=>{dispatchEvent(new Event("TopBar-addedCommand"))},100)}else new h(this.plugin,e,this.type).open()}};var A=class extends a.PluginSettingTab{constructor(e,i){super(e,i);this.plugin=i,this.plugin.listener=()=>{this.display()},this.containerEl.addClass("page-header-button"),addEventListener("TopBar-addedCommand",this.plugin.listener)}display(){let{containerEl:e}=this,{settings:i}=this.plugin;e.empty(),e.createEl("h3",{text:"Page Header Buttons"}),e.createEl("p",{text:"The buttons are added in the order in which they are shown here."}),new a.Setting(e).setName("Show buttons on desktop").setDesc("By default, the buttons will only be shown in Obsidian Mobile.").addToggle(t=>{t.setValue(i.desktop).onChange(async l=>{if(i.desktop=l,await this.plugin.saveSettings(),this.display(),!l){for(let s of i.enabledButtons)s.showButtons="mobile";await this.plugin.saveSettings()}})}),new a.Setting(e).setName("Add Button").setDesc("Add a new button left to the switch edit/preview mode toggle.").addButton(t=>{t.setButtonText("Add Command").onClick(()=>{new b(this.plugin,"page").open()})}),this.app.plugins.plugins["pane-relief"]&&new a.Setting(e).setName("Pane Relief count").setDesc("Enable to show the pane relief history count next to back/forward buttons.").addToggle(t=>{t.setValue(i.paneRelief).onChange(async l=>{i.paneRelief=l,await this.plugin.saveSettings()})}),new a.Setting(e).setName("Button spacing").setDesc("Set the spacing for Page Header buttons.").addButton(t=>{t.setButtonText("Click to go to the Style settings. Requires the Style settings plugin."),t.onClick(l=>this.app.setting.openTabById("obsidian-style-settings"))});for(let t=0;t{o.addOption("both","Add button for both mobile and desktop.").addOption("mobile","Add button only for mobile.").addOption("desktop","Add button only for desktop.").setValue(l.showButtons).onChange(async d=>{l.showButtons=d,i.enabledButtons[t]=l,await this.plugin.saveSettings(),d==="desktop"&&a.Platform.isMobile?I(l.id):d==="mobile"&&a.Platform.isDesktop&&I(l.id)})}),t>0&&c.addExtraButton(o=>{o.setIcon("up-arrow-with-tail").setTooltip("Move button to the left").onClick(async()=>{i.enabledButtons[t]=i.enabledButtons[t-1],i.enabledButtons[t-1]=l,await this.plugin.saveSettings(),this.display()})}),t{o.setIcon("down-arrow-with-tail").setTooltip("Move button to the right").onClick(async()=>{i.enabledButtons[t]=i.enabledButtons[t+1],i.enabledButtons[t+1]=l,await this.plugin.saveSettings(),this.display()})}),c.addExtraButton(o=>{o.setIcon("trash").setTooltip("Remove Command").onClick(async()=>{i.enabledButtons.remove(l),I(l.id),await this.plugin.saveSettings(),this.display()})}).addExtraButton(o=>{o.setIcon("gear").setTooltip("Edit Icon").onClick(()=>{let d=i.enabledButtons.findIndex(f=>f===l);new h(this.plugin,l,"page",d).open()})}),c.nameEl.prepend(s),c.nameEl.addClass("CS-flex")}if(a.Platform.isDesktopApp){e.createEl("br"),e.createEl("h3",{text:"Titlebar buttons"}),e.createEl("h4",{text:"Left titlebar"}),new a.Setting(e).setName("Add Button").setDesc("Add a new button right to the back/forward buttons.").addButton(t=>{t.setButtonText("Add Command").onClick(()=>{new b(this.plugin,"title-left").open()})});for(let t=0;t0&&c.addExtraButton(o=>{o.setIcon("up-arrow-with-tail").setTooltip("Move button to the left").onClick(async()=>{i.titleLeft[t]=i.titleLeft[t-1],i.titleLeft[t-1]=l,await this.plugin.saveSettings(),p(),this.plugin.addLeftTitleBarButtons(),this.display()})}),t{o.setIcon("down-arrow-with-tail").setTooltip("Move button to the right").onClick(async()=>{i.titleLeft[t]=i.titleLeft[t+1],i.titleLeft[t+1]=l,await this.plugin.saveSettings(),p(),this.plugin.addLeftTitleBarButtons(),this.display()})}),c.addExtraButton(o=>{o.setIcon("trash").setTooltip("Remove Command").onClick(async()=>{i.titleLeft.remove(l),await this.plugin.saveSettings(),F(l.id),this.display()})}).addExtraButton(o=>{o.setIcon("gear").setTooltip("Edit Icon").onClick(()=>{let d=i.titleLeft.findIndex(f=>f===l);new h(this.plugin,l,"title-left",d).open(),p(),this.plugin.addLeftTitleBarButtons()})}),c.nameEl.prepend(s),c.nameEl.addClass("CS-flex")}e.createEl("h4",{text:"Right titlebar"}),new a.Setting(e).setName("Add Button").setDesc("Add a new button left to the minimize/maximize/close buttons.").addButton(t=>{t.setButtonText("Add Command").onClick(()=>{new b(this.plugin,"title-right").open()})});for(let t=0;t0&&c.addExtraButton(o=>{o.setIcon("up-arrow-with-tail").setTooltip("Move button to the left").onClick(async()=>{i.titleRight[t]=i.titleRight[t-1],i.titleRight[t-1]=l,await this.plugin.saveSettings(),g(),this.plugin.addRightTitleBarButtons(),this.display()})}),t{o.setIcon("down-arrow-with-tail").setTooltip("Move button to the right").onClick(async()=>{i.titleRight[t]=i.titleRight[t+1],i.titleRight[t+1]=l,await this.plugin.saveSettings(),g(),this.plugin.addRightTitleBarButtons(),this.display()})}),c.addExtraButton(o=>{o.setIcon("trash").setTooltip("Remove Command").onClick(async()=>{i.titleRight.remove(l),await this.plugin.saveSettings(),U(l.id),this.display()})}).addExtraButton(o=>{o.setIcon("gear").setTooltip("Edit Icon").onClick(()=>{let d=i.titleRight.findIndex(f=>f===l);new h(this.plugin,l,"title-right",d).open(),g(),this.plugin.addRightTitleBarButtons()})}),c.nameEl.prepend(s),c.nameEl.addClass("CS-flex")}e.createEl("h4",{text:"Center titlebar"}),new a.Setting(e).setName("Add Button").setDesc("Add a new button to the center titlebar.").addButton(t=>{t.setButtonText("Add Command").onClick(()=>{new b(this.plugin,"title-center").open()})});for(let t=0;t0&&c.addExtraButton(o=>{o.setIcon("up-arrow-with-tail").setTooltip("Move button to the left").onClick(async()=>{i.titleCenter[t]=i.titleCenter[t-1],i.titleCenter[t-1]=l,await this.plugin.saveSettings(),B(),this.plugin.addCenterTitleBarButtons(),this.display()})}),t{o.setIcon("down-arrow-with-tail").setTooltip("Move button to the right").onClick(async()=>{i.titleCenter[t]=i.titleCenter[t+1],i.titleCenter[t+1]=l,await this.plugin.saveSettings(),B(),this.plugin.addCenterTitleBarButtons(),this.display()})}),c.addExtraButton(o=>{o.setIcon("trash").setTooltip("Remove Command").onClick(async()=>{i.titleCenter.remove(l),await this.plugin.saveSettings(),this.plugin.settings.titleCenter.length===0?m(this.plugin.titlebarText):W(l.id),this.display()})}).addExtraButton(o=>{o.setIcon("gear").setTooltip("Edit Icon").onClick(()=>{let d=i.titleCenter.findIndex(f=>f===l);new h(this.plugin,l,"title-center",d).open()})}),c.nameEl.prepend(s),c.nameEl.addClass("CS-flex")}}}};var K=["lucide-activity","lucide-airplay","lucide-alarm-check","lucide-alarm-clock-off","lucide-alarm-clock","lucide-alarm-minus","lucide-alarm-plus","lucide-album","lucide-alert-circle","lucide-alert-octagon","lucide-alert-triangle","lucide-align-center-horizontal","lucide-align-center","lucide-align-center-vertical","lucide-align-end-horizontal","lucide-align-end-vertical","lucide-align-horizontal-distribute-center","lucide-align-horizontal-distribute-end","lucide-align-horizontal-distribute-start","lucide-align-horizontal-justify-center","lucide-align-horizontal-justify-end","lucide-align-horizontal-justify-start","lucide-align-horizontal-space-around","lucide-align-horizontal-space-between","lucide-align-justify","lucide-align-left","lucide-align-right","lucide-align-start-horizontal","lucide-align-start-vertical","lucide-align-vertical-distribute-center","lucide-align-vertical-distribute-end","lucide-align-vertical-distribute-start","lucide-align-vertical-justify-center","lucide-align-vertical-justify-end","lucide-align-vertical-justify-start","lucide-align-vertical-space-around","lucide-align-vertical-space-between","lucide-anchor","lucide-aperture","lucide-archive","lucide-arrow-big-down","lucide-arrow-big-left","lucide-arrow-big-right","lucide-arrow-big-up","lucide-arrow-down-circle","lucide-arrow-down-left","lucide-arrow-down-right","lucide-arrow-down","lucide-arrow-left-circle","lucide-arrow-left-right","lucide-arrow-left","lucide-arrow-right-circle","lucide-arrow-right","lucide-arrow-up-circle","lucide-arrow-up-left","lucide-arrow-up-right","lucide-arrow-up","lucide-asterisk","lucide-at-sign","lucide-award","lucide-axe","lucide-banknote","lucide-bar-chart-2","lucide-bar-chart","lucide-baseline","lucide-battery-charging","lucide-battery-full","lucide-battery-low","lucide-battery-medium","lucide-battery","lucide-beaker","lucide-bell-minus","lucide-bell-off","lucide-bell-plus","lucide-bell-ring","lucide-bell","lucide-bike","lucide-binary","lucide-bitcoin","lucide-bluetooth-connected","lucide-bluetooth-off","lucide-bluetooth-searching","lucide-bluetooth","lucide-bold","lucide-bookmark-minus","lucide-bookmark-plus","lucide-bookmark","lucide-book-open","lucide-book","lucide-bot","lucide-box-select","lucide-box","lucide-briefcase","lucide-brush","lucide-bug","lucide-building","lucide-bus","lucide-calculator","lucide-calendar","lucide-camera-off","lucide-camera","lucide-carrot","lucide-car","lucide-cast","lucide-check-circle-2","lucide-check-circle","lucide-check-square","lucide-check","lucide-chevron-down","lucide-chevron-first","lucide-chevron-last","lucide-chevron-left","lucide-chevron-right","lucide-chevrons-down","lucide-chevrons-down-up","lucide-chevrons-left","lucide-chevrons-right","lucide-chevrons-up-down","lucide-chevrons-up","lucide-chevron-up","lucide-chrome","lucide-circle-slashed","lucide-circle","lucide-clipboard-check","lucide-clipboard-copy","lucide-clipboard-list","lucide-clipboard","lucide-clipboard-x","lucide-clock-1","lucide-clock-2","lucide-clock-3","lucide-clock-4","lucide-clock-5","lucide-clock-6","lucide-clock-7","lucide-clock-8","lucide-clock-9","lucide-clock-10","lucide-clock-11","lucide-clock-12","lucide-clock","lucide-cloud-drizzle","lucide-cloud-fog","lucide-cloud-hail","lucide-cloud-lightning","lucide-cloud-moon","lucide-cloud-off","lucide-cloud-rain","lucide-cloud-rain-wind","lucide-cloud-snow","lucide-cloud-sun","lucide-cloud","lucide-cloudy","lucide-clover","lucide-code-2","lucide-codepen","lucide-codesandbox","lucide-code","lucide-coffee","lucide-coins","lucide-columns","lucide-command","lucide-compass","lucide-contact","lucide-contrast","lucide-cookie","lucide-copyleft","lucide-copyright","lucide-copy","lucide-corner-down-left","lucide-corner-down-right","lucide-corner-left-down","lucide-corner-left-up","lucide-corner-right-down","lucide-corner-right-up","lucide-corner-up-left","lucide-corner-up-right","lucide-cpu","lucide-credit-card","lucide-crop","lucide-crosshair","lucide-cross","lucide-crown","lucide-currency","lucide-database","lucide-delete","lucide-disc","lucide-divide-circle","lucide-divide-square","lucide-divide","lucide-dollar-sign","lucide-download-cloud","lucide-download","lucide-dribbble","lucide-droplets","lucide-droplet","lucide-drumstick","lucide-edit-2","lucide-edit-3","lucide-edit","lucide-egg","lucide-equal-not","lucide-equal","lucide-euro","lucide-expand","lucide-external-link","lucide-eye-off","lucide-eye","lucide-facebook","lucide-fast-forward","lucide-feather","lucide-figma","lucide-file-check-2","lucide-file-check","lucide-file-code","lucide-file-digit","lucide-file-input","lucide-file-minus-2","lucide-file-minus","lucide-file-output","lucide-file-plus-2","lucide-file-plus","lucide-file-search","lucide-files","lucide-file","lucide-file-text","lucide-file-x-2","lucide-file-x","lucide-film","lucide-filter","lucide-flag","lucide-flag-triangle-left","lucide-flag-triangle-right","lucide-flame","lucide-flashlight-off","lucide-flashlight","lucide-flask-conical","lucide-flask-round","lucide-folder-minus","lucide-folder-open","lucide-folder-plus","lucide-folder","lucide-form-input","lucide-forward","lucide-framer","lucide-frown","lucide-function-square","lucide-gamepad-2","lucide-gamepad","lucide-gauge","lucide-gavel","lucide-gem","lucide-ghost","lucide-gift","lucide-git-branch-plus","lucide-git-branch","lucide-git-commit","lucide-github","lucide-gitlab","lucide-git-merge","lucide-git-pull-request","lucide-glasses","lucide-globe-2","lucide-globe","lucide-grab","lucide-graduation-cap","lucide-grid","lucide-grip-horizontal","lucide-grip-vertical","lucide-hammer","lucide-hand-metal","lucide-hand","lucide-hard-drive","lucide-hard-hat","lucide-hash","lucide-haze","lucide-headphones","lucide-heart","lucide-help-circle","lucide-hexagon","lucide-highlighter","lucide-history","lucide-home","lucide-image-minus","lucide-image-off","lucide-image-plus","lucide-image","lucide-import","lucide-inbox","lucide-indent","lucide-indian-rupee","lucide-infinity","lucide-info","lucide-inspect","lucide-instagram","lucide-italic","lucide-japanese-yen","lucide-keyboard","lucide-key","lucide-landmark","lucide-languages","lucide-laptop-2","lucide-laptop","lucide-lasso-select","lucide-lasso","lucide-layers","lucide-layout-dashboard","lucide-layout-grid","lucide-layout-list","lucide-layout","lucide-layout-template","lucide-library","lucide-life-buoy","lucide-lightbulb-off","lucide-lightbulb","lucide-link-2-off","lucide-link-2","lucide-linkedin","lucide-link","lucide-list-checks","lucide-list-minus","lucide-list-ordered","lucide-list-plus","lucide-list","lucide-list-x","lucide-loader-2","lucide-loader","lucide-locate-fixed","lucide-locate-off","lucide-locate","lucide-lock","lucide-log-in","lucide-log-out","lucide-mail","lucide-map-pin","lucide-map","lucide-maximize-2","lucide-maximize","lucide-megaphone","lucide-meh","lucide-menu","lucide-message-circle","lucide-message-square","lucide-mic-off","lucide-mic","lucide-minimize-2","lucide-minimize","lucide-minus-circle","lucide-minus-square","lucide-minus","lucide-monitor-off","lucide-monitor-speaker","lucide-monitor","lucide-moon","lucide-more-horizontal","lucide-more-vertical","lucide-mountain-snow","lucide-mountain","lucide-mouse-pointer-2","lucide-mouse-pointer-click","lucide-mouse-pointer","lucide-move-diagonal-2","lucide-move-diagonal","lucide-move-horizontal","lucide-move","lucide-move-vertical","lucide-music","lucide-navigation-2","lucide-navigation","lucide-network","lucide-octagon","lucide-option","lucide-outdent","lucide-package-check","lucide-package-minus","lucide-package-plus","lucide-package-search","lucide-package","lucide-package-x","lucide-palette","lucide-palmtree","lucide-paperclip","lucide-pause-circle","lucide-pause-octagon","lucide-pause","lucide-pencil","lucide-pen-tool","lucide-percent","lucide-person-standing","lucide-phone-call","lucide-phone-forwarded","lucide-phone-incoming","lucide-phone-missed","lucide-phone-off","lucide-phone-outgoing","lucide-phone","lucide-pie-chart","lucide-piggy-bank","lucide-pin","lucide-pipette","lucide-plane","lucide-play-circle","lucide-play","lucide-plug-zap","lucide-plus-circle","lucide-plus-square","lucide-plus","lucide-pocket","lucide-podcast","lucide-pointer","lucide-pound-sterling","lucide-power-off","lucide-power","lucide-printer","lucide-qr-code","lucide-quote","lucide-radio-receiver","lucide-radio","lucide-redo","lucide-refresh-ccw","lucide-refresh-cw","lucide-regex","lucide-repeat-1","lucide-repeat","lucide-reply-all","lucide-reply","lucide-rewind","lucide-rocking-chair","lucide-rotate-ccw","lucide-rotate-cw","lucide-rss","lucide-ruler","lucide-russian-ruble","lucide-save","lucide-scale","lucide-scan-line","lucide-scan","lucide-scissors","lucide-screen-share-off","lucide-screen-share","lucide-search","lucide-send","lucide-separator-horizontal","lucide-separator-vertical","lucide-server-crash","lucide-server-off","lucide-server","lucide-settings-2","lucide-settings","lucide-share-2","lucide-share","lucide-sheet","lucide-shield-alert","lucide-shield-check","lucide-shield-close","lucide-shield-off","lucide-shield","lucide-shirt","lucide-shopping-bag","lucide-shopping-cart","lucide-shovel","lucide-shrink","lucide-shuffle","lucide-sidebar-close","lucide-sidebar-open","lucide-sidebar","lucide-sigma","lucide-signal-high","lucide-signal-low","lucide-signal-medium","lucide-signal","lucide-signal-zero","lucide-skip-back","lucide-skip-forward","lucide-skull","lucide-slack","lucide-slash","lucide-sliders","lucide-smartphone-charging","lucide-smartphone","lucide-smile","lucide-snowflake","lucide-sort-asc","lucide-sort-desc","lucide-speaker","lucide-sprout","lucide-square","lucide-star-half","lucide-star","lucide-stop-circle","lucide-stretch-horizontal","lucide-stretch-vertical","lucide-strikethrough","lucide-subscript","lucide-sunrise","lucide-sunset","lucide-sun","lucide-superscript","lucide-swiss-franc","lucide-switch-camera","lucide-table","lucide-tablet","lucide-tag","lucide-target","lucide-tent","lucide-terminal-square","lucide-terminal","lucide-text-cursor-input","lucide-text-cursor","lucide-thermometer-snowflake","lucide-thermometer-sun","lucide-thermometer","lucide-thumbs-down","lucide-thumbs-up","lucide-ticket","lucide-timer-off","lucide-timer-reset","lucide-timer","lucide-toggle-left","lucide-toggle-right","lucide-tornado","lucide-trash-2","lucide-trash","lucide-trello","lucide-trending-down","lucide-trending-up","lucide-triangle","lucide-truck","lucide-tv-2","lucide-tv","lucide-twitch","lucide-twitter","lucide-type","lucide-umbrella","lucide-underline","lucide-undo","lucide-unlink-2","lucide-unlink","lucide-unlock","lucide-upload-cloud","lucide-upload","lucide-user-check","lucide-user-minus","lucide-user-plus","lucide-users","lucide-user","lucide-user-x","lucide-verified","lucide-vibrate","lucide-video-off","lucide-video","lucide-view","lucide-voicemail","lucide-volume-1","lucide-volume-2","lucide-volume","lucide-volume-x","lucide-wallet","lucide-wand","lucide-watch","lucide-waves","lucide-webcam","lucide-wifi-off","lucide-wifi","lucide-wind","lucide-wrap-text","lucide-wrench","lucide-x-circle","lucide-x-octagon","lucide-x-square","lucide-x","lucide-youtube","lucide-zap-off","lucide-zap","lucide-zoom-in","lucide-zoom-out"];var le={enabledButtons:[],desktop:!1,titleLeft:[],titleRight:[],titleCenter:[],paneRelief:!1},N=class extends r.Plugin{constructor(){super(...arguments);this.iconList=O.concat(K)}addPageHeaderButton(e,i){let{id:t,icon:l,name:s}=i,c=q(),d=C(s,t,l,c,["view-action",u]);this.settings.paneRelief&&(t==="app:go-forward"||t==="app:go-back")&&d.addClass("pane-relief"),e.prepend(d),this.registerDomEvent(d,"click",()=>{setTimeout(()=>this.app.commands.executeCommandById(t),5)})}addLeftTitleBarButton(e,i){let{id:t,icon:l,name:s}=i,o=C(s,t,l,15,E,"div");e.append(o),this.registerDomEvent(o,"click",()=>{this.app.commands.executeCommandById(t)})}addRightTitleBarButton(e,i){let{id:t,icon:l,name:s}=i,o=C(s,t,l,15,E,"div");e.prepend(o),this.registerDomEvent(o,"click",()=>{this.app.commands.executeCommandById(t)})}addCenterTitleBarButton(e,i){let{id:t,icon:l,name:s}=i,o=C(s,t,l,15,E,"div");e.append(o),this.registerDomEvent(o,"click",()=>{this.app.commands.executeCommandById(t)})}addLeftTitleBarButtons(){if(this.settings.titleLeft.length>0){let e=R();for(let i of this.settings.titleLeft)this.addLeftTitleBarButton(e,i)}}addRightTitleBarButtons(){if(this.settings.titleRight.length>0){let e=z();for(let i=this.settings.titleRight.length-1;i>=0;i--)this.addRightTitleBarButton(e,this.settings.titleRight[i])}}addInitialCenterTitleBarButtons(){if(this.settings.titleCenter.length>0){let e=_();for(let i of this.settings.titleCenter)this.addCenterTitleBarButton(e,i)}}addCenterTitleBarButtons(){if(this.settings.titleCenter.length>0){let e=P();for(let i of this.settings.titleCenter)this.addCenterTitleBarButton(e,i)}}async onload(){if(console.log("loading Customizable Page Header Plugin"),await this.loadSettings(),this.addSettingTab(new A(this.app,this)),this.app.workspace.onLayoutReady(()=>{r.Platform.isDesktopApp&&(this.addLeftTitleBarButtons(),this.addRightTitleBarButtons(),this.titlebarText=H(),this.settings.titleCenter.length>0&&this.addInitialCenterTitleBarButtons()),(r.Platform.isMobile||this.settings.desktop)&&this.addButtonsToAllLeaves()}),r.Platform.isMobile||this.settings.desktop){let e=this;this.register(M(r.Workspace.prototype,{changeLayout(i){return async function(l){await i.call(this,l),e.addButtonsToAllLeaves()}}})),this.registerEvent(this.app.workspace.on("file-open",()=>{let i=app.workspace.activeLeaf;!i||this.addButtonsToLeaf(i)}))}}addButtonsToAllLeaves(){app.workspace.iterateAllLeaves(e=>this.addButtonsToLeaf(e)),app.workspace.onLayoutChange()}addButtonsToLeaf(e){var l;let i=e==null?void 0:e.view.containerEl,t=i==null?void 0:i.getElementsByClassName("view-actions")[0];if(!!t)for(let s=this.settings.enabledButtons.length-1;s>=0;s--)(l=t.getElementsByClassName(`view-action page-header-button ${this.settings.enabledButtons[s].id}`)[0])==null||l.detach(),(this.settings.enabledButtons[s].showButtons==="both"||this.settings.enabledButtons[s].showButtons==="mobile"&&r.Platform.isMobile||this.settings.enabledButtons[s].showButtons==="desktop"&&r.Platform.isDesktop)&&this.addPageHeaderButton(t,this.settings.enabledButtons[s])}onunload(){console.log("unloading Customizable Page Header Plugin"),j(),$(),m(this.titlebarText),globalThis.removeEventListener("TopBar-addedCommand",this.listener)}async loadSettings(){this.settings=Object.assign({},le,await this.loadData())}async saveSettings(){await this.saveData(this.settings),app.workspace.onLayoutReady(()=>this.addButtonsToAllLeaves())}}; +var J=Object.create;var S=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var j=n=>S(n,"__esModule",{value:!0});var ee=(n,i)=>{j(n);for(var e in i)S(n,e,{get:i[e],enumerable:!0})},te=(n,i,e)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of X(i))!Z.call(n,t)&&t!=="default"&&S(n,t,{get:()=>i[t],enumerable:!(e=Q(i,t))||e.enumerable});return n},C=n=>te(j(S(n!=null?J(Y(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);ee(exports,{default:()=>O});var r=C(require("obsidian"));function q(n,i){let e=Object.keys(i).map(t=>ie(n,t,i[t]));return e.length===1?e[0]:function(){e.forEach(t=>t())}}function ie(n,i,e){let t=n[i],l=n.hasOwnProperty(i),s=e(t);return t&&Object.setPrototypeOf(s,t),Object.setPrototypeOf(o,s),n[i]=o,u;function o(...c){return s===t&&n[i]===o&&u(),s.apply(this,c)}function u(){n[i]===o&&(l?n[i]=t:delete n[i]),s!==t&&(s=t,Object.setPrototypeOf(o,t||Function))}}var d=C(require("obsidian"));var V=C(require("obsidian"));var k=C(require("obsidian"));var x=C(require("obsidian"));var H=["add-note-glyph","any-key","audio-file","blocks","bold-glyph","box-glyph","bracket-glyph","broken-link","bullet-list-glyph","bullet-list","calendar-glyph","calendar-with-checkmark","check-in-circle","check-small","checkbox-glyph","checkmark","clock-glyph","clock","cloud","code-glyph","command-glyph","compress-glyph","create-new","cross-in-box","cross","crossed-star","dice-glyph","dice","document","documents","dot-network","double-down-arrow-glyph","double-up-arrow-glyph","down-arrow-with-tail","down-chevron-glyph","down-curly-arrow-glyph","duplicate-glyph","enlarge-glyph","enter","exit-fullscreen","expand-vertically","file-explorer-glyph","filled-pin","folder","forward-arrow","fullscreen","gear","github-glyph","go-to-file","graph-glyph","hashtag","heading-glyph","help","highlight-glyph","horizontal-split","image-file","image-glyph","import-glyph","indent-glyph","info","install","italic-glyph","keyboard-glyph","languages","left-arrow-with-tail","left-arrow","left-chevron-glyph","lines-of-text","link-glyph","link","links-coming-in","links-going-out","logo-crystal","magnifying-glass","merge-files-glyph","merge-files","microphone-filled","microphone","minus-with-circle","navigate-glyph","note-glyph","number-list-glyph","open-elsewhere-glyph","open-vault","pane-layout","paper-plane-glyph","paper-plane","paste-text","paste","paused","pdf-file","pencil","percent-sign-glyph","pin","play-audio-glyph","plus-minus-glyph","plus-with-circle","popup-open","presentation-glyph","presentation","price-tag-glyph","question-mark-glyph","quote-glyph","reading-glasses","redo-glyph","reset","restore-file-glyph","right-arrow-with-tail","right-arrow","right-chevron-glyph","right-triangle","run-command","scissors-glyph","scissors","search-glyph","search","select-all-text","sheets-in-box","split","stacked-levels","star-glyph","star-list","star","stop-audio-glyph","strikethrough-glyph","switch","sync-small","sync","tag-glyph","three-horizontal-bars","tomorrow-glyph","trash","two-blank-pages","undo-glyph","unindent-glyph","up-and-down-arrows","up-arrow-with-tail","up-chevron-glyph","up-curly-arrow-glyph","uppercase-lowercase-a","vault","vertical-split","vertical-three-dots","wand-glyph","wand","workspace-glyph","wrench-screwdriver-glyph","yesterday-glyph"],h="page-header-button",b="titlebar-button",M="titlebar-center",L=[b,h];function le(n){return n.includes(":")?n.split(":")[1].trim():n}function _(){let n=24;return x.Platform.isMobile?n=24:x.Platform.isDesktop&&(n=18),n}function E(n,i,e,t,l,s="a"){let o=le(n),u=l.concat([i]),c=createEl(s,{cls:u,attr:{"aria-label-position":"bottom","aria-label":o}});return(0,x.setIcon)(c,e,t),c}function I(n){for(let i=n.length;i>=0;i--)n[i]&&n[i].remove()}function R(n,i,e){let t=n.getElementsByClassName(`${e} ${h} ${i}`);t[0]&&t[0].remove()}function y(n){return n.getElementsByClassName("titlebar-text")[0]}function v(n){let i=n.getElementsByClassName("titlebar-text")[0];i&&i.detach()}function f(n,i){let e=i.getElementsByClassName(`${h} ${M}`)[0];if(e!==void 0){let t=e.parentElement;e.detach(),t&&t.insertBefore(n,t.children[0])}}function w(n){let e=D(n).getElementsByClassName(`${h} ${b}`);I(e)}function T(n){let i=createDiv({cls:[h,"titlebar-center"]}),e=n.getElementsByClassName("titlebar-inner")[0];return e&&e.insertBefore(i,e.children[0]),i}function $(){let n=[];app.workspace.iterateAllLeaves(i=>{n.push(i.view.containerEl)});for(let i=0;i0&&I(t)}}function z(n){let i=[];app.workspace.iterateAllLeaves(e=>{i.push(e.view.containerEl)});for(let e=0;e0&&I(e)}function p(n){let e=P(n).getElementsByClassName(h);e.length>0&&I(e)}function F(n,i){let e=A(i);R(e,n,b)}function U(n,i){let e=P(i);R(e,n,b)}function G(n,i){let e=D(i);R(e,n,b)}function A(n){return n.getElementsByClassName("titlebar-button-container mod-left")[0]}function P(n){return n.getElementsByClassName("titlebar-button-container mod-right")[0]}function D(n){return n.getElementsByClassName(`${h} ${M}`)[0]}var m=class extends k.FuzzySuggestModal{constructor(i,e,t,l=-1){super(i.app);this.plugin=i,this.command=e,this.type=t,this.index=l,this.setPlaceholder("Please pick an icon")}cap(i){return i.split(" ").map(t=>t[0].toUpperCase()+t.substring(1)).join(" ")}getItems(){return this.plugin.iconList}getItemText(i){return this.cap(i.replace("lucide-","").replace(/-/gi," "))}renderSuggestion(i,e){e.addClass("CS-icon-container");let t=e.createDiv({cls:"CS-icon"});(0,k.setIcon)(t,i.item),super.renderSuggestion(i,e)}async onChooseItem(i){let{id:e,name:t}=this.command,{settings:l}=this.plugin,s=0;if(this.type==="page"){let o="both";this.index===-1?o="both":o=l.enabledButtons[this.index].showButtons;let u={id:e,icon:i,name:t,showButtons:o};this.index===-1?l.enabledButtons.push(u):(l.enabledButtons[this.index]=u,new k.Notice("This change will take effect for new panes only."))}else{let o={id:e,icon:i,name:t};if(this.index===-1)if(this.type==="title-left")l.titleLeft.push(o);else if(this.type==="title-right")l.titleRight.push(o);else{let u=l.titleCenter.length;u!==0&&(s=u),l.titleCenter.push(o)}else if(this.type==="title-left")l.titleLeft[this.index]=o;else if(this.type==="title-right")l.titleRight[this.index]=o;else{let u=l.titleCenter.length;u!==0&&(s=u),l.titleCenter[this.index]=o}}if(await this.plugin.saveSettings(),this.type==="title-left")for(let o=0;o{dispatchEvent(new Event("TopBar-addedCommand"))},100)}};var B=class extends V.FuzzySuggestModal{constructor(i,e){super(i.app);this.plugin=i,this.type=e}pushToSettings(i,e,t){t==="titleRight"||t==="titleLeft"||t==="titleCenter"?i[t].push({id:e.id,icon:e.icon,name:e.name}):i.enabledButtons.push({id:e.id,icon:e.icon,name:e.name,showButtons:"both"})}getItems(){return this.app.commands.listCommands()}getItemText(i){return i.name}async onChooseItem(i,e){let{settings:t}=this.plugin,l=0;if(i.icon!==void 0){if(this.type==="page")this.pushToSettings(t,i,"enabledSettings");else if(this.type==="title-left")this.pushToSettings(t,i,"titleLeft");else if(this.type==="title-right")this.pushToSettings(t,i,"titleRight");else{let s=this.plugin.settings.titleCenter.length;s!==0&&(l=s),this.pushToSettings(t,i,"titleCenter")}if(await this.plugin.saveSettings(),this.type==="title-left")for(let s=0;s{dispatchEvent(new Event("TopBar-addedCommand"))},100)}else new m(this.plugin,i,this.type).open()}};var N=class extends d.PluginSettingTab{constructor(i,e){super(i,e);this.plugin=e,this.plugin.listener=()=>{this.display()},this.containerEl.addClass("page-header-button"),addEventListener("TopBar-addedCommand",this.plugin.listener)}display(){let{containerEl:i}=this,{settings:e}=this.plugin;i.empty(),i.createEl("h3",{text:"Page Header Buttons"}),i.createEl("p",{text:"The buttons are added in the order in which they are shown here."}),new d.Setting(i).setName("Show buttons on desktop").setDesc("By default, the buttons will only be shown in Obsidian Mobile.").addToggle(t=>{t.setValue(e.desktop).onChange(async l=>{if(e.desktop=l,await this.plugin.saveSettings(),this.display(),!l){for(let s of e.enabledButtons)s.showButtons="mobile";await this.plugin.saveSettings()}})}),new d.Setting(i).setName("Add Button").setDesc("Add a new button left to the switch edit/preview mode toggle.").addButton(t=>{t.setButtonText("Add Command").onClick(()=>{new B(this.plugin,"page").open()})}),this.app.plugins.plugins["pane-relief"]&&new d.Setting(i).setName("Pane Relief count").setDesc("Enable to show the pane relief history count next to back/forward buttons.").addToggle(t=>{t.setValue(e.paneRelief).onChange(async l=>{e.paneRelief=l,await this.plugin.saveSettings()})}),new d.Setting(i).setName("Button spacing").setDesc("Set the spacing for Page Header buttons.").addButton(t=>{t.setButtonText("Click to go to the Style settings. Requires the Style settings plugin."),t.onClick(l=>this.app.setting.openTabById("obsidian-style-settings"))});for(let t=0;t{u.addOption("both","Add button for both mobile and desktop.").addOption("mobile","Add button only for mobile.").addOption("desktop","Add button only for desktop.").setValue(l.showButtons).onChange(async c=>{l.showButtons=c,e.enabledButtons[t]=l,await this.plugin.saveSettings(),c==="desktop"&&d.Platform.isMobile?z(l.id):c==="mobile"&&d.Platform.isDesktop&&z(l.id)})}),t>0&&o.addExtraButton(u=>{u.setIcon("up-arrow-with-tail").setTooltip("Move button to the left").onClick(async()=>{e.enabledButtons[t]=e.enabledButtons[t-1],e.enabledButtons[t-1]=l,await this.plugin.saveSettings(),this.display()})}),t{u.setIcon("down-arrow-with-tail").setTooltip("Move button to the right").onClick(async()=>{e.enabledButtons[t]=e.enabledButtons[t+1],e.enabledButtons[t+1]=l,await this.plugin.saveSettings(),this.display()})}),o.addExtraButton(u=>{u.setIcon("trash").setTooltip("Remove Command").onClick(async()=>{e.enabledButtons.remove(l),z(l.id),await this.plugin.saveSettings(),this.display()})}).addExtraButton(u=>{u.setIcon("gear").setTooltip("Edit Icon").onClick(()=>{let c=e.enabledButtons.findIndex(a=>a===l);new m(this.plugin,l,"page",c).open()})}),o.nameEl.prepend(s),o.nameEl.addClass("CS-flex")}if(d.Platform.isDesktopApp){i.createEl("br"),i.createEl("h3",{text:"Titlebar buttons"}),i.createEl("h4",{text:"Left titlebar"}),new d.Setting(i).setName("Add Button").setDesc("Add a new button right to the back/forward buttons.").addButton(t=>{t.setButtonText("Add Command").onClick(()=>{new B(this.plugin,"title-left").open()})});for(let t=0;t0&&o.addExtraButton(u=>{u.setIcon("up-arrow-with-tail").setTooltip("Move button to the left").onClick(async()=>{e.titleLeft[t]=e.titleLeft[t-1],e.titleLeft[t-1]=l,await this.plugin.saveSettings();for(let c=0;c{u.setIcon("down-arrow-with-tail").setTooltip("Move button to the right").onClick(async()=>{e.titleLeft[t]=e.titleLeft[t+1],e.titleLeft[t+1]=l,await this.plugin.saveSettings();for(let c=0;c{u.setIcon("trash").setTooltip("Remove Command").onClick(async()=>{e.titleLeft.remove(l),await this.plugin.saveSettings();for(let c=0;c{u.setIcon("gear").setTooltip("Edit Icon").onClick(()=>{let c=e.titleLeft.findIndex(a=>a===l);new m(this.plugin,l,"title-left",c).open();for(let a=0;a{t.setButtonText("Add Command").onClick(()=>{new B(this.plugin,"title-right").open()})});for(let t=0;t0&&o.addExtraButton(u=>{u.setIcon("up-arrow-with-tail").setTooltip("Move button to the left").onClick(async()=>{e.titleRight[t]=e.titleRight[t-1],e.titleRight[t-1]=l,await this.plugin.saveSettings();for(let c=0;c{u.setIcon("down-arrow-with-tail").setTooltip("Move button to the right").onClick(async()=>{e.titleRight[t]=e.titleRight[t+1],e.titleRight[t+1]=l,await this.plugin.saveSettings();for(let c=0;c{u.setIcon("trash").setTooltip("Remove Command").onClick(async()=>{e.titleRight.remove(l),await this.plugin.saveSettings();for(let c=0;c{u.setIcon("gear").setTooltip("Edit Icon").onClick(()=>{let c=e.titleRight.findIndex(a=>a===l);new m(this.plugin,l,"title-right",c).open();for(let a=0;a{t.setButtonText("Add Command").onClick(()=>{new B(this.plugin,"title-center").open()})});for(let t=0;t0&&o.addExtraButton(u=>{u.setIcon("up-arrow-with-tail").setTooltip("Move button to the left").onClick(async()=>{e.titleCenter[t]=e.titleCenter[t-1],e.titleCenter[t-1]=l,await this.plugin.saveSettings();for(let c=0;c{u.setIcon("down-arrow-with-tail").setTooltip("Move button to the right").onClick(async()=>{e.titleCenter[t]=e.titleCenter[t+1],e.titleCenter[t+1]=l,await this.plugin.saveSettings();for(let c=0;c{u.setIcon("trash").setTooltip("Remove Command").onClick(async()=>{if(e.titleCenter.remove(l),await this.plugin.saveSettings(),this.plugin.settings.titleCenter.length===0)for(let c=0;c{u.setIcon("gear").setTooltip("Edit Icon").onClick(()=>{let c=e.titleCenter.findIndex(a=>a===l);new m(this.plugin,l,"title-center",c).open()})}),o.nameEl.prepend(s),o.nameEl.addClass("CS-flex")}}}};var K=["lucide-activity","lucide-airplay","lucide-alarm-check","lucide-alarm-clock-off","lucide-alarm-clock","lucide-alarm-minus","lucide-alarm-plus","lucide-album","lucide-alert-circle","lucide-alert-octagon","lucide-alert-triangle","lucide-align-center-horizontal","lucide-align-center","lucide-align-center-vertical","lucide-align-end-horizontal","lucide-align-end-vertical","lucide-align-horizontal-distribute-center","lucide-align-horizontal-distribute-end","lucide-align-horizontal-distribute-start","lucide-align-horizontal-justify-center","lucide-align-horizontal-justify-end","lucide-align-horizontal-justify-start","lucide-align-horizontal-space-around","lucide-align-horizontal-space-between","lucide-align-justify","lucide-align-left","lucide-align-right","lucide-align-start-horizontal","lucide-align-start-vertical","lucide-align-vertical-distribute-center","lucide-align-vertical-distribute-end","lucide-align-vertical-distribute-start","lucide-align-vertical-justify-center","lucide-align-vertical-justify-end","lucide-align-vertical-justify-start","lucide-align-vertical-space-around","lucide-align-vertical-space-between","lucide-anchor","lucide-aperture","lucide-archive","lucide-arrow-big-down","lucide-arrow-big-left","lucide-arrow-big-right","lucide-arrow-big-up","lucide-arrow-down-circle","lucide-arrow-down-left","lucide-arrow-down-right","lucide-arrow-down","lucide-arrow-left-circle","lucide-arrow-left-right","lucide-arrow-left","lucide-arrow-right-circle","lucide-arrow-right","lucide-arrow-up-circle","lucide-arrow-up-left","lucide-arrow-up-right","lucide-arrow-up","lucide-asterisk","lucide-at-sign","lucide-award","lucide-axe","lucide-banknote","lucide-bar-chart-2","lucide-bar-chart","lucide-baseline","lucide-battery-charging","lucide-battery-full","lucide-battery-low","lucide-battery-medium","lucide-battery","lucide-beaker","lucide-bell-minus","lucide-bell-off","lucide-bell-plus","lucide-bell-ring","lucide-bell","lucide-bike","lucide-binary","lucide-bitcoin","lucide-bluetooth-connected","lucide-bluetooth-off","lucide-bluetooth-searching","lucide-bluetooth","lucide-bold","lucide-bookmark-minus","lucide-bookmark-plus","lucide-bookmark","lucide-book-open","lucide-book","lucide-bot","lucide-box-select","lucide-box","lucide-briefcase","lucide-brush","lucide-bug","lucide-building","lucide-bus","lucide-calculator","lucide-calendar","lucide-camera-off","lucide-camera","lucide-carrot","lucide-car","lucide-cast","lucide-check-circle-2","lucide-check-circle","lucide-check-square","lucide-check","lucide-chevron-down","lucide-chevron-first","lucide-chevron-last","lucide-chevron-left","lucide-chevron-right","lucide-chevrons-down","lucide-chevrons-down-up","lucide-chevrons-left","lucide-chevrons-right","lucide-chevrons-up-down","lucide-chevrons-up","lucide-chevron-up","lucide-chrome","lucide-circle-slashed","lucide-circle","lucide-clipboard-check","lucide-clipboard-copy","lucide-clipboard-list","lucide-clipboard","lucide-clipboard-x","lucide-clock-1","lucide-clock-2","lucide-clock-3","lucide-clock-4","lucide-clock-5","lucide-clock-6","lucide-clock-7","lucide-clock-8","lucide-clock-9","lucide-clock-10","lucide-clock-11","lucide-clock-12","lucide-clock","lucide-cloud-drizzle","lucide-cloud-fog","lucide-cloud-hail","lucide-cloud-lightning","lucide-cloud-moon","lucide-cloud-off","lucide-cloud-rain","lucide-cloud-rain-wind","lucide-cloud-snow","lucide-cloud-sun","lucide-cloud","lucide-cloudy","lucide-clover","lucide-code-2","lucide-codepen","lucide-codesandbox","lucide-code","lucide-coffee","lucide-coins","lucide-columns","lucide-command","lucide-compass","lucide-contact","lucide-contrast","lucide-cookie","lucide-copyleft","lucide-copyright","lucide-copy","lucide-corner-down-left","lucide-corner-down-right","lucide-corner-left-down","lucide-corner-left-up","lucide-corner-right-down","lucide-corner-right-up","lucide-corner-up-left","lucide-corner-up-right","lucide-cpu","lucide-credit-card","lucide-crop","lucide-crosshair","lucide-cross","lucide-crown","lucide-currency","lucide-database","lucide-delete","lucide-disc","lucide-divide-circle","lucide-divide-square","lucide-divide","lucide-dollar-sign","lucide-download-cloud","lucide-download","lucide-dribbble","lucide-droplets","lucide-droplet","lucide-drumstick","lucide-edit-2","lucide-edit-3","lucide-edit","lucide-egg","lucide-equal-not","lucide-equal","lucide-euro","lucide-expand","lucide-external-link","lucide-eye-off","lucide-eye","lucide-facebook","lucide-fast-forward","lucide-feather","lucide-figma","lucide-file-check-2","lucide-file-check","lucide-file-code","lucide-file-digit","lucide-file-input","lucide-file-minus-2","lucide-file-minus","lucide-file-output","lucide-file-plus-2","lucide-file-plus","lucide-file-search","lucide-files","lucide-file","lucide-file-text","lucide-file-x-2","lucide-file-x","lucide-film","lucide-filter","lucide-flag","lucide-flag-triangle-left","lucide-flag-triangle-right","lucide-flame","lucide-flashlight-off","lucide-flashlight","lucide-flask-conical","lucide-flask-round","lucide-folder-minus","lucide-folder-open","lucide-folder-plus","lucide-folder","lucide-form-input","lucide-forward","lucide-framer","lucide-frown","lucide-function-square","lucide-gamepad-2","lucide-gamepad","lucide-gauge","lucide-gavel","lucide-gem","lucide-ghost","lucide-gift","lucide-git-branch-plus","lucide-git-branch","lucide-git-commit","lucide-github","lucide-gitlab","lucide-git-merge","lucide-git-pull-request","lucide-glasses","lucide-globe-2","lucide-globe","lucide-grab","lucide-graduation-cap","lucide-grid","lucide-grip-horizontal","lucide-grip-vertical","lucide-hammer","lucide-hand-metal","lucide-hand","lucide-hard-drive","lucide-hard-hat","lucide-hash","lucide-haze","lucide-headphones","lucide-heart","lucide-help-circle","lucide-hexagon","lucide-highlighter","lucide-history","lucide-home","lucide-image-minus","lucide-image-off","lucide-image-plus","lucide-image","lucide-import","lucide-inbox","lucide-indent","lucide-indian-rupee","lucide-infinity","lucide-info","lucide-inspect","lucide-instagram","lucide-italic","lucide-japanese-yen","lucide-keyboard","lucide-key","lucide-landmark","lucide-languages","lucide-laptop-2","lucide-laptop","lucide-lasso-select","lucide-lasso","lucide-layers","lucide-layout-dashboard","lucide-layout-grid","lucide-layout-list","lucide-layout","lucide-layout-template","lucide-library","lucide-life-buoy","lucide-lightbulb-off","lucide-lightbulb","lucide-link-2-off","lucide-link-2","lucide-linkedin","lucide-link","lucide-list-checks","lucide-list-minus","lucide-list-ordered","lucide-list-plus","lucide-list","lucide-list-x","lucide-loader-2","lucide-loader","lucide-locate-fixed","lucide-locate-off","lucide-locate","lucide-lock","lucide-log-in","lucide-log-out","lucide-mail","lucide-map-pin","lucide-map","lucide-maximize-2","lucide-maximize","lucide-megaphone","lucide-meh","lucide-menu","lucide-message-circle","lucide-message-square","lucide-mic-off","lucide-mic","lucide-minimize-2","lucide-minimize","lucide-minus-circle","lucide-minus-square","lucide-minus","lucide-monitor-off","lucide-monitor-speaker","lucide-monitor","lucide-moon","lucide-more-horizontal","lucide-more-vertical","lucide-mountain-snow","lucide-mountain","lucide-mouse-pointer-2","lucide-mouse-pointer-click","lucide-mouse-pointer","lucide-move-diagonal-2","lucide-move-diagonal","lucide-move-horizontal","lucide-move","lucide-move-vertical","lucide-music","lucide-navigation-2","lucide-navigation","lucide-network","lucide-octagon","lucide-option","lucide-outdent","lucide-package-check","lucide-package-minus","lucide-package-plus","lucide-package-search","lucide-package","lucide-package-x","lucide-palette","lucide-palmtree","lucide-paperclip","lucide-pause-circle","lucide-pause-octagon","lucide-pause","lucide-pencil","lucide-pen-tool","lucide-percent","lucide-person-standing","lucide-phone-call","lucide-phone-forwarded","lucide-phone-incoming","lucide-phone-missed","lucide-phone-off","lucide-phone-outgoing","lucide-phone","lucide-pie-chart","lucide-piggy-bank","lucide-pin","lucide-pipette","lucide-plane","lucide-play-circle","lucide-play","lucide-plug-zap","lucide-plus-circle","lucide-plus-square","lucide-plus","lucide-pocket","lucide-podcast","lucide-pointer","lucide-pound-sterling","lucide-power-off","lucide-power","lucide-printer","lucide-qr-code","lucide-quote","lucide-radio-receiver","lucide-radio","lucide-redo","lucide-refresh-ccw","lucide-refresh-cw","lucide-regex","lucide-repeat-1","lucide-repeat","lucide-reply-all","lucide-reply","lucide-rewind","lucide-rocking-chair","lucide-rotate-ccw","lucide-rotate-cw","lucide-rss","lucide-ruler","lucide-russian-ruble","lucide-save","lucide-scale","lucide-scan-line","lucide-scan","lucide-scissors","lucide-screen-share-off","lucide-screen-share","lucide-search","lucide-send","lucide-separator-horizontal","lucide-separator-vertical","lucide-server-crash","lucide-server-off","lucide-server","lucide-settings-2","lucide-settings","lucide-share-2","lucide-share","lucide-sheet","lucide-shield-alert","lucide-shield-check","lucide-shield-close","lucide-shield-off","lucide-shield","lucide-shirt","lucide-shopping-bag","lucide-shopping-cart","lucide-shovel","lucide-shrink","lucide-shuffle","lucide-sidebar-close","lucide-sidebar-open","lucide-sidebar","lucide-sigma","lucide-signal-high","lucide-signal-low","lucide-signal-medium","lucide-signal","lucide-signal-zero","lucide-skip-back","lucide-skip-forward","lucide-skull","lucide-slack","lucide-slash","lucide-sliders","lucide-smartphone-charging","lucide-smartphone","lucide-smile","lucide-snowflake","lucide-sort-asc","lucide-sort-desc","lucide-speaker","lucide-sprout","lucide-square","lucide-star-half","lucide-star","lucide-stop-circle","lucide-stretch-horizontal","lucide-stretch-vertical","lucide-strikethrough","lucide-subscript","lucide-sunrise","lucide-sunset","lucide-sun","lucide-superscript","lucide-swiss-franc","lucide-switch-camera","lucide-table","lucide-tablet","lucide-tag","lucide-target","lucide-tent","lucide-terminal-square","lucide-terminal","lucide-text-cursor-input","lucide-text-cursor","lucide-thermometer-snowflake","lucide-thermometer-sun","lucide-thermometer","lucide-thumbs-down","lucide-thumbs-up","lucide-ticket","lucide-timer-off","lucide-timer-reset","lucide-timer","lucide-toggle-left","lucide-toggle-right","lucide-tornado","lucide-trash-2","lucide-trash","lucide-trello","lucide-trending-down","lucide-trending-up","lucide-triangle","lucide-truck","lucide-tv-2","lucide-tv","lucide-twitch","lucide-twitter","lucide-type","lucide-umbrella","lucide-underline","lucide-undo","lucide-unlink-2","lucide-unlink","lucide-unlock","lucide-upload-cloud","lucide-upload","lucide-user-check","lucide-user-minus","lucide-user-plus","lucide-users","lucide-user","lucide-user-x","lucide-verified","lucide-vibrate","lucide-video-off","lucide-video","lucide-view","lucide-voicemail","lucide-volume-1","lucide-volume-2","lucide-volume","lucide-volume-x","lucide-wallet","lucide-wand","lucide-watch","lucide-waves","lucide-webcam","lucide-wifi-off","lucide-wifi","lucide-wind","lucide-wrap-text","lucide-wrench","lucide-x-circle","lucide-x-octagon","lucide-x-square","lucide-x","lucide-youtube","lucide-zap-off","lucide-zap","lucide-zoom-in","lucide-zoom-out"];var ne={enabledButtons:[],desktop:!1,titleLeft:[],titleRight:[],titleCenter:[],paneRelief:!1},O=class extends r.Plugin{constructor(){super(...arguments);this.iconList=H.concat(K);this.titlebarText=[];this.windows=[]}addPageHeaderButton(i,e){let{id:t,icon:l,name:s}=e,o=_(),c=E(s,t,l,o,["view-action",h]);this.settings.paneRelief&&(t==="app:go-forward"||t==="app:go-back")&&c.addClass("pane-relief"),i.prepend(c),this.registerDomEvent(c,"mousedown",a=>{a.button===0&&setTimeout(()=>{this.app.commands.executeCommandById(t)},5)})}addLeftTitleBarButton(i,e){let{id:t,icon:l,name:s}=e,u=E(s,t,l,15,L,"div");i.append(u),this.registerDomEvent(u,"click",()=>{this.app.commands.executeCommandById(t)})}addRightTitleBarButton(i,e){let{id:t,icon:l,name:s}=e,u=E(s,t,l,15,L,"div");i.insertBefore(u,i.children[0]),this.registerDomEvent(u,"click",()=>{this.app.commands.executeCommandById(t)})}addCenterTitleBarButton(i,e){let{id:t,icon:l,name:s}=e,u=E(s,t,l,15,L,"div");i.append(u),this.registerDomEvent(u,"click",()=>{this.app.commands.executeCommandById(t)})}addLeftTitleBarButtons(i){if(this.settings.titleLeft.length>0){let e=A(i);for(let t of this.settings.titleLeft)this.addLeftTitleBarButton(e,t)}}addRightTitleBarButtons(i){if(this.settings.titleRight.length>0){let e=P(i);for(let t=this.settings.titleRight.length-1;t>=0;t--)this.addRightTitleBarButton(e,this.settings.titleRight[t])}}addCenterTitleBarButtons(i){if(this.settings.titleCenter.length>0){let e=D(i);for(let t of this.settings.titleCenter)this.addCenterTitleBarButton(e,t)}}initTitleBar(i){if(this.addLeftTitleBarButtons(i),this.addRightTitleBarButtons(i),this.settings.titleCenter.length>0){let e=y(i);if(!this.titlebarText.contains(e)){this.titlebarText.push(e),v(i);let t=T(i);this.addCenterTitleBarButtons(i)}}}async onload(){if(console.log("loading Customizable Page Header Plugin"),await this.loadSettings(),this.addSettingTab(new N(this.app,this)),this.app.workspace.onLayoutReady(()=>{var i;if(r.Platform.isDesktopApp){this.windows.push(document),this.initTitleBar(document);let{children:e}=this.app.workspace.floatingSplit;if(e.length+1!==this.windows.length){for(let t of e)if(t instanceof r.WorkspaceWindow){let l=(i=t.getContainer())==null?void 0:i.doc;l&&(this.windows.push(l),this.initTitleBar(l))}}}(r.Platform.isMobile||this.settings.desktop)&&this.addButtonsToAllLeaves()}),r.Platform.isMobile||this.settings.desktop){let i=this;this.register(q(r.Workspace.prototype,{changeLayout(e){return async function(l){await e.call(this,l),i.addButtonsToAllLeaves()}}})),this.registerEvent(this.app.workspace.on("layout-change",()=>{let e=app.workspace.getActiveViewOfType(r.View);!e||this.addButtonsToLeaf(e.leaf)})),this.registerEvent(this.app.workspace.on("window-open",(e,t)=>{var s;let l=(s=e.getContainer())==null?void 0:s.doc;l&&(this.windows.push(l),this.initTitleBar(l))}))}}addButtonsToAllLeaves(){app.workspace.iterateAllLeaves(i=>this.addButtonsToLeaf(i)),app.workspace.onLayoutChange()}addButtonsToLeaf(i){var l;let e=i==null?void 0:i.view.containerEl,t=e==null?void 0:e.getElementsByClassName("view-actions")[0];if(!!t)for(let s=this.settings.enabledButtons.length-1;s>=0;s--)(l=t.getElementsByClassName(`view-action page-header-button ${this.settings.enabledButtons[s].id}`)[0])==null||l.detach(),(this.settings.enabledButtons[s].showButtons==="both"||this.settings.enabledButtons[s].showButtons==="mobile"&&r.Platform.isMobile||this.settings.enabledButtons[s].showButtons==="desktop"&&r.Platform.isDesktop)&&this.addPageHeaderButton(t,this.settings.enabledButtons[s])}onunload(){console.log("unloading Customizable Page Header Plugin"),$();for(let i=0;ithis.addButtonsToAllLeaves())}}; diff --git a/.obsidian/plugins/customizable-page-header-buttons/manifest.json b/.obsidian/plugins/customizable-page-header-buttons/manifest.json index 7efba9d2..6d2a58db 100644 --- a/.obsidian/plugins/customizable-page-header-buttons/manifest.json +++ b/.obsidian/plugins/customizable-page-header-buttons/manifest.json @@ -1,8 +1,8 @@ { "id": "customizable-page-header-buttons", "name": "Customizable Page Header and Title Bar", - "version": "4.5.1", - "minAppVersion": "0.12.19", + "version": "4.6.2", + "minAppVersion": "0.15.4", "description": "This plugin lets you add buttons for executing commands to the page header and on desktop to the title bar.", "author": "kometenstaub", "authorUrl": "https://github.com/kometenstaub", diff --git a/.obsidian/plugins/customizable-page-header-buttons/styles.css b/.obsidian/plugins/customizable-page-header-buttons/styles.css index c3898a0b..c37dc160 100644 --- a/.obsidian/plugins/customizable-page-header-buttons/styles.css +++ b/.obsidian/plugins/customizable-page-header-buttons/styles.css @@ -47,4 +47,4 @@ settings: format: px */ -.page-header-button.titlebar-center{flex-grow:1;font-size:12px;height:100%;left:0;letter-spacing:.05em;opacity:.8;position:absolute;text-align:center;top:0;width:100%}:not(.is-mobile) .view-actions{align-items:center}:not(.is-mobile) .view-action,:not(.is-mobile) .view-action.pane-relief{display:flex;position:unset}:not(.is-mobile) .view-action.pane-relief.app\:go-back:before,:not(.is-mobile) .view-action.pane-relief.app\:go-forward:after{display:inline;font-size:1em;line-height:1;vertical-align:text-top}:not(.is-mobile) .view-action.pane-relief.app\:go-forward:after{content:var(--pane-relief-forward-count);padding-left:.4em}:not(.is-mobile) .view-action.pane-relief.app\:go-back:before{content:var(--pane-relief-backward-count);padding-right:.4em}:not(.is-mobile) .view-action:not(:last-child){margin-right:var(--page-header-spacing-desktop)}:not(.is-mobile) .pane-relief body:not(.no-svg-replace) svg{vertical-align:top}.is-mobile .view-action:not(:last-child){margin-right:var(--page-header-spacing-mobile)} \ No newline at end of file +.page-header-button.titlebar-center{flex-grow:1;font-size:12px;height:100%;left:0;letter-spacing:.05em;opacity:.8;position:absolute;text-align:center;top:0;width:100%}body:not(.is-mobile) .view-actions{align-items:center}body:not(.is-mobile) .view-action,body:not(.is-mobile) .view-action.pane-relief{display:flex;position:unset}body:not(.is-mobile) .view-action.pane-relief.app\:go-back:before,body:not(.is-mobile) .view-action.pane-relief.app\:go-forward:after{display:inline;font-size:1em;line-height:1;vertical-align:text-top}body:not(.is-mobile) .view-action.pane-relief.app\:go-forward:after{content:var(--pane-relief-forward-count);padding-left:.4em}body:not(.is-mobile) .view-action.pane-relief.app\:go-back:before{content:var(--pane-relief-backward-count);padding-right:.4em}body:not(.is-mobile) .view-action:not(:last-child){margin-right:var(--page-header-spacing-desktop)}body:not(.is-mobile) .pane-relief body:not(.no-svg-replace) svg{vertical-align:top}.is-mobile .view-actions{align-items:center}.is-mobile .view-action:not(:last-child){margin-right:var(--page-header-spacing-mobile)} \ No newline at end of file diff --git a/.obsidian/plugins/notion-like-tables/data.json b/.obsidian/plugins/notion-like-tables/data.json index 8b3c295c..e0c1448e 100644 --- a/.obsidian/plugins/notion-like-tables/data.json +++ b/.obsidian/plugins/notion-like-tables/data.json @@ -751,6 +751,277 @@ "viewType": "reading", "shouldUpdate": false } + }, + "05.01 Computer setup/Email & Communication.md": { + "0": { + "data": { + "headers": [ + { + "id": "ed1922d4-5914-4042-b959-1bc3f22331ee", + "initialIndex": 0, + "content": "Email account", + "sortName": "default", + "width": "100px", + "type": "text" + }, + { + "id": "355f414c-c5b2-4e6d-b443-3cb5148e52d0", + "initialIndex": 1, + "content": "Email provider", + "sortName": "default", + "width": "100px", + "type": "text" + }, + { + "id": "8efa4efc-1791-4a8e-b720-a44b08fad200", + "initialIndex": 2, + "content": "Email client", + "sortName": "default", + "width": "100px", + "type": "text" + } + ], + "rows": [], + "cells": [], + "tags": [] + }, + "shouldUpdate": false, + "viewType": "live-preview" + } + }, + "05.02 Networks/Server Alias.md": { + "0": { + "data": { + "headers": [ + { + "id": "cb2969ba-c5fc-441b-b7f7-5a4dcd5b69b0", + "initialIndex": 0, + "content": "Program name", + "sortName": "default", + "width": "100px", + "type": "text" + }, + { + "id": "afc37e35-558f-47b6-a963-56cc4452bf39", + "initialIndex": 1, + "content": "Type", + "sortName": "default", + "width": "100px", + "type": "text" + }, + { + "id": "4811eb6e-e499-40a9-878c-ccb7732652dd", + "initialIndex": 2, + "content": "Description", + "sortName": "default", + "width": "100px", + "type": "text" + } + ], + "rows": [ + { + "id": "874afa3e-d15e-4730-b4f3-77fe714700f9", + "initialIndex": 0, + "creationTime": 1657782282849 + }, + { + "id": "a2bbd68a-43ef-4b1e-b03e-dba2a1847588", + "initialIndex": 1, + "creationTime": 1657782282069 + }, + { + "id": "20277002-8c02-4b46-932d-50134fea1b5a", + "initialIndex": 2, + "creationTime": 1657782282559 + } + ], + "cells": [ + { + "id": "5d9c1443-09ed-45e7-bcb7-480bd60596f6", + "rowId": "874afa3e-d15e-4730-b4f3-77fe714700f9", + "headerId": "cb2969ba-c5fc-441b-b7f7-5a4dcd5b69b0", + "type": "text", + "text": "**[[Configuring Fail2ban" + }, + { + "id": "5879c57c-6022-45e8-9bab-42415f3cc16f", + "rowId": "874afa3e-d15e-4730-b4f3-77fe714700f9", + "headerId": "afc37e35-558f-47b6-a963-56cc4452bf39", + "type": "text", + "text": "fail2ban]]**" + }, + { + "id": "2474fc23-a3fe-4c83-bee8-93949d37eddb", + "rowId": "874afa3e-d15e-4730-b4f3-77fe714700f9", + "headerId": "4811eb6e-e499-40a9-878c-ccb7732652dd", + "type": "text", + "text": "Deamon" + }, + { + "id": "819307b7-d2c6-4eca-92e2-1a500916976a", + "rowId": "a2bbd68a-43ef-4b1e-b03e-dba2a1847588", + "headerId": "cb2969ba-c5fc-441b-b7f7-5a4dcd5b69b0", + "type": "text", + "text": "**unattended-upgrades**" + }, + { + "id": "c23273d0-27b5-43c3-acb3-3de1a493a435", + "rowId": "a2bbd68a-43ef-4b1e-b03e-dba2a1847588", + "headerId": "afc37e35-558f-47b6-a963-56cc4452bf39", + "type": "text", + "text": "Program" + }, + { + "id": "17645314-bb4d-4879-89c9-5c906ee5b873", + "rowId": "a2bbd68a-43ef-4b1e-b03e-dba2a1847588", + "headerId": "4811eb6e-e499-40a9-878c-ccb7732652dd", + "type": "text", + "text": "Enables automatic updates of installed programs and OS" + }, + { + "id": "d45c6f5d-dc24-488c-b88e-8eac4c4a3386", + "rowId": "20277002-8c02-4b46-932d-50134fea1b5a", + "headerId": "cb2969ba-c5fc-441b-b7f7-5a4dcd5b69b0", + "type": "text", + "text": "**logwatch**" + }, + { + "id": "3515e507-6887-449e-a5dd-441dcbf382e6", + "rowId": "20277002-8c02-4b46-932d-50134fea1b5a", + "headerId": "afc37e35-558f-47b6-a963-56cc4452bf39", + "type": "text", + "text": "Deamon" + }, + { + "id": "e3ab74fc-8ec3-41f4-906c-3cb369d69ff1", + "rowId": "20277002-8c02-4b46-932d-50134fea1b5a", + "headerId": "4811eb6e-e499-40a9-878c-ccb7732652dd", + "type": "text", + "text": "Monitors activity on server and sends activity logs" + } + ], + "tags": [] + }, + "shouldUpdate": false, + "viewType": "reading" + } + }, + "05.02 Networks/Server Tools.md": { + "0": { + "data": { + "headers": [ + { + "id": "3e091446-5453-42ec-9be1-0dd759cc3287", + "initialIndex": 0, + "content": "Program name", + "sortName": "default", + "width": "100px", + "type": "text" + }, + { + "id": "c25dc866-32e4-4b6f-b832-7c9c7474f64c", + "initialIndex": 1, + "content": "Type", + "sortName": "default", + "width": "100px", + "type": "text" + }, + { + "id": "8e545059-f28b-43c9-ace8-f84c9cd84c53", + "initialIndex": 2, + "content": "Description", + "sortName": "default", + "width": "100px", + "type": "text" + } + ], + "rows": [ + { + "id": "3482e03c-d41e-42f6-8020-80870c57a20a", + "initialIndex": 0, + "creationTime": 1657782559202 + }, + { + "id": "fb2208c9-b578-4c62-8bd8-ef2888e6befc", + "initialIndex": 1, + "creationTime": 1657782559650 + }, + { + "id": "500874b3-a6f2-49b4-b9c5-85ceba006433", + "initialIndex": 2, + "creationTime": 1657782559372 + } + ], + "cells": [ + { + "id": "a4a26708-ddbb-4e21-8199-958b69b947c8", + "rowId": "3482e03c-d41e-42f6-8020-80870c57a20a", + "headerId": "3e091446-5453-42ec-9be1-0dd759cc3287", + "type": "text", + "text": "**[[fail2ban]]**" + }, + { + "id": "c9eec6a1-955d-403f-9d26-c037c6f58167", + "rowId": "3482e03c-d41e-42f6-8020-80870c57a20a", + "headerId": "c25dc866-32e4-4b6f-b832-7c9c7474f64c", + "type": "text", + "text": "Daemon" + }, + { + "id": "d53e9ee8-b879-4c5a-86fa-048df856db40", + "rowId": "3482e03c-d41e-42f6-8020-80870c57a20a", + "headerId": "8e545059-f28b-43c9-ace8-f84c9cd84c53", + "type": "text", + "text": "Blocks suspicious attempts to login" + }, + { + "id": "583e822d-ffe5-499b-b738-ec2bc13796d2", + "rowId": "fb2208c9-b578-4c62-8bd8-ef2888e6befc", + "headerId": "3e091446-5453-42ec-9be1-0dd759cc3287", + "type": "text", + "text": "**unattended-upgrades**" + }, + { + "id": "35199864-d1ef-4722-aae4-0f51b1b7082a", + "rowId": "fb2208c9-b578-4c62-8bd8-ef2888e6befc", + "headerId": "c25dc866-32e4-4b6f-b832-7c9c7474f64c", + "type": "text", + "text": "Program" + }, + { + "id": "b959e5c8-ccd1-40b6-ad95-9c89274b33d9", + "rowId": "fb2208c9-b578-4c62-8bd8-ef2888e6befc", + "headerId": "8e545059-f28b-43c9-ace8-f84c9cd84c53", + "type": "text", + "text": "Enables automatic updates of installed programs and OS" + }, + { + "id": "5fedd4f8-e0c3-4054-be2b-7c1b24a458e8", + "rowId": "500874b3-a6f2-49b4-b9c5-85ceba006433", + "headerId": "3e091446-5453-42ec-9be1-0dd759cc3287", + "type": "text", + "text": "**logwatch**" + }, + { + "id": "8cf0dd6d-a9b6-4876-a7ff-5fce2c6f429a", + "rowId": "500874b3-a6f2-49b4-b9c5-85ceba006433", + "headerId": "c25dc866-32e4-4b6f-b832-7c9c7474f64c", + "type": "text", + "text": "Daemon" + }, + { + "id": "84d923b1-efaa-4469-9147-c7c9e168263a", + "rowId": "500874b3-a6f2-49b4-b9c5-85ceba006433", + "headerId": "8e545059-f28b-43c9-ace8-f84c9cd84c53", + "type": "text", + "text": "Monitors activity on server and sends activity logs" + } + ], + "tags": [] + }, + "shouldUpdate": false, + "viewType": "reading" + } } }, "focusedElement": { diff --git a/.obsidian/plugins/obsidian-activity-history/data.json b/.obsidian/plugins/obsidian-activity-history/data.json index 003b8947..4d0c9c8e 100644 --- a/.obsidian/plugins/obsidian-activity-history/data.json +++ b/.obsidian/plugins/obsidian-activity-history/data.json @@ -12,8 +12,8 @@ "checkpointList": [ { "path": "/", - "date": "2022-07-10", - "size": 5540713 + "date": "2022-07-16", + "size": 5702746 } ], "activityHistory": [ @@ -746,7 +746,31 @@ }, { "date": "2022-07-10", - "value": 1137 + "value": 151936 + }, + { + "date": "2022-07-11", + "value": 1087 + }, + { + "date": "2022-07-12", + "value": 1034 + }, + { + "date": "2022-07-13", + "value": 1228 + }, + { + "date": "2022-07-14", + "value": 1525 + }, + { + "date": "2022-07-15", + "value": 1946 + }, + { + "date": "2022-07-16", + "value": 4556 } ] } diff --git a/.obsidian/plugins/obsidian-commits/data.json b/.obsidian/plugins/obsidian-commits/data.json index abd49f78..8f2328a0 100644 --- a/.obsidian/plugins/obsidian-commits/data.json +++ b/.obsidian/plugins/obsidian-commits/data.json @@ -920,7 +920,7 @@ "links": 5 }, "04.01 lebv.org/Hosting Tasks.md": { - "size": 2383, + "size": 2809, "tags": 4, "links": 8 }, @@ -1920,7 +1920,7 @@ "links": 1 }, "01.02 Home/@Main Dashboard.md": { - "size": 4395, + "size": 5713, "tags": 0, "links": 1 }, @@ -4480,17 +4480,82 @@ "links": 4 }, "00.01 Admin/Calendars/2022-07-10.md": { + "size": 1276, + "tags": 0, + "links": 7 + }, + "00.03 News/American Graffiti New Beverly Cinema.md": { + "size": 30743, + "tags": 3, + "links": 1 + }, + "00.03 News/The Holy Anarchy of Fun.md": { + "size": 10236, + "tags": 3, + "links": 2 + }, + "00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md": { + "size": 29978, + "tags": 3, + "links": 2 + }, + "00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md": { + "size": 22018, + "tags": 2, + "links": 2 + }, + "00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md": { + "size": 57378, + "tags": 3, + "links": 2 + }, + "00.01 Admin/Calendars/2022-07-11.md": { + "size": 1108, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2022-07-12.md": { + "size": 1108, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2022-07-13.md": { "size": 1108, "tags": 0, + "links": 6 + }, + "00.01 Admin/Calendars/2022-07-14.md": { + "size": 1108, + "tags": 0, + "links": 4 + }, + "00.01 Admin/Calendars/2022-07-15.md": { + "size": 1108, + "tags": 0, + "links": 6 + }, + "00.01 Admin/Calendars/2022-07-16.md": { + "size": 1108, + "tags": 0, + "links": 4 + }, + "02.03 Zürich/Daizy.md": { + "size": 1073, + "tags": 2, + "links": 4 + }, + "02.03 Zürich/Modo.md": { + "size": 1077, + "tags": 1, "links": 4 } }, "commitTypes": { "/": { - "Refactor": 620, - "Create": 567, - "Link": 1154, - "Expand": 517 + "Refactor": 627, + "Create": 580, + "Link": 1184, + "Expand": 522 } }, "dailyCommits": { @@ -4501,40 +4566,45 @@ "3": 9, "4": 12, "5": 6, - "6": 19, - "7": 192, - "8": 296, - "9": 235, + "6": 20, + "7": 197, + "8": 300, + "9": 242, "10": 158, - "11": 107, + "11": 108, "12": 131, - "13": 249, + "13": 250, "14": 173, "15": 114, - "16": 98, + "16": 102, "17": 123, - "18": 282, + "18": 283, "19": 136, - "20": 126, + "20": 129, "21": 69, - "22": 190, - "23": 51 + "22": 217, + "23": 52 } }, "weeklyCommits": { "/": { - "Mon": 434, - "Tue": 248, - "Wed": 290, - "Thu": 343, - "Fri": 276, + "Mon": 440, + "Tue": 250, + "Wed": 293, + "Thu": 346, + "Fri": 279, "Sat": 0, - "Sun": 1267 + "Sun": 1305 } }, "recentCommits": { "/": { "Expanded": [ + " Modo ", + " Daizy ", + " @Main Dashboard ", + " Hosting Tasks ", + " 2022-07-10 ", " Crypto Tasks ", " Configuring UFW ", " Ginger ", @@ -4580,14 +4650,22 @@ " Household ", " 2022-06-08 ", " 2022-06-07 ", - " 2022-06-06 ", - " 2022-06-05 ", - " 2022-06-04 ", - " 2022-06-04 ", - " 2022-06-03 ", - " 2022-06-02 " + " 2022-06-06 " ], "Created": [ + " Untitled ", + " Untitled ", + " 2022-07-16 ", + " 2022-07-15 ", + " 2022-07-14 ", + " 2022-07-13 ", + " 2022-07-12 ", + " 2022-07-11 ", + " Meet Richard Fritz, America’s Most Unelectable Elected Official Defector ", + " He Had a Dark Secret. It Changed His Best Friend’s Life. ", + " Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community ", + " The Holy Anarchy of Fun ", + " American Graffiti New Beverly Cinema ", " 2022-07-10 ", " 2022-07-09 ", " Untitled ", @@ -4625,22 +4703,16 @@ " 2022-06-21 ", " Arles ", " Nimes ", - " Untitled ", - " Avignon ", - " 2022-06-20 ", - " 2022-06-19 ", - " 2022-06-18 ", - " 2022-06-17 ", - " 2022-06-16 ", - " 2022-06-15 ", - " As El Salvador’s president tries to silence free press, journalist brothers expose his ties to street gangs - Los Angeles Times ", - " Two Professors Found What Creates a Mass Shooter. Will Politicians Pay Attention ", - " Hazing, fighting, sexual assaults How Valley Forge Military Academy devolved into “Lord of the Flies” ", - " What did the ancient Maya see in the stars Their descendants team up with scientists to find out ", - " The Follower ", - " Dianne Feinstein, the Institutionalist " + " Untitled " ], "Renamed": [ + " Modo ", + " Daizy ", + " Meet Richard Fritz, America’s Most Unelectable Elected Official Defector ", + " He Had a Dark Secret. It Changed His Best Friend’s Life. ", + " Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community ", + " The Holy Anarchy of Fun ", + " American Graffiti New Beverly Cinema ", " Ginger ", " La promesse de l'aube ", " Vernon Subutex 1 ", @@ -4684,16 +4756,16 @@ " Deshaun Watson’s Massages Were Enabled by the Texans and a Spa Owner ", " Albert Camus The philosopher who resisted despair ", " The Mafia, The CIA and George Bush ", - " The Mafia, The CIA and George Bush ", - " Riding London’s Unexpectedly Fantastic Elizabeth Line ", - " He was my high school journalism teacher. Then I investigated his relationships with teenage girls. ", - " It’s 10 PM. Do You Know Where Your Cat Is Hakai Magazine ", - " The making of Prince William ", - " When Cars Kill Pedestrians ", - " The Incredible True Story of Jody Harris, Con Artist Extraordinaire. ", - " The Women Who Ran Genghis Khan’s Empire " + " The Mafia, The CIA and George Bush " ], "Tagged": [ + " Modo ", + " Daizy ", + " Meet Richard Fritz, America’s Most Unelectable Elected Official Defector ", + " Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community ", + " He Had a Dark Secret. It Changed His Best Friend’s Life. ", + " American Graffiti New Beverly Cinema ", + " The Holy Anarchy of Fun ", " Ginger ", " La promesse de l'aube ", " Vernon Subutex 1 ", @@ -4737,14 +4809,7 @@ " American Racism and the Buffalo Shooting ", " A Search for Family, a Love for Horses and How It All Led to Kentucky Derby Glory ", " How Hollywood’s Blockbuster Golden Boys Went Weird Los Angeles Magazine ", - " Chez Robert ", - " Inavoué ", - " The Clockwork Orgasm - Common Reader ", - " The Untold Story of the White House’s Record Collection ", - " North Korea Hacked Him. So He Took Down Its Internet ", - " How a billionaires boys’ club came to dominate the public square ", - " There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego ", - " Did Jesse James Bury Confederate Gold These Treasure Hunters Think So. " + " Chez Robert " ], "Refactored": [ " @Main Dashboard ", @@ -4843,6 +4908,29 @@ " Digital Cover - Method Man - Essence " ], "Linked": [ + " Modo ", + " Modo ", + " Daizy ", + " Daizy ", + " 2022-07-16 ", + " 2022-07-15 ", + " 2022-07-15 ", + " 2022-07-14 ", + " 2022-07-13 ", + " 2022-07-13 ", + " 2022-07-12 ", + " Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community ", + " He Had a Dark Secret. It Changed His Best Friend’s Life. ", + " Meet Richard Fritz, America’s Most Unelectable Elected Official Defector ", + " The Holy Anarchy of Fun ", + " 2022-07-11 ", + " Meet Richard Fritz, America’s Most Unelectable Elected Official Defector ", + " Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community ", + " He Had a Dark Secret. It Changed His Best Friend’s Life. ", + " American Graffiti New Beverly Cinema ", + " The Holy Anarchy of Fun ", + " 2022-07-10 ", + " 2022-07-10 ", " 2022-07-10 ", " 2022-07-09 ", " Ginger ", @@ -4870,30 +4958,7 @@ " 2022-07-02 ", " Git from the Bottom Up ", " 2022-07-01 ", - " 2022-06-30 ", - " Jeff Bezos’s Next Monopoly The Press ", - " 2022-06-29 ", - " 2022-06-28 ", - " At 88, Poker Legend Doyle Brunson Is Still Bluffing. Or Is He ", - " 2022-06-27 ", - " Amélie Solanet ", - " @@Travels ", - " Bahrein ", - " The Biggest Change in Media Since Cable Is Happening Right Now ", - " At 88, Poker Legend Doyle Brunson Is Still Bluffing. Or Is He ", - " Jeff Bezos’s Next Monopoly The Press ", - " The Biggest Change in Media Since Cable Is Happening Right Now ", - " 2022-06-26 ", - " Dianne Feinstein, the Institutionalist ", - " 2022-06-25 ", - " 2022-06-25 ", - " Waiting for keys, unable to break down doors Uvalde schools police chief defends delay in confronting gunman ", - " 2022-06-25 ", - " 2022-06-25 ", - " 2022-06-21 ", - " 2022-06-24 ", - " 2022-06-25 ", - " Bandes Dessinées " + " 2022-06-30 " ], "Removed Tags from": [ " Le Miel de Paris ", diff --git a/.obsidian/plugins/obsidian-icon-shortcodes/main.js b/.obsidian/plugins/obsidian-icon-shortcodes/main.js index 19f83054..54970b54 100644 --- a/.obsidian/plugins/obsidian-icon-shortcodes/main.js +++ b/.obsidian/plugins/obsidian-icon-shortcodes/main.js @@ -3,8 +3,8 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source visit the plugins github repository */ -var rp=Object.create;var Et=Object.defineProperty,op=Object.defineProperties,sp=Object.getOwnPropertyDescriptor,cp=Object.getOwnPropertyDescriptors,lp=Object.getOwnPropertyNames,Qt=Object.getOwnPropertySymbols,pp=Object.getPrototypeOf,Hn=Object.prototype.hasOwnProperty,Pi=Object.prototype.propertyIsEnumerable;var Ti=(e,t,n)=>t in e?Et(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Me=(e,t)=>{for(var n in t||(t={}))Hn.call(t,n)&&Ti(e,n,t[n]);if(Qt)for(var n of Qt(t))Pi.call(t,n)&&Ti(e,n,t[n]);return e},Qe=(e,t)=>op(e,cp(t)),Oi=e=>Et(e,"__esModule",{value:!0});var en=(e,t)=>{var n={};for(var a in e)Hn.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&Qt)for(var a of Qt(e))t.indexOf(a)<0&&Pi.call(e,a)&&(n[a]=e[a]);return n};var K=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ni=(e,t)=>{Oi(e);for(var n in t)Et(e,n,{get:t[n],enumerable:!0})},up=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of lp(t))!Hn.call(e,a)&&a!=="default"&&Et(e,a,{get:()=>t[a],enumerable:!(n=sp(t,a))||n.enumerable});return e},ie=e=>up(Oi(Et(e!=null?rp(pp(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var $=(e,t,n)=>new Promise((a,i)=>{var r=p=>{try{s(n.next(p))}catch(l){i(l)}},o=p=>{try{s(n.throw(p))}catch(l){i(l)}},s=p=>p.done?a(p.value):Promise.resolve(p.value).then(r,o);s((n=n.apply(e,t)).next())});var Zi=K((h1,gp)=>{gp.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana"},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana"},"image/avcs":{source:"iana"},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var Yi=K((g1,Ki)=>{Ki.exports=Zi()});var zt=K((x1,Ji)=>{"use strict";function Pe(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function Xi(e,t){for(var n="",a=0,i=-1,r=0,o,s=0;s<=e.length;++s){if(s2){var p=n.lastIndexOf("/");if(p!==n.length-1){p===-1?(n="",a=0):(n=n.slice(0,p),a=n.length-1-n.lastIndexOf("/")),i=s,r=0;continue}}else if(n.length===2||n.length===1){n="",a=0,i=s,r=0;continue}}t&&(n.length>0?n+="/..":n="..",a=2)}else n.length>0?n+="/"+e.slice(i+1,s):n=e.slice(i+1,s),a=s-i-1;i=s,r=0}else o===46&&r!==-1?++r:r=-1}return n}function xp(e,t){var n=t.dir||t.root,a=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+a:n+e+a:a}var ot={resolve:function(){for(var t="",n=!1,a,i=arguments.length-1;i>=-1&&!n;i--){var r;i>=0?r=arguments[i]:(a===void 0&&(a=process.cwd()),r=a),Pe(r),r.length!==0&&(t=r+"/"+t,n=r.charCodeAt(0)===47)}return t=Xi(t,!n),n?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(t){if(Pe(t),t.length===0)return".";var n=t.charCodeAt(0)===47,a=t.charCodeAt(t.length-1)===47;return t=Xi(t,!n),t.length===0&&!n&&(t="."),t.length>0&&a&&(t+="/"),n?"/"+t:t},isAbsolute:function(t){return Pe(t),t.length>0&&t.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var t,n=0;n0&&(t===void 0?t=a:t+="/"+a)}return t===void 0?".":ot.normalize(t)},relative:function(t,n){if(Pe(t),Pe(n),t===n||(t=ot.resolve(t),n=ot.resolve(n),t===n))return"";for(var a=1;al){if(n.charCodeAt(o+d)===47)return n.slice(o+d+1);if(d===0)return n.slice(o+d)}else r>l&&(t.charCodeAt(a+d)===47?c=d:d===0&&(c=0));break}var h=t.charCodeAt(a+d),g=n.charCodeAt(o+d);if(h!==g)break;h===47&&(c=d)}var f="";for(d=a+c+1;d<=i;++d)(d===i||t.charCodeAt(d)===47)&&(f.length===0?f+="..":f+="/..");return f.length>0?f+n.slice(o+c):(o+=c,n.charCodeAt(o)===47&&++o,n.slice(o))},_makeLong:function(t){return t},dirname:function(t){if(Pe(t),t.length===0)return".";for(var n=t.charCodeAt(0),a=n===47,i=-1,r=!0,o=t.length-1;o>=1;--o)if(n=t.charCodeAt(o),n===47){if(!r){i=o;break}}else r=!1;return i===-1?a?"/":".":a&&i===1?"//":t.slice(0,i)},basename:function(t,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Pe(t);var a=0,i=-1,r=!0,o;if(n!==void 0&&n.length>0&&n.length<=t.length){if(n.length===t.length&&n===t)return"";var s=n.length-1,p=-1;for(o=t.length-1;o>=0;--o){var l=t.charCodeAt(o);if(l===47){if(!r){a=o+1;break}}else p===-1&&(r=!1,p=o+1),s>=0&&(l===n.charCodeAt(s)?--s==-1&&(i=o):(s=-1,i=p))}return a===i?i=p:i===-1&&(i=t.length),t.slice(a,i)}else{for(o=t.length-1;o>=0;--o)if(t.charCodeAt(o)===47){if(!r){a=o+1;break}}else i===-1&&(r=!1,i=o+1);return i===-1?"":t.slice(a,i)}},extname:function(t){Pe(t);for(var n=-1,a=0,i=-1,r=!0,o=0,s=t.length-1;s>=0;--s){var p=t.charCodeAt(s);if(p===47){if(!r){a=s+1;break}continue}i===-1&&(r=!1,i=s+1),p===46?n===-1?n=s:o!==1&&(o=1):n!==-1&&(o=-1)}return n===-1||i===-1||o===0||o===1&&n===i-1&&n===a+1?"":t.slice(n,i)},format:function(t){if(t===null||typeof t!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return xp("/",t)},parse:function(t){Pe(t);var n={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return n;var a=t.charCodeAt(0),i=a===47,r;i?(n.root="/",r=1):r=0;for(var o=-1,s=0,p=-1,l=!0,c=t.length-1,d=0;c>=r;--c){if(a=t.charCodeAt(c),a===47){if(!l){s=c+1;break}continue}p===-1&&(l=!1,p=c+1),a===46?o===-1?o=c:d!==1&&(d=1):o!==-1&&(d=-1)}return o===-1||p===-1||d===0||d===1&&o===p-1&&o===s+1?p!==-1&&(s===0&&i?n.base=n.name=t.slice(1,p):n.base=n.name=t.slice(s,p)):(s===0&&i?(n.name=t.slice(1,o),n.base=t.slice(1,p)):(n.name=t.slice(s,o),n.base=t.slice(s,p)),n.ext=t.slice(o,p)),s>0?n.dir=t.slice(0,s-1):i&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};ot.posix=ot;Ji.exports=ot});var tr=K(ye=>{"use strict";var nn=Yi(),vp=zt().extname,Qi=/^\s*([^;\s]*)(?:;|\s|$)/,bp=/^text\//i;ye.charset=er;ye.charsets={lookup:er};ye.contentType=yp;ye.extension=_p;ye.extensions=Object.create(null);ye.lookup=kp;ye.types=Object.create(null);wp(ye.extensions,ye.types);function er(e){if(!e||typeof e!="string")return!1;var t=Qi.exec(e),n=t&&nn[t[1].toLowerCase()];return n&&n.charset?n.charset:t&&bp.test(t[1])?"UTF-8":!1}function yp(e){if(!e||typeof e!="string")return!1;var t=e.indexOf("/")===-1?ye.lookup(e):e;if(!t)return!1;if(t.indexOf("charset")===-1){var n=ye.charset(t);n&&(t+="; charset="+n.toLowerCase())}return t}function _p(e){if(!e||typeof e!="string")return!1;var t=Qi.exec(e),n=t&&ye.extensions[t[1].toLowerCase()];return!n||!n.length?!1:n[0]}function kp(e){if(!e||typeof e!="string")return!1;var t=vp("x."+e).toLowerCase().substr(1);return t&&ye.types[t]||!1}function wp(e,t){var n=["nginx","apache",void 0,"iana"];Object.keys(nn).forEach(function(i){var r=nn[i],o=r.extensions;if(!(!o||!o.length)){e[i]=o;for(var s=0;sc||l===c&&t[p].substr(0,12)==="application/"))continue}t[p]=i}}})}});var Gn=K((b1,nr)=>{var Cp=typeof global=="object"&&global&&global.Object===Object&&global;nr.exports=Cp});var We=K((y1,ar)=>{var jp=Gn(),Lp=typeof self=="object"&&self&&self.Object===Object&&self,Ip=jp||Lp||Function("return this")();ar.exports=Ip});var an=K((_1,ir)=>{var Sp=We(),Ap=Sp.Symbol;ir.exports=Ap});var or=K((k1,rr)=>{function Mp(e,t){var n=-1,a=e.length;for(t||(t=Array(a));++n{var sr=an(),cr=Object.prototype,Fp=cr.hasOwnProperty,Ep=cr.toString,Bt=sr?sr.toStringTag:void 0;function zp(e){var t=Fp.call(e,Bt),n=e[Bt];try{e[Bt]=void 0;var a=!0}catch{}var i=Ep.call(e);return a&&(t?e[Bt]=n:delete e[Bt]),i}lr.exports=zp});var dr=K((C1,ur)=>{var Bp=Object.prototype,Pp=Bp.toString;function Tp(e){return Pp.call(e)}ur.exports=Tp});var st=K((j1,hr)=>{var mr=an(),Op=pr(),Np=dr(),Dp="[object Null]",Wp="[object Undefined]",fr=mr?mr.toStringTag:void 0;function Rp(e){return e==null?e===void 0?Wp:Dp:fr&&fr in Object(e)?Op(e):Np(e)}hr.exports=Rp});var Zn=K((L1,gr)=>{function Up(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}gr.exports=Up});var Kn=K((I1,xr)=>{var Vp=st(),Hp=Zn(),qp="[object AsyncFunction]",$p="[object Function]",Gp="[object GeneratorFunction]",Zp="[object Proxy]";function Kp(e){if(!Hp(e))return!1;var t=Vp(e);return t==$p||t==Gp||t==qp||t==Zp}xr.exports=Kp});var br=K((S1,vr)=>{var Yp=We(),Xp=Yp["__core-js_shared__"];vr.exports=Xp});var kr=K((A1,_r)=>{var Yn=br(),yr=function(){var e=/[^.]+$/.exec(Yn&&Yn.keys&&Yn.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Jp(e){return!!yr&&yr in e}_r.exports=Jp});var Xn=K((M1,wr)=>{var Qp=Function.prototype,eu=Qp.toString;function tu(e){if(e!=null){try{return eu.call(e)}catch{}try{return e+""}catch{}}return""}wr.exports=tu});var jr=K((F1,Cr)=>{var nu=Kn(),au=kr(),iu=Zn(),ru=Xn(),ou=/[\\^$.*+?()[\]{}|]/g,su=/^\[object .+?Constructor\]$/,cu=Function.prototype,lu=Object.prototype,pu=cu.toString,uu=lu.hasOwnProperty,du=RegExp("^"+pu.call(uu).replace(ou,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mu(e){if(!iu(e)||au(e))return!1;var t=nu(e)?du:su;return t.test(ru(e))}Cr.exports=mu});var Ir=K((E1,Lr)=>{function fu(e,t){return e==null?void 0:e[t]}Lr.exports=fu});var ct=K((z1,Sr)=>{var hu=jr(),gu=Ir();function xu(e,t){var n=gu(e,t);return hu(n)?n:void 0}Sr.exports=xu});var Mr=K((B1,Ar)=>{var vu=ct(),bu=We(),yu=vu(bu,"DataView");Ar.exports=yu});var Er=K((P1,Fr)=>{var _u=ct(),ku=We(),wu=_u(ku,"Map");Fr.exports=wu});var Br=K((T1,zr)=>{var Cu=ct(),ju=We(),Lu=Cu(ju,"Promise");zr.exports=Lu});var Tr=K((O1,Pr)=>{var Iu=ct(),Su=We(),Au=Iu(Su,"Set");Pr.exports=Au});var Nr=K((N1,Or)=>{var Mu=ct(),Fu=We(),Eu=Mu(Fu,"WeakMap");Or.exports=Eu});var $r=K((D1,qr)=>{var Jn=Mr(),Qn=Er(),ea=Br(),ta=Tr(),na=Nr(),Dr=st(),lt=Xn(),Wr="[object Map]",zu="[object Object]",Rr="[object Promise]",Ur="[object Set]",Vr="[object WeakMap]",Hr="[object DataView]",Bu=lt(Jn),Pu=lt(Qn),Tu=lt(ea),Ou=lt(ta),Nu=lt(na),et=Dr;(Jn&&et(new Jn(new ArrayBuffer(1)))!=Hr||Qn&&et(new Qn)!=Wr||ea&&et(ea.resolve())!=Rr||ta&&et(new ta)!=Ur||na&&et(new na)!=Vr)&&(et=function(e){var t=Dr(e),n=t==zu?e.constructor:void 0,a=n?lt(n):"";if(a)switch(a){case Bu:return Hr;case Pu:return Wr;case Tu:return Rr;case Ou:return Ur;case Nu:return Vr}return t});qr.exports=et});var aa=K((W1,Gr)=>{var Du=9007199254740991;function Wu(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Du}Gr.exports=Wu});var ia=K((R1,Zr)=>{var Ru=Kn(),Uu=aa();function Vu(e){return e!=null&&Uu(e.length)&&!Ru(e)}Zr.exports=Vu});var ra=K((U1,Kr)=>{var Hu=Array.isArray;Kr.exports=Hu});var Pt=K((V1,Yr)=>{function qu(e){return e!=null&&typeof e=="object"}Yr.exports=qu});var Jr=K((H1,Xr)=>{var $u=st(),Gu=ra(),Zu=Pt(),Ku="[object String]";function Yu(e){return typeof e=="string"||!Gu(e)&&Zu(e)&&$u(e)==Ku}Xr.exports=Yu});var eo=K((q1,Qr)=>{function Xu(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}Qr.exports=Xu});var no=K(($1,to)=>{function Ju(e){var t=-1,n=Array(e.size);return e.forEach(function(a,i){n[++t]=[i,a]}),n}to.exports=Ju});var io=K((G1,ao)=>{function Qu(e){var t=-1,n=Array(e.size);return e.forEach(function(a){n[++t]=a}),n}ao.exports=Qu});var oo=K((Z1,ro)=>{function ed(e){return e.split("")}ro.exports=ed});var co=K((K1,so)=>{var td="\\ud800-\\udfff",nd="\\u0300-\\u036f",ad="\\ufe20-\\ufe2f",id="\\u20d0-\\u20ff",rd=nd+ad+id,od="\\ufe0e\\ufe0f",sd="\\u200d",cd=RegExp("["+sd+td+rd+od+"]");function ld(e){return cd.test(e)}so.exports=ld});var xo=K((Y1,go)=>{var lo="\\ud800-\\udfff",pd="\\u0300-\\u036f",ud="\\ufe20-\\ufe2f",dd="\\u20d0-\\u20ff",md=pd+ud+dd,fd="\\ufe0e\\ufe0f",hd="["+lo+"]",oa="["+md+"]",sa="\\ud83c[\\udffb-\\udfff]",gd="(?:"+oa+"|"+sa+")",po="[^"+lo+"]",uo="(?:\\ud83c[\\udde6-\\uddff]){2}",mo="[\\ud800-\\udbff][\\udc00-\\udfff]",xd="\\u200d",fo=gd+"?",ho="["+fd+"]?",vd="(?:"+xd+"(?:"+[po,uo,mo].join("|")+")"+ho+fo+")*",bd=ho+fo+vd,yd="(?:"+[po+oa+"?",oa,uo,mo,hd].join("|")+")",_d=RegExp(sa+"(?="+sa+")|"+yd+bd,"g");function kd(e){return e.match(_d)||[]}go.exports=kd});var bo=K((X1,vo)=>{var wd=oo(),Cd=co(),jd=xo();function Ld(e){return Cd(e)?jd(e):wd(e)}vo.exports=Ld});var _o=K((J1,yo)=>{function Id(e,t){for(var n=-1,a=e==null?0:e.length,i=Array(a);++n{var Sd=_o();function Ad(e,t){return Sd(t,function(n){return e[n]})}ko.exports=Ad});var jo=K((e2,Co)=>{function Md(e,t){for(var n=-1,a=Array(e);++n{var Fd=st(),Ed=Pt(),zd="[object Arguments]";function Bd(e){return Ed(e)&&Fd(e)==zd}Lo.exports=Bd});var Fo=K((n2,Mo)=>{var So=Io(),Pd=Pt(),Ao=Object.prototype,Td=Ao.hasOwnProperty,Od=Ao.propertyIsEnumerable,Nd=So(function(){return arguments}())?So:function(e){return Pd(e)&&Td.call(e,"callee")&&!Od.call(e,"callee")};Mo.exports=Nd});var zo=K((a2,Eo)=>{function Dd(){return!1}Eo.exports=Dd});var Oo=K((Tt,pt)=>{var Wd=We(),Rd=zo(),Bo=typeof Tt=="object"&&Tt&&!Tt.nodeType&&Tt,Po=Bo&&typeof pt=="object"&&pt&&!pt.nodeType&&pt,Ud=Po&&Po.exports===Bo,To=Ud?Wd.Buffer:void 0,Vd=To?To.isBuffer:void 0,Hd=Vd||Rd;pt.exports=Hd});var Do=K((i2,No)=>{var qd=9007199254740991,$d=/^(?:0|[1-9]\d*)$/;function Gd(e,t){var n=typeof e;return t=t??qd,!!t&&(n=="number"||n!="symbol"&&$d.test(e))&&e>-1&&e%1==0&&e{var Zd=st(),Kd=aa(),Yd=Pt(),Xd="[object Arguments]",Jd="[object Array]",Qd="[object Boolean]",em="[object Date]",tm="[object Error]",nm="[object Function]",am="[object Map]",im="[object Number]",rm="[object Object]",om="[object RegExp]",sm="[object Set]",cm="[object String]",lm="[object WeakMap]",pm="[object ArrayBuffer]",um="[object DataView]",dm="[object Float32Array]",mm="[object Float64Array]",fm="[object Int8Array]",hm="[object Int16Array]",gm="[object Int32Array]",xm="[object Uint8Array]",vm="[object Uint8ClampedArray]",bm="[object Uint16Array]",ym="[object Uint32Array]",ue={};ue[dm]=ue[mm]=ue[fm]=ue[hm]=ue[gm]=ue[xm]=ue[vm]=ue[bm]=ue[ym]=!0;ue[Xd]=ue[Jd]=ue[pm]=ue[Qd]=ue[um]=ue[em]=ue[tm]=ue[nm]=ue[am]=ue[im]=ue[rm]=ue[om]=ue[sm]=ue[cm]=ue[lm]=!1;function _m(e){return Yd(e)&&Kd(e.length)&&!!ue[Zd(e)]}Wo.exports=_m});var Vo=K((o2,Uo)=>{function km(e){return function(t){return e(t)}}Uo.exports=km});var qo=K((Nt,ut)=>{var wm=Gn(),Ho=typeof Nt=="object"&&Nt&&!Nt.nodeType&&Nt,Ot=Ho&&typeof ut=="object"&&ut&&!ut.nodeType&&ut,Cm=Ot&&Ot.exports===Ho,ca=Cm&&wm.process,jm=function(){try{var e=Ot&&Ot.require&&Ot.require("util").types;return e||ca&&ca.binding&&ca.binding("util")}catch{}}();ut.exports=jm});var Ko=K((s2,Zo)=>{var Lm=Ro(),Im=Vo(),$o=qo(),Go=$o&&$o.isTypedArray,Sm=Go?Im(Go):Lm;Zo.exports=Sm});var Xo=K((c2,Yo)=>{var Am=jo(),Mm=Fo(),Fm=ra(),Em=Oo(),zm=Do(),Bm=Ko(),Pm=Object.prototype,Tm=Pm.hasOwnProperty;function Om(e,t){var n=Fm(e),a=!n&&Mm(e),i=!n&&!a&&Em(e),r=!n&&!a&&!i&&Bm(e),o=n||a||i||r,s=o?Am(e.length,String):[],p=s.length;for(var l in e)(t||Tm.call(e,l))&&!(o&&(l=="length"||i&&(l=="offset"||l=="parent")||r&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||zm(l,p)))&&s.push(l);return s}Yo.exports=Om});var Qo=K((l2,Jo)=>{var Nm=Object.prototype;function Dm(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Nm;return e===n}Jo.exports=Dm});var ts=K((p2,es)=>{function Wm(e,t){return function(n){return e(t(n))}}es.exports=Wm});var as=K((u2,ns)=>{var Rm=ts(),Um=Rm(Object.keys,Object);ns.exports=Um});var rs=K((d2,is)=>{var Vm=Qo(),Hm=as(),qm=Object.prototype,$m=qm.hasOwnProperty;function Gm(e){if(!Vm(e))return Hm(e);var t=[];for(var n in Object(e))$m.call(e,n)&&n!="constructor"&&t.push(n);return t}is.exports=Gm});var ss=K((m2,os)=>{var Zm=Xo(),Km=rs(),Ym=ia();function Xm(e){return Ym(e)?Zm(e):Km(e)}os.exports=Xm});var ls=K((f2,cs)=>{var Jm=wo(),Qm=ss();function ef(e){return e==null?[]:Jm(e,Qm(e))}cs.exports=ef});var ds=K((h2,us)=>{var ps=an(),tf=or(),nf=$r(),af=ia(),rf=Jr(),of=eo(),sf=no(),cf=io(),lf=bo(),pf=ls(),uf="[object Map]",df="[object Set]",la=ps?ps.iterator:void 0;function mf(e){if(!e)return[];if(af(e))return rf(e)?lf(e):tf(e);if(la&&e[la])return of(e[la]());var t=nf(e),n=t==uf?sf:t==df?cf:pf;return n(e)}us.exports=mf});var pa=K((g2,ff)=>{ff.exports={"100":"\u{1F4AF}","1234":"\u{1F522}",umbrella_with_rain_drops:"\u2614",coffee:"\u2615",aries:"\u2648",taurus:"\u2649",sagittarius:"\u2650",capricorn:"\u2651",aquarius:"\u2652",pisces:"\u2653",anchor:"\u2693",white_check_mark:"\u2705",sparkles:"\u2728",question:"\u2753",grey_question:"\u2754",grey_exclamation:"\u2755",exclamation:"\u2757",heavy_exclamation_mark:"\u2757",heavy_plus_sign:"\u2795",heavy_minus_sign:"\u2796",heavy_division_sign:"\u2797",hash:"#\uFE0F\u20E3",keycap_star:"*\uFE0F\u20E3",zero:"0\uFE0F\u20E3",one:"1\uFE0F\u20E3",two:"2\uFE0F\u20E3",three:"3\uFE0F\u20E3",four:"4\uFE0F\u20E3",five:"5\uFE0F\u20E3",six:"6\uFE0F\u20E3",seven:"7\uFE0F\u20E3",eight:"8\uFE0F\u20E3",nine:"9\uFE0F\u20E3",copyright:"\xA9\uFE0F",registered:"\xAE\uFE0F",mahjong:"\u{1F004}",black_joker:"\u{1F0CF}",a:"\u{1F170}\uFE0F",b:"\u{1F171}\uFE0F",o2:"\u{1F17E}\uFE0F",parking:"\u{1F17F}\uFE0F",ab:"\u{1F18E}",cl:"\u{1F191}",cool:"\u{1F192}",free:"\u{1F193}",id:"\u{1F194}",new:"\u{1F195}",ng:"\u{1F196}",ok:"\u{1F197}",sos:"\u{1F198}",up:"\u{1F199}",vs:"\u{1F19A}","flag-ac":"\u{1F1E6}\u{1F1E8}","flag-ad":"\u{1F1E6}\u{1F1E9}","flag-ae":"\u{1F1E6}\u{1F1EA}","flag-af":"\u{1F1E6}\u{1F1EB}","flag-ag":"\u{1F1E6}\u{1F1EC}","flag-ai":"\u{1F1E6}\u{1F1EE}","flag-al":"\u{1F1E6}\u{1F1F1}","flag-am":"\u{1F1E6}\u{1F1F2}","flag-ao":"\u{1F1E6}\u{1F1F4}","flag-aq":"\u{1F1E6}\u{1F1F6}","flag-ar":"\u{1F1E6}\u{1F1F7}","flag-as":"\u{1F1E6}\u{1F1F8}","flag-at":"\u{1F1E6}\u{1F1F9}","flag-au":"\u{1F1E6}\u{1F1FA}","flag-aw":"\u{1F1E6}\u{1F1FC}","flag-ax":"\u{1F1E6}\u{1F1FD}","flag-az":"\u{1F1E6}\u{1F1FF}","flag-ba":"\u{1F1E7}\u{1F1E6}","flag-bb":"\u{1F1E7}\u{1F1E7}","flag-bd":"\u{1F1E7}\u{1F1E9}","flag-be":"\u{1F1E7}\u{1F1EA}","flag-bf":"\u{1F1E7}\u{1F1EB}","flag-bg":"\u{1F1E7}\u{1F1EC}","flag-bh":"\u{1F1E7}\u{1F1ED}","flag-bi":"\u{1F1E7}\u{1F1EE}","flag-bj":"\u{1F1E7}\u{1F1EF}","flag-bl":"\u{1F1E7}\u{1F1F1}","flag-bm":"\u{1F1E7}\u{1F1F2}","flag-bn":"\u{1F1E7}\u{1F1F3}","flag-bo":"\u{1F1E7}\u{1F1F4}","flag-bq":"\u{1F1E7}\u{1F1F6}","flag-br":"\u{1F1E7}\u{1F1F7}","flag-bs":"\u{1F1E7}\u{1F1F8}","flag-bt":"\u{1F1E7}\u{1F1F9}","flag-bv":"\u{1F1E7}\u{1F1FB}","flag-bw":"\u{1F1E7}\u{1F1FC}","flag-by":"\u{1F1E7}\u{1F1FE}","flag-bz":"\u{1F1E7}\u{1F1FF}","flag-ca":"\u{1F1E8}\u{1F1E6}","flag-cc":"\u{1F1E8}\u{1F1E8}","flag-cd":"\u{1F1E8}\u{1F1E9}","flag-cf":"\u{1F1E8}\u{1F1EB}","flag-cg":"\u{1F1E8}\u{1F1EC}","flag-ch":"\u{1F1E8}\u{1F1ED}","flag-ci":"\u{1F1E8}\u{1F1EE}","flag-ck":"\u{1F1E8}\u{1F1F0}","flag-cl":"\u{1F1E8}\u{1F1F1}","flag-cm":"\u{1F1E8}\u{1F1F2}",cn:"\u{1F1E8}\u{1F1F3}","flag-cn":"\u{1F1E8}\u{1F1F3}","flag-co":"\u{1F1E8}\u{1F1F4}","flag-cp":"\u{1F1E8}\u{1F1F5}","flag-cr":"\u{1F1E8}\u{1F1F7}","flag-cu":"\u{1F1E8}\u{1F1FA}","flag-cv":"\u{1F1E8}\u{1F1FB}","flag-cw":"\u{1F1E8}\u{1F1FC}","flag-cx":"\u{1F1E8}\u{1F1FD}","flag-cy":"\u{1F1E8}\u{1F1FE}","flag-cz":"\u{1F1E8}\u{1F1FF}",de:"\u{1F1E9}\u{1F1EA}","flag-de":"\u{1F1E9}\u{1F1EA}","flag-dg":"\u{1F1E9}\u{1F1EC}","flag-dj":"\u{1F1E9}\u{1F1EF}","flag-dk":"\u{1F1E9}\u{1F1F0}","flag-dm":"\u{1F1E9}\u{1F1F2}","flag-do":"\u{1F1E9}\u{1F1F4}","flag-dz":"\u{1F1E9}\u{1F1FF}","flag-ea":"\u{1F1EA}\u{1F1E6}","flag-ec":"\u{1F1EA}\u{1F1E8}","flag-ee":"\u{1F1EA}\u{1F1EA}","flag-eg":"\u{1F1EA}\u{1F1EC}","flag-eh":"\u{1F1EA}\u{1F1ED}","flag-er":"\u{1F1EA}\u{1F1F7}",es:"\u{1F1EA}\u{1F1F8}","flag-es":"\u{1F1EA}\u{1F1F8}","flag-et":"\u{1F1EA}\u{1F1F9}","flag-eu":"\u{1F1EA}\u{1F1FA}","flag-fi":"\u{1F1EB}\u{1F1EE}","flag-fj":"\u{1F1EB}\u{1F1EF}","flag-fk":"\u{1F1EB}\u{1F1F0}","flag-fm":"\u{1F1EB}\u{1F1F2}","flag-fo":"\u{1F1EB}\u{1F1F4}",fr:"\u{1F1EB}\u{1F1F7}","flag-fr":"\u{1F1EB}\u{1F1F7}","flag-ga":"\u{1F1EC}\u{1F1E6}",gb:"\u{1F1EC}\u{1F1E7}",uk:"\u{1F1EC}\u{1F1E7}","flag-gb":"\u{1F1EC}\u{1F1E7}","flag-gd":"\u{1F1EC}\u{1F1E9}","flag-ge":"\u{1F1EC}\u{1F1EA}","flag-gf":"\u{1F1EC}\u{1F1EB}","flag-gg":"\u{1F1EC}\u{1F1EC}","flag-gh":"\u{1F1EC}\u{1F1ED}","flag-gi":"\u{1F1EC}\u{1F1EE}","flag-gl":"\u{1F1EC}\u{1F1F1}","flag-gm":"\u{1F1EC}\u{1F1F2}","flag-gn":"\u{1F1EC}\u{1F1F3}","flag-gp":"\u{1F1EC}\u{1F1F5}","flag-gq":"\u{1F1EC}\u{1F1F6}","flag-gr":"\u{1F1EC}\u{1F1F7}","flag-gs":"\u{1F1EC}\u{1F1F8}","flag-gt":"\u{1F1EC}\u{1F1F9}","flag-gu":"\u{1F1EC}\u{1F1FA}","flag-gw":"\u{1F1EC}\u{1F1FC}","flag-gy":"\u{1F1EC}\u{1F1FE}","flag-hk":"\u{1F1ED}\u{1F1F0}","flag-hm":"\u{1F1ED}\u{1F1F2}","flag-hn":"\u{1F1ED}\u{1F1F3}","flag-hr":"\u{1F1ED}\u{1F1F7}","flag-ht":"\u{1F1ED}\u{1F1F9}","flag-hu":"\u{1F1ED}\u{1F1FA}","flag-ic":"\u{1F1EE}\u{1F1E8}","flag-id":"\u{1F1EE}\u{1F1E9}","flag-ie":"\u{1F1EE}\u{1F1EA}","flag-il":"\u{1F1EE}\u{1F1F1}","flag-im":"\u{1F1EE}\u{1F1F2}","flag-in":"\u{1F1EE}\u{1F1F3}","flag-io":"\u{1F1EE}\u{1F1F4}","flag-iq":"\u{1F1EE}\u{1F1F6}","flag-ir":"\u{1F1EE}\u{1F1F7}","flag-is":"\u{1F1EE}\u{1F1F8}",it:"\u{1F1EE}\u{1F1F9}","flag-it":"\u{1F1EE}\u{1F1F9}","flag-je":"\u{1F1EF}\u{1F1EA}","flag-jm":"\u{1F1EF}\u{1F1F2}","flag-jo":"\u{1F1EF}\u{1F1F4}",jp:"\u{1F1EF}\u{1F1F5}","flag-jp":"\u{1F1EF}\u{1F1F5}","flag-ke":"\u{1F1F0}\u{1F1EA}","flag-kg":"\u{1F1F0}\u{1F1EC}","flag-kh":"\u{1F1F0}\u{1F1ED}","flag-ki":"\u{1F1F0}\u{1F1EE}","flag-km":"\u{1F1F0}\u{1F1F2}","flag-kn":"\u{1F1F0}\u{1F1F3}","flag-kp":"\u{1F1F0}\u{1F1F5}",kr:"\u{1F1F0}\u{1F1F7}","flag-kr":"\u{1F1F0}\u{1F1F7}","flag-kw":"\u{1F1F0}\u{1F1FC}","flag-ky":"\u{1F1F0}\u{1F1FE}","flag-kz":"\u{1F1F0}\u{1F1FF}","flag-la":"\u{1F1F1}\u{1F1E6}","flag-lb":"\u{1F1F1}\u{1F1E7}","flag-lc":"\u{1F1F1}\u{1F1E8}","flag-li":"\u{1F1F1}\u{1F1EE}","flag-lk":"\u{1F1F1}\u{1F1F0}","flag-lr":"\u{1F1F1}\u{1F1F7}","flag-ls":"\u{1F1F1}\u{1F1F8}","flag-lt":"\u{1F1F1}\u{1F1F9}","flag-lu":"\u{1F1F1}\u{1F1FA}","flag-lv":"\u{1F1F1}\u{1F1FB}","flag-ly":"\u{1F1F1}\u{1F1FE}","flag-ma":"\u{1F1F2}\u{1F1E6}","flag-mc":"\u{1F1F2}\u{1F1E8}","flag-md":"\u{1F1F2}\u{1F1E9}","flag-me":"\u{1F1F2}\u{1F1EA}","flag-mf":"\u{1F1F2}\u{1F1EB}","flag-mg":"\u{1F1F2}\u{1F1EC}","flag-mh":"\u{1F1F2}\u{1F1ED}","flag-mk":"\u{1F1F2}\u{1F1F0}","flag-ml":"\u{1F1F2}\u{1F1F1}","flag-mm":"\u{1F1F2}\u{1F1F2}","flag-mn":"\u{1F1F2}\u{1F1F3}","flag-mo":"\u{1F1F2}\u{1F1F4}","flag-mp":"\u{1F1F2}\u{1F1F5}","flag-mq":"\u{1F1F2}\u{1F1F6}","flag-mr":"\u{1F1F2}\u{1F1F7}","flag-ms":"\u{1F1F2}\u{1F1F8}","flag-mt":"\u{1F1F2}\u{1F1F9}","flag-mu":"\u{1F1F2}\u{1F1FA}","flag-mv":"\u{1F1F2}\u{1F1FB}","flag-mw":"\u{1F1F2}\u{1F1FC}","flag-mx":"\u{1F1F2}\u{1F1FD}","flag-my":"\u{1F1F2}\u{1F1FE}","flag-mz":"\u{1F1F2}\u{1F1FF}","flag-na":"\u{1F1F3}\u{1F1E6}","flag-nc":"\u{1F1F3}\u{1F1E8}","flag-ne":"\u{1F1F3}\u{1F1EA}","flag-nf":"\u{1F1F3}\u{1F1EB}","flag-ng":"\u{1F1F3}\u{1F1EC}","flag-ni":"\u{1F1F3}\u{1F1EE}","flag-nl":"\u{1F1F3}\u{1F1F1}","flag-no":"\u{1F1F3}\u{1F1F4}","flag-np":"\u{1F1F3}\u{1F1F5}","flag-nr":"\u{1F1F3}\u{1F1F7}","flag-nu":"\u{1F1F3}\u{1F1FA}","flag-nz":"\u{1F1F3}\u{1F1FF}","flag-om":"\u{1F1F4}\u{1F1F2}","flag-pa":"\u{1F1F5}\u{1F1E6}","flag-pe":"\u{1F1F5}\u{1F1EA}","flag-pf":"\u{1F1F5}\u{1F1EB}","flag-pg":"\u{1F1F5}\u{1F1EC}","flag-ph":"\u{1F1F5}\u{1F1ED}","flag-pk":"\u{1F1F5}\u{1F1F0}","flag-pl":"\u{1F1F5}\u{1F1F1}","flag-pm":"\u{1F1F5}\u{1F1F2}","flag-pn":"\u{1F1F5}\u{1F1F3}","flag-pr":"\u{1F1F5}\u{1F1F7}","flag-ps":"\u{1F1F5}\u{1F1F8}","flag-pt":"\u{1F1F5}\u{1F1F9}","flag-pw":"\u{1F1F5}\u{1F1FC}","flag-py":"\u{1F1F5}\u{1F1FE}","flag-qa":"\u{1F1F6}\u{1F1E6}","flag-re":"\u{1F1F7}\u{1F1EA}","flag-ro":"\u{1F1F7}\u{1F1F4}","flag-rs":"\u{1F1F7}\u{1F1F8}",ru:"\u{1F1F7}\u{1F1FA}","flag-ru":"\u{1F1F7}\u{1F1FA}","flag-rw":"\u{1F1F7}\u{1F1FC}","flag-sa":"\u{1F1F8}\u{1F1E6}","flag-sb":"\u{1F1F8}\u{1F1E7}","flag-sc":"\u{1F1F8}\u{1F1E8}","flag-sd":"\u{1F1F8}\u{1F1E9}","flag-se":"\u{1F1F8}\u{1F1EA}","flag-sg":"\u{1F1F8}\u{1F1EC}","flag-sh":"\u{1F1F8}\u{1F1ED}","flag-si":"\u{1F1F8}\u{1F1EE}","flag-sj":"\u{1F1F8}\u{1F1EF}","flag-sk":"\u{1F1F8}\u{1F1F0}","flag-sl":"\u{1F1F8}\u{1F1F1}","flag-sm":"\u{1F1F8}\u{1F1F2}","flag-sn":"\u{1F1F8}\u{1F1F3}","flag-so":"\u{1F1F8}\u{1F1F4}","flag-sr":"\u{1F1F8}\u{1F1F7}","flag-ss":"\u{1F1F8}\u{1F1F8}","flag-st":"\u{1F1F8}\u{1F1F9}","flag-sv":"\u{1F1F8}\u{1F1FB}","flag-sx":"\u{1F1F8}\u{1F1FD}","flag-sy":"\u{1F1F8}\u{1F1FE}","flag-sz":"\u{1F1F8}\u{1F1FF}","flag-ta":"\u{1F1F9}\u{1F1E6}","flag-tc":"\u{1F1F9}\u{1F1E8}","flag-td":"\u{1F1F9}\u{1F1E9}","flag-tf":"\u{1F1F9}\u{1F1EB}","flag-tg":"\u{1F1F9}\u{1F1EC}","flag-th":"\u{1F1F9}\u{1F1ED}","flag-tj":"\u{1F1F9}\u{1F1EF}","flag-tk":"\u{1F1F9}\u{1F1F0}","flag-tl":"\u{1F1F9}\u{1F1F1}","flag-tm":"\u{1F1F9}\u{1F1F2}","flag-tn":"\u{1F1F9}\u{1F1F3}","flag-to":"\u{1F1F9}\u{1F1F4}","flag-tr":"\u{1F1F9}\u{1F1F7}","flag-tt":"\u{1F1F9}\u{1F1F9}","flag-tv":"\u{1F1F9}\u{1F1FB}","flag-tw":"\u{1F1F9}\u{1F1FC}","flag-tz":"\u{1F1F9}\u{1F1FF}","flag-ua":"\u{1F1FA}\u{1F1E6}","flag-ug":"\u{1F1FA}\u{1F1EC}","flag-um":"\u{1F1FA}\u{1F1F2}","flag-un":"\u{1F1FA}\u{1F1F3}",us:"\u{1F1FA}\u{1F1F8}","flag-us":"\u{1F1FA}\u{1F1F8}","flag-uy":"\u{1F1FA}\u{1F1FE}","flag-uz":"\u{1F1FA}\u{1F1FF}","flag-va":"\u{1F1FB}\u{1F1E6}","flag-vc":"\u{1F1FB}\u{1F1E8}","flag-ve":"\u{1F1FB}\u{1F1EA}","flag-vg":"\u{1F1FB}\u{1F1EC}","flag-vi":"\u{1F1FB}\u{1F1EE}","flag-vn":"\u{1F1FB}\u{1F1F3}","flag-vu":"\u{1F1FB}\u{1F1FA}","flag-wf":"\u{1F1FC}\u{1F1EB}","flag-ws":"\u{1F1FC}\u{1F1F8}","flag-xk":"\u{1F1FD}\u{1F1F0}","flag-ye":"\u{1F1FE}\u{1F1EA}","flag-yt":"\u{1F1FE}\u{1F1F9}","flag-za":"\u{1F1FF}\u{1F1E6}","flag-zm":"\u{1F1FF}\u{1F1F2}","flag-zw":"\u{1F1FF}\u{1F1FC}",koko:"\u{1F201}",sa:"\u{1F202}\uFE0F",u7121:"\u{1F21A}",u6307:"\u{1F22F}",u7981:"\u{1F232}",u7a7a:"\u{1F233}",u5408:"\u{1F234}",u6e80:"\u{1F235}",u6709:"\u{1F236}",u6708:"\u{1F237}\uFE0F",u7533:"\u{1F238}",u5272:"\u{1F239}",u55b6:"\u{1F23A}",ideograph_advantage:"\u{1F250}",accept:"\u{1F251}",cyclone:"\u{1F300}",foggy:"\u{1F301}",closed_umbrella:"\u{1F302}",night_with_stars:"\u{1F303}",sunrise_over_mountains:"\u{1F304}",sunrise:"\u{1F305}",city_sunset:"\u{1F306}",city_sunrise:"\u{1F307}",rainbow:"\u{1F308}",bridge_at_night:"\u{1F309}",ocean:"\u{1F30A}",volcano:"\u{1F30B}",milky_way:"\u{1F30C}",earth_africa:"\u{1F30D}",earth_americas:"\u{1F30E}",earth_asia:"\u{1F30F}",globe_with_meridians:"\u{1F310}",new_moon:"\u{1F311}",waxing_crescent_moon:"\u{1F312}",first_quarter_moon:"\u{1F313}",moon:"\u{1F314}",waxing_gibbous_moon:"\u{1F314}",full_moon:"\u{1F315}",waning_gibbous_moon:"\u{1F316}",last_quarter_moon:"\u{1F317}",waning_crescent_moon:"\u{1F318}",crescent_moon:"\u{1F319}",new_moon_with_face:"\u{1F31A}",first_quarter_moon_with_face:"\u{1F31B}",last_quarter_moon_with_face:"\u{1F31C}",full_moon_with_face:"\u{1F31D}",sun_with_face:"\u{1F31E}",star2:"\u{1F31F}",stars:"\u{1F320}",thermometer:"\u{1F321}\uFE0F",mostly_sunny:"\u{1F324}\uFE0F",sun_small_cloud:"\u{1F324}\uFE0F",barely_sunny:"\u{1F325}\uFE0F",sun_behind_cloud:"\u{1F325}\uFE0F",partly_sunny_rain:"\u{1F326}\uFE0F",sun_behind_rain_cloud:"\u{1F326}\uFE0F",rain_cloud:"\u{1F327}\uFE0F",snow_cloud:"\u{1F328}\uFE0F",lightning:"\u{1F329}\uFE0F",lightning_cloud:"\u{1F329}\uFE0F",tornado:"\u{1F32A}\uFE0F",tornado_cloud:"\u{1F32A}\uFE0F",fog:"\u{1F32B}\uFE0F",wind_blowing_face:"\u{1F32C}\uFE0F",hotdog:"\u{1F32D}",taco:"\u{1F32E}",burrito:"\u{1F32F}",chestnut:"\u{1F330}",seedling:"\u{1F331}",evergreen_tree:"\u{1F332}",deciduous_tree:"\u{1F333}",palm_tree:"\u{1F334}",cactus:"\u{1F335}",hot_pepper:"\u{1F336}\uFE0F",tulip:"\u{1F337}",cherry_blossom:"\u{1F338}",rose:"\u{1F339}",hibiscus:"\u{1F33A}",sunflower:"\u{1F33B}",blossom:"\u{1F33C}",corn:"\u{1F33D}",ear_of_rice:"\u{1F33E}",herb:"\u{1F33F}",four_leaf_clover:"\u{1F340}",maple_leaf:"\u{1F341}",fallen_leaf:"\u{1F342}",leaves:"\u{1F343}",mushroom:"\u{1F344}",tomato:"\u{1F345}",eggplant:"\u{1F346}",grapes:"\u{1F347}",melon:"\u{1F348}",watermelon:"\u{1F349}",tangerine:"\u{1F34A}",lemon:"\u{1F34B}",banana:"\u{1F34C}",pineapple:"\u{1F34D}",apple:"\u{1F34E}",green_apple:"\u{1F34F}",pear:"\u{1F350}",peach:"\u{1F351}",cherries:"\u{1F352}",strawberry:"\u{1F353}",hamburger:"\u{1F354}",pizza:"\u{1F355}",meat_on_bone:"\u{1F356}",poultry_leg:"\u{1F357}",rice_cracker:"\u{1F358}",rice_ball:"\u{1F359}",rice:"\u{1F35A}",curry:"\u{1F35B}",ramen:"\u{1F35C}",spaghetti:"\u{1F35D}",bread:"\u{1F35E}",fries:"\u{1F35F}",sweet_potato:"\u{1F360}",dango:"\u{1F361}",oden:"\u{1F362}",sushi:"\u{1F363}",fried_shrimp:"\u{1F364}",fish_cake:"\u{1F365}",icecream:"\u{1F366}",shaved_ice:"\u{1F367}",ice_cream:"\u{1F368}",doughnut:"\u{1F369}",cookie:"\u{1F36A}",chocolate_bar:"\u{1F36B}",candy:"\u{1F36C}",lollipop:"\u{1F36D}",custard:"\u{1F36E}",honey_pot:"\u{1F36F}",cake:"\u{1F370}",bento:"\u{1F371}",stew:"\u{1F372}",fried_egg:"\u{1F373}",cooking:"\u{1F373}",fork_and_knife:"\u{1F374}",tea:"\u{1F375}",sake:"\u{1F376}",wine_glass:"\u{1F377}",cocktail:"\u{1F378}",tropical_drink:"\u{1F379}",beer:"\u{1F37A}",beers:"\u{1F37B}",baby_bottle:"\u{1F37C}",knife_fork_plate:"\u{1F37D}\uFE0F",champagne:"\u{1F37E}",popcorn:"\u{1F37F}",ribbon:"\u{1F380}",gift:"\u{1F381}",birthday:"\u{1F382}",jack_o_lantern:"\u{1F383}",christmas_tree:"\u{1F384}",santa:"\u{1F385}",fireworks:"\u{1F386}",sparkler:"\u{1F387}",balloon:"\u{1F388}",tada:"\u{1F389}",confetti_ball:"\u{1F38A}",tanabata_tree:"\u{1F38B}",crossed_flags:"\u{1F38C}",bamboo:"\u{1F38D}",dolls:"\u{1F38E}",flags:"\u{1F38F}",wind_chime:"\u{1F390}",rice_scene:"\u{1F391}",school_satchel:"\u{1F392}",mortar_board:"\u{1F393}",medal:"\u{1F396}\uFE0F",reminder_ribbon:"\u{1F397}\uFE0F",studio_microphone:"\u{1F399}\uFE0F",level_slider:"\u{1F39A}\uFE0F",control_knobs:"\u{1F39B}\uFE0F",film_frames:"\u{1F39E}\uFE0F",admission_tickets:"\u{1F39F}\uFE0F",carousel_horse:"\u{1F3A0}",ferris_wheel:"\u{1F3A1}",roller_coaster:"\u{1F3A2}",fishing_pole_and_fish:"\u{1F3A3}",microphone:"\u{1F3A4}",movie_camera:"\u{1F3A5}",cinema:"\u{1F3A6}",headphones:"\u{1F3A7}",art:"\u{1F3A8}",tophat:"\u{1F3A9}",circus_tent:"\u{1F3AA}",ticket:"\u{1F3AB}",clapper:"\u{1F3AC}",performing_arts:"\u{1F3AD}",video_game:"\u{1F3AE}",dart:"\u{1F3AF}",slot_machine:"\u{1F3B0}","8ball":"\u{1F3B1}",game_die:"\u{1F3B2}",bowling:"\u{1F3B3}",flower_playing_cards:"\u{1F3B4}",musical_note:"\u{1F3B5}",notes:"\u{1F3B6}",saxophone:"\u{1F3B7}",guitar:"\u{1F3B8}",musical_keyboard:"\u{1F3B9}",trumpet:"\u{1F3BA}",violin:"\u{1F3BB}",musical_score:"\u{1F3BC}",running_shirt_with_sash:"\u{1F3BD}",tennis:"\u{1F3BE}",ski:"\u{1F3BF}",basketball:"\u{1F3C0}",checkered_flag:"\u{1F3C1}",snowboarder:"\u{1F3C2}","woman-running":"\u{1F3C3}\u200D\u2640\uFE0F",running_woman:"\u{1F3C3}\u200D\u2640\uFE0F","man-running":"\u{1F3C3}\u200D\u2642\uFE0F",runner:"\u{1F3C3}\u200D\u2642\uFE0F",running:"\u{1F3C3}\u200D\u2642\uFE0F",running_man:"\u{1F3C3}\u200D\u2642\uFE0F","woman-surfing":"\u{1F3C4}\u200D\u2640\uFE0F",surfing_woman:"\u{1F3C4}\u200D\u2640\uFE0F","man-surfing":"\u{1F3C4}\u200D\u2642\uFE0F",surfer:"\u{1F3C4}\u200D\u2642\uFE0F",surfing_man:"\u{1F3C4}\u200D\u2642\uFE0F",sports_medal:"\u{1F3C5}",trophy:"\u{1F3C6}",horse_racing:"\u{1F3C7}",football:"\u{1F3C8}",rugby_football:"\u{1F3C9}","woman-swimming":"\u{1F3CA}\u200D\u2640\uFE0F",swimming_woman:"\u{1F3CA}\u200D\u2640\uFE0F","man-swimming":"\u{1F3CA}\u200D\u2642\uFE0F",swimmer:"\u{1F3CA}\u200D\u2642\uFE0F",swimming_man:"\u{1F3CA}\u200D\u2642\uFE0F","woman-lifting-weights":"\u{1F3CB}\uFE0F\u200D\u2640\uFE0F",weight_lifting_woman:"\u{1F3CB}\uFE0F\u200D\u2640\uFE0F","man-lifting-weights":"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F",weight_lifter:"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F",weight_lifting_man:"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F","woman-golfing":"\u{1F3CC}\uFE0F\u200D\u2640\uFE0F",golfing_woman:"\u{1F3CC}\uFE0F\u200D\u2640\uFE0F","man-golfing":"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",golfer:"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",golfing_man:"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",racing_motorcycle:"\u{1F3CD}\uFE0F",racing_car:"\u{1F3CE}\uFE0F",cricket_bat_and_ball:"\u{1F3CF}",volleyball:"\u{1F3D0}",field_hockey_stick_and_ball:"\u{1F3D1}",ice_hockey_stick_and_puck:"\u{1F3D2}",table_tennis_paddle_and_ball:"\u{1F3D3}",snow_capped_mountain:"\u{1F3D4}\uFE0F",camping:"\u{1F3D5}\uFE0F",beach_with_umbrella:"\u{1F3D6}\uFE0F",building_construction:"\u{1F3D7}\uFE0F",house_buildings:"\u{1F3D8}\uFE0F",cityscape:"\u{1F3D9}\uFE0F",derelict_house_building:"\u{1F3DA}\uFE0F",classical_building:"\u{1F3DB}\uFE0F",desert:"\u{1F3DC}\uFE0F",desert_island:"\u{1F3DD}\uFE0F",national_park:"\u{1F3DE}\uFE0F",stadium:"\u{1F3DF}\uFE0F",house:"\u{1F3E0}",house_with_garden:"\u{1F3E1}",office:"\u{1F3E2}",post_office:"\u{1F3E3}",european_post_office:"\u{1F3E4}",hospital:"\u{1F3E5}",bank:"\u{1F3E6}",atm:"\u{1F3E7}",hotel:"\u{1F3E8}",love_hotel:"\u{1F3E9}",convenience_store:"\u{1F3EA}",school:"\u{1F3EB}",department_store:"\u{1F3EC}",factory:"\u{1F3ED}",izakaya_lantern:"\u{1F3EE}",lantern:"\u{1F3EE}",japanese_castle:"\u{1F3EF}",european_castle:"\u{1F3F0}","rainbow-flag":"\u{1F3F3}\uFE0F\u200D\u{1F308}",transgender_flag:"\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F",waving_white_flag:"\u{1F3F3}\uFE0F",pirate_flag:"\u{1F3F4}\u200D\u2620\uFE0F","flag-england":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}","flag-scotland":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}","flag-wales":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}",waving_black_flag:"\u{1F3F4}",rosette:"\u{1F3F5}\uFE0F",label:"\u{1F3F7}\uFE0F",badminton_racquet_and_shuttlecock:"\u{1F3F8}",bow_and_arrow:"\u{1F3F9}",amphora:"\u{1F3FA}","skin-tone-2":"\u{1F3FB}","skin-tone-3":"\u{1F3FC}","skin-tone-4":"\u{1F3FD}","skin-tone-5":"\u{1F3FE}","skin-tone-6":"\u{1F3FF}",rat:"\u{1F400}",mouse2:"\u{1F401}",ox:"\u{1F402}",water_buffalo:"\u{1F403}",cow2:"\u{1F404}",tiger2:"\u{1F405}",leopard:"\u{1F406}",rabbit2:"\u{1F407}",black_cat:"\u{1F408}\u200D\u2B1B",cat2:"\u{1F408}",dragon:"\u{1F409}",crocodile:"\u{1F40A}",whale2:"\u{1F40B}",snail:"\u{1F40C}",snake:"\u{1F40D}",racehorse:"\u{1F40E}",ram:"\u{1F40F}",goat:"\u{1F410}",sheep:"\u{1F411}",monkey:"\u{1F412}",rooster:"\u{1F413}",chicken:"\u{1F414}",service_dog:"\u{1F415}\u200D\u{1F9BA}",dog2:"\u{1F415}",pig2:"\u{1F416}",boar:"\u{1F417}",elephant:"\u{1F418}",octopus:"\u{1F419}",shell:"\u{1F41A}",bug:"\u{1F41B}",ant:"\u{1F41C}",bee:"\u{1F41D}",honeybee:"\u{1F41D}",ladybug:"\u{1F41E}",lady_beetle:"\u{1F41E}",fish:"\u{1F41F}",tropical_fish:"\u{1F420}",blowfish:"\u{1F421}",turtle:"\u{1F422}",hatching_chick:"\u{1F423}",baby_chick:"\u{1F424}",hatched_chick:"\u{1F425}",bird:"\u{1F426}",penguin:"\u{1F427}",koala:"\u{1F428}",poodle:"\u{1F429}",dromedary_camel:"\u{1F42A}",camel:"\u{1F42B}",dolphin:"\u{1F42C}",flipper:"\u{1F42C}",mouse:"\u{1F42D}",cow:"\u{1F42E}",tiger:"\u{1F42F}",rabbit:"\u{1F430}",cat:"\u{1F431}",dragon_face:"\u{1F432}",whale:"\u{1F433}",horse:"\u{1F434}",monkey_face:"\u{1F435}",dog:"\u{1F436}",pig:"\u{1F437}",frog:"\u{1F438}",hamster:"\u{1F439}",wolf:"\u{1F43A}",polar_bear:"\u{1F43B}\u200D\u2744\uFE0F",bear:"\u{1F43B}",panda_face:"\u{1F43C}",pig_nose:"\u{1F43D}",feet:"\u{1F43E}",paw_prints:"\u{1F43E}",chipmunk:"\u{1F43F}\uFE0F",eyes:"\u{1F440}","eye-in-speech-bubble":"\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F",eye:"\u{1F441}\uFE0F",ear:"\u{1F442}",nose:"\u{1F443}",lips:"\u{1F444}",tongue:"\u{1F445}",point_up_2:"\u{1F446}",point_down:"\u{1F447}",point_left:"\u{1F448}",point_right:"\u{1F449}",facepunch:"\u{1F44A}",punch:"\u{1F44A}",wave:"\u{1F44B}",ok_hand:"\u{1F44C}","+1":"\u{1F44D}",thumbsup:"\u{1F44D}","-1":"\u{1F44E}",thumbsdown:"\u{1F44E}",clap:"\u{1F44F}",open_hands:"\u{1F450}",crown:"\u{1F451}",womans_hat:"\u{1F452}",eyeglasses:"\u{1F453}",necktie:"\u{1F454}",shirt:"\u{1F455}",tshirt:"\u{1F455}",jeans:"\u{1F456}",dress:"\u{1F457}",kimono:"\u{1F458}",bikini:"\u{1F459}",womans_clothes:"\u{1F45A}",purse:"\u{1F45B}",handbag:"\u{1F45C}",pouch:"\u{1F45D}",mans_shoe:"\u{1F45E}",shoe:"\u{1F45E}",athletic_shoe:"\u{1F45F}",high_heel:"\u{1F460}",sandal:"\u{1F461}",boot:"\u{1F462}",footprints:"\u{1F463}",bust_in_silhouette:"\u{1F464}",busts_in_silhouette:"\u{1F465}",boy:"\u{1F466}",girl:"\u{1F467}","male-farmer":"\u{1F468}\u200D\u{1F33E}","male-cook":"\u{1F468}\u200D\u{1F373}",man_feeding_baby:"\u{1F468}\u200D\u{1F37C}","male-student":"\u{1F468}\u200D\u{1F393}","male-singer":"\u{1F468}\u200D\u{1F3A4}","male-artist":"\u{1F468}\u200D\u{1F3A8}","male-teacher":"\u{1F468}\u200D\u{1F3EB}","male-factory-worker":"\u{1F468}\u200D\u{1F3ED}","man-boy-boy":"\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","man-boy":"\u{1F468}\u200D\u{1F466}","man-girl-boy":"\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","man-girl-girl":"\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","man-girl":"\u{1F468}\u200D\u{1F467}","man-man-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F466}","man-man-boy-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","man-man-girl":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}","man-man-girl-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","man-man-girl-girl":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","man-woman-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}",family:"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}","man-woman-boy-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","man-woman-girl":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}","man-woman-girl-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","man-woman-girl-girl":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","male-technologist":"\u{1F468}\u200D\u{1F4BB}","male-office-worker":"\u{1F468}\u200D\u{1F4BC}","male-mechanic":"\u{1F468}\u200D\u{1F527}","male-scientist":"\u{1F468}\u200D\u{1F52C}","male-astronaut":"\u{1F468}\u200D\u{1F680}","male-firefighter":"\u{1F468}\u200D\u{1F692}",man_with_probing_cane:"\u{1F468}\u200D\u{1F9AF}",red_haired_man:"\u{1F468}\u200D\u{1F9B0}",curly_haired_man:"\u{1F468}\u200D\u{1F9B1}",bald_man:"\u{1F468}\u200D\u{1F9B2}",white_haired_man:"\u{1F468}\u200D\u{1F9B3}",man_in_motorized_wheelchair:"\u{1F468}\u200D\u{1F9BC}",man_in_manual_wheelchair:"\u{1F468}\u200D\u{1F9BD}","male-doctor":"\u{1F468}\u200D\u2695\uFE0F","male-judge":"\u{1F468}\u200D\u2696\uFE0F","male-pilot":"\u{1F468}\u200D\u2708\uFE0F","man-heart-man":"\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}","man-kiss-man":"\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}",man:"\u{1F468}","female-farmer":"\u{1F469}\u200D\u{1F33E}","female-cook":"\u{1F469}\u200D\u{1F373}",woman_feeding_baby:"\u{1F469}\u200D\u{1F37C}","female-student":"\u{1F469}\u200D\u{1F393}","female-singer":"\u{1F469}\u200D\u{1F3A4}","female-artist":"\u{1F469}\u200D\u{1F3A8}","female-teacher":"\u{1F469}\u200D\u{1F3EB}","female-factory-worker":"\u{1F469}\u200D\u{1F3ED}","woman-boy-boy":"\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","woman-boy":"\u{1F469}\u200D\u{1F466}","woman-girl-boy":"\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","woman-girl-girl":"\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","woman-girl":"\u{1F469}\u200D\u{1F467}","woman-woman-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F466}","woman-woman-boy-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","woman-woman-girl":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}","woman-woman-girl-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","woman-woman-girl-girl":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","female-technologist":"\u{1F469}\u200D\u{1F4BB}","female-office-worker":"\u{1F469}\u200D\u{1F4BC}","female-mechanic":"\u{1F469}\u200D\u{1F527}","female-scientist":"\u{1F469}\u200D\u{1F52C}","female-astronaut":"\u{1F469}\u200D\u{1F680}","female-firefighter":"\u{1F469}\u200D\u{1F692}",woman_with_probing_cane:"\u{1F469}\u200D\u{1F9AF}",red_haired_woman:"\u{1F469}\u200D\u{1F9B0}",curly_haired_woman:"\u{1F469}\u200D\u{1F9B1}",bald_woman:"\u{1F469}\u200D\u{1F9B2}",white_haired_woman:"\u{1F469}\u200D\u{1F9B3}",woman_in_motorized_wheelchair:"\u{1F469}\u200D\u{1F9BC}",woman_in_manual_wheelchair:"\u{1F469}\u200D\u{1F9BD}","female-doctor":"\u{1F469}\u200D\u2695\uFE0F","female-judge":"\u{1F469}\u200D\u2696\uFE0F","female-pilot":"\u{1F469}\u200D\u2708\uFE0F","woman-heart-man":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}","woman-heart-woman":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}","woman-kiss-man":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","woman-kiss-woman":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}",woman:"\u{1F469}",man_and_woman_holding_hands:"\u{1F46B}",woman_and_man_holding_hands:"\u{1F46B}",couple:"\u{1F46B}",two_men_holding_hands:"\u{1F46C}",men_holding_hands:"\u{1F46C}",two_women_holding_hands:"\u{1F46D}",women_holding_hands:"\u{1F46D}","female-police-officer":"\u{1F46E}\u200D\u2640\uFE0F","male-police-officer":"\u{1F46E}\u200D\u2642\uFE0F",cop:"\u{1F46E}\u200D\u2642\uFE0F","women-with-bunny-ears-partying":"\u{1F46F}\u200D\u2640\uFE0F","woman-with-bunny-ears-partying":"\u{1F46F}\u200D\u2640\uFE0F",dancers:"\u{1F46F}\u200D\u2640\uFE0F","men-with-bunny-ears-partying":"\u{1F46F}\u200D\u2642\uFE0F","man-with-bunny-ears-partying":"\u{1F46F}\u200D\u2642\uFE0F",woman_with_veil:"\u{1F470}\u200D\u2640\uFE0F",man_with_veil:"\u{1F470}\u200D\u2642\uFE0F",bride_with_veil:"\u{1F470}","blond-haired-woman":"\u{1F471}\u200D\u2640\uFE0F","blond-haired-man":"\u{1F471}\u200D\u2642\uFE0F",person_with_blond_hair:"\u{1F471}\u200D\u2642\uFE0F",man_with_gua_pi_mao:"\u{1F472}","woman-wearing-turban":"\u{1F473}\u200D\u2640\uFE0F",woman_with_turban:"\u{1F473}\u200D\u2640\uFE0F","man-wearing-turban":"\u{1F473}\u200D\u2642\uFE0F",man_with_turban:"\u{1F473}\u200D\u2642\uFE0F",older_man:"\u{1F474}",older_woman:"\u{1F475}",baby:"\u{1F476}","female-construction-worker":"\u{1F477}\u200D\u2640\uFE0F","male-construction-worker":"\u{1F477}\u200D\u2642\uFE0F",construction_worker:"\u{1F477}\u200D\u2642\uFE0F",princess:"\u{1F478}",japanese_ogre:"\u{1F479}",japanese_goblin:"\u{1F47A}",ghost:"\u{1F47B}",angel:"\u{1F47C}",alien:"\u{1F47D}",space_invader:"\u{1F47E}",imp:"\u{1F47F}",skull:"\u{1F480}","woman-tipping-hand":"\u{1F481}\u200D\u2640\uFE0F",information_desk_person:"\u{1F481}\u200D\u2640\uFE0F",tipping_hand_woman:"\u{1F481}\u200D\u2640\uFE0F","man-tipping-hand":"\u{1F481}\u200D\u2642\uFE0F",tipping_hand_man:"\u{1F481}\u200D\u2642\uFE0F","female-guard":"\u{1F482}\u200D\u2640\uFE0F",guardswoman:"\u{1F482}\u200D\u2640\uFE0F","male-guard":"\u{1F482}\u200D\u2642\uFE0F",guardsman:"\u{1F482}\u200D\u2642\uFE0F",dancer:"\u{1F483}",lipstick:"\u{1F484}",nail_care:"\u{1F485}","woman-getting-massage":"\u{1F486}\u200D\u2640\uFE0F",massage:"\u{1F486}\u200D\u2640\uFE0F","man-getting-massage":"\u{1F486}\u200D\u2642\uFE0F","woman-getting-haircut":"\u{1F487}\u200D\u2640\uFE0F",haircut:"\u{1F487}\u200D\u2640\uFE0F","man-getting-haircut":"\u{1F487}\u200D\u2642\uFE0F",barber:"\u{1F488}",syringe:"\u{1F489}",pill:"\u{1F48A}",kiss:"\u{1F48B}",love_letter:"\u{1F48C}",ring:"\u{1F48D}",gem:"\u{1F48E}",couplekiss:"\u{1F48F}",bouquet:"\u{1F490}",couple_with_heart:"\u{1F491}",wedding:"\u{1F492}",heartbeat:"\u{1F493}",broken_heart:"\u{1F494}",two_hearts:"\u{1F495}",sparkling_heart:"\u{1F496}",heartpulse:"\u{1F497}",cupid:"\u{1F498}",blue_heart:"\u{1F499}",green_heart:"\u{1F49A}",yellow_heart:"\u{1F49B}",purple_heart:"\u{1F49C}",gift_heart:"\u{1F49D}",revolving_hearts:"\u{1F49E}",heart_decoration:"\u{1F49F}",diamond_shape_with_a_dot_inside:"\u{1F4A0}",bulb:"\u{1F4A1}",anger:"\u{1F4A2}",bomb:"\u{1F4A3}",zzz:"\u{1F4A4}",boom:"\u{1F4A5}",collision:"\u{1F4A5}",sweat_drops:"\u{1F4A6}",droplet:"\u{1F4A7}",dash:"\u{1F4A8}",hankey:"\u{1F4A9}",poop:"\u{1F4A9}",shit:"\u{1F4A9}",muscle:"\u{1F4AA}",dizzy:"\u{1F4AB}",speech_balloon:"\u{1F4AC}",thought_balloon:"\u{1F4AD}",white_flower:"\u{1F4AE}",moneybag:"\u{1F4B0}",currency_exchange:"\u{1F4B1}",heavy_dollar_sign:"\u{1F4B2}",credit_card:"\u{1F4B3}",yen:"\u{1F4B4}",dollar:"\u{1F4B5}",euro:"\u{1F4B6}",pound:"\u{1F4B7}",money_with_wings:"\u{1F4B8}",chart:"\u{1F4B9}",seat:"\u{1F4BA}",computer:"\u{1F4BB}",briefcase:"\u{1F4BC}",minidisc:"\u{1F4BD}",floppy_disk:"\u{1F4BE}",cd:"\u{1F4BF}",dvd:"\u{1F4C0}",file_folder:"\u{1F4C1}",open_file_folder:"\u{1F4C2}",page_with_curl:"\u{1F4C3}",page_facing_up:"\u{1F4C4}",date:"\u{1F4C5}",calendar:"\u{1F4C6}",card_index:"\u{1F4C7}",chart_with_upwards_trend:"\u{1F4C8}",chart_with_downwards_trend:"\u{1F4C9}",bar_chart:"\u{1F4CA}",clipboard:"\u{1F4CB}",pushpin:"\u{1F4CC}",round_pushpin:"\u{1F4CD}",paperclip:"\u{1F4CE}",straight_ruler:"\u{1F4CF}",triangular_ruler:"\u{1F4D0}",bookmark_tabs:"\u{1F4D1}",ledger:"\u{1F4D2}",notebook:"\u{1F4D3}",notebook_with_decorative_cover:"\u{1F4D4}",closed_book:"\u{1F4D5}",book:"\u{1F4D6}",open_book:"\u{1F4D6}",green_book:"\u{1F4D7}",blue_book:"\u{1F4D8}",orange_book:"\u{1F4D9}",books:"\u{1F4DA}",name_badge:"\u{1F4DB}",scroll:"\u{1F4DC}",memo:"\u{1F4DD}",pencil:"\u{1F4DD}",telephone_receiver:"\u{1F4DE}",pager:"\u{1F4DF}",fax:"\u{1F4E0}",satellite_antenna:"\u{1F4E1}",loudspeaker:"\u{1F4E2}",mega:"\u{1F4E3}",outbox_tray:"\u{1F4E4}",inbox_tray:"\u{1F4E5}",package:"\u{1F4E6}","e-mail":"\u{1F4E7}",incoming_envelope:"\u{1F4E8}",envelope_with_arrow:"\u{1F4E9}",mailbox_closed:"\u{1F4EA}",mailbox:"\u{1F4EB}",mailbox_with_mail:"\u{1F4EC}",mailbox_with_no_mail:"\u{1F4ED}",postbox:"\u{1F4EE}",postal_horn:"\u{1F4EF}",newspaper:"\u{1F4F0}",iphone:"\u{1F4F1}",calling:"\u{1F4F2}",vibration_mode:"\u{1F4F3}",mobile_phone_off:"\u{1F4F4}",no_mobile_phones:"\u{1F4F5}",signal_strength:"\u{1F4F6}",camera:"\u{1F4F7}",camera_with_flash:"\u{1F4F8}",video_camera:"\u{1F4F9}",tv:"\u{1F4FA}",radio:"\u{1F4FB}",vhs:"\u{1F4FC}",film_projector:"\u{1F4FD}\uFE0F",prayer_beads:"\u{1F4FF}",twisted_rightwards_arrows:"\u{1F500}",repeat:"\u{1F501}",repeat_one:"\u{1F502}",arrows_clockwise:"\u{1F503}",arrows_counterclockwise:"\u{1F504}",low_brightness:"\u{1F505}",high_brightness:"\u{1F506}",mute:"\u{1F507}",speaker:"\u{1F508}",sound:"\u{1F509}",loud_sound:"\u{1F50A}",battery:"\u{1F50B}",electric_plug:"\u{1F50C}",mag:"\u{1F50D}",mag_right:"\u{1F50E}",lock_with_ink_pen:"\u{1F50F}",closed_lock_with_key:"\u{1F510}",key:"\u{1F511}",lock:"\u{1F512}",unlock:"\u{1F513}",bell:"\u{1F514}",no_bell:"\u{1F515}",bookmark:"\u{1F516}",link:"\u{1F517}",radio_button:"\u{1F518}",back:"\u{1F519}",end:"\u{1F51A}",on:"\u{1F51B}",soon:"\u{1F51C}",top:"\u{1F51D}",underage:"\u{1F51E}",keycap_ten:"\u{1F51F}",capital_abcd:"\u{1F520}",abcd:"\u{1F521}",symbols:"\u{1F523}",abc:"\u{1F524}",fire:"\u{1F525}",flashlight:"\u{1F526}",wrench:"\u{1F527}",hammer:"\u{1F528}",nut_and_bolt:"\u{1F529}",hocho:"\u{1F52A}",knife:"\u{1F52A}",gun:"\u{1F52B}",microscope:"\u{1F52C}",telescope:"\u{1F52D}",crystal_ball:"\u{1F52E}",six_pointed_star:"\u{1F52F}",beginner:"\u{1F530}",trident:"\u{1F531}",black_square_button:"\u{1F532}",white_square_button:"\u{1F533}",red_circle:"\u{1F534}",large_blue_circle:"\u{1F535}",large_orange_diamond:"\u{1F536}",large_blue_diamond:"\u{1F537}",small_orange_diamond:"\u{1F538}",small_blue_diamond:"\u{1F539}",small_red_triangle:"\u{1F53A}",small_red_triangle_down:"\u{1F53B}",arrow_up_small:"\u{1F53C}",arrow_down_small:"\u{1F53D}",om_symbol:"\u{1F549}\uFE0F",dove_of_peace:"\u{1F54A}\uFE0F",kaaba:"\u{1F54B}",mosque:"\u{1F54C}",synagogue:"\u{1F54D}",menorah_with_nine_branches:"\u{1F54E}",clock1:"\u{1F550}",clock2:"\u{1F551}",clock3:"\u{1F552}",clock4:"\u{1F553}",clock5:"\u{1F554}",clock6:"\u{1F555}",clock7:"\u{1F556}",clock8:"\u{1F557}",clock9:"\u{1F558}",clock10:"\u{1F559}",clock11:"\u{1F55A}",clock12:"\u{1F55B}",clock130:"\u{1F55C}",clock230:"\u{1F55D}",clock330:"\u{1F55E}",clock430:"\u{1F55F}",clock530:"\u{1F560}",clock630:"\u{1F561}",clock730:"\u{1F562}",clock830:"\u{1F563}",clock930:"\u{1F564}",clock1030:"\u{1F565}",clock1130:"\u{1F566}",clock1230:"\u{1F567}",candle:"\u{1F56F}\uFE0F",mantelpiece_clock:"\u{1F570}\uFE0F",hole:"\u{1F573}\uFE0F",man_in_business_suit_levitating:"\u{1F574}\uFE0F","female-detective":"\u{1F575}\uFE0F\u200D\u2640\uFE0F","male-detective":"\u{1F575}\uFE0F\u200D\u2642\uFE0F",sleuth_or_spy:"\u{1F575}\uFE0F\u200D\u2642\uFE0F",dark_sunglasses:"\u{1F576}\uFE0F",spider:"\u{1F577}\uFE0F",spider_web:"\u{1F578}\uFE0F",joystick:"\u{1F579}\uFE0F",man_dancing:"\u{1F57A}",linked_paperclips:"\u{1F587}\uFE0F",lower_left_ballpoint_pen:"\u{1F58A}\uFE0F",lower_left_fountain_pen:"\u{1F58B}\uFE0F",lower_left_paintbrush:"\u{1F58C}\uFE0F",lower_left_crayon:"\u{1F58D}\uFE0F",raised_hand_with_fingers_splayed:"\u{1F590}\uFE0F",middle_finger:"\u{1F595}",reversed_hand_with_middle_finger_extended:"\u{1F595}","spock-hand":"\u{1F596}",black_heart:"\u{1F5A4}",desktop_computer:"\u{1F5A5}\uFE0F",printer:"\u{1F5A8}\uFE0F",three_button_mouse:"\u{1F5B1}\uFE0F",trackball:"\u{1F5B2}\uFE0F",frame_with_picture:"\u{1F5BC}\uFE0F",card_index_dividers:"\u{1F5C2}\uFE0F",card_file_box:"\u{1F5C3}\uFE0F",file_cabinet:"\u{1F5C4}\uFE0F",wastebasket:"\u{1F5D1}\uFE0F",spiral_note_pad:"\u{1F5D2}\uFE0F",spiral_calendar_pad:"\u{1F5D3}\uFE0F",compression:"\u{1F5DC}\uFE0F",old_key:"\u{1F5DD}\uFE0F",rolled_up_newspaper:"\u{1F5DE}\uFE0F",dagger_knife:"\u{1F5E1}\uFE0F",speaking_head_in_silhouette:"\u{1F5E3}\uFE0F",left_speech_bubble:"\u{1F5E8}\uFE0F",right_anger_bubble:"\u{1F5EF}\uFE0F",ballot_box_with_ballot:"\u{1F5F3}\uFE0F",world_map:"\u{1F5FA}\uFE0F",mount_fuji:"\u{1F5FB}",tokyo_tower:"\u{1F5FC}",statue_of_liberty:"\u{1F5FD}",japan:"\u{1F5FE}",moyai:"\u{1F5FF}",grinning:"\u{1F600}",grin:"\u{1F601}",joy:"\u{1F602}",smiley:"\u{1F603}",smile:"\u{1F604}",sweat_smile:"\u{1F605}",laughing:"\u{1F606}",satisfied:"\u{1F606}",innocent:"\u{1F607}",smiling_imp:"\u{1F608}",wink:"\u{1F609}",blush:"\u{1F60A}",yum:"\u{1F60B}",relieved:"\u{1F60C}",heart_eyes:"\u{1F60D}",sunglasses:"\u{1F60E}",smirk:"\u{1F60F}",neutral_face:"\u{1F610}",expressionless:"\u{1F611}",unamused:"\u{1F612}",sweat:"\u{1F613}",pensive:"\u{1F614}",confused:"\u{1F615}",confounded:"\u{1F616}",kissing:"\u{1F617}",kissing_heart:"\u{1F618}",kissing_smiling_eyes:"\u{1F619}",kissing_closed_eyes:"\u{1F61A}",stuck_out_tongue:"\u{1F61B}",stuck_out_tongue_winking_eye:"\u{1F61C}",stuck_out_tongue_closed_eyes:"\u{1F61D}",disappointed:"\u{1F61E}",worried:"\u{1F61F}",angry:"\u{1F620}",rage:"\u{1F621}",cry:"\u{1F622}",persevere:"\u{1F623}",triumph:"\u{1F624}",disappointed_relieved:"\u{1F625}",frowning:"\u{1F626}",anguished:"\u{1F627}",fearful:"\u{1F628}",weary:"\u{1F629}",sleepy:"\u{1F62A}",tired_face:"\u{1F62B}",grimacing:"\u{1F62C}",sob:"\u{1F62D}",face_exhaling:"\u{1F62E}\u200D\u{1F4A8}",open_mouth:"\u{1F62E}",hushed:"\u{1F62F}",cold_sweat:"\u{1F630}",scream:"\u{1F631}",astonished:"\u{1F632}",flushed:"\u{1F633}",sleeping:"\u{1F634}",face_with_spiral_eyes:"\u{1F635}\u200D\u{1F4AB}",dizzy_face:"\u{1F635}",face_in_clouds:"\u{1F636}\u200D\u{1F32B}\uFE0F",no_mouth:"\u{1F636}",mask:"\u{1F637}",smile_cat:"\u{1F638}",joy_cat:"\u{1F639}",smiley_cat:"\u{1F63A}",heart_eyes_cat:"\u{1F63B}",smirk_cat:"\u{1F63C}",kissing_cat:"\u{1F63D}",pouting_cat:"\u{1F63E}",crying_cat_face:"\u{1F63F}",scream_cat:"\u{1F640}",slightly_frowning_face:"\u{1F641}",slightly_smiling_face:"\u{1F642}",upside_down_face:"\u{1F643}",face_with_rolling_eyes:"\u{1F644}","woman-gesturing-no":"\u{1F645}\u200D\u2640\uFE0F",no_good:"\u{1F645}\u200D\u2640\uFE0F","man-gesturing-no":"\u{1F645}\u200D\u2642\uFE0F","woman-gesturing-ok":"\u{1F646}\u200D\u2640\uFE0F",ok_woman:"\u{1F646}\u200D\u2640\uFE0F","man-gesturing-ok":"\u{1F646}\u200D\u2642\uFE0F","woman-bowing":"\u{1F647}\u200D\u2640\uFE0F",bowing_woman:"\u{1F647}\u200D\u2640\uFE0F","man-bowing":"\u{1F647}\u200D\u2642\uFE0F",bow:"\u{1F647}\u200D\u2642\uFE0F",bowing_man:"\u{1F647}\u200D\u2642\uFE0F",see_no_evil:"\u{1F648}",hear_no_evil:"\u{1F649}",speak_no_evil:"\u{1F64A}","woman-raising-hand":"\u{1F64B}\u200D\u2640\uFE0F",raising_hand:"\u{1F64B}\u200D\u2640\uFE0F",raising_hand_woman:"\u{1F64B}\u200D\u2640\uFE0F","man-raising-hand":"\u{1F64B}\u200D\u2642\uFE0F",raising_hand_man:"\u{1F64B}\u200D\u2642\uFE0F",raised_hands:"\u{1F64C}","woman-frowning":"\u{1F64D}\u200D\u2640\uFE0F",person_frowning:"\u{1F64D}\u200D\u2640\uFE0F",frowning_woman:"\u{1F64D}\u200D\u2640\uFE0F","man-frowning":"\u{1F64D}\u200D\u2642\uFE0F",frowning_man:"\u{1F64D}\u200D\u2642\uFE0F","woman-pouting":"\u{1F64E}\u200D\u2640\uFE0F",person_with_pouting_face:"\u{1F64E}\u200D\u2640\uFE0F",pouting_woman:"\u{1F64E}\u200D\u2640\uFE0F","man-pouting":"\u{1F64E}\u200D\u2642\uFE0F",pouting_man:"\u{1F64E}\u200D\u2642\uFE0F",pray:"\u{1F64F}",rocket:"\u{1F680}",helicopter:"\u{1F681}",steam_locomotive:"\u{1F682}",railway_car:"\u{1F683}",bullettrain_side:"\u{1F684}",bullettrain_front:"\u{1F685}",train2:"\u{1F686}",metro:"\u{1F687}",light_rail:"\u{1F688}",station:"\u{1F689}",tram:"\u{1F68A}",train:"\u{1F68B}",bus:"\u{1F68C}",oncoming_bus:"\u{1F68D}",trolleybus:"\u{1F68E}",busstop:"\u{1F68F}",minibus:"\u{1F690}",ambulance:"\u{1F691}",fire_engine:"\u{1F692}",police_car:"\u{1F693}",oncoming_police_car:"\u{1F694}",taxi:"\u{1F695}",oncoming_taxi:"\u{1F696}",car:"\u{1F697}",red_car:"\u{1F697}",oncoming_automobile:"\u{1F698}",blue_car:"\u{1F699}",truck:"\u{1F69A}",articulated_lorry:"\u{1F69B}",tractor:"\u{1F69C}",monorail:"\u{1F69D}",mountain_railway:"\u{1F69E}",suspension_railway:"\u{1F69F}",mountain_cableway:"\u{1F6A0}",aerial_tramway:"\u{1F6A1}",ship:"\u{1F6A2}","woman-rowing-boat":"\u{1F6A3}\u200D\u2640\uFE0F",rowing_woman:"\u{1F6A3}\u200D\u2640\uFE0F","man-rowing-boat":"\u{1F6A3}\u200D\u2642\uFE0F",rowboat:"\u{1F6A3}\u200D\u2642\uFE0F",rowing_man:"\u{1F6A3}\u200D\u2642\uFE0F",speedboat:"\u{1F6A4}",traffic_light:"\u{1F6A5}",vertical_traffic_light:"\u{1F6A6}",construction:"\u{1F6A7}",rotating_light:"\u{1F6A8}",triangular_flag_on_post:"\u{1F6A9}",door:"\u{1F6AA}",no_entry_sign:"\u{1F6AB}",smoking:"\u{1F6AC}",no_smoking:"\u{1F6AD}",put_litter_in_its_place:"\u{1F6AE}",do_not_litter:"\u{1F6AF}",potable_water:"\u{1F6B0}","non-potable_water":"\u{1F6B1}",bike:"\u{1F6B2}",no_bicycles:"\u{1F6B3}","woman-biking":"\u{1F6B4}\u200D\u2640\uFE0F",biking_woman:"\u{1F6B4}\u200D\u2640\uFE0F","man-biking":"\u{1F6B4}\u200D\u2642\uFE0F",bicyclist:"\u{1F6B4}\u200D\u2642\uFE0F",biking_man:"\u{1F6B4}\u200D\u2642\uFE0F","woman-mountain-biking":"\u{1F6B5}\u200D\u2640\uFE0F",mountain_biking_woman:"\u{1F6B5}\u200D\u2640\uFE0F","man-mountain-biking":"\u{1F6B5}\u200D\u2642\uFE0F",mountain_bicyclist:"\u{1F6B5}\u200D\u2642\uFE0F",mountain_biking_man:"\u{1F6B5}\u200D\u2642\uFE0F","woman-walking":"\u{1F6B6}\u200D\u2640\uFE0F",walking_woman:"\u{1F6B6}\u200D\u2640\uFE0F","man-walking":"\u{1F6B6}\u200D\u2642\uFE0F",walking:"\u{1F6B6}\u200D\u2642\uFE0F",walking_man:"\u{1F6B6}\u200D\u2642\uFE0F",no_pedestrians:"\u{1F6B7}",children_crossing:"\u{1F6B8}",mens:"\u{1F6B9}",womens:"\u{1F6BA}",restroom:"\u{1F6BB}",baby_symbol:"\u{1F6BC}",toilet:"\u{1F6BD}",wc:"\u{1F6BE}",shower:"\u{1F6BF}",bath:"\u{1F6C0}",bathtub:"\u{1F6C1}",passport_control:"\u{1F6C2}",customs:"\u{1F6C3}",baggage_claim:"\u{1F6C4}",left_luggage:"\u{1F6C5}",couch_and_lamp:"\u{1F6CB}\uFE0F",sleeping_accommodation:"\u{1F6CC}",shopping_bags:"\u{1F6CD}\uFE0F",bellhop_bell:"\u{1F6CE}\uFE0F",bed:"\u{1F6CF}\uFE0F",place_of_worship:"\u{1F6D0}",octagonal_sign:"\u{1F6D1}",shopping_trolley:"\u{1F6D2}",hindu_temple:"\u{1F6D5}",hut:"\u{1F6D6}",elevator:"\u{1F6D7}",hammer_and_wrench:"\u{1F6E0}\uFE0F",shield:"\u{1F6E1}\uFE0F",oil_drum:"\u{1F6E2}\uFE0F",motorway:"\u{1F6E3}\uFE0F",railway_track:"\u{1F6E4}\uFE0F",motor_boat:"\u{1F6E5}\uFE0F",small_airplane:"\u{1F6E9}\uFE0F",airplane_departure:"\u{1F6EB}",airplane_arriving:"\u{1F6EC}",satellite:"\u{1F6F0}\uFE0F",passenger_ship:"\u{1F6F3}\uFE0F",scooter:"\u{1F6F4}",motor_scooter:"\u{1F6F5}",canoe:"\u{1F6F6}",sled:"\u{1F6F7}",flying_saucer:"\u{1F6F8}",skateboard:"\u{1F6F9}",auto_rickshaw:"\u{1F6FA}",pickup_truck:"\u{1F6FB}",roller_skate:"\u{1F6FC}",large_orange_circle:"\u{1F7E0}",large_yellow_circle:"\u{1F7E1}",large_green_circle:"\u{1F7E2}",large_purple_circle:"\u{1F7E3}",large_brown_circle:"\u{1F7E4}",large_red_square:"\u{1F7E5}",large_blue_square:"\u{1F7E6}",large_orange_square:"\u{1F7E7}",large_yellow_square:"\u{1F7E8}",large_green_square:"\u{1F7E9}",large_purple_square:"\u{1F7EA}",large_brown_square:"\u{1F7EB}",pinched_fingers:"\u{1F90C}",white_heart:"\u{1F90D}",brown_heart:"\u{1F90E}",pinching_hand:"\u{1F90F}",zipper_mouth_face:"\u{1F910}",money_mouth_face:"\u{1F911}",face_with_thermometer:"\u{1F912}",nerd_face:"\u{1F913}",thinking_face:"\u{1F914}",face_with_head_bandage:"\u{1F915}",robot_face:"\u{1F916}",hugging_face:"\u{1F917}",the_horns:"\u{1F918}",sign_of_the_horns:"\u{1F918}",call_me_hand:"\u{1F919}",raised_back_of_hand:"\u{1F91A}","left-facing_fist":"\u{1F91B}","right-facing_fist":"\u{1F91C}",handshake:"\u{1F91D}",crossed_fingers:"\u{1F91E}",hand_with_index_and_middle_fingers_crossed:"\u{1F91E}",i_love_you_hand_sign:"\u{1F91F}",face_with_cowboy_hat:"\u{1F920}",clown_face:"\u{1F921}",nauseated_face:"\u{1F922}",rolling_on_the_floor_laughing:"\u{1F923}",drooling_face:"\u{1F924}",lying_face:"\u{1F925}","woman-facepalming":"\u{1F926}\u200D\u2640\uFE0F","man-facepalming":"\u{1F926}\u200D\u2642\uFE0F",face_palm:"\u{1F926}",sneezing_face:"\u{1F927}",face_with_raised_eyebrow:"\u{1F928}",face_with_one_eyebrow_raised:"\u{1F928}","star-struck":"\u{1F929}",grinning_face_with_star_eyes:"\u{1F929}",zany_face:"\u{1F92A}",grinning_face_with_one_large_and_one_small_eye:"\u{1F92A}",shushing_face:"\u{1F92B}",face_with_finger_covering_closed_lips:"\u{1F92B}",face_with_symbols_on_mouth:"\u{1F92C}",serious_face_with_symbols_covering_mouth:"\u{1F92C}",face_with_hand_over_mouth:"\u{1F92D}",smiling_face_with_smiling_eyes_and_hand_covering_mouth:"\u{1F92D}",face_vomiting:"\u{1F92E}",face_with_open_mouth_vomiting:"\u{1F92E}",exploding_head:"\u{1F92F}",shocked_face_with_exploding_head:"\u{1F92F}",pregnant_woman:"\u{1F930}","breast-feeding":"\u{1F931}",palms_up_together:"\u{1F932}",selfie:"\u{1F933}",prince:"\u{1F934}",woman_in_tuxedo:"\u{1F935}\u200D\u2640\uFE0F",man_in_tuxedo:"\u{1F935}\u200D\u2642\uFE0F",person_in_tuxedo:"\u{1F935}",mrs_claus:"\u{1F936}",mother_christmas:"\u{1F936}","woman-shrugging":"\u{1F937}\u200D\u2640\uFE0F","man-shrugging":"\u{1F937}\u200D\u2642\uFE0F",shrug:"\u{1F937}","woman-cartwheeling":"\u{1F938}\u200D\u2640\uFE0F","man-cartwheeling":"\u{1F938}\u200D\u2642\uFE0F",person_doing_cartwheel:"\u{1F938}","woman-juggling":"\u{1F939}\u200D\u2640\uFE0F","man-juggling":"\u{1F939}\u200D\u2642\uFE0F",juggling:"\u{1F939}",fencer:"\u{1F93A}","woman-wrestling":"\u{1F93C}\u200D\u2640\uFE0F","man-wrestling":"\u{1F93C}\u200D\u2642\uFE0F",wrestlers:"\u{1F93C}","woman-playing-water-polo":"\u{1F93D}\u200D\u2640\uFE0F","man-playing-water-polo":"\u{1F93D}\u200D\u2642\uFE0F",water_polo:"\u{1F93D}","woman-playing-handball":"\u{1F93E}\u200D\u2640\uFE0F","man-playing-handball":"\u{1F93E}\u200D\u2642\uFE0F",handball:"\u{1F93E}",diving_mask:"\u{1F93F}",wilted_flower:"\u{1F940}",drum_with_drumsticks:"\u{1F941}",clinking_glasses:"\u{1F942}",tumbler_glass:"\u{1F943}",spoon:"\u{1F944}",goal_net:"\u{1F945}",first_place_medal:"\u{1F947}",second_place_medal:"\u{1F948}",third_place_medal:"\u{1F949}",boxing_glove:"\u{1F94A}",martial_arts_uniform:"\u{1F94B}",curling_stone:"\u{1F94C}",lacrosse:"\u{1F94D}",softball:"\u{1F94E}",flying_disc:"\u{1F94F}",croissant:"\u{1F950}",avocado:"\u{1F951}",cucumber:"\u{1F952}",bacon:"\u{1F953}",potato:"\u{1F954}",carrot:"\u{1F955}",baguette_bread:"\u{1F956}",green_salad:"\u{1F957}",shallow_pan_of_food:"\u{1F958}",stuffed_flatbread:"\u{1F959}",egg:"\u{1F95A}",glass_of_milk:"\u{1F95B}",peanuts:"\u{1F95C}",kiwifruit:"\u{1F95D}",pancakes:"\u{1F95E}",dumpling:"\u{1F95F}",fortune_cookie:"\u{1F960}",takeout_box:"\u{1F961}",chopsticks:"\u{1F962}",bowl_with_spoon:"\u{1F963}",cup_with_straw:"\u{1F964}",coconut:"\u{1F965}",broccoli:"\u{1F966}",pie:"\u{1F967}",pretzel:"\u{1F968}",cut_of_meat:"\u{1F969}",sandwich:"\u{1F96A}",canned_food:"\u{1F96B}",leafy_green:"\u{1F96C}",mango:"\u{1F96D}",moon_cake:"\u{1F96E}",bagel:"\u{1F96F}",smiling_face_with_3_hearts:"\u{1F970}",yawning_face:"\u{1F971}",smiling_face_with_tear:"\u{1F972}",partying_face:"\u{1F973}",woozy_face:"\u{1F974}",hot_face:"\u{1F975}",cold_face:"\u{1F976}",ninja:"\u{1F977}",disguised_face:"\u{1F978}",pleading_face:"\u{1F97A}",sari:"\u{1F97B}",lab_coat:"\u{1F97C}",goggles:"\u{1F97D}",hiking_boot:"\u{1F97E}",womans_flat_shoe:"\u{1F97F}",crab:"\u{1F980}",lion_face:"\u{1F981}",scorpion:"\u{1F982}",turkey:"\u{1F983}",unicorn_face:"\u{1F984}",eagle:"\u{1F985}",duck:"\u{1F986}",bat:"\u{1F987}",shark:"\u{1F988}",owl:"\u{1F989}",fox_face:"\u{1F98A}",butterfly:"\u{1F98B}",deer:"\u{1F98C}",gorilla:"\u{1F98D}",lizard:"\u{1F98E}",rhinoceros:"\u{1F98F}",shrimp:"\u{1F990}",squid:"\u{1F991}",giraffe_face:"\u{1F992}",zebra_face:"\u{1F993}",hedgehog:"\u{1F994}",sauropod:"\u{1F995}","t-rex":"\u{1F996}",cricket:"\u{1F997}",kangaroo:"\u{1F998}",llama:"\u{1F999}",peacock:"\u{1F99A}",hippopotamus:"\u{1F99B}",parrot:"\u{1F99C}",raccoon:"\u{1F99D}",lobster:"\u{1F99E}",mosquito:"\u{1F99F}",microbe:"\u{1F9A0}",badger:"\u{1F9A1}",swan:"\u{1F9A2}",mammoth:"\u{1F9A3}",dodo:"\u{1F9A4}",sloth:"\u{1F9A5}",otter:"\u{1F9A6}",orangutan:"\u{1F9A7}",skunk:"\u{1F9A8}",flamingo:"\u{1F9A9}",oyster:"\u{1F9AA}",beaver:"\u{1F9AB}",bison:"\u{1F9AC}",seal:"\u{1F9AD}",guide_dog:"\u{1F9AE}",probing_cane:"\u{1F9AF}",bone:"\u{1F9B4}",leg:"\u{1F9B5}",foot:"\u{1F9B6}",tooth:"\u{1F9B7}",female_superhero:"\u{1F9B8}\u200D\u2640\uFE0F",male_superhero:"\u{1F9B8}\u200D\u2642\uFE0F",superhero:"\u{1F9B8}",female_supervillain:"\u{1F9B9}\u200D\u2640\uFE0F",male_supervillain:"\u{1F9B9}\u200D\u2642\uFE0F",supervillain:"\u{1F9B9}",safety_vest:"\u{1F9BA}",ear_with_hearing_aid:"\u{1F9BB}",motorized_wheelchair:"\u{1F9BC}",manual_wheelchair:"\u{1F9BD}",mechanical_arm:"\u{1F9BE}",mechanical_leg:"\u{1F9BF}",cheese_wedge:"\u{1F9C0}",cupcake:"\u{1F9C1}",salt:"\u{1F9C2}",beverage_box:"\u{1F9C3}",garlic:"\u{1F9C4}",onion:"\u{1F9C5}",falafel:"\u{1F9C6}",waffle:"\u{1F9C7}",butter:"\u{1F9C8}",mate_drink:"\u{1F9C9}",ice_cube:"\u{1F9CA}",bubble_tea:"\u{1F9CB}",woman_standing:"\u{1F9CD}\u200D\u2640\uFE0F",man_standing:"\u{1F9CD}\u200D\u2642\uFE0F",standing_person:"\u{1F9CD}",woman_kneeling:"\u{1F9CE}\u200D\u2640\uFE0F",man_kneeling:"\u{1F9CE}\u200D\u2642\uFE0F",kneeling_person:"\u{1F9CE}",deaf_woman:"\u{1F9CF}\u200D\u2640\uFE0F",deaf_man:"\u{1F9CF}\u200D\u2642\uFE0F",deaf_person:"\u{1F9CF}",face_with_monocle:"\u{1F9D0}",farmer:"\u{1F9D1}\u200D\u{1F33E}",cook:"\u{1F9D1}\u200D\u{1F373}",person_feeding_baby:"\u{1F9D1}\u200D\u{1F37C}",mx_claus:"\u{1F9D1}\u200D\u{1F384}",student:"\u{1F9D1}\u200D\u{1F393}",singer:"\u{1F9D1}\u200D\u{1F3A4}",artist:"\u{1F9D1}\u200D\u{1F3A8}",teacher:"\u{1F9D1}\u200D\u{1F3EB}",factory_worker:"\u{1F9D1}\u200D\u{1F3ED}",technologist:"\u{1F9D1}\u200D\u{1F4BB}",office_worker:"\u{1F9D1}\u200D\u{1F4BC}",mechanic:"\u{1F9D1}\u200D\u{1F527}",scientist:"\u{1F9D1}\u200D\u{1F52C}",astronaut:"\u{1F9D1}\u200D\u{1F680}",firefighter:"\u{1F9D1}\u200D\u{1F692}",people_holding_hands:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}",person_with_probing_cane:"\u{1F9D1}\u200D\u{1F9AF}",red_haired_person:"\u{1F9D1}\u200D\u{1F9B0}",curly_haired_person:"\u{1F9D1}\u200D\u{1F9B1}",bald_person:"\u{1F9D1}\u200D\u{1F9B2}",white_haired_person:"\u{1F9D1}\u200D\u{1F9B3}",person_in_motorized_wheelchair:"\u{1F9D1}\u200D\u{1F9BC}",person_in_manual_wheelchair:"\u{1F9D1}\u200D\u{1F9BD}",health_worker:"\u{1F9D1}\u200D\u2695\uFE0F",judge:"\u{1F9D1}\u200D\u2696\uFE0F",pilot:"\u{1F9D1}\u200D\u2708\uFE0F",adult:"\u{1F9D1}",child:"\u{1F9D2}",older_adult:"\u{1F9D3}",woman_with_beard:"\u{1F9D4}\u200D\u2640\uFE0F",man_with_beard:"\u{1F9D4}\u200D\u2642\uFE0F",bearded_person:"\u{1F9D4}",person_with_headscarf:"\u{1F9D5}",woman_in_steamy_room:"\u{1F9D6}\u200D\u2640\uFE0F",man_in_steamy_room:"\u{1F9D6}\u200D\u2642\uFE0F",person_in_steamy_room:"\u{1F9D6}\u200D\u2642\uFE0F",woman_climbing:"\u{1F9D7}\u200D\u2640\uFE0F",person_climbing:"\u{1F9D7}\u200D\u2640\uFE0F",man_climbing:"\u{1F9D7}\u200D\u2642\uFE0F",woman_in_lotus_position:"\u{1F9D8}\u200D\u2640\uFE0F",person_in_lotus_position:"\u{1F9D8}\u200D\u2640\uFE0F",man_in_lotus_position:"\u{1F9D8}\u200D\u2642\uFE0F",female_mage:"\u{1F9D9}\u200D\u2640\uFE0F",mage:"\u{1F9D9}\u200D\u2640\uFE0F",male_mage:"\u{1F9D9}\u200D\u2642\uFE0F",female_fairy:"\u{1F9DA}\u200D\u2640\uFE0F",fairy:"\u{1F9DA}\u200D\u2640\uFE0F",male_fairy:"\u{1F9DA}\u200D\u2642\uFE0F",female_vampire:"\u{1F9DB}\u200D\u2640\uFE0F",vampire:"\u{1F9DB}\u200D\u2640\uFE0F",male_vampire:"\u{1F9DB}\u200D\u2642\uFE0F",mermaid:"\u{1F9DC}\u200D\u2640\uFE0F",merman:"\u{1F9DC}\u200D\u2642\uFE0F",merperson:"\u{1F9DC}\u200D\u2642\uFE0F",female_elf:"\u{1F9DD}\u200D\u2640\uFE0F",male_elf:"\u{1F9DD}\u200D\u2642\uFE0F",elf:"\u{1F9DD}\u200D\u2642\uFE0F",female_genie:"\u{1F9DE}\u200D\u2640\uFE0F",male_genie:"\u{1F9DE}\u200D\u2642\uFE0F",genie:"\u{1F9DE}\u200D\u2642\uFE0F",female_zombie:"\u{1F9DF}\u200D\u2640\uFE0F",male_zombie:"\u{1F9DF}\u200D\u2642\uFE0F",zombie:"\u{1F9DF}\u200D\u2642\uFE0F",brain:"\u{1F9E0}",orange_heart:"\u{1F9E1}",billed_cap:"\u{1F9E2}",scarf:"\u{1F9E3}",gloves:"\u{1F9E4}",coat:"\u{1F9E5}",socks:"\u{1F9E6}",red_envelope:"\u{1F9E7}",firecracker:"\u{1F9E8}",jigsaw:"\u{1F9E9}",test_tube:"\u{1F9EA}",petri_dish:"\u{1F9EB}",dna:"\u{1F9EC}",compass:"\u{1F9ED}",abacus:"\u{1F9EE}",fire_extinguisher:"\u{1F9EF}",toolbox:"\u{1F9F0}",bricks:"\u{1F9F1}",magnet:"\u{1F9F2}",luggage:"\u{1F9F3}",lotion_bottle:"\u{1F9F4}",thread:"\u{1F9F5}",yarn:"\u{1F9F6}",safety_pin:"\u{1F9F7}",teddy_bear:"\u{1F9F8}",broom:"\u{1F9F9}",basket:"\u{1F9FA}",roll_of_paper:"\u{1F9FB}",soap:"\u{1F9FC}",sponge:"\u{1F9FD}",receipt:"\u{1F9FE}",nazar_amulet:"\u{1F9FF}",ballet_shoes:"\u{1FA70}","one-piece_swimsuit":"\u{1FA71}",briefs:"\u{1FA72}",shorts:"\u{1FA73}",thong_sandal:"\u{1FA74}",drop_of_blood:"\u{1FA78}",adhesive_bandage:"\u{1FA79}",stethoscope:"\u{1FA7A}","yo-yo":"\u{1FA80}",kite:"\u{1FA81}",parachute:"\u{1FA82}",boomerang:"\u{1FA83}",magic_wand:"\u{1FA84}",pinata:"\u{1FA85}",nesting_dolls:"\u{1FA86}",ringed_planet:"\u{1FA90}",chair:"\u{1FA91}",razor:"\u{1FA92}",axe:"\u{1FA93}",diya_lamp:"\u{1FA94}",banjo:"\u{1FA95}",military_helmet:"\u{1FA96}",accordion:"\u{1FA97}",long_drum:"\u{1FA98}",coin:"\u{1FA99}",carpentry_saw:"\u{1FA9A}",screwdriver:"\u{1FA9B}",ladder:"\u{1FA9C}",hook:"\u{1FA9D}",mirror:"\u{1FA9E}",window:"\u{1FA9F}",plunger:"\u{1FAA0}",sewing_needle:"\u{1FAA1}",knot:"\u{1FAA2}",bucket:"\u{1FAA3}",mouse_trap:"\u{1FAA4}",toothbrush:"\u{1FAA5}",headstone:"\u{1FAA6}",placard:"\u{1FAA7}",rock:"\u{1FAA8}",fly:"\u{1FAB0}",worm:"\u{1FAB1}",beetle:"\u{1FAB2}",cockroach:"\u{1FAB3}",potted_plant:"\u{1FAB4}",wood:"\u{1FAB5}",feather:"\u{1FAB6}",anatomical_heart:"\u{1FAC0}",lungs:"\u{1FAC1}",people_hugging:"\u{1FAC2}",blueberries:"\u{1FAD0}",bell_pepper:"\u{1FAD1}",olive:"\u{1FAD2}",flatbread:"\u{1FAD3}",tamale:"\u{1FAD4}",fondue:"\u{1FAD5}",teapot:"\u{1FAD6}",bangbang:"\u203C\uFE0F",interrobang:"\u2049\uFE0F",tm:"\u2122\uFE0F",information_source:"\u2139\uFE0F",left_right_arrow:"\u2194\uFE0F",arrow_up_down:"\u2195\uFE0F",arrow_upper_left:"\u2196\uFE0F",arrow_upper_right:"\u2197\uFE0F",arrow_lower_right:"\u2198\uFE0F",arrow_lower_left:"\u2199\uFE0F",leftwards_arrow_with_hook:"\u21A9\uFE0F",arrow_right_hook:"\u21AA\uFE0F",watch:"\u231A",hourglass:"\u231B",keyboard:"\u2328\uFE0F",eject:"\u23CF\uFE0F",fast_forward:"\u23E9",rewind:"\u23EA",arrow_double_up:"\u23EB",arrow_double_down:"\u23EC",black_right_pointing_double_triangle_with_vertical_bar:"\u23ED\uFE0F",black_left_pointing_double_triangle_with_vertical_bar:"\u23EE\uFE0F",black_right_pointing_triangle_with_double_vertical_bar:"\u23EF\uFE0F",alarm_clock:"\u23F0",stopwatch:"\u23F1\uFE0F",timer_clock:"\u23F2\uFE0F",hourglass_flowing_sand:"\u23F3",double_vertical_bar:"\u23F8\uFE0F",black_square_for_stop:"\u23F9\uFE0F",black_circle_for_record:"\u23FA\uFE0F",m:"\u24C2\uFE0F",black_small_square:"\u25AA\uFE0F",white_small_square:"\u25AB\uFE0F",arrow_forward:"\u25B6\uFE0F",arrow_backward:"\u25C0\uFE0F",white_medium_square:"\u25FB\uFE0F",black_medium_square:"\u25FC\uFE0F",white_medium_small_square:"\u25FD",black_medium_small_square:"\u25FE",sunny:"\u2600\uFE0F",cloud:"\u2601\uFE0F",umbrella:"\u2602\uFE0F",snowman:"\u2603\uFE0F",comet:"\u2604\uFE0F",phone:"\u260E\uFE0F",telephone:"\u260E\uFE0F",ballot_box_with_check:"\u2611\uFE0F",shamrock:"\u2618\uFE0F",point_up:"\u261D\uFE0F",skull_and_crossbones:"\u2620\uFE0F",radioactive_sign:"\u2622\uFE0F",biohazard_sign:"\u2623\uFE0F",orthodox_cross:"\u2626\uFE0F",star_and_crescent:"\u262A\uFE0F",peace_symbol:"\u262E\uFE0F",yin_yang:"\u262F\uFE0F",wheel_of_dharma:"\u2638\uFE0F",white_frowning_face:"\u2639\uFE0F",relaxed:"\u263A\uFE0F",female_sign:"\u2640\uFE0F",male_sign:"\u2642\uFE0F",gemini:"\u264A",cancer:"\u264B",leo:"\u264C",virgo:"\u264D",libra:"\u264E",scorpius:"\u264F",chess_pawn:"\u265F\uFE0F",spades:"\u2660\uFE0F",clubs:"\u2663\uFE0F",hearts:"\u2665\uFE0F",diamonds:"\u2666\uFE0F",hotsprings:"\u2668\uFE0F",recycle:"\u267B\uFE0F",infinity:"\u267E\uFE0F",wheelchair:"\u267F",hammer_and_pick:"\u2692\uFE0F",crossed_swords:"\u2694\uFE0F",medical_symbol:"\u2695\uFE0F",staff_of_aesculapius:"\u2695\uFE0F",scales:"\u2696\uFE0F",alembic:"\u2697\uFE0F",gear:"\u2699\uFE0F",atom_symbol:"\u269B\uFE0F",fleur_de_lis:"\u269C\uFE0F",warning:"\u26A0\uFE0F",zap:"\u26A1",transgender_symbol:"\u26A7\uFE0F",white_circle:"\u26AA",black_circle:"\u26AB",coffin:"\u26B0\uFE0F",funeral_urn:"\u26B1\uFE0F",soccer:"\u26BD",baseball:"\u26BE",snowman_without_snow:"\u26C4",partly_sunny:"\u26C5",thunder_cloud_and_rain:"\u26C8\uFE0F",ophiuchus:"\u26CE",pick:"\u26CF\uFE0F",helmet_with_white_cross:"\u26D1\uFE0F",chains:"\u26D3\uFE0F",no_entry:"\u26D4",shinto_shrine:"\u26E9\uFE0F",church:"\u26EA",mountain:"\u26F0\uFE0F",umbrella_on_ground:"\u26F1\uFE0F",fountain:"\u26F2",golf:"\u26F3",ferry:"\u26F4\uFE0F",boat:"\u26F5",sailboat:"\u26F5",skier:"\u26F7\uFE0F",ice_skate:"\u26F8\uFE0F","woman-bouncing-ball":"\u26F9\uFE0F\u200D\u2640\uFE0F","man-bouncing-ball":"\u26F9\uFE0F\u200D\u2642\uFE0F",person_with_ball:"\u26F9\uFE0F\u200D\u2642\uFE0F",tent:"\u26FA",fuelpump:"\u26FD",scissors:"\u2702\uFE0F",airplane:"\u2708\uFE0F",email:"\u2709\uFE0F",envelope:"\u2709\uFE0F",fist:"\u270A",hand:"\u270B",raised_hand:"\u270B",v:"\u270C\uFE0F",writing_hand:"\u270D\uFE0F",pencil2:"\u270F\uFE0F",black_nib:"\u2712\uFE0F",heavy_check_mark:"\u2714\uFE0F",heavy_multiplication_x:"\u2716\uFE0F",latin_cross:"\u271D\uFE0F",star_of_david:"\u2721\uFE0F",eight_spoked_asterisk:"\u2733\uFE0F",eight_pointed_black_star:"\u2734\uFE0F",snowflake:"\u2744\uFE0F",sparkle:"\u2747\uFE0F",x:"\u274C",negative_squared_cross_mark:"\u274E",heavy_heart_exclamation_mark_ornament:"\u2763\uFE0F",heart_on_fire:"\u2764\uFE0F\u200D\u{1F525}",mending_heart:"\u2764\uFE0F\u200D\u{1FA79}",heart:"\u2764\uFE0F",arrow_right:"\u27A1\uFE0F",curly_loop:"\u27B0",loop:"\u27BF",arrow_heading_up:"\u2934\uFE0F",arrow_heading_down:"\u2935\uFE0F",arrow_left:"\u2B05\uFE0F",arrow_up:"\u2B06\uFE0F",arrow_down:"\u2B07\uFE0F",black_large_square:"\u2B1B",white_large_square:"\u2B1C",star:"\u2B50",o:"\u2B55",wavy_dash:"\u3030\uFE0F",part_alternation_mark:"\u303D\uFE0F",congratulations:"\u3297\uFE0F",secret:"\u3299\uFE0F"}});var gs=K((x2,hs)=>{var ms=ds(),Re=pa(),hf=/:([a-zA-Z0-9_\-\+]+):/g,gf=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function dt(e){var t=e.indexOf(":");return t>-1?t===e.length-1?(e=e.substring(0,t),dt(e)):(e=e.substr(t+1),dt(e)):e}function fs(e){return typeof e=="string"&&e.length>0?":"+e+":":e}function xf(e){return typeof e=="string"&&e[0]!==":"?fs(e):e}var vf=String.fromCharCode(65039),bf=new RegExp(vf,"g");function mt(e){return e.replace(bf,"")}var ua=Object.keys(Re).reduce(function(e,t){return e[mt(Re[t])]=t,e},{}),le={emoji:Re};le._get=function(t){return ua[mt(t)]?t:Re.hasOwnProperty(t)?Re[t]:xf(t)};le.get=function(t){return t=dt(t),le._get(t)};le.find=function(t){return le.findByName(t)||le.findByCode(t)};le.findByName=function(t){var n=dt(t),a=Re[n];return a?{emoji:a,key:n}:void 0};le.findByCode=function(t){var n=mt(t),a=ua[n];return a?{emoji:Re[a],key:a}:void 0};le.hasEmoji=function(t){return le.hasEmojiByName(t)||le.hasEmojiByCode(t)};le.hasEmojiByName=function(t){var n=le.findByName(t);return!!n&&n.key===dt(t)};le.hasEmojiByCode=function(t){var n=le.findByCode(t);return!!n&&mt(n.emoji)===mt(t)};le.which=function(t,n){var a=mt(t),i=ua[a];return n?fs(i):i};le.emojify=function(t,n,a){return t?t.split(hf).map(function(r,o){if(o%2==0)return r;var s=le._get(r),p=s.indexOf(":")>-1;return p&&typeof n=="function"?n(r):!p&&typeof a=="function"?a(s,r):s}).join(""):""};le.random=function(){var t=Object.keys(Re),n=Math.floor(Math.random()*t.length),a=t[n],i=le._get(a);return{key:a,emoji:i}};le.search=function(t){var n=Object.keys(Re),a=dt(t),i=n.filter(function(r){return r.toString().indexOf(a)===0});return i.map(function(r){return{key:r,emoji:le._get(r)}})};le.unemojify=function(t){if(!t)return"";var n=ms(t);return n.map(function(a){return le.which(a,!0)||a}).join("")};le.replace=function(t,n,a){if(!t)return"";var i=typeof n=="function"?n:function(){return n},r=ms(t),o=r.map(function(s,p){var l=le.findByCode(s);return l&&a&&r[p+1]===" "&&(r[p+1]=""),l?i(l):s}).join("");return a?o.replace(gf,""):o};le.strip=function(t){return le.replace(t,"",!0)};hs.exports=le});var Dt=K((v2,xs)=>{xs.exports=gs()});var on=K((b2,rn)=>{(function(){"use strict";var e={}.hasOwnProperty;function t(){for(var n=[],a=0;a{"use strict";Object.defineProperty(hn,"__esModule",{value:!0});function Is(e,t){if(t)return e;throw new Error("Unhandled discriminated union member: "+JSON.stringify(e))}hn.assertNever=Is;hn.default=Is});var Zs=K((Gs,Sa)=>{(function(e){typeof Gs=="object"&&typeof Sa!="undefined"?Sa.exports=e():typeof define=="function"&&define.amd?define([],e):(typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:this).JSZip=e()})(function(){return function e(t,n,a){function i(s,p){if(!n[s]){if(!t[s]){var l=typeof require=="function"&&require;if(!p&&l)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(h){var g=t[s][1][h];return i(g||h)},d,d.exports,e,t,n,a)}return n[s].exports}for(var r=typeof require=="function"&&require,o=0;o>2,d=(3&s)<<4|p>>4,h=1<_?(15&p)<<2|l>>6:64,g=2<_?63&l:64,f.push(r.charAt(c)+r.charAt(d)+r.charAt(h)+r.charAt(g));return f.join("")},n.decode=function(o){var s,p,l,c,d,h,g=0,f=0,x="data:";if(o.substr(0,x.length)===x)throw new Error("Invalid base64 input, it looks like a data url.");var v,_=3*(o=o.replace(/[^A-Za-z0-9\+\/\=]/g,"")).length/4;if(o.charAt(o.length-1)===r.charAt(64)&&_--,o.charAt(o.length-2)===r.charAt(64)&&_--,_%1!=0)throw new Error("Invalid base64 input, bad content length.");for(v=i.uint8array?new Uint8Array(0|_):new Array(0|_);g>4,p=(15&c)<<4|(d=r.indexOf(o.charAt(g++)))>>2,l=(3&d)<<6|(h=r.indexOf(o.charAt(g++))),v[f++]=s,d!==64&&(v[f++]=p),h!==64&&(v[f++]=l);return v}},{"./support":30,"./utils":32}],2:[function(e,t,n){"use strict";var a=e("./external"),i=e("./stream/DataWorker"),r=e("./stream/Crc32Probe"),o=e("./stream/DataLengthProbe");function s(p,l,c,d,h){this.compressedSize=p,this.uncompressedSize=l,this.crc32=c,this.compression=d,this.compressedContent=h}s.prototype={getContentWorker:function(){var p=new i(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o("data_length")),l=this;return p.on("end",function(){if(this.streamInfo.data_length!==l.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),p},getCompressedWorker:function(){return new i(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},s.createWorkerFrom=function(p,l,c){return p.pipe(new r).pipe(new o("uncompressedSize")).pipe(l.compressWorker(c)).pipe(new o("compressedSize")).withStreamInfo("compression",l)},t.exports=s},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,n){"use strict";var a=e("./stream/GenericWorker");n.STORE={magic:"\0\0",compressWorker:function(i){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},n.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,n){"use strict";var a=e("./utils"),i=function(){for(var r,o=[],s=0;s<256;s++){r=s;for(var p=0;p<8;p++)r=1&r?3988292384^r>>>1:r>>>1;o[s]=r}return o}();t.exports=function(r,o){return r!==void 0&&r.length?a.getTypeOf(r)!=="string"?function(s,p,l,c){var d=i,h=c+l;s^=-1;for(var g=c;g>>8^d[255&(s^p[g])];return-1^s}(0|o,r,r.length,0):function(s,p,l,c){var d=i,h=c+l;s^=-1;for(var g=c;g>>8^d[255&(s^p.charCodeAt(g))];return-1^s}(0|o,r,r.length,0):0}},{"./utils":32}],5:[function(e,t,n){"use strict";n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!0,n.date=null,n.compression=null,n.compressionOptions=null,n.comment=null,n.unixPermissions=null,n.dosPermissions=null},{}],6:[function(e,t,n){"use strict";var a=null;a=typeof Promise!="undefined"?Promise:e("lie"),t.exports={Promise:a}},{lie:37}],7:[function(e,t,n){"use strict";var a=typeof Uint8Array!="undefined"&&typeof Uint16Array!="undefined"&&typeof Uint32Array!="undefined",i=e("pako"),r=e("./utils"),o=e("./stream/GenericWorker"),s=a?"uint8array":"array";function p(l,c){o.call(this,"FlateWorker/"+l),this._pako=null,this._pakoAction=l,this._pakoOptions=c,this.meta={}}n.magic="\b\0",r.inherits(p,o),p.prototype.processChunk=function(l){this.meta=l.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(s,l.data),!1)},p.prototype.flush=function(){o.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},p.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},p.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var l=this;this._pako.onData=function(c){l.push({data:c,meta:l.meta})}},n.compressWorker=function(l){return new p("Deflate",l)},n.uncompressWorker=function(){return new p("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,n){"use strict";function a(d,h){var g,f="";for(g=0;g>>=8;return f}function i(d,h,g,f,x,v){var _,S,C=d.file,z=d.compression,F=v!==s.utf8encode,U=r.transformTo("string",v(C.name)),I=r.transformTo("string",s.utf8encode(C.name)),D=C.comment,Y=r.transformTo("string",v(D)),k=r.transformTo("string",s.utf8encode(D)),E=I.length!==C.name.length,m=k.length!==D.length,P="",J="",N="",ae=C.dir,W=C.date,te={crc32:0,compressedSize:0,uncompressedSize:0};h&&!g||(te.crc32=d.crc32,te.compressedSize=d.compressedSize,te.uncompressedSize=d.uncompressedSize);var A=0;h&&(A|=8),F||!E&&!m||(A|=2048);var L=0,ee=0;ae&&(L|=16),x==="UNIX"?(ee=798,L|=function(q,de){var ve=q;return q||(ve=de?16893:33204),(65535&ve)<<16}(C.unixPermissions,ae)):(ee=20,L|=function(q){return 63&(q||0)}(C.dosPermissions)),_=W.getUTCHours(),_<<=6,_|=W.getUTCMinutes(),_<<=5,_|=W.getUTCSeconds()/2,S=W.getUTCFullYear()-1980,S<<=4,S|=W.getUTCMonth()+1,S<<=5,S|=W.getUTCDate(),E&&(J=a(1,1)+a(p(U),4)+I,P+="up"+a(J.length,2)+J),m&&(N=a(1,1)+a(p(Y),4)+k,P+="uc"+a(N.length,2)+N);var G="";return G+=` -\0`,G+=a(A,2),G+=z.magic,G+=a(_,2),G+=a(S,2),G+=a(te.crc32,4),G+=a(te.compressedSize,4),G+=a(te.uncompressedSize,4),G+=a(U.length,2),G+=a(P.length,2),{fileRecord:l.LOCAL_FILE_HEADER+G+U+P,dirRecord:l.CENTRAL_FILE_HEADER+a(ee,2)+G+a(Y.length,2)+"\0\0\0\0"+a(L,4)+a(f,4)+U+P+Y}}var r=e("../utils"),o=e("../stream/GenericWorker"),s=e("../utf8"),p=e("../crc32"),l=e("../signature");function c(d,h,g,f){o.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=h,this.zipPlatform=g,this.encodeFileName=f,this.streamFiles=d,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(c,o),c.prototype.push=function(d){var h=d.meta.percent||0,g=this.entriesCount,f=this._sources.length;this.accumulate?this.contentBuffer.push(d):(this.bytesWritten+=d.data.length,o.prototype.push.call(this,{data:d.data,meta:{currentFile:this.currentFile,percent:g?(h+100*(g-f-1))/g:100}}))},c.prototype.openedSource=function(d){this.currentSourceOffset=this.bytesWritten,this.currentFile=d.file.name;var h=this.streamFiles&&!d.file.dir;if(h){var g=i(d,h,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:g.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(d){this.accumulate=!1;var h=this.streamFiles&&!d.file.dir,g=i(d,h,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(g.dirRecord),h)this.push({data:function(f){return l.DATA_DESCRIPTOR+a(f.crc32,4)+a(f.compressedSize,4)+a(f.uncompressedSize,4)}(d),meta:{percent:100}});else for(this.push({data:g.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var d=this.bytesWritten,h=0;h=this.index;o--)s=(s<<8)+this.byteAt(o);return this.index+=r,s},readString:function(r){return a.transformTo("string",this.readData(r))},readData:function(r){},lastIndexOfSignature:function(r){},readAndCheckSignature:function(r){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,n){"use strict";var a=e("./Uint8ArrayReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.readData=function(r){this.checkOffset(r);var o=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,n){"use strict";var a=e("./DataReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},i.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},i.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},i.prototype.readData=function(r){this.checkOffset(r);var o=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,n){"use strict";var a=e("./ArrayReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var o=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,n){"use strict";var a=e("../utils"),i=e("../support"),r=e("./ArrayReader"),o=e("./StringReader"),s=e("./NodeBufferReader"),p=e("./Uint8ArrayReader");t.exports=function(l){var c=a.getTypeOf(l);return a.checkSupport(c),c!=="string"||i.uint8array?c==="nodebuffer"?new s(l):i.uint8array?new p(a.transformTo("uint8array",l)):new r(a.transformTo("array",l)):new o(l)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,n){"use strict";n.LOCAL_FILE_HEADER="PK",n.CENTRAL_FILE_HEADER="PK",n.CENTRAL_DIRECTORY_END="PK",n.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",n.ZIP64_CENTRAL_DIRECTORY_END="PK",n.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(e,t,n){"use strict";var a=e("./GenericWorker"),i=e("../utils");function r(o){a.call(this,"ConvertWorker to "+o),this.destType=o}i.inherits(r,a),r.prototype.processChunk=function(o){this.push({data:i.transformTo(this.destType,o.data),meta:o.meta})},t.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,n){"use strict";var a=e("./GenericWorker"),i=e("../crc32");function r(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(r,a),r.prototype.processChunk=function(o){this.streamInfo.crc32=i(o.data,this.streamInfo.crc32||0),this.push(o)},t.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./GenericWorker");function r(o){i.call(this,"DataLengthProbe for "+o),this.propName=o,this.withStreamInfo(o,0)}a.inherits(r,i),r.prototype.processChunk=function(o){if(o){var s=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=s+o.data.length}i.prototype.processChunk.call(this,o)},t.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./GenericWorker");function r(o){i.call(this,"DataWorker");var s=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,o.then(function(p){s.dataIsReady=!0,s.data=p,s.max=p&&p.length||0,s.type=a.getTypeOf(p),s.isPaused||s._tickAndRepeat()},function(p){s.error(p)})}a.inherits(r,i),r.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var o=null,s=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":o=this.data.substring(this.index,s);break;case"uint8array":o=this.data.subarray(this.index,s);break;case"array":case"nodebuffer":o=this.data.slice(this.index,s)}return this.index=s,this.push({data:o,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,n){"use strict";function a(i){this.name=i||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(i){this.emit("data",i)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(i){this.emit("error",i)}return!0},error:function(i){return!this.isFinished&&(this.isPaused?this.generatedError=i:(this.isFinished=!0,this.emit("error",i),this.previous&&this.previous.error(i),this.cleanUp()),!0)},on:function(i,r){return this._listeners[i].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(i,r){if(this._listeners[i])for(var o=0;o "+i:i}},t.exports=a},{}],29:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./ConvertWorker"),r=e("./GenericWorker"),o=e("../base64"),s=e("../support"),p=e("../external"),l=null;if(s.nodestream)try{l=e("../nodejs/NodejsStreamOutputAdapter")}catch{}function c(h,g){return new p.Promise(function(f,x){var v=[],_=h._internalType,S=h._outputType,C=h._mimeType;h.on("data",function(z,F){v.push(z),g&&g(F)}).on("error",function(z){v=[],x(z)}).on("end",function(){try{var z=function(F,U,I){switch(F){case"blob":return a.newBlob(a.transformTo("arraybuffer",U),I);case"base64":return o.encode(U);default:return a.transformTo(F,U)}}(S,function(F,U){var I,D=0,Y=null,k=0;for(I=0;I>>6:(f<65536?g[_++]=224|f>>>12:(g[_++]=240|f>>>18,g[_++]=128|f>>>12&63),g[_++]=128|f>>>6&63),g[_++]=128|63&f);return g}(d)},n.utf8decode=function(d){return i.nodebuffer?a.transformTo("nodebuffer",d).toString("utf-8"):function(h){var g,f,x,v,_=h.length,S=new Array(2*_);for(g=f=0;g<_;)if((x=h[g++])<128)S[f++]=x;else if(4<(v=s[x]))S[f++]=65533,g+=v-1;else{for(x&=v===2?31:v===3?15:7;1>10&1023,S[f++]=56320|1023&x)}return S.length!==f&&(S.subarray?S=S.subarray(0,f):S.length=f),a.applyFromCharCode(S)}(d=a.transformTo(i.uint8array?"uint8array":"array",d))},a.inherits(l,o),l.prototype.processChunk=function(d){var h=a.transformTo(i.uint8array?"uint8array":"array",d.data);if(this.leftOver&&this.leftOver.length){if(i.uint8array){var g=h;(h=new Uint8Array(g.length+this.leftOver.length)).set(this.leftOver,0),h.set(g,this.leftOver.length)}else h=this.leftOver.concat(h);this.leftOver=null}var f=function(v,_){var S;for((_=_||v.length)>v.length&&(_=v.length),S=_-1;0<=S&&(192&v[S])==128;)S--;return S<0||S===0?_:S+s[v[S]]>_?S:_}(h),x=h;f!==h.length&&(i.uint8array?(x=h.subarray(0,f),this.leftOver=h.subarray(f,h.length)):(x=h.slice(0,f),this.leftOver=h.slice(f,h.length))),this.push({data:n.utf8decode(x),meta:d.meta})},l.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=l,a.inherits(c,o),c.prototype.processChunk=function(d){this.push({data:n.utf8encode(d.data),meta:d.meta})},n.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,n){"use strict";var a=e("./support"),i=e("./base64"),r=e("./nodejsUtils"),o=e("set-immediate-shim"),s=e("./external");function p(f){return f}function l(f,x){for(var v=0;v>8;this.dir=!!(16&this.externalFileAttributes),d==0&&(this.dosPermissions=63&this.externalFileAttributes),d==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(d){if(this.extraFields[1]){var h=a(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=h.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=h.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=h.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=h.readInt(4))}},readExtraFields:function(d){var h,g,f,x=d.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});d.index+4>>6:(d<65536?c[f++]=224|d>>>12:(c[f++]=240|d>>>18,c[f++]=128|d>>>12&63),c[f++]=128|d>>>6&63),c[f++]=128|63&d);return c},n.buf2binstring=function(l){return p(l,l.length)},n.binstring2buf=function(l){for(var c=new a.Buf8(l.length),d=0,h=c.length;d>10&1023,v[h++]=56320|1023&g)}return p(v,h)},n.utf8border=function(l,c){var d;for((c=c||l.length)>l.length&&(c=l.length),d=c-1;0<=d&&(192&l[d])==128;)d--;return d<0||d===0?c:d+o[l[d]]>c?d:c}},{"./common":41}],43:[function(e,t,n){"use strict";t.exports=function(a,i,r,o){for(var s=65535&a|0,p=a>>>16&65535|0,l=0;r!==0;){for(r-=l=2e3>>1:i>>>1;r[o]=i}return r}();t.exports=function(i,r,o,s){var p=a,l=s+o;i^=-1;for(var c=s;c>>8^p[255&(i^r[c])];return-1^i}},{}],46:[function(e,t,n){"use strict";var a,i=e("../utils/common"),r=e("./trees"),o=e("./adler32"),s=e("./crc32"),p=e("./messages"),l=0,c=4,d=0,h=-2,g=-1,f=4,x=2,v=8,_=9,S=286,C=30,z=19,F=2*S+1,U=15,I=3,D=258,Y=D+I+1,k=42,E=113,m=1,P=2,J=3,N=4;function ae(u,B){return u.msg=p[B],B}function W(u){return(u<<1)-(4u.avail_out&&(M=u.avail_out),M!==0&&(i.arraySet(u.output,B.pending_buf,B.pending_out,M,u.next_out),u.next_out+=M,B.pending_out+=M,u.total_out+=M,u.avail_out-=M,B.pending-=M,B.pending===0&&(B.pending_out=0))}function L(u,B){r._tr_flush_block(u,0<=u.block_start?u.block_start:-1,u.strstart-u.block_start,B),u.block_start=u.strstart,A(u.strm)}function ee(u,B){u.pending_buf[u.pending++]=B}function G(u,B){u.pending_buf[u.pending++]=B>>>8&255,u.pending_buf[u.pending++]=255&B}function q(u,B){var M,y,b=u.max_chain_length,w=u.strstart,T=u.prev_length,O=u.nice_match,j=u.strstart>u.w_size-Y?u.strstart-(u.w_size-Y):0,R=u.window,Z=u.w_mask,V=u.prev,Q=u.strstart+D,pe=R[w+T-1],oe=R[w+T];u.prev_length>=u.good_match&&(b>>=2),O>u.lookahead&&(O=u.lookahead);do if(R[(M=B)+T]===oe&&R[M+T-1]===pe&&R[M]===R[w]&&R[++M]===R[w+1]){w+=2,M++;do;while(R[++w]===R[++M]&&R[++w]===R[++M]&&R[++w]===R[++M]&&R[++w]===R[++M]&&R[++w]===R[++M]&&R[++w]===R[++M]&&R[++w]===R[++M]&&R[++w]===R[++M]&&wj&&--b!=0);return T<=u.lookahead?T:u.lookahead}function de(u){var B,M,y,b,w,T,O,j,R,Z,V=u.w_size;do{if(b=u.window_size-u.lookahead-u.strstart,u.strstart>=V+(V-Y)){for(i.arraySet(u.window,u.window,V,V,0),u.match_start-=V,u.strstart-=V,u.block_start-=V,B=M=u.hash_size;y=u.head[--B],u.head[B]=V<=y?y-V:0,--M;);for(B=M=V;y=u.prev[--B],u.prev[B]=V<=y?y-V:0,--M;);b+=V}if(u.strm.avail_in===0)break;if(T=u.strm,O=u.window,j=u.strstart+u.lookahead,R=b,Z=void 0,Z=T.avail_in,R=I)for(w=u.strstart-u.insert,u.ins_h=u.window[w],u.ins_h=(u.ins_h<=I&&(u.ins_h=(u.ins_h<=I)if(y=r._tr_tally(u,u.strstart-u.match_start,u.match_length-I),u.lookahead-=u.match_length,u.match_length<=u.max_lazy_match&&u.lookahead>=I){for(u.match_length--;u.strstart++,u.ins_h=(u.ins_h<=I&&(u.ins_h=(u.ins_h<=I&&u.match_length<=u.prev_length){for(b=u.strstart+u.lookahead-I,y=r._tr_tally(u,u.strstart-1-u.prev_match,u.prev_length-I),u.lookahead-=u.prev_length-1,u.prev_length-=2;++u.strstart<=b&&(u.ins_h=(u.ins_h<u.pending_buf_size-5&&(M=u.pending_buf_size-5);;){if(u.lookahead<=1){if(de(u),u.lookahead===0&&B===l)return m;if(u.lookahead===0)break}u.strstart+=u.lookahead,u.lookahead=0;var y=u.block_start+M;if((u.strstart===0||u.strstart>=y)&&(u.lookahead=u.strstart-y,u.strstart=y,L(u,!1),u.strm.avail_out===0)||u.strstart-u.block_start>=u.w_size-Y&&(L(u,!1),u.strm.avail_out===0))return m}return u.insert=0,B===c?(L(u,!0),u.strm.avail_out===0?J:N):(u.strstart>u.block_start&&(L(u,!1),u.strm.avail_out),m)}),new se(4,4,8,4,ve),new se(4,5,16,8,ve),new se(4,6,32,32,ve),new se(4,4,16,16,re),new se(8,16,32,32,re),new se(8,16,128,128,re),new se(8,32,128,256,re),new se(32,128,258,1024,re),new se(32,258,258,4096,re)],n.deflateInit=function(u,B){return Ae(u,B,v,15,8,0)},n.deflateInit2=Ae,n.deflateReset=ze,n.deflateResetKeep=me,n.deflateSetHeader=function(u,B){return u&&u.state?u.state.wrap!==2?h:(u.state.gzhead=B,d):h},n.deflate=function(u,B){var M,y,b,w;if(!u||!u.state||5>8&255),ee(y,y.gzhead.time>>16&255),ee(y,y.gzhead.time>>24&255),ee(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),ee(y,255&y.gzhead.os),y.gzhead.extra&&y.gzhead.extra.length&&(ee(y,255&y.gzhead.extra.length),ee(y,y.gzhead.extra.length>>8&255)),y.gzhead.hcrc&&(u.adler=s(u.adler,y.pending_buf,y.pending,0)),y.gzindex=0,y.status=69):(ee(y,0),ee(y,0),ee(y,0),ee(y,0),ee(y,0),ee(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),ee(y,3),y.status=E);else{var T=v+(y.w_bits-8<<4)<<8;T|=(2<=y.strategy||y.level<2?0:y.level<6?1:y.level===6?2:3)<<6,y.strstart!==0&&(T|=32),T+=31-T%31,y.status=E,G(y,T),y.strstart!==0&&(G(y,u.adler>>>16),G(y,65535&u.adler)),u.adler=1}if(y.status===69)if(y.gzhead.extra){for(b=y.pending;y.gzindex<(65535&y.gzhead.extra.length)&&(y.pending!==y.pending_buf_size||(y.gzhead.hcrc&&y.pending>b&&(u.adler=s(u.adler,y.pending_buf,y.pending-b,b)),A(u),b=y.pending,y.pending!==y.pending_buf_size));)ee(y,255&y.gzhead.extra[y.gzindex]),y.gzindex++;y.gzhead.hcrc&&y.pending>b&&(u.adler=s(u.adler,y.pending_buf,y.pending-b,b)),y.gzindex===y.gzhead.extra.length&&(y.gzindex=0,y.status=73)}else y.status=73;if(y.status===73)if(y.gzhead.name){b=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>b&&(u.adler=s(u.adler,y.pending_buf,y.pending-b,b)),A(u),b=y.pending,y.pending===y.pending_buf_size)){w=1;break}w=y.gzindexb&&(u.adler=s(u.adler,y.pending_buf,y.pending-b,b)),w===0&&(y.gzindex=0,y.status=91)}else y.status=91;if(y.status===91)if(y.gzhead.comment){b=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>b&&(u.adler=s(u.adler,y.pending_buf,y.pending-b,b)),A(u),b=y.pending,y.pending===y.pending_buf_size)){w=1;break}w=y.gzindexb&&(u.adler=s(u.adler,y.pending_buf,y.pending-b,b)),w===0&&(y.status=103)}else y.status=103;if(y.status===103&&(y.gzhead.hcrc?(y.pending+2>y.pending_buf_size&&A(u),y.pending+2<=y.pending_buf_size&&(ee(y,255&u.adler),ee(y,u.adler>>8&255),u.adler=0,y.status=E)):y.status=E),y.pending!==0){if(A(u),u.avail_out===0)return y.last_flush=-1,d}else if(u.avail_in===0&&W(B)<=W(M)&&B!==c)return ae(u,-5);if(y.status===666&&u.avail_in!==0)return ae(u,-5);if(u.avail_in!==0||y.lookahead!==0||B!==l&&y.status!==666){var O=y.strategy===2?function(j,R){for(var Z;;){if(j.lookahead===0&&(de(j),j.lookahead===0)){if(R===l)return m;break}if(j.match_length=0,Z=r._tr_tally(j,0,j.window[j.strstart]),j.lookahead--,j.strstart++,Z&&(L(j,!1),j.strm.avail_out===0))return m}return j.insert=0,R===c?(L(j,!0),j.strm.avail_out===0?J:N):j.last_lit&&(L(j,!1),j.strm.avail_out===0)?m:P}(y,B):y.strategy===3?function(j,R){for(var Z,V,Q,pe,oe=j.window;;){if(j.lookahead<=D){if(de(j),j.lookahead<=D&&R===l)return m;if(j.lookahead===0)break}if(j.match_length=0,j.lookahead>=I&&0j.lookahead&&(j.match_length=j.lookahead)}if(j.match_length>=I?(Z=r._tr_tally(j,1,j.match_length-I),j.lookahead-=j.match_length,j.strstart+=j.match_length,j.match_length=0):(Z=r._tr_tally(j,0,j.window[j.strstart]),j.lookahead--,j.strstart++),Z&&(L(j,!1),j.strm.avail_out===0))return m}return j.insert=0,R===c?(L(j,!0),j.strm.avail_out===0?J:N):j.last_lit&&(L(j,!1),j.strm.avail_out===0)?m:P}(y,B):a[y.level].func(y,B);if(O!==J&&O!==N||(y.status=666),O===m||O===J)return u.avail_out===0&&(y.last_flush=-1),d;if(O===P&&(B===1?r._tr_align(y):B!==5&&(r._tr_stored_block(y,0,0,!1),B===3&&(te(y.head),y.lookahead===0&&(y.strstart=0,y.block_start=0,y.insert=0))),A(u),u.avail_out===0))return y.last_flush=-1,d}return B!==c?d:y.wrap<=0?1:(y.wrap===2?(ee(y,255&u.adler),ee(y,u.adler>>8&255),ee(y,u.adler>>16&255),ee(y,u.adler>>24&255),ee(y,255&u.total_in),ee(y,u.total_in>>8&255),ee(y,u.total_in>>16&255),ee(y,u.total_in>>24&255)):(G(y,u.adler>>>16),G(y,65535&u.adler)),A(u),0=M.w_size&&(w===0&&(te(M.head),M.strstart=0,M.block_start=0,M.insert=0),R=new i.Buf8(M.w_size),i.arraySet(R,B,Z-M.w_size,M.w_size,0),B=R,Z=M.w_size),T=u.avail_in,O=u.next_in,j=u.input,u.avail_in=Z,u.next_in=0,u.input=B,de(M);M.lookahead>=I;){for(y=M.strstart,b=M.lookahead-(I-1);M.ins_h=(M.ins_h<>>=I=U>>>24,_-=I,(I=U>>>16&255)==0)P[p++]=65535&U;else{if(!(16&I)){if((64&I)==0){U=S[(65535&U)+(v&(1<>>=I,_-=I),_<15&&(v+=m[o++]<<_,_+=8,v+=m[o++]<<_,_+=8),U=C[v&F];n:for(;;){if(v>>>=I=U>>>24,_-=I,!(16&(I=U>>>16&255))){if((64&I)==0){U=C[(65535&U)+(v&(1<>>=I,_-=I,(I=p-l)>3,v&=(1<<(_-=D<<3))-1,a.next_in=o,a.next_out=p,a.avail_in=o>>24&255)+(k>>>8&65280)+((65280&k)<<8)+((255&k)<<24)}function v(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function _(k){var E;return k&&k.state?(E=k.state,k.total_in=k.total_out=E.total=0,k.msg="",E.wrap&&(k.adler=1&E.wrap),E.mode=h,E.last=0,E.havedict=0,E.dmax=32768,E.head=null,E.hold=0,E.bits=0,E.lencode=E.lendyn=new a.Buf32(g),E.distcode=E.distdyn=new a.Buf32(f),E.sane=1,E.back=-1,c):d}function S(k){var E;return k&&k.state?((E=k.state).wsize=0,E.whave=0,E.wnext=0,_(k)):d}function C(k,E){var m,P;return k&&k.state?(P=k.state,E<0?(m=0,E=-E):(m=1+(E>>4),E<48&&(E&=15)),E&&(E<8||15=N.wsize?(a.arraySet(N.window,E,m-N.wsize,N.wsize,0),N.wnext=0,N.whave=N.wsize):(P<(J=N.wsize-N.wnext)&&(J=P),a.arraySet(N.window,E,m-P,J,N.wnext),(P-=J)?(a.arraySet(N.window,E,m-P,P,0),N.wnext=P,N.whave=N.wsize):(N.wnext+=J,N.wnext===N.wsize&&(N.wnext=0),N.whave>>8&255,m.check=r(m.check,w,2,0),L=A=0,m.mode=2;break}if(m.flags=0,m.head&&(m.head.done=!1),!(1&m.wrap)||(((255&A)<<8)+(A>>8))%31){k.msg="incorrect header check",m.mode=30;break}if((15&A)!=8){k.msg="unknown compression method",m.mode=30;break}if(L-=4,u=8+(15&(A>>>=4)),m.wbits===0)m.wbits=u;else if(u>m.wbits){k.msg="invalid window size",m.mode=30;break}m.dmax=1<>8&1),512&m.flags&&(w[0]=255&A,w[1]=A>>>8&255,m.check=r(m.check,w,2,0)),L=A=0,m.mode=3;case 3:for(;L<32;){if(W===0)break e;W--,A+=P[N++]<>>8&255,w[2]=A>>>16&255,w[3]=A>>>24&255,m.check=r(m.check,w,4,0)),L=A=0,m.mode=4;case 4:for(;L<16;){if(W===0)break e;W--,A+=P[N++]<>8),512&m.flags&&(w[0]=255&A,w[1]=A>>>8&255,m.check=r(m.check,w,2,0)),L=A=0,m.mode=5;case 5:if(1024&m.flags){for(;L<16;){if(W===0)break e;W--,A+=P[N++]<>>8&255,m.check=r(m.check,w,2,0)),L=A=0}else m.head&&(m.head.extra=null);m.mode=6;case 6:if(1024&m.flags&&(W<(q=m.length)&&(q=W),q&&(m.head&&(u=m.head.extra_len-m.length,m.head.extra||(m.head.extra=new Array(m.head.extra_len)),a.arraySet(m.head.extra,P,N,q,u)),512&m.flags&&(m.check=r(m.check,P,q,N)),W-=q,N+=q,m.length-=q),m.length))break e;m.length=0,m.mode=7;case 7:if(2048&m.flags){if(W===0)break e;for(q=0;u=P[N+q++],m.head&&u&&m.length<65536&&(m.head.name+=String.fromCharCode(u)),u&&q>9&1,m.head.done=!0),k.adler=m.check=0,m.mode=12;break;case 10:for(;L<32;){if(W===0)break e;W--,A+=P[N++]<>>=7&L,L-=7&L,m.mode=27;break}for(;L<3;){if(W===0)break e;W--,A+=P[N++]<>>=1)){case 0:m.mode=14;break;case 1:if(D(m),m.mode=20,E!==6)break;A>>>=2,L-=2;break e;case 2:m.mode=17;break;case 3:k.msg="invalid block type",m.mode=30}A>>>=2,L-=2;break;case 14:for(A>>>=7&L,L-=7&L;L<32;){if(W===0)break e;W--,A+=P[N++]<>>16^65535)){k.msg="invalid stored block lengths",m.mode=30;break}if(m.length=65535&A,L=A=0,m.mode=15,E===6)break e;case 15:m.mode=16;case 16:if(q=m.length){if(W>>=5,L-=5,m.ndist=1+(31&A),A>>>=5,L-=5,m.ncode=4+(15&A),A>>>=4,L-=4,286>>=3,L-=3}for(;m.have<19;)m.lens[T[m.have++]]=0;if(m.lencode=m.lendyn,m.lenbits=7,M={bits:m.lenbits},B=s(0,m.lens,0,19,m.lencode,0,m.work,M),m.lenbits=M.bits,B){k.msg="invalid code lengths set",m.mode=30;break}m.have=0,m.mode=19;case 19:for(;m.have>>16&255,ge=65535&b,!((re=b>>>24)<=L);){if(W===0)break e;W--,A+=P[N++]<>>=re,L-=re,m.lens[m.have++]=ge;else{if(ge===16){for(y=re+2;L>>=re,L-=re,m.have===0){k.msg="invalid bit length repeat",m.mode=30;break}u=m.lens[m.have-1],q=3+(3&A),A>>>=2,L-=2}else if(ge===17){for(y=re+3;L>>=re)),A>>>=3,L-=3}else{for(y=re+7;L>>=re)),A>>>=7,L-=7}if(m.have+q>m.nlen+m.ndist){k.msg="invalid bit length repeat",m.mode=30;break}for(;q--;)m.lens[m.have++]=u}}if(m.mode===30)break;if(m.lens[256]===0){k.msg="invalid code -- missing end-of-block",m.mode=30;break}if(m.lenbits=9,M={bits:m.lenbits},B=s(p,m.lens,0,m.nlen,m.lencode,0,m.work,M),m.lenbits=M.bits,B){k.msg="invalid literal/lengths set",m.mode=30;break}if(m.distbits=6,m.distcode=m.distdyn,M={bits:m.distbits},B=s(l,m.lens,m.nlen,m.ndist,m.distcode,0,m.work,M),m.distbits=M.bits,B){k.msg="invalid distances set",m.mode=30;break}if(m.mode=20,E===6)break e;case 20:m.mode=21;case 21:if(6<=W&&258<=te){k.next_out=ae,k.avail_out=te,k.next_in=N,k.avail_in=W,m.hold=A,m.bits=L,o(k,G),ae=k.next_out,J=k.output,te=k.avail_out,N=k.next_in,P=k.input,W=k.avail_in,A=m.hold,L=m.bits,m.mode===12&&(m.back=-1);break}for(m.back=0;se=(b=m.lencode[A&(1<>>16&255,ge=65535&b,!((re=b>>>24)<=L);){if(W===0)break e;W--,A+=P[N++]<>me)])>>>16&255,ge=65535&b,!(me+(re=b>>>24)<=L);){if(W===0)break e;W--,A+=P[N++]<>>=me,L-=me,m.back+=me}if(A>>>=re,L-=re,m.back+=re,m.length=ge,se===0){m.mode=26;break}if(32&se){m.back=-1,m.mode=12;break}if(64&se){k.msg="invalid literal/length code",m.mode=30;break}m.extra=15&se,m.mode=22;case 22:if(m.extra){for(y=m.extra;L>>=m.extra,L-=m.extra,m.back+=m.extra}m.was=m.length,m.mode=23;case 23:for(;se=(b=m.distcode[A&(1<>>16&255,ge=65535&b,!((re=b>>>24)<=L);){if(W===0)break e;W--,A+=P[N++]<>me)])>>>16&255,ge=65535&b,!(me+(re=b>>>24)<=L);){if(W===0)break e;W--,A+=P[N++]<>>=me,L-=me,m.back+=me}if(A>>>=re,L-=re,m.back+=re,64&se){k.msg="invalid distance code",m.mode=30;break}m.offset=ge,m.extra=15&se,m.mode=24;case 24:if(m.extra){for(y=m.extra;L>>=m.extra,L-=m.extra,m.back+=m.extra}if(m.offset>m.dmax){k.msg="invalid distance too far back",m.mode=30;break}m.mode=25;case 25:if(te===0)break e;if(q=G-te,m.offset>q){if((q=m.offset-q)>m.whave&&m.sane){k.msg="invalid distance too far back",m.mode=30;break}de=q>m.wnext?(q-=m.wnext,m.wsize-q):m.wnext-q,q>m.length&&(q=m.length),ve=m.window}else ve=J,de=ae-m.offset,q=m.length;for(teF?(I=de[ve+f[E]],L[ee+f[E]]):(I=96,0),v=1<>ae)+(_-=v)]=U<<24|I<<16|D|0,_!==0;);for(v=1<>=1;if(v!==0?(A&=v-1,A+=v):A=0,E++,--G[k]==0){if(k===P)break;k=l[c+f[E]]}if(J>>7)]}function ee(b,w){b.pending_buf[b.pending++]=255&w,b.pending_buf[b.pending++]=w>>>8&255}function G(b,w,T){b.bi_valid>x-T?(b.bi_buf|=w<>x-b.bi_valid,b.bi_valid+=T-x):(b.bi_buf|=w<>>=1,T<<=1,0<--w;);return T>>>1}function ve(b,w,T){var O,j,R=new Array(f+1),Z=0;for(O=1;O<=f;O++)R[O]=Z=Z+T[O-1]<<1;for(j=0;j<=w;j++){var V=b[2*j+1];V!==0&&(b[2*j]=de(R[V]++,V))}}function re(b){var w;for(w=0;w>1;1<=T;T--)me(b,R,T);for(j=Q;T=b.heap[1],b.heap[1]=b.heap[b.heap_len--],me(b,R,1),O=b.heap[1],b.heap[--b.heap_max]=T,b.heap[--b.heap_max]=O,R[2*j]=R[2*T]+R[2*O],b.depth[j]=(b.depth[T]>=b.depth[O]?b.depth[T]:b.depth[O])+1,R[2*T+1]=R[2*O+1]=j,b.heap[1]=j++,me(b,R,1),2<=b.heap_len;);b.heap[--b.heap_max]=b.heap[1],function(oe,Ce){var At,Be,Mt,fe,Xt,Vn,De=Ce.dyn_tree,zi=Ce.max_code,np=Ce.stat_desc.static_tree,ap=Ce.stat_desc.has_stree,ip=Ce.stat_desc.extra_bits,Bi=Ce.stat_desc.extra_base,Ft=Ce.stat_desc.max_length,Jt=0;for(fe=0;fe<=f;fe++)oe.bl_count[fe]=0;for(De[2*oe.heap[oe.heap_max]+1]=0,At=oe.heap_max+1;At>=7;j>>=1)if(1&pe&&V.dyn_ltree[2*Q]!==0)return i;if(V.dyn_ltree[18]!==0||V.dyn_ltree[20]!==0||V.dyn_ltree[26]!==0)return r;for(Q=32;Q>>3,(R=b.static_len+3+7>>>3)<=j&&(j=R)):j=R=T+5,T+4<=j&&w!==-1?y(b,w,T,O):b.strategy===4||R===j?(G(b,2+(O?1:0),3),ze(b,Y,k)):(G(b,4+(O?1:0),3),function(V,Q,pe,oe){var Ce;for(G(V,Q-257,5),G(V,pe-1,5),G(V,oe-4,4),Ce=0;Ce>>8&255,b.pending_buf[b.d_buf+2*b.last_lit+1]=255&w,b.pending_buf[b.l_buf+b.last_lit]=255&T,b.last_lit++,w===0?b.dyn_ltree[2*T]++:(b.matches++,w--,b.dyn_ltree[2*(m[T]+l+1)]++,b.dyn_dtree[2*L(w)]++),b.last_lit===b.lit_bufsize-1},n._tr_align=function(b){G(b,2,3),q(b,_,Y),function(w){w.bi_valid===16?(ee(w,w.bi_buf),w.bi_buf=0,w.bi_valid=0):8<=w.bi_valid&&(w.pending_buf[w.pending++]=255&w.bi_buf,w.bi_buf>>=8,w.bi_valid-=8)}(b)}},{"../utils/common":41}],53:[function(e,t,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,n){"use strict";t.exports=typeof setImmediate=="function"?setImmediate:function(){var a=[].slice.apply(arguments);a.splice(1,0,0),setTimeout.apply(null,a)}},{}]},{},[10])(10)})});var oc=K((Z2,rc)=>{rc.exports={aqua:/#00ffff(ff)?(?!\w)|#0ff(f)?(?!\w)/gi,azure:/#f0ffff(ff)?(?!\w)/gi,beige:/#f5f5dc(ff)?(?!\w)/gi,bisque:/#ffe4c4(ff)?(?!\w)/gi,black:/#000000(ff)?(?!\w)|#000(f)?(?!\w)/gi,blue:/#0000ff(ff)?(?!\w)|#00f(f)?(?!\w)/gi,brown:/#a52a2a(ff)?(?!\w)/gi,coral:/#ff7f50(ff)?(?!\w)/gi,cornsilk:/#fff8dc(ff)?(?!\w)/gi,crimson:/#dc143c(ff)?(?!\w)/gi,cyan:/#00ffff(ff)?(?!\w)|#0ff(f)?(?!\w)/gi,darkblue:/#00008b(ff)?(?!\w)/gi,darkcyan:/#008b8b(ff)?(?!\w)/gi,darkgrey:/#a9a9a9(ff)?(?!\w)/gi,darkred:/#8b0000(ff)?(?!\w)/gi,deeppink:/#ff1493(ff)?(?!\w)/gi,dimgrey:/#696969(ff)?(?!\w)/gi,gold:/#ffd700(ff)?(?!\w)/gi,green:/#008000(ff)?(?!\w)/gi,grey:/#808080(ff)?(?!\w)/gi,honeydew:/#f0fff0(ff)?(?!\w)/gi,hotpink:/#ff69b4(ff)?(?!\w)/gi,indigo:/#4b0082(ff)?(?!\w)/gi,ivory:/#fffff0(ff)?(?!\w)/gi,khaki:/#f0e68c(ff)?(?!\w)/gi,lavender:/#e6e6fa(ff)?(?!\w)/gi,lime:/#00ff00(ff)?(?!\w)|#0f0(f)?(?!\w)/gi,linen:/#faf0e6(ff)?(?!\w)/gi,maroon:/#800000(ff)?(?!\w)/gi,moccasin:/#ffe4b5(ff)?(?!\w)/gi,navy:/#000080(ff)?(?!\w)/gi,oldlace:/#fdf5e6(ff)?(?!\w)/gi,olive:/#808000(ff)?(?!\w)/gi,orange:/#ffa500(ff)?(?!\w)/gi,orchid:/#da70d6(ff)?(?!\w)/gi,peru:/#cd853f(ff)?(?!\w)/gi,pink:/#ffc0cb(ff)?(?!\w)/gi,plum:/#dda0dd(ff)?(?!\w)/gi,purple:/#800080(ff)?(?!\w)/gi,red:/#ff0000(ff)?(?!\w)|#f00(f)?(?!\w)/gi,salmon:/#fa8072(ff)?(?!\w)/gi,seagreen:/#2e8b57(ff)?(?!\w)/gi,seashell:/#fff5ee(ff)?(?!\w)/gi,sienna:/#a0522d(ff)?(?!\w)/gi,silver:/#c0c0c0(ff)?(?!\w)/gi,skyblue:/#87ceeb(ff)?(?!\w)/gi,snow:/#fffafa(ff)?(?!\w)/gi,tan:/#d2b48c(ff)?(?!\w)/gi,teal:/#008080(ff)?(?!\w)/gi,thistle:/#d8bfd8(ff)?(?!\w)/gi,tomato:/#ff6347(ff)?(?!\w)/gi,violet:/#ee82ee(ff)?(?!\w)/gi,wheat:/#f5deb3(ff)?(?!\w)/gi,white:/#ffffff(ff)?(?!\w)|#fff(f)?(?!\w)/gi}});var cc=K((K2,sc)=>{var Ba=oc(),Pa={whitespace:/\s+/g,urlHexPairs:/%[\dA-F]{2}/g,quotes:/"/g};function dh(e){return e.trim().replace(Pa.whitespace," ")}function mh(e){return encodeURIComponent(e).replace(Pa.urlHexPairs,hh)}function fh(e){return Object.keys(Ba).forEach(function(t){Ba[t].test(e)&&(e=e.replace(Ba[t],t))}),e}function hh(e){switch(e){case"%20":return" ";case"%3D":return"=";case"%3A":return":";case"%2F":return"/";default:return e.toLowerCase()}}function Ta(e){if(typeof e!="string")throw new TypeError("Expected a string, but received "+typeof e);e.charCodeAt(0)===65279&&(e=e.slice(1));var t=fh(dh(e)).replace(Pa.quotes,"'");return"data:image/svg+xml,"+mh(t)}Ta.toSrcset=function(t){return Ta(t).replace(/ /g,"%20")};sc.exports=Ta});Ni(exports,{default:()=>Ei});var ep=ie(require("obsidian"));var Vi=ie(require("@codemirror/view")),Hi=ie(require("@codemirror/view")),$n=ie(require("obsidian"));var tn=ie(require("@codemirror/view")),Wi=ie(require("obsidian"));var Di=ie(require("@codemirror/view")),rt=class extends Di.WidgetType{constructor(t,n){super();this.id=t;this.plugin=n}eq(t){return t instanceof rt&&t.id===this.id}toDOM(t){let n=createSpan({cls:"cm-isc-icon",attr:{"aria-label":this.id.replace(/_/g," ")}});return this.plugin.packManager.getSVGIcon(this.id).then(a=>{a?(a.classList.forEach(i=>n.addClass(i)),n.replaceChildren(...a.childNodes)):n.append(`:${this.id}:`)}),n}ignoreEvent(){return!1}};var dp=(e,t)=>{let n=[],a=e.state.field(t.shortcodePosField);for(let{from:i,to:r}of e.visibleRanges)a.between(i,r,(o,s,{iconId:p})=>{n.push([p,o,s])});return tn.Decoration.set(n.map(([i,r,o])=>{let p={widget:new rt(i,t),side:-1,from:r,to:o};return e.state.field(Wi.editorLivePreviewField)?tn.Decoration.replace(p).range(r,o):tn.Decoration.widget(p).range(o)}),!0)},qn=dp;var Ri=ie(require("obsidian")),mp=(e,t,n,a)=>new Ri.Menu(n.app).addItem(i=>i.setIcon("image-glyph").setTitle("Change Icon").onClick(()=>$(void 0,null,function*(){let r=yield n.api.getIconFromUser();!r||a.dispatch({changes:{from:e,to:t,insert:`:${r.id}:`}})}))).addItem(i=>i.setIcon("trash").setTitle("Delete Icon").onClick(()=>{a.dispatch({changes:{from:e,to:t,insert:""}})})),Ui=mp;var fp=e=>{class t{constructor(i){this.plugin=e,this.decorations=qn(i,this.plugin)}update(i){let r=i.startState.field($n.editorLivePreviewField),o=i.state.field($n.editorLivePreviewField);(i.docChanged||i.viewportChanged||r!==o)&&(this.decorations=qn(i.view,e))}}return Hi.ViewPlugin.fromClass(t,{eventHandlers:{mousedown:n},decorations:a=>a.decorations,provide:Vi.PluginField.atomicRanges.from(a=>a.decorations)});function n(a,i){let r=a.target;if(r.matchParent(".cm-isc-icon",i.contentDOM)){let o=i.posAtDOM(r),s=-1,p=-1;if(this.decorations.between(o-1,o+1,(l,c,d)=>{if(o>=l&&o<=c){l===c?(s=d.spec.from,p=d.spec.to):(s=l,p=c);return}}),s<0||p<0){console.error("no range found for",r);return}if(qi(0).then(()=>i.dispatch({selection:{anchor:s,head:p}})),a.button===0||a.button===1){let l=Ui(s,p,e,i);qi(200).then(()=>l.showAtMouseEvent(a))}}}},qi=e=>new Promise(t=>setTimeout(t,e)),$i=fp;var hp=e=>{e.registerEditorExtension([e.shortcodePosField,$i(e)])},Gi=hp;var ws=ie(require("@codemirror/language")),dn=ie(require("@codemirror/rangeset")),Cs=ie(require("@codemirror/state")),js=ie(require("@codemirror/stream-parser"));var sn=ie(tr()),bs=ie(Dt()),ks=ie(on());var{toString:yf}=Object.prototype;function da(e){return yf.call(e)==="[object RegExp]"}var vs={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function ma(e,t={}){if(!da(e))throw new TypeError("Expected a RegExp instance");let n=Object.keys(vs).map(i=>(typeof t[i]=="boolean"?t[i]:e[i])?vs[i]:"").join(""),a=new RegExp(t.source||e.source,n);return a.lastIndex=typeof t.lastIndex=="number"?t.lastIndex:e.lastIndex,a}var je=e=>{var t=e.indexOf(":");return t>-1?t===e.length-1?(e=e.substring(0,t),je(e)):(e=e.substring(t+1),je(e)):e},_f=/^([A-Za-z0-9]+?)_/,fa=e=>{if(bs.default.hasEmoji(e))return{pack:"emoji",name:e};let t=e.match(_f);if(!t)return console.error("No vaild pack id found in: ",e),null;let[n,a]=t;return{pack:a,name:e.substring(n.length)}},ha=e=>{let t=fa(e);return t?`${t.pack}_${ga(t.name)}`:(console.log("failed to rename icon: id %s invalid",e),null)},ga=e=>e.trim().replace(/[ -]+/g,"_").replace(/\s+/g,"").toLocaleLowerCase(),cn=[".bmp",".png",".jpg",".jpeg",".gif",".svg",".webp"],ys=/^[\w-]+\.(?:bmp|png|jpg|jpeg|gif|svg|webp)$/,ln=/\.(?:bmp|png|jpg|jpeg|gif|svg|webp)$/,kf=cn.map(e=>(0,sn.lookup)(e)),_s=e=>$(void 0,null,function*(){if(!e||e.length<=0)return null;let t=i=>$(void 0,null,function*(){return{name:i.name.replace(ln,""),ext:"."+(0,sn.extension)(i.type),data:yield i.arrayBuffer()}}),n=[];for(let i=0;i0?a:null}),ft=/:\+1:|:-1:|:[\w-]+:/,Wt=e=>ma(e,{global:!0}),ht=e=>(0,ks.default)(["isc-icon",`isc-${e.pack}`]);var wf=(e,t)=>pn(e,t[0])||pn(e,t[1]),pn=(e,t)=>e[0]t,Cf=(e,t)=>{let n=pn(e,t[0])?e[0]:t[0],a=pn(e,t[1])?e[1]:t[1];return[n,a]},jf=e=>e.sort((t,n)=>t[0]-n[0]).reduce((t,n)=>{let a=t.findIndex(i=>wf(i,n));return a!==-1?t[a]=Cf(t[a],n):t.push(n),t},[]),un=jf;var mn=class extends dn.RangeValue{constructor(t){super();this.text=t}get iconId(){return je(this.text)}eq(t){return t instanceof mn&&t.text===this.text}},Lf=["link-alias","comment","header","strong","em","strikethrough","quote","link","list-1","list-2","list-3","highlight","hmd-footref2","footref"],If=["formatting","comment-start","comment-end"],Sf=e=>{let t=e.prop(js.tokenClassNodeProp);if(!t)return!1;let n=new Set(t==null?void 0:t.split(" "));return If.every(a=>!n.has(a))&&Lf.some(a=>n.has(a))},Af=e=>{let t=(n,a,i,r)=>{let o=(p,l)=>{let c=n.doc.sliceString(p,l);if(!!c.trim())for(let{0:d,index:h}of c.matchAll(Wt(ft)))e.packManager.hasIcon(je(d))&&r(p+h,p+h+d.length,new mn(d))},s=a;(0,ws.syntaxTree)(n).iterate({from:a-1,to:i+1,enter:(p,l,c)=>{p.name!=="Document"&&(l!==s&&o(s,l),s=c,Sf(p)&&o(l,c))}}),s!==i&&o(s,i)};return Cs.StateField.define({create:n=>{let a=new dn.RangeSetBuilder;return t(n,0,n.doc.length,a.add.bind(a)),a.finish()},update:(n,a)=>{if(!a.docChanged)return n;n=n.map(a.changes);let i=[];a.changes.iterChangedRanges((o,s,p,l)=>{i.push([a.state.doc.lineAt(p).number,a.state.doc.lineAt(l).number])});let r=[];for(let[o,s]of un(i)){let{from:p}=a.state.doc.line(o),{to:l}=a.state.doc.line(s);n=n.update({filterFrom:p,filterTo:l,filter:()=>!1}),t(a.state,p,l,(c,d,h)=>{r.push(h.range(c,d))})}return n=n.update({add:r}),n}})},Ls=Af;var fn=class{constructor(t){this.plugin=t;this.cache=new Map}get vault(){return this.plugin.app.vault}getIcon(t){return $(this,null,function*(){let n=yield this.vault.adapter.stat(t);if(!n||n.type!=="file")return null;if(this.cache.has(t)){let i=this.cache.get(t);if(i.ctime===n.ctime&&i.mtime===n.mtime&&i.size===n.size)return i.svg.cloneNode(!0)}return(yield this.readIntoCache(t,n)).cloneNode(!0)})}readIntoCache(t,n){return $(this,null,function*(){let a=DOMPurify.sanitize(yield this.vault.adapter.read(t)),i=new DOMParser().parseFromString(a,"image/svg+xml").documentElement;return this.cache.set(t,Qe(Me({},n),{svg:i})),i})}refresh(){let t=n=>$(this,null,function*(){let a=yield this.vault.adapter.stat(n);return!a||a.type!=="file"?this.cache.delete(n):yield this.readIntoCache(n,a),n});return Promise.allSettled([...this.cache.keys()].map(t))}clear(){this.cache.clear()}};var xc=ie(xa());function Ue(e){return Array.isArray?Array.isArray(e):Ms(e)==="[object Array]"}var Mf=1/0;function Ff(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-Mf?"-0":t}function Ef(e){return e==null?"":Ff(e)}function Ve(e){return typeof e=="string"}function Ss(e){return typeof e=="number"}function zf(e){return e===!0||e===!1||Bf(e)&&Ms(e)=="[object Boolean]"}function As(e){return typeof e=="object"}function Bf(e){return As(e)&&e!==null}function ke(e){return e!=null}function va(e){return!e.trim().length}function Ms(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Pf="Incorrect 'index' type",Tf=e=>`Invalid value for key ${e}`,Of=e=>`Pattern length exceeds max of ${e}.`,Nf=e=>`Missing ${e} property in key`,Df=e=>`Property 'weight' in key '${e}' must be a positive integer`,Fs=Object.prototype.hasOwnProperty,Es=class{constructor(t){this._keys=[],this._keyMap={};let n=0;t.forEach(a=>{let i=zs(a);n+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,n+=i.weight}),this._keys.forEach(a=>{a.weight/=n})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function zs(e){let t=null,n=null,a=null,i=1;if(Ve(e)||Ue(e))a=e,t=Bs(e),n=ba(e);else{if(!Fs.call(e,"name"))throw new Error(Nf("name"));let r=e.name;if(a=r,Fs.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(Df(r));t=Bs(r),n=ba(r)}return{path:t,id:n,weight:i,src:a}}function Bs(e){return Ue(e)?e:e.split(".")}function ba(e){return Ue(e)?e.join("."):e}function Wf(e,t){let n=[],a=!1,i=(r,o,s)=>{if(!!ke(r))if(!o[s])n.push(r);else{let p=o[s],l=r[p];if(!ke(l))return;if(s===o.length-1&&(Ve(l)||Ss(l)||zf(l)))n.push(Ef(l));else if(Ue(l)){a=!0;for(let c=0,d=l.length;ce.score===t.score?e.idx{this._keysMap[n.id]=a})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,Ve(this.docs[0])?this.docs.forEach((t,n)=>{this._addString(t,n)}):this.docs.forEach((t,n)=>{this._addObject(t,n)}),this.norm.clear())}add(t){let n=this.size();Ve(t)?this._addString(t,n):this._addObject(t,n)}removeAt(t){this.records.splice(t,1);for(let n=t,a=this.size();n{let o=this.getFn(t,i.path);if(!!ke(o)){if(Ue(o)){let s=[],p=[{nestedArrIndex:-1,value:o}];for(;p.length;){let{nestedArrIndex:l,value:c}=p.pop();if(!!ke(c))if(Ve(c)&&!va(c)){let d={v:c,i:l,n:this.norm.get(c)};s.push(d)}else Ue(c)&&c.forEach((d,h)=>{p.push({nestedArrIndex:h,value:d})})}a.$[r]=s}else if(!va(o)){let s={v:o,n:this.norm.get(o)};a.$[r]=s}}}),this.records.push(a)}toJSON(){return{keys:this.keys,records:this.records}}};function Ps(e,t,{getFn:n=ne.getFn,fieldNormWeight:a=ne.fieldNormWeight}={}){let i=new gn({getFn:n,fieldNormWeight:a});return i.setKeys(e.map(zs)),i.setSources(t),i.create(),i}function Gf(e,{getFn:t=ne.getFn,fieldNormWeight:n=ne.fieldNormWeight}={}){let{keys:a,records:i}=e,r=new gn({getFn:t,fieldNormWeight:n});return r.setKeys(a),r.setIndexRecords(i),r}function xn(e,{errors:t=0,currentLocation:n=0,expectedLocation:a=0,distance:i=ne.distance,ignoreLocation:r=ne.ignoreLocation}={}){let o=t/e.length;if(r)return o;let s=Math.abs(a-n);return i?o+s/i:s?1:o}function Zf(e=[],t=ne.minMatchCharLength){let n=[],a=-1,i=-1,r=0;for(let o=e.length;r=t&&n.push([a,i]),a=-1)}return e[r-1]&&r-a>=t&&n.push([a,r-1]),n}var tt=32;function Kf(e,t,n,{location:a=ne.location,distance:i=ne.distance,threshold:r=ne.threshold,findAllMatches:o=ne.findAllMatches,minMatchCharLength:s=ne.minMatchCharLength,includeMatches:p=ne.includeMatches,ignoreLocation:l=ne.ignoreLocation}={}){if(t.length>tt)throw new Error(Of(tt));let c=t.length,d=e.length,h=Math.max(0,Math.min(a,d)),g=r,f=h,x=s>1||p,v=x?Array(d):[],_;for(;(_=e.indexOf(t,f))>-1;){let I=xn(t,{currentLocation:_,expectedLocation:h,distance:i,ignoreLocation:l});if(g=Math.min(I,g),f=_+c,x){let D=0;for(;D=k;J-=1){let N=J-1,ae=n[e.charAt(N)];if(x&&(v[N]=+!!ae),m[J]=(m[J+1]<<1|1)&ae,I&&(m[J]|=(S[J+1]|S[J])<<1|1|S[J+1]),m[J]&F&&(C=xn(t,{errors:I,currentLocation:N,expectedLocation:h,distance:i,ignoreLocation:l}),C<=g)){if(g=C,f=N,f<=h)break;k=Math.max(1,2*h-f)}}if(xn(t,{errors:I+1,currentLocation:h,expectedLocation:h,distance:i,ignoreLocation:l})>g)break;S=m}let U={isMatch:f>=0,score:Math.max(.001,C)};if(x){let I=Zf(v,s);I.length?p&&(U.indices=I):U.isMatch=!1}return U}function Yf(e){let t={};for(let n=0,a=e.length;n{this.chunks.push({pattern:h,alphabet:Yf(h),startIndex:g})},d=this.pattern.length;if(d>tt){let h=0,g=d%tt,f=d-g;for(;h{let{isMatch:_,score:S,indices:C}=Kf(t,f,x,{location:i+v,distance:r,threshold:o,findAllMatches:s,minMatchCharLength:p,includeMatches:a,ignoreLocation:l});_&&(h=!0),d+=S,_&&C&&(c=[...c,...C])});let g={isMatch:h,score:h?d/this.chunks.length:1};return h&&a&&(g.indices=c),g}},He=class{constructor(t){this.pattern=t}static isMultiMatch(t){return Ts(t,this.multiRegex)}static isSingleMatch(t){return Ts(t,this.singleRegex)}search(){}};function Ts(e,t){let n=e.match(t);return n?n[1]:null}var Os=class extends He{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let n=t===this.pattern;return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}},Ns=class extends He{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let a=t.indexOf(this.pattern)===-1;return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},Ds=class extends He{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let n=t.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}},Ws=class extends He{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let n=!t.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},Rs=class extends He{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let n=t.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},Us=class extends He{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let n=!t.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},_a=class extends He{constructor(t,{location:n=ne.location,threshold:a=ne.threshold,distance:i=ne.distance,includeMatches:r=ne.includeMatches,findAllMatches:o=ne.findAllMatches,minMatchCharLength:s=ne.minMatchCharLength,isCaseSensitive:p=ne.isCaseSensitive,ignoreLocation:l=ne.ignoreLocation}={}){super(t);this._bitapSearch=new ya(t,{location:n,threshold:a,distance:i,includeMatches:r,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:p,ignoreLocation:l})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},ka=class extends He{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let n=0,a,i=[],r=this.pattern.length;for(;(a=t.indexOf(this.pattern,n))>-1;)n=a+r,i.push([a,n-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},wa=[Os,ka,Ds,Ws,Us,Rs,Ns,_a],Vs=wa.length,Xf=/ +(?=([^\"]*\"[^\"]*\")*[^\"]*$)/,Jf="|";function Qf(e,t={}){return e.split(Jf).map(n=>{let a=n.trim().split(Xf).filter(r=>r&&!!r.trim()),i=[];for(let r=0,o=a.length;r!!(e[vn.AND]||e[vn.OR]),nh=e=>!!e[La.PATH],ah=e=>!Ue(e)&&As(e)&&!Ia(e),qs=e=>({[vn.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function $s(e,t,{auto:n=!0}={}){let a=i=>{let r=Object.keys(i),o=nh(i);if(!o&&r.length>1&&!Ia(i))return a(qs(i));if(ah(i)){let p=o?i[La.PATH]:r[0],l=o?i[La.PATTERN]:i[p];if(!Ve(l))throw new Error(Tf(p));let c={keyId:ba(p),pattern:l};return n&&(c.searcher=ja(l,t)),c}let s={children:[],operator:r[0]};return r.forEach(p=>{let l=i[p];Ue(l)&&l.forEach(c=>{s.children.push(a(c))})}),s};return Ia(e)||(e=qs(e)),a(e)}function ih(e,{ignoreFieldNorm:t=ne.ignoreFieldNorm}){e.forEach(n=>{let a=1;n.matches.forEach(({key:i,norm:r,score:o})=>{let s=i?i.weight:null;a*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:r))}),n.score=a})}function rh(e,t){let n=e.matches;t.matches=[],!!ke(n)&&n.forEach(a=>{if(!ke(a.indices)||!a.indices.length)return;let{indices:i,value:r}=a,o={indices:i,value:r};a.key&&(o.key=a.key.src),a.idx>-1&&(o.refIndex=a.idx),t.matches.push(o)})}function oh(e,t){t.score=e.score}function sh(e,t,{includeMatches:n=ne.includeMatches,includeScore:a=ne.includeScore}={}){let i=[];return n&&i.push(rh),a&&i.push(oh),e.map(r=>{let{idx:o}=r,s={item:t[o],refIndex:o};return i.length&&i.forEach(p=>{p(r,s)}),s})}var Ke=class{constructor(t,n={},a){this.options={...ne,...n},this.options.useExtendedSearch,this._keyStore=new Es(this.options.keys),this.setCollection(t,a)}setCollection(t,n){if(this._docs=t,n&&!(n instanceof gn))throw new Error(Pf);this._myIndex=n||Ps(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){!ke(t)||(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let n=[];for(let a=0,i=this._docs.length;a-1&&(p=p.slice(0,n)),sh(p,this._docs,{includeMatches:a,includeScore:i})}_searchStringList(t){let n=ja(t,this.options),{records:a}=this._myIndex,i=[];return a.forEach(({v:r,i:o,n:s})=>{if(!ke(r))return;let{isMatch:p,score:l,indices:c}=n.searchIn(r);p&&i.push({item:r,idx:o,matches:[{score:l,value:r,norm:s,indices:c}]})}),i}_searchLogical(t){let n=$s(t,this.options),a=(s,p,l)=>{if(!s.children){let{keyId:d,searcher:h}=s,g=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(p,d),searcher:h});return g&&g.length?[{idx:l,item:p,matches:g}]:[]}let c=[];for(let d=0,h=s.children.length;d{if(ke(s)){let l=a(n,s,p);l.length&&(r[p]||(r[p]={idx:p,item:s,matches:[]},o.push(r[p])),l.forEach(({matches:c})=>{r[p].matches.push(...c)}))}}),o}_searchObjectList(t){let n=ja(t,this.options),{keys:a,records:i}=this._myIndex,r=[];return i.forEach(({$:o,i:s})=>{if(!ke(o))return;let p=[];a.forEach((l,c)=>{p.push(...this._findMatches({key:l,value:o[c],searcher:n}))}),p.length&&r.push({idx:s,item:o,matches:p})}),r}_findMatches({key:t,value:n,searcher:a}){if(!ke(n))return[];let i=[];if(Ue(n))n.forEach(({v:r,i:o,n:s})=>{if(!ke(r))return;let{isMatch:p,score:l,indices:c}=a.searchIn(r);p&&i.push({score:l,key:t,value:r,idx:o,norm:s,indices:c})});else{let{v:r,n:o}=n,{isMatch:s,score:p,indices:l}=a.searchIn(r);s&&i.push({score:p,key:t,value:r,norm:o,indices:l})}return i}};Ke.version="6.5.3";Ke.createIndex=Ps;Ke.parseIndex=Gf;Ke.config=ne;Ke.parseQuery=$s;th(Hs);var wn=ie(Zs()),vc=ie(Dt()),Fe=ie(require("obsidian")),Le=ie(zt());function Rt(e,t){let n=yn(e),a=yn(t),i=n.pop(),r=a.pop(),o=Ma(n,a);return o!==0?o:i&&r?Ma(i.split("."),r.split(".")):i||r?i?-1:1:0}var ch=e=>typeof e=="string"&&/^[v\d]/.test(e)&&Ks.test(e),bn=(e,t,n)=>{ph(n);let a=Rt(e,t);return Js[n].includes(a)},Aa=(e,t)=>{let n=t.match(/^([<>=~^]+)/),a=n?n[1]:"=";if(a!=="^"&&a!=="~")return bn(e,t,a);let[i,r,o]=yn(e),[s,p,l]=yn(t);return _n(i,s)!==0?!1:a==="^"?Ma([r,o],[p,l])>=0:_n(r,p)!==0?!1:_n(o,l)>=0};Rt.validate=ch;Rt.compare=bn;Rt.sastisfies=Aa;var Ks=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,yn=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");let t=e.match(Ks);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},Ys=e=>e==="*"||e==="x"||e==="X",Xs=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},lh=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],_n=(e,t)=>{if(Ys(e)||Ys(t))return 0;let[n,a]=lh(Xs(e),Xs(t));return n>a?1:n{for(let n=0;n":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},Qs=Object.keys(Js),ph=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(Qs.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${Qs.join("|")}`)};var za=ie(Dt());var kn=ie(require("obsidian"));var ec="isc",tc=(e,t)=>typeof e=="string"&&e.trim().length>0?t.search(e.replace(/^\+|\+$/g,"").split(/[+]/g)):t.getAllIds();function nc(e,t){return $(this,null,function*(){let{id:n,name:a}=e.item,{matches:i}=e,r=yield this.packManager.getSVGIcon(n);if(!r)throw new TypeError("Failed to get icon for key: "+n);let o=t;if(i){let s=i.length===1?i[0].key==="name"?i[0].indices:[]:un(i.flatMap(p=>p.key==="name"?p.indices:[]));uh(o,a.replace(/[_-]/g," "),s)}else o.setText(a.replace(/[_-]/g," "));t.createSpan({cls:"suggestion-flair"},s=>s.appendChild(r))})}var Fa=class extends kn.SuggestModal{constructor(t){super(t.app);this.plugin=t;this.renderSuggestion=nc;this.resolve=null;this.modalEl.addClass(ec)}get packManager(){return this.plugin.packManager}getSuggestions(t){return tc(t,this.packManager)}open(){return super.open(),new Promise(t=>{this.resolve=t})}onClose(){this.resolve&&(this.resolve(null),this.resolve=null)}onChooseSuggestion(t){}selectSuggestion(t,n){this.resolve&&((t==null?void 0:t.item)?this.resolve(t.item):this.resolve(null),this.resolve=null),super.selectSuggestion(t,n)}},Ea=class extends kn.EditorSuggest{constructor(t){super(t.app);this.plugin=t;this.renderSuggestion=nc;this.suggestEl.addClass(ec)}get packManager(){return this.plugin.packManager}onTrigger(t,n){if(!this.plugin.settings.suggester)return null;let a=n.getLine(t.line).substring(0,t.ch),i=this.plugin.settings.triggerWithTrailingSpace?" ":"",r=String.raw`(?:${i}:|::)([^:\s]+$)`,o=a.match(new RegExp(r,"i"));if(!o)return null;let s=o.input.substring(0,o.index).match(/:([^\s:]+$)/);return s&&this.packManager.hasIcon(s[1])?null:{end:t,start:{ch:o.index,line:t.line},query:o[1]}}getSuggestions(t){return tc(t.query,this.packManager)}selectSuggestion(t){if(!this.context)return;let{id:n,pack:a}=t.item;this.context.editor.replaceRange(this.plugin.settings.code2emoji&&a==="emoji"?this.packManager.getIcon(n,!0):`:${n}:`+(this.plugin.settings.spaceAfterSC?" ":""),this.context.start,this.context.end)}},uh=(e,t,n,a)=>{if(n){a===void 0&&(a=0);let i=0;for(let r=0;r=t.length)break;s<0&&(s=0),s!==i&&e.appendText(t.substring(i,s)),e.createSpan({cls:"suggestion-highlight",text:t.substring(s,p)}),i=p}}i({hasIcon:e.hasIcon.bind(e),getIcon:e.getIcon.bind(e),getIconData:e.getIconData.bind(e),getSVGIcon:e.getSVGIcon.bind(e),getIconFromUser:()=>new Fa(t).open(),isEmoji:za.default.hasEmoji.bind(za.default),postProcessor:t.postProcessor.bind(t),version:{get current(){return t.manifest.version},compare:(n,a)=>bn(t.manifest.version,a,n),satisfies:n=>Aa(t.manifest.version,n)}});var lc=ie(cc()),pc=ie(pa()),Da=ie(require("obsidian"));var Oa=["activity","airplay","alarm-check","alarm-clock-off","alarm-clock","alarm-minus","alarm-plus","album","alert-circle","alert-octagon","alert-triangle","align-center","align-justify","align-left","align-right","anchor","aperture","archive","arrow-big-down","arrow-big-left","arrow-big-right","arrow-big-up","arrow-down-circle","arrow-down-left","arrow-down-right","arrow-down","arrow-left-circle","arrow-left-right","arrow-left","arrow-right-circle","arrow-right","arrow-up-circle","arrow-up-left","arrow-up-right","arrow-up","asterisk","at-sign","award","axe","banknote","bar-chart-2","bar-chart","battery-charging","battery-full","battery-low","battery-medium","battery","beaker","bell-minus","bell-off","bell-plus","bell-ring","bell","bike","binary","bitcoin","bluetooth-connected","bluetooth-off","bluetooth-searching","bluetooth","bold","book-open","book","bookmark-minus","bookmark-plus","bookmark","bot","box-select","box","briefcase","brush","bug","building","bus","calculator","calendar","camera-off","camera","car","carrot","cast","check-circle-2","check-circle","check-square","check","chevron-down","chevron-first","chevron-last","chevron-left","chevron-right","chevron-up","chevrons-down-up","chevrons-down","chevrons-left","chevrons-right","chevrons-up-down","chevrons-up","chrome","circle-slashed","circle","clipboard-check","clipboard-copy","clipboard-list","clipboard-x","clipboard","clock-1","clock-10","clock-11","clock-12","clock-2","clock-3","clock-4","clock-5","clock-6","clock-7","clock-8","clock-9","clock","cloud-drizzle","cloud-fog","cloud-hail","cloud-lightning","cloud-moon","cloud-off","cloud-rain-wind","cloud-rain","cloud-snow","cloud-sun","cloud","cloudy","clover","code-2","code","codepen","codesandbox","coffee","coins","columns","command","compass","contact","contrast","cookie","copy","copyleft","copyright","corner-down-left","corner-down-right","corner-left-down","corner-left-up","corner-right-down","corner-right-up","corner-up-left","corner-up-right","cpu","credit-card","crop","cross","crosshair","crown","currency","database","delete","disc","divide-circle","divide-square","divide","dollar-sign","download-cloud","download","dribbble","droplet","droplets","drumstick","edit-2","edit-3","edit","egg","equal-not","equal","euro","expand","external-link","eye-off","eye","facebook","fast-forward","feather","figma","file-check-2","file-check","file-code","file-digit","file-input","file-minus-2","file-minus","file-output","file-plus-2","file-plus","file-search","file-text","file-x-2","file-x","file","files","film","filter","flag-triangle-left","flag-triangle-right","flag","flame","flashlight-off","flashlight","flask-conical","flask-round","folder-minus","folder-open","folder-plus","folder","form-input","forward","framer","frown","function-square","gamepad-2","gamepad","gauge","gavel","gem","ghost","gift","git-branch-plus","git-branch","git-commit","git-merge","git-pull-request","github","gitlab","glasses","globe-2","globe","grab","graduation-cap","grid","grip-horizontal","grip-vertical","hammer","hand-metal","hand","hard-drive","hard-hat","hash","haze","headphones","heart","help-circle","hexagon","highlighter","history","home","image-minus","image-off","image-plus","image","import","inbox","indent","indian-rupee","infinity","info","inspect","instagram","italic","japanese-yen","key","landmark","languages","laptop-2","laptop","lasso-select","lasso","layers","layout-dashboard","layout-grid","layout-list","layout-template","layout","library","life-buoy","lightbulb-off","lightbulb","link-2-off","link-2","link","linkedin","list-checks","list-minus","list-ordered","list-plus","list-x","list","list.txt","loader-2","loader","locate-fixed","locate","lock","log-in","log-out","mail","map-pin","map","maximize-2","maximize","megaphone","meh","menu","message-circle","message-square","mic-off","mic","minimize-2","minimize","minus-circle","minus-square","minus","monitor-off","monitor-speaker","monitor","moon","more-horizontal","more-vertical","mountain-snow","mountain","mouse-pointer-2","mouse-pointer-click","mouse-pointer","move-diagonal-2","move-diagonal","move-horizontal","move-vertical","move","music","navigation-2","navigation","network","octagon","option","outdent","package-check","package-minus","package-plus","package-search","package-x","package","palette","paperclip","pause-circle","pause-octagon","pause","pen-tool","pencil","percent","person-standing","phone-call","phone-forwarded","phone-incoming","phone-missed","phone-off","phone-outgoing","phone","pie-chart","piggy-bank","pin","pipette","plane","play-circle","play","plug-zap","plus-circle","plus-square","plus","pocket","podcast","pointer","pound-sterling","power-off","power","printer","qr-code","quote","radio-receiver","radio","redo","refresh-ccw","refresh-cw","regex","repeat-1","repeat","reply-all","reply","rewind","rocking-chair","rotate-ccw","rotate-cw","rss","ruler","russian-ruble","save","scale","scan-line","scan","scissors","screen-share-off","screen-share","search","send","separator-horizontal","separator-vertical","server-crash","server-off","server","settings-2","settings","share-2","share","sheet","shield-alert","shield-check","shield-close","shield-off","shield","shirt","shopping-bag","shopping-cart","shovel","shrink","shuffle","sidebar-close","sidebar-open","sidebar","sigma","signal-high","signal-low","signal-medium","signal-zero","signal","skip-back","skip-forward","skull","slack","slash","sliders","smartphone-charging","smartphone","smile","snowflake","sort-asc","sort-desc","speaker","sprout","square","star-half","star","stop-circle","strikethrough","subscript","sun","sunrise","sunset","superscript","swiss-franc","switch-camera","table","tablet","tag","target","tent","terminal-square","terminal","text-cursor-input","text-cursor","thermometer-snowflake","thermometer-sun","thermometer","thumbs-down","thumbs-up","ticket","timer-off","timer-reset","timer","toggle-left","toggle-right","tornado","trash-2","trash","trello","trending-down","trending-up","triangle","truck","tv-2","tv","twitch","twitter","type","umbrella","underline","undo","unlink-2","unlink","unlock","upload-cloud","upload","user-check","user-minus","user-plus","user-x","user","users","verified","vibrate","video-off","video","view","voicemail","volume-1","volume-2","volume-x","volume","wallet","wand","watch","webcam","wifi-off","wifi","wind","wrap-text","wrench","x-circle","x-octagon","x-square","x","youtube","zap-off","zap","zoom-in","zoom-out",""];var Na=["logo-crystal","create-new","trash","search","right-triangle","document","folder","pencil","left-arrow","right-arrow","three-horizontal-bars","dot-network","audio-file","image-file","pdf-file","gear","documents","blocks","go-to-file","presentation","cross-in-box","microphone","microphone-filled","link","popup-open","checkmark","hashtag","left-arrow-with-tail","right-arrow-with-tail","up-arrow-with-tail","down-arrow-with-tail","lines-of-text","vertical-three-dots","pin","magnifying-glass","info","horizontal-split","vertical-split","calendar-with-checkmark","sheets-in-box","up-and-down-arrows","broken-link","cross","any-key","reset","star","crossed-star","dice","filled-pin","enter","help","vault","open-vault","paper-plane","bullet-list","uppercase-lowercase-a","star-list","expand-vertically","languages","switch","pane-layout","install","sync","check-in-circle","sync-small","check-small","paused","forward-arrow","stacked-levels","bracket-glyph","note-glyph","tag-glyph","price-tag-glyph","heading-glyph","bold-glyph","italic-glyph","strikethrough-glyph","highlight-glyph","code-glyph","quote-glyph","link-glyph","bullet-list-glyph","number-list-glyph","checkbox-glyph","undo-glyph","redo-glyph","up-chevron-glyph","down-chevron-glyph","left-chevron-glyph","right-chevron-glyph","percent-sign-glyph","keyboard-glyph","double-up-arrow-glyph","double-down-arrow-glyph","image-glyph","wrench-screwdriver-glyph","clock","plus-with-circle","minus-with-circle","indent-glyph","unindent-glyph","fullscreen","exit-fullscreen","cloud","run-command","compress-glyph","enlarge-glyph","scissors-glyph","up-curly-arrow-glyph","down-curly-arrow-glyph","plus-minus-glyph","links-going-out","links-coming-in","add-note-glyph","duplicate-glyph","clock-glyph","calendar-glyph","command-glyph","dice-glyph","file-explorer-glyph","graph-glyph","import-glyph","navigate-glyph","open-elsewhere-glyph","bullet-list-glyph","presentation-glyph","paper-plane-glyph","question-mark-glyph","restore-file-glyph","search-glyph","star-glyph","play-audio-glyph","stop-audio-glyph","tomorrow-glyph","wand-glyph","workspace-glyph","yesterday-glyph","box-glyph","merge-files-glyph","merge-files","two-blank-pages","scissors","paste","paste-text","split","select-all-text","wand","github-glyph","reading-glasses"];var vh=e=>e.replace(/-/g,"_"),Wa="luc",bh="obs",uc=e=>["class","height","width"].forEach(t=>{var n;return(n=e.firstElementChild)==null?void 0:n.removeAttribute(t)}),dc=class{constructor(t,n){this.pack=t;this.obsidianId=n;this.type="bulti-in";this.name=vh(n),this.id=`${t}_${this.name}`}get data(){var n;let t=createDiv();return(0,Da.setIcon)(t,(this.pack===Wa?"lucide-":"")+this.obsidianId),uc(t),(n=t.firstElementChild)==null||n.setAttribute("xmlns","http://www.w3.org/2000/svg"),t.innerHTML}get dataUri(){return(0,lc.default)(this.data)}getDOM(t=!0){let n=createSpan({cls:ht(this)});return t?(n.addClass("isc-svg-icon"),(0,Da.setIcon)(n,(this.pack===Wa?"lucide-":"")+this.obsidianId),uc(n)):(n.addClass("isc-img-icon"),n.createEl("img",{attr:{src:this.dataUri}})),n}},mc="emoji",yh=()=>{let e=new Map,t=[],n=[];for(let[a,i]of[[bh,Na],[Wa,Oa]]){n.push(a);for(let r of i){let o=new dc(a,r);e.set(o.id,o),t.push(o)}}n.push(mc);for(let a of Object.keys(pc.default))t.push({pack:mc,id:a,name:a});return{packs:e,ids:t,packnames:n}},Ra=yh(),Ua=Ra.packs,Va=Ra.ids,gt=Ra.packnames;var Ha=ie(Dt());var xt=class{constructor(t){this.name=t}get id(){return this.name}get pack(){return"emoji"}get type(){return"emoji"}get char(){return Ha.default.get(this.name)}static getData(t){return Ha.default.hasEmoji(t)?new xt(t):null}getDOM(t=!0){return createSpan({cls:[ht(this),"isc-char-icon"],text:this.char})}};var fc=ie(require("obsidian")),hc=ie(zt());var nt=class{constructor(t,n,a,i,r){this._id=t;this._name=n;this._pack=a;this.plugin=r;this.path=i.trim()}static getData(t,n,a){let i=fa(t);return!i||i.pack==="emoji"?null:new nt(t,i.name,i.pack,n,a)}get type(){return"file"}get vault(){return this.plugin.app.vault}get id(){return this._id}get pack(){return this._pack}get name(){return this._name}get ext(){return(0,hc.extname)(this.path)}get fsPath(){return this.vault.adapter instanceof fc.FileSystemAdapter?this.vault.adapter.getFullPath(this.path):null}get resourcePath(){return this.vault.adapter.getResourcePath(this.path)}get isSVG(){return this.ext===".svg"}getDOM(t=!0){let n=createSpan({cls:ht(this)});return t&&this.isSVG?(n.addClass("isc-svg-icon"),(()=>$(this,null,function*(){let a=yield this.plugin.fileIconCache.getIcon(this.path);return a?(this.fixFillColor(a),n.append(a)):console.error("failed to get icon data for",this.path),n}))()):(n.addClass("isc-img-icon"),n.createEl("img",{attr:{src:this.resourcePath}}),n)}fixFillColor(t){if(!!_h.includes(this.pack))for(let n of t.getElementsByTagName("path"))n.hasAttribute("fill")||n.setAttribute("fill","currentColor")}},_h=["fab","far","fas","rif","ril"];var gc=e=>!!e.ext;var kh="/icons.json",wh="icons",Cn=class extends Fe.Events{constructor(t){super();this.plugin=t;this._customIcons=new Map;this._cutomsIconPacknames=new Set;this._loaded=!1;this._fuse=new Ke(Va,{keys:["name","pack"],includeScore:!0,findAllMatches:!0,threshold:.5,shouldSort:!0,includeMatches:!0,useExtendedSearch:!0})}get vault(){return this.plugin.app.vault}renameIconFile(t,n,a){return $(this,null,function*(){let i=(0,Le.join)(this.customIconsDir,a+n),r=(0,Le.join)(this.customIconsDir,t+n);return yield this.vault.adapter.rename(r,i),i})}removeIconFile(t,n){let a=(0,Le.join)(this.customIconsDir,t+n);return this.vault.adapter.remove(a)}addIcon(t,n,a){return $(this,null,function*(){let i=(0,Le.join)(this.customIconsDir,t+n);return yield this.vault.adapter.writeBinary(i,a),i})}get customPacknames(){return[...this._cutomsIconPacknames]}get customIconsFilePath(){return(0,Fe.normalizePath)(this.plugin.manifest.dir+kh)}get customIconsDir(){return(0,Le.join)(this.vault.configDir,wh)}isPacknameExists(t){return gt.includes(t)||this._cutomsIconPacknames.has(t)}get enabledPacknames(){return[...gt,...this._cutomsIconPacknames].filter(t=>this.isPackEnabled(t))}hasIcon(t){return this._isBuiltIn(t)||this._customIcons.has(t)}_isBuiltIn(t){return vc.default.hasEmoji(t)||Ua.has(t)}getIcon(t,n=!1){t=je(t);let a=this.getIconData(t);if(!a)return null;let i=()=>a.getDOM(!1);switch(a.type){case"emoji":return n?a.char:i();case"bulti-in":return n?a.dataUri:i();case"file":return n?a.resourcePath:i();default:(0,xc.default)(a)}}getSVGIcon(t,n=!1){return $(this,null,function*(){t=je(t);let a=this.getIconData(t);if(!a)return null;let i=()=>a.getDOM(!0);if(a.type==="emoji")return n?a.char:i();if(a.type==="bulti-in"||a.type==="file"&&a.isSVG){let r=yield i();return n?r.innerHTML:r}else return n?a.resourcePath:i()})}getIconData(t){t=je(t);let n;return(n=xt.getData(t))||(n=Ua.get(t))||(n=this._customIcons.get(t))?n:null}isPackEnabled(t){return t==="emoji"?!0:!this.plugin.settings.disabledPacks.has(t)}refreshPackNames(){this._cutomsIconPacknames.clear();for(let[,{pack:t}]of this._customIcons)this._cutomsIconPacknames.add(t)}loadIcons(){return $(this,null,function*(){if(this._loaded&&(this._fuse.setCollection([]),this._customIcons.clear(),this._cutomsIconPacknames.clear(),this._loaded=!1),!(yield this.vault.adapter.exists(this.customIconsDir))){yield this.vault.adapter.mkdir(this.customIconsDir);return}let t=yield this.vault.adapter.list(this.customIconsDir),n,a=t.files.map(i=>$(this,null,function*(){if(!ln.test(i))return;let r=(0,Le.basename)(i).replace(ln,""),o=nt.getData(r,i,this.plugin);o?(this._customIcons.set(r,o),this._fuse.add(o)):console.warn("Failed to load icon data (raw value: %o) for id %s, skipping...",i,r)}));for(let i of yield Promise.allSettled(a))i.status==="rejected"&&console.error("Failed to load icon",i.reason);this._loaded=!0,this.refreshPackNames(),this.trigger("initialized",this.plugin.api)})}backupIcons(t){return $(this,null,function*(){let n=new wn.default,a=yield this.vault.adapter.list(this.customIconsDir);for(let r of a.files)(!t||(0,Le.basename)(r).startsWith(t+"_"))&&n.file((0,Le.basename)(r),this.vault.adapter.readBinary(r));let i=`${t!=null?t:"custom-icons"}.zip`;yield this.vault.createBinary(i,yield n.generateAsync({type:"arraybuffer"})),Fe.Platform.isDesktopApp?this.plugin.app.openWithDefaultApp(""):new Fe.Notice(`icons have been saved to ${i}, enable 'Detect all file extension' in 'Files & Links' to visit it`)})}importIconsFromFileList(t,n=!1){return $(this,null,function*(){let a=[];for(let i=0;i$(this,null,function*(){let{name:p}=s;n&&!p.startsWith(a+"_")&&(p=a+"_"+p);let l=this.getAvailableId(p),c=(0,Le.join)(this.customIconsDir,l);return(yield this.vault.adapter.exists(c))?Promise.reject(`icon ${l} already exists, skipping..`):(yield this.vault.adapter.writeBinary(c,yield s.async("arraybuffer")),l)})),o=(yield Promise.allSettled(r)).reduce((s,p)=>(p.status==="rejected"?console.error("Failed to import icon",p.reason):s.push(p.value),s),[]);return new Fe.Notice(o.length+" icons imported"),t.name})}addFromFiles(t,n){return $(this,null,function*(){let a=yield _s(n);if(!a){new Fe.Notice("No SVG file found in dropped items");return}if(gt.includes(t)){console.error("failed to add pack: pack name %s reserved",t);return}let i=a.reduce((o,{name:s,ext:p,data:l})=>{let c=ha(`${t}_${s}`);return c?(c=this.getAvailableId(c),this._customIcons.has(c)?(o.push(Promise.reject(`icon ${c} already exists, skipping..`)),o):(o.push((()=>$(this,null,function*(){try{let d=yield this.addIcon(c,p,l);this.set(c,new nt(c,s,t,d,this.plugin),!1)}catch(d){throw new Ye("add",c,d)}return c}))()),o)):(console.warn("failed to add icon: id %s invalid, skipping...",c),o)},[]),r=[];for(let o of yield Promise.allSettled(i))o.status==="rejected"?console.error("Failed to add icon, details: ",o.reason):r.push(o.value);this.refreshPackNames(),this.trigger("changed",this.plugin.api,r),new Fe.Notice(r.length.toString()+" icons added")})}deleteMultiple(...t){return $(this,null,function*(){this._fuse.remove(i=>gc(i)&&t.includes(i.id));let n=t.map(i=>$(this,null,function*(){let r=this._customIcons.get(i);if(!r)throw new Ye("delete",i,"No icon found in _customIcons");this._customIcons.delete(i);try{yield this.removeIconFile(i,r.ext)}catch(o){throw new Ye("delete",i,o)}})),a=!1;for(let i of yield Promise.allSettled(n))i.status==="rejected"?console.error("Failed to remove icon file, details: ",i.reason):a||(a=!0);a&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,t))})}filter(t){return $(this,null,function*(){let n=new Map;for(let[i,r]of this._customIcons)t(i,r)||(this._customIcons.delete(i),n.set(i,r.path));if(this._fuse.remove(i=>n.has(i.id)),n.size===0)return;this.refreshPackNames(),this.trigger("changed",this.plugin.api,[...n.keys()]);let a=[...n.values()].map(i=>$(this,null,function*(){try{yield this.vault.adapter.remove(i)}catch(r){throw new Ye("delete",(0,Le.basename)(i),r)}}));for(let i of yield Promise.allSettled(a))i.status==="rejected"&&console.error("Failed to remove icon file, details: ",i.reason)})}rename(t,n){return $(this,null,function*(){if(this.hasIcon(n))return console.log("failed to rename icon: id %s already exists",n),null;let a=this._customIcons.get(t);if(!a)return console.log("failed to rename icon: id %s not found in custom icons",t),null;let i=ha(n);if(!i)return console.log("failed to rename icon: id %s invalid",t),null;try{a.path=yield this.renameIconFile(t,a.ext,n)}catch(r){throw new Ye("rename",t,r,n)}return this.set(i,a,!1),this.delete(t,!1,!1),this.refreshPackNames(),this.trigger("changed",this.plugin.api,[t,n]),n})}star(t){return $(this,null,function*(){let n=t.replace(/_\d?$/,"");if(n===t)return console.log("failed to star icon: no suffix found for id %s",t),null;let a=this._customIcons.get(t);if(!a)return console.log("failed to star icon: id %s not found in custom icons",t),null;if(this._isBuiltIn(n))return console.log("failed to star icon: new id %s exists in built-in icons",n),null;try{let{ext:i}=a;if(this._customIcons.has(n)){let r=this._customIcons.get(n),{ext:o}=r;yield this.renameIconFile(n,o,n+"_temp"),a.path=yield this.renameIconFile(t,i,n),this.set(n,a,!1),r.path=yield this.renameIconFile(n+"_temp",o,t),this.set(t,r,!1)}else a.path=yield this.renameIconFile(t,i,n),this.set(n,a,!1),this.delete(t,!1,!1)}catch(i){new Ye("rename",t,i,n)}return this.refreshPackNames(),this.trigger("changed",this.plugin.api,[t,n]),n})}getAvailableId(t){if(!this.hasIcon(t))return t;let n=1,a=`${t}_${n}`;for(;this.hasIcon(a);)a=`${t}_${++n}`;return`${t}_${n}`}set(t,n,a=!0){this._customIcons.get(t)!==n&&(this._customIcons.set(t,n),this._fuse.remove(i=>i.id===t),this._fuse.add(n),a&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,[t])))}delete(t,n=!0,a=!0){return $(this,null,function*(){let i=this._customIcons.get(t);if(!i)return!1;if(a)try{yield this.removeIconFile(t,i.ext)}catch(o){throw new Ye("delete",t,o)}let r=this._customIcons.delete(t);return this._fuse.remove(o=>o.id===t),n&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,[t])),r})}clear(){return $(this,null,function*(){let t=(yield this.vault.adapter.list(this.customIconsDir)).files.map(n=>this.vault.adapter.remove(n));for(let n of yield Promise.allSettled(t))n.status==="rejected"&&console.error("Failed to remove icon file, details: ",n.reason);this._customIcons.clear(),this._fuse.remove(n=>!Va.includes(n)),this.refreshPackNames(),this.trigger("changed",this.plugin.api)})}search(t,n,a){let i=t.map(r=>({name:r}));return n=n!=null?n:this.enabledPacknames,i.push({$or:n.map(r=>({pack:`=${r}`}))}),this._fuse.search({$and:i},{limit:a!=null?a:20})}getAllIds(t,n){let a=(t!=null?t:this.enabledPacknames).map(i=>({pack:`=${i}`}));return this._fuse.search({$or:a},{limit:n!=null?n:20})}trigger(...t){let[n,...a]=t;super.trigger(n,...a),this.plugin.app.vault.trigger(ac+n,...a)}on(...t){return super.on(...t)}},Ye=class extends Error{constructor(t,n,a,i){super(`Error while ${t} on ${n}${i?"=>"+i:""}: ${a instanceof Error?`${a.name}: ${a.message}`:a}`);console.error(`${t} on ${n}${i?"=>"+i:""}`,a),this.name="SaveIconError"}};var qa=ie(require("obsidian")),kc=ie(zt());var bc=ie(require("obsidian")),yc=class extends bc.Modal{constructor(t){super(t);this.buttonContainerEl=this.modalEl.createDiv("modal-button-container");this.resolve=null;this.containerEl.addClass("mod-confirmation"),this.addButton("mod-cta","OK",()=>this.resolve&&this.resolve(!0)),this.addCancelButton()}open(){return super.open(),new Promise(t=>this.resolve=t)}addButton(t,n,a){return this.buttonContainerEl.createEl("button",{cls:t,text:n}).addEventListener("click",i=>$(this,null,function*(){a&&(yield a(i)),this.close()})),this}onClose(){this.resolve&&this.resolve(!1)}addCancelButton(){return this.addButton("","Cancel",this.close.bind(this))}},_c=(e,t)=>{let n=new yc(t);return n.contentEl.setText(e),n.open()};var Ch=e=>$(void 0,null,function*(){let{vault:t}=e.app,n=yield t.readJson(e.packManager.customIconsFilePath),a=e.packManager.customIconsDir;(yield t.adapter.exists(a))||(yield t.adapter.mkdir(a)),yield Promise.allSettled(Object.entries(n).reduce((i,[r,o])=>{if(typeof r=="string"&&typeof o=="string"){let s=(0,kc.join)(a,`${r}.svg`);i.push(t.create(s,o))}return i},[]))}),jh=e=>$(void 0,null,function*(){if((yield e.app.vault.adapter.exists(e.packManager.customIconsFilePath))&&!e.settings.isMigrated&&(yield _c("Found custom icons that have not been upgraded, update icons now?",e.app)))try{yield Ch(e),e.settings.isMigrated=!0,yield e.saveSettings(),new qa.Notice("Icon update complete, you can now find icon files in "+e.packManager.customIconsDir)}catch(n){new qa.Notice("Failed to update icons, check console for more details"),console.error(n)}}),wc=jh;var Lh=e=>(t,n)=>{for(let a of t.querySelectorAll(".callout")){let i=a.querySelector(".callout-title > .callout-icon"),r=new MutationObserver(o=>$(void 0,null,function*(){if(i.childElementCount>0)return;let s=Ih(i,"--callout-icon"),p=yield e.api.getSVGIcon(s);!p||(r.disconnect(),i.className+=" "+p.className,i.replaceChildren(...p.childNodes))}));r.observe(i,{childList:!0})}},Cc=Lh,Ih=(e,t,n)=>getComputedStyle(e,n).getPropertyValue(t).trim();var Sh=e=>{switch(e.nodeName){case"CODE":case"MJX-CONTAINER":return NodeFilter.FILTER_REJECT;case"#text":return e.nodeValue&&ft.test(e.nodeValue)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;default:return NodeFilter.FILTER_SKIP}},$a=e=>{let t=a=>$(void 0,null,function*(){for(let i of[...a.wholeText.matchAll(Wt(ft))].sort((r,o)=>o.index-r.index).map(r=>({text:r[0],index:r.index})))yield n(a,i)}),n=(o,s)=>$(void 0,[o,s],function*(a,{text:i,index:r}){var l,c;let p=yield e.packManager.getSVGIcon(je(i));if(!p)return a;if(typeof p=="string")a.textContent&&(a.textContent=(l=a.textContent)==null?void 0:l.replace(i,p));else{let d=a.splitText(r);(c=d.parentElement)==null||c.insertBefore(p,d),d.textContent=d.wholeText.substring(i.length)}});return a=>{let i=document.createTreeWalker(a,NodeFilter.SHOW_ALL,{acceptNode:Sh}),r=i.currentNode;for(;r;){if(r.nodeType===3){let o=r;(()=>$(void 0,null,function*(){let s=[o];o.__PENDING__&&(yield o.__PENDING__,s=[...o.parentElement.childNodes].filter(l=>l instanceof Text));let p=Promise.all(s.map(t));o.__PENDING__=p,yield p,delete o.__PENDING__}))()}r=i.nextNode()}}},Ga=e=>(t,n)=>t.replace(Wt(ft),a=>e.packManager.hasIcon(je(a))?n(a):a);var jc=e=>{e.registerMarkdownPostProcessor(e._nodeProcessor),e.registerMarkdownPostProcessor(Cc(e))};var Za=class extends Error{},Lc=class extends Za{},Ic=class extends Za{},Ah=(e,t=",")=>e.join(t),Mh={accept:"*",multiple:!1,strict:!1},Ka=e=>{let{accept:t,multiple:n,strict:a}={...Mh,...e},i=zh({multiple:n,accept:Array.isArray(t)?Ah(t):t});return new Promise(r=>{i.onchange=()=>{r(Fh(i.files,n,a)),i.remove()},i.click()})},Fh=(e,t,n)=>new Promise((a,i)=>{if(!e)return i(new Lc);let r=Eh(e,t,n);if(!r)return i(new Ic);a(r)}),Eh=(e,t,n)=>!t&&n?e.length===1?e[0]:null:e.length?e:null,zh=({accept:e,multiple:t})=>{let n=document.createElement("input");return n.type="file",n.multiple=t,n.accept=e,n};var he=ie(require("obsidian"));var Tl=ie(xa()),Ol=ie(on()),En=ie(require("obsidian"));var Ut,X,Sc,Bh,Vt,Ac,Mc,Fc,jn={},Ec=[],Ph=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function qe(e,t){for(var n in t)e[n]=t[n];return e}function zc(e){var t=e.parentNode;t&&t.removeChild(e)}function Ee(e,t,n){var a,i,r,o={};for(r in t)r=="key"?a=t[r]:r=="ref"?i=t[r]:o[r]=t[r];if(arguments.length>2&&(o.children=arguments.length>3?Ut.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&&(o[r]=e.defaultProps[r]);return Ht(e,o,a,i,null)}function Ht(e,t,n,a,i){var r={type:e,props:t,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++Sc};return i==null&&X.vnode!=null&&X.vnode(r),r}function Ya(){return{current:null}}function Te(e){return e.children}function Ie(e,t){this.props=e,this.context=t}function vt(e,t){if(t==null)return e.__?vt(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t0?Ht(g.type,g.props,g.key,null,g.__v):g)!=null){if(g.__=n,g.__b=n.__b+1,(h=_[c])===null||h&&g.key==h.key&&g.type===h.type)_[c]=void 0;else for(d=0;d2&&(o.children=arguments.length>3?Ut.call(arguments,2):n),Ht(e.type,o,a||e.key,i||e.ref,null)}function qt(e,t){var n={__c:t="__cC"+Fc++,__:e,Consumer:function(a,i){return a.children(i)},Provider:function(a){var i,r;return this.getChildContext||(i=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(Xa)},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),a.children}};return n.Provider.__=n.Consumer.contextType=n}Ut=Ec.slice,X={__e:function(e,t){for(var n,a,i;t=t.__;)if((n=t.__c)&&!n.__)try{if((a=n.constructor)&&a.getDerivedStateFromError!=null&&(n.setState(a.getDerivedStateFromError(e)),i=n.__d),n.componentDidCatch!=null&&(n.componentDidCatch(e),i=n.__d),i)return n.__E=n}catch(r){e=r}throw e}},Sc=0,Bh=function(e){return e!=null&&e.constructor===void 0},Ie.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=qe({},this.state),typeof e=="function"&&(e=e(qe({},n),this.props)),e&&qe(n,e),e!=null&&this.__v&&(t&&this.__h.push(t),Xa(this))},Ie.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Xa(this))},Ie.prototype.render=Te,Vt=[],Ac=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ln.__r=0,Fc=0;var yt,be,qc,_t=0,$c=[],Gc=X.__b,Zc=X.__r,Kc=X.diffed,Yc=X.__c,Xc=X.unmount;function $t(e,t){X.__h&&X.__h(be,e,_t||t),_t=0;var n=be.__H||(be.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function _e(e){return _t=1,Sn(nl,e)}function Sn(e,t,n){var a=$t(yt++,2);return a.t=e,a.__c||(a.__=[n?n(t):nl(void 0,t),function(i){var r=a.t(a.__[0],i);a.__[0]!==r&&(a.__=[r,a.__[1]],a.__c.setState({}))}],a.__c=be),a.__}function Xe(e,t){var n=$t(yt++,3);!X.__s&&ni(n.__H,t)&&(n.__=e,n.__H=t,be.__H.__h.push(n))}function ei(e,t){var n=$t(yt++,4);!X.__s&&ni(n.__H,t)&&(n.__=e,n.__H=t,be.__h.push(n))}function Jc(e){return _t=5,$e(function(){return{current:e}},[])}function Qc(e,t,n){_t=6,ei(function(){typeof e=="function"?e(t()):e&&(e.current=t())},n==null?n:n.concat(e))}function $e(e,t){var n=$t(yt++,7);return ni(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function at(e,t){return _t=8,$e(function(){return e},t)}function kt(e){var t=be.context[e.__c],n=$t(yt++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(be)),t.props.value):e.__}function el(e,t){X.useDebugValue&&X.useDebugValue(t?t(e):e)}function Dh(){for(var e;e=$c.shift();)if(e.__P)try{e.__H.__h.forEach(An),e.__H.__h.forEach(ti),e.__H.__h=[]}catch(t){e.__H.__h=[],X.__e(t,e.__v)}}X.__b=function(e){be=null,Gc&&Gc(e)},X.__r=function(e){Zc&&Zc(e),yt=0;var t=(be=e.__c).__H;t&&(t.__h.forEach(An),t.__h.forEach(ti),t.__h=[])},X.diffed=function(e){Kc&&Kc(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&($c.push(t)!==1&&qc===X.requestAnimationFrame||((qc=X.requestAnimationFrame)||function(n){var a,i=function(){clearTimeout(r),tl&&cancelAnimationFrame(a),setTimeout(n)},r=setTimeout(i,100);tl&&(a=requestAnimationFrame(i))})(Dh)),be=null},X.__c=function(e,t){t.some(function(n){try{n.__h.forEach(An),n.__h=n.__h.filter(function(a){return!a.__||ti(a)})}catch(a){t.some(function(i){i.__h&&(i.__h=[])}),t=[],X.__e(a,n.__v)}}),Yc&&Yc(e,t)},X.unmount=function(e){Xc&&Xc(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(a){try{An(a)}catch(i){t=i}}),t&&X.__e(t,n.__v))};var tl=typeof requestAnimationFrame=="function";function An(e){var t=be,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),be=t}function ti(e){var t=be;e.__c=e.__(),be=t}function ni(e,t){return!e||e.length!==t.length||t.some(function(n,a){return n!==e[a]})}function nl(e,t){return typeof t=="function"?t(e):t}function al(e,t){for(var n in t)e[n]=t[n];return e}function ai(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var a in t)if(a!=="__source"&&e[a]!==t[a])return!0;return!1}function ii(e){this.props=e}function Wh(e,t){function n(i){var r=this.props.ref,o=r==i.ref;return!o&&r&&(r.call?r(null):r.current=null),t?!t(this.props,i)||!o:ai(this.props,i)}function a(i){return this.shouldComponentUpdate=n,Ee(e,i)}return a.displayName="Memo("+(e.displayName||e.name)+")",a.prototype.isReactComponent=!0,a.__f=!0,a}(ii.prototype=new Ie).isPureReactComponent=!0,ii.prototype.shouldComponentUpdate=function(e,t){return ai(this.props,e)||ai(this.state,t)};var il=X.__b;X.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),il&&il(e)};var Rh=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Uh(e){function t(n,a){var i=al({},n);return delete i.ref,e(i,(a=n.ref||a)&&(typeof a!="object"||"current"in a)?a:null)}return t.$$typeof=Rh,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var rl=function(e,t){return e==null?null:Oe(Oe(e).map(t))},Vh={map:rl,forEach:rl,count:function(e){return e?Oe(e).length:0},only:function(e){var t=Oe(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:Oe},Hh=X.__e;X.__e=function(e,t,n){if(e.then){for(var a,i=t;i=i.__;)if((a=i.__c)&&a.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),a.__c(e,t)}Hh(e,t,n)};var ol=X.unmount;function Mn(){this.__u=0,this.t=null,this.__b=null}function sl(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function qh(e){var t,n,a;function i(r){if(t||(t=e()).then(function(o){n=o.default||o},function(o){a=o}),a)throw a;if(!n)throw t;return Ee(n,r)}return i.displayName="Lazy",i.__f=!0,i}function Gt(){this.u=null,this.o=null}X.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),ol&&ol(e)},(Mn.prototype=new Ie).__c=function(e,t){var n=t.__c,a=this;a.t==null&&(a.t=[]),a.t.push(n);var i=sl(a.__v),r=!1,o=function(){r||(r=!0,n.__R=null,i?i(s):s())};n.__R=o;var s=function(){if(!--a.__u){if(a.state.__e){var l=a.state.__e;a.__v.__k[0]=function d(h,g,f){return h&&(h.__v=null,h.__k=h.__k&&h.__k.map(function(x){return d(x,g,f)}),h.__c&&h.__c.__P===g&&(h.__e&&f.insertBefore(h.__e,h.__d),h.__c.__e=!0,h.__c.__P=f)),h}(l,l.__c.__P,l.__c.__O)}var c;for(a.setState({__e:a.__b=null});c=a.t.pop();)c.forceUpdate()}},p=t.__h===!0;a.__u++||p||a.setState({__e:a.__b=a.__v.__k[0]}),e.then(o,o)},Mn.prototype.componentWillUnmount=function(){this.t=[]},Mn.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),a=this.__v.__k[0].__c;this.__v.__k[0]=function r(o,s,p){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=al({},o)).__c!=null&&(o.__c.__P===p&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return r(l,s,p)})),o}(this.__b,n,a.__O=a.__P)}this.__b=null}var i=t.__e&&Ee(Te,null,e.fallback);return i&&(i.__h=null),[Ee(Te,null,t.__e?null:e.children),i]};var cl=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(a)}}),bt(Ee($h,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function Zh(e,t){return Ee(Gh,{__v:e,i:t})}(Gt.prototype=new Ie).__e=function(e){var t=this,n=sl(t.__v),a=t.o.get(e);return a[0]++,function(i){var r=function(){t.props.revealOrder?(a.push(i),cl(t,e,a)):i()};n?n(r):r()}},Gt.prototype.render=function(e){this.u=null,this.o=new Map;var t=Oe(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Gt.prototype.componentDidUpdate=Gt.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){cl(e,n,t)})};var ll=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,Kh=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Yh=typeof document!="undefined",Xh=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function Jh(e,t,n){return t.__k==null&&(t.textContent=""),bt(e,t),typeof n=="function"&&n(),e?e.__c:null}function Qh(e,t,n){return Qa(e,t),typeof n=="function"&&n(),e?e.__c:null}Ie.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Ie.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var pl=X.event;function eg(){}function tg(){return this.cancelBubble}function ng(){return this.defaultPrevented}X.event=function(e){return pl&&(e=pl(e)),e.persist=eg,e.isPropagationStopped=tg,e.isDefaultPrevented=ng,e.nativeEvent=e};var ul,dl={configurable:!0,get:function(){return this.class}},ml=X.vnode;X.vnode=function(e){var t=e.type,n=e.props,a=n;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var r in a={},n){var o=n[r];Yh&&r==="children"&&t==="noscript"||r==="value"&&"defaultValue"in n&&o==null||(r==="defaultValue"&&"value"in n&&n.value==null?r="value":r==="download"&&o===!0?o="":/ondoubleclick/i.test(r)?r="ondblclick":/^onchange(textarea|input)/i.test(r+t)&&!Xh(n.type)?r="oninput":/^onfocus$/i.test(r)?r="onfocusin":/^onblur$/i.test(r)?r="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(r)?r=r.toLowerCase():i&&Kh.test(r)?r=r.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),a[r]=o)}t=="select"&&a.multiple&&Array.isArray(a.value)&&(a.value=Oe(n.children).forEach(function(s){s.props.selected=a.value.indexOf(s.props.value)!=-1})),t=="select"&&a.defaultValue!=null&&(a.value=Oe(n.children).forEach(function(s){s.props.selected=a.multiple?a.defaultValue.indexOf(s.props.value)!=-1:a.defaultValue==s.props.value})),e.props=a,n.class!=n.className&&(dl.enumerable="className"in n,n.className!=null&&(a.class=n.className),Object.defineProperty(a,"className",dl))}e.$$typeof=ll,ml&&ml(e)};var fl=X.__r;X.__r=function(e){fl&&fl(e),ul=e.__c};var ag={ReactCurrentDispatcher:{current:{readContext:function(e){return ul.__n[e.__c].props.value}}}};function ig(e){return Ee.bind(null,e)}function hl(e){return!!e&&e.$$typeof===ll}function rg(e){return hl(e)?Hc.apply(null,arguments):e}function og(e){return!!e.__k&&(bt(null,e),!0)}function sg(e){return e&&(e.base||e.nodeType===1&&e)||null}var cg=function(e,t){return e(t)},lg=function(e,t){return e(t)};var H={useState:_e,useReducer:Sn,useEffect:Xe,useLayoutEffect:ei,useRef:Jc,useImperativeHandle:Qc,useMemo:$e,useCallback:at,useContext:kt,useDebugValue:el,version:"17.0.2",Children:Vh,render:Jh,hydrate:Qh,unmountComponentAtNode:og,createPortal:Zh,createElement:Ee,createContext:qt,createFactory:ig,cloneElement:rg,createRef:Ya,Fragment:Te,isValidElement:hl,findDOMNode:sg,Component:Ie,PureComponent:ii,memo:Wh,forwardRef:Uh,flushSync:lg,unstable_batchedUpdates:cg,StrictMode:Te,Suspense:Mn,SuspenseList:Gt,lazy:qh,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ag};var ri={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},oi=H.createContext&&H.createContext(ri);var Je=function(){return Je=Object.assign||function(e){for(var t,n=1,a=arguments.length;n{let t={};return e.forEach((n,a)=>t[n]=a),t})(fg),hg=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,it=String.fromCharCode.bind(String),kl=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(e,t=n=>n)=>new Uint8Array(Array.prototype.slice.call(e,0).map(t));var wl=e=>e.replace(/[^A-Za-z0-9\+\/]/g,"");var gg=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,xg=e=>{switch(e.length){case 4:var t=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),n=t-65536;return it((n>>>10)+55296)+it((n&1023)+56320);case 3:return it((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return it((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},vg=e=>e.replace(gg,xg),bg=e=>{if(e=e.replace(/\s+/g,""),!hg.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(e.length&3));let t,n="",a,i;for(let r=0;r>16&255):i===64?it(t>>16&255,t>>8&255):it(t>>16&255,t>>8&255,t&255);return n},Cl=dg?e=>atob(wl(e)):ci?e=>Buffer.from(e,"base64").toString("binary"):bg,yg=ci?e=>kl(Buffer.from(e,"base64")):e=>kl(Cl(e),t=>t.charCodeAt(0));var _g=ci?e=>Buffer.from(e,"base64").toString("utf8"):_l?e=>_l.decode(yg(e)):e=>vg(Cl(e)),kg=e=>wl(e.replace(/[-_]/g,t=>t=="-"?"+":"/")),jl=e=>_g(kg(e));var li=ie(require("obsidian")),pi=(e,t="master",n=!1)=>`https://${n?"raw.staticdn.net":"raw.githubusercontent.com"}/aidenlx/obsidian-icon-shortcodes/${t}/${e}`,ui=class extends Error{constructor(t){super("GitHub: "+t.message);this.response=t}},Ll=(e="master")=>$(void 0,null,function*(){var a;let t=`https://api.github.com/repos/aidenlx/obsidian-icon-shortcodes/git/trees/${e}?recursive=1&${Date.now()}`,n=(yield(0,li.requestUrl)({url:t})).json;if(Array.isArray(n.tree)){let i=(a=n.tree.find(r=>r.path==="assets/manifest.json"))==null?void 0:a.url;if(i)return yield wg(i);throw console.error(n),new Error("No manifest.json for icon pack found")}else throw new ui(n)}),wg=e=>$(void 0,null,function*(){let t=(yield(0,li.requestUrl)({url:e})).json;if(t.encoding&&t.content){if(t.encoding==="base64")return JSON.parse(jl(t.content));throw console.error(t),new TypeError("Unsupported encoding")}else throw new ui(t)});var di={};Ni(di,{balls:()=>Sl,bars:()=>Al,blank:()=>Il,bubbles:()=>Ml,cubes:()=>Fl,cylon:()=>El,spin:()=>zl,spinningBubbles:()=>Bl,spokes:()=>Pl});var Il=` +var rp=Object.create;var zt=Object.defineProperty,op=Object.defineProperties,sp=Object.getOwnPropertyDescriptor,cp=Object.getOwnPropertyDescriptors,lp=Object.getOwnPropertyNames,sn=Object.getOwnPropertySymbols,pp=Object.getPrototypeOf,ea=Object.prototype.hasOwnProperty,Yi=Object.prototype.propertyIsEnumerable;var Ki=(e,t,n)=>t in e?zt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Me=(e,t)=>{for(var n in t||(t={}))ea.call(t,n)&&Ki(e,n,t[n]);if(sn)for(var n of sn(t))Yi.call(t,n)&&Ki(e,n,t[n]);return e},et=(e,t)=>op(e,cp(t));var cn=(e,t)=>{var n={};for(var a in e)ea.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&sn)for(var a of sn(e))t.indexOf(a)<0&&Yi.call(e,a)&&(n[a]=e[a]);return n};var K=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Xi=(e,t)=>{for(var n in t)zt(e,n,{get:t[n],enumerable:!0})},Ji=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of lp(t))!ea.call(e,i)&&i!==n&&zt(e,i,{get:()=>t[i],enumerable:!(a=sp(t,i))||a.enumerable});return e};var be=(e,t,n)=>(n=e!=null?rp(pp(e)):{},Ji(t||!e||!e.__esModule?zt(n,"default",{value:e,enumerable:!0}):n,e)),up=e=>Ji(zt({},"__esModule",{value:!0}),e);var $=(e,t,n)=>new Promise((a,i)=>{var r=p=>{try{s(n.next(p))}catch(l){i(l)}},o=p=>{try{s(n.throw(p))}catch(l){i(l)}},s=p=>p.done?a(p.value):Promise.resolve(p.value).then(r,o);s((n=n.apply(e,t)).next())});var or=K((h1,gp)=>{gp.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var cr=K((g1,sr)=>{sr.exports=or()});var Bt=K((x1,pr)=>{"use strict";function Pe(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function lr(e,t){for(var n="",a=0,i=-1,r=0,o,s=0;s<=e.length;++s){if(s2){var p=n.lastIndexOf("/");if(p!==n.length-1){p===-1?(n="",a=0):(n=n.slice(0,p),a=n.length-1-n.lastIndexOf("/")),i=s,r=0;continue}}else if(n.length===2||n.length===1){n="",a=0,i=s,r=0;continue}}t&&(n.length>0?n+="/..":n="..",a=2)}else n.length>0?n+="/"+e.slice(i+1,s):n=e.slice(i+1,s),a=s-i-1;i=s,r=0}else o===46&&r!==-1?++r:r=-1}return n}function xp(e,t){var n=t.dir||t.root,a=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+a:n+e+a:a}var ct={resolve:function(){for(var t="",n=!1,a,i=arguments.length-1;i>=-1&&!n;i--){var r;i>=0?r=arguments[i]:(a===void 0&&(a=process.cwd()),r=a),Pe(r),r.length!==0&&(t=r+"/"+t,n=r.charCodeAt(0)===47)}return t=lr(t,!n),n?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(t){if(Pe(t),t.length===0)return".";var n=t.charCodeAt(0)===47,a=t.charCodeAt(t.length-1)===47;return t=lr(t,!n),t.length===0&&!n&&(t="."),t.length>0&&a&&(t+="/"),n?"/"+t:t},isAbsolute:function(t){return Pe(t),t.length>0&&t.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var t,n=0;n0&&(t===void 0?t=a:t+="/"+a)}return t===void 0?".":ct.normalize(t)},relative:function(t,n){if(Pe(t),Pe(n),t===n||(t=ct.resolve(t),n=ct.resolve(n),t===n))return"";for(var a=1;al){if(n.charCodeAt(o+u)===47)return n.slice(o+u+1);if(u===0)return n.slice(o+u)}else r>l&&(t.charCodeAt(a+u)===47?c=u:u===0&&(c=0));break}var h=t.charCodeAt(a+u),f=n.charCodeAt(o+u);if(h!==f)break;h===47&&(c=u)}var g="";for(u=a+c+1;u<=i;++u)(u===i||t.charCodeAt(u)===47)&&(g.length===0?g+="..":g+="/..");return g.length>0?g+n.slice(o+c):(o+=c,n.charCodeAt(o)===47&&++o,n.slice(o))},_makeLong:function(t){return t},dirname:function(t){if(Pe(t),t.length===0)return".";for(var n=t.charCodeAt(0),a=n===47,i=-1,r=!0,o=t.length-1;o>=1;--o)if(n=t.charCodeAt(o),n===47){if(!r){i=o;break}}else r=!1;return i===-1?a?"/":".":a&&i===1?"//":t.slice(0,i)},basename:function(t,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');Pe(t);var a=0,i=-1,r=!0,o;if(n!==void 0&&n.length>0&&n.length<=t.length){if(n.length===t.length&&n===t)return"";var s=n.length-1,p=-1;for(o=t.length-1;o>=0;--o){var l=t.charCodeAt(o);if(l===47){if(!r){a=o+1;break}}else p===-1&&(r=!1,p=o+1),s>=0&&(l===n.charCodeAt(s)?--s===-1&&(i=o):(s=-1,i=p))}return a===i?i=p:i===-1&&(i=t.length),t.slice(a,i)}else{for(o=t.length-1;o>=0;--o)if(t.charCodeAt(o)===47){if(!r){a=o+1;break}}else i===-1&&(r=!1,i=o+1);return i===-1?"":t.slice(a,i)}},extname:function(t){Pe(t);for(var n=-1,a=0,i=-1,r=!0,o=0,s=t.length-1;s>=0;--s){var p=t.charCodeAt(s);if(p===47){if(!r){a=s+1;break}continue}i===-1&&(r=!1,i=s+1),p===46?n===-1?n=s:o!==1&&(o=1):n!==-1&&(o=-1)}return n===-1||i===-1||o===0||o===1&&n===i-1&&n===a+1?"":t.slice(n,i)},format:function(t){if(t===null||typeof t!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return xp("/",t)},parse:function(t){Pe(t);var n={root:"",dir:"",base:"",ext:"",name:""};if(t.length===0)return n;var a=t.charCodeAt(0),i=a===47,r;i?(n.root="/",r=1):r=0;for(var o=-1,s=0,p=-1,l=!0,c=t.length-1,u=0;c>=r;--c){if(a=t.charCodeAt(c),a===47){if(!l){s=c+1;break}continue}p===-1&&(l=!1,p=c+1),a===46?o===-1?o=c:u!==1&&(u=1):o!==-1&&(u=-1)}return o===-1||p===-1||u===0||u===1&&o===p-1&&o===s+1?p!==-1&&(s===0&&i?n.base=n.name=t.slice(1,p):n.base=n.name=t.slice(s,p)):(s===0&&i?(n.name=t.slice(1,o),n.base=t.slice(1,p)):(n.name=t.slice(s,o),n.base=t.slice(s,p)),n.ext=t.slice(o,p)),s>0?n.dir=t.slice(0,s-1):i&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};ct.posix=ct;pr.exports=ct});var fr=K(ye=>{"use strict";var pn=cr(),vp=Bt().extname,ur=/^\s*([^;\s]*)(?:;|\s|$)/,bp=/^text\//i;ye.charset=dr;ye.charsets={lookup:dr};ye.contentType=yp;ye.extension=_p;ye.extensions=Object.create(null);ye.lookup=kp;ye.types=Object.create(null);wp(ye.extensions,ye.types);function dr(e){if(!e||typeof e!="string")return!1;var t=ur.exec(e),n=t&&pn[t[1].toLowerCase()];return n&&n.charset?n.charset:t&&bp.test(t[1])?"UTF-8":!1}function yp(e){if(!e||typeof e!="string")return!1;var t=e.indexOf("/")===-1?ye.lookup(e):e;if(!t)return!1;if(t.indexOf("charset")===-1){var n=ye.charset(t);n&&(t+="; charset="+n.toLowerCase())}return t}function _p(e){if(!e||typeof e!="string")return!1;var t=ur.exec(e),n=t&&ye.extensions[t[1].toLowerCase()];return!n||!n.length?!1:n[0]}function kp(e){if(!e||typeof e!="string")return!1;var t=vp("x."+e).toLowerCase().substr(1);return t&&ye.types[t]||!1}function wp(e,t){var n=["nginx","apache",void 0,"iana"];Object.keys(pn).forEach(function(i){var r=pn[i],o=r.extensions;if(!(!o||!o.length)){e[i]=o;for(var s=0;sc||l===c&&t[p].substr(0,12)==="application/"))continue}t[p]=i}}})}});var aa=K((b1,mr)=>{var Cp=typeof global=="object"&&global&&global.Object===Object&&global;mr.exports=Cp});var Ue=K((y1,hr)=>{var jp=aa(),Lp=typeof self=="object"&&self&&self.Object===Object&&self,Ip=jp||Lp||Function("return this")();hr.exports=Ip});var un=K((_1,gr)=>{var Sp=Ue(),Ap=Sp.Symbol;gr.exports=Ap});var vr=K((k1,xr)=>{function Mp(e,t){var n=-1,a=e.length;for(t||(t=Array(a));++n{var br=un(),yr=Object.prototype,Fp=yr.hasOwnProperty,Ep=yr.toString,Pt=br?br.toStringTag:void 0;function zp(e){var t=Fp.call(e,Pt),n=e[Pt];try{e[Pt]=void 0;var a=!0}catch{}var i=Ep.call(e);return a&&(t?e[Pt]=n:delete e[Pt]),i}_r.exports=zp});var Cr=K((C1,wr)=>{var Bp=Object.prototype,Pp=Bp.toString;function Tp(e){return Pp.call(e)}wr.exports=Tp});var lt=K((j1,Ir)=>{var jr=un(),Op=kr(),Np=Cr(),Dp="[object Null]",Wp="[object Undefined]",Lr=jr?jr.toStringTag:void 0;function Rp(e){return e==null?e===void 0?Wp:Dp:Lr&&Lr in Object(e)?Op(e):Np(e)}Ir.exports=Rp});var ia=K((L1,Sr)=>{function Up(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}Sr.exports=Up});var ra=K((I1,Ar)=>{var Vp=lt(),Hp=ia(),qp="[object AsyncFunction]",$p="[object Function]",Gp="[object GeneratorFunction]",Zp="[object Proxy]";function Kp(e){if(!Hp(e))return!1;var t=Vp(e);return t==$p||t==Gp||t==qp||t==Zp}Ar.exports=Kp});var Fr=K((S1,Mr)=>{var Yp=Ue(),Xp=Yp["__core-js_shared__"];Mr.exports=Xp});var Br=K((A1,zr)=>{var oa=Fr(),Er=function(){var e=/[^.]+$/.exec(oa&&oa.keys&&oa.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Jp(e){return!!Er&&Er in e}zr.exports=Jp});var sa=K((M1,Pr)=>{var Qp=Function.prototype,eu=Qp.toString;function tu(e){if(e!=null){try{return eu.call(e)}catch{}try{return e+""}catch{}}return""}Pr.exports=tu});var Or=K((F1,Tr)=>{var nu=ra(),au=Br(),iu=ia(),ru=sa(),ou=/[\\^$.*+?()[\]{}|]/g,su=/^\[object .+?Constructor\]$/,cu=Function.prototype,lu=Object.prototype,pu=cu.toString,uu=lu.hasOwnProperty,du=RegExp("^"+pu.call(uu).replace(ou,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function fu(e){if(!iu(e)||au(e))return!1;var t=nu(e)?du:su;return t.test(ru(e))}Tr.exports=fu});var Dr=K((E1,Nr)=>{function mu(e,t){return e?.[t]}Nr.exports=mu});var pt=K((z1,Wr)=>{var hu=Or(),gu=Dr();function xu(e,t){var n=gu(e,t);return hu(n)?n:void 0}Wr.exports=xu});var Ur=K((B1,Rr)=>{var vu=pt(),bu=Ue(),yu=vu(bu,"DataView");Rr.exports=yu});var Hr=K((P1,Vr)=>{var _u=pt(),ku=Ue(),wu=_u(ku,"Map");Vr.exports=wu});var $r=K((T1,qr)=>{var Cu=pt(),ju=Ue(),Lu=Cu(ju,"Promise");qr.exports=Lu});var Zr=K((O1,Gr)=>{var Iu=pt(),Su=Ue(),Au=Iu(Su,"Set");Gr.exports=Au});var Yr=K((N1,Kr)=>{var Mu=pt(),Fu=Ue(),Eu=Mu(Fu,"WeakMap");Kr.exports=Eu});var io=K((D1,ao)=>{var ca=Ur(),la=Hr(),pa=$r(),ua=Zr(),da=Yr(),no=lt(),ut=sa(),Xr="[object Map]",zu="[object Object]",Jr="[object Promise]",Qr="[object Set]",eo="[object WeakMap]",to="[object DataView]",Bu=ut(ca),Pu=ut(la),Tu=ut(pa),Ou=ut(ua),Nu=ut(da),nt=no;(ca&&nt(new ca(new ArrayBuffer(1)))!=to||la&&nt(new la)!=Xr||pa&&nt(pa.resolve())!=Jr||ua&&nt(new ua)!=Qr||da&&nt(new da)!=eo)&&(nt=function(e){var t=no(e),n=t==zu?e.constructor:void 0,a=n?ut(n):"";if(a)switch(a){case Bu:return to;case Pu:return Xr;case Tu:return Jr;case Ou:return Qr;case Nu:return eo}return t});ao.exports=nt});var fa=K((W1,ro)=>{var Du=9007199254740991;function Wu(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Du}ro.exports=Wu});var ma=K((R1,oo)=>{var Ru=ra(),Uu=fa();function Vu(e){return e!=null&&Uu(e.length)&&!Ru(e)}oo.exports=Vu});var ha=K((U1,so)=>{var Hu=Array.isArray;so.exports=Hu});var Tt=K((V1,co)=>{function qu(e){return e!=null&&typeof e=="object"}co.exports=qu});var po=K((H1,lo)=>{var $u=lt(),Gu=ha(),Zu=Tt(),Ku="[object String]";function Yu(e){return typeof e=="string"||!Gu(e)&&Zu(e)&&$u(e)==Ku}lo.exports=Yu});var fo=K((q1,uo)=>{function Xu(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}uo.exports=Xu});var ho=K(($1,mo)=>{function Ju(e){var t=-1,n=Array(e.size);return e.forEach(function(a,i){n[++t]=[i,a]}),n}mo.exports=Ju});var xo=K((G1,go)=>{function Qu(e){var t=-1,n=Array(e.size);return e.forEach(function(a){n[++t]=a}),n}go.exports=Qu});var bo=K((Z1,vo)=>{function ed(e){return e.split("")}vo.exports=ed});var _o=K((K1,yo)=>{var td="\\ud800-\\udfff",nd="\\u0300-\\u036f",ad="\\ufe20-\\ufe2f",id="\\u20d0-\\u20ff",rd=nd+ad+id,od="\\ufe0e\\ufe0f",sd="\\u200d",cd=RegExp("["+sd+td+rd+od+"]");function ld(e){return cd.test(e)}yo.exports=ld});var Ao=K((Y1,So)=>{var ko="\\ud800-\\udfff",pd="\\u0300-\\u036f",ud="\\ufe20-\\ufe2f",dd="\\u20d0-\\u20ff",fd=pd+ud+dd,md="\\ufe0e\\ufe0f",hd="["+ko+"]",ga="["+fd+"]",xa="\\ud83c[\\udffb-\\udfff]",gd="(?:"+ga+"|"+xa+")",wo="[^"+ko+"]",Co="(?:\\ud83c[\\udde6-\\uddff]){2}",jo="[\\ud800-\\udbff][\\udc00-\\udfff]",xd="\\u200d",Lo=gd+"?",Io="["+md+"]?",vd="(?:"+xd+"(?:"+[wo,Co,jo].join("|")+")"+Io+Lo+")*",bd=Io+Lo+vd,yd="(?:"+[wo+ga+"?",ga,Co,jo,hd].join("|")+")",_d=RegExp(xa+"(?="+xa+")|"+yd+bd,"g");function kd(e){return e.match(_d)||[]}So.exports=kd});var Fo=K((X1,Mo)=>{var wd=bo(),Cd=_o(),jd=Ao();function Ld(e){return Cd(e)?jd(e):wd(e)}Mo.exports=Ld});var zo=K((J1,Eo)=>{function Id(e,t){for(var n=-1,a=e==null?0:e.length,i=Array(a);++n{var Sd=zo();function Ad(e,t){return Sd(t,function(n){return e[n]})}Bo.exports=Ad});var Oo=K((e2,To)=>{function Md(e,t){for(var n=-1,a=Array(e);++n{var Fd=lt(),Ed=Tt(),zd="[object Arguments]";function Bd(e){return Ed(e)&&Fd(e)==zd}No.exports=Bd});var Vo=K((n2,Uo)=>{var Wo=Do(),Pd=Tt(),Ro=Object.prototype,Td=Ro.hasOwnProperty,Od=Ro.propertyIsEnumerable,Nd=Wo(function(){return arguments}())?Wo:function(e){return Pd(e)&&Td.call(e,"callee")&&!Od.call(e,"callee")};Uo.exports=Nd});var qo=K((a2,Ho)=>{function Dd(){return!1}Ho.exports=Dd});var Ko=K((Ot,dt)=>{var Wd=Ue(),Rd=qo(),Zo=typeof Ot=="object"&&Ot&&!Ot.nodeType&&Ot,$o=Zo&&typeof dt=="object"&&dt&&!dt.nodeType&&dt,Ud=$o&&$o.exports===Zo,Go=Ud?Wd.Buffer:void 0,Vd=Go?Go.isBuffer:void 0,Hd=Vd||Rd;dt.exports=Hd});var Xo=K((i2,Yo)=>{var qd=9007199254740991,$d=/^(?:0|[1-9]\d*)$/;function Gd(e,t){var n=typeof e;return t=t??qd,!!t&&(n=="number"||n!="symbol"&&$d.test(e))&&e>-1&&e%1==0&&e{var Zd=lt(),Kd=fa(),Yd=Tt(),Xd="[object Arguments]",Jd="[object Array]",Qd="[object Boolean]",ef="[object Date]",tf="[object Error]",nf="[object Function]",af="[object Map]",rf="[object Number]",of="[object Object]",sf="[object RegExp]",cf="[object Set]",lf="[object String]",pf="[object WeakMap]",uf="[object ArrayBuffer]",df="[object DataView]",ff="[object Float32Array]",mf="[object Float64Array]",hf="[object Int8Array]",gf="[object Int16Array]",xf="[object Int32Array]",vf="[object Uint8Array]",bf="[object Uint8ClampedArray]",yf="[object Uint16Array]",_f="[object Uint32Array]",pe={};pe[ff]=pe[mf]=pe[hf]=pe[gf]=pe[xf]=pe[vf]=pe[bf]=pe[yf]=pe[_f]=!0;pe[Xd]=pe[Jd]=pe[uf]=pe[Qd]=pe[df]=pe[ef]=pe[tf]=pe[nf]=pe[af]=pe[rf]=pe[of]=pe[sf]=pe[cf]=pe[lf]=pe[pf]=!1;function kf(e){return Yd(e)&&Kd(e.length)&&!!pe[Zd(e)]}Jo.exports=kf});var ts=K((o2,es)=>{function wf(e){return function(t){return e(t)}}es.exports=wf});var as=K((Nt,ft)=>{var Cf=aa(),ns=typeof Nt=="object"&&Nt&&!Nt.nodeType&&Nt,Dt=ns&&typeof ft=="object"&&ft&&!ft.nodeType&&ft,jf=Dt&&Dt.exports===ns,va=jf&&Cf.process,Lf=function(){try{var e=Dt&&Dt.require&&Dt.require("util").types;return e||va&&va.binding&&va.binding("util")}catch{}}();ft.exports=Lf});var ss=K((s2,os)=>{var If=Qo(),Sf=ts(),is=as(),rs=is&&is.isTypedArray,Af=rs?Sf(rs):If;os.exports=Af});var ls=K((c2,cs)=>{var Mf=Oo(),Ff=Vo(),Ef=ha(),zf=Ko(),Bf=Xo(),Pf=ss(),Tf=Object.prototype,Of=Tf.hasOwnProperty;function Nf(e,t){var n=Ef(e),a=!n&&Ff(e),i=!n&&!a&&zf(e),r=!n&&!a&&!i&&Pf(e),o=n||a||i||r,s=o?Mf(e.length,String):[],p=s.length;for(var l in e)(t||Of.call(e,l))&&!(o&&(l=="length"||i&&(l=="offset"||l=="parent")||r&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||Bf(l,p)))&&s.push(l);return s}cs.exports=Nf});var us=K((l2,ps)=>{var Df=Object.prototype;function Wf(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Df;return e===n}ps.exports=Wf});var fs=K((p2,ds)=>{function Rf(e,t){return function(n){return e(t(n))}}ds.exports=Rf});var hs=K((u2,ms)=>{var Uf=fs(),Vf=Uf(Object.keys,Object);ms.exports=Vf});var xs=K((d2,gs)=>{var Hf=us(),qf=hs(),$f=Object.prototype,Gf=$f.hasOwnProperty;function Zf(e){if(!Hf(e))return qf(e);var t=[];for(var n in Object(e))Gf.call(e,n)&&n!="constructor"&&t.push(n);return t}gs.exports=Zf});var bs=K((f2,vs)=>{var Kf=ls(),Yf=xs(),Xf=ma();function Jf(e){return Xf(e)?Kf(e):Yf(e)}vs.exports=Jf});var _s=K((m2,ys)=>{var Qf=Po(),em=bs();function tm(e){return e==null?[]:Qf(e,em(e))}ys.exports=tm});var Cs=K((h2,ws)=>{var ks=un(),nm=vr(),am=io(),im=ma(),rm=po(),om=fo(),sm=ho(),cm=xo(),lm=Fo(),pm=_s(),um="[object Map]",dm="[object Set]",ba=ks?ks.iterator:void 0;function fm(e){if(!e)return[];if(im(e))return rm(e)?lm(e):nm(e);if(ba&&e[ba])return om(e[ba]());var t=am(e),n=t==um?sm:t==dm?cm:pm;return n(e)}ws.exports=fm});var ya=K((g2,mm)=>{mm.exports={"100":"\u{1F4AF}","1234":"\u{1F522}",umbrella_with_rain_drops:"\u2614",coffee:"\u2615",aries:"\u2648",taurus:"\u2649",sagittarius:"\u2650",capricorn:"\u2651",aquarius:"\u2652",pisces:"\u2653",anchor:"\u2693",white_check_mark:"\u2705",sparkles:"\u2728",question:"\u2753",grey_question:"\u2754",grey_exclamation:"\u2755",exclamation:"\u2757",heavy_exclamation_mark:"\u2757",heavy_plus_sign:"\u2795",heavy_minus_sign:"\u2796",heavy_division_sign:"\u2797",hash:"#\uFE0F\u20E3",keycap_star:"*\uFE0F\u20E3",zero:"0\uFE0F\u20E3",one:"1\uFE0F\u20E3",two:"2\uFE0F\u20E3",three:"3\uFE0F\u20E3",four:"4\uFE0F\u20E3",five:"5\uFE0F\u20E3",six:"6\uFE0F\u20E3",seven:"7\uFE0F\u20E3",eight:"8\uFE0F\u20E3",nine:"9\uFE0F\u20E3",copyright:"\xA9\uFE0F",registered:"\xAE\uFE0F",mahjong:"\u{1F004}",black_joker:"\u{1F0CF}",a:"\u{1F170}\uFE0F",b:"\u{1F171}\uFE0F",o2:"\u{1F17E}\uFE0F",parking:"\u{1F17F}\uFE0F",ab:"\u{1F18E}",cl:"\u{1F191}",cool:"\u{1F192}",free:"\u{1F193}",id:"\u{1F194}",new:"\u{1F195}",ng:"\u{1F196}",ok:"\u{1F197}",sos:"\u{1F198}",up:"\u{1F199}",vs:"\u{1F19A}","flag-ac":"\u{1F1E6}\u{1F1E8}","flag-ad":"\u{1F1E6}\u{1F1E9}","flag-ae":"\u{1F1E6}\u{1F1EA}","flag-af":"\u{1F1E6}\u{1F1EB}","flag-ag":"\u{1F1E6}\u{1F1EC}","flag-ai":"\u{1F1E6}\u{1F1EE}","flag-al":"\u{1F1E6}\u{1F1F1}","flag-am":"\u{1F1E6}\u{1F1F2}","flag-ao":"\u{1F1E6}\u{1F1F4}","flag-aq":"\u{1F1E6}\u{1F1F6}","flag-ar":"\u{1F1E6}\u{1F1F7}","flag-as":"\u{1F1E6}\u{1F1F8}","flag-at":"\u{1F1E6}\u{1F1F9}","flag-au":"\u{1F1E6}\u{1F1FA}","flag-aw":"\u{1F1E6}\u{1F1FC}","flag-ax":"\u{1F1E6}\u{1F1FD}","flag-az":"\u{1F1E6}\u{1F1FF}","flag-ba":"\u{1F1E7}\u{1F1E6}","flag-bb":"\u{1F1E7}\u{1F1E7}","flag-bd":"\u{1F1E7}\u{1F1E9}","flag-be":"\u{1F1E7}\u{1F1EA}","flag-bf":"\u{1F1E7}\u{1F1EB}","flag-bg":"\u{1F1E7}\u{1F1EC}","flag-bh":"\u{1F1E7}\u{1F1ED}","flag-bi":"\u{1F1E7}\u{1F1EE}","flag-bj":"\u{1F1E7}\u{1F1EF}","flag-bl":"\u{1F1E7}\u{1F1F1}","flag-bm":"\u{1F1E7}\u{1F1F2}","flag-bn":"\u{1F1E7}\u{1F1F3}","flag-bo":"\u{1F1E7}\u{1F1F4}","flag-bq":"\u{1F1E7}\u{1F1F6}","flag-br":"\u{1F1E7}\u{1F1F7}","flag-bs":"\u{1F1E7}\u{1F1F8}","flag-bt":"\u{1F1E7}\u{1F1F9}","flag-bv":"\u{1F1E7}\u{1F1FB}","flag-bw":"\u{1F1E7}\u{1F1FC}","flag-by":"\u{1F1E7}\u{1F1FE}","flag-bz":"\u{1F1E7}\u{1F1FF}","flag-ca":"\u{1F1E8}\u{1F1E6}","flag-cc":"\u{1F1E8}\u{1F1E8}","flag-cd":"\u{1F1E8}\u{1F1E9}","flag-cf":"\u{1F1E8}\u{1F1EB}","flag-cg":"\u{1F1E8}\u{1F1EC}","flag-ch":"\u{1F1E8}\u{1F1ED}","flag-ci":"\u{1F1E8}\u{1F1EE}","flag-ck":"\u{1F1E8}\u{1F1F0}","flag-cl":"\u{1F1E8}\u{1F1F1}","flag-cm":"\u{1F1E8}\u{1F1F2}",cn:"\u{1F1E8}\u{1F1F3}","flag-cn":"\u{1F1E8}\u{1F1F3}","flag-co":"\u{1F1E8}\u{1F1F4}","flag-cp":"\u{1F1E8}\u{1F1F5}","flag-cr":"\u{1F1E8}\u{1F1F7}","flag-cu":"\u{1F1E8}\u{1F1FA}","flag-cv":"\u{1F1E8}\u{1F1FB}","flag-cw":"\u{1F1E8}\u{1F1FC}","flag-cx":"\u{1F1E8}\u{1F1FD}","flag-cy":"\u{1F1E8}\u{1F1FE}","flag-cz":"\u{1F1E8}\u{1F1FF}",de:"\u{1F1E9}\u{1F1EA}","flag-de":"\u{1F1E9}\u{1F1EA}","flag-dg":"\u{1F1E9}\u{1F1EC}","flag-dj":"\u{1F1E9}\u{1F1EF}","flag-dk":"\u{1F1E9}\u{1F1F0}","flag-dm":"\u{1F1E9}\u{1F1F2}","flag-do":"\u{1F1E9}\u{1F1F4}","flag-dz":"\u{1F1E9}\u{1F1FF}","flag-ea":"\u{1F1EA}\u{1F1E6}","flag-ec":"\u{1F1EA}\u{1F1E8}","flag-ee":"\u{1F1EA}\u{1F1EA}","flag-eg":"\u{1F1EA}\u{1F1EC}","flag-eh":"\u{1F1EA}\u{1F1ED}","flag-er":"\u{1F1EA}\u{1F1F7}",es:"\u{1F1EA}\u{1F1F8}","flag-es":"\u{1F1EA}\u{1F1F8}","flag-et":"\u{1F1EA}\u{1F1F9}","flag-eu":"\u{1F1EA}\u{1F1FA}","flag-fi":"\u{1F1EB}\u{1F1EE}","flag-fj":"\u{1F1EB}\u{1F1EF}","flag-fk":"\u{1F1EB}\u{1F1F0}","flag-fm":"\u{1F1EB}\u{1F1F2}","flag-fo":"\u{1F1EB}\u{1F1F4}",fr:"\u{1F1EB}\u{1F1F7}","flag-fr":"\u{1F1EB}\u{1F1F7}","flag-ga":"\u{1F1EC}\u{1F1E6}",gb:"\u{1F1EC}\u{1F1E7}",uk:"\u{1F1EC}\u{1F1E7}","flag-gb":"\u{1F1EC}\u{1F1E7}","flag-gd":"\u{1F1EC}\u{1F1E9}","flag-ge":"\u{1F1EC}\u{1F1EA}","flag-gf":"\u{1F1EC}\u{1F1EB}","flag-gg":"\u{1F1EC}\u{1F1EC}","flag-gh":"\u{1F1EC}\u{1F1ED}","flag-gi":"\u{1F1EC}\u{1F1EE}","flag-gl":"\u{1F1EC}\u{1F1F1}","flag-gm":"\u{1F1EC}\u{1F1F2}","flag-gn":"\u{1F1EC}\u{1F1F3}","flag-gp":"\u{1F1EC}\u{1F1F5}","flag-gq":"\u{1F1EC}\u{1F1F6}","flag-gr":"\u{1F1EC}\u{1F1F7}","flag-gs":"\u{1F1EC}\u{1F1F8}","flag-gt":"\u{1F1EC}\u{1F1F9}","flag-gu":"\u{1F1EC}\u{1F1FA}","flag-gw":"\u{1F1EC}\u{1F1FC}","flag-gy":"\u{1F1EC}\u{1F1FE}","flag-hk":"\u{1F1ED}\u{1F1F0}","flag-hm":"\u{1F1ED}\u{1F1F2}","flag-hn":"\u{1F1ED}\u{1F1F3}","flag-hr":"\u{1F1ED}\u{1F1F7}","flag-ht":"\u{1F1ED}\u{1F1F9}","flag-hu":"\u{1F1ED}\u{1F1FA}","flag-ic":"\u{1F1EE}\u{1F1E8}","flag-id":"\u{1F1EE}\u{1F1E9}","flag-ie":"\u{1F1EE}\u{1F1EA}","flag-il":"\u{1F1EE}\u{1F1F1}","flag-im":"\u{1F1EE}\u{1F1F2}","flag-in":"\u{1F1EE}\u{1F1F3}","flag-io":"\u{1F1EE}\u{1F1F4}","flag-iq":"\u{1F1EE}\u{1F1F6}","flag-ir":"\u{1F1EE}\u{1F1F7}","flag-is":"\u{1F1EE}\u{1F1F8}",it:"\u{1F1EE}\u{1F1F9}","flag-it":"\u{1F1EE}\u{1F1F9}","flag-je":"\u{1F1EF}\u{1F1EA}","flag-jm":"\u{1F1EF}\u{1F1F2}","flag-jo":"\u{1F1EF}\u{1F1F4}",jp:"\u{1F1EF}\u{1F1F5}","flag-jp":"\u{1F1EF}\u{1F1F5}","flag-ke":"\u{1F1F0}\u{1F1EA}","flag-kg":"\u{1F1F0}\u{1F1EC}","flag-kh":"\u{1F1F0}\u{1F1ED}","flag-ki":"\u{1F1F0}\u{1F1EE}","flag-km":"\u{1F1F0}\u{1F1F2}","flag-kn":"\u{1F1F0}\u{1F1F3}","flag-kp":"\u{1F1F0}\u{1F1F5}",kr:"\u{1F1F0}\u{1F1F7}","flag-kr":"\u{1F1F0}\u{1F1F7}","flag-kw":"\u{1F1F0}\u{1F1FC}","flag-ky":"\u{1F1F0}\u{1F1FE}","flag-kz":"\u{1F1F0}\u{1F1FF}","flag-la":"\u{1F1F1}\u{1F1E6}","flag-lb":"\u{1F1F1}\u{1F1E7}","flag-lc":"\u{1F1F1}\u{1F1E8}","flag-li":"\u{1F1F1}\u{1F1EE}","flag-lk":"\u{1F1F1}\u{1F1F0}","flag-lr":"\u{1F1F1}\u{1F1F7}","flag-ls":"\u{1F1F1}\u{1F1F8}","flag-lt":"\u{1F1F1}\u{1F1F9}","flag-lu":"\u{1F1F1}\u{1F1FA}","flag-lv":"\u{1F1F1}\u{1F1FB}","flag-ly":"\u{1F1F1}\u{1F1FE}","flag-ma":"\u{1F1F2}\u{1F1E6}","flag-mc":"\u{1F1F2}\u{1F1E8}","flag-md":"\u{1F1F2}\u{1F1E9}","flag-me":"\u{1F1F2}\u{1F1EA}","flag-mf":"\u{1F1F2}\u{1F1EB}","flag-mg":"\u{1F1F2}\u{1F1EC}","flag-mh":"\u{1F1F2}\u{1F1ED}","flag-mk":"\u{1F1F2}\u{1F1F0}","flag-ml":"\u{1F1F2}\u{1F1F1}","flag-mm":"\u{1F1F2}\u{1F1F2}","flag-mn":"\u{1F1F2}\u{1F1F3}","flag-mo":"\u{1F1F2}\u{1F1F4}","flag-mp":"\u{1F1F2}\u{1F1F5}","flag-mq":"\u{1F1F2}\u{1F1F6}","flag-mr":"\u{1F1F2}\u{1F1F7}","flag-ms":"\u{1F1F2}\u{1F1F8}","flag-mt":"\u{1F1F2}\u{1F1F9}","flag-mu":"\u{1F1F2}\u{1F1FA}","flag-mv":"\u{1F1F2}\u{1F1FB}","flag-mw":"\u{1F1F2}\u{1F1FC}","flag-mx":"\u{1F1F2}\u{1F1FD}","flag-my":"\u{1F1F2}\u{1F1FE}","flag-mz":"\u{1F1F2}\u{1F1FF}","flag-na":"\u{1F1F3}\u{1F1E6}","flag-nc":"\u{1F1F3}\u{1F1E8}","flag-ne":"\u{1F1F3}\u{1F1EA}","flag-nf":"\u{1F1F3}\u{1F1EB}","flag-ng":"\u{1F1F3}\u{1F1EC}","flag-ni":"\u{1F1F3}\u{1F1EE}","flag-nl":"\u{1F1F3}\u{1F1F1}","flag-no":"\u{1F1F3}\u{1F1F4}","flag-np":"\u{1F1F3}\u{1F1F5}","flag-nr":"\u{1F1F3}\u{1F1F7}","flag-nu":"\u{1F1F3}\u{1F1FA}","flag-nz":"\u{1F1F3}\u{1F1FF}","flag-om":"\u{1F1F4}\u{1F1F2}","flag-pa":"\u{1F1F5}\u{1F1E6}","flag-pe":"\u{1F1F5}\u{1F1EA}","flag-pf":"\u{1F1F5}\u{1F1EB}","flag-pg":"\u{1F1F5}\u{1F1EC}","flag-ph":"\u{1F1F5}\u{1F1ED}","flag-pk":"\u{1F1F5}\u{1F1F0}","flag-pl":"\u{1F1F5}\u{1F1F1}","flag-pm":"\u{1F1F5}\u{1F1F2}","flag-pn":"\u{1F1F5}\u{1F1F3}","flag-pr":"\u{1F1F5}\u{1F1F7}","flag-ps":"\u{1F1F5}\u{1F1F8}","flag-pt":"\u{1F1F5}\u{1F1F9}","flag-pw":"\u{1F1F5}\u{1F1FC}","flag-py":"\u{1F1F5}\u{1F1FE}","flag-qa":"\u{1F1F6}\u{1F1E6}","flag-re":"\u{1F1F7}\u{1F1EA}","flag-ro":"\u{1F1F7}\u{1F1F4}","flag-rs":"\u{1F1F7}\u{1F1F8}",ru:"\u{1F1F7}\u{1F1FA}","flag-ru":"\u{1F1F7}\u{1F1FA}","flag-rw":"\u{1F1F7}\u{1F1FC}","flag-sa":"\u{1F1F8}\u{1F1E6}","flag-sb":"\u{1F1F8}\u{1F1E7}","flag-sc":"\u{1F1F8}\u{1F1E8}","flag-sd":"\u{1F1F8}\u{1F1E9}","flag-se":"\u{1F1F8}\u{1F1EA}","flag-sg":"\u{1F1F8}\u{1F1EC}","flag-sh":"\u{1F1F8}\u{1F1ED}","flag-si":"\u{1F1F8}\u{1F1EE}","flag-sj":"\u{1F1F8}\u{1F1EF}","flag-sk":"\u{1F1F8}\u{1F1F0}","flag-sl":"\u{1F1F8}\u{1F1F1}","flag-sm":"\u{1F1F8}\u{1F1F2}","flag-sn":"\u{1F1F8}\u{1F1F3}","flag-so":"\u{1F1F8}\u{1F1F4}","flag-sr":"\u{1F1F8}\u{1F1F7}","flag-ss":"\u{1F1F8}\u{1F1F8}","flag-st":"\u{1F1F8}\u{1F1F9}","flag-sv":"\u{1F1F8}\u{1F1FB}","flag-sx":"\u{1F1F8}\u{1F1FD}","flag-sy":"\u{1F1F8}\u{1F1FE}","flag-sz":"\u{1F1F8}\u{1F1FF}","flag-ta":"\u{1F1F9}\u{1F1E6}","flag-tc":"\u{1F1F9}\u{1F1E8}","flag-td":"\u{1F1F9}\u{1F1E9}","flag-tf":"\u{1F1F9}\u{1F1EB}","flag-tg":"\u{1F1F9}\u{1F1EC}","flag-th":"\u{1F1F9}\u{1F1ED}","flag-tj":"\u{1F1F9}\u{1F1EF}","flag-tk":"\u{1F1F9}\u{1F1F0}","flag-tl":"\u{1F1F9}\u{1F1F1}","flag-tm":"\u{1F1F9}\u{1F1F2}","flag-tn":"\u{1F1F9}\u{1F1F3}","flag-to":"\u{1F1F9}\u{1F1F4}","flag-tr":"\u{1F1F9}\u{1F1F7}","flag-tt":"\u{1F1F9}\u{1F1F9}","flag-tv":"\u{1F1F9}\u{1F1FB}","flag-tw":"\u{1F1F9}\u{1F1FC}","flag-tz":"\u{1F1F9}\u{1F1FF}","flag-ua":"\u{1F1FA}\u{1F1E6}","flag-ug":"\u{1F1FA}\u{1F1EC}","flag-um":"\u{1F1FA}\u{1F1F2}","flag-un":"\u{1F1FA}\u{1F1F3}",us:"\u{1F1FA}\u{1F1F8}","flag-us":"\u{1F1FA}\u{1F1F8}","flag-uy":"\u{1F1FA}\u{1F1FE}","flag-uz":"\u{1F1FA}\u{1F1FF}","flag-va":"\u{1F1FB}\u{1F1E6}","flag-vc":"\u{1F1FB}\u{1F1E8}","flag-ve":"\u{1F1FB}\u{1F1EA}","flag-vg":"\u{1F1FB}\u{1F1EC}","flag-vi":"\u{1F1FB}\u{1F1EE}","flag-vn":"\u{1F1FB}\u{1F1F3}","flag-vu":"\u{1F1FB}\u{1F1FA}","flag-wf":"\u{1F1FC}\u{1F1EB}","flag-ws":"\u{1F1FC}\u{1F1F8}","flag-xk":"\u{1F1FD}\u{1F1F0}","flag-ye":"\u{1F1FE}\u{1F1EA}","flag-yt":"\u{1F1FE}\u{1F1F9}","flag-za":"\u{1F1FF}\u{1F1E6}","flag-zm":"\u{1F1FF}\u{1F1F2}","flag-zw":"\u{1F1FF}\u{1F1FC}",koko:"\u{1F201}",sa:"\u{1F202}\uFE0F",u7121:"\u{1F21A}",u6307:"\u{1F22F}",u7981:"\u{1F232}",u7a7a:"\u{1F233}",u5408:"\u{1F234}",u6e80:"\u{1F235}",u6709:"\u{1F236}",u6708:"\u{1F237}\uFE0F",u7533:"\u{1F238}",u5272:"\u{1F239}",u55b6:"\u{1F23A}",ideograph_advantage:"\u{1F250}",accept:"\u{1F251}",cyclone:"\u{1F300}",foggy:"\u{1F301}",closed_umbrella:"\u{1F302}",night_with_stars:"\u{1F303}",sunrise_over_mountains:"\u{1F304}",sunrise:"\u{1F305}",city_sunset:"\u{1F306}",city_sunrise:"\u{1F307}",rainbow:"\u{1F308}",bridge_at_night:"\u{1F309}",ocean:"\u{1F30A}",volcano:"\u{1F30B}",milky_way:"\u{1F30C}",earth_africa:"\u{1F30D}",earth_americas:"\u{1F30E}",earth_asia:"\u{1F30F}",globe_with_meridians:"\u{1F310}",new_moon:"\u{1F311}",waxing_crescent_moon:"\u{1F312}",first_quarter_moon:"\u{1F313}",moon:"\u{1F314}",waxing_gibbous_moon:"\u{1F314}",full_moon:"\u{1F315}",waning_gibbous_moon:"\u{1F316}",last_quarter_moon:"\u{1F317}",waning_crescent_moon:"\u{1F318}",crescent_moon:"\u{1F319}",new_moon_with_face:"\u{1F31A}",first_quarter_moon_with_face:"\u{1F31B}",last_quarter_moon_with_face:"\u{1F31C}",full_moon_with_face:"\u{1F31D}",sun_with_face:"\u{1F31E}",star2:"\u{1F31F}",stars:"\u{1F320}",thermometer:"\u{1F321}\uFE0F",mostly_sunny:"\u{1F324}\uFE0F",sun_small_cloud:"\u{1F324}\uFE0F",barely_sunny:"\u{1F325}\uFE0F",sun_behind_cloud:"\u{1F325}\uFE0F",partly_sunny_rain:"\u{1F326}\uFE0F",sun_behind_rain_cloud:"\u{1F326}\uFE0F",rain_cloud:"\u{1F327}\uFE0F",snow_cloud:"\u{1F328}\uFE0F",lightning:"\u{1F329}\uFE0F",lightning_cloud:"\u{1F329}\uFE0F",tornado:"\u{1F32A}\uFE0F",tornado_cloud:"\u{1F32A}\uFE0F",fog:"\u{1F32B}\uFE0F",wind_blowing_face:"\u{1F32C}\uFE0F",hotdog:"\u{1F32D}",taco:"\u{1F32E}",burrito:"\u{1F32F}",chestnut:"\u{1F330}",seedling:"\u{1F331}",evergreen_tree:"\u{1F332}",deciduous_tree:"\u{1F333}",palm_tree:"\u{1F334}",cactus:"\u{1F335}",hot_pepper:"\u{1F336}\uFE0F",tulip:"\u{1F337}",cherry_blossom:"\u{1F338}",rose:"\u{1F339}",hibiscus:"\u{1F33A}",sunflower:"\u{1F33B}",blossom:"\u{1F33C}",corn:"\u{1F33D}",ear_of_rice:"\u{1F33E}",herb:"\u{1F33F}",four_leaf_clover:"\u{1F340}",maple_leaf:"\u{1F341}",fallen_leaf:"\u{1F342}",leaves:"\u{1F343}",mushroom:"\u{1F344}",tomato:"\u{1F345}",eggplant:"\u{1F346}",grapes:"\u{1F347}",melon:"\u{1F348}",watermelon:"\u{1F349}",tangerine:"\u{1F34A}",lemon:"\u{1F34B}",banana:"\u{1F34C}",pineapple:"\u{1F34D}",apple:"\u{1F34E}",green_apple:"\u{1F34F}",pear:"\u{1F350}",peach:"\u{1F351}",cherries:"\u{1F352}",strawberry:"\u{1F353}",hamburger:"\u{1F354}",pizza:"\u{1F355}",meat_on_bone:"\u{1F356}",poultry_leg:"\u{1F357}",rice_cracker:"\u{1F358}",rice_ball:"\u{1F359}",rice:"\u{1F35A}",curry:"\u{1F35B}",ramen:"\u{1F35C}",spaghetti:"\u{1F35D}",bread:"\u{1F35E}",fries:"\u{1F35F}",sweet_potato:"\u{1F360}",dango:"\u{1F361}",oden:"\u{1F362}",sushi:"\u{1F363}",fried_shrimp:"\u{1F364}",fish_cake:"\u{1F365}",icecream:"\u{1F366}",shaved_ice:"\u{1F367}",ice_cream:"\u{1F368}",doughnut:"\u{1F369}",cookie:"\u{1F36A}",chocolate_bar:"\u{1F36B}",candy:"\u{1F36C}",lollipop:"\u{1F36D}",custard:"\u{1F36E}",honey_pot:"\u{1F36F}",cake:"\u{1F370}",bento:"\u{1F371}",stew:"\u{1F372}",fried_egg:"\u{1F373}",cooking:"\u{1F373}",fork_and_knife:"\u{1F374}",tea:"\u{1F375}",sake:"\u{1F376}",wine_glass:"\u{1F377}",cocktail:"\u{1F378}",tropical_drink:"\u{1F379}",beer:"\u{1F37A}",beers:"\u{1F37B}",baby_bottle:"\u{1F37C}",knife_fork_plate:"\u{1F37D}\uFE0F",champagne:"\u{1F37E}",popcorn:"\u{1F37F}",ribbon:"\u{1F380}",gift:"\u{1F381}",birthday:"\u{1F382}",jack_o_lantern:"\u{1F383}",christmas_tree:"\u{1F384}",santa:"\u{1F385}",fireworks:"\u{1F386}",sparkler:"\u{1F387}",balloon:"\u{1F388}",tada:"\u{1F389}",confetti_ball:"\u{1F38A}",tanabata_tree:"\u{1F38B}",crossed_flags:"\u{1F38C}",bamboo:"\u{1F38D}",dolls:"\u{1F38E}",flags:"\u{1F38F}",wind_chime:"\u{1F390}",rice_scene:"\u{1F391}",school_satchel:"\u{1F392}",mortar_board:"\u{1F393}",medal:"\u{1F396}\uFE0F",reminder_ribbon:"\u{1F397}\uFE0F",studio_microphone:"\u{1F399}\uFE0F",level_slider:"\u{1F39A}\uFE0F",control_knobs:"\u{1F39B}\uFE0F",film_frames:"\u{1F39E}\uFE0F",admission_tickets:"\u{1F39F}\uFE0F",carousel_horse:"\u{1F3A0}",ferris_wheel:"\u{1F3A1}",roller_coaster:"\u{1F3A2}",fishing_pole_and_fish:"\u{1F3A3}",microphone:"\u{1F3A4}",movie_camera:"\u{1F3A5}",cinema:"\u{1F3A6}",headphones:"\u{1F3A7}",art:"\u{1F3A8}",tophat:"\u{1F3A9}",circus_tent:"\u{1F3AA}",ticket:"\u{1F3AB}",clapper:"\u{1F3AC}",performing_arts:"\u{1F3AD}",video_game:"\u{1F3AE}",dart:"\u{1F3AF}",slot_machine:"\u{1F3B0}","8ball":"\u{1F3B1}",game_die:"\u{1F3B2}",bowling:"\u{1F3B3}",flower_playing_cards:"\u{1F3B4}",musical_note:"\u{1F3B5}",notes:"\u{1F3B6}",saxophone:"\u{1F3B7}",guitar:"\u{1F3B8}",musical_keyboard:"\u{1F3B9}",trumpet:"\u{1F3BA}",violin:"\u{1F3BB}",musical_score:"\u{1F3BC}",running_shirt_with_sash:"\u{1F3BD}",tennis:"\u{1F3BE}",ski:"\u{1F3BF}",basketball:"\u{1F3C0}",checkered_flag:"\u{1F3C1}",snowboarder:"\u{1F3C2}","woman-running":"\u{1F3C3}\u200D\u2640\uFE0F",running_woman:"\u{1F3C3}\u200D\u2640\uFE0F","man-running":"\u{1F3C3}\u200D\u2642\uFE0F",runner:"\u{1F3C3}\u200D\u2642\uFE0F",running:"\u{1F3C3}\u200D\u2642\uFE0F",running_man:"\u{1F3C3}\u200D\u2642\uFE0F","woman-surfing":"\u{1F3C4}\u200D\u2640\uFE0F",surfing_woman:"\u{1F3C4}\u200D\u2640\uFE0F","man-surfing":"\u{1F3C4}\u200D\u2642\uFE0F",surfer:"\u{1F3C4}\u200D\u2642\uFE0F",surfing_man:"\u{1F3C4}\u200D\u2642\uFE0F",sports_medal:"\u{1F3C5}",trophy:"\u{1F3C6}",horse_racing:"\u{1F3C7}",football:"\u{1F3C8}",rugby_football:"\u{1F3C9}","woman-swimming":"\u{1F3CA}\u200D\u2640\uFE0F",swimming_woman:"\u{1F3CA}\u200D\u2640\uFE0F","man-swimming":"\u{1F3CA}\u200D\u2642\uFE0F",swimmer:"\u{1F3CA}\u200D\u2642\uFE0F",swimming_man:"\u{1F3CA}\u200D\u2642\uFE0F","woman-lifting-weights":"\u{1F3CB}\uFE0F\u200D\u2640\uFE0F",weight_lifting_woman:"\u{1F3CB}\uFE0F\u200D\u2640\uFE0F","man-lifting-weights":"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F",weight_lifter:"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F",weight_lifting_man:"\u{1F3CB}\uFE0F\u200D\u2642\uFE0F","woman-golfing":"\u{1F3CC}\uFE0F\u200D\u2640\uFE0F",golfing_woman:"\u{1F3CC}\uFE0F\u200D\u2640\uFE0F","man-golfing":"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",golfer:"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",golfing_man:"\u{1F3CC}\uFE0F\u200D\u2642\uFE0F",racing_motorcycle:"\u{1F3CD}\uFE0F",racing_car:"\u{1F3CE}\uFE0F",cricket_bat_and_ball:"\u{1F3CF}",volleyball:"\u{1F3D0}",field_hockey_stick_and_ball:"\u{1F3D1}",ice_hockey_stick_and_puck:"\u{1F3D2}",table_tennis_paddle_and_ball:"\u{1F3D3}",snow_capped_mountain:"\u{1F3D4}\uFE0F",camping:"\u{1F3D5}\uFE0F",beach_with_umbrella:"\u{1F3D6}\uFE0F",building_construction:"\u{1F3D7}\uFE0F",house_buildings:"\u{1F3D8}\uFE0F",cityscape:"\u{1F3D9}\uFE0F",derelict_house_building:"\u{1F3DA}\uFE0F",classical_building:"\u{1F3DB}\uFE0F",desert:"\u{1F3DC}\uFE0F",desert_island:"\u{1F3DD}\uFE0F",national_park:"\u{1F3DE}\uFE0F",stadium:"\u{1F3DF}\uFE0F",house:"\u{1F3E0}",house_with_garden:"\u{1F3E1}",office:"\u{1F3E2}",post_office:"\u{1F3E3}",european_post_office:"\u{1F3E4}",hospital:"\u{1F3E5}",bank:"\u{1F3E6}",atm:"\u{1F3E7}",hotel:"\u{1F3E8}",love_hotel:"\u{1F3E9}",convenience_store:"\u{1F3EA}",school:"\u{1F3EB}",department_store:"\u{1F3EC}",factory:"\u{1F3ED}",izakaya_lantern:"\u{1F3EE}",lantern:"\u{1F3EE}",japanese_castle:"\u{1F3EF}",european_castle:"\u{1F3F0}","rainbow-flag":"\u{1F3F3}\uFE0F\u200D\u{1F308}",transgender_flag:"\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F",waving_white_flag:"\u{1F3F3}\uFE0F",pirate_flag:"\u{1F3F4}\u200D\u2620\uFE0F","flag-england":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}","flag-scotland":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}","flag-wales":"\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}",waving_black_flag:"\u{1F3F4}",rosette:"\u{1F3F5}\uFE0F",label:"\u{1F3F7}\uFE0F",badminton_racquet_and_shuttlecock:"\u{1F3F8}",bow_and_arrow:"\u{1F3F9}",amphora:"\u{1F3FA}","skin-tone-2":"\u{1F3FB}","skin-tone-3":"\u{1F3FC}","skin-tone-4":"\u{1F3FD}","skin-tone-5":"\u{1F3FE}","skin-tone-6":"\u{1F3FF}",rat:"\u{1F400}",mouse2:"\u{1F401}",ox:"\u{1F402}",water_buffalo:"\u{1F403}",cow2:"\u{1F404}",tiger2:"\u{1F405}",leopard:"\u{1F406}",rabbit2:"\u{1F407}",black_cat:"\u{1F408}\u200D\u2B1B",cat2:"\u{1F408}",dragon:"\u{1F409}",crocodile:"\u{1F40A}",whale2:"\u{1F40B}",snail:"\u{1F40C}",snake:"\u{1F40D}",racehorse:"\u{1F40E}",ram:"\u{1F40F}",goat:"\u{1F410}",sheep:"\u{1F411}",monkey:"\u{1F412}",rooster:"\u{1F413}",chicken:"\u{1F414}",service_dog:"\u{1F415}\u200D\u{1F9BA}",dog2:"\u{1F415}",pig2:"\u{1F416}",boar:"\u{1F417}",elephant:"\u{1F418}",octopus:"\u{1F419}",shell:"\u{1F41A}",bug:"\u{1F41B}",ant:"\u{1F41C}",bee:"\u{1F41D}",honeybee:"\u{1F41D}",ladybug:"\u{1F41E}",lady_beetle:"\u{1F41E}",fish:"\u{1F41F}",tropical_fish:"\u{1F420}",blowfish:"\u{1F421}",turtle:"\u{1F422}",hatching_chick:"\u{1F423}",baby_chick:"\u{1F424}",hatched_chick:"\u{1F425}",bird:"\u{1F426}",penguin:"\u{1F427}",koala:"\u{1F428}",poodle:"\u{1F429}",dromedary_camel:"\u{1F42A}",camel:"\u{1F42B}",dolphin:"\u{1F42C}",flipper:"\u{1F42C}",mouse:"\u{1F42D}",cow:"\u{1F42E}",tiger:"\u{1F42F}",rabbit:"\u{1F430}",cat:"\u{1F431}",dragon_face:"\u{1F432}",whale:"\u{1F433}",horse:"\u{1F434}",monkey_face:"\u{1F435}",dog:"\u{1F436}",pig:"\u{1F437}",frog:"\u{1F438}",hamster:"\u{1F439}",wolf:"\u{1F43A}",polar_bear:"\u{1F43B}\u200D\u2744\uFE0F",bear:"\u{1F43B}",panda_face:"\u{1F43C}",pig_nose:"\u{1F43D}",feet:"\u{1F43E}",paw_prints:"\u{1F43E}",chipmunk:"\u{1F43F}\uFE0F",eyes:"\u{1F440}","eye-in-speech-bubble":"\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F",eye:"\u{1F441}\uFE0F",ear:"\u{1F442}",nose:"\u{1F443}",lips:"\u{1F444}",tongue:"\u{1F445}",point_up_2:"\u{1F446}",point_down:"\u{1F447}",point_left:"\u{1F448}",point_right:"\u{1F449}",facepunch:"\u{1F44A}",punch:"\u{1F44A}",wave:"\u{1F44B}",ok_hand:"\u{1F44C}","+1":"\u{1F44D}",thumbsup:"\u{1F44D}","-1":"\u{1F44E}",thumbsdown:"\u{1F44E}",clap:"\u{1F44F}",open_hands:"\u{1F450}",crown:"\u{1F451}",womans_hat:"\u{1F452}",eyeglasses:"\u{1F453}",necktie:"\u{1F454}",shirt:"\u{1F455}",tshirt:"\u{1F455}",jeans:"\u{1F456}",dress:"\u{1F457}",kimono:"\u{1F458}",bikini:"\u{1F459}",womans_clothes:"\u{1F45A}",purse:"\u{1F45B}",handbag:"\u{1F45C}",pouch:"\u{1F45D}",mans_shoe:"\u{1F45E}",shoe:"\u{1F45E}",athletic_shoe:"\u{1F45F}",high_heel:"\u{1F460}",sandal:"\u{1F461}",boot:"\u{1F462}",footprints:"\u{1F463}",bust_in_silhouette:"\u{1F464}",busts_in_silhouette:"\u{1F465}",boy:"\u{1F466}",girl:"\u{1F467}","male-farmer":"\u{1F468}\u200D\u{1F33E}","male-cook":"\u{1F468}\u200D\u{1F373}",man_feeding_baby:"\u{1F468}\u200D\u{1F37C}","male-student":"\u{1F468}\u200D\u{1F393}","male-singer":"\u{1F468}\u200D\u{1F3A4}","male-artist":"\u{1F468}\u200D\u{1F3A8}","male-teacher":"\u{1F468}\u200D\u{1F3EB}","male-factory-worker":"\u{1F468}\u200D\u{1F3ED}","man-boy-boy":"\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","man-boy":"\u{1F468}\u200D\u{1F466}","man-girl-boy":"\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","man-girl-girl":"\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","man-girl":"\u{1F468}\u200D\u{1F467}","man-man-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F466}","man-man-boy-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}","man-man-girl":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}","man-man-girl-boy":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}","man-man-girl-girl":"\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}","man-woman-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}",family:"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}","man-woman-boy-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","man-woman-girl":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}","man-woman-girl-boy":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","man-woman-girl-girl":"\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","male-technologist":"\u{1F468}\u200D\u{1F4BB}","male-office-worker":"\u{1F468}\u200D\u{1F4BC}","male-mechanic":"\u{1F468}\u200D\u{1F527}","male-scientist":"\u{1F468}\u200D\u{1F52C}","male-astronaut":"\u{1F468}\u200D\u{1F680}","male-firefighter":"\u{1F468}\u200D\u{1F692}",man_with_probing_cane:"\u{1F468}\u200D\u{1F9AF}",red_haired_man:"\u{1F468}\u200D\u{1F9B0}",curly_haired_man:"\u{1F468}\u200D\u{1F9B1}",bald_man:"\u{1F468}\u200D\u{1F9B2}",white_haired_man:"\u{1F468}\u200D\u{1F9B3}",man_in_motorized_wheelchair:"\u{1F468}\u200D\u{1F9BC}",man_in_manual_wheelchair:"\u{1F468}\u200D\u{1F9BD}","male-doctor":"\u{1F468}\u200D\u2695\uFE0F","male-judge":"\u{1F468}\u200D\u2696\uFE0F","male-pilot":"\u{1F468}\u200D\u2708\uFE0F","man-heart-man":"\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}","man-kiss-man":"\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}",man:"\u{1F468}","female-farmer":"\u{1F469}\u200D\u{1F33E}","female-cook":"\u{1F469}\u200D\u{1F373}",woman_feeding_baby:"\u{1F469}\u200D\u{1F37C}","female-student":"\u{1F469}\u200D\u{1F393}","female-singer":"\u{1F469}\u200D\u{1F3A4}","female-artist":"\u{1F469}\u200D\u{1F3A8}","female-teacher":"\u{1F469}\u200D\u{1F3EB}","female-factory-worker":"\u{1F469}\u200D\u{1F3ED}","woman-boy-boy":"\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","woman-boy":"\u{1F469}\u200D\u{1F466}","woman-girl-boy":"\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","woman-girl-girl":"\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","woman-girl":"\u{1F469}\u200D\u{1F467}","woman-woman-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F466}","woman-woman-boy-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}","woman-woman-girl":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}","woman-woman-girl-boy":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}","woman-woman-girl-girl":"\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}","female-technologist":"\u{1F469}\u200D\u{1F4BB}","female-office-worker":"\u{1F469}\u200D\u{1F4BC}","female-mechanic":"\u{1F469}\u200D\u{1F527}","female-scientist":"\u{1F469}\u200D\u{1F52C}","female-astronaut":"\u{1F469}\u200D\u{1F680}","female-firefighter":"\u{1F469}\u200D\u{1F692}",woman_with_probing_cane:"\u{1F469}\u200D\u{1F9AF}",red_haired_woman:"\u{1F469}\u200D\u{1F9B0}",curly_haired_woman:"\u{1F469}\u200D\u{1F9B1}",bald_woman:"\u{1F469}\u200D\u{1F9B2}",white_haired_woman:"\u{1F469}\u200D\u{1F9B3}",woman_in_motorized_wheelchair:"\u{1F469}\u200D\u{1F9BC}",woman_in_manual_wheelchair:"\u{1F469}\u200D\u{1F9BD}","female-doctor":"\u{1F469}\u200D\u2695\uFE0F","female-judge":"\u{1F469}\u200D\u2696\uFE0F","female-pilot":"\u{1F469}\u200D\u2708\uFE0F","woman-heart-man":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}","woman-heart-woman":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}","woman-kiss-man":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}","woman-kiss-woman":"\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}",woman:"\u{1F469}",man_and_woman_holding_hands:"\u{1F46B}",woman_and_man_holding_hands:"\u{1F46B}",couple:"\u{1F46B}",two_men_holding_hands:"\u{1F46C}",men_holding_hands:"\u{1F46C}",two_women_holding_hands:"\u{1F46D}",women_holding_hands:"\u{1F46D}","female-police-officer":"\u{1F46E}\u200D\u2640\uFE0F","male-police-officer":"\u{1F46E}\u200D\u2642\uFE0F",cop:"\u{1F46E}\u200D\u2642\uFE0F","women-with-bunny-ears-partying":"\u{1F46F}\u200D\u2640\uFE0F","woman-with-bunny-ears-partying":"\u{1F46F}\u200D\u2640\uFE0F",dancers:"\u{1F46F}\u200D\u2640\uFE0F","men-with-bunny-ears-partying":"\u{1F46F}\u200D\u2642\uFE0F","man-with-bunny-ears-partying":"\u{1F46F}\u200D\u2642\uFE0F",woman_with_veil:"\u{1F470}\u200D\u2640\uFE0F",man_with_veil:"\u{1F470}\u200D\u2642\uFE0F",bride_with_veil:"\u{1F470}","blond-haired-woman":"\u{1F471}\u200D\u2640\uFE0F","blond-haired-man":"\u{1F471}\u200D\u2642\uFE0F",person_with_blond_hair:"\u{1F471}\u200D\u2642\uFE0F",man_with_gua_pi_mao:"\u{1F472}","woman-wearing-turban":"\u{1F473}\u200D\u2640\uFE0F",woman_with_turban:"\u{1F473}\u200D\u2640\uFE0F","man-wearing-turban":"\u{1F473}\u200D\u2642\uFE0F",man_with_turban:"\u{1F473}\u200D\u2642\uFE0F",older_man:"\u{1F474}",older_woman:"\u{1F475}",baby:"\u{1F476}","female-construction-worker":"\u{1F477}\u200D\u2640\uFE0F","male-construction-worker":"\u{1F477}\u200D\u2642\uFE0F",construction_worker:"\u{1F477}\u200D\u2642\uFE0F",princess:"\u{1F478}",japanese_ogre:"\u{1F479}",japanese_goblin:"\u{1F47A}",ghost:"\u{1F47B}",angel:"\u{1F47C}",alien:"\u{1F47D}",space_invader:"\u{1F47E}",imp:"\u{1F47F}",skull:"\u{1F480}","woman-tipping-hand":"\u{1F481}\u200D\u2640\uFE0F",information_desk_person:"\u{1F481}\u200D\u2640\uFE0F",tipping_hand_woman:"\u{1F481}\u200D\u2640\uFE0F","man-tipping-hand":"\u{1F481}\u200D\u2642\uFE0F",tipping_hand_man:"\u{1F481}\u200D\u2642\uFE0F","female-guard":"\u{1F482}\u200D\u2640\uFE0F",guardswoman:"\u{1F482}\u200D\u2640\uFE0F","male-guard":"\u{1F482}\u200D\u2642\uFE0F",guardsman:"\u{1F482}\u200D\u2642\uFE0F",dancer:"\u{1F483}",lipstick:"\u{1F484}",nail_care:"\u{1F485}","woman-getting-massage":"\u{1F486}\u200D\u2640\uFE0F",massage:"\u{1F486}\u200D\u2640\uFE0F","man-getting-massage":"\u{1F486}\u200D\u2642\uFE0F","woman-getting-haircut":"\u{1F487}\u200D\u2640\uFE0F",haircut:"\u{1F487}\u200D\u2640\uFE0F","man-getting-haircut":"\u{1F487}\u200D\u2642\uFE0F",barber:"\u{1F488}",syringe:"\u{1F489}",pill:"\u{1F48A}",kiss:"\u{1F48B}",love_letter:"\u{1F48C}",ring:"\u{1F48D}",gem:"\u{1F48E}",couplekiss:"\u{1F48F}",bouquet:"\u{1F490}",couple_with_heart:"\u{1F491}",wedding:"\u{1F492}",heartbeat:"\u{1F493}",broken_heart:"\u{1F494}",two_hearts:"\u{1F495}",sparkling_heart:"\u{1F496}",heartpulse:"\u{1F497}",cupid:"\u{1F498}",blue_heart:"\u{1F499}",green_heart:"\u{1F49A}",yellow_heart:"\u{1F49B}",purple_heart:"\u{1F49C}",gift_heart:"\u{1F49D}",revolving_hearts:"\u{1F49E}",heart_decoration:"\u{1F49F}",diamond_shape_with_a_dot_inside:"\u{1F4A0}",bulb:"\u{1F4A1}",anger:"\u{1F4A2}",bomb:"\u{1F4A3}",zzz:"\u{1F4A4}",boom:"\u{1F4A5}",collision:"\u{1F4A5}",sweat_drops:"\u{1F4A6}",droplet:"\u{1F4A7}",dash:"\u{1F4A8}",hankey:"\u{1F4A9}",poop:"\u{1F4A9}",shit:"\u{1F4A9}",muscle:"\u{1F4AA}",dizzy:"\u{1F4AB}",speech_balloon:"\u{1F4AC}",thought_balloon:"\u{1F4AD}",white_flower:"\u{1F4AE}",moneybag:"\u{1F4B0}",currency_exchange:"\u{1F4B1}",heavy_dollar_sign:"\u{1F4B2}",credit_card:"\u{1F4B3}",yen:"\u{1F4B4}",dollar:"\u{1F4B5}",euro:"\u{1F4B6}",pound:"\u{1F4B7}",money_with_wings:"\u{1F4B8}",chart:"\u{1F4B9}",seat:"\u{1F4BA}",computer:"\u{1F4BB}",briefcase:"\u{1F4BC}",minidisc:"\u{1F4BD}",floppy_disk:"\u{1F4BE}",cd:"\u{1F4BF}",dvd:"\u{1F4C0}",file_folder:"\u{1F4C1}",open_file_folder:"\u{1F4C2}",page_with_curl:"\u{1F4C3}",page_facing_up:"\u{1F4C4}",date:"\u{1F4C5}",calendar:"\u{1F4C6}",card_index:"\u{1F4C7}",chart_with_upwards_trend:"\u{1F4C8}",chart_with_downwards_trend:"\u{1F4C9}",bar_chart:"\u{1F4CA}",clipboard:"\u{1F4CB}",pushpin:"\u{1F4CC}",round_pushpin:"\u{1F4CD}",paperclip:"\u{1F4CE}",straight_ruler:"\u{1F4CF}",triangular_ruler:"\u{1F4D0}",bookmark_tabs:"\u{1F4D1}",ledger:"\u{1F4D2}",notebook:"\u{1F4D3}",notebook_with_decorative_cover:"\u{1F4D4}",closed_book:"\u{1F4D5}",book:"\u{1F4D6}",open_book:"\u{1F4D6}",green_book:"\u{1F4D7}",blue_book:"\u{1F4D8}",orange_book:"\u{1F4D9}",books:"\u{1F4DA}",name_badge:"\u{1F4DB}",scroll:"\u{1F4DC}",memo:"\u{1F4DD}",pencil:"\u{1F4DD}",telephone_receiver:"\u{1F4DE}",pager:"\u{1F4DF}",fax:"\u{1F4E0}",satellite_antenna:"\u{1F4E1}",loudspeaker:"\u{1F4E2}",mega:"\u{1F4E3}",outbox_tray:"\u{1F4E4}",inbox_tray:"\u{1F4E5}",package:"\u{1F4E6}","e-mail":"\u{1F4E7}",incoming_envelope:"\u{1F4E8}",envelope_with_arrow:"\u{1F4E9}",mailbox_closed:"\u{1F4EA}",mailbox:"\u{1F4EB}",mailbox_with_mail:"\u{1F4EC}",mailbox_with_no_mail:"\u{1F4ED}",postbox:"\u{1F4EE}",postal_horn:"\u{1F4EF}",newspaper:"\u{1F4F0}",iphone:"\u{1F4F1}",calling:"\u{1F4F2}",vibration_mode:"\u{1F4F3}",mobile_phone_off:"\u{1F4F4}",no_mobile_phones:"\u{1F4F5}",signal_strength:"\u{1F4F6}",camera:"\u{1F4F7}",camera_with_flash:"\u{1F4F8}",video_camera:"\u{1F4F9}",tv:"\u{1F4FA}",radio:"\u{1F4FB}",vhs:"\u{1F4FC}",film_projector:"\u{1F4FD}\uFE0F",prayer_beads:"\u{1F4FF}",twisted_rightwards_arrows:"\u{1F500}",repeat:"\u{1F501}",repeat_one:"\u{1F502}",arrows_clockwise:"\u{1F503}",arrows_counterclockwise:"\u{1F504}",low_brightness:"\u{1F505}",high_brightness:"\u{1F506}",mute:"\u{1F507}",speaker:"\u{1F508}",sound:"\u{1F509}",loud_sound:"\u{1F50A}",battery:"\u{1F50B}",electric_plug:"\u{1F50C}",mag:"\u{1F50D}",mag_right:"\u{1F50E}",lock_with_ink_pen:"\u{1F50F}",closed_lock_with_key:"\u{1F510}",key:"\u{1F511}",lock:"\u{1F512}",unlock:"\u{1F513}",bell:"\u{1F514}",no_bell:"\u{1F515}",bookmark:"\u{1F516}",link:"\u{1F517}",radio_button:"\u{1F518}",back:"\u{1F519}",end:"\u{1F51A}",on:"\u{1F51B}",soon:"\u{1F51C}",top:"\u{1F51D}",underage:"\u{1F51E}",keycap_ten:"\u{1F51F}",capital_abcd:"\u{1F520}",abcd:"\u{1F521}",symbols:"\u{1F523}",abc:"\u{1F524}",fire:"\u{1F525}",flashlight:"\u{1F526}",wrench:"\u{1F527}",hammer:"\u{1F528}",nut_and_bolt:"\u{1F529}",hocho:"\u{1F52A}",knife:"\u{1F52A}",gun:"\u{1F52B}",microscope:"\u{1F52C}",telescope:"\u{1F52D}",crystal_ball:"\u{1F52E}",six_pointed_star:"\u{1F52F}",beginner:"\u{1F530}",trident:"\u{1F531}",black_square_button:"\u{1F532}",white_square_button:"\u{1F533}",red_circle:"\u{1F534}",large_blue_circle:"\u{1F535}",large_orange_diamond:"\u{1F536}",large_blue_diamond:"\u{1F537}",small_orange_diamond:"\u{1F538}",small_blue_diamond:"\u{1F539}",small_red_triangle:"\u{1F53A}",small_red_triangle_down:"\u{1F53B}",arrow_up_small:"\u{1F53C}",arrow_down_small:"\u{1F53D}",om_symbol:"\u{1F549}\uFE0F",dove_of_peace:"\u{1F54A}\uFE0F",kaaba:"\u{1F54B}",mosque:"\u{1F54C}",synagogue:"\u{1F54D}",menorah_with_nine_branches:"\u{1F54E}",clock1:"\u{1F550}",clock2:"\u{1F551}",clock3:"\u{1F552}",clock4:"\u{1F553}",clock5:"\u{1F554}",clock6:"\u{1F555}",clock7:"\u{1F556}",clock8:"\u{1F557}",clock9:"\u{1F558}",clock10:"\u{1F559}",clock11:"\u{1F55A}",clock12:"\u{1F55B}",clock130:"\u{1F55C}",clock230:"\u{1F55D}",clock330:"\u{1F55E}",clock430:"\u{1F55F}",clock530:"\u{1F560}",clock630:"\u{1F561}",clock730:"\u{1F562}",clock830:"\u{1F563}",clock930:"\u{1F564}",clock1030:"\u{1F565}",clock1130:"\u{1F566}",clock1230:"\u{1F567}",candle:"\u{1F56F}\uFE0F",mantelpiece_clock:"\u{1F570}\uFE0F",hole:"\u{1F573}\uFE0F",man_in_business_suit_levitating:"\u{1F574}\uFE0F","female-detective":"\u{1F575}\uFE0F\u200D\u2640\uFE0F","male-detective":"\u{1F575}\uFE0F\u200D\u2642\uFE0F",sleuth_or_spy:"\u{1F575}\uFE0F\u200D\u2642\uFE0F",dark_sunglasses:"\u{1F576}\uFE0F",spider:"\u{1F577}\uFE0F",spider_web:"\u{1F578}\uFE0F",joystick:"\u{1F579}\uFE0F",man_dancing:"\u{1F57A}",linked_paperclips:"\u{1F587}\uFE0F",lower_left_ballpoint_pen:"\u{1F58A}\uFE0F",lower_left_fountain_pen:"\u{1F58B}\uFE0F",lower_left_paintbrush:"\u{1F58C}\uFE0F",lower_left_crayon:"\u{1F58D}\uFE0F",raised_hand_with_fingers_splayed:"\u{1F590}\uFE0F",middle_finger:"\u{1F595}",reversed_hand_with_middle_finger_extended:"\u{1F595}","spock-hand":"\u{1F596}",black_heart:"\u{1F5A4}",desktop_computer:"\u{1F5A5}\uFE0F",printer:"\u{1F5A8}\uFE0F",three_button_mouse:"\u{1F5B1}\uFE0F",trackball:"\u{1F5B2}\uFE0F",frame_with_picture:"\u{1F5BC}\uFE0F",card_index_dividers:"\u{1F5C2}\uFE0F",card_file_box:"\u{1F5C3}\uFE0F",file_cabinet:"\u{1F5C4}\uFE0F",wastebasket:"\u{1F5D1}\uFE0F",spiral_note_pad:"\u{1F5D2}\uFE0F",spiral_calendar_pad:"\u{1F5D3}\uFE0F",compression:"\u{1F5DC}\uFE0F",old_key:"\u{1F5DD}\uFE0F",rolled_up_newspaper:"\u{1F5DE}\uFE0F",dagger_knife:"\u{1F5E1}\uFE0F",speaking_head_in_silhouette:"\u{1F5E3}\uFE0F",left_speech_bubble:"\u{1F5E8}\uFE0F",right_anger_bubble:"\u{1F5EF}\uFE0F",ballot_box_with_ballot:"\u{1F5F3}\uFE0F",world_map:"\u{1F5FA}\uFE0F",mount_fuji:"\u{1F5FB}",tokyo_tower:"\u{1F5FC}",statue_of_liberty:"\u{1F5FD}",japan:"\u{1F5FE}",moyai:"\u{1F5FF}",grinning:"\u{1F600}",grin:"\u{1F601}",joy:"\u{1F602}",smiley:"\u{1F603}",smile:"\u{1F604}",sweat_smile:"\u{1F605}",laughing:"\u{1F606}",satisfied:"\u{1F606}",innocent:"\u{1F607}",smiling_imp:"\u{1F608}",wink:"\u{1F609}",blush:"\u{1F60A}",yum:"\u{1F60B}",relieved:"\u{1F60C}",heart_eyes:"\u{1F60D}",sunglasses:"\u{1F60E}",smirk:"\u{1F60F}",neutral_face:"\u{1F610}",expressionless:"\u{1F611}",unamused:"\u{1F612}",sweat:"\u{1F613}",pensive:"\u{1F614}",confused:"\u{1F615}",confounded:"\u{1F616}",kissing:"\u{1F617}",kissing_heart:"\u{1F618}",kissing_smiling_eyes:"\u{1F619}",kissing_closed_eyes:"\u{1F61A}",stuck_out_tongue:"\u{1F61B}",stuck_out_tongue_winking_eye:"\u{1F61C}",stuck_out_tongue_closed_eyes:"\u{1F61D}",disappointed:"\u{1F61E}",worried:"\u{1F61F}",angry:"\u{1F620}",rage:"\u{1F621}",cry:"\u{1F622}",persevere:"\u{1F623}",triumph:"\u{1F624}",disappointed_relieved:"\u{1F625}",frowning:"\u{1F626}",anguished:"\u{1F627}",fearful:"\u{1F628}",weary:"\u{1F629}",sleepy:"\u{1F62A}",tired_face:"\u{1F62B}",grimacing:"\u{1F62C}",sob:"\u{1F62D}",face_exhaling:"\u{1F62E}\u200D\u{1F4A8}",open_mouth:"\u{1F62E}",hushed:"\u{1F62F}",cold_sweat:"\u{1F630}",scream:"\u{1F631}",astonished:"\u{1F632}",flushed:"\u{1F633}",sleeping:"\u{1F634}",face_with_spiral_eyes:"\u{1F635}\u200D\u{1F4AB}",dizzy_face:"\u{1F635}",face_in_clouds:"\u{1F636}\u200D\u{1F32B}\uFE0F",no_mouth:"\u{1F636}",mask:"\u{1F637}",smile_cat:"\u{1F638}",joy_cat:"\u{1F639}",smiley_cat:"\u{1F63A}",heart_eyes_cat:"\u{1F63B}",smirk_cat:"\u{1F63C}",kissing_cat:"\u{1F63D}",pouting_cat:"\u{1F63E}",crying_cat_face:"\u{1F63F}",scream_cat:"\u{1F640}",slightly_frowning_face:"\u{1F641}",slightly_smiling_face:"\u{1F642}",upside_down_face:"\u{1F643}",face_with_rolling_eyes:"\u{1F644}","woman-gesturing-no":"\u{1F645}\u200D\u2640\uFE0F",no_good:"\u{1F645}\u200D\u2640\uFE0F","man-gesturing-no":"\u{1F645}\u200D\u2642\uFE0F","woman-gesturing-ok":"\u{1F646}\u200D\u2640\uFE0F",ok_woman:"\u{1F646}\u200D\u2640\uFE0F","man-gesturing-ok":"\u{1F646}\u200D\u2642\uFE0F","woman-bowing":"\u{1F647}\u200D\u2640\uFE0F",bowing_woman:"\u{1F647}\u200D\u2640\uFE0F","man-bowing":"\u{1F647}\u200D\u2642\uFE0F",bow:"\u{1F647}\u200D\u2642\uFE0F",bowing_man:"\u{1F647}\u200D\u2642\uFE0F",see_no_evil:"\u{1F648}",hear_no_evil:"\u{1F649}",speak_no_evil:"\u{1F64A}","woman-raising-hand":"\u{1F64B}\u200D\u2640\uFE0F",raising_hand:"\u{1F64B}\u200D\u2640\uFE0F",raising_hand_woman:"\u{1F64B}\u200D\u2640\uFE0F","man-raising-hand":"\u{1F64B}\u200D\u2642\uFE0F",raising_hand_man:"\u{1F64B}\u200D\u2642\uFE0F",raised_hands:"\u{1F64C}","woman-frowning":"\u{1F64D}\u200D\u2640\uFE0F",person_frowning:"\u{1F64D}\u200D\u2640\uFE0F",frowning_woman:"\u{1F64D}\u200D\u2640\uFE0F","man-frowning":"\u{1F64D}\u200D\u2642\uFE0F",frowning_man:"\u{1F64D}\u200D\u2642\uFE0F","woman-pouting":"\u{1F64E}\u200D\u2640\uFE0F",person_with_pouting_face:"\u{1F64E}\u200D\u2640\uFE0F",pouting_woman:"\u{1F64E}\u200D\u2640\uFE0F","man-pouting":"\u{1F64E}\u200D\u2642\uFE0F",pouting_man:"\u{1F64E}\u200D\u2642\uFE0F",pray:"\u{1F64F}",rocket:"\u{1F680}",helicopter:"\u{1F681}",steam_locomotive:"\u{1F682}",railway_car:"\u{1F683}",bullettrain_side:"\u{1F684}",bullettrain_front:"\u{1F685}",train2:"\u{1F686}",metro:"\u{1F687}",light_rail:"\u{1F688}",station:"\u{1F689}",tram:"\u{1F68A}",train:"\u{1F68B}",bus:"\u{1F68C}",oncoming_bus:"\u{1F68D}",trolleybus:"\u{1F68E}",busstop:"\u{1F68F}",minibus:"\u{1F690}",ambulance:"\u{1F691}",fire_engine:"\u{1F692}",police_car:"\u{1F693}",oncoming_police_car:"\u{1F694}",taxi:"\u{1F695}",oncoming_taxi:"\u{1F696}",car:"\u{1F697}",red_car:"\u{1F697}",oncoming_automobile:"\u{1F698}",blue_car:"\u{1F699}",truck:"\u{1F69A}",articulated_lorry:"\u{1F69B}",tractor:"\u{1F69C}",monorail:"\u{1F69D}",mountain_railway:"\u{1F69E}",suspension_railway:"\u{1F69F}",mountain_cableway:"\u{1F6A0}",aerial_tramway:"\u{1F6A1}",ship:"\u{1F6A2}","woman-rowing-boat":"\u{1F6A3}\u200D\u2640\uFE0F",rowing_woman:"\u{1F6A3}\u200D\u2640\uFE0F","man-rowing-boat":"\u{1F6A3}\u200D\u2642\uFE0F",rowboat:"\u{1F6A3}\u200D\u2642\uFE0F",rowing_man:"\u{1F6A3}\u200D\u2642\uFE0F",speedboat:"\u{1F6A4}",traffic_light:"\u{1F6A5}",vertical_traffic_light:"\u{1F6A6}",construction:"\u{1F6A7}",rotating_light:"\u{1F6A8}",triangular_flag_on_post:"\u{1F6A9}",door:"\u{1F6AA}",no_entry_sign:"\u{1F6AB}",smoking:"\u{1F6AC}",no_smoking:"\u{1F6AD}",put_litter_in_its_place:"\u{1F6AE}",do_not_litter:"\u{1F6AF}",potable_water:"\u{1F6B0}","non-potable_water":"\u{1F6B1}",bike:"\u{1F6B2}",no_bicycles:"\u{1F6B3}","woman-biking":"\u{1F6B4}\u200D\u2640\uFE0F",biking_woman:"\u{1F6B4}\u200D\u2640\uFE0F","man-biking":"\u{1F6B4}\u200D\u2642\uFE0F",bicyclist:"\u{1F6B4}\u200D\u2642\uFE0F",biking_man:"\u{1F6B4}\u200D\u2642\uFE0F","woman-mountain-biking":"\u{1F6B5}\u200D\u2640\uFE0F",mountain_biking_woman:"\u{1F6B5}\u200D\u2640\uFE0F","man-mountain-biking":"\u{1F6B5}\u200D\u2642\uFE0F",mountain_bicyclist:"\u{1F6B5}\u200D\u2642\uFE0F",mountain_biking_man:"\u{1F6B5}\u200D\u2642\uFE0F","woman-walking":"\u{1F6B6}\u200D\u2640\uFE0F",walking_woman:"\u{1F6B6}\u200D\u2640\uFE0F","man-walking":"\u{1F6B6}\u200D\u2642\uFE0F",walking:"\u{1F6B6}\u200D\u2642\uFE0F",walking_man:"\u{1F6B6}\u200D\u2642\uFE0F",no_pedestrians:"\u{1F6B7}",children_crossing:"\u{1F6B8}",mens:"\u{1F6B9}",womens:"\u{1F6BA}",restroom:"\u{1F6BB}",baby_symbol:"\u{1F6BC}",toilet:"\u{1F6BD}",wc:"\u{1F6BE}",shower:"\u{1F6BF}",bath:"\u{1F6C0}",bathtub:"\u{1F6C1}",passport_control:"\u{1F6C2}",customs:"\u{1F6C3}",baggage_claim:"\u{1F6C4}",left_luggage:"\u{1F6C5}",couch_and_lamp:"\u{1F6CB}\uFE0F",sleeping_accommodation:"\u{1F6CC}",shopping_bags:"\u{1F6CD}\uFE0F",bellhop_bell:"\u{1F6CE}\uFE0F",bed:"\u{1F6CF}\uFE0F",place_of_worship:"\u{1F6D0}",octagonal_sign:"\u{1F6D1}",shopping_trolley:"\u{1F6D2}",hindu_temple:"\u{1F6D5}",hut:"\u{1F6D6}",elevator:"\u{1F6D7}",hammer_and_wrench:"\u{1F6E0}\uFE0F",shield:"\u{1F6E1}\uFE0F",oil_drum:"\u{1F6E2}\uFE0F",motorway:"\u{1F6E3}\uFE0F",railway_track:"\u{1F6E4}\uFE0F",motor_boat:"\u{1F6E5}\uFE0F",small_airplane:"\u{1F6E9}\uFE0F",airplane_departure:"\u{1F6EB}",airplane_arriving:"\u{1F6EC}",satellite:"\u{1F6F0}\uFE0F",passenger_ship:"\u{1F6F3}\uFE0F",scooter:"\u{1F6F4}",motor_scooter:"\u{1F6F5}",canoe:"\u{1F6F6}",sled:"\u{1F6F7}",flying_saucer:"\u{1F6F8}",skateboard:"\u{1F6F9}",auto_rickshaw:"\u{1F6FA}",pickup_truck:"\u{1F6FB}",roller_skate:"\u{1F6FC}",large_orange_circle:"\u{1F7E0}",large_yellow_circle:"\u{1F7E1}",large_green_circle:"\u{1F7E2}",large_purple_circle:"\u{1F7E3}",large_brown_circle:"\u{1F7E4}",large_red_square:"\u{1F7E5}",large_blue_square:"\u{1F7E6}",large_orange_square:"\u{1F7E7}",large_yellow_square:"\u{1F7E8}",large_green_square:"\u{1F7E9}",large_purple_square:"\u{1F7EA}",large_brown_square:"\u{1F7EB}",pinched_fingers:"\u{1F90C}",white_heart:"\u{1F90D}",brown_heart:"\u{1F90E}",pinching_hand:"\u{1F90F}",zipper_mouth_face:"\u{1F910}",money_mouth_face:"\u{1F911}",face_with_thermometer:"\u{1F912}",nerd_face:"\u{1F913}",thinking_face:"\u{1F914}",face_with_head_bandage:"\u{1F915}",robot_face:"\u{1F916}",hugging_face:"\u{1F917}",the_horns:"\u{1F918}",sign_of_the_horns:"\u{1F918}",call_me_hand:"\u{1F919}",raised_back_of_hand:"\u{1F91A}","left-facing_fist":"\u{1F91B}","right-facing_fist":"\u{1F91C}",handshake:"\u{1F91D}",crossed_fingers:"\u{1F91E}",hand_with_index_and_middle_fingers_crossed:"\u{1F91E}",i_love_you_hand_sign:"\u{1F91F}",face_with_cowboy_hat:"\u{1F920}",clown_face:"\u{1F921}",nauseated_face:"\u{1F922}",rolling_on_the_floor_laughing:"\u{1F923}",drooling_face:"\u{1F924}",lying_face:"\u{1F925}","woman-facepalming":"\u{1F926}\u200D\u2640\uFE0F","man-facepalming":"\u{1F926}\u200D\u2642\uFE0F",face_palm:"\u{1F926}",sneezing_face:"\u{1F927}",face_with_raised_eyebrow:"\u{1F928}",face_with_one_eyebrow_raised:"\u{1F928}","star-struck":"\u{1F929}",grinning_face_with_star_eyes:"\u{1F929}",zany_face:"\u{1F92A}",grinning_face_with_one_large_and_one_small_eye:"\u{1F92A}",shushing_face:"\u{1F92B}",face_with_finger_covering_closed_lips:"\u{1F92B}",face_with_symbols_on_mouth:"\u{1F92C}",serious_face_with_symbols_covering_mouth:"\u{1F92C}",face_with_hand_over_mouth:"\u{1F92D}",smiling_face_with_smiling_eyes_and_hand_covering_mouth:"\u{1F92D}",face_vomiting:"\u{1F92E}",face_with_open_mouth_vomiting:"\u{1F92E}",exploding_head:"\u{1F92F}",shocked_face_with_exploding_head:"\u{1F92F}",pregnant_woman:"\u{1F930}","breast-feeding":"\u{1F931}",palms_up_together:"\u{1F932}",selfie:"\u{1F933}",prince:"\u{1F934}",woman_in_tuxedo:"\u{1F935}\u200D\u2640\uFE0F",man_in_tuxedo:"\u{1F935}\u200D\u2642\uFE0F",person_in_tuxedo:"\u{1F935}",mrs_claus:"\u{1F936}",mother_christmas:"\u{1F936}","woman-shrugging":"\u{1F937}\u200D\u2640\uFE0F","man-shrugging":"\u{1F937}\u200D\u2642\uFE0F",shrug:"\u{1F937}","woman-cartwheeling":"\u{1F938}\u200D\u2640\uFE0F","man-cartwheeling":"\u{1F938}\u200D\u2642\uFE0F",person_doing_cartwheel:"\u{1F938}","woman-juggling":"\u{1F939}\u200D\u2640\uFE0F","man-juggling":"\u{1F939}\u200D\u2642\uFE0F",juggling:"\u{1F939}",fencer:"\u{1F93A}","woman-wrestling":"\u{1F93C}\u200D\u2640\uFE0F","man-wrestling":"\u{1F93C}\u200D\u2642\uFE0F",wrestlers:"\u{1F93C}","woman-playing-water-polo":"\u{1F93D}\u200D\u2640\uFE0F","man-playing-water-polo":"\u{1F93D}\u200D\u2642\uFE0F",water_polo:"\u{1F93D}","woman-playing-handball":"\u{1F93E}\u200D\u2640\uFE0F","man-playing-handball":"\u{1F93E}\u200D\u2642\uFE0F",handball:"\u{1F93E}",diving_mask:"\u{1F93F}",wilted_flower:"\u{1F940}",drum_with_drumsticks:"\u{1F941}",clinking_glasses:"\u{1F942}",tumbler_glass:"\u{1F943}",spoon:"\u{1F944}",goal_net:"\u{1F945}",first_place_medal:"\u{1F947}",second_place_medal:"\u{1F948}",third_place_medal:"\u{1F949}",boxing_glove:"\u{1F94A}",martial_arts_uniform:"\u{1F94B}",curling_stone:"\u{1F94C}",lacrosse:"\u{1F94D}",softball:"\u{1F94E}",flying_disc:"\u{1F94F}",croissant:"\u{1F950}",avocado:"\u{1F951}",cucumber:"\u{1F952}",bacon:"\u{1F953}",potato:"\u{1F954}",carrot:"\u{1F955}",baguette_bread:"\u{1F956}",green_salad:"\u{1F957}",shallow_pan_of_food:"\u{1F958}",stuffed_flatbread:"\u{1F959}",egg:"\u{1F95A}",glass_of_milk:"\u{1F95B}",peanuts:"\u{1F95C}",kiwifruit:"\u{1F95D}",pancakes:"\u{1F95E}",dumpling:"\u{1F95F}",fortune_cookie:"\u{1F960}",takeout_box:"\u{1F961}",chopsticks:"\u{1F962}",bowl_with_spoon:"\u{1F963}",cup_with_straw:"\u{1F964}",coconut:"\u{1F965}",broccoli:"\u{1F966}",pie:"\u{1F967}",pretzel:"\u{1F968}",cut_of_meat:"\u{1F969}",sandwich:"\u{1F96A}",canned_food:"\u{1F96B}",leafy_green:"\u{1F96C}",mango:"\u{1F96D}",moon_cake:"\u{1F96E}",bagel:"\u{1F96F}",smiling_face_with_3_hearts:"\u{1F970}",yawning_face:"\u{1F971}",smiling_face_with_tear:"\u{1F972}",partying_face:"\u{1F973}",woozy_face:"\u{1F974}",hot_face:"\u{1F975}",cold_face:"\u{1F976}",ninja:"\u{1F977}",disguised_face:"\u{1F978}",pleading_face:"\u{1F97A}",sari:"\u{1F97B}",lab_coat:"\u{1F97C}",goggles:"\u{1F97D}",hiking_boot:"\u{1F97E}",womans_flat_shoe:"\u{1F97F}",crab:"\u{1F980}",lion_face:"\u{1F981}",scorpion:"\u{1F982}",turkey:"\u{1F983}",unicorn_face:"\u{1F984}",eagle:"\u{1F985}",duck:"\u{1F986}",bat:"\u{1F987}",shark:"\u{1F988}",owl:"\u{1F989}",fox_face:"\u{1F98A}",butterfly:"\u{1F98B}",deer:"\u{1F98C}",gorilla:"\u{1F98D}",lizard:"\u{1F98E}",rhinoceros:"\u{1F98F}",shrimp:"\u{1F990}",squid:"\u{1F991}",giraffe_face:"\u{1F992}",zebra_face:"\u{1F993}",hedgehog:"\u{1F994}",sauropod:"\u{1F995}","t-rex":"\u{1F996}",cricket:"\u{1F997}",kangaroo:"\u{1F998}",llama:"\u{1F999}",peacock:"\u{1F99A}",hippopotamus:"\u{1F99B}",parrot:"\u{1F99C}",raccoon:"\u{1F99D}",lobster:"\u{1F99E}",mosquito:"\u{1F99F}",microbe:"\u{1F9A0}",badger:"\u{1F9A1}",swan:"\u{1F9A2}",mammoth:"\u{1F9A3}",dodo:"\u{1F9A4}",sloth:"\u{1F9A5}",otter:"\u{1F9A6}",orangutan:"\u{1F9A7}",skunk:"\u{1F9A8}",flamingo:"\u{1F9A9}",oyster:"\u{1F9AA}",beaver:"\u{1F9AB}",bison:"\u{1F9AC}",seal:"\u{1F9AD}",guide_dog:"\u{1F9AE}",probing_cane:"\u{1F9AF}",bone:"\u{1F9B4}",leg:"\u{1F9B5}",foot:"\u{1F9B6}",tooth:"\u{1F9B7}",female_superhero:"\u{1F9B8}\u200D\u2640\uFE0F",male_superhero:"\u{1F9B8}\u200D\u2642\uFE0F",superhero:"\u{1F9B8}",female_supervillain:"\u{1F9B9}\u200D\u2640\uFE0F",male_supervillain:"\u{1F9B9}\u200D\u2642\uFE0F",supervillain:"\u{1F9B9}",safety_vest:"\u{1F9BA}",ear_with_hearing_aid:"\u{1F9BB}",motorized_wheelchair:"\u{1F9BC}",manual_wheelchair:"\u{1F9BD}",mechanical_arm:"\u{1F9BE}",mechanical_leg:"\u{1F9BF}",cheese_wedge:"\u{1F9C0}",cupcake:"\u{1F9C1}",salt:"\u{1F9C2}",beverage_box:"\u{1F9C3}",garlic:"\u{1F9C4}",onion:"\u{1F9C5}",falafel:"\u{1F9C6}",waffle:"\u{1F9C7}",butter:"\u{1F9C8}",mate_drink:"\u{1F9C9}",ice_cube:"\u{1F9CA}",bubble_tea:"\u{1F9CB}",woman_standing:"\u{1F9CD}\u200D\u2640\uFE0F",man_standing:"\u{1F9CD}\u200D\u2642\uFE0F",standing_person:"\u{1F9CD}",woman_kneeling:"\u{1F9CE}\u200D\u2640\uFE0F",man_kneeling:"\u{1F9CE}\u200D\u2642\uFE0F",kneeling_person:"\u{1F9CE}",deaf_woman:"\u{1F9CF}\u200D\u2640\uFE0F",deaf_man:"\u{1F9CF}\u200D\u2642\uFE0F",deaf_person:"\u{1F9CF}",face_with_monocle:"\u{1F9D0}",farmer:"\u{1F9D1}\u200D\u{1F33E}",cook:"\u{1F9D1}\u200D\u{1F373}",person_feeding_baby:"\u{1F9D1}\u200D\u{1F37C}",mx_claus:"\u{1F9D1}\u200D\u{1F384}",student:"\u{1F9D1}\u200D\u{1F393}",singer:"\u{1F9D1}\u200D\u{1F3A4}",artist:"\u{1F9D1}\u200D\u{1F3A8}",teacher:"\u{1F9D1}\u200D\u{1F3EB}",factory_worker:"\u{1F9D1}\u200D\u{1F3ED}",technologist:"\u{1F9D1}\u200D\u{1F4BB}",office_worker:"\u{1F9D1}\u200D\u{1F4BC}",mechanic:"\u{1F9D1}\u200D\u{1F527}",scientist:"\u{1F9D1}\u200D\u{1F52C}",astronaut:"\u{1F9D1}\u200D\u{1F680}",firefighter:"\u{1F9D1}\u200D\u{1F692}",people_holding_hands:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}",person_with_probing_cane:"\u{1F9D1}\u200D\u{1F9AF}",red_haired_person:"\u{1F9D1}\u200D\u{1F9B0}",curly_haired_person:"\u{1F9D1}\u200D\u{1F9B1}",bald_person:"\u{1F9D1}\u200D\u{1F9B2}",white_haired_person:"\u{1F9D1}\u200D\u{1F9B3}",person_in_motorized_wheelchair:"\u{1F9D1}\u200D\u{1F9BC}",person_in_manual_wheelchair:"\u{1F9D1}\u200D\u{1F9BD}",health_worker:"\u{1F9D1}\u200D\u2695\uFE0F",judge:"\u{1F9D1}\u200D\u2696\uFE0F",pilot:"\u{1F9D1}\u200D\u2708\uFE0F",adult:"\u{1F9D1}",child:"\u{1F9D2}",older_adult:"\u{1F9D3}",woman_with_beard:"\u{1F9D4}\u200D\u2640\uFE0F",man_with_beard:"\u{1F9D4}\u200D\u2642\uFE0F",bearded_person:"\u{1F9D4}",person_with_headscarf:"\u{1F9D5}",woman_in_steamy_room:"\u{1F9D6}\u200D\u2640\uFE0F",man_in_steamy_room:"\u{1F9D6}\u200D\u2642\uFE0F",person_in_steamy_room:"\u{1F9D6}\u200D\u2642\uFE0F",woman_climbing:"\u{1F9D7}\u200D\u2640\uFE0F",person_climbing:"\u{1F9D7}\u200D\u2640\uFE0F",man_climbing:"\u{1F9D7}\u200D\u2642\uFE0F",woman_in_lotus_position:"\u{1F9D8}\u200D\u2640\uFE0F",person_in_lotus_position:"\u{1F9D8}\u200D\u2640\uFE0F",man_in_lotus_position:"\u{1F9D8}\u200D\u2642\uFE0F",female_mage:"\u{1F9D9}\u200D\u2640\uFE0F",mage:"\u{1F9D9}\u200D\u2640\uFE0F",male_mage:"\u{1F9D9}\u200D\u2642\uFE0F",female_fairy:"\u{1F9DA}\u200D\u2640\uFE0F",fairy:"\u{1F9DA}\u200D\u2640\uFE0F",male_fairy:"\u{1F9DA}\u200D\u2642\uFE0F",female_vampire:"\u{1F9DB}\u200D\u2640\uFE0F",vampire:"\u{1F9DB}\u200D\u2640\uFE0F",male_vampire:"\u{1F9DB}\u200D\u2642\uFE0F",mermaid:"\u{1F9DC}\u200D\u2640\uFE0F",merman:"\u{1F9DC}\u200D\u2642\uFE0F",merperson:"\u{1F9DC}\u200D\u2642\uFE0F",female_elf:"\u{1F9DD}\u200D\u2640\uFE0F",male_elf:"\u{1F9DD}\u200D\u2642\uFE0F",elf:"\u{1F9DD}\u200D\u2642\uFE0F",female_genie:"\u{1F9DE}\u200D\u2640\uFE0F",male_genie:"\u{1F9DE}\u200D\u2642\uFE0F",genie:"\u{1F9DE}\u200D\u2642\uFE0F",female_zombie:"\u{1F9DF}\u200D\u2640\uFE0F",male_zombie:"\u{1F9DF}\u200D\u2642\uFE0F",zombie:"\u{1F9DF}\u200D\u2642\uFE0F",brain:"\u{1F9E0}",orange_heart:"\u{1F9E1}",billed_cap:"\u{1F9E2}",scarf:"\u{1F9E3}",gloves:"\u{1F9E4}",coat:"\u{1F9E5}",socks:"\u{1F9E6}",red_envelope:"\u{1F9E7}",firecracker:"\u{1F9E8}",jigsaw:"\u{1F9E9}",test_tube:"\u{1F9EA}",petri_dish:"\u{1F9EB}",dna:"\u{1F9EC}",compass:"\u{1F9ED}",abacus:"\u{1F9EE}",fire_extinguisher:"\u{1F9EF}",toolbox:"\u{1F9F0}",bricks:"\u{1F9F1}",magnet:"\u{1F9F2}",luggage:"\u{1F9F3}",lotion_bottle:"\u{1F9F4}",thread:"\u{1F9F5}",yarn:"\u{1F9F6}",safety_pin:"\u{1F9F7}",teddy_bear:"\u{1F9F8}",broom:"\u{1F9F9}",basket:"\u{1F9FA}",roll_of_paper:"\u{1F9FB}",soap:"\u{1F9FC}",sponge:"\u{1F9FD}",receipt:"\u{1F9FE}",nazar_amulet:"\u{1F9FF}",ballet_shoes:"\u{1FA70}","one-piece_swimsuit":"\u{1FA71}",briefs:"\u{1FA72}",shorts:"\u{1FA73}",thong_sandal:"\u{1FA74}",drop_of_blood:"\u{1FA78}",adhesive_bandage:"\u{1FA79}",stethoscope:"\u{1FA7A}","yo-yo":"\u{1FA80}",kite:"\u{1FA81}",parachute:"\u{1FA82}",boomerang:"\u{1FA83}",magic_wand:"\u{1FA84}",pinata:"\u{1FA85}",nesting_dolls:"\u{1FA86}",ringed_planet:"\u{1FA90}",chair:"\u{1FA91}",razor:"\u{1FA92}",axe:"\u{1FA93}",diya_lamp:"\u{1FA94}",banjo:"\u{1FA95}",military_helmet:"\u{1FA96}",accordion:"\u{1FA97}",long_drum:"\u{1FA98}",coin:"\u{1FA99}",carpentry_saw:"\u{1FA9A}",screwdriver:"\u{1FA9B}",ladder:"\u{1FA9C}",hook:"\u{1FA9D}",mirror:"\u{1FA9E}",window:"\u{1FA9F}",plunger:"\u{1FAA0}",sewing_needle:"\u{1FAA1}",knot:"\u{1FAA2}",bucket:"\u{1FAA3}",mouse_trap:"\u{1FAA4}",toothbrush:"\u{1FAA5}",headstone:"\u{1FAA6}",placard:"\u{1FAA7}",rock:"\u{1FAA8}",fly:"\u{1FAB0}",worm:"\u{1FAB1}",beetle:"\u{1FAB2}",cockroach:"\u{1FAB3}",potted_plant:"\u{1FAB4}",wood:"\u{1FAB5}",feather:"\u{1FAB6}",anatomical_heart:"\u{1FAC0}",lungs:"\u{1FAC1}",people_hugging:"\u{1FAC2}",blueberries:"\u{1FAD0}",bell_pepper:"\u{1FAD1}",olive:"\u{1FAD2}",flatbread:"\u{1FAD3}",tamale:"\u{1FAD4}",fondue:"\u{1FAD5}",teapot:"\u{1FAD6}",bangbang:"\u203C\uFE0F",interrobang:"\u2049\uFE0F",tm:"\u2122\uFE0F",information_source:"\u2139\uFE0F",left_right_arrow:"\u2194\uFE0F",arrow_up_down:"\u2195\uFE0F",arrow_upper_left:"\u2196\uFE0F",arrow_upper_right:"\u2197\uFE0F",arrow_lower_right:"\u2198\uFE0F",arrow_lower_left:"\u2199\uFE0F",leftwards_arrow_with_hook:"\u21A9\uFE0F",arrow_right_hook:"\u21AA\uFE0F",watch:"\u231A",hourglass:"\u231B",keyboard:"\u2328\uFE0F",eject:"\u23CF\uFE0F",fast_forward:"\u23E9",rewind:"\u23EA",arrow_double_up:"\u23EB",arrow_double_down:"\u23EC",black_right_pointing_double_triangle_with_vertical_bar:"\u23ED\uFE0F",black_left_pointing_double_triangle_with_vertical_bar:"\u23EE\uFE0F",black_right_pointing_triangle_with_double_vertical_bar:"\u23EF\uFE0F",alarm_clock:"\u23F0",stopwatch:"\u23F1\uFE0F",timer_clock:"\u23F2\uFE0F",hourglass_flowing_sand:"\u23F3",double_vertical_bar:"\u23F8\uFE0F",black_square_for_stop:"\u23F9\uFE0F",black_circle_for_record:"\u23FA\uFE0F",m:"\u24C2\uFE0F",black_small_square:"\u25AA\uFE0F",white_small_square:"\u25AB\uFE0F",arrow_forward:"\u25B6\uFE0F",arrow_backward:"\u25C0\uFE0F",white_medium_square:"\u25FB\uFE0F",black_medium_square:"\u25FC\uFE0F",white_medium_small_square:"\u25FD",black_medium_small_square:"\u25FE",sunny:"\u2600\uFE0F",cloud:"\u2601\uFE0F",umbrella:"\u2602\uFE0F",snowman:"\u2603\uFE0F",comet:"\u2604\uFE0F",phone:"\u260E\uFE0F",telephone:"\u260E\uFE0F",ballot_box_with_check:"\u2611\uFE0F",shamrock:"\u2618\uFE0F",point_up:"\u261D\uFE0F",skull_and_crossbones:"\u2620\uFE0F",radioactive_sign:"\u2622\uFE0F",biohazard_sign:"\u2623\uFE0F",orthodox_cross:"\u2626\uFE0F",star_and_crescent:"\u262A\uFE0F",peace_symbol:"\u262E\uFE0F",yin_yang:"\u262F\uFE0F",wheel_of_dharma:"\u2638\uFE0F",white_frowning_face:"\u2639\uFE0F",relaxed:"\u263A\uFE0F",female_sign:"\u2640\uFE0F",male_sign:"\u2642\uFE0F",gemini:"\u264A",cancer:"\u264B",leo:"\u264C",virgo:"\u264D",libra:"\u264E",scorpius:"\u264F",chess_pawn:"\u265F\uFE0F",spades:"\u2660\uFE0F",clubs:"\u2663\uFE0F",hearts:"\u2665\uFE0F",diamonds:"\u2666\uFE0F",hotsprings:"\u2668\uFE0F",recycle:"\u267B\uFE0F",infinity:"\u267E\uFE0F",wheelchair:"\u267F",hammer_and_pick:"\u2692\uFE0F",crossed_swords:"\u2694\uFE0F",medical_symbol:"\u2695\uFE0F",staff_of_aesculapius:"\u2695\uFE0F",scales:"\u2696\uFE0F",alembic:"\u2697\uFE0F",gear:"\u2699\uFE0F",atom_symbol:"\u269B\uFE0F",fleur_de_lis:"\u269C\uFE0F",warning:"\u26A0\uFE0F",zap:"\u26A1",transgender_symbol:"\u26A7\uFE0F",white_circle:"\u26AA",black_circle:"\u26AB",coffin:"\u26B0\uFE0F",funeral_urn:"\u26B1\uFE0F",soccer:"\u26BD",baseball:"\u26BE",snowman_without_snow:"\u26C4",partly_sunny:"\u26C5",thunder_cloud_and_rain:"\u26C8\uFE0F",ophiuchus:"\u26CE",pick:"\u26CF\uFE0F",helmet_with_white_cross:"\u26D1\uFE0F",chains:"\u26D3\uFE0F",no_entry:"\u26D4",shinto_shrine:"\u26E9\uFE0F",church:"\u26EA",mountain:"\u26F0\uFE0F",umbrella_on_ground:"\u26F1\uFE0F",fountain:"\u26F2",golf:"\u26F3",ferry:"\u26F4\uFE0F",boat:"\u26F5",sailboat:"\u26F5",skier:"\u26F7\uFE0F",ice_skate:"\u26F8\uFE0F","woman-bouncing-ball":"\u26F9\uFE0F\u200D\u2640\uFE0F","man-bouncing-ball":"\u26F9\uFE0F\u200D\u2642\uFE0F",person_with_ball:"\u26F9\uFE0F\u200D\u2642\uFE0F",tent:"\u26FA",fuelpump:"\u26FD",scissors:"\u2702\uFE0F",airplane:"\u2708\uFE0F",email:"\u2709\uFE0F",envelope:"\u2709\uFE0F",fist:"\u270A",hand:"\u270B",raised_hand:"\u270B",v:"\u270C\uFE0F",writing_hand:"\u270D\uFE0F",pencil2:"\u270F\uFE0F",black_nib:"\u2712\uFE0F",heavy_check_mark:"\u2714\uFE0F",heavy_multiplication_x:"\u2716\uFE0F",latin_cross:"\u271D\uFE0F",star_of_david:"\u2721\uFE0F",eight_spoked_asterisk:"\u2733\uFE0F",eight_pointed_black_star:"\u2734\uFE0F",snowflake:"\u2744\uFE0F",sparkle:"\u2747\uFE0F",x:"\u274C",negative_squared_cross_mark:"\u274E",heavy_heart_exclamation_mark_ornament:"\u2763\uFE0F",heart_on_fire:"\u2764\uFE0F\u200D\u{1F525}",mending_heart:"\u2764\uFE0F\u200D\u{1FA79}",heart:"\u2764\uFE0F",arrow_right:"\u27A1\uFE0F",curly_loop:"\u27B0",loop:"\u27BF",arrow_heading_up:"\u2934\uFE0F",arrow_heading_down:"\u2935\uFE0F",arrow_left:"\u2B05\uFE0F",arrow_up:"\u2B06\uFE0F",arrow_down:"\u2B07\uFE0F",black_large_square:"\u2B1B",white_large_square:"\u2B1C",star:"\u2B50",o:"\u2B55",wavy_dash:"\u3030\uFE0F",part_alternation_mark:"\u303D\uFE0F",congratulations:"\u3297\uFE0F",secret:"\u3299\uFE0F"}});var Ss=K((x2,Is)=>{var js=Cs(),Ve=ya(),hm=/:([a-zA-Z0-9_\-\+]+):/g,gm=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function mt(e){var t=e.indexOf(":");return t>-1?t===e.length-1?(e=e.substring(0,t),mt(e)):(e=e.substr(t+1),mt(e)):e}function Ls(e){return typeof e=="string"&&e.length>0?":"+e+":":e}function xm(e){return typeof e=="string"&&e[0]!==":"?Ls(e):e}var vm=String.fromCharCode(65039),bm=new RegExp(vm,"g");function ht(e){return e.replace(bm,"")}var _a=Object.keys(Ve).reduce(function(e,t){return e[ht(Ve[t])]=t,e},{}),ce={emoji:Ve};ce._get=function(t){return _a[ht(t)]?t:Ve.hasOwnProperty(t)?Ve[t]:xm(t)};ce.get=function(t){return t=mt(t),ce._get(t)};ce.find=function(t){return ce.findByName(t)||ce.findByCode(t)};ce.findByName=function(t){var n=mt(t),a=Ve[n];return a?{emoji:a,key:n}:void 0};ce.findByCode=function(t){var n=ht(t),a=_a[n];return a?{emoji:Ve[a],key:a}:void 0};ce.hasEmoji=function(t){return ce.hasEmojiByName(t)||ce.hasEmojiByCode(t)};ce.hasEmojiByName=function(t){var n=ce.findByName(t);return!!n&&n.key===mt(t)};ce.hasEmojiByCode=function(t){var n=ce.findByCode(t);return!!n&&ht(n.emoji)===ht(t)};ce.which=function(t,n){var a=ht(t),i=_a[a];return n?Ls(i):i};ce.emojify=function(t,n,a){return t?t.split(hm).map(function(r,o){if(o%2===0)return r;var s=ce._get(r),p=s.indexOf(":")>-1;return p&&typeof n=="function"?n(r):!p&&typeof a=="function"?a(s,r):s}).join(""):""};ce.random=function(){var t=Object.keys(Ve),n=Math.floor(Math.random()*t.length),a=t[n],i=ce._get(a);return{key:a,emoji:i}};ce.search=function(t){var n=Object.keys(Ve),a=mt(t),i=n.filter(function(r){return r.toString().indexOf(a)===0});return i.map(function(r){return{key:r,emoji:ce._get(r)}})};ce.unemojify=function(t){if(!t)return"";var n=js(t);return n.map(function(a){return ce.which(a,!0)||a}).join("")};ce.replace=function(t,n,a){if(!t)return"";var i=typeof n=="function"?n:function(){return n},r=js(t),o=r.map(function(s,p){var l=ce.findByCode(s);return l&&a&&r[p+1]===" "&&(r[p+1]=""),l?i(l):s}).join("");return a?o.replace(gm,""):o};ce.strip=function(t){return ce.replace(t,"",!0)};Is.exports=ce});var Wt=K((v2,As)=>{As.exports=Ss()});var fn=K((b2,dn)=>{(function(){"use strict";var e={}.hasOwnProperty;function t(){for(var n=[],a=0;a{"use strict";Object.defineProperty(yn,"__esModule",{value:!0});function Ds(e,t){if(t)return e;throw new Error("Unhandled discriminated union member: "+JSON.stringify(e))}yn.assertNever=Ds;yn.default=Ds});var Js=K((Xs,Va)=>{(function(e){typeof Xs=="object"&&typeof Va<"u"?Va.exports=e():typeof define=="function"&&define.amd?define([],e):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).JSZip=e()})(function(){return function e(t,n,a){function i(s,p){if(!n[s]){if(!t[s]){var l=typeof require=="function"&&require;if(!p&&l)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[s]={exports:{}};t[s][0].call(u.exports,function(h){var f=t[s][1][h];return i(f||h)},u,u.exports,e,t,n,a)}return n[s].exports}for(var r=typeof require=="function"&&require,o=0;o>2,u=(3&s)<<4|p>>4,h=1<_?(15&p)<<2|l>>6:64,f=2<_?63&l:64,g.push(r.charAt(c)+r.charAt(u)+r.charAt(h)+r.charAt(f));return g.join("")},n.decode=function(o){var s,p,l,c,u,h,f=0,g=0,x="data:";if(o.substr(0,x.length)===x)throw new Error("Invalid base64 input, it looks like a data url.");var b,_=3*(o=o.replace(/[^A-Za-z0-9\+\/\=]/g,"")).length/4;if(o.charAt(o.length-1)===r.charAt(64)&&_--,o.charAt(o.length-2)===r.charAt(64)&&_--,_%1!=0)throw new Error("Invalid base64 input, bad content length.");for(b=i.uint8array?new Uint8Array(0|_):new Array(0|_);f>4,p=(15&c)<<4|(u=r.indexOf(o.charAt(f++)))>>2,l=(3&u)<<6|(h=r.indexOf(o.charAt(f++))),b[g++]=s,u!==64&&(b[g++]=p),h!==64&&(b[g++]=l);return b}},{"./support":30,"./utils":32}],2:[function(e,t,n){"use strict";var a=e("./external"),i=e("./stream/DataWorker"),r=e("./stream/Crc32Probe"),o=e("./stream/DataLengthProbe");function s(p,l,c,u,h){this.compressedSize=p,this.uncompressedSize=l,this.crc32=c,this.compression=u,this.compressedContent=h}s.prototype={getContentWorker:function(){var p=new i(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o("data_length")),l=this;return p.on("end",function(){if(this.streamInfo.data_length!==l.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),p},getCompressedWorker:function(){return new i(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},s.createWorkerFrom=function(p,l,c){return p.pipe(new r).pipe(new o("uncompressedSize")).pipe(l.compressWorker(c)).pipe(new o("compressedSize")).withStreamInfo("compression",l)},t.exports=s},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,n){"use strict";var a=e("./stream/GenericWorker");n.STORE={magic:"\0\0",compressWorker:function(i){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},n.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,n){"use strict";var a=e("./utils"),i=function(){for(var r,o=[],s=0;s<256;s++){r=s;for(var p=0;p<8;p++)r=1&r?3988292384^r>>>1:r>>>1;o[s]=r}return o}();t.exports=function(r,o){return r!==void 0&&r.length?a.getTypeOf(r)!=="string"?function(s,p,l,c){var u=i,h=c+l;s^=-1;for(var f=c;f>>8^u[255&(s^p[f])];return-1^s}(0|o,r,r.length,0):function(s,p,l,c){var u=i,h=c+l;s^=-1;for(var f=c;f>>8^u[255&(s^p.charCodeAt(f))];return-1^s}(0|o,r,r.length,0):0}},{"./utils":32}],5:[function(e,t,n){"use strict";n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!0,n.date=null,n.compression=null,n.compressionOptions=null,n.comment=null,n.unixPermissions=null,n.dosPermissions=null},{}],6:[function(e,t,n){"use strict";var a=null;a=typeof Promise<"u"?Promise:e("lie"),t.exports={Promise:a}},{lie:37}],7:[function(e,t,n){"use strict";var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",i=e("pako"),r=e("./utils"),o=e("./stream/GenericWorker"),s=a?"uint8array":"array";function p(l,c){o.call(this,"FlateWorker/"+l),this._pako=null,this._pakoAction=l,this._pakoOptions=c,this.meta={}}n.magic="\b\0",r.inherits(p,o),p.prototype.processChunk=function(l){this.meta=l.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(s,l.data),!1)},p.prototype.flush=function(){o.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},p.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},p.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var l=this;this._pako.onData=function(c){l.push({data:c,meta:l.meta})}},n.compressWorker=function(l){return new p("Deflate",l)},n.uncompressWorker=function(){return new p("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,n){"use strict";function a(u,h){var f,g="";for(f=0;f>>=8;return g}function i(u,h,f,g,x,b){var _,C,w=u.file,z=u.compression,F=b!==s.utf8encode,T=r.transformTo("string",b(w.name)),S=r.transformTo("string",s.utf8encode(w.name)),W=w.comment,Y=r.transformTo("string",b(W)),k=r.transformTo("string",s.utf8encode(W)),E=S.length!==w.name.length,m=k.length!==W.length,P="",J="",D="",ae=w.dir,R=w.date,te={crc32:0,compressedSize:0,uncompressedSize:0};h&&!f||(te.crc32=u.crc32,te.compressedSize=u.compressedSize,te.uncompressedSize=u.uncompressedSize);var A=0;h&&(A|=8),F||!E&&!m||(A|=2048);var I=0,ee=0;ae&&(I|=16),x==="UNIX"?(ee=798,I|=function(q,ue){var ve=q;return q||(ve=ue?16893:33204),(65535&ve)<<16}(w.unixPermissions,ae)):(ee=20,I|=function(q){return 63&(q||0)}(w.dosPermissions)),_=R.getUTCHours(),_<<=6,_|=R.getUTCMinutes(),_<<=5,_|=R.getUTCSeconds()/2,C=R.getUTCFullYear()-1980,C<<=4,C|=R.getUTCMonth()+1,C<<=5,C|=R.getUTCDate(),E&&(J=a(1,1)+a(p(T),4)+S,P+="up"+a(J.length,2)+J),m&&(D=a(1,1)+a(p(Y),4)+k,P+="uc"+a(D.length,2)+D);var G="";return G+=` +\0`,G+=a(A,2),G+=z.magic,G+=a(_,2),G+=a(C,2),G+=a(te.crc32,4),G+=a(te.compressedSize,4),G+=a(te.uncompressedSize,4),G+=a(T.length,2),G+=a(P.length,2),{fileRecord:l.LOCAL_FILE_HEADER+G+T+P,dirRecord:l.CENTRAL_FILE_HEADER+a(ee,2)+G+a(Y.length,2)+"\0\0\0\0"+a(I,4)+a(g,4)+T+P+Y}}var r=e("../utils"),o=e("../stream/GenericWorker"),s=e("../utf8"),p=e("../crc32"),l=e("../signature");function c(u,h,f,g){o.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=h,this.zipPlatform=f,this.encodeFileName=g,this.streamFiles=u,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(c,o),c.prototype.push=function(u){var h=u.meta.percent||0,f=this.entriesCount,g=this._sources.length;this.accumulate?this.contentBuffer.push(u):(this.bytesWritten+=u.data.length,o.prototype.push.call(this,{data:u.data,meta:{currentFile:this.currentFile,percent:f?(h+100*(f-g-1))/f:100}}))},c.prototype.openedSource=function(u){this.currentSourceOffset=this.bytesWritten,this.currentFile=u.file.name;var h=this.streamFiles&&!u.file.dir;if(h){var f=i(u,h,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:f.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(u){this.accumulate=!1;var h=this.streamFiles&&!u.file.dir,f=i(u,h,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(f.dirRecord),h)this.push({data:function(g){return l.DATA_DESCRIPTOR+a(g.crc32,4)+a(g.compressedSize,4)+a(g.uncompressedSize,4)}(u),meta:{percent:100}});else for(this.push({data:f.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var u=this.bytesWritten,h=0;h=this.index;o--)s=(s<<8)+this.byteAt(o);return this.index+=r,s},readString:function(r){return a.transformTo("string",this.readData(r))},readData:function(r){},lastIndexOfSignature:function(r){},readAndCheckSignature:function(r){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,n){"use strict";var a=e("./Uint8ArrayReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.readData=function(r){this.checkOffset(r);var o=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,n){"use strict";var a=e("./DataReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},i.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},i.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},i.prototype.readData=function(r){this.checkOffset(r);var o=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,n){"use strict";var a=e("./ArrayReader");function i(r){a.call(this,r)}e("../utils").inherits(i,a),i.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var o=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,o},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,n){"use strict";var a=e("../utils"),i=e("../support"),r=e("./ArrayReader"),o=e("./StringReader"),s=e("./NodeBufferReader"),p=e("./Uint8ArrayReader");t.exports=function(l){var c=a.getTypeOf(l);return a.checkSupport(c),c!=="string"||i.uint8array?c==="nodebuffer"?new s(l):i.uint8array?new p(a.transformTo("uint8array",l)):new r(a.transformTo("array",l)):new o(l)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,n){"use strict";n.LOCAL_FILE_HEADER="PK",n.CENTRAL_FILE_HEADER="PK",n.CENTRAL_DIRECTORY_END="PK",n.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",n.ZIP64_CENTRAL_DIRECTORY_END="PK",n.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(e,t,n){"use strict";var a=e("./GenericWorker"),i=e("../utils");function r(o){a.call(this,"ConvertWorker to "+o),this.destType=o}i.inherits(r,a),r.prototype.processChunk=function(o){this.push({data:i.transformTo(this.destType,o.data),meta:o.meta})},t.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,n){"use strict";var a=e("./GenericWorker"),i=e("../crc32");function r(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(r,a),r.prototype.processChunk=function(o){this.streamInfo.crc32=i(o.data,this.streamInfo.crc32||0),this.push(o)},t.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./GenericWorker");function r(o){i.call(this,"DataLengthProbe for "+o),this.propName=o,this.withStreamInfo(o,0)}a.inherits(r,i),r.prototype.processChunk=function(o){if(o){var s=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=s+o.data.length}i.prototype.processChunk.call(this,o)},t.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./GenericWorker");function r(o){i.call(this,"DataWorker");var s=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,o.then(function(p){s.dataIsReady=!0,s.data=p,s.max=p&&p.length||0,s.type=a.getTypeOf(p),s.isPaused||s._tickAndRepeat()},function(p){s.error(p)})}a.inherits(r,i),r.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var o=null,s=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":o=this.data.substring(this.index,s);break;case"uint8array":o=this.data.subarray(this.index,s);break;case"array":case"nodebuffer":o=this.data.slice(this.index,s)}return this.index=s,this.push({data:o,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,n){"use strict";function a(i){this.name=i||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(i){this.emit("data",i)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(i){this.emit("error",i)}return!0},error:function(i){return!this.isFinished&&(this.isPaused?this.generatedError=i:(this.isFinished=!0,this.emit("error",i),this.previous&&this.previous.error(i),this.cleanUp()),!0)},on:function(i,r){return this._listeners[i].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(i,r){if(this._listeners[i])for(var o=0;o "+i:i}},t.exports=a},{}],29:[function(e,t,n){"use strict";var a=e("../utils"),i=e("./ConvertWorker"),r=e("./GenericWorker"),o=e("../base64"),s=e("../support"),p=e("../external"),l=null;if(s.nodestream)try{l=e("../nodejs/NodejsStreamOutputAdapter")}catch{}function c(h,f){return new p.Promise(function(g,x){var b=[],_=h._internalType,C=h._outputType,w=h._mimeType;h.on("data",function(z,F){b.push(z),f&&f(F)}).on("error",function(z){b=[],x(z)}).on("end",function(){try{var z=function(F,T,S){switch(F){case"blob":return a.newBlob(a.transformTo("arraybuffer",T),S);case"base64":return o.encode(T);default:return a.transformTo(F,T)}}(C,function(F,T){var S,W=0,Y=null,k=0;for(S=0;S"u")n.blob=!1;else{var a=new ArrayBuffer(0);try{n.blob=new Blob([a],{type:"application/zip"}).size===0}catch{try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(a),n.blob=i.getBlob("application/zip").size===0}catch{n.blob=!1}}}try{n.nodestream=!!e("readable-stream").Readable}catch{n.nodestream=!1}},{"readable-stream":16}],31:[function(e,t,n){"use strict";for(var a=e("./utils"),i=e("./support"),r=e("./nodejsUtils"),o=e("./stream/GenericWorker"),s=new Array(256),p=0;p<256;p++)s[p]=252<=p?6:248<=p?5:240<=p?4:224<=p?3:192<=p?2:1;s[254]=s[254]=1;function l(){o.call(this,"utf-8 decode"),this.leftOver=null}function c(){o.call(this,"utf-8 encode")}n.utf8encode=function(u){return i.nodebuffer?r.newBufferFrom(u,"utf-8"):function(h){var f,g,x,b,_,C=h.length,w=0;for(b=0;b>>6:(g<65536?f[_++]=224|g>>>12:(f[_++]=240|g>>>18,f[_++]=128|g>>>12&63),f[_++]=128|g>>>6&63),f[_++]=128|63&g);return f}(u)},n.utf8decode=function(u){return i.nodebuffer?a.transformTo("nodebuffer",u).toString("utf-8"):function(h){var f,g,x,b,_=h.length,C=new Array(2*_);for(f=g=0;f<_;)if((x=h[f++])<128)C[g++]=x;else if(4<(b=s[x]))C[g++]=65533,f+=b-1;else{for(x&=b===2?31:b===3?15:7;1>10&1023,C[g++]=56320|1023&x)}return C.length!==g&&(C.subarray?C=C.subarray(0,g):C.length=g),a.applyFromCharCode(C)}(u=a.transformTo(i.uint8array?"uint8array":"array",u))},a.inherits(l,o),l.prototype.processChunk=function(u){var h=a.transformTo(i.uint8array?"uint8array":"array",u.data);if(this.leftOver&&this.leftOver.length){if(i.uint8array){var f=h;(h=new Uint8Array(f.length+this.leftOver.length)).set(this.leftOver,0),h.set(f,this.leftOver.length)}else h=this.leftOver.concat(h);this.leftOver=null}var g=function(b,_){var C;for((_=_||b.length)>b.length&&(_=b.length),C=_-1;0<=C&&(192&b[C])==128;)C--;return C<0||C===0?_:C+s[b[C]]>_?C:_}(h),x=h;g!==h.length&&(i.uint8array?(x=h.subarray(0,g),this.leftOver=h.subarray(g,h.length)):(x=h.slice(0,g),this.leftOver=h.slice(g,h.length))),this.push({data:n.utf8decode(x),meta:u.meta})},l.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=l,a.inherits(c,o),c.prototype.processChunk=function(u){this.push({data:n.utf8encode(u.data),meta:u.meta})},n.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,n){"use strict";var a=e("./support"),i=e("./base64"),r=e("./nodejsUtils"),o=e("./external");function s(f){return f}function p(f,g){for(var x=0;x>8;this.dir=!!(16&this.externalFileAttributes),u==0&&(this.dosPermissions=63&this.externalFileAttributes),u==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(u){if(this.extraFields[1]){var h=a(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=h.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=h.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=h.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=h.readInt(4))}},readExtraFields:function(u){var h,f,g,x=u.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});u.index+4>>6:(u<65536?c[g++]=224|u>>>12:(c[g++]=240|u>>>18,c[g++]=128|u>>>12&63),c[g++]=128|u>>>6&63),c[g++]=128|63&u);return c},n.buf2binstring=function(l){return p(l,l.length)},n.binstring2buf=function(l){for(var c=new a.Buf8(l.length),u=0,h=c.length;u>10&1023,b[h++]=56320|1023&f)}return p(b,h)},n.utf8border=function(l,c){var u;for((c=c||l.length)>l.length&&(c=l.length),u=c-1;0<=u&&(192&l[u])==128;)u--;return u<0||u===0?c:u+o[l[u]]>c?u:c}},{"./common":41}],43:[function(e,t,n){"use strict";t.exports=function(a,i,r,o){for(var s=65535&a|0,p=a>>>16&65535|0,l=0;r!==0;){for(r-=l=2e3>>1:i>>>1;r[o]=i}return r}();t.exports=function(i,r,o,s){var p=a,l=s+o;i^=-1;for(var c=s;c>>8^p[255&(i^r[c])];return-1^i}},{}],46:[function(e,t,n){"use strict";var a,i=e("../utils/common"),r=e("./trees"),o=e("./adler32"),s=e("./crc32"),p=e("./messages"),l=0,c=4,u=0,h=-2,f=-1,g=4,x=2,b=8,_=9,C=286,w=30,z=19,F=2*C+1,T=15,S=3,W=258,Y=W+S+1,k=42,E=113,m=1,P=2,J=3,D=4;function ae(d,B){return d.msg=p[B],B}function R(d){return(d<<1)-(4d.avail_out&&(M=d.avail_out),M!==0&&(i.arraySet(d.output,B.pending_buf,B.pending_out,M,d.next_out),d.next_out+=M,B.pending_out+=M,d.total_out+=M,d.avail_out-=M,B.pending-=M,B.pending===0&&(B.pending_out=0))}function I(d,B){r._tr_flush_block(d,0<=d.block_start?d.block_start:-1,d.strstart-d.block_start,B),d.block_start=d.strstart,A(d.strm)}function ee(d,B){d.pending_buf[d.pending++]=B}function G(d,B){d.pending_buf[d.pending++]=B>>>8&255,d.pending_buf[d.pending++]=255&B}function q(d,B){var M,y,v=d.max_chain_length,j=d.strstart,O=d.prev_length,N=d.nice_match,L=d.strstart>d.w_size-Y?d.strstart-(d.w_size-Y):0,U=d.window,Z=d.w_mask,V=d.prev,Q=d.strstart+W,le=U[j+O-1],re=U[j+O];d.prev_length>=d.good_match&&(v>>=2),N>d.lookahead&&(N=d.lookahead);do if(U[(M=B)+O]===re&&U[M+O-1]===le&&U[M]===U[j]&&U[++M]===U[j+1]){j+=2,M++;do;while(U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&U[++j]===U[++M]&&jL&&--v!=0);return O<=d.lookahead?O:d.lookahead}function ue(d){var B,M,y,v,j,O,N,L,U,Z,V=d.w_size;do{if(v=d.window_size-d.lookahead-d.strstart,d.strstart>=V+(V-Y)){for(i.arraySet(d.window,d.window,V,V,0),d.match_start-=V,d.strstart-=V,d.block_start-=V,B=M=d.hash_size;y=d.head[--B],d.head[B]=V<=y?y-V:0,--M;);for(B=M=V;y=d.prev[--B],d.prev[B]=V<=y?y-V:0,--M;);v+=V}if(d.strm.avail_in===0)break;if(O=d.strm,N=d.window,L=d.strstart+d.lookahead,U=v,Z=void 0,Z=O.avail_in,U=S)for(j=d.strstart-d.insert,d.ins_h=d.window[j],d.ins_h=(d.ins_h<=S&&(d.ins_h=(d.ins_h<=S)if(y=r._tr_tally(d,d.strstart-d.match_start,d.match_length-S),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=S){for(d.match_length--;d.strstart++,d.ins_h=(d.ins_h<=S&&(d.ins_h=(d.ins_h<=S&&d.match_length<=d.prev_length){for(v=d.strstart+d.lookahead-S,y=r._tr_tally(d,d.strstart-1-d.prev_match,d.prev_length-S),d.lookahead-=d.prev_length-1,d.prev_length-=2;++d.strstart<=v&&(d.ins_h=(d.ins_h<d.pending_buf_size-5&&(M=d.pending_buf_size-5);;){if(d.lookahead<=1){if(ue(d),d.lookahead===0&&B===l)return m;if(d.lookahead===0)break}d.strstart+=d.lookahead,d.lookahead=0;var y=d.block_start+M;if((d.strstart===0||d.strstart>=y)&&(d.lookahead=d.strstart-y,d.strstart=y,I(d,!1),d.strm.avail_out===0)||d.strstart-d.block_start>=d.w_size-Y&&(I(d,!1),d.strm.avail_out===0))return m}return d.insert=0,B===c?(I(d,!0),d.strm.avail_out===0?J:D):(d.strstart>d.block_start&&(I(d,!1),d.strm.avail_out),m)}),new oe(4,4,8,4,ve),new oe(4,5,16,8,ve),new oe(4,6,32,32,ve),new oe(4,4,16,16,ie),new oe(8,16,32,32,ie),new oe(8,16,128,128,ie),new oe(8,32,128,256,ie),new oe(32,128,258,1024,ie),new oe(32,258,258,4096,ie)],n.deflateInit=function(d,B){return Ae(d,B,b,15,8,0)},n.deflateInit2=Ae,n.deflateReset=ze,n.deflateResetKeep=de,n.deflateSetHeader=function(d,B){return d&&d.state?d.state.wrap!==2?h:(d.state.gzhead=B,u):h},n.deflate=function(d,B){var M,y,v,j;if(!d||!d.state||5>8&255),ee(y,y.gzhead.time>>16&255),ee(y,y.gzhead.time>>24&255),ee(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),ee(y,255&y.gzhead.os),y.gzhead.extra&&y.gzhead.extra.length&&(ee(y,255&y.gzhead.extra.length),ee(y,y.gzhead.extra.length>>8&255)),y.gzhead.hcrc&&(d.adler=s(d.adler,y.pending_buf,y.pending,0)),y.gzindex=0,y.status=69):(ee(y,0),ee(y,0),ee(y,0),ee(y,0),ee(y,0),ee(y,y.level===9?2:2<=y.strategy||y.level<2?4:0),ee(y,3),y.status=E);else{var O=b+(y.w_bits-8<<4)<<8;O|=(2<=y.strategy||y.level<2?0:y.level<6?1:y.level===6?2:3)<<6,y.strstart!==0&&(O|=32),O+=31-O%31,y.status=E,G(y,O),y.strstart!==0&&(G(y,d.adler>>>16),G(y,65535&d.adler)),d.adler=1}if(y.status===69)if(y.gzhead.extra){for(v=y.pending;y.gzindex<(65535&y.gzhead.extra.length)&&(y.pending!==y.pending_buf_size||(y.gzhead.hcrc&&y.pending>v&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),A(d),v=y.pending,y.pending!==y.pending_buf_size));)ee(y,255&y.gzhead.extra[y.gzindex]),y.gzindex++;y.gzhead.hcrc&&y.pending>v&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),y.gzindex===y.gzhead.extra.length&&(y.gzindex=0,y.status=73)}else y.status=73;if(y.status===73)if(y.gzhead.name){v=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>v&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),A(d),v=y.pending,y.pending===y.pending_buf_size)){j=1;break}j=y.gzindexv&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),j===0&&(y.gzindex=0,y.status=91)}else y.status=91;if(y.status===91)if(y.gzhead.comment){v=y.pending;do{if(y.pending===y.pending_buf_size&&(y.gzhead.hcrc&&y.pending>v&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),A(d),v=y.pending,y.pending===y.pending_buf_size)){j=1;break}j=y.gzindexv&&(d.adler=s(d.adler,y.pending_buf,y.pending-v,v)),j===0&&(y.status=103)}else y.status=103;if(y.status===103&&(y.gzhead.hcrc?(y.pending+2>y.pending_buf_size&&A(d),y.pending+2<=y.pending_buf_size&&(ee(y,255&d.adler),ee(y,d.adler>>8&255),d.adler=0,y.status=E)):y.status=E),y.pending!==0){if(A(d),d.avail_out===0)return y.last_flush=-1,u}else if(d.avail_in===0&&R(B)<=R(M)&&B!==c)return ae(d,-5);if(y.status===666&&d.avail_in!==0)return ae(d,-5);if(d.avail_in!==0||y.lookahead!==0||B!==l&&y.status!==666){var N=y.strategy===2?function(L,U){for(var Z;;){if(L.lookahead===0&&(ue(L),L.lookahead===0)){if(U===l)return m;break}if(L.match_length=0,Z=r._tr_tally(L,0,L.window[L.strstart]),L.lookahead--,L.strstart++,Z&&(I(L,!1),L.strm.avail_out===0))return m}return L.insert=0,U===c?(I(L,!0),L.strm.avail_out===0?J:D):L.last_lit&&(I(L,!1),L.strm.avail_out===0)?m:P}(y,B):y.strategy===3?function(L,U){for(var Z,V,Q,le,re=L.window;;){if(L.lookahead<=W){if(ue(L),L.lookahead<=W&&U===l)return m;if(L.lookahead===0)break}if(L.match_length=0,L.lookahead>=S&&0L.lookahead&&(L.match_length=L.lookahead)}if(L.match_length>=S?(Z=r._tr_tally(L,1,L.match_length-S),L.lookahead-=L.match_length,L.strstart+=L.match_length,L.match_length=0):(Z=r._tr_tally(L,0,L.window[L.strstart]),L.lookahead--,L.strstart++),Z&&(I(L,!1),L.strm.avail_out===0))return m}return L.insert=0,U===c?(I(L,!0),L.strm.avail_out===0?J:D):L.last_lit&&(I(L,!1),L.strm.avail_out===0)?m:P}(y,B):a[y.level].func(y,B);if(N!==J&&N!==D||(y.status=666),N===m||N===J)return d.avail_out===0&&(y.last_flush=-1),u;if(N===P&&(B===1?r._tr_align(y):B!==5&&(r._tr_stored_block(y,0,0,!1),B===3&&(te(y.head),y.lookahead===0&&(y.strstart=0,y.block_start=0,y.insert=0))),A(d),d.avail_out===0))return y.last_flush=-1,u}return B!==c?u:y.wrap<=0?1:(y.wrap===2?(ee(y,255&d.adler),ee(y,d.adler>>8&255),ee(y,d.adler>>16&255),ee(y,d.adler>>24&255),ee(y,255&d.total_in),ee(y,d.total_in>>8&255),ee(y,d.total_in>>16&255),ee(y,d.total_in>>24&255)):(G(y,d.adler>>>16),G(y,65535&d.adler)),A(d),0=M.w_size&&(j===0&&(te(M.head),M.strstart=0,M.block_start=0,M.insert=0),U=new i.Buf8(M.w_size),i.arraySet(U,B,Z-M.w_size,M.w_size,0),B=U,Z=M.w_size),O=d.avail_in,N=d.next_in,L=d.input,d.avail_in=Z,d.next_in=0,d.input=B,ue(M);M.lookahead>=S;){for(y=M.strstart,v=M.lookahead-(S-1);M.ins_h=(M.ins_h<>>=S=T>>>24,_-=S,(S=T>>>16&255)===0)P[p++]=65535&T;else{if(!(16&S)){if((64&S)==0){T=C[(65535&T)+(b&(1<>>=S,_-=S),_<15&&(b+=m[o++]<<_,_+=8,b+=m[o++]<<_,_+=8),T=w[b&F];n:for(;;){if(b>>>=S=T>>>24,_-=S,!(16&(S=T>>>16&255))){if((64&S)==0){T=w[(65535&T)+(b&(1<>>=S,_-=S,(S=p-l)>3,b&=(1<<(_-=W<<3))-1,a.next_in=o,a.next_out=p,a.avail_in=o>>24&255)+(k>>>8&65280)+((65280&k)<<8)+((255&k)<<24)}function b(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function _(k){var E;return k&&k.state?(E=k.state,k.total_in=k.total_out=E.total=0,k.msg="",E.wrap&&(k.adler=1&E.wrap),E.mode=h,E.last=0,E.havedict=0,E.dmax=32768,E.head=null,E.hold=0,E.bits=0,E.lencode=E.lendyn=new a.Buf32(f),E.distcode=E.distdyn=new a.Buf32(g),E.sane=1,E.back=-1,c):u}function C(k){var E;return k&&k.state?((E=k.state).wsize=0,E.whave=0,E.wnext=0,_(k)):u}function w(k,E){var m,P;return k&&k.state?(P=k.state,E<0?(m=0,E=-E):(m=1+(E>>4),E<48&&(E&=15)),E&&(E<8||15=D.wsize?(a.arraySet(D.window,E,m-D.wsize,D.wsize,0),D.wnext=0,D.whave=D.wsize):(P<(J=D.wsize-D.wnext)&&(J=P),a.arraySet(D.window,E,m-P,J,D.wnext),(P-=J)?(a.arraySet(D.window,E,m-P,P,0),D.wnext=P,D.whave=D.wsize):(D.wnext+=J,D.wnext===D.wsize&&(D.wnext=0),D.whave>>8&255,m.check=r(m.check,j,2,0),I=A=0,m.mode=2;break}if(m.flags=0,m.head&&(m.head.done=!1),!(1&m.wrap)||(((255&A)<<8)+(A>>8))%31){k.msg="incorrect header check",m.mode=30;break}if((15&A)!=8){k.msg="unknown compression method",m.mode=30;break}if(I-=4,d=8+(15&(A>>>=4)),m.wbits===0)m.wbits=d;else if(d>m.wbits){k.msg="invalid window size",m.mode=30;break}m.dmax=1<>8&1),512&m.flags&&(j[0]=255&A,j[1]=A>>>8&255,m.check=r(m.check,j,2,0)),I=A=0,m.mode=3;case 3:for(;I<32;){if(R===0)break e;R--,A+=P[D++]<>>8&255,j[2]=A>>>16&255,j[3]=A>>>24&255,m.check=r(m.check,j,4,0)),I=A=0,m.mode=4;case 4:for(;I<16;){if(R===0)break e;R--,A+=P[D++]<>8),512&m.flags&&(j[0]=255&A,j[1]=A>>>8&255,m.check=r(m.check,j,2,0)),I=A=0,m.mode=5;case 5:if(1024&m.flags){for(;I<16;){if(R===0)break e;R--,A+=P[D++]<>>8&255,m.check=r(m.check,j,2,0)),I=A=0}else m.head&&(m.head.extra=null);m.mode=6;case 6:if(1024&m.flags&&(R<(q=m.length)&&(q=R),q&&(m.head&&(d=m.head.extra_len-m.length,m.head.extra||(m.head.extra=new Array(m.head.extra_len)),a.arraySet(m.head.extra,P,D,q,d)),512&m.flags&&(m.check=r(m.check,P,q,D)),R-=q,D+=q,m.length-=q),m.length))break e;m.length=0,m.mode=7;case 7:if(2048&m.flags){if(R===0)break e;for(q=0;d=P[D+q++],m.head&&d&&m.length<65536&&(m.head.name+=String.fromCharCode(d)),d&&q>9&1,m.head.done=!0),k.adler=m.check=0,m.mode=12;break;case 10:for(;I<32;){if(R===0)break e;R--,A+=P[D++]<>>=7&I,I-=7&I,m.mode=27;break}for(;I<3;){if(R===0)break e;R--,A+=P[D++]<>>=1)){case 0:m.mode=14;break;case 1:if(W(m),m.mode=20,E!==6)break;A>>>=2,I-=2;break e;case 2:m.mode=17;break;case 3:k.msg="invalid block type",m.mode=30}A>>>=2,I-=2;break;case 14:for(A>>>=7&I,I-=7&I;I<32;){if(R===0)break e;R--,A+=P[D++]<>>16^65535)){k.msg="invalid stored block lengths",m.mode=30;break}if(m.length=65535&A,I=A=0,m.mode=15,E===6)break e;case 15:m.mode=16;case 16:if(q=m.length){if(R>>=5,I-=5,m.ndist=1+(31&A),A>>>=5,I-=5,m.ncode=4+(15&A),A>>>=4,I-=4,286>>=3,I-=3}for(;m.have<19;)m.lens[O[m.have++]]=0;if(m.lencode=m.lendyn,m.lenbits=7,M={bits:m.lenbits},B=s(0,m.lens,0,19,m.lencode,0,m.work,M),m.lenbits=M.bits,B){k.msg="invalid code lengths set",m.mode=30;break}m.have=0,m.mode=19;case 19:for(;m.have>>16&255,he=65535&v,!((ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>>=ie,I-=ie,m.lens[m.have++]=he;else{if(he===16){for(y=ie+2;I>>=ie,I-=ie,m.have===0){k.msg="invalid bit length repeat",m.mode=30;break}d=m.lens[m.have-1],q=3+(3&A),A>>>=2,I-=2}else if(he===17){for(y=ie+3;I>>=ie)),A>>>=3,I-=3}else{for(y=ie+7;I>>=ie)),A>>>=7,I-=7}if(m.have+q>m.nlen+m.ndist){k.msg="invalid bit length repeat",m.mode=30;break}for(;q--;)m.lens[m.have++]=d}}if(m.mode===30)break;if(m.lens[256]===0){k.msg="invalid code -- missing end-of-block",m.mode=30;break}if(m.lenbits=9,M={bits:m.lenbits},B=s(p,m.lens,0,m.nlen,m.lencode,0,m.work,M),m.lenbits=M.bits,B){k.msg="invalid literal/lengths set",m.mode=30;break}if(m.distbits=6,m.distcode=m.distdyn,M={bits:m.distbits},B=s(l,m.lens,m.nlen,m.ndist,m.distcode,0,m.work,M),m.distbits=M.bits,B){k.msg="invalid distances set",m.mode=30;break}if(m.mode=20,E===6)break e;case 20:m.mode=21;case 21:if(6<=R&&258<=te){k.next_out=ae,k.avail_out=te,k.next_in=D,k.avail_in=R,m.hold=A,m.bits=I,o(k,G),ae=k.next_out,J=k.output,te=k.avail_out,D=k.next_in,P=k.input,R=k.avail_in,A=m.hold,I=m.bits,m.mode===12&&(m.back=-1);break}for(m.back=0;oe=(v=m.lencode[A&(1<>>16&255,he=65535&v,!((ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>de)])>>>16&255,he=65535&v,!(de+(ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>>=de,I-=de,m.back+=de}if(A>>>=ie,I-=ie,m.back+=ie,m.length=he,oe===0){m.mode=26;break}if(32&oe){m.back=-1,m.mode=12;break}if(64&oe){k.msg="invalid literal/length code",m.mode=30;break}m.extra=15&oe,m.mode=22;case 22:if(m.extra){for(y=m.extra;I>>=m.extra,I-=m.extra,m.back+=m.extra}m.was=m.length,m.mode=23;case 23:for(;oe=(v=m.distcode[A&(1<>>16&255,he=65535&v,!((ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>de)])>>>16&255,he=65535&v,!(de+(ie=v>>>24)<=I);){if(R===0)break e;R--,A+=P[D++]<>>=de,I-=de,m.back+=de}if(A>>>=ie,I-=ie,m.back+=ie,64&oe){k.msg="invalid distance code",m.mode=30;break}m.offset=he,m.extra=15&oe,m.mode=24;case 24:if(m.extra){for(y=m.extra;I>>=m.extra,I-=m.extra,m.back+=m.extra}if(m.offset>m.dmax){k.msg="invalid distance too far back",m.mode=30;break}m.mode=25;case 25:if(te===0)break e;if(q=G-te,m.offset>q){if((q=m.offset-q)>m.whave&&m.sane){k.msg="invalid distance too far back",m.mode=30;break}ue=q>m.wnext?(q-=m.wnext,m.wsize-q):m.wnext-q,q>m.length&&(q=m.length),ve=m.window}else ve=J,ue=ae-m.offset,q=m.length;for(teF?(S=ue[ve+g[E]],I[ee+g[E]]):(S=96,0),b=1<>ae)+(_-=b)]=T<<24|S<<16|W|0,_!==0;);for(b=1<>=1;if(b!==0?(A&=b-1,A+=b):A=0,E++,--G[k]==0){if(k===P)break;k=l[c+g[E]]}if(J>>7)]}function ee(v,j){v.pending_buf[v.pending++]=255&j,v.pending_buf[v.pending++]=j>>>8&255}function G(v,j,O){v.bi_valid>x-O?(v.bi_buf|=j<>x-v.bi_valid,v.bi_valid+=O-x):(v.bi_buf|=j<>>=1,O<<=1,0<--j;);return O>>>1}function ve(v,j,O){var N,L,U=new Array(g+1),Z=0;for(N=1;N<=g;N++)U[N]=Z=Z+O[N-1]<<1;for(L=0;L<=j;L++){var V=v[2*L+1];V!==0&&(v[2*L]=ue(U[V]++,V))}}function ie(v){var j;for(j=0;j>1;1<=O;O--)de(v,U,O);for(L=Q;O=v.heap[1],v.heap[1]=v.heap[v.heap_len--],de(v,U,1),N=v.heap[1],v.heap[--v.heap_max]=O,v.heap[--v.heap_max]=N,U[2*L]=U[2*O]+U[2*N],v.depth[L]=(v.depth[O]>=v.depth[N]?v.depth[O]:v.depth[N])+1,U[2*O+1]=U[2*N+1]=L,v.heap[1]=L++,de(v,U,1),2<=v.heap_len;);v.heap[--v.heap_max]=v.heap[1],function(re,Ce){var Mt,Be,Ft,fe,rn,Qn,Re=Ce.dyn_tree,Gi=Ce.max_code,np=Ce.stat_desc.static_tree,ap=Ce.stat_desc.has_stree,ip=Ce.stat_desc.extra_bits,Zi=Ce.stat_desc.extra_base,Et=Ce.stat_desc.max_length,on=0;for(fe=0;fe<=g;fe++)re.bl_count[fe]=0;for(Re[2*re.heap[re.heap_max]+1]=0,Mt=re.heap_max+1;Mt>=7;L>>=1)if(1&le&&V.dyn_ltree[2*Q]!==0)return i;if(V.dyn_ltree[18]!==0||V.dyn_ltree[20]!==0||V.dyn_ltree[26]!==0)return r;for(Q=32;Q>>3,(U=v.static_len+3+7>>>3)<=L&&(L=U)):L=U=O+5,O+4<=L&&j!==-1?y(v,j,O,N):v.strategy===4||U===L?(G(v,2+(N?1:0),3),ze(v,Y,k)):(G(v,4+(N?1:0),3),function(V,Q,le,re){var Ce;for(G(V,Q-257,5),G(V,le-1,5),G(V,re-4,4),Ce=0;Ce>>8&255,v.pending_buf[v.d_buf+2*v.last_lit+1]=255&j,v.pending_buf[v.l_buf+v.last_lit]=255&O,v.last_lit++,j===0?v.dyn_ltree[2*O]++:(v.matches++,j--,v.dyn_ltree[2*(m[O]+l+1)]++,v.dyn_dtree[2*I(j)]++),v.last_lit===v.lit_bufsize-1},n._tr_align=function(v){G(v,2,3),q(v,_,Y),function(j){j.bi_valid===16?(ee(j,j.bi_buf),j.bi_buf=0,j.bi_valid=0):8<=j.bi_valid&&(j.pending_buf[j.pending++]=255&j.bi_buf,j.bi_buf>>=8,j.bi_valid-=8)}(v)}},{"../utils/common":41}],53:[function(e,t,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,n){(function(a){(function(i,r){"use strict";if(!i.setImmediate){var o,s,p,l,c=1,u={},h=!1,f=i.document,g=Object.getPrototypeOf&&Object.getPrototypeOf(i);g=g&&g.setTimeout?g:i,o={}.toString.call(i.process)==="[object process]"?function(C){process.nextTick(function(){b(C)})}:function(){if(i.postMessage&&!i.importScripts){var C=!0,w=i.onmessage;return i.onmessage=function(){C=!1},i.postMessage("","*"),i.onmessage=w,C}}()?(l="setImmediate$"+Math.random()+"$",i.addEventListener?i.addEventListener("message",_,!1):i.attachEvent("onmessage",_),function(C){i.postMessage(l+C,"*")}):i.MessageChannel?((p=new MessageChannel).port1.onmessage=function(C){b(C.data)},function(C){p.port2.postMessage(C)}):f&&"onreadystatechange"in f.createElement("script")?(s=f.documentElement,function(C){var w=f.createElement("script");w.onreadystatechange=function(){b(C),w.onreadystatechange=null,s.removeChild(w),w=null},s.appendChild(w)}):function(C){setTimeout(b,0,C)},g.setImmediate=function(C){typeof C!="function"&&(C=new Function(""+C));for(var w=new Array(arguments.length-1),z=0;z"u"?a===void 0?this:a:self)}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})});var pc=K((Z2,lc)=>{lc.exports={aqua:/#00ffff(ff)?(?!\w)|#0ff(f)?(?!\w)/gi,azure:/#f0ffff(ff)?(?!\w)/gi,beige:/#f5f5dc(ff)?(?!\w)/gi,bisque:/#ffe4c4(ff)?(?!\w)/gi,black:/#000000(ff)?(?!\w)|#000(f)?(?!\w)/gi,blue:/#0000ff(ff)?(?!\w)|#00f(f)?(?!\w)/gi,brown:/#a52a2a(ff)?(?!\w)/gi,coral:/#ff7f50(ff)?(?!\w)/gi,cornsilk:/#fff8dc(ff)?(?!\w)/gi,crimson:/#dc143c(ff)?(?!\w)/gi,cyan:/#00ffff(ff)?(?!\w)|#0ff(f)?(?!\w)/gi,darkblue:/#00008b(ff)?(?!\w)/gi,darkcyan:/#008b8b(ff)?(?!\w)/gi,darkgrey:/#a9a9a9(ff)?(?!\w)/gi,darkred:/#8b0000(ff)?(?!\w)/gi,deeppink:/#ff1493(ff)?(?!\w)/gi,dimgrey:/#696969(ff)?(?!\w)/gi,gold:/#ffd700(ff)?(?!\w)/gi,green:/#008000(ff)?(?!\w)/gi,grey:/#808080(ff)?(?!\w)/gi,honeydew:/#f0fff0(ff)?(?!\w)/gi,hotpink:/#ff69b4(ff)?(?!\w)/gi,indigo:/#4b0082(ff)?(?!\w)/gi,ivory:/#fffff0(ff)?(?!\w)/gi,khaki:/#f0e68c(ff)?(?!\w)/gi,lavender:/#e6e6fa(ff)?(?!\w)/gi,lime:/#00ff00(ff)?(?!\w)|#0f0(f)?(?!\w)/gi,linen:/#faf0e6(ff)?(?!\w)/gi,maroon:/#800000(ff)?(?!\w)/gi,moccasin:/#ffe4b5(ff)?(?!\w)/gi,navy:/#000080(ff)?(?!\w)/gi,oldlace:/#fdf5e6(ff)?(?!\w)/gi,olive:/#808000(ff)?(?!\w)/gi,orange:/#ffa500(ff)?(?!\w)/gi,orchid:/#da70d6(ff)?(?!\w)/gi,peru:/#cd853f(ff)?(?!\w)/gi,pink:/#ffc0cb(ff)?(?!\w)/gi,plum:/#dda0dd(ff)?(?!\w)/gi,purple:/#800080(ff)?(?!\w)/gi,red:/#ff0000(ff)?(?!\w)|#f00(f)?(?!\w)/gi,salmon:/#fa8072(ff)?(?!\w)/gi,seagreen:/#2e8b57(ff)?(?!\w)/gi,seashell:/#fff5ee(ff)?(?!\w)/gi,sienna:/#a0522d(ff)?(?!\w)/gi,silver:/#c0c0c0(ff)?(?!\w)/gi,skyblue:/#87ceeb(ff)?(?!\w)/gi,snow:/#fffafa(ff)?(?!\w)/gi,tan:/#d2b48c(ff)?(?!\w)/gi,teal:/#008080(ff)?(?!\w)/gi,thistle:/#d8bfd8(ff)?(?!\w)/gi,tomato:/#ff6347(ff)?(?!\w)/gi,violet:/#ee82ee(ff)?(?!\w)/gi,wheat:/#f5deb3(ff)?(?!\w)/gi,white:/#ffffff(ff)?(?!\w)|#fff(f)?(?!\w)/gi}});var dc=K((K2,uc)=>{var Ga=pc(),Ka={whitespace:/\s+/g,urlHexPairs:/%[\dA-F]{2}/g,quotes:/"/g};function dh(e){return e.trim().replace(Ka.whitespace," ")}function fh(e){return encodeURIComponent(e).replace(Ka.urlHexPairs,hh)}function mh(e){return Object.keys(Ga).forEach(function(t){Ga[t].test(e)&&(e=e.replace(Ga[t],t))}),e}function hh(e){switch(e){case"%20":return" ";case"%3D":return"=";case"%3A":return":";case"%2F":return"/";default:return e.toLowerCase()}}function Za(e){if(typeof e!="string")throw new TypeError("Expected a string, but received "+typeof e);e.charCodeAt(0)===65279&&(e=e.slice(1));var t=mh(dh(e)).replace(Ka.quotes,"'");return"data:image/svg+xml,"+fh(t)}Za.toSrcset=function(t){return Za(t).replace(/ /g,"%20")};uc.exports=Za});var n1={};Xi(n1,{default:()=>Jn});module.exports=up(n1);var tp=require("obsidian");var st=require("@codemirror/view"),na=require("obsidian");var ln=require("@codemirror/view"),er=require("obsidian");var Qi=require("@codemirror/view"),tt=class extends Qi.WidgetType{constructor(n,a){super();this.id=n;this.plugin=a}eq(n){return n instanceof tt&&n.id===this.id}toDOM(n){let a=createSpan({cls:"cm-isc-icon",attr:{"aria-label":this.id.replace(/_/g," ")}});return this.plugin.packManager.getSVGIcon(this.id).then(i=>{i?(i.classList.forEach(r=>a.addClass(r)),a.replaceChildren(...i.childNodes)):a.append(`:${this.id}:`)}),a}ignoreEvent(){return!1}};var dp=(e,t)=>{let n=[],a=e.state.field(t.shortcodePosField);for(let{from:i,to:r}of e.visibleRanges)a.between(i,r,(o,s,{iconId:p})=>{n.push([p,o,s])});return ln.Decoration.set(n.map(([i,r,o])=>{let p={widget:new tt(i,t),side:-1,from:r,to:o};return e.state.field(er.editorLivePreviewField)?ln.Decoration.replace(p).range(r,o):ln.Decoration.widget(p).range(o)}),!0)},ta=dp;var tr=require("obsidian"),fp=(e,t,n,a)=>new tr.Menu(n.app).addItem(i=>i.setIcon("image-glyph").setTitle("Change Icon").onClick(()=>$(void 0,null,function*(){let r=yield n.api.getIconFromUser();!r||a.dispatch({changes:{from:e,to:t,insert:`:${r.id}:`}})}))).addItem(i=>i.setIcon("trash").setTitle("Delete Icon").onClick(()=>{a.dispatch({changes:{from:e,to:t,insert:""}})})),nr=fp;var mp=e=>{class t{constructor(i){this.plugin=e,this.decorations=ta(i,this.plugin)}update(i){let r=i.startState.field(na.editorLivePreviewField),o=i.state.field(na.editorLivePreviewField);(i.docChanged||i.viewportChanged||r!==o)&&(this.decorations=ta(i.view,e))}}return st.ViewPlugin.fromClass(t,{eventHandlers:{mousedown:n},decorations:a=>a.decorations,provide:a=>st.EditorView.atomicRanges.of(i=>{let r=i.plugin(a);return r?r.decorations:st.Decoration.none})});function n(a,i){let r=a.target;if(r.matchParent(".cm-isc-icon",i.contentDOM)){let o=i.posAtDOM(r),s=-1,p=-1;if(this.decorations.between(o-1,o+1,(l,c,u)=>{if(o>=l&&o<=c){l===c?(s=u.spec.from,p=u.spec.to):(s=l,p=c);return}}),s<0||p<0){console.error("no range found for",r);return}if(ar(0).then(()=>i.dispatch({selection:{anchor:s,head:p}})),a.button===0||a.button===1){let l=nr(s,p,e,i);ar(200).then(()=>l.showAtMouseEvent(a))}}}},ar=e=>new Promise(t=>setTimeout(t,e)),ir=mp;var hp=e=>{e.registerEditorExtension([e.shortcodePosField,ir(e)])},rr=hp;var Ps=require("@codemirror/language"),Ts=require("@codemirror/language"),bn=require("@codemirror/state"),Os=require("@codemirror/state");var mn=be(fr(),1),Fs=be(Wt(),1),Bs=be(fn(),1);var{toString:ym}=Object.prototype;function ka(e){return ym.call(e)==="[object RegExp]"}var Ms={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function wa(e,t={}){if(!ka(e))throw new TypeError("Expected a RegExp instance");let n=Object.keys(Ms).map(i=>(typeof t[i]=="boolean"?t[i]:e[i])?Ms[i]:"").join(""),a=new RegExp(t.source||e.source,n);return a.lastIndex=typeof t.lastIndex=="number"?t.lastIndex:e.lastIndex,a}var je=e=>{var t=e.indexOf(":");return t>-1?t===e.length-1?(e=e.substring(0,t),je(e)):(e=e.substring(t+1),je(e)):e},_m=/^([A-Za-z0-9]+?)_/,Ca=e=>{if(Fs.default.hasEmoji(e))return{pack:"emoji",name:e};let t=e.match(_m);if(!t)return console.error("No vaild pack id found in: ",e),null;let[n,a]=t;return{pack:a,name:e.substring(n.length)}},ja=e=>{let t=Ca(e);return t?`${t.pack}_${La(t.name)}`:(console.log("failed to rename icon: id %s invalid",e),null)},La=e=>e.trim().replace(/[ -]+/g,"_").replace(/\s+/g,"").toLocaleLowerCase(),hn=[".bmp",".png",".jpg",".jpeg",".gif",".svg",".webp"],Es=/^[\w-]+\.(?:bmp|png|jpg|jpeg|gif|svg|webp)$/,gn=/\.(?:bmp|png|jpg|jpeg|gif|svg|webp)$/,km=hn.map(e=>(0,mn.lookup)(e)),zs=e=>$(void 0,null,function*(){if(!e||e.length<=0)return null;let t=i=>$(void 0,null,function*(){return{name:i.name.replace(gn,""),ext:"."+(0,mn.extension)(i.type),data:yield i.arrayBuffer()}}),n=[];for(let i=0;i0?a:null}),gt=/:\+1:|:-1:|:[\w-]+:/,Rt=e=>wa(e,{global:!0}),xt=e=>(0,Bs.default)(["isc-icon",`isc-${e.pack}`]);var wm=(e,t)=>xn(e,t[0])||xn(e,t[1]),xn=(e,t)=>e[0]t,Cm=(e,t)=>{let n=xn(e,t[0])?e[0]:t[0],a=xn(e,t[1])?e[1]:t[1];return[n,a]},jm=e=>e.sort((t,n)=>t[0]-n[0]).reduce((t,n)=>{let a=t.findIndex(i=>wm(i,n));return a!==-1?t[a]=Cm(t[a],n):t.push(n),t},[]),vn=jm;var Ut=class extends bn.RangeValue{constructor(n){super();this.text=n}get iconId(){return je(this.text)}eq(n){return n instanceof Ut&&n.text===this.text}},Lm=["link-alias","comment","header","strong","em","strikethrough","quote","link","list-1","list-2","list-3","highlight","hmd-footref2","footref"],Im=["formatting","comment-start","comment-end"],Sm=e=>{let t=e.prop(Ts.tokenClassNodeProp);if(!t)return!1;let n=new Set(t==null?void 0:t.split(" "));return Im.every(a=>!n.has(a))&&Lm.some(a=>n.has(a))},Am=e=>{let t=(n,a,i,r)=>{let o=(p,l)=>{let c=n.doc.sliceString(p,l);if(!!c.trim())for(let{0:u,index:h}of c.matchAll(Rt(gt)))e.packManager.hasIcon(je(u))&&r(p+h,p+h+u.length,new Ut(u))},s=a;(0,Ps.syntaxTree)(n).iterate({from:a-1,to:i+1,enter:({type:p,from:l,to:c})=>{p.name!=="Document"&&(l!==s&&o(s,l),s=c,Sm(p)&&o(l,c))}}),s!==i&&o(s,i)};return Os.StateField.define({create:n=>{let a=new bn.RangeSetBuilder;return t(n,0,n.doc.length,a.add.bind(a)),a.finish()},update:(n,a)=>{if(!a.docChanged)return n;n=n.map(a.changes);let i=[];a.changes.iterChangedRanges((o,s,p,l)=>{i.push([a.state.doc.lineAt(p).number,a.state.doc.lineAt(l).number])});let r=[];for(let[o,s]of vn(i)){let{from:p}=a.state.doc.line(o),{to:l}=a.state.doc.line(s);n=n.update({filterFrom:p,filterTo:l,filter:()=>!1}),t(a.state,p,l,(c,u,h)=>{r.push(h.range(c,u))})}return n=n.update({add:r}),n}})},Ns=Am;var Vt=class{constructor(t){this.plugin=t;this.cache=new Map}get vault(){return this.plugin.app.vault}getIcon(t){return $(this,null,function*(){let n=yield this.vault.adapter.stat(t);if(!n||n.type!=="file")return null;if(this.cache.has(t)){let i=this.cache.get(t);if(i.ctime===n.ctime&&i.mtime===n.mtime&&i.size===n.size)return i.svg.cloneNode(!0)}return(yield this.readIntoCache(t,n)).cloneNode(!0)})}readIntoCache(t,n){return $(this,null,function*(){let a=DOMPurify.sanitize(yield this.vault.adapter.read(t)),i=new DOMParser().parseFromString(a,"image/svg+xml").documentElement;return this.cache.set(t,et(Me({},n),{svg:i})),i})}refresh(){let t=n=>$(this,null,function*(){let a=yield this.vault.adapter.stat(n);return!a||a.type!=="file"?this.cache.delete(n):yield this.readIntoCache(n,a),n});return Promise.allSettled([...this.cache.keys()].map(t))}clear(){this.cache.clear()}};var yc=be(Ia(),1);function He(e){return Array.isArray?Array.isArray(e):Gs(e)==="[object Array]"}var Mm=1/0;function Fm(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-Mm?"-0":t}function Em(e){return e==null?"":Fm(e)}function Te(e){return typeof e=="string"}function qs(e){return typeof e=="number"}function zm(e){return e===!0||e===!1||Bm(e)&&Gs(e)=="[object Boolean]"}function $s(e){return typeof e=="object"}function Bm(e){return $s(e)&&e!==null}function ke(e){return e!=null}function Sa(e){return!e.trim().length}function Gs(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Pm="Incorrect 'index' type",Tm=e=>`Invalid value for key ${e}`,Om=e=>`Pattern length exceeds max of ${e}.`,Nm=e=>`Missing ${e} property in key`,Dm=e=>`Property 'weight' in key '${e}' must be a positive integer`,Ws=Object.prototype.hasOwnProperty,Aa=class{constructor(t){this._keys=[],this._keyMap={};let n=0;t.forEach(a=>{let i=Zs(a);n+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,n+=i.weight}),this._keys.forEach(a=>{a.weight/=n})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function Zs(e){let t=null,n=null,a=null,i=1,r=null;if(Te(e)||He(e))a=e,t=Rs(e),n=Ma(e);else{if(!Ws.call(e,"name"))throw new Error(Nm("name"));let o=e.name;if(a=o,Ws.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(Dm(o));t=Rs(o),n=Ma(o),r=e.getFn}return{path:t,id:n,weight:i,src:a,getFn:r}}function Rs(e){return He(e)?e:e.split(".")}function Ma(e){return He(e)?e.join("."):e}function Wm(e,t){let n=[],a=!1,i=(r,o,s)=>{if(!!ke(r))if(!o[s])n.push(r);else{let p=o[s],l=r[p];if(!ke(l))return;if(s===o.length-1&&(Te(l)||qs(l)||zm(l)))n.push(Em(l));else if(He(l)){a=!0;for(let c=0,u=l.length;ce.score===t.score?e.idx{this._keysMap[n.id]=a})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,Te(this.docs[0])?this.docs.forEach((t,n)=>{this._addString(t,n)}):this.docs.forEach((t,n)=>{this._addObject(t,n)}),this.norm.clear())}add(t){let n=this.size();Te(t)?this._addString(t,n):this._addObject(t,n)}removeAt(t){this.records.splice(t,1);for(let n=t,a=this.size();n{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(!!ke(o)){if(He(o)){let s=[],p=[{nestedArrIndex:-1,value:o}];for(;p.length;){let{nestedArrIndex:l,value:c}=p.pop();if(!!ke(c))if(Te(c)&&!Sa(c)){let u={v:c,i:l,n:this.norm.get(c)};s.push(u)}else He(c)&&c.forEach((u,h)=>{p.push({nestedArrIndex:h,value:u})})}a.$[r]=s}else if(Te(o)&&!Sa(o)){let s={v:o,n:this.norm.get(o)};a.$[r]=s}}}),this.records.push(a)}toJSON(){return{keys:this.keys,records:this.records}}};function Ks(e,t,{getFn:n=ne.getFn,fieldNormWeight:a=ne.fieldNormWeight}={}){let i=new Ht({getFn:n,fieldNormWeight:a});return i.setKeys(e.map(Zs)),i.setSources(t),i.create(),i}function Gm(e,{getFn:t=ne.getFn,fieldNormWeight:n=ne.fieldNormWeight}={}){let{keys:a,records:i}=e,r=new Ht({getFn:t,fieldNormWeight:n});return r.setKeys(a),r.setIndexRecords(i),r}function _n(e,{errors:t=0,currentLocation:n=0,expectedLocation:a=0,distance:i=ne.distance,ignoreLocation:r=ne.ignoreLocation}={}){let o=t/e.length;if(r)return o;let s=Math.abs(a-n);return i?o+s/i:s?1:o}function Zm(e=[],t=ne.minMatchCharLength){let n=[],a=-1,i=-1,r=0;for(let o=e.length;r=t&&n.push([a,i]),a=-1)}return e[r-1]&&r-a>=t&&n.push([a,r-1]),n}var at=32;function Km(e,t,n,{location:a=ne.location,distance:i=ne.distance,threshold:r=ne.threshold,findAllMatches:o=ne.findAllMatches,minMatchCharLength:s=ne.minMatchCharLength,includeMatches:p=ne.includeMatches,ignoreLocation:l=ne.ignoreLocation}={}){if(t.length>at)throw new Error(Om(at));let c=t.length,u=e.length,h=Math.max(0,Math.min(a,u)),f=r,g=h,x=s>1||p,b=x?Array(u):[],_;for(;(_=e.indexOf(t,g))>-1;){let S=_n(t,{currentLocation:_,expectedLocation:h,distance:i,ignoreLocation:l});if(f=Math.min(S,f),g=_+c,x){let W=0;for(;W=k;J-=1){let D=J-1,ae=n[e.charAt(D)];if(x&&(b[D]=+!!ae),m[J]=(m[J+1]<<1|1)&ae,S&&(m[J]|=(C[J+1]|C[J])<<1|1|C[J+1]),m[J]&F&&(w=_n(t,{errors:S,currentLocation:D,expectedLocation:h,distance:i,ignoreLocation:l}),w<=f)){if(f=w,g=D,g<=h)break;k=Math.max(1,2*h-g)}}if(_n(t,{errors:S+1,currentLocation:h,expectedLocation:h,distance:i,ignoreLocation:l})>f)break;C=m}let T={isMatch:g>=0,score:Math.max(.001,w)};if(x){let S=Zm(b,s);S.length?p&&(T.indices=S):T.isMatch=!1}return T}function Ym(e){let t={};for(let n=0,a=e.length;n{this.chunks.push({pattern:h,alphabet:Ym(h),startIndex:f})},u=this.pattern.length;if(u>at){let h=0,f=u%at,g=u-f;for(;h{let{isMatch:_,score:C,indices:w}=Km(t,g,x,{location:i+b,distance:r,threshold:o,findAllMatches:s,minMatchCharLength:p,includeMatches:a,ignoreLocation:l});_&&(h=!0),u+=C,_&&w&&(c=[...c,...w])});let f={isMatch:h,score:h?u/this.chunks.length:1};return h&&a&&(f.indices=c),f}},Oe=class{constructor(t){this.pattern=t}static isMultiMatch(t){return Us(t,this.multiRegex)}static isSingleMatch(t){return Us(t,this.singleRegex)}search(){}};function Us(e,t){let n=e.match(t);return n?n[1]:null}var Fa=class extends Oe{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let n=t===this.pattern;return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}},Ea=class extends Oe{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let a=t.indexOf(this.pattern)===-1;return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},za=class extends Oe{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let n=t.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}},Ba=class extends Oe{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let n=!t.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},Pa=class extends Oe{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let n=t.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},Ta=class extends Oe{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let n=!t.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},wn=class extends Oe{constructor(t,{location:n=ne.location,threshold:a=ne.threshold,distance:i=ne.distance,includeMatches:r=ne.includeMatches,findAllMatches:o=ne.findAllMatches,minMatchCharLength:s=ne.minMatchCharLength,isCaseSensitive:p=ne.isCaseSensitive,ignoreLocation:l=ne.ignoreLocation}={}){super(t),this._bitapSearch=new kn(t,{location:n,threshold:a,distance:i,includeMatches:r,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:p,ignoreLocation:l})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},Cn=class extends Oe{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let n=0,a,i=[],r=this.pattern.length;for(;(a=t.indexOf(this.pattern,n))>-1;)n=a+r,i.push([a,n-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},Oa=[Fa,Cn,za,Ba,Ta,Pa,Ea,wn],Vs=Oa.length,Xm=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Jm="|";function Qm(e,t={}){return e.split(Jm).map(n=>{let a=n.trim().split(Xm).filter(r=>r&&!!r.trim()),i=[];for(let r=0,o=a.length;r!!(e[jn.AND]||e[jn.OR]),nh=e=>!!e[Ra.PATH],ah=e=>!He(e)&&$s(e)&&!Ua(e),Hs=e=>({[jn.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function Ys(e,t,{auto:n=!0}={}){let a=i=>{let r=Object.keys(i),o=nh(i);if(!o&&r.length>1&&!Ua(i))return a(Hs(i));if(ah(i)){let p=o?i[Ra.PATH]:r[0],l=o?i[Ra.PATTERN]:i[p];if(!Te(l))throw new Error(Tm(p));let c={keyId:Ma(p),pattern:l};return n&&(c.searcher=Wa(l,t)),c}let s={children:[],operator:r[0]};return r.forEach(p=>{let l=i[p];He(l)&&l.forEach(c=>{s.children.push(a(c))})}),s};return Ua(e)||(e=Hs(e)),a(e)}function ih(e,{ignoreFieldNorm:t=ne.ignoreFieldNorm}){e.forEach(n=>{let a=1;n.matches.forEach(({key:i,norm:r,score:o})=>{let s=i?i.weight:null;a*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:r))}),n.score=a})}function rh(e,t){let n=e.matches;t.matches=[],ke(n)&&n.forEach(a=>{if(!ke(a.indices)||!a.indices.length)return;let{indices:i,value:r}=a,o={indices:i,value:r};a.key&&(o.key=a.key.src),a.idx>-1&&(o.refIndex=a.idx),t.matches.push(o)})}function oh(e,t){t.score=e.score}function sh(e,t,{includeMatches:n=ne.includeMatches,includeScore:a=ne.includeScore}={}){let i=[];return n&&i.push(rh),a&&i.push(oh),e.map(r=>{let{idx:o}=r,s={item:t[o],refIndex:o};return i.length&&i.forEach(p=>{p(r,s)}),s})}var qe=class{constructor(t,n={},a){this.options={...ne,...n},this.options.useExtendedSearch,this._keyStore=new Aa(this.options.keys),this.setCollection(t,a)}setCollection(t,n){if(this._docs=t,n&&!(n instanceof Ht))throw new Error(Pm);this._myIndex=n||Ks(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){!ke(t)||(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let n=[];for(let a=0,i=this._docs.length;a-1&&(p=p.slice(0,n)),sh(p,this._docs,{includeMatches:a,includeScore:i})}_searchStringList(t){let n=Wa(t,this.options),{records:a}=this._myIndex,i=[];return a.forEach(({v:r,i:o,n:s})=>{if(!ke(r))return;let{isMatch:p,score:l,indices:c}=n.searchIn(r);p&&i.push({item:r,idx:o,matches:[{score:l,value:r,norm:s,indices:c}]})}),i}_searchLogical(t){let n=Ys(t,this.options),a=(s,p,l)=>{if(!s.children){let{keyId:u,searcher:h}=s,f=this._findMatches({key:this._keyStore.get(u),value:this._myIndex.getValueForItemAtKeyId(p,u),searcher:h});return f&&f.length?[{idx:l,item:p,matches:f}]:[]}let c=[];for(let u=0,h=s.children.length;u{if(ke(s)){let l=a(n,s,p);l.length&&(r[p]||(r[p]={idx:p,item:s,matches:[]},o.push(r[p])),l.forEach(({matches:c})=>{r[p].matches.push(...c)}))}}),o}_searchObjectList(t){let n=Wa(t,this.options),{keys:a,records:i}=this._myIndex,r=[];return i.forEach(({$:o,i:s})=>{if(!ke(o))return;let p=[];a.forEach((l,c)=>{p.push(...this._findMatches({key:l,value:o[c],searcher:n}))}),p.length&&r.push({idx:s,item:o,matches:p})}),r}_findMatches({key:t,value:n,searcher:a}){if(!ke(n))return[];let i=[];if(He(n))n.forEach(({v:r,i:o,n:s})=>{if(!ke(r))return;let{isMatch:p,score:l,indices:c}=a.searchIn(r);p&&i.push({score:l,key:t,value:r,idx:o,norm:s,indices:c})});else{let{v:r,n:o}=n,{isMatch:s,score:p,indices:l}=a.searchIn(r);s&&i.push({score:p,key:t,value:r,norm:o,indices:l})}return i}};qe.version="6.6.2";qe.createIndex=Ks;qe.parseIndex=Gm;qe.config=ne;qe.parseQuery=Ys;th(Na);var En=be(Js(),1),_c=be(Wt(),1),Fe=require("obsidian"),Le=be(Bt(),1);function qt(e,t){let n=In(e),a=In(t),i=n.pop(),r=a.pop(),o=Ha(n,a);return o!==0?o:i&&r?Ha(i.split("."),r.split(".")):i||r?i?-1:1:0}var ch=e=>typeof e=="string"&&/^[v\d]/.test(e)&&nc.test(e),Sn=(e,t,n)=>{ph(n);let a=qt(e,t);return ac[n].includes(a)},qa=(e,t)=>{let n=t.match(/^([<>=~^]+)/),a=n?n[1]:"=";if(a!=="^"&&a!=="~")return Sn(e,t,a);let[i,r,o]=In(e),[s,p,l]=In(t);return Ln(i,s)!==0?!1:a==="^"?Ha([r,o],[p,l])>=0:Ln(r,p)!==0?!1:Ln(o,l)>=0};qt.validate=ch;qt.compare=Sn;qt.sastisfies=qa;var nc=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,In=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");let t=e.match(nc);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},Qs=e=>e==="*"||e==="x"||e==="X",ec=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},lh=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],Ln=(e,t)=>{if(Qs(e)||Qs(t))return 0;let[n,a]=lh(ec(e),ec(t));return n>a?1:n{for(let n=0;n":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},tc=Object.keys(ac),ph=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(tc.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${tc.join("|")}`)};var $a=be(Wt(),1);var Fn=require("obsidian");var ic="isc",rc=(e,t)=>typeof e=="string"&&e.trim().length>0?t.search(e.replace(/^\+|\+$/g,"").split(/[+]/g)):t.getAllIds();function oc(e,t){return $(this,null,function*(){let{id:n,name:a}=e.item,{matches:i}=e,r=yield this.packManager.getSVGIcon(n);if(!r)throw new TypeError("Failed to get icon for key: "+n);let o=t;if(i){let s=i.length===1?i[0].key==="name"?i[0].indices:[]:vn(i.flatMap(p=>p.key==="name"?p.indices:[]));uh(o,a.replace(/[_-]/g," "),s)}else o.setText(a.replace(/[_-]/g," "));t.createSpan({cls:"suggestion-flair"},s=>s.appendChild(r))})}var An=class extends Fn.SuggestModal{constructor(n){super(n.app);this.plugin=n;this.renderSuggestion=oc;this.resolve=null;this.modalEl.addClass(ic)}get packManager(){return this.plugin.packManager}getSuggestions(n){return rc(n,this.packManager)}open(){return super.open(),new Promise(n=>{this.resolve=n})}onClose(){this.resolve&&(this.resolve(null),this.resolve=null)}onChooseSuggestion(n){}selectSuggestion(n,a){this.resolve&&(n!=null&&n.item?this.resolve(n.item):this.resolve(null),this.resolve=null),super.selectSuggestion(n,a)}},Mn=class extends Fn.EditorSuggest{constructor(n){super(n.app);this.plugin=n;this.renderSuggestion=oc;this.suggestEl.addClass(ic)}get packManager(){return this.plugin.packManager}onTrigger(n,a){if(!this.plugin.settings.suggester)return null;let i=a.getLine(n.line).substring(0,n.ch),r=this.plugin.settings.triggerWithTrailingSpace?" ":"",o=String.raw`(?:${r}:|::)([^:\s]+$)`,s=i.match(new RegExp(o,"i"));if(!s)return null;let p=s.input.substring(0,s.index).match(/:([^\s:]+$)/);return p&&this.packManager.hasIcon(p[1])?null:{end:n,start:{ch:s.index,line:n.line},query:s[1]}}getSuggestions(n){return rc(n.query,this.packManager)}selectSuggestion(n){if(!this.context)return;let{id:a,pack:i}=n.item;this.context.editor.replaceRange(this.plugin.settings.code2emoji&&i==="emoji"?this.packManager.getIcon(a,!0):`:${a}:`+(this.plugin.settings.spaceAfterSC?" ":""),this.context.start,this.context.end)}},uh=(e,t,n,a)=>{if(n){a===void 0&&(a=0);let i=0;for(let r=0;r=t.length)break;s<0&&(s=0),s!==i&&e.appendText(t.substring(i,s)),e.createSpan({cls:"suggestion-highlight",text:t.substring(s,p)}),i=p}}i({hasIcon:e.hasIcon.bind(e),getIcon:e.getIcon.bind(e),getIconData:e.getIconData.bind(e),getSVGIcon:e.getSVGIcon.bind(e),getIconFromUser:()=>new An(t).open(),isEmoji:$a.default.hasEmoji.bind($a.default),postProcessor:t.postProcessor.bind(t),version:{get current(){return t.manifest.version},compare:(n,a)=>Sn(t.manifest.version,a,n),satisfies:n=>qa(t.manifest.version,n)}});var hc=be(dc(),1),gc=be(ya(),1),Ja=require("obsidian");var Ya=["activity","airplay","alarm-check","alarm-clock-off","alarm-clock","alarm-minus","alarm-plus","album","alert-circle","alert-octagon","alert-triangle","align-center","align-justify","align-left","align-right","anchor","aperture","archive","arrow-big-down","arrow-big-left","arrow-big-right","arrow-big-up","arrow-down-circle","arrow-down-left","arrow-down-right","arrow-down","arrow-left-circle","arrow-left-right","arrow-left","arrow-right-circle","arrow-right","arrow-up-circle","arrow-up-left","arrow-up-right","arrow-up","asterisk","at-sign","award","axe","banknote","bar-chart-2","bar-chart","battery-charging","battery-full","battery-low","battery-medium","battery","beaker","bell-minus","bell-off","bell-plus","bell-ring","bell","bike","binary","bitcoin","bluetooth-connected","bluetooth-off","bluetooth-searching","bluetooth","bold","book-open","book","bookmark-minus","bookmark-plus","bookmark","bot","box-select","box","briefcase","brush","bug","building","bus","calculator","calendar","camera-off","camera","car","carrot","cast","check-circle-2","check-circle","check-square","check","chevron-down","chevron-first","chevron-last","chevron-left","chevron-right","chevron-up","chevrons-down-up","chevrons-down","chevrons-left","chevrons-right","chevrons-up-down","chevrons-up","chrome","circle-slashed","circle","clipboard-check","clipboard-copy","clipboard-list","clipboard-x","clipboard","clock-1","clock-10","clock-11","clock-12","clock-2","clock-3","clock-4","clock-5","clock-6","clock-7","clock-8","clock-9","clock","cloud-drizzle","cloud-fog","cloud-hail","cloud-lightning","cloud-moon","cloud-off","cloud-rain-wind","cloud-rain","cloud-snow","cloud-sun","cloud","cloudy","clover","code-2","code","codepen","codesandbox","coffee","coins","columns","command","compass","contact","contrast","cookie","copy","copyleft","copyright","corner-down-left","corner-down-right","corner-left-down","corner-left-up","corner-right-down","corner-right-up","corner-up-left","corner-up-right","cpu","credit-card","crop","cross","crosshair","crown","currency","database","delete","disc","divide-circle","divide-square","divide","dollar-sign","download-cloud","download","dribbble","droplet","droplets","drumstick","edit-2","edit-3","edit","egg","equal-not","equal","euro","expand","external-link","eye-off","eye","facebook","fast-forward","feather","figma","file-check-2","file-check","file-code","file-digit","file-input","file-minus-2","file-minus","file-output","file-plus-2","file-plus","file-search","file-text","file-x-2","file-x","file","files","film","filter","flag-triangle-left","flag-triangle-right","flag","flame","flashlight-off","flashlight","flask-conical","flask-round","folder-minus","folder-open","folder-plus","folder","form-input","forward","framer","frown","function-square","gamepad-2","gamepad","gauge","gavel","gem","ghost","gift","git-branch-plus","git-branch","git-commit","git-merge","git-pull-request","github","gitlab","glasses","globe-2","globe","grab","graduation-cap","grid","grip-horizontal","grip-vertical","hammer","hand-metal","hand","hard-drive","hard-hat","hash","haze","headphones","heart","help-circle","hexagon","highlighter","history","home","image-minus","image-off","image-plus","image","import","inbox","indent","indian-rupee","infinity","info","inspect","instagram","italic","japanese-yen","key","landmark","languages","laptop-2","laptop","lasso-select","lasso","layers","layout-dashboard","layout-grid","layout-list","layout-template","layout","library","life-buoy","lightbulb-off","lightbulb","link-2-off","link-2","link","linkedin","list-checks","list-minus","list-ordered","list-plus","list-x","list","list.txt","loader-2","loader","locate-fixed","locate","lock","log-in","log-out","mail","map-pin","map","maximize-2","maximize","megaphone","meh","menu","message-circle","message-square","mic-off","mic","minimize-2","minimize","minus-circle","minus-square","minus","monitor-off","monitor-speaker","monitor","moon","more-horizontal","more-vertical","mountain-snow","mountain","mouse-pointer-2","mouse-pointer-click","mouse-pointer","move-diagonal-2","move-diagonal","move-horizontal","move-vertical","move","music","navigation-2","navigation","network","octagon","option","outdent","package-check","package-minus","package-plus","package-search","package-x","package","palette","paperclip","pause-circle","pause-octagon","pause","pen-tool","pencil","percent","person-standing","phone-call","phone-forwarded","phone-incoming","phone-missed","phone-off","phone-outgoing","phone","pie-chart","piggy-bank","pin","pipette","plane","play-circle","play","plug-zap","plus-circle","plus-square","plus","pocket","podcast","pointer","pound-sterling","power-off","power","printer","qr-code","quote","radio-receiver","radio","redo","refresh-ccw","refresh-cw","regex","repeat-1","repeat","reply-all","reply","rewind","rocking-chair","rotate-ccw","rotate-cw","rss","ruler","russian-ruble","save","scale","scan-line","scan","scissors","screen-share-off","screen-share","search","send","separator-horizontal","separator-vertical","server-crash","server-off","server","settings-2","settings","share-2","share","sheet","shield-alert","shield-check","shield-close","shield-off","shield","shirt","shopping-bag","shopping-cart","shovel","shrink","shuffle","sidebar-close","sidebar-open","sidebar","sigma","signal-high","signal-low","signal-medium","signal-zero","signal","skip-back","skip-forward","skull","slack","slash","sliders","smartphone-charging","smartphone","smile","snowflake","sort-asc","sort-desc","speaker","sprout","square","star-half","star","stop-circle","strikethrough","subscript","sun","sunrise","sunset","superscript","swiss-franc","switch-camera","table","tablet","tag","target","tent","terminal-square","terminal","text-cursor-input","text-cursor","thermometer-snowflake","thermometer-sun","thermometer","thumbs-down","thumbs-up","ticket","timer-off","timer-reset","timer","toggle-left","toggle-right","tornado","trash-2","trash","trello","trending-down","trending-up","triangle","truck","tv-2","tv","twitch","twitter","type","umbrella","underline","undo","unlink-2","unlink","unlock","upload-cloud","upload","user-check","user-minus","user-plus","user-x","user","users","verified","vibrate","video-off","video","view","voicemail","volume-1","volume-2","volume-x","volume","wallet","wand","watch","webcam","wifi-off","wifi","wind","wrap-text","wrench","x-circle","x-octagon","x-square","x","youtube","zap-off","zap","zoom-in","zoom-out",""];var Xa=["logo-crystal","create-new","trash","search","right-triangle","document","folder","pencil","left-arrow","right-arrow","three-horizontal-bars","dot-network","audio-file","image-file","pdf-file","gear","documents","blocks","go-to-file","presentation","cross-in-box","microphone","microphone-filled","link","popup-open","checkmark","hashtag","left-arrow-with-tail","right-arrow-with-tail","up-arrow-with-tail","down-arrow-with-tail","lines-of-text","vertical-three-dots","pin","magnifying-glass","info","horizontal-split","vertical-split","calendar-with-checkmark","sheets-in-box","up-and-down-arrows","broken-link","cross","any-key","reset","star","crossed-star","dice","filled-pin","enter","help","vault","open-vault","paper-plane","bullet-list","uppercase-lowercase-a","star-list","expand-vertically","languages","switch","pane-layout","install","sync","check-in-circle","sync-small","check-small","paused","forward-arrow","stacked-levels","bracket-glyph","note-glyph","tag-glyph","price-tag-glyph","heading-glyph","bold-glyph","italic-glyph","strikethrough-glyph","highlight-glyph","code-glyph","quote-glyph","link-glyph","bullet-list-glyph","number-list-glyph","checkbox-glyph","undo-glyph","redo-glyph","up-chevron-glyph","down-chevron-glyph","left-chevron-glyph","right-chevron-glyph","percent-sign-glyph","keyboard-glyph","double-up-arrow-glyph","double-down-arrow-glyph","image-glyph","wrench-screwdriver-glyph","clock","plus-with-circle","minus-with-circle","indent-glyph","unindent-glyph","fullscreen","exit-fullscreen","cloud","run-command","compress-glyph","enlarge-glyph","scissors-glyph","up-curly-arrow-glyph","down-curly-arrow-glyph","plus-minus-glyph","links-going-out","links-coming-in","add-note-glyph","duplicate-glyph","clock-glyph","calendar-glyph","command-glyph","dice-glyph","file-explorer-glyph","graph-glyph","import-glyph","navigate-glyph","open-elsewhere-glyph","bullet-list-glyph","presentation-glyph","paper-plane-glyph","question-mark-glyph","restore-file-glyph","search-glyph","star-glyph","play-audio-glyph","stop-audio-glyph","tomorrow-glyph","wand-glyph","workspace-glyph","yesterday-glyph","box-glyph","merge-files-glyph","merge-files","two-blank-pages","scissors","paste","paste-text","split","select-all-text","wand","github-glyph","reading-glasses"];var vh=e=>e.replace(/-/g,"_"),Qa="luc",bh="obs",fc=e=>["class","height","width"].forEach(t=>{var n;return(n=e.firstElementChild)==null?void 0:n.removeAttribute(t)}),ei=class{constructor(t,n){this.pack=t;this.obsidianId=n;this.type="bulti-in";this.name=vh(n),this.id=`${t}_${this.name}`}get data(){var n;let t=createDiv();return(0,Ja.setIcon)(t,(this.pack===Qa?"lucide-":"")+this.obsidianId),fc(t),(n=t.firstElementChild)==null||n.setAttribute("xmlns","http://www.w3.org/2000/svg"),t.innerHTML}get dataUri(){return(0,hc.default)(this.data)}getDOM(t=!0){let n=createSpan({cls:xt(this)});return t?(n.addClass("isc-svg-icon"),(0,Ja.setIcon)(n,(this.pack===Qa?"lucide-":"")+this.obsidianId),fc(n)):(n.addClass("isc-img-icon"),n.createEl("img",{attr:{src:this.dataUri}})),n}},mc="emoji",yh=()=>{let e=new Map,t=[],n=[];for(let[a,i]of[[bh,Xa],[Qa,Ya]]){n.push(a);for(let r of i){let o=new ei(a,r);e.set(o.id,o),t.push(o)}}n.push(mc);for(let a of Object.keys(gc.default))t.push({pack:mc,id:a,name:a});return{packs:e,ids:t,packnames:n}},ti=yh(),ni=ti.packs,ai=ti.ids,vt=ti.packnames;var ii=be(Wt(),1);var it=class{constructor(t){this.name=t}get id(){return this.name}get pack(){return"emoji"}get type(){return"emoji"}get char(){return ii.default.get(this.name)}static getData(t){return ii.default.hasEmoji(t)?new it(t):null}getDOM(t=!0){return createSpan({cls:[xt(this),"isc-char-icon"],text:this.char})}};var xc=require("obsidian"),vc=be(Bt(),1);var Xe=class{constructor(t,n,a,i,r){this._id=t;this._name=n;this._pack=a;this.plugin=r;this.path=i.trim()}static getData(t,n,a){let i=Ca(t);return!i||i.pack==="emoji"?null:new Xe(t,i.name,i.pack,n,a)}get type(){return"file"}get vault(){return this.plugin.app.vault}get id(){return this._id}get pack(){return this._pack}get name(){return this._name}get ext(){return(0,vc.extname)(this.path)}get fsPath(){return this.vault.adapter instanceof xc.FileSystemAdapter?this.vault.adapter.getFullPath(this.path):null}get resourcePath(){return this.vault.adapter.getResourcePath(this.path)}get isSVG(){return this.ext===".svg"}getDOM(t=!0){let n=createSpan({cls:xt(this)});return t&&this.isSVG?(n.addClass("isc-svg-icon"),(()=>$(this,null,function*(){let a=yield this.plugin.fileIconCache.getIcon(this.path);return a?(this.fixFillColor(a),n.append(a)):console.error("failed to get icon data for",this.path),n}))()):(n.addClass("isc-img-icon"),n.createEl("img",{attr:{src:this.resourcePath}}),n)}fixFillColor(t){if(!!_h.includes(this.pack))for(let n of t.getElementsByTagName("path"))n.hasAttribute("fill")||n.setAttribute("fill","currentColor")}},_h=["fab","far","fas","rif","ril"];var bc=e=>!!e.ext;var kh="/icons.json",wh="icons",$t=class extends Fe.Events{constructor(n){super();this.plugin=n;this._customIcons=new Map;this._cutomsIconPacknames=new Set;this._loaded=!1;this._fuse=new qe(ai,{keys:["name","pack"],includeScore:!0,findAllMatches:!0,threshold:.5,shouldSort:!0,includeMatches:!0,useExtendedSearch:!0})}get vault(){return this.plugin.app.vault}renameIconFile(n,a,i){return $(this,null,function*(){let r=(0,Le.join)(this.customIconsDir,i+a),o=(0,Le.join)(this.customIconsDir,n+a);return yield this.vault.adapter.rename(o,r),r})}removeIconFile(n,a){let i=(0,Le.join)(this.customIconsDir,n+a);return this.vault.adapter.remove(i)}addIcon(n,a,i){return $(this,null,function*(){let r=(0,Le.join)(this.customIconsDir,n+a);return yield this.vault.adapter.writeBinary(r,i),r})}get customPacknames(){return[...this._cutomsIconPacknames]}get customIconsFilePath(){return(0,Fe.normalizePath)(this.plugin.manifest.dir+kh)}get customIconsDir(){return(0,Le.join)(this.vault.configDir,wh)}isPacknameExists(n){return vt.includes(n)||this._cutomsIconPacknames.has(n)}get enabledPacknames(){return[...vt,...this._cutomsIconPacknames].filter(n=>this.isPackEnabled(n))}hasIcon(n){return this._isBuiltIn(n)||this._customIcons.has(n)}_isBuiltIn(n){return _c.default.hasEmoji(n)||ni.has(n)}getIcon(n,a=!1){n=je(n);let i=this.getIconData(n);if(!i)return null;let r=()=>i.getDOM(!1);switch(i.type){case"emoji":return a?i.char:r();case"bulti-in":return a?i.dataUri:r();case"file":return a?i.resourcePath:r();default:(0,yc.default)(i)}}getSVGIcon(n,a=!1){return $(this,null,function*(){n=je(n);let i=this.getIconData(n);if(!i)return null;let r=()=>i.getDOM(!0);if(i.type==="emoji")return a?i.char:r();if(i.type==="bulti-in"||i.type==="file"&&i.isSVG){let o=yield r();return a?o.innerHTML:o}else return a?i.resourcePath:r()})}getIconData(n){n=je(n);let a;return(a=it.getData(n))||(a=ni.get(n))||(a=this._customIcons.get(n))?a:null}isPackEnabled(n){return n==="emoji"?!0:!this.plugin.settings.disabledPacks.has(n)}refreshPackNames(){this._cutomsIconPacknames.clear();for(let[,{pack:n}]of this._customIcons)this._cutomsIconPacknames.add(n)}loadIcons(){return $(this,null,function*(){if(this._loaded&&(this._fuse.setCollection([]),this._customIcons.clear(),this._cutomsIconPacknames.clear(),this._loaded=!1),!(yield this.vault.adapter.exists(this.customIconsDir))){yield this.vault.adapter.mkdir(this.customIconsDir);return}let n=yield this.vault.adapter.list(this.customIconsDir),a,i=n.files.map(r=>$(this,null,function*(){if(!gn.test(r))return;let o=(0,Le.basename)(r).replace(gn,""),s=Xe.getData(o,r,this.plugin);s?(this._customIcons.set(o,s),this._fuse.add(s)):console.warn("Failed to load icon data (raw value: %o) for id %s, skipping...",r,o)}));for(let r of yield Promise.allSettled(i))r.status==="rejected"&&console.error("Failed to load icon",r.reason);this._loaded=!0,this.refreshPackNames(),this.trigger("initialized",this.plugin.api)})}backupIcons(n){return $(this,null,function*(){let a=new En.default,i=yield this.vault.adapter.list(this.customIconsDir);for(let o of i.files)(!n||(0,Le.basename)(o).startsWith(n+"_"))&&a.file((0,Le.basename)(o),this.vault.adapter.readBinary(o));let r=`${n!=null?n:"custom-icons"}.zip`;yield this.vault.createBinary(r,yield a.generateAsync({type:"arraybuffer"})),Fe.Platform.isDesktopApp?this.plugin.app.openWithDefaultApp(""):new Fe.Notice(`icons have been saved to ${r}, enable 'Detect all file extension' in 'Files & Links' to visit it`)})}importIconsFromFileList(n,a=!1){return $(this,null,function*(){let i=[];for(let r=0;r$(this,null,function*(){let{name:l}=p;a&&!l.startsWith(i+"_")&&(l=i+"_"+l);let c=this.getAvailableId(l),u=(0,Le.join)(this.customIconsDir,c);return(yield this.vault.adapter.exists(u))?Promise.reject(`icon ${c} already exists, skipping..`):(yield this.vault.adapter.writeBinary(u,yield p.async("arraybuffer")),c)})),s=(yield Promise.allSettled(o)).reduce((p,l)=>(l.status==="rejected"?console.error("Failed to import icon",l.reason):p.push(l.value),p),[]);return new Fe.Notice(s.length+" icons imported"),n.name})}addFromFiles(n,a){return $(this,null,function*(){let i=yield zs(a);if(!i){new Fe.Notice("No SVG file found in dropped items");return}if(vt.includes(n)){console.error("failed to add pack: pack name %s reserved",n);return}let r=i.reduce((s,{name:p,ext:l,data:c})=>{let u=ja(`${n}_${p}`);return u?(u=this.getAvailableId(u),this._customIcons.has(u)?(s.push(Promise.reject(`icon ${u} already exists, skipping..`)),s):(s.push((()=>$(this,null,function*(){try{let h=yield this.addIcon(u,l,c);this.set(u,new Xe(u,p,n,h,this.plugin),!1)}catch(h){throw new $e("add",u,h)}return u}))()),s)):(console.warn("failed to add icon: id %s invalid, skipping...",u),s)},[]),o=[];for(let s of yield Promise.allSettled(r))s.status==="rejected"?console.error("Failed to add icon, details: ",s.reason):o.push(s.value);this.refreshPackNames(),this.trigger("changed",this.plugin.api,o),new Fe.Notice(o.length.toString()+" icons added")})}deleteMultiple(...n){return $(this,null,function*(){this._fuse.remove(r=>bc(r)&&n.includes(r.id));let a=n.map(r=>$(this,null,function*(){let o=this._customIcons.get(r);if(!o)throw new $e("delete",r,"No icon found in _customIcons");this._customIcons.delete(r);try{yield this.removeIconFile(r,o.ext)}catch(s){throw new $e("delete",r,s)}})),i=!1;for(let r of yield Promise.allSettled(a))r.status==="rejected"?console.error("Failed to remove icon file, details: ",r.reason):i||(i=!0);i&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,n))})}filter(n){return $(this,null,function*(){let a=new Map;for(let[r,o]of this._customIcons)n(r,o)||(this._customIcons.delete(r),a.set(r,o.path));if(this._fuse.remove(r=>a.has(r.id)),a.size===0)return;this.refreshPackNames(),this.trigger("changed",this.plugin.api,[...a.keys()]);let i=[...a.values()].map(r=>$(this,null,function*(){try{yield this.vault.adapter.remove(r)}catch(o){throw new $e("delete",(0,Le.basename)(r),o)}}));for(let r of yield Promise.allSettled(i))r.status==="rejected"&&console.error("Failed to remove icon file, details: ",r.reason)})}rename(n,a){return $(this,null,function*(){if(this.hasIcon(a))return console.log("failed to rename icon: id %s already exists",a),null;let i=this._customIcons.get(n);if(!i)return console.log("failed to rename icon: id %s not found in custom icons",n),null;let r=ja(a);if(!r)return console.log("failed to rename icon: id %s invalid",n),null;try{i.path=yield this.renameIconFile(n,i.ext,a)}catch(o){throw new $e("rename",n,o,a)}return this.set(r,i,!1),this.delete(n,!1,!1),this.refreshPackNames(),this.trigger("changed",this.plugin.api,[n,a]),a})}star(n){return $(this,null,function*(){let a=n.replace(/_\d?$/,"");if(a===n)return console.log("failed to star icon: no suffix found for id %s",n),null;let i=this._customIcons.get(n);if(!i)return console.log("failed to star icon: id %s not found in custom icons",n),null;if(this._isBuiltIn(a))return console.log("failed to star icon: new id %s exists in built-in icons",a),null;try{let{ext:r}=i;if(this._customIcons.has(a)){let o=this._customIcons.get(a),{ext:s}=o;yield this.renameIconFile(a,s,a+"_temp"),i.path=yield this.renameIconFile(n,r,a),this.set(a,i,!1),o.path=yield this.renameIconFile(a+"_temp",s,n),this.set(n,o,!1)}else i.path=yield this.renameIconFile(n,r,a),this.set(a,i,!1),this.delete(n,!1,!1)}catch(r){new $e("rename",n,r,a)}return this.refreshPackNames(),this.trigger("changed",this.plugin.api,[n,a]),a})}getAvailableId(n){if(!this.hasIcon(n))return n;let a=1,i=`${n}_${a}`;for(;this.hasIcon(i);)i=`${n}_${++a}`;return`${n}_${a}`}set(n,a,i=!0){this._customIcons.get(n)!==a&&(this._customIcons.set(n,a),this._fuse.remove(r=>r.id===n),this._fuse.add(a),i&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,[n])))}delete(n,a=!0,i=!0){return $(this,null,function*(){let r=this._customIcons.get(n);if(!r)return!1;if(i)try{yield this.removeIconFile(n,r.ext)}catch(s){throw new $e("delete",n,s)}let o=this._customIcons.delete(n);return this._fuse.remove(s=>s.id===n),a&&(this.refreshPackNames(),this.trigger("changed",this.plugin.api,[n])),o})}clear(){return $(this,null,function*(){let n=(yield this.vault.adapter.list(this.customIconsDir)).files.map(a=>this.vault.adapter.remove(a));for(let a of yield Promise.allSettled(n))a.status==="rejected"&&console.error("Failed to remove icon file, details: ",a.reason);this._customIcons.clear(),this._fuse.remove(a=>!ai.includes(a)),this.refreshPackNames(),this.trigger("changed",this.plugin.api)})}search(n,a,i){let r=n.map(o=>({name:o}));return a=a!=null?a:this.enabledPacknames,r.push({$or:a.map(o=>({pack:`=${o}`}))}),this._fuse.search({$and:r},{limit:i!=null?i:20})}getAllIds(n,a){let i=(n!=null?n:this.enabledPacknames).map(r=>({pack:`=${r}`}));return this._fuse.search({$or:i},{limit:a!=null?a:20})}trigger(...n){let[a,...i]=n;super.trigger(a,...i),this.plugin.app.vault.trigger(sc+a,...i)}on(...n){return super.on(...n)}},$e=class extends Error{constructor(t,n,a,i){super(`Error while ${t} on ${n}${i?"=>"+i:""}: ${a instanceof Error?`${a.name}: ${a.message}`:a}`),console.error(`${t} on ${n}${i?"=>"+i:""}`,a),this.name="SaveIconError"}};var oi=require("obsidian"),Cc=be(Bt(),1);var kc=require("obsidian"),ri=class extends kc.Modal{constructor(n){super(n);this.buttonContainerEl=this.modalEl.createDiv("modal-button-container");this.resolve=null;this.containerEl.addClass("mod-confirmation"),this.addButton("mod-cta","OK",()=>this.resolve&&this.resolve(!0)),this.addCancelButton()}open(){return super.open(),new Promise(n=>this.resolve=n)}addButton(n,a,i){return this.buttonContainerEl.createEl("button",{cls:n,text:a}).addEventListener("click",r=>$(this,null,function*(){i&&(yield i(r)),this.close()})),this}onClose(){this.resolve&&this.resolve(!1)}addCancelButton(){return this.addButton("","Cancel",this.close.bind(this))}},wc=(e,t)=>{let n=new ri(t);return n.contentEl.setText(e),n.open()};var Ch=e=>$(void 0,null,function*(){let{vault:t}=e.app,n=yield t.readJson(e.packManager.customIconsFilePath),a=e.packManager.customIconsDir;(yield t.adapter.exists(a))||(yield t.adapter.mkdir(a)),yield Promise.allSettled(Object.entries(n).reduce((i,[r,o])=>{if(typeof r=="string"&&typeof o=="string"){let s=(0,Cc.join)(a,`${r}.svg`);i.push(t.create(s,o))}return i},[]))}),jh=e=>$(void 0,null,function*(){if((yield e.app.vault.adapter.exists(e.packManager.customIconsFilePath))&&!e.settings.isMigrated&&(yield wc("Found custom icons that have not been upgraded, update icons now?",e.app)))try{yield Ch(e),e.settings.isMigrated=!0,yield e.saveSettings(),new oi.Notice("Icon update complete, you can now find icon files in "+e.packManager.customIconsDir)}catch(n){new oi.Notice("Failed to update icons, check console for more details"),console.error(n)}}),jc=jh;var Lh=e=>(t,n)=>{for(let a of t.querySelectorAll(".callout")){let i=a.querySelector(".callout-title > .callout-icon"),r=new MutationObserver(o=>$(void 0,null,function*(){if(i.childElementCount>0)return;let s=Ih(i,"--callout-icon"),p=yield e.api.getSVGIcon(s);!p||(r.disconnect(),i.className+=" "+p.className,i.replaceChildren(...p.childNodes))}));r.observe(i,{childList:!0})}},Lc=Lh,Ih=(e,t,n)=>getComputedStyle(e,n).getPropertyValue(t).trim();var Sh=e=>{switch(e.nodeName){case"CODE":case"MJX-CONTAINER":return NodeFilter.FILTER_REJECT;case"#text":return e.nodeValue&>.test(e.nodeValue)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;default:return NodeFilter.FILTER_SKIP}},si=e=>{let t=a=>$(void 0,null,function*(){for(let i of[...a.wholeText.matchAll(Rt(gt))].sort((r,o)=>o.index-r.index).map(r=>({text:r[0],index:r.index})))yield n(a,i)}),n=(o,s)=>$(void 0,[o,s],function*(a,{text:i,index:r}){var l,c;let p=yield e.packManager.getSVGIcon(je(i));if(!p)return a;if(typeof p=="string")a.textContent&&(a.textContent=(l=a.textContent)==null?void 0:l.replace(i,p));else{let u=a.splitText(r);(c=u.parentElement)==null||c.insertBefore(p,u),u.textContent=u.wholeText.substring(i.length)}});return a=>{let i=document.createTreeWalker(a,NodeFilter.SHOW_ALL,{acceptNode:Sh}),r=i.currentNode;for(;r;){if(r.nodeType===3){let o=r;$(void 0,null,function*(){let s=[o];o.__PENDING__&&(yield o.__PENDING__,s=[...o.parentElement.childNodes].filter(l=>l instanceof Text));let p=Promise.all(s.map(t));o.__PENDING__=p,yield p,delete o.__PENDING__})}r=i.nextNode()}}},ci=e=>(t,n)=>t.replace(Rt(gt),a=>e.packManager.hasIcon(je(a))?n(a):a);var Ic=e=>{e.registerMarkdownPostProcessor(e._nodeProcessor),e.registerMarkdownPostProcessor(Lc(e))};var zn=class extends Error{},li=class extends zn{},pi=class extends zn{},Ah=(e,t=",")=>e.join(t),Mh={accept:"*",multiple:!1,strict:!1},ui=e=>{let{accept:t,multiple:n,strict:a}={...Mh,...e},i=zh({multiple:n,accept:Array.isArray(t)?Ah(t):t});return new Promise(r=>{i.onchange=()=>{r(Fh(i.files,n,a)),i.remove()},i.click()})},Fh=(e,t,n)=>new Promise((a,i)=>{if(!e)return i(new li);let r=Eh(e,t,n);if(!r)return i(new pi);a(r)}),Eh=(e,t,n)=>!t&&n?e.length===1?e[0]:null:e.length?e:null,zh=({accept:e,multiple:t})=>{let n=document.createElement("input");return n.type="file",n.multiple=t,n.accept=e,n};var me=require("obsidian");var Ol=be(Ia(),1),Nl=be(fn(),1),Vn=require("obsidian");var Kt,X,Ec,Bh,Gt,zc,Sc,Bc,Bn={},Pc=[],Ph=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Ge(e,t){for(var n in t)e[n]=t[n];return e}function Tc(e){var t=e.parentNode;t&&t.removeChild(e)}function Ee(e,t,n){var a,i,r,o={};for(r in t)r=="key"?a=t[r]:r=="ref"?i=t[r]:o[r]=t[r];if(arguments.length>2&&(o.children=arguments.length>3?Kt.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&&(o[r]=e.defaultProps[r]);return Zt(e,o,a,i,null)}function Zt(e,t,n,a,i){var r={type:e,props:t,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++Ec};return i==null&&X.vnode!=null&&X.vnode(r),r}function fi(){return{current:null}}function Ne(e){return e.children}function Ie(e,t){this.props=e,this.context=t}function bt(e,t){if(t==null)return e.__?bt(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t0?Zt(f.type,f.props,f.key,null,f.__v):f)!=null){if(f.__=n,f.__b=n.__b+1,(h=_[c])===null||h&&f.key==h.key&&f.type===h.type)_[c]=void 0;else for(u=0;u2&&(o.children=arguments.length>3?Kt.call(arguments,2):n),Zt(e.type,o,a||e.key,i||e.ref,null)}function Yt(e,t){var n={__c:t="__cC"+Bc++,__:e,Consumer:function(a,i){return a.children(i)},Provider:function(a){var i,r;return this.getChildContext||(i=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(di)},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),a.children}};return n.Provider.__=n.Consumer.contextType=n}Kt=Pc.slice,X={__e:function(e,t,n,a){for(var i,r,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((r=i.constructor)&&r.getDerivedStateFromError!=null&&(i.setState(r.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,a||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},Ec=0,Bh=function(e){return e!=null&&e.constructor===void 0},Ie.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=Ge({},this.state),typeof e=="function"&&(e=e(Ge({},n),this.props)),e&&Ge(n,e),e!=null&&this.__v&&(t&&this.__h.push(t),di(this))},Ie.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),di(this))},Ie.prototype.render=Ne,Gt=[],zc=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Pn.__r=0,Bc=0;var kt,ge,gi,qc,_t=0,Jc=[],$c=X.__b,Gc=X.__r,Zc=X.diffed,Kc=X.__c,Yc=X.unmount;function Xt(e,t){X.__h&&X.__h(ge,e,_t||t),_t=0;var n=ge.__H||(ge.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function _e(e){return _t=1,Nn(nl,e)}function Nn(e,t,n){var a=Xt(kt++,2);return a.t=e,a.__c||(a.__=[n?n(t):nl(void 0,t),function(i){var r=a.t(a.__[0],i);a.__[0]!==r&&(a.__=[r,a.__[1]],a.__c.setState({}))}],a.__c=ge),a.__}function Je(e,t){var n=Xt(kt++,3);!X.__s&&bi(n.__H,t)&&(n.__=e,n.__H=t,ge.__H.__h.push(n))}function vi(e,t){var n=Xt(kt++,4);!X.__s&&bi(n.__H,t)&&(n.__=e,n.__H=t,ge.__h.push(n))}function Qc(e){return _t=5,Ze(function(){return{current:e}},[])}function el(e,t,n){_t=6,vi(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},n==null?n:n.concat(e))}function Ze(e,t){var n=Xt(kt++,7);return bi(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function rt(e,t){return _t=8,Ze(function(){return e},t)}function wt(e){var t=ge.context[e.__c],n=Xt(kt++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(ge)),t.props.value):e.__}function tl(e,t){X.useDebugValue&&X.useDebugValue(t?t(e):e)}function Dh(){for(var e;e=Jc.shift();)if(e.__P)try{e.__H.__h.forEach(On),e.__H.__h.forEach(xi),e.__H.__h=[]}catch(t){e.__H.__h=[],X.__e(t,e.__v)}}X.__b=function(e){ge=null,$c&&$c(e)},X.__r=function(e){Gc&&Gc(e),kt=0;var t=(ge=e.__c).__H;t&&(gi===ge?(t.__h=[],ge.__h=[],t.__.forEach(function(n){n.__H&&(n.__H=void 0)})):(t.__h.forEach(On),t.__h.forEach(xi),t.__h=[])),gi=ge},X.diffed=function(e){Zc&&Zc(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(Jc.push(t)!==1&&qc===X.requestAnimationFrame||((qc=X.requestAnimationFrame)||function(n){var a,i=function(){clearTimeout(r),Xc&&cancelAnimationFrame(a),setTimeout(n)},r=setTimeout(i,100);Xc&&(a=requestAnimationFrame(i))})(Dh)),ge=null,gi=null},X.__c=function(e,t){t.some(function(n){try{n.__h.forEach(On),n.__h=n.__h.filter(function(a){return!a.__||xi(a)})}catch(a){t.some(function(i){i.__h&&(i.__h=[])}),t=[],X.__e(a,n.__v)}}),Kc&&Kc(e,t)},X.unmount=function(e){Yc&&Yc(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(a){try{On(a)}catch(i){t=i}}),t&&X.__e(t,n.__v))};var Xc=typeof requestAnimationFrame=="function";function On(e){var t=ge,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),ge=t}function xi(e){var t=ge;e.__c=e.__(),ge=t}function bi(e,t){return!e||e.length!==t.length||t.some(function(n,a){return n!==e[a]})}function nl(e,t){return typeof t=="function"?t(e):t}function ul(e,t){for(var n in t)e[n]=t[n];return e}function yi(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var a in t)if(a!=="__source"&&e[a]!==t[a])return!0;return!1}function _i(e){this.props=e}function Wh(e,t){function n(i){var r=this.props.ref,o=r==i.ref;return!o&&r&&(r.call?r(null):r.current=null),t?!t(this.props,i)||!o:yi(this.props,i)}function a(i){return this.shouldComponentUpdate=n,Ee(e,i)}return a.displayName="Memo("+(e.displayName||e.name)+")",a.prototype.isReactComponent=!0,a.__f=!0,a}(_i.prototype=new Ie).isPureReactComponent=!0,_i.prototype.shouldComponentUpdate=function(e,t){return yi(this.props,e)||yi(this.state,t)};var al=X.__b;X.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),al&&al(e)};var Rh=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Uh(e){function t(n){var a=ul({},n);return delete a.ref,e(a,n.ref||null)}return t.$$typeof=Rh,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var il=function(e,t){return e==null?null:De(De(e).map(t))},Vh={map:il,forEach:il,count:function(e){return e?De(e).length:0},only:function(e){var t=De(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:De},Hh=X.__e;X.__e=function(e,t,n,a){if(e.then){for(var i,r=t;r=r.__;)if((i=r.__c)&&i.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}Hh(e,t,n,a)};var rl=X.unmount;function Dn(){this.__u=0,this.t=null,this.__b=null}function dl(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function qh(e){var t,n,a;function i(r){if(t||(t=e()).then(function(o){n=o.default||o},function(o){a=o}),a)throw a;if(!n)throw t;return Ee(n,r)}return i.displayName="Lazy",i.__f=!0,i}function Jt(){this.u=null,this.o=null}X.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),rl&&rl(e)},(Dn.prototype=new Ie).__c=function(e,t){var n=t.__c,a=this;a.t==null&&(a.t=[]),a.t.push(n);var i=dl(a.__v),r=!1,o=function(){r||(r=!0,n.__R=null,i?i(s):s())};n.__R=o;var s=function(){if(!--a.__u){if(a.state.__e){var l=a.state.__e;a.__v.__k[0]=function u(h,f,g){return h&&(h.__v=null,h.__k=h.__k&&h.__k.map(function(x){return u(x,f,g)}),h.__c&&h.__c.__P===f&&(h.__e&&g.insertBefore(h.__e,h.__d),h.__c.__e=!0,h.__c.__P=g)),h}(l,l.__c.__P,l.__c.__O)}var c;for(a.setState({__e:a.__b=null});c=a.t.pop();)c.forceUpdate()}},p=t.__h===!0;a.__u++||p||a.setState({__e:a.__b=a.__v.__k[0]}),e.then(o,o)},Dn.prototype.componentWillUnmount=function(){this.t=[]},Dn.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),a=this.__v.__k[0].__c;this.__v.__k[0]=function r(o,s,p){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=ul({},o)).__c!=null&&(o.__c.__P===p&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return r(l,s,p)})),o}(this.__b,n,a.__O=a.__P)}this.__b=null}var i=t.__e&&Ee(Ne,null,e.fallback);return i&&(i.__h=null),[Ee(Ne,null,t.__e?null:e.children),i]};var ol=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(a)}}),yt(Ee($h,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function Zh(e,t){var n=Ee(Gh,{__v:e,i:t});return n.containerInfo=t,n}(Jt.prototype=new Ie).__e=function(e){var t=this,n=dl(t.__v),a=t.o.get(e);return a[0]++,function(i){var r=function(){t.props.revealOrder?(a.push(i),ol(t,e,a)):i()};n?n(r):r()}},Jt.prototype.render=function(e){this.u=null,this.o=new Map;var t=De(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Jt.prototype.componentDidUpdate=Jt.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){ol(e,n,t)})};var fl=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Kh=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Yh=typeof document<"u",Xh=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function Jh(e,t,n){return t.__k==null&&(t.textContent=""),yt(e,t),typeof n=="function"&&n(),e?e.__c:null}function Qh(e,t,n){return hi(e,t),typeof n=="function"&&n(),e?e.__c:null}Ie.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Ie.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var sl=X.event;function eg(){}function tg(){return this.cancelBubble}function ng(){return this.defaultPrevented}X.event=function(e){return sl&&(e=sl(e)),e.persist=eg,e.isPropagationStopped=tg,e.isDefaultPrevented=ng,e.nativeEvent=e};var ml,cl={configurable:!0,get:function(){return this.class}},ll=X.vnode;X.vnode=function(e){var t=e.type,n=e.props,a=n;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var r in a={},n){var o=n[r];Yh&&r==="children"&&t==="noscript"||r==="value"&&"defaultValue"in n&&o==null||(r==="defaultValue"&&"value"in n&&n.value==null?r="value":r==="download"&&o===!0?o="":/ondoubleclick/i.test(r)?r="ondblclick":/^onchange(textarea|input)/i.test(r+t)&&!Xh(n.type)?r="oninput":/^onfocus$/i.test(r)?r="onfocusin":/^onblur$/i.test(r)?r="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(r)?r=r.toLowerCase():i&&Kh.test(r)?r=r.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput/i.test(r)&&(r=r.toLowerCase(),a[r]&&(r="oninputCapture")),a[r]=o)}t=="select"&&a.multiple&&Array.isArray(a.value)&&(a.value=De(n.children).forEach(function(s){s.props.selected=a.value.indexOf(s.props.value)!=-1})),t=="select"&&a.defaultValue!=null&&(a.value=De(n.children).forEach(function(s){s.props.selected=a.multiple?a.defaultValue.indexOf(s.props.value)!=-1:a.defaultValue==s.props.value})),e.props=a,n.class!=n.className&&(cl.enumerable="className"in n,n.className!=null&&(a.class=n.className),Object.defineProperty(a,"className",cl))}e.$$typeof=fl,ll&&ll(e)};var pl=X.__r;X.__r=function(e){pl&&pl(e),ml=e.__c};var ag={ReactCurrentDispatcher:{current:{readContext:function(e){return ml.__n[e.__c].props.value}}}};function ig(e){return Ee.bind(null,e)}function hl(e){return!!e&&e.$$typeof===fl}function rg(e){return hl(e)?Hc.apply(null,arguments):e}function og(e){return!!e.__k&&(yt(null,e),!0)}function sg(e){return e&&(e.base||e.nodeType===1&&e)||null}var cg=function(e,t){return e(t)},lg=function(e,t){return e(t)};var H={useState:_e,useReducer:Nn,useEffect:Je,useLayoutEffect:vi,useRef:Qc,useImperativeHandle:el,useMemo:Ze,useCallback:rt,useContext:wt,useDebugValue:tl,version:"17.0.2",Children:Vh,render:Jh,hydrate:Qh,unmountComponentAtNode:og,createPortal:Zh,createElement:Ee,createContext:Yt,createFactory:ig,cloneElement:rg,createRef:fi,Fragment:Ne,isValidElement:hl,findDOMNode:sg,Component:Ie,PureComponent:_i,memo:Wh,forwardRef:Uh,flushSync:lg,unstable_batchedUpdates:cg,StrictMode:Ne,Suspense:Dn,SuspenseList:Jt,lazy:qh,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ag};var ki={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},wi=H.createContext&&H.createContext(ki);var Qe=function(){return Qe=Object.assign||function(e){for(var t,n=1,a=arguments.length;n{let t={};return e.forEach((n,a)=>t[n]=a),t})(mg),hg=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,ot=String.fromCharCode.bind(String),kl=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(e,t=n=>n)=>new Uint8Array(Array.prototype.slice.call(e,0).map(t));var wl=e=>e.replace(/[^A-Za-z0-9\+\/]/g,"");var gg=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,xg=e=>{switch(e.length){case 4:var t=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),n=t-65536;return ot((n>>>10)+55296)+ot((n&1023)+56320);case 3:return ot((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return ot((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},vg=e=>e.replace(gg,xg),bg=e=>{if(e=e.replace(/\s+/g,""),!hg.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(e.length&3));let t,n="",a,i;for(let r=0;r>16&255):i===64?ot(t>>16&255,t>>8&255):ot(t>>16&255,t>>8&255,t&255);return n},Cl=dg?e=>atob(wl(e)):ji?e=>Buffer.from(e,"base64").toString("binary"):bg,yg=ji?e=>kl(Buffer.from(e,"base64")):e=>kl(Cl(e),t=>t.charCodeAt(0));var _g=ji?e=>Buffer.from(e,"base64").toString("utf8"):_l?e=>_l.decode(yg(e)):e=>vg(Cl(e)),kg=e=>wl(e.replace(/[-_]/g,t=>t=="-"?"+":"/")),jl=e=>_g(kg(e));var Li=require("obsidian"),Ii=(e,t="master",n=!1)=>`https://${n?"raw.staticdn.net":"raw.githubusercontent.com"}/aidenlx/obsidian-icon-shortcodes/${t}/${e}`,Rn=class extends Error{constructor(n){super("GitHub: "+n.message);this.response=n}},Ll=(e="master")=>$(void 0,null,function*(){var a;let t=`https://api.github.com/repos/aidenlx/obsidian-icon-shortcodes/git/trees/${e}?recursive=1&${Date.now()}`,n=(yield(0,Li.requestUrl)({url:t})).json;if(Array.isArray(n.tree)){let i=(a=n.tree.find(r=>r.path==="assets/manifest.json"))==null?void 0:a.url;if(i)return yield wg(i);throw console.error(n),new Error("No manifest.json for icon pack found")}else throw new Rn(n)}),wg=e=>$(void 0,null,function*(){let t=(yield(0,Li.requestUrl)({url:e})).json;if(t.encoding&&t.content){if(t.encoding==="base64")return JSON.parse(jl(t.content));throw console.error(t),new TypeError("Unsupported encoding")}else throw new Rn(t)});var Si={};Xi(Si,{balls:()=>Sl,bars:()=>Al,blank:()=>Il,bubbles:()=>Ml,cubes:()=>Fl,cylon:()=>El,spin:()=>zl,spinningBubbles:()=>Bl,spokes:()=>Pl});var Il=` `;var Sl=` @@ -136,17 +136,17 @@ var rp=Object.create;var Et=Object.defineProperty,op=Object.defineProperties,sp= -`;var zg=o=>{var s=o,{color:e="var(--interactive-accent)",delay:t=0,type:n="balls",height:a=64,width:i=64}=s,r=en(s,["color","delay","type","height","width"]);let[p,l]=_e(t>0);return Xe(()=>{let d=-1;return p&&(d=window.setTimeout(()=>l(!1),t)),()=>clearTimeout(d)},[]),H.createElement("div",Me({style:{fill:e,height:a,width:i},dangerouslySetInnerHTML:{__html:di[p?"blank":n]}},r))},mi=zg;var zn=class extends En.Modal{constructor(t){super(t.app);this.plugin=t;this.modalEl.addClass("mod-browser-packs")}onOpen(){H.render(H.createElement(Pg,{getIconPack:this.getIconPack.bind(this)}),this.contentEl)}onClose(){H.unmountComponentAtNode(this.contentEl)}getIconPack(t,n){return $(this,null,function*(){let a=(i=!1)=>$(this,null,function*(){let r=pi(t,n,i),o=(yield(0,En.requestUrl)({url:r})).arrayBuffer;yield this.plugin.packManager.importIcons({name:r.split("/").pop(),data:o},!1)});try{yield a()}catch(i){console.error("switch to alternative link",i),yield a(!0)}})}},Bg=(e="master")=>$(void 0,null,function*(){let t=yield Ll(e),n=[];for(let a of t){let i=n.last();(i==null?void 0:i.series)===a.series?(i.styles.push(a),i.count+=a.count):n.push({homepage:a.homepage,description:a.description,series:a.series,license:a.license,styles:[a],count:a.count})}return n}),Pg=({getIconPack:e})=>{var a;let[t,n]=_e(null);return Xe(()=>{Bg().then(n).catch(n)},[]),t===null?H.createElement("div",{className:"loading"},H.createElement(mi,{type:"spin",className:"loading-indicator"}),H.createElement("div",null,"Loading Icon Pack List...")):Array.isArray(t)?H.createElement("div",{className:"icon-pack-list"},t.map(i=>H.createElement(Tg,{key:i.homepage,manifest:i,onDownload:r=>e(r)}))):(console.error(t),H.createElement("div",{className:"error"},"Failed to Load Icon Pack List:",H.createElement("div",{className:"mod-warning"},(a=t.message)!=null?a:t.toString())))},Nl="pack-manifest",Tg=({manifest:{series:e,styles:t,description:n,count:a,homepage:i,license:r},onDownload:o})=>{let s=at(p=>`${Nl}-${p}`,[]);return H.createElement("div",{className:Nl},H.createElement("div",{className:s("title")},e),H.createElement("div",{className:s("details")},H.createElement("span",{className:s("license"),"aria-label":"License: "+r},H.createElement(xl,{size:"0.9em"})),H.createElement("span",{className:s("count"),"aria-label":`${a} icons in total`},H.createElement(si,{size:"0.9em"}),H.createElement("span",{className:"icon-text"},a))),H.createElement("div",{className:s("desc")},H.createElement("div",{className:s("homepage"),"aria-label":i,onClick:()=>window.open(i)},H.createElement(yl,null),H.createElement("a",{className:"icon-text"},"Home Page")),n),H.createElement("div",{className:"styles-list"},t.map(p=>H.createElement(Og,{key:p.bundleName,styleInfo:p,onDownload:o}))))},Dl="style-info",Bn=(...e)=>(0,Ol.default)(Dl,...e),Og=({styleInfo:{count:e,packId:t,path:n,style:a},onDownload:i})=>{var p;let r=at(l=>`${Dl}-${l}`,[]),[o,s]=_e({state:"display"});switch(o.state){case"display":return H.createElement("div",{className:Bn()},H.createElement("div",{className:r("title")},a||"regular",H.createElement("span",{className:r("pack-id"),"aria-label":"Pack id used as shortcode prefix"},t)),H.createElement("div",{className:r("details")},H.createElement("div",{className:r("count"),"aria-label":`${e} icons in total`},H.createElement(si,{size:"0.9em"}),H.createElement("span",{className:"icon-text"},e))),H.createElement("div",{className:r("button-container")},H.createElement("button",{className:r("download"),onClick:()=>$(void 0,null,function*(){s({state:"downloading"});try{yield i(n),s({state:"done"}),console.log("done")}catch(l){console.error(l),s({state:"error",error:l})}}),"aria-label":"Download"},H.createElement(vl,null)),H.createElement("button",{"aria-label":"Download via Browser",onClick:()=>window.open(pi(n))},H.createElement(bl,null))));case"downloading":return H.createElement("div",{className:Bn("downloading")},H.createElement(mi,{type:"bubbles",className:"loading-indicator"}),H.createElement("div",null,"Downloading..."));case"done":return H.createElement("div",{className:Bn("done")},"Downloaded");case"error":return console.error(o.error),H.createElement("div",{className:Bn("error")},"Failed to Download:",H.createElement("div",{className:"mod-warning"},o.error instanceof Error?o.error.message:(p=o.error)==null?void 0:p.toString()));default:(0,Tl.default)(o)}};function Se(e){for(var t=arguments.length,n=Array(t>1?t-1:0),a=1;a3?t.i-4:t.i:Array.isArray(e)?1:hi(e)?2:gi(e)?3:0}function fi(e,t){return Lt(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Ng(e,t){return Lt(e)===2?e.get(t):e[t]}function Wl(e,t,n){var a=Lt(e);a===2?e.set(t,n):a===3?(e.delete(t),e.add(n)):e[t]=n}function Dg(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function hi(e){return Hg&&e instanceof Map}function gi(e){return qg&&e instanceof Set}function xe(e){return e.o||e.t}function xi(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=Gg(e);delete t[ce];for(var n=ji(t),a=0;a1&&(e.set=e.add=e.clear=e.delete=Wg),Object.freeze(e),t&&jt(e,function(n,a){return It(a,!0)},!0)),e}function Wg(){Se(2)}function vi(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function Ne(e){var t=Li[e];return t||Se(18,e),t}function Rg(e,t){Li[e]||(Li[e]=t)}function Pn(){return Kt}function bi(e,t){t&&(Ne("Patches"),e.u=[],e.s=[],e.v=t)}function Tn(e){yi(e),e.p.forEach(Ug),e.p=null}function yi(e){e===Kt&&(Kt=e.l)}function Rl(e){return Kt={p:[],l:Kt,h:e,m:!0,_:0}}function Ug(e){var t=e[ce];t.i===0||t.i===1?t.j():t.O=!0}function _i(e,t){t._=t.p.length;var n=t.p[0],a=e!==void 0&&e!==n;return t.h.g||Ne("ES5").S(t,e,a),a?(n[ce].P&&(Tn(t),Se(4)),Ge(e)&&(e=On(t,e),t.l||Nn(t,e)),t.u&&Ne("Patches").M(n[ce].t,e,t.u,t.s)):e=On(t,n,[]),Tn(t),t.u&&t.v(t.u,t.s),e!==Zl?e:void 0}function On(e,t,n){if(vi(t))return t;var a=t[ce];if(!a)return jt(t,function(r,o){return Ul(e,a,t,r,o,n)},!0),t;if(a.A!==e)return t;if(!a.P)return Nn(e,a.t,!0),a.t;if(!a.I){a.I=!0,a.A._--;var i=a.i===4||a.i===5?a.o=xi(a.k):a.o;jt(a.i===3?new Set(i):i,function(r,o){return Ul(e,a,i,r,o,n)}),Nn(e,i,!1),n&&e.u&&Ne("Patches").R(a,n,e.u,e.s)}return a.o}function Ul(e,t,n,a,i,r){if(Ct(i)){var o=On(e,i,r&&t&&t.i!==3&&!fi(t.D,a)?r.concat(a):void 0);if(Wl(n,a,o),!Ct(o))return;e.m=!1}if(Ge(i)&&!vi(i)){if(!e.h.F&&e._<1)return;On(e,i),t&&t.A.l||Nn(e,i)}}function Nn(e,t,n){n===void 0&&(n=!1),e.h.F&&e.m&&It(t,n)}function ki(e,t){var n=e[ce];return(n?xe(n):e)[t]}function Vl(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var a=Object.getOwnPropertyDescriptor(n,t);if(a)return a;n=Object.getPrototypeOf(n)}}function Ze(e){e.P||(e.P=!0,e.l&&Ze(e.l))}function wi(e){e.o||(e.o=xi(e.t))}function Zt(e,t,n){var a=hi(t)?Ne("MapSet").N(t,n):gi(t)?Ne("MapSet").T(t,n):e.g?function(i,r){var o=Array.isArray(i),s={i:o?1:0,A:r?r.A:Pn(),P:!1,I:!1,D:{},l:r,t:i,k:null,o:null,j:null,C:!1},p=s,l=Ii;o&&(p=[s],l=Yt);var c=Proxy.revocable(p,l),d=c.revoke,h=c.proxy;return s.k=h,s.j=d,h}(t,n):Ne("ES5").J(t,n);return(n?n.A:Pn()).p.push(a),a}function Vg(e){return Ct(e)||Se(22,e),function t(n){if(!Ge(n))return n;var a,i=n[ce],r=Lt(n);if(i){if(!i.P&&(i.i<4||!Ne("ES5").K(i)))return i.t;i.I=!0,a=Hl(n,r),i.I=!1}else a=Hl(n,r);return jt(a,function(o,s){i&&Ng(i.t,o)===s||Wl(a,o,t(s))}),r===3?new Set(a):a}(e)}function Hl(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return xi(e)}function ql(){function e(s,p){function l(){this.constructor=s}i(s,p),s.prototype=(l.prototype=p.prototype,new l)}function t(s){s.o||(s.D=new Map,s.o=new Map(s.t))}function n(s){s.o||(s.o=new Set,s.t.forEach(function(p){if(Ge(p)){var l=Zt(s.A.h,p,s);s.p.set(p,l),s.o.add(l)}else s.o.add(p)}))}function a(s){s.O&&Se(3,JSON.stringify(xe(s)))}var i=function(s,p){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,c){l.__proto__=c}||function(l,c){for(var d in c)c.hasOwnProperty(d)&&(l[d]=c[d])})(s,p)},r=function(){function s(l,c){return this[ce]={i:2,l:c,A:c?c.A:Pn(),P:!1,I:!1,o:void 0,D:void 0,t:l,k:this,C:!1,O:!1},this}e(s,Map);var p=s.prototype;return Object.defineProperty(p,"size",{get:function(){return xe(this[ce]).size}}),p.has=function(l){return xe(this[ce]).has(l)},p.set=function(l,c){var d=this[ce];return a(d),xe(d).has(l)&&xe(d).get(l)===c||(t(d),Ze(d),d.D.set(l,!0),d.o.set(l,c),d.D.set(l,!0)),this},p.delete=function(l){if(!this.has(l))return!1;var c=this[ce];return a(c),t(c),Ze(c),c.t.has(l)?c.D.set(l,!1):c.D.delete(l),c.o.delete(l),!0},p.clear=function(){var l=this[ce];a(l),xe(l).size&&(t(l),Ze(l),l.D=new Map,jt(l.t,function(c){l.D.set(c,!1)}),l.o.clear())},p.forEach=function(l,c){var d=this;xe(this[ce]).forEach(function(h,g){l.call(c,d.get(g),g,d)})},p.get=function(l){var c=this[ce];a(c);var d=xe(c).get(l);if(c.I||!Ge(d)||d!==c.t.get(l))return d;var h=Zt(c.A.h,d,c);return t(c),c.o.set(l,h),h},p.keys=function(){return xe(this[ce]).keys()},p.values=function(){var l,c=this,d=this.keys();return(l={})[Dn]=function(){return c.values()},l.next=function(){var h=d.next();return h.done?h:{done:!1,value:c.get(h.value)}},l},p.entries=function(){var l,c=this,d=this.keys();return(l={})[Dn]=function(){return c.entries()},l.next=function(){var h=d.next();if(h.done)return h;var g=c.get(h.value);return{done:!1,value:[h.value,g]}},l},p[Dn]=function(){return this.entries()},s}(),o=function(){function s(l,c){return this[ce]={i:3,l:c,A:c?c.A:Pn(),P:!1,I:!1,o:void 0,t:l,k:this,p:new Map,O:!1,C:!1},this}e(s,Set);var p=s.prototype;return Object.defineProperty(p,"size",{get:function(){return xe(this[ce]).size}}),p.has=function(l){var c=this[ce];return a(c),c.o?!!c.o.has(l)||!(!c.p.has(l)||!c.o.has(c.p.get(l))):c.t.has(l)},p.add=function(l){var c=this[ce];return a(c),this.has(l)||(n(c),Ze(c),c.o.add(l)),this},p.delete=function(l){if(!this.has(l))return!1;var c=this[ce];return a(c),n(c),Ze(c),c.o.delete(l)||!!c.p.has(l)&&c.o.delete(c.p.get(l))},p.clear=function(){var l=this[ce];a(l),xe(l).size&&(n(l),Ze(l),l.o.clear())},p.values=function(){var l=this[ce];return a(l),n(l),l.o.values()},p.entries=function(){var l=this[ce];return a(l),n(l),l.o.entries()},p.keys=function(){return this.values()},p[Dn]=function(){return this.values()},p.forEach=function(l,c){for(var d=this.values(),h=d.next();!h.done;)l.call(c,h.value,h.value,this),h=d.next()},s}();Rg("MapSet",{N:function(s,p){return new r(s,p)},T:function(s,p){return new o(s,p)}})}var $l,Kt,Ci=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",Hg=typeof Map!="undefined",qg=typeof Set!="undefined",Gl=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",Zl=Ci?Symbol.for("immer-nothing"):(($l={})["immer-nothing"]=!0,$l),Kl=Ci?Symbol.for("immer-draftable"):"__$immer_draftable",ce=Ci?Symbol.for("immer-state"):"__$immer_state",Dn=typeof Symbol!="undefined"&&Symbol.iterator||"@@iterator";var $g=""+Object.prototype.constructor,ji=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Gg=Object.getOwnPropertyDescriptors||function(e){var t={};return ji(e).forEach(function(n){t[n]=Object.getOwnPropertyDescriptor(e,n)}),t},Li={},Ii={get:function(e,t){if(t===ce)return e;var n=xe(e);if(!fi(n,t))return function(i,r,o){var s,p=Vl(r,o);return p?"value"in p?p.value:(s=p.get)===null||s===void 0?void 0:s.call(i.k):void 0}(e,n,t);var a=n[t];return e.I||!Ge(a)?a:a===ki(e.t,t)?(wi(e),e.o[t]=Zt(e.A.h,a,e)):a},has:function(e,t){return t in xe(e)},ownKeys:function(e){return Reflect.ownKeys(xe(e))},set:function(e,t,n){var a=Vl(xe(e),t);if(a==null?void 0:a.set)return a.set.call(e.k,n),!0;if(!e.P){var i=ki(xe(e),t),r=i==null?void 0:i[ce];if(r&&r.t===n)return e.o[t]=n,e.D[t]=!1,!0;if(Dg(n,i)&&(n!==void 0||fi(e.t,t)))return!0;wi(e),Ze(e)}return e.o[t]===n&&typeof n!="number"&&(n!==void 0||t in e.o)||(e.o[t]=n,e.D[t]=!0,!0)},deleteProperty:function(e,t){return ki(e.t,t)!==void 0||t in e.t?(e.D[t]=!1,wi(e),Ze(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var n=xe(e),a=Reflect.getOwnPropertyDescriptor(n,t);return a&&{writable:!0,configurable:e.i!==1||t!=="length",enumerable:a.enumerable,value:n[t]}},defineProperty:function(){Se(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){Se(12)}},Yt={};jt(Ii,function(e,t){Yt[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),Yt.deleteProperty=function(e,t){return Yt.set.call(this,e,t,void 0)},Yt.set=function(e,t,n){return Ii.set.call(this,e[0],t,n,e[0])};var Zg=function(){function e(n){var a=this;this.g=Gl,this.F=!0,this.produce=function(i,r,o){if(typeof i=="function"&&typeof r!="function"){var s=r;r=i;var p=a;return function(x){var v=this;x===void 0&&(x=s);for(var _=arguments.length,S=Array(_>1?_-1:0),C=1;C<_;C++)S[C-1]=arguments[C];return p.produce(x,function(z){var F;return(F=r).call.apply(F,[v,z].concat(S))})}}var l;if(typeof r!="function"&&Se(6),o!==void 0&&typeof o!="function"&&Se(7),Ge(i)){var c=Rl(a),d=Zt(a,i,void 0),h=!0;try{l=r(d),h=!1}finally{h?Tn(c):yi(c)}return typeof Promise!="undefined"&&l instanceof Promise?l.then(function(x){return bi(c,o),_i(x,c)},function(x){throw Tn(c),x}):(bi(c,o),_i(l,c))}if(!i||typeof i!="object"){if((l=r(i))===void 0&&(l=i),l===Zl&&(l=void 0),a.F&&It(l,!0),o){var g=[],f=[];Ne("Patches").M(i,l,g,f),o(g,f)}return l}Se(21,i)},this.produceWithPatches=function(i,r){if(typeof i=="function")return function(l){for(var c=arguments.length,d=Array(c>1?c-1:0),h=1;h=0;i--){var r=a[i];if(r.path.length===0&&r.op==="replace"){n=r.value;break}}i>-1&&(a=a.slice(i+1));var o=Ne("Patches").$;return Ct(n)?o(n,a):this.produce(n,function(s){return o(s,a)})},e}(),we=new Zg,Kg=we.produce,H0=we.produceWithPatches.bind(we),q0=we.setAutoFreeze.bind(we),$0=we.setUseProxies.bind(we),G0=we.applyPatches.bind(we),Z0=we.createDraft.bind(we),K0=we.finishDraft.bind(we),Yl=Kg;var Rn=ie(require("obsidian"));function Xl(e){var t=_e(function(){return It(typeof e=="function"?e():e,!0)}),n=t[1];return[t[0],at(function(a){n(typeof a=="function"?Yl(a):It(a))},[])]}var Si=ie(on()),St=ie(require("obsidian"));var Yg=({iconInfo:e,updated:t})=>{let{packs:n,icons:a}=kt(Wn),{trash:i,pencil:r,star:o,checkmark:s}=a,[p,l]=_e(e.name.replace(/[-_]/g," ")),[c,d]=_e(!1),h=`${e.pack}_${ga(p)}`,g=h===e.id||!n.hasIcon(h),f=$e(()=>n.getIcon(e.id,!0),[e.id,t]),x=v=>$(void 0,null,function*(){let _=yield n.rename(e.id,v);_?(new St.Notice(`The icon is renamed to ${_}`),d(!1)):new St.Notice(`Failed to rename to ${p}, check log for details`)});return H.createElement("div",{className:"item"},H.createElement("div",{className:"icon"},H.createElement("img",{className:"isc-icon",src:f!=null?f:void 0})),H.createElement("div",{className:"name"},c?H.createElement(Xg,{className:(0,Si.default)({invalid:!g}),onChange:v=>l(v.target.value),value:p}):H.createElement("span",null,p)),H.createElement("div",{className:"buttons"},H.createElement(Ai,{btnType:"cta",icon:o,onClick:()=>$(void 0,null,function*(){let v;(v=yield n.star(e.id))&&new St.Notice(`${e.id} is now ${v}`)})}),H.createElement(Ai,{btnType:"cta",icon:c?s:r,onClick:()=>$(void 0,null,function*(){c?g?h!==e.id?yield x(h):d(!1):new St.Notice(`Unable to rename to ${p}, given id invalid`):d(!0)})}),H.createElement(Ai,{btnType:"warning",icon:i,onClick:()=>$(void 0,null,function*(){(yield n.delete(e.id))&&new St.Notice(`${e.id} is removed from the pack`)})})))},Jl=Yg,Ai=e=>{let i=e,{btnType:t,icon:n}=i,a=en(i,["btnType","icon"]);return H.createElement("button",Qe(Me({},a),{className:(0,Si.default)({["mod-"+t]:!!t}),dangerouslySetInnerHTML:{__html:n}}))},Xg=e=>H.createElement("textarea",Me({spellCheck:"false",rows:2},e));ql();var Jg=()=>{let e=createDiv(),t={};for(let n of["trash","pencil","star","checkmark"])e.empty(),(0,Rn.setIcon)(e,n,14),t[n]=e.innerHTML;return t},Wn=qt(null),Mi="%ALL%",Un=class extends Rn.Modal{constructor(t,n){super(t.app);this.plugin=t;this.pack=n;this.titleEl.setText(`${n} Icons`),this.modalEl.addClasses(["isc-icon-manager","mod-community-theme"])}onOpen(){return $(this,null,function*(){this.contentEl.empty(),H.render(H.createElement(Wn.Provider,{value:{packs:this.plugin.packManager,icons:Jg()}},H.createElement(e1,{pack:this.pack})),this.contentEl)})}onClose(){H.unmountComponentAtNode(this.contentEl)}},Qg=(e,t)=>e.name.localeCompare(t.name),e1=({pack:e})=>{if(e==="emoji")throw new TypeError("Emoji not supported");let{packs:t}=kt(Wn),[n,a]=_e(""),[i,r]=Xl(new Map),o=$e(()=>{let s=t.search(n?n.trim().split(" "):[],[e],1/0).map(({item:p})=>p);return n||s.sort(Qg),s},[n,e,i]);return Xe(()=>{let s=t.on("changed",(p,l)=>r(c=>{l?l.forEach(d=>c.set(d,(c.get(d)||0)+1)):c.set(Mi,(c.get(Mi)||0)+1)}));return()=>t.offref(s)},[t]),H.createElement(H.Fragment,null,H.createElement("div",{className:"filter"},H.createElement("input",{type:"text",placeholder:"Filter",value:n,onChange:s=>a(s.target.value)})),H.createElement("div",{className:"icons"},o.map(s=>{var l,c;let p=((l=i.get(s.id))!=null?l:0)+((c=i.get(Mi))!=null?c:0);return H.createElement(Jl,{iconInfo:s,updated:p,key:s.id+p})})))};var Ql={code2emoji:!0,suggester:!0,disabledPacks:new Set(["obs"]),triggerWithTrailingSpace:!1,spaceAfterSC:!1,isMigrated:!1},Fi=class extends he.PluginSettingTab{constructor(t,n){super(t,n);this.plugin=n}display(){let{containerEl:t}=this;this.containerEl.empty(),new he.Setting(t).setHeading().setName("Icon Suggester"),new he.Setting(t).setDesc("If this is turned on, a Suggester will appear everytime you type :(or \uFF1A\uFF1A if full-width) followed by a letter. This will help you insert Emojis. ").addToggle(a=>{a.setValue(this.plugin.settings.suggester).onChange(i=>$(this,null,function*(){this.plugin.settings.suggester=i,yield this.plugin.saveSettings()}))}),new he.Setting(t).setName("Replace emoji shortcode with emoji character").setDesc("If this is turned on, emoji shortcodes will be immediately replaced by emoji after typing. Otherwise they are still stored as a shortcode and you only see the Emoji in Preview Mode.").addToggle(a=>{a.setValue(this.plugin.settings.code2emoji).onChange(i=>$(this,null,function*(){this.plugin.settings.code2emoji=i,yield this.plugin.saveSettings()}))}),new he.Setting(t).setName("Trigger with trailing space").setDesc("only trigger suggester if there is a trailing space before the colon").addToggle(a=>{a.setValue(this.plugin.settings.triggerWithTrailingSpace).onChange(i=>$(this,null,function*(){this.plugin.settings.triggerWithTrailingSpace=i,yield this.plugin.saveSettings()}))}),new he.Setting(t).setName("Add space after inserted shortcode").addToggle(a=>{a.setValue(this.plugin.settings.spaceAfterSC).onChange(i=>$(this,null,function*(){this.plugin.settings.spaceAfterSC=i,yield this.plugin.saveSettings()}))}),this.skipIconPack(),new he.Setting(t).setName("Icon Packs").setDesc("Browse and download icon packs").addButton(a=>a.setButtonText("Browser").onClick(()=>new zn(this.plugin).open()));let n=createDiv({cls:["isc-settings-custom-icon","installed-plugins-container"]});new he.Setting(this.containerEl).setHeading().setName("Custom Icons").addExtraButton(a=>a.setIcon("sheets-in-box").setTooltip("Backup icons").onClick(()=>this.plugin.packManager.backupIcons())).addExtraButton(a=>a.setIcon("restore-file-glyph").setTooltip("Restore backup").onClick(()=>$(this,null,function*(){this.plugin.packManager.importIconsFromFileList(yield Ka({multiple:!0,accept:".zip"}),!1),yield this.plugin.packManager.loadIcons(),this.manageCustomIcons(n)}))).addExtraButton(a=>a.setIcon("switch").setTooltip("Reload custom icons").onClick(()=>$(this,null,function*(){yield this.plugin.packManager.loadIcons(),this.manageCustomIcons(n),new he.Notice("Custom icons reloaded")}))).then(a=>he.Platform.isDesktopApp&&a.addExtraButton(i=>i.setIcon("folder").setTooltip("Open Icons Folder").onClick(()=>this.app.openWithDefaultApp(this.plugin.packManager.customIconsDir)))),this.containerEl.appendChild(n),this.manageCustomIcons(n)}_setDisabledPack(t,n){return n.addToggle(a=>{a.setValue(!this.plugin.settings.disabledPacks.has(t)).onChange(i=>$(this,null,function*(){i?this.plugin.settings.disabledPacks.delete(t):this.plugin.settings.disabledPacks.add(t),yield this.plugin.saveSettings()})),a.toggleEl.setAttr("aria-label",`Enable/Disable ${t} Icon Pack`)})}skipIconPack(){let{containerEl:t}=this,n=(a,i,r)=>this._setDisabledPack(a,new he.Setting(t).setName(i).setDesc(createFragment(r)));new he.Setting(this.containerEl).setHeading().setName("Icon Packs"),n("luc","Lucide",a=>a.createEl("a",{href:"https://lucide.dev",text:"official website"})),n("obs","Obsidian's built-in icons",a=>a.appendText("Obsidian's built-in icons are mostly used for UI components. "))}manageCustomIcons(t){t.hasChildNodes()&&t.empty();let n=a=>!/^[A-Za-z0-9]+$/.test(a)||this.plugin.packManager.isPacknameExists(a);new he.Setting(t).setName("Add new icon pack").setDesc("Reserved names: "+gt.join(", ")).then(a=>{let i=null,r=null;a.addText(o=>{o.setPlaceholder("Enter name").onChange(s=>{let p=n(s);o.inputEl.toggleClass("invalid",!!s&&p),i==null||i.setDisabled(p)}).then(s=>s.inputEl.addClass("isc-add-pack-input")),r=o}).addButton(o=>(o.setCta().setIcon("plus-with-circle").onClick(()=>{let s=r==null?void 0:r.getValue();if(!!s){if(n(s)){new he.Notice("This name is invalid.");return}this.addNewCustomIconEntry(s,t).settingEl.scrollIntoView(),r==null||r.setValue("")}}),i=o))}),this.plugin.packManager.customPacknames.forEach(a=>this.addNewCustomIconEntry(a,t))}addNewCustomIconEntry(t,n){let a=new he.Setting(n).setName(t).setDesc(createFragment(i=>{i.appendText("Drag files in to import custom icons"),i.createEl("br"),i.appendText("Supported format: "),cn.forEach((r,o,s)=>{i.createEl("code",{text:r}),s.length-1!==o&&i.appendText(", ")})})).addButton(i=>i.setIcon("sheets-in-box").setTooltip("Backup icons").onClick(()=>this.plugin.packManager.backupIcons(t))).addButton(i=>i.setIcon("go-to-file").setTooltip("select files to import").onClick(()=>$(this,null,function*(){return this.plugin.packManager.addFromFiles(t,yield Ka({multiple:!0,accept:cn}))}))).addButton(i=>i.setIcon("trash").setTooltip("delete").setWarning().onClick(()=>{this.plugin.packManager.filter((r,o)=>o.pack!==t),n.removeChild(a.settingEl)})).addButton(i=>i.setIcon("popup-open").setTooltip("manage icons").setCta().onClick(()=>new Un(this.plugin,t).open())).then(i=>t1(i.settingEl,r=>$(this,null,function*(){if(!r.dataTransfer){new he.Notice("Failed to get dropped items");return}this.plugin.packManager.addFromFiles(t,r.dataTransfer.files)})));return this._setDisabledPack(t,a),a}},t1=(e,t)=>{let n="dragover";e.addEventListener("dragover",a=>{a.preventDefault(),a.currentTarget.addClass(n)}),e.addEventListener("drop",a=>{a.preventDefault(),a.currentTarget.removeClass(n),t(a)}),e.addEventListener("dragleave",a=>{a.preventDefault(),a.currentTarget.removeClass(n)})};var tp="IconSCAPIv0",Ei=class extends ep.Plugin{constructor(){super(...arguments);this.settings=Ql;this.packManager=new Cn(this);this._nodeProcessor=$a(this);this._mdProcessor=Ga(this);this.shortcodePosField=Ls(this);this.api=ic(this.packManager,this);this.fileIconCache=new fn(this)}postProcessor(t,n){if(typeof t=="string"&&n)return this._mdProcessor(t,n);if(t instanceof HTMLElement)return this._nodeProcessor(t);throw new TypeError("Invalid args given to postProcessor")}onload(){return $(this,null,function*(){console.log("loading Icon Shortcodes"),yield this.loadSettings(),yield wc(this),yield this.packManager.loadIcons(),(window[tp]=this.api)&&this.register(()=>window[tp]=void 0),this.registerEditorSuggest(new Ea(this)),jc(this),Gi(this),this.addSettingTab(new Fi(this.app,this))})}loadSettings(){return $(this,null,function*(){let t=yield this.loadData();t&&(t.iconpack&&delete t.iconpack,this.settings=Qe(Me(Me({},this.settings),t),{disabledPacks:t.disabledPacks?new Set(t.disabledPacks):this.settings.disabledPacks}))})}saveSettings(){return $(this,null,function*(){yield this.saveData(Qe(Me({},this.settings),{disabledPacks:[...this.settings.disabledPacks]}))})}}; +`;var zg=o=>{var s=o,{color:e="var(--interactive-accent)",delay:t=0,type:n="balls",height:a=64,width:i=64}=s,r=cn(s,["color","delay","type","height","width"]);let[p,l]=_e(t>0);return Je(()=>{let u=-1;return p&&(u=window.setTimeout(()=>l(!1),t)),()=>clearTimeout(u)},[]),H.createElement("div",Me({style:{fill:e,height:a,width:i},dangerouslySetInnerHTML:{__html:Si[p?"blank":n]}},r))},Ai=zg;var Qt=class extends Vn.Modal{constructor(n){super(n.app);this.plugin=n;this.modalEl.addClass("mod-browser-packs")}onOpen(){H.render(H.createElement(Pg,{getIconPack:this.getIconPack.bind(this)}),this.contentEl)}onClose(){H.unmountComponentAtNode(this.contentEl)}getIconPack(n,a){return $(this,null,function*(){let i=(r=!1)=>$(this,null,function*(){let o=Ii(n,a,r),s=(yield(0,Vn.requestUrl)({url:o})).arrayBuffer;yield this.plugin.packManager.importIcons({name:o.split("/").pop(),data:s},!1)});try{yield i()}catch(r){console.error("switch to alternative link",r),yield i(!0)}})}},Bg=(e="master")=>$(void 0,null,function*(){let t=yield Ll(e),n=[];for(let a of t){let i=n.last();(i==null?void 0:i.series)===a.series?(i.styles.push(a),i.count+=a.count):n.push({homepage:a.homepage,description:a.description,series:a.series,license:a.license,styles:[a],count:a.count})}return n}),Pg=({getIconPack:e})=>{var a;let[t,n]=_e(null);return Je(()=>{Bg().then(n).catch(n)},[]),t===null?H.createElement("div",{className:"loading"},H.createElement(Ai,{type:"spin",className:"loading-indicator"}),H.createElement("div",null,"Loading Icon Pack List...")):Array.isArray(t)?H.createElement("div",{className:"icon-pack-list"},t.map(i=>H.createElement(Tg,{key:i.homepage,manifest:i,onDownload:r=>e(r)}))):(console.error(t),H.createElement("div",{className:"error"},"Failed to Load Icon Pack List:",H.createElement("div",{className:"mod-warning"},(a=t.message)!=null?a:t.toString())))},Tl="pack-manifest",Tg=({manifest:{series:e,styles:t,description:n,count:a,homepage:i,license:r},onDownload:o})=>{let s=rt(p=>`${Tl}-${p}`,[]);return H.createElement("div",{className:Tl},H.createElement("div",{className:s("title")},e),H.createElement("div",{className:s("details")},H.createElement("span",{className:s("license"),"aria-label":"License: "+r},H.createElement(xl,{size:"0.9em"})),H.createElement("span",{className:s("count"),"aria-label":`${a} icons in total`},H.createElement(Ci,{size:"0.9em"}),H.createElement("span",{className:"icon-text"},a))),H.createElement("div",{className:s("desc")},H.createElement("div",{className:s("homepage"),"aria-label":i,onClick:()=>window.open(i)},H.createElement(yl,null),H.createElement("a",{className:"icon-text"},"Home Page")),n),H.createElement("div",{className:"styles-list"},t.map(p=>H.createElement(Og,{key:p.bundleName,styleInfo:p,onDownload:o}))))},Dl="style-info",Un=(...e)=>(0,Nl.default)(Dl,...e),Og=({styleInfo:{count:e,packId:t,path:n,style:a},onDownload:i})=>{var p;let r=rt(l=>`${Dl}-${l}`,[]),[o,s]=_e({state:"display"});switch(o.state){case"display":return H.createElement("div",{className:Un()},H.createElement("div",{className:r("title")},a||"regular",H.createElement("span",{className:r("pack-id"),"aria-label":"Pack id used as shortcode prefix"},t)),H.createElement("div",{className:r("details")},H.createElement("div",{className:r("count"),"aria-label":`${e} icons in total`},H.createElement(Ci,{size:"0.9em"}),H.createElement("span",{className:"icon-text"},e))),H.createElement("div",{className:r("button-container")},H.createElement("button",{className:r("download"),onClick:()=>$(void 0,null,function*(){s({state:"downloading"});try{yield i(n),s({state:"done"}),console.log("done")}catch(l){console.error(l),s({state:"error",error:l})}}),"aria-label":"Download"},H.createElement(vl,null)),H.createElement("button",{"aria-label":"Download via Browser",onClick:()=>window.open(Ii(n))},H.createElement(bl,null))));case"downloading":return H.createElement("div",{className:Un("downloading")},H.createElement(Ai,{type:"bubbles",className:"loading-indicator"}),H.createElement("div",null,"Downloading..."));case"done":return H.createElement("div",{className:Un("done")},"Downloaded");case"error":return console.error(o.error),H.createElement("div",{className:Un("error")},"Failed to Download:",H.createElement("div",{className:"mod-warning"},o.error instanceof Error?o.error.message:(p=o.error)==null?void 0:p.toString()));default:(0,Ol.default)(o)}};function Se(e){for(var t=arguments.length,n=Array(t>1?t-1:0),a=1;a3?t.i-4:t.i:Array.isArray(e)?1:Ni(e)?2:Di(e)?3:0}function Bi(e,t){return It(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Ng(e,t){return It(e)===2?e.get(t):e[t]}function Gl(e,t,n){var a=It(e);a===2?e.set(t,n):a===3?(e.delete(t),e.add(n)):e[t]=n}function Dg(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function Ni(e){return Hg&&e instanceof Map}function Di(e){return qg&&e instanceof Set}function xe(e){return e.o||e.t}function Wi(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=Gg(e);delete t[se];for(var n=Vi(t),a=0;a1&&(e.set=e.add=e.clear=e.delete=Wg),Object.freeze(e),t&&Lt(e,function(n,a){return St(a,!0)},!0)),e}function Wg(){Se(2)}function Ri(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function We(e){var t=Ti[e];return t||Se(18,e),t}function Rg(e,t){Ti[e]||(Ti[e]=t)}function qn(){return nn}function Mi(e,t){t&&(We("Patches"),e.u=[],e.s=[],e.v=t)}function $n(e){Pi(e),e.p.forEach(Ug),e.p=null}function Pi(e){e===nn&&(nn=e.l)}function Wl(e){return nn={p:[],l:nn,h:e,m:!0,_:0}}function Ug(e){var t=e[se];t.i===0||t.i===1?t.j():t.O=!0}function Fi(e,t){t._=t.p.length;var n=t.p[0],a=e!==void 0&&e!==n;return t.h.g||We("ES5").S(t,e,a),a?(n[se].P&&($n(t),Se(4)),Ye(e)&&(e=Gn(t,e),t.l||Zn(t,e)),t.u&&We("Patches").M(n[se].t,e,t.u,t.s)):e=Gn(t,n,[]),$n(t),t.u&&t.v(t.u,t.s),e!==Kl?e:void 0}function Gn(e,t,n){if(Ri(t))return t;var a=t[se];if(!a)return Lt(t,function(r,o){return Rl(e,a,t,r,o,n)},!0),t;if(a.A!==e)return t;if(!a.P)return Zn(e,a.t,!0),a.t;if(!a.I){a.I=!0,a.A._--;var i=a.i===4||a.i===5?a.o=Wi(a.k):a.o;Lt(a.i===3?new Set(i):i,function(r,o){return Rl(e,a,i,r,o,n)}),Zn(e,i,!1),n&&e.u&&We("Patches").R(a,n,e.u,e.s)}return a.o}function Rl(e,t,n,a,i,r){if(jt(i)){var o=Gn(e,i,r&&t&&t.i!==3&&!Bi(t.D,a)?r.concat(a):void 0);if(Gl(n,a,o),!jt(o))return;e.m=!1}if(Ye(i)&&!Ri(i)){if(!e.h.F&&e._<1)return;Gn(e,i),t&&t.A.l||Zn(e,i)}}function Zn(e,t,n){n===void 0&&(n=!1),e.h.F&&e.m&&St(t,n)}function Ei(e,t){var n=e[se];return(n?xe(n):e)[t]}function Ul(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var a=Object.getOwnPropertyDescriptor(n,t);if(a)return a;n=Object.getPrototypeOf(n)}}function Ke(e){e.P||(e.P=!0,e.l&&Ke(e.l))}function zi(e){e.o||(e.o=Wi(e.t))}function tn(e,t,n){var a=Ni(t)?We("MapSet").N(t,n):Di(t)?We("MapSet").T(t,n):e.g?function(i,r){var o=Array.isArray(i),s={i:o?1:0,A:r?r.A:qn(),P:!1,I:!1,D:{},l:r,t:i,k:null,o:null,j:null,C:!1},p=s,l=Oi;o&&(p=[s],l=en);var c=Proxy.revocable(p,l),u=c.revoke,h=c.proxy;return s.k=h,s.j=u,h}(t,n):We("ES5").J(t,n);return(n?n.A:qn()).p.push(a),a}function Vg(e){return jt(e)||Se(22,e),function t(n){if(!Ye(n))return n;var a,i=n[se],r=It(n);if(i){if(!i.P&&(i.i<4||!We("ES5").K(i)))return i.t;i.I=!0,a=Vl(n,r),i.I=!1}else a=Vl(n,r);return Lt(a,function(o,s){i&&Ng(i.t,o)===s||Gl(a,o,t(s))}),r===3?new Set(a):a}(e)}function Vl(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return Wi(e)}function Zl(){function e(s,p){function l(){this.constructor=s}i(s,p),s.prototype=(l.prototype=p.prototype,new l)}function t(s){s.o||(s.D=new Map,s.o=new Map(s.t))}function n(s){s.o||(s.o=new Set,s.t.forEach(function(p){if(Ye(p)){var l=tn(s.A.h,p,s);s.p.set(p,l),s.o.add(l)}else s.o.add(p)}))}function a(s){s.O&&Se(3,JSON.stringify(xe(s)))}var i=function(s,p){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,c){l.__proto__=c}||function(l,c){for(var u in c)c.hasOwnProperty(u)&&(l[u]=c[u])})(s,p)},r=function(){function s(l,c){return this[se]={i:2,l:c,A:c?c.A:qn(),P:!1,I:!1,o:void 0,D:void 0,t:l,k:this,C:!1,O:!1},this}e(s,Map);var p=s.prototype;return Object.defineProperty(p,"size",{get:function(){return xe(this[se]).size}}),p.has=function(l){return xe(this[se]).has(l)},p.set=function(l,c){var u=this[se];return a(u),xe(u).has(l)&&xe(u).get(l)===c||(t(u),Ke(u),u.D.set(l,!0),u.o.set(l,c),u.D.set(l,!0)),this},p.delete=function(l){if(!this.has(l))return!1;var c=this[se];return a(c),t(c),Ke(c),c.t.has(l)?c.D.set(l,!1):c.D.delete(l),c.o.delete(l),!0},p.clear=function(){var l=this[se];a(l),xe(l).size&&(t(l),Ke(l),l.D=new Map,Lt(l.t,function(c){l.D.set(c,!1)}),l.o.clear())},p.forEach=function(l,c){var u=this;xe(this[se]).forEach(function(h,f){l.call(c,u.get(f),f,u)})},p.get=function(l){var c=this[se];a(c);var u=xe(c).get(l);if(c.I||!Ye(u)||u!==c.t.get(l))return u;var h=tn(c.A.h,u,c);return t(c),c.o.set(l,h),h},p.keys=function(){return xe(this[se]).keys()},p.values=function(){var l,c=this,u=this.keys();return(l={})[Hn]=function(){return c.values()},l.next=function(){var h=u.next();return h.done?h:{done:!1,value:c.get(h.value)}},l},p.entries=function(){var l,c=this,u=this.keys();return(l={})[Hn]=function(){return c.entries()},l.next=function(){var h=u.next();if(h.done)return h;var f=c.get(h.value);return{done:!1,value:[h.value,f]}},l},p[Hn]=function(){return this.entries()},s}(),o=function(){function s(l,c){return this[se]={i:3,l:c,A:c?c.A:qn(),P:!1,I:!1,o:void 0,t:l,k:this,p:new Map,O:!1,C:!1},this}e(s,Set);var p=s.prototype;return Object.defineProperty(p,"size",{get:function(){return xe(this[se]).size}}),p.has=function(l){var c=this[se];return a(c),c.o?!!c.o.has(l)||!(!c.p.has(l)||!c.o.has(c.p.get(l))):c.t.has(l)},p.add=function(l){var c=this[se];return a(c),this.has(l)||(n(c),Ke(c),c.o.add(l)),this},p.delete=function(l){if(!this.has(l))return!1;var c=this[se];return a(c),n(c),Ke(c),c.o.delete(l)||!!c.p.has(l)&&c.o.delete(c.p.get(l))},p.clear=function(){var l=this[se];a(l),xe(l).size&&(n(l),Ke(l),l.o.clear())},p.values=function(){var l=this[se];return a(l),n(l),l.o.values()},p.entries=function(){var l=this[se];return a(l),n(l),l.o.entries()},p.keys=function(){return this.values()},p[Hn]=function(){return this.values()},p.forEach=function(l,c){for(var u=this.values(),h=u.next();!h.done;)l.call(c,h.value,h.value,this),h=u.next()},s}();Rg("MapSet",{N:function(s,p){return new r(s,p)},T:function(s,p){return new o(s,p)}})}var Hl,nn,Ui=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",Hg=typeof Map<"u",qg=typeof Set<"u",ql=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",Kl=Ui?Symbol.for("immer-nothing"):((Hl={})["immer-nothing"]=!0,Hl),$l=Ui?Symbol.for("immer-draftable"):"__$immer_draftable",se=Ui?Symbol.for("immer-state"):"__$immer_state",Hn=typeof Symbol<"u"&&Symbol.iterator||"@@iterator";var $g=""+Object.prototype.constructor,Vi=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Gg=Object.getOwnPropertyDescriptors||function(e){var t={};return Vi(e).forEach(function(n){t[n]=Object.getOwnPropertyDescriptor(e,n)}),t},Ti={},Oi={get:function(e,t){if(t===se)return e;var n=xe(e);if(!Bi(n,t))return function(i,r,o){var s,p=Ul(r,o);return p?"value"in p?p.value:(s=p.get)===null||s===void 0?void 0:s.call(i.k):void 0}(e,n,t);var a=n[t];return e.I||!Ye(a)?a:a===Ei(e.t,t)?(zi(e),e.o[t]=tn(e.A.h,a,e)):a},has:function(e,t){return t in xe(e)},ownKeys:function(e){return Reflect.ownKeys(xe(e))},set:function(e,t,n){var a=Ul(xe(e),t);if(a?.set)return a.set.call(e.k,n),!0;if(!e.P){var i=Ei(xe(e),t),r=i?.[se];if(r&&r.t===n)return e.o[t]=n,e.D[t]=!1,!0;if(Dg(n,i)&&(n!==void 0||Bi(e.t,t)))return!0;zi(e),Ke(e)}return e.o[t]===n&&typeof n!="number"&&(n!==void 0||t in e.o)||(e.o[t]=n,e.D[t]=!0,!0)},deleteProperty:function(e,t){return Ei(e.t,t)!==void 0||t in e.t?(e.D[t]=!1,zi(e),Ke(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var n=xe(e),a=Reflect.getOwnPropertyDescriptor(n,t);return a&&{writable:!0,configurable:e.i!==1||t!=="length",enumerable:a.enumerable,value:n[t]}},defineProperty:function(){Se(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){Se(12)}},en={};Lt(Oi,function(e,t){en[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),en.deleteProperty=function(e,t){return en.set.call(this,e,t,void 0)},en.set=function(e,t,n){return Oi.set.call(this,e[0],t,n,e[0])};var Zg=function(){function e(n){var a=this;this.g=ql,this.F=!0,this.produce=function(i,r,o){if(typeof i=="function"&&typeof r!="function"){var s=r;r=i;var p=a;return function(x){var b=this;x===void 0&&(x=s);for(var _=arguments.length,C=Array(_>1?_-1:0),w=1;w<_;w++)C[w-1]=arguments[w];return p.produce(x,function(z){var F;return(F=r).call.apply(F,[b,z].concat(C))})}}var l;if(typeof r!="function"&&Se(6),o!==void 0&&typeof o!="function"&&Se(7),Ye(i)){var c=Wl(a),u=tn(a,i,void 0),h=!0;try{l=r(u),h=!1}finally{h?$n(c):Pi(c)}return typeof Promise<"u"&&l instanceof Promise?l.then(function(x){return Mi(c,o),Fi(x,c)},function(x){throw $n(c),x}):(Mi(c,o),Fi(l,c))}if(!i||typeof i!="object"){if((l=r(i))===void 0&&(l=i),l===Kl&&(l=void 0),a.F&&St(l,!0),o){var f=[],g=[];We("Patches").M(i,l,f,g),o(f,g)}return l}Se(21,i)},this.produceWithPatches=function(i,r){if(typeof i=="function")return function(l){for(var c=arguments.length,u=Array(c>1?c-1:0),h=1;h=0;i--){var r=a[i];if(r.path.length===0&&r.op==="replace"){n=r.value;break}}i>-1&&(a=a.slice(i+1));var o=We("Patches").$;return jt(n)?o(n,a):this.produce(n,function(s){return o(s,a)})},e}(),we=new Zg,Kg=we.produce,H0=we.produceWithPatches.bind(we),q0=we.setAutoFreeze.bind(we),$0=we.setUseProxies.bind(we),G0=we.applyPatches.bind(we),Z0=we.createDraft.bind(we),K0=we.finishDraft.bind(we),Yl=Kg;var Yn=require("obsidian");function Xl(e){var t=_e(function(){return St(typeof e=="function"?e():e,!0)}),n=t[1];return[t[0],rt(function(a){n(typeof a=="function"?Yl(a):St(a))},[])]}var qi=be(fn(),1),At=require("obsidian");var Yg=({iconInfo:e,updated:t})=>{let{packs:n,icons:a}=wt(Kn),{trash:i,pencil:r,star:o,checkmark:s}=a,[p,l]=_e(e.name.replace(/[-_]/g," ")),[c,u]=_e(!1),h=`${e.pack}_${La(p)}`,f=h===e.id||!n.hasIcon(h),g=Ze(()=>n.getIcon(e.id,!0),[e.id,t]),x=b=>$(void 0,null,function*(){let _=yield n.rename(e.id,b);_?(new At.Notice(`The icon is renamed to ${_}`),u(!1)):new At.Notice(`Failed to rename to ${p}, check log for details`)});return H.createElement("div",{className:"item"},H.createElement("div",{className:"icon"},H.createElement("img",{className:"isc-icon",src:g!=null?g:void 0})),H.createElement("div",{className:"name"},c?H.createElement(Xg,{className:(0,qi.default)({invalid:!f}),onChange:b=>l(b.target.value),value:p}):H.createElement("span",null,p)),H.createElement("div",{className:"buttons"},H.createElement(Hi,{btnType:"cta",icon:o,onClick:()=>$(void 0,null,function*(){let b;(b=yield n.star(e.id))&&new At.Notice(`${e.id} is now ${b}`)})}),H.createElement(Hi,{btnType:"cta",icon:c?s:r,onClick:()=>$(void 0,null,function*(){c?f?h!==e.id?yield x(h):u(!1):new At.Notice(`Unable to rename to ${p}, given id invalid`):u(!0)})}),H.createElement(Hi,{btnType:"warning",icon:i,onClick:()=>$(void 0,null,function*(){(yield n.delete(e.id))&&new At.Notice(`${e.id} is removed from the pack`)})})))},Jl=Yg,Hi=e=>{let i=e,{btnType:t,icon:n}=i,a=cn(i,["btnType","icon"]);return H.createElement("button",et(Me({},a),{className:(0,qi.default)({["mod-"+t]:!!t}),dangerouslySetInnerHTML:{__html:n}}))},Xg=e=>H.createElement("textarea",Me({spellCheck:"false",rows:2},e));Zl();var Jg=()=>{let e=createDiv(),t={};for(let n of["trash","pencil","star","checkmark"])e.empty(),(0,Yn.setIcon)(e,n,14),t[n]=e.innerHTML;return t},Kn=Yt(null),$i="%ALL%",an=class extends Yn.Modal{constructor(n,a){super(n.app);this.plugin=n;this.pack=a;this.titleEl.setText(`${a} Icons`),this.modalEl.addClasses(["isc-icon-manager","mod-community-theme"])}onOpen(){return $(this,null,function*(){this.contentEl.empty(),H.render(H.createElement(Kn.Provider,{value:{packs:this.plugin.packManager,icons:Jg()}},H.createElement(e1,{pack:this.pack})),this.contentEl)})}onClose(){H.unmountComponentAtNode(this.contentEl)}},Qg=(e,t)=>e.name.localeCompare(t.name),e1=({pack:e})=>{if(e==="emoji")throw new TypeError("Emoji not supported");let{packs:t}=wt(Kn),[n,a]=_e(""),[i,r]=Xl(new Map),o=Ze(()=>{let s=t.search(n?n.trim().split(" "):[],[e],1/0).map(({item:p})=>p);return n||s.sort(Qg),s},[n,e,i]);return Je(()=>{let s=t.on("changed",(p,l)=>r(c=>{l?l.forEach(u=>c.set(u,(c.get(u)||0)+1)):c.set($i,(c.get($i)||0)+1)}));return()=>t.offref(s)},[t]),H.createElement(H.Fragment,null,H.createElement("div",{className:"filter"},H.createElement("input",{type:"text",placeholder:"Filter",value:n,onChange:s=>a(s.target.value)})),H.createElement("div",{className:"icons"},o.map(s=>{var l,c;let p=((l=i.get(s.id))!=null?l:0)+((c=i.get($i))!=null?c:0);return H.createElement(Jl,{iconInfo:s,updated:p,key:s.id+p})})))};var Ql={code2emoji:!0,suggester:!0,disabledPacks:new Set(["obs"]),triggerWithTrailingSpace:!1,spaceAfterSC:!1,isMigrated:!1},Xn=class extends me.PluginSettingTab{constructor(n,a){super(n,a);this.plugin=a}display(){let{containerEl:n}=this;this.containerEl.empty(),new me.Setting(n).setHeading().setName("Icon Suggester"),new me.Setting(n).setDesc("If this is turned on, a Suggester will appear everytime you type :(or \uFF1A\uFF1A if full-width) followed by a letter. This will help you insert Emojis. ").addToggle(i=>{i.setValue(this.plugin.settings.suggester).onChange(r=>$(this,null,function*(){this.plugin.settings.suggester=r,yield this.plugin.saveSettings()}))}),new me.Setting(n).setName("Replace emoji shortcode with emoji character").setDesc("If this is turned on, emoji shortcodes will be immediately replaced by emoji after typing. Otherwise they are still stored as a shortcode and you only see the Emoji in Preview Mode.").addToggle(i=>{i.setValue(this.plugin.settings.code2emoji).onChange(r=>$(this,null,function*(){this.plugin.settings.code2emoji=r,yield this.plugin.saveSettings()}))}),new me.Setting(n).setName("Trigger with trailing space").setDesc("only trigger suggester if there is a trailing space before the colon").addToggle(i=>{i.setValue(this.plugin.settings.triggerWithTrailingSpace).onChange(r=>$(this,null,function*(){this.plugin.settings.triggerWithTrailingSpace=r,yield this.plugin.saveSettings()}))}),new me.Setting(n).setName("Add space after inserted shortcode").addToggle(i=>{i.setValue(this.plugin.settings.spaceAfterSC).onChange(r=>$(this,null,function*(){this.plugin.settings.spaceAfterSC=r,yield this.plugin.saveSettings()}))}),this.skipIconPack(),new me.Setting(n).setName("Icon Packs").setDesc("Browse and download icon packs").addButton(i=>i.setButtonText("Browser").onClick(()=>new Qt(this.plugin).open()));let a=createDiv({cls:["isc-settings-custom-icon","installed-plugins-container"]});new me.Setting(this.containerEl).setHeading().setName("Custom Icons").addExtraButton(i=>i.setIcon("sheets-in-box").setTooltip("Backup icons").onClick(()=>this.plugin.packManager.backupIcons())).addExtraButton(i=>i.setIcon("restore-file-glyph").setTooltip("Restore backup").onClick(()=>$(this,null,function*(){this.plugin.packManager.importIconsFromFileList(yield ui({multiple:!0,accept:".zip"}),!1),yield this.plugin.packManager.loadIcons(),this.manageCustomIcons(a)}))).addExtraButton(i=>i.setIcon("switch").setTooltip("Reload custom icons").onClick(()=>$(this,null,function*(){yield this.plugin.packManager.loadIcons(),this.manageCustomIcons(a),new me.Notice("Custom icons reloaded")}))).then(i=>me.Platform.isDesktopApp&&i.addExtraButton(r=>r.setIcon("folder").setTooltip("Open Icons Folder").onClick(()=>this.app.openWithDefaultApp(this.plugin.packManager.customIconsDir)))),this.containerEl.appendChild(a),this.manageCustomIcons(a)}_setDisabledPack(n,a){return a.addToggle(i=>{i.setValue(!this.plugin.settings.disabledPacks.has(n)).onChange(r=>$(this,null,function*(){r?this.plugin.settings.disabledPacks.delete(n):this.plugin.settings.disabledPacks.add(n),yield this.plugin.saveSettings()})),i.toggleEl.setAttr("aria-label",`Enable/Disable ${n} Icon Pack`)})}skipIconPack(){let{containerEl:n}=this,a=(i,r,o)=>this._setDisabledPack(i,new me.Setting(n).setName(r).setDesc(createFragment(o)));new me.Setting(this.containerEl).setHeading().setName("Icon Packs"),a("luc","Lucide",i=>i.createEl("a",{href:"https://lucide.dev",text:"official website"})),a("obs","Obsidian's built-in icons",i=>i.appendText("Obsidian's built-in icons are mostly used for UI components. "))}manageCustomIcons(n){n.hasChildNodes()&&n.empty();let a=i=>!/^[A-Za-z0-9]+$/.test(i)||this.plugin.packManager.isPacknameExists(i);new me.Setting(n).setName("Add new icon pack").setDesc("Reserved names: "+vt.join(", ")).then(i=>{let r=null,o=null;i.addText(s=>{s.setPlaceholder("Enter name").onChange(p=>{let l=a(p);s.inputEl.toggleClass("invalid",!!p&&l),r==null||r.setDisabled(l)}).then(p=>p.inputEl.addClass("isc-add-pack-input")),o=s}).addButton(s=>(s.setCta().setIcon("plus-with-circle").onClick(()=>{let p=o==null?void 0:o.getValue();if(!!p){if(a(p)){new me.Notice("This name is invalid.");return}this.addNewCustomIconEntry(p,n).settingEl.scrollIntoView(),o==null||o.setValue("")}}),r=s))}),this.plugin.packManager.customPacknames.forEach(i=>this.addNewCustomIconEntry(i,n))}addNewCustomIconEntry(n,a){let i=new me.Setting(a).setName(n).setDesc(createFragment(r=>{r.appendText("Drag files in to import custom icons"),r.createEl("br"),r.appendText("Supported format: "),hn.forEach((o,s,p)=>{r.createEl("code",{text:o}),p.length-1!==s&&r.appendText(", ")})})).addButton(r=>r.setIcon("sheets-in-box").setTooltip("Backup icons").onClick(()=>this.plugin.packManager.backupIcons(n))).addButton(r=>r.setIcon("go-to-file").setTooltip("select files to import").onClick(()=>$(this,null,function*(){return this.plugin.packManager.addFromFiles(n,yield ui({multiple:!0,accept:hn}))}))).addButton(r=>r.setIcon("trash").setTooltip("delete").setWarning().onClick(()=>{this.plugin.packManager.filter((o,s)=>s.pack!==n),a.removeChild(i.settingEl)})).addButton(r=>r.setIcon("popup-open").setTooltip("manage icons").setCta().onClick(()=>new an(this.plugin,n).open())).then(r=>t1(r.settingEl,o=>$(this,null,function*(){if(!o.dataTransfer){new me.Notice("Failed to get dropped items");return}this.plugin.packManager.addFromFiles(n,o.dataTransfer.files)})));return this._setDisabledPack(n,i),i}},t1=(e,t)=>{let n="dragover";e.addEventListener("dragover",a=>{a.preventDefault(),a.currentTarget.addClass(n)}),e.addEventListener("drop",a=>{a.preventDefault(),a.currentTarget.removeClass(n),t(a)}),e.addEventListener("dragleave",a=>{a.preventDefault(),a.currentTarget.removeClass(n)})};var ep="IconSCAPIv0",Jn=class extends tp.Plugin{constructor(){super(...arguments);this.settings=Ql;this.packManager=new $t(this);this._nodeProcessor=si(this);this._mdProcessor=ci(this);this.shortcodePosField=Ns(this);this.api=cc(this.packManager,this);this.fileIconCache=new Vt(this)}postProcessor(n,a){if(typeof n=="string"&&a)return this._mdProcessor(n,a);if(n instanceof HTMLElement)return this._nodeProcessor(n);throw new TypeError("Invalid args given to postProcessor")}onload(){return $(this,null,function*(){console.log("loading Icon Shortcodes"),yield this.loadSettings(),yield jc(this),yield this.packManager.loadIcons(),(window[ep]=this.api)&&this.register(()=>window[ep]=void 0),this.registerEditorSuggest(new Mn(this)),Ic(this),rr(this),this.addSettingTab(new Xn(this.app,this))})}loadSettings(){return $(this,null,function*(){let n=yield this.loadData();n&&(n.iconpack&&delete n.iconpack,this.settings=et(Me(Me({},this.settings),n),{disabledPacks:n.disabledPacks?new Set(n.disabledPacks):this.settings.disabledPacks}))})}saveSettings(){return $(this,null,function*(){yield this.saveData(et(Me({},this.settings),{disabledPacks:[...this.settings.disabledPacks]}))})}}; /*! -JSZip v3.7.1 - A JavaScript class for generating and reading zip files +JSZip v3.10.0 - A JavaScript class for generating and reading zip files (c) 2009-2016 Stuart Knightley -Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. JSZip uses the library pako released under the MIT license : -https://github.com/nodeca/pako/blob/master/LICENSE +https://github.com/nodeca/pako/blob/main/LICENSE */ /*! Copyright (c) 2018 Jed Watson. @@ -156,6 +156,7 @@ https://github.com/nodeca/pako/blob/master/LICENSE /*! * mime-db * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson * MIT Licensed */ /*! @@ -164,3 +165,4 @@ https://github.com/nodeca/pako/blob/master/LICENSE * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed */ +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbWUtZGJAMS41Mi4wL25vZGVfbW9kdWxlcy9taW1lLWRiL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wYXRoLWJyb3dzZXJpZnlAMS4wLjEvbm9kZV9tb2R1bGVzL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbWltZS10eXBlc0AyLjEuMzUvbm9kZV9tb2R1bGVzL21pbWUtdHlwZXMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N5bWJvbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weUFycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2VkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1dlYWtNYXAuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N0cmluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXRlcmF0b3JUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hc2NpaVRvQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1VuaWNvZGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVZhbHVlcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcmd1bWVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vbG9kYXNoQDQuMTcuMjEvbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJBcmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvZGFzaEA0LjE3LjIxL25vZGVfbW9kdWxlcy9sb2Rhc2gvdmFsdWVzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9sb2Rhc2hANC4xNy4yMS9ub2RlX21vZHVsZXMvbG9kYXNoL3RvQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2dpdGh1Yi5jb20rcmh5c2Qrbm9kZS1lbW9qaUA0MTQwOGNiNTg1NzU5MGI2ZTk0MmQ0MDE1ODE0ZjI2YWQyN2JlOTY0L25vZGVfbW9kdWxlcy9ub2RlLWVtb2ppL2xpYi9lbW9qaS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vZ2l0aHViLmNvbStyaHlzZCtub2RlLWVtb2ppQDQxNDA4Y2I1ODU3NTkwYjZlOTQyZDQwMTU4MTRmMjZhZDI3YmU5NjQvbm9kZV9tb2R1bGVzL25vZGUtZW1vamkvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NsYXNzbmFtZXNAMi4zLjEvbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Fzc2VydC1uZXZlckAxLjIuMS9ub2RlX21vZHVsZXMvYXNzZXJ0LW5ldmVyL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9qc3ppcEAzLjEwLjAvbm9kZV9tb2R1bGVzL2pzemlwL2Rpc3QvanN6aXAubWluLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9taW5pLXN2Zy1kYXRhLXVyaUAxLjQuNC9ub2RlX21vZHVsZXMvbWluaS1zdmctZGF0YS11cmkvc2hvcnRlci1jc3MtY29sb3ItbmFtZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbmktc3ZnLWRhdGEtdXJpQDEuNC40L25vZGVfbW9kdWxlcy9taW5pLXN2Zy1kYXRhLXVyaS9pbmRleC5qcyIsICIuLi9zcmMvaXNjLW1haW4udHMiLCAiLi4vc3JjL2ljb24taW4tZWRpdG9yL3ZpZXctcGx1Z2luLnRzIiwgIi4uL3NyYy9pY29uLWluLWVkaXRvci9kZWNvLnRzIiwgIi4uL3NyYy9pY29uLWluLWVkaXRvci93aWRnZXQudHMiLCAiLi4vc3JjL2ljb24taW4tZWRpdG9yL2dldC1tZW51LnRzIiwgIi4uL3NyYy9pY29uLWluLWVkaXRvci9pbmRleC50cyIsICIuLi9zcmMvaWNvbi1pbi1lZGl0b3Ivc3RhdGUudHMiLCAiLi4vc3JjL2ljb24tcGFja3MvdXRpbHMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2lzLXJlZ2V4cEAzLjEuMC9ub2RlX21vZHVsZXMvaXMtcmVnZXhwL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jbG9uZS1yZWdleHBAMy4wLjAvbm9kZV9tb2R1bGVzL2Nsb25lLXJlZ2V4cC9pbmRleC5qcyIsICIuLi9zcmMvbW9kdWxlcy91bmlvbi50cyIsICIuLi9zcmMvaWNvbi1wYWNrcy9pY29uLWNhY2hlLnRzIiwgIi4uL3NyYy9pY29uLXBhY2tzL3BhY2stbWFuYWdlci50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vZnVzZS5qc0A2LjYuMi9ub2RlX21vZHVsZXMvZnVzZS5qcy9kaXN0L2Z1c2UuZXNtLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb21wYXJlLXZlcnNpb25zQDQuMS4zL25vZGVfbW9kdWxlcy9jb21wYXJlLXZlcnNpb25zL2luZGV4Lm1qcyIsICIuLi9zcmMvdHlwaW5ncy9hcGkudHMiLCAiLi4vc3JjL21vZHVsZXMvc3VnZ2VzdGVyLnRzIiwgIi4uL3NyYy9pY29uLXBhY2tzL2J1aWx0LWlucy50cyIsICIuLi9zcmMvaWNvbi1wYWNrcy9lbW9qaS50cyIsICIuLi9zcmMvaWNvbi1wYWNrcy9maWxlLWljb24udHMiLCAiLi4vc3JjL2ljb24tcGFja3MvdHlwZXMudHMiLCAiLi4vc3JjL21vZHVsZXMvanNvbi10by1zdmcudHMiLCAiLi4vc3JjL21vZHVsZXMvZGlhbG9nLnRzIiwgIi4uL3NyYy9wb3N0LXBzL2NhbGxvdXQtaWNvbi50cyIsICIuLi9zcmMvcG9zdC1wcy90ZXh0LnRzIiwgIi4uL3NyYy9wb3N0LXBzL2luZGV4LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxlLXNlbGVjdC1kaWFsb2dAMS41LjQvbm9kZV9tb2R1bGVzL2ZpbGUtc2VsZWN0LWRpYWxvZy9zcmMvZXJyb3IudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ZpbGUtc2VsZWN0LWRpYWxvZ0AxLjUuNC9ub2RlX21vZHVsZXMvZmlsZS1zZWxlY3QtZGlhbG9nL3NyYy91dGlsLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxlLXNlbGVjdC1kaWFsb2dAMS41LjQvbm9kZV9tb2R1bGVzL2ZpbGUtc2VsZWN0LWRpYWxvZy9zcmMvZmlsZS1kaWFsb2cudHMiLCAiLi4vc3JjL3NldHRpbmdzLnRzIiwgIi4uL3NyYy9jb21wb25lbnQvYnJvd3Nlci1wYWNrcy50c3giLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY29uc3RhbnRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL3V0aWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvb3B0aW9ucy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jcmVhdGUtZWxlbWVudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb21wb25lbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY3JlYXRlLWNvbnRleHQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvZGlmZi9jaGlsZHJlbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL3Byb3BzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvcmVuZGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2Nsb25lLWVsZW1lbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvZGlmZi9jYXRjaC1lcnJvci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2hvb2tzL3NyYy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvdXRpbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvUHVyZUNvbXBvbmVudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvbWVtby5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvZm9yd2FyZFJlZi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcHJlYWN0QDEwLjguMC9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvQ2hpbGRyZW4uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvc3JjL3N1c3BlbnNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9zdXNwZW5zZS1saXN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9wb3J0YWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcmVhY3RAMTAuOC4wL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9yZW5kZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC44LjAvbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvc3JjL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9yZWFjdC1pY29uc0A0LjQuMF9AcHJlYWN0K2NvbXBhdEAxNy4xLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2xpYi9lc20vaWNvbkNvbnRleHQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3JlYWN0LWljb25zQDQuNC4wX0BwcmVhY3QrY29tcGF0QDE3LjEuMS9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvbGliL2VzbS9pY29uQmFzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcmVhY3QtaWNvbnNANC40LjBfQHByZWFjdCtjb21wYXRAMTcuMS4xL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9maS9pbmRleC5lc20uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzLWJhc2U2NEAzLjcuMi9ub2RlX21vZHVsZXMvanMtYmFzZTY0L2Jhc2U2NC5tanMiLCAiLi4vc3JjL21vZHVsZXMvaWNvbi1wYWNrcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vcmVhY3QtbG9hZGluZ0AyLjAuM19AcHJlYWN0K2NvbXBhdEAxNy4xLjEvbm9kZV9tb2R1bGVzL3JlYWN0LWxvYWRpbmcvbGliL3N2Zy9pbmRleC5qcyIsICIuLi9zcmMvY29tcG9uZW50L2xvYWRpbmcudHN4IiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckA5LjAuMTUvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy91dGlscy9lcnJvcnMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDkuMC4xNS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2NvbW1vbi50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvdXRpbHMvcGx1Z2lucy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9zY29wZS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9maW5hbGl6ZS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9wcm94eS50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvY29yZS9pbW1lckNsYXNzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckA5LjAuMTUvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9jb3JlL2N1cnJlbnQudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDkuMC4xNS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3BsdWdpbnMvZXM1LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckA5LjAuMTUvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9wbHVnaW5zL3BhdGNoZXMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDkuMC4xNS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3BsdWdpbnMvbWFwc2V0LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9pbW1lckA5LjAuMTUvbm9kZV9tb2R1bGVzL2ltbWVyL3NyYy9wbHVnaW5zL2FsbC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vaW1tZXJAOS4wLjE1L25vZGVfbW9kdWxlcy9pbW1lci9zcmMvaW1tZXIudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2ltbWVyQDkuMC4xNS9ub2RlX21vZHVsZXMvaW1tZXIvc3JjL3V0aWxzL2Vudi50cyIsICIuLi9zcmMvY29tcG9uZW50L2ljb24tbWFuYWdlci50c3giLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3VzZS1pbW1lckAwLjYuMF9rb3Y1d3R1bGY1Zzc1Z2x2N3QydWR2c256ZS9ub2RlX21vZHVsZXMvdXNlLWltbWVyL3NyYy9pbmRleC50cyIsICIuLi9zcmMvY29tcG9uZW50L2ljb24tcHJldmlldy50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIVxuICogbWltZS1kYlxuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNS0yMDIyIERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kYi5qc29uJylcbiIsICIvLyAncGF0aCcgbW9kdWxlIGV4dHJhY3RlZCBmcm9tIE5vZGUuanMgdjguMTEuMSAob25seSB0aGUgcG9zaXggcGFydClcbi8vIHRyYW5zcGxpdGVkIHdpdGggQmFiZWxcblxuLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShwYXRoKSk7XG4gIH1cbn1cblxuLy8gUmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIHdpdGggZGlyZWN0b3J5IG5hbWVzXG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmdQb3NpeChwYXRoLCBhbGxvd0Fib3ZlUm9vdCkge1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gIHZhciBsYXN0U2xhc2ggPSAtMTtcbiAgdmFyIGRvdHMgPSAwO1xuICB2YXIgY29kZTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gcGF0aC5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgcGF0aC5sZW5ndGgpXG4gICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGVsc2UgaWYgKGNvZGUgPT09IDQ3IC8qLyovKVxuICAgICAgYnJlYWs7XG4gICAgZWxzZVxuICAgICAgY29kZSA9IDQ3IC8qLyovO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gaSAtIDEgfHwgZG90cyA9PT0gMSkge1xuICAgICAgICAvLyBOT09QXG4gICAgICB9IGVsc2UgaWYgKGxhc3RTbGFzaCAhPT0gaSAtIDEgJiYgZG90cyA9PT0gMikge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA8IDIgfHwgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHwgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDEpICE9PSA0NiAvKi4qLyB8fCByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMikgIT09IDQ2IC8qLiovKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdFNsYXNoSW5kZXggPSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCAhPT0gcmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMgPSByZXMuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoID09PSAyIHx8IHJlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJlcyArPSAnLy4uJztcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXMgPSAnLi4nO1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKVxuICAgICAgICAgIHJlcyArPSAnLycgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmVzID0gcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpKTtcbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpIC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDQ2IC8qLiovICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gX2Zvcm1hdChzZXAsIHBhdGhPYmplY3QpIHtcbiAgdmFyIGRpciA9IHBhdGhPYmplY3QuZGlyIHx8IHBhdGhPYmplY3Qucm9vdDtcbiAgdmFyIGJhc2UgPSBwYXRoT2JqZWN0LmJhc2UgfHwgKHBhdGhPYmplY3QubmFtZSB8fCAnJykgKyAocGF0aE9iamVjdC5leHQgfHwgJycpO1xuICBpZiAoIWRpcikge1xuICAgIHJldHVybiBiYXNlO1xuICB9XG4gIGlmIChkaXIgPT09IHBhdGhPYmplY3Qucm9vdCkge1xuICAgIHJldHVybiBkaXIgKyBiYXNlO1xuICB9XG4gIHJldHVybiBkaXIgKyBzZXAgKyBiYXNlO1xufVxuXG52YXIgcG9zaXggPSB7XG4gIC8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSgpIHtcbiAgICB2YXIgcmVzb2x2ZWRQYXRoID0gJyc7XG4gICAgdmFyIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcbiAgICB2YXIgY3dkO1xuXG4gICAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICAgIHZhciBwYXRoO1xuICAgICAgaWYgKGkgPj0gMClcbiAgICAgICAgcGF0aCA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoY3dkID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgcGF0aCA9IGN3ZDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gICAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVTdHJpbmdQb3NpeChyZXNvbHZlZFBhdGgsICFyZXNvbHZlZEFic29sdXRlKTtcblxuICAgIGlmIChyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApXG4gICAgICAgIHJldHVybiAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiAnLyc7XG4gICAgfSBlbHNlIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVkUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcuJztcbiAgICB9XG4gIH0sXG5cbiAgbm9ybWFsaXplOiBmdW5jdGlvbiBub3JtYWxpemUocGF0aCkge1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLic7XG5cbiAgICB2YXIgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyovKi87XG4gICAgdmFyIHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3IC8qLyovO1xuXG4gICAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gICAgcGF0aCA9IG5vcm1hbGl6ZVN0cmluZ1Bvc2l4KHBhdGgsICFpc0Fic29sdXRlKTtcblxuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgcGF0aCA9ICcuJztcbiAgICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHRyYWlsaW5nU2VwYXJhdG9yKSBwYXRoICs9ICcvJztcblxuICAgIGlmIChpc0Fic29sdXRlKSByZXR1cm4gJy8nICsgcGF0aDtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBpc0Fic29sdXRlOiBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHJldHVybiBwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgfSxcblxuICBqb2luOiBmdW5jdGlvbiBqb2luKCkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuICcuJztcbiAgICB2YXIgam9pbmVkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuICAgICAgYXNzZXJ0UGF0aChhcmcpO1xuICAgICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICBqb2luZWQgPSBhcmc7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBqb2luZWQgKz0gJy8nICsgYXJnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoam9pbmVkID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gJy4nO1xuICAgIHJldHVybiBwb3NpeC5ub3JtYWxpemUoam9pbmVkKTtcbiAgfSxcblxuICByZWxhdGl2ZTogZnVuY3Rpb24gcmVsYXRpdmUoZnJvbSwgdG8pIHtcbiAgICBhc3NlcnRQYXRoKGZyb20pO1xuICAgIGFzc2VydFBhdGgodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICBmcm9tID0gcG9zaXgucmVzb2x2ZShmcm9tKTtcbiAgICB0byA9IHBvc2l4LnJlc29sdmUodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gICAgdmFyIGZyb21TdGFydCA9IDE7XG4gICAgZm9yICg7IGZyb21TdGFydCA8IGZyb20ubGVuZ3RoOyArK2Zyb21TdGFydCkge1xuICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSA0NyAvKi8qLylcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmcm9tRW5kID0gZnJvbS5sZW5ndGg7XG4gICAgdmFyIGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gICAgLy8gVHJpbSBhbnkgbGVhZGluZyBiYWNrc2xhc2hlc1xuICAgIHZhciB0b1N0YXJ0ID0gMTtcbiAgICBmb3IgKDsgdG9TdGFydCA8IHRvLmxlbmd0aDsgKyt0b1N0YXJ0KSB7XG4gICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSAhPT0gNDcgLyovKi8pXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgdG9FbmQgPSB0by5sZW5ndGg7XG4gICAgdmFyIHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gICAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICAgIHZhciBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gICAgdmFyIGxhc3RDb21tb25TZXAgPSAtMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYGZyb21gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGB0b2AuXG4gICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQgKyBpICsgMSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvJzsgdG89Jy9mb28nXG4gICAgICAgICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCArIGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy9mb28vYmFyL2Jheic7IHRvPScvZm9vL2JhcidcbiAgICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgcm9vdC5cbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB2YXIgZnJvbUNvZGUgPSBmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSk7XG4gICAgICB2YXIgdG9Db2RlID0gdG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSk7XG4gICAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSlcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbHNlIGlmIChmcm9tQ29kZSA9PT0gNDcgLyovKi8pXG4gICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgIH1cblxuICAgIHZhciBvdXQgPSAnJztcbiAgICAvLyBHZW5lcmF0ZSB0aGUgcmVsYXRpdmUgcGF0aCBiYXNlZCBvbiB0aGUgcGF0aCBkaWZmZXJlbmNlIGJldHdlZW4gYHRvYFxuICAgIC8vIGFuZCBgZnJvbWBcbiAgICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBmcm9tRW5kIHx8IGZyb20uY2hhckNvZGVBdChpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApXG4gICAgICAgICAgb3V0ICs9ICcuLic7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvdXQgKz0gJy8uLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzdGx5LCBhcHBlbmQgdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uIChgdG9gKSBwYXRoIHRoYXQgY29tZXMgYWZ0ZXJcbiAgICAvLyB0aGUgY29tbW9uIHBhdGggcGFydHNcbiAgICBpZiAob3V0Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gb3V0ICsgdG8uc2xpY2UodG9TdGFydCArIGxhc3RDb21tb25TZXApO1xuICAgIGVsc2Uge1xuICAgICAgdG9TdGFydCArPSBsYXN0Q29tbW9uU2VwO1xuICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgPT09IDQ3IC8qLyovKVxuICAgICAgICArK3RvU3RhcnQ7XG4gICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCk7XG4gICAgfVxuICB9LFxuXG4gIF9tYWtlTG9uZzogZnVuY3Rpb24gX21ha2VMb25nKHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBkaXJuYW1lOiBmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcuJztcbiAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgaGFzUm9vdCA9IGNvZGUgPT09IDQ3IC8qLyovO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDE7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kID09PSAtMSkgcmV0dXJuIGhhc1Jvb3QgPyAnLycgOiAnLic7XG4gICAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSByZXR1cm4gJy8vJztcbiAgICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xuICB9LFxuXG4gIGJhc2VuYW1lOiBmdW5jdGlvbiBiYXNlbmFtZShwYXRoLCBleHQpIHtcbiAgICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiBleHQubGVuZ3RoID4gMCAmJiBleHQubGVuZ3RoIDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgICBpZiAoZXh0Lmxlbmd0aCA9PT0gcGF0aC5sZW5ndGggJiYgZXh0ID09PSBwYXRoKSByZXR1cm4gJyc7XG4gICAgICB2YXIgZXh0SWR4ID0gZXh0Lmxlbmd0aCAtIDE7XG4gICAgICB2YXIgZmlyc3ROb25TbGFzaEVuZCA9IC0xO1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kID09PSAtMSkge1xuICAgICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgICAgLy8gd2UgbmVlZCBpdCBpZiB0aGUgZXh0ZW5zaW9uIGVuZHMgdXAgbm90IG1hdGNoaW5nXG4gICAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IGV4dC5jaGFyQ29kZUF0KGV4dElkeCkpIHtcbiAgICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICBleHRJZHggPSAtMTtcbiAgICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0ID09PSBlbmQpIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmQ7ZWxzZSBpZiAoZW5kID09PSAtMSkgZW5kID0gcGF0aC5sZW5ndGg7XG4gICAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAgIC8vIHBhdGggY29tcG9uZW50XG4gICAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJztcbiAgICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgfSxcblxuICBleHRuYW1lOiBmdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gICAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgICB2YXIgcHJlRG90U3RhdGUgPSAwO1xuICAgIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKVxuICAgICAgICAgICAgc3RhcnREb3QgPSBpO1xuICAgICAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKVxuICAgICAgICAgICAgcHJlRG90U3RhdGUgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICAgICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAgICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgICAgICBwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfSxcblxuICBmb3JtYXQ6IGZ1bmN0aW9uIGZvcm1hdChwYXRoT2JqZWN0KSB7XG4gICAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJwYXRoT2JqZWN0XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHBhdGhPYmplY3QpO1xuICAgIH1cbiAgICByZXR1cm4gX2Zvcm1hdCgnLycsIHBhdGhPYmplY3QpO1xuICB9LFxuXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShwYXRoKSB7XG4gICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgIHZhciByZXQgPSB7IHJvb3Q6ICcnLCBkaXI6ICcnLCBiYXNlOiAnJywgZXh0OiAnJywgbmFtZTogJycgfTtcbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiByZXQ7XG4gICAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIGlzQWJzb2x1dGUgPSBjb2RlID09PSA0NyAvKi8qLztcbiAgICB2YXIgc3RhcnQ7XG4gICAgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICAgIHJldC5yb290ID0gJy8nO1xuICAgICAgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfVxuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAgIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICAgIHZhciBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gICAgZm9yICg7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7ZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSB7XG4gICAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgICBpZiAoc3RhcnRQYXJ0ID09PSAwICYmIGlzQWJzb2x1dGUpIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIGVuZCk7ZWxzZSByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgICByZXQuYmFzZSA9IHBhdGguc2xpY2UoMSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICAgIH1cblxuICAgIGlmIChzdGFydFBhcnQgPiAwKSByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gJy8nO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBzZXA6ICcvJyxcbiAgZGVsaW1pdGVyOiAnOicsXG4gIHdpbjMyOiBudWxsLFxuICBwb3NpeDogbnVsbFxufTtcblxucG9zaXgucG9zaXggPSBwb3NpeDtcblxubW9kdWxlLmV4cG9ydHMgPSBwb3NpeDtcbiIsICIvKiFcbiAqIG1pbWUtdHlwZXNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkYiA9IHJlcXVpcmUoJ21pbWUtZGInKVxudmFyIGV4dG5hbWUgPSByZXF1aXJlKCdwYXRoJykuZXh0bmFtZVxuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBFWFRSQUNUX1RZUEVfUkVHRVhQID0gL15cXHMqKFteO1xcc10qKSg/Ojt8XFxzfCQpL1xudmFyIFRFWFRfVFlQRV9SRUdFWFAgPSAvXnRleHRcXC8vaVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbmV4cG9ydHMuY2hhcnNldCA9IGNoYXJzZXRcbmV4cG9ydHMuY2hhcnNldHMgPSB7IGxvb2t1cDogY2hhcnNldCB9XG5leHBvcnRzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGVcbmV4cG9ydHMuZXh0ZW5zaW9uID0gZXh0ZW5zaW9uXG5leHBvcnRzLmV4dGVuc2lvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5leHBvcnRzLmxvb2t1cCA9IGxvb2t1cFxuZXhwb3J0cy50eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuLy8gUG9wdWxhdGUgdGhlIGV4dGVuc2lvbnMvdHlwZXMgbWFwc1xucG9wdWxhdGVNYXBzKGV4cG9ydHMuZXh0ZW5zaW9ucywgZXhwb3J0cy50eXBlcylcblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgY2hhcnNldCBmb3IgYSBNSU1FIHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGNoYXJzZXQgKHR5cGUpIHtcbiAgaWYgKCF0eXBlIHx8IHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gVE9ETzogdXNlIG1lZGlhLXR5cGVyXG4gIHZhciBtYXRjaCA9IEVYVFJBQ1RfVFlQRV9SRUdFWFAuZXhlYyh0eXBlKVxuICB2YXIgbWltZSA9IG1hdGNoICYmIGRiW21hdGNoWzFdLnRvTG93ZXJDYXNlKCldXG5cbiAgaWYgKG1pbWUgJiYgbWltZS5jaGFyc2V0KSB7XG4gICAgcmV0dXJuIG1pbWUuY2hhcnNldFxuICB9XG5cbiAgLy8gZGVmYXVsdCB0ZXh0LyogdG8gdXRmLThcbiAgaWYgKG1hdGNoICYmIFRFWFRfVFlQRV9SRUdFWFAudGVzdChtYXRjaFsxXSkpIHtcbiAgICByZXR1cm4gJ1VURi04J1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZnVsbCBDb250ZW50LVR5cGUgaGVhZGVyIGdpdmVuIGEgTUlNRSB0eXBlIG9yIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtib29sZWFufHN0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBjb250ZW50VHlwZSAoc3RyKSB7XG4gIC8vIFRPRE86IHNob3VsZCB0aGlzIGV2ZW4gYmUgaW4gdGhpcyBtb2R1bGU/XG4gIGlmICghc3RyIHx8IHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB2YXIgbWltZSA9IHN0ci5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBleHBvcnRzLmxvb2t1cChzdHIpXG4gICAgOiBzdHJcblxuICBpZiAoIW1pbWUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBjb250ZW50LXR5cGUgb3Igb3RoZXIgbW9kdWxlXG4gIGlmIChtaW1lLmluZGV4T2YoJ2NoYXJzZXQnKSA9PT0gLTEpIHtcbiAgICB2YXIgY2hhcnNldCA9IGV4cG9ydHMuY2hhcnNldChtaW1lKVxuICAgIGlmIChjaGFyc2V0KSBtaW1lICs9ICc7IGNoYXJzZXQ9JyArIGNoYXJzZXQudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgcmV0dXJuIG1pbWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgZXh0ZW5zaW9uIGZvciBhIE1JTUUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gZXh0ZW5zaW9uICh0eXBlKSB7XG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBtZWRpYS10eXBlclxuICB2YXIgbWF0Y2ggPSBFWFRSQUNUX1RZUEVfUkVHRVhQLmV4ZWModHlwZSlcblxuICAvLyBnZXQgZXh0ZW5zaW9uc1xuICB2YXIgZXh0cyA9IG1hdGNoICYmIGV4cG9ydHMuZXh0ZW5zaW9uc1ttYXRjaFsxXS50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmICghZXh0cyB8fCAhZXh0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHRzWzBdXG59XG5cbi8qKlxuICogTG9va3VwIHRoZSBNSU1FIHR5cGUgZm9yIGEgZmlsZSBwYXRoL2V4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gbG9va3VwIChwYXRoKSB7XG4gIGlmICghcGF0aCB8fCB0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIGdldCB0aGUgZXh0ZW5zaW9uIChcImV4dFwiIG9yIFwiLmV4dFwiIG9yIGZ1bGwgcGF0aClcbiAgdmFyIGV4dGVuc2lvbiA9IGV4dG5hbWUoJ3guJyArIHBhdGgpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3Vic3RyKDEpXG5cbiAgaWYgKCFleHRlbnNpb24pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHBvcnRzLnR5cGVzW2V4dGVuc2lvbl0gfHwgZmFsc2Vcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZXh0ZW5zaW9ucyBhbmQgdHlwZXMgbWFwcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcG9wdWxhdGVNYXBzIChleHRlbnNpb25zLCB0eXBlcykge1xuICAvLyBzb3VyY2UgcHJlZmVyZW5jZSAobGVhc3QgLT4gbW9zdClcbiAgdmFyIHByZWZlcmVuY2UgPSBbJ25naW54JywgJ2FwYWNoZScsIHVuZGVmaW5lZCwgJ2lhbmEnXVxuXG4gIE9iamVjdC5rZXlzKGRiKS5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hNaW1lVHlwZSAodHlwZSkge1xuICAgIHZhciBtaW1lID0gZGJbdHlwZV1cbiAgICB2YXIgZXh0cyA9IG1pbWUuZXh0ZW5zaW9uc1xuXG4gICAgaWYgKCFleHRzIHx8ICFleHRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gbWltZSAtPiBleHRlbnNpb25zXG4gICAgZXh0ZW5zaW9uc1t0eXBlXSA9IGV4dHNcblxuICAgIC8vIGV4dGVuc2lvbiAtPiBtaW1lXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZXh0ZW5zaW9uID0gZXh0c1tpXVxuXG4gICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSkge1xuICAgICAgICB2YXIgZnJvbSA9IHByZWZlcmVuY2UuaW5kZXhPZihkYlt0eXBlc1tleHRlbnNpb25dXS5zb3VyY2UpXG4gICAgICAgIHZhciB0byA9IHByZWZlcmVuY2UuaW5kZXhPZihtaW1lLnNvdXJjZSlcblxuICAgICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSAhPT0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgJiZcbiAgICAgICAgICAoZnJvbSA+IHRvIHx8IChmcm9tID09PSB0byAmJiB0eXBlc1tleHRlbnNpb25dLnN1YnN0cigwLCAxMikgPT09ICdhcHBsaWNhdGlvbi8nKSkpIHtcbiAgICAgICAgICAvLyBza2lwIHRoZSByZW1hcHBpbmdcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB0aGUgZXh0ZW5zaW9uIC0+IG1pbWVcbiAgICAgIHR5cGVzW2V4dGVuc2lvbl0gPSB0eXBlXG4gICAgfVxuICB9KVxufVxuIiwgIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiIsICJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCAidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsICIvKipcbiAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5QXJyYXk7XG4iLCAidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwgIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwgInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBvYmplY3RUb1N0cmluZyA9IHJlcXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG4iLCAiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3Q7XG4iLCAidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsICJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwgInZhciBjb3JlSnNEYXRhID0gcmVxdWlyZSgnLi9fY29yZUpzRGF0YScpO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFza2VkO1xuIiwgIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsICJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmF0aXZlO1xuIiwgIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwgInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwgInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUocm9vdCwgJ0RhdGFWaWV3Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRGF0YVZpZXc7XG4iLCAidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsICJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuIiwgInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCAidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiIsICJ2YXIgRGF0YVZpZXcgPSByZXF1aXJlKCcuL19EYXRhVmlldycpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIFByb21pc2UgPSByZXF1aXJlKCcuL19Qcm9taXNlJyksXG4gICAgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgV2Vha01hcCA9IHJlcXVpcmUoJy4vX1dlYWtNYXAnKSxcbiAgICBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4vKipcbiAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG52YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRUYWc7XG4iLCAiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwgInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCAiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwgInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTdHJpbmdgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzdHJpbmcsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N0cmluZygnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N0cmluZygxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAoIWlzQXJyYXkodmFsdWUpICYmIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3RyaW5nVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmluZztcbiIsICIvKipcbiAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgdmFyIGRhdGEsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgcmVzdWx0LnB1c2goZGF0YS52YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRvclRvQXJyYXk7XG4iLCAiLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBUb0FycmF5O1xuIiwgIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsICIvKipcbiAqIENvbnZlcnRzIGFuIEFTQ0lJIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhc2NpaVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzY2lpVG9BcnJheTtcbiIsICIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG52YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNVbmljb2RlO1xuIiwgIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG52YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpIHx8IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaWNvZGVUb0FycmF5O1xuIiwgInZhciBhc2NpaVRvQXJyYXkgPSByZXF1aXJlKCcuL19hc2NpaVRvQXJyYXknKSxcbiAgICBoYXNVbmljb2RlID0gcmVxdWlyZSgnLi9faGFzVW5pY29kZScpLFxuICAgIHVuaWNvZGVUb0FycmF5ID0gcmVxdWlyZSgnLi9fdW5pY29kZVRvQXJyYXknKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgIDogYXNjaWlUb0FycmF5KHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9BcnJheTtcbiIsICIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwgInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCAiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCAidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICovXG5mdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNBcmd1bWVudHM7XG4iLCAidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwgIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iLCAidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwgIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwgInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIiwgIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCAidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iLCAidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCAidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwgIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsICIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJnO1xuIiwgInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiIsICJ2YXIgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXMgPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5cztcbiIsICJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCAidmFyIGJhc2VWYWx1ZXMgPSByZXF1aXJlKCcuL19iYXNlVmFsdWVzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8udmFsdWVzKG5ldyBGb28pO1xuICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy52YWx1ZXMoJ2hpJyk7XG4gKiAvLyA9PiBbJ2gnLCAnaSddXG4gKi9cbmZ1bmN0aW9uIHZhbHVlcyhvYmplY3QpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2YWx1ZXM7XG4iLCAidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzU3RyaW5nID0gcmVxdWlyZSgnLi9pc1N0cmluZycpLFxuICAgIGl0ZXJhdG9yVG9BcnJheSA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9yVG9BcnJheScpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKSxcbiAgICBzdHJpbmdUb0FycmF5ID0gcmVxdWlyZSgnLi9fc3RyaW5nVG9BcnJheScpLFxuICAgIHZhbHVlcyA9IHJlcXVpcmUoJy4vdmFsdWVzJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvQXJyYXkoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIF8udG9BcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAqXG4gKiBfLnRvQXJyYXkoMSk7XG4gKiAvLyA9PiBbXVxuICpcbiAqIF8udG9BcnJheShudWxsKTtcbiAqIC8vID0+IFtdXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSA/IHN0cmluZ1RvQXJyYXkodmFsdWUpIDogY29weUFycmF5KHZhbHVlKTtcbiAgfVxuICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgcmV0dXJuIGl0ZXJhdG9yVG9BcnJheSh2YWx1ZVtzeW1JdGVyYXRvcl0oKSk7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICBmdW5jID0gdGFnID09IG1hcFRhZyA/IG1hcFRvQXJyYXkgOiAodGFnID09IHNldFRhZyA/IHNldFRvQXJyYXkgOiB2YWx1ZXMpO1xuXG4gIHJldHVybiBmdW5jKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0FycmF5O1xuIiwgIi8qanNsaW50IG5vZGU6IHRydWUqL1xudmFyIHRvQXJyYXkgPSByZXF1aXJlKCdsb2Rhc2gvdG9BcnJheScpO1xudmFyIGVtb2ppQnlOYW1lID0gcmVxdWlyZSgnLi9lbW9qaS5qc29uJyk7XG5cblwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIHJlZ2V4IHRvIHBhcnNlIGVtb2ppIGluIGEgc3RyaW5nIC0gZmluZHMgZW1vamksIGUuZy4gOmNvZmZlZTpcbiAqL1xudmFyIGVtb2ppTmFtZVJlZ2V4ID0gLzooW2EtekEtWjAtOV9cXC1cXCtdKyk6L2c7XG5cbi8qKlxuICogcmVnZXggdG8gdHJpbSB3aGl0ZXNwYWNlXG4gKiB1c2UgaW5zdGVhZCBvZiBTdHJpbmcucHJvdG90eXBlLnRyaW0oKSBmb3IgSUU4IHN1cHBvcnRcbiAqL1xudmFyIHRyaW1TcGFjZVJlZ2V4ID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG4vKipcbiAqIFJlbW92ZXMgY29sb25zIG9uIGVpdGhlciBzaWRlXG4gKiBvZiB0aGUgc3RyaW5nIGlmIHByZXNlbnRcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmlwQ29sb25zIChzdHIpIHtcbiAgdmFyIGNvbG9uSW5kZXggPSBzdHIuaW5kZXhPZignOicpO1xuICBpZiAoY29sb25JbmRleCA+IC0xKSB7XG4gICAgLy8gOmVtb2ppOiAoaHR0cDovL3d3dy5lbW9qaS1jaGVhdC1zaGVldC5jb20vKVxuICAgIGlmIChjb2xvbkluZGV4ID09PSBzdHIubGVuZ3RoIC0gMSkge1xuICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTtcbiAgICAgIHJldHVybiBzdHJpcENvbG9ucyhzdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBzdHIuc3Vic3RyKGNvbG9uSW5kZXggKyAxKTtcbiAgICAgIHJldHVybiBzdHJpcENvbG9ucyhzdHIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogQWRkcyBjb2xvbnMgdG8gZWl0aGVyIHNpZGVcbiAqIG9mIHRoZSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gd3JhcENvbG9ucyAoc3RyKSB7XG4gIHJldHVybiAodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgJiYgc3RyLmxlbmd0aCA+IDApID8gJzonICsgc3RyICsgJzonIDogc3RyO1xufVxuXG4vKipcbiAqIEVuc3VyZSB0aGF0IHRoZSB3b3JkIGlzIHdyYXBwZWQgaW4gY29sb25zXG4gKiBieSBvbmx5IGFkZGluZyB0aGVtLCBpZiB0aGV5IGFyZSBub3QgdGhlcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuc3VyZUNvbG9ucyAoc3RyKSB7XG4gIHJldHVybiAodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgJiYgc3RyWzBdICE9PSAnOicpID8gd3JhcENvbG9ucyhzdHIpIDogc3RyO1xufVxuXG4vLyBOb24gc3BhY2luZyBtYXJrLCBzb21lIGVtb3RpY29ucyBoYXZlIHRoZW0uIEl0J3MgdGhlICdWYXJpYW50IEZvcm0nLFxuLy8gd2hpY2ggcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGlvbiBzbyB0aGF0IGVtb3RpY29ucyBjYW4gYmUgcmVuZGVyZWQgYXNcbi8vIG1vcmUgY29sb3JmdWwgZ3JhcGhpY3MuIEZFMEUgaXMgYSB1bmljb2RlIHRleHQgdmVyc2lvbiwgd2hlcmUgYXMgRkUwRlxuLy8gc2hvdWxkIGJlIHJlbmRlcmVkIGFzIGEgZ3JhcGhpY2FsIHZlcnNpb24uIFRoZSBjb2RlIGdyYWNlZnVsbHkgZGVncmFkZXMuXG52YXIgTk9OX1NQQUNJTkdfTUFSSyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoNjUwMzkpOyAvLyA2NTAzOSAtICdcdUZFMEYnIC0gMHhGRTBGO1xudmFyIG5vblNwYWNpbmdSZWdleCA9IG5ldyBSZWdFeHAoTk9OX1NQQUNJTkdfTUFSSywgJ2cnKVxuXG4vLyBSZW1vdmUgdGhlIG5vbi1zcGFjaW5nLW1hcmsgZnJvbSB0aGUgY29kZSwgbmV2ZXIgc2VuZCBhIHN0cmlwcGVkIHZlcnNpb25cbi8vIHRvIHRoZSBjbGllbnQsIGFzIGl0IGtpbGxzIGdyYXBoaWNhbCBlbW90aWNvbnMuXG5mdW5jdGlvbiBzdHJpcE5TQiAoY29kZSkge1xuICByZXR1cm4gY29kZS5yZXBsYWNlKG5vblNwYWNpbmdSZWdleCwgJycpO1xufTtcblxuLy8gUmV2ZXJzZWQgaGFzaCB0YWJsZSwgd2hlcmUgYXMgZW1vamlCeU5hbWUgY29udGFpbnMgYSB7IGhlYXJ0OiAnXHUyNzY0JyB9XG4vLyBkaWN0aW9uYXJ5IGVtb2ppQnlDb2RlIGNvbnRhaW5zIHsgXHUyNzY0OiAnaGVhcnQnIH0uIFRoZSBjb2RlcyBhcmUgbm9ybWFsaXplZFxuLy8gdG8gdGhlIHRleHQgdmVyc2lvbi5cbnZhciBlbW9qaUJ5Q29kZSA9IE9iamVjdC5rZXlzKGVtb2ppQnlOYW1lKS5yZWR1Y2UoZnVuY3Rpb24oaCxrKSB7XG4gIGhbc3RyaXBOU0IoZW1vamlCeU5hbWVba10pXSA9IGs7XG4gIHJldHVybiBoO1xufSwge30pO1xuXG4vKipcbiAqIEVtb2ppIG5hbWVzcGFjZVxuICovXG52YXIgRW1vamkgPSB7XG4gIGVtb2ppOiBlbW9qaUJ5TmFtZSxcbn07XG5cbi8qKlxuICogZ2V0IGVtb2ppIGNvZGUgZnJvbSBuYW1lLiByZXR1cm4gZW1vamkgY29kZSBiYWNrIGlmIGNvZGUgaXMgcGFzc2VkIGluLlxuICogQHBhcmFtICB7c3RyaW5nfSBlbW9qaVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5FbW9qaS5fZ2V0ID0gZnVuY3Rpb24gX2dldCAoZW1vamkpIHtcbiAgaWYgKGVtb2ppQnlDb2RlW3N0cmlwTlNCKGVtb2ppKV0pIHtcbiAgICByZXR1cm4gZW1vamk7XG4gIH0gZWxzZSBpZiAoZW1vamlCeU5hbWUuaGFzT3duUHJvcGVydHkoZW1vamkpKSB7XG4gICAgcmV0dXJuIGVtb2ppQnlOYW1lW2Vtb2ppXTtcbiAgfVxuXG4gIHJldHVybiBlbnN1cmVDb2xvbnMoZW1vamkpO1xufTtcblxuLyoqXG4gKiBnZXQgZW1vamkgY29kZSBmcm9tIDplbW9qaTogc3RyaW5nIG9yIG5hbWVcbiAqIEBwYXJhbSAge3N0cmluZ30gZW1vamlcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkuZ2V0ID0gZnVuY3Rpb24gZ2V0IChlbW9qaSkge1xuICBlbW9qaSA9IHN0cmlwQ29sb25zKGVtb2ppKTtcblxuICByZXR1cm4gRW1vamkuX2dldChlbW9qaSk7XG59O1xuXG4vKipcbiAqIGZpbmQgdGhlIGVtb2ppIGJ5IGVpdGhlciBjb2RlIG9yIG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JDb2RlIFRoZSBlbW9qaSB0byBmaW5kLCBlaXRoZXIgYGNvZmZlZWAsIGA6Y29mZmVlOmAgb3IgYFx1MjYxNWA7XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbkVtb2ppLmZpbmQgPSBmdW5jdGlvbiBmaW5kIChuYW1lT3JDb2RlKSB7XG4gIHJldHVybiBFbW9qaS5maW5kQnlOYW1lKG5hbWVPckNvZGUpIHx8IEVtb2ppLmZpbmRCeUNvZGUobmFtZU9yQ29kZSk7XG59O1xuXG4vKipcbiAqIGZpbmQgdGhlIGVtb2ppIGJ5IG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBlbW9qaSB0byBmaW5kIGVpdGhlciBgY29mZmVlYCBvciBgOmNvZmZlZTpgO1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5FbW9qaS5maW5kQnlOYW1lID0gZnVuY3Rpb24gZmluZEJ5TmFtZSAobmFtZSkge1xuICB2YXIgc3RyaXBwZWQgPSBzdHJpcENvbG9ucyhuYW1lKTtcbiAgdmFyIGVtb2ppID0gZW1vamlCeU5hbWVbc3RyaXBwZWRdO1xuXG4gIHJldHVybiBlbW9qaSA/ICh7IGVtb2ppOiBlbW9qaSwga2V5OiBzdHJpcHBlZCB9KSA6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogZmluZCB0aGUgZW1vamkgYnkgY29kZSAoZW1vamkpXG4gKiBAcGFyYW0ge3N0cmluZ30gY29kZSBUaGUgZW1vamkgdG8gZmluZDsgZm9yIGV4YW1wbGUgYFx1MjYxNWAgb3IgYFx1MjYxNGBcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuRW1vamkuZmluZEJ5Q29kZSA9IGZ1bmN0aW9uIGZpbmRCeUNvZGUgKGNvZGUpIHtcbiAgdmFyIHN0cmlwcGVkID0gc3RyaXBOU0IoY29kZSk7XG4gIHZhciBuYW1lID0gZW1vamlCeUNvZGVbc3RyaXBwZWRdO1xuXG4gIC8vIGxvb2t1cCBlbW9qaSB0byBlbnN1cmUgdGhlIFZhcmlhbnQgRm9ybSBpcyByZXR1cm5lZFxuICByZXR1cm4gbmFtZSA/ICh7IGVtb2ppOiBlbW9qaUJ5TmFtZVtuYW1lXSwga2V5OiBuYW1lIH0pIDogdW5kZWZpbmVkO1xufTtcblxuXG4vKipcbiAqIENoZWNrIGlmIGFuIGVtb2ppIGlzIGtub3duIGJ5IHRoaXMgbGlicmFyeVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPckNvZGUgVGhlIGVtb2ppIHRvIHZhbGlkYXRlLCBlaXRoZXIgYGNvZmZlZWAsIGA6Y29mZmVlOmAgb3IgYFx1MjYxNWA7XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbkVtb2ppLmhhc0Vtb2ppID0gZnVuY3Rpb24gaGFzRW1vamkgKG5hbWVPckNvZGUpIHtcbiAgcmV0dXJuIEVtb2ppLmhhc0Vtb2ppQnlOYW1lKG5hbWVPckNvZGUpIHx8IEVtb2ppLmhhc0Vtb2ppQnlDb2RlKG5hbWVPckNvZGUpO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhbiBlbW9qaSB3aXRoIGdpdmVuIG5hbWUgaXMga25vd24gYnkgdGhpcyBsaWJyYXJ5XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgZW1vamkgdG8gdmFsaWRhdGUgZWl0aGVyIGBjb2ZmZWVgIG9yIGA6Y29mZmVlOmA7XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbkVtb2ppLmhhc0Vtb2ppQnlOYW1lID0gZnVuY3Rpb24gaGFzRW1vamlCeU5hbWUgKG5hbWUpIHtcbiAgdmFyIHJlc3VsdCA9IEVtb2ppLmZpbmRCeU5hbWUobmFtZSk7XG4gIHJldHVybiAhIXJlc3VsdCAmJiByZXN1bHQua2V5ID09PSBzdHJpcENvbG9ucyhuYW1lKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBnaXZlbiBlbW9qaSBpcyBrbm93biBieSB0aGlzIGxpYnJhcnlcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIFRoZSBlbW9qaSB0byB2YWxpZGF0ZTsgZm9yIGV4YW1wbGUgYFx1MjYxNWAgb3IgYFx1MjYxNGBcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuRW1vamkuaGFzRW1vamlCeUNvZGUgPSBmdW5jdGlvbiBoYXNFbW9qaUJ5Q29kZSAoY29kZSkge1xuICB2YXIgcmVzdWx0ID0gRW1vamkuZmluZEJ5Q29kZShjb2RlKTtcbiAgcmV0dXJuICEhcmVzdWx0ICYmIHN0cmlwTlNCKHJlc3VsdC5lbW9qaSkgPT09IHN0cmlwTlNCKGNvZGUpO1xufTtcblxuLyoqXG4gKiBnZXQgZW1vamkgbmFtZSBmcm9tIGNvZGVcbiAqIEBwYXJhbSAge3N0cmluZ30gZW1vamlcbiAqIEBwYXJhbSAge2Jvb2xlYW59IGluY2x1ZGVDb2xvbnMgc2hvdWxkIHRoZSByZXN1bHQgaW5jbHVkZSB0aGUgOjpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkud2hpY2ggPSBmdW5jdGlvbiB3aGljaCAoZW1vamlfY29kZSwgaW5jbHVkZUNvbG9ucykge1xuICB2YXIgY29kZSA9IHN0cmlwTlNCKGVtb2ppX2NvZGUpO1xuICB2YXIgd29yZCA9IGVtb2ppQnlDb2RlW2NvZGVdO1xuXG4gIHJldHVybiBpbmNsdWRlQ29sb25zID8gd3JhcENvbG9ucyh3b3JkKSA6IHdvcmQ7XG59O1xuXG4vKipcbiAqIGVtb2ppZnkgYSBzdHJpbmcgKHJlcGxhY2UgOmVtb2ppOiB3aXRoIGFuIGVtb2ppKVxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSBvbl9taXNzaW5nIChnZXRzIGVtb2ppIG5hbWUgd2l0aG91dCA6OiBhbmQgcmV0dXJucyBhIHByb3BlciBlbW9qaSBpZiBubyBlbW9qaSB3YXMgZm91bmQpXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gZm9ybWF0ICh3cmFwIHRoZSByZXR1cm5lZCBlbW9qaSBpbiBhIGN1c3RvbSBlbGVtZW50KVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5FbW9qaS5lbW9qaWZ5ID0gZnVuY3Rpb24gZW1vamlmeSAoc3RyLCBvbl9taXNzaW5nLCBmb3JtYXQpIHtcbiAgaWYgKCFzdHIpIHJldHVybiAnJztcblxuICByZXR1cm4gc3RyLnNwbGl0KGVtb2ppTmFtZVJlZ2V4KSAvLyBwYXJzZSBlbW9qaSB2aWEgcmVnZXhcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gcGFyc2VFbW9qaShzLCBpKSB7XG4gICAgICAgICAgICAgIC8vIGV2ZXJ5IHNlY29uZCBlbGVtZW50IGlzIGFuIGVtb2ppLCBlLmcuIFwidGVzdCA6ZmFzdF9mb3J3YXJkOlwiIC0+IFsgXCJ0ZXN0IFwiLCBcImZhc3RfZm9yd2FyZFwiIF1cbiAgICAgICAgICAgICAgaWYgKGkgJSAyID09PSAwKSByZXR1cm4gcztcbiAgICAgICAgICAgICAgdmFyIGVtb2ppID0gRW1vamkuX2dldChzKTtcbiAgICAgICAgICAgICAgdmFyIGlzTWlzc2luZyA9IGVtb2ppLmluZGV4T2YoJzonKSA+IC0xO1xuXG4gICAgICAgICAgICAgIGlmIChpc01pc3NpbmcgJiYgdHlwZW9mIG9uX21pc3NpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb25fbWlzc2luZyhzKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghaXNNaXNzaW5nICYmIHR5cGVvZiBmb3JtYXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0KGVtb2ppLCBzKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBlbW9qaTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignJykgLy8gY29udmVydCBiYWNrIHRvIHN0cmluZ1xuICA7XG59O1xuXG4vKipcbiAqIHJldHVybiBhIHJhbmRvbSBlbW9qaVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5FbW9qaS5yYW5kb20gPSBmdW5jdGlvbiByYW5kb20gKCkge1xuICB2YXIgZW1vamlLZXlzID0gT2JqZWN0LmtleXMoZW1vamlCeU5hbWUpO1xuICB2YXIgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBlbW9qaUtleXMubGVuZ3RoKTtcbiAgdmFyIGtleSA9IGVtb2ppS2V5c1tyYW5kb21JbmRleF07XG4gIHZhciBlbW9qaSA9IEVtb2ppLl9nZXQoa2V5KTtcbiAgcmV0dXJuIHsga2V5OiBrZXksIGVtb2ppOiBlbW9qaSB9O1xufVxuXG4vKipcbiAqICByZXR1cm4gYW4gY29sbGVjdGlvbiBvZiBwb3RlbnRpYWwgZW1vamkgbWF0Y2hlc1xuICogIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqICBAcmV0dXJuIHtBcnJheS48T2JqZWN0Pn1cbiAqL1xuRW1vamkuc2VhcmNoID0gZnVuY3Rpb24gc2VhcmNoIChzdHIpIHtcbiAgdmFyIGVtb2ppS2V5cyA9IE9iamVjdC5rZXlzKGVtb2ppQnlOYW1lKTtcbiAgdmFyIG1hdGNoZXIgPSBzdHJpcENvbG9ucyhzdHIpXG4gIHZhciBtYXRjaGluZ0tleXMgPSBlbW9qaUtleXMuZmlsdGVyKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBrZXkudG9TdHJpbmcoKS5pbmRleE9mKG1hdGNoZXIpID09PSAwO1xuICB9KTtcbiAgcmV0dXJuIG1hdGNoaW5nS2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleToga2V5LFxuICAgICAgZW1vamk6IEVtb2ppLl9nZXQoa2V5KSxcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiB1bmVtb2ppZnkgYSBzdHJpbmcgKHJlcGxhY2UgZW1vamkgd2l0aCA6ZW1vamk6KVxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkudW5lbW9qaWZ5ID0gZnVuY3Rpb24gdW5lbW9qaWZ5IChzdHIpIHtcbiAgaWYgKCFzdHIpIHJldHVybiAnJztcbiAgdmFyIHdvcmRzID0gdG9BcnJheShzdHIpO1xuXG4gIHJldHVybiB3b3Jkcy5tYXAoZnVuY3Rpb24od29yZCkge1xuICAgIHJldHVybiBFbW9qaS53aGljaCh3b3JkLCB0cnVlKSB8fCB3b3JkO1xuICB9KS5qb2luKCcnKTtcbn07XG5cbi8qKlxuICogcmVwbGFjZSBlbW9qaXMgd2l0aCByZXBsYWNlbWVudCB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHBhcmFtIHtmdW5jdGlvbnxzdHJpbmd9IHRoZSBzdHJpbmcgb3IgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVwbGFjZSB0aGUgZW1vamkgd2l0aFxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGQgdHJhaWxpbmcgd2hpdGVzcGFjZXMgYmUgY2xlYW5lZD8gRGVmYXVsdHMgZmFsc2VcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuRW1vamkucmVwbGFjZSA9IGZ1bmN0aW9uIHJlcGxhY2UgKHN0ciwgcmVwbGFjZW1lbnQsIGNsZWFuU3BhY2VzKSB7XG4gIGlmICghc3RyKSByZXR1cm4gJyc7XG5cbiAgdmFyIHJlcGxhY2UgPSB0eXBlb2YgcmVwbGFjZW1lbnQgPT09ICdmdW5jdGlvbicgPyByZXBsYWNlbWVudCA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVwbGFjZW1lbnQ7IH07XG4gIHZhciB3b3JkcyA9IHRvQXJyYXkoc3RyKTtcblxuICB2YXIgcmVwbGFjZWQgPSB3b3Jkcy5tYXAoZnVuY3Rpb24od29yZCwgaWR4KSB7XG4gICAgdmFyIGVtb2ppID0gRW1vamkuZmluZEJ5Q29kZSh3b3JkKTtcblxuICAgIGlmIChlbW9qaSAmJiBjbGVhblNwYWNlcyAmJiB3b3Jkc1tpZHggKyAxXSA9PT0gJyAnKSB7XG4gICAgICB3b3Jkc1tpZHggKyAxXSA9ICcnO1xuICAgIH1cblxuICAgIHJldHVybiBlbW9qaSA/IHJlcGxhY2UoZW1vamkpIDogd29yZDtcbiAgfSkuam9pbignJyk7XG5cbiAgcmV0dXJuIGNsZWFuU3BhY2VzID8gcmVwbGFjZWQucmVwbGFjZSh0cmltU3BhY2VSZWdleCwgJycpIDogcmVwbGFjZWQ7XG59O1xuXG5cbi8qKlxuICogcmVtb3ZlIGFsbCBlbW9qaXMgZnJvbSBhIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5FbW9qaS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwIChzdHIpIHtcbiAgcmV0dXJuIEVtb2ppLnJlcGxhY2Uoc3RyLCAnJywgdHJ1ZSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVtb2ppO1xuIiwgIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvZW1vamknKTsiLCAiLyohXG4gIENvcHlyaWdodCAoYykgMjAxOCBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuXHRcdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZXhoYXVzdGl2ZSBjaGVja3Mgb2YgZGlzY3JpbWluYXRlZCB1bmlvbnMuXG4gKiBodHRwczovL2Jhc2FyYXQuZ2l0Ym9va3MuaW8vdHlwZXNjcmlwdC9kb2NzL3R5cGVzL2Rpc2NyaW1pbmF0ZWQtdW5pb25zLmh0bWxcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIHR5cGUgQSA9IHt0eXBlOiAnYSd9O1xuICogICAgdHlwZSBCID0ge3R5cGU6ICdiJ307XG4gKiAgICB0eXBlIFVuaW9uID0gQSB8IEI7XG4gKlxuICogICAgZnVuY3Rpb24gZG9Tb21ldGhpbmcoYXJnOiBVbmlvbikge1xuICogICAgICBpZiAoYXJnLnR5cGUgPT09ICdhJykge1xuICogICAgICAgIHJldHVybiBzb21ldGhpbmc7XG4gKiAgICAgIH1cbiAqXG4gKiAgICAgIGlmIChhcmcudHlwZSA9PT0gJ2InKSB7XG4gKiAgICAgICAgcmV0dXJuIHNvbWV0aGluZ0Vsc2U7XG4gKiAgICAgIH1cbiAqXG4gKiAgICAgIC8vIFRTIHdpbGwgZXJyb3IgaWYgdGhlcmUgYXJlIG90aGVyIHR5cGVzIGluIHRoZSB1bmlvblxuICogICAgICAvLyBXaWxsIHRocm93IGFuIEVycm9yIHdoZW4gY2FsbGVkIGF0IHJ1bnRpbWUuXG4gKiAgICAgIC8vIFVzZSBgYXNzZXJ0TmV2ZXIoYXJnLCB0cnVlKWAgaW5zdGVhZCB0byBmYWlsIHNpbGVudGx5LlxuICogICAgICByZXR1cm4gYXNzZXJ0TmV2ZXIoYXJnKTtcbiAqICAgIH1cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0TmV2ZXIodmFsdWUsIG5vVGhyb3cpIHtcbiAgICBpZiAobm9UaHJvdykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcIlVuaGFuZGxlZCBkaXNjcmltaW5hdGVkIHVuaW9uIG1lbWJlcjogXCIgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xufVxuZXhwb3J0cy5hc3NlcnROZXZlciA9IGFzc2VydE5ldmVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gYXNzZXJ0TmV2ZXI7XG4iLCAiLyohXG5cbkpTWmlwIHYzLjEwLjAgLSBBIEphdmFTY3JpcHQgY2xhc3MgZm9yIGdlbmVyYXRpbmcgYW5kIHJlYWRpbmcgemlwIGZpbGVzXG48aHR0cDovL3N0dWFydGsuY29tL2pzemlwPlxuXG4oYykgMjAwOS0yMDE2IFN0dWFydCBLbmlnaHRsZXkgPHN0dWFydCBbYXRdIHN0dWFydGsuY29tPlxuRHVhbCBsaWNlbmNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2Ugb3IgR1BMdjMuIFNlZSBodHRwczovL3Jhdy5naXRodWIuY29tL1N0dWsvanN6aXAvbWFpbi9MSUNFTlNFLm1hcmtkb3duLlxuXG5KU1ppcCB1c2VzIHRoZSBsaWJyYXJ5IHBha28gcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIDpcbmh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGFrby9ibG9iL21haW4vTElDRU5TRVxuKi9cblxuIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXsoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzKS5KU1ppcD1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzKGEsbyxoKXtmdW5jdGlvbiB1KHIsZSl7aWYoIW9bcl0pe2lmKCFhW3JdKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFlJiZ0KXJldHVybiB0KHIsITApO2lmKGwpcmV0dXJuIGwociwhMCk7dmFyIG49bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIityK1wiJ1wiKTt0aHJvdyBuLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsbn12YXIgaT1vW3JdPXtleHBvcnRzOnt9fTthW3JdWzBdLmNhbGwoaS5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciB0PWFbcl1bMV1bZV07cmV0dXJuIHUodHx8ZSl9LGksaS5leHBvcnRzLHMsYSxvLGgpfXJldHVybiBvW3JdLmV4cG9ydHN9Zm9yKHZhciBsPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZT0wO2U8aC5sZW5ndGg7ZSsrKXUoaFtlXSk7cmV0dXJuIHV9KHsxOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGQ9ZShcIi4vdXRpbHNcIiksYz1lKFwiLi9zdXBwb3J0XCIpLHA9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO3IuZW5jb2RlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLG4saSxzLGEsbyxoPVtdLHU9MCxsPWUubGVuZ3RoLGY9bCxjPVwic3RyaW5nXCIhPT1kLmdldFR5cGVPZihlKTt1PGUubGVuZ3RoOylmPWwtdSxuPWM/KHQ9ZVt1KytdLHI9dTxsP2VbdSsrXTowLHU8bD9lW3UrK106MCk6KHQ9ZS5jaGFyQ29kZUF0KHUrKykscj11PGw/ZS5jaGFyQ29kZUF0KHUrKyk6MCx1PGw/ZS5jaGFyQ29kZUF0KHUrKyk6MCksaT10Pj4yLHM9KDMmdCk8PDR8cj4+NCxhPTE8Zj8oMTUmcik8PDJ8bj4+Njo2NCxvPTI8Zj82MyZuOjY0LGgucHVzaChwLmNoYXJBdChpKStwLmNoYXJBdChzKStwLmNoYXJBdChhKStwLmNoYXJBdChvKSk7cmV0dXJuIGguam9pbihcIlwiKX0sci5kZWNvZGU9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGkscyxhLG89MCxoPTAsdT1cImRhdGE6XCI7aWYoZS5zdWJzdHIoMCx1Lmxlbmd0aCk9PT11KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IGlucHV0LCBpdCBsb29rcyBsaWtlIGEgZGF0YSB1cmwuXCIpO3ZhciBsLGY9MyooZT1lLnJlcGxhY2UoL1teQS1aYS16MC05XFwrXFwvXFw9XS9nLFwiXCIpKS5sZW5ndGgvNDtpZihlLmNoYXJBdChlLmxlbmd0aC0xKT09PXAuY2hhckF0KDY0KSYmZi0tLGUuY2hhckF0KGUubGVuZ3RoLTIpPT09cC5jaGFyQXQoNjQpJiZmLS0sZiUxIT0wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IGlucHV0LCBiYWQgY29udGVudCBsZW5ndGguXCIpO2ZvcihsPWMudWludDhhcnJheT9uZXcgVWludDhBcnJheSgwfGYpOm5ldyBBcnJheSgwfGYpO288ZS5sZW5ndGg7KXQ9cC5pbmRleE9mKGUuY2hhckF0KG8rKykpPDwyfChpPXAuaW5kZXhPZihlLmNoYXJBdChvKyspKSk+PjQscj0oMTUmaSk8PDR8KHM9cC5pbmRleE9mKGUuY2hhckF0KG8rKykpKT4+MixuPSgzJnMpPDw2fChhPXAuaW5kZXhPZihlLmNoYXJBdChvKyspKSksbFtoKytdPXQsNjQhPT1zJiYobFtoKytdPXIpLDY0IT09YSYmKGxbaCsrXT1uKTtyZXR1cm4gbH19LHtcIi4vc3VwcG9ydFwiOjMwLFwiLi91dGlsc1wiOjMyfV0sMjpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuL2V4dGVybmFsXCIpLGk9ZShcIi4vc3RyZWFtL0RhdGFXb3JrZXJcIikscz1lKFwiLi9zdHJlYW0vQ3JjMzJQcm9iZVwiKSxhPWUoXCIuL3N0cmVhbS9EYXRhTGVuZ3RoUHJvYmVcIik7ZnVuY3Rpb24gbyhlLHQscixuLGkpe3RoaXMuY29tcHJlc3NlZFNpemU9ZSx0aGlzLnVuY29tcHJlc3NlZFNpemU9dCx0aGlzLmNyYzMyPXIsdGhpcy5jb21wcmVzc2lvbj1uLHRoaXMuY29tcHJlc3NlZENvbnRlbnQ9aX1vLnByb3RvdHlwZT17Z2V0Q29udGVudFdvcmtlcjpmdW5jdGlvbigpe3ZhciBlPW5ldyBpKG4uUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29tcHJlc3NlZENvbnRlbnQpKS5waXBlKHRoaXMuY29tcHJlc3Npb24udW5jb21wcmVzc1dvcmtlcigpKS5waXBlKG5ldyBhKFwiZGF0YV9sZW5ndGhcIikpLHQ9dGhpcztyZXR1cm4gZS5vbihcImVuZFwiLGZ1bmN0aW9uKCl7aWYodGhpcy5zdHJlYW1JbmZvLmRhdGFfbGVuZ3RoIT09dC51bmNvbXByZXNzZWRTaXplKXRocm93IG5ldyBFcnJvcihcIkJ1ZyA6IHVuY29tcHJlc3NlZCBkYXRhIHNpemUgbWlzbWF0Y2hcIil9KSxlfSxnZXRDb21wcmVzc2VkV29ya2VyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpKG4uUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29tcHJlc3NlZENvbnRlbnQpKS53aXRoU3RyZWFtSW5mbyhcImNvbXByZXNzZWRTaXplXCIsdGhpcy5jb21wcmVzc2VkU2l6ZSkud2l0aFN0cmVhbUluZm8oXCJ1bmNvbXByZXNzZWRTaXplXCIsdGhpcy51bmNvbXByZXNzZWRTaXplKS53aXRoU3RyZWFtSW5mbyhcImNyYzMyXCIsdGhpcy5jcmMzMikud2l0aFN0cmVhbUluZm8oXCJjb21wcmVzc2lvblwiLHRoaXMuY29tcHJlc3Npb24pfX0sby5jcmVhdGVXb3JrZXJGcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZS5waXBlKG5ldyBzKS5waXBlKG5ldyBhKFwidW5jb21wcmVzc2VkU2l6ZVwiKSkucGlwZSh0LmNvbXByZXNzV29ya2VyKHIpKS5waXBlKG5ldyBhKFwiY29tcHJlc3NlZFNpemVcIikpLndpdGhTdHJlYW1JbmZvKFwiY29tcHJlc3Npb25cIix0KX0sdC5leHBvcnRzPW99LHtcIi4vZXh0ZXJuYWxcIjo2LFwiLi9zdHJlYW0vQ3JjMzJQcm9iZVwiOjI1LFwiLi9zdHJlYW0vRGF0YUxlbmd0aFByb2JlXCI6MjYsXCIuL3N0cmVhbS9EYXRhV29ya2VyXCI6Mjd9XSwzOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIik7ci5TVE9SRT17bWFnaWM6XCJcXDBcXDBcIixjb21wcmVzc1dvcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG4oXCJTVE9SRSBjb21wcmVzc2lvblwiKX0sdW5jb21wcmVzc1dvcmtlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgbihcIlNUT1JFIGRlY29tcHJlc3Npb25cIil9fSxyLkRFRkxBVEU9ZShcIi4vZmxhdGVcIil9LHtcIi4vZmxhdGVcIjo3LFwiLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiOjI4fV0sNDpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuL3V0aWxzXCIpO3ZhciBvPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9W10scj0wO3I8MjU2O3IrKyl7ZT1yO2Zvcih2YXIgbj0wO248ODtuKyspZT0xJmU/Mzk4ODI5MjM4NF5lPj4+MTplPj4+MTt0W3JdPWV9cmV0dXJuIHR9KCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMCE9PWUmJmUubGVuZ3RoP1wic3RyaW5nXCIhPT1uLmdldFR5cGVPZihlKT9mdW5jdGlvbihlLHQscixuKXt2YXIgaT1vLHM9bityO2VePS0xO2Zvcih2YXIgYT1uO2E8czthKyspZT1lPj4+OF5pWzI1NSYoZV50W2FdKV07cmV0dXJuLTFeZX0oMHx0LGUsZS5sZW5ndGgsMCk6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9byxzPW4rcjtlXj0tMTtmb3IodmFyIGE9bjthPHM7YSsrKWU9ZT4+PjheaVsyNTUmKGVedC5jaGFyQ29kZUF0KGEpKV07cmV0dXJuLTFeZX0oMHx0LGUsZS5sZW5ndGgsMCk6MH19LHtcIi4vdXRpbHNcIjozMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtyLmJhc2U2ND0hMSxyLmJpbmFyeT0hMSxyLmRpcj0hMSxyLmNyZWF0ZUZvbGRlcnM9ITAsci5kYXRlPW51bGwsci5jb21wcmVzc2lvbj1udWxsLHIuY29tcHJlc3Npb25PcHRpb25zPW51bGwsci5jb21tZW50PW51bGwsci51bml4UGVybWlzc2lvbnM9bnVsbCxyLmRvc1Blcm1pc3Npb25zPW51bGx9LHt9XSw2OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49bnVsbDtuPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlP1Byb21pc2U6ZShcImxpZVwiKSx0LmV4cG9ydHM9e1Byb21pc2U6bn19LHtsaWU6Mzd9XSw3OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50MTZBcnJheSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQzMkFycmF5LGk9ZShcInBha29cIikscz1lKFwiLi91dGlsc1wiKSxhPWUoXCIuL3N0cmVhbS9HZW5lcmljV29ya2VyXCIpLG89bj9cInVpbnQ4YXJyYXlcIjpcImFycmF5XCI7ZnVuY3Rpb24gaChlLHQpe2EuY2FsbCh0aGlzLFwiRmxhdGVXb3JrZXIvXCIrZSksdGhpcy5fcGFrbz1udWxsLHRoaXMuX3Bha29BY3Rpb249ZSx0aGlzLl9wYWtvT3B0aW9ucz10LHRoaXMubWV0YT17fX1yLm1hZ2ljPVwiXFxiXFwwXCIscy5pbmhlcml0cyhoLGEpLGgucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihlKXt0aGlzLm1ldGE9ZS5tZXRhLG51bGw9PT10aGlzLl9wYWtvJiZ0aGlzLl9jcmVhdGVQYWtvKCksdGhpcy5fcGFrby5wdXNoKHMudHJhbnNmb3JtVG8obyxlLmRhdGEpLCExKX0saC5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXthLnByb3RvdHlwZS5mbHVzaC5jYWxsKHRoaXMpLG51bGw9PT10aGlzLl9wYWtvJiZ0aGlzLl9jcmVhdGVQYWtvKCksdGhpcy5fcGFrby5wdXNoKFtdLCEwKX0saC5wcm90b3R5cGUuY2xlYW5VcD1mdW5jdGlvbigpe2EucHJvdG90eXBlLmNsZWFuVXAuY2FsbCh0aGlzKSx0aGlzLl9wYWtvPW51bGx9LGgucHJvdG90eXBlLl9jcmVhdGVQYWtvPWZ1bmN0aW9uKCl7dGhpcy5fcGFrbz1uZXcgaVt0aGlzLl9wYWtvQWN0aW9uXSh7cmF3OiEwLGxldmVsOnRoaXMuX3Bha29PcHRpb25zLmxldmVsfHwtMX0pO3ZhciB0PXRoaXM7dGhpcy5fcGFrby5vbkRhdGE9ZnVuY3Rpb24oZSl7dC5wdXNoKHtkYXRhOmUsbWV0YTp0Lm1ldGF9KX19LHIuY29tcHJlc3NXb3JrZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBoKFwiRGVmbGF0ZVwiLGUpfSxyLnVuY29tcHJlc3NXb3JrZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGgoXCJJbmZsYXRlXCIse30pfX0se1wiLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiOjI4LFwiLi91dGlsc1wiOjMyLHBha286Mzh9XSw4OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gQShlLHQpe3ZhciByLG49XCJcIjtmb3Iocj0wO3I8dDtyKyspbis9U3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmZSksZT4+Pj04O3JldHVybiBufWZ1bmN0aW9uIG4oZSx0LHIsbixpLHMpe3ZhciBhLG8saD1lLmZpbGUsdT1lLmNvbXByZXNzaW9uLGw9cyE9PU8udXRmOGVuY29kZSxmPUkudHJhbnNmb3JtVG8oXCJzdHJpbmdcIixzKGgubmFtZSkpLGM9SS50cmFuc2Zvcm1UbyhcInN0cmluZ1wiLE8udXRmOGVuY29kZShoLm5hbWUpKSxkPWguY29tbWVudCxwPUkudHJhbnNmb3JtVG8oXCJzdHJpbmdcIixzKGQpKSxtPUkudHJhbnNmb3JtVG8oXCJzdHJpbmdcIixPLnV0ZjhlbmNvZGUoZCkpLF89Yy5sZW5ndGghPT1oLm5hbWUubGVuZ3RoLGc9bS5sZW5ndGghPT1kLmxlbmd0aCxiPVwiXCIsdj1cIlwiLHk9XCJcIix3PWguZGlyLGs9aC5kYXRlLHg9e2NyYzMyOjAsY29tcHJlc3NlZFNpemU6MCx1bmNvbXByZXNzZWRTaXplOjB9O3QmJiFyfHwoeC5jcmMzMj1lLmNyYzMyLHguY29tcHJlc3NlZFNpemU9ZS5jb21wcmVzc2VkU2l6ZSx4LnVuY29tcHJlc3NlZFNpemU9ZS51bmNvbXByZXNzZWRTaXplKTt2YXIgUz0wO3QmJihTfD04KSxsfHwhXyYmIWd8fChTfD0yMDQ4KTt2YXIgej0wLEM9MDt3JiYoenw9MTYpLFwiVU5JWFwiPT09aT8oQz03OTgsenw9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lO3JldHVybiBlfHwocj10PzE2ODkzOjMzMjA0KSwoNjU1MzUmcik8PDE2fShoLnVuaXhQZXJtaXNzaW9ucyx3KSk6KEM9MjAsenw9ZnVuY3Rpb24oZSl7cmV0dXJuIDYzJihlfHwwKX0oaC5kb3NQZXJtaXNzaW9ucykpLGE9ay5nZXRVVENIb3VycygpLGE8PD02LGF8PWsuZ2V0VVRDTWludXRlcygpLGE8PD01LGF8PWsuZ2V0VVRDU2Vjb25kcygpLzIsbz1rLmdldFVUQ0Z1bGxZZWFyKCktMTk4MCxvPDw9NCxvfD1rLmdldFVUQ01vbnRoKCkrMSxvPDw9NSxvfD1rLmdldFVUQ0RhdGUoKSxfJiYodj1BKDEsMSkrQShCKGYpLDQpK2MsYis9XCJ1cFwiK0Eodi5sZW5ndGgsMikrdiksZyYmKHk9QSgxLDEpK0EoQihwKSw0KSttLGIrPVwidWNcIitBKHkubGVuZ3RoLDIpK3kpO3ZhciBFPVwiXCI7cmV0dXJuIEUrPVwiXFxuXFwwXCIsRSs9QShTLDIpLEUrPXUubWFnaWMsRSs9QShhLDIpLEUrPUEobywyKSxFKz1BKHguY3JjMzIsNCksRSs9QSh4LmNvbXByZXNzZWRTaXplLDQpLEUrPUEoeC51bmNvbXByZXNzZWRTaXplLDQpLEUrPUEoZi5sZW5ndGgsMiksRSs9QShiLmxlbmd0aCwyKSx7ZmlsZVJlY29yZDpSLkxPQ0FMX0ZJTEVfSEVBREVSK0UrZitiLGRpclJlY29yZDpSLkNFTlRSQUxfRklMRV9IRUFERVIrQShDLDIpK0UrQShwLmxlbmd0aCwyKStcIlxcMFxcMFxcMFxcMFwiK0Eoeiw0KStBKG4sNCkrZitiK3B9fXZhciBJPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiKSxPPWUoXCIuLi91dGY4XCIpLEI9ZShcIi4uL2NyYzMyXCIpLFI9ZShcIi4uL3NpZ25hdHVyZVwiKTtmdW5jdGlvbiBzKGUsdCxyLG4pe2kuY2FsbCh0aGlzLFwiWmlwRmlsZVdvcmtlclwiKSx0aGlzLmJ5dGVzV3JpdHRlbj0wLHRoaXMuemlwQ29tbWVudD10LHRoaXMuemlwUGxhdGZvcm09cix0aGlzLmVuY29kZUZpbGVOYW1lPW4sdGhpcy5zdHJlYW1GaWxlcz1lLHRoaXMuYWNjdW11bGF0ZT0hMSx0aGlzLmNvbnRlbnRCdWZmZXI9W10sdGhpcy5kaXJSZWNvcmRzPVtdLHRoaXMuY3VycmVudFNvdXJjZU9mZnNldD0wLHRoaXMuZW50cmllc0NvdW50PTAsdGhpcy5jdXJyZW50RmlsZT1udWxsLHRoaXMuX3NvdXJjZXM9W119SS5pbmhlcml0cyhzLGkpLHMucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tZXRhLnBlcmNlbnR8fDAscj10aGlzLmVudHJpZXNDb3VudCxuPXRoaXMuX3NvdXJjZXMubGVuZ3RoO3RoaXMuYWNjdW11bGF0ZT90aGlzLmNvbnRlbnRCdWZmZXIucHVzaChlKToodGhpcy5ieXRlc1dyaXR0ZW4rPWUuZGF0YS5sZW5ndGgsaS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMse2RhdGE6ZS5kYXRhLG1ldGE6e2N1cnJlbnRGaWxlOnRoaXMuY3VycmVudEZpbGUscGVyY2VudDpyPyh0KzEwMCooci1uLTEpKS9yOjEwMH19KSl9LHMucHJvdG90eXBlLm9wZW5lZFNvdXJjZT1mdW5jdGlvbihlKXt0aGlzLmN1cnJlbnRTb3VyY2VPZmZzZXQ9dGhpcy5ieXRlc1dyaXR0ZW4sdGhpcy5jdXJyZW50RmlsZT1lLmZpbGUubmFtZTt2YXIgdD10aGlzLnN0cmVhbUZpbGVzJiYhZS5maWxlLmRpcjtpZih0KXt2YXIgcj1uKGUsdCwhMSx0aGlzLmN1cnJlbnRTb3VyY2VPZmZzZXQsdGhpcy56aXBQbGF0Zm9ybSx0aGlzLmVuY29kZUZpbGVOYW1lKTt0aGlzLnB1c2goe2RhdGE6ci5maWxlUmVjb3JkLG1ldGE6e3BlcmNlbnQ6MH19KX1lbHNlIHRoaXMuYWNjdW11bGF0ZT0hMH0scy5wcm90b3R5cGUuY2xvc2VkU291cmNlPWZ1bmN0aW9uKGUpe3RoaXMuYWNjdW11bGF0ZT0hMTt2YXIgdD10aGlzLnN0cmVhbUZpbGVzJiYhZS5maWxlLmRpcixyPW4oZSx0LCEwLHRoaXMuY3VycmVudFNvdXJjZU9mZnNldCx0aGlzLnppcFBsYXRmb3JtLHRoaXMuZW5jb2RlRmlsZU5hbWUpO2lmKHRoaXMuZGlyUmVjb3Jkcy5wdXNoKHIuZGlyUmVjb3JkKSx0KXRoaXMucHVzaCh7ZGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gUi5EQVRBX0RFU0NSSVBUT1IrQShlLmNyYzMyLDQpK0EoZS5jb21wcmVzc2VkU2l6ZSw0KStBKGUudW5jb21wcmVzc2VkU2l6ZSw0KX0oZSksbWV0YTp7cGVyY2VudDoxMDB9fSk7ZWxzZSBmb3IodGhpcy5wdXNoKHtkYXRhOnIuZmlsZVJlY29yZCxtZXRhOntwZXJjZW50OjB9fSk7dGhpcy5jb250ZW50QnVmZmVyLmxlbmd0aDspdGhpcy5wdXNoKHRoaXMuY29udGVudEJ1ZmZlci5zaGlmdCgpKTt0aGlzLmN1cnJlbnRGaWxlPW51bGx9LHMucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuYnl0ZXNXcml0dGVuLHQ9MDt0PHRoaXMuZGlyUmVjb3Jkcy5sZW5ndGg7dCsrKXRoaXMucHVzaCh7ZGF0YTp0aGlzLmRpclJlY29yZHNbdF0sbWV0YTp7cGVyY2VudDoxMDB9fSk7dmFyIHI9dGhpcy5ieXRlc1dyaXR0ZW4tZSxuPWZ1bmN0aW9uKGUsdCxyLG4saSl7dmFyIHM9SS50cmFuc2Zvcm1UbyhcInN0cmluZ1wiLGkobikpO3JldHVybiBSLkNFTlRSQUxfRElSRUNUT1JZX0VORCtcIlxcMFxcMFxcMFxcMFwiK0EoZSwyKStBKGUsMikrQSh0LDQpK0Eociw0KStBKHMubGVuZ3RoLDIpK3N9KHRoaXMuZGlyUmVjb3Jkcy5sZW5ndGgscixlLHRoaXMuemlwQ29tbWVudCx0aGlzLmVuY29kZUZpbGVOYW1lKTt0aGlzLnB1c2goe2RhdGE6bixtZXRhOntwZXJjZW50OjEwMH19KX0scy5wcm90b3R5cGUucHJlcGFyZU5leHRTb3VyY2U9ZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXRoaXMuX3NvdXJjZXMuc2hpZnQoKSx0aGlzLm9wZW5lZFNvdXJjZSh0aGlzLnByZXZpb3VzLnN0cmVhbUluZm8pLHRoaXMuaXNQYXVzZWQ/dGhpcy5wcmV2aW91cy5wYXVzZSgpOnRoaXMucHJldmlvdXMucmVzdW1lKCl9LHMucHJvdG90eXBlLnJlZ2lzdGVyUHJldmlvdXM9ZnVuY3Rpb24oZSl7dGhpcy5fc291cmNlcy5wdXNoKGUpO3ZhciB0PXRoaXM7cmV0dXJuIGUub24oXCJkYXRhXCIsZnVuY3Rpb24oZSl7dC5wcm9jZXNzQ2h1bmsoZSl9KSxlLm9uKFwiZW5kXCIsZnVuY3Rpb24oKXt0LmNsb3NlZFNvdXJjZSh0LnByZXZpb3VzLnN0cmVhbUluZm8pLHQuX3NvdXJjZXMubGVuZ3RoP3QucHJlcGFyZU5leHRTb3VyY2UoKTp0LmVuZCgpfSksZS5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7dC5lcnJvcihlKX0pLHRoaXN9LHMucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3JldHVybiEhaS5wcm90b3R5cGUucmVzdW1lLmNhbGwodGhpcykmJighdGhpcy5wcmV2aW91cyYmdGhpcy5fc291cmNlcy5sZW5ndGg/KHRoaXMucHJlcGFyZU5leHRTb3VyY2UoKSwhMCk6dGhpcy5wcmV2aW91c3x8dGhpcy5fc291cmNlcy5sZW5ndGh8fHRoaXMuZ2VuZXJhdGVkRXJyb3I/dm9pZCAwOih0aGlzLmVuZCgpLCEwKSl9LHMucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3NvdXJjZXM7aWYoIWkucHJvdG90eXBlLmVycm9yLmNhbGwodGhpcyxlKSlyZXR1cm4hMTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0cnl7dFtyXS5lcnJvcihlKX1jYXRjaChlKXt9cmV0dXJuITB9LHMucHJvdG90eXBlLmxvY2s9ZnVuY3Rpb24oKXtpLnByb3RvdHlwZS5sb2NrLmNhbGwodGhpcyk7Zm9yKHZhciBlPXRoaXMuX3NvdXJjZXMsdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0ubG9jaygpfSx0LmV4cG9ydHM9c30se1wiLi4vY3JjMzJcIjo0LFwiLi4vc2lnbmF0dXJlXCI6MjMsXCIuLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiOjI4LFwiLi4vdXRmOFwiOjMxLFwiLi4vdXRpbHNcIjozMn1dLDk6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgdT1lKFwiLi4vY29tcHJlc3Npb25zXCIpLG49ZShcIi4vWmlwRmlsZVdvcmtlclwiKTtyLmdlbmVyYXRlV29ya2VyPWZ1bmN0aW9uKGUsYSx0KXt2YXIgbz1uZXcgbihhLnN0cmVhbUZpbGVzLHQsYS5wbGF0Zm9ybSxhLmVuY29kZUZpbGVOYW1lKSxoPTA7dHJ5e2UuZm9yRWFjaChmdW5jdGlvbihlLHQpe2grKzt2YXIgcj1mdW5jdGlvbihlLHQpe3ZhciByPWV8fHQsbj11W3JdO2lmKCFuKXRocm93IG5ldyBFcnJvcihyK1wiIGlzIG5vdCBhIHZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCAhXCIpO3JldHVybiBufSh0Lm9wdGlvbnMuY29tcHJlc3Npb24sYS5jb21wcmVzc2lvbiksbj10Lm9wdGlvbnMuY29tcHJlc3Npb25PcHRpb25zfHxhLmNvbXByZXNzaW9uT3B0aW9uc3x8e30saT10LmRpcixzPXQuZGF0ZTt0Ll9jb21wcmVzc1dvcmtlcihyLG4pLndpdGhTdHJlYW1JbmZvKFwiZmlsZVwiLHtuYW1lOmUsZGlyOmksZGF0ZTpzLGNvbW1lbnQ6dC5jb21tZW50fHxcIlwiLHVuaXhQZXJtaXNzaW9uczp0LnVuaXhQZXJtaXNzaW9ucyxkb3NQZXJtaXNzaW9uczp0LmRvc1Blcm1pc3Npb25zfSkucGlwZShvKX0pLG8uZW50cmllc0NvdW50PWh9Y2F0Y2goZSl7by5lcnJvcihlKX1yZXR1cm4gb319LHtcIi4uL2NvbXByZXNzaW9uc1wiOjMsXCIuL1ppcEZpbGVXb3JrZXJcIjo4fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgbikpcmV0dXJuIG5ldyBuO2lmKGFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiVGhlIGNvbnN0cnVjdG9yIHdpdGggcGFyYW1ldGVycyBoYXMgYmVlbiByZW1vdmVkIGluIEpTWmlwIDMuMCwgcGxlYXNlIGNoZWNrIHRoZSB1cGdyYWRlIGd1aWRlLlwiKTt0aGlzLmZpbGVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5jb21tZW50PW51bGwsdGhpcy5yb290PVwiXCIsdGhpcy5jbG9uZT1mdW5jdGlvbigpe3ZhciBlPW5ldyBuO2Zvcih2YXIgdCBpbiB0aGlzKVwiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXNbdF0mJihlW3RdPXRoaXNbdF0pO3JldHVybiBlfX0obi5wcm90b3R5cGU9ZShcIi4vb2JqZWN0XCIpKS5sb2FkQXN5bmM9ZShcIi4vbG9hZFwiKSxuLnN1cHBvcnQ9ZShcIi4vc3VwcG9ydFwiKSxuLmRlZmF1bHRzPWUoXCIuL2RlZmF1bHRzXCIpLG4udmVyc2lvbj1cIjMuMTAuMFwiLG4ubG9hZEFzeW5jPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG5ldyBuKS5sb2FkQXN5bmMoZSx0KX0sbi5leHRlcm5hbD1lKFwiLi9leHRlcm5hbFwiKSx0LmV4cG9ydHM9bn0se1wiLi9kZWZhdWx0c1wiOjUsXCIuL2V4dGVybmFsXCI6NixcIi4vbG9hZFwiOjExLFwiLi9vYmplY3RcIjoxNSxcIi4vc3VwcG9ydFwiOjMwfV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgdT1lKFwiLi91dGlsc1wiKSxpPWUoXCIuL2V4dGVybmFsXCIpLG49ZShcIi4vdXRmOFwiKSxzPWUoXCIuL3ppcEVudHJpZXNcIiksYT1lKFwiLi9zdHJlYW0vQ3JjMzJQcm9iZVwiKSxsPWUoXCIuL25vZGVqc1V0aWxzXCIpO2Z1bmN0aW9uIGYobil7cmV0dXJuIG5ldyBpLlByb21pc2UoZnVuY3Rpb24oZSx0KXt2YXIgcj1uLmRlY29tcHJlc3NlZC5nZXRDb250ZW50V29ya2VyKCkucGlwZShuZXcgYSk7ci5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7dChlKX0pLm9uKFwiZW5kXCIsZnVuY3Rpb24oKXtyLnN0cmVhbUluZm8uY3JjMzIhPT1uLmRlY29tcHJlc3NlZC5jcmMzMj90KG5ldyBFcnJvcihcIkNvcnJ1cHRlZCB6aXAgOiBDUkMzMiBtaXNtYXRjaFwiKSk6ZSgpfSkucmVzdW1lKCl9KX10LmV4cG9ydHM9ZnVuY3Rpb24oZSxvKXt2YXIgaD10aGlzO3JldHVybiBvPXUuZXh0ZW5kKG98fHt9LHtiYXNlNjQ6ITEsY2hlY2tDUkMzMjohMSxvcHRpbWl6ZWRCaW5hcnlTdHJpbmc6ITEsY3JlYXRlRm9sZGVyczohMSxkZWNvZGVGaWxlTmFtZTpuLnV0ZjhkZWNvZGV9KSxsLmlzTm9kZSYmbC5pc1N0cmVhbShlKT9pLlByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkpTWmlwIGNhbid0IGFjY2VwdCBhIHN0cmVhbSB3aGVuIGxvYWRpbmcgYSB6aXAgZmlsZS5cIikpOnUucHJlcGFyZUNvbnRlbnQoXCJ0aGUgbG9hZGVkIHppcCBmaWxlXCIsZSwhMCxvLm9wdGltaXplZEJpbmFyeVN0cmluZyxvLmJhc2U2NCkudGhlbihmdW5jdGlvbihlKXt2YXIgdD1uZXcgcyhvKTtyZXR1cm4gdC5sb2FkKGUpLHR9KS50aGVuKGZ1bmN0aW9uKGUpe3ZhciB0PVtpLlByb21pc2UucmVzb2x2ZShlKV0scj1lLmZpbGVzO2lmKG8uY2hlY2tDUkMzMilmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl0LnB1c2goZihyW25dKSk7cmV0dXJuIGkuUHJvbWlzZS5hbGwodCl9KS50aGVuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnNoaWZ0KCkscj10LmZpbGVzLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXSxzPWkuZmlsZU5hbWVTdHIsYT11LnJlc29sdmUoaS5maWxlTmFtZVN0cik7aC5maWxlKGEsaS5kZWNvbXByZXNzZWQse2JpbmFyeTohMCxvcHRpbWl6ZWRCaW5hcnlTdHJpbmc6ITAsZGF0ZTppLmRhdGUsZGlyOmkuZGlyLGNvbW1lbnQ6aS5maWxlQ29tbWVudFN0ci5sZW5ndGg/aS5maWxlQ29tbWVudFN0cjpudWxsLHVuaXhQZXJtaXNzaW9uczppLnVuaXhQZXJtaXNzaW9ucyxkb3NQZXJtaXNzaW9uczppLmRvc1Blcm1pc3Npb25zLGNyZWF0ZUZvbGRlcnM6by5jcmVhdGVGb2xkZXJzfSksaS5kaXJ8fChoLmZpbGUoYSkudW5zYWZlT3JpZ2luYWxOYW1lPXMpfXJldHVybiB0LnppcENvbW1lbnQubGVuZ3RoJiYoaC5jb21tZW50PXQuemlwQ29tbWVudCksaH0pfX0se1wiLi9leHRlcm5hbFwiOjYsXCIuL25vZGVqc1V0aWxzXCI6MTQsXCIuL3N0cmVhbS9DcmMzMlByb2JlXCI6MjUsXCIuL3V0ZjhcIjozMSxcIi4vdXRpbHNcIjozMixcIi4vemlwRW50cmllc1wiOjMzfV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi4vdXRpbHNcIiksaT1lKFwiLi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIik7ZnVuY3Rpb24gcyhlLHQpe2kuY2FsbCh0aGlzLFwiTm9kZWpzIHN0cmVhbSBpbnB1dCBhZGFwdGVyIGZvciBcIitlKSx0aGlzLl91cHN0cmVhbUVuZGVkPSExLHRoaXMuX2JpbmRTdHJlYW0odCl9bi5pbmhlcml0cyhzLGkpLHMucHJvdG90eXBlLl9iaW5kU3RyZWFtPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7KHRoaXMuX3N0cmVhbT1lKS5wYXVzZSgpLGUub24oXCJkYXRhXCIsZnVuY3Rpb24oZSl7dC5wdXNoKHtkYXRhOmUsbWV0YTp7cGVyY2VudDowfX0pfSkub24oXCJlcnJvclwiLGZ1bmN0aW9uKGUpe3QuaXNQYXVzZWQ/dGhpcy5nZW5lcmF0ZWRFcnJvcj1lOnQuZXJyb3IoZSl9KS5vbihcImVuZFwiLGZ1bmN0aW9uKCl7dC5pc1BhdXNlZD90Ll91cHN0cmVhbUVuZGVkPSEwOnQuZW5kKCl9KX0scy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWkucHJvdG90eXBlLnBhdXNlLmNhbGwodGhpcykmJih0aGlzLl9zdHJlYW0ucGF1c2UoKSwhMCl9LHMucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3JldHVybiEhaS5wcm90b3R5cGUucmVzdW1lLmNhbGwodGhpcykmJih0aGlzLl91cHN0cmVhbUVuZGVkP3RoaXMuZW5kKCk6dGhpcy5fc3RyZWFtLnJlc3VtZSgpLCEwKX0sdC5leHBvcnRzPXN9LHtcIi4uL3N0cmVhbS9HZW5lcmljV29ya2VyXCI6MjgsXCIuLi91dGlsc1wiOjMyfV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1lKFwicmVhZGFibGUtc3RyZWFtXCIpLlJlYWRhYmxlO2Z1bmN0aW9uIG4oZSx0LHIpe2kuY2FsbCh0aGlzLHQpLHRoaXMuX2hlbHBlcj1lO3ZhciBuPXRoaXM7ZS5vbihcImRhdGFcIixmdW5jdGlvbihlLHQpe24ucHVzaChlKXx8bi5faGVscGVyLnBhdXNlKCksciYmcih0KX0pLm9uKFwiZXJyb3JcIixmdW5jdGlvbihlKXtuLmVtaXQoXCJlcnJvclwiLGUpfSkub24oXCJlbmRcIixmdW5jdGlvbigpe24ucHVzaChudWxsKX0pfWUoXCIuLi91dGlsc1wiKS5pbmhlcml0cyhuLGkpLG4ucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKCl7dGhpcy5faGVscGVyLnJlc3VtZSgpfSx0LmV4cG9ydHM9bn0se1wiLi4vdXRpbHNcIjozMixcInJlYWRhYmxlLXN0cmVhbVwiOjE2fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9e2lzTm9kZTpcInVuZGVmaW5lZFwiIT10eXBlb2YgQnVmZmVyLG5ld0J1ZmZlckZyb206ZnVuY3Rpb24oZSx0KXtpZihCdWZmZXIuZnJvbSYmQnVmZmVyLmZyb20hPT1VaW50OEFycmF5LmZyb20pcmV0dXJuIEJ1ZmZlci5mcm9tKGUsdCk7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdUaGUgXCJkYXRhXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4gbmV3IEJ1ZmZlcihlLHQpfSxhbGxvY0J1ZmZlcjpmdW5jdGlvbihlKXtpZihCdWZmZXIuYWxsb2MpcmV0dXJuIEJ1ZmZlci5hbGxvYyhlKTt2YXIgdD1uZXcgQnVmZmVyKGUpO3JldHVybiB0LmZpbGwoMCksdH0saXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihlKX0saXNTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUub24mJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUucGF1c2UmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVzdW1lfX19LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHMoZSx0LHIpe3ZhciBuLGk9dS5nZXRUeXBlT2YodCkscz11LmV4dGVuZChyfHx7fSxmKTtzLmRhdGU9cy5kYXRlfHxuZXcgRGF0ZSxudWxsIT09cy5jb21wcmVzc2lvbiYmKHMuY29tcHJlc3Npb249cy5jb21wcmVzc2lvbi50b1VwcGVyQ2FzZSgpKSxcInN0cmluZ1wiPT10eXBlb2Ygcy51bml4UGVybWlzc2lvbnMmJihzLnVuaXhQZXJtaXNzaW9ucz1wYXJzZUludChzLnVuaXhQZXJtaXNzaW9ucyw4KSkscy51bml4UGVybWlzc2lvbnMmJjE2Mzg0JnMudW5peFBlcm1pc3Npb25zJiYocy5kaXI9ITApLHMuZG9zUGVybWlzc2lvbnMmJjE2JnMuZG9zUGVybWlzc2lvbnMmJihzLmRpcj0hMCkscy5kaXImJihlPWcoZSkpLHMuY3JlYXRlRm9sZGVycyYmKG49XyhlKSkmJmIuY2FsbCh0aGlzLG4sITApO3ZhciBhPVwic3RyaW5nXCI9PT1pJiYhMT09PXMuYmluYXJ5JiYhMT09PXMuYmFzZTY0O3ImJnZvaWQgMCE9PXIuYmluYXJ5fHwocy5iaW5hcnk9IWEpLCh0IGluc3RhbmNlb2YgYyYmMD09PXQudW5jb21wcmVzc2VkU2l6ZXx8cy5kaXJ8fCF0fHwwPT09dC5sZW5ndGgpJiYocy5iYXNlNjQ9ITEscy5iaW5hcnk9ITAsdD1cIlwiLHMuY29tcHJlc3Npb249XCJTVE9SRVwiLGk9XCJzdHJpbmdcIik7dmFyIG89bnVsbDtvPXQgaW5zdGFuY2VvZiBjfHx0IGluc3RhbmNlb2YgbD90OnAuaXNOb2RlJiZwLmlzU3RyZWFtKHQpP25ldyBtKGUsdCk6dS5wcmVwYXJlQ29udGVudChlLHQscy5iaW5hcnkscy5vcHRpbWl6ZWRCaW5hcnlTdHJpbmcscy5iYXNlNjQpO3ZhciBoPW5ldyBkKGUsbyxzKTt0aGlzLmZpbGVzW2VdPWh9dmFyIGk9ZShcIi4vdXRmOFwiKSx1PWUoXCIuL3V0aWxzXCIpLGw9ZShcIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIiksYT1lKFwiLi9zdHJlYW0vU3RyZWFtSGVscGVyXCIpLGY9ZShcIi4vZGVmYXVsdHNcIiksYz1lKFwiLi9jb21wcmVzc2VkT2JqZWN0XCIpLGQ9ZShcIi4vemlwT2JqZWN0XCIpLG89ZShcIi4vZ2VuZXJhdGVcIikscD1lKFwiLi9ub2RlanNVdGlsc1wiKSxtPWUoXCIuL25vZGVqcy9Ob2RlanNTdHJlYW1JbnB1dEFkYXB0ZXJcIiksXz1mdW5jdGlvbihlKXtcIi9cIj09PWUuc2xpY2UoLTEpJiYoZT1lLnN1YnN0cmluZygwLGUubGVuZ3RoLTEpKTt2YXIgdD1lLmxhc3RJbmRleE9mKFwiL1wiKTtyZXR1cm4gMDx0P2Uuc3Vic3RyaW5nKDAsdCk6XCJcIn0sZz1mdW5jdGlvbihlKXtyZXR1cm5cIi9cIiE9PWUuc2xpY2UoLTEpJiYoZSs9XCIvXCIpLGV9LGI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD12b2lkIDAhPT10P3Q6Zi5jcmVhdGVGb2xkZXJzLGU9ZyhlKSx0aGlzLmZpbGVzW2VdfHxzLmNhbGwodGhpcyxlLG51bGwse2RpcjohMCxjcmVhdGVGb2xkZXJzOnR9KSx0aGlzLmZpbGVzW2VdfTtmdW5jdGlvbiBoKGUpe3JldHVyblwiW29iamVjdCBSZWdFeHBdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIG49e2xvYWQ6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG1ldGhvZCBoYXMgYmVlbiByZW1vdmVkIGluIEpTWmlwIDMuMCwgcGxlYXNlIGNoZWNrIHRoZSB1cGdyYWRlIGd1aWRlLlwiKX0sZm9yRWFjaDpmdW5jdGlvbihlKXt2YXIgdCxyLG47Zm9yKHQgaW4gdGhpcy5maWxlcyluPXRoaXMuZmlsZXNbdF0sKHI9dC5zbGljZSh0aGlzLnJvb3QubGVuZ3RoLHQubGVuZ3RoKSkmJnQuc2xpY2UoMCx0aGlzLnJvb3QubGVuZ3RoKT09PXRoaXMucm9vdCYmZShyLG4pfSxmaWx0ZXI6ZnVuY3Rpb24ocil7dmFyIG49W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihlLHQpe3IoZSx0KSYmbi5wdXNoKHQpfSksbn0sZmlsZTpmdW5jdGlvbihlLHQscil7aWYoMSE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9dGhpcy5yb290K2Uscy5jYWxsKHRoaXMsZSx0LHIpLHRoaXM7aWYoaChlKSl7dmFyIG49ZTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4hdC5kaXImJm4udGVzdChlKX0pfXZhciBpPXRoaXMuZmlsZXNbdGhpcy5yb290K2VdO3JldHVybiBpJiYhaS5kaXI/aTpudWxsfSxmb2xkZXI6ZnVuY3Rpb24ocil7aWYoIXIpcmV0dXJuIHRoaXM7aWYoaChyKSlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5kaXImJnIudGVzdChlKX0pO3ZhciBlPXRoaXMucm9vdCtyLHQ9Yi5jYWxsKHRoaXMsZSksbj10aGlzLmNsb25lKCk7cmV0dXJuIG4ucm9vdD10Lm5hbWUsbn0scmVtb3ZlOmZ1bmN0aW9uKHIpe3I9dGhpcy5yb290K3I7dmFyIGU9dGhpcy5maWxlc1tyXTtpZihlfHwoXCIvXCIhPT1yLnNsaWNlKC0xKSYmKHIrPVwiL1wiKSxlPXRoaXMuZmlsZXNbcl0pLGUmJiFlLmRpcilkZWxldGUgdGhpcy5maWxlc1tyXTtlbHNlIGZvcih2YXIgdD10aGlzLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiB0Lm5hbWUuc2xpY2UoMCxyLmxlbmd0aCk9PT1yfSksbj0wO248dC5sZW5ndGg7bisrKWRlbGV0ZSB0aGlzLmZpbGVzW3Rbbl0ubmFtZV07cmV0dXJuIHRoaXN9LGdlbmVyYXRlOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcIlRoaXMgbWV0aG9kIGhhcyBiZWVuIHJlbW92ZWQgaW4gSlNaaXAgMy4wLCBwbGVhc2UgY2hlY2sgdGhlIHVwZ3JhZGUgZ3VpZGUuXCIpfSxnZW5lcmF0ZUludGVybmFsU3RyZWFtOmZ1bmN0aW9uKGUpe3ZhciB0LHI9e307dHJ5e2lmKChyPXUuZXh0ZW5kKGV8fHt9LHtzdHJlYW1GaWxlczohMSxjb21wcmVzc2lvbjpcIlNUT1JFXCIsY29tcHJlc3Npb25PcHRpb25zOm51bGwsdHlwZTpcIlwiLHBsYXRmb3JtOlwiRE9TXCIsY29tbWVudDpudWxsLG1pbWVUeXBlOlwiYXBwbGljYXRpb24vemlwXCIsZW5jb2RlRmlsZU5hbWU6aS51dGY4ZW5jb2RlfSkpLnR5cGU9ci50eXBlLnRvTG93ZXJDYXNlKCksci5jb21wcmVzc2lvbj1yLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCksXCJiaW5hcnlzdHJpbmdcIj09PXIudHlwZSYmKHIudHlwZT1cInN0cmluZ1wiKSwhci50eXBlKXRocm93IG5ldyBFcnJvcihcIk5vIG91dHB1dCB0eXBlIHNwZWNpZmllZC5cIik7dS5jaGVja1N1cHBvcnQoci50eXBlKSxcImRhcndpblwiIT09ci5wbGF0Zm9ybSYmXCJmcmVlYnNkXCIhPT1yLnBsYXRmb3JtJiZcImxpbnV4XCIhPT1yLnBsYXRmb3JtJiZcInN1bm9zXCIhPT1yLnBsYXRmb3JtfHwoci5wbGF0Zm9ybT1cIlVOSVhcIiksXCJ3aW4zMlwiPT09ci5wbGF0Zm9ybSYmKHIucGxhdGZvcm09XCJET1NcIik7dmFyIG49ci5jb21tZW50fHx0aGlzLmNvbW1lbnR8fFwiXCI7dD1vLmdlbmVyYXRlV29ya2VyKHRoaXMscixuKX1jYXRjaChlKXsodD1uZXcgbChcImVycm9yXCIpKS5lcnJvcihlKX1yZXR1cm4gbmV3IGEodCxyLnR5cGV8fFwic3RyaW5nXCIsci5taW1lVHlwZSl9LGdlbmVyYXRlQXN5bmM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5nZW5lcmF0ZUludGVybmFsU3RyZWFtKGUpLmFjY3VtdWxhdGUodCl9LGdlbmVyYXRlTm9kZVN0cmVhbTpmdW5jdGlvbihlLHQpe3JldHVybihlPWV8fHt9KS50eXBlfHwoZS50eXBlPVwibm9kZWJ1ZmZlclwiKSx0aGlzLmdlbmVyYXRlSW50ZXJuYWxTdHJlYW0oZSkudG9Ob2RlanNTdHJlYW0odCl9fTt0LmV4cG9ydHM9bn0se1wiLi9jb21wcmVzc2VkT2JqZWN0XCI6MixcIi4vZGVmYXVsdHNcIjo1LFwiLi9nZW5lcmF0ZVwiOjksXCIuL25vZGVqcy9Ob2RlanNTdHJlYW1JbnB1dEFkYXB0ZXJcIjoxMixcIi4vbm9kZWpzVXRpbHNcIjoxNCxcIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIjoyOCxcIi4vc3RyZWFtL1N0cmVhbUhlbHBlclwiOjI5LFwiLi91dGY4XCI6MzEsXCIuL3V0aWxzXCI6MzIsXCIuL3ppcE9iamVjdFwiOjM1fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZShcInN0cmVhbVwiKX0se3N0cmVhbTp2b2lkIDB9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuL0RhdGFSZWFkZXJcIik7ZnVuY3Rpb24gaShlKXtuLmNhbGwodGhpcyxlKTtmb3IodmFyIHQ9MDt0PHRoaXMuZGF0YS5sZW5ndGg7dCsrKWVbdF09MjU1JmVbdF19ZShcIi4uL3V0aWxzXCIpLmluaGVyaXRzKGksbiksaS5wcm90b3R5cGUuYnl0ZUF0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRhdGFbdGhpcy56ZXJvK2VdfSxpLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25hdHVyZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5jaGFyQ29kZUF0KDApLHI9ZS5jaGFyQ29kZUF0KDEpLG49ZS5jaGFyQ29kZUF0KDIpLGk9ZS5jaGFyQ29kZUF0KDMpLHM9dGhpcy5sZW5ndGgtNDswPD1zOy0tcylpZih0aGlzLmRhdGFbc109PT10JiZ0aGlzLmRhdGFbcysxXT09PXImJnRoaXMuZGF0YVtzKzJdPT09biYmdGhpcy5kYXRhW3MrM109PT1pKXJldHVybiBzLXRoaXMuemVybztyZXR1cm4tMX0saS5wcm90b3R5cGUucmVhZEFuZENoZWNrU2lnbmF0dXJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hhckNvZGVBdCgwKSxyPWUuY2hhckNvZGVBdCgxKSxuPWUuY2hhckNvZGVBdCgyKSxpPWUuY2hhckNvZGVBdCgzKSxzPXRoaXMucmVhZERhdGEoNCk7cmV0dXJuIHQ9PT1zWzBdJiZyPT09c1sxXSYmbj09PXNbMl0mJmk9PT1zWzNdfSxpLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihlKXtpZih0aGlzLmNoZWNrT2Zmc2V0KGUpLDA9PT1lKXJldHVybltdO3ZhciB0PXRoaXMuZGF0YS5zbGljZSh0aGlzLnplcm8rdGhpcy5pbmRleCx0aGlzLnplcm8rdGhpcy5pbmRleCtlKTtyZXR1cm4gdGhpcy5pbmRleCs9ZSx0fSx0LmV4cG9ydHM9aX0se1wiLi4vdXRpbHNcIjozMixcIi4vRGF0YVJlYWRlclwiOjE4fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi4vdXRpbHNcIik7ZnVuY3Rpb24gaShlKXt0aGlzLmRhdGE9ZSx0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLmluZGV4PTAsdGhpcy56ZXJvPTB9aS5wcm90b3R5cGU9e2NoZWNrT2Zmc2V0OmZ1bmN0aW9uKGUpe3RoaXMuY2hlY2tJbmRleCh0aGlzLmluZGV4K2UpfSxjaGVja0luZGV4OmZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoPHRoaXMuemVybytlfHxlPDApdGhyb3cgbmV3IEVycm9yKFwiRW5kIG9mIGRhdGEgcmVhY2hlZCAoZGF0YSBsZW5ndGggPSBcIit0aGlzLmxlbmd0aCtcIiwgYXNrZWQgaW5kZXggPSBcIitlK1wiKS4gQ29ycnVwdGVkIHppcCA/XCIpfSxzZXRJbmRleDpmdW5jdGlvbihlKXt0aGlzLmNoZWNrSW5kZXgoZSksdGhpcy5pbmRleD1lfSxza2lwOmZ1bmN0aW9uKGUpe3RoaXMuc2V0SW5kZXgodGhpcy5pbmRleCtlKX0sYnl0ZUF0OmZ1bmN0aW9uKGUpe30scmVhZEludDpmdW5jdGlvbihlKXt2YXIgdCxyPTA7Zm9yKHRoaXMuY2hlY2tPZmZzZXQoZSksdD10aGlzLmluZGV4K2UtMTt0Pj10aGlzLmluZGV4O3QtLSlyPShyPDw4KSt0aGlzLmJ5dGVBdCh0KTtyZXR1cm4gdGhpcy5pbmRleCs9ZSxyfSxyZWFkU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBuLnRyYW5zZm9ybVRvKFwic3RyaW5nXCIsdGhpcy5yZWFkRGF0YShlKSl9LHJlYWREYXRhOmZ1bmN0aW9uKGUpe30sbGFzdEluZGV4T2ZTaWduYXR1cmU6ZnVuY3Rpb24oZSl7fSxyZWFkQW5kQ2hlY2tTaWduYXR1cmU6ZnVuY3Rpb24oZSl7fSxyZWFkRGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZEludCg0KTtyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoMTk4MCsoZT4+MjUmMTI3KSwoZT4+MjEmMTUpLTEsZT4+MTYmMzEsZT4+MTEmMzEsZT4+NSY2MywoMzEmZSk8PDEpKX19LHQuZXhwb3J0cz1pfSx7XCIuLi91dGlsc1wiOjMyfV0sMTk6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi9VaW50OEFycmF5UmVhZGVyXCIpO2Z1bmN0aW9uIGkoZSl7bi5jYWxsKHRoaXMsZSl9ZShcIi4uL3V0aWxzXCIpLmluaGVyaXRzKGksbiksaS5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oZSl7dGhpcy5jaGVja09mZnNldChlKTt2YXIgdD10aGlzLmRhdGEuc2xpY2UodGhpcy56ZXJvK3RoaXMuaW5kZXgsdGhpcy56ZXJvK3RoaXMuaW5kZXgrZSk7cmV0dXJuIHRoaXMuaW5kZXgrPWUsdH0sdC5leHBvcnRzPWl9LHtcIi4uL3V0aWxzXCI6MzIsXCIuL1VpbnQ4QXJyYXlSZWFkZXJcIjoyMX1dLDIwOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vRGF0YVJlYWRlclwiKTtmdW5jdGlvbiBpKGUpe24uY2FsbCh0aGlzLGUpfWUoXCIuLi91dGlsc1wiKS5pbmhlcml0cyhpLG4pLGkucHJvdG90eXBlLmJ5dGVBdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy56ZXJvK2UpfSxpLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25hdHVyZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kYXRhLmxhc3RJbmRleE9mKGUpLXRoaXMuemVyb30saS5wcm90b3R5cGUucmVhZEFuZENoZWNrU2lnbmF0dXJlPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5yZWFkRGF0YSg0KX0saS5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oZSl7dGhpcy5jaGVja09mZnNldChlKTt2YXIgdD10aGlzLmRhdGEuc2xpY2UodGhpcy56ZXJvK3RoaXMuaW5kZXgsdGhpcy56ZXJvK3RoaXMuaW5kZXgrZSk7cmV0dXJuIHRoaXMuaW5kZXgrPWUsdH0sdC5leHBvcnRzPWl9LHtcIi4uL3V0aWxzXCI6MzIsXCIuL0RhdGFSZWFkZXJcIjoxOH1dLDIxOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vQXJyYXlSZWFkZXJcIik7ZnVuY3Rpb24gaShlKXtuLmNhbGwodGhpcyxlKX1lKFwiLi4vdXRpbHNcIikuaW5oZXJpdHMoaSxuKSxpLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihlKXtpZih0aGlzLmNoZWNrT2Zmc2V0KGUpLDA9PT1lKXJldHVybiBuZXcgVWludDhBcnJheSgwKTt2YXIgdD10aGlzLmRhdGEuc3ViYXJyYXkodGhpcy56ZXJvK3RoaXMuaW5kZXgsdGhpcy56ZXJvK3RoaXMuaW5kZXgrZSk7cmV0dXJuIHRoaXMuaW5kZXgrPWUsdH0sdC5leHBvcnRzPWl9LHtcIi4uL3V0aWxzXCI6MzIsXCIuL0FycmF5UmVhZGVyXCI6MTd9XSwyMjpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuLi9zdXBwb3J0XCIpLHM9ZShcIi4vQXJyYXlSZWFkZXJcIiksYT1lKFwiLi9TdHJpbmdSZWFkZXJcIiksbz1lKFwiLi9Ob2RlQnVmZmVyUmVhZGVyXCIpLGg9ZShcIi4vVWludDhBcnJheVJlYWRlclwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5nZXRUeXBlT2YoZSk7cmV0dXJuIG4uY2hlY2tTdXBwb3J0KHQpLFwic3RyaW5nXCIhPT10fHxpLnVpbnQ4YXJyYXk/XCJub2RlYnVmZmVyXCI9PT10P25ldyBvKGUpOmkudWludDhhcnJheT9uZXcgaChuLnRyYW5zZm9ybVRvKFwidWludDhhcnJheVwiLGUpKTpuZXcgcyhuLnRyYW5zZm9ybVRvKFwiYXJyYXlcIixlKSk6bmV3IGEoZSl9fSx7XCIuLi9zdXBwb3J0XCI6MzAsXCIuLi91dGlsc1wiOjMyLFwiLi9BcnJheVJlYWRlclwiOjE3LFwiLi9Ob2RlQnVmZmVyUmVhZGVyXCI6MTksXCIuL1N0cmluZ1JlYWRlclwiOjIwLFwiLi9VaW50OEFycmF5UmVhZGVyXCI6MjF9XSwyMzpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3IuTE9DQUxfRklMRV9IRUFERVI9XCJQS1x1MDAwM1x1MDAwNFwiLHIuQ0VOVFJBTF9GSUxFX0hFQURFUj1cIlBLXHUwMDAxXHUwMDAyXCIsci5DRU5UUkFMX0RJUkVDVE9SWV9FTkQ9XCJQS1x1MDAwNVx1MDAwNlwiLHIuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUj1cIlBLXHUwMDA2XHUwMDA3XCIsci5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQ9XCJQS1x1MDAwNlx1MDAwNlwiLHIuREFUQV9ERVNDUklQVE9SPVwiUEtcdTAwMDdcXGJcIn0se31dLDI0OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vR2VuZXJpY1dvcmtlclwiKSxpPWUoXCIuLi91dGlsc1wiKTtmdW5jdGlvbiBzKGUpe24uY2FsbCh0aGlzLFwiQ29udmVydFdvcmtlciB0byBcIitlKSx0aGlzLmRlc3RUeXBlPWV9aS5pbmhlcml0cyhzLG4pLHMucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihlKXt0aGlzLnB1c2goe2RhdGE6aS50cmFuc2Zvcm1Ubyh0aGlzLmRlc3RUeXBlLGUuZGF0YSksbWV0YTplLm1ldGF9KX0sdC5leHBvcnRzPXN9LHtcIi4uL3V0aWxzXCI6MzIsXCIuL0dlbmVyaWNXb3JrZXJcIjoyOH1dLDI1OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZShcIi4vR2VuZXJpY1dvcmtlclwiKSxpPWUoXCIuLi9jcmMzMlwiKTtmdW5jdGlvbiBzKCl7bi5jYWxsKHRoaXMsXCJDcmMzMlByb2JlXCIpLHRoaXMud2l0aFN0cmVhbUluZm8oXCJjcmMzMlwiLDApfWUoXCIuLi91dGlsc1wiKS5pbmhlcml0cyhzLG4pLHMucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihlKXt0aGlzLnN0cmVhbUluZm8uY3JjMzI9aShlLmRhdGEsdGhpcy5zdHJlYW1JbmZvLmNyYzMyfHwwKSx0aGlzLnB1c2goZSl9LHQuZXhwb3J0cz1zfSx7XCIuLi9jcmMzMlwiOjQsXCIuLi91dGlsc1wiOjMyLFwiLi9HZW5lcmljV29ya2VyXCI6Mjh9XSwyNjpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuL0dlbmVyaWNXb3JrZXJcIik7ZnVuY3Rpb24gcyhlKXtpLmNhbGwodGhpcyxcIkRhdGFMZW5ndGhQcm9iZSBmb3IgXCIrZSksdGhpcy5wcm9wTmFtZT1lLHRoaXMud2l0aFN0cmVhbUluZm8oZSwwKX1uLmluaGVyaXRzKHMsaSkscy5wcm90b3R5cGUucHJvY2Vzc0NodW5rPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMuc3RyZWFtSW5mb1t0aGlzLnByb3BOYW1lXXx8MDt0aGlzLnN0cmVhbUluZm9bdGhpcy5wcm9wTmFtZV09dCtlLmRhdGEubGVuZ3RofWkucHJvdG90eXBlLnByb2Nlc3NDaHVuay5jYWxsKHRoaXMsZSl9LHQuZXhwb3J0cz1zfSx7XCIuLi91dGlsc1wiOjMyLFwiLi9HZW5lcmljV29ya2VyXCI6Mjh9XSwyNzpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuL0dlbmVyaWNXb3JrZXJcIik7ZnVuY3Rpb24gcyhlKXtpLmNhbGwodGhpcyxcIkRhdGFXb3JrZXJcIik7dmFyIHQ9dGhpczt0aGlzLmRhdGFJc1JlYWR5PSExLHRoaXMuaW5kZXg9MCx0aGlzLm1heD0wLHRoaXMuZGF0YT1udWxsLHRoaXMudHlwZT1cIlwiLHRoaXMuX3RpY2tTY2hlZHVsZWQ9ITEsZS50aGVuKGZ1bmN0aW9uKGUpe3QuZGF0YUlzUmVhZHk9ITAsdC5kYXRhPWUsdC5tYXg9ZSYmZS5sZW5ndGh8fDAsdC50eXBlPW4uZ2V0VHlwZU9mKGUpLHQuaXNQYXVzZWR8fHQuX3RpY2tBbmRSZXBlYXQoKX0sZnVuY3Rpb24oZSl7dC5lcnJvcihlKX0pfW4uaW5oZXJpdHMocyxpKSxzLnByb3RvdHlwZS5jbGVhblVwPWZ1bmN0aW9uKCl7aS5wcm90b3R5cGUuY2xlYW5VcC5jYWxsKHRoaXMpLHRoaXMuZGF0YT1udWxsfSxzLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4hIWkucHJvdG90eXBlLnJlc3VtZS5jYWxsKHRoaXMpJiYoIXRoaXMuX3RpY2tTY2hlZHVsZWQmJnRoaXMuZGF0YUlzUmVhZHkmJih0aGlzLl90aWNrU2NoZWR1bGVkPSEwLG4uZGVsYXkodGhpcy5fdGlja0FuZFJlcGVhdCxbXSx0aGlzKSksITApfSxzLnByb3RvdHlwZS5fdGlja0FuZFJlcGVhdD1mdW5jdGlvbigpe3RoaXMuX3RpY2tTY2hlZHVsZWQ9ITEsdGhpcy5pc1BhdXNlZHx8dGhpcy5pc0ZpbmlzaGVkfHwodGhpcy5fdGljaygpLHRoaXMuaXNGaW5pc2hlZHx8KG4uZGVsYXkodGhpcy5fdGlja0FuZFJlcGVhdCxbXSx0aGlzKSx0aGlzLl90aWNrU2NoZWR1bGVkPSEwKSl9LHMucHJvdG90eXBlLl90aWNrPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1BhdXNlZHx8dGhpcy5pc0ZpbmlzaGVkKXJldHVybiExO3ZhciBlPW51bGwsdD1NYXRoLm1pbih0aGlzLm1heCx0aGlzLmluZGV4KzE2Mzg0KTtpZih0aGlzLmluZGV4Pj10aGlzLm1heClyZXR1cm4gdGhpcy5lbmQoKTtzd2l0Y2godGhpcy50eXBlKXtjYXNlXCJzdHJpbmdcIjplPXRoaXMuZGF0YS5zdWJzdHJpbmcodGhpcy5pbmRleCx0KTticmVhaztjYXNlXCJ1aW50OGFycmF5XCI6ZT10aGlzLmRhdGEuc3ViYXJyYXkodGhpcy5pbmRleCx0KTticmVhaztjYXNlXCJhcnJheVwiOmNhc2VcIm5vZGVidWZmZXJcIjplPXRoaXMuZGF0YS5zbGljZSh0aGlzLmluZGV4LHQpfXJldHVybiB0aGlzLmluZGV4PXQsdGhpcy5wdXNoKHtkYXRhOmUsbWV0YTp7cGVyY2VudDp0aGlzLm1heD90aGlzLmluZGV4L3RoaXMubWF4KjEwMDowfX0pfSx0LmV4cG9ydHM9c30se1wiLi4vdXRpbHNcIjozMixcIi4vR2VuZXJpY1dvcmtlclwiOjI4fV0sMjg6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKGUpe3RoaXMubmFtZT1lfHxcImRlZmF1bHRcIix0aGlzLnN0cmVhbUluZm89e30sdGhpcy5nZW5lcmF0ZWRFcnJvcj1udWxsLHRoaXMuZXh0cmFTdHJlYW1JbmZvPXt9LHRoaXMuaXNQYXVzZWQ9ITAsdGhpcy5pc0ZpbmlzaGVkPSExLHRoaXMuaXNMb2NrZWQ9ITEsdGhpcy5fbGlzdGVuZXJzPXtkYXRhOltdLGVuZDpbXSxlcnJvcjpbXX0sdGhpcy5wcmV2aW91cz1udWxsfW4ucHJvdG90eXBlPXtwdXNoOmZ1bmN0aW9uKGUpe3RoaXMuZW1pdChcImRhdGFcIixlKX0sZW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0ZpbmlzaGVkKXJldHVybiExO3RoaXMuZmx1c2goKTt0cnl7dGhpcy5lbWl0KFwiZW5kXCIpLHRoaXMuY2xlYW5VcCgpLHRoaXMuaXNGaW5pc2hlZD0hMH1jYXRjaChlKXt0aGlzLmVtaXQoXCJlcnJvclwiLGUpfXJldHVybiEwfSxlcnJvcjpmdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5pc0ZpbmlzaGVkJiYodGhpcy5pc1BhdXNlZD90aGlzLmdlbmVyYXRlZEVycm9yPWU6KHRoaXMuaXNGaW5pc2hlZD0hMCx0aGlzLmVtaXQoXCJlcnJvclwiLGUpLHRoaXMucHJldmlvdXMmJnRoaXMucHJldmlvdXMuZXJyb3IoZSksdGhpcy5jbGVhblVwKCkpLCEwKX0sb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzW2VdLnB1c2godCksdGhpc30sY2xlYW5VcDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtSW5mbz10aGlzLmdlbmVyYXRlZEVycm9yPXRoaXMuZXh0cmFTdHJlYW1JbmZvPW51bGwsdGhpcy5fbGlzdGVuZXJzPVtdfSxlbWl0OmZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fbGlzdGVuZXJzW2VdKWZvcih2YXIgcj0wO3I8dGhpcy5fbGlzdGVuZXJzW2VdLmxlbmd0aDtyKyspdGhpcy5fbGlzdGVuZXJzW2VdW3JdLmNhbGwodGhpcyx0KX0scGlwZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWdpc3RlclByZXZpb3VzKHRoaXMpfSxyZWdpc3RlclByZXZpb3VzOmZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNMb2NrZWQpdGhyb3cgbmV3IEVycm9yKFwiVGhlIHN0cmVhbSAnXCIrdGhpcytcIicgaGFzIGFscmVhZHkgYmVlbiB1c2VkLlwiKTt0aGlzLnN0cmVhbUluZm89ZS5zdHJlYW1JbmZvLHRoaXMubWVyZ2VTdHJlYW1JbmZvKCksdGhpcy5wcmV2aW91cz1lO3ZhciB0PXRoaXM7cmV0dXJuIGUub24oXCJkYXRhXCIsZnVuY3Rpb24oZSl7dC5wcm9jZXNzQ2h1bmsoZSl9KSxlLm9uKFwiZW5kXCIsZnVuY3Rpb24oKXt0LmVuZCgpfSksZS5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7dC5lcnJvcihlKX0pLHRoaXN9LHBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNQYXVzZWQmJiF0aGlzLmlzRmluaXNoZWQmJih0aGlzLmlzUGF1c2VkPSEwLHRoaXMucHJldmlvdXMmJnRoaXMucHJldmlvdXMucGF1c2UoKSwhMCl9LHJlc3VtZTpmdW5jdGlvbigpe2lmKCF0aGlzLmlzUGF1c2VkfHx0aGlzLmlzRmluaXNoZWQpcmV0dXJuITE7dmFyIGU9dGhpcy5pc1BhdXNlZD0hMTtyZXR1cm4gdGhpcy5nZW5lcmF0ZWRFcnJvciYmKHRoaXMuZXJyb3IodGhpcy5nZW5lcmF0ZWRFcnJvciksZT0hMCksdGhpcy5wcmV2aW91cyYmdGhpcy5wcmV2aW91cy5yZXN1bWUoKSwhZX0sZmx1c2g6ZnVuY3Rpb24oKXt9LHByb2Nlc3NDaHVuazpmdW5jdGlvbihlKXt0aGlzLnB1c2goZSl9LHdpdGhTdHJlYW1JbmZvOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZXh0cmFTdHJlYW1JbmZvW2VdPXQsdGhpcy5tZXJnZVN0cmVhbUluZm8oKSx0aGlzfSxtZXJnZVN0cmVhbUluZm86ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5leHRyYVN0cmVhbUluZm8pdGhpcy5leHRyYVN0cmVhbUluZm8uaGFzT3duUHJvcGVydHkoZSkmJih0aGlzLnN0cmVhbUluZm9bZV09dGhpcy5leHRyYVN0cmVhbUluZm9bZV0pfSxsb2NrOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0xvY2tlZCl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgc3RyZWFtICdcIit0aGlzK1wiJyBoYXMgYWxyZWFkeSBiZWVuIHVzZWQuXCIpO3RoaXMuaXNMb2NrZWQ9ITAsdGhpcy5wcmV2aW91cyYmdGhpcy5wcmV2aW91cy5sb2NrKCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9XCJXb3JrZXIgXCIrdGhpcy5uYW1lO3JldHVybiB0aGlzLnByZXZpb3VzP3RoaXMucHJldmlvdXMrXCIgLT4gXCIrZTplfX0sdC5leHBvcnRzPW59LHt9XSwyOTpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBoPWUoXCIuLi91dGlsc1wiKSxpPWUoXCIuL0NvbnZlcnRXb3JrZXJcIikscz1lKFwiLi9HZW5lcmljV29ya2VyXCIpLHU9ZShcIi4uL2Jhc2U2NFwiKSxuPWUoXCIuLi9zdXBwb3J0XCIpLGE9ZShcIi4uL2V4dGVybmFsXCIpLG89bnVsbDtpZihuLm5vZGVzdHJlYW0pdHJ5e289ZShcIi4uL25vZGVqcy9Ob2RlanNTdHJlYW1PdXRwdXRBZGFwdGVyXCIpfWNhdGNoKGUpe31mdW5jdGlvbiBsKGUsbyl7cmV0dXJuIG5ldyBhLlByb21pc2UoZnVuY3Rpb24odCxyKXt2YXIgbj1bXSxpPWUuX2ludGVybmFsVHlwZSxzPWUuX291dHB1dFR5cGUsYT1lLl9taW1lVHlwZTtlLm9uKFwiZGF0YVwiLGZ1bmN0aW9uKGUsdCl7bi5wdXNoKGUpLG8mJm8odCl9KS5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7bj1bXSxyKGUpfSkub24oXCJlbmRcIixmdW5jdGlvbigpe3RyeXt2YXIgZT1mdW5jdGlvbihlLHQscil7c3dpdGNoKGUpe2Nhc2VcImJsb2JcIjpyZXR1cm4gaC5uZXdCbG9iKGgudHJhbnNmb3JtVG8oXCJhcnJheWJ1ZmZlclwiLHQpLHIpO2Nhc2VcImJhc2U2NFwiOnJldHVybiB1LmVuY29kZSh0KTtkZWZhdWx0OnJldHVybiBoLnRyYW5zZm9ybVRvKGUsdCl9fShzLGZ1bmN0aW9uKGUsdCl7dmFyIHIsbj0wLGk9bnVsbCxzPTA7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylzKz10W3JdLmxlbmd0aDtzd2l0Y2goZSl7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHQuam9pbihcIlwiKTtjYXNlXCJhcnJheVwiOnJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLHQpO2Nhc2VcInVpbnQ4YXJyYXlcIjpmb3IoaT1uZXcgVWludDhBcnJheShzKSxyPTA7cjx0Lmxlbmd0aDtyKyspaS5zZXQodFtyXSxuKSxuKz10W3JdLmxlbmd0aDtyZXR1cm4gaTtjYXNlXCJub2RlYnVmZmVyXCI6cmV0dXJuIEJ1ZmZlci5jb25jYXQodCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJjb25jYXQgOiB1bnN1cHBvcnRlZCB0eXBlICdcIitlK1wiJ1wiKX19KGksbiksYSk7dChlKX1jYXRjaChlKXtyKGUpfW49W119KS5yZXN1bWUoKX0pfWZ1bmN0aW9uIGYoZSx0LHIpe3ZhciBuPXQ7c3dpdGNoKHQpe2Nhc2VcImJsb2JcIjpjYXNlXCJhcnJheWJ1ZmZlclwiOm49XCJ1aW50OGFycmF5XCI7YnJlYWs7Y2FzZVwiYmFzZTY0XCI6bj1cInN0cmluZ1wifXRyeXt0aGlzLl9pbnRlcm5hbFR5cGU9bix0aGlzLl9vdXRwdXRUeXBlPXQsdGhpcy5fbWltZVR5cGU9cixoLmNoZWNrU3VwcG9ydChuKSx0aGlzLl93b3JrZXI9ZS5waXBlKG5ldyBpKG4pKSxlLmxvY2soKX1jYXRjaChlKXt0aGlzLl93b3JrZXI9bmV3IHMoXCJlcnJvclwiKSx0aGlzLl93b3JrZXIuZXJyb3IoZSl9fWYucHJvdG90eXBlPXthY2N1bXVsYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBsKHRoaXMsZSl9LG9uOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztyZXR1cm5cImRhdGFcIj09PWU/dGhpcy5fd29ya2VyLm9uKGUsZnVuY3Rpb24oZSl7dC5jYWxsKHIsZS5kYXRhLGUubWV0YSl9KTp0aGlzLl93b3JrZXIub24oZSxmdW5jdGlvbigpe2guZGVsYXkodCxhcmd1bWVudHMscil9KSx0aGlzfSxyZXN1bWU6ZnVuY3Rpb24oKXtyZXR1cm4gaC5kZWxheSh0aGlzLl93b3JrZXIucmVzdW1lLFtdLHRoaXMuX3dvcmtlciksdGhpc30scGF1c2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd29ya2VyLnBhdXNlKCksdGhpc30sdG9Ob2RlanNTdHJlYW06ZnVuY3Rpb24oZSl7aWYoaC5jaGVja1N1cHBvcnQoXCJub2Rlc3RyZWFtXCIpLFwibm9kZWJ1ZmZlclwiIT09dGhpcy5fb3V0cHV0VHlwZSl0aHJvdyBuZXcgRXJyb3IodGhpcy5fb3V0cHV0VHlwZStcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgbWV0aG9kXCIpO3JldHVybiBuZXcgbyh0aGlzLHtvYmplY3RNb2RlOlwibm9kZWJ1ZmZlclwiIT09dGhpcy5fb3V0cHV0VHlwZX0sZSl9fSx0LmV4cG9ydHM9Zn0se1wiLi4vYmFzZTY0XCI6MSxcIi4uL2V4dGVybmFsXCI6NixcIi4uL25vZGVqcy9Ob2RlanNTdHJlYW1PdXRwdXRBZGFwdGVyXCI6MTMsXCIuLi9zdXBwb3J0XCI6MzAsXCIuLi91dGlsc1wiOjMyLFwiLi9Db252ZXJ0V29ya2VyXCI6MjQsXCIuL0dlbmVyaWNXb3JrZXJcIjoyOH1dLDMwOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7aWYoci5iYXNlNjQ9ITAsci5hcnJheT0hMCxyLnN0cmluZz0hMCxyLmFycmF5YnVmZmVyPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXksci5ub2RlYnVmZmVyPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBCdWZmZXIsci51aW50OGFycmF5PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OEFycmF5LFwidW5kZWZpbmVkXCI9PXR5cGVvZiBBcnJheUJ1ZmZlcilyLmJsb2I9ITE7ZWxzZXt2YXIgbj1uZXcgQXJyYXlCdWZmZXIoMCk7dHJ5e3IuYmxvYj0wPT09bmV3IEJsb2IoW25dLHt0eXBlOlwiYXBwbGljYXRpb24vemlwXCJ9KS5zaXplfWNhdGNoKGUpe3RyeXt2YXIgaT1uZXcoc2VsZi5CbG9iQnVpbGRlcnx8c2VsZi5XZWJLaXRCbG9iQnVpbGRlcnx8c2VsZi5Nb3pCbG9iQnVpbGRlcnx8c2VsZi5NU0Jsb2JCdWlsZGVyKTtpLmFwcGVuZChuKSxyLmJsb2I9MD09PWkuZ2V0QmxvYihcImFwcGxpY2F0aW9uL3ppcFwiKS5zaXplfWNhdGNoKGUpe3IuYmxvYj0hMX19fXRyeXtyLm5vZGVzdHJlYW09ISFlKFwicmVhZGFibGUtc3RyZWFtXCIpLlJlYWRhYmxlfWNhdGNoKGUpe3Iubm9kZXN0cmVhbT0hMX19LHtcInJlYWRhYmxlLXN0cmVhbVwiOjE2fV0sMzE6W2Z1bmN0aW9uKGUsdCxzKXtcInVzZSBzdHJpY3RcIjtmb3IodmFyIG89ZShcIi4vdXRpbHNcIiksaD1lKFwiLi9zdXBwb3J0XCIpLHI9ZShcIi4vbm9kZWpzVXRpbHNcIiksbj1lKFwiLi9zdHJlYW0vR2VuZXJpY1dvcmtlclwiKSx1PW5ldyBBcnJheSgyNTYpLGk9MDtpPDI1NjtpKyspdVtpXT0yNTI8PWk/NjoyNDg8PWk/NToyNDA8PWk/NDoyMjQ8PWk/MzoxOTI8PWk/MjoxO3VbMjU0XT11WzI1NF09MTtmdW5jdGlvbiBhKCl7bi5jYWxsKHRoaXMsXCJ1dGYtOCBkZWNvZGVcIiksdGhpcy5sZWZ0T3Zlcj1udWxsfWZ1bmN0aW9uIGwoKXtuLmNhbGwodGhpcyxcInV0Zi04IGVuY29kZVwiKX1zLnV0ZjhlbmNvZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGgubm9kZWJ1ZmZlcj9yLm5ld0J1ZmZlckZyb20oZSxcInV0Zi04XCIpOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLHMsYT1lLmxlbmd0aCxvPTA7Zm9yKGk9MDtpPGE7aSsrKTU1Mjk2PT0oNjQ1MTImKHI9ZS5jaGFyQ29kZUF0KGkpKSkmJmkrMTxhJiY1NjMyMD09KDY0NTEyJihuPWUuY2hhckNvZGVBdChpKzEpKSkmJihyPTY1NTM2KyhyLTU1Mjk2PDwxMCkrKG4tNTYzMjApLGkrKyksbys9cjwxMjg/MTpyPDIwNDg/MjpyPDY1NTM2PzM6NDtmb3IodD1oLnVpbnQ4YXJyYXk/bmV3IFVpbnQ4QXJyYXkobyk6bmV3IEFycmF5KG8pLGk9cz0wO3M8bztpKyspNTUyOTY9PSg2NDUxMiYocj1lLmNoYXJDb2RlQXQoaSkpKSYmaSsxPGEmJjU2MzIwPT0oNjQ1MTImKG49ZS5jaGFyQ29kZUF0KGkrMSkpKSYmKHI9NjU1MzYrKHItNTUyOTY8PDEwKSsobi01NjMyMCksaSsrKSxyPDEyOD90W3MrK109cjoocjwyMDQ4P3RbcysrXT0xOTJ8cj4+PjY6KHI8NjU1MzY/dFtzKytdPTIyNHxyPj4+MTI6KHRbcysrXT0yNDB8cj4+PjE4LHRbcysrXT0xMjh8cj4+PjEyJjYzKSx0W3MrK109MTI4fHI+Pj42JjYzKSx0W3MrK109MTI4fDYzJnIpO3JldHVybiB0fShlKX0scy51dGY4ZGVjb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBoLm5vZGVidWZmZXI/by50cmFuc2Zvcm1UbyhcIm5vZGVidWZmZXJcIixlKS50b1N0cmluZyhcInV0Zi04XCIpOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLHM9ZS5sZW5ndGgsYT1uZXcgQXJyYXkoMipzKTtmb3IodD1yPTA7dDxzOylpZigobj1lW3QrK10pPDEyOClhW3IrK109bjtlbHNlIGlmKDQ8KGk9dVtuXSkpYVtyKytdPTY1NTMzLHQrPWktMTtlbHNle2ZvcihuJj0yPT09aT8zMTozPT09aT8xNTo3OzE8aSYmdDxzOyluPW48PDZ8NjMmZVt0KytdLGktLTsxPGk/YVtyKytdPTY1NTMzOm48NjU1MzY/YVtyKytdPW46KG4tPTY1NTM2LGFbcisrXT01NTI5NnxuPj4xMCYxMDIzLGFbcisrXT01NjMyMHwxMDIzJm4pfXJldHVybiBhLmxlbmd0aCE9PXImJihhLnN1YmFycmF5P2E9YS5zdWJhcnJheSgwLHIpOmEubGVuZ3RoPXIpLG8uYXBwbHlGcm9tQ2hhckNvZGUoYSl9KGU9by50cmFuc2Zvcm1UbyhoLnVpbnQ4YXJyYXk/XCJ1aW50OGFycmF5XCI6XCJhcnJheVwiLGUpKX0sby5pbmhlcml0cyhhLG4pLGEucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihlKXt2YXIgdD1vLnRyYW5zZm9ybVRvKGgudWludDhhcnJheT9cInVpbnQ4YXJyYXlcIjpcImFycmF5XCIsZS5kYXRhKTtpZih0aGlzLmxlZnRPdmVyJiZ0aGlzLmxlZnRPdmVyLmxlbmd0aCl7aWYoaC51aW50OGFycmF5KXt2YXIgcj10Oyh0PW5ldyBVaW50OEFycmF5KHIubGVuZ3RoK3RoaXMubGVmdE92ZXIubGVuZ3RoKSkuc2V0KHRoaXMubGVmdE92ZXIsMCksdC5zZXQocix0aGlzLmxlZnRPdmVyLmxlbmd0aCl9ZWxzZSB0PXRoaXMubGVmdE92ZXIuY29uY2F0KHQpO3RoaXMubGVmdE92ZXI9bnVsbH12YXIgbj1mdW5jdGlvbihlLHQpe3ZhciByO2ZvcigodD10fHxlLmxlbmd0aCk+ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSxyPXQtMTswPD1yJiYxMjg9PSgxOTImZVtyXSk7KXItLTtyZXR1cm4gcjwwP3Q6MD09PXI/dDpyK3VbZVtyXV0+dD9yOnR9KHQpLGk9dDtuIT09dC5sZW5ndGgmJihoLnVpbnQ4YXJyYXk/KGk9dC5zdWJhcnJheSgwLG4pLHRoaXMubGVmdE92ZXI9dC5zdWJhcnJheShuLHQubGVuZ3RoKSk6KGk9dC5zbGljZSgwLG4pLHRoaXMubGVmdE92ZXI9dC5zbGljZShuLHQubGVuZ3RoKSkpLHRoaXMucHVzaCh7ZGF0YTpzLnV0ZjhkZWNvZGUoaSksbWV0YTplLm1ldGF9KX0sYS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXt0aGlzLmxlZnRPdmVyJiZ0aGlzLmxlZnRPdmVyLmxlbmd0aCYmKHRoaXMucHVzaCh7ZGF0YTpzLnV0ZjhkZWNvZGUodGhpcy5sZWZ0T3ZlciksbWV0YTp7fX0pLHRoaXMubGVmdE92ZXI9bnVsbCl9LHMuVXRmOERlY29kZVdvcmtlcj1hLG8uaW5oZXJpdHMobCxuKSxsLnByb3RvdHlwZS5wcm9jZXNzQ2h1bms9ZnVuY3Rpb24oZSl7dGhpcy5wdXNoKHtkYXRhOnMudXRmOGVuY29kZShlLmRhdGEpLG1ldGE6ZS5tZXRhfSl9LHMuVXRmOEVuY29kZVdvcmtlcj1sfSx7XCIuL25vZGVqc1V0aWxzXCI6MTQsXCIuL3N0cmVhbS9HZW5lcmljV29ya2VyXCI6MjgsXCIuL3N1cHBvcnRcIjozMCxcIi4vdXRpbHNcIjozMn1dLDMyOltmdW5jdGlvbihlLHQsYSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG89ZShcIi4vc3VwcG9ydFwiKSxoPWUoXCIuL2Jhc2U2NFwiKSxyPWUoXCIuL25vZGVqc1V0aWxzXCIpLHU9ZShcIi4vZXh0ZXJuYWxcIik7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZX1mdW5jdGlvbiBsKGUsdCl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDsrK3IpdFtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiB0fWUoXCJzZXRpbW1lZGlhdGVcIiksYS5uZXdCbG9iPWZ1bmN0aW9uKHQscil7YS5jaGVja1N1cHBvcnQoXCJibG9iXCIpO3RyeXtyZXR1cm4gbmV3IEJsb2IoW3RdLHt0eXBlOnJ9KX1jYXRjaChlKXt0cnl7dmFyIG49bmV3KHNlbGYuQmxvYkJ1aWxkZXJ8fHNlbGYuV2ViS2l0QmxvYkJ1aWxkZXJ8fHNlbGYuTW96QmxvYkJ1aWxkZXJ8fHNlbGYuTVNCbG9iQnVpbGRlcik7cmV0dXJuIG4uYXBwZW5kKHQpLG4uZ2V0QmxvYihyKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoXCJCdWcgOiBjYW4ndCBjb25zdHJ1Y3QgdGhlIEJsb2IuXCIpfX19O3ZhciBpPXtzdHJpbmdpZnlCeUNodW5rOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bXSxpPTAscz1lLmxlbmd0aDtpZihzPD1yKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Zm9yKDtpPHM7KVwiYXJyYXlcIj09PXR8fFwibm9kZWJ1ZmZlclwiPT09dD9uLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUuc2xpY2UoaSxNYXRoLm1pbihpK3IscykpKSk6bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlLnN1YmFycmF5KGksTWF0aC5taW4oaStyLHMpKSkpLGkrPXI7cmV0dXJuIG4uam9pbihcIlwiKX0sc3RyaW5naWZ5QnlDaGFyOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1cIlwiLHI9MDtyPGUubGVuZ3RoO3IrKyl0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbcl0pO3JldHVybiB0fSxhcHBseUNhbkJlVXNlZDp7dWludDhhcnJheTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gby51aW50OGFycmF5JiYxPT09U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50OEFycmF5KDEpKS5sZW5ndGh9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLG5vZGVidWZmZXI6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG8ubm9kZWJ1ZmZlciYmMT09PVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxyLmFsbG9jQnVmZmVyKDEpKS5sZW5ndGh9Y2F0Y2goZSl7cmV0dXJuITF9fSgpfX07ZnVuY3Rpb24gcyhlKXt2YXIgdD02NTUzNixyPWEuZ2V0VHlwZU9mKGUpLG49ITA7aWYoXCJ1aW50OGFycmF5XCI9PT1yP249aS5hcHBseUNhbkJlVXNlZC51aW50OGFycmF5Olwibm9kZWJ1ZmZlclwiPT09ciYmKG49aS5hcHBseUNhbkJlVXNlZC5ub2RlYnVmZmVyKSxuKWZvcig7MTx0Oyl0cnl7cmV0dXJuIGkuc3RyaW5naWZ5QnlDaHVuayhlLHIsdCl9Y2F0Y2goZSl7dD1NYXRoLmZsb29yKHQvMil9cmV0dXJuIGkuc3RyaW5naWZ5QnlDaGFyKGUpfWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0W3JdPWVbcl07cmV0dXJuIHR9YS5hcHBseUZyb21DaGFyQ29kZT1zO3ZhciBjPXt9O2Muc3RyaW5nPXtzdHJpbmc6bixhcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gbChlLG5ldyBBcnJheShlLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gYy5zdHJpbmcudWludDhhcnJheShlKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSxuZXcgVWludDhBcnJheShlLmxlbmd0aCkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBsKGUsci5hbGxvY0J1ZmZlcihlLmxlbmd0aCkpfX0sYy5hcnJheT17c3RyaW5nOnMsYXJyYXk6bixhcnJheWJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSkuYnVmZmVyfSx1aW50OGFycmF5OmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgVWludDhBcnJheShlKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gci5uZXdCdWZmZXJGcm9tKGUpfX0sYy5hcnJheWJ1ZmZlcj17c3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBzKG5ldyBVaW50OEFycmF5KGUpKX0sYXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIGYobmV3IFVpbnQ4QXJyYXkoZSksbmV3IEFycmF5KGUuYnl0ZUxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpuLHVpbnQ4YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGUpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiByLm5ld0J1ZmZlckZyb20obmV3IFVpbnQ4QXJyYXkoZSkpfX0sYy51aW50OGFycmF5PXtzdHJpbmc6cyxhcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gZihlLG5ldyBBcnJheShlLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5idWZmZXJ9LHVpbnQ4YXJyYXk6bixub2RlYnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiByLm5ld0J1ZmZlckZyb20oZSl9fSxjLm5vZGVidWZmZXI9e3N0cmluZzpzLGFycmF5OmZ1bmN0aW9uKGUpe3JldHVybiBmKGUsbmV3IEFycmF5KGUubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBjLm5vZGVidWZmZXIudWludDhhcnJheShlKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSxuZXcgVWludDhBcnJheShlLmxlbmd0aCkpfSxub2RlYnVmZmVyOm59LGEudHJhbnNmb3JtVG89ZnVuY3Rpb24oZSx0KXtpZih0PXR8fFwiXCIsIWUpcmV0dXJuIHQ7YS5jaGVja1N1cHBvcnQoZSk7dmFyIHI9YS5nZXRUeXBlT2YodCk7cmV0dXJuIGNbcl1bZV0odCl9LGEucmVzb2x2ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5zcGxpdChcIi9cIikscj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07XCIuXCI9PT1pfHxcIlwiPT09aSYmMCE9PW4mJm4hPT10Lmxlbmd0aC0xfHwoXCIuLlwiPT09aT9yLnBvcCgpOnIucHVzaChpKSl9cmV0dXJuIHIuam9pbihcIi9cIil9LGEuZ2V0VHlwZU9mPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP1wic3RyaW5nXCI6XCJbb2JqZWN0IEFycmF5XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpP1wiYXJyYXlcIjpvLm5vZGVidWZmZXImJnIuaXNCdWZmZXIoZSk/XCJub2RlYnVmZmVyXCI6by51aW50OGFycmF5JiZlIGluc3RhbmNlb2YgVWludDhBcnJheT9cInVpbnQ4YXJyYXlcIjpvLmFycmF5YnVmZmVyJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/XCJhcnJheWJ1ZmZlclwiOnZvaWQgMH0sYS5jaGVja1N1cHBvcnQ9ZnVuY3Rpb24oZSl7aWYoIW9bZS50b0xvd2VyQ2FzZSgpXSl0aHJvdyBuZXcgRXJyb3IoZStcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGxhdGZvcm1cIil9LGEuTUFYX1ZBTFVFXzE2QklUUz02NTUzNSxhLk1BWF9WQUxVRV8zMkJJVFM9LTEsYS5wcmV0dHk9ZnVuY3Rpb24oZSl7dmFyIHQscixuPVwiXCI7Zm9yKHI9MDtyPChlfHxcIlwiKS5sZW5ndGg7cisrKW4rPVwiXFxcXHhcIisoKHQ9ZS5jaGFyQ29kZUF0KHIpKTwxNj9cIjBcIjpcIlwiKSt0LnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBufSxhLmRlbGF5PWZ1bmN0aW9uKGUsdCxyKXtzZXRJbW1lZGlhdGUoZnVuY3Rpb24oKXtlLmFwcGx5KHJ8fG51bGwsdHx8W10pfSl9LGEuaW5oZXJpdHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKCl7fXIucHJvdG90eXBlPXQucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyByfSxhLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBlLHQscj17fTtmb3IoZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspZm9yKHQgaW4gYXJndW1lbnRzW2VdKWFyZ3VtZW50c1tlXS5oYXNPd25Qcm9wZXJ0eSh0KSYmdm9pZCAwPT09clt0XSYmKHJbdF09YXJndW1lbnRzW2VdW3RdKTtyZXR1cm4gcn0sYS5wcmVwYXJlQ29udGVudD1mdW5jdGlvbihyLGUsbixpLHMpe3JldHVybiB1LlByb21pc2UucmVzb2x2ZShlKS50aGVuKGZ1bmN0aW9uKG4pe3JldHVybiBvLmJsb2ImJihuIGluc3RhbmNlb2YgQmxvYnx8LTEhPT1bXCJbb2JqZWN0IEZpbGVdXCIsXCJbb2JqZWN0IEJsb2JdXCJdLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pKSkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBGaWxlUmVhZGVyP25ldyB1LlByb21pc2UoZnVuY3Rpb24odCxyKXt2YXIgZT1uZXcgRmlsZVJlYWRlcjtlLm9ubG9hZD1mdW5jdGlvbihlKXt0KGUudGFyZ2V0LnJlc3VsdCl9LGUub25lcnJvcj1mdW5jdGlvbihlKXtyKGUudGFyZ2V0LmVycm9yKX0sZS5yZWFkQXNBcnJheUJ1ZmZlcihuKX0pOm59KS50aGVuKGZ1bmN0aW9uKGUpe3ZhciB0PWEuZ2V0VHlwZU9mKGUpO3JldHVybiB0PyhcImFycmF5YnVmZmVyXCI9PT10P2U9YS50cmFuc2Zvcm1UbyhcInVpbnQ4YXJyYXlcIixlKTpcInN0cmluZ1wiPT09dCYmKHM/ZT1oLmRlY29kZShlKTpuJiYhMCE9PWkmJihlPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUsby51aW50OGFycmF5P25ldyBVaW50OEFycmF5KGUubGVuZ3RoKTpuZXcgQXJyYXkoZS5sZW5ndGgpKX0oZSkpKSxlKTp1LlByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkNhbid0IHJlYWQgdGhlIGRhdGEgb2YgJ1wiK3IrXCInLiBJcyBpdCBpbiBhIHN1cHBvcnRlZCBKYXZhU2NyaXB0IHR5cGUgKFN0cmluZywgQmxvYiwgQXJyYXlCdWZmZXIsIGV0YykgP1wiKSl9KX19LHtcIi4vYmFzZTY0XCI6MSxcIi4vZXh0ZXJuYWxcIjo2LFwiLi9ub2RlanNVdGlsc1wiOjE0LFwiLi9zdXBwb3J0XCI6MzAsc2V0aW1tZWRpYXRlOjU0fV0sMzM6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi9yZWFkZXIvcmVhZGVyRm9yXCIpLGk9ZShcIi4vdXRpbHNcIikscz1lKFwiLi9zaWduYXR1cmVcIiksYT1lKFwiLi96aXBFbnRyeVwiKSxvPShlKFwiLi91dGY4XCIpLGUoXCIuL3N1cHBvcnRcIikpO2Z1bmN0aW9uIGgoZSl7dGhpcy5maWxlcz1bXSx0aGlzLmxvYWRPcHRpb25zPWV9aC5wcm90b3R5cGU9e2NoZWNrU2lnbmF0dXJlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnJlYWRlci5yZWFkQW5kQ2hlY2tTaWduYXR1cmUoZSkpe3RoaXMucmVhZGVyLmluZGV4LT00O3ZhciB0PXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoNCk7dGhyb3cgbmV3IEVycm9yKFwiQ29ycnVwdGVkIHppcCBvciBidWc6IHVuZXhwZWN0ZWQgc2lnbmF0dXJlIChcIitpLnByZXR0eSh0KStcIiwgZXhwZWN0ZWQgXCIraS5wcmV0dHkoZSkrXCIpXCIpfX0saXNTaWduYXR1cmU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLnJlYWRlci5pbmRleDt0aGlzLnJlYWRlci5zZXRJbmRleChlKTt2YXIgbj10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDQpPT09dDtyZXR1cm4gdGhpcy5yZWFkZXIuc2V0SW5kZXgociksbn0scmVhZEJsb2NrRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnppcENvbW1lbnRMZW5ndGg9dGhpcy5yZWFkZXIucmVhZEludCgyKTt2YXIgZT10aGlzLnJlYWRlci5yZWFkRGF0YSh0aGlzLnppcENvbW1lbnRMZW5ndGgpLHQ9by51aW50OGFycmF5P1widWludDhhcnJheVwiOlwiYXJyYXlcIixyPWkudHJhbnNmb3JtVG8odCxlKTt0aGlzLnppcENvbW1lbnQ9dGhpcy5sb2FkT3B0aW9ucy5kZWNvZGVGaWxlTmFtZShyKX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMucmVhZGVyLnNraXAoNCksdGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLnppcDY0RXh0ZW5zaWJsZURhdGE9e307Zm9yKHZhciBlLHQscixuPXRoaXMuemlwNjRFbmRPZkNlbnRyYWxTaXplLTQ0OzA8bjspZT10aGlzLnJlYWRlci5yZWFkSW50KDIpLHQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSxyPXRoaXMucmVhZGVyLnJlYWREYXRhKHQpLHRoaXMuemlwNjRFeHRlbnNpYmxlRGF0YVtlXT17aWQ6ZSxsZW5ndGg6dCx2YWx1ZTpyfX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWxMb2NhdG9yOmZ1bmN0aW9uKCl7aWYodGhpcy5kaXNrV2l0aFppcDY0Q2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5yZWxhdGl2ZU9mZnNldEVuZE9mWmlwNjRDZW50cmFsRGlyPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5kaXNrc0NvdW50PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksMTx0aGlzLmRpc2tzQ291bnQpdGhyb3cgbmV3IEVycm9yKFwiTXVsdGktdm9sdW1lcyB6aXAgYXJlIG5vdCBzdXBwb3J0ZWRcIil9LHJlYWRMb2NhbEZpbGVzOmZ1bmN0aW9uKCl7dmFyIGUsdDtmb3IoZT0wO2U8dGhpcy5maWxlcy5sZW5ndGg7ZSsrKXQ9dGhpcy5maWxlc1tlXSx0aGlzLnJlYWRlci5zZXRJbmRleCh0LmxvY2FsSGVhZGVyT2Zmc2V0KSx0aGlzLmNoZWNrU2lnbmF0dXJlKHMuTE9DQUxfRklMRV9IRUFERVIpLHQucmVhZExvY2FsUGFydCh0aGlzLnJlYWRlciksdC5oYW5kbGVVVEY4KCksdC5wcm9jZXNzQXR0cmlidXRlcygpfSxyZWFkQ2VudHJhbERpcjpmdW5jdGlvbigpe3ZhciBlO2Zvcih0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLmNlbnRyYWxEaXJPZmZzZXQpO3RoaXMucmVhZGVyLnJlYWRBbmRDaGVja1NpZ25hdHVyZShzLkNFTlRSQUxfRklMRV9IRUFERVIpOykoZT1uZXcgYSh7emlwNjQ6dGhpcy56aXA2NH0sdGhpcy5sb2FkT3B0aW9ucykpLnJlYWRDZW50cmFsUGFydCh0aGlzLnJlYWRlciksdGhpcy5maWxlcy5wdXNoKGUpO2lmKHRoaXMuY2VudHJhbERpclJlY29yZHMhPT10aGlzLmZpbGVzLmxlbmd0aCYmMCE9PXRoaXMuY2VudHJhbERpclJlY29yZHMmJjA9PT10aGlzLmZpbGVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJDb3JydXB0ZWQgemlwIG9yIGJ1ZzogZXhwZWN0ZWQgXCIrdGhpcy5jZW50cmFsRGlyUmVjb3JkcytcIiByZWNvcmRzIGluIGNlbnRyYWwgZGlyLCBnb3QgXCIrdGhpcy5maWxlcy5sZW5ndGgpfSxyZWFkRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUocy5DRU5UUkFMX0RJUkVDVE9SWV9FTkQpO2lmKGU8MCl0aHJvdyF0aGlzLmlzU2lnbmF0dXJlKDAscy5MT0NBTF9GSUxFX0hFQURFUik/bmV3IEVycm9yKFwiQ2FuJ3QgZmluZCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgOiBpcyB0aGlzIGEgemlwIGZpbGUgPyBJZiBpdCBpcywgc2VlIGh0dHBzOi8vc3R1ay5naXRodWIuaW8vanN6aXAvZG9jdW1lbnRhdGlvbi9ob3d0by9yZWFkX3ppcC5odG1sXCIpOm5ldyBFcnJvcihcIkNvcnJ1cHRlZCB6aXA6IGNhbid0IGZpbmQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5XCIpO3RoaXMucmVhZGVyLnNldEluZGV4KGUpO3ZhciB0PWU7aWYodGhpcy5jaGVja1NpZ25hdHVyZShzLkNFTlRSQUxfRElSRUNUT1JZX0VORCksdGhpcy5yZWFkQmxvY2tFbmRPZkNlbnRyYWwoKSx0aGlzLmRpc2tOdW1iZXI9PT1pLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9PT1pLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPT09aS5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPT09aS5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJTaXplPT09aS5NQVhfVkFMVUVfMzJCSVRTfHx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9PT1pLk1BWF9WQUxVRV8zMkJJVFMpe2lmKHRoaXMuemlwNjQ9ITAsKGU9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUocy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SKSk8MCl0aHJvdyBuZXcgRXJyb3IoXCJDb3JydXB0ZWQgemlwOiBjYW4ndCBmaW5kIHRoZSBaSVA2NCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgbG9jYXRvclwiKTtpZih0aGlzLnJlYWRlci5zZXRJbmRleChlKSx0aGlzLmNoZWNrU2lnbmF0dXJlKHMuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUiksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3IoKSwhdGhpcy5pc1NpZ25hdHVyZSh0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXIscy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQpJiYodGhpcy5yZWxhdGl2ZU9mZnNldEVuZE9mWmlwNjRDZW50cmFsRGlyPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKHMuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKSx0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXI8MCkpdGhyb3cgbmV3IEVycm9yKFwiQ29ycnVwdGVkIHppcDogY2FuJ3QgZmluZCB0aGUgWklQNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5XCIpO3RoaXMucmVhZGVyLnNldEluZGV4KHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpciksdGhpcy5jaGVja1NpZ25hdHVyZShzLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORCksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbCgpfXZhciByPXRoaXMuY2VudHJhbERpck9mZnNldCt0aGlzLmNlbnRyYWxEaXJTaXplO3RoaXMuemlwNjQmJihyKz0yMCxyKz0xMit0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZSk7dmFyIG49dC1yO2lmKDA8bil0aGlzLmlzU2lnbmF0dXJlKHQscy5DRU5UUkFMX0ZJTEVfSEVBREVSKXx8KHRoaXMucmVhZGVyLnplcm89bik7ZWxzZSBpZihuPDApdGhyb3cgbmV3IEVycm9yKFwiQ29ycnVwdGVkIHppcDogbWlzc2luZyBcIitNYXRoLmFicyhuKStcIiBieXRlcy5cIil9LHByZXBhcmVSZWFkZXI6ZnVuY3Rpb24oZSl7dGhpcy5yZWFkZXI9bihlKX0sbG9hZDpmdW5jdGlvbihlKXt0aGlzLnByZXBhcmVSZWFkZXIoZSksdGhpcy5yZWFkRW5kT2ZDZW50cmFsKCksdGhpcy5yZWFkQ2VudHJhbERpcigpLHRoaXMucmVhZExvY2FsRmlsZXMoKX19LHQuZXhwb3J0cz1ofSx7XCIuL3JlYWRlci9yZWFkZXJGb3JcIjoyMixcIi4vc2lnbmF0dXJlXCI6MjMsXCIuL3N1cHBvcnRcIjozMCxcIi4vdXRmOFwiOjMxLFwiLi91dGlsc1wiOjMyLFwiLi96aXBFbnRyeVwiOjM0fV0sMzQ6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1lKFwiLi9yZWFkZXIvcmVhZGVyRm9yXCIpLHM9ZShcIi4vdXRpbHNcIiksaT1lKFwiLi9jb21wcmVzc2VkT2JqZWN0XCIpLGE9ZShcIi4vY3JjMzJcIiksbz1lKFwiLi91dGY4XCIpLGg9ZShcIi4vY29tcHJlc3Npb25zXCIpLHU9ZShcIi4vc3VwcG9ydFwiKTtmdW5jdGlvbiBsKGUsdCl7dGhpcy5vcHRpb25zPWUsdGhpcy5sb2FkT3B0aW9ucz10fWwucHJvdG90eXBlPXtpc0VuY3J5cHRlZDpmdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLmJpdEZsYWcpfSx1c2VVVEY4OmZ1bmN0aW9uKCl7cmV0dXJuIDIwNDg9PSgyMDQ4JnRoaXMuYml0RmxhZyl9LHJlYWRMb2NhbFBhcnQ6ZnVuY3Rpb24oZSl7dmFyIHQscjtpZihlLnNraXAoMjIpLHRoaXMuZmlsZU5hbWVMZW5ndGg9ZS5yZWFkSW50KDIpLHI9ZS5yZWFkSW50KDIpLHRoaXMuZmlsZU5hbWU9ZS5yZWFkRGF0YSh0aGlzLmZpbGVOYW1lTGVuZ3RoKSxlLnNraXAociksLTE9PT10aGlzLmNvbXByZXNzZWRTaXplfHwtMT09PXRoaXMudW5jb21wcmVzc2VkU2l6ZSl0aHJvdyBuZXcgRXJyb3IoXCJCdWcgb3IgY29ycnVwdGVkIHppcCA6IGRpZG4ndCBnZXQgZW5vdWdoIGluZm9ybWF0aW9uIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IChjb21wcmVzc2VkU2l6ZSA9PT0gLTEgfHwgdW5jb21wcmVzc2VkU2l6ZSA9PT0gLTEpXCIpO2lmKG51bGw9PT0odD1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gaClpZihoLmhhc093blByb3BlcnR5KHQpJiZoW3RdLm1hZ2ljPT09ZSlyZXR1cm4gaFt0XTtyZXR1cm4gbnVsbH0odGhpcy5jb21wcmVzc2lvbk1ldGhvZCkpKXRocm93IG5ldyBFcnJvcihcIkNvcnJ1cHRlZCB6aXAgOiBjb21wcmVzc2lvbiBcIitzLnByZXR0eSh0aGlzLmNvbXByZXNzaW9uTWV0aG9kKStcIiB1bmtub3duIChpbm5lciBmaWxlIDogXCIrcy50cmFuc2Zvcm1UbyhcInN0cmluZ1wiLHRoaXMuZmlsZU5hbWUpK1wiKVwiKTt0aGlzLmRlY29tcHJlc3NlZD1uZXcgaSh0aGlzLmNvbXByZXNzZWRTaXplLHRoaXMudW5jb21wcmVzc2VkU2l6ZSx0aGlzLmNyYzMyLHQsZS5yZWFkRGF0YSh0aGlzLmNvbXByZXNzZWRTaXplKSl9LHJlYWRDZW50cmFsUGFydDpmdW5jdGlvbihlKXt0aGlzLnZlcnNpb25NYWRlQnk9ZS5yZWFkSW50KDIpLGUuc2tpcCgyKSx0aGlzLmJpdEZsYWc9ZS5yZWFkSW50KDIpLHRoaXMuY29tcHJlc3Npb25NZXRob2Q9ZS5yZWFkU3RyaW5nKDIpLHRoaXMuZGF0ZT1lLnJlYWREYXRlKCksdGhpcy5jcmMzMj1lLnJlYWRJbnQoNCksdGhpcy5jb21wcmVzc2VkU2l6ZT1lLnJlYWRJbnQoNCksdGhpcy51bmNvbXByZXNzZWRTaXplPWUucmVhZEludCg0KTt2YXIgdD1lLnJlYWRJbnQoMik7aWYodGhpcy5leHRyYUZpZWxkc0xlbmd0aD1lLnJlYWRJbnQoMiksdGhpcy5maWxlQ29tbWVudExlbmd0aD1lLnJlYWRJbnQoMiksdGhpcy5kaXNrTnVtYmVyU3RhcnQ9ZS5yZWFkSW50KDIpLHRoaXMuaW50ZXJuYWxGaWxlQXR0cmlidXRlcz1lLnJlYWRJbnQoMiksdGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzPWUucmVhZEludCg0KSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PWUucmVhZEludCg0KSx0aGlzLmlzRW5jcnlwdGVkKCkpdGhyb3cgbmV3IEVycm9yKFwiRW5jcnlwdGVkIHppcCBhcmUgbm90IHN1cHBvcnRlZFwiKTtlLnNraXAodCksdGhpcy5yZWFkRXh0cmFGaWVsZHMoZSksdGhpcy5wYXJzZVpJUDY0RXh0cmFGaWVsZChlKSx0aGlzLmZpbGVDb21tZW50PWUucmVhZERhdGEodGhpcy5maWxlQ29tbWVudExlbmd0aCl9LHByb2Nlc3NBdHRyaWJ1dGVzOmZ1bmN0aW9uKCl7dGhpcy51bml4UGVybWlzc2lvbnM9bnVsbCx0aGlzLmRvc1Blcm1pc3Npb25zPW51bGw7dmFyIGU9dGhpcy52ZXJzaW9uTWFkZUJ5Pj44O3RoaXMuZGlyPSEhKDE2JnRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyksMD09ZSYmKHRoaXMuZG9zUGVybWlzc2lvbnM9NjMmdGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzKSwzPT1lJiYodGhpcy51bml4UGVybWlzc2lvbnM9dGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzPj4xNiY2NTUzNSksdGhpcy5kaXJ8fFwiL1wiIT09dGhpcy5maWxlTmFtZVN0ci5zbGljZSgtMSl8fCh0aGlzLmRpcj0hMCl9LHBhcnNlWklQNjRFeHRyYUZpZWxkOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZXh0cmFGaWVsZHNbMV0pe3ZhciB0PW4odGhpcy5leHRyYUZpZWxkc1sxXS52YWx1ZSk7dGhpcy51bmNvbXByZXNzZWRTaXplPT09cy5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy51bmNvbXByZXNzZWRTaXplPXQucmVhZEludCg4KSksdGhpcy5jb21wcmVzc2VkU2l6ZT09PXMuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuY29tcHJlc3NlZFNpemU9dC5yZWFkSW50KDgpKSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09cy5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5sb2NhbEhlYWRlck9mZnNldD10LnJlYWRJbnQoOCkpLHRoaXMuZGlza051bWJlclN0YXJ0PT09cy5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5kaXNrTnVtYmVyU3RhcnQ9dC5yZWFkSW50KDQpKX19LHJlYWRFeHRyYUZpZWxkczpmdW5jdGlvbihlKXt2YXIgdCxyLG4saT1lLmluZGV4K3RoaXMuZXh0cmFGaWVsZHNMZW5ndGg7Zm9yKHRoaXMuZXh0cmFGaWVsZHN8fCh0aGlzLmV4dHJhRmllbGRzPXt9KTtlLmluZGV4KzQ8aTspdD1lLnJlYWRJbnQoMikscj1lLnJlYWRJbnQoMiksbj1lLnJlYWREYXRhKHIpLHRoaXMuZXh0cmFGaWVsZHNbdF09e2lkOnQsbGVuZ3RoOnIsdmFsdWU6bn07ZS5zZXRJbmRleChpKX0saGFuZGxlVVRGODpmdW5jdGlvbigpe3ZhciBlPXUudWludDhhcnJheT9cInVpbnQ4YXJyYXlcIjpcImFycmF5XCI7aWYodGhpcy51c2VVVEY4KCkpdGhpcy5maWxlTmFtZVN0cj1vLnV0ZjhkZWNvZGUodGhpcy5maWxlTmFtZSksdGhpcy5maWxlQ29tbWVudFN0cj1vLnV0ZjhkZWNvZGUodGhpcy5maWxlQ29tbWVudCk7ZWxzZXt2YXIgdD10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZVBhdGgoKTtpZihudWxsIT09dCl0aGlzLmZpbGVOYW1lU3RyPXQ7ZWxzZXt2YXIgcj1zLnRyYW5zZm9ybVRvKGUsdGhpcy5maWxlTmFtZSk7dGhpcy5maWxlTmFtZVN0cj10aGlzLmxvYWRPcHRpb25zLmRlY29kZUZpbGVOYW1lKHIpfXZhciBuPXRoaXMuZmluZEV4dHJhRmllbGRVbmljb2RlQ29tbWVudCgpO2lmKG51bGwhPT1uKXRoaXMuZmlsZUNvbW1lbnRTdHI9bjtlbHNle3ZhciBpPXMudHJhbnNmb3JtVG8oZSx0aGlzLmZpbGVDb21tZW50KTt0aGlzLmZpbGVDb21tZW50U3RyPXRoaXMubG9hZE9wdGlvbnMuZGVjb2RlRmlsZU5hbWUoaSl9fX0sZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZXh0cmFGaWVsZHNbMjg3ODldO2lmKGUpe3ZhciB0PW4oZS52YWx1ZSk7cmV0dXJuIDEhPT10LnJlYWRJbnQoMSk/bnVsbDphKHRoaXMuZmlsZU5hbWUpIT09dC5yZWFkSW50KDQpP251bGw6by51dGY4ZGVjb2RlKHQucmVhZERhdGEoZS5sZW5ndGgtNSkpfXJldHVybiBudWxsfSxmaW5kRXh0cmFGaWVsZFVuaWNvZGVDb21tZW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5leHRyYUZpZWxkc1syNTQ2MV07aWYoZSl7dmFyIHQ9bihlLnZhbHVlKTtyZXR1cm4gMSE9PXQucmVhZEludCgxKT9udWxsOmEodGhpcy5maWxlQ29tbWVudCkhPT10LnJlYWRJbnQoNCk/bnVsbDpvLnV0ZjhkZWNvZGUodC5yZWFkRGF0YShlLmxlbmd0aC01KSl9cmV0dXJuIG51bGx9fSx0LmV4cG9ydHM9bH0se1wiLi9jb21wcmVzc2VkT2JqZWN0XCI6MixcIi4vY29tcHJlc3Npb25zXCI6MyxcIi4vY3JjMzJcIjo0LFwiLi9yZWFkZXIvcmVhZGVyRm9yXCI6MjIsXCIuL3N1cHBvcnRcIjozMCxcIi4vdXRmOFwiOjMxLFwiLi91dGlsc1wiOjMyfV0sMzU6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKGUsdCxyKXt0aGlzLm5hbWU9ZSx0aGlzLmRpcj1yLmRpcix0aGlzLmRhdGU9ci5kYXRlLHRoaXMuY29tbWVudD1yLmNvbW1lbnQsdGhpcy51bml4UGVybWlzc2lvbnM9ci51bml4UGVybWlzc2lvbnMsdGhpcy5kb3NQZXJtaXNzaW9ucz1yLmRvc1Blcm1pc3Npb25zLHRoaXMuX2RhdGE9dCx0aGlzLl9kYXRhQmluYXJ5PXIuYmluYXJ5LHRoaXMub3B0aW9ucz17Y29tcHJlc3Npb246ci5jb21wcmVzc2lvbixjb21wcmVzc2lvbk9wdGlvbnM6ci5jb21wcmVzc2lvbk9wdGlvbnN9fXZhciBzPWUoXCIuL3N0cmVhbS9TdHJlYW1IZWxwZXJcIiksaT1lKFwiLi9zdHJlYW0vRGF0YVdvcmtlclwiKSxhPWUoXCIuL3V0ZjhcIiksbz1lKFwiLi9jb21wcmVzc2VkT2JqZWN0XCIpLGg9ZShcIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXJcIik7bi5wcm90b3R5cGU9e2ludGVybmFsU3RyZWFtOmZ1bmN0aW9uKGUpe3ZhciB0PW51bGwscj1cInN0cmluZ1wiO3RyeXtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJObyBvdXRwdXQgdHlwZSBzcGVjaWZpZWQuXCIpO3ZhciBuPVwic3RyaW5nXCI9PT0ocj1lLnRvTG93ZXJDYXNlKCkpfHxcInRleHRcIj09PXI7XCJiaW5hcnlzdHJpbmdcIiE9PXImJlwidGV4dFwiIT09cnx8KHI9XCJzdHJpbmdcIiksdD10aGlzLl9kZWNvbXByZXNzV29ya2VyKCk7dmFyIGk9IXRoaXMuX2RhdGFCaW5hcnk7aSYmIW4mJih0PXQucGlwZShuZXcgYS5VdGY4RW5jb2RlV29ya2VyKSksIWkmJm4mJih0PXQucGlwZShuZXcgYS5VdGY4RGVjb2RlV29ya2VyKSl9Y2F0Y2goZSl7KHQ9bmV3IGgoXCJlcnJvclwiKSkuZXJyb3IoZSl9cmV0dXJuIG5ldyBzKHQscixcIlwiKX0sYXN5bmM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5pbnRlcm5hbFN0cmVhbShlKS5hY2N1bXVsYXRlKHQpfSxub2RlU3RyZWFtOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuaW50ZXJuYWxTdHJlYW0oZXx8XCJub2RlYnVmZmVyXCIpLnRvTm9kZWpzU3RyZWFtKHQpfSxfY29tcHJlc3NXb3JrZXI6ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl9kYXRhIGluc3RhbmNlb2YgbyYmdGhpcy5fZGF0YS5jb21wcmVzc2lvbi5tYWdpYz09PWUubWFnaWMpcmV0dXJuIHRoaXMuX2RhdGEuZ2V0Q29tcHJlc3NlZFdvcmtlcigpO3ZhciByPXRoaXMuX2RlY29tcHJlc3NXb3JrZXIoKTtyZXR1cm4gdGhpcy5fZGF0YUJpbmFyeXx8KHI9ci5waXBlKG5ldyBhLlV0ZjhFbmNvZGVXb3JrZXIpKSxvLmNyZWF0ZVdvcmtlckZyb20ocixlLHQpfSxfZGVjb21wcmVzc1dvcmtlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhIGluc3RhbmNlb2Ygbz90aGlzLl9kYXRhLmdldENvbnRlbnRXb3JrZXIoKTp0aGlzLl9kYXRhIGluc3RhbmNlb2YgaD90aGlzLl9kYXRhOm5ldyBpKHRoaXMuX2RhdGEpfX07Zm9yKHZhciB1PVtcImFzVGV4dFwiLFwiYXNCaW5hcnlcIixcImFzTm9kZUJ1ZmZlclwiLFwiYXNVaW50OEFycmF5XCIsXCJhc0FycmF5QnVmZmVyXCJdLGw9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG1ldGhvZCBoYXMgYmVlbiByZW1vdmVkIGluIEpTWmlwIDMuMCwgcGxlYXNlIGNoZWNrIHRoZSB1cGdyYWRlIGd1aWRlLlwiKX0sZj0wO2Y8dS5sZW5ndGg7ZisrKW4ucHJvdG90eXBlW3VbZl1dPWw7dC5leHBvcnRzPW59LHtcIi4vY29tcHJlc3NlZE9iamVjdFwiOjIsXCIuL3N0cmVhbS9EYXRhV29ya2VyXCI6MjcsXCIuL3N0cmVhbS9HZW5lcmljV29ya2VyXCI6MjgsXCIuL3N0cmVhbS9TdHJlYW1IZWxwZXJcIjoyOSxcIi4vdXRmOFwiOjMxfV0sMzY6W2Z1bmN0aW9uKGUsbCx0KXsoZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsbixlPXQuTXV0YXRpb25PYnNlcnZlcnx8dC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2lmKGUpe3ZhciBpPTAscz1uZXcgZSh1KSxhPXQuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7cy5vYnNlcnZlKGEse2NoYXJhY3RlckRhdGE6ITB9KSxyPWZ1bmN0aW9uKCl7YS5kYXRhPWk9KytpJTJ9fWVsc2UgaWYodC5zZXRJbW1lZGlhdGV8fHZvaWQgMD09PXQuTWVzc2FnZUNoYW5uZWwpcj1cImRvY3VtZW50XCJpbiB0JiZcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiaW4gdC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpP2Z1bmN0aW9uKCl7dmFyIGU9dC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2Uub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dSgpLGUub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpLGU9bnVsbH0sdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZSl9OmZ1bmN0aW9uKCl7c2V0VGltZW91dCh1LDApfTtlbHNle3ZhciBvPW5ldyB0Lk1lc3NhZ2VDaGFubmVsO28ucG9ydDEub25tZXNzYWdlPXUscj1mdW5jdGlvbigpe28ucG9ydDIucG9zdE1lc3NhZ2UoMCl9fXZhciBoPVtdO2Z1bmN0aW9uIHUoKXt2YXIgZSx0O249ITA7Zm9yKHZhciByPWgubGVuZ3RoO3I7KXtmb3IodD1oLGg9W10sZT0tMTsrK2U8cjspdFtlXSgpO3I9aC5sZW5ndGh9bj0hMX1sLmV4cG9ydHM9ZnVuY3Rpb24oZSl7MSE9PWgucHVzaChlKXx8bnx8cigpfX0pLmNhbGwodGhpcyxcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDM3OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9ZShcImltbWVkaWF0ZVwiKTtmdW5jdGlvbiB1KCl7fXZhciBsPXt9LHM9W1wiUkVKRUNURURcIl0sYT1bXCJGVUxGSUxMRURcIl0sbj1bXCJQRU5ESU5HXCJdO2Z1bmN0aW9uIG8oZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwicmVzb2x2ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO3RoaXMuc3RhdGU9bix0aGlzLnF1ZXVlPVtdLHRoaXMub3V0Y29tZT12b2lkIDAsZSE9PXUmJmQodGhpcyxlKX1mdW5jdGlvbiBoKGUsdCxyKXt0aGlzLnByb21pc2U9ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodGhpcy5vbkZ1bGZpbGxlZD10LHRoaXMuY2FsbEZ1bGZpbGxlZD10aGlzLm90aGVyQ2FsbEZ1bGZpbGxlZCksXCJmdW5jdGlvblwiPT10eXBlb2YgciYmKHRoaXMub25SZWplY3RlZD1yLHRoaXMuY2FsbFJlamVjdGVkPXRoaXMub3RoZXJDYWxsUmVqZWN0ZWQpfWZ1bmN0aW9uIGYodCxyLG4pe2koZnVuY3Rpb24oKXt2YXIgZTt0cnl7ZT1yKG4pfWNhdGNoKGUpe3JldHVybiBsLnJlamVjdCh0LGUpfWU9PT10P2wucmVqZWN0KHQsbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZXNvbHZlIHByb21pc2Ugd2l0aCBpdHNlbGZcIikpOmwucmVzb2x2ZSh0LGUpfSl9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lJiZlLnRoZW47aWYoZSYmKFwib2JqZWN0XCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdClyZXR1cm4gZnVuY3Rpb24oKXt0LmFwcGx5KGUsYXJndW1lbnRzKX19ZnVuY3Rpb24gZCh0LGUpe3ZhciByPSExO2Z1bmN0aW9uIG4oZSl7cnx8KHI9ITAsbC5yZWplY3QodCxlKSl9ZnVuY3Rpb24gaShlKXtyfHwocj0hMCxsLnJlc29sdmUodCxlKSl9dmFyIHM9cChmdW5jdGlvbigpe2UoaSxuKX0pO1wiZXJyb3JcIj09PXMuc3RhdHVzJiZuKHMudmFsdWUpfWZ1bmN0aW9uIHAoZSx0KXt2YXIgcj17fTt0cnl7ci52YWx1ZT1lKHQpLHIuc3RhdHVzPVwic3VjY2Vzc1wifWNhdGNoKGUpe3Iuc3RhdHVzPVwiZXJyb3JcIixyLnZhbHVlPWV9cmV0dXJuIHJ9KHQuZXhwb3J0cz1vKS5wcm90b3R5cGUuZmluYWxseT1mdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXJldHVybiB0aGlzO3ZhciByPXRoaXMuY29uc3RydWN0b3I7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gci5yZXNvbHZlKHQoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBlfSl9LGZ1bmN0aW9uKGUpe3JldHVybiByLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgZX0pfSl9LG8ucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRoZW4obnVsbCxlKX0sby5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJnRoaXMuc3RhdGU9PT1hfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZ0aGlzLnN0YXRlPT09cylyZXR1cm4gdGhpczt2YXIgcj1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih1KTt0aGlzLnN0YXRlIT09bj9mKHIsdGhpcy5zdGF0ZT09PWE/ZTp0LHRoaXMub3V0Y29tZSk6dGhpcy5xdWV1ZS5wdXNoKG5ldyBoKHIsZSx0KSk7cmV0dXJuIHJ9LGgucHJvdG90eXBlLmNhbGxGdWxmaWxsZWQ9ZnVuY3Rpb24oZSl7bC5yZXNvbHZlKHRoaXMucHJvbWlzZSxlKX0saC5wcm90b3R5cGUub3RoZXJDYWxsRnVsZmlsbGVkPWZ1bmN0aW9uKGUpe2YodGhpcy5wcm9taXNlLHRoaXMub25GdWxmaWxsZWQsZSl9LGgucHJvdG90eXBlLmNhbGxSZWplY3RlZD1mdW5jdGlvbihlKXtsLnJlamVjdCh0aGlzLnByb21pc2UsZSl9LGgucHJvdG90eXBlLm90aGVyQ2FsbFJlamVjdGVkPWZ1bmN0aW9uKGUpe2YodGhpcy5wcm9taXNlLHRoaXMub25SZWplY3RlZCxlKX0sbC5yZXNvbHZlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9cChjLHQpO2lmKFwiZXJyb3JcIj09PXIuc3RhdHVzKXJldHVybiBsLnJlamVjdChlLHIudmFsdWUpO3ZhciBuPXIudmFsdWU7aWYobilkKGUsbik7ZWxzZXtlLnN0YXRlPWEsZS5vdXRjb21lPXQ7Zm9yKHZhciBpPS0xLHM9ZS5xdWV1ZS5sZW5ndGg7KytpPHM7KWUucXVldWVbaV0uY2FsbEZ1bGZpbGxlZCh0KX1yZXR1cm4gZX0sbC5yZWplY3Q9ZnVuY3Rpb24oZSx0KXtlLnN0YXRlPXMsZS5vdXRjb21lPXQ7Zm9yKHZhciByPS0xLG49ZS5xdWV1ZS5sZW5ndGg7KytyPG47KWUucXVldWVbcl0uY2FsbFJlamVjdGVkKHQpO3JldHVybiBlfSxvLnJlc29sdmU9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIHRoaXMpcmV0dXJuIGU7cmV0dXJuIGwucmVzb2x2ZShuZXcgdGhpcyh1KSxlKX0sby5yZWplY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHRoaXModSk7cmV0dXJuIGwucmVqZWN0KHQsZSl9LG8uYWxsPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7aWYoXCJbb2JqZWN0IEFycmF5XVwiIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiB0aGlzLnJlamVjdChuZXcgVHlwZUVycm9yKFwibXVzdCBiZSBhbiBhcnJheVwiKSk7dmFyIG49ZS5sZW5ndGgsaT0hMTtpZighbilyZXR1cm4gdGhpcy5yZXNvbHZlKFtdKTt2YXIgcz1uZXcgQXJyYXkobiksYT0wLHQ9LTEsbz1uZXcgdGhpcyh1KTtmb3IoOysrdDxuOyloKGVbdF0sdCk7cmV0dXJuIG87ZnVuY3Rpb24gaChlLHQpe3IucmVzb2x2ZShlKS50aGVuKGZ1bmN0aW9uKGUpe3NbdF09ZSwrK2EhPT1ufHxpfHwoaT0hMCxsLnJlc29sdmUobyxzKSl9LGZ1bmN0aW9uKGUpe2l8fChpPSEwLGwucmVqZWN0KG8sZSkpfSl9fSxvLnJhY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZihcIltvYmplY3QgQXJyYXldXCIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIHRoaXMucmVqZWN0KG5ldyBUeXBlRXJyb3IoXCJtdXN0IGJlIGFuIGFycmF5XCIpKTt2YXIgcj1lLmxlbmd0aCxuPSExO2lmKCFyKXJldHVybiB0aGlzLnJlc29sdmUoW10pO3ZhciBpPS0xLHM9bmV3IHRoaXModSk7Zm9yKDsrK2k8cjspYT1lW2ldLHQucmVzb2x2ZShhKS50aGVuKGZ1bmN0aW9uKGUpe258fChuPSEwLGwucmVzb2x2ZShzLGUpKX0sZnVuY3Rpb24oZSl7bnx8KG49ITAsbC5yZWplY3QocyxlKSl9KTt2YXIgYTtyZXR1cm4gc319LHtpbW1lZGlhdGU6MzZ9XSwzODpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXt9OygwLGUoXCIuL2xpYi91dGlscy9jb21tb25cIikuYXNzaWduKShuLGUoXCIuL2xpYi9kZWZsYXRlXCIpLGUoXCIuL2xpYi9pbmZsYXRlXCIpLGUoXCIuL2xpYi96bGliL2NvbnN0YW50c1wiKSksdC5leHBvcnRzPW59LHtcIi4vbGliL2RlZmxhdGVcIjozOSxcIi4vbGliL2luZmxhdGVcIjo0MCxcIi4vbGliL3V0aWxzL2NvbW1vblwiOjQxLFwiLi9saWIvemxpYi9jb25zdGFudHNcIjo0NH1dLDM5OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGE9ZShcIi4vemxpYi9kZWZsYXRlXCIpLG89ZShcIi4vdXRpbHMvY29tbW9uXCIpLGg9ZShcIi4vdXRpbHMvc3RyaW5nc1wiKSxpPWUoXCIuL3psaWIvbWVzc2FnZXNcIikscz1lKFwiLi96bGliL3pzdHJlYW1cIiksdT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGw9MCxmPS0xLGM9MCxkPTg7ZnVuY3Rpb24gcChlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBwKSlyZXR1cm4gbmV3IHAoZSk7dGhpcy5vcHRpb25zPW8uYXNzaWduKHtsZXZlbDpmLG1ldGhvZDpkLGNodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjE1LG1lbUxldmVsOjgsc3RyYXRlZ3k6Yyx0bzpcIlwifSxlfHx7fSk7dmFyIHQ9dGhpcy5vcHRpb25zO3QucmF3JiYwPHQud2luZG93Qml0cz90LndpbmRvd0JpdHM9LXQud2luZG93Qml0czp0Lmd6aXAmJjA8dC53aW5kb3dCaXRzJiZ0LndpbmRvd0JpdHM8MTYmJih0LndpbmRvd0JpdHMrPTE2KSx0aGlzLmVycj0wLHRoaXMubXNnPVwiXCIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IHMsdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciByPWEuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSx0LmxldmVsLHQubWV0aG9kLHQud2luZG93Qml0cyx0Lm1lbUxldmVsLHQuc3RyYXRlZ3kpO2lmKHIhPT1sKXRocm93IG5ldyBFcnJvcihpW3JdKTtpZih0LmhlYWRlciYmYS5kZWZsYXRlU2V0SGVhZGVyKHRoaXMuc3RybSx0LmhlYWRlciksdC5kaWN0aW9uYXJ5KXt2YXIgbjtpZihuPVwic3RyaW5nXCI9PXR5cGVvZiB0LmRpY3Rpb25hcnk/aC5zdHJpbmcyYnVmKHQuZGljdGlvbmFyeSk6XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiPT09dS5jYWxsKHQuZGljdGlvbmFyeSk/bmV3IFVpbnQ4QXJyYXkodC5kaWN0aW9uYXJ5KTp0LmRpY3Rpb25hcnksKHI9YS5kZWZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sbikpIT09bCl0aHJvdyBuZXcgRXJyb3IoaVtyXSk7dGhpcy5fZGljdF9zZXQ9ITB9fWZ1bmN0aW9uIG4oZSx0KXt2YXIgcj1uZXcgcCh0KTtpZihyLnB1c2goZSwhMCksci5lcnIpdGhyb3cgci5tc2d8fGlbci5lcnJdO3JldHVybiByLnJlc3VsdH1wLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpPXRoaXMuc3RybSxzPXRoaXMub3B0aW9ucy5jaHVua1NpemU7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtuPXQ9PT1+fnQ/dDohMD09PXQ/NDowLFwic3RyaW5nXCI9PXR5cGVvZiBlP2kuaW5wdXQ9aC5zdHJpbmcyYnVmKGUpOlwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIj09PXUuY2FsbChlKT9pLmlucHV0PW5ldyBVaW50OEFycmF5KGUpOmkuaW5wdXQ9ZSxpLm5leHRfaW49MCxpLmF2YWlsX2luPWkuaW5wdXQubGVuZ3RoO2Rve2lmKDA9PT1pLmF2YWlsX291dCYmKGkub3V0cHV0PW5ldyBvLkJ1ZjgocyksaS5uZXh0X291dD0wLGkuYXZhaWxfb3V0PXMpLDEhPT0ocj1hLmRlZmxhdGUoaSxuKSkmJnIhPT1sKXJldHVybiB0aGlzLm9uRW5kKHIpLCEodGhpcy5lbmRlZD0hMCk7MCE9PWkuYXZhaWxfb3V0JiYoMCE9PWkuYXZhaWxfaW58fDQhPT1uJiYyIT09bil8fChcInN0cmluZ1wiPT09dGhpcy5vcHRpb25zLnRvP3RoaXMub25EYXRhKGguYnVmMmJpbnN0cmluZyhvLnNocmlua0J1ZihpLm91dHB1dCxpLm5leHRfb3V0KSkpOnRoaXMub25EYXRhKG8uc2hyaW5rQnVmKGkub3V0cHV0LGkubmV4dF9vdXQpKSl9d2hpbGUoKDA8aS5hdmFpbF9pbnx8MD09PWkuYXZhaWxfb3V0KSYmMSE9PXIpO3JldHVybiA0PT09bj8ocj1hLmRlZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKHIpLHRoaXMuZW5kZWQ9ITAscj09PWwpOjIhPT1ufHwodGhpcy5vbkVuZChsKSwhKGkuYXZhaWxfb3V0PTApKX0scC5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGUpe3RoaXMuY2h1bmtzLnB1c2goZSl9LHAucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKGUpe2U9PT1sJiYoXCJzdHJpbmdcIj09PXRoaXMub3B0aW9ucy50bz90aGlzLnJlc3VsdD10aGlzLmNodW5rcy5qb2luKFwiXCIpOnRoaXMucmVzdWx0PW8uZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPWUsdGhpcy5tc2c9dGhpcy5zdHJtLm1zZ30sci5EZWZsYXRlPXAsci5kZWZsYXRlPW4sci5kZWZsYXRlUmF3PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ9dHx8e30pLnJhdz0hMCxuKGUsdCl9LHIuZ3ppcD1mdW5jdGlvbihlLHQpe3JldHVybih0PXR8fHt9KS5nemlwPSEwLG4oZSx0KX19LHtcIi4vdXRpbHMvY29tbW9uXCI6NDEsXCIuL3V0aWxzL3N0cmluZ3NcIjo0MixcIi4vemxpYi9kZWZsYXRlXCI6NDYsXCIuL3psaWIvbWVzc2FnZXNcIjo1MSxcIi4vemxpYi96c3RyZWFtXCI6NTN9XSw0MDpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBjPWUoXCIuL3psaWIvaW5mbGF0ZVwiKSxkPWUoXCIuL3V0aWxzL2NvbW1vblwiKSxwPWUoXCIuL3V0aWxzL3N0cmluZ3NcIiksbT1lKFwiLi96bGliL2NvbnN0YW50c1wiKSxuPWUoXCIuL3psaWIvbWVzc2FnZXNcIiksaT1lKFwiLi96bGliL3pzdHJlYW1cIikscz1lKFwiLi96bGliL2d6aGVhZGVyXCIpLF89T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBhKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGEpKXJldHVybiBuZXcgYShlKTt0aGlzLm9wdGlvbnM9ZC5hc3NpZ24oe2NodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjAsdG86XCJcIn0sZXx8e30pO3ZhciB0PXRoaXMub3B0aW9uczt0LnJhdyYmMDw9dC53aW5kb3dCaXRzJiZ0LndpbmRvd0JpdHM8MTYmJih0LndpbmRvd0JpdHM9LXQud2luZG93Qml0cywwPT09dC53aW5kb3dCaXRzJiYodC53aW5kb3dCaXRzPS0xNSkpLCEoMDw9dC53aW5kb3dCaXRzJiZ0LndpbmRvd0JpdHM8MTYpfHxlJiZlLndpbmRvd0JpdHN8fCh0LndpbmRvd0JpdHMrPTMyKSwxNTx0LndpbmRvd0JpdHMmJnQud2luZG93Qml0czw0OCYmMD09KDE1JnQud2luZG93Qml0cykmJih0LndpbmRvd0JpdHN8PTE1KSx0aGlzLmVycj0wLHRoaXMubXNnPVwiXCIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IGksdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciByPWMuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSx0LndpbmRvd0JpdHMpO2lmKHIhPT1tLlpfT0spdGhyb3cgbmV3IEVycm9yKG5bcl0pO3RoaXMuaGVhZGVyPW5ldyBzLGMuaW5mbGF0ZUdldEhlYWRlcih0aGlzLnN0cm0sdGhpcy5oZWFkZXIpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj1uZXcgYSh0KTtpZihyLnB1c2goZSwhMCksci5lcnIpdGhyb3cgci5tc2d8fG5bci5lcnJdO3JldHVybiByLnJlc3VsdH1hLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLHMsYSxvLGg9dGhpcy5zdHJtLHU9dGhpcy5vcHRpb25zLmNodW5rU2l6ZSxsPXRoaXMub3B0aW9ucy5kaWN0aW9uYXJ5LGY9ITE7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtuPXQ9PT1+fnQ/dDohMD09PXQ/bS5aX0ZJTklTSDptLlpfTk9fRkxVU0gsXCJzdHJpbmdcIj09dHlwZW9mIGU/aC5pbnB1dD1wLmJpbnN0cmluZzJidWYoZSk6XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiPT09Xy5jYWxsKGUpP2guaW5wdXQ9bmV3IFVpbnQ4QXJyYXkoZSk6aC5pbnB1dD1lLGgubmV4dF9pbj0wLGguYXZhaWxfaW49aC5pbnB1dC5sZW5ndGg7ZG97aWYoMD09PWguYXZhaWxfb3V0JiYoaC5vdXRwdXQ9bmV3IGQuQnVmOCh1KSxoLm5leHRfb3V0PTAsaC5hdmFpbF9vdXQ9dSksKHI9Yy5pbmZsYXRlKGgsbS5aX05PX0ZMVVNIKSk9PT1tLlpfTkVFRF9ESUNUJiZsJiYobz1cInN0cmluZ1wiPT10eXBlb2YgbD9wLnN0cmluZzJidWYobCk6XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiPT09Xy5jYWxsKGwpP25ldyBVaW50OEFycmF5KGwpOmwscj1jLmluZmxhdGVTZXREaWN0aW9uYXJ5KHRoaXMuc3RybSxvKSkscj09PW0uWl9CVUZfRVJST1ImJiEwPT09ZiYmKHI9bS5aX09LLGY9ITEpLHIhPT1tLlpfU1RSRUFNX0VORCYmciE9PW0uWl9PSylyZXR1cm4gdGhpcy5vbkVuZChyKSwhKHRoaXMuZW5kZWQ9ITApO2gubmV4dF9vdXQmJigwIT09aC5hdmFpbF9vdXQmJnIhPT1tLlpfU1RSRUFNX0VORCYmKDAhPT1oLmF2YWlsX2lufHxuIT09bS5aX0ZJTklTSCYmbiE9PW0uWl9TWU5DX0ZMVVNIKXx8KFwic3RyaW5nXCI9PT10aGlzLm9wdGlvbnMudG8/KGk9cC51dGY4Ym9yZGVyKGgub3V0cHV0LGgubmV4dF9vdXQpLHM9aC5uZXh0X291dC1pLGE9cC5idWYyc3RyaW5nKGgub3V0cHV0LGkpLGgubmV4dF9vdXQ9cyxoLmF2YWlsX291dD11LXMscyYmZC5hcnJheVNldChoLm91dHB1dCxoLm91dHB1dCxpLHMsMCksdGhpcy5vbkRhdGEoYSkpOnRoaXMub25EYXRhKGQuc2hyaW5rQnVmKGgub3V0cHV0LGgubmV4dF9vdXQpKSkpLDA9PT1oLmF2YWlsX2luJiYwPT09aC5hdmFpbF9vdXQmJihmPSEwKX13aGlsZSgoMDxoLmF2YWlsX2lufHwwPT09aC5hdmFpbF9vdXQpJiZyIT09bS5aX1NUUkVBTV9FTkQpO3JldHVybiByPT09bS5aX1NUUkVBTV9FTkQmJihuPW0uWl9GSU5JU0gpLG49PT1tLlpfRklOSVNIPyhyPWMuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQociksdGhpcy5lbmRlZD0hMCxyPT09bS5aX09LKTpuIT09bS5aX1NZTkNfRkxVU0h8fCh0aGlzLm9uRW5kKG0uWl9PSyksIShoLmF2YWlsX291dD0wKSl9LGEucHJvdG90eXBlLm9uRGF0YT1mdW5jdGlvbihlKXt0aGlzLmNodW5rcy5wdXNoKGUpfSxhLnByb3RvdHlwZS5vbkVuZD1mdW5jdGlvbihlKXtlPT09bS5aX09LJiYoXCJzdHJpbmdcIj09PXRoaXMub3B0aW9ucy50bz90aGlzLnJlc3VsdD10aGlzLmNodW5rcy5qb2luKFwiXCIpOnRoaXMucmVzdWx0PWQuZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPWUsdGhpcy5tc2c9dGhpcy5zdHJtLm1zZ30sci5JbmZsYXRlPWEsci5pbmZsYXRlPW8sci5pbmZsYXRlUmF3PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ9dHx8e30pLnJhdz0hMCxvKGUsdCl9LHIudW5nemlwPW99LHtcIi4vdXRpbHMvY29tbW9uXCI6NDEsXCIuL3V0aWxzL3N0cmluZ3NcIjo0MixcIi4vemxpYi9jb25zdGFudHNcIjo0NCxcIi4vemxpYi9nemhlYWRlclwiOjQ3LFwiLi96bGliL2luZmxhdGVcIjo0OSxcIi4vemxpYi9tZXNzYWdlc1wiOjUxLFwiLi96bGliL3pzdHJlYW1cIjo1M31dLDQxOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50MTZBcnJheSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEludDMyQXJyYXk7ci5hc3NpZ249ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTt0Lmxlbmd0aDspe3ZhciByPXQuc2hpZnQoKTtpZihyKXtpZihcIm9iamVjdFwiIT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKHIrXCJtdXN0IGJlIG5vbi1vYmplY3RcIik7Zm9yKHZhciBuIGluIHIpci5oYXNPd25Qcm9wZXJ0eShuKSYmKGVbbl09cltuXSl9fXJldHVybiBlfSxyLnNocmlua0J1Zj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD09PXQ/ZTplLnN1YmFycmF5P2Uuc3ViYXJyYXkoMCx0KTooZS5sZW5ndGg9dCxlKX07dmFyIGk9e2FycmF5U2V0OmZ1bmN0aW9uKGUsdCxyLG4saSl7aWYodC5zdWJhcnJheSYmZS5zdWJhcnJheSllLnNldCh0LnN1YmFycmF5KHIscituKSxpKTtlbHNlIGZvcih2YXIgcz0wO3M8bjtzKyspZVtpK3NdPXRbcitzXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihlKXt2YXIgdCxyLG4saSxzLGE7Zm9yKHQ9bj0wLHI9ZS5sZW5ndGg7dDxyO3QrKyluKz1lW3RdLmxlbmd0aDtmb3IoYT1uZXcgVWludDhBcnJheShuKSx0PWk9MCxyPWUubGVuZ3RoO3Q8cjt0Kyspcz1lW3RdLGEuc2V0KHMsaSksaSs9cy5sZW5ndGg7cmV0dXJuIGF9fSxzPXthcnJheVNldDpmdW5jdGlvbihlLHQscixuLGkpe2Zvcih2YXIgcz0wO3M8bjtzKyspZVtpK3NdPXRbcitzXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihlKXtyZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sZSl9fTtyLnNldFR5cGVkPWZ1bmN0aW9uKGUpe2U/KHIuQnVmOD1VaW50OEFycmF5LHIuQnVmMTY9VWludDE2QXJyYXksci5CdWYzMj1JbnQzMkFycmF5LHIuYXNzaWduKHIsaSkpOihyLkJ1Zjg9QXJyYXksci5CdWYxNj1BcnJheSxyLkJ1ZjMyPUFycmF5LHIuYXNzaWduKHIscykpfSxyLnNldFR5cGVkKG4pfSx7fV0sNDI6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaD1lKFwiLi9jb21tb25cIiksaT0hMCxzPSEwO3RyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsWzBdKX1jYXRjaChlKXtpPSExfXRyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoMSkpfWNhdGNoKGUpe3M9ITF9Zm9yKHZhciB1PW5ldyBoLkJ1ZjgoMjU2KSxuPTA7bjwyNTY7bisrKXVbbl09MjUyPD1uPzY6MjQ4PD1uPzU6MjQwPD1uPzQ6MjI0PD1uPzM6MTkyPD1uPzI6MTtmdW5jdGlvbiBsKGUsdCl7aWYodDw2NTUzNyYmKGUuc3ViYXJyYXkmJnN8fCFlLnN1YmFycmF5JiZpKSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGguc2hyaW5rQnVmKGUsdCkpO2Zvcih2YXIgcj1cIlwiLG49MDtuPHQ7bisrKXIrPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtuXSk7cmV0dXJuIHJ9dVsyNTRdPXVbMjU0XT0xLHIuc3RyaW5nMmJ1Zj1mdW5jdGlvbihlKXt2YXIgdCxyLG4saSxzLGE9ZS5sZW5ndGgsbz0wO2ZvcihpPTA7aTxhO2krKyk1NTI5Nj09KDY0NTEyJihyPWUuY2hhckNvZGVBdChpKSkpJiZpKzE8YSYmNTYzMjA9PSg2NDUxMiYobj1lLmNoYXJDb2RlQXQoaSsxKSkpJiYocj02NTUzNisoci01NTI5Njw8MTApKyhuLTU2MzIwKSxpKyspLG8rPXI8MTI4PzE6cjwyMDQ4PzI6cjw2NTUzNj8zOjQ7Zm9yKHQ9bmV3IGguQnVmOChvKSxpPXM9MDtzPG87aSsrKTU1Mjk2PT0oNjQ1MTImKHI9ZS5jaGFyQ29kZUF0KGkpKSkmJmkrMTxhJiY1NjMyMD09KDY0NTEyJihuPWUuY2hhckNvZGVBdChpKzEpKSkmJihyPTY1NTM2KyhyLTU1Mjk2PDwxMCkrKG4tNTYzMjApLGkrKykscjwxMjg/dFtzKytdPXI6KHI8MjA0OD90W3MrK109MTkyfHI+Pj42OihyPDY1NTM2P3RbcysrXT0yMjR8cj4+PjEyOih0W3MrK109MjQwfHI+Pj4xOCx0W3MrK109MTI4fHI+Pj4xMiY2MyksdFtzKytdPTEyOHxyPj4+NiY2MyksdFtzKytdPTEyOHw2MyZyKTtyZXR1cm4gdH0sci5idWYyYmluc3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUsZS5sZW5ndGgpfSxyLmJpbnN0cmluZzJidWY9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBoLkJ1ZjgoZS5sZW5ndGgpLHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspdFtyXT1lLmNoYXJDb2RlQXQocik7cmV0dXJuIHR9LHIuYnVmMnN0cmluZz1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxzLGE9dHx8ZS5sZW5ndGgsbz1uZXcgQXJyYXkoMiphKTtmb3Iocj1uPTA7cjxhOylpZigoaT1lW3IrK10pPDEyOClvW24rK109aTtlbHNlIGlmKDQ8KHM9dVtpXSkpb1tuKytdPTY1NTMzLHIrPXMtMTtlbHNle2ZvcihpJj0yPT09cz8zMTozPT09cz8xNTo3OzE8cyYmcjxhOylpPWk8PDZ8NjMmZVtyKytdLHMtLTsxPHM/b1tuKytdPTY1NTMzOmk8NjU1MzY/b1tuKytdPWk6KGktPTY1NTM2LG9bbisrXT01NTI5NnxpPj4xMCYxMDIzLG9bbisrXT01NjMyMHwxMDIzJmkpfXJldHVybiBsKG8sbil9LHIudXRmOGJvcmRlcj1mdW5jdGlvbihlLHQpe3ZhciByO2ZvcigodD10fHxlLmxlbmd0aCk+ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSxyPXQtMTswPD1yJiYxMjg9PSgxOTImZVtyXSk7KXItLTtyZXR1cm4gcjwwP3Q6MD09PXI/dDpyK3VbZVtyXV0+dD9yOnR9fSx7XCIuL2NvbW1vblwiOjQxfV0sNDM6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7Zm9yKHZhciBpPTY1NTM1JmV8MCxzPWU+Pj4xNiY2NTUzNXwwLGE9MDswIT09cjspe2ZvcihyLT1hPTJlMzxyPzJlMzpyO3M9cysoaT1pK3RbbisrXXwwKXwwLC0tYTspO2klPTY1NTIxLHMlPTY1NTIxfXJldHVybiBpfHM8PDE2fDB9fSx7fV0sNDQ6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9e1pfTk9fRkxVU0g6MCxaX1BBUlRJQUxfRkxVU0g6MSxaX1NZTkNfRkxVU0g6MixaX0ZVTExfRkxVU0g6MyxaX0ZJTklTSDo0LFpfQkxPQ0s6NSxaX1RSRUVTOjYsWl9PSzowLFpfU1RSRUFNX0VORDoxLFpfTkVFRF9ESUNUOjIsWl9FUlJOTzotMSxaX1NUUkVBTV9FUlJPUjotMixaX0RBVEFfRVJST1I6LTMsWl9CVUZfRVJST1I6LTUsWl9OT19DT01QUkVTU0lPTjowLFpfQkVTVF9TUEVFRDoxLFpfQkVTVF9DT01QUkVTU0lPTjo5LFpfREVGQVVMVF9DT01QUkVTU0lPTjotMSxaX0ZJTFRFUkVEOjEsWl9IVUZGTUFOX09OTFk6MixaX1JMRTozLFpfRklYRUQ6NCxaX0RFRkFVTFRfU1RSQVRFR1k6MCxaX0JJTkFSWTowLFpfVEVYVDoxLFpfVU5LTk9XTjoyLFpfREVGTEFURUQ6OH19LHt9XSw0NTpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBvPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9W10scj0wO3I8MjU2O3IrKyl7ZT1yO2Zvcih2YXIgbj0wO248ODtuKyspZT0xJmU/Mzk4ODI5MjM4NF5lPj4+MTplPj4+MTt0W3JdPWV9cmV0dXJuIHR9KCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPW8scz1uK3I7ZV49LTE7Zm9yKHZhciBhPW47YTxzO2ErKyllPWU+Pj44XmlbMjU1JihlXnRbYV0pXTtyZXR1cm4tMV5lfX0se31dLDQ2OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGgsYz1lKFwiLi4vdXRpbHMvY29tbW9uXCIpLHU9ZShcIi4vdHJlZXNcIiksZD1lKFwiLi9hZGxlcjMyXCIpLHA9ZShcIi4vY3JjMzJcIiksbj1lKFwiLi9tZXNzYWdlc1wiKSxsPTAsZj00LG09MCxfPS0yLGc9LTEsYj00LGk9Mix2PTgseT05LHM9Mjg2LGE9MzAsbz0xOSx3PTIqcysxLGs9MTUseD0zLFM9MjU4LHo9Uyt4KzEsQz00MixFPTExMyxBPTEsST0yLE89MyxCPTQ7ZnVuY3Rpb24gUihlLHQpe3JldHVybiBlLm1zZz1uW3RdLHR9ZnVuY3Rpb24gVChlKXtyZXR1cm4oZTw8MSktKDQ8ZT85OjApfWZ1bmN0aW9uIEQoZSl7Zm9yKHZhciB0PWUubGVuZ3RoOzA8PS0tdDspZVt0XT0wfWZ1bmN0aW9uIEYoZSl7dmFyIHQ9ZS5zdGF0ZSxyPXQucGVuZGluZztyPmUuYXZhaWxfb3V0JiYocj1lLmF2YWlsX291dCksMCE9PXImJihjLmFycmF5U2V0KGUub3V0cHV0LHQucGVuZGluZ19idWYsdC5wZW5kaW5nX291dCxyLGUubmV4dF9vdXQpLGUubmV4dF9vdXQrPXIsdC5wZW5kaW5nX291dCs9cixlLnRvdGFsX291dCs9cixlLmF2YWlsX291dC09cix0LnBlbmRpbmctPXIsMD09PXQucGVuZGluZyYmKHQucGVuZGluZ19vdXQ9MCkpfWZ1bmN0aW9uIE4oZSx0KXt1Ll90cl9mbHVzaF9ibG9jayhlLDA8PWUuYmxvY2tfc3RhcnQ/ZS5ibG9ja19zdGFydDotMSxlLnN0cnN0YXJ0LWUuYmxvY2tfc3RhcnQsdCksZS5ibG9ja19zdGFydD1lLnN0cnN0YXJ0LEYoZS5zdHJtKX1mdW5jdGlvbiBVKGUsdCl7ZS5wZW5kaW5nX2J1ZltlLnBlbmRpbmcrK109dH1mdW5jdGlvbiBQKGUsdCl7ZS5wZW5kaW5nX2J1ZltlLnBlbmRpbmcrK109dD4+PjgmMjU1LGUucGVuZGluZ19idWZbZS5wZW5kaW5nKytdPTI1NSZ0fWZ1bmN0aW9uIEwoZSx0KXt2YXIgcixuLGk9ZS5tYXhfY2hhaW5fbGVuZ3RoLHM9ZS5zdHJzdGFydCxhPWUucHJldl9sZW5ndGgsbz1lLm5pY2VfbWF0Y2gsaD1lLnN0cnN0YXJ0PmUud19zaXplLXo/ZS5zdHJzdGFydC0oZS53X3NpemUteik6MCx1PWUud2luZG93LGw9ZS53X21hc2ssZj1lLnByZXYsYz1lLnN0cnN0YXJ0K1MsZD11W3MrYS0xXSxwPXVbcythXTtlLnByZXZfbGVuZ3RoPj1lLmdvb2RfbWF0Y2gmJihpPj49Miksbz5lLmxvb2thaGVhZCYmKG89ZS5sb29rYWhlYWQpO2Rve2lmKHVbKHI9dCkrYV09PT1wJiZ1W3IrYS0xXT09PWQmJnVbcl09PT11W3NdJiZ1Wysrcl09PT11W3MrMV0pe3MrPTIscisrO2Rve313aGlsZSh1Wysrc109PT11Wysrcl0mJnVbKytzXT09PXVbKytyXSYmdVsrK3NdPT09dVsrK3JdJiZ1Wysrc109PT11Wysrcl0mJnVbKytzXT09PXVbKytyXSYmdVsrK3NdPT09dVsrK3JdJiZ1Wysrc109PT11Wysrcl0mJnVbKytzXT09PXVbKytyXSYmczxjKTtpZihuPVMtKGMtcykscz1jLVMsYTxuKXtpZihlLm1hdGNoX3N0YXJ0PXQsbzw9KGE9bikpYnJlYWs7ZD11W3MrYS0xXSxwPXVbcythXX19fXdoaWxlKCh0PWZbdCZsXSk+aCYmMCE9LS1pKTtyZXR1cm4gYTw9ZS5sb29rYWhlYWQ/YTplLmxvb2thaGVhZH1mdW5jdGlvbiBqKGUpe3ZhciB0LHIsbixpLHMsYSxvLGgsdSxsLGY9ZS53X3NpemU7ZG97aWYoaT1lLndpbmRvd19zaXplLWUubG9va2FoZWFkLWUuc3Ryc3RhcnQsZS5zdHJzdGFydD49ZisoZi16KSl7Zm9yKGMuYXJyYXlTZXQoZS53aW5kb3csZS53aW5kb3csZixmLDApLGUubWF0Y2hfc3RhcnQtPWYsZS5zdHJzdGFydC09ZixlLmJsb2NrX3N0YXJ0LT1mLHQ9cj1lLmhhc2hfc2l6ZTtuPWUuaGVhZFstLXRdLGUuaGVhZFt0XT1mPD1uP24tZjowLC0tcjspO2Zvcih0PXI9ZjtuPWUucHJldlstLXRdLGUucHJldlt0XT1mPD1uP24tZjowLC0tcjspO2krPWZ9aWYoMD09PWUuc3RybS5hdmFpbF9pbilicmVhaztpZihhPWUuc3RybSxvPWUud2luZG93LGg9ZS5zdHJzdGFydCtlLmxvb2thaGVhZCx1PWksbD12b2lkIDAsbD1hLmF2YWlsX2luLHU8bCYmKGw9dSkscj0wPT09bD8wOihhLmF2YWlsX2luLT1sLGMuYXJyYXlTZXQobyxhLmlucHV0LGEubmV4dF9pbixsLGgpLDE9PT1hLnN0YXRlLndyYXA/YS5hZGxlcj1kKGEuYWRsZXIsbyxsLGgpOjI9PT1hLnN0YXRlLndyYXAmJihhLmFkbGVyPXAoYS5hZGxlcixvLGwsaCkpLGEubmV4dF9pbis9bCxhLnRvdGFsX2luKz1sLGwpLGUubG9va2FoZWFkKz1yLGUubG9va2FoZWFkK2UuaW5zZXJ0Pj14KWZvcihzPWUuc3Ryc3RhcnQtZS5pbnNlcnQsZS5pbnNfaD1lLndpbmRvd1tzXSxlLmluc19oPShlLmluc19oPDxlLmhhc2hfc2hpZnReZS53aW5kb3dbcysxXSkmZS5oYXNoX21hc2s7ZS5pbnNlcnQmJihlLmluc19oPShlLmluc19oPDxlLmhhc2hfc2hpZnReZS53aW5kb3dbcyt4LTFdKSZlLmhhc2hfbWFzayxlLnByZXZbcyZlLndfbWFza109ZS5oZWFkW2UuaW5zX2hdLGUuaGVhZFtlLmluc19oXT1zLHMrKyxlLmluc2VydC0tLCEoZS5sb29rYWhlYWQrZS5pbnNlcnQ8eCkpOyk7fXdoaWxlKGUubG9va2FoZWFkPHomJjAhPT1lLnN0cm0uYXZhaWxfaW4pfWZ1bmN0aW9uIFooZSx0KXtmb3IodmFyIHIsbjs7KXtpZihlLmxvb2thaGVhZDx6KXtpZihqKGUpLGUubG9va2FoZWFkPHomJnQ9PT1sKXJldHVybiBBO2lmKDA9PT1lLmxvb2thaGVhZClicmVha31pZihyPTAsZS5sb29rYWhlYWQ+PXgmJihlLmluc19oPShlLmluc19oPDxlLmhhc2hfc2hpZnReZS53aW5kb3dbZS5zdHJzdGFydCt4LTFdKSZlLmhhc2hfbWFzayxyPWUucHJldltlLnN0cnN0YXJ0JmUud19tYXNrXT1lLmhlYWRbZS5pbnNfaF0sZS5oZWFkW2UuaW5zX2hdPWUuc3Ryc3RhcnQpLDAhPT1yJiZlLnN0cnN0YXJ0LXI8PWUud19zaXplLXomJihlLm1hdGNoX2xlbmd0aD1MKGUscikpLGUubWF0Y2hfbGVuZ3RoPj14KWlmKG49dS5fdHJfdGFsbHkoZSxlLnN0cnN0YXJ0LWUubWF0Y2hfc3RhcnQsZS5tYXRjaF9sZW5ndGgteCksZS5sb29rYWhlYWQtPWUubWF0Y2hfbGVuZ3RoLGUubWF0Y2hfbGVuZ3RoPD1lLm1heF9sYXp5X21hdGNoJiZlLmxvb2thaGVhZD49eCl7Zm9yKGUubWF0Y2hfbGVuZ3RoLS07ZS5zdHJzdGFydCsrLGUuaW5zX2g9KGUuaW5zX2g8PGUuaGFzaF9zaGlmdF5lLndpbmRvd1tlLnN0cnN0YXJ0K3gtMV0pJmUuaGFzaF9tYXNrLHI9ZS5wcmV2W2Uuc3Ryc3RhcnQmZS53X21hc2tdPWUuaGVhZFtlLmluc19oXSxlLmhlYWRbZS5pbnNfaF09ZS5zdHJzdGFydCwwIT0tLWUubWF0Y2hfbGVuZ3RoOyk7ZS5zdHJzdGFydCsrfWVsc2UgZS5zdHJzdGFydCs9ZS5tYXRjaF9sZW5ndGgsZS5tYXRjaF9sZW5ndGg9MCxlLmluc19oPWUud2luZG93W2Uuc3Ryc3RhcnRdLGUuaW5zX2g9KGUuaW5zX2g8PGUuaGFzaF9zaGlmdF5lLndpbmRvd1tlLnN0cnN0YXJ0KzFdKSZlLmhhc2hfbWFzaztlbHNlIG49dS5fdHJfdGFsbHkoZSwwLGUud2luZG93W2Uuc3Ryc3RhcnRdKSxlLmxvb2thaGVhZC0tLGUuc3Ryc3RhcnQrKztpZihuJiYoTihlLCExKSwwPT09ZS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIEF9cmV0dXJuIGUuaW5zZXJ0PWUuc3Ryc3RhcnQ8eC0xP2Uuc3Ryc3RhcnQ6eC0xLHQ9PT1mPyhOKGUsITApLDA9PT1lLnN0cm0uYXZhaWxfb3V0P086Qik6ZS5sYXN0X2xpdCYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpP0E6SX1mdW5jdGlvbiBXKGUsdCl7Zm9yKHZhciByLG4saTs7KXtpZihlLmxvb2thaGVhZDx6KXtpZihqKGUpLGUubG9va2FoZWFkPHomJnQ9PT1sKXJldHVybiBBO2lmKDA9PT1lLmxvb2thaGVhZClicmVha31pZihyPTAsZS5sb29rYWhlYWQ+PXgmJihlLmluc19oPShlLmluc19oPDxlLmhhc2hfc2hpZnReZS53aW5kb3dbZS5zdHJzdGFydCt4LTFdKSZlLmhhc2hfbWFzayxyPWUucHJldltlLnN0cnN0YXJ0JmUud19tYXNrXT1lLmhlYWRbZS5pbnNfaF0sZS5oZWFkW2UuaW5zX2hdPWUuc3Ryc3RhcnQpLGUucHJldl9sZW5ndGg9ZS5tYXRjaF9sZW5ndGgsZS5wcmV2X21hdGNoPWUubWF0Y2hfc3RhcnQsZS5tYXRjaF9sZW5ndGg9eC0xLDAhPT1yJiZlLnByZXZfbGVuZ3RoPGUubWF4X2xhenlfbWF0Y2gmJmUuc3Ryc3RhcnQtcjw9ZS53X3NpemUteiYmKGUubWF0Y2hfbGVuZ3RoPUwoZSxyKSxlLm1hdGNoX2xlbmd0aDw9NSYmKDE9PT1lLnN0cmF0ZWd5fHxlLm1hdGNoX2xlbmd0aD09PXgmJjQwOTY8ZS5zdHJzdGFydC1lLm1hdGNoX3N0YXJ0KSYmKGUubWF0Y2hfbGVuZ3RoPXgtMSkpLGUucHJldl9sZW5ndGg+PXgmJmUubWF0Y2hfbGVuZ3RoPD1lLnByZXZfbGVuZ3RoKXtmb3IoaT1lLnN0cnN0YXJ0K2UubG9va2FoZWFkLXgsbj11Ll90cl90YWxseShlLGUuc3Ryc3RhcnQtMS1lLnByZXZfbWF0Y2gsZS5wcmV2X2xlbmd0aC14KSxlLmxvb2thaGVhZC09ZS5wcmV2X2xlbmd0aC0xLGUucHJldl9sZW5ndGgtPTI7KytlLnN0cnN0YXJ0PD1pJiYoZS5pbnNfaD0oZS5pbnNfaDw8ZS5oYXNoX3NoaWZ0XmUud2luZG93W2Uuc3Ryc3RhcnQreC0xXSkmZS5oYXNoX21hc2sscj1lLnByZXZbZS5zdHJzdGFydCZlLndfbWFza109ZS5oZWFkW2UuaW5zX2hdLGUuaGVhZFtlLmluc19oXT1lLnN0cnN0YXJ0KSwwIT0tLWUucHJldl9sZW5ndGg7KTtpZihlLm1hdGNoX2F2YWlsYWJsZT0wLGUubWF0Y2hfbGVuZ3RoPXgtMSxlLnN0cnN0YXJ0KyssbiYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpKXJldHVybiBBfWVsc2UgaWYoZS5tYXRjaF9hdmFpbGFibGUpe2lmKChuPXUuX3RyX3RhbGx5KGUsMCxlLndpbmRvd1tlLnN0cnN0YXJ0LTFdKSkmJk4oZSwhMSksZS5zdHJzdGFydCsrLGUubG9va2FoZWFkLS0sMD09PWUuc3RybS5hdmFpbF9vdXQpcmV0dXJuIEF9ZWxzZSBlLm1hdGNoX2F2YWlsYWJsZT0xLGUuc3Ryc3RhcnQrKyxlLmxvb2thaGVhZC0tfXJldHVybiBlLm1hdGNoX2F2YWlsYWJsZSYmKG49dS5fdHJfdGFsbHkoZSwwLGUud2luZG93W2Uuc3Ryc3RhcnQtMV0pLGUubWF0Y2hfYXZhaWxhYmxlPTApLGUuaW5zZXJ0PWUuc3Ryc3RhcnQ8eC0xP2Uuc3Ryc3RhcnQ6eC0xLHQ9PT1mPyhOKGUsITApLDA9PT1lLnN0cm0uYXZhaWxfb3V0P086Qik6ZS5sYXN0X2xpdCYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpP0E6SX1mdW5jdGlvbiBNKGUsdCxyLG4saSl7dGhpcy5nb29kX2xlbmd0aD1lLHRoaXMubWF4X2xhenk9dCx0aGlzLm5pY2VfbGVuZ3RoPXIsdGhpcy5tYXhfY2hhaW49bix0aGlzLmZ1bmM9aX1mdW5jdGlvbiBIKCl7dGhpcy5zdHJtPW51bGwsdGhpcy5zdGF0dXM9MCx0aGlzLnBlbmRpbmdfYnVmPW51bGwsdGhpcy5wZW5kaW5nX2J1Zl9zaXplPTAsdGhpcy5wZW5kaW5nX291dD0wLHRoaXMucGVuZGluZz0wLHRoaXMud3JhcD0wLHRoaXMuZ3poZWFkPW51bGwsdGhpcy5nemluZGV4PTAsdGhpcy5tZXRob2Q9dix0aGlzLmxhc3RfZmx1c2g9LTEsdGhpcy53X3NpemU9MCx0aGlzLndfYml0cz0wLHRoaXMud19tYXNrPTAsdGhpcy53aW5kb3c9bnVsbCx0aGlzLndpbmRvd19zaXplPTAsdGhpcy5wcmV2PW51bGwsdGhpcy5oZWFkPW51bGwsdGhpcy5pbnNfaD0wLHRoaXMuaGFzaF9zaXplPTAsdGhpcy5oYXNoX2JpdHM9MCx0aGlzLmhhc2hfbWFzaz0wLHRoaXMuaGFzaF9zaGlmdD0wLHRoaXMuYmxvY2tfc3RhcnQ9MCx0aGlzLm1hdGNoX2xlbmd0aD0wLHRoaXMucHJldl9tYXRjaD0wLHRoaXMubWF0Y2hfYXZhaWxhYmxlPTAsdGhpcy5zdHJzdGFydD0wLHRoaXMubWF0Y2hfc3RhcnQ9MCx0aGlzLmxvb2thaGVhZD0wLHRoaXMucHJldl9sZW5ndGg9MCx0aGlzLm1heF9jaGFpbl9sZW5ndGg9MCx0aGlzLm1heF9sYXp5X21hdGNoPTAsdGhpcy5sZXZlbD0wLHRoaXMuc3RyYXRlZ3k9MCx0aGlzLmdvb2RfbWF0Y2g9MCx0aGlzLm5pY2VfbWF0Y2g9MCx0aGlzLmR5bl9sdHJlZT1uZXcgYy5CdWYxNigyKncpLHRoaXMuZHluX2R0cmVlPW5ldyBjLkJ1ZjE2KDIqKDIqYSsxKSksdGhpcy5ibF90cmVlPW5ldyBjLkJ1ZjE2KDIqKDIqbysxKSksRCh0aGlzLmR5bl9sdHJlZSksRCh0aGlzLmR5bl9kdHJlZSksRCh0aGlzLmJsX3RyZWUpLHRoaXMubF9kZXNjPW51bGwsdGhpcy5kX2Rlc2M9bnVsbCx0aGlzLmJsX2Rlc2M9bnVsbCx0aGlzLmJsX2NvdW50PW5ldyBjLkJ1ZjE2KGsrMSksdGhpcy5oZWFwPW5ldyBjLkJ1ZjE2KDIqcysxKSxEKHRoaXMuaGVhcCksdGhpcy5oZWFwX2xlbj0wLHRoaXMuaGVhcF9tYXg9MCx0aGlzLmRlcHRoPW5ldyBjLkJ1ZjE2KDIqcysxKSxEKHRoaXMuZGVwdGgpLHRoaXMubF9idWY9MCx0aGlzLmxpdF9idWZzaXplPTAsdGhpcy5sYXN0X2xpdD0wLHRoaXMuZF9idWY9MCx0aGlzLm9wdF9sZW49MCx0aGlzLnN0YXRpY19sZW49MCx0aGlzLm1hdGNoZXM9MCx0aGlzLmluc2VydD0wLHRoaXMuYmlfYnVmPTAsdGhpcy5iaV92YWxpZD0wfWZ1bmN0aW9uIEcoZSl7dmFyIHQ7cmV0dXJuIGUmJmUuc3RhdGU/KGUudG90YWxfaW49ZS50b3RhbF9vdXQ9MCxlLmRhdGFfdHlwZT1pLCh0PWUuc3RhdGUpLnBlbmRpbmc9MCx0LnBlbmRpbmdfb3V0PTAsdC53cmFwPDAmJih0LndyYXA9LXQud3JhcCksdC5zdGF0dXM9dC53cmFwP0M6RSxlLmFkbGVyPTI9PT10LndyYXA/MDoxLHQubGFzdF9mbHVzaD1sLHUuX3RyX2luaXQodCksbSk6UihlLF8pfWZ1bmN0aW9uIEsoZSl7dmFyIHQ9RyhlKTtyZXR1cm4gdD09PW0mJmZ1bmN0aW9uKGUpe2Uud2luZG93X3NpemU9MiplLndfc2l6ZSxEKGUuaGVhZCksZS5tYXhfbGF6eV9tYXRjaD1oW2UubGV2ZWxdLm1heF9sYXp5LGUuZ29vZF9tYXRjaD1oW2UubGV2ZWxdLmdvb2RfbGVuZ3RoLGUubmljZV9tYXRjaD1oW2UubGV2ZWxdLm5pY2VfbGVuZ3RoLGUubWF4X2NoYWluX2xlbmd0aD1oW2UubGV2ZWxdLm1heF9jaGFpbixlLnN0cnN0YXJ0PTAsZS5ibG9ja19zdGFydD0wLGUubG9va2FoZWFkPTAsZS5pbnNlcnQ9MCxlLm1hdGNoX2xlbmd0aD1lLnByZXZfbGVuZ3RoPXgtMSxlLm1hdGNoX2F2YWlsYWJsZT0wLGUuaW5zX2g9MH0oZS5zdGF0ZSksdH1mdW5jdGlvbiBZKGUsdCxyLG4saSxzKXtpZighZSlyZXR1cm4gXzt2YXIgYT0xO2lmKHQ9PT1nJiYodD02KSxuPDA/KGE9MCxuPS1uKToxNTxuJiYoYT0yLG4tPTE2KSxpPDF8fHk8aXx8ciE9PXZ8fG48OHx8MTU8bnx8dDwwfHw5PHR8fHM8MHx8YjxzKXJldHVybiBSKGUsXyk7OD09PW4mJihuPTkpO3ZhciBvPW5ldyBIO3JldHVybihlLnN0YXRlPW8pLnN0cm09ZSxvLndyYXA9YSxvLmd6aGVhZD1udWxsLG8ud19iaXRzPW4sby53X3NpemU9MTw8by53X2JpdHMsby53X21hc2s9by53X3NpemUtMSxvLmhhc2hfYml0cz1pKzcsby5oYXNoX3NpemU9MTw8by5oYXNoX2JpdHMsby5oYXNoX21hc2s9by5oYXNoX3NpemUtMSxvLmhhc2hfc2hpZnQ9fn4oKG8uaGFzaF9iaXRzK3gtMSkveCksby53aW5kb3c9bmV3IGMuQnVmOCgyKm8ud19zaXplKSxvLmhlYWQ9bmV3IGMuQnVmMTYoby5oYXNoX3NpemUpLG8ucHJldj1uZXcgYy5CdWYxNihvLndfc2l6ZSksby5saXRfYnVmc2l6ZT0xPDxpKzYsby5wZW5kaW5nX2J1Zl9zaXplPTQqby5saXRfYnVmc2l6ZSxvLnBlbmRpbmdfYnVmPW5ldyBjLkJ1Zjgoby5wZW5kaW5nX2J1Zl9zaXplKSxvLmRfYnVmPTEqby5saXRfYnVmc2l6ZSxvLmxfYnVmPTMqby5saXRfYnVmc2l6ZSxvLmxldmVsPXQsby5zdHJhdGVneT1zLG8ubWV0aG9kPXIsSyhlKX1oPVtuZXcgTSgwLDAsMCwwLGZ1bmN0aW9uKGUsdCl7dmFyIHI9NjU1MzU7Zm9yKHI+ZS5wZW5kaW5nX2J1Zl9zaXplLTUmJihyPWUucGVuZGluZ19idWZfc2l6ZS01KTs7KXtpZihlLmxvb2thaGVhZDw9MSl7aWYoaihlKSwwPT09ZS5sb29rYWhlYWQmJnQ9PT1sKXJldHVybiBBO2lmKDA9PT1lLmxvb2thaGVhZClicmVha31lLnN0cnN0YXJ0Kz1lLmxvb2thaGVhZCxlLmxvb2thaGVhZD0wO3ZhciBuPWUuYmxvY2tfc3RhcnQrcjtpZigoMD09PWUuc3Ryc3RhcnR8fGUuc3Ryc3RhcnQ+PW4pJiYoZS5sb29rYWhlYWQ9ZS5zdHJzdGFydC1uLGUuc3Ryc3RhcnQ9bixOKGUsITEpLDA9PT1lLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gQTtpZihlLnN0cnN0YXJ0LWUuYmxvY2tfc3RhcnQ+PWUud19zaXplLXomJihOKGUsITEpLDA9PT1lLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gQX1yZXR1cm4gZS5pbnNlcnQ9MCx0PT09Zj8oTihlLCEwKSwwPT09ZS5zdHJtLmF2YWlsX291dD9POkIpOihlLnN0cnN0YXJ0PmUuYmxvY2tfc3RhcnQmJihOKGUsITEpLGUuc3RybS5hdmFpbF9vdXQpLEEpfSksbmV3IE0oNCw0LDgsNCxaKSxuZXcgTSg0LDUsMTYsOCxaKSxuZXcgTSg0LDYsMzIsMzIsWiksbmV3IE0oNCw0LDE2LDE2LFcpLG5ldyBNKDgsMTYsMzIsMzIsVyksbmV3IE0oOCwxNiwxMjgsMTI4LFcpLG5ldyBNKDgsMzIsMTI4LDI1NixXKSxuZXcgTSgzMiwxMjgsMjU4LDEwMjQsVyksbmV3IE0oMzIsMjU4LDI1OCw0MDk2LFcpXSxyLmRlZmxhdGVJbml0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFkoZSx0LHYsMTUsOCwwKX0sci5kZWZsYXRlSW5pdDI9WSxyLmRlZmxhdGVSZXNldD1LLHIuZGVmbGF0ZVJlc2V0S2VlcD1HLHIuZGVmbGF0ZVNldEhlYWRlcj1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLnN0YXRlPzIhPT1lLnN0YXRlLndyYXA/XzooZS5zdGF0ZS5nemhlYWQ9dCxtKTpffSxyLmRlZmxhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGkscztpZighZXx8IWUuc3RhdGV8fDU8dHx8dDwwKXJldHVybiBlP1IoZSxfKTpfO2lmKG49ZS5zdGF0ZSwhZS5vdXRwdXR8fCFlLmlucHV0JiYwIT09ZS5hdmFpbF9pbnx8NjY2PT09bi5zdGF0dXMmJnQhPT1mKXJldHVybiBSKGUsMD09PWUuYXZhaWxfb3V0Py01Ol8pO2lmKG4uc3RybT1lLHI9bi5sYXN0X2ZsdXNoLG4ubGFzdF9mbHVzaD10LG4uc3RhdHVzPT09QylpZigyPT09bi53cmFwKWUuYWRsZXI9MCxVKG4sMzEpLFUobiwxMzkpLFUobiw4KSxuLmd6aGVhZD8oVShuLChuLmd6aGVhZC50ZXh0PzE6MCkrKG4uZ3poZWFkLmhjcmM/MjowKSsobi5nemhlYWQuZXh0cmE/NDowKSsobi5nemhlYWQubmFtZT84OjApKyhuLmd6aGVhZC5jb21tZW50PzE2OjApKSxVKG4sMjU1Jm4uZ3poZWFkLnRpbWUpLFUobixuLmd6aGVhZC50aW1lPj44JjI1NSksVShuLG4uZ3poZWFkLnRpbWU+PjE2JjI1NSksVShuLG4uZ3poZWFkLnRpbWU+PjI0JjI1NSksVShuLDk9PT1uLmxldmVsPzI6Mjw9bi5zdHJhdGVneXx8bi5sZXZlbDwyPzQ6MCksVShuLDI1NSZuLmd6aGVhZC5vcyksbi5nemhlYWQuZXh0cmEmJm4uZ3poZWFkLmV4dHJhLmxlbmd0aCYmKFUobiwyNTUmbi5nemhlYWQuZXh0cmEubGVuZ3RoKSxVKG4sbi5nemhlYWQuZXh0cmEubGVuZ3RoPj44JjI1NSkpLG4uZ3poZWFkLmhjcmMmJihlLmFkbGVyPXAoZS5hZGxlcixuLnBlbmRpbmdfYnVmLG4ucGVuZGluZywwKSksbi5nemluZGV4PTAsbi5zdGF0dXM9NjkpOihVKG4sMCksVShuLDApLFUobiwwKSxVKG4sMCksVShuLDApLFUobiw5PT09bi5sZXZlbD8yOjI8PW4uc3RyYXRlZ3l8fG4ubGV2ZWw8Mj80OjApLFUobiwzKSxuLnN0YXR1cz1FKTtlbHNle3ZhciBhPXYrKG4ud19iaXRzLTg8PDQpPDw4O2F8PSgyPD1uLnN0cmF0ZWd5fHxuLmxldmVsPDI/MDpuLmxldmVsPDY/MTo2PT09bi5sZXZlbD8yOjMpPDw2LDAhPT1uLnN0cnN0YXJ0JiYoYXw9MzIpLGErPTMxLWElMzEsbi5zdGF0dXM9RSxQKG4sYSksMCE9PW4uc3Ryc3RhcnQmJihQKG4sZS5hZGxlcj4+PjE2KSxQKG4sNjU1MzUmZS5hZGxlcikpLGUuYWRsZXI9MX1pZig2OT09PW4uc3RhdHVzKWlmKG4uZ3poZWFkLmV4dHJhKXtmb3IoaT1uLnBlbmRpbmc7bi5nemluZGV4PCg2NTUzNSZuLmd6aGVhZC5leHRyYS5sZW5ndGgpJiYobi5wZW5kaW5nIT09bi5wZW5kaW5nX2J1Zl9zaXplfHwobi5nemhlYWQuaGNyYyYmbi5wZW5kaW5nPmkmJihlLmFkbGVyPXAoZS5hZGxlcixuLnBlbmRpbmdfYnVmLG4ucGVuZGluZy1pLGkpKSxGKGUpLGk9bi5wZW5kaW5nLG4ucGVuZGluZyE9PW4ucGVuZGluZ19idWZfc2l6ZSkpOylVKG4sMjU1Jm4uZ3poZWFkLmV4dHJhW24uZ3ppbmRleF0pLG4uZ3ppbmRleCsrO24uZ3poZWFkLmhjcmMmJm4ucGVuZGluZz5pJiYoZS5hZGxlcj1wKGUuYWRsZXIsbi5wZW5kaW5nX2J1ZixuLnBlbmRpbmctaSxpKSksbi5nemluZGV4PT09bi5nemhlYWQuZXh0cmEubGVuZ3RoJiYobi5nemluZGV4PTAsbi5zdGF0dXM9NzMpfWVsc2Ugbi5zdGF0dXM9NzM7aWYoNzM9PT1uLnN0YXR1cylpZihuLmd6aGVhZC5uYW1lKXtpPW4ucGVuZGluZztkb3tpZihuLnBlbmRpbmc9PT1uLnBlbmRpbmdfYnVmX3NpemUmJihuLmd6aGVhZC5oY3JjJiZuLnBlbmRpbmc+aSYmKGUuYWRsZXI9cChlLmFkbGVyLG4ucGVuZGluZ19idWYsbi5wZW5kaW5nLWksaSkpLEYoZSksaT1uLnBlbmRpbmcsbi5wZW5kaW5nPT09bi5wZW5kaW5nX2J1Zl9zaXplKSl7cz0xO2JyZWFrfXM9bi5nemluZGV4PG4uZ3poZWFkLm5hbWUubGVuZ3RoPzI1NSZuLmd6aGVhZC5uYW1lLmNoYXJDb2RlQXQobi5nemluZGV4KyspOjAsVShuLHMpfXdoaWxlKDAhPT1zKTtuLmd6aGVhZC5oY3JjJiZuLnBlbmRpbmc+aSYmKGUuYWRsZXI9cChlLmFkbGVyLG4ucGVuZGluZ19idWYsbi5wZW5kaW5nLWksaSkpLDA9PT1zJiYobi5nemluZGV4PTAsbi5zdGF0dXM9OTEpfWVsc2Ugbi5zdGF0dXM9OTE7aWYoOTE9PT1uLnN0YXR1cylpZihuLmd6aGVhZC5jb21tZW50KXtpPW4ucGVuZGluZztkb3tpZihuLnBlbmRpbmc9PT1uLnBlbmRpbmdfYnVmX3NpemUmJihuLmd6aGVhZC5oY3JjJiZuLnBlbmRpbmc+aSYmKGUuYWRsZXI9cChlLmFkbGVyLG4ucGVuZGluZ19idWYsbi5wZW5kaW5nLWksaSkpLEYoZSksaT1uLnBlbmRpbmcsbi5wZW5kaW5nPT09bi5wZW5kaW5nX2J1Zl9zaXplKSl7cz0xO2JyZWFrfXM9bi5nemluZGV4PG4uZ3poZWFkLmNvbW1lbnQubGVuZ3RoPzI1NSZuLmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQobi5nemluZGV4KyspOjAsVShuLHMpfXdoaWxlKDAhPT1zKTtuLmd6aGVhZC5oY3JjJiZuLnBlbmRpbmc+aSYmKGUuYWRsZXI9cChlLmFkbGVyLG4ucGVuZGluZ19idWYsbi5wZW5kaW5nLWksaSkpLDA9PT1zJiYobi5zdGF0dXM9MTAzKX1lbHNlIG4uc3RhdHVzPTEwMztpZigxMDM9PT1uLnN0YXR1cyYmKG4uZ3poZWFkLmhjcmM/KG4ucGVuZGluZysyPm4ucGVuZGluZ19idWZfc2l6ZSYmRihlKSxuLnBlbmRpbmcrMjw9bi5wZW5kaW5nX2J1Zl9zaXplJiYoVShuLDI1NSZlLmFkbGVyKSxVKG4sZS5hZGxlcj4+OCYyNTUpLGUuYWRsZXI9MCxuLnN0YXR1cz1FKSk6bi5zdGF0dXM9RSksMCE9PW4ucGVuZGluZyl7aWYoRihlKSwwPT09ZS5hdmFpbF9vdXQpcmV0dXJuIG4ubGFzdF9mbHVzaD0tMSxtfWVsc2UgaWYoMD09PWUuYXZhaWxfaW4mJlQodCk8PVQocikmJnQhPT1mKXJldHVybiBSKGUsLTUpO2lmKDY2Nj09PW4uc3RhdHVzJiYwIT09ZS5hdmFpbF9pbilyZXR1cm4gUihlLC01KTtpZigwIT09ZS5hdmFpbF9pbnx8MCE9PW4ubG9va2FoZWFkfHx0IT09bCYmNjY2IT09bi5zdGF0dXMpe3ZhciBvPTI9PT1uLnN0cmF0ZWd5P2Z1bmN0aW9uKGUsdCl7Zm9yKHZhciByOzspe2lmKDA9PT1lLmxvb2thaGVhZCYmKGooZSksMD09PWUubG9va2FoZWFkKSl7aWYodD09PWwpcmV0dXJuIEE7YnJlYWt9aWYoZS5tYXRjaF9sZW5ndGg9MCxyPXUuX3RyX3RhbGx5KGUsMCxlLndpbmRvd1tlLnN0cnN0YXJ0XSksZS5sb29rYWhlYWQtLSxlLnN0cnN0YXJ0KyssciYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpKXJldHVybiBBfXJldHVybiBlLmluc2VydD0wLHQ9PT1mPyhOKGUsITApLDA9PT1lLnN0cm0uYXZhaWxfb3V0P086Qik6ZS5sYXN0X2xpdCYmKE4oZSwhMSksMD09PWUuc3RybS5hdmFpbF9vdXQpP0E6SX0obix0KTozPT09bi5zdHJhdGVneT9mdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGkscyxhPWUud2luZG93Ozspe2lmKGUubG9va2FoZWFkPD1TKXtpZihqKGUpLGUubG9va2FoZWFkPD1TJiZ0PT09bClyZXR1cm4gQTtpZigwPT09ZS5sb29rYWhlYWQpYnJlYWt9aWYoZS5tYXRjaF9sZW5ndGg9MCxlLmxvb2thaGVhZD49eCYmMDxlLnN0cnN0YXJ0JiYobj1hW2k9ZS5zdHJzdGFydC0xXSk9PT1hWysraV0mJm49PT1hWysraV0mJm49PT1hWysraV0pe3M9ZS5zdHJzdGFydCtTO2Rve313aGlsZShuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZuPT09YVsrK2ldJiZpPHMpO2UubWF0Y2hfbGVuZ3RoPVMtKHMtaSksZS5tYXRjaF9sZW5ndGg+ZS5sb29rYWhlYWQmJihlLm1hdGNoX2xlbmd0aD1lLmxvb2thaGVhZCl9aWYoZS5tYXRjaF9sZW5ndGg+PXg/KHI9dS5fdHJfdGFsbHkoZSwxLGUubWF0Y2hfbGVuZ3RoLXgpLGUubG9va2FoZWFkLT1lLm1hdGNoX2xlbmd0aCxlLnN0cnN0YXJ0Kz1lLm1hdGNoX2xlbmd0aCxlLm1hdGNoX2xlbmd0aD0wKToocj11Ll90cl90YWxseShlLDAsZS53aW5kb3dbZS5zdHJzdGFydF0pLGUubG9va2FoZWFkLS0sZS5zdHJzdGFydCsrKSxyJiYoTihlLCExKSwwPT09ZS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIEF9cmV0dXJuIGUuaW5zZXJ0PTAsdD09PWY/KE4oZSwhMCksMD09PWUuc3RybS5hdmFpbF9vdXQ/TzpCKTplLmxhc3RfbGl0JiYoTihlLCExKSwwPT09ZS5zdHJtLmF2YWlsX291dCk/QTpJfShuLHQpOmhbbi5sZXZlbF0uZnVuYyhuLHQpO2lmKG8hPT1PJiZvIT09Qnx8KG4uc3RhdHVzPTY2Niksbz09PUF8fG89PT1PKXJldHVybiAwPT09ZS5hdmFpbF9vdXQmJihuLmxhc3RfZmx1c2g9LTEpLG07aWYobz09PUkmJigxPT09dD91Ll90cl9hbGlnbihuKTo1IT09dCYmKHUuX3RyX3N0b3JlZF9ibG9jayhuLDAsMCwhMSksMz09PXQmJihEKG4uaGVhZCksMD09PW4ubG9va2FoZWFkJiYobi5zdHJzdGFydD0wLG4uYmxvY2tfc3RhcnQ9MCxuLmluc2VydD0wKSkpLEYoZSksMD09PWUuYXZhaWxfb3V0KSlyZXR1cm4gbi5sYXN0X2ZsdXNoPS0xLG19cmV0dXJuIHQhPT1mP206bi53cmFwPD0wPzE6KDI9PT1uLndyYXA/KFUobiwyNTUmZS5hZGxlciksVShuLGUuYWRsZXI+PjgmMjU1KSxVKG4sZS5hZGxlcj4+MTYmMjU1KSxVKG4sZS5hZGxlcj4+MjQmMjU1KSxVKG4sMjU1JmUudG90YWxfaW4pLFUobixlLnRvdGFsX2luPj44JjI1NSksVShuLGUudG90YWxfaW4+PjE2JjI1NSksVShuLGUudG90YWxfaW4+PjI0JjI1NSkpOihQKG4sZS5hZGxlcj4+PjE2KSxQKG4sNjU1MzUmZS5hZGxlcikpLEYoZSksMDxuLndyYXAmJihuLndyYXA9LW4ud3JhcCksMCE9PW4ucGVuZGluZz9tOjEpfSxyLmRlZmxhdGVFbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGUmJmUuc3RhdGU/KHQ9ZS5zdGF0ZS5zdGF0dXMpIT09QyYmNjkhPT10JiY3MyE9PXQmJjkxIT09dCYmMTAzIT09dCYmdCE9PUUmJjY2NiE9PXQ/UihlLF8pOihlLnN0YXRlPW51bGwsdD09PUU/UihlLC0zKTptKTpffSxyLmRlZmxhdGVTZXREaWN0aW9uYXJ5PWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLHMsYSxvLGgsdSxsPXQubGVuZ3RoO2lmKCFlfHwhZS5zdGF0ZSlyZXR1cm4gXztpZigyPT09KHM9KHI9ZS5zdGF0ZSkud3JhcCl8fDE9PT1zJiZyLnN0YXR1cyE9PUN8fHIubG9va2FoZWFkKXJldHVybiBfO2ZvcigxPT09cyYmKGUuYWRsZXI9ZChlLmFkbGVyLHQsbCwwKSksci53cmFwPTAsbD49ci53X3NpemUmJigwPT09cyYmKEQoci5oZWFkKSxyLnN0cnN0YXJ0PTAsci5ibG9ja19zdGFydD0wLHIuaW5zZXJ0PTApLHU9bmV3IGMuQnVmOChyLndfc2l6ZSksYy5hcnJheVNldCh1LHQsbC1yLndfc2l6ZSxyLndfc2l6ZSwwKSx0PXUsbD1yLndfc2l6ZSksYT1lLmF2YWlsX2luLG89ZS5uZXh0X2luLGg9ZS5pbnB1dCxlLmF2YWlsX2luPWwsZS5uZXh0X2luPTAsZS5pbnB1dD10LGoocik7ci5sb29rYWhlYWQ+PXg7KXtmb3Iobj1yLnN0cnN0YXJ0LGk9ci5sb29rYWhlYWQtKHgtMSk7ci5pbnNfaD0oci5pbnNfaDw8ci5oYXNoX3NoaWZ0XnIud2luZG93W24reC0xXSkmci5oYXNoX21hc2ssci5wcmV2W24mci53X21hc2tdPXIuaGVhZFtyLmluc19oXSxyLmhlYWRbci5pbnNfaF09bixuKyssLS1pOyk7ci5zdHJzdGFydD1uLHIubG9va2FoZWFkPXgtMSxqKHIpfXJldHVybiByLnN0cnN0YXJ0Kz1yLmxvb2thaGVhZCxyLmJsb2NrX3N0YXJ0PXIuc3Ryc3RhcnQsci5pbnNlcnQ9ci5sb29rYWhlYWQsci5sb29rYWhlYWQ9MCxyLm1hdGNoX2xlbmd0aD1yLnByZXZfbGVuZ3RoPXgtMSxyLm1hdGNoX2F2YWlsYWJsZT0wLGUubmV4dF9pbj1vLGUuaW5wdXQ9aCxlLmF2YWlsX2luPWEsci53cmFwPXMsbX0sci5kZWZsYXRlSW5mbz1cInBha28gZGVmbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdClcIn0se1wiLi4vdXRpbHMvY29tbW9uXCI6NDEsXCIuL2FkbGVyMzJcIjo0MyxcIi4vY3JjMzJcIjo0NSxcIi4vbWVzc2FnZXNcIjo1MSxcIi4vdHJlZXNcIjo1Mn1dLDQ3OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy50ZXh0PTAsdGhpcy50aW1lPTAsdGhpcy54ZmxhZ3M9MCx0aGlzLm9zPTAsdGhpcy5leHRyYT1udWxsLHRoaXMuZXh0cmFfbGVuPTAsdGhpcy5uYW1lPVwiXCIsdGhpcy5jb21tZW50PVwiXCIsdGhpcy5oY3JjPTAsdGhpcy5kb25lPSExfX0se31dLDQ4OltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLHMsYSxvLGgsdSxsLGYsYyxkLHAsbSxfLGcsYix2LHksdyxrLHgsUyx6LEM7cj1lLnN0YXRlLG49ZS5uZXh0X2luLHo9ZS5pbnB1dCxpPW4rKGUuYXZhaWxfaW4tNSkscz1lLm5leHRfb3V0LEM9ZS5vdXRwdXQsYT1zLSh0LWUuYXZhaWxfb3V0KSxvPXMrKGUuYXZhaWxfb3V0LTI1NyksaD1yLmRtYXgsdT1yLndzaXplLGw9ci53aGF2ZSxmPXIud25leHQsYz1yLndpbmRvdyxkPXIuaG9sZCxwPXIuYml0cyxtPXIubGVuY29kZSxfPXIuZGlzdGNvZGUsZz0oMTw8ci5sZW5iaXRzKS0xLGI9KDE8PHIuZGlzdGJpdHMpLTE7ZTpkb3twPDE1JiYoZCs9eltuKytdPDxwLHArPTgsZCs9eltuKytdPDxwLHArPTgpLHY9bVtkJmddO3Q6Zm9yKDs7KXtpZihkPj4+PXk9dj4+PjI0LHAtPXksMD09PSh5PXY+Pj4xNiYyNTUpKUNbcysrXT02NTUzNSZ2O2Vsc2V7aWYoISgxNiZ5KSl7aWYoMD09KDY0JnkpKXt2PW1bKDY1NTM1JnYpKyhkJigxPDx5KS0xKV07Y29udGludWUgdH1pZigzMiZ5KXtyLm1vZGU9MTI7YnJlYWsgZX1lLm1zZz1cImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZVwiLHIubW9kZT0zMDticmVhayBlfXc9NjU1MzUmdiwoeSY9MTUpJiYocDx5JiYoZCs9eltuKytdPDxwLHArPTgpLHcrPWQmKDE8PHkpLTEsZD4+Pj15LHAtPXkpLHA8MTUmJihkKz16W24rK108PHAscCs9OCxkKz16W24rK108PHAscCs9OCksdj1fW2QmYl07cjpmb3IoOzspe2lmKGQ+Pj49eT12Pj4+MjQscC09eSwhKDE2Jih5PXY+Pj4xNiYyNTUpKSl7aWYoMD09KDY0JnkpKXt2PV9bKDY1NTM1JnYpKyhkJigxPDx5KS0xKV07Y29udGludWUgcn1lLm1zZz1cImludmFsaWQgZGlzdGFuY2UgY29kZVwiLHIubW9kZT0zMDticmVhayBlfWlmKGs9NjU1MzUmdixwPCh5Jj0xNSkmJihkKz16W24rK108PHAsKHArPTgpPHkmJihkKz16W24rK108PHAscCs9OCkpLGg8KGsrPWQmKDE8PHkpLTEpKXtlLm1zZz1cImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrXCIsci5tb2RlPTMwO2JyZWFrIGV9aWYoZD4+Pj15LHAtPXksKHk9cy1hKTxrKXtpZihsPCh5PWsteSkmJnIuc2FuZSl7ZS5tc2c9XCJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFja1wiLHIubW9kZT0zMDticmVhayBlfWlmKFM9YywoeD0wKT09PWYpe2lmKHgrPXUteSx5PHcpe2Zvcih3LT15O0NbcysrXT1jW3grK10sLS15Oyk7eD1zLWssUz1DfX1lbHNlIGlmKGY8eSl7aWYoeCs9dStmLXksKHktPWYpPHcpe2Zvcih3LT15O0NbcysrXT1jW3grK10sLS15Oyk7aWYoeD0wLGY8dyl7Zm9yKHctPXk9ZjtDW3MrK109Y1t4KytdLC0teTspO3g9cy1rLFM9Q319fWVsc2UgaWYoeCs9Zi15LHk8dyl7Zm9yKHctPXk7Q1tzKytdPWNbeCsrXSwtLXk7KTt4PXMtayxTPUN9Zm9yKDsyPHc7KUNbcysrXT1TW3grK10sQ1tzKytdPVNbeCsrXSxDW3MrK109U1t4KytdLHctPTM7dyYmKENbcysrXT1TW3grK10sMTx3JiYoQ1tzKytdPVNbeCsrXSkpfWVsc2V7Zm9yKHg9cy1rO0NbcysrXT1DW3grK10sQ1tzKytdPUNbeCsrXSxDW3MrK109Q1t4KytdLDI8KHctPTMpOyk7dyYmKENbcysrXT1DW3grK10sMTx3JiYoQ1tzKytdPUNbeCsrXSkpfWJyZWFrfX1icmVha319d2hpbGUobjxpJiZzPG8pO24tPXc9cD4+MyxkJj0oMTw8KHAtPXc8PDMpKS0xLGUubmV4dF9pbj1uLGUubmV4dF9vdXQ9cyxlLmF2YWlsX2luPW48aT9pLW4rNTo1LShuLWkpLGUuYXZhaWxfb3V0PXM8bz9vLXMrMjU3OjI1Ny0ocy1vKSxyLmhvbGQ9ZCxyLmJpdHM9cH19LHt9XSw0OTpbZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBJPWUoXCIuLi91dGlscy9jb21tb25cIiksTz1lKFwiLi9hZGxlcjMyXCIpLEI9ZShcIi4vY3JjMzJcIiksUj1lKFwiLi9pbmZmYXN0XCIpLFQ9ZShcIi4vaW5mdHJlZXNcIiksRD0xLEY9MixOPTAsVT0tMixQPTEsbj04NTIsaT01OTI7ZnVuY3Rpb24gTChlKXtyZXR1cm4oZT4+PjI0JjI1NSkrKGU+Pj44JjY1MjgwKSsoKDY1MjgwJmUpPDw4KSsoKDI1NSZlKTw8MjQpfWZ1bmN0aW9uIHMoKXt0aGlzLm1vZGU9MCx0aGlzLmxhc3Q9ITEsdGhpcy53cmFwPTAsdGhpcy5oYXZlZGljdD0hMSx0aGlzLmZsYWdzPTAsdGhpcy5kbWF4PTAsdGhpcy5jaGVjaz0wLHRoaXMudG90YWw9MCx0aGlzLmhlYWQ9bnVsbCx0aGlzLndiaXRzPTAsdGhpcy53c2l6ZT0wLHRoaXMud2hhdmU9MCx0aGlzLnduZXh0PTAsdGhpcy53aW5kb3c9bnVsbCx0aGlzLmhvbGQ9MCx0aGlzLmJpdHM9MCx0aGlzLmxlbmd0aD0wLHRoaXMub2Zmc2V0PTAsdGhpcy5leHRyYT0wLHRoaXMubGVuY29kZT1udWxsLHRoaXMuZGlzdGNvZGU9bnVsbCx0aGlzLmxlbmJpdHM9MCx0aGlzLmRpc3RiaXRzPTAsdGhpcy5uY29kZT0wLHRoaXMubmxlbj0wLHRoaXMubmRpc3Q9MCx0aGlzLmhhdmU9MCx0aGlzLm5leHQ9bnVsbCx0aGlzLmxlbnM9bmV3IEkuQnVmMTYoMzIwKSx0aGlzLndvcms9bmV3IEkuQnVmMTYoMjg4KSx0aGlzLmxlbmR5bj1udWxsLHRoaXMuZGlzdGR5bj1udWxsLHRoaXMuc2FuZT0wLHRoaXMuYmFjaz0wLHRoaXMud2FzPTB9ZnVuY3Rpb24gYShlKXt2YXIgdDtyZXR1cm4gZSYmZS5zdGF0ZT8odD1lLnN0YXRlLGUudG90YWxfaW49ZS50b3RhbF9vdXQ9dC50b3RhbD0wLGUubXNnPVwiXCIsdC53cmFwJiYoZS5hZGxlcj0xJnQud3JhcCksdC5tb2RlPVAsdC5sYXN0PTAsdC5oYXZlZGljdD0wLHQuZG1heD0zMjc2OCx0LmhlYWQ9bnVsbCx0LmhvbGQ9MCx0LmJpdHM9MCx0LmxlbmNvZGU9dC5sZW5keW49bmV3IEkuQnVmMzIobiksdC5kaXN0Y29kZT10LmRpc3RkeW49bmV3IEkuQnVmMzIoaSksdC5zYW5lPTEsdC5iYWNrPS0xLE4pOlV9ZnVuY3Rpb24gbyhlKXt2YXIgdDtyZXR1cm4gZSYmZS5zdGF0ZT8oKHQ9ZS5zdGF0ZSkud3NpemU9MCx0LndoYXZlPTAsdC53bmV4dD0wLGEoZSkpOlV9ZnVuY3Rpb24gaChlLHQpe3ZhciByLG47cmV0dXJuIGUmJmUuc3RhdGU/KG49ZS5zdGF0ZSx0PDA/KHI9MCx0PS10KToocj0xKyh0Pj40KSx0PDQ4JiYodCY9MTUpKSx0JiYodDw4fHwxNTx0KT9VOihudWxsIT09bi53aW5kb3cmJm4ud2JpdHMhPT10JiYobi53aW5kb3c9bnVsbCksbi53cmFwPXIsbi53Yml0cz10LG8oZSkpKTpVfWZ1bmN0aW9uIHUoZSx0KXt2YXIgcixuO3JldHVybiBlPyhuPW5ldyBzLChlLnN0YXRlPW4pLndpbmRvdz1udWxsLChyPWgoZSx0KSkhPT1OJiYoZS5zdGF0ZT1udWxsKSxyKTpVfXZhciBsLGYsYz0hMDtmdW5jdGlvbiBqKGUpe2lmKGMpe3ZhciB0O2ZvcihsPW5ldyBJLkJ1ZjMyKDUxMiksZj1uZXcgSS5CdWYzMigzMiksdD0wO3Q8MTQ0OyllLmxlbnNbdCsrXT04O2Zvcig7dDwyNTY7KWUubGVuc1t0KytdPTk7Zm9yKDt0PDI4MDspZS5sZW5zW3QrK109Nztmb3IoO3Q8Mjg4OyllLmxlbnNbdCsrXT04O2ZvcihUKEQsZS5sZW5zLDAsMjg4LGwsMCxlLndvcmsse2JpdHM6OX0pLHQ9MDt0PDMyOyllLmxlbnNbdCsrXT01O1QoRixlLmxlbnMsMCwzMixmLDAsZS53b3JrLHtiaXRzOjV9KSxjPSExfWUubGVuY29kZT1sLGUubGVuYml0cz05LGUuZGlzdGNvZGU9ZixlLmRpc3RiaXRzPTV9ZnVuY3Rpb24gWihlLHQscixuKXt2YXIgaSxzPWUuc3RhdGU7cmV0dXJuIG51bGw9PT1zLndpbmRvdyYmKHMud3NpemU9MTw8cy53Yml0cyxzLnduZXh0PTAscy53aGF2ZT0wLHMud2luZG93PW5ldyBJLkJ1Zjgocy53c2l6ZSkpLG4+PXMud3NpemU/KEkuYXJyYXlTZXQocy53aW5kb3csdCxyLXMud3NpemUscy53c2l6ZSwwKSxzLnduZXh0PTAscy53aGF2ZT1zLndzaXplKToobjwoaT1zLndzaXplLXMud25leHQpJiYoaT1uKSxJLmFycmF5U2V0KHMud2luZG93LHQsci1uLGkscy53bmV4dCksKG4tPWkpPyhJLmFycmF5U2V0KHMud2luZG93LHQsci1uLG4sMCkscy53bmV4dD1uLHMud2hhdmU9cy53c2l6ZSk6KHMud25leHQrPWkscy53bmV4dD09PXMud3NpemUmJihzLnduZXh0PTApLHMud2hhdmU8cy53c2l6ZSYmKHMud2hhdmUrPWkpKSksMH1yLmluZmxhdGVSZXNldD1vLHIuaW5mbGF0ZVJlc2V0Mj1oLHIuaW5mbGF0ZVJlc2V0S2VlcD1hLHIuaW5mbGF0ZUluaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSwxNSl9LHIuaW5mbGF0ZUluaXQyPXUsci5pbmZsYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLHMsYSxvLGgsdSxsLGYsYyxkLHAsbSxfLGcsYix2LHksdyxrLHgsUyx6LEM9MCxFPW5ldyBJLkJ1ZjgoNCksQT1bMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07aWYoIWV8fCFlLnN0YXRlfHwhZS5vdXRwdXR8fCFlLmlucHV0JiYwIT09ZS5hdmFpbF9pbilyZXR1cm4gVTsxMj09PShyPWUuc3RhdGUpLm1vZGUmJihyLm1vZGU9MTMpLGE9ZS5uZXh0X291dCxpPWUub3V0cHV0LGg9ZS5hdmFpbF9vdXQscz1lLm5leHRfaW4sbj1lLmlucHV0LG89ZS5hdmFpbF9pbix1PXIuaG9sZCxsPXIuYml0cyxmPW8sYz1oLHg9TjtlOmZvcig7Oylzd2l0Y2goci5tb2RlKXtjYXNlIFA6aWYoMD09PXIud3JhcCl7ci5tb2RlPTEzO2JyZWFrfWZvcig7bDwxNjspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKDImci53cmFwJiYzNTYxNT09PXUpe0Vbci5jaGVjaz0wXT0yNTUmdSxFWzFdPXU+Pj44JjI1NSxyLmNoZWNrPUIoci5jaGVjayxFLDIsMCksbD11PTAsci5tb2RlPTI7YnJlYWt9aWYoci5mbGFncz0wLHIuaGVhZCYmKHIuaGVhZC5kb25lPSExKSwhKDEmci53cmFwKXx8KCgoMjU1JnUpPDw4KSsodT4+OCkpJTMxKXtlLm1zZz1cImluY29ycmVjdCBoZWFkZXIgY2hlY2tcIixyLm1vZGU9MzA7YnJlYWt9aWYoOCE9KDE1JnUpKXtlLm1zZz1cInVua25vd24gY29tcHJlc3Npb24gbWV0aG9kXCIsci5tb2RlPTMwO2JyZWFrfWlmKGwtPTQsaz04KygxNSYodT4+Pj00KSksMD09PXIud2JpdHMpci53Yml0cz1rO2Vsc2UgaWYoaz5yLndiaXRzKXtlLm1zZz1cImludmFsaWQgd2luZG93IHNpemVcIixyLm1vZGU9MzA7YnJlYWt9ci5kbWF4PTE8PGssZS5hZGxlcj1yLmNoZWNrPTEsci5tb2RlPTUxMiZ1PzEwOjEyLGw9dT0wO2JyZWFrO2Nhc2UgMjpmb3IoO2w8MTY7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1pZihyLmZsYWdzPXUsOCE9KDI1NSZyLmZsYWdzKSl7ZS5tc2c9XCJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZFwiLHIubW9kZT0zMDticmVha31pZig1NzM0NCZyLmZsYWdzKXtlLm1zZz1cInVua25vd24gaGVhZGVyIGZsYWdzIHNldFwiLHIubW9kZT0zMDticmVha31yLmhlYWQmJihyLmhlYWQudGV4dD11Pj44JjEpLDUxMiZyLmZsYWdzJiYoRVswXT0yNTUmdSxFWzFdPXU+Pj44JjI1NSxyLmNoZWNrPUIoci5jaGVjayxFLDIsMCkpLGw9dT0wLHIubW9kZT0zO2Nhc2UgMzpmb3IoO2w8MzI7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1yLmhlYWQmJihyLmhlYWQudGltZT11KSw1MTImci5mbGFncyYmKEVbMF09MjU1JnUsRVsxXT11Pj4+OCYyNTUsRVsyXT11Pj4+MTYmMjU1LEVbM109dT4+PjI0JjI1NSxyLmNoZWNrPUIoci5jaGVjayxFLDQsMCkpLGw9dT0wLHIubW9kZT00O2Nhc2UgNDpmb3IoO2w8MTY7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1yLmhlYWQmJihyLmhlYWQueGZsYWdzPTI1NSZ1LHIuaGVhZC5vcz11Pj44KSw1MTImci5mbGFncyYmKEVbMF09MjU1JnUsRVsxXT11Pj4+OCYyNTUsci5jaGVjaz1CKHIuY2hlY2ssRSwyLDApKSxsPXU9MCxyLm1vZGU9NTtjYXNlIDU6aWYoMTAyNCZyLmZsYWdzKXtmb3IoO2w8MTY7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1yLmxlbmd0aD11LHIuaGVhZCYmKHIuaGVhZC5leHRyYV9sZW49dSksNTEyJnIuZmxhZ3MmJihFWzBdPTI1NSZ1LEVbMV09dT4+PjgmMjU1LHIuY2hlY2s9QihyLmNoZWNrLEUsMiwwKSksbD11PTB9ZWxzZSByLmhlYWQmJihyLmhlYWQuZXh0cmE9bnVsbCk7ci5tb2RlPTY7Y2FzZSA2OmlmKDEwMjQmci5mbGFncyYmKG88KGQ9ci5sZW5ndGgpJiYoZD1vKSxkJiYoci5oZWFkJiYoaz1yLmhlYWQuZXh0cmFfbGVuLXIubGVuZ3RoLHIuaGVhZC5leHRyYXx8KHIuaGVhZC5leHRyYT1uZXcgQXJyYXkoci5oZWFkLmV4dHJhX2xlbikpLEkuYXJyYXlTZXQoci5oZWFkLmV4dHJhLG4scyxkLGspKSw1MTImci5mbGFncyYmKHIuY2hlY2s9QihyLmNoZWNrLG4sZCxzKSksby09ZCxzKz1kLHIubGVuZ3RoLT1kKSxyLmxlbmd0aCkpYnJlYWsgZTtyLmxlbmd0aD0wLHIubW9kZT03O2Nhc2UgNzppZigyMDQ4JnIuZmxhZ3Mpe2lmKDA9PT1vKWJyZWFrIGU7Zm9yKGQ9MDtrPW5bcytkKytdLHIuaGVhZCYmayYmci5sZW5ndGg8NjU1MzYmJihyLmhlYWQubmFtZSs9U3RyaW5nLmZyb21DaGFyQ29kZShrKSksayYmZDxvOyk7aWYoNTEyJnIuZmxhZ3MmJihyLmNoZWNrPUIoci5jaGVjayxuLGQscykpLG8tPWQscys9ZCxrKWJyZWFrIGV9ZWxzZSByLmhlYWQmJihyLmhlYWQubmFtZT1udWxsKTtyLmxlbmd0aD0wLHIubW9kZT04O2Nhc2UgODppZig0MDk2JnIuZmxhZ3Mpe2lmKDA9PT1vKWJyZWFrIGU7Zm9yKGQ9MDtrPW5bcytkKytdLHIuaGVhZCYmayYmci5sZW5ndGg8NjU1MzYmJihyLmhlYWQuY29tbWVudCs9U3RyaW5nLmZyb21DaGFyQ29kZShrKSksayYmZDxvOyk7aWYoNTEyJnIuZmxhZ3MmJihyLmNoZWNrPUIoci5jaGVjayxuLGQscykpLG8tPWQscys9ZCxrKWJyZWFrIGV9ZWxzZSByLmhlYWQmJihyLmhlYWQuY29tbWVudD1udWxsKTtyLm1vZGU9OTtjYXNlIDk6aWYoNTEyJnIuZmxhZ3Mpe2Zvcig7bDwxNjspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKHUhPT0oNjU1MzUmci5jaGVjaykpe2UubXNnPVwiaGVhZGVyIGNyYyBtaXNtYXRjaFwiLHIubW9kZT0zMDticmVha31sPXU9MH1yLmhlYWQmJihyLmhlYWQuaGNyYz1yLmZsYWdzPj45JjEsci5oZWFkLmRvbmU9ITApLGUuYWRsZXI9ci5jaGVjaz0wLHIubW9kZT0xMjticmVhaztjYXNlIDEwOmZvcig7bDwzMjspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWUuYWRsZXI9ci5jaGVjaz1MKHUpLGw9dT0wLHIubW9kZT0xMTtjYXNlIDExOmlmKDA9PT1yLmhhdmVkaWN0KXJldHVybiBlLm5leHRfb3V0PWEsZS5hdmFpbF9vdXQ9aCxlLm5leHRfaW49cyxlLmF2YWlsX2luPW8sci5ob2xkPXUsci5iaXRzPWwsMjtlLmFkbGVyPXIuY2hlY2s9MSxyLm1vZGU9MTI7Y2FzZSAxMjppZig1PT09dHx8Nj09PXQpYnJlYWsgZTtjYXNlIDEzOmlmKHIubGFzdCl7dT4+Pj03JmwsbC09NyZsLHIubW9kZT0yNzticmVha31mb3IoO2w8Mzspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fXN3aXRjaChyLmxhc3Q9MSZ1LGwtPTEsMyYodT4+Pj0xKSl7Y2FzZSAwOnIubW9kZT0xNDticmVhaztjYXNlIDE6aWYoaihyKSxyLm1vZGU9MjAsNiE9PXQpYnJlYWs7dT4+Pj0yLGwtPTI7YnJlYWsgZTtjYXNlIDI6ci5tb2RlPTE3O2JyZWFrO2Nhc2UgMzplLm1zZz1cImludmFsaWQgYmxvY2sgdHlwZVwiLHIubW9kZT0zMH11Pj4+PTIsbC09MjticmVhaztjYXNlIDE0OmZvcih1Pj4+PTcmbCxsLT03Jmw7bDwzMjspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKCg2NTUzNSZ1KSE9KHU+Pj4xNl42NTUzNSkpe2UubXNnPVwiaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3Roc1wiLHIubW9kZT0zMDticmVha31pZihyLmxlbmd0aD02NTUzNSZ1LGw9dT0wLHIubW9kZT0xNSw2PT09dClicmVhayBlO2Nhc2UgMTU6ci5tb2RlPTE2O2Nhc2UgMTY6aWYoZD1yLmxlbmd0aCl7aWYobzxkJiYoZD1vKSxoPGQmJihkPWgpLDA9PT1kKWJyZWFrIGU7SS5hcnJheVNldChpLG4scyxkLGEpLG8tPWQscys9ZCxoLT1kLGErPWQsci5sZW5ndGgtPWQ7YnJlYWt9ci5tb2RlPTEyO2JyZWFrO2Nhc2UgMTc6Zm9yKDtsPDE0Oyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdSs9bltzKytdPDxsLGwrPTh9aWYoci5ubGVuPTI1NysoMzEmdSksdT4+Pj01LGwtPTUsci5uZGlzdD0xKygzMSZ1KSx1Pj4+PTUsbC09NSxyLm5jb2RlPTQrKDE1JnUpLHU+Pj49NCxsLT00LDI4NjxyLm5sZW58fDMwPHIubmRpc3Qpe2UubXNnPVwidG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHNcIixyLm1vZGU9MzA7YnJlYWt9ci5oYXZlPTAsci5tb2RlPTE4O2Nhc2UgMTg6Zm9yKDtyLmhhdmU8ci5uY29kZTspe2Zvcig7bDwzOyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdSs9bltzKytdPDxsLGwrPTh9ci5sZW5zW0Fbci5oYXZlKytdXT03JnUsdT4+Pj0zLGwtPTN9Zm9yKDtyLmhhdmU8MTk7KXIubGVuc1tBW3IuaGF2ZSsrXV09MDtpZihyLmxlbmNvZGU9ci5sZW5keW4sci5sZW5iaXRzPTcsUz17Yml0czpyLmxlbmJpdHN9LHg9VCgwLHIubGVucywwLDE5LHIubGVuY29kZSwwLHIud29yayxTKSxyLmxlbmJpdHM9Uy5iaXRzLHgpe2UubXNnPVwiaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0XCIsci5tb2RlPTMwO2JyZWFrfXIuaGF2ZT0wLHIubW9kZT0xOTtjYXNlIDE5OmZvcig7ci5oYXZlPHIubmxlbityLm5kaXN0Oyl7Zm9yKDtnPShDPXIubGVuY29kZVt1JigxPDxyLmxlbmJpdHMpLTFdKT4+PjE2JjI1NSxiPTY1NTM1JkMsISgoXz1DPj4+MjQpPD1sKTspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKGI8MTYpdT4+Pj1fLGwtPV8sci5sZW5zW3IuaGF2ZSsrXT1iO2Vsc2V7aWYoMTY9PT1iKXtmb3Ioej1fKzI7bDx6Oyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdSs9bltzKytdPDxsLGwrPTh9aWYodT4+Pj1fLGwtPV8sMD09PXIuaGF2ZSl7ZS5tc2c9XCJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0XCIsci5tb2RlPTMwO2JyZWFrfWs9ci5sZW5zW3IuaGF2ZS0xXSxkPTMrKDMmdSksdT4+Pj0yLGwtPTJ9ZWxzZSBpZigxNz09PWIpe2Zvcih6PV8rMztsPHo7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1sLT1fLGs9MCxkPTMrKDcmKHU+Pj49XykpLHU+Pj49MyxsLT0zfWVsc2V7Zm9yKHo9Xys3O2w8ejspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWwtPV8saz0wLGQ9MTErKDEyNyYodT4+Pj1fKSksdT4+Pj03LGwtPTd9aWYoci5oYXZlK2Q+ci5ubGVuK3IubmRpc3Qpe2UubXNnPVwiaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdFwiLHIubW9kZT0zMDticmVha31mb3IoO2QtLTspci5sZW5zW3IuaGF2ZSsrXT1rfX1pZigzMD09PXIubW9kZSlicmVhaztpZigwPT09ci5sZW5zWzI1Nl0pe2UubXNnPVwiaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrXCIsci5tb2RlPTMwO2JyZWFrfWlmKHIubGVuYml0cz05LFM9e2JpdHM6ci5sZW5iaXRzfSx4PVQoRCxyLmxlbnMsMCxyLm5sZW4sci5sZW5jb2RlLDAsci53b3JrLFMpLHIubGVuYml0cz1TLmJpdHMseCl7ZS5tc2c9XCJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXRcIixyLm1vZGU9MzA7YnJlYWt9aWYoci5kaXN0Yml0cz02LHIuZGlzdGNvZGU9ci5kaXN0ZHluLFM9e2JpdHM6ci5kaXN0Yml0c30seD1UKEYsci5sZW5zLHIubmxlbixyLm5kaXN0LHIuZGlzdGNvZGUsMCxyLndvcmssUyksci5kaXN0Yml0cz1TLmJpdHMseCl7ZS5tc2c9XCJpbnZhbGlkIGRpc3RhbmNlcyBzZXRcIixyLm1vZGU9MzA7YnJlYWt9aWYoci5tb2RlPTIwLDY9PT10KWJyZWFrIGU7Y2FzZSAyMDpyLm1vZGU9MjE7Y2FzZSAyMTppZig2PD1vJiYyNTg8PWgpe2UubmV4dF9vdXQ9YSxlLmF2YWlsX291dD1oLGUubmV4dF9pbj1zLGUuYXZhaWxfaW49byxyLmhvbGQ9dSxyLmJpdHM9bCxSKGUsYyksYT1lLm5leHRfb3V0LGk9ZS5vdXRwdXQsaD1lLmF2YWlsX291dCxzPWUubmV4dF9pbixuPWUuaW5wdXQsbz1lLmF2YWlsX2luLHU9ci5ob2xkLGw9ci5iaXRzLDEyPT09ci5tb2RlJiYoci5iYWNrPS0xKTticmVha31mb3Ioci5iYWNrPTA7Zz0oQz1yLmxlbmNvZGVbdSYoMTw8ci5sZW5iaXRzKS0xXSk+Pj4xNiYyNTUsYj02NTUzNSZDLCEoKF89Qz4+PjI0KTw9bCk7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1pZihnJiYwPT0oMjQwJmcpKXtmb3Iodj1fLHk9Zyx3PWI7Zz0oQz1yLmxlbmNvZGVbdysoKHUmKDE8PHYreSktMSk+PnYpXSk+Pj4xNiYyNTUsYj02NTUzNSZDLCEodisoXz1DPj4+MjQpPD1sKTspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fXU+Pj49dixsLT12LHIuYmFjays9dn1pZih1Pj4+PV8sbC09XyxyLmJhY2srPV8sci5sZW5ndGg9YiwwPT09Zyl7ci5tb2RlPTI2O2JyZWFrfWlmKDMyJmcpe3IuYmFjaz0tMSxyLm1vZGU9MTI7YnJlYWt9aWYoNjQmZyl7ZS5tc2c9XCJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGVcIixyLm1vZGU9MzA7YnJlYWt9ci5leHRyYT0xNSZnLHIubW9kZT0yMjtjYXNlIDIyOmlmKHIuZXh0cmEpe2Zvcih6PXIuZXh0cmE7bDx6Oyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdSs9bltzKytdPDxsLGwrPTh9ci5sZW5ndGgrPXUmKDE8PHIuZXh0cmEpLTEsdT4+Pj1yLmV4dHJhLGwtPXIuZXh0cmEsci5iYWNrKz1yLmV4dHJhfXIud2FzPXIubGVuZ3RoLHIubW9kZT0yMztjYXNlIDIzOmZvcig7Zz0oQz1yLmRpc3Rjb2RlW3UmKDE8PHIuZGlzdGJpdHMpLTFdKT4+PjE2JjI1NSxiPTY1NTM1JkMsISgoXz1DPj4+MjQpPD1sKTspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fWlmKDA9PSgyNDAmZykpe2Zvcih2PV8seT1nLHc9YjtnPShDPXIuZGlzdGNvZGVbdysoKHUmKDE8PHYreSktMSk+PnYpXSk+Pj4xNiYyNTUsYj02NTUzNSZDLCEodisoXz1DPj4+MjQpPD1sKTspe2lmKDA9PT1vKWJyZWFrIGU7by0tLHUrPW5bcysrXTw8bCxsKz04fXU+Pj49dixsLT12LHIuYmFjays9dn1pZih1Pj4+PV8sbC09XyxyLmJhY2srPV8sNjQmZyl7ZS5tc2c9XCJpbnZhbGlkIGRpc3RhbmNlIGNvZGVcIixyLm1vZGU9MzA7YnJlYWt9ci5vZmZzZXQ9YixyLmV4dHJhPTE1Jmcsci5tb2RlPTI0O2Nhc2UgMjQ6aWYoci5leHRyYSl7Zm9yKHo9ci5leHRyYTtsPHo7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1yLm9mZnNldCs9dSYoMTw8ci5leHRyYSktMSx1Pj4+PXIuZXh0cmEsbC09ci5leHRyYSxyLmJhY2srPXIuZXh0cmF9aWYoci5vZmZzZXQ+ci5kbWF4KXtlLm1zZz1cImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrXCIsci5tb2RlPTMwO2JyZWFrfXIubW9kZT0yNTtjYXNlIDI1OmlmKDA9PT1oKWJyZWFrIGU7aWYoZD1jLWgsci5vZmZzZXQ+ZCl7aWYoKGQ9ci5vZmZzZXQtZCk+ci53aGF2ZSYmci5zYW5lKXtlLm1zZz1cImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrXCIsci5tb2RlPTMwO2JyZWFrfXA9ZD5yLnduZXh0PyhkLT1yLnduZXh0LHIud3NpemUtZCk6ci53bmV4dC1kLGQ+ci5sZW5ndGgmJihkPXIubGVuZ3RoKSxtPXIud2luZG93fWVsc2UgbT1pLHA9YS1yLm9mZnNldCxkPXIubGVuZ3RoO2ZvcihoPGQmJihkPWgpLGgtPWQsci5sZW5ndGgtPWQ7aVthKytdPW1bcCsrXSwtLWQ7KTswPT09ci5sZW5ndGgmJihyLm1vZGU9MjEpO2JyZWFrO2Nhc2UgMjY6aWYoMD09PWgpYnJlYWsgZTtpW2ErK109ci5sZW5ndGgsaC0tLHIubW9kZT0yMTticmVhaztjYXNlIDI3OmlmKHIud3JhcCl7Zm9yKDtsPDMyOyl7aWYoMD09PW8pYnJlYWsgZTtvLS0sdXw9bltzKytdPDxsLGwrPTh9aWYoYy09aCxlLnRvdGFsX291dCs9YyxyLnRvdGFsKz1jLGMmJihlLmFkbGVyPXIuY2hlY2s9ci5mbGFncz9CKHIuY2hlY2ssaSxjLGEtYyk6TyhyLmNoZWNrLGksYyxhLWMpKSxjPWgsKHIuZmxhZ3M/dTpMKHUpKSE9PXIuY2hlY2spe2UubXNnPVwiaW5jb3JyZWN0IGRhdGEgY2hlY2tcIixyLm1vZGU9MzA7YnJlYWt9bD11PTB9ci5tb2RlPTI4O2Nhc2UgMjg6aWYoci53cmFwJiZyLmZsYWdzKXtmb3IoO2w8MzI7KXtpZigwPT09bylicmVhayBlO28tLSx1Kz1uW3MrK108PGwsbCs9OH1pZih1IT09KDQyOTQ5NjcyOTUmci50b3RhbCkpe2UubXNnPVwiaW5jb3JyZWN0IGxlbmd0aCBjaGVja1wiLHIubW9kZT0zMDticmVha31sPXU9MH1yLm1vZGU9Mjk7Y2FzZSAyOTp4PTE7YnJlYWsgZTtjYXNlIDMwOng9LTM7YnJlYWsgZTtjYXNlIDMxOnJldHVybi00O2Nhc2UgMzI6ZGVmYXVsdDpyZXR1cm4gVX1yZXR1cm4gZS5uZXh0X291dD1hLGUuYXZhaWxfb3V0PWgsZS5uZXh0X2luPXMsZS5hdmFpbF9pbj1vLHIuaG9sZD11LHIuYml0cz1sLChyLndzaXplfHxjIT09ZS5hdmFpbF9vdXQmJnIubW9kZTwzMCYmKHIubW9kZTwyN3x8NCE9PXQpKSYmWihlLGUub3V0cHV0LGUubmV4dF9vdXQsYy1lLmF2YWlsX291dCk/KHIubW9kZT0zMSwtNCk6KGYtPWUuYXZhaWxfaW4sYy09ZS5hdmFpbF9vdXQsZS50b3RhbF9pbis9ZixlLnRvdGFsX291dCs9YyxyLnRvdGFsKz1jLHIud3JhcCYmYyYmKGUuYWRsZXI9ci5jaGVjaz1yLmZsYWdzP0Ioci5jaGVjayxpLGMsZS5uZXh0X291dC1jKTpPKHIuY2hlY2ssaSxjLGUubmV4dF9vdXQtYykpLGUuZGF0YV90eXBlPXIuYml0cysoci5sYXN0PzY0OjApKygxMj09PXIubW9kZT8xMjg6MCkrKDIwPT09ci5tb2RlfHwxNT09PXIubW9kZT8yNTY6MCksKDA9PWYmJjA9PT1jfHw0PT09dCkmJng9PT1OJiYoeD0tNSkseCl9LHIuaW5mbGF0ZUVuZD1mdW5jdGlvbihlKXtpZighZXx8IWUuc3RhdGUpcmV0dXJuIFU7dmFyIHQ9ZS5zdGF0ZTtyZXR1cm4gdC53aW5kb3cmJih0LndpbmRvdz1udWxsKSxlLnN0YXRlPW51bGwsTn0sci5pbmZsYXRlR2V0SGVhZGVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIGUmJmUuc3RhdGU/MD09KDImKHI9ZS5zdGF0ZSkud3JhcCk/VTooKHIuaGVhZD10KS5kb25lPSExLE4pOlV9LHIuaW5mbGF0ZVNldERpY3Rpb25hcnk9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXQubGVuZ3RoO3JldHVybiBlJiZlLnN0YXRlPzAhPT0ocj1lLnN0YXRlKS53cmFwJiYxMSE9PXIubW9kZT9VOjExPT09ci5tb2RlJiZPKDEsdCxuLDApIT09ci5jaGVjaz8tMzpaKGUsdCxuLG4pPyhyLm1vZGU9MzEsLTQpOihyLmhhdmVkaWN0PTEsTik6VX0sci5pbmZsYXRlSW5mbz1cInBha28gaW5mbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdClcIn0se1wiLi4vdXRpbHMvY29tbW9uXCI6NDEsXCIuL2FkbGVyMzJcIjo0MyxcIi4vY3JjMzJcIjo0NSxcIi4vaW5mZmFzdFwiOjQ4LFwiLi9pbmZ0cmVlc1wiOjUwfV0sNTA6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgRD1lKFwiLi4vdXRpbHMvY29tbW9uXCIpLEY9WzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMCwwXSxOPVsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNywxNywxNywxNywxOCwxOCwxOCwxOCwxOSwxOSwxOSwxOSwyMCwyMCwyMCwyMCwyMSwyMSwyMSwyMSwxNiw3Miw3OF0sVT1bMSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEzLDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1LDI0NTc3LDAsMF0sUD1bMTYsMTYsMTYsMTYsMTcsMTcsMTgsMTgsMTksMTksMjAsMjAsMjEsMjEsMjIsMjIsMjMsMjMsMjQsMjQsMjUsMjUsMjYsMjYsMjcsMjcsMjgsMjgsMjksMjksNjQsNjRdO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscixuLGkscyxhLG8pe3ZhciBoLHUsbCxmLGMsZCxwLG0sXyxnPW8uYml0cyxiPTAsdj0wLHk9MCx3PTAsaz0wLHg9MCxTPTAsej0wLEM9MCxFPTAsQT1udWxsLEk9MCxPPW5ldyBELkJ1ZjE2KDE2KSxCPW5ldyBELkJ1ZjE2KDE2KSxSPW51bGwsVD0wO2ZvcihiPTA7Yjw9MTU7YisrKU9bYl09MDtmb3Iodj0wO3Y8bjt2KyspT1t0W3Irdl1dKys7Zm9yKGs9Zyx3PTE1OzE8PXcmJjA9PT1PW3ddO3ctLSk7aWYodzxrJiYoaz13KSwwPT09dylyZXR1cm4gaVtzKytdPTIwOTcxNTIwLGlbcysrXT0yMDk3MTUyMCxvLmJpdHM9MSwwO2Zvcih5PTE7eTx3JiYwPT09T1t5XTt5KyspO2ZvcihrPHkmJihrPXkpLGI9ej0xO2I8PTE1O2IrKylpZih6PDw9MSwoei09T1tiXSk8MClyZXR1cm4tMTtpZigwPHomJigwPT09ZXx8MSE9PXcpKXJldHVybi0xO2ZvcihCWzFdPTAsYj0xO2I8MTU7YisrKUJbYisxXT1CW2JdK09bYl07Zm9yKHY9MDt2PG47disrKTAhPT10W3Irdl0mJihhW0JbdFtyK3ZdXSsrXT12KTtpZihkPTA9PT1lPyhBPVI9YSwxOSk6MT09PWU/KEE9RixJLT0yNTcsUj1OLFQtPTI1NywyNTYpOihBPVUsUj1QLC0xKSxiPXksYz1zLFM9dj1FPTAsbD0tMSxmPShDPTE8PCh4PWspKS0xLDE9PT1lJiY4NTI8Q3x8Mj09PWUmJjU5MjxDKXJldHVybiAxO2Zvcig7Oyl7Zm9yKHA9Yi1TLF89YVt2XTxkPyhtPTAsYVt2XSk6YVt2XT5kPyhtPVJbVCthW3ZdXSxBW0krYVt2XV0pOihtPTk2LDApLGg9MTw8Yi1TLHk9dT0xPDx4O2lbYysoRT4+UykrKHUtPWgpXT1wPDwyNHxtPDwxNnxffDAsMCE9PXU7KTtmb3IoaD0xPDxiLTE7RSZoOyloPj49MTtpZigwIT09aD8oRSY9aC0xLEUrPWgpOkU9MCx2KyssMD09LS1PW2JdKXtpZihiPT09dylicmVhaztiPXRbcithW3ZdXX1pZihrPGImJihFJmYpIT09bCl7Zm9yKDA9PT1TJiYoUz1rKSxjKz15LHo9MTw8KHg9Yi1TKTt4K1M8dyYmISgoei09T1t4K1NdKTw9MCk7KXgrKyx6PDw9MTtpZihDKz0xPDx4LDE9PT1lJiY4NTI8Q3x8Mj09PWUmJjU5MjxDKXJldHVybiAxO2lbbD1FJmZdPWs8PDI0fHg8PDE2fGMtc3wwfX1yZXR1cm4gMCE9PUUmJihpW2MrRV09Yi1TPDwyNHw2NDw8MTZ8MCksby5iaXRzPWssMH19LHtcIi4uL3V0aWxzL2NvbW1vblwiOjQxfV0sNTE6W2Z1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9ezI6XCJuZWVkIGRpY3Rpb25hcnlcIiwxOlwic3RyZWFtIGVuZFwiLDA6XCJcIixcIi0xXCI6XCJmaWxlIGVycm9yXCIsXCItMlwiOlwic3RyZWFtIGVycm9yXCIsXCItM1wiOlwiZGF0YSBlcnJvclwiLFwiLTRcIjpcImluc3VmZmljaWVudCBtZW1vcnlcIixcIi01XCI6XCJidWZmZXIgZXJyb3JcIixcIi02XCI6XCJpbmNvbXBhdGlibGUgdmVyc2lvblwifX0se31dLDUyOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9ZShcIi4uL3V0aWxzL2NvbW1vblwiKSxvPTAsaD0xO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciB0PWUubGVuZ3RoOzA8PS0tdDspZVt0XT0wfXZhciBzPTAsYT0yOSx1PTI1NixsPXUrMSthLGY9MzAsYz0xOSxfPTIqbCsxLGc9MTUsZD0xNixwPTcsbT0yNTYsYj0xNix2PTE3LHk9MTgsdz1bMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwXSxrPVswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSx4PVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMyw3XSxTPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSx6PW5ldyBBcnJheSgyKihsKzIpKTtuKHopO3ZhciBDPW5ldyBBcnJheSgyKmYpO24oQyk7dmFyIEU9bmV3IEFycmF5KDUxMik7bihFKTt2YXIgQT1uZXcgQXJyYXkoMjU2KTtuKEEpO3ZhciBJPW5ldyBBcnJheShhKTtuKEkpO3ZhciBPLEIsUixUPW5ldyBBcnJheShmKTtmdW5jdGlvbiBEKGUsdCxyLG4saSl7dGhpcy5zdGF0aWNfdHJlZT1lLHRoaXMuZXh0cmFfYml0cz10LHRoaXMuZXh0cmFfYmFzZT1yLHRoaXMuZWxlbXM9bix0aGlzLm1heF9sZW5ndGg9aSx0aGlzLmhhc19zdHJlZT1lJiZlLmxlbmd0aH1mdW5jdGlvbiBGKGUsdCl7dGhpcy5keW5fdHJlZT1lLHRoaXMubWF4X2NvZGU9MCx0aGlzLnN0YXRfZGVzYz10fWZ1bmN0aW9uIE4oZSl7cmV0dXJuIGU8MjU2P0VbZV06RVsyNTYrKGU+Pj43KV19ZnVuY3Rpb24gVShlLHQpe2UucGVuZGluZ19idWZbZS5wZW5kaW5nKytdPTI1NSZ0LGUucGVuZGluZ19idWZbZS5wZW5kaW5nKytdPXQ+Pj44JjI1NX1mdW5jdGlvbiBQKGUsdCxyKXtlLmJpX3ZhbGlkPmQtcj8oZS5iaV9idWZ8PXQ8PGUuYmlfdmFsaWQmNjU1MzUsVShlLGUuYmlfYnVmKSxlLmJpX2J1Zj10Pj5kLWUuYmlfdmFsaWQsZS5iaV92YWxpZCs9ci1kKTooZS5iaV9idWZ8PXQ8PGUuYmlfdmFsaWQmNjU1MzUsZS5iaV92YWxpZCs9cil9ZnVuY3Rpb24gTChlLHQscil7UChlLHJbMip0XSxyWzIqdCsxXSl9ZnVuY3Rpb24gaihlLHQpe2Zvcih2YXIgcj0wO3J8PTEmZSxlPj4+PTEscjw8PTEsMDwtLXQ7KTtyZXR1cm4gcj4+PjF9ZnVuY3Rpb24gWihlLHQscil7dmFyIG4saSxzPW5ldyBBcnJheShnKzEpLGE9MDtmb3Iobj0xO248PWc7bisrKXNbbl09YT1hK3Jbbi0xXTw8MTtmb3IoaT0wO2k8PXQ7aSsrKXt2YXIgbz1lWzIqaSsxXTswIT09byYmKGVbMippXT1qKHNbb10rKyxvKSl9fWZ1bmN0aW9uIFcoZSl7dmFyIHQ7Zm9yKHQ9MDt0PGw7dCsrKWUuZHluX2x0cmVlWzIqdF09MDtmb3IodD0wO3Q8Zjt0KyspZS5keW5fZHRyZWVbMip0XT0wO2Zvcih0PTA7dDxjO3QrKyllLmJsX3RyZWVbMip0XT0wO2UuZHluX2x0cmVlWzIqbV09MSxlLm9wdF9sZW49ZS5zdGF0aWNfbGVuPTAsZS5sYXN0X2xpdD1lLm1hdGNoZXM9MH1mdW5jdGlvbiBNKGUpezg8ZS5iaV92YWxpZD9VKGUsZS5iaV9idWYpOjA8ZS5iaV92YWxpZCYmKGUucGVuZGluZ19idWZbZS5wZW5kaW5nKytdPWUuYmlfYnVmKSxlLmJpX2J1Zj0wLGUuYmlfdmFsaWQ9MH1mdW5jdGlvbiBIKGUsdCxyLG4pe3ZhciBpPTIqdCxzPTIqcjtyZXR1cm4gZVtpXTxlW3NdfHxlW2ldPT09ZVtzXSYmblt0XTw9bltyXX1mdW5jdGlvbiBHKGUsdCxyKXtmb3IodmFyIG49ZS5oZWFwW3JdLGk9cjw8MTtpPD1lLmhlYXBfbGVuJiYoaTxlLmhlYXBfbGVuJiZIKHQsZS5oZWFwW2krMV0sZS5oZWFwW2ldLGUuZGVwdGgpJiZpKyssIUgodCxuLGUuaGVhcFtpXSxlLmRlcHRoKSk7KWUuaGVhcFtyXT1lLmhlYXBbaV0scj1pLGk8PD0xO2UuaGVhcFtyXT1ufWZ1bmN0aW9uIEsoZSx0LHIpe3ZhciBuLGkscyxhLG89MDtpZigwIT09ZS5sYXN0X2xpdClmb3IoO249ZS5wZW5kaW5nX2J1ZltlLmRfYnVmKzIqb108PDh8ZS5wZW5kaW5nX2J1ZltlLmRfYnVmKzIqbysxXSxpPWUucGVuZGluZ19idWZbZS5sX2J1ZitvXSxvKyssMD09PW4/TChlLGksdCk6KEwoZSwocz1BW2ldKSt1KzEsdCksMCE9PShhPXdbc10pJiZQKGUsaS09SVtzXSxhKSxMKGUscz1OKC0tbiksciksMCE9PShhPWtbc10pJiZQKGUsbi09VFtzXSxhKSksbzxlLmxhc3RfbGl0Oyk7TChlLG0sdCl9ZnVuY3Rpb24gWShlLHQpe3ZhciByLG4saSxzPXQuZHluX3RyZWUsYT10LnN0YXRfZGVzYy5zdGF0aWNfdHJlZSxvPXQuc3RhdF9kZXNjLmhhc19zdHJlZSxoPXQuc3RhdF9kZXNjLmVsZW1zLHU9LTE7Zm9yKGUuaGVhcF9sZW49MCxlLmhlYXBfbWF4PV8scj0wO3I8aDtyKyspMCE9PXNbMipyXT8oZS5oZWFwWysrZS5oZWFwX2xlbl09dT1yLGUuZGVwdGhbcl09MCk6c1syKnIrMV09MDtmb3IoO2UuaGVhcF9sZW48Mjspc1syKihpPWUuaGVhcFsrK2UuaGVhcF9sZW5dPXU8Mj8rK3U6MCldPTEsZS5kZXB0aFtpXT0wLGUub3B0X2xlbi0tLG8mJihlLnN0YXRpY19sZW4tPWFbMippKzFdKTtmb3IodC5tYXhfY29kZT11LHI9ZS5oZWFwX2xlbj4+MTsxPD1yO3ItLSlHKGUscyxyKTtmb3IoaT1oO3I9ZS5oZWFwWzFdLGUuaGVhcFsxXT1lLmhlYXBbZS5oZWFwX2xlbi0tXSxHKGUscywxKSxuPWUuaGVhcFsxXSxlLmhlYXBbLS1lLmhlYXBfbWF4XT1yLGUuaGVhcFstLWUuaGVhcF9tYXhdPW4sc1syKmldPXNbMipyXStzWzIqbl0sZS5kZXB0aFtpXT0oZS5kZXB0aFtyXT49ZS5kZXB0aFtuXT9lLmRlcHRoW3JdOmUuZGVwdGhbbl0pKzEsc1syKnIrMV09c1syKm4rMV09aSxlLmhlYXBbMV09aSsrLEcoZSxzLDEpLDI8PWUuaGVhcF9sZW47KTtlLmhlYXBbLS1lLmhlYXBfbWF4XT1lLmhlYXBbMV0sZnVuY3Rpb24oZSx0KXt2YXIgcixuLGkscyxhLG8saD10LmR5bl90cmVlLHU9dC5tYXhfY29kZSxsPXQuc3RhdF9kZXNjLnN0YXRpY190cmVlLGY9dC5zdGF0X2Rlc2MuaGFzX3N0cmVlLGM9dC5zdGF0X2Rlc2MuZXh0cmFfYml0cyxkPXQuc3RhdF9kZXNjLmV4dHJhX2Jhc2UscD10LnN0YXRfZGVzYy5tYXhfbGVuZ3RoLG09MDtmb3Iocz0wO3M8PWc7cysrKWUuYmxfY291bnRbc109MDtmb3IoaFsyKmUuaGVhcFtlLmhlYXBfbWF4XSsxXT0wLHI9ZS5oZWFwX21heCsxO3I8XztyKyspcDwocz1oWzIqaFsyKihuPWUuaGVhcFtyXSkrMV0rMV0rMSkmJihzPXAsbSsrKSxoWzIqbisxXT1zLHU8bnx8KGUuYmxfY291bnRbc10rKyxhPTAsZDw9biYmKGE9Y1tuLWRdKSxvPWhbMipuXSxlLm9wdF9sZW4rPW8qKHMrYSksZiYmKGUuc3RhdGljX2xlbis9byoobFsyKm4rMV0rYSkpKTtpZigwIT09bSl7ZG97Zm9yKHM9cC0xOzA9PT1lLmJsX2NvdW50W3NdOylzLS07ZS5ibF9jb3VudFtzXS0tLGUuYmxfY291bnRbcysxXSs9MixlLmJsX2NvdW50W3BdLS0sbS09Mn13aGlsZSgwPG0pO2ZvcihzPXA7MCE9PXM7cy0tKWZvcihuPWUuYmxfY291bnRbc107MCE9PW47KXU8KGk9ZS5oZWFwWy0tcl0pfHwoaFsyKmkrMV0hPT1zJiYoZS5vcHRfbGVuKz0ocy1oWzIqaSsxXSkqaFsyKmldLGhbMippKzFdPXMpLG4tLSl9fShlLHQpLFoocyx1LGUuYmxfY291bnQpfWZ1bmN0aW9uIFgoZSx0LHIpe3ZhciBuLGkscz0tMSxhPXRbMV0sbz0wLGg9Nyx1PTQ7Zm9yKDA9PT1hJiYoaD0xMzgsdT0zKSx0WzIqKHIrMSkrMV09NjU1MzUsbj0wO248PXI7bisrKWk9YSxhPXRbMioobisxKSsxXSwrK288aCYmaT09PWF8fChvPHU/ZS5ibF90cmVlWzIqaV0rPW86MCE9PWk/KGkhPT1zJiZlLmJsX3RyZWVbMippXSsrLGUuYmxfdHJlZVsyKmJdKyspOm88PTEwP2UuYmxfdHJlZVsyKnZdKys6ZS5ibF90cmVlWzIqeV0rKyxzPWksdT0obz0wKT09PWE/KGg9MTM4LDMpOmk9PT1hPyhoPTYsMyk6KGg9Nyw0KSl9ZnVuY3Rpb24gVihlLHQscil7dmFyIG4saSxzPS0xLGE9dFsxXSxvPTAsaD03LHU9NDtmb3IoMD09PWEmJihoPTEzOCx1PTMpLG49MDtuPD1yO24rKylpZihpPWEsYT10WzIqKG4rMSkrMV0sISgrK288aCYmaT09PWEpKXtpZihvPHUpZm9yKDtMKGUsaSxlLmJsX3RyZWUpLDAhPS0tbzspO2Vsc2UgMCE9PWk/KGkhPT1zJiYoTChlLGksZS5ibF90cmVlKSxvLS0pLEwoZSxiLGUuYmxfdHJlZSksUChlLG8tMywyKSk6bzw9MTA/KEwoZSx2LGUuYmxfdHJlZSksUChlLG8tMywzKSk6KEwoZSx5LGUuYmxfdHJlZSksUChlLG8tMTEsNykpO3M9aSx1PShvPTApPT09YT8oaD0xMzgsMyk6aT09PWE/KGg9NiwzKTooaD03LDQpfX1uKFQpO3ZhciBxPSExO2Z1bmN0aW9uIEooZSx0LHIsbil7UChlLChzPDwxKSsobj8xOjApLDMpLGZ1bmN0aW9uKGUsdCxyLG4pe00oZSksbiYmKFUoZSxyKSxVKGUsfnIpKSxpLmFycmF5U2V0KGUucGVuZGluZ19idWYsZS53aW5kb3csdCxyLGUucGVuZGluZyksZS5wZW5kaW5nKz1yfShlLHQsciwhMCl9ci5fdHJfaW5pdD1mdW5jdGlvbihlKXtxfHwoZnVuY3Rpb24oKXt2YXIgZSx0LHIsbixpLHM9bmV3IEFycmF5KGcrMSk7Zm9yKG49cj0wO248YS0xO24rKylmb3IoSVtuXT1yLGU9MDtlPDE8PHdbbl07ZSsrKUFbcisrXT1uO2ZvcihBW3ItMV09bixuPWk9MDtuPDE2O24rKylmb3IoVFtuXT1pLGU9MDtlPDE8PGtbbl07ZSsrKUVbaSsrXT1uO2ZvcihpPj49NztuPGY7bisrKWZvcihUW25dPWk8PDcsZT0wO2U8MTw8a1tuXS03O2UrKylFWzI1NitpKytdPW47Zm9yKHQ9MDt0PD1nO3QrKylzW3RdPTA7Zm9yKGU9MDtlPD0xNDM7KXpbMiplKzFdPTgsZSsrLHNbOF0rKztmb3IoO2U8PTI1NTspelsyKmUrMV09OSxlKyssc1s5XSsrO2Zvcig7ZTw9Mjc5Oyl6WzIqZSsxXT03LGUrKyxzWzddKys7Zm9yKDtlPD0yODc7KXpbMiplKzFdPTgsZSsrLHNbOF0rKztmb3IoWih6LGwrMSxzKSxlPTA7ZTxmO2UrKylDWzIqZSsxXT01LENbMiplXT1qKGUsNSk7Tz1uZXcgRCh6LHcsdSsxLGwsZyksQj1uZXcgRChDLGssMCxmLGcpLFI9bmV3IEQobmV3IEFycmF5KDApLHgsMCxjLHApfSgpLHE9ITApLGUubF9kZXNjPW5ldyBGKGUuZHluX2x0cmVlLE8pLGUuZF9kZXNjPW5ldyBGKGUuZHluX2R0cmVlLEIpLGUuYmxfZGVzYz1uZXcgRihlLmJsX3RyZWUsUiksZS5iaV9idWY9MCxlLmJpX3ZhbGlkPTAsVyhlKX0sci5fdHJfc3RvcmVkX2Jsb2NrPUosci5fdHJfZmx1c2hfYmxvY2s9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGkscyxhPTA7MDxlLmxldmVsPygyPT09ZS5zdHJtLmRhdGFfdHlwZSYmKGUuc3RybS5kYXRhX3R5cGU9ZnVuY3Rpb24oZSl7dmFyIHQscj00MDkzNjI0NDQ3O2Zvcih0PTA7dDw9MzE7dCsrLHI+Pj49MSlpZigxJnImJjAhPT1lLmR5bl9sdHJlZVsyKnRdKXJldHVybiBvO2lmKDAhPT1lLmR5bl9sdHJlZVsxOF18fDAhPT1lLmR5bl9sdHJlZVsyMF18fDAhPT1lLmR5bl9sdHJlZVsyNl0pcmV0dXJuIGg7Zm9yKHQ9MzI7dDx1O3QrKylpZigwIT09ZS5keW5fbHRyZWVbMip0XSlyZXR1cm4gaDtyZXR1cm4gb30oZSkpLFkoZSxlLmxfZGVzYyksWShlLGUuZF9kZXNjKSxhPWZ1bmN0aW9uKGUpe3ZhciB0O2ZvcihYKGUsZS5keW5fbHRyZWUsZS5sX2Rlc2MubWF4X2NvZGUpLFgoZSxlLmR5bl9kdHJlZSxlLmRfZGVzYy5tYXhfY29kZSksWShlLGUuYmxfZGVzYyksdD1jLTE7Mzw9dCYmMD09PWUuYmxfdHJlZVsyKlNbdF0rMV07dC0tKTtyZXR1cm4gZS5vcHRfbGVuKz0zKih0KzEpKzUrNSs0LHR9KGUpLGk9ZS5vcHRfbGVuKzMrNz4+PjMsKHM9ZS5zdGF0aWNfbGVuKzMrNz4+PjMpPD1pJiYoaT1zKSk6aT1zPXIrNSxyKzQ8PWkmJi0xIT09dD9KKGUsdCxyLG4pOjQ9PT1lLnN0cmF0ZWd5fHxzPT09aT8oUChlLDIrKG4/MTowKSwzKSxLKGUseixDKSk6KFAoZSw0KyhuPzE6MCksMyksZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk7Zm9yKFAoZSx0LTI1Nyw1KSxQKGUsci0xLDUpLFAoZSxuLTQsNCksaT0wO2k8bjtpKyspUChlLGUuYmxfdHJlZVsyKlNbaV0rMV0sMyk7VihlLGUuZHluX2x0cmVlLHQtMSksVihlLGUuZHluX2R0cmVlLHItMSl9KGUsZS5sX2Rlc2MubWF4X2NvZGUrMSxlLmRfZGVzYy5tYXhfY29kZSsxLGErMSksSyhlLGUuZHluX2x0cmVlLGUuZHluX2R0cmVlKSksVyhlKSxuJiZNKGUpfSxyLl90cl90YWxseT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGUucGVuZGluZ19idWZbZS5kX2J1ZisyKmUubGFzdF9saXRdPXQ+Pj44JjI1NSxlLnBlbmRpbmdfYnVmW2UuZF9idWYrMiplLmxhc3RfbGl0KzFdPTI1NSZ0LGUucGVuZGluZ19idWZbZS5sX2J1ZitlLmxhc3RfbGl0XT0yNTUmcixlLmxhc3RfbGl0KyssMD09PXQ/ZS5keW5fbHRyZWVbMipyXSsrOihlLm1hdGNoZXMrKyx0LS0sZS5keW5fbHRyZWVbMiooQVtyXSt1KzEpXSsrLGUuZHluX2R0cmVlWzIqTih0KV0rKyksZS5sYXN0X2xpdD09PWUubGl0X2J1ZnNpemUtMX0sci5fdHJfYWxpZ249ZnVuY3Rpb24oZSl7UChlLDIsMyksTChlLG0seiksZnVuY3Rpb24oZSl7MTY9PT1lLmJpX3ZhbGlkPyhVKGUsZS5iaV9idWYpLGUuYmlfYnVmPTAsZS5iaV92YWxpZD0wKTo4PD1lLmJpX3ZhbGlkJiYoZS5wZW5kaW5nX2J1ZltlLnBlbmRpbmcrK109MjU1JmUuYmlfYnVmLGUuYmlfYnVmPj49OCxlLmJpX3ZhbGlkLT04KX0oZSl9fSx7XCIuLi91dGlscy9jb21tb25cIjo0MX1dLDUzOltmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5pbnB1dD1udWxsLHRoaXMubmV4dF9pbj0wLHRoaXMuYXZhaWxfaW49MCx0aGlzLnRvdGFsX2luPTAsdGhpcy5vdXRwdXQ9bnVsbCx0aGlzLm5leHRfb3V0PTAsdGhpcy5hdmFpbF9vdXQ9MCx0aGlzLnRvdGFsX291dD0wLHRoaXMubXNnPVwiXCIsdGhpcy5zdGF0ZT1udWxsLHRoaXMuZGF0YV90eXBlPTIsdGhpcy5hZGxlcj0wfX0se31dLDU0OltmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihyLG4pe1widXNlIHN0cmljdFwiO2lmKCFyLnNldEltbWVkaWF0ZSl7dmFyIGkscyx0LGEsbz0xLGg9e30sdT0hMSxsPXIuZG9jdW1lbnQsZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YmJk9iamVjdC5nZXRQcm90b3R5cGVPZihyKTtlPWUmJmUuc2V0VGltZW91dD9lOnIsaT1cIltvYmplY3QgcHJvY2Vzc11cIj09PXt9LnRvU3RyaW5nLmNhbGwoci5wcm9jZXNzKT9mdW5jdGlvbihlKXtwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7YyhlKX0pfTpmdW5jdGlvbigpe2lmKHIucG9zdE1lc3NhZ2UmJiFyLmltcG9ydFNjcmlwdHMpe3ZhciBlPSEwLHQ9ci5vbm1lc3NhZ2U7cmV0dXJuIHIub25tZXNzYWdlPWZ1bmN0aW9uKCl7ZT0hMX0sci5wb3N0TWVzc2FnZShcIlwiLFwiKlwiKSxyLm9ubWVzc2FnZT10LGV9fSgpPyhhPVwic2V0SW1tZWRpYXRlJFwiK01hdGgucmFuZG9tKCkrXCIkXCIsci5hZGRFdmVudExpc3RlbmVyP3IuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixkLCExKTpyLmF0dGFjaEV2ZW50KFwib25tZXNzYWdlXCIsZCksZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZShhK2UsXCIqXCIpfSk6ci5NZXNzYWdlQ2hhbm5lbD8oKHQ9bmV3IE1lc3NhZ2VDaGFubmVsKS5wb3J0MS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7YyhlLmRhdGEpfSxmdW5jdGlvbihlKXt0LnBvcnQyLnBvc3RNZXNzYWdlKGUpfSk6bCYmXCJvbnJlYWR5c3RhdGVjaGFuZ2VcImluIGwuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKT8ocz1sLmRvY3VtZW50RWxlbWVudCxmdW5jdGlvbihlKXt2YXIgdD1sLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7dC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtjKGUpLHQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwscy5yZW1vdmVDaGlsZCh0KSx0PW51bGx9LHMuYXBwZW5kQ2hpbGQodCl9KTpmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGMsMCxlKX0sZS5zZXRJbW1lZGlhdGU9ZnVuY3Rpb24oZSl7XCJmdW5jdGlvblwiIT10eXBlb2YgZSYmKGU9bmV3IEZ1bmN0aW9uKFwiXCIrZSkpO2Zvcih2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKSxyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT1hcmd1bWVudHNbcisxXTt2YXIgbj17Y2FsbGJhY2s6ZSxhcmdzOnR9O3JldHVybiBoW29dPW4saShvKSxvKyt9LGUuY2xlYXJJbW1lZGlhdGU9Zn1mdW5jdGlvbiBmKGUpe2RlbGV0ZSBoW2VdfWZ1bmN0aW9uIGMoZSl7aWYodSlzZXRUaW1lb3V0KGMsMCxlKTtlbHNle3ZhciB0PWhbZV07aWYodCl7dT0hMDt0cnl7IWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2FsbGJhY2sscj1lLmFyZ3M7c3dpdGNoKHIubGVuZ3RoKXtjYXNlIDA6dCgpO2JyZWFrO2Nhc2UgMTp0KHJbMF0pO2JyZWFrO2Nhc2UgMjp0KHJbMF0sclsxXSk7YnJlYWs7Y2FzZSAzOnQoclswXSxyWzFdLHJbMl0pO2JyZWFrO2RlZmF1bHQ6dC5hcHBseShuLHIpfX0odCl9ZmluYWxseXtmKGUpLHU9ITF9fX19ZnVuY3Rpb24gZChlKXtlLnNvdXJjZT09PXImJlwic3RyaW5nXCI9PXR5cGVvZiBlLmRhdGEmJjA9PT1lLmRhdGEuaW5kZXhPZihhKSYmYygrZS5kYXRhLnNsaWNlKGEubGVuZ3RoKSl9fShcInVuZGVmaW5lZFwiPT10eXBlb2Ygc2VsZj92b2lkIDA9PT1lP3RoaXM6ZTpzZWxmKX0pLmNhbGwodGhpcyxcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dfSx7fSxbMTBdKSgxMCl9KTsiLCAibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFxdWE6IC8jMDBmZmZmKGZmKT8oPyFcXHcpfCMwZmYoZik/KD8hXFx3KS9naSxcbiAgYXp1cmU6IC8jZjBmZmZmKGZmKT8oPyFcXHcpL2dpLFxuICBiZWlnZTogLyNmNWY1ZGMoZmYpPyg/IVxcdykvZ2ksXG4gIGJpc3F1ZTogLyNmZmU0YzQoZmYpPyg/IVxcdykvZ2ksXG4gIGJsYWNrOiAvIzAwMDAwMChmZik/KD8hXFx3KXwjMDAwKGYpPyg/IVxcdykvZ2ksXG4gIGJsdWU6IC8jMDAwMGZmKGZmKT8oPyFcXHcpfCMwMGYoZik/KD8hXFx3KS9naSxcbiAgYnJvd246IC8jYTUyYTJhKGZmKT8oPyFcXHcpL2dpLFxuICBjb3JhbDogLyNmZjdmNTAoZmYpPyg/IVxcdykvZ2ksXG4gIGNvcm5zaWxrOiAvI2ZmZjhkYyhmZik/KD8hXFx3KS9naSxcbiAgY3JpbXNvbjogLyNkYzE0M2MoZmYpPyg/IVxcdykvZ2ksXG4gIGN5YW46IC8jMDBmZmZmKGZmKT8oPyFcXHcpfCMwZmYoZik/KD8hXFx3KS9naSxcbiAgZGFya2JsdWU6IC8jMDAwMDhiKGZmKT8oPyFcXHcpL2dpLFxuICBkYXJrY3lhbjogLyMwMDhiOGIoZmYpPyg/IVxcdykvZ2ksXG4gIGRhcmtncmV5OiAvI2E5YTlhOShmZik/KD8hXFx3KS9naSxcbiAgZGFya3JlZDogLyM4YjAwMDAoZmYpPyg/IVxcdykvZ2ksXG4gIGRlZXBwaW5rOiAvI2ZmMTQ5MyhmZik/KD8hXFx3KS9naSxcbiAgZGltZ3JleTogLyM2OTY5NjkoZmYpPyg/IVxcdykvZ2ksXG4gIGdvbGQ6IC8jZmZkNzAwKGZmKT8oPyFcXHcpL2dpLFxuICBncmVlbjogLyMwMDgwMDAoZmYpPyg/IVxcdykvZ2ksXG4gIGdyZXk6IC8jODA4MDgwKGZmKT8oPyFcXHcpL2dpLFxuICBob25leWRldzogLyNmMGZmZjAoZmYpPyg/IVxcdykvZ2ksXG4gIGhvdHBpbms6IC8jZmY2OWI0KGZmKT8oPyFcXHcpL2dpLFxuICBpbmRpZ286IC8jNGIwMDgyKGZmKT8oPyFcXHcpL2dpLFxuICBpdm9yeTogLyNmZmZmZjAoZmYpPyg/IVxcdykvZ2ksXG4gIGtoYWtpOiAvI2YwZTY4YyhmZik/KD8hXFx3KS9naSxcbiAgbGF2ZW5kZXI6IC8jZTZlNmZhKGZmKT8oPyFcXHcpL2dpLFxuICBsaW1lOiAvIzAwZmYwMChmZik/KD8hXFx3KXwjMGYwKGYpPyg/IVxcdykvZ2ksXG4gIGxpbmVuOiAvI2ZhZjBlNihmZik/KD8hXFx3KS9naSxcbiAgbWFyb29uOiAvIzgwMDAwMChmZik/KD8hXFx3KS9naSxcbiAgbW9jY2FzaW46IC8jZmZlNGI1KGZmKT8oPyFcXHcpL2dpLFxuICBuYXZ5OiAvIzAwMDA4MChmZik/KD8hXFx3KS9naSxcbiAgb2xkbGFjZTogLyNmZGY1ZTYoZmYpPyg/IVxcdykvZ2ksXG4gIG9saXZlOiAvIzgwODAwMChmZik/KD8hXFx3KS9naSxcbiAgb3JhbmdlOiAvI2ZmYTUwMChmZik/KD8hXFx3KS9naSxcbiAgb3JjaGlkOiAvI2RhNzBkNihmZik/KD8hXFx3KS9naSxcbiAgcGVydTogLyNjZDg1M2YoZmYpPyg/IVxcdykvZ2ksXG4gIHBpbms6IC8jZmZjMGNiKGZmKT8oPyFcXHcpL2dpLFxuICBwbHVtOiAvI2RkYTBkZChmZik/KD8hXFx3KS9naSxcbiAgcHVycGxlOiAvIzgwMDA4MChmZik/KD8hXFx3KS9naSxcbiAgcmVkOiAvI2ZmMDAwMChmZik/KD8hXFx3KXwjZjAwKGYpPyg/IVxcdykvZ2ksXG4gIHNhbG1vbjogLyNmYTgwNzIoZmYpPyg/IVxcdykvZ2ksXG4gIHNlYWdyZWVuOiAvIzJlOGI1NyhmZik/KD8hXFx3KS9naSxcbiAgc2Vhc2hlbGw6IC8jZmZmNWVlKGZmKT8oPyFcXHcpL2dpLFxuICBzaWVubmE6IC8jYTA1MjJkKGZmKT8oPyFcXHcpL2dpLFxuICBzaWx2ZXI6IC8jYzBjMGMwKGZmKT8oPyFcXHcpL2dpLFxuICBza3libHVlOiAvIzg3Y2VlYihmZik/KD8hXFx3KS9naSxcbiAgc25vdzogLyNmZmZhZmEoZmYpPyg/IVxcdykvZ2ksXG4gIHRhbjogLyNkMmI0OGMoZmYpPyg/IVxcdykvZ2ksXG4gIHRlYWw6IC8jMDA4MDgwKGZmKT8oPyFcXHcpL2dpLFxuICB0aGlzdGxlOiAvI2Q4YmZkOChmZik/KD8hXFx3KS9naSxcbiAgdG9tYXRvOiAvI2ZmNjM0NyhmZik/KD8hXFx3KS9naSxcbiAgdmlvbGV0OiAvI2VlODJlZShmZik/KD8hXFx3KS9naSxcbiAgd2hlYXQ6IC8jZjVkZWIzKGZmKT8oPyFcXHcpL2dpLFxuICB3aGl0ZTogLyNmZmZmZmYoZmYpPyg/IVxcdyl8I2ZmZihmKT8oPyFcXHcpL2dpLFxufTtcbiIsICJ2YXIgc2hvcnRlck5hbWVzID0gcmVxdWlyZSgnLi9zaG9ydGVyLWNzcy1jb2xvci1uYW1lcycpO1xudmFyIFJFR0VYID0ge1xuICB3aGl0ZXNwYWNlOiAvXFxzKy9nLFxuICB1cmxIZXhQYWlyczogLyVbXFxkQS1GXXsyfS9nLFxuICBxdW90ZXM6IC9cIi9nLFxufVxuXG5mdW5jdGlvbiBjb2xsYXBzZVdoaXRlc3BhY2Uoc3RyKSB7XG4gIHJldHVybiBzdHIudHJpbSgpLnJlcGxhY2UoUkVHRVgud2hpdGVzcGFjZSwgJyAnKTtcbn1cblxuZnVuY3Rpb24gZGF0YVVSSVBheWxvYWQoc3RyaW5nKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nKVxuICAgIC5yZXBsYWNlKFJFR0VYLnVybEhleFBhaXJzLCBzcGVjaWFsSGV4RW5jb2RlKTtcbn1cblxuLy8gYCNgIGdldHMgY29udmVydGVkIHRvIGAlMjNgLCBzbyBxdWl0ZSBhIGZldyBDU1MgbmFtZWQgY29sb3JzIGFyZSBzaG9ydGVyIHRoYW5cbi8vIHRoZWlyIGVxdWl2YWxlbnQgVVJMLWVuY29kZWQgaGV4IGNvZGVzLlxuZnVuY3Rpb24gY29sb3JDb2RlVG9TaG9ydGVyTmFtZXMoc3RyaW5nKSB7XG4gIE9iamVjdC5rZXlzKHNob3J0ZXJOYW1lcykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoc2hvcnRlck5hbWVzW2tleV0udGVzdChzdHJpbmcpKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShzaG9ydGVyTmFtZXNba2V5XSwga2V5KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHNwZWNpYWxIZXhFbmNvZGUobWF0Y2gpIHtcbiAgc3dpdGNoIChtYXRjaCkgeyAvLyBCcm93c2VycyB0b2xlcmF0ZSB0aGVzZSBjaGFyYWN0ZXJzLCBhbmQgdGhleSdyZSBmcmVxdWVudFxuICAgIGNhc2UgJyUyMCc6IHJldHVybiAnICc7XG4gICAgY2FzZSAnJTNEJzogcmV0dXJuICc9JztcbiAgICBjYXNlICclM0EnOiByZXR1cm4gJzonO1xuICAgIGNhc2UgJyUyRic6IHJldHVybiAnLyc7XG4gICAgZGVmYXVsdDogcmV0dXJuIG1hdGNoLnRvTG93ZXJDYXNlKCk7IC8vIGNvbXByZXNzZXMgYmV0dGVyXG4gIH1cbn1cblxuZnVuY3Rpb24gc3ZnVG9UaW55RGF0YVVyaShzdmdTdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdmdTdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBzdHJpbmcsIGJ1dCByZWNlaXZlZCAnICsgdHlwZW9mIHN2Z1N0cmluZyk7XG4gIH1cbiAgLy8gU3RyaXAgdGhlIEJ5dGUtT3JkZXIgTWFyayBpZiB0aGUgU1ZHIGhhcyBvbmVcbiAgaWYgKHN2Z1N0cmluZy5jaGFyQ29kZUF0KDApID09PSAweGZlZmYpIHsgc3ZnU3RyaW5nID0gc3ZnU3RyaW5nLnNsaWNlKDEpIH1cblxuICB2YXIgYm9keSA9IGNvbG9yQ29kZVRvU2hvcnRlck5hbWVzKGNvbGxhcHNlV2hpdGVzcGFjZShzdmdTdHJpbmcpKVxuICAgIC5yZXBsYWNlKFJFR0VYLnF1b3RlcywgXCInXCIpO1xuICByZXR1cm4gJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwnICsgZGF0YVVSSVBheWxvYWQoYm9keSk7XG59XG5cbnN2Z1RvVGlueURhdGFVcmkudG9TcmNzZXQgPSBmdW5jdGlvbiB0b1NyY3NldChzdmdTdHJpbmcpIHtcbiAgcmV0dXJuIHN2Z1RvVGlueURhdGFVcmkoc3ZnU3RyaW5nKS5yZXBsYWNlKC8gL2csICclMjAnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdmdUb1RpbnlEYXRhVXJpO1xuIiwgImltcG9ydCB7IFBsdWdpbiwgc2V0SWNvbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgYnVpbGRJY29uUGx1Z2luIGZyb20gXCIuL2ljb24taW4tZWRpdG9yXCI7XG5pbXBvcnQgdHlwZSB7IFNob3J0Y29kZVBvc0ZpZWxkIH0gZnJvbSBcIi4vaWNvbi1pbi1lZGl0b3Ivc3RhdGVcIjtcbmltcG9ydCBnZXRTaG9ydGNvZGVQb3NGaWVsZCBmcm9tIFwiLi9pY29uLWluLWVkaXRvci9zdGF0ZVwiO1xuaW1wb3J0IEZpbGVJY29uQ2FjaGUgZnJvbSBcIi4vaWNvbi1wYWNrcy9pY29uLWNhY2hlXCI7XG5pbXBvcnQgUGFja01hbmFnZXIgZnJvbSBcIi4vaWNvbi1wYWNrcy9wYWNrLW1hbmFnZXJcIjtcbmltcG9ydCB0cnlVcGRhdGVJY29ucyBmcm9tIFwiLi9tb2R1bGVzL2pzb24tdG8tc3ZnXCI7XG5pbXBvcnQgeyBFbW9qaVN1Z2dlc3RlciB9IGZyb20gXCIuL21vZHVsZXMvc3VnZ2VzdGVyXCI7XG5pbXBvcnQgeyBnZXRNRFBvc3RQcm9jZXNzb3IsIGdldE5vZGVQb3N0UHJvY2Vzc29yIH0gZnJvbSBcIi4vcG9zdC1wc1wiO1xuaW1wb3J0IHsgc2V0dXBQb3N0UHJvY2Vzc29ycyB9IGZyb20gXCIuL3Bvc3QtcHNcIjtcbmltcG9ydCB7IERFRkFVTFRfU0VUVElOR1MsIEljb25TQ1NldHRpbmdzLCBJY29uU0NTZXR0aW5nVGFiIH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEFwaSB9IGZyb20gXCIuL3R5cGluZ3MvYXBpXCI7XG5pbXBvcnQgQVBJLCB7IEFQSV9OQU1FIH0gZnJvbSBcIi4vdHlwaW5ncy9hcGlcIjtcblxuY29uc3QgQVBJX05BTUU6IEFQSV9OQU1FIGV4dGVuZHMga2V5b2YgdHlwZW9mIHdpbmRvdyA/IEFQSV9OQU1FIDogbmV2ZXIgPVxuICBcIkljb25TQ0FQSXYwXCIgYXMgY29uc3Q7IC8vIHRoaXMgbGluZSB3aWxsIHRocm93IGVycm9yIGlmIG5hbWUgb3V0IG9mIHN5bmNcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWNvblNDIGV4dGVuZHMgUGx1Z2luIHtcbiAgc2V0dGluZ3M6IEljb25TQ1NldHRpbmdzID0gREVGQVVMVF9TRVRUSU5HUztcblxuICBwYWNrTWFuYWdlciA9IG5ldyBQYWNrTWFuYWdlcih0aGlzKTtcblxuICBfbm9kZVByb2Nlc3NvciA9IGdldE5vZGVQb3N0UHJvY2Vzc29yKHRoaXMpO1xuICBfbWRQcm9jZXNzb3IgPSBnZXRNRFBvc3RQcm9jZXNzb3IodGhpcyk7XG5cbiAgc2hvcnRjb2RlUG9zRmllbGQ6IFNob3J0Y29kZVBvc0ZpZWxkID0gZ2V0U2hvcnRjb2RlUG9zRmllbGQodGhpcyk7XG5cbiAgcG9zdFByb2Nlc3NvcihpbnB1dDogc3RyaW5nLCByZXBsYWNlcjogKHNob3J0Y29kZTogc3RyaW5nKSA9PiBzdHJpbmcpOiBzdHJpbmc7XG4gIHBvc3RQcm9jZXNzb3IoaW5wdXQ6IEhUTUxFbGVtZW50KTogdm9pZDtcbiAgcG9zdFByb2Nlc3NvcihcbiAgICBpbnB1dDogSFRNTEVsZW1lbnQgfCBzdHJpbmcsXG4gICAgcmVwbGFjZXI/OiAoc2hvcnRjb2RlOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIiAmJiByZXBsYWNlcikge1xuICAgICAgcmV0dXJuIHRoaXMuX21kUHJvY2Vzc29yKGlucHV0LCByZXBsYWNlcik7XG4gICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbm9kZVByb2Nlc3NvcihpbnB1dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGFyZ3MgZ2l2ZW4gdG8gcG9zdFByb2Nlc3NvclwiKTtcbiAgICB9XG4gIH1cblxuICBhcGkgPSBnZXRBcGkodGhpcy5wYWNrTWFuYWdlciwgdGhpcyk7XG4gIGZpbGVJY29uQ2FjaGUgPSBuZXcgRmlsZUljb25DYWNoZSh0aGlzKTtcblxuICBhc3luYyBvbmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coXCJsb2FkaW5nIEljb24gU2hvcnRjb2Rlc1wiKTtcblxuICAgIGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XG4gICAgYXdhaXQgdHJ5VXBkYXRlSWNvbnModGhpcyk7XG4gICAgYXdhaXQgdGhpcy5wYWNrTWFuYWdlci5sb2FkSWNvbnMoKTtcblxuICAgICh3aW5kb3dbQVBJX05BTUVdID0gdGhpcy5hcGkpICYmXG4gICAgICB0aGlzLnJlZ2lzdGVyKCgpID0+ICh3aW5kb3dbQVBJX05BTUVdID0gdW5kZWZpbmVkKSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yU3VnZ2VzdChuZXcgRW1vamlTdWdnZXN0ZXIodGhpcykpO1xuICAgIHNldHVwUG9zdFByb2Nlc3NvcnModGhpcyk7XG4gICAgYnVpbGRJY29uUGx1Z2luKHRoaXMpO1xuXG4gICAgdGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBJY29uU0NTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG4gIH1cblxuICAvLyBvbnVubG9hZCgpIHtcbiAgLy8gICBjb25zb2xlLmxvZyhcInVubG9hZGluZyBJY29uIFNob3J0Y29kZXNcIik7XG4gIC8vIH1cblxuICBhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG4gICAgbGV0IGxvYWRlZCA9IChhd2FpdCB0aGlzLmxvYWREYXRhKCkpIGFzIEljb25TQ1NldHRpbmdzIHwgdW5kZWZpbmVkO1xuICAgIGlmIChsb2FkZWQpIHtcbiAgICAgIGlmICgobG9hZGVkIGFzIGFueSkuaWNvbnBhY2spIHtcbiAgICAgICAgZGVsZXRlIChsb2FkZWQgYXMgYW55KVtcImljb25wYWNrXCJdO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXR0aW5ncyA9IHtcbiAgICAgICAgLi4udGhpcy5zZXR0aW5ncyxcbiAgICAgICAgLi4ubG9hZGVkLFxuICAgICAgICBkaXNhYmxlZFBhY2tzOiBsb2FkZWQuZGlzYWJsZWRQYWNrc1xuICAgICAgICAgID8gbmV3IFNldChsb2FkZWQuZGlzYWJsZWRQYWNrcylcbiAgICAgICAgICA6IHRoaXMuc2V0dGluZ3MuZGlzYWJsZWRQYWNrcyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZVNldHRpbmdzKCkge1xuICAgIGF3YWl0IHRoaXMuc2F2ZURhdGEoe1xuICAgICAgLi4udGhpcy5zZXR0aW5ncyxcbiAgICAgIGRpc2FibGVkUGFja3M6IFsuLi50aGlzLnNldHRpbmdzLmRpc2FibGVkUGFja3NdLFxuICAgIH0pO1xuICB9XG59XG4iLCAiaW1wb3J0IHtcbiAgRGVjb3JhdGlvbixcbiAgRGVjb3JhdGlvblNldCxcbiAgRWRpdG9yVmlldyxcbiAgVmlld1BsdWdpbixcbiAgVmlld1VwZGF0ZSxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcbmltcG9ydCB7IGVkaXRvckxpdmVQcmV2aWV3RmllbGQgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHR5cGUgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IGljb25zIGZyb20gXCIuL2RlY29cIjtcbmltcG9ydCBnZXRNZW51IGZyb20gXCIuL2dldC1tZW51XCI7XG5cbmludGVyZmFjZSBJY29uUGx1Z2luIHtcbiAgY29uc3RydWN0b3IodmlldzogRWRpdG9yVmlldyk6IEljb25QbHVnaW47XG4gIHVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUpOiB2b2lkO1xufVxuXG5jb25zdCBnZXRJY29uTGl2ZVByZXZpZXdQbHVnaW4gPSAocGx1Z2luOiBJY29uU0MpOiBWaWV3UGx1Z2luPEljb25QbHVnaW4+ID0+IHtcbiAgY2xhc3MgSWNvblBsdWdpbiB7XG4gICAgZGVjb3JhdGlvbnM6IERlY29yYXRpb25TZXQ7XG4gICAgcGx1Z2luOiBJY29uU0M7XG5cbiAgICBjb25zdHJ1Y3Rvcih2aWV3OiBFZGl0b3JWaWV3KSB7XG4gICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgIHRoaXMuZGVjb3JhdGlvbnMgPSBpY29ucyh2aWV3LCB0aGlzLnBsdWdpbik7XG4gICAgfVxuXG4gICAgdXBkYXRlKHVwZGF0ZTogVmlld1VwZGF0ZSkge1xuICAgICAgY29uc3QgcHJldk1vZGUgPSB1cGRhdGUuc3RhcnRTdGF0ZS5maWVsZChlZGl0b3JMaXZlUHJldmlld0ZpZWxkKSxcbiAgICAgICAgY3Vyck1vZGUgPSB1cGRhdGUuc3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCk7XG4gICAgICBpZiAoXG4gICAgICAgIHVwZGF0ZS5kb2NDaGFuZ2VkIHx8XG4gICAgICAgIHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgICAgcHJldk1vZGUgIT09IGN1cnJNb2RlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0aW9ucyA9IGljb25zKHVwZGF0ZS52aWV3LCBwbHVnaW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBWaWV3UGx1Z2luLmZyb21DbGFzcyhJY29uUGx1Z2luLCB7XG4gICAgZXZlbnRIYW5kbGVyczoge1xuICAgICAgbW91c2Vkb3duOiBJY29uQ2xpY2tIYW5kbGVyLFxuICAgIH0sXG4gICAgZGVjb3JhdGlvbnM6ICh2KSA9PiB2LmRlY29yYXRpb25zLFxuICAgIHByb3ZpZGU6IChwbHVnaW4pID0+XG4gICAgICBFZGl0b3JWaWV3LmF0b21pY1Jhbmdlcy5vZigodmlldykgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSB2aWV3LnBsdWdpbihwbHVnaW4pO1xuICAgICAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZS5kZWNvcmF0aW9ucyA6IERlY29yYXRpb24ubm9uZTtcbiAgICAgIH0pLFxuICB9KTtcbiAgLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnMgKi9cbiAgZnVuY3Rpb24gSWNvbkNsaWNrSGFuZGxlcihcbiAgICB0aGlzOiBJY29uUGx1Z2luLFxuICAgIGV2dDogTW91c2VFdmVudCxcbiAgICB2aWV3OiBFZGl0b3JWaWV3LFxuICApIHtcbiAgICBsZXQgdGFyZ2V0ID0gZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGFyZ2V0Lm1hdGNoUGFyZW50KFwiLmNtLWlzYy1pY29uXCIsIHZpZXcuY29udGVudERPTSkpIHtcbiAgICAgIGNvbnN0IGVsRnJvbSA9IHZpZXcucG9zQXRET00odGFyZ2V0KTtcbiAgICAgIGxldCBhbmNob3I6IG51bWJlciA9IC0xLFxuICAgICAgICBoZWFkOiBudW1iZXIgPSAtMTtcbiAgICAgIHRoaXMuZGVjb3JhdGlvbnMuYmV0d2VlbihlbEZyb20gLSAxLCBlbEZyb20gKyAxLCAoZnJvbSwgdG8sIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChlbEZyb20gPj0gZnJvbSAmJiBlbEZyb20gPD0gdG8pIHtcbiAgICAgICAgICBpZiAoZnJvbSA9PT0gdG8pIHtcbiAgICAgICAgICAgIGFuY2hvciA9IHZhbHVlLnNwZWMuZnJvbTtcbiAgICAgICAgICAgIGhlYWQgPSB2YWx1ZS5zcGVjLnRvO1xuICAgICAgICAgIH0gZWxzZSAoYW5jaG9yID0gZnJvbSksIChoZWFkID0gdG8pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoYW5jaG9yIDwgMCB8fCBoZWFkIDwgMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwibm8gcmFuZ2UgZm91bmQgZm9yXCIsIHRhcmdldCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHdhaXQoMCkudGhlbigoKSA9PiB2aWV3LmRpc3BhdGNoKHsgc2VsZWN0aW9uOiB7IGFuY2hvciwgaGVhZCB9IH0pKTtcbiAgICAgIGlmIChldnQuYnV0dG9uID09PSAwIHx8IGV2dC5idXR0b24gPT09IDEpIHtcbiAgICAgICAgY29uc3QgbWVudSA9IGdldE1lbnUoYW5jaG9yLCBoZWFkLCBwbHVnaW4sIHZpZXcpO1xuICAgICAgICB3YWl0KDIwMCkudGhlbigoKSA9PiBtZW51LnNob3dBdE1vdXNlRXZlbnQoZXZ0KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCB3YWl0ID0gKG1zOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG5leHBvcnQgZGVmYXVsdCBnZXRJY29uTGl2ZVByZXZpZXdQbHVnaW47XG4iLCAiaW1wb3J0IHR5cGUgeyBFZGl0b3JWaWV3IH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcbmltcG9ydCB7IERlY29yYXRpb24gfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHsgZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgdHlwZSBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5pbXBvcnQgSWNvbldpZGdldCBmcm9tIFwiLi93aWRnZXRcIjtcblxuY29uc3QgaWNvbnMgPSAodmlldzogRWRpdG9yVmlldywgcGx1Z2luOiBJY29uU0MpID0+IHtcbiAgbGV0IHJhbmdlczogW2ljb25JZDogc3RyaW5nLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXJdW10gPSBbXTtcbiAgY29uc3QgU0NJbmZvID0gdmlldy5zdGF0ZS5maWVsZChwbHVnaW4uc2hvcnRjb2RlUG9zRmllbGQpO1xuICBmb3IgKGxldCB7IGZyb20sIHRvIH0gb2Ygdmlldy52aXNpYmxlUmFuZ2VzKSB7XG4gICAgU0NJbmZvLmJldHdlZW4oZnJvbSwgdG8sIChmcm9tLCB0bywgeyBpY29uSWQgfSkgPT4ge1xuICAgICAgcmFuZ2VzLnB1c2goW2ljb25JZCwgZnJvbSwgdG9dKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gRGVjb3JhdGlvbi5zZXQoXG4gICAgcmFuZ2VzLm1hcCgoW2ljb25JZCwgZnJvbSwgdG9dKSA9PiB7XG4gICAgICBjb25zdCB3aWRnZXQgPSBuZXcgSWNvbldpZGdldChpY29uSWQsIHBsdWdpbik7XG4gICAgICBjb25zdCBzcGVjID0geyB3aWRnZXQsIHNpZGU6IC0xLCBmcm9tLCB0byB9O1xuICAgICAgaWYgKHZpZXcuc3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCkpIHtcbiAgICAgICAgcmV0dXJuIERlY29yYXRpb24ucmVwbGFjZShzcGVjKS5yYW5nZShmcm9tLCB0byk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gRGVjb3JhdGlvbi53aWRnZXQoc3BlYykucmFuZ2UodG8pO1xuICAgICAgfVxuICAgIH0pLFxuICAgIHRydWUsXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpY29ucztcbiIsICJpbXBvcnQgdHlwZSB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHsgV2lkZ2V0VHlwZSB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5cbmltcG9ydCB0eXBlIEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEljb25XaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGlkOiBzdHJpbmcsIHB1YmxpYyBwbHVnaW46IEljb25TQykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBlcShvdGhlcjogSWNvbldpZGdldCkge1xuICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIEljb25XaWRnZXQgJiYgb3RoZXIuaWQgPT09IHRoaXMuaWQ7XG4gIH1cblxuICB0b0RPTSh2aWV3OiBFZGl0b3JWaWV3KSB7XG4gICAgbGV0IHdyYXAgPSBjcmVhdGVTcGFuKHtcbiAgICAgIGNsczogXCJjbS1pc2MtaWNvblwiLFxuICAgICAgYXR0cjogeyBcImFyaWEtbGFiZWxcIjogdGhpcy5pZC5yZXBsYWNlKC9fL2csIFwiIFwiKSB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIuZ2V0U1ZHSWNvbih0aGlzLmlkKS50aGVuKChzcGFuKSA9PiB7XG4gICAgICBpZiAoIXNwYW4pIHtcbiAgICAgICAgd3JhcC5hcHBlbmQoYDoke3RoaXMuaWR9OmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Bhbi5jbGFzc0xpc3QuZm9yRWFjaCgoY2xzKSA9PiB3cmFwLmFkZENsYXNzKGNscykpO1xuICAgICAgICB3cmFwLnJlcGxhY2VDaGlsZHJlbiguLi5zcGFuLmNoaWxkTm9kZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB3cmFwO1xuICB9XG5cbiAgaWdub3JlRXZlbnQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5pbXBvcnQgeyBNZW51IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5cbmNvbnN0IGdldE1lbnUgPSAoXG4gIHN0YXJ0OiBudW1iZXIsXG4gIGVuZDogbnVtYmVyLFxuICBwbHVnaW46IEljb25TQyxcbiAgdmlldzogRWRpdG9yVmlldyxcbikgPT4ge1xuICByZXR1cm4gbmV3IE1lbnUocGx1Z2luLmFwcClcbiAgICAuYWRkSXRlbSgoaXRlbSkgPT5cbiAgICAgIGl0ZW1cbiAgICAgICAgLnNldEljb24oXCJpbWFnZS1nbHlwaFwiKVxuICAgICAgICAuc2V0VGl0bGUoXCJDaGFuZ2UgSWNvblwiKVxuICAgICAgICAub25DbGljayhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWNvbiA9IGF3YWl0IHBsdWdpbi5hcGkuZ2V0SWNvbkZyb21Vc2VyKCk7XG4gICAgICAgICAgaWYgKCFpY29uKSByZXR1cm47XG4gICAgICAgICAgdmlldy5kaXNwYXRjaCh7XG4gICAgICAgICAgICBjaGFuZ2VzOiB7IGZyb206IHN0YXJ0LCB0bzogZW5kLCBpbnNlcnQ6IGA6JHtpY29uLmlkfTpgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgIClcbiAgICAuYWRkSXRlbSgoaXRlbSkgPT5cbiAgICAgIGl0ZW1cbiAgICAgICAgLnNldEljb24oXCJ0cmFzaFwiKVxuICAgICAgICAuc2V0VGl0bGUoXCJEZWxldGUgSWNvblwiKVxuICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgdmlldy5kaXNwYXRjaCh7XG4gICAgICAgICAgICBjaGFuZ2VzOiB7IGZyb206IHN0YXJ0LCB0bzogZW5kLCBpbnNlcnQ6IFwiXCIgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBnZXRNZW51O1xuIiwgImltcG9ydCB0eXBlIEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmltcG9ydCBnZXRJY29uTGl2ZVByZXZpZXdQbHVnaW4gZnJvbSBcIi4vdmlldy1wbHVnaW5cIjtcblxuY29uc3Qgc2V0dXBJY29uUGx1Z2luID0gKHBsdWdpbjogSWNvblNDKSA9PiB7XG4gIHBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihbXG4gICAgcGx1Z2luLnNob3J0Y29kZVBvc0ZpZWxkLFxuICAgIGdldEljb25MaXZlUHJldmlld1BsdWdpbihwbHVnaW4pLFxuICBdKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHNldHVwSWNvblBsdWdpbjtcbiIsICJpbXBvcnQgeyBzeW50YXhUcmVlIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyB0b2tlbkNsYXNzTm9kZVByb3AgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7XG4gIFJhbmdlLFxuICBSYW5nZVNldCxcbiAgUmFuZ2VTZXRCdWlsZGVyLFxuICBSYW5nZVZhbHVlLFxufSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IEVkaXRvclN0YXRlLCBTdGF0ZUZpZWxkIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgdHlwZSB7IE5vZGVUeXBlIH0gZnJvbSBcIkBsZXplci9jb21tb25cIjtcblxuaW1wb3J0IHtcbiAgZ2V0R2xvYmFsUmVnZXhwLFxuICBSRV9TSE9SVENPREUsXG4gIHN0cmlwQ29sb25zLFxufSBmcm9tIFwiLi4vaWNvbi1wYWNrcy91dGlsc1wiO1xuaW1wb3J0IHR5cGUgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IFVuaW9uUmFuZ2VzIGZyb20gXCIuLi9tb2R1bGVzL3VuaW9uXCI7XG5cbmNsYXNzIFNob3J0Y29kZVBvcyBleHRlbmRzIFJhbmdlVmFsdWUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGV4dDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICBnZXQgaWNvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0cmlwQ29sb25zKHRoaXMudGV4dCk7XG4gIH1cbiAgZXEob3RoZXI6IFJhbmdlVmFsdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBTaG9ydGNvZGVQb3MgJiYgb3RoZXIudGV4dCA9PT0gdGhpcy50ZXh0O1xuICB9XG59XG5cbmNvbnN0IGFsbG93ZWRUeXBlcyA9IFtcbiAgXCJsaW5rLWFsaWFzXCIsXG4gIFwiY29tbWVudFwiLFxuICBcImhlYWRlclwiLFxuICBcInN0cm9uZ1wiLFxuICBcImVtXCIsXG4gIFwic3RyaWtldGhyb3VnaFwiLFxuICBcInF1b3RlXCIsXG4gIFwibGlua1wiLFxuICBcImxpc3QtMVwiLFxuICBcImxpc3QtMlwiLFxuICBcImxpc3QtM1wiLFxuICBcImhpZ2hsaWdodFwiLFxuICBcImhtZC1mb290cmVmMlwiLFxuICBcImZvb3RyZWZcIixcbl07XG5jb25zdCBleGNsdWRlVHlwZXMgPSBbXCJmb3JtYXR0aW5nXCIsIFwiY29tbWVudC1zdGFydFwiLCBcImNvbW1lbnQtZW5kXCJdO1xuY29uc3Qgc2hvdWxkTm9kZUhhdmVJY29uID0gKHR5cGU6IE5vZGVUeXBlKSA9PiB7XG4gIGNvbnN0IG5vZGVQcm9wcyA9IHR5cGUucHJvcCh0b2tlbkNsYXNzTm9kZVByb3ApO1xuICBpZiAoIW5vZGVQcm9wcykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwcm9wcyA9IG5ldyBTZXQobm9kZVByb3BzPy5zcGxpdChcIiBcIikpO1xuICByZXR1cm4gKFxuICAgIGV4Y2x1ZGVUeXBlcy5ldmVyeSgodCkgPT4gIXByb3BzLmhhcyh0KSkgJiZcbiAgICBhbGxvd2VkVHlwZXMuc29tZSgodCkgPT4gcHJvcHMuaGFzKHQpKVxuICApO1xufTtcblxuY29uc3QgZ2V0U2hvcnRjb2RlUG9zRmllbGQgPSAocGx1Z2luOiBJY29uU0MpID0+IHtcbiAgY29uc3QgZ2V0U2hvcnRjb2RlUmFuZ2VzID0gKFxuICAgIHN0YXRlOiBFZGl0b3JTdGF0ZSxcbiAgICBmcm9tOiBudW1iZXIsXG4gICAgdG86IG51bWJlcixcbiAgICBhZGRUb1JhbmdlQXJyOiAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCB2YWx1ZTogU2hvcnRjb2RlUG9zKSA9PiB2b2lkLFxuICApID0+IHtcbiAgICBjb25zdCBzYXZlUmFuZ2UgPSAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gc3RhdGUuZG9jLnNsaWNlU3RyaW5nKGZyb20sIHRvKTtcbiAgICAgIGlmICghdGV4dC50cmltKCkpIHJldHVybjtcbiAgICAgIGZvciAoY29uc3QgeyAwOiByYXdDb2RlLCBpbmRleDogb2Zmc2V0IH0gb2YgdGV4dC5tYXRjaEFsbChcbiAgICAgICAgZ2V0R2xvYmFsUmVnZXhwKFJFX1NIT1JUQ09ERSksXG4gICAgICApKSB7XG4gICAgICAgIGlmIChwbHVnaW4ucGFja01hbmFnZXIuaGFzSWNvbihzdHJpcENvbG9ucyhyYXdDb2RlKSkpIHtcbiAgICAgICAgICBhZGRUb1JhbmdlQXJyKFxuICAgICAgICAgICAgZnJvbSArIG9mZnNldCEsXG4gICAgICAgICAgICBmcm9tICsgb2Zmc2V0ISArIHJhd0NvZGUubGVuZ3RoLFxuICAgICAgICAgICAgbmV3IFNob3J0Y29kZVBvcyhyYXdDb2RlKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBsZXQgcHJldlRvID0gZnJvbTtcbiAgICBzeW50YXhUcmVlKHN0YXRlKS5pdGVyYXRlKHtcbiAgICAgIGZyb206IGZyb20gLSAxLFxuICAgICAgdG86IHRvICsgMSxcbiAgICAgIGVudGVyOiAoeyB0eXBlLCBmcm9tLCB0byB9KSA9PiB7XG4gICAgICAgIGlmICh0eXBlLm5hbWUgPT09IFwiRG9jdW1lbnRcIikgcmV0dXJuO1xuICAgICAgICBpZiAoZnJvbSAhPT0gcHJldlRvKSBzYXZlUmFuZ2UocHJldlRvLCBmcm9tKTtcbiAgICAgICAgcHJldlRvID0gdG87XG4gICAgICAgIGlmIChzaG91bGROb2RlSGF2ZUljb24odHlwZSkpIHtcbiAgICAgICAgICBzYXZlUmFuZ2UoZnJvbSwgdG8pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChwcmV2VG8gIT09IHRvKSBzYXZlUmFuZ2UocHJldlRvLCB0byk7XG4gIH07XG4gIHJldHVybiBTdGF0ZUZpZWxkLmRlZmluZTxSYW5nZVNldDxTaG9ydGNvZGVQb3M+Pih7XG4gICAgY3JlYXRlOiAoc3RhdGUpID0+IHtcbiAgICAgIGxldCByYW5nZXNldCA9IG5ldyBSYW5nZVNldEJ1aWxkZXI8U2hvcnRjb2RlUG9zPigpO1xuICAgICAgZ2V0U2hvcnRjb2RlUmFuZ2VzKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgMCxcbiAgICAgICAgc3RhdGUuZG9jLmxlbmd0aCxcbiAgICAgICAgcmFuZ2VzZXQuYWRkLmJpbmQocmFuZ2VzZXQpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiByYW5nZXNldC5maW5pc2goKTtcbiAgICB9LFxuICAgIHVwZGF0ZTogKHJhbmdlc2V0LCB0cikgPT4ge1xuICAgICAgaWYgKCF0ci5kb2NDaGFuZ2VkKSByZXR1cm4gcmFuZ2VzZXQ7XG4gICAgICByYW5nZXNldCA9IHJhbmdlc2V0Lm1hcCh0ci5jaGFuZ2VzKTtcbiAgICAgIGxldCBjaGFuZ2VkTGluZXM6IFtsaW5lU3RhcnQ6IG51bWJlciwgbGluZUVuZDogbnVtYmVyXVtdID0gW107XG4gICAgICB0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VkUmFuZ2VzKChfZiwgX3QsIGZyb20sIHRvKSA9PiB7XG4gICAgICAgIC8vIGxpbmVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgICAgIGNoYW5nZWRMaW5lcy5wdXNoKFtcbiAgICAgICAgICB0ci5zdGF0ZS5kb2MubGluZUF0KGZyb20pLm51bWJlcixcbiAgICAgICAgICB0ci5zdGF0ZS5kb2MubGluZUF0KHRvKS5udW1iZXIsXG4gICAgICAgIF0pO1xuICAgICAgfSk7XG4gICAgICBsZXQgbmV3U2hvcnRjb2RlUmFuZ2VzOiBSYW5nZTxTaG9ydGNvZGVQb3M+W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgW3N0YXJ0LCBlbmRdIG9mIFVuaW9uUmFuZ2VzKGNoYW5nZWRMaW5lcykpIHtcbiAgICAgICAgY29uc3QgeyBmcm9tIH0gPSB0ci5zdGF0ZS5kb2MubGluZShzdGFydCksXG4gICAgICAgICAgeyB0byB9ID0gdHIuc3RhdGUuZG9jLmxpbmUoZW5kKTtcbiAgICAgICAgLy8gZmlsdGVyIG91dCBzaG9ydGNvZGUgcG9zIGluIGN1cnJlbnQgbGluZSByYW5nZVxuICAgICAgICByYW5nZXNldCA9IHJhbmdlc2V0LnVwZGF0ZSh7XG4gICAgICAgICAgZmlsdGVyRnJvbTogZnJvbSxcbiAgICAgICAgICBmaWx0ZXJUbzogdG8sXG4gICAgICAgICAgZmlsdGVyOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHJlY29tcHV0ZSBzaG9ydGNvZGUgcG9zIGluIGN1cnJlbnQgbGluZSByYW5nZVxuICAgICAgICBnZXRTaG9ydGNvZGVSYW5nZXModHIuc3RhdGUsIGZyb20sIHRvLCAoZnJvbSwgdG8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgbmV3U2hvcnRjb2RlUmFuZ2VzLnB1c2godmFsdWUucmFuZ2UoZnJvbSwgdG8pKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByYW5nZXNldCA9IHJhbmdlc2V0LnVwZGF0ZSh7IGFkZDogbmV3U2hvcnRjb2RlUmFuZ2VzIH0pO1xuICAgICAgcmV0dXJuIHJhbmdlc2V0O1xuICAgIH0sXG4gIH0pO1xufTtcbmV4cG9ydCB0eXBlIFNob3J0Y29kZVBvc0ZpZWxkID0gU3RhdGVGaWVsZDxSYW5nZVNldDxTaG9ydGNvZGVQb3M+PjtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0U2hvcnRjb2RlUG9zRmllbGQ7XG4iLCAiaW1wb3J0IHsgZXh0ZW5zaW9uLCBsb29rdXAgfSBmcm9tIFwibWltZS10eXBlc1wiO1xuaW1wb3J0IGVtb2ppIGZyb20gXCJub2RlLWVtb2ppXCI7XG5pbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgRmlsZUljb25JbmZvLCBJY29uSW5mbyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIEVudHJpZXNGcm9tUmVjb3JkPFQ+ID0gW2tleToga2V5b2YgVCwgdmFsdWU6IFRba2V5b2YgVF1dW107XG5cbmV4cG9ydCBjb25zdCBPYmp0b0VudHJpZXMgPSA8VCBleHRlbmRzIE9iamVjdD4ob2JqOiBUKSA9PlxuICBPYmplY3QuZW50cmllcyhvYmopIGFzIEVudHJpZXNGcm9tUmVjb3JkPFQ+O1xuXG4vKipcbiAqIFJlbW92ZXMgY29sb25zIG9uIGVpdGhlciBzaWRlXG4gKiBvZiB0aGUgc3RyaW5nIGlmIHByZXNlbnRcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cblxuZXhwb3J0IGNvbnN0IHN0cmlwQ29sb25zID0gKHN0cjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgdmFyIGNvbG9uSW5kZXggPSBzdHIuaW5kZXhPZihcIjpcIik7XG4gIGlmIChjb2xvbkluZGV4ID4gLTEpIHtcbiAgICAvLyA6ZW1vamk6IChodHRwOi8vd3d3LmVtb2ppLWNoZWF0LXNoZWV0LmNvbS8pXG4gICAgaWYgKGNvbG9uSW5kZXggPT09IHN0ci5sZW5ndGggLSAxKSB7XG4gICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpO1xuICAgICAgcmV0dXJuIHN0cmlwQ29sb25zKHN0cik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpO1xuICAgICAgcmV0dXJuIHN0cmlwQ29sb25zKHN0cik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn07XG5cbmV4cG9ydCBjb25zdCBQYWNrUHJlZml4UGF0dGVybiA9IC9eKFtBLVphLXowLTldKz8pXy87XG5cbmV4cG9ydCBjb25zdCBnZXRQYWNrbk5hbWVGcm9tSWQgPSAoXG4gIGlkOiBzdHJpbmcsXG4pOiB7IHBhY2s6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0gfCBudWxsID0+IHtcbiAgaWYgKGVtb2ppLmhhc0Vtb2ppKGlkKSkgcmV0dXJuIHsgcGFjazogXCJlbW9qaVwiLCBuYW1lOiBpZCB9O1xuICBjb25zdCBtYXRjaCA9IGlkLm1hdGNoKFBhY2tQcmVmaXhQYXR0ZXJuKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJObyB2YWlsZCBwYWNrIGlkIGZvdW5kIGluOiBcIiwgaWQpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IFtzdHIsIHBhY2tuYW1lXSA9IG1hdGNoO1xuICByZXR1cm4geyBwYWNrOiBwYWNrbmFtZSwgbmFtZTogaWQuc3Vic3RyaW5nKHN0ci5sZW5ndGgpIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc2FuaXRpemVJZCA9IChpZDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGdldFBhY2tuTmFtZUZyb21JZChpZCk7XG4gIGlmICghcmVzdWx0KSB7XG4gICAgY29uc29sZS5sb2coXCJmYWlsZWQgdG8gcmVuYW1lIGljb246IGlkICVzIGludmFsaWRcIiwgaWQpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBgJHtyZXN1bHQucGFja31fJHtzYW5pdGl6ZU5hbWUocmVzdWx0Lm5hbWUpfWA7XG59O1xuZXhwb3J0IGNvbnN0IHNhbml0aXplTmFtZSA9IChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgbmFtZS50cmltKCkucmVwbGFjZSgvWyAtXSsvZywgXCJfXCIpLnJlcGxhY2UoL1xccysvZywgXCJcIikudG9Mb2NhbGVMb3dlckNhc2UoKTtcblxuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZEljb25FeHQgPSBbXG4gIFwiLmJtcFwiLFxuICBcIi5wbmdcIixcbiAgXCIuanBnXCIsXG4gIFwiLmpwZWdcIixcbiAgXCIuZ2lmXCIsXG4gIFwiLnN2Z1wiLFxuICBcIi53ZWJwXCIsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IGljb25GaWxlUGF0dGVybiA9IC9eW1xcdy1dK1xcLig/OmJtcHxwbmd8anBnfGpwZWd8Z2lmfHN2Z3x3ZWJwKSQvO1xuZXhwb3J0IGNvbnN0IGV4dFBhdHRlcm4gPSAvXFwuKD86Ym1wfHBuZ3xqcGd8anBlZ3xnaWZ8c3ZnfHdlYnApJC87XG5jb25zdCBtaW1lcyA9IFN1cHBvcnRlZEljb25FeHQubWFwKChleHQpID0+IGxvb2t1cChleHQpKTtcbmV4cG9ydCBjb25zdCBnZXRJY29uc0Zyb21GaWxlTGlzdCA9IGFzeW5jIChcbiAgbGlzdDogRmlsZUxpc3QgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgZXh0OiBzdHJpbmc7IGRhdGE6IEFycmF5QnVmZmVyIH1bXSB8IG51bGw+ID0+IHtcbiAgaWYgKCFsaXN0IHx8IGxpc3QubGVuZ3RoIDw9IDApIHJldHVybiBudWxsO1xuICBjb25zdCBnZXRJY29uID0gYXN5bmMgKGZpbGU6IEZpbGUpID0+ICh7XG4gICAgbmFtZTogZmlsZS5uYW1lLnJlcGxhY2UoZXh0UGF0dGVybiwgXCJcIiksXG4gICAgZXh0OiBcIi5cIiArIChleHRlbnNpb24oZmlsZS50eXBlKSBhcyBzdHJpbmcpLFxuICAgIGRhdGE6IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKSxcbiAgfSk7XG4gIGxldCBwcm9taXNlcyA9IFtdIGFzIFJldHVyblR5cGU8dHlwZW9mIGdldEljb24+W107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGZpbGUgPSBsaXN0W2ldO1xuICAgIGlmIChtaW1lcy5pbmNsdWRlcyhmaWxlLnR5cGUpKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGdldEljb24oZmlsZSkpO1xuICAgIH1cbiAgfVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoID4gMCA/IHJlc3VsdCA6IG51bGw7XG59O1xuXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IGNsb25lUmVnZXhwIGZyb20gXCJjbG9uZS1yZWdleHBcIjtcblxuaW1wb3J0IEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcblxuZXhwb3J0IGNvbnN0IFJFX1NIT1JUQ09ERSA9IC86XFwrMTp8Oi0xOnw6W1xcdy1dKzovO1xuZXhwb3J0IGNvbnN0IGdldEdsb2JhbFJlZ2V4cCA9IChwYXR0ZXJuOiBSZWdFeHApID0+XG4gIGNsb25lUmVnZXhwKHBhdHRlcm4sIHsgZ2xvYmFsOiB0cnVlIH0pO1xuXG5leHBvcnQgY29uc3QgZ2V0Q2xzRm9ySWNvbiA9IChpY29uOiBJY29uSW5mbykgPT5cbiAgY2xhc3NOYW1lcyhbXCJpc2MtaWNvblwiLCBgaXNjLSR7aWNvbi5wYWNrfWBdKTtcbiIsICJjb25zdCB7dG9TdHJpbmd9ID0gT2JqZWN0LnByb3RvdHlwZTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNSZWdleHAodmFsdWUpIHtcblx0cmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbiIsICJpbXBvcnQgaXNSZWdleHAgZnJvbSAnaXMtcmVnZXhwJztcblxuY29uc3QgZmxhZ01hcCA9IHtcblx0Z2xvYmFsOiAnZycsXG5cdGlnbm9yZUNhc2U6ICdpJyxcblx0bXVsdGlsaW5lOiAnbScsXG5cdGRvdEFsbDogJ3MnLFxuXHRzdGlja3k6ICd5Jyxcblx0dW5pY29kZTogJ3UnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjbG9uZWRSZWdleHAocmVnZXhwLCBvcHRpb25zID0ge30pIHtcblx0aWYgKCFpc1JlZ2V4cChyZWdleHApKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBSZWdFeHAgaW5zdGFuY2UnKTtcblx0fVxuXG5cdGNvbnN0IGZsYWdzID0gT2JqZWN0LmtleXMoZmxhZ01hcCkubWFwKGZsYWcgPT4gKFxuXHRcdCh0eXBlb2Ygb3B0aW9uc1tmbGFnXSA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9uc1tmbGFnXSA6IHJlZ2V4cFtmbGFnXSkgPyBmbGFnTWFwW2ZsYWddIDogJydcblx0KSkuam9pbignJyk7XG5cblx0Y29uc3QgY2xvbmVkUmVnZXhwID0gbmV3IFJlZ0V4cChvcHRpb25zLnNvdXJjZSB8fCByZWdleHAuc291cmNlLCBmbGFncyk7XG5cblx0Y2xvbmVkUmVnZXhwLmxhc3RJbmRleCA9IHR5cGVvZiBvcHRpb25zLmxhc3RJbmRleCA9PT0gJ251bWJlcicgP1xuXHRcdG9wdGlvbnMubGFzdEluZGV4IDpcblx0XHRyZWdleHAubGFzdEluZGV4O1xuXG5cdHJldHVybiBjbG9uZWRSZWdleHA7XG59XG4iLCAidHlwZSBQb3NSYW5nZSA9IFtzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcl07XG5cbmNvbnN0IGlzUmFuZ2VPdmVybGFwID0gKGE6IFBvc1JhbmdlLCBiOiBQb3NSYW5nZSkgPT5cbiAgaXNXaXRoaW5SYW5nZShhLCBiWzBdKSB8fCBpc1dpdGhpblJhbmdlKGEsIGJbMV0pO1xuY29uc3QgaXNXaXRoaW5SYW5nZSA9IChyOiBQb3NSYW5nZSwgcG9zOiBudW1iZXIpID0+IHJbMF0gPCBwb3MgJiYgclsxXSA+IHBvcztcblxuY29uc3QgbWVyZ2VSYW5nZXMgPSAoYTogUG9zUmFuZ2UsIGI6IFBvc1JhbmdlKSA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gaXNXaXRoaW5SYW5nZShhLCBiWzBdKSA/IGFbMF0gOiBiWzBdLFxuICAgIGVuZCA9IGlzV2l0aGluUmFuZ2UoYSwgYlsxXSkgPyBhWzFdIDogYlsxXTtcbiAgcmV0dXJuIFtzdGFydCwgZW5kXSBhcyBQb3NSYW5nZTtcbn07XG5cbmNvbnN0IFVuaW9uUmFuZ2VzID0gKHJhbmdlczogUG9zUmFuZ2VbXSkgPT5cbiAgcmFuZ2VzXG4gICAgLnNvcnQoKGEsIGIpID0+IGFbMF0gLSBiWzBdKVxuICAgIC5yZWR1Y2UoKGFyciwgcmFuZ2UpID0+IHtcbiAgICAgIGxldCBpbmRleCA9IGFyci5maW5kSW5kZXgoKHJhbmdlVG9DaGVjaykgPT5cbiAgICAgICAgaXNSYW5nZU92ZXJsYXAocmFuZ2VUb0NoZWNrLCByYW5nZSksXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBhcnJbaW5kZXhdID0gbWVyZ2VSYW5nZXMoYXJyW2luZGV4XSwgcmFuZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyLnB1c2gocmFuZ2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycjtcbiAgICB9LCBbXSBhcyBQb3NSYW5nZVtdKTtcblxuZXhwb3J0IGRlZmF1bHQgVW5pb25SYW5nZXM7XG4iLCAiaW1wb3J0IHsgU3RhdCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgdHlwZSBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgY29uc3QgRE9NUHVyaWZ5OiB0eXBlb2YgaW1wb3J0KFwiZG9tcHVyaWZ5XCIpO1xufVxuXG5pbnRlcmZhY2UgSWNvbkNhY2hlIHtcbiAgY3RpbWU6IG51bWJlcjtcbiAgbXRpbWU6IG51bWJlcjtcbiAgc2l6ZTogbnVtYmVyO1xuICBzdmc6IFNWR0VsZW1lbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGVJY29uQ2FjaGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGx1Z2luOiBJY29uU0MpIHt9XG4gIHByaXZhdGUgZ2V0IHZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5hcHAudmF1bHQ7XG4gIH1cbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBJY29uQ2FjaGU+KCk7XG4gIGFzeW5jIGdldEljb24obm9ybWFsaXplZFBhdGg6IHN0cmluZyk6IFByb21pc2U8U1ZHRWxlbWVudCB8IG51bGw+IHtcbiAgICBjb25zdCBzdGF0ID0gYXdhaXQgdGhpcy52YXVsdC5hZGFwdGVyLnN0YXQobm9ybWFsaXplZFBhdGgpO1xuICAgIGlmICghc3RhdCB8fCBzdGF0LnR5cGUgIT09IFwiZmlsZVwiKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodGhpcy5jYWNoZS5oYXMobm9ybWFsaXplZFBhdGgpKSB7XG4gICAgICBjb25zdCBjYWNoZSA9IHRoaXMuY2FjaGUuZ2V0KG5vcm1hbGl6ZWRQYXRoKSE7XG4gICAgICBpZiAoXG4gICAgICAgIGNhY2hlLmN0aW1lID09PSBzdGF0LmN0aW1lICYmXG4gICAgICAgIGNhY2hlLm10aW1lID09PSBzdGF0Lm10aW1lICYmXG4gICAgICAgIGNhY2hlLnNpemUgPT09IHN0YXQuc2l6ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5zdmcuY2xvbmVOb2RlKHRydWUpIGFzIFNWR0VsZW1lbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHN2ZyA9IGF3YWl0IHRoaXMucmVhZEludG9DYWNoZShub3JtYWxpemVkUGF0aCwgc3RhdCk7XG4gICAgcmV0dXJuIHN2Zy5jbG9uZU5vZGUodHJ1ZSkgYXMgU1ZHRWxlbWVudDtcbiAgfVxuICBwcml2YXRlIGFzeW5jIHJlYWRJbnRvQ2FjaGUoXG4gICAgbm9ybWFsaXplZFBhdGg6IHN0cmluZyxcbiAgICBzdGF0OiBTdGF0LFxuICApOiBQcm9taXNlPFNWR0VsZW1lbnQ+IHtcbiAgICBjb25zdCBkYXRhID0gRE9NUHVyaWZ5LnNhbml0aXplKFxuICAgICAgICBhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIucmVhZChub3JtYWxpemVkUGF0aCksXG4gICAgICApLFxuICAgICAgc3ZnID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhkYXRhLCBcImltYWdlL3N2Zyt4bWxcIilcbiAgICAgICAgLmRvY3VtZW50RWxlbWVudCBhcyB1bmtub3duIGFzIFNWR0VsZW1lbnQ7XG4gICAgdGhpcy5jYWNoZS5zZXQobm9ybWFsaXplZFBhdGgsIHsgLi4uc3RhdCwgc3ZnIH0pO1xuICAgIHJldHVybiBzdmc7XG4gIH1cbiAgcmVmcmVzaCgpIHtcbiAgICBjb25zdCByZWZyZXNoID0gYXN5bmMgKHBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5zdGF0KHBhdGgpO1xuICAgICAgaWYgKCFzdGF0IHx8IHN0YXQudHlwZSAhPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUocGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnJlYWRJbnRvQ2FjaGUocGF0aCwgc3RhdCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9O1xuICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoWy4uLnRoaXMuY2FjaGUua2V5cygpXS5tYXAocmVmcmVzaCkpO1xuICB9XG4gIGNsZWFyKCkge1xuICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcbiAgfVxufVxuIiwgImltcG9ydCBcIi4vaWNvbi5sZXNzXCI7XG5cbmltcG9ydCBhc3NlcnROZXZlciBmcm9tIFwiYXNzZXJ0LW5ldmVyXCI7XG5pbXBvcnQgRnVzZSBmcm9tIFwiZnVzZS5qc1wiO1xuaW1wb3J0IEpTWmlwIGZyb20gXCJqc3ppcFwiO1xuaW1wb3J0IGVtb2ppIGZyb20gXCJub2RlLWVtb2ppXCI7XG5pbXBvcnQgeyBFdmVudFJlZiwgRXZlbnRzLCBub3JtYWxpemVQYXRoLCBOb3RpY2UsIFBsYXRmb3JtIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5pbXBvcnQgeyBldnRQcmVmaXgsIFBNRXZlbnRzIH0gZnJvbSBcIi4uL3R5cGluZ3MvYXBpXCI7XG5pbXBvcnQge1xuICBCdWlsdEluSWNvbklkcyxcbiAgQnVpbHRJbkljb25QYWNrbmFtZXMsXG4gIEJ1aWx0SW5TVkdJY29uUGFja3MsXG59IGZyb20gXCIuL2J1aWx0LWluc1wiO1xuaW1wb3J0IEVtb2ppSWNvbkRhdGEgZnJvbSBcIi4vZW1vamlcIjtcbmltcG9ydCBGaWxlSWNvbkRhdGEgZnJvbSBcIi4vZmlsZS1pY29uXCI7XG5pbXBvcnQgeyBCdWx0aUluSWNvbkRhdGEsIEljb25EYXRhLCBJY29uSW5mbywgaXNGaWxlSWNvbkluZm8gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZXh0UGF0dGVybixcbiAgZ2V0SWNvbnNGcm9tRmlsZUxpc3QsXG4gIGljb25GaWxlUGF0dGVybixcbiAgc2FuaXRpemVJZCxcbiAgc3RyaXBDb2xvbnMsXG59IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENVU1RPTV9JQ09OX1BBVEggPSBcIi9pY29ucy5qc29uXCI7XG5jb25zdCBDVVNUT01fSUNPTl9ESVIgPSBcImljb25zXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhY2tNYW5hZ2VyIGV4dGVuZHMgRXZlbnRzIHtcbiAgcHJpdmF0ZSBfY3VzdG9tSWNvbnMgPSBuZXcgTWFwPHN0cmluZywgRmlsZUljb25EYXRhPigpO1xuICBwcml2YXRlIF9jdXRvbXNJY29uUGFja25hbWVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbiAgZ2V0IHZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5hcHAudmF1bHQ7XG4gIH1cbiAgYXN5bmMgcmVuYW1lSWNvbkZpbGUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBleHQ6IHN0cmluZyxcbiAgICBuZXdJZDogc3RyaW5nLFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IG5ld1BhdGggPSBqb2luKHRoaXMuY3VzdG9tSWNvbnNEaXIsIG5ld0lkICsgZXh0KSxcbiAgICAgIHBhdGggPSBqb2luKHRoaXMuY3VzdG9tSWNvbnNEaXIsIGlkICsgZXh0KTtcbiAgICBhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIucmVuYW1lKHBhdGgsIG5ld1BhdGgpO1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG4gIHJlbW92ZUljb25GaWxlKGlkOiBzdHJpbmcsIGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGF0aCA9IGpvaW4odGhpcy5jdXN0b21JY29uc0RpciwgaWQgKyBleHQpO1xuICAgIHJldHVybiB0aGlzLnZhdWx0LmFkYXB0ZXIucmVtb3ZlKHBhdGgpO1xuICB9XG4gIGFzeW5jIGFkZEljb24oaWQ6IHN0cmluZywgZXh0OiBzdHJpbmcsIGRhdGE6IEFycmF5QnVmZmVyKSB7XG4gICAgY29uc3QgcGF0aCA9IGpvaW4odGhpcy5jdXN0b21JY29uc0RpciwgaWQgKyBleHQpO1xuICAgIGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci53cml0ZUJpbmFyeShwYXRoLCBkYXRhKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuICBnZXQgY3VzdG9tUGFja25hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2N1dG9tc0ljb25QYWNrbmFtZXNdO1xuICB9XG4gIGdldCBjdXN0b21JY29uc0ZpbGVQYXRoKCkge1xuICAgIHJldHVybiBub3JtYWxpemVQYXRoKHRoaXMucGx1Z2luLm1hbmlmZXN0LmRpciArIENVU1RPTV9JQ09OX1BBVEgpO1xuICB9XG4gIGdldCBjdXN0b21JY29uc0RpcigpIHtcbiAgICByZXR1cm4gam9pbih0aGlzLnZhdWx0LmNvbmZpZ0RpciwgQ1VTVE9NX0lDT05fRElSKTtcbiAgfVxuICBpc1BhY2tuYW1lRXhpc3RzKHBhY2tuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgQnVpbHRJbkljb25QYWNrbmFtZXMuaW5jbHVkZXMocGFja25hbWUpIHx8XG4gICAgICB0aGlzLl9jdXRvbXNJY29uUGFja25hbWVzLmhhcyhwYWNrbmFtZSlcbiAgICApO1xuICB9XG4gIGdldCBlbmFibGVkUGFja25hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLkJ1aWx0SW5JY29uUGFja25hbWVzLCAuLi50aGlzLl9jdXRvbXNJY29uUGFja25hbWVzXS5maWx0ZXIoXG4gICAgICAocGFjaykgPT4gdGhpcy5pc1BhY2tFbmFibGVkKHBhY2spLFxuICAgICk7XG4gIH1cblxuICBoYXNJY29uKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNCdWlsdEluKGlkKSB8fCB0aGlzLl9jdXN0b21JY29ucy5oYXMoaWQpO1xuICB9XG4gIHByaXZhdGUgX2lzQnVpbHRJbihpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVtb2ppLmhhc0Vtb2ppKGlkKSB8fCBCdWlsdEluU1ZHSWNvblBhY2tzLmhhcyhpZCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGlkIGFjY2VwdCBzaG9ydGNvZGUgd2l0aCBjb2xvbnNcbiAgICogQHBhcmFtIHJhdyBpZiBnaXZlbiwgcmV0dXJuIHJlc291cmNlIHBhdGggdG8gaWNvbiBmaWxlIGluc3RlYWQgb2YgaW1nIGVsZW1lbnRcbiAgICovXG4gIGdldEljb24oaWQ6IHN0cmluZywgcmF3OiB0cnVlKTogc3RyaW5nIHwgbnVsbDtcbiAgZ2V0SWNvbihpZDogc3RyaW5nLCByYXc/OiBmYWxzZSk6IEhUTUxTcGFuRWxlbWVudCB8IG51bGw7XG4gIGdldEljb24oaWQ6IHN0cmluZywgcmF3ID0gZmFsc2UpOiBzdHJpbmcgfCBIVE1MU3BhbkVsZW1lbnQgfCBudWxsIHtcbiAgICBpZCA9IHN0cmlwQ29sb25zKGlkKTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRJY29uRGF0YShpZCk7XG4gICAgaWYgKCFkYXRhKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBnZXRET00gPSAoKSA9PiBkYXRhLmdldERPTShmYWxzZSk7XG4gICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJlbW9qaVwiOlxuICAgICAgICByZXR1cm4gcmF3ID8gZGF0YS5jaGFyIDogZ2V0RE9NKCk7XG4gICAgICBjYXNlIFwiYnVsdGktaW5cIjpcbiAgICAgICAgcmV0dXJuIHJhdyA/IGRhdGEuZGF0YVVyaSA6IGdldERPTSgpO1xuICAgICAgY2FzZSBcImZpbGVcIjpcbiAgICAgICAgcmV0dXJuIHJhdyA/IGRhdGEucmVzb3VyY2VQYXRoIDogZ2V0RE9NKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnROZXZlcihkYXRhKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRTVkdJY29uKGlkOiBzdHJpbmcsIHJhdzogdHJ1ZSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIGFzeW5jIGdldFNWR0ljb24oaWQ6IHN0cmluZywgcmF3PzogZmFsc2UpOiBQcm9taXNlPEhUTUxTcGFuRWxlbWVudCB8IG51bGw+O1xuICBhc3luYyBnZXRTVkdJY29uKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcmF3ID0gZmFsc2UsXG4gICk6IFByb21pc2U8c3RyaW5nIHwgSFRNTFNwYW5FbGVtZW50IHwgbnVsbD4ge1xuICAgIGlkID0gc3RyaXBDb2xvbnMoaWQpO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEljb25EYXRhKGlkKTtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGdldERPTSA9ICgpID0+IGRhdGEuZ2V0RE9NKHRydWUpO1xuICAgIGlmIChkYXRhLnR5cGUgPT09IFwiZW1vamlcIikge1xuICAgICAgcmV0dXJuIHJhdyA/IGRhdGEuY2hhciA6IGdldERPTSgpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBkYXRhLnR5cGUgPT09IFwiYnVsdGktaW5cIiB8fFxuICAgICAgKGRhdGEudHlwZSA9PT0gXCJmaWxlXCIgJiYgZGF0YS5pc1NWRylcbiAgICApIHtcbiAgICAgIGNvbnN0IGVsID0gYXdhaXQgZ2V0RE9NKCk7XG4gICAgICByZXR1cm4gcmF3ID8gZWwuaW5uZXJIVE1MIDogZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByYXcgPyBkYXRhLnJlc291cmNlUGF0aCA6IGdldERPTSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldEljb25EYXRhKGlkOiBzdHJpbmcpOiBJY29uRGF0YSB8IG51bGwge1xuICAgIGlkID0gc3RyaXBDb2xvbnMoaWQpO1xuICAgIGxldCBkYXRhOiBJY29uRGF0YSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgaWYgKFxuICAgICAgKGRhdGEgPSBFbW9qaUljb25EYXRhLmdldERhdGEoaWQpKSB8fFxuICAgICAgKGRhdGEgPSBCdWlsdEluU1ZHSWNvblBhY2tzLmdldChpZCkpIHx8XG4gICAgICAoZGF0YSA9IHRoaXMuX2N1c3RvbUljb25zLmdldChpZCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpc1BhY2tFbmFibGVkKHBhY2s6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChwYWNrID09PSBcImVtb2ppXCIpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiAhdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGlzYWJsZWRQYWNrcy5oYXMocGFjayk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hQYWNrTmFtZXMoKSB7XG4gICAgdGhpcy5fY3V0b21zSWNvblBhY2tuYW1lcy5jbGVhcigpO1xuICAgIGZvciAoY29uc3QgWywgeyBwYWNrIH1dIG9mIHRoaXMuX2N1c3RvbUljb25zKSB7XG4gICAgICB0aGlzLl9jdXRvbXNJY29uUGFja25hbWVzLmFkZChwYWNrKTtcbiAgICB9XG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIHBsdWdpbjogSWNvblNDKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRlZCA9IGZhbHNlO1xuICBhc3luYyBsb2FkSWNvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xuICAgICAgdGhpcy5fZnVzZS5zZXRDb2xsZWN0aW9uKFtdKTtcbiAgICAgIHRoaXMuX2N1c3RvbUljb25zLmNsZWFyKCk7XG4gICAgICB0aGlzLl9jdXRvbXNJY29uUGFja25hbWVzLmNsZWFyKCk7XG4gICAgICB0aGlzLl9sb2FkZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCEoYXdhaXQgdGhpcy52YXVsdC5hZGFwdGVyLmV4aXN0cyh0aGlzLmN1c3RvbUljb25zRGlyKSkpIHtcbiAgICAgIGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5ta2Rpcih0aGlzLmN1c3RvbUljb25zRGlyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaWNvbmxpc3QgPSBhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIubGlzdCh0aGlzLmN1c3RvbUljb25zRGlyKTtcblxuICAgIGxldCBpbmZvO1xuICAgIGNvbnN0IHF1ZXVlID0gaWNvbmxpc3QuZmlsZXMubWFwKGFzeW5jIChwYXRoKSA9PiB7XG4gICAgICBpZiAoIWV4dFBhdHRlcm4udGVzdChwYXRoKSkgcmV0dXJuO1xuICAgICAgY29uc3QgaWQgPSBiYXNlbmFtZShwYXRoKS5yZXBsYWNlKGV4dFBhdHRlcm4sIFwiXCIpO1xuICAgICAgY29uc3QgaWNvbiA9IEZpbGVJY29uRGF0YS5nZXREYXRhKGlkLCBwYXRoLCB0aGlzLnBsdWdpbik7XG4gICAgICBpZiAoIWljb24pIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIFwiRmFpbGVkIHRvIGxvYWQgaWNvbiBkYXRhIChyYXcgdmFsdWU6ICVvKSBmb3IgaWQgJXMsIHNraXBwaW5nLi4uXCIsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBpZCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2N1c3RvbUljb25zLnNldChpZCwgaWNvbik7XG4gICAgICAgIHRoaXMuX2Z1c2UuYWRkKGljb24pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChxdWV1ZSkpIHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInJlamVjdGVkXCIpXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gbG9hZCBpY29uXCIsIHJlc3VsdC5yZWFzb24pO1xuICAgIH1cbiAgICB0aGlzLl9sb2FkZWQgPSB0cnVlO1xuICAgIHRoaXMucmVmcmVzaFBhY2tOYW1lcygpO1xuICAgIHRoaXMudHJpZ2dlcihcImluaXRpYWxpemVkXCIsIHRoaXMucGx1Z2luLmFwaSk7XG4gIH1cbiAgYXN5bmMgYmFja3VwSWNvbnMocGFjaz86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCB6aXAgPSBuZXcgSlNaaXAoKTtcbiAgICBjb25zdCBpY29ubGlzdCA9IGF3YWl0IHRoaXMudmF1bHQuYWRhcHRlci5saXN0KHRoaXMuY3VzdG9tSWNvbnNEaXIpO1xuICAgIGZvciAoY29uc3QgZmlsZXBhdGggb2YgaWNvbmxpc3QuZmlsZXMpIHtcbiAgICAgIGlmICghcGFjayB8fCBiYXNlbmFtZShmaWxlcGF0aCkuc3RhcnRzV2l0aChwYWNrICsgXCJfXCIpKSB7XG4gICAgICAgIHppcC5maWxlKGJhc2VuYW1lKGZpbGVwYXRoKSwgdGhpcy52YXVsdC5hZGFwdGVyLnJlYWRCaW5hcnkoZmlsZXBhdGgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYmFrRmlsZVBhdGggPSBgJHtwYWNrID8/IFwiY3VzdG9tLWljb25zXCJ9LnppcGA7XG4gICAgYXdhaXQgdGhpcy52YXVsdC5jcmVhdGVCaW5hcnkoXG4gICAgICBiYWtGaWxlUGF0aCxcbiAgICAgIGF3YWl0IHppcC5nZW5lcmF0ZUFzeW5jKHsgdHlwZTogXCJhcnJheWJ1ZmZlclwiIH0pLFxuICAgICk7XG4gICAgaWYgKFBsYXRmb3JtLmlzRGVza3RvcEFwcCkge1xuICAgICAgLy8gb3BlbiB2YXVsdCBkaXIgaW4gZXhwbG9yZXJcbiAgICAgIHRoaXMucGx1Z2luLmFwcC5vcGVuV2l0aERlZmF1bHRBcHAoXCJcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgIGBpY29ucyBoYXZlIGJlZW4gc2F2ZWQgdG8gJHtiYWtGaWxlUGF0aH0sIGAgK1xuICAgICAgICAgIFwiZW5hYmxlICdEZXRlY3QgYWxsIGZpbGUgZXh0ZW5zaW9uJyBpbiAnRmlsZXMgJiBMaW5rcycgdG8gdmlzaXQgaXRcIixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW1wb3J0SWNvbnNGcm9tRmlsZUxpc3QobGlzdDogRmlsZUxpc3QsIHppcE5hbWVBc1BhY2sgPSBmYWxzZSkge1xuICAgIGxldCBxdWV1ZSA9IFtdIGFzIFByb21pc2U8c3RyaW5nPltdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZmlsZSA9IGxpc3RbaV07XG4gICAgICBpZiAoZmlsZS50eXBlICE9PSBcImFwcGxpY2F0aW9uL3ppcFwiKSBjb250aW51ZTtcbiAgICAgIHF1ZXVlLnB1c2godGhpcy5pbXBvcnRJY29ucyhmaWxlLCB6aXBOYW1lQXNQYWNrKSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQocXVldWUpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlc1xuICAgKiBAcGFyYW0gemlwTmFtZUFzUGFjayBpZiB0cnVlLCB1c2UgemlwIGZpbGVuYW1lIGFzIHBhY2sgbmFtZTsgb3RoZXJ3aXNlLCBnZXQgcGFjayBuYW1lIGZyb20gZWFjaCBpY29uJ3MgaWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGltcG9ydEljb25zKFxuICAgIGZpbGU6IEZpbGUgfCB7IG5hbWU6IHN0cmluZzsgZGF0YTogQXJyYXlCdWZmZXIgfSxcbiAgICB6aXBOYW1lQXNQYWNrOiBib29sZWFuLFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHBhY2tOYW1lRnJvbVppcCA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC56aXAkLywgXCJcIik7XG4gICAgbGV0IHppcDtcbiAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgIHppcCA9IGF3YWl0IEpTWmlwLmxvYWRBc3luYyhmaWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgemlwID0gYXdhaXQgSlNaaXAubG9hZEFzeW5jKGZpbGUuZGF0YSk7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXVlID0gemlwLmZpbGUoaWNvbkZpbGVQYXR0ZXJuKS5tYXAoYXN5bmMgKGZpbGUpID0+IHtcbiAgICAgIGxldCB7IG5hbWUgfSA9IGZpbGU7XG4gICAgICBpZiAoemlwTmFtZUFzUGFjayAmJiAhbmFtZS5zdGFydHNXaXRoKHBhY2tOYW1lRnJvbVppcCArIFwiX1wiKSlcbiAgICAgICAgbmFtZSA9IHBhY2tOYW1lRnJvbVppcCArIFwiX1wiICsgbmFtZTtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRBdmFpbGFibGVJZChuYW1lKTtcbiAgICAgIGNvbnN0IHdyaXRlVG8gPSBqb2luKHRoaXMuY3VzdG9tSWNvbnNEaXIsIGlkKTtcbiAgICAgIGlmIChhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKHdyaXRlVG8pKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChgaWNvbiAke2lkfSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcuLmApO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy52YXVsdC5hZGFwdGVyLndyaXRlQmluYXJ5KFxuICAgICAgICB3cml0ZVRvLFxuICAgICAgICBhd2FpdCBmaWxlLmFzeW5jKFwiYXJyYXlidWZmZXJcIiksXG4gICAgICApO1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH0pO1xuICAgIGNvbnN0IGFkZGVkSWNvbnMgPSAoYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHF1ZXVlKSkucmVkdWNlKFxuICAgICAgKGFyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInJlamVjdGVkXCIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGltcG9ydCBpY29uXCIsIHJlc3VsdC5yZWFzb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFyci5wdXNoKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgIH0sXG4gICAgICBbXSBhcyBzdHJpbmdbXSxcbiAgICApO1xuICAgIG5ldyBOb3RpY2UoYWRkZWRJY29ucy5sZW5ndGggKyBcIiBpY29ucyBpbXBvcnRlZFwiKTtcbiAgICByZXR1cm4gZmlsZS5uYW1lO1xuICB9XG5cbiAgYXN5bmMgYWRkRnJvbUZpbGVzKHBhY2s6IHN0cmluZywgZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgaWNvbnMgPSBhd2FpdCBnZXRJY29uc0Zyb21GaWxlTGlzdChmaWxlcyk7XG4gICAgaWYgKCFpY29ucykge1xuICAgICAgbmV3IE5vdGljZShcIk5vIFNWRyBmaWxlIGZvdW5kIGluIGRyb3BwZWQgaXRlbXNcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEJ1aWx0SW5JY29uUGFja25hbWVzLmluY2x1ZGVzKHBhY2spKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiZmFpbGVkIHRvIGFkZCBwYWNrOiBwYWNrIG5hbWUgJXMgcmVzZXJ2ZWRcIiwgcGFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHdyaXRlUXVldWUgPSBpY29ucy5yZWR1Y2UoKGFyciwgeyBuYW1lLCBleHQsIGRhdGEgfSkgPT4ge1xuICAgICAgbGV0IGlkID0gc2FuaXRpemVJZChgJHtwYWNrfV8ke25hbWV9YCk7XG4gICAgICBpZiAoIWlkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcImZhaWxlZCB0byBhZGQgaWNvbjogaWQgJXMgaW52YWxpZCwgc2tpcHBpbmcuLi5cIiwgaWQpO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgfVxuICAgICAgaWQgPSB0aGlzLmdldEF2YWlsYWJsZUlkKGlkKTtcbiAgICAgIGlmICh0aGlzLl9jdXN0b21JY29ucy5oYXMoaWQpKSB7XG4gICAgICAgIGFyci5wdXNoKFByb21pc2UucmVqZWN0KGBpY29uICR7aWR9IGFscmVhZHkgZXhpc3RzLCBza2lwcGluZy4uYCkpO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgfVxuICAgICAgYXJyLnB1c2goXG4gICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBhd2FpdCB0aGlzLmFkZEljb24oaWQsIGV4dCwgZGF0YSk7XG4gICAgICAgICAgICB0aGlzLnNldChcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIG5ldyBGaWxlSWNvbkRhdGEoaWQsIG5hbWUsIHBhY2ssIHBhdGgsIHRoaXMucGx1Z2luKSxcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWNvbkZpbGVPcEVycm9yKFwiYWRkXCIsIGlkLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfSkoKSxcbiAgICAgICk7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtdIGFzIFByb21pc2U8c3RyaW5nPltdKTtcbiAgICBsZXQgYWRkZWRJZHMgPSBbXSBhcyBzdHJpbmdbXTtcbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQod3JpdGVRdWV1ZSkpIHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInJlamVjdGVkXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBhZGQgaWNvbiwgZGV0YWlsczogXCIsIHJlc3VsdC5yZWFzb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkZWRJZHMucHVzaChyZXN1bHQudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlZnJlc2hQYWNrTmFtZXMoKTtcbiAgICB0aGlzLnRyaWdnZXIoXCJjaGFuZ2VkXCIsIHRoaXMucGx1Z2luLmFwaSwgYWRkZWRJZHMpO1xuICAgIG5ldyBOb3RpY2UoYWRkZWRJZHMubGVuZ3RoLnRvU3RyaW5nKCkgKyBcIiBpY29ucyBhZGRlZFwiKTtcbiAgfVxuICBhc3luYyBkZWxldGVNdWx0aXBsZSguLi5pZHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fZnVzZS5yZW1vdmUoKGljb24pID0+IGlzRmlsZUljb25JbmZvKGljb24pICYmIGlkcy5pbmNsdWRlcyhpY29uLmlkKSk7XG4gICAgY29uc3QgcXVldWUgPSBpZHMubWFwKGFzeW5jIChpZCkgPT4ge1xuICAgICAgY29uc3QgaW5mbyA9IHRoaXMuX2N1c3RvbUljb25zLmdldChpZCk7XG4gICAgICBpZiAoIWluZm8pXG4gICAgICAgIHRocm93IG5ldyBJY29uRmlsZU9wRXJyb3IoXG4gICAgICAgICAgXCJkZWxldGVcIixcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBcIk5vIGljb24gZm91bmQgaW4gX2N1c3RvbUljb25zXCIsXG4gICAgICAgICk7XG4gICAgICB0aGlzLl9jdXN0b21JY29ucy5kZWxldGUoaWQpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVJY29uRmlsZShpZCwgaW5mby5leHQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEljb25GaWxlT3BFcnJvcihcImRlbGV0ZVwiLCBpZCwgZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHF1ZXVlKSkge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHJlbW92ZSBpY29uIGZpbGUsIGRldGFpbHM6IFwiLCByZXN1bHQucmVhc29uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZWQgfHwgKGNoYW5nZWQgPSB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMucmVmcmVzaFBhY2tOYW1lcygpO1xuICAgICAgdGhpcy50cmlnZ2VyKFwiY2hhbmdlZFwiLCB0aGlzLnBsdWdpbi5hcGksIGlkcyk7XG4gICAgfVxuICB9XG4gIGFzeW5jIGZpbHRlcihcbiAgICBwcmVkaWNhdGU6IChrZXk6IHN0cmluZywgdmFsdWU6IE9taXQ8RmlsZUljb25EYXRhLCBcImlkXCI+KSA9PiBib29sZWFuLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBpZCAtIHBhdGggbWFwXG4gICAgbGV0IEljb25zVG9EZWxldGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgW2lkLCBkYXRhXSBvZiB0aGlzLl9jdXN0b21JY29ucykge1xuICAgICAgaWYgKCFwcmVkaWNhdGUoaWQsIGRhdGEpKSB7XG4gICAgICAgIHRoaXMuX2N1c3RvbUljb25zLmRlbGV0ZShpZCk7XG4gICAgICAgIEljb25zVG9EZWxldGUuc2V0KGlkLCBkYXRhLnBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9mdXNlLnJlbW92ZSgoaWNvbikgPT4gSWNvbnNUb0RlbGV0ZS5oYXMoaWNvbi5pZCkpO1xuICAgIGlmIChJY29uc1RvRGVsZXRlLnNpemUgPT09IDApIHJldHVybjtcbiAgICB0aGlzLnJlZnJlc2hQYWNrTmFtZXMoKTtcbiAgICB0aGlzLnRyaWdnZXIoXCJjaGFuZ2VkXCIsIHRoaXMucGx1Z2luLmFwaSwgWy4uLkljb25zVG9EZWxldGUua2V5cygpXSk7XG4gICAgY29uc3QgcXVldWUgPSBbLi4uSWNvbnNUb0RlbGV0ZS52YWx1ZXMoKV0ubWFwKGFzeW5jIChwYXRoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIucmVtb3ZlKHBhdGgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEljb25GaWxlT3BFcnJvcihcImRlbGV0ZVwiLCBiYXNlbmFtZShwYXRoKSwgZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChxdWV1ZSkpIHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInJlamVjdGVkXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byByZW1vdmUgaWNvbiBmaWxlLCBkZXRhaWxzOiBcIiwgcmVzdWx0LnJlYXNvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFzeW5jIHJlbmFtZShpZDogc3RyaW5nLCBuZXdJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgaWYgKHRoaXMuaGFzSWNvbihuZXdJZCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiZmFpbGVkIHRvIHJlbmFtZSBpY29uOiBpZCAlcyBhbHJlYWR5IGV4aXN0c1wiLCBuZXdJZCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgbGV0IGluZm8gPSB0aGlzLl9jdXN0b21JY29ucy5nZXQoaWQpO1xuICAgIGlmICghaW5mbykge1xuICAgICAgY29uc29sZS5sb2coXCJmYWlsZWQgdG8gcmVuYW1lIGljb246IGlkICVzIG5vdCBmb3VuZCBpbiBjdXN0b20gaWNvbnNcIiwgaWQpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlbmFtZVRvID0gc2FuaXRpemVJZChuZXdJZCk7XG4gICAgaWYgKCFyZW5hbWVUbykge1xuICAgICAgY29uc29sZS5sb2coXCJmYWlsZWQgdG8gcmVuYW1lIGljb246IGlkICVzIGludmFsaWRcIiwgaWQpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBpbmZvLnBhdGggPSBhd2FpdCB0aGlzLnJlbmFtZUljb25GaWxlKGlkLCBpbmZvLmV4dCwgbmV3SWQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSWNvbkZpbGVPcEVycm9yKFwicmVuYW1lXCIsIGlkLCBlcnJvciwgbmV3SWQpO1xuICAgIH1cbiAgICB0aGlzLnNldChyZW5hbWVUbywgaW5mbywgZmFsc2UpO1xuICAgIHRoaXMuZGVsZXRlKGlkLCBmYWxzZSwgZmFsc2UpO1xuICAgIHRoaXMucmVmcmVzaFBhY2tOYW1lcygpO1xuICAgIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwgdGhpcy5wbHVnaW4uYXBpLCBbaWQsIG5ld0lkXSk7XG4gICAgcmV0dXJuIG5ld0lkO1xuICB9XG4gIGFzeW5jIHN0YXIoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IHRhcmdldElkID0gaWQucmVwbGFjZSgvX1xcZD8kLywgXCJcIik7XG4gICAgaWYgKHRhcmdldElkID09PSBpZCkge1xuICAgICAgY29uc29sZS5sb2coXCJmYWlsZWQgdG8gc3RhciBpY29uOiBubyBzdWZmaXggZm91bmQgZm9yIGlkICVzXCIsIGlkKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBpbmZvID0gdGhpcy5fY3VzdG9tSWNvbnMuZ2V0KGlkKTtcbiAgICBpZiAoIWluZm8pIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiZmFpbGVkIHRvIHN0YXIgaWNvbjogaWQgJXMgbm90IGZvdW5kIGluIGN1c3RvbSBpY29uc1wiLCBpZCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2lzQnVpbHRJbih0YXJnZXRJZCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBcImZhaWxlZCB0byBzdGFyIGljb246IG5ldyBpZCAlcyBleGlzdHMgaW4gYnVpbHQtaW4gaWNvbnNcIixcbiAgICAgICAgdGFyZ2V0SWQsXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZXh0IH0gPSBpbmZvO1xuICAgICAgaWYgKHRoaXMuX2N1c3RvbUljb25zLmhhcyh0YXJnZXRJZCkpIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IHRoaXMuX2N1c3RvbUljb25zLmdldCh0YXJnZXRJZCkgYXMgRmlsZUljb25EYXRhLFxuICAgICAgICAgIHsgZXh0OiB0YXJnZXRFeHQgfSA9IHRlbXA7XG4gICAgICAgIGF3YWl0IHRoaXMucmVuYW1lSWNvbkZpbGUodGFyZ2V0SWQsIHRhcmdldEV4dCwgdGFyZ2V0SWQgKyBcIl90ZW1wXCIpO1xuICAgICAgICBpbmZvLnBhdGggPSBhd2FpdCB0aGlzLnJlbmFtZUljb25GaWxlKGlkLCBleHQsIHRhcmdldElkKTtcbiAgICAgICAgdGhpcy5zZXQodGFyZ2V0SWQsIGluZm8sIGZhbHNlKTtcbiAgICAgICAgdGVtcC5wYXRoID0gYXdhaXQgdGhpcy5yZW5hbWVJY29uRmlsZShcbiAgICAgICAgICB0YXJnZXRJZCArIFwiX3RlbXBcIixcbiAgICAgICAgICB0YXJnZXRFeHQsXG4gICAgICAgICAgaWQsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0KGlkLCB0ZW1wLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmZvLnBhdGggPSBhd2FpdCB0aGlzLnJlbmFtZUljb25GaWxlKGlkLCBleHQsIHRhcmdldElkKTtcbiAgICAgICAgdGhpcy5zZXQodGFyZ2V0SWQsIGluZm8sIGZhbHNlKTtcbiAgICAgICAgdGhpcy5kZWxldGUoaWQsIGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG5ldyBJY29uRmlsZU9wRXJyb3IoXCJyZW5hbWVcIiwgaWQsIGVycm9yLCB0YXJnZXRJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoUGFja05hbWVzKCk7XG4gICAgdGhpcy50cmlnZ2VyKFwiY2hhbmdlZFwiLCB0aGlzLnBsdWdpbi5hcGksIFtpZCwgdGFyZ2V0SWRdKTtcbiAgICByZXR1cm4gdGFyZ2V0SWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEF2YWlsYWJsZUlkKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5oYXNJY29uKGlkKSkgcmV0dXJuIGlkO1xuICAgIGxldCBpID0gMSxcbiAgICAgIG5ld0lkID0gYCR7aWR9XyR7aX1gO1xuICAgIHdoaWxlICh0aGlzLmhhc0ljb24obmV3SWQpKSB7XG4gICAgICBuZXdJZCA9IGAke2lkfV8keysraX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7aWR9XyR7aX1gO1xuICB9XG5cbiAgLyoqIHNldCBpbmZvIGluIGRhdGFiYXNlLCBubyBmaWxlIGNoYW5nZXMgKi9cbiAgc2V0KGlkOiBzdHJpbmcsIGluZm86IEZpbGVJY29uRGF0YSwgcmVmcmVzaCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VzdG9tSWNvbnMuZ2V0KGlkKSA9PT0gaW5mbykgcmV0dXJuO1xuICAgIHRoaXMuX2N1c3RvbUljb25zLnNldChpZCwgaW5mbyk7XG4gICAgdGhpcy5fZnVzZS5yZW1vdmUoKGljb24pID0+IGljb24uaWQgPT09IGlkKTtcbiAgICB0aGlzLl9mdXNlLmFkZChpbmZvKTtcbiAgICBpZiAocmVmcmVzaCkge1xuICAgICAgdGhpcy5yZWZyZXNoUGFja05hbWVzKCk7XG4gICAgICB0aGlzLnRyaWdnZXIoXCJjaGFuZ2VkXCIsIHRoaXMucGx1Z2luLmFwaSwgW2lkXSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcmVmcmVzaCA9IHRydWUsXG4gICAgZGVsZXRlRmlsZSA9IHRydWUsXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGluZm8gPSB0aGlzLl9jdXN0b21JY29ucy5nZXQoaWQpO1xuICAgIGlmICghaW5mbykgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChkZWxldGVGaWxlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUljb25GaWxlKGlkLCBpbmZvLmV4dCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgSWNvbkZpbGVPcEVycm9yKFwiZGVsZXRlXCIsIGlkLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2N1c3RvbUljb25zLmRlbGV0ZShpZCk7XG4gICAgdGhpcy5fZnVzZS5yZW1vdmUoKGljb24pID0+IGljb24uaWQgPT09IGlkKTtcbiAgICBpZiAocmVmcmVzaCkge1xuICAgICAgdGhpcy5yZWZyZXNoUGFja05hbWVzKCk7XG4gICAgICB0aGlzLnRyaWdnZXIoXCJjaGFuZ2VkXCIsIHRoaXMucGx1Z2luLmFwaSwgW2lkXSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgYXN5bmMgY2xlYXIoKSB7XG4gICAgY29uc3QgcXVldWUgPSAoXG4gICAgICBhd2FpdCB0aGlzLnZhdWx0LmFkYXB0ZXIubGlzdCh0aGlzLmN1c3RvbUljb25zRGlyKVxuICAgICkuZmlsZXMubWFwKChwYXRoKSA9PiB0aGlzLnZhdWx0LmFkYXB0ZXIucmVtb3ZlKHBhdGgpKTtcbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocXVldWUpKSB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJyZWplY3RlZFwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcmVtb3ZlIGljb24gZmlsZSwgZGV0YWlsczogXCIsIHJlc3VsdC5yZWFzb24pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9jdXN0b21JY29ucy5jbGVhcigpO1xuICAgIHRoaXMuX2Z1c2UucmVtb3ZlKChpZCkgPT4gIUJ1aWx0SW5JY29uSWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgdGhpcy5yZWZyZXNoUGFja05hbWVzKCk7XG4gICAgdGhpcy50cmlnZ2VyKFwiY2hhbmdlZFwiLCB0aGlzLnBsdWdpbi5hcGkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnVzZSA9IG5ldyBGdXNlPEljb25JbmZvPihCdWlsdEluSWNvbklkcywge1xuICAgIGtleXM6IFtcIm5hbWVcIiwgXCJwYWNrXCJdLFxuICAgIGluY2x1ZGVTY29yZTogdHJ1ZSxcbiAgICAvLyBpZ25vcmVMb2NhdGlvbjogdHJ1ZSxcbiAgICBmaW5kQWxsTWF0Y2hlczogdHJ1ZSxcbiAgICB0aHJlc2hvbGQ6IDAuNSxcbiAgICBzaG91bGRTb3J0OiB0cnVlLFxuICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgIHVzZUV4dGVuZGVkU2VhcmNoOiB0cnVlLFxuICB9KTtcbiAgc2VhcmNoKHF1ZXJ5OiBzdHJpbmdbXSwgcGFja3M/OiBzdHJpbmdbXSwgbGltaXQ/OiBudW1iZXIpIHtcbiAgICBsZXQgZXhwID0gcXVlcnkubWFwPEZ1c2UuRXhwcmVzc2lvbj4oKHMpID0+ICh7IG5hbWU6IHMgfSkpO1xuICAgIHBhY2tzID0gcGFja3MgPz8gdGhpcy5lbmFibGVkUGFja25hbWVzO1xuICAgIGV4cC5wdXNoKHsgJG9yOiBwYWNrcy5tYXAoKHApID0+ICh7IHBhY2s6IGA9JHtwfWAgfSkpIH0pO1xuICAgIHJldHVybiB0aGlzLl9mdXNlLnNlYXJjaCh7ICRhbmQ6IGV4cCB9LCB7IGxpbWl0OiBsaW1pdCA/PyAyMCB9KTtcbiAgfVxuICBnZXRBbGxJZHMocGFja3M/OiBzdHJpbmdbXSwgbGltaXQ/OiBudW1iZXIpIHtcbiAgICBsZXQgZXhwID0gKHBhY2tzID8/IHRoaXMuZW5hYmxlZFBhY2tuYW1lcykubWFwKChwKSA9PiAoe1xuICAgICAgcGFjazogYD0ke3B9YCxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHRoaXMuX2Z1c2Uuc2VhcmNoKHsgJG9yOiBleHAgfSwgeyBsaW1pdDogbGltaXQgPz8gMjAgfSk7XG4gIH1cblxuICB0cmlnZ2VyKC4uLmFyZ3M6IFBNRXZlbnRzKTogdm9pZCB7XG4gICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gYXJncztcbiAgICBzdXBlci50cmlnZ2VyKG5hbWUsIC4uLnJlc3QpO1xuICAgIHRoaXMucGx1Z2luLmFwcC52YXVsdC50cmlnZ2VyKGV2dFByZWZpeCArIG5hbWUsIC4uLnJlc3QpO1xuICB9XG4gIG9uKC4uLmFyZ3M6IE9uQXJnczxQTUV2ZW50cz4pOiBFdmVudFJlZiB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBzdXBlci5vbiguLi5hcmdzKTtcbiAgfVxufVxuXG50eXBlIE9uQXJnczxUPiA9IFQgZXh0ZW5kcyBbaW5mZXIgQSwgLi4uaW5mZXIgQl1cbiAgPyBBIGV4dGVuZHMgc3RyaW5nXG4gICAgPyBbbmFtZTogQSwgY2FsbGJhY2s6ICguLi5hcmdzOiBCKSA9PiBhbnldXG4gICAgOiBuZXZlclxuICA6IG5ldmVyO1xuXG5jbGFzcyBJY29uRmlsZU9wRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG9wOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHNyY0VycjogYW55LCBuZXdJZD86IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYEVycm9yIHdoaWxlICR7b3B9IG9uICR7aWR9JHtuZXdJZCA/IFwiPT5cIiArIG5ld0lkIDogXCJcIn06ICR7XG4gICAgICAgIHNyY0VyciBpbnN0YW5jZW9mIEVycm9yID8gYCR7c3JjRXJyLm5hbWV9OiAke3NyY0Vyci5tZXNzYWdlfWAgOiBzcmNFcnJcbiAgICAgIH1gLFxuICAgICk7XG4gICAgY29uc29sZS5lcnJvcihgJHtvcH0gb24gJHtpZH0ke25ld0lkID8gXCI9PlwiICsgbmV3SWQgOiBcIlwifWAsIHNyY0Vycik7XG4gICAgdGhpcy5uYW1lID0gXCJTYXZlSWNvbkVycm9yXCI7XG4gIH1cbn1cbiIsICIvKipcbiAqIEZ1c2UuanMgdjYuNi4yIC0gTGlnaHR3ZWlnaHQgZnV6enktc2VhcmNoIChodHRwOi8vZnVzZWpzLmlvKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAyMiBLaXJvIFJpc2sgKGh0dHA6Ly9raXJvLm1lKVxuICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wXG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKi9cblxuZnVuY3Rpb24gaXNBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gIUFycmF5LmlzQXJyYXlcbiAgICA/IGdldFRhZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEFycmF5XSdcbiAgICA6IEFycmF5LmlzQXJyYXkodmFsdWUpXG59XG5cbi8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9tYXN0ZXIvLmludGVybmFsL2Jhc2VUb1N0cmluZy5qc1xuY29uc3QgSU5GSU5JVFkgPSAxIC8gMDtcbmZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgbGV0IHJlc3VsdCA9IHZhbHVlICsgJyc7XG4gIHJldHVybiByZXN1bHQgPT0gJzAnICYmIDEgLyB2YWx1ZSA9PSAtSU5GSU5JVFkgPyAnLTAnIDogcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpXG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG59XG5cbi8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9tYXN0ZXIvaXNCb29sZWFuLmpzXG5mdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSA9PT0gdHJ1ZSB8fFxuICAgIHZhbHVlID09PSBmYWxzZSB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gJ1tvYmplY3QgQm9vbGVhbl0nKVxuICApXG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG59XG5cbi8vIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLlxuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWx1ZSkgJiYgdmFsdWUgIT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNEZWZpbmVkKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzQmxhbmsodmFsdWUpIHtcbiAgcmV0dXJuICF2YWx1ZS50cmltKCkubGVuZ3RoXG59XG5cbi8vIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbi8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9tYXN0ZXIvLmludGVybmFsL2dldFRhZy5qc1xuZnVuY3Rpb24gZ2V0VGFnKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsXG4gICAgPyB2YWx1ZSA9PT0gdW5kZWZpbmVkXG4gICAgICA/ICdbb2JqZWN0IFVuZGVmaW5lZF0nXG4gICAgICA6ICdbb2JqZWN0IE51bGxdJ1xuICAgIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKVxufVxuXG5jb25zdCBFWFRFTkRFRF9TRUFSQ0hfVU5BVkFJTEFCTEUgPSAnRXh0ZW5kZWQgc2VhcmNoIGlzIG5vdCBhdmFpbGFibGUnO1xuXG5jb25zdCBJTkNPUlJFQ1RfSU5ERVhfVFlQRSA9IFwiSW5jb3JyZWN0ICdpbmRleCcgdHlwZVwiO1xuXG5jb25zdCBMT0dJQ0FMX1NFQVJDSF9JTlZBTElEX1FVRVJZX0ZPUl9LRVkgPSAoa2V5KSA9PlxuICBgSW52YWxpZCB2YWx1ZSBmb3Iga2V5ICR7a2V5fWA7XG5cbmNvbnN0IFBBVFRFUk5fTEVOR1RIX1RPT19MQVJHRSA9IChtYXgpID0+XG4gIGBQYXR0ZXJuIGxlbmd0aCBleGNlZWRzIG1heCBvZiAke21heH0uYDtcblxuY29uc3QgTUlTU0lOR19LRVlfUFJPUEVSVFkgPSAobmFtZSkgPT4gYE1pc3NpbmcgJHtuYW1lfSBwcm9wZXJ0eSBpbiBrZXlgO1xuXG5jb25zdCBJTlZBTElEX0tFWV9XRUlHSFRfVkFMVUUgPSAoa2V5KSA9PlxuICBgUHJvcGVydHkgJ3dlaWdodCcgaW4ga2V5ICcke2tleX0nIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyYDtcblxuY29uc3QgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuY2xhc3MgS2V5U3RvcmUge1xuICBjb25zdHJ1Y3RvcihrZXlzKSB7XG4gICAgdGhpcy5fa2V5cyA9IFtdO1xuICAgIHRoaXMuX2tleU1hcCA9IHt9O1xuXG4gICAgbGV0IHRvdGFsV2VpZ2h0ID0gMDtcblxuICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBsZXQgb2JqID0gY3JlYXRlS2V5KGtleSk7XG5cbiAgICAgIHRvdGFsV2VpZ2h0ICs9IG9iai53ZWlnaHQ7XG5cbiAgICAgIHRoaXMuX2tleXMucHVzaChvYmopO1xuICAgICAgdGhpcy5fa2V5TWFwW29iai5pZF0gPSBvYmo7XG5cbiAgICAgIHRvdGFsV2VpZ2h0ICs9IG9iai53ZWlnaHQ7XG4gICAgfSk7XG5cbiAgICAvLyBOb3JtYWxpemUgd2VpZ2h0cyBzbyB0aGF0IHRoZWlyIHN1bSBpcyBlcXVhbCB0byAxXG4gICAgdGhpcy5fa2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGtleS53ZWlnaHQgLz0gdG90YWxXZWlnaHQ7XG4gICAgfSk7XG4gIH1cbiAgZ2V0KGtleUlkKSB7XG4gICAgcmV0dXJuIHRoaXMuX2tleU1hcFtrZXlJZF1cbiAgfVxuICBrZXlzKCkge1xuICAgIHJldHVybiB0aGlzLl9rZXlzXG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9rZXlzKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleShrZXkpIHtcbiAgbGV0IHBhdGggPSBudWxsO1xuICBsZXQgaWQgPSBudWxsO1xuICBsZXQgc3JjID0gbnVsbDtcbiAgbGV0IHdlaWdodCA9IDE7XG4gIGxldCBnZXRGbiA9IG51bGw7XG5cbiAgaWYgKGlzU3RyaW5nKGtleSkgfHwgaXNBcnJheShrZXkpKSB7XG4gICAgc3JjID0ga2V5O1xuICAgIHBhdGggPSBjcmVhdGVLZXlQYXRoKGtleSk7XG4gICAgaWQgPSBjcmVhdGVLZXlJZChrZXkpO1xuICB9IGVsc2Uge1xuICAgIGlmICghaGFzT3duLmNhbGwoa2V5LCAnbmFtZScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoTUlTU0lOR19LRVlfUFJPUEVSVFkoJ25hbWUnKSlcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lID0ga2V5Lm5hbWU7XG4gICAgc3JjID0gbmFtZTtcblxuICAgIGlmIChoYXNPd24uY2FsbChrZXksICd3ZWlnaHQnKSkge1xuICAgICAgd2VpZ2h0ID0ga2V5LndlaWdodDtcblxuICAgICAgaWYgKHdlaWdodCA8PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0tFWV9XRUlHSFRfVkFMVUUobmFtZSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcGF0aCA9IGNyZWF0ZUtleVBhdGgobmFtZSk7XG4gICAgaWQgPSBjcmVhdGVLZXlJZChuYW1lKTtcbiAgICBnZXRGbiA9IGtleS5nZXRGbjtcbiAgfVxuXG4gIHJldHVybiB7IHBhdGgsIGlkLCB3ZWlnaHQsIHNyYywgZ2V0Rm4gfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlQYXRoKGtleSkge1xuICByZXR1cm4gaXNBcnJheShrZXkpID8ga2V5IDoga2V5LnNwbGl0KCcuJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5SWQoa2V5KSB7XG4gIHJldHVybiBpc0FycmF5KGtleSkgPyBrZXkuam9pbignLicpIDoga2V5XG59XG5cbmZ1bmN0aW9uIGdldChvYmosIHBhdGgpIHtcbiAgbGV0IGxpc3QgPSBbXTtcbiAgbGV0IGFyciA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlZXBHZXQgPSAob2JqLCBwYXRoLCBpbmRleCkgPT4ge1xuICAgIGlmICghaXNEZWZpbmVkKG9iaikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIXBhdGhbaW5kZXhdKSB7XG4gICAgICAvLyBJZiB0aGVyZSdzIG5vIHBhdGggbGVmdCwgd2UndmUgYXJyaXZlZCBhdCB0aGUgb2JqZWN0IHdlIGNhcmUgYWJvdXQuXG4gICAgICBsaXN0LnB1c2gob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGtleSA9IHBhdGhbaW5kZXhdO1xuXG4gICAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuXG4gICAgICBpZiAoIWlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlJ3JlIGF0IHRoZSBsYXN0IHZhbHVlIGluIHRoZSBwYXRoLCBhbmQgaWYgaXQncyBhIHN0cmluZy9udW1iZXIvYm9vbCxcbiAgICAgIC8vIGFkZCBpdCB0byB0aGUgbGlzdFxuICAgICAgaWYgKFxuICAgICAgICBpbmRleCA9PT0gcGF0aC5sZW5ndGggLSAxICYmXG4gICAgICAgIChpc1N0cmluZyh2YWx1ZSkgfHwgaXNOdW1iZXIodmFsdWUpIHx8IGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgICApIHtcbiAgICAgICAgbGlzdC5wdXNoKHRvU3RyaW5nKHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGFyciA9IHRydWU7XG4gICAgICAgIC8vIFNlYXJjaCBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5LlxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdmFsdWUubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICBkZWVwR2V0KHZhbHVlW2ldLCBwYXRoLCBpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhdGgubGVuZ3RoKSB7XG4gICAgICAgIC8vIEFuIG9iamVjdC4gUmVjdXJzZSBmdXJ0aGVyLlxuICAgICAgICBkZWVwR2V0KHZhbHVlLCBwYXRoLCBpbmRleCArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAoc2luY2UgcGF0aCB1c2VkIHRvIGJlIGEgc3RyaW5nKVxuICBkZWVwR2V0KG9iaiwgaXNTdHJpbmcocGF0aCkgPyBwYXRoLnNwbGl0KCcuJykgOiBwYXRoLCAwKTtcblxuICByZXR1cm4gYXJyID8gbGlzdCA6IGxpc3RbMF1cbn1cblxuY29uc3QgTWF0Y2hPcHRpb25zID0ge1xuICAvLyBXaGV0aGVyIHRoZSBtYXRjaGVzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IHNldC4gV2hlbiBgdHJ1ZWAsIGVhY2ggcmVjb3JkIGluIHRoZSByZXN1bHRcbiAgLy8gc2V0IHdpbGwgaW5jbHVkZSB0aGUgaW5kaWNlcyBvZiB0aGUgbWF0Y2hlZCBjaGFyYWN0ZXJzLlxuICAvLyBUaGVzZSBjYW4gY29uc2VxdWVudGx5IGJlIHVzZWQgZm9yIGhpZ2hsaWdodGluZyBwdXJwb3Nlcy5cbiAgaW5jbHVkZU1hdGNoZXM6IGZhbHNlLFxuICAvLyBXaGVuIGB0cnVlYCwgdGhlIG1hdGNoaW5nIGZ1bmN0aW9uIHdpbGwgY29udGludWUgdG8gdGhlIGVuZCBvZiBhIHNlYXJjaCBwYXR0ZXJuIGV2ZW4gaWZcbiAgLy8gYSBwZXJmZWN0IG1hdGNoIGhhcyBhbHJlYWR5IGJlZW4gbG9jYXRlZCBpbiB0aGUgc3RyaW5nLlxuICBmaW5kQWxsTWF0Y2hlczogZmFsc2UsXG4gIC8vIE1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBtdXN0IGJlIG1hdGNoZWQgYmVmb3JlIGEgcmVzdWx0IGlzIGNvbnNpZGVyZWQgYSBtYXRjaFxuICBtaW5NYXRjaENoYXJMZW5ndGg6IDFcbn07XG5cbmNvbnN0IEJhc2ljT3B0aW9ucyA9IHtcbiAgLy8gV2hlbiBgdHJ1ZWAsIHRoZSBhbGdvcml0aG0gY29udGludWVzIHNlYXJjaGluZyB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBldmVuIGlmIGEgcGVyZmVjdFxuICAvLyBtYXRjaCBpcyBmb3VuZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc2FtZSBpbnB1dC5cbiAgaXNDYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgLy8gV2hlbiB0cnVlLCB0aGUgbWF0Y2hpbmcgZnVuY3Rpb24gd2lsbCBjb250aW51ZSB0byB0aGUgZW5kIG9mIGEgc2VhcmNoIHBhdHRlcm4gZXZlbiBpZlxuICBpbmNsdWRlU2NvcmU6IGZhbHNlLFxuICAvLyBMaXN0IG9mIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIHNlYXJjaGVkLiBUaGlzIGFsc28gc3VwcG9ydHMgbmVzdGVkIHByb3BlcnRpZXMuXG4gIGtleXM6IFtdLFxuICAvLyBXaGV0aGVyIHRvIHNvcnQgdGhlIHJlc3VsdCBsaXN0LCBieSBzY29yZVxuICBzaG91bGRTb3J0OiB0cnVlLFxuICAvLyBEZWZhdWx0IHNvcnQgZnVuY3Rpb246IHNvcnQgYnkgYXNjZW5kaW5nIHNjb3JlLCBhc2NlbmRpbmcgaW5kZXhcbiAgc29ydEZuOiAoYSwgYikgPT5cbiAgICBhLnNjb3JlID09PSBiLnNjb3JlID8gKGEuaWR4IDwgYi5pZHggPyAtMSA6IDEpIDogYS5zY29yZSA8IGIuc2NvcmUgPyAtMSA6IDFcbn07XG5cbmNvbnN0IEZ1enp5T3B0aW9ucyA9IHtcbiAgLy8gQXBwcm94aW1hdGVseSB3aGVyZSBpbiB0aGUgdGV4dCBpcyB0aGUgcGF0dGVybiBleHBlY3RlZCB0byBiZSBmb3VuZD9cbiAgbG9jYXRpb246IDAsXG4gIC8vIEF0IHdoYXQgcG9pbnQgZG9lcyB0aGUgbWF0Y2ggYWxnb3JpdGhtIGdpdmUgdXAuIEEgdGhyZXNob2xkIG9mICcwLjAnIHJlcXVpcmVzIGEgcGVyZmVjdCBtYXRjaFxuICAvLyAob2YgYm90aCBsZXR0ZXJzIGFuZCBsb2NhdGlvbiksIGEgdGhyZXNob2xkIG9mICcxLjAnIHdvdWxkIG1hdGNoIGFueXRoaW5nLlxuICB0aHJlc2hvbGQ6IDAuNixcbiAgLy8gRGV0ZXJtaW5lcyBob3cgY2xvc2UgdGhlIG1hdGNoIG11c3QgYmUgdG8gdGhlIGZ1enp5IGxvY2F0aW9uIChzcGVjaWZpZWQgYWJvdmUpLlxuICAvLyBBbiBleGFjdCBsZXR0ZXIgbWF0Y2ggd2hpY2ggaXMgJ2Rpc3RhbmNlJyBjaGFyYWN0ZXJzIGF3YXkgZnJvbSB0aGUgZnV6enkgbG9jYXRpb25cbiAgLy8gd291bGQgc2NvcmUgYXMgYSBjb21wbGV0ZSBtaXNtYXRjaC4gQSBkaXN0YW5jZSBvZiAnMCcgcmVxdWlyZXMgdGhlIG1hdGNoIGJlIGF0XG4gIC8vIHRoZSBleGFjdCBsb2NhdGlvbiBzcGVjaWZpZWQsIGEgdGhyZXNob2xkIG9mICcxMDAwJyB3b3VsZCByZXF1aXJlIGEgcGVyZmVjdCBtYXRjaFxuICAvLyB0byBiZSB3aXRoaW4gODAwIGNoYXJhY3RlcnMgb2YgdGhlIGZ1enp5IGxvY2F0aW9uIHRvIGJlIGZvdW5kIHVzaW5nIGEgMC44IHRocmVzaG9sZC5cbiAgZGlzdGFuY2U6IDEwMFxufTtcblxuY29uc3QgQWR2YW5jZWRPcHRpb25zID0ge1xuICAvLyBXaGVuIGB0cnVlYCwgaXQgZW5hYmxlcyB0aGUgdXNlIG9mIHVuaXgtbGlrZSBzZWFyY2ggY29tbWFuZHNcbiAgdXNlRXh0ZW5kZWRTZWFyY2g6IGZhbHNlLFxuICAvLyBUaGUgZ2V0IGZ1bmN0aW9uIHRvIHVzZSB3aGVuIGZldGNoaW5nIGFuIG9iamVjdCdzIHByb3BlcnRpZXMuXG4gIC8vIFRoZSBkZWZhdWx0IHdpbGwgc2VhcmNoIG5lc3RlZCBwYXRocyAqaWUgZm9vLmJhci5iYXoqXG4gIGdldEZuOiBnZXQsXG4gIC8vIFdoZW4gYHRydWVgLCBzZWFyY2ggd2lsbCBpZ25vcmUgYGxvY2F0aW9uYCBhbmQgYGRpc3RhbmNlYCwgc28gaXQgd29uJ3QgbWF0dGVyXG4gIC8vIHdoZXJlIGluIHRoZSBzdHJpbmcgdGhlIHBhdHRlcm4gYXBwZWFycy5cbiAgLy8gTW9yZSBpbmZvOiBodHRwczovL2Z1c2Vqcy5pby9jb25jZXB0cy9zY29yaW5nLXRoZW9yeS5odG1sI2Z1enppbmVzcy1zY29yZVxuICBpZ25vcmVMb2NhdGlvbjogZmFsc2UsXG4gIC8vIFdoZW4gYHRydWVgLCB0aGUgY2FsY3VsYXRpb24gZm9yIHRoZSByZWxldmFuY2Ugc2NvcmUgKHVzZWQgZm9yIHNvcnRpbmcpIHdpbGxcbiAgLy8gaWdub3JlIHRoZSBmaWVsZC1sZW5ndGggbm9ybS5cbiAgLy8gTW9yZSBpbmZvOiBodHRwczovL2Z1c2Vqcy5pby9jb25jZXB0cy9zY29yaW5nLXRoZW9yeS5odG1sI2ZpZWxkLWxlbmd0aC1ub3JtXG4gIGlnbm9yZUZpZWxkTm9ybTogZmFsc2UsXG4gIC8vIFRoZSB3ZWlnaHQgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIGZpZWxkIGxlbmd0aCBub3JtIGVmZmVjdHMgc2NvcmluZy5cbiAgZmllbGROb3JtV2VpZ2h0OiAxXG59O1xuXG52YXIgQ29uZmlnID0ge1xuICAuLi5CYXNpY09wdGlvbnMsXG4gIC4uLk1hdGNoT3B0aW9ucyxcbiAgLi4uRnV6enlPcHRpb25zLFxuICAuLi5BZHZhbmNlZE9wdGlvbnNcbn07XG5cbmNvbnN0IFNQQUNFID0gL1teIF0rL2c7XG5cbi8vIEZpZWxkLWxlbmd0aCBub3JtOiB0aGUgc2hvcnRlciB0aGUgZmllbGQsIHRoZSBoaWdoZXIgdGhlIHdlaWdodC5cbi8vIFNldCB0byAzIGRlY2ltYWxzIHRvIHJlZHVjZSBpbmRleCBzaXplLlxuZnVuY3Rpb24gbm9ybSh3ZWlnaHQgPSAxLCBtYW50aXNzYSA9IDMpIHtcbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG0gPSBNYXRoLnBvdygxMCwgbWFudGlzc2EpO1xuXG4gIHJldHVybiB7XG4gICAgZ2V0KHZhbHVlKSB7XG4gICAgICBjb25zdCBudW1Ub2tlbnMgPSB2YWx1ZS5tYXRjaChTUEFDRSkubGVuZ3RoO1xuXG4gICAgICBpZiAoY2FjaGUuaGFzKG51bVRva2VucykpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmdldChudW1Ub2tlbnMpXG4gICAgICB9XG5cbiAgICAgIC8vIERlZmF1bHQgZnVuY3Rpb24gaXMgMS9zcXJ0KHgpLCB3ZWlnaHQgbWFrZXMgdGhhdCB2YXJpYWJsZVxuICAgICAgY29uc3Qgbm9ybSA9IDEgLyBNYXRoLnBvdyhudW1Ub2tlbnMsIDAuNSAqIHdlaWdodCk7XG5cbiAgICAgIC8vIEluIHBsYWNlIG9mIGB0b0ZpeGVkKG1hbnRpc3NhKWAsIGZvciBmYXN0ZXIgY29tcHV0YXRpb25cbiAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KE1hdGgucm91bmQobm9ybSAqIG0pIC8gbSk7XG5cbiAgICAgIGNhY2hlLnNldChudW1Ub2tlbnMsIG4pO1xuXG4gICAgICByZXR1cm4gblxuICAgIH0sXG4gICAgY2xlYXIoKSB7XG4gICAgICBjYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBGdXNlSW5kZXgge1xuICBjb25zdHJ1Y3Rvcih7XG4gICAgZ2V0Rm4gPSBDb25maWcuZ2V0Rm4sXG4gICAgZmllbGROb3JtV2VpZ2h0ID0gQ29uZmlnLmZpZWxkTm9ybVdlaWdodFxuICB9ID0ge30pIHtcbiAgICB0aGlzLm5vcm0gPSBub3JtKGZpZWxkTm9ybVdlaWdodCwgMyk7XG4gICAgdGhpcy5nZXRGbiA9IGdldEZuO1xuICAgIHRoaXMuaXNDcmVhdGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldEluZGV4UmVjb3JkcygpO1xuICB9XG4gIHNldFNvdXJjZXMoZG9jcyA9IFtdKSB7XG4gICAgdGhpcy5kb2NzID0gZG9jcztcbiAgfVxuICBzZXRJbmRleFJlY29yZHMocmVjb3JkcyA9IFtdKSB7XG4gICAgdGhpcy5yZWNvcmRzID0gcmVjb3JkcztcbiAgfVxuICBzZXRLZXlzKGtleXMgPSBbXSkge1xuICAgIHRoaXMua2V5cyA9IGtleXM7XG4gICAgdGhpcy5fa2V5c01hcCA9IHt9O1xuICAgIGtleXMuZm9yRWFjaCgoa2V5LCBpZHgpID0+IHtcbiAgICAgIHRoaXMuX2tleXNNYXBba2V5LmlkXSA9IGlkeDtcbiAgICB9KTtcbiAgfVxuICBjcmVhdGUoKSB7XG4gICAgaWYgKHRoaXMuaXNDcmVhdGVkIHx8ICF0aGlzLmRvY3MubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmlzQ3JlYXRlZCA9IHRydWU7XG5cbiAgICAvLyBMaXN0IGlzIEFycmF5PFN0cmluZz5cbiAgICBpZiAoaXNTdHJpbmcodGhpcy5kb2NzWzBdKSkge1xuICAgICAgdGhpcy5kb2NzLmZvckVhY2goKGRvYywgZG9jSW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5fYWRkU3RyaW5nKGRvYywgZG9jSW5kZXgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3QgaXMgQXJyYXk8T2JqZWN0PlxuICAgICAgdGhpcy5kb2NzLmZvckVhY2goKGRvYywgZG9jSW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5fYWRkT2JqZWN0KGRvYywgZG9jSW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5ub3JtLmNsZWFyKCk7XG4gIH1cbiAgLy8gQWRkcyBhIGRvYyB0byB0aGUgZW5kIG9mIHRoZSBpbmRleFxuICBhZGQoZG9jKSB7XG4gICAgY29uc3QgaWR4ID0gdGhpcy5zaXplKCk7XG5cbiAgICBpZiAoaXNTdHJpbmcoZG9jKSkge1xuICAgICAgdGhpcy5fYWRkU3RyaW5nKGRvYywgaWR4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYWRkT2JqZWN0KGRvYywgaWR4KTtcbiAgICB9XG4gIH1cbiAgLy8gUmVtb3ZlcyB0aGUgZG9jIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggb2YgdGhlIGluZGV4XG4gIHJlbW92ZUF0KGlkeCkge1xuICAgIHRoaXMucmVjb3Jkcy5zcGxpY2UoaWR4LCAxKTtcblxuICAgIC8vIENoYW5nZSByZWYgaW5kZXggb2YgZXZlcnkgc3Vic3F1ZW50IGRvY1xuICAgIGZvciAobGV0IGkgPSBpZHgsIGxlbiA9IHRoaXMuc2l6ZSgpOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgIHRoaXMucmVjb3Jkc1tpXS5pIC09IDE7XG4gICAgfVxuICB9XG4gIGdldFZhbHVlRm9ySXRlbUF0S2V5SWQoaXRlbSwga2V5SWQpIHtcbiAgICByZXR1cm4gaXRlbVt0aGlzLl9rZXlzTWFwW2tleUlkXV1cbiAgfVxuICBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLnJlY29yZHMubGVuZ3RoXG4gIH1cbiAgX2FkZFN0cmluZyhkb2MsIGRvY0luZGV4KSB7XG4gICAgaWYgKCFpc0RlZmluZWQoZG9jKSB8fCBpc0JsYW5rKGRvYykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGxldCByZWNvcmQgPSB7XG4gICAgICB2OiBkb2MsXG4gICAgICBpOiBkb2NJbmRleCxcbiAgICAgIG46IHRoaXMubm9ybS5nZXQoZG9jKVxuICAgIH07XG5cbiAgICB0aGlzLnJlY29yZHMucHVzaChyZWNvcmQpO1xuICB9XG4gIF9hZGRPYmplY3QoZG9jLCBkb2NJbmRleCkge1xuICAgIGxldCByZWNvcmQgPSB7IGk6IGRvY0luZGV4LCAkOiB7fSB9O1xuXG4gICAgLy8gSXRlcmF0ZSBvdmVyIGV2ZXJ5IGtleSAoaS5lLCBwYXRoKSwgYW5kIGZldGNoIHRoZSB2YWx1ZSBhdCB0aGF0IGtleVxuICAgIHRoaXMua2V5cy5mb3JFYWNoKChrZXksIGtleUluZGV4KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBrZXkuZ2V0Rm4gPyBrZXkuZ2V0Rm4oZG9jKSA6IHRoaXMuZ2V0Rm4oZG9jLCBrZXkucGF0aCk7XG5cbiAgICAgIGlmICghaXNEZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGxldCBzdWJSZWNvcmRzID0gW107XG4gICAgICAgIGNvbnN0IHN0YWNrID0gW3sgbmVzdGVkQXJySW5kZXg6IC0xLCB2YWx1ZSB9XTtcblxuICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgeyBuZXN0ZWRBcnJJbmRleCwgdmFsdWUgfSA9IHN0YWNrLnBvcCgpO1xuXG4gICAgICAgICAgaWYgKCFpc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkgJiYgIWlzQmxhbmsodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3ViUmVjb3JkID0ge1xuICAgICAgICAgICAgICB2OiB2YWx1ZSxcbiAgICAgICAgICAgICAgaTogbmVzdGVkQXJySW5kZXgsXG4gICAgICAgICAgICAgIG46IHRoaXMubm9ybS5nZXQodmFsdWUpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzdWJSZWNvcmRzLnB1c2goc3ViUmVjb3JkKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtLCBrKSA9PiB7XG4gICAgICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgIG5lc3RlZEFyckluZGV4OiBrLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIDtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmQuJFtrZXlJbmRleF0gPSBzdWJSZWNvcmRzO1xuICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyh2YWx1ZSkgJiYgIWlzQmxhbmsodmFsdWUpKSB7XG4gICAgICAgIGxldCBzdWJSZWNvcmQgPSB7XG4gICAgICAgICAgdjogdmFsdWUsXG4gICAgICAgICAgbjogdGhpcy5ub3JtLmdldCh2YWx1ZSlcbiAgICAgICAgfTtcblxuICAgICAgICByZWNvcmQuJFtrZXlJbmRleF0gPSBzdWJSZWNvcmQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlY29yZHMucHVzaChyZWNvcmQpO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5czogdGhpcy5rZXlzLFxuICAgICAgcmVjb3JkczogdGhpcy5yZWNvcmRzXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUluZGV4KFxuICBrZXlzLFxuICBkb2NzLFxuICB7IGdldEZuID0gQ29uZmlnLmdldEZuLCBmaWVsZE5vcm1XZWlnaHQgPSBDb25maWcuZmllbGROb3JtV2VpZ2h0IH0gPSB7fVxuKSB7XG4gIGNvbnN0IG15SW5kZXggPSBuZXcgRnVzZUluZGV4KHsgZ2V0Rm4sIGZpZWxkTm9ybVdlaWdodCB9KTtcbiAgbXlJbmRleC5zZXRLZXlzKGtleXMubWFwKGNyZWF0ZUtleSkpO1xuICBteUluZGV4LnNldFNvdXJjZXMoZG9jcyk7XG4gIG15SW5kZXguY3JlYXRlKCk7XG4gIHJldHVybiBteUluZGV4XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW5kZXgoXG4gIGRhdGEsXG4gIHsgZ2V0Rm4gPSBDb25maWcuZ2V0Rm4sIGZpZWxkTm9ybVdlaWdodCA9IENvbmZpZy5maWVsZE5vcm1XZWlnaHQgfSA9IHt9XG4pIHtcbiAgY29uc3QgeyBrZXlzLCByZWNvcmRzIH0gPSBkYXRhO1xuICBjb25zdCBteUluZGV4ID0gbmV3IEZ1c2VJbmRleCh7IGdldEZuLCBmaWVsZE5vcm1XZWlnaHQgfSk7XG4gIG15SW5kZXguc2V0S2V5cyhrZXlzKTtcbiAgbXlJbmRleC5zZXRJbmRleFJlY29yZHMocmVjb3Jkcyk7XG4gIHJldHVybiBteUluZGV4XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTY29yZSQxKFxuICBwYXR0ZXJuLFxuICB7XG4gICAgZXJyb3JzID0gMCxcbiAgICBjdXJyZW50TG9jYXRpb24gPSAwLFxuICAgIGV4cGVjdGVkTG9jYXRpb24gPSAwLFxuICAgIGRpc3RhbmNlID0gQ29uZmlnLmRpc3RhbmNlLFxuICAgIGlnbm9yZUxvY2F0aW9uID0gQ29uZmlnLmlnbm9yZUxvY2F0aW9uXG4gIH0gPSB7fVxuKSB7XG4gIGNvbnN0IGFjY3VyYWN5ID0gZXJyb3JzIC8gcGF0dGVybi5sZW5ndGg7XG5cbiAgaWYgKGlnbm9yZUxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGFjY3VyYWN5XG4gIH1cblxuICBjb25zdCBwcm94aW1pdHkgPSBNYXRoLmFicyhleHBlY3RlZExvY2F0aW9uIC0gY3VycmVudExvY2F0aW9uKTtcblxuICBpZiAoIWRpc3RhbmNlKSB7XG4gICAgLy8gRG9kZ2UgZGl2aWRlIGJ5IHplcm8gZXJyb3IuXG4gICAgcmV0dXJuIHByb3hpbWl0eSA/IDEuMCA6IGFjY3VyYWN5XG4gIH1cblxuICByZXR1cm4gYWNjdXJhY3kgKyBwcm94aW1pdHkgLyBkaXN0YW5jZVxufVxuXG5mdW5jdGlvbiBjb252ZXJ0TWFza1RvSW5kaWNlcyhcbiAgbWF0Y2htYXNrID0gW10sXG4gIG1pbk1hdGNoQ2hhckxlbmd0aCA9IENvbmZpZy5taW5NYXRjaENoYXJMZW5ndGhcbikge1xuICBsZXQgaW5kaWNlcyA9IFtdO1xuICBsZXQgc3RhcnQgPSAtMTtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgaSA9IDA7XG5cbiAgZm9yIChsZXQgbGVuID0gbWF0Y2htYXNrLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgbGV0IG1hdGNoID0gbWF0Y2htYXNrW2ldO1xuICAgIGlmIChtYXRjaCAmJiBzdGFydCA9PT0gLTEpIHtcbiAgICAgIHN0YXJ0ID0gaTtcbiAgICB9IGVsc2UgaWYgKCFtYXRjaCAmJiBzdGFydCAhPT0gLTEpIHtcbiAgICAgIGVuZCA9IGkgLSAxO1xuICAgICAgaWYgKGVuZCAtIHN0YXJ0ICsgMSA+PSBtaW5NYXRjaENoYXJMZW5ndGgpIHtcbiAgICAgICAgaW5kaWNlcy5wdXNoKFtzdGFydCwgZW5kXSk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIC8vIChpLTEgLSBzdGFydCkgKyAxID0+IGkgLSBzdGFydFxuICBpZiAobWF0Y2htYXNrW2kgLSAxXSAmJiBpIC0gc3RhcnQgPj0gbWluTWF0Y2hDaGFyTGVuZ3RoKSB7XG4gICAgaW5kaWNlcy5wdXNoKFtzdGFydCwgaSAtIDFdKTtcbiAgfVxuXG4gIHJldHVybiBpbmRpY2VzXG59XG5cbi8vIE1hY2hpbmUgd29yZCBzaXplXG5jb25zdCBNQVhfQklUUyA9IDMyO1xuXG5mdW5jdGlvbiBzZWFyY2goXG4gIHRleHQsXG4gIHBhdHRlcm4sXG4gIHBhdHRlcm5BbHBoYWJldCxcbiAge1xuICAgIGxvY2F0aW9uID0gQ29uZmlnLmxvY2F0aW9uLFxuICAgIGRpc3RhbmNlID0gQ29uZmlnLmRpc3RhbmNlLFxuICAgIHRocmVzaG9sZCA9IENvbmZpZy50aHJlc2hvbGQsXG4gICAgZmluZEFsbE1hdGNoZXMgPSBDb25maWcuZmluZEFsbE1hdGNoZXMsXG4gICAgbWluTWF0Y2hDaGFyTGVuZ3RoID0gQ29uZmlnLm1pbk1hdGNoQ2hhckxlbmd0aCxcbiAgICBpbmNsdWRlTWF0Y2hlcyA9IENvbmZpZy5pbmNsdWRlTWF0Y2hlcyxcbiAgICBpZ25vcmVMb2NhdGlvbiA9IENvbmZpZy5pZ25vcmVMb2NhdGlvblxuICB9ID0ge31cbikge1xuICBpZiAocGF0dGVybi5sZW5ndGggPiBNQVhfQklUUykge1xuICAgIHRocm93IG5ldyBFcnJvcihQQVRURVJOX0xFTkdUSF9UT09fTEFSR0UoTUFYX0JJVFMpKVxuICB9XG5cbiAgY29uc3QgcGF0dGVybkxlbiA9IHBhdHRlcm4ubGVuZ3RoO1xuICAvLyBTZXQgc3RhcnRpbmcgbG9jYXRpb24gYXQgYmVnaW5uaW5nIHRleHQgYW5kIGluaXRpYWxpemUgdGhlIGFscGhhYmV0LlxuICBjb25zdCB0ZXh0TGVuID0gdGV4dC5sZW5ndGg7XG4gIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVuIGxvY2F0aW9uID4gdGV4dC5sZW5ndGhcbiAgY29uc3QgZXhwZWN0ZWRMb2NhdGlvbiA9IE1hdGgubWF4KDAsIE1hdGgubWluKGxvY2F0aW9uLCB0ZXh0TGVuKSk7XG4gIC8vIEhpZ2hlc3Qgc2NvcmUgYmV5b25kIHdoaWNoIHdlIGdpdmUgdXAuXG4gIGxldCBjdXJyZW50VGhyZXNob2xkID0gdGhyZXNob2xkO1xuICAvLyBJcyB0aGVyZSBhIG5lYXJieSBleGFjdCBtYXRjaD8gKHNwZWVkdXApXG4gIGxldCBiZXN0TG9jYXRpb24gPSBleHBlY3RlZExvY2F0aW9uO1xuXG4gIC8vIFBlcmZvcm1hbmNlOiBvbmx5IGNvbXB1dGVyIG1hdGNoZXMgd2hlbiB0aGUgbWluTWF0Y2hDaGFyTGVuZ3RoID4gMVxuICAvLyBPUiBpZiBgaW5jbHVkZU1hdGNoZXNgIGlzIHRydWUuXG4gIGNvbnN0IGNvbXB1dGVNYXRjaGVzID0gbWluTWF0Y2hDaGFyTGVuZ3RoID4gMSB8fCBpbmNsdWRlTWF0Y2hlcztcbiAgLy8gQSBtYXNrIG9mIHRoZSBtYXRjaGVzLCB1c2VkIGZvciBidWlsZGluZyB0aGUgaW5kaWNlc1xuICBjb25zdCBtYXRjaE1hc2sgPSBjb21wdXRlTWF0Y2hlcyA/IEFycmF5KHRleHRMZW4pIDogW107XG5cbiAgbGV0IGluZGV4O1xuXG4gIC8vIEdldCBhbGwgZXhhY3QgbWF0Y2hlcywgaGVyZSBmb3Igc3BlZWQgdXBcbiAgd2hpbGUgKChpbmRleCA9IHRleHQuaW5kZXhPZihwYXR0ZXJuLCBiZXN0TG9jYXRpb24pKSA+IC0xKSB7XG4gICAgbGV0IHNjb3JlID0gY29tcHV0ZVNjb3JlJDEocGF0dGVybiwge1xuICAgICAgY3VycmVudExvY2F0aW9uOiBpbmRleCxcbiAgICAgIGV4cGVjdGVkTG9jYXRpb24sXG4gICAgICBkaXN0YW5jZSxcbiAgICAgIGlnbm9yZUxvY2F0aW9uXG4gICAgfSk7XG5cbiAgICBjdXJyZW50VGhyZXNob2xkID0gTWF0aC5taW4oc2NvcmUsIGN1cnJlbnRUaHJlc2hvbGQpO1xuICAgIGJlc3RMb2NhdGlvbiA9IGluZGV4ICsgcGF0dGVybkxlbjtcblxuICAgIGlmIChjb21wdXRlTWF0Y2hlcykge1xuICAgICAgbGV0IGkgPSAwO1xuICAgICAgd2hpbGUgKGkgPCBwYXR0ZXJuTGVuKSB7XG4gICAgICAgIG1hdGNoTWFza1tpbmRleCArIGldID0gMTtcbiAgICAgICAgaSArPSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IHRoZSBiZXN0IGxvY2F0aW9uXG4gIGJlc3RMb2NhdGlvbiA9IC0xO1xuXG4gIGxldCBsYXN0Qml0QXJyID0gW107XG4gIGxldCBmaW5hbFNjb3JlID0gMTtcbiAgbGV0IGJpbk1heCA9IHBhdHRlcm5MZW4gKyB0ZXh0TGVuO1xuXG4gIGNvbnN0IG1hc2sgPSAxIDw8IChwYXR0ZXJuTGVuIC0gMSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXR0ZXJuTGVuOyBpICs9IDEpIHtcbiAgICAvLyBTY2FuIGZvciB0aGUgYmVzdCBtYXRjaDsgZWFjaCBpdGVyYXRpb24gYWxsb3dzIGZvciBvbmUgbW9yZSBlcnJvci5cbiAgICAvLyBSdW4gYSBiaW5hcnkgc2VhcmNoIHRvIGRldGVybWluZSBob3cgZmFyIGZyb20gdGhlIG1hdGNoIGxvY2F0aW9uIHdlIGNhbiBzdHJheVxuICAgIC8vIGF0IHRoaXMgZXJyb3IgbGV2ZWwuXG4gICAgbGV0IGJpbk1pbiA9IDA7XG4gICAgbGV0IGJpbk1pZCA9IGJpbk1heDtcblxuICAgIHdoaWxlIChiaW5NaW4gPCBiaW5NaWQpIHtcbiAgICAgIGNvbnN0IHNjb3JlID0gY29tcHV0ZVNjb3JlJDEocGF0dGVybiwge1xuICAgICAgICBlcnJvcnM6IGksXG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbjogZXhwZWN0ZWRMb2NhdGlvbiArIGJpbk1pZCxcbiAgICAgICAgZXhwZWN0ZWRMb2NhdGlvbixcbiAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgIGlnbm9yZUxvY2F0aW9uXG4gICAgICB9KTtcblxuICAgICAgaWYgKHNjb3JlIDw9IGN1cnJlbnRUaHJlc2hvbGQpIHtcbiAgICAgICAgYmluTWluID0gYmluTWlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmluTWF4ID0gYmluTWlkO1xuICAgICAgfVxuXG4gICAgICBiaW5NaWQgPSBNYXRoLmZsb29yKChiaW5NYXggLSBiaW5NaW4pIC8gMiArIGJpbk1pbik7XG4gICAgfVxuXG4gICAgLy8gVXNlIHRoZSByZXN1bHQgZnJvbSB0aGlzIGl0ZXJhdGlvbiBhcyB0aGUgbWF4aW11bSBmb3IgdGhlIG5leHQuXG4gICAgYmluTWF4ID0gYmluTWlkO1xuXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMSwgZXhwZWN0ZWRMb2NhdGlvbiAtIGJpbk1pZCArIDEpO1xuICAgIGxldCBmaW5pc2ggPSBmaW5kQWxsTWF0Y2hlc1xuICAgICAgPyB0ZXh0TGVuXG4gICAgICA6IE1hdGgubWluKGV4cGVjdGVkTG9jYXRpb24gKyBiaW5NaWQsIHRleHRMZW4pICsgcGF0dGVybkxlbjtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGJpdCBhcnJheVxuICAgIGxldCBiaXRBcnIgPSBBcnJheShmaW5pc2ggKyAyKTtcblxuICAgIGJpdEFycltmaW5pc2ggKyAxXSA9ICgxIDw8IGkpIC0gMTtcblxuICAgIGZvciAobGV0IGogPSBmaW5pc2g7IGogPj0gc3RhcnQ7IGogLT0gMSkge1xuICAgICAgbGV0IGN1cnJlbnRMb2NhdGlvbiA9IGogLSAxO1xuICAgICAgbGV0IGNoYXJNYXRjaCA9IHBhdHRlcm5BbHBoYWJldFt0ZXh0LmNoYXJBdChjdXJyZW50TG9jYXRpb24pXTtcblxuICAgICAgaWYgKGNvbXB1dGVNYXRjaGVzKSB7XG4gICAgICAgIC8vIFNwZWVkIHVwOiBxdWljayBib29sIHRvIGludCBjb252ZXJzaW9uIChpLmUsIGBjaGFyTWF0Y2ggPyAxIDogMGApXG4gICAgICAgIG1hdGNoTWFza1tjdXJyZW50TG9jYXRpb25dID0gKyEhY2hhck1hdGNoO1xuICAgICAgfVxuXG4gICAgICAvLyBGaXJzdCBwYXNzOiBleGFjdCBtYXRjaFxuICAgICAgYml0QXJyW2pdID0gKChiaXRBcnJbaiArIDFdIDw8IDEpIHwgMSkgJiBjaGFyTWF0Y2g7XG5cbiAgICAgIC8vIFN1YnNlcXVlbnQgcGFzc2VzOiBmdXp6eSBtYXRjaFxuICAgICAgaWYgKGkpIHtcbiAgICAgICAgYml0QXJyW2pdIHw9XG4gICAgICAgICAgKChsYXN0Qml0QXJyW2ogKyAxXSB8IGxhc3RCaXRBcnJbal0pIDw8IDEpIHwgMSB8IGxhc3RCaXRBcnJbaiArIDFdO1xuICAgICAgfVxuXG4gICAgICBpZiAoYml0QXJyW2pdICYgbWFzaykge1xuICAgICAgICBmaW5hbFNjb3JlID0gY29tcHV0ZVNjb3JlJDEocGF0dGVybiwge1xuICAgICAgICAgIGVycm9yczogaSxcbiAgICAgICAgICBjdXJyZW50TG9jYXRpb24sXG4gICAgICAgICAgZXhwZWN0ZWRMb2NhdGlvbixcbiAgICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgICBpZ25vcmVMb2NhdGlvblxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUaGlzIG1hdGNoIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBiZXR0ZXIgdGhhbiBhbnkgZXhpc3RpbmcgbWF0Y2guXG4gICAgICAgIC8vIEJ1dCBjaGVjayBhbnl3YXkuXG4gICAgICAgIGlmIChmaW5hbFNjb3JlIDw9IGN1cnJlbnRUaHJlc2hvbGQpIHtcbiAgICAgICAgICAvLyBJbmRlZWQgaXQgaXNcbiAgICAgICAgICBjdXJyZW50VGhyZXNob2xkID0gZmluYWxTY29yZTtcbiAgICAgICAgICBiZXN0TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb247XG5cbiAgICAgICAgICAvLyBBbHJlYWR5IHBhc3NlZCBgbG9jYCwgZG93bmhpbGwgZnJvbSBoZXJlIG9uIGluLlxuICAgICAgICAgIGlmIChiZXN0TG9jYXRpb24gPD0gZXhwZWN0ZWRMb2NhdGlvbikge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBXaGVuIHBhc3NpbmcgYGJlc3RMb2NhdGlvbmAsIGRvbid0IGV4Y2VlZCBvdXIgY3VycmVudCBkaXN0YW5jZSBmcm9tIGBleHBlY3RlZExvY2F0aW9uYC5cbiAgICAgICAgICBzdGFydCA9IE1hdGgubWF4KDEsIDIgKiBleHBlY3RlZExvY2F0aW9uIC0gYmVzdExvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5vIGhvcGUgZm9yIGEgKGJldHRlcikgbWF0Y2ggYXQgZ3JlYXRlciBlcnJvciBsZXZlbHMuXG4gICAgY29uc3Qgc2NvcmUgPSBjb21wdXRlU2NvcmUkMShwYXR0ZXJuLCB7XG4gICAgICBlcnJvcnM6IGkgKyAxLFxuICAgICAgY3VycmVudExvY2F0aW9uOiBleHBlY3RlZExvY2F0aW9uLFxuICAgICAgZXhwZWN0ZWRMb2NhdGlvbixcbiAgICAgIGRpc3RhbmNlLFxuICAgICAgaWdub3JlTG9jYXRpb25cbiAgICB9KTtcblxuICAgIGlmIChzY29yZSA+IGN1cnJlbnRUaHJlc2hvbGQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgbGFzdEJpdEFyciA9IGJpdEFycjtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBpc01hdGNoOiBiZXN0TG9jYXRpb24gPj0gMCxcbiAgICAvLyBDb3VudCBleGFjdCBtYXRjaGVzICh0aG9zZSB3aXRoIGEgc2NvcmUgb2YgMCkgdG8gYmUgXCJhbG1vc3RcIiBleGFjdFxuICAgIHNjb3JlOiBNYXRoLm1heCgwLjAwMSwgZmluYWxTY29yZSlcbiAgfTtcblxuICBpZiAoY29tcHV0ZU1hdGNoZXMpIHtcbiAgICBjb25zdCBpbmRpY2VzID0gY29udmVydE1hc2tUb0luZGljZXMobWF0Y2hNYXNrLCBtaW5NYXRjaENoYXJMZW5ndGgpO1xuICAgIGlmICghaW5kaWNlcy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdC5pc01hdGNoID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChpbmNsdWRlTWF0Y2hlcykge1xuICAgICAgcmVzdWx0LmluZGljZXMgPSBpbmRpY2VzO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gY3JlYXRlUGF0dGVybkFscGhhYmV0KHBhdHRlcm4pIHtcbiAgbGV0IG1hc2sgPSB7fTtcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gcGF0dGVybi5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgIGNvbnN0IGNoYXIgPSBwYXR0ZXJuLmNoYXJBdChpKTtcbiAgICBtYXNrW2NoYXJdID0gKG1hc2tbY2hhcl0gfHwgMCkgfCAoMSA8PCAobGVuIC0gaSAtIDEpKTtcbiAgfVxuXG4gIHJldHVybiBtYXNrXG59XG5cbmNsYXNzIEJpdGFwU2VhcmNoIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcGF0dGVybixcbiAgICB7XG4gICAgICBsb2NhdGlvbiA9IENvbmZpZy5sb2NhdGlvbixcbiAgICAgIHRocmVzaG9sZCA9IENvbmZpZy50aHJlc2hvbGQsXG4gICAgICBkaXN0YW5jZSA9IENvbmZpZy5kaXN0YW5jZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzID0gQ29uZmlnLmluY2x1ZGVNYXRjaGVzLFxuICAgICAgZmluZEFsbE1hdGNoZXMgPSBDb25maWcuZmluZEFsbE1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGggPSBDb25maWcubWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgaXNDYXNlU2Vuc2l0aXZlID0gQ29uZmlnLmlzQ2FzZVNlbnNpdGl2ZSxcbiAgICAgIGlnbm9yZUxvY2F0aW9uID0gQ29uZmlnLmlnbm9yZUxvY2F0aW9uXG4gICAgfSA9IHt9XG4gICkge1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkLFxuICAgICAgZGlzdGFuY2UsXG4gICAgICBpbmNsdWRlTWF0Y2hlcyxcbiAgICAgIGZpbmRBbGxNYXRjaGVzLFxuICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaWdub3JlTG9jYXRpb25cbiAgICB9O1xuXG4gICAgdGhpcy5wYXR0ZXJuID0gaXNDYXNlU2Vuc2l0aXZlID8gcGF0dGVybiA6IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAgIHRoaXMuY2h1bmtzID0gW107XG5cbiAgICBpZiAoIXRoaXMucGF0dGVybi5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFkZENodW5rID0gKHBhdHRlcm4sIHN0YXJ0SW5kZXgpID0+IHtcbiAgICAgIHRoaXMuY2h1bmtzLnB1c2goe1xuICAgICAgICBwYXR0ZXJuLFxuICAgICAgICBhbHBoYWJldDogY3JlYXRlUGF0dGVybkFscGhhYmV0KHBhdHRlcm4pLFxuICAgICAgICBzdGFydEluZGV4XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgbGVuID0gdGhpcy5wYXR0ZXJuLmxlbmd0aDtcblxuICAgIGlmIChsZW4gPiBNQVhfQklUUykge1xuICAgICAgbGV0IGkgPSAwO1xuICAgICAgY29uc3QgcmVtYWluZGVyID0gbGVuICUgTUFYX0JJVFM7XG4gICAgICBjb25zdCBlbmQgPSBsZW4gLSByZW1haW5kZXI7XG5cbiAgICAgIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgICAgIGFkZENodW5rKHRoaXMucGF0dGVybi5zdWJzdHIoaSwgTUFYX0JJVFMpLCBpKTtcbiAgICAgICAgaSArPSBNQVhfQklUUztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlbWFpbmRlcikge1xuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gbGVuIC0gTUFYX0JJVFM7XG4gICAgICAgIGFkZENodW5rKHRoaXMucGF0dGVybi5zdWJzdHIoc3RhcnRJbmRleCksIHN0YXJ0SW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhZGRDaHVuayh0aGlzLnBhdHRlcm4sIDApO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaEluKHRleHQpIHtcbiAgICBjb25zdCB7IGlzQ2FzZVNlbnNpdGl2ZSwgaW5jbHVkZU1hdGNoZXMgfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmICghaXNDYXNlU2Vuc2l0aXZlKSB7XG4gICAgICB0ZXh0ID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8vIEV4YWN0IG1hdGNoXG4gICAgaWYgKHRoaXMucGF0dGVybiA9PT0gdGV4dCkge1xuICAgICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgICAgaXNNYXRjaDogdHJ1ZSxcbiAgICAgICAgc2NvcmU6IDBcbiAgICAgIH07XG5cbiAgICAgIGlmIChpbmNsdWRlTWF0Y2hlcykge1xuICAgICAgICByZXN1bHQuaW5kaWNlcyA9IFtbMCwgdGV4dC5sZW5ndGggLSAxXV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHVzZSBCaXRhcCBhbGdvcml0aG1cbiAgICBjb25zdCB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIGRpc3RhbmNlLFxuICAgICAgdGhyZXNob2xkLFxuICAgICAgZmluZEFsbE1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGgsXG4gICAgICBpZ25vcmVMb2NhdGlvblxuICAgIH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICBsZXQgYWxsSW5kaWNlcyA9IFtdO1xuICAgIGxldCB0b3RhbFNjb3JlID0gMDtcbiAgICBsZXQgaGFzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgdGhpcy5jaHVua3MuZm9yRWFjaCgoeyBwYXR0ZXJuLCBhbHBoYWJldCwgc3RhcnRJbmRleCB9KSA9PiB7XG4gICAgICBjb25zdCB7IGlzTWF0Y2gsIHNjb3JlLCBpbmRpY2VzIH0gPSBzZWFyY2godGV4dCwgcGF0dGVybiwgYWxwaGFiZXQsIHtcbiAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uICsgc3RhcnRJbmRleCxcbiAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgIHRocmVzaG9sZCxcbiAgICAgICAgZmluZEFsbE1hdGNoZXMsXG4gICAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aCxcbiAgICAgICAgaW5jbHVkZU1hdGNoZXMsXG4gICAgICAgIGlnbm9yZUxvY2F0aW9uXG4gICAgICB9KTtcblxuICAgICAgaWYgKGlzTWF0Y2gpIHtcbiAgICAgICAgaGFzTWF0Y2hlcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHRvdGFsU2NvcmUgKz0gc2NvcmU7XG5cbiAgICAgIGlmIChpc01hdGNoICYmIGluZGljZXMpIHtcbiAgICAgICAgYWxsSW5kaWNlcyA9IFsuLi5hbGxJbmRpY2VzLCAuLi5pbmRpY2VzXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCByZXN1bHQgPSB7XG4gICAgICBpc01hdGNoOiBoYXNNYXRjaGVzLFxuICAgICAgc2NvcmU6IGhhc01hdGNoZXMgPyB0b3RhbFNjb3JlIC8gdGhpcy5jaHVua3MubGVuZ3RoIDogMVxuICAgIH07XG5cbiAgICBpZiAoaGFzTWF0Y2hlcyAmJiBpbmNsdWRlTWF0Y2hlcykge1xuICAgICAgcmVzdWx0LmluZGljZXMgPSBhbGxJbmRpY2VzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG5jbGFzcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgdGhpcy5wYXR0ZXJuID0gcGF0dGVybjtcbiAgfVxuICBzdGF0aWMgaXNNdWx0aU1hdGNoKHBhdHRlcm4pIHtcbiAgICByZXR1cm4gZ2V0TWF0Y2gocGF0dGVybiwgdGhpcy5tdWx0aVJlZ2V4KVxuICB9XG4gIHN0YXRpYyBpc1NpbmdsZU1hdGNoKHBhdHRlcm4pIHtcbiAgICByZXR1cm4gZ2V0TWF0Y2gocGF0dGVybiwgdGhpcy5zaW5nbGVSZWdleClcbiAgfVxuICBzZWFyY2goLyp0ZXh0Ki8pIHt9XG59XG5cbmZ1bmN0aW9uIGdldE1hdGNoKHBhdHRlcm4sIGV4cCkge1xuICBjb25zdCBtYXRjaGVzID0gcGF0dGVybi5tYXRjaChleHApO1xuICByZXR1cm4gbWF0Y2hlcyA/IG1hdGNoZXNbMV0gOiBudWxsXG59XG5cbi8vIFRva2VuOiAnZmlsZVxuXG5jbGFzcyBFeGFjdE1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IocGF0dGVybikge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2V4YWN0J1xuICB9XG4gIHN0YXRpYyBnZXQgbXVsdGlSZWdleCgpIHtcbiAgICByZXR1cm4gL149XCIoLiopXCIkL1xuICB9XG4gIHN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9ePSguKikkL1xuICB9XG4gIHNlYXJjaCh0ZXh0KSB7XG4gICAgY29uc3QgaXNNYXRjaCA9IHRleHQgPT09IHRoaXMucGF0dGVybjtcblxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXM6IFswLCB0aGlzLnBhdHRlcm4ubGVuZ3RoIC0gMV1cbiAgICB9XG4gIH1cbn1cblxuLy8gVG9rZW46ICFmaXJlXG5cbmNsYXNzIEludmVyc2VFeGFjdE1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IocGF0dGVybikge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2ludmVyc2UtZXhhY3QnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiFcIiguKilcIiQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL14hKC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpbmRleCA9IHRleHQuaW5kZXhPZih0aGlzLnBhdHRlcm4pO1xuICAgIGNvbnN0IGlzTWF0Y2ggPSBpbmRleCA9PT0gLTE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXNNYXRjaCxcbiAgICAgIHNjb3JlOiBpc01hdGNoID8gMCA6IDEsXG4gICAgICBpbmRpY2VzOiBbMCwgdGV4dC5sZW5ndGggLSAxXVxuICAgIH1cbiAgfVxufVxuXG4vLyBUb2tlbjogXmZpbGVcblxuY2xhc3MgUHJlZml4RXhhY3RNYXRjaCBleHRlbmRzIEJhc2VNYXRjaCB7XG4gIGNvbnN0cnVjdG9yKHBhdHRlcm4pIHtcbiAgICBzdXBlcihwYXR0ZXJuKTtcbiAgfVxuICBzdGF0aWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdwcmVmaXgtZXhhY3QnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXlxcXlwiKC4qKVwiJC9cbiAgfVxuICBzdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCkge1xuICAgIHJldHVybiAvXlxcXiguKikkL1xuICB9XG4gIHNlYXJjaCh0ZXh0KSB7XG4gICAgY29uc3QgaXNNYXRjaCA9IHRleHQuc3RhcnRzV2l0aCh0aGlzLnBhdHRlcm4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTWF0Y2gsXG4gICAgICBzY29yZTogaXNNYXRjaCA/IDAgOiAxLFxuICAgICAgaW5kaWNlczogWzAsIHRoaXMucGF0dGVybi5sZW5ndGggLSAxXVxuICAgIH1cbiAgfVxufVxuXG4vLyBUb2tlbjogIV5maXJlXG5cbmNsYXNzIEludmVyc2VQcmVmaXhFeGFjdE1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IocGF0dGVybikge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2ludmVyc2UtcHJlZml4LWV4YWN0J1xuICB9XG4gIHN0YXRpYyBnZXQgbXVsdGlSZWdleCgpIHtcbiAgICByZXR1cm4gL14hXFxeXCIoLiopXCIkL1xuICB9XG4gIHN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eIVxcXiguKikkL1xuICB9XG4gIHNlYXJjaCh0ZXh0KSB7XG4gICAgY29uc3QgaXNNYXRjaCA9ICF0ZXh0LnN0YXJ0c1dpdGgodGhpcy5wYXR0ZXJuKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXM6IFswLCB0ZXh0Lmxlbmd0aCAtIDFdXG4gICAgfVxuICB9XG59XG5cbi8vIFRva2VuOiAuZmlsZSRcblxuY2xhc3MgU3VmZml4RXhhY3RNYXRjaCBleHRlbmRzIEJhc2VNYXRjaCB7XG4gIGNvbnN0cnVjdG9yKHBhdHRlcm4pIHtcbiAgICBzdXBlcihwYXR0ZXJuKTtcbiAgfVxuICBzdGF0aWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdzdWZmaXgtZXhhY3QnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXlwiKC4qKVwiXFwkJC9cbiAgfVxuICBzdGF0aWMgZ2V0IHNpbmdsZVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiguKilcXCQkL1xuICB9XG4gIHNlYXJjaCh0ZXh0KSB7XG4gICAgY29uc3QgaXNNYXRjaCA9IHRleHQuZW5kc1dpdGgodGhpcy5wYXR0ZXJuKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoLFxuICAgICAgc2NvcmU6IGlzTWF0Y2ggPyAwIDogMSxcbiAgICAgIGluZGljZXM6IFt0ZXh0Lmxlbmd0aCAtIHRoaXMucGF0dGVybi5sZW5ndGgsIHRleHQubGVuZ3RoIC0gMV1cbiAgICB9XG4gIH1cbn1cblxuLy8gVG9rZW46ICEuZmlsZSRcblxuY2xhc3MgSW52ZXJzZVN1ZmZpeEV4YWN0TWF0Y2ggZXh0ZW5kcyBCYXNlTWF0Y2gge1xuICBjb25zdHJ1Y3RvcihwYXR0ZXJuKSB7XG4gICAgc3VwZXIocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnaW52ZXJzZS1zdWZmaXgtZXhhY3QnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXiFcIiguKilcIlxcJCQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL14hKC4qKVxcJCQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBjb25zdCBpc01hdGNoID0gIXRleHQuZW5kc1dpdGgodGhpcy5wYXR0ZXJuKTtcbiAgICByZXR1cm4ge1xuICAgICAgaXNNYXRjaCxcbiAgICAgIHNjb3JlOiBpc01hdGNoID8gMCA6IDEsXG4gICAgICBpbmRpY2VzOiBbMCwgdGV4dC5sZW5ndGggLSAxXVxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBGdXp6eU1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcGF0dGVybixcbiAgICB7XG4gICAgICBsb2NhdGlvbiA9IENvbmZpZy5sb2NhdGlvbixcbiAgICAgIHRocmVzaG9sZCA9IENvbmZpZy50aHJlc2hvbGQsXG4gICAgICBkaXN0YW5jZSA9IENvbmZpZy5kaXN0YW5jZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzID0gQ29uZmlnLmluY2x1ZGVNYXRjaGVzLFxuICAgICAgZmluZEFsbE1hdGNoZXMgPSBDb25maWcuZmluZEFsbE1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGggPSBDb25maWcubWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgaXNDYXNlU2Vuc2l0aXZlID0gQ29uZmlnLmlzQ2FzZVNlbnNpdGl2ZSxcbiAgICAgIGlnbm9yZUxvY2F0aW9uID0gQ29uZmlnLmlnbm9yZUxvY2F0aW9uXG4gICAgfSA9IHt9XG4gICkge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICAgIHRoaXMuX2JpdGFwU2VhcmNoID0gbmV3IEJpdGFwU2VhcmNoKHBhdHRlcm4sIHtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkLFxuICAgICAgZGlzdGFuY2UsXG4gICAgICBpbmNsdWRlTWF0Y2hlcyxcbiAgICAgIGZpbmRBbGxNYXRjaGVzLFxuICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaWdub3JlTG9jYXRpb25cbiAgICB9KTtcbiAgfVxuICBzdGF0aWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdmdXp6eSdcbiAgfVxuICBzdGF0aWMgZ2V0IG11bHRpUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eXCIoLiopXCIkL1xuICB9XG4gIHN0YXRpYyBnZXQgc2luZ2xlUmVnZXgoKSB7XG4gICAgcmV0dXJuIC9eKC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICByZXR1cm4gdGhpcy5fYml0YXBTZWFyY2guc2VhcmNoSW4odGV4dClcbiAgfVxufVxuXG4vLyBUb2tlbjogJ2ZpbGVcblxuY2xhc3MgSW5jbHVkZU1hdGNoIGV4dGVuZHMgQmFzZU1hdGNoIHtcbiAgY29uc3RydWN0b3IocGF0dGVybikge1xuICAgIHN1cGVyKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2luY2x1ZGUnXG4gIH1cbiAgc3RhdGljIGdldCBtdWx0aVJlZ2V4KCkge1xuICAgIHJldHVybiAvXidcIiguKilcIiQvXG4gIH1cbiAgc3RhdGljIGdldCBzaW5nbGVSZWdleCgpIHtcbiAgICByZXR1cm4gL14nKC4qKSQvXG4gIH1cbiAgc2VhcmNoKHRleHQpIHtcbiAgICBsZXQgbG9jYXRpb24gPSAwO1xuICAgIGxldCBpbmRleDtcblxuICAgIGNvbnN0IGluZGljZXMgPSBbXTtcbiAgICBjb25zdCBwYXR0ZXJuTGVuID0gdGhpcy5wYXR0ZXJuLmxlbmd0aDtcblxuICAgIC8vIEdldCBhbGwgZXhhY3QgbWF0Y2hlc1xuICAgIHdoaWxlICgoaW5kZXggPSB0ZXh0LmluZGV4T2YodGhpcy5wYXR0ZXJuLCBsb2NhdGlvbikpID4gLTEpIHtcbiAgICAgIGxvY2F0aW9uID0gaW5kZXggKyBwYXR0ZXJuTGVuO1xuICAgICAgaW5kaWNlcy5wdXNoKFtpbmRleCwgbG9jYXRpb24gLSAxXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNNYXRjaCA9ICEhaW5kaWNlcy5sZW5ndGg7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXNNYXRjaCxcbiAgICAgIHNjb3JlOiBpc01hdGNoID8gMCA6IDEsXG4gICAgICBpbmRpY2VzXG4gICAgfVxuICB9XG59XG5cbi8vIFx1Mjc1N09yZGVyIGlzIGltcG9ydGFudC4gRE8gTk9UIENIQU5HRS5cbmNvbnN0IHNlYXJjaGVycyA9IFtcbiAgRXhhY3RNYXRjaCxcbiAgSW5jbHVkZU1hdGNoLFxuICBQcmVmaXhFeGFjdE1hdGNoLFxuICBJbnZlcnNlUHJlZml4RXhhY3RNYXRjaCxcbiAgSW52ZXJzZVN1ZmZpeEV4YWN0TWF0Y2gsXG4gIFN1ZmZpeEV4YWN0TWF0Y2gsXG4gIEludmVyc2VFeGFjdE1hdGNoLFxuICBGdXp6eU1hdGNoXG5dO1xuXG5jb25zdCBzZWFyY2hlcnNMZW4gPSBzZWFyY2hlcnMubGVuZ3RoO1xuXG4vLyBSZWdleCB0byBzcGxpdCBieSBzcGFjZXMsIGJ1dCBrZWVwIGFueXRoaW5nIGluIHF1b3RlcyB0b2dldGhlclxuY29uc3QgU1BBQ0VfUkUgPSAvICsoPz0oPzpbXlxcXCJdKlxcXCJbXlxcXCJdKlxcXCIpKlteXFxcIl0qJCkvO1xuY29uc3QgT1JfVE9LRU4gPSAnfCc7XG5cbi8vIFJldHVybiBhIDJEIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWVyeSwgZm9yIHNpbXBsZXIgcGFyc2luZy5cbi8vIEV4YW1wbGU6XG4vLyBcIl5jb3JlIGdvJCB8IHJiJCB8IHB5JCB4eSRcIiA9PiBbW1wiXmNvcmVcIiwgXCJnbyRcIl0sIFtcInJiJFwiXSwgW1wicHkkXCIsIFwieHkkXCJdXVxuZnVuY3Rpb24gcGFyc2VRdWVyeShwYXR0ZXJuLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoT1JfVE9LRU4pLm1hcCgoaXRlbSkgPT4ge1xuICAgIGxldCBxdWVyeSA9IGl0ZW1cbiAgICAgIC50cmltKClcbiAgICAgIC5zcGxpdChTUEFDRV9SRSlcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gJiYgISFpdGVtLnRyaW0oKSk7XG5cbiAgICBsZXQgcmVzdWx0cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBxdWVyeS5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgY29uc3QgcXVlcnlJdGVtID0gcXVlcnlbaV07XG5cbiAgICAgIC8vIDEuIEhhbmRsZSBtdWx0aXBsZSBxdWVyeSBtYXRjaCAoaS5lLCBvbmNlIHRoYXQgYXJlIHF1b3RlZCwgbGlrZSBgXCJoZWxsbyB3b3JsZFwiYClcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgbGV0IGlkeCA9IC0xO1xuICAgICAgd2hpbGUgKCFmb3VuZCAmJiArK2lkeCA8IHNlYXJjaGVyc0xlbikge1xuICAgICAgICBjb25zdCBzZWFyY2hlciA9IHNlYXJjaGVyc1tpZHhdO1xuICAgICAgICBsZXQgdG9rZW4gPSBzZWFyY2hlci5pc011bHRpTWF0Y2gocXVlcnlJdGVtKTtcbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKG5ldyBzZWFyY2hlcih0b2tlbiwgb3B0aW9ucykpO1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSGFuZGxlIHNpbmdsZSBxdWVyeSBtYXRjaGVzIChpLmUsIG9uY2UgdGhhdCBhcmUgKm5vdCogcXVvdGVkKVxuICAgICAgaWR4ID0gLTE7XG4gICAgICB3aGlsZSAoKytpZHggPCBzZWFyY2hlcnNMZW4pIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoZXIgPSBzZWFyY2hlcnNbaWR4XTtcbiAgICAgICAgbGV0IHRva2VuID0gc2VhcmNoZXIuaXNTaW5nbGVNYXRjaChxdWVyeUl0ZW0pO1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2gobmV3IHNlYXJjaGVyKHRva2VuLCBvcHRpb25zKSk7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzXG4gIH0pXG59XG5cbi8vIFRoZXNlIGV4dGVuZGVkIG1hdGNoZXJzIGNhbiByZXR1cm4gYW4gYXJyYXkgb2YgbWF0Y2hlcywgYXMgb3Bwb3NlZFxuLy8gdG8gYSBzaW5nbCBtYXRjaFxuY29uc3QgTXVsdGlNYXRjaFNldCA9IG5ldyBTZXQoW0Z1enp5TWF0Y2gudHlwZSwgSW5jbHVkZU1hdGNoLnR5cGVdKTtcblxuLyoqXG4gKiBDb21tYW5kLWxpa2Ugc2VhcmNoaW5nXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogR2l2ZW4gbXVsdGlwbGUgc2VhcmNoIHRlcm1zIGRlbGltaXRlZCBieSBzcGFjZXMuZS5nLiBgXmpzY3JpcHQgLnB5dGhvbiQgcnVieSAhamF2YWAsXG4gKiBzZWFyY2ggaW4gYSBnaXZlbiB0ZXh0LlxuICpcbiAqIFNlYXJjaCBzeW50YXg6XG4gKlxuICogfCBUb2tlbiAgICAgICB8IE1hdGNoIHR5cGUgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICogfCBganNjcmlwdGAgICB8IGZ1enp5LW1hdGNoICAgICAgICAgICAgICAgIHwgSXRlbXMgdGhhdCBmdXp6eSBtYXRjaCBganNjcmlwdGAgICAgICAgfFxuICogfCBgPXNjaGVtZWAgICB8IGV4YWN0LW1hdGNoICAgICAgICAgICAgICAgIHwgSXRlbXMgdGhhdCBhcmUgYHNjaGVtZWAgICAgICAgICAgICAgICAgfFxuICogfCBgJ3B5dGhvbmAgICB8IGluY2x1ZGUtbWF0Y2ggICAgICAgICAgICAgIHwgSXRlbXMgdGhhdCBpbmNsdWRlIGBweXRob25gICAgICAgICAgICAgfFxuICogfCBgIXJ1YnlgICAgICB8IGludmVyc2UtZXhhY3QtbWF0Y2ggICAgICAgIHwgSXRlbXMgdGhhdCBkbyBub3QgaW5jbHVkZSBgcnVieWAgICAgICAgfFxuICogfCBgXmphdmFgICAgICB8IHByZWZpeC1leGFjdC1tYXRjaCAgICAgICAgIHwgSXRlbXMgdGhhdCBzdGFydCB3aXRoIGBqYXZhYCAgICAgICAgICAgfFxuICogfCBgIV5lYXJsYW5nYCB8IGludmVyc2UtcHJlZml4LWV4YWN0LW1hdGNoIHwgSXRlbXMgdGhhdCBkbyBub3Qgc3RhcnQgd2l0aCBgZWFybGFuZ2AgfFxuICogfCBgLmpzJGAgICAgICB8IHN1ZmZpeC1leGFjdC1tYXRjaCAgICAgICAgIHwgSXRlbXMgdGhhdCBlbmQgd2l0aCBgLmpzYCAgICAgICAgICAgICAgfFxuICogfCBgIS5nbyRgICAgICB8IGludmVyc2Utc3VmZml4LWV4YWN0LW1hdGNoIHwgSXRlbXMgdGhhdCBkbyBub3QgZW5kIHdpdGggYC5nb2AgICAgICAgfFxuICpcbiAqIEEgc2luZ2xlIHBpcGUgY2hhcmFjdGVyIGFjdHMgYXMgYW4gT1Igb3BlcmF0b3IuIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nXG4gKiBxdWVyeSBtYXRjaGVzIGVudHJpZXMgdGhhdCBzdGFydCB3aXRoIGBjb3JlYCBhbmQgZW5kIHdpdGggZWl0aGVyYGdvYCwgYHJiYCxcbiAqIG9yYHB5YC5cbiAqXG4gKiBgYGBcbiAqIF5jb3JlIGdvJCB8IHJiJCB8IHB5JFxuICogYGBgXG4gKi9cbmNsYXNzIEV4dGVuZGVkU2VhcmNoIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcGF0dGVybixcbiAgICB7XG4gICAgICBpc0Nhc2VTZW5zaXRpdmUgPSBDb25maWcuaXNDYXNlU2Vuc2l0aXZlLFxuICAgICAgaW5jbHVkZU1hdGNoZXMgPSBDb25maWcuaW5jbHVkZU1hdGNoZXMsXG4gICAgICBtaW5NYXRjaENoYXJMZW5ndGggPSBDb25maWcubWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgaWdub3JlTG9jYXRpb24gPSBDb25maWcuaWdub3JlTG9jYXRpb24sXG4gICAgICBmaW5kQWxsTWF0Y2hlcyA9IENvbmZpZy5maW5kQWxsTWF0Y2hlcyxcbiAgICAgIGxvY2F0aW9uID0gQ29uZmlnLmxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkID0gQ29uZmlnLnRocmVzaG9sZCxcbiAgICAgIGRpc3RhbmNlID0gQ29uZmlnLmRpc3RhbmNlXG4gICAgfSA9IHt9XG4gICkge1xuICAgIHRoaXMucXVlcnkgPSBudWxsO1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIGlzQ2FzZVNlbnNpdGl2ZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzLFxuICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoLFxuICAgICAgZmluZEFsbE1hdGNoZXMsXG4gICAgICBpZ25vcmVMb2NhdGlvbixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgdGhyZXNob2xkLFxuICAgICAgZGlzdGFuY2VcbiAgICB9O1xuXG4gICAgdGhpcy5wYXR0ZXJuID0gaXNDYXNlU2Vuc2l0aXZlID8gcGF0dGVybiA6IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnF1ZXJ5ID0gcGFyc2VRdWVyeSh0aGlzLnBhdHRlcm4sIHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBzdGF0aWMgY29uZGl0aW9uKF8sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy51c2VFeHRlbmRlZFNlYXJjaFxuICB9XG5cbiAgc2VhcmNoSW4odGV4dCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5xdWVyeTtcblxuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzTWF0Y2g6IGZhbHNlLFxuICAgICAgICBzY29yZTogMVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgaW5jbHVkZU1hdGNoZXMsIGlzQ2FzZVNlbnNpdGl2ZSB9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgdGV4dCA9IGlzQ2FzZVNlbnNpdGl2ZSA/IHRleHQgOiB0ZXh0LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBsZXQgbnVtTWF0Y2hlcyA9IDA7XG4gICAgbGV0IGFsbEluZGljZXMgPSBbXTtcbiAgICBsZXQgdG90YWxTY29yZSA9IDA7XG5cbiAgICAvLyBPUnNcbiAgICBmb3IgKGxldCBpID0gMCwgcUxlbiA9IHF1ZXJ5Lmxlbmd0aDsgaSA8IHFMZW47IGkgKz0gMSkge1xuICAgICAgY29uc3Qgc2VhcmNoZXJzID0gcXVlcnlbaV07XG5cbiAgICAgIC8vIFJlc2V0IGluZGljZXNcbiAgICAgIGFsbEluZGljZXMubGVuZ3RoID0gMDtcbiAgICAgIG51bU1hdGNoZXMgPSAwO1xuXG4gICAgICAvLyBBTkRzXG4gICAgICBmb3IgKGxldCBqID0gMCwgcExlbiA9IHNlYXJjaGVycy5sZW5ndGg7IGogPCBwTGVuOyBqICs9IDEpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoZXIgPSBzZWFyY2hlcnNbal07XG4gICAgICAgIGNvbnN0IHsgaXNNYXRjaCwgaW5kaWNlcywgc2NvcmUgfSA9IHNlYXJjaGVyLnNlYXJjaCh0ZXh0KTtcblxuICAgICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICAgIG51bU1hdGNoZXMgKz0gMTtcbiAgICAgICAgICB0b3RhbFNjb3JlICs9IHNjb3JlO1xuICAgICAgICAgIGlmIChpbmNsdWRlTWF0Y2hlcykge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHNlYXJjaGVyLmNvbnN0cnVjdG9yLnR5cGU7XG4gICAgICAgICAgICBpZiAoTXVsdGlNYXRjaFNldC5oYXModHlwZSkpIHtcbiAgICAgICAgICAgICAgYWxsSW5kaWNlcyA9IFsuLi5hbGxJbmRpY2VzLCAuLi5pbmRpY2VzXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFsbEluZGljZXMucHVzaChpbmRpY2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG90YWxTY29yZSA9IDA7XG4gICAgICAgICAgbnVtTWF0Y2hlcyA9IDA7XG4gICAgICAgICAgYWxsSW5kaWNlcy5sZW5ndGggPSAwO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT1IgY29uZGl0aW9uLCBzbyBpZiBUUlVFLCByZXR1cm5cbiAgICAgIGlmIChudW1NYXRjaGVzKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB7XG4gICAgICAgICAgaXNNYXRjaDogdHJ1ZSxcbiAgICAgICAgICBzY29yZTogdG90YWxTY29yZSAvIG51bU1hdGNoZXNcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaW5jbHVkZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXN1bHQuaW5kaWNlcyA9IGFsbEluZGljZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm90aGluZyB3YXMgbWF0Y2hlZFxuICAgIHJldHVybiB7XG4gICAgICBpc01hdGNoOiBmYWxzZSxcbiAgICAgIHNjb3JlOiAxXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHJlZ2lzdGVyZWRTZWFyY2hlcnMgPSBbXTtcblxuZnVuY3Rpb24gcmVnaXN0ZXIoLi4uYXJncykge1xuICByZWdpc3RlcmVkU2VhcmNoZXJzLnB1c2goLi4uYXJncyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNlYXJjaGVyKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHJlZ2lzdGVyZWRTZWFyY2hlcnMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICBsZXQgc2VhcmNoZXJDbGFzcyA9IHJlZ2lzdGVyZWRTZWFyY2hlcnNbaV07XG4gICAgaWYgKHNlYXJjaGVyQ2xhc3MuY29uZGl0aW9uKHBhdHRlcm4sIG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gbmV3IHNlYXJjaGVyQ2xhc3MocGF0dGVybiwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IEJpdGFwU2VhcmNoKHBhdHRlcm4sIG9wdGlvbnMpXG59XG5cbmNvbnN0IExvZ2ljYWxPcGVyYXRvciA9IHtcbiAgQU5EOiAnJGFuZCcsXG4gIE9SOiAnJG9yJ1xufTtcblxuY29uc3QgS2V5VHlwZSA9IHtcbiAgUEFUSDogJyRwYXRoJyxcbiAgUEFUVEVSTjogJyR2YWwnXG59O1xuXG5jb25zdCBpc0V4cHJlc3Npb24gPSAocXVlcnkpID0+XG4gICEhKHF1ZXJ5W0xvZ2ljYWxPcGVyYXRvci5BTkRdIHx8IHF1ZXJ5W0xvZ2ljYWxPcGVyYXRvci5PUl0pO1xuXG5jb25zdCBpc1BhdGggPSAocXVlcnkpID0+ICEhcXVlcnlbS2V5VHlwZS5QQVRIXTtcblxuY29uc3QgaXNMZWFmID0gKHF1ZXJ5KSA9PlxuICAhaXNBcnJheShxdWVyeSkgJiYgaXNPYmplY3QocXVlcnkpICYmICFpc0V4cHJlc3Npb24ocXVlcnkpO1xuXG5jb25zdCBjb252ZXJ0VG9FeHBsaWNpdCA9IChxdWVyeSkgPT4gKHtcbiAgW0xvZ2ljYWxPcGVyYXRvci5BTkRdOiBPYmplY3Qua2V5cyhxdWVyeSkubWFwKChrZXkpID0+ICh7XG4gICAgW2tleV06IHF1ZXJ5W2tleV1cbiAgfSkpXG59KTtcblxuLy8gV2hlbiBgYXV0b2AgaXMgYHRydWVgLCB0aGUgcGFyc2UgZnVuY3Rpb24gd2lsbCBpbmZlciBhbmQgaW5pdGlhbGl6ZSBhbmQgYWRkXG4vLyB0aGUgYXBwcm9wcmlhdGUgYFNlYXJjaGVyYCBpbnN0YW5jZVxuZnVuY3Rpb24gcGFyc2UocXVlcnksIG9wdGlvbnMsIHsgYXV0byA9IHRydWUgfSA9IHt9KSB7XG4gIGNvbnN0IG5leHQgPSAocXVlcnkpID0+IHtcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcblxuICAgIGNvbnN0IGlzUXVlcnlQYXRoID0gaXNQYXRoKHF1ZXJ5KTtcblxuICAgIGlmICghaXNRdWVyeVBhdGggJiYga2V5cy5sZW5ndGggPiAxICYmICFpc0V4cHJlc3Npb24ocXVlcnkpKSB7XG4gICAgICByZXR1cm4gbmV4dChjb252ZXJ0VG9FeHBsaWNpdChxdWVyeSkpXG4gICAgfVxuXG4gICAgaWYgKGlzTGVhZihxdWVyeSkpIHtcbiAgICAgIGNvbnN0IGtleSA9IGlzUXVlcnlQYXRoID8gcXVlcnlbS2V5VHlwZS5QQVRIXSA6IGtleXNbMF07XG5cbiAgICAgIGNvbnN0IHBhdHRlcm4gPSBpc1F1ZXJ5UGF0aCA/IHF1ZXJ5W0tleVR5cGUuUEFUVEVSTl0gOiBxdWVyeVtrZXldO1xuXG4gICAgICBpZiAoIWlzU3RyaW5nKHBhdHRlcm4pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihMT0dJQ0FMX1NFQVJDSF9JTlZBTElEX1FVRVJZX0ZPUl9LRVkoa2V5KSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICBrZXlJZDogY3JlYXRlS2V5SWQoa2V5KSxcbiAgICAgICAgcGF0dGVyblxuICAgICAgfTtcblxuICAgICAgaWYgKGF1dG8pIHtcbiAgICAgICAgb2JqLnNlYXJjaGVyID0gY3JlYXRlU2VhcmNoZXIocGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmpcbiAgICB9XG5cbiAgICBsZXQgbm9kZSA9IHtcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIG9wZXJhdG9yOiBrZXlzWzBdXG4gICAgfTtcblxuICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHF1ZXJ5W2tleV07XG5cbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbi5wdXNoKG5leHQoaXRlbSkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBub2RlXG4gIH07XG5cbiAgaWYgKCFpc0V4cHJlc3Npb24ocXVlcnkpKSB7XG4gICAgcXVlcnkgPSBjb252ZXJ0VG9FeHBsaWNpdChxdWVyeSk7XG4gIH1cblxuICByZXR1cm4gbmV4dChxdWVyeSlcbn1cblxuLy8gUHJhY3RpY2FsIHNjb3JpbmcgZnVuY3Rpb25cbmZ1bmN0aW9uIGNvbXB1dGVTY29yZShcbiAgcmVzdWx0cyxcbiAgeyBpZ25vcmVGaWVsZE5vcm0gPSBDb25maWcuaWdub3JlRmllbGROb3JtIH1cbikge1xuICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgIGxldCB0b3RhbFNjb3JlID0gMTtcblxuICAgIHJlc3VsdC5tYXRjaGVzLmZvckVhY2goKHsga2V5LCBub3JtLCBzY29yZSB9KSA9PiB7XG4gICAgICBjb25zdCB3ZWlnaHQgPSBrZXkgPyBrZXkud2VpZ2h0IDogbnVsbDtcblxuICAgICAgdG90YWxTY29yZSAqPSBNYXRoLnBvdyhcbiAgICAgICAgc2NvcmUgPT09IDAgJiYgd2VpZ2h0ID8gTnVtYmVyLkVQU0lMT04gOiBzY29yZSxcbiAgICAgICAgKHdlaWdodCB8fCAxKSAqIChpZ25vcmVGaWVsZE5vcm0gPyAxIDogbm9ybSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXN1bHQuc2NvcmUgPSB0b3RhbFNjb3JlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTWF0Y2hlcyhyZXN1bHQsIGRhdGEpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHJlc3VsdC5tYXRjaGVzO1xuICBkYXRhLm1hdGNoZXMgPSBbXTtcblxuICBpZiAoIWlzRGVmaW5lZChtYXRjaGVzKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbWF0Y2hlcy5mb3JFYWNoKChtYXRjaCkgPT4ge1xuICAgIGlmICghaXNEZWZpbmVkKG1hdGNoLmluZGljZXMpIHx8ICFtYXRjaC5pbmRpY2VzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgeyBpbmRpY2VzLCB2YWx1ZSB9ID0gbWF0Y2g7XG5cbiAgICBsZXQgb2JqID0ge1xuICAgICAgaW5kaWNlcyxcbiAgICAgIHZhbHVlXG4gICAgfTtcblxuICAgIGlmIChtYXRjaC5rZXkpIHtcbiAgICAgIG9iai5rZXkgPSBtYXRjaC5rZXkuc3JjO1xuICAgIH1cblxuICAgIGlmIChtYXRjaC5pZHggPiAtMSkge1xuICAgICAgb2JqLnJlZkluZGV4ID0gbWF0Y2guaWR4O1xuICAgIH1cblxuICAgIGRhdGEubWF0Y2hlcy5wdXNoKG9iaik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TY29yZShyZXN1bHQsIGRhdGEpIHtcbiAgZGF0YS5zY29yZSA9IHJlc3VsdC5zY29yZTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0KFxuICByZXN1bHRzLFxuICBkb2NzLFxuICB7XG4gICAgaW5jbHVkZU1hdGNoZXMgPSBDb25maWcuaW5jbHVkZU1hdGNoZXMsXG4gICAgaW5jbHVkZVNjb3JlID0gQ29uZmlnLmluY2x1ZGVTY29yZVxuICB9ID0ge31cbikge1xuICBjb25zdCB0cmFuc2Zvcm1lcnMgPSBbXTtcblxuICBpZiAoaW5jbHVkZU1hdGNoZXMpIHRyYW5zZm9ybWVycy5wdXNoKHRyYW5zZm9ybU1hdGNoZXMpO1xuICBpZiAoaW5jbHVkZVNjb3JlKSB0cmFuc2Zvcm1lcnMucHVzaCh0cmFuc2Zvcm1TY29yZSk7XG5cbiAgcmV0dXJuIHJlc3VsdHMubWFwKChyZXN1bHQpID0+IHtcbiAgICBjb25zdCB7IGlkeCB9ID0gcmVzdWx0O1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGl0ZW06IGRvY3NbaWR4XSxcbiAgICAgIHJlZkluZGV4OiBpZHhcbiAgICB9O1xuXG4gICAgaWYgKHRyYW5zZm9ybWVycy5sZW5ndGgpIHtcbiAgICAgIHRyYW5zZm9ybWVycy5mb3JFYWNoKCh0cmFuc2Zvcm1lcikgPT4ge1xuICAgICAgICB0cmFuc2Zvcm1lcihyZXN1bHQsIGRhdGEpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFcbiAgfSlcbn1cblxuY2xhc3MgRnVzZSB7XG4gIGNvbnN0cnVjdG9yKGRvY3MsIG9wdGlvbnMgPSB7fSwgaW5kZXgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLkNvbmZpZywgLi4ub3B0aW9ucyB9O1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5vcHRpb25zLnVzZUV4dGVuZGVkU2VhcmNoICYmXG4gICAgICAhdHJ1ZVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEVYVEVOREVEX1NFQVJDSF9VTkFWQUlMQUJMRSlcbiAgICB9XG5cbiAgICB0aGlzLl9rZXlTdG9yZSA9IG5ldyBLZXlTdG9yZSh0aGlzLm9wdGlvbnMua2V5cyk7XG5cbiAgICB0aGlzLnNldENvbGxlY3Rpb24oZG9jcywgaW5kZXgpO1xuICB9XG5cbiAgc2V0Q29sbGVjdGlvbihkb2NzLCBpbmRleCkge1xuICAgIHRoaXMuX2RvY3MgPSBkb2NzO1xuXG4gICAgaWYgKGluZGV4ICYmICEoaW5kZXggaW5zdGFuY2VvZiBGdXNlSW5kZXgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSU5DT1JSRUNUX0lOREVYX1RZUEUpXG4gICAgfVxuXG4gICAgdGhpcy5fbXlJbmRleCA9XG4gICAgICBpbmRleCB8fFxuICAgICAgY3JlYXRlSW5kZXgodGhpcy5vcHRpb25zLmtleXMsIHRoaXMuX2RvY3MsIHtcbiAgICAgICAgZ2V0Rm46IHRoaXMub3B0aW9ucy5nZXRGbixcbiAgICAgICAgZmllbGROb3JtV2VpZ2h0OiB0aGlzLm9wdGlvbnMuZmllbGROb3JtV2VpZ2h0XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZChkb2MpIHtcbiAgICBpZiAoIWlzRGVmaW5lZChkb2MpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9kb2NzLnB1c2goZG9jKTtcbiAgICB0aGlzLl9teUluZGV4LmFkZChkb2MpO1xuICB9XG5cbiAgcmVtb3ZlKHByZWRpY2F0ZSA9ICgvKiBkb2MsIGlkeCAqLykgPT4gZmFsc2UpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5fZG9jcy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgY29uc3QgZG9jID0gdGhpcy5fZG9jc1tpXTtcbiAgICAgIGlmIChwcmVkaWNhdGUoZG9jLCBpKSkge1xuICAgICAgICB0aGlzLnJlbW92ZUF0KGkpO1xuICAgICAgICBpIC09IDE7XG4gICAgICAgIGxlbiAtPSAxO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChkb2MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1vdmVBdChpZHgpIHtcbiAgICB0aGlzLl9kb2NzLnNwbGljZShpZHgsIDEpO1xuICAgIHRoaXMuX215SW5kZXgucmVtb3ZlQXQoaWR4KTtcbiAgfVxuXG4gIGdldEluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLl9teUluZGV4XG4gIH1cblxuICBzZWFyY2gocXVlcnksIHsgbGltaXQgPSAtMSB9ID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBpbmNsdWRlTWF0Y2hlcyxcbiAgICAgIGluY2x1ZGVTY29yZSxcbiAgICAgIHNob3VsZFNvcnQsXG4gICAgICBzb3J0Rm4sXG4gICAgICBpZ25vcmVGaWVsZE5vcm1cbiAgICB9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgbGV0IHJlc3VsdHMgPSBpc1N0cmluZyhxdWVyeSlcbiAgICAgID8gaXNTdHJpbmcodGhpcy5fZG9jc1swXSlcbiAgICAgICAgPyB0aGlzLl9zZWFyY2hTdHJpbmdMaXN0KHF1ZXJ5KVxuICAgICAgICA6IHRoaXMuX3NlYXJjaE9iamVjdExpc3QocXVlcnkpXG4gICAgICA6IHRoaXMuX3NlYXJjaExvZ2ljYWwocXVlcnkpO1xuXG4gICAgY29tcHV0ZVNjb3JlKHJlc3VsdHMsIHsgaWdub3JlRmllbGROb3JtIH0pO1xuXG4gICAgaWYgKHNob3VsZFNvcnQpIHtcbiAgICAgIHJlc3VsdHMuc29ydChzb3J0Rm4pO1xuICAgIH1cblxuICAgIGlmIChpc051bWJlcihsaW1pdCkgJiYgbGltaXQgPiAtMSkge1xuICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuc2xpY2UoMCwgbGltaXQpO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXQocmVzdWx0cywgdGhpcy5fZG9jcywge1xuICAgICAgaW5jbHVkZU1hdGNoZXMsXG4gICAgICBpbmNsdWRlU2NvcmVcbiAgICB9KVxuICB9XG5cbiAgX3NlYXJjaFN0cmluZ0xpc3QocXVlcnkpIHtcbiAgICBjb25zdCBzZWFyY2hlciA9IGNyZWF0ZVNlYXJjaGVyKHF1ZXJ5LCB0aGlzLm9wdGlvbnMpO1xuICAgIGNvbnN0IHsgcmVjb3JkcyB9ID0gdGhpcy5fbXlJbmRleDtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgZXZlcnkgc3RyaW5nIGluIHRoZSBpbmRleFxuICAgIHJlY29yZHMuZm9yRWFjaCgoeyB2OiB0ZXh0LCBpOiBpZHgsIG46IG5vcm0gfSkgPT4ge1xuICAgICAgaWYgKCFpc0RlZmluZWQodGV4dCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgaXNNYXRjaCwgc2NvcmUsIGluZGljZXMgfSA9IHNlYXJjaGVyLnNlYXJjaEluKHRleHQpO1xuXG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgIGl0ZW06IHRleHQsXG4gICAgICAgICAgaWR4LFxuICAgICAgICAgIG1hdGNoZXM6IFt7IHNjb3JlLCB2YWx1ZTogdGV4dCwgbm9ybSwgaW5kaWNlcyB9XVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBfc2VhcmNoTG9naWNhbChxdWVyeSkge1xuXG4gICAgY29uc3QgZXhwcmVzc2lvbiA9IHBhcnNlKHF1ZXJ5LCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgY29uc3QgZXZhbHVhdGUgPSAobm9kZSwgaXRlbSwgaWR4KSA9PiB7XG4gICAgICBpZiAoIW5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgeyBrZXlJZCwgc2VhcmNoZXIgfSA9IG5vZGU7XG5cbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMuX2ZpbmRNYXRjaGVzKHtcbiAgICAgICAgICBrZXk6IHRoaXMuX2tleVN0b3JlLmdldChrZXlJZCksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX215SW5kZXguZ2V0VmFsdWVGb3JJdGVtQXRLZXlJZChpdGVtLCBrZXlJZCksXG4gICAgICAgICAgc2VhcmNoZXJcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgIG1hdGNoZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW11cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV2YWx1YXRlKGNoaWxkLCBpdGVtLCBpZHgpO1xuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCkge1xuICAgICAgICAgIHJlcy5wdXNoKC4uLnJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS5vcGVyYXRvciA9PT0gTG9naWNhbE9wZXJhdG9yLkFORCkge1xuICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzXG4gICAgfTtcblxuICAgIGNvbnN0IHJlY29yZHMgPSB0aGlzLl9teUluZGV4LnJlY29yZHM7XG4gICAgY29uc3QgcmVzdWx0TWFwID0ge307XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuXG4gICAgcmVjb3Jkcy5mb3JFYWNoKCh7ICQ6IGl0ZW0sIGk6IGlkeCB9KSA9PiB7XG4gICAgICBpZiAoaXNEZWZpbmVkKGl0ZW0pKSB7XG4gICAgICAgIGxldCBleHBSZXN1bHRzID0gZXZhbHVhdGUoZXhwcmVzc2lvbiwgaXRlbSwgaWR4KTtcblxuICAgICAgICBpZiAoZXhwUmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBEZWR1cGUgd2hlbiBhZGRpbmdcbiAgICAgICAgICBpZiAoIXJlc3VsdE1hcFtpZHhdKSB7XG4gICAgICAgICAgICByZXN1bHRNYXBbaWR4XSA9IHsgaWR4LCBpdGVtLCBtYXRjaGVzOiBbXSB9O1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdE1hcFtpZHhdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXhwUmVzdWx0cy5mb3JFYWNoKCh7IG1hdGNoZXMgfSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0TWFwW2lkeF0ubWF0Y2hlcy5wdXNoKC4uLm1hdGNoZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgX3NlYXJjaE9iamVjdExpc3QocXVlcnkpIHtcbiAgICBjb25zdCBzZWFyY2hlciA9IGNyZWF0ZVNlYXJjaGVyKHF1ZXJ5LCB0aGlzLm9wdGlvbnMpO1xuICAgIGNvbnN0IHsga2V5cywgcmVjb3JkcyB9ID0gdGhpcy5fbXlJbmRleDtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICAvLyBMaXN0IGlzIEFycmF5PE9iamVjdD5cbiAgICByZWNvcmRzLmZvckVhY2goKHsgJDogaXRlbSwgaTogaWR4IH0pID0+IHtcbiAgICAgIGlmICghaXNEZWZpbmVkKGl0ZW0pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgbWF0Y2hlcyA9IFtdO1xuXG4gICAgICAvLyBJdGVyYXRlIG92ZXIgZXZlcnkga2V5IChpLmUsIHBhdGgpLCBhbmQgZmV0Y2ggdGhlIHZhbHVlIGF0IHRoYXQga2V5XG4gICAgICBrZXlzLmZvckVhY2goKGtleSwga2V5SW5kZXgpID0+IHtcbiAgICAgICAgbWF0Y2hlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMuX2ZpbmRNYXRjaGVzKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtW2tleUluZGV4XSxcbiAgICAgICAgICAgIHNlYXJjaGVyXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICBpZHgsXG4gICAgICAgICAgaXRlbSxcbiAgICAgICAgICBtYXRjaGVzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuICBfZmluZE1hdGNoZXMoeyBrZXksIHZhbHVlLCBzZWFyY2hlciB9KSB7XG4gICAgaWYgKCFpc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICBsZXQgbWF0Y2hlcyA9IFtdO1xuXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWx1ZS5mb3JFYWNoKCh7IHY6IHRleHQsIGk6IGlkeCwgbjogbm9ybSB9KSA9PiB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRleHQpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGlzTWF0Y2gsIHNjb3JlLCBpbmRpY2VzIH0gPSBzZWFyY2hlci5zZWFyY2hJbih0ZXh0KTtcblxuICAgICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICAgIG1hdGNoZXMucHVzaCh7XG4gICAgICAgICAgICBzY29yZSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHZhbHVlOiB0ZXh0LFxuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgbm9ybSxcbiAgICAgICAgICAgIGluZGljZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgdjogdGV4dCwgbjogbm9ybSB9ID0gdmFsdWU7XG5cbiAgICAgIGNvbnN0IHsgaXNNYXRjaCwgc2NvcmUsIGluZGljZXMgfSA9IHNlYXJjaGVyLnNlYXJjaEluKHRleHQpO1xuXG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICBtYXRjaGVzLnB1c2goeyBzY29yZSwga2V5LCB2YWx1ZTogdGV4dCwgbm9ybSwgaW5kaWNlcyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlc1xuICB9XG59XG5cbkZ1c2UudmVyc2lvbiA9ICc2LjYuMic7XG5GdXNlLmNyZWF0ZUluZGV4ID0gY3JlYXRlSW5kZXg7XG5GdXNlLnBhcnNlSW5kZXggPSBwYXJzZUluZGV4O1xuRnVzZS5jb25maWcgPSBDb25maWc7XG5cbntcbiAgRnVzZS5wYXJzZVF1ZXJ5ID0gcGFyc2U7XG59XG5cbntcbiAgcmVnaXN0ZXIoRXh0ZW5kZWRTZWFyY2gpO1xufVxuXG5leHBvcnQgeyBGdXNlIGFzIGRlZmF1bHQgfTtcbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wYXJlVmVyc2lvbnModjEsIHYyKSB7XG4gIC8vIHZhbGlkYXRlIGlucHV0IGFuZCBzcGxpdCBpbnRvIHNlZ21lbnRzXG4gIGNvbnN0IG4xID0gdmFsaWRhdGVBbmRQYXJzZSh2MSk7XG4gIGNvbnN0IG4yID0gdmFsaWRhdGVBbmRQYXJzZSh2Mik7XG5cbiAgLy8gcG9wIG9mZiB0aGUgcGF0Y2hcbiAgY29uc3QgcDEgPSBuMS5wb3AoKTtcbiAgY29uc3QgcDIgPSBuMi5wb3AoKTtcblxuICAvLyB2YWxpZGF0ZSBudW1iZXJzXG4gIGNvbnN0IHIgPSBjb21wYXJlU2VnbWVudHMobjEsIG4yKTtcbiAgaWYgKHIgIT09IDApIHJldHVybiByO1xuXG4gIC8vIHZhbGlkYXRlIHByZS1yZWxlYXNlXG4gIGlmIChwMSAmJiBwMikge1xuICAgIHJldHVybiBjb21wYXJlU2VnbWVudHMocDEuc3BsaXQoJy4nKSwgcDIuc3BsaXQoJy4nKSk7XG4gIH0gZWxzZSBpZiAocDEgfHwgcDIpIHtcbiAgICByZXR1cm4gcDEgPyAtMSA6IDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gKHYpID0+XG4gIHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiAvXlt2XFxkXS8udGVzdCh2KSAmJiBzZW12ZXIudGVzdCh2KTtcblxuZXhwb3J0IGNvbnN0IGNvbXBhcmUgPSAodjEsIHYyLCBvcGVyYXRvcikgPT4ge1xuICAvLyB2YWxpZGF0ZSBpbnB1dCBvcGVyYXRvclxuICBhc3NlcnRWYWxpZE9wZXJhdG9yKG9wZXJhdG9yKTtcblxuICAvLyBzaW5jZSByZXN1bHQgb2YgY29tcGFyZVZlcnNpb25zIGNhbiBvbmx5IGJlIC0xIG9yIDAgb3IgMVxuICAvLyBhIHNpbXBsZSBtYXAgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSBzd2l0Y2hcbiAgY29uc3QgcmVzID0gY29tcGFyZVZlcnNpb25zKHYxLCB2Mik7XG5cbiAgcmV0dXJuIG9wZXJhdG9yUmVzTWFwW29wZXJhdG9yXS5pbmNsdWRlcyhyZXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNhdGlzZmllcyA9ICh2LCByKSA9PiB7XG4gIC8vIGlmIG5vIHJhbmdlIG9wZXJhdG9yIHRoZW4gXCI9XCJcbiAgY29uc3QgbSA9IHIubWF0Y2goL14oWzw+PX5eXSspLyk7XG4gIGNvbnN0IG9wID0gbSA/IG1bMV0gOiAnPSc7XG5cbiAgLy8gaWYgZ3QvbHQvZXEgdGhlbiBvcGVyYXRvciBjb21wYXJlXG4gIGlmIChvcCAhPT0gJ14nICYmIG9wICE9PSAnficpIHJldHVybiBjb21wYXJlKHYsIHIsIG9wKTtcblxuICAvLyBlbHNlIHJhbmdlIG9mIGVpdGhlciBcIn5cIiBvciBcIl5cIiBpcyBhc3N1bWVkXG4gIGNvbnN0IFt2MSwgdjIsIHYzXSA9IHZhbGlkYXRlQW5kUGFyc2Uodik7XG4gIGNvbnN0IFtyMSwgcjIsIHIzXSA9IHZhbGlkYXRlQW5kUGFyc2Uocik7XG4gIGlmIChjb21wYXJlU3RyaW5ncyh2MSwgcjEpICE9PSAwKSByZXR1cm4gZmFsc2U7XG4gIGlmIChvcCA9PT0gJ14nKSB7XG4gICAgcmV0dXJuIGNvbXBhcmVTZWdtZW50cyhbdjIsIHYzXSwgW3IyLCByM10pID49IDA7XG4gIH1cbiAgaWYgKGNvbXBhcmVTdHJpbmdzKHYyLCByMikgIT09IDApIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGNvbXBhcmVTdHJpbmdzKHYzLCByMykgPj0gMDtcbn07XG5cbi8vIGV4cG9ydCBDSlMgc3R5bGUgZm9yIHBhcml0eVxuY29tcGFyZVZlcnNpb25zLnZhbGlkYXRlID0gdmFsaWRhdGU7XG5jb21wYXJlVmVyc2lvbnMuY29tcGFyZSA9IGNvbXBhcmU7XG5jb21wYXJlVmVyc2lvbnMuc2FzdGlzZmllcyA9IHNhdGlzZmllcztcblxuY29uc3Qgc2VtdmVyID1cbiAgL15bdl5+PD49XSo/KFxcZCspKD86XFwuKFt4Kl18XFxkKykoPzpcXC4oW3gqXXxcXGQrKSg/OlxcLihbeCpdfFxcZCspKT8oPzotKFtcXGRhLXpcXC1dKyg/OlxcLltcXGRhLXpcXC1dKykqKSk/KD86XFwrW1xcZGEtelxcLV0rKD86XFwuW1xcZGEtelxcLV0rKSopPyk/KT8kL2k7XG5cbmNvbnN0IHZhbGlkYXRlQW5kUGFyc2UgPSAodikgPT4ge1xuICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudCBleHBlY3RlZCBzdHJpbmcnKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IHYubWF0Y2goc2VtdmVyKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhcmd1bWVudCBub3QgdmFsaWQgc2VtdmVyICgnJHt2fScgcmVjZWl2ZWQpYCk7XG4gIH1cbiAgbWF0Y2guc2hpZnQoKTtcbiAgcmV0dXJuIG1hdGNoO1xufTtcblxuY29uc3QgaXNXaWxkY2FyZCA9IChzKSA9PiBzID09PSAnKicgfHwgcyA9PT0gJ3gnIHx8IHMgPT09ICdYJztcblxuY29uc3QgdHJ5UGFyc2UgPSAodikgPT4ge1xuICBjb25zdCBuID0gcGFyc2VJbnQodiwgMTApO1xuICByZXR1cm4gaXNOYU4obikgPyB2IDogbjtcbn07XG5cbmNvbnN0IGZvcmNlVHlwZSA9IChhLCBiKSA9PlxuICB0eXBlb2YgYSAhPT0gdHlwZW9mIGIgPyBbU3RyaW5nKGEpLCBTdHJpbmcoYildIDogW2EsIGJdO1xuXG5jb25zdCBjb21wYXJlU3RyaW5ncyA9IChhLCBiKSA9PiB7XG4gIGlmIChpc1dpbGRjYXJkKGEpIHx8IGlzV2lsZGNhcmQoYikpIHJldHVybiAwO1xuICBjb25zdCBbYXAsIGJwXSA9IGZvcmNlVHlwZSh0cnlQYXJzZShhKSwgdHJ5UGFyc2UoYikpO1xuICBpZiAoYXAgPiBicCkgcmV0dXJuIDE7XG4gIGlmIChhcCA8IGJwKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufTtcblxuY29uc3QgY29tcGFyZVNlZ21lbnRzID0gKGEsIGIpID0+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpOyBpKyspIHtcbiAgICBjb25zdCByID0gY29tcGFyZVN0cmluZ3MoYVtpXSB8fCAwLCBiW2ldIHx8IDApO1xuICAgIGlmIChyICE9PSAwKSByZXR1cm4gcjtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbmNvbnN0IG9wZXJhdG9yUmVzTWFwID0ge1xuICAnPic6IFsxXSxcbiAgJz49JzogWzAsIDFdLFxuICAnPSc6IFswXSxcbiAgJzw9JzogWy0xLCAwXSxcbiAgJzwnOiBbLTFdLFxufTtcblxuY29uc3QgYWxsb3dlZE9wZXJhdG9ycyA9IE9iamVjdC5rZXlzKG9wZXJhdG9yUmVzTWFwKTtcblxuY29uc3QgYXNzZXJ0VmFsaWRPcGVyYXRvciA9IChvcCkgPT4ge1xuICBpZiAodHlwZW9mIG9wICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgSW52YWxpZCBvcGVyYXRvciB0eXBlLCBleHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAke3R5cGVvZiBvcH1gXG4gICAgKTtcbiAgfVxuICBpZiAoYWxsb3dlZE9wZXJhdG9ycy5pbmRleE9mKG9wKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBvcGVyYXRvciwgZXhwZWN0ZWQgb25lIG9mICR7YWxsb3dlZE9wZXJhdG9ycy5qb2luKCd8Jyl9YFxuICAgICk7XG4gIH1cbn07XG4iLCAiaW1wb3J0IGNvbXBhcmVWZXJzaW9ucywgeyBjb21wYXJlLCBzYXRpc2ZpZXMgfSBmcm9tIFwiY29tcGFyZS12ZXJzaW9uc1wiO1xuaW1wb3J0IGVtb2ppIGZyb20gXCJub2RlLWVtb2ppXCI7XG5cbmltcG9ydCBQYWNrTWFuYWdlciBmcm9tIFwiLi4vaWNvbi1wYWNrcy9wYWNrLW1hbmFnZXJcIjtcbmltcG9ydCB7IEljb25EYXRhLCBJY29uSW5mbyB9IGZyb20gXCIuLi9pY29uLXBhY2tzL3R5cGVzXCI7XG5pbXBvcnQgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IHsgRW1vamlTdWdnZXN0ZXJNb2RhbCB9IGZyb20gXCIuLi9tb2R1bGVzL3N1Z2dlc3RlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBpbnRlcmZhY2UgSWNvblNDQVBJIHtcbiAgaGFzSWNvbjogKGlkOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpZCBhY2NlcHQgc2hvcnRjb2RlIHdpdGggY29sb25zXG4gICAqIEBwYXJhbSByYXcgaWYgdHJ1ZSwgcmV0dXJuIHN0cmluZyAoZW1vamkpIG9yIGRhdGEgdXJpL3Jlc291cmNlIHBhdGggaW5zdGVhZCBvZiBzcGFuIGVsZW1lbnRcbiAgICogQHJldHVybnMgc3RyaW5nIChlbW9qaSkgb3IgZGF0YSB1cmkvcmVzb3VyY2UgcGF0aCAoaWNvbnMpOyBudWxsIGlmIGdpdmVuIGlkIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0SWNvbihpZDogc3RyaW5nLCByYXc6IHRydWUpOiBzdHJpbmcgfCBudWxsO1xuICAvKipcbiAgICogQHBhcmFtIGlkIGFjY2VwdCBzaG9ydGNvZGUgd2l0aCBjb2xvbnNcbiAgICogQHBhcmFtIHJhdyBpZiB0cnVlLCByZXR1cm4gc3ZnIGRhdGEgdXJpIGluc3RlYWQgb2Ygc3BhbiBlbGVtZW50XG4gICAqIEByZXR1cm5zIHNwYW4gZWxlbWVudCBjb250YWluaW5nIHRoZSBpY29uIHN0cmluZyhlbW9qaSkgb3IgaW1nIGVsZW1lbnQ7IG51bGwgaWYgZ2l2ZW4gaWQgaXMgbm90IGZvdW5kXG4gICAqL1xuICBnZXRJY29uKGlkOiBzdHJpbmcsIHJhdz86IGZhbHNlKTogSFRNTFNwYW5FbGVtZW50IHwgbnVsbDtcblxuICAvKipcbiAgICogZ2V0IHJhdyBzdmcgY29udGVudCBvZiBpY29uIHdoZW4gYXZhaWxhYmxlXG4gICAqIEBwYXJhbSBpZCBhY2NlcHQgc2hvcnRjb2RlIHdpdGggY29sb25zXG4gICAqIEBwYXJhbSByYXcgaWYgdHJ1ZSwgcmV0dXJuIHN2ZyBjb250ZW50ICh3aGVuIGdpdmVuIHN2ZyBpY29uKSAvICBpbnN0ZWFkIG9mIHNwYW4gZWxlbWVudFxuICAgKiBAcmV0dXJucyBzdHJpbmcgKGVtb2ppKSBvciBzdmcgY29udGVudCAoc3ZnIGljb24pIG9yIHJlc291cmNlIHBhdGggKGJpdG1hcCBpY29uKTsgbnVsbCBpZiBnaXZlbiBpZCBpcyBub3QgZm91bmRcbiAgICovXG4gIGdldFNWR0ljb24oaWQ6IHN0cmluZywgcmF3OiB0cnVlKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgLyoqXG4gICAqIGdldCBpbmxpbmUgc3ZnIHZlcnNpb24gb2YgaWNvbiB3aGVuIGF2YWlsYWJsZVxuICAgKiBAcGFyYW0gaWQgYWNjZXB0IHNob3J0Y29kZSB3aXRoIGNvbG9uc1xuICAgKiBAcGFyYW0gcmF3IGlmIHRydWUsIHJldHVybiBzdHJpbmcgKGVtb2ppKSBvciBzdmcgY29udGVudCAoc3ZnIGljb24pIG9yIHJlc291cmNlIHBhdGggKGJpdG1hcCBpY29uKSBpbnN0ZWFkIG9mIHNwYW4gZWxlbWVudFxuICAgKiBAcmV0dXJucyBzcGFuIGVsZW1lbnQgY29udGFpbmluZyB0aGUgZW1vamkgc3RyaW5nIG9yIHN2ZyBlbGVtZW50IChzdmcgaWNvbikgb3IgaW1nIGVsZW1lbnQgKGJpdG1hcCBpY29uKTsgbnVsbCBpZiBnaXZlbiBpZCBpcyBub3QgZm91bmRcbiAgICovXG4gIGdldFNWR0ljb24oaWQ6IHN0cmluZywgcmF3PzogZmFsc2UpOiBQcm9taXNlPEhUTUxTcGFuRWxlbWVudCB8IG51bGw+O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gaWQgYWNjZXB0IHNob3J0Y29kZSB3aXRoIGNvbG9uc1xuICAgKiBAcmV0dXJucyBmdWxsIGRhdGEgKGluY2x1ZGluZyBjaGFyYWN0ZXIvcGF0aC9zdmcgY29udGVudCBkZXBlbmRpbmcgb24gc3BlY2lmaWMgdHlwZSkgYWJvdXQgaWNvblxuICAgKiBpZiBnaXZlbiBpZCBpcyBmb3VuZDsgbnVsbCBpZiBnaXZlbiBpZCBpcyBub3QgZm91bmRcbiAgICovXG4gIGdldEljb25EYXRhKGlkOiBzdHJpbmcpOiBJY29uRGF0YSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFByb21wdCB1c2VyIGZvciBpY29uLCBhdmFpbGFibGUgc2luY2UgdjAuNi4xXG4gICAqIEByZXR1cm5zIGljb24gaW5mbyBpbmNsdWRpbmcgaWQgaWYgdXNlciBjaG9vc2Ugb25lOyBudWxsIGlmIHVzZXIgY2FuY2VsXG4gICAqL1xuICBnZXRJY29uRnJvbVVzZXIoKTogUHJvbWlzZTxJY29uSW5mbyB8IG51bGw+O1xuXG4gIGlzRW1vamk6IChzdHI6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIHJlcGxhY2VyIHRha2VzIGEgdmFpbGQgYW5kIGV4aXN0aW5nIDpzaG9ydGNvZGU6IGFuZCByZXR1cm5zIGEgc3RyaW5nXG4gICAqL1xuICBwb3N0UHJvY2Vzc29yKGlucHV0OiBzdHJpbmcsIHJlcGxhY2VyOiAoc2hvcnRjb2RlOiBzdHJpbmcpID0+IHN0cmluZyk6IHN0cmluZztcbiAgcG9zdFByb2Nlc3NvcihpbnB1dDogSFRNTEVsZW1lbnQpOiB2b2lkO1xuXG4gIHZlcnNpb246IHtcbiAgICBjdXJyZW50OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQ29tcGFyZSBbc2VtdmVyXShodHRwczovL3NlbXZlci5vcmcvKSB2ZXJzaW9uIHN0cmluZ3MgdXNpbmcgdGhlIHNwZWNpZmllZCBvcGVyYXRvci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2ZXJUb0NvbXBhcmUgdmVyc2lvbiB0byBjb21wYXJlXG4gICAgICogQHBhcmFtIG9wZXJhdG9yIEFsbG93ZWQgYXJpdGhtZXRpYyBvcGVyYXRvciB0byB1c2VcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGNvbXBhcmlzb24gYmV0d2VlbiB0aGUgdmVyVG9Db21wYXJlIGFuZCB0aGUgY3VycmVudCB2ZXJzaW9uIHNhdGlzZmllcyB0aGUgb3BlcmF0b3IsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBjdXJyVmVyID0gJzEwLjEuMSc7XG4gICAgICogY29tcGFyZSgnPCcsICcxMC4yLjInKTsgLy8gcmV0dXJuIHRydWVcbiAgICAgKiBjb21wYXJlKCc8PScsICcxMC4yLjInKTsgLy8gcmV0dXJuIHRydWVcbiAgICAgKiBjb21wYXJlKCc+PScgJzEwLjIuMicpOyAvLyByZXR1cm4gZmFsc2VcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBjb21wYXJlKFxuICAgICAgb3BlcmF0b3I6IGNvbXBhcmVWZXJzaW9ucy5Db21wYXJlT3BlcmF0b3IsXG4gICAgICB2ZXJUb0NvbXBhcmU6IHN0cmluZyxcbiAgICApOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE1hdGNoIFtucG0gc2VtdmVyXShodHRwczovL2RvY3MubnBtanMuY29tL2NsaS92Ni91c2luZy1ucG0vc2VtdmVyKSB2ZXJzaW9uIHJhbmdlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJhbmdlIFJhbmdlIHBhdHRlcm4gZm9yIHZlcnNpb25cbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdmVyc2lvbiBudW1iZXIgaXMgd2l0aGluIHRoZSByYW5nZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGN1cnJWZXIgPSAnMS4xLjAnO1xuICAgICAqIHNhdGlzZmllcygnXjEuMC4wJyk7IC8vIHJldHVybiB0cnVlXG4gICAgICogc2F0aXNmaWVzKCd+MS4wLjAnKTsgLy8gcmV0dXJuIGZhbHNlXG4gICAgICogYGBgXG4gICAgICovXG4gICAgc2F0aXNmaWVzKHJhbmdlOiBzdHJpbmcpOiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgZXZ0UHJlZml4ID0gXCJpY29uc2M6XCIgYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQTUV2ZW50cyA9XG4gIHwgW25hbWU6IFwiY2hhbmdlZFwiLCBhcGk6IEljb25TQ0FQSSwgYWZmZWN0ZWQ/OiBzdHJpbmdbXV1cbiAgfCBbbmFtZTogXCJpbml0aWFsaXplZFwiLCBhcGk6IEljb25TQ0FQSV07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gTXVzdCB1c2UgdmFyLCBubyBjb25zdC9sZXRcbiAgdmFyIEljb25TQ0FQSXYwOiBJY29uU0NBUEkgfCB1bmRlZmluZWQ7XG59XG5leHBvcnQgdHlwZSBBUElfTkFNRSA9IFwiSWNvblNDQVBJdjBcIjtcblxuZXhwb3J0IGNvbnN0IGdldEFwaSA9IChcbiAgcGFja01hbmFnZXI6IFBhY2tNYW5hZ2VyLFxuICBwbHVnaW46IEljb25TQyxcbik6IEljb25TQ0FQSSA9PiAoe1xuICBoYXNJY29uOiBwYWNrTWFuYWdlci5oYXNJY29uLmJpbmQocGFja01hbmFnZXIpLFxuICBnZXRJY29uOiBwYWNrTWFuYWdlci5nZXRJY29uLmJpbmQocGFja01hbmFnZXIpLFxuICBnZXRJY29uRGF0YTogcGFja01hbmFnZXIuZ2V0SWNvbkRhdGEuYmluZChwYWNrTWFuYWdlciksXG4gIGdldFNWR0ljb246IHBhY2tNYW5hZ2VyLmdldFNWR0ljb24uYmluZChwYWNrTWFuYWdlciksXG4gIGdldEljb25Gcm9tVXNlcjogKCkgPT4gbmV3IEVtb2ppU3VnZ2VzdGVyTW9kYWwocGx1Z2luKS5vcGVuKCksXG4gIGlzRW1vamk6IGVtb2ppLmhhc0Vtb2ppLmJpbmQoZW1vamkpLFxuICBwb3N0UHJvY2Vzc29yOiBwbHVnaW4ucG9zdFByb2Nlc3Nvci5iaW5kKHBsdWdpbiksXG4gIHZlcnNpb246IHtcbiAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgIHJldHVybiBwbHVnaW4ubWFuaWZlc3QudmVyc2lvbjtcbiAgICB9LFxuICAgIGNvbXBhcmU6IChvcCwgdmVyKSA9PiBjb21wYXJlKHBsdWdpbi5tYW5pZmVzdC52ZXJzaW9uLCB2ZXIsIG9wKSxcbiAgICBzYXRpc2ZpZXM6IChyYW5nZSkgPT4gc2F0aXNmaWVzKHBsdWdpbi5tYW5pZmVzdC52ZXJzaW9uLCByYW5nZSksXG4gIH0sXG59KTtcbiIsICJpbXBvcnQgRnVzZSBmcm9tIFwiZnVzZS5qc1wiO1xuaW1wb3J0IHtcbiAgRWRpdG9yLFxuICBFZGl0b3JQb3NpdGlvbixcbiAgRWRpdG9yU3VnZ2VzdCxcbiAgRWRpdG9yU3VnZ2VzdENvbnRleHQsXG4gIEVkaXRvclN1Z2dlc3RUcmlnZ2VySW5mbyxcbiAgU3VnZ2VzdE1vZGFsLFxufSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IFBhY2tNYW5hZ2VyIGZyb20gXCIuLi9pY29uLXBhY2tzL3BhY2stbWFuYWdlclwiO1xuaW1wb3J0IHsgRnV6enlNYXRjaCwgSWNvbkluZm8gfSBmcm9tIFwiLi4vaWNvbi1wYWNrcy90eXBlc1wiO1xuaW1wb3J0IEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmltcG9ydCBVbmlvblJhbmdlcyBmcm9tIFwiLi91bmlvblwiO1xuXG5jb25zdCBDTEFTU19JRCA9IFwiaXNjXCI7XG5cbmludGVyZmFjZSBTdWdnZXN0ZXJCYXNlIHtcbiAgcGFja01hbmFnZXI6IFBhY2tNYW5hZ2VyO1xufVxuY29uc3QgZ2V0U3VnZ2VzdGlvbnMgPSAoaW5wdXQ6IHN0cmluZywgcGFja01hbmFnZXI6IFBhY2tNYW5hZ2VyKSA9PiB7XG4gIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIgJiYgaW5wdXQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFja01hbmFnZXIuc2VhcmNoKGlucHV0LnJlcGxhY2UoL15cXCt8XFwrJC9nLCBcIlwiKS5zcGxpdCgvWytdL2cpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFja01hbmFnZXIuZ2V0QWxsSWRzKCk7XG4gIH1cbn07XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnNcbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclN1Z2dlc3Rpb24oXG4gIHRoaXM6IFN1Z2dlc3RlckJhc2UsXG4gIHN1Z2dlc3Rpb246IEZ1enp5TWF0Y2g8SWNvbkluZm8+LFxuICBlbDogSFRNTEVsZW1lbnQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBpZCwgbmFtZSB9ID0gc3VnZ2VzdGlvbi5pdGVtLFxuICAgIHsgbWF0Y2hlcyB9ID0gc3VnZ2VzdGlvbixcbiAgICBpY29uRWwgPSBhd2FpdCB0aGlzLnBhY2tNYW5hZ2VyLmdldFNWR0ljb24oaWQpO1xuICBpZiAoIWljb25FbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZhaWxlZCB0byBnZXQgaWNvbiBmb3Iga2V5OiBcIiArIGlkKTtcblxuICBjb25zdCBzaG9ydGNvZGUgPSBlbDtcbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBjb25zdCBpbmRpY2VzID1cbiAgICAgIG1hdGNoZXMubGVuZ3RoID09PSAxXG4gICAgICAgID8gbWF0Y2hlc1swXS5rZXkgPT09IFwibmFtZVwiXG4gICAgICAgICAgPyBtYXRjaGVzWzBdLmluZGljZXNcbiAgICAgICAgICA6IFtdXG4gICAgICAgIDogVW5pb25SYW5nZXMoXG4gICAgICAgICAgICBtYXRjaGVzLmZsYXRNYXAoKG0pID0+IChtLmtleSA9PT0gXCJuYW1lXCIgPyBtLmluZGljZXMgOiBbXSkpLFxuICAgICAgICAgICk7XG4gICAgcmVuZGVyTWF0Y2hlcyhzaG9ydGNvZGUsIG5hbWUucmVwbGFjZSgvW18tXS9nLCBcIiBcIiksIGluZGljZXMpO1xuICB9IGVsc2Uge1xuICAgIHNob3J0Y29kZS5zZXRUZXh0KG5hbWUucmVwbGFjZSgvW18tXS9nLCBcIiBcIikpO1xuICB9XG4gIGVsLmNyZWF0ZVNwYW4oeyBjbHM6IGBzdWdnZXN0aW9uLWZsYWlyYCB9LCAoZWwpID0+IGVsLmFwcGVuZENoaWxkKGljb25FbCkpO1xufVxuXG5leHBvcnQgY2xhc3MgRW1vamlTdWdnZXN0ZXJNb2RhbFxuICBleHRlbmRzIFN1Z2dlc3RNb2RhbDxGdXp6eU1hdGNoPEljb25JbmZvPj5cbiAgaW1wbGVtZW50cyBTdWdnZXN0ZXJCYXNlXG57XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwbHVnaW46IEljb25TQykge1xuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICAgIHRoaXMubW9kYWxFbC5hZGRDbGFzcyhDTEFTU19JRCk7XG4gIH1cbiAgZ2V0IHBhY2tNYW5hZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5wYWNrTWFuYWdlcjtcbiAgfVxuXG4gIGdldFN1Z2dlc3Rpb25zKGlucHV0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnMoaW5wdXQsIHRoaXMucGFja01hbmFnZXIpO1xuICB9XG4gIHJlbmRlclN1Z2dlc3Rpb24gPSByZW5kZXJTdWdnZXN0aW9uO1xuXG4gIC8vIFByb21pc2lmeSB0aGUgbW9kYWxcbiAgcmVzb2x2ZTogKCh2YWx1ZTogSWNvbkluZm8gfCBudWxsKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBvcGVuKCk6IFByb21pc2U8SWNvbkluZm8gfCBudWxsPiB7XG4gICAgc3VwZXIub3BlbigpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgfVxuICBvbkNsb3NlKCkge1xuICAgIGlmICh0aGlzLnJlc29sdmUpIHtcbiAgICAgIHRoaXMucmVzb2x2ZShudWxsKTtcbiAgICAgIHRoaXMucmVzb2x2ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgb25DaG9vc2VTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IEZ1enp5TWF0Y2g8SWNvbkluZm8+KTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5sb2coc3VnZ2VzdGlvbik7XG4gIH1cbiAgc2VsZWN0U3VnZ2VzdGlvbihcbiAgICB2YWx1ZTogRnV6enlNYXRjaDxJY29uSW5mbz4gfCBudWxsLFxuICAgIGV2dDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmUpIHtcbiAgICAgIGlmICh2YWx1ZT8uaXRlbSkge1xuICAgICAgICB0aGlzLnJlc29sdmUodmFsdWUuaXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlc29sdmUobnVsbCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlc29sdmUgPSBudWxsO1xuICAgIH1cblxuICAgIHN1cGVyLnNlbGVjdFN1Z2dlc3Rpb24odmFsdWUgYXMgYW55LCBldnQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbW9qaVN1Z2dlc3RlclxuICBleHRlbmRzIEVkaXRvclN1Z2dlc3Q8RnV6enlNYXRjaDxJY29uSW5mbz4+XG4gIGltcGxlbWVudHMgU3VnZ2VzdGVyQmFzZVxue1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGx1Z2luOiBJY29uU0MpIHtcbiAgICBzdXBlcihwbHVnaW4uYXBwKTtcbiAgICB0aGlzLnN1Z2dlc3RFbC5hZGRDbGFzcyhDTEFTU19JRCk7XG4gIH1cblxuICBnZXQgcGFja01hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyO1xuICB9XG5cbiAgb25UcmlnZ2VyKFxuICAgIGN1cnNvcjogRWRpdG9yUG9zaXRpb24sXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICk6IEVkaXRvclN1Z2dlc3RUcmlnZ2VySW5mbyB8IG51bGwge1xuICAgIGlmICghdGhpcy5wbHVnaW4uc2V0dGluZ3Muc3VnZ2VzdGVyKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzdWIgPSBlZGl0b3IuZ2V0TGluZShjdXJzb3IubGluZSkuc3Vic3RyaW5nKDAsIGN1cnNvci5jaCk7XG4gICAgY29uc3QgdHJhaWxpbmdTcGFjZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRyaWdnZXJXaXRoVHJhaWxpbmdTcGFjZVxuICAgICAgPyBcIiBcIlxuICAgICAgOiBcIlwiO1xuICAgIGxldCBwYXR0ZXJuID0gU3RyaW5nLnJhd2AoPzoke3RyYWlsaW5nU3BhY2V9OnxcdUZGMUFcdUZGMUEpKFteOlxcc10rJClgO1xuICAgIGNvbnN0IG1hdGNoID0gc3ViLm1hdGNoKG5ldyBSZWdFeHAocGF0dGVybiwgXCJpXCIpKTtcbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBwcmV2U0MgPSAobWF0Y2guaW5wdXQgYXMgc3RyaW5nKVxuICAgICAgLnN1YnN0cmluZygwLCBtYXRjaC5pbmRleClcbiAgICAgIC5tYXRjaCgvOihbXlxcczpdKyQpLyk7XG4gICAgaWYgKHByZXZTQyAmJiB0aGlzLnBhY2tNYW5hZ2VyLmhhc0ljb24ocHJldlNDWzFdKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuZDogY3Vyc29yLFxuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgY2g6IG1hdGNoLmluZGV4IGFzIG51bWJlcixcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICB9LFxuICAgICAgcXVlcnk6IG1hdGNoWzFdLFxuICAgIH07XG4gIH1cblxuICBnZXRTdWdnZXN0aW9ucyhjb250ZXh0OiBFZGl0b3JTdWdnZXN0Q29udGV4dCkge1xuICAgIHJldHVybiBnZXRTdWdnZXN0aW9ucyhjb250ZXh0LnF1ZXJ5LCB0aGlzLnBhY2tNYW5hZ2VyKTtcbiAgfVxuXG4gIHJlbmRlclN1Z2dlc3Rpb24gPSByZW5kZXJTdWdnZXN0aW9uO1xuICBzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IEZ1enp5TWF0Y2g8SWNvbkluZm8+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHJldHVybjtcbiAgICBjb25zdCB7IGlkLCBwYWNrIH0gPSBzdWdnZXN0aW9uLml0ZW07XG4gICAgdGhpcy5jb250ZXh0LmVkaXRvci5yZXBsYWNlUmFuZ2UoXG4gICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2RlMmVtb2ppICYmIHBhY2sgPT09IFwiZW1vamlcIlxuICAgICAgICA/ICh0aGlzLnBhY2tNYW5hZ2VyLmdldEljb24oaWQsIHRydWUpIGFzIHN0cmluZylcbiAgICAgICAgOiBgOiR7aWR9OmAgKyAodGhpcy5wbHVnaW4uc2V0dGluZ3Muc3BhY2VBZnRlclNDID8gXCIgXCIgOiBcIlwiKSxcbiAgICAgIHRoaXMuY29udGV4dC5zdGFydCxcbiAgICAgIHRoaXMuY29udGV4dC5lbmQsXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCByZW5kZXJNYXRjaGVzID0gKFxuICBlbDogSFRNTEVsZW1lbnQsXG4gIHRleHQ6IHN0cmluZyxcbiAgaW5kaWNlcz86IHJlYWRvbmx5IEZ1c2UuUmFuZ2VUdXBsZVtdLFxuICBvZmZzZXQ/OiBudW1iZXIsXG4pID0+IHtcbiAgaWYgKGluZGljZXMpIHtcbiAgICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDA7XG4gICAgbGV0IHRleHRJbmRleCA9IDA7XG4gICAgZm9yIChcbiAgICAgIGxldCByYW5nZUluZGV4ID0gMDtcbiAgICAgIHJhbmdlSW5kZXggPCBpbmRpY2VzLmxlbmd0aCAmJiB0ZXh0SW5kZXggPCB0ZXh0Lmxlbmd0aDtcbiAgICAgIHJhbmdlSW5kZXgrK1xuICAgICkge1xuICAgICAgbGV0IHJhbmdlID0gaW5kaWNlc1tyYW5nZUluZGV4XSxcbiAgICAgICAgc3RhcnQgPSByYW5nZVswXSArIG9mZnNldCxcbiAgICAgICAgZW5kID0gcmFuZ2VbMV0gKyBvZmZzZXQgKyAxOyAvLyBwYXRjaCBmb3IgRnVzZS5SYW5nZVR1cGxlXG4gICAgICBpZiAoIShlbmQgPD0gMCkpIHtcbiAgICAgICAgaWYgKHN0YXJ0ID49IHRleHQubGVuZ3RoKSBicmVhaztcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwO1xuICAgICAgICBpZiAoc3RhcnQgIT09IHRleHRJbmRleClcbiAgICAgICAgICBlbC5hcHBlbmRUZXh0KHRleHQuc3Vic3RyaW5nKHRleHRJbmRleCwgc3RhcnQpKTtcbiAgICAgICAgZWwuY3JlYXRlU3Bhbih7XG4gICAgICAgICAgY2xzOiBcInN1Z2dlc3Rpb24taGlnaGxpZ2h0XCIsXG4gICAgICAgICAgdGV4dDogdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCksXG4gICAgICAgIH0pO1xuICAgICAgICB0ZXh0SW5kZXggPSBlbmQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRleHRJbmRleCA8IHRleHQubGVuZ3RoICYmIGVsLmFwcGVuZFRleHQodGV4dC5zdWJzdHJpbmcodGV4dEluZGV4KSk7XG4gIH0gZWxzZSBlbC5hcHBlbmRUZXh0KHRleHQpO1xufTtcbiIsICJpbXBvcnQgc3ZnMnVyaSBmcm9tIFwibWluaS1zdmctZGF0YS11cmlcIjtcbmltcG9ydCBlbW9qaUJ5TmFtZSBmcm9tIFwibm9kZS1lbW9qaS9saWIvZW1vamkuanNvblwiO1xuaW1wb3J0IHsgc2V0SWNvbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBMdWNpZGVJY29uLCBPYnNpZGlhbkljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcbmltcG9ydCB7IEJ1bHRpSW5JY29uRGF0YSBhcyBCdWx0aUluSWNvbkRhdGFUeXBlLCBJY29uSW5mbyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRDbHNGb3JJY29uIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3Qga2Fib2JUb1NuYWtlID0gKG5hbWU6IHN0cmluZykgPT4gbmFtZS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcblxuY29uc3QgTHVjaWRlUGFja05hbWUgPSBcImx1Y1wiLFxuICBPYnNpZGlhblBhY2tOYW1lID0gXCJvYnNcIjtcblxuZXhwb3J0IHR5cGUgU1ZHUGFja25hbWVzID0gdHlwZW9mIEx1Y2lkZVBhY2tOYW1lIHwgdHlwZW9mIE9ic2lkaWFuUGFja05hbWU7XG5cbmNvbnN0IHJlbW92ZUJ1bHRpSW5JY29uQXR0cnMgPSAoZWw6IEhUTUxFbGVtZW50KSA9PlxuICBbXCJjbGFzc1wiLCBcImhlaWdodFwiLCBcIndpZHRoXCJdLmZvckVhY2goKGspID0+XG4gICAgZWwuZmlyc3RFbGVtZW50Q2hpbGQ/LnJlbW92ZUF0dHJpYnV0ZShrKSxcbiAgKTtcbmNsYXNzIEJ1bHRpSW5JY29uRGF0YSBpbXBsZW1lbnRzIEJ1bHRpSW5JY29uRGF0YVR5cGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYnVsdGktaW5cIiBhcyBjb25zdDtcbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgLyoqIGljb24gc2hvcnRjb2RlICovXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFjazogc3RyaW5nLCBwcml2YXRlIG9ic2lkaWFuSWQ6IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IGthYm9iVG9TbmFrZShvYnNpZGlhbklkKTtcbiAgICB0aGlzLmlkID0gYCR7cGFja31fJHt0aGlzLm5hbWV9YDtcbiAgfVxuICBwdWJsaWMgZ2V0IGRhdGEoKSB7XG4gICAgY29uc3QgZWwgPSBjcmVhdGVEaXYoKTtcbiAgICBzZXRJY29uKFxuICAgICAgZWwsXG4gICAgICAodGhpcy5wYWNrID09PSBMdWNpZGVQYWNrTmFtZSA/IFwibHVjaWRlLVwiIDogXCJcIikgKyB0aGlzLm9ic2lkaWFuSWQsXG4gICAgKTtcbiAgICByZW1vdmVCdWx0aUluSWNvbkF0dHJzKGVsKTtcbiAgICBlbC5maXJzdEVsZW1lbnRDaGlsZD8uc2V0QXR0cmlidXRlKFwieG1sbnNcIiwgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiKTtcbiAgICByZXR1cm4gZWwuaW5uZXJIVE1MO1xuICB9XG4gIHB1YmxpYyBnZXQgZGF0YVVyaSgpIHtcbiAgICByZXR1cm4gc3ZnMnVyaSh0aGlzLmRhdGEpO1xuICB9XG4gIHB1YmxpYyBnZXRET00oc3ZnID0gdHJ1ZSk6IEhUTUxTcGFuRWxlbWVudCB7XG4gICAgY29uc3QgZWwgPSBjcmVhdGVTcGFuKHsgY2xzOiBnZXRDbHNGb3JJY29uKHRoaXMpIH0pO1xuICAgIGlmIChzdmcpIHtcbiAgICAgIGVsLmFkZENsYXNzKFwiaXNjLXN2Zy1pY29uXCIpO1xuICAgICAgc2V0SWNvbihcbiAgICAgICAgZWwsXG4gICAgICAgICh0aGlzLnBhY2sgPT09IEx1Y2lkZVBhY2tOYW1lID8gXCJsdWNpZGUtXCIgOiBcIlwiKSArIHRoaXMub2JzaWRpYW5JZCxcbiAgICAgICk7XG4gICAgICByZW1vdmVCdWx0aUluSWNvbkF0dHJzKGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuYWRkQ2xhc3MoXCJpc2MtaW1nLWljb25cIik7XG4gICAgICBlbC5jcmVhdGVFbChcImltZ1wiLCB7IGF0dHI6IHsgc3JjOiB0aGlzLmRhdGFVcmkgfSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGVsO1xuICB9XG59XG5cbmNvbnN0IEVNT0pJX1BBQ0tfTkFNRSA9IFwiZW1vamlcIjtcbmNvbnN0IGdldEJ1aWx0SW5zID0gKCk6IHtcbiAgcGFja3M6IFJlYWRvbmx5TWFwPHN0cmluZywgQnVsdGlJbkljb25EYXRhPjtcbiAgaWRzOiBSZWFkb25seUFycmF5PEljb25JbmZvPjtcbiAgcGFja25hbWVzOiBSZWFkb25seUFycmF5PHN0cmluZz47XG59ID0+IHtcbiAgbGV0IHBhY2tzID0gbmV3IE1hcDxzdHJpbmcsIEJ1bHRpSW5JY29uRGF0YT4oKSxcbiAgICBpZHMgPSBbXSBhcyBJY29uSW5mb1tdLFxuICAgIHBhY2tuYW1lcyA9IFtdIGFzIHN0cmluZ1tdO1xuXG4gIGZvciAoY29uc3QgW3BhY2ssIGljb25zXSBvZiBbXG4gICAgW09ic2lkaWFuUGFja05hbWUsIE9ic2lkaWFuSWNvbl0sXG4gICAgW0x1Y2lkZVBhY2tOYW1lLCBMdWNpZGVJY29uXSxcbiAgXSBhcyBjb25zdCkge1xuICAgIHBhY2tuYW1lcy5wdXNoKHBhY2spO1xuICAgIGZvciAoY29uc3Qgb2JzaWRpYW5JZCBvZiBpY29ucykge1xuICAgICAgY29uc3QgaWNvbiA9IG5ldyBCdWx0aUluSWNvbkRhdGEocGFjaywgb2JzaWRpYW5JZCk7XG4gICAgICBwYWNrcy5zZXQoaWNvbi5pZCwgaWNvbik7XG4gICAgICBpZHMucHVzaChpY29uKTtcbiAgICB9XG4gIH1cbiAgcGFja25hbWVzLnB1c2goRU1PSklfUEFDS19OQU1FKTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZW1vamlCeU5hbWUpKSB7XG4gICAgaWRzLnB1c2goeyBwYWNrOiBFTU9KSV9QQUNLX05BTUUsIGlkOiBrZXksIG5hbWU6IGtleSB9KTtcbiAgfVxuICByZXR1cm4geyBwYWNrcywgaWRzLCBwYWNrbmFtZXMgfTtcbn07XG5cbmNvbnN0IHJlc3VsdCA9IGdldEJ1aWx0SW5zKCk7XG5leHBvcnQgY29uc3QgQnVpbHRJblNWR0ljb25QYWNrcyA9IHJlc3VsdC5wYWNrcztcbmV4cG9ydCBjb25zdCBCdWlsdEluSWNvbklkcyA9IHJlc3VsdC5pZHM7XG5leHBvcnQgY29uc3QgQnVpbHRJbkljb25QYWNrbmFtZXMgPSByZXN1bHQucGFja25hbWVzO1xuIiwgImltcG9ydCBlbW9qaSBmcm9tIFwibm9kZS1lbW9qaVwiO1xuXG5pbXBvcnQgdHlwZSB7IEVtb2ppSWNvbkRhdGEgYXMgRW1vamlJY29uRGF0YVR5cGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0Q2xzRm9ySWNvbiB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtb2ppSWNvbkRhdGEgaW1wbGVtZW50cyBFbW9qaUljb25EYXRhVHlwZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHt9XG4gIHB1YmxpYyBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuICBwdWJsaWMgZ2V0IHBhY2soKSB7XG4gICAgcmV0dXJuIFwiZW1vamlcIiBhcyBjb25zdDtcbiAgfVxuICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiZW1vamlcIiBhcyBjb25zdDtcbiAgfVxuICBwdWJsaWMgZ2V0IGNoYXIoKSB7XG4gICAgcmV0dXJuIGVtb2ppLmdldCh0aGlzLm5hbWUpO1xuICB9XG5cbiAgc3RhdGljIGdldERhdGEobmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGVtb2ppLmhhc0Vtb2ppKG5hbWUpKSB7XG4gICAgICByZXR1cm4gbmV3IEVtb2ppSWNvbkRhdGEobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRET00oc3ZnID0gdHJ1ZSkge1xuICAgIHJldHVybiBjcmVhdGVTcGFuKHtcbiAgICAgIGNsczogW2dldENsc0Zvckljb24odGhpcyksIFwiaXNjLWNoYXItaWNvblwiXSxcbiAgICAgIHRleHQ6IHRoaXMuY2hhcixcbiAgICB9KTtcbiAgfVxufVxuIiwgImltcG9ydCB7IEZpbGVTeXN0ZW1BZGFwdGVyIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmltcG9ydCB7IEZpbGVJY29uRGF0YSBhcyBGaWxlSWNvbkRhdGFUeXBlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldENsc0Zvckljb24sIGdldFBhY2tuTmFtZUZyb21JZCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGVJY29uRGF0YSBpbXBsZW1lbnRzIEZpbGVJY29uRGF0YVR5cGUge1xuICBzdGF0aWMgZ2V0RGF0YShcbiAgICBpZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwbHVnaW46IEljb25TQyxcbiAgKTogRmlsZUljb25EYXRhIHwgbnVsbCB7XG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UGFja25OYW1lRnJvbUlkKGlkKTtcbiAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQucGFjayA9PT0gXCJlbW9qaVwiKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IEZpbGVJY29uRGF0YShpZCwgcmVzdWx0Lm5hbWUsIHJlc3VsdC5wYWNrLCBwYXRoLCBwbHVnaW4pO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImZpbGVcIiBhcyBjb25zdDtcbiAgfVxuICBwdWJsaWMgcGF0aDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pZDogc3RyaW5nLFxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIF9wYWNrOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHByaXZhdGUgcGx1Z2luOiBJY29uU0MsXG4gICkge1xuICAgIHRoaXMucGF0aCA9IHBhdGgudHJpbSgpO1xuICB9XG4gIHByaXZhdGUgZ2V0IHZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbi5hcHAudmF1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgZ2V0IHBhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhY2s7XG4gIH1cbiAgcHVibGljIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHB1YmxpYyBnZXQgZXh0KCkge1xuICAgIHJldHVybiBleHRuYW1lKHRoaXMucGF0aCk7XG4gIH1cbiAgcHVibGljIGdldCBmc1BhdGgoKSB7XG4gICAgaWYgKHRoaXMudmF1bHQuYWRhcHRlciBpbnN0YW5jZW9mIEZpbGVTeXN0ZW1BZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy52YXVsdC5hZGFwdGVyLmdldEZ1bGxQYXRoKHRoaXMucGF0aCk7XG4gICAgfSBlbHNlIHJldHVybiBudWxsO1xuICB9XG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VQYXRoKCkge1xuICAgIHJldHVybiB0aGlzLnZhdWx0LmFkYXB0ZXIuZ2V0UmVzb3VyY2VQYXRoKHRoaXMucGF0aCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU1ZHKCkge1xuICAgIHJldHVybiB0aGlzLmV4dCA9PT0gXCIuc3ZnXCI7XG4gIH1cbiAgcHVibGljIGdldERPTShzdmc6IHRydWUpOiBQcm9taXNlPEhUTUxTcGFuRWxlbWVudD47XG4gIHB1YmxpYyBnZXRET00oc3ZnOiBmYWxzZSk6IEhUTUxTcGFuRWxlbWVudDtcbiAgcHVibGljIGdldERPTShzdmcgPSB0cnVlKTogUHJvbWlzZTxIVE1MU3BhbkVsZW1lbnQ+IHwgSFRNTFNwYW5FbGVtZW50IHtcbiAgICBjb25zdCBlbCA9IGNyZWF0ZVNwYW4oeyBjbHM6IGdldENsc0Zvckljb24odGhpcykgfSk7XG4gICAgaWYgKHN2ZyAmJiB0aGlzLmlzU1ZHKSB7XG4gICAgICBlbC5hZGRDbGFzcyhcImlzYy1zdmctaWNvblwiKTtcbiAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzdmdFbCA9IGF3YWl0IHRoaXMucGx1Z2luLmZpbGVJY29uQ2FjaGUuZ2V0SWNvbih0aGlzLnBhdGgpO1xuICAgICAgICBpZiAoc3ZnRWwpIHtcbiAgICAgICAgICB0aGlzLmZpeEZpbGxDb2xvcihzdmdFbCk7XG4gICAgICAgICAgZWwuYXBwZW5kKHN2Z0VsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZmFpbGVkIHRvIGdldCBpY29uIGRhdGEgZm9yXCIsIHRoaXMucGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfSkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuYWRkQ2xhc3MoXCJpc2MtaW1nLWljb25cIik7XG4gICAgICBlbC5jcmVhdGVFbChcImltZ1wiLCB7IGF0dHI6IHsgc3JjOiB0aGlzLnJlc291cmNlUGF0aCB9IH0pO1xuICAgICAgcmV0dXJuIGVsO1xuICAgIH1cbiAgfVxuXG4gIGZpeEZpbGxDb2xvcihzdmc6IFNWR0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXBhY2tUb1BhdGNoLmluY2x1ZGVzKHRoaXMucGFjaykpIHJldHVybjtcbiAgICBmb3IgKGNvbnN0IHBhdGhFbCBvZiBzdmcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJwYXRoXCIpKSB7XG4gICAgICBpZiAoIXBhdGhFbC5oYXNBdHRyaWJ1dGUoXCJmaWxsXCIpKSB7XG4gICAgICAgIHBhdGhFbC5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwiY3VycmVudENvbG9yXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgcGFja1RvUGF0Y2ggPSBbXCJmYWJcIiwgXCJmYXJcIiwgXCJmYXNcIiwgXCJyaWZcIiwgXCJyaWxcIl07XG4iLCAiaW1wb3J0IEZ1c2UgZnJvbSBcImZ1c2UuanNcIjtcblxuaW50ZXJmYWNlIEljb25CYXNpY0luZm8ge1xuICBwYWNrOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSWNvbkluZm8gPSBGaWxlSWNvbkluZm8gfCBFbW9qaUljb25JbmZvIHwgQnVsdGlJbkljb25JbmZvO1xuZXhwb3J0IHR5cGUgSWNvbkRhdGEgPSBGaWxlSWNvbkRhdGEgfCBFbW9qaUljb25EYXRhIHwgQnVsdGlJbkljb25EYXRhO1xuXG50eXBlIHdpdGhJZCA9IHsgaWQ6IHN0cmluZyB9O1xuXG50eXBlIEVtb2ppSWNvbkluZm8gPSBJY29uQmFzaWNJbmZvICYgeyBwYWNrOiBcImVtb2ppXCIgfSAmIHdpdGhJZDtcbmV4cG9ydCB0eXBlIEVtb2ppSWNvbkRhdGEgPSBFbW9qaUljb25JbmZvICZcbiAgSWNvbkJhc2ljRGF0YSAmIHsgY2hhcjogc3RyaW5nOyB0eXBlOiBcImVtb2ppXCIgfTtcblxudHlwZSBGaWxlQmFzaWNJbmZvID0gSWNvbkJhc2ljSW5mbyAmIHtcbiAgLyoqIHBhdGggcmVsYXRpdmUgdG8gdmF1bHQgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKiogd2l0aCBkb3QgKi9cbiAgZXh0OiBzdHJpbmc7XG59O1xuXG50eXBlIEljb25CYXNpY0RhdGEgPSB7XG4gIGdldERPTShzdmc6IHRydWUpOiBIVE1MU3BhbkVsZW1lbnQgfCBQcm9taXNlPEhUTUxTcGFuRWxlbWVudD47XG4gIGdldERPTShzdmc/OiBmYWxzZSk6IEhUTUxTcGFuRWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbGVJY29uSW5mbyA9IEZpbGVCYXNpY0luZm8gJiB3aXRoSWQ7XG5leHBvcnQgdHlwZSBGaWxlSWNvbkRhdGEgPSBGaWxlQmFzaWNJbmZvICZcbiAgSWNvbkJhc2ljRGF0YSAmIHtcbiAgICAvKiogcmVhbCBwYXRoIGluIGZpbGUgc3lzdGVtLCBudWxsIGlmIG5vdCBpbiBEZXNrdG9wICovXG4gICAgZnNQYXRoOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiByZXNvdXJjZSBwYXRoIHRvIGljb24gZmlsZSAqL1xuICAgIHJlc291cmNlUGF0aDogc3RyaW5nO1xuICAgIHR5cGU6IFwiZmlsZVwiO1xuICAgIGlzU1ZHOiBib29sZWFuO1xuICB9O1xuZXhwb3J0IGNvbnN0IGlzRmlsZUljb25JbmZvID0gKGlkOiBJY29uSW5mbyk6IGlkIGlzIEZpbGVJY29uSW5mbyA9PlxuICAhIShpZCBhcyBGaWxlSWNvbkluZm8pLmV4dDtcblxuZXhwb3J0IHR5cGUgQnVsdGlJbkljb25JbmZvID0gSWNvbkJhc2ljSW5mbyAmIHdpdGhJZDtcbmV4cG9ydCB0eXBlIEJ1bHRpSW5JY29uRGF0YSA9IEljb25CYXNpY0luZm8gJlxuICBJY29uQmFzaWNEYXRhICYge1xuICAgIC8qKiBkYXRhIHVyaSBvZiBzdmcgaWNvbiAqL1xuICAgIGRhdGFVcmk6IHN0cmluZztcbiAgICAvKiogc3ZnIGljb24gcmF3IGNvbnRlbnQgKi9cbiAgICBkYXRhOiBzdHJpbmc7XG4gICAgdHlwZTogXCJidWx0aS1pblwiO1xuICB9O1xuXG5leHBvcnQgdHlwZSBGdXp6eU1hdGNoPFQ+ID0gRnVzZS5GdXNlUmVzdWx0PFQ+O1xuIiwgImltcG9ydCB7IE5vdGljZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IHsgY29uZmlybSB9IGZyb20gXCIuL2RpYWxvZ1wiO1xuXG5jb25zdCBqc29uVG9TdmcgPSBhc3luYyAocGx1Z2luOiBJY29uU0MpID0+IHtcbiAgY29uc3QgeyB2YXVsdCB9ID0gcGx1Z2luLmFwcDtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IHZhdWx0LnJlYWRKc29uKHBsdWdpbi5wYWNrTWFuYWdlci5jdXN0b21JY29uc0ZpbGVQYXRoKTtcbiAgbGV0IHBhdGggPSBwbHVnaW4ucGFja01hbmFnZXIuY3VzdG9tSWNvbnNEaXI7XG4gIGlmICghKGF3YWl0IHZhdWx0LmFkYXB0ZXIuZXhpc3RzKHBhdGgpKSkge1xuICAgIGF3YWl0IHZhdWx0LmFkYXB0ZXIubWtkaXIocGF0aCk7XG4gIH1cbiAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpLnJlZHVjZSgoYXJyLCBbaWQsIHN2Z10pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaWQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHN2ZyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGpvaW4ocGF0aCwgYCR7aWR9LnN2Z2ApO1xuICAgICAgICBhcnIucHVzaCh2YXVsdC5jcmVhdGUoZmlsZVBhdGgsIHN2ZykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycjtcbiAgICB9LCBbXSBhcyBQcm9taXNlPFRGaWxlPltdKSxcbiAgKTtcbn07XG5cbmNvbnN0IHRyeVVwZGF0ZUljb25zID0gYXN5bmMgKHBsdWdpbjogSWNvblNDKSA9PiB7XG4gIGlmIChcbiAgICAoYXdhaXQgcGx1Z2luLmFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhcbiAgICAgIHBsdWdpbi5wYWNrTWFuYWdlci5jdXN0b21JY29uc0ZpbGVQYXRoLFxuICAgICkpICYmXG4gICAgIXBsdWdpbi5zZXR0aW5ncy5pc01pZ3JhdGVkXG4gICkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgXCJGb3VuZCBjdXN0b20gaWNvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHVwZ3JhZGVkLCB1cGRhdGUgaWNvbnMgbm93P1wiO1xuICAgIGlmIChhd2FpdCBjb25maXJtKG1lc3NhZ2UsIHBsdWdpbi5hcHApKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBqc29uVG9TdmcocGx1Z2luKTtcbiAgICAgICAgcGx1Z2luLnNldHRpbmdzLmlzTWlncmF0ZWQgPSB0cnVlO1xuICAgICAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgICAgXCJJY29uIHVwZGF0ZSBjb21wbGV0ZSwgeW91IGNhbiBub3cgZmluZCBpY29uIGZpbGVzIGluIFwiICtcbiAgICAgICAgICAgIHBsdWdpbi5wYWNrTWFuYWdlci5jdXN0b21JY29uc0RpcixcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5ldyBOb3RpY2UoXCJGYWlsZWQgdG8gdXBkYXRlIGljb25zLCBjaGVjayBjb25zb2xlIGZvciBtb3JlIGRldGFpbHNcIik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJ5VXBkYXRlSWNvbnM7XG4iLCAiaW1wb3J0IHsgQXBwLCBNb2RhbCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG50eXBlIFByb21pc2VWYWw8VCA9IHZvaWQ+ID0gVCB8IFByb21pc2VMaWtlPFQ+O1xuXG5jbGFzcyBDb25maXJtTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG4gIGJ1dHRvbkNvbnRhaW5lckVsID0gdGhpcy5tb2RhbEVsLmNyZWF0ZURpdihcIm1vZGFsLWJ1dHRvbi1jb250YWluZXJcIik7XG4gIHByaXZhdGUgcmVzb2x2ZTogKCh2YWx1ZTogUHJvbWlzZVZhbDxib29sZWFuPikgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgY29uc3RydWN0b3IoYXBwOiBBcHApIHtcbiAgICBzdXBlcihhcHApO1xuICAgIHRoaXMuY29udGFpbmVyRWwuYWRkQ2xhc3MoXCJtb2QtY29uZmlybWF0aW9uXCIpO1xuICAgIHRoaXMuYWRkQnV0dG9uKFwibW9kLWN0YVwiLCBcIk9LXCIsICgpID0+IHRoaXMucmVzb2x2ZSAmJiB0aGlzLnJlc29sdmUodHJ1ZSkpO1xuICAgIHRoaXMuYWRkQ2FuY2VsQnV0dG9uKCk7XG4gIH1cbiAgb3BlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBzdXBlci5vcGVuKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiAodGhpcy5yZXNvbHZlID0gcmVzb2x2ZSkpO1xuICB9XG4gIGFkZEJ1dHRvbihcbiAgICBjbHM6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBjYWxsYmFjaz86IChldnQ6IE1vdXNlRXZlbnQpID0+IGFueSxcbiAgKSB7XG4gICAgdGhpcy5idXR0b25Db250YWluZXJFbFxuICAgICAgLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHsgY2xzLCB0ZXh0IH0pXG4gICAgICAuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGFzeW5jIChldnQpID0+IHtcbiAgICAgICAgY2FsbGJhY2sgJiYgKGF3YWl0IGNhbGxiYWNrKGV2dCkpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMucmVzb2x2ZSAmJiB0aGlzLnJlc29sdmUoZmFsc2UpO1xuICB9XG5cbiAgYWRkQ2FuY2VsQnV0dG9uKCkge1xuICAgIHJldHVybiB0aGlzLmFkZEJ1dHRvbihcIlwiLCBcIkNhbmNlbFwiLCB0aGlzLmNsb3NlLmJpbmQodGhpcykpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjb25maXJtID0gKG1lc3NhZ2U6IHN0cmluZyB8IERvY3VtZW50RnJhZ21lbnQsIGFwcDogQXBwKSA9PiB7XG4gIGNvbnN0IG1vZGFsID0gbmV3IENvbmZpcm1Nb2RhbChhcHApO1xuICBtb2RhbC5jb250ZW50RWwuc2V0VGV4dChtZXNzYWdlKTtcbiAgcmV0dXJuIG1vZGFsLm9wZW4oKTtcbn07XG4iLCAiaW1wb3J0IHsgTWFya2Rvd25Qb3N0UHJvY2Vzc29yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB0eXBlIEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcblxuY29uc3QgZ2V0Q2FsbG91dEljb25Qb3N0UHJvY2Vzc29yID1cbiAgKHBsdWdpbjogSWNvblNDKTogTWFya2Rvd25Qb3N0UHJvY2Vzc29yID0+XG4gIChlbCwgY3R4KSA9PiB7XG4gICAgZm9yIChjb25zdCBjYWxsb3V0RWwgb2YgZWwucXVlcnlTZWxlY3RvckFsbChcIi5jYWxsb3V0XCIpKSB7XG4gICAgICBjb25zdCBpY29uRWwgPSBjYWxsb3V0RWwucXVlcnlTZWxlY3RvcihcbiAgICAgICAgXCIuY2FsbG91dC10aXRsZSA+IC5jYWxsb3V0LWljb25cIixcbiAgICAgICkhIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihhc3luYyAobSkgPT4ge1xuICAgICAgICBpZiAoaWNvbkVsLmNoaWxkRWxlbWVudENvdW50ID4gMCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBpZCA9IGdldENzc1Byb3BlcnR5VmFsdWUoaWNvbkVsLCBcIi0tY2FsbG91dC1pY29uXCIpLFxuICAgICAgICAgIGljb24gPSBhd2FpdCBwbHVnaW4uYXBpLmdldFNWR0ljb24oaWQpO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybjtcbiAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICBpY29uRWwuY2xhc3NOYW1lICs9IFwiIFwiICsgaWNvbi5jbGFzc05hbWU7XG4gICAgICAgIGljb25FbC5yZXBsYWNlQ2hpbGRyZW4oLi4uaWNvbi5jaGlsZE5vZGVzKTtcbiAgICAgIH0pO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShpY29uRWwsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICAgIH1cbiAgfTtcbmV4cG9ydCBkZWZhdWx0IGdldENhbGxvdXRJY29uUG9zdFByb2Nlc3NvcjtcblxuY29uc3QgZ2V0Q3NzUHJvcGVydHlWYWx1ZSA9IChcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBwcm9wOiBzdHJpbmcsXG4gIHBzZXVkb0VsPzogc3RyaW5nIHwgbnVsbCxcbikgPT4gZ2V0Q29tcHV0ZWRTdHlsZShlbCwgcHNldWRvRWwpLmdldFByb3BlcnR5VmFsdWUocHJvcCkudHJpbSgpO1xuIiwgImltcG9ydCB7XG4gIGdldEdsb2JhbFJlZ2V4cCxcbiAgUkVfU0hPUlRDT0RFLFxuICBzdHJpcENvbG9ucyxcbn0gZnJvbSBcIi4uL2ljb24tcGFja3MvdXRpbHNcIjtcbmltcG9ydCBJY29uU0MgZnJvbSBcIi4uL2lzYy1tYWluXCI7XG5cbmNvbnN0IGFjY2VwdE5vZGUgPSAobm9kZTogTm9kZSk6IG51bWJlciA9PiB7XG4gIHN3aXRjaCAobm9kZS5ub2RlTmFtZSkge1xuICAgIGNhc2UgXCJDT0RFXCI6XG4gICAgY2FzZSBcIk1KWC1DT05UQUlORVJcIjpcbiAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgY2FzZSBcIiN0ZXh0XCI6IHtcbiAgICAgIGlmIChub2RlLm5vZGVWYWx1ZSAmJiBSRV9TSE9SVENPREUudGVzdChub2RlLm5vZGVWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDtcbiAgICAgIH0gZWxzZSByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfUkVKRUNUO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXROb2RlUG9zdFByb2Nlc3NvciA9IChcbiAgcGx1Z2luOiBJY29uU0MsXG4pOiAoKGVsOiBIVE1MRWxlbWVudCkgPT4gdm9pZCkgPT4ge1xuICBjb25zdCBzY1JlcGxhY2UgPSBhc3luYyAodGV4dDogVGV4dCkgPT4ge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBbXG4gICAgICAuLi50ZXh0Lndob2xlVGV4dC5tYXRjaEFsbChnZXRHbG9iYWxSZWdleHAoUkVfU0hPUlRDT0RFKSksXG4gICAgXVxuICAgICAgLnNvcnQoKGEsIGIpID0+IChiLmluZGV4IGFzIG51bWJlcikgLSAoYS5pbmRleCBhcyBudW1iZXIpKVxuICAgICAgLm1hcCgoYXJyKSA9PiAoeyB0ZXh0OiBhcnJbMF0sIGluZGV4OiBhcnIuaW5kZXghIH0pKSkge1xuICAgICAgYXdhaXQgaW5zZXJ0RWxUb1RleHQodGV4dCwgY29kZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBpbnNlcnRFbFRvVGV4dCA9IGFzeW5jIChcbiAgICB0ZXh0OiBUZXh0LFxuICAgIHsgdGV4dDogcGF0dGVybiwgaW5kZXggfTogeyB0ZXh0OiBzdHJpbmc7IGluZGV4OiBudW1iZXIgfSxcbiAgKSA9PiB7XG4gICAgY29uc3QgaWNvbiA9IGF3YWl0IHBsdWdpbi5wYWNrTWFuYWdlci5nZXRTVkdJY29uKHN0cmlwQ29sb25zKHBhdHRlcm4pKTtcbiAgICBpZiAoIWljb24pIHJldHVybiB0ZXh0O1xuICAgIGlmICh0eXBlb2YgaWNvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdGV4dC50ZXh0Q29udGVudCAmJlxuICAgICAgICAodGV4dC50ZXh0Q29udGVudCA9IHRleHQudGV4dENvbnRlbnQ/LnJlcGxhY2UocGF0dGVybiwgaWNvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0b1JlcGxhY2UgPSB0ZXh0LnNwbGl0VGV4dChpbmRleCk7XG4gICAgICB0b1JlcGxhY2UucGFyZW50RWxlbWVudD8uaW5zZXJ0QmVmb3JlKGljb24sIHRvUmVwbGFjZSk7XG4gICAgICB0b1JlcGxhY2UudGV4dENvbnRlbnQgPSB0b1JlcGxhY2Uud2hvbGVUZXh0LnN1YnN0cmluZyhwYXR0ZXJuLmxlbmd0aCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoZWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlbCwgTm9kZUZpbHRlci5TSE9XX0FMTCwge1xuICAgICAgYWNjZXB0Tm9kZSxcbiAgICB9KTtcbiAgICBsZXQgY3VycmVudE5vZGU6IE5vZGUgfCBudWxsID0gd2Fsa2VyLmN1cnJlbnROb2RlO1xuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgaWYgKGN1cnJlbnROb2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBjdXJyZW50Tm9kZSBhcyBUZXh0ICYgeyBfX1BFTkRJTkdfXz86IFByb21pc2U8YW55PiB9O1xuICAgICAgICAvLyBkb24ndCB3YWl0IGZvciBuZXcgbm9kZSB0byBiZSBpbnNlcnRlZFxuICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGxldCB0ZXh0Tm9kZXMgPSBbdGV4dF07XG4gICAgICAgICAgaWYgKHRleHQuX19QRU5ESU5HX18pIHtcbiAgICAgICAgICAgIC8vIHdhaXQgZm9yIHByZXZvdXMgcG9zdCBwcm9jZXNzb3IgdG8gZmluaXNoXG4gICAgICAgICAgICBhd2FpdCB0ZXh0Ll9fUEVORElOR19fO1xuICAgICAgICAgICAgLy8gcmVzY2FuIGZvciBuZXcgdGV4dCBub2Rlc1xuICAgICAgICAgICAgdGV4dE5vZGVzID0gWy4uLnRleHQucGFyZW50RWxlbWVudCEuY2hpbGROb2Rlc10uZmlsdGVyKFxuICAgICAgICAgICAgICAobik6IG4gaXMgVGV4dCA9PiBuIGluc3RhbmNlb2YgVGV4dCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHBlbmRpbmcgPSBQcm9taXNlLmFsbCh0ZXh0Tm9kZXMubWFwKHNjUmVwbGFjZSkpO1xuICAgICAgICAgIC8vIHNhdmUgcHJvbWlzZSB0byBfX1BFTkRJTkdfXyB0byBub3RpZnkgb3RoZXIgYXN5bmMgcG9zdCBwcm9jZXNzb3JcbiAgICAgICAgICB0ZXh0Ll9fUEVORElOR19fID0gcGVuZGluZztcbiAgICAgICAgICBhd2FpdCBwZW5kaW5nO1xuICAgICAgICAgIGRlbGV0ZSB0ZXh0Ll9fUEVORElOR19fO1xuICAgICAgICB9KSgpO1xuICAgICAgfVxuICAgICAgY3VycmVudE5vZGUgPSB3YWxrZXIubmV4dE5vZGUoKTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TURQb3N0UHJvY2Vzc29yID1cbiAgKHBsdWdpbjogSWNvblNDKSA9PiAoc3RyOiBzdHJpbmcsIHJlcGxhY2VyOiAoc2hvcnRjb2RlOiBzdHJpbmcpID0+IHN0cmluZykgPT5cbiAgICBzdHIucmVwbGFjZShnZXRHbG9iYWxSZWdleHAoUkVfU0hPUlRDT0RFKSwgKGNvZGUpID0+IHtcbiAgICAgIGlmIChwbHVnaW4ucGFja01hbmFnZXIuaGFzSWNvbihzdHJpcENvbG9ucyhjb2RlKSkpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2VyKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgICB9XG4gICAgfSk7XG4iLCAiaW1wb3J0IHR5cGUgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IGdldENhbGxvdXRJY29uUG9zdFByb2Nlc3NvciBmcm9tIFwiLi9jYWxsb3V0LWljb25cIjtcbmltcG9ydCB7IGdldE1EUG9zdFByb2Nlc3NvciwgZ2V0Tm9kZVBvc3RQcm9jZXNzb3IgfSBmcm9tIFwiLi90ZXh0XCI7XG5cbmNvbnN0IHNldHVwUG9zdFByb2Nlc3NvcnMgPSAocGx1Z2luOiBJY29uU0MpID0+IHtcbiAgcGx1Z2luLnJlZ2lzdGVyTWFya2Rvd25Qb3N0UHJvY2Vzc29yKHBsdWdpbi5fbm9kZVByb2Nlc3Nvcik7XG4gIHBsdWdpbi5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3NvcihnZXRDYWxsb3V0SWNvblBvc3RQcm9jZXNzb3IocGx1Z2luKSk7XG59O1xuXG5leHBvcnQgeyBnZXRNRFBvc3RQcm9jZXNzb3IsIGdldE5vZGVQb3N0UHJvY2Vzc29yLCBzZXR1cFBvc3RQcm9jZXNzb3JzIH07XG4iLCAiY2xhc3MgQmFzZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IGNsYXNzIE5vdFJlY2VpdmVGaWxlTGlzdCBleHRlbmRzIEJhc2VFcnJvciB7fVxuXG5leHBvcnQgY2xhc3MgVW5rbm93bkVycm9yIGV4dGVuZHMgQmFzZUVycm9yIHt9XG4iLCAiZXhwb3J0IGNvbnN0IGpvaW5BcnJheVN0cmluZyA9IChcbiAgYXJyOiBzdHJpbmdbXSxcbiAgc2VwYXJhdG9yOiBzdHJpbmcgPSAnLCdcbik6IHN0cmluZyA9PiBhcnIuam9pbihzZXBhcmF0b3IpXG4iLCAiaW1wb3J0IHsgVW5rbm93bkVycm9yLCBOb3RSZWNlaXZlRmlsZUxpc3QgfSBmcm9tICcuL2Vycm9yJ1xuaW1wb3J0IHsgam9pbkFycmF5U3RyaW5nIH0gZnJvbSAnLi91dGlsJ1xuY29uc3QgREVGQVVMVF9QQVJBTUVURVJTOiBQYXJhbWV0ZXJzID0ge1xuICBhY2NlcHQ6ICcqJyxcbiAgbXVsdGlwbGU6IGZhbHNlLFxuICBzdHJpY3Q6IGZhbHNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyczxcbiAgVCBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZSxcbiAgVSBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZVxuPiB7XG4gIGFjY2VwdDogc3RyaW5nIHwgc3RyaW5nW11cbiAgbXVsdGlwbGU6IFRcbiAgc3RyaWN0OiBVXG59XG5cbnR5cGUgUGlja0ZpbGU8XG4gIFQgZXh0ZW5kcyBib29sZWFuID0gZmFsc2UsXG4gIFUgZXh0ZW5kcyBib29sZWFuID0gZmFsc2Vcbj4gPSBUIGV4dGVuZHMgZmFsc2UgPyAoVSBleHRlbmRzIHRydWUgPyBGaWxlIDogRmlsZUxpc3QpIDogRmlsZUxpc3RcblxuLyoqXG4gKiBDYWxsIGZpbGUgc2VsZWN0IGRpYWxvZyBwcm9ncmFtbWF0aWNhbGx5LlxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbWV0ZXJzXSBvcHRpb25hbFxuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgPEZpbGUgfCBGaWxlTGlzdD4gaWYgc3RyaWN0IGlzIGZhbHNlLCByZXR1cm4gRmlsZUxpc3Qgb2JqZWN0LCBpZiBtdWx0aXBsZSBpcyBmYWxzZSBhbmQgc3RyaWN0IGlzIHRydWUgcmV0dXJuIEZpbGUgb2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBmaWxlRGlhbG9nID0gPFxuICBUIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlLFxuICBVIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlXG4+KFxuICBwYXJhbWV0ZXJzPzogUGFydGlhbDxQYXJhbWV0ZXJzPFQsIFU+PlxuKTogUHJvbWlzZTxQaWNrRmlsZTxULCBVPj4gPT4ge1xuICBjb25zdCB7IGFjY2VwdCwgbXVsdGlwbGUsIHN0cmljdCB9ID0geyAuLi5ERUZBVUxUX1BBUkFNRVRFUlMsIC4uLnBhcmFtZXRlcnMgfVxuICBjb25zdCBpbnB1dCA9IGNyZWF0ZUZpbGVJbnB1dEVsZW1lbnQoe1xuICAgIG11bHRpcGxlLFxuICAgIGFjY2VwdDogQXJyYXkuaXNBcnJheShhY2NlcHQpID8gam9pbkFycmF5U3RyaW5nKGFjY2VwdCkgOiBhY2NlcHRcbiAgfSlcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFBpY2tGaWxlPFQsIFU+PigocmVzb2x2ZSkgPT4ge1xuICAgIGlucHV0Lm9uY2hhbmdlID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZShyZXNvbHZlcihpbnB1dC5maWxlcywgbXVsdGlwbGUgYXMgVCwgc3RyaWN0IGFzIFUpKVxuICAgICAgaW5wdXQucmVtb3ZlKClcbiAgICB9XG4gICAgaW5wdXQuY2xpY2soKVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZXIgPSA8VCBleHRlbmRzIGJvb2xlYW4sIFUgZXh0ZW5kcyBib29sZWFuPihcbiAgZmlsZUxpc3Q6IEhUTUxJbnB1dEVsZW1lbnRbJ2ZpbGVzJ10sXG4gIG11bHRpcGxlOiBULFxuICBzdHJpY3Q6IFVcbikgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8UGlja0ZpbGU8VCwgVT4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoIWZpbGVMaXN0KSByZXR1cm4gcmVqZWN0KG5ldyBOb3RSZWNlaXZlRmlsZUxpc3QoKSlcbiAgICBjb25zdCBmaWxlID0gZ2V0RmlsZUxpc3RPYmooZmlsZUxpc3QsIG11bHRpcGxlLCBzdHJpY3QpXG4gICAgaWYgKCFmaWxlKSByZXR1cm4gcmVqZWN0KG5ldyBVbmtub3duRXJyb3IoKSlcblxuICAgIHJlc29sdmUoZmlsZSlcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZpbGVMaXN0T2JqID0gPFQgZXh0ZW5kcyBib29sZWFuLCBVIGV4dGVuZHMgYm9vbGVhbj4oXG4gIGZpbGVzOiBOb25OdWxsYWJsZTxIVE1MSW5wdXRFbGVtZW50WydmaWxlcyddPixcbiAgbXVsdGlwbGU6IFQsXG4gIHN0cmljdDogVVxuKTogUGlja0ZpbGU8VCwgVT4gfCBudWxsID0+IHtcbiAgaWYgKCFtdWx0aXBsZSAmJiBzdHJpY3QpIHtcbiAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gPFBpY2tGaWxlPFQsIFU+PmZpbGVzWzBdXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9IGVsc2UgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgIHJldHVybiA8UGlja0ZpbGU8VCwgVT4+ZmlsZXNcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVGaWxlSW5wdXRFbGVtZW50ID0gKHtcbiAgYWNjZXB0LFxuICBtdWx0aXBsZVxufTogUGljazxIVE1MSW5wdXRFbGVtZW50LCAnYWNjZXB0JyB8ICdtdWx0aXBsZSc+KTogSFRNTElucHV0RWxlbWVudCA9PiB7XG4gIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuICBpbnB1dC50eXBlID0gJ2ZpbGUnXG4gIGlucHV0Lm11bHRpcGxlID0gbXVsdGlwbGVcbiAgaW5wdXQuYWNjZXB0ID0gYWNjZXB0XG4gIHJldHVybiBpbnB1dFxufVxuIiwgImltcG9ydCBcInNldHRpbmdzLmxlc3NcIjtcbmltcG9ydCBcImludmFsaWQubGVzc1wiO1xuXG5pbXBvcnQgeyBmaWxlRGlhbG9nIH0gZnJvbSBcImZpbGUtc2VsZWN0LWRpYWxvZ1wiO1xuaW1wb3J0IHtcbiAgQXBwLFxuICBCdXR0b25Db21wb25lbnQsXG4gIE5vdGljZSxcbiAgUGxhdGZvcm0sXG4gIFBsdWdpblNldHRpbmdUYWIsXG4gIFNldHRpbmcsXG4gIFRleHRDb21wb25lbnQsXG59IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgQnJvd3NlclBhY2tzIGZyb20gXCIuL2NvbXBvbmVudC9icm93c2VyLXBhY2tzXCI7XG5pbXBvcnQgSWNvbk1hbmFnZXIgZnJvbSBcIi4vY29tcG9uZW50L2ljb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgQnVpbHRJbkljb25QYWNrbmFtZXMsIFNWR1BhY2tuYW1lcyB9IGZyb20gXCIuL2ljb24tcGFja3MvYnVpbHQtaW5zXCI7XG5pbXBvcnQgeyBTdXBwb3J0ZWRJY29uRXh0IH0gZnJvbSBcIi4vaWNvbi1wYWNrcy91dGlsc1wiO1xuaW1wb3J0IEljb25TQyBmcm9tIFwiLi9pc2MtbWFpblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEljb25TQ1NldHRpbmdzIHtcbiAgY29kZTJlbW9qaTogYm9vbGVhbjtcbiAgc3VnZ2VzdGVyOiBib29sZWFuO1xuICBkaXNhYmxlZFBhY2tzOiBTZXQ8c3RyaW5nPjtcbiAgc3BhY2VBZnRlclNDOiBib29sZWFuO1xuICB0cmlnZ2VyV2l0aFRyYWlsaW5nU3BhY2U6IGJvb2xlYW47XG4gIGlzTWlncmF0ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBJY29uU0NTZXR0aW5ncyA9IHtcbiAgY29kZTJlbW9qaTogdHJ1ZSxcbiAgc3VnZ2VzdGVyOiB0cnVlLFxuICBkaXNhYmxlZFBhY2tzOiBuZXcgU2V0KFtcIm9ic1wiXSksXG4gIHRyaWdnZXJXaXRoVHJhaWxpbmdTcGFjZTogZmFsc2UsXG4gIHNwYWNlQWZ0ZXJTQzogZmFsc2UsXG4gIGlzTWlncmF0ZWQ6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNsYXNzIEljb25TQ1NldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcGx1Z2luOiBJY29uU0M7XG5cbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogSWNvblNDKSB7XG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICB9XG5cbiAgZGlzcGxheSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuXG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpLnNldEhlYWRpbmcoKS5zZXROYW1lKFwiSWNvbiBTdWdnZXN0ZXJcIik7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgXCJJZiB0aGlzIGlzIHR1cm5lZCBvbiwgYSBTdWdnZXN0ZXIgd2lsbCBhcHBlYXIgZXZlcnl0aW1lIHlvdSB0eXBlIDoob3IgXHVGRjFBXHVGRjFBIGlmIGZ1bGwtd2lkdGgpIGZvbGxvd2VkIGJ5IGEgbGV0dGVyLiBUaGlzIHdpbGwgaGVscCB5b3UgaW5zZXJ0IEVtb2ppcy4gXCIsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKChjYikgPT4ge1xuICAgICAgICBjYi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zdWdnZXN0ZXIpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnN1Z2dlc3RlciA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJSZXBsYWNlIGVtb2ppIHNob3J0Y29kZSB3aXRoIGVtb2ppIGNoYXJhY3RlclwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiSWYgdGhpcyBpcyB0dXJuZWQgb24sIGVtb2ppIHNob3J0Y29kZXMgd2lsbCBiZSBpbW1lZGlhdGVseSByZXBsYWNlZCBieSBlbW9qaSBhZnRlciB0eXBpbmcuIFwiICtcbiAgICAgICAgICBcIk90aGVyd2lzZSB0aGV5IGFyZSBzdGlsbCBzdG9yZWQgYXMgYSBzaG9ydGNvZGUgYW5kIHlvdSBvbmx5IHNlZSB0aGUgRW1vamkgaW4gUHJldmlldyBNb2RlLlwiLFxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgoY2IpID0+IHtcbiAgICAgICAgY2Iuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29kZTJlbW9qaSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29kZTJlbW9qaSA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJUcmlnZ2VyIHdpdGggdHJhaWxpbmcgc3BhY2VcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIm9ubHkgdHJpZ2dlciBzdWdnZXN0ZXIgaWYgdGhlcmUgaXMgYSB0cmFpbGluZyBzcGFjZSBiZWZvcmUgdGhlIGNvbG9uXCIsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKChjYikgPT4ge1xuICAgICAgICBjYi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50cmlnZ2VyV2l0aFRyYWlsaW5nU3BhY2UpLm9uQ2hhbmdlKFxuICAgICAgICAgIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudHJpZ2dlcldpdGhUcmFpbGluZ1NwYWNlID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkFkZCBzcGFjZSBhZnRlciBpbnNlcnRlZCBzaG9ydGNvZGVcIilcbiAgICAgIC5hZGRUb2dnbGUoKGNiKSA9PiB7XG4gICAgICAgIGNiLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnNwYWNlQWZ0ZXJTQykub25DaGFuZ2UoXG4gICAgICAgICAgYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zcGFjZUFmdGVyU0MgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc2tpcEljb25QYWNrKCk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkljb24gUGFja3NcIilcbiAgICAgIC5zZXREZXNjKFwiQnJvd3NlIGFuZCBkb3dubG9hZCBpY29uIHBhY2tzXCIpXG4gICAgICAuYWRkQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRCdXR0b25UZXh0KFwiQnJvd3NlclwiKVxuICAgICAgICAgIC5vbkNsaWNrKCgpID0+IG5ldyBCcm93c2VyUGFja3ModGhpcy5wbHVnaW4pLm9wZW4oKSksXG4gICAgICApO1xuXG4gICAgLy8gY3VzdG9tIGljb24gbWFuYWdlIHNlY3Rpb25cbiAgICBjb25zdCBtYW5hZ2VyQ29udGFpbmVyID0gY3JlYXRlRGl2KHtcbiAgICAgIGNsczogW1wiaXNjLXNldHRpbmdzLWN1c3RvbS1pY29uXCIsIFwiaW5zdGFsbGVkLXBsdWdpbnMtY29udGFpbmVyXCJdLFxuICAgIH0pO1xuICAgIG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpXG4gICAgICAuc2V0SGVhZGluZygpXG4gICAgICAuc2V0TmFtZShcIkN1c3RvbSBJY29uc1wiKVxuICAgICAgLmFkZEV4dHJhQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRJY29uKFwic2hlZXRzLWluLWJveFwiKVxuICAgICAgICAgIC5zZXRUb29sdGlwKFwiQmFja3VwIGljb25zXCIpXG4gICAgICAgICAgLm9uQ2xpY2soKCkgPT4gdGhpcy5wbHVnaW4ucGFja01hbmFnZXIuYmFja3VwSWNvbnMoKSksXG4gICAgICApXG4gICAgICAuYWRkRXh0cmFCdXR0b24oKGJ0bikgPT5cbiAgICAgICAgYnRuXG4gICAgICAgICAgLnNldEljb24oXCJyZXN0b3JlLWZpbGUtZ2x5cGhcIilcbiAgICAgICAgICAuc2V0VG9vbHRpcChcIlJlc3RvcmUgYmFja3VwXCIpXG4gICAgICAgICAgLm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIuaW1wb3J0SWNvbnNGcm9tRmlsZUxpc3QoXG4gICAgICAgICAgICAgIGF3YWl0IGZpbGVEaWFsb2coeyBtdWx0aXBsZTogdHJ1ZSwgYWNjZXB0OiBcIi56aXBcIiB9KSxcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIubG9hZEljb25zKCk7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZUN1c3RvbUljb25zKG1hbmFnZXJDb250YWluZXIpO1xuICAgICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLmFkZEV4dHJhQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRJY29uKFwic3dpdGNoXCIpXG4gICAgICAgICAgLnNldFRvb2x0aXAoXCJSZWxvYWQgY3VzdG9tIGljb25zXCIpXG4gICAgICAgICAgLm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIubG9hZEljb25zKCk7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZUN1c3RvbUljb25zKG1hbmFnZXJDb250YWluZXIpO1xuICAgICAgICAgICAgbmV3IE5vdGljZShcIkN1c3RvbSBpY29ucyByZWxvYWRlZFwiKTtcbiAgICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC50aGVuKFxuICAgICAgICAocykgPT5cbiAgICAgICAgICBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHAgJiZcbiAgICAgICAgICBzLmFkZEV4dHJhQnV0dG9uKChidG4pID0+XG4gICAgICAgICAgICBidG5cbiAgICAgICAgICAgICAgLnNldEljb24oXCJmb2xkZXJcIilcbiAgICAgICAgICAgICAgLnNldFRvb2x0aXAoXCJPcGVuIEljb25zIEZvbGRlclwiKVxuICAgICAgICAgICAgICAub25DbGljaygoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwLm9wZW5XaXRoRGVmYXVsdEFwcChcbiAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmN1c3RvbUljb25zRGlyLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgdGhpcy5jb250YWluZXJFbC5hcHBlbmRDaGlsZChtYW5hZ2VyQ29udGFpbmVyKTtcbiAgICB0aGlzLm1hbmFnZUN1c3RvbUljb25zKG1hbmFnZXJDb250YWluZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGlzYWJsZWRQYWNrKHRhcmdldDogc3RyaW5nLCBzZXR0aW5nOiBTZXR0aW5nKSB7XG4gICAgcmV0dXJuIHNldHRpbmcuYWRkVG9nZ2xlKChjYikgPT4ge1xuICAgICAgY2Iuc2V0VmFsdWUoIXRoaXMucGx1Z2luLnNldHRpbmdzLmRpc2FibGVkUGFja3MuaGFzKHRhcmdldCkpLm9uQ2hhbmdlKFxuICAgICAgICBhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRpc2FibGVkUGFja3MuZGVsZXRlKHRhcmdldCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRpc2FibGVkUGFja3MuYWRkKHRhcmdldCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIGNiLnRvZ2dsZUVsLnNldEF0dHIoXCJhcmlhLWxhYmVsXCIsIGBFbmFibGUvRGlzYWJsZSAke3RhcmdldH0gSWNvbiBQYWNrYCk7XG4gICAgfSk7XG4gIH1cbiAgc2tpcEljb25QYWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBnZXRTZXR0aW5nID0gKFxuICAgICAgcGFjazogU1ZHUGFja25hbWVzLFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgZ2V0RGVzYz86IChlbDogRG9jdW1lbnRGcmFnbWVudCkgPT4gdm9pZCxcbiAgICApID0+XG4gICAgICB0aGlzLl9zZXREaXNhYmxlZFBhY2soXG4gICAgICAgIHBhY2ssXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKS5zZXROYW1lKG5hbWUpLnNldERlc2MoY3JlYXRlRnJhZ21lbnQoZ2V0RGVzYykpLFxuICAgICAgKTtcblxuICAgIG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpLnNldEhlYWRpbmcoKS5zZXROYW1lKFwiSWNvbiBQYWNrc1wiKTtcblxuICAgIGdldFNldHRpbmcoXCJsdWNcIiwgXCJMdWNpZGVcIiwgKGVsKSA9PlxuICAgICAgZWwuY3JlYXRlRWwoXCJhXCIsIHtcbiAgICAgICAgaHJlZjogXCJodHRwczovL2x1Y2lkZS5kZXZcIixcbiAgICAgICAgdGV4dDogXCJvZmZpY2lhbCB3ZWJzaXRlXCIsXG4gICAgICB9KSxcbiAgICApO1xuICAgIGdldFNldHRpbmcoXCJvYnNcIiwgXCJPYnNpZGlhbidzIGJ1aWx0LWluIGljb25zXCIsIChlbCkgPT5cbiAgICAgIGVsLmFwcGVuZFRleHQoXG4gICAgICAgIFwiT2JzaWRpYW4ncyBidWlsdC1pbiBpY29ucyBhcmUgbW9zdGx5IHVzZWQgZm9yIFVJIGNvbXBvbmVudHMuIFwiLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgbWFuYWdlQ3VzdG9tSWNvbnMoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKGNvbnRhaW5lckVsLmhhc0NoaWxkTm9kZXMoKSkgY29udGFpbmVyRWwuZW1wdHkoKTtcblxuICAgIGNvbnN0IGlzUGFja25hbWVJbnZhbGlkID0gKG5hbWU6IHN0cmluZykgPT5cbiAgICAgICEvXltBLVphLXowLTldKyQvLnRlc3QobmFtZSkgfHxcbiAgICAgIHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmlzUGFja25hbWVFeGlzdHMobmFtZSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkFkZCBuZXcgaWNvbiBwYWNrXCIpXG4gICAgICAuc2V0RGVzYyhcIlJlc2VydmVkIG5hbWVzOiBcIiArIEJ1aWx0SW5JY29uUGFja25hbWVzLmpvaW4oXCIsIFwiKSlcbiAgICAgIC50aGVuKChzKSA9PiB7XG4gICAgICAgIGxldCBidXR0b246IEJ1dHRvbkNvbXBvbmVudCB8IG51bGwgPSBudWxsLFxuICAgICAgICAgIGlucHV0OiBUZXh0Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIHMuYWRkVGV4dCgodHh0KSA9PiB7XG4gICAgICAgICAgdHh0XG4gICAgICAgICAgICAuc2V0UGxhY2Vob2xkZXIoXCJFbnRlciBuYW1lXCIpXG4gICAgICAgICAgICAub25DaGFuZ2UoKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNJbnZhbGlkID0gaXNQYWNrbmFtZUludmFsaWQobmFtZSk7XG4gICAgICAgICAgICAgIHR4dC5pbnB1dEVsLnRvZ2dsZUNsYXNzKFwiaW52YWxpZFwiLCAhIW5hbWUgJiYgaXNJbnZhbGlkKTtcbiAgICAgICAgICAgICAgYnV0dG9uPy5zZXREaXNhYmxlZChpc0ludmFsaWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCh0eHQpID0+IHR4dC5pbnB1dEVsLmFkZENsYXNzKFwiaXNjLWFkZC1wYWNrLWlucHV0XCIpKSxcbiAgICAgICAgICAgIChpbnB1dCA9IHR4dCk7XG4gICAgICAgIH0pLmFkZEJ1dHRvbihcbiAgICAgICAgICAoYnRuKSA9PiAoXG4gICAgICAgICAgICBidG5cbiAgICAgICAgICAgICAgLnNldEN0YSgpXG4gICAgICAgICAgICAgIC5zZXRJY29uKFwicGx1cy13aXRoLWNpcmNsZVwiKVxuICAgICAgICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFja05hbWUgPSBpbnB1dD8uZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhY2tOYW1lKSByZXR1cm47XG4gICAgICAgICAgICAgICAgaWYgKGlzUGFja25hbWVJbnZhbGlkKHBhY2tOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgbmV3IE5vdGljZShcIlRoaXMgbmFtZSBpcyBpbnZhbGlkLlwiKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5hZGROZXdDdXN0b21JY29uRW50cnkoXG4gICAgICAgICAgICAgICAgICBwYWNrTmFtZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsLFxuICAgICAgICAgICAgICAgICkuc2V0dGluZ0VsLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICAgICAgaW5wdXQ/LnNldFZhbHVlKFwiXCIpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIChidXR0b24gPSBidG4pXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4ucGFja01hbmFnZXIuY3VzdG9tUGFja25hbWVzLmZvckVhY2goKHBhY2spID0+XG4gICAgICB0aGlzLmFkZE5ld0N1c3RvbUljb25FbnRyeShwYWNrLCBjb250YWluZXJFbCksXG4gICAgKTtcbiAgfVxuICBhZGROZXdDdXN0b21JY29uRW50cnkocGFjazogc3RyaW5nLCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBzZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShwYWNrKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIGNyZWF0ZUZyYWdtZW50KChlbCkgPT4ge1xuICAgICAgICAgIGVsLmFwcGVuZFRleHQoXCJEcmFnIGZpbGVzIGluIHRvIGltcG9ydCBjdXN0b20gaWNvbnNcIik7XG4gICAgICAgICAgZWwuY3JlYXRlRWwoXCJiclwiKTtcbiAgICAgICAgICBlbC5hcHBlbmRUZXh0KFwiU3VwcG9ydGVkIGZvcm1hdDogXCIpO1xuICAgICAgICAgIFN1cHBvcnRlZEljb25FeHQuZm9yRWFjaCgoZXh0LCBpbmRleCwgYXJyKSA9PiB7XG4gICAgICAgICAgICBlbC5jcmVhdGVFbChcImNvZGVcIiwgeyB0ZXh0OiBleHQgfSk7XG4gICAgICAgICAgICBpZiAoYXJyLmxlbmd0aCAtIDEgIT09IGluZGV4KSBlbC5hcHBlbmRUZXh0KFwiLCBcIik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLmFkZEJ1dHRvbigoYnRuKSA9PlxuICAgICAgICBidG5cbiAgICAgICAgICAuc2V0SWNvbihcInNoZWV0cy1pbi1ib3hcIilcbiAgICAgICAgICAuc2V0VG9vbHRpcChcIkJhY2t1cCBpY29uc1wiKVxuICAgICAgICAgIC5vbkNsaWNrKCgpID0+IHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmJhY2t1cEljb25zKHBhY2spKSxcbiAgICAgIClcbiAgICAgIC5hZGRCdXR0b24oKGJ0bikgPT5cbiAgICAgICAgYnRuXG4gICAgICAgICAgLnNldEljb24oXCJnby10by1maWxlXCIpXG4gICAgICAgICAgLnNldFRvb2x0aXAoXCJzZWxlY3QgZmlsZXMgdG8gaW1wb3J0XCIpXG4gICAgICAgICAgLm9uQ2xpY2soYXN5bmMgKCkgPT5cbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmFkZEZyb21GaWxlcyhcbiAgICAgICAgICAgICAgcGFjayxcbiAgICAgICAgICAgICAgYXdhaXQgZmlsZURpYWxvZyh7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgYWNjZXB0OiBTdXBwb3J0ZWRJY29uRXh0IGFzIGFueSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICApXG4gICAgICAuYWRkQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRJY29uKFwidHJhc2hcIilcbiAgICAgICAgICAuc2V0VG9vbHRpcChcImRlbGV0ZVwiKVxuICAgICAgICAgIC5zZXRXYXJuaW5nKClcbiAgICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5wYWNrTWFuYWdlci5maWx0ZXIoKGssIHYpID0+IHYucGFjayAhPT0gcGFjayk7XG4gICAgICAgICAgICBjb250YWluZXJFbC5yZW1vdmVDaGlsZChzZXR0aW5nLnNldHRpbmdFbCk7XG4gICAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuYWRkQnV0dG9uKChidG4pID0+XG4gICAgICAgIGJ0blxuICAgICAgICAgIC5zZXRJY29uKFwicG9wdXAtb3BlblwiKVxuICAgICAgICAgIC5zZXRUb29sdGlwKFwibWFuYWdlIGljb25zXCIpXG4gICAgICAgICAgLnNldEN0YSgpXG4gICAgICAgICAgLm9uQ2xpY2soKCkgPT4gbmV3IEljb25NYW5hZ2VyKHRoaXMucGx1Z2luLCBwYWNrKS5vcGVuKCkpLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHMpID0+XG4gICAgICAgIHNldHVwRG5kKHMuc2V0dGluZ0VsLCBhc3luYyAoZXZ0KSA9PiB7XG4gICAgICAgICAgaWYgKCFldnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgICAgICBuZXcgTm90aWNlKFwiRmFpbGVkIHRvIGdldCBkcm9wcGVkIGl0ZW1zXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBsdWdpbi5wYWNrTWFuYWdlci5hZGRGcm9tRmlsZXMocGFjaywgZXZ0LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB0aGlzLl9zZXREaXNhYmxlZFBhY2socGFjaywgc2V0dGluZyk7XG4gICAgcmV0dXJuIHNldHRpbmc7XG4gIH1cbn1cblxuY29uc3Qgc2V0dXBEbmQgPSAoZWw6IEhUTUxFbGVtZW50LCBkcm9wcGVkSGFuZGxlcjogKGV2dDogRHJhZ0V2ZW50KSA9PiBhbnkpID0+IHtcbiAgY29uc3QgZHJhZ292ZXJDbGFzcyA9IFwiZHJhZ292ZXJcIjtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImRyYWdvdmVyXCIsIChldnQpID0+IHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAoZXZ0LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmFkZENsYXNzKGRyYWdvdmVyQ2xhc3MpO1xuICB9KTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImRyb3BcIiwgKGV2dCkgPT4ge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIChldnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkucmVtb3ZlQ2xhc3MoZHJhZ292ZXJDbGFzcyk7XG4gICAgZHJvcHBlZEhhbmRsZXIoZXZ0KTtcbiAgfSk7XG4gIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJkcmFnbGVhdmVcIiwgKGV2dCkgPT4ge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIChldnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkucmVtb3ZlQ2xhc3MoZHJhZ292ZXJDbGFzcyk7XG4gIH0pO1xufTtcbiIsICJpbXBvcnQgXCIuL2Jyb3dzZXItcGFja3MubGVzc1wiO1xuXG5pbXBvcnQgYXNzZXJ0TmV2ZXIgZnJvbSBcImFzc2VydC1uZXZlclwiO1xuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgTW9kYWwsIHJlcXVlc3RVcmwgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7XG4gIEZpQXdhcmQsXG4gIEZpRG93bmxvYWQsXG4gIEZpRXh0ZXJuYWxMaW5rLFxuICBGaUhvbWUsXG4gIEZpSW1hZ2UsXG59IGZyb20gXCJyZWFjdC1pY29ucy9maVwiO1xuXG5pbXBvcnQgSWNvblNDIGZyb20gXCIuLi9pc2MtbWFpblwiO1xuaW1wb3J0IHtcbiAgZ2V0SWNvblBhY2tCdW5kbGVVcmwsXG4gIGdldE1hbmlmZXN0VmlhQVBJLFxuICBJY29uUGFja01hbmlmZXN0UmF3LFxufSBmcm9tIFwiLi4vbW9kdWxlcy9pY29uLXBhY2tzXCI7XG5pbXBvcnQgTG9hZGluZyBmcm9tIFwiLi9sb2FkaW5nXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJQYWNrcyBleHRlbmRzIE1vZGFsIHtcbiAgY29uc3RydWN0b3IocHVibGljIHBsdWdpbjogSWNvblNDKSB7XG4gICAgc3VwZXIocGx1Z2luLmFwcCk7XG4gICAgdGhpcy5tb2RhbEVsLmFkZENsYXNzKFwibW9kLWJyb3dzZXItcGFja3NcIik7XG4gIH1cbiAgb25PcGVuKCk6IHZvaWQge1xuICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgIDxCcm93c2VyUGFja1ZpZXcgZ2V0SWNvblBhY2s9e3RoaXMuZ2V0SWNvblBhY2suYmluZCh0aGlzKX0gLz4sXG4gICAgICB0aGlzLmNvbnRlbnRFbCxcbiAgICApO1xuICB9XG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgUmVhY3RET00udW5tb3VudENvbXBvbmVudEF0Tm9kZSh0aGlzLmNvbnRlbnRFbCk7XG4gIH1cblxuICBhc3luYyBnZXRJY29uUGFjayhwYXRoOiBzdHJpbmcsIGJyYW5jaD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRvd25sb2FkID0gYXN5bmMgKGFsdCA9IGZhbHNlKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSBnZXRJY29uUGFja0J1bmRsZVVybChwYXRoLCBicmFuY2gsIGFsdCksXG4gICAgICAgIHppcCA9IChhd2FpdCByZXF1ZXN0VXJsKHsgdXJsIH0pKS5hcnJheUJ1ZmZlcjtcbiAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLmltcG9ydEljb25zKFxuICAgICAgICB7IG5hbWU6IHVybC5zcGxpdChcIi9cIikucG9wKCkhLCBkYXRhOiB6aXAgfSxcbiAgICAgICAgZmFsc2UsXG4gICAgICApO1xuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRvd25sb2FkKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJzd2l0Y2ggdG8gYWx0ZXJuYXRpdmUgbGlua1wiLCBlcnJvcik7XG4gICAgICBhd2FpdCBkb3dubG9hZCh0cnVlKTtcbiAgICB9XG4gIH1cbn1cblxudHlwZSBjb21tb25LZXlzID0gXCJzZXJpZXNcIiB8IFwiZGVzY3JpcHRpb25cIiB8IFwiaG9tZXBhZ2VcIiB8IFwibGljZW5zZVwiO1xudHlwZSBTdHlsZUluZm8gPSBPbWl0PEljb25QYWNrTWFuaWZlc3RSYXcsIGNvbW1vbktleXM+O1xudHlwZSBJY29uUGFja01hbmlmZXN0ID0gUGljazxJY29uUGFja01hbmlmZXN0UmF3LCBjb21tb25LZXlzPiAmXG4gIFJlY29yZDxcInN0eWxlc1wiLCBTdHlsZUluZm9bXT4gJlxuICBSZWNvcmQ8XCJjb3VudFwiLCBudW1iZXI+O1xuXG5jb25zdCBnZXRNYW5pZmVzdExpc3QgPSBhc3luYyAoXG4gIGJyYW5jaCA9IFwibWFzdGVyXCIsXG4pOiBQcm9taXNlPEljb25QYWNrTWFuaWZlc3RbXT4gPT4ge1xuICBjb25zdCByYXdMaXN0ID0gKGF3YWl0IGdldE1hbmlmZXN0VmlhQVBJKGJyYW5jaCkpIGFzIEljb25QYWNrTWFuaWZlc3RSYXdbXTtcbiAgbGV0IGxpc3Q6IEljb25QYWNrTWFuaWZlc3RbXSA9IFtdO1xuICBmb3IgKGNvbnN0IG1hbmlmZXN0IG9mIHJhd0xpc3QpIHtcbiAgICBsZXQgbGFzdCA9IGxpc3QubGFzdCgpO1xuICAgIGlmIChsYXN0Py5zZXJpZXMgPT09IG1hbmlmZXN0LnNlcmllcykge1xuICAgICAgbGFzdC5zdHlsZXMucHVzaChtYW5pZmVzdCk7XG4gICAgICBsYXN0LmNvdW50ICs9IG1hbmlmZXN0LmNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnB1c2goe1xuICAgICAgICBob21lcGFnZTogbWFuaWZlc3QuaG9tZXBhZ2UsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtYW5pZmVzdC5kZXNjcmlwdGlvbixcbiAgICAgICAgc2VyaWVzOiBtYW5pZmVzdC5zZXJpZXMsXG4gICAgICAgIGxpY2Vuc2U6IG1hbmlmZXN0LmxpY2Vuc2UsXG4gICAgICAgIHN0eWxlczogW21hbmlmZXN0XSxcbiAgICAgICAgY291bnQ6IG1hbmlmZXN0LmNvdW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufTtcblxuY29uc3QgQnJvd3NlclBhY2tWaWV3ID0gKHtcbiAgZ2V0SWNvblBhY2ssXG59OiB7XG4gIGdldEljb25QYWNrOiAocGF0aDogc3RyaW5nLCBicmFuY2g/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG59KSA9PiB7XG4gIGNvbnN0IFttYW5pZmVzdExpc3QsIHNldE1hbmlmZXN0TGlzdF0gPSB1c2VTdGF0ZTxcbiAgICBJY29uUGFja01hbmlmZXN0W10gfCBudWxsIHwgRXJyb3JcbiAgPihudWxsKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBnZXRNYW5pZmVzdExpc3QoKS50aGVuKHNldE1hbmlmZXN0TGlzdCkuY2F0Y2goc2V0TWFuaWZlc3RMaXN0KTtcbiAgfSwgW10pO1xuICBpZiAobWFuaWZlc3RMaXN0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9hZGluZ1wiPlxuICAgICAgICA8TG9hZGluZyB0eXBlPVwic3BpblwiIGNsYXNzTmFtZT1cImxvYWRpbmctaW5kaWNhdG9yXCIgLz5cbiAgICAgICAgPGRpdj5Mb2FkaW5nIEljb24gUGFjayBMaXN0Li4uPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobWFuaWZlc3RMaXN0KSkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb24tcGFjay1saXN0XCI+XG4gICAgICAgIHttYW5pZmVzdExpc3QubWFwKChtYW5pZmVzdCkgPT4gKFxuICAgICAgICAgIDxJY29uUGFja01hbmlmZXN0XG4gICAgICAgICAgICBrZXk9e21hbmlmZXN0LmhvbWVwYWdlfVxuICAgICAgICAgICAgbWFuaWZlc3Q9e21hbmlmZXN0fVxuICAgICAgICAgICAgb25Eb3dubG9hZD17KHBhdGgpID0+IGdldEljb25QYWNrKHBhdGgpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKG1hbmlmZXN0TGlzdCk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXJyb3JcIj5cbiAgICAgICAgRmFpbGVkIHRvIExvYWQgSWNvbiBQYWNrIExpc3Q6XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kLXdhcm5pbmdcIj5cbiAgICAgICAgICB7bWFuaWZlc3RMaXN0Lm1lc3NhZ2UgPz8gbWFuaWZlc3RMaXN0LnRvU3RyaW5nKCl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufTtcblxuaW50ZXJmYWNlIE1hbmlmZXN0RXJyb3JTdGF0ZSB7XG4gIHN0YXRlOiBcImVycm9yXCI7XG4gIGVycm9yOiB1bmtub3duO1xufVxudHlwZSBNYW5pZmVzdFN0YXRlID1cbiAgfCBNYW5pZmVzdEVycm9yU3RhdGVcbiAgfCBSZWNvcmQ8XCJzdGF0ZVwiLCBcImRpc3BsYXlcIiB8IFwiZG93bmxvYWRpbmdcIiB8IFwiZG9uZVwiPjtcblxuY29uc3QgUGFja01hbmlmZXN0Q2xhc3MgPSBcInBhY2stbWFuaWZlc3RcIjtcbmNvbnN0IEljb25QYWNrTWFuaWZlc3QgPSAoe1xuICBtYW5pZmVzdDogeyBzZXJpZXMsIHN0eWxlcywgZGVzY3JpcHRpb24sIGNvdW50LCBob21lcGFnZSwgbGljZW5zZSB9LFxuICBvbkRvd25sb2FkLFxufToge1xuICBtYW5pZmVzdDogSWNvblBhY2tNYW5pZmVzdDtcbiAgb25Eb3dubG9hZDogKHBhdGg6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbn0pID0+IHtcbiAgY29uc3QgZ2V0U3ViQ2xhc3MgPSB1c2VDYWxsYmFjayhcbiAgICAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IGAke1BhY2tNYW5pZmVzdENsYXNzfS0ke2NsYXNzTmFtZX1gLFxuICAgIFtdLFxuICApO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtQYWNrTWFuaWZlc3RDbGFzc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0U3ViQ2xhc3MoXCJ0aXRsZVwiKX0+e3Nlcmllc308L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdWJDbGFzcyhcImRldGFpbHNcIil9PlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0U3ViQ2xhc3MoXCJsaWNlbnNlXCIpfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e1wiTGljZW5zZTogXCIgKyBsaWNlbnNlfVxuICAgICAgICA+XG4gICAgICAgICAgPEZpQXdhcmQgc2l6ZT1cIjAuOWVtXCIgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0U3ViQ2xhc3MoXCJjb3VudFwiKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPXtgJHtjb3VudH0gaWNvbnMgaW4gdG90YWxgfVxuICAgICAgICA+XG4gICAgICAgICAgPEZpSW1hZ2Ugc2l6ZT1cIjAuOWVtXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e1wiaWNvbi10ZXh0XCJ9Pntjb3VudH08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwiZGVzY1wiKX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwiaG9tZXBhZ2VcIil9XG4gICAgICAgICAgYXJpYS1sYWJlbD17aG9tZXBhZ2V9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gd2luZG93Lm9wZW4oaG9tZXBhZ2UpfVxuICAgICAgICA+XG4gICAgICAgICAgPEZpSG9tZSAvPlxuICAgICAgICAgIDxhIGNsYXNzTmFtZT17XCJpY29uLXRleHRcIn0+SG9tZSBQYWdlPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2Rlc2NyaXB0aW9ufVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0eWxlcy1saXN0XCI+XG4gICAgICAgIHtzdHlsZXMubWFwKChzdHlsZSkgPT4gKFxuICAgICAgICAgIDxJY29uUGFja1N0eWxlXG4gICAgICAgICAgICBrZXk9e3N0eWxlLmJ1bmRsZU5hbWV9XG4gICAgICAgICAgICBzdHlsZUluZm89e3N0eWxlfVxuICAgICAgICAgICAgb25Eb3dubG9hZD17b25Eb3dubG9hZH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgU3R5bGVJbmZvQ2xhc3MgPSBcInN0eWxlLWluZm9cIixcbiAgZ2V0U3R5bGVJbmZvQ2xhc3MgPSAoLi4uY2xhc3Nlczogc3RyaW5nW10pID0+IGNscyhTdHlsZUluZm9DbGFzcywgLi4uY2xhc3Nlcyk7XG5jb25zdCBJY29uUGFja1N0eWxlID0gKHtcbiAgc3R5bGVJbmZvOiB7IGNvdW50LCBwYWNrSWQsIHBhdGgsIHN0eWxlIH0sXG4gIG9uRG93bmxvYWQsXG59OiB7XG4gIHN0eWxlSW5mbzogU3R5bGVJbmZvO1xuICBvbkRvd25sb2FkOiAocGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xufSkgPT4ge1xuICBjb25zdCBnZXRTdWJDbGFzcyA9IHVzZUNhbGxiYWNrKFxuICAgIChjbGFzc05hbWU6IHN0cmluZykgPT4gYCR7U3R5bGVJbmZvQ2xhc3N9LSR7Y2xhc3NOYW1lfWAsXG4gICAgW10sXG4gICk7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGU8TWFuaWZlc3RTdGF0ZT4oeyBzdGF0ZTogXCJkaXNwbGF5XCIgfSk7XG4gIHN3aXRjaCAoc3RhdGUuc3RhdGUpIHtcbiAgICBjYXNlIFwiZGlzcGxheVwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldFN0eWxlSW5mb0NsYXNzKCl9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdWJDbGFzcyhcInRpdGxlXCIpfT5cbiAgICAgICAgICAgIHtzdHlsZSA/IHN0eWxlIDogXCJyZWd1bGFyXCJ9XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwicGFjay1pZFwiKX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlBhY2sgaWQgdXNlZCBhcyBzaG9ydGNvZGUgcHJlZml4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3BhY2tJZH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdWJDbGFzcyhcImRldGFpbHNcIil9PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwiY291bnRcIil9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2Ake2NvdW50fSBpY29ucyBpbiB0b3RhbGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxGaUltYWdlIHNpemU9XCIwLjllbVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17XCJpY29uLXRleHRcIn0+e2NvdW50fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdWJDbGFzcyhcImJ1dHRvbi1jb250YWluZXJcIil9PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldFN1YkNsYXNzKFwiZG93bmxvYWRcIil9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2FzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXRlOiBcImRvd25sb2FkaW5nXCIgfSk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IG9uRG93bmxvYWQocGF0aCk7XG4gICAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXRlOiBcImRvbmVcIiB9KTtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZG9uZVwiKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXRlOiBcImVycm9yXCIsIGVycm9yIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRvd25sb2FkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEZpRG93bmxvYWQgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRG93bmxvYWQgdmlhIEJyb3dzZXJcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB3aW5kb3cub3BlbihnZXRJY29uUGFja0J1bmRsZVVybChwYXRoKSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxGaUV4dGVybmFsTGluayAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICBjYXNlIFwiZG93bmxvYWRpbmdcIjpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdHlsZUluZm9DbGFzcyhcImRvd25sb2FkaW5nXCIpfT5cbiAgICAgICAgICA8TG9hZGluZyB0eXBlPVwiYnViYmxlc1wiIGNsYXNzTmFtZT1cImxvYWRpbmctaW5kaWNhdG9yXCIgLz5cbiAgICAgICAgICA8ZGl2PkRvd25sb2FkaW5nLi4uPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICBjYXNlIFwiZG9uZVwiOlxuICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtnZXRTdHlsZUluZm9DbGFzcyhcImRvbmVcIil9PkRvd25sb2FkZWQ8L2Rpdj47XG4gICAgY2FzZSBcImVycm9yXCI6XG4gICAgICBjb25zb2xlLmVycm9yKHN0YXRlLmVycm9yKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRTdHlsZUluZm9DbGFzcyhcImVycm9yXCIpfT5cbiAgICAgICAgICBGYWlsZWQgdG8gRG93bmxvYWQ6XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2Qtd2FybmluZ1wiPlxuICAgICAgICAgICAge3N0YXRlLmVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgPyBzdGF0ZS5lcnJvci5tZXNzYWdlXG4gICAgICAgICAgICAgIDogKHN0YXRlLmVycm9yIGFzIGFueSk/LnRvU3RyaW5nKCl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgYXNzZXJ0TmV2ZXIoc3RhdGUpO1xuICB9XG59O1xuIiwgImV4cG9ydCBjb25zdCBFTVBUWV9PQkogPSB7fTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUlIgPSBbXTtcbmV4cG9ydCBjb25zdCBJU19OT05fRElNRU5TSU9OQUwgPSAvYWNpdHxleCg/OnN8Z3xufHB8JCl8cnBofGdyaWR8b3dzfG1uY3xudHd8aW5lW2NoXXx6b298Xm9yZHxpdGVyYS9pO1xuIiwgImltcG9ydCB7IEVNUFRZX0FSUiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEFzc2lnbiBwcm9wZXJ0aWVzIGZyb20gYHByb3BzYCB0byBgb2JqYFxuICogQHRlbXBsYXRlIE8sIFAgVGhlIG9iaiBhbmQgcHJvcHMgdHlwZXNcbiAqIEBwYXJhbSB7T30gb2JqIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvXG4gKiBAcGFyYW0ge1B9IHByb3BzIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEByZXR1cm5zIHtPICYgUH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIHByb3BzKSB7XG5cdC8vIEB0cy1pZ25vcmUgV2UgY2hhbmdlIHRoZSB0eXBlIG9mIGBvYmpgIHRvIGJlIGBPICYgUGBcblx0Zm9yIChsZXQgaSBpbiBwcm9wcykgb2JqW2ldID0gcHJvcHNbaV07XG5cdHJldHVybiAvKiogQHR5cGUge08gJiBQfSAqLyAob2JqKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBjaGlsZCBub2RlIGZyb20gaXRzIHBhcmVudCBpZiBhdHRhY2hlZC4gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yXG4gKiBJRTExIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBgRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlKClgLiBVc2luZyB0aGlzIGZ1bmN0aW9uXG4gKiBpcyBzbWFsbGVyIHRoYW4gaW5jbHVkaW5nIGEgZGVkaWNhdGVkIHBvbHlmaWxsLlxuICogQHBhcmFtIHtOb2RlfSBub2RlIFRoZSBub2RlIHRvIHJlbW92ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTm9kZShub2RlKSB7XG5cdGxldCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuXHRpZiAocGFyZW50Tm9kZSkgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNsaWNlID0gRU1QVFlfQVJSLnNsaWNlO1xuIiwgImltcG9ydCB7IF9jYXRjaEVycm9yIH0gZnJvbSAnLi9kaWZmL2NhdGNoLWVycm9yJztcblxuLyoqXG4gKiBUaGUgYG9wdGlvbmAgb2JqZWN0IGNhbiBwb3RlbnRpYWxseSBjb250YWluIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICogdGhhdCBhcmUgY2FsbGVkIGR1cmluZyB2YXJpb3VzIHN0YWdlcyBvZiBvdXIgcmVuZGVyZXIuIFRoaXMgaXMgdGhlXG4gKiBmb3VuZGF0aW9uIG9uIHdoaWNoIGFsbCBvdXIgYWRkb25zIGxpa2UgYHByZWFjdC9kZWJ1Z2AsIGBwcmVhY3QvY29tcGF0YCxcbiAqIGFuZCBgcHJlYWN0L2hvb2tzYCBhcmUgYmFzZWQgb24uIFNlZSB0aGUgYE9wdGlvbnNgIHR5cGUgaW4gYGludGVybmFsLmQudHNgXG4gKiBmb3IgYSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbiBob29rcyAobW9zdCBlZGl0b3JzL0lERXMgYWxsb3cgeW91IHRvXG4gKiBjdHJsK2NsaWNrIG9yIGNtZCtjbGljayBvbiBtYWMgdGhlIHR5cGUgZGVmaW5pdGlvbiBiZWxvdykuXG4gKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuT3B0aW9uc31cbiAqL1xuY29uc3Qgb3B0aW9ucyA9IHtcblx0X2NhdGNoRXJyb3Jcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9wdGlvbnM7XG4iLCAiaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi9vcHRpb25zJztcblxubGV0IHZub2RlSWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZSBhbiB2aXJ0dWFsIG5vZGUgKHVzZWQgZm9yIEpTWClcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGVbXCJ0eXBlXCJdfSB0eXBlIFRoZSBub2RlIG5hbWUgb3IgQ29tcG9uZW50XG4gKiBjb25zdHJ1Y3RvciBmb3IgdGhpcyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3Byb3BzXSBUaGUgcHJvcGVydGllcyBvZiB0aGUgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLicpLkNvbXBvbmVudENoaWxkcmVuPn0gW2NoaWxkcmVuXSBUaGUgY2hpbGRyZW4gb2YgdGhlIHZpcnR1YWwgbm9kZVxuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0eXBlLCBwcm9wcywgY2hpbGRyZW4pIHtcblx0bGV0IG5vcm1hbGl6ZWRQcm9wcyA9IHt9LFxuXHRcdGtleSxcblx0XHRyZWYsXG5cdFx0aTtcblx0Zm9yIChpIGluIHByb3BzKSB7XG5cdFx0aWYgKGkgPT0gJ2tleScpIGtleSA9IHByb3BzW2ldO1xuXHRcdGVsc2UgaWYgKGkgPT0gJ3JlZicpIHJlZiA9IHByb3BzW2ldO1xuXHRcdGVsc2Ugbm9ybWFsaXplZFByb3BzW2ldID0gcHJvcHNbaV07XG5cdH1cblxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRub3JtYWxpemVkUHJvcHMuY2hpbGRyZW4gPVxuXHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDMgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBjaGlsZHJlbjtcblx0fVxuXG5cdC8vIElmIGEgQ29tcG9uZW50IFZOb2RlLCBjaGVjayBmb3IgYW5kIGFwcGx5IGRlZmF1bHRQcm9wc1xuXHQvLyBOb3RlOiB0eXBlIG1heSBiZSB1bmRlZmluZWQgaW4gZGV2ZWxvcG1lbnQsIG11c3QgbmV2ZXIgZXJyb3IgaGVyZS5cblx0aWYgKHR5cGVvZiB0eXBlID09ICdmdW5jdGlvbicgJiYgdHlwZS5kZWZhdWx0UHJvcHMgIT0gbnVsbCkge1xuXHRcdGZvciAoaSBpbiB0eXBlLmRlZmF1bHRQcm9wcykge1xuXHRcdFx0aWYgKG5vcm1hbGl6ZWRQcm9wc1tpXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdG5vcm1hbGl6ZWRQcm9wc1tpXSA9IHR5cGUuZGVmYXVsdFByb3BzW2ldO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBub3JtYWxpemVkUHJvcHMsIGtleSwgcmVmLCBudWxsKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBWTm9kZSAodXNlZCBpbnRlcm5hbGx5IGJ5IFByZWFjdClcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGVbXCJ0eXBlXCJdfSB0eXBlIFRoZSBub2RlIG5hbWUgb3IgQ29tcG9uZW50XG4gKiBDb25zdHJ1Y3RvciBmb3IgdGhpcyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbH0gcHJvcHMgVGhlIHByb3BlcnRpZXMgb2YgdGhpcyB2aXJ0dWFsIG5vZGUuXG4gKiBJZiB0aGlzIHZpcnR1YWwgbm9kZSByZXByZXNlbnRzIGEgdGV4dCBub2RlLCB0aGlzIGlzIHRoZSB0ZXh0IG9mIHRoZSBub2RlIChzdHJpbmcgb3IgbnVtYmVyKS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgbnVsbH0ga2V5IFRoZSBrZXkgZm9yIHRoaXMgdmlydHVhbCBub2RlLCB1c2VkIHdoZW5cbiAqIGRpZmZpbmcgaXQgYWdhaW5zdCBpdHMgY2hpbGRyZW5cbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGVbXCJyZWZcIl19IHJlZiBUaGUgcmVmIHByb3BlcnR5IHRoYXQgd2lsbFxuICogcmVjZWl2ZSBhIHJlZmVyZW5jZSB0byBpdHMgY3JlYXRlZCBjaGlsZFxuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVk5vZGUodHlwZSwgcHJvcHMsIGtleSwgcmVmLCBvcmlnaW5hbCkge1xuXHQvLyBWOCBzZWVtcyB0byBiZSBiZXR0ZXIgYXQgZGV0ZWN0aW5nIHR5cGUgc2hhcGVzIGlmIHRoZSBvYmplY3QgaXMgYWxsb2NhdGVkIGZyb20gdGhlIHNhbWUgY2FsbCBzaXRlXG5cdC8vIERvIG5vdCBpbmxpbmUgaW50byBjcmVhdGVFbGVtZW50IGFuZCBjb2VyY2VUb1ZOb2RlIVxuXHRjb25zdCB2bm9kZSA9IHtcblx0XHR0eXBlLFxuXHRcdHByb3BzLFxuXHRcdGtleSxcblx0XHRyZWYsXG5cdFx0X2NoaWxkcmVuOiBudWxsLFxuXHRcdF9wYXJlbnQ6IG51bGwsXG5cdFx0X2RlcHRoOiAwLFxuXHRcdF9kb206IG51bGwsXG5cdFx0Ly8gX25leHREb20gbXVzdCBiZSBpbml0aWFsaXplZCB0byB1bmRlZmluZWQgYi9jIGl0IHdpbGwgZXZlbnR1YWxseVxuXHRcdC8vIGJlIHNldCB0byBkb20ubmV4dFNpYmxpbmcgd2hpY2ggY2FuIHJldHVybiBgbnVsbGAgYW5kIGl0IGlzIGltcG9ydGFudFxuXHRcdC8vIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiB1bmluaXRpYWxpemVkIF9uZXh0RG9tIGFuZFxuXHRcdC8vIGEgX25leHREb20gdGhhdCBoYXMgYmVlbiBzZXQgdG8gYG51bGxgXG5cdFx0X25leHREb206IHVuZGVmaW5lZCxcblx0XHRfY29tcG9uZW50OiBudWxsLFxuXHRcdF9oeWRyYXRpbmc6IG51bGwsXG5cdFx0Y29uc3RydWN0b3I6IHVuZGVmaW5lZCxcblx0XHRfb3JpZ2luYWw6IG9yaWdpbmFsID09IG51bGwgPyArK3Zub2RlSWQgOiBvcmlnaW5hbFxuXHR9O1xuXG5cdC8vIE9ubHkgaW52b2tlIHRoZSB2bm9kZSBob29rIGlmIHRoaXMgd2FzICpub3QqIGEgZGlyZWN0IGNvcHk6XG5cdGlmIChvcmlnaW5hbCA9PSBudWxsICYmIG9wdGlvbnMudm5vZGUgIT0gbnVsbCkgb3B0aW9ucy52bm9kZSh2bm9kZSk7XG5cblx0cmV0dXJuIHZub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVmKCkge1xuXHRyZXR1cm4geyBjdXJyZW50OiBudWxsIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGcmFnbWVudChwcm9wcykge1xuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0aGUgYXJndW1lbnQgaXMgYSB2YWxpZCBQcmVhY3QgVk5vZGUuXG4gKiBAcGFyYW0geyp9IHZub2RlXG4gKiBAcmV0dXJucyB7dm5vZGUgaXMgaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9XG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkRWxlbWVudCA9IHZub2RlID0+XG5cdHZub2RlICE9IG51bGwgJiYgdm5vZGUuY29uc3RydWN0b3IgPT09IHVuZGVmaW5lZDtcbiIsICJpbXBvcnQgeyBhc3NpZ24gfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgZGlmZiwgY29tbWl0Um9vdCB9IGZyb20gJy4vZGlmZi9pbmRleCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcblxuLyoqXG4gKiBCYXNlIENvbXBvbmVudCBjbGFzcy4gUHJvdmlkZXMgYHNldFN0YXRlKClgIGFuZCBgZm9yY2VVcGRhdGUoKWAsIHdoaWNoXG4gKiB0cmlnZ2VyIHJlbmRlcmluZ1xuICogQHBhcmFtIHtvYmplY3R9IHByb3BzIFRoZSBpbml0aWFsIGNvbXBvbmVudCBwcm9wc1xuICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQgVGhlIGluaXRpYWwgY29udGV4dCBmcm9tIHBhcmVudCBjb21wb25lbnRzJ1xuICogZ2V0Q2hpbGRDb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMsIGNvbnRleHQpIHtcblx0dGhpcy5wcm9wcyA9IHByb3BzO1xuXHR0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xufVxuXG4vKipcbiAqIFVwZGF0ZSBjb21wb25lbnQgc3RhdGUgYW5kIHNjaGVkdWxlIGEgcmUtcmVuZGVyLlxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH1cbiAqIEBwYXJhbSB7b2JqZWN0IHwgKChzOiBvYmplY3QsIHA6IG9iamVjdCkgPT4gb2JqZWN0KX0gdXBkYXRlIEEgaGFzaCBvZiBzdGF0ZVxuICogcHJvcGVydGllcyB0byB1cGRhdGUgd2l0aCBuZXcgdmFsdWVzIG9yIGEgZnVuY3Rpb24gdGhhdCBnaXZlbiB0aGUgY3VycmVudFxuICogc3RhdGUgYW5kIHByb3BzIHJldHVybnMgYSBuZXcgcGFydGlhbCBzdGF0ZVxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uY2UgY29tcG9uZW50IHN0YXRlIGlzXG4gKiB1cGRhdGVkXG4gKi9cbkNvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbih1cGRhdGUsIGNhbGxiYWNrKSB7XG5cdC8vIG9ubHkgY2xvbmUgc3RhdGUgd2hlbiBjb3B5aW5nIHRvIG5leHRTdGF0ZSB0aGUgZmlyc3QgdGltZS5cblx0bGV0IHM7XG5cdGlmICh0aGlzLl9uZXh0U3RhdGUgIT0gbnVsbCAmJiB0aGlzLl9uZXh0U3RhdGUgIT09IHRoaXMuc3RhdGUpIHtcblx0XHRzID0gdGhpcy5fbmV4dFN0YXRlO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSB0aGlzLl9uZXh0U3RhdGUgPSBhc3NpZ24oe30sIHRoaXMuc3RhdGUpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB1cGRhdGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdC8vIFNvbWUgbGlicmFyaWVzIGxpa2UgYGltbWVyYCBtYXJrIHRoZSBjdXJyZW50IHN0YXRlIGFzIHJlYWRvbmx5LFxuXHRcdC8vIHByZXZlbnRpbmcgdXMgZnJvbSBtdXRhdGluZyBpdCwgc28gd2UgbmVlZCB0byBjbG9uZSBpdC4gU2VlICMyNzE2XG5cdFx0dXBkYXRlID0gdXBkYXRlKGFzc2lnbih7fSwgcyksIHRoaXMucHJvcHMpO1xuXHR9XG5cblx0aWYgKHVwZGF0ZSkge1xuXHRcdGFzc2lnbihzLCB1cGRhdGUpO1xuXHR9XG5cblx0Ly8gU2tpcCB1cGRhdGUgaWYgdXBkYXRlciBmdW5jdGlvbiByZXR1cm5lZCBudWxsXG5cdGlmICh1cGRhdGUgPT0gbnVsbCkgcmV0dXJuO1xuXG5cdGlmICh0aGlzLl92bm9kZSkge1xuXHRcdGlmIChjYWxsYmFjaykgdGhpcy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHRcdGVucXVldWVSZW5kZXIodGhpcyk7XG5cdH1cbn07XG5cbi8qKlxuICogSW1tZWRpYXRlbHkgcGVyZm9ybSBhIHN5bmNocm9ub3VzIHJlLXJlbmRlciBvZiB0aGUgY29tcG9uZW50XG4gKiBAdGhpcyB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fVxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIGNvbXBvbmVudCBpc1xuICogcmUtcmVuZGVyZWRcbiAqL1xuQ29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG5cdGlmICh0aGlzLl92bm9kZSkge1xuXHRcdC8vIFNldCByZW5kZXIgbW9kZSBzbyB0aGF0IHdlIGNhbiBkaWZmZXJlbnRpYXRlIHdoZXJlIHRoZSByZW5kZXIgcmVxdWVzdFxuXHRcdC8vIGlzIGNvbWluZyBmcm9tLiBXZSBuZWVkIHRoaXMgYmVjYXVzZSBmb3JjZVVwZGF0ZSBzaG91bGQgbmV2ZXIgY2FsbFxuXHRcdC8vIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuXHRcdHRoaXMuX2ZvcmNlID0gdHJ1ZTtcblx0XHRpZiAoY2FsbGJhY2spIHRoaXMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0XHRlbnF1ZXVlUmVuZGVyKHRoaXMpO1xuXHR9XG59O1xuXG4vKipcbiAqIEFjY2VwdHMgYHByb3BzYCBhbmQgYHN0YXRlYCwgYW5kIHJldHVybnMgYSBuZXcgVmlydHVhbCBET00gdHJlZSB0byBidWlsZC5cbiAqIFZpcnR1YWwgRE9NIGlzIGdlbmVyYWxseSBjb25zdHJ1Y3RlZCB2aWEgW0pTWF0oaHR0cDovL2phc29uZm9ybWF0LmNvbS93dGYtaXMtanN4KS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBQcm9wcyAoZWc6IEpTWCBhdHRyaWJ1dGVzKSByZWNlaXZlZCBmcm9tIHBhcmVudFxuICogZWxlbWVudC9jb21wb25lbnRcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSBUaGUgY29tcG9uZW50J3MgY3VycmVudCBzdGF0ZVxuICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQgQ29udGV4dCBvYmplY3QsIGFzIHJldHVybmVkIGJ5IHRoZSBuZWFyZXN0XG4gKiBhbmNlc3RvcidzIGBnZXRDaGlsZENvbnRleHQoKWBcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vaW5kZXgnKS5Db21wb25lbnRDaGlsZHJlbiB8IHZvaWR9XG4gKi9cbkNvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyID0gRnJhZ21lbnQ7XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGVcbiAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbH0gW2NoaWxkSW5kZXhdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21TaWJsaW5nKHZub2RlLCBjaGlsZEluZGV4KSB7XG5cdGlmIChjaGlsZEluZGV4ID09IG51bGwpIHtcblx0XHQvLyBVc2UgY2hpbGRJbmRleD09bnVsbCBhcyBhIHNpZ25hbCB0byByZXN1bWUgdGhlIHNlYXJjaCBmcm9tIHRoZSB2bm9kZSdzIHNpYmxpbmdcblx0XHRyZXR1cm4gdm5vZGUuX3BhcmVudFxuXHRcdFx0PyBnZXREb21TaWJsaW5nKHZub2RlLl9wYXJlbnQsIHZub2RlLl9wYXJlbnQuX2NoaWxkcmVuLmluZGV4T2Yodm5vZGUpICsgMSlcblx0XHRcdDogbnVsbDtcblx0fVxuXG5cdGxldCBzaWJsaW5nO1xuXHRmb3IgKDsgY2hpbGRJbmRleCA8IHZub2RlLl9jaGlsZHJlbi5sZW5ndGg7IGNoaWxkSW5kZXgrKykge1xuXHRcdHNpYmxpbmcgPSB2bm9kZS5fY2hpbGRyZW5bY2hpbGRJbmRleF07XG5cblx0XHRpZiAoc2libGluZyAhPSBudWxsICYmIHNpYmxpbmcuX2RvbSAhPSBudWxsKSB7XG5cdFx0XHQvLyBTaW5jZSB1cGRhdGVQYXJlbnREb21Qb2ludGVycyBrZWVwcyBfZG9tIHBvaW50ZXIgY29ycmVjdCxcblx0XHRcdC8vIHdlIGNhbiByZWx5IG9uIF9kb20gdG8gdGVsbCB1cyBpZiB0aGlzIHN1YnRyZWUgY29udGFpbnMgYVxuXHRcdFx0Ly8gcmVuZGVyZWQgRE9NIG5vZGUsIGFuZCB3aGF0IHRoZSBmaXJzdCByZW5kZXJlZCBET00gbm9kZSBpc1xuXHRcdFx0cmV0dXJuIHNpYmxpbmcuX2RvbTtcblx0XHR9XG5cdH1cblxuXHQvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZSBub3QgZm91bmQgYSBET00gbm9kZSBpbiB0aGlzIHZub2RlJ3MgY2hpbGRyZW4uXG5cdC8vIFdlIG11c3QgcmVzdW1lIGZyb20gdGhpcyB2bm9kZSdzIHNpYmxpbmcgKGluIGl0J3MgcGFyZW50IF9jaGlsZHJlbiBhcnJheSlcblx0Ly8gT25seSBjbGltYiB1cCBhbmQgc2VhcmNoIHRoZSBwYXJlbnQgaWYgd2UgYXJlbid0IHNlYXJjaGluZyB0aHJvdWdoIGEgRE9NXG5cdC8vIFZOb2RlIChtZWFuaW5nIHdlIHJlYWNoZWQgdGhlIERPTSBwYXJlbnQgb2YgdGhlIG9yaWdpbmFsIHZub2RlIHRoYXQgYmVnYW5cblx0Ly8gdGhlIHNlYXJjaClcblx0cmV0dXJuIHR5cGVvZiB2bm9kZS50eXBlID09ICdmdW5jdGlvbicgPyBnZXREb21TaWJsaW5nKHZub2RlKSA6IG51bGw7XG59XG5cbi8qKlxuICogVHJpZ2dlciBpbi1wbGFjZSByZS1yZW5kZXJpbmcgb2YgYSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gY29tcG9uZW50IFRoZSBjb21wb25lbnQgdG8gcmVyZW5kZXJcbiAqL1xuZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudCkge1xuXHRsZXQgdm5vZGUgPSBjb21wb25lbnQuX3Zub2RlLFxuXHRcdG9sZERvbSA9IHZub2RlLl9kb20sXG5cdFx0cGFyZW50RG9tID0gY29tcG9uZW50Ll9wYXJlbnREb207XG5cblx0aWYgKHBhcmVudERvbSkge1xuXHRcdGxldCBjb21taXRRdWV1ZSA9IFtdO1xuXHRcdGNvbnN0IG9sZFZOb2RlID0gYXNzaWduKHt9LCB2bm9kZSk7XG5cdFx0b2xkVk5vZGUuX29yaWdpbmFsID0gdm5vZGUuX29yaWdpbmFsICsgMTtcblxuXHRcdGRpZmYoXG5cdFx0XHRwYXJlbnREb20sXG5cdFx0XHR2bm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Y29tcG9uZW50Ll9nbG9iYWxDb250ZXh0LFxuXHRcdFx0cGFyZW50RG9tLm93bmVyU1ZHRWxlbWVudCAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0dm5vZGUuX2h5ZHJhdGluZyAhPSBudWxsID8gW29sZERvbV0gOiBudWxsLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRvbGREb20gPT0gbnVsbCA/IGdldERvbVNpYmxpbmcodm5vZGUpIDogb2xkRG9tLFxuXHRcdFx0dm5vZGUuX2h5ZHJhdGluZ1xuXHRcdCk7XG5cdFx0Y29tbWl0Um9vdChjb21taXRRdWV1ZSwgdm5vZGUpO1xuXG5cdFx0aWYgKHZub2RlLl9kb20gIT0gb2xkRG9tKSB7XG5cdFx0XHR1cGRhdGVQYXJlbnREb21Qb2ludGVycyh2bm9kZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGVcbiAqL1xuZnVuY3Rpb24gdXBkYXRlUGFyZW50RG9tUG9pbnRlcnModm5vZGUpIHtcblx0aWYgKCh2bm9kZSA9IHZub2RlLl9wYXJlbnQpICE9IG51bGwgJiYgdm5vZGUuX2NvbXBvbmVudCAhPSBudWxsKSB7XG5cdFx0dm5vZGUuX2RvbSA9IHZub2RlLl9jb21wb25lbnQuYmFzZSA9IG51bGw7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2bm9kZS5fY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBjaGlsZCA9IHZub2RlLl9jaGlsZHJlbltpXTtcblx0XHRcdGlmIChjaGlsZCAhPSBudWxsICYmIGNoaWxkLl9kb20gIT0gbnVsbCkge1xuXHRcdFx0XHR2bm9kZS5fZG9tID0gdm5vZGUuX2NvbXBvbmVudC5iYXNlID0gY2hpbGQuX2RvbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVwZGF0ZVBhcmVudERvbVBvaW50ZXJzKHZub2RlKTtcblx0fVxufVxuXG4vKipcbiAqIFRoZSByZW5kZXIgcXVldWVcbiAqIEB0eXBlIHtBcnJheTxpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnQ+fVxuICovXG5sZXQgcmVyZW5kZXJRdWV1ZSA9IFtdO1xuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IHNjaGVkdWxlIGEgY2FsbGJhY2tcbiAqIEB0eXBlIHsoY2I6ICgpID0+IHZvaWQpID0+IHZvaWR9XG4gKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4vLyBOb3RlIHRoZSBmb2xsb3dpbmcgbGluZSBpc24ndCB0cmVlLXNoYWtlbiBieSByb2xsdXAgY3V6IG9mIHJvbGx1cC9yb2xsdXAjMjU2NlxuY29uc3QgZGVmZXIgPVxuXHR0eXBlb2YgUHJvbWlzZSA9PSAnZnVuY3Rpb24nXG5cdFx0PyBQcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpXG5cdFx0OiBzZXRUaW1lb3V0O1xuXG4vKlxuICogVGhlIHZhbHVlIG9mIGBDb21wb25lbnQuZGVib3VuY2VgIG11c3QgYXN5bmNocm9ub3VzbHkgaW52b2tlIHRoZSBwYXNzZWQgaW4gY2FsbGJhY2suIEl0IGlzXG4gKiBpbXBvcnRhbnQgdGhhdCBjb250cmlidXRvcnMgdG8gUHJlYWN0IGNhbiBjb25zaXN0ZW50bHkgcmVhc29uIGFib3V0IHdoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCwgZXRjLlxuICogZG8sIGFuZCB3aGVuIHRoZWlyIGVmZmVjdHMgd2lsbCBiZSBhcHBsaWVkLiBTZWUgdGhlIGxpbmtzIGJlbG93IGZvciBzb21lIGZ1cnRoZXIgcmVhZGluZyBvbiBkZXNpZ25pbmdcbiAqIGFzeW5jaHJvbm91cyBBUElzLlxuICogKiBbRGVzaWduaW5nIEFQSXMgZm9yIEFzeW5jaHJvbnldKGh0dHBzOi8vYmxvZy5penMubWUvMjAxMy8wOC9kZXNpZ25pbmctYXBpcy1mb3ItYXN5bmNocm9ueSlcbiAqICogW0NhbGxiYWNrcyBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzXShodHRwczovL2Jsb2cub21ldGVyLmNvbS8yMDExLzA3LzI0L2NhbGxiYWNrcy1zeW5jaHJvbm91cy1hbmQtYXN5bmNocm9ub3VzLylcbiAqL1xuXG5sZXQgcHJldkRlYm91bmNlO1xuXG4vKipcbiAqIEVucXVldWUgYSByZXJlbmRlciBvZiBhIGNvbXBvbmVudFxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9IGMgVGhlIGNvbXBvbmVudCB0byByZXJlbmRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5xdWV1ZVJlbmRlcihjKSB7XG5cdGlmIChcblx0XHQoIWMuX2RpcnR5ICYmXG5cdFx0XHQoYy5fZGlydHkgPSB0cnVlKSAmJlxuXHRcdFx0cmVyZW5kZXJRdWV1ZS5wdXNoKGMpICYmXG5cdFx0XHQhcHJvY2Vzcy5fcmVyZW5kZXJDb3VudCsrKSB8fFxuXHRcdHByZXZEZWJvdW5jZSAhPT0gb3B0aW9ucy5kZWJvdW5jZVJlbmRlcmluZ1xuXHQpIHtcblx0XHRwcmV2RGVib3VuY2UgPSBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nO1xuXHRcdChwcmV2RGVib3VuY2UgfHwgZGVmZXIpKHByb2Nlc3MpO1xuXHR9XG59XG5cbi8qKiBGbHVzaCB0aGUgcmVuZGVyIHF1ZXVlIGJ5IHJlcmVuZGVyaW5nIGFsbCBxdWV1ZWQgY29tcG9uZW50cyAqL1xuZnVuY3Rpb24gcHJvY2VzcygpIHtcblx0bGV0IHF1ZXVlO1xuXHR3aGlsZSAoKHByb2Nlc3MuX3JlcmVuZGVyQ291bnQgPSByZXJlbmRlclF1ZXVlLmxlbmd0aCkpIHtcblx0XHRxdWV1ZSA9IHJlcmVuZGVyUXVldWUuc29ydCgoYSwgYikgPT4gYS5fdm5vZGUuX2RlcHRoIC0gYi5fdm5vZGUuX2RlcHRoKTtcblx0XHRyZXJlbmRlclF1ZXVlID0gW107XG5cdFx0Ly8gRG9uJ3QgdXBkYXRlIGByZW5kZXJDb3VudGAgeWV0LiBLZWVwIGl0cyB2YWx1ZSBub24temVybyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5XG5cdFx0Ly8gcHJvY2VzcygpIGNhbGxzIGZyb20gZ2V0dGluZyBzY2hlZHVsZWQgd2hpbGUgYHF1ZXVlYCBpcyBzdGlsbCBiZWluZyBjb25zdW1lZC5cblx0XHRxdWV1ZS5zb21lKGMgPT4ge1xuXHRcdFx0aWYgKGMuX2RpcnR5KSByZW5kZXJDb21wb25lbnQoYyk7XG5cdFx0fSk7XG5cdH1cbn1cbnByb2Nlc3MuX3JlcmVuZGVyQ291bnQgPSAwO1xuIiwgImltcG9ydCB7IGVucXVldWVSZW5kZXIgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBsZXQgaSA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KGRlZmF1bHRWYWx1ZSwgY29udGV4dElkKSB7XG5cdGNvbnRleHRJZCA9ICdfX2NDJyArIGkrKztcblxuXHRjb25zdCBjb250ZXh0ID0ge1xuXHRcdF9pZDogY29udGV4dElkLFxuXHRcdF9kZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcblx0XHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkZ1bmN0aW9uQ29tcG9uZW50fSAqL1xuXHRcdENvbnN1bWVyKHByb3BzLCBjb250ZXh0VmFsdWUpIHtcblx0XHRcdC8vIHJldHVybiBwcm9wcy5jaGlsZHJlbihcblx0XHRcdC8vIFx0Y29udGV4dFtjb250ZXh0SWRdID8gY29udGV4dFtjb250ZXh0SWRdLnByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlXG5cdFx0XHQvLyApO1xuXHRcdFx0cmV0dXJuIHByb3BzLmNoaWxkcmVuKGNvbnRleHRWYWx1ZSk7XG5cdFx0fSxcblx0XHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkZ1bmN0aW9uQ29tcG9uZW50fSAqL1xuXHRcdFByb3ZpZGVyKHByb3BzKSB7XG5cdFx0XHRpZiAoIXRoaXMuZ2V0Q2hpbGRDb250ZXh0KSB7XG5cdFx0XHRcdGxldCBzdWJzID0gW107XG5cdFx0XHRcdGxldCBjdHggPSB7fTtcblx0XHRcdFx0Y3R4W2NvbnRleHRJZF0gPSB0aGlzO1xuXG5cdFx0XHRcdHRoaXMuZ2V0Q2hpbGRDb250ZXh0ID0gKCkgPT4gY3R4O1xuXG5cdFx0XHRcdHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24oX3Byb3BzKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucHJvcHMudmFsdWUgIT09IF9wcm9wcy52YWx1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gSSB0aGluayB0aGUgZm9yY2VkIHZhbHVlIHByb3BhZ2F0aW9uIGhlcmUgd2FzIG9ubHkgbmVlZGVkIHdoZW4gYG9wdGlvbnMuZGVib3VuY2VSZW5kZXJpbmdgIHdhcyBiZWluZyBieXBhc3NlZDpcblx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmVhY3Rqcy9wcmVhY3QvY29tbWl0LzRkMzM5ZmI4MDNiZWEwOWU5ZjE5OGFiZjM4Y2ExYmY4ZWE0Yjc3NzEjZGlmZi01NDY4MmNlMzgwOTM1YTcxN2U0MWI4YmZjNTQ3MzdmNlIzNThcblx0XHRcdFx0XHRcdC8vIEluIHRob3NlIGNhc2VzIHRob3VnaCwgZXZlbiB3aXRoIHRoZSB2YWx1ZSBjb3JyZWN0ZWQsIHdlJ3JlIGRvdWJsZS1yZW5kZXJpbmcgYWxsIG5vZGVzLlxuXHRcdFx0XHRcdFx0Ly8gSXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgdGVsbCBmb2xrcyBub3QgdG8gdXNlIGZvcmNlLXN5bmMgbW9kZS5cblx0XHRcdFx0XHRcdC8vIEN1cnJlbnRseSwgdXNpbmcgYHVzZUNvbnRleHQoKWAgaW4gYSBjbGFzcyBjb21wb25lbnQgd2lsbCBvdmVyd3JpdGUgaXRzIGB0aGlzLmNvbnRleHRgIHZhbHVlLlxuXHRcdFx0XHRcdFx0Ly8gc3Vicy5zb21lKGMgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gXHRjLmNvbnRleHQgPSBfcHJvcHMudmFsdWU7XG5cdFx0XHRcdFx0XHQvLyBcdGVucXVldWVSZW5kZXIoYyk7XG5cdFx0XHRcdFx0XHQvLyB9KTtcblxuXHRcdFx0XHRcdFx0Ly8gc3Vicy5zb21lKGMgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gXHRjLmNvbnRleHRbY29udGV4dElkXSA9IF9wcm9wcy52YWx1ZTtcblx0XHRcdFx0XHRcdC8vIFx0ZW5xdWV1ZVJlbmRlcihjKTtcblx0XHRcdFx0XHRcdC8vIH0pO1xuXHRcdFx0XHRcdFx0c3Vicy5zb21lKGVucXVldWVSZW5kZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblxuXHRcdFx0XHR0aGlzLnN1YiA9IGMgPT4ge1xuXHRcdFx0XHRcdHN1YnMucHVzaChjKTtcblx0XHRcdFx0XHRsZXQgb2xkID0gYy5jb21wb25lbnRXaWxsVW5tb3VudDtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0c3Vicy5zcGxpY2Uoc3Vicy5pbmRleE9mKGMpLCAxKTtcblx0XHRcdFx0XHRcdGlmIChvbGQpIG9sZC5jYWxsKGMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9wcy5jaGlsZHJlbjtcblx0XHR9XG5cdH07XG5cblx0Ly8gRGV2dG9vbHMgbmVlZHMgYWNjZXNzIHRvIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIGl0XG5cdC8vIGVuY291bnRlcnMgYSBQcm92aWRlci4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydFxuXHQvLyBzZXR0aW5nIGBkaXNwbGF5TmFtZWAgb24gdGhlIGNvbnRleHQgb2JqZWN0IGluc3RlYWRcblx0Ly8gb2Ygb24gdGhlIGNvbXBvbmVudCBpdHNlbGYuIFNlZTpcblx0Ly8gaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2NvbnRleHQuaHRtbCNjb250ZXh0ZGlzcGxheW5hbWVcblxuXHRyZXR1cm4gKGNvbnRleHQuUHJvdmlkZXIuX2NvbnRleHRSZWYgPSBjb250ZXh0LkNvbnN1bWVyLmNvbnRleHRUeXBlID0gY29udGV4dCk7XG59XG4iLCAiaW1wb3J0IHsgZGlmZiwgdW5tb3VudCwgYXBwbHlSZWYgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IGNyZWF0ZVZOb2RlLCBGcmFnbWVudCB9IGZyb20gJy4uL2NyZWF0ZS1lbGVtZW50JztcbmltcG9ydCB7IEVNUFRZX09CSiwgRU1QVFlfQVJSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldERvbVNpYmxpbmcgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuXG4vKipcbiAqIERpZmYgdGhlIGNoaWxkcmVuIG9mIGEgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHdob3NlXG4gKiBjaGlsZHJlbiBhcmUgYmVpbmcgZGlmZmVkXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5Db21wb25lbnRDaGlsZHJlbltdfSByZW5kZXJSZXN1bHRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBuZXdQYXJlbnRWTm9kZSBUaGUgbmV3IHZpcnR1YWxcbiAqIG5vZGUgd2hvc2UgY2hpbGRyZW4gc2hvdWxkIGJlIGRpZmYnZWQgYWdhaW5zdCBvbGRQYXJlbnRWTm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IG9sZFBhcmVudFZOb2RlIFRoZSBvbGQgdmlydHVhbFxuICogbm9kZSB3aG9zZSBjaGlsZHJlbiBzaG91bGQgYmUgZGlmZidlZCBhZ2FpbnN0IG5ld1BhcmVudFZOb2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdCAtIG1vZGlmaWVkIGJ5IGdldENoaWxkQ29udGV4dFxuICogQHBhcmFtIHtib29sZWFufSBpc1N2ZyBXaGV0aGVyIG9yIG5vdCB0aGlzIERPTSBub2RlIGlzIGFuIFNWRyBub2RlXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50Pn0gZXhjZXNzRG9tQ2hpbGRyZW5cbiAqIEBwYXJhbSB7QXJyYXk8aW1wb3J0KCcuLi9pbnRlcm5hbCcpLkNvbXBvbmVudD59IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50c1xuICogd2hpY2ggaGF2ZSBjYWxsYmFja3MgdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnR9IG9sZERvbSBUaGUgY3VycmVudCBhdHRhY2hlZCBET01cbiAqIGVsZW1lbnQgYW55IG5ldyBkb20gZWxlbWVudHMgc2hvdWxkIGJlIHBsYWNlZCBhcm91bmQuIExpa2VseSBgbnVsbGAgb24gZmlyc3RcbiAqIHJlbmRlciAoZXhjZXB0IHdoZW4gaHlkcmF0aW5nKS4gQ2FuIGJlIGEgc2libGluZyBET00gZWxlbWVudCB3aGVuIGRpZmZpbmdcbiAqIEZyYWdtZW50cyB0aGF0IGhhdmUgc2libGluZ3MuIEluIG1vc3QgY2FzZXMsIGl0IHN0YXJ0cyBvdXQgYXMgYG9sZENoaWxkcmVuWzBdLl9kb21gLlxuICogQHBhcmFtIHtib29sZWFufSBpc0h5ZHJhdGluZyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ2hpbGRyZW4oXG5cdHBhcmVudERvbSxcblx0cmVuZGVyUmVzdWx0LFxuXHRuZXdQYXJlbnRWTm9kZSxcblx0b2xkUGFyZW50Vk5vZGUsXG5cdGdsb2JhbENvbnRleHQsXG5cdGlzU3ZnLFxuXHRleGNlc3NEb21DaGlsZHJlbixcblx0Y29tbWl0UXVldWUsXG5cdG9sZERvbSxcblx0aXNIeWRyYXRpbmdcbikge1xuXHRsZXQgaSwgaiwgb2xkVk5vZGUsIGNoaWxkVk5vZGUsIG5ld0RvbSwgZmlyc3RDaGlsZERvbSwgcmVmcztcblxuXHQvLyBUaGlzIGlzIGEgY29tcHJlc3Npb24gb2Ygb2xkUGFyZW50Vk5vZGUhPW51bGwgJiYgb2xkUGFyZW50Vk5vZGUgIT0gRU1QVFlfT0JKICYmIG9sZFBhcmVudFZOb2RlLl9jaGlsZHJlbiB8fCBFTVBUWV9BUlJcblx0Ly8gYXMgRU1QVFlfT0JKLl9jaGlsZHJlbiBzaG91bGQgYmUgYHVuZGVmaW5lZGAuXG5cdGxldCBvbGRDaGlsZHJlbiA9IChvbGRQYXJlbnRWTm9kZSAmJiBvbGRQYXJlbnRWTm9kZS5fY2hpbGRyZW4pIHx8IEVNUFRZX0FSUjtcblxuXHRsZXQgb2xkQ2hpbGRyZW5MZW5ndGggPSBvbGRDaGlsZHJlbi5sZW5ndGg7XG5cblx0bmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuID0gW107XG5cdGZvciAoaSA9IDA7IGkgPCByZW5kZXJSZXN1bHQubGVuZ3RoOyBpKyspIHtcblx0XHRjaGlsZFZOb2RlID0gcmVuZGVyUmVzdWx0W2ldO1xuXG5cdFx0aWYgKGNoaWxkVk5vZGUgPT0gbnVsbCB8fCB0eXBlb2YgY2hpbGRWTm9kZSA9PSAnYm9vbGVhbicpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBudWxsO1xuXHRcdH1cblx0XHQvLyBJZiB0aGlzIG5ld1ZOb2RlIGlzIGJlaW5nIHJldXNlZCAoZS5nLiA8ZGl2PntyZXVzZX17cmV1c2V9PC9kaXY+KSBpbiB0aGUgc2FtZSBkaWZmLFxuXHRcdC8vIG9yIHdlIGFyZSByZW5kZXJpbmcgYSBjb21wb25lbnQgKGUuZy4gc2V0U3RhdGUpIGNvcHkgdGhlIG9sZFZOb2RlcyBzbyBpdCBjYW4gaGF2ZVxuXHRcdC8vIGl0J3Mgb3duIERPTSAmIGV0Yy4gcG9pbnRlcnNcblx0XHRlbHNlIGlmIChcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdzdHJpbmcnIHx8XG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnbnVtYmVyJyB8fFxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbGlkLXR5cGVvZlxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ2JpZ2ludCdcblx0XHQpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZVxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRWTm9kZSkpIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRcdHsgY2hpbGRyZW46IGNoaWxkVk5vZGUgfSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbFxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKGNoaWxkVk5vZGUuX2RlcHRoID4gMCkge1xuXHRcdFx0Ly8gVk5vZGUgaXMgYWxyZWFkeSBpbiB1c2UsIGNsb25lIGl0LiBUaGlzIGNhbiBoYXBwZW4gaW4gdGhlIGZvbGxvd2luZ1xuXHRcdFx0Ly8gc2NlbmFyaW86XG5cdFx0XHQvLyAgIGNvbnN0IHJldXNlID0gPGRpdiAvPlxuXHRcdFx0Ly8gICA8ZGl2PntyZXVzZX08c3BhbiAvPntyZXVzZX08L2Rpdj5cblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0Y2hpbGRWTm9kZS50eXBlLFxuXHRcdFx0XHRjaGlsZFZOb2RlLnByb3BzLFxuXHRcdFx0XHRjaGlsZFZOb2RlLmtleSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZS5fb3JpZ2luYWxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjaGlsZFZOb2RlO1xuXHRcdH1cblxuXHRcdC8vIFRlcnNlciByZW1vdmVzIHRoZSBgY29udGludWVgIGhlcmUgYW5kIHdyYXBzIHRoZSBsb29wIGJvZHlcblx0XHQvLyBpbiBhIGBpZiAoY2hpbGRWTm9kZSkgeyAuLi4gfSBjb25kaXRpb25cblx0XHRpZiAoY2hpbGRWTm9kZSA9PSBudWxsKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRjaGlsZFZOb2RlLl9wYXJlbnQgPSBuZXdQYXJlbnRWTm9kZTtcblx0XHRjaGlsZFZOb2RlLl9kZXB0aCA9IG5ld1BhcmVudFZOb2RlLl9kZXB0aCArIDE7XG5cblx0XHQvLyBDaGVjayBpZiB3ZSBmaW5kIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIG9sZENoaWxkcmVuLlxuXHRcdC8vIElmIGZvdW5kLCBkZWxldGUgdGhlIGFycmF5IGl0ZW0gYnkgc2V0dGluZyB0byBgdW5kZWZpbmVkYC5cblx0XHQvLyBXZSB1c2UgYHVuZGVmaW5lZGAsIGFzIGBudWxsYCBpcyByZXNlcnZlZCBmb3IgZW1wdHkgcGxhY2Vob2xkZXJzXG5cdFx0Ly8gKGhvbGVzKS5cblx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW2ldO1xuXG5cdFx0aWYgKFxuXHRcdFx0b2xkVk5vZGUgPT09IG51bGwgfHxcblx0XHRcdChvbGRWTm9kZSAmJlxuXHRcdFx0XHRjaGlsZFZOb2RlLmtleSA9PSBvbGRWTm9kZS5rZXkgJiZcblx0XHRcdFx0Y2hpbGRWTm9kZS50eXBlID09PSBvbGRWTm9kZS50eXBlKVxuXHRcdCkge1xuXHRcdFx0b2xkQ2hpbGRyZW5baV0gPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEVpdGhlciBvbGRWTm9kZSA9PT0gdW5kZWZpbmVkIG9yIG9sZENoaWxkcmVuTGVuZ3RoID4gMCxcblx0XHRcdC8vIHNvIGFmdGVyIHRoaXMgbG9vcCBvbGRWTm9kZSA9PSBudWxsIG9yIG9sZFZOb2RlIGlzIGEgdmFsaWQgdmFsdWUuXG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgb2xkQ2hpbGRyZW5MZW5ndGg7IGorKykge1xuXHRcdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW2pdO1xuXHRcdFx0XHQvLyBJZiBjaGlsZFZOb2RlIGlzIHVua2V5ZWQsIHdlIG9ubHkgbWF0Y2ggc2ltaWxhcmx5IHVua2V5ZWQgbm9kZXMsIG90aGVyd2lzZSB3ZSBtYXRjaCBieSBrZXkuXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBtYXRjaCBieSB0eXBlIChpbiBlaXRoZXIgY2FzZSkuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRvbGRWTm9kZSAmJlxuXHRcdFx0XHRcdGNoaWxkVk5vZGUua2V5ID09IG9sZFZOb2RlLmtleSAmJlxuXHRcdFx0XHRcdGNoaWxkVk5vZGUudHlwZSA9PT0gb2xkVk5vZGUudHlwZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRvbGRDaGlsZHJlbltqXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRvbGRWTm9kZSA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0b2xkVk5vZGUgPSBvbGRWTm9kZSB8fCBFTVBUWV9PQko7XG5cblx0XHQvLyBNb3JwaCB0aGUgb2xkIGVsZW1lbnQgaW50byB0aGUgbmV3IG9uZSwgYnV0IGRvbid0IGFwcGVuZCBpdCB0byB0aGUgZG9tIHlldFxuXHRcdGRpZmYoXG5cdFx0XHRwYXJlbnREb20sXG5cdFx0XHRjaGlsZFZOb2RlLFxuXHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0aXNTdmcsXG5cdFx0XHRleGNlc3NEb21DaGlsZHJlbixcblx0XHRcdGNvbW1pdFF1ZXVlLFxuXHRcdFx0b2xkRG9tLFxuXHRcdFx0aXNIeWRyYXRpbmdcblx0XHQpO1xuXG5cdFx0bmV3RG9tID0gY2hpbGRWTm9kZS5fZG9tO1xuXG5cdFx0aWYgKChqID0gY2hpbGRWTm9kZS5yZWYpICYmIG9sZFZOb2RlLnJlZiAhPSBqKSB7XG5cdFx0XHRpZiAoIXJlZnMpIHJlZnMgPSBbXTtcblx0XHRcdGlmIChvbGRWTm9kZS5yZWYpIHJlZnMucHVzaChvbGRWTm9kZS5yZWYsIG51bGwsIGNoaWxkVk5vZGUpO1xuXHRcdFx0cmVmcy5wdXNoKGosIGNoaWxkVk5vZGUuX2NvbXBvbmVudCB8fCBuZXdEb20sIGNoaWxkVk5vZGUpO1xuXHRcdH1cblxuXHRcdGlmIChuZXdEb20gIT0gbnVsbCkge1xuXHRcdFx0aWYgKGZpcnN0Q2hpbGREb20gPT0gbnVsbCkge1xuXHRcdFx0XHRmaXJzdENoaWxkRG9tID0gbmV3RG9tO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlLnR5cGUgPT0gJ2Z1bmN0aW9uJyAmJlxuXHRcdFx0XHRjaGlsZFZOb2RlLl9jaGlsZHJlbiA9PT0gb2xkVk5vZGUuX2NoaWxkcmVuXG5cdFx0XHQpIHtcblx0XHRcdFx0Y2hpbGRWTm9kZS5fbmV4dERvbSA9IG9sZERvbSA9IHJlb3JkZXJDaGlsZHJlbihcblx0XHRcdFx0XHRjaGlsZFZOb2RlLFxuXHRcdFx0XHRcdG9sZERvbSxcblx0XHRcdFx0XHRwYXJlbnREb21cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9sZERvbSA9IHBsYWNlQ2hpbGQoXG5cdFx0XHRcdFx0cGFyZW50RG9tLFxuXHRcdFx0XHRcdGNoaWxkVk5vZGUsXG5cdFx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdFx0b2xkQ2hpbGRyZW4sXG5cdFx0XHRcdFx0bmV3RG9tLFxuXHRcdFx0XHRcdG9sZERvbVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodHlwZW9mIG5ld1BhcmVudFZOb2RlLnR5cGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHQvLyBCZWNhdXNlIHRoZSBuZXdQYXJlbnRWTm9kZSBpcyBGcmFnbWVudC1saWtlLCB3ZSBuZWVkIHRvIHNldCBpdCdzXG5cdFx0XHRcdC8vIF9uZXh0RG9tIHByb3BlcnR5IHRvIHRoZSBuZXh0U2libGluZyBvZiBpdHMgbGFzdCBjaGlsZCBET00gbm9kZS5cblx0XHRcdFx0Ly9cblx0XHRcdFx0Ly8gYG9sZERvbWAgY29udGFpbnMgdGhlIGNvcnJlY3QgdmFsdWUgaGVyZSBiZWNhdXNlIGlmIHRoZSBsYXN0IGNoaWxkXG5cdFx0XHRcdC8vIGlzIGEgRnJhZ21lbnQtbGlrZSwgdGhlbiBvbGREb20gaGFzIGFscmVhZHkgYmVlbiBzZXQgdG8gdGhhdCBjaGlsZCdzIF9uZXh0RG9tLlxuXHRcdFx0XHQvLyBJZiB0aGUgbGFzdCBjaGlsZCBpcyBhIERPTSBWTm9kZSwgdGhlbiBvbGREb20gd2lsbCBiZSBzZXQgdG8gdGhhdCBET01cblx0XHRcdFx0Ly8gbm9kZSdzIG5leHRTaWJsaW5nLlxuXHRcdFx0XHRuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSA9IG9sZERvbTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0b2xkRG9tICYmXG5cdFx0XHRvbGRWTm9kZS5fZG9tID09IG9sZERvbSAmJlxuXHRcdFx0b2xkRG9tLnBhcmVudE5vZGUgIT0gcGFyZW50RG9tXG5cdFx0KSB7XG5cdFx0XHQvLyBUaGUgYWJvdmUgY29uZGl0aW9uIGlzIHRvIGhhbmRsZSBudWxsIHBsYWNlaG9sZGVycy4gU2VlIHRlc3QgaW4gcGxhY2Vob2xkZXIudGVzdC5qczpcblx0XHRcdC8vIGBlZmZpY2llbnRseSByZXBsYWNlIG51bGwgcGxhY2Vob2xkZXJzIGluIHBhcmVudCByZXJlbmRlcnNgXG5cdFx0XHRvbGREb20gPSBnZXREb21TaWJsaW5nKG9sZFZOb2RlKTtcblx0XHR9XG5cdH1cblxuXHRuZXdQYXJlbnRWTm9kZS5fZG9tID0gZmlyc3RDaGlsZERvbTtcblxuXHQvLyBSZW1vdmUgcmVtYWluaW5nIG9sZENoaWxkcmVuIGlmIHRoZXJlIGFyZSBhbnkuXG5cdGZvciAoaSA9IG9sZENoaWxkcmVuTGVuZ3RoOyBpLS07ICkge1xuXHRcdGlmIChvbGRDaGlsZHJlbltpXSAhPSBudWxsKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHR5cGVvZiBuZXdQYXJlbnRWTm9kZS50eXBlID09ICdmdW5jdGlvbicgJiZcblx0XHRcdFx0b2xkQ2hpbGRyZW5baV0uX2RvbSAhPSBudWxsICYmXG5cdFx0XHRcdG9sZENoaWxkcmVuW2ldLl9kb20gPT0gbmV3UGFyZW50Vk5vZGUuX25leHREb21cblx0XHRcdCkge1xuXHRcdFx0XHQvLyBJZiB0aGUgbmV3UGFyZW50Vk5vZGUuX19uZXh0RG9tIHBvaW50cyB0byBhIGRvbSBub2RlIHRoYXQgaXMgYWJvdXQgdG9cblx0XHRcdFx0Ly8gYmUgdW5tb3VudGVkLCB0aGVuIGdldCB0aGUgbmV4dCBzaWJsaW5nIG9mIHRoYXQgdm5vZGUgYW5kIHNldFxuXHRcdFx0XHQvLyBfbmV4dERvbSB0byBpdFxuXHRcdFx0XHRuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSA9IGdldERvbVNpYmxpbmcob2xkUGFyZW50Vk5vZGUsIGkgKyAxKTtcblx0XHRcdH1cblxuXHRcdFx0dW5tb3VudChvbGRDaGlsZHJlbltpXSwgb2xkQ2hpbGRyZW5baV0pO1xuXHRcdH1cblx0fVxuXG5cdC8vIFNldCByZWZzIG9ubHkgYWZ0ZXIgdW5tb3VudFxuXHRpZiAocmVmcykge1xuXHRcdGZvciAoaSA9IDA7IGkgPCByZWZzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRhcHBseVJlZihyZWZzW2ldLCByZWZzWysraV0sIHJlZnNbKytpXSk7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHJlb3JkZXJDaGlsZHJlbihjaGlsZFZOb2RlLCBvbGREb20sIHBhcmVudERvbSkge1xuXHQvLyBOb3RlOiBWTm9kZXMgaW4gbmVzdGVkIHN1c3BlbmRlZCB0cmVlcyBtYXkgYmUgbWlzc2luZyBfY2hpbGRyZW4uXG5cdGxldCBjID0gY2hpbGRWTm9kZS5fY2hpbGRyZW47XG5cdGxldCB0bXAgPSAwO1xuXHRmb3IgKDsgYyAmJiB0bXAgPCBjLmxlbmd0aDsgdG1wKyspIHtcblx0XHRsZXQgdm5vZGUgPSBjW3RtcF07XG5cdFx0aWYgKHZub2RlKSB7XG5cdFx0XHQvLyBXZSB0eXBpY2FsbHkgZW50ZXIgdGhpcyBjb2RlIHBhdGggb24gc0NVIGJhaWxvdXQsIHdoZXJlIHdlIGNvcHlcblx0XHRcdC8vIG9sZFZOb2RlLl9jaGlsZHJlbiB0byBuZXdWTm9kZS5fY2hpbGRyZW4uIElmIHRoYXQgaXMgdGhlIGNhc2UsIHdlIG5lZWRcblx0XHRcdC8vIHRvIHVwZGF0ZSB0aGUgb2xkIGNoaWxkcmVuJ3MgX3BhcmVudCBwb2ludGVyIHRvIHBvaW50IHRvIHRoZSBuZXdWTm9kZVxuXHRcdFx0Ly8gKGNoaWxkVk5vZGUgaGVyZSkuXG5cdFx0XHR2bm9kZS5fcGFyZW50ID0gY2hpbGRWTm9kZTtcblxuXHRcdFx0aWYgKHR5cGVvZiB2bm9kZS50eXBlID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0b2xkRG9tID0gcmVvcmRlckNoaWxkcmVuKHZub2RlLCBvbGREb20sIHBhcmVudERvbSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvbGREb20gPSBwbGFjZUNoaWxkKFxuXHRcdFx0XHRcdHBhcmVudERvbSxcblx0XHRcdFx0XHR2bm9kZSxcblx0XHRcdFx0XHR2bm9kZSxcblx0XHRcdFx0XHRjLFxuXHRcdFx0XHRcdHZub2RlLl9kb20sXG5cdFx0XHRcdFx0b2xkRG9tXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG9sZERvbTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGFuZCBsb29wIHRocm91Z2ggdGhlIGNoaWxkcmVuIG9mIGEgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW5kZXgnKS5Db21wb25lbnRDaGlsZHJlbn0gY2hpbGRyZW4gVGhlIHVuZmxhdHRlbmVkXG4gKiBjaGlsZHJlbiBvZiBhIHZpcnR1YWwgbm9kZVxuICogQHJldHVybnMge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DaGlsZEFycmF5KGNoaWxkcmVuLCBvdXQpIHtcblx0b3V0ID0gb3V0IHx8IFtdO1xuXHRpZiAoY2hpbGRyZW4gPT0gbnVsbCB8fCB0eXBlb2YgY2hpbGRyZW4gPT0gJ2Jvb2xlYW4nKSB7XG5cdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcblx0XHRjaGlsZHJlbi5zb21lKGNoaWxkID0+IHtcblx0XHRcdHRvQ2hpbGRBcnJheShjaGlsZCwgb3V0KTtcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRvdXQucHVzaChjaGlsZHJlbik7XG5cdH1cblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGxhY2VDaGlsZChcblx0cGFyZW50RG9tLFxuXHRjaGlsZFZOb2RlLFxuXHRvbGRWTm9kZSxcblx0b2xkQ2hpbGRyZW4sXG5cdG5ld0RvbSxcblx0b2xkRG9tXG4pIHtcblx0bGV0IG5leHREb207XG5cdGlmIChjaGlsZFZOb2RlLl9uZXh0RG9tICE9PSB1bmRlZmluZWQpIHtcblx0XHQvLyBPbmx5IEZyYWdtZW50cyBvciBjb21wb25lbnRzIHRoYXQgcmV0dXJuIEZyYWdtZW50IGxpa2UgVk5vZGVzIHdpbGxcblx0XHQvLyBoYXZlIGEgbm9uLXVuZGVmaW5lZCBfbmV4dERvbS4gQ29udGludWUgdGhlIGRpZmYgZnJvbSB0aGUgc2libGluZ1xuXHRcdC8vIG9mIGxhc3QgRE9NIGNoaWxkIG9mIHRoaXMgY2hpbGQgVk5vZGVcblx0XHRuZXh0RG9tID0gY2hpbGRWTm9kZS5fbmV4dERvbTtcblxuXHRcdC8vIEVhZ2VybHkgY2xlYW51cCBfbmV4dERvbS4gV2UgZG9uJ3QgbmVlZCB0byBwZXJzaXN0IHRoZSB2YWx1ZSBiZWNhdXNlXG5cdFx0Ly8gaXQgaXMgb25seSB1c2VkIGJ5IGBkaWZmQ2hpbGRyZW5gIHRvIGRldGVybWluZSB3aGVyZSB0byByZXN1bWUgdGhlIGRpZmYgYWZ0ZXJcblx0XHQvLyBkaWZmaW5nIENvbXBvbmVudHMgYW5kIEZyYWdtZW50cy4gT25jZSB3ZSBzdG9yZSBpdCB0aGUgbmV4dERPTSBsb2NhbCB2YXIsIHdlXG5cdFx0Ly8gY2FuIGNsZWFuIHVwIHRoZSBwcm9wZXJ0eVxuXHRcdGNoaWxkVk5vZGUuX25leHREb20gPSB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoXG5cdFx0b2xkVk5vZGUgPT0gbnVsbCB8fFxuXHRcdG5ld0RvbSAhPSBvbGREb20gfHxcblx0XHRuZXdEb20ucGFyZW50Tm9kZSA9PSBudWxsXG5cdCkge1xuXHRcdG91dGVyOiBpZiAob2xkRG9tID09IG51bGwgfHwgb2xkRG9tLnBhcmVudE5vZGUgIT09IHBhcmVudERvbSkge1xuXHRcdFx0cGFyZW50RG9tLmFwcGVuZENoaWxkKG5ld0RvbSk7XG5cdFx0XHRuZXh0RG9tID0gbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYGo8b2xkQ2hpbGRyZW5MZW5ndGg7IGorPTJgIGlzIGFuIGFsdGVybmF0aXZlIHRvIGBqKys8b2xkQ2hpbGRyZW5MZW5ndGgvMmBcblx0XHRcdGZvciAoXG5cdFx0XHRcdGxldCBzaWJEb20gPSBvbGREb20sIGogPSAwO1xuXHRcdFx0XHQoc2liRG9tID0gc2liRG9tLm5leHRTaWJsaW5nKSAmJiBqIDwgb2xkQ2hpbGRyZW4ubGVuZ3RoO1xuXHRcdFx0XHRqICs9IDJcblx0XHRcdCkge1xuXHRcdFx0XHRpZiAoc2liRG9tID09IG5ld0RvbSkge1xuXHRcdFx0XHRcdGJyZWFrIG91dGVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRwYXJlbnREb20uaW5zZXJ0QmVmb3JlKG5ld0RvbSwgb2xkRG9tKTtcblx0XHRcdG5leHREb20gPSBvbGREb207XG5cdFx0fVxuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBwcmUtY2FsY3VsYXRlZCB0aGUgbmV4dERPTSBub2RlLCB1c2UgaXQuIEVsc2UgY2FsY3VsYXRlIGl0IG5vd1xuXHQvLyBTdHJpY3RseSBjaGVjayBmb3IgYHVuZGVmaW5lZGAgaGVyZSBjdXogYG51bGxgIGlzIGEgdmFsaWQgdmFsdWUgb2YgYG5leHREb21gLlxuXHQvLyBTZWUgbW9yZSBkZXRhaWwgaW4gY3JlYXRlLWVsZW1lbnQuanM6Y3JlYXRlVk5vZGVcblx0aWYgKG5leHREb20gIT09IHVuZGVmaW5lZCkge1xuXHRcdG9sZERvbSA9IG5leHREb207XG5cdH0gZWxzZSB7XG5cdFx0b2xkRG9tID0gbmV3RG9tLm5leHRTaWJsaW5nO1xuXHR9XG5cblx0cmV0dXJuIG9sZERvbTtcbn1cbiIsICJpbXBvcnQgeyBJU19OT05fRElNRU5TSU9OQUwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi4vb3B0aW9ucyc7XG5cbi8qKlxuICogRGlmZiB0aGUgb2xkIGFuZCBuZXcgcHJvcGVydGllcyBvZiBhIFZOb2RlIGFuZCBhcHBseSBjaGFuZ2VzIHRvIHRoZSBET00gbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gZG9tIFRoZSBET00gbm9kZSB0byBhcHBseVxuICogY2hhbmdlcyB0b1xuICogQHBhcmFtIHtvYmplY3R9IG5ld1Byb3BzIFRoZSBuZXcgcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvbGRQcm9wcyBUaGUgb2xkIHByb3BzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzU3ZnIFdoZXRoZXIgb3Igbm90IHRoaXMgbm9kZSBpcyBhbiBTVkcgbm9kZVxuICogQHBhcmFtIHtib29sZWFufSBoeWRyYXRlIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiBoeWRyYXRpb24gbW9kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZlByb3BzKGRvbSwgbmV3UHJvcHMsIG9sZFByb3BzLCBpc1N2ZywgaHlkcmF0ZSkge1xuXHRsZXQgaTtcblxuXHRmb3IgKGkgaW4gb2xkUHJvcHMpIHtcblx0XHRpZiAoaSAhPT0gJ2NoaWxkcmVuJyAmJiBpICE9PSAna2V5JyAmJiAhKGkgaW4gbmV3UHJvcHMpKSB7XG5cdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIG51bGwsIG9sZFByb3BzW2ldLCBpc1N2Zyk7XG5cdFx0fVxuXHR9XG5cblx0Zm9yIChpIGluIG5ld1Byb3BzKSB7XG5cdFx0aWYgKFxuXHRcdFx0KCFoeWRyYXRlIHx8IHR5cGVvZiBuZXdQcm9wc1tpXSA9PSAnZnVuY3Rpb24nKSAmJlxuXHRcdFx0aSAhPT0gJ2NoaWxkcmVuJyAmJlxuXHRcdFx0aSAhPT0gJ2tleScgJiZcblx0XHRcdGkgIT09ICd2YWx1ZScgJiZcblx0XHRcdGkgIT09ICdjaGVja2VkJyAmJlxuXHRcdFx0b2xkUHJvcHNbaV0gIT09IG5ld1Byb3BzW2ldXG5cdFx0KSB7XG5cdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIG5ld1Byb3BzW2ldLCBvbGRQcm9wc1tpXSwgaXNTdmcpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBzZXRTdHlsZShzdHlsZSwga2V5LCB2YWx1ZSkge1xuXHRpZiAoa2V5WzBdID09PSAnLScpIHtcblx0XHRzdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcblx0fSBlbHNlIGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdFx0c3R5bGVba2V5XSA9ICcnO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnbnVtYmVyJyB8fCBJU19OT05fRElNRU5TSU9OQUwudGVzdChrZXkpKSB7XG5cdFx0c3R5bGVba2V5XSA9IHZhbHVlO1xuXHR9IGVsc2Uge1xuXHRcdHN0eWxlW2tleV0gPSB2YWx1ZSArICdweCc7XG5cdH1cbn1cblxuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSB2YWx1ZSBvbiBhIERPTSBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBkb20gVGhlIERPTSBub2RlIHRvIG1vZGlmeVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHNldFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0IHRoZSBwcm9wZXJ0eSB0b1xuICogQHBhcmFtIHsqfSBvbGRWYWx1ZSBUaGUgb2xkIHZhbHVlIHRoZSBwcm9wZXJ0eSBoYWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNTdmcgV2hldGhlciBvciBub3QgdGhpcyBET00gbm9kZSBpcyBhbiBTVkcgbm9kZSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnR5KGRvbSwgbmFtZSwgdmFsdWUsIG9sZFZhbHVlLCBpc1N2Zykge1xuXHRsZXQgdXNlQ2FwdHVyZTtcblxuXHRvOiBpZiAobmFtZSA9PT0gJ3N0eWxlJykge1xuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdGRvbS5zdHlsZS5jc3NUZXh0ID0gdmFsdWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0eXBlb2Ygb2xkVmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0ZG9tLnN0eWxlLmNzc1RleHQgPSBvbGRWYWx1ZSA9ICcnO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob2xkVmFsdWUpIHtcblx0XHRcdFx0Zm9yIChuYW1lIGluIG9sZFZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCEodmFsdWUgJiYgbmFtZSBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgJycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0Zm9yIChuYW1lIGluIHZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCFvbGRWYWx1ZSB8fCB2YWx1ZVtuYW1lXSAhPT0gb2xkVmFsdWVbbmFtZV0pIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgdmFsdWVbbmFtZV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQvLyBCZW5jaG1hcmsgZm9yIGNvbXBhcmlzb246IGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNTc0Yzk1NGJkYjk2NWI5YTAwOTY1YWM2XG5cdGVsc2UgaWYgKG5hbWVbMF0gPT09ICdvJyAmJiBuYW1lWzFdID09PSAnbicpIHtcblx0XHR1c2VDYXB0dXJlID0gbmFtZSAhPT0gKG5hbWUgPSBuYW1lLnJlcGxhY2UoL0NhcHR1cmUkLywgJycpKTtcblxuXHRcdC8vIEluZmVyIGNvcnJlY3QgY2FzaW5nIGZvciBET00gYnVpbHQtaW4gZXZlbnRzOlxuXHRcdGlmIChuYW1lLnRvTG93ZXJDYXNlKCkgaW4gZG9tKSBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDIpO1xuXHRcdGVsc2UgbmFtZSA9IG5hbWUuc2xpY2UoMik7XG5cblx0XHRpZiAoIWRvbS5fbGlzdGVuZXJzKSBkb20uX2xpc3RlbmVycyA9IHt9O1xuXHRcdGRvbS5fbGlzdGVuZXJzW25hbWUgKyB1c2VDYXB0dXJlXSA9IHZhbHVlO1xuXG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRpZiAoIW9sZFZhbHVlKSB7XG5cdFx0XHRcdGNvbnN0IGhhbmRsZXIgPSB1c2VDYXB0dXJlID8gZXZlbnRQcm94eUNhcHR1cmUgOiBldmVudFByb3h5O1xuXHRcdFx0XHRkb20uYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgaGFuZGxlciA9IHVzZUNhcHR1cmUgPyBldmVudFByb3h5Q2FwdHVyZSA6IGV2ZW50UHJveHk7XG5cdFx0XHRkb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobmFtZSAhPT0gJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJykge1xuXHRcdGlmIChpc1N2Zykge1xuXHRcdFx0Ly8gTm9ybWFsaXplIGluY29ycmVjdCBwcm9wIHVzYWdlIGZvciBTVkc6XG5cdFx0XHQvLyAtIHhsaW5rOmhyZWYgLyB4bGlua0hyZWYgLS0+IGhyZWYgKHhsaW5rOmhyZWYgd2FzIHJlbW92ZWQgZnJvbSBTVkcgYW5kIGlzbid0IG5lZWRlZClcblx0XHRcdC8vIC0gY2xhc3NOYW1lIC0tPiBjbGFzc1xuXHRcdFx0bmFtZSA9IG5hbWUucmVwbGFjZSgveGxpbmsoSHw6aCkvLCAnaCcpLnJlcGxhY2UoL3NOYW1lJC8sICdzJyk7XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdG5hbWUgIT09ICdocmVmJyAmJlxuXHRcdFx0bmFtZSAhPT0gJ2xpc3QnICYmXG5cdFx0XHRuYW1lICE9PSAnZm9ybScgJiZcblx0XHRcdC8vIERlZmF1bHQgdmFsdWUgaW4gYnJvd3NlcnMgaXMgYC0xYCBhbmQgYW4gZW1wdHkgc3RyaW5nIGlzXG5cdFx0XHQvLyBjYXN0IHRvIGAwYCBpbnN0ZWFkXG5cdFx0XHRuYW1lICE9PSAndGFiSW5kZXgnICYmXG5cdFx0XHRuYW1lICE9PSAnZG93bmxvYWQnICYmXG5cdFx0XHRuYW1lIGluIGRvbVxuXHRcdCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZG9tW25hbWVdID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG5cdFx0XHRcdC8vIGxhYmVsbGVkIGJyZWFrIGlzIDFiIHNtYWxsZXIgaGVyZSB0aGFuIGEgcmV0dXJuIHN0YXRlbWVudCAoc29ycnkpXG5cdFx0XHRcdGJyZWFrIG87XG5cdFx0XHR9IGNhdGNoIChlKSB7fVxuXHRcdH1cblxuXHRcdC8vIEFSSUEtYXR0cmlidXRlcyBoYXZlIGEgZGlmZmVyZW50IG5vdGlvbiBvZiBib29sZWFuIHZhbHVlcy5cblx0XHQvLyBUaGUgdmFsdWUgYGZhbHNlYCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYXR0cmlidXRlIG5vdFxuXHRcdC8vIGV4aXN0aW5nIG9uIHRoZSBET00sIHNvIHdlIGNhbid0IHJlbW92ZSBpdC4gRm9yIG5vbi1ib29sZWFuXG5cdFx0Ly8gQVJJQS1hdHRyaWJ1dGVzIHdlIGNvdWxkIHRyZWF0IGZhbHNlIGFzIGEgcmVtb3ZhbCwgYnV0IHRoZVxuXHRcdC8vIGFtb3VudCBvZiBleGNlcHRpb25zIHdvdWxkIGNvc3QgdXMgdG9vIG1hbnkgYnl0ZXMuIE9uIHRvcCBvZlxuXHRcdC8vIHRoYXQgb3RoZXIgVkRPTSBmcmFtZXdvcmtzIGFsc28gYWx3YXlzIHN0cmluZ2lmeSBgZmFsc2VgLlxuXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Ly8gbmV2ZXIgc2VyaWFsaXplIGZ1bmN0aW9ucyBhcyBhdHRyaWJ1dGUgdmFsdWVzXG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdHZhbHVlICE9IG51bGwgJiZcblx0XHRcdCh2YWx1ZSAhPT0gZmFsc2UgfHwgKG5hbWVbMF0gPT09ICdhJyAmJiBuYW1lWzFdID09PSAncicpKVxuXHRcdCkge1xuXHRcdFx0ZG9tLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogUHJveHkgYW4gZXZlbnQgdG8gaG9va2VkIGV2ZW50IGhhbmRsZXJzXG4gKiBAcGFyYW0ge0V2ZW50fSBlIFRoZSBldmVudCBvYmplY3QgZnJvbSB0aGUgYnJvd3NlclxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZXZlbnRQcm94eShlKSB7XG5cdHRoaXMuX2xpc3RlbmVyc1tlLnR5cGUgKyBmYWxzZV0ob3B0aW9ucy5ldmVudCA/IG9wdGlvbnMuZXZlbnQoZSkgOiBlKTtcbn1cblxuZnVuY3Rpb24gZXZlbnRQcm94eUNhcHR1cmUoZSkge1xuXHR0aGlzLl9saXN0ZW5lcnNbZS50eXBlICsgdHJ1ZV0ob3B0aW9ucy5ldmVudCA/IG9wdGlvbnMuZXZlbnQoZSkgOiBlKTtcbn1cbiIsICJpbXBvcnQgeyBFTVBUWV9PQkogfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBnZXREb21TaWJsaW5nIH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgZGlmZkNoaWxkcmVuIH0gZnJvbSAnLi9jaGlsZHJlbic7XG5pbXBvcnQgeyBkaWZmUHJvcHMsIHNldFByb3BlcnR5IH0gZnJvbSAnLi9wcm9wcyc7XG5pbXBvcnQgeyBhc3NpZ24sIHJlbW92ZU5vZGUsIHNsaWNlIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuLi9vcHRpb25zJztcblxuLyoqXG4gKiBEaWZmIHR3byB2aXJ0dWFsIG5vZGVzIGFuZCBhcHBseSBwcm9wZXIgY2hhbmdlcyB0byB0aGUgRE9NXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIHBhcmVudCBvZiB0aGUgRE9NIGVsZW1lbnRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBuZXdWTm9kZSBUaGUgbmV3IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IG9sZFZOb2RlIFRoZSBvbGQgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdC4gTW9kaWZpZWQgYnkgZ2V0Q2hpbGRDb250ZXh0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzU3ZnIFdoZXRoZXIgb3Igbm90IHRoaXMgZWxlbWVudCBpcyBhbiBTVkcgbm9kZVxuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4uL2ludGVybmFsJykuUHJlYWN0RWxlbWVudD59IGV4Y2Vzc0RvbUNoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLi4vaW50ZXJuYWwnKS5Db21wb25lbnQ+fSBjb21taXRRdWV1ZSBMaXN0IG9mIGNvbXBvbmVudHNcbiAqIHdoaWNoIGhhdmUgY2FsbGJhY2tzIHRvIGludm9rZSBpbiBjb21taXRSb290XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBvbGREb20gVGhlIGN1cnJlbnQgYXR0YWNoZWQgRE9NXG4gKiBlbGVtZW50IGFueSBuZXcgZG9tIGVsZW1lbnRzIHNob3VsZCBiZSBwbGFjZWQgYXJvdW5kLiBMaWtlbHkgYG51bGxgIG9uIGZpcnN0XG4gKiByZW5kZXIgKGV4Y2VwdCB3aGVuIGh5ZHJhdGluZykuIENhbiBiZSBhIHNpYmxpbmcgRE9NIGVsZW1lbnQgd2hlbiBkaWZmaW5nXG4gKiBGcmFnbWVudHMgdGhhdCBoYXZlIHNpYmxpbmdzLiBJbiBtb3N0IGNhc2VzLCBpdCBzdGFydHMgb3V0IGFzIGBvbGRDaGlsZHJlblswXS5fZG9tYC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzSHlkcmF0aW5nXSBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmKFxuXHRwYXJlbnREb20sXG5cdG5ld1ZOb2RlLFxuXHRvbGRWTm9kZSxcblx0Z2xvYmFsQ29udGV4dCxcblx0aXNTdmcsXG5cdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRjb21taXRRdWV1ZSxcblx0b2xkRG9tLFxuXHRpc0h5ZHJhdGluZ1xuKSB7XG5cdGxldCB0bXAsXG5cdFx0bmV3VHlwZSA9IG5ld1ZOb2RlLnR5cGU7XG5cblx0Ly8gV2hlbiBwYXNzaW5nIHRocm91Z2ggY3JlYXRlRWxlbWVudCBpdCBhc3NpZ25zIHRoZSBvYmplY3Rcblx0Ly8gY29uc3RydWN0b3IgYXMgdW5kZWZpbmVkLiBUaGlzIHRvIHByZXZlbnQgSlNPTi1pbmplY3Rpb24uXG5cdGlmIChuZXdWTm9kZS5jb25zdHJ1Y3RvciAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuXHQvLyBJZiB0aGUgcHJldmlvdXMgZGlmZiBiYWlsZWQgb3V0LCByZXN1bWUgY3JlYXRpbmcvaHlkcmF0aW5nLlxuXHRpZiAob2xkVk5vZGUuX2h5ZHJhdGluZyAhPSBudWxsKSB7XG5cdFx0aXNIeWRyYXRpbmcgPSBvbGRWTm9kZS5faHlkcmF0aW5nO1xuXHRcdG9sZERvbSA9IG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHRcdC8vIGlmIHdlIHJlc3VtZSwgd2Ugd2FudCB0aGUgdHJlZSB0byBiZSBcInVubG9ja2VkXCJcblx0XHRuZXdWTm9kZS5faHlkcmF0aW5nID0gbnVsbDtcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IFtvbGREb21dO1xuXHR9XG5cblx0aWYgKCh0bXAgPSBvcHRpb25zLl9kaWZmKSkgdG1wKG5ld1ZOb2RlKTtcblxuXHR0cnkge1xuXHRcdG91dGVyOiBpZiAodHlwZW9mIG5ld1R5cGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0bGV0IGMsIGlzTmV3LCBvbGRQcm9wcywgb2xkU3RhdGUsIHNuYXBzaG90LCBjbGVhclByb2Nlc3NpbmdFeGNlcHRpb247XG5cdFx0XHRsZXQgbmV3UHJvcHMgPSBuZXdWTm9kZS5wcm9wcztcblxuXHRcdFx0Ly8gTmVjZXNzYXJ5IGZvciBjcmVhdGVDb250ZXh0IGFwaS4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHdpbGwgcGFzc1xuXHRcdFx0Ly8gdGhlIGNvbnRleHQgdmFsdWUgYXMgYHRoaXMuY29udGV4dGAganVzdCBmb3IgdGhpcyBjb21wb25lbnQuXG5cdFx0XHR0bXAgPSBuZXdUeXBlLmNvbnRleHRUeXBlO1xuXHRcdFx0bGV0IHByb3ZpZGVyID0gdG1wICYmIGdsb2JhbENvbnRleHRbdG1wLl9pZF07XG5cdFx0XHRsZXQgY29tcG9uZW50Q29udGV4dCA9IHRtcFxuXHRcdFx0XHQ/IHByb3ZpZGVyXG5cdFx0XHRcdFx0PyBwcm92aWRlci5wcm9wcy52YWx1ZVxuXHRcdFx0XHRcdDogdG1wLl9kZWZhdWx0VmFsdWVcblx0XHRcdFx0OiBnbG9iYWxDb250ZXh0O1xuXG5cdFx0XHQvLyBHZXQgY29tcG9uZW50IGFuZCBzZXQgaXQgdG8gYGNgXG5cdFx0XHRpZiAob2xkVk5vZGUuX2NvbXBvbmVudCkge1xuXHRcdFx0XHRjID0gbmV3Vk5vZGUuX2NvbXBvbmVudCA9IG9sZFZOb2RlLl9jb21wb25lbnQ7XG5cdFx0XHRcdGNsZWFyUHJvY2Vzc2luZ0V4Y2VwdGlvbiA9IGMuX3Byb2Nlc3NpbmdFeGNlcHRpb24gPSBjLl9wZW5kaW5nRXJyb3I7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJbnN0YW50aWF0ZSB0aGUgbmV3IGNvbXBvbmVudFxuXHRcdFx0XHRpZiAoJ3Byb3RvdHlwZScgaW4gbmV3VHlwZSAmJiBuZXdUeXBlLnByb3RvdHlwZS5yZW5kZXIpIHtcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlIFRoZSBjaGVjayBhYm92ZSB2ZXJpZmllcyB0aGF0IG5ld1R5cGUgaXMgc3VwcG9zZSB0byBiZSBjb25zdHJ1Y3RlZFxuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jb21wb25lbnQgPSBjID0gbmV3IG5ld1R5cGUobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlIFRydXN0IG1lLCBDb21wb25lbnQgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlIHdlIHdhbnRcblx0XHRcdFx0XHRuZXdWTm9kZS5fY29tcG9uZW50ID0gYyA9IG5ldyBDb21wb25lbnQobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpO1xuXHRcdFx0XHRcdGMuY29uc3RydWN0b3IgPSBuZXdUeXBlO1xuXHRcdFx0XHRcdGMucmVuZGVyID0gZG9SZW5kZXI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHByb3ZpZGVyKSBwcm92aWRlci5zdWIoYyk7XG5cblx0XHRcdFx0Yy5wcm9wcyA9IG5ld1Byb3BzO1xuXHRcdFx0XHRpZiAoIWMuc3RhdGUpIGMuc3RhdGUgPSB7fTtcblx0XHRcdFx0Yy5jb250ZXh0ID0gY29tcG9uZW50Q29udGV4dDtcblx0XHRcdFx0Yy5fZ2xvYmFsQ29udGV4dCA9IGdsb2JhbENvbnRleHQ7XG5cdFx0XHRcdGlzTmV3ID0gYy5fZGlydHkgPSB0cnVlO1xuXHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSW52b2tlIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1xuXHRcdFx0aWYgKGMuX25leHRTdGF0ZSA9PSBudWxsKSB7XG5cdFx0XHRcdGMuX25leHRTdGF0ZSA9IGMuc3RhdGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAobmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgIT0gbnVsbCkge1xuXHRcdFx0XHRpZiAoYy5fbmV4dFN0YXRlID09IGMuc3RhdGUpIHtcblx0XHRcdFx0XHRjLl9uZXh0U3RhdGUgPSBhc3NpZ24oe30sIGMuX25leHRTdGF0ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRhc3NpZ24oXG5cdFx0XHRcdFx0Yy5fbmV4dFN0YXRlLFxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5ld1Byb3BzLCBjLl9uZXh0U3RhdGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdG9sZFByb3BzID0gYy5wcm9wcztcblx0XHRcdG9sZFN0YXRlID0gYy5zdGF0ZTtcblxuXHRcdFx0Ly8gSW52b2tlIHByZS1yZW5kZXIgbGlmZWN5Y2xlIG1ldGhvZHNcblx0XHRcdGlmIChpc05ldykge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0bmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPT0gbnVsbCAmJlxuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbE1vdW50ICE9IG51bGxcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsTW91bnQoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjLmNvbXBvbmVudERpZE1vdW50ICE9IG51bGwpIHtcblx0XHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MucHVzaChjLmNvbXBvbmVudERpZE1vdW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09IG51bGwgJiZcblx0XHRcdFx0XHRuZXdQcm9wcyAhPT0gb2xkUHJvcHMgJiZcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgIT0gbnVsbFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCghYy5fZm9yY2UgJiZcblx0XHRcdFx0XHRcdGMuc2hvdWxkQ29tcG9uZW50VXBkYXRlICE9IG51bGwgJiZcblx0XHRcdFx0XHRcdGMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKFxuXHRcdFx0XHRcdFx0XHRuZXdQcm9wcyxcblx0XHRcdFx0XHRcdFx0Yy5fbmV4dFN0YXRlLFxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRDb250ZXh0XG5cdFx0XHRcdFx0XHQpID09PSBmYWxzZSkgfHxcblx0XHRcdFx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPT09IG9sZFZOb2RlLl9vcmlnaW5hbFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblx0XHRcdFx0XHQvLyBNb3JlIGluZm8gYWJvdXQgdGhpcyBoZXJlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9Kb3ZpRGVDcm9vY2svYmVjNWYyY2U5MzU0NGQyZTYwNzBlZjhlMDAzNmU0ZThcblx0XHRcdFx0XHRpZiAobmV3Vk5vZGUuX29yaWdpbmFsICE9PSBvbGRWTm9kZS5fb3JpZ2luYWwpIGMuX2RpcnR5ID0gZmFsc2U7XG5cdFx0XHRcdFx0Yy5fdm5vZGUgPSBuZXdWTm9kZTtcblx0XHRcdFx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRcdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBvbGRWTm9kZS5fY2hpbGRyZW47XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuLmZvckVhY2godm5vZGUgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHZub2RlKSB2bm9kZS5fcGFyZW50ID0gbmV3Vk5vZGU7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0aWYgKGMuX3JlbmRlckNhbGxiYWNrcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGNvbW1pdFF1ZXVlLnB1c2goYyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWsgb3V0ZXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoYy5jb21wb25lbnRXaWxsVXBkYXRlICE9IG51bGwpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVcGRhdGUobmV3UHJvcHMsIGMuX25leHRTdGF0ZSwgY29tcG9uZW50Q29udGV4dCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoYy5jb21wb25lbnREaWRVcGRhdGUgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKCgpID0+IHtcblx0XHRcdFx0XHRcdGMuY29tcG9uZW50RGlkVXBkYXRlKG9sZFByb3BzLCBvbGRTdGF0ZSwgc25hcHNob3QpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGMuY29udGV4dCA9IGNvbXBvbmVudENvbnRleHQ7XG5cdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRjLl92bm9kZSA9IG5ld1ZOb2RlO1xuXHRcdFx0Yy5fcGFyZW50RG9tID0gcGFyZW50RG9tO1xuXG5cdFx0XHRsZXQgcmVuZGVySG9vayA9IG9wdGlvbnMuX3JlbmRlcixcblx0XHRcdFx0Y291bnQgPSAwO1xuXHRcdFx0aWYgKCdwcm90b3R5cGUnIGluIG5ld1R5cGUgJiYgbmV3VHlwZS5wcm90b3R5cGUucmVuZGVyKSB7XG5cdFx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cdFx0XHRcdGMuX2RpcnR5ID0gZmFsc2U7XG5cblx0XHRcdFx0aWYgKHJlbmRlckhvb2spIHJlbmRlckhvb2sobmV3Vk5vZGUpO1xuXG5cdFx0XHRcdHRtcCA9IGMucmVuZGVyKGMucHJvcHMsIGMuc3RhdGUsIGMuY29udGV4dCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0Yy5fZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRpZiAocmVuZGVySG9vaykgcmVuZGVySG9vayhuZXdWTm9kZSk7XG5cblx0XHRcdFx0XHR0bXAgPSBjLnJlbmRlcihjLnByb3BzLCBjLnN0YXRlLCBjLmNvbnRleHQpO1xuXG5cdFx0XHRcdFx0Ly8gSGFuZGxlIHNldFN0YXRlIGNhbGxlZCBpbiByZW5kZXIsIHNlZSAjMjU1M1xuXHRcdFx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cdFx0XHRcdH0gd2hpbGUgKGMuX2RpcnR5ICYmICsrY291bnQgPCAyNSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhhbmRsZSBzZXRTdGF0ZSBjYWxsZWQgaW4gcmVuZGVyLCBzZWUgIzI1NTNcblx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cblx0XHRcdGlmIChjLmdldENoaWxkQ29udGV4dCAhPSBudWxsKSB7XG5cdFx0XHRcdGdsb2JhbENvbnRleHQgPSBhc3NpZ24oYXNzaWduKHt9LCBnbG9iYWxDb250ZXh0KSwgYy5nZXRDaGlsZENvbnRleHQoKSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghaXNOZXcgJiYgYy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAhPSBudWxsKSB7XG5cdFx0XHRcdHNuYXBzaG90ID0gYy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShvbGRQcm9wcywgb2xkU3RhdGUpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgaXNUb3BMZXZlbEZyYWdtZW50ID1cblx0XHRcdFx0dG1wICE9IG51bGwgJiYgdG1wLnR5cGUgPT09IEZyYWdtZW50ICYmIHRtcC5rZXkgPT0gbnVsbDtcblx0XHRcdGxldCByZW5kZXJSZXN1bHQgPSBpc1RvcExldmVsRnJhZ21lbnQgPyB0bXAucHJvcHMuY2hpbGRyZW4gOiB0bXA7XG5cblx0XHRcdGRpZmZDaGlsZHJlbihcblx0XHRcdFx0cGFyZW50RG9tLFxuXHRcdFx0XHRBcnJheS5pc0FycmF5KHJlbmRlclJlc3VsdCkgPyByZW5kZXJSZXN1bHQgOiBbcmVuZGVyUmVzdWx0XSxcblx0XHRcdFx0bmV3Vk5vZGUsXG5cdFx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0XHRpc1N2Zyxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRcdGNvbW1pdFF1ZXVlLFxuXHRcdFx0XHRvbGREb20sXG5cdFx0XHRcdGlzSHlkcmF0aW5nXG5cdFx0XHQpO1xuXG5cdFx0XHRjLmJhc2UgPSBuZXdWTm9kZS5fZG9tO1xuXG5cdFx0XHQvLyBXZSBzdWNjZXNzZnVsbHkgcmVuZGVyZWQgdGhpcyBWTm9kZSwgdW5zZXQgYW55IHN0b3JlZCBoeWRyYXRpb24vYmFpbG91dCBzdGF0ZTpcblx0XHRcdG5ld1ZOb2RlLl9oeWRyYXRpbmcgPSBudWxsO1xuXG5cdFx0XHRpZiAoYy5fcmVuZGVyQ2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdFx0XHRjb21taXRRdWV1ZS5wdXNoKGMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2xlYXJQcm9jZXNzaW5nRXhjZXB0aW9uKSB7XG5cdFx0XHRcdGMuX3BlbmRpbmdFcnJvciA9IGMuX3Byb2Nlc3NpbmdFeGNlcHRpb24gPSBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRjLl9mb3JjZSA9IGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRleGNlc3NEb21DaGlsZHJlbiA9PSBudWxsICYmXG5cdFx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPT09IG9sZFZOb2RlLl9vcmlnaW5hbFxuXHRcdCkge1xuXHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0fSBlbHNlIHtcblx0XHRcdG5ld1ZOb2RlLl9kb20gPSBkaWZmRWxlbWVudE5vZGVzKFxuXHRcdFx0XHRvbGRWTm9kZS5fZG9tLFxuXHRcdFx0XHRuZXdWTm9kZSxcblx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdGdsb2JhbENvbnRleHQsXG5cdFx0XHRcdGlzU3ZnLFxuXHRcdFx0XHRleGNlc3NEb21DaGlsZHJlbixcblx0XHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRcdGlzSHlkcmF0aW5nXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGlmICgodG1wID0gb3B0aW9ucy5kaWZmZWQpKSB0bXAobmV3Vk5vZGUpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gbnVsbDtcblx0XHQvLyBpZiBoeWRyYXRpbmcgb3IgY3JlYXRpbmcgaW5pdGlhbCB0cmVlLCBiYWlsb3V0IHByZXNlcnZlcyBET006XG5cdFx0aWYgKGlzSHlkcmF0aW5nIHx8IGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdG5ld1ZOb2RlLl9kb20gPSBvbGREb207XG5cdFx0XHRuZXdWTm9kZS5faHlkcmF0aW5nID0gISFpc0h5ZHJhdGluZztcblx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuW2V4Y2Vzc0RvbUNoaWxkcmVuLmluZGV4T2Yob2xkRG9tKV0gPSBudWxsO1xuXHRcdFx0Ly8gXiBjb3VsZCBwb3NzaWJseSBiZSBzaW1wbGlmaWVkIHRvOlxuXHRcdFx0Ly8gZXhjZXNzRG9tQ2hpbGRyZW4ubGVuZ3RoID0gMDtcblx0XHR9XG5cdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBuZXdWTm9kZSwgb2xkVk5vZGUpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50Pn0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzXG4gKiB3aGljaCBoYXZlIGNhbGxiYWNrcyB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IHJvb3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1pdFJvb3QoY29tbWl0UXVldWUsIHJvb3QpIHtcblx0aWYgKG9wdGlvbnMuX2NvbW1pdCkgb3B0aW9ucy5fY29tbWl0KHJvb3QsIGNvbW1pdFF1ZXVlKTtcblxuXHRjb21taXRRdWV1ZS5zb21lKGMgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlIFJldXNlIHRoZSBjb21taXRRdWV1ZSB2YXJpYWJsZSBoZXJlIHNvIHRoZSB0eXBlIGNoYW5nZXNcblx0XHRcdGNvbW1pdFF1ZXVlID0gYy5fcmVuZGVyQ2FsbGJhY2tzO1xuXHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzID0gW107XG5cdFx0XHRjb21taXRRdWV1ZS5zb21lKGNiID0+IHtcblx0XHRcdFx0Ly8gQHRzLWlnbm9yZSBTZWUgYWJvdmUgdHMtaWdub3JlIG9uIGNvbW1pdFF1ZXVlXG5cdFx0XHRcdGNiLmNhbGwoYyk7XG5cdFx0XHR9KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIGMuX3Zub2RlKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIERpZmYgdHdvIHZpcnR1YWwgbm9kZXMgcmVwcmVzZW50aW5nIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBkb20gVGhlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZ1xuICogdGhlIHZpcnR1YWwgbm9kZXMgYmVpbmcgZGlmZmVkXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZX0gbmV3Vk5vZGUgVGhlIG5ldyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBvbGRWTm9kZSBUaGUgb2xkIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IGdsb2JhbENvbnRleHQgVGhlIGN1cnJlbnQgY29udGV4dCBvYmplY3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNTdmcgV2hldGhlciBvciBub3QgdGhpcyBET00gbm9kZSBpcyBhbiBTVkcgbm9kZVxuICogQHBhcmFtIHsqfSBleGNlc3NEb21DaGlsZHJlblxuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50Pn0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzXG4gKiB3aGljaCBoYXZlIGNhbGxiYWNrcyB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtib29sZWFufSBpc0h5ZHJhdGluZyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGRpZmZFbGVtZW50Tm9kZXMoXG5cdGRvbSxcblx0bmV3Vk5vZGUsXG5cdG9sZFZOb2RlLFxuXHRnbG9iYWxDb250ZXh0LFxuXHRpc1N2Zyxcblx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdGNvbW1pdFF1ZXVlLFxuXHRpc0h5ZHJhdGluZ1xuKSB7XG5cdGxldCBvbGRQcm9wcyA9IG9sZFZOb2RlLnByb3BzO1xuXHRsZXQgbmV3UHJvcHMgPSBuZXdWTm9kZS5wcm9wcztcblx0bGV0IG5vZGVUeXBlID0gbmV3Vk5vZGUudHlwZTtcblx0bGV0IGkgPSAwO1xuXG5cdC8vIFRyYWNrcyBlbnRlcmluZyBhbmQgZXhpdGluZyBTVkcgbmFtZXNwYWNlIHdoZW4gZGVzY2VuZGluZyB0aHJvdWdoIHRoZSB0cmVlLlxuXHRpZiAobm9kZVR5cGUgPT09ICdzdmcnKSBpc1N2ZyA9IHRydWU7XG5cblx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRmb3IgKDsgaSA8IGV4Y2Vzc0RvbUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBjaGlsZCA9IGV4Y2Vzc0RvbUNoaWxkcmVuW2ldO1xuXG5cdFx0XHQvLyBpZiBuZXdWTm9kZSBtYXRjaGVzIGFuIGVsZW1lbnQgaW4gZXhjZXNzRG9tQ2hpbGRyZW4gb3IgdGhlIGBkb21gXG5cdFx0XHQvLyBhcmd1bWVudCBtYXRjaGVzIGFuIGVsZW1lbnQgaW4gZXhjZXNzRG9tQ2hpbGRyZW4sIHJlbW92ZSBpdCBmcm9tXG5cdFx0XHQvLyBleGNlc3NEb21DaGlsZHJlbiBzbyBpdCBpc24ndCBsYXRlciByZW1vdmVkIGluIGRpZmZDaGlsZHJlblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjaGlsZCAmJlxuXHRcdFx0XHQnc2V0QXR0cmlidXRlJyBpbiBjaGlsZCA9PT0gISFub2RlVHlwZSAmJlxuXHRcdFx0XHQobm9kZVR5cGUgPyBjaGlsZC5sb2NhbE5hbWUgPT09IG5vZGVUeXBlIDogY2hpbGQubm9kZVR5cGUgPT09IDMpXG5cdFx0XHQpIHtcblx0XHRcdFx0ZG9tID0gY2hpbGQ7XG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuW2ldID0gbnVsbDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGRvbSA9PSBudWxsKSB7XG5cdFx0aWYgKG5vZGVUeXBlID09PSBudWxsKSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlIGNyZWF0ZVRleHROb2RlIHJldHVybnMgVGV4dCwgd2UgZXhwZWN0IFByZWFjdEVsZW1lbnRcblx0XHRcdHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuZXdQcm9wcyk7XG5cdFx0fVxuXG5cdFx0aWYgKGlzU3ZnKSB7XG5cdFx0XHRkb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXG5cdFx0XHRcdCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG5cdFx0XHRcdC8vIEB0cy1pZ25vcmUgV2Uga25vdyBgbmV3Vk5vZGUudHlwZWAgaXMgYSBzdHJpbmdcblx0XHRcdFx0bm9kZVR5cGVcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdC8vIEB0cy1pZ25vcmUgV2Uga25vdyBgbmV3Vk5vZGUudHlwZWAgaXMgYSBzdHJpbmdcblx0XHRcdFx0bm9kZVR5cGUsXG5cdFx0XHRcdG5ld1Byb3BzLmlzICYmIG5ld1Byb3BzXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vIHdlIGNyZWF0ZWQgYSBuZXcgcGFyZW50LCBzbyBub25lIG9mIHRoZSBwcmV2aW91c2x5IGF0dGFjaGVkIGNoaWxkcmVuIGNhbiBiZSByZXVzZWQ6XG5cdFx0ZXhjZXNzRG9tQ2hpbGRyZW4gPSBudWxsO1xuXHRcdC8vIHdlIGFyZSBjcmVhdGluZyBhIG5ldyBub2RlLCBzbyB3ZSBjYW4gYXNzdW1lIHRoaXMgaXMgYSBuZXcgc3VidHJlZSAoaW4gY2FzZSB3ZSBhcmUgaHlkcmF0aW5nKSwgdGhpcyBkZW9wdHMgdGhlIGh5ZHJhdGVcblx0XHRpc0h5ZHJhdGluZyA9IGZhbHNlO1xuXHR9XG5cblx0aWYgKG5vZGVUeXBlID09PSBudWxsKSB7XG5cdFx0Ly8gRHVyaW5nIGh5ZHJhdGlvbiwgd2Ugc3RpbGwgaGF2ZSB0byBzcGxpdCBtZXJnZWQgdGV4dCBmcm9tIFNTUidkIEhUTUwuXG5cdFx0aWYgKG9sZFByb3BzICE9PSBuZXdQcm9wcyAmJiAoIWlzSHlkcmF0aW5nIHx8IGRvbS5kYXRhICE9PSBuZXdQcm9wcykpIHtcblx0XHRcdGRvbS5kYXRhID0gbmV3UHJvcHM7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIElmIGV4Y2Vzc0RvbUNoaWxkcmVuIHdhcyBub3QgbnVsbCwgcmVwb3B1bGF0ZSBpdCB3aXRoIHRoZSBjdXJyZW50IGVsZW1lbnQncyBjaGlsZHJlbjpcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IGV4Y2Vzc0RvbUNoaWxkcmVuICYmIHNsaWNlLmNhbGwoZG9tLmNoaWxkTm9kZXMpO1xuXG5cdFx0b2xkUHJvcHMgPSBvbGRWTm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7XG5cblx0XHRsZXQgb2xkSHRtbCA9IG9sZFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xuXHRcdGxldCBuZXdIdG1sID0gbmV3UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG5cblx0XHQvLyBEdXJpbmcgaHlkcmF0aW9uLCBwcm9wcyBhcmUgbm90IGRpZmZlZCBhdCBhbGwgKGluY2x1ZGluZyBkYW5nZXJvdXNseVNldElubmVySFRNTClcblx0XHQvLyBAVE9ETyB3ZSBzaG91bGQgd2FybiBpbiBkZWJ1ZyBtb2RlIHdoZW4gcHJvcHMgZG9uJ3QgbWF0Y2ggaGVyZS5cblx0XHRpZiAoIWlzSHlkcmF0aW5nKSB7XG5cdFx0XHQvLyBCdXQsIGlmIHdlIGFyZSBpbiBhIHNpdHVhdGlvbiB3aGVyZSB3ZSBhcmUgdXNpbmcgZXhpc3RpbmcgRE9NIChlLmcuIHJlcGxhY2VOb2RlKVxuXHRcdFx0Ly8gd2Ugc2hvdWxkIHJlYWQgdGhlIGV4aXN0aW5nIERPTSBhdHRyaWJ1dGVzIHRvIGRpZmYgdGhlbVxuXHRcdFx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdFx0b2xkUHJvcHMgPSB7fTtcblx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGRvbS5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0b2xkUHJvcHNbZG9tLmF0dHJpYnV0ZXNbaV0ubmFtZV0gPSBkb20uYXR0cmlidXRlc1tpXS52YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAobmV3SHRtbCB8fCBvbGRIdG1sKSB7XG5cdFx0XHRcdC8vIEF2b2lkIHJlLWFwcGx5aW5nIHRoZSBzYW1lICdfX2h0bWwnIGlmIGl0IGRpZCBub3QgY2hhbmdlZCBiZXR3ZWVuIHJlLXJlbmRlclxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0IW5ld0h0bWwgfHxcblx0XHRcdFx0XHQoKCFvbGRIdG1sIHx8IG5ld0h0bWwuX19odG1sICE9IG9sZEh0bWwuX19odG1sKSAmJlxuXHRcdFx0XHRcdFx0bmV3SHRtbC5fX2h0bWwgIT09IGRvbS5pbm5lckhUTUwpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGRvbS5pbm5lckhUTUwgPSAobmV3SHRtbCAmJiBuZXdIdG1sLl9faHRtbCkgfHwgJyc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRkaWZmUHJvcHMoZG9tLCBuZXdQcm9wcywgb2xkUHJvcHMsIGlzU3ZnLCBpc0h5ZHJhdGluZyk7XG5cblx0XHQvLyBJZiB0aGUgbmV3IHZub2RlIGRpZG4ndCBoYXZlIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLCBkaWZmIGl0cyBjaGlsZHJlblxuXHRcdGlmIChuZXdIdG1sKSB7XG5cdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBbXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aSA9IG5ld1ZOb2RlLnByb3BzLmNoaWxkcmVuO1xuXHRcdFx0ZGlmZkNoaWxkcmVuKFxuXHRcdFx0XHRkb20sXG5cdFx0XHRcdEFycmF5LmlzQXJyYXkoaSkgPyBpIDogW2ldLFxuXHRcdFx0XHRuZXdWTm9kZSxcblx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdGdsb2JhbENvbnRleHQsXG5cdFx0XHRcdGlzU3ZnICYmIG5vZGVUeXBlICE9PSAnZm9yZWlnbk9iamVjdCcsXG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5cblx0XHRcdFx0XHQ/IGV4Y2Vzc0RvbUNoaWxkcmVuWzBdXG5cdFx0XHRcdFx0OiBvbGRWTm9kZS5fY2hpbGRyZW4gJiYgZ2V0RG9tU2libGluZyhvbGRWTm9kZSwgMCksXG5cdFx0XHRcdGlzSHlkcmF0aW5nXG5cdFx0XHQpO1xuXG5cdFx0XHQvLyBSZW1vdmUgY2hpbGRyZW4gdGhhdCBhcmUgbm90IHBhcnQgb2YgYW55IHZub2RlLlxuXHRcdFx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdFx0Zm9yIChpID0gZXhjZXNzRG9tQ2hpbGRyZW4ubGVuZ3RoOyBpLS07ICkge1xuXHRcdFx0XHRcdGlmIChleGNlc3NEb21DaGlsZHJlbltpXSAhPSBudWxsKSByZW1vdmVOb2RlKGV4Y2Vzc0RvbUNoaWxkcmVuW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIChhcyBhYm92ZSwgZG9uJ3QgZGlmZiBwcm9wcyBkdXJpbmcgaHlkcmF0aW9uKVxuXHRcdGlmICghaXNIeWRyYXRpbmcpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0J3ZhbHVlJyBpbiBuZXdQcm9wcyAmJlxuXHRcdFx0XHQoaSA9IG5ld1Byb3BzLnZhbHVlKSAhPT0gdW5kZWZpbmVkICYmXG5cdFx0XHRcdC8vICMyNzU2IEZvciB0aGUgPHByb2dyZXNzPi1lbGVtZW50IHRoZSBpbml0aWFsIHZhbHVlIGlzIDAsXG5cdFx0XHRcdC8vIGRlc3BpdGUgdGhlIGF0dHJpYnV0ZSBub3QgYmVpbmcgcHJlc2VudC4gV2hlbiB0aGUgYXR0cmlidXRlXG5cdFx0XHRcdC8vIGlzIG1pc3NpbmcgdGhlIHByb2dyZXNzIGJhciBpcyB0cmVhdGVkIGFzIGluZGV0ZXJtaW5hdGUuXG5cdFx0XHRcdC8vIFRvIGZpeCB0aGF0IHdlJ2xsIGFsd2F5cyB1cGRhdGUgaXQgd2hlbiBpdCBpcyAwIGZvciBwcm9ncmVzcyBlbGVtZW50c1xuXHRcdFx0XHQoaSAhPT0gZG9tLnZhbHVlIHx8XG5cdFx0XHRcdFx0KG5vZGVUeXBlID09PSAncHJvZ3Jlc3MnICYmICFpKSB8fFxuXHRcdFx0XHRcdC8vIFRoaXMgaXMgb25seSBmb3IgSUUgMTEgdG8gZml4IDxzZWxlY3Q+IHZhbHVlIG5vdCBiZWluZyB1cGRhdGVkLlxuXHRcdFx0XHRcdC8vIFRvIGF2b2lkIGEgc3RhbGUgc2VsZWN0IHZhbHVlIHdlIG5lZWQgdG8gc2V0IHRoZSBvcHRpb24udmFsdWVcblx0XHRcdFx0XHQvLyBhZ2Fpbiwgd2hpY2ggdHJpZ2dlcnMgSUUxMSB0byByZS1ldmFsdWF0ZSB0aGUgc2VsZWN0IHZhbHVlXG5cdFx0XHRcdFx0KG5vZGVUeXBlID09PSAnb3B0aW9uJyAmJiBpICE9PSBvbGRQcm9wcy52YWx1ZSkpXG5cdFx0XHQpIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCAndmFsdWUnLCBpLCBvbGRQcm9wcy52YWx1ZSwgZmFsc2UpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHQnY2hlY2tlZCcgaW4gbmV3UHJvcHMgJiZcblx0XHRcdFx0KGkgPSBuZXdQcm9wcy5jaGVja2VkKSAhPT0gdW5kZWZpbmVkICYmXG5cdFx0XHRcdGkgIT09IGRvbS5jaGVja2VkXG5cdFx0XHQpIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCAnY2hlY2tlZCcsIGksIG9sZFByb3BzLmNoZWNrZWQsIGZhbHNlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZG9tO1xufVxuXG4vKipcbiAqIEludm9rZSBvciB1cGRhdGUgYSByZWYsIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGlzIGEgZnVuY3Rpb24gb3Igb2JqZWN0IHJlZi5cbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSByZWZcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IHZub2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJlZihyZWYsIHZhbHVlLCB2bm9kZSkge1xuXHR0cnkge1xuXHRcdGlmICh0eXBlb2YgcmVmID09ICdmdW5jdGlvbicpIHJlZih2YWx1ZSk7XG5cdFx0ZWxzZSByZWYuY3VycmVudCA9IHZhbHVlO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCB2bm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBVbm1vdW50IGEgdmlydHVhbCBub2RlIGZyb20gdGhlIHRyZWUgYW5kIGFwcGx5IERPTSBjaGFuZ2VzXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGUgVGhlIHZpcnR1YWwgbm9kZSB0byB1bm1vdW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5WTm9kZX0gcGFyZW50Vk5vZGUgVGhlIHBhcmVudCBvZiB0aGUgVk5vZGUgdGhhdFxuICogaW5pdGlhdGVkIHRoZSB1bm1vdW50XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtza2lwUmVtb3ZlXSBGbGFnIHRoYXQgaW5kaWNhdGVzIHRoYXQgYSBwYXJlbnQgbm9kZSBvZiB0aGVcbiAqIGN1cnJlbnQgZWxlbWVudCBpcyBhbHJlYWR5IGRldGFjaGVkIGZyb20gdGhlIERPTS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnQodm5vZGUsIHBhcmVudFZOb2RlLCBza2lwUmVtb3ZlKSB7XG5cdGxldCByO1xuXHRpZiAob3B0aW9ucy51bm1vdW50KSBvcHRpb25zLnVubW91bnQodm5vZGUpO1xuXG5cdGlmICgociA9IHZub2RlLnJlZikpIHtcblx0XHRpZiAoIXIuY3VycmVudCB8fCByLmN1cnJlbnQgPT09IHZub2RlLl9kb20pIGFwcGx5UmVmKHIsIG51bGwsIHBhcmVudFZOb2RlKTtcblx0fVxuXG5cdGlmICgociA9IHZub2RlLl9jb21wb25lbnQpICE9IG51bGwpIHtcblx0XHRpZiAoci5jb21wb25lbnRXaWxsVW5tb3VudCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ci5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIHBhcmVudFZOb2RlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyLmJhc2UgPSByLl9wYXJlbnREb20gPSBudWxsO1xuXHR9XG5cblx0aWYgKChyID0gdm5vZGUuX2NoaWxkcmVuKSkge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgci5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKHJbaV0pIHtcblx0XHRcdFx0dW5tb3VudChyW2ldLCBwYXJlbnRWTm9kZSwgdHlwZW9mIHZub2RlLnR5cGUgIT0gJ2Z1bmN0aW9uJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFza2lwUmVtb3ZlICYmIHZub2RlLl9kb20gIT0gbnVsbCkgcmVtb3ZlTm9kZSh2bm9kZS5fZG9tKTtcblxuXHQvLyBNdXN0IGJlIHNldCB0byBgdW5kZWZpbmVkYCB0byBwcm9wZXJseSBjbGVhbiB1cCBgX25leHREb21gXG5cdC8vIGZvciB3aGljaCBgbnVsbGAgaXMgYSB2YWxpZCB2YWx1ZS4gU2VlIGNvbW1lbnQgaW4gYGNyZWF0ZS1lbGVtZW50LmpzYFxuXHR2bm9kZS5fZG9tID0gdm5vZGUuX25leHREb20gPSB1bmRlZmluZWQ7XG59XG5cbi8qKiBUaGUgYC5yZW5kZXIoKWAgbWV0aG9kIGZvciBhIFBGQyBiYWNraW5nIGluc3RhbmNlLiAqL1xuZnVuY3Rpb24gZG9SZW5kZXIocHJvcHMsIHN0YXRlLCBjb250ZXh0KSB7XG5cdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKHByb3BzLCBjb250ZXh0KTtcbn1cbiIsICJpbXBvcnQgeyBFTVBUWV9PQkogfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjb21taXRSb290LCBkaWZmIH0gZnJvbSAnLi9kaWZmL2luZGV4JztcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIEZyYWdtZW50IH0gZnJvbSAnLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFJlbmRlciBhIFByZWFjdCB2aXJ0dWFsIG5vZGUgaW50byBhIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudENoaWxkfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHJlbmRlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHRvXG4gKiByZW5kZXIgaW50b1xuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50IHwgb2JqZWN0fSBbcmVwbGFjZU5vZGVdIE9wdGlvbmFsOiBBdHRlbXB0IHRvIHJlLXVzZSBhblxuICogZXhpc3RpbmcgRE9NIHRyZWUgcm9vdGVkIGF0IGByZXBsYWNlTm9kZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcih2bm9kZSwgcGFyZW50RG9tLCByZXBsYWNlTm9kZSkge1xuXHRpZiAob3B0aW9ucy5fcm9vdCkgb3B0aW9ucy5fcm9vdCh2bm9kZSwgcGFyZW50RG9tKTtcblxuXHQvLyBXZSBhYnVzZSB0aGUgYHJlcGxhY2VOb2RlYCBwYXJhbWV0ZXIgaW4gYGh5ZHJhdGUoKWAgdG8gc2lnbmFsIGlmIHdlIGFyZSBpblxuXHQvLyBoeWRyYXRpb24gbW9kZSBvciBub3QgYnkgcGFzc2luZyB0aGUgYGh5ZHJhdGVgIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBET01cblx0Ly8gZWxlbWVudC4uXG5cdGxldCBpc0h5ZHJhdGluZyA9IHR5cGVvZiByZXBsYWNlTm9kZSA9PT0gJ2Z1bmN0aW9uJztcblxuXHQvLyBUbyBiZSBhYmxlIHRvIHN1cHBvcnQgY2FsbGluZyBgcmVuZGVyKClgIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lXG5cdC8vIERPTSBub2RlLCB3ZSBuZWVkIHRvIG9idGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgdHJlZS4gV2UgZG9cblx0Ly8gdGhpcyBieSBhc3NpZ25pbmcgYSBuZXcgYF9jaGlsZHJlbmAgcHJvcGVydHkgdG8gRE9NIG5vZGVzIHdoaWNoIHBvaW50c1xuXHQvLyB0byB0aGUgbGFzdCByZW5kZXJlZCB0cmVlLiBCeSBkZWZhdWx0IHRoaXMgcHJvcGVydHkgaXMgbm90IHByZXNlbnQsIHdoaWNoXG5cdC8vIG1lYW5zIHRoYXQgd2UgYXJlIG1vdW50aW5nIGEgbmV3IHRyZWUgZm9yIHRoZSBmaXJzdCB0aW1lLlxuXHRsZXQgb2xkVk5vZGUgPSBpc0h5ZHJhdGluZ1xuXHRcdD8gbnVsbFxuXHRcdDogKHJlcGxhY2VOb2RlICYmIHJlcGxhY2VOb2RlLl9jaGlsZHJlbikgfHwgcGFyZW50RG9tLl9jaGlsZHJlbjtcblxuXHR2bm9kZSA9IChcblx0XHQoIWlzSHlkcmF0aW5nICYmIHJlcGxhY2VOb2RlKSB8fFxuXHRcdHBhcmVudERvbVxuXHQpLl9jaGlsZHJlbiA9IGNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIFt2bm9kZV0pO1xuXG5cdC8vIExpc3Qgb2YgZWZmZWN0cyB0aGF0IG5lZWQgdG8gYmUgY2FsbGVkIGFmdGVyIGRpZmZpbmcuXG5cdGxldCBjb21taXRRdWV1ZSA9IFtdO1xuXHRkaWZmKFxuXHRcdHBhcmVudERvbSxcblx0XHQvLyBEZXRlcm1pbmUgdGhlIG5ldyB2bm9kZSB0cmVlIGFuZCBzdG9yZSBpdCBvbiB0aGUgRE9NIGVsZW1lbnQgb25cblx0XHQvLyBvdXIgY3VzdG9tIGBfY2hpbGRyZW5gIHByb3BlcnR5LlxuXHRcdHZub2RlLFxuXHRcdG9sZFZOb2RlIHx8IEVNUFRZX09CSixcblx0XHRFTVBUWV9PQkosXG5cdFx0cGFyZW50RG9tLm93bmVyU1ZHRWxlbWVudCAhPT0gdW5kZWZpbmVkLFxuXHRcdCFpc0h5ZHJhdGluZyAmJiByZXBsYWNlTm9kZVxuXHRcdFx0PyBbcmVwbGFjZU5vZGVdXG5cdFx0XHQ6IG9sZFZOb2RlXG5cdFx0XHQ/IG51bGxcblx0XHRcdDogcGFyZW50RG9tLmZpcnN0Q2hpbGRcblx0XHRcdD8gc2xpY2UuY2FsbChwYXJlbnREb20uY2hpbGROb2Rlcylcblx0XHRcdDogbnVsbCxcblx0XHRjb21taXRRdWV1ZSxcblx0XHQhaXNIeWRyYXRpbmcgJiYgcmVwbGFjZU5vZGVcblx0XHRcdD8gcmVwbGFjZU5vZGVcblx0XHRcdDogb2xkVk5vZGVcblx0XHRcdD8gb2xkVk5vZGUuX2RvbVxuXHRcdFx0OiBwYXJlbnREb20uZmlyc3RDaGlsZCxcblx0XHRpc0h5ZHJhdGluZ1xuXHQpO1xuXG5cdC8vIEZsdXNoIGFsbCBxdWV1ZWQgZWZmZWN0c1xuXHRjb21taXRSb290KGNvbW1pdFF1ZXVlLCB2bm9kZSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGFuIGV4aXN0aW5nIERPTSBlbGVtZW50IHdpdGggZGF0YSBmcm9tIGEgUHJlYWN0IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnRDaGlsZH0gdm5vZGUgVGhlIHZpcnR1YWwgbm9kZSB0byByZW5kZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gcGFyZW50RG9tIFRoZSBET00gZWxlbWVudCB0b1xuICogdXBkYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlKHZub2RlLCBwYXJlbnREb20pIHtcblx0cmVuZGVyKHZub2RlLCBwYXJlbnREb20sIGh5ZHJhdGUpO1xufVxuIiwgImltcG9ydCB7IGFzc2lnbiwgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlVk5vZGUgfSBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcblxuLyoqXG4gKiBDbG9uZXMgdGhlIGdpdmVuIFZOb2RlLCBvcHRpb25hbGx5IGFkZGluZyBhdHRyaWJ1dGVzL3Byb3BzIGFuZCByZXBsYWNpbmcgaXRzIGNoaWxkcmVuLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGUgVGhlIHZpcnR1YWwgRE9NIGVsZW1lbnQgdG8gY2xvbmVcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBBdHRyaWJ1dGVzL3Byb3BzIHRvIGFkZCB3aGVuIGNsb25pbmdcbiAqIEBwYXJhbSB7QXJyYXk8aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50Q2hpbGRyZW4+fSByZXN0IEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aWxsIGJlIHVzZWQgYXMgcmVwbGFjZW1lbnQgY2hpbGRyZW4uXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZUVsZW1lbnQodm5vZGUsIHByb3BzLCBjaGlsZHJlbikge1xuXHRsZXQgbm9ybWFsaXplZFByb3BzID0gYXNzaWduKHt9LCB2bm9kZS5wcm9wcyksXG5cdFx0a2V5LFxuXHRcdHJlZixcblx0XHRpO1xuXHRmb3IgKGkgaW4gcHJvcHMpIHtcblx0XHRpZiAoaSA9PSAna2V5Jykga2V5ID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBpZiAoaSA9PSAncmVmJykgcmVmID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBub3JtYWxpemVkUHJvcHNbaV0gPSBwcm9wc1tpXTtcblx0fVxuXG5cdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdG5vcm1hbGl6ZWRQcm9wcy5jaGlsZHJlbiA9XG5cdFx0XHRhcmd1bWVudHMubGVuZ3RoID4gMyA/IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSA6IGNoaWxkcmVuO1xuXHR9XG5cblx0cmV0dXJuIGNyZWF0ZVZOb2RlKFxuXHRcdHZub2RlLnR5cGUsXG5cdFx0bm9ybWFsaXplZFByb3BzLFxuXHRcdGtleSB8fCB2bm9kZS5rZXksXG5cdFx0cmVmIHx8IHZub2RlLnJlZixcblx0XHRudWxsXG5cdCk7XG59XG4iLCAiLyoqXG4gKiBGaW5kIHRoZSBjbG9zZXN0IGVycm9yIGJvdW5kYXJ5IHRvIGEgdGhyb3duIGVycm9yIGFuZCBjYWxsIGl0XG4gKiBAcGFyYW0ge29iamVjdH0gZXJyb3IgVGhlIHRocm93biB2YWx1ZVxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2ludGVybmFsJykuVk5vZGV9IHZub2RlIFRoZSB2bm9kZSB0aGF0IHRocmV3XG4gKiB0aGUgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0IChleGNlcHQgZm9yIHVubW91bnRpbmcgd2hlbiB0aGlzIHBhcmFtZXRlclxuICogaXMgdGhlIGhpZ2hlc3QgcGFyZW50IHRoYXQgd2FzIGJlaW5nIHVubW91bnRlZClcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbnRlcm5hbCcpLlZOb2RlfSBbb2xkVk5vZGVdXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vaW50ZXJuYWwnKS5FcnJvckluZm99IFtlcnJvckluZm9dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfY2F0Y2hFcnJvcihlcnJvciwgdm5vZGUsIG9sZFZOb2RlLCBlcnJvckluZm8pIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4uL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xuXHRsZXQgY29tcG9uZW50LCBjdG9yLCBoYW5kbGVkO1xuXG5cdGZvciAoOyAodm5vZGUgPSB2bm9kZS5fcGFyZW50KTsgKSB7XG5cdFx0aWYgKChjb21wb25lbnQgPSB2bm9kZS5fY29tcG9uZW50KSAmJiAhY29tcG9uZW50Ll9wcm9jZXNzaW5nRXhjZXB0aW9uKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjdG9yID0gY29tcG9uZW50LmNvbnN0cnVjdG9yO1xuXG5cdFx0XHRcdGlmIChjdG9yICYmIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yICE9IG51bGwpIHtcblx0XHRcdFx0XHRjb21wb25lbnQuc2V0U3RhdGUoY3Rvci5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3IpKTtcblx0XHRcdFx0XHRoYW5kbGVkID0gY29tcG9uZW50Ll9kaXJ0eTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2ggIT0gbnVsbCkge1xuXHRcdFx0XHRcdGNvbXBvbmVudC5jb21wb25lbnREaWRDYXRjaChlcnJvciwgZXJyb3JJbmZvIHx8IHt9KTtcblx0XHRcdFx0XHRoYW5kbGVkID0gY29tcG9uZW50Ll9kaXJ0eTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRoaXMgaXMgYW4gZXJyb3IgYm91bmRhcnkuIE1hcmsgaXQgYXMgaGF2aW5nIGJhaWxlZCBvdXQsIGFuZCB3aGV0aGVyIGl0IHdhcyBtaWQtaHlkcmF0aW9uLlxuXHRcdFx0XHRpZiAoaGFuZGxlZCkge1xuXHRcdFx0XHRcdHJldHVybiAoY29tcG9uZW50Ll9wZW5kaW5nRXJyb3IgPSBjb21wb25lbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGVycm9yID0gZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR0aHJvdyBlcnJvcjtcbn1cbiIsICJpbXBvcnQgeyBvcHRpb25zIH0gZnJvbSAncHJlYWN0JztcblxuLyoqIEB0eXBlIHtudW1iZXJ9ICovXG5sZXQgY3VycmVudEluZGV4O1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cbmxldCBjdXJyZW50Q29tcG9uZW50O1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cbmxldCBwcmV2aW91c0NvbXBvbmVudDtcblxuLyoqIEB0eXBlIHtudW1iZXJ9ICovXG5sZXQgY3VycmVudEhvb2sgPSAwO1xuXG4vKiogQHR5cGUge0FycmF5PGltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudD59ICovXG5sZXQgYWZ0ZXJQYWludEVmZmVjdHMgPSBbXTtcblxubGV0IG9sZEJlZm9yZURpZmYgPSBvcHRpb25zLl9kaWZmO1xubGV0IG9sZEJlZm9yZVJlbmRlciA9IG9wdGlvbnMuX3JlbmRlcjtcbmxldCBvbGRBZnRlckRpZmYgPSBvcHRpb25zLmRpZmZlZDtcbmxldCBvbGRDb21taXQgPSBvcHRpb25zLl9jb21taXQ7XG5sZXQgb2xkQmVmb3JlVW5tb3VudCA9IG9wdGlvbnMudW5tb3VudDtcblxuY29uc3QgUkFGX1RJTUVPVVQgPSAxMDA7XG5sZXQgcHJldlJhZjtcblxub3B0aW9ucy5fZGlmZiA9IHZub2RlID0+IHtcblx0Y3VycmVudENvbXBvbmVudCA9IG51bGw7XG5cdGlmIChvbGRCZWZvcmVEaWZmKSBvbGRCZWZvcmVEaWZmKHZub2RlKTtcbn07XG5cbm9wdGlvbnMuX3JlbmRlciA9IHZub2RlID0+IHtcblx0aWYgKG9sZEJlZm9yZVJlbmRlcikgb2xkQmVmb3JlUmVuZGVyKHZub2RlKTtcblxuXHRjdXJyZW50Q29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudDtcblx0Y3VycmVudEluZGV4ID0gMDtcblxuXHRjb25zdCBob29rcyA9IGN1cnJlbnRDb21wb25lbnQuX19ob29rcztcblx0aWYgKGhvb2tzKSB7XG5cdFx0aWYgKHByZXZpb3VzQ29tcG9uZW50ID09PSBjdXJyZW50Q29tcG9uZW50KSB7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMgPSBbXTtcblx0XHRcdGN1cnJlbnRDb21wb25lbnQuX3JlbmRlckNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0aG9va3MuX2xpc3QuZm9yRWFjaChob29rSXRlbSA9PiB7XG5cdFx0XHRcdGlmIChob29rSXRlbS5fYXJncykgaG9va0l0ZW0uX2FyZ3MgPSB1bmRlZmluZWQ7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlQ2xlYW51cCk7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMuZm9yRWFjaChpbnZva2VFZmZlY3QpO1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzID0gW107XG5cdFx0fVxuXHR9XG5cdHByZXZpb3VzQ29tcG9uZW50ID0gY3VycmVudENvbXBvbmVudDtcbn07XG5cbm9wdGlvbnMuZGlmZmVkID0gdm5vZGUgPT4ge1xuXHRpZiAob2xkQWZ0ZXJEaWZmKSBvbGRBZnRlckRpZmYodm5vZGUpO1xuXG5cdGNvbnN0IGMgPSB2bm9kZS5fY29tcG9uZW50O1xuXHRpZiAoYyAmJiBjLl9faG9va3MgJiYgYy5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5sZW5ndGgpIHtcblx0XHRhZnRlclBhaW50KGFmdGVyUGFpbnRFZmZlY3RzLnB1c2goYykpO1xuXHR9XG5cdGN1cnJlbnRDb21wb25lbnQgPSBudWxsO1xuXHRwcmV2aW91c0NvbXBvbmVudCA9IG51bGw7XG59O1xuXG5vcHRpb25zLl9jb21taXQgPSAodm5vZGUsIGNvbW1pdFF1ZXVlKSA9PiB7XG5cdGNvbW1pdFF1ZXVlLnNvbWUoY29tcG9uZW50ID0+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MuZm9yRWFjaChpbnZva2VDbGVhbnVwKTtcblx0XHRcdGNvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzID0gY29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MuZmlsdGVyKGNiID0+XG5cdFx0XHRcdGNiLl92YWx1ZSA/IGludm9rZUVmZmVjdChjYikgOiB0cnVlXG5cdFx0XHQpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGNvbW1pdFF1ZXVlLnNvbWUoYyA9PiB7XG5cdFx0XHRcdGlmIChjLl9yZW5kZXJDYWxsYmFja3MpIGMuX3JlbmRlckNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0fSk7XG5cdFx0XHRjb21taXRRdWV1ZSA9IFtdO1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjb21wb25lbnQuX3Zub2RlKTtcblx0XHR9XG5cdH0pO1xuXG5cdGlmIChvbGRDb21taXQpIG9sZENvbW1pdCh2bm9kZSwgY29tbWl0UXVldWUpO1xufTtcblxub3B0aW9ucy51bm1vdW50ID0gdm5vZGUgPT4ge1xuXHRpZiAob2xkQmVmb3JlVW5tb3VudCkgb2xkQmVmb3JlVW5tb3VudCh2bm9kZSk7XG5cblx0Y29uc3QgYyA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGlmIChjICYmIGMuX19ob29rcykge1xuXHRcdGxldCBoYXNFcnJvcmVkO1xuXHRcdGMuX19ob29rcy5fbGlzdC5mb3JFYWNoKHMgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aW52b2tlQ2xlYW51cChzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0aGFzRXJyb3JlZCA9IGU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYgKGhhc0Vycm9yZWQpIG9wdGlvbnMuX2NhdGNoRXJyb3IoaGFzRXJyb3JlZCwgYy5fdm5vZGUpO1xuXHR9XG59O1xuXG4vKipcbiAqIEdldCBhIGhvb2sncyBzdGF0ZSBmcm9tIHRoZSBjdXJyZW50Q29tcG9uZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBob29rIHRvIGdldFxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGUgVGhlIGluZGV4IG9mIHRoZSBob29rIHRvIGdldFxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gZ2V0SG9va1N0YXRlKGluZGV4LCB0eXBlKSB7XG5cdGlmIChvcHRpb25zLl9ob29rKSB7XG5cdFx0b3B0aW9ucy5faG9vayhjdXJyZW50Q29tcG9uZW50LCBpbmRleCwgY3VycmVudEhvb2sgfHwgdHlwZSk7XG5cdH1cblx0Y3VycmVudEhvb2sgPSAwO1xuXG5cdC8vIExhcmdlbHkgaW5zcGlyZWQgYnk6XG5cdC8vICogaHR0cHM6Ly9naXRodWIuY29tL21pY2hhZWwta2xlaW4vZnVuY3kuanMvYmxvYi9mNmJlNzM0NjhlNmVjNDZiMGZmNWFhM2NjNGM5YmFmNzJhMjkwMjVhL3NyYy9ob29rcy9jb3JlX2hvb2tzLm1qc1xuXHQvLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNoYWVsLWtsZWluL2Z1bmN5LmpzL2Jsb2IvNjUwYmVhYTU4YzQzYzMzYTc0ODIwYTNjOThiM2M3MDc5Y2YyZTMzMy9zcmMvcmVuZGVyZXIubWpzXG5cdC8vIE90aGVyIGltcGxlbWVudGF0aW9ucyB0byBsb29rIGF0OlxuXHQvLyAqIGh0dHBzOi8vY29kZXNhbmRib3guaW8vcy9tbm94MDVxcDhcblx0Y29uc3QgaG9va3MgPVxuXHRcdGN1cnJlbnRDb21wb25lbnQuX19ob29rcyB8fFxuXHRcdChjdXJyZW50Q29tcG9uZW50Ll9faG9va3MgPSB7XG5cdFx0XHRfbGlzdDogW10sXG5cdFx0XHRfcGVuZGluZ0VmZmVjdHM6IFtdXG5cdFx0fSk7XG5cblx0aWYgKGluZGV4ID49IGhvb2tzLl9saXN0Lmxlbmd0aCkge1xuXHRcdGhvb2tzLl9saXN0LnB1c2goe30pO1xuXHR9XG5cdHJldHVybiBob29rcy5fbGlzdFtpbmRleF07XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5TdGF0ZVVwZGF0ZXI8YW55Pn0gW2luaXRpYWxTdGF0ZV1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0YXRlKGluaXRpYWxTdGF0ZSkge1xuXHRjdXJyZW50SG9vayA9IDE7XG5cdHJldHVybiB1c2VSZWR1Y2VyKGludm9rZU9yUmV0dXJuLCBpbml0aWFsU3RhdGUpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2luZGV4JykuUmVkdWNlcjxhbnksIGFueT59IHJlZHVjZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2luZGV4JykuU3RhdGVVcGRhdGVyPGFueT59IGluaXRpYWxTdGF0ZVxuICogQHBhcmFtIHsoaW5pdGlhbFN0YXRlOiBhbnkpID0+IHZvaWR9IFtpbml0XVxuICogQHJldHVybnMge1sgYW55LCAoc3RhdGU6IGFueSkgPT4gdm9pZCBdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGluaXQpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5SZWR1Y2VySG9va1N0YXRlfSAqL1xuXHRjb25zdCBob29rU3RhdGUgPSBnZXRIb29rU3RhdGUoY3VycmVudEluZGV4KyssIDIpO1xuXHRob29rU3RhdGUuX3JlZHVjZXIgPSByZWR1Y2VyO1xuXHRpZiAoIWhvb2tTdGF0ZS5fY29tcG9uZW50KSB7XG5cdFx0aG9va1N0YXRlLl92YWx1ZSA9IFtcblx0XHRcdCFpbml0ID8gaW52b2tlT3JSZXR1cm4odW5kZWZpbmVkLCBpbml0aWFsU3RhdGUpIDogaW5pdChpbml0aWFsU3RhdGUpLFxuXG5cdFx0XHRhY3Rpb24gPT4ge1xuXHRcdFx0XHRjb25zdCBuZXh0VmFsdWUgPSBob29rU3RhdGUuX3JlZHVjZXIoaG9va1N0YXRlLl92YWx1ZVswXSwgYWN0aW9uKTtcblx0XHRcdFx0aWYgKGhvb2tTdGF0ZS5fdmFsdWVbMF0gIT09IG5leHRWYWx1ZSkge1xuXHRcdFx0XHRcdGhvb2tTdGF0ZS5fdmFsdWUgPSBbbmV4dFZhbHVlLCBob29rU3RhdGUuX3ZhbHVlWzFdXTtcblx0XHRcdFx0XHRob29rU3RhdGUuX2NvbXBvbmVudC5zZXRTdGF0ZSh7fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdO1xuXG5cdFx0aG9va1N0YXRlLl9jb21wb25lbnQgPSBjdXJyZW50Q29tcG9uZW50O1xuXHR9XG5cblx0cmV0dXJuIGhvb2tTdGF0ZS5fdmFsdWU7XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3R9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VFZmZlY3QoY2FsbGJhY2ssIGFyZ3MpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAzKTtcblx0aWYgKCFvcHRpb25zLl9za2lwRWZmZWN0cyAmJiBhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBjYWxsYmFjaztcblx0XHRzdGF0ZS5fYXJncyA9IGFyZ3M7XG5cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzLnB1c2goc3RhdGUpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3R9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VMYXlvdXRFZmZlY3QoY2FsbGJhY2ssIGFyZ3MpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA0KTtcblx0aWYgKCFvcHRpb25zLl9za2lwRWZmZWN0cyAmJiBhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBjYWxsYmFjaztcblx0XHRzdGF0ZS5fYXJncyA9IGFyZ3M7XG5cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MucHVzaChzdGF0ZSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlZihpbml0aWFsVmFsdWUpIHtcblx0Y3VycmVudEhvb2sgPSA1O1xuXHRyZXR1cm4gdXNlTWVtbygoKSA9PiAoeyBjdXJyZW50OiBpbml0aWFsVmFsdWUgfSksIFtdKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVmXG4gKiBAcGFyYW0geygpID0+IG9iamVjdH0gY3JlYXRlSGFuZGxlXG4gKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgY3JlYXRlSGFuZGxlLCBhcmdzKSB7XG5cdGN1cnJlbnRIb29rID0gNjtcblx0dXNlTGF5b3V0RWZmZWN0KFxuXHRcdCgpID0+IHtcblx0XHRcdGlmICh0eXBlb2YgcmVmID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0cmVmKGNyZWF0ZUhhbmRsZSgpKTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHJlZihudWxsKTtcblx0XHRcdH0gZWxzZSBpZiAocmVmKSB7XG5cdFx0XHRcdHJlZi5jdXJyZW50ID0gY3JlYXRlSGFuZGxlKCk7XG5cdFx0XHRcdHJldHVybiAoKSA9PiAocmVmLmN1cnJlbnQgPSBudWxsKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFyZ3MgPT0gbnVsbCA/IGFyZ3MgOiBhcmdzLmNvbmNhdChyZWYpXG5cdCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHsoKSA9PiBhbnl9IGZhY3RvcnlcbiAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbW8oZmFjdG9yeSwgYXJncykge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLk1lbW9Ib29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA3KTtcblx0aWYgKGFyZ3NDaGFuZ2VkKHN0YXRlLl9hcmdzLCBhcmdzKSkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IGZhY3RvcnkoKTtcblx0XHRzdGF0ZS5fYXJncyA9IGFyZ3M7XG5cdFx0c3RhdGUuX2ZhY3RvcnkgPSBmYWN0b3J5O1xuXHR9XG5cblx0cmV0dXJuIHN0YXRlLl92YWx1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0geygpID0+IHZvaWR9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYWxsYmFjayhjYWxsYmFjaywgYXJncykge1xuXHRjdXJyZW50SG9vayA9IDg7XG5cdHJldHVybiB1c2VNZW1vKCgpID0+IGNhbGxiYWNrLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdENvbnRleHR9IGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbnRleHQoY29udGV4dCkge1xuXHRjb25zdCBwcm92aWRlciA9IGN1cnJlbnRDb21wb25lbnQuY29udGV4dFtjb250ZXh0Ll9pZF07XG5cdC8vIFdlIGNvdWxkIHNraXAgdGhpcyBjYWxsIGhlcmUsIGJ1dCB0aGFuIHdlJ2Qgbm90IGNhbGxcblx0Ly8gYG9wdGlvbnMuX2hvb2tgLiBXZSBuZWVkIHRvIGRvIHRoYXQgaW4gb3JkZXIgdG8gbWFrZVxuXHQvLyB0aGUgZGV2dG9vbHMgYXdhcmUgb2YgdGhpcyBob29rLlxuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbnRleHRIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA5KTtcblx0Ly8gVGhlIGRldnRvb2xzIG5lZWRzIGFjY2VzcyB0byB0aGUgY29udGV4dCBvYmplY3QgdG9cblx0Ly8gYmUgYWJsZSB0byBwdWxsIG9mIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gbm8gcHJvdmlkZXJcblx0Ly8gaXMgcHJlc2VudCBpbiB0aGUgdHJlZS5cblx0c3RhdGUuX2NvbnRleHQgPSBjb250ZXh0O1xuXHRpZiAoIXByb3ZpZGVyKSByZXR1cm4gY29udGV4dC5fZGVmYXVsdFZhbHVlO1xuXHQvLyBUaGlzIGlzIHByb2JhYmx5IG5vdCBzYWZlIHRvIGNvbnZlcnQgdG8gXCIhXCJcblx0aWYgKHN0YXRlLl92YWx1ZSA9PSBudWxsKSB7XG5cdFx0c3RhdGUuX3ZhbHVlID0gdHJ1ZTtcblx0XHRwcm92aWRlci5zdWIoY3VycmVudENvbXBvbmVudCk7XG5cdH1cblx0cmV0dXJuIHByb3ZpZGVyLnByb3BzLnZhbHVlO1xufVxuXG4vKipcbiAqIERpc3BsYXkgYSBjdXN0b20gbGFiZWwgZm9yIGEgY3VzdG9tIGhvb2sgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICogQHR5cGUgezxUPih2YWx1ZTogVCwgY2I/OiAodmFsdWU6IFQpID0+IHN0cmluZyB8IG51bWJlcikgPT4gdm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURlYnVnVmFsdWUodmFsdWUsIGZvcm1hdHRlcikge1xuXHRpZiAob3B0aW9ucy51c2VEZWJ1Z1ZhbHVlKSB7XG5cdFx0b3B0aW9ucy51c2VEZWJ1Z1ZhbHVlKGZvcm1hdHRlciA/IGZvcm1hdHRlcih2YWx1ZSkgOiB2YWx1ZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0geyhlcnJvcjogYW55KSA9PiB2b2lkfSBjYlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRXJyb3JCb3VuZGFyeShjYikge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVycm9yQm91bmRhcnlIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAxMCk7XG5cdGNvbnN0IGVyclN0YXRlID0gdXNlU3RhdGUoKTtcblx0c3RhdGUuX3ZhbHVlID0gY2I7XG5cdGlmICghY3VycmVudENvbXBvbmVudC5jb21wb25lbnREaWRDYXRjaCkge1xuXHRcdGN1cnJlbnRDb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2ggPSBlcnIgPT4ge1xuXHRcdFx0aWYgKHN0YXRlLl92YWx1ZSkgc3RhdGUuX3ZhbHVlKGVycik7XG5cdFx0XHRlcnJTdGF0ZVsxXShlcnIpO1xuXHRcdH07XG5cdH1cblx0cmV0dXJuIFtcblx0XHRlcnJTdGF0ZVswXSxcblx0XHQoKSA9PiB7XG5cdFx0XHRlcnJTdGF0ZVsxXSh1bmRlZmluZWQpO1xuXHRcdH1cblx0XTtcbn1cblxuLyoqXG4gKiBBZnRlciBwYWludCBlZmZlY3RzIGNvbnN1bWVyLlxuICovXG5mdW5jdGlvbiBmbHVzaEFmdGVyUGFpbnRFZmZlY3RzKCkge1xuXHRsZXQgY29tcG9uZW50O1xuXHR3aGlsZSAoKGNvbXBvbmVudCA9IGFmdGVyUGFpbnRFZmZlY3RzLnNoaWZ0KCkpKSB7XG5cdFx0aWYgKCFjb21wb25lbnQuX3BhcmVudERvbSkgY29udGludWU7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5mb3JFYWNoKGludm9rZUNsZWFudXApO1xuXHRcdFx0Y29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlRWZmZWN0KTtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjb21wb25lbnQuX3Zub2RlKTtcblx0XHR9XG5cdH1cbn1cblxubGV0IEhBU19SQUYgPSB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09ICdmdW5jdGlvbic7XG5cbi8qKlxuICogU2NoZWR1bGUgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIGFmdGVyIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludCBhIG5ldyBmcmFtZS5cbiAqIERvIHRoaXMgYnkgY29tYmluaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSAockFGKSArIHNldFRpbWVvdXQgdG8gaW52b2tlIGEgY2FsbGJhY2sgYWZ0ZXJcbiAqIHRoZSBuZXh0IGJyb3dzZXIgZnJhbWUuXG4gKlxuICogQWxzbywgc2NoZWR1bGUgYSB0aW1lb3V0IGluIHBhcmFsbGVsIHRvIHRoZSB0aGUgckFGIHRvIGVuc3VyZSB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZFxuICogZXZlbiBpZiBSQUYgZG9lc24ndCBmaXJlIChmb3IgZXhhbXBsZSBpZiB0aGUgYnJvd3NlciB0YWIgaXMgbm90IHZpc2libGUpXG4gKlxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBjYWxsYmFja1xuICovXG5mdW5jdGlvbiBhZnRlck5leHRGcmFtZShjYWxsYmFjaykge1xuXHRjb25zdCBkb25lID0gKCkgPT4ge1xuXHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblx0XHRpZiAoSEFTX1JBRikgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKTtcblx0XHRzZXRUaW1lb3V0KGNhbGxiYWNrKTtcblx0fTtcblx0Y29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoZG9uZSwgUkFGX1RJTUVPVVQpO1xuXG5cdGxldCByYWY7XG5cdGlmIChIQVNfUkFGKSB7XG5cdFx0cmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRvbmUpO1xuXHR9XG59XG5cbi8vIE5vdGU6IGlmIHNvbWVvbmUgdXNlZCBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLFxuLy8gdGhlbiBlZmZlY3RzIHdpbGwgQUxXQVlTIHJ1biBvbiB0aGUgTkVYVCBmcmFtZSBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IG9uZSwgaW5jdXJyaW5nIGEgfjE2bXMgZGVsYXkuXG4vLyBQZXJoYXBzIHRoaXMgaXMgbm90IHN1Y2ggYSBiaWcgZGVhbC5cbi8qKlxuICogU2NoZWR1bGUgYWZ0ZXJQYWludEVmZmVjdHMgZmx1c2ggYWZ0ZXIgdGhlIGJyb3dzZXIgcGFpbnRzXG4gKiBAcGFyYW0ge251bWJlcn0gbmV3UXVldWVMZW5ndGhcbiAqL1xuZnVuY3Rpb24gYWZ0ZXJQYWludChuZXdRdWV1ZUxlbmd0aCkge1xuXHRpZiAobmV3UXVldWVMZW5ndGggPT09IDEgfHwgcHJldlJhZiAhPT0gb3B0aW9ucy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcblx0XHRwcmV2UmFmID0gb3B0aW9ucy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XG5cdFx0KHByZXZSYWYgfHwgYWZ0ZXJOZXh0RnJhbWUpKGZsdXNoQWZ0ZXJQYWludEVmZmVjdHMpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9IGhvb2tcbiAqL1xuZnVuY3Rpb24gaW52b2tlQ2xlYW51cChob29rKSB7XG5cdC8vIEEgaG9vayBjbGVhbnVwIGNhbiBpbnRyb2R1Y2UgYSBjYWxsIHRvIHJlbmRlciB3aGljaCBjcmVhdGVzIGEgbmV3IHJvb3QsIHRoaXMgd2lsbCBjYWxsIG9wdGlvbnMudm5vZGVcblx0Ly8gYW5kIG1vdmUgdGhlIGN1cnJlbnRDb21wb25lbnQgYXdheS5cblx0Y29uc3QgY29tcCA9IGN1cnJlbnRDb21wb25lbnQ7XG5cdGxldCBjbGVhbnVwID0gaG9vay5fY2xlYW51cDtcblx0aWYgKHR5cGVvZiBjbGVhbnVwID09ICdmdW5jdGlvbicpIHtcblx0XHRob29rLl9jbGVhbnVwID0gdW5kZWZpbmVkO1xuXHRcdGNsZWFudXAoKTtcblx0fVxuXHRjdXJyZW50Q29tcG9uZW50ID0gY29tcDtcbn1cblxuLyoqXG4gKiBJbnZva2UgYSBIb29rJ3MgZWZmZWN0XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdEhvb2tTdGF0ZX0gaG9va1xuICovXG5mdW5jdGlvbiBpbnZva2VFZmZlY3QoaG9vaykge1xuXHQvLyBBIGhvb2sgY2FsbCBjYW4gaW50cm9kdWNlIGEgY2FsbCB0byByZW5kZXIgd2hpY2ggY3JlYXRlcyBhIG5ldyByb290LCB0aGlzIHdpbGwgY2FsbCBvcHRpb25zLnZub2RlXG5cdC8vIGFuZCBtb3ZlIHRoZSBjdXJyZW50Q29tcG9uZW50IGF3YXkuXG5cdGNvbnN0IGNvbXAgPSBjdXJyZW50Q29tcG9uZW50O1xuXHRob29rLl9jbGVhbnVwID0gaG9vay5fdmFsdWUoKTtcblx0Y3VycmVudENvbXBvbmVudCA9IGNvbXA7XG59XG5cbi8qKlxuICogQHBhcmFtIHthbnlbXX0gb2xkQXJnc1xuICogQHBhcmFtIHthbnlbXX0gbmV3QXJnc1xuICovXG5mdW5jdGlvbiBhcmdzQ2hhbmdlZChvbGRBcmdzLCBuZXdBcmdzKSB7XG5cdHJldHVybiAoXG5cdFx0IW9sZEFyZ3MgfHxcblx0XHRvbGRBcmdzLmxlbmd0aCAhPT0gbmV3QXJncy5sZW5ndGggfHxcblx0XHRuZXdBcmdzLnNvbWUoKGFyZywgaW5kZXgpID0+IGFyZyAhPT0gb2xkQXJnc1tpbmRleF0pXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGludm9rZU9yUmV0dXJuKGFyZywgZikge1xuXHRyZXR1cm4gdHlwZW9mIGYgPT0gJ2Z1bmN0aW9uJyA/IGYoYXJnKSA6IGY7XG59XG4iLCAiLyoqXG4gKiBBc3NpZ24gcHJvcGVydGllcyBmcm9tIGBwcm9wc2AgdG8gYG9iamBcbiAqIEB0ZW1wbGF0ZSBPLCBQIFRoZSBvYmogYW5kIHByb3BzIHR5cGVzXG4gKiBAcGFyYW0ge099IG9iaiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0b1xuICogQHBhcmFtIHtQfSBwcm9wcyBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcmV0dXJucyB7TyAmIFB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24ob2JqLCBwcm9wcykge1xuXHRmb3IgKGxldCBpIGluIHByb3BzKSBvYmpbaV0gPSBwcm9wc1tpXTtcblx0cmV0dXJuIC8qKiBAdHlwZSB7TyAmIFB9ICovIChvYmopO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byBvYmplY3RzIGhhdmUgYSBkaWZmZXJlbnQgc2hhcGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBhXG4gKiBAcGFyYW0ge29iamVjdH0gYlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93RGlmZmVycyhhLCBiKSB7XG5cdGZvciAobGV0IGkgaW4gYSkgaWYgKGkgIT09ICdfX3NvdXJjZScgJiYgIShpIGluIGIpKSByZXR1cm4gdHJ1ZTtcblx0Zm9yIChsZXQgaSBpbiBiKSBpZiAoaSAhPT0gJ19fc291cmNlJyAmJiBhW2ldICE9PSBiW2ldKSByZXR1cm4gdHJ1ZTtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTm9kZShub2RlKSB7XG5cdGxldCBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuXHRpZiAocGFyZW50Tm9kZSkgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbn1cbiIsICJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdwcmVhY3QnO1xuaW1wb3J0IHsgc2hhbGxvd0RpZmZlcnMgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIENvbXBvbmVudCBjbGFzcyB3aXRoIGEgcHJlZGVmaW5lZCBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCBpbXBsZW1lbnRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gUHVyZUNvbXBvbmVudChwKSB7XG5cdHRoaXMucHJvcHMgPSBwO1xufVxuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50KCk7XG4vLyBTb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBjaGVjayBpZiB0aGlzIHByb3BlcnR5IGlzIHByZXNlbnRcblB1cmVDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblB1cmVDb21wb25lbnQucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uKHByb3BzLCBzdGF0ZSkge1xuXHRyZXR1cm4gc2hhbGxvd0RpZmZlcnModGhpcy5wcm9wcywgcHJvcHMpIHx8IHNoYWxsb3dEaWZmZXJzKHRoaXMuc3RhdGUsIHN0YXRlKTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBzaGFsbG93RGlmZmVycyB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogTWVtb2l6ZSBhIGNvbXBvbmVudCwgc28gdGhhdCBpdCBvbmx5IHVwZGF0ZXMgd2hlbiB0aGUgcHJvcHMgYWN0dWFsbHkgaGF2ZVxuICogY2hhbmdlZC4gVGhpcyB3YXMgcHJldmlvdXNseSBrbm93biBhcyBgUmVhY3QucHVyZWAuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkZ1bmN0aW9uQ29tcG9uZW50fSBjIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4gKiBAcGFyYW0geyhwcmV2OiBvYmplY3QsIG5leHQ6IG9iamVjdCkgPT4gYm9vbGVhbn0gW2NvbXBhcmVyXSBDdXN0b20gZXF1YWxpdHkgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5GdW5jdGlvbkNvbXBvbmVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lbW8oYywgY29tcGFyZXIpIHtcblx0ZnVuY3Rpb24gc2hvdWxkVXBkYXRlKG5leHRQcm9wcykge1xuXHRcdGxldCByZWYgPSB0aGlzLnByb3BzLnJlZjtcblx0XHRsZXQgdXBkYXRlUmVmID0gcmVmID09IG5leHRQcm9wcy5yZWY7XG5cdFx0aWYgKCF1cGRhdGVSZWYgJiYgcmVmKSB7XG5cdFx0XHRyZWYuY2FsbCA/IHJlZihudWxsKSA6IChyZWYuY3VycmVudCA9IG51bGwpO1xuXHRcdH1cblxuXHRcdGlmICghY29tcGFyZXIpIHtcblx0XHRcdHJldHVybiBzaGFsbG93RGlmZmVycyh0aGlzLnByb3BzLCBuZXh0UHJvcHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiAhY29tcGFyZXIodGhpcy5wcm9wcywgbmV4dFByb3BzKSB8fCAhdXBkYXRlUmVmO1xuXHR9XG5cblx0ZnVuY3Rpb24gTWVtb2VkKHByb3BzKSB7XG5cdFx0dGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBzaG91bGRVcGRhdGU7XG5cdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoYywgcHJvcHMpO1xuXHR9XG5cdE1lbW9lZC5kaXNwbGF5TmFtZSA9ICdNZW1vKCcgKyAoYy5kaXNwbGF5TmFtZSB8fCBjLm5hbWUpICsgJyknO1xuXHRNZW1vZWQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB0cnVlO1xuXHRNZW1vZWQuX2ZvcndhcmRlZCA9IHRydWU7XG5cdHJldHVybiBNZW1vZWQ7XG59XG4iLCAiaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICcuL3V0aWwnO1xuXG5sZXQgb2xkRGlmZkhvb2sgPSBvcHRpb25zLl9kaWZmO1xub3B0aW9ucy5fZGlmZiA9IHZub2RlID0+IHtcblx0aWYgKHZub2RlLnR5cGUgJiYgdm5vZGUudHlwZS5fZm9yd2FyZGVkICYmIHZub2RlLnJlZikge1xuXHRcdHZub2RlLnByb3BzLnJlZiA9IHZub2RlLnJlZjtcblx0XHR2bm9kZS5yZWYgPSBudWxsO1xuXHR9XG5cdGlmIChvbGREaWZmSG9vaykgb2xkRGlmZkhvb2sodm5vZGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IFJFQUNUX0ZPUldBUkRfU1lNQk9MID1cblx0KHR5cGVvZiBTeW1ib2wgIT0gJ3VuZGVmaW5lZCcgJiZcblx0XHRTeW1ib2wuZm9yICYmXG5cdFx0U3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKSkgfHxcblx0MHhmNDc7XG5cbi8qKlxuICogUGFzcyByZWYgZG93biB0byBhIGNoaWxkLiBUaGlzIGlzIG1haW5seSB1c2VkIGluIGxpYnJhcmllcyB3aXRoIEhPQ3MgdGhhdFxuICogd3JhcCBjb21wb25lbnRzLiBVc2luZyBgZm9yd2FyZFJlZmAgdGhlcmUgaXMgYW4gZWFzeSB3YXkgdG8gZ2V0IGEgcmVmZXJlbmNlXG4gKiBvZiB0aGUgd3JhcHBlZCBjb21wb25lbnQgaW5zdGVhZCBvZiBvbmUgb2YgdGhlIHdyYXBwZXIgaXRzZWxmLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5Gb3J3YXJkRm59IGZuXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuRnVuY3Rpb25Db21wb25lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkUmVmKGZuKSB7XG5cdGZ1bmN0aW9uIEZvcndhcmRlZChwcm9wcykge1xuXHRcdGxldCBjbG9uZSA9IGFzc2lnbih7fSwgcHJvcHMpO1xuXHRcdGRlbGV0ZSBjbG9uZS5yZWY7XG5cdFx0cmV0dXJuIGZuKGNsb25lLCBwcm9wcy5yZWYgfHwgbnVsbCk7XG5cdH1cblxuXHQvLyBtb2J4LXJlYWN0IGNoZWNrcyBmb3IgdGhpcyBiZWluZyBwcmVzZW50XG5cdEZvcndhcmRlZC4kJHR5cGVvZiA9IFJFQUNUX0ZPUldBUkRfU1lNQk9MO1xuXHQvLyBtb2J4LXJlYWN0IGhlYXZpbHkgcmVsaWVzIG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cdC8vIEl0IGV4cGVjdHMgYW4gb2JqZWN0IGhlcmUgd2l0aCBhIGByZW5kZXJgIHByb3BlcnR5LFxuXHQvLyBhbmQgcHJvdG90eXBlLnJlbmRlciB3aWxsIGZhaWwuIFdpdGhvdXQgdGhpc1xuXHQvLyBtb2J4LXJlYWN0IHRocm93cy5cblx0Rm9yd2FyZGVkLnJlbmRlciA9IEZvcndhcmRlZDtcblxuXHRGb3J3YXJkZWQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSBGb3J3YXJkZWQuX2ZvcndhcmRlZCA9IHRydWU7XG5cdEZvcndhcmRlZC5kaXNwbGF5TmFtZSA9ICdGb3J3YXJkUmVmKCcgKyAoZm4uZGlzcGxheU5hbWUgfHwgZm4ubmFtZSkgKyAnKSc7XG5cdHJldHVybiBGb3J3YXJkZWQ7XG59XG4iLCAiaW1wb3J0IHsgdG9DaGlsZEFycmF5IH0gZnJvbSAncHJlYWN0JztcblxuY29uc3QgbWFwRm4gPSAoY2hpbGRyZW4sIGZuKSA9PiB7XG5cdGlmIChjaGlsZHJlbiA9PSBudWxsKSByZXR1cm4gbnVsbDtcblx0cmV0dXJuIHRvQ2hpbGRBcnJheSh0b0NoaWxkQXJyYXkoY2hpbGRyZW4pLm1hcChmbikpO1xufTtcblxuLy8gVGhpcyBBUEkgaXMgY29tcGxldGVseSB1bm5lY2Vzc2FyeSBmb3IgUHJlYWN0LCBzbyBpdCdzIGJhc2ljYWxseSBwYXNzdGhyb3VnaC5cbmV4cG9ydCBjb25zdCBDaGlsZHJlbiA9IHtcblx0bWFwOiBtYXBGbixcblx0Zm9yRWFjaDogbWFwRm4sXG5cdGNvdW50KGNoaWxkcmVuKSB7XG5cdFx0cmV0dXJuIGNoaWxkcmVuID8gdG9DaGlsZEFycmF5KGNoaWxkcmVuKS5sZW5ndGggOiAwO1xuXHR9LFxuXHRvbmx5KGNoaWxkcmVuKSB7XG5cdFx0Y29uc3Qgbm9ybWFsaXplZCA9IHRvQ2hpbGRBcnJheShjaGlsZHJlbik7XG5cdFx0aWYgKG5vcm1hbGl6ZWQubGVuZ3RoICE9PSAxKSB0aHJvdyAnQ2hpbGRyZW4ub25seSc7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZWRbMF07XG5cdH0sXG5cdHRvQXJyYXk6IHRvQ2hpbGRBcnJheVxufTtcbiIsICJpbXBvcnQgeyBDb21wb25lbnQsIGNyZWF0ZUVsZW1lbnQsIG9wdGlvbnMsIEZyYWdtZW50IH0gZnJvbSAncHJlYWN0JztcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IG9sZENhdGNoRXJyb3IgPSBvcHRpb25zLl9jYXRjaEVycm9yO1xub3B0aW9ucy5fY2F0Y2hFcnJvciA9IGZ1bmN0aW9uKGVycm9yLCBuZXdWTm9kZSwgb2xkVk5vZGUsIGVycm9ySW5mbykge1xuXHRpZiAoZXJyb3IudGhlbikge1xuXHRcdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xuXHRcdGxldCBjb21wb25lbnQ7XG5cdFx0bGV0IHZub2RlID0gbmV3Vk5vZGU7XG5cblx0XHRmb3IgKDsgKHZub2RlID0gdm5vZGUuX3BhcmVudCk7ICkge1xuXHRcdFx0aWYgKChjb21wb25lbnQgPSB2bm9kZS5fY29tcG9uZW50KSAmJiBjb21wb25lbnQuX2NoaWxkRGlkU3VzcGVuZCkge1xuXHRcdFx0XHRpZiAobmV3Vk5vZGUuX2RvbSA9PSBudWxsKSB7XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIERvbid0IGNhbGwgb2xkQ2F0Y2hFcnJvciBpZiB3ZSBmb3VuZCBhIFN1c3BlbnNlXG5cdFx0XHRcdHJldHVybiBjb21wb25lbnQuX2NoaWxkRGlkU3VzcGVuZChlcnJvciwgbmV3Vk5vZGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRvbGRDYXRjaEVycm9yKGVycm9yLCBuZXdWTm9kZSwgb2xkVk5vZGUsIGVycm9ySW5mbyk7XG59O1xuXG5jb25zdCBvbGRVbm1vdW50ID0gb3B0aW9ucy51bm1vdW50O1xub3B0aW9ucy51bm1vdW50ID0gZnVuY3Rpb24odm5vZGUpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5cdGNvbnN0IGNvbXBvbmVudCA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Ll9vblJlc29sdmUpIHtcblx0XHRjb21wb25lbnQuX29uUmVzb2x2ZSgpO1xuXHR9XG5cblx0Ly8gaWYgdGhlIGNvbXBvbmVudCBpcyBzdGlsbCBoeWRyYXRpbmdcblx0Ly8gbW9zdCBsaWtlbHkgaXQgaXMgYmVjYXVzZSB0aGUgY29tcG9uZW50IGlzIHN1c3BlbmRlZFxuXHQvLyB3ZSBzZXQgdGhlIHZub2RlLnR5cGUgYXMgYG51bGxgIHNvIHRoYXQgaXQgaXMgbm90IGEgdHlwZW9mIGZ1bmN0aW9uXG5cdC8vIHNvIHRoZSB1bm1vdW50IHdpbGwgcmVtb3ZlIHRoZSB2bm9kZS5fZG9tXG5cdGlmIChjb21wb25lbnQgJiYgdm5vZGUuX2h5ZHJhdGluZyA9PT0gdHJ1ZSkge1xuXHRcdHZub2RlLnR5cGUgPSBudWxsO1xuXHR9XG5cblx0aWYgKG9sZFVubW91bnQpIG9sZFVubW91bnQodm5vZGUpO1xufTtcblxuZnVuY3Rpb24gZGV0YWNoZWRDbG9uZSh2bm9kZSwgZGV0YWNoZWRQYXJlbnQsIHBhcmVudERvbSkge1xuXHRpZiAodm5vZGUpIHtcblx0XHRpZiAodm5vZGUuX2NvbXBvbmVudCAmJiB2bm9kZS5fY29tcG9uZW50Ll9faG9va3MpIHtcblx0XHRcdHZub2RlLl9jb21wb25lbnQuX19ob29rcy5fbGlzdC5mb3JFYWNoKGVmZmVjdCA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZWZmZWN0Ll9jbGVhbnVwID09ICdmdW5jdGlvbicpIGVmZmVjdC5fY2xlYW51cCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdHZub2RlLl9jb21wb25lbnQuX19ob29rcyA9IG51bGw7XG5cdFx0fVxuXG5cdFx0dm5vZGUgPSBhc3NpZ24oe30sIHZub2RlKTtcblx0XHRpZiAodm5vZGUuX2NvbXBvbmVudCAhPSBudWxsKSB7XG5cdFx0XHRpZiAodm5vZGUuX2NvbXBvbmVudC5fcGFyZW50RG9tID09PSBwYXJlbnREb20pIHtcblx0XHRcdFx0dm5vZGUuX2NvbXBvbmVudC5fcGFyZW50RG9tID0gZGV0YWNoZWRQYXJlbnQ7XG5cdFx0XHR9XG5cdFx0XHR2bm9kZS5fY29tcG9uZW50ID0gbnVsbDtcblx0XHR9XG5cblx0XHR2bm9kZS5fY2hpbGRyZW4gPVxuXHRcdFx0dm5vZGUuX2NoaWxkcmVuICYmXG5cdFx0XHR2bm9kZS5fY2hpbGRyZW4ubWFwKGNoaWxkID0+XG5cdFx0XHRcdGRldGFjaGVkQ2xvbmUoY2hpbGQsIGRldGFjaGVkUGFyZW50LCBwYXJlbnREb20pXG5cdFx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIHZub2RlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVPcmlnaW5hbCh2bm9kZSwgZGV0YWNoZWRQYXJlbnQsIG9yaWdpbmFsUGFyZW50KSB7XG5cdGlmICh2bm9kZSkge1xuXHRcdHZub2RlLl9vcmlnaW5hbCA9IG51bGw7XG5cdFx0dm5vZGUuX2NoaWxkcmVuID1cblx0XHRcdHZub2RlLl9jaGlsZHJlbiAmJlxuXHRcdFx0dm5vZGUuX2NoaWxkcmVuLm1hcChjaGlsZCA9PlxuXHRcdFx0XHRyZW1vdmVPcmlnaW5hbChjaGlsZCwgZGV0YWNoZWRQYXJlbnQsIG9yaWdpbmFsUGFyZW50KVxuXHRcdFx0KTtcblxuXHRcdGlmICh2bm9kZS5fY29tcG9uZW50KSB7XG5cdFx0XHRpZiAodm5vZGUuX2NvbXBvbmVudC5fcGFyZW50RG9tID09PSBkZXRhY2hlZFBhcmVudCkge1xuXHRcdFx0XHRpZiAodm5vZGUuX2RvbSkge1xuXHRcdFx0XHRcdG9yaWdpbmFsUGFyZW50Lmluc2VydEJlZm9yZSh2bm9kZS5fZG9tLCB2bm9kZS5fbmV4dERvbSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dm5vZGUuX2NvbXBvbmVudC5fZm9yY2UgPSB0cnVlO1xuXHRcdFx0XHR2bm9kZS5fY29tcG9uZW50Ll9wYXJlbnREb20gPSBvcmlnaW5hbFBhcmVudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdm5vZGU7XG59XG5cbi8vIGhhdmluZyBjdXN0b20gaW5oZXJpdGFuY2UgaW5zdGVhZCBvZiBhIGNsYXNzIGhlcmUgc2F2ZXMgYSBsb3Qgb2YgYnl0ZXNcbmV4cG9ydCBmdW5jdGlvbiBTdXNwZW5zZSgpIHtcblx0Ly8gd2UgZG8gbm90IGNhbGwgc3VwZXIgaGVyZSB0byBnb2xmIHNvbWUgYnl0ZXMuLi5cblx0dGhpcy5fcGVuZGluZ1N1c3BlbnNpb25Db3VudCA9IDA7XG5cdHRoaXMuX3N1c3BlbmRlcnMgPSBudWxsO1xuXHR0aGlzLl9kZXRhY2hPbk5leHRSZW5kZXIgPSBudWxsO1xufVxuXG4vLyBUaGluZ3Mgd2UgZG8gaGVyZSB0byBzYXZlIHNvbWUgYnl0ZXMgYnV0IGFyZSBub3QgcHJvcGVyIEpTIGluaGVyaXRhbmNlOlxuLy8gLSBjYWxsIGBuZXcgQ29tcG9uZW50KClgIGFzIHRoZSBwcm90b3R5cGVcbi8vIC0gZG8gbm90IHNldCBgU3VzcGVuc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yYCB0byBgU3VzcGVuc2VgXG5TdXNwZW5zZS5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50KCk7XG5cbi8qKlxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlQ29tcG9uZW50fVxuICogQHBhcmFtIHtQcm9taXNlfSBwcm9taXNlIFRoZSB0aHJvd24gcHJvbWlzZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZTxhbnksIGFueT59IHN1c3BlbmRpbmdWTm9kZSBUaGUgc3VzcGVuZGluZyBjb21wb25lbnRcbiAqL1xuU3VzcGVuc2UucHJvdG90eXBlLl9jaGlsZERpZFN1c3BlbmQgPSBmdW5jdGlvbihwcm9taXNlLCBzdXNwZW5kaW5nVk5vZGUpIHtcblx0Y29uc3Qgc3VzcGVuZGluZ0NvbXBvbmVudCA9IHN1c3BlbmRpbmdWTm9kZS5fY29tcG9uZW50O1xuXG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuU3VzcGVuc2VDb21wb25lbnR9ICovXG5cdGNvbnN0IGMgPSB0aGlzO1xuXG5cdGlmIChjLl9zdXNwZW5kZXJzID09IG51bGwpIHtcblx0XHRjLl9zdXNwZW5kZXJzID0gW107XG5cdH1cblx0Yy5fc3VzcGVuZGVycy5wdXNoKHN1c3BlbmRpbmdDb21wb25lbnQpO1xuXG5cdGNvbnN0IHJlc29sdmUgPSBzdXNwZW5kZWQoYy5fdm5vZGUpO1xuXG5cdGxldCByZXNvbHZlZCA9IGZhbHNlO1xuXHRjb25zdCBvblJlc29sdmVkID0gKCkgPT4ge1xuXHRcdGlmIChyZXNvbHZlZCkgcmV0dXJuO1xuXG5cdFx0cmVzb2x2ZWQgPSB0cnVlO1xuXHRcdHN1c3BlbmRpbmdDb21wb25lbnQuX29uUmVzb2x2ZSA9IG51bGw7XG5cblx0XHRpZiAocmVzb2x2ZSkge1xuXHRcdFx0cmVzb2x2ZShvblN1c3BlbnNpb25Db21wbGV0ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9uU3VzcGVuc2lvbkNvbXBsZXRlKCk7XG5cdFx0fVxuXHR9O1xuXG5cdHN1c3BlbmRpbmdDb21wb25lbnQuX29uUmVzb2x2ZSA9IG9uUmVzb2x2ZWQ7XG5cblx0Y29uc3Qgb25TdXNwZW5zaW9uQ29tcGxldGUgPSAoKSA9PiB7XG5cdFx0aWYgKCEtLWMuX3BlbmRpbmdTdXNwZW5zaW9uQ291bnQpIHtcblx0XHRcdC8vIElmIHRoZSBzdXNwZW5zaW9uIHdhcyBkdXJpbmcgaHlkcmF0aW9uIHdlIGRvbid0IG5lZWQgdG8gcmVzdG9yZSB0aGVcblx0XHRcdC8vIHN1c3BlbmRlZCBjaGlsZHJlbiBpbnRvIHRoZSBfY2hpbGRyZW4gYXJyYXlcblx0XHRcdGlmIChjLnN0YXRlLl9zdXNwZW5kZWQpIHtcblx0XHRcdFx0Y29uc3Qgc3VzcGVuZGVkVk5vZGUgPSBjLnN0YXRlLl9zdXNwZW5kZWQ7XG5cdFx0XHRcdGMuX3Zub2RlLl9jaGlsZHJlblswXSA9IHJlbW92ZU9yaWdpbmFsKFxuXHRcdFx0XHRcdHN1c3BlbmRlZFZOb2RlLFxuXHRcdFx0XHRcdHN1c3BlbmRlZFZOb2RlLl9jb21wb25lbnQuX3BhcmVudERvbSxcblx0XHRcdFx0XHRzdXNwZW5kZWRWTm9kZS5fY29tcG9uZW50Ll9vcmlnaW5hbFBhcmVudERvbVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjLnNldFN0YXRlKHsgX3N1c3BlbmRlZDogKGMuX2RldGFjaE9uTmV4dFJlbmRlciA9IG51bGwpIH0pO1xuXG5cdFx0XHRsZXQgc3VzcGVuZGVkO1xuXHRcdFx0d2hpbGUgKChzdXNwZW5kZWQgPSBjLl9zdXNwZW5kZXJzLnBvcCgpKSkge1xuXHRcdFx0XHRzdXNwZW5kZWQuZm9yY2VVcGRhdGUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIFdlIGRvIG5vdCBzZXQgYHN1c3BlbmRlZDogdHJ1ZWAgZHVyaW5nIGh5ZHJhdGlvbiBiZWNhdXNlIHdlIHdhbnQgdGhlIGFjdHVhbCBtYXJrdXBcblx0ICogdG8gcmVtYWluIG9uIHNjcmVlbiBhbmQgaHlkcmF0ZSBpdCB3aGVuIHRoZSBzdXNwZW5zZSBhY3R1YWxseSBnZXRzIHJlc29sdmVkLlxuXHQgKiBXaGlsZSBpbiBub24taHlkcmF0aW9uIGNhc2VzIHRoZSB1c3VhbCBmYWxsYmFjayAtPiBjb21wb25lbnQgZmxvdyB3b3VsZCBvY2NvdXIuXG5cdCAqL1xuXHRjb25zdCB3YXNIeWRyYXRpbmcgPSBzdXNwZW5kaW5nVk5vZGUuX2h5ZHJhdGluZyA9PT0gdHJ1ZTtcblx0aWYgKCFjLl9wZW5kaW5nU3VzcGVuc2lvbkNvdW50KysgJiYgIXdhc0h5ZHJhdGluZykge1xuXHRcdGMuc2V0U3RhdGUoeyBfc3VzcGVuZGVkOiAoYy5fZGV0YWNoT25OZXh0UmVuZGVyID0gYy5fdm5vZGUuX2NoaWxkcmVuWzBdKSB9KTtcblx0fVxuXHRwcm9taXNlLnRoZW4ob25SZXNvbHZlZCwgb25SZXNvbHZlZCk7XG59O1xuXG5TdXNwZW5zZS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbigpIHtcblx0dGhpcy5fc3VzcGVuZGVycyA9IFtdO1xufTtcblxuLyoqXG4gKiBAdGhpcyB7aW1wb3J0KCcuL2ludGVybmFsJykuU3VzcGVuc2VDb21wb25lbnR9XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlQ29tcG9uZW50W1wicHJvcHNcIl19IHByb3BzXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlU3RhdGV9IHN0YXRlXG4gKi9cblN1c3BlbnNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihwcm9wcywgc3RhdGUpIHtcblx0aWYgKHRoaXMuX2RldGFjaE9uTmV4dFJlbmRlcikge1xuXHRcdC8vIFdoZW4gdGhlIFN1c3BlbnNlJ3MgX3Zub2RlIHdhcyBjcmVhdGVkIGJ5IGEgY2FsbCB0byBjcmVhdGVWTm9kZVxuXHRcdC8vIChpLmUuIGR1ZSB0byBhIHNldFN0YXRlIGZ1cnRoZXIgdXAgaW4gdGhlIHRyZWUpXG5cdFx0Ly8gaXQncyBfY2hpbGRyZW4gcHJvcCBpcyBudWxsLCBpbiB0aGlzIGNhc2Ugd2UgXCJmb3JnZXRcIiBhYm91dCB0aGUgcGFya2VkIHZub2RlcyB0byBkZXRhY2hcblx0XHRpZiAodGhpcy5fdm5vZGUuX2NoaWxkcmVuKSB7XG5cdFx0XHRjb25zdCBkZXRhY2hlZFBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0Y29uc3QgZGV0YWNoZWRDb21wb25lbnQgPSB0aGlzLl92bm9kZS5fY2hpbGRyZW5bMF0uX2NvbXBvbmVudDtcblx0XHRcdHRoaXMuX3Zub2RlLl9jaGlsZHJlblswXSA9IGRldGFjaGVkQ2xvbmUoXG5cdFx0XHRcdHRoaXMuX2RldGFjaE9uTmV4dFJlbmRlcixcblx0XHRcdFx0ZGV0YWNoZWRQYXJlbnQsXG5cdFx0XHRcdChkZXRhY2hlZENvbXBvbmVudC5fb3JpZ2luYWxQYXJlbnREb20gPSBkZXRhY2hlZENvbXBvbmVudC5fcGFyZW50RG9tKVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLl9kZXRhY2hPbk5leHRSZW5kZXIgPSBudWxsO1xuXHR9XG5cblx0Ly8gV3JhcCBmYWxsYmFjayB0cmVlIGluIGEgVk5vZGUgdGhhdCBwcmV2ZW50cyBpdHNlbGYgZnJvbSBiZWluZyBtYXJrZWQgYXMgYWJvcnRpbmcgbWlkLWh5ZHJhdGlvbjpcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gKi9cblx0Y29uc3QgZmFsbGJhY2sgPVxuXHRcdHN0YXRlLl9zdXNwZW5kZWQgJiYgY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgcHJvcHMuZmFsbGJhY2spO1xuXHRpZiAoZmFsbGJhY2spIGZhbGxiYWNrLl9oeWRyYXRpbmcgPSBudWxsO1xuXG5cdHJldHVybiBbXG5cdFx0Y3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgc3RhdGUuX3N1c3BlbmRlZCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbiksXG5cdFx0ZmFsbGJhY2tcblx0XTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGFuZCBjYWxscyB0aGUgcGFyZW50IGNvbXBvbmVudCdzIF9zdXNwZW5kZWQgbWV0aG9kLCBwYXNzaW5nIGluIHRoZVxuICogc3VzcGVuZGVkIHZub2RlLiBUaGlzIGlzIGEgd2F5IGZvciBhIHBhcmVudCAoZS5nLiBTdXNwZW5zZUxpc3QpIHRvIGdldCBub3RpZmllZFxuICogdGhhdCBvbmUgb2YgaXRzIGNoaWxkcmVuL2Rlc2NlbmRhbnRzIHN1c3BlbmRlZC5cbiAqXG4gKiBUaGUgcGFyZW50IE1BWSByZXR1cm4gYSBjYWxsYmFjay4gVGhlIGNhbGxiYWNrIHdpbGwgZ2V0IGNhbGxlZCB3aGVuIHRoZVxuICogc3VzcGVuc2lvbiByZXNvbHZlcywgbm90aWZ5aW5nIHRoZSBwYXJlbnQgb2YgdGhlIGZhY3QuXG4gKiBNb3Jlb3ZlciwgdGhlIGNhbGxiYWNrIGdldHMgZnVuY3Rpb24gYHVuc3VzcGVuZGAgYXMgYSBwYXJhbWV0ZXIuIFRoZSByZXNvbHZlZFxuICogY2hpbGQgZGVzY2VuZGFudCB3aWxsIG5vdCBhY3R1YWxseSBnZXQgdW5zdXNwZW5kZWQgdW50aWwgYHVuc3VzcGVuZGAgZ2V0cyBjYWxsZWQuXG4gKiBUaGlzIGlzIGEgd2F5IGZvciB0aGUgcGFyZW50IHRvIGRlbGF5IHVuc3VzcGVuZGluZy5cbiAqXG4gKiBJZiB0aGUgcGFyZW50IGRvZXMgbm90IHJldHVybiBhIGNhbGxiYWNrIHRoZW4gdGhlIHJlc29sdmVkIHZub2RlXG4gKiBnZXRzIHVuc3VzcGVuZGVkIGltbWVkaWF0ZWx5IHdoZW4gaXQgcmVzb2x2ZXMuXG4gKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGVcbiAqIEByZXR1cm5zIHsoKHVuc3VzcGVuZDogKCkgPT4gdm9pZCkgPT4gdm9pZCk/fVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VzcGVuZGVkKHZub2RlKSB7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xuXHRsZXQgY29tcG9uZW50ID0gdm5vZGUuX3BhcmVudC5fY29tcG9uZW50O1xuXHRyZXR1cm4gY29tcG9uZW50ICYmIGNvbXBvbmVudC5fc3VzcGVuZGVkICYmIGNvbXBvbmVudC5fc3VzcGVuZGVkKHZub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhenkobG9hZGVyKSB7XG5cdGxldCBwcm9tO1xuXHRsZXQgY29tcG9uZW50O1xuXHRsZXQgZXJyb3I7XG5cblx0ZnVuY3Rpb24gTGF6eShwcm9wcykge1xuXHRcdGlmICghcHJvbSkge1xuXHRcdFx0cHJvbSA9IGxvYWRlcigpO1xuXHRcdFx0cHJvbS50aGVuKFxuXHRcdFx0XHRleHBvcnRzID0+IHtcblx0XHRcdFx0XHRjb21wb25lbnQgPSBleHBvcnRzLmRlZmF1bHQgfHwgZXhwb3J0cztcblx0XHRcdFx0fSxcblx0XHRcdFx0ZSA9PiB7XG5cdFx0XHRcdFx0ZXJyb3IgPSBlO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGlmIChlcnJvcikge1xuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb21wb25lbnQpIHtcblx0XHRcdHRocm93IHByb207XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCBwcm9wcyk7XG5cdH1cblxuXHRMYXp5LmRpc3BsYXlOYW1lID0gJ0xhenknO1xuXHRMYXp5Ll9mb3J3YXJkZWQgPSB0cnVlO1xuXHRyZXR1cm4gTGF6eTtcbn1cbiIsICJpbXBvcnQgeyBDb21wb25lbnQsIHRvQ2hpbGRBcnJheSB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBzdXNwZW5kZWQgfSBmcm9tICcuL3N1c3BlbnNlLmpzJztcblxuLy8gSW5kZXhlcyB0byBsaW5rZWQgbGlzdCBub2RlcyAobm9kZXMgYXJlIHN0b3JlZCBhcyBhcnJheXMgdG8gc2F2ZSBieXRlcykuXG5jb25zdCBTVVNQRU5ERURfQ09VTlQgPSAwO1xuY29uc3QgUkVTT0xWRURfQ09VTlQgPSAxO1xuY29uc3QgTkVYVF9OT0RFID0gMjtcblxuLy8gSGF2aW5nIGN1c3RvbSBpbmhlcml0YW5jZSBpbnN0ZWFkIG9mIGEgY2xhc3MgaGVyZSBzYXZlcyBhIGxvdCBvZiBieXRlcy5cbmV4cG9ydCBmdW5jdGlvbiBTdXNwZW5zZUxpc3QoKSB7XG5cdHRoaXMuX25leHQgPSBudWxsO1xuXHR0aGlzLl9tYXAgPSBudWxsO1xufVxuXG4vLyBNYXJrIG9uZSBvZiBjaGlsZCdzIGVhcmxpZXIgc3VzcGVuc2lvbnMgYXMgcmVzb2x2ZWQuXG4vLyBTb21lIHBlbmRpbmcgY2FsbGJhY2tzIG1heSBiZWNvbWUgY2FsbGFibGUgZHVlIHRvIHRoaXNcbi8vIChlLmcuIHRoZSBsYXN0IHN1c3BlbmRlZCBkZXNjZW5kYW50IGdldHMgcmVzb2x2ZWQgd2hlblxuLy8gcmV2ZWFsT3JkZXIgPT09ICd0b2dldGhlcicpLiBQcm9jZXNzIHRob3NlIGNhbGxiYWNrcyBhcyB3ZWxsLlxuY29uc3QgcmVzb2x2ZSA9IChsaXN0LCBjaGlsZCwgbm9kZSkgPT4ge1xuXHRpZiAoKytub2RlW1JFU09MVkVEX0NPVU5UXSA9PT0gbm9kZVtTVVNQRU5ERURfQ09VTlRdKSB7XG5cdFx0Ly8gVGhlIG51bWJlciBhIGNoaWxkIChvciBhbnkgb2YgaXRzIGRlc2NlbmRhbnRzKSBoYXMgYmVlbiBzdXNwZW5kZWRcblx0XHQvLyBtYXRjaGVzIHRoZSBudW1iZXIgb2YgdGltZXMgaXQncyBiZWVuIHJlc29sdmVkLiBUaGVyZWZvcmUgd2Vcblx0XHQvLyBtYXJrIHRoZSBjaGlsZCBhcyBjb21wbGV0ZWx5IHJlc29sdmVkIGJ5IGRlbGV0aW5nIGl0IGZyb20gLl9tYXAuXG5cdFx0Ly8gVGhpcyBpcyB1c2VkIHRvIGZpZ3VyZSBvdXQgd2hlbiAqYWxsKiBjaGlsZHJlbiBoYXZlIGJlZW4gY29tcGxldGVseVxuXHRcdC8vIHJlc29sdmVkIHdoZW4gcmV2ZWFsT3JkZXIgaXMgJ3RvZ2V0aGVyJy5cblx0XHRsaXN0Ll9tYXAuZGVsZXRlKGNoaWxkKTtcblx0fVxuXG5cdC8vIElmIHJldmVhbE9yZGVyIGlzIGZhbHN5IHRoZW4gd2UgY2FuIGRvIGFuIGVhcmx5IGV4aXQsIGFzIHRoZVxuXHQvLyBjYWxsYmFja3Mgd29uJ3QgZ2V0IHF1ZXVlZCBpbiB0aGUgbm9kZSBhbnl3YXkuXG5cdC8vIElmIHJldmVhbE9yZGVyIGlzICd0b2dldGhlcicgdGhlbiBhbHNvIGRvIGFuIGVhcmx5IGV4aXRcblx0Ly8gaWYgYWxsIHN1c3BlbmRlZCBkZXNjZW5kYW50cyBoYXZlIG5vdCB5ZXQgYmVlbiByZXNvbHZlZC5cblx0aWYgKFxuXHRcdCFsaXN0LnByb3BzLnJldmVhbE9yZGVyIHx8XG5cdFx0KGxpc3QucHJvcHMucmV2ZWFsT3JkZXJbMF0gPT09ICd0JyAmJiBsaXN0Ll9tYXAuc2l6ZSlcblx0KSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gV2FsayB0aGUgY3VycmVudGx5IHN1c3BlbmRlZCBjaGlsZHJlbiBpbiBvcmRlciwgY2FsbGluZyB0aGVpclxuXHQvLyBzdG9yZWQgY2FsbGJhY2tzIG9uIHRoZSB3YXkuIFN0b3AgaWYgd2UgZW5jb3VudGVyIGEgY2hpbGQgdGhhdFxuXHQvLyBoYXMgbm90IGJlZW4gY29tcGxldGVseSByZXNvbHZlZCB5ZXQuXG5cdG5vZGUgPSBsaXN0Ll9uZXh0O1xuXHR3aGlsZSAobm9kZSkge1xuXHRcdHdoaWxlIChub2RlLmxlbmd0aCA+IDMpIHtcblx0XHRcdG5vZGUucG9wKCkoKTtcblx0XHR9XG5cdFx0aWYgKG5vZGVbUkVTT0xWRURfQ09VTlRdIDwgbm9kZVtTVVNQRU5ERURfQ09VTlRdKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0bGlzdC5fbmV4dCA9IG5vZGUgPSBub2RlW05FWFRfTk9ERV07XG5cdH1cbn07XG5cbi8vIFRoaW5ncyB3ZSBkbyBoZXJlIHRvIHNhdmUgc29tZSBieXRlcyBidXQgYXJlIG5vdCBwcm9wZXIgSlMgaW5oZXJpdGFuY2U6XG4vLyAtIGNhbGwgYG5ldyBDb21wb25lbnQoKWAgYXMgdGhlIHByb3RvdHlwZVxuLy8gLSBkbyBub3Qgc2V0IGBTdXNwZW5zZS5wcm90b3R5cGUuY29uc3RydWN0b3JgIHRvIGBTdXNwZW5zZWBcblN1c3BlbnNlTGlzdC5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50KCk7XG5cblN1c3BlbnNlTGlzdC5wcm90b3R5cGUuX3N1c3BlbmRlZCA9IGZ1bmN0aW9uKGNoaWxkKSB7XG5cdGNvbnN0IGxpc3QgPSB0aGlzO1xuXHRjb25zdCBkZWxlZ2F0ZWQgPSBzdXNwZW5kZWQobGlzdC5fdm5vZGUpO1xuXG5cdGxldCBub2RlID0gbGlzdC5fbWFwLmdldChjaGlsZCk7XG5cdG5vZGVbU1VTUEVOREVEX0NPVU5UXSsrO1xuXG5cdHJldHVybiB1bnN1c3BlbmQgPT4ge1xuXHRcdGNvbnN0IHdyYXBwZWRVbnN1c3BlbmQgPSAoKSA9PiB7XG5cdFx0XHRpZiAoIWxpc3QucHJvcHMucmV2ZWFsT3JkZXIpIHtcblx0XHRcdFx0Ly8gU3BlY2lhbCBjYXNlIHRoZSB1bmRlZmluZWQgKGZhbHN5KSByZXZlYWxPcmRlciwgYXMgdGhlcmVcblx0XHRcdFx0Ly8gaXMgbm8gbmVlZCB0byBjb29yZGluYXRlIGEgc3BlY2lmaWMgb3JkZXIgb3IgdW5zdXNwZW5kcy5cblx0XHRcdFx0dW5zdXNwZW5kKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRub2RlLnB1c2godW5zdXNwZW5kKTtcblx0XHRcdFx0cmVzb2x2ZShsaXN0LCBjaGlsZCwgbm9kZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRpZiAoZGVsZWdhdGVkKSB7XG5cdFx0XHRkZWxlZ2F0ZWQod3JhcHBlZFVuc3VzcGVuZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXBwZWRVbnN1c3BlbmQoKTtcblx0XHR9XG5cdH07XG59O1xuXG5TdXNwZW5zZUxpc3QucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKHByb3BzKSB7XG5cdHRoaXMuX25leHQgPSBudWxsO1xuXHR0aGlzLl9tYXAgPSBuZXcgTWFwKCk7XG5cblx0Y29uc3QgY2hpbGRyZW4gPSB0b0NoaWxkQXJyYXkocHJvcHMuY2hpbGRyZW4pO1xuXHRpZiAocHJvcHMucmV2ZWFsT3JkZXIgJiYgcHJvcHMucmV2ZWFsT3JkZXJbMF0gPT09ICdiJykge1xuXHRcdC8vIElmIG9yZGVyID09PSAnYmFja3dhcmRzJyAob3IsIHdlbGwsIGFueXRoaW5nIHN0YXJ0aW5nIHdpdGggYSAnYicpXG5cdFx0Ly8gdGhlbiBmbGlwIHRoZSBjaGlsZCBsaXN0IGFyb3VuZCBzbyB0aGF0IHRoZSBsYXN0IGNoaWxkIHdpbGwgYmVcblx0XHQvLyB0aGUgZmlyc3QgaW4gdGhlIGxpbmtlZCBsaXN0LlxuXHRcdGNoaWxkcmVuLnJldmVyc2UoKTtcblx0fVxuXHQvLyBCdWlsZCB0aGUgbGlua2VkIGxpc3QuIEl0ZXJhdGUgdGhyb3VnaCB0aGUgY2hpbGRyZW4gaW4gcmV2ZXJzZSBvcmRlclxuXHQvLyBzbyB0aGF0IGBfbmV4dGAgcG9pbnRzIHRvIHRoZSBmaXJzdCBsaW5rZWQgbGlzdCBub2RlIHRvIGJlIHJlc29sdmVkLlxuXHRmb3IgKGxldCBpID0gY2hpbGRyZW4ubGVuZ3RoOyBpLS07ICkge1xuXHRcdC8vIENyZWF0ZSBhIG5ldyBsaW5rZWQgbGlzdCBub2RlIGFzIGFuIGFycmF5IG9mIGZvcm06XG5cdFx0Ly8gXHRbc3VzcGVuZGVkX2NvdW50LCByZXNvbHZlZF9jb3VudCwgbmV4dF9ub2RlXVxuXHRcdC8vIHdoZXJlIHN1c3BlbmRlZF9jb3VudCBhbmQgcmVzb2x2ZWRfY291bnQgYXJlIG51bWVyaWMgY291bnRlcnMgZm9yXG5cdFx0Ly8ga2VlcGluZyB0cmFjayBob3cgbWFueSB0aW1lcyBhIG5vZGUgaGFzIGJlZW4gc3VzcGVuZGVkIGFuZCByZXNvbHZlZC5cblx0XHQvL1xuXHRcdC8vIE5vdGUgdGhhdCBzdXNwZW5kZWRfY291bnQgc3RhcnRzIGZyb20gMSBpbnN0ZWFkIG9mIDAsIHNvIHdlIGNhbiBibG9ja1xuXHRcdC8vIHByb2Nlc3NpbmcgY2FsbGJhY2tzIHVudGlsIGNvbXBvbmVudERpZE1vdW50IGhhcyBiZWVuIGNhbGxlZC4gSW4gYSBzZW5zZVxuXHRcdC8vIG5vZGUgaXMgc3VzcGVuZGVkIGF0IGxlYXN0IHVudGlsIGNvbXBvbmVudERpZE1vdW50IGdldHMgY2FsbGVkIVxuXHRcdC8vXG5cdFx0Ly8gUGVuZGluZyBjYWxsYmFja3MgYXJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGU6XG5cdFx0Ly8gXHRbc3VzcGVuZGVkX2NvdW50LCByZXNvbHZlZF9jb3VudCwgbmV4dF9ub2RlLCBjYWxsYmFja18wLCBjYWxsYmFja18xLCAuLi5dXG5cdFx0dGhpcy5fbWFwLnNldChjaGlsZHJlbltpXSwgKHRoaXMuX25leHQgPSBbMSwgMCwgdGhpcy5fbmV4dF0pKTtcblx0fVxuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59O1xuXG5TdXNwZW5zZUxpc3QucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IFN1c3BlbnNlTGlzdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbigpIHtcblx0Ly8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBjaGlsZHJlbiBhZnRlciBtb3VudGluZyBmb3IgdHdvIHJlYXNvbnM6XG5cdC8vIDEuIEFzIGVhY2ggbm9kZVtTVVNQRU5ERURfQ09VTlRdIHN0YXJ0cyBmcm9tIDEsIHRoaXMgaXRlcmF0aW9uIGluY3JlYXNlc1xuXHQvLyAgICBlYWNoIG5vZGVbUkVMRUFTRURfQ09VTlRdIGJ5IDEsIHRoZXJlZm9yZSBiYWxhbmNpbmcgdGhlIGNvdW50ZXJzLlxuXHQvLyAgICBUaGUgbm9kZXMgY2FuIG5vdyBiZSBjb21wbGV0ZWx5IGNvbnN1bWVkIGZyb20gdGhlIGxpbmtlZCBsaXN0LlxuXHQvLyAyLiBIYW5kbGUgbm9kZXMgdGhhdCBtaWdodCBoYXZlIGdvdHRlbiByZXNvbHZlZCBiZXR3ZWVuIHJlbmRlciBhbmRcblx0Ly8gICAgY29tcG9uZW50RGlkTW91bnQuXG5cdHRoaXMuX21hcC5mb3JFYWNoKChub2RlLCBjaGlsZCkgPT4ge1xuXHRcdHJlc29sdmUodGhpcywgY2hpbGQsIG5vZGUpO1xuXHR9KTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgcmVuZGVyIH0gZnJvbSAncHJlYWN0JztcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vLi4vc3JjL2luZGV4JykuUmVuZGVyYWJsZVByb3BzPHsgY29udGV4dDogYW55IH0+fSBwcm9wc1xuICovXG5mdW5jdGlvbiBDb250ZXh0UHJvdmlkZXIocHJvcHMpIHtcblx0dGhpcy5nZXRDaGlsZENvbnRleHQgPSAoKSA9PiBwcm9wcy5jb250ZXh0O1xuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59XG5cbi8qKlxuICogUG9ydGFsIGNvbXBvbmVudFxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH1cbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZH0gcHJvcHNcbiAqXG4gKiBUT0RPOiB1c2UgY3JlYXRlUm9vdCgpIGluc3RlYWQgb2YgZmFrZSByb290XG4gKi9cbmZ1bmN0aW9uIFBvcnRhbChwcm9wcykge1xuXHRjb25zdCBfdGhpcyA9IHRoaXM7XG5cdGxldCBjb250YWluZXIgPSBwcm9wcy5fY29udGFpbmVyO1xuXG5cdF90aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24oKSB7XG5cdFx0cmVuZGVyKG51bGwsIF90aGlzLl90ZW1wKTtcblx0XHRfdGhpcy5fdGVtcCA9IG51bGw7XG5cdFx0X3RoaXMuX2NvbnRhaW5lciA9IG51bGw7XG5cdH07XG5cblx0Ly8gV2hlbiB3ZSBjaGFuZ2UgY29udGFpbmVyIHdlIHNob3VsZCBjbGVhciBvdXIgb2xkIGNvbnRhaW5lciBhbmRcblx0Ly8gaW5kaWNhdGUgYSBuZXcgbW91bnQuXG5cdGlmIChfdGhpcy5fY29udGFpbmVyICYmIF90aGlzLl9jb250YWluZXIgIT09IGNvbnRhaW5lcikge1xuXHRcdF90aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG5cdH1cblxuXHQvLyBXaGVuIHByb3BzLnZub2RlIGlzIHVuZGVmaW5lZC9mYWxzZS9udWxsIHdlIGFyZSBkZWFsaW5nIHdpdGggc29tZSBraW5kIG9mXG5cdC8vIGNvbmRpdGlvbmFsIHZub2RlLiBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIHJlbmRlci5cblx0aWYgKHByb3BzLl92bm9kZSkge1xuXHRcdGlmICghX3RoaXMuX3RlbXApIHtcblx0XHRcdF90aGlzLl9jb250YWluZXIgPSBjb250YWluZXI7XG5cblx0XHRcdC8vIENyZWF0ZSBhIGZha2UgRE9NIHBhcmVudCBub2RlIHRoYXQgbWFuYWdlcyBhIHN1YnNldCBvZiBgY29udGFpbmVyYCdzIGNoaWxkcmVuOlxuXHRcdFx0X3RoaXMuX3RlbXAgPSB7XG5cdFx0XHRcdG5vZGVUeXBlOiAxLFxuXHRcdFx0XHRwYXJlbnROb2RlOiBjb250YWluZXIsXG5cdFx0XHRcdGNoaWxkTm9kZXM6IFtdLFxuXHRcdFx0XHRhcHBlbmRDaGlsZChjaGlsZCkge1xuXHRcdFx0XHRcdHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKTtcblx0XHRcdFx0XHRfdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKGNoaWxkKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5zZXJ0QmVmb3JlKGNoaWxkLCBiZWZvcmUpIHtcblx0XHRcdFx0XHR0aGlzLmNoaWxkTm9kZXMucHVzaChjaGlsZCk7XG5cdFx0XHRcdFx0X3RoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChjaGlsZCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJlbW92ZUNoaWxkKGNoaWxkKSB7XG5cdFx0XHRcdFx0dGhpcy5jaGlsZE5vZGVzLnNwbGljZSh0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihjaGlsZCkgPj4+IDEsIDEpO1xuXHRcdFx0XHRcdF90aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIFJlbmRlciBvdXIgd3JhcHBpbmcgZWxlbWVudCBpbnRvIHRlbXAuXG5cdFx0cmVuZGVyKFxuXHRcdFx0Y3JlYXRlRWxlbWVudChDb250ZXh0UHJvdmlkZXIsIHsgY29udGV4dDogX3RoaXMuY29udGV4dCB9LCBwcm9wcy5fdm5vZGUpLFxuXHRcdFx0X3RoaXMuX3RlbXBcblx0XHQpO1xuXHR9XG5cdC8vIFdoZW4gd2UgY29tZSBmcm9tIGEgY29uZGl0aW9uYWwgcmVuZGVyLCBvbiBhIG1vdW50ZWRcblx0Ly8gcG9ydGFsIHdlIHNob3VsZCBjbGVhciB0aGUgRE9NLlxuXHRlbHNlIGlmIChfdGhpcy5fdGVtcCkge1xuXHRcdF90aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG5cdH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgUG9ydGFsYCB0byBjb250aW51ZSByZW5kZXJpbmcgdGhlIHZub2RlIHRyZWUgYXQgYSBkaWZmZXJlbnQgRE9NIG5vZGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IHZub2RlIFRoZSB2bm9kZSB0byByZW5kZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gY29udGFpbmVyIFRoZSBET00gbm9kZSB0byBjb250aW51ZSByZW5kZXJpbmcgaW4gdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQb3J0YWwodm5vZGUsIGNvbnRhaW5lcikge1xuXHRjb25zdCBlbCA9IGNyZWF0ZUVsZW1lbnQoUG9ydGFsLCB7IF92bm9kZTogdm5vZGUsIF9jb250YWluZXI6IGNvbnRhaW5lciB9KTtcblx0ZWwuY29udGFpbmVySW5mbyA9IGNvbnRhaW5lcjtcblx0cmV0dXJuIGVsO1xufVxuIiwgImltcG9ydCB7XG5cdHJlbmRlciBhcyBwcmVhY3RSZW5kZXIsXG5cdGh5ZHJhdGUgYXMgcHJlYWN0SHlkcmF0ZSxcblx0b3B0aW9ucyxcblx0dG9DaGlsZEFycmF5LFxuXHRDb21wb25lbnRcbn0gZnJvbSAncHJlYWN0JztcblxuZXhwb3J0IGNvbnN0IFJFQUNUX0VMRU1FTlRfVFlQRSA9XG5cdCh0eXBlb2YgU3ltYm9sICE9ICd1bmRlZmluZWQnICYmIFN5bWJvbC5mb3IgJiYgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpKSB8fFxuXHQweGVhYzc7XG5cbmNvbnN0IENBTUVMX1BST1BTID0gL14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxtYXJrZXIoPyFIfFd8VSl8b3ZlcmxpbmV8cGFpbnR8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dW5kZXJsaW5lfHVuaWNvZGV8dW5pdHN8dnx2ZWN0b3J8dmVydHx3b3JkfHdyaXRpbmd8eCg/IUMpKVtBLVpdLztcblxuY29uc3QgSVNfRE9NID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcblxuLy8gSW5wdXQgdHlwZXMgZm9yIHdoaWNoIG9uY2hhbmdlIHNob3VsZCBub3QgYmUgY29udmVydGVkIHRvIG9uaW5wdXQuXG4vLyB0eXBlPVwiZmlsZXxjaGVja2JveHxyYWRpb1wiLCBwbHVzIFwicmFuZ2VcIiBpbiBJRTExLlxuLy8gKElFMTEgZG9lc24ndCBzdXBwb3J0IFN5bWJvbCwgd2hpY2ggd2UgdXNlIGhlcmUgdG8gdHVybiBgcmFkYCBpbnRvIGByYWAgd2hpY2ggbWF0Y2hlcyBcInJhbmdlXCIpXG5jb25zdCBvbkNoYW5nZUlucHV0VHlwZSA9IHR5cGUgPT5cblx0KHR5cGVvZiBTeW1ib2wgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFN5bWJvbCgpID09ICdzeW1ib2wnXG5cdFx0PyAvZmlsfGNoZXxyYWQvaVxuXHRcdDogL2ZpbHxjaGV8cmEvaVxuXHQpLnRlc3QodHlwZSk7XG5cbi8vIFNvbWUgbGlicmFyaWVzIGxpa2UgYHJlYWN0LXZpcnR1YWxpemVkYCBleHBsaWNpdGx5IGNoZWNrIGZvciB0aGlzLlxuQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cbi8vIGBVTlNBRkVfKmAgbGlmZWN5Y2xlIGhvb2tzXG4vLyBQcmVhY3Qgb25seSBldmVyIGludm9rZXMgdGhlIHVucHJlZml4ZWQgbWV0aG9kcy5cbi8vIEhlcmUgd2UgcHJvdmlkZSBhIGJhc2UgXCJmYWxsYmFja1wiIGltcGxlbWVudGF0aW9uIHRoYXQgY2FsbHMgYW55IGRlZmluZWQgVU5TQUZFXyBwcmVmaXhlZCBtZXRob2QuXG4vLyAtIElmIGEgY29tcG9uZW50IGRlZmluZXMgaXRzIG93biBgY29tcG9uZW50RGlkTW91bnQoKWAgKGluY2x1ZGluZyB2aWEgZGVmaW5lUHJvcGVydHkpLCB1c2UgdGhhdC5cbi8vIC0gSWYgYSBjb21wb25lbnQgZGVmaW5lcyBgVU5TQUZFX2NvbXBvbmVudERpZE1vdW50KClgLCBgY29tcG9uZW50RGlkTW91bnRgIGlzIHRoZSBhbGlhcyBnZXR0ZXIvc2V0dGVyLlxuLy8gLSBJZiBhbnl0aGluZyBhc3NpZ25zIHRvIGFuIGBVTlNBRkVfKmAgcHJvcGVydHksIHRoZSBhc3NpZ25tZW50IGlzIGZvcndhcmRlZCB0byB0aGUgdW5wcmVmaXhlZCBwcm9wZXJ0eS5cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJlYWN0anMvcHJlYWN0L2lzc3Vlcy8xOTQxXG5bXG5cdCdjb21wb25lbnRXaWxsTW91bnQnLFxuXHQnY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcycsXG5cdCdjb21wb25lbnRXaWxsVXBkYXRlJ1xuXS5mb3JFYWNoKGtleSA9PiB7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21wb25lbnQucHJvdG90eXBlLCBrZXksIHtcblx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0Z2V0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXNbJ1VOU0FGRV8nICsga2V5XTtcblx0XHR9LFxuXHRcdHNldCh2KSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRcdHZhbHVlOiB2XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xufSk7XG5cbi8qKlxuICogUHJveHkgcmVuZGVyKCkgc2luY2UgUmVhY3QgcmV0dXJucyBhIENvbXBvbmVudCByZWZlcmVuY2UuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfSB2bm9kZSBWTm9kZSB0cmVlIHRvIHJlbmRlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnQgRE9NIG5vZGUgdG8gcmVuZGVyIHZub2RlIHRyZWUgaW50b1xuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIE9wdGlvbmFsIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgcmVuZGVyaW5nXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50IHwgbnVsbH0gVGhlIHJvb3QgY29tcG9uZW50IHJlZmVyZW5jZSBvciBudWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIodm5vZGUsIHBhcmVudCwgY2FsbGJhY2spIHtcblx0Ly8gUmVhY3QgZGVzdHJveXMgYW55IGV4aXN0aW5nIERPTSBub2Rlcywgc2VlICMxNzI3XG5cdC8vIC4uLmJ1dCBvbmx5IG9uIHRoZSBmaXJzdCByZW5kZXIsIHNlZSAjMTgyOFxuXHRpZiAocGFyZW50Ll9jaGlsZHJlbiA9PSBudWxsKSB7XG5cdFx0cGFyZW50LnRleHRDb250ZW50ID0gJyc7XG5cdH1cblxuXHRwcmVhY3RSZW5kZXIodm5vZGUsIHBhcmVudCk7XG5cdGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJykgY2FsbGJhY2soKTtcblxuXHRyZXR1cm4gdm5vZGUgPyB2bm9kZS5fY29tcG9uZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5ZHJhdGUodm5vZGUsIHBhcmVudCwgY2FsbGJhY2spIHtcblx0cHJlYWN0SHlkcmF0ZSh2bm9kZSwgcGFyZW50KTtcblx0aWYgKHR5cGVvZiBjYWxsYmFjayA9PSAnZnVuY3Rpb24nKSBjYWxsYmFjaygpO1xuXG5cdHJldHVybiB2bm9kZSA/IHZub2RlLl9jb21wb25lbnQgOiBudWxsO1xufVxuXG5sZXQgb2xkRXZlbnRIb29rID0gb3B0aW9ucy5ldmVudDtcbm9wdGlvbnMuZXZlbnQgPSBlID0+IHtcblx0aWYgKG9sZEV2ZW50SG9vaykgZSA9IG9sZEV2ZW50SG9vayhlKTtcblx0ZS5wZXJzaXN0ID0gZW1wdHk7XG5cdGUuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBpc1Byb3BhZ2F0aW9uU3RvcHBlZDtcblx0ZS5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBpc0RlZmF1bHRQcmV2ZW50ZWQ7XG5cdHJldHVybiAoZS5uYXRpdmVFdmVudCA9IGUpO1xufTtcblxuZnVuY3Rpb24gZW1wdHkoKSB7fVxuXG5mdW5jdGlvbiBpc1Byb3BhZ2F0aW9uU3RvcHBlZCgpIHtcblx0cmV0dXJuIHRoaXMuY2FuY2VsQnViYmxlO1xufVxuXG5mdW5jdGlvbiBpc0RlZmF1bHRQcmV2ZW50ZWQoKSB7XG5cdHJldHVybiB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ7XG59XG5cbmxldCBjbGFzc05hbWVEZXNjcmlwdG9yID0ge1xuXHRjb25maWd1cmFibGU6IHRydWUsXG5cdGdldCgpIHtcblx0XHRyZXR1cm4gdGhpcy5jbGFzcztcblx0fVxufTtcblxubGV0IG9sZFZOb2RlSG9vayA9IG9wdGlvbnMudm5vZGU7XG5vcHRpb25zLnZub2RlID0gdm5vZGUgPT4ge1xuXHRsZXQgdHlwZSA9IHZub2RlLnR5cGU7XG5cdGxldCBwcm9wcyA9IHZub2RlLnByb3BzO1xuXHRsZXQgbm9ybWFsaXplZFByb3BzID0gcHJvcHM7XG5cblx0Ly8gb25seSBub3JtYWxpemUgcHJvcHMgb24gRWxlbWVudCBub2Rlc1xuXHRpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG5cdFx0Y29uc3Qgbm9uQ3VzdG9tRWxlbWVudCA9IHR5cGUuaW5kZXhPZignLScpID09PSAtMTtcblx0XHRub3JtYWxpemVkUHJvcHMgPSB7fTtcblxuXHRcdGZvciAobGV0IGkgaW4gcHJvcHMpIHtcblx0XHRcdGxldCB2YWx1ZSA9IHByb3BzW2ldO1xuXG5cdFx0XHRpZiAoSVNfRE9NICYmIGkgPT09ICdjaGlsZHJlbicgJiYgdHlwZSA9PT0gJ25vc2NyaXB0Jykge1xuXHRcdFx0XHQvLyBFbXVsYXRlIFJlYWN0J3MgYmVoYXZpb3Igb2Ygbm90IHJlbmRlcmluZyB0aGUgY29udGVudHMgb2Ygbm9zY3JpcHQgdGFncyBvbiB0aGUgY2xpZW50LlxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PT0gJ3ZhbHVlJyAmJiAnZGVmYXVsdFZhbHVlJyBpbiBwcm9wcyAmJiB2YWx1ZSA9PSBudWxsKSB7XG5cdFx0XHRcdC8vIFNraXAgYXBwbHlpbmcgdmFsdWUgaWYgaXQgaXMgbnVsbC91bmRlZmluZWQgYW5kIHdlIGFscmVhZHkgc2V0XG5cdFx0XHRcdC8vIGEgZGVmYXVsdCB2YWx1ZVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGkgPT09ICdkZWZhdWx0VmFsdWUnICYmXG5cdFx0XHRcdCd2YWx1ZScgaW4gcHJvcHMgJiZcblx0XHRcdFx0cHJvcHMudmFsdWUgPT0gbnVsbFxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIGBkZWZhdWx0VmFsdWVgIGlzIHRyZWF0ZWQgYXMgYSBmYWxsYmFjayBgdmFsdWVgIHdoZW4gYSB2YWx1ZSBwcm9wIGlzIHByZXNlbnQgYnV0IG51bGwvdW5kZWZpbmVkLlxuXHRcdFx0XHQvLyBgZGVmYXVsdFZhbHVlYCBmb3IgRWxlbWVudHMgd2l0aCBubyB2YWx1ZSBwcm9wIGlzIHRoZSBzYW1lIGFzIHRoZSBET00gZGVmYXVsdFZhbHVlIHByb3BlcnR5LlxuXHRcdFx0XHRpID0gJ3ZhbHVlJztcblx0XHRcdH0gZWxzZSBpZiAoaSA9PT0gJ2Rvd25sb2FkJyAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHQvLyBDYWxsaW5nIGBzZXRBdHRyaWJ1dGVgIHdpdGggYSB0cnV0aHkgdmFsdWUgd2lsbCBsZWFkIHRvIGl0IGJlaW5nXG5cdFx0XHRcdC8vIHBhc3NlZCBhcyBhIHN0cmluZ2lmaWVkIHZhbHVlLCBlLmcuIGBkb3dubG9hZD1cInRydWVcImAuIFJlYWN0XG5cdFx0XHRcdC8vIGNvbnZlcnRzIGl0IHRvIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkLCBvdGhlcndpc2UgdGhlIGF0dHJpYnV0ZVxuXHRcdFx0XHQvLyB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIGZpbGUgd2lsbCBiZSBjYWxsZWRcblx0XHRcdFx0Ly8gXCJ0cnVlXCIgdXBvbiBkb3dubG9hZGluZyBpdC5cblx0XHRcdFx0dmFsdWUgPSAnJztcblx0XHRcdH0gZWxzZSBpZiAoL29uZG91YmxlY2xpY2svaS50ZXN0KGkpKSB7XG5cdFx0XHRcdGkgPSAnb25kYmxjbGljayc7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHQvXm9uY2hhbmdlKHRleHRhcmVhfGlucHV0KS9pLnRlc3QoaSArIHR5cGUpICYmXG5cdFx0XHRcdCFvbkNoYW5nZUlucHV0VHlwZShwcm9wcy50eXBlKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGkgPSAnb25pbnB1dCc7XG5cdFx0XHR9IGVsc2UgaWYgKC9eb25mb2N1cyQvaS50ZXN0KGkpKSB7XG5cdFx0XHRcdGkgPSAnb25mb2N1c2luJztcblx0XHRcdH0gZWxzZSBpZiAoL15vbmJsdXIkL2kudGVzdChpKSkge1xuXHRcdFx0XHRpID0gJ29uZm9jdXNvdXQnO1xuXHRcdFx0fSBlbHNlIGlmICgvXm9uKEFuaXxUcmF8VG91fEJlZm9yZUlucHxDb21wbykvLnRlc3QoaSkpIHtcblx0XHRcdFx0aSA9IGkudG9Mb3dlckNhc2UoKTtcblx0XHRcdH0gZWxzZSBpZiAobm9uQ3VzdG9tRWxlbWVudCAmJiBDQU1FTF9QUk9QUy50ZXN0KGkpKSB7XG5cdFx0XHRcdGkgPSBpLnJlcGxhY2UoL1tBLVowLTldLywgJy0kJicpLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRcdHZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgc3VwcG9ydCBmb3Igb25JbnB1dCBhbmQgb25DaGFuZ2UsIHNlZSAjMzU2MVxuXHRcdFx0Ly8gaWYgd2UgaGF2ZSBhbiBvbmlucHV0IHByb3AgYWxyZWFkeSBjaGFuZ2UgaXQgdG8gb25pbnB1dENhcHR1cmVcblx0XHRcdGlmICgvXm9uaW5wdXQvaS50ZXN0KGkpKSB7XG5cdFx0XHRcdGkgPSBpLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdGlmIChub3JtYWxpemVkUHJvcHNbaV0pIHtcblx0XHRcdFx0XHRpID0gJ29uaW5wdXRDYXB0dXJlJztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRub3JtYWxpemVkUHJvcHNbaV0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHQvLyBBZGQgc3VwcG9ydCBmb3IgYXJyYXkgc2VsZWN0IHZhbHVlczogPHNlbGVjdCBtdWx0aXBsZSB2YWx1ZT17W119IC8+XG5cdFx0aWYgKFxuXHRcdFx0dHlwZSA9PSAnc2VsZWN0JyAmJlxuXHRcdFx0bm9ybWFsaXplZFByb3BzLm11bHRpcGxlICYmXG5cdFx0XHRBcnJheS5pc0FycmF5KG5vcm1hbGl6ZWRQcm9wcy52YWx1ZSlcblx0XHQpIHtcblx0XHRcdC8vIGZvckVhY2goKSBhbHdheXMgcmV0dXJucyB1bmRlZmluZWQsIHdoaWNoIHdlIGFidXNlIGhlcmUgdG8gdW5zZXQgdGhlIHZhbHVlIHByb3AuXG5cdFx0XHRub3JtYWxpemVkUHJvcHMudmFsdWUgPSB0b0NoaWxkQXJyYXkocHJvcHMuY2hpbGRyZW4pLmZvckVhY2goY2hpbGQgPT4ge1xuXHRcdFx0XHRjaGlsZC5wcm9wcy5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0bm9ybWFsaXplZFByb3BzLnZhbHVlLmluZGV4T2YoY2hpbGQucHJvcHMudmFsdWUpICE9IC0xO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gQWRkaW5nIHN1cHBvcnQgZm9yIGRlZmF1bHRWYWx1ZSBpbiBzZWxlY3QgdGFnXG5cdFx0aWYgKHR5cGUgPT0gJ3NlbGVjdCcgJiYgbm9ybWFsaXplZFByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7XG5cdFx0XHRub3JtYWxpemVkUHJvcHMudmFsdWUgPSB0b0NoaWxkQXJyYXkocHJvcHMuY2hpbGRyZW4pLmZvckVhY2goY2hpbGQgPT4ge1xuXHRcdFx0XHRpZiAobm9ybWFsaXplZFByb3BzLm11bHRpcGxlKSB7XG5cdFx0XHRcdFx0Y2hpbGQucHJvcHMuc2VsZWN0ZWQgPVxuXHRcdFx0XHRcdFx0bm9ybWFsaXplZFByb3BzLmRlZmF1bHRWYWx1ZS5pbmRleE9mKGNoaWxkLnByb3BzLnZhbHVlKSAhPSAtMTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjaGlsZC5wcm9wcy5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0XHRub3JtYWxpemVkUHJvcHMuZGVmYXVsdFZhbHVlID09IGNoaWxkLnByb3BzLnZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHR2bm9kZS5wcm9wcyA9IG5vcm1hbGl6ZWRQcm9wcztcblxuXHRcdGlmIChwcm9wcy5jbGFzcyAhPSBwcm9wcy5jbGFzc05hbWUpIHtcblx0XHRcdGNsYXNzTmFtZURlc2NyaXB0b3IuZW51bWVyYWJsZSA9ICdjbGFzc05hbWUnIGluIHByb3BzO1xuXHRcdFx0aWYgKHByb3BzLmNsYXNzTmFtZSAhPSBudWxsKSBub3JtYWxpemVkUHJvcHMuY2xhc3MgPSBwcm9wcy5jbGFzc05hbWU7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobm9ybWFsaXplZFByb3BzLCAnY2xhc3NOYW1lJywgY2xhc3NOYW1lRGVzY3JpcHRvcik7XG5cdFx0fVxuXHR9XG5cblx0dm5vZGUuJCR0eXBlb2YgPSBSRUFDVF9FTEVNRU5UX1RZUEU7XG5cblx0aWYgKG9sZFZOb2RlSG9vaykgb2xkVk5vZGVIb29rKHZub2RlKTtcbn07XG5cbi8vIE9ubHkgbmVlZGVkIGZvciByZWFjdC1yZWxheVxubGV0IGN1cnJlbnRDb21wb25lbnQ7XG5jb25zdCBvbGRCZWZvcmVSZW5kZXIgPSBvcHRpb25zLl9yZW5kZXI7XG5vcHRpb25zLl9yZW5kZXIgPSBmdW5jdGlvbih2bm9kZSkge1xuXHRpZiAob2xkQmVmb3JlUmVuZGVyKSB7XG5cdFx0b2xkQmVmb3JlUmVuZGVyKHZub2RlKTtcblx0fVxuXHRjdXJyZW50Q29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudDtcbn07XG5cbi8vIFRoaXMgaXMgYSB2ZXJ5IHZlcnkgcHJpdmF0ZSBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgUmVhY3QgaXRcbi8vIGlzIHVzZWQgdG8gc29ydC1vZiBkbyBydW50aW1lIGRlcGVuZGVuY3kgaW5qZWN0aW9uLiBTbyBmYXJcbi8vIG9ubHkgYHJlYWN0LXJlbGF5YCBtYWtlcyB1c2Ugb2YgaXQuIEl0IHVzZXMgaXQgdG8gcmVhZCB0aGVcbi8vIGNvbnRleHQgdmFsdWUuXG5leHBvcnQgY29uc3QgX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPSB7XG5cdFJlYWN0Q3VycmVudERpc3BhdGNoZXI6IHtcblx0XHRjdXJyZW50OiB7XG5cdFx0XHRyZWFkQ29udGV4dChjb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybiBjdXJyZW50Q29tcG9uZW50Ll9nbG9iYWxDb250ZXh0W2NvbnRleHQuX2lkXS5wcm9wcy52YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG4iLCAiaW1wb3J0IHtcblx0Y3JlYXRlRWxlbWVudCxcblx0cmVuZGVyIGFzIHByZWFjdFJlbmRlcixcblx0Y2xvbmVFbGVtZW50IGFzIHByZWFjdENsb25lRWxlbWVudCxcblx0Y3JlYXRlUmVmLFxuXHRDb21wb25lbnQsXG5cdGNyZWF0ZUNvbnRleHQsXG5cdEZyYWdtZW50XG59IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQge1xuXHR1c2VTdGF0ZSxcblx0dXNlUmVkdWNlcixcblx0dXNlRWZmZWN0LFxuXHR1c2VMYXlvdXRFZmZlY3QsXG5cdHVzZVJlZixcblx0dXNlSW1wZXJhdGl2ZUhhbmRsZSxcblx0dXNlTWVtbyxcblx0dXNlQ2FsbGJhY2ssXG5cdHVzZUNvbnRleHQsXG5cdHVzZURlYnVnVmFsdWVcbn0gZnJvbSAncHJlYWN0L2hvb2tzJztcbmltcG9ydCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICcuL1B1cmVDb21wb25lbnQnO1xuaW1wb3J0IHsgbWVtbyB9IGZyb20gJy4vbWVtbyc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAnLi9mb3J3YXJkUmVmJztcbmltcG9ydCB7IENoaWxkcmVuIH0gZnJvbSAnLi9DaGlsZHJlbic7XG5pbXBvcnQgeyBTdXNwZW5zZSwgbGF6eSB9IGZyb20gJy4vc3VzcGVuc2UnO1xuaW1wb3J0IHsgU3VzcGVuc2VMaXN0IH0gZnJvbSAnLi9zdXNwZW5zZS1saXN0JztcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJy4vcG9ydGFscyc7XG5pbXBvcnQge1xuXHRoeWRyYXRlLFxuXHRyZW5kZXIsXG5cdFJFQUNUX0VMRU1FTlRfVFlQRSxcblx0X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURcbn0gZnJvbSAnLi9yZW5kZXInO1xuXG5jb25zdCB2ZXJzaW9uID0gJzE3LjAuMic7IC8vIHRyaWNrIGxpYnJhcmllcyB0byB0aGluayB3ZSBhcmUgcmVhY3RcblxuLyoqXG4gKiBMZWdhY3kgdmVyc2lvbiBvZiBjcmVhdGVFbGVtZW50LlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZVtcInR5cGVcIl19IHR5cGUgVGhlIG5vZGUgbmFtZSBvciBDb21wb25lbnQgY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmFjdG9yeSh0eXBlKSB7XG5cdHJldHVybiBjcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHBhc3NlZCBlbGVtZW50IGlzIGEgdmFsaWQgKHApcmVhY3Qgbm9kZS5cbiAqIEBwYXJhbSB7Kn0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KGVsZW1lbnQpIHtcblx0cmV0dXJuICEhZWxlbWVudCAmJiBlbGVtZW50LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5cbi8qKlxuICogV3JhcCBgY2xvbmVFbGVtZW50YCB0byBhYm9ydCBpZiB0aGUgcGFzc2VkIGVsZW1lbnQgaXMgbm90IGEgdmFsaWQgZWxlbWVudCBhbmQgYXBwbHlcbiAqIGFsbCB2bm9kZSBub3JtYWxpemF0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IGVsZW1lbnQgVGhlIHZub2RlIHRvIGNsb25lXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgUHJvcHMgdG8gYWRkIHdoZW4gY2xvbmluZ1xuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnRDaGlsZHJlbj59IHJlc3QgT3B0aW9uYWwgY29tcG9uZW50IGNoaWxkcmVuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRWxlbWVudChlbGVtZW50KSB7XG5cdGlmICghaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkpIHJldHVybiBlbGVtZW50O1xuXHRyZXR1cm4gcHJlYWN0Q2xvbmVFbGVtZW50LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgY29tcG9uZW50IHRyZWUgZnJvbSB0aGUgRE9NLCBpbmNsdWRpbmcgc3RhdGUgYW5kIGV2ZW50IGhhbmRsZXJzLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBjb250YWluZXJcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50QXROb2RlKGNvbnRhaW5lcikge1xuXHRpZiAoY29udGFpbmVyLl9jaGlsZHJlbikge1xuXHRcdHByZWFjdFJlbmRlcihudWxsLCBjb250YWluZXIpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG1hdGNoaW5nIERPTSBub2RlIGZvciBhIGNvbXBvbmVudFxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnQgfCBudWxsfVxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25lbnQpIHtcblx0cmV0dXJuIChcblx0XHQoY29tcG9uZW50ICYmXG5cdFx0XHQoY29tcG9uZW50LmJhc2UgfHwgKGNvbXBvbmVudC5ub2RlVHlwZSA9PT0gMSAmJiBjb21wb25lbnQpKSkgfHxcblx0XHRudWxsXG5cdCk7XG59XG5cbi8qKlxuICogRGVwcmVjYXRlZCB3YXkgdG8gY29udHJvbCBiYXRjaGVkIHJlbmRlcmluZyBpbnNpZGUgdGhlIHJlY29uY2lsZXIsIGJ1dCB3ZVxuICogYWxyZWFkeSBzY2hlZHVsZSBpbiBiYXRjaGVzIGluc2lkZSBvdXIgcmVuZGVyaW5nIGNvZGVcbiAqIEB0ZW1wbGF0ZSBBcmdcbiAqIEBwYXJhbSB7KGFyZzogQXJnKSA9PiB2b2lkfSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHRyaWdnZXJzIHRoZSB1cGRhdGVkXG4gKiBAcGFyYW0ge0FyZ30gW2FyZ10gT3B0aW9uYWwgYXJndW1lbnQgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjYWxsYmFja1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG5jb25zdCB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyA9IChjYWxsYmFjaywgYXJnKSA9PiBjYWxsYmFjayhhcmcpO1xuXG4vKipcbiAqIEluIFJlYWN0LCBgZmx1c2hTeW5jYCBmbHVzaGVzIHRoZSBlbnRpcmUgdHJlZSBhbmQgZm9yY2VzIGEgcmVyZW5kZXIuIEl0J3NcbiAqIGltcGxtZW50ZWQgaGVyZSBhcyBhIG5vLW9wLlxuICogQHRlbXBsYXRlIEFyZ1xuICogQHRlbXBsYXRlIFJlc3VsdFxuICogQHBhcmFtIHsoYXJnOiBBcmcpID0+IFJlc3VsdH0gY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBydW5zIGJlZm9yZSB0aGUgZmx1c2hcbiAqIEBwYXJhbSB7QXJnfSBbYXJnXSBPcHRpb25hbCBhcnVnbWVudCB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrXG4gKiBAcmV0dXJuc1xuICovXG5jb25zdCBmbHVzaFN5bmMgPSAoY2FsbGJhY2ssIGFyZykgPT4gY2FsbGJhY2soYXJnKTtcblxuLyoqXG4gKiBTdHJpY3QgTW9kZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gUHJlYWN0LCBzbyB3ZSBwcm92aWRlIGEgc3RhbmQtaW4gZm9yIGl0XG4gKiB0aGF0IGp1c3QgcmVuZGVycyBpdHMgY2hpbGRyZW4gd2l0aG91dCBpbXBvc2luZyBhbnkgcmVzdHJpY3Rpb25zLlxuICovXG5jb25zdCBTdHJpY3RNb2RlID0gRnJhZ21lbnQ7XG5cbmV4cG9ydCAqIGZyb20gJ3ByZWFjdC9ob29rcyc7XG5leHBvcnQge1xuXHR2ZXJzaW9uLFxuXHRDaGlsZHJlbixcblx0cmVuZGVyLFxuXHRoeWRyYXRlLFxuXHR1bm1vdW50Q29tcG9uZW50QXROb2RlLFxuXHRjcmVhdGVQb3J0YWwsXG5cdGNyZWF0ZUVsZW1lbnQsXG5cdGNyZWF0ZUNvbnRleHQsXG5cdGNyZWF0ZUZhY3RvcnksXG5cdGNsb25lRWxlbWVudCxcblx0Y3JlYXRlUmVmLFxuXHRGcmFnbWVudCxcblx0aXNWYWxpZEVsZW1lbnQsXG5cdGZpbmRET01Ob2RlLFxuXHRDb21wb25lbnQsXG5cdFB1cmVDb21wb25lbnQsXG5cdG1lbW8sXG5cdGZvcndhcmRSZWYsXG5cdGZsdXNoU3luYyxcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuXHR1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyxcblx0U3RyaWN0TW9kZSxcblx0U3VzcGVuc2UsXG5cdFN1c3BlbnNlTGlzdCxcblx0bGF6eSxcblx0X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURcbn07XG5cbi8vIFJlYWN0IGNvcGllcyB0aGUgbmFtZWQgZXhwb3J0cyB0byB0aGUgZGVmYXVsdCBvbmUuXG5leHBvcnQgZGVmYXVsdCB7XG5cdHVzZVN0YXRlLFxuXHR1c2VSZWR1Y2VyLFxuXHR1c2VFZmZlY3QsXG5cdHVzZUxheW91dEVmZmVjdCxcblx0dXNlUmVmLFxuXHR1c2VJbXBlcmF0aXZlSGFuZGxlLFxuXHR1c2VNZW1vLFxuXHR1c2VDYWxsYmFjayxcblx0dXNlQ29udGV4dCxcblx0dXNlRGVidWdWYWx1ZSxcblx0dmVyc2lvbixcblx0Q2hpbGRyZW4sXG5cdHJlbmRlcixcblx0aHlkcmF0ZSxcblx0dW5tb3VudENvbXBvbmVudEF0Tm9kZSxcblx0Y3JlYXRlUG9ydGFsLFxuXHRjcmVhdGVFbGVtZW50LFxuXHRjcmVhdGVDb250ZXh0LFxuXHRjcmVhdGVGYWN0b3J5LFxuXHRjbG9uZUVsZW1lbnQsXG5cdGNyZWF0ZVJlZixcblx0RnJhZ21lbnQsXG5cdGlzVmFsaWRFbGVtZW50LFxuXHRmaW5kRE9NTm9kZSxcblx0Q29tcG9uZW50LFxuXHRQdXJlQ29tcG9uZW50LFxuXHRtZW1vLFxuXHRmb3J3YXJkUmVmLFxuXHRmbHVzaFN5bmMsXG5cdHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzLFxuXHRTdHJpY3RNb2RlLFxuXHRTdXNwZW5zZSxcblx0U3VzcGVuc2VMaXN0LFxuXHRsYXp5LFxuXHRfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRFxufTtcbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IHZhciBEZWZhdWx0Q29udGV4dCA9IHtcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgc2l6ZTogdW5kZWZpbmVkLFxuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgc3R5bGU6IHVuZGVmaW5lZCxcbiAgYXR0cjogdW5kZWZpbmVkXG59O1xuZXhwb3J0IHZhciBJY29uQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQgJiYgUmVhY3QuY3JlYXRlQ29udGV4dChEZWZhdWx0Q29udGV4dCk7IiwgInZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbnZhciBfX3Jlc3QgPSB0aGlzICYmIHRoaXMuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSWNvbkNvbnRleHQsIERlZmF1bHRDb250ZXh0IH0gZnJvbSAnLi9pY29uQ29udGV4dCc7XG5cbmZ1bmN0aW9uIFRyZWUyRWxlbWVudCh0cmVlKSB7XG4gIHJldHVybiB0cmVlICYmIHRyZWUubWFwKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQobm9kZS50YWcsIF9fYXNzaWduKHtcbiAgICAgIGtleTogaVxuICAgIH0sIG5vZGUuYXR0ciksIFRyZWUyRWxlbWVudChub2RlLmNoaWxkKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gR2VuSWNvbihkYXRhKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQmFzZSwgX19hc3NpZ24oe1xuICAgICAgYXR0cjogX19hc3NpZ24oe30sIGRhdGEuYXR0cilcbiAgICB9LCBwcm9wcyksIFRyZWUyRWxlbWVudChkYXRhLmNoaWxkKSk7XG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gSWNvbkJhc2UocHJvcHMpIHtcbiAgdmFyIGVsZW0gPSBmdW5jdGlvbiAoY29uZikge1xuICAgIHZhciBhdHRyID0gcHJvcHMuYXR0cixcbiAgICAgICAgc2l6ZSA9IHByb3BzLnNpemUsXG4gICAgICAgIHRpdGxlID0gcHJvcHMudGl0bGUsXG4gICAgICAgIHN2Z1Byb3BzID0gX19yZXN0KHByb3BzLCBbXCJhdHRyXCIsIFwic2l6ZVwiLCBcInRpdGxlXCJdKTtcblxuICAgIHZhciBjb21wdXRlZFNpemUgPSBzaXplIHx8IGNvbmYuc2l6ZSB8fCBcIjFlbVwiO1xuICAgIHZhciBjbGFzc05hbWU7XG4gICAgaWYgKGNvbmYuY2xhc3NOYW1lKSBjbGFzc05hbWUgPSBjb25mLmNsYXNzTmFtZTtcbiAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSBjbGFzc05hbWUgPSAoY2xhc3NOYW1lID8gY2xhc3NOYW1lICsgJyAnIDogJycpICsgcHJvcHMuY2xhc3NOYW1lO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9fYXNzaWduKHtcbiAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgIGZpbGw6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICBzdHJva2VXaWR0aDogXCIwXCJcbiAgICB9LCBjb25mLmF0dHIsIGF0dHIsIHN2Z1Byb3BzLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlOiBfX2Fzc2lnbihfX2Fzc2lnbih7XG4gICAgICAgIGNvbG9yOiBwcm9wcy5jb2xvciB8fCBjb25mLmNvbG9yXG4gICAgICB9LCBjb25mLnN0eWxlKSwgcHJvcHMuc3R5bGUpLFxuICAgICAgaGVpZ2h0OiBjb21wdXRlZFNpemUsXG4gICAgICB3aWR0aDogY29tcHV0ZWRTaXplLFxuICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIH0pLCB0aXRsZSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpLCBwcm9wcy5jaGlsZHJlbik7XG4gIH07XG5cbiAgcmV0dXJuIEljb25Db250ZXh0ICE9PSB1bmRlZmluZWQgPyBSZWFjdC5jcmVhdGVFbGVtZW50KEljb25Db250ZXh0LkNvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoY29uZikge1xuICAgIHJldHVybiBlbGVtKGNvbmYpO1xuICB9KSA6IGVsZW0oRGVmYXVsdENvbnRleHQpO1xufSIsICIvLyBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURURcbmltcG9ydCB7IEdlbkljb24gfSBmcm9tICcuLi9saWInO1xuZXhwb3J0IGZ1bmN0aW9uIEZpQWN0aXZpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiAxMiAxOCAxMiAxNSAyMSA5IDMgNiAxMiAyIDEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQWlycGxheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE3SDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAyaC0xXCJ9fSx7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDE1IDE3IDIxIDcgMjEgMTIgMTVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBbGVydENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCIxMi4wMVwiLFwieTJcIjpcIjE2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQWxlcnRPY3RhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCIxMi4wMVwiLFwieTJcIjpcIjE2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQWxlcnRUcmlhbmdsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHpcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjlcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjEzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxN1wiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMTdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBbGlnbkNlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxOFwiLFwieTFcIjpcIjEwXCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjZcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFsaWduSnVzdGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjEwXCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxN1wiLFwieTFcIjpcIjEwXCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiM1wiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCIxMFwiLFwieDJcIjpcIjdcIixcInkyXCI6XCIxMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjNcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjFcIixcInkxXCI6XCIxNFwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCI3XCIsXCJ5MlwiOlwiMThcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBbmNob3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjIyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCI4XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMkgyYTEwIDEwIDAgMCAwIDIwIDBoLTNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcGVydHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTQuMzFcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMjAuMDVcIixcInkyXCI6XCIxNy45NFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjkuNjlcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMjEuMTdcIixcInkyXCI6XCI4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNy4zOFwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMTMuMTJcIixcInkyXCI6XCIyLjA2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOS42OVwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMy45NVwiLFwieTJcIjpcIjYuMDZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNC4zMVwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMi44M1wiLFwieTJcIjpcIjE2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTYuNjJcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjEwLjg4XCIsXCJ5MlwiOlwiMjEuOTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcmNoaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMjEgOCAyMSAyMSAzIDIxIDMgOFwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMVwiLFwieVwiOlwiM1wiLFwid2lkdGhcIjpcIjIyXCIsXCJoZWlnaHRcIjpcIjVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMFwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMTRcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFycm93RG93bkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI4IDEyIDEyIDE2IDE2IDEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFycm93RG93bkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCI3XCIsXCJ4MlwiOlwiN1wiLFwieTJcIjpcIjE3XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyAxNyA3IDE3IDcgN1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFycm93RG93blJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjdcIixcInkxXCI6XCI3XCIsXCJ4MlwiOlwiMTdcIixcInkyXCI6XCIxN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTcgNyAxNyAxNyA3IDE3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiNVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTlcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE5IDEyIDEyIDE5IDUgMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcnJvd0xlZnRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTIgOCA4IDEyIDEyIDE2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTZcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjhcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxOVwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiNVwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMiAxOSA1IDEyIDEyIDVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcnJvd1JpZ2h0Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDE2IDE2IDEyIDEyIDhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI1XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxOVwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMiA1IDE5IDEyIDEyIDE5XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dVcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNiAxMiAxMiA4IDggMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCI4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dVcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCIxN1wiLFwieDJcIjpcIjdcIixcInkyXCI6XCI3XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3IDE3IDcgNyAxNyA3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQXJyb3dVcFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjdcIixcInkxXCI6XCIxN1wiLFwieDJcIjpcIjE3XCIsXCJ5MlwiOlwiN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNyA3IDE3IDcgMTcgMTdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTlcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjVcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjUgMTIgMTIgNSAxOSAxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUF0U2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4djVhMyAzIDAgMCAwIDYgMHYtMWExMCAxMCAwIDEgMC0zLjkyIDcuOTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlBd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOC4yMSAxMy44OSA3IDIzIDEyIDIwIDE3IDIzIDE1Ljc5IDEzLjg4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQmFyQ2hhcnQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE4XCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCIxOFwiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjZcIixcInkyXCI6XCIxNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJhckNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjE4XCIsXCJ5MlwiOlwiNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjZcIixcInkyXCI6XCIxNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJhdHRlcnlDaGFyZ2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE4SDNhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoMy4xOU0xNSA2aDJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJoLTMuMTlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyM1wiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxMVwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTEgNiA3IDEyIDEzIDEyIDkgMThcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMVwiLFwieVwiOlwiNlwiLFwid2lkdGhcIjpcIjE4XCIsXCJoZWlnaHRcIjpcIjEyXCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyM1wiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJlbGxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzMgMjFhMiAyIDAgMCAxLTMuNDYgMFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjYzIDEzQTE3Ljg5IDE3Ljg5IDAgMCAxIDE4IDhcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjI2IDYuMjZBNS44NiA1Ljg2IDAgMCAwIDYgOGMwIDctMyA5LTMgOWgxNFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDhhNiA2IDAgMCAwLTkuMzMtNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIyM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOEE2IDYgMCAwIDAgNiA4YzAgNy0zIDktMyA5aDE4cy0zLTItMy05XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzMgMjFhMiAyIDAgMCAxLTMuNDYgMFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJsdWV0b290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjYuNSA2LjUgMTcuNSAxNy41IDEyIDIzIDEyIDEgMTcuNSA2LjUgNi41IDE3LjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlCb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNGg4YTQgNCAwIDAgMSA0IDQgNCA0IDAgMCAxLTQgNEg2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJoOWE0IDQgMCAwIDEgNCA0IDQgNCAwIDAgMS00IDRINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlCb29rT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNoNmE0IDQgMCAwIDEgNCA0djE0YTMgMyAwIDAgMC0zLTNIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAzaC02YTQgNCAwIDAgMC00IDR2MTRhMyAzIDAgMCAxIDMtM2g3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOS41QTIuNSAyLjUgMCAwIDEgNi41IDE3SDIwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDJIMjB2MjBINi41QTIuNSAyLjUgMCAwIDEgNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDIxbC03LTUtNyA1VjVhMiAyIDAgMCAxIDItMmgxMGEyIDIgMCAwIDEgMiAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjMuMjcgNi45NiAxMiAxMi4wMSAyMC43MyA2Ljk2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMi4wOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlCcmllZmNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIyXCIsXCJ5XCI6XCI3XCIsXCJ3aWR0aFwiOlwiMjBcIixcImhlaWdodFwiOlwiMTRcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDIxVjVhMiAyIDAgMCAwLTItMmgtNGEyIDIgMCAwIDAtMiAydjE2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCI0XCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIyXCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIzXCIsXCJ5MVwiOlwiMTBcIixcIngyXCI6XCIyMVwiLFwieTJcIjpcIjEwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2FtZXJhT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIyM1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDIxSDNhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoM20zLTNoNmwyIDNoNGEyIDIgMCAwIDEgMiAydjkuMzRtLTcuNzItMi4wNmE0IDQgMCAxIDEtNS41Ni01LjU2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDE5YTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmg0bDItM2g2bDIgM2g0YTIgMiAwIDAgMSAyIDJ6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEzXCIsXCJyXCI6XCI0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2LjFBNSA1IDAgMCAxIDUuOSAyME0yIDEyLjA1QTkgOSAwIDAgMSA5Ljk1IDIwTTIgOFY2YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAyaC02XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMlwiLFwieTFcIjpcIjIwXCIsXCJ4MlwiOlwiMi4wMVwiLFwieTJcIjpcIjIwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hlY2tDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTEuMDhWMTJhMTAgMTAgMCAxIDEtNS45My05LjE0XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiA0IDEyIDE0LjAxIDkgMTEuMDFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGVja1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMTEgMTIgMTQgMjIgNFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDEydjdhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMCA2IDkgMTcgNCAxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNoZXZyb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNiA5IDEyIDE1IDE4IDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE1IDE4IDkgMTIgMTUgNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNoZXZyb25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMTggMTUgMTIgOSA2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTggMTUgMTIgOSA2IDE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hldnJvbnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNyAxMyAxMiAxOCAxNyAxM1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNyA2IDEyIDExIDE3IDZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGV2cm9uc0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMSAxNyA2IDEyIDExIDdcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE4IDE3IDEzIDEyIDE4IDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGV2cm9uc1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTMgMTcgMTggMTIgMTMgN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNiAxNyAxMSAxMiA2IDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDaGV2cm9uc1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTcgMTEgMTIgNiA3IDExXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyAxOCAxMiAxMyA3IDE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2hyb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMS4xN1wiLFwieTFcIjpcIjhcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIzLjk1XCIsXCJ5MVwiOlwiNi4wNlwiLFwieDJcIjpcIjguNTRcIixcInkyXCI6XCIxNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEwLjg4XCIsXCJ5MVwiOlwiMjEuOTRcIixcIngyXCI6XCIxNS40NlwiLFwieTJcIjpcIjE0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNGgyYTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJWNmEyIDIgMCAwIDEgMi0yaDJcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjhcIixcInlcIjpcIjJcIixcIndpZHRoXCI6XCI4XCIsXCJoZWlnaHRcIjpcIjRcIixcInJ4XCI6XCIxXCIsXCJyeVwiOlwiMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDYgMTIgMTIgMTYgMTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDbG91ZERyaXp6bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjE5XCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjE1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTZcIixcInkxXCI6XCIxOVwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMjFcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNlwiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiMTZcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTdcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNi41OEE1IDUgMCAwIDAgMTggN2gtMS4yNkE4IDggMCAxIDAgNCAxNS4yNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNsb3VkTGlnaHRuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE2LjlBNSA1IDAgMCAwIDE4IDdoLTEuMjZhOCA4IDAgMSAwLTExLjYyIDlcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEzIDExIDkgMTcgMTUgMTcgMTEgMjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDbG91ZE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi42MSAxNi45NUE1IDUgMCAwIDAgMTggMTBoLTEuMjZhOCA4IDAgMCAwLTcuMDUtNk01IDVhOCA4IDAgMCAwIDQgMTVoOWE1IDUgMCAwIDAgMS43LS4zXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMVwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2xvdWRSYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiMTNcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjEzXCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNi41OEE1IDUgMCAwIDAgMTggN2gtMS4yNkE4IDggMCAxIDAgNCAxNS4yNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNsb3VkU25vdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxNy41OEE1IDUgMCAwIDAgMTggOGgtMS4yNkE4IDggMCAxIDAgNCAxNi4yNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxNlwiLFwieDJcIjpcIjguMDFcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjguMDFcIixcInkyXCI6XCIyMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCIxMi4wMVwiLFwieTJcIjpcIjE4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMlwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTYuMDFcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCIxNi4wMVwiLFwieTJcIjpcIjIwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTBoLTEuMjZBOCA4IDAgMSAwIDkgMjBoOWE1IDUgMCAwIDAgMC0xMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMTggMjIgMTIgMTYgNlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCA2IDIgMTIgOCAxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvZGVwZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDIgMjIgOC41IDIyIDE1LjUgMTIgMjIgMiAxNS41IDIgOC41IDEyIDJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjIyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNS41XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiA4LjUgMTIgMTUuNSAyIDguNVwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMiAxNS41IDEyIDguNSAyMiAxNS41XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCI4LjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb2Rlc2FuZGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjcuNSA0LjIxIDEyIDYuODEgMTYuNSA0LjIxXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3LjUgMTkuNzkgNy41IDE0LjYgMyAxMlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMjEgMTIgMTYuNSAxNC42IDE2LjUgMTkuNzlcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjMuMjcgNi45NiAxMiAxMi4wMSAyMC43MyA2Ljk2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMi4wOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggOGgxYTQgNCAwIDAgMSAwIDhoLTFcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDhoMTZ2OWE0IDQgMCAwIDEtNCA0SDZhNCA0IDAgMCAxLTQtNFY4elwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMFwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIxMFwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNFwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIxNFwiLFwieTJcIjpcIjRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDNoN2EyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJoLTdtMC0xOEg1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmg3bTAtMTh2MThcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb21tYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDNhMyAzIDAgMCAwLTMgM3YxMmEzIDMgMCAwIDAgMyAzIDMgMyAwIDAgMCAzLTMgMyAzIDAgMCAwLTMtM0g2YTMgMyAwIDAgMC0zIDMgMyAzIDAgMCAwIDMgMyAzIDMgMCAwIDAgMy0zVjZhMyAzIDAgMCAwLTMtMyAzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMCAzIDNoMTJhMyAzIDAgMCAwIDMtMyAzIDMgMCAwIDAtMy0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifX0se1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNi4yNCA3Ljc2IDE0LjEyIDE0LjEyIDcuNzYgMTYuMjQgOS44OCA5Ljg4IDE2LjI0IDcuNzZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiOVwiLFwieVwiOlwiOVwiLFwid2lkdGhcIjpcIjEzXCIsXCJoZWlnaHRcIjpcIjEzXCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE1SDRhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOWEyIDIgMCAwIDEgMiAydjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDb3JuZXJEb3duTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMTAgNCAxNSA5IDIwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNHY3YTQgNCAwIDAgMS00IDRINFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvcm5lckRvd25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE1IDEwIDIwIDE1IDE1IDIwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0djdhNCA0IDAgMCAwIDQgNGgxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvcm5lckxlZnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTQgMTUgOSAyMCA0IDE1XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNGgtN2E0IDQgMCAwIDAtNCA0djEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ29ybmVyTGVmdFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTQgOSA5IDQgNCA5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMjBoLTdhNCA0IDAgMCAxLTQtNFY0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ29ybmVyUmlnaHREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTAgMTUgMTUgMjAgMjAgMTVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRoN2E0IDQgMCAwIDEgNCA0djEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ29ybmVyUmlnaHRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEwIDkgMTUgNCAyMCA5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMGg3YTQgNCAwIDAgMCA0LTRWNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvcm5lclVwTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMTQgNCA5IDkgNFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIwdi03YTQgNCAwIDAgMC00LTRINFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNvcm5lclVwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNSAxNCAyMCA5IDE1IDRcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIwdi03YTQgNCAwIDAgMSA0LTRoMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDcHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCI0XCIsXCJ5XCI6XCI0XCIsXCJ3aWR0aFwiOlwiMTZcIixcImhlaWdodFwiOlwiMTZcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiOVwiLFwieVwiOlwiOVwiLFwid2lkdGhcIjpcIjZcIixcImhlaWdodFwiOlwiNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiOVwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIxNVwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjIwXCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIyM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIwXCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIwXCIsXCJ5MVwiOlwiMTRcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCI0XCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxNFwiLFwieDJcIjpcIjRcIixcInkyXCI6XCIxNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxXCIsXCJ5XCI6XCI0XCIsXCJ3aWR0aFwiOlwiMjJcIixcImhlaWdodFwiOlwiMTZcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxMFwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMTBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMTMgMUw2IDE2YTIgMiAwIDAgMCAyIDJoMTVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDYuMTNMMTYgNmEyIDIgMCAwIDEgMiAydjE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpQ3Jvc3NoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMlwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMThcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMjJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRGF0YWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI1XCIsXCJyeFwiOlwiOVwiLFwicnlcIjpcIjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMmMwIDEuNjYtNCAzLTkgM3MtOS0xLjM0LTktM1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNXYxNGMwIDEuNjYgNCAzIDkgM3M5LTEuMzQgOS0zVjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEZWxldGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgNEg4bC03IDggNyA4aDEzYTIgMiAwIDAgMCAyLTJWNmEyIDIgMCAwIDAtMi0yelwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE4XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjlcIixcIngyXCI6XCIxOFwiLFwieTJcIjpcIjE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRGlzYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRGl2aWRlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiOFwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEaXZpZGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaURpdmlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjVcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE5XCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEb2xsYXJTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA1SDkuNWEzLjUgMy41IDAgMCAwIDAgN2g1YTMuNSAzLjUgMCAwIDEgMCA3SDZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEb3dubG9hZENsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCAxNyAxMiAyMSAxNiAxN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuODggMTguMDlBNSA1IDAgMCAwIDE4IDloLTEuMjZBOCA4IDAgMSAwIDMgMTYuMjlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3IDEwIDEyIDE1IDE3IDEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjU2IDIuNzVjNC4zNyA2LjAzIDYuMDIgOS40MiA4LjAzIDE3LjcybTIuNTQtMTUuMzhjLTMuNzIgNC4zNS04Ljk0IDUuNjYtMTYuODggNS44NW0xOS41IDEuOWMtMy41LS45My02LjYzLS44Mi04Ljk0IDAtMi41OC45Mi01LjAxIDIuODYtNy40NCA2LjMyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRHJvcGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyLjY5bDUuNjYgNS42NmE4IDggMCAxIDEtMTEuMzEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlFZGl0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAzYTIuODI4IDIuODI4IDAgMSAxIDQgNEw3LjUgMjAuNSAyIDIybDEuNS01LjVMMTcgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlFZGl0MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMGg5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTRMMTYuNSAzLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRWRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0SDRhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTdcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC41IDIuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMMTIgMTVsLTQgMSAxLTQgOS41LTkuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlFeHRlcm5hbExpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTN2NmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoNlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTUgMyAyMSAzIDIxIDlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMFwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRXllT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Ljk0IDE3Ljk0QTEwLjA3IDEwLjA3IDAgMCAxIDEyIDIwYy03IDAtMTEtOC0xMS04YTE4LjQ1IDE4LjQ1IDAgMCAxIDUuMDYtNS45NE05LjkgNC4yNEE5LjEyIDkuMTIgMCAwIDEgMTIgNGM3IDAgMTEgOCAxMSA4YTE4LjUgMTguNSAwIDAgMS0yLjE2IDMuMTltLTYuNzItMS4wN2EzIDMgMCAxIDEtNC4yNC00LjI0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMVwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTJzNC04IDExLTggMTEgOCAxMSA4LTQgOC0xMSA4LTExLTgtMTEtOHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGYWNlYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAyaC0zYTUgNSAwIDAgMC01IDV2M0g3djRoM3Y4aDR2LThoM2wxLTRoLTRWN2ExIDEgMCAwIDEgMS0xaDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRmFzdEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEzIDE5IDIyIDEyIDEzIDUgMTMgMTlcIn19LHtcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMiAxOSAxMSAxMiAyIDUgMiAxOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUZlYXRoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMjQgMTIuMjRhNiA2IDAgMCAwLTguNDktOC40OUw1IDEwLjVWMTloOC41elwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjJcIixcInkyXCI6XCIyMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3LjVcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjlcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUZpZ21hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNS41QTMuNSAzLjUgMCAwIDEgOC41IDJIMTJ2N0g4LjVBMy41IDMuNSAwIDAgMSA1IDUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyaDMuNWEzLjUgMy41IDAgMSAxIDAgN0gxMlYyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyLjVhMy41IDMuNSAwIDEgMSA3IDAgMy41IDMuNSAwIDEgMS03IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxOS41QTMuNSAzLjUgMCAwIDEgOC41IDE2SDEydjMuNWEzLjUgMy41IDAgMSAxLTcgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyLjVBMy41IDMuNSAwIDAgMSA4LjUgOUgxMnY3SDguNUEzLjUgMy41IDAgMCAxIDUgMTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGaWxlTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNCAyIDE0IDggMjAgOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjE1XCIsXCJ5MlwiOlwiMTVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGaWxlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHpcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE0IDIgMTQgOCAyMCA4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiMTVcIixcIngyXCI6XCIxNVwiLFwieTJcIjpcIjE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRmlsZVRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNCAyIDE0IDggMjAgOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiMTNcIixcIngyXCI6XCI4XCIsXCJ5MlwiOlwiMTNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNlwiLFwieTFcIjpcIjE3XCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjE3XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMCA5IDkgOSA4IDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY5elwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTMgMiAxMyA5IDIwIDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGaWxtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMlwiLFwieVwiOlwiMlwiLFwid2lkdGhcIjpcIjIwXCIsXCJoZWlnaHRcIjpcIjIwXCIsXCJyeFwiOlwiMi4xOFwiLFwicnlcIjpcIjIuMThcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI3XCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjdcIixcInkyXCI6XCIyMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3XCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjE3XCIsXCJ5MlwiOlwiMjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIyMlwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMlwiLFwieTFcIjpcIjdcIixcIngyXCI6XCI3XCIsXCJ5MlwiOlwiN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjJcIixcInkxXCI6XCIxN1wiLFwieDJcIjpcIjdcIixcInkyXCI6XCIxN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3XCIsXCJ5MVwiOlwiMTdcIixcIngyXCI6XCIyMlwiLFwieTJcIjpcIjE3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCI3XCIsXCJ4MlwiOlwiMjJcIixcInkyXCI6XCI3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1czEtMSA0LTEgNSAyIDggMiA0LTEgNC0xVjNzLTEgMS00IDEtNS0yLTgtMi00IDEtNCAxelwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjRcIixcInkxXCI6XCIyMlwiLFwieDJcIjpcIjRcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUZvbGRlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjE0XCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIxNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUZvbGRlclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnpcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjExXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCIxNFwiLFwieDJcIjpcIjE1XCIsXCJ5MlwiOlwiMTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGcmFtZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNlY5aDE0VjJINWwxNCAxNGgtN20tNyAwbDcgN3YtN20tNyAwaDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlGcm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTZzLTEuNS0yLTQtMi00IDItNCAyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCI5LjAxXCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjE1LjAxXCIsXCJ5MlwiOlwiOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMCAxMiAyMCAyMiA0IDIyIDQgMTJcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjJcIixcInlcIjpcIjdcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCI1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMlwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiN1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdINy41YTIuNSAyLjUgMCAwIDEgMC01QzExIDIgMTIgNyAxMiA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdoNC41YTIuNSAyLjUgMCAwIDAgMC01QzEzIDIgMTIgNyAxMiA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUdpdEJyYW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI2XCIsXCJ5MVwiOlwiM1wiLFwieDJcIjpcIjZcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA5YTkgOSAwIDAgMS05IDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlHaXRDb21taXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMS4wNVwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiN1wiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTcuMDFcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjIyLjk2XCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlHaXRNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyMVY5YTkgOSAwIDAgMCA5IDlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlHaXRQdWxsUmVxdWVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNmgzYTIgMiAwIDAgMSAyIDJ2N1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjZcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpR2l0aHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTljLTUgMS41LTUtMi41LTctM20xNCA2di0zLjg3YTMuMzcgMy4zNyAwIDAgMC0uOTQtMi42MWMzLjE0LS4zNSA2LjQ0LTEuNTQgNi40NC03QTUuNDQgNS40NCAwIDAgMCAyMCA0Ljc3IDUuMDcgNS4wNyAwIDAgMCAxOS45MSAxUzE4LjczLjY1IDE2IDIuNDhhMTMuMzggMTMuMzggMCAwIDAtNyAwQzYuMjcuNjUgNS4wOSAxIDUuMDkgMUE1LjA3IDUuMDcgMCAwIDAgNSA0Ljc3YTUuNDQgNS40NCAwIDAgMC0xLjUgMy43OGMwIDUuNDIgMy4zIDYuNjEgNi40NCA3QTMuMzcgMy4zNyAwIDAgMCA5IDE4LjEzVjIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpR2l0bGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyLjY1IDE0LjM5TDEyIDIyLjEzIDEuMzUgMTQuMzlhLjg0Ljg0IDAgMCAxLS4zLS45NGwxLjIyLTMuNzggMi40NC03LjUxQS40Mi40MiAwIDAgMSA0LjgyIDJhLjQzLjQzIDAgMCAxIC41OCAwIC40Mi40MiAwIDAgMSAuMTEuMThsMi40NCA3LjQ5aDguMWwyLjQ0LTcuNTFBLjQyLjQyIDAgMCAxIDE4LjYgMmEuNDMuNDMgMCAwIDEgLjU4IDAgLjQyLjQyIDAgMCAxIC4xMS4xOGwyLjQ0IDcuNTFMMjMgMTMuNDVhLjg0Ljg0IDAgMCAxLS4zNS45NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMlwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMjJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJhMTUuMyAxNS4zIDAgMCAxIDQgMTAgMTUuMyAxNS4zIDAgMCAxLTQgMTAgMTUuMyAxNS4zIDAgMCAxLTQtMTAgMTUuMyAxNS4zIDAgMCAxIDQtMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpR3JpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjNcIixcInlcIjpcIjNcIixcIndpZHRoXCI6XCI3XCIsXCJoZWlnaHRcIjpcIjdcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjE0XCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiN1wiLFwiaGVpZ2h0XCI6XCI3XCJ9fSx7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxNFwiLFwieVwiOlwiMTRcIixcIndpZHRoXCI6XCI3XCIsXCJoZWlnaHRcIjpcIjdcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjNcIixcInlcIjpcIjE0XCIsXCJ3aWR0aFwiOlwiN1wiLFwiaGVpZ2h0XCI6XCI3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSGFyZERyaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIyXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjQ1IDUuMTFMMiAxMnY2YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtNmwtMy40NS02Ljg5QTIgMiAwIDAgMCAxNi43NiA0SDcuMjRhMiAyIDAgMCAwLTEuNzkgMS4xMXpcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI2XCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCI2LjAxXCIsXCJ5MlwiOlwiMTZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMFwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTAuMDFcIixcInkyXCI6XCIxNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUhhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNFwiLFwieTFcIjpcIjlcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0XCIsXCJ5MVwiOlwiMTVcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjE1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTBcIixcInkxXCI6XCIzXCIsXCJ4MlwiOlwiOFwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTZcIixcInkxXCI6XCIzXCIsXCJ4MlwiOlwiMTRcIixcInkyXCI6XCIyMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUhlYWRwaG9uZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOHYtNmE5IDkgMCAwIDEgMTggMHY2XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTlhMiAyIDAgMCAxLTIgMmgtMWEyIDIgMCAwIDEtMi0ydi0zYTIgMiAwIDAgMSAyLTJoM3pNMyAxOWEyIDIgMCAwIDAgMiAyaDFhMiAyIDAgMCAwIDItMnYtM2EyIDIgMCAwIDAtMi0ySDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuODQgNC42MWE1LjUgNS41IDAgMCAwLTcuNzggMEwxMiA1LjY3bC0xLjA2LTEuMDZhNS41IDUuNSAwIDAgMC03Ljc4IDcuNzhsMS4wNiAxLjA2TDEyIDIxLjIzbDcuNzgtNy43OCAxLjA2LTEuMDZhNS41IDUuNSAwIDAgMCAwLTcuNzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSGVscENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE3XCIsXCJ4MlwiOlwiMTIuMDFcIixcInkyXCI6XCIxN1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUhleGFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDlsOS03IDkgN3YxMWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnpcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgMjIgOSAxMiAxNSAxMiAxNSAyMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiM1wiLFwieVwiOlwiM1wiLFwid2lkdGhcIjpcIjE4XCIsXCJoZWlnaHRcIjpcIjE4XCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMSAxNSAxNiAxMCA1IDIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiAxMiAxNiAxMiAxNCAxNSAxMCAxNSA4IDEyIDIgMTJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjQ1IDUuMTFMMiAxMnY2YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMnYtNmwtMy40NS02Ljg5QTIgMiAwIDAgMCAxNi43NiA0SDcuMjRhMiAyIDAgMCAwLTEuNzkgMS4xMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE2XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUluc3RhZ3JhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjJcIixcInlcIjpcIjJcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCIyMFwiLFwicnhcIjpcIjVcIixcInJ5XCI6XCI1XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTEuMzdBNCA0IDAgMSAxIDEyLjYzIDggNCA0IDAgMCAxIDE2IDExLjM3elwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3LjVcIixcInkxXCI6XCI2LjVcIixcIngyXCI6XCIxNy41MVwiLFwieTJcIjpcIjYuNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUl0YWxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxOVwiLFwieTFcIjpcIjRcIixcIngyXCI6XCIxMFwiLFwieTJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNFwiLFwieTFcIjpcIjIwXCIsXCJ4MlwiOlwiNVwiLFwieTJcIjpcIjIwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTVcIixcInkxXCI6XCI0XCIsXCJ4MlwiOlwiOVwiLFwieTJcIjpcIjIwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDJsLTIgMm0tNy42MSA3LjYxYTUuNSA1LjUgMCAxIDEtNy43NzggNy43NzggNS41IDUuNSAwIDAgMSA3Ljc3Ny03Ljc3N3ptMCAwTDE1LjUgNy41bTAgMGwzIDNMMjIgN2wtMy0zbS0zLjUgMy41TDE5IDRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMYXllcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDIgMiA3IDEyIDEyIDIyIDcgMTIgMlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMiAxNyAxMiAyMiAyMiAxN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMiAxMiAxMiAxNyAyMiAxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUxheW91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjNcIixcInlcIjpcIjNcIixcIndpZHRoXCI6XCIxOFwiLFwiaGVpZ2h0XCI6XCIxOFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjlcIixcIngyXCI6XCIyMVwiLFwieTJcIjpcIjlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUxpZmVCdW95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjkzXCIsXCJ5MVwiOlwiNC45M1wiLFwieDJcIjpcIjkuMTdcIixcInkyXCI6XCI5LjE3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTQuODNcIixcInkxXCI6XCIxNC44M1wiLFwieDJcIjpcIjE5LjA3XCIsXCJ5MlwiOlwiMTkuMDdcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNC44M1wiLFwieTFcIjpcIjkuMTdcIixcIngyXCI6XCIxOS4wN1wiLFwieTJcIjpcIjQuOTNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNC44M1wiLFwieTFcIjpcIjkuMTdcIixcIngyXCI6XCIxOC4zNlwiLFwieTJcIjpcIjUuNjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjkzXCIsXCJ5MVwiOlwiMTkuMDdcIixcIngyXCI6XCI5LjE3XCIsXCJ5MlwiOlwiMTQuODNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMaW5rMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA3aDNhNSA1IDAgMCAxIDUgNSA1IDUgMCAwIDEtNSA1aC0zbS02IDBINmE1IDUgMCAwIDEtNS01IDUgNSAwIDAgMSA1LTVoM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEzYTUgNSAwIDAgMCA3LjU0LjU0bDMtM2E1IDUgMCAwIDAtNy4wNy03LjA3bC0xLjcyIDEuNzFcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMWE1IDUgMCAwIDAtNy41NC0uNTRsLTMgM2E1IDUgMCAwIDAgNy4wNyA3LjA3bDEuNzEtMS43MVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUxpbmtlZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhhNiA2IDAgMCAxIDYgNnY3aC00di03YTIgMiAwIDAgMC0yLTIgMiAyIDAgMCAwLTIgMnY3aC00di03YTYgNiAwIDAgMSA2LTZ6XCJ9fSx7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIyXCIsXCJ5XCI6XCI5XCIsXCJ3aWR0aFwiOlwiNFwiLFwiaGVpZ2h0XCI6XCIxMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNFwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjIxXCIsXCJ5MlwiOlwiMThcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIzXCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjMuMDFcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMy4wMVwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiMy4wMVwiLFwieTJcIjpcIjE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTG9hZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNC45M1wiLFwieTFcIjpcIjQuOTNcIixcIngyXCI6XCI3Ljc2XCIsXCJ5MlwiOlwiNy43NlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2LjI0XCIsXCJ5MVwiOlwiMTYuMjRcIixcIngyXCI6XCIxOS4wN1wiLFwieTJcIjpcIjE5LjA3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMlwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjIyXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjkzXCIsXCJ5MVwiOlwiMTkuMDdcIixcIngyXCI6XCI3Ljc2XCIsXCJ5MlwiOlwiMTYuMjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNi4yNFwiLFwieTFcIjpcIjcuNzZcIixcIngyXCI6XCIxOS4wN1wiLFwieTJcIjpcIjQuOTNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiM1wiLFwieVwiOlwiMTFcIixcIndpZHRoXCI6XCIxOFwiLFwiaGVpZ2h0XCI6XCIxMVwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMVY3YTUgNSAwIDAgMSAxMCAwdjRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlMb2dJbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAzaDRhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAyaC00XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMCAxNyAxNSAxMiAxMCA3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTVcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaUxvZ091dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIxSDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMTcgMjEgMTIgMTYgN1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGgxNmMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg0Yy0xLjEgMC0yLS45LTItMlY2YzAtMS4xLjktMiAyLTJ6XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiw2IDEyLDEzIDIsNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1hcFBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMGMwIDctOSAxMy05IDEzcy05LTYtOS0xM2E5IDkgMCAwIDEgMTggMHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEgNiAxIDIyIDggMTggMTYgMjIgMjMgMTggMjMgMiAxNiA2IDggMiAxIDZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMlwiLFwieDJcIjpcIjhcIixcInkyXCI6XCIxOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNYXhpbWl6ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNSAzIDIxIDMgMjEgOVwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOSAyMSAzIDIxIDMgMTVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjNcIixcIngyXCI6XCIxNFwiLFwieTJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjIxXCIsXCJ4MlwiOlwiMTBcIixcInkyXCI6XCIxNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggM0g1YTIgMiAwIDAgMC0yIDJ2M20xOCAwVjVhMiAyIDAgMCAwLTItMmgtM20wIDE4aDNhMiAyIDAgMCAwIDItMnYtM00zIDE2djNhMiAyIDAgMCAwIDIgMmgzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMTVcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjE1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCI5LjAxXCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjE1LjAxXCIsXCJ5MlwiOlwiOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1lbnUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjNcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiMjFcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1lc3NhZ2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTEuNWE4LjM4IDguMzggMCAwIDEtLjkgMy44IDguNSA4LjUgMCAwIDEtNy42IDQuNyA4LjM4IDguMzggMCAwIDEtMy44LS45TDMgMjFsMS45LTUuN2E4LjM4IDguMzggMCAwIDEtLjktMy44IDguNSA4LjUgMCAwIDEgNC43LTcuNiA4LjM4IDguMzggMCAwIDEgMy44LS45aC41YTguNDggOC40OCAwIDAgMSA4IDh2LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTWVzc2FnZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNWEyIDIgMCAwIDEtMiAySDdsLTQgNFY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNaWNPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMVwiLFwieTFcIjpcIjFcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjIzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMk0xNSA5LjM0VjRhMyAzIDAgMCAwLTUuOTQtLjZcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNi45NUE3IDcgMCAwIDEgNSAxMnYtMm0xNCAwdjJhNyA3IDAgMCAxLS4xMSAxLjIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxOVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMjNcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTWljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFhMyAzIDAgMCAwLTMgM3Y4YTMgMyAwIDAgMCA2IDBWNGEzIDMgMCAwIDAtMy0zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEwdjJhNyA3IDAgMCAxLTE0IDB2LTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE5XCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIyM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIyM1wiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNaW5pbWl6ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI0IDE0IDEwIDE0IDEwIDIwXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMCAxMCAxNCAxMCAxNCA0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTRcIixcInkxXCI6XCIxMFwiLFwieDJcIjpcIjIxXCIsXCJ5MlwiOlwiM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjNcIixcInkxXCI6XCIyMVwiLFwieDJcIjpcIjEwXCIsXCJ5MlwiOlwiMTRcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNaW5pbWl6ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDN2M2EyIDIgMCAwIDEtMiAySDNtMTggMGgtM2EyIDIgMCAwIDEtMi0yVjNtMCAxOHYtM2EyIDIgMCAwIDEgMi0yaDNNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2M1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU1pbnVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTWludXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMlwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiMTJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI1XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxOVwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTW9uaXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjJcIixcInlcIjpcIjNcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCIxNFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjIxXCIsXCJ4MlwiOlwiMTZcIixcInkyXCI6XCIyMVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTdcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMi43OUE5IDkgMCAxIDEgMTEuMjEgMyA3IDcgMCAwIDAgMjEgMTIuNzl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTW9yZUhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNb3JlVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjFcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTlcIixcInJcIjpcIjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlNb3VzZVBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzbDcuMDcgMTYuOTcgMi41MS03LjM5IDcuMzktMi41MUwzIDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTNsNiA2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpTW92ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjUgOSAyIDEyIDUgMTVcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkgNSAxMiAyIDE1IDVcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE1IDE5IDEyIDIyIDkgMTlcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE5IDkgMjIgMTIgMTkgMTVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIyMlwiLFwieTJcIjpcIjEyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIyMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMThWNWwxMi0ydjEzXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlOYXZpZ2F0aW9uMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTIgMiAxOSAyMSAxMiAxNyA1IDIxIDEyIDJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlOYXZpZ2F0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIzIDExIDIyIDIgMTMgMjEgMTEgMTMgMyAxMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaU9jdGFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjcuODYgMiAxNi4xNCAyIDIyIDcuODYgMjIgMTYuMTQgMTYuMTQgMjIgNy44NiAyMiAyIDE2LjE0IDIgNy44NiA3Ljg2IDJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQYWNrYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2LjVcIixcInkxXCI6XCI5LjRcIixcIngyXCI6XCI3LjVcIixcInkyXCI6XCI0LjIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIzLjI3IDYuOTYgMTIgMTIuMDEgMjAuNzMgNi45NlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMjIuMDhcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUGFwZXJjbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDhcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQYXVzZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTBcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjEwXCIsXCJ5MlwiOlwiOVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE0XCIsXCJ5MVwiOlwiMTVcIixcIngyXCI6XCIxNFwiLFwieTJcIjpcIjlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjZcIixcInlcIjpcIjRcIixcIndpZHRoXCI6XCI0XCIsXCJoZWlnaHRcIjpcIjE2XCJ9fSx7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxNFwiLFwieVwiOlwiNFwiLFwid2lkdGhcIjpcIjRcIixcImhlaWdodFwiOlwiMTZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQZW5Ub29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE5bDctNyAzIDMtNyA3LTMtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxM2wtMS41LTcuNUwyIDJsMy41IDE0LjVMMTMgMThsNS01elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmw3LjU4NiA3LjU4NlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCIxMVwiLFwiclwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTlcIixcInkxXCI6XCI1XCIsXCJ4MlwiOlwiNVwiLFwieTJcIjpcIjE5XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjVcIixcImN5XCI6XCI2LjVcIixcInJcIjpcIjIuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjE3LjVcIixcInJcIjpcIjIuNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBob25lQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4wNSA1QTUgNSAwIDAgMSAxOSA4Ljk1TTE1LjA1IDFBOSA5IDAgMCAxIDIzIDguOTRtLTEgNy45OHYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBob25lRm9yd2FyZGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTkgMSAyMyA1IDE5IDlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjVcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBob25lSW5jb21pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNiAyIDE2IDggMjIgOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIzXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjE2XCIsXCJ5MlwiOlwiOFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUGhvbmVNaXNzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjNcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMTdcIixcInkyXCI6XCI3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTdcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCI3XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTYuOTJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS41IDE5LjUgMCAwIDEtNi02IDE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42N0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFhMTYgMTYgMCAwIDAgNiA2bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43QTIgMiAwIDAgMSAyMiAxNi45MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQaG9uZU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC42OCAxMy4zMWExNiAxNiAwIDAgMCAzLjQxIDIuNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuNyAyIDIgMCAwIDEgMS43MiAydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNDIgMTkuNDIgMCAwIDEtMy4zMy0yLjY3bS0yLjY3LTMuMzRhMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjYzQTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIzXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjFcIixcInkyXCI6XCIyM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBob25lT3V0Z29pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMyA3IDIzIDEgMTcgMVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE2XCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMVwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgMTYuOTJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS41IDE5LjUgMCAwIDEtNi02IDE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42N0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFhMTYgMTYgMCAwIDAgNiA2bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43QTIgMiAwIDAgMSAyMiAxNi45MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQaWVDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4yMSAxNS44OUExMCAxMCAwIDEgMSA4IDIuODNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiAxMkExMCAxMCAwIDAgMCAxMiAydjEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifX0se1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMCA4IDE2IDEyIDEwIDE2IDEwIDhcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI1IDMgMTkgMTIgNSAyMSA1IDNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlQbHVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjhcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjE2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMTZcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBsdXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI4XCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxNlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjVcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjE5XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNVwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMTlcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBvY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNoMTZhMiAyIDAgMCAxIDIgMnY2YTEwIDEwIDAgMCAxLTEwIDEwQTEwIDEwIDAgMCAxIDIgMTFWNWEyIDIgMCAwIDEgMi0yelwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCAxMCAxMiAxNCAxNiAxMFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVBvd2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjM2IDYuNjRhOSA5IDAgMSAxLTEyLjczIDBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjYgOSA2IDIgMTggMiAxOCA5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxOEg0YTIgMiAwIDAgMS0yLTJ2LTVhMiAyIDAgMCAxIDItMmgxNmEyIDIgMCAwIDEgMiAydjVhMiAyIDAgMCAxLTIgMmgtMlwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiNlwiLFwieVwiOlwiMTRcIixcIndpZHRoXCI6XCIxMlwiLFwiaGVpZ2h0XCI6XCI4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUmFkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMjQgNy43NmE2IDYgMCAwIDEgMCA4LjQ5bS04LjQ4LS4wMWE2IDYgMCAwIDEgMC04LjQ5bTExLjMxLTIuODJhMTAgMTAgMCAwIDEgMCAxNC4xNG0tMTQuMTQgMGExMCAxMCAwIDAgMSAwLTE0LjE0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUmVmcmVzaENjdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEgNCAxIDEwIDcgMTBcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIzIDIwIDIzIDE0IDE3IDE0XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNDkgOUE5IDkgMCAwIDAgNS42NCA1LjY0TDEgMTBtMjIgNGwtNC42NCA0LjM2QTkgOSAwIDAgMSAzLjUxIDE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUmVmcmVzaEN3IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMjMgNCAyMyAxMCAxNyAxMFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMSAyMCAxIDE0IDcgMTRcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUxIDlhOSA5IDAgMCAxIDE0Ljg1LTMuMzZMMjMgMTBNMSAxNGw0LjY0IDQuMzZBOSA5IDAgMCAwIDIwLjQ5IDE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTcgMSAyMSA1IDE3IDlcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDExVjlhNCA0IDAgMCAxIDQtNGgxNFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNyAyMyAzIDE5IDcgMTVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxM3YyYTQgNCAwIDAgMS00IDRIM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVJld2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTEgMTkgMiAxMiAxMSA1IDExIDE5XCJ9fSx7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIyIDE5IDEzIDEyIDIyIDUgMjIgMTlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlSb3RhdGVDY3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxIDQgMSAxMCA3IDEwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41MSAxNWE5IDkgMCAxIDAgMi4xMy05LjM2TDEgMTBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlSb3RhdGVDdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIzIDQgMjMgMTAgMTcgMTBcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC40OSAxNWE5IDkgMCAxIDEtMi4xMi05LjM2TDIzIDEwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTFhOSA5IDAgMCAxIDkgOVwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGExNiAxNiAwIDAgMSAxNiAxNlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNVwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExbDUgNXYxMWEyIDIgMCAwIDEtMiAyelwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTcgMjEgMTcgMTMgNyAxMyA3IDIxXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCI3IDMgNyA4IDE1IDhcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjZcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMFwiLFwieTFcIjpcIjRcIixcIngyXCI6XCI4LjEyXCIsXCJ5MlwiOlwiMTUuODhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNC40N1wiLFwieTFcIjpcIjE0LjQ4XCIsXCJ4MlwiOlwiMjBcIixcInkyXCI6XCIyMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjguMTJcIixcInkxXCI6XCI4LjEyXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExXCIsXCJjeVwiOlwiMTFcIixcInJcIjpcIjhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjIxXCIsXCJ4MlwiOlwiMTYuNjVcIixcInkyXCI6XCIxNi42NVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjJcIixcInkxXCI6XCIyXCIsXCJ4MlwiOlwiMTFcIixcInkyXCI6XCIxM1wifX0se1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMlwiLFwieVwiOlwiMlwiLFwid2lkdGhcIjpcIjIwXCIsXCJoZWlnaHRcIjpcIjhcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMlwiLFwieVwiOlwiMTRcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCI4XCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI2XCIsXCJ5MVwiOlwiNlwiLFwieDJcIjpcIjYuMDFcIixcInkyXCI6XCI2XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNlwiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiNi4wMVwiLFwieTJcIjpcIjE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2V0dGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNCAxNWExLjY1IDEuNjUgMCAwIDAgLjMzIDEuODJsLjA2LjA2YTIgMiAwIDAgMSAwIDIuODMgMiAyIDAgMCAxLTIuODMgMGwtLjA2LS4wNmExLjY1IDEuNjUgMCAwIDAtMS44Mi0uMzMgMS42NSAxLjY1IDAgMCAwLTEgMS41MVYyMWEyIDIgMCAwIDEtMiAyIDIgMiAwIDAgMS0yLTJ2LS4wOUExLjY1IDEuNjUgMCAwIDAgOSAxOS40YTEuNjUgMS42NSAwIDAgMC0xLjgyLjMzbC0uMDYuMDZhMiAyIDAgMCAxLTIuODMgMCAyIDIgMCAwIDEgMC0yLjgzbC4wNi0uMDZhMS42NSAxLjY1IDAgMCAwIC4zMy0xLjgyIDEuNjUgMS42NSAwIDAgMC0xLjUxLTFIM2EyIDIgMCAwIDEtMi0yIDIgMiAwIDAgMSAyLTJoLjA5QTEuNjUgMS42NSAwIDAgMCA0LjYgOWExLjY1IDEuNjUgMCAwIDAtLjMzLTEuODJsLS4wNi0uMDZhMiAyIDAgMCAxIDAtMi44MyAyIDIgMCAwIDEgMi44MyAwbC4wNi4wNmExLjY1IDEuNjUgMCAwIDAgMS44Mi4zM0g5YTEuNjUgMS42NSAwIDAgMCAxLTEuNTFWM2EyIDIgMCAwIDEgMi0yIDIgMiAwIDAgMSAyIDJ2LjA5YTEuNjUgMS42NSAwIDAgMCAxIDEuNTEgMS42NSAxLjY1IDAgMCAwIDEuODItLjMzbC4wNi0uMDZhMiAyIDAgMCAxIDIuODMgMCAyIDIgMCAwIDEgMCAyLjgzbC0uMDYuMDZhMS42NSAxLjY1IDAgMCAwLS4zMyAxLjgyVjlhMS42NSAxLjY1IDAgMCAwIDEuNTEgMUgyMWEyIDIgMCAwIDEgMiAyIDIgMiAwIDAgMS0yIDJoLS4wOWExLjY1IDEuNjUgMCAwIDAtMS41MSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNoYXJlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNVwiLFwiclwiOlwiM1wifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOC41OVwiLFwieTFcIjpcIjEzLjUxXCIsXCJ4MlwiOlwiMTUuNDJcIixcInkyXCI6XCIxNy40OVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1LjQxXCIsXCJ5MVwiOlwiNi41MVwiLFwieDJcIjpcIjguNTlcIixcInkyXCI6XCIxMC40OVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LThcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE2IDYgMTIgMiA4IDZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjE1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2hpZWxkT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjY5IDE0YTYuOSA2LjkgMCAwIDAgLjMxLTJWNWwtOC0zLTMuMTYgMS4xOFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNzMgNC43M0w0IDV2N2MwIDYgOCAxMCA4IDEwYTIwLjI5IDIwLjI5IDAgMCAwIDUuNjItNC4zOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIyM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMnM4LTQgOC0xMFY1bC04LTMtOCAzdjdjMCA2IDggMTAgOCAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTaG9wcGluZ0JhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDJMMyA2djE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY2bC0zLTR6XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiM1wiLFwieTFcIjpcIjZcIixcIngyXCI6XCIyMVwiLFwieTJcIjpcIjZcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGE0IDQgMCAwIDEtOCAwXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIyMFwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxaDRsMi42OCAxMy4zOWEyIDIgMCAwIDAgMiAxLjYxaDkuNzJhMiAyIDAgMCAwIDItMS42MUwyMyA2SDZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTaHVmZmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMyAyMSAzIDIxIDhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0XCIsXCJ5MVwiOlwiMjBcIixcIngyXCI6XCIyMVwiLFwieTJcIjpcIjNcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIxIDE2IDIxIDIxIDE2IDIxXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTVcIixcInkxXCI6XCIxNVwiLFwieDJcIjpcIjIxXCIsXCJ5MlwiOlwiMjFcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0XCIsXCJ5MVwiOlwiNFwiLFwieDJcIjpcIjlcIixcInkyXCI6XCI5XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU2lkZWJhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjNcIixcInlcIjpcIjNcIixcIndpZHRoXCI6XCIxOFwiLFwiaGVpZ2h0XCI6XCIxOFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjNcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiMjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTa2lwQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTkgMjAgOSAxMiAxOSA0IDE5IDIwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNVwiLFwieTFcIjpcIjE5XCIsXCJ4MlwiOlwiNVwiLFwieTJcIjpcIjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTa2lwRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNSA0IDE1IDEyIDUgMjAgNSA0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTlcIixcInkxXCI6XCI1XCIsXCJ4MlwiOlwiMTlcIixcInkyXCI6XCIxOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNsYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTBjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXY1YzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41IDEwSDE5VjguNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDE0Yy44MyAwIDEuNS42NyAxLjUgMS41djVjMCAuODMtLjY3IDEuNS0xLjUgMS41UzggMjEuMzMgOCAyMC41di01YzAtLjgzLjY3LTEuNSAxLjUtMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAxNEg1djEuNWMwIC44My0uNjcgMS41LTEuNSAxLjVTMiAxNi4zMyAyIDE1LjUgMi42NyAxNCAzLjUgMTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTQuNWMwLS44My42Ny0xLjUgMS41LTEuNWg1Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVoLTVjLS44MyAwLTEuNS0uNjctMS41LTEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDE5SDE0djEuNWMwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDkuNUMxMCA4LjY3IDkuMzMgOCA4LjUgOGgtNUMyLjY3IDggMiA4LjY3IDIgOS41UzIuNjcgMTEgMy41IDExaDVjLjgzIDAgMS41LS42NyAxLjUtMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1SDEwVjMuNUMxMCAyLjY3IDkuMzMgMiA4LjUgMlM3IDIuNjcgNyAzLjUgNy42NyA1IDguNSA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjkzXCIsXCJ5MVwiOlwiNC45M1wiLFwieDJcIjpcIjE5LjA3XCIsXCJ5MlwiOlwiMTkuMDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTbGlkZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjRcIixcInkxXCI6XCIyMVwiLFwieDJcIjpcIjRcIixcInkyXCI6XCIxNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjRcIixcInkxXCI6XCIxMFwiLFwieDJcIjpcIjRcIixcInkyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjhcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMFwiLFwieTFcIjpcIjIxXCIsXCJ4MlwiOlwiMjBcIixcInkyXCI6XCIxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIwXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMTRcIixcIngyXCI6XCI3XCIsXCJ5MlwiOlwiMTRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjE1XCIsXCJ5MlwiOlwiOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3XCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjE2XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpU21hcnRwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjVcIixcInlcIjpcIjJcIixcIndpZHRoXCI6XCIxNFwiLFwiaGVpZ2h0XCI6XCIyMFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMThcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTbWlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNHMxLjUgMiA0IDIgNC0yIDQtMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiOS4wMVwiLFwieTJcIjpcIjlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCIxNS4wMVwiLFwieTJcIjpcIjlcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiNFwiLFwieVwiOlwiMlwiLFwid2lkdGhcIjpcIjE2XCIsXCJoZWlnaHRcIjpcIjIwXCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTRcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjZcIixcIngyXCI6XCIxMi4wMVwiLFwieTJcIjpcIjZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyIDIgMTUuMDkgOC4yNiAyMiA5LjI3IDE3IDE0LjE0IDE4LjE4IDIxLjAyIDEyIDE3Ljc3IDUuODIgMjEuMDIgNyAxNC4xNCAyIDkuMjcgOC45MSA4LjI2IDEyIDJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTdG9wQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjlcIixcInlcIjpcIjlcIixcIndpZHRoXCI6XCI2XCIsXCJoZWlnaHRcIjpcIjZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCI1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIzXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjIyXCIsXCJ5MVwiOlwiNC4yMlwiLFwieDJcIjpcIjUuNjRcIixcInkyXCI6XCI1LjY0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTguMzZcIixcInkxXCI6XCIxOC4zNlwiLFwieDJcIjpcIjE5Ljc4XCIsXCJ5MlwiOlwiMTkuNzhcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIzXCIsXCJ5MlwiOlwiMTJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjEyXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjQuMjJcIixcInkxXCI6XCIxOS43OFwiLFwieDJcIjpcIjUuNjRcIixcInkyXCI6XCIxOC4zNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE4LjM2XCIsXCJ5MVwiOlwiNS42NFwiLFwieDJcIjpcIjE5Ljc4XCIsXCJ5MlwiOlwiNC4yMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVN1bnJpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMThhNSA1IDAgMCAwLTEwIDBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjlcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0LjIyXCIsXCJ5MVwiOlwiMTAuMjJcIixcIngyXCI6XCI1LjY0XCIsXCJ5MlwiOlwiMTEuNjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCIzXCIsXCJ5MlwiOlwiMThcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMVwiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE4LjM2XCIsXCJ5MVwiOlwiMTEuNjRcIixcIngyXCI6XCIxOS43OFwiLFwieTJcIjpcIjEwLjIyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjNcIixcInkxXCI6XCIyMlwiLFwieDJcIjpcIjFcIixcInkyXCI6XCIyMlwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCA2IDEyIDIgMTYgNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVN1bnNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxOGE1IDUgMCAwIDAtMTAgMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjQuMjJcIixcInkxXCI6XCIxMC4yMlwiLFwieDJcIjpcIjUuNjRcIixcInkyXCI6XCIxMS42NFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxOFwiLFwieDJcIjpcIjNcIixcInkyXCI6XCIxOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMThcIixcIngyXCI6XCIyM1wiLFwieTJcIjpcIjE4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTguMzZcIixcInkxXCI6XCIxMS42NFwiLFwieDJcIjpcIjE5Ljc4XCIsXCJ5MlwiOlwiMTAuMjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyM1wiLFwieTFcIjpcIjIyXCIsXCJ4MlwiOlwiMVwiLFwieTJcIjpcIjIyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNiA1IDEyIDkgOCA1XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVGFibGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiNFwiLFwieVwiOlwiMlwiLFwid2lkdGhcIjpcIjE2XCIsXCJoZWlnaHRcIjpcIjIwXCIsXCJyeFwiOlwiMlwiLFwicnlcIjpcIjJcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE4XCIsXCJ4MlwiOlwiMTIuMDFcIixcInkyXCI6XCIxOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41OSAxMy40MWwtNy4xNyA3LjE3YTIgMiAwIDAgMS0yLjgzIDBMMiAxMlYyaDEwbDguNTkgOC41OWEyIDIgMCAwIDEgMCAyLjgyelwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjdcIixcInkxXCI6XCI3XCIsXCJ4MlwiOlwiNy4wMVwiLFwieTJcIjpcIjdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUYXJnZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxMFwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiNlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRlcm1pbmFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNCAxNyAxMCAxMSA0IDVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxMlwiLFwieTFcIjpcIjE5XCIsXCJ4MlwiOlwiMjBcIixcInkyXCI6XCIxOVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRoZXJtb21ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0Ljc2VjMuNWEyLjUgMi41IDAgMCAwLTUgMHYxMS4yNmE0LjUgNC41IDAgMSAwIDUgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE1djRhMyAzIDAgMCAwIDMgM2w0LTlWMkg1LjcyYTIgMiAwIDAgMC0yIDEuN2wtMS4zOCA5YTIgMiAwIDAgMCAyIDIuM3ptNy0xM2gyLjY3QTIuMzEgMi4zMSAwIDAgMSAyMiA0djdhMi4zMSAyLjMxIDAgMCAxLTIuMzMgMkgxN1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRodW1ic1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDlWNWEzIDMgMCAwIDAtMy0zbC00IDl2MTFoMTEuMjhhMiAyIDAgMCAwIDItMS43bDEuMzgtOWEyIDIgMCAwIDAtMi0yLjN6TTcgMjJINGEyIDIgMCAwIDEtMi0ydi03YTIgMiAwIDAgMSAyLTJoM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRvZ2dsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxXCIsXCJ5XCI6XCI1XCIsXCJ3aWR0aFwiOlwiMjJcIixcImhlaWdodFwiOlwiMTRcIixcInJ4XCI6XCI3XCIsXCJyeVwiOlwiN1wifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVG9nZ2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIxXCIsXCJ5XCI6XCI1XCIsXCJ3aWR0aFwiOlwiMjJcIixcImhlaWdodFwiOlwiMTRcIixcInJ4XCI6XCI3XCIsXCJyeVwiOlwiN1wifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNyA2LjNhMSAxIDAgMCAwIDAgMS40bDEuNiAxLjZhMSAxIDAgMCAwIDEuNCAwbDMuNzctMy43N2E2IDYgMCAwIDEtNy45NCA3Ljk0bC02LjkxIDYuOTFhMi4xMiAyLjEyIDAgMCAxLTMtM2w2LjkxLTYuOTFhNiA2IDAgMCAxIDcuOTQtNy45NGwtMy43NiAzLjc2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRyYXNoMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjMgNiA1IDYgMjEgNlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTBcIixcInkxXCI6XCIxMVwiLFwieDJcIjpcIjEwXCIsXCJ5MlwiOlwiMTdcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNFwiLFwieTFcIjpcIjExXCIsXCJ4MlwiOlwiMTRcIixcInkyXCI6XCIxN1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMyA2IDUgNiAyMSA2XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2bTMgMFY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUcmVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiN1wiLFwieVwiOlwiN1wiLFwid2lkdGhcIjpcIjNcIixcImhlaWdodFwiOlwiOVwifX0se1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMTRcIixcInlcIjpcIjdcIixcIndpZHRoXCI6XCIzXCIsXCJoZWlnaHRcIjpcIjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUcmVuZGluZ0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMyAxOCAxMy41IDguNSA4LjUgMTMuNSAxIDZcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE3IDE4IDIzIDE4IDIzIDEyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVHJlbmRpbmdVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjIzIDYgMTMuNSAxNS41IDguNSAxMC41IDEgMThcIn19LHtcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE3IDYgMjMgNiAyMyAxMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRyaWFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI5IDMuODZMMS44MiAxOGEyIDIgMCAwIDAgMS43MSAzaDE2Ljk0YTIgMiAwIDAgMCAxLjcxLTNMMTMuNzEgMy44NmEyIDIgMCAwIDAtMy40MiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVRydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiMVwiLFwieVwiOlwiM1wiLFwid2lkdGhcIjpcIjE1XCIsXCJoZWlnaHRcIjpcIjEzXCJ9fSx7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjE2IDggMjAgOCAyMyAxMSAyMyAxNiAxNiAxNiAxNiA4XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI1LjVcIixcImN5XCI6XCIxOC41XCIsXCJyXCI6XCIyLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4LjVcIixcImN5XCI6XCIxOC41XCIsXCJyXCI6XCIyLjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjJcIixcInlcIjpcIjdcIixcIndpZHRoXCI6XCIyMFwiLFwiaGVpZ2h0XCI6XCIxNVwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyAyIDEyIDcgNyAyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVHdpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDJIM3YxNmg1djRsNC00aDVsNC00VjJ6bS0xMCA5VjdtNSA0VjdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlUd2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzIDNhMTAuOSAxMC45IDAgMCAxLTMuMTQgMS41MyA0LjQ4IDQuNDggMCAwIDAtNy44NiAzdjFBMTAuNjYgMTAuNjYgMCAwIDEgMyA0cy00IDkgNSAxM2ExMS42NCAxMS42NCAwIDAgMS03IDJjOSA1IDIwIDAgMjAtMTEuNWE0LjUgNC41IDAgMCAwLS4wOC0uODNBNy43MiA3LjcyIDAgMCAwIDIzIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVHlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjQgNyA0IDQgMjAgNCAyMCA3XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOVwiLFwieTFcIjpcIjIwXCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIyMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiNFwiLFwieDJcIjpcIjEyXCIsXCJ5MlwiOlwiMjBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlVbWJyZWxsYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMyAxMmExMS4wNSAxMS4wNSAwIDAgMC0yMiAwem0tNSA3YTMgMyAwIDAgMS02IDB2LTdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlVbmRlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzdjdhNiA2IDAgMCAwIDYgNiA2IDYgMCAwIDAgNi02VjNcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI0XCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJyZWN0XCIsXCJhdHRyXCI6e1wieFwiOlwiM1wiLFwieVwiOlwiMTFcIixcIndpZHRoXCI6XCIxOFwiLFwiaGVpZ2h0XCI6XCIxMVwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMVY3YTUgNSAwIDAgMSA5LjktMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVwbG9hZENsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMTYgMTIgMTIgOCAxNlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjEyXCIsXCJ5MVwiOlwiMTJcIixcIngyXCI6XCIxMlwiLFwieTJcIjpcIjIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMzkgMTguMzlBNSA1IDAgMCAwIDE4IDloLTEuMjZBOCA4IDAgMSAwIDMgMTYuM1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTYgMTYgMTIgMTIgOCAxNlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyA4IDEyIDMgNyA4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIzXCIsXCJ4MlwiOlwiMTJcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVzZXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI3XCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxNyAxMSAxOSAxMyAyMyA5XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjdcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyM1wiLFwieTFcIjpcIjExXCIsXCJ4MlwiOlwiMTdcIixcInkyXCI6XCIxMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVzZXJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjdcIixcInJcIjpcIjRcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIyMFwiLFwieTFcIjpcIjhcIixcIngyXCI6XCIyMFwiLFwieTJcIjpcIjE0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjNcIixcInkxXCI6XCIxMVwiLFwieDJcIjpcIjE3XCIsXCJ5MlwiOlwiMTFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlVc2VyWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCI3XCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIxM1wifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIzXCIsXCJ5MVwiOlwiOFwiLFwieDJcIjpcIjE4XCIsXCJ5MlwiOlwiMTNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIOGE0IDQgMCAwIDAtNCA0djJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiN1wiLFwiclwiOlwiNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVVzZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCI3XCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDMuMTNhNCA0IDAgMCAxIDAgNy43NVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVZpZGVvT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE2djFhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWN2EyIDIgMCAwIDEgMi0yaDJtNS42NiAwSDE0YTIgMiAwIDAgMSAyIDJ2My4zNGwxIDFMMjMgN3YxMFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjFcIixcInkxXCI6XCIxXCIsXCJ4MlwiOlwiMjNcIixcInkyXCI6XCIyM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIyMyA3IDE2IDEyIDIzIDE3IDIzIDdcIn19LHtcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcInhcIjpcIjFcIixcInlcIjpcIjVcIixcIndpZHRoXCI6XCIxNVwiLFwiaGVpZ2h0XCI6XCIxNFwiLFwicnhcIjpcIjJcIixcInJ5XCI6XCIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNS41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiNC41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOC41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiNC41XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNS41XCIsXCJ5MVwiOlwiMTZcIixcIngyXCI6XCIxOC41XCIsXCJ5MlwiOlwiMTZcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlWb2x1bWUxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41NCA4LjQ2YTUgNSAwIDAgMSAwIDcuMDdcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlWb2x1bWUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwb2x5Z29uXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wNyA0LjkzYTEwIDEwIDAgMCAxIDAgMTQuMTRNMTUuNTQgOC40NmE1IDUgMCAwIDEgMCA3LjA3XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpVm9sdW1lWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTEgNSA2IDkgMiA5IDIgMTUgNiAxNSAxMSAxOSAxMSA1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMjNcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiMTdcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE3XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMTVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVdhdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiN1wifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiMTIgOSAxMiAxMiAxMy41IDEzLjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi41MSAxNy4zNWwtLjM1IDMuODNhMiAyIDAgMCAxLTIgMS44Mkg5LjgzYTIgMiAwIDAgMS0yLTEuODJsLS4zNS0zLjgzbS4wMS0xMC43bC4zNS0zLjgzQTIgMiAwIDAgMSA5LjgzIDFoNC4zNWEyIDIgMCAwIDEgMiAxLjgybC4zNSAzLjgzXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpV2lmaU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MiAxMS4wNkExMC45NCAxMC45NCAwIDAgMSAxOSAxMi41NVwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTIuNTVhMTAuOTQgMTAuOTQgMCAwIDEgNS4xNy0yLjM5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzEgNS4wNUExNiAxNiAwIDAgMSAyMi41OCA5XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS40MiA5YTE1LjkxIDE1LjkxIDAgMCAxIDQuNy0yLjg4XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41MyAxNi4xMWE2IDYgMCAwIDEgNi45NSAwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMjBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlXaWZpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTIuNTVhMTEgMTEgMCAwIDEgMTQuMDggMFwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNDIgOWExNiAxNiAwIDAgMSAyMS4xNiAwXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41MyAxNi4xMWE2IDYgMCAwIDEgNi45NSAwXCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTJcIixcInkxXCI6XCIyMFwiLFwieDJcIjpcIjEyLjAxXCIsXCJ5MlwiOlwiMjBcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlXaW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNTkgNC41OUEyIDIgMCAxIDEgMTEgOEgybTEwLjU5IDExLjQxQTIgMiAwIDEgMCAxNCAxNkgybTE1LjczLTguMjdBMi41IDIuNSAwIDEgMSAxOS41IDEySDJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlYQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMTBcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxNVwiLFwieTFcIjpcIjlcIixcIngyXCI6XCI5XCIsXCJ5MlwiOlwiMTVcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCI5XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjE1XCIsXCJ5MlwiOlwiMTVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlYT2N0YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWdvblwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiNy44NiAyIDE2LjE0IDIgMjIgNy44NiAyMiAxNi4xNCAxNi4xNCAyMiA3Ljg2IDIyIDIgMTYuMTQgMiA3Ljg2IDcuODYgMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjlcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVhTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInJlY3RcIixcImF0dHJcIjp7XCJ4XCI6XCIzXCIsXCJ5XCI6XCIzXCIsXCJ3aWR0aFwiOlwiMThcIixcImhlaWdodFwiOlwiMThcIixcInJ4XCI6XCIyXCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjlcIixcInkxXCI6XCI5XCIsXCJ4MlwiOlwiMTVcIixcInkyXCI6XCIxNVwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjE1XCIsXCJ5MVwiOlwiOVwiLFwieDJcIjpcIjlcIixcInkyXCI6XCIxNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMThcIixcInkxXCI6XCI2XCIsXCJ4MlwiOlwiNlwiLFwieTJcIjpcIjE4XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiNlwiLFwieTFcIjpcIjZcIixcIngyXCI6XCIxOFwiLFwieTJcIjpcIjE4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpWW91dHViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMi41NCA2LjQyYTIuNzggMi43OCAwIDAgMC0xLjk0LTJDMTguODggNCAxMiA0IDEyIDRzLTYuODggMC04LjYuNDZhMi43OCAyLjc4IDAgMCAwLTEuOTQgMkEyOSAyOSAwIDAgMCAxIDExLjc1YTI5IDI5IDAgMCAwIC40NiA1LjMzQTIuNzggMi43OCAwIDAgMCAzLjQgMTljMS43Mi40NiA4LjYuNDYgOC42LjQ2czYuODggMCA4LjYtLjQ2YTIuNzggMi43OCAwIDAgMCAxLjk0LTIgMjkgMjkgMCAwIDAgLjQ2LTUuMjUgMjkgMjkgMCAwIDAtLjQ2LTUuMzN6XCJ9fSx7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjkuNzUgMTUuMDIgMTUuNSAxMS43NSA5Ljc1IDguNDggOS43NSAxNS4wMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGaVphcE9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIixcImZpbGxcIjpcIm5vbmVcIixcInN0cm9rZVwiOlwiY3VycmVudENvbG9yXCIsXCJzdHJva2VXaWR0aFwiOlwiMlwiLFwic3Ryb2tlTGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZUxpbmVqb2luXCI6XCJyb3VuZFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicG9seWxpbmVcIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEyLjQxIDYuNzUgMTMgMiAxMC41NyA0LjkyXCJ9fSx7XCJ0YWdcIjpcInBvbHlsaW5lXCIsXCJhdHRyXCI6e1wicG9pbnRzXCI6XCIxOC41NyAxMi45MSAyMSAxMCAxNS42NiAxMFwifX0se1widGFnXCI6XCJwb2x5bGluZVwiLFwiYXR0clwiOntcInBvaW50c1wiOlwiOCA4IDMgMTQgMTIgMTQgMTEgMjIgMTYgMTZcIn19LHtcInRhZ1wiOlwibGluZVwiLFwiYXR0clwiOntcIngxXCI6XCIxXCIsXCJ5MVwiOlwiMVwiLFwieDJcIjpcIjIzXCIsXCJ5MlwiOlwiMjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlaYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCIsXCJmaWxsXCI6XCJub25lXCIsXCJzdHJva2VcIjpcImN1cnJlbnRDb2xvclwiLFwic3Ryb2tlV2lkdGhcIjpcIjJcIixcInN0cm9rZUxpbmVjYXBcIjpcInJvdW5kXCIsXCJzdHJva2VMaW5lam9pblwiOlwicm91bmRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBvbHlnb25cIixcImF0dHJcIjp7XCJwb2ludHNcIjpcIjEzIDIgMyAxNCAxMiAxNCAxMSAyMiAyMSAxMCAxMiAxMCAxMyAyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZpWm9vbUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCIxMVwiLFwiclwiOlwiOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCIxNi42NVwiLFwieTJcIjpcIjE2LjY1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiMTFcIixcInkxXCI6XCI4XCIsXCJ4MlwiOlwiMTFcIixcInkyXCI6XCIxNFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjhcIixcInkxXCI6XCIxMVwiLFwieDJcIjpcIjE0XCIsXCJ5MlwiOlwiMTFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmlab29tT3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZVdpZHRoXCI6XCIyXCIsXCJzdHJva2VMaW5lY2FwXCI6XCJyb3VuZFwiLFwic3Ryb2tlTGluZWpvaW5cIjpcInJvdW5kXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTFcIixcImN5XCI6XCIxMVwiLFwiclwiOlwiOFwifX0se1widGFnXCI6XCJsaW5lXCIsXCJhdHRyXCI6e1wieDFcIjpcIjIxXCIsXCJ5MVwiOlwiMjFcIixcIngyXCI6XCIxNi42NVwiLFwieTJcIjpcIjE2LjY1XCJ9fSx7XCJ0YWdcIjpcImxpbmVcIixcImF0dHJcIjp7XCJ4MVwiOlwiOFwiLFwieTFcIjpcIjExXCIsXCJ4MlwiOlwiMTRcIixcInkyXCI6XCIxMVwifX1dfSkocHJvcHMpO1xufTtcbiIsICIvKipcbiAqICBiYXNlNjQudHNcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEJTRCAzLUNsYXVzZSBMaWNlbnNlLlxuICogICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqICBSZWZlcmVuY2VzOlxuICogICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjRcbiAqXG4gKiBAYXV0aG9yIERhbiBLb2dhaSAoaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpKVxuICovXG5jb25zdCB2ZXJzaW9uID0gJzMuNy4yJztcbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIGxvd2VyY2FzZSBgdmVyc2lvbmAuXG4gKi9cbmNvbnN0IFZFUlNJT04gPSB2ZXJzaW9uO1xuY29uc3QgX2hhc2F0b2IgPSB0eXBlb2YgYXRvYiA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IF9oYXNidG9hID0gdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbic7XG5jb25zdCBfaGFzQnVmZmVyID0gdHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IF9URCA9IHR5cGVvZiBUZXh0RGVjb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBUZXh0RGVjb2RlcigpIDogdW5kZWZpbmVkO1xuY29uc3QgX1RFID0gdHlwZW9mIFRleHRFbmNvZGVyID09PSAnZnVuY3Rpb24nID8gbmV3IFRleHRFbmNvZGVyKCkgOiB1bmRlZmluZWQ7XG5jb25zdCBiNjRjaCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSc7XG5jb25zdCBiNjRjaHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiNjRjaCk7XG5jb25zdCBiNjR0YWIgPSAoKGEpID0+IHtcbiAgICBsZXQgdGFiID0ge307XG4gICAgYS5mb3JFYWNoKChjLCBpKSA9PiB0YWJbY10gPSBpKTtcbiAgICByZXR1cm4gdGFiO1xufSkoYjY0Y2hzKTtcbmNvbnN0IGI2NHJlID0gL14oPzpbQS1aYS16XFxkK1xcL117NH0pKj8oPzpbQS1aYS16XFxkK1xcL117Mn0oPzo9PSk/fFtBLVphLXpcXGQrXFwvXXszfT0/KT8kLztcbmNvbnN0IF9mcm9tQ0MgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmJpbmQoU3RyaW5nKTtcbmNvbnN0IF9VOEFmcm9tID0gdHlwZW9mIFVpbnQ4QXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gVWludDhBcnJheS5mcm9tLmJpbmQoVWludDhBcnJheSlcbiAgICA6IChpdCwgZm4gPSAoeCkgPT4geCkgPT4gbmV3IFVpbnQ4QXJyYXkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaXQsIDApLm1hcChmbikpO1xuY29uc3QgX21rVXJpU2FmZSA9IChzcmMpID0+IHNyY1xuICAgIC5yZXBsYWNlKC89L2csICcnKS5yZXBsYWNlKC9bK1xcL10vZywgKG0wKSA9PiBtMCA9PSAnKycgPyAnLScgOiAnXycpO1xuY29uc3QgX3RpZHlCNjQgPSAocykgPT4gcy5yZXBsYWNlKC9bXkEtWmEtejAtOVxcK1xcL10vZywgJycpO1xuLyoqXG4gKiBwb2x5ZmlsbCB2ZXJzaW9uIG9mIGBidG9hYFxuICovXG5jb25zdCBidG9hUG9seWZpbGwgPSAoYmluKSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coJ3BvbHlmaWxsZWQnKTtcbiAgICBsZXQgdTMyLCBjMCwgYzEsIGMyLCBhc2MgPSAnJztcbiAgICBjb25zdCBwYWQgPSBiaW4ubGVuZ3RoICUgMztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbi5sZW5ndGg7KSB7XG4gICAgICAgIGlmICgoYzAgPSBiaW4uY2hhckNvZGVBdChpKyspKSA+IDI1NSB8fFxuICAgICAgICAgICAgKGMxID0gYmluLmNoYXJDb2RlQXQoaSsrKSkgPiAyNTUgfHxcbiAgICAgICAgICAgIChjMiA9IGJpbi5jaGFyQ29kZUF0KGkrKykpID4gMjU1KVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBjaGFyYWN0ZXIgZm91bmQnKTtcbiAgICAgICAgdTMyID0gKGMwIDw8IDE2KSB8IChjMSA8PCA4KSB8IGMyO1xuICAgICAgICBhc2MgKz0gYjY0Y2hzW3UzMiA+PiAxOCAmIDYzXVxuICAgICAgICAgICAgKyBiNjRjaHNbdTMyID4+IDEyICYgNjNdXG4gICAgICAgICAgICArIGI2NGNoc1t1MzIgPj4gNiAmIDYzXVxuICAgICAgICAgICAgKyBiNjRjaHNbdTMyICYgNjNdO1xuICAgIH1cbiAgICByZXR1cm4gcGFkID8gYXNjLnNsaWNlKDAsIHBhZCAtIDMpICsgXCI9PT1cIi5zdWJzdHJpbmcocGFkKSA6IGFzYztcbn07XG4vKipcbiAqIGRvZXMgd2hhdCBgd2luZG93LmJ0b2FgIG9mIHdlYiBicm93c2VycyBkby5cbiAqIEBwYXJhbSB7U3RyaW5nfSBiaW4gYmluYXJ5IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgc3RyaW5nXG4gKi9cbmNvbnN0IF9idG9hID0gX2hhc2J0b2EgPyAoYmluKSA9PiBidG9hKGJpbilcbiAgICA6IF9oYXNCdWZmZXIgPyAoYmluKSA9PiBCdWZmZXIuZnJvbShiaW4sICdiaW5hcnknKS50b1N0cmluZygnYmFzZTY0JylcbiAgICAgICAgOiBidG9hUG9seWZpbGw7XG5jb25zdCBfZnJvbVVpbnQ4QXJyYXkgPSBfaGFzQnVmZmVyXG4gICAgPyAodThhKSA9PiBCdWZmZXIuZnJvbSh1OGEpLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgIDogKHU4YSkgPT4ge1xuICAgICAgICAvLyBjZi4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTI3MTAwMDEvaG93LXRvLWNvbnZlcnQtdWludDgtYXJyYXktdG8tYmFzZTY0LWVuY29kZWQtc3RyaW5nLzEyNzEzMzI2IzEyNzEzMzI2XG4gICAgICAgIGNvbnN0IG1heGFyZ3MgPSAweDEwMDA7XG4gICAgICAgIGxldCBzdHJzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gdThhLmxlbmd0aDsgaSA8IGw7IGkgKz0gbWF4YXJncykge1xuICAgICAgICAgICAgc3Rycy5wdXNoKF9mcm9tQ0MuYXBwbHkobnVsbCwgdThhLnN1YmFycmF5KGksIGkgKyBtYXhhcmdzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfYnRvYShzdHJzLmpvaW4oJycpKTtcbiAgICB9O1xuLyoqXG4gKiBjb252ZXJ0cyBhIFVpbnQ4QXJyYXkgdG8gYSBCYXNlNjQgc3RyaW5nLlxuICogQHBhcmFtIHtib29sZWFufSBbdXJsc2FmZV0gVVJMLWFuZC1maWxlbmFtZS1zYWZlIGEgbGEgUkZDNDY0OCBcdTAwQTc1XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQgc3RyaW5nXG4gKi9cbmNvbnN0IGZyb21VaW50OEFycmF5ID0gKHU4YSwgdXJsc2FmZSA9IGZhbHNlKSA9PiB1cmxzYWZlID8gX21rVXJpU2FmZShfZnJvbVVpbnQ4QXJyYXkodThhKSkgOiBfZnJvbVVpbnQ4QXJyYXkodThhKTtcbi8vIFRoaXMgdHJpY2sgaXMgZm91bmQgYnJva2VuIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1iYXNlNjQvaXNzdWVzLzEzMFxuLy8gY29uc3QgdXRvYiA9IChzcmM6IHN0cmluZykgPT4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHNyYykpO1xuLy8gcmV2ZXJ0aW5nIGdvb2Qgb2xkIGZhdGlvbmVkIHJlZ2V4cFxuY29uc3QgY2JfdXRvYiA9IChjKSA9PiB7XG4gICAgaWYgKGMubGVuZ3RoIDwgMikge1xuICAgICAgICB2YXIgY2MgPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIHJldHVybiBjYyA8IDB4ODAgPyBjXG4gICAgICAgICAgICA6IGNjIDwgMHg4MDAgPyAoX2Zyb21DQygweGMwIHwgKGNjID4+PiA2KSlcbiAgICAgICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8IChjYyAmIDB4M2YpKSlcbiAgICAgICAgICAgICAgICA6IChfZnJvbUNDKDB4ZTAgfCAoKGNjID4+PiAxMikgJiAweDBmKSlcbiAgICAgICAgICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoKGNjID4+PiA2KSAmIDB4M2YpKVxuICAgICAgICAgICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8IChjYyAmIDB4M2YpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgY2MgPSAweDEwMDAwXG4gICAgICAgICAgICArIChjLmNoYXJDb2RlQXQoMCkgLSAweEQ4MDApICogMHg0MDBcbiAgICAgICAgICAgICsgKGMuY2hhckNvZGVBdCgxKSAtIDB4REMwMCk7XG4gICAgICAgIHJldHVybiAoX2Zyb21DQygweGYwIHwgKChjYyA+Pj4gMTgpICYgMHgwNykpXG4gICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8ICgoY2MgPj4+IDEyKSAmIDB4M2YpKVxuICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoKGNjID4+PiA2KSAmIDB4M2YpKVxuICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoY2MgJiAweDNmKSkpO1xuICAgIH1cbn07XG5jb25zdCByZV91dG9iID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRkZdfFteXFx4MDAtXFx4N0ZdL2c7XG4vKipcbiAqIEBkZXByZWNhdGVkIHNob3VsZCBoYXZlIGJlZW4gaW50ZXJuYWwgdXNlIG9ubHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjIFVURi04IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gVVRGLTE2IHN0cmluZ1xuICovXG5jb25zdCB1dG9iID0gKHUpID0+IHUucmVwbGFjZShyZV91dG9iLCBjYl91dG9iKTtcbi8vXG5jb25zdCBfZW5jb2RlID0gX2hhc0J1ZmZlclxuICAgID8gKHMpID0+IEJ1ZmZlci5mcm9tKHMsICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgOiBfVEVcbiAgICAgICAgPyAocykgPT4gX2Zyb21VaW50OEFycmF5KF9URS5lbmNvZGUocykpXG4gICAgICAgIDogKHMpID0+IF9idG9hKHV0b2IocykpO1xuLyoqXG4gKiBjb252ZXJ0cyBhIFVURi04LWVuY29kZWQgc3RyaW5nIHRvIGEgQmFzZTY0IHN0cmluZy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VybHNhZmVdIGlmIGB0cnVlYCBtYWtlIHRoZSByZXN1bHQgVVJMLXNhZmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NCBzdHJpbmdcbiAqL1xuY29uc3QgZW5jb2RlID0gKHNyYywgdXJsc2FmZSA9IGZhbHNlKSA9PiB1cmxzYWZlXG4gICAgPyBfbWtVcmlTYWZlKF9lbmNvZGUoc3JjKSlcbiAgICA6IF9lbmNvZGUoc3JjKTtcbi8qKlxuICogY29udmVydHMgYSBVVEYtOC1lbmNvZGVkIHN0cmluZyB0byBVUkwtc2FmZSBCYXNlNjQgUkZDNDY0OCBcdTAwQTc1LlxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0IHN0cmluZ1xuICovXG5jb25zdCBlbmNvZGVVUkkgPSAoc3JjKSA9PiBlbmNvZGUoc3JjLCB0cnVlKTtcbi8vIFRoaXMgdHJpY2sgaXMgZm91bmQgYnJva2VuIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1iYXNlNjQvaXNzdWVzLzEzMFxuLy8gY29uc3QgYnRvdSA9IChzcmM6IHN0cmluZykgPT4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzcmMpKTtcbi8vIHJldmVydGluZyBnb29kIG9sZCBmYXRpb25lZCByZWdleHBcbmNvbnN0IHJlX2J0b3UgPSAvW1xceEMwLVxceERGXVtcXHg4MC1cXHhCRl18W1xceEUwLVxceEVGXVtcXHg4MC1cXHhCRl17Mn18W1xceEYwLVxceEY3XVtcXHg4MC1cXHhCRl17M30vZztcbmNvbnN0IGNiX2J0b3UgPSAoY2NjYykgPT4ge1xuICAgIHN3aXRjaCAoY2NjYy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgdmFyIGNwID0gKCgweDA3ICYgY2NjYy5jaGFyQ29kZUF0KDApKSA8PCAxOClcbiAgICAgICAgICAgICAgICB8ICgoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSkgPDwgMTIpXG4gICAgICAgICAgICAgICAgfCAoKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMikpIDw8IDYpXG4gICAgICAgICAgICAgICAgfCAoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgzKSksIG9mZnNldCA9IGNwIC0gMHgxMDAwMDtcbiAgICAgICAgICAgIHJldHVybiAoX2Zyb21DQygob2Zmc2V0ID4+PiAxMCkgKyAweEQ4MDApXG4gICAgICAgICAgICAgICAgKyBfZnJvbUNDKChvZmZzZXQgJiAweDNGRikgKyAweERDMDApKTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIF9mcm9tQ0MoKCgweDBmICYgY2NjYy5jaGFyQ29kZUF0KDApKSA8PCAxMilcbiAgICAgICAgICAgICAgICB8ICgoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSkgPDwgNilcbiAgICAgICAgICAgICAgICB8ICgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDIpKSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gX2Zyb21DQygoKDB4MWYgJiBjY2NjLmNoYXJDb2RlQXQoMCkpIDw8IDYpXG4gICAgICAgICAgICAgICAgfCAoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgxKSkpO1xuICAgIH1cbn07XG4vKipcbiAqIEBkZXByZWNhdGVkIHNob3VsZCBoYXZlIGJlZW4gaW50ZXJuYWwgdXNlIG9ubHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjIFVURi0xNiBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFVURi04IHN0cmluZ1xuICovXG5jb25zdCBidG91ID0gKGIpID0+IGIucmVwbGFjZShyZV9idG91LCBjYl9idG91KTtcbi8qKlxuICogcG9seWZpbGwgdmVyc2lvbiBvZiBgYXRvYmBcbiAqL1xuY29uc3QgYXRvYlBvbHlmaWxsID0gKGFzYykgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKCdwb2x5ZmlsbGVkJyk7XG4gICAgYXNjID0gYXNjLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIGlmICghYjY0cmUudGVzdChhc2MpKVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYWxmb3JtZWQgYmFzZTY0LicpO1xuICAgIGFzYyArPSAnPT0nLnNsaWNlKDIgLSAoYXNjLmxlbmd0aCAmIDMpKTtcbiAgICBsZXQgdTI0LCBiaW4gPSAnJywgcjEsIHIyO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXNjLmxlbmd0aDspIHtcbiAgICAgICAgdTI0ID0gYjY0dGFiW2FzYy5jaGFyQXQoaSsrKV0gPDwgMThcbiAgICAgICAgICAgIHwgYjY0dGFiW2FzYy5jaGFyQXQoaSsrKV0gPDwgMTJcbiAgICAgICAgICAgIHwgKHIxID0gYjY0dGFiW2FzYy5jaGFyQXQoaSsrKV0pIDw8IDZcbiAgICAgICAgICAgIHwgKHIyID0gYjY0dGFiW2FzYy5jaGFyQXQoaSsrKV0pO1xuICAgICAgICBiaW4gKz0gcjEgPT09IDY0ID8gX2Zyb21DQyh1MjQgPj4gMTYgJiAyNTUpXG4gICAgICAgICAgICA6IHIyID09PSA2NCA/IF9mcm9tQ0ModTI0ID4+IDE2ICYgMjU1LCB1MjQgPj4gOCAmIDI1NSlcbiAgICAgICAgICAgICAgICA6IF9mcm9tQ0ModTI0ID4+IDE2ICYgMjU1LCB1MjQgPj4gOCAmIDI1NSwgdTI0ICYgMjU1KTtcbiAgICB9XG4gICAgcmV0dXJuIGJpbjtcbn07XG4vKipcbiAqIGRvZXMgd2hhdCBgd2luZG93LmF0b2JgIG9mIHdlYiBicm93c2VycyBkby5cbiAqIEBwYXJhbSB7U3RyaW5nfSBhc2MgQmFzZTY0LWVuY29kZWQgc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBiaW5hcnkgc3RyaW5nXG4gKi9cbmNvbnN0IF9hdG9iID0gX2hhc2F0b2IgPyAoYXNjKSA9PiBhdG9iKF90aWR5QjY0KGFzYykpXG4gICAgOiBfaGFzQnVmZmVyID8gKGFzYykgPT4gQnVmZmVyLmZyb20oYXNjLCAnYmFzZTY0JykudG9TdHJpbmcoJ2JpbmFyeScpXG4gICAgICAgIDogYXRvYlBvbHlmaWxsO1xuLy9cbmNvbnN0IF90b1VpbnQ4QXJyYXkgPSBfaGFzQnVmZmVyXG4gICAgPyAoYSkgPT4gX1U4QWZyb20oQnVmZmVyLmZyb20oYSwgJ2Jhc2U2NCcpKVxuICAgIDogKGEpID0+IF9VOEFmcm9tKF9hdG9iKGEpLCBjID0+IGMuY2hhckNvZGVBdCgwKSk7XG4vKipcbiAqIGNvbnZlcnRzIGEgQmFzZTY0IHN0cmluZyB0byBhIFVpbnQ4QXJyYXkuXG4gKi9cbmNvbnN0IHRvVWludDhBcnJheSA9IChhKSA9PiBfdG9VaW50OEFycmF5KF91blVSSShhKSk7XG4vL1xuY29uc3QgX2RlY29kZSA9IF9oYXNCdWZmZXJcbiAgICA/IChhKSA9PiBCdWZmZXIuZnJvbShhLCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0ZjgnKVxuICAgIDogX1REXG4gICAgICAgID8gKGEpID0+IF9URC5kZWNvZGUoX3RvVWludDhBcnJheShhKSlcbiAgICAgICAgOiAoYSkgPT4gYnRvdShfYXRvYihhKSk7XG5jb25zdCBfdW5VUkkgPSAoYSkgPT4gX3RpZHlCNjQoYS5yZXBsYWNlKC9bLV9dL2csIChtMCkgPT4gbTAgPT0gJy0nID8gJysnIDogJy8nKSk7XG4vKipcbiAqIGNvbnZlcnRzIGEgQmFzZTY0IHN0cmluZyB0byBhIFVURi04IHN0cmluZy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzcmMgQmFzZTY0IHN0cmluZy4gIEJvdGggbm9ybWFsIGFuZCBVUkwtc2FmZSBhcmUgc3VwcG9ydGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBVVEYtOCBzdHJpbmdcbiAqL1xuY29uc3QgZGVjb2RlID0gKHNyYykgPT4gX2RlY29kZShfdW5VUkkoc3JjKSk7XG4vKipcbiAqIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBCYXNlNjQgc3RyaW5nXG4gKiBAcGFyYW0ge1N0cmluZ30gc3JjIGEgdmFsdWUgdG8gY2hlY2tcbiAgKi9cbmNvbnN0IGlzVmFsaWQgPSAoc3JjKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBzcmMgIT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgcyA9IHNyYy5yZXBsYWNlKC9cXHMrL2csICcnKS5yZXBsYWNlKC89ezAsMn0kLywgJycpO1xuICAgIHJldHVybiAhL1teXFxzMC05YS16QS1aXFwrL10vLnRlc3QocykgfHwgIS9bXlxcczAtOWEtekEtWlxcLV9dLy50ZXN0KHMpO1xufTtcbi8vXG5jb25zdCBfbm9FbnVtID0gKHYpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogdiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWVcbiAgICB9O1xufTtcbi8qKlxuICogZXh0ZW5kIFN0cmluZy5wcm90b3R5cGUgd2l0aCByZWxldmFudCBtZXRob2RzXG4gKi9cbmNvbnN0IGV4dGVuZFN0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBfYWRkID0gKG5hbWUsIGJvZHkpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCBuYW1lLCBfbm9FbnVtKGJvZHkpKTtcbiAgICBfYWRkKCdmcm9tQmFzZTY0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZGVjb2RlKHRoaXMpOyB9KTtcbiAgICBfYWRkKCd0b0Jhc2U2NCcsIGZ1bmN0aW9uICh1cmxzYWZlKSB7IHJldHVybiBlbmNvZGUodGhpcywgdXJsc2FmZSk7IH0pO1xuICAgIF9hZGQoJ3RvQmFzZTY0VVJJJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZW5jb2RlKHRoaXMsIHRydWUpOyB9KTtcbiAgICBfYWRkKCd0b0Jhc2U2NFVSTCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVuY29kZSh0aGlzLCB0cnVlKTsgfSk7XG4gICAgX2FkZCgndG9VaW50OEFycmF5JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9VaW50OEFycmF5KHRoaXMpOyB9KTtcbn07XG4vKipcbiAqIGV4dGVuZCBVaW50OEFycmF5LnByb3RvdHlwZSB3aXRoIHJlbGV2YW50IG1ldGhvZHNcbiAqL1xuY29uc3QgZXh0ZW5kVWludDhBcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBfYWRkID0gKG5hbWUsIGJvZHkpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShVaW50OEFycmF5LnByb3RvdHlwZSwgbmFtZSwgX25vRW51bShib2R5KSk7XG4gICAgX2FkZCgndG9CYXNlNjQnLCBmdW5jdGlvbiAodXJsc2FmZSkgeyByZXR1cm4gZnJvbVVpbnQ4QXJyYXkodGhpcywgdXJsc2FmZSk7IH0pO1xuICAgIF9hZGQoJ3RvQmFzZTY0VVJJJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZnJvbVVpbnQ4QXJyYXkodGhpcywgdHJ1ZSk7IH0pO1xuICAgIF9hZGQoJ3RvQmFzZTY0VVJMJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZnJvbVVpbnQ4QXJyYXkodGhpcywgdHJ1ZSk7IH0pO1xufTtcbi8qKlxuICogZXh0ZW5kIEJ1aWx0aW4gcHJvdG90eXBlcyB3aXRoIHJlbGV2YW50IG1ldGhvZHNcbiAqL1xuY29uc3QgZXh0ZW5kQnVpbHRpbnMgPSAoKSA9PiB7XG4gICAgZXh0ZW5kU3RyaW5nKCk7XG4gICAgZXh0ZW5kVWludDhBcnJheSgpO1xufTtcbmNvbnN0IGdCYXNlNjQgPSB7XG4gICAgdmVyc2lvbjogdmVyc2lvbixcbiAgICBWRVJTSU9OOiBWRVJTSU9OLFxuICAgIGF0b2I6IF9hdG9iLFxuICAgIGF0b2JQb2x5ZmlsbDogYXRvYlBvbHlmaWxsLFxuICAgIGJ0b2E6IF9idG9hLFxuICAgIGJ0b2FQb2x5ZmlsbDogYnRvYVBvbHlmaWxsLFxuICAgIGZyb21CYXNlNjQ6IGRlY29kZSxcbiAgICB0b0Jhc2U2NDogZW5jb2RlLFxuICAgIGVuY29kZTogZW5jb2RlLFxuICAgIGVuY29kZVVSSTogZW5jb2RlVVJJLFxuICAgIGVuY29kZVVSTDogZW5jb2RlVVJJLFxuICAgIHV0b2I6IHV0b2IsXG4gICAgYnRvdTogYnRvdSxcbiAgICBkZWNvZGU6IGRlY29kZSxcbiAgICBpc1ZhbGlkOiBpc1ZhbGlkLFxuICAgIGZyb21VaW50OEFycmF5OiBmcm9tVWludDhBcnJheSxcbiAgICB0b1VpbnQ4QXJyYXk6IHRvVWludDhBcnJheSxcbiAgICBleHRlbmRTdHJpbmc6IGV4dGVuZFN0cmluZyxcbiAgICBleHRlbmRVaW50OEFycmF5OiBleHRlbmRVaW50OEFycmF5LFxuICAgIGV4dGVuZEJ1aWx0aW5zOiBleHRlbmRCdWlsdGlucyxcbn07XG4vLyBtYWtlY2pzOkNVVCAvL1xuZXhwb3J0IHsgdmVyc2lvbiB9O1xuZXhwb3J0IHsgVkVSU0lPTiB9O1xuZXhwb3J0IHsgX2F0b2IgYXMgYXRvYiB9O1xuZXhwb3J0IHsgYXRvYlBvbHlmaWxsIH07XG5leHBvcnQgeyBfYnRvYSBhcyBidG9hIH07XG5leHBvcnQgeyBidG9hUG9seWZpbGwgfTtcbmV4cG9ydCB7IGRlY29kZSBhcyBmcm9tQmFzZTY0IH07XG5leHBvcnQgeyBlbmNvZGUgYXMgdG9CYXNlNjQgfTtcbmV4cG9ydCB7IHV0b2IgfTtcbmV4cG9ydCB7IGVuY29kZSB9O1xuZXhwb3J0IHsgZW5jb2RlVVJJIH07XG5leHBvcnQgeyBlbmNvZGVVUkkgYXMgZW5jb2RlVVJMIH07XG5leHBvcnQgeyBidG91IH07XG5leHBvcnQgeyBkZWNvZGUgfTtcbmV4cG9ydCB7IGlzVmFsaWQgfTtcbmV4cG9ydCB7IGZyb21VaW50OEFycmF5IH07XG5leHBvcnQgeyB0b1VpbnQ4QXJyYXkgfTtcbmV4cG9ydCB7IGV4dGVuZFN0cmluZyB9O1xuZXhwb3J0IHsgZXh0ZW5kVWludDhBcnJheSB9O1xuZXhwb3J0IHsgZXh0ZW5kQnVpbHRpbnMgfTtcbi8vIGFuZCBmaW5hbGx5LFxuZXhwb3J0IHsgZ0Jhc2U2NCBhcyBCYXNlNjQgfTtcbiIsICJpbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwianMtYmFzZTY0XCI7XG5pbXBvcnQgeyByZXF1ZXN0VXJsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRJY29uUGFja0J1bmRsZVVybCA9IChcbiAgcGF0aDogc3RyaW5nLFxuICBicmFuY2ggPSBcIm1hc3RlclwiLFxuICBhbHQgPSBmYWxzZSxcbikgPT5cbiAgYGh0dHBzOi8vJHtcbiAgICBhbHQgPyBcInJhdy5zdGF0aWNkbi5uZXRcIiA6IFwicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbVwiXG4gIH0vYWlkZW5seC9vYnNpZGlhbi1pY29uLXNob3J0Y29kZXMvJHticmFuY2h9LyR7cGF0aH1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIEljb25QYWNrTWFuaWZlc3RSYXcge1xuICBwYXRoOiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIHNlcmllczogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBsaWNlbnNlOiBzdHJpbmc7XG4gIGJ1bmRsZU5hbWU6IHN0cmluZztcbiAgcGFja0lkOiBzdHJpbmc7XG4gIGhvbWVwYWdlOiBzdHJpbmc7XG4gIHN0eWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBHaXRIdWJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlc3BvbnNlOiB7IG1lc3NhZ2U6IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoXCJHaXRIdWI6IFwiICsgcmVzcG9uc2UubWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldE1hbmlmZXN0VmlhQVBJID0gYXN5bmMgKGJyYW5jaCA9IFwibWFzdGVyXCIpID0+IHtcbiAgY29uc3QgdXJsID0gYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYWlkZW5seC9vYnNpZGlhbi1pY29uLXNob3J0Y29kZXMvZ2l0L3RyZWVzLyR7YnJhbmNofT9yZWN1cnNpdmU9MSYke0RhdGUubm93KCl9YDtcbiAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgcmVxdWVzdFVybCh7IHVybCB9KSkuanNvbjtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmVzcG9uc2UudHJlZSkpIHtcbiAgICBjb25zdCBtYW5pZmVzdFVybCA9IHJlc3BvbnNlLnRyZWUuZmluZChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0ucGF0aCA9PT0gXCJhc3NldHMvbWFuaWZlc3QuanNvblwiLFxuICAgICk/LnVybDtcbiAgICBpZiAoIW1hbmlmZXN0VXJsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG1hbmlmZXN0Lmpzb24gZm9yIGljb24gcGFjayBmb3VuZFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGF3YWl0IGdldEpTT05mcm9tQmxvYlVybChtYW5pZmVzdFVybCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBHaXRIdWJFcnJvcihyZXNwb25zZSk7XG4gIH1cbn07XG5cbmNvbnN0IGdldEpTT05mcm9tQmxvYlVybCA9IGFzeW5jIChcbiAgbWFuaWZlc3RVcmw6IHN0cmluZyxcbik6IFByb21pc2U8SWNvblBhY2tNYW5pZmVzdFJhd1tdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IHJlcXVlc3RVcmwoeyB1cmw6IG1hbmlmZXN0VXJsIH0pKS5qc29uO1xuICBpZiAocmVzcG9uc2UuZW5jb2RpbmcgJiYgcmVzcG9uc2UuY29udGVudCkge1xuICAgIGlmIChyZXNwb25zZS5lbmNvZGluZyA9PT0gXCJiYXNlNjRcIikge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlKHJlc3BvbnNlLmNvbnRlbnQpKSBhcyBJY29uUGFja01hbmlmZXN0UmF3W107XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UpO1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVuc3VwcG9ydGVkIGVuY29kaW5nXCIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgR2l0SHViRXJyb3IocmVzcG9uc2UpO1xuICB9XG59O1xuIiwgImV4cG9ydCB7IGRlZmF1bHQgYXMgYmxhbmsgfSBmcm9tICcuL2JsYW5rLnN2Zyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJhbGxzIH0gZnJvbSAnLi9sb2FkaW5nLWJhbGxzLnN2Zyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJhcnMgfSBmcm9tICcuL2xvYWRpbmctYmFycy5zdmcnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWJibGVzIH0gZnJvbSAnLi9sb2FkaW5nLWJ1YmJsZXMuc3ZnJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3ViZXMgfSBmcm9tICcuL2xvYWRpbmctY3ViZXMuc3ZnJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3lsb24gfSBmcm9tICcuL2xvYWRpbmctY3lsb24uc3ZnJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3BpbiB9IGZyb20gJy4vbG9hZGluZy1zcGluLnN2Zyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNwaW5uaW5nQnViYmxlcyB9IGZyb20gJy4vbG9hZGluZy1zcGlubmluZy1idWJibGVzLnN2Zyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNwb2tlcyB9IGZyb20gJy4vbG9hZGluZy1zcG9rZXMuc3ZnJztcbiIsICJpbXBvcnQgdHlwZSB7IEhUTUxQcm9wcyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCAqIGFzIHN2Z1NvdXJjZXMgZnJvbSBcInJlYWN0LWxvYWRpbmcvbGliL3N2Z1wiO1xuXG50eXBlIExvYWRpbmdUeXBlID1cbiAgfCBcImJsYW5rXCJcbiAgfCBcImJhbGxzXCJcbiAgfCBcImJhcnNcIlxuICB8IFwiYnViYmxlc1wiXG4gIHwgXCJjdWJlc1wiXG4gIHwgXCJjeWxvblwiXG4gIHwgXCJzcGluXCJcbiAgfCBcInNwaW5uaW5nQnViYmxlc1wiXG4gIHwgXCJzcG9rZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2FkaW5nUHJvcHMgZXh0ZW5kcyBIVE1MUHJvcHM8SFRNTERpdkVsZW1lbnQ+IHtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIC8qKiBpbiBtaWxpc2Vjb25kICovXG4gIGRlbGF5PzogbnVtYmVyO1xuICB0eXBlPzogTG9hZGluZ1R5cGU7XG4gIGhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcbiAgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmNvbnN0IExvYWRpbmcgPSAoe1xuICBjb2xvciA9IFwidmFyKC0taW50ZXJhY3RpdmUtYWNjZW50KVwiLFxuICBkZWxheSA9IDAsXG4gIHR5cGUgPSBcImJhbGxzXCIsXG4gIGhlaWdodCA9IDY0LFxuICB3aWR0aCA9IDY0LFxuICAuLi5yZXN0UHJvcHNcbn06IExvYWRpbmdQcm9wcykgPT4ge1xuICBjb25zdCBbZGVsYXllZCwgc2V0RGVsYXllZF0gPSB1c2VTdGF0ZShkZWxheSA+IDApO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCB0aW1lb3V0ID0gLTE7XG4gICAgaWYgKGRlbGF5ZWQpIHtcbiAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBzZXREZWxheWVkKGZhbHNlKSwgZGVsYXkpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNlbGVjdGVkVHlwZSA9IGRlbGF5ZWQgPyBcImJsYW5rXCIgOiB0eXBlO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGZpbGw6IGNvbG9yLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfX1cbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogc3ZnU291cmNlc1tzZWxlY3RlZFR5cGVdIH19XG4gICAgICB7Li4ucmVzdFByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuZXhwb3J0IGRlZmF1bHQgTG9hZGluZztcbiIsICJjb25zdCBlcnJvcnMgPSB7XG5cdDA6IFwiSWxsZWdhbCBzdGF0ZVwiLFxuXHQxOiBcIkltbWVyIGRyYWZ0cyBjYW5ub3QgaGF2ZSBjb21wdXRlZCBwcm9wZXJ0aWVzXCIsXG5cdDI6IFwiVGhpcyBvYmplY3QgaGFzIGJlZW4gZnJvemVuIGFuZCBzaG91bGQgbm90IGJlIG11dGF0ZWRcIixcblx0MyhkYXRhOiBhbnkpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0XCJDYW5ub3QgdXNlIGEgcHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkLiBEaWQgeW91IHBhc3MgYW4gb2JqZWN0IGZyb20gaW5zaWRlIGFuIGltbWVyIGZ1bmN0aW9uIHRvIGFuIGFzeW5jIHByb2Nlc3M/IFwiICtcblx0XHRcdGRhdGFcblx0XHQpXG5cdH0sXG5cdDQ6IFwiQW4gaW1tZXIgcHJvZHVjZXIgcmV0dXJuZWQgYSBuZXcgdmFsdWUgKmFuZCogbW9kaWZpZWQgaXRzIGRyYWZ0LiBFaXRoZXIgcmV0dXJuIGEgbmV3IHZhbHVlICpvciogbW9kaWZ5IHRoZSBkcmFmdC5cIixcblx0NTogXCJJbW1lciBmb3JiaWRzIGNpcmN1bGFyIHJlZmVyZW5jZXNcIixcblx0NjogXCJUaGUgZmlyc3Qgb3Igc2Vjb25kIGFyZ3VtZW50IHRvIGBwcm9kdWNlYCBtdXN0IGJlIGEgZnVuY3Rpb25cIixcblx0NzogXCJUaGUgdGhpcmQgYXJndW1lbnQgdG8gYHByb2R1Y2VgIG11c3QgYmUgYSBmdW5jdGlvbiBvciB1bmRlZmluZWRcIixcblx0ODogXCJGaXJzdCBhcmd1bWVudCB0byBgY3JlYXRlRHJhZnRgIG11c3QgYmUgYSBwbGFpbiBvYmplY3QsIGFuIGFycmF5LCBvciBhbiBpbW1lcmFibGUgb2JqZWN0XCIsXG5cdDk6IFwiRmlyc3QgYXJndW1lbnQgdG8gYGZpbmlzaERyYWZ0YCBtdXN0IGJlIGEgZHJhZnQgcmV0dXJuZWQgYnkgYGNyZWF0ZURyYWZ0YFwiLFxuXHQxMDogXCJUaGUgZ2l2ZW4gZHJhZnQgaXMgYWxyZWFkeSBmaW5hbGl6ZWRcIixcblx0MTE6IFwiT2JqZWN0LmRlZmluZVByb3BlcnR5KCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIixcblx0MTI6IFwiT2JqZWN0LnNldFByb3RvdHlwZU9mKCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIixcblx0MTM6IFwiSW1tZXIgb25seSBzdXBwb3J0cyBkZWxldGluZyBhcnJheSBpbmRpY2VzXCIsXG5cdDE0OiBcIkltbWVyIG9ubHkgc3VwcG9ydHMgc2V0dGluZyBhcnJheSBpbmRpY2VzIGFuZCB0aGUgJ2xlbmd0aCcgcHJvcGVydHlcIixcblx0MTUocGF0aDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIFwiQ2Fubm90IGFwcGx5IHBhdGNoLCBwYXRoIGRvZXNuJ3QgcmVzb2x2ZTogXCIgKyBwYXRoXG5cdH0sXG5cdDE2OiAnU2V0cyBjYW5ub3QgaGF2ZSBcInJlcGxhY2VcIiBwYXRjaGVzLicsXG5cdDE3KG9wOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gXCJVbnN1cHBvcnRlZCBwYXRjaCBvcGVyYXRpb246IFwiICsgb3Bcblx0fSxcblx0MTgocGx1Z2luOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gYFRoZSBwbHVnaW4gZm9yICcke3BsdWdpbn0nIGhhcyBub3QgYmVlbiBsb2FkZWQgaW50byBJbW1lci4gVG8gZW5hYmxlIHRoZSBwbHVnaW4sIGltcG9ydCBhbmQgY2FsbCBcXGBlbmFibGUke3BsdWdpbn0oKVxcYCB3aGVuIGluaXRpYWxpemluZyB5b3VyIGFwcGxpY2F0aW9uLmBcblx0fSxcblx0MjA6IFwiQ2Fubm90IHVzZSBwcm94aWVzIGlmIFByb3h5LCBQcm94eS5yZXZvY2FibGUgb3IgUmVmbGVjdCBhcmUgbm90IGF2YWlsYWJsZVwiLFxuXHQyMSh0aGluZzogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGBwcm9kdWNlIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiB0aGluZ3MgdGhhdCBhcmUgZHJhZnRhYmxlOiBwbGFpbiBvYmplY3RzLCBhcnJheXMsIE1hcCwgU2V0IG9yIGNsYXNzZXMgdGhhdCBhcmUgbWFya2VkIHdpdGggJ1tpbW1lcmFibGVdOiB0cnVlJy4gR290ICcke3RoaW5nfSdgXG5cdH0sXG5cdDIyKHRoaW5nOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gYCdjdXJyZW50JyBleHBlY3RzIGEgZHJhZnQsIGdvdDogJHt0aGluZ31gXG5cdH0sXG5cdDIzKHRoaW5nOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gYCdvcmlnaW5hbCcgZXhwZWN0cyBhIGRyYWZ0LCBnb3Q6ICR7dGhpbmd9YFxuXHR9LFxuXHQyNDogXCJQYXRjaGluZyByZXNlcnZlZCBhdHRyaWJ1dGVzIGxpa2UgX19wcm90b19fLCBwcm90b3R5cGUgYW5kIGNvbnN0cnVjdG9yIGlzIG5vdCBhbGxvd2VkXCJcbn0gYXMgY29uc3RcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZShlcnJvcjoga2V5b2YgdHlwZW9mIGVycm9ycywgLi4uYXJnczogYW55W10pOiBuZXZlciB7XG5cdGlmIChfX0RFVl9fKSB7XG5cdFx0Y29uc3QgZSA9IGVycm9yc1tlcnJvcl1cblx0XHRjb25zdCBtc2cgPSAhZVxuXHRcdFx0PyBcInVua25vd24gZXJyb3IgbnI6IFwiICsgZXJyb3Jcblx0XHRcdDogdHlwZW9mIGUgPT09IFwiZnVuY3Rpb25cIlxuXHRcdFx0PyBlLmFwcGx5KG51bGwsIGFyZ3MgYXMgYW55KVxuXHRcdFx0OiBlXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBbSW1tZXJdICR7bXNnfWApXG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdGBbSW1tZXJdIG1pbmlmaWVkIGVycm9yIG5yOiAke2Vycm9yfSR7XG5cdFx0XHRhcmdzLmxlbmd0aCA/IFwiIFwiICsgYXJncy5tYXAocyA9PiBgJyR7c30nYCkuam9pbihcIixcIikgOiBcIlwiXG5cdFx0fS4gRmluZCB0aGUgZnVsbCBlcnJvciBhdDogaHR0cHM6Ly9iaXQubHkvM2NYRUtXZmBcblx0KVxufVxuIiwgImltcG9ydCB7XG5cdERSQUZUX1NUQVRFLFxuXHREUkFGVEFCTEUsXG5cdGhhc1NldCxcblx0T2JqZWN0aXNoLFxuXHREcmFmdGVkLFxuXHRBbnlPYmplY3QsXG5cdEFueU1hcCxcblx0QW55U2V0LFxuXHRJbW1lclN0YXRlLFxuXHRoYXNNYXAsXG5cdEFyY2h0eXBlLFxuXHRkaWVcbn0gZnJvbSBcIi4uL2ludGVybmFsXCJcblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gSW1tZXIgZHJhZnQgKi9cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhdmFsdWUgJiYgISF2YWx1ZVtEUkFGVF9TVEFURV1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgY2FuIGJlIGRyYWZ0ZWQgYnkgSW1tZXIgKi9cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0YWJsZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdGlmICghdmFsdWUpIHJldHVybiBmYWxzZVxuXHRyZXR1cm4gKFxuXHRcdGlzUGxhaW5PYmplY3QodmFsdWUpIHx8XG5cdFx0QXJyYXkuaXNBcnJheSh2YWx1ZSkgfHxcblx0XHQhIXZhbHVlW0RSQUZUQUJMRV0gfHxcblx0XHQhIXZhbHVlLmNvbnN0cnVjdG9yW0RSQUZUQUJMRV0gfHxcblx0XHRpc01hcCh2YWx1ZSkgfHxcblx0XHRpc1NldCh2YWx1ZSlcblx0KVxufVxuXG5jb25zdCBvYmplY3RDdG9yU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci50b1N0cmluZygpXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2Vcblx0Y29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG5cdGlmIChwcm90byA9PT0gbnVsbCkge1xuXHRcdHJldHVybiB0cnVlXG5cdH1cblx0Y29uc3QgQ3RvciA9XG5cdFx0T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocHJvdG8sIFwiY29uc3RydWN0b3JcIikgJiYgcHJvdG8uY29uc3RydWN0b3JcblxuXHRpZiAoQ3RvciA9PT0gT2JqZWN0KSByZXR1cm4gdHJ1ZVxuXG5cdHJldHVybiAoXG5cdFx0dHlwZW9mIEN0b3IgPT0gXCJmdW5jdGlvblwiICYmXG5cdFx0RnVuY3Rpb24udG9TdHJpbmcuY2FsbChDdG9yKSA9PT0gb2JqZWN0Q3RvclN0cmluZ1xuXHQpXG59XG5cbi8qKiBHZXQgdGhlIHVuZGVybHlpbmcgb2JqZWN0IHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGRyYWZ0ICovXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gb3JpZ2luYWw8VD4odmFsdWU6IFQpOiBUIHwgdW5kZWZpbmVkXG5leHBvcnQgZnVuY3Rpb24gb3JpZ2luYWwodmFsdWU6IERyYWZ0ZWQ8YW55Pik6IGFueSB7XG5cdGlmICghaXNEcmFmdCh2YWx1ZSkpIGRpZSgyMywgdmFsdWUpXG5cdHJldHVybiB2YWx1ZVtEUkFGVF9TVEFURV0uYmFzZV9cbn1cblxuLyojX19QVVJFX18qL1xuZXhwb3J0IGNvbnN0IG93bktleXM6ICh0YXJnZXQ6IEFueU9iamVjdCkgPT4gUHJvcGVydHlLZXlbXSA9XG5cdHR5cGVvZiBSZWZsZWN0ICE9PSBcInVuZGVmaW5lZFwiICYmIFJlZmxlY3Qub3duS2V5c1xuXHRcdD8gUmVmbGVjdC5vd25LZXlzXG5cdFx0OiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAhPT0gXCJ1bmRlZmluZWRcIlxuXHRcdD8gb2JqID0+XG5cdFx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuY29uY2F0KFxuXHRcdFx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqKSBhcyBhbnlcblx0XHRcdFx0KVxuXHRcdDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcblxuZXhwb3J0IGNvbnN0IGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPVxuXHRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyB8fFxuXHRmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRhcmdldDogYW55KSB7XG5cdFx0Ly8gUG9seWZpbGwgbmVlZGVkIGZvciBIZXJtZXMgYW5kIElFLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2hlcm1lcy9pc3N1ZXMvMjc0XG5cdFx0Y29uc3QgcmVzOiBhbnkgPSB7fVxuXHRcdG93bktleXModGFyZ2V0KS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRyZXNba2V5XSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpXG5cdFx0fSlcblx0XHRyZXR1cm4gcmVzXG5cdH1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2g8VCBleHRlbmRzIE9iamVjdGlzaD4oXG5cdG9iajogVCxcblx0aXRlcjogKGtleTogc3RyaW5nIHwgbnVtYmVyLCB2YWx1ZTogYW55LCBzb3VyY2U6IFQpID0+IHZvaWQsXG5cdGVudW1lcmFibGVPbmx5PzogYm9vbGVhblxuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGVhY2gob2JqOiBhbnksIGl0ZXI6IGFueSwgZW51bWVyYWJsZU9ubHkgPSBmYWxzZSkge1xuXHRpZiAoZ2V0QXJjaHR5cGUob2JqKSA9PT0gQXJjaHR5cGUuT2JqZWN0KSB7XG5cdFx0OyhlbnVtZXJhYmxlT25seSA/IE9iamVjdC5rZXlzIDogb3duS2V5cykob2JqKS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRpZiAoIWVudW1lcmFibGVPbmx5IHx8IHR5cGVvZiBrZXkgIT09IFwic3ltYm9sXCIpIGl0ZXIoa2V5LCBvYmpba2V5XSwgb2JqKVxuXHRcdH0pXG5cdH0gZWxzZSB7XG5cdFx0b2JqLmZvckVhY2goKGVudHJ5OiBhbnksIGluZGV4OiBhbnkpID0+IGl0ZXIoaW5kZXgsIGVudHJ5LCBvYmopKVxuXHR9XG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcmNodHlwZSh0aGluZzogYW55KTogQXJjaHR5cGUge1xuXHQvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHRjb25zdCBzdGF0ZTogdW5kZWZpbmVkIHwgSW1tZXJTdGF0ZSA9IHRoaW5nW0RSQUZUX1NUQVRFXVxuXHRyZXR1cm4gc3RhdGVcblx0XHQ/IHN0YXRlLnR5cGVfID4gM1xuXHRcdFx0PyBzdGF0ZS50eXBlXyAtIDQgLy8gY2F1c2UgT2JqZWN0IGFuZCBBcnJheSBtYXAgYmFjayBmcm9tIDQgYW5kIDVcblx0XHRcdDogKHN0YXRlLnR5cGVfIGFzIGFueSkgLy8gb3RoZXJzIGFyZSB0aGUgc2FtZVxuXHRcdDogQXJyYXkuaXNBcnJheSh0aGluZylcblx0XHQ/IEFyY2h0eXBlLkFycmF5XG5cdFx0OiBpc01hcCh0aGluZylcblx0XHQ/IEFyY2h0eXBlLk1hcFxuXHRcdDogaXNTZXQodGhpbmcpXG5cdFx0PyBBcmNodHlwZS5TZXRcblx0XHQ6IEFyY2h0eXBlLk9iamVjdFxufVxuXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gaGFzKHRoaW5nOiBhbnksIHByb3A6IFByb3BlcnR5S2V5KTogYm9vbGVhbiB7XG5cdHJldHVybiBnZXRBcmNodHlwZSh0aGluZykgPT09IEFyY2h0eXBlLk1hcFxuXHRcdD8gdGhpbmcuaGFzKHByb3ApXG5cdFx0OiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpbmcsIHByb3ApXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXQodGhpbmc6IEFueU1hcCB8IEFueU9iamVjdCwgcHJvcDogUHJvcGVydHlLZXkpOiBhbnkge1xuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiBnZXRBcmNodHlwZSh0aGluZykgPT09IEFyY2h0eXBlLk1hcCA/IHRoaW5nLmdldChwcm9wKSA6IHRoaW5nW3Byb3BdXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXQodGhpbmc6IGFueSwgcHJvcE9yT2xkVmFsdWU6IFByb3BlcnR5S2V5LCB2YWx1ZTogYW55KSB7XG5cdGNvbnN0IHQgPSBnZXRBcmNodHlwZSh0aGluZylcblx0aWYgKHQgPT09IEFyY2h0eXBlLk1hcCkgdGhpbmcuc2V0KHByb3BPck9sZFZhbHVlLCB2YWx1ZSlcblx0ZWxzZSBpZiAodCA9PT0gQXJjaHR5cGUuU2V0KSB7XG5cdFx0dGhpbmcuZGVsZXRlKHByb3BPck9sZFZhbHVlKVxuXHRcdHRoaW5nLmFkZCh2YWx1ZSlcblx0fSBlbHNlIHRoaW5nW3Byb3BPck9sZFZhbHVlXSA9IHZhbHVlXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpcyh4OiBhbnksIHk6IGFueSk6IGJvb2xlYW4ge1xuXHQvLyBGcm9tOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmJqcy9ibG9iL2M2OTkwNGE1MTFiOTAwMjY2OTM1MTY4MjIzMDYzZGQ4NzcyZGZjNDAvcGFja2FnZXMvZmJqcy9zcmMvY29yZS9zaGFsbG93RXF1YWwuanNcblx0aWYgKHggPT09IHkpIHtcblx0XHRyZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHlcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5XG5cdH1cbn1cblxuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTWFwKHRhcmdldDogYW55KTogdGFyZ2V0IGlzIEFueU1hcCB7XG5cdHJldHVybiBoYXNNYXAgJiYgdGFyZ2V0IGluc3RhbmNlb2YgTWFwXG59XG5cbi8qI19fUFVSRV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NldCh0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBBbnlTZXQge1xuXHRyZXR1cm4gaGFzU2V0ICYmIHRhcmdldCBpbnN0YW5jZW9mIFNldFxufVxuLyojX19QVVJFX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGxhdGVzdChzdGF0ZTogSW1tZXJTdGF0ZSk6IGFueSB7XG5cdHJldHVybiBzdGF0ZS5jb3B5XyB8fCBzdGF0ZS5iYXNlX1xufVxuXG4vKiNfX1BVUkVfXyovXG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvd0NvcHkoYmFzZTogYW55KSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGJhc2UpKSByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYmFzZSlcblx0Y29uc3QgZGVzY3JpcHRvcnMgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGJhc2UpXG5cdGRlbGV0ZSBkZXNjcmlwdG9yc1tEUkFGVF9TVEFURSBhcyBhbnldXG5cdGxldCBrZXlzID0gb3duS2V5cyhkZXNjcmlwdG9ycylcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3Qga2V5OiBhbnkgPSBrZXlzW2ldXG5cdFx0Y29uc3QgZGVzYyA9IGRlc2NyaXB0b3JzW2tleV1cblx0XHRpZiAoZGVzYy53cml0YWJsZSA9PT0gZmFsc2UpIHtcblx0XHRcdGRlc2Mud3JpdGFibGUgPSB0cnVlXG5cdFx0XHRkZXNjLmNvbmZpZ3VyYWJsZSA9IHRydWVcblx0XHR9XG5cdFx0Ly8gbGlrZSBvYmplY3QuYXNzaWduLCB3ZSB3aWxsIHJlYWQgYW55IF9vd25fLCBnZXQvc2V0IGFjY2Vzc29ycy4gVGhpcyBoZWxwcyBpbiBkZWFsaW5nXG5cdFx0Ly8gd2l0aCBsaWJyYXJpZXMgdGhhdCB0cmFwIHZhbHVlcywgbGlrZSBtb2J4IG9yIHZ1ZVxuXHRcdC8vIHVubGlrZSBvYmplY3QuYXNzaWduLCBub24tZW51bWVyYWJsZXMgd2lsbCBiZSBjb3BpZWQgYXMgd2VsbFxuXHRcdGlmIChkZXNjLmdldCB8fCBkZXNjLnNldClcblx0XHRcdGRlc2NyaXB0b3JzW2tleV0gPSB7XG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0d3JpdGFibGU6IHRydWUsIC8vIGNvdWxkIGxpdmUgd2l0aCAhIWRlc2Muc2V0IGFzIHdlbGwgaGVyZS4uLlxuXHRcdFx0XHRlbnVtZXJhYmxlOiBkZXNjLmVudW1lcmFibGUsXG5cdFx0XHRcdHZhbHVlOiBiYXNlW2tleV1cblx0XHRcdH1cblx0fVxuXHRyZXR1cm4gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoYmFzZSksIGRlc2NyaXB0b3JzKVxufVxuXG4vKipcbiAqIEZyZWV6ZXMgZHJhZnRhYmxlIG9iamVjdHMuIFJldHVybnMgdGhlIG9yaWdpbmFsIG9iamVjdC5cbiAqIEJ5IGRlZmF1bHQgZnJlZXplcyBzaGFsbG93bHksIGJ1dCBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGB0cnVlYCBpdCB3aWxsIGZyZWV6ZSByZWN1cnNpdmVseS5cbiAqXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0gZGVlcFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJlZXplPFQ+KG9iajogVCwgZGVlcD86IGJvb2xlYW4pOiBUXG5leHBvcnQgZnVuY3Rpb24gZnJlZXplPFQ+KG9iajogYW55LCBkZWVwOiBib29sZWFuID0gZmFsc2UpOiBUIHtcblx0aWYgKGlzRnJvemVuKG9iaikgfHwgaXNEcmFmdChvYmopIHx8ICFpc0RyYWZ0YWJsZShvYmopKSByZXR1cm4gb2JqXG5cdGlmIChnZXRBcmNodHlwZShvYmopID4gMSAvKiBNYXAgb3IgU2V0ICovKSB7XG5cdFx0b2JqLnNldCA9IG9iai5hZGQgPSBvYmouY2xlYXIgPSBvYmouZGVsZXRlID0gZG9udE11dGF0ZUZyb3plbkNvbGxlY3Rpb25zIGFzIGFueVxuXHR9XG5cdE9iamVjdC5mcmVlemUob2JqKVxuXHRpZiAoZGVlcCkgZWFjaChvYmosIChrZXksIHZhbHVlKSA9PiBmcmVlemUodmFsdWUsIHRydWUpLCB0cnVlKVxuXHRyZXR1cm4gb2JqXG59XG5cbmZ1bmN0aW9uIGRvbnRNdXRhdGVGcm96ZW5Db2xsZWN0aW9ucygpIHtcblx0ZGllKDIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zyb3plbihvYmo6IGFueSk6IGJvb2xlYW4ge1xuXHRpZiAob2JqID09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHRydWVcblx0Ly8gU2VlICM2MDAsIElFIGRpZXMgb24gbm9uLW9iamVjdHMgaW4gT2JqZWN0LmlzRnJvemVuXG5cdHJldHVybiBPYmplY3QuaXNGcm96ZW4ob2JqKVxufVxuIiwgImltcG9ydCB7XG5cdEltbWVyU3RhdGUsXG5cdFBhdGNoLFxuXHRJbW1lclNjb3BlLFxuXHREcmFmdGVkLFxuXHRBbnlPYmplY3QsXG5cdEltbWVyQmFzZVN0YXRlLFxuXHRBbnlNYXAsXG5cdEFueVNldCxcblx0UHJveHlUeXBlLFxuXHRkaWVcbn0gZnJvbSBcIi4uL2ludGVybmFsXCJcblxuLyoqIFBsdWdpbiB1dGlsaXRpZXMgKi9cbmNvbnN0IHBsdWdpbnM6IHtcblx0UGF0Y2hlcz86IHtcblx0XHRnZW5lcmF0ZVBhdGNoZXNfKFxuXHRcdFx0c3RhdGU6IEltbWVyU3RhdGUsXG5cdFx0XHRiYXNlUGF0aDogUGF0Y2hQYXRoLFxuXHRcdFx0cGF0Y2hlczogUGF0Y2hbXSxcblx0XHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdFx0KTogdm9pZFxuXHRcdGdlbmVyYXRlUmVwbGFjZW1lbnRQYXRjaGVzXyhcblx0XHRcdGJhc2U6IGFueSxcblx0XHRcdHJlcGxhY2VtZW50OiBhbnksXG5cdFx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdFx0aW52ZXJzZVBhdGNoZXM6IFBhdGNoW11cblx0XHQpOiB2b2lkXG5cdFx0YXBwbHlQYXRjaGVzXzxUPihkcmFmdDogVCwgcGF0Y2hlczogUGF0Y2hbXSk6IFRcblx0fVxuXHRFUzU/OiB7XG5cdFx0d2lsbEZpbmFsaXplRVM1XyhzY29wZTogSW1tZXJTY29wZSwgcmVzdWx0OiBhbnksIGlzUmVwbGFjZWQ6IGJvb2xlYW4pOiB2b2lkXG5cdFx0Y3JlYXRlRVM1UHJveHlfPFQ+KFxuXHRcdFx0YmFzZTogVCxcblx0XHRcdHBhcmVudD86IEltbWVyU3RhdGVcblx0XHQpOiBEcmFmdGVkPFQsIEVTNU9iamVjdFN0YXRlIHwgRVM1QXJyYXlTdGF0ZT5cblx0XHRoYXNDaGFuZ2VzXyhzdGF0ZTogRVM1QXJyYXlTdGF0ZSB8IEVTNU9iamVjdFN0YXRlKTogYm9vbGVhblxuXHR9XG5cdE1hcFNldD86IHtcblx0XHRwcm94eU1hcF88VCBleHRlbmRzIEFueU1hcD4odGFyZ2V0OiBULCBwYXJlbnQ/OiBJbW1lclN0YXRlKTogVFxuXHRcdHByb3h5U2V0XzxUIGV4dGVuZHMgQW55U2V0Pih0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUXG5cdH1cbn0gPSB7fVxuXG50eXBlIFBsdWdpbnMgPSB0eXBlb2YgcGx1Z2luc1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luPEsgZXh0ZW5kcyBrZXlvZiBQbHVnaW5zPihcblx0cGx1Z2luS2V5OiBLXG4pOiBFeGNsdWRlPFBsdWdpbnNbS10sIHVuZGVmaW5lZD4ge1xuXHRjb25zdCBwbHVnaW4gPSBwbHVnaW5zW3BsdWdpbktleV1cblx0aWYgKCFwbHVnaW4pIHtcblx0XHRkaWUoMTgsIHBsdWdpbktleSlcblx0fVxuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiBwbHVnaW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQbHVnaW48SyBleHRlbmRzIGtleW9mIFBsdWdpbnM+KFxuXHRwbHVnaW5LZXk6IEssXG5cdGltcGxlbWVudGF0aW9uOiBQbHVnaW5zW0tdXG4pOiB2b2lkIHtcblx0aWYgKCFwbHVnaW5zW3BsdWdpbktleV0pIHBsdWdpbnNbcGx1Z2luS2V5XSA9IGltcGxlbWVudGF0aW9uXG59XG5cbi8qKiBFUzUgUGx1Z2luICovXG5cbmludGVyZmFjZSBFUzVCYXNlU3RhdGUgZXh0ZW5kcyBJbW1lckJhc2VTdGF0ZSB7XG5cdGFzc2lnbmVkXzoge1trZXk6IHN0cmluZ106IGFueX1cblx0cGFyZW50Xz86IEltbWVyU3RhdGVcblx0cmV2b2tlZF86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFUzVPYmplY3RTdGF0ZSBleHRlbmRzIEVTNUJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBQcm94eVR5cGUuRVM1T2JqZWN0XG5cdGRyYWZ0XzogRHJhZnRlZDxBbnlPYmplY3QsIEVTNU9iamVjdFN0YXRlPlxuXHRiYXNlXzogQW55T2JqZWN0XG5cdGNvcHlfOiBBbnlPYmplY3QgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRVM1QXJyYXlTdGF0ZSBleHRlbmRzIEVTNUJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBQcm94eVR5cGUuRVM1QXJyYXlcblx0ZHJhZnRfOiBEcmFmdGVkPEFueU9iamVjdCwgRVM1QXJyYXlTdGF0ZT5cblx0YmFzZV86IGFueVxuXHRjb3B5XzogYW55XG59XG5cbi8qKiBNYXAgLyBTZXQgcGx1Z2luICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwU3RhdGUgZXh0ZW5kcyBJbW1lckJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBQcm94eVR5cGUuTWFwXG5cdGNvcHlfOiBBbnlNYXAgfCB1bmRlZmluZWRcblx0YXNzaWduZWRfOiBNYXA8YW55LCBib29sZWFuPiB8IHVuZGVmaW5lZFxuXHRiYXNlXzogQW55TWFwXG5cdHJldm9rZWRfOiBib29sZWFuXG5cdGRyYWZ0XzogRHJhZnRlZDxBbnlNYXAsIE1hcFN0YXRlPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldFN0YXRlIGV4dGVuZHMgSW1tZXJCYXNlU3RhdGUge1xuXHR0eXBlXzogUHJveHlUeXBlLlNldFxuXHRjb3B5XzogQW55U2V0IHwgdW5kZWZpbmVkXG5cdGJhc2VfOiBBbnlTZXRcblx0ZHJhZnRzXzogTWFwPGFueSwgRHJhZnRlZD4gLy8gbWFwcyB0aGUgb3JpZ2luYWwgdmFsdWUgdG8gdGhlIGRyYWZ0IHZhbHVlIGluIHRoZSBuZXcgc2V0XG5cdHJldm9rZWRfOiBib29sZWFuXG5cdGRyYWZ0XzogRHJhZnRlZDxBbnlTZXQsIFNldFN0YXRlPlxufVxuXG4vKiogUGF0Y2hlcyBwbHVnaW4gKi9cblxuZXhwb3J0IHR5cGUgUGF0Y2hQYXRoID0gKHN0cmluZyB8IG51bWJlcilbXVxuIiwgImltcG9ydCB7XG5cdFBhdGNoLFxuXHRQYXRjaExpc3RlbmVyLFxuXHREcmFmdGVkLFxuXHRJbW1lcixcblx0RFJBRlRfU1RBVEUsXG5cdEltbWVyU3RhdGUsXG5cdFByb3h5VHlwZSxcblx0Z2V0UGx1Z2luXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5pbXBvcnQge2RpZX0gZnJvbSBcIi4uL3V0aWxzL2Vycm9yc1wiXG5cbi8qKiBFYWNoIHNjb3BlIHJlcHJlc2VudHMgYSBgcHJvZHVjZWAgY2FsbC4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJbW1lclNjb3BlIHtcblx0cGF0Y2hlc18/OiBQYXRjaFtdXG5cdGludmVyc2VQYXRjaGVzXz86IFBhdGNoW11cblx0Y2FuQXV0b0ZyZWV6ZV86IGJvb2xlYW5cblx0ZHJhZnRzXzogYW55W11cblx0cGFyZW50Xz86IEltbWVyU2NvcGVcblx0cGF0Y2hMaXN0ZW5lcl8/OiBQYXRjaExpc3RlbmVyXG5cdGltbWVyXzogSW1tZXJcblx0dW5maW5hbGl6ZWREcmFmdHNfOiBudW1iZXJcbn1cblxubGV0IGN1cnJlbnRTY29wZTogSW1tZXJTY29wZSB8IHVuZGVmaW5lZFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkge1xuXHRpZiAoX19ERVZfXyAmJiAhY3VycmVudFNjb3BlKSBkaWUoMClcblx0cmV0dXJuIGN1cnJlbnRTY29wZSFcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2NvcGUoXG5cdHBhcmVudF86IEltbWVyU2NvcGUgfCB1bmRlZmluZWQsXG5cdGltbWVyXzogSW1tZXJcbik6IEltbWVyU2NvcGUge1xuXHRyZXR1cm4ge1xuXHRcdGRyYWZ0c186IFtdLFxuXHRcdHBhcmVudF8sXG5cdFx0aW1tZXJfLFxuXHRcdC8vIFdoZW5ldmVyIHRoZSBtb2RpZmllZCBkcmFmdCBjb250YWlucyBhIGRyYWZ0IGZyb20gYW5vdGhlciBzY29wZSwgd2Vcblx0XHQvLyBuZWVkIHRvIHByZXZlbnQgYXV0by1mcmVlemluZyBzbyB0aGUgdW5vd25lZCBkcmFmdCBjYW4gYmUgZmluYWxpemVkLlxuXHRcdGNhbkF1dG9GcmVlemVfOiB0cnVlLFxuXHRcdHVuZmluYWxpemVkRHJhZnRzXzogMFxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYXRjaGVzSW5TY29wZShcblx0c2NvcGU6IEltbWVyU2NvcGUsXG5cdHBhdGNoTGlzdGVuZXI/OiBQYXRjaExpc3RlbmVyXG4pIHtcblx0aWYgKHBhdGNoTGlzdGVuZXIpIHtcblx0XHRnZXRQbHVnaW4oXCJQYXRjaGVzXCIpIC8vIGFzc2VydCB3ZSBoYXZlIHRoZSBwbHVnaW5cblx0XHRzY29wZS5wYXRjaGVzXyA9IFtdXG5cdFx0c2NvcGUuaW52ZXJzZVBhdGNoZXNfID0gW11cblx0XHRzY29wZS5wYXRjaExpc3RlbmVyXyA9IHBhdGNoTGlzdGVuZXJcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV2b2tlU2NvcGUoc2NvcGU6IEltbWVyU2NvcGUpIHtcblx0bGVhdmVTY29wZShzY29wZSlcblx0c2NvcGUuZHJhZnRzXy5mb3JFYWNoKHJldm9rZURyYWZ0KVxuXHQvLyBAdHMtaWdub3JlXG5cdHNjb3BlLmRyYWZ0c18gPSBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZWF2ZVNjb3BlKHNjb3BlOiBJbW1lclNjb3BlKSB7XG5cdGlmIChzY29wZSA9PT0gY3VycmVudFNjb3BlKSB7XG5cdFx0Y3VycmVudFNjb3BlID0gc2NvcGUucGFyZW50X1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRlclNjb3BlKGltbWVyOiBJbW1lcikge1xuXHRyZXR1cm4gKGN1cnJlbnRTY29wZSA9IGNyZWF0ZVNjb3BlKGN1cnJlbnRTY29wZSwgaW1tZXIpKVxufVxuXG5mdW5jdGlvbiByZXZva2VEcmFmdChkcmFmdDogRHJhZnRlZCkge1xuXHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSA9IGRyYWZ0W0RSQUZUX1NUQVRFXVxuXHRpZiAoXG5cdFx0c3RhdGUudHlwZV8gPT09IFByb3h5VHlwZS5Qcm94eU9iamVjdCB8fFxuXHRcdHN0YXRlLnR5cGVfID09PSBQcm94eVR5cGUuUHJveHlBcnJheVxuXHQpXG5cdFx0c3RhdGUucmV2b2tlXygpXG5cdGVsc2Ugc3RhdGUucmV2b2tlZF8gPSB0cnVlXG59XG4iLCAiaW1wb3J0IHtcblx0SW1tZXJTY29wZSxcblx0RFJBRlRfU1RBVEUsXG5cdGlzRHJhZnRhYmxlLFxuXHROT1RISU5HLFxuXHRQYXRjaFBhdGgsXG5cdGVhY2gsXG5cdGhhcyxcblx0ZnJlZXplLFxuXHRJbW1lclN0YXRlLFxuXHRpc0RyYWZ0LFxuXHRTZXRTdGF0ZSxcblx0c2V0LFxuXHRQcm94eVR5cGUsXG5cdGdldFBsdWdpbixcblx0ZGllLFxuXHRyZXZva2VTY29wZSxcblx0aXNGcm96ZW4sXG5cdHNoYWxsb3dDb3B5XG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzUmVzdWx0KHJlc3VsdDogYW55LCBzY29wZTogSW1tZXJTY29wZSkge1xuXHRzY29wZS51bmZpbmFsaXplZERyYWZ0c18gPSBzY29wZS5kcmFmdHNfLmxlbmd0aFxuXHRjb25zdCBiYXNlRHJhZnQgPSBzY29wZS5kcmFmdHNfIVswXVxuXHRjb25zdCBpc1JlcGxhY2VkID0gcmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0ICE9PSBiYXNlRHJhZnRcblx0aWYgKCFzY29wZS5pbW1lcl8udXNlUHJveGllc18pXG5cdFx0Z2V0UGx1Z2luKFwiRVM1XCIpLndpbGxGaW5hbGl6ZUVTNV8oc2NvcGUsIHJlc3VsdCwgaXNSZXBsYWNlZClcblx0aWYgKGlzUmVwbGFjZWQpIHtcblx0XHRpZiAoYmFzZURyYWZ0W0RSQUZUX1NUQVRFXS5tb2RpZmllZF8pIHtcblx0XHRcdHJldm9rZVNjb3BlKHNjb3BlKVxuXHRcdFx0ZGllKDQpXG5cdFx0fVxuXHRcdGlmIChpc0RyYWZ0YWJsZShyZXN1bHQpKSB7XG5cdFx0XHQvLyBGaW5hbGl6ZSB0aGUgcmVzdWx0IGluIGNhc2UgaXQgY29udGFpbnMgKG9yIGlzKSBhIHN1YnNldCBvZiB0aGUgZHJhZnQuXG5cdFx0XHRyZXN1bHQgPSBmaW5hbGl6ZShzY29wZSwgcmVzdWx0KVxuXHRcdFx0aWYgKCFzY29wZS5wYXJlbnRfKSBtYXliZUZyZWV6ZShzY29wZSwgcmVzdWx0KVxuXHRcdH1cblx0XHRpZiAoc2NvcGUucGF0Y2hlc18pIHtcblx0XHRcdGdldFBsdWdpbihcIlBhdGNoZXNcIikuZ2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKFxuXHRcdFx0XHRiYXNlRHJhZnRbRFJBRlRfU1RBVEVdLmJhc2VfLFxuXHRcdFx0XHRyZXN1bHQsXG5cdFx0XHRcdHNjb3BlLnBhdGNoZXNfLFxuXHRcdFx0XHRzY29wZS5pbnZlcnNlUGF0Y2hlc18hXG5cdFx0XHQpXG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIEZpbmFsaXplIHRoZSBiYXNlIGRyYWZ0LlxuXHRcdHJlc3VsdCA9IGZpbmFsaXplKHNjb3BlLCBiYXNlRHJhZnQsIFtdKVxuXHR9XG5cdHJldm9rZVNjb3BlKHNjb3BlKVxuXHRpZiAoc2NvcGUucGF0Y2hlc18pIHtcblx0XHRzY29wZS5wYXRjaExpc3RlbmVyXyEoc2NvcGUucGF0Y2hlc18sIHNjb3BlLmludmVyc2VQYXRjaGVzXyEpXG5cdH1cblx0cmV0dXJuIHJlc3VsdCAhPT0gTk9USElORyA/IHJlc3VsdCA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBmaW5hbGl6ZShyb290U2NvcGU6IEltbWVyU2NvcGUsIHZhbHVlOiBhbnksIHBhdGg/OiBQYXRjaFBhdGgpIHtcblx0Ly8gRG9uJ3QgcmVjdXJzZSBpbiB0aG8gcmVjdXJzaXZlIGRhdGEgc3RydWN0dXJlc1xuXHRpZiAoaXNGcm96ZW4odmFsdWUpKSByZXR1cm4gdmFsdWVcblxuXHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSA9IHZhbHVlW0RSQUZUX1NUQVRFXVxuXHQvLyBBIHBsYWluIG9iamVjdCwgbWlnaHQgbmVlZCBmcmVlemluZywgbWlnaHQgY29udGFpbiBkcmFmdHNcblx0aWYgKCFzdGF0ZSkge1xuXHRcdGVhY2goXG5cdFx0XHR2YWx1ZSxcblx0XHRcdChrZXksIGNoaWxkVmFsdWUpID0+XG5cdFx0XHRcdGZpbmFsaXplUHJvcGVydHkocm9vdFNjb3BlLCBzdGF0ZSwgdmFsdWUsIGtleSwgY2hpbGRWYWx1ZSwgcGF0aCksXG5cdFx0XHR0cnVlIC8vIFNlZSAjNTkwLCBkb24ndCByZWN1cnNlIGludG8gbm9uLWVudW1lcmFibGUgb2Ygbm9uIGRyYWZ0ZWQgb2JqZWN0c1xuXHRcdClcblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXHQvLyBOZXZlciBmaW5hbGl6ZSBkcmFmdHMgb3duZWQgYnkgYW5vdGhlciBzY29wZS5cblx0aWYgKHN0YXRlLnNjb3BlXyAhPT0gcm9vdFNjb3BlKSByZXR1cm4gdmFsdWVcblx0Ly8gVW5tb2RpZmllZCBkcmFmdCwgcmV0dXJuIHRoZSAoZnJvemVuKSBvcmlnaW5hbFxuXHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdG1heWJlRnJlZXplKHJvb3RTY29wZSwgc3RhdGUuYmFzZV8sIHRydWUpXG5cdFx0cmV0dXJuIHN0YXRlLmJhc2VfXG5cdH1cblx0Ly8gTm90IGZpbmFsaXplZCB5ZXQsIGxldCdzIGRvIHRoYXQgbm93XG5cdGlmICghc3RhdGUuZmluYWxpemVkXykge1xuXHRcdHN0YXRlLmZpbmFsaXplZF8gPSB0cnVlXG5cdFx0c3RhdGUuc2NvcGVfLnVuZmluYWxpemVkRHJhZnRzXy0tXG5cdFx0Y29uc3QgcmVzdWx0ID1cblx0XHRcdC8vIEZvciBFUzUsIGNyZWF0ZSBhIGdvb2QgY29weSBmcm9tIHRoZSBkcmFmdCBmaXJzdCwgd2l0aCBhZGRlZCBrZXlzIGFuZCB3aXRob3V0IGRlbGV0ZWQga2V5cy5cblx0XHRcdHN0YXRlLnR5cGVfID09PSBQcm94eVR5cGUuRVM1T2JqZWN0IHx8IHN0YXRlLnR5cGVfID09PSBQcm94eVR5cGUuRVM1QXJyYXlcblx0XHRcdFx0PyAoc3RhdGUuY29weV8gPSBzaGFsbG93Q29weShzdGF0ZS5kcmFmdF8pKVxuXHRcdFx0XHQ6IHN0YXRlLmNvcHlfXG5cdFx0Ly8gRmluYWxpemUgYWxsIGNoaWxkcmVuIG9mIHRoZSBjb3B5XG5cdFx0Ly8gRm9yIHNldHMgd2UgY2xvbmUgYmVmb3JlIGl0ZXJhdGluZywgb3RoZXJ3aXNlIHdlIGNhbiBnZXQgaW4gZW5kbGVzcyBsb29wIGR1ZSB0byBtb2RpZnlpbmcgZHVyaW5nIGl0ZXJhdGlvbiwgc2VlICM2Mjhcblx0XHQvLyBBbHRob3VnaCB0aGUgb3JpZ2luYWwgdGVzdCBjYXNlIGRvZXNuJ3Qgc2VlbSB2YWxpZCBhbnl3YXksIHNvIGlmIHRoaXMgaW4gdGhlIHdheSB3ZSBjYW4gdHVybiB0aGUgbmV4dCBsaW5lXG5cdFx0Ly8gYmFjayB0byBlYWNoKHJlc3VsdCwgLi4uLilcblx0XHRlYWNoKFxuXHRcdFx0c3RhdGUudHlwZV8gPT09IFByb3h5VHlwZS5TZXQgPyBuZXcgU2V0KHJlc3VsdCkgOiByZXN1bHQsXG5cdFx0XHQoa2V5LCBjaGlsZFZhbHVlKSA9PlxuXHRcdFx0XHRmaW5hbGl6ZVByb3BlcnR5KHJvb3RTY29wZSwgc3RhdGUsIHJlc3VsdCwga2V5LCBjaGlsZFZhbHVlLCBwYXRoKVxuXHRcdClcblx0XHQvLyBldmVyeXRoaW5nIGluc2lkZSBpcyBmcm96ZW4sIHdlIGNhbiBmcmVlemUgaGVyZVxuXHRcdG1heWJlRnJlZXplKHJvb3RTY29wZSwgcmVzdWx0LCBmYWxzZSlcblx0XHQvLyBmaXJzdCB0aW1lIGZpbmFsaXppbmcsIGxldCdzIGNyZWF0ZSB0aG9zZSBwYXRjaGVzXG5cdFx0aWYgKHBhdGggJiYgcm9vdFNjb3BlLnBhdGNoZXNfKSB7XG5cdFx0XHRnZXRQbHVnaW4oXCJQYXRjaGVzXCIpLmdlbmVyYXRlUGF0Y2hlc18oXG5cdFx0XHRcdHN0YXRlLFxuXHRcdFx0XHRwYXRoLFxuXHRcdFx0XHRyb290U2NvcGUucGF0Y2hlc18sXG5cdFx0XHRcdHJvb3RTY29wZS5pbnZlcnNlUGF0Y2hlc18hXG5cdFx0XHQpXG5cdFx0fVxuXHR9XG5cdHJldHVybiBzdGF0ZS5jb3B5X1xufVxuXG5mdW5jdGlvbiBmaW5hbGl6ZVByb3BlcnR5KFxuXHRyb290U2NvcGU6IEltbWVyU2NvcGUsXG5cdHBhcmVudFN0YXRlOiB1bmRlZmluZWQgfCBJbW1lclN0YXRlLFxuXHR0YXJnZXRPYmplY3Q6IGFueSxcblx0cHJvcDogc3RyaW5nIHwgbnVtYmVyLFxuXHRjaGlsZFZhbHVlOiBhbnksXG5cdHJvb3RQYXRoPzogUGF0Y2hQYXRoXG4pIHtcblx0aWYgKF9fREVWX18gJiYgY2hpbGRWYWx1ZSA9PT0gdGFyZ2V0T2JqZWN0KSBkaWUoNSlcblx0aWYgKGlzRHJhZnQoY2hpbGRWYWx1ZSkpIHtcblx0XHRjb25zdCBwYXRoID1cblx0XHRcdHJvb3RQYXRoICYmXG5cdFx0XHRwYXJlbnRTdGF0ZSAmJlxuXHRcdFx0cGFyZW50U3RhdGUhLnR5cGVfICE9PSBQcm94eVR5cGUuU2V0ICYmIC8vIFNldCBvYmplY3RzIGFyZSBhdG9taWMgc2luY2UgdGhleSBoYXZlIG5vIGtleXMuXG5cdFx0XHQhaGFzKChwYXJlbnRTdGF0ZSBhcyBFeGNsdWRlPEltbWVyU3RhdGUsIFNldFN0YXRlPikuYXNzaWduZWRfISwgcHJvcCkgLy8gU2tpcCBkZWVwIHBhdGNoZXMgZm9yIGFzc2lnbmVkIGtleXMuXG5cdFx0XHRcdD8gcm9vdFBhdGghLmNvbmNhdChwcm9wKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdC8vIERyYWZ0cyBvd25lZCBieSBgc2NvcGVgIGFyZSBmaW5hbGl6ZWQgaGVyZS5cblx0XHRjb25zdCByZXMgPSBmaW5hbGl6ZShyb290U2NvcGUsIGNoaWxkVmFsdWUsIHBhdGgpXG5cdFx0c2V0KHRhcmdldE9iamVjdCwgcHJvcCwgcmVzKVxuXHRcdC8vIERyYWZ0cyBmcm9tIGFub3RoZXIgc2NvcGUgbXVzdCBwcmV2ZW50ZWQgdG8gYmUgZnJvemVuXG5cdFx0Ly8gaWYgd2UgZ290IGEgZHJhZnQgYmFjayBmcm9tIGZpbmFsaXplLCB3ZSdyZSBpbiBhIG5lc3RlZCBwcm9kdWNlIGFuZCBzaG91bGRuJ3QgZnJlZXplXG5cdFx0aWYgKGlzRHJhZnQocmVzKSkge1xuXHRcdFx0cm9vdFNjb3BlLmNhbkF1dG9GcmVlemVfID0gZmFsc2Vcblx0XHR9IGVsc2UgcmV0dXJuXG5cdH1cblx0Ly8gU2VhcmNoIG5ldyBvYmplY3RzIGZvciB1bmZpbmFsaXplZCBkcmFmdHMuIEZyb3plbiBvYmplY3RzIHNob3VsZCBuZXZlciBjb250YWluIGRyYWZ0cy5cblx0aWYgKGlzRHJhZnRhYmxlKGNoaWxkVmFsdWUpICYmICFpc0Zyb3plbihjaGlsZFZhbHVlKSkge1xuXHRcdGlmICghcm9vdFNjb3BlLmltbWVyXy5hdXRvRnJlZXplXyAmJiByb290U2NvcGUudW5maW5hbGl6ZWREcmFmdHNfIDwgMSkge1xuXHRcdFx0Ly8gb3B0aW1pemF0aW9uOiBpZiBhbiBvYmplY3QgaXMgbm90IGEgZHJhZnQsIGFuZCB3ZSBkb24ndCBoYXZlIHRvXG5cdFx0XHQvLyBkZWVwZnJlZXplIGV2ZXJ5dGhpbmcsIGFuZCB3ZSBhcmUgc3VyZSB0aGF0IG5vIGRyYWZ0cyBhcmUgbGVmdCBpbiB0aGUgcmVtYWluaW5nIG9iamVjdFxuXHRcdFx0Ly8gY2F1c2Ugd2Ugc2F3IGFuZCBmaW5hbGl6ZWQgYWxsIGRyYWZ0cyBhbHJlYWR5OyB3ZSBjYW4gc3RvcCB2aXNpdGluZyB0aGUgcmVzdCBvZiB0aGUgdHJlZS5cblx0XHRcdC8vIFRoaXMgYmVuZWZpdHMgZXNwZWNpYWxseSBhZGRpbmcgbGFyZ2UgZGF0YSB0cmVlJ3Mgd2l0aG91dCBmdXJ0aGVyIHByb2Nlc3NpbmcuXG5cdFx0XHQvLyBTZWUgYWRkLWRhdGEuanMgcGVyZiB0ZXN0XG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cdFx0ZmluYWxpemUocm9vdFNjb3BlLCBjaGlsZFZhbHVlKVxuXHRcdC8vIGltbWVyIGRlZXAgZnJlZXplcyBwbGFpbiBvYmplY3RzLCBzbyBpZiB0aGVyZSBpcyBubyBwYXJlbnQgc3RhdGUsIHdlIGZyZWV6ZSBhcyB3ZWxsXG5cdFx0aWYgKCFwYXJlbnRTdGF0ZSB8fCAhcGFyZW50U3RhdGUuc2NvcGVfLnBhcmVudF8pXG5cdFx0XHRtYXliZUZyZWV6ZShyb290U2NvcGUsIGNoaWxkVmFsdWUpXG5cdH1cbn1cblxuZnVuY3Rpb24gbWF5YmVGcmVlemUoc2NvcGU6IEltbWVyU2NvcGUsIHZhbHVlOiBhbnksIGRlZXAgPSBmYWxzZSkge1xuXHRpZiAoc2NvcGUuaW1tZXJfLmF1dG9GcmVlemVfICYmIHNjb3BlLmNhbkF1dG9GcmVlemVfKSB7XG5cdFx0ZnJlZXplKHZhbHVlLCBkZWVwKVxuXHR9XG59XG4iLCAiaW1wb3J0IHtcblx0ZWFjaCxcblx0aGFzLFxuXHRpcyxcblx0aXNEcmFmdGFibGUsXG5cdHNoYWxsb3dDb3B5LFxuXHRsYXRlc3QsXG5cdEltbWVyQmFzZVN0YXRlLFxuXHRJbW1lclN0YXRlLFxuXHREcmFmdGVkLFxuXHRBbnlPYmplY3QsXG5cdEFueUFycmF5LFxuXHRPYmplY3Rpc2gsXG5cdGdldEN1cnJlbnRTY29wZSxcblx0RFJBRlRfU1RBVEUsXG5cdGRpZSxcblx0Y3JlYXRlUHJveHksXG5cdFByb3h5VHlwZVxufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG5pbnRlcmZhY2UgUHJveHlCYXNlU3RhdGUgZXh0ZW5kcyBJbW1lckJhc2VTdGF0ZSB7XG5cdGFzc2lnbmVkXzoge1xuXHRcdFtwcm9wZXJ0eTogc3RyaW5nXTogYm9vbGVhblxuXHR9XG5cdHBhcmVudF8/OiBJbW1lclN0YXRlXG5cdHJldm9rZV8oKTogdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3h5T2JqZWN0U3RhdGUgZXh0ZW5kcyBQcm94eUJhc2VTdGF0ZSB7XG5cdHR5cGVfOiBQcm94eVR5cGUuUHJveHlPYmplY3Rcblx0YmFzZV86IGFueVxuXHRjb3B5XzogYW55XG5cdGRyYWZ0XzogRHJhZnRlZDxBbnlPYmplY3QsIFByb3h5T2JqZWN0U3RhdGU+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlBcnJheVN0YXRlIGV4dGVuZHMgUHJveHlCYXNlU3RhdGUge1xuXHR0eXBlXzogUHJveHlUeXBlLlByb3h5QXJyYXlcblx0YmFzZV86IEFueUFycmF5XG5cdGNvcHlfOiBBbnlBcnJheSB8IG51bGxcblx0ZHJhZnRfOiBEcmFmdGVkPEFueUFycmF5LCBQcm94eUFycmF5U3RhdGU+XG59XG5cbnR5cGUgUHJveHlTdGF0ZSA9IFByb3h5T2JqZWN0U3RhdGUgfCBQcm94eUFycmF5U3RhdGVcblxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGRyYWZ0IG9mIHRoZSBgYmFzZWAgb2JqZWN0LlxuICpcbiAqIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIHBhcmVudCBkcmFmdC1zdGF0ZSAodXNlZCBpbnRlcm5hbGx5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb3h5UHJveHk8VCBleHRlbmRzIE9iamVjdGlzaD4oXG5cdGJhc2U6IFQsXG5cdHBhcmVudD86IEltbWVyU3RhdGVcbik6IERyYWZ0ZWQ8VCwgUHJveHlTdGF0ZT4ge1xuXHRjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShiYXNlKVxuXHRjb25zdCBzdGF0ZTogUHJveHlTdGF0ZSA9IHtcblx0XHR0eXBlXzogaXNBcnJheSA/IFByb3h5VHlwZS5Qcm94eUFycmF5IDogKFByb3h5VHlwZS5Qcm94eU9iamVjdCBhcyBhbnkpLFxuXHRcdC8vIFRyYWNrIHdoaWNoIHByb2R1Y2UgY2FsbCB0aGlzIGlzIGFzc29jaWF0ZWQgd2l0aC5cblx0XHRzY29wZV86IHBhcmVudCA/IHBhcmVudC5zY29wZV8gOiBnZXRDdXJyZW50U2NvcGUoKSEsXG5cdFx0Ly8gVHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBkZWVwIGNoYW5nZXMuXG5cdFx0bW9kaWZpZWRfOiBmYWxzZSxcblx0XHQvLyBVc2VkIGR1cmluZyBmaW5hbGl6YXRpb24uXG5cdFx0ZmluYWxpemVkXzogZmFsc2UsXG5cdFx0Ly8gVHJhY2sgd2hpY2ggcHJvcGVydGllcyBoYXZlIGJlZW4gYXNzaWduZWQgKHRydWUpIG9yIGRlbGV0ZWQgKGZhbHNlKS5cblx0XHRhc3NpZ25lZF86IHt9LFxuXHRcdC8vIFRoZSBwYXJlbnQgZHJhZnQgc3RhdGUuXG5cdFx0cGFyZW50XzogcGFyZW50LFxuXHRcdC8vIFRoZSBiYXNlIHN0YXRlLlxuXHRcdGJhc2VfOiBiYXNlLFxuXHRcdC8vIFRoZSBiYXNlIHByb3h5LlxuXHRcdGRyYWZ0XzogbnVsbCBhcyBhbnksIC8vIHNldCBiZWxvd1xuXHRcdC8vIFRoZSBiYXNlIGNvcHkgd2l0aCBhbnkgdXBkYXRlZCB2YWx1ZXMuXG5cdFx0Y29weV86IG51bGwsXG5cdFx0Ly8gQ2FsbGVkIGJ5IHRoZSBgcHJvZHVjZWAgZnVuY3Rpb24uXG5cdFx0cmV2b2tlXzogbnVsbCBhcyBhbnksXG5cdFx0aXNNYW51YWxfOiBmYWxzZVxuXHR9XG5cblx0Ly8gdGhlIHRyYXBzIG11c3QgdGFyZ2V0IHNvbWV0aGluZywgYSBiaXQgbGlrZSB0aGUgJ3JlYWwnIGJhc2UuXG5cdC8vIGJ1dCBhbHNvLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGV0ZXJtaW5lIGZyb20gdGhlIHRhcmdldCB3aGF0IHRoZSByZWxldmFudCBzdGF0ZSBpc1xuXHQvLyAodG8gYXZvaWQgY3JlYXRpbmcgdHJhcHMgcGVyIGluc3RhbmNlIHRvIGNhcHR1cmUgdGhlIHN0YXRlIGluIGNsb3N1cmUsXG5cdC8vIGFuZCB0byBhdm9pZCBjcmVhdGluZyB3ZWlyZCBoaWRkZW4gcHJvcGVydGllcyBhcyB3ZWxsKVxuXHQvLyBTbyB0aGUgdHJpY2sgaXMgdG8gdXNlICdzdGF0ZScgYXMgdGhlIGFjdHVhbCAndGFyZ2V0JyEgKGFuZCBtYWtlIHN1cmUgd2UgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcpXG5cdC8vIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhbiBhcnJheSwgd2UgcHV0IHRoZSBzdGF0ZSBpbiBhbiBhcnJheSB0byBoYXZlIGJldHRlciBSZWZsZWN0IGRlZmF1bHRzIG9vdGJcblx0bGV0IHRhcmdldDogVCA9IHN0YXRlIGFzIGFueVxuXHRsZXQgdHJhcHM6IFByb3h5SGFuZGxlcjxvYmplY3QgfCBBcnJheTxhbnk+PiA9IG9iamVjdFRyYXBzXG5cdGlmIChpc0FycmF5KSB7XG5cdFx0dGFyZ2V0ID0gW3N0YXRlXSBhcyBhbnlcblx0XHR0cmFwcyA9IGFycmF5VHJhcHNcblx0fVxuXG5cdGNvbnN0IHtyZXZva2UsIHByb3h5fSA9IFByb3h5LnJldm9jYWJsZSh0YXJnZXQsIHRyYXBzKVxuXHRzdGF0ZS5kcmFmdF8gPSBwcm94eSBhcyBhbnlcblx0c3RhdGUucmV2b2tlXyA9IHJldm9rZVxuXHRyZXR1cm4gcHJveHkgYXMgYW55XG59XG5cbi8qKlxuICogT2JqZWN0IGRyYWZ0c1xuICovXG5leHBvcnQgY29uc3Qgb2JqZWN0VHJhcHM6IFByb3h5SGFuZGxlcjxQcm94eVN0YXRlPiA9IHtcblx0Z2V0KHN0YXRlLCBwcm9wKSB7XG5cdFx0aWYgKHByb3AgPT09IERSQUZUX1NUQVRFKSByZXR1cm4gc3RhdGVcblxuXHRcdGNvbnN0IHNvdXJjZSA9IGxhdGVzdChzdGF0ZSlcblx0XHRpZiAoIWhhcyhzb3VyY2UsIHByb3ApKSB7XG5cdFx0XHQvLyBub24tZXhpc3Rpbmcgb3Igbm9uLW93biBwcm9wZXJ0eS4uLlxuXHRcdFx0cmV0dXJuIHJlYWRQcm9wRnJvbVByb3RvKHN0YXRlLCBzb3VyY2UsIHByb3ApXG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlID0gc291cmNlW3Byb3BdXG5cdFx0aWYgKHN0YXRlLmZpbmFsaXplZF8gfHwgIWlzRHJhZnRhYmxlKHZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0fVxuXHRcdC8vIENoZWNrIGZvciBleGlzdGluZyBkcmFmdCBpbiBtb2RpZmllZCBzdGF0ZS5cblx0XHQvLyBBc3NpZ25lZCB2YWx1ZXMgYXJlIG5ldmVyIGRyYWZ0ZWQuIFRoaXMgY2F0Y2hlcyBhbnkgZHJhZnRzIHdlIGNyZWF0ZWQsIHRvby5cblx0XHRpZiAodmFsdWUgPT09IHBlZWsoc3RhdGUuYmFzZV8sIHByb3ApKSB7XG5cdFx0XHRwcmVwYXJlQ29weShzdGF0ZSlcblx0XHRcdHJldHVybiAoc3RhdGUuY29weV8hW3Byb3AgYXMgYW55XSA9IGNyZWF0ZVByb3h5KFxuXHRcdFx0XHRzdGF0ZS5zY29wZV8uaW1tZXJfLFxuXHRcdFx0XHR2YWx1ZSxcblx0XHRcdFx0c3RhdGVcblx0XHRcdCkpXG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZVxuXHR9LFxuXHRoYXMoc3RhdGUsIHByb3ApIHtcblx0XHRyZXR1cm4gcHJvcCBpbiBsYXRlc3Qoc3RhdGUpXG5cdH0sXG5cdG93bktleXMoc3RhdGUpIHtcblx0XHRyZXR1cm4gUmVmbGVjdC5vd25LZXlzKGxhdGVzdChzdGF0ZSkpXG5cdH0sXG5cdHNldChcblx0XHRzdGF0ZTogUHJveHlPYmplY3RTdGF0ZSxcblx0XHRwcm9wOiBzdHJpbmcgLyogc3RyaWN0bHkgbm90LCBidXQgaGVscHMgVFMgKi8sXG5cdFx0dmFsdWVcblx0KSB7XG5cdFx0Y29uc3QgZGVzYyA9IGdldERlc2NyaXB0b3JGcm9tUHJvdG8obGF0ZXN0KHN0YXRlKSwgcHJvcClcblx0XHRpZiAoZGVzYz8uc2V0KSB7XG5cdFx0XHQvLyBzcGVjaWFsIGNhc2U6IGlmIHRoaXMgd3JpdGUgaXMgY2FwdHVyZWQgYnkgYSBzZXR0ZXIsIHdlIGhhdmVcblx0XHRcdC8vIHRvIHRyaWdnZXIgaXQgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG5cdFx0XHRkZXNjLnNldC5jYWxsKHN0YXRlLmRyYWZ0XywgdmFsdWUpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdH1cblx0XHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdFx0Ly8gdGhlIGxhc3QgY2hlY2sgaXMgYmVjYXVzZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggc2V0dGluZyBhIG5vbi1leGlzdGluZyB0byB1bmRlZmluZWQgKHdoaWNoIGlzIGEgY2hhbmdlKVxuXHRcdFx0Ly8gZnJvbSBzZXR0aW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHdpdGggdmFsdWUgdW5kZWZpbmVkIHRvIHVuZGVmaW5lZCAod2hpY2ggaXMgbm90IGEgY2hhbmdlKVxuXHRcdFx0Y29uc3QgY3VycmVudCA9IHBlZWsobGF0ZXN0KHN0YXRlKSwgcHJvcClcblx0XHRcdC8vIHNwZWNpYWwgY2FzZSwgaWYgd2UgYXNzaWduaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSB0byBhIGRyYWZ0LCB3ZSBjYW4gaWdub3JlIHRoZSBhc3NpZ25tZW50XG5cdFx0XHRjb25zdCBjdXJyZW50U3RhdGU6IFByb3h5T2JqZWN0U3RhdGUgPSBjdXJyZW50Py5bRFJBRlRfU1RBVEVdXG5cdFx0XHRpZiAoY3VycmVudFN0YXRlICYmIGN1cnJlbnRTdGF0ZS5iYXNlXyA9PT0gdmFsdWUpIHtcblx0XHRcdFx0c3RhdGUuY29weV8hW3Byb3BdID0gdmFsdWVcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfW3Byb3BdID0gZmFsc2Vcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdH1cblx0XHRcdGlmIChpcyh2YWx1ZSwgY3VycmVudCkgJiYgKHZhbHVlICE9PSB1bmRlZmluZWQgfHwgaGFzKHN0YXRlLmJhc2VfLCBwcm9wKSkpXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHRwcmVwYXJlQ29weShzdGF0ZSlcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdHN0YXRlLmNvcHlfIVtwcm9wXSA9PT0gdmFsdWUgJiZcblx0XHRcdC8vIHNwZWNpYWwgY2FzZTogTmFOXG5cdFx0XHR0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgJiZcblx0XHRcdC8vIHNwZWNpYWwgY2FzZTogaGFuZGxlIG5ldyBwcm9wcyB3aXRoIHZhbHVlICd1bmRlZmluZWQnXG5cdFx0XHQodmFsdWUgIT09IHVuZGVmaW5lZCB8fCBwcm9wIGluIHN0YXRlLmNvcHlfKVxuXHRcdClcblx0XHRcdHJldHVybiB0cnVlXG5cblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0c3RhdGUuY29weV8hW3Byb3BdID0gdmFsdWVcblx0XHRzdGF0ZS5hc3NpZ25lZF9bcHJvcF0gPSB0cnVlXG5cdFx0cmV0dXJuIHRydWVcblx0fSxcblx0ZGVsZXRlUHJvcGVydHkoc3RhdGUsIHByb3A6IHN0cmluZykge1xuXHRcdC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG5cdFx0aWYgKHBlZWsoc3RhdGUuYmFzZV8sIHByb3ApICE9PSB1bmRlZmluZWQgfHwgcHJvcCBpbiBzdGF0ZS5iYXNlXykge1xuXHRcdFx0c3RhdGUuYXNzaWduZWRfW3Byb3BdID0gZmFsc2Vcblx0XHRcdHByZXBhcmVDb3B5KHN0YXRlKVxuXHRcdFx0bWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGlmIGFuIG9yaWdpbmFsbHkgbm90IGFzc2lnbmVkIHByb3BlcnR5IHdhcyBkZWxldGVkXG5cdFx0XHRkZWxldGUgc3RhdGUuYXNzaWduZWRfW3Byb3BdXG5cdFx0fVxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRpZiAoc3RhdGUuY29weV8pIGRlbGV0ZSBzdGF0ZS5jb3B5X1twcm9wXVxuXHRcdHJldHVybiB0cnVlXG5cdH0sXG5cdC8vIE5vdGU6IFdlIG5ldmVyIGNvZXJjZSBgZGVzYy52YWx1ZWAgaW50byBhbiBJbW1lciBkcmFmdCwgYmVjYXVzZSB3ZSBjYW4ndCBtYWtlXG5cdC8vIHRoZSBzYW1lIGd1YXJhbnRlZSBpbiBFUzUgbW9kZS5cblx0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0YXRlLCBwcm9wKSB7XG5cdFx0Y29uc3Qgb3duZXIgPSBsYXRlc3Qoc3RhdGUpXG5cdFx0Y29uc3QgZGVzYyA9IFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBwcm9wKVxuXHRcdGlmICghZGVzYykgcmV0dXJuIGRlc2Ncblx0XHRyZXR1cm4ge1xuXHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHN0YXRlLnR5cGVfICE9PSBQcm94eVR5cGUuUHJveHlBcnJheSB8fCBwcm9wICE9PSBcImxlbmd0aFwiLFxuXHRcdFx0ZW51bWVyYWJsZTogZGVzYy5lbnVtZXJhYmxlLFxuXHRcdFx0dmFsdWU6IG93bmVyW3Byb3BdXG5cdFx0fVxuXHR9LFxuXHRkZWZpbmVQcm9wZXJ0eSgpIHtcblx0XHRkaWUoMTEpXG5cdH0sXG5cdGdldFByb3RvdHlwZU9mKHN0YXRlKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihzdGF0ZS5iYXNlXylcblx0fSxcblx0c2V0UHJvdG90eXBlT2YoKSB7XG5cdFx0ZGllKDEyKVxuXHR9XG59XG5cbi8qKlxuICogQXJyYXkgZHJhZnRzXG4gKi9cblxuY29uc3QgYXJyYXlUcmFwczogUHJveHlIYW5kbGVyPFtQcm94eUFycmF5U3RhdGVdPiA9IHt9XG5lYWNoKG9iamVjdFRyYXBzLCAoa2V5LCBmbikgPT4ge1xuXHQvLyBAdHMtaWdub3JlXG5cdGFycmF5VHJhcHNba2V5XSA9IGZ1bmN0aW9uKCkge1xuXHRcdGFyZ3VtZW50c1swXSA9IGFyZ3VtZW50c1swXVswXVxuXHRcdHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG5cdH1cbn0pXG5hcnJheVRyYXBzLmRlbGV0ZVByb3BlcnR5ID0gZnVuY3Rpb24oc3RhdGUsIHByb3ApIHtcblx0aWYgKF9fREVWX18gJiYgaXNOYU4ocGFyc2VJbnQocHJvcCBhcyBhbnkpKSkgZGllKDEzKVxuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiBhcnJheVRyYXBzLnNldCEuY2FsbCh0aGlzLCBzdGF0ZSwgcHJvcCwgdW5kZWZpbmVkKVxufVxuYXJyYXlUcmFwcy5zZXQgPSBmdW5jdGlvbihzdGF0ZSwgcHJvcCwgdmFsdWUpIHtcblx0aWYgKF9fREVWX18gJiYgcHJvcCAhPT0gXCJsZW5ndGhcIiAmJiBpc05hTihwYXJzZUludChwcm9wIGFzIGFueSkpKSBkaWUoMTQpXG5cdHJldHVybiBvYmplY3RUcmFwcy5zZXQhLmNhbGwodGhpcywgc3RhdGVbMF0sIHByb3AsIHZhbHVlLCBzdGF0ZVswXSlcbn1cblxuLy8gQWNjZXNzIGEgcHJvcGVydHkgd2l0aG91dCBjcmVhdGluZyBhbiBJbW1lciBkcmFmdC5cbmZ1bmN0aW9uIHBlZWsoZHJhZnQ6IERyYWZ0ZWQsIHByb3A6IFByb3BlcnR5S2V5KSB7XG5cdGNvbnN0IHN0YXRlID0gZHJhZnRbRFJBRlRfU1RBVEVdXG5cdGNvbnN0IHNvdXJjZSA9IHN0YXRlID8gbGF0ZXN0KHN0YXRlKSA6IGRyYWZ0XG5cdHJldHVybiBzb3VyY2VbcHJvcF1cbn1cblxuZnVuY3Rpb24gcmVhZFByb3BGcm9tUHJvdG8oc3RhdGU6IEltbWVyU3RhdGUsIHNvdXJjZTogYW55LCBwcm9wOiBQcm9wZXJ0eUtleSkge1xuXHRjb25zdCBkZXNjID0gZ2V0RGVzY3JpcHRvckZyb21Qcm90byhzb3VyY2UsIHByb3ApXG5cdHJldHVybiBkZXNjXG5cdFx0PyBgdmFsdWVgIGluIGRlc2Ncblx0XHRcdD8gZGVzYy52YWx1ZVxuXHRcdFx0OiAvLyBUaGlzIGlzIGEgdmVyeSBzcGVjaWFsIGNhc2UsIGlmIHRoZSBwcm9wIGlzIGEgZ2V0dGVyIGRlZmluZWQgYnkgdGhlXG5cdFx0XHQgIC8vIHByb3RvdHlwZSwgd2Ugc2hvdWxkIGludm9rZSBpdCB3aXRoIHRoZSBkcmFmdCBhcyBjb250ZXh0IVxuXHRcdFx0ICBkZXNjLmdldD8uY2FsbChzdGF0ZS5kcmFmdF8pXG5cdFx0OiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckZyb21Qcm90byhcblx0c291cmNlOiBhbnksXG5cdHByb3A6IFByb3BlcnR5S2V5XG4pOiBQcm9wZXJ0eURlc2NyaXB0b3IgfCB1bmRlZmluZWQge1xuXHQvLyAnaW4nIGNoZWNrcyBwcm90byFcblx0aWYgKCEocHJvcCBpbiBzb3VyY2UpKSByZXR1cm4gdW5kZWZpbmVkXG5cdGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzb3VyY2UpXG5cdHdoaWxlIChwcm90bykge1xuXHRcdGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBwcm9wKVxuXHRcdGlmIChkZXNjKSByZXR1cm4gZGVzY1xuXHRcdHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKVxuXHR9XG5cdHJldHVybiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDaGFuZ2VkKHN0YXRlOiBJbW1lclN0YXRlKSB7XG5cdGlmICghc3RhdGUubW9kaWZpZWRfKSB7XG5cdFx0c3RhdGUubW9kaWZpZWRfID0gdHJ1ZVxuXHRcdGlmIChzdGF0ZS5wYXJlbnRfKSB7XG5cdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZS5wYXJlbnRfKVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUNvcHkoc3RhdGU6IHtiYXNlXzogYW55OyBjb3B5XzogYW55fSkge1xuXHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0c3RhdGUuY29weV8gPSBzaGFsbG93Q29weShzdGF0ZS5iYXNlXylcblx0fVxufVxuIiwgImltcG9ydCB7XG5cdElQcm9kdWNlV2l0aFBhdGNoZXMsXG5cdElQcm9kdWNlLFxuXHRJbW1lclN0YXRlLFxuXHREcmFmdGVkLFxuXHRpc0RyYWZ0YWJsZSxcblx0cHJvY2Vzc1Jlc3VsdCxcblx0UGF0Y2gsXG5cdE9iamVjdGlzaCxcblx0RFJBRlRfU1RBVEUsXG5cdERyYWZ0LFxuXHRQYXRjaExpc3RlbmVyLFxuXHRpc0RyYWZ0LFxuXHRpc01hcCxcblx0aXNTZXQsXG5cdGNyZWF0ZVByb3h5UHJveHksXG5cdGdldFBsdWdpbixcblx0ZGllLFxuXHRoYXNQcm94aWVzLFxuXHRlbnRlclNjb3BlLFxuXHRyZXZva2VTY29wZSxcblx0bGVhdmVTY29wZSxcblx0dXNlUGF0Y2hlc0luU2NvcGUsXG5cdGdldEN1cnJlbnRTY29wZSxcblx0Tk9USElORyxcblx0ZnJlZXplLFxuXHRjdXJyZW50XG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmludGVyZmFjZSBQcm9kdWNlcnNGbnMge1xuXHRwcm9kdWNlOiBJUHJvZHVjZVxuXHRwcm9kdWNlV2l0aFBhdGNoZXM6IElQcm9kdWNlV2l0aFBhdGNoZXNcbn1cblxuZXhwb3J0IGNsYXNzIEltbWVyIGltcGxlbWVudHMgUHJvZHVjZXJzRm5zIHtcblx0dXNlUHJveGllc186IGJvb2xlYW4gPSBoYXNQcm94aWVzXG5cblx0YXV0b0ZyZWV6ZV86IGJvb2xlYW4gPSB0cnVlXG5cblx0Y29uc3RydWN0b3IoY29uZmlnPzoge3VzZVByb3hpZXM/OiBib29sZWFuOyBhdXRvRnJlZXplPzogYm9vbGVhbn0pIHtcblx0XHRpZiAodHlwZW9mIGNvbmZpZz8udXNlUHJveGllcyA9PT0gXCJib29sZWFuXCIpXG5cdFx0XHR0aGlzLnNldFVzZVByb3hpZXMoY29uZmlnIS51c2VQcm94aWVzKVxuXHRcdGlmICh0eXBlb2YgY29uZmlnPy5hdXRvRnJlZXplID09PSBcImJvb2xlYW5cIilcblx0XHRcdHRoaXMuc2V0QXV0b0ZyZWV6ZShjb25maWchLmF1dG9GcmVlemUpXG5cdH1cblxuXHQvKipcblx0ICogVGhlIGBwcm9kdWNlYCBmdW5jdGlvbiB0YWtlcyBhIHZhbHVlIGFuZCBhIFwicmVjaXBlIGZ1bmN0aW9uXCIgKHdob3NlXG5cdCAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuXHQgKiBmcmVlIHRvIG11dGF0ZSBpdHMgZmlyc3QgYXJndW1lbnQgaG93ZXZlciBpdCB3YW50cy4gQWxsIG11dGF0aW9ucyBhcmVcblx0ICogb25seSBldmVyIGFwcGxpZWQgdG8gYSBfX2NvcHlfXyBvZiB0aGUgYmFzZSBzdGF0ZS5cblx0ICpcblx0ICogUGFzcyBvbmx5IGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgXCJjdXJyaWVkIHByb2R1Y2VyXCIgd2hpY2ggcmVsaWV2ZXMgeW91XG5cdCAqIGZyb20gcGFzc2luZyB0aGUgcmVjaXBlIGZ1bmN0aW9uIGV2ZXJ5IHRpbWUuXG5cdCAqXG5cdCAqIE9ubHkgcGxhaW4gb2JqZWN0cyBhbmQgYXJyYXlzIGFyZSBtYWRlIG11dGFibGUuIEFsbCBvdGhlciBvYmplY3RzIGFyZVxuXHQgKiBjb25zaWRlcmVkIHVuY29weWFibGUuXG5cdCAqXG5cdCAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgX19ib3VuZF9fIHRvIGl0cyBgSW1tZXJgIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IHByb2R1Y2VyIC0gZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIHByb3h5IG9mIHRoZSBiYXNlIHN0YXRlIGFzIGZpcnN0IGFyZ3VtZW50IGFuZCB3aGljaCBjYW4gYmUgZnJlZWx5IG1vZGlmaWVkXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IHBhdGNoTGlzdGVuZXIgLSBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggYWxsIHRoZSBwYXRjaGVzIHByb2R1Y2VkIGhlcmVcblx0ICogQHJldHVybnMge2FueX0gYSBuZXcgc3RhdGUsIG9yIHRoZSBpbml0aWFsIHN0YXRlIGlmIG5vdGhpbmcgd2FzIG1vZGlmaWVkXG5cdCAqL1xuXHRwcm9kdWNlOiBJUHJvZHVjZSA9IChiYXNlOiBhbnksIHJlY2lwZT86IGFueSwgcGF0Y2hMaXN0ZW5lcj86IGFueSkgPT4ge1xuXHRcdC8vIGN1cnJpZWQgaW52b2NhdGlvblxuXHRcdGlmICh0eXBlb2YgYmFzZSA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiByZWNpcGUgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0Y29uc3QgZGVmYXVsdEJhc2UgPSByZWNpcGVcblx0XHRcdHJlY2lwZSA9IGJhc2VcblxuXHRcdFx0Y29uc3Qgc2VsZiA9IHRoaXNcblx0XHRcdHJldHVybiBmdW5jdGlvbiBjdXJyaWVkUHJvZHVjZShcblx0XHRcdFx0dGhpczogYW55LFxuXHRcdFx0XHRiYXNlID0gZGVmYXVsdEJhc2UsXG5cdFx0XHRcdC4uLmFyZ3M6IGFueVtdXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHNlbGYucHJvZHVjZShiYXNlLCAoZHJhZnQ6IERyYWZ0ZWQpID0+IHJlY2lwZS5jYWxsKHRoaXMsIGRyYWZ0LCAuLi5hcmdzKSkgLy8gcHJldHRpZXItaWdub3JlXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiByZWNpcGUgIT09IFwiZnVuY3Rpb25cIikgZGllKDYpXG5cdFx0aWYgKHBhdGNoTGlzdGVuZXIgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcGF0Y2hMaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiKVxuXHRcdFx0ZGllKDcpXG5cblx0XHRsZXQgcmVzdWx0XG5cblx0XHQvLyBPbmx5IHBsYWluIG9iamVjdHMsIGFycmF5cywgYW5kIFwiaW1tZXJhYmxlIGNsYXNzZXNcIiBhcmUgZHJhZnRlZC5cblx0XHRpZiAoaXNEcmFmdGFibGUoYmFzZSkpIHtcblx0XHRcdGNvbnN0IHNjb3BlID0gZW50ZXJTY29wZSh0aGlzKVxuXHRcdFx0Y29uc3QgcHJveHkgPSBjcmVhdGVQcm94eSh0aGlzLCBiYXNlLCB1bmRlZmluZWQpXG5cdFx0XHRsZXQgaGFzRXJyb3IgPSB0cnVlXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXN1bHQgPSByZWNpcGUocHJveHkpXG5cdFx0XHRcdGhhc0Vycm9yID0gZmFsc2Vcblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdC8vIGZpbmFsbHkgaW5zdGVhZCBvZiBjYXRjaCArIHJldGhyb3cgYmV0dGVyIHByZXNlcnZlcyBvcmlnaW5hbCBzdGFja1xuXHRcdFx0XHRpZiAoaGFzRXJyb3IpIHJldm9rZVNjb3BlKHNjb3BlKVxuXHRcdFx0XHRlbHNlIGxlYXZlU2NvcGUoc2NvcGUpXG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIFByb21pc2UgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0LnRoZW4oXG5cdFx0XHRcdFx0cmVzdWx0ID0+IHtcblx0XHRcdFx0XHRcdHVzZVBhdGNoZXNJblNjb3BlKHNjb3BlLCBwYXRjaExpc3RlbmVyKVxuXHRcdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3NSZXN1bHQocmVzdWx0LCBzY29wZSlcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGVycm9yID0+IHtcblx0XHRcdFx0XHRcdHJldm9rZVNjb3BlKHNjb3BlKVxuXHRcdFx0XHRcdFx0dGhyb3cgZXJyb3Jcblx0XHRcdFx0XHR9XG5cdFx0XHRcdClcblx0XHRcdH1cblx0XHRcdHVzZVBhdGNoZXNJblNjb3BlKHNjb3BlLCBwYXRjaExpc3RlbmVyKVxuXHRcdFx0cmV0dXJuIHByb2Nlc3NSZXN1bHQocmVzdWx0LCBzY29wZSlcblx0XHR9IGVsc2UgaWYgKCFiYXNlIHx8IHR5cGVvZiBiYXNlICE9PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRyZXN1bHQgPSByZWNpcGUoYmFzZSlcblx0XHRcdGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gYmFzZVxuXHRcdFx0aWYgKHJlc3VsdCA9PT0gTk9USElORykgcmVzdWx0ID0gdW5kZWZpbmVkXG5cdFx0XHRpZiAodGhpcy5hdXRvRnJlZXplXykgZnJlZXplKHJlc3VsdCwgdHJ1ZSlcblx0XHRcdGlmIChwYXRjaExpc3RlbmVyKSB7XG5cdFx0XHRcdGNvbnN0IHA6IFBhdGNoW10gPSBbXVxuXHRcdFx0XHRjb25zdCBpcDogUGF0Y2hbXSA9IFtdXG5cdFx0XHRcdGdldFBsdWdpbihcIlBhdGNoZXNcIikuZ2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKGJhc2UsIHJlc3VsdCwgcCwgaXApXG5cdFx0XHRcdHBhdGNoTGlzdGVuZXIocCwgaXApXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0XG5cdFx0fSBlbHNlIGRpZSgyMSwgYmFzZSlcblx0fVxuXG5cdHByb2R1Y2VXaXRoUGF0Y2hlczogSVByb2R1Y2VXaXRoUGF0Y2hlcyA9IChcblx0XHRhcmcxOiBhbnksXG5cdFx0YXJnMj86IGFueSxcblx0XHRhcmczPzogYW55XG5cdCk6IGFueSA9PiB7XG5cdFx0aWYgKHR5cGVvZiBhcmcxID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHJldHVybiAoc3RhdGU6IGFueSwgLi4uYXJnczogYW55W10pID0+XG5cdFx0XHRcdHRoaXMucHJvZHVjZVdpdGhQYXRjaGVzKHN0YXRlLCAoZHJhZnQ6IGFueSkgPT4gYXJnMShkcmFmdCwgLi4uYXJncykpXG5cdFx0fVxuXG5cdFx0bGV0IHBhdGNoZXM6IFBhdGNoW10sIGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5wcm9kdWNlKGFyZzEsIGFyZzIsIChwOiBQYXRjaFtdLCBpcDogUGF0Y2hbXSkgPT4ge1xuXHRcdFx0cGF0Y2hlcyA9IHBcblx0XHRcdGludmVyc2VQYXRjaGVzID0gaXBcblx0XHR9KVxuXG5cdFx0aWYgKHR5cGVvZiBQcm9taXNlICE9PSBcInVuZGVmaW5lZFwiICYmIHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcblx0XHRcdHJldHVybiByZXN1bHQudGhlbihuZXh0U3RhdGUgPT4gW25leHRTdGF0ZSwgcGF0Y2hlcyEsIGludmVyc2VQYXRjaGVzIV0pXG5cdFx0fVxuXHRcdHJldHVybiBbcmVzdWx0LCBwYXRjaGVzISwgaW52ZXJzZVBhdGNoZXMhXVxuXHR9XG5cblx0Y3JlYXRlRHJhZnQ8VCBleHRlbmRzIE9iamVjdGlzaD4oYmFzZTogVCk6IERyYWZ0PFQ+IHtcblx0XHRpZiAoIWlzRHJhZnRhYmxlKGJhc2UpKSBkaWUoOClcblx0XHRpZiAoaXNEcmFmdChiYXNlKSkgYmFzZSA9IGN1cnJlbnQoYmFzZSlcblx0XHRjb25zdCBzY29wZSA9IGVudGVyU2NvcGUodGhpcylcblx0XHRjb25zdCBwcm94eSA9IGNyZWF0ZVByb3h5KHRoaXMsIGJhc2UsIHVuZGVmaW5lZClcblx0XHRwcm94eVtEUkFGVF9TVEFURV0uaXNNYW51YWxfID0gdHJ1ZVxuXHRcdGxlYXZlU2NvcGUoc2NvcGUpXG5cdFx0cmV0dXJuIHByb3h5IGFzIGFueVxuXHR9XG5cblx0ZmluaXNoRHJhZnQ8RCBleHRlbmRzIERyYWZ0PGFueT4+KFxuXHRcdGRyYWZ0OiBELFxuXHRcdHBhdGNoTGlzdGVuZXI/OiBQYXRjaExpc3RlbmVyXG5cdCk6IEQgZXh0ZW5kcyBEcmFmdDxpbmZlciBUPiA/IFQgOiBuZXZlciB7XG5cdFx0Y29uc3Qgc3RhdGU6IEltbWVyU3RhdGUgPSBkcmFmdCAmJiAoZHJhZnQgYXMgYW55KVtEUkFGVF9TVEFURV1cblx0XHRpZiAoX19ERVZfXykge1xuXHRcdFx0aWYgKCFzdGF0ZSB8fCAhc3RhdGUuaXNNYW51YWxfKSBkaWUoOSlcblx0XHRcdGlmIChzdGF0ZS5maW5hbGl6ZWRfKSBkaWUoMTApXG5cdFx0fVxuXHRcdGNvbnN0IHtzY29wZV86IHNjb3BlfSA9IHN0YXRlXG5cdFx0dXNlUGF0Y2hlc0luU2NvcGUoc2NvcGUsIHBhdGNoTGlzdGVuZXIpXG5cdFx0cmV0dXJuIHByb2Nlc3NSZXN1bHQodW5kZWZpbmVkLCBzY29wZSlcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXNzIHRydWUgdG8gYXV0b21hdGljYWxseSBmcmVlemUgYWxsIGNvcGllcyBjcmVhdGVkIGJ5IEltbWVyLlxuXHQgKlxuXHQgKiBCeSBkZWZhdWx0LCBhdXRvLWZyZWV6aW5nIGlzIGVuYWJsZWQuXG5cdCAqL1xuXHRzZXRBdXRvRnJlZXplKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5hdXRvRnJlZXplXyA9IHZhbHVlXG5cdH1cblxuXHQvKipcblx0ICogUGFzcyB0cnVlIHRvIHVzZSB0aGUgRVMyMDE1IGBQcm94eWAgY2xhc3Mgd2hlbiBjcmVhdGluZyBkcmFmdHMsIHdoaWNoIGlzXG5cdCAqIGFsd2F5cyBmYXN0ZXIgdGhhbiB1c2luZyBFUzUgcHJveGllcy5cblx0ICpcblx0ICogQnkgZGVmYXVsdCwgZmVhdHVyZSBkZXRlY3Rpb24gaXMgdXNlZCwgc28gY2FsbGluZyB0aGlzIGlzIHJhcmVseSBuZWNlc3NhcnkuXG5cdCAqL1xuXHRzZXRVc2VQcm94aWVzKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0aWYgKHZhbHVlICYmICFoYXNQcm94aWVzKSB7XG5cdFx0XHRkaWUoMjApXG5cdFx0fVxuXHRcdHRoaXMudXNlUHJveGllc18gPSB2YWx1ZVxuXHR9XG5cblx0YXBwbHlQYXRjaGVzPFQgZXh0ZW5kcyBPYmplY3Rpc2g+KGJhc2U6IFQsIHBhdGNoZXM6IFBhdGNoW10pOiBUIHtcblx0XHQvLyBJZiBhIHBhdGNoIHJlcGxhY2VzIHRoZSBlbnRpcmUgc3RhdGUsIHRha2UgdGhhdCByZXBsYWNlbWVudCBhcyBiYXNlXG5cdFx0Ly8gYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXNcblx0XHRsZXQgaTogbnVtYmVyXG5cdFx0Zm9yIChpID0gcGF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0Y29uc3QgcGF0Y2ggPSBwYXRjaGVzW2ldXG5cdFx0XHRpZiAocGF0Y2gucGF0aC5sZW5ndGggPT09IDAgJiYgcGF0Y2gub3AgPT09IFwicmVwbGFjZVwiKSB7XG5cdFx0XHRcdGJhc2UgPSBwYXRjaC52YWx1ZVxuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBJZiB0aGVyZSB3YXMgYSBwYXRjaCB0aGF0IHJlcGxhY2VkIHRoZSBlbnRpcmUgc3RhdGUsIHN0YXJ0IGZyb20gdGhlXG5cdFx0Ly8gcGF0Y2ggYWZ0ZXIgdGhhdC5cblx0XHRpZiAoaSA+IC0xKSB7XG5cdFx0XHRwYXRjaGVzID0gcGF0Y2hlcy5zbGljZShpICsgMSlcblx0XHR9XG5cblx0XHRjb25zdCBhcHBseVBhdGNoZXNJbXBsID0gZ2V0UGx1Z2luKFwiUGF0Y2hlc1wiKS5hcHBseVBhdGNoZXNfXG5cdFx0aWYgKGlzRHJhZnQoYmFzZSkpIHtcblx0XHRcdC8vIE4uQjogbmV2ZXIgaGl0cyBpZiBzb21lIHBhdGNoIGEgcmVwbGFjZW1lbnQsIHBhdGNoZXMgYXJlIG5ldmVyIGRyYWZ0c1xuXHRcdFx0cmV0dXJuIGFwcGx5UGF0Y2hlc0ltcGwoYmFzZSwgcGF0Y2hlcylcblx0XHR9XG5cdFx0Ly8gT3RoZXJ3aXNlLCBwcm9kdWNlIGEgY29weSBvZiB0aGUgYmFzZSBzdGF0ZS5cblx0XHRyZXR1cm4gdGhpcy5wcm9kdWNlKGJhc2UsIChkcmFmdDogRHJhZnRlZCkgPT5cblx0XHRcdGFwcGx5UGF0Y2hlc0ltcGwoZHJhZnQsIHBhdGNoZXMpXG5cdFx0KVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm94eTxUIGV4dGVuZHMgT2JqZWN0aXNoPihcblx0aW1tZXI6IEltbWVyLFxuXHR2YWx1ZTogVCxcblx0cGFyZW50PzogSW1tZXJTdGF0ZVxuKTogRHJhZnRlZDxULCBJbW1lclN0YXRlPiB7XG5cdC8vIHByZWNvbmRpdGlvbjogY3JlYXRlUHJveHkgc2hvdWxkIGJlIGd1YXJkZWQgYnkgaXNEcmFmdGFibGUsIHNvIHdlIGtub3cgd2UgY2FuIHNhZmVseSBkcmFmdFxuXHRjb25zdCBkcmFmdDogRHJhZnRlZCA9IGlzTWFwKHZhbHVlKVxuXHRcdD8gZ2V0UGx1Z2luKFwiTWFwU2V0XCIpLnByb3h5TWFwXyh2YWx1ZSwgcGFyZW50KVxuXHRcdDogaXNTZXQodmFsdWUpXG5cdFx0PyBnZXRQbHVnaW4oXCJNYXBTZXRcIikucHJveHlTZXRfKHZhbHVlLCBwYXJlbnQpXG5cdFx0OiBpbW1lci51c2VQcm94aWVzX1xuXHRcdD8gY3JlYXRlUHJveHlQcm94eSh2YWx1ZSwgcGFyZW50KVxuXHRcdDogZ2V0UGx1Z2luKFwiRVM1XCIpLmNyZWF0ZUVTNVByb3h5Xyh2YWx1ZSwgcGFyZW50KVxuXG5cdGNvbnN0IHNjb3BlID0gcGFyZW50ID8gcGFyZW50LnNjb3BlXyA6IGdldEN1cnJlbnRTY29wZSgpXG5cdHNjb3BlLmRyYWZ0c18ucHVzaChkcmFmdClcblx0cmV0dXJuIGRyYWZ0XG59XG4iLCAiaW1wb3J0IHtcblx0ZGllLFxuXHRpc0RyYWZ0LFxuXHRzaGFsbG93Q29weSxcblx0ZWFjaCxcblx0RFJBRlRfU1RBVEUsXG5cdGdldCxcblx0c2V0LFxuXHRJbW1lclN0YXRlLFxuXHRpc0RyYWZ0YWJsZSxcblx0QXJjaHR5cGUsXG5cdGdldEFyY2h0eXBlLFxuXHRnZXRQbHVnaW5cbn0gZnJvbSBcIi4uL2ludGVybmFsXCJcblxuLyoqIFRha2VzIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSBkcmFmdCBhbmQgZmluYWxpemVzIGl0IChidXQgd2l0aG91dCBmcmVlemluZykuIFRoaXMgaXMgYSBncmVhdCB1dGlsaXR5IHRvIHByaW50IHRoZSBjdXJyZW50IHN0YXRlIGR1cmluZyBkZWJ1Z2dpbmcgKG5vIFByb3hpZXMgaW4gdGhlIHdheSkuIFRoZSBvdXRwdXQgb2YgY3VycmVudCBjYW4gYWxzbyBiZSBzYWZlbHkgbGVha2VkIG91dHNpZGUgdGhlIHByb2R1Y2VyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnQ8VD4odmFsdWU6IFQpOiBUXG5leHBvcnQgZnVuY3Rpb24gY3VycmVudCh2YWx1ZTogYW55KTogYW55IHtcblx0aWYgKCFpc0RyYWZ0KHZhbHVlKSkgZGllKDIyLCB2YWx1ZSlcblx0cmV0dXJuIGN1cnJlbnRJbXBsKHZhbHVlKVxufVxuXG5mdW5jdGlvbiBjdXJyZW50SW1wbCh2YWx1ZTogYW55KTogYW55IHtcblx0aWYgKCFpc0RyYWZ0YWJsZSh2YWx1ZSkpIHJldHVybiB2YWx1ZVxuXHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSB8IHVuZGVmaW5lZCA9IHZhbHVlW0RSQUZUX1NUQVRFXVxuXHRsZXQgY29weTogYW55XG5cdGNvbnN0IGFyY2hUeXBlID0gZ2V0QXJjaHR5cGUodmFsdWUpXG5cdGlmIChzdGF0ZSkge1xuXHRcdGlmIChcblx0XHRcdCFzdGF0ZS5tb2RpZmllZF8gJiZcblx0XHRcdChzdGF0ZS50eXBlXyA8IDQgfHwgIWdldFBsdWdpbihcIkVTNVwiKS5oYXNDaGFuZ2VzXyhzdGF0ZSBhcyBhbnkpKVxuXHRcdClcblx0XHRcdHJldHVybiBzdGF0ZS5iYXNlX1xuXHRcdC8vIE9wdGltaXphdGlvbjogYXZvaWQgZ2VuZXJhdGluZyBuZXcgZHJhZnRzIGR1cmluZyBjb3B5aW5nXG5cdFx0c3RhdGUuZmluYWxpemVkXyA9IHRydWVcblx0XHRjb3B5ID0gY29weUhlbHBlcih2YWx1ZSwgYXJjaFR5cGUpXG5cdFx0c3RhdGUuZmluYWxpemVkXyA9IGZhbHNlXG5cdH0gZWxzZSB7XG5cdFx0Y29weSA9IGNvcHlIZWxwZXIodmFsdWUsIGFyY2hUeXBlKVxuXHR9XG5cblx0ZWFjaChjb3B5LCAoa2V5LCBjaGlsZFZhbHVlKSA9PiB7XG5cdFx0aWYgKHN0YXRlICYmIGdldChzdGF0ZS5iYXNlXywga2V5KSA9PT0gY2hpbGRWYWx1ZSkgcmV0dXJuIC8vIG5vIG5lZWQgdG8gY29weSBvciBzZWFyY2ggaW4gc29tZXRoaW5nIHRoYXQgZGlkbid0IGNoYW5nZVxuXHRcdHNldChjb3B5LCBrZXksIGN1cnJlbnRJbXBsKGNoaWxkVmFsdWUpKVxuXHR9KVxuXHQvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBjb25zaWRlciBmcmVlemluZyBoZXJlLCBiYXNlZCBvbiB0aGUgY3VycmVudCBzZXR0aW5nc1xuXHRyZXR1cm4gYXJjaFR5cGUgPT09IEFyY2h0eXBlLlNldCA/IG5ldyBTZXQoY29weSkgOiBjb3B5XG59XG5cbmZ1bmN0aW9uIGNvcHlIZWxwZXIodmFsdWU6IGFueSwgYXJjaFR5cGU6IG51bWJlcik6IGFueSB7XG5cdC8vIGNyZWF0ZXMgYSBzaGFsbG93IGNvcHksIGV2ZW4gaWYgaXQgaXMgYSBtYXAgb3Igc2V0XG5cdHN3aXRjaCAoYXJjaFR5cGUpIHtcblx0XHRjYXNlIEFyY2h0eXBlLk1hcDpcblx0XHRcdHJldHVybiBuZXcgTWFwKHZhbHVlKVxuXHRcdGNhc2UgQXJjaHR5cGUuU2V0OlxuXHRcdFx0Ly8gU2V0IHdpbGwgYmUgY2xvbmVkIGFzIGFycmF5IHRlbXBvcmFyaWx5LCBzbyB0aGF0IHdlIGNhbiByZXBsYWNlIGluZGl2aWR1YWwgaXRlbXNcblx0XHRcdHJldHVybiBBcnJheS5mcm9tKHZhbHVlKVxuXHR9XG5cdHJldHVybiBzaGFsbG93Q29weSh2YWx1ZSlcbn1cbiIsICJpbXBvcnQge1xuXHRJbW1lclN0YXRlLFxuXHREcmFmdGVkLFxuXHRFUzVBcnJheVN0YXRlLFxuXHRFUzVPYmplY3RTdGF0ZSxcblx0ZWFjaCxcblx0aGFzLFxuXHRpc0RyYWZ0LFxuXHRsYXRlc3QsXG5cdERSQUZUX1NUQVRFLFxuXHRpcyxcblx0bG9hZFBsdWdpbixcblx0SW1tZXJTY29wZSxcblx0UHJveHlUeXBlLFxuXHRnZXRDdXJyZW50U2NvcGUsXG5cdGRpZSxcblx0bWFya0NoYW5nZWQsXG5cdG9iamVjdFRyYXBzLFxuXHRvd25LZXlzLFxuXHRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbnR5cGUgRVM1U3RhdGUgPSBFUzVBcnJheVN0YXRlIHwgRVM1T2JqZWN0U3RhdGVcblxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUVTNSgpIHtcblx0ZnVuY3Rpb24gd2lsbEZpbmFsaXplRVM1Xyhcblx0XHRzY29wZTogSW1tZXJTY29wZSxcblx0XHRyZXN1bHQ6IGFueSxcblx0XHRpc1JlcGxhY2VkOiBib29sZWFuXG5cdCkge1xuXHRcdGlmICghaXNSZXBsYWNlZCkge1xuXHRcdFx0aWYgKHNjb3BlLnBhdGNoZXNfKSB7XG5cdFx0XHRcdG1hcmtDaGFuZ2VzUmVjdXJzaXZlbHkoc2NvcGUuZHJhZnRzXyFbMF0pXG5cdFx0XHR9XG5cdFx0XHQvLyBUaGlzIGlzIGZhc3RlciB3aGVuIHdlIGRvbid0IGNhcmUgYWJvdXQgd2hpY2ggYXR0cmlidXRlcyBjaGFuZ2VkLlxuXHRcdFx0bWFya0NoYW5nZXNTd2VlcChzY29wZS5kcmFmdHNfKVxuXHRcdH1cblx0XHQvLyBXaGVuIGEgY2hpbGQgZHJhZnQgaXMgcmV0dXJuZWQsIGxvb2sgZm9yIGNoYW5nZXMuXG5cdFx0ZWxzZSBpZiAoXG5cdFx0XHRpc0RyYWZ0KHJlc3VsdCkgJiZcblx0XHRcdChyZXN1bHRbRFJBRlRfU1RBVEVdIGFzIEVTNVN0YXRlKS5zY29wZV8gPT09IHNjb3BlXG5cdFx0KSB7XG5cdFx0XHRtYXJrQ2hhbmdlc1N3ZWVwKHNjb3BlLmRyYWZ0c18pXG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gY3JlYXRlRVM1RHJhZnQoaXNBcnJheTogYm9vbGVhbiwgYmFzZTogYW55KSB7XG5cdFx0aWYgKGlzQXJyYXkpIHtcblx0XHRcdGNvbnN0IGRyYWZ0ID0gbmV3IEFycmF5KGJhc2UubGVuZ3RoKVxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBiYXNlLmxlbmd0aDsgaSsrKVxuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZHJhZnQsIFwiXCIgKyBpLCBwcm94eVByb3BlcnR5KGksIHRydWUpKVxuXHRcdFx0cmV0dXJuIGRyYWZ0XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGRlc2NyaXB0b3JzID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhiYXNlKVxuXHRcdFx0ZGVsZXRlIGRlc2NyaXB0b3JzW0RSQUZUX1NUQVRFIGFzIGFueV1cblx0XHRcdGNvbnN0IGtleXMgPSBvd25LZXlzKGRlc2NyaXB0b3JzKVxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGtleTogYW55ID0ga2V5c1tpXVxuXHRcdFx0XHRkZXNjcmlwdG9yc1trZXldID0gcHJveHlQcm9wZXJ0eShcblx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0aXNBcnJheSB8fCAhIWRlc2NyaXB0b3JzW2tleV0uZW51bWVyYWJsZVxuXHRcdFx0XHQpXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoYmFzZSksIGRlc2NyaXB0b3JzKVxuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGNyZWF0ZUVTNVByb3h5XzxUPihcblx0XHRiYXNlOiBULFxuXHRcdHBhcmVudD86IEltbWVyU3RhdGVcblx0KTogRHJhZnRlZDxULCBFUzVPYmplY3RTdGF0ZSB8IEVTNUFycmF5U3RhdGU+IHtcblx0XHRjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShiYXNlKVxuXHRcdGNvbnN0IGRyYWZ0ID0gY3JlYXRlRVM1RHJhZnQoaXNBcnJheSwgYmFzZSlcblxuXHRcdGNvbnN0IHN0YXRlOiBFUzVPYmplY3RTdGF0ZSB8IEVTNUFycmF5U3RhdGUgPSB7XG5cdFx0XHR0eXBlXzogaXNBcnJheSA/IFByb3h5VHlwZS5FUzVBcnJheSA6IChQcm94eVR5cGUuRVM1T2JqZWN0IGFzIGFueSksXG5cdFx0XHRzY29wZV86IHBhcmVudCA/IHBhcmVudC5zY29wZV8gOiBnZXRDdXJyZW50U2NvcGUoKSxcblx0XHRcdG1vZGlmaWVkXzogZmFsc2UsXG5cdFx0XHRmaW5hbGl6ZWRfOiBmYWxzZSxcblx0XHRcdGFzc2lnbmVkXzoge30sXG5cdFx0XHRwYXJlbnRfOiBwYXJlbnQsXG5cdFx0XHQvLyBiYXNlIGlzIHRoZSBvYmplY3Qgd2UgYXJlIGRyYWZ0aW5nXG5cdFx0XHRiYXNlXzogYmFzZSxcblx0XHRcdC8vIGRyYWZ0IGlzIHRoZSBkcmFmdCBvYmplY3QgaXRzZWxmLCB0aGF0IHRyYXBzIGFsbCByZWFkcyBhbmQgcmVhZHMgZnJvbSBlaXRoZXIgdGhlIGJhc2UgKGlmIHVubW9kaWZpZWQpIG9yIGNvcHkgKGlmIG1vZGlmaWVkKVxuXHRcdFx0ZHJhZnRfOiBkcmFmdCxcblx0XHRcdGNvcHlfOiBudWxsLFxuXHRcdFx0cmV2b2tlZF86IGZhbHNlLFxuXHRcdFx0aXNNYW51YWxfOiBmYWxzZVxuXHRcdH1cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkcmFmdCwgRFJBRlRfU1RBVEUsIHtcblx0XHRcdHZhbHVlOiBzdGF0ZSxcblx0XHRcdC8vIGVudW1lcmFibGU6IGZhbHNlIDwtIHRoZSBkZWZhdWx0XG5cdFx0XHR3cml0YWJsZTogdHJ1ZVxuXHRcdH0pXG5cdFx0cmV0dXJuIGRyYWZ0XG5cdH1cblxuXHQvLyBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBhcmUgcmVjeWNsZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNyZWF0ZSBhIGdldCBhbmQgc2V0IGNsb3N1cmUgcGVyIHByb3BlcnR5LFxuXHQvLyBidXQgc2hhcmUgdGhlbSBhbGwgaW5zdGVhZFxuXHRjb25zdCBkZXNjcmlwdG9yczoge1twcm9wOiBzdHJpbmddOiBQcm9wZXJ0eURlc2NyaXB0b3J9ID0ge31cblxuXHRmdW5jdGlvbiBwcm94eVByb3BlcnR5KFxuXHRcdHByb3A6IHN0cmluZyB8IG51bWJlcixcblx0XHRlbnVtZXJhYmxlOiBib29sZWFuXG5cdCk6IFByb3BlcnR5RGVzY3JpcHRvciB7XG5cdFx0bGV0IGRlc2MgPSBkZXNjcmlwdG9yc1twcm9wXVxuXHRcdGlmIChkZXNjKSB7XG5cdFx0XHRkZXNjLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlXG5cdFx0fSBlbHNlIHtcblx0XHRcdGRlc2NyaXB0b3JzW3Byb3BdID0gZGVzYyA9IHtcblx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRlbnVtZXJhYmxlLFxuXHRcdFx0XHRnZXQodGhpczogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0XHRcdGlmIChfX0RFVl9fKSBhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdHJldHVybiBvYmplY3RUcmFwcy5nZXQoc3RhdGUsIHByb3ApXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNldCh0aGlzOiBhbnksIHZhbHVlKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0XHRcdGlmIChfX0RFVl9fKSBhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdG9iamVjdFRyYXBzLnNldChzdGF0ZSwgcHJvcCwgdmFsdWUpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGRlc2Ncblx0fVxuXG5cdC8vIFRoaXMgbG9va3MgZXhwZW5zaXZlLCBidXQgb25seSBwcm94aWVzIGFyZSB2aXNpdGVkLCBhbmQgb25seSBvYmplY3RzIHdpdGhvdXQga25vd24gY2hhbmdlcyBhcmUgc2Nhbm5lZC5cblx0ZnVuY3Rpb24gbWFya0NoYW5nZXNTd2VlcChkcmFmdHM6IERyYWZ0ZWQ8YW55LCBJbW1lclN0YXRlPltdKSB7XG5cdFx0Ly8gVGhlIG5hdHVyYWwgb3JkZXIgb2YgZHJhZnRzIGluIHRoZSBgc2NvcGVgIGFycmF5IGlzIGJhc2VkIG9uIHdoZW4gdGhleVxuXHRcdC8vIHdlcmUgYWNjZXNzZWQuIEJ5IHByb2Nlc3NpbmcgZHJhZnRzIGluIHJldmVyc2UgbmF0dXJhbCBvcmRlciwgd2UgaGF2ZSBhXG5cdFx0Ly8gYmV0dGVyIGNoYW5jZSBvZiBwcm9jZXNzaW5nIGxlYWYgbm9kZXMgZmlyc3QuIFdoZW4gYSBsZWFmIG5vZGUgaXMga25vd24gdG9cblx0XHQvLyBoYXZlIGNoYW5nZWQsIHdlIGNhbiBhdm9pZCBhbnkgdHJhdmVyc2FsIG9mIGl0cyBhbmNlc3RvciBub2Rlcy5cblx0XHRmb3IgKGxldCBpID0gZHJhZnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogRVM1U3RhdGUgPSBkcmFmdHNbaV1bRFJBRlRfU1RBVEVdXG5cdFx0XHRpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuXHRcdFx0XHRzd2l0Y2ggKHN0YXRlLnR5cGVfKSB7XG5cdFx0XHRcdFx0Y2FzZSBQcm94eVR5cGUuRVM1QXJyYXk6XG5cdFx0XHRcdFx0XHRpZiAoaGFzQXJyYXlDaGFuZ2VzKHN0YXRlKSkgbWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGNhc2UgUHJveHlUeXBlLkVTNU9iamVjdDpcblx0XHRcdFx0XHRcdGlmIChoYXNPYmplY3RDaGFuZ2VzKHN0YXRlKSkgbWFya0NoYW5nZWQoc3RhdGUpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gbWFya0NoYW5nZXNSZWN1cnNpdmVseShvYmplY3Q6IGFueSkge1xuXHRcdGlmICghb2JqZWN0IHx8IHR5cGVvZiBvYmplY3QgIT09IFwib2JqZWN0XCIpIHJldHVyblxuXHRcdGNvbnN0IHN0YXRlOiBFUzVTdGF0ZSB8IHVuZGVmaW5lZCA9IG9iamVjdFtEUkFGVF9TVEFURV1cblx0XHRpZiAoIXN0YXRlKSByZXR1cm5cblx0XHRjb25zdCB7YmFzZV8sIGRyYWZ0XywgYXNzaWduZWRfLCB0eXBlX30gPSBzdGF0ZVxuXHRcdGlmICh0eXBlXyA9PT0gUHJveHlUeXBlLkVTNU9iamVjdCkge1xuXHRcdFx0Ly8gTG9vayBmb3IgYWRkZWQga2V5cy5cblx0XHRcdC8vIHByb2JhYmx5IHRoZXJlIGlzIGEgZmFzdGVyIHdheSB0byBkZXRlY3QgY2hhbmdlcywgYXMgc3dlZXAgKyByZWN1cnNlIHNlZW1zIHRvIGRvIHNvbWVcblx0XHRcdC8vIHVubmVjZXNzYXJ5IHdvcmsuXG5cdFx0XHQvLyBhbHNvOiBwcm9iYWJseSB3ZSBjYW4gc3RvcmUgdGhlIGluZm9ybWF0aW9uIHdlIGRldGVjdCBoZXJlLCB0byBzcGVlZCB1cCB0cmVlIGZpbmFsaXphdGlvbiFcblx0XHRcdGVhY2goZHJhZnRfLCBrZXkgPT4ge1xuXHRcdFx0XHRpZiAoKGtleSBhcyBhbnkpID09PSBEUkFGVF9TVEFURSkgcmV0dXJuXG5cdFx0XHRcdC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG5cdFx0XHRcdGlmICgoYmFzZV8gYXMgYW55KVtrZXldID09PSB1bmRlZmluZWQgJiYgIWhhcyhiYXNlXywga2V5KSkge1xuXHRcdFx0XHRcdGFzc2lnbmVkX1trZXldID0gdHJ1ZVxuXHRcdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHR9IGVsc2UgaWYgKCFhc3NpZ25lZF9ba2V5XSkge1xuXHRcdFx0XHRcdC8vIE9ubHkgdW50b3VjaGVkIHByb3BlcnRpZXMgdHJpZ2dlciByZWN1cnNpb24uXG5cdFx0XHRcdFx0bWFya0NoYW5nZXNSZWN1cnNpdmVseShkcmFmdF9ba2V5XSlcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC8vIExvb2sgZm9yIHJlbW92ZWQga2V5cy5cblx0XHRcdGVhY2goYmFzZV8sIGtleSA9PiB7XG5cdFx0XHRcdC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG5cdFx0XHRcdGlmIChkcmFmdF9ba2V5XSA9PT0gdW5kZWZpbmVkICYmICFoYXMoZHJhZnRfLCBrZXkpKSB7XG5cdFx0XHRcdFx0YXNzaWduZWRfW2tleV0gPSBmYWxzZVxuXHRcdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0gZWxzZSBpZiAodHlwZV8gPT09IFByb3h5VHlwZS5FUzVBcnJheSkge1xuXHRcdFx0aWYgKGhhc0FycmF5Q2hhbmdlcyhzdGF0ZSBhcyBFUzVBcnJheVN0YXRlKSkge1xuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0YXNzaWduZWRfLmxlbmd0aCA9IHRydWVcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRyYWZ0Xy5sZW5ndGggPCBiYXNlXy5sZW5ndGgpIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IGRyYWZ0Xy5sZW5ndGg7IGkgPCBiYXNlXy5sZW5ndGg7IGkrKykgYXNzaWduZWRfW2ldID0gZmFsc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBiYXNlXy5sZW5ndGg7IGkgPCBkcmFmdF8ubGVuZ3RoOyBpKyspIGFzc2lnbmVkX1tpXSA9IHRydWVcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWluaW11bSBjb3VudCBpcyBlbm91Z2gsIHRoZSBvdGhlciBwYXJ0cyBoYXMgYmVlbiBwcm9jZXNzZWQuXG5cdFx0XHRjb25zdCBtaW4gPSBNYXRoLm1pbihkcmFmdF8ubGVuZ3RoLCBiYXNlXy5sZW5ndGgpXG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcblx0XHRcdFx0Ly8gT25seSB1bnRvdWNoZWQgaW5kaWNlcyB0cmlnZ2VyIHJlY3Vyc2lvbi5cblx0XHRcdFx0aWYgKCFkcmFmdF8uaGFzT3duUHJvcGVydHkoaSkpIHtcblx0XHRcdFx0XHRhc3NpZ25lZF9baV0gPSB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGFzc2lnbmVkX1tpXSA9PT0gdW5kZWZpbmVkKSBtYXJrQ2hhbmdlc1JlY3Vyc2l2ZWx5KGRyYWZ0X1tpXSlcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBoYXNPYmplY3RDaGFuZ2VzKHN0YXRlOiBFUzVPYmplY3RTdGF0ZSkge1xuXHRcdGNvbnN0IHtiYXNlXywgZHJhZnRffSA9IHN0YXRlXG5cblx0XHQvLyBTZWFyY2ggZm9yIGFkZGVkIGtleXMgYW5kIGNoYW5nZWQga2V5cy4gU3RhcnQgYXQgdGhlIGJhY2ssIGJlY2F1c2Vcblx0XHQvLyBub24tbnVtZXJpYyBrZXlzIGFyZSBvcmRlcmVkIGJ5IHRpbWUgb2YgZGVmaW5pdGlvbiBvbiB0aGUgb2JqZWN0LlxuXHRcdGNvbnN0IGtleXMgPSBvd25LZXlzKGRyYWZ0Xylcblx0XHRmb3IgKGxldCBpID0ga2V5cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0Y29uc3Qga2V5OiBhbnkgPSBrZXlzW2ldXG5cdFx0XHRpZiAoa2V5ID09PSBEUkFGVF9TVEFURSkgY29udGludWVcblx0XHRcdGNvbnN0IGJhc2VWYWx1ZSA9IGJhc2VfW2tleV1cblx0XHRcdC8vIFRoZSBgdW5kZWZpbmVkYCBjaGVjayBpcyBhIGZhc3QgcGF0aCBmb3IgcHJlLWV4aXN0aW5nIGtleXMuXG5cdFx0XHRpZiAoYmFzZVZhbHVlID09PSB1bmRlZmluZWQgJiYgIWhhcyhiYXNlXywga2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0fVxuXHRcdFx0Ly8gT25jZSBhIGJhc2Uga2V5IGlzIGRlbGV0ZWQsIGZ1dHVyZSBjaGFuZ2VzIGdvIHVuZGV0ZWN0ZWQsIGJlY2F1c2UgaXRzXG5cdFx0XHQvLyBkZXNjcmlwdG9yIGlzIGVyYXNlZC4gVGhpcyBicmFuY2ggZGV0ZWN0cyBhbnkgbWlzc2VkIGNoYW5nZXMuXG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmFsdWUgPSBkcmFmdF9ba2V5XVxuXHRcdFx0XHRjb25zdCBzdGF0ZTogSW1tZXJTdGF0ZSA9IHZhbHVlICYmIHZhbHVlW0RSQUZUX1NUQVRFXVxuXHRcdFx0XHRpZiAoc3RhdGUgPyBzdGF0ZS5iYXNlXyAhPT0gYmFzZVZhbHVlIDogIWlzKHZhbHVlLCBiYXNlVmFsdWUpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEF0IHRoaXMgcG9pbnQsIG5vIGtleXMgd2VyZSBhZGRlZCBvciBjaGFuZ2VkLlxuXHRcdC8vIENvbXBhcmUga2V5IGNvdW50IHRvIGRldGVybWluZSBpZiBrZXlzIHdlcmUgZGVsZXRlZC5cblx0XHRjb25zdCBiYXNlSXNEcmFmdCA9ICEhYmFzZV9bRFJBRlRfU1RBVEUgYXMgYW55XVxuXHRcdHJldHVybiBrZXlzLmxlbmd0aCAhPT0gb3duS2V5cyhiYXNlXykubGVuZ3RoICsgKGJhc2VJc0RyYWZ0ID8gMCA6IDEpIC8vICsgMSB0byBjb3JyZWN0IGZvciBEUkFGVF9TVEFURVxuXHR9XG5cblx0ZnVuY3Rpb24gaGFzQXJyYXlDaGFuZ2VzKHN0YXRlOiBFUzVBcnJheVN0YXRlKSB7XG5cdFx0Y29uc3Qge2RyYWZ0X30gPSBzdGF0ZVxuXHRcdGlmIChkcmFmdF8ubGVuZ3RoICE9PSBzdGF0ZS5iYXNlXy5sZW5ndGgpIHJldHVybiB0cnVlXG5cdFx0Ly8gU2VlICMxMTZcblx0XHQvLyBJZiB3ZSBmaXJzdCBzaG9ydGVuIHRoZSBsZW5ndGgsIG91ciBhcnJheSBpbnRlcmNlcHRvcnMgd2lsbCBiZSByZW1vdmVkLlxuXHRcdC8vIElmIGFmdGVyIHRoYXQgbmV3IGl0ZW1zIGFyZSBhZGRlZCwgcmVzdWx0IGluIHRoZSBzYW1lIG9yaWdpbmFsIGxlbmd0aCxcblx0XHQvLyB0aG9zZSBsYXN0IGl0ZW1zIHdpbGwgaGF2ZSBubyBpbnRlcmNlcHRpbmcgcHJvcGVydHkuXG5cdFx0Ly8gU28gaWYgdGhlcmUgaXMgbm8gb3duIGRlc2NyaXB0b3Igb24gdGhlIGxhc3QgcG9zaXRpb24sIHdlIGtub3cgdGhhdCBpdGVtcyB3ZXJlIHJlbW92ZWQgYW5kIGFkZGVkXG5cdFx0Ly8gTi5CLjogc3BsaWNlLCB1bnNoaWZ0LCBldGMgb25seSBzaGlmdCB2YWx1ZXMgYXJvdW5kLCBidXQgbm90IHByb3AgZGVzY3JpcHRvcnMsIHNvIHdlIG9ubHkgaGF2ZSB0byBjaGVja1xuXHRcdC8vIHRoZSBsYXN0IG9uZVxuXHRcdC8vIGxhc3QgZGVzY3JpcHRvciBjYW4gYmUgbm90IGEgdHJhcCwgaWYgdGhlIGFycmF5IHdhcyBleHRlbmRlZFxuXHRcdGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuXHRcdFx0ZHJhZnRfLFxuXHRcdFx0ZHJhZnRfLmxlbmd0aCAtIDFcblx0XHQpXG5cdFx0Ly8gZGVzY3JpcHRvciBjYW4gYmUgbnVsbCwgYnV0IG9ubHkgZm9yIG5ld2x5IGNyZWF0ZWQgc3BhcnNlIGFycmF5cywgZWcuIG5ldyBBcnJheSgxMClcblx0XHRpZiAoZGVzY3JpcHRvciAmJiAhZGVzY3JpcHRvci5nZXQpIHJldHVybiB0cnVlXG5cdFx0Ly8gaWYgd2UgbWlzcyBhIHByb3BlcnR5LCBpdCBoYXMgYmVlbiBkZWxldGVkLCBzbyBhcnJheSBwcm9ib2JhbHkgY2hhbmdlZFxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZHJhZnRfLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoIWRyYWZ0Xy5oYXNPd25Qcm9wZXJ0eShpKSkgcmV0dXJuIHRydWVcblx0XHR9XG5cdFx0Ly8gRm9yIGFsbCBvdGhlciBjYXNlcywgd2UgZG9uJ3QgaGF2ZSB0byBjb21wYXJlLCBhcyB0aGV5IHdvdWxkIGhhdmUgYmVlbiBwaWNrZWQgdXAgYnkgdGhlIGluZGV4IHNldHRlcnNcblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxuXG5cdGZ1bmN0aW9uIGhhc0NoYW5nZXNfKHN0YXRlOiBFUzVTdGF0ZSkge1xuXHRcdHJldHVybiBzdGF0ZS50eXBlXyA9PT0gUHJveHlUeXBlLkVTNU9iamVjdFxuXHRcdFx0PyBoYXNPYmplY3RDaGFuZ2VzKHN0YXRlKVxuXHRcdFx0OiBoYXNBcnJheUNoYW5nZXMoc3RhdGUpXG5cdH1cblxuXHRmdW5jdGlvbiBhc3NlcnRVbnJldm9rZWQoc3RhdGU6IGFueSAvKkVTNVN0YXRlIHwgTWFwU3RhdGUgfCBTZXRTdGF0ZSovKSB7XG5cdFx0aWYgKHN0YXRlLnJldm9rZWRfKSBkaWUoMywgSlNPTi5zdHJpbmdpZnkobGF0ZXN0KHN0YXRlKSkpXG5cdH1cblxuXHRsb2FkUGx1Z2luKFwiRVM1XCIsIHtcblx0XHRjcmVhdGVFUzVQcm94eV8sXG5cdFx0d2lsbEZpbmFsaXplRVM1Xyxcblx0XHRoYXNDaGFuZ2VzX1xuXHR9KVxufVxuIiwgImltcG9ydCB7aW1tZXJhYmxlfSBmcm9tIFwiLi4vaW1tZXJcIlxuaW1wb3J0IHtcblx0SW1tZXJTdGF0ZSxcblx0UGF0Y2gsXG5cdFNldFN0YXRlLFxuXHRFUzVBcnJheVN0YXRlLFxuXHRQcm94eUFycmF5U3RhdGUsXG5cdE1hcFN0YXRlLFxuXHRFUzVPYmplY3RTdGF0ZSxcblx0UHJveHlPYmplY3RTdGF0ZSxcblx0UGF0Y2hQYXRoLFxuXHRnZXQsXG5cdGVhY2gsXG5cdGhhcyxcblx0Z2V0QXJjaHR5cGUsXG5cdGlzU2V0LFxuXHRpc01hcCxcblx0bG9hZFBsdWdpbixcblx0UHJveHlUeXBlLFxuXHRBcmNodHlwZSxcblx0ZGllLFxuXHRpc0RyYWZ0LFxuXHRpc0RyYWZ0YWJsZSxcblx0Tk9USElOR1xufSBmcm9tIFwiLi4vaW50ZXJuYWxcIlxuXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUGF0Y2hlcygpIHtcblx0Y29uc3QgUkVQTEFDRSA9IFwicmVwbGFjZVwiXG5cdGNvbnN0IEFERCA9IFwiYWRkXCJcblx0Y29uc3QgUkVNT1ZFID0gXCJyZW1vdmVcIlxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlUGF0Y2hlc18oXG5cdFx0c3RhdGU6IEltbWVyU3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCk6IHZvaWQge1xuXHRcdHN3aXRjaCAoc3RhdGUudHlwZV8pIHtcblx0XHRcdGNhc2UgUHJveHlUeXBlLlByb3h5T2JqZWN0OlxuXHRcdFx0Y2FzZSBQcm94eVR5cGUuRVM1T2JqZWN0OlxuXHRcdFx0Y2FzZSBQcm94eVR5cGUuTWFwOlxuXHRcdFx0XHRyZXR1cm4gZ2VuZXJhdGVQYXRjaGVzRnJvbUFzc2lnbmVkKFxuXHRcdFx0XHRcdHN0YXRlLFxuXHRcdFx0XHRcdGJhc2VQYXRoLFxuXHRcdFx0XHRcdHBhdGNoZXMsXG5cdFx0XHRcdFx0aW52ZXJzZVBhdGNoZXNcblx0XHRcdFx0KVxuXHRcdFx0Y2FzZSBQcm94eVR5cGUuRVM1QXJyYXk6XG5cdFx0XHRjYXNlIFByb3h5VHlwZS5Qcm94eUFycmF5OlxuXHRcdFx0XHRyZXR1cm4gZ2VuZXJhdGVBcnJheVBhdGNoZXMoc3RhdGUsIGJhc2VQYXRoLCBwYXRjaGVzLCBpbnZlcnNlUGF0Y2hlcylcblx0XHRcdGNhc2UgUHJveHlUeXBlLlNldDpcblx0XHRcdFx0cmV0dXJuIGdlbmVyYXRlU2V0UGF0Y2hlcyhcblx0XHRcdFx0XHQoc3RhdGUgYXMgYW55KSBhcyBTZXRTdGF0ZSxcblx0XHRcdFx0XHRiYXNlUGF0aCxcblx0XHRcdFx0XHRwYXRjaGVzLFxuXHRcdFx0XHRcdGludmVyc2VQYXRjaGVzXG5cdFx0XHRcdClcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBnZW5lcmF0ZUFycmF5UGF0Y2hlcyhcblx0XHRzdGF0ZTogRVM1QXJyYXlTdGF0ZSB8IFByb3h5QXJyYXlTdGF0ZSxcblx0XHRiYXNlUGF0aDogUGF0Y2hQYXRoLFxuXHRcdHBhdGNoZXM6IFBhdGNoW10sXG5cdFx0aW52ZXJzZVBhdGNoZXM6IFBhdGNoW11cblx0KSB7XG5cdFx0bGV0IHtiYXNlXywgYXNzaWduZWRffSA9IHN0YXRlXG5cdFx0bGV0IGNvcHlfID0gc3RhdGUuY29weV8hXG5cblx0XHQvLyBSZWR1Y2UgY29tcGxleGl0eSBieSBlbnN1cmluZyBgYmFzZWAgaXMgbmV2ZXIgbG9uZ2VyLlxuXHRcdGlmIChjb3B5Xy5sZW5ndGggPCBiYXNlXy5sZW5ndGgpIHtcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdDtbYmFzZV8sIGNvcHlfXSA9IFtjb3B5XywgYmFzZV9dXG5cdFx0XHQ7W3BhdGNoZXMsIGludmVyc2VQYXRjaGVzXSA9IFtpbnZlcnNlUGF0Y2hlcywgcGF0Y2hlc11cblx0XHR9XG5cblx0XHQvLyBQcm9jZXNzIHJlcGxhY2VkIGluZGljZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBiYXNlXy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKGFzc2lnbmVkX1tpXSAmJiBjb3B5X1tpXSAhPT0gYmFzZV9baV0pIHtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pXG5cdFx0XHRcdHBhdGNoZXMucHVzaCh7XG5cdFx0XHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHQvLyBOZWVkIHRvIG1heWJlIGNsb25lIGl0LCBhcyBpdCBjYW4gaW4gZmFjdCBiZSB0aGUgb3JpZ2luYWwgdmFsdWVcblx0XHRcdFx0XHQvLyBkdWUgdG8gdGhlIGJhc2UvY29weSBpbnZlcnNpb24gYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZnVuY3Rpb25cblx0XHRcdFx0XHR2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQoY29weV9baV0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGludmVyc2VQYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRcdG9wOiBSRVBMQUNFLFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKGJhc2VfW2ldKVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByb2Nlc3MgYWRkZWQgaW5kaWNlcy5cblx0XHRmb3IgKGxldCBpID0gYmFzZV8ubGVuZ3RoOyBpIDwgY29weV8ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKVxuXHRcdFx0cGF0Y2hlcy5wdXNoKHtcblx0XHRcdFx0b3A6IEFERCxcblx0XHRcdFx0cGF0aCxcblx0XHRcdFx0Ly8gTmVlZCB0byBtYXliZSBjbG9uZSBpdCwgYXMgaXQgY2FuIGluIGZhY3QgYmUgdGhlIG9yaWdpbmFsIHZhbHVlXG5cdFx0XHRcdC8vIGR1ZSB0byB0aGUgYmFzZS9jb3B5IGludmVyc2lvbiBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmdW5jdGlvblxuXHRcdFx0XHR2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQoY29weV9baV0pXG5cdFx0XHR9KVxuXHRcdH1cblx0XHRpZiAoYmFzZV8ubGVuZ3RoIDwgY29weV8ubGVuZ3RoKSB7XG5cdFx0XHRpbnZlcnNlUGF0Y2hlcy5wdXNoKHtcblx0XHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRcdHBhdGg6IGJhc2VQYXRoLmNvbmNhdChbXCJsZW5ndGhcIl0pLFxuXHRcdFx0XHR2YWx1ZTogYmFzZV8ubGVuZ3RoXG5cdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cdC8vIFRoaXMgaXMgdXNlZCBmb3IgYm90aCBNYXAgb2JqZWN0cyBhbmQgbm9ybWFsIG9iamVjdHMuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlUGF0Y2hlc0Zyb21Bc3NpZ25lZChcblx0XHRzdGF0ZTogTWFwU3RhdGUgfCBFUzVPYmplY3RTdGF0ZSB8IFByb3h5T2JqZWN0U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGNvbnN0IHtiYXNlXywgY29weV99ID0gc3RhdGVcblx0XHRlYWNoKHN0YXRlLmFzc2lnbmVkXyEsIChrZXksIGFzc2lnbmVkVmFsdWUpID0+IHtcblx0XHRcdGNvbnN0IG9yaWdWYWx1ZSA9IGdldChiYXNlXywga2V5KVxuXHRcdFx0Y29uc3QgdmFsdWUgPSBnZXQoY29weV8hLCBrZXkpXG5cdFx0XHRjb25zdCBvcCA9ICFhc3NpZ25lZFZhbHVlID8gUkVNT1ZFIDogaGFzKGJhc2VfLCBrZXkpID8gUkVQTEFDRSA6IEFERFxuXHRcdFx0aWYgKG9yaWdWYWx1ZSA9PT0gdmFsdWUgJiYgb3AgPT09IFJFUExBQ0UpIHJldHVyblxuXHRcdFx0Y29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChrZXkgYXMgYW55KVxuXHRcdFx0cGF0Y2hlcy5wdXNoKG9wID09PSBSRU1PVkUgPyB7b3AsIHBhdGh9IDoge29wLCBwYXRoLCB2YWx1ZX0pXG5cdFx0XHRpbnZlcnNlUGF0Y2hlcy5wdXNoKFxuXHRcdFx0XHRvcCA9PT0gQUREXG5cdFx0XHRcdFx0PyB7b3A6IFJFTU9WRSwgcGF0aH1cblx0XHRcdFx0XHQ6IG9wID09PSBSRU1PVkVcblx0XHRcdFx0XHQ/IHtvcDogQURELCBwYXRoLCB2YWx1ZTogY2xvbmVQYXRjaFZhbHVlSWZOZWVkZWQob3JpZ1ZhbHVlKX1cblx0XHRcdFx0XHQ6IHtvcDogUkVQTEFDRSwgcGF0aCwgdmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKG9yaWdWYWx1ZSl9XG5cdFx0XHQpXG5cdFx0fSlcblx0fVxuXG5cdGZ1bmN0aW9uIGdlbmVyYXRlU2V0UGF0Y2hlcyhcblx0XHRzdGF0ZTogU2V0U3RhdGUsXG5cdFx0YmFzZVBhdGg6IFBhdGNoUGF0aCxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCkge1xuXHRcdGxldCB7YmFzZV8sIGNvcHlffSA9IHN0YXRlXG5cblx0XHRsZXQgaSA9IDBcblx0XHRiYXNlXy5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB7XG5cdFx0XHRpZiAoIWNvcHlfIS5oYXModmFsdWUpKSB7XG5cdFx0XHRcdGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKVxuXHRcdFx0XHRwYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRcdG9wOiBSRU1PVkUsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRpbnZlcnNlUGF0Y2hlcy51bnNoaWZ0KHtcblx0XHRcdFx0XHRvcDogQURELFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHRcdGkrK1xuXHRcdH0pXG5cdFx0aSA9IDBcblx0XHRjb3B5XyEuZm9yRWFjaCgodmFsdWU6IGFueSkgPT4ge1xuXHRcdFx0aWYgKCFiYXNlXy5oYXModmFsdWUpKSB7XG5cdFx0XHRcdGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKVxuXHRcdFx0XHRwYXRjaGVzLnB1c2goe1xuXHRcdFx0XHRcdG9wOiBBREQsXG5cdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHR2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRpbnZlcnNlUGF0Y2hlcy51bnNoaWZ0KHtcblx0XHRcdFx0XHRvcDogUkVNT1ZFLFxuXHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0dmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHRcdGkrK1xuXHRcdH0pXG5cdH1cblxuXHRmdW5jdGlvbiBnZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc18oXG5cdFx0YmFzZVZhbHVlOiBhbnksXG5cdFx0cmVwbGFjZW1lbnQ6IGFueSxcblx0XHRwYXRjaGVzOiBQYXRjaFtdLFxuXHRcdGludmVyc2VQYXRjaGVzOiBQYXRjaFtdXG5cdCk6IHZvaWQge1xuXHRcdHBhdGNoZXMucHVzaCh7XG5cdFx0XHRvcDogUkVQTEFDRSxcblx0XHRcdHBhdGg6IFtdLFxuXHRcdFx0dmFsdWU6IHJlcGxhY2VtZW50ID09PSBOT1RISU5HID8gdW5kZWZpbmVkIDogcmVwbGFjZW1lbnRcblx0XHR9KVxuXHRcdGludmVyc2VQYXRjaGVzLnB1c2goe1xuXHRcdFx0b3A6IFJFUExBQ0UsXG5cdFx0XHRwYXRoOiBbXSxcblx0XHRcdHZhbHVlOiBiYXNlVmFsdWVcblx0XHR9KVxuXHR9XG5cblx0ZnVuY3Rpb24gYXBwbHlQYXRjaGVzXzxUPihkcmFmdDogVCwgcGF0Y2hlczogUGF0Y2hbXSk6IFQge1xuXHRcdHBhdGNoZXMuZm9yRWFjaChwYXRjaCA9PiB7XG5cdFx0XHRjb25zdCB7cGF0aCwgb3B9ID0gcGF0Y2hcblxuXHRcdFx0bGV0IGJhc2U6IGFueSA9IGRyYWZ0XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudFR5cGUgPSBnZXRBcmNodHlwZShiYXNlKVxuXHRcdFx0XHRjb25zdCBwID0gXCJcIiArIHBhdGhbaV1cblx0XHRcdFx0Ly8gU2VlICM3MzgsIGF2b2lkIHByb3RvdHlwZSBwb2xsdXRpb25cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChwYXJlbnRUeXBlID09PSBBcmNodHlwZS5PYmplY3QgfHwgcGFyZW50VHlwZSA9PT0gQXJjaHR5cGUuQXJyYXkpICYmXG5cdFx0XHRcdFx0KHAgPT09IFwiX19wcm90b19fXCIgfHwgcCA9PT0gXCJjb25zdHJ1Y3RvclwiKVxuXHRcdFx0XHQpXG5cdFx0XHRcdFx0ZGllKDI0KVxuXHRcdFx0XHRpZiAodHlwZW9mIGJhc2UgPT09IFwiZnVuY3Rpb25cIiAmJiBwID09PSBcInByb3RvdHlwZVwiKSBkaWUoMjQpXG5cdFx0XHRcdGJhc2UgPSBnZXQoYmFzZSwgcClcblx0XHRcdFx0aWYgKHR5cGVvZiBiYXNlICE9PSBcIm9iamVjdFwiKSBkaWUoMTUsIHBhdGguam9pbihcIi9cIikpXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHR5cGUgPSBnZXRBcmNodHlwZShiYXNlKVxuXHRcdFx0Y29uc3QgdmFsdWUgPSBkZWVwQ2xvbmVQYXRjaFZhbHVlKHBhdGNoLnZhbHVlKSAvLyB1c2VkIHRvIGNsb25lIHBhdGNoIHRvIGVuc3VyZSBvcmlnaW5hbCBwYXRjaCBpcyBub3QgbW9kaWZpZWQsIHNlZSAjNDExXG5cdFx0XHRjb25zdCBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV1cblx0XHRcdHN3aXRjaCAob3ApIHtcblx0XHRcdFx0Y2FzZSBSRVBMQUNFOlxuXHRcdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBBcmNodHlwZS5NYXA6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiYXNlLnNldChrZXksIHZhbHVlKVxuXHRcdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRcdFx0XHRcdGNhc2UgQXJjaHR5cGUuU2V0OlxuXHRcdFx0XHRcdFx0XHRkaWUoMTYpXG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHQvLyBpZiB2YWx1ZSBpcyBhbiBvYmplY3QsIHRoZW4gaXQncyBhc3NpZ25lZCBieSByZWZlcmVuY2Vcblx0XHRcdFx0XHRcdFx0Ly8gaW4gdGhlIGZvbGxvd2luZyBhZGQgb3IgcmVtb3ZlIG9wcywgdGhlIHZhbHVlIGZpZWxkIGluc2lkZSB0aGUgcGF0Y2ggd2lsbCBhbHNvIGJlIG1vZGlmeWVkXG5cdFx0XHRcdFx0XHRcdC8vIHNvIHdlIHVzZSB2YWx1ZSBmcm9tIHRoZSBjbG9uZWQgcGF0Y2hcblx0XHRcdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGJhc2Vba2V5XSA9IHZhbHVlKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBBREQ6XG5cdFx0XHRcdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRcdFx0XHRjYXNlIEFyY2h0eXBlLkFycmF5OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4ga2V5ID09PSBcIi1cIlxuXHRcdFx0XHRcdFx0XHRcdD8gYmFzZS5wdXNoKHZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdDogYmFzZS5zcGxpY2Uoa2V5IGFzIGFueSwgMCwgdmFsdWUpXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2h0eXBlLk1hcDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2Uuc2V0KGtleSwgdmFsdWUpXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2h0eXBlLlNldDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2UuYWRkKHZhbHVlKVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChiYXNlW2tleV0gPSB2YWx1ZSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgUkVNT1ZFOlxuXHRcdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBBcmNodHlwZS5BcnJheTpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2Uuc3BsaWNlKGtleSBhcyBhbnksIDEpXG5cdFx0XHRcdFx0XHRjYXNlIEFyY2h0eXBlLk1hcDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJhc2UuZGVsZXRlKGtleSlcblx0XHRcdFx0XHRcdGNhc2UgQXJjaHR5cGUuU2V0OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYmFzZS5kZWxldGUocGF0Y2gudmFsdWUpXG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZGVsZXRlIGJhc2Vba2V5XVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRkaWUoMTcsIG9wKVxuXHRcdFx0fVxuXHRcdH0pXG5cblx0XHRyZXR1cm4gZHJhZnRcblx0fVxuXG5cdC8vIG9wdGltaXplOiB0aGlzIGlzIHF1aXRlIGEgcGVyZm9ybWFuY2UgaGl0LCBjYW4gd2UgZGV0ZWN0IGludGVsbGlnZW50bHkgd2hlbiBpdCBpcyBuZWVkZWQ/XG5cdC8vIEUuZy4gYXV0by1kcmFmdCB3aGVuIG5ldyBvYmplY3RzIGZyb20gb3V0c2lkZSBhcmUgYXNzaWduZWQgYW5kIG1vZGlmaWVkP1xuXHQvLyAoU2VlIGZhaWxpbmcgdGVzdCB3aGVuIGRlZXBDbG9uZSBqdXN0IHJldHVybnMgb2JqKVxuXHRmdW5jdGlvbiBkZWVwQ2xvbmVQYXRjaFZhbHVlPFQ+KG9iajogVCk6IFRcblx0ZnVuY3Rpb24gZGVlcENsb25lUGF0Y2hWYWx1ZShvYmo6IGFueSkge1xuXHRcdGlmICghaXNEcmFmdGFibGUob2JqKSkgcmV0dXJuIG9ialxuXHRcdGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoubWFwKGRlZXBDbG9uZVBhdGNoVmFsdWUpXG5cdFx0aWYgKGlzTWFwKG9iaikpXG5cdFx0XHRyZXR1cm4gbmV3IE1hcChcblx0XHRcdFx0QXJyYXkuZnJvbShvYmouZW50cmllcygpKS5tYXAoKFtrLCB2XSkgPT4gW2ssIGRlZXBDbG9uZVBhdGNoVmFsdWUodildKVxuXHRcdFx0KVxuXHRcdGlmIChpc1NldChvYmopKSByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKG9iaikubWFwKGRlZXBDbG9uZVBhdGNoVmFsdWUpKVxuXHRcdGNvbnN0IGNsb25lZCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpXG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gb2JqKSBjbG9uZWRba2V5XSA9IGRlZXBDbG9uZVBhdGNoVmFsdWUob2JqW2tleV0pXG5cdFx0aWYgKGhhcyhvYmosIGltbWVyYWJsZSkpIGNsb25lZFtpbW1lcmFibGVdID0gb2JqW2ltbWVyYWJsZV1cblx0XHRyZXR1cm4gY2xvbmVkXG5cdH1cblxuXHRmdW5jdGlvbiBjbG9uZVBhdGNoVmFsdWVJZk5lZWRlZDxUPihvYmo6IFQpOiBUIHtcblx0XHRpZiAoaXNEcmFmdChvYmopKSB7XG5cdFx0XHRyZXR1cm4gZGVlcENsb25lUGF0Y2hWYWx1ZShvYmopXG5cdFx0fSBlbHNlIHJldHVybiBvYmpcblx0fVxuXG5cdGxvYWRQbHVnaW4oXCJQYXRjaGVzXCIsIHtcblx0XHRhcHBseVBhdGNoZXNfLFxuXHRcdGdlbmVyYXRlUGF0Y2hlc18sXG5cdFx0Z2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfXG5cdH0pXG59XG4iLCAiLy8gdHlwZXMgb25seSFcbmltcG9ydCB7XG5cdEltbWVyU3RhdGUsXG5cdEFueU1hcCxcblx0QW55U2V0LFxuXHRNYXBTdGF0ZSxcblx0U2V0U3RhdGUsXG5cdERSQUZUX1NUQVRFLFxuXHRnZXRDdXJyZW50U2NvcGUsXG5cdGxhdGVzdCxcblx0aXRlcmF0b3JTeW1ib2wsXG5cdGlzRHJhZnRhYmxlLFxuXHRjcmVhdGVQcm94eSxcblx0bG9hZFBsdWdpbixcblx0bWFya0NoYW5nZWQsXG5cdFByb3h5VHlwZSxcblx0ZGllLFxuXHRlYWNoXG59IGZyb20gXCIuLi9pbnRlcm5hbFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVNYXBTZXQoKSB7XG5cdC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZDogYW55LCBiOiBhbnkpOiBhbnkge1xuXHRcdGV4dGVuZFN0YXRpY3MgPVxuXHRcdFx0T2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG5cdFx0XHQoe19fcHJvdG9fXzogW119IGluc3RhbmNlb2YgQXJyYXkgJiZcblx0XHRcdFx0ZnVuY3Rpb24oZCwgYikge1xuXHRcdFx0XHRcdGQuX19wcm90b19fID0gYlxuXHRcdFx0XHR9KSB8fFxuXHRcdFx0ZnVuY3Rpb24oZCwgYikge1xuXHRcdFx0XHRmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXVxuXHRcdFx0fVxuXHRcdHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpXG5cdH1cblxuXHQvLyBVZ2x5IGhhY2sgdG8gcmVzb2x2ZSAjNTAyIGFuZCBpbmhlcml0IGJ1aWx0IGluIE1hcCAvIFNldFxuXHRmdW5jdGlvbiBfX2V4dGVuZHMoZDogYW55LCBiOiBhbnkpOiBhbnkge1xuXHRcdGV4dGVuZFN0YXRpY3MoZCwgYilcblx0XHRmdW5jdGlvbiBfXyh0aGlzOiBhbnkpOiBhbnkge1xuXHRcdFx0dGhpcy5jb25zdHJ1Y3RvciA9IGRcblx0XHR9XG5cdFx0ZC5wcm90b3R5cGUgPVxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0KChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSksIG5ldyBfXygpKVxuXHR9XG5cblx0Y29uc3QgRHJhZnRNYXAgPSAoZnVuY3Rpb24oX3N1cGVyKSB7XG5cdFx0X19leHRlbmRzKERyYWZ0TWFwLCBfc3VwZXIpXG5cdFx0Ly8gQ3JlYXRlIGNsYXNzIG1hbnVhbGx5LCBjYXVzZSAjNTAyXG5cdFx0ZnVuY3Rpb24gRHJhZnRNYXAodGhpczogYW55LCB0YXJnZXQ6IEFueU1hcCwgcGFyZW50PzogSW1tZXJTdGF0ZSk6IGFueSB7XG5cdFx0XHR0aGlzW0RSQUZUX1NUQVRFXSA9IHtcblx0XHRcdFx0dHlwZV86IFByb3h5VHlwZS5NYXAsXG5cdFx0XHRcdHBhcmVudF86IHBhcmVudCxcblx0XHRcdFx0c2NvcGVfOiBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKCkhLFxuXHRcdFx0XHRtb2RpZmllZF86IGZhbHNlLFxuXHRcdFx0XHRmaW5hbGl6ZWRfOiBmYWxzZSxcblx0XHRcdFx0Y29weV86IHVuZGVmaW5lZCxcblx0XHRcdFx0YXNzaWduZWRfOiB1bmRlZmluZWQsXG5cdFx0XHRcdGJhc2VfOiB0YXJnZXQsXG5cdFx0XHRcdGRyYWZ0XzogdGhpcyBhcyBhbnksXG5cdFx0XHRcdGlzTWFudWFsXzogZmFsc2UsXG5cdFx0XHRcdHJldm9rZWRfOiBmYWxzZVxuXHRcdFx0fSBhcyBNYXBTdGF0ZVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cdFx0Y29uc3QgcCA9IERyYWZ0TWFwLnByb3RvdHlwZVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsIFwic2l6ZVwiLCB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5zaXplXG5cdFx0XHR9XG5cdFx0XHQvLyBlbnVtZXJhYmxlOiBmYWxzZSxcblx0XHRcdC8vIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHRcdH0pXG5cblx0XHRwLmhhcyA9IGZ1bmN0aW9uKGtleTogYW55KTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5oYXMoa2V5KVxuXHRcdH1cblxuXHRcdHAuc2V0ID0gZnVuY3Rpb24oa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRpZiAoIWxhdGVzdChzdGF0ZSkuaGFzKGtleSkgfHwgbGF0ZXN0KHN0YXRlKS5nZXQoa2V5KSAhPT0gdmFsdWUpIHtcblx0XHRcdFx0cHJlcGFyZU1hcENvcHkoc3RhdGUpXG5cdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLnNldChrZXksIHRydWUpXG5cdFx0XHRcdHN0YXRlLmNvcHlfIS5zZXQoa2V5LCB2YWx1ZSlcblx0XHRcdFx0c3RhdGUuYXNzaWduZWRfIS5zZXQoa2V5LCB0cnVlKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cblx0XHRwLmRlbGV0ZSA9IGZ1bmN0aW9uKGtleTogYW55KTogYm9vbGVhbiB7XG5cdFx0XHRpZiAoIXRoaXMuaGFzKGtleSkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHN0YXRlOiBNYXBTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRwcmVwYXJlTWFwQ29weShzdGF0ZSlcblx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0aWYgKHN0YXRlLmJhc2VfLmhhcyhrZXkpKSB7XG5cdFx0XHRcdHN0YXRlLmFzc2lnbmVkXyEuc2V0KGtleSwgZmFsc2UpXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLmRlbGV0ZShrZXkpXG5cdFx0XHR9XG5cdFx0XHRzdGF0ZS5jb3B5XyEuZGVsZXRlKGtleSlcblx0XHRcdHJldHVybiB0cnVlXG5cdFx0fVxuXG5cdFx0cC5jbGVhciA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IE1hcFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGlmIChsYXRlc3Qoc3RhdGUpLnNpemUpIHtcblx0XHRcdFx0cHJlcGFyZU1hcENvcHkoc3RhdGUpXG5cdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8gPSBuZXcgTWFwKClcblx0XHRcdFx0ZWFjaChzdGF0ZS5iYXNlXywga2V5ID0+IHtcblx0XHRcdFx0XHRzdGF0ZS5hc3NpZ25lZF8hLnNldChrZXksIGZhbHNlKVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRzdGF0ZS5jb3B5XyEuY2xlYXIoKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHAuZm9yRWFjaCA9IGZ1bmN0aW9uKFxuXHRcdFx0Y2I6ICh2YWx1ZTogYW55LCBrZXk6IGFueSwgc2VsZjogYW55KSA9PiB2b2lkLFxuXHRcdFx0dGhpc0FyZz86IGFueVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IE1hcFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGxhdGVzdChzdGF0ZSkuZm9yRWFjaCgoX3ZhbHVlOiBhbnksIGtleTogYW55LCBfbWFwOiBhbnkpID0+IHtcblx0XHRcdFx0Y2IuY2FsbCh0aGlzQXJnLCB0aGlzLmdldChrZXkpLCBrZXksIHRoaXMpXG5cdFx0XHR9KVxuXHRcdH1cblxuXHRcdHAuZ2V0ID0gZnVuY3Rpb24oa2V5OiBhbnkpOiBhbnkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IE1hcFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGNvbnN0IHZhbHVlID0gbGF0ZXN0KHN0YXRlKS5nZXQoa2V5KVxuXHRcdFx0aWYgKHN0YXRlLmZpbmFsaXplZF8gfHwgIWlzRHJhZnRhYmxlKHZhbHVlKSkge1xuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdH1cblx0XHRcdGlmICh2YWx1ZSAhPT0gc3RhdGUuYmFzZV8uZ2V0KGtleSkpIHtcblx0XHRcdFx0cmV0dXJuIHZhbHVlIC8vIGVpdGhlciBhbHJlYWR5IGRyYWZ0ZWQgb3IgcmVhc3NpZ25lZFxuXHRcdFx0fVxuXHRcdFx0Ly8gZGVzcGl0ZSB3aGF0IGl0IGxvb2tzLCB0aGlzIGNyZWF0ZXMgYSBkcmFmdCBvbmx5IG9uY2UsIHNlZSBhYm92ZSBjb25kaXRpb25cblx0XHRcdGNvbnN0IGRyYWZ0ID0gY3JlYXRlUHJveHkoc3RhdGUuc2NvcGVfLmltbWVyXywgdmFsdWUsIHN0YXRlKVxuXHRcdFx0cHJlcGFyZU1hcENvcHkoc3RhdGUpXG5cdFx0XHRzdGF0ZS5jb3B5XyEuc2V0KGtleSwgZHJhZnQpXG5cdFx0XHRyZXR1cm4gZHJhZnRcblx0XHR9XG5cblx0XHRwLmtleXMgPSBmdW5jdGlvbigpOiBJdGVyYWJsZUl0ZXJhdG9yPGFueT4ge1xuXHRcdFx0cmV0dXJuIGxhdGVzdCh0aGlzW0RSQUZUX1NUQVRFXSkua2V5cygpXG5cdFx0fVxuXG5cdFx0cC52YWx1ZXMgPSBmdW5jdGlvbigpOiBJdGVyYWJsZUl0ZXJhdG9yPGFueT4ge1xuXHRcdFx0Y29uc3QgaXRlcmF0b3IgPSB0aGlzLmtleXMoKVxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0W2l0ZXJhdG9yU3ltYm9sXTogKCkgPT4gdGhpcy52YWx1ZXMoKSxcblx0XHRcdFx0bmV4dDogKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHIgPSBpdGVyYXRvci5uZXh0KClcblx0XHRcdFx0XHQvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHRcdFx0XHRcdGlmIChyLmRvbmUpIHJldHVybiByXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmdldChyLnZhbHVlKVxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRkb25lOiBmYWxzZSxcblx0XHRcdFx0XHRcdHZhbHVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGFzIGFueVxuXHRcdH1cblxuXHRcdHAuZW50cmllcyA9IGZ1bmN0aW9uKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W2FueSwgYW55XT4ge1xuXHRcdFx0Y29uc3QgaXRlcmF0b3IgPSB0aGlzLmtleXMoKVxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0W2l0ZXJhdG9yU3ltYm9sXTogKCkgPT4gdGhpcy5lbnRyaWVzKCksXG5cdFx0XHRcdG5leHQ6ICgpID0+IHtcblx0XHRcdFx0XHRjb25zdCByID0gaXRlcmF0b3IubmV4dCgpXG5cdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRcdFx0XHRpZiAoci5kb25lKSByZXR1cm4gclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoci52YWx1ZSlcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0ZG9uZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZTogW3IudmFsdWUsIHZhbHVlXVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBhcyBhbnlcblx0XHR9XG5cblx0XHRwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZW50cmllcygpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIERyYWZ0TWFwXG5cdH0pKE1hcClcblxuXHRmdW5jdGlvbiBwcm94eU1hcF88VCBleHRlbmRzIEFueU1hcD4odGFyZ2V0OiBULCBwYXJlbnQ/OiBJbW1lclN0YXRlKTogVCB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHJldHVybiBuZXcgRHJhZnRNYXAodGFyZ2V0LCBwYXJlbnQpXG5cdH1cblxuXHRmdW5jdGlvbiBwcmVwYXJlTWFwQ29weShzdGF0ZTogTWFwU3RhdGUpIHtcblx0XHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0XHRzdGF0ZS5hc3NpZ25lZF8gPSBuZXcgTWFwKClcblx0XHRcdHN0YXRlLmNvcHlfID0gbmV3IE1hcChzdGF0ZS5iYXNlXylcblx0XHR9XG5cdH1cblxuXHRjb25zdCBEcmFmdFNldCA9IChmdW5jdGlvbihfc3VwZXIpIHtcblx0XHRfX2V4dGVuZHMoRHJhZnRTZXQsIF9zdXBlcilcblx0XHQvLyBDcmVhdGUgY2xhc3MgbWFudWFsbHksIGNhdXNlICM1MDJcblx0XHRmdW5jdGlvbiBEcmFmdFNldCh0aGlzOiBhbnksIHRhcmdldDogQW55U2V0LCBwYXJlbnQ/OiBJbW1lclN0YXRlKSB7XG5cdFx0XHR0aGlzW0RSQUZUX1NUQVRFXSA9IHtcblx0XHRcdFx0dHlwZV86IFByb3h5VHlwZS5TZXQsXG5cdFx0XHRcdHBhcmVudF86IHBhcmVudCxcblx0XHRcdFx0c2NvcGVfOiBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKCkhLFxuXHRcdFx0XHRtb2RpZmllZF86IGZhbHNlLFxuXHRcdFx0XHRmaW5hbGl6ZWRfOiBmYWxzZSxcblx0XHRcdFx0Y29weV86IHVuZGVmaW5lZCxcblx0XHRcdFx0YmFzZV86IHRhcmdldCxcblx0XHRcdFx0ZHJhZnRfOiB0aGlzLFxuXHRcdFx0XHRkcmFmdHNfOiBuZXcgTWFwKCksXG5cdFx0XHRcdHJldm9rZWRfOiBmYWxzZSxcblx0XHRcdFx0aXNNYW51YWxfOiBmYWxzZVxuXHRcdFx0fSBhcyBTZXRTdGF0ZVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cdFx0Y29uc3QgcCA9IERyYWZ0U2V0LnByb3RvdHlwZVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsIFwic2l6ZVwiLCB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5zaXplXG5cdFx0XHR9XG5cdFx0XHQvLyBlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdH0pXG5cblx0XHRwLmhhcyA9IGZ1bmN0aW9uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHQvLyBiaXQgb2YgdHJpY2tlcnkgaGVyZSwgdG8gYmUgYWJsZSB0byByZWNvZ25pemUgYm90aCB0aGUgdmFsdWUsIGFuZCB0aGUgZHJhZnQgb2YgaXRzIHZhbHVlXG5cdFx0XHRpZiAoIXN0YXRlLmNvcHlfKSB7XG5cdFx0XHRcdHJldHVybiBzdGF0ZS5iYXNlXy5oYXModmFsdWUpXG5cdFx0XHR9XG5cdFx0XHRpZiAoc3RhdGUuY29weV8uaGFzKHZhbHVlKSkgcmV0dXJuIHRydWVcblx0XHRcdGlmIChzdGF0ZS5kcmFmdHNfLmhhcyh2YWx1ZSkgJiYgc3RhdGUuY29weV8uaGFzKHN0YXRlLmRyYWZ0c18uZ2V0KHZhbHVlKSkpXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHR9XG5cblx0XHRwLmFkZCA9IGZ1bmN0aW9uKHZhbHVlOiBhbnkpOiBhbnkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IFNldFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGlmICghdGhpcy5oYXModmFsdWUpKSB7XG5cdFx0XHRcdHByZXBhcmVTZXRDb3B5KHN0YXRlKVxuXHRcdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdFx0c3RhdGUuY29weV8hLmFkZCh2YWx1ZSlcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzXG5cdFx0fVxuXG5cdFx0cC5kZWxldGUgPSBmdW5jdGlvbih2YWx1ZTogYW55KTogYW55IHtcblx0XHRcdGlmICghdGhpcy5oYXModmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBzdGF0ZTogU2V0U3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXVxuXHRcdFx0YXNzZXJ0VW5yZXZva2VkKHN0YXRlKVxuXHRcdFx0cHJlcGFyZVNldENvcHkoc3RhdGUpXG5cdFx0XHRtYXJrQ2hhbmdlZChzdGF0ZSlcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHN0YXRlLmNvcHlfIS5kZWxldGUodmFsdWUpIHx8XG5cdFx0XHRcdChzdGF0ZS5kcmFmdHNfLmhhcyh2YWx1ZSlcblx0XHRcdFx0XHQ/IHN0YXRlLmNvcHlfIS5kZWxldGUoc3RhdGUuZHJhZnRzXy5nZXQodmFsdWUpKVxuXHRcdFx0XHRcdDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gZmFsc2UpXG5cdFx0XHQpXG5cdFx0fVxuXG5cdFx0cC5jbGVhciA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IFNldFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdGlmIChsYXRlc3Qoc3RhdGUpLnNpemUpIHtcblx0XHRcdFx0cHJlcGFyZVNldENvcHkoc3RhdGUpXG5cdFx0XHRcdG1hcmtDaGFuZ2VkKHN0YXRlKVxuXHRcdFx0XHRzdGF0ZS5jb3B5XyEuY2xlYXIoKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHAudmFsdWVzID0gZnVuY3Rpb24oKTogSXRlcmFibGVJdGVyYXRvcjxhbnk+IHtcblx0XHRcdGNvbnN0IHN0YXRlOiBTZXRTdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdXG5cdFx0XHRhc3NlcnRVbnJldm9rZWQoc3RhdGUpXG5cdFx0XHRwcmVwYXJlU2V0Q29weShzdGF0ZSlcblx0XHRcdHJldHVybiBzdGF0ZS5jb3B5XyEudmFsdWVzKClcblx0XHR9XG5cblx0XHRwLmVudHJpZXMgPSBmdW5jdGlvbiBlbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W2FueSwgYW55XT4ge1xuXHRcdFx0Y29uc3Qgc3RhdGU6IFNldFN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV1cblx0XHRcdGFzc2VydFVucmV2b2tlZChzdGF0ZSlcblx0XHRcdHByZXBhcmVTZXRDb3B5KHN0YXRlKVxuXHRcdFx0cmV0dXJuIHN0YXRlLmNvcHlfIS5lbnRyaWVzKClcblx0XHR9XG5cblx0XHRwLmtleXMgPSBmdW5jdGlvbigpOiBJdGVyYWJsZUl0ZXJhdG9yPGFueT4ge1xuXHRcdFx0cmV0dXJuIHRoaXMudmFsdWVzKClcblx0XHR9XG5cblx0XHRwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMudmFsdWVzKClcblx0XHR9XG5cblx0XHRwLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGNiOiBhbnksIHRoaXNBcmc/OiBhbnkpIHtcblx0XHRcdGNvbnN0IGl0ZXJhdG9yID0gdGhpcy52YWx1ZXMoKVxuXHRcdFx0bGV0IHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKVxuXHRcdFx0d2hpbGUgKCFyZXN1bHQuZG9uZSkge1xuXHRcdFx0XHRjYi5jYWxsKHRoaXNBcmcsIHJlc3VsdC52YWx1ZSwgcmVzdWx0LnZhbHVlLCB0aGlzKVxuXHRcdFx0XHRyZXN1bHQgPSBpdGVyYXRvci5uZXh0KClcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gRHJhZnRTZXRcblx0fSkoU2V0KVxuXG5cdGZ1bmN0aW9uIHByb3h5U2V0XzxUIGV4dGVuZHMgQW55U2V0Pih0YXJnZXQ6IFQsIHBhcmVudD86IEltbWVyU3RhdGUpOiBUIHtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0cmV0dXJuIG5ldyBEcmFmdFNldCh0YXJnZXQsIHBhcmVudClcblx0fVxuXG5cdGZ1bmN0aW9uIHByZXBhcmVTZXRDb3B5KHN0YXRlOiBTZXRTdGF0ZSkge1xuXHRcdGlmICghc3RhdGUuY29weV8pIHtcblx0XHRcdC8vIGNyZWF0ZSBkcmFmdHMgZm9yIGFsbCBlbnRyaWVzIHRvIHByZXNlcnZlIGluc2VydGlvbiBvcmRlclxuXHRcdFx0c3RhdGUuY29weV8gPSBuZXcgU2V0KClcblx0XHRcdHN0YXRlLmJhc2VfLmZvckVhY2godmFsdWUgPT4ge1xuXHRcdFx0XHRpZiAoaXNEcmFmdGFibGUodmFsdWUpKSB7XG5cdFx0XHRcdFx0Y29uc3QgZHJhZnQgPSBjcmVhdGVQcm94eShzdGF0ZS5zY29wZV8uaW1tZXJfLCB2YWx1ZSwgc3RhdGUpXG5cdFx0XHRcdFx0c3RhdGUuZHJhZnRzXy5zZXQodmFsdWUsIGRyYWZ0KVxuXHRcdFx0XHRcdHN0YXRlLmNvcHlfIS5hZGQoZHJhZnQpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3RhdGUuY29weV8hLmFkZCh2YWx1ZSlcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBhc3NlcnRVbnJldm9rZWQoc3RhdGU6IGFueSAvKkVTNVN0YXRlIHwgTWFwU3RhdGUgfCBTZXRTdGF0ZSovKSB7XG5cdFx0aWYgKHN0YXRlLnJldm9rZWRfKSBkaWUoMywgSlNPTi5zdHJpbmdpZnkobGF0ZXN0KHN0YXRlKSkpXG5cdH1cblxuXHRsb2FkUGx1Z2luKFwiTWFwU2V0XCIsIHtwcm94eU1hcF8sIHByb3h5U2V0X30pXG59XG4iLCAiaW1wb3J0IHtlbmFibGVFUzV9IGZyb20gXCIuL2VzNVwiXG5pbXBvcnQge2VuYWJsZU1hcFNldH0gZnJvbSBcIi4vbWFwc2V0XCJcbmltcG9ydCB7ZW5hYmxlUGF0Y2hlc30gZnJvbSBcIi4vcGF0Y2hlc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVBbGxQbHVnaW5zKCkge1xuXHRlbmFibGVFUzUoKVxuXHRlbmFibGVNYXBTZXQoKVxuXHRlbmFibGVQYXRjaGVzKClcbn1cbiIsICJpbXBvcnQge1xuXHRJUHJvZHVjZSxcblx0SVByb2R1Y2VXaXRoUGF0Y2hlcyxcblx0SW1tZXIsXG5cdERyYWZ0LFxuXHRJbW11dGFibGVcbn0gZnJvbSBcIi4vaW50ZXJuYWxcIlxuXG5leHBvcnQge1xuXHREcmFmdCxcblx0SW1tdXRhYmxlLFxuXHRQYXRjaCxcblx0UGF0Y2hMaXN0ZW5lcixcblx0b3JpZ2luYWwsXG5cdGN1cnJlbnQsXG5cdGlzRHJhZnQsXG5cdGlzRHJhZnRhYmxlLFxuXHROT1RISU5HIGFzIG5vdGhpbmcsXG5cdERSQUZUQUJMRSBhcyBpbW1lcmFibGUsXG5cdGZyZWV6ZVxufSBmcm9tIFwiLi9pbnRlcm5hbFwiXG5cbmNvbnN0IGltbWVyID0gbmV3IEltbWVyKClcblxuLyoqXG4gKiBUaGUgYHByb2R1Y2VgIGZ1bmN0aW9uIHRha2VzIGEgdmFsdWUgYW5kIGEgXCJyZWNpcGUgZnVuY3Rpb25cIiAod2hvc2VcbiAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuICogZnJlZSB0byBtdXRhdGUgaXRzIGZpcnN0IGFyZ3VtZW50IGhvd2V2ZXIgaXQgd2FudHMuIEFsbCBtdXRhdGlvbnMgYXJlXG4gKiBvbmx5IGV2ZXIgYXBwbGllZCB0byBhIF9fY29weV9fIG9mIHRoZSBiYXNlIHN0YXRlLlxuICpcbiAqIFBhc3Mgb25seSBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFwiY3VycmllZCBwcm9kdWNlclwiIHdoaWNoIHJlbGlldmVzIHlvdVxuICogZnJvbSBwYXNzaW5nIHRoZSByZWNpcGUgZnVuY3Rpb24gZXZlcnkgdGltZS5cbiAqXG4gKiBPbmx5IHBsYWluIG9iamVjdHMgYW5kIGFycmF5cyBhcmUgbWFkZSBtdXRhYmxlLiBBbGwgb3RoZXIgb2JqZWN0cyBhcmVcbiAqIGNvbnNpZGVyZWQgdW5jb3B5YWJsZS5cbiAqXG4gKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIGlzIF9fYm91bmRfXyB0byBpdHMgYEltbWVyYCBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcm9kdWNlciAtIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBwcm94eSBvZiB0aGUgYmFzZSBzdGF0ZSBhcyBmaXJzdCBhcmd1bWVudCBhbmQgd2hpY2ggY2FuIGJlIGZyZWVseSBtb2RpZmllZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGF0Y2hMaXN0ZW5lciAtIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbGwgdGhlIHBhdGNoZXMgcHJvZHVjZWQgaGVyZVxuICogQHJldHVybnMge2FueX0gYSBuZXcgc3RhdGUsIG9yIHRoZSBpbml0aWFsIHN0YXRlIGlmIG5vdGhpbmcgd2FzIG1vZGlmaWVkXG4gKi9cbmV4cG9ydCBjb25zdCBwcm9kdWNlOiBJUHJvZHVjZSA9IGltbWVyLnByb2R1Y2VcbmV4cG9ydCBkZWZhdWx0IHByb2R1Y2VcblxuLyoqXG4gKiBMaWtlIGBwcm9kdWNlYCwgYnV0IGBwcm9kdWNlV2l0aFBhdGNoZXNgIGFsd2F5cyByZXR1cm5zIGEgdHVwbGVcbiAqIFtuZXh0U3RhdGUsIHBhdGNoZXMsIGludmVyc2VQYXRjaGVzXSAoaW5zdGVhZCBvZiBqdXN0IHRoZSBuZXh0IHN0YXRlKVxuICovXG5leHBvcnQgY29uc3QgcHJvZHVjZVdpdGhQYXRjaGVzOiBJUHJvZHVjZVdpdGhQYXRjaGVzID0gaW1tZXIucHJvZHVjZVdpdGhQYXRjaGVzLmJpbmQoXG5cdGltbWVyXG4pXG5cbi8qKlxuICogUGFzcyB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgZnJlZXplIGFsbCBjb3BpZXMgY3JlYXRlZCBieSBJbW1lci5cbiAqXG4gKiBBbHdheXMgZnJlZXplIGJ5IGRlZmF1bHQsIGV2ZW4gaW4gcHJvZHVjdGlvbiBtb2RlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRBdXRvRnJlZXplID0gaW1tZXIuc2V0QXV0b0ZyZWV6ZS5iaW5kKGltbWVyKVxuXG4vKipcbiAqIFBhc3MgdHJ1ZSB0byB1c2UgdGhlIEVTMjAxNSBgUHJveHlgIGNsYXNzIHdoZW4gY3JlYXRpbmcgZHJhZnRzLCB3aGljaCBpc1xuICogYWx3YXlzIGZhc3RlciB0aGFuIHVzaW5nIEVTNSBwcm94aWVzLlxuICpcbiAqIEJ5IGRlZmF1bHQsIGZlYXR1cmUgZGV0ZWN0aW9uIGlzIHVzZWQsIHNvIGNhbGxpbmcgdGhpcyBpcyByYXJlbHkgbmVjZXNzYXJ5LlxuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlUHJveGllcyA9IGltbWVyLnNldFVzZVByb3hpZXMuYmluZChpbW1lcilcblxuLyoqXG4gKiBBcHBseSBhbiBhcnJheSBvZiBJbW1lciBwYXRjaGVzIHRvIHRoZSBmaXJzdCBhcmd1bWVudC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgcHJvZHVjZXIsIHdoaWNoIG1lYW5zIGNvcHktb24td3JpdGUgaXMgaW4gZWZmZWN0LlxuICovXG5leHBvcnQgY29uc3QgYXBwbHlQYXRjaGVzID0gaW1tZXIuYXBwbHlQYXRjaGVzLmJpbmQoaW1tZXIpXG5cbi8qKlxuICogQ3JlYXRlIGFuIEltbWVyIGRyYWZ0IGZyb20gdGhlIGdpdmVuIGJhc2Ugc3RhdGUsIHdoaWNoIG1heSBiZSBhIGRyYWZ0IGl0c2VsZi5cbiAqIFRoZSBkcmFmdCBjYW4gYmUgbW9kaWZpZWQgdW50aWwgeW91IGZpbmFsaXplIGl0IHdpdGggdGhlIGBmaW5pc2hEcmFmdGAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVEcmFmdCA9IGltbWVyLmNyZWF0ZURyYWZ0LmJpbmQoaW1tZXIpXG5cbi8qKlxuICogRmluYWxpemUgYW4gSW1tZXIgZHJhZnQgZnJvbSBhIGBjcmVhdGVEcmFmdGAgY2FsbCwgcmV0dXJuaW5nIHRoZSBiYXNlIHN0YXRlXG4gKiAoaWYgbm8gY2hhbmdlcyB3ZXJlIG1hZGUpIG9yIGEgbW9kaWZpZWQgY29weS4gVGhlIGRyYWZ0IG11c3QgKm5vdCogYmVcbiAqIG11dGF0ZWQgYWZ0ZXJ3YXJkcy5cbiAqXG4gKiBQYXNzIGEgZnVuY3Rpb24gYXMgdGhlIDJuZCBhcmd1bWVudCB0byBnZW5lcmF0ZSBJbW1lciBwYXRjaGVzIGJhc2VkIG9uIHRoZVxuICogY2hhbmdlcyB0aGF0IHdlcmUgbWFkZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGZpbmlzaERyYWZ0ID0gaW1tZXIuZmluaXNoRHJhZnQuYmluZChpbW1lcilcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgbm8tb3AsIGJ1dCBjYW4gYmUgdXNlZCB0byBjYXN0IGFuIGltbXV0YWJsZSB0eXBlXG4gKiB0byBhbiBkcmFmdCB0eXBlIGFuZCBtYWtlIFR5cGVTY3JpcHQgaGFwcHlcbiAqXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhc3REcmFmdDxUPih2YWx1ZTogVCk6IERyYWZ0PFQ+IHtcblx0cmV0dXJuIHZhbHVlIGFzIGFueVxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYSBuby1vcCwgYnV0IGNhbiBiZSB1c2VkIHRvIGNhc3QgYSBtdXRhYmxlIHR5cGVcbiAqIHRvIGFuIGltbXV0YWJsZSB0eXBlIGFuZCBtYWtlIFR5cGVTY3JpcHQgaGFwcHlcbiAqIEBwYXJhbSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FzdEltbXV0YWJsZTxUPih2YWx1ZTogVCk6IEltbXV0YWJsZTxUPiB7XG5cdHJldHVybiB2YWx1ZSBhcyBhbnlcbn1cblxuZXhwb3J0IHtJbW1lcn1cblxuZXhwb3J0IHtlbmFibGVFUzV9IGZyb20gXCIuL3BsdWdpbnMvZXM1XCJcbmV4cG9ydCB7ZW5hYmxlUGF0Y2hlc30gZnJvbSBcIi4vcGx1Z2lucy9wYXRjaGVzXCJcbmV4cG9ydCB7ZW5hYmxlTWFwU2V0fSBmcm9tIFwiLi9wbHVnaW5zL21hcHNldFwiXG5leHBvcnQge2VuYWJsZUFsbFBsdWdpbnN9IGZyb20gXCIuL3BsdWdpbnMvYWxsXCJcbiIsICIvLyBTaG91bGQgYmUgbm8gaW1wb3J0cyBoZXJlIVxuXG4vLyBTb21lIHRoaW5ncyB0aGF0IHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIGFsbCBlbHNlLi4uXG5cbi8vIFdlIG9ubHkgd2FudCB0byBrbm93IGlmIG5vbi1wb2x5ZmlsbGVkIHN5bWJvbHMgYXJlIGF2YWlsYWJsZVxuY29uc3QgaGFzU3ltYm9sID1cblx0dHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgU3ltYm9sKFwieFwiKSA9PT0gXCJzeW1ib2xcIlxuZXhwb3J0IGNvbnN0IGhhc01hcCA9IHR5cGVvZiBNYXAgIT09IFwidW5kZWZpbmVkXCJcbmV4cG9ydCBjb25zdCBoYXNTZXQgPSB0eXBlb2YgU2V0ICE9PSBcInVuZGVmaW5lZFwiXG5leHBvcnQgY29uc3QgaGFzUHJveGllcyA9XG5cdHR5cGVvZiBQcm94eSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuXHR0eXBlb2YgUHJveHkucmV2b2NhYmxlICE9PSBcInVuZGVmaW5lZFwiICYmXG5cdHR5cGVvZiBSZWZsZWN0ICE9PSBcInVuZGVmaW5lZFwiXG5cbi8qKlxuICogVGhlIHNlbnRpbmVsIHZhbHVlIHJldHVybmVkIGJ5IHByb2R1Y2VycyB0byByZXBsYWNlIHRoZSBkcmFmdCB3aXRoIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE5PVEhJTkc6IE5vdGhpbmcgPSBoYXNTeW1ib2xcblx0PyBTeW1ib2wuZm9yKFwiaW1tZXItbm90aGluZ1wiKVxuXHQ6ICh7W1wiaW1tZXItbm90aGluZ1wiXTogdHJ1ZX0gYXMgYW55KVxuXG4vKipcbiAqIFRvIGxldCBJbW1lciB0cmVhdCB5b3VyIGNsYXNzIGluc3RhbmNlcyBhcyBwbGFpbiBpbW11dGFibGUgb2JqZWN0c1xuICogKGFsYmVpdCB3aXRoIGEgY3VzdG9tIHByb3RvdHlwZSksIHlvdSBtdXN0IGRlZmluZSBlaXRoZXIgYW4gaW5zdGFuY2UgcHJvcGVydHlcbiAqIG9yIGEgc3RhdGljIHByb3BlcnR5IG9uIGVhY2ggb2YgeW91ciBjdXN0b20gY2xhc3Nlcy5cbiAqXG4gKiBPdGhlcndpc2UsIHlvdXIgY2xhc3MgaW5zdGFuY2Ugd2lsbCBuZXZlciBiZSBkcmFmdGVkLCB3aGljaCBtZWFucyBpdCB3b24ndCBiZVxuICogc2FmZSB0byBtdXRhdGUgaW4gYSBwcm9kdWNlIGNhbGxiYWNrLlxuICovXG5leHBvcnQgY29uc3QgRFJBRlRBQkxFOiB1bmlxdWUgc3ltYm9sID0gaGFzU3ltYm9sXG5cdD8gU3ltYm9sLmZvcihcImltbWVyLWRyYWZ0YWJsZVwiKVxuXHQ6IChcIl9fJGltbWVyX2RyYWZ0YWJsZVwiIGFzIGFueSlcblxuZXhwb3J0IGNvbnN0IERSQUZUX1NUQVRFOiB1bmlxdWUgc3ltYm9sID0gaGFzU3ltYm9sXG5cdD8gU3ltYm9sLmZvcihcImltbWVyLXN0YXRlXCIpXG5cdDogKFwiX18kaW1tZXJfc3RhdGVcIiBhcyBhbnkpXG5cbi8vIEV2ZW4gYSBwb2x5ZmlsbGVkIFN5bWJvbCBtaWdodCBwcm92aWRlIFN5bWJvbC5pdGVyYXRvclxuZXhwb3J0IGNvbnN0IGl0ZXJhdG9yU3ltYm9sOiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID1cblx0KHR5cGVvZiBTeW1ib2wgIT0gXCJ1bmRlZmluZWRcIiAmJiBTeW1ib2wuaXRlcmF0b3IpIHx8IChcIkBAaXRlcmF0b3JcIiBhcyBhbnkpXG5cbi8qKiBVc2UgYSBjbGFzcyB0eXBlIGZvciBgbm90aGluZ2Agc28gaXRzIHR5cGUgaXMgdW5pcXVlICovXG5leHBvcnQgY2xhc3MgTm90aGluZyB7XG5cdC8vIFRoaXMgbGV0cyB1cyBkbyBgRXhjbHVkZTxULCBOb3RoaW5nPmBcblx0Ly8gQHRzLWlnbm9yZVxuXHRwcml2YXRlIF8hOiB1bmlxdWUgc3ltYm9sXG59XG4iLCAiaW1wb3J0IFwiLi9pY29uLW1hbmFnZXIubGVzc1wiO1xuXG5pbXBvcnQgeyBlbmFibGVNYXBTZXQgfSBmcm9tIFwiaW1tZXJcIjtcbmltcG9ydCB7IE1vZGFsLCBzZXRJY29uIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgUmVhY3QsIHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlSW1tZXIgfSBmcm9tIFwidXNlLWltbWVyXCI7XG5cbmltcG9ydCBQYWNrTWFuYWdlciBmcm9tIFwiLi4vaWNvbi1wYWNrcy9wYWNrLW1hbmFnZXJcIjtcbmltcG9ydCB7IEZpbGVJY29uSW5mbywgSWNvbkluZm8gfSBmcm9tIFwiLi4vaWNvbi1wYWNrcy90eXBlc1wiO1xuaW1wb3J0IEljb25TQyBmcm9tIFwiLi4vaXNjLW1haW5cIjtcbmltcG9ydCBJY29uUHJldmlldyBmcm9tIFwiLi9pY29uLXByZXZpZXdcIjtcblxuZW5hYmxlTWFwU2V0KCk7XG5cbnR5cGUgaWNvbnMgPSBSZWNvcmQ8XCJ0cmFzaFwiIHwgXCJwZW5jaWxcIiB8IFwic3RhclwiIHwgXCJjaGVja21hcmtcIiwgc3RyaW5nPjtcbmNvbnN0IGdldEljb25zID0gKCk6IGljb25zID0+IHtcbiAgY29uc3QgdGVtcEVsID0gY3JlYXRlRGl2KCksXG4gICAgcmV0dXJuczogUGFydGlhbDxpY29ucz4gPSB7fTtcbiAgZm9yIChjb25zdCBpY29uIG9mIFtcInRyYXNoXCIsIFwicGVuY2lsXCIsIFwic3RhclwiLCBcImNoZWNrbWFya1wiXSBhcyBjb25zdCkge1xuICAgIHRlbXBFbC5lbXB0eSgpO1xuICAgIHNldEljb24odGVtcEVsLCBpY29uLCAxNCk7XG4gICAgcmV0dXJuc1tpY29uXSA9IHRlbXBFbC5pbm5lckhUTUw7XG4gIH1cbiAgcmV0dXJuIHJldHVybnMgYXMgaWNvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8eyBwYWNrczogUGFja01hbmFnZXI7IGljb25zOiBpY29ucyB9PihcbiAgbnVsbCBhcyBhbnksXG4pO1xuXG5jb25zdCBBTExfVVBEQVRFX0tFWSA9IFwiJUFMTCVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWNvbk1hbmFnZXIgZXh0ZW5kcyBNb2RhbCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwbHVnaW46IEljb25TQywgcHVibGljIHBhY2s6IHN0cmluZykge1xuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KGAke3BhY2t9IEljb25zYCk7XG4gICAgdGhpcy5tb2RhbEVsLmFkZENsYXNzZXMoW1wiaXNjLWljb24tbWFuYWdlclwiLCBcIm1vZC1jb21tdW5pdHktdGhlbWVcIl0pO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMuY29udGVudEVsLmVtcHR5KCk7XG4gICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgPENvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3sgcGFja3M6IHRoaXMucGx1Z2luLnBhY2tNYW5hZ2VyLCBpY29uczogZ2V0SWNvbnMoKSB9fVxuICAgICAgPlxuICAgICAgICA8SWNvbnMgcGFjaz17dGhpcy5wYWNrfSAvPlxuICAgICAgPC9Db250ZXh0LlByb3ZpZGVyPixcbiAgICAgIHRoaXMuY29udGVudEVsLFxuICAgICk7XG4gIH1cbiAgb25DbG9zZSgpIHtcbiAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKHRoaXMuY29udGVudEVsKTtcbiAgfVxufVxuY29uc3QgY29tcGFyZUljb25JZCA9IChhOiBJY29uSW5mbywgYjogSWNvbkluZm8pOiBudW1iZXIgPT5cbiAgYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbmNvbnN0IEljb25zID0gKHsgcGFjayB9OiB7IHBhY2s6IHN0cmluZyB9KSA9PiB7XG4gIGlmIChwYWNrID09PSBcImVtb2ppXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFbW9qaSBub3Qgc3VwcG9ydGVkXCIpO1xuXG4gIGNvbnN0IHsgcGFja3MgfSA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gIGNvbnN0IFtmaWx0ZXIsIHNldEZpbHRlcl0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW2FmZmVjdGVkLCBzZXRBZmZlY3RlZF0gPSB1c2VJbW1lcihuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpKTtcbiAgY29uc3QgaWRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiB7XG4gICAgICBsZXQgYXJyID0gcGFja3NcbiAgICAgICAgLnNlYXJjaChmaWx0ZXIgPyBmaWx0ZXIudHJpbSgpLnNwbGl0KFwiIFwiKSA6IFtdLCBbcGFja10sIEluZmluaXR5KVxuICAgICAgICAvLyBhZGQgYW4gdXBkYXRlZCBwcm9wZXJ0eSB0byBmb3JjZSBhbiBpY29uIHVwZGF0ZSBpbnRlcm5hbGx5XG4gICAgICAgIC5tYXAoKHsgaXRlbSB9KSA9PiBpdGVtIGFzIEZpbGVJY29uSW5mbyk7XG4gICAgICBpZiAoIWZpbHRlcikgYXJyLnNvcnQoY29tcGFyZUljb25JZCk7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH0sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIFtmaWx0ZXIsIHBhY2ssIGFmZmVjdGVkXSxcbiAgKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBldmVudFJlZiA9IHBhY2tzLm9uKFwiY2hhbmdlZFwiLCAoX2FwaSwgYWZmZWN0ZWQpID0+XG4gICAgICBzZXRBZmZlY3RlZCgoZHJhZnQpID0+IHtcbiAgICAgICAgaWYgKGFmZmVjdGVkKVxuICAgICAgICAgIGFmZmVjdGVkLmZvckVhY2goKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBkcmFmdC5zZXQoaWQsIChkcmFmdC5nZXQoaWQpIHx8IDApICsgMSksXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSBkcmFmdC5zZXQoQUxMX1VQREFURV9LRVksIChkcmFmdC5nZXQoQUxMX1VQREFURV9LRVkpIHx8IDApICsgMSk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiAoKSA9PiBwYWNrcy5vZmZyZWYoZXZlbnRSZWYpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW3BhY2tzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcbiAgICAgICAgICB2YWx1ZT17ZmlsdGVyfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZXZ0KSA9PiBzZXRGaWx0ZXIoZXZ0LnRhcmdldC52YWx1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaWNvbnNcIj5cbiAgICAgICAge2lkcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkID1cbiAgICAgICAgICAgIChhZmZlY3RlZC5nZXQoaXRlbS5pZCkgPz8gMCkgKyAoYWZmZWN0ZWQuZ2V0KEFMTF9VUERBVEVfS0VZKSA/PyAwKTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEljb25QcmV2aWV3XG4gICAgICAgICAgICAgIGljb25JbmZvPXtpdGVtfVxuICAgICAgICAgICAgICB1cGRhdGVkPXt1cGRhdGVkfVxuICAgICAgICAgICAgICBrZXk9e2l0ZW0uaWQgKyB1cGRhdGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufTtcbiIsICJpbXBvcnQgcHJvZHVjZSwgeyBEcmFmdCwgbm90aGluZywgZnJlZXplIH0gZnJvbSBcImltbWVyXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlUmVkdWNlciwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIERpc3BhdGNoIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCB0eXBlIFJlZHVjZXI8UyA9IGFueSwgQSA9IGFueT4gPSAoXG4gIGRyYWZ0U3RhdGU6IERyYWZ0PFM+LFxuICBhY3Rpb246IEFcbikgPT4gdm9pZCB8IChTIGV4dGVuZHMgdW5kZWZpbmVkID8gdHlwZW9mIG5vdGhpbmcgOiBTKTtcbmV4cG9ydCB0eXBlIERyYWZ0RnVuY3Rpb248Uz4gPSAoZHJhZnQ6IERyYWZ0PFM+KSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgVXBkYXRlcjxTPiA9IChhcmc6IFMgfCBEcmFmdEZ1bmN0aW9uPFM+KSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgSW1tZXJIb29rPFM+ID0gW1MsIFVwZGF0ZXI8Uz5dO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUltbWVyPFMgPSBhbnk+KGluaXRpYWxWYWx1ZTogUyB8ICgoKSA9PiBTKSk6IEltbWVySG9vazxTPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUltbWVyKGluaXRpYWxWYWx1ZTogYW55KSB7XG4gIGNvbnN0IFt2YWwsIHVwZGF0ZVZhbHVlXSA9IHVzZVN0YXRlKCgpID0+XG4gICAgZnJlZXplKFxuICAgICAgdHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gaW5pdGlhbFZhbHVlKCkgOiBpbml0aWFsVmFsdWUsXG4gICAgICB0cnVlXG4gICAgKVxuICApO1xuICByZXR1cm4gW1xuICAgIHZhbCxcbiAgICB1c2VDYWxsYmFjaygodXBkYXRlcikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyID09PSBcImZ1bmN0aW9uXCIpIHVwZGF0ZVZhbHVlKHByb2R1Y2UodXBkYXRlcikpO1xuICAgICAgZWxzZSB1cGRhdGVWYWx1ZShmcmVlemUodXBkYXRlcikpO1xuICAgIH0sIFtdKSxcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUltbWVyUmVkdWNlcjxTID0gYW55LCBBID0gYW55PihcbiAgcmVkdWNlcjogUmVkdWNlcjxTLCBBPixcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBpbml0aWFsQWN0aW9uPzogKGluaXRpYWw6IGFueSkgPT4gU1xuKTogW1MsIERpc3BhdGNoPEE+XTtcbmV4cG9ydCBmdW5jdGlvbiB1c2VJbW1lclJlZHVjZXIoXG4gIHJlZHVjZXI6IGFueSxcbiAgaW5pdGlhbFN0YXRlOiBhbnksXG4gIGluaXRpYWxBY3Rpb246IGFueVxuKSB7XG4gIGNvbnN0IGNhY2hlZFJlZHVjZXIgPSB1c2VNZW1vKCgpID0+IHByb2R1Y2UocmVkdWNlciksIFtyZWR1Y2VyXSk7XG4gIHJldHVybiB1c2VSZWR1Y2VyKGNhY2hlZFJlZHVjZXIsIGluaXRpYWxTdGF0ZSBhcyBhbnksIGluaXRpYWxBY3Rpb24pO1xufVxuIiwgImltcG9ydCBcIi4uL2ludmFsaWQubGVzc1wiO1xuXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgeyBOb3RpY2UgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBSZWFjdCwge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgVGV4dGFyZWFIVE1MQXR0cmlidXRlcyxcbiAgdXNlQ29udGV4dCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBGaWxlSWNvbkluZm8gfSBmcm9tIFwiLi4vaWNvbi1wYWNrcy90eXBlc1wiO1xuaW1wb3J0IHsgc2FuaXRpemVOYW1lIH0gZnJvbSBcIi4uL2ljb24tcGFja3MvdXRpbHNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi9pY29uLW1hbmFnZXJcIjtcblxuaW50ZXJmYWNlIEljb25QcmV2aWV3UHJvcHMge1xuICBpY29uSW5mbzogRmlsZUljb25JbmZvO1xuICB1cGRhdGVkOiBudW1iZXI7XG59XG5cbmNvbnN0IEljb25QcmV2aWV3ID0gKHsgaWNvbkluZm8sIHVwZGF0ZWQgfTogSWNvblByZXZpZXdQcm9wcykgPT4ge1xuICBjb25zdCB7IHBhY2tzLCBpY29ucyB9ID0gdXNlQ29udGV4dChDb250ZXh0KSxcbiAgICB7IHRyYXNoLCBwZW5jaWwsIHN0YXIsIGNoZWNrbWFyayB9ID0gaWNvbnM7XG5cbiAgY29uc3QgW2lucHV0LCBzZXRJbnB1dF0gPSB1c2VTdGF0ZShpY29uSW5mby5uYW1lLnJlcGxhY2UoL1stX10vZywgXCIgXCIpKSxcbiAgICBbaXNFZGl0aW5nLCBzZXRJc0VkaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGlucHV0SWQgPSBgJHtpY29uSW5mby5wYWNrfV8ke3Nhbml0aXplTmFtZShpbnB1dCl9YCxcbiAgICBpc0lucHV0VmFpbGQgPSBpbnB1dElkID09PSBpY29uSW5mby5pZCB8fCAhcGFja3MuaGFzSWNvbihpbnB1dElkKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIGNvbnN0IGljb25TcmMgPSB1c2VNZW1vKFxuICAgICgpID0+IHBhY2tzLmdldEljb24oaWNvbkluZm8uaWQsIHRydWUpLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbaWNvbkluZm8uaWQsIHVwZGF0ZWRdLFxuICApO1xuICBjb25zdCByZW5hbWVJY29uID0gYXN5bmMgKHJlbmFtZVRvOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXdOYW1lID0gYXdhaXQgcGFja3MucmVuYW1lKGljb25JbmZvLmlkLCByZW5hbWVUbyk7XG4gICAgaWYgKCFuZXdOYW1lKVxuICAgICAgbmV3IE5vdGljZShgRmFpbGVkIHRvIHJlbmFtZSB0byAke2lucHV0fSwgY2hlY2sgbG9nIGZvciBkZXRhaWxzYCk7XG4gICAgZWxzZSB7XG4gICAgICBuZXcgTm90aWNlKGBUaGUgaWNvbiBpcyByZW5hbWVkIHRvICR7bmV3TmFtZX1gKTtcbiAgICAgIHNldElzRWRpdGluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJpdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb25cIj5cbiAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpc2MtaWNvblwiIHNyYz17aWNvblNyYyA/PyB1bmRlZmluZWR9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibmFtZVwiPlxuICAgICAgICB7aXNFZGl0aW5nID8gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Nscyh7IGludmFsaWQ6ICFpc0lucHV0VmFpbGQgfSl9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGV2dCkgPT4gc2V0SW5wdXQoZXZ0LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICB2YWx1ZT17aW5wdXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8c3Bhbj57aW5wdXR9PC9zcGFuPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1dHRvbnNcIj5cbiAgICAgICAgPE9iQnV0dG9uXG4gICAgICAgICAgYnRuVHlwZT1cImN0YVwiXG4gICAgICAgICAgaWNvbj17c3Rhcn1cbiAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3TmFtZTtcbiAgICAgICAgICAgIGlmICgobmV3TmFtZSA9IGF3YWl0IHBhY2tzLnN0YXIoaWNvbkluZm8uaWQpKSkge1xuICAgICAgICAgICAgICBuZXcgTm90aWNlKGAke2ljb25JbmZvLmlkfSBpcyBub3cgJHtuZXdOYW1lfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxPYkJ1dHRvblxuICAgICAgICAgIGJ0blR5cGU9XCJjdGFcIlxuICAgICAgICAgIGljb249e2lzRWRpdGluZyA/IGNoZWNrbWFyayA6IHBlbmNpbH1cbiAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgIGlmIChpc0lucHV0VmFpbGQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRJZCAhPT0gaWNvbkluZm8uaWQpIHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHJlbmFtZUljb24oaW5wdXRJZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHNldElzRWRpdGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoYFVuYWJsZSB0byByZW5hbWUgdG8gJHtpbnB1dH0sIGdpdmVuIGlkIGludmFsaWRgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0SXNFZGl0aW5nKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxPYkJ1dHRvblxuICAgICAgICAgIGJ0blR5cGU9XCJ3YXJuaW5nXCJcbiAgICAgICAgICBpY29uPXt0cmFzaH1cbiAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGFja3MuZGVsZXRlKGljb25JbmZvLmlkKSkge1xuICAgICAgICAgICAgICBuZXcgTm90aWNlKGAke2ljb25JbmZvLmlkfSBpcyByZW1vdmVkIGZyb20gdGhlIHBhY2tgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJY29uUHJldmlldztcblxuY29uc3QgT2JCdXR0b24gPSAoXG4gIHByb3BzOiBIVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4gJiB7XG4gICAgYnRuVHlwZT86IFwid2FybmluZ1wiIHwgXCJjdGFcIjtcbiAgICBpbnZhbGlkPzogYm9vbGVhbjtcbiAgICBpY29uOiBzdHJpbmc7XG4gIH0sXG4pID0+IHtcbiAgY29uc3QgeyBidG5UeXBlLCBpY29uLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB7Li4ucmVzdH1cbiAgICAgIGNsYXNzTmFtZT17Y2xzKHsgW1wibW9kLVwiICsgYnRuVHlwZV06ICEhYnRuVHlwZSB9KX1cbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogaWNvbiB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5jb25zdCBUZXh0ID0gKFxuICBwcm9wczogUGljazxcbiAgICBUZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LFxuICAgIFwib25DaGFuZ2VcIiB8IFwidmFsdWVcIiB8IFwiY2xhc3NOYW1lXCJcbiAgPixcbikgPT4gPHRleHRhcmVhIHNwZWxsQ2hlY2s9XCJmYWxzZVwiIHJvd3M9ezJ9IHsuLi5wcm9wc30gLz47XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OzswMHRJQUFBLG1CQVdBLEdBQU8sUUFBVSxPQ1hqQixnQ0EwQkEsWUFBb0IsRUFBTSxDQUN4QixHQUFJLE1BQU8sSUFBUyxTQUNsQixLQUFNLElBQUksV0FBVSxtQ0FBcUMsS0FBSyxVQUFVLENBQUksQ0FBQyxDQUVqRixDQUdBLFlBQThCLEVBQU0sRUFBZ0IsQ0FNbEQsT0FMSSxHQUFNLEdBQ04sRUFBb0IsRUFDcEIsRUFBWSxHQUNaLEVBQU8sRUFDUCxFQUNLLEVBQUksRUFBRyxHQUFLLEVBQUssT0FBUSxFQUFFLEVBQUcsQ0FDckMsR0FBSSxFQUFJLEVBQUssT0FDWCxFQUFPLEVBQUssV0FBVyxDQUFDLE1BQ3JCLElBQUksSUFBUyxHQUNoQixNQUVBLEVBQU8sR0FDVCxHQUFJLElBQVMsR0FBVSxDQUNyQixHQUFJLE1BQWMsRUFBSSxHQUFLLElBQVMsR0FFN0IsR0FBSSxJQUFjLEVBQUksR0FBSyxJQUFTLEVBQUcsQ0FDNUMsR0FBSSxFQUFJLE9BQVMsR0FBSyxJQUFzQixHQUFLLEVBQUksV0FBVyxFQUFJLE9BQVMsQ0FBQyxJQUFNLElBQVksRUFBSSxXQUFXLEVBQUksT0FBUyxDQUFDLElBQU0sSUFDakksR0FBSSxFQUFJLE9BQVMsRUFBRyxDQUNsQixHQUFJLEdBQWlCLEVBQUksWUFBWSxHQUFHLEVBQ3hDLEdBQUksSUFBbUIsRUFBSSxPQUFTLEVBQUcsQ0FDckMsQUFBSSxJQUFtQixHQUNyQixHQUFNLEdBQ04sRUFBb0IsR0FFcEIsR0FBTSxFQUFJLE1BQU0sRUFBRyxDQUFjLEVBQ2pDLEVBQW9CLEVBQUksT0FBUyxFQUFJLEVBQUksWUFBWSxHQUFHLEdBRTFELEVBQVksRUFDWixFQUFPLEVBQ1AsUUFDRixDQUNGLFNBQVcsRUFBSSxTQUFXLEdBQUssRUFBSSxTQUFXLEVBQUcsQ0FDL0MsRUFBTSxHQUNOLEVBQW9CLEVBQ3BC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RUFBRSxFQUFFLE1BQU8sRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsb0VBQW9FLEVBQUUsT0FBTyxTQUFTLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEFBQVcsRUFBRSxVQUFVLENBQUMsSUFBeEIsU0FBMEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFHLEdBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBSSxHQUFFLEVBQUUsV0FBVyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRyxHQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUcsSUFBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFPLEdBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsS0FBTSxJQUFJLE9BQU0saURBQWlELEVBQUUsR0FBSSxHQUFFLEVBQUUsRUFBRyxHQUFFLEVBQUUsUUFBUSxzQkFBc0IsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBTSxJQUFJLE9BQU0sMkNBQTJDLEVBQUUsSUFBSSxFQUFFLEVBQUUsV0FBVyxHQUFJLFlBQVcsRUFBRSxDQUFDLEVBQUUsR0FBSSxPQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFHLEdBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUcsSUFBRyxJQUFJLEVBQUcsR0FBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRyxHQUFFLElBQUksRUFBRyxHQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQUFBSyxJQUFMLElBQVMsR0FBRSxLQUFLLEdBQUcsQUFBSyxJQUFMLElBQVMsR0FBRSxLQUFLLEdBQUcsTUFBTyxFQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLGVBQWUsRUFBRSxLQUFLLGlCQUFpQixFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssWUFBWSxFQUFFLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsVUFBVSxDQUFDLEdBQUksR0FBRSxHQUFJLEdBQUUsRUFBRSxRQUFRLFFBQVEsS0FBSyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssS0FBSyxZQUFZLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxHQUFJLEdBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxLQUFLLE1BQU8sR0FBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsS0FBSyxXQUFXLGNBQWMsRUFBRSxpQkFBaUIsS0FBTSxJQUFJLE9BQU0sdUNBQXVDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxvQkFBb0IsVUFBVSxDQUFDLE1BQU8sSUFBSSxHQUFFLEVBQUUsUUFBUSxRQUFRLEtBQUssaUJBQWlCLENBQUMsRUFBRSxlQUFlLGlCQUFpQixLQUFLLGNBQWMsRUFBRSxlQUFlLG1CQUFtQixLQUFLLGdCQUFnQixFQUFFLGVBQWUsUUFBUSxLQUFLLEtBQUssRUFBRSxlQUFlLGNBQWMsS0FBSyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFPLEdBQUUsS0FBSyxHQUFJLEVBQUMsRUFBRSxLQUFLLEdBQUksR0FBRSxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBSSxHQUFFLGdCQUFnQixDQUFDLEVBQUUsZUFBZSxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLEdBQUcsMkJBQTJCLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sZUFBZSxTQUFTLEVBQUUsQ0FBQyxNQUFPLElBQUksR0FBRSxtQkFBbUIsQ0FBQyxFQUFFLGlCQUFpQixVQUFVLENBQUMsTUFBTyxJQUFJLEdBQUUscUJBQXFCLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLHlCQUF5QixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsU0FBUyxFQUFNLEVBQUUsVUFBVSxDQUFDLE9BQVEsR0FBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTyxFQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLEFBQVMsS0FBVCxRQUFZLEVBQUUsT0FBTyxBQUFXLEVBQUUsVUFBVSxDQUFDLElBQXhCLFNBQTBCLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxPQUFRLEdBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUssR0FBRSxFQUFFLEtBQUssTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxPQUFRLEdBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUssR0FBRSxFQUFFLFdBQVcsQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxHQUFHLEVBQUUsT0FBTyxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsY0FBYyxHQUFHLEVBQUUsS0FBSyxLQUFLLEVBQUUsWUFBWSxLQUFLLEVBQUUsbUJBQW1CLEtBQUssRUFBRSxRQUFRLEtBQUssRUFBRSxnQkFBZ0IsS0FBSyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsS0FBSyxFQUFFLEFBQWEsTUFBTyxTQUFwQixJQUE0QixRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsQUFBYSxNQUFPLFlBQXBCLEtBQWdDLEFBQWEsTUFBTyxhQUFwQixLQUFpQyxBQUFhLE1BQU8sYUFBcEIsSUFBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsYUFBYSxRQUFRLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssZUFBZSxDQUFDLEVBQUUsS0FBSyxNQUFNLEtBQUssS0FBSyxZQUFZLEVBQUUsS0FBSyxhQUFhLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEtBQUssRUFBRSxLQUFLLEFBQU8sS0FBSyxRQUFaLE1BQW1CLEtBQUssWUFBWSxFQUFFLEtBQUssTUFBTSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxNQUFNLFVBQVUsQ0FBQyxFQUFFLFVBQVUsTUFBTSxLQUFLLElBQUksRUFBRSxBQUFPLEtBQUssUUFBWixNQUFtQixLQUFLLFlBQVksRUFBRSxLQUFLLE1BQU0sS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLFFBQVEsVUFBVSxDQUFDLEVBQUUsVUFBVSxRQUFRLEtBQUssSUFBSSxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsRUFBRSxVQUFVLFlBQVksVUFBVSxDQUFDLEtBQUssTUFBTSxHQUFJLEdBQUUsS0FBSyxhQUFhLENBQUMsSUFBSSxHQUFHLE1BQU0sS0FBSyxhQUFhLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBSSxHQUFFLEtBQUssS0FBSyxNQUFNLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxlQUFlLFNBQVMsRUFBRSxDQUFDLE1BQU8sSUFBSSxHQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsVUFBVSxDQUFDLE1BQU8sSUFBSSxHQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMseUJBQXlCLEdBQUcsVUFBVSxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxHQUFHLE9BQU8sYUFBYSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTyxFQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsWUFBWSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEdBQUUsQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUksSUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFFLGVBQWUsRUFBRSxlQUFlLEdBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEdBQUksR0FBRSxFQUFFLEdBQUksSUFBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBSSxJQUFHLE1BQU0sR0FBSSxHQUFFLEVBQUUsR0FBRSxFQUFFLElBQUksSUFBRyxJQUFJLEFBQVMsSUFBVCxPQUFZLElBQUUsSUFBSSxHQUFHLFNBQVMsRUFBRSxHQUFFLENBQUMsR0FBSSxJQUFFLEVBQUUsTUFBTyxJQUFJLElBQUUsR0FBRSxNQUFNLE9BQVEsT0FBTSxLQUFJLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFDLEdBQUksSUFBRSxHQUFHLEdBQUcsU0FBUyxFQUFFLENBQUMsTUFBTyxJQUFJLElBQUcsRUFBRSxFQUFFLEVBQUUsY0FBYyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFJLEdBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFJLEdBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFJLEdBQUUsR0FBRyxNQUFPLElBQUc7QUFBQSxJQUFPLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFFLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFFLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBSSxHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssS0FBSyxlQUFlLEVBQUUsS0FBSyxhQUFhLEVBQUUsS0FBSyxXQUFXLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxXQUFXLEdBQUcsS0FBSyxjQUFjLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxFQUFFLEtBQUssb0JBQW9CLEVBQUUsS0FBSyxhQUFhLEVBQUUsS0FBSyxZQUFZLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxLQUFLLFNBQVMsRUFBRSxFQUFFLEtBQUssYUFBYSxFQUFFLEtBQUssU0FBUyxPQUFPLEtBQUssV0FBVyxLQUFLLGNBQWMsS0FBSyxDQUFDLEVBQUcsTUFBSyxjQUFjLEVBQUUsS0FBSyxPQUFPLEVBQUUsVUFBVSxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssQ0FBQyxZQUFZLEtBQUssWUFBWSxRQUFRLEVBQUcsR0FBRSxJQUFLLEdBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxhQUFhLFNBQVMsRUFBRSxDQUFDLEtBQUssb0JBQW9CLEtBQUssYUFBYSxLQUFLLFlBQVksRUFBRSxLQUFLLEtBQUssR0FBSSxHQUFFLEtBQUssYUFBYSxDQUFDLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssb0JBQW9CLEtBQUssWUFBWSxLQUFLLGNBQWMsRUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQU0sTUFBSyxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxLQUFLLFdBQVcsR0FBRyxHQUFJLEdBQUUsS0FBSyxhQUFhLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssb0JBQW9CLEtBQUssWUFBWSxLQUFLLGNBQWMsRUFBRSxHQUFHLEtBQUssV0FBVyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxLQUFLLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTyxLQUFJLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxjQUFjLFFBQVEsS0FBSyxLQUFLLEtBQUssY0FBYyxNQUFNLENBQUMsRUFBRSxLQUFLLFlBQVksSUFBSSxFQUFFLEVBQUUsVUFBVSxNQUFNLFVBQVUsQ0FBQyxPQUFRLEdBQUUsS0FBSyxhQUFhLEVBQUUsRUFBRSxFQUFFLEtBQUssV0FBVyxPQUFPLElBQUksS0FBSyxLQUFLLENBQUMsS0FBSyxLQUFLLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUksR0FBRSxLQUFLLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsWUFBWSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTyxHQUFFLHNCQUFzQixXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFdBQVcsT0FBTyxFQUFFLEVBQUUsS0FBSyxXQUFXLEtBQUssY0FBYyxFQUFFLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLGtCQUFrQixVQUFVLENBQUMsS0FBSyxTQUFTLEtBQUssU0FBUyxNQUFNLEVBQUUsS0FBSyxhQUFhLEtBQUssU0FBUyxVQUFVLEVBQUUsS0FBSyxTQUFTLEtBQUssU0FBUyxNQUFNLEVBQUUsS0FBSyxTQUFTLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxpQkFBaUIsU0FBUyxFQUFFLENBQUMsS0FBSyxTQUFTLEtBQUssQ0FBQyxFQUFFLEdBQUksR0FBRSxLQUFLLE1BQU8sR0FBRSxHQUFHLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsYUFBYSxFQUFFLFNBQVMsVUFBVSxFQUFFLEVBQUUsU0FBUyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLFVBQVUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLE9BQU8sS0FBSyxJQUFJLEdBQUksRUFBQyxLQUFLLFVBQVUsS0FBSyxTQUFTLE9BQVEsTUFBSyxrQkFBa0IsRUFBRSxJQUFJLEtBQUssVUFBVSxLQUFLLFNBQVMsUUFBUSxLQUFLLGVBQWUsT0FBUSxNQUFLLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFVLE1BQU0sU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEtBQUssU0FBUyxHQUFHLENBQUMsRUFBRSxVQUFVLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQUMsQ0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxLQUFLLFVBQVUsQ0FBQyxFQUFFLFVBQVUsS0FBSyxLQUFLLElBQUksRUFBRSxPQUFRLEdBQUUsS0FBSyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLGVBQWUsR0FBRywwQkFBMEIsR0FBRyxVQUFVLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsZUFBZSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUksR0FBRSxFQUFFLFlBQVksRUFBRSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUksR0FBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBTSxJQUFJLE9BQU0sRUFBRSxzQ0FBc0MsRUFBRSxNQUFPLEVBQUMsRUFBRSxFQUFFLFFBQVEsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLGVBQWUsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsZ0JBQWdCLGVBQWUsRUFBRSxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFOLENBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU8sRUFBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLFlBQVksQ0FBQyxHQUFHLENBQUUsZ0JBQWdCLElBQUcsTUFBTyxJQUFJLEdBQUUsR0FBRyxVQUFVLE9BQU8sS0FBTSxJQUFJLE9BQU0sZ0dBQWdHLEVBQUUsS0FBSyxNQUFNLE9BQU8sT0FBTyxJQUFJLEVBQUUsS0FBSyxRQUFRLEtBQUssS0FBSyxLQUFLLEdBQUcsS0FBSyxNQUFNLFVBQVUsQ0FBQyxHQUFJLEdBQUUsR0FBSSxHQUFFLE9BQVEsS0FBSyxNQUFLLEFBQVksTUFBTyxNQUFLLElBQXhCLFlBQTZCLEdBQUUsR0FBRyxLQUFLLElBQUksTUFBTyxFQUFDLENBQUMsQ0FBQyxBQUFDLEdBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxVQUFVLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTyxJQUFJLEtBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLEdBQUcsV0FBVyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxNQUFPLElBQUksR0FBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsYUFBYSxpQkFBaUIsRUFBRSxLQUFLLEdBQUksRUFBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsV0FBVyxRQUFRLEVBQUUsYUFBYSxNQUFNLEVBQUUsR0FBSSxPQUFNLGdDQUFnQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEtBQUssTUFBTyxHQUFFLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxXQUFXLEdBQUcsc0JBQXNCLEdBQUcsY0FBYyxHQUFHLGVBQWUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLFFBQVEsT0FBTyxHQUFJLE9BQU0sc0RBQXNELENBQUMsRUFBRSxFQUFFLGVBQWUsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFJLEdBQUUsQ0FBQyxFQUFFLE1BQU8sR0FBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxDQUFDLEVBQUUsUUFBUSxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxXQUFXLE9BQVEsR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFPLEdBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFJLEdBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsYUFBYSxDQUFDLE9BQU8sR0FBRyxzQkFBc0IsR0FBRyxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxRQUFRLEVBQUUsZUFBZSxPQUFPLEVBQUUsZUFBZSxLQUFLLGdCQUFnQixFQUFFLGdCQUFnQixlQUFlLEVBQUUsZUFBZSxjQUFjLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxLQUFNLEdBQUUsS0FBSyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFPLEdBQUUsV0FBVyxRQUFTLEdBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGdCQUFnQixHQUFHLHNCQUFzQixHQUFHLFNBQVMsR0FBRyxVQUFVLEdBQUcsZUFBZSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLG1DQUFtQyxDQUFDLEVBQUUsS0FBSyxlQUFlLEdBQUcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsWUFBWSxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsS0FBSyxBQUFDLE1BQUssUUFBUSxHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxLQUFLLGVBQWUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLE1BQU0sS0FBSyxJQUFJLEdBQUksTUFBSyxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxPQUFPLEtBQUssSUFBSSxHQUFJLE1BQUssZUFBZSxLQUFLLElBQUksRUFBRSxLQUFLLFFBQVEsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsMEJBQTBCLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsUUFBUSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxVQUFVLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxNQUFNLFVBQVUsQ0FBQyxLQUFLLFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLE9BQU8sQUFBYSxNQUFPLFFBQXBCLElBQTJCLGNBQWMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sTUFBTSxPQUFPLE9BQU8sV0FBVyxLQUFLLE1BQU8sUUFBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQUFBVSxNQUFPLElBQWpCLFNBQW1CLEtBQU0sSUFBSSxPQUFNLDBDQUEwQyxFQUFFLE1BQU8sSUFBSSxRQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxTQUFTLEVBQUUsQ0FBQyxHQUFHLE9BQU8sTUFBTSxNQUFPLFFBQU8sTUFBTSxDQUFDLEVBQUUsR0FBSSxHQUFFLEdBQUksUUFBTyxDQUFDLEVBQUUsTUFBTyxHQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLFNBQVMsRUFBRSxDQUFDLE1BQU8sUUFBTyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsU0FBUyxFQUFFLENBQUMsTUFBTyxJQUFHLEFBQVksTUFBTyxHQUFFLElBQXJCLFlBQXlCLEFBQVksTUFBTyxHQUFFLE9BQXJCLFlBQTRCLEFBQVksTUFBTyxHQUFFLFFBQXJCLFVBQTJCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFJLE1BQUssQUFBTyxFQUFFLGNBQVQsTUFBdUIsR0FBRSxZQUFZLEVBQUUsWUFBWSxZQUFZLEdBQUcsQUFBVSxNQUFPLEdBQUUsaUJBQW5CLFVBQXFDLEdBQUUsZ0JBQWdCLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLE1BQU0sRUFBRSxpQkFBa0IsR0FBRSxJQUFJLElBQUksRUFBRSxnQkFBZ0IsR0FBRyxFQUFFLGdCQUFpQixHQUFFLElBQUksSUFBSSxFQUFFLEtBQU0sR0FBRSxFQUFFLENBQUMsR0FBRyxFQUFFLGVBQWdCLEdBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBSSxHQUFFLEFBQVcsSUFBWCxVQUFjLEFBQUssRUFBRSxTQUFQLElBQWUsQUFBSyxFQUFFLFNBQVAsR0FBYyxHQUFHLEFBQVMsRUFBRSxTQUFYLFFBQW9CLEdBQUUsT0FBTyxDQUFDLEdBQUksYUFBYSxJQUFHLEFBQUksRUFBRSxtQkFBTixHQUF3QixFQUFFLEtBQUssQ0FBQyxHQUFHLEFBQUksRUFBRSxTQUFOLElBQWdCLEdBQUUsT0FBTyxHQUFHLEVBQUUsT0FBTyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksUUFBUSxFQUFFLFVBQVUsR0FBSSxHQUFFLEtBQUssRUFBRSxZQUFhLElBQUcsWUFBYSxHQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsR0FBSSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEdBQUksR0FBRSxHQUFJLEdBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBSSxHQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsbUNBQW1DLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxBQUFNLEVBQUUsTUFBTSxFQUFFLElBQWhCLEtBQW9CLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFJLEdBQUUsRUFBRSxZQUFZLEdBQUcsRUFBRSxNQUFPLEdBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsTUFBTSxBQUFNLEdBQUUsTUFBTSxFQUFFLElBQWhCLEtBQW9CLElBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU8sR0FBRSxBQUFTLElBQVQsT0FBVyxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssTUFBTSxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsTUFBTSxBQUFvQixRQUFPLFVBQVUsU0FBUyxLQUFLLENBQUMsSUFBcEQsaUJBQXFELENBQUMsR0FBSSxHQUFFLENBQUMsS0FBSyxVQUFVLENBQUMsS0FBTSxJQUFJLE9BQU0sNEVBQTRFLENBQUMsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsSUFBSSxJQUFLLE1BQUssTUFBTSxFQUFFLEtBQUssTUFBTSxHQUFJLEdBQUUsRUFBRSxNQUFNLEtBQUssS0FBSyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxDQUFDLEVBQUUsTUFBTyxNQUFLLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEFBQUksVUFBVSxTQUFkLEVBQXFCLE1BQU8sR0FBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLE1BQU8sTUFBSyxPQUFPLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUksR0FBRSxLQUFLLE1BQU0sS0FBSyxLQUFLLEdBQUcsTUFBTyxJQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTyxNQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTyxNQUFLLE9BQU8sU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLEdBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFJLEdBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLE1BQU0sRUFBRSxNQUFPLEdBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssRUFBRSxHQUFJLEdBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxHQUFJLENBQU0sRUFBRSxNQUFNLEVBQUUsSUFBaEIsS0FBb0IsSUFBRyxLQUFLLEVBQUUsS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxNQUFPLE1BQUssTUFBTSxPQUFRLFFBQVEsR0FBRSxLQUFLLE9BQU8sU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLEdBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLElBQUksTUFBTyxNQUFLLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTyxLQUFJLEVBQUUsU0FBUyxTQUFTLEVBQUUsQ0FBQyxLQUFNLElBQUksT0FBTSw0RUFBNEUsQ0FBQyxFQUFFLHVCQUF1QixTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUksR0FBRSxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEdBQUcsWUFBWSxRQUFRLG1CQUFtQixLQUFLLEtBQUssR0FBRyxTQUFTLE1BQU0sUUFBUSxLQUFLLFNBQVMsa0JBQWtCLGVBQWUsRUFBRSxVQUFVLENBQUMsR0FBRyxLQUFLLEVBQUUsS0FBSyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsWUFBWSxZQUFZLEVBQUUsQUFBaUIsRUFBRSxPQUFuQixnQkFBMEIsR0FBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLEtBQUssS0FBTSxJQUFJLE9BQU0sMkJBQTJCLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLEFBQVcsRUFBRSxXQUFiLFVBQXVCLEFBQVksRUFBRSxXQUFkLFdBQXdCLEFBQVUsRUFBRSxXQUFaLFNBQXNCLEFBQVUsRUFBRSxXQUFaLFNBQXVCLEdBQUUsU0FBUyxRQUFRLEFBQVUsRUFBRSxXQUFaLFNBQXVCLEdBQUUsU0FBUyxPQUFPLEdBQUksR0FBRSxFQUFFLFNBQVMsS0FBSyxTQUFTLEdBQUcsRUFBRSxFQUFFLGVBQWUsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQU4sQ0FBUyxBQUFDLEdBQUUsR0FBSSxHQUFFLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU8sSUFBSSxHQUFFLEVBQUUsRUFBRSxNQUFNLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxjQUFjLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTyxNQUFLLHVCQUF1QixDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLEdBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTyxHQUFFLEtBQUssY0FBYyxLQUFLLHVCQUF1QixDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLG9DQUFvQyxHQUFHLGdCQUFnQixHQUFHLHlCQUF5QixHQUFHLHdCQUF3QixHQUFHLFNBQVMsR0FBRyxVQUFVLEdBQUcsY0FBYyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxPQUFRLEdBQUUsRUFBRSxFQUFFLEtBQUssS0FBSyxPQUFPLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsT0FBTyxTQUFTLEVBQUUsQ0FBQyxNQUFPLE1BQUssS0FBSyxLQUFLLEtBQUssRUFBRSxFQUFFLEVBQUUsVUFBVSxxQkFBcUIsU0FBUyxFQUFFLENBQUMsT0FBUSxHQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxLQUFLLEtBQUssR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFPLEdBQUUsS0FBSyxLQUFLLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFLE1BQU8sS0FBSSxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsU0FBUyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLEVBQUUsQUFBSSxJQUFKLEVBQU0sTUFBTSxDQUFDLEVBQUUsR0FBSSxHQUFFLEtBQUssS0FBSyxNQUFNLEtBQUssS0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQUUsTUFBTyxNQUFLLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxlQUFlLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUUsS0FBSyxPQUFPLEVBQUUsT0FBTyxLQUFLLE1BQU0sRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFlBQVksU0FBUyxFQUFFLENBQUMsS0FBSyxXQUFXLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLFNBQVMsRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFNLElBQUksT0FBTSxzQ0FBc0MsS0FBSyxPQUFPLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLEVBQUUsU0FBUyxTQUFTLEVBQUUsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxLQUFLLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxHQUFHLEtBQUssTUFBTSxJQUFJLEVBQUcsSUFBRyxHQUFHLEtBQUssT0FBTyxDQUFDLEVBQUUsTUFBTyxNQUFLLE9BQU8sRUFBRSxDQUFDLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsWUFBWSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsU0FBUyxFQUFFLENBQUMsRUFBRSxxQkFBcUIsU0FBUyxFQUFFLENBQUMsRUFBRSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLFVBQVUsQ0FBQyxHQUFJLEdBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxNQUFPLElBQUksTUFBSyxLQUFLLElBQUksS0FBTSxJQUFHLEdBQUcsS0FBTSxJQUFHLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFJLElBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLFNBQVMsU0FBUyxFQUFFLENBQUMsS0FBSyxZQUFZLENBQUMsRUFBRSxHQUFJLEdBQUUsS0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLEtBQUssTUFBTSxLQUFLLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxNQUFPLE1BQUssT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxHQUFHLHFCQUFxQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLE9BQU8sU0FBUyxFQUFFLENBQUMsTUFBTyxNQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLHFCQUFxQixTQUFTLEVBQUUsQ0FB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QUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsRUFBRSxLQUFLLEtBQUssWUFBWSxFQUFFLEtBQUssZUFBZSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLGFBQWEsU0FBUyxFQUFFLENBQUMsS0FBSyxXQUFXLE1BQU0sRUFBRSxFQUFFLEtBQUssS0FBSyxXQUFXLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssdUJBQXVCLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLGFBQWEsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBSSxHQUFFLEtBQUssV0FBVyxLQUFLLFdBQVcsRUFBRSxLQUFLLFdBQVcsS0FBSyxVQUFVLEVBQUUsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLFVBQVUsYUFBYSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssWUFBWSxFQUFFLEdBQUksR0FBRSxLQUFLLEtBQUssWUFBWSxHQUFHLEtBQUssTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLEtBQUssZUFBZSxHQUFHLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFlBQVksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsUUFBUSxVQUFVLENBQUMsRUFBRSxVQUFVLFFBQVEsS0FBSyxJQUFJLEVBQUUsS0FBSyxLQUFLLElBQUksRUFBRSxFQUFFLFVBQVUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLE9BQU8sS0FBSyxJQUFJLEdBQUksRUFBQyxLQUFLLGdCQUFnQixLQUFLLGFBQWMsTUFBSyxlQUFlLEdBQUcsRUFBRSxNQUFNLEtBQUssZUFBZSxDQUFDLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxFQUFFLFVBQVUsZUFBZSxVQUFVLENBQUMsS0FBSyxlQUFlLEdBQUcsS0FBSyxVQUFVLEtBQUssWUFBYSxNQUFLLE1BQU0sRUFBRSxLQUFLLFlBQWEsR0FBRSxNQUFNLEtBQUssZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssZUFBZSxJQUFJLEVBQUUsRUFBRSxVQUFVLE1BQU0sVUFBVSxDQUFDLEdBQUcsS0FBSyxVQUFVLEtBQUssV0FBVyxNQUFNLEdBQUcsR0FBSSxHQUFFLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssTUFBTSxLQUFLLEVBQUUsR0FBRyxLQUFLLE9BQU8sS0FBSyxJQUFJLE1BQU8sTUFBSyxJQUFJLEVBQUUsT0FBTyxLQUFLLFVBQVUsU0FBUyxFQUFFLEtBQUssS0FBSyxVQUFVLEtBQUssTUFBTSxDQUFDLEVBQUUsVUFBVSxhQUFhLEVBQUUsS0FBSyxLQUFLLFNBQVMsS0FBSyxNQUFNLENBQUMsRUFBRSxVQUFVLFlBQVksYUFBYSxFQUFFLEtBQUssS0FBSyxNQUFNLEtBQUssTUFBTSxDQUFDLEVBQUUsTUFBTyxNQUFLLE1BQU0sRUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLFdBQVcsRUFBRSxDQUFDLEtBQUssS0FBSyxHQUFHLFVBQVUsS0FBSyxXQUFXLENBQUMsRUFBRSxLQUFLLGVBQWUsS0FBSyxLQUFLLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxTQUFTLEdBQUcsS0FBSyxXQUFXLEdBQUcsS0FBSyxTQUFTLEdBQUcsS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsR0FBRyxLQUFLLFdBQVcsTUFBTSxHQUFHLEtBQUssTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssV0FBVyxFQUFFLE9BQU8sRUFBTixDQUFTLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBYSxNQUFLLFNBQVMsS0FBSyxlQUFlLEVBQUcsTUFBSyxXQUFXLEdBQUcsS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUFFLEtBQUssVUFBVSxLQUFLLFNBQVMsTUFBTSxDQUFDLEVBQUUsS0FBSyxRQUFRLEdBQUcsR0FBRyxFQUFFLEdBQUcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFPLE1BQUssV0FBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLFVBQVUsQ0FBQyxLQUFLLFdBQVcsS0FBSyxlQUFlLEtBQUssZ0JBQWdCLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssV0FBVyxHQUFHLE9BQVEsR0FBRSxFQUFFLEVBQUUsS0FBSyxXQUFXLEdBQUcsT0FBTyxJQUFJLEtBQUssV0FBVyxHQUFHLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLGlCQUFpQixJQUFJLENBQUMsRUFBRSxpQkFBaUIsU0FBUyxFQUFFLENBQUMsR0FBRyxLQUFLLFNBQVMsS0FBTSxJQUFJLE9BQU0sZUFBZSxLQUFLLDBCQUEwQixFQUFFLEtBQUssV0FBVyxFQUFFLFdBQVcsS0FBSyxnQkFBZ0IsRUFBRSxLQUFLLFNBQVMsRUFBRSxHQUFJLEdBQUUsS0FBSyxNQUFPLEdBQUUsR0FBRyxPQUFPLFNBQVMsRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLFlBQWEsTUFBSyxTQUFTLEdBQUcsS0FBSyxVQUFVLEtBQUssU0FBUyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsS0FBSyxXQUFXLE1BQU0sR0FBRyxHQUFJLEdBQUUsS0FBSyxTQUFTLEdBQUcsTUFBTyxNQUFLLGdCQUFpQixNQUFLLE1BQU0sS0FBSyxjQUFjLEVBQUUsRUFBRSxJQUFJLEtBQUssVUFBVSxLQUFLLFNBQVMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFBVSxDQUFDLEVBQUUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsZUFBZSxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU8sTUFBSyxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixVQUFVLENBQUMsT0FBUSxLQUFLLE1BQUssZ0JBQWdCLEtBQUssZ0JBQWdCLGVBQWUsQ0FBQyxHQUFJLE1BQUssV0FBVyxHQUFHLEtBQUssZ0JBQWdCLEdBQUcsRUFBRSxLQUFLLFVBQVUsQ0FBQyxHQUFHLEtBQUssU0FBUyxLQUFNLElBQUksT0FBTSxlQUFlLEtBQUssMEJBQTBCLEVBQUUsS0FBSyxTQUFTLEdBQUcsS0FBSyxVQUFVLEtBQUssU0FBUyxLQUFLLENBQUMsRUFBRSxTQUFTLFVBQVUsQ0FBQyxHQUFJLEdBQUUsVUFBVSxLQUFLLEtBQUssTUFBTyxNQUFLLFNBQVMsS0FBSyxTQUFTLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxxQ0FBcUMsQ0FBQyxNQUFDLENBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU8sSUFBSSxHQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUksR0FBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxPQUFPLE9BQU8sTUFBTyxHQUFFLFFBQVEsRUFBRSxZQUFZLGNBQWMsQ0FBQyxFQUFFLENBQUMsTUFBTSxTQUFTLE1BQU8sR0FBRSxPQUFPLENBQUMsVUFBVSxNQUFPLEdBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsR0FBRyxPQUFPLE9BQU8sT0FBTyxTQUFTLE1BQU8sR0FBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLE1BQU8sT0FBTSxVQUFVLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLGFBQWEsSUFBSSxFQUFFLEdBQUksWUFBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxNQUFPLE9BQU0sYUFBYSxNQUFPLFFBQU8sT0FBTyxDQUFDLFVBQVUsS0FBTSxJQUFJLE9BQU0sOEJBQThCLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBTixDQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsT0FBTyxPQUFPLFdBQVcsY0FBYyxFQUFFLGFBQWEsVUFBVSxTQUFTLEVBQUUsU0FBUyxHQUFHLENBQUMsS0FBSyxjQUFjLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxVQUFVLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLEdBQUksR0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQU4sQ0FBUyxLQUFLLFFBQVEsR0FBSSxHQUFFLE9BQU8sRUFBRSxLQUFLLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFdBQVcsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxLQUFLLE1BQU0sQUFBUyxLQUFULE9BQVcsS0FBSyxRQUFRLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssUUFBUSxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxVQUFVLENBQUMsTUFBTyxHQUFFLE1BQU0sS0FBSyxRQUFRLE9BQU8sQ0FBQyxFQUFFLEtBQUssT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQyxNQUFPLE1BQUssUUFBUSxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsWUFBWSxFQUFFLEFBQWUsS0FBSyxjQUFwQixhQUFnQyxLQUFNLElBQUksT0FBTSxLQUFLLFlBQVksa0NBQWtDLEVBQUUsTUFBTyxJQUFJLEdBQUUsS0FBSyxDQUFDLFdBQVcsQUFBZSxLQUFLLGNBQXBCLFlBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxzQ0FBc0MsR0FBRyxhQUFhLEdBQUcsV0FBVyxHQUFHLGtCQUFrQixHQUFHLGtCQUFrQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxFQUFFLE9BQU8sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE9BQU8sR0FBRyxFQUFFLFlBQVksQUFBYSxNQUFPLGFBQXBCLEtBQWlDLEFBQWEsTUFBTyxZQUFwQixJQUErQixFQUFFLFdBQVcsQUFBYSxNQUFPLFFBQXBCLElBQTJCLEVBQUUsV0FBVyxBQUFhLE1BQU8sWUFBcEIsSUFBK0IsQUFBYSxNQUFPLGFBQXBCLElBQWdDLEVBQUUsS0FBSyxPQUFPLENBQUMsR0FBSSxHQUFFLEdBQUksYUFBWSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxBQUFJLEdBQUksTUFBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssaUJBQWlCLENBQUMsRUFBRSxPQUEzQyxDQUErQyxNQUFDLENBQVMsR0FBRyxDQUFDLEdBQUksR0FBRSxHQUFJLE1BQUssYUFBYSxLQUFLLG1CQUFtQixLQUFLLGdCQUFnQixLQUFLLGVBQWUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssQUFBSSxFQUFFLFFBQVEsaUJBQWlCLEVBQUUsT0FBakMsQ0FBcUMsTUFBQyxDQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxNQUFDLENBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxPQUFRLEdBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxFQUFFLEdBQUksT0FBTSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsRUFBRSxLQUFLLEtBQUssY0FBYyxFQUFFLEtBQUssU0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxLQUFLLGNBQWMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxDQUFDLEtBQS9CLE9BQW9DLEVBQUUsRUFBRSxHQUFHLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBakMsT0FBdUMsR0FBRSxNQUFPLEdBQUUsT0FBTyxJQUFLLEdBQUUsT0FBTyxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxXQUFXLEdBQUksWUFBVyxDQUFDLEVBQUUsR0FBSSxPQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxBQUFRLE9BQU8sR0FBRSxFQUFFLFdBQVcsQ0FBQyxLQUEvQixPQUFvQyxFQUFFLEVBQUUsR0FBRyxBQUFRLE9BQU8sR0FBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEtBQWpDLE9BQXVDLEdBQUUsTUFBTyxHQUFFLE9BQU8sSUFBSyxHQUFFLE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUcsR0FBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRyxHQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxHQUFJLEdBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxHQUFHLEdBQUcsTUFBTyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLFNBQVMsRUFBRSxDQUFDLE1BQU8sR0FBRSxXQUFXLEVBQUUsWUFBWSxhQUFhLENBQUMsRUFBRSxTQUFTLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFJLE9BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBSSxHQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsS0FBSyxVQUFVLEVBQUcsR0FBRSxFQUFFLElBQUksRUFBRSxLQUFLLE1BQU0sR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQUFBSSxJQUFKLEVBQU0sR0FBRyxBQUFJLElBQUosRUFBTSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUcsSUFBRyxNQUFNLEVBQUUsS0FBSyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsS0FBSyxNQUFNLEtBQUssRUFBRSxDQUFDLE1BQU8sR0FBRSxTQUFTLEdBQUksR0FBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsV0FBVyxhQUFhLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLGFBQWEsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsWUFBWSxFQUFFLFdBQVcsYUFBYSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxVQUFVLEtBQUssU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFJLEdBQUUsRUFBRSxBQUFDLEdBQUUsR0FBSSxZQUFXLEVBQUUsT0FBTyxLQUFLLFNBQVMsTUFBTSxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLFNBQVMsTUFBTSxDQUFDLEtBQU0sR0FBRSxLQUFLLFNBQVMsT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFJLEdBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsSUFBSyxHQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUyxHQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQUFBTSxLQUFJLEVBQUUsS0FBWixLQUFpQixJQUFJLE1BQU8sR0FBRSxHQUFJLEFBQUksSUFBSixFQUFGLEVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVMsR0FBRSxXQUFZLEdBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sR0FBSSxHQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLElBQUksS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxNQUFNLFVBQVUsQ0FBQyxLQUFLLFVBQVUsS0FBSyxTQUFTLFFBQVMsTUFBSyxLQUFLLENBQUMsS0FB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QUksWUFBVyxDQUFDLEVBQUUsR0FBSSxPQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxNQUFPLElBQUksWUFBVyxDQUFDLENBQUMsRUFBRSxXQUFXLFNBQVMsRUFBRSxDQUFDLE1BQU8sR0FBRSxjQUFjLEdBQUksWUFBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsR0FBSSxPQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLFNBQVMsRUFBRSxDQUFDLE1BQU8sR0FBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsRUFBRSxHQUFJLE9BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLFlBQVksU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLFdBQVcsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsR0FBSSxZQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFPLEdBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFPLEdBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxTQUFTLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUksR0FBRSxFQUFFLEdBQUcsQUFBTSxJQUFOLEtBQVMsQUFBSyxJQUFMLElBQVEsQUFBSSxJQUFKLEdBQU8sSUFBSSxFQUFFLE9BQU8sR0FBSSxDQUFPLElBQVAsS0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTyxHQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLFNBQVMsRUFBRSxDQUFDLE1BQU0sQUFBVSxPQUFPLElBQWpCLFNBQW1CLFNBQVMsQUFBbUIsT0FBTyxVQUFVLFNBQVMsS0FBSyxDQUFDLElBQW5ELGlCQUFxRCxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxZQUFZLFlBQWEsWUFBVyxhQUFhLEVBQUUsYUFBYSxZQUFhLGFBQVksY0FBYyxNQUFNLEVBQUUsRUFBRSxhQUFhLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLEtBQU0sSUFBSSxPQUFNLEVBQUUsb0NBQW9DLENBQUMsRUFBRSxFQUFFLGlCQUFpQixNQUFNLEVBQUUsaUJBQWlCLEdBQUcsRUFBRSxPQUFPLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFHLElBQUcsSUFBSSxPQUFPLElBQUksR0FBRyxNQUFRLElBQUUsRUFBRSxXQUFXLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFPLEVBQUMsRUFBRSxFQUFFLE1BQU0sU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsVUFBVSxDQUFDLEVBQUUsTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFJLEVBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxPQUFPLElBQUksSUFBSSxJQUFLLFdBQVUsR0FBRyxVQUFVLEdBQUcsZUFBZSxDQUFDLEdBQUcsQUFBUyxFQUFFLEtBQVgsUUFBZ0IsR0FBRSxHQUFHLFVBQVUsR0FBRyxJQUFJLE1BQU8sRUFBQyxFQUFFLEVBQUUsZUFBZSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU8sR0FBRSxRQUFRLFFBQVEsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLE1BQU8sYUFBYSxPQUFNLEFBQUssQ0FBQyxnQkFBZ0IsZUFBZSxFQUFFLFFBQVEsT0FBTyxVQUFVLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBaEYsS0FBb0YsQUFBYSxNQUFPLFlBQXBCLElBQStCLEdBQUksR0FBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUksWUFBVyxFQUFFLE9BQU8sU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFPLEdBQUcsQ0FBZ0IsSUFBaEIsY0FBa0IsRUFBRSxFQUFFLFlBQVksYUFBYSxDQUFDLEVBQUUsQUFBVyxJQUFYLFVBQWUsR0FBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxBQUFLLElBQUwsSUFBUyxHQUFFLFNBQVMsRUFBRSxDQUFDLE1BQU8sR0FBRSxFQUFFLEVBQUUsV0FBVyxHQUFJLFlBQVcsRUFBRSxNQUFNLEVBQUUsR0FBSSxPQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLFFBQVEsT0FBTyxHQUFJLE9BQU0sMkJB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QyxDQUFDLENBQUMsRUFBRSxBQUFVLEVBQUUsU0FBWixTQUFvQixFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLFNBQVMsT0FBTyxFQUFOLENBQVMsRUFBRSxPQUFPLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFPLEVBQUMsQ0FBQyxBQUFDLEdBQUUsUUFBUSxHQUFHLFVBQVUsUUFBUSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEFBQVksTUFBTyxJQUFuQixXQUFxQixNQUFPLE1BQUssR0FBSSxHQUFFLEtBQUssWUFBWSxNQUFPLE1BQUssS0FBSyxTQUFTLEVBQUUsQ0FBQyxNQUFPLEdBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxNQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsS0FBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsTUFBTSxTQUFTLEVBQUUsQ0FBQyxNQUFPLE1BQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxLQUFLLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxBQUFZLE1BQU8sSUFBbkIsWUFBc0IsS0FBSyxRQUFRLEdBQUcsQUFBWSxNQUFPLElBQW5CLFlBQXNCLEtBQUssUUFBUSxFQUFFLE1BQU8sTUFBSyxHQUFJLEdBQUUsR0FBSSxNQUFLLFlBQVksQ0FBQyxFQUFFLFlBQUssUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxNQUFNLEtBQUssR0FBSSxHQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBUyxDQUFDLEVBQUUsRUFBRSxVQUFVLGNBQWMsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsbUJBQW1CLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxrQkFBa0IsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQUFBVSxFQUFFLFNBQVosUUFBbUIsTUFBTyxHQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFJLEdBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBUSxHQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU8sRUFBQyxFQUFFLEVBQUUsT0FBTyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQVEsR0FBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEdBQUcsYUFBYSxDQUFDLEVBQUUsTUFBTyxFQUFDLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFDLE1BQUcsYUFBYSxNQUFZLEVBQVMsRUFBRSxRQUFRLEdBQUksTUFBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFJLE1BQUssQ0FBQyxFQUFFLE1BQU8sR0FBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxLQUFLLEdBQUcsQUFBbUIsT0FBTyxVQUFVLFNBQVMsS0FBSyxDQUFDLElBQW5ELGlCQUFxRCxNQUFPLE1BQUssT0FBTyxHQUFJLFdBQVUsa0JBQWtCLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFPLE1BQUssUUFBUSxDQUFDLENBQUMsRUFBNEMsT0FBdEMsR0FBRSxHQUFJLE9BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFJLE1BQUssQ0FBQyxFQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFPLEdBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBSSxHQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxLQUFLLEdBQUcsQUFBbUIsT0FBTyxVQUFVLFNBQVMsS0FBSyxDQUFDLElBQW5ELGlCQUFxRCxNQUFPLE1BQUssT0FBTyxHQUFJLFdBQVUsa0JBQWtCLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFPLE1BQUssUUFBUSxDQUFDLENBQUMsRUFBeUIsT0FBbkIsR0FBRSxHQUFHLEVBQUUsR0FBSSxNQUFLLENBQUMsRUFBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsTUFBTyxFQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxDQUFDLEVBQUUsQUFBQyxBQVpodWlELEdBWWt1aUQsRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyx1QkFBdUIsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLE9BQU8sVUFBVSxTQUFTLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUUsZ0JBQWdCLElBQUcsTUFBTyxJQUFJLEdBQUUsQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsTUFBTSxXQUFXLEdBQUcsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUksR0FBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLElBQUssR0FBRSxZQUFZLElBQUksS0FBSyxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUcsS0FBSyxNQUFNLEdBQUcsS0FBSyxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUssR0FBSSxHQUFFLEtBQUssS0FBSyxVQUFVLEVBQUUsR0FBSSxHQUFFLEVBQUUsYUFBYSxLQUFLLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQU0sSUFBSSxPQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEtBQUssS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFJLEdBQUUsR0FBRyxFQUFFLEFBQVUsTUFBTyxHQUFFLFlBQW5CLFNBQThCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxBQUF5QixFQUFFLEtBQUssRUFBRSxVQUFVLElBQTVDLHVCQUE4QyxHQUFJLFlBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxXQUFZLEdBQUUsRUFBRSxxQkFBcUIsS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQU0sSUFBSSxPQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxHQUFJLEdBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxLQUFNLEdBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxNQUFPLEdBQUUsTUFBTSxDQUFDLEVBQUUsVUFBVSxLQUFLLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLFFBQVEsVUFBVSxHQUFHLEtBQUssTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQUFBSyxJQUFMLEdBQU8sRUFBRSxFQUFFLEFBQVUsTUFBTyxJQUFqQixTQUFtQixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxBQUF5QixFQUFFLEtBQUssQ0FBQyxJQUFqQyx1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QUUsWUFBWSxJQUFJLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxJQUFJLEFBQUksSUFBRyxFQUFFLGFBQVQsR0FBdUIsR0FBRSxZQUFZLElBQUksS0FBSyxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUcsS0FBSyxNQUFNLEdBQUcsS0FBSyxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUssR0FBSSxHQUFFLEtBQUssS0FBSyxVQUFVLEVBQUUsR0FBSSxHQUFFLEVBQUUsYUFBYSxLQUFLLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxLQUFNLElBQUksT0FBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLE9BQU8sR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEtBQUssS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEdBQUksR0FBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEtBQU0sR0FBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLE1BQU8sR0FBRSxNQUFNLENBQUMsRUFBRSxVQUFVLEtBQUssU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxRQUFRLFVBQVUsRUFBRSxLQUFLLFFBQVEsV0FBVyxFQUFFLEdBQUcsR0FBRyxLQUFLLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEFBQUssSUFBTCxHQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsQUFBVSxNQUFPLElBQWpCLFNBQW1CLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFLEFBQXlCLEVBQUUsS0FBSyxDQUFDLElBQWpDLHVCQUFtQyxFQUFFLE1BQU0sR0FBSSxZQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sRUFBRSxDQUFDLEdBQUcsQUFB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LEdBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxBQUFVLE1BQU8sSUFBakIsU0FBbUIsS0FBTSxJQUFJLFdBQVUsRUFBRSxvQkFBb0IsRUFBRSxPQUFRLEtBQUssR0FBRSxFQUFFLGVBQWUsQ0FBQyxHQUFJLEdBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU8sRUFBQyxFQUFFLEVBQUUsVUFBVSxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU8sR0FBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFHLEdBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFJLEdBQUUsQ0FBQyxTQUFTLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU8sUUFBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxjQUFjLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRSxHQUFJLFlBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxNQUFPLEVBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxjQUFjLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsU0FBUyxFQUFFLENBQUMsRUFBRyxHQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sWUFBWSxFQUFFLE1BQU0sV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUksR0FBRSxLQUFLLE1BQU0sRUFBRSxNQUFNLE1BQU0sRUFBRSxNQUFNLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxhQUFhLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxhQUFhLE1BQU0sS0FBSyxHQUFJLFlBQVcsQ0FBQyxDQUFDLENBQUMsTUFBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLE9BQVEsR0FBRSxHQUFJLEdBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLE9BQVEsR0FBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxNQUFPLFFBQU8sYUFBYSxNQUFNLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBUSxHQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEdBQUcsT0FBTyxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU8sRUFBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLFdBQVcsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxDQUFDLEtBQS9CLE9BQW9DLEVBQUUsRUFBRSxHQUFHLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBakMsT0FBdUMsR0FBRSxNQUFPLEdBQUUsT0FBTyxJQUFLLEdBQUUsT0FBTyxLQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBSSxHQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxDQUFDLEtBQS9CLE9BQW9DLEVBQUUsRUFBRSxHQUFHLEFBQVEsT0FBTyxHQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBakMsT0FBdUMsR0FBRSxNQUFPLEdBQUUsT0FBTyxJQUFLLEdBQUUsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRyxHQUFFLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxFQUFHLEdBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEdBQUksR0FBRSxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxNQUFPLEVBQUMsRUFBRSxFQUFFLGNBQWMsU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLGNBQWMsU0FBUyxFQUFFLENBQUMsT0FBUSxHQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxNQUFPLEVBQUMsRUFBRSxFQUFFLFdBQVcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUksT0FBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFJLEdBQUUsRUFBRSxNQUFNLElBQUksRUFBRSxLQUFLLFVBQVUsRUFBRyxHQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxBQUFJLElBQUosRUFBTSxHQUFHLEFBQUksSUFBSixFQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRyxJQUFHLE1BQU0sRUFBRSxLQUFLLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxLQUFLLE1BQU0sS0FBSyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLElBQUssR0FBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVMsR0FBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEFBQU0sS0FBSSxFQUFFLEtBQVosS0FBaUIsSUFBSSxNQUFPLEdBQUUsR0FBSSxBQUFJLElBQUosRUFBRixFQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQVEsR0FBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEFBQUksSUFBSixHQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUcsR0FBRSxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU8sR0FBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFFBQVEsR0FBRyxlQUFlLEdBQUcsYUFBYSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEdBQUcsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUksR0FBRSxVQUFVLENBQUMsT0FBUSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFRLEdBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFPLEVBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsT0FBUSxHQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFLLEdBQUUsRUFBRSxLQUFLLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU8sR0FBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTyxJQUFHLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFlBQVcsRUFBRSxDQUFDLE9BQVEsR0FBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxXQUFZLEdBQUUsRUFBRSxXQUFXLEFBQUksSUFBSixHQUFRLEdBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEFBQUksRUFBRSxVQUFOLEdBQWdCLEdBQUUsWUFBWSxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsWUFBWSxHQUFHLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLFlBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxXQUFXLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBVSxHQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsWUFBYSxLQUFJLEdBQUcsRUFBRSxFQUFFLFdBQVksR0FBRSxFQUFFLFdBQVcsRUFBRyxJQUFHLEVBQUcsR0FBRSxHQUFHLEtBQUssSUFBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUcsR0FBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBSSxHQUFFLEdBQUcsTUFBTSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQVMsR0FBRSxFQUFFLEVBQUUsSUFBSSxHQUFHLEFBQUcsRUFBRSxHQUFMLEdBQVEsTUFBTyxJQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxDQUFDLFlBQVcsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFHLEdBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQUFBSSxFQUFFLEtBQUssV0FBWCxFQUFvQixNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFJLEdBQUUsR0FBRyxFQUFFLEFBQUksSUFBSixFQUFNLEVBQUcsR0FBRSxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxBQUFJLEVBQUUsTUFBTSxPQUFaLEVBQWlCLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEFBQUksRUFBRSxNQUFNLE9BQVosR0FBbUIsR0FBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxHQUFHLEVBQUUsTUFBTyxHQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUyxHQUFFLE1BQU8sR0FBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFFLEdBQUUsVUFBVSxFQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsQUFBSSxFQUFFLEtBQUssV0FBWCxFQUFvQixDQUFDLFlBQVcsRUFBRSxFQUFFLENBQUMsT0FBUSxHQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxHQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsTUFBTyxHQUFFLEdBQUcsQUFBSSxFQUFFLFlBQU4sRUFBZ0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxHQUFJLEdBQUUsTUFBTyxHQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsQUFBSSxJQUFKLEdBQU8sRUFBRSxTQUFTLEdBQUcsRUFBRSxPQUFPLEdBQUksR0FBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU8sR0FBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEFBQUcsRUFBRSxFQUFFLGNBQVAsR0FBcUIsQ0FBQyxFQUFFLFVBQVUsS0FBTSxHQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTyxHQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxFQUFFLGNBQWUsR0FBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLEdBQUcsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsR0FBc0IsTUFBTyxFQUFDLENBQUMsTUFBTyxHQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRyxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsRUFBcUIsRUFBRSxHQUFHLEVBQUUsVUFBVyxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsR0FBc0IsRUFBRSxDQUFDLENBQUMsWUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsR0FBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLE1BQU8sR0FBRSxHQUFHLEFBQUksRUFBRSxZQUFOLEVBQWdCLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsR0FBSSxHQUFFLE1BQU8sR0FBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxFQUFFLEFBQUksSUFBSixHQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsR0FBRyxFQUFFLE9BQU8sR0FBSSxHQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLGNBQWMsR0FBSSxDQUFJLEVBQUUsV0FBTixHQUFnQixFQUFFLGVBQWUsR0FBRyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWUsR0FBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLGFBQWEsR0FBRyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsVUFBVSxHQUFJLEdBQUUsTUFBTyxHQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsQUFBRyxFQUFFLEVBQUUsYUFBUCxHQUFvQixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsV0FBVyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsQUFBSSxFQUFFLEtBQUssWUFBWCxHQUFzQixNQUFPLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixHQUFJLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFlBQVksQUFBSSxFQUFFLEtBQUssWUFBWCxFQUFxQixNQUFPLE9BQU8sR0FBRSxnQkFBZ0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTyxHQUFFLGlCQUFrQixHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRyxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsRUFBcUIsRUFBRSxHQUFHLEVBQUUsVUFBVyxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsR0FBc0IsRUFBRSxDQUFDLENBQUMsWUFBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLFlBQVksRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLGFBQVksQ0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxLQUFLLGlCQUFpQixFQUFFLEtBQUssWUFBWSxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssV0FBVyxHQUFHLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssWUFBWSxFQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssWUFBWSxFQUFFLEtBQUssYUFBYSxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLFdBQVcsRUFBRSxLQUFLLFdBQVcsRUFBRSxLQUFLLFVBQVUsR0FBSSxHQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxVQUFVLEdBQUksR0FBRSxNQUFNLEVBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLFFBQVEsR0FBSSxHQUFFLE1BQU0sRUFBRyxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsS0FBSyxTQUFTLEVBQUUsR0FBRSxLQUFLLFNBQVMsRUFBRSxHQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssT0FBTyxLQUFLLEtBQUssUUFBUSxLQUFLLEtBQUssU0FBUyxHQUFJLEdBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUssR0FBSSxHQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssTUFBTSxHQUFJLEdBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxZQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTyxHQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUcsR0FBRSxFQUFFLE9BQU8sUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxHQUFJLEdBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sQUFBSSxFQUFFLE9BQU4sRUFBVyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsR0FBRSxDQUFDLEVBQUUsTUFBTyxLQUFJLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEdBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxPQUFPLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFlBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFPLEdBQUUsR0FBSSxHQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUksR0FBRSxHQUFHLEVBQUUsRUFBRyxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFJLEdBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTyxJQUFFLEVBQUUsQ0FBQyxFQUFFLEFBQUksSUFBSixHQUFRLEdBQUUsR0FBRyxHQUFJLEdBQUUsR0FBSSxJQUFFLE1BQU8sR0FBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsR0FBRyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUcsSUFBRSxVQUFVLEVBQUUsR0FBRyxHQUFHLEVBQUUsT0FBTyxHQUFJLEdBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFJLEdBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssR0FBSSxHQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsWUFBWSxHQUFJLEdBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBSSxJQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxpQkFBaUIsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxHQUFFLENBQUMsRUFBRSxBQUFJLEVBQUUsWUFBTixHQUFpQixJQUFJLEVBQUUsTUFBTyxHQUFFLEdBQUcsQUFBSSxFQUFFLFlBQU4sRUFBZ0IsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBSSxHQUFFLEVBQUUsWUFBWSxFQUFvSCxHQUE5RyxDQUFJLEVBQUUsV0FBTixHQUFnQixFQUFFLFVBQVUsSUFBSyxHQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxBQUFJLEVBQUUsS0FBSyxZQUFYLElBQWtDLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxBQUFJLEVBQUUsS0FBSyxZQUFYLEdBQXNCLE1BQU8sRUFBQyxDQUFDLE1BQU8sR0FBRSxPQUFPLEVBQUUsSUFBSSxFQUFHLEdBQUUsRUFBRSxFQUFFLEVBQUUsQUFBSSxFQUFFLEtBQUssWUFBWCxFQUFxQixFQUFFLEdBQUksR0FBRSxTQUFTLEVBQUUsYUFBYyxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUksSUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUMsRUFBRSxHQUFJLElBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFDLEVBQUUsR0FBSSxJQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBQyxFQUFFLEdBQUksSUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUMsRUFBRSxHQUFJLElBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFDLEVBQUUsR0FBSSxJQUFFLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBQyxFQUFFLEdBQUksSUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUMsRUFBRSxHQUFJLElBQUUsR0FBRyxJQUFJLElBQUksS0FBSyxFQUFDLEVBQUUsR0FBSSxJQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBQyxDQUFDLEVBQUUsRUFBRSxZQUFZLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTyxJQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLGFBQWEsR0FBRSxFQUFFLGFBQWEsR0FBRSxFQUFFLGlCQUFpQixHQUFFLEVBQUUsaUJBQWlCLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTyxJQUFHLEVBQUUsTUFBTSxBQUFJLEVBQUUsTUFBTSxPQUFaLEVBQWlCLEVBQUcsR0FBRSxNQUFNLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFPLEdBQUUsR0FBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQUFBSSxFQUFFLFdBQU4sR0FBZ0IsQUFBTSxFQUFFLFNBQVIsS0FBZ0IsSUFBSSxFQUFFLE1BQU8sSUFBRSxFQUFFLEFBQUksRUFBRSxZQUFOLEVBQWdCLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxBQUFJLEVBQUUsT0FBTixFQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBUSxJQUFFLEVBQUcsR0FBRSxPQUFPLEtBQUssRUFBRSxHQUFJLEdBQUUsT0FBTyxLQUFLLEVBQUUsR0FBSSxHQUFFLE9BQU8sTUFBTSxFQUFFLEdBQUksR0FBRSxPQUFPLEtBQUssRUFBRSxHQUFJLEdBQUUsT0FBTyxRQUFRLEdBQUcsRUFBRSxFQUFFLEdBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsT0FBTyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUUsRUFBRSxFQUFFLE9BQU8sTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxPQUFPLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRSxFQUFFLEFBQUksRUFBRSxRQUFOLEVBQVksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxPQUFPLEVBQUUsT0FBTyxNQUFNLFFBQVMsSUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLE1BQU0sTUFBTSxFQUFFLEdBQUUsRUFBRSxFQUFFLE9BQU8sTUFBTSxRQUFRLEVBQUUsR0FBRyxHQUFHLEVBQUUsT0FBTyxNQUFPLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sSUFBSyxJQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRSxFQUFFLEFBQUksRUFBRSxRQUFOLEVBQVks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LGFBQWEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsWUFBWSxFQUFFLFdBQVcsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEFBQUksRUFBRSxLQUFLLFlBQVgsR0FBc0IsTUFBTyxFQUFDLENBQUMsTUFBTyxHQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxBQUFJLEVBQUUsS0FBSyxZQUFYLEVBQXFCLEVBQUUsR0FBRyxFQUFFLFVBQVcsR0FBRSxFQUFFLEVBQUUsRUFBRSxBQUFJLEVBQUUsS0FBSyxZQUFYLEdBQXNCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEFBQUksRUFBRSxXQUFOLEVBQWUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFRLEdBQUUsRUFBRSxFQUFFLEdBQUUsR0FBRSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxHQUFFLENBQUMsRUFBRSxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsTUFBTyxHQUFFLEdBQUcsQUFBSSxFQUFFLFlBQU4sRUFBZ0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLFVBQVcsR0FBRSxHQUFFLEVBQUUsRUFBRSxTQUFTLE1BQU0sR0FBRSxFQUFFLElBQUksSUFBSSxHQUFFLEVBQUUsSUFBSSxJQUFJLEdBQUUsRUFBRSxHQUFHLENBQUMsR0FBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLE9BQVEsSUFBSSxHQUFFLEVBQUUsSUFBSSxJQUFJLEdBQUUsRUFBRSxJQUFJLElBQUksR0FBRSxFQUFFLElBQUksSUFBSSxHQUFFLEVBQUUsSUFBSSxJQUFJLEdBQUUsRUFBRSxJQUFJLElBQUksR0FBRSxFQUFFLElBQUksSUFBSSxHQUFFLEVBQUUsSUFBSSxJQUFJLEdBQUUsRUFBRSxJQUFJLEVBQUUsSUFBRyxFQUFFLGFBQWEsRUFBRyxJQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsV0FBWSxHQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRyxHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxhQUFhLEdBQUksR0FBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxZQUFZLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxBQUFJLEVBQUUsS0FBSyxZQUFYLEdBQXNCLE1BQU8sRUFBQyxDQUFDLE1BQU8sR0FBRSxPQUFPLEVBQUUsSUFBSSxFQUFHLEdBQUUsRUFBRSxFQUFFLEVBQUUsQUFBSSxFQUFFLEtBQUssWUFBWCxFQUFxQixFQUFFLEdBQUcsRUFBRSxVQUFXLEdBQUUsRUFBRSxFQUFFLEVBQUUsQUFBSSxFQUFFLEtBQUssWUFBWCxHQUFzQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBSSxHQUFFLE9BQU8sS0FBSyxJQUFJLEdBQUcsSUFBSSxFQUFFLE1BQU8sQUFBSSxHQUFFLFlBQU4sR0FBa0IsR0FBRSxXQUFXLElBQUksRUFBRSxHQUFHLElBQUksR0FBSSxDQUFJLElBQUosRUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEFBQUksSUFBSixHQUFRLEdBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxBQUFJLElBQUosR0FBUSxJQUFFLEVBQUUsSUFBSSxFQUFFLEFBQUksRUFBRSxZQUFOLEdBQWtCLEdBQUUsU0FBUyxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEFBQUksRUFBRSxZQUFOLEdBQWlCLE1BQU8sR0FBRSxXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU8sS0FBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRyxDQUFJLEVBQUUsT0FBTixFQUFZLElBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRSxFQUFFLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxVQUFVLEdBQUcsR0FBRyxHQUFJLEdBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFPLEdBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxBQUFJLEVBQUUsVUFBTixFQUFjLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTyxHQUFFLEVBQUUsTUFBTSxVQUFVLEdBQUcsQUFBSyxJQUFMLElBQVEsQUFBSyxJQUFMLElBQVEsQUFBSyxJQUFMLElBQVEsQUFBTSxJQUFOLEtBQVMsSUFBSSxHQUFHLEFBQU0sSUFBTixJQUFRLEdBQUUsRUFBRSxDQUFDLEVBQUcsR0FBRSxNQUFNLEtBQUssSUFBSSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBZ0MsR0FBdEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFrQixBQUFLLEdBQUcsR0FBRSxFQUFFLE9BQU8sUUFBbkIsR0FBMEIsQUFBSSxJQUFKLEdBQU8sRUFBRSxTQUFTLEdBQUcsRUFBRSxVQUFVLE1BQU8sR0FBRSxJQUFJLEFBQUksSUFBSixHQUFRLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFTLENBQUksSUFBSixHQUFRLElBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxHQUFJLEdBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUUsQ0FBQyxFQUFFLEVBQUUsV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVyxHQUFFLEdBQUcsRUFBRSxNQUFPLEdBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTyxHQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFlBQVksb0NBQW9DLEVBQUUsQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLEdBQUcsVUFBVSxHQUFHLGFBQWEsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsVUFBVSxDQUFDLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssTUFBTSxLQUFLLEtBQUssVUFBVSxFQUFFLEtBQUssS0FBSyxHQUFHLEtBQUssUUFBUSxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRyxHQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUcsR0FBRSxFQUFFLFdBQVcsRUFBRSxFQUFHLEdBQUUsVUFBVSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUcsSUFBRyxFQUFFLFNBQVMsRUFBRSxFQUFHLElBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFLLElBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxBQUFLLEdBQUUsSUFBSSxHQUFHLE9BQWQsRUFBbUIsRUFBRSxLQUFLLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBRSxJQUFHLEdBQUcsQ0FBQyxHQUFHLEFBQUksSUFBRyxJQUFQLEVBQVUsQ0FBQyxFQUFFLEVBQUcsT0FBTSxHQUFJLEdBQUcsSUFBRyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSw4QkFBOEIsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFHLElBQUcsS0FBTSxHQUFFLEdBQUksSUFBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFHLElBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsRUFBRSxJQUFLLElBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFFLElBQUksR0FBRSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQUFBSSxJQUFHLElBQVAsRUFBVSxDQUFDLEVBQUUsRUFBRyxPQUFNLEdBQUksR0FBRyxJQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxJQUFJLHdCQUF3QixFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFHLElBQUcsS0FBTSxJQUFHLEVBQUUsTUFBTSxFQUFHLElBQUcsR0FBRyxHQUFJLElBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUcsSUFBRyxFQUFHLElBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFHLEdBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUcsR0FBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUcsR0FBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUcsSUFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFHLElBQUcsSUFBSSxDQUFDLEdBQUksR0FBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUksR0FBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFJLElBQUksSUFBRyxHQUFHLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUcsR0FBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSyxHQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFPLEtBQUksR0FBRyxLQUFNLEtBQUksRUFBRSxPQUFTLFFBQU0sSUFBSSxHQUFLLE1BQUksSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssU0FBUyxHQUFHLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssUUFBUSxLQUFLLEtBQUssU0FBUyxLQUFLLEtBQUssUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFJLEdBQUUsTUFBTSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUksR0FBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLE9BQU8sS0FBSyxLQUFLLFFBQVEsS0FBSyxLQUFLLEtBQUssRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUksR0FBRSxNQUFPLElBQUcsRUFBRSxNQUFPLEdBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFPLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEdBQUksR0FBRSxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEdBQUksR0FBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTyxJQUFHLEVBQUUsTUFBUSxJQUFFLEVBQUUsT0FBTyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTyxHQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUcsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRyxJQUFHLEdBQUcsRUFBRSxJQUFLLElBQUcsS0FBSyxHQUFJLEdBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRyxDQUFPLEVBQUUsU0FBVCxNQUFpQixFQUFFLFFBQVEsR0FBSSxHQUFFLE9BQU8sTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxNQUFPLEdBQUcsR0FBRSxHQUFJLEdBQUcsR0FBRSxNQUFNLEdBQUcsT0FBTyxLQUFNLEdBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFJLEdBQUUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFJLEdBQUUsSUFBSSxFQUFFLEdBQUksR0FBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUksR0FBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTyxBQUFPLEdBQUUsU0FBVCxNQUFrQixHQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEdBQUksR0FBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxNQUFPLEdBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQVEsR0FBRyxHQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVMsR0FBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRyxJQUFHLEdBQUksR0FBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFRLEdBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQVEsR0FBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBUSxHQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLFlBQVksU0FBUyxFQUFFLENBQUMsTUFBTyxHQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFJLEdBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsT0FBTyxBQUFJLEVBQUUsV0FBTixFQUFlLE1BQU8sR0FBRSxBQUFNLEdBQUUsRUFBRSxPQUFPLE9BQWpCLElBQXdCLEdBQUUsS0FBSyxJQUFJLEdBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEdBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxPQUFPLEVBQUUsVUFBVyxHQUFFLEdBQUcsQUFBSSxFQUFFLE9BQU4sRUFBVyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxBQUFRLElBQVIsTUFBVSxDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU8sR0FBRSxLQUFLLEtBQUssSUFBSSxDQUFFLEdBQUUsRUFBRSxPQUFVLE9BQUksSUFBSSxHQUFJLElBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLHlCQUF5QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxBQUFJLElBQUcsSUFBUCxFQUFVLENBQUMsRUFBRSxJQUFJLDZCQUE2QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFHLElBQUksTUFBSyxJQUFJLEFBQUksRUFBRSxRQUFOLEVBQVksRUFBRSxNQUFNLFVBQVUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksc0JBQXNCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxVQUFXLEdBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQUFBSSxLQUFJLEVBQUUsUUFBVixFQUFpQixDQUFDLEVBQUUsSUFBSSw2QkFBNkIsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksMkJBQTJCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLE1BQU8sR0FBRSxLQUFLLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQVEsR0FBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLE1BQU8sR0FBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFPLEdBQUUsS0FBSyxLQUFLLEdBQUcsSUFBSSxFQUFFLE9BQVEsR0FBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssTUFBTyxHQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU8sR0FBRSxLQUFLLE9BQU8sSUFBSSxFQUFFLEVBQUUsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLEVBQUUsT0FBUSxHQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssTUFBTyxHQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFPLEdBQUUsS0FBSyxVQUFVLEdBQUcsSUFBSSxFQUFFLE9BQVEsR0FBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBTSxHQUFFLE1BQU8sR0FBRSxLQUFLLE1BQU0sTUFBTSxFQUFFLEtBQUssTUFBTyxHQUFFLEdBQUcsS0FBSyxFQUFFLE9BQVEsR0FBRyxHQUFFLEVBQUUsU0FBVSxHQUFFLEdBQUcsR0FBSSxHQUFFLE1BQU8sR0FBRSxFQUFFLEtBQUssVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLE9BQVEsR0FBRSxLQUFLLE1BQU0sR0FBSSxPQUFNLEVBQUUsS0FBSyxTQUFTLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsT0FBUSxHQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxHQUFHLEVBQUUsUUFBUSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxNQUFPLEdBQUUsR0FBRyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsT0FBTyxPQUFRLEdBQUUsS0FBSyxNQUFNLE9BQU8sYUFBYSxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxPQUFRLEdBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEtBQU0sR0FBRSxNQUFPLEdBQUUsS0FBSyxLQUFLLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLE1BQU8sR0FBRSxHQUFHLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxPQUFPLE9BQVEsR0FBRSxLQUFLLFNBQVMsT0FBTyxhQUFhLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLE9BQVEsR0FBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sS0FBTSxHQUFFLE1BQU8sR0FBRSxLQUFLLFFBQVEsTUFBTSxFQUFFLEtBQUssTUFBTyxHQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFLLE9BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLHNCQUFzQixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU8sR0FBRSxLQUFLLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssS0FBSyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssR0FBRyxVQUFXLElBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLE9BQVEsSUFBRyxHQUFHLEFBQUksRUFBRSxXQUFOLEVBQWUsTUFBTyxHQUFFLFNBQVMsR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssT0FBUSxJQUFHLEdBQUcsQUFBSSxJQUFKLEdBQU8sQUFBSSxJQUFKLEVBQU0sWUFBYSxJQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUcsTUFBSyxRQUFTLEdBQUUsRUFBRSxLQUFLLEdBQUcsVUFBVyxHQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsQUFBSSxJQUFKLEVBQU0sTUFBTSxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQWEsR0FBRSxFQUFFLEtBQUssR0FBRyxVQUFXLEdBQUUsRUFBRSxJQUFJLHFCQUFxQixFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVcsSUFBRyxJQUFJLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBSSxPQUFNLElBQUssS0FBSSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksK0JBQStCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUcsQUFBSSxJQUFKLEVBQU0sWUFBYSxJQUFHLEVBQUUsS0FBSyxPQUFRLElBQUcsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFJLEdBQUUsR0FBRyxHQUFFLEdBQUksR0FBRSxJQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBRyxFQUFFLElBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEdBQUcsVUFBVyxJQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFLLElBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFHLElBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFHLElBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLHNDQUFzQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLE9BQVEsSUFBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSwyQkFBMkIsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxPQUFRLElBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFFLEVBQUUsUUFBUSxFQUFHLElBQUcsRUFBRSxTQUFTLE1BQU0sR0FBRyxJQUFJLEdBQUUsTUFBTSxFQUFFLENBQUcsS0FBRSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFFLEdBQUcsS0FBSyxHQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUssRUFBRSxRQUFRLE9BQU0sQ0FBQyxHQUFHLEFBQUssS0FBTCxHQUFPLENBQUMsSUFBSSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFFLEdBQUcsR0FBRSxBQUFJLEVBQUUsT0FBTixFQUFXLENBQUMsRUFBRSxJQUFJLDRCQUE0QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFHLEdBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLFNBQVMsQUFBSyxLQUFMLEdBQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUcsR0FBRyxNQUFLLEtBQUksS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxHQUFJLEtBQUssTUFBSyxLQUFJLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksNEJBQTRCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEFBQUssRUFBRSxPQUFQLEdBQVksTUFBTSxHQUFHLEFBQUksRUFBRSxLQUFLLE9BQVgsRUFBZ0IsQ0FBQyxFQUFFLElBQUksdUNBQXVDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSw4QkFBOEIsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSx3QkFBd0IsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLEdBQUcsQUFBSSxJQUFKLEVBQU0sWUFBYSxJQUFHLEVBQUUsS0FBSyxPQUFRLElBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFFLENBQUMsRUFBRSxTQUFTLEdBQUUsRUFBRSxVQUFVLEdBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxHQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxBQUFLLEVBQUUsT0FBUCxJQUFjLEdBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRSxFQUFFLFFBQVEsRUFBRyxJQUFHLEVBQUUsU0FBUyxNQUFNLEdBQUcsSUFBSSxHQUFFLE1BQU0sRUFBRSxDQUFHLEtBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBRyxBQUFJLEtBQUksS0FBUixFQUFXLENBQUMsSUFBSSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFHLEdBQUUsRUFBRSxRQUFRLEdBQUksSUFBRyxJQUFHLEdBQUUsSUFBRyxJQUFJLFFBQU8sR0FBRyxJQUFJLEdBQUUsTUFBTSxFQUFFLENBQUUsSUFBRyxJQUFFLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBTSxFQUFDLENBQUMsR0FBRyxLQUFLLEdBQUUsR0FBRyxHQUFFLEVBQUUsTUFBTSxHQUFFLEVBQUUsT0FBTyxHQUFFLEFBQUksS0FBSixFQUFNLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFFLENBQUMsRUFBRSxJQUFJLDhCQUE4QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRSxFQUFFLEtBQUssT0FBUSxJQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFHLElBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLE9BQVEsSUFBRyxLQUFLLEdBQUcsR0FBRSxFQUFFLFNBQVMsRUFBRyxJQUFHLEVBQUUsVUFBVSxNQUFNLEdBQUcsSUFBSSxHQUFFLE1BQU0sRUFBRSxDQUFHLEtBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEFBQUksSUFBSixFQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQUFBSSxLQUFJLEtBQVIsRUFBVyxDQUFDLElBQUksR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRyxHQUFFLEVBQUUsU0FBUyxHQUFJLElBQUcsSUFBRyxHQUFFLElBQUcsSUFBSSxRQUFPLEdBQUcsSUFBSSxHQUFFLE1BQU0sRUFBRSxDQUFFLElBQUcsSUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQU0sRUFBQyxDQUFDLEdBQUcsS0FBSyxHQUFFLEdBQUcsR0FBRSxFQUFFLE1BQU0sR0FBRSxHQUFHLEdBQUUsQ0FBQyxFQUFFLElBQUksd0JBQXdCLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLE9BQU8sR0FBRSxFQUFFLE1BQU0sR0FBRyxHQUFFLEVBQUUsS0FBSyxPQUFRLElBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUcsSUFBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQVEsSUFBRyxHQUFHLEFBQUksS0FBSixFQUFNLFFBQVEsR0FBRyxFQUFFLEVBQUUsR0FBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRSxFQUFFLEVBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUyxHQUFFLEVBQUUsUUFBUSxHQUFFLEVBQUUsTUFBTSxLQUFNLElBQUUsRUFBRSxHQUFFLEdBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLElBQUksR0FBRSxHQUFJLEdBQUUsSUFBRyxJQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFLLEdBQUUsTUFBSyxFQUFFLEdBQUcsQ0FBQyxBQUFJLEVBQUUsU0FBTixHQUFlLEdBQUUsS0FBSyxJQUFJLFVBQVcsSUFBRyxHQUFHLEFBQUksS0FBSixFQUFNLFFBQVEsRUFBRSxNQUFLLEVBQUUsT0FBTyxLQUFJLEVBQUUsS0FBSyxHQUFHLFVBQVcsSUFBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxBQUFJLElBQUosRUFBTSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFJLEdBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSx1QkFBdUIsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQVEsSUFBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQUFBSSxJQUFKLEVBQU0sUUFBUSxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFLLFlBQVcsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLHlCQUF5QixFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBUSxJQUFHLEVBQUUsRUFBRSxZQUFhLElBQUcsRUFBRSxHQUFHLFlBQWEsSUFBRyxNQUFNLE9BQVEsWUFBVyxNQUFPLEdBQUUsTUFBTyxHQUFFLFNBQVMsR0FBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRyxHQUFFLE9BQU8sSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLElBQUssR0FBRSxLQUFLLElBQUksQUFBSSxJQUFKLEtBQVMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRyxHQUFFLEtBQUssR0FBRyxJQUFLLEtBQUcsRUFBRSxTQUFTLEdBQUcsRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxHQUFJLEdBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQU0sR0FBRSxLQUFLLEdBQUcsR0FBSSxDQUFLLEVBQUUsT0FBUCxHQUFZLElBQUksR0FBSSxDQUFLLEVBQUUsT0FBUCxJQUFhLEFBQUssRUFBRSxPQUFQLEdBQVksSUFBSSxHQUFJLENBQUcsSUFBSCxHQUFNLEFBQUksSUFBSixHQUFPLEFBQUksSUFBSixJQUFRLElBQUksR0FBSSxHQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxNQUFPLEdBQUUsR0FBSSxHQUFFLEVBQUUsTUFBTSxNQUFPLEdBQUUsUUFBUyxHQUFFLE9BQU8sTUFBTSxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsTUFBTyxJQUFHLEVBQUUsTUFBTSxBQUFJLEdBQUcsR0FBRSxFQUFFLE9BQU8sT0FBbEIsRUFBd0IsRUFBSSxJQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLE9BQU8sTUFBTyxJQUFHLEVBQUUsTUFBTSxBQUFLLEdBQUUsRUFBRSxPQUFPLE9BQWhCLEdBQXNCLEFBQUssRUFBRSxPQUFQLEdBQVksRUFBRSxBQUFLLEVBQUUsT0FBUCxJQUFhLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFHLEdBQUUsS0FBSyxHQUFHLElBQUssR0FBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxZQUFZLG9DQUFvQyxFQUFFLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxHQUFHLFVBQVUsR0FBRyxZQUFZLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBSSxHQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLE1BQU0sTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxRQUFRLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUUsRUFBRSxFQUFFLEdBQUksR0FBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUksR0FBRSxNQUFNLEVBQUUsRUFBRSxHQUFFLEtBQUssR0FBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxBQUFJLEVBQUUsS0FBTixFQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBSSxHQUFFLEdBQUcsQUFBSSxJQUFKLEVBQU0sTUFBTyxHQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxBQUFJLEVBQUUsS0FBTixFQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBSSxHQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUcsSUFBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUksQ0FBSSxJQUFKLEdBQU8sQUFBSSxJQUFKLEdBQU8sTUFBTSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQUFBSSxFQUFFLEVBQUUsS0FBUixHQUFhLEdBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBRSxBQUFJLElBQUosRUFBTyxHQUFFLEdBQUUsRUFBRSxJQUFJLEFBQUksSUFBSixFQUFPLEdBQUUsRUFBRSxJQUFHLElBQUksR0FBRSxFQUFFLElBQUcsSUFBSSxLQUFNLEdBQUUsRUFBRSxHQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUcsSUFBRSxHQUFJLEdBQUUsSUFBSSxFQUFFLEFBQUksSUFBSixHQUFPLElBQUksSUFBRyxBQUFJLElBQUosR0FBTyxJQUFJLEdBQUUsTUFBTyxHQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUcsR0FBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRyxHQUFFLEdBQUUsR0FBRSxFQUFFLElBQUksRUFBRSxHQUFFLEVBQUUsS0FBTSxHQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFHLElBQUcsSUFBSSxJQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsQUFBSSxJQUFKLEdBQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEFBQUksSUFBSixFQUFPLElBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxBQUFHLEVBQUUsRUFBRSxJQUFQLEVBQVUsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFJLEdBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxBQUFJLEtBQUosR0FBUSxJQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBSSxHQUFFLEVBQUUsSUFBRyxFQUFFLEdBQUUsR0FBRyxDQUFHLEtBQUcsRUFBRSxFQUFFLE1BQUssSUFBSSxJQUFJLElBQUksRUFBRSxHQUFHLElBQUcsR0FBRyxFQUFFLEFBQUksSUFBSixHQUFPLElBQUksSUFBRyxBQUFJLElBQUosR0FBTyxJQUFJLEdBQUUsTUFBTyxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTyxBQUFJLEtBQUosR0FBUSxHQUFFLEVBQUUsR0FBRyxFQUFFLElBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLGFBQWEsS0FBSyxlQUFlLEtBQUssYUFBYSxLQUFLLHNCQUFzQixLQUFLLGVBQWUsS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxHQUFJLEdBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLE9BQVEsR0FBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBSSxPQUFNLEVBQUcsR0FBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBSSxHQUFFLEdBQUksT0FBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsR0FBSSxPQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsR0FBSSxPQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsR0FBSSxPQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsRUFBRSxHQUFFLEVBQUUsR0FBSSxPQUFNLENBQUMsRUFBRSxZQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssVUFBVSxHQUFHLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsS0FBSyxTQUFTLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFPLEdBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFLLEtBQUksR0FBRyxDQUFDLFlBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsV0FBVyxJQUFJLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFHLEdBQUUsUUFBUSxHQUFHLEVBQUUsU0FBUyxNQUFNLEdBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFJLEdBQUUsUUFBUSxHQUFHLEVBQUUsU0FBUyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFXLEVBQUUsRUFBRSxDQUFDLE9BQVEsR0FBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFPLEtBQUksQ0FBQyxDQUFDLFlBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEdBQUksT0FBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQUFBSSxJQUFKLEdBQVEsR0FBRSxFQUFFLEdBQUcsR0FBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFXLEVBQUUsQ0FBQyxHQUFJLEdBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxZQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxHQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVcsR0FBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxZQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU8sR0FBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBUSxHQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFXLEdBQUUsRUFBRSxVQUFVLEdBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEFBQUksRUFBRSxXQUFOLEVBQWUsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sR0FBRyxJQUFJLEFBQUksSUFBSixFQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRyxHQUFFLEVBQUcsR0FBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxBQUFLLEdBQUUsRUFBRSxNQUFULEdBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFLLEdBQUUsRUFBRSxNQUFULEdBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVcsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxZQUFZLEVBQUUsRUFBRSxVQUFVLFVBQVUsRUFBRSxFQUFFLFVBQVUsTUFBTSxHQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQUFBSSxFQUFFLEVBQUUsS0FBUixFQUFZLEdBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxHQUFFLEVBQUUsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUcsR0FBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsR0FBRSxFQUFFLEVBQUUsR0FBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLFVBQVUsR0FBSSxHQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsU0FBUyxHQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBSSxHQUFFLE1BQU0sSUFBSSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxHQUFHLElBQUksR0FBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxHQUFHLFNBQVMsR0FBRSxHQUFFLENBQUMsR0FBSSxJQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsU0FBUyxHQUFFLEdBQUUsU0FBUyxHQUFFLEdBQUUsVUFBVSxZQUFZLEdBQUUsR0FBRSxVQUFVLFVBQVUsR0FBRSxHQUFFLFVBQVUsV0FBVyxHQUFFLEdBQUUsVUFBVSxXQUFXLEdBQUUsR0FBRSxVQUFVLFdBQVcsR0FBRSxFQUFFLElBQUksR0FBRSxFQUFFLElBQUcsRUFBRSxLQUFJLEdBQUUsU0FBUyxJQUFHLEVBQUUsSUFBSSxHQUFFLEVBQUUsR0FBRSxLQUFLLEdBQUUsVUFBVSxHQUFHLEVBQUUsR0FBRSxHQUFFLFNBQVMsRUFBRSxHQUFFLEVBQUUsS0FBSSxHQUFHLElBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRyxJQUFFLEdBQUUsS0FBSyxLQUFJLEdBQUcsR0FBRyxJQUFLLElBQUUsR0FBRSxNQUFLLEdBQUUsRUFBRSxHQUFFLEdBQUcsR0FBRSxHQUFFLElBQUksSUFBRSxTQUFTLE1BQUssR0FBRSxFQUFFLElBQUcsSUFBSSxJQUFFLEdBQUUsR0FBRSxLQUFJLEdBQUUsR0FBRSxFQUFFLElBQUcsR0FBRSxTQUFTLEdBQUcsSUFBRSxJQUFHLElBQUksSUFBRSxZQUFZLEdBQUcsSUFBRSxFQUFFLEdBQUUsR0FBRyxNQUFLLEdBQUcsQUFBSSxLQUFKLEVBQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFFLEdBQUUsRUFBRSxBQUFJLEdBQUUsU0FBUyxNQUFmLEdBQW1CLEtBQUksR0FBRSxTQUFTLE1BQUssR0FBRSxTQUFTLEdBQUUsSUFBSSxFQUFFLEdBQUUsU0FBUyxNQUFLLElBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBRyxJQUFJLEdBQUUsR0FBRSxBQUFJLEtBQUosRUFBTSxLQUFJLElBQUksR0FBRSxHQUFFLFNBQVMsSUFBRyxBQUFJLEtBQUosR0FBTyxHQUFHLElBQUUsR0FBRSxLQUFLLEVBQUUsTUFBTSxJQUFFLEVBQUUsR0FBRSxLQUFLLElBQUksSUFBRSxTQUFVLElBQUUsR0FBRSxFQUFFLEdBQUUsSUFBSSxHQUFFLEVBQUUsSUFBRyxHQUFFLEVBQUUsR0FBRSxHQUFHLElBQUcsS0FBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRSxFQUFFLEdBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLElBQUksQUFBSSxJQUFKLEdBQVEsR0FBRSxJQUFJLEdBQUUsR0FBRyxFQUFFLEVBQUcsR0FBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFHLEdBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBSSxHQUFFLEdBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEFBQUksSUFBSixFQUFPLEtBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFFLEtBQUssRUFBRyxHQUFFLElBQUksR0FBRyxJQUFJLEVBQUcsR0FBRSxFQUFFLEdBQUksR0FBRSxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBSSxHQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxFQUFFLElBQUksQUFBSSxJQUFKLEdBQVEsR0FBRSxJQUFJLEdBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUcsR0FBRSxHQUFHLEdBQUcsQ0FBRSxHQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEFBQUcsRUFBRSxHQUFMLEdBQVEsS0FBTSxBQUFJLEtBQUosRUFBTyxLQUFJLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRSxLQUFLLEVBQUcsR0FBRSxJQUFJLEdBQUcsSUFBSSxFQUFHLEdBQUUsRUFBRSxHQUFJLEdBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFJLEdBQUUsR0FBRyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUcsSUFBRyxHQUFJLEdBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFLENBQUMsRUFBRSxHQUFJLElBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxTQUFTLEVBQUUsQ0FBQyxHQUFJLFdBQVUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUksT0FBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssS0FBSyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEtBQUssR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxLQUFLLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxHQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFJLElBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUksSUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFFLEdBQUksSUFBRSxHQUFJLE9BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxHQUFJLEdBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sR0FBSSxHQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxRQUFRLEdBQUksR0FBRSxFQUFFLFFBQVEsRUFBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLGdCQUFnQixTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU8sQ0FBSSxFQUFFLEtBQUssWUFBWCxHQUF1QixHQUFFLEtBQUssVUFBVSxTQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsR0FBRSxXQUFXLElBQUksRUFBRSxFQUFFLEdBQUcsR0FBRyxJQUFJLE1BQUssRUFBRSxHQUFHLEVBQUUsSUFBRyxBQUFJLEVBQUUsVUFBVSxFQUFFLEtBQWxCLEVBQXFCLE1BQU8sR0FBRSxHQUFHLEFBQUksRUFBRSxVQUFVLE1BQWhCLEdBQXFCLEFBQUksRUFBRSxVQUFVLE1BQWhCLEdBQXFCLEFBQUksRUFBRSxVQUFVLE1BQWhCLEVBQW9CLE1BQU8sR0FBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFHLEFBQUksRUFBRSxVQUFVLEVBQUUsS0FBbEIsRUFBcUIsTUFBTyxHQUFFLE1BQU8sRUFBQyxFQUFFLENBQUMsR0FBRyxHQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBSSxHQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLFFBQVEsRUFBRSxHQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLEFBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLEtBQXJCLEVBQXdCLElBQUksQ0FBQyxNQUFPLEdBQUUsU0FBUyxFQUFHLEdBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFHLEdBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLEdBQUksR0FBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQUFBSyxJQUFMLEdBQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQUFBSSxFQUFFLFdBQU4sR0FBZ0IsSUFBSSxFQUFHLEdBQUUsRUFBRSxFQUFHLEdBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUcsR0FBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUUsR0FBRSxDQUFDLEdBQUksSUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxHQUFFLEdBQUUsS0FBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxHQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLFNBQVMsRUFBRSxFQUFFLE9BQU8sU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEdBQUcsR0FBRSxDQUFDLEVBQUUsR0FBRyxHQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTyxHQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsR0FBRyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsSUFBSSxFQUFFLEVBQUUsV0FBVyxBQUFJLElBQUosRUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFNLEdBQUUsVUFBVSxJQUFJLEVBQUUsVUFBVSxFQUFHLEdBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxVQUFVLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQUFBSyxFQUFFLFdBQVAsR0FBaUIsSUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBUyxHQUFHLEdBQUcsRUFBRSxVQUFXLEdBQUUsWUFBWSxFQUFFLFdBQVcsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsVUFBVSxDQUFDLEtBQUssTUFBTSxLQUFLLEtBQUssUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssSUFBSSxHQUFHLEtBQUssTUFBTSxLQUFLLEtBQUssVUFBVSxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEFBQUMsVUFBUyxFQUFFLENBQUMsQUFBQyxVQUFTLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLEdBQUksR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxnQkFBZ0IsT0FBTyxlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEFBQXFCLENBQUMsRUFBRSxTQUFTLEtBQUssRUFBRSxPQUFPLElBQS9DLG1CQUFpRCxTQUFTLEVBQUUsQ0FBQyxRQUFRLFNBQVMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEVBQUUsY0FBYyxDQUFDLEdBQUksR0FBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLE1BQU8sR0FBRSxVQUFVLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksR0FBRyxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRyxHQUFFLGdCQUFnQixLQUFLLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxlQUFpQixJQUFFLEdBQUksaUJBQWdCLE1BQU0sVUFBVSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQyxDQUFDLEdBQUcsR0FBRyxzQkFBdUIsR0FBRSxjQUFjLFFBQVEsRUFBRyxHQUFFLEVBQUUsZ0JBQWdCLFNBQVMsRUFBRSxDQUFDLEdBQUksR0FBRSxFQUFFLGNBQWMsUUFBUSxFQUFFLEVBQUUsbUJBQW1CLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLG1CQUFtQixLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxTQUFTLEVBQUUsQ0FBQyxBQUFZLE1BQU8sSUFBbkIsWUFBdUIsR0FBRSxHQUFJLFVBQVMsR0FBRyxDQUFDLEdBQUcsT0FBUSxHQUFFLEdBQUksT0FBTSxVQUFVLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxJQUFJLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxHQUFJLEdBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTyxHQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFPLEdBQUUsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFJLEdBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQUFBQyxVQUFTLEVBQUUsQ0FBQyxHQUFJLEdBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLE9BQU8sRUFBRSxZQUFhLEdBQUUsRUFBRSxFQUFFLFVBQVcsR0FBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVcsR0FBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxVQUFXLEdBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUUsQ0FBQyxDQUFDLFFBQUMsQ0FBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLFNBQVMsR0FBRyxBQUFVLE1BQU8sR0FBRSxNQUFuQixVQUF5QixBQUFJLEVBQUUsS0FBSyxRQUFRLENBQUMsSUFBcEIsR0FBdUIsRUFBRSxDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFFLEFBQWEsTUFBTyxNQUFwQixJQUF5QixBQUFTLElBQVQsT0FBVyxL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 diff --git a/.obsidian/plugins/obsidian-icon-shortcodes/manifest.json b/.obsidian/plugins/obsidian-icon-shortcodes/manifest.json index af42b152..a4e7bc56 100644 --- a/.obsidian/plugins/obsidian-icon-shortcodes/manifest.json +++ b/.obsidian/plugins/obsidian-icon-shortcodes/manifest.json @@ -1,8 +1,8 @@ { "id": "obsidian-icon-shortcodes", "name": "Icon Shortcodes", - "version": "0.9.5", - "minAppVersion": "0.13.27", + "version": "0.9.6", + "minAppVersion": "0.15.0", "description": "Insert emoji and custom icons with shortcodes", "author": "AidenLx", "authorUrl": "https://github.com/aidenlx", diff --git a/.obsidian/plugins/obsidian-icon-shortcodes/styles.css b/.obsidian/plugins/obsidian-icon-shortcodes/styles.css index 06753863..d04634d2 100644 --- a/.obsidian/plugins/obsidian-icon-shortcodes/styles.css +++ b/.obsidian/plugins/obsidian-icon-shortcodes/styles.css @@ -1 +1,2 @@ .isc-icon{vertical-align:middle}.isc-icon.isc-char-icon{vertical-align:baseline}.isc-icon>img,.isc-icon>svg{cursor:default!important;height:1em;width:1em}.view-content .mod-cm6 .cm-isc>.isc-icon>img,.view-content .mod-cm6 .cm-isc>.isc-icon>svg{cursor:pointer}.markdown-source-view .isc-icon>img,.markdown-source-view .isc-icon>svg,.markdown-preview-view .isc-icon>img,.markdown-preview-view .isc-icon>svg{height:var(--font-text-size, var(--editor-font-size, 1em));width:var(--font-text-size, var(--editor-font-size, 1em))}.markdown-source-view .HyperMD-header-1 .isc-icon>img,.markdown-source-view .HyperMD-header-1 .isc-icon>svg,.markdown-preview-view h1 .isc-icon>img,.markdown-preview-view h1 .isc-icon>svg{height:var(--h1);width:var(--h1)}.markdown-source-view .HyperMD-header-2 .isc-icon>img,.markdown-source-view .HyperMD-header-2 .isc-icon>svg,.markdown-preview-view h2 .isc-icon>img,.markdown-preview-view h2 .isc-icon>svg{height:var(--h2);width:var(--h2)}.markdown-source-view .HyperMD-header-3 .isc-icon>img,.markdown-source-view .HyperMD-header-3 .isc-icon>svg,.markdown-preview-view h3 .isc-icon>img,.markdown-preview-view h3 .isc-icon>svg{height:var(--h3);width:var(--h3)}.markdown-source-view .HyperMD-header-4 .isc-icon>img,.markdown-source-view .HyperMD-header-4 .isc-icon>svg,.markdown-preview-view h4 .isc-icon>img,.markdown-preview-view h4 .isc-icon>svg{height:var(--h4);width:var(--h4)}.markdown-source-view .HyperMD-header-5 .isc-icon>img,.markdown-source-view .HyperMD-header-5 .isc-icon>svg,.markdown-preview-view h5 .isc-icon>img,.markdown-preview-view h5 .isc-icon>svg{height:var(--h5);width:var(--h5)}.markdown-source-view .HyperMD-header-6 .isc-icon>img,.markdown-source-view .HyperMD-header-6 .isc-icon>svg,.markdown-preview-view h6 .isc-icon>img,.markdown-preview-view h6 .isc-icon>svg{height:var(--h6);width:var(--h6)}.callout .callout-icon.isc-icon>img,.callout .callout-icon.isc-icon>svg{height:16px;width:16px}.suggestion-container.isc .suggestion-flair{opacity:1}.suggestion-container.isc .suggestion-flair>.isc-icon{color:var(--text-normal)}.mod-settings .isc-add-pack-input{margin-right:5px}.mod-settings .isc-settings-custom-icon .dragover{position:relative;background-color:var(--shade-10);border-radius:5px}.mod-settings .isc-settings-custom-icon .dragover:before{content:"Drop SVG icon(s) here";font-size:16px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-normal)}.theme-dark .mod-settings .isc-settings-custom-icon .dragover{background-color:var(--shade-40)}.mod-settings .isc-settings-custom-icon .dragover>*{filter:blur(50px)}.mod-settings .isc-add-pack-input.invalid,.isc-icon-manager .icons .name textarea.invalid{color:var(--text-error);background:var(--background-primary-alt)}.modal.mod-browser-packs{width:80vw;max-width:80vw}.modal.mod-browser-packs .modal-content{justify-content:center}.modal.mod-browser-packs .modal-content .icon-text{margin-left:4px;position:relative;top:-1px}.modal.mod-browser-packs .modal-content>.loading{display:flex;flex:auto;flex-direction:row;align-items:center;justify-content:center}.modal.mod-browser-packs .modal-content>.loading>.loading-indicator+div{margin:0 20px;font-size:medium}.modal.mod-browser-packs .modal-content>.icon-pack-list{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest{display:flex;flex-direction:column;align-items:center;width:260px;padding:15px 10px;background:var(--background-secondary-alt);margin:15px 10px;border-radius:10px}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest .pack-manifest-title{text-align:center;font-weight:700}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest .pack-manifest-details{font-size:.9em;color:var(--text-muted);display:flex;text-align:center}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest .pack-manifest-details>:not(:last-child){margin-right:5px}.modal.mod-browser-packs .modal-content>.icon-pack-list .pack-manifest .pack-manifest-desc{max-width:200px;height:auto}.modal.mod-browser-packs .modal-content>.icon-pack-list .styles-list{border-radius:10px;padding:5px;background-color:var(--background-primary);display:flex;align-self:stretch;flex-direction:column;flex-wrap:nowrap;margin:10px 10px 0;text-align:center}.modal.mod-browser-packs .modal-content>.icon-pack-list .styles-list>:not(:last-child){margin-bottom:5px}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info{border-radius:10px;background-color:var(--background-primary-alt);font-size:small;display:flex;flex-direction:row;flex-wrap:nowrap}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info>*{display:flex;flex-wrap:wrap;align-content:center;justify-content:space-evenly}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-title{flex-grow:1;max-width:5em;line-height:1.2em;margin-left:10px;text-transform:capitalize}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-title .style-info-pack-id{text-transform:none}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-title .style-info-pack-id:before{content:"("}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-title .style-info-pack-id:after{content:")"}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-details{flex-grow:1}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-button-container{flex-shrink:0}.modal.mod-browser-packs .modal-content>.icon-pack-list .style-info .style-info-button-container button{padding:6px;margin:5px 5px 5px 0}.isc-icon-manager .icons{margin-top:10px;display:grid;grid-auto-rows:auto;grid-auto-columns:-webkit-max-content;grid-auto-columns:max-content;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));grid-column-gap:1rem;grid-row-gap:1rem;text-align:center}.isc-icon-manager .icons .item{outline:none}.isc-icon-manager .icons .item .icon{min-height:64px;display:flex;align-items:center;justify-content:center;background:white;border-radius:6px;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;border:2px solid transparent;font-size:1.6em}.isc-icon-manager .icons .item .icon>img{width:1em;height:1em}.isc-icon-manager .icons .item .name{height:49px;display:flex;justify-content:center;align-content:center;flex-direction:column}.isc-icon-manager .icons .item .name span{font-size:.7em;overflow:hidden;word-wrap:break-word}.isc-icon-manager .icons .item .name textarea{margin-top:5px;width:100%;padding:0 .5em;font-size:14px}.isc-icon-manager .icons .item .name textarea:disabled{padding:0;font-size:16px;border:hidden;text-align:center;background:transparent}.isc-icon-manager .icons .item .buttons button{padding:4px 6px;margin:0 1px} +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ljb24tcGFja3MvaWNvbi5sZXNzIiwgIi4uL3NyYy9zZXR0aW5ncy5sZXNzIiwgIi4uL3NyYy9pbnZhbGlkLmxlc3MiLCAiLi4vc3JjL2NvbXBvbmVudC9icm93c2VyLXBhY2tzLmxlc3MiLCAiLi4vc3JjL2NvbXBvbmVudC9pY29uLW1hbmFnZXIubGVzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLmlzYy1pY29uIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5pc2MtaWNvbi5pc2MtY2hhci1pY29uIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuLmlzYy1pY29uID4gaW1nLFxuLmlzYy1pY29uID4gc3ZnIHtcbiAgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMWVtO1xuICB3aWR0aDogMWVtO1xufVxuLnZpZXctY29udGVudCAubW9kLWNtNiAuY20taXNjID4gLmlzYy1pY29uID4gaW1nLFxuLnZpZXctY29udGVudCAubW9kLWNtNiAuY20taXNjID4gLmlzYy1pY29uID4gc3ZnIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1mb250LXRleHQtc2l6ZSwgdmFyKC0tZWRpdG9yLWZvbnQtc2l6ZSwgMWVtKSk7XG4gIHdpZHRoOiB2YXIoLS1mb250LXRleHQtc2l6ZSwgdmFyKC0tZWRpdG9yLWZvbnQtc2l6ZSwgMWVtKSk7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtaGVhZGVyLTEgLmlzYy1pY29uID4gaW1nLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci0xIC5pc2MtaWNvbiA+IHN2Zyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDEgLmlzYy1pY29uID4gaW1nLFxuLm1hcmtkb3duLXByZXZpZXctdmlldyBoMSAuaXNjLWljb24gPiBzdmcge1xuICBoZWlnaHQ6IHZhcigtLWgxKTtcbiAgd2lkdGg6IHZhcigtLWgxKTtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItMiAuaXNjLWljb24gPiBpbWcsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtaGVhZGVyLTIgLmlzYy1pY29uID4gc3ZnLFxuLm1hcmtkb3duLXByZXZpZXctdmlldyBoMiAuaXNjLWljb24gPiBpbWcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGgyIC5pc2MtaWNvbiA+IHN2ZyB7XG4gIGhlaWdodDogdmFyKC0taDIpO1xuICB3aWR0aDogdmFyKC0taDIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci0zIC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItMyAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGgzIC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDMgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1oMyk7XG4gIHdpZHRoOiB2YXIoLS1oMyk7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtaGVhZGVyLTQgLmlzYy1pY29uID4gaW1nLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci00IC5pc2MtaWNvbiA+IHN2Zyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDQgLmlzYy1pY29uID4gaW1nLFxuLm1hcmtkb3duLXByZXZpZXctdmlldyBoNCAuaXNjLWljb24gPiBzdmcge1xuICBoZWlnaHQ6IHZhcigtLWg0KTtcbiAgd2lkdGg6IHZhcigtLWg0KTtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItNSAuaXNjLWljb24gPiBpbWcsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtaGVhZGVyLTUgLmlzYy1pY29uID4gc3ZnLFxuLm1hcmtkb3duLXByZXZpZXctdmlldyBoNSAuaXNjLWljb24gPiBpbWcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGg1IC5pc2MtaWNvbiA+IHN2ZyB7XG4gIGhlaWdodDogdmFyKC0taDUpO1xuICB3aWR0aDogdmFyKC0taDUpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWhlYWRlci02IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1oZWFkZXItNiAuaXNjLWljb24gPiBzdmcsXG4ubWFya2Rvd24tcHJldmlldy12aWV3IGg2IC5pc2MtaWNvbiA+IGltZyxcbi5tYXJrZG93bi1wcmV2aWV3LXZpZXcgaDYgLmlzYy1pY29uID4gc3ZnIHtcbiAgaGVpZ2h0OiB2YXIoLS1oNik7XG4gIHdpZHRoOiB2YXIoLS1oNik7XG59XG4uY2FsbG91dCAuY2FsbG91dC1pY29uLmlzYy1pY29uID4gaW1nLFxuLmNhbGxvdXQgLmNhbGxvdXQtaWNvbi5pc2MtaWNvbiA+IHN2ZyB7XG4gIGhlaWdodDogMTZweDtcbiAgd2lkdGg6IDE2cHg7XG59XG4uc3VnZ2VzdGlvbi1jb250YWluZXIuaXNjIC5zdWdnZXN0aW9uLWZsYWlyIHtcbiAgb3BhY2l0eTogMTtcbn1cbi5zdWdnZXN0aW9uLWNvbnRhaW5lci5pc2MgLnN1Z2dlc3Rpb24tZmxhaXIgPiAuaXNjLWljb24ge1xuICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xufVxuIiwgIi5tb2Qtc2V0dGluZ3MgLmlzYy1hZGQtcGFjay1pbnB1dCB7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuLm1vZC1zZXR0aW5ncyAuaXNjLXNldHRpbmdzLWN1c3RvbS1pY29uIC5kcmFnb3ZlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2hhZGUtMTApO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG4ubW9kLXNldHRpbmdzIC5pc2Mtc2V0dGluZ3MtY3VzdG9tLWljb24gLmRyYWdvdmVyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiRHJvcCBTVkcgaWNvbihzKSBoZXJlXCI7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgY29sb3I6IHZhcigtLXRleHQtbm9ybWFsKTtcbn1cbi50aGVtZS1kYXJrIC5tb2Qtc2V0dGluZ3MgLmlzYy1zZXR0aW5ncy1jdXN0b20taWNvbiAuZHJhZ292ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zaGFkZS00MCk7XG59XG4ubW9kLXNldHRpbmdzIC5pc2Mtc2V0dGluZ3MtY3VzdG9tLWljb24gLmRyYWdvdmVyID4gKiB7XG4gIGZpbHRlcjogYmx1cig1MHB4KTtcbn1cbiIsICIubW9kLXNldHRpbmdzIC5pc2MtYWRkLXBhY2staW5wdXQuaW52YWxpZCxcbi5pc2MtaWNvbi1tYW5hZ2VyIC5pY29ucyAubmFtZSB0ZXh0YXJlYS5pbnZhbGlkIHtcbiAgY29sb3I6IHZhcigtLXRleHQtZXJyb3IpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLXByaW1hcnktYWx0KTtcbn1cbiIsICIubW9kYWwubW9kLWJyb3dzZXItcGFja3Mge1xuICB3aWR0aDogODB2dztcbiAgbWF4LXdpZHRoOiA4MHZ3O1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50IHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgLmljb24tdGV4dCB7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMXB4O1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmxvYWRpbmcge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiBhdXRvO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5sb2FkaW5nID4gLmxvYWRpbmctaW5kaWNhdG9yICsgZGl2IHtcbiAgbWFyZ2luOiAwIDIwcHg7XG4gIGZvbnQtc2l6ZTogbWVkaXVtO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAucGFjay1tYW5pZmVzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAyNjBweDtcbiAgcGFkZGluZzogMTVweCAxMHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLXNlY29uZGFyeS1hbHQpO1xuICBtYXJnaW46IDE1cHggMTBweDtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAucGFjay1tYW5pZmVzdCAucGFjay1tYW5pZmVzdC10aXRsZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAuaWNvbi1wYWNrLWxpc3QgLnBhY2stbWFuaWZlc3QgLnBhY2stbWFuaWZlc3QtZGV0YWlscyB7XG4gIGZvbnQtc2l6ZTogMC45ZW07XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgZGlzcGxheTogZmxleDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5wYWNrLW1hbmlmZXN0IC5wYWNrLW1hbmlmZXN0LWRldGFpbHMgPiA6bm90KDpsYXN0LWNoaWxkKSB7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5wYWNrLW1hbmlmZXN0IC5wYWNrLW1hbmlmZXN0LWRlc2Mge1xuICBtYXgtd2lkdGg6IDIwMHB4O1xuICBoZWlnaHQ6IGF1dG87XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAuaWNvbi1wYWNrLWxpc3QgLnN0eWxlcy1saXN0IHtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgcGFkZGluZzogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLXByaW1hcnkpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgbWFyZ2luOiAxMHB4IDEwcHggMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5zdHlsZXMtbGlzdCA+IDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5zdHlsZS1pbmZvIHtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1wcmltYXJ5LWFsdCk7XG4gIGZvbnQtc2l6ZTogc21hbGw7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5zdHlsZS1pbmZvID4gKiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGUtaW5mbyAuc3R5bGUtaW5mby10aXRsZSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWF4LXdpZHRoOiA1ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5zdHlsZS1pbmZvIC5zdHlsZS1pbmZvLXRpdGxlIC5zdHlsZS1pbmZvLXBhY2staWQge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGUtaW5mbyAuc3R5bGUtaW5mby10aXRsZSAuc3R5bGUtaW5mby1wYWNrLWlkOjpiZWZvcmUge1xuICBjb250ZW50OiBcIihcIjtcbn1cbi5tb2RhbC5tb2QtYnJvd3Nlci1wYWNrcyAubW9kYWwtY29udGVudCA+IC5pY29uLXBhY2stbGlzdCAuc3R5bGUtaW5mbyAuc3R5bGUtaW5mby10aXRsZSAuc3R5bGUtaW5mby1wYWNrLWlkOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiKVwiO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5zdHlsZS1pbmZvIC5zdHlsZS1pbmZvLWRldGFpbHMge1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubW9kYWwubW9kLWJyb3dzZXItcGFja3MgLm1vZGFsLWNvbnRlbnQgPiAuaWNvbi1wYWNrLWxpc3QgLnN0eWxlLWluZm8gLnN0eWxlLWluZm8tYnV0dG9uLWNvbnRhaW5lciB7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLm1vZGFsLm1vZC1icm93c2VyLXBhY2tzIC5tb2RhbC1jb250ZW50ID4gLmljb24tcGFjay1saXN0IC5zdHlsZS1pbmZvIC5zdHlsZS1pbmZvLWJ1dHRvbi1jb250YWluZXIgYnV0dG9uIHtcbiAgcGFkZGluZzogNnB4O1xuICBtYXJnaW46IDVweCA1cHggNXB4IDA7XG59XG4iLCAiLmlzYy1pY29uLW1hbmFnZXIgLmljb25zIHtcbiAgbWFyZ2luLXRvcDogMTBweDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1hdXRvLXJvd3M6IGF1dG87XG4gIGdyaWQtYXV0by1jb2x1bW5zOiAtd2Via2l0LW1heC1jb250ZW50O1xuICBncmlkLWF1dG8tY29sdW1uczogbWF4LWNvbnRlbnQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDkwcHgsIDFmcikpO1xuICBncmlkLWNvbHVtbi1nYXA6IDFyZW07XG4gIGdyaWQtcm93LWdhcDogMXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmlzYy1pY29uLW1hbmFnZXIgLmljb25zIC5pdGVtIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbi5pc2MtaWNvbi1tYW5hZ2VyIC5pY29ucyAuaXRlbSAuaWNvbiB7XG4gIG1pbi1oZWlnaHQ6IDY0cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBmb250LXNpemU6IDEuNmVtO1xufVxuLmlzYy1pY29uLW1hbmFnZXIgLmljb25zIC5pdGVtIC5pY29uID4gaW1nIHtcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG59XG4uaXNjLWljb24tbWFuYWdlciAuaWNvbnMgLml0ZW0gLm5hbWUge1xuICBoZWlnaHQ6IDQ5cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4uaXNjLWljb24tbWFuYWdlciAuaWNvbnMgLml0ZW0gLm5hbWUgc3BhbiB7XG4gIGZvbnQtc2l6ZTogMC43ZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbn1cbi5pc2MtaWNvbi1tYW5hZ2VyIC5pY29ucyAuaXRlbSAubmFtZSB0ZXh0YXJlYSB7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAgMC41ZW07XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cbi5pc2MtaWNvbi1tYW5hZ2VyIC5pY29ucyAuaXRlbSAubmFtZSB0ZXh0YXJlYTpkaXNhYmxlZCB7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgYm9yZGVyOiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG4uaXNjLWljb24tbWFuYWdlciAuaWNvbnMgLml0ZW0gLmJ1dHRvbnMgYnV0dG9uIHtcbiAgcGFkZGluZzogNHB4IDZweDtcbiAgbWFyZ2luOiAwcHggMXB4O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsVUFDRSxzQkFFRix3QkFDRSx3QkFFRiw0QkFFRSx5QkFDQSxXQUNBLFVBRUYsMEZBRUUsZUFFRixrSkFJRSwyREFDQSwwREFFRiw0TEFJRSxpQkFDQSxnQkFFRiw0TEFJRSxpQkFDQSxnQkFFRiw0TEFJRSxpQkFDQSxnQkFFRiw0TEFJRSxpQkFDQSxnQkFFRiw0TEFJRSxpQkFDQSxnQkFFRiw0TEFJRSxpQkFDQSxnQkFFRix3RUFFRSxZQUNBLFdBRUYsNENBQ0UsVUFFRixzREFDRSx5QkMxRUYsa0NBQ0UsaUJBRUYsa0RBQ0Usa0JBQ0EsaUNBTEYsa0JBUUEseURBQ0UsZ0NBQ0EsZUFDQSxrQkFDQSxRQUNBLFNBQ0EsK0JBQ0EseUJBRUYsOERBQ0UsaUNBRUYsb0RBQ0Usa0JDckJGLDBGQUVFLHdCQUNBLHlDQ0hGLHlCQUNFLFdBQ0EsZUFFRix3Q0FDRSx1QkFFRixtREFDRSxnQkFDQSxrQkFDQSxTQUVGLGlEQUNFLGFBQ0EsVUFDQSxtQkFDQSxtQkFDQSx1QkFFRix3RUFuQkEsY0FxQkUsaUJBRUYsd0RBQ0UsYUFDQSxtQkFDQSxlQUNBLHVCQUVGLHVFQUNFLGFBQ0Esc0JBQ0EsbUJBQ0EsWUFqQ0Ysa0JBbUNFLDJDQW5DRixvQ0F1Q0EsNEZBQ0Usa0JBQ0EsZ0JBRUYsOEZBQ0UsZUFDQSx3QkFDQSxhQUNBLGtCQUVGLGdIQUNFLGlCQUVGLDJGQUNFLGdCQUNBLFlBRUYscUVBeERBLCtCQTJERSwyQ0FDQSxhQUNBLG1CQUNBLHNCQUNBLGlCQS9ERixtQkFpRUUsa0JBRUYsdUZBQ0Usa0JBRUYsb0VBdEVBLG1CQXdFRSwrQ0FDQSxnQkFDQSxhQUNBLG1CQUNBLGlCQUVGLHNFQUNFLGFBQ0EsZUFDQSxxQkFDQSw2QkFFRixzRkFDRSxZQUNBLGNBQ0Esa0JBQ0EsaUJBQ0EsMEJBRUYsMEdBQ0Usb0JBRUYsaUhBQ0UsWUFFRixnSEFDRSxZQUVGLHdGQUNFLFlBRUYsaUdBQ0UsY0FFRix3R0ExR0EsaUNDQUEseUJBQ0UsZ0JBQ0EsYUFDQSxvQkFDQSxzQ0FDQSw4QkFDQSx5REFDQSxxQkFDQSxrQkFDQSxrQkFFRiwrQkFDRSxhQUVGLHFDQUNFLGdCQUNBLGFBQ0EsbUJBQ0EsdUJBQ0EsaUJBbkJGLGtCQXFCRSxtREFDQSw2QkFDQSxnQkFFRix5Q0FDRSxVQUNBLFdBRUYscUNBQ0UsWUFDQSxhQUNBLHVCQUNBLHFCQUNBLHNCQUVGLDBDQUNFLGVBQ0EsZ0JBQ0EscUJBRUYsOENBQ0UsZUFDQSxXQTNDRixlQTZDRSxlQUVGLHVEQS9DQSxVQWlERSxlQUNBLGNBQ0Esa0JBQ0EsdUJBRUYsK0NBdERBIiwKICAibmFtZXMiOiBbXQp9Cg== */ diff --git a/.obsidian/plugins/obsidian-reminder-plugin/data.json b/.obsidian/plugins/obsidian-reminder-plugin/data.json index 59486ba6..a817f3c5 100644 --- a/.obsidian/plugins/obsidian-reminder-plugin/data.json +++ b/.obsidian/plugins/obsidian-reminder-plugin/data.json @@ -2,20 +2,15 @@ "scanned": true, "reminders": { "05.01 Computer setup/Storage and Syncing.md": [ - { - "title": ":iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]]", - "time": "2022-07-12", - "rowNumber": 188 - }, { "title": ":camera: [[Storage and Syncing|Storage & Sync]]: Transfer pictures to ED", "time": "2022-07-14", - "rowNumber": 207 + "rowNumber": 208 }, { "title": ":cloud: [[Storage and Syncing|Storage & Sync]]: Backup Volumes to [[Sync|Sync.com]]", "time": "2022-09-12", - "rowNumber": 200 + "rowNumber": 201 }, { "title": "Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]]", @@ -30,7 +25,12 @@ { "title": ":floppy_disk: Backup [[Storage and Syncing#Instructions for FV|Folder Vault]]", "time": "2022-10-07", - "rowNumber": 193 + "rowNumber": 194 + }, + { + "title": ":iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]]", + "time": "2022-10-11", + "rowNumber": 188 } ], "06.01 Finances/hLedger.md": [ @@ -100,19 +100,19 @@ ], "04.01 lebv.org/Hosting Tasks.md": [ { - "title": "[[Hosting Tasks|Hosting]]: Explore the possibility of webhosting through [[Hosting Tasks#Decentralised hosting|decentralised services]] (Blockchain)", - "time": "2023-12-31", - "rowNumber": 73 + "title": ":fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files", + "time": "2022-10-05", + "rowNumber": 74 }, { - "title": "[[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files", - "time": "2022-07-14", - "rowNumber": 74 + "title": ":fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|check the PHP version]] server-side", + "time": "2022-10-05", + "rowNumber": 76 }, { - "title": "[[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|check the PHP version]] server-side", - "time": "2022-07-14", - "rowNumber": 75 + "title": "[[Hosting Tasks|Hosting]]: Explore the possibility of webhosting through [[Hosting Tasks#Decentralised hosting|decentralised services]] (Blockchain)", + "time": "2023-12-31", + "rowNumber": 73 } ], "04.01 lebv.org/WebPublishing Tasks.md": [ @@ -189,7 +189,7 @@ "01.03 Family/Opportune de Villeneuve.md": [ { "title": ":birthday: **[[Opportune de Villeneuve|Opportune]]**", - "time": "2022-07-14", + "time": "2023-07-14", "rowNumber": 100 } ], @@ -245,7 +245,7 @@ "01.03 Family/Jacqueline Bédier.md": [ { "title": ":birthday: **[[Jacqueline Bédier|Bonne Maman]]**", - "time": "2022-07-13", + "time": "2023-07-13", "rowNumber": 100 } ], @@ -341,30 +341,30 @@ } ], "01.02 Home/Household.md": [ - { - "title": "🛎 🧻 REMINDER [[Household]]: check need for toilet paper", - "time": "2022-07-11", - "rowNumber": 106 - }, - { - "title": "♻ [[Household]]: *Cardboard* recycling collection", - "time": "2022-07-12", - "rowNumber": 86 - }, { "title": ":bed: [[Household]] Change bedsheets", "time": "2022-07-16", - "rowNumber": 113 + "rowNumber": 116 }, { "title": "♻ [[Household]]: *Paper* recycling collection", "time": "2022-07-19", "rowNumber": 72 }, + { + "title": "🛎 🧻 REMINDER [[Household]]: check need for toilet paper", + "time": "2022-07-25", + "rowNumber": 107 + }, + { + "title": "♻ [[Household]]: *Cardboard* recycling collection", + "time": "2022-07-26", + "rowNumber": 86 + }, { "title": "🛎 🛍 REMINDER [[Household]]: Monthly shop in France", "time": "2022-07-30", - "rowNumber": 104 + "rowNumber": 105 } ], "01.03 Family/Pia Bousquié.md": [ @@ -401,7 +401,7 @@ "01.01 Life Orga/@Finances.md": [ { "title": ":heavy_dollar_sign: [[@Finances]]: update crypto prices within Obsidian 🔼", - "time": "2022-07-12", + "time": "2022-08-09", "rowNumber": 118 }, { @@ -473,34 +473,34 @@ "06.02 Investments/VC Tasks.md": [ { "title": "💰[[VC Tasks#internet alerts|monitor VC news and publications]]", - "time": "2022-07-15", + "time": "2022-07-22", "rowNumber": 74 } ], "06.02 Investments/Crypto Tasks.md": [ { "title": "💰[[Crypto Tasks#internet alerts|monitor Crypto news and publications]]", - "time": "2022-07-15", + "time": "2022-07-22", "rowNumber": 74 } ], "06.02 Investments/Equity Tasks.md": [ { "title": "💰[[Equity Tasks#internet alerts|monitor Equity news and publications]]", - "time": "2022-07-15", + "time": "2022-07-22", "rowNumber": 74 } ], "05.02 Networks/Configuring UFW.md": [ { "title": "🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix", - "time": "2022-07-16", + "time": "2022-07-23", "rowNumber": 239 }, { "title": "🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list", - "time": "2022-07-16", - "rowNumber": 257 + "time": "2022-07-23", + "rowNumber": 258 } ], "00.01 Admin/Calendars/2022-03-18.md": [ @@ -565,6 +565,20 @@ "time": "2023-06-27", "rowNumber": 100 } + ], + "00.01 Admin/Calendars/2022-07-10.md": [ + { + "title": "18:14 :envelope: [[@Lifestyle]], [[2022-07-10|Memo]]: order address- printed bristols", + "time": "2022-07-31", + "rowNumber": 91 + } + ], + "00.01 Admin/Calendars/2022-07-15.md": [ + { + "title": "16:15 :iphone: [[@Computer Set Up]], [[2022-07-15|Memo]]: find a new media player", + "time": "2022-07-31", + "rowNumber": 91 + } ] }, "debug": false, diff --git a/.obsidian/workspace b/.obsidian/workspace index f5075e97..fd58f6c7 100644 --- a/.obsidian/workspace +++ b/.obsidian/workspace @@ -4,12 +4,12 @@ "type": "split", "children": [ { - "id": "57e1b038b02f445d", + "id": "230c4d79bedace9e", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "01.02 Home/@Main Dashboard.md", + "file": "02.03 Zürich/@Restaurants Zürich.md", "mode": "preview", "source": false } @@ -77,7 +77,7 @@ "state": { "type": "backlink", "state": { - "file": "01.02 Home/@Main Dashboard.md", + "file": "02.03 Zürich/@Restaurants Zürich.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -94,7 +94,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "01.02 Home/@Main Dashboard.md", + "file": "02.03 Zürich/@Restaurants Zürich.md", "linksCollapsed": false, "unlinkedCollapsed": false } @@ -151,17 +151,17 @@ ], "currentTab": 2 }, - "active": "57e1b038b02f445d", + "active": "230c4d79bedace9e", "lastOpenFiles": [ + "02.03 Zürich/Modo.md", + "02.03 Zürich/No Idea.md", + "00.01 Admin/Calendars/2022-07-16.md", "01.02 Home/@Main Dashboard.md", - "00.01 Admin/Calendars/2022-07-10.md", - "00.01 Admin/Obsidian plugins.md", - "00.01 Admin/Calendars/2022-07-09.md", - "00.01 Admin/Calendars/2022-07-08.md", - "05.01 Computer setup/Storage and Syncing.md", "02.03 Zürich/@Restaurants Zürich.md", - "02.03 Zürich/Ginger.md", - "02.01 London/Le Bar des Prés.md", - "00.01 Admin/Calendars/2022-07-07.md" + "02.03 Zürich/Daizy.md", + "03.03 Food & Wine/Udon in Buttery Tomato n Soy broth.md", + "03.03 Food & Wine/@Main dishes.md", + "03.03 Food & Wine/@@Recipes.md", + "03.03 Food & Wine/@Side dishes.md" ] } \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-07-10.md b/00.01 Admin/Calendars/2022-07-10.md index b44c74bf..82638979 100644 --- a/00.01 Admin/Calendars/2022-07-10.md +++ b/00.01 Admin/Calendars/2022-07-10.md @@ -13,9 +13,9 @@ Stress: 30 FrontHeadBar: 5 EarHeadBar: 35 BackHeadBar: 20 -Water: -Coffee: 2 -Steps: +Water: 3.3 +Coffee: 3 +Steps: 10585 Ski: Riding: Racket: @@ -89,6 +89,8 @@ This section does serve for quick memos. %% ### %%   +- [ ] 18:14 :envelope: [[@Lifestyle]], [[2022-07-10|Memo]]: order address- printed bristols 📆2022-07-31 +- [x] 19:35 :racing_car: [[@Lifestyle]], [[2022-07-10|Memo]]: check with AXA if [[MRCK|Megan Rose]] is covered under the current insurance 📅 2022-07-15 ✅ 2022-07-12 --- diff --git a/00.01 Admin/Calendars/2022-07-11.md b/00.01 Admin/Calendars/2022-07-11.md new file mode 100644 index 00000000..7385c657 --- /dev/null +++ b/00.01 Admin/Calendars/2022-07-11.md @@ -0,0 +1,104 @@ +--- + +Date: 2022-07-11 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: Yes +Sleep: 7 +Happiness: 95 +Gratefulness: 95 +Stress: 30 +FrontHeadBar: 5 +EarHeadBar: 35 +BackHeadBar: 20 +Water: 2 +Coffee: 3 +Steps: 10331 +Ski: +Riding: +Racket: +Football: +title: "Daily Note" +allDay: true +date: 2022-07-11 + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2022-07-10|<< 🗓 Previous ]]       [[@Main Dashboard|Back]]       [[2022-07-12|🗓 Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2022-07-11Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2022-07-11NSave + +  + +# 2022-07-11 + +  + +```ad-abstract +title: Summary +collapse: open +Note Description +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Memos + +  + +#### Memos + +This section does serve for quick memos. + +  + + +%% ### %% +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-07-12.md b/00.01 Admin/Calendars/2022-07-12.md new file mode 100644 index 00000000..1c252c35 --- /dev/null +++ b/00.01 Admin/Calendars/2022-07-12.md @@ -0,0 +1,104 @@ +--- + +Date: 2022-07-12 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: Yes +Sleep: 8 +Happiness: 95 +Gratefulness: 95 +Stress: 30 +FrontHeadBar: 5 +EarHeadBar: 35 +BackHeadBar: 20 +Water: 2.9 +Coffee: 4 +Steps: 5002 +Ski: +Riding: +Racket: +Football: +title: "Daily Note" +allDay: true +date: 2022-07-12 + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2022-07-11|<< 🗓 Previous ]]       [[@Main Dashboard|Back]]       [[2022-07-13|🗓 Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2022-07-12Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2022-07-12NSave + +  + +# 2022-07-12 + +  + +```ad-abstract +title: Summary +collapse: open +Note Description +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Memos + +  + +#### Memos + +This section does serve for quick memos. + +  + + +%% ### %% +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-07-13.md b/00.01 Admin/Calendars/2022-07-13.md new file mode 100644 index 00000000..58ea69bf --- /dev/null +++ b/00.01 Admin/Calendars/2022-07-13.md @@ -0,0 +1,105 @@ +--- + +Date: 2022-07-13 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: Yes +Sleep: 8 +Happiness: 95 +Gratefulness: 95 +Stress: 30 +FrontHeadBar: 5 +EarHeadBar: 35 +BackHeadBar: 20 +Water: 2.85 +Coffee: 4 +Steps: 4934 +Ski: +Riding: +Racket: +Football: +title: "Daily Note" +allDay: true +date: 2022-07-13 + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2022-07-12|<< 🗓 Previous ]]       [[@Main Dashboard|Back]]       [[2022-07-14|🗓 Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2022-07-13Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2022-07-13NSave + +  + +# 2022-07-13 + +  + +```ad-abstract +title: Summary +collapse: open +Note Description +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Memos + +  + +#### Memos + +This section does serve for quick memos. + +  + + +%% ### %% +  +- [x] 12:04 :desktop_computer: [[Selfhosting]], [[2022-07-13|Memo]]: changer le port SSH 📅 2022-07-16 ✅ 2022-07-14 + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-07-14.md b/00.01 Admin/Calendars/2022-07-14.md new file mode 100644 index 00000000..011e4aec --- /dev/null +++ b/00.01 Admin/Calendars/2022-07-14.md @@ -0,0 +1,104 @@ +--- + +Date: 2022-07-14 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: Yes +Sleep: 7.5 +Happiness: 95 +Gratefulness: 95 +Stress: 30 +FrontHeadBar: 5 +EarHeadBar: 35 +BackHeadBar: 20 +Water: 4 +Coffee: 3 +Steps: 5961 +Ski: +Riding: +Racket: +Football: +title: "Daily Note" +allDay: true +date: 2022-07-14 + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2022-07-13|<< 🗓 Previous ]]       [[@Main Dashboard|Back]]       [[2022-07-15|🗓 Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2022-07-14Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2022-07-14NSave + +  + +# 2022-07-14 + +  + +```ad-abstract +title: Summary +collapse: open +Note Description +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Memos + +  + +#### Memos + +This section does serve for quick memos. + +  + + +%% ### %% +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-07-15.md b/00.01 Admin/Calendars/2022-07-15.md new file mode 100644 index 00000000..9ff38471 --- /dev/null +++ b/00.01 Admin/Calendars/2022-07-15.md @@ -0,0 +1,105 @@ +--- + +Date: 2022-07-15 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: Yes +Sleep: 7.5 +Happiness: 60 +Gratefulness: 60 +Stress: 30 +FrontHeadBar: 5 +EarHeadBar: 35 +BackHeadBar: 20 +Water: 3.83 +Coffee: 3 +Steps: 8425 +Ski: +Riding: +Racket: +Football: +title: "Daily Note" +allDay: true +date: 2022-07-15 + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2022-07-14|<< 🗓 Previous ]]       [[@Main Dashboard|Back]]       [[2022-07-16|🗓 Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2022-07-15Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2022-07-15NSave + +  + +# 2022-07-15 + +  + +```ad-abstract +title: Summary +collapse: open +Note Description +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Memos + +  + +#### Memos + +This section does serve for quick memos. + +  + + +%% ### %% +  +- [ ] 16:15 :iphone: [[@Computer Set Up]], [[2022-07-15|Memo]]: find a new media player 📆2022-07-31 + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-07-16.md b/00.01 Admin/Calendars/2022-07-16.md new file mode 100644 index 00000000..dacd0b56 --- /dev/null +++ b/00.01 Admin/Calendars/2022-07-16.md @@ -0,0 +1,104 @@ +--- + +Date: 2022-07-16 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: Yes +Sleep: 7 +Happiness: 90 +Gratefulness: 90 +Stress: 30 +FrontHeadBar: 5 +EarHeadBar: 35 +BackHeadBar: 20 +Water: 3.25 +Coffee: 3 +Steps: +Ski: +Riding: +Racket: +Football: +title: "Daily Note" +allDay: true +date: 2022-07-16 + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2022-07-15|<< 🗓 Previous ]]       [[@Main Dashboard|Back]]       [[2022-07-17|🗓 Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2022-07-16Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2022-07-16NSave + +  + +# 2022-07-16 + +  + +```ad-abstract +title: Summary +collapse: open +Note Description +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Memos + +  + +#### Memos + +This section does serve for quick memos. + +  + + +%% ### %% +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/00.03 News/American Graffiti New Beverly Cinema.md b/00.03 News/American Graffiti New Beverly Cinema.md new file mode 100644 index 00000000..cd8f4e30 --- /dev/null +++ b/00.03 News/American Graffiti New Beverly Cinema.md @@ -0,0 +1,151 @@ +--- + +Alias: [""] +Tag: ["Art", "Cinema", "Classic"] +Date: 2022-07-10 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-07-10 +Link: https://thenewbev.com/tarantinos-reviews/american-graffiti/ +location: +CollapseMetaTable: Yes + +--- + +Parent:: [[@News|News]] +Read:: No + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-AmericanGraffitiNSave + +  + +# American Graffiti | New Beverly Cinema + +##### American Graffiti \- (1973) + +Just as the decade of the seventies was getting underway, still trying to shake off the yoke of the late sixties, two nostalgia-oriented memory pieces were released in 1971 that proved tremendously popular with movie-going audiences. Peter Bogdanovich’s *The Last Picture Show,* based on the novel by *Hud* writer Larry McMurtry, who based the novel on his youth growing up in the small Texas town of Anarene during the fifties. And Robert Mulligan’s *Summer of ‘42,* written as a screenplay by Herman Raucher and based on his own youth growing up in the forties. + +The story of *The Last Picture Show* takes place in 1951 in the postage-stamp-size town of Anarene, Texas, and it follows a few of its citizens. *Sam the Lion* (Ben Johnson), the town patriarch. +*Lois Farrow* (Ellen Burstyn), the trophy wife of the local oil baron. +*Ruth Popper* (Cloris Leachman), the lonely wife of the local football coach. +*Genevieve* (Eileen Brennan), the waitress of the town’s favorite diner. +But both the book and the film focus on two football-playing high school seniors, *Sonny Crawford* (Timothy Bottoms) and *Duane Jackson* (Jeff Bridges) as they chase, court, and fight over *Jacy Farrow* (Cybill Shepherd), the prettiest girl in Anarene and daughter of the richest man in the county (Burstyn’s Lois is her mother). + +A description of the plot wouldn’t amount to much more than a *TV Guide* synopsis of an episode of *Peyton Place.* + +*Duane and Jacy go on a double date with Sonny and Charlene Duggs (*Sharon Taggart). + +*Sonny starts an affair with the football coach’s wife, Ruth Popper* (Cloris Leachman). + +*Duane takes Jacy to Wichita Falls for their ‘big date’.* + +*Sonny and Duane spend their night together before Duane ships off to Korea. They see ‘The Last Picture Show’.* + +In fact, *Peyton Place* was a jumping-off point for novelist Larry McMurtry to write the book in the first place. Except instead of the ivy-covered walls, manicured green lawns, and huge oak trees of *Peyton Place,* you have the dusty, windy, practically deserted Texas town of Anarene, with its limited people living their limited lives. McMurtry writes the book from a more anthropological perspective than most *how I grew up to write the book-*books. Especially a Texas anthropological perspective. As opposed to Bogdanovich’s film, McMurtry’s novel has a decided lack of compassion when it comes to the citizens of Anarene. It’s almost as if McMurtry is saying, *I grew up with these people, I know them, and I know they’re idiots.* + +When Peter’s film was first released it was greeted as an instant classic. Not the least because it *looked* like a classic. A problem with shooting period movies in color is the motion pictures’ most vivid visual component could turn out to be the ugly colors of the costumes. A problem Bogdonovich avoided by shooting the film in widescreen black and white (it’s actually closer to black and grey). +Peter’s picture was the first studio film in years to be shot in black and white, not for financial reasons, but artistic ones. +While after Bogdanovich, a few other filmmakers shot feature-films in black and white, but with a few exceptions, Bob Fosse’s *Lenny* and Joan Micklin Silver’s *Hester Street,* it was almost always done to better approximate the genre the film took place in. Mel Brooks shoots *Young Frankenstein* in black and white to invoke the Universal monster movies of the thirties. His buddy Carl Reiner shoots *Dead Men Don’t Wear Plaid* in black and white to match up with the forties film noir clips they use. Even Martin Scorsese’s *Raging Bull* uses its black and white photography to invoke New York street classics of the thirties, forties, and fifties, as well as classic boxing pictures like *Body and Soul, The Champ,* and *The Set-Up* (*and* to make it look different from *Rocky*). +Bogdanovich shoots black and white on *The Last Picture Show* to invoke the period, realism, and loneliness of the story. But on the other hand, it’s shimmery monochromatic grey on black photography and classic George Stevens-like framing suggests, like Mel Brooks and Carl Reiner’s films do, the trappings of a film genre of another time. +But in this case, it’s not an obvious genre like horror films or private detective movies. +The look of *The Last Picture Show* suggests a prestige Hollywood picture of the fifties (*From Here to Eternity, A Place in the Sun, Home from the Hills*). The exact kind of film you can imagine *Sonny & Duane* watching at the town’s lone movie theatre. And due to both Bogdanovich and McMurtry’s old soul quality, the movie actually *feels* like a fifties film. +Yet the material, while never being explicit, deals with its subject of sexual repression and sexual exploration in an upfront straightforward manner that would have been impossible for a Hollywood movie in the fifties (not a Bergman Swedish film, or an Italian Fellini film, but a Hollywood movie? No fucking way). So while *The Last Picture Show* looked like a classic fifties Hollywood film, it didn’t sound like one. When the characters talk about sex it’s not camouflaged in euphemisms. In an Otto Preminger film of the fifties, when Jeff Bridges takes Cybill Shepherd to a motel in Wichita Falls to have sex for the first time, they wouldn’t have announced what they’re going to do (much to Otto’s chagrin). But while the characters wouldn’t just come out and state that they’re going to fuck, Preminger would imply it, and the adults in the audience would know (he hoped) what Preminger intended without it having to be spelled out. + +In the fifties, almost everything involving Cybill Shepherd’s character Jacy would have had to be camouflaged. +But that was Hollywood filmmaking in the fifties. +All the best sellers and the big theatrical dramas of the day got the sex drained out of them when they inevitably received their big Hollywood screen adaptation (*From Here to Eternity*). +So, in its own way, *The Last Picture Show* demonstrated both the freedom of *New Hollywood,* but also the promise of what post-war Hollywood *could* have been all along if only Hollywood hadn’t decided to be so stubbornly immature. + +*The Last Picture Show* was the critical smash of the year (even more than the eventual Academy Award winner for best picture that year, *The French Connection*) and it did surprisingly well at the box office. While a lot of films in the seventies drew raves from New York and Los Angeles film critics, when they played outside of big cities, they tended to die in the lone small-town movie theatres that Bogdanovich’s film is named after. But *The Last Picture Show* had a rural appeal that *Mean Streets* didn’t. Garnering eight Academy Award nominations and two wins (Ben Johnson and Cloris Leachman for best-supporting actor and actress). + +Nevertheless, it wasn’t as popular as the other nostalgia-based remembrance of things past, Robert Mulligan’s *Summer of ‘42. +**Summer of ‘42* floored seventies audiences in a way the more austere *The Last Picture Show* could never hope to duplicate. The film tells the story of screenwriter Herman Raucher’s summer vacation on Nantucket Island in 1942, just as World War Two was heating up for American soldiers. But the young boys vacationing on the Island *Hermie* (Gary Grimes), *Oscy* (Jerry Houser, one of the most beloved characters of early seventies cinema), and *Benjie* (Oliver Conant) have only one thing on their minds, and it isn’t the war. The boys, whose age is never clarified, look to be 15 or 16. And at least Oscy and Hermie are bound and determined to leave their virginity behind by summer’s end. +No Hollywood film up to that time had ever dealt so frankly with the efforts of trying to get laid. Soon that would become the basic plot of every youth comedy to come out for the next two decades. But in 1971 audiences weren’t used to teenagers talking so realistically about sex. And the comedy exploits of the kids fumbling attempts to lose their virginity brought the house down in cinemas all over America. Audiences laughed uproariously at the naughty goings-on on-screen. At nine (when I saw the film) I was only able to decipher so much of Oscy’s *trim-hunt,* but the huge laughter from all the adults surrounding me clued me into the naughty-by-nature hijinxs (later when I found my stepfather’s stash of filthy porno magazines, and told him about it, he mentioned that was like the scene in *Summer of ‘42* when Hermie, Oscy, and Benjie made the same find). +For the first three acts, Mulligan’s film is hysterical (then and now). In fact it’s so damn funny, little did audiences suspect the gut-punch waiting for them in the films powerful fourth act. +While on the island, Hermie becomes infatuated with the young bride of a soldier who has gone off to war named *Dorothy* (radiant Jennifer O’Neill). Dorothy lives in the house she rented with her husband before he shipped out. Like the boys, we never learn exactly what Dorothy’s age is (I’d estimate somewhere between 24-26). But one of the reasons we never learn her age, is because in real life Raucher never learned Dorothy’s real age, later stating she could have even been as young as twenty. Hermie introduces himself to the young (older) woman and a pleasant friendship develops between them. As he makes himself available to lug groceries from the local grocer to her house. And even stops by to assist her in chores that need doing. All the while harboring a fantasy that it will be Dorothy, not the other appropriate aged island pinheads, that will be his first sexual experience. +This far-fetched fantasy comes to pass, but in a far different context than the boy could have ever imagined. I‘m being cryptic because I want you to see the movie if you haven’t already. The slow dance that Hermie and Dorothy share at the climax of the film is quite simply one of the most devastating sequences I’ve ever witnessed (apparently Kubrick felt the same). In 1971, while the comedy connected with me, the tragedy flew right over my head. I didn’t understand why grown-ups around me were crying. I saw *Summer of ‘42* twice at the theatres when it came out (and later I saw the sequel *Class of ‘44* when it was released). But it wouldn’t be until thirty-five years later, when I screened a 35mm film print I bought, that I would understand the meaning of the films ending. I cry easily in movies. But rarely have I wept like I wept while Hermie and Dorothy slow danced to Michel Legrand’s incredibly beautiful theme music. +*Summer of ‘42* is quite simply one of the most powerful film experiences I’ve ever witnessed. And that’s with full acknowledgment that Gary Grimes as our young lead is really only *okay* in the role (he’s a far stronger a presence in the sequel *Class of ‘44).* Jennifer O’Neill was so luminous in her role as Hermie’s object of affection, that she parlayed her success in that film to a leading lady career in Hollywood movies that would last till the end of the decade. +And Jerry Houser’s Oscy *should* have made him – if not a movie star – then at least a popular comedic character actor for the next twenty years. The thing that stands out about Raucher’s screenplay is how achingly truthful it is. You can believe – more or less – that events played themselves out just the way Raucher claimed they did. He didn’t even change the names, Hermie is Herman, Oscy is his best friend Oscar. He kept so much of the story the way it happened, that thirty years later when the film came out and was a hit, the real-life Dorothy saw the film and recognized Raucher’s remembrance. Hermie never saw Dorothy again after she left Nantucket Island. But in 1971 he received a letter from her. In a 2002 interview he said; “*I recognized her handwriting. But we’re talking about 1971, which was almost 30 years after the incident, and I get this letter, and the postmark was Canton, Ohio, and she had remarried. And, interestingly enough, she was worried about what she had done to me and my psyche. And her last sentence was: ‘The ghosts of that night 30 years ago are better left undisturbed.’ She didn’t want to tell me who she was. (But) she was a grandmother. She had remarried. I hope she’s still out there. I’ve never heard from her again.”* + +Raucher’s screenplay, *initially,* wasn’t meant to focus so much on the story of Dorothy and Hermie, but instead be a tribute to his best friend Oscy Seltzer – who was killed in action in North Korea in 1952. But the writer in Raucher realized the incident with Dorothy was the real ending of his movie. Because the film was a hit, Raucher was able to write a sequel, *Class of ‘44,* that sees the two young men enter college, and eventually sends Oscy in uniform off to his doom overseas. *Class of ‘44* is pretty terrific, even though it can’t really compete with the first movie’s devastating climax, or its initial sexual humor. In fact, the weirdest thing about the sequel is it doesn’t really end, it just suddenly *stops. +*But where the film scores is in the more mature rendering of Hermie and Oscy (Benjie’s disposed of almost immediately). Grimes’ performance in the first film may have been standard-issue, but between *Summer of ‘42* and *Class of ‘44,* Grimes had starred in a few movies, including a very good seventies western *The Culpepper Cattle Co.,* and even in movies alongside John Wayne and Lee Marvin*.* So by the time Grimes encores his signature role, it’s a much more mature and confident actor at the helm. And as good as Houser was in the first film, he’s even better in the second one. Herman Raucher’s desire to honor his childhood best friend is beautifully realized in the film’s dramatic climax. Which just consists of Oscy in uniform, ready to ship out overseas in the morning. And the two buddies spend one last night together getting drunk. The devotion that Raucher feels for his long lost friend (Oscy died a hero) makes this sequence one of cinema’s greatest statements on male love. When a drunken Oscy falls out of the passenger seat of a parked car, crumpled on the asphalt, laughing at himself, you realize that this is probably Raucher’s last vivid memory of his old chum. + +Heartbreaking. + +God knows how many movies have been made that followed the template of boys in various eras trying to get laid. And almost all of them followed the Hermie (the sensitive boy) and Oscy (the more raunchy sexually wised one) dynamic. Even when Garry Marshall’s TV series *Happy Days* first came on the air (before Fonzie took over), it copied the *Summer of ‘42* dynamic, with Ron Howard’s Richie filling the Hermie role, and Anson Williams’ Potsie channeling Oscy (I’m sure Williams was cast due to his slight resemblance to Houser). One of the most successful Israeli movies ever made was Boaz Davidson’s *Lemon Popsicle.* Which basically told the same story of the three boys (the exact same types as *Summer of ‘42*) trying to get laid, only the Israeli film took place in the early sixties, and it didn’t have a Dorothy character. But the film was so successful that there really isn’t any Israeli that hasn’t seen it. So I’m showing my Israeli fiancée my groovy 35mm print of *Summer of ‘42.* And about halfway through I remember the similarities between *Lemon Popsicle* and *Summer of ‘42. +*So I bring it up to her as she’s watching. And my fiancée (now my wife) said; “*Really? You know, I was just thinking, this is sorta like Lemon Popsicle if Lemon Popsicle was a real movie.”* + +But it was three years later when George Lucas would make the nostalgia piece that was to define the seventies, *American Graffiti.* The film deals with a group of teenagers on the last night of summer in 1962. Even though it was the sleeper success of *American Graffiti* that kicked off the whole wave of fifties nostalgia that threatened to overwhelm the entire decade, Lucas’ film was set in ‘62. Even though on the outside the early sixties just looked like *The Fifties Part 2,* underneath changes were brewing. The big cities had all moved on. But small towns, like the one in *American Graffiti,* we’re able to exist in a bubble – at least until Kennedy was assassinated. +While the movie has a great cast of girls, director Lucas makes it abundantly clear, when it comes to narrative, he’s only following the boys (Richard Dreyfuss, Ron Howard, Charles Martin Smith, and Paul Le Mat). Best buddies *Curt* (Dreyfuss) and *Steve* (Howard) are leaving their small hometown of Modesto California in the morning to fly to college back east. So the college that Curt and Steve are supposed to fly off to represents more than just a normal rite of passage for the two young men. The college represents the growing consciousness of the sixties that exists beyond the Brigadoon-ish town they’re escaping. +But Curt (who is Lucas’ stand-in, he wants to be a writer, and when he grows up he will write *American Graffiti*) is ambivalent about getting on the plane in the morning. +He’s starting to think he might not go. +Of all the characters Curt is clearly the most intellectual, so then why is he hesitating going off to college? Usually the budding writer in these types of stories can’t leave their hometown fast enough. But Curt’s ambivalence suggests he’s a deeper sort than just a cocksure kid full of piss and gage who can’t wait to jump ship on his old hometown. Curt’s not really questioning going to college. He’s questioning the idea of leaving all the people he’s ever known. But even more than the humans he leaves behind, Curt’s questioning leaving the rituals of community that the young people of Modesto partake in. +Hanging out at Mel’s – the curb service diner that is the starting point of every youth in town’s weekend night. Mel’s where the burgers are juicy, the shakes are thick, the neon is pink and green, the music is rock and roll, and the fancy faced waitresses in colorful uniforms wiz back and forth on roller skates, balancing trays of burgers, fries, and milkshakes.  Hanging out at high school dances, that even though he’s graduated, he could probably get away with for another year without looking creepy. + +What sets Dreyfuss’ Curt apart from his peers and the rest of the cast, is he’s the only one who realizes how temporary these rituals are. Curt knows if he gets on that airplane tomorrow morning – everything that the film so nostalgically celebrates – he can kiss all that goodbye. The town and the life he leaves, won’t be the town and the life he returns to. *If* he even does return, which in all likelihood, he won’t. Curt seems to *know* once he leaves he’s not coming back. Curt knows the boy who exists today will no longer exist even two years from now. That’s why he’s contemplating staying too long at the party. But Lucas balances Curt’s resistance with the cautionary example of *Big John Milner* (Paul Le Mat). Milner *is* the guy who stayed too long at the sock hop. Milner acts and lives as if it’s 1958. He’s a few years older than the other boys. Big John chooses to hang out with kids who were probably freshmen in high school when he was the big shot senior, instead of contemporaries from his old class. He continues to cruise the boulevard on cruise night and try and pick up high school girls. He continues to live off the reputation he created for himself in high school (the fastest drag racer in town). And Lucas gives him a dandy of a dilemma. A new guy in town, Harrison Ford’s *Bob Falfa,* who’s gunning to dethrone the king and take away the only thing Big John has left…his reputation. +This is a neat twist on the high school football star who always planned on going pro but didn’t have the talent to go all the way, and lives in the glow of former gridiron glory. + +In the sequel, *More American Graffiti,* we learn Big John Milner does move on to be a professional drag racer. His storyline in the sequel follows his attempt to secure sponsorship for his racing team and his attempt to romance a beautiful Norwegian girl who speaks practically no English, who he just met. The romance is light, yet meaningful since we in the audience know that Milner will die later that day. Maybe Big John will never experience life, but at least he can experience love. + +As Bob Dylan sang, *‘The Times are a Changing’,* but in the first movie Milner rejects even the small changes that have occurred in Modesto so far. When Mackenzie Phillips’ *Carol* asks him; “*Don’t you think The Beach Boys are boss?” +*Big John proclaims; *“I hate all that surfin’ shit. Rock and roll ain’t been worth a shit since Buddy Holly died.”* + +*American Graffiti* made George Lucas a directorial superstar and for good reason. Like a lot of great nostalgia pieces (*Meet Me in St. Louis, Summer of ‘42, Cooley High, New York New York, Dazed and Confused)* it seems to get better the further it gets from its original release date. With *The Last Picture Show* Bogdanovich and *Ben Hur* cinematographer Robert Surtees’ (father of *‘King of Darkness’* Bruce Surtees) silky black and white photography had the effect of draining every modern aspect out of the movie. And in *Summer of ‘42,* the cinematographer *(again, Robert Surtees, in the same fucking year!)* doesn’t just do a great approximation of fifties Technicolor (like Gordon Willis will later do in *September 30, 1955*), he *actually* shoots it in Technicolor (if you haven’t seen *Summer of ‘42* projected in an *I.B. Technicolor 35mm film print,* you haven’t seen *Summer of ‘42*). +But George Lucas goes the other way when it comes to capturing his memories on film. Lucas invokes the candy-colored pop ephemera of the fifties in *his* visual scheme. The green hues of the fluorescent bulbs that light the liquor stores, hamburger stands, and pinball arcades that the characters loiter around. The bright colors of the jukeboxes, diner neon signs, and the candy apple red and canary yellow of the hot rods that cruise up and down the main drag. Lucas poignantly parades all this in front of us with the added knowledge that all this glorious chrome and paint and pomade is about to go out of style and be replaced by space-age sixties chic. + +George fills *Graffiti* with one clever stroke after another. One of the strokes that helped make the movie tremendously popular was the wall-to-wall fifties rock and roll soundtrack that can be heard in the film from beginning to end. Usually emanating from various car radios. Including – in this radio soundscape – the voice of all-night dis- jockey Wolfman Jack, who acts as the film’s de facto narrator. Lucas didn’t invent the radio soundscape. Bogdanovich used it and used it vividly in his first two movies (*Targets* and *The Last Picture Show*), as well as in his new picture that year of ‘73, *Paper Moon. +*Writer/director Floyd Mutrux would also make the radio soundscape his own in all of his pictures (*Dusty and Sweets McGee, Aloha Bobby and Rose, American Hot Wax,* and *The Hollywood Knights*). And also the same year as *American Graffiti,* Martin Scorsese will create a jukebox soundscape emanating from the Little Italy cocktail lounges and pool halls in *Mean Streets.* But the reason every new movie featuring young people from 1974 to the present features a wall-to-wall soundtrack of pop tunes (not to mention a soundtrack album collection of hits) is due to the influence of *American Graffiti. +*But even more important to the success of the movie than all that boss radio was the fact that the whole movie takes place during the course of one night. And the film concludes when the sun comes up, Milner races Falfa, Curt finally talks to the blonde in the white T-Bird (Suzanne Somers), and then finally, boards the airplane (minus Ron Howard’s Steve) that will whisk him away from Modesto forever. +Personally, I think Curt always knew he was going to get on that airplane. He just wanted it to be *his* idea and not some pre-ordained destiny. His wandering around all over town all night was just Curt’s way of saying goodbye. + +Many other films would come along that tried to duplicate *American Graffiti’s* one-night structure, telling a story with a gang of characters, and then cross-cutting back and forth between them all picture long. But in other films, the different pockets of characters were usually given proper storylines. But the different vignettes of the shenanigans the *Graffiti* gang gets into never really rises to the level of *story.* It just poses different questions to the audience about what will or will not happen to the different characters as the night progresses. + +Who’s the girl in the white T-Bird? + +Will Curt finally meet her? + +Will Curt leave in the morning? + +Will Steve and Laurie (Cindy Williams, who may give the strongest characterization in the whole film) break up? + +Will Big John beat Bob Falfa? + +Will The Toad get lucky? + +At the end of the night, what will Candy Clark’s Debbie do? (Debbie really deserved a closing crawl wrap-up, but the sequel *More American Graffiti* provided Debbie with a ‘67 Haight-Ashbury future). +All these vignettes play great, and the film seamlessly cross-cuts between all of them. However, the one that’s the least convincing is Curt’s encounter with the street gang The Pharaohs*. +*It’s the only part of the movie where you feel that the screenplay is going out of its way to create hijinxs for the character. Even the comic vignette of The Toad trying to buy alcohol outside a liquor store seems organic to both the movie and Toad’s rite of passage. +But the whole gag where the cop car loses its wheels, today, seems contrived (it doesn’t help that a dozen other movies have copied it verbatim). Now if George Lucas is reading this, I’m sure his response would be; “*Sorry, Quentin, if you didn’t care for that gag, but more than any other thing you’ve mentioned, that gag was the reason we were ultimately able to sell the movie and was an audience highlight.”* + +Fair enough. + +In 1973 the audience needed *that* big laugh at *that* moment in the picture. And the TV spot that sold the picture to audiences *really* needed it. That gag isn’t my problem with The Pharaohs section. My problem is the outrageous miscasting of Bo Hopkins as Pharaohs gang leader *Joe. +*No don’t get me wrong, I’m a huge Bo Hopkins fan. And I don’t just mean in Peckinpah films. I love him in *White Lightning* (for my money the best country-fried co-star Burt Reynolds ever had), *The Nickel Ride, Posse, A Small Town in Texas,* and *Tentacles.* And during a brief moment in the seventies, when it looked as if Hopkins might pull off a transition from interesting young character actor to interesting young leading man (it was mentioned by some he possessed ‘*a McQueen quality’)*, I was rooting for him and was disappointed when he drifted back into supporting character roles once again (In one of his arcane pop culture references, Dennis Miller once referred to him as, ‘*The Poor man’s Jerry Reed!”).* But in *American Graffiti* the entertaining performer is the one blatantly false note in the picture. The reason Hopkins seems so out of place (aside from the fact he looks like he’s thirty-five) is it’s pretty fucking obvious Joe was written to be Latino. The rest of the gang are Latino (or look Latino at least). What’s cool about The Pharaohs sub-plot, is after watching all these Northern California white boys drive up and down the street in cars their parents (probably) helped them buy, The Pharaohs represent (in what I think is a Hollywood studio movie first) Low Ryder culture. +The film’s whole cast spends most of their time cruising in cars. And it’s almost cute how squeaky clean they are (their form of juvenile delinquency involves water balloons and cans of shaving cream). +But as soon as we get in the car with The Pharaohs, out comes the reefer and the forties of malt liquor, and they start riffing and talking shit like it’s *Boulevard Nights. +*But what the fuck is thirty-five-year-old, blonde hillbilly Bo Hopkins doing in that car? +Jesus Christ, he looks more out of place than Richard Dreyfuss does. +I suspect George Lucas was persuaded to make the leader of the gang white so as not to have the only featured minority in the cast be a hood. But the scene when Dreyfuss’ Curt is in the back seat of The Pharaohs car has a definite racial element to it. It’s not just that The Pharaohs are from the wrong side of the tracks (the town seems too small to have different tracks or two competing High Schools). When Curt is trapped in the backseat of their car it’s obvious he doesn’t belong there. And not just because he’s not a street gang type or a tough guy, it’s because he’s white. What saves the scene is Dreyfuss’ bemused reaction to being kidnapped. + +     *Well, if nobody is telling me that I’m being kidnapped, I don’t really know for sure if I am being kidnapped.* +     *Well…rather than know for sure, let’s just pretend I’m hanging out with these guys because I want to.* + +However just because I think Bo Hopkins doesn’t work in *American Graffiti,* I don’t really blame him, it’s Lucas and casting director Fred Roos’ fault for making such a disastrous casting decision (I’d love to know who the second or third choice was? Sylvester Stallone? Henry Winkler? How about Pepe Serna? Or Rudy Ramos? No, hilllbilly Bo Hopkins was absolutely the perfect choice). But I’m happy to report – as a lifelong Bo Hopkins fan – that Hopkins’ character shows up in the sequel during The Toad’s Vietnam sequence. And in *that* setting, Hopkins redeems the miscasting of the first film.      + +#### Trailer + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md b/00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md new file mode 100644 index 00000000..ba6329ab --- /dev/null +++ b/00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md @@ -0,0 +1,337 @@ +--- + +Tag: ["Crime", "Society", "US"] +Date: 2022-07-10 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-07-10 +Link: https://www.washingtonpost.com/dc-md-va/interactive/2022/gay-dc-cop-parson-teen-florida-arrest/ +location: +CollapseMetaTable: Yes + +--- + +Parent:: [[@News|News]] +Read:: [[2022-07-11]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-BrettParsongaycoparrestedinFloridaNSave + +  + +# Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community + +He had cinched cuffs around hundreds of wrists as a D.C. police officer, but now Brett Parson’s own hands were being placed behind his back. + +“So I’ll let you know guys, right now, that until I talk to an attorney, I won’t talk to anybody,” Parson said. + +The police in Boca Raton, Fla., guided him toward their cruiser as their body cameras recorded the encounter. + +“I think I know exactly what it’s about. It’s a brand-new warrant, right?” Parson guessed. “Brand-new? Issued probably this morning?” + +“Yep,” answered one officer. They were outside the condo where Parson’s parents lived. He’d been staying with them to help his father recover from a surgery. + +On this February morning, he’d taken the trash out, not knowing detectives were waiting for him outside. They asked for the keys to his father’s red convertible. They asked him to turn over his phone. + +Parson, 53, instructed them not to search anything without a warrant. + +“I know what it is you’re looking for,” he said. + +Around 12:30 a.m. the night before, Parson had been pulled over by officers from Coconut Creek, who’d seen him driving the red convertible near a quiet office park 20 minutes away. Police reported they watched as the convertible followed a gray sedan into a parking lot. Both cars made a U-turn and returned to the road. The gray sedan then pulled into a fenced-off area with an empty field and a Comcast tower. The gate, which should have been locked, was open. What were these drivers doing there in the middle of the night? The officers stopped both cars. + +Parson told them they were mistaken. He wasn’t following the gray sedan. He was just lost and looking for Interstate 95. + +“I’m a cop from D.C.,” he said. In reality, he had been retired and only a reserve officer for two years. + +LEFT: D.C. Police Lt. Brett Parson speaks during a meeting of D.C.'s Hate Bias Task Force in 2019. (Michael E. Miller/TWP) RIGHT: Parson, shown here in 2005, was known nationally and internationally as a pioneer of gay rights in policing. (Carol Guzy/The Washington Post) + +They let him drive away. Then they went to talk to the driver of the gray sedan. + +The window rolled down to reveal a thin White boy. He said he had pulled over to text a friend. The officer told the boy he didn’t believe him. In his report, he described what the teenager — who turned out to be 16 – did next. + +“He dropped his head, took a deep breath, and stated he met the guy who was following behind him online and they were meeting to ‘hook up.’ ” + +The teenager began to tell the officers the story he would repeat at least three times that night, including at the sexual assault treatment center where he was taken after his parents were called. + +He’d met Parson on Growlr, a dating app for gay men that requires users to be 18. He’d lied about his birthday to use the app, claiming he was 18. He said he and Parson exchanged oral sex in the parking lot of a day care. + +He said he knew Parson used to be a police officer. + +What he didn’t know was that Parson was not just any police officer. The man who had just driven away was known nationally and internationally as a pioneer of gay rights in policing. + +In the nation’s capital, [Parson built an award-winning liaison unit](https://www.washingtonpost.com/archive/politics/2005/03/28/the-stewards-of-gay-washington/c8cfcce2-1376-46c6-aa62-b563d134c50b/?itid=lk_inline_enhanced-template) that investigated hate crimes, befriended advocates and marched in Pride parades, slowly revolutionizing the relationship between the police and the city’s LGBTQ community. People saw him everywhere: dance clubs and book clubs, hospital bedsides and funeral homes, early-morning court hearings and late-night domestic disputes. + +The city’s [2019 guide to Pride](https://issuu.com/capitalpride/docs/guide_final_2019?itid=lk_inline_enhanced-template) called Parson a “living legend.” The Department of Justice, the State Department, Amnesty International, the Southern Poverty Law Center and other police departments relied on his expertise. + +Now, he was going to jail. The warrant for [his arrest](https://www.washingtonpost.com/dc-md-va/2022/02/16/parson-charged-dc-police/?itid=lk_inline_enhanced-template) listed two counts of unlawful sexual activity. If convicted, he could face a prison sentence and a lifetime as a registered sex offender. Under Florida law, claiming to be misled about the age of a victim [cannot](http://www.leg.state.fl.us/statutes/index.cfm?App_mode=Display_Statute&Search_String=&URL=0700-0799%2F0794%2FSections%2F0794.021.html&itid=lk_inline_enhanced-template) be used as a legal defense. + +Parson’s arrest stunned the legions of people who admired him, leaving them with questions about what exactly happened in Florida and whether it represented some sort of mistake or a serious betrayal. + +Months later, they are still without answers. The case, which depends largely on the involvement of a 16-year-old identified only by his initials, is moving slowly. It will be months, and possibly years, before a judge or jury determines Parson’s fate. + +While the former lieutenant waits for his future to be decided, those who put their trust in him for so long are revisiting his past. This story is based on public records and interviews with more than three dozen people whose lives and work Parson influenced during his 26-year career. They are grappling with the person they thought they knew — and the power he wielded for so long. + +Parson, who has pleaded not guilty to the charges, did not respond to repeated interview requests. + +On the morning of his Feb. 12 arrest, Parson frequently reminded the officers taking him into custody that he, too, was a cop. He commented on their equipment, mentioned he was scheduled to teach at the FBI National Academy, mused about what his approach to this kind of warrant would be and joked about his own history of stuffing large men into cramped back seats. + +“With all due — we know who you are, sir,” an officer informed him. “Your credentials don’t matter. … It’s nothing to do with how this is being handled.” + +“I understand,” Parson said. He thanked them for being caring. + +They confiscated his loaded Glock 26, explained to his parents what was happening and slammed the cruiser door. + +“F---,” Parson said, “It’s weird being on this side.” + +### Ending ‘fairy shaking’ + +Parson’s reputation as a gay hero began with a scandal. In the late 1990s, while Parson was building a career in narcotics investigations, another D.C. officer was stationing himself outside a gay club in Southeast Washington. He was watching for men leaving the club who were wearing wedding rings or getting into cars with baby seats. He wrote down their license plates, found their contact information and called them. Pay $10,000, he said, or he’d expose them to their wives and employers. + +The scheme was known as “[fairy shaking](https://www.washingtonpost.com/archive/politics/1997/11/30/lt-stowes-sudden-fall-from-grace/a6ac37f2-57d2-47fb-b6da-0f8f6a45dde8/?itid=lk_inline_enhanced-template).” + +It eventually led to an FBI investigation, a nearly two-year prison sentence for the officer and the resignation of the chief of police. + +To those in the LGBTQ community, the extortion was just the latest example of mistreatment by a police force with a [decades-long history](http://www.glaa.org/archive/2003/rosendallmpdhistory1119.shtml?itid=lk_inline_enhanced-template) of targeting [vulnerable queer people](https://outhistory.org/exhibits/show/glaa-of-washington-dc/item/1011?itid=lk_inline_enhanced-template). + +“There was an overall mistrust,” remembers Peter Newsham, who later became police chief. “There was a feeling that they couldn’t call the police and ensure that the police officer who came to the door was going to treat them with dignity.” + +The chief installed after the scandal, Charles Ramsey, saw a solution to that problem: bolstering and broadening a newly formed Gay and Lesbian Liaison Unit. + +Parson, then in his early 30s, had been openly gay since he joined the force. He’d grown up in the area and, after working as a National Hockey League referee, became a police officer in 1994. + +He didn’t want the job as head of the unit. But Ramsey, as Parson told the story, didn’t give him a choice. + +\[[The victims of D.C.’s record year of hatred](https://www.washingtonpost.com/graphics/2019/local/dc-hate-crimes/?itid=lk_interstitial_enhanced-template) \] + +“I was wearing plain clothes, driving an undercover car, growing my hair out, wearing my gun on my ankle, jumping out on felony drug dealers, and flipping them for homicide cases. It was the assignment of a lifetime,” Parson later told the Community Policing Dispatch newsletter. “I was really, really afraid that my reputation was going to change from being a good cop who happened to be gay, to being a gay cop that used to be a good cop.” + +Instead, he became renowned for professionalizing the unit, balancing a law-and-order approach with what was then a relatively new idea: true community policing. Rather than raid gay clubs, Parson and the five to 15 members of his unit would announce themselves over the loudspeaker, then walk around, introduce themselves and pass out refrigerator magnets with their phone number on it. The number was the workaround for those in the community who needed help, but worried about the repercussions of calling 911: a gay man experiencing domestic abuse from his partner or a transgender woman wanting to report a hate crime. + +“Nowadays, it’s not appreciated how ground-breaking and innovative it was,” said Kurt Vorndran, who served on the D.C. Police Complaints Board for 15 years. “Those of us who were advocates at the time, we were blown away. And Brett, his personality, his skill and his professionalism was a major factor in all of this.” + +TOP LEFT: Parson regularly trained other officers on the force about LGBTQ issues. (Carol Guzy/The Washington Post) TOP RIGHT: Parson, right, walks into a funeral beside then-Chief Charles Ramsey in 2005. (Carol Guzy/The Washington Post) BOTTOM LEFT: Parson joins Rabbi Shmuel Herzfeld of Ohev Sholom in Washington for a prayer service in 2018. (Bill O'Leary/The Washington Post) BOTTOM RIGHT: Parson provides comfort at a memorial service for LGBTQ activist Wanda Alston in 2005. (Carol Guzy/The Washington Post) + +Within three years of Parson’s being put in charge, the unit won a distinguished service award from the city’s Gay and Lesbian Activists Alliance, an organization formed in part to protest discrimination by law enforcement. [LGBTQ rights pioneer Frank Kameny](https://www.washingtonpost.com/news/retropolis/wp/2017/06/11/from-restrained-to-radical-to-raucous-a-history-of-pride-celebrations-in-the-u-s/?itid=lk_inline_enhanced-template), who became a national icon after he was fired from his job for his sexuality, handed the award to Parson. + +“No longer are the police our enemy,” Kameny [declared](https://www.metroweekly.com/2003/04/shaping-the-city/?itid=lk_inline_enhanced-template). + +In time, the unit and the LGBTQ community worked in tandem to aid the department in solving crimes, including the murders of several transgender women in the city. + +“\[Brett\] would call me, you know, I don’t care what time of morning it was,” remembers Earline Budd, a longtime advocate for the city’s transgender and sex worker communities. “He would wake me up and he would say, Ms. Budd, we are on the scene of a double homicide.” + +Budd would help identify the victims, then see Parson at every memorial and funeral that followed, and every community meeting about stopping the next act of violence. Though Parson did stints elsewhere in the department, he returned again and again to what was renamed the LGBTQ Liaison Unit, eventually overseeing the department’s entire Special Liaison Branch. He trained recruits, retrained old-timers and consulted with departments across the country trying to replicate what he had built. + +“He made me feel safe,” said Kisha Allure, who works in victims services at Casa Ruby, an LGBTQ support center. + +But she knew that wasn’t true for everyone. + +When Parson walked into a support group unannounced, she saw the uneasiness in the eyes of transgender women, especially women of color, meeting him for the first time. + +He looked to many like a TV version of a cop: White and male, big and burly, always armed and always in uniform. Parson boasted that, on a police force with few openly gay cops, his imposing figure earned him respect. + +“I’m 6 foot, I weigh about 295 pounds, I have experience in professional athletics and ice hockey — there aren’t a lot of people lining up to f--- with me” he told a podcast interviewer in 2021. + +What some took as Parson being direct and authoritative, others saw as arrogant and aggressive. + +“He exerted his power. In some cases, he used it to stop hate, harm and death in our community, even when it wasn’t popular to do so,” said June Crenshaw, director of the Wanda Alston Foundation. “But it’s hard to turn that power off.” + +Parson was furious in 2017 when, following protests of police participation in the city’s annual Pride parade, the LGBTQ Liaison Unit was asked not to march. He became so heated during a meeting with organizers that Sheila Alexander-Reid, the mayor’s director of LGBTQ affairs, had to calm him down. + +“He was hurt that his own community would have the nerve to ask him not to be a part of the parade after all he had done,” Alexander-Reid remembered. + +Parson reluctantly agreed to a compromise: He and his officers would wear D.C. police polos instead of full uniforms. But by 2019, he was ignoring the new policy, marching again in uniform down the parade route. That same week, when other members of his unit were asked to leave a Latinx Pride event, Parson returned with them 30 minutes later. He took the microphone and made a speech. + +“He just walked up the church aisle, armed, this \[cisgender\] White man, all upset because somebody told his people not to be there,” remembered Nancy Cañas, who organized the event. + +Some of Parson’s fellow officers, who spoke on the condition of anonymity because they were not authorized to speak to the media, said they were aware of concerns about his behavior. + +An investigative report from the Office of Police Complaints describes a night in 2006 when Parson was monitoring 18th Street NW. A cabdriver did not properly pull over to the curb. Parson’s solution: open the door, grab the driver by his shirt and rip him out of the vehicle. Parson took the taxi and drove it down the street. + +“You can’t do that,” the cab’s stranded passengers told him. According to the complaint, Parson replied, “Shut the f--- up, b----, you don’t know what you’re talking about!” + +Parson denied using foul language. But when asked by investigators about removing the driver from his cab, Parson replied that he had done this on “hundreds of occasions.” + +The investigator found that Parson had engaged in harassment and use of excessive or unnecessary force. His punishment, a D.C. police spokesman said, was a letter in his personnel file. + +On another night two years later, Parson stopped by the nightclub Town Danceboutique, where dozens of people were in line to get into what was advertised as “D.C.’s biggest Pride party.” According to a deposition he gave after he was sued for his behavior that night, he was planning to pass out magnets. Instead, he chased down a woman who appeared to be putting something in her mouth. Once he stopped her and her friends, he saw a young White man walking away from the same area. + +“Hey partner, come with me for a second,” Parson said, according to his 2009 deposition. + +“What did I do?” the man replied as he kept walking. + +Parson grabbed his arm. The man yanked it away. Parson grabbed him harder, turned and threw him through a plate-glass window. + +Parson’s explanation was that he was trying to pin the man up against a brick wall, and missed. The man, who declined to comment because he did not want to revisit that night, was crouched in the fetal position. He was covered in shattered glass and bleeding from his head. Parson was still trying to put him in handcuffs. + +“I’m yelling over and over again, ‘Stop resisting, put your arms behind your back,’ ” Parson stated in the deposition. “The crowd is screaming at me. I can’t hear him, but he’s yelling and I, eventually, use my weight to, kind of, push my body weight down on top of him.” + +Parson charged the man with assaulting a police officer. + +After a trip to the hospital and a night in jail, the charges were dropped. Records show the city settled the case for $17,500. + +But whether Parson was disciplined for this incident — and whether there are other use-of-force incidents are on his record — remains unclear. + +Police officials declined to release Parson’s disciplinary record or answer questions about it, citing the former lieutenant’s right to privacy. The department terminated Parson from its reserve force after his arrest in Florida. A spokesman said Parson is not under investigation in D.C., and there is nothing in his record to suggest he had inappropriate contact with anyone in the District. + +As Parson’s use-of-force cases were handled by police internally, his profile outside the city grew. He hosted and attended international conferences for LGBTQ law enforcement. He starred in a Justice Department training video on how police should treat the transgender community. He traveled to Vietnam and the Philippines for the State Department. + +Eventually, those familiar with his decision said, he realized he could make far more money outside the department than the $121,000 records show he was making annually as a lieutenant. Parson retired in February 2020 to start his own consulting firm. + +In the wake of George Floyd’s murder by a Minneapolis police officer, he began traveling around the country to train police on how to intervene when a fellow officer uses excessive force. + +“We’re not just policing others,” Parson [told NBC4](https://www.nbcwashington.com/news/local/we-have-to-police-ourselves-dc-program-trains-officers-to-intervene-and-prevent-harm/2444012/?itid=lk_inline_enhanced-template). “We have to police ourselves.” + +### ‘I like younger’ + +The teen messaged Parson first. + +“Hey,” he wrote at 10:21 p.m., “how are you.” + +Parson’s Growlr profile identified him as a 53-year-old in an open relationship. His job was listed as LEO, an acronym for law enforcement officer. + +“I like younger,” Parson’s profile stated. “Just a regular guy looking for the same. Staying in Fort Lauderdale for the week.” + +According to screenshots of Parson’s messages with the teenager obtained through public records requests, Parson replied that night: “Good. U?” + +The 16-year-old’s profile listed his age as 18. It described him as 5-foot-7 and 140 pounds. From a list of words to describe himself, one he chose was “boy.” The term is sometimes used by adults in the gay community who identify or present as youthful. + +Parson and the teenager unlocked the app’s “private media” feature, allowing them to see revealing pictures of each other. Though the boy’s photos are not part of public records, he later told officers that they included pictures of his body and his face. In one explicit text message, Parson commented on how skinny he was. + +“You know a place where we can meet that’s not too far from you?” the 16-year-old asked Parson the next day. + +We could definitely meet up after work. if you wanted to + +I just brought dinner home to my parents. Let me get them fed, then we can chat + +Why don’t we meet someplace after your work. We can chat. See if we click. Then, figure out a plan from there. No pressure and no strings. + +After a phone call between them, records show that the teen sent Parson the address of a Shell gas station. Around midnight, Parson pulled in driving his father’s red convertible. Its front license plate said “LIFE’S A BEACH.” + +Looking for a more secluded place, the pair moved across the street to the parking lot of a day care. + +Three hours later, at the county’s sexual assault [treatment center](https://www.broward.org/NancyJCottermanCenter/Pages/Default.aspx?itid=lk_inline_enhanced-template), the 16-year-old sat in a room intentionally painted in calming blues. He was handed a brochure that said, “A person 24 years of age or older … cannot receive consent from 16- and 17-year-old minors.” + +“Being the victim of a crime can be overwhelming,” it read. “Your reactions are normal.” + +On his phone, there was a new text from Parson: “You ok?” + +“Yeah I’m good,” the teenager replied. “I’m home.” + +Then he started talking to a detective. + +“It just kinda happened,” the teenager said, according to a police transcript of the interview. “I don’t really know how to explain it.” + +The officer asked if he kissed back. + +“I consented,” the boy said. + +LEFT: An evidence photo shows the license plate of the vehicle Brett Parson drove to the gas station where he met the teenager. (Coconut Creek Police Department) RIGHT: Police say Parson and the teenager then moved to the parking lot of this day-care center in Coconut Creek, Fla. (Scott McIntyre For The Washington Post) + +According to the transcript, the officer did not ask the teenager if Parson knew his real age. + +Advocates who work with gay youth say it’s common for teenagers to explore on dating apps that allow them to meet strangers, especially if they don’t feel safe expressing themselves at home or in school. + +Some vulnerable kids also use dating apps to seek out adults who will pay them, though minors cannot legally consent to being purchased for sex. The officer questioning this teenager did not ask whether money was exchanged. + +The boy described how he and Parson gave each other oral sex, then decided to move to another location because they’d seen someone walking in the distance. + +“Did you feel like you wanted to continue what you guys are doing?” the detective asked. + +“No,” the teen said. “I also didn’t really feel like saying no either, but I didn’t want to keep going.” + +“Okay,” the detective said. “And then …” + +“But I didn’t show any signs either of like wanting to stop, so.” + +“Okay. Did, um, did you feel scared?” + +“I felt uncomfortable,” the boy said. “But I kinda went with it because I was already there.” + +He told the detective Parson did not threaten him. And though he never showed him his badge or his weapon, he knew that Parson used to be a cop. + +“I just didn’t stop for some reason,” he said. “But I don’t know why.” + +After 20 minutes, the interview ended. It was 3:50 a.m. The boy, with his father’s permission, consented to give DNA to investigators. They had everything they needed to ask a judge for an arrest warrant. + +### ‘No, not Brett’ + +Parson sat in a jail cell for nearly a week. He paid $5,000 to A Signature Only Bail Bonds, which insured the rest of his $50,000 bond. A judge ordered him to remain in Florida, stay away from all minors and live at his parents’ Boca Raton condo while he awaited trial. + +Meanwhile, his mug shot had hit the news. + +“I kept saying no, no, no, not Brett,” recalled Budd, who had helped Parson identify crime victims. “An underage young man? No.” + +On Twitter and in text messages, members of D.C.’s LGBTQ community quickly began taking sides. Many pointed out that while the age of consent in Florida is 18, in D.C. it’s 16. Parson could not have been arrested for the same set of circumstances here. + +“I don’t think a life should be destroyed over one foolish event late one night, especially when the contact was made on a site where everyone is supposed to be a minimum of 18,” said Rick Rosendall, former president of the Gay and Lesbian Activists Alliance. + +Nothing about the police reports, some argued, indicated that Parson had intentionally sought out a minor. + +“To me, there’s no victim, there’s no predator in this story,” said transgender activist Taylor Lianne Chandler, who took to Twitter to defend Parson. “I can’t fathom Brett risking his career for 20 minutes of fun.” + +Others were disgusted, saying it was not acceptable even if Parson thought the person he was meeting was 18. + +“You’re a police officer, you should know better,” said Tamika Spellman, a transgender advocate who has conducted training sessions alongside Parson. “You should know the differences between a grown-up and a child.” + +Impossible to ignore was where the encounter happened: a state then on the verge of passing a bill to ban teachers from discussing sexual orientation and gender identity. Dubbed the [“don’t say gay” law](https://www.washingtonpost.com/politics/2022/04/01/what-is-florida-dont-say-gay-bill/?itid=lk_inline_enhanced-template) by opponents, its supporters bandied about terms like “grooming” to create false links between homosexuality and child abuse, which is committed by people of all sexual orientations. + +“Something like this just plays right into their narrative,” said John Guggenmos, owner of several gay nightclubs in D.C., including Town Danceboutique, which closed in 2018. “To me, it makes all our community look bad.” + +Many who had crossed paths with Parson or invited him to speak at events said they feared that bringing any additional attention to his arrest could hurt LGBTQ progress. + +But to those who put their trust in him again and again, the hurt was already done. + +“For him to use his power to leave the scene, leaving this vulnerable youth to fend for himself, it’s devastating,” said Crenshaw, of the Wanda Alston Foundation. + +Allure, at Casa Ruby, who’d said Parson made her feel safe, couldn’t help thinking of how vulnerable she had been as a teenager. + +“You’re a leader. People look at you as a public figure. You have the nerve? The audacity? I can’t. That’s where I’m at,” she said. + +Alexander-Reid, who was Parson’s counterpart in the mayor’s office, said she’s still waiting for some kind of explanation, maybe from Parson himself. + +“If he’s willing to be vulnerable and open as to what happened, I’m definitely open to listen,” she said. “He’s earned my respect. And if he’s made mistakes? You know what, he’s not the first one.” + +And then there were Parson’s colleagues, officers who by training are inclined to believe that police in Florida are justified in the charges they filed. + +Newsham, the former D.C. police chief, compared the situation to how he felt as a Catholic to learn of abuse in the church. To those who believed in community policing, he said, Parson was as revered as a priest. + +“The trust, I’ve got to tell you, it’s definitely fractured,” he said. “If it’s completely broken remains to be seen.” + +### Pride’s missing fixture + +On an overcast Saturday in June, D.C. staged its first full-fledged Pride parade since the pandemic began. The city and its people were draped in rainbows, jubilant to see the streets packed again. + +On nearly every corner sat a D.C. police cruiser and a few officers, assigned to monitor the event for safety. + +“Capital Pride, are you ready?” an announcer called, and onto the parade route walked another group of officers. + +They too, were in uniform, wearing bulletproof vests and carrying guns. But the words “METROPOLITAN POLICE” across some of their backs were written in rainbow. + +Members of the LGBTQ Liaison Unit walked alongside employees of the mayor’s office, shaking hands and posing for pictures. The officers were scheduled to stop by bars on U Street that night and run a tent at the Pride festival the next day — the kind of events where Parson was always a fixture. + +He hadn’t been seen in months. But two days before the parade, a judge granted Parson’s request to leave Florida. As long as he reports to his probation officer by phone twice a week and Zooms into his court hearings, he has permission to spend the summer at his home in Provincetown, Mass. Come September, he told the court, he is planning to move back to the District. + +He will return to a city where he is no longer a member of the police reserve force. His many speaking engagements have been canceled. The program that teaches police to stop unnecessary force terminated his contract. + +The officers he once led kept moving down the parade route. They handed out rainbow bracelets stamped with a phone number, the direct line to the unit. Anyone who needed their help could call. + +Some people slipped the bracelets onto their wrists. Some left them behind on the pavement. + +*Razzan Nakhlawi and Peter Hermann contributed to this report.* + +*Story editing by Lynda Robinson, photo editing by Mark Miller, copy editing by Thomas Heleba, video editing by Amber Ferguson, design and development by Alexis Arnold.* + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md b/00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md new file mode 100644 index 00000000..534e01a6 --- /dev/null +++ b/00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md @@ -0,0 +1,223 @@ +--- + +Tag: ["Society", "Homeless"] +Date: 2022-07-10 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-07-10 +Link: https://www.nytimes.com/2022/07/08/nyregion/brooklyn-homeless-shelter-friendship.html +location: +CollapseMetaTable: Yes + +--- + +Parent:: [[@News|News]] +Read:: [[2022-07-11]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-HeHadaDarkSecretNSave + +  + +# He Had a Dark Secret. It Changed His Best Friend’s Life. + +![Adrift in his own life, Tin Chin, left, found purpose in helping Mo Lin after they met at a homeless shelter.](https://static01.nyt.com/images/2022/07/10/nyregion/10tin-and-mo-11/08tin-and-mo-11-articleLarge.jpg?quality=75&auto=webp&disable=upscale) + +The Great Read + +Tin Chin and Mo Lin were inseparable at the homeless shelter. But one of the men wasn’t who he seemed to be. + +Adrift in his own life, Tin Chin, left, found purpose in helping Mo Lin after they met at a homeless shelter.Credit... + +- July 8, 2022 + +### Listen to This Article. + +*To hear more audio stories from publications like The New York Times,* [*download Audm for iPhone or Android*](https://www.audm.com/?utm_source=nyt&utm_medium=embed&utm_campaign=)*.* + +On his first night at the Brooklyn homeless shelter, Tin Chin met his best friend. + +Estranged from his family, Mr. Chin was alone, stewing in anger and shame over all he had lost and how low he had fallen. The Chinatown restaurants he frequented with his wife and daughter, the elementary school drop-off routine, the friendly neighbors in Queens — these had been the trappings of a middle-class life that once seemed secure. A college graduate and former civil servant, Mr. Chin had to learn his city anew, and now — he could still hardly believe it — as a homeless person. + +On that evening in 2012 in the Barbara Kleiman Residence in East Williamsburg, he saw only one other Chinese person in the room. The man was skinny, his ill-fitting clothes hanging loosely on his frame. Mr. Chin sized him up with an expert eye: an immigrant, most likely from Fujian Province; no family, no English, no documents. + +“I’m at the bottom,” Mr. Chin remembers thinking. “But I’m better off than him.”  + +The other man was named Mo Lin. Mr. Chin sensed that if they had met just a few years earlier, they would have had very little in common. “At the beginning, I can’t say I liked him,” he said. “But we are the two Chinese people in the shelter, so we talk.” + +Mr. Chin possessed little more than his closely guarded secrets, including a criminal record that haunted him. They ran through his mind on a loop, but he divulged them to no one, certainly not this new acquaintance, and instead shared his story in broad strokes — he was born in Hong Kong and had grown up in New York and was new to being homeless. + +Mr. Lin was hesitant and didn’t say much. It would be a while before he described his years scraping by in New York. He was indeed undocumented, and although he had worked in innumerable Chinatown kitchens, his poor health had long ago made steady work impossible, and he looked far older than his 46 years. He spent his days shuffling along the streets of Manhattan’s Chinatown, smoking cigarettes on the sidewalk, watching staticky TV in threadbare Fujianese community centers. + +But the men soon began spending so much time together — always chatting in the shelter, strolling downtown streets, sharing plates of noodles — that acquaintances assumed they were family. + +“We called them brothers,” said Mireille Massac, a Brooklyn food bank organizer who spent time with them. “He took care of Mo. What Mo needed, it went through Tin.” + +Friendships can be hard to memorialize — relatives, partners, children often take pride of place. But a friendship can be the defining bond in a person’s life, offering a kinship that family cannot, a refuge through lonely, hungry days. + +And can a friendship offer redemption for your worst mistakes? A decade after their first night in the shelter, Mr. Chin wonders about that. + +Image + +![The Barbara Kleiman Residence in East Williamsburg, Brooklyn.](https://static01.nyt.com/images/2022/07/10/nyregion/10tin-and-mo-07/08tin-and-mo-07-articleLarge.jpg?quality=75&auto=webp&disable=upscale) + +Credit... + +**The shelter rules** said everyone had to be out by 8 a.m., and Mr. Chin and Mr. Lin developed a routine. They headed to Chinatown together, where they would buy dim sum, dumplings — whatever Mr. Chin could afford on the $200 he received through public assistance every month. Mr. Lin’s favorite meal was the fish sandwich from McDonald’s. He had unrelenting dental problems, and the soft filet was easy to chew. + +They often ate in a leafy park on the edge of Chinatown, sharing a bench and watching the neighborhood swirl. Some days, they went to the library, where Mr. Chin introduced his friend to the internet and the bottomless well of YouTube. Mr. Lin was drawn to old Chinese war movies. + +Adrift in his own life, Mr. Chin found purpose in helping his new friend. “I’m playing a white knight role here,” he remembers thinking to himself as they became closer. It had been a long time since he had been anyone’s white knight. + +Over time, it became clear Mr. Lin had hardly explored New York. Mr. Chin appointed himself personal tour guide. + +Their first outing was Coney Island, Mr. Chin remembered. They took the subway to the end of the line to see the aquarium. Mr. Chin had been there for school trips as a kid, and he took his wife there on a date — sweet memories laced with an acrid burn he kept to himself. Now he focused on Mr. Lin, who had never seen an aquarium before. The sea creatures, the colorful fish, the calming quiet of the underwater world astonished his friend and delighted Mr. Chin. “His eyes were really amazed,” Mr. Chin said. + +They walked along the boardwalk and bought hot dogs for lunch. For that afternoon, it felt like their lives extended beyond shelter curfews and park benches. They were New Yorkers, this was their city and maybe they would have another hot dog, why not. Mr. Chin was buying. + +They kept exploring New York, two homeless men in a postcard-perfect montage. They took the Staten Island Ferry, where the view from the deck reduces the skyline to a Tinkertoy city you can scoop into your hands. They tried the Metropolitan Museum of Art, but Mr. Lin grew bored after a couple of floors and they quickly decamped for Central Park. But the Bronx Zoo was a hit. + + “Especially the tiger,” Mr. Chin recalled. “The tiger really came out, it was the first tiger he ever saw. Everything was the first thing he ever saw.” + +New York adventures became part of their friendship, which deepened over time. Lawyers, aid workers and friends who met them marveled at their devotion to each other. Extensive details of their years together were also left behind in grainy snapshots, police reports, immigration forms, nonprofit records, court transcripts and old emails. + +One December, they even went to Macy’s in Midtown to see Santa Claus. + +They stood in line, two middle-aged homeless men towering above a sea of children. If any parents looked at them sideways, Mr. Chin didn’t notice or care. They finally made it to the front for a photo with Santa. In it, Mr. Chin sits on the right, beaming. On the other side of Santa, Mr. Lin sits more stiffly, his hands clasped in his lap, his puffy coat zipped to his collar. He smiles slightly, unsure quite what to do. + +Before they left, Mr. Chin translated his friend’s wish for Santa: a green card. + +Image + +Credit...An Rong Xu for The New York Times + +**Over the next two years**, the men settled into life at the homeless shelter. As residents cycled in and out, they moved their cots closer together. + +By then, Mr. Lin had picked up an old smartphone someone had left behind on a park bench. At night in bed, he used Mr. Chin’s hot spot connection to get online and watch his old movies. + +Fights and robberies in the shelter were not uncommon, but Mr. Chin managed to deflect attention with a tough-guy mien. But around 11 p.m. on Aug. 1, 2014, while he was talking to a shelter administrator and Mr. Lin slept on his cot, a shelter resident with a history of arrests jumped Mr. Lin and beat him bloody. When Mr. Chin found his friend, Mr. Lin’s left eye was swollen shut, his mouth an open wound, blood trailing from his nose. Mr. Chin went with him to the hospital while the police arrested his assailant. + +Mr. Lin had broken bones in his face and needed surgery. When he came to, Mr. Chin was by his side, trying to contain an odd, nervous excitement that seemed bizarrely out of place. + +“I said: ‘Lin! This is a once in a hundred-year opportunity! This is it!’” He knew his friend did not understand, but he didn’t expect him to. + +For all the time they spent together, Mr. Chin had deliberately kept his past a secret. He spoke of his wife and daughter, but he brushed past his career, and he never mentioned his arrests or the years he spent in prison. + +Here’s what he never shared: Early in the 1990s, Mr. Chin had been an immigration officer at John F. Kennedy International Airport. His job included interviewing Chinese people seeking asylum, desperate people seeking better lives. People like his own father, people like Mr. Lin. + +He worked there for five years, through the years following Tiananmen Square, and he saw the surge of migrants that followed. Night after night, he listened to accounts of persecution — many of them surely true, many of them surely exaggerated. He was keenly aware that if his parents’ lives had gone differently, he could well have been one of those people in line looking for mercy. + +Now, seeing his friend battered, Mr. Chin remembered that there was a special kind of visa — a U visa, was it? — that was granted to immigrant crime victims. He raced to the library, where he used the free computer to research immigration law. + +It took a few sessions to confirm, but within two weeks, he wrote an email to [T.J. Mills](https://ny-jfon.org/our-team), a lawyer who worked on immigration cases in Chinatown. + +“I wish that you can look into to see if U visa can work for Mr. Lin,” he wrote on Aug. 13, 2014. “With all due respect, Tin Chin.” + +**Mr. Chin still** didn’t say anything to Mr. Lin, Mr. Mills or anyone else about his career in immigration enforcement. “My background is ugly,” he said recently. “No need to talk about it.” He sighed. “They said I was a dirty cop.” + +In 1993, Mr. Chin lost his immigration job when federal agents found $1,700 in his pocket, money he had extorted from a Chinese businessman. The man had landed at Kennedy and claimed political asylum. Mr. Chin said he would send him back to China unless he handed over his money. Hours later, federal agents arrested Mr. Chin. He pleaded guilty and spent nearly a year in prison. + +Then, years later, he was arrested again, and this time for something far worse. In 2003, he was convicted as the leader of an international plot to swindle dozens of Chinese immigrants out of their life savings. Prosecutors said Mr. Chin set up phony offices across New York and promised visas to immigrants who wanted to bring their relatives to the United States. He claimed that he worked for the government and that through his connections he could get them visas and green cards, for exorbitant fees. Money in hand, they said, he vanished, only to change his name and address and do it all over again. + +“Chin, a Chinese immigrant, preyed on a group of hardworking and unsophisticated Chinese immigrants who wanted desperately to bring their relatives from China to the United States,” prosecutors wrote in a court filing. + +He was accused of stealing around $1 million, from grandmothers, farmers, seamstresses, husbands — people risking everything to build new lives in New York. A series of witnesses testified against him in a federal trial, repeatedly identifying him in court as the mastermind. He was the only person connected to the plot to be sent to prison. + +To this day, Mr. Chin vigorously maintains that he was framed, and that authorities fingered him only because of his previous arrest. Clearing his name remains an animating desire, even as his long, handwritten letters to the judge and other federal officials have yielded no progress. + +He spent about a decade in prison and was released in 2012. He tried to reunite with his wife and daughter, but it went badly. He washed up at the homeless shelter, desperate to start anew but without a clue how to do it. And then he met Mr. Lin. + +“God or Buddha above sent me to help Mo,” he said. “He’s undocumented, and I was an ex-immigration officer. It’s not really a coincidence that I met him.” + +As his battered friend slowly began to recover, Mr. Chin pressed to help him get his visa. + +Mr. Chin remembered Mr. Mills, the immigration lawyer, from a free legal clinic in a Chinatown church when Mr. Mills had once reviewed Mr. Lin’s case. In a letter sent to Mr. Lin at the homeless shelter two months before the attack, the lawyer had politely told him that obtaining legal status would be virtually impossible. “Since you apparently entered the U.S. with a fraudulent document, your inspection and admission are difficult to prove,” he wrote. + +Mr. Mills and other caseworkers had nonetheless been struck by the two men’s friendship. They didn’t know about Mr. Chin’s past, but they admired his dedication to Mr. Lin. “Tin has been by his side the entire time,” Mr. Mills said. “Tin is his best friend.” + +As Mr. Mills looked into Mr. Lin’s case, he quickly agreed that Mr. Chin was right about the U visa, which was created in 2000 to protect immigrants who have suffered abuse in the United States and are willing to cooperate with law enforcement. Mr. Mills began working on an application for Mr. Lin. + +Mr. Chin became the go-between, helping Mr. Mills gather police records of the assault, hospital documents listing Mr. Lin’s injuries and a blizzard of application forms. The more Mr. Mills worked with Mr. Chin, the more his unusual perseverance and deep fluency in immigration law struck him. + +“I’ve honestly not known a better friend and advocate than you have been to your friend Mo,” Mr. Mills wrote to Mr. Chin. + +As Mr. Lin’s case crawled through the immigration system, he eventually recounted his story to case workers. + +In an interview he gave in 2019 to a volunteer who worked with Mr. Mills, he talked about growing up on his family farm in rural Fujian Province. As a young man, in the wake of the Tiananmen Square protests, he went to a rally in Fuzhou calling for more freedom and reforms — and found himself on the authorities’ list as a potential troublemaker. Fearing arrest, he said, he fled his home and began a grueling quest to find safety in America. + +With the help of a network of sympathizers and a series of loans he couldn’t afford, he ended up at the Thai border, he said, and eventually on an airplane to Los Angeles. When he landed, he retreated into an airport men’s room, where he could be sure no one was watching him. He said he ripped up his passport and headed to customs with two letters memorized: P. A. Political asylum. + +He was allowed temporary entry, but after a judge ordered his deportation, he spent the ensuing years hiding from the authorities, working grueling jobs for little pay, fearful of being noticed. “I found work in a kitchen and worked as hard as I could to pay for my bed, my debts, my wife,” he said in 2019 through an interpreter. “I did this for eight years and then my body gave up.” + +He eventually made it to New York and bounced around from shelter to shelter. “I was so scared,” he said. + +Mr. Mills was haunted by his story. “My whole sense of Mo, even though I didn’t know him well — here’s a guy who the entirety of his life was one of just survival,” he said. “Raw survival and getting beat up constantly.” + +It took four years for the visa to come through, but it worked. On April 2, 2019 — 28 years after he first entered the United States — Mr. Lin received his visa. He and Mr. Chin were at their Chinatown park when the document — sent to Mr. Chin’s email address because Mr. Lin didn’t have one — came through. + +“Mo had the sweetest smile I ever saw on his face all these years,” Mr. Chin remembered. “He kept on asking me to read over and over every line to him.” + +Now that he had a visa, it would be easier for Mr. Lin to visit the dentist and get his teeth fixed. Maybe he could finally get out of the shelter. In three years, as long as he stayed in the United States, he could apply for a green card. And he could finally bring his wife, Huo Mei Li, to New York. He hadn’t seen her in nearly three decades. + +“There is so much time we have lost,” Mr. Lin told the nonprofit volunteer in 2019. + +Mr. Chin had changed his friend’s life without revealing his own secrets about his years working for the government or his arrests, but months after Mr. Lin got his visa, Mr. Lin confronted him one day with a direct question:Are you an immigration officer? + +Someone at the park had clued him in. Now he wanted to know, had Mr. Chin been toying with him all along? Could he have helped secure his paperwork long ago? + +As Mr. Chin remembers it, the confrontation quickly became tense. “You don’t know how lucky you are,” he recalls saying to Mr. Lin. “How do you think you got your visa? You should be thanking me.” + +An iciness slipped into their friendship, but Mr. Chin says they eventually moved past it. They continued spending time together, and Mr. Chin continued to help Mr. Lin navigate the city and find doctors and dentists. + +They had shared countless meals together, and soon they had a third person join. Mr. Lin’s wife had made it to New York, and the pair were beginning to imagine how they could build a life together in America. Mr. Lin still lived in the homeless shelter while she stayed with a family friend, but he had dreams of securing an apartment for them. + +“The most important thing is to find a place where we can be together,” he said in 2019. + +In March 2020, Mr. Chin took Mr. Lin to Bellevue Hospital Center for treatment for stomach ailments. Doctors kept him overnight and then admitted him to the intensive care unit. It was the beginning of the pandemic, and the hospital had suspended all visits, but Mr. Chin said a social worker regularly called him from the hospital so the friends could chat on video. + +Mr. Lin seemed weak and listless during their conversations. Mr. Chin was worried. Within a few days, the hospital said that Mr. Lin had tested positive for Covid. + +Then, on the evening of April 17, Mr. Chin remembers the hospital called him. “This is not the usual time they would call me,” he said. “I already don’t like it.” + +Mo Biao Lin died at 7:33 p.m., an early victim of New York’s first wave of Covid-19. He was 53 years old. + +He was survived by his wife, Ms. Li, and an adult son who forged his own life in another American city. They could not be reached for this article. Mr. Lin is buried in a cemetery in Pennsylvania, near his son’s home. Engraving on his coffin reads “Mr. Mo Biao Lin, 1966-2020.” + +On the night his friend died, Mr. Chin stayed up past midnight writing his thoughts in a long email to Mr. Mills. + +“Now I ask Heaven, you put me into helping him to get his dream, because I am the right person in this department,” he wrote. “Now you take him away.” + +Mr. Chin, who is now 65, regularly flips through photos of his friend on a beat-up old cellphone. He is finally out of the shelter and lives alone in an apartment in Brownsville, Brooklyn, that’s packed to the ceiling with overstuffed boxes and bulging plastic bags. Plenty of it belonged to Mr. Lin. He visits Chinatown regularly and volunteers at a food pantry. He’s fixated on his conviction and spends his nights poring through old transcripts of his trial. + +He still sees Mr. Lin everywhere: at the Chinatown park where elderly men walk dutiful laps. On the B60 bus that Mr. Lin used to ride to visit him. In the endless Covid headlines. He sees him in his court case records, where his accusers’ quests for legal status resemble Mr. Lin’s. + +Years later, people who spent time with the two friends remember their bond, and remember being struck by its depths. + +“I feel like Mo gave him his sense of self back,” said Rebecca Cooney, the nonprofit volunteer who interviewed Mr. Lin in 2019 and spent time with them both. “It was as if Mo was part of his way back to feeling like a human being.” + +Mr. Chin revealed almost nothing about his life to Ms. Cooney, but she remembered that both he and Mr. Lin seemed lost. “These are two people who were suffering so much, it’s amazing that they would have the reserves inside to give friendship to each other.” + +This April, on the anniversary of Mr. Lin’s death, Mr. Chin took the subway to Bellevue, where he found a park bench nearby. The shared rituals of a close friendship never leave you, even if the friend does. + +He lit a stick of incense and laid out a picnic of Mr. Lin’s favorite meal: French fries, Coke and a McDonald’s fish sandwich. Mr. Chin had taken Mr. Lin’s dentures after the funeral — a reminder, no matter how macabre, of his friend — and now he placed them next to the food. + +He called his friend’s name aloud a few times: “Lin, Lin, Lin.” Then he ate the sandwich. No one approached him as he finished his lunch — or, rather, Mr. Lin’s lunch. + +He made no move to leave the bench. + +Audio produced by Jack D’Isidoro. + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md b/00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md new file mode 100644 index 00000000..4bdc04ba --- /dev/null +++ b/00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md @@ -0,0 +1,357 @@ +--- + +Tag: ["Society", "Politician", "Scandal"] +Date: 2022-07-10 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-07-10 +Link: https://defector.com/meet-richard-fritz-americas-most-unelectable-elected-official/ +location: +CollapseMetaTable: Yes + +--- + +Parent:: [[@News|News]] +Read:: [[2022-07-11]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-MeetRichardFritzNSave + +  + +# Meet Richard Fritz, America’s Most Unelectable Elected Official | Defector + +It takes a village to allow an incident as grotesque as the killing of 16-year-old Peyton Ham by Maryland State Police officer Joseph Azzari to be forgotten as quickly as it has in St. Mary’s County. But Richard Fritz, who has been the state’s attorney—the equivalent of a DA—in this rural Southern Maryland county since 1998, is as responsible as anybody for its going away. + +After Defector’s [coverage of the killing](https://defector.com/witnesses-to-killing-of-peyton-ham-by-maryland-cop-come-forward-call-it-murder/), several people from the region contacted me wanting to tell me that Fritz was as incompetent and powerful as the Ham case made him seem. They said that if I looked into Fritz’s background I’d be shocked that he ever won one election, let alone six. Given Fritz’s role in the Ham case, and because he’s now campaigning for a seventh term, I did look into his record. Turns out they didn’t exaggerate. Put plainly: He should have been out of office long before he let Ham’s killer walk. (Fritz did not respond to Defector’s requests to be interviewed about the Ham case and his campaign.) + +Any reasonably complete get-to-know-your-candidate bio for Richard Fritz, which I will try to deliver here, would lead off with the incredible tale of his failed effort to prevent voters from learning of his record as a sex offender. Fritz used the county sheriff’s office to stop a local newspaper from distributing its election day issue, with a front-page story headlined “Fritz Guilty of Rape.” A federal judge was so disgusted by Fritz’s censoring news about his predatory past that he compared the prosecutor and his henchmen to “members of the \[Ku Klux\] Klan.”  + +Then there’s the heinous tale of Fritz conspiring with the sheriff to raid the office of a local lawyer who just one day earlier had filed to run against Fritz for state’s attorney. That rival was then indicted on more than 100 criminal counts of fraud and forgery. The case blew up when Fritz’s office got caught withholding exculpatory evidence, but by then the rival’s campaign was crippled financially and dead in the water. + +There’s also the tale of Fritz mysteriously dropping all charges in a high-profile child abuse case brought against an elementary school teacher, after Fritz publicly said the teacher confessed to molesting his students. Now one of the teacher’s victims comes forward to tell Defector that Fritz dismissed the case and let the man who raped him go free just to settle a personal vendetta. + +And then there’s the story of the deputy state’s attorney publicly announcing that she had “an ethical and moral obligation” to resign from Fritz’s office because she felt completely powerless to stop the corruption and legal abuses she saw in his operation. The powerless deputy prosecutor’s father is the governor of Maryland. + +I’ve never come across an elected official who’s gotten away with more for longer than Richard Fritz has in St. Mary’s County. Then again, I’d never come across a case handled as appallingly as Ham’s killing. A quick recap for now: In the early afternoon of April 13, 2021, Azzari shot Ham dead in a gravel driveway next to the teen’s home in Leonardtown, Md. Azzari told other cops on the scene that Ham “charged me” with a knife just before being killed. No witness supported Azzari’s account. Three witnesses, however, told Defector that [Ham was on his knees](https://defector.com/42-seconds-after-this-photo-was-taken-police-shot-peyton-ham-dead/) and posed no threat to Azzari or anybody when they saw the officer fire four shots into his neck and chest, killing him. + +The witnesses say they told authorities the same thing, but Fritz never showed interest in hearing anything about the killing from them, or from anybody but Azzari and other state police officers.  + +“I guess \[Fritz\] doesn’t want to take on the police when he’s up for election,” said Kristee Boyle, Ham’s mother. + +Fritz let the state police investigate one of their own. Fritz’s office never asked that the St. Mary’s County Sheriff’s department or the Maryland attorney general’s office conduct their own investigations. Fritz also chose a curious figure to represent his office: Of [the dozen prosecutors on his staff](https://www.stmarysmd.com/sao/attorneys/), he assigned deputy state’s attorney Dan White to be the county’s point man on the state police’s investigation. White has one brother who is currently a high-ranking Maryland State Police officer and formerly served as commander of the Leonardtown state police barrack, where Azzari was stationed when he killed Ham, another brother who is a retired Maryland State Police detective, and a nephew who is commander of the Forestville state police barrack. Ham’s family said they took White’s attachment to the case as a sign from Fritz to the cops that they could have their way. + +The state police didn’t bother hiding the bias of their investigation. Azzari, for example, is identified as “The Victim” throughout the summary report of what was ostensibly a homicide investigation. That report also asserts that investigators found “multiple anti-authority/government items” while searching the dead kid’s bedroom, which refers to a copy of *Dead Or Alive*, a 2010 Tom Clancy thriller novel. + +Defector recently obtained records from the state’s medical examiner, which show the coroner found that the four bullets fired in Azzari’s final, fatal salvo were traveling “downward” through Ham’s body. That determination seems to support the witnesses’ sworn statements that Ham was killed while on his knees. This medical examiner’s report was sent to Fritz in July 2021. + +There’s no hint that Fritz paid attention to witness testimony or to the autopsy. In October, Fritz ruled that Azzari was “in reasonable fear for his life” when he killed Ham, and therefore the state wouldn’t be filing any charges against the officer. Fritz then declared the case closed. Azzari presently posted a [photograph on Facebook](https://www.facebook.com/photo?fbid=723076921984885&set=a.126532264972690) showing he was back on the beat and fully armed, and appended a message that expressed no remorse for killing Ham, but did advise fellow cops to “get home to your families no matter what.”  + +On April 12, 2022, a day before the one-year anniversary of the killing, Kristee Boyle filed a wrongful death lawsuit against Azzari in the U.S. District Court in Greenbelt, Md. The complaint contends that Azzari’s actions were “extreme and outrageous and beyond the bounds of decency in society,” and violated the teen’s constitutional rights while killing him. The federal suit asks for $10 million in compensatory and punitive damages. According to court records, Azzari has not yet responded to the lawsuit.  + +Mike Boyle, Ham’s father, told me that Fritz made it clear to the family that filing a lawsuit was the only way they’d ever find out what the state really knows about what happened when his son was killed.  + +“Fritz still hasn’t given us Peyton’s full autopsy,” he said. “And he won’t even tell us why.”  + +Ham’s survivors say getting Azzari off the streets is their primary goal. But the family believes the greater good would also be served by putting Fritz out of office. Keith Raley, Ham’s grandfather, has led occasional marches against Fritz in front of the county courthouse. The demonstrators carry placards with “MURDER” written beneath a photo that shows Ham on his knees, with Azzari standing over and behind him. The photo was taken by a neighbor 42 seconds before Azzari killed him.  + +“Getting rid of Fritz might be our last chance to get justice for Peyton,” said Kristee Boyle.  + +“He is a creep,” said Raley. + +That case was already made long before Fritz let a killer cop walk. + +--- + +“Fritz raped me when I was 15,” Carla Henning-Bailey told me. “He and two other guys held me down and raped me.”  + +Of all the awful tales told with Fritz at the center, Henning-Bailey, now 73 years old, tells the worst. It goes back to November 1964, when Henning-Bailey was a 10th grader at Great Mills High School in St. Mary’s County. Her family had moved to the county a few years earlier when her father, who was in the Navy, was transferred to the nearby Patuxent River air base. She recalls not feeling connected to classmates or the community, and all she knew about Fritz was that he was an 18-year-old senior whom a friend of hers had gone on a few dates with. But when Fritz invited Henning-Bailey to a house on St. George Island in the Potomac River on that fateful fall day, she went. And that’s where she said Fritz and his friends attacked her.  + +Henning-Bailey said the alienation she’d already felt before the attack, combined with dread over being called a liar and shame about what happened, caused her to not immediately report the gang rape: “This was at a time when nobody believed girls who said what I said.” + +But word about what had happened still got around town fast, and her mind changed when a boy on the school bus taunted her about the encounter with Fritz just a day later. So Henning-Bailey went to the principal’s office and told of the gang rape. Her mother then took her to the hospital and the police station, where she named the two assailants she knew, Fritz and another Great Mills High student whose family owned a popular grocery store in the county. She didn’t know the third assailant, other than that she was told he was 23 years old.  + +“Everybody in town told me Fritz would get away with it because my family didn’t have the connections that he did,” she said. “They were right.”  + +Fritz, then 18, was allowed to plead guilty to a charge of “carnal knowledge of a female child,” commonly called statutory rape. According to [a *Washington Post*](https://www.washingtonpost.com/local/who-to-believe-its-just-another-day-of-secrets-andlies-in-st-marys-county/2014/04/18/f0102da8-c709-11e3-bf7a-be01a9b69cf1_story.html) report, Fritz was initially sentenced to 18 months in state prison, but the jail term was suspended and the judge let Fritz off with just probation. (The two other men will not be named in this story. Court records from federal lawsuits confirm Henning-Bailey’s account that there were multiple males involved, and Fritz has said there were two friends with him that day in the house on St. George Island. But Fritz is the only named assailant in those court records and in subsequent news reports about the rape. The juvenile friend of Fritz’s named by Henning-Bailey whose family owned the grocery store grew up to be a deputy with the St. Mary’s County sheriff’s office and once ran unsuccessfully for sheriff in the county. He is now retired. Defector could not confirm the identity of the attacker that Henning-Bailey said was 23 years old at the time of the rape.)  + +Henning-Bailey got married as a high school junior at 17 years old, and said the rape likely played a part in that and also in her decision to leave St. Mary’s County for Pennsylvania. She said she tried to forget about Fritz and the horrors of that day on St. George Island.  + +Fritz went off to college, eventually getting a law degree from the University of Baltimore School of Law in 1976. He came back home and took his first job in the St. Mary’s County state’s attorney’s office in 1981 under characteristically sketchy circumstances. He was working as a public defender in the county at the time, and among his clients was accused robber Clarence Leo Young. Fritz [abandoned Young and accepted an offer to join the prosecution side](https://law.justia.com/cases/maryland/court-of-special-appeals/1982/102-september-term-1982-0.html) as Young was about to go to trial. Young was subsequently convicted, but appealed the verdict claiming that Fritz’s abandonment created a conflict of interest in the St. Mary’s County state’s attorney’s office, since he’d told his lawyer “everything \[Young\] knew about the case” before Fritz switched sides. Young’s appeal was denied, however, as the appeals court ruled that “the mere appearance of impropriety, such as existed here” was not enough to overturn the conviction. + +Fritz resigned as deputy state’s attorney in January 1993, amid humiliating accusations from state’s attorney Walter Dorsey, his boss, that Fritz tried taking the law into his own hands and was bad at his job. Dorsey told [*the Baltimore Sun*](https://www.baltimoresun.com/news/bs-xpm-1993-02-14-1993045041-story.html) in February 1993 that he’d had enough of watching Fritz “dressing up as an undercover police officer” and “hiding behind trees and staying up until 3 o’clock in the morning” on unsanctioned and bizarre searches for criminal activity in the county.  + +So Fritz decided to take on Dorsey. He ran as a Democrat in 1994 and lost before switching parties before the 1998 race, around the time that St. Mary’s basically became a one-party county. (All members of the St. Mary’s County commission are Republicans, and no Democrats will even be on the [2022 ballot](https://www.elections.maryland.gov/elections/2022/primary_candidates/gen_cand_lists_2022_1_by_county_19.html) for state’s attorney or sheriff this year.) + +The fact that Richard Fritz was a sex offender had been largely forgotten locally. But in 1998, it became a national story. All because Fritz, during his campaign as a Republican for the state’s attorney job, pulled an absurd scheme that the locals all came to know as his “Newspaper Caper.”  + +As election day approached, Fritz had learned that *St. Mary’s Today*, a local weekly newspaper that had been savaging him throughout the campaign, was working on a story about his criminal record. Fearing the reporting would cost him the election and derail his political career, Fritz devised a plot to prevent news about his predatory past from reaching locals before they went to the polls. Around midnight on election day eve he [met with at least six St. Mary’s County sheriff’s deputies](https://law.justia.com/cases/maryland/court-of-special-appeals/1982/102-september-term-1982-0.html) at the home of Lyle Long, one of the deputies. (In May 1998, five months before the meeting, Fritz had served as Long’s criminal defense attorney when Long was charged with assaulting a minor and false imprisonment. A [*Washington Post report*](https://www.washingtonpost.com/archive/local/1998/05/10/prosecutor-moves-to-delay-officers-assault-trial/b59da0d7-2d15-4fb3-a702-6f21023e809c/) said Long was accused with attacking a 15-year-old boy in Callaway, Md., and putting him in a headlock after the officer felt the kid wasn’t paying proper attention to the anti-drug lecture Long was delivering. The charges were dropped in exchange for Long completing what the newspaper described as “a confrontation-training course called ‘verbal judo.’”) + +At Long’s house, court records show, Fritz’s posse mapped out how they would gather up every available copy of the paper, with its front-page story headlined “Fritz Guilty of Rape.” In the era before the internet, *St. Mary’s Today* was the primary chronicler of political corruption in the county. The group of lawmen went to convenience stores and newspaper vending boxes all over the county. Court records indicate at least 1,600 copies of *St. Mary’s Today* were seized in the pre-dawn mission. Ken Rossignol, the paper’s publisher and jack-of-all-trades and also a longtime nemesis of Fritz, said he knew something was up when he was out delivering his own paper throughout the night and began discovering that vending boxes he’d filled mere hours earlier were already empty. Rossignol said that he replenished the supply at the boxes himself, only to learn that sheriff’s deputies were following him around and re-emptying them.  + +Fritz and the deputies claimed they stole no papers, and had instead acquired them through mass purchases from the retailers or boxes at 75 cents per copy of their own money. But [Maryland State Police initially announced](https://www.washingtonpost.com/archive/local/1998/11/05/newspapers-with-negative-article-disappear-on-election-eve/fb427e23-5b05-48c3-8f1c-32b952d702ae/) on election day that hundreds of copies had been stolen overnight in stacks outside retail outlets. Rossignol said recently that there was no way Fritz’s posse could have purchased the papers that had been left in front of closed stores in the middle of the night and disappeared before the businesses opened. According to a judge’s decision [from federal litigation](https://law.justia.com/cases/federal/district-courts/FSupp2/199/279/2414704/): “It is undisputed, however, that the papers in \[the posse’s\] possession on the morning of November 3, 1998, were bundled and placed in a barn on property owned, at least in part, by Defendant Fritz’s family.”  + +Predictably, Fritz’s scheme ended up bringing lots of attention to the very story he wanted suppressed. Fritz’s sex-offender record and his unorthodox newsgathering technique were the talk of the county by the time the polls closed. So Fritz had to answer questions about both. He went on local radio a day after the election and denied being a rapist. He told an interviewer that authorities only arrested him because he was in a “relationship” with a girl who was “one month from legal age.”  + +“I did what came natural when I was 18,” Fritz told the radio station, according to a [transcript of his 1998 post-election interview](https://www.the-chesapeake.com/2014/09/26/woman-says-forcibly-raped-states-attorney-richard-fritz-2-others/) run by *St. Mary’s Today*. “I was probably myself a virgin or close to being a virgin at the time. \[The newspaper\] says this was a gang situation. It wasn’t, but I’ll tell you this, there were several other persons out there who got themselves in trouble with the same thing. They were doing what comes natural to them, too. It would lead the public into the impression that it was a forceful act, which was complete baloney.” + +The [*Washington Post*](https://www.washingtonpost.com/archive/local/1998/11/05/newspapers-with-negative-article-disappear-on-election-eve/fb427e23-5b05-48c3-8f1c-32b952d702ae/) also reported right after the election that Fritz asserted his sexual encounter that got him the conviction was “consensual.”  + +Henning-Bailey said she had no idea *St. Mary’s Today* was going to revisit the 1964 sexual assault before the election, and Fritz did not name her in interviews he did when news of the Newspaper Caper first broke after the election. But then she heard from old friends from the county, who remembered things differently and far more nefariously than what Fritz was saying had happened. + +So Henning-Bailey called Rossignol up in early 1999 and told her story. She asked that the article about their interview in *St. Mary’s Today,* which was headlined “I Screamed the Whole Time,” include her maiden name, the one she had when she was Fritz’s victim. She wanted the people in St. Mary’s County to remember her. + +Henning-Bailey also spoke with reporter Annie Gowen of the *Washington Post*. Here’s a portion of Gowen’s brutal [*Post*](https://www.washingtonpost.com/local/who-to-believe-its-just-another-day-of-secrets-andlies-in-st-marys-county/2014/04/18/f0102da8-c709-11e3-bf7a-be01a9b69cf1_story.html) piece from June 1999 describing the gang rape: + +> The fat one went first. Then Fritz. Then the burly, acne-faced football player. +> +> “I screamed the whole time,” Bailey says. “It seemed like it lasted forever. They just held me down. I was just screaming, ‘Help me.’”  + +The national media picked up the rape and cover-up stories, too. In an interview that aired in January 2000 on ABC’s newsmagazine show *[20/20](https://www.youtube.com/watch?v=0Y-fjCyinfM)*[,](https://www.youtube.com/watch?v=0Y-fjCyinfM) Fritz repeated to correspondent Chris Wallace that the act that landed him in trouble was “consensual.” The reporter, appearing incredulous and disturbed, asked Fritz why a 15-year-old girl “would willingly have sex” with him and two others “one after another.” + +“Happens all the time,” Fritz said. “I don’t want to speak poorly of the girl but three of us had sex with her and that should speak for itself.” + +Henning-Bailey [also sat for the network show](https://www.youtube.com/watch?v=yNHUfu67okE&ab_channel=SMTLover), telling Wallace and a national TV audience how Fritz raped her as a teenager, and now was hurting her all over again with his revisionist history. + +“He makes me look like a piece of trash,” she said. “Like I’m the one who said, ‘Oh, yeah! Come on guys!’ But it wasn’t that way!” + +Henning-Bailey also told Wallace that Fritz had only been allowed to go free because he had ties to powerful people in St. Mary’s County.  + +“He should have been punished for what he did,” she said. + +Fritz told Wallace that he “assumed” Henning-Bailey only came forward with the gang rape story because she had been paid by Rossignol. Both Henning-Bailey and Rossignol denied any money was involved. Rossignol then challenged Fritz on national TV to take a lie detector test administered by the Maryland State Police to show if he’s being truthful about what happened in 1964. Fritz refused the polygraph unless Rossignol would “put up $500,000.” + +“It never was my intention to make her out to be trash,” Fritz told Wallace, as the interview’s creepiness level redlined. “But if the facts of the case are the facts of the case, then so be it.” + +Henning-Bailey told me recently she has no regrets about going public to counter the fictional account Fritz was giving to save his political career.  + +“I came forward because I had done nothing wrong,” Henning-Bailey said. “And he was lying.” + +An investigation into the midnight newspaper raid by the U.S. Department of Justice resulted in no criminal charges for Fritz or his cohorts. But Fritz did eventually get some legal comeuppance. That came when Rossignol sued Fritz and other county officials in U.S. District Court, saying that the conspiracy engineered by the prosecutor and carried out by officers of the law had violated his constitutional rights. Evidence showed that Fritz had not only been aware of the plot—he’d also financed the endeavor. The defense made a motion to have Rossignol’s suit dismissed before trial, with Fritz claiming that he was not legally liable because he had gone home after the planning meeting and hadn’t personally accompanied the sheriffs in their paper raid. + +Chief Judge James Harvie Wilkinson III of the 4th U.S. Circuit Court of Appeals unloaded on Fritz while rejecting the defense’s motion for summary judgment. Wilkinson painted Fritz and his law-enforcement pals in St. Mary’s County as out-of-control tyrants who conspired to perpetrate “errands of suppression.” The judge said the intimidation tactics used by the county prosecutor and his deputized henchmen harkened back to the lawless public servants in the Deep South in the mid-19th century during Reconstruction, whose conduct inspired the Civil Rights Act of 1871, also known as Ku Klux Klan Act.  + +A section of Judge Wilkinson’s order sending the case back for trial:  + +> “In suppressing criticism of their official conduct and fitness for office on the very day that voters were heading to the polls, defendants did more than compromise some attenuated or penumbral First Amendment right; they struck at its heart. +> +> “Here, a local sheriff, joined by a candidate for State’s Attorney, actively encouraged and sanctioned the organized censorship of his political opponents by his subordinates, contributed money to support that censorship, and placed the blanket of his protection over the perpetrators. Sheriffs who removed their uniforms and acted as members of the Klan were not immune from §1983; the conduct here, while different, also cannot be absolved by the simple expedient of removing the badge. +> +> “The incident in this case may have taken place in America, but it belongs to a society much different and more oppressive than our own. If we were to sanction this conduct, we would point the way for other state officials to stifle public criticism of their policies and their performance. And we would leave particularly vulnerable this kind of paper in this kind of community.” + +First-amendment watchdogs hailed the opinion and blasted Fritz in the wake of Wilkinson’s powerhouse ruling. Lucy Dalglish, then the executive director of the Reporters Committee for Freedom of the Press (RCFP), accused Fritz of “trying to censor” the local newspaper, and of being a big baby. + +“You would expect someone who is an elected official to be more mature than that,” Dalglish told the *Baltimore Sun*. “Elected officials can’t go around intimidating newspaper reporters who do stories that are unfavorable or unflattering.” + +Fritz appealed Wilkinson’s decision to the Supreme Court, but the high court declined to hear the case in 2003. That meant Rossignol’s suit would be sent back for trial. Instead, Fritz et al. finally settled in April 2005 by paying the *St. Mary’s Today* publisher a total of $435,000, with Fritz having to shell out $10,000 of his own money. + +“The taxpayers out there should be paying attention to the fact that one of their public employees cost them this much money,” Dalglish told *the Star-Democrat* of Easton, Md. + +All the humiliation and financial penalties notwithstanding, if Fritz’s goal was preserving his political career, it’s hard to say the Newspaper Caper was a failure. There’s no way to quantify the impact that Fritz’s conspiracy to keep his rape conviction mum until the votes had been cast had on the 1998 election. But Fritz won his first term as state’s attorney with [54 percent of the vote](https://msa.maryland.gov/msa/mdmanual/36loc/sm/elect/general/sm1998.html). And has kept the job to this day.  + +--- + +Fritz also used the sheriff’s office to go after another local who dared challenge him in the 2010 campaign.  + +This time, Fritz’s target was Leonardtown lawyer John A. Mattingly Jr. + +Mattingly had been talking for much of 2009 about taking on Fritz for the top prosecutor’s job in the next year’s election. Court records show that on September 23, 2009, Mattingly followed through and filed the official paperwork to get his name on the 2010 ballot as the Democratic Party’s candidate for state’s attorney.  + +On September 24, 2009—one day after the filing—St. Mary’s County Sheriffs [raided the Mattingly family’s home](https://www.abajournal.com/news/article/lawyer_is_charged_in_practice-related_case_brought_by_opposing_candidates_o). Court records show that at least a dozen boxes of Mattingly’s law papers were seized in the raid. Fritz, according to court documents, had provided “investigatory advice” to the sheriffs on what documents they should confiscate.  + +Mattingly was subsequently arrested and [indicted on 140 counts](https://issuu.com/countytimes/docs/2010-01-14.county.times), including land fraud and witness tampering charges, mostly related to real-estate transactions he was involved in. Mattingly would later find out that Fritz’s office had been investigating him for several months, or since around the time rumors first surfaced that he’d run for state’s attorney. + +“This is the broadest, deepest fraud I’ve ever seen,” Dan White, assistant state’s attorney for St. Mary’s County, claimed to the [*County Times*](https://issuu.com/countytimes/docs/2010-01-14.county.times), a newspaper serving Southern Maryland.  + +Fritz, alas, never proved anything close. Fritz and all St. Mary’s County prosecutors were removed from the case because of the blatant conflict of interest presented by indicting a political opponent of the boss. A special prosecutor from outside the county, Isabel Mercedes Cumming of the Prince George’s County state’s attorney’s office, was appointed to handle the case.  + +And Cumming discovered that Fritz’s office had not provided Mattingly’s attorney with all the reports from the sheriff’s department investigation that might have cleared his client. So she turned over the exculpatory evidence to the defense.  + +Mattingly’s attorney, Clarke Ahlers, who has a criminal defense practice based in Columbia, Md., told me recently that he’s still awed by the integrity Cumming showed after all the time and energy they’d spent preparing to do battle in a courtroom. + +“Isabel Cumming found a police report that was consistent with \[Mattingly’s\] innocence,” Ahlers said. “She’ll always be my hero. She had to know this piece of evidence would hurt her \[case\], and we were going at it really hard then, but she did the ethical thing.” + +Cumming then moved to drop all charges against Mattingly. + +Fritz never apologized for whatever led to Mattingly not receiving the exculpatory evidence that cratered the case against him, or even acknowledged the oddness of using the powers of his office to go after a political rival. Instead, he publicly fumed. He issued a statement that both blasted Cumming for not getting a conviction of his rival, and compared Mattingly to a famous accused murderer. + +“The prosecutor took a dive,” Fritz’s statement said. “John Mattingly will now have the distinct pleasure of joining the ranks of O.J. Simpson and a few others who have escaped justice.” + +Fritz was never sanctioned for the misdeeds that led to the failed prosecution. But at least three prosecutors in Fritz’s office quit their jobs after the Mattingly debacle, and [local newspapers attributed the mass departures](https://www.somdnews.com/archives/4-prosecutors-leave-state-39-s-attorney-39-s-of-ce/article_6a8f0316-602a-55ef-a2ef-a5734091ebad.html) to displeasure over how Fritz’s office handled the case.  + +Attorney Kenneth Haber, a former FBI agent and federal prosecutor, represented Mattingly after the September 2009 raids in a civil case in which the candidate sued St. Mary’s County in an unsuccessful attempt to get the files seized by the sheriff’s office returned before the trial. Contacted recently at his law offices in Derwood, Md., Haber said he remains dumbstruck by the level of power-drunkenness Fritz displayed in trying to crush a political rival.  + +“The whole thing drops my jaw!” Haber told me. “And I’ve seen just about everything you could see. This guy \[Fritz\] was just amazing in terms of all the shit that he could get away with. He got away with it here, too.” + +Cumming is now the inspector general for the city of Baltimore. Reached recently at her office, Cumming said she “stands by” her handling of the Mattingly case, given the hand she was dealt by Fritz.  + +“There was evidence that was never given to the defense attorney that was exculpatory that I subsequently provided,” she said. “And as a result of the review of the case I did with another assistant state’s attorney, the case was correctly dismissed by the prosecution.”  + +Mattingly wasn’t cleared until September 2010, or just two months before election day. Upon the last dismissal, Mattingly told the *Daily Record*, a Baltimore newspaper, that he and his campaign had both been bankrupted by the case.  + +In the general election, Fritz crushed Mattingly, winning re-election with 63 percent of the vote.  + +Asked recently if she’s surprised that Fritz is still in office, knowing what she knows, Cumming said: “Yes, very. Yes.” + +But after giving Fritz’s survival some thought, Cummings theorized that maybe his longevity shouldn’t surprise her or anybody, and should instead be taken as proof that the scheme paid long-term dividends for Fritz by warding off future challengers. She pointed out that in the last election for state’s attorney, in 2018, Fritz [ran unopposed](https://elections.maryland.gov/elections/2018/results/general/gen_results_2018_2_by_county_19-1.html). + +“This \[Mattingly\] case was a front-page story in the county for a long time,” she said. “People there have seen what happens to people that try to stand up to him.” + +--- + +Maryland State Police Officer Joseph Azzari was likely not the only guy to harm a child that Fritz let walk during his current term. Take the Theodore Bell case.  + +Bell was a longtime teacher in Maryland. In 2018, a former student came forward with tales of being molested by Bell when he taught at White Marsh Elementary in Mechanicsville, Md., in the 1970s.  + +Following a long investigation by the St. Mary’s County Sheriffs, Bell was charged in early 2019 with second-degree sex offense with an underage victim, perverted practice, and second-degree assault. The indictments and Bell’s arrest were reported by all major news organizations in the mid-Atlantic region, and Fritz was quoted in several of those reports saying that the teacher had “admitted to touching underage boys inappropriately.”  + +Fritz, who has said through the years that he likes to personally handle the big cases, took the Bell case himself. On August 12, 2019, Fritz presented the county court with a plea deal he’d worked out with Bell. That deal asked Bell to plead guilty to just one count of second-degree assault, a misdemeanor. All the other charges related to sexual assaults of a minor would be dropped. Bell would not be compelled to register as a sex offender. The prosecutor and defense told Circuit Court Judge Michael Stamm they agreed that the defendant’s age (73 years old) and physical frailty made incarceration difficult, so under the deal Bell would likely get no jail time.  + +After hearing the proposed plea agreement, according to coverage in *Southern Maryland News*, Judge Stamm asked Bell’s primary accuser if he was satisfied with the deal Fritz had offered. The victim said that Fritz had led him to believe there would be a trial, and that he was blindsided and completely dissatisfied with Fritz’s deal. He told Stamm that as an 11-year-old boy he was “sodomized” by an adult he trusted, and that letting Bell off with one misdemeanor count and no jail time would not reflect the crime.  + +“He did not consider my health issues or my age when he raped me,” the victim, who was not named in news reports, told the judge, according to the *Southern Maryland News*. “He had no mercy on me.” + +Judge Stamm then announced that he was “uncomfortable” accepting Fritz’s deal and would not move forward with sentencing. The judge vacated the deal and said Bell should go to trial.  + +But that trial never happened. *Southern Maryland News* learned in December 2019 that Fritz had quietly dropped all charges against Bell shortly after his plea deal was tossed out of court. + +Wayne Williams recently told Defector that he was the unnamed victim who spoke up in court against the deal Fritz offered Bell. Williams said he had come forward a year earlier, and was impressed at the thoroughness of the investigation the county’s investigators conducted. Williams said he was sure that Fritz was aware of at least one other victim of Bell who’d also told his tale to investigators.  + +“They knew everything. Fritz knew everything,” Williams told me recently. “I was shocked. I told the judge I never heard anything from Fritz about any plea bargain. I don’t know why he didn’t go to trial. I don’t know if \[Fritz\] is lazy or \[the settlement offer\] was a favor for somebody. Nobody asked for my input on it. This wasn’t a \[simple\] assault. This was a sexual assault!” + +Williams said that Fritz “glared at” him but refused to speak to him as they left the courtroom after the hearing. He said during the walk outside the prosecutor muttered to others around him about how angry he was at Williams about what happened before Judge Stamm.  + +“You could see how mad Fritz was with me, like I’d shown him up,” Williams said. “And he got vindictive.”  + +Williams said he never heard from Fritz again about the case. Fritz wouldn’t respond to messages, Williams said. And then when he’d called the court clerk’s office to find when Bell’s trial would be held, he was told that there would be no trial. + +“Fritz turned on me, and just let the man go,” Williams said. “I couldn’t believe he’d just let him go.”  + +The December 2019 report from the *Southern Maryland News* about Fritz’s dismissing all charges repeated that the prosecutor had already declared that Bell confessed to molesting his accusers. But Fritz asserted that he didn’t think as a prosecutor he could overcome the victims not reporting their assaults sooner.  + +“The question in the jury’s mind is,’How come \[Williams\] didn’t say anything?’” Fritz told the newspaper. + +Williams said that he and his family contacted folks in the St. Mary’s County state’s attorney’s office and the state’s attorney general’s office in Annapolis to see if he and Bell’s other victims had any legal options after Fritz abandoned their case. Those talks went nowhere; Fritz was the decider. + +“Everybody told me there was nothing I could do once he dropped the charges,” Williams said. “He has all the power in the county.”  + +One of the people the Williamses contacted was Jaymi Sterling, who had been working for Fritz for just about a decade, and rose to be St. Mary’s County deputy state’s attorney. They knew that Sterling was the daughter of Maryland governor Larry Hogan and hoped that might have some sway. Sterling was aware that Fritz had botched the Bell case. But by October 2020, when a sister of Williams reached out to Sterling, it was too late for her to get involved. + +A month earlier, Sterling had resigned from her job at the state’s attorney office, and had taken the odd step of putting out a press release explaining her departure. Sterling’s statement identified Fritz not by name, but only as “the state’s attorney.” But her memo left no doubt what she thought about the county’s top prosecutor. Sterling wrote that when she brought up the wrongs she’d witnessed to Fritz, he “immediately demoted” her. So she had to quit. + +“I am sad that I have no choice but to resign,” Sterling wrote. “I am hopeful my resignation is a touchpoint to start a culture change in the State’s Attorney’s Office that makes it more accountable to the citizens of St. Mary’s County.” + +Fritz lashed out. In June 2021, Wayne Jordan, a county resident who was in prison on [armed-robbery charges](https://www.somdnews.com/enterprise/crime_and_courts/hold-up-man-sentenced-to-20-years/article_cb6186fc-050f-5159-b17a-b588c9f231ff.html) after Sterling had successfully prosecuted him, petitioned the state for a new trial. Fritz’s office subpoenaed Sterling as a witness in the case. Sterling was already working by then as a prosecutor for Anne Arundel County, as Fritz was well aware. For privacy and safety reasons, normal decorum would be to serve a witness with the subpoena at a work address or via an email invite, particularly in violent crime cases. But the subpoena from Fritz’s office called for Sterling to be served at home, putting her private home address in the case file. Sterling, who regarded Fritz’s tactic as a “doxxing” and an attempt to intimidate her into not talking any more about her former boss, petitioned the Maryland attorney general’s office to remove her home address from the record. It was removed. + +After that incident Sterling apparently tired of feeling powerless to stop Fritz: In March 2022, Sterling [filed to get her name on the ballot](https://thebaynet.com/jaymi-sterling-exploring-a-bid-for-st-marys-county-states-attorney/) for St. Mary’s County state’s attorney. She’s running as a Republican to put her old boss out of work.  + +--- + +Three days before Peyton Ham was killed, legislators in Annapolis overrode Gov. Larry Hogan’s veto of the [Maryland Police Accountability Act of 2021](https://www.wbaltv.com/article/maryland-lawmakers-override-govenor-larry-hogans-veto-on-major-police-reform-bills/36081700#).  + +The ambitious package of police reforms included a provision to [establish a task force inside the state’s attorney general’s office](https://www.police1.com/legal/articles/maryland-police-reform-laws-begin-J98tbry891CJeDJn/) that could take over investigations of cases where cops kill civilians anywhere in Maryland. The lawmakers intended to prevent situations where a police department controls the investigation into one of its own officers.  + +The reform measure, however, didn’t go into effect until October 2021, about six months after Joseph Azzari killed Ham. And so the Maryland State Police, with Fritz’s blessing, remains the only agency that investigated Azzari.  + +No video of the killing has surfaced. The state police say Azzari was not wearing a body cam when he drove to Ham’s house in response to 911 calls of somebody “acting suspicious” who the caller “thinks has a gun.” (Police later determined that Ham had placed the 911 calls himself. ) The Maryland Police Accountability Act will eventually mandate that all state police officers be equipped with body cams, but that provision won’t kick in until 2023. Azzari’s police SUV was equipped with a dashboard camera, but, according to the state police reports, Azzari never activated the siren or police lights on the vehicle, so the dash cam was never activated. Azzari told investigators he left the siren and lights off “for tactical reasons.” + +So Azzari is the only person alive to know what happened when he arrived on the scene. Police reports say Azzari said that as he got out of his SUV, he saw Ham walking toward him from his front lawn and pointing a gun at him. Police later said Ham actually had an airsoft gun, a non-lethal toy that shoots plastic pellets.  + +An audio-only recording of the incident captured by a nearby home security system, combined with a photograph taken by a neighbor, witness accounts, police reports, autopsy results, bloodstains and other evidence from the scene, indicate that Azzari fired his 9mm Glock service weapon 11 times over seven seconds early in his encounter with Ham. Three of those shots struck Ham in the arms and a shoulder, while several others hit houses across the street. Azzari then waited about a minute before firing the last four bullets in his gun into Ham’s torso and neck, killing him. + +“The clip in his gun holds 15 bullets,” said Mike Boyle, Ham’s father. “As far as we can tell he only stopped shooting because he ran out of bullets.” + +Jean Kenney Combs lives across the street from Ham’s house. She said she didn’t know Ham’s family but knew of the teen because he and her daughter were the same age and they’d been riding school buses together for years. “They didn’t hang out, but she spoke highly of Peyton,” Combs said. Just before the killing, Combs was in front of her garage when she heard several seconds of “loud mumbling” coming from Ham’s property. She said her sightline across the street was obstructed by vehicles, bushes, and trees, so she started to move down her driveway toward the noise to improve her view. She didn’t get far. + +“Somebody yelled ‘Fuck you!’ clear as day. And the firing started immediately,” Combs said. “Just so rapid and quick, a lot of gunfire. And it turns out I was dodging bullets.”  + +At least three shots hit Combs’s garage. She said her immediate thought was that the screamed expletive and the gunfire were aimed at her. She ran to the front door of her home, and was screaming for her daughter inside to hit the floor just as the firing stopped. But about a minute later, as she and her daughter stood up after taking cover, the blasts started again. By the end of the day, they had learned they were listening to the killing of her daughter’s classmate. + +Combs said she still “can’t say for sure” if it was Azzari or Ham who yelled the expletive before the gunfire. But she described it as “the voice of an adult male.” + +Combs said she was ignored by investigators, and remains angered by Richard Fritz’s lack of curiosity about what she went through. She thought perhaps the angry screams could help explain the officer’s emotional state. She also figured the damage done by the wayward bullets that hit her garage, which was measured at more than 350 feet away from where Ham died, would have been of interest to the prosecutor. She later found out another neighbor’s front window, more than 450 feet from where Azzari was shooting, was hit by another wild shot. To Combs, Azzari’s spraying the neighborhood with gunfire showed either a complete lack of training or an utter disregard for human lives, or both. Combs said she didn’t speak with her neighbors across the street while waiting to hear from Fritz, thinking she didn’t want her memories tainted by others’ recollections. But Fritz never reached out. + +“Nobody \[from Fritz’s office\] called me to see what I knew,” she said. “I had to keep calling to ask to talk before the grand jury.”  + +When Defector spoke with Combs, Azzari’s bullets were still embedded in her garage.  + +The loud report of Azzari’s first 11 shots caused Michelle Mills to run to a bedroom window inside their home, located next door to Ham’s house. Her daughter, Allison, was at home that day and ran to the same window after hearing the gunfire. Michelle Mills said she saw Ham, whom she only knew as “the kid next door,” kneeling in her gravel driveway with Azzari standing over him. She took a cellphone photo at the window that shows Ham on his knees with blood pouring down his right forearm from bullet wounds from Azzari’s opening salvo. In the photo Azzari is standing over Ham. Ham is not holding the toy gun and appears to have nothing in his hands in the photo. A St. Mary’s County sheriff’s deputy’s car, with its lights flashing, can be seen in the background, so Azzari knew back-up would be arriving imminently.  + +![](https://lede-admin.defector.com/wp-content/uploads/sites/28/2021/10/Screen-Shot-2021-10-15-at-1.17.34-PM.png?w=710)**Credit:** Courtesy of the Raley Family + +A zoomed-in version of Mills’s photo. + +Michelle Mills said Azzari was circling the kneeling teen and yelling repeatedly to “show” him a knife, and that she thought Ham took something small out of his pocket with his left hand to comply. Police said a pocketknife with a 2.5 inch blade was found on the scene. The time stamps on the photo, combined with the time stamps from the home security system audio and the location of shell casings on the scene, indicate that about 40 seconds after Michelle took the photo Azzari stepped back to more than 10 feet away from Ham and opened fire again. She said Ham never got off his knees the whole time she was watching, and that he was still on his knees when Azzari fired the final four shots.  + +“Peyton was on his knees and obviously wasn’t a threat,” Allison Mills said. “What I saw, from start to finish, was just appalling.” + +Both Michelle and Allison Mills said Fritz showed no interest in talking to them, even after Michelle turned over her photo to the police. Both say they were told by Fritz’s office that the prosecutor would rely on conversations with Michelle that the state police had recorded without her knowledge immediately after the shooting. Allison Mills’s name does not even appear on the list of witnesses that was released by Fritz in his report exonerating Azzari, even though she watched Ham die. The mother and daughter each told Defector separately last fall that Fritz’s failure to charge Azzari did not change their opinion of what they witnessed.  + +“Peyton was murdered in my driveway,” Michelle Mills said. + +Ham’s grandmother, Victoria Boyle, also witnessed the killing. She lives in a home on the same property as Ham’s house, and can be seen in the background of the photo Mills took of Ham. She told Defector that her grandson was on his knees the whole time. Victoria Boyle, who is in her 80s, said that the state police officers at the scene “interrogated” her for hours after the killing. She said they continued insisting that she saw things she didn’t see, and repeatedly attempted to get her to say Ham was threatening Azzari when he was killed.  + +“The first time the detectives threw that at me, it was, ‘What would you say … if I told you we had witnesses that saw Peyton lunge?’” she said. “But I said, ‘I don’t know who your witnesses are but there was no lunge, nothing that could even be perceived as a lunge.’ It wasn’t possible. It didn’t happen.” + +Mike Boyle, Ham’s father, said that from the start Fritz stalled or outright prevented the release of public documents related to Ham’s killing. Ham’s family said that months ago Fritz stopped taking their calls or even responding to their calls or requests for documents. The refusal to let the family see his son’s autopsy was the most galling, Boyle said. He gave Defector copies of four form letters the family received from the Maryland Office of the Chief Medical Examiner rejecting his family’s request for copies of the autopsy. The excuse for keeping the document private was the same in each: “This case is associated with an ongoing investigation.” Two of the rejection letters were written several months after Fritz publicly closed the case in October 2021. Mike Boyle said the clerk in the medical examiner’s office told him Fritz still wouldn’t authorize the release of the autopsy.  + +Kristee Boyle said the family obtained a partial autopsy report and hundreds of pages of police reports from an unnamed staffer with the St. Mary’s Sheriff’s Department. She said that after months of blanket rejections to every request, the staffer gave them a “document dump” of records. + +![](https://lh6.googleusercontent.com/Wc3VhnHgO1rFN616UgIpHB5hGpYmLj4BmNWTDKM2s5zUTUOd9-6slfdgcv_t2zXLaqoDSoL8aGqEeaGmJyCGJ4gx_9ILcMQTU_uYC9tVZMdmGiPgugwBYFKkkseszhoOdM2yw10KX6vb9qWygw) + +The preliminary autopsy report shows that the coroner determined that the bullets that entered Ham’s arms and left shoulder, which came during the first 11 shots from Azzari, were traveling “slightly upward.” The Boyles say their son was 6-foot-1. They also say they were told that Azzari is approximately 5-foot-8-inches tall, but Azzari’s height is not included in any police reports I’ve seen. However, police reports say Azzari cited Ham’s size advantage by way of justifying the use of deadly force on the teen. It would make sense that the shots with an upward trajectory would come when both the officer and the teenager were standing up. Azzari told investigators that Ham went to the ground after the first 11 shots.  + +The report also says that the state medical examiner’s office concluded that the shots to the neck and torso, from Azzari’s final, fatal salvo, traveled “downward” through Ham’s body. The Boyles are convinced this shows their son was killed while on his knees, just as witnesses have said, and not as Ham stood up and “charged” at his killer, as only Azzari has claimed. + +“After what we know about what \[the coroner\] found, I think we know why Fritz doesn’t want us to see the autopsy,” Mike Boyle said.“How do you not take that into account if you’re the DA?”  + +The document dump from the sheriff’s department also included video recordings made by body cams worn by sheriff’s deputies who arrived on the scene after the shooting. (St. Mary’s County Sheriff’s deputies, unlike Maryland State Police, are required to wear body cams.) Kristee Boyle said that despite the devastating contents, her family has reviewed the body cam footage repeatedly over and over, in search of any morsel that might help them figure out what happened.  + +“Mike’s watched every minute of what we got,” she said. + +The videos, some taken less than a minute after Azzari’s final shots, capture Ham taking the labored last breaths an oxygen-deprived brain reflexively coaxes out of a dying human’s lungs—Mike Boyle tells me he learned the medical term for the horror he watched is “agonal gasps.” Kristee Boyle asked if I would look at some of what she’d seen, and I said I would. She gave me screengrabs showing her mortally wounded son laying facedown, his body twisted in the bloodstained gravel.  + +For all the horrors, however, the screenings have convinced the Boyles even more that, just as Mills said, their son was murdered. She directed me to look at the bushes near his body. + +“Peyton’s body is right where he was in the \[Mills\] photograph. You can tell from the bushes it’s the same place,” she said. “He didn’t get up and charge anybody. He wouldn’t be in the same place if he did.”  + +The St. Mary’s County Office of the Sheriff rejected Defector’s request for body cam footage. Clayton Safford, PIO for the county sheriff, said the video wouldn’t be released because “Peyton Ham was a juvenile” and under the Maryland Public Information Act that means the records cannot be released. According to an attorney with the Reporters Committee for the Freedom of the Press, however, the Maryland records law cited by Safford is not applicable in this situation. The law was written to protect minors, the RCFP attorney said, and not to prevent the release of documents related to the killing of children by police officers. + +--- + +Carla Henning-Bailey still lives in Pennsylvania. She told me recently that after the Newspaper Caper tumult died down she went back to trying not to think about Fritz or anything that happened in St. Mary’s County. That explains why, when I asked her if she was surprised that Fritz, about 20 years after he was exposed as a sex offender and compared to a klansman by a federal judge, was running yet again for re-election she responded with shock.  + +“He’s still there? You’ve got to be kidding me!” Henning-Bailey said. “When I came forward, I wanted them to throw that trash out. I guess that didn’t happen. I guess people are just afraid.” + +Fear isn’t in short supply in St. Mary’s County these days. A cousin of Peyton Ham told me recently about being pulled over around midnight some months ago by a state trooper. The trooper told her he’d seen her roll through a four-way stop intersection without stopping. She said that as she was listening to the trooper and looking in her wallet for her driver’s license and registration, she was wondering whether it’d be worth telling him that she really thought she’d come to a full stop. She changed her mind as soon she handed over the requested documents and realized who’d pulled her over. + +“It was *him*,” she said. “I couldn’t believe it.” + +She’d encountered Joseph Azzari. “Seeing the face of the last person that my cousin saw alive, the person who took his life, was devastating,” she said. “I was shaking.” + +She noticed Azzari’s gun, too. + +She said that she composed herself enough to tell Azzari that he killed her cousin. Azzari went back to his car after giving her a warning. That’s a more severe sanction than Fritz ever gave the cop for emptying his gun into a teenager who witnesses say was on his knees.  + +At the end of our conversation, Ham’s cousin requested that her name not be used in this story. I asked why.  + +“I’m afraid,” she said. + +The primary for St. Mary’s County state’s attorney will be [decided on July 19](https://www.somdnews.com/enterprise/news/local/st-marys-county-candidates-for-the-2022-primary-election/article_10d23ab8-9ba0-5838-be6e-8fda4cace579.html).  + +*Correction: A previous version of the story inaccurately said that Richard Fritz’s opponent in the 2010 campaign, John A. Mattingly Jr., previously worked alongside Fritz as a prosecutor in the St. Mary’s County state’s attorney’s office. Actually, it was Fritz’s opponent in the 1998 campaign, Joseph A. Mattingly Jr., who previously worked alongside Fritz as a prosecutor in that office.* + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/The Holy Anarchy of Fun.md b/00.03 News/The Holy Anarchy of Fun.md new file mode 100644 index 00000000..1d275633 --- /dev/null +++ b/00.03 News/The Holy Anarchy of Fun.md @@ -0,0 +1,75 @@ +--- + +Tag: ["Human", "Philosophy", "Hedonism"] +Date: 2022-07-10 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-07-10 +Link: https://www.commonsense.news/p/the-holy-anarchy-of-fun +location: +CollapseMetaTable: Yes + +--- + +Parent:: [[@News|News]] +Read:: [[2022-07-11]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-TheHolyAnarchyofFunNSave + +  + +# The Holy Anarchy of Fun + +[![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0eb0378a-61e5-4f32-b3bd-e46243e05f74_2200x1500.jpeg)](https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0eb0378a-61e5-4f32-b3bd-e46243e05f74_2200x1500.jpeg) + +Fun: the other communicable illness! (Fiona Hanson/PA Images via Getty Images) + +***No writer stokes more consistent envy among Common Sense editors than Walter Kirn. Two of his essays from last year—[The Bullshit](https://walterkirn.substack.com/p/the-bullshit) and [The Power and the Silence](https://walterkirn.substack.com/p/the-power-and-the-silence)—got our vote for the best of 2021. But we never miss anything he writes.*** + +***You might know Kirn’s name from his novels, including “Up in the Air” and “Blood Will Out.” We hope you’ll love his debut piece for us as much as we do. — BW*** + +So, a little late as always, because I like my pop culture to ferment some before I swill it down, I saw the sequel to *Top Gun*. I attended the movie in a theater equipped with so-called “4DX” technology. I didn’t know what this was when I chose my tickets on my phone. I learned it cost more to watch the film this way and, since I see so few movies in cinemas—and because inflation has made me lazy about trying to save money that’s growing worthless—I thought I’d try it out. + +I assumed it involved a wider screen or something. Maybe crisper sound. Not close. I learned when my wife and I sat down that 4DX is a suite of crude effects which include simulated wind from fans, squirting water, and seats that rock and vibrate. This commotion is linked to the drama up on screen, but confusingly so at times. For example, in the flying scenes vigorous gusts were directed at our faces despite there being no such turbulence inside the sealed cockpits of zooming fighter jets. The scenes which featured water—one set on a beach, another on a sailboat—seemed less than vital to the story and were maybe just there to exploit the squirting tech.  + +I feared my wife would hate all this. Amanda has nerves like needles. But when the seats went wild she laughed and when the water sprayed she shrieked. It helped that the story wasn’t hard to follow and easily absorbed these interruptions. The theme of the movie also harmonized with the rattling, spraying, blowing mayhem. “Don’t think. Do,” Tom Cruise kept telling the kids, the kids being younger, less experienced pilots and, in their real lives, budding celebrities, which gave them good reason to heed his Zen-style wisdom in case it applied to becoming famous too. Tom Cruise is a marvel of advanced self-care and seems to be aging in reverse. Whatever his mantra is, one wants to know it, and when he repeats it several times as though he’s afraid you’ll forget it, you try not to. “Don’t think. Do.” And then the water droplets hit your face, shocking you into enlightenment like the loud hand-claps of a Buddhist monk.  + +Life is rich enough, even in short stretches, that you can apply to it any proverb you wish and find supporting evidence close at hand. Amanda was smiling as we left our seats and crossed the candy- and Lysol-scented lobby, passing a poster of Cruise wearing a flight suit. His image stirred in me a sense of gratitude. + +One reason I had to be thankful was that Amanda had been feeling sad about the world, yet here she was bouncing along on gummy carpet, her hair still mussed from artificial tempests. “I think it was all about aging and masculinity,” she observed as we exited onto the sidewalk. I nodded but offered no theory of my own, which is rare for me after a show. I happened to know the movie was controversial in certain thoughtful circles, derided as too patriotic and nostalgic, but I decided to take it as it was, perhaps as a way of snubbing these woke drones. My wife was no longer grim, that’s all I cared about. The shaking seats, fast jets, and grinning movie star had cleansed her system of a long winter heralded by our downbeat president as a season of “severe illness and death.”  + +After such prophecies, people can use some fun.  + +Fun—when your rulers would rather you not have it, and when the agents of social programming insist on stirring nonstop apprehension over the current crisis and the next one, the better to keep you submissive and in suspense—is elementally subversive. Fun is ideologically neutral, advancing and empowering no cause. Fun is self-serving and without ambition. It wishes only to be. It produces nothing for the collective and may represent a withdrawal from the collective, temporarily at least. Your fun belongs to you alone. + +But what do I mean by “fun”? I’m not quite sure. I don’t mean “pleasure” in the old sense, which usually is associated with eroticism or sensuality, and I don’t mean “play,” which tends to refer to structured games. But fun, as such, is not competitive. No one wins at it. Nor is fun the ‘leisure” of the ancients, which one is supposed to spend in contemplation or civic engagement or other worthy pursuits. I mean something bouncier, simpler, more mundane, a feeling of antic stimulation, the opposite of seriousness. Often there is risk involved in fun. Manageable, perhaps simulated risk. You round a tight curve in a sports car that can handle it. You careen down a snowy hill in a red saucer sled. Sometimes you take a tumble or scrape a knee. Sometimes you scream—a laughing sort of scream. + +One thing I learned early about fun is that having it on command is hard. Fun is a child of accident and chaos, resistant to authority’s guiding hand. In grade school one day, in gym class, an eager teacher directed us to unfold a giant blue parachute obtained though some foundation or organization that wished to shape our childhood development. (These high-minded programs were easy to detect and often involved free movies with corporate sponsors.) After the parachute was all spread out, we stood in a circle and grasped its silky hem. Our teacher said, “Let’s have fun cooperating!” + +On her order, we lifted our little arms in unison and the parachute billowed upward toward the ceiling like some sort of puffed up monster of the deep. Then we were asked to step backwards and stretch it taut. A series of such exercises ensued, each of them supposedly remarkable and meant to prove the virtue of group effort. The teacher kept laughing as though in celebration, inviting us to join in her delight, but only the fearful ones among us obliged her. I felt bored, coerced, and isolated. But that’s not how I felt another time at school, when a classroom hamster escaped its cage and scurried here and there under our desks as we scrambled and sprawled and tried to grab it, afraid it might nip us if we did. Now that was fun! For the hamster too, I hope. + +We live in a rule-bound era of high vigilance. It’s a time of emergency measures and vast decrees, of curbs on expression, behavior, and even movement. They are portrayed as serving the common good and some people obey them in this spirit, others so they can be seen obeying them. Fun, with its little anarchies, is suspect. It’s regarded as selfish, wasteful, perhaps unsanitary. To some degree, it always has been this way here, at least since the frowning pilgrims came ashore. “Puritanism: The haunting fear that someone, somewhere, may be happy,” wrote the cigar-sucking cynic HL Mencken.  How else to explain the mentality of leaders who thought to combat a respiratory virus by dumping tons of sand from front-end loaders into a seaside California skate park? + +I asked a philosopher and critic, my friend Ivan Kenneally, what the sages have said about fun as I’ve defined it. + +“I’m very tempted—and I’m riffing here—to say this is a very modern category. Off-the-cuff hypothesis: classically, talk of the smiling embrace of danger is martial. Nothing like thrill-seeking for its own sake. A deficit of martial adventure, combined with a loss of transcendent purpose, means a need to willfully induce a feeling of being alive, to yank oneself from a numb slumber.” + +Numb slumber is an apt description of the reigning mood of recent times. Much of this slumber was induced by policies which fostered inactivity and solitude using much the same patriotic rhetoric applied to physical fitness and group play during my Cold War childhood. “Let’s have fun cooperating—separately!” The key to this war on thrills and spontaneity was shutting down or subjecting to tight controls the spaces where fun was free to happen: playgrounds, theaters, even the open ocean, from which surfers were called back to the beach, in scenes caught on video and widely shared, by uniformed anti-joy patrols. Have fun, get sick. Get others sick. Fun, the other communicable illness. What else was the anxious hive mind to conclude? And while the worst of these strictures have been relaxed, tense and inhibiting memories remain.  + +Fun is abandonment. “Don’t think. Do.” It’s a form of forgetting, of looseness and imbalance, which is why it can’t be planned and why it threatens those who plan things for us. Fun is minor chaos enjoyed in safety and most genuine when it comes as a surprise, when water from hidden nozzles hits your face or when the class hamster, that poor imprisoned creature, has finally had enough and flees its cage. + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/01.01 Life Orga/@Finances.md b/01.01 Life Orga/@Finances.md index 695cd601..68ea707e 100644 --- a/01.01 Life Orga/@Finances.md +++ b/01.01 Life Orga/@Finances.md @@ -116,7 +116,8 @@ hide task count   -- [ ] :heavy_dollar_sign: [[@Finances]]: update crypto prices within Obsidian 🔼 🔁 every month on the 2nd Tuesday 📅 2022-07-12 +- [ ] :heavy_dollar_sign: [[@Finances]]: update crypto prices within Obsidian 🔼 🔁 every month on the 2nd Tuesday 📅 2022-08-09 +- [x] :heavy_dollar_sign: [[@Finances]]: update crypto prices within Obsidian 🔼 🔁 every month on the 2nd Tuesday 📅 2022-07-12 ✅ 2022-07-10 - [x] [[@Finances]]: update crypto prices within Obsidian 🔼 🔁 every month on the 2nd Tuesday 📅 2022-06-14 ✅ 2022-06-14 - [x] [[@Finances]]: update crypto prices within Obsidian 🔼 🔁 every month on the 2nd Tuesday 📅 2022-05-10 ✅ 2022-05-07 - [x] [[@Finances]]: update crypto prices within Obsidian 🔼 🔁 every month on the 2nd Tuesday 📅 2022-04-12 ✅ 2022-04-11 diff --git a/01.02 Home/@Main Dashboard.md b/01.02 Home/@Main Dashboard.md index 9b25cf32..61d80c39 100644 --- a/01.02 Home/@Main Dashboard.md +++ b/01.02 Home/@Main Dashboard.md @@ -48,11 +48,62 @@ id Save   -
not found: ⛅️ 🌡️-9°C 🌬️↖4km/h +
not found: ☀️ 🌡️+12°C 🌬️↘4km/h
  + +```dataviewjs +const today = DateTime.now() +const endOfYear = { + year: today.year, + month: 12, + day: 31 +} + +const lifespan = { year: 85 } +const birthday = DateTime.fromObject({ + year: 1984, + month: 7, + day: 7 +}); +const deathday = birthday.plus(lifespan) + +function progress(type) { + let value; + + switch(type) { + case "lifespan": + value = (today.year - birthday.year) / lifespan.year * 100; + break; + case "year": + value = today.month / 12 * 100 + break; + case "month": + value = today.day / today.daysInMonth * 100 + break; + case "day": + value = today.hour / 24 * 100 + break; + } + return ` | ${parseInt(value)} %` +} + + +dv.span(` +| | | | +| --- | --- |:---:| +| **Life** | ${progress("lifespan")} +| | | +| **Year** | ${progress("year")} +| **Month**| ${progress("month")} +| **Day**| ${progress("day")} +`) +``` + +  + # Main dashboard   diff --git a/01.02 Home/Household.md b/01.02 Home/Household.md index c0cd9edd..c42a8cb1 100644 --- a/01.02 Home/Household.md +++ b/01.02 Home/Household.md @@ -84,7 +84,8 @@ This section on different household obligations. - [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-02-15 ✅ 2022-02-14 - [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-02-01 ✅ 2022-01-31 - [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-01-18 ✅ 2022-01-17 -- [ ] ♻ [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-07-12 +- [ ] ♻ [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-07-26 +- [x] ♻ [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-07-12 ✅ 2022-07-10 - [x] ♻ [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-06-28 ✅ 2022-06-27 - [x] ♻ [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-06-14 ✅ 2022-06-10 - [x] ♻ [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-05-31 ✅ 2022-05-30 @@ -104,7 +105,9 @@ This section on different household obligations. - [ ] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France 🔁 every month on the last Saturday 🛫 2022-07-04 📅 2022-07-30 - [x] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France 🔁 every month on the last Saturday 🛫 2022-05-30 📅 2022-06-25 ✅ 2022-06-24 -- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-07-11 +- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-07-25 +- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-07-18 ✅ 2022-07-15 +- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-07-11 ✅ 2022-07-10 - [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-07-04 ✅ 2022-07-02 - [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-06-27 ✅ 2022-06-24 - [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-06-20 ✅ 2022-06-20 diff --git a/01.03 Family/Jacqueline Bédier.md b/01.03 Family/Jacqueline Bédier.md index 1542e166..cc223351 100644 --- a/01.03 Family/Jacqueline Bédier.md +++ b/01.03 Family/Jacqueline Bédier.md @@ -98,7 +98,8 @@ style: number   -- [ ] :birthday: **[[Jacqueline Bédier|Bonne Maman]]** 🔁 every year 📅 2022-07-13 +- [ ] :birthday: **[[Jacqueline Bédier|Bonne Maman]]** 🔁 every year 📅 2023-07-13 +- [x] :birthday: **[[Jacqueline Bédier|Bonne Maman]]** 🔁 every year 📅 2022-07-13 ✅ 2022-07-13     \ No newline at end of file diff --git a/01.03 Family/Opportune de Villeneuve.md b/01.03 Family/Opportune de Villeneuve.md index 8e6300f7..a044edd6 100644 --- a/01.03 Family/Opportune de Villeneuve.md +++ b/01.03 Family/Opportune de Villeneuve.md @@ -98,7 +98,8 @@ style: number   -- [ ] :birthday: **[[Opportune de Villeneuve|Opportune]]** 🔁 every year 📅 2022-07-14 +- [ ] :birthday: **[[Opportune de Villeneuve|Opportune]]** 🔁 every year 📅 2023-07-14 +- [x] :birthday: **[[Opportune de Villeneuve|Opportune]]** 🔁 every year 📅 2022-07-14 ✅ 2022-07-14 - [x] :birthday: Opportune 🔁 every year 📅 2021-07-14 ✅ 2021-10-01   diff --git a/02.03 Zürich/@Restaurants Zürich.md b/02.03 Zürich/@Restaurants Zürich.md index baf2e84f..a4c3d621 100644 --- a/02.03 Zürich/@Restaurants Zürich.md +++ b/02.03 Zürich/@Restaurants Zürich.md @@ -141,6 +141,14 @@ dv.view("00.01 Admin/dv-views/query_place", {country: "CH", placetype: "Restaura ```dataviewjs dv.view("00.01 Admin/dv-views/query_place", {country: "CH", placetype: "Restaurant", area: "Industriequartier"}) ``` +  + +#### Wipkingen +[[#^Top|TOP]] +```dataviewjs +dv.view("00.01 Admin/dv-views/query_place", {country: "CH", placetype: "Restaurant", area: "Wipkingen"}) +``` +   diff --git a/02.03 Zürich/Daizy.md b/02.03 Zürich/Daizy.md new file mode 100644 index 00000000..a3eb2ed2 --- /dev/null +++ b/02.03 Zürich/Daizy.md @@ -0,0 +1,96 @@ +--- + +Tag: ["Healthy", "Vegan"] +Date: 2022-07-16 +DocType: "Place" +Hierarchy: "NonRoot" +TimeStamp: +location: [47.3631314,8.5123238] +Place: + Type: Restaurant + SubType: Healthy + Style: Modern + Location: Wiedikon + Country: CH + Status: Tested +CollapseMetaTable: yes + +--- + +Parent:: [[@@Zürich|Zürich]], [[@Restaurants Zürich|Restaurants in Zürich]] + +  + +`= elink("https://waze.com/ul?ll=" + this.location[0] + "%2C" + this.location[1] + "&navigate=yes", "Launch Waze")` + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-DaizySave + +  + +# Daizy + +  + +```ad-abstract +title: Summary +collapse: open +Note Description +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Contact + +  + +```ad-address +~~~ +Räffelstrasse 28 +8045 Zürich +Switzerland +~~~ +``` + +  + +Phone:: 043 333 03 28 + +Email:: [info@daizy.ch](readdle-spark://compose?recipient=info@daizy.ch&subject=Reservierung) + +Website:: [Daizy](https://daizy.ch/) + + +  + +--- + +  + +### Notes + +  + +Tested with [[MRCK|Meggi-mo]] on [[2022-07-15|15th July 2022]]. + +  +  \ No newline at end of file diff --git a/02.03 Zürich/Modo.md b/02.03 Zürich/Modo.md new file mode 100644 index 00000000..57c7e046 --- /dev/null +++ b/02.03 Zürich/Modo.md @@ -0,0 +1,95 @@ +--- + +Tag: ["Fresh"] +Date: 2022-07-16 +DocType: "Place" +Hierarchy: "NonRoot" +TimeStamp: +location: [47.3953343,8.5183082] +Place: + Type: Restaurant + SubType: Pizza + Style: Italian + Location: Wipkingen + Country: CH + Status: Visited +CollapseMetaTable: yes + +--- + +Parent:: [[@@Zürich|Zürich]], [[@Restaurants Zürich|Restaurants in Zürich]] + +  + +`= elink("https://waze.com/ul?ll=" + this.location[0] + "%2C" + this.location[1] + "&navigate=yes", "Launch Waze")` + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-ModoSave + +  + +# Modo + +  + +```ad-abstract +title: Summary +collapse: open +Note Description +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Contact + +  + +```ad-address +~~~ +Breitensteinstrasse 14 +8037 Zürich +Switzerland +~~~ +``` + +  + +Phone:: +41 77 431 47 58 + +Email:: [kontakt@modo.fm](readdle-spark://compose?recipient=kontakt@modo.fm&subject=Reservierung) + +Website:: [Modo](https://www.modo.fm/) + +  + +--- + +  + +### Notes + +  + +Tested with [[MRCK|Meggi-mo]] on [[2022-07-16|16th July 2022]]. + +  +  \ No newline at end of file diff --git a/04.01 lebv.org/Hosting Tasks.md b/04.01 lebv.org/Hosting Tasks.md index 4035e019..b71c96bf 100644 --- a/04.01 lebv.org/Hosting Tasks.md +++ b/04.01 lebv.org/Hosting Tasks.md @@ -72,8 +72,10 @@ Tasks and potential enhancements for the webhosting of lebv.org - [x] [[Hosting Tasks|Hosting]]: Explore the possibility to [[Hosting Tasks#Self-hosting|self-host]] ✅ 2021-09-16 - [ ] [[Hosting Tasks|Hosting]]: Explore the possibility of webhosting through [[Hosting Tasks#Decentralised hosting|decentralised services]] (Blockchain) 📅 2023-12-31 -- [ ] [[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files 🔁 every 3 months on the 1st Wednesday 📅 2022-07-14 -- [ ] [[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|check the PHP version]] server-side 🔁 every 3 months on the 1st Wednesday 🛫 2022-01-14 📅 2022-07-14 +- [ ] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files 🔁 every 3 months on the 1st Wednesday 📅 2022-10-05 +- [x] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files 🔁 every 3 months on the 1st Wednesday 📅 2022-07-14 ✅ 2022-07-14 +- [ ] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|check the PHP version]] server-side 🔁 every 3 months on the 1st Wednesday 🛫 2022-04-07 📅 2022-10-05 +- [x] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|check the PHP version]] server-side 🔁 every 3 months on the 1st Wednesday 🛫 2022-01-14 📅 2022-07-14 ✅ 2022-07-14   diff --git a/05.01 Computer setup/Storage and Syncing.md b/05.01 Computer setup/Storage and Syncing.md index fa05ab1c..41f59938 100644 --- a/05.01 Computer setup/Storage and Syncing.md +++ b/05.01 Computer setup/Storage and Syncing.md @@ -186,7 +186,8 @@ The following Apps require a manual backup: - [x] Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] 🔁 every 3 months on the 1st Thursday 📅 2022-01-06 ✅ 2022-01-08 - [x] Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] 🔁 every 3 months on the 1st Thursday 📅 2021-10-14 ✅ 2022-01-08 - [x] Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] 🔁 every 3 months on the 1st Thursday ✅ 2021-10-13 -- [ ] :iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] 🔁 every 3 months on the 2nd Tuesday 📅 2022-07-12 +- [ ] :iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] 🔁 every 3 months on the 2nd Tuesday 📅 2022-10-11 +- [x] :iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] 🔁 every 3 months on the 2nd Tuesday 📅 2022-07-12 ✅ 2022-07-10 - [x] Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] 🔁 every 3 months on the 2nd Tuesday 📅 2022-04-12 ✅ 2022-04-11 - [x] Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] 🔁 every 3 months on the 2nd Tuesday 📅 2022-01-11 ✅ 2022-01-11 - [x] Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] 🔁 every 3 months on the 2nd Tuesday 📅 2021-10-14 ✅ 2022-01-08 diff --git a/05.02 Networks/Configuring UFW.md b/05.02 Networks/Configuring UFW.md index c9274139..db7c141c 100644 --- a/05.02 Networks/Configuring UFW.md +++ b/05.02 Networks/Configuring UFW.md @@ -237,7 +237,8 @@ sudo bash /etc/addip4ban/addip4ban.sh #### Ban List Tasks -- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-07-16 +- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-07-23 +- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-07-16 ✅ 2022-07-15 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-07-09 ✅ 2022-07-08 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-07-02 ✅ 2022-07-03 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-06-25 ✅ 2022-06-24 @@ -255,7 +256,8 @@ sudo bash /etc/addip4ban/addip4ban.sh - [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-04-02 ✅ 2022-04-02 - [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-03-26 ✅ 2022-03-26 - [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-03-19 ✅ 2022-03-18 -- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-07-16 +- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-07-23 +- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-07-16 ✅ 2022-07-15 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-07-09 ✅ 2022-07-08 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-07-02 ✅ 2022-07-03 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-06-25 ✅ 2022-06-24 diff --git a/05.02 Networks/Server Alias.md b/05.02 Networks/Server Alias.md index 697fb894..d65bd417 100644 --- a/05.02 Networks/Server Alias.md +++ b/05.02 Networks/Server Alias.md @@ -118,7 +118,7 @@ All dependencies for running the alias service. | Program name | Type | Description |----------------|------|------------- -| **[[Configuring Fail2ban|fail2ban]]** | Deamon | Blocks suspicious attempts to login +| **[[Configuring Fail2ban\|fail2ban]]** | Deamon | Blocks suspicious attempts to login | **unattended-upgrades** | Program | Enables automatic updates of installed programs and OS | **logwatch** | Deamon | Monitors activity on server and sends activity logs diff --git a/06.02 Investments/Crypto Tasks.md b/06.02 Investments/Crypto Tasks.md index 3159b4a6..31846baf 100644 --- a/06.02 Investments/Crypto Tasks.md +++ b/06.02 Investments/Crypto Tasks.md @@ -72,7 +72,8 @@ All tasks and to-dos Crypto-related. [[#^Top|TOP]]   -- [ ] 💰[[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-07-15 +- [ ] 💰[[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-07-22 +- [x] 💰[[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-07-15 ✅ 2022-07-15 - [x] 💰[[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-07-08 ✅ 2022-07-09 - [x] 💰[[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-07-01 ✅ 2022-07-01 - [x] 💰[[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-06-24 ✅ 2022-06-24 diff --git a/06.02 Investments/Equity Tasks.md b/06.02 Investments/Equity Tasks.md index bafef0a2..4b92ec30 100644 --- a/06.02 Investments/Equity Tasks.md +++ b/06.02 Investments/Equity Tasks.md @@ -72,7 +72,8 @@ Note summarising all tasks and to-dos for Listed Equity investments. [[#^Top|TOP]]   -- [ ] 💰[[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-07-15 +- [ ] 💰[[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-07-22 +- [x] 💰[[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-07-15 ✅ 2022-07-15 - [x] 💰[[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-07-08 ✅ 2022-07-09 - [x] 💰[[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-07-01 ✅ 2022-07-01 - [x] 💰[[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-06-24 ✅ 2022-06-24 diff --git a/06.02 Investments/VC Tasks.md b/06.02 Investments/VC Tasks.md index 21aef490..6045fd88 100644 --- a/06.02 Investments/VC Tasks.md +++ b/06.02 Investments/VC Tasks.md @@ -72,7 +72,8 @@ Tasks and to-dos for VC investments. [[#^Top|TOP]]   -- [ ] 💰[[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-07-15 +- [ ] 💰[[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-07-22 +- [x] 💰[[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-07-15 ✅ 2022-07-15 - [x] 💰[[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-07-08 ✅ 2022-07-09 - [x] 💰[[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-07-01 ✅ 2022-07-01 - [x] 💰[[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-06-24 ✅ 2022-06-24