diff --git a/README.md b/README.md index 9edd1cb1..5ef078c2 100644 --- a/README.md +++ b/README.md @@ -88,10 +88,10 @@ Help translate lively to other languages: - + + - + diff --git a/src/livelywpf/UserControls/livelygrid/LivelyGridView.xaml.cs b/src/livelywpf/UserControls/livelygrid/LivelyGridView.xaml.cs index 22ce5d26..2a91262d 100644 --- a/src/livelywpf/UserControls/livelygrid/LivelyGridView.xaml.cs +++ b/src/livelywpf/UserControls/livelygrid/LivelyGridView.xaml.cs @@ -40,6 +40,7 @@ public class LocalizeTextGridView public string TextExportZip { get; set; } public string TextDelete { get; set; } public string TextAddWallpaper { get; set; } + public string TextPreviewWallpaper { get; set; } } public sealed partial class LivelyGridView : UserControl diff --git a/src/livelywpf/UserControls/livelysettings/SettingsPage.xaml b/src/livelywpf/UserControls/livelysettings/SettingsPage.xaml index a3fe7f24..74fdf7fa 100644 --- a/src/livelywpf/UserControls/livelysettings/SettingsPage.xaml +++ b/src/livelywpf/UserControls/livelysettings/SettingsPage.xaml @@ -167,7 +167,7 @@ - + diff --git a/src/livelywpf/livelySubProcess/Program.cs b/src/livelywpf/livelySubProcess/Program.cs index fab588d5..edc81512 100644 --- a/src/livelywpf/livelySubProcess/Program.cs +++ b/src/livelywpf/livelySubProcess/Program.cs @@ -9,6 +9,7 @@ namespace livelySubProcess /// /// Kills external application type wallpapers in the event lively main pgm is killed by taskmanager/other pgms like av software. /// This is just incase safety, when shutdown properly the "wpItems" list is cleared by lively before exit. + /// The external lively pgms such as livelycefsharp and libmpvplayer etc will close themselves if lively exits without subprocess. /// class Program { diff --git a/src/livelywpf/livelywpf/Core/InputForwarding/RawInputDX.xaml.cs b/src/livelywpf/livelywpf/Core/InputForwarding/RawInputDX.xaml.cs index 7db1852b..80b4e196 100644 --- a/src/livelywpf/livelywpf/Core/InputForwarding/RawInputDX.xaml.cs +++ b/src/livelywpf/livelywpf/Core/InputForwarding/RawInputDX.xaml.cs @@ -188,7 +188,7 @@ private static void ForwardMessage(int x, int y, int msg, IntPtr wParam) x.GetWallpaperType() == WallpaperType.godot) { if (ScreenHelper.ScreenCompare(display, x.GetScreen(), DisplayIdentificationMode.screenLayout) || - Program.SettingsVM.Settings.WallpaperArrangement == WallpaperArrangement.span) + Program.SettingsVM.Settings.WallpaperArrangement == WallpaperArrangement.span) { //The low-order word specifies the x-coordinate of the cursor, the high-order word specifies the y-coordinate of the cursor. //ref: https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-mousemove diff --git a/src/livelywpf/livelywpf/Core/SetupDesktop.cs b/src/livelywpf/livelywpf/Core/SetupDesktop.cs index 393916c9..3910a576 100644 --- a/src/livelywpf/livelywpf/Core/SetupDesktop.cs +++ b/src/livelywpf/livelywpf/Core/SetupDesktop.cs @@ -121,8 +121,8 @@ public static void SetWallpaper(LibraryModel wp, LivelyScreen targetDisplay) } if(wp.LivelyInfo.Type == WallpaperType.web - || wp.LivelyInfo.Type == WallpaperType.webaudio - || wp.LivelyInfo.Type == WallpaperType.url) + || wp.LivelyInfo.Type == WallpaperType.webaudio + || wp.LivelyInfo.Type == WallpaperType.url) { wp.ItemStartup = true; var item = new WebProcess(wp.FilePath, wp, targetDisplay); @@ -131,8 +131,8 @@ public static void SetWallpaper(LibraryModel wp, LivelyScreen targetDisplay) item.Show(); } if (wp.LivelyInfo.Type == WallpaperType.app - || wp.LivelyInfo.Type == WallpaperType.godot - || wp.LivelyInfo.Type == WallpaperType.unity) + || wp.LivelyInfo.Type == WallpaperType.godot + || wp.LivelyInfo.Type == WallpaperType.unity) { System.Windows.MessageBox.Show("not supported currently"); return; @@ -217,9 +217,10 @@ public static void SetWallpaper(LibraryModel wp, LivelyScreen targetDisplay) private static async void SetupDesktop_WallpaperInitialized(object sender, WindowInitializedArgs e) { await semaphoreSlimWallpaperInitLock.WaitAsync(); + IWallpaper wallpaper = null; try { - var wallpaper = (IWallpaper)sender; + wallpaper = (IWallpaper)sender; wallpapersPending.Remove(wallpaper); wallpaper.WindowInitialized -= SetupDesktop_WallpaperInitialized; await System.Windows.Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(delegate @@ -310,6 +311,15 @@ private static async void SetupDesktop_WallpaperInitialized(object sender, Windo MessageBox.Show(e.Error.Message, Properties.Resources.TitleAppName); } } + catch(Exception ex) + { + Logger.Error("Core: Failed processing wallpaper: " + ex.ToString()); + if(wallpaper != null) + { + wallpaper.Terminate(); + } + WallpaperChanged?.Invoke(null, null); + } finally { semaphoreSlimWallpaperInitLock.Release(); diff --git a/src/livelywpf/livelywpf/Core/Wallpapers/WebProcess.cs b/src/livelywpf/livelywpf/Core/Wallpapers/WebProcess.cs index 8f51ad13..e4ab048a 100644 --- a/src/livelywpf/livelywpf/Core/Wallpapers/WebProcess.cs +++ b/src/livelywpf/livelywpf/Core/Wallpapers/WebProcess.cs @@ -2,6 +2,7 @@ using System.Diagnostics; using System.IO; using System.Management; +using System.Text; namespace livelywpf.Core { @@ -42,56 +43,35 @@ public WebProcess(string path, LibraryModel model, LivelyScreen display) } } - string cmdArgs; - if (model.LivelyInfo.Type == WallpaperType.web) + StringBuilder cmdArgs = new StringBuilder(); + cmdArgs.Append("--url " + "\"" + path + "\"" + " --display " + "\"" + display + "\""); + cmdArgs.Append(model.LivelyInfo.Type == WallpaperType.url ? " --type online" : " --type local" + " --property " + "\"" + LivelyPropertyCopy + "\""); + //Fail to send empty string as arg; "debug" is set as optional variable in cmdline parser library. + if (!string.IsNullOrWhiteSpace(Program.SettingsVM.Settings.WebDebugPort)) { - //Fail to send empty string as arg; "debug" is set as optional variable in cmdline parser library. - if (string.IsNullOrWhiteSpace(Program.SettingsVM.Settings.WebDebugPort)) - { - cmdArgs = "--url " + "\"" + path + "\"" + " --type local" + " --display " + "\"" + display + "\"" + - " --property " + "\"" + LivelyPropertyCopy + "\""; - } - else - { - cmdArgs = "--url " + "\"" + path + "\"" + " --type local" + " --display " + "\"" + display + "\"" + - " --property " + "\"" + LivelyPropertyCopy + "\"" + " --debug " + Program.SettingsVM.Settings.WebDebugPort; - } + cmdArgs.Append(" --debug " + Program.SettingsVM.Settings.WebDebugPort); } - else if (model.LivelyInfo.Type == WallpaperType.webaudio) + + if (Program.SettingsVM.Settings.CefDiskCache) { - if (string.IsNullOrWhiteSpace(Program.SettingsVM.Settings.WebDebugPort)) - { - cmdArgs = "--url " + "\"" + path + "\"" + " --type local" + " --display " + "\"" + display + "\"" + " --audio true" + - " --property " + "\"" + LivelyPropertyCopy + "\""; - } - else - { - cmdArgs = "--url " + "\"" + path + "\"" + " --type local" + " --display " + "\"" + display + "\"" + " --audio true" + - " --property " + "\"" + LivelyPropertyCopy + "\"" + " --debug " + Program.SettingsVM.Settings.WebDebugPort; - } + cmdArgs.Append(" --cache " + "\"" + Path.Combine(Program.AppDataDir, "Cef", "cache", display.DeviceNumber) + "\""); } - else + + if (model.LivelyInfo.Type == WallpaperType.webaudio) { - if (string.IsNullOrWhiteSpace(Program.SettingsVM.Settings.WebDebugPort)) - { - cmdArgs = "--url " + "\"" + path + "\"" + " --type online" + " --display " + "\"" + display + "\""; - } - else - { - cmdArgs = "--url " + "\"" + path + "\"" + " --type online" + " --display " + "\"" + display + "\"" + - " --debug " + Program.SettingsVM.Settings.WebDebugPort; - } + cmdArgs.Append(" --audio true"); } ProcessStartInfo start = new ProcessStartInfo { - Arguments = cmdArgs, + Arguments = cmdArgs.ToString(), FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins", "cef", "LivelyCefSharp.exe"), RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, WorkingDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins", "cef") }; + cmdArgs.Clear(); Process webProcess = new Process { diff --git a/src/livelywpf/livelywpf/Docs/license.rtf b/src/livelywpf/livelywpf/Docs/license.rtf index 604a5833..4400f5ba 100644 --- a/src/livelywpf/livelywpf/Docs/license.rtf +++ b/src/livelywpf/livelywpf/Docs/license.rtf @@ -66,13 +66,13 @@ No Spacing;}{\*\cs24 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \spriori \sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp59\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0 \itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp60\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp56\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp53\itap0\li0\ri0\sb90\sa0}{\pgp\ipgp5\itap0\li0 \ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp1\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp64\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp62\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid268697\rsid329413\rsid527348\rsid668813\rsid740603 -\rsid810069\rsid1116686\rsid1120488\rsid1129000\rsid1262392\rsid1516284\rsid1575969\rsid1596782\rsid1601621\rsid1711571\rsid1862052\rsid2172097\rsid2173968\rsid2182642\rsid2430419\rsid2649499\rsid2831276\rsid2833446\rsid2905903\rsid3024595\rsid3150095 -\rsid3219979\rsid3240521\rsid3427772\rsid3546445\rsid3697037\rsid3939954\rsid3940102\rsid4279899\rsid4332568\rsid4408171\rsid4414334\rsid4416096\rsid4465966\rsid4595797\rsid4675836\rsid5068027\rsid5129439\rsid5461361\rsid5471568\rsid5703634\rsid6231472 -\rsid6243171\rsid6695955\rsid6704124\rsid7042697\rsid7212464\rsid7362808\rsid7433477\rsid7481440\rsid7750787\rsid7814905\rsid8149878\rsid8532619\rsid8612330\rsid8616423\rsid8718502\rsid8745047\rsid8804037\rsid8876939\rsid8931313\rsid9845156\rsid9919483 -\rsid9977545\rsid9990090\rsid9991455\rsid10168555\rsid10175951\rsid10370081\rsid10569259\rsid10761062\rsid10833687\rsid10951986\rsid10956787\rsid11363778\rsid11671717\rsid12338710\rsid12474677\rsid12482967\rsid12806171\rsid13119445\rsid13135701 -\rsid13373303\rsid13381601\rsid13579817\rsid13643783\rsid13662555\rsid13788930\rsid13963034\rsid14048677\rsid14057040\rsid14226533\rsid14367033\rsid14370252\rsid14494510\rsid14685526\rsid14701935\rsid14877467\rsid14903299\rsid15098231\rsid15273691 -\rsid15363914\rsid15401395\rsid15477676\rsid15487171\rsid15488107\rsid15739539\rsid15756206\rsid15932669\rsid15934410\rsid16070726\rsid16189706\rsid16328086\rsid16349761\rsid16391475\rsid16543391}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0 -\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Dani John}{\operator Dani John}{\creatim\yr2019\mo9\dy7\hr22\min27}{\revtim\yr2020\mo9\dy6\hr22\min25}{\version119}{\edmins207}{\nofpages36}{\nofwords15446} +\rsid810069\rsid1116686\rsid1120488\rsid1129000\rsid1262392\rsid1516284\rsid1575969\rsid1596782\rsid1601621\rsid1711571\rsid1862052\rsid2172097\rsid2173968\rsid2182642\rsid2430419\rsid2649499\rsid2775362\rsid2831276\rsid2833446\rsid2905903\rsid3024595 +\rsid3150095\rsid3219979\rsid3240521\rsid3427772\rsid3546445\rsid3697037\rsid3939954\rsid3940102\rsid4279899\rsid4332568\rsid4408171\rsid4414334\rsid4416096\rsid4465966\rsid4595797\rsid4675836\rsid5068027\rsid5129439\rsid5461361\rsid5471568\rsid5703634 +\rsid6231472\rsid6243171\rsid6695955\rsid6704124\rsid7042697\rsid7212464\rsid7362808\rsid7433477\rsid7481440\rsid7750787\rsid7814905\rsid8149878\rsid8532619\rsid8612330\rsid8616423\rsid8718502\rsid8745047\rsid8804037\rsid8876939\rsid8931313\rsid9845156 +\rsid9919483\rsid9977545\rsid9990090\rsid9991455\rsid10168555\rsid10175951\rsid10370081\rsid10569259\rsid10761062\rsid10833687\rsid10951986\rsid10956787\rsid11363778\rsid11671717\rsid12338710\rsid12474677\rsid12482967\rsid12806171\rsid13119445 +\rsid13135701\rsid13373303\rsid13381601\rsid13579817\rsid13643783\rsid13662555\rsid13788930\rsid13963034\rsid14048677\rsid14057040\rsid14226533\rsid14367033\rsid14370252\rsid14494510\rsid14685526\rsid14701935\rsid14877467\rsid14903299\rsid15098231 +\rsid15273691\rsid15363914\rsid15401395\rsid15477676\rsid15487171\rsid15488107\rsid15739539\rsid15756206\rsid15932669\rsid15934410\rsid16070726\rsid16189706\rsid16328086\rsid16349761\rsid16391475\rsid16543391}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0 +\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Dani John}{\operator Dani John}{\creatim\yr2019\mo9\dy7\hr22\min27}{\revtim\yr2020\mo9\dy9\hr19}{\version120}{\edmins208}{\nofpages36}{\nofwords15446} {\nofchars88048}{\nofcharsws103288}{\vern57433}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen \expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1 @@ -111,7 +111,7 @@ Godot, Bizhawk, Shadertoy.com or any }{\rtlch\fcs1 \ab\ai\af1\afs20 \ltrch\fcs0 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\chshdng0\chcfpat0\chcbpat8\insrsid4414334\charrsid11671717 Interity (Italian) \par Jaehyung Lee (Korean) - }{\field\flddirty{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\chshdng0\chcfpat0\chcbpat8\insrsid4414334\charrsid11671717 HYPERLINK "http://www.kolanp.com" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\chshdng0\chcfpat0\chcbpat8\insrsid4414334\charrsid11671717 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4600000068007400740070003a002f002f007700770077002e006b006f006c0061006e0070002e0063006f006d002f000000795881f43b1d7f48af2c825dc485276300000000a5ab0003ff83000000000000ff}} +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4600000068007400740070003a002f002f007700770077002e006b006f006c0061006e0070002e0063006f006d002f000000795881f43b1d7f48af2c825dc485276300000000a5ab0003ff83000000000000ff00}} }{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\chshdng0\chcfpat0\chcbpat8\insrsid4414334\charrsid11671717 http://www.kolanp.com}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs25\f1\fs20\insrsid4414334\charrsid11671717 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs27\f1\fs20\lang1040\langfe1033\langnp1040\insrsid4414334\charrsid11671717 Jo\'e3o Branco (Portuguese) @@ -126,7 +126,7 @@ Godot, Bizhawk, Shadertoy.com or any }{\rtlch\fcs1 \ab\ai\af1\afs20 \ltrch\fcs0 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4414334\charrsid11671717 Tugdual Meeus (French)}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4414334 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid329413 ANotThrowawayKonto (Malay) \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4595797 Lulucmy -\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid15487171 Frank Z (Dutch)}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid15487171\charrsid11671717 +\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid2775362 Marieau}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid15487171 (Dutch)}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid15487171\charrsid11671717 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\brdrb\brdrs\brdrw10\brsp20 \tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8616423 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\chshdng0\chcfpat0\chcbpat8\insrsid8616423\charrsid13662555 @@ -135,7 +135,7 @@ Godot, Bizhawk, Shadertoy.com or any }{\rtlch\fcs1 \ab\ai\af1\afs20 \ltrch\fcs0 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid12482967 Icons by icons8:}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid9977545\charrsid3219979 }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9977545\charrsid3219979 HYPERLINK "https://icons8.com/" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9977545\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b40000000680074007400700073003a002f002f00690063006f006e00730038002e0063006f006d002f000000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000b0770045730000ff500000f3000000 -00000000ff000000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid9977545\charrsid3219979 https://icons8.com/}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 +00000000ff00000000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid9977545\charrsid3219979 https://icons8.com/}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9977545\charrsid3219979 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\brdrb\brdrs\brdrw10\brsp20 \tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12806171 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 @@ -148,7 +148,7 @@ Godot, Bizhawk, Shadertoy.com or any }{\rtlch\fcs1 \ab\ai\af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid12482967\charrsid12482967 ayne }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid1862052 B}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid12482967\charrsid12482967 anner}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid12482967 : }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid12482967 HYPERLINK "https://waynebanner.artstation.com/" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid12482967 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b60000000680074007400700073003a002f002f007700610079006e006500620061006e006e00650072002e00610072007400730074006100740069006f006e002e0063006f006d002f000000795881f43b1d7f48af2c -825dc485276300000000a5ab0003000000010000000100}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid12482967\charrsid12482967 https://waynebanner.artstation.com/}}}\sectd \ltrsect +825dc485276300000000a5ab000300000001000000010000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid12482967\charrsid12482967 https://waynebanner.artstation.com/}}}\sectd \ltrsect \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid12482967 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\brdrb\brdrs\brdrw10\brsp20 \tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12482967 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 @@ -158,12 +158,12 @@ Godot, Bizhawk, Shadertoy.com or any }{\rtlch\fcs1 \ab\ai\af1\afs20 \ltrch\fcs0 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid10370081\charrsid3219979 CefSharp}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10370081\charrsid3219979 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10370081\charrsid3219979 HYPERLINK "https://github.com/cefsharp/CefSharp" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14494510\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b62000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f00630065006600730068006100720070002f00430065006600530068006100720070000000795881f43b1d7f48 -af2c825dc485276300000000a5ab0003000000fe000100000000770000000000000000000000000000000073005c12ff80000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid10370081\charrsid3219979 https://github.com/cefsharp/CefSharp}}} +af2c825dc485276300000000a5ab0003000000fe000100000000770000000000000000000000000000000073005c12ff8000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid10370081\charrsid3219979 https://github.com/cefsharp/CefSharp}}} \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10370081\charrsid3219979 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid15098231\charrsid3219979 HYPERLINK "https://github.com/cefsharp/CefSharp/blob/master/LICENSE" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10370081\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b8a000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f00630065006600730068006100720070002f00430065006600530068006100720070002f0062006c006f006200 -2f006d00610073007400650072002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab000300360000686e0000000000009700000000e455000000000000000000000000610064000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +2f006d00610073007400650072002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab000300360000686e0000000000009700000000e45500000000000000000000000061006400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid15098231\charrsid3219979 https://github.com/cefsharp/CefSharp/blob/master/LICENSE}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid15098231\charrsid3219979 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid15098231\charrsid3219979 @@ -202,12 +202,12 @@ af2c825dc485276300000000a5ab0003000000fe0001000000007700000000000000000000000000 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid14370252\charrsid14370252 RawInput.Sharp}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14370252\charrsid14370252 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14370252\charrsid14370252 HYPERLINK "https://github.com/mfakane/rawinput-sharp" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16543391\charrsid14370252 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6c000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f006d00660061006b0061006e0065002f0072006100770069006e007000750074002d0073006800610072007000 -0000795881f43b1d7f48af2c825dc485276300000000a5ab000300590000000000200000ff0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid14370252\charrsid14370252 \hich\af1\dbch\af31501\loch\f1 +0000795881f43b1d7f48af2c825dc485276300000000a5ab000300590000000000200000ff000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid14370252\charrsid14370252 \hich\af1\dbch\af31501\loch\f1 https://github.com/mfakane/rawinput-sharp}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14370252\charrsid14370252 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14370252\charrsid14370252 HYPERLINK "https://github.com/mfakane/rawinput-sharp/blob/master/LICENSE.txt" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16543391\charrsid14370252 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b9c000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f006d00660061006b0061006e0065002f0072006100770069006e007000750074002d0073006800610072007000 -2f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000000000410000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +2f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab00030000000000000041000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid14370252\charrsid14370252 \hich\af1\dbch\af31501\loch\f1 https://github.com/mfakane/rawinput-sharp/blob/master/LICENSE.txt}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj { \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14370252\charrsid14370252 \par }\pard\plain \ltrpar\s19\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14370252 @@ -238,13 +238,13 @@ https://github.com/mfakane/rawinput-sharp}}}\sectd \ltrsect\linex0\endnhere\sect \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid14057040\charrsid3219979 Newtonsoft.Json}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14057040\charrsid3219979 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14057040\charrsid3219979 HYPERLINK "https://github.com/JamesNK/Newtonsoft.Json" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16349761\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6e000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f004a0061006d00650073004e004b002f004e006500770074006f006e0073006f00660074002e004a0073006f00 -6e000000795881f43b1d7f48af2c825dc485276300000000a5ab00030007000000000000ff000000000002000000000000ff000000000100000000bcff00}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid14057040\charrsid3219979 +6e000000795881f43b1d7f48af2c825dc485276300000000a5ab00030007000000000000ff000000000002000000000000ff000000000100000000bcff0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid14057040\charrsid3219979 https://github.com/JamesNK/Newtonsoft.Json}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14057040\charrsid3219979 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9845156 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14057040\charrsid3219979 License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14057040\charrsid3219979 HYPERLINK "https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16349761\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b9c000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f004a0061006d00650073004e004b002f004e006500770074006f006e0073006f00660074002e004a0073006f00 -6e002f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045002e006d0064000000795881f43b1d7f48af2c825dc485276300000000a5ab000300030000000000000200000000000000000000000000000000001c00000000fc0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 +6e002f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045002e006d0064000000795881f43b1d7f48af2c825dc485276300000000a5ab000300030000000000000200000000000000000000000000000000001c00000000fc000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid14057040\charrsid3219979 https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14057040\charrsid3219979 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9845156\charrsid3219979 @@ -275,14 +275,14 @@ https://github.com/JamesNK/Newtonsoft.Json}}}\sectd \ltrsect\linex0\endnhere\sec \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid13579817\charrsid13579817 Youtube-dl}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13579817\charrsid13579817 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13579817\charrsid13579817 HYPERLINK "https://github.com/ytdl-org/youtube-dl" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid329413\charrsid13579817 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b66000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f007900740064006c002d006f00720067002f0079006f00750074007500620065002d0064006c000000795881f4 -3b1d7f48af2c825dc485276300000000a5ab00030000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid13579817\charrsid13579817 \hich\af1\dbch\af31501\loch\f1 https://github.com/ytdl-org/youtube-dl}}} +3b1d7f48af2c825dc485276300000000a5ab0003000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid13579817\charrsid13579817 \hich\af1\dbch\af31501\loch\f1 https://github.com/ytdl-org/youtube-dl}}} \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13579817\charrsid13579817 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13579817\charrsid13579817 HYPERLINK "https://github.com/ytdl-org/youtube-dl/blob/master/LICENSE" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid329413\charrsid13579817 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b8e000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f007900740064006c002d006f00720067002f0079006f00750074007500620065002d0064006c002f0062006c00 -6f0062002f006d00610073007400650072002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab00030000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid13579817\charrsid13579817 -\hich\af1\dbch\af31501\loch\f1 https://github.com/ytdl-org/youtube-dl/blob/master/LIC\hich\af1\dbch\af31501\loch\f1 ENSE}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\f1\fs20\insrsid13579817\charrsid13579817 +6f0062002f006d00610073007400650072002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +\cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid13579817\charrsid13579817 \hich\af1\dbch\af31501\loch\f1 https://github.com/ytdl-org/youtube-dl/blob/master/LIC\hich\af1\dbch\af31501\loch\f1 ENSE}}}\sectd \ltrsect +\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13579817\charrsid13579817 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid13579817\charrsid13579817 This is free and unencumbered software released into the public domain. \par \par Anyone is free to copy, modify, publish, use, compile, sell, or @@ -312,12 +312,12 @@ https://github.com/JamesNK/Newtonsoft.Json}}}\sectd \ltrsect\linex0\endnhere\sec \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid16391475\charrsid16391475 libmpv}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid16391475 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid16391475 HYPERLINK "https://github.com/mpv-player/mpv/tree/master/libmpv" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13579817\charrsid16391475 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b82000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f006d00700076002d0070006c0061007900650072002f006d00700076002f0074007200650065002f006d006100 -73007400650072002f006c00690062006d00700076000000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid16391475\charrsid16391475 +73007400650072002f006c00690062006d00700076000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid16391475\charrsid16391475 \hich\af1\dbch\af31501\loch\f1 https://github.com/mpv-player/mpv/tree/master/libmpv}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid16391475 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid16391475 HYPERLINK "https://github.com/mpv-player/mpv/blob/master/Copyright" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13579817\charrsid16391475 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b88000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f006d00700076002d0070006c0061007900650072002f006d00700076002f0062006c006f0062002f006d006100 -73007400650072002f0043006f0070007900720069006700680074000000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid16391475\charrsid16391475 +73007400650072002f0043006f0070007900720069006700680074000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid16391475\charrsid16391475 \hich\af1\dbch\af31501\loch\f1 https://github.com/mpv-player/mpv/blob/master/Copyright}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid16391475 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid16391475\charrsid16391475 GNU GENERAL PUBLIC LICENSE \par Version 2, June 1991 @@ -664,12 +664,12 @@ https://github.com/JamesNK/Newtonsoft.Json}}}\sectd \ltrsect\linex0\endnhere\sec \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid16391475\charrsid8149878 Mpv.net}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid8149878 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid8149878 HYPERLINK "https://github.com/stax76/mpv.net" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid8149878 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5c000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f007300740061007800370036002f006d00700076002e006e00650074000000795881f43b1d7f48af2c825dc485 -276300000000a5ab0003ff0000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid16391475\charrsid8149878 \hich\af1\dbch\af31501\loch\f1 https://github.com/stax76/mpv.net}}}\sectd \ltrsect +276300000000a5ab0003ff000000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid16391475\charrsid8149878 \hich\af1\dbch\af31501\loch\f1 https://github.com/stax76/mpv.net}}}\sectd \ltrsect \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid8149878 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid8149878 HYPERLINK "https://github.com/stax76/mpv.net/blob/master/LICENSE.txt" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid8149878 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b8c000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f007300740061007800370036002f006d00700076002e006e00650074002f0062006c006f0062002f006d006100 -73007400650072002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab0003200000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +73007400650072002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000320000000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid16391475\charrsid8149878 \hich\af1\dbch\af31501\loch\f1 https://github.com/stax76/mpv.net/blob/master/LICENSE.txt}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid16391475\charrsid8149878 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid16391475\charrsid8149878 MIT License\line @@ -701,14 +701,14 @@ https://github.com/JamesNK/Newtonsoft.Json}}}\sectd \ltrsect\linex0\endnhere\sec \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid4416096 C}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid10956787\charrsid4416096 ommandline}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10956787\charrsid4416096 : }{\field\fldedit{\*\fldinst { \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10956787\charrsid4416096 HYPERLINK "https://github.com/commandlineparser/commandline" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14370252\charrsid4416096 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7a000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0063006f006d006d0061006e0064006c0069006e0065007000610072007300650072002f0063006f006d006d00 -61006e0064006c0069006e0065000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000006500000000006e0069}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid10956787\charrsid4416096 +61006e0064006c0069006e0065000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000006500000000006e006900}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid10956787\charrsid4416096 \hich\af1\dbch\af31501\loch\f1 https://gi\hich\af1\dbch\af31501\loch\f1 thub.com/commandlineparser/commandline}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10956787\charrsid4416096 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2182642 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10956787\charrsid4416096 License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10956787\charrsid4416096 HYPERLINK "https://github.com/commandlineparser/commandline/blob/master/License.md" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14370252\charrsid4416096 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90ba8000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0063006f006d006d0061006e0064006c0069006e0065007000610072007300650072002f0063006f006d006d00 -61006e0064006c0069006e0065002f0062006c006f0062002f006d00610073007400650072002f004c006900630065006e00730065002e006d0064000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000006e0000000000680000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +61006e0064006c0069006e0065002f0062006c006f0062002f006d00610073007400650072002f004c006900630065006e00730065002e006d0064000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000006e000000000068000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid10956787\charrsid4416096 \hich\af1\dbch\af31501\loch\f1 https://github.com/commandlineparser/commandline/blob/master/License.md}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10956787\charrsid4416096 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10956787 {\rtlch\fcs1 @@ -742,12 +742,12 @@ https://github.com/JamesNK/Newtonsoft.Json}}}\sectd \ltrsect\linex0\endnhere\sec \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid8931313\charrsid3219979 NLog}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8931313\charrsid3219979 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8931313\charrsid3219979 HYPERLINK "https://github.com/NLog/NLog" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14367033\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b52000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f004e004c006f0067002f004e004c006f0067000000795881f43b1d7f48af2c825dc485276300000000a5ab0003 -80f07600001f0000006900000000000011000000fa0000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid8931313\charrsid3219979 https://github.com/NLog/NLog}}}\sectd \ltrsect +80f07600001f0000006900000000000011000000fa0000000000000000ff}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid8931313\charrsid3219979 https://github.com/NLog/NLog}}}\sectd \ltrsect \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8931313\charrsid3219979 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8931313\charrsid3219979 HYPERLINK "https://github.com/NLog/NLog/blob/dev/LICENSE.txt" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14367033\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7c000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f004e004c006f0067002f004e004c006f0067002f0062006c006f0062002f006400650076002f004c0049004300 -45004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000000000001cff000000000012000000000c0000007400001c00}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid8931313\charrsid3219979 +45004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000000000001cff000000000012000000000c0000007400001c0000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid8931313\charrsid3219979 https://github.com/NLog/NLog/blob/dev/LICENSE.txt}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8931313\charrsid3219979 \par }\pard\plain \ltrpar\s19\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8931313 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\cf1\insrsid8931313\charrsid3219979 @@ -787,12 +787,12 @@ https://github.com/NLog/NLog/blob/dev/LICENSE.txt}}}\sectd \ltrsect\linex0\endnh \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid8532619\charrsid3219979 Magick.NET}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8532619\charrsid3219979 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8532619\charrsid3219979 HYPERLINK "https://github.com/dlemstra/Magick.NET" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10951986\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b66000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0064006c0065006d0073007400720061002f004d0061006700690063006b002e004e00450054000000795881f4 -3b1d7f48af2c825dc485276300000000a5ab000300000000000000ff00000000ff00009800680000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid8532619\charrsid3219979 \hich\af1\dbch\af31501\loch\f1 +3b1d7f48af2c825dc485276300000000a5ab000300000000000000ff00000000ff0000980068000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid8532619\charrsid3219979 \hich\af1\dbch\af31501\loch\f1 https://github.com/dlemstra/Magick.NET}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8532619\charrsid3219979 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8532619\charrsid3219979 HYPERLINK "https://github.com/dlemstra/Magick.NET/blob/master/License.txt" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10951986\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b96000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0064006c0065006d0073007400720061002f004d0061006700690063006b002e004e00450054002f0062006c00 -6f0062002f006d00610073007400650072002f004c006900630065006e00730065002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000000000002a0000370000006600000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +6f0062002f006d00610073007400650072002f004c006900630065006e00730065002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000000000002a000037000000660000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid8532619\charrsid3219979 \hich\af1\dbch\af31501\loch\f1 https://github.com/dlemstra/Magick.NET/blob/master/License.txt}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj { \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8532619\charrsid3219979 \par }\pard\plain \ltrpar\s19\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8532619 \rtlch\fcs1 @@ -1005,12 +1005,12 @@ https://github.com/dlemstra/Magick.NET}}}\sectd \ltrsect\linex0\endnhere\sectlin \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid3219979\charrsid1129000 Inno Setup}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3219979\charrsid1129000 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3219979\charrsid1129000 HYPERLINK "http://www.jrsoftware.org/" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1040\langfe1033\langnp1040\insrsid1129000\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4e00000068007400740070003a002f002f007700770077002e006a00720073006f006600740077006100720065002e006f00720067002f000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000 -00690000fa0000000068000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid3219979\charrsid1129000 \hich\af1\dbch\af31501\loch\f1 http://www.jrsoftware.org/}}}\sectd \ltrsect +00690000fa000000006800000068}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid3219979\charrsid1129000 \hich\af1\dbch\af31501\loch\f1 http://www.jrsoftware.org/}}}\sectd \ltrsect \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3219979\charrsid1129000 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3219979\charrsid3219979 License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3219979\charrsid3219979 HYPERLINK "http://www.jrsoftware.org/files/is/license.txt" }{ \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1129000\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7600000068007400740070003a002f002f007700770077002e006a00720073006f006600740077006100720065002e006f00720067002f00660069006c00650073002f00690073002f006c006900630065006e007300 -65002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000060100003afa0000000000340000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid3219979\charrsid3219979 +65002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000060100003afa000000000034000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid3219979\charrsid3219979 \hich\af1\dbch\af31501\loch\f1 http://www.jrsoftware.org/files/is/license.txt}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3219979\charrsid3219979 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid3219979\charrsid3219979 Except where otherwise noted, all of the documentation and software included in the Inno Setup \par package is copyrighted by Jordan Russell. @@ -1046,12 +1046,12 @@ https://github.com/dlemstra/Magick.NET}}}\sectd \ltrsect\linex0\endnhere\sectlin \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid10175951\charrsid10175951 ModernWpf}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10175951\charrsid10175951 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10175951\charrsid10175951 HYPERLINK "https://github.com/Kinnara/ModernWpf" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid10175951 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b62000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f004b0069006e006e006100720061002f004d006f006400650072006e005700700066000000795881f43b1d7f48 -af2c825dc485276300000000a5ab0003180000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid10175951\charrsid10175951 \hich\af1\dbch\af31501\loch\f1 https://github.com/Kinnara/ModernWpf}}} +af2c825dc485276300000000a5ab000318000000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid10175951\charrsid10175951 \hich\af1\dbch\af31501\loch\f1 https://github.com/Kinnara/ModernWpf}}} \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10175951\charrsid10175951 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10175951\charrsid10175951 HYPERLINK "https://github.com/Kinnara/ModernWpf/blob/master/LICENSE" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid10175951 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b8a000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f004b0069006e006e006100720061002f004d006f006400650072006e005700700066002f0062006c006f006200 -2f006d00610073007400650072002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000005c000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +2f006d00610073007400650072002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000005c00000068}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid10175951\charrsid10175951 \hich\af1\dbch\af31501\loch\f1 https://github.com/Kinnara/ModernWpf/blob/master/LICENSE}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid10175951\charrsid10175951 \par }\pard\plain \ltrpar\s19\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10175951 @@ -1082,13 +1082,13 @@ af2c825dc485276300000000a5ab0003180000000000000000}}}{\fldrslt {\rtlch\fcs1 \af1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid5068027 Octokit.net}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5068027\charrsid5068027 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5068027\charrsid5068027 HYPERLINK "https://github.com/octokit/octokit.net" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid5068027 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b66000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f006f00630074006f006b00690074002f006f00630074006f006b00690074002e006e00650074000000795881f4 -3b1d7f48af2c825dc485276300000000a5ab0003000078000020000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid5068027\charrsid5068027 \hich\af1\dbch\af31501\loch\f1 +3b1d7f48af2c825dc485276300000000a5ab000300007800002000000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid5068027\charrsid5068027 \hich\af1\dbch\af31501\loch\f1 https://github.com/octokit/octokit.net}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5068027\charrsid5068027 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5068027\charrsid5068027 HYPERLINK "https://github.com/octokit/octokit.net/blob/main/LICENSE.txt" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid5068027 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b92000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f006f00630074006f006b00690074002f006f00630074006f006b00690074002e006e00650074002f0062006c00 -6f0062002f006d00610069006e002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000003800fe00}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid5068027\charrsid5068027 \hich\af1\dbch\af31501\loch\f1 https://github.com/octokit/octokit.net/blob/mai\hich\af1\dbch\af31501\loch\f1 n/LICENSE.txt}}}\sectd \ltrsect +6f0062002f006d00610069006e002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000003800fe00d8}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +\cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid5068027\charrsid5068027 \hich\af1\dbch\af31501\loch\f1 https://github.com/octokit/octokit.net/blob/ma\hich\af1\dbch\af31501\loch\f1 in/LICENSE.txt}}}\sectd \ltrsect \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5068027\charrsid5068027 \par }\pard\plain \ltrpar\s19\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5068027 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\cf1\insrsid5068027\charrsid5068027 MIT License @@ -1117,12 +1117,12 @@ https://github.com/octokit/octokit.net}}}\sectd \ltrsect\linex0\endnhere\sectlin \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid4332568\charrsid4332568 SharpZipLib}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4332568\charrsid4332568 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4332568\charrsid4332568 HYPERLINK "https://github.com/icsharpcode/SharpZipLib" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid4332568 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6e000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f00690063007300680061007200700063006f00640065002f00530068006100720070005a00690070004c006900 -62000000795881f43b1d7f48af2c825dc485276300000000a5ab000300f229000058000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid4332568\charrsid4332568 \hich\af1\dbch\af31501\loch\f1 +62000000795881f43b1d7f48af2c825dc485276300000000a5ab000300f22900005800000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid4332568\charrsid4332568 \hich\af1\dbch\af31501\loch\f1 https://github.com/icsharpcode/SharpZipLib}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4332568\charrsid4332568 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4332568\charrsid4332568 HYPERLINK "https://github.com/icsharpcode/SharpZipLib/blob/master/LICENSE.txt" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid4332568 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b9e000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f00690063007300680061007200700063006f00640065002f00530068006100720070005a00690070004c006900 -62002f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab0003450000000075000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +62002f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab000345000000007500000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid4332568\charrsid4332568 \hich\af1\dbch\af31501\loch\f1 https://github.com/icsharpcode/SharpZipLib/blob/master/LICENSE.txt}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj { \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4332568\charrsid4332568 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid4332568\charrsid4332568 MIT License}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid4332568\charrsid8149878 \line @@ -1148,12 +1148,12 @@ https://github.com/icsharpcode/SharpZipLib}}}\sectd \ltrsect\linex0\endnhere\sec \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid14048677\charrsid5068027 libvlcsharp}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14048677\charrsid5068027 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14048677\charrsid5068027 HYPERLINK "https://github.com/videolan/libvlcsharp" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid5068027 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b68000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0076006900640065006f006c0061006e002f006c006900620076006c0063007300680061007200700000007958 -81f43b1d7f48af2c825dc485276300000000a5ab0003000000680044000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid14048677\charrsid5068027 \hich\af1\dbch\af31501\loch\f1 +81f43b1d7f48af2c825dc485276300000000a5ab000300000068004400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid14048677\charrsid5068027 \hich\af1\dbch\af31501\loch\f1 https://github.com/videolan/libvlcsharp}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14048677\charrsid5068027 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14048677\charrsid5068027 HYPERLINK "https://github.com/videolan/libvlcsharp/blob/3.x/LICENSE" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid5068027 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b8a000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0076006900640065006f006c0061006e002f006c006900620076006c006300730068006100720070002f006200 -6c006f0062002f0033002e0078002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000008005a020000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +6c006f0062002f0033002e0078002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000008005a02000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid14048677\charrsid5068027 \hich\af1\dbch\af31501\loch\f1 https://github.com/videolan/libvlcsharp/blob/3.x/LICENSE}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14048677\charrsid5068027 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid14048677\charrsid5068027 GNU LESSER GENERAL PUBLIC LICENSE @@ -1667,19 +1667,20 @@ https://github.com/videolan/libvlcsharp}}}\sectd \ltrsect\linex0\endnhere\sectli \par }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 HYPERLINK "https://github.com/videolan/vlc/tree/master/lib" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid1596782 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b78000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0076006900640065006f006c0061006e002f0076006c0063002f0074007200650065002f006d00610073007400 -650072002f006c00690062000000795881f43b1d7f48af2c825dc485276300000000a5ab00030000000000ce00000c}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid1596782\charrsid1596782 \hich\af1\dbch\af31501\loch\f1 -https://github.com/videolan/vlc/tree/master/lib}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 +650072002f006c00690062000000795881f43b1d7f48af2c825dc485276300000000a5ab00030000000000ce00000c00}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid1596782\charrsid1596782 +\hich\af1\dbch\af31501\loch\f1 https://github.com/videolan/vlc/tree/master/lib}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 \par }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 HYPERLINK "https://code.videolan.org/videolan/libvlc-nuget" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid1596782 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b78000000680074007400700073003a002f002f0063006f00640065002e0076006900640065006f006c0061006e002e006f00720067002f0076006900640065006f006c0061006e002f006c006900620076006c006300 -2d006e0075006700650074000000795881f43b1d7f48af2c825dc485276300000000a5ab0003d200000000ce004600}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid1596782\charrsid1596782 \hich\af1\dbch\af31501\loch\f1 -https://code.videolan.org/videolan/libvlc-nuget}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 +2d006e0075006700650074000000795881f43b1d7f48af2c825dc485276300000000a5ab0003d200000000ce00460000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid1596782\charrsid1596782 +\hich\af1\dbch\af31501\loch\f1 https://code.videolan.org/videolan/libvlc-nuget}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 \par License: }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782 \par }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 HYPERLINK "https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid8718502\charrsid1596782 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b88000000680074007400700073003a002f002f007700770077002e0067006e0075002e006f00720067002f006c006900630065006e007300650073002f006f006c0064002d006c006900630065006e00730065007300 -2f006c00670070006c002d0032002e0031002e00680074006d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000007800a200}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid1596782\charrsid1596782 -\hich\af1\dbch\af31501\loch\f1 https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 +2f006c00670070006c002d0032002e0031002e00680074006d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab000300000000007800a20000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +\cs18\fs20\ul\cf2\loch\af1\hich\af1\dbch\af31501\insrsid1596782\charrsid1596782 \hich\af1\dbch\af31501\loch\f1 https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 +\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid1596782\charrsid1596782 \par GNU LESSER GENERAL PUBLIC LICENSE \par Version 2.1, February 1999 \par @@ -2192,13 +2193,12 @@ https://code.videolan.org/videolan/libvlc-nuget}}}\sectd \ltrsect\linex0\endnher \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid5471568 \par MaterialSkin: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5471568 HYPERLINK "https://github.com/IgnaceMaes/MaterialSkin" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5471568 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6e000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f00490067006e006100630065004d006100650073002f004d006100740065007200690061006c0053006b006900 -6e000000795881f43b1d7f48af2c825dc485276300000000a5ab0003ff9814000045000000000000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs18\ul\cf2\dbch\af31501\insrsid5471568 \hich\af31506\dbch\af31501\loch\f31506 https://github.com/IgnaceMaes/MaterialSkin}}} -\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5471568 +6e000000795881f43b1d7f48af2c825dc485276300000000a5ab0003ff981400004500000000000000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs18\ul\cf2\dbch\af31501\insrsid5471568 \hich\af31506\dbch\af31501\loch\f31506 https://github.com/IgnaceMaes/MaterialSkin} +}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5471568 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5471568 HYPERLINK "https://github.com/IgnaceMaes/MaterialSkin/blob/master/LICENSE" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5471568 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b96000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f00490067006e006100630065004d006100650073002f004d006100740065007200690061006c0053006b006900 -6e002f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab0003ff0000000000000000ff0000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs18\ul\cf2\dbch\af31501\insrsid5471568 -\hich\af31506\dbch\af31501\loch\f31506 https://github.com/IgnaceMaes/MaterialSkin/blob/m\hich\af31506\dbch\af31501\loch\f31506 aster/LICENSE}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 -\insrsid5471568 +6e002f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045000000795881f43b1d7f48af2c825dc485276300000000a5ab0003ff0000000000000000ff000000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs18\ul\cf2\dbch\af31501\insrsid5471568 +\hich\af31506\dbch\af31501\loch\f31506 https://github.com/IgnaceMaes/MaterialSkin/blob/master/LICENSE}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5471568 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid5471568\charrsid8804037 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid5471568\charrsid8876939 Copyright (c) 2014 Ignace Maes \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid5471568\charrsid8804037 @@ -2228,12 +2228,12 @@ https://code.videolan.org/videolan/libvlc-nuget}}}\sectd \ltrsect\linex0\endnher \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\ul\insrsid5471568\charrsid3219979 Html5-boilerplate}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5471568\charrsid3219979 : }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5471568\charrsid3219979 HYPERLINK "https://github.com/h5bp/html5-boilerplate" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1040\langfe1033\langnp1040\insrsid5471568\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6c000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0068003500620070002f00680074006d006c0035002d0062006f0069006c006500720070006c00610074006500 -0000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000003c72ff0000000000ff000000050000000000000000000081}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid5471568\charrsid3219979 https://github.com/h5bp/html5-boilerplate}}} +0000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000003c72ff0000000000ff0000000500000000000000000000810c}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid5471568\charrsid3219979 https://github.com/h5bp/html5-boilerplate}}} \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5471568\charrsid3219979 \par License: }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5471568\charrsid3219979 HYPERLINK "https://github.com/h5bp/html5-boilerplate/blob/master/LICENSE.txt" }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5471568\charrsid3219979 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b9c000000680074007400700073003a002f002f006700690074006800750062002e0063006f006d002f0068003500620070002f00680074006d006c0035002d0062006f0069006c006500720070006c00610074006500 -2f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab00034f0000000000ff0000000000ffff0000000000000000ff6900240000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +2f0062006c006f0062002f006d00610073007400650072002f004c004900430045004e00530045002e007400780074000000795881f43b1d7f48af2c825dc485276300000000a5ab00034f0000000000ff0000000000ffff0000000000000000ff6900240000ff}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \cs18\f1\fs20\ul\cf2\insrsid5471568\charrsid3219979 https://github.com/h5bp/html5-boilerplate/blob/master/LICENSE.txt}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5471568\charrsid3219979 \par @@ -2401,8 +2401,8 @@ fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000509e -f4886e84d601feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000404b +2453ad86d601feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Model/SettingsModel.cs b/src/livelywpf/livelywpf/Model/SettingsModel.cs index a6cd2cac..bc03a96d 100644 --- a/src/livelywpf/livelywpf/Model/SettingsModel.cs +++ b/src/livelywpf/livelywpf/Model/SettingsModel.cs @@ -39,7 +39,6 @@ public class SettingsModel : ObservableObject public bool LiveTile { get; set; } public System.Windows.Media.Stretch ScalerVideo { get; set; } public System.Windows.Media.Stretch ScalerGif { get; set; } - //public StreamQualitySuggestion StreamQuality { get; set; } public WallpaperArrangement WallpaperArrangement { get; set; } public string SavedURL { get; set; } public string IgnoreUpdateTag { get; set; } @@ -81,27 +80,7 @@ public class SettingsModel : ObservableObject /// public int AudioVolumeGlobal { get; set; } public WallpaperScaler WallpaperScaling { get; set; } - //private - /* - //todo need to rewrite audio manager from scratch. - public bool MuteVideo { get; set; } - public bool MuteCef { get; set; } //unused, need to get processid of subprocess of cef. - public bool MuteCefAudioIn { get; set; } - public bool MuteMic { get; set; } - public bool MuteAppWP { get; set; } - public bool MuteGlobal { get; set; } //mute audio of all types of wp's - public bool AlwaysAudio { get; set; } //play audio even when not on desktop - - // warning user of risk, count. - public int WarningUnity { get; set; } - public int WarningGodot { get; set; } - public int WarningURL { get; set; } - public int WarningApp { get; set; } - - public bool RunOnlyDesktop { get; set; } //run only when on desktop focus. - public VideoPlayer VidPlayer { get; set; } - public GIFPlayer GifPlayer { get; set; } - */ + public bool CefDiskCache { get; set; } public SettingsModel() { @@ -150,6 +129,7 @@ public SettingsModel() WallpaperBundleVersion = -1; AudioVolumeGlobal = 50; WallpaperScaling = WallpaperScaler.fill; + CefDiskCache = false; } } } diff --git a/src/livelywpf/livelywpf/Program.cs b/src/livelywpf/livelywpf/Program.cs index fa762bf2..8d42f361 100644 --- a/src/livelywpf/livelywpf/Program.cs +++ b/src/livelywpf/livelywpf/Program.cs @@ -19,7 +19,8 @@ public class Program private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); private static readonly Mutex mutex = new Mutex(false, "LIVELY:DESKTOPWALLPAPERSYSTEM"); - public static string WallpaperDir; //Loaded from Settings.json (User configurable.) + //Loaded from Settings.json (User configurable.) + public static string WallpaperDir; public static readonly string AppDataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Lively Wallpaper"); //todo: use singleton or something instead? @@ -39,7 +40,7 @@ public static void Main() // wait a few seconds in case livelywpf instance is just shutting down.. if (!mutex.WaitOne(TimeSpan.FromSeconds(1), false)) { - //ref: https://stackoverflow.com/questions/19147/what-is-the-correct-way-to-create-a-single-instance-wpf-application + // ref: https://stackoverflow.com/questions/19147/what-is-the-correct-way-to-create-a-single-instance-wpf-application // send our registered Win32 message to make the currently running lively instance to bring to foreground. // todo: ditch this once ipc server is ready? NativeMethods.PostMessage( diff --git a/src/livelywpf/livelywpf/Properties/Resources.Designer.cs b/src/livelywpf/livelywpf/Properties/Resources.Designer.cs index 6710e15c..2b446bbc 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.Designer.cs +++ b/src/livelywpf/livelywpf/Properties/Resources.Designer.cs @@ -650,6 +650,15 @@ public static string TextPerformancePause { } } + /// + /// Looks up a localized string similar to Preview Wallpaper. + /// + public static string TextPreviewWallpaper { + get { + return ResourceManager.GetString("TextPreviewWallpaper", resourceCulture); + } + } + /// /// Looks up a localized string similar to Remove. /// diff --git a/src/livelywpf/livelywpf/Properties/Resources.ar.resx b/src/livelywpf/livelywpf/Properties/Resources.ar.resx index e24edde6..dfa50645 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.ar.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.ar.resx @@ -680,4 +680,7 @@ Edge is the built in webview of windows 10. Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.de.resx b/src/livelywpf/livelywpf/Properties/Resources.de.resx index 9fb7cacd..df14914d 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.de.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.de.resx @@ -681,5 +681,8 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + + Preview Wallpaper \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.es.resx b/src/livelywpf/livelywpf/Properties/Resources.es.resx index b859589f..f2273038 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.es.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.es.resx @@ -682,4 +682,7 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.fil.resx b/src/livelywpf/livelywpf/Properties/Resources.fil.resx index da1181bd..72541534 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.fil.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.fil.resx @@ -680,4 +680,7 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.fr.resx b/src/livelywpf/livelywpf/Properties/Resources.fr.resx index ade08e18..fe77f69a 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.fr.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.fr.resx @@ -685,4 +685,7 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + Preview Wallpaper + diff --git a/src/livelywpf/livelywpf/Properties/Resources.hu.resx b/src/livelywpf/livelywpf/Properties/Resources.hu.resx index d6767af7..6c5bc367 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.hu.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.hu.resx @@ -683,4 +683,7 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.it.resx b/src/livelywpf/livelywpf/Properties/Resources.it.resx index 99c65515..c90ef3a1 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.it.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.it.resx @@ -685,4 +685,7 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.ko.resx b/src/livelywpf/livelywpf/Properties/Resources.ko.resx index e5794126..82cf679c 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.ko.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.ko.resx @@ -684,4 +684,7 @@ Edge는 Windows 10의 내장 웹뷰입니다. Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.ms.resx b/src/livelywpf/livelywpf/Properties/Resources.ms.resx index 2a1833e1..29b67730 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.ms.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.ms.resx @@ -664,22 +664,25 @@ Edge ialah Webview sedia ada bagi Windows 10. Kekuataan Bunyi (Utama) - - Fill + + Isi - None + Tiada - Uniform + Seragam - Uniform Fill + Isi Seragam + + + Algoritma Skala Wallpaper - - Wallpaper scaling algorithm. + + Pilih Padanan - - Choose a fit + + Preview Wallpaper diff --git a/src/livelywpf/livelywpf/Properties/Resources.nl-NL.resx b/src/livelywpf/livelywpf/Properties/Resources.nl-NL.resx index 52be74f5..53d699f2 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.nl-NL.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.nl-NL.resx @@ -672,4 +672,7 @@ Alle processen: Heavier, Scant alle processen om afspeelmogelijkheden te bepalen Choose a fit + + Preview Wallpaper + diff --git a/src/livelywpf/livelywpf/Properties/Resources.pl.resx b/src/livelywpf/livelywpf/Properties/Resources.pl.resx index f9a466be..7f3a3b4e 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.pl.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.pl.resx @@ -682,4 +682,7 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + Preview Wallpaper + diff --git a/src/livelywpf/livelywpf/Properties/Resources.pt-BR.resx b/src/livelywpf/livelywpf/Properties/Resources.pt-BR.resx index 5a22901e..39e629e5 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.pt-BR.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.pt-BR.resx @@ -681,5 +681,8 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + + Preview Wallpaper \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.pt.resx b/src/livelywpf/livelywpf/Properties/Resources.pt.resx index bd0732f3..3405b655 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.pt.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.pt.resx @@ -682,4 +682,7 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + Preview Wallpaper + diff --git a/src/livelywpf/livelywpf/Properties/Resources.resx b/src/livelywpf/livelywpf/Properties/Resources.resx index 4b84e5d5..8bacdf15 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.resx @@ -329,6 +329,9 @@ If still not working, close &amp; start Lively again/ restart windows. Pause + + Preview Wallpaper + Remove diff --git a/src/livelywpf/livelywpf/Properties/Resources.ru.resx b/src/livelywpf/livelywpf/Properties/Resources.ru.resx index a8a3a0e3..9b6c9347 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.ru.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.ru.resx @@ -682,4 +682,7 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.sv.resx b/src/livelywpf/livelywpf/Properties/Resources.sv.resx index 6dcf10f1..e68669e7 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.sv.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.sv.resx @@ -682,4 +682,7 @@ Edge är den inbyggda webbvisningen av Windows 10. Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.uk.resx b/src/livelywpf/livelywpf/Properties/Resources.uk.resx index 1881e1ce..1b2a57ef 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.uk.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.uk.resx @@ -681,5 +681,8 @@ https://github.com/rocksdanister/lively/wiki Choose a fit + + + Preview Wallpaper \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.zh-Hant.resx b/src/livelywpf/livelywpf/Properties/Resources.zh-Hant.resx index 586dab94..43edb392 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.zh-Hant.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.zh-Hant.resx @@ -679,4 +679,7 @@ Edge is the built in webview of windows 10. Choose a fit + + Preview Wallpaper + \ No newline at end of file diff --git a/src/livelywpf/livelywpf/Properties/Resources.zh.resx b/src/livelywpf/livelywpf/Properties/Resources.zh.resx index 59b9b8a9..41486ec1 100644 --- a/src/livelywpf/livelywpf/Properties/Resources.zh.resx +++ b/src/livelywpf/livelywpf/Properties/Resources.zh.resx @@ -667,21 +667,24 @@ https://github.com/rocksdanister/lively/wiki 主音量 - Fill + 填充 - None + - Uniform + 统一 - Uniform Fill + 统一填充 - Wallpaper scaling algorithm. + 壁纸缩放算法。 - Choose a fit + 选择契合度 + + + Preview Wallpaper diff --git a/src/livelywpf/livelywpf/Systray.cs b/src/livelywpf/livelywpf/Systray.cs index 39c06454..d7838ed5 100644 --- a/src/livelywpf/livelywpf/Systray.cs +++ b/src/livelywpf/livelywpf/Systray.cs @@ -25,7 +25,7 @@ public Systray(bool visibility = true) _notifyIcon.DoubleClick += (s, args) => Program.ShowMainWindow(); _notifyIcon.Icon = Properties.Icons.appicon; - _notifyIcon.Text = "Lively Wallpaper"; + _notifyIcon.Text = Properties.Resources.TitleAppName; CreateContextMenu(); _notifyIcon.Visible = visibility; @@ -45,6 +45,7 @@ private void CreateContextMenu() Margin = new Padding(0), //Font = new System.Drawing.Font("Segoe UI", 10F), }; + _notifyIcon.ContextMenuStrip.Opening += ContextMenuStrip_Opening; _notifyIcon.ContextMenuStrip.Renderer = new Helpers.CustomContextMenu.RendererDark(); _notifyIcon.ContextMenuStrip.Items.Add(Properties.Resources.TextOpenLively, Properties.Icons.icons8_home_64).Click += (s, e) => Program.ShowMainWindow(); @@ -78,6 +79,55 @@ private void CreateContextMenu() _notifyIcon.ContextMenuStrip.Items.Add(Properties.Resources.TextExit, Properties.Icons.icons8_delete_52).Click += (s, e) => Program.ExitApplication(); } + /// + /// Fix for when menu opens to the nearest screen instead of the screen in which cursor is located. + /// + /// + /// + private void ContextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e) + { + ContextMenuStrip menuStrip = (sender as ContextMenuStrip); + if (ScreenHelper.IsMultiScreen()) + { + //Finding screen in which cursor is present. + var screen = Screen.FromPoint(Cursor.Position); + + var mousePos = Cursor.Position; + //Converting global cursor pos. to given screen pos. + mousePos.X += mousePos.X < 0 ? + SystemInformation.VirtualScreen.Width - Screen.PrimaryScreen.Bounds.Width : -Math.Abs(screen.Bounds.X); + mousePos.Y += mousePos.Y < 0 ? + SystemInformation.VirtualScreen.Height - Screen.PrimaryScreen.Bounds.Height : -Math.Abs(screen.Bounds.Y); + + //guessing taskbar pos. based on cursor pos. on display. + bool isLeft = mousePos.X < screen.Bounds.Width * .5; + bool isTop = mousePos.Y < screen.Bounds.Height * .5; + + //menu popup pos. rule. + if (isLeft && isTop) + { + //not possible? + menuStrip.Show(Cursor.Position, ToolStripDropDownDirection.Default); + } + if (isLeft && !isTop) + { + menuStrip.Show(Cursor.Position, ToolStripDropDownDirection.AboveRight); + } + else if (!isLeft && isTop) + { + menuStrip.Show(Cursor.Position, ToolStripDropDownDirection.BelowLeft); + } + else if (!isLeft && !isTop) + { + menuStrip.Show(Cursor.Position, ToolStripDropDownDirection.AboveLeft); + } + } + else + { + menuStrip.Show(Cursor.Position, ToolStripDropDownDirection.AboveLeft); + } + } + public void ShowBalloonNotification(int timeout, string title, string msg) { _notifyIcon.ShowBalloonTip(timeout, title, msg, ToolTipIcon.None); diff --git a/src/livelywpf/livelywpf/ViewModel/ScreenLayoutViewModel.cs b/src/livelywpf/livelywpf/ViewModel/ScreenLayoutViewModel.cs index d2115abd..423e0791 100644 --- a/src/livelywpf/livelywpf/ViewModel/ScreenLayoutViewModel.cs +++ b/src/livelywpf/livelywpf/ViewModel/ScreenLayoutViewModel.cs @@ -196,8 +196,7 @@ private void CanCustomiseWallpaper() private void UpdateLayout() { ScreenItems.Clear(); - if (Program.SettingsVM.Settings.WallpaperArrangement == WallpaperArrangement.span - || Program.SettingsVM.Settings.WallpaperArrangement == WallpaperArrangement.duplicate) + if (Program.SettingsVM.Settings.WallpaperArrangement == WallpaperArrangement.span) { if (SetupDesktop.Wallpapers.Count == 0) { @@ -224,7 +223,14 @@ private void UpdateLayout() livelyPropertyFilePath = x.GetLivelyPropertyCopyPath(); } }); - unsortedScreenItems.Add(new Model.ScreenLayoutModel(item, imgPath, livelyPropertyFilePath, item.DeviceNumber)); + if(Program.SettingsVM.Settings.WallpaperArrangement == WallpaperArrangement.duplicate) + { + unsortedScreenItems.Add(new Model.ScreenLayoutModel(item, imgPath, livelyPropertyFilePath, "-")); + } + else + { + unsortedScreenItems.Add(new Model.ScreenLayoutModel(item, imgPath, livelyPropertyFilePath, item.DeviceNumber)); + } } foreach (var item in unsortedScreenItems.OrderBy(x => x.Screen.Bounds.X).ToList()) diff --git a/src/livelywpf/livelywpf/ViewModel/SettingsViewModel.cs b/src/livelywpf/livelywpf/ViewModel/SettingsViewModel.cs index f1b01792..4f8958ab 100644 --- a/src/livelywpf/livelywpf/ViewModel/SettingsViewModel.cs +++ b/src/livelywpf/livelywpf/ViewModel/SettingsViewModel.cs @@ -84,6 +84,7 @@ public SettingsViewModel() MoveExistingWallpaperNewDir = Settings.WallpaperDirMoveExistingWallpaperNewDir; GlobalWallpaperVolume = Settings.AudioVolumeGlobal; SelectedWallpaperScalingIndex = (int)Settings.WallpaperScaling; + CefDiskCache = Settings.CefDiskCache; } private SettingsModel _settings; @@ -528,6 +529,22 @@ public string WebDebuggingPort } } + private bool _cefDiskCache; + public bool CefDiskCache + { + get { return _cefDiskCache; } + set + { + _cefDiskCache = value; + if(Settings.CefDiskCache != _cefDiskCache) + { + Settings.CefDiskCache = _cefDiskCache; + UpdateConfigFile(); + } + OnPropertyChanged("CefDiskCache"); + } + } + private bool _detectStreamWallpaper; public bool DetectStreamWallpaper { diff --git a/src/livelywpf/livelywpf/Views/Dialogues/WallpaperPreviewWindow.xaml b/src/livelywpf/livelywpf/Views/Dialogues/WallpaperPreviewWindow.xaml new file mode 100644 index 00000000..59516581 --- /dev/null +++ b/src/livelywpf/livelywpf/Views/Dialogues/WallpaperPreviewWindow.xaml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/src/livelywpf/livelywpf/Views/Dialogues/WallpaperPreviewWindow.xaml.cs b/src/livelywpf/livelywpf/Views/Dialogues/WallpaperPreviewWindow.xaml.cs new file mode 100644 index 00000000..b6766e4b --- /dev/null +++ b/src/livelywpf/livelywpf/Views/Dialogues/WallpaperPreviewWindow.xaml.cs @@ -0,0 +1,126 @@ +using System; +using System.Windows; +using livelywpf.Core; + +namespace livelywpf.Views +{ + /// + /// Interaction logic for WallpaperPreviewWindow.xaml + /// + public partial class WallpaperPreviewWindow : Window + { + private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); + private readonly LibraryModel wallpaperData; + private IWallpaper wallpaper = null; + private bool _initializedWallpaper = false; + public WallpaperPreviewWindow(LibraryModel wp) + { + InitializeComponent(); + this.wallpaperData = wp; + } + + private void Window_Loaded(object sender, RoutedEventArgs e) + { + LoadWallpaper(wallpaperData); + } + + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + if(!_initializedWallpaper) + { + e.Cancel = true; + return; + } + + if(wallpaper != null) + { + //detach wallpaper window from this dialogue. + WindowOperations.SetParentSafe(wallpaper.GetHWND(), IntPtr.Zero); + wallpaper.Terminate(); + } + } + + private void LoadWallpaper(LibraryModel wp) + { + var targetDisplay = Program.SettingsVM.Settings.SelectedDisplay; + if (wp.LivelyInfo.Type == WallpaperType.web + || wp.LivelyInfo.Type == WallpaperType.webaudio + || wp.LivelyInfo.Type == WallpaperType.url) + { + wp.ItemStartup = true; + var item = new WebProcess(wp.FilePath, wp, targetDisplay); + item.WindowInitialized += SetupDesktop_WallpaperInitialized; + item.Show(); + } + if (wp.LivelyInfo.Type == WallpaperType.app + || wp.LivelyInfo.Type == WallpaperType.godot + || wp.LivelyInfo.Type == WallpaperType.unity) + { + MessageBox.Show("not supported currently"); + this.Close(); + } + else if (wp.LivelyInfo.Type == WallpaperType.video) + { + wp.ItemStartup = true; + var item = new VideoPlayerMPVExt(wp.FilePath, wp, targetDisplay, + Program.SettingsVM.Settings.WallpaperScaling); + item.WindowInitialized += SetupDesktop_WallpaperInitialized; + item.Show(); + } + else if (wp.LivelyInfo.Type == WallpaperType.videostream) + { + wp.ItemStartup = true; + var item = new VideoPlayerVLC(wp.FilePath, wp, targetDisplay); + item.WindowInitialized += SetupDesktop_WallpaperInitialized; + item.Show(); + } + else if (wp.LivelyInfo.Type == WallpaperType.gif) + { + var item = new GIFPlayerUWP(wp.FilePath, wp, + targetDisplay, Program.SettingsVM.Settings.WallpaperScaling); + item.WindowInitialized += SetupDesktop_WallpaperInitialized; + item.Show(); + } + } + + private void SetupDesktop_WallpaperInitialized(object sender, WindowInitializedArgs e) + { + try + { + _initializedWallpaper = true; + wallpaper = (IWallpaper)sender; + wallpaper.WindowInitialized -= SetupDesktop_WallpaperInitialized; + _ = this.Dispatcher.BeginInvoke(new Action(() => { + wallpaper.GetWallpaperData().ItemStartup = false; + ProgressRing.IsActive = false; + })); + + if (e.Success) + { + _ = this.Dispatcher.BeginInvoke(new Action(() => { + //attach wp hwnd to border ui element. + WindowOperations.SetProgramToFramework(this, wallpaper.GetHWND(), PreviewBorder); + })); + } + else + { + Logger.Error("Wallpaper Preview: Failed to launch wallpaper: " + e.Msg + "\n" + e.Error.ToString()); + MessageBox.Show(e.Error.Message, Properties.Resources.TitleAppName); + _ = this.Dispatcher.BeginInvoke(new Action(() => { + this.Close(); + })); + } + } + catch (Exception ex) + { + Logger.Error("Wallpaper Preview: Failed processing wallpaper: " + ex.ToString()); + if (wallpaper != null) + { + _ = this.Dispatcher.BeginInvoke(new Action(() => { + this.Close(); + })); + } + } + } + } +} diff --git a/src/livelywpf/livelywpf/Views/Main/AddWallpaperView.xaml b/src/livelywpf/livelywpf/Views/Main/AddWallpaperView.xaml index a5607eda..478dd555 100644 --- a/src/livelywpf/livelywpf/Views/Main/AddWallpaperView.xaml +++ b/src/livelywpf/livelywpf/Views/Main/AddWallpaperView.xaml @@ -14,7 +14,7 @@ - diff --git a/src/livelywpf/livelywpf/Views/Main/LibraryView.xaml.cs b/src/livelywpf/livelywpf/Views/Main/LibraryView.xaml.cs index 960e82e9..1bd74990 100644 --- a/src/livelywpf/livelywpf/Views/Main/LibraryView.xaml.cs +++ b/src/livelywpf/livelywpf/Views/Main/LibraryView.xaml.cs @@ -48,7 +48,8 @@ private void LivelyGridView_ChildChanged(object sender, EventArgs e) TextExportZip = Properties.Resources.TextExportWallpaperZip, TextInformation = Properties.Resources.TitleAbout, TextSetWallpaper = Properties.Resources.TextSetWallpaper, - TextShowDisk = Properties.Resources.TextShowOnDisk + TextShowDisk = Properties.Resources.TextShowOnDisk, + TextPreviewWallpaper = Properties.Resources.TextPreviewWallpaper }; LivelyGridControl.GridElementSize((livelygrid.GridSize)Program.SettingsVM.SelectedTileSizeIndex); LivelyGridControl.ContextMenuClick += LivelyGridControl_ContextMenuClick; @@ -77,6 +78,14 @@ private async void LivelyGridControl_ContextMenuClick(object sender, object e) await this.Dispatcher.InvokeAsync(new Action(async () => { switch (s.Name) { + case "previewWallpaper": + var prev = new WallpaperPreviewWindow((LibraryModel)e) + { + WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner, + Owner = App.AppWindow + }; + prev.Show(); + break; case "showOnDisk": Program.LibraryVM.WallpaperShowOnDisk(e); break; diff --git a/src/livelywpf/livelywpf/Views/Screen/ScreenLayoutView.xaml.cs b/src/livelywpf/livelywpf/Views/Screen/ScreenLayoutView.xaml.cs index ebe92b4d..a1566231 100644 --- a/src/livelywpf/livelywpf/Views/Screen/ScreenLayoutView.xaml.cs +++ b/src/livelywpf/livelywpf/Views/Screen/ScreenLayoutView.xaml.cs @@ -50,7 +50,7 @@ private void SetupDesktop_WallpaperChanged(object sender, EventArgs e) private void CreateLabelWindows() { - if(ScreenHelper.IsMultiScreen() && Program.SettingsVM.Settings.WallpaperArrangement != WallpaperArrangement.span) + if(ScreenHelper.IsMultiScreen()) { foreach (var item in ScreenHelper.GetScreen()) { diff --git a/src/livelywpf/livelywpf/WallpaperViews/VLCElement.xaml.cs b/src/livelywpf/livelywpf/WallpaperViews/VLCElement.xaml.cs index eb55f175..53430b87 100644 --- a/src/livelywpf/livelywpf/WallpaperViews/VLCElement.xaml.cs +++ b/src/livelywpf/livelywpf/WallpaperViews/VLCElement.xaml.cs @@ -142,11 +142,14 @@ private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs { try { - _mediaReady = false; - _mediaPlayer.EndReached -= _mediaPlayer_EndReached; - _mediaPlayer.Dispose(); - _libVLC.Dispose(); - _media.Dispose(); + if(_mediaReady) + { + _mediaReady = false; + _mediaPlayer.EndReached -= _mediaPlayer_EndReached; + _mediaPlayer.Dispose(); + _libVLC.Dispose(); + _media.Dispose(); + } } catch (Exception ex) { diff --git a/src/livelywpf/livelywpf/livelywpf.csproj b/src/livelywpf/livelywpf/livelywpf.csproj index 283d4d50..b5ff5a12 100644 --- a/src/livelywpf/livelywpf/livelywpf.csproj +++ b/src/livelywpf/livelywpf/livelywpf.csproj @@ -10,7 +10,11 @@ livelywpf.Program appicon.ico 1.0.0 - 1.0.5.0 + 1.0.7.0 + + + + TRACE @@ -28,7 +32,7 @@ - +