From 2e4477ca124338797d5b9ba77661c01cf18fae0a Mon Sep 17 00:00:00 2001 From: tylearymf Date: Wed, 6 Jan 2021 17:34:17 +0800 Subject: [PATCH] Add 3.x Project --- .editorconfig | 201 + .gitignore | 162 +- README.md | 64 + SETUNA.sln | 42 + SETUNA/ClickCapture.Designer.cs | 56 + SETUNA/ClickCapture.cs | 338 + SETUNA/ClickCapture.resx | 123 + SETUNA/FodyWeavers.xml | 3 + SETUNA/FodyWeavers.xsd | 111 + SETUNA/Main/Cache/CacheItem.cs | 160 + SETUNA/Main/Cache/CacheManager.cs | 160 + SETUNA/Main/CaptureForm.Designer.cs | 62 + SETUNA/Main/CaptureForm.cs | 738 ++ SETUNA/Main/CaptureForm.resx | 123 + SETUNA/Main/CaptureInfo.Designer.cs | 55 + SETUNA/Main/CaptureInfo.cs | 219 + SETUNA/Main/CaptureInfo.resx | 120 + SETUNA/Main/CaptureSelLine.Designer.cs | 49 + SETUNA/Main/CaptureSelLine.cs | 150 + SETUNA/Main/CaptureSelLine.resx | 120 + SETUNA/Main/Common/BaseForm.cs | 17 + SETUNA/Main/Common/Utils.cs | 9 + SETUNA/Main/Common/WindowsAPI.cs | 135 + SETUNA/Main/ContextStyleMenuStrip.Designer.cs | 44 + SETUNA/Main/ContextStyleMenuStrip.cs | 42 + SETUNA/Main/ContextStyleMenuStrip.resx | 123 + SETUNA/Main/Extensions/ExtensionAttribute.cs | 9 + SETUNA/Main/Extensions/Extensions.cs | 12 + SETUNA/Main/HotKeyID.cs | 10 + SETUNA/Main/HotkeyControl.Designer.cs | 37 + SETUNA/Main/HotkeyControl.cs | 82 + SETUNA/Main/HotkeyMsg.Designer.cs | 136 + SETUNA/Main/HotkeyMsg.cs | 57 + SETUNA/Main/HotkeyMsg.resx | 120 + SETUNA/Main/IFormActivatedListener.cs | 7 + SETUNA/Main/IFormDeactivatedListener.cs | 7 + SETUNA/Main/IScrapAddedListener.cs | 9 + SETUNA/Main/IScrapImageChangedListener.cs | 9 + SETUNA/Main/IScrapKeyPressEventListener.cs | 9 + SETUNA/Main/IScrapLocationChangedListener.cs | 9 + SETUNA/Main/IScrapMenuListener.cs | 9 + SETUNA/Main/IScrapRemovedListener.cs | 9 + SETUNA/Main/IScrapStyleAppliedListener.cs | 9 + SETUNA/Main/IScrapStyleListener.cs | 21 + SETUNA/Main/IScrapStyleRemovedListener.cs | 9 + SETUNA/Main/KeyItems/IKeyItemListener.cs | 11 + SETUNA/Main/KeyItems/KeyItem.cs | 98 + SETUNA/Main/KeyItems/KeyItemBook.cs | 45 + SETUNA/Main/Layer/IWindowFilter.cs | 7 + SETUNA/Main/Layer/LayerManager.cs | 308 + SETUNA/Main/Layer/WindowsFilter.cs | 72 + SETUNA/Main/Option/OptionForm.Designer.cs | 1764 ++++ SETUNA/Main/Option/OptionForm.cs | 767 ++ SETUNA/Main/Option/OptionForm.resx | 123 + SETUNA/Main/Option/SetunaOption.cs | 1120 +++ SETUNA/Main/Option/StyleEditForm.Designer.cs | 455 + SETUNA/Main/Option/StyleEditForm.cs | 292 + SETUNA/Main/Option/StyleEditForm.resx | 126 + SETUNA/Main/RGBColor.cs | 66 + SETUNA/Main/ScrapBase.Designer.cs | 58 + SETUNA/Main/ScrapBase.cs | 1061 +++ SETUNA/Main/ScrapBase.resx | 123 + SETUNA/Main/ScrapBook.cs | 360 + SETUNA/Main/ScrapEventArgs.cs | 22 + SETUNA/Main/ScrapKeyPressEventArgs.cs | 12 + SETUNA/Main/ScrapMenuArgs.cs | 27 + SETUNA/Main/ScrapMenuItem.cs | 52 + SETUNA/Main/ScrapSource.cs | 31 + SETUNA/Main/ScrapSourceImage.cs | 51 + SETUNA/Main/ScrapSourcePath.cs | 50 + SETUNA/Main/SelLineType.cs | 11 + SETUNA/Main/SetunaListBox.cs | 232 + SETUNA/Main/SplashForm.Designer.cs | 113 + SETUNA/Main/SplashForm.cs | 36 + SETUNA/Main/SplashForm.resx | 123 + SETUNA/Main/Startup/AutoStartup.cs | 80 + SETUNA/Main/Style/CAllHideStyle.cs | 22 + SETUNA/Main/Style/CAllShowStyle.cs | 22 + SETUNA/Main/Style/CCaptureStyle.cs | 20 + SETUNA/Main/Style/CCloseStyle.cs | 23 + SETUNA/Main/Style/CDustBoxStyle.cs | 21 + SETUNA/Main/Style/CDustEraseStyle.cs | 19 + SETUNA/Main/Style/COptionStyle.cs | 20 + SETUNA/Main/Style/CPreStyle.cs | 17 + SETUNA/Main/Style/CPreStyles.cs | 39 + SETUNA/Main/Style/CScrapListStyle.cs | 21 + SETUNA/Main/Style/CSeparatorStyle.cs | 21 + SETUNA/Main/Style/CShowVersionStyle.cs | 20 + SETUNA/Main/Style/CShutDownStyle.cs | 20 + SETUNA/Main/Style/CStyle.cs | 276 + SETUNA/Main/Style/IStyleMenu.cs | 11 + SETUNA/Main/StyleItemEditListBox.cs | 52 + SETUNA/Main/StyleItemListBox.cs | 100 + SETUNA/Main/StyleItems/AddLayerCommand.cs | 50 + SETUNA/Main/StyleItems/AddTextLayerCommand.cs | 41 + SETUNA/Main/StyleItems/CCloseStyleItem.cs | 55 + SETUNA/Main/StyleItems/CCompactStyleItem.cs | 83 + SETUNA/Main/StyleItems/CCopyStyleItem.cs | 95 + SETUNA/Main/StyleItems/CImageBmpStyleItem.cs | 77 + SETUNA/Main/StyleItems/CImageJpegStyleItem.cs | 113 + SETUNA/Main/StyleItems/CImagePngStyleItem.cs | 92 + SETUNA/Main/StyleItems/CImageStyleItem.cs | 257 + SETUNA/Main/StyleItems/CMarginStyleItem.cs | 168 + SETUNA/Main/StyleItems/CMoveStyleItem.cs | 173 + SETUNA/Main/StyleItems/COpacityStyleItem.cs | 123 + SETUNA/Main/StyleItems/CPaintStyleItem.cs | 53 + SETUNA/Main/StyleItems/CPasteStyleItem.cs | 90 + .../StyleItems/CPicasaUploaderStyleItem.cs | 146 + SETUNA/Main/StyleItems/CRotateStyleItem.cs | 115 + SETUNA/Main/StyleItems/CScaleStyleItem.cs | 210 + SETUNA/Main/StyleItems/CStyleItem.cs | 100 + SETUNA/Main/StyleItems/CTimerStyleItem.cs | 103 + .../Main/StyleItems/CToneReverseStyleItem.cs | 62 + SETUNA/Main/StyleItems/CTrimStyleItem.cs | 70 + SETUNA/Main/StyleItems/CWindowStyleItem.cs | 100 + .../Main/StyleItems/CompactScrap.Designer.cs | 54 + SETUNA/Main/StyleItems/CompactScrap.cs | 189 + SETUNA/Main/StyleItems/CompactScrap.resx | 120 + .../CompactStyleItemPanel.Designer.cs | 219 + .../Main/StyleItems/CompactStyleItemPanel.cs | 194 + .../StyleItems/CompactStyleItemPanel.resx | 123 + .../StyleItems/CopyStyleItemPanel.Designer.cs | 64 + SETUNA/Main/StyleItems/CopyStyleItemPanel.cs | 34 + .../Main/StyleItems/CopyStyleItemPanel.resx | 120 + SETUNA/Main/StyleItems/DeleteLayerCommand.cs | 30 + SETUNA/Main/StyleItems/ILayer.cs | 15 + SETUNA/Main/StyleItems/IPaintToolWindow.cs | 9 + SETUNA/Main/StyleItems/IScrapStyle.cs | 20 + SETUNA/Main/StyleItems/IStyleItemPanel.cs | 12 + .../ImageBmpStyleItemPanel.Designer.cs | 237 + .../Main/StyleItems/ImageBmpStyleItemPanel.cs | 140 + .../StyleItems/ImageBmpStyleItemPanel.resx | 123 + .../ImageJpegPreviewPanel.Designer.cs | 210 + .../Main/StyleItems/ImageJpegPreviewPanel.cs | 178 + .../StyleItems/ImageJpegPreviewPanel.resx | 126 + .../ImageJpegStyleItemPanel.Designer.cs | 330 + .../StyleItems/ImageJpegStyleItemPanel.cs | 150 + .../StyleItems/ImageJpegStyleItemPanel.resx | 123 + .../ImagePngPreviewPanel.Designer.cs | 168 + .../Main/StyleItems/ImagePngPreviewPanel.cs | 106 + .../Main/StyleItems/ImagePngPreviewPanel.resx | 123 + .../ImagePngStyleItemPanel.Designer.cs | 237 + .../Main/StyleItems/ImagePngStyleItemPanel.cs | 145 + .../StyleItems/ImagePngStyleItemPanel.resx | 123 + SETUNA/Main/StyleItems/LayerCommand.cs | 41 + .../StyleItems/LayerRenameWindow.Designer.cs | 113 + SETUNA/Main/StyleItems/LayerRenameWindow.cs | 34 + SETUNA/Main/StyleItems/LayerRenameWindow.resx | 123 + SETUNA/Main/StyleItems/LoginInput.Designer.cs | 149 + SETUNA/Main/StyleItems/LoginInput.cs | 68 + SETUNA/Main/StyleItems/LoginInput.resx | 120 + .../MarginStyleItemPanel.Designer.cs | 217 + .../Main/StyleItems/MarginStyleItemPanel.cs | 197 + .../Main/StyleItems/MarginStyleItemPanel.resx | 123 + .../StyleItems/MoveStyleItemPanel.Designer.cs | 175 + SETUNA/Main/StyleItems/MoveStyleItemPanel.cs | 154 + .../Main/StyleItems/MoveStyleItemPanel.resx | 120 + .../NothingStyleItemPanel.Designer.cs | 47 + .../Main/StyleItems/NothingStyleItemPanel.cs | 25 + .../StyleItems/NothingStyleItemPanel.resx | 120 + .../OpacityStyleItemPanel.Designer.cs | 277 + .../Main/StyleItems/OpacityStyleItemPanel.cs | 217 + .../StyleItems/OpacityStyleItemPanel.resx | 120 + SETUNA/Main/StyleItems/PaintForm.Designer.cs | 60 + SETUNA/Main/StyleItems/PaintForm.cs | 56 + SETUNA/Main/StyleItems/PaintForm.resx | 120 + SETUNA/Main/StyleItems/PaintTool.cs | 146 + SETUNA/Main/StyleItems/PenButton.cs | 51 + SETUNA/Main/StyleItems/PenTool.cs | 135 + SETUNA/Main/StyleItems/PenToolCommand.cs | 47 + SETUNA/Main/StyleItems/PicasaBar.Designer.cs | 86 + SETUNA/Main/StyleItems/PicasaBar.cs | 345 + SETUNA/Main/StyleItems/PicasaBar.resx | 123 + .../PicasaStyleItemPanel.Designer.cs | 183 + .../Main/StyleItems/PicasaStyleItemPanel.cs | 111 + .../Main/StyleItems/PicasaStyleItemPanel.resx | 120 + SETUNA/Main/StyleItems/RenameLayerCommand.cs | 30 + .../RotateStyleItemPanel.Designer.cs | 225 + .../Main/StyleItems/RotateStyleItemPanel.cs | 155 + .../Main/StyleItems/RotateStyleItemPanel.resx | 120 + .../SaveImageStyleItemPanel.Designer.cs | 258 + .../StyleItems/SaveImageStyleItemPanel.cs | 37 + .../StyleItems/SaveImageStyleItemPanel.resx | 120 + .../ScaleStyleItemPanel.Designer.cs | 235 + SETUNA/Main/StyleItems/ScaleStyleItemPanel.cs | 152 + .../Main/StyleItems/ScaleStyleItemPanel.resx | 120 + .../Main/StyleItems/ScrapDrawForm.Designer.cs | 50 + SETUNA/Main/StyleItems/ScrapDrawForm.cs | 146 + SETUNA/Main/StyleItems/ScrapDrawForm.resx | 120 + .../StyleItems/ScrapPaintLayer.Designer.cs | 140 + SETUNA/Main/StyleItems/ScrapPaintLayer.cs | 318 + SETUNA/Main/StyleItems/ScrapPaintLayer.resx | 120 + SETUNA/Main/StyleItems/ScrapPaintLayerItem.cs | 267 + .../Main/StyleItems/ScrapPaintLayerItem.resx | 120 + .../StyleItems/ScrapPaintPenTool.Designer.cs | 314 + SETUNA/Main/StyleItems/ScrapPaintPenTool.cs | 97 + SETUNA/Main/StyleItems/ScrapPaintPenTool.resx | 123 + .../StyleItems/ScrapPaintTextLayerItem.cs | 80 + .../StyleItems/ScrapPaintTextLayerItem.resx | 120 + .../StyleItems/ScrapPaintTextTool.Designer.cs | 201 + SETUNA/Main/StyleItems/ScrapPaintTextTool.cs | 81 + .../Main/StyleItems/ScrapPaintTextTool.resx | 123 + .../StyleItems/ScrapPaintToolBar.Designer.cs | 224 + SETUNA/Main/StyleItems/ScrapPaintToolBar.cs | 204 + SETUNA/Main/StyleItems/ScrapPaintToolBar.resx | 126 + .../StyleItems/ScrapPaintWindow.Designer.cs | 20 + SETUNA/Main/StyleItems/ScrapPaintWindow.cs | 290 + SETUNA/Main/StyleItems/ScrapPaintWindow.resx | 120 + SETUNA/Main/StyleItems/StyleItemDictionary.cs | 83 + SETUNA/Main/StyleItems/TextTool.cs | 221 + SETUNA/Main/StyleItems/TextToolCommand.cs | 54 + .../TimerStyleItemPanel.Designer.cs | 92 + SETUNA/Main/StyleItems/TimerStyleItemPanel.cs | 30 + .../Main/StyleItems/TimerStyleItemPanel.resx | 120 + .../Main/StyleItems/ToolBoxForm.Designer.cs | 80 + SETUNA/Main/StyleItems/ToolBoxForm.cs | 63 + SETUNA/Main/StyleItems/ToolBoxForm.resx | 120 + SETUNA/Main/StyleItems/ToolCommand.cs | 26 + SETUNA/Main/StyleItems/TrimWindow.Designer.cs | 20 + SETUNA/Main/StyleItems/TrimWindow.cs | 405 + SETUNA/Main/StyleItems/TrimWindow.resx | 120 + .../WindowStyleItemPanel.Designer.cs | 95 + .../Main/StyleItems/WindowStyleItemPanel.cs | 30 + .../Main/StyleItems/WindowStyleItemPanel.resx | 120 + SETUNA/Main/ToolStripAbstractList.cs | 122 + SETUNA/Main/ToolStripDustboxList.cs | 32 + SETUNA/Main/ToolStripEx.cs | 161 + SETUNA/Main/ToolStripScrapList.cs | 30 + SETUNA/Main/ToolStripStyleButton.cs | 54 + SETUNA/Main/Window/FormManager.cs | 53 + SETUNA/Main/Window/WindowManager.cs | 105 + SETUNA/Mainform.Designer.cs | 169 + SETUNA/Mainform.cs | 955 +++ SETUNA/Mainform.resx | 7362 +++++++++++++++++ SETUNA/Program.cs | 33 + SETUNA/Properties/AssemblyInfo.cs | 15 + SETUNA/Properties/Resources.Designer.cs | 312 + SETUNA/Properties/Resources.resx | 31 + SETUNA/Properties/Settings.Designer.cs | 26 + SETUNA/Properties/Settings.settings | 5 + SETUNA/Resources/Image.cs | 82 + SETUNA/Resources/Image.resx | 30 + SETUNA/SETUNA.csproj | 688 ++ SETUNA/SETUNA.ico | Bin 0 -> 216358 bytes SETUNA/app.config | 10 + SETUNA/app.manifest | 51 + SETUNA/com/clearunit/DesCrypto.cs | 62 + SETUNA/com/clearunit/ISingletonForm.cs | 9 + SETUNA/com/clearunit/PicasaAccessor.cs | 374 + SETUNA/com/clearunit/PicasaLoginError.cs | 29 + SETUNA/com/clearunit/PicasaUploadError.cs | 23 + .../com/clearunit/SingletonAppRemoteObject.cs | 24 + SETUNA/com/clearunit/SingletonApplication.cs | 112 + SETUNA/com/clearunit/WithoutTabControl.cs | 28 + SETUNA/packages.config | 6 + SETUNATests/Main/Layer/LayerManagerTests.cs | 80 + SETUNATests/Properties/AssemblyInfo.cs | 35 + SETUNATests/SETUNATests.csproj | 107 + SETUNATests/packages.config | 5 + ...5\345\247\213\351\205\215\347\275\256.txt" | 1 + 260 files changed, 40266 insertions(+), 27 deletions(-) create mode 100644 .editorconfig create mode 100644 README.md create mode 100644 SETUNA.sln create mode 100644 SETUNA/ClickCapture.Designer.cs create mode 100644 SETUNA/ClickCapture.cs create mode 100644 SETUNA/ClickCapture.resx create mode 100644 SETUNA/FodyWeavers.xml create mode 100644 SETUNA/FodyWeavers.xsd create mode 100644 SETUNA/Main/Cache/CacheItem.cs create mode 100644 SETUNA/Main/Cache/CacheManager.cs create mode 100644 SETUNA/Main/CaptureForm.Designer.cs create mode 100644 SETUNA/Main/CaptureForm.cs create mode 100644 SETUNA/Main/CaptureForm.resx create mode 100644 SETUNA/Main/CaptureInfo.Designer.cs create mode 100644 SETUNA/Main/CaptureInfo.cs create mode 100644 SETUNA/Main/CaptureInfo.resx create mode 100644 SETUNA/Main/CaptureSelLine.Designer.cs create mode 100644 SETUNA/Main/CaptureSelLine.cs create mode 100644 SETUNA/Main/CaptureSelLine.resx create mode 100644 SETUNA/Main/Common/BaseForm.cs create mode 100644 SETUNA/Main/Common/Utils.cs create mode 100644 SETUNA/Main/Common/WindowsAPI.cs create mode 100644 SETUNA/Main/ContextStyleMenuStrip.Designer.cs create mode 100644 SETUNA/Main/ContextStyleMenuStrip.cs create mode 100644 SETUNA/Main/ContextStyleMenuStrip.resx create mode 100644 SETUNA/Main/Extensions/ExtensionAttribute.cs create mode 100644 SETUNA/Main/Extensions/Extensions.cs create mode 100644 SETUNA/Main/HotKeyID.cs create mode 100644 SETUNA/Main/HotkeyControl.Designer.cs create mode 100644 SETUNA/Main/HotkeyControl.cs create mode 100644 SETUNA/Main/HotkeyMsg.Designer.cs create mode 100644 SETUNA/Main/HotkeyMsg.cs create mode 100644 SETUNA/Main/HotkeyMsg.resx create mode 100644 SETUNA/Main/IFormActivatedListener.cs create mode 100644 SETUNA/Main/IFormDeactivatedListener.cs create mode 100644 SETUNA/Main/IScrapAddedListener.cs create mode 100644 SETUNA/Main/IScrapImageChangedListener.cs create mode 100644 SETUNA/Main/IScrapKeyPressEventListener.cs create mode 100644 SETUNA/Main/IScrapLocationChangedListener.cs create mode 100644 SETUNA/Main/IScrapMenuListener.cs create mode 100644 SETUNA/Main/IScrapRemovedListener.cs create mode 100644 SETUNA/Main/IScrapStyleAppliedListener.cs create mode 100644 SETUNA/Main/IScrapStyleListener.cs create mode 100644 SETUNA/Main/IScrapStyleRemovedListener.cs create mode 100644 SETUNA/Main/KeyItems/IKeyItemListener.cs create mode 100644 SETUNA/Main/KeyItems/KeyItem.cs create mode 100644 SETUNA/Main/KeyItems/KeyItemBook.cs create mode 100644 SETUNA/Main/Layer/IWindowFilter.cs create mode 100644 SETUNA/Main/Layer/LayerManager.cs create mode 100644 SETUNA/Main/Layer/WindowsFilter.cs create mode 100644 SETUNA/Main/Option/OptionForm.Designer.cs create mode 100644 SETUNA/Main/Option/OptionForm.cs create mode 100644 SETUNA/Main/Option/OptionForm.resx create mode 100644 SETUNA/Main/Option/SetunaOption.cs create mode 100644 SETUNA/Main/Option/StyleEditForm.Designer.cs create mode 100644 SETUNA/Main/Option/StyleEditForm.cs create mode 100644 SETUNA/Main/Option/StyleEditForm.resx create mode 100644 SETUNA/Main/RGBColor.cs create mode 100644 SETUNA/Main/ScrapBase.Designer.cs create mode 100644 SETUNA/Main/ScrapBase.cs create mode 100644 SETUNA/Main/ScrapBase.resx create mode 100644 SETUNA/Main/ScrapBook.cs create mode 100644 SETUNA/Main/ScrapEventArgs.cs create mode 100644 SETUNA/Main/ScrapKeyPressEventArgs.cs create mode 100644 SETUNA/Main/ScrapMenuArgs.cs create mode 100644 SETUNA/Main/ScrapMenuItem.cs create mode 100644 SETUNA/Main/ScrapSource.cs create mode 100644 SETUNA/Main/ScrapSourceImage.cs create mode 100644 SETUNA/Main/ScrapSourcePath.cs create mode 100644 SETUNA/Main/SelLineType.cs create mode 100644 SETUNA/Main/SetunaListBox.cs create mode 100644 SETUNA/Main/SplashForm.Designer.cs create mode 100644 SETUNA/Main/SplashForm.cs create mode 100644 SETUNA/Main/SplashForm.resx create mode 100644 SETUNA/Main/Startup/AutoStartup.cs create mode 100644 SETUNA/Main/Style/CAllHideStyle.cs create mode 100644 SETUNA/Main/Style/CAllShowStyle.cs create mode 100644 SETUNA/Main/Style/CCaptureStyle.cs create mode 100644 SETUNA/Main/Style/CCloseStyle.cs create mode 100644 SETUNA/Main/Style/CDustBoxStyle.cs create mode 100644 SETUNA/Main/Style/CDustEraseStyle.cs create mode 100644 SETUNA/Main/Style/COptionStyle.cs create mode 100644 SETUNA/Main/Style/CPreStyle.cs create mode 100644 SETUNA/Main/Style/CPreStyles.cs create mode 100644 SETUNA/Main/Style/CScrapListStyle.cs create mode 100644 SETUNA/Main/Style/CSeparatorStyle.cs create mode 100644 SETUNA/Main/Style/CShowVersionStyle.cs create mode 100644 SETUNA/Main/Style/CShutDownStyle.cs create mode 100644 SETUNA/Main/Style/CStyle.cs create mode 100644 SETUNA/Main/Style/IStyleMenu.cs create mode 100644 SETUNA/Main/StyleItemEditListBox.cs create mode 100644 SETUNA/Main/StyleItemListBox.cs create mode 100644 SETUNA/Main/StyleItems/AddLayerCommand.cs create mode 100644 SETUNA/Main/StyleItems/AddTextLayerCommand.cs create mode 100644 SETUNA/Main/StyleItems/CCloseStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CCompactStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CCopyStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CImageBmpStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CImageJpegStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CImagePngStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CImageStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CMarginStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CMoveStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/COpacityStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CPaintStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CPasteStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CPicasaUploaderStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CRotateStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CScaleStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CTimerStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CToneReverseStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CTrimStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CWindowStyleItem.cs create mode 100644 SETUNA/Main/StyleItems/CompactScrap.Designer.cs create mode 100644 SETUNA/Main/StyleItems/CompactScrap.cs create mode 100644 SETUNA/Main/StyleItems/CompactScrap.resx create mode 100644 SETUNA/Main/StyleItems/CompactStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/CompactStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/CompactStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/CopyStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/CopyStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/CopyStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/DeleteLayerCommand.cs create mode 100644 SETUNA/Main/StyleItems/ILayer.cs create mode 100644 SETUNA/Main/StyleItems/IPaintToolWindow.cs create mode 100644 SETUNA/Main/StyleItems/IScrapStyle.cs create mode 100644 SETUNA/Main/StyleItems/IStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/ImageJpegPreviewPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ImageJpegPreviewPanel.cs create mode 100644 SETUNA/Main/StyleItems/ImageJpegPreviewPanel.resx create mode 100644 SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/ImagePngPreviewPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ImagePngPreviewPanel.cs create mode 100644 SETUNA/Main/StyleItems/ImagePngPreviewPanel.resx create mode 100644 SETUNA/Main/StyleItems/ImagePngStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ImagePngStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/ImagePngStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/LayerCommand.cs create mode 100644 SETUNA/Main/StyleItems/LayerRenameWindow.Designer.cs create mode 100644 SETUNA/Main/StyleItems/LayerRenameWindow.cs create mode 100644 SETUNA/Main/StyleItems/LayerRenameWindow.resx create mode 100644 SETUNA/Main/StyleItems/LoginInput.Designer.cs create mode 100644 SETUNA/Main/StyleItems/LoginInput.cs create mode 100644 SETUNA/Main/StyleItems/LoginInput.resx create mode 100644 SETUNA/Main/StyleItems/MarginStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/MarginStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/MarginStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/MoveStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/MoveStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/MoveStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/NothingStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/NothingStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/NothingStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/OpacityStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/OpacityStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/OpacityStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/PaintForm.Designer.cs create mode 100644 SETUNA/Main/StyleItems/PaintForm.cs create mode 100644 SETUNA/Main/StyleItems/PaintForm.resx create mode 100644 SETUNA/Main/StyleItems/PaintTool.cs create mode 100644 SETUNA/Main/StyleItems/PenButton.cs create mode 100644 SETUNA/Main/StyleItems/PenTool.cs create mode 100644 SETUNA/Main/StyleItems/PenToolCommand.cs create mode 100644 SETUNA/Main/StyleItems/PicasaBar.Designer.cs create mode 100644 SETUNA/Main/StyleItems/PicasaBar.cs create mode 100644 SETUNA/Main/StyleItems/PicasaBar.resx create mode 100644 SETUNA/Main/StyleItems/PicasaStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/PicasaStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/PicasaStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/RenameLayerCommand.cs create mode 100644 SETUNA/Main/StyleItems/RotateStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/RotateStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/RotateStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/SaveImageStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/SaveImageStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/SaveImageStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/ScaleStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ScaleStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/ScaleStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/ScrapDrawForm.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ScrapDrawForm.cs create mode 100644 SETUNA/Main/StyleItems/ScrapDrawForm.resx create mode 100644 SETUNA/Main/StyleItems/ScrapPaintLayer.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintLayer.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintLayer.resx create mode 100644 SETUNA/Main/StyleItems/ScrapPaintLayerItem.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintLayerItem.resx create mode 100644 SETUNA/Main/StyleItems/ScrapPaintPenTool.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintPenTool.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintPenTool.resx create mode 100644 SETUNA/Main/StyleItems/ScrapPaintTextLayerItem.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintTextLayerItem.resx create mode 100644 SETUNA/Main/StyleItems/ScrapPaintTextTool.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintTextTool.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintTextTool.resx create mode 100644 SETUNA/Main/StyleItems/ScrapPaintToolBar.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintToolBar.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintToolBar.resx create mode 100644 SETUNA/Main/StyleItems/ScrapPaintWindow.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintWindow.cs create mode 100644 SETUNA/Main/StyleItems/ScrapPaintWindow.resx create mode 100644 SETUNA/Main/StyleItems/StyleItemDictionary.cs create mode 100644 SETUNA/Main/StyleItems/TextTool.cs create mode 100644 SETUNA/Main/StyleItems/TextToolCommand.cs create mode 100644 SETUNA/Main/StyleItems/TimerStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/TimerStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/TimerStyleItemPanel.resx create mode 100644 SETUNA/Main/StyleItems/ToolBoxForm.Designer.cs create mode 100644 SETUNA/Main/StyleItems/ToolBoxForm.cs create mode 100644 SETUNA/Main/StyleItems/ToolBoxForm.resx create mode 100644 SETUNA/Main/StyleItems/ToolCommand.cs create mode 100644 SETUNA/Main/StyleItems/TrimWindow.Designer.cs create mode 100644 SETUNA/Main/StyleItems/TrimWindow.cs create mode 100644 SETUNA/Main/StyleItems/TrimWindow.resx create mode 100644 SETUNA/Main/StyleItems/WindowStyleItemPanel.Designer.cs create mode 100644 SETUNA/Main/StyleItems/WindowStyleItemPanel.cs create mode 100644 SETUNA/Main/StyleItems/WindowStyleItemPanel.resx create mode 100644 SETUNA/Main/ToolStripAbstractList.cs create mode 100644 SETUNA/Main/ToolStripDustboxList.cs create mode 100644 SETUNA/Main/ToolStripEx.cs create mode 100644 SETUNA/Main/ToolStripScrapList.cs create mode 100644 SETUNA/Main/ToolStripStyleButton.cs create mode 100644 SETUNA/Main/Window/FormManager.cs create mode 100644 SETUNA/Main/Window/WindowManager.cs create mode 100644 SETUNA/Mainform.Designer.cs create mode 100644 SETUNA/Mainform.cs create mode 100644 SETUNA/Mainform.resx create mode 100644 SETUNA/Program.cs create mode 100644 SETUNA/Properties/AssemblyInfo.cs create mode 100644 SETUNA/Properties/Resources.Designer.cs create mode 100644 SETUNA/Properties/Resources.resx create mode 100644 SETUNA/Properties/Settings.Designer.cs create mode 100644 SETUNA/Properties/Settings.settings create mode 100644 SETUNA/Resources/Image.cs create mode 100644 SETUNA/Resources/Image.resx create mode 100644 SETUNA/SETUNA.csproj create mode 100644 SETUNA/SETUNA.ico create mode 100644 SETUNA/app.config create mode 100644 SETUNA/app.manifest create mode 100644 SETUNA/com/clearunit/DesCrypto.cs create mode 100644 SETUNA/com/clearunit/ISingletonForm.cs create mode 100644 SETUNA/com/clearunit/PicasaAccessor.cs create mode 100644 SETUNA/com/clearunit/PicasaLoginError.cs create mode 100644 SETUNA/com/clearunit/PicasaUploadError.cs create mode 100644 SETUNA/com/clearunit/SingletonAppRemoteObject.cs create mode 100644 SETUNA/com/clearunit/SingletonApplication.cs create mode 100644 SETUNA/com/clearunit/WithoutTabControl.cs create mode 100644 SETUNA/packages.config create mode 100644 SETUNATests/Main/Layer/LayerManagerTests.cs create mode 100644 SETUNATests/Properties/AssemblyInfo.cs create mode 100644 SETUNATests/SETUNATests.csproj create mode 100644 SETUNATests/packages.config create mode 100644 "\345\210\235\345\247\213\351\205\215\347\275\256.txt" diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..1c37c50 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,201 @@ +# 如果要从更高级别的目录继承 .editorconfig 设置,请删除以下行 +root = true + +# c# 文件 +[*.cs] + +#### Core EditorConfig 选项 #### + +# 缩进和间距 +indent_size = 4 +indent_style = space +tab_width = 4 + +# 新行首选项 +end_of_line = crlf +insert_final_newline = false + +#### .NET 编码约定 #### + +# 组织 Using +dotnet_separate_import_directive_groups = false +dotnet_sort_system_directives_first = true +file_header_template = unset + +# this. 和 Me. 首选项 +dotnet_style_qualification_for_event = false:warning +dotnet_style_qualification_for_field = false:warning +dotnet_style_qualification_for_method = false:warning +dotnet_style_qualification_for_property = false:warning + +# 语言关键字与 bcl 类型首选项 +dotnet_style_predefined_type_for_locals_parameters_members = true:warning +dotnet_style_predefined_type_for_member_access = true:warning + +# 括号首选项 +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent + +# 修饰符首选项 +dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent + +# 表达式级首选项 +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_object_initializer = true:suggestion +dotnet_style_operator_placement_when_wrapping = beginning_of_line +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion + +# 字段首选项 +dotnet_style_readonly_field = true:suggestion + +# 参数首选项 +dotnet_code_quality_unused_parameters = all:suggestion + +#### c# 编码约定 #### + +# var 首选项 +csharp_style_var_elsewhere = true:warning +csharp_style_var_for_built_in_types = true:warning +csharp_style_var_when_type_is_apparent = true:warning + +# Expression-bodied 成员 +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent + +# 模式匹配首选项 +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_prefer_switch_expression = true:suggestion + +# Null 检查首选项 +csharp_style_conditional_delegate_call = true:suggestion + +# 修饰符首选项 +csharp_prefer_static_local_function = true:suggestion +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent + +# 代码块首选项 +csharp_prefer_braces = true:silent +csharp_prefer_simple_using_statement = false:suggestion + +# 表达式级首选项 +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion +csharp_style_prefer_index_operator = true:suggestion +csharp_style_prefer_range_operator = true:suggestion +csharp_style_throw_expression = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:silent + +# "using" 指令首选项 +csharp_using_directive_placement = outside_namespace:silent + +#### C# 格式规则 #### + +# 新行首选项 +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true + +# 缩进首选项 +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = true +csharp_indent_labels = one_less_than_current +csharp_indent_switch_labels = true + +# 空格键首选项 +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# 包装首选项 +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = true + +#### 命名样式 #### + +# 命名规则 + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# 符号规范 + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# 命名样式 + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case diff --git a/.gitignore b/.gitignore index 1c9a181..dfcfd56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,10 @@ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files +*.rsuser *.suo *.user *.userosscache @@ -10,48 +13,68 @@ # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs +# Mono auto generated files +mono_crash.* + # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ -[Xx]64/ -[Xx]86/ -[Bb]uild/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ +[Ll]og/ +[Ll]ogs/ -# Visual Studio 2015 cache/options directory +# Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ +# Visual Studio 2017 auto generated files +Generated\ Files/ + # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* -# NUNIT +# NUnit *.VisualState.xml TestResult.xml +nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c -# DNX +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core project.lock.json +project.fragment.lock.json artifacts/ +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio *_i.c *_p.c -*_i.h +*_h.h *.ilk *.meta *.obj +*.iobj *.pch *.pdb +*.ipdb *.pgc *.pgd *.rsp @@ -61,6 +84,7 @@ artifacts/ *.tlh *.tmp *.tmp_proj +*_wpftmp.csproj *.log *.vspscc *.vssscc @@ -81,6 +105,7 @@ ipch/ *.sdf *.cachefile *.VC.db +*.VC.VC.opendb # Visual Studio profiler *.psess @@ -88,6 +113,9 @@ ipch/ *.vspx *.sap +# Visual Studio Trace Files +*.e2e + # TFS 2012 Local Workspace $tf/ @@ -99,15 +127,20 @@ _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user -# JustCode is a .NET coding add-in -.JustCode - # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + # NCrunch _NCrunch_* .*crunch*.local.xml @@ -139,22 +172,27 @@ publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml - -# TODO: Un-comment the next line if you do not want to checkin -# your web deploy settings because they may include unencrypted -# passwords -#*.pubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml *.publishproj +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + # NuGet Packages *.nupkg +# NuGet Symbol Packages +*.snupkg # The packages folder can be ignored because of Package Restore -**/packages/* +**/[Pp]ackages/* # except build/, which is used as an MSBuild target. -!**/packages/build/ +!**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets @@ -166,28 +204,40 @@ csx/ ecf/ rcf/ -# Windows Store app package directory +# Windows Store app package directories and files AppPackages/ BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache -!*.[Cc]ache/ +!?*.[Cc]ache/ # Others ClientBin/ -[Ss]tyle[Cc]op.* ~$* *~ *.dbmdl *.dbproj.schemaview +*.jfm *.pfx *.publishsettings -node_modules/ orleans.codegen.cs +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + # RIA/Silverlight projects Generated_Code/ @@ -198,15 +248,22 @@ _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak # SQL Server files *.mdf *.ldf +*.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ @@ -216,6 +273,7 @@ FakesAssemblies/ # Node.js Tools for Visual Studio .ntvs_analysis.dat +node_modules/ # Visual Studio 6 build log *.plg @@ -223,6 +281,9 @@ FakesAssemblies/ # Visual Studio 6 workspace options file *.opt +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts @@ -231,12 +292,59 @@ FakesAssemblies/ **/*.Server/ModelManifest.xml _Pvt_Extensions -# LightSwitch generated files -GeneratedArtifacts/ -ModelManifest.xml - # Paket dependency manager .paket/paket.exe +paket-files/ # FAKE - F# Make .fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..2711f96 --- /dev/null +++ b/README.md @@ -0,0 +1,64 @@ +# 免责声明 +- [官方网站](http://www.clearunit.com/clearup/setuna2)(地址已挂) +- 官方已不再维护该软件,本人基于高分屏截图不全原因,优化并维护该软件,如有侵权请联系删除! + +--- + +## 介绍 +A best screenshot small tool (support high dpi screenshots) + +一款好用的截图小工具(支持高分屏截图) + +--- + +![效果图1](壁纸示例图/示例1.png) +![效果图2](壁纸示例图/示例2.png) +![效果图3](壁纸示例图/示例3.png) + +--- + +## 版本说明 +- **SETUNA 3.x 版本的运行要求**(持续更新) + + - Windows 10 14393 及以上 + + - ###### 查看Win10系统版本:设置 -> 系统 -> 关于 -> Windows 规格详情页里的 操作系统版本 + + - 安装 .Net Framework 4.7 组件 +- **SETUNA 2.x 版本的运行要求**(停止维护) + + - 安装 .Net Framework 2.0 组件 + +**注意:** + +- 如果系统不达要求的,**可以尝试使用 3.x 版本**,如果出现 **截图时屏幕会被缩小** 问题,那只能用回 2.x 版本. + + +--- + +## 功能说明 +- 支持多台不同DPI显示器 + + - ###### 如果是 **2.x** 版本,请前往 选项 -> 显示器DPI设置 中手动设置显示器的 DPI。 + +- 支持电脑重启后继续显示之前未关闭的截图(保留截图信息:位置、缩放) + +- 支持配置开机启动、支持配置截图始终置顶 + + - ###### 配置方法:选项- > 常规 -> 其他 + +- 点击任务栏程序图标激活一次所有截图 ,让其置顶(3.x 新增) + +- 支持快捷键隐藏、显示所有截图(3.x 新增) + + - ###### 配置方法:选项 -> 截图设置 + +--- + +## 目前已知问题 +- 暂无 + +--- + +## 后续要加的功能 +- 暂无 \ No newline at end of file diff --git a/SETUNA.sln b/SETUNA.sln new file mode 100644 index 0000000..98d18fb --- /dev/null +++ b/SETUNA.sln @@ -0,0 +1,42 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28729.10 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SETUNA", "SETUNA\SETUNA.csproj", "{15D64201-91AD-47B1-8675-5DBB30DF6A39}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{99B848A6-8048-4D03-BBAC-FE8D5B84B935}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SETUNATests", "SETUNATests\SETUNATests.csproj", "{A601CD5F-88CA-47C6-9D24-33E006864BD9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {15D64201-91AD-47B1-8675-5DBB30DF6A39}.Debug|x64.ActiveCfg = Debug|x64 + {15D64201-91AD-47B1-8675-5DBB30DF6A39}.Debug|x64.Build.0 = Debug|x64 + {15D64201-91AD-47B1-8675-5DBB30DF6A39}.Debug|x86.ActiveCfg = Debug|x86 + {15D64201-91AD-47B1-8675-5DBB30DF6A39}.Debug|x86.Build.0 = Debug|x86 + {15D64201-91AD-47B1-8675-5DBB30DF6A39}.Release|x64.ActiveCfg = Release|x64 + {15D64201-91AD-47B1-8675-5DBB30DF6A39}.Release|x64.Build.0 = Release|x64 + {15D64201-91AD-47B1-8675-5DBB30DF6A39}.Release|x86.ActiveCfg = Release|x86 + {15D64201-91AD-47B1-8675-5DBB30DF6A39}.Release|x86.Build.0 = Release|x86 + {A601CD5F-88CA-47C6-9D24-33E006864BD9}.Debug|x64.ActiveCfg = Debug|Any CPU + {A601CD5F-88CA-47C6-9D24-33E006864BD9}.Debug|x86.ActiveCfg = Debug|Any CPU + {A601CD5F-88CA-47C6-9D24-33E006864BD9}.Release|x64.ActiveCfg = Release|Any CPU + {A601CD5F-88CA-47C6-9D24-33E006864BD9}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6CDECD6E-B551-4B50-92BD-3DAAC9B49B9D} + EndGlobalSection +EndGlobal diff --git a/SETUNA/ClickCapture.Designer.cs b/SETUNA/ClickCapture.Designer.cs new file mode 100644 index 0000000..b4cdf75 --- /dev/null +++ b/SETUNA/ClickCapture.Designer.cs @@ -0,0 +1,56 @@ +namespace SETUNA +{ + // Token: 0x02000045 RID: 69 + partial class ClickCapture + { + // Token: 0x06000289 RID: 649 RVA: 0x0000DD3F File Offset: 0x0000BF3F + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x0600028A RID: 650 RVA: 0x0000DD60 File Offset: 0x0000BF60 + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // timer1 + // + this.timer1.Enabled = true; + this.timer1.Interval = 150; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // ClickCapture + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.ClientSize = new System.Drawing.Size(10, 10); + this.ControlBox = false; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.MaximumSize = new System.Drawing.Size(10, 10); + this.MinimumSize = new System.Drawing.Size(1, 1); + this.Name = "ClickCapture"; + this.Opacity = 0.01D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.TopMost = true; + this.Click += new System.EventHandler(this.ClickCapture_Click); + this.MouseEnter += new System.EventHandler(this.ClickCapture_MouseEnter); + this.ResumeLayout(false); + + } + + // Token: 0x04000123 RID: 291 + private global::System.ComponentModel.IContainer components; + + // Token: 0x04000124 RID: 292 + private global::System.Windows.Forms.Timer timer1; + } +} diff --git a/SETUNA/ClickCapture.cs b/SETUNA/ClickCapture.cs new file mode 100644 index 0000000..f799d49 --- /dev/null +++ b/SETUNA/ClickCapture.cs @@ -0,0 +1,338 @@ +using System; +using System.Drawing; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace SETUNA +{ + // Token: 0x02000045 RID: 69 + public partial class ClickCapture : BaseForm + { + // Token: 0x14000016 RID: 22 + // (add) Token: 0x0600027C RID: 636 RVA: 0x0000D5FA File Offset: 0x0000B7FA + // (remove) Token: 0x0600027D RID: 637 RVA: 0x0000D613 File Offset: 0x0000B813 + public event ClickCapture.ClipCaptureDelegate ClickCaptureEvent; + + // Token: 0x0600027E RID: 638 RVA: 0x0000D62C File Offset: 0x0000B82C + public ClickCapture(bool[] values) + { + InitializeComponent(); + ClickFlags = values; + CursorRect = new Rectangle(0, 0, 1, 1); + ClickPosition = ClickCapture.ClickPositionType.CP0; + } + + // Token: 0x17000069 RID: 105 + // (set) Token: 0x0600027F RID: 639 RVA: 0x0000D658 File Offset: 0x0000B858 + public bool[] ClickFlags + { + set + { + if (value.Length < 10) + { + return; + } + CC1 = value[1]; + CC2 = value[2]; + CC3 = value[3]; + CC4 = value[4]; + CC6 = value[6]; + CC7 = value[7]; + CC8 = value[8]; + CC9 = value[9]; + } + } + + // Token: 0x06000280 RID: 640 RVA: 0x0000D6B8 File Offset: 0x0000B8B8 + private void timer1_Tick(object sender, EventArgs e) + { + if (Cursor.Position == LastMousePosition) + { + return; + } + var screen = Screen.FromPoint(Cursor.Position); + if (MaximumSize != screen.Bounds.Size) + { + MaximumSize = screen.Bounds.Size; + } + int num4; + int num3; + int num2; + var num = num2 = (num3 = (num4 = int.MaxValue)); + if (CC8) + { + num2 = Cursor.Position.Y - screen.Bounds.Top; + } + if (CC4) + { + num = Cursor.Position.X - screen.Bounds.Left; + } + if (CC6) + { + num3 = screen.Bounds.Right - Cursor.Position.X; + } + if (CC2) + { + num4 = screen.Bounds.Bottom - Cursor.Position.Y; + } + var num5 = Math.Min(num2, num4); + num5 = Math.Min(num5, num); + num5 = Math.Min(num5, num3); + var clickPositionType = ClickCapture.ClickPositionType.CP0; + if (num5 < 2147483647) + { + if (num5 == num2) + { + clickPositionType = ClickCapture.ClickPositionType.CP8; + } + else if (num5 == num) + { + clickPositionType = ClickCapture.ClickPositionType.CP4; + } + else if (num5 == num3) + { + clickPositionType = ClickCapture.ClickPositionType.CP6; + } + else if (num5 == num4) + { + clickPositionType = ClickCapture.ClickPositionType.CP2; + } + else + { + clickPositionType = ClickCapture.ClickPositionType.CP0; + } + } + double num9; + double num8; + double num7; + var num6 = num7 = (num8 = (num9 = double.MaxValue)); + if (CC7) + { + var num10 = Cursor.Position.X - screen.Bounds.Left; + var num11 = Cursor.Position.Y - screen.Bounds.Top; + num7 = Math.Abs(Math.Sqrt(num10 * num10 + num11 * num11)); + } + if (CC9) + { + var num10 = screen.Bounds.Right - Cursor.Position.X; + var num11 = Cursor.Position.Y - screen.Bounds.Top; + num6 = Math.Abs(Math.Sqrt(num10 * num10 + num11 * num11)); + } + if (CC1) + { + var num10 = Cursor.Position.X - screen.Bounds.Left; + var num11 = screen.Bounds.Bottom - Cursor.Position.Y; + num8 = Math.Abs(Math.Sqrt(num10 * num10 + num11 * num11)); + } + if (CC3) + { + var num10 = screen.Bounds.Right - Cursor.Position.X; + var num11 = screen.Bounds.Bottom - Cursor.Position.Y; + num9 = Math.Abs(Math.Sqrt(num10 * num10 + num11 * num11)); + } + var num12 = Math.Min(num7, num6); + num12 = Math.Min(num12, num8); + num12 = Math.Min(num12, num9); + if (num12 < 1.7976931348623157E+308) + { + if (num12 == num7) + { + if (clickPositionType != ClickCapture.ClickPositionType.CP4 && clickPositionType != ClickCapture.ClickPositionType.CP8 && num12 < num5) + { + clickPositionType = ClickCapture.ClickPositionType.CP7; + } + } + else if (num12 == num6) + { + if (clickPositionType != ClickCapture.ClickPositionType.CP6 && clickPositionType != ClickCapture.ClickPositionType.CP8 && num12 < num5) + { + clickPositionType = ClickCapture.ClickPositionType.CP9; + } + } + else if (num12 == num8) + { + if (clickPositionType != ClickCapture.ClickPositionType.CP4 && clickPositionType != ClickCapture.ClickPositionType.CP2 && num12 < num5) + { + clickPositionType = ClickCapture.ClickPositionType.CP1; + } + } + else if (num12 == num9 && clickPositionType != ClickCapture.ClickPositionType.CP6 && clickPositionType != ClickCapture.ClickPositionType.CP2 && num12 < num5) + { + clickPositionType = ClickCapture.ClickPositionType.CP3; + } + } + if (ClickPosition != clickPositionType) + { + ClickPosition = clickPositionType; + LastMousePosition = Cursor.Position; + switch (clickPositionType) + { + case ClickCapture.ClickPositionType.CP7: + SetBoundsCore(screen.Bounds.Left, screen.Bounds.Top, 1, 1, BoundsSpecified.All); + break; + case ClickCapture.ClickPositionType.CP8: + SetBoundsCore(screen.Bounds.Left, screen.Bounds.Top, screen.Bounds.Width, 1, BoundsSpecified.All); + break; + case ClickCapture.ClickPositionType.CP9: + SetBoundsCore(screen.Bounds.Right - 1, screen.Bounds.Top, 1, 1, BoundsSpecified.All); + break; + case ClickCapture.ClickPositionType.CP4: + SetBoundsCore(screen.Bounds.Left, screen.Bounds.Top, 1, screen.Bounds.Height, BoundsSpecified.All); + break; + case ClickCapture.ClickPositionType.CP6: + SetBoundsCore(screen.Bounds.Right - 1, screen.Bounds.Top, 1, screen.Bounds.Height, BoundsSpecified.All); + break; + case ClickCapture.ClickPositionType.CP1: + SetBoundsCore(screen.Bounds.Left, screen.Bounds.Bottom - 1, 1, 1, BoundsSpecified.All); + break; + case ClickCapture.ClickPositionType.CP2: + SetBoundsCore(screen.Bounds.Left, screen.Bounds.Bottom - 1, screen.Bounds.Width, 1, BoundsSpecified.All); + break; + case ClickCapture.ClickPositionType.CP3: + SetBoundsCore(screen.Bounds.Right - 1, screen.Bounds.Bottom - 1, 1, 1, BoundsSpecified.All); + break; + } + if (clickPositionType == ClickCapture.ClickPositionType.CP0 && base.Visible) + { + base.Visible = false; + } + if (clickPositionType != ClickCapture.ClickPositionType.CP0 && !base.Visible) + { + base.Visible = true; + } + Refresh(); + Console.WriteLine(base.Bounds.ToString()); + } + CursorRect.Location = Cursor.Position; + if (base.Bounds.IntersectsWith(CursorRect)) + { + try + { + ClickCapture.Win32Api.SetWindowPos((int)base.Handle, 0, 0, 0, 0, 0, 83U); + } + catch + { + Console.WriteLine("SetWindowPos Error"); + } + } + } + + // Token: 0x1700006A RID: 106 + // (get) Token: 0x06000282 RID: 642 RVA: 0x0000DCE5 File Offset: 0x0000BEE5 + // (set) Token: 0x06000281 RID: 641 RVA: 0x0000DCDC File Offset: 0x0000BEDC + private ClickCapture.ClickPositionType ClickPosition { get; set; } + + // Token: 0x1700006B RID: 107 + // (get) Token: 0x06000284 RID: 644 RVA: 0x0000DCF6 File Offset: 0x0000BEF6 + // (set) Token: 0x06000283 RID: 643 RVA: 0x0000DCED File Offset: 0x0000BEED + private Point LastMousePosition { get; set; } + + // Token: 0x06000285 RID: 645 RVA: 0x0000DCFE File Offset: 0x0000BEFE + public void Restart() + { + base.Visible = true; + timer1.Start(); + } + + // Token: 0x06000286 RID: 646 RVA: 0x0000DD12 File Offset: 0x0000BF12 + public void Stop() + { + timer1.Stop(); + base.Visible = false; + } + + // Token: 0x06000287 RID: 647 RVA: 0x0000DD26 File Offset: 0x0000BF26 + private void ClickCapture_Click(object sender, EventArgs e) + { + if (ClickCaptureEvent != null) + { + ClickCaptureEvent(sender, e); + } + } + + // Token: 0x06000288 RID: 648 RVA: 0x0000DD3D File Offset: 0x0000BF3D + private void ClickCapture_MouseEnter(object sender, EventArgs e) + { + } + + // Token: 0x04000118 RID: 280 + private const int AREASIZE = 1; + + // Token: 0x04000119 RID: 281 + private bool CC7; + + // Token: 0x0400011A RID: 282 + private bool CC8; + + // Token: 0x0400011B RID: 283 + private bool CC9; + + // Token: 0x0400011C RID: 284 + private bool CC4; + + // Token: 0x0400011D RID: 285 + private bool CC6; + + // Token: 0x0400011E RID: 286 + private bool CC1; + + // Token: 0x0400011F RID: 287 + private bool CC2; + + // Token: 0x04000120 RID: 288 + private bool CC3; + + // Token: 0x04000121 RID: 289 + private Rectangle CursorRect; + + // Token: 0x02000054 RID: 84 + // (Invoke) Token: 0x06000311 RID: 785 + public delegate void ClipCaptureDelegate(object sender, EventArgs e); + + // Token: 0x020000B0 RID: 176 + private class Win32Api + { + // Token: 0x06000596 RID: 1430 + [DllImport("user32.dll")] + public static extern bool SetWindowPos(int hWnd, int hWndAfter, int X, int Y, int cx, int cy, uint uFlags); + + // Token: 0x04000376 RID: 886 + public const uint SWP_NOSIZE = 1U; + + // Token: 0x04000377 RID: 887 + public const uint SWP_NOMOVE = 2U; + + // Token: 0x04000378 RID: 888 + public const uint SWP_SHOWWINDOW = 64U; + + // Token: 0x04000379 RID: 889 + public const uint SWP_NOACTIVATE = 16U; + + // Token: 0x0400037A RID: 890 + public const int HWND_TOP = 0; + } + + // Token: 0x020000B1 RID: 177 + private enum ClickPositionType + { + // Token: 0x0400037C RID: 892 + CP7, + // Token: 0x0400037D RID: 893 + CP8, + // Token: 0x0400037E RID: 894 + CP9, + // Token: 0x0400037F RID: 895 + CP4, + // Token: 0x04000380 RID: 896 + CP6, + // Token: 0x04000381 RID: 897 + CP1, + // Token: 0x04000382 RID: 898 + CP2, + // Token: 0x04000383 RID: 899 + CP3, + // Token: 0x04000384 RID: 900 + CP0 + } + } +} diff --git a/SETUNA/ClickCapture.resx b/SETUNA/ClickCapture.resx new file mode 100644 index 0000000..886d0de --- /dev/null +++ b/SETUNA/ClickCapture.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/FodyWeavers.xml b/SETUNA/FodyWeavers.xml new file mode 100644 index 0000000..5029e70 --- /dev/null +++ b/SETUNA/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/SETUNA/FodyWeavers.xsd b/SETUNA/FodyWeavers.xsd new file mode 100644 index 0000000..44a5374 --- /dev/null +++ b/SETUNA/FodyWeavers.xsd @@ -0,0 +1,111 @@ + + + + + + + + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with line breaks. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with line breaks. + + + + + The order of preloaded assemblies, delimited with line breaks. + + + + + + This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. + + + + + Controls if .pdbs for reference assemblies are also embedded. + + + + + Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. + + + + + As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. + + + + + Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. + + + + + Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with |. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with |. + + + + + The order of preloaded assemblies, delimited with |. + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/SETUNA/Main/Cache/CacheItem.cs b/SETUNA/Main/Cache/CacheItem.cs new file mode 100644 index 0000000..a5723d7 --- /dev/null +++ b/SETUNA/Main/Cache/CacheItem.cs @@ -0,0 +1,160 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using Newtonsoft.Json; + +namespace SETUNA.Main.Cache +{ + public class CacheItem + { + private const string ImageFileName = "Image.png"; + private const string InfoFileName = "Info.json"; + + + // 创建时间 + public DateTime CreateTime { set; get; } + // 位置 + public Point Position { set; get; } + // 样式 + public Style Style { set; get; } + // 排序值 + public int SortingOrder { set; get; } + + + public string FolderPath => Path.Combine(CacheManager.Path, CreateTime.ToCustomString()); + + public bool IsValid + { + get + { + var fullPath = Path.Combine(FolderPath, ImageFileName); + return File.Exists(fullPath); + } + } + + + protected CacheItem() + { + } + + + // 创建缓存 + public static CacheItem Create(DateTime createTime, Image image, Point pos, Style style) + { + var item = new CacheItem + { + CreateTime = createTime, + Position = pos, + Style = style + }; + + item.SaveImage(image); + item.SaveInfo(); + + return item; + } + + // 读取缓存 + public static CacheItem Read(string cacheItemPath) + { + var fullPath = Path.Combine(cacheItemPath, InfoFileName); + if (File.Exists(fullPath)) + { + var content = File.ReadAllText(fullPath); + var item = JsonConvert.DeserializeObject(content); + + return item; + } + + return null; + } + + + public Image ReadImage() + { + var fullPath = Path.Combine(FolderPath, ImageFileName); + if (File.Exists(fullPath)) + { + using (var fs = new FileStream(fullPath, FileMode.Open)) + { + return Image.FromStream(fs); + } + } + + return null; + } + + public void SaveImage(Image image) + { + if (image == null) + { + return; + } + + var folderPath = FolderPath; + if (!Directory.Exists(folderPath)) + { + Directory.CreateDirectory(folderPath); + } + + var fullPath = Path.Combine(folderPath, ImageFileName); + if (File.Exists(fullPath)) + { + File.Delete(fullPath); + } + + using (var temp = new Bitmap(image)) + { + temp.Save(fullPath, ImageFormat.Png); + } + } + + public void SaveInfo() + { + var folderPath = FolderPath; + if (!Directory.Exists(folderPath)) + { + Directory.CreateDirectory(folderPath); + } + + var fullPath = Path.Combine(folderPath, InfoFileName); + if (File.Exists(fullPath)) + { + File.Delete(fullPath); + } + + var item = new + { + CreateTime = CreateTime, + Position = Position, + Style = Style, + SortingOrder = SortingOrder, + }; + var json = JsonConvert.SerializeObject(item, Formatting.Indented); + File.WriteAllText(fullPath, json); + } + + public void Delete() + { + var folderPath = FolderPath; + if (Directory.Exists(folderPath)) + { + Directory.Delete(folderPath, true); + } + } + } + + public struct Style + { + public int ID { set; get; } + public Point ClickPoint { set; get; } + + + public Style(int id, Point point) + { + ID = id; + ClickPoint = point; + } + } +} diff --git a/SETUNA/Main/Cache/CacheManager.cs b/SETUNA/Main/Cache/CacheManager.cs new file mode 100644 index 0000000..b05876a --- /dev/null +++ b/SETUNA/Main/Cache/CacheManager.cs @@ -0,0 +1,160 @@ +using System; +using System.Collections.Generic; +using System.IO; + +namespace SETUNA.Main.Cache +{ + public class CacheManager : IScrapAddedListener, IScrapRemovedListener, IScrapLocationChangedListener, IScrapImageChangedListener, IScrapStyleAppliedListener, IScrapStyleRemovedListener + { + public static readonly string Path = System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SETUNA"); + + public static readonly CacheManager Instance = new CacheManager(); + + + public bool IsInit { private set; get; } + + + public void Init() + { + IsInit = false; + var scrapBook = Mainform.Instance.scrapBook; + scrapBook.addScrapAddedListener(this); + scrapBook.addScrapRemovedListener(this); + + RestoreScraps(scrapBook); + } + + public void DeInit() + { + } + + void RestoreScraps(ScrapBook mainBook) + { + var directoryInfo = new DirectoryInfo(Path); + if (!directoryInfo.Exists) + { + directoryInfo.Create(); + } + + var directories = directoryInfo.GetDirectories("*", SearchOption.TopDirectoryOnly); + var list = new List(directories.Length); + foreach (var directory in directories) + { + var item = CacheItem.Read(directory.FullName); + if ((item?.IsValid ?? false) == false) + { + continue; + } + + list.Add(item); + } + + list.Sort((x, y) => x.SortingOrder.CompareTo(y.SortingOrder)); + AddScrap(0); + + + + void AddScrap(int index) + { + if (index >= list.Count) + { + IsInit = true; + return; + } + + var item = list[index]; + mainBook.AddScrapFromCache(item, () => + { + AddScrap(++index); + }); + } + } + + + void IScrapAddedListener.ScrapAdded(object sender, ScrapEventArgs e) + { + var scrap = e.scrap; + + // 已经绑定缓存则忽略 + if (scrap.CacheItem != null) + { + return; + } + + var style = new Style + { + ID = scrap.StyleID, + ClickPoint = scrap.StyleClickPoint + }; + + var cacheItem = CacheItem.Create(scrap.DateTime, scrap.Image, scrap.Location, style); + scrap.CacheItem = cacheItem; + } + + void IScrapRemovedListener.ScrapRemoved(object sender, ScrapEventArgs e) + { + var scrap = e.scrap; + var cacheItem = scrap?.CacheItem; + if (cacheItem == null) + { + return; + } + + scrap.CacheItem = null; + cacheItem.Delete(); + } + + void IScrapLocationChangedListener.ScrapLocationChanged(object sender, ScrapEventArgs e) + { + var scrap = e.scrap; + var cacheItem = scrap?.CacheItem; + if (cacheItem == null) + { + return; + } + + cacheItem.Position = scrap.Location; + cacheItem.SaveInfo(); + } + + void IScrapImageChangedListener.ScrapImageChanged(object sender, ScrapEventArgs e) + { + var scrap = e.scrap; + var cacheItem = scrap?.CacheItem; + var image = scrap?.Image; + if (cacheItem == null || image == null) + { + return; + } + + cacheItem.SaveImage(image); + } + + void IScrapStyleAppliedListener.ScrapStyleApplied(object sender, ScrapEventArgs e) + { + var scrap = e.scrap; + var styleID = scrap?.StyleID ?? 0; + var cacheItem = scrap?.CacheItem; + if (cacheItem == null || styleID == 0) + { + return; + } + + cacheItem.Style = new Style(styleID, scrap.StyleClickPoint); + cacheItem.SaveInfo(); + } + + void IScrapStyleRemovedListener.ScrapStyleRemoved(object sender, ScrapEventArgs e) + { + var scrap = e.scrap; + var cacheItem = scrap?.CacheItem; + if (cacheItem == null) + { + return; + } + + cacheItem.Style = new Style(0, new System.Drawing.Point(0, 0)); + cacheItem.SaveInfo(); + } + } +} \ No newline at end of file diff --git a/SETUNA/Main/CaptureForm.Designer.cs b/SETUNA/Main/CaptureForm.Designer.cs new file mode 100644 index 0000000..181830b --- /dev/null +++ b/SETUNA/Main/CaptureForm.Designer.cs @@ -0,0 +1,62 @@ +namespace SETUNA.Main +{ + // Token: 0x02000046 RID: 70 + sealed partial class CaptureForm + { + // Token: 0x060002B7 RID: 695 RVA: 0x0000F33E File Offset: 0x0000D53E + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x060002B8 RID: 696 RVA: 0x0000F360 File Offset: 0x0000D560 + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // timer1 + // + this.timer1.Interval = 250; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // CaptureForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 266); + this.ControlBox = false; + this.Cursor = System.Windows.Forms.Cursors.Cross; + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.KeyPreview = true; + this.Name = "CaptureForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.Text = "CaptureForm"; + this.TopMost = true; + this.Shown += new System.EventHandler(this.CaptureForm_Shown); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.CaptureForm_FormClosed); + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.CaptureForm_FormClosing); + this.Paint += new System.Windows.Forms.PaintEventHandler(this.CaptureForm_Paint); + this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.CaptureForm_KeyPress); + this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.CaptureForm_KeyUp); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.CaptureForm_MouseDown); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.CaptureForm_MouseMove); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.CaptureForm_MouseUp); + this.ResumeLayout(false); + + } + + // Token: 0x0400013E RID: 318 + private global::System.ComponentModel.IContainer components; + + // Token: 0x0400013F RID: 319 + private global::System.Windows.Forms.Timer timer1; + } +} diff --git a/SETUNA/Main/CaptureForm.cs b/SETUNA/Main/CaptureForm.cs new file mode 100644 index 0000000..ca3c6e4 --- /dev/null +++ b/SETUNA/Main/CaptureForm.cs @@ -0,0 +1,738 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Imaging; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using SETUNA.Main.Option; + +namespace SETUNA.Main +{ + // Token: 0x02000046 RID: 70 + public sealed partial class CaptureForm : BaseForm + { + // Token: 0x0600028B RID: 651 + [DllImport("User32.Dll")] + private static extern IntPtr GetDesktopWindow(); + + // Token: 0x0600028C RID: 652 + [DllImport("user32.dll")] + private static extern IntPtr GetWindow(IntPtr hWnd, uint cCmd); + + // Token: 0x0600028D RID: 653 + [DllImport("user32.dll")] + private static extern IntPtr GetTopWindow(IntPtr hWnd); + + // Token: 0x0600028E RID: 654 + [DllImport("user32.dll", EntryPoint = "GetWindow")] + private static extern IntPtr GetNextWindow(IntPtr hWnd, uint wCmd); + + // Token: 0x0600028F RID: 655 + [DllImport("user32.dll")] + private static extern int EnumWindows(CaptureForm.EnumWindowsCallBack lpFunc, int lParam); + + // Token: 0x06000290 RID: 656 + [DllImport("user32.dll")] + private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCnt); + + // Token: 0x06000291 RID: 657 + [DllImport("user32.dll")] + private static extern int IsWindowVisible(IntPtr hWnd); + + // Token: 0x06000292 RID: 658 + [DllImport("user32.dll")] + private static extern bool GetWindowRect(IntPtr hWnd, out CaptureForm.RECT lpRect); + + // Token: 0x06000293 RID: 659 + [DllImport("user32.dll")] + private static extern IntPtr GetDC(IntPtr hwnd); + + // Token: 0x06000294 RID: 660 + [DllImport("user32.dll")] + private static extern IntPtr ReleaseDC(IntPtr hwnd, IntPtr hdc); + + // Token: 0x06000295 RID: 661 + [DllImport("gdi32.dll")] + private static extern int BitBlt(IntPtr hDestDC, int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, int dwRop); + + // Token: 0x06000296 RID: 662 + [DllImport("Gdi32.dll")] + private static extern IntPtr CreateDC(string Display, string c, object b, object a); + + // Token: 0x06000297 RID: 663 + [DllImport("Gdi32.dll")] + private static extern bool DeleteDC(IntPtr handle); + + // Token: 0x1700006C RID: 108 + // (get) Token: 0x06000298 RID: 664 RVA: 0x0000DE7C File Offset: 0x0000C07C + public Bitmap ClipBitmap + { + get + { + if (bmpClip != null) + { + return bmpClip; + } + return null; + } + } + + // Token: 0x1700006D RID: 109 + // (get) Token: 0x06000299 RID: 665 RVA: 0x0000DE8E File Offset: 0x0000C08E + public Point ClipStart => ptClipStart; + + // Token: 0x1700006E RID: 110 + // (get) Token: 0x0600029A RID: 666 RVA: 0x0000DE96 File Offset: 0x0000C096 + public Size ClipSize => ptClipSize; + + // Token: 0x1700006F RID: 111 + // (set) Token: 0x0600029B RID: 667 RVA: 0x0000DE9E File Offset: 0x0000C09E + public CaptureForm.CaptureClosedDelegate OnCaptureClose + { + set => CaptureClosedHandler = value; + } + + // Token: 0x0600029C RID: 668 RVA: 0x0000DEA8 File Offset: 0x0000C0A8 + public CaptureForm(SetunaOption.SetunaOptionData opt) + { + InitializeComponent(); + targetScreen = GetCurrentScreen(); + CaptureForm.imgSnap = new Bitmap(targetScreen.Bounds.Width, targetScreen.Bounds.Height, PixelFormat.Format24bppRgb); + CaptureForm.selArea = new Form + { + AutoScaleMode = AutoScaleMode.None, + BackColor = Color.Blue, + BackgroundImageLayout = ImageLayout.None, + ControlBox = false, + FormBorderStyle = FormBorderStyle.None, + MaximizeBox = false, + MinimizeBox = false, + MinimumSize = new Size(1, 1), + ClientSize = new Size(1, 1), + ShowIcon = false, + ShowInTaskbar = false, + SizeGripStyle = SizeGripStyle.Hide, + StartPosition = FormStartPosition.Manual, + Text = "CaptureSelArea", + TopMost = true, + Left = 0, + Top = 0, + Width = 1, + Height = 1, + Visible = false + }; + base.AddOwnedForm(CaptureForm.selArea); + CaptureForm.selLineHor1 = new CaptureSelLine(SelLineType.Horizon, opt.SelectLineSolid, opt.SelectLineColor); + base.AddOwnedForm(CaptureForm.selLineHor1); + CaptureForm.selLineHor1.Show(this); + CaptureForm.selLineHor2 = new CaptureSelLine(SelLineType.Horizon, opt.SelectLineSolid, opt.SelectLineColor); + base.AddOwnedForm(CaptureForm.selLineHor2); + CaptureForm.selLineHor2.Show(this); + CaptureForm.selLineVer1 = new CaptureSelLine(SelLineType.Vertical, opt.SelectLineSolid, opt.SelectLineColor); + base.AddOwnedForm(CaptureForm.selLineVer1); + CaptureForm.selLineVer1.Show(this); + CaptureForm.selLineVer2 = new CaptureSelLine(SelLineType.Vertical, opt.SelectLineSolid, opt.SelectLineColor); + base.AddOwnedForm(CaptureForm.selLineVer2); + CaptureForm.selLineVer2.Show(this); + CaptureForm.selLineHor1.Visible = false; + CaptureForm.selLineHor2.Visible = false; + CaptureForm.selLineVer1.Visible = false; + CaptureForm.selLineVer2.Visible = false; + CaptureForm.selArea.Visible = false; + base.Opacity = 0.99000000953674316; + } + + // Token: 0x0600029D RID: 669 RVA: 0x0000E104 File Offset: 0x0000C304 + public void ShowCapture(SetunaOption.SetunaOptionData opt) + { + if (CaptureForm.imgSnap == null) + { + return; + } + Cursor.Current = Cursors.Cross; + targetScreen = GetCurrentScreen(); + if (targetScreen.Bounds.Width != CaptureForm.imgSnap.Width || targetScreen.Bounds.Height != CaptureForm.imgSnap.Height) + { + CaptureForm.imgSnap = new Bitmap(targetScreen.Bounds.Width, targetScreen.Bounds.Height, PixelFormat.Format24bppRgb); + } + trd = new Thread(new ThreadStart(ThreadTask)) + { + IsBackground = true + }; + trd.Start(); + Console.WriteLine(string.Concat(new object[] + { + "10 - ", + DateTime.Now.ToString(), + " ", + DateTime.Now.Millisecond + })); + Console.WriteLine(string.Concat(new object[] + { + "11 - ", + DateTime.Now.ToString(), + " ", + DateTime.Now.Millisecond + })); + blAreaVisible = (opt.SelectAreaTransparent != 100); + CaptureForm.selArea.Opacity = 1f - opt.SelectAreaTransparent / 100f; + CaptureForm.selArea.BackColor = opt.SelectBackColor; + if (!CaptureForm.selArea.Visible) + { + CaptureForm.selArea.Show(this); + } + Console.WriteLine(string.Concat(new object[] + { + "12 - ", + DateTime.Now.ToString(), + " ", + DateTime.Now.Millisecond + })); + SetBoundsCore(targetScreen.Bounds.X, targetScreen.Bounds.Y, targetScreen.Bounds.Width, targetScreen.Bounds.Height, BoundsSpecified.All); + Console.WriteLine(string.Concat(new object[] + { + "13 - ", + DateTime.Now.ToString(), + " ", + DateTime.Now.Millisecond + })); + CaptureForm.selLineHor1.SetPen(opt.SelectLineSolid, opt.SelectLineColor); + CaptureForm.selLineHor1.SetBounds(targetScreen.Bounds.X, targetScreen.Bounds.Y - 10, targetScreen.Bounds.Width, 1); + if (!CaptureForm.selLineHor1.Visible) + { + CaptureForm.selLineHor1.Show(this); + } + CaptureForm.selLineHor2.SetPen(opt.SelectLineSolid, opt.SelectLineColor); + CaptureForm.selLineHor2.SetBounds(targetScreen.Bounds.X, targetScreen.Bounds.Y - 10, targetScreen.Bounds.Width, 1); + if (!CaptureForm.selLineHor2.Visible) + { + CaptureForm.selLineHor2.Show(this); + } + CaptureForm.selLineVer1.SetPen(opt.SelectLineSolid, opt.SelectLineColor); + CaptureForm.selLineVer1.SetBounds(targetScreen.Bounds.X - 10, targetScreen.Bounds.Y, 1, targetScreen.Bounds.Height); + if (!CaptureForm.selLineVer1.Visible) + { + CaptureForm.selLineVer1.Show(this); + } + CaptureForm.selLineVer2.SetPen(opt.SelectLineSolid, opt.SelectLineColor); + CaptureForm.selLineVer2.SetBounds(targetScreen.Bounds.X - 10, targetScreen.Bounds.Y, 1, CaptureForm.selLineVer2.Height = targetScreen.Bounds.Height); + if (!CaptureForm.selLineVer2.Visible) + { + CaptureForm.selLineVer2.Show(this); + } + Console.WriteLine(string.Concat(new object[] + { + "14 - ", + DateTime.Now.ToString(), + " ", + DateTime.Now.Millisecond + })); + + Thread.Sleep(1); + Cursor.Clip = targetScreen.Bounds; + } + + // Token: 0x0600029E RID: 670 RVA: 0x0000E628 File Offset: 0x0000C828 + private Screen GetCurrentScreen() + { + var rectangle = new Rectangle(Cursor.Position, new Size(1, 1)); + foreach (var screen in Screen.AllScreens) + { + if (rectangle.IntersectsWith(screen.Bounds)) + { + return screen; + } + } + return Screen.PrimaryScreen; + } + + // Token: 0x0600029F RID: 671 RVA: 0x0000E680 File Offset: 0x0000C880 + private void ThreadTask() + { + var flag = CaptureForm.CopyFromScreen(CaptureForm.imgSnap, new Point(targetScreen.Bounds.X, targetScreen.Bounds.Y)); + if (flag) + { + base.Invoke(new CaptureForm.ShowFormDelegate(ShowForm)); + return; + } + base.Invoke(new CaptureForm.ShowFormDelegate(CancelForm)); + } + + // Token: 0x060002A0 RID: 672 RVA: 0x0000E6F0 File Offset: 0x0000C8F0 + public static bool CopyFromScreen(Image img, Point location) + { + var result = true; + var intPtr = IntPtr.Zero; + try + { + intPtr = CaptureForm.GetDC(IntPtr.Zero); + using (var graphics = Graphics.FromImage(img)) + { + var intPtr2 = IntPtr.Zero; + try + { + intPtr2 = graphics.GetHdc(); + CaptureForm.BitBlt(intPtr2, 0, 0, img.Width, img.Height, intPtr, location.X, location.Y, 1087111200); + } + catch (Exception ex) + { + throw ex; + } + finally + { + if (intPtr2 != IntPtr.Zero) + { + graphics.ReleaseHdc(intPtr2); + } + } + } + } + catch (Exception ex2) + { + Console.WriteLine(ex2.Message); + result = false; + } + finally + { + if (intPtr != IntPtr.Zero) + { + CaptureForm.DeleteDC(intPtr); + } + } + return result; + } + + // Token: 0x060002A1 RID: 673 RVA: 0x0000E7E4 File Offset: 0x0000C9E4 + private void ShowForm() + { + base.Opacity = 0.0099999997764825821; + base.Visible = true; + base.Opacity = 0.0099999997764825821; + Refresh(); + Thread.Sleep(10); + base.Opacity = 0.99000000953674316; + } + + // Token: 0x060002A2 RID: 674 RVA: 0x0000E832 File Offset: 0x0000CA32 + private void CancelForm() + { + base.DialogResult = DialogResult.Cancel; + EndCapture(); + } + + // Token: 0x060002A3 RID: 675 RVA: 0x0000E841 File Offset: 0x0000CA41 + private void LineRefresh() + { + CaptureForm.selLineVer1.Refresh(); + CaptureForm.selLineVer2.Refresh(); + CaptureForm.selLineHor1.Refresh(); + CaptureForm.selLineHor2.Refresh(); + } + + // Token: 0x060002A4 RID: 676 RVA: 0x0000E86C File Offset: 0x0000CA6C + ~CaptureForm() + { + } + + // Token: 0x060002A5 RID: 677 RVA: 0x0000E894 File Offset: 0x0000CA94 + public new void Hide() + { + Console.WriteLine("Hide Start---"); + CaptureForm.selArea.Hide(); + CaptureForm.selLineHor1.Hide(); + CaptureForm.selLineHor2.Hide(); + CaptureForm.selLineVer1.Hide(); + CaptureForm.selLineVer2.Hide(); + CaptureForm.selArea.SetBounds(targetScreen.Bounds.X, targetScreen.Bounds.Y, 1, 1); + CaptureForm.selLineHor1.SetBounds(targetScreen.Bounds.X, targetScreen.Bounds.Y - 10, targetScreen.Bounds.Width, 1); + CaptureForm.selLineHor2.SetBounds(targetScreen.Bounds.X, targetScreen.Bounds.Y - 10, targetScreen.Bounds.Width, 1); + CaptureForm.selLineVer1.SetBounds(targetScreen.Bounds.X - 10, targetScreen.Bounds.Y, 1, targetScreen.Bounds.Height); + CaptureForm.selLineVer2.SetBounds(targetScreen.Bounds.X - 10, targetScreen.Bounds.Y, 1, CaptureForm.selLineVer2.Height = targetScreen.Bounds.Height); + base.Hide(); + Console.WriteLine("Hide end---"); + } + + // Token: 0x060002A6 RID: 678 RVA: 0x0000EA54 File Offset: 0x0000CC54 + protected override void OnClosing(CancelEventArgs e) + { + if (bmpClip != null) + { + bmpClip.Dispose(); + } + bmpClip = null; + Console.WriteLine("打开截取"); + base.OnClosing(e); + } + + // Token: 0x060002A7 RID: 679 RVA: 0x0000EA84 File Offset: 0x0000CC84 + private void DrawSelRect() + { + var point = default(Point); + var point2 = default(Point); + ptEnd = new Point(Cursor.Position.X, Cursor.Position.Y); + if (ptEnd.X == ptPrevEnd.X && ptEnd.Y == ptPrevEnd.Y) + { + return; + } + ptPrevEnd.X = ptEnd.X; + ptPrevEnd.Y = ptEnd.Y; + point.X = Math.Min(ptStart.X, ptEnd.X); + point.Y = Math.Min(ptStart.Y, ptEnd.Y); + point2.X = Math.Max(ptStart.X, ptEnd.X); + point2.Y = Math.Max(ptStart.Y, ptEnd.Y); + DrawSelectArea(point.X, point.Y, point2.X - point.X, point2.Y - point.Y, BoundsSpecified.All); + } + + private void CaptureForm_Shown(object sender, System.EventArgs e) + { + TopMost = true; + Layer.LayerManager.Instance.SuspendRefresh(); + } + + private void CaptureForm_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e) + { + Layer.LayerManager.Instance.ResumeRefresh(); + } + + // Token: 0x060002A8 RID: 680 RVA: 0x0000EBDF File Offset: 0x0000CDDF + private void CaptureForm_Paint(object sender, PaintEventArgs e) + { + if (CaptureForm.imgSnap != null) + { + e.Graphics.DrawImageUnscaled(CaptureForm.imgSnap, 0, 0); + } + } + + // Token: 0x060002A9 RID: 681 RVA: 0x0000EBFA File Offset: 0x0000CDFA + protected override void OnPaintBackground(PaintEventArgs e) + { + } + + // Token: 0x060002AA RID: 682 RVA: 0x0000EBFC File Offset: 0x0000CDFC + private void CaptureForm_FormClosing(object sender, FormClosingEventArgs e) + { + } + + // Token: 0x060002AB RID: 683 RVA: 0x0000EC00 File Offset: 0x0000CE00 + private void CaptureForm_MouseDown(object sender, MouseEventArgs e) + { + ptStart.X = targetScreen.Bounds.X + e.Location.X; + ptStart.Y = targetScreen.Bounds.Y + e.Location.Y; + DrawSelectArea(0, 0, 1, 1, BoundsSpecified.Size); + blDrag = true; + } + + // Token: 0x060002AC RID: 684 RVA: 0x0000EC7C File Offset: 0x0000CE7C + private void DrawSelectArea(int x1, int y1, int x2, int y2, BoundsSpecified bound) + { + var rectangle = new Rectangle(CaptureForm.selArea.Location, CaptureForm.selArea.Size); + if ((bound & BoundsSpecified.Size) != BoundsSpecified.None && blAreaVisible) + { + rectangle.Width = x2; + rectangle.Height = y2; + } + if ((bound & BoundsSpecified.Location) != BoundsSpecified.None && blAreaVisible) + { + rectangle.X = x1; + rectangle.Y = y1; + } + var visible = x1 != 0 || y1 != 0 || x2 != 1 || y2 != 1; + CaptureForm.selLineHor1.Visible = visible; + CaptureForm.selLineHor2.Visible = visible; + CaptureForm.selLineVer1.Visible = visible; + CaptureForm.selLineVer2.Visible = visible; + CaptureForm.selArea.Visible = visible; + CaptureForm.selLineHor1.SetSelSize(x1 - targetScreen.Bounds.X, x2); + if (CaptureForm.selLineHor1.Top != y1) + { + CaptureForm.selLineHor1.Top = y1; + } + CaptureForm.selLineHor2.SetSelSize(x1 - targetScreen.Bounds.X, x2); + if (CaptureForm.selLineHor2.Top != y1 + y2) + { + CaptureForm.selLineHor2.Top = y1 + y2; + } + CaptureForm.selLineVer1.SetSelSize(y1 - targetScreen.Bounds.Y, y2); + if (CaptureForm.selLineVer1.Left != x1) + { + CaptureForm.selLineVer1.Left = x1; + } + CaptureForm.selLineVer2.SetSelSize(y1 - targetScreen.Bounds.Y, y2); + if (CaptureForm.selLineVer2.Left != x1 + x2) + { + CaptureForm.selLineVer2.Left = x1 + x2; + } + if (blAreaVisible) + { + try + { + CaptureForm.selArea.SetBounds(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height, BoundsSpecified.All); + CaptureForm.selArea.Refresh(); + } + catch (Exception ex) + { + Console.WriteLine("CaptureForm DrawSelectArea Exception: " + ex.Message); + } + } + } + + // Token: 0x060002AD RID: 685 RVA: 0x0000EE84 File Offset: 0x0000D084 + private void CaptureForm_MouseUp(object sender, MouseEventArgs e) + { + ptEnd.X = targetScreen.Bounds.X + e.X; + ptEnd.Y = targetScreen.Bounds.Y + e.Y; + blDrag = false; + EntryCapture(ptStart, ptEnd); + } + + // Token: 0x060002AE RID: 686 RVA: 0x0000EEF4 File Offset: 0x0000D0F4 + private void CaptureForm_MouseMove(object sender, MouseEventArgs e) + { + if (blDrag) + { + DrawSelRect(); + return; + } + DrawSelectArea(0, 0, 1, 1, BoundsSpecified.All); + } + + // Token: 0x060002AF RID: 687 RVA: 0x0000EF14 File Offset: 0x0000D114 + public void EntryCapture(Point lptStart, Point lptEnd) + { + try + { + Console.WriteLine("EntryCapture Start---"); + Console.WriteLine(lptStart.ToString() + ", " + lptEnd.ToString()); + var point = new Point(Math.Min(lptStart.X, lptEnd.X), Math.Min(lptStart.Y, lptEnd.Y)); + ptClipStart = point; + var size = new Size(Math.Abs(lptStart.X - lptEnd.X), Math.Abs(lptStart.Y - lptEnd.Y)); + ptClipSize = size; + if (size.Width < 10 || size.Height < 10) + { + base.DialogResult = DialogResult.Cancel; + } + else + { + CreateClip(point, size); + base.DialogResult = DialogResult.OK; + CaptureForm.rctLast = new Rectangle(point, size); + } + Console.WriteLine("EntryCapture End---"); + EndCapture(); + } + catch (Exception ex) + { + Console.WriteLine("EntryCaptureException: " + ex.Message); + Console.WriteLine(""); + } + } + + // Token: 0x060002B0 RID: 688 RVA: 0x0000F03C File Offset: 0x0000D23C + private void EndCapture() + { + Hide(); + if (CaptureClosedHandler != null) + { + CaptureClosedHandler(this); + } + } + + // Token: 0x060002B1 RID: 689 RVA: 0x0000F058 File Offset: 0x0000D258 + private void GetWindowInfo() + { + aryHWnd = new List(); + var intPtr = CaptureForm.GetTopWindow(CaptureForm.GetDesktopWindow()); + while ((intPtr = CaptureForm.GetNextWindow(intPtr, 2U)) != IntPtr.Zero) + { + if (CaptureForm.IsWindowVisible(intPtr) != 0 && CaptureForm.GetWindow(intPtr, 4U) == IntPtr.Zero) + { + aryHWnd.Add(intPtr); + } + } + } + + // Token: 0x060002B2 RID: 690 RVA: 0x0000F0BC File Offset: 0x0000D2BC + private void SelectWindowRect(Point ptMouse) + { + if (aryHWnd != null) + { + foreach (var hWnd in aryHWnd) + { + if (CaptureForm.GetWindowRect(hWnd, out var rect) && rect.left <= ptMouse.X && ptMouse.X <= rect.right && rect.top <= ptMouse.Y && ptMouse.Y <= rect.bottom) + { + DrawSelectArea(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, BoundsSpecified.All); + break; + } + } + } + } + + // Token: 0x060002B3 RID: 691 RVA: 0x0000F19C File Offset: 0x0000D39C + private void CreateClip(Point pt, Size size) + { + if (bmpClip != null) + { + bmpClip.Dispose(); + } + bmpClip = new Bitmap(size.Width, size.Height, PixelFormat.Format24bppRgb); + using (var graphics = Graphics.FromImage(bmpClip)) + { + graphics.DrawImageUnscaled(CaptureForm.imgSnap, -(pt.X - targetScreen.Bounds.X), -(pt.Y - targetScreen.Bounds.Y)); + } + } + + // Token: 0x060002B4 RID: 692 RVA: 0x0000F248 File Offset: 0x0000D448 + private void timer1_Tick(object sender, EventArgs e) + { + CaptureSelLine.AddDashOffset(); + CaptureForm.selLineVer1.Refresh(); + CaptureForm.selLineVer2.Refresh(); + CaptureForm.selLineHor1.Refresh(); + CaptureForm.selLineHor2.Refresh(); + } + + // Token: 0x060002B5 RID: 693 RVA: 0x0000F278 File Offset: 0x0000D478 + private void CaptureForm_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '0') + { + Console.WriteLine("Captureform KeyPress Start---"); + var rectangle = CaptureForm.rctLast; + EntryCapture(new Point(rectangle.Left, rectangle.Top), new Point(rectangle.Right, rectangle.Bottom)); + Console.WriteLine("Captureform KeyPress End---"); + return; + } + if (e.KeyChar == '\u001b') + { + base.DialogResult = DialogResult.Cancel; + EndCapture(); + } + } + + // Token: 0x060002B6 RID: 694 RVA: 0x0000F2F0 File Offset: 0x0000D4F0 + private void CaptureForm_KeyUp(object sender, KeyEventArgs e) + { + if (e.Control && e.KeyCode == Keys.V && Clipboard.ContainsImage()) + { + ptClipStart = Cursor.Position; + bmpClip = (Bitmap)Clipboard.GetImage(); + base.DialogResult = DialogResult.OK; + EndCapture(); + } + } + + // Token: 0x04000127 RID: 295 + private const int GW_OWNER = 4; + + // Token: 0x04000128 RID: 296 + private const int GW_HWNDNEXT = 2; + + // Token: 0x04000129 RID: 297 + private const int SRCCOPY = 13369376; + + // Token: 0x0400012A RID: 298 + private const int CAPTUREBLT = 1073741824; + + // Token: 0x0400012B RID: 299 + private static Image imgSnap; + + // Token: 0x0400012C RID: 300 + private Bitmap bmpClip; + + // Token: 0x0400012D RID: 301 + private bool blDrag; + + // Token: 0x0400012E RID: 302 + private Point ptStart; + + // Token: 0x0400012F RID: 303 + private Point ptEnd; + + // Token: 0x04000130 RID: 304 + private Point ptPrevEnd; + + // Token: 0x04000131 RID: 305 + private Point ptClipStart; + + // Token: 0x04000132 RID: 306 + private Size ptClipSize; + + // Token: 0x04000133 RID: 307 + private Screen targetScreen; + + // Token: 0x04000134 RID: 308 + private static Form selArea; + + // Token: 0x04000135 RID: 309 + private static CaptureSelLine selLineVer1; + + // Token: 0x04000136 RID: 310 + private static CaptureSelLine selLineVer2; + + // Token: 0x04000137 RID: 311 + private static CaptureSelLine selLineHor1; + + // Token: 0x04000138 RID: 312 + private static CaptureSelLine selLineHor2; + + // Token: 0x04000139 RID: 313 + private bool blAreaVisible; + + // Token: 0x0400013A RID: 314 + private static Rectangle rctLast = new Rectangle(0, 0, 0, 0); + + // Token: 0x0400013B RID: 315 + public CaptureForm.CaptureClosedDelegate CaptureClosedHandler; + + // Token: 0x0400013C RID: 316 + private Thread trd; + + // Token: 0x0400013D RID: 317 + private List aryHWnd; + + // Token: 0x0200004E RID: 78 + // (Invoke) Token: 0x060002C9 RID: 713 + public delegate void CaptureClosedDelegate(CaptureForm cform); + + // Token: 0x0200006C RID: 108 + public struct POINT + { + // Token: 0x04000205 RID: 517 + public int x; + + // Token: 0x04000206 RID: 518 + public int y; + } + + // Token: 0x0200006D RID: 109 + public struct RECT + { + // Token: 0x04000207 RID: 519 + public int left; + + // Token: 0x04000208 RID: 520 + public int top; + + // Token: 0x04000209 RID: 521 + public int right; + + // Token: 0x0400020A RID: 522 + public int bottom; + } + + // Token: 0x0200006E RID: 110 + // (Invoke) Token: 0x060003A6 RID: 934 + private delegate int EnumWindowsCallBack(IntPtr hWnd, int lParam); + + // Token: 0x0200006F RID: 111 + // (Invoke) Token: 0x060003AA RID: 938 + private delegate void ShowFormDelegate(); + + // Token: 0x02000070 RID: 112 + // (Invoke) Token: 0x060003AE RID: 942 + private delegate void LineRefreshDelegate(); + } +} diff --git a/SETUNA/Main/CaptureForm.resx b/SETUNA/Main/CaptureForm.resx new file mode 100644 index 0000000..886d0de --- /dev/null +++ b/SETUNA/Main/CaptureForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/CaptureInfo.Designer.cs b/SETUNA/Main/CaptureInfo.Designer.cs new file mode 100644 index 0000000..a361edf --- /dev/null +++ b/SETUNA/Main/CaptureInfo.Designer.cs @@ -0,0 +1,55 @@ +namespace SETUNA.Main +{ + // Token: 0x020000A7 RID: 167 + sealed partial class CaptureInfo + { + // Token: 0x0600057A RID: 1402 RVA: 0x0002604A File Offset: 0x0002424A + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x0600057B RID: 1403 RVA: 0x0002606C File Offset: 0x0002426C + private void InitializeComponent() + { + this.SuspendLayout(); + // + // CaptureInfo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.ClientSize = new System.Drawing.Size(110, 131); + this.ControlBox = false; + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Location = new System.Drawing.Point(100, 200); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "CaptureInfo"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "info"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.CaptureInfo_FormClosing); + this.Load += new System.EventHandler(this.CaptureInfo_Load); + this.Shown += new System.EventHandler(this.CaptureInfo_Shown); + this.Paint += new System.Windows.Forms.PaintEventHandler(this.CaptureInfo_Paint); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.CaptureInfo_MouseDown); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.CaptureInfo_MouseMove); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.CaptureInfo_MouseUp); + this.ResumeLayout(false); + + } + + // Token: 0x04000372 RID: 882 +#pragma warning disable CS0649 // 从未对字段“CaptureInfo.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“CaptureInfo.components”赋值,字段将一直保持其默认值 null + } +} diff --git a/SETUNA/Main/CaptureInfo.cs b/SETUNA/Main/CaptureInfo.cs new file mode 100644 index 0000000..50c1b02 --- /dev/null +++ b/SETUNA/Main/CaptureInfo.cs @@ -0,0 +1,219 @@ +using System; +using System.ComponentModel; +using System.Drawing; +using System.Threading; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x020000A7 RID: 167 + public sealed partial class CaptureInfo : BaseForm + { + // Token: 0x06000563 RID: 1379 RVA: 0x00025A2C File Offset: 0x00023C2C + ~CaptureInfo() + { + } + + // Token: 0x06000564 RID: 1380 RVA: 0x00025A54 File Offset: 0x00023C54 + protected override void OnClosing(CancelEventArgs e) + { + if (baseImage != null) + { + baseImage.Dispose(); + } + baseImage = null; + base.OnClosing(e); + } + + // Token: 0x170000BF RID: 191 + // (set) Token: 0x06000565 RID: 1381 RVA: 0x00025A77 File Offset: 0x00023C77 + public Image Image + { + set => baseImage = (Image)value.Clone(); + } + + // Token: 0x170000C0 RID: 192 + // (get) Token: 0x06000567 RID: 1383 RVA: 0x00025A93 File Offset: 0x00023C93 + // (set) Token: 0x06000566 RID: 1382 RVA: 0x00025A8A File Offset: 0x00023C8A + public Point MouseLocation + { + get => ptMouse; + set => ptMouse = value; + } + + // Token: 0x170000C1 RID: 193 + // (get) Token: 0x06000569 RID: 1385 RVA: 0x00025AA4 File Offset: 0x00023CA4 + // (set) Token: 0x06000568 RID: 1384 RVA: 0x00025A9B File Offset: 0x00023C9B + public Point StartPoint + { + get => ptStart; + set => ptStart = value; + } + + // Token: 0x170000C2 RID: 194 + // (get) Token: 0x0600056B RID: 1387 RVA: 0x00025AB5 File Offset: 0x00023CB5 + // (set) Token: 0x0600056A RID: 1386 RVA: 0x00025AAC File Offset: 0x00023CAC + public Color MouseColor + { + get => colMouse; + set => colMouse = value; + } + + // Token: 0x170000C3 RID: 195 + // (get) Token: 0x0600056D RID: 1389 RVA: 0x00025AC6 File Offset: 0x00023CC6 + // (set) Token: 0x0600056C RID: 1388 RVA: 0x00025ABD File Offset: 0x00023CBD + public bool IsSelecting + { + get => _isDrag; + set => _isDrag = value; + } + + // Token: 0x0600056E RID: 1390 RVA: 0x00025ACE File Offset: 0x00023CCE + public CaptureInfo() + { + InitializeComponent(); + baseImage = null; + base.Top = 100; + } + + // Token: 0x0600056F RID: 1391 RVA: 0x00025AEC File Offset: 0x00023CEC + private void CaptureInfo_Paint(object sender, PaintEventArgs e) + { + if (isActive || baseImage == null) + { + e.Graphics.FillRectangle(new SolidBrush(Color.Black), 0, 0, base.Width, base.Height); + } + else + { + e.Graphics.DrawImageUnscaled(baseImage, -base.Left, -base.Top, base.Width, base.Height); + e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(180, 0, 0, 0)), 0, 0, base.Width, base.Height); + } + var p = new Point(10, 10); + var font = new Font("Segoe UI Symbol", 9f); + e.Graphics.DrawString("X:" + ptMouse.X.ToString(), font, new SolidBrush(Color.White), p); + e.Graphics.DrawString("Y:" + ptMouse.Y.ToString(), font, new SolidBrush(Color.White), p.X, p.Y + font.GetHeight() + 3f); + if (_isDrag) + { + e.Graphics.DrawString("W:" + Math.Abs(ptMouse.X - ptStart.X).ToString(), font, new SolidBrush(Color.White), p.X + 50, p.Y); + e.Graphics.DrawString("H:" + Math.Abs(ptMouse.Y - ptStart.Y).ToString(), font, new SolidBrush(Color.White), p.X + 50, p.Y + font.GetHeight() + 3f); + } + else + { + e.Graphics.DrawString("W:----", font, new SolidBrush(Color.White), p.X + 50, p.Y); + e.Graphics.DrawString("H:----", font, new SolidBrush(Color.White), p.X + 50, p.Y + font.GetHeight() + 3f); + } + p.Y += 40; + e.Graphics.FillRectangle(new SolidBrush(colMouse), new Rectangle(p.X, p.Y, 30, 30)); + e.Graphics.DrawString("红:" + colMouse.R.ToString(), font, new SolidBrush(Color.White), p.X + 35, p.Y); + p.Y += (int)font.GetHeight() + 3; + e.Graphics.DrawString("绿:" + colMouse.G.ToString(), font, new SolidBrush(Color.White), p.X + 35, p.Y); + p.Y += (int)font.GetHeight() + 3; + e.Graphics.DrawString("蓝:" + colMouse.B.ToString(), font, new SolidBrush(Color.White), p.X + 35, p.Y); + p.Y += (int)font.GetHeight() + 3; + e.Graphics.DrawString("#:" + colMouse.R.ToString("X2") + colMouse.G.ToString("X2") + colMouse.B.ToString("X2"), font, new SolidBrush(Color.White), p.X + 35, p.Y); + } + + // Token: 0x06000570 RID: 1392 RVA: 0x00025F30 File Offset: 0x00024130 + protected override void OnPaintBackground(PaintEventArgs e) + { + } + + // Token: 0x06000571 RID: 1393 RVA: 0x00025F32 File Offset: 0x00024132 + private void CaptureInfo_MouseDown(object sender, MouseEventArgs e) + { + ptStart = new Point(e.X, e.Y); + isActive = true; + base.Opacity = 0.5; + Refresh(); + } + + // Token: 0x06000572 RID: 1394 RVA: 0x00025F67 File Offset: 0x00024167 + private void CaptureInfo_MouseUp(object sender, MouseEventArgs e) + { + isActive = false; + base.Opacity = 1.0; + Refresh(); + } + + // Token: 0x06000573 RID: 1395 RVA: 0x00025F88 File Offset: 0x00024188 + private void CaptureInfo_MouseMove(object sender, MouseEventArgs e) + { + if (isActive) + { + base.Left += e.X - ptStart.X; + base.Top += e.Y - ptStart.Y; + Refresh(); + } + } + + // Token: 0x06000574 RID: 1396 RVA: 0x00025FE1 File Offset: 0x000241E1 + private void timRefresh_Tick(object sender, EventArgs e) + { + Refresh(); + } + + // Token: 0x06000575 RID: 1397 RVA: 0x00025FE9 File Offset: 0x000241E9 + private void CaptureInfo_Load(object sender, EventArgs e) + { + } + + // Token: 0x06000576 RID: 1398 RVA: 0x00025FEB File Offset: 0x000241EB + private void ThreadTask() + { + for (; ; ) + { + base.Invoke(new CaptureInfo.RefreshDelegate(RefreshInfo)); + Thread.Sleep(100); + } + } + + // Token: 0x06000577 RID: 1399 RVA: 0x00026008 File Offset: 0x00024208 + private void RefreshInfo() + { + Refresh(); + } + + // Token: 0x06000578 RID: 1400 RVA: 0x00026010 File Offset: 0x00024210 + private void CaptureInfo_FormClosing(object sender, FormClosingEventArgs e) + { + if (trd != null) + { + trd.Abort(); + } + } + + // Token: 0x06000579 RID: 1401 RVA: 0x00026025 File Offset: 0x00024225 + private void CaptureInfo_Shown(object sender, EventArgs e) + { + trd = new Thread(new ThreadStart(ThreadTask)) + { + IsBackground = true + }; + } + + // Token: 0x0400036B RID: 875 + private Image baseImage; + + // Token: 0x0400036C RID: 876 + private bool isActive; + + // Token: 0x0400036D RID: 877 + private Point ptStart; + + // Token: 0x0400036E RID: 878 + private Point ptMouse; + + // Token: 0x0400036F RID: 879 + private Color colMouse; + + // Token: 0x04000370 RID: 880 + private bool _isDrag; + + // Token: 0x04000371 RID: 881 + private Thread trd; + + // Token: 0x020000A8 RID: 168 + // (Invoke) Token: 0x0600057D RID: 1405 + private delegate void RefreshDelegate(); + } +} diff --git a/SETUNA/Main/CaptureInfo.resx b/SETUNA/Main/CaptureInfo.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/CaptureInfo.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/CaptureSelLine.Designer.cs b/SETUNA/Main/CaptureSelLine.Designer.cs new file mode 100644 index 0000000..552064f --- /dev/null +++ b/SETUNA/Main/CaptureSelLine.Designer.cs @@ -0,0 +1,49 @@ +namespace SETUNA.Main +{ + // Token: 0x02000071 RID: 113 + sealed partial class CaptureSelLine + { + // Token: 0x060003B1 RID: 945 RVA: 0x0001639D File Offset: 0x0001459D + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x060003B2 RID: 946 RVA: 0x000163BC File Offset: 0x000145BC + private void InitializeComponent() + { + this.SuspendLayout(); + // + // CaptureSelLine + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.Fuchsia; + this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.ClientSize = new System.Drawing.Size(1, 1); + this.ControlBox = false; + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(1, 1); + this.Name = "CaptureSelLine"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.TopMost = true; + this.TransparencyKey = System.Drawing.Color.Transparent; + this.Paint += new System.Windows.Forms.PaintEventHandler(this.CaptureSelLine_Paint); + this.ResumeLayout(false); + + } + + // Token: 0x0400020B RID: 523 +#pragma warning disable CS0649 // 从未对字段“CaptureSelLine.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“CaptureSelLine.components”赋值,字段将一直保持其默认值 null + } +} diff --git a/SETUNA/Main/CaptureSelLine.cs b/SETUNA/Main/CaptureSelLine.cs new file mode 100644 index 0000000..8b43d15 --- /dev/null +++ b/SETUNA/Main/CaptureSelLine.cs @@ -0,0 +1,150 @@ +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x02000071 RID: 113 + public sealed partial class CaptureSelLine : BaseForm + { + // Token: 0x060003B3 RID: 947 RVA: 0x00016470 File Offset: 0x00014670 + public static void AddDashOffset() + { + CaptureSelLine.DashOffset++; + if (CaptureSelLine.DashOffset > 7) + { + CaptureSelLine.DashOffset = 0; + } + } + + // Token: 0x060003B4 RID: 948 RVA: 0x0001648C File Offset: 0x0001468C + public CaptureSelLine() + { + InitializeComponent(); + base.Width = 1; + base.Height = 1; + _linetype = SelLineType.Horizon; + } + + // Token: 0x060003B5 RID: 949 RVA: 0x000164B0 File Offset: 0x000146B0 + public CaptureSelLine(SelLineType linetype, bool issolid, Color linecolor) + { + _linetype = linetype; + InitializeComponent(); + pat = new float[] + { + 4f, + 4f + }; + base.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + penBack = new Pen(new SolidBrush(Color.Fuchsia), 1f); + penLine = new Pen(linecolor, 1f); + SetPen(issolid, linecolor); + base.TransparencyKey = Color.Fuchsia; + penWhite = new Pen(new SolidBrush(Color.White), 1f); + } + + // Token: 0x060003B6 RID: 950 RVA: 0x00016554 File Offset: 0x00014754 + public void SetPen(bool issolid, Color linecolor) + { + if (penLine.Color.ToArgb() != linecolor.ToArgb()) + { + penLine = new Pen(linecolor, 1f); + } + if (!issolid) + { + penLine.DashStyle = DashStyle.Dash; + penLine.DashPattern = pat; + return; + } + penLine.DashStyle = DashStyle.Solid; + } + + // Token: 0x060003B7 RID: 951 RVA: 0x000165BC File Offset: 0x000147BC + private void CaptureSelLine_Paint(object sender, PaintEventArgs e) + { + if (penLine == null) + { + return; + } + if (_linetype == SelLineType.Horizon) + { + e.Graphics.DrawLine(penWhite, new Point(ptSel.X, 0), new Point(ptSel.X + szSel.Width - 1, 0)); + e.Graphics.DrawLine(penLine, new Point(ptSel.X + CaptureSelLine.DashOffset, 0), new Point(ptSel.X + szSel.Width - 1, 0)); + if (CaptureSelLine.DashOffset > 4) + { + e.Graphics.DrawLine(penLine, new Point(ptSel.X, 0), new Point(ptSel.X + (CaptureSelLine.DashOffset - 4), 0)); + return; + } + } + else + { + e.Graphics.DrawLine(penWhite, new Point(0, ptSel.Y), new Point(0, ptSel.Y + szSel.Height - 1)); + e.Graphics.DrawLine(penLine, new Point(0, ptSel.Y + CaptureSelLine.DashOffset), new Point(0, ptSel.Y + szSel.Height - 1)); + if (CaptureSelLine.DashOffset > 4) + { + e.Graphics.DrawLine(penLine, new Point(0, ptSel.Y), new Point(0, ptSel.Y + (CaptureSelLine.DashOffset - 4))); + } + } + } + + // Token: 0x060003B8 RID: 952 RVA: 0x00016778 File Offset: 0x00014978 + protected override void OnPaintBackground(PaintEventArgs e) + { + base.OnPaintBackground(e); + } + + // Token: 0x060003B9 RID: 953 RVA: 0x00016784 File Offset: 0x00014984 + public void SetSelSize(int x, int width) + { + if (_linetype == SelLineType.Horizon) + { + ptSel.X = x; + szSel.Width = width; + } + else + { + ptSel.Y = x; + szSel.Height = width; + } + if (lastx == x && lastw == width) + { + return; + } + base.Invalidate(); + base.Update(); + lastx = x; + lastw = width; + } + + // Token: 0x0400020C RID: 524 + private Point ptSel; + + // Token: 0x0400020D RID: 525 + private Size szSel; + + // Token: 0x0400020E RID: 526 + private SelLineType _linetype; + + // Token: 0x0400020F RID: 527 + private Pen penBack; + + // Token: 0x04000210 RID: 528 + private Pen penLine; + + // Token: 0x04000211 RID: 529 + private Pen penWhite; + + // Token: 0x04000212 RID: 530 + private int lastx; + + // Token: 0x04000213 RID: 531 + private int lastw; + + // Token: 0x04000214 RID: 532 + private float[] pat; + + // Token: 0x04000215 RID: 533 + private static int DashOffset; + } +} diff --git a/SETUNA/Main/CaptureSelLine.resx b/SETUNA/Main/CaptureSelLine.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/CaptureSelLine.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/Common/BaseForm.cs b/SETUNA/Main/Common/BaseForm.cs new file mode 100644 index 0000000..789c85c --- /dev/null +++ b/SETUNA/Main/Common/BaseForm.cs @@ -0,0 +1,17 @@ +using System.Windows.Forms; + +public class BaseForm : Form +{ + public static new Form ActiveForm { set; get; } + + + public BaseForm() + { + SETUNA.Main.FormManager.RegisterForm(this); + } + + ~BaseForm() + { + SETUNA.Main.FormManager.DeregisterForm(this); + } +} diff --git a/SETUNA/Main/Common/Utils.cs b/SETUNA/Main/Common/Utils.cs new file mode 100644 index 0000000..a520bee --- /dev/null +++ b/SETUNA/Main/Common/Utils.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + class URLUtils + { + public const string OriginURL = "http://www.clearunit.com/clearup/setuna2/"; + + public const string NewURL = "https://www.github.com/tylearymf/setuna2/"; + } +} diff --git a/SETUNA/Main/Common/WindowsAPI.cs b/SETUNA/Main/Common/WindowsAPI.cs new file mode 100644 index 0000000..1984303 --- /dev/null +++ b/SETUNA/Main/Common/WindowsAPI.cs @@ -0,0 +1,135 @@ + +using System; +using System.Runtime.InteropServices; +using System.Text; + +namespace SETUNA.Main +{ + public class WindowsAPI + { + // Token: 0x06000459 RID: 1113 + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern int SendMessage(System.IntPtr h, int m, System.IntPtr w, System.IntPtr l); + + // Token: 0x0600045A RID: 1114 + [DllImport("comctl32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern bool InitCommonControls(); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern bool SetProcessDPIAware(); + + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern IntPtr GetForegroundWindow(); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern int GetWindowTextLength(IntPtr hWnd); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern int GetWindowModuleFileName(IntPtr hWnd, StringBuilder lpFilename, int nSize); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern int GetClassName(IntPtr hWnd, StringBuilder lpFilename, int nSize); + + public static bool GetWindowZOrder(IntPtr hwnd, out int zOrder) + { + const uint GW_HWNDPREV = 3; + const uint GW_HWNDLAST = 1; + + var lowestHwnd = GetWindow(hwnd, GW_HWNDLAST); + + var z = 0; + var hwndTmp = lowestHwnd; + while (hwndTmp != IntPtr.Zero) + { + if (hwnd == hwndTmp) + { + zOrder = z; + return true; + } + + hwndTmp = GetWindow(hwndTmp, GW_HWNDPREV); + z++; + } + + zOrder = int.MinValue; + return false; + } + + public static string GetWindowTitle(IntPtr hwnd) + { + var length = GetWindowTextLength(hwnd); + if (length == 0) + { + return string.Empty; + } + + var builder = new StringBuilder(length); + GetWindowText(hwnd, builder, length + 1); + + return builder.ToString(); + } + + public static string GetModuleName(IntPtr hwnd) + { + var builder = new StringBuilder(1024); + var len = GetWindowModuleFileName(hwnd, builder, builder.Capacity); + + return builder.ToString(); + } + + public static string GetClassName(IntPtr hwnd) + { + var builder = new StringBuilder(1024); + var len = GetClassName(hwnd, builder, builder.Capacity); + + return builder.ToString(); + } + + + public const int GW_HWNDNEXT = 2; + public const int GW_HWNDPREV = 3; + + [DllImport("user32.dll")] + public static extern IntPtr GetTopWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool IsWindowVisible(IntPtr hWnd); + + [DllImport("user32.dll", CharSet = CharSet.Auto, EntryPoint = "GetWindow", SetLastError = true)] + public static extern IntPtr GetNextWindow(IntPtr hwnd, [MarshalAs(UnmanagedType.U4)] int wFlag); + + public static IntPtr GetTopMostWindow(IntPtr hWnd_mainFrm) + { + var hwnd = GetTopWindow(IntPtr.Zero); + if (hwnd != IntPtr.Zero) + { + while (!IsWindowVisible(hwnd)) + { + hwnd = GetNextWindow(hwnd, GW_HWNDNEXT); + } + } + + return hwnd; + } + + + [DllImport("user32.dll")] + public static extern bool GetWindowRect(IntPtr hwnd, ref Rect rectangle); + } + + public struct Rect + { + public int Left { get; set; } + public int Top { get; set; } + public int Right { get; set; } + public int Bottom { get; set; } + } +} diff --git a/SETUNA/Main/ContextStyleMenuStrip.Designer.cs b/SETUNA/Main/ContextStyleMenuStrip.Designer.cs new file mode 100644 index 0000000..f25f279 --- /dev/null +++ b/SETUNA/Main/ContextStyleMenuStrip.Designer.cs @@ -0,0 +1,44 @@ + +namespace SETUNA.Main +{ + partial class ContextStyleMenuStrip + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // ContextStyleMenuStrip + // + this.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.ContextStyleMenuStrip_Closed); + this.Opened += new System.EventHandler(this.ContextStyleMenuStrip_Opened); + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/SETUNA/Main/ContextStyleMenuStrip.cs b/SETUNA/Main/ContextStyleMenuStrip.cs new file mode 100644 index 0000000..5751906 --- /dev/null +++ b/SETUNA/Main/ContextStyleMenuStrip.cs @@ -0,0 +1,42 @@ +namespace SETUNA.Main +{ + // Token: 0x02000042 RID: 66 + public partial class ContextStyleMenuStrip : global::System.Windows.Forms.ContextMenuStrip + { + // Token: 0x0600026D RID: 621 RVA: 0x0000D1F3 File Offset: 0x0000B3F3 + public ContextStyleMenuStrip() + { + InitializeComponent(); + } + + // Token: 0x0600026E RID: 622 RVA: 0x0000D1FB File Offset: 0x0000B3FB + public ContextStyleMenuStrip(global::System.ComponentModel.IContainer container) + { + container.Add(this); + + InitializeComponent(); + } + + // Token: 0x17000068 RID: 104 + // (get) Token: 0x06000270 RID: 624 RVA: 0x0000D20D File Offset: 0x0000B40D + // (set) Token: 0x0600026F RID: 623 RVA: 0x0000D204 File Offset: 0x0000B404 + public ScrapBase Scrap + { + get => _scrap; + set => _scrap = value; + } + + // Token: 0x04000111 RID: 273 + private ScrapBase _scrap; + + private void ContextStyleMenuStrip_Opened(object sender, System.EventArgs e) + { + Layer.LayerManager.Instance.SuspendRefresh(); + } + + private void ContextStyleMenuStrip_Closed(object sender, System.Windows.Forms.ToolStripDropDownClosedEventArgs e) + { + Layer.LayerManager.Instance.ResumeRefresh(); + } + } +} diff --git a/SETUNA/Main/ContextStyleMenuStrip.resx b/SETUNA/Main/ContextStyleMenuStrip.resx new file mode 100644 index 0000000..e5858cc --- /dev/null +++ b/SETUNA/Main/ContextStyleMenuStrip.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file diff --git a/SETUNA/Main/Extensions/ExtensionAttribute.cs b/SETUNA/Main/Extensions/ExtensionAttribute.cs new file mode 100644 index 0000000..26952d7 --- /dev/null +++ b/SETUNA/Main/Extensions/ExtensionAttribute.cs @@ -0,0 +1,9 @@ + + +namespace System.Runtime.CompilerServices +{ + [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)] + public sealed class ExtensionAttribute : Attribute + { + } +} \ No newline at end of file diff --git a/SETUNA/Main/Extensions/Extensions.cs b/SETUNA/Main/Extensions/Extensions.cs new file mode 100644 index 0000000..e1f44c0 --- /dev/null +++ b/SETUNA/Main/Extensions/Extensions.cs @@ -0,0 +1,12 @@ +using System; + +namespace SETUNA.Main +{ + internal static class DateTimeExtensions + { + public static string ToCustomString(this DateTime dateTime) + { + return dateTime.ToString("yyyy-MM-dd HH-mm-ss-ff"); + } + } +} diff --git a/SETUNA/Main/HotKeyID.cs b/SETUNA/Main/HotKeyID.cs new file mode 100644 index 0000000..bed4b05 --- /dev/null +++ b/SETUNA/Main/HotKeyID.cs @@ -0,0 +1,10 @@ +namespace SETUNA.Main +{ + public enum HotKeyID + { + Capture = 0, + Function1, + + __Count__ = 2, + } +} diff --git a/SETUNA/Main/HotkeyControl.Designer.cs b/SETUNA/Main/HotkeyControl.Designer.cs new file mode 100644 index 0000000..ed0083b --- /dev/null +++ b/SETUNA/Main/HotkeyControl.Designer.cs @@ -0,0 +1,37 @@ +namespace SETUNA.Main +{ + partial class HotkeyControl + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + } + + #endregion + } +} diff --git a/SETUNA/Main/HotkeyControl.cs b/SETUNA/Main/HotkeyControl.cs new file mode 100644 index 0000000..5fd8f1b --- /dev/null +++ b/SETUNA/Main/HotkeyControl.cs @@ -0,0 +1,82 @@ +using System; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + public partial class HotkeyControl : UserControl + { + private System.Windows.Forms.Keys m_hotkey; + + public HotkeyControl() + { + InitializeComponent(); + + SetStyle(System.Windows.Forms.ControlStyles.UserPaint, false); + } + + protected override CreateParams CreateParams + { + get + { + var baseParams = base.CreateParams; + baseParams.ClassName = "msctls_hotkey32"; + return baseParams; + } + } + + protected override void OnLoad(EventArgs e) + { + Hotkey = m_hotkey; + } + + public System.Windows.Forms.Keys Hotkey + { + get + { + if (IsHandleCreated) + { + var num = WindowsAPI.SendMessage(Handle, 1026, System.IntPtr.Zero, System.IntPtr.Zero); + var num2 = num; + var keys = (System.Windows.Forms.Keys)(num2 & 255); + num2 >>= 8; + if ((num2 & 4) != 0) + { + keys |= System.Windows.Forms.Keys.Alt; + } + if ((num2 & 2) != 0) + { + keys |= System.Windows.Forms.Keys.Control; + } + if ((num2 & 1) != 0) + { + keys |= System.Windows.Forms.Keys.Shift; + } + return keys; + } + return m_hotkey; + } + set + { + if (IsHandleCreated) + { + var num = 0; + if ((value & System.Windows.Forms.Keys.Alt) != System.Windows.Forms.Keys.None) + { + num |= 4; + } + if ((value & System.Windows.Forms.Keys.Control) != System.Windows.Forms.Keys.None) + { + num |= 2; + } + if ((value & System.Windows.Forms.Keys.Shift) != System.Windows.Forms.Keys.None) + { + num |= 1; + } + WindowsAPI.SendMessage(Handle, 1025, (System.IntPtr)(num << 8 | (int)(value & System.Windows.Forms.Keys.KeyCode)), System.IntPtr.Zero); + return; + } + m_hotkey = value; + } + } + } +} diff --git a/SETUNA/Main/HotkeyMsg.Designer.cs b/SETUNA/Main/HotkeyMsg.Designer.cs new file mode 100644 index 0000000..5de94d6 --- /dev/null +++ b/SETUNA/Main/HotkeyMsg.Designer.cs @@ -0,0 +1,136 @@ +namespace SETUNA.Main +{ + // Token: 0x02000051 RID: 81 + partial class HotkeyMsg + { + // Token: 0x06000307 RID: 775 RVA: 0x00014BEC File Offset: 0x00012DEC + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x06000308 RID: 776 RVA: 0x00014C0C File Offset: 0x00012E0C + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.btnClose = new System.Windows.Forms.Button(); + this.lblKey = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.label1.Location = new System.Drawing.Point(63, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(112, 14); + this.label1.TabIndex = 0; + this.label1.Text = "禁用快捷键设置"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(75, 61); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(269, 12); + this.label2.TabIndex = 1; + this.label2.Text = "因为被其他软件使用,禁用SETUNA的快捷键设置。"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(75, 76); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(269, 12); + this.label3.TabIndex = 2; + this.label3.Text = "您可以重新指定启用另一个键,请打开选项设置。"; + // + // btnClose + // + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnClose.Location = new System.Drawing.Point(407, 104); + this.btnClose.Name = "btnClose"; + this.btnClose.Size = new System.Drawing.Size(98, 23); + this.btnClose.TabIndex = 3; + this.btnClose.Text = "关闭"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // lblKey + // + this.lblKey.AutoSize = true; + this.lblKey.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.lblKey.Location = new System.Drawing.Point(88, 40); + this.lblKey.Name = "lblKey"; + this.lblKey.Size = new System.Drawing.Size(68, 12); + this.lblKey.TabIndex = 4; + this.lblKey.Text = "Ctrl + D1"; + // + // pictureBox1 + // + this.pictureBox1.Image = global::SETUNA.Properties.Resources.icon; + this.pictureBox1.Location = new System.Drawing.Point(9, 9); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(48, 48); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox1.TabIndex = 5; + this.pictureBox1.TabStop = false; + // + // HotkeyMsg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.CancelButton = this.btnClose; + this.ClientSize = new System.Drawing.Size(517, 139); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.lblKey); + this.Controls.Add(this.btnClose); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "HotkeyMsg"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "SETUNA快捷键设置"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + // Token: 0x040001BB RID: 443 +#pragma warning disable CS0649 // 从未对字段“HotkeyMsg.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“HotkeyMsg.components”赋值,字段将一直保持其默认值 null + + // Token: 0x040001BC RID: 444 + private global::System.Windows.Forms.Label label1; + + // Token: 0x040001BD RID: 445 + private global::System.Windows.Forms.Label label2; + + // Token: 0x040001BE RID: 446 + private global::System.Windows.Forms.Label label3; + + // Token: 0x040001BF RID: 447 + private global::System.Windows.Forms.Button btnClose; + + // Token: 0x040001C0 RID: 448 + private global::System.Windows.Forms.Label lblKey; + + // Token: 0x040001C1 RID: 449 + private global::System.Windows.Forms.PictureBox pictureBox1; + } +} diff --git a/SETUNA/Main/HotkeyMsg.cs b/SETUNA/Main/HotkeyMsg.cs new file mode 100644 index 0000000..652326b --- /dev/null +++ b/SETUNA/Main/HotkeyMsg.cs @@ -0,0 +1,57 @@ +using System; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x02000051 RID: 81 + public partial class HotkeyMsg : BaseForm + { + // Token: 0x17000075 RID: 117 + // (set) Token: 0x06000309 RID: 777 RVA: 0x00015038 File Offset: 0x00013238 + public Keys HotKey + { + set + { + _key = value; + var text = ""; + if ((_key & Keys.Control) == Keys.Control) + { + text += "Ctrl + "; + } + if ((_key & Keys.Shift) == Keys.Shift) + { + text += "Shift + "; + } + if ((_key & Keys.Alt) == Keys.Alt) + { + text += "Alt + "; + } + text += (_key & Keys.KeyCode).ToString(); + lblKey.Text = text; + } + } + + // Token: 0x0600030A RID: 778 RVA: 0x000150D8 File Offset: 0x000132D8 + public HotkeyMsg() + { + InitializeComponent(); + } + + // Token: 0x0600030B RID: 779 RVA: 0x000150E6 File Offset: 0x000132E6 + private void btnClose_Click(object sender, EventArgs e) + { + base.DialogResult = DialogResult.Cancel; + base.Close(); + } + + // Token: 0x0600030C RID: 780 RVA: 0x000150F5 File Offset: 0x000132F5 + private void btnOption_Click(object sender, EventArgs e) + { + base.DialogResult = DialogResult.OK; + base.Close(); + } + + // Token: 0x040001C2 RID: 450 + private Keys _key; + } +} diff --git a/SETUNA/Main/HotkeyMsg.resx b/SETUNA/Main/HotkeyMsg.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/HotkeyMsg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/IFormActivatedListener.cs b/SETUNA/Main/IFormActivatedListener.cs new file mode 100644 index 0000000..2e29c21 --- /dev/null +++ b/SETUNA/Main/IFormActivatedListener.cs @@ -0,0 +1,7 @@ +namespace SETUNA.Main +{ + public interface IFormActivatedListener + { + void Activated(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/IFormDeactivatedListener.cs b/SETUNA/Main/IFormDeactivatedListener.cs new file mode 100644 index 0000000..54c8546 --- /dev/null +++ b/SETUNA/Main/IFormDeactivatedListener.cs @@ -0,0 +1,7 @@ +namespace SETUNA.Main +{ + public interface IFormDeactivatedListener + { + void Deactivated(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/IScrapAddedListener.cs b/SETUNA/Main/IScrapAddedListener.cs new file mode 100644 index 0000000..b5d24ed --- /dev/null +++ b/SETUNA/Main/IScrapAddedListener.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + // Token: 0x02000039 RID: 57 + public interface IScrapAddedListener + { + // Token: 0x06000220 RID: 544 + void ScrapAdded(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/IScrapImageChangedListener.cs b/SETUNA/Main/IScrapImageChangedListener.cs new file mode 100644 index 0000000..73ccea4 --- /dev/null +++ b/SETUNA/Main/IScrapImageChangedListener.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + // Token: 0x02000031 RID: 49 + public interface IScrapImageChangedListener + { + // Token: 0x060001D7 RID: 471 + void ScrapImageChanged(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/IScrapKeyPressEventListener.cs b/SETUNA/Main/IScrapKeyPressEventListener.cs new file mode 100644 index 0000000..480d198 --- /dev/null +++ b/SETUNA/Main/IScrapKeyPressEventListener.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + // Token: 0x02000038 RID: 56 + public interface IScrapKeyPressEventListener + { + // Token: 0x0600021F RID: 543 + void ScrapKeyPress(object sender, ScrapKeyPressEventArgs e); + } +} diff --git a/SETUNA/Main/IScrapLocationChangedListener.cs b/SETUNA/Main/IScrapLocationChangedListener.cs new file mode 100644 index 0000000..c68a984 --- /dev/null +++ b/SETUNA/Main/IScrapLocationChangedListener.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + // Token: 0x02000031 RID: 49 + public interface IScrapLocationChangedListener + { + // Token: 0x060001D7 RID: 471 + void ScrapLocationChanged(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/IScrapMenuListener.cs b/SETUNA/Main/IScrapMenuListener.cs new file mode 100644 index 0000000..9c0a531 --- /dev/null +++ b/SETUNA/Main/IScrapMenuListener.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + // Token: 0x02000031 RID: 49 + public interface IScrapMenuListener + { + // Token: 0x060001D7 RID: 471 + void ScrapMenuOpening(object sender, ScrapMenuArgs e); + } +} diff --git a/SETUNA/Main/IScrapRemovedListener.cs b/SETUNA/Main/IScrapRemovedListener.cs new file mode 100644 index 0000000..63ff7a7 --- /dev/null +++ b/SETUNA/Main/IScrapRemovedListener.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + // Token: 0x0200003A RID: 58 + public interface IScrapRemovedListener + { + // Token: 0x06000221 RID: 545 + void ScrapRemoved(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/IScrapStyleAppliedListener.cs b/SETUNA/Main/IScrapStyleAppliedListener.cs new file mode 100644 index 0000000..e8c22a3 --- /dev/null +++ b/SETUNA/Main/IScrapStyleAppliedListener.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + // Token: 0x02000031 RID: 49 + public interface IScrapStyleAppliedListener + { + // Token: 0x060001D7 RID: 471 + void ScrapStyleApplied(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/IScrapStyleListener.cs b/SETUNA/Main/IScrapStyleListener.cs new file mode 100644 index 0000000..e12a0d5 --- /dev/null +++ b/SETUNA/Main/IScrapStyleListener.cs @@ -0,0 +1,21 @@ +namespace SETUNA.Main +{ + // Token: 0x02000030 RID: 48 + public interface IScrapStyleListener + { + // Token: 0x060001D2 RID: 466 + void ScrapCreated(object sender, ScrapEventArgs e); + + // Token: 0x060001D3 RID: 467 + void ScrapInactived(object sender, ScrapEventArgs e); + + // Token: 0x060001D4 RID: 468 + void ScrapActivated(object sender, ScrapEventArgs e); + + // Token: 0x060001D5 RID: 469 + void ScrapInactiveMouseOver(object sender, ScrapEventArgs e); + + // Token: 0x060001D6 RID: 470 + void ScrapInactiveMouseOut(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/IScrapStyleRemovedListener.cs b/SETUNA/Main/IScrapStyleRemovedListener.cs new file mode 100644 index 0000000..988fc5c --- /dev/null +++ b/SETUNA/Main/IScrapStyleRemovedListener.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main +{ + // Token: 0x02000031 RID: 49 + public interface IScrapStyleRemovedListener + { + // Token: 0x060001D7 RID: 471 + void ScrapStyleRemoved(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/KeyItems/IKeyItemListener.cs b/SETUNA/Main/KeyItems/IKeyItemListener.cs new file mode 100644 index 0000000..4272a6f --- /dev/null +++ b/SETUNA/Main/KeyItems/IKeyItemListener.cs @@ -0,0 +1,11 @@ +using System; + +namespace SETUNA.Main.KeyItems +{ + // Token: 0x02000058 RID: 88 + public interface IKeyItemListener + { + // Token: 0x06000325 RID: 805 + void ParentMove(object sender, EventArgs e); + } +} diff --git a/SETUNA/Main/KeyItems/KeyItem.cs b/SETUNA/Main/KeyItems/KeyItem.cs new file mode 100644 index 0000000..40d1069 --- /dev/null +++ b/SETUNA/Main/KeyItems/KeyItem.cs @@ -0,0 +1,98 @@ +using System; +using System.Windows.Forms; +using SETUNA.Main.Style; + +namespace SETUNA.Main.KeyItems +{ + // Token: 0x02000055 RID: 85 + public class KeyItem + { + // Token: 0x14000017 RID: 23 + // (add) Token: 0x06000314 RID: 788 RVA: 0x000151E4 File Offset: 0x000133E4 + // (remove) Token: 0x06000315 RID: 789 RVA: 0x000151FD File Offset: 0x000133FD + public event KeyItem.ParentMoveHandler ParentMoveEvent; + + // Token: 0x06000316 RID: 790 RVA: 0x00015216 File Offset: 0x00013416 + public KeyItem() + { + _keycode = Keys.None; + } + + // Token: 0x06000317 RID: 791 RVA: 0x00015225 File Offset: 0x00013425 + public KeyItem(Keys key) + { + _keycode = key; + } + + // Token: 0x17000076 RID: 118 + // (get) Token: 0x06000319 RID: 793 RVA: 0x0001523D File Offset: 0x0001343D + // (set) Token: 0x06000318 RID: 792 RVA: 0x00015234 File Offset: 0x00013434 + public int _key + { + get => (int)_keycode; + set => _keycode = (Keys)value; + } + + // Token: 0x0600031A RID: 794 RVA: 0x00015245 File Offset: 0x00013445 + public KeyItem(Keys key, CStyle parentStyle) + { + _keycode = key; + _parent = parentStyle; + addKeyItemListener(parentStyle); + } + + // Token: 0x17000077 RID: 119 + // (get) Token: 0x0600031B RID: 795 RVA: 0x00015262 File Offset: 0x00013462 + public CStyle ParentStyle => _parent; + + // Token: 0x0600031C RID: 796 RVA: 0x0001526C File Offset: 0x0001346C + public override string ToString() + { + var str = ""; + if ((_keycode & Keys.Control) == Keys.Control) + { + str += "Ctrl+"; + } + if ((_keycode & Keys.Shift) == Keys.Shift) + { + str += "Shift+"; + } + if ((_keycode & Keys.Alt) == Keys.Alt) + { + str += "Alt+"; + } + return str + (_keycode & Keys.KeyCode).ToString(); + } + + // Token: 0x0600031D RID: 797 RVA: 0x000152FA File Offset: 0x000134FA + public void addKeyItemListener(IKeyItemListener listener) + { + ParentMoveEvent = (KeyItem.ParentMoveHandler)Delegate.Combine(ParentMoveEvent, new KeyItem.ParentMoveHandler(listener.ParentMove)); + } + + // Token: 0x0600031E RID: 798 RVA: 0x0001531F File Offset: 0x0001351F + protected void OnParentMove() + { + if (ParentMoveEvent != null) + { + ParentMoveEvent(_keycode, new EventArgs()); + } + } + + // Token: 0x0600031F RID: 799 RVA: 0x00015344 File Offset: 0x00013544 + public void Deparent() + { + OnParentMove(); + } + + // Token: 0x040001C7 RID: 455 + protected Keys _keycode; + + // Token: 0x040001C8 RID: 456 + protected CStyle _parent; + + // Token: 0x02000084 RID: 132 + // (Invoke) Token: 0x06000466 RID: 1126 + public delegate void ParentMoveHandler(object sender, EventArgs e); + } +} diff --git a/SETUNA/Main/KeyItems/KeyItemBook.cs b/SETUNA/Main/KeyItems/KeyItemBook.cs new file mode 100644 index 0000000..0c9f36b --- /dev/null +++ b/SETUNA/Main/KeyItems/KeyItemBook.cs @@ -0,0 +1,45 @@ +using System.Collections; +using System.Windows.Forms; + +namespace SETUNA.Main.KeyItems +{ + // Token: 0x02000044 RID: 68 + public class KeyItemBook + { + // Token: 0x06000277 RID: 631 RVA: 0x0000D583 File Offset: 0x0000B783 + public KeyItemBook() + { + _keys = new Hashtable(); + } + + // Token: 0x06000278 RID: 632 RVA: 0x0000D596 File Offset: 0x0000B796 + public void AddKeyItem(KeyItem key) + { + _keys.Add(key._key, key); + } + + // Token: 0x06000279 RID: 633 RVA: 0x0000D5B0 File Offset: 0x0000B7B0 + public void AddKeyItem(KeyItem[] keys) + { + for (var i = 0; i < keys.Length; i++) + { + AddKeyItem(keys[i]); + } + } + + // Token: 0x0600027A RID: 634 RVA: 0x0000D5D4 File Offset: 0x0000B7D4 + public KeyItem FindKeyItem(Keys key) + { + return (KeyItem)_keys[(int)key]; + } + + // Token: 0x0600027B RID: 635 RVA: 0x0000D5EC File Offset: 0x0000B7EC + public KeyItem FindKeyItem(KeyItem key) + { + return FindKeyItem((Keys)key._key); + } + + // Token: 0x04000117 RID: 279 + private Hashtable _keys; + } +} diff --git a/SETUNA/Main/Layer/IWindowFilter.cs b/SETUNA/Main/Layer/IWindowFilter.cs new file mode 100644 index 0000000..6d2fe53 --- /dev/null +++ b/SETUNA/Main/Layer/IWindowFilter.cs @@ -0,0 +1,7 @@ +namespace SETUNA.Main.Layer +{ + interface IWindowFilter + { + bool IsFilter(WindowInfo windowInfo); + } +} diff --git a/SETUNA/Main/Layer/LayerManager.cs b/SETUNA/Main/Layer/LayerManager.cs new file mode 100644 index 0000000..b1a6458 --- /dev/null +++ b/SETUNA/Main/Layer/LayerManager.cs @@ -0,0 +1,308 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using SETUNA.Main.StyleItems; + +namespace SETUNA.Main.Layer +{ + public class LayerManager + { + public static readonly LayerManager Instance = new LayerManager(); + + // 缓存所有已打开的窗体 + private Dictionary formDic; + + // 层级排序相关 + private List sortingFormDatas; + private int maxSortingOrder; + + // 置顶窗体 + private FormData topMostFormData; + + // 层级刷新 挂起开关 + private bool isSuspend = false; + + // 窗体过滤器 + private IWindowFilter windowFilter; + + + public void Init() + { + formDic = new Dictionary(50); + sortingFormDatas = new List(50); + windowFilter = new WindowsFilter(); + + WindowManager.WindowActived += WindowManager_WindowActived; + WindowManager.TopMostChanged += WindowManager_TopMostChanged; + FormManager.Showed += FormManager_Showed; + FormManager.Closed += FormManager_Closed; + } + + public void DelayInit() + { + FormManager.Activated += FormManager_Activated; + FormManager.Deactivated += FormManager_Deactivated; + } + + public void DeInit() + { + WindowManager.WindowActived -= WindowManager_WindowActived; + WindowManager.TopMostChanged -= WindowManager_TopMostChanged; + FormManager.Activated -= FormManager_Activated; + FormManager.Deactivated -= FormManager_Deactivated; + + windowFilter = null; + sortingFormDatas = null; + formDic = null; + } + + + public void SuspendRefresh() + { + isSuspend = true; + } + + public void ResumeRefresh() + { + isSuspend = false; + } + + public int GetNextSortingOrder() + { + if (maxSortingOrder > 1000) + { + OptimizeLayerCounter(); + } + + return ++maxSortingOrder; + } + + public void RefreshLayer() + { + Console.WriteLine("RefreshLayer"); + + sortingFormDatas.Clear(); + sortingFormDatas.AddRange(formDic.Values); + sortingFormDatas.Sort((x, y) => x.SortingOrder.CompareTo(y.SortingOrder)); + + foreach (var item in sortingFormDatas) + { + if (!item.Visible) + { + continue; + } + + item.TopMost = true; + } + } + + public void OptimizeLayerCounter() + { + var forms = new List(formDic.Values); + forms.Sort((x, y) => x.SortingOrder.CompareTo(y.SortingOrder)); + + var noDuplicates = new List(forms); + for (var i = 0; i < noDuplicates.Count; i++) + { + var item = noDuplicates[i]; + var removeCount = noDuplicates.RemoveAll(x => x.SortingOrder == item.SortingOrder && x != item); + } + maxSortingOrder = noDuplicates.Count - 1; + + var sortingValueDic = new Dictionary(noDuplicates.Count); + for (var i = 0; i < noDuplicates.Count; i++) + { + sortingValueDic.Add(noDuplicates[i].SortingOrder, i); + } + + foreach (var item in forms) + { + item.SortingOrder = sortingValueDic[item.SortingOrder]; + } + } + + void WindowManager_WindowActived(object sender, WindowInfo windowInfo) + { + CheckRefreshLayer(windowInfo); + } + + void WindowManager_TopMostChanged(object sender, WindowInfo windowInfo) + { + CheckRefreshLayer(windowInfo); + } + + void CheckRefreshLayer(WindowInfo windowInfo) + { + // 是否挂起 + if (isSuspend) + { + return; + } + + // 是否当前项目的窗体 + if (formDic.ContainsKey(windowInfo.Handle)) + { + return; + } + + // 是否过滤 + if ((windowFilter?.IsFilter(windowInfo) ?? false == true)) + { + return; + } + +#if DEBUG + Console.WriteLine($"Opened:{windowInfo}"); +#endif + + var topMostInfo = topMostFormData?.WindowInfo ?? WindowInfo.Empty; + if (topMostInfo != WindowInfo.Empty) + { + // 当前项目的顶级窗体 与 其他Windows程序的 比较 排序值 + if (topMostInfo.ZOrder >= windowInfo.ZOrder) + { + return; + } + + var hasIntersect = false; + foreach (var item in formDic.Values) + { + var childInfo = item.WindowInfo; + + // 当前项目的所有打开的窗体 与 其他Windows程序 比较 相交性 + if (childInfo.Rect.IntersectsWith(windowInfo.Rect)) + { + hasIntersect = true; + break; + } + } + + if (!hasIntersect) + { + return; + } + +#if DEBUG + Console.WriteLine($"TopMost: {topMostInfo}"); +#endif + } + + RefreshLayer(); + + } + + void FormManager_Showed(Form form) + { + //Console.WriteLine("Showed:" + form); ; + + if (form != null) + { + var sortingOrder = 0; + ScrapBase scrapBase = null; + + if (form is ScrapBase scrap) + { + scrapBase = scrap; + } + else if (form is CompactScrap compact) + { + scrapBase = compact.scrap; + } + + if (scrapBase != null) + { + sortingOrder = scrapBase.CacheItem.SortingOrder; + maxSortingOrder = Math.Max(sortingOrder, maxSortingOrder); + scrapBase.CacheItem.SaveInfo(); + } + + if (sortingOrder == 0) + { + sortingOrder = GetNextSortingOrder(); + + if (scrapBase != null) + { + scrapBase.CacheItem.SortingOrder = sortingOrder; + scrapBase.CacheItem.SaveInfo(); + } + } + + formDic.Add(form.Handle, new FormData(form, sortingOrder)); + } + } + + void FormManager_Closed(Form form) + { + //Console.WriteLine("Closed:" + form); + + if (form != null) + { + formDic.Remove(form.Handle); + } + } + + void FormManager_Activated(Form form) + { + //Console.WriteLine("Activated:" + form); + + if (formDic.TryGetValue(form.Handle, out var formData)) + { + var sortingOrder = GetNextSortingOrder(); + formData.SortingOrder = sortingOrder; + + ScrapBase scrapBase = null; + + if (form is ScrapBase scrap) + { + scrapBase = scrap; + } + else if (form is CompactScrap compact) + { + scrapBase = compact.scrap; + } + + if (scrapBase != null) + { + scrapBase.CacheItem.SortingOrder = sortingOrder; + scrapBase.CacheItem.SaveInfo(); + } + + topMostFormData = formData; + } + } + + void FormManager_Deactivated(Form form) + { + //Console.WriteLine("Deactivated:" + form); + } + } + + public class FormData + { + public Form Form { set; get; } + public int SortingOrder { set; get; } + + public bool Visible => Form.Visible; + + public bool TopMost + { + set => Form.TopMost = value; + get => Form.TopMost; + } + + public WindowInfo WindowInfo => WindowManager.Instance.GetWindowInfo(Form.Handle); + + + public FormData(Form form, int sortingOrder) + { + Form = form; + SortingOrder = sortingOrder; + } + + + public override string ToString() + { + return WindowInfo.ToString(); + } + } +} diff --git a/SETUNA/Main/Layer/WindowsFilter.cs b/SETUNA/Main/Layer/WindowsFilter.cs new file mode 100644 index 0000000..f08b8e6 --- /dev/null +++ b/SETUNA/Main/Layer/WindowsFilter.cs @@ -0,0 +1,72 @@ +namespace SETUNA.Main.Layer +{ + class WindowsFilter : IWindowFilter + { + struct FilterInfo + { + public string TitleName { set; get; } + public string ClassName { set; get; } + + + public FilterInfo(string className) + { + TitleName = null; + ClassName = className; + } + + public FilterInfo(string titleName, string className) + { + TitleName = titleName; + ClassName = className; + } + } + + static FilterInfo[] filterInfos = new FilterInfo[] + { + //QQ + new FilterInfo(string.Empty, "TXGuiFoundation"), + //有度 + new FilterInfo("ScreenShotWnd"), + //微信 + new FilterInfo("SnapshotWnd"), + new FilterInfo("CToolBarWnd"), + }; + + bool IWindowFilter.IsFilter(WindowInfo windowInfo) + { + var titleName = windowInfo.TitleName; + var className = windowInfo.ClassName; + + foreach (var item in filterInfos) + { + bool? flag1 = null; + if (item.TitleName != null) + { + flag1 = item.TitleName == titleName; + } + + bool? flag2 = null; + if (item.ClassName != null) + { + flag2 = item.ClassName == className; + } + + if (flag1.HasValue && flag2.HasValue) + { + if (flag1.Value && flag2.Value) + { + return true; + } + } + + var result = flag1.HasValue ? flag1.Value : flag2.HasValue ? flag2.Value : false; + if (result) + { + return true; + } + } + + return false; + } + } +} diff --git a/SETUNA/Main/Option/OptionForm.Designer.cs b/SETUNA/Main/Option/OptionForm.Designer.cs new file mode 100644 index 0000000..78cbe8a --- /dev/null +++ b/SETUNA/Main/Option/OptionForm.Designer.cs @@ -0,0 +1,1764 @@ +namespace SETUNA.Main.Option +{ + // Token: 0x02000050 RID: 80 + partial class OptionForm + { + // Token: 0x060002D1 RID: 721 RVA: 0x0000F7FB File Offset: 0x0000D9FB + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x060002D2 RID: 722 RVA: 0x0000F81C File Offset: 0x0000DA1C + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.panel2 = new System.Windows.Forms.Panel(); + this.lblComment = new System.Windows.Forms.Label(); + this.btnCancel = new System.Windows.Forms.Button(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.detailPanel = new System.Windows.Forms.Panel(); + this.tabControl1 = new com.clearunit.WithoutTabControl(); + this.pageAll = new System.Windows.Forms.TabPage(); + this.button2 = new System.Windows.Forms.Button(); + this.groupBox13 = new System.Windows.Forms.GroupBox(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.groupBox7 = new System.Windows.Forms.GroupBox(); + this.checkBox_autoStartup = new System.Windows.Forms.CheckBox(); + this.checkBox_topMost = new System.Windows.Forms.CheckBox(); + this.chkSplash = new System.Windows.Forms.CheckBox(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.chkDustBox = new System.Windows.Forms.CheckBox(); + this.label14 = new System.Windows.Forms.Label(); + this.numDustBox = new System.Windows.Forms.NumericUpDown(); + this.btnInitialize = new System.Windows.Forms.Button(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.chkShowMainWindow = new System.Windows.Forms.CheckBox(); + this.rdoExeTypeResident = new System.Windows.Forms.RadioButton(); + this.rdoExeTypeApp = new System.Windows.Forms.RadioButton(); + this.pageCapture = new System.Windows.Forms.TabPage(); + this.groupBox12 = new System.Windows.Forms.GroupBox(); + this.label16 = new System.Windows.Forms.Label(); + this.chkCC6 = new System.Windows.Forms.CheckBox(); + this.chkCC4 = new System.Windows.Forms.CheckBox(); + this.chkCC2 = new System.Windows.Forms.CheckBox(); + this.chkCC8 = new System.Windows.Forms.CheckBox(); + this.chkCC3 = new System.Windows.Forms.CheckBox(); + this.chkCC1 = new System.Windows.Forms.CheckBox(); + this.chkCC9 = new System.Windows.Forms.CheckBox(); + this.chkCC7 = new System.Windows.Forms.CheckBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.rdoDupCapture = new System.Windows.Forms.RadioButton(); + this.rdoDupNone = new System.Windows.Forms.RadioButton(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.rdoSelLineTypeDotted = new System.Windows.Forms.RadioButton(); + this.rdoSelLineTypeSolid = new System.Windows.Forms.RadioButton(); + this.label12 = new System.Windows.Forms.Label(); + this.numSelectAreaTrans = new System.Windows.Forms.NumericUpDown(); + this.picSelectAreaBackColor = new System.Windows.Forms.PictureBox(); + this.picSelectAreaLineColor = new System.Windows.Forms.PictureBox(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.hotkeyControl2 = new SETUNA.Main.HotkeyControl(); + this.label17 = new System.Windows.Forms.Label(); + this.hotkeyControl1 = new SETUNA.Main.HotkeyControl(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.label3 = new System.Windows.Forms.Label(); + this.pageScrap = new System.Windows.Forms.TabPage(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.pnlScrapStyle = new System.Windows.Forms.Panel(); + this.cmbWClickStyle = new System.Windows.Forms.ComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.cmbCreateStyle = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); + this.panel4 = new System.Windows.Forms.Panel(); + this.chkScrapImageDrag = new System.Windows.Forms.CheckBox(); + this.groupBox11 = new System.Windows.Forms.GroupBox(); + this.label15 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.numMouseOverAlpha = new System.Windows.Forms.NumericUpDown(); + this.chkMouseOverAlphaChange = new System.Windows.Forms.CheckBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.numInactiveAlpha = new System.Windows.Forms.NumericUpDown(); + this.chkInactiveAlphaChange = new System.Windows.Forms.CheckBox(); + this.pageStyle = new System.Windows.Forms.TabPage(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.button1 = new System.Windows.Forms.Button(); + this.listStyles = new SETUNA.Main.SetunaListBox(); + this.listKeyItems = new System.Windows.Forms.ListBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.btnEditStyle = new System.Windows.Forms.Button(); + this.listStyleItems = new System.Windows.Forms.ListBox(); + this.btnDeleteStyle = new System.Windows.Forms.Button(); + this.btnNewStyle = new System.Windows.Forms.Button(); + this.pageScrapMenu = new System.Windows.Forms.TabPage(); + this.btnScrapMenuMove = new System.Windows.Forms.Button(); + this.groupBox10 = new System.Windows.Forms.GroupBox(); + this.listScrapMenuList = new SETUNA.Main.SetunaListBox(); + this.groupBox9 = new System.Windows.Forms.GroupBox(); + this.listScrapMenuItems = new SETUNA.Main.SetunaListBox(); + this.groupBox8 = new System.Windows.Forms.GroupBox(); + this.listScrapMenuStyles = new SETUNA.Main.SetunaListBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.lblMenuStyle = new System.Windows.Forms.Label(); + this.lblMenuCapture = new System.Windows.Forms.Label(); + this.lblMenuMenu = new System.Windows.Forms.Label(); + this.lblMenuScrap = new System.Windows.Forms.Label(); + this.lblMenuAll = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.panel2.SuspendLayout(); + this.panel3.SuspendLayout(); + this.detailPanel.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.pageAll.SuspendLayout(); + this.groupBox13.SuspendLayout(); + this.groupBox7.SuspendLayout(); + this.groupBox5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numDustBox)).BeginInit(); + this.groupBox6.SuspendLayout(); + this.pageCapture.SuspendLayout(); + this.groupBox12.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numSelectAreaTrans)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.picSelectAreaBackColor)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.picSelectAreaLineColor)).BeginInit(); + this.groupBox2.SuspendLayout(); + this.pageScrap.SuspendLayout(); + this.flowLayoutPanel1.SuspendLayout(); + this.pnlScrapStyle.SuspendLayout(); + this.panel4.SuspendLayout(); + this.groupBox11.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numMouseOverAlpha)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numInactiveAlpha)).BeginInit(); + this.pageStyle.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.pageScrapMenu.SuspendLayout(); + this.groupBox10.SuspendLayout(); + this.groupBox9.SuspendLayout(); + this.groupBox8.SuspendLayout(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // panel2 + // + this.panel2.Controls.Add(this.lblComment); + this.panel2.Controls.Add(this.btnCancel); + this.panel2.Controls.Add(this.btnOK); + this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel2.Location = new System.Drawing.Point(0, 450); + this.panel2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(773, 50); + this.panel2.TabIndex = 1; + // + // lblComment + // + this.lblComment.Location = new System.Drawing.Point(16, 7); + this.lblComment.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblComment.Name = "lblComment"; + this.lblComment.Size = new System.Drawing.Size(477, 28); + this.lblComment.TabIndex = 2; + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(637, 7); + this.btnCancel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(130, 33); + this.btnCancel.TabIndex = 1; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.Location = new System.Drawing.Point(501, 7); + this.btnOK.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(130, 33); + this.btnOK.TabIndex = 0; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.detailPanel); + this.panel3.Controls.Add(this.panel1); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(0, 0); + this.panel3.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(773, 450); + this.panel3.TabIndex = 2; + // + // detailPanel + // + this.detailPanel.BackColor = System.Drawing.Color.White; + this.detailPanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.detailPanel.Controls.Add(this.tabControl1); + this.detailPanel.Location = new System.Drawing.Point(172, 0); + this.detailPanel.Margin = new System.Windows.Forms.Padding(0); + this.detailPanel.Name = "detailPanel"; + this.detailPanel.Size = new System.Drawing.Size(600, 449); + this.detailPanel.TabIndex = 0; + // + // tabControl1 + // + this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.Buttons; + this.tabControl1.Controls.Add(this.pageAll); + this.tabControl1.Controls.Add(this.pageCapture); + this.tabControl1.Controls.Add(this.pageScrap); + this.tabControl1.Controls.Add(this.pageStyle); + this.tabControl1.Controls.Add(this.pageScrapMenu); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Margin = new System.Windows.Forms.Padding(0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(596, 445); + this.tabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; + this.tabControl1.TabIndex = 0; + this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_TabIndexChanged); + // + // pageAll + // + this.pageAll.BackColor = System.Drawing.Color.White; + this.pageAll.Controls.Add(this.button2); + this.pageAll.Controls.Add(this.groupBox13); + this.pageAll.Controls.Add(this.groupBox7); + this.pageAll.Controls.Add(this.groupBox5); + this.pageAll.Controls.Add(this.btnInitialize); + this.pageAll.Controls.Add(this.groupBox6); + this.pageAll.Location = new System.Drawing.Point(4, 28); + this.pageAll.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.pageAll.Name = "pageAll"; + this.pageAll.Padding = new System.Windows.Forms.Padding(7); + this.pageAll.Size = new System.Drawing.Size(588, 413); + this.pageAll.TabIndex = 1; + this.pageAll.Text = "常规"; + this.pageAll.UseVisualStyleBackColor = true; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(11, 372); + this.button2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(243, 33); + this.button2.TabIndex = 12; + this.button2.Text = "打开缓存目录"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // groupBox13 + // + this.groupBox13.Controls.Add(this.linkLabel2); + this.groupBox13.Controls.Add(this.linkLabel1); + this.groupBox13.Location = new System.Drawing.Point(11, 292); + this.groupBox13.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox13.Name = "groupBox13"; + this.groupBox13.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox13.Size = new System.Drawing.Size(564, 63); + this.groupBox13.TabIndex = 11; + this.groupBox13.TabStop = false; + this.groupBox13.Text = "信息"; + // + // linkLabel2 + // + this.linkLabel2.AutoSize = true; + this.linkLabel2.Location = new System.Drawing.Point(18, 44); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(39, 15); + this.linkLabel2.TabIndex = 1; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "test"; + this.toolTip1.SetToolTip(this.linkLabel2, "test"); + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(18, 21); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(39, 15); + this.linkLabel1.TabIndex = 0; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "test"; + this.toolTip1.SetToolTip(this.linkLabel1, "test"); + // + // groupBox7 + // + this.groupBox7.Controls.Add(this.checkBox_autoStartup); + this.groupBox7.Controls.Add(this.checkBox_topMost); + this.groupBox7.Controls.Add(this.chkSplash); + this.groupBox7.Location = new System.Drawing.Point(11, 222); + this.groupBox7.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox7.Name = "groupBox7"; + this.groupBox7.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox7.Size = new System.Drawing.Size(564, 63); + this.groupBox7.TabIndex = 10; + this.groupBox7.TabStop = false; + this.groupBox7.Text = "其他"; + // + // checkBox_autoStartup + // + this.checkBox_autoStartup.AutoSize = true; + this.checkBox_autoStartup.Location = new System.Drawing.Point(421, 27); + this.checkBox_autoStartup.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.checkBox_autoStartup.Name = "checkBox_autoStartup"; + this.checkBox_autoStartup.Size = new System.Drawing.Size(104, 19); + this.checkBox_autoStartup.TabIndex = 9; + this.checkBox_autoStartup.Text = "开机自启动"; + this.checkBox_autoStartup.UseVisualStyleBackColor = true; + // + // checkBox_topMost + // + this.checkBox_topMost.AutoSize = true; + this.checkBox_topMost.Location = new System.Drawing.Point(216, 27); + this.checkBox_topMost.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.checkBox_topMost.Name = "checkBox_topMost"; + this.checkBox_topMost.Size = new System.Drawing.Size(119, 19); + this.checkBox_topMost.TabIndex = 8; + this.checkBox_topMost.Text = "始终置顶截图"; + this.checkBox_topMost.UseVisualStyleBackColor = true; + // + // chkSplash + // + this.chkSplash.AutoSize = true; + this.chkSplash.Location = new System.Drawing.Point(21, 27); + this.chkSplash.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkSplash.Name = "chkSplash"; + this.chkSplash.Size = new System.Drawing.Size(119, 19); + this.chkSplash.TabIndex = 7; + this.chkSplash.Text = "显示启动界面"; + this.toolTip1.SetToolTip(this.chkSplash, "将在启动SETUNA时的几秒钟内显示标志。"); + this.chkSplash.UseVisualStyleBackColor = true; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.chkDustBox); + this.groupBox5.Controls.Add(this.label14); + this.groupBox5.Controls.Add(this.numDustBox); + this.groupBox5.Location = new System.Drawing.Point(11, 127); + this.groupBox5.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox5.Size = new System.Drawing.Size(564, 87); + this.groupBox5.TabIndex = 9; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "回收站的设置"; + // + // chkDustBox + // + this.chkDustBox.AutoSize = true; + this.chkDustBox.Location = new System.Drawing.Point(21, 27); + this.chkDustBox.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkDustBox.Name = "chkDustBox"; + this.chkDustBox.Size = new System.Drawing.Size(104, 19); + this.chkDustBox.TabIndex = 4; + this.chkDustBox.Text = "使用回收站"; + this.toolTip1.SetToolTip(this.chkDustBox, "使用回收站的话,参考图将暂时储存在回收站里。\n可以根据情况需要从回收站中取出。"); + this.chkDustBox.UseVisualStyleBackColor = true; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(96, 53); + this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(67, 15); + this.label14.TabIndex = 6; + this.label14.Text = "张为上限"; + // + // numDustBox + // + this.numDustBox.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.numDustBox.Location = new System.Drawing.Point(50, 50); + this.numDustBox.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.numDustBox.Name = "numDustBox"; + this.numDustBox.Size = new System.Drawing.Size(46, 25); + this.numDustBox.TabIndex = 5; + this.numDustBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.toolTip1.SetToolTip(this.numDustBox, "指定在回收站中放入的最大张数。\n超过限额将丢弃旧的参考图。"); + // + // btnInitialize + // + this.btnInitialize.Location = new System.Drawing.Point(332, 372); + this.btnInitialize.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.btnInitialize.Name = "btnInitialize"; + this.btnInitialize.Size = new System.Drawing.Size(243, 33); + this.btnInitialize.TabIndex = 8; + this.btnInitialize.Text = "设置全部恢复为默认状态"; + this.btnInitialize.UseVisualStyleBackColor = true; + this.btnInitialize.Click += new System.EventHandler(this.btnInitialize_Click); + // + // groupBox6 + // + this.groupBox6.Controls.Add(this.chkShowMainWindow); + this.groupBox6.Controls.Add(this.rdoExeTypeResident); + this.groupBox6.Controls.Add(this.rdoExeTypeApp); + this.groupBox6.Location = new System.Drawing.Point(11, 10); + this.groupBox6.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox6.Size = new System.Drawing.Size(564, 110); + this.groupBox6.TabIndex = 2; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "操作类型"; + // + // chkShowMainWindow + // + this.chkShowMainWindow.AutoSize = true; + this.chkShowMainWindow.Location = new System.Drawing.Point(45, 75); + this.chkShowMainWindow.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkShowMainWindow.Name = "chkShowMainWindow"; + this.chkShowMainWindow.Size = new System.Drawing.Size(104, 19); + this.chkShowMainWindow.TabIndex = 2; + this.chkShowMainWindow.Text = "显示主窗口"; + this.chkShowMainWindow.UseVisualStyleBackColor = true; + // + // rdoExeTypeResident + // + this.rdoExeTypeResident.AutoSize = true; + this.rdoExeTypeResident.Location = new System.Drawing.Point(21, 48); + this.rdoExeTypeResident.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.rdoExeTypeResident.Name = "rdoExeTypeResident"; + this.rdoExeTypeResident.Size = new System.Drawing.Size(103, 19); + this.rdoExeTypeResident.TabIndex = 1; + this.rdoExeTypeResident.Text = "常驻任务栏"; + this.toolTip1.SetToolTip(this.rdoExeTypeResident, "在任务栏上显示图标。"); + this.rdoExeTypeResident.UseVisualStyleBackColor = true; + this.rdoExeTypeResident.CheckedChanged += new System.EventHandler(this.rdoExeTypeResident_CheckedChanged); + // + // rdoExeTypeApp + // + this.rdoExeTypeApp.AutoSize = true; + this.rdoExeTypeApp.Checked = true; + this.rdoExeTypeApp.Location = new System.Drawing.Point(21, 23); + this.rdoExeTypeApp.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.rdoExeTypeApp.Name = "rdoExeTypeApp"; + this.rdoExeTypeApp.Size = new System.Drawing.Size(88, 19); + this.rdoExeTypeApp.TabIndex = 0; + this.rdoExeTypeApp.TabStop = true; + this.rdoExeTypeApp.Text = "应用软件"; + this.toolTip1.SetToolTip(this.rdoExeTypeApp, "显示主窗口、最小化到任务栏上"); + this.rdoExeTypeApp.UseVisualStyleBackColor = true; + // + // pageCapture + // + this.pageCapture.BackColor = System.Drawing.SystemColors.Window; + this.pageCapture.Controls.Add(this.groupBox12); + this.pageCapture.Controls.Add(this.groupBox3); + this.pageCapture.Controls.Add(this.groupBox4); + this.pageCapture.Controls.Add(this.groupBox2); + this.pageCapture.Location = new System.Drawing.Point(4, 28); + this.pageCapture.Margin = new System.Windows.Forms.Padding(0); + this.pageCapture.Name = "pageCapture"; + this.pageCapture.Padding = new System.Windows.Forms.Padding(7); + this.pageCapture.Size = new System.Drawing.Size(588, 413); + this.pageCapture.TabIndex = 4; + this.pageCapture.Text = "截取设置"; + this.pageCapture.UseVisualStyleBackColor = true; + // + // groupBox12 + // + this.groupBox12.Controls.Add(this.label16); + this.groupBox12.Controls.Add(this.chkCC6); + this.groupBox12.Controls.Add(this.chkCC4); + this.groupBox12.Controls.Add(this.chkCC2); + this.groupBox12.Controls.Add(this.chkCC8); + this.groupBox12.Controls.Add(this.chkCC3); + this.groupBox12.Controls.Add(this.chkCC1); + this.groupBox12.Controls.Add(this.chkCC9); + this.groupBox12.Controls.Add(this.chkCC7); + this.groupBox12.Location = new System.Drawing.Point(332, 144); + this.groupBox12.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox12.Name = "groupBox12"; + this.groupBox12.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox12.Size = new System.Drawing.Size(243, 262); + this.groupBox12.TabIndex = 4; + this.groupBox12.TabStop = false; + this.groupBox12.Text = "单击截取"; + // + // label16 + // + this.label16.Location = new System.Drawing.Point(7, 212); + this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(231, 38); + this.label16.TabIndex = 8; + this.label16.Text = "当您点击一下指定的屏幕边缘,即开始截取。"; + // + // chkCC6 + // + this.chkCC6.Appearance = System.Windows.Forms.Appearance.Button; + this.chkCC6.Location = new System.Drawing.Point(173, 62); + this.chkCC6.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkCC6.Name = "chkCC6"; + this.chkCC6.Size = new System.Drawing.Size(35, 97); + this.chkCC6.TabIndex = 7; + this.chkCC6.UseVisualStyleBackColor = false; + this.chkCC6.CheckedChanged += new System.EventHandler(this.chkCC_CheckedChanged); + // + // chkCC4 + // + this.chkCC4.Appearance = System.Windows.Forms.Appearance.Button; + this.chkCC4.Location = new System.Drawing.Point(35, 62); + this.chkCC4.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkCC4.Name = "chkCC4"; + this.chkCC4.Size = new System.Drawing.Size(35, 97); + this.chkCC4.TabIndex = 6; + this.chkCC4.UseVisualStyleBackColor = false; + this.chkCC4.CheckedChanged += new System.EventHandler(this.chkCC_CheckedChanged); + // + // chkCC2 + // + this.chkCC2.Appearance = System.Windows.Forms.Appearance.Button; + this.chkCC2.Location = new System.Drawing.Point(69, 160); + this.chkCC2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkCC2.Name = "chkCC2"; + this.chkCC2.Size = new System.Drawing.Size(104, 32); + this.chkCC2.TabIndex = 5; + this.chkCC2.UseVisualStyleBackColor = false; + this.chkCC2.CheckedChanged += new System.EventHandler(this.chkCC_CheckedChanged); + // + // chkCC8 + // + this.chkCC8.Appearance = System.Windows.Forms.Appearance.Button; + this.chkCC8.Location = new System.Drawing.Point(69, 30); + this.chkCC8.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkCC8.Name = "chkCC8"; + this.chkCC8.Size = new System.Drawing.Size(104, 32); + this.chkCC8.TabIndex = 4; + this.chkCC8.UseVisualStyleBackColor = false; + this.chkCC8.CheckedChanged += new System.EventHandler(this.chkCC_CheckedChanged); + // + // chkCC3 + // + this.chkCC3.Appearance = System.Windows.Forms.Appearance.Button; + this.chkCC3.Location = new System.Drawing.Point(173, 160); + this.chkCC3.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkCC3.Name = "chkCC3"; + this.chkCC3.Size = new System.Drawing.Size(35, 32); + this.chkCC3.TabIndex = 3; + this.chkCC3.UseVisualStyleBackColor = false; + this.chkCC3.CheckedChanged += new System.EventHandler(this.chkCC_CheckedChanged); + // + // chkCC1 + // + this.chkCC1.Appearance = System.Windows.Forms.Appearance.Button; + this.chkCC1.Location = new System.Drawing.Point(35, 160); + this.chkCC1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkCC1.Name = "chkCC1"; + this.chkCC1.Size = new System.Drawing.Size(35, 32); + this.chkCC1.TabIndex = 2; + this.chkCC1.UseVisualStyleBackColor = false; + this.chkCC1.CheckedChanged += new System.EventHandler(this.chkCC_CheckedChanged); + // + // chkCC9 + // + this.chkCC9.Appearance = System.Windows.Forms.Appearance.Button; + this.chkCC9.Location = new System.Drawing.Point(173, 30); + this.chkCC9.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkCC9.Name = "chkCC9"; + this.chkCC9.Size = new System.Drawing.Size(35, 32); + this.chkCC9.TabIndex = 1; + this.chkCC9.UseVisualStyleBackColor = false; + this.chkCC9.CheckedChanged += new System.EventHandler(this.chkCC_CheckedChanged); + // + // chkCC7 + // + this.chkCC7.Appearance = System.Windows.Forms.Appearance.Button; + this.chkCC7.Location = new System.Drawing.Point(35, 30); + this.chkCC7.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkCC7.Name = "chkCC7"; + this.chkCC7.Size = new System.Drawing.Size(35, 32); + this.chkCC7.TabIndex = 0; + this.chkCC7.UseVisualStyleBackColor = false; + this.chkCC7.CheckedChanged += new System.EventHandler(this.chkCC_CheckedChanged); + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.rdoDupCapture); + this.groupBox3.Controls.Add(this.rdoDupNone); + this.groupBox3.Location = new System.Drawing.Point(11, 316); + this.groupBox3.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox3.Size = new System.Drawing.Size(313, 88); + this.groupBox3.TabIndex = 3; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "防止双重启动的操作"; + // + // rdoDupCapture + // + this.rdoDupCapture.AutoSize = true; + this.rdoDupCapture.Location = new System.Drawing.Point(21, 52); + this.rdoDupCapture.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.rdoDupCapture.Name = "rdoDupCapture"; + this.rdoDupCapture.Size = new System.Drawing.Size(103, 19); + this.rdoDupCapture.TabIndex = 1; + this.rdoDupCapture.Text = "截取参考图"; + this.toolTip1.SetToolTip(this.rdoDupCapture, "如果您尝试重复启动SETUNA,则开始截取。"); + this.rdoDupCapture.UseVisualStyleBackColor = true; + // + // rdoDupNone + // + this.rdoDupNone.AutoSize = true; + this.rdoDupNone.Checked = true; + this.rdoDupNone.Location = new System.Drawing.Point(21, 27); + this.rdoDupNone.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.rdoDupNone.Name = "rdoDupNone"; + this.rdoDupNone.Size = new System.Drawing.Size(103, 19); + this.rdoDupNone.TabIndex = 0; + this.rdoDupNone.TabStop = true; + this.rdoDupNone.Text = "什么都不做"; + this.toolTip1.SetToolTip(this.rdoDupNone, "如果您尝试重复启动SETUNA,则什么都不做。"); + this.rdoDupNone.UseVisualStyleBackColor = true; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.rdoSelLineTypeDotted); + this.groupBox4.Controls.Add(this.rdoSelLineTypeSolid); + this.groupBox4.Controls.Add(this.label12); + this.groupBox4.Controls.Add(this.numSelectAreaTrans); + this.groupBox4.Controls.Add(this.picSelectAreaBackColor); + this.groupBox4.Controls.Add(this.picSelectAreaLineColor); + this.groupBox4.Controls.Add(this.label10); + this.groupBox4.Controls.Add(this.label9); + this.groupBox4.Controls.Add(this.label8); + this.groupBox4.Controls.Add(this.label7); + this.groupBox4.Location = new System.Drawing.Point(11, 144); + this.groupBox4.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox4.Size = new System.Drawing.Size(313, 165); + this.groupBox4.TabIndex = 1; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "截取时的框选范围"; + // + // rdoSelLineTypeDotted + // + this.rdoSelLineTypeDotted.AutoSize = true; + this.rdoSelLineTypeDotted.Location = new System.Drawing.Point(222, 57); + this.rdoSelLineTypeDotted.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.rdoSelLineTypeDotted.Name = "rdoSelLineTypeDotted"; + this.rdoSelLineTypeDotted.Size = new System.Drawing.Size(58, 19); + this.rdoSelLineTypeDotted.TabIndex = 3; + this.rdoSelLineTypeDotted.Text = "虚线"; + this.toolTip1.SetToolTip(this.rdoSelLineTypeDotted, "设置框选范围的边框线的类型。"); + this.rdoSelLineTypeDotted.UseVisualStyleBackColor = true; + // + // rdoSelLineTypeSolid + // + this.rdoSelLineTypeSolid.AutoSize = true; + this.rdoSelLineTypeSolid.Checked = true; + this.rdoSelLineTypeSolid.Location = new System.Drawing.Point(157, 58); + this.rdoSelLineTypeSolid.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.rdoSelLineTypeSolid.Name = "rdoSelLineTypeSolid"; + this.rdoSelLineTypeSolid.Size = new System.Drawing.Size(58, 19); + this.rdoSelLineTypeSolid.TabIndex = 2; + this.rdoSelLineTypeSolid.TabStop = true; + this.rdoSelLineTypeSolid.Text = "实线"; + this.toolTip1.SetToolTip(this.rdoSelLineTypeSolid, "设置框选范围的边框线的类型。"); + this.rdoSelLineTypeSolid.UseVisualStyleBackColor = true; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(220, 122); + this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(15, 15); + this.label12.TabIndex = 7; + this.label12.Text = "%"; + // + // numSelectAreaTrans + // + this.numSelectAreaTrans.Location = new System.Drawing.Point(157, 118); + this.numSelectAreaTrans.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.numSelectAreaTrans.Name = "numSelectAreaTrans"; + this.numSelectAreaTrans.Size = new System.Drawing.Size(55, 25); + this.numSelectAreaTrans.TabIndex = 6; + this.toolTip1.SetToolTip(this.numSelectAreaTrans, "设置框选范围填充颜色的透明度。\n选择透明度100%时可提高响应速度。"); + // + // picSelectAreaBackColor + // + this.picSelectAreaBackColor.BackColor = System.Drawing.Color.AliceBlue; + this.picSelectAreaBackColor.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.picSelectAreaBackColor.Cursor = System.Windows.Forms.Cursors.Hand; + this.picSelectAreaBackColor.Location = new System.Drawing.Point(157, 87); + this.picSelectAreaBackColor.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.picSelectAreaBackColor.Name = "picSelectAreaBackColor"; + this.picSelectAreaBackColor.Size = new System.Drawing.Size(41, 21); + this.picSelectAreaBackColor.TabIndex = 10; + this.picSelectAreaBackColor.TabStop = false; + this.toolTip1.SetToolTip(this.picSelectAreaBackColor, "设置全面填充框选范围的颜色。\n不全面涂抹的情况设置透明度为100%。"); + this.picSelectAreaBackColor.Click += new System.EventHandler(this.pictureBox_Click); + // + // picSelectAreaLineColor + // + this.picSelectAreaLineColor.BackColor = System.Drawing.Color.Blue; + this.picSelectAreaLineColor.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.picSelectAreaLineColor.Cursor = System.Windows.Forms.Cursors.Hand; + this.picSelectAreaLineColor.Location = new System.Drawing.Point(157, 27); + this.picSelectAreaLineColor.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.picSelectAreaLineColor.Name = "picSelectAreaLineColor"; + this.picSelectAreaLineColor.Size = new System.Drawing.Size(41, 21); + this.picSelectAreaLineColor.TabIndex = 9; + this.picSelectAreaLineColor.TabStop = false; + this.toolTip1.SetToolTip(this.picSelectAreaLineColor, "指定框选范围的边框线的颜色。"); + this.picSelectAreaLineColor.Click += new System.EventHandler(this.pictureBox_Click); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(21, 122); + this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(142, 15); + this.label10.TabIndex = 5; + this.label10.Text = "框选范围的透明度:"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(21, 92); + this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(127, 15); + this.label9.TabIndex = 4; + this.label9.Text = "框选范围的颜色:"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(21, 30); + this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(112, 15); + this.label8.TabIndex = 0; + this.label8.Text = "框选线的颜色∶"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(21, 60); + this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(112, 15); + this.label7.TabIndex = 1; + this.label7.Text = "框选线的种类∶"; + // + // groupBox2 + // + this.groupBox2.BackColor = System.Drawing.Color.Transparent; + this.groupBox2.Controls.Add(this.hotkeyControl2); + this.groupBox2.Controls.Add(this.label17); + this.groupBox2.Controls.Add(this.hotkeyControl1); + this.groupBox2.Controls.Add(this.checkBox1); + this.groupBox2.Controls.Add(this.label3); + this.groupBox2.Location = new System.Drawing.Point(11, 10); + this.groupBox2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Padding = new System.Windows.Forms.Padding(13, 8, 4, 3); + this.groupBox2.Size = new System.Drawing.Size(564, 128); + this.groupBox2.TabIndex = 0; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "快捷键设置"; + // + // hotkeyControl2 + // + this.hotkeyControl2.Hotkey = System.Windows.Forms.Keys.None; + this.hotkeyControl2.Location = new System.Drawing.Point(194, 72); + this.hotkeyControl2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.hotkeyControl2.Name = "hotkeyControl2"; + this.hotkeyControl2.Size = new System.Drawing.Size(200, 23); + this.hotkeyControl2.TabIndex = 3; + this.toolTip1.SetToolTip(this.hotkeyControl2, "Ctrl键,Shift键和Alt键,各个键的组合来设置隐藏/显示所有截图的快捷键。\n不能使用其他程序设置的快捷键。"); + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(30, 80); + this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(165, 15); + this.label17.TabIndex = 4; + this.label17.Text = "隐藏/显示所有快捷键:"; + // + // hotkeyControl1 + // + this.hotkeyControl1.Hotkey = System.Windows.Forms.Keys.None; + this.hotkeyControl1.Location = new System.Drawing.Point(194, 30); + this.hotkeyControl1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.hotkeyControl1.Name = "hotkeyControl1"; + this.hotkeyControl1.Size = new System.Drawing.Size(200, 23); + this.hotkeyControl1.TabIndex = 0; + this.toolTip1.SetToolTip(this.hotkeyControl1, "Ctrl键,Shift键和Alt键,各个键的组合来设置截取的快捷键。\n不能使用其他程序设置的快捷键。"); + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(460, 11); + this.checkBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(104, 19); + this.checkBox1.TabIndex = 2; + this.checkBox1.Text = "启用快捷键"; + this.toolTip1.SetToolTip(this.checkBox1, "要启用快捷键,请勾选。"); + this.checkBox1.UseVisualStyleBackColor = true; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(30, 38); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(97, 15); + this.label3.TabIndex = 1; + this.label3.Text = "截图快捷键:"; + // + // pageScrap + // + this.pageScrap.BackColor = System.Drawing.Color.White; + this.pageScrap.Controls.Add(this.flowLayoutPanel1); + this.pageScrap.Location = new System.Drawing.Point(4, 28); + this.pageScrap.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.pageScrap.Name = "pageScrap"; + this.pageScrap.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.pageScrap.Size = new System.Drawing.Size(588, 413); + this.pageScrap.TabIndex = 2; + this.pageScrap.Text = "参考图设置"; + this.pageScrap.UseVisualStyleBackColor = true; + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.BackColor = System.Drawing.Color.White; + this.flowLayoutPanel1.Controls.Add(this.pnlScrapStyle); + this.flowLayoutPanel1.Controls.Add(this.panel4); + this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel1.Location = new System.Drawing.Point(4, 3); + this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(565, 377); + this.flowLayoutPanel1.TabIndex = 0; + // + // pnlScrapStyle + // + this.pnlScrapStyle.Controls.Add(this.cmbWClickStyle); + this.pnlScrapStyle.Controls.Add(this.label5); + this.pnlScrapStyle.Controls.Add(this.cmbCreateStyle); + this.pnlScrapStyle.Controls.Add(this.label4); + this.pnlScrapStyle.Location = new System.Drawing.Point(4, 3); + this.pnlScrapStyle.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.pnlScrapStyle.Name = "pnlScrapStyle"; + this.pnlScrapStyle.Size = new System.Drawing.Size(549, 77); + this.pnlScrapStyle.TabIndex = 0; + // + // cmbWClickStyle + // + this.cmbWClickStyle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbWClickStyle.FormattingEnabled = true; + this.cmbWClickStyle.Location = new System.Drawing.Point(217, 47); + this.cmbWClickStyle.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.cmbWClickStyle.Name = "cmbWClickStyle"; + this.cmbWClickStyle.Size = new System.Drawing.Size(247, 23); + this.cmbWClickStyle.TabIndex = 3; + this.toolTip1.SetToolTip(this.cmbWClickStyle, "指定双击参考图时使用的自动操作。"); + this.cmbWClickStyle.SelectionChangeCommitted += new System.EventHandler(this.cmbWClickStyle_SelectionChangeCommitted); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(27, 47); + this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(67, 15); + this.label5.TabIndex = 2; + this.label5.Text = "双击时∶"; + // + // cmbCreateStyle + // + this.cmbCreateStyle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbCreateStyle.FormattingEnabled = true; + this.cmbCreateStyle.Location = new System.Drawing.Point(217, 13); + this.cmbCreateStyle.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.cmbCreateStyle.Name = "cmbCreateStyle"; + this.cmbCreateStyle.Size = new System.Drawing.Size(247, 23); + this.cmbCreateStyle.TabIndex = 1; + this.toolTip1.SetToolTip(this.cmbCreateStyle, "您可以指定要创建参考图时使用的自动操作。"); + this.cmbCreateStyle.SelectionChangeCommitted += new System.EventHandler(this.cmbCreateStyle_SelectionChangeCommitted); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(27, 17); + this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(112, 15); + this.label4.TabIndex = 0; + this.label4.Text = "基本自动操作:"; + // + // panel4 + // + this.panel4.Controls.Add(this.chkScrapImageDrag); + this.panel4.Controls.Add(this.groupBox11); + this.panel4.Location = new System.Drawing.Point(4, 86); + this.panel4.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(549, 267); + this.panel4.TabIndex = 0; + // + // chkScrapImageDrag + // + this.chkScrapImageDrag.AutoSize = true; + this.chkScrapImageDrag.Location = new System.Drawing.Point(29, 3); + this.chkScrapImageDrag.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkScrapImageDrag.Name = "chkScrapImageDrag"; + this.chkScrapImageDrag.Size = new System.Drawing.Size(224, 19); + this.chkScrapImageDrag.TabIndex = 0; + this.chkScrapImageDrag.Text = "拖动图像文件创建一个参考图"; + this.toolTip1.SetToolTip(this.chkScrapImageDrag, "拖动图像文件到参考图可作为参考图查看。"); + this.chkScrapImageDrag.UseVisualStyleBackColor = true; + // + // groupBox11 + // + this.groupBox11.Controls.Add(this.label15); + this.groupBox11.Controls.Add(this.label13); + this.groupBox11.Controls.Add(this.numMouseOverAlpha); + this.groupBox11.Controls.Add(this.chkMouseOverAlphaChange); + this.groupBox11.Controls.Add(this.label11); + this.groupBox11.Controls.Add(this.label6); + this.groupBox11.Controls.Add(this.numInactiveAlpha); + this.groupBox11.Controls.Add(this.chkInactiveAlphaChange); + this.groupBox11.Location = new System.Drawing.Point(4, 38); + this.groupBox11.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox11.Name = "groupBox11"; + this.groupBox11.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox11.Size = new System.Drawing.Size(541, 153); + this.groupBox11.TabIndex = 1; + this.groupBox11.TabStop = false; + this.groupBox11.Text = "非选择时的效果"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(338, 107); + this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(15, 15); + this.label15.TabIndex = 7; + this.label15.Text = "%"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(338, 47); + this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(15, 15); + this.label13.TabIndex = 3; + this.label13.Text = "%"; + // + // numMouseOverAlpha + // + this.numMouseOverAlpha.Location = new System.Drawing.Point(284, 102); + this.numMouseOverAlpha.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.numMouseOverAlpha.Name = "numMouseOverAlpha"; + this.numMouseOverAlpha.Size = new System.Drawing.Size(52, 25); + this.numMouseOverAlpha.TabIndex = 6; + // + // chkMouseOverAlphaChange + // + this.chkMouseOverAlphaChange.AutoSize = true; + this.chkMouseOverAlphaChange.Location = new System.Drawing.Point(66, 107); + this.chkMouseOverAlphaChange.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkMouseOverAlphaChange.Name = "chkMouseOverAlphaChange"; + this.chkMouseOverAlphaChange.Size = new System.Drawing.Size(179, 19); + this.chkMouseOverAlphaChange.TabIndex = 5; + this.chkMouseOverAlphaChange.Text = "改变参考图的不透明度"; + this.toolTip1.SetToolTip(this.chkMouseOverAlphaChange, "设置鼠标光标处于参考图上时参考图的透明度。\n如果响应速度很慢请关闭。"); + this.chkMouseOverAlphaChange.UseVisualStyleBackColor = true; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(28, 87); + this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(82, 15); + this.label11.TabIndex = 4; + this.label11.Text = "鼠标触到时"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(28, 28); + this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(97, 15); + this.label6.TabIndex = 0; + this.label6.Text = "鼠标没触到时"; + // + // numInactiveAlpha + // + this.numInactiveAlpha.Location = new System.Drawing.Point(284, 43); + this.numInactiveAlpha.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.numInactiveAlpha.Name = "numInactiveAlpha"; + this.numInactiveAlpha.Size = new System.Drawing.Size(52, 25); + this.numInactiveAlpha.TabIndex = 2; + // + // chkInactiveAlphaChange + // + this.chkInactiveAlphaChange.AutoSize = true; + this.chkInactiveAlphaChange.Location = new System.Drawing.Point(66, 47); + this.chkInactiveAlphaChange.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.chkInactiveAlphaChange.Name = "chkInactiveAlphaChange"; + this.chkInactiveAlphaChange.Size = new System.Drawing.Size(179, 19); + this.chkInactiveAlphaChange.TabIndex = 1; + this.chkInactiveAlphaChange.Text = "改变参考图的不透明度"; + this.toolTip1.SetToolTip(this.chkInactiveAlphaChange, "设置鼠标光标离开参考图上后参考图的透明度。\n如果响应速度很慢请关闭。"); + this.chkInactiveAlphaChange.UseVisualStyleBackColor = true; + // + // pageStyle + // + this.pageStyle.BackColor = System.Drawing.Color.White; + this.pageStyle.Controls.Add(this.groupBox1); + this.pageStyle.Location = new System.Drawing.Point(4, 28); + this.pageStyle.Margin = new System.Windows.Forms.Padding(0); + this.pageStyle.Name = "pageStyle"; + this.pageStyle.Padding = new System.Windows.Forms.Padding(7); + this.pageStyle.Size = new System.Drawing.Size(588, 413); + this.pageStyle.TabIndex = 0; + this.pageStyle.Text = "编辑自动操作"; + this.pageStyle.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.button1); + this.groupBox1.Controls.Add(this.listStyles); + this.groupBox1.Controls.Add(this.listKeyItems); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.btnEditStyle); + this.groupBox1.Controls.Add(this.listStyleItems); + this.groupBox1.Controls.Add(this.btnDeleteStyle); + this.groupBox1.Controls.Add(this.btnNewStyle); + this.groupBox1.Location = new System.Drawing.Point(11, 10); + this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox1.Size = new System.Drawing.Size(564, 383); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "自动操作列表"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(302, 22); + this.button1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(84, 32); + this.button1.TabIndex = 8; + this.button1.Text = "复制"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.btnCopy_Click_1); + // + // listStyles + // + this.listStyles.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.listStyles.Font = new System.Drawing.Font("宋体", 9F); + this.listStyles.FormattingEnabled = true; + this.listStyles.ItemDragMove = true; + this.listStyles.ItemHeight = 20; + this.listStyles.ItemKeyDelete = true; + this.listStyles.ItemLine = false; + this.listStyles.ItemLineColor = System.Drawing.Color.Gray; + this.listStyles.LeftSpace = 2; + this.listStyles.Location = new System.Drawing.Point(27, 62); + this.listStyles.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.listStyles.Name = "listStyles"; + this.listStyles.Size = new System.Drawing.Size(267, 304); + this.listStyles.TabIndex = 3; + this.listStyles.SelectedIndexChanged += new System.EventHandler(this.listStyles_SelectedIndexChanged); + this.listStyles.DoubleClick += new System.EventHandler(this.listStyles_DoubleClick); + // + // listKeyItems + // + this.listKeyItems.BackColor = System.Drawing.Color.White; + this.listKeyItems.ForeColor = System.Drawing.SystemColors.WindowText; + this.listKeyItems.FormattingEnabled = true; + this.listKeyItems.ItemHeight = 15; + this.listKeyItems.Location = new System.Drawing.Point(316, 255); + this.listKeyItems.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.listKeyItems.Name = "listKeyItems"; + this.listKeyItems.Size = new System.Drawing.Size(239, 109); + this.listKeyItems.TabIndex = 7; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(313, 235); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(97, 15); + this.label2.TabIndex = 6; + this.label2.Text = "快捷键分配:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(313, 73); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(127, 15); + this.label1.TabIndex = 4; + this.label1.Text = "自动操作的构成:"; + // + // btnEditStyle + // + this.btnEditStyle.Location = new System.Drawing.Point(119, 22); + this.btnEditStyle.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.btnEditStyle.Name = "btnEditStyle"; + this.btnEditStyle.Size = new System.Drawing.Size(84, 32); + this.btnEditStyle.TabIndex = 1; + this.btnEditStyle.Tag = " "; + this.btnEditStyle.Text = "编辑"; + this.btnEditStyle.UseVisualStyleBackColor = true; + this.btnEditStyle.Click += new System.EventHandler(this.btnEditStyle_Click); + // + // listStyleItems + // + this.listStyleItems.BackColor = System.Drawing.Color.White; + this.listStyleItems.ForeColor = System.Drawing.SystemColors.WindowText; + this.listStyleItems.FormattingEnabled = true; + this.listStyleItems.ItemHeight = 15; + this.listStyleItems.Location = new System.Drawing.Point(316, 95); + this.listStyleItems.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.listStyleItems.Name = "listStyleItems"; + this.listStyleItems.Size = new System.Drawing.Size(239, 124); + this.listStyleItems.TabIndex = 5; + // + // btnDeleteStyle + // + this.btnDeleteStyle.Location = new System.Drawing.Point(211, 22); + this.btnDeleteStyle.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.btnDeleteStyle.Name = "btnDeleteStyle"; + this.btnDeleteStyle.Size = new System.Drawing.Size(84, 32); + this.btnDeleteStyle.TabIndex = 2; + this.btnDeleteStyle.Text = "删除"; + this.btnDeleteStyle.UseVisualStyleBackColor = true; + this.btnDeleteStyle.Click += new System.EventHandler(this.btnDeleteStyle_Click); + // + // btnNewStyle + // + this.btnNewStyle.Location = new System.Drawing.Point(27, 22); + this.btnNewStyle.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.btnNewStyle.Name = "btnNewStyle"; + this.btnNewStyle.Size = new System.Drawing.Size(84, 32); + this.btnNewStyle.TabIndex = 0; + this.btnNewStyle.Text = "新建"; + this.btnNewStyle.UseVisualStyleBackColor = true; + this.btnNewStyle.Click += new System.EventHandler(this.btnNewStyle_Click); + // + // pageScrapMenu + // + this.pageScrapMenu.BackColor = System.Drawing.Color.White; + this.pageScrapMenu.Controls.Add(this.btnScrapMenuMove); + this.pageScrapMenu.Controls.Add(this.groupBox10); + this.pageScrapMenu.Controls.Add(this.groupBox9); + this.pageScrapMenu.Controls.Add(this.groupBox8); + this.pageScrapMenu.Location = new System.Drawing.Point(4, 28); + this.pageScrapMenu.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.pageScrapMenu.Name = "pageScrapMenu"; + this.pageScrapMenu.Padding = new System.Windows.Forms.Padding(7); + this.pageScrapMenu.Size = new System.Drawing.Size(588, 413); + this.pageScrapMenu.TabIndex = 3; + this.pageScrapMenu.Text = "参考图菜单"; + this.pageScrapMenu.UseVisualStyleBackColor = true; + // + // btnScrapMenuMove + // + this.btnScrapMenuMove.Location = new System.Drawing.Point(261, 32); + this.btnScrapMenuMove.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.btnScrapMenuMove.Name = "btnScrapMenuMove"; + this.btnScrapMenuMove.Size = new System.Drawing.Size(64, 348); + this.btnScrapMenuMove.TabIndex = 2; + this.btnScrapMenuMove.Text = ">>"; + this.btnScrapMenuMove.UseVisualStyleBackColor = true; + this.btnScrapMenuMove.Click += new System.EventHandler(this.btnScrapMenuMove_Click); + // + // groupBox10 + // + this.groupBox10.Controls.Add(this.listScrapMenuList); + this.groupBox10.Location = new System.Drawing.Point(333, 10); + this.groupBox10.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox10.Name = "groupBox10"; + this.groupBox10.Padding = new System.Windows.Forms.Padding(7, 3, 7, 3); + this.groupBox10.Size = new System.Drawing.Size(242, 382); + this.groupBox10.TabIndex = 3; + this.groupBox10.TabStop = false; + this.groupBox10.Text = "参考图菜单"; + // + // listScrapMenuList + // + this.listScrapMenuList.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.listScrapMenuList.Font = new System.Drawing.Font("宋体", 9F); + this.listScrapMenuList.FormattingEnabled = true; + this.listScrapMenuList.IntegralHeight = false; + this.listScrapMenuList.ItemDragMove = true; + this.listScrapMenuList.ItemHeight = 20; + this.listScrapMenuList.ItemKeyDelete = true; + this.listScrapMenuList.ItemLine = false; + this.listScrapMenuList.ItemLineColor = System.Drawing.Color.Gray; + this.listScrapMenuList.LeftSpace = 2; + this.listScrapMenuList.Location = new System.Drawing.Point(11, 22); + this.listScrapMenuList.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.listScrapMenuList.Name = "listScrapMenuList"; + this.listScrapMenuList.Size = new System.Drawing.Size(219, 347); + this.listScrapMenuList.TabIndex = 0; + this.toolTip1.SetToolTip(this.listScrapMenuList, "右键单击参考图时显示的菜单结构。"); + // + // groupBox9 + // + this.groupBox9.Controls.Add(this.listScrapMenuItems); + this.groupBox9.Location = new System.Drawing.Point(11, 253); + this.groupBox9.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox9.Name = "groupBox9"; + this.groupBox9.Padding = new System.Windows.Forms.Padding(7, 3, 7, 3); + this.groupBox9.Size = new System.Drawing.Size(243, 137); + this.groupBox9.TabIndex = 1; + this.groupBox9.TabStop = false; + this.groupBox9.Text = "其他"; + // + // listScrapMenuItems + // + this.listScrapMenuItems.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.listScrapMenuItems.Font = new System.Drawing.Font("宋体", 9F); + this.listScrapMenuItems.FormattingEnabled = true; + this.listScrapMenuItems.ItemDragMove = false; + this.listScrapMenuItems.ItemHeight = 20; + this.listScrapMenuItems.ItemKeyDelete = false; + this.listScrapMenuItems.ItemLine = false; + this.listScrapMenuItems.ItemLineColor = System.Drawing.Color.Gray; + this.listScrapMenuItems.LeftSpace = 2; + this.listScrapMenuItems.Location = new System.Drawing.Point(11, 22); + this.listScrapMenuItems.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.listScrapMenuItems.Name = "listScrapMenuItems"; + this.listScrapMenuItems.Size = new System.Drawing.Size(220, 104); + this.listScrapMenuItems.TabIndex = 0; + this.listScrapMenuItems.Enter += new System.EventHandler(this.listScrapMenuItems_Enter); + this.listScrapMenuItems.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listScrapMenuItems_MouseDoubleClick); + // + // groupBox8 + // + this.groupBox8.Controls.Add(this.listScrapMenuStyles); + this.groupBox8.Location = new System.Drawing.Point(11, 10); + this.groupBox8.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox8.Name = "groupBox8"; + this.groupBox8.Padding = new System.Windows.Forms.Padding(7, 3, 7, 3); + this.groupBox8.Size = new System.Drawing.Size(243, 237); + this.groupBox8.TabIndex = 0; + this.groupBox8.TabStop = false; + this.groupBox8.Text = "自动操作列表"; + // + // listScrapMenuStyles + // + this.listScrapMenuStyles.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.listScrapMenuStyles.Font = new System.Drawing.Font("宋体", 9F); + this.listScrapMenuStyles.FormattingEnabled = true; + this.listScrapMenuStyles.ItemDragMove = false; + this.listScrapMenuStyles.ItemHeight = 20; + this.listScrapMenuStyles.ItemKeyDelete = false; + this.listScrapMenuStyles.ItemLine = false; + this.listScrapMenuStyles.ItemLineColor = System.Drawing.Color.Gray; + this.listScrapMenuStyles.LeftSpace = 2; + this.listScrapMenuStyles.Location = new System.Drawing.Point(11, 22); + this.listScrapMenuStyles.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.listScrapMenuStyles.Name = "listScrapMenuStyles"; + this.listScrapMenuStyles.Size = new System.Drawing.Size(220, 204); + this.listScrapMenuStyles.TabIndex = 0; + this.listScrapMenuStyles.Enter += new System.EventHandler(this.listScrapMenuStyles_Enter); + this.listScrapMenuStyles.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listScrapMenuStyles_MouseDoubleClick); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(163)))), ((int)(((byte)(236))))); + this.panel1.Controls.Add(this.lblMenuStyle); + this.panel1.Controls.Add(this.lblMenuCapture); + this.panel1.Controls.Add(this.lblMenuMenu); + this.panel1.Controls.Add(this.lblMenuScrap); + this.panel1.Controls.Add(this.lblMenuAll); + this.panel1.Controls.Add(this.pictureBox1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Left; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(172, 450); + this.panel1.TabIndex = 1; + // + // lblMenuStyle + // + this.lblMenuStyle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(132)))), ((int)(((byte)(215))))); + this.lblMenuStyle.Cursor = System.Windows.Forms.Cursors.Hand; + this.lblMenuStyle.ForeColor = System.Drawing.Color.White; + this.lblMenuStyle.Location = new System.Drawing.Point(36, 87); + this.lblMenuStyle.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblMenuStyle.Name = "lblMenuStyle"; + this.lblMenuStyle.Size = new System.Drawing.Size(133, 17); + this.lblMenuStyle.TabIndex = 2; + this.lblMenuStyle.Text = "创建自动操作"; + this.lblMenuStyle.Click += new System.EventHandler(this.lblMenuStyle_Click); + this.lblMenuStyle.MouseEnter += new System.EventHandler(this.lblMenuStyle_MouseEnter); + this.lblMenuStyle.MouseLeave += new System.EventHandler(this.lblMenu_Clear); + // + // lblMenuCapture + // + this.lblMenuCapture.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(132)))), ((int)(((byte)(215))))); + this.lblMenuCapture.Cursor = System.Windows.Forms.Cursors.Hand; + this.lblMenuCapture.ForeColor = System.Drawing.Color.White; + this.lblMenuCapture.Location = new System.Drawing.Point(16, 37); + this.lblMenuCapture.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblMenuCapture.Name = "lblMenuCapture"; + this.lblMenuCapture.Size = new System.Drawing.Size(133, 17); + this.lblMenuCapture.TabIndex = 5; + this.lblMenuCapture.Text = "截取设置"; + this.lblMenuCapture.Click += new System.EventHandler(this.lblMenuCapture_Click); + this.lblMenuCapture.MouseEnter += new System.EventHandler(this.lblMenuCapture_MouseEnter); + this.lblMenuCapture.MouseLeave += new System.EventHandler(this.lblMenu_Clear); + // + // lblMenuMenu + // + this.lblMenuMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(132)))), ((int)(((byte)(215))))); + this.lblMenuMenu.Cursor = System.Windows.Forms.Cursors.Hand; + this.lblMenuMenu.ForeColor = System.Drawing.Color.White; + this.lblMenuMenu.Location = new System.Drawing.Point(36, 112); + this.lblMenuMenu.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblMenuMenu.Name = "lblMenuMenu"; + this.lblMenuMenu.Size = new System.Drawing.Size(133, 17); + this.lblMenuMenu.TabIndex = 3; + this.lblMenuMenu.Text = "参考图菜单"; + this.lblMenuMenu.Click += new System.EventHandler(this.lblMenuMenu_Click); + this.lblMenuMenu.MouseEnter += new System.EventHandler(this.lblMenuMenu_MouseEnter); + this.lblMenuMenu.MouseLeave += new System.EventHandler(this.lblMenu_Clear); + // + // lblMenuScrap + // + this.lblMenuScrap.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(132)))), ((int)(((byte)(215))))); + this.lblMenuScrap.Cursor = System.Windows.Forms.Cursors.Hand; + this.lblMenuScrap.ForeColor = System.Drawing.Color.White; + this.lblMenuScrap.Location = new System.Drawing.Point(16, 62); + this.lblMenuScrap.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblMenuScrap.Name = "lblMenuScrap"; + this.lblMenuScrap.Size = new System.Drawing.Size(133, 17); + this.lblMenuScrap.TabIndex = 1; + this.lblMenuScrap.Text = "参考图设置"; + this.lblMenuScrap.Click += new System.EventHandler(this.lblMenuScrap_Click); + this.lblMenuScrap.MouseEnter += new System.EventHandler(this.lblMenuScrap_MouseEnter); + this.lblMenuScrap.MouseLeave += new System.EventHandler(this.lblMenu_Clear); + // + // lblMenuAll + // + this.lblMenuAll.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(132)))), ((int)(((byte)(215))))); + this.lblMenuAll.Cursor = System.Windows.Forms.Cursors.Hand; + this.lblMenuAll.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.lblMenuAll.ForeColor = System.Drawing.Color.White; + this.lblMenuAll.Location = new System.Drawing.Point(16, 12); + this.lblMenuAll.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblMenuAll.Name = "lblMenuAll"; + this.lblMenuAll.Size = new System.Drawing.Size(133, 18); + this.lblMenuAll.TabIndex = 0; + this.lblMenuAll.Text = "常规"; + this.lblMenuAll.Click += new System.EventHandler(this.lblMenuAll_Click); + this.lblMenuAll.MouseEnter += new System.EventHandler(this.lblMenuAll_MouseEnter); + this.lblMenuAll.MouseLeave += new System.EventHandler(this.lblMenu_Clear); + // + // pictureBox1 + // + this.pictureBox1.Image = global::SETUNA.Properties.Resources.OptionBG; + this.pictureBox1.Location = new System.Drawing.Point(2, 2); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(170, 370); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox1.TabIndex = 4; + this.pictureBox1.TabStop = false; + // + // toolTip1 + // + this.toolTip1.IsBalloon = true; + // + // OptionForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(773, 500); + this.Controls.Add(this.panel3); + this.Controls.Add(this.panel2); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "OptionForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "选项"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.OptionForm_FormClosed); + this.Shown += new System.EventHandler(this.OptionForm_Shown); + this.panel2.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.detailPanel.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.pageAll.ResumeLayout(false); + this.groupBox13.ResumeLayout(false); + this.groupBox13.PerformLayout(); + this.groupBox7.ResumeLayout(false); + this.groupBox7.PerformLayout(); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numDustBox)).EndInit(); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.pageCapture.ResumeLayout(false); + this.groupBox12.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numSelectAreaTrans)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.picSelectAreaBackColor)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.picSelectAreaLineColor)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.pageScrap.ResumeLayout(false); + this.flowLayoutPanel1.ResumeLayout(false); + this.pnlScrapStyle.ResumeLayout(false); + this.pnlScrapStyle.PerformLayout(); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.groupBox11.ResumeLayout(false); + this.groupBox11.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numMouseOverAlpha)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numInactiveAlpha)).EndInit(); + this.pageStyle.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.pageScrapMenu.ResumeLayout(false); + this.groupBox10.ResumeLayout(false); + this.groupBox9.ResumeLayout(false); + this.groupBox8.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x04000156 RID: 342 + private global::System.ComponentModel.IContainer components; + + // Token: 0x04000157 RID: 343 + private global::System.Windows.Forms.Panel panel2; + + // Token: 0x04000158 RID: 344 + private global::System.Windows.Forms.Button btnCancel; + + // Token: 0x04000159 RID: 345 + private global::System.Windows.Forms.Button btnOK; + + // Token: 0x0400015A RID: 346 + private global::System.Windows.Forms.Panel panel3; + + // Token: 0x0400015B RID: 347 + private global::System.Windows.Forms.Panel detailPanel; + + // Token: 0x0400015C RID: 348 + private global::com.clearunit.WithoutTabControl tabControl1; + + // Token: 0x0400015D RID: 349 + private global::System.Windows.Forms.TabPage pageStyle; + + // Token: 0x0400015E RID: 350 + private global::System.Windows.Forms.TabPage pageAll; + + // Token: 0x0400015F RID: 351 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x04000160 RID: 352 + private global::System.Windows.Forms.ListBox listStyleItems; + + // Token: 0x04000161 RID: 353 + private global::System.Windows.Forms.Button btnDeleteStyle; + + // Token: 0x04000162 RID: 354 + private global::System.Windows.Forms.Button btnNewStyle; + + // Token: 0x04000163 RID: 355 + private global::System.Windows.Forms.Button btnEditStyle; + + // Token: 0x04000164 RID: 356 + private global::System.Windows.Forms.Label label2; + + // Token: 0x04000165 RID: 357 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000166 RID: 358 + private global::System.Windows.Forms.GroupBox groupBox2; + + // Token: 0x04000167 RID: 359 + private global::System.Windows.Forms.ListBox listKeyItems; + + // Token: 0x04000168 RID: 360 + private global::System.Windows.Forms.CheckBox checkBox1; + + // Token: 0x04000169 RID: 361 + private global::System.Windows.Forms.Label label3; + + // Token: 0x0400016B RID: 363 + private global::System.Windows.Forms.TabPage pageScrap; + + // Token: 0x0400016C RID: 364 + private global::System.Windows.Forms.GroupBox groupBox4; + + // Token: 0x0400016D RID: 365 + private global::System.Windows.Forms.Label label7; + + // Token: 0x0400016E RID: 366 + private global::System.Windows.Forms.PictureBox picSelectAreaLineColor; + + // Token: 0x0400016F RID: 367 + private global::System.Windows.Forms.Label label10; + + // Token: 0x04000170 RID: 368 + private global::System.Windows.Forms.Label label9; + + // Token: 0x04000171 RID: 369 + private global::System.Windows.Forms.Label label8; + + // Token: 0x04000172 RID: 370 + private global::System.Windows.Forms.Label label12; + + // Token: 0x04000173 RID: 371 + private global::System.Windows.Forms.NumericUpDown numSelectAreaTrans; + + // Token: 0x04000174 RID: 372 + private global::System.Windows.Forms.PictureBox picSelectAreaBackColor; + + // Token: 0x04000175 RID: 373 + private global::System.Windows.Forms.RadioButton rdoSelLineTypeSolid; + + // Token: 0x04000176 RID: 374 + private global::System.Windows.Forms.RadioButton rdoSelLineTypeDotted; + + // Token: 0x04000177 RID: 375 + private global::System.Windows.Forms.GroupBox groupBox6; + + // Token: 0x04000178 RID: 376 + private global::System.Windows.Forms.RadioButton rdoExeTypeResident; + + // Token: 0x04000179 RID: 377 + private global::System.Windows.Forms.RadioButton rdoExeTypeApp; + + // Token: 0x0400017A RID: 378 + private global::System.Windows.Forms.TabPage pageScrapMenu; + + // Token: 0x0400017B RID: 379 + private global::System.Windows.Forms.GroupBox groupBox10; + + // Token: 0x0400017C RID: 380 + private global::System.Windows.Forms.GroupBox groupBox9; + + // Token: 0x0400017D RID: 381 + private global::System.Windows.Forms.GroupBox groupBox8; + + // Token: 0x0400017E RID: 382 + private global::System.Windows.Forms.Button btnScrapMenuMove; + + // Token: 0x0400017F RID: 383 + private global::System.Windows.Forms.CheckBox chkSplash; + + // Token: 0x04000180 RID: 384 + private global::System.Windows.Forms.Label label14; + + // Token: 0x04000181 RID: 385 + private global::System.Windows.Forms.NumericUpDown numDustBox; + + // Token: 0x04000182 RID: 386 + private global::System.Windows.Forms.CheckBox chkDustBox; + + // Token: 0x04000183 RID: 387 + private global::SETUNA.Main.SetunaListBox listScrapMenuList; + + // Token: 0x04000184 RID: 388 + private global::SETUNA.Main.SetunaListBox listScrapMenuStyles; + + // Token: 0x04000185 RID: 389 + private global::SETUNA.Main.SetunaListBox listScrapMenuItems; + + // Token: 0x04000186 RID: 390 + private global::SETUNA.Main.SetunaListBox listStyles; + + // Token: 0x04000187 RID: 391 + private global::System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + + // Token: 0x04000188 RID: 392 + private global::System.Windows.Forms.Panel pnlScrapStyle; + + // Token: 0x04000189 RID: 393 + private global::System.Windows.Forms.Panel panel4; + + // Token: 0x0400018A RID: 394 + private global::System.Windows.Forms.Button btnInitialize; + + // Token: 0x0400018B RID: 395 + private global::System.Windows.Forms.ComboBox cmbCreateStyle; + + // Token: 0x0400018C RID: 396 + private global::System.Windows.Forms.Label label4; + + // Token: 0x0400018D RID: 397 + private global::System.Windows.Forms.GroupBox groupBox11; + + // Token: 0x0400018E RID: 398 + private global::System.Windows.Forms.NumericUpDown numInactiveAlpha; + + // Token: 0x0400018F RID: 399 + private global::System.Windows.Forms.CheckBox chkInactiveAlphaChange; + + // Token: 0x04000190 RID: 400 + private global::System.Windows.Forms.NumericUpDown numMouseOverAlpha; + + // Token: 0x04000191 RID: 401 + private global::System.Windows.Forms.CheckBox chkMouseOverAlphaChange; + + // Token: 0x04000192 RID: 402 + private global::System.Windows.Forms.ComboBox cmbWClickStyle; + + // Token: 0x04000193 RID: 403 + private global::System.Windows.Forms.Label label5; + + // Token: 0x04000194 RID: 404 + private global::System.Windows.Forms.Label label11; + + // Token: 0x04000195 RID: 405 + private global::System.Windows.Forms.Label label6; + + // Token: 0x04000196 RID: 406 + private global::System.Windows.Forms.Label label15; + + // Token: 0x04000197 RID: 407 + private global::System.Windows.Forms.Label label13; + + // Token: 0x04000198 RID: 408 + private global::System.Windows.Forms.GroupBox groupBox3; + + // Token: 0x04000199 RID: 409 + private global::System.Windows.Forms.RadioButton rdoDupCapture; + + // Token: 0x0400019A RID: 410 + private global::System.Windows.Forms.RadioButton rdoDupNone; + + // Token: 0x0400019B RID: 411 + private global::System.Windows.Forms.CheckBox chkScrapImageDrag; + + // Token: 0x0400019C RID: 412 + private global::System.Windows.Forms.Button button1; + + // Token: 0x0400019D RID: 413 + private global::System.Windows.Forms.CheckBox chkShowMainWindow; + + // Token: 0x0400019E RID: 414 + private global::System.Windows.Forms.Panel panel1; + + // Token: 0x0400019F RID: 415 + private global::System.Windows.Forms.Label lblMenuScrap; + + // Token: 0x040001A0 RID: 416 + private global::System.Windows.Forms.Label lblMenuAll; + + // Token: 0x040001A1 RID: 417 + private global::System.Windows.Forms.Label lblMenuMenu; + + // Token: 0x040001A2 RID: 418 + private global::System.Windows.Forms.Label lblMenuStyle; + + // Token: 0x040001A3 RID: 419 + private global::System.Windows.Forms.Label lblComment; + + // Token: 0x040001A4 RID: 420 + private global::System.Windows.Forms.PictureBox pictureBox1; + + // Token: 0x040001A5 RID: 421 + private global::System.Windows.Forms.Label lblMenuCapture; + + // Token: 0x040001A6 RID: 422 + private global::System.Windows.Forms.TabPage pageCapture; + + // Token: 0x040001A7 RID: 423 + private global::System.Windows.Forms.GroupBox groupBox7; + + // Token: 0x040001A8 RID: 424 + private global::System.Windows.Forms.GroupBox groupBox5; + + // Token: 0x040001A9 RID: 425 + private global::System.Windows.Forms.GroupBox groupBox12; + + // Token: 0x040001AA RID: 426 + private global::System.Windows.Forms.CheckBox chkCC3; + + // Token: 0x040001AB RID: 427 + private global::System.Windows.Forms.CheckBox chkCC1; + + // Token: 0x040001AC RID: 428 + private global::System.Windows.Forms.CheckBox chkCC9; + + // Token: 0x040001AD RID: 429 + private global::System.Windows.Forms.CheckBox chkCC7; + + // Token: 0x040001AE RID: 430 + private global::System.Windows.Forms.CheckBox chkCC6; + + // Token: 0x040001AF RID: 431 + private global::System.Windows.Forms.CheckBox chkCC4; + + // Token: 0x040001B0 RID: 432 + private global::System.Windows.Forms.CheckBox chkCC2; + + // Token: 0x040001B1 RID: 433 + private global::System.Windows.Forms.CheckBox chkCC8; + + // Token: 0x040001B2 RID: 434 + private global::System.Windows.Forms.Label label16; + + // Token: 0x040001B3 RID: 435 + private global::System.Windows.Forms.ToolTip toolTip1; + private HotkeyControl hotkeyControl1; + private System.Windows.Forms.CheckBox checkBox_autoStartup; + private System.Windows.Forms.CheckBox checkBox_topMost; + private System.Windows.Forms.GroupBox groupBox13; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.Button button2; + private HotkeyControl hotkeyControl2; + private System.Windows.Forms.Label label17; + } +} diff --git a/SETUNA/Main/Option/OptionForm.cs b/SETUNA/Main/Option/OptionForm.cs new file mode 100644 index 0000000..8b21edb --- /dev/null +++ b/SETUNA/Main/Option/OptionForm.cs @@ -0,0 +1,767 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; +using SETUNA.Main.KeyItems; +using SETUNA.Main.Style; + +namespace SETUNA.Main.Option +{ + // Token: 0x02000050 RID: 80 + public partial class OptionForm : BaseForm + { + // Token: 0x060002D3 RID: 723 RVA: 0x000136BA File Offset: 0x000118BA + public OptionForm(SetunaOption opt) + { + InitializeComponent(); + _pageStyle = pageStyle; + _pageScrapMenu = pageScrapMenu; + _so = opt; + LoadSetunaOption(); + + linkLabel1.Text = "官方版本(地址已挂)"; + linkLabel1.Links.Add(0, linkLabel1.Text.Length, URLUtils.OriginURL); + linkLabel1.LinkClicked += LinkLabel1_LinkClicked; + toolTip1.SetToolTip(linkLabel1, URLUtils.OriginURL); + + linkLabel2.Text = $"优化版本 by tylearymf. Version: {System.Reflection.Assembly.GetExecutingAssembly().GetName().Version}"; + linkLabel2.Links.Add(0, linkLabel2.Text.Length, URLUtils.NewURL); + linkLabel2.LinkClicked += LinkLabel2_LinkClicked; + toolTip1.SetToolTip(linkLabel2, URLUtils.NewURL); + } + + private void LinkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Diagnostics.Process.Start(linkLabel2.Links[0].LinkData.ToString()); + } + + private void LinkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Diagnostics.Process.Start(linkLabel1.Links[0].LinkData.ToString()); + } + + // Token: 0x060002D4 RID: 724 RVA: 0x000136F0 File Offset: 0x000118F0 + private void LoadSetunaOption() + { + Prepare_SetunaAll(); + chkCC7.Checked = _so.Setuna.ClickCapture7; + chkCC8.Checked = _so.Setuna.ClickCapture8; + chkCC9.Checked = _so.Setuna.ClickCapture9; + chkCC4.Checked = _so.Setuna.ClickCapture4; + chkCC6.Checked = _so.Setuna.ClickCapture6; + chkCC1.Checked = _so.Setuna.ClickCapture1; + chkCC2.Checked = _so.Setuna.ClickCapture2; + chkCC3.Checked = _so.Setuna.ClickCapture3; + listStyles.BeginUpdate(); + listStyles.Items.Clear(); + for (var i = 0; i < _so.Styles.Count; i++) + { + listStyles.Items.Add(_so.Styles[i]); + } + listStyles.EndUpdate(); + _createStyleId = _so.Scrap.CreateStyleID; + _wclickStyleId = _so.Scrap.WClickStyleID; + chkScrapImageDrag.Checked = _so.Scrap.ImageDrag; + chkInactiveAlphaChange.Checked = _so.Scrap.InactiveAlphaChange; + numInactiveAlpha.Value = _so.Scrap.InactiveAlphaValue; + chkMouseOverAlphaChange.Checked = _so.Scrap.MouseOverAlphaChange; + numMouseOverAlpha.Value = _so.Scrap.MouseOverAlphaValue; + Prepare_ScrapMenu(); + RefreshStyleList_Scrap(); + + checkBox_topMost.Checked = _so.Setuna.TopMostEnabled; + checkBox_autoStartup.Checked = Startup.AutoStartup.IsSetup(); + } + + // Token: 0x060002D5 RID: 725 RVA: 0x00013908 File Offset: 0x00011B08 + private void WriteSetunaOption() + { + _so.ScrapHotKeys[0] = hotkeyControl1.Hotkey; + _so.ScrapHotKeys[1] = hotkeyControl2.Hotkey; + _so.ScrapHotKeyEnable = checkBox1.Checked; + if (rdoExeTypeApp.Checked) + { + _so.Setuna.AppType = SetunaOption.SetunaOptionData.ApplicationType.ApplicationMode; + } + else + { + _so.Setuna.AppType = SetunaOption.SetunaOptionData.ApplicationType.ResidentMode; + } + _so.Setuna.ShowMainWindow = chkShowMainWindow.Checked; + if (rdoDupNone.Checked) + { + _so.Setuna.DupType = SetunaOption.SetunaOptionData.OpeningType.Normal; + } + else + { + _so.Setuna.DupType = SetunaOption.SetunaOptionData.OpeningType.Capture; + } + _so.Setuna.ShowSplashWindow = chkSplash.Checked; + _so.Setuna.SelectLineSolid = rdoSelLineTypeSolid.Checked; + _so.Setuna.SelectLineColorR = picSelectAreaLineColor.BackColor.R; + _so.Setuna.SelectLineColorG = picSelectAreaLineColor.BackColor.G; + _so.Setuna.SelectLineColorB = picSelectAreaLineColor.BackColor.B; + _so.Setuna.SelectBackColorR = picSelectAreaBackColor.BackColor.R; + _so.Setuna.SelectBackColorG = picSelectAreaBackColor.BackColor.G; + _so.Setuna.SelectBackColorB = picSelectAreaBackColor.BackColor.B; + _so.Setuna.SelectAreaTransparent = (int)numSelectAreaTrans.Value; + _so.Setuna.DustBoxEnable = chkDustBox.Checked; + _so.Setuna.DustBoxCapacity = (ushort)numDustBox.Value; + _so.Scrap.CreateStyleID = _createStyleId; + _so.Scrap.WClickStyleID = _wclickStyleId; + _so.Scrap.ImageDrag = chkScrapImageDrag.Checked; + _so.Scrap.InactiveAlphaChange = chkInactiveAlphaChange.Checked; + _so.Scrap.InactiveAlphaValue = (sbyte)numInactiveAlpha.Value; + _so.Scrap.MouseOverAlphaChange = chkMouseOverAlphaChange.Checked; + _so.Scrap.MouseOverAlphaValue = (sbyte)numMouseOverAlpha.Value; + _so.Setuna.ClickCapture7 = chkCC7.Checked; + _so.Setuna.ClickCapture8 = chkCC8.Checked; + _so.Setuna.ClickCapture9 = chkCC9.Checked; + _so.Setuna.ClickCapture4 = chkCC4.Checked; + _so.Setuna.ClickCapture6 = chkCC6.Checked; + _so.Setuna.ClickCapture1 = chkCC1.Checked; + _so.Setuna.ClickCapture2 = chkCC2.Checked; + _so.Setuna.ClickCapture3 = chkCC3.Checked; + _so.Styles.Clear(); + for (var i = 0; i < listStyles.Items.Count; i++) + { + _so.Styles.Add((CStyle)listStyles.Items[i]); + } + var list = new List(); + foreach (var obj in listScrapMenuList.Items) + { + var cstyle = (CStyle)obj; + list.Add(cstyle.StyleID); + } + _so.Scrap.SubMenuStyles = list; + + _so.Setuna.TopMostEnabled = checkBox_topMost.Checked; + } + + // Token: 0x060002D6 RID: 726 RVA: 0x00013D84 File Offset: 0x00011F84 + private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) + { + try + { + base.SuspendLayout(); + var selectedTab = (TabPage)e.Node.Tag; + tabControl1.SelectedTab = selectedTab; + tabControl1.Update(); + base.ResumeLayout(); + } + catch + { + } + } + + // Token: 0x060002D7 RID: 727 RVA: 0x00013DDC File Offset: 0x00011FDC + private void Prepare_SetunaAll() + { + hotkeyControl1.Hotkey = _so.ScrapHotKeys[0]; + hotkeyControl2.Hotkey = _so.ScrapHotKeys[1]; + checkBox1.Checked = _so.ScrapHotKeyEnable; + rdoSelLineTypeSolid.Checked = _so.Setuna.SelectLineSolid; + rdoSelLineTypeDotted.Checked = !_so.Setuna.SelectLineSolid; + picSelectAreaLineColor.BackColor = _so.Setuna.SelectLineColor; + picSelectAreaBackColor.BackColor = _so.Setuna.SelectBackColor; + numSelectAreaTrans.Value = _so.Setuna.SelectAreaTransparent; + chkDustBox.Checked = _so.Setuna.DustBoxEnable; + numDustBox.Value = _so.Setuna.DustBoxCapacity; + if (_so.Setuna.AppType == SetunaOption.SetunaOptionData.ApplicationType.ApplicationMode) + { + rdoExeTypeApp.Checked = true; + } + else + { + rdoExeTypeResident.Checked = true; + } + chkShowMainWindow.Checked = _so.Setuna.ShowMainWindow; + if (_so.Setuna.DupType == SetunaOption.SetunaOptionData.OpeningType.Normal) + { + rdoDupNone.Checked = true; + } + else + { + rdoDupCapture.Checked = true; + } + chkSplash.Checked = _so.Setuna.ShowSplashWindow; + } + + // Token: 0x060002D8 RID: 728 RVA: 0x00013F70 File Offset: 0x00012170 + private void tabControl1_TabIndexChanged(object sender, EventArgs e) + { + lblMenuAll.Font = new Font(lblMenuAll.Font, FontStyle.Regular); + lblMenuCapture.Font = new Font(lblMenuMenu.Font, FontStyle.Regular); + lblMenuScrap.Font = new Font(lblMenuScrap.Font, FontStyle.Regular); + lblMenuStyle.Font = new Font(lblMenuStyle.Font, FontStyle.Regular); + lblMenuMenu.Font = new Font(lblMenuMenu.Font, FontStyle.Regular); + if (tabControl1.SelectedTab == pageAll) + { + lblMenuAll.Font = new Font(lblMenuAll.Font, FontStyle.Bold); + } + if (tabControl1.SelectedTab == pageCapture) + { + lblMenuCapture.Font = new Font(lblMenuAll.Font, FontStyle.Bold); + } + if (tabControl1.SelectedTab == pageScrap) + { + lblMenuScrap.Font = new Font(lblMenuScrap.Font, FontStyle.Bold); + } + if (tabControl1.SelectedTab == pageStyle) + { + lblMenuStyle.Font = new Font(lblMenuStyle.Font, FontStyle.Bold); + } + if (tabControl1.SelectedTab == pageScrapMenu) + { + lblMenuMenu.Font = new Font(lblMenuMenu.Font, FontStyle.Bold); + RefreshScrapMenuStyleList_Menu(); + RefreshScrapMenuList_Menu(GetStyleIDList_Menu()); + } + } + + // Token: 0x060002D9 RID: 729 RVA: 0x00014108 File Offset: 0x00012308 + private void SetStyleList_Scrap(ComboBox combo, int defaultid) + { + var cstyle = new CStyle + { + StyleID = 0, + StyleName = "" + }; + combo.BeginUpdate(); + combo.Items.Clear(); + combo.Items.Add(cstyle); + for (var i = 0; i < listStyles.Items.Count; i++) + { + var cstyle2 = (CStyle)listStyles.Items[i]; + combo.Items.Add(cstyle2); + if (cstyle2.StyleID == defaultid) + { + combo.SelectedIndex = i; + } + } + combo.EndUpdate(); + } + + // Token: 0x060002DA RID: 730 RVA: 0x000141A0 File Offset: 0x000123A0 + private int FindStyle_Scrap(ComboBox combo, int styleId) + { + var result = 0; + if (styleId != 0) + { + for (var i = 0; i < combo.Items.Count; i++) + { + var cstyle = (CStyle)combo.Items[i]; + if (cstyle.StyleID == styleId) + { + result = i; + break; + } + } + } + return result; + } + + // Token: 0x060002DB RID: 731 RVA: 0x000141E8 File Offset: 0x000123E8 + private void RefreshStyleList_Scrap() + { + SetStyleList_Scrap(cmbCreateStyle, 0); + SetStyleList_Scrap(cmbWClickStyle, 0); + cmbCreateStyle.SelectedIndex = FindStyle_Scrap(cmbCreateStyle, _createStyleId); + cmbWClickStyle.SelectedIndex = FindStyle_Scrap(cmbWClickStyle, _wclickStyleId); + } + + // Token: 0x060002DC RID: 732 RVA: 0x0001424C File Offset: 0x0001244C + private void cmbCreateStyle_SelectionChangeCommitted(object sender, EventArgs e) + { + var cstyle = (CStyle)cmbCreateStyle.SelectedItem; + if (cstyle.StyleName != "") + { + _createStyleId = cstyle.StyleID; + return; + } + _createStyleId = 0; + } + + // Token: 0x060002DD RID: 733 RVA: 0x00014290 File Offset: 0x00012490 + private void cmbWClickStyle_SelectionChangeCommitted(object sender, EventArgs e) + { + var cstyle = (CStyle)cmbWClickStyle.SelectedItem; + if (cstyle.StyleName != "") + { + _wclickStyleId = cstyle.StyleID; + return; + } + _wclickStyleId = 0; + } + + // Token: 0x060002DE RID: 734 RVA: 0x000142D4 File Offset: 0x000124D4 + private void PrepareStyle() + { + Refresh_Style_StyleList(); + } + + // Token: 0x060002DF RID: 735 RVA: 0x000142DC File Offset: 0x000124DC + private void Refresh_Style_StyleList() + { + listStyles.BeginUpdate(); + listStyles.Items.Clear(); + for (var i = 0; i < _so.Styles.Count; i++) + { + listStyles.Items.Add(_so.Styles[i]); + } + listStyles.EndUpdate(); + } + + // Token: 0x060002E0 RID: 736 RVA: 0x0001434C File Offset: 0x0001254C + private void EditStyle_ScrapStyle() + { + if (listStyles.SelectedItem != null) + { + GetKeyItemBook_ScrapStyle(out var keybook); + var selectedIndex = listStyles.SelectedIndex; + var styleEditForm = new StyleEditForm((CStyle)listStyles.SelectedItem, keybook) + { + Text = ((CStyle)listStyles.SelectedItem).StyleName + "的相关编辑" + }; + var dialogResult = styleEditForm.ShowDialog(); + if (dialogResult == DialogResult.OK) + { + listStyles.Items[selectedIndex] = styleEditForm.Style; + RefreshStyleList_Scrap(); + } + } + } + + // Token: 0x060002E1 RID: 737 RVA: 0x000143E0 File Offset: 0x000125E0 + private void SelectStyle_ScrapStyle() + { + listStyleItems.Items.Clear(); + listKeyItems.Items.Clear(); + if (listStyles.SelectedItem != null) + { + var cstyle = (CStyle)listStyles.SelectedItem; + for (var i = 0; i < cstyle.Items.Length; i++) + { + listStyleItems.Items.Add(cstyle.Items[i]); + } + for (var j = 0; j < cstyle.KeyItems.Length; j++) + { + listKeyItems.Items.Add(cstyle.KeyItems[j]); + } + } + } + + // Token: 0x060002E2 RID: 738 RVA: 0x00014484 File Offset: 0x00012684 + private void GetKeyItemBook_ScrapStyle(out KeyItemBook keybook) + { + keybook = new KeyItemBook(); + for (var i = 0; i < listStyles.Items.Count; i++) + { + var cstyle = (CStyle)listStyles.Items[i]; + keybook.AddKeyItem(cstyle.KeyItems); + } + } + + // Token: 0x060002E3 RID: 739 RVA: 0x000144D8 File Offset: 0x000126D8 + private void btnNewStyle_Click(object sender, EventArgs e) + { + GetKeyItemBook_ScrapStyle(out var keybook); + var cstyle = new CStyle(); + StyleEditForm styleEditForm2; + var styleEditForm = styleEditForm2 = new StyleEditForm(cstyle, keybook); + try + { + styleEditForm.Text = "新建自动操作"; + var dialogResult = styleEditForm.ShowDialog(); + if (dialogResult == DialogResult.OK) + { + cstyle.MakeStyleID(); + listStyles.Items.Add(cstyle); + RefreshStyleList_Scrap(); + } + } + finally + { + if (styleEditForm2 != null) + { + ((IDisposable)styleEditForm2).Dispose(); + } + } + } + + // Token: 0x060002E4 RID: 740 RVA: 0x00014550 File Offset: 0x00012750 + private void btnCopy_Click_1(object sender, EventArgs e) + { + if (listStyles.SelectedItem != null) + { + GetKeyItemBook_ScrapStyle(out var keybook); + var cstyle = ((CStyle)listStyles.SelectedItem).DeepCopy(); + cstyle.StyleName = ""; + cstyle.ClearKey(); + var dialogResult = new StyleEditForm(cstyle, keybook) + { + Text = "新建自动操作" + }.ShowDialog(); + if (dialogResult == DialogResult.OK) + { + cstyle.MakeStyleID(); + listStyles.Items.Add(cstyle); + } + } + } + + // Token: 0x060002E5 RID: 741 RVA: 0x000145CF File Offset: 0x000127CF + private void btnEditStyle_Click(object sender, EventArgs e) + { + EditStyle_ScrapStyle(); + } + + // Token: 0x060002E6 RID: 742 RVA: 0x000145D8 File Offset: 0x000127D8 + private void btnDeleteStyle_Click(object sender, EventArgs e) + { + if (listStyles.SelectedItem != null) + { + var styleID = ((CStyle)listStyles.SelectedItem).StyleID; + listStyles.Items.Remove(listStyles.SelectedItem); + if (_createStyleId == styleID) + { + _createStyleId = 0; + } + if (_activeStyleId == styleID) + { + _activeStyleId = 0; + } + if (_inactiveStyleId == styleID) + { + _inactiveStyleId = 0; + } + RefreshStyleList_Scrap(); + } + } + + // Token: 0x060002E7 RID: 743 RVA: 0x0001465C File Offset: 0x0001285C + private void listStyles_DoubleClick(object sender, EventArgs e) + { + var listBox = (ListBox)sender; + if (listBox.SelectedItem != null) + { + EditStyle_ScrapStyle(); + } + } + + // Token: 0x060002E8 RID: 744 RVA: 0x0001467E File Offset: 0x0001287E + private void listStyles_SelectedIndexChanged(object sender, EventArgs e) + { + SelectStyle_ScrapStyle(); + } + + // Token: 0x060002E9 RID: 745 RVA: 0x00014686 File Offset: 0x00012886 + private void btnOK_Click(object sender, EventArgs e) + { + WriteSetunaOption(); + base.DialogResult = DialogResult.OK; + base.Close(); + } + + // Token: 0x060002EA RID: 746 RVA: 0x0001469B File Offset: 0x0001289B + private void btnCancel_Click(object sender, EventArgs e) + { + base.DialogResult = DialogResult.Cancel; + base.Close(); + } + + // Token: 0x060002EB RID: 747 RVA: 0x000146AC File Offset: 0x000128AC + private void pictureBox_Click(object sender, EventArgs e) + { + var colorDialog = new ColorDialog(); + var dialogResult = colorDialog.ShowDialog(); + if (dialogResult == DialogResult.OK) + { + var pictureBox = (PictureBox)sender; + pictureBox.BackColor = colorDialog.Color; + } + } + + // Token: 0x060002EC RID: 748 RVA: 0x000146E0 File Offset: 0x000128E0 + private void Prepare_ScrapMenu() + { + listScrapMenuItems.Items.Clear(); + foreach (var item in CPreStyles.GetPreStyleList()) + { + listScrapMenuItems.Items.Add(item); + } + RefreshScrapMenuList_Menu(_so.Scrap.SubMenuStyles); + } + + // Token: 0x060002ED RID: 749 RVA: 0x00014764 File Offset: 0x00012964 + private void RefreshScrapMenuStyleList_Menu() + { + base.SuspendLayout(); + SetStyleList_Menu(listScrapMenuStyles); + base.ResumeLayout(); + } + + // Token: 0x060002EE RID: 750 RVA: 0x00014780 File Offset: 0x00012980 + private void RefreshScrapMenuList_Menu(List style_ids) + { + listScrapMenuList.BeginUpdate(); + listScrapMenuList.Items.Clear(); + foreach (var num in style_ids) + { + if (num >= 0) + { + var enumerator2 = listStyles.Items.GetEnumerator(); + { + while (enumerator2.MoveNext()) + { + var obj = enumerator2.Current; + var cstyle = (CStyle)obj; + if (cstyle.StyleID == num) + { + listScrapMenuList.Items.Add(cstyle); + break; + } + } + continue; + } + } + foreach (var obj2 in listScrapMenuItems.Items) + { + var cstyle2 = (CStyle)obj2; + if (cstyle2.StyleID == num) + { + listScrapMenuList.Items.Add(cstyle2); + break; + } + } + } + listScrapMenuList.EndUpdate(); + } + + // Token: 0x060002EF RID: 751 RVA: 0x000148CC File Offset: 0x00012ACC + private List GetStyleIDList_Menu() + { + var list = new List(); + foreach (var obj in listScrapMenuList.Items) + { + var cstyle = (CStyle)obj; + list.Add(cstyle.StyleID); + } + return list; + } + + // Token: 0x060002F0 RID: 752 RVA: 0x00014938 File Offset: 0x00012B38 + private void SetStyleList_Menu(ListBox list) + { + var cstyle = new CStyle + { + StyleID = 0, + StyleName = "" + }; + list.BeginUpdate(); + list.Items.Clear(); + for (var i = 0; i < listStyles.Items.Count; i++) + { + var item = (CStyle)listStyles.Items[i]; + list.Items.Add(item); + } + list.EndUpdate(); + } + + // Token: 0x060002F1 RID: 753 RVA: 0x000149B3 File Offset: 0x00012BB3 + private void listScrapMenuStyles_Enter(object sender, EventArgs e) + { + listScrapMenuItems.ClearSelected(); + } + + // Token: 0x060002F2 RID: 754 RVA: 0x000149C0 File Offset: 0x00012BC0 + private void listScrapMenuItems_Enter(object sender, EventArgs e) + { + listScrapMenuStyles.ClearSelected(); + } + + // Token: 0x060002F3 RID: 755 RVA: 0x000149CD File Offset: 0x00012BCD + private void btnScrapMenuMove_Click(object sender, EventArgs e) + { + if (listScrapMenuStyles.SelectedIndex >= 0) + { + listScrapMenuStyles_MouseDoubleClick(null, null); + return; + } + if (listScrapMenuItems.SelectedIndex >= 0) + { + listScrapMenuItems_MouseDoubleClick(null, null); + } + } + + // Token: 0x060002F4 RID: 756 RVA: 0x000149FC File Offset: 0x00012BFC + private void listScrapMenuStyles_MouseDoubleClick(object sender, MouseEventArgs e) + { + var selectedIndex = listScrapMenuList.Items.Add(listScrapMenuStyles.SelectedItem); + listScrapMenuList.SelectedIndex = selectedIndex; + } + + // Token: 0x060002F5 RID: 757 RVA: 0x00014A34 File Offset: 0x00012C34 + private void listScrapMenuItems_MouseDoubleClick(object sender, MouseEventArgs e) + { + var selectedIndex = listScrapMenuList.Items.Add(listScrapMenuItems.SelectedItem); + listScrapMenuList.SelectedIndex = selectedIndex; + } + + // Token: 0x060002F6 RID: 758 RVA: 0x00014A69 File Offset: 0x00012C69 + private void button1_Click(object sender, EventArgs e) + { + } + + // Token: 0x060002F7 RID: 759 RVA: 0x00014A6C File Offset: 0x00012C6C + private void btnInitialize_Click(object sender, EventArgs e) + { + var dialogResult = MessageBox.Show("进行设置内容的初始化。", Application.ProductName, MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2); + if (dialogResult == DialogResult.OK) + { + _so = SetunaOption.GetDefaultOption(); + LoadSetunaOption(); + } + } + + // Token: 0x17000074 RID: 116 + // (get) Token: 0x060002F8 RID: 760 RVA: 0x00014AA6 File Offset: 0x00012CA6 + public SetunaOption Option => _so; + + // Token: 0x060002F9 RID: 761 RVA: 0x00014AAE File Offset: 0x00012CAE + private void rdoExeTypeResident_CheckedChanged(object sender, EventArgs e) + { + chkShowMainWindow.Enabled = rdoExeTypeResident.Checked; + } + + // Token: 0x060002FA RID: 762 RVA: 0x00014AC6 File Offset: 0x00012CC6 + private void lblMenuAll_Click(object sender, EventArgs e) + { + tabControl1.SelectedTab = pageAll; + } + + // Token: 0x060002FB RID: 763 RVA: 0x00014AD9 File Offset: 0x00012CD9 + private void lblMenuCapture_Click(object sender, EventArgs e) + { + tabControl1.SelectedTab = pageCapture; + } + + // Token: 0x060002FC RID: 764 RVA: 0x00014AEC File Offset: 0x00012CEC + private void lblMenuScrap_Click(object sender, EventArgs e) + { + tabControl1.SelectedTab = pageScrap; + } + + // Token: 0x060002FD RID: 765 RVA: 0x00014AFF File Offset: 0x00012CFF + private void lblMenuStyle_Click(object sender, EventArgs e) + { + tabControl1.SelectedTab = pageStyle; + } + + // Token: 0x060002FE RID: 766 RVA: 0x00014B12 File Offset: 0x00012D12 + private void lblMenuMenu_Click(object sender, EventArgs e) + { + tabControl1.SelectedTab = pageScrapMenu; + } + + // Token: 0x060002FF RID: 767 RVA: 0x00014B25 File Offset: 0x00012D25 + private void lblMenu_Clear(object sender, EventArgs e) + { + lblComment.Text = ""; + } + + // Token: 0x06000300 RID: 768 RVA: 0x00014B37 File Offset: 0x00012D37 + private void lblMenuAll_MouseEnter(object sender, EventArgs e) + { + lblComment.Text = "SETUNA常规设置。"; + } + + // Token: 0x06000301 RID: 769 RVA: 0x00014B49 File Offset: 0x00012D49 + private void lblMenuCapture_MouseEnter(object sender, EventArgs e) + { + lblComment.Text = "进行有关截取的设置。"; + } + + // Token: 0x06000302 RID: 770 RVA: 0x00014B5B File Offset: 0x00012D5B + private void lblMenuScrap_MouseEnter(object sender, EventArgs e) + { + lblComment.Text = "进行参考图的常规设置。"; + } + + // Token: 0x06000303 RID: 771 RVA: 0x00014B6D File Offset: 0x00012D6D + private void lblMenuStyle_MouseEnter(object sender, EventArgs e) + { + lblComment.Text = "创建一个由自动操作组合而成的自动操作。"; + } + + // Token: 0x06000304 RID: 772 RVA: 0x00014B7F File Offset: 0x00012D7F + private void lblMenuMenu_MouseEnter(object sender, EventArgs e) + { + lblComment.Text = "设置右键单击参考图时的菜单。"; + } + + // Token: 0x06000305 RID: 773 RVA: 0x00014B91 File Offset: 0x00012D91 + private void OptionForm_HelpButtonClicked(object sender, CancelEventArgs e) + { + } + + // Token: 0x06000306 RID: 774 RVA: 0x00014B94 File Offset: 0x00012D94 + private void chkCC_CheckedChanged(object sender, EventArgs e) + { + try + { + var checkBox = (CheckBox)sender; + if (checkBox.Checked) + { + checkBox.BackColor = Color.FromArgb(223, 241, 255); + } + else + { + checkBox.BackColor = SystemColors.Window; + } + } + catch + { + } + } + + // Token: 0x040001B4 RID: 436 + private SetunaOption _so; + + // Token: 0x040001B5 RID: 437 + private int _createStyleId; + + // Token: 0x040001B6 RID: 438 + private int _wclickStyleId; + + // Token: 0x040001B7 RID: 439 + private int _activeStyleId; + + // Token: 0x040001B8 RID: 440 + private int _inactiveStyleId; + + // Token: 0x040001B9 RID: 441 + private TabPage _pageStyle; + + // Token: 0x040001BA RID: 442 + private TabPage _pageScrapMenu; + + private void OptionForm_Shown(object sender, EventArgs e) + { + TopMost = true; + + Layer.LayerManager.Instance.SuspendRefresh(); + } + + private void OptionForm_FormClosed(object sender, FormClosedEventArgs e) + { + Layer.LayerManager.Instance.ResumeRefresh(); + } + + private void button2_Click(object sender, EventArgs e) + { + System.Diagnostics.Process.Start(Cache.CacheManager.Path); + } + } +} diff --git a/SETUNA/Main/Option/OptionForm.resx b/SETUNA/Main/Option/OptionForm.resx new file mode 100644 index 0000000..df8339b --- /dev/null +++ b/SETUNA/Main/Option/OptionForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/Option/SetunaOption.cs b/SETUNA/Main/Option/SetunaOption.cs new file mode 100644 index 0000000..64f9042 --- /dev/null +++ b/SETUNA/Main/Option/SetunaOption.cs @@ -0,0 +1,1120 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Runtime.InteropServices; +using System.Windows.Forms; +using SETUNA.Main.KeyItems; +using SETUNA.Main.Style; +using SETUNA.Main.StyleItems; + +namespace SETUNA.Main.Option +{ + // Token: 0x0200003C RID: 60 + public class SetunaOption : ICloneable + { + // Token: 0x06000241 RID: 577 RVA: 0x0000BC18 File Offset: 0x00009E18 + public static SetunaOption GetDefaultOption() + { + var setunaOption = new SetunaOption(); + var num = 1; + setunaOption.Setuna.AppType = SetunaOption.SetunaOptionData.ApplicationType.ApplicationMode; + setunaOption.Setuna.ShowMainWindow = true; + setunaOption.Setuna.DupType = SetunaOption.SetunaOptionData.OpeningType.Normal; + setunaOption.Setuna.DustBoxCapacity = 5; + setunaOption.Setuna.DustBoxEnable = true; + setunaOption.Setuna.SelectAreaTransparent = 80; + setunaOption.Setuna.SelectBackColorR = 0; + setunaOption.Setuna.SelectBackColorG = 0; + setunaOption.Setuna.SelectBackColorB = 139; + setunaOption.Setuna.SelectLineColorR = 0; + setunaOption.Setuna.SelectLineColorG = 0; + setunaOption.Setuna.SelectLineColorB = 0; + setunaOption.Setuna.ShowSplashWindow = true; + setunaOption.Setuna.SelectLineSolid = false; + setunaOption.ScrapHotKeyDatas = new Keys[(int)HotKeyID.__Count__] { Keys.Control | Keys.D1, Keys.Control | Keys.D2 }; + setunaOption.ScrapHotKeyEnable = true; + setunaOption.Scrap.InactiveAlphaChange = true; + setunaOption.Scrap.InactiveAlphaValue = 10; + setunaOption.Scrap.MouseOverAlphaChange = true; + setunaOption.Scrap.MouseOverAlphaValue = 90; + + + setunaOption.Setuna.TopMostEnabled = false; + + + var cstyle = new CStyle + { + StyleID = num++, + StyleName = "复制" + }; + cstyle.AddStyle(new CCopyStyleItem + { + CopyFromSource = true + }); + cstyle.AddKeyItem((Keys)131139); + var styleID = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "复制(有边框)" + }; + cstyle.AddStyle(new CCopyStyleItem + { + CopyFromSource = false + }); + cstyle.AddKeyItem((Keys)196675); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "剪切" + }; + cstyle.AddStyle(new CCopyStyleItem + { + CopyFromSource = true + }); + cstyle.AddStyle(new CCloseStyleItem()); + cstyle.AddKeyItem((Keys)131160); + var styleID2 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "剪切(有边框)" + }; + cstyle.AddStyle(new CCopyStyleItem + { + CopyFromSource = false + }); + cstyle.AddStyle(new CCloseStyleItem()); + cstyle.AddKeyItem((Keys)196696); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "粘贴" + }; + var newCi = new CPasteStyleItem(); + cstyle.AddStyle(newCi); + cstyle.AddKeyItem((Keys)131158); + var styleID3 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "保存" + }; + cstyle.AddStyle(new CImagePngStyleItem + { + Quality = 100, + ShowPreview = true, + FileNameType = CImageStyleItem.EnumFileName.SaveAs, + HaveMargin = false + }); + cstyle.AddKeyItem((Keys)131155); + var styleID4 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "保存(有边框)" + }; + cstyle.AddStyle(new CImagePngStyleItem + { + Quality = 100, + ShowPreview = true, + FileNameType = CImageStyleItem.EnumFileName.SaveAs, + HaveMargin = true + }); + cstyle.AddKeyItem((Keys)196691); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "旋转90度" + }; + cstyle.AddStyle(new CRotateStyleItem + { + Rotate = 90 + }); + cstyle.AddKeyItem(Keys.R); + var styleID5 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "垂直翻转" + }; + cstyle.AddStyle(new CRotateStyleItem + { + VerticalReflection = true + }); + cstyle.AddKeyItem((Keys)262230); + var styleID6 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "水平翻转" + }; + cstyle.AddStyle(new CRotateStyleItem + { + HorizonReflection = true + }); + cstyle.AddKeyItem((Keys)262216); + var styleID7 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "扩大" + }; + cstyle.AddStyle(new CScaleStyleItem + { + Value = 10, + SetType = CScaleStyleItem.ScaleSetType.Increment + }); + cstyle.AddKeyItem(Keys.RButton | Keys.MButton | Keys.Space | Keys.Alt); + var styleID8 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "扩大(微调)" + }; + cstyle.AddStyle(new CScaleStyleItem + { + Value = 1, + SetType = CScaleStyleItem.ScaleSetType.Increment + }); + cstyle.AddKeyItem(Keys.RButton | Keys.MButton | Keys.Space | Keys.Shift | Keys.Alt); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩小" + }; + cstyle.AddStyle(new CScaleStyleItem + { + Value = -10, + SetType = CScaleStyleItem.ScaleSetType.Increment + }); + cstyle.AddKeyItem(Keys.Back | Keys.Space | Keys.Alt); + var styleID9 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩小(微调)" + }; + cstyle.AddStyle(new CScaleStyleItem + { + Value = -1, + SetType = CScaleStyleItem.ScaleSetType.Increment + }); + cstyle.AddKeyItem(Keys.Back | Keys.Space | Keys.Shift | Keys.Alt); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "增加透明度" + }; + cstyle.AddStyle(new COpacityStyleItem + { + Absolute = false, + Opacity = 10 + }); + cstyle.AddKeyItem(Keys.LButton | Keys.MButton | Keys.Space | Keys.Alt); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "增加透明度(微调)" + }; + cstyle.AddStyle(new COpacityStyleItem + { + Absolute = false, + Opacity = 1 + }); + cstyle.AddKeyItem(Keys.LButton | Keys.MButton | Keys.Space | Keys.Shift | Keys.Alt); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "降低透明度" + }; + cstyle.AddStyle(new COpacityStyleItem + { + Absolute = false, + Opacity = -10 + }); + cstyle.AddKeyItem(Keys.LButton | Keys.RButton | Keys.MButton | Keys.Space | Keys.Alt); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "降低透明度(微调)" + }; + cstyle.AddStyle(new COpacityStyleItem + { + Absolute = false, + Opacity = -1 + }); + cstyle.AddKeyItem(Keys.LButton | Keys.RButton | Keys.MButton | Keys.Space | Keys.Shift | Keys.Alt); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "向上移动" + }; + cstyle.AddStyle(new CMoveStyleItem + { + Top = -50 + }); + cstyle.AddKeyItem(Keys.RButton | Keys.MButton | Keys.Space | Keys.Shift); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "向上移动(微调)" + }; + cstyle.AddStyle(new CMoveStyleItem + { + Top = -1 + }); + cstyle.AddKeyItem(Keys.Up); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "向下移动" + }; + cstyle.AddStyle(new CMoveStyleItem + { + Top = 50 + }); + cstyle.AddKeyItem(Keys.Back | Keys.Space | Keys.Shift); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "向下移动(微调)" + }; + cstyle.AddStyle(new CMoveStyleItem + { + Top = 1 + }); + cstyle.AddKeyItem(Keys.Down); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "向左移动" + }; + cstyle.AddStyle(new CMoveStyleItem + { + Left = -50 + }); + cstyle.AddKeyItem(Keys.LButton | Keys.MButton | Keys.Space | Keys.Shift); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "向左移动(微调)" + }; + cstyle.AddStyle(new CMoveStyleItem + { + Left = -1 + }); + cstyle.AddKeyItem(Keys.Left); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "向右移动" + }; + cstyle.AddStyle(new CMoveStyleItem + { + Left = 50 + }); + cstyle.AddKeyItem(Keys.LButton | Keys.RButton | Keys.MButton | Keys.Space | Keys.Shift); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "向右移动(微调)" + }; + cstyle.AddStyle(new CMoveStyleItem + { + Left = 1 + }); + cstyle.AddKeyItem(Keys.Right); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩放为50%" + }; + cstyle.AddStyle(new CScaleStyleItem + { + SetType = CScaleStyleItem.ScaleSetType.Fixed, + Value = 50 + }); + cstyle.AddKeyItem(Keys.D5); + var styleID10 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩放为60%" + }; + cstyle.AddStyle(new CScaleStyleItem + { + SetType = CScaleStyleItem.ScaleSetType.Fixed, + Value = 60 + }); + cstyle.AddKeyItem(Keys.D6); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩放为70%" + }; + cstyle.AddStyle(new CScaleStyleItem + { + SetType = CScaleStyleItem.ScaleSetType.Fixed, + Value = 70 + }); + cstyle.AddKeyItem(Keys.D7); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩放为80%" + }; + cstyle.AddStyle(new CScaleStyleItem + { + SetType = CScaleStyleItem.ScaleSetType.Fixed, + Value = 80 + }); + cstyle.AddKeyItem(Keys.D8); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩放为90%" + }; + cstyle.AddStyle(new CScaleStyleItem + { + SetType = CScaleStyleItem.ScaleSetType.Fixed, + Value = 90 + }); + cstyle.AddKeyItem(Keys.D9); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩放为100%" + }; + cstyle.AddStyle(new CScaleStyleItem + { + SetType = CScaleStyleItem.ScaleSetType.Fixed, + Value = 100 + }); + cstyle.AddKeyItem(Keys.D0); + var styleID11 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "缩放为150%" + }; + cstyle.AddStyle(new CScaleStyleItem + { + SetType = CScaleStyleItem.ScaleSetType.Fixed, + Value = 150 + }); + var styleID12 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "立体边框" + }; + cstyle.AddStyle(new CMarginStyleItem + { + BorderStyle = 0 + }); + cstyle.AddKeyItem(Keys.D1); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "单色边框" + }; + cstyle.AddStyle(new CMarginStyleItem + { + BorderStyle = 1, + MarginColorRed = byte.MaxValue, + MarginColorGreen = 128, + MarginColorBlue = 64, + MarginSize = 1 + }); + cstyle.AddKeyItem(Keys.D2); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "窗口化" + }; + cstyle.AddStyle(new CMarginStyleItem + { + BorderStyle = 2 + }); + cstyle.AddKeyItem(Keys.D3); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "无边框" + }; + cstyle.AddStyle(new CMarginStyleItem + { + BorderStyle = 1, + MarginSize = 0 + }); + cstyle.AddKeyItem(Keys.L); + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "关闭" + }; + var newCi2 = new CCloseStyleItem(); + cstyle.AddStyle(newCi2); + cstyle.AddKeyItem(Keys.Q); + var styleID13 = cstyle.StyleID; + setunaOption.Styles.Add(cstyle); + cstyle = new CStyle + { + StyleID = num++, + StyleName = "基本自动操作" + }; + cstyle.AddStyle(new CMarginStyleItem + { + BorderStyle = 0 + }); + cstyle.AddStyle(new COpacityStyleItem + { + Absolute = true, + Opacity = 95 + }); + setunaOption.Styles.Add(cstyle); + setunaOption.Scrap.CreateStyleID = cstyle.StyleID; + cstyle = new CStyle + { + StyleID = num++, + StyleName = "收缩" + }; + cstyle.AddStyle(new CCompactStyleItem + { + Opacity = 80, + SoldLine = false, + LineColor = Color.Blue.ToArgb() + }); + setunaOption.Styles.Add(cstyle); + setunaOption.Scrap.WClickStyleID = cstyle.StyleID; + cstyle = new CStyle + { + StyleID = num++, + StyleName = "修剪" + }; + var newCi3 = new CTrimStyleItem(); + cstyle.AddStyle(newCi3); + cstyle.AddKeyItem(Keys.T); + setunaOption.Styles.Add(cstyle); + setunaOption.Scrap.SubMenuStyles.Add(styleID13); + setunaOption.Scrap.SubMenuStyles.Add(new CSeparatorStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(new CScrapListStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(new CDustBoxStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(new CDustEraseStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(new COptionStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(new CShowVersionStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(new CSeparatorStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(styleID); + setunaOption.Scrap.SubMenuStyles.Add(styleID2); + setunaOption.Scrap.SubMenuStyles.Add(styleID3); + setunaOption.Scrap.SubMenuStyles.Add(styleID4); + setunaOption.Scrap.SubMenuStyles.Add(new CSeparatorStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(styleID10); + setunaOption.Scrap.SubMenuStyles.Add(styleID11); + setunaOption.Scrap.SubMenuStyles.Add(styleID12); + setunaOption.Scrap.SubMenuStyles.Add(styleID9); + setunaOption.Scrap.SubMenuStyles.Add(styleID8); + setunaOption.Scrap.SubMenuStyles.Add(new CSeparatorStyle().StyleID); + setunaOption.Scrap.SubMenuStyles.Add(styleID5); + setunaOption.Scrap.SubMenuStyles.Add(styleID6); + setunaOption.Scrap.SubMenuStyles.Add(styleID7); + return setunaOption; + } + + // Token: 0x1700005C RID: 92 + // (get) Token: 0x06000242 RID: 578 RVA: 0x0000CC2C File Offset: 0x0000AE2C + public static string ConfigFile + { + get + { + var text = Application.StartupPath; + text = Path.GetFullPath(Path.Combine(text, "")); + if (!Directory.Exists(text)) + { + Directory.CreateDirectory(text); + } + return Path.Combine(text, "SetunaConfig.xml"); + } + } + + // Token: 0x06000243 RID: 579 RVA: 0x0000CC6C File Offset: 0x0000AE6C + public SetunaOption() + { + Difficult = false; + hkScrap = new Keys[(int)HotKeyID.__Count__] { Keys.None, Keys.None }; + blHotKey = false; + Styles = new List(); + Setuna = new SetunaOption.SetunaOptionData(); + Scrap = new SetunaOption.ScrapOptionData(); + } + + // Token: 0x1700005D RID: 93 + // (get) Token: 0x06000245 RID: 581 RVA: 0x0000CCCD File Offset: 0x0000AECD + // (set) Token: 0x06000244 RID: 580 RVA: 0x0000CCC0 File Offset: 0x0000AEC0 + public string ApplicationPath + { + get => Application.ExecutablePath; + set => Console.WriteLine(ApplicationPath); + } + + // Token: 0x1700005E RID: 94 + // (get) Token: 0x06000247 RID: 583 RVA: 0x0000CCE1 File Offset: 0x0000AEE1 + // (set) Token: 0x06000246 RID: 582 RVA: 0x0000CCD4 File Offset: 0x0000AED4 + public string ApplicationVersion + { + get => Application.ProductVersion; + set => Console.WriteLine(ApplicationVersion); + } + + // Token: 0x1700005F RID: 95 + // (get) Token: 0x06000249 RID: 585 RVA: 0x0000CCF5 File Offset: 0x0000AEF5 + // (set) Token: 0x06000248 RID: 584 RVA: 0x0000CCE8 File Offset: 0x0000AEE8 + public string OptionVersion + { + get => "1.0"; + set => Console.WriteLine(OptionVersion); + } + + // Token: 0x0600024A RID: 586 RVA: 0x0000CCFC File Offset: 0x0000AEFC + public static Type[] GetAllType() + { + var styleType = StyleItemDictionary.GetStyleType(); + var arrayList = new ArrayList + { + typeof(SetunaOption), + typeof(CStyle), + typeof(Color) + }; + for (var i = 0; i < styleType.Length; i++) + { + arrayList.Add(styleType[i]); + } + var array = new Type[arrayList.Count]; + for (var j = 0; j < arrayList.Count; j++) + { + array[j] = (Type)arrayList[j]; + } + return array; + } + + // Token: 0x17000060 RID: 96 + // (get) Token: 0x0600024C RID: 588 RVA: 0x0000CD9C File Offset: 0x0000AF9C + // (set) Token: 0x0600024B RID: 587 RVA: 0x0000CD93 File Offset: 0x0000AF93 + public Keys[] ScrapHotKeys + { + get => ScrapHotKeyDatas; + set => ScrapHotKeyDatas = value; + } + + // Token: 0x17000061 RID: 97 + // (get) Token: 0x0600024E RID: 590 RVA: 0x0000CDAD File Offset: 0x0000AFAD + // (set) Token: 0x0600024D RID: 589 RVA: 0x0000CDA4 File Offset: 0x0000AFA4 + protected Keys[] ScrapHotKeyDatas + { + get => hkScrap; + set => hkScrap = value; + } + + // Token: 0x17000062 RID: 98 + // (get) Token: 0x06000250 RID: 592 RVA: 0x0000CDBE File Offset: 0x0000AFBE + // (set) Token: 0x0600024F RID: 591 RVA: 0x0000CDB5 File Offset: 0x0000AFB5 + public bool ScrapHotKeyEnable + { + get => blHotKey; + set => blHotKey = value; + } + + // Token: 0x06000251 RID: 593 RVA: 0x0000CDC8 File Offset: 0x0000AFC8 + public KeyItemBook GetKeyItemBook() + { + var keyItemBook = new KeyItemBook(); + for (var i = 0; i < Styles.Count; i++) + { + var cstyle = Styles[i]; + keyItemBook.AddKeyItem(cstyle.KeyItems); + } + return keyItemBook; + } + + // Token: 0x06000252 RID: 594 RVA: 0x0000CE0C File Offset: 0x0000B00C + public CStyle FindStyle(int styleId) + { + CStyle result = null; + if (styleId == 0) + { + return null; + } + foreach (var cstyle in Styles) + { + if (cstyle.StyleID == styleId) + { + result = cstyle; + break; + } + } + return result; + } + + // Token: 0x06000253 RID: 595 RVA: 0x0000CE70 File Offset: 0x0000B070 + public bool RegistHotKey(IntPtr handle, HotKeyID keyID) + { + UnregistHotKey(handle, keyID); + + var hkScrap = this.hkScrap[(int)keyID]; + if (hkScrap != Keys.None && blHotKey) + { + var num = 0; + if ((hkScrap & Keys.Shift) == Keys.Shift) + { + num |= 4; + } + if ((hkScrap & Keys.Alt) == Keys.Alt) + { + num |= 1; + } + if ((hkScrap & Keys.Control) == Keys.Control) + { + num |= 2; + } + var key = hkScrap & Keys.KeyCode; + if (SetunaOption.RegisterHotKey(handle, (int)keyID, num, (int)key) == 0) + { + return false; + } + } + return true; + } + + // Token: 0x06000254 RID: 596 RVA: 0x0000CF15 File Offset: 0x0000B115 + public void UnregistHotKey(IntPtr handle, HotKeyID keyID) + { + SetunaOption.UnregisterHotKey(handle, (int)keyID); + } + + // Token: 0x06000255 RID: 597 + [DllImport("user32.dll")] + private static extern int RegisterHotKey(IntPtr hWnd, int ID, int MOD_KEY, int KEY); + + // Token: 0x06000256 RID: 598 + [DllImport("user32.dll")] + private static extern int UnregisterHotKey(IntPtr hWnd, int ID); + + // Token: 0x06000257 RID: 599 RVA: 0x0000CF44 File Offset: 0x0000B144 + public object Clone() + { + var setunaOption = new SetunaOption + { + Difficult = Difficult, + hkScrap = hkScrap, + blHotKey = blHotKey, + Setuna = Setuna, + Scrap = Scrap + }; + for (var i = 0; i < Styles.Count; i++) + { + setunaOption.Styles.Add(Styles[i].DeepCopy()); + } + return setunaOption; + } + + // Token: 0x040000F4 RID: 244 + private const string ConfigFileName = "SetunaConfig.xml"; + + // Token: 0x040000F5 RID: 245 + private const int MOD_ALT = 1; + + // Token: 0x040000F6 RID: 246 + private const int MOD_CONTROL = 2; + + // Token: 0x040000F7 RID: 247 + private const int MOD_SHIFT = 4; + + // Token: 0x040000F8 RID: 248 + public const int WM_HOTKEY = 786; + + // Token: 0x040000F9 RID: 249 + public const int HOTKEY_ID = 1; + + // Token: 0x040000FA RID: 250 + public bool Difficult; + + // Token: 0x040000FB RID: 251 + protected Keys[] hkScrap; + + // Token: 0x040000FC RID: 252 + protected bool blHotKey; + + // Token: 0x040000FE RID: 254 + public SetunaOption.SetunaOptionData Setuna; + + // Token: 0x040000FF RID: 255 + public SetunaOption.ScrapOptionData Scrap; + + // Token: 0x04000100 RID: 256 + public List Styles; + + // Token: 0x0200003D RID: 61 + public class ScrapOptionData + { + // Token: 0x17000063 RID: 99 + // (get) Token: 0x06000259 RID: 601 RVA: 0x0000CFF5 File Offset: 0x0000B1F5 + // (set) Token: 0x06000258 RID: 600 RVA: 0x0000CFD2 File Offset: 0x0000B1D2 + public sbyte InactiveAlphaValue + { + get + { + if (_InactiveAlphaValue > 100) + { + return 100; + } + if (_InactiveAlphaValue < 1) + { + return 1; + } + return _InactiveAlphaValue; + } + set + { + if (value > 100) + { + _InactiveAlphaValue = 100; + return; + } + if (value < 1) + { + _InactiveAlphaValue = 1; + return; + } + _InactiveAlphaValue = value; + } + } + + // Token: 0x17000064 RID: 100 + // (get) Token: 0x0600025B RID: 603 RVA: 0x0000D02C File Offset: 0x0000B22C + // (set) Token: 0x0600025A RID: 602 RVA: 0x0000D015 File Offset: 0x0000B215 + public sbyte InactiveLineValue + { + get + { + if (_InactiveLineValue > 10) + { + return 10; + } + return _InactiveLineValue; + } + set + { + if (value > 10) + { + _InactiveLineValue = 10; + return; + } + _InactiveLineValue = value; + } + } + + // Token: 0x17000065 RID: 101 + // (get) Token: 0x0600025D RID: 605 RVA: 0x0000D064 File Offset: 0x0000B264 + // (set) Token: 0x0600025C RID: 604 RVA: 0x0000D041 File Offset: 0x0000B241 + public sbyte MouseOverAlphaValue + { + get + { + if (_MouseOverAlphaValue > 100) + { + return 100; + } + if (_MouseOverAlphaValue < 1) + { + return 1; + } + return _MouseOverAlphaValue; + } + set + { + if (value > 100) + { + _MouseOverAlphaValue = 100; + return; + } + if (value < 1) + { + _MouseOverAlphaValue = 1; + return; + } + _MouseOverAlphaValue = value; + } + } + + // Token: 0x17000066 RID: 102 + // (get) Token: 0x0600025F RID: 607 RVA: 0x0000D09B File Offset: 0x0000B29B + // (set) Token: 0x0600025E RID: 606 RVA: 0x0000D084 File Offset: 0x0000B284 + public sbyte MouseOverLineValue + { + get + { + if (_MouseOverLineValue > 10) + { + return 10; + } + return _MouseOverLineValue; + } + set + { + if (value > 10) + { + _MouseOverLineValue = 10; + return; + } + _MouseOverLineValue = value; + } + } + + // Token: 0x06000260 RID: 608 RVA: 0x0000D0B0 File Offset: 0x0000B2B0 + public ScrapOptionData() + { + CreateStyleID = 0; + WClickStyleID = 0; + ImageDrag = true; + InactiveAlphaChange = true; + InactiveAlphaValue = 90; + InactiveLineChange = false; + InactiveLineValue = 1; + InactiveLineColor = new RGBColor(0, 0, 0); + MouseOverAlphaChange = true; + MouseOverAlphaValue = 10; + MouseOverLineChange = false; + MouseOverLineValue = 1; + MouseOverLineColor = new RGBColor(0, 0, 0); + SubMenuStyles = new List(); + } + + // Token: 0x04000101 RID: 257 + public int CreateStyleID; + + // Token: 0x04000102 RID: 258 + public int WClickStyleID; + + // Token: 0x04000103 RID: 259 + public bool ImageDrag; + + // Token: 0x04000104 RID: 260 + public bool InactiveAlphaChange; + + // Token: 0x04000105 RID: 261 + private sbyte _InactiveAlphaValue; + + // Token: 0x04000106 RID: 262 + public bool InactiveLineChange; + + // Token: 0x04000107 RID: 263 + private sbyte _InactiveLineValue; + + // Token: 0x04000108 RID: 264 + public RGBColor InactiveLineColor; + + // Token: 0x04000109 RID: 265 + public bool MouseOverAlphaChange; + + // Token: 0x0400010A RID: 266 + private sbyte _MouseOverAlphaValue; + + // Token: 0x0400010B RID: 267 + public bool MouseOverLineChange; + + // Token: 0x0400010C RID: 268 + private sbyte _MouseOverLineValue; + + // Token: 0x0400010D RID: 269 + public RGBColor MouseOverLineColor; + + // Token: 0x0400010E RID: 270 + public List SubMenuStyles; + } + + // Token: 0x0200004F RID: 79 + public class SetunaOptionData + { + // Token: 0x17000070 RID: 112 + // (get) Token: 0x060002CC RID: 716 RVA: 0x0000F634 File Offset: 0x0000D834 + public bool ClickCapture => ClickCapture7 | ClickCapture8 | ClickCapture9 | ClickCapture4 | ClickCapture6 | ClickCapture1 | ClickCapture2 | ClickCapture3; + + // Token: 0x17000071 RID: 113 + // (get) Token: 0x060002CD RID: 717 RVA: 0x0000F670 File Offset: 0x0000D870 + public bool[] ClickCaptureValue => new bool[] + { + false, + ClickCapture1, + ClickCapture2, + ClickCapture3, + ClickCapture4, + false, + ClickCapture6, + ClickCapture7, + ClickCapture8, + ClickCapture9 + }; + + // Token: 0x060002CE RID: 718 RVA: 0x0000F6D8 File Offset: 0x0000D8D8 + public SetunaOptionData() + { + AppType = SetunaOption.SetunaOptionData.ApplicationType.ApplicationMode; + ShowMainWindow = true; + ShowSplashWindow = true; + SelectLineSolid = true; + SelectLineColorR = Color.Blue.R; + SelectLineColorG = Color.Blue.G; + SelectLineColorB = Color.Blue.B; + SelectBackColorR = Color.DarkBlue.R; + SelectBackColorG = Color.DarkBlue.G; + SelectBackColorB = Color.DarkBlue.B; + SelectAreaTransparent = 80; + DustBoxEnable = true; + DustBoxCapacity = 5; + ClickCapture7 = false; + ClickCapture8 = false; + ClickCapture9 = false; + ClickCapture4 = false; + ClickCapture6 = false; + ClickCapture1 = false; + ClickCapture2 = false; + ClickCapture3 = false; + TopMostEnabled = false; + } + + // Token: 0x17000072 RID: 114 + // (get) Token: 0x060002CF RID: 719 RVA: 0x0000F7C9 File Offset: 0x0000D9C9 + public Color SelectLineColor => Color.FromArgb(SelectLineColorR, SelectLineColorG, SelectLineColorB); + + // Token: 0x17000073 RID: 115 + // (get) Token: 0x060002D0 RID: 720 RVA: 0x0000F7E2 File Offset: 0x0000D9E2 + public Color SelectBackColor => Color.FromArgb(SelectBackColorR, SelectBackColorG, SelectBackColorB); + + // Token: 0x04000140 RID: 320 + public SetunaOption.SetunaOptionData.ApplicationType AppType; + + // Token: 0x04000141 RID: 321 + public bool ShowMainWindow; + + // Token: 0x04000142 RID: 322 + public SetunaOption.SetunaOptionData.OpeningType DupType; + + // Token: 0x04000143 RID: 323 + public bool ShowSplashWindow; + + // Token: 0x04000144 RID: 324 + public bool SelectLineSolid; + + // Token: 0x04000145 RID: 325 + public byte SelectLineColorR; + + // Token: 0x04000146 RID: 326 + public byte SelectLineColorG; + + // Token: 0x04000147 RID: 327 + public byte SelectLineColorB; + + // Token: 0x04000148 RID: 328 + public byte SelectBackColorR; + + // Token: 0x04000149 RID: 329 + public byte SelectBackColorG; + + // Token: 0x0400014A RID: 330 + public byte SelectBackColorB; + + // Token: 0x0400014B RID: 331 + public int SelectAreaTransparent; + + // Token: 0x0400014C RID: 332 + public bool DustBoxEnable; + + // Token: 0x0400014D RID: 333 + public ushort DustBoxCapacity; + + // Token: 0x0400014E RID: 334 + public bool ClickCapture7; + + // Token: 0x0400014F RID: 335 + public bool ClickCapture8; + + // Token: 0x04000150 RID: 336 + public bool ClickCapture9; + + // Token: 0x04000151 RID: 337 + public bool ClickCapture4; + + // Token: 0x04000152 RID: 338 + public bool ClickCapture6; + + // Token: 0x04000153 RID: 339 + public bool ClickCapture1; + + // Token: 0x04000154 RID: 340 + public bool ClickCapture2; + + // Token: 0x04000155 RID: 341 + public bool ClickCapture3; + + public bool TopMostEnabled; + + // Token: 0x02000052 RID: 82 + public enum ApplicationType + { + // Token: 0x040001C4 RID: 452 + ApplicationMode = 1, + // Token: 0x040001C5 RID: 453 + ResidentMode = 16 + } + + // Token: 0x02000056 RID: 86 + public enum OpeningType + { + // Token: 0x040001CA RID: 458 + Normal, + // Token: 0x040001CB RID: 459 + Capture + } + } + } +} diff --git a/SETUNA/Main/Option/StyleEditForm.Designer.cs b/SETUNA/Main/Option/StyleEditForm.Designer.cs new file mode 100644 index 0000000..9daa810 --- /dev/null +++ b/SETUNA/Main/Option/StyleEditForm.Designer.cs @@ -0,0 +1,455 @@ +namespace SETUNA.Main.Option +{ + // Token: 0x02000081 RID: 129 + partial class StyleEditForm + { + // Token: 0x0600043D RID: 1085 RVA: 0x0001AECB File Offset: 0x000190CB + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x0600043E RID: 1086 RVA: 0x0001AEEC File Offset: 0x000190EC + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.label1 = new System.Windows.Forms.Label(); + this.txtStyleName = new System.Windows.Forms.TextBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.panel2 = new System.Windows.Forms.Panel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.btnKeyDelete = new System.Windows.Forms.Button(); + this.listKeys = new System.Windows.Forms.ListBox(); + this.btnKeyEntry = new System.Windows.Forms.Button(); + this.btnOk = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.listStyleItem = new SETUNA.Main.StyleItemListBox(); + this.listAllStyleItem = new SETUNA.Main.StyleItemListBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.btnItemDelete = new System.Windows.Forms.Button(); + this.btnInsert = new System.Windows.Forms.Button(); + this.btnItemDown = new System.Windows.Forms.Button(); + this.btnItemUp = new System.Windows.Forms.Button(); + this.toolTip2 = new System.Windows.Forms.ToolTip(this.components); + this.hotkey = new SETUNA.Main.HotkeyControl(); + this.panel2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.panel3.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.label1.ForeColor = System.Drawing.SystemColors.ControlText; + this.label1.Location = new System.Drawing.Point(1, 303); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(83, 12); + this.label1.TabIndex = 0; + this.label1.Text = "自动操作名∶"; + // + // txtStyleName + // + this.txtStyleName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(206)))), ((int)(((byte)(230)))), ((int)(((byte)(247))))); + this.txtStyleName.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.txtStyleName.ImeMode = System.Windows.Forms.ImeMode.On; + this.txtStyleName.Location = new System.Drawing.Point(3, 317); + this.txtStyleName.Name = "txtStyleName"; + this.txtStyleName.Size = new System.Drawing.Size(193, 23); + this.txtStyleName.TabIndex = 1; + this.toolTip2.SetToolTip(this.txtStyleName, "您可以对具体自动操作命名。"); + this.txtStyleName.TextChanged += new System.EventHandler(this.txtStyleName_TextChanged); + // + // toolTip1 + // + this.toolTip1.Active = false; + this.toolTip1.AutoPopDelay = 5000; + this.toolTip1.InitialDelay = 0; + this.toolTip1.ReshowDelay = 100; + this.toolTip1.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info; + this.toolTip1.ToolTipTitle = "aaa"; + this.toolTip1.UseAnimation = false; + this.toolTip1.UseFading = false; + // + // panel2 + // + this.panel2.Controls.Add(this.label1); + this.panel2.Controls.Add(this.groupBox1); + this.panel2.Controls.Add(this.txtStyleName); + this.panel2.Controls.Add(this.btnOk); + this.panel2.Controls.Add(this.btnCancel); + this.panel2.Dock = System.Windows.Forms.DockStyle.Right; + this.panel2.Location = new System.Drawing.Point(579, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(204, 381); + this.panel2.TabIndex = 2; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.hotkey); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.btnKeyDelete); + this.groupBox1.Controls.Add(this.listKeys); + this.groupBox1.Controls.Add(this.btnKeyEntry); + this.groupBox1.Location = new System.Drawing.Point(3, 11); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(193, 212); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "指定快捷键"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(10, 82); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(77, 12); + this.label5.TabIndex = 3; + this.label5.Text = "快捷键分配:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(10, 23); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(53, 12); + this.label4.TabIndex = 0; + this.label4.Text = "快捷键:"; + // + // btnKeyDelete + // + this.btnKeyDelete.Location = new System.Drawing.Point(133, 179); + this.btnKeyDelete.Name = "btnKeyDelete"; + this.btnKeyDelete.Size = new System.Drawing.Size(48, 24); + this.btnKeyDelete.TabIndex = 5; + this.btnKeyDelete.Text = "删除"; + this.btnKeyDelete.UseVisualStyleBackColor = true; + this.btnKeyDelete.Click += new System.EventHandler(this.btnKeyDelete_Click); + // + // listKeys + // + this.listKeys.FormattingEnabled = true; + this.listKeys.IntegralHeight = false; + this.listKeys.ItemHeight = 12; + this.listKeys.Location = new System.Drawing.Point(12, 99); + this.listKeys.Name = "listKeys"; + this.listKeys.Size = new System.Drawing.Size(169, 78); + this.listKeys.TabIndex = 4; + this.toolTip2.SetToolTip(this.listKeys, "选择参考图,如果点击分配的快捷键则应用自动操作。"); + // + // btnKeyEntry + // + this.btnKeyEntry.Location = new System.Drawing.Point(133, 60); + this.btnKeyEntry.Name = "btnKeyEntry"; + this.btnKeyEntry.Size = new System.Drawing.Size(48, 24); + this.btnKeyEntry.TabIndex = 2; + this.btnKeyEntry.Text = "登记"; + this.btnKeyEntry.UseVisualStyleBackColor = true; + this.btnKeyEntry.Click += new System.EventHandler(this.btnKeyEntry_Click); + this.btnKeyEntry.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.hotkey_KeyPress); + // + // btnOk + // + this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnOk.Location = new System.Drawing.Point(3, 344); + this.btnOk.Name = "btnOk"; + this.btnOk.Size = new System.Drawing.Size(103, 28); + this.btnOk.TabIndex = 1; + this.btnOk.Text = "确定"; + this.btnOk.UseVisualStyleBackColor = true; + this.btnOk.Click += new System.EventHandler(this.btnOk_Click); + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(112, 344); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(84, 28); + this.btnCancel.TabIndex = 2; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.groupBox2); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(0, 0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(579, 381); + this.panel3.TabIndex = 1; + // + // groupBox2 + // + this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.listStyleItem); + this.groupBox2.Controls.Add(this.listAllStyleItem); + this.groupBox2.Controls.Add(this.label3); + this.groupBox2.Controls.Add(this.label2); + this.groupBox2.Controls.Add(this.btnItemDelete); + this.groupBox2.Controls.Add(this.btnInsert); + this.groupBox2.Controls.Add(this.btnItemDown); + this.groupBox2.Controls.Add(this.btnItemUp); + this.groupBox2.Location = new System.Drawing.Point(12, 11); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Padding = new System.Windows.Forms.Padding(6); + this.groupBox2.Size = new System.Drawing.Size(557, 362); + this.groupBox2.TabIndex = 0; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "自动操作的装配"; + // + // listStyleItem + // + this.listStyleItem.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.listStyleItem.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.listStyleItem.Font = new System.Drawing.Font("黑体", 10F); + this.listStyleItem.FormattingEnabled = true; + this.listStyleItem.HelpFont = new System.Drawing.Font("黑体", 8F); + this.listStyleItem.HelpForeColor = System.Drawing.Color.SteelBlue; + this.listStyleItem.IntegralHeight = false; + this.listStyleItem.ItemDragMove = true; + this.listStyleItem.ItemHeight = 39; + this.listStyleItem.ItemKeyDelete = true; + this.listStyleItem.ItemLine = true; + this.listStyleItem.ItemLineColor = System.Drawing.Color.LightSteelBlue; + this.listStyleItem.Items.AddRange(new object[] { + "第1项", + "第2项", + "第3项"}); + this.listStyleItem.LeftSpace = 34; + this.listStyleItem.Location = new System.Drawing.Point(296, 40); + this.listStyleItem.Name = "listStyleItem"; + this.listStyleItem.Size = new System.Drawing.Size(250, 307); + this.listStyleItem.TabIndex = 4; + this.listStyleItem.TerminateEnd = true; + this.toolTip2.SetToolTip(this.listStyleItem, "自上而下依次应用自动操作项目。"); + this.listStyleItem.Click += new System.EventHandler(this.listAllStyleItem_Click); + this.listStyleItem.DoubleClick += new System.EventHandler(this.listStyleItem_DoubleClick); + // + // listAllStyleItem + // + this.listAllStyleItem.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.listAllStyleItem.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.listAllStyleItem.Font = new System.Drawing.Font("黑体", 10F); + this.listAllStyleItem.FormattingEnabled = true; + this.listAllStyleItem.HelpFont = new System.Drawing.Font("黑体", 8F); + this.listAllStyleItem.HelpForeColor = System.Drawing.Color.SteelBlue; + this.listAllStyleItem.IntegralHeight = false; + this.listAllStyleItem.ItemDragMove = false; + this.listAllStyleItem.ItemHeight = 39; + this.listAllStyleItem.ItemKeyDelete = false; + this.listAllStyleItem.ItemLine = true; + this.listAllStyleItem.ItemLineColor = System.Drawing.Color.LightSteelBlue; + this.listAllStyleItem.Items.AddRange(new object[] { + "第1项", + "第2项", + "第3项"}); + this.listAllStyleItem.LeftSpace = 34; + this.listAllStyleItem.Location = new System.Drawing.Point(9, 40); + this.listAllStyleItem.Name = "listAllStyleItem"; + this.listAllStyleItem.ScrollAlwaysVisible = true; + this.listAllStyleItem.Size = new System.Drawing.Size(250, 307); + this.listAllStyleItem.TabIndex = 1; + this.listAllStyleItem.TerminateEnd = false; + this.listAllStyleItem.Click += new System.EventHandler(this.listAllStyleItem_Click); + this.listAllStyleItem.DoubleClick += new System.EventHandler(this.listAllStyleItem_DoubleClick); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(294, 25); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(65, 12); + this.label3.TabIndex = 3; + this.label3.Text = "登记方式:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(9, 25); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(89, 12); + this.label2.TabIndex = 0; + this.label2.Text = "自动操作列表:"; + // + // btnItemDelete + // + this.btnItemDelete.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnItemDelete.Font = new System.Drawing.Font("宋体", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.btnItemDelete.Image = global::SETUNA.Properties.Resources.Close; + this.btnItemDelete.Location = new System.Drawing.Point(517, 14); + this.btnItemDelete.Name = "btnItemDelete"; + this.btnItemDelete.Size = new System.Drawing.Size(29, 23); + this.btnItemDelete.TabIndex = 7; + this.toolTip2.SetToolTip(this.btnItemDelete, "删除选定的项目。"); + this.btnItemDelete.UseVisualStyleBackColor = true; + this.btnItemDelete.Click += new System.EventHandler(this.btnItemDelete_Click); + // + // btnInsert + // + this.btnInsert.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.btnInsert.Location = new System.Drawing.Point(265, 51); + this.btnInsert.Name = "btnInsert"; + this.btnInsert.Size = new System.Drawing.Size(25, 286); + this.btnInsert.TabIndex = 2; + this.btnInsert.Text = ">>"; + this.btnInsert.UseVisualStyleBackColor = true; + this.btnInsert.Click += new System.EventHandler(this.btnInsert_Click); + // + // btnItemDown + // + this.btnItemDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnItemDown.Font = new System.Drawing.Font("宋体", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.btnItemDown.Image = global::SETUNA.Properties.Resources.ArrowDown; + this.btnItemDown.Location = new System.Drawing.Point(456, 14); + this.btnItemDown.Name = "btnItemDown"; + this.btnItemDown.Size = new System.Drawing.Size(29, 23); + this.btnItemDown.TabIndex = 5; + this.toolTip2.SetToolTip(this.btnItemDown, "更改选定项目的顺序。"); + this.btnItemDown.UseVisualStyleBackColor = true; + this.btnItemDown.Click += new System.EventHandler(this.btnItemDown_Click); + // + // btnItemUp + // + this.btnItemUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnItemUp.Font = new System.Drawing.Font("宋体", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.btnItemUp.Image = global::SETUNA.Properties.Resources.ArrowUp; + this.btnItemUp.Location = new System.Drawing.Point(484, 14); + this.btnItemUp.Name = "btnItemUp"; + this.btnItemUp.Size = new System.Drawing.Size(29, 23); + this.btnItemUp.TabIndex = 6; + this.toolTip2.SetToolTip(this.btnItemUp, "更改选定项目的顺序。"); + this.btnItemUp.UseVisualStyleBackColor = true; + this.btnItemUp.Click += new System.EventHandler(this.btnItemUp_Click); + // + // hotkey + // + this.hotkey.Hotkey = global::System.Windows.Forms.Keys.None; + this.hotkey.Location = new global::System.Drawing.Point(12, 40); + this.hotkey.Name = "hotkey"; + this.hotkey.Size = new global::System.Drawing.Size(169, 19); + this.hotkey.TabIndex = 1; + this.toolTip2.SetToolTip(this.hotkey, "创建应用自动操作的快捷键。"); + this.hotkey.KeyUp += new global::System.Windows.Forms.KeyEventHandler(this.hotkey_KeyUp); + // + // StyleEditForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(783, 381); + this.Controls.Add(this.panel3); + this.Controls.Add(this.panel2); + this.DoubleBuffered = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(692, 415); + this.Name = "StyleEditForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "StyleEditForm"; + this.Shown += new System.EventHandler(this.StyleEditForm_Shown); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.panel3.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + + } + + // Token: 0x04000281 RID: 641 + private global::System.ComponentModel.IContainer components; + + // Token: 0x04000282 RID: 642 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000283 RID: 643 + private global::System.Windows.Forms.TextBox txtStyleName; + + // Token: 0x04000284 RID: 644 + private global::System.Windows.Forms.ToolTip toolTip1; + + // Token: 0x04000285 RID: 645 + private global::System.Windows.Forms.Panel panel2; + + // Token: 0x04000286 RID: 646 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x04000287 RID: 647 + private global::System.Windows.Forms.Label label5; + + // Token: 0x04000288 RID: 648 + private global::System.Windows.Forms.Label label4; + + // Token: 0x04000289 RID: 649 + private global::System.Windows.Forms.Button btnKeyDelete; + + // Token: 0x0400028B RID: 651 + private global::System.Windows.Forms.ListBox listKeys; + + // Token: 0x0400028C RID: 652 + private global::System.Windows.Forms.Button btnKeyEntry; + + // Token: 0x0400028D RID: 653 + private global::System.Windows.Forms.Button btnOk; + + // Token: 0x0400028E RID: 654 + private global::System.Windows.Forms.Button btnCancel; + + // Token: 0x0400028F RID: 655 + private global::System.Windows.Forms.Panel panel3; + + // Token: 0x04000290 RID: 656 + private global::System.Windows.Forms.GroupBox groupBox2; + + // Token: 0x04000291 RID: 657 + private global::SETUNA.Main.StyleItemListBox listStyleItem; + + // Token: 0x04000292 RID: 658 + private global::SETUNA.Main.StyleItemListBox listAllStyleItem; + + // Token: 0x04000293 RID: 659 + private global::System.Windows.Forms.Label label3; + + // Token: 0x04000294 RID: 660 + private global::System.Windows.Forms.Label label2; + + // Token: 0x04000295 RID: 661 + private global::System.Windows.Forms.Button btnItemDelete; + + // Token: 0x04000296 RID: 662 + private global::System.Windows.Forms.Button btnInsert; + + // Token: 0x04000297 RID: 663 + private global::System.Windows.Forms.Button btnItemDown; + + // Token: 0x04000298 RID: 664 + private global::System.Windows.Forms.Button btnItemUp; + + // Token: 0x04000299 RID: 665 + private global::System.Windows.Forms.ToolTip toolTip2; + private HotkeyControl hotkey; + } +} diff --git a/SETUNA/Main/Option/StyleEditForm.cs b/SETUNA/Main/Option/StyleEditForm.cs new file mode 100644 index 0000000..26ce9a2 --- /dev/null +++ b/SETUNA/Main/Option/StyleEditForm.cs @@ -0,0 +1,292 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using SETUNA.Main.KeyItems; +using SETUNA.Main.Style; +using SETUNA.Main.StyleItems; + +namespace SETUNA.Main.Option +{ + // Token: 0x02000081 RID: 129 + public partial class StyleEditForm : BaseForm + { + // Token: 0x0600043F RID: 1087 RVA: 0x0001C0F4 File Offset: 0x0001A2F4 + public StyleEditForm(CStyle trgStyle, KeyItemBook keybook) + { + InitializeComponent(); + base.ResizeRedraw = true; + _trgStyle = trgStyle; + _keybook = keybook; + cmKey = Keys.None; + if (_trgStyle == null) + { + _trgStyle = new CStyle(); + } + txtStyleName.Text = _trgStyle.GetName(); + RefreshStyleItemList(); + RefreshAllStyleItemList(); + RefreshKeyItemList(); + txtStyleName_TextChanged(txtStyleName, new EventArgs()); + } + + // Token: 0x170000A8 RID: 168 + // (get) Token: 0x06000440 RID: 1088 RVA: 0x0001C175 File Offset: 0x0001A375 + public CStyle Style => _trgStyle; + + // Token: 0x06000441 RID: 1089 RVA: 0x0001C180 File Offset: 0x0001A380 + private void RefreshStyleItemList() + { + var selectedIndex = listStyleItem.SelectedIndex; + listStyleItem.Items.Clear(); + for (var i = 0; i < _trgStyle.Items.Length; i++) + { + listStyleItem.Items.Add(_trgStyle.Items[i]); + } + listStyleItem.SelectedIndex = selectedIndex; + } + + // Token: 0x06000442 RID: 1090 RVA: 0x0001C1EC File Offset: 0x0001A3EC + private void RefreshAllStyleItemList() + { + var allStyleItems = StyleItemDictionary.GetAllStyleItems(); + listAllStyleItem.BeginUpdate(); + listAllStyleItem.Items.Clear(); + for (var i = 0; i < allStyleItems.Length; i++) + { + listAllStyleItem.Items.Add(allStyleItems[i]); + } + listAllStyleItem.EndUpdate(); + } + + // Token: 0x06000443 RID: 1091 RVA: 0x0001C248 File Offset: 0x0001A448 + private void RefreshKeyItemList() + { + listKeys.Items.Clear(); + for (var i = 0; i < _trgStyle.KeyItems.Length; i++) + { + listKeys.Items.Add(_trgStyle.KeyItems[i]); + } + } + + // Token: 0x06000444 RID: 1092 RVA: 0x0001C29C File Offset: 0x0001A49C + private void btnItemDelete_Click(object sender, EventArgs e) + { + if (listStyleItem.SelectedItem != null) + { + var selectedIndex = listStyleItem.SelectedIndex; + listStyleItem.Items.Remove(listStyleItem.SelectedItem); + if (selectedIndex <= listStyleItem.Items.Count - 1) + { + listStyleItem.SelectedIndex = selectedIndex; + return; + } + listStyleItem.SelectedIndex = listStyleItem.Items.Count - 1; + } + } + + // Token: 0x06000445 RID: 1093 RVA: 0x0001C31C File Offset: 0x0001A51C + private void btnInsert_Click(object sender, EventArgs e) + { + InsertStyleItem(); + } + + // Token: 0x06000446 RID: 1094 RVA: 0x0001C324 File Offset: 0x0001A524 + private void listAllStyleItem_DoubleClick(object sender, EventArgs e) + { + var listBox = (ListBox)sender; + if (listBox.SelectedItem != null) + { + InsertStyleItem(); + } + } + + // Token: 0x06000447 RID: 1095 RVA: 0x0001C348 File Offset: 0x0001A548 + private void btnOk_Click(object sender, EventArgs e) + { + if (txtStyleName.Text.Trim().Length == 0) + { + MessageBox.Show("请输入自动操作名。", Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + txtStyleName.Focus(); + return; + } + WriteValue(); + base.DialogResult = DialogResult.OK; + base.Close(); + } + + // Token: 0x06000448 RID: 1096 RVA: 0x0001C3A0 File Offset: 0x0001A5A0 + private void btnCancel_Click(object sender, EventArgs e) + { + base.DialogResult = DialogResult.Cancel; + base.Close(); + } + + // Token: 0x06000449 RID: 1097 RVA: 0x0001C3B0 File Offset: 0x0001A5B0 + private void WriteValue() + { + _trgStyle.StyleName = txtStyleName.Text.Trim(); + _trgStyle.ClearStyle(); + for (var i = 0; i < listStyleItem.Items.Count; i++) + { + _trgStyle.AddStyle((CStyleItem)listStyleItem.Items[i]); + } + _trgStyle.ClearKey(); + for (var j = 0; j < listKeys.Items.Count; j++) + { + var key = (Keys)((KeyItem)listKeys.Items[j])._key; + var keyItem = _keybook.FindKeyItem(key); + if (keyItem != null) + { + keyItem.Deparent(); + } + _trgStyle.AddKeyItem(key); + } + } + + // Token: 0x0600044A RID: 1098 RVA: 0x0001C484 File Offset: 0x0001A684 + private void InsertStyleItem() + { + if (listAllStyleItem.SelectedItem != null) + { + var cstyleItem = (CStyleItem)((CStyleItem)listAllStyleItem.SelectedItem).Clone(); + if (cstyleItem.IsSetting) + { + cstyleItem.StyleItemSetting(); + } + if (listStyleItem.SelectedIndex == -1) + { + listStyleItem.Items.Add(cstyleItem); + listStyleItem.SelectedIndex = listStyleItem.Items.Count - 1; + return; + } + listStyleItem.Items.Insert(listStyleItem.SelectedIndex + 1, cstyleItem); + listStyleItem.SelectedIndex++; + } + } + + // Token: 0x0600044B RID: 1099 RVA: 0x0001C539 File Offset: 0x0001A739 + private void listStyleItem_DoubleClick(object sender, EventArgs e) + { + if (listStyleItem.SelectedItem != null) + { + ((CStyleItem)listStyleItem.SelectedItem).StyleItemSetting(); + } + } + + // Token: 0x0600044C RID: 1100 RVA: 0x0001C560 File Offset: 0x0001A760 + private void btnItemUp_Click(object sender, EventArgs e) + { + if (listStyleItem.SelectedItem != null && listStyleItem.SelectedIndex > 0) + { + var selectedIndex = listStyleItem.SelectedIndex; + var value = (CStyleItem)listStyleItem.SelectedItem; + listStyleItem.Items[selectedIndex] = listStyleItem.Items[selectedIndex - 1]; + listStyleItem.Items[selectedIndex - 1] = value; + listStyleItem.SelectedIndex = selectedIndex - 1; + } + } + + // Token: 0x0600044D RID: 1101 RVA: 0x0001C5EC File Offset: 0x0001A7EC + private void btnItemDown_Click(object sender, EventArgs e) + { + if (listStyleItem.SelectedItem != null && listStyleItem.SelectedIndex + 1 < listStyleItem.Items.Count) + { + var selectedIndex = listStyleItem.SelectedIndex; + var value = (CStyleItem)listStyleItem.SelectedItem; + listStyleItem.Items[selectedIndex] = listStyleItem.Items[selectedIndex + 1]; + listStyleItem.Items[selectedIndex + 1] = value; + listStyleItem.SelectedIndex = selectedIndex + 1; + } + } + + // Token: 0x0600044E RID: 1102 RVA: 0x0001C68C File Offset: 0x0001A88C + private void btnKeyEntry_Click(object sender, EventArgs e) + { + if (hotkey.Hotkey != Keys.None) + { + var item = new KeyItem(hotkey.Hotkey); + listKeys.Items.Add(item); + toolTip1.Hide(label5); + } + } + + // Token: 0x0600044F RID: 1103 RVA: 0x0001C6DA File Offset: 0x0001A8DA + private void btnKeyDelete_Click(object sender, EventArgs e) + { + if (listKeys.SelectedIndex >= 0) + { + listKeys.Items.RemoveAt(listKeys.SelectedIndex); + } + } + + // Token: 0x06000450 RID: 1104 RVA: 0x0001C705 File Offset: 0x0001A905 + private void StyleEditForm_Shown(object sender, EventArgs e) + { + txtStyleName.Focus(); + } + + // Token: 0x06000451 RID: 1105 RVA: 0x0001C713 File Offset: 0x0001A913 + private void hotkey_KeyPress(object sender, KeyPressEventArgs e) + { + } + + // Token: 0x06000452 RID: 1106 RVA: 0x0001C715 File Offset: 0x0001A915 + private void listAllStyleItem_Click(object sender, EventArgs e) + { + var setunaListBox = (SetunaListBox)sender; + } + + // Token: 0x06000453 RID: 1107 RVA: 0x0001C71E File Offset: 0x0001A91E + private void hotkey_Validated(object sender, EventArgs e) + { + } + + // Token: 0x06000454 RID: 1108 RVA: 0x0001C720 File Offset: 0x0001A920 + private void hotkey_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) + { + } + + // Token: 0x06000455 RID: 1109 RVA: 0x0001C722 File Offset: 0x0001A922 + private void hotkey_KeyDown(object sender, KeyEventArgs e) + { + } + + // Token: 0x06000456 RID: 1110 RVA: 0x0001C724 File Offset: 0x0001A924 + private void hotkey_KeyUp(object sender, KeyEventArgs e) + { + toolTip1.Active = false; + if (cmKey != e.KeyData) + { + cmKey = e.KeyData; + var keys = hotkey.Hotkey; + if (keys != Keys.None) + { + var keyItem = _keybook.FindKeyItem(keys); + if (keyItem != null) + { + var text = "「登记」,然后按目前的分配方式。"; + hotkey.PointToScreen(new Point(0, 0)); + toolTip1.Active = true; + toolTip1.ToolTipTitle = "「" + keyItem.ParentStyle.StyleName + "」被分配。"; + toolTip1.Show(text, label5); + } + } + } + } + + // Token: 0x06000457 RID: 1111 RVA: 0x0001C7D5 File Offset: 0x0001A9D5 + private void txtStyleName_TextChanged(object sender, EventArgs e) + { + btnOk.Enabled = (txtStyleName.TextLength > 0); + } + + // Token: 0x0400029A RID: 666 + protected CStyle _trgStyle; + + // Token: 0x0400029B RID: 667 + protected KeyItemBook _keybook; + + // Token: 0x0400029C RID: 668 + private Keys cmKey; + } +} diff --git a/SETUNA/Main/Option/StyleEditForm.resx b/SETUNA/Main/Option/StyleEditForm.resx new file mode 100644 index 0000000..214f650 --- /dev/null +++ b/SETUNA/Main/Option/StyleEditForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 118, 17 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/RGBColor.cs b/SETUNA/Main/RGBColor.cs new file mode 100644 index 0000000..d74a046 --- /dev/null +++ b/SETUNA/Main/RGBColor.cs @@ -0,0 +1,66 @@ +using System.Drawing; + +namespace SETUNA.Main +{ + // Token: 0x0200005C RID: 92 + public struct RGBColor + { + // Token: 0x06000334 RID: 820 RVA: 0x000155E5 File Offset: 0x000137E5 + public RGBColor(byte red, byte green, byte blue) + { + _red = red; + _green = green; + _blue = blue; + } + + // Token: 0x06000335 RID: 821 RVA: 0x000155FC File Offset: 0x000137FC + public RGBColor(Color color) + { + _red = color.R; + _green = color.G; + _blue = color.B; + } + + // Token: 0x1700007A RID: 122 + // (get) Token: 0x06000337 RID: 823 RVA: 0x0001562E File Offset: 0x0001382E + // (set) Token: 0x06000336 RID: 822 RVA: 0x00015625 File Offset: 0x00013825 + public byte R + { + get => _red; + set => _red = value; + } + + // Token: 0x1700007B RID: 123 + // (get) Token: 0x06000339 RID: 825 RVA: 0x0001563F File Offset: 0x0001383F + // (set) Token: 0x06000338 RID: 824 RVA: 0x00015636 File Offset: 0x00013836 + public byte G + { + get => _green; + set => _green = value; + } + + // Token: 0x1700007C RID: 124 + // (get) Token: 0x0600033B RID: 827 RVA: 0x00015650 File Offset: 0x00013850 + // (set) Token: 0x0600033A RID: 826 RVA: 0x00015647 File Offset: 0x00013847 + public byte B + { + get => _green; + set => _green = value; + } + + // Token: 0x0600033C RID: 828 RVA: 0x00015658 File Offset: 0x00013858 + public Color GetColor() + { + return Color.FromArgb(R, G, B); + } + + // Token: 0x040001D6 RID: 470 + private byte _red; + + // Token: 0x040001D7 RID: 471 + private byte _green; + + // Token: 0x040001D8 RID: 472 + private byte _blue; + } +} diff --git a/SETUNA/Main/ScrapBase.Designer.cs b/SETUNA/Main/ScrapBase.Designer.cs new file mode 100644 index 0000000..c55f323 --- /dev/null +++ b/SETUNA/Main/ScrapBase.Designer.cs @@ -0,0 +1,58 @@ +namespace SETUNA.Main +{ + // Token: 0x02000008 RID: 8 + sealed partial class ScrapBase + { + // Token: 0x06000053 RID: 83 RVA: 0x000037E4 File Offset: 0x000019E4 + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.timOpacity = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // timOpacity + // + this.timOpacity.Interval = 15; + this.timOpacity.Tick += new System.EventHandler(this.timOpacity_Tick); + // + // ScrapBase + // + this.AllowDrop = true; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.AutoSize = true; + this.BackColor = System.Drawing.Color.Gray; + this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.ClientSize = new System.Drawing.Size(292, 266); + this.DoubleBuffered = true; + this.ForeColor = System.Drawing.SystemColors.ControlText; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.MaximizeBox = false; + this.MinimumSize = new System.Drawing.Size(1, 1); + this.Name = "ScrapBase"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.TopMost = true; + this.Activated += new System.EventHandler(this.ScrapBase_Activated); + this.Deactivate += new System.EventHandler(this.ScrapBase_Deactivate); + this.SizeChanged += new System.EventHandler(this.ScrapBase_SizeChanged); + this.DragDrop += new System.Windows.Forms.DragEventHandler(this.ScrapBase_DragDrop); + this.DragEnter += new System.Windows.Forms.DragEventHandler(this.ScrapBase_DragEnter); + this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ScrapBase_KeyPress); + this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.ScrapBase_MouseClick); + this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.ScrapBase_MouseDoubleClick); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pnlImg_MouseDown); + this.MouseEnter += new System.EventHandler(this.ScrapBase_MouseEnter); + this.MouseLeave += new System.EventHandler(this.ScrapBase_MouseLeave); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pnlImg_MouseMove); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pnlImg_MouseUp); + this.ResumeLayout(false); + + } + + // Token: 0x0400002D RID: 45 + private global::System.Windows.Forms.Timer timOpacity; + + // Token: 0x0400002E RID: 46 + private global::System.ComponentModel.IContainer components; + } +} diff --git a/SETUNA/Main/ScrapBase.cs b/SETUNA/Main/ScrapBase.cs new file mode 100644 index 0000000..8a78074 --- /dev/null +++ b/SETUNA/Main/ScrapBase.cs @@ -0,0 +1,1061 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Linq; +using System.Runtime.InteropServices; +using System.Windows.Forms; +using SETUNA.Main.Style; +using SETUNA.Main.StyleItems; + +namespace SETUNA.Main +{ + // Token: 0x02000008 RID: 8 + public sealed partial class ScrapBase : BaseForm + { + // Token: 0x14000001 RID: 1 + // (add) Token: 0x06000037 RID: 55 RVA: 0x00003461 File Offset: 0x00001661 + // (remove) Token: 0x06000038 RID: 56 RVA: 0x0000347A File Offset: 0x0000167A + public event ScrapBase.ScrapEventHandler ScrapCloseEvent; + + // Token: 0x14000002 RID: 2 + // (add) Token: 0x06000039 RID: 57 RVA: 0x00003493 File Offset: 0x00001693 + // (remove) Token: 0x0600003A RID: 58 RVA: 0x000034AC File Offset: 0x000016AC + public event ScrapBase.ScrapEventHandler ScrapCreateEvent; + + // Token: 0x14000003 RID: 3 + // (add) Token: 0x0600003B RID: 59 RVA: 0x000034C5 File Offset: 0x000016C5 + // (remove) Token: 0x0600003C RID: 60 RVA: 0x000034DE File Offset: 0x000016DE + public event ScrapBase.ScrapEventHandler ScrapActiveEvent; + + // Token: 0x14000004 RID: 4 + // (add) Token: 0x0600003D RID: 61 RVA: 0x000034F7 File Offset: 0x000016F7 + // (remove) Token: 0x0600003E RID: 62 RVA: 0x00003510 File Offset: 0x00001710 + public event ScrapBase.ScrapEventHandler ScrapInactiveEvent; + + // Token: 0x14000005 RID: 5 + // (add) Token: 0x0600003F RID: 63 RVA: 0x00003529 File Offset: 0x00001729 + // (remove) Token: 0x06000040 RID: 64 RVA: 0x00003542 File Offset: 0x00001742 + public event ScrapBase.ScrapEventHandler ScrapInactiveEnterEvent; + + // Token: 0x14000006 RID: 6 + // (add) Token: 0x06000041 RID: 65 RVA: 0x0000355B File Offset: 0x0000175B + // (remove) Token: 0x06000042 RID: 66 RVA: 0x00003574 File Offset: 0x00001774 + public event ScrapBase.ScrapEventHandler ScrapInactiveOutEvent; + + // Token: 0x14000007 RID: 7 + // (add) Token: 0x06000043 RID: 67 RVA: 0x0000358D File Offset: 0x0000178D + // (remove) Token: 0x06000044 RID: 68 RVA: 0x000035A6 File Offset: 0x000017A6 + public event ScrapBase.ScrapSubMenuHandler ScrapSubMenuOpening; + + public event ScrapBase.ScrapEventHandler ScrapLocationChangedEvent; + + public event ScrapBase.ScrapEventHandler ScrapImageChangedEvent; + + public event ScrapBase.ScrapEventHandler ScrapStyleAppliedEvent; + + public event ScrapBase.ScrapEventHandler ScrapStyleRemovedEvent; + + + // Token: 0x1700000C RID: 12 + // (get) Token: 0x06000046 RID: 70 RVA: 0x000035DC File Offset: 0x000017DC + // (set) Token: 0x06000045 RID: 69 RVA: 0x000035BF File Offset: 0x000017BF + public double ActiveOpacity + { + get => _activeOpacity; + set + { + _activeOpacity = value; + if (ActiveForm == this) + { + Opacity = _activeOpacity; + } + } + } + + // Token: 0x1700000D RID: 13 + // (get) Token: 0x06000048 RID: 72 RVA: 0x00003609 File Offset: 0x00001809 + // (set) Token: 0x06000047 RID: 71 RVA: 0x000035E4 File Offset: 0x000017E4 + public double InactiveOpacity + { + get => _inactiveOpacity; + set + { + _inactiveOpacity = value; + if (ActiveForm != this && !_isMouseEnter) + { + Opacity = _inactiveOpacity; + } + } + } + + // Token: 0x1700000E RID: 14 + // (get) Token: 0x0600004A RID: 74 RVA: 0x00003636 File Offset: 0x00001836 + // (set) Token: 0x06000049 RID: 73 RVA: 0x00003611 File Offset: 0x00001811 + public double RollOverOpacity + { + get => _rolloverOpacity; + set + { + _rolloverOpacity = value; + if (ActiveForm != this && _isMouseEnter) + { + Opacity = _rolloverOpacity; + } + } + } + + // Token: 0x1700000F RID: 15 + // (get) Token: 0x0600004C RID: 76 RVA: 0x00003658 File Offset: 0x00001858 + // (set) Token: 0x0600004B RID: 75 RVA: 0x0000363E File Offset: 0x0000183E + public int ActiveMargin + { + get => _activeMargin; + set + { + _activeMargin = value; + Padding = new Padding(_activeMargin); + } + } + + // Token: 0x17000010 RID: 16 + // (get) Token: 0x0600004E RID: 78 RVA: 0x0000368A File Offset: 0x0000188A + // (set) Token: 0x0600004D RID: 77 RVA: 0x00003660 File Offset: 0x00001860 + public int InactiveMargin + { + get => _inactiveMargin; + set + { + _inactiveMargin = value; + if (ActiveForm != this && !_isMouseEnter) + { + Padding = new Padding(_inactiveMargin); + } + } + } + + // Token: 0x17000011 RID: 17 + // (get) Token: 0x06000050 RID: 80 RVA: 0x000036BC File Offset: 0x000018BC + // (set) Token: 0x0600004F RID: 79 RVA: 0x00003692 File Offset: 0x00001892 + public int RollOverMargin + { + get => _rolloverMargin; + set + { + _rolloverMargin = value; + if (ActiveForm != this && _isMouseEnter) + { + Padding = new Padding(_rolloverMargin); + } + } + } + + // Token: 0x06000051 RID: 81 RVA: 0x000036C4 File Offset: 0x000018C4 + public ScrapBase() + { + InitializeComponent(); + base.KeyPreview = true; + closePrepare = false; + _dragmode = false; + _scale = 100; + _opacity = base.Opacity; + _blTargetSet = false; + _ptTarget = default(Point); + _solidframe = true; + _inactiveOpacity = Opacity; + _activeOpacity = Opacity; + _rolloverOpacity = Opacity; + DateTime = System.DateTime.Now; + Name = DateTime.ToCustomString(); + _interpolationmode = InterpolationMode.HighQualityBicubic; + } + + // Token: 0x06000052 RID: 82 RVA: 0x000037B8 File Offset: 0x000019B8 + ~ScrapBase() + { + ImageAllDispose(); + } + + // Token: 0x06000054 RID: 84 RVA: 0x000039BE File Offset: 0x00001BBE + private void ImageAllDispose() + { + ImageDispose(ref imgView); + } + + // Token: 0x17000012 RID: 18 + // (get) Token: 0x06000056 RID: 86 RVA: 0x000039EF File Offset: 0x00001BEF + // (set) Token: 0x06000055 RID: 85 RVA: 0x000039CC File Offset: 0x00001BCC + public new double Opacity + { + get => _opacity; + set + { + _opacity = value; + if (_opacity != base.Opacity) + { + timOpacity.Enabled = true; + } + } + } + + // Token: 0x17000013 RID: 19 + // (get) Token: 0x06000058 RID: 88 RVA: 0x00003A00 File Offset: 0x00001C00 + // (set) Token: 0x06000057 RID: 87 RVA: 0x000039F7 File Offset: 0x00001BF7 + public bool SolidFrame + { + get => _solidframe; + set => _solidframe = value; + } + + // Token: 0x06000059 RID: 89 + [DllImport("user32.dll")] + private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); + + // Token: 0x0600005A RID: 90 + [DllImport("user32.dll")] + private static extern int GetWindowLong(IntPtr hWnd, int nIndex); + + // Token: 0x0600005B RID: 91 RVA: 0x00003A08 File Offset: 0x00001C08 + private void timOpacity_Tick(object sender, EventArgs e) + { + try + { + if (base.Opacity != _opacity) + { + if (_err_opac) + { + try + { + _opacity = 1.0; + base.Opacity = 1.0; + goto IL_166; + } + catch + { + Console.WriteLine("ScrapBase timOpacity_Tick Exception2:---"); + goto IL_166; + } + } + var num = base.Opacity - _opacity; + if (Math.Abs(num) < 0.10000000149011612) + { + try + { + if (base.Opacity != _opacity) + { + base.Opacity = _opacity; + } + goto IL_166; + } + catch (Win32Exception ex) + { + timOpacity.Stop(); + _err_opac = true; + Opacity = 1.0; + Console.WriteLine("ScrapBase timOpacity_Tick Exception: " + ex.Message + ", Opaque True"); + goto IL_166; + } + catch (Exception ex2) + { + Console.WriteLine(string.Concat(new string[] + { + "ScrapBase timOpacity_Tick Exception: ", + ex2.Message, + ", ", + base.Opacity.ToString(), + ", ", + _opacity.ToString() + })); + goto IL_166; + } + } + if (num < 0.0) + { + base.Opacity += 0.10000000149011612; + } + else + { + base.Opacity -= 0.10000000149011612; + } + } + IL_166: + if (_blTargetSet) + { + var num2 = base.Top - _ptTarget.Y; + int num3; + if (num2 > 0) + { + num3 = -(Math.Abs(num2) / 3); + } + else + { + num3 = Math.Abs(num2) / 3; + } + if (num3 == 0) + { + base.Top = _ptTarget.Y; + } + else + { + base.Top += num3; + } + var num4 = base.Left - _ptTarget.X; + int num5; + if (num4 > 0) + { + num5 = -(Math.Abs(num4) / 2); + } + else + { + num5 = Math.Abs(num4) / 2; + } + if (num5 == 0) + { + base.Left = _ptTarget.X; + } + else + { + base.Left += num5; + } + if (base.Top == _ptTarget.Y && base.Left == _ptTarget.X) + { + _blTargetSet = false; + } + else + { + Refresh(); + } + } + if (base.Opacity == _opacity && !_blTargetSet) + { + timOpacity.Enabled = false; + } + } + catch (Exception ex3) + { + Console.WriteLine("ScrapBase timOpacity_Tick Exception:" + ex3.Message); + } + } + + // Token: 0x17000014 RID: 20 + // (get) Token: 0x0600005D RID: 93 RVA: 0x00003D3B File Offset: 0x00001F3B + // (set) Token: 0x0600005C RID: 92 RVA: 0x00003D0C File Offset: 0x00001F0C + public Point TargetLocation + { + get + { + if (_blTargetSet) + { + return _ptTarget; + } + return base.Location; + } + set + { + _ptTarget = value; + if (_ptTarget != base.Location) + { + _blTargetSet = true; + timOpacity.Enabled = true; + } + } + } + + // Token: 0x0600005E RID: 94 RVA: 0x00003D52 File Offset: 0x00001F52 + private void ImageDispose(ref Image img) + { + if (img != null) + { + img.Dispose(); + img = null; + } + } + + // Token: 0x0600005F RID: 95 RVA: 0x00003D62 File Offset: 0x00001F62 + private void ScrapBase_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == Convert.ToChar(Keys.Escape)) + { + base.Close(); + } + } + + // Token: 0x17000015 RID: 21 + // (get) Token: 0x06000061 RID: 97 RVA: 0x00003DBB File Offset: 0x00001FBB + // (set) Token: 0x06000060 RID: 96 RVA: 0x00003D7E File Offset: 0x00001F7E + public Image Image + { + get => imgView; + set + { + ImageAllDispose(); + imgView = (Image)value.Clone(); + if (imgView == null) + { + Console.WriteLine("ScrapBase Image : unll"); + } + Scale = Scale; + Refresh(); + + if (ScrapImageChangedEvent != null) + { + ScrapImageChangedEvent(this, new ScrapEventArgs(this)); + } + } + } + + // Token: 0x06000062 RID: 98 RVA: 0x00003DC4 File Offset: 0x00001FC4 + public Image GetViewImage() + { + var bitmap = new Bitmap(base.Width, base.Height, PixelFormat.Format24bppRgb); + base.DrawToBitmap(bitmap, new Rectangle(0, 0, base.Width, base.Height)); + return bitmap; + } + + // Token: 0x06000063 RID: 99 RVA: 0x00003E04 File Offset: 0x00002004 + public Image GetThumbnail() + { + var bitmap = new Bitmap(230, 150, PixelFormat.Format24bppRgb); + var graphics = Graphics.FromImage(bitmap); + graphics.FillRectangle(Brushes.DarkGray, 0, 0, bitmap.Width, bitmap.Height); + if (imgView.Width <= bitmap.Width - 1 || imgView.Height <= bitmap.Height - 1) + { + graphics.DrawImageUnscaled(imgView, 1, 1); + } + else + { + var size = new Size(imgView.Width - 1, imgView.Height - 1); + double num; + if (size.Width - bitmap.Width - 1 <= size.Height - bitmap.Height - 1) + { + num = (bitmap.Width - 1) / (double)(size.Width - 1); + } + else + { + num = (bitmap.Height - 1) / (double)(size.Height - 1); + } + size.Width = (int)(size.Width * num); + size.Height = (int)(size.Height * num); + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; + graphics.DrawImage(imgView, 1, 1, size.Width, size.Height); + } + graphics.DrawRectangle(Pens.Black, 0, 0, bitmap.Width - 1, bitmap.Height - 1); + return bitmap; + } + + // Token: 0x06000064 RID: 100 RVA: 0x00003F58 File Offset: 0x00002158 + public void ScrapResize() + { + base.Width = imgView.Width + (Padding.Left + Padding.Right); + base.Height = imgView.Height + (Padding.Top + Padding.Bottom); + } + + // Token: 0x06000065 RID: 101 RVA: 0x00003FC4 File Offset: 0x000021C4 + protected override void OnPaint(PaintEventArgs e) + { + //var width = (int)(imgView.Width * (_scale / 100f)); + //var height = (int)(imgView.Height * (_scale / 100f)); + var all = Padding.All; + e.Graphics.InterpolationMode = _interpolationmode; + //e.Graphics.DrawImage(imgView, all, all, width, height); + e.Graphics.DrawImage(imgView, all, all, Width - all * 2, Height - all * 2); + if (!_solidframe) + { + var pen = new Pen(Color.FromArgb(243, 243, 243)); + e.Graphics.DrawLine(pen, 0, 0, Width, 0); + e.Graphics.DrawLine(pen, 0, 0, 0, Height); + pen.Dispose(); + } + } + + // Token: 0x17000016 RID: 22 + // (get) Token: 0x06000067 RID: 103 RVA: 0x0000409C File Offset: 0x0000229C + // (set) Token: 0x06000066 RID: 102 RVA: 0x00004093 File Offset: 0x00002293 + public InterpolationMode InterpolationMode + { + get => _interpolationmode; + set => _interpolationmode = value; + } + + // Token: 0x17000017 RID: 23 + // (get) Token: 0x06000069 RID: 105 RVA: 0x0000416A File Offset: 0x0000236A + // (set) Token: 0x06000068 RID: 104 RVA: 0x000040A4 File Offset: 0x000022A4 + public new Padding Padding + { + get => base.Padding; + set + { + base.Padding = value; + + var x = Left - value.All; + var y = Top - value.All; + var num = (int)(imgView.Width * (_scale / 100f)) + value.All * 2; + var num2 = (int)(imgView.Height * (_scale / 100f)) + value.All * 2; + SetBoundsCore(x, y, num, num2, BoundsSpecified.Location); + base.ClientSize = new Size(num, num2); + } + } + + // Token: 0x0600006A RID: 106 RVA: 0x00004174 File Offset: 0x00002374 + protected override void OnFormClosing(FormClosingEventArgs e) + { + if (e.CloseReason == CloseReason.ApplicationExitCall || e.CloseReason == CloseReason.TaskManagerClosing || e.CloseReason == CloseReason.WindowsShutDown) + { + Console.WriteLine("由系统结束"); + } + else if (!closePrepare) + { + e.Cancel = true; + OnScrapClose(new ScrapEventArgs(this)); + } + base.OnFormClosing(e); + } + + // Token: 0x0600006B RID: 107 RVA: 0x000041C9 File Offset: 0x000023C9 + protected override void OnClosed(EventArgs e) + { + ImageAllDispose(); + _applyFinished = null; + + base.OnClosed(e); + } + + // Token: 0x0600006C RID: 108 RVA: 0x000041D8 File Offset: 0x000023D8 + public void OnScrapClose(ScrapEventArgs e) + { + if (ScrapCloseEvent != null) + { + ScrapCloseEvent(this, e); + } + } + + // Token: 0x0600006D RID: 109 RVA: 0x000041EF File Offset: 0x000023EF + public void ScrapClose() + { + closePrepare = true; + base.Close(); + GC.Collect(); + } + + // Token: 0x17000018 RID: 24 + // (get) Token: 0x0600006F RID: 111 RVA: 0x0000425E File Offset: 0x0000245E + // (set) Token: 0x0600006E RID: 110 RVA: 0x00004204 File Offset: 0x00002404 + public ScrapBook Manager + { + get => _parent; + set + { + _parent = value; + if (ScrapCloseEvent == null) + { + ScrapCloseEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapCloseEvent, new ScrapBase.ScrapEventHandler(_parent.ScrapClose)); + base.KeyDown += _parent.OnKeyUp; + } + } + } + + // Token: 0x17000019 RID: 25 + // (get) Token: 0x06000071 RID: 113 RVA: 0x0000427B File Offset: 0x0000247B + // (set) Token: 0x06000070 RID: 112 RVA: 0x00004266 File Offset: 0x00002466 + public new string Name + { + get => _name; + set + { + _name = value; + Text = _name; + } + } + + // Token: 0x1700001A RID: 26 + // (get) Token: 0x06000073 RID: 115 RVA: 0x0000428C File Offset: 0x0000248C + // (set) Token: 0x06000072 RID: 114 RVA: 0x00004283 File Offset: 0x00002483 + public DateTime DateTime + { + get => _datetime; + set => _datetime = value; + } + + // Token: 0x1700001B RID: 27 + // (get) Token: 0x06000075 RID: 117 RVA: 0x00004342 File Offset: 0x00002542 + // (set) Token: 0x06000074 RID: 116 RVA: 0x00004294 File Offset: 0x00002494 + public new int Scale + { + get => _scale; + set + { + _scale = value; + if (_scale < -200) + { + _scale = -200; + } + if (_scale > 200) + { + _scale = 200; + } + base.Width = (int)(imgView.Width * (_scale / 100f)) + Padding.All * 2; + base.Height = (int)(imgView.Height * (_scale / 100f)) + Padding.All * 2; + Refresh(); + } + } + + public int StyleID => _styleID; + + public Point StyleClickPoint => _styleClickPoint; + + public Cache.CacheItem CacheItem + { + set => _cacheItem = value; + get => _cacheItem; + } + + public Form StyleForm { set; get; } + + // Token: 0x06000076 RID: 118 RVA: 0x0000434A File Offset: 0x0000254A + private void DragStart(Point pt) + { + _dragmode = true; + _dragpoint = pt; + _saveopacity = Opacity; + base.SuspendLayout(); + Opacity = 0.5; + base.ResumeLayout(); + } + + // Token: 0x06000077 RID: 119 RVA: 0x00004381 File Offset: 0x00002581 + private void DragEnd() + { + _dragmode = false; + base.SuspendLayout(); + Opacity = _saveopacity; + base.ResumeLayout(); + } + + // Token: 0x06000078 RID: 120 RVA: 0x000043A4 File Offset: 0x000025A4 + private void DragMove(Point pt) + { + if (_dragmode) + { + base.Left += pt.X - _dragpoint.X; + base.Top += pt.Y - _dragpoint.Y; + } + } + + // Token: 0x06000079 RID: 121 RVA: 0x000043F9 File Offset: 0x000025F9 + private void pnlImg_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + DragStart(e.Location); + } + } + + // Token: 0x0600007A RID: 122 RVA: 0x00004414 File Offset: 0x00002614 + private void pnlImg_MouseMove(object sender, MouseEventArgs e) + { + DragMove(e.Location); + } + + // Token: 0x0600007B RID: 123 RVA: 0x00004422 File Offset: 0x00002622 + private void pnlImg_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + DragEnd(); + } + } + + // Token: 0x0600007C RID: 124 RVA: 0x00004438 File Offset: 0x00002638 + public void addScrapStyleEvent(IScrapStyleListener listener) + { + ScrapCreateEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapCreateEvent, new ScrapBase.ScrapEventHandler(listener.ScrapCreated)); + ScrapActiveEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapActiveEvent, new ScrapBase.ScrapEventHandler(listener.ScrapActivated)); + ScrapInactiveEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapInactiveEvent, new ScrapBase.ScrapEventHandler(listener.ScrapInactived)); + ScrapInactiveEnterEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapInactiveEnterEvent, new ScrapBase.ScrapEventHandler(listener.ScrapInactiveMouseOver)); + ScrapInactiveOutEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapInactiveOutEvent, new ScrapBase.ScrapEventHandler(listener.ScrapInactiveMouseOut)); + } + + // Token: 0x0600007D RID: 125 RVA: 0x000044F4 File Offset: 0x000026F4 + public void OnScrapCreated() + { + if (ScrapCreateEvent != null) + { + ScrapCreateEvent(this, new ScrapEventArgs(this)); + } + } + + // Token: 0x0600007E RID: 126 RVA: 0x00004510 File Offset: 0x00002710 + private void ScrapBase_Activated(object sender, EventArgs e) + { + if (ScrapActiveEvent != null) + { + ScrapActiveEvent(sender, new ScrapEventArgs(this)); + } + + ActiveForm = this; + Opacity = ActiveOpacity; + } + + // Token: 0x0600007F RID: 127 RVA: 0x00004538 File Offset: 0x00002738 + private void ScrapBase_Deactivate(object sender, EventArgs e) + { + if (ScrapInactiveEvent != null) + { + ScrapInactiveEvent(sender, new ScrapEventArgs(this)); + } + if (!_isMouseEnter) + { + Opacity = InactiveOpacity; + } + } + + // Token: 0x06000080 RID: 128 RVA: 0x00004568 File Offset: 0x00002768 + private void ScrapBase_MouseEnter(object sender, EventArgs e) + { + _isMouseEnter = true; + if (!Focused && ScrapInactiveEnterEvent != null) + { + ScrapInactiveEnterEvent(sender, new ScrapEventArgs(this)); + } + if (ActiveForm != this) + { + Opacity = RollOverOpacity; + } + } + + // Token: 0x06000081 RID: 129 RVA: 0x000045A7 File Offset: 0x000027A7 + private void ScrapBase_MouseLeave(object sender, EventArgs e) + { + _isMouseEnter = false; + if (!Focused && ScrapInactiveOutEvent != null) + { + ScrapInactiveOutEvent(sender, new ScrapEventArgs(this)); + } + if (ActiveForm != this) + { + Opacity = InactiveOpacity; + } + } + + // Token: 0x06000082 RID: 130 RVA: 0x000045E6 File Offset: 0x000027E6 + public void addScrapMenuEvent(IScrapMenuListener listener) + { + ScrapSubMenuOpening = (ScrapBase.ScrapSubMenuHandler)Delegate.Combine(ScrapSubMenuOpening, new ScrapBase.ScrapSubMenuHandler(listener.ScrapMenuOpening)); + } + + public void addScrapLocationChangedEvent(IScrapLocationChangedListener listener) + { + ScrapLocationChangedEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapLocationChangedEvent, new ScrapBase.ScrapEventHandler(listener.ScrapLocationChanged)); + } + + public void fireScrapLocationChangedEvent() + { + if (ScrapLocationChangedEvent != null) + { + ScrapLocationChangedEvent(this, new ScrapEventArgs(this)); + } + } + + public void addScrapImageChangedEvent(IScrapImageChangedListener listener) + { + ScrapImageChangedEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapImageChangedEvent, new ScrapBase.ScrapEventHandler(listener.ScrapImageChanged)); + } + + public void addScrapStyleAppliedEvent(IScrapStyleAppliedListener listener) + { + ScrapStyleAppliedEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapStyleAppliedEvent, new ScrapBase.ScrapEventHandler(listener.ScrapStyleApplied)); + } + + public void addScrapStyleRemovedEvent(IScrapStyleRemovedListener listener) + { + ScrapStyleRemovedEvent = (ScrapBase.ScrapEventHandler)Delegate.Combine(ScrapStyleRemovedEvent, new ScrapBase.ScrapEventHandler(listener.ScrapStyleRemoved)); + } + + + // Token: 0x06000083 RID: 131 RVA: 0x0000460B File Offset: 0x0000280B + private void ScrapBase_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Right && ScrapSubMenuOpening != null) + { + ScrapSubMenuOpening(sender, new ScrapMenuArgs(this, null)); + } + } + + // Token: 0x1700001C RID: 28 + // (get) Token: 0x06000085 RID: 133 RVA: 0x00004664 File Offset: 0x00002864 + // (set) Token: 0x06000084 RID: 132 RVA: 0x00004635 File Offset: 0x00002835 + public new bool Visible + { + get => base.Visible; + set + { + if (!value && base.FormBorderStyle != FormBorderStyle.None) + { + base.ShowInTaskbar = false; + } + else if (value && base.FormBorderStyle != FormBorderStyle.None) + { + base.ShowInTaskbar = true; + } + base.Visible = value; + } + } + + // Token: 0x06000086 RID: 134 RVA: 0x0000466C File Offset: 0x0000286C + public new void SetBounds(int x, int y, int width, int height, BoundsSpecified specified) + { + SetBoundsCore(x, y, width, height, specified); + } + + public void ApplyStylesFromCache(CStyle style, Point clickpoint, Action applyFinished = null) + { + var styleItems = new List(style.Items); + styleItems.RemoveAll(x => !StyleItemDictionary.CanRestore(x.GetType())); + + _applyFinished = applyFinished; + ApplyStyles(style.StyleID, styleItems.ToArray(), clickpoint); + } + + // Token: 0x06000087 RID: 135 RVA: 0x0000467C File Offset: 0x0000287C + public void ApplyStyles(int styleID, CStyleItem[] styleItems, Point clickpoint) + { + if (IsStyleApply) + { + return; + } + _styleClickPoint = clickpoint; + IsStyleApply = true; + StyleAppliIndex = 0; + _styleID = styleID; + _styleItems = styleItems.ToList(); + if (StyleApplyTimer == null) + { + StyleApplyTimer = new Timer + { + Enabled = false + }; + StyleApplyTimer.Tick += ApplyStyleItem; + } + StyleApplyTimer.Interval = 1; + StyleApplyTimer.Start(); + } + + // Token: 0x06000088 RID: 136 RVA: 0x000046FC File Offset: 0x000028FC + public void ApplyStyleItem(object sender, EventArgs e) + { + StyleApplyTimer.Enabled = false; + if (StyleAppliIndex < _styleItems.Count) + { + var num = 1; + var scrapBase = this; + try + { + var cstyleItem = _styleItems[StyleAppliIndex]; + if (Initialized || (!Initialized && cstyleItem.IsInitApply)) + { + cstyleItem.Apply(ref scrapBase, out num, _styleClickPoint); + } + StyleAppliIndex++; + if (num <= 0) + { + num = 1; + } + StyleApplyTimer.Interval = num; + StyleApplyTimer.Enabled = true; + goto IL_AD; + } + catch (Exception ex) + { + Console.WriteLine("ScrapBase ApplyStyleItem Exception:" + ex.ToString()); + IsStyleApply = false; + goto IL_AD; + } + } + else + { + _applyFinished?.Invoke(); + _applyFinished = null; + + if (ScrapStyleAppliedEvent != null) + { + ScrapStyleAppliedEvent(this, new ScrapEventArgs(this)); + } + } + IsStyleApply = false; + IL_AD: + if (!IsStyleApply && !Initialized) + { + Initialized = true; + } + } + + public void RemoveStyle(Type styleItemType) + { + if (_styleItems.Count > 0) + { + _styleItems.RemoveAll(x => x.GetType() == styleItemType); + } + + if (_styleItems.Count == 0) + { + _styleID = 0; + _styleClickPoint = Point.Empty; + + if (ScrapStyleRemovedEvent != null) + { + ScrapStyleRemovedEvent(this, new ScrapEventArgs(this)); + } + } + } + + + // Token: 0x06000089 RID: 137 RVA: 0x000047E0 File Offset: 0x000029E0 + private void ScrapBase_MouseDoubleClick(object sender, MouseEventArgs e) + { + Manager.WClickStyle(this, e.Location); + } + + // Token: 0x0600008A RID: 138 RVA: 0x000047F4 File Offset: 0x000029F4 + private void ScrapBase_DragDrop(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(DataFormats.FileDrop)) + { + foreach (var path in (string[])e.Data.GetData(DataFormats.FileDrop)) + { + Manager.AddDragImageFileName(path); + } + } + } + + // Token: 0x0600008B RID: 139 RVA: 0x00004847 File Offset: 0x00002A47 + private void ScrapBase_DragEnter(object sender, DragEventArgs e) + { + if (Manager.IsImageDrag) + { + e.Effect = DragDropEffects.All; + } + } + + + protected override void OnLocationChanged(EventArgs e) + { + base.OnLocationChanged(e); + + if (ScrapLocationChangedEvent != null) + { + ScrapLocationChangedEvent(e, new ScrapEventArgs(this)); + } + } + + + // Token: 0x04000021 RID: 33 + private const int WS_EX_LAYERED = 524288; + + // Token: 0x04000022 RID: 34 + private const int GWL_EXSTYLE = -20; + + // Token: 0x04000023 RID: 35 + public ScrapBook _parent; + + // Token: 0x04000024 RID: 36 + private Image imgView; + + // Token: 0x04000025 RID: 37 + private bool closePrepare; + + // Token: 0x04000026 RID: 38 + private string _name; + + // Token: 0x04000027 RID: 39 + private DateTime _datetime; + + // Token: 0x04000028 RID: 40 + private int _scale; + + // Token: 0x04000029 RID: 41 + private bool _solidframe; + + // Token: 0x0400002A RID: 42 + private bool _dragmode; + + // Token: 0x0400002B RID: 43 + private Point _dragpoint; + + // Token: 0x0400002C RID: 44 + private double _saveopacity; + + // Token: 0x0400002F RID: 47 + private bool _blTargetSet; + + // Token: 0x04000030 RID: 48 + private Point _ptTarget; + + // Token: 0x04000031 RID: 49 + private Timer StyleApplyTimer; + + // Token: 0x04000032 RID: 50 + private int StyleAppliIndex; + + // Token: 0x04000033 RID: 51 + private int _styleID; + + private List _styleItems; + + // Token: 0x04000034 RID: 52 + private bool IsStyleApply; + + // Token: 0x04000035 RID: 53 + private Point _styleClickPoint = Point.Empty; + + // Token: 0x04000036 RID: 54 + public bool Initialized; + + // Token: 0x04000037 RID: 55 + private bool _err_opac; + + // Token: 0x0400003F RID: 63 + private double _opacity; + + // Token: 0x04000040 RID: 64 + private bool _isMouseEnter; + + // Token: 0x04000041 RID: 65 + private double _activeOpacity; + + // Token: 0x04000042 RID: 66 + private double _inactiveOpacity; + + // Token: 0x04000043 RID: 67 + private double _rolloverOpacity; + + // Token: 0x04000044 RID: 68 + private int _activeMargin; + + // Token: 0x04000045 RID: 69 + private int _inactiveMargin; + + // Token: 0x04000046 RID: 70 + private int _rolloverMargin; + + // Token: 0x04000047 RID: 71 + private InterpolationMode _interpolationmode; + + private Cache.CacheItem _cacheItem; + + private Action _applyFinished; + + // Token: 0x0200002B RID: 43 + // (Invoke) Token: 0x060001A6 RID: 422 + public delegate void ScrapEventHandler(object sender, ScrapEventArgs e); + + // Token: 0x0200002D RID: 45 + // (Invoke) Token: 0x060001AC RID: 428 + public delegate void ScrapSubMenuHandler(object sender, ScrapMenuArgs e); + + private void ScrapBase_SizeChanged(object sender, EventArgs e) + { + } + } +} diff --git a/SETUNA/Main/ScrapBase.resx b/SETUNA/Main/ScrapBase.resx new file mode 100644 index 0000000..531ecab --- /dev/null +++ b/SETUNA/Main/ScrapBase.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/ScrapBook.cs b/SETUNA/Main/ScrapBook.cs new file mode 100644 index 0000000..d2b64dc --- /dev/null +++ b/SETUNA/Main/ScrapBook.cs @@ -0,0 +1,360 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x0200002F RID: 47 + public class ScrapBook + { + // Token: 0x1700004C RID: 76 + // (get) Token: 0x060001B2 RID: 434 RVA: 0x00009A1A File Offset: 0x00007C1A + // (set) Token: 0x060001B1 RID: 433 RVA: 0x00009A11 File Offset: 0x00007C11 + public Queue DustBox + { + get => _dustbox; + set => _dustbox = value; + } + + // Token: 0x1700004D RID: 77 + // (get) Token: 0x060001B3 RID: 435 RVA: 0x00009A22 File Offset: 0x00007C22 + public ArrayList DustBoxArray => new ArrayList(_dustbox.ToArray()); + + // Token: 0x1700004E RID: 78 + // (get) Token: 0x060001B5 RID: 437 RVA: 0x00009A6F File Offset: 0x00007C6F + // (set) Token: 0x060001B4 RID: 436 RVA: 0x00009A34 File Offset: 0x00007C34 + public short DustBoxCapacity + { + get => _dustcap; + set + { + _dustcap = value; + while (_dustcap < _dustbox.Count) + { + var scrapBase = _dustbox.Dequeue(); + scrapBase.ScrapClose(); + } + } + } + + // Token: 0x1700004F RID: 79 + // (get) Token: 0x060001B6 RID: 438 RVA: 0x00009A77 File Offset: 0x00007C77 + public Mainform BindForm => _mainform; + + // Token: 0x14000013 RID: 19 + // (add) Token: 0x060001B7 RID: 439 RVA: 0x00009A7F File Offset: 0x00007C7F + // (remove) Token: 0x060001B8 RID: 440 RVA: 0x00009A98 File Offset: 0x00007C98 + public event ScrapBook.KeyPressHandler KeyPress; + + // Token: 0x14000014 RID: 20 + // (add) Token: 0x060001B9 RID: 441 RVA: 0x00009AB1 File Offset: 0x00007CB1 + // (remove) Token: 0x060001BA RID: 442 RVA: 0x00009ACA File Offset: 0x00007CCA + public event ScrapBook.ScrapAddedHandler ScrapAdded; + + // Token: 0x14000015 RID: 21 + // (add) Token: 0x060001BB RID: 443 RVA: 0x00009AE3 File Offset: 0x00007CE3 + // (remove) Token: 0x060001BC RID: 444 RVA: 0x00009AFC File Offset: 0x00007CFC + public event ScrapBook.ScrapRemovedHandler ScrapRemoved; + + // Token: 0x060001BD RID: 445 RVA: 0x00009B15 File Offset: 0x00007D15 + public ScrapBook(Mainform mainform) + { + _scraps = new ArrayList(); + _dustbox = null; + _dustcap = 0; + _mainform = mainform; + } + + // Token: 0x060001BE RID: 446 RVA: 0x00009B40 File Offset: 0x00007D40 + ~ScrapBook() + { + try + { + foreach (var obj in _scraps) + { + var scrapBase = (ScrapBase)obj; + scrapBase.ScrapClose(); + } + _scraps.Clear(); + EraseDustBox(); + } + finally + { + + } + } + + // Token: 0x060001BF RID: 447 RVA: 0x00009BC0 File Offset: 0x00007DC0 + public void EraseDustBox() + { + if (_dustbox != null) + { + foreach (var scrapBase in _dustbox) + { + scrapBase.ScrapClose(); + } + _dustbox.Clear(); + } + GC.Collect(); + } + + // Token: 0x060001C0 RID: 448 RVA: 0x00009C2C File Offset: 0x00007E2C + public IEnumerator GetEnumerator() + { + foreach (var obj in _scraps) + { + var scrap = (ScrapBase)obj; + yield return scrap; + } + yield break; + } + + // Token: 0x060001C1 RID: 449 RVA: 0x00009C48 File Offset: 0x00007E48 + public void AddScrap(Image img, int x, int y, int width, int height) + { + AddScrap(img, x, y, width, height, ""); + } + + // Token: 0x060001C2 RID: 450 RVA: 0x00009C5C File Offset: 0x00007E5C + public void AddScrap(Image img, int x, int y, int width, int height, string scrapname) + { + var scrapBase = new ScrapBase(); + if (scrapname != "") + { + scrapBase.Name = scrapname; + } + scrapBase.Image = img; + scrapBase.SetBounds(x, y, img.Width, img.Height, BoundsSpecified.All); + + AddScrapThenShow(scrapBase); + } + + public void AddScrapFromCache(Cache.CacheItem cacheItem, Action initFinished = null) + { + var image = cacheItem.ReadImage(); + var pos = cacheItem.Position; + var style = cacheItem.Style; + + var scrapBase = new ScrapBase + { + DateTime = cacheItem.CreateTime, + Name = cacheItem.CreateTime.ToCustomString(), + Image = image + }; + scrapBase.SetBounds(pos.X, pos.Y, image.Width, image.Height, BoundsSpecified.All); + + var cstyle = _mainform.optSetuna.FindStyle(style.ID); + if (cstyle != null) + { + scrapBase.ApplyStylesFromCache(cstyle, style.ClickPoint, initFinished); + } + + // 设置所有参数再设置缓存对象 + scrapBase.CacheItem = cacheItem; + + AddScrapThenShow(scrapBase); + + if (cstyle == null) + { + initFinished?.Invoke(); + } + } + + // Token: 0x060001C3 RID: 451 RVA: 0x00009CCD File Offset: 0x00007ECD + public void AddScrapThenShow(ScrapBase newScrap) + { + newScrap.addScrapStyleEvent(_mainform); + newScrap.addScrapMenuEvent(_mainform); + + newScrap.addScrapLocationChangedEvent(Cache.CacheManager.Instance); + newScrap.addScrapImageChangedEvent(Cache.CacheManager.Instance); + newScrap.addScrapStyleAppliedEvent(Cache.CacheManager.Instance); + newScrap.addScrapStyleRemovedEvent(Cache.CacheManager.Instance); + + newScrap.Manager = this; + _scraps.Add(newScrap); + newScrap.OnScrapCreated(); + if (ScrapAdded != null) + { + ScrapAdded(this, new ScrapEventArgs(newScrap)); + } + + newScrap.Refresh(); + newScrap.Show(); + } + + // Token: 0x060001C4 RID: 452 RVA: 0x00009D04 File Offset: 0x00007F04 + public ScrapBase GetDummyScrap() + { + return new ScrapBase + { + Manager = this + }; + } + + // Token: 0x060001C5 RID: 453 RVA: 0x00009D20 File Offset: 0x00007F20 + public void ScrapClose(object sender, ScrapEventArgs e) + { + var scrapBase = e.scrap; + _scraps.Remove(scrapBase); + if (_dustbox != null && _dustcap > 0) + { + if (_dustbox.Count == _dustcap) + { + var scrapBase2 = _dustbox.Dequeue(); + scrapBase2.ScrapClose(); + } + _dustbox.Enqueue(scrapBase); + scrapBase.Hide(); + } + else + { + scrapBase.ScrapClose(); + } + if (ScrapRemoved != null) + { + ScrapRemoved(this, e); + } + } + + // Token: 0x060001C6 RID: 454 RVA: 0x00009DAC File Offset: 0x00007FAC + public void ShowAllScrap() + { + foreach (var obj in _scraps) + { + var scrapBase = (ScrapBase)obj; + scrapBase.Show(); + } + } + + // Token: 0x060001C7 RID: 455 RVA: 0x00009E04 File Offset: 0x00008004 + public void HideAllScrap() + { + foreach (var obj in _scraps) + { + var scrapBase = (ScrapBase)obj; + scrapBase.Hide(); + } + } + + // Token: 0x060001C8 RID: 456 RVA: 0x00009E5C File Offset: 0x0000805C + public void CloseAllScrap() + { + foreach (var obj in _scraps) + { + var scrapBase = (ScrapBase)obj; + scrapBase.Close(); + } + } + + // Token: 0x17000050 RID: 80 + // (get) Token: 0x060001C9 RID: 457 RVA: 0x00009EB4 File Offset: 0x000080B4 + public int ScrapCount + { + get + { + if (_scraps == null) + { + return 0; + } + return _scraps.Count; + } + } + + // Token: 0x17000051 RID: 81 + // (get) Token: 0x060001CA RID: 458 RVA: 0x00009ECB File Offset: 0x000080CB + public int DustCount + { + get + { + if (_dustbox == null) + { + return 0; + } + return _dustbox.Count; + } + } + + // Token: 0x060001CB RID: 459 RVA: 0x00009EE4 File Offset: 0x000080E4 + public void OnKeyUp(object sender, KeyEventArgs e) + { + if (KeyPress != null) + { + var scrapKeyPressEventArgs = new ScrapKeyPressEventArgs + { + key = (e.KeyCode | e.Modifiers) + }; + Console.WriteLine(scrapKeyPressEventArgs.key.ToString()); + KeyPress(sender, scrapKeyPressEventArgs); + } + } + + // Token: 0x060001CC RID: 460 RVA: 0x00009F34 File Offset: 0x00008134 + public void addKeyPressListener(IScrapKeyPressEventListener listener) + { + KeyPress = (ScrapBook.KeyPressHandler)Delegate.Combine(KeyPress, new ScrapBook.KeyPressHandler(listener.ScrapKeyPress)); + } + + // Token: 0x060001CD RID: 461 RVA: 0x00009F59 File Offset: 0x00008159 + public void addScrapAddedListener(IScrapAddedListener listener) + { + ScrapAdded = (ScrapBook.ScrapAddedHandler)Delegate.Combine(ScrapAdded, new ScrapBook.ScrapAddedHandler(listener.ScrapAdded)); + } + + // Token: 0x060001CE RID: 462 RVA: 0x00009F7E File Offset: 0x0000817E + public void addScrapRemovedListener(IScrapRemovedListener listener) + { + ScrapRemoved = (ScrapBook.ScrapRemovedHandler)Delegate.Combine(ScrapRemoved, new ScrapBook.ScrapRemovedHandler(listener.ScrapRemoved)); + } + + // Token: 0x060001CF RID: 463 RVA: 0x00009FA4 File Offset: 0x000081A4 + public void WClickStyle(ScrapBase scrap, Point clickpoint) + { + var wclickStyleID = _mainform.optSetuna.Scrap.WClickStyleID; + if (wclickStyleID != 0) + { + var cstyle = _mainform.optSetuna.FindStyle(wclickStyleID); + if (cstyle != null) + { + cstyle.Apply(ref scrap, clickpoint); + } + } + } + + // Token: 0x060001D0 RID: 464 RVA: 0x00009FE8 File Offset: 0x000081E8 + public void AddDragImageFileName(string path) + { + _mainform.AddImageList(new ScrapSourcePath(path)); + } + + // Token: 0x17000052 RID: 82 + // (get) Token: 0x060001D1 RID: 465 RVA: 0x00009FFB File Offset: 0x000081FB + public bool IsImageDrag => _mainform.optSetuna.Scrap.ImageDrag; + + // Token: 0x040000CA RID: 202 + private Mainform _mainform; + + // Token: 0x040000CB RID: 203 + protected Queue _dustbox; + + // Token: 0x040000CC RID: 204 + protected short _dustcap; + + // Token: 0x040000D0 RID: 208 + protected ArrayList _scraps; + + // Token: 0x02000032 RID: 50 + // (Invoke) Token: 0x060001D9 RID: 473 + public delegate void KeyPressHandler(object sender, ScrapKeyPressEventArgs e); + + // Token: 0x02000034 RID: 52 + // (Invoke) Token: 0x060001DE RID: 478 + public delegate void ScrapAddedHandler(object sender, ScrapEventArgs e); + + // Token: 0x02000035 RID: 53 + // (Invoke) Token: 0x060001E2 RID: 482 + public delegate void ScrapRemovedHandler(object sender, ScrapEventArgs e); + } +} diff --git a/SETUNA/Main/ScrapEventArgs.cs b/SETUNA/Main/ScrapEventArgs.cs new file mode 100644 index 0000000..0c4bb79 --- /dev/null +++ b/SETUNA/Main/ScrapEventArgs.cs @@ -0,0 +1,22 @@ +using System; + +namespace SETUNA.Main +{ + // Token: 0x0200002C RID: 44 + public class ScrapEventArgs : EventArgs + { + // Token: 0x060001A9 RID: 425 RVA: 0x000099DC File Offset: 0x00007BDC + public ScrapEventArgs() + { + } + + // Token: 0x060001AA RID: 426 RVA: 0x000099E4 File Offset: 0x00007BE4 + public ScrapEventArgs(ScrapBase targetscrap) + { + scrap = targetscrap; + } + + // Token: 0x040000C7 RID: 199 + public ScrapBase scrap; + } +} diff --git a/SETUNA/Main/ScrapKeyPressEventArgs.cs b/SETUNA/Main/ScrapKeyPressEventArgs.cs new file mode 100644 index 0000000..4f4f467 --- /dev/null +++ b/SETUNA/Main/ScrapKeyPressEventArgs.cs @@ -0,0 +1,12 @@ +using System; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x02000033 RID: 51 + public class ScrapKeyPressEventArgs : EventArgs + { + // Token: 0x040000D1 RID: 209 + public Keys key; + } +} diff --git a/SETUNA/Main/ScrapMenuArgs.cs b/SETUNA/Main/ScrapMenuArgs.cs new file mode 100644 index 0000000..3f4f07b --- /dev/null +++ b/SETUNA/Main/ScrapMenuArgs.cs @@ -0,0 +1,27 @@ +using System; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x0200002E RID: 46 + public class ScrapMenuArgs : EventArgs + { + // Token: 0x060001AF RID: 431 RVA: 0x000099F3 File Offset: 0x00007BF3 + public ScrapMenuArgs() + { + } + + // Token: 0x060001B0 RID: 432 RVA: 0x000099FB File Offset: 0x00007BFB + public ScrapMenuArgs(ScrapBase targetscrap, ContextMenuStrip targetmenu) + { + scrap = targetscrap; + menu = targetmenu; + } + + // Token: 0x040000C8 RID: 200 + public ScrapBase scrap; + + // Token: 0x040000C9 RID: 201 + public ContextMenuStrip menu; + } +} diff --git a/SETUNA/Main/ScrapMenuItem.cs b/SETUNA/Main/ScrapMenuItem.cs new file mode 100644 index 0000000..13daf7e --- /dev/null +++ b/SETUNA/Main/ScrapMenuItem.cs @@ -0,0 +1,52 @@ +namespace SETUNA.Main +{ + // Token: 0x02000069 RID: 105 + public sealed class ScrapMenuItem + { + // Token: 0x1700008A RID: 138 + // (get) Token: 0x060003A1 RID: 929 RVA: 0x0001637C File Offset: 0x0001457C + // (set) Token: 0x060003A0 RID: 928 RVA: 0x00016373 File Offset: 0x00014573 + public ScrapMenuItem.ScrapMenuItemType ItemType + { + get => _itemtype; + set => _itemtype = value; + } + + // Token: 0x1700008B RID: 139 + // (get) Token: 0x060003A3 RID: 931 RVA: 0x0001638D File Offset: 0x0001458D + // (set) Token: 0x060003A2 RID: 930 RVA: 0x00016384 File Offset: 0x00014584 + public int ItemId + { + get => _itemid; + set => _itemid = value; + } + + // Token: 0x040001FB RID: 507 + private ScrapMenuItem.ScrapMenuItemType _itemtype; + + // Token: 0x040001FC RID: 508 + private int _itemid; + + // Token: 0x0200006A RID: 106 + public enum ScrapMenuItemType + { + // Token: 0x040001FE RID: 510 + Style, + // Token: 0x040001FF RID: 511 + Other + } + + // Token: 0x0200006B RID: 107 + public enum OtherItem + { + // Token: 0x04000201 RID: 513 + ScrapClose = -1, + // Token: 0x04000202 RID: 514 + AllHide = -2, + // Token: 0x04000203 RID: 515 + AllShow = -3, + // Token: 0x04000204 RID: 516 + Separator = -4 + } + } +} diff --git a/SETUNA/Main/ScrapSource.cs b/SETUNA/Main/ScrapSource.cs new file mode 100644 index 0000000..2c9cb51 --- /dev/null +++ b/SETUNA/Main/ScrapSource.cs @@ -0,0 +1,31 @@ +using System; +using System.Drawing; + +namespace SETUNA.Main +{ + // Token: 0x0200003F RID: 63 + public abstract class ScrapSource : IDisposable + { + // Token: 0x17000067 RID: 103 + // (get) Token: 0x06000263 RID: 611 RVA: 0x0000D1D0 File Offset: 0x0000B3D0 + public string Name => _name; + + // Token: 0x06000264 RID: 612 + public abstract Image GetImage(); + + // Token: 0x06000265 RID: 613 RVA: 0x0000D1D8 File Offset: 0x0000B3D8 + public virtual Point GetPosition() + { + return Point.Empty; + } + + // Token: 0x06000266 RID: 614 RVA: 0x0000D1DF File Offset: 0x0000B3DF + public virtual void Dispose() + { + Console.WriteLine("ScrapSource Dispose"); + } + + // Token: 0x04000110 RID: 272 + protected string _name; + } +} diff --git a/SETUNA/Main/ScrapSourceImage.cs b/SETUNA/Main/ScrapSourceImage.cs new file mode 100644 index 0000000..3cfa590 --- /dev/null +++ b/SETUNA/Main/ScrapSourceImage.cs @@ -0,0 +1,51 @@ +using System.Drawing; + +namespace SETUNA.Main +{ + // Token: 0x02000057 RID: 87 + public class ScrapSourceImage : ScrapSource + { + // Token: 0x06000320 RID: 800 RVA: 0x0001534C File Offset: 0x0001354C + public ScrapSourceImage(Image img) + { + this.img = (Image)img.Clone(); + position = Point.Empty; + } + + // Token: 0x06000321 RID: 801 RVA: 0x00015370 File Offset: 0x00013570 + public ScrapSourceImage(Image img, Point position) + { + this.img = (Image)img.Clone(); + this.position = position; + } + + // Token: 0x06000322 RID: 802 RVA: 0x00015390 File Offset: 0x00013590 + public override Image GetImage() + { + return img; + } + + // Token: 0x06000323 RID: 803 RVA: 0x00015398 File Offset: 0x00013598 + public override Point GetPosition() + { + return position; + } + + // Token: 0x06000324 RID: 804 RVA: 0x000153A0 File Offset: 0x000135A0 + public override void Dispose() + { + base.Dispose(); + if (img != null) + { + img.Dispose(); + img = null; + } + } + + // Token: 0x040001CC RID: 460 + private Image img; + + // Token: 0x040001CD RID: 461 + private Point position; + } +} diff --git a/SETUNA/Main/ScrapSourcePath.cs b/SETUNA/Main/ScrapSourcePath.cs new file mode 100644 index 0000000..41a7829 --- /dev/null +++ b/SETUNA/Main/ScrapSourcePath.cs @@ -0,0 +1,50 @@ +using System; +using System.Drawing; +using System.IO; + +namespace SETUNA.Main +{ + // Token: 0x0200003E RID: 62 + public class ScrapSourcePath : ScrapSource + { + // Token: 0x06000261 RID: 609 RVA: 0x0000D139 File Offset: 0x0000B339 + public ScrapSourcePath(string path) + { + this.path = path; + } + + // Token: 0x06000262 RID: 610 RVA: 0x0000D148 File Offset: 0x0000B348 + public override Image GetImage() + { + Image result = null; + FileStream fileStream = null; + try + { + if (File.Exists(path)) + { + try + { + fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); + result = Image.FromStream(fileStream); + _name = Path.GetFileNameWithoutExtension(path); + } + finally + { + if (fileStream != null) + { + fileStream.Close(); + } + } + } + } + catch + { + Console.WriteLine("ScrapSourcePath错误∶" + path); + } + return result; + } + + // Token: 0x0400010F RID: 271 + private string path; + } +} diff --git a/SETUNA/Main/SelLineType.cs b/SETUNA/Main/SelLineType.cs new file mode 100644 index 0000000..95f6d69 --- /dev/null +++ b/SETUNA/Main/SelLineType.cs @@ -0,0 +1,11 @@ +namespace SETUNA.Main +{ + // Token: 0x02000072 RID: 114 + public enum SelLineType + { + // Token: 0x04000217 RID: 535 + Vertical, + // Token: 0x04000218 RID: 536 + Horizon + } +} diff --git a/SETUNA/Main/SetunaListBox.cs b/SETUNA/Main/SetunaListBox.cs new file mode 100644 index 0000000..e582f62 --- /dev/null +++ b/SETUNA/Main/SetunaListBox.cs @@ -0,0 +1,232 @@ +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Text; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x02000080 RID: 128 + internal class SetunaListBox : ListBox + { + // Token: 0x170000A3 RID: 163 + // (get) Token: 0x0600042D RID: 1069 RVA: 0x0001A937 File Offset: 0x00018B37 + // (set) Token: 0x0600042C RID: 1068 RVA: 0x0001A92E File Offset: 0x00018B2E + [Description("アイテムの区切り線を表示するかどうかの値を取得または設定します。")] + [Browsable(true)] + public bool ItemLine { get; set; } + + // Token: 0x170000A4 RID: 164 + // (get) Token: 0x0600042F RID: 1071 RVA: 0x0001A948 File Offset: 0x00018B48 + // (set) Token: 0x0600042E RID: 1070 RVA: 0x0001A93F File Offset: 0x00018B3F + [Description("アイテムの区切り線の色を設定します。")] + public Color ItemLineColor { get; set; } + + // Token: 0x170000A5 RID: 165 + // (get) Token: 0x06000431 RID: 1073 RVA: 0x0001A959 File Offset: 0x00018B59 + // (set) Token: 0x06000430 RID: 1072 RVA: 0x0001A950 File Offset: 0x00018B50 + [Description("アイテムの左のスペースを指定します。")] + public int LeftSpace { get; set; } + + // Token: 0x06000432 RID: 1074 RVA: 0x0001A964 File Offset: 0x00018B64 + public SetunaListBox() + { + DrawMode = DrawMode.OwnerDrawFixed; + DoubleBuffered = true; + ItemHeight = 20; + Font = new Font(Font.FontFamily, 10f); + IsDrag = false; + _mouseDrag = default(Point); + _mouseLocate = default(Point); + _dragmove = false; + _delkeyitem = false; + LeftSpace = 2; + ItemLine = false; + ItemLineColor = Color.Gray; + } + + // Token: 0x170000A6 RID: 166 + // (get) Token: 0x06000433 RID: 1075 RVA: 0x0001A9EE File Offset: 0x00018BEE + // (set) Token: 0x06000434 RID: 1076 RVA: 0x0001A9F6 File Offset: 0x00018BF6 + [Browsable(true)] + [Description("アイテムをドラッグして並び替えが行えるかを取得、設定します。")] + public bool ItemDragMove + { + get => _dragmove; + set => _dragmove = value; + } + + // Token: 0x170000A7 RID: 167 + // (get) Token: 0x06000436 RID: 1078 RVA: 0x0001AA08 File Offset: 0x00018C08 + // (set) Token: 0x06000435 RID: 1077 RVA: 0x0001A9FF File Offset: 0x00018BFF + [Browsable(true)] + [Description("Deleteキーでアイテムの削除を行えるかを取得、設定します。")] + public bool ItemKeyDelete + { + get => _delkeyitem; + set => _delkeyitem = value; + } + + // Token: 0x06000437 RID: 1079 RVA: 0x0001AA10 File Offset: 0x00018C10 + protected override void OnDrawItem(DrawItemEventArgs e) + { + if (e.Index < 0) + { + return; + } + if (base.Items.Count <= 0) + { + return; + } + e.DrawBackground(); + var bounds = new Rectangle(e.Bounds.Location, e.Bounds.Size); + bounds.Y += 2; + bounds.X += LeftSpace; + bounds.Width -= bounds.X + 2; + if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) + { + if ((e.State & DrawItemState.Focus) != DrawItemState.Focus) + { + e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(239, 247, 252)), e.Bounds); + } + else if (IsDrag) + { + e.Graphics.FillRectangle(Brushes.Moccasin, e.Bounds); + } + else + { + e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(206, 230, 247)), e.Bounds); + } + } + var genericDefault = StringFormat.GenericDefault; + genericDefault.FormatFlags = StringFormatFlags.NoWrap; + if (ItemLine) + { + e.Graphics.DrawLine(new Pen(Color.AliceBlue), new Point(e.Bounds.Left - 1, e.Bounds.Top), new Point(e.Bounds.Right, e.Bounds.Top)); + e.Graphics.DrawLine(new Pen(ItemLineColor), new Point(e.Bounds.Left - 1, e.Bounds.Bottom - 1), new Point(e.Bounds.Right, e.Bounds.Bottom - 1)); + } + e.Graphics.PixelOffsetMode = PixelOffsetMode.Half; + e.Graphics.SmoothingMode = SmoothingMode.HighQuality; + e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias; + DrawItemString(e.Graphics, base.Items[e.Index], e.Font, Brushes.Black, bounds, genericDefault, e.Index); + } + + // Token: 0x06000438 RID: 1080 RVA: 0x0001AC59 File Offset: 0x00018E59 + protected virtual void DrawItemString(Graphics g, object item, Font font, Brush brush, Rectangle bounds, StringFormat sf, int index) + { + g.DrawString(item.ToString(), font, brush, bounds, sf); + } + + // Token: 0x06000439 RID: 1081 RVA: 0x0001AC74 File Offset: 0x00018E74 + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + if (e.Button == MouseButtons.Left && ItemDragMove) + { + if (base.IndexFromPoint(e.Location) >= 0) + { + _mouseDrag = new Point(e.X, e.Y); + return; + } + } + else + { + IsDrag = false; + _mouseDrag = Point.Empty; + } + } + + // Token: 0x0600043A RID: 1082 RVA: 0x0001ACD6 File Offset: 0x00018ED6 + protected override void OnMouseUp(MouseEventArgs e) + { + base.OnMouseUp(e); + IsDrag = false; + _mouseDrag = Point.Empty; + } + + // Token: 0x0600043B RID: 1083 RVA: 0x0001ACF4 File Offset: 0x00018EF4 + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + if (_mouseDrag != Point.Empty) + { + var rectangle = new Rectangle(_mouseDrag.X - SystemInformation.DragSize.Width / 2, _mouseDrag.Y - SystemInformation.DragSize.Height / 2, SystemInformation.DragSize.Width, SystemInformation.DragSize.Height); + if (!rectangle.Contains(e.X, e.Y)) + { + _idxDragItem = base.IndexFromPoint(_mouseDrag); + if (_idxDragItem < 0) + { + return; + } + _objDragItem = base.Items[_idxDragItem]; + IsDrag = true; + _mouseDrag = Point.Empty; + Cursor = Cursors.HSplit; + } + } + if (IsDrag) + { + var num = base.IndexFromPoint(e.Location); + if (num >= 0 && num != _idxDragItem) + { + base.BeginUpdate(); + base.Items.RemoveAt(_idxDragItem); + base.Items.Insert(num, _objDragItem); + SelectedIndex = num; + base.EndUpdate(); + _idxDragItem = num; + return; + } + } + else if (Cursor != Cursors.Default) + { + Cursor = Cursors.Default; + } + } + + // Token: 0x0600043C RID: 1084 RVA: 0x0001AE58 File Offset: 0x00019058 + protected override void OnKeyUp(KeyEventArgs e) + { + if (SelectedIndex >= 0 && !IsDrag && ItemKeyDelete && e.KeyCode == Keys.Delete) + { + var selectedIndex = SelectedIndex; + base.Items.RemoveAt(SelectedIndex); + if (selectedIndex < base.Items.Count) + { + SelectedIndex = selectedIndex; + return; + } + if (selectedIndex > 0) + { + SelectedIndex = selectedIndex - 1; + return; + } + } + else + { + base.OnKeyUp(e); + } + } + + // Token: 0x04000277 RID: 631 + protected bool IsDrag; + + // Token: 0x04000278 RID: 632 + protected Point _mouseDrag; + + // Token: 0x04000279 RID: 633 + protected Point _mouseLocate; + + // Token: 0x0400027A RID: 634 + protected int _idxDragItem; + + // Token: 0x0400027B RID: 635 + protected object _objDragItem; + + // Token: 0x0400027C RID: 636 + protected bool _dragmove; + + // Token: 0x0400027D RID: 637 + protected bool _delkeyitem; + } +} diff --git a/SETUNA/Main/SplashForm.Designer.cs b/SETUNA/Main/SplashForm.Designer.cs new file mode 100644 index 0000000..cb70b72 --- /dev/null +++ b/SETUNA/Main/SplashForm.Designer.cs @@ -0,0 +1,113 @@ +namespace SETUNA.Main +{ + // Token: 0x02000043 RID: 67 + partial class SplashForm + { + // Token: 0x06000271 RID: 625 RVA: 0x0000D215 File Offset: 0x0000B415 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x06000272 RID: 626 RVA: 0x0000D234 File Offset: 0x0000B434 + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.SplashTimer = new System.Windows.Forms.Timer(this.components); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.label1 = new System.Windows.Forms.Label(); + this.lblVer = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // SplashTimer + // + this.SplashTimer.Interval = 3000; + this.SplashTimer.Tick += new System.EventHandler(this.SplashTimer_Tick); + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox1.Image = global::SETUNA.Properties.Resources.Logo; + this.pictureBox1.InitialImage = null; + this.pictureBox1.Location = new System.Drawing.Point(-21, -12); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(0); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(551, 174); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Cursor = System.Windows.Forms.Cursors.Hand; + this.label1.ForeColor = System.Drawing.Color.Gray; + this.label1.Location = new System.Drawing.Point(108, 186); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(335, 15); + this.label1.TabIndex = 1; + this.label1.Text = "http://www.clearunit.com/clearup/setuna2/"; + // + // lblVer + // + this.lblVer.ForeColor = System.Drawing.Color.Gray; + this.lblVer.Location = new System.Drawing.Point(16, 161); + this.lblVer.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblVer.Name = "lblVer"; + this.lblVer.Size = new System.Drawing.Size(488, 22); + this.lblVer.TabIndex = 4; + this.lblVer.Text = "SETUNA 2.0α"; + this.lblVer.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // SplashForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(519, 205); + this.ControlBox = false; + this.Controls.Add(this.lblVer); + this.Controls.Add(this.label1); + this.Controls.Add(this.pictureBox1); + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SplashForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.TopMost = true; + this.Load += new System.EventHandler(this.SplashForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + // Token: 0x04000112 RID: 274 + private global::System.ComponentModel.IContainer components; + + // Token: 0x04000113 RID: 275 + private global::System.Windows.Forms.PictureBox pictureBox1; + + // Token: 0x04000114 RID: 276 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000115 RID: 277 + private global::System.Windows.Forms.Label lblVer; + + // Token: 0x04000116 RID: 278 + public global::System.Windows.Forms.Timer SplashTimer; + } +} diff --git a/SETUNA/Main/SplashForm.cs b/SETUNA/Main/SplashForm.cs new file mode 100644 index 0000000..fb0da55 --- /dev/null +++ b/SETUNA/Main/SplashForm.cs @@ -0,0 +1,36 @@ +using System; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x02000043 RID: 67 + public partial class SplashForm : BaseForm + { + // Token: 0x06000273 RID: 627 RVA: 0x0000D537 File Offset: 0x0000B737 + public SplashForm() + { + InitializeComponent(); + + lblVer.Text = base.ProductName + " " + Application.ProductVersion; + label1.Text = URLUtils.NewURL; + } + + // Token: 0x06000274 RID: 628 RVA: 0x0000D565 File Offset: 0x0000B765 + private void SplashForm_Load(object sender, EventArgs e) + { + } + + // Token: 0x06000275 RID: 629 RVA: 0x0000D567 File Offset: 0x0000B767 + private void SplashTimer_Tick(object sender, EventArgs e) + { + base.Close(); + } + + // Token: 0x06000276 RID: 630 RVA: 0x0000D56F File Offset: 0x0000B76F + private void pictureBox1_Click(object sender, EventArgs e) + { + SplashTimer.Enabled = false; + base.Close(); + } + } +} diff --git a/SETUNA/Main/SplashForm.resx b/SETUNA/Main/SplashForm.resx new file mode 100644 index 0000000..ad9cd2d --- /dev/null +++ b/SETUNA/Main/SplashForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/Startup/AutoStartup.cs b/SETUNA/Main/Startup/AutoStartup.cs new file mode 100644 index 0000000..67cf365 --- /dev/null +++ b/SETUNA/Main/Startup/AutoStartup.cs @@ -0,0 +1,80 @@ +using System; +using System.Windows.Forms; +using Microsoft.Win32; + +namespace SETUNA.Main.Startup +{ + internal static class AutoStartup + { + private static string Key = "SETUNA_AutoStartup"; + + public static bool Set(bool enabled) + { + var registryKey = GetRegistryKey(); + + try + { + if (enabled) + { + registryKey.SetValue(Key, Application.ExecutablePath.ToString()); + } + else + { + var value = registryKey.GetValue(Key, null); + if (value != null) + { + registryKey.DeleteValue(Key); + } + } + return true; + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString()); + return false; + } + finally + { + if (registryKey != null) + { + registryKey.Close(); + } + } + } + + public static bool IsSetup() + { + var registryKey = GetRegistryKey(); + + try + { + var valueNames = registryKey.GetValueNames(); + foreach (var item in valueNames) + { + if (item.Equals(Key, StringComparison.OrdinalIgnoreCase)) + { + return true; + } + } + return false; + } + catch (Exception ex) + { + Console.WriteLine(ex); + return false; + } + finally + { + if (registryKey != null) + { + registryKey.Close(); + } + } + } + + public static RegistryKey GetRegistryKey() + { + return Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true); + } + } +} diff --git a/SETUNA/Main/Style/CAllHideStyle.cs b/SETUNA/Main/Style/CAllHideStyle.cs new file mode 100644 index 0000000..62dbdaa --- /dev/null +++ b/SETUNA/Main/Style/CAllHideStyle.cs @@ -0,0 +1,22 @@ +namespace SETUNA.Main.Style +{ + // Token: 0x020000AE RID: 174 + public class CAllHideStyle : CPreStyle + { + // Token: 0x06000592 RID: 1426 RVA: 0x0002651D File Offset: 0x0002471D + public CAllHideStyle() + { + _styleid = -2; + _stylename = "全部隐藏"; + } + + // Token: 0x06000593 RID: 1427 RVA: 0x00026538 File Offset: 0x00024738 + public override void Apply(ref ScrapBase scrap) + { + if (scrap.Manager != null) + { + scrap.Manager.HideAllScrap(); + } + } + } +} diff --git a/SETUNA/Main/Style/CAllShowStyle.cs b/SETUNA/Main/Style/CAllShowStyle.cs new file mode 100644 index 0000000..39cb4c7 --- /dev/null +++ b/SETUNA/Main/Style/CAllShowStyle.cs @@ -0,0 +1,22 @@ +namespace SETUNA.Main.Style +{ + // Token: 0x020000AF RID: 175 + public class CAllShowStyle : CPreStyle + { + // Token: 0x06000594 RID: 1428 RVA: 0x0002654F File Offset: 0x0002474F + public CAllShowStyle() + { + _styleid = -3; + _stylename = "全部显示"; + } + + // Token: 0x06000595 RID: 1429 RVA: 0x0002656A File Offset: 0x0002476A + public override void Apply(ref ScrapBase scrap) + { + if (scrap.Manager != null) + { + scrap.Manager.ShowAllScrap(); + } + } + } +} diff --git a/SETUNA/Main/Style/CCaptureStyle.cs b/SETUNA/Main/Style/CCaptureStyle.cs new file mode 100644 index 0000000..3c7dc7d --- /dev/null +++ b/SETUNA/Main/Style/CCaptureStyle.cs @@ -0,0 +1,20 @@ +namespace SETUNA.Main.Style +{ + // Token: 0x0200004A RID: 74 + public class CCaptureStyle : CPreStyle + { + // Token: 0x060002C0 RID: 704 RVA: 0x0000F549 File Offset: 0x0000D749 + public CCaptureStyle() + { + _styleid = -9; + _stylename = "制作参考图"; + } + + // Token: 0x060002C1 RID: 705 RVA: 0x0000F564 File Offset: 0x0000D764 + public override void Apply(ref ScrapBase scrap) + { + var bindForm = scrap.Manager.BindForm; + bindForm.StartCapture(); + } + } +} diff --git a/SETUNA/Main/Style/CCloseStyle.cs b/SETUNA/Main/Style/CCloseStyle.cs new file mode 100644 index 0000000..ce859bf --- /dev/null +++ b/SETUNA/Main/Style/CCloseStyle.cs @@ -0,0 +1,23 @@ +using System.Drawing; +using SETUNA.Main.StyleItems; + +namespace SETUNA.Main.Style +{ + // Token: 0x02000085 RID: 133 + public class CCloseStyle : CPreStyle + { + // Token: 0x06000469 RID: 1129 RVA: 0x0001C9CC File Offset: 0x0001ABCC + public CCloseStyle() + { + _styleid = -1; + _stylename = "关闭"; + } + + // Token: 0x0600046A RID: 1130 RVA: 0x0001C9E8 File Offset: 0x0001ABE8 + public override void Apply(ref ScrapBase scrap) + { + var ccloseStyleItem = new CCloseStyleItem(); + ccloseStyleItem.Apply(ref scrap, Point.Empty); + } + } +} diff --git a/SETUNA/Main/Style/CDustBoxStyle.cs b/SETUNA/Main/Style/CDustBoxStyle.cs new file mode 100644 index 0000000..5c6135f --- /dev/null +++ b/SETUNA/Main/Style/CDustBoxStyle.cs @@ -0,0 +1,21 @@ +using System.Windows.Forms; + +namespace SETUNA.Main.Style +{ + // Token: 0x02000048 RID: 72 + public class CDustBoxStyle : CPreStyle + { + // Token: 0x060002BC RID: 700 RVA: 0x0000F4F7 File Offset: 0x0000D6F7 + public CDustBoxStyle() + { + _styleid = -7; + _stylename = "回收站"; + } + + // Token: 0x060002BD RID: 701 RVA: 0x0000F512 File Offset: 0x0000D712 + public override ToolStripItem GetToolStrip(ScrapBook scrapbook) + { + return new ToolStripDustboxList(base.GetDisplayName(), scrapbook); + } + } +} diff --git a/SETUNA/Main/Style/CDustEraseStyle.cs b/SETUNA/Main/Style/CDustEraseStyle.cs new file mode 100644 index 0000000..09bcb53 --- /dev/null +++ b/SETUNA/Main/Style/CDustEraseStyle.cs @@ -0,0 +1,19 @@ +namespace SETUNA.Main.Style +{ + // Token: 0x02000049 RID: 73 + public class CDustEraseStyle : CPreStyle + { + // Token: 0x060002BE RID: 702 RVA: 0x0000F520 File Offset: 0x0000D720 + public CDustEraseStyle() + { + _styleid = -8; + _stylename = "清空回收站"; + } + + // Token: 0x060002BF RID: 703 RVA: 0x0000F53B File Offset: 0x0000D73B + public override void Apply(ref ScrapBase scrap) + { + scrap.Manager.EraseDustBox(); + } + } +} diff --git a/SETUNA/Main/Style/COptionStyle.cs b/SETUNA/Main/Style/COptionStyle.cs new file mode 100644 index 0000000..3630cb3 --- /dev/null +++ b/SETUNA/Main/Style/COptionStyle.cs @@ -0,0 +1,20 @@ +namespace SETUNA.Main.Style +{ + // Token: 0x0200004C RID: 76 + public class COptionStyle : CPreStyle + { + // Token: 0x060002C4 RID: 708 RVA: 0x0000F5BA File Offset: 0x0000D7BA + public COptionStyle() + { + _styleid = -10; + _stylename = "选项"; + } + + // Token: 0x060002C5 RID: 709 RVA: 0x0000F5D8 File Offset: 0x0000D7D8 + public override void Apply(ref ScrapBase scrap) + { + var bindForm = scrap.Manager.BindForm; + bindForm.Option(); + } + } +} diff --git a/SETUNA/Main/Style/CPreStyle.cs b/SETUNA/Main/Style/CPreStyle.cs new file mode 100644 index 0000000..e02b803 --- /dev/null +++ b/SETUNA/Main/Style/CPreStyle.cs @@ -0,0 +1,17 @@ +namespace SETUNA.Main.Style +{ + // Token: 0x020000A0 RID: 160 + public abstract class CPreStyle : CStyle + { + // Token: 0x170000BA RID: 186 + // (get) Token: 0x06000539 RID: 1337 RVA: 0x0002469F File Offset: 0x0002289F + // (set) Token: 0x0600053A RID: 1338 RVA: 0x000246A7 File Offset: 0x000228A7 + public override int StyleID + { + get => _styleid; + set + { + } + } + } +} diff --git a/SETUNA/Main/Style/CPreStyles.cs b/SETUNA/Main/Style/CPreStyles.cs new file mode 100644 index 0000000..32e8dbc --- /dev/null +++ b/SETUNA/Main/Style/CPreStyles.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; + +namespace SETUNA.Main.Style +{ + // Token: 0x02000053 RID: 83 + public abstract class CPreStyles + { + // Token: 0x0600030D RID: 781 RVA: 0x00015104 File Offset: 0x00013304 + public static List GetPreStyleList() + { + return new List + { + new CCloseStyle(), + new CSeparatorStyle(), + new CShowVersionStyle(), + new CScrapListStyle(), + new CDustBoxStyle(), + new CDustEraseStyle(), + new CCaptureStyle(), + new COptionStyle(), + new CShutDownStyle() + }; + } + + // Token: 0x0600030E RID: 782 RVA: 0x0001517C File Offset: 0x0001337C + public static CStyle GetPreStyle(int style_id) + { + var preStyleList = CPreStyles.GetPreStyleList(); + foreach (var cstyle in preStyleList) + { + if (cstyle.StyleID == style_id) + { + return cstyle; + } + } + return null; + } + } +} diff --git a/SETUNA/Main/Style/CScrapListStyle.cs b/SETUNA/Main/Style/CScrapListStyle.cs new file mode 100644 index 0000000..a0eee8e --- /dev/null +++ b/SETUNA/Main/Style/CScrapListStyle.cs @@ -0,0 +1,21 @@ +using System.Windows.Forms; + +namespace SETUNA.Main.Style +{ + // Token: 0x02000047 RID: 71 + public class CScrapListStyle : CPreStyle + { + // Token: 0x060002BA RID: 698 RVA: 0x0000F4CE File Offset: 0x0000D6CE + public CScrapListStyle() + { + _styleid = -6; + _stylename = "参考图名单"; + } + + // Token: 0x060002BB RID: 699 RVA: 0x0000F4E9 File Offset: 0x0000D6E9 + public override ToolStripItem GetToolStrip(ScrapBook scrapbook) + { + return new ToolStripScrapList(base.GetDisplayName(), scrapbook); + } + } +} diff --git a/SETUNA/Main/Style/CSeparatorStyle.cs b/SETUNA/Main/Style/CSeparatorStyle.cs new file mode 100644 index 0000000..d8351c7 --- /dev/null +++ b/SETUNA/Main/Style/CSeparatorStyle.cs @@ -0,0 +1,21 @@ +using System.Windows.Forms; + +namespace SETUNA.Main.Style +{ + // Token: 0x02000067 RID: 103 + public class CSeparatorStyle : CPreStyle + { + // Token: 0x0600039B RID: 923 RVA: 0x0001625A File Offset: 0x0001445A + public CSeparatorStyle() + { + _styleid = -4; + _stylename = "[分隔符]"; + } + + // Token: 0x0600039C RID: 924 RVA: 0x00016275 File Offset: 0x00014475 + public override ToolStripItem GetToolStrip() + { + return new ToolStripSeparator(); + } + } +} diff --git a/SETUNA/Main/Style/CShowVersionStyle.cs b/SETUNA/Main/Style/CShowVersionStyle.cs new file mode 100644 index 0000000..1969997 --- /dev/null +++ b/SETUNA/Main/Style/CShowVersionStyle.cs @@ -0,0 +1,20 @@ +namespace SETUNA.Main.Style +{ + // Token: 0x0200004B RID: 75 + public class CShowVersionStyle : CPreStyle + { + // Token: 0x060002C2 RID: 706 RVA: 0x0000F584 File Offset: 0x0000D784 + public CShowVersionStyle() + { + _styleid = -5; + _stylename = "版本信息"; + } + + // Token: 0x060002C3 RID: 707 RVA: 0x0000F5A0 File Offset: 0x0000D7A0 + public override void Apply(ref ScrapBase scrap) + { + var splashForm = new SplashForm(); + splashForm.ShowDialog(); + } + } +} diff --git a/SETUNA/Main/Style/CShutDownStyle.cs b/SETUNA/Main/Style/CShutDownStyle.cs new file mode 100644 index 0000000..9b55fc1 --- /dev/null +++ b/SETUNA/Main/Style/CShutDownStyle.cs @@ -0,0 +1,20 @@ +namespace SETUNA.Main.Style +{ + // Token: 0x0200004D RID: 77 + public class CShutDownStyle : CPreStyle + { + // Token: 0x060002C6 RID: 710 RVA: 0x0000F5F8 File Offset: 0x0000D7F8 + public CShutDownStyle() + { + _styleid = -11; + _stylename = "退出SETUNA"; + } + + // Token: 0x060002C7 RID: 711 RVA: 0x0000F614 File Offset: 0x0000D814 + public override void Apply(ref ScrapBase scrap) + { + var bindForm = scrap.Manager.BindForm; + bindForm.Close(); + } + } +} diff --git a/SETUNA/Main/Style/CStyle.cs b/SETUNA/Main/Style/CStyle.cs new file mode 100644 index 0000000..1407685 --- /dev/null +++ b/SETUNA/Main/Style/CStyle.cs @@ -0,0 +1,276 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; +using SETUNA.Main.KeyItems; +using SETUNA.Main.StyleItems; + +namespace SETUNA.Main.Style +{ + // Token: 0x0200003B RID: 59 + public class CStyle : IScrapStyle, ICloneable, IKeyItemListener, IStyleMenu + { + // Token: 0x17000058 RID: 88 + // (get) Token: 0x06000223 RID: 547 RVA: 0x0000B8C8 File Offset: 0x00009AC8 + // (set) Token: 0x06000222 RID: 546 RVA: 0x0000B894 File Offset: 0x00009A94 + public CStyleItem[] Items + { + get + { + var array = new CStyleItem[_styles.Count]; + for (var i = 0; i < _styles.Count; i++) + { + array[i] = _styles[i]; + } + return array; + } + set + { + _styles.Clear(); + for (var i = 0; i < value.Length; i++) + { + _styles.Add(value[i]); + } + } + } + + // Token: 0x17000059 RID: 89 + // (get) Token: 0x06000225 RID: 549 RVA: 0x0000B948 File Offset: 0x00009B48 + // (set) Token: 0x06000224 RID: 548 RVA: 0x0000B90C File Offset: 0x00009B0C + public KeyItem[] KeyItems + { + get + { + var array = new KeyItem[_keys.Count]; + for (var i = 0; i < _keys.Count; i++) + { + array[i] = new KeyItem(_keys[i], this); + } + return array; + } + set + { + _keys.Clear(); + for (var i = 0; i < value.Length; i++) + { + _keys.Add((Keys)value[i]._key); + } + } + } + + // Token: 0x1700005A RID: 90 + // (get) Token: 0x06000227 RID: 551 RVA: 0x0000B99B File Offset: 0x00009B9B + // (set) Token: 0x06000226 RID: 550 RVA: 0x0000B992 File Offset: 0x00009B92 + public string StyleName + { + get => _stylename; + set => _stylename = value; + } + + // Token: 0x1700005B RID: 91 + // (get) Token: 0x06000229 RID: 553 RVA: 0x0000B9BA File Offset: 0x00009BBA + // (set) Token: 0x06000228 RID: 552 RVA: 0x0000B9A3 File Offset: 0x00009BA3 + public virtual int StyleID + { + get => _styleid; + set + { + _styleid = value; + if (CStyle.makestyleid < value) + { + CStyle.makestyleid = value; + } + } + } + + // Token: 0x0600022A RID: 554 RVA: 0x0000B9C2 File Offset: 0x00009BC2 + public CStyle() + { + _styles = new List(); + _keys = new List(); + } + + // Token: 0x0600022B RID: 555 RVA: 0x0000B9E0 File Offset: 0x00009BE0 + public virtual void Apply(ref ScrapBase scrap) + { + try + { + scrap.ApplyStyles(StyleID, Items, Point.Empty); + } + catch (Exception ex) + { + Console.WriteLine("CStyle Apply Exception:" + ex.Message); + } + } + + // Token: 0x0600022C RID: 556 RVA: 0x0000BA2C File Offset: 0x00009C2C + public virtual void Apply(ref ScrapBase scrap, Point clickpoint) + { + try + { + scrap.ApplyStyles(StyleID, Items, clickpoint); + } + catch (Exception ex) + { + Console.WriteLine("CStyle Apply Exception:" + ex.Message); + } + } + + // Token: 0x0600022D RID: 557 RVA: 0x0000BA74 File Offset: 0x00009C74 + public string GetName() + { + return _stylename; + } + + // Token: 0x0600022E RID: 558 RVA: 0x0000BA7C File Offset: 0x00009C7C + public string GetDisplayName() + { + return _stylename; + } + + // Token: 0x0600022F RID: 559 RVA: 0x0000BA84 File Offset: 0x00009C84 + public string GetDescription() + { + return ""; + } + + // Token: 0x06000230 RID: 560 RVA: 0x0000BA8B File Offset: 0x00009C8B + public object Clone() + { + return base.MemberwiseClone(); + } + + // Token: 0x06000231 RID: 561 RVA: 0x0000BA93 File Offset: 0x00009C93 + public override string ToString() + { + return _stylename; + } + + // Token: 0x06000232 RID: 562 RVA: 0x0000BA9C File Offset: 0x00009C9C + public CStyle DeepCopy() + { + var cstyle = (CStyle)base.MemberwiseClone(); + cstyle._keys = new List(); + cstyle._styles = new List(); + for (var i = 0; i < _keys.Count; i++) + { + cstyle._keys.Add(_keys[i]); + } + for (var j = 0; j < _styles.Count; j++) + { + cstyle._styles.Add((CStyleItem)_styles[j].Clone()); + } + return cstyle; + } + + // Token: 0x06000233 RID: 563 RVA: 0x0000BB30 File Offset: 0x00009D30 + public void MakeStyleID() + { + _styleid = ++CStyle.makestyleid; + } + + // Token: 0x06000234 RID: 564 RVA: 0x0000BB45 File Offset: 0x00009D45 + public void AddStyle(CStyleItem newCi) + { + _styles.Add(newCi); + } + + // Token: 0x06000235 RID: 565 RVA: 0x0000BB54 File Offset: 0x00009D54 + public IEnumerable NextStyle() + { + foreach (object ci in _styles) + { + yield return (CStyleItem)ci; + } + yield break; + } + + // Token: 0x06000236 RID: 566 RVA: 0x0000BB71 File Offset: 0x00009D71 + public void ClearStyle() + { + _styles.Clear(); + } + + // Token: 0x06000237 RID: 567 RVA: 0x0000BB7E File Offset: 0x00009D7E + public void RemoveStyle(short i) + { + _styles.RemoveAt(i); + } + + // Token: 0x06000238 RID: 568 RVA: 0x0000BB8C File Offset: 0x00009D8C + public void RemoveStyle(CStyleItem removeCi) + { + _styles.Remove(removeCi); + } + + // Token: 0x06000239 RID: 569 RVA: 0x0000BB9C File Offset: 0x00009D9C + public void ReplaceStyle(CStyleItem target, CStyleItem newitem) + { + var num = _styles.IndexOf(target); + if (num >= 0) + { + _styles[num] = newitem; + } + } + + // Token: 0x0600023A RID: 570 RVA: 0x0000BBC7 File Offset: 0x00009DC7 + public void AddKeyItem(Keys newKey) + { + _keys.Add(newKey); + } + + // Token: 0x0600023B RID: 571 RVA: 0x0000BBD5 File Offset: 0x00009DD5 + public void RemoveKeyItem(Keys removeKey) + { + _keys.Remove(removeKey); + } + + // Token: 0x0600023C RID: 572 RVA: 0x0000BBE4 File Offset: 0x00009DE4 + public void ClearKey() + { + _keys.Clear(); + } + + // Token: 0x0600023D RID: 573 RVA: 0x0000BBF1 File Offset: 0x00009DF1 + public void ParentMove(object sender, EventArgs e) + { + _keys.Remove((Keys)sender); + } + + // Token: 0x0600023E RID: 574 RVA: 0x0000BC05 File Offset: 0x00009E05 + public virtual ToolStripItem GetToolStrip() + { + return new ToolStripStyleButton(this); + } + + // Token: 0x0600023F RID: 575 RVA: 0x0000BC0D File Offset: 0x00009E0D + public virtual ToolStripItem GetToolStrip(ScrapBook scrapbook) + { + return GetToolStrip(); + } + + // Token: 0x040000EC RID: 236 + protected List _styles; + + // Token: 0x040000ED RID: 237 + protected List _keys; + + // Token: 0x040000EE RID: 238 + protected string _stylename; + + // Token: 0x040000EF RID: 239 + protected int _styleid; + + // Token: 0x040000F0 RID: 240 + protected static int makestyleid; + + // Token: 0x040000F1 RID: 241 + protected Timer timApply; + + // Token: 0x040000F2 RID: 242 + protected int _appliidx; + + // Token: 0x040000F3 RID: 243 + protected ScrapBase _scrap; + } +} diff --git a/SETUNA/Main/Style/IStyleMenu.cs b/SETUNA/Main/Style/IStyleMenu.cs new file mode 100644 index 0000000..da7a3fd --- /dev/null +++ b/SETUNA/Main/Style/IStyleMenu.cs @@ -0,0 +1,11 @@ +using System.Windows.Forms; + +namespace SETUNA.Main.Style +{ + // Token: 0x02000059 RID: 89 + public interface IStyleMenu + { + // Token: 0x06000326 RID: 806 + ToolStripItem GetToolStrip(); + } +} diff --git a/SETUNA/Main/StyleItemEditListBox.cs b/SETUNA/Main/StyleItemEditListBox.cs new file mode 100644 index 0000000..bb86c07 --- /dev/null +++ b/SETUNA/Main/StyleItemEditListBox.cs @@ -0,0 +1,52 @@ +using System.Drawing; +using SETUNA.Main.StyleItems; + +namespace SETUNA.Main +{ + // Token: 0x020000AB RID: 171 + internal class StyleItemEditListBox : SetunaListBox + { + // Token: 0x06000584 RID: 1412 RVA: 0x000261CC File Offset: 0x000243CC + protected override void DrawItemString(Graphics g, object item, Font font, Brush brush, Rectangle bounds, StringFormat sf, int index) + { + if (index < 0) + { + return; + } + string item2; + if (!base.DesignMode) + { + var cstyleItem = (CStyleItem)item; + item2 = cstyleItem.NameAndState; + cstyleItem.GetDescription(); + } + else + { + item2 = item.ToString(); + item.ToString(); + } + var terminate = GetTerminate(); + if (index > terminate && terminate >= 0) + { + brush = Brushes.Gray; + } + base.DrawItemString(g, item2, font, brush, bounds, sf, index); + } + + // Token: 0x06000585 RID: 1413 RVA: 0x00026234 File Offset: 0x00024434 + protected int GetTerminate() + { + var result = -1; + for (var i = 0; i < base.Items.Count; i++) + { + var cstyleItem = (CStyleItem)base.Items[i]; + if (cstyleItem.IsTerminate) + { + result = i; + break; + } + } + return result; + } + } +} diff --git a/SETUNA/Main/StyleItemListBox.cs b/SETUNA/Main/StyleItemListBox.cs new file mode 100644 index 0000000..0614a9d --- /dev/null +++ b/SETUNA/Main/StyleItemListBox.cs @@ -0,0 +1,100 @@ +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Text; +using SETUNA.Main.StyleItems; + +namespace SETUNA.Main +{ + // Token: 0x02000083 RID: 131 + internal class StyleItemListBox : SetunaListBox + { + // Token: 0x170000A9 RID: 169 + // (get) Token: 0x0600045D RID: 1117 RVA: 0x0001C809 File Offset: 0x0001AA09 + // (set) Token: 0x0600045C RID: 1116 RVA: 0x0001C800 File Offset: 0x0001AA00 + [Browsable(true)] + [Description("アイテム説明用のフォントです。")] + public Font HelpFont { get; set; } + + // Token: 0x170000AA RID: 170 + // (get) Token: 0x0600045F RID: 1119 RVA: 0x0001C81A File Offset: 0x0001AA1A + // (set) Token: 0x0600045E RID: 1118 RVA: 0x0001C811 File Offset: 0x0001AA11 + [Description("アイテム説明用フォント色です。")] + [Browsable(true)] + public Color HelpForeColor { get; set; } + + // Token: 0x170000AB RID: 171 + // (get) Token: 0x06000461 RID: 1121 RVA: 0x0001C82B File Offset: 0x0001AA2B + // (set) Token: 0x06000460 RID: 1120 RVA: 0x0001C822 File Offset: 0x0001AA22 + [Browsable(true)] + [Description("終端アイテムで表示を無効にするか。")] + public bool TerminateEnd { get; set; } + + // Token: 0x06000462 RID: 1122 RVA: 0x0001C833 File Offset: 0x0001AA33 + public StyleItemListBox() + { + ItemHeight = 39; + base.LeftSpace = 34; + TerminateEnd = false; + HelpFont = new Font(Font, FontStyle.Regular); + HelpForeColor = Color.Gray; + } + + // Token: 0x06000463 RID: 1123 RVA: 0x0001C870 File Offset: 0x0001AA70 + protected override void DrawItemString(Graphics g, object item, Font font, Brush brush, Rectangle bounds, StringFormat sf, int index) + { + if (index < 0) + { + return; + } + var rectangle = bounds; + string item2; + string item3; + if (!base.DesignMode) + { + var cstyleItem = (CStyleItem)item; + item2 = cstyleItem.GetDisplayName(); + item3 = cstyleItem.GetDescription(); + var icon = cstyleItem.GetIcon(); + if (icon != null) + { + g.DrawImage(icon, 2, rectangle.Top + 2); + } + } + else + { + item2 = item.ToString(); + item3 = item.ToString(); + } + if (TerminateEnd && !base.DesignMode) + { + var terminate = GetTerminate(); + if (index > terminate && terminate >= 0) + { + brush = Brushes.Gray; + } + } + base.DrawItemString(g, item2, Font, brush, bounds, sf, index); + g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; + sf.FormatFlags -= 4096; + bounds.Y += (int)Font.GetHeight() + 2; + bounds.Height = ItemHeight - ((int)Font.GetHeight() + 2 + 2); + base.DrawItemString(g, item3, HelpFont, new SolidBrush(HelpForeColor), bounds, sf, index); + } + + // Token: 0x06000464 RID: 1124 RVA: 0x0001C988 File Offset: 0x0001AB88 + protected int GetTerminate() + { + var result = -1; + for (var i = 0; i < base.Items.Count; i++) + { + var cstyleItem = (CStyleItem)base.Items[i]; + if (cstyleItem.IsTerminate) + { + result = i; + break; + } + } + return result; + } + } +} diff --git a/SETUNA/Main/StyleItems/AddLayerCommand.cs b/SETUNA/Main/StyleItems/AddLayerCommand.cs new file mode 100644 index 0000000..f87de4a --- /dev/null +++ b/SETUNA/Main/StyleItems/AddLayerCommand.cs @@ -0,0 +1,50 @@ +using System; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200001B RID: 27 + public class AddLayerCommand : LayerCommand + { + // Token: 0x1400000D RID: 13 + // (add) Token: 0x06000141 RID: 321 RVA: 0x00008220 File Offset: 0x00006420 + // (remove) Token: 0x06000142 RID: 322 RVA: 0x00008239 File Offset: 0x00006439 + public event AddLayerCommand.AddLayerCommandDelegate AddLayer; + + // Token: 0x17000044 RID: 68 + // (get) Token: 0x06000143 RID: 323 RVA: 0x00008252 File Offset: 0x00006452 + public int InsertIndex => _insertIndex; + + // Token: 0x06000144 RID: 324 RVA: 0x0000825C File Offset: 0x0000645C + public AddLayerCommand(string layerName, int insertIndex) : base(layerName) + { + base.LayerID = DateTime.Now.ToBinary(); + _insertIndex = insertIndex; + } + + // Token: 0x06000145 RID: 325 RVA: 0x0000828A File Offset: 0x0000648A + public override void Apply() + { + if (AddLayer != null) + { + AddLayer(this); + } + } + + // Token: 0x17000045 RID: 69 + // (get) Token: 0x06000146 RID: 326 RVA: 0x000082A0 File Offset: 0x000064A0 + public bool IsEvent => AddLayer != null; + + // Token: 0x06000147 RID: 327 RVA: 0x000082AE File Offset: 0x000064AE + public virtual ScrapPaintLayerItem CreateLayer(int width, int height) + { + return new ScrapPaintLayerItem(base.LayerID, width, height); + } + + // Token: 0x0400009C RID: 156 + private int _insertIndex; + + // Token: 0x0200001C RID: 28 + // (Invoke) Token: 0x06000149 RID: 329 + public delegate void AddLayerCommandDelegate(AddLayerCommand sender); + } +} diff --git a/SETUNA/Main/StyleItems/AddTextLayerCommand.cs b/SETUNA/Main/StyleItems/AddTextLayerCommand.cs new file mode 100644 index 0000000..d12422d --- /dev/null +++ b/SETUNA/Main/StyleItems/AddTextLayerCommand.cs @@ -0,0 +1,41 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200009E RID: 158 + public class AddTextLayerCommand : AddLayerCommand, ILayer + { + // Token: 0x0600052D RID: 1325 RVA: 0x000245DC File Offset: 0x000227DC + public AddTextLayerCommand(string layerName, int insertIndex) : base(layerName, insertIndex) + { + childs = null; + } + + // Token: 0x0600052E RID: 1326 RVA: 0x000245ED File Offset: 0x000227ED + public override ScrapPaintLayerItem CreateLayer(int width, int height) + { + return new ScrapPaintTextLayerItem(base.LayerID, width, height); + } + + // Token: 0x0600052F RID: 1327 RVA: 0x000245FC File Offset: 0x000227FC + public void AddCommand(ToolCommand addCmd) + { + childs = addCmd; + } + + // Token: 0x06000530 RID: 1328 RVA: 0x00024605 File Offset: 0x00022805 + public void RefreshLayer() + { + } + + // Token: 0x06000531 RID: 1329 RVA: 0x00024607 File Offset: 0x00022807 + public void RemoveCommand(ToolCommand removeCmd) + { + if (Parent != null) + { + Parent.RemoveCommand(this); + } + } + + // Token: 0x0400034B RID: 843 + private ToolCommand childs; + } +} diff --git a/SETUNA/Main/StyleItems/CCloseStyleItem.cs b/SETUNA/Main/StyleItems/CCloseStyleItem.cs new file mode 100644 index 0000000..30c5f7f --- /dev/null +++ b/SETUNA/Main/StyleItems/CCloseStyleItem.cs @@ -0,0 +1,55 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x02000063 RID: 99 + public class CCloseStyleItem : CStyleItem + { + // Token: 0x06000380 RID: 896 RVA: 0x0001600D File Offset: 0x0001420D + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + scrap.Close(); + } + + // Token: 0x06000381 RID: 897 RVA: 0x00016016 File Offset: 0x00014216 + public override string GetName() + { + return "Close"; + } + + // Token: 0x06000382 RID: 898 RVA: 0x0001601D File Offset: 0x0001421D + public override string GetDisplayName() + { + return "关闭"; + } + + // Token: 0x06000383 RID: 899 RVA: 0x00016024 File Offset: 0x00014224 + public override string GetDescription() + { + return "关闭参考图。\n之后的自动操作将不被使用。"; + } + + // Token: 0x06000384 RID: 900 RVA: 0x0001602B File Offset: 0x0001422B + protected override ToolBoxForm GetToolBoxForm() + { + return new NothingStyleItemPanel(this); + } + + // Token: 0x06000385 RID: 901 RVA: 0x00016033 File Offset: 0x00014233 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + } + + // Token: 0x17000088 RID: 136 + // (get) Token: 0x06000386 RID: 902 RVA: 0x00016035 File Offset: 0x00014235 + public override bool IsTerminate => true; + + // Token: 0x06000387 RID: 903 RVA: 0x00016038 File Offset: 0x00014238 + public override Bitmap GetIcon() + { + return Resources.Icon_Close; + } + } +} diff --git a/SETUNA/Main/StyleItems/CCompactStyleItem.cs b/SETUNA/Main/StyleItems/CCompactStyleItem.cs new file mode 100644 index 0000000..b08844f --- /dev/null +++ b/SETUNA/Main/StyleItems/CCompactStyleItem.cs @@ -0,0 +1,83 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x02000064 RID: 100 + public class CCompactStyleItem : CStyleItem + { + // Token: 0x06000389 RID: 905 RVA: 0x00016048 File Offset: 0x00014248 + public CCompactStyleItem() + { + Opacity = 100; + LineColor = Color.Blue.ToArgb(); + SoldLine = false; + } + + // Token: 0x0600038A RID: 906 RVA: 0x00016080 File Offset: 0x00014280 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + var compactScrap = new CompactScrap(scrap, this, clickpoint); + compactScrap.Show(); + } + + // Token: 0x0600038B RID: 907 RVA: 0x0001609D File Offset: 0x0001429D + public override string GetName() + { + return "Compact"; + } + + // Token: 0x0600038C RID: 908 RVA: 0x000160A4 File Offset: 0x000142A4 + public override string GetDisplayName() + { + return "收缩"; + } + + // Token: 0x0600038D RID: 909 RVA: 0x000160AB File Offset: 0x000142AB + public override string GetDescription() + { + return "将参考图的尺寸收缩。\n之后的自动操作将不被使用。"; + } + + // Token: 0x0600038E RID: 910 RVA: 0x000160B2 File Offset: 0x000142B2 + protected override ToolBoxForm GetToolBoxForm() + { + return new CompactStyleItemPanel(this); + } + + // Token: 0x0600038F RID: 911 RVA: 0x000160BC File Offset: 0x000142BC + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var ccompactStyleItem = (CCompactStyleItem)newOwn; + Opacity = ccompactStyleItem.Opacity; + LineColor = ccompactStyleItem.LineColor; + SoldLine = ccompactStyleItem.SoldLine; + } + + // Token: 0x17000089 RID: 137 + // (get) Token: 0x06000390 RID: 912 RVA: 0x000160F4 File Offset: 0x000142F4 + public override bool IsTerminate => true; + + // Token: 0x06000391 RID: 913 RVA: 0x000160F7 File Offset: 0x000142F7 + public override Bitmap GetIcon() + { + return Resources.Icon_Compact; + } + + // Token: 0x040001F3 RID: 499 + public static int OpacityMinValue = 10; + + // Token: 0x040001F4 RID: 500 + public static int OpacityMaxValue = 100; + + // Token: 0x040001F5 RID: 501 + public byte Opacity; + + // Token: 0x040001F6 RID: 502 + public int LineColor; + + // Token: 0x040001F7 RID: 503 + public bool SoldLine; + } +} diff --git a/SETUNA/Main/StyleItems/CCopyStyleItem.cs b/SETUNA/Main/StyleItems/CCopyStyleItem.cs new file mode 100644 index 0000000..07e87af --- /dev/null +++ b/SETUNA/Main/StyleItems/CCopyStyleItem.cs @@ -0,0 +1,95 @@ +using System; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x02000013 RID: 19 + public class CCopyStyleItem : CStyleItem + { + // Token: 0x060000DC RID: 220 RVA: 0x000068BC File Offset: 0x00004ABC + public CCopyStyleItem() + { + CopyFromSource = false; + } + + // Token: 0x060000DD RID: 221 RVA: 0x000068CC File Offset: 0x00004ACC + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + Image image = null; + try + { + if (CopyFromSource) + { + image = (Image)scrap.Image.Clone(); + } + else + { + image = scrap.GetViewImage(); + } + Clipboard.Clear(); + for (var i = 0; i < 5; i++) + { + Clipboard.SetImage(image); + if (Clipboard.ContainsImage()) + { + break; + } + } + } + catch (Exception ex) + { + Console.WriteLine("CStyleItem Apply Exception:" + ex.Message); + } + finally + { + if (image != null) + { + image.Dispose(); + } + } + } + + // Token: 0x060000DE RID: 222 RVA: 0x00006960 File Offset: 0x00004B60 + public override string GetName() + { + return "Copy"; + } + + // Token: 0x060000DF RID: 223 RVA: 0x00006967 File Offset: 0x00004B67 + public override string GetDisplayName() + { + return "复制到剪贴板"; + } + + // Token: 0x060000E0 RID: 224 RVA: 0x0000696E File Offset: 0x00004B6E + public override string GetDescription() + { + return "将参考图作为图像复制到剪贴板里。"; + } + + // Token: 0x060000E1 RID: 225 RVA: 0x00006975 File Offset: 0x00004B75 + protected override ToolBoxForm GetToolBoxForm() + { + return new CopyStyleItemPanel(this); + } + + // Token: 0x060000E2 RID: 226 RVA: 0x00006980 File Offset: 0x00004B80 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var ccopyStyleItem = (CCopyStyleItem)newOwn; + CopyFromSource = ccopyStyleItem.CopyFromSource; + } + + // Token: 0x060000E3 RID: 227 RVA: 0x000069A0 File Offset: 0x00004BA0 + public override Bitmap GetIcon() + { + return Resources.Icon_Copy; + } + + // Token: 0x04000078 RID: 120 + public bool CopyFromSource; + } +} diff --git a/SETUNA/Main/StyleItems/CImageBmpStyleItem.cs b/SETUNA/Main/StyleItems/CImageBmpStyleItem.cs new file mode 100644 index 0000000..bbb8cc3 --- /dev/null +++ b/SETUNA/Main/StyleItems/CImageBmpStyleItem.cs @@ -0,0 +1,77 @@ +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x0200008B RID: 139 + public class CImageBmpStyleItem : CImageStyleItem + { + // Token: 0x06000481 RID: 1153 RVA: 0x0001D84C File Offset: 0x0001BA4C + protected override EncoderParameter[] GetEncoderParams(ref ScrapBase scrap) + { + return new List + { + new EncoderParameter(Encoder.Quality, 100) + }.ToArray(); + } + + // Token: 0x06000482 RID: 1154 RVA: 0x0001D877 File Offset: 0x0001BA77 + protected override ImageFormat GetImageFormat() + { + return ImageFormat.Bmp; + } + + // Token: 0x06000483 RID: 1155 RVA: 0x0001D87E File Offset: 0x0001BA7E + public override string GetName() + { + return "ImageBmp"; + } + + // Token: 0x06000484 RID: 1156 RVA: 0x0001D885 File Offset: 0x0001BA85 + public override string GetDisplayName() + { + return "保存为BMP格式"; + } + + // Token: 0x06000485 RID: 1157 RVA: 0x0001D88C File Offset: 0x0001BA8C + public override string GetDescription() + { + return "用BMP格式的图像保存参考图。"; + } + + // Token: 0x06000486 RID: 1158 RVA: 0x0001D893 File Offset: 0x0001BA93 + protected override ToolBoxForm GetToolBoxForm() + { + return new ImageBmpStyleItemPanel(this); + } + + // Token: 0x06000487 RID: 1159 RVA: 0x0001D89C File Offset: 0x0001BA9C + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var cimageBmpStyleItem = (CImageBmpStyleItem)newOwn; + SaveFolder = cimageBmpStyleItem.SaveFolder; + HaveMargin = cimageBmpStyleItem.HaveMargin; + CopyPath = cimageBmpStyleItem.CopyPath; + FileNameType = cimageBmpStyleItem.FileNameType; + DupliType = cimageBmpStyleItem.DupliType; + FileName = cimageBmpStyleItem.FileName; + } + + // Token: 0x170000AC RID: 172 + // (get) Token: 0x06000488 RID: 1160 RVA: 0x0001D8F8 File Offset: 0x0001BAF8 + protected override string Extension => "bmp"; + + // Token: 0x170000AD RID: 173 + // (get) Token: 0x06000489 RID: 1161 RVA: 0x0001D8FF File Offset: 0x0001BAFF + protected override string FileFilter => "Bitmap格式 (.bmp)|*.bmp|所有文件 (*.*)|*.*"; + + // Token: 0x0600048A RID: 1162 RVA: 0x0001D906 File Offset: 0x0001BB06 + public override Bitmap GetIcon() + { + return Resources.Icon_Bmp; + } + } +} diff --git a/SETUNA/Main/StyleItems/CImageJpegStyleItem.cs b/SETUNA/Main/StyleItems/CImageJpegStyleItem.cs new file mode 100644 index 0000000..6efe3dd --- /dev/null +++ b/SETUNA/Main/StyleItems/CImageJpegStyleItem.cs @@ -0,0 +1,113 @@ +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x0200005E RID: 94 + public class CImageJpegStyleItem : CImageStyleItem + { + // Token: 0x06000346 RID: 838 RVA: 0x00015751 File Offset: 0x00013951 + public CImageJpegStyleItem() + { + Quality = 100; + ShowPreview = true; + } + + // Token: 0x06000347 RID: 839 RVA: 0x00015768 File Offset: 0x00013968 + protected override EncoderParameter[] GetEncoderParams(ref ScrapBase scrap) + { + var list = new List(); + if (ShowPreview) + { + ImageJpegPreviewPanel imageJpegPreviewPanel; + if (HaveMargin) + { + imageJpegPreviewPanel = new ImageJpegPreviewPanel(this, scrap.GetViewImage(), base.GetImageCodecInfo()); + } + else + { + imageJpegPreviewPanel = new ImageJpegPreviewPanel(this, (Bitmap)scrap.Image.Clone(), base.GetImageCodecInfo()); + } + if (imageJpegPreviewPanel.ShowDialog(scrap) != DialogResult.OK) + { + return null; + } + var cimageJpegStyleItem = (CImageJpegStyleItem)imageJpegPreviewPanel.StyleItem; + list.Add(new EncoderParameter(Encoder.Quality, cimageJpegStyleItem.Quality)); + } + else + { + list.Add(new EncoderParameter(Encoder.Quality, Quality)); + } + return list.ToArray(); + } + + // Token: 0x06000348 RID: 840 RVA: 0x0001580E File Offset: 0x00013A0E + protected override ImageFormat GetImageFormat() + { + return ImageFormat.Jpeg; + } + + // Token: 0x06000349 RID: 841 RVA: 0x00015815 File Offset: 0x00013A15 + public override string GetName() + { + return "ImageJpeg"; + } + + // Token: 0x0600034A RID: 842 RVA: 0x0001581C File Offset: 0x00013A1C + public override string GetDisplayName() + { + return "保存为JPEG格式"; + } + + // Token: 0x0600034B RID: 843 RVA: 0x00015823 File Offset: 0x00013A23 + public override string GetDescription() + { + return "用JPEG格式的图像保存参考图。"; + } + + // Token: 0x0600034C RID: 844 RVA: 0x0001582A File Offset: 0x00013A2A + protected override ToolBoxForm GetToolBoxForm() + { + return new ImageJpegStyleItemPanel(this); + } + + // Token: 0x0600034D RID: 845 RVA: 0x00015834 File Offset: 0x00013A34 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var cimageJpegStyleItem = (CImageJpegStyleItem)newOwn; + SaveFolder = cimageJpegStyleItem.SaveFolder; + Quality = cimageJpegStyleItem.Quality; + ShowPreview = cimageJpegStyleItem.ShowPreview; + HaveMargin = cimageJpegStyleItem.HaveMargin; + CopyPath = cimageJpegStyleItem.CopyPath; + FileNameType = cimageJpegStyleItem.FileNameType; + DupliType = cimageJpegStyleItem.DupliType; + FileName = cimageJpegStyleItem.FileName; + } + + // Token: 0x1700007E RID: 126 + // (get) Token: 0x0600034E RID: 846 RVA: 0x000158A8 File Offset: 0x00013AA8 + protected override string Extension => "jpg"; + + // Token: 0x1700007F RID: 127 + // (get) Token: 0x0600034F RID: 847 RVA: 0x000158AF File Offset: 0x00013AAF + protected override string FileFilter => "Jpeg格式 (.jpg)|*.jpg|所有文件 (*.*)|*.*"; + + // Token: 0x06000350 RID: 848 RVA: 0x000158B6 File Offset: 0x00013AB6 + public override Bitmap GetIcon() + { + return Resources.Icon_Jpeg; + } + + // Token: 0x040001D9 RID: 473 + public int Quality; + + // Token: 0x040001DA RID: 474 + public bool ShowPreview; + } +} diff --git a/SETUNA/Main/StyleItems/CImagePngStyleItem.cs b/SETUNA/Main/StyleItems/CImagePngStyleItem.cs new file mode 100644 index 0000000..b39be20 --- /dev/null +++ b/SETUNA/Main/StyleItems/CImagePngStyleItem.cs @@ -0,0 +1,92 @@ +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x0200000D RID: 13 + public class CImagePngStyleItem : CImageStyleItem + { + // Token: 0x060000BB RID: 187 RVA: 0x0000561A File Offset: 0x0000381A + public CImagePngStyleItem() + { + Quality = 100; + ShowPreview = true; + } + + // Token: 0x060000BC RID: 188 RVA: 0x00005634 File Offset: 0x00003834 + protected override EncoderParameter[] GetEncoderParams(ref ScrapBase scrap) + { + return new List + { + new EncoderParameter(Encoder.Quality, Quality) + }.ToArray(); + } + + // Token: 0x060000BD RID: 189 RVA: 0x00005664 File Offset: 0x00003864 + protected override ImageFormat GetImageFormat() + { + return ImageFormat.Png; + } + + // Token: 0x060000BE RID: 190 RVA: 0x0000566B File Offset: 0x0000386B + public override string GetName() + { + return "ImagePng"; + } + + // Token: 0x060000BF RID: 191 RVA: 0x00005672 File Offset: 0x00003872 + public override string GetDisplayName() + { + return "保存为PNG格式"; + } + + // Token: 0x060000C0 RID: 192 RVA: 0x00005679 File Offset: 0x00003879 + public override string GetDescription() + { + return "用PNG格式的图像保存参考图。"; + } + + // Token: 0x060000C1 RID: 193 RVA: 0x00005680 File Offset: 0x00003880 + protected override ToolBoxForm GetToolBoxForm() + { + return new ImagePngStyleItemPanel(this); + } + + // Token: 0x060000C2 RID: 194 RVA: 0x00005688 File Offset: 0x00003888 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var cimagePngStyleItem = (CImagePngStyleItem)newOwn; + SaveFolder = cimagePngStyleItem.SaveFolder; + Quality = cimagePngStyleItem.Quality; + ShowPreview = cimagePngStyleItem.ShowPreview; + HaveMargin = cimagePngStyleItem.HaveMargin; + CopyPath = cimagePngStyleItem.CopyPath; + FileNameType = cimagePngStyleItem.FileNameType; + DupliType = cimagePngStyleItem.DupliType; + FileName = cimagePngStyleItem.FileName; + } + + // Token: 0x17000038 RID: 56 + // (get) Token: 0x060000C3 RID: 195 RVA: 0x000056FC File Offset: 0x000038FC + protected override string Extension => "png"; + + // Token: 0x17000039 RID: 57 + // (get) Token: 0x060000C4 RID: 196 RVA: 0x00005703 File Offset: 0x00003903 + protected override string FileFilter => "Png格式(.png)|*.png|所有文件 (*.*)|*.*"; + + // Token: 0x060000C5 RID: 197 RVA: 0x0000570A File Offset: 0x0000390A + public override Bitmap GetIcon() + { + return Resources.Icon_Png; + } + + // Token: 0x04000058 RID: 88 + public int Quality; + + // Token: 0x04000059 RID: 89 + public bool ShowPreview; + } +} diff --git a/SETUNA/Main/StyleItems/CImageStyleItem.cs b/SETUNA/Main/StyleItems/CImageStyleItem.cs new file mode 100644 index 0000000..b88a856 --- /dev/null +++ b/SETUNA/Main/StyleItems/CImageStyleItem.cs @@ -0,0 +1,257 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200000E RID: 14 + public abstract class CImageStyleItem : CStyleItem + { + // Token: 0x060000C6 RID: 198 RVA: 0x00005711 File Offset: 0x00003911 + public CImageStyleItem() + { + HaveMargin = false; + CopyPath = false; + FileNameType = CImageStyleItem.EnumFileName.SaveAs; + DupliType = CImageStyleItem.EnumDupliType.OverWrite; + } + + // Token: 0x060000C7 RID: 199 RVA: 0x00005738 File Offset: 0x00003938 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + Bitmap bitmap = null; + var text = ""; + try + { + if (HaveMargin) + { + bitmap = ((Bitmap)scrap.GetViewImage()).Clone(new Rectangle(0, 0, scrap.Width, scrap.Height), PixelFormat.Format24bppRgb); + } + else + { + bitmap = ((Bitmap)scrap.Image).Clone(new Rectangle(0, 0, scrap.Image.Width, scrap.Image.Height), scrap.Image.PixelFormat); + } + var encoderParams = GetEncoderParams(ref scrap); + if (encoderParams != null) + { + text = GetSavePath(ref scrap); + Layer.LayerManager.Instance.ResumeRefresh(); + + if (!(text == "")) + { + var encoderParameters = new EncoderParameters(encoderParams.Length) + { + Param = encoderParams + }; + var imageCodecInfo = GetImageCodecInfo(); + if (imageCodecInfo != null) + { + try + { + var directoryName = Path.GetDirectoryName(text); + if (!Directory.Exists(directoryName)) + { + Directory.CreateDirectory(directoryName); + } + bitmap.Save(text, imageCodecInfo, encoderParameters); + if (CopyPath) + { + Clipboard.SetText(text); + } + } + catch (Exception ex) + { + throw ex; + } + } + } + } + } + catch (Exception ex2) + { + MessageBox.Show(text + "\n无法保存。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Hand); + throw ex2; + } + finally + { + if (bitmap != null) + { + bitmap.Dispose(); + } + } + } + + // Token: 0x060000C8 RID: 200 RVA: 0x000058B4 File Offset: 0x00003AB4 + protected string GetSavePath(ref ScrapBase scrap) + { + var imageCodecInfo = GetImageCodecInfo(); + var flag = false; + if (imageCodecInfo == null) + { + return ""; + } + var extension = Extension; + var saveFolder = SaveFolder; + string text; + switch (FileNameType) + { + case CImageStyleItem.EnumFileName.SaveAs: + text = scrap.Name; + flag = true; + break; + case CImageStyleItem.EnumFileName.ScrapName: + text = scrap.Name; + break; + case CImageStyleItem.EnumFileName.UseName: + text = FileName; + break; + default: + text = scrap.Name; + break; + } + while (!flag) + { + if (!Path.HasExtension(text)) + { + text = Path.ChangeExtension(text, extension); + } + var text2 = Path.Combine(saveFolder, text); + if (File.Exists(text2)) + { + switch (DupliType) + { + case CImageStyleItem.EnumDupliType.Sequence: + { + var i = 1; + extension = Path.GetExtension(text); + var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(text); + while (i < 2147483647) + { + text = fileNameWithoutExtension + " (" + i.ToString() + ")"; + text = Path.ChangeExtension(text, extension); + text2 = Path.Combine(saveFolder, text); + if (!File.Exists(text2)) + { + break; + } + i++; + } + if (i == 2147483647) + { + return ""; + } + break; + } + case CImageStyleItem.EnumDupliType.Select: + { + var dialogResult = MessageBox.Show("相同的文件名已存在。\n覆盖?", Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2); + if (dialogResult == DialogResult.No) + { + flag = true; + continue; + } + if (dialogResult == DialogResult.Cancel) + { + return ""; + } + break; + } + } + } + return text2; + } + var saveFileDialog = new SaveFileDialog + { + InitialDirectory = saveFolder, + FileName = text, + DefaultExt = extension, + Filter = FileFilter, + RestoreDirectory = true + }; + + Layer.LayerManager.Instance.SuspendRefresh(); + if (saveFileDialog.ShowDialog() != DialogResult.OK) + { + return ""; + } + + return saveFileDialog.FileName; + } + + // Token: 0x060000C9 RID: 201 RVA: 0x00005A5C File Offset: 0x00003C5C + protected ImageCodecInfo GetImageCodecInfo() + { + var imageFormat = GetImageFormat(); + ImageCodecInfo imageCodecInfo = null; + foreach (var imageCodecInfo2 in ImageCodecInfo.GetImageEncoders()) + { + if (imageCodecInfo2.FormatID == imageFormat.Guid) + { + imageCodecInfo = imageCodecInfo2; + break; + } + } + if (imageCodecInfo == null) + { + MessageBox.Show("因为利用可以的编码器没找到,不能保存图像。", GetDisplayName(), MessageBoxButtons.OK, MessageBoxIcon.Hand); + } + return imageCodecInfo; + } + + // Token: 0x1700003A RID: 58 + // (get) Token: 0x060000CA RID: 202 RVA: 0x00005ABE File Offset: 0x00003CBE + protected virtual string Extension => ""; + + // Token: 0x1700003B RID: 59 + // (get) Token: 0x060000CB RID: 203 RVA: 0x00005AC5 File Offset: 0x00003CC5 + protected virtual string FileFilter => "所有文件 (*.*)|*.*"; + + // Token: 0x060000CC RID: 204 + protected abstract EncoderParameter[] GetEncoderParams(ref ScrapBase scrap); + + // Token: 0x060000CD RID: 205 + protected abstract ImageFormat GetImageFormat(); + + // Token: 0x0400005A RID: 90 + public string SaveFolder; + + // Token: 0x0400005B RID: 91 + public bool HaveMargin; + + // Token: 0x0400005C RID: 92 + public bool CopyPath; + + // Token: 0x0400005D RID: 93 + public CImageStyleItem.EnumFileName FileNameType; + + // Token: 0x0400005E RID: 94 + public CImageStyleItem.EnumDupliType DupliType; + + // Token: 0x0400005F RID: 95 + public string FileName; + + // Token: 0x02000010 RID: 16 + public enum EnumFileName + { + // Token: 0x0400006F RID: 111 + SaveAs, + // Token: 0x04000070 RID: 112 + ScrapName, + // Token: 0x04000071 RID: 113 + UseName + } + + // Token: 0x02000011 RID: 17 + public enum EnumDupliType + { + // Token: 0x04000073 RID: 115 + OverWrite, + // Token: 0x04000074 RID: 116 + Sequence, + // Token: 0x04000075 RID: 117 + Select + } + } +} diff --git a/SETUNA/Main/StyleItems/CMarginStyleItem.cs b/SETUNA/Main/StyleItems/CMarginStyleItem.cs new file mode 100644 index 0000000..0247d56 --- /dev/null +++ b/SETUNA/Main/StyleItems/CMarginStyleItem.cs @@ -0,0 +1,168 @@ +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x02000004 RID: 4 + public class CMarginStyleItem : CStyleItem + { + // Token: 0x06000015 RID: 21 RVA: 0x000030C0 File Offset: 0x000012C0 + public CMarginStyleItem() + { + MarginSize = 1; + TopMost = true; + SetMarginColor(Color.DarkGray); + BorderStyle = 1; + } + + // Token: 0x06000016 RID: 22 RVA: 0x000030E8 File Offset: 0x000012E8 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + var padding = scrap.Padding; + switch (BorderStyle) + { + case 0: + scrap.FormBorderStyle = FormBorderStyle.None; + scrap.SolidFrame = false; + padding.All = 1; + scrap.BackColor = Color.FromArgb(25, 25, 25); + scrap.ActiveMargin = padding.All; + scrap.ShowInTaskbar = false; + scrap.TopMost = true; + break; + case 1: + scrap.FormBorderStyle = FormBorderStyle.None; + scrap.SolidFrame = true; + padding.All = MarginSize; + scrap.BackColor = GetMarginColor(); + scrap.ActiveMargin = padding.All; + scrap.ShowInTaskbar = false; + scrap.TopMost = true; + return; + case 2: + if (scrap.FormBorderStyle != FormBorderStyle.FixedDialog) + { + scrap.FormBorderStyle = FormBorderStyle.FixedDialog; + scrap.SolidFrame = true; + padding.All = 0; + scrap.BackColor = Color.Black; + scrap.ActiveMargin = padding.All; + scrap.ShowInTaskbar = true; + scrap.TopMost = TopMost; + return; + } + break; + default: + return; + } + } + + // Token: 0x06000017 RID: 23 RVA: 0x000031FD File Offset: 0x000013FD + public void SetMarginColor(Color color) + { + MarginColorRed = color.R; + MarginColorGreen = color.G; + MarginColorBlue = color.B; + } + + // Token: 0x06000018 RID: 24 RVA: 0x00003228 File Offset: 0x00001428 + public Color GetMarginColor() + { + return Color.FromArgb(MarginColorRed, MarginColorGreen, MarginColorBlue); + } + + // Token: 0x06000019 RID: 25 RVA: 0x0000324E File Offset: 0x0000144E + public override string GetName() + { + return "Frame"; + } + + // Token: 0x0600001A RID: 26 RVA: 0x00003255 File Offset: 0x00001455 + public override string GetDisplayName() + { + return "边框"; + } + + // Token: 0x0600001B RID: 27 RVA: 0x0000325C File Offset: 0x0000145C + public override string GetDescription() + { + return "设置参考图的边框的种类。"; + } + + // Token: 0x0600001C RID: 28 RVA: 0x00003263 File Offset: 0x00001463 + protected override ToolBoxForm GetToolBoxForm() + { + return new MarginStyleItemPanel(this); + } + + // Token: 0x0600001D RID: 29 RVA: 0x0000326C File Offset: 0x0000146C + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var cmarginStyleItem = (CMarginStyleItem)newOwn; + MarginSize = cmarginStyleItem.MarginSize; + BorderStyle = cmarginStyleItem.BorderStyle; + SetMarginColor(cmarginStyleItem.GetMarginColor()); + TopMost = cmarginStyleItem.TopMost; + } + + // Token: 0x17000002 RID: 2 + // (get) Token: 0x0600001E RID: 30 RVA: 0x000032B0 File Offset: 0x000014B0 + public override string StateText + { + get + { + var result = ""; + switch (BorderStyle) + { + case 0: + result = "立体边框"; + break; + case 1: + result = "单色边框"; + break; + case 2: + result = "窗口"; + break; + } + return result; + } + } + + // Token: 0x0600001F RID: 31 RVA: 0x000032F5 File Offset: 0x000014F5 + public override Bitmap GetIcon() + { + return Resources.Icon_Frame; + } + + // Token: 0x04000014 RID: 20 + public int MarginSize; + + // Token: 0x04000015 RID: 21 + public byte MarginColorRed; + + // Token: 0x04000016 RID: 22 + public byte MarginColorGreen; + + // Token: 0x04000017 RID: 23 + public byte MarginColorBlue; + + // Token: 0x04000018 RID: 24 + public int BorderStyle; + + // Token: 0x04000019 RID: 25 + public bool TopMost; + + // Token: 0x02000005 RID: 5 + public enum EnumBorderStyle + { + // Token: 0x0400001B RID: 27 + Bevel, + // Token: 0x0400001C RID: 28 + Solid, + // Token: 0x0400001D RID: 29 + Window + } + } +} diff --git a/SETUNA/Main/StyleItems/CMoveStyleItem.cs b/SETUNA/Main/StyleItems/CMoveStyleItem.cs new file mode 100644 index 0000000..d1ee8a3 --- /dev/null +++ b/SETUNA/Main/StyleItems/CMoveStyleItem.cs @@ -0,0 +1,173 @@ +using System; +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x02000062 RID: 98 + public class CMoveStyleItem : CStyleItem + { + // Token: 0x17000085 RID: 133 + // (get) Token: 0x06000373 RID: 883 RVA: 0x00015DCA File Offset: 0x00013FCA + // (set) Token: 0x06000372 RID: 882 RVA: 0x00015D97 File Offset: 0x00013F97 + public int Top + { + get => _top; + set + { + if (value > CMoveStyleItem.MAX_MOVE) + { + _top = CMoveStyleItem.MAX_MOVE; + return; + } + if (value < -CMoveStyleItem.MAX_MOVE) + { + _top = -CMoveStyleItem.MAX_MOVE; + return; + } + _top = value; + } + } + + // Token: 0x17000086 RID: 134 + // (get) Token: 0x06000375 RID: 885 RVA: 0x00015E05 File Offset: 0x00014005 + // (set) Token: 0x06000374 RID: 884 RVA: 0x00015DD2 File Offset: 0x00013FD2 + public int Left + { + get => _left; + set + { + if (value > CMoveStyleItem.MAX_MOVE) + { + _left = CMoveStyleItem.MAX_MOVE; + return; + } + if (value < -CMoveStyleItem.MAX_MOVE) + { + _left = -CMoveStyleItem.MAX_MOVE; + return; + } + _left = value; + } + } + + // Token: 0x06000376 RID: 886 RVA: 0x00015E0D File Offset: 0x0001400D + public CMoveStyleItem() + { + Top = 0; + Left = 0; + } + + // Token: 0x06000377 RID: 887 RVA: 0x00015E23 File Offset: 0x00014023 + public override string GetName() + { + return "Move"; + } + + // Token: 0x06000378 RID: 888 RVA: 0x00015E2A File Offset: 0x0001402A + public override string GetDisplayName() + { + return "参考图的移动"; + } + + // Token: 0x06000379 RID: 889 RVA: 0x00015E31 File Offset: 0x00014031 + public override string GetDescription() + { + return "上下左右移动参考图。"; + } + + // Token: 0x0600037A RID: 890 RVA: 0x00015E38 File Offset: 0x00014038 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + var targetLocation = new Point(scrap.TargetLocation.X, scrap.TargetLocation.Y); + targetLocation.X += Left; + targetLocation.Y += Top; + scrap.TargetLocation = targetLocation; + } + + // Token: 0x0600037B RID: 891 RVA: 0x00015E9A File Offset: 0x0001409A + protected override ToolBoxForm GetToolBoxForm() + { + return new MoveStyleItemPanel(this); + } + + // Token: 0x0600037C RID: 892 RVA: 0x00015EA4 File Offset: 0x000140A4 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var cmoveStyleItem = (CMoveStyleItem)newOwn; + Top = cmoveStyleItem.Top; + Left = cmoveStyleItem.Left; + } + + // Token: 0x17000087 RID: 135 + // (get) Token: 0x0600037D RID: 893 RVA: 0x00015ED0 File Offset: 0x000140D0 + public override string StateText + { + get + { + var text = ""; + if (_top < 0) + { + object obj = text; + text = string.Concat(new object[] + { + obj, + "上:", + Math.Abs(_top), + "px " + }); + } + if (_top > 0) + { + object obj2 = text; + text = string.Concat(new object[] + { + obj2, + "下:", + Math.Abs(_top), + "px " + }); + } + if (_left < 0) + { + object obj3 = text; + text = string.Concat(new object[] + { + obj3, + "左:", + Math.Abs(_left), + "px " + }); + } + if (_left > 0) + { + object obj4 = text; + text = string.Concat(new object[] + { + obj4, + "右:", + Math.Abs(_left), + "px " + }); + } + return text; + } + } + + // Token: 0x0600037E RID: 894 RVA: 0x00015FFA File Offset: 0x000141FA + public override Bitmap GetIcon() + { + return Resources.Icon_Move; + } + + // Token: 0x040001F0 RID: 496 + public static int MAX_MOVE = 1000; + + // Token: 0x040001F1 RID: 497 + protected int _top; + + // Token: 0x040001F2 RID: 498 + protected int _left; + } +} diff --git a/SETUNA/Main/StyleItems/COpacityStyleItem.cs b/SETUNA/Main/StyleItems/COpacityStyleItem.cs new file mode 100644 index 0000000..9d2010f --- /dev/null +++ b/SETUNA/Main/StyleItems/COpacityStyleItem.cs @@ -0,0 +1,123 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x02000061 RID: 97 + public class COpacityStyleItem : CStyleItem + { + // Token: 0x06000368 RID: 872 RVA: 0x00015C37 File Offset: 0x00013E37 + public COpacityStyleItem() + { + Opacity = 100; + Absolute = true; + } + + // Token: 0x17000084 RID: 132 + // (get) Token: 0x0600036A RID: 874 RVA: 0x00015C62 File Offset: 0x00013E62 + // (set) Token: 0x06000369 RID: 873 RVA: 0x00015C4E File Offset: 0x00013E4E + public int Opacity + { + get => (int)(_opacity * 100.0); + set => _opacity = value / 100.0; + } + + // Token: 0x0600036B RID: 875 RVA: 0x00015C78 File Offset: 0x00013E78 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + if (Absolute) + { + if (_opacity > 1.0) + { + scrap.ActiveOpacity = 1.0; + return; + } + if (_opacity < 0.01) + { + scrap.ActiveOpacity = 0.01; + return; + } + scrap.ActiveOpacity = _opacity; + return; + } + else + { + if (scrap.ActiveOpacity + _opacity > 1.0) + { + scrap.ActiveOpacity = 1.0; + return; + } + if (scrap.ActiveOpacity + _opacity < 0.01) + { + scrap.ActiveOpacity = 0.01; + return; + } + scrap.ActiveOpacity += _opacity; + return; + } + } + + // Token: 0x0600036C RID: 876 RVA: 0x00015D47 File Offset: 0x00013F47 + public override string GetName() + { + return "Opacity"; + } + + // Token: 0x0600036D RID: 877 RVA: 0x00015D4E File Offset: 0x00013F4E + public override string GetDisplayName() + { + return "不透明度"; + } + + // Token: 0x0600036E RID: 878 RVA: 0x00015D55 File Offset: 0x00013F55 + public override string GetDescription() + { + return "设置不透明的参考图。"; + } + + // Token: 0x0600036F RID: 879 RVA: 0x00015D5C File Offset: 0x00013F5C + protected override ToolBoxForm GetToolBoxForm() + { + return new OpacityStyleItemPanel(this); + } + + // Token: 0x06000370 RID: 880 RVA: 0x00015D64 File Offset: 0x00013F64 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var copacityStyleItem = (COpacityStyleItem)newOwn; + Opacity = copacityStyleItem.Opacity; + Absolute = copacityStyleItem.Absolute; + } + + // Token: 0x06000371 RID: 881 RVA: 0x00015D90 File Offset: 0x00013F90 + public override Bitmap GetIcon() + { + return Resources.Icon_Opacoty; + } + + // Token: 0x040001E8 RID: 488 + public const int OpacityRelativeMin = -99; + + // Token: 0x040001E9 RID: 489 + public const int OpacityRelativeMax = 99; + + // Token: 0x040001EA RID: 490 + public const int OpacityRelativeDefault = 0; + + // Token: 0x040001EB RID: 491 + public const int OpacityFixedMin = 1; + + // Token: 0x040001EC RID: 492 + public const int OpacityFixedMax = 100; + + // Token: 0x040001ED RID: 493 + public const int OpacityFixedDefault = 100; + + // Token: 0x040001EE RID: 494 + protected double _opacity; + + // Token: 0x040001EF RID: 495 + public bool Absolute; + } +} diff --git a/SETUNA/Main/StyleItems/CPaintStyleItem.cs b/SETUNA/Main/StyleItems/CPaintStyleItem.cs new file mode 100644 index 0000000..aec663a --- /dev/null +++ b/SETUNA/Main/StyleItems/CPaintStyleItem.cs @@ -0,0 +1,53 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000098 RID: 152 + public class CPaintStyleItem : CStyleItem + { + // Token: 0x06000501 RID: 1281 RVA: 0x000238F4 File Offset: 0x00021AF4 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + using (var scrapPaintWindow = new ScrapPaintWindow(scrap)) + { + scrapPaintWindow.ShowDialog(); + } + scrap.Refresh(); + } + + // Token: 0x06000502 RID: 1282 RVA: 0x00023938 File Offset: 0x00021B38 + public override string GetName() + { + return "Paint"; + } + + // Token: 0x06000503 RID: 1283 RVA: 0x0002393F File Offset: 0x00021B3F + public override string GetDisplayName() + { + return "绘制"; + } + + // Token: 0x06000504 RID: 1284 RVA: 0x00023946 File Offset: 0x00021B46 + public override string GetDescription() + { + return "可以直接在参考图上绘制。"; + } + + // Token: 0x06000505 RID: 1285 RVA: 0x0002394D File Offset: 0x00021B4D + protected override ToolBoxForm GetToolBoxForm() + { + return new NothingStyleItemPanel(this); + } + + // Token: 0x06000506 RID: 1286 RVA: 0x00023955 File Offset: 0x00021B55 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + } + + // Token: 0x06000507 RID: 1287 RVA: 0x00023957 File Offset: 0x00021B57 + public override Bitmap GetIcon() + { + return null; + } + } +} diff --git a/SETUNA/Main/StyleItems/CPasteStyleItem.cs b/SETUNA/Main/StyleItems/CPasteStyleItem.cs new file mode 100644 index 0000000..1bb2269 --- /dev/null +++ b/SETUNA/Main/StyleItems/CPasteStyleItem.cs @@ -0,0 +1,90 @@ +using System.Drawing; +using System.IO; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x0200005D RID: 93 + public class CPasteStyleItem : CStyleItem + { + // Token: 0x0600033D RID: 829 RVA: 0x00015674 File Offset: 0x00013874 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + Image image = null; + if (Clipboard.ContainsImage()) + { + image = Clipboard.GetImage(); + } + else if (Clipboard.ContainsText()) + { + var text = Clipboard.GetText(); + if (File.Exists(text)) + { + FileStream fileStream = null; + try + { + fileStream = new FileStream(text, FileMode.Open, FileAccess.Read); + image = (Bitmap)Image.FromStream(fileStream); + fileStream.Close(); + fileStream = null; + } + catch + { + } + finally + { + if (fileStream != null) + { + fileStream.Close(); + } + } + } + } + if (image != null) + { + scrap.Manager.AddScrap(image, scrap.Left, scrap.Top, image.Width, image.Height); + } + } + + // Token: 0x0600033E RID: 830 RVA: 0x00015720 File Offset: 0x00013920 + public override string GetName() + { + return "Paste"; + } + + // Token: 0x0600033F RID: 831 RVA: 0x00015727 File Offset: 0x00013927 + public override string GetDisplayName() + { + return "从剪贴板粘贴"; + } + + // Token: 0x06000340 RID: 832 RVA: 0x0001572E File Offset: 0x0001392E + public override string GetDescription() + { + return "将剪贴板内的图像作为参考图。"; + } + + // Token: 0x06000341 RID: 833 RVA: 0x00015735 File Offset: 0x00013935 + protected override ToolBoxForm GetToolBoxForm() + { + return new NothingStyleItemPanel(this); + } + + // Token: 0x06000342 RID: 834 RVA: 0x0001573D File Offset: 0x0001393D + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + } + + // Token: 0x1700007D RID: 125 + // (get) Token: 0x06000343 RID: 835 RVA: 0x0001573F File Offset: 0x0001393F + public override bool IsInitApply => false; + + // Token: 0x06000344 RID: 836 RVA: 0x00015742 File Offset: 0x00013942 + public override Bitmap GetIcon() + { + return Resources.Icon_Paste; + } + } +} diff --git a/SETUNA/Main/StyleItems/CPicasaUploaderStyleItem.cs b/SETUNA/Main/StyleItems/CPicasaUploaderStyleItem.cs new file mode 100644 index 0000000..2b6ee98 --- /dev/null +++ b/SETUNA/Main/StyleItems/CPicasaUploaderStyleItem.cs @@ -0,0 +1,146 @@ +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x0200008C RID: 140 + public class CPicasaUploaderStyleItem : CStyleItem + { + // Token: 0x170000AE RID: 174 + // (get) Token: 0x0600048D RID: 1165 RVA: 0x0001D917 File Offset: 0x0001BB17 + // (set) Token: 0x0600048C RID: 1164 RVA: 0x0001D915 File Offset: 0x0001BB15 + public string AlbumName + { + get => "SETUNA"; + set + { + } + } + + // Token: 0x170000AF RID: 175 + // (get) Token: 0x0600048F RID: 1167 RVA: 0x0001D920 File Offset: 0x0001BB20 + // (set) Token: 0x0600048E RID: 1166 RVA: 0x0001D91E File Offset: 0x0001BB1E + public string AlbumComment + { + get => "用SETUNA上传的相册。"; + set + { + } + } + + // Token: 0x170000B0 RID: 176 + // (get) Token: 0x06000491 RID: 1169 RVA: 0x0001D929 File Offset: 0x0001BB29 + // (set) Token: 0x06000490 RID: 1168 RVA: 0x0001D927 File Offset: 0x0001BB27 + public bool IsPublic + { + get => false; + set + { + } + } + + // Token: 0x170000B1 RID: 177 + // (get) Token: 0x06000493 RID: 1171 RVA: 0x0001D935 File Offset: 0x0001BB35 + // (set) Token: 0x06000492 RID: 1170 RVA: 0x0001D92C File Offset: 0x0001BB2C + public byte[] ID + { + get => _id ?? new byte[0]; + set => _id = value; + } + + // Token: 0x170000B2 RID: 178 + // (get) Token: 0x06000495 RID: 1173 RVA: 0x0001D950 File Offset: 0x0001BB50 + // (set) Token: 0x06000494 RID: 1172 RVA: 0x0001D947 File Offset: 0x0001BB47 + public byte[] Pass + { + get => _pass ?? new byte[0]; + set => _pass = value; + } + + // Token: 0x170000B3 RID: 179 + // (get) Token: 0x06000497 RID: 1175 RVA: 0x0001D972 File Offset: 0x0001BB72 + // (set) Token: 0x06000496 RID: 1174 RVA: 0x0001D962 File Offset: 0x0001BB62 + public byte Manage + { + get => _manage; + set + { + if (value > 2) + { + value = 2; + } + _manage = value; + } + } + + // Token: 0x06000498 RID: 1176 RVA: 0x0001D97C File Offset: 0x0001BB7C + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + var scrapBase = scrap; + var picasaBar = new PicasaBar + { + SendImage = scrapBase.Image, + ID = ID, + Pass = Pass, + AlbumName = AlbumName, + AlbumComment = AlbumComment, + AlbumPublic = IsPublic, + StartPosition = FormStartPosition.Manual, + TopMost = true + }; + picasaBar.Left = scrap.Left + scrap.Width / 2 - picasaBar.Width / 2; + picasaBar.Top = scrap.Top + scrap.Height / 2 - picasaBar.Height / 2; + picasaBar.Show(); + } + + // Token: 0x06000499 RID: 1177 RVA: 0x0001DA2E File Offset: 0x0001BC2E + public override string GetName() + { + return "PicasaUploader"; + } + + // Token: 0x0600049A RID: 1178 RVA: 0x0001DA35 File Offset: 0x0001BC35 + public override string GetDisplayName() + { + return "上传到Picasa"; + } + + // Token: 0x0600049B RID: 1179 RVA: 0x0001DA3C File Offset: 0x0001BC3C + public override string GetDescription() + { + return "把参考图上传到Picasa网络相册。"; + } + + // Token: 0x0600049C RID: 1180 RVA: 0x0001DA43 File Offset: 0x0001BC43 + protected override ToolBoxForm GetToolBoxForm() + { + return new PicasaStyleItemPanel(this); + } + + // Token: 0x0600049D RID: 1181 RVA: 0x0001DA4C File Offset: 0x0001BC4C + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var cpicasaUploaderStyleItem = (CPicasaUploaderStyleItem)newOwn; + ID = cpicasaUploaderStyleItem.ID; + Pass = cpicasaUploaderStyleItem.Pass; + Manage = cpicasaUploaderStyleItem.Manage; + } + + // Token: 0x0600049E RID: 1182 RVA: 0x0001DA84 File Offset: 0x0001BC84 + public override Bitmap GetIcon() + { + return Resources.Icon_Picasa; + } + + // Token: 0x040002C2 RID: 706 + private byte[] _id; + + // Token: 0x040002C3 RID: 707 + private byte[] _pass; + + // Token: 0x040002C4 RID: 708 + private byte _manage; + } +} diff --git a/SETUNA/Main/StyleItems/CRotateStyleItem.cs b/SETUNA/Main/StyleItems/CRotateStyleItem.cs new file mode 100644 index 0000000..e964050 --- /dev/null +++ b/SETUNA/Main/StyleItems/CRotateStyleItem.cs @@ -0,0 +1,115 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x0200005F RID: 95 + public class CRotateStyleItem : CStyleItem + { + // Token: 0x06000351 RID: 849 RVA: 0x000158BD File Offset: 0x00013ABD + public CRotateStyleItem() + { + Rotate = 0; + VerticalReflection = false; + HorizonReflection = false; + } + + // Token: 0x06000352 RID: 850 RVA: 0x000158DC File Offset: 0x00013ADC + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + var flag = false; + var image = scrap.Image; + var rotate = Rotate; + if (rotate != 90) + { + if (rotate != 180) + { + if (rotate == 270) + { + image.RotateFlip(RotateFlipType.Rotate270FlipNone); + flag = true; + } + } + else + { + image.RotateFlip(RotateFlipType.Rotate180FlipNone); + } + } + else + { + image.RotateFlip(RotateFlipType.Rotate90FlipNone); + flag = true; + } + if (VerticalReflection) + { + image.RotateFlip(RotateFlipType.Rotate180FlipX); + } + if (HorizonReflection) + { + image.RotateFlip(RotateFlipType.RotateNoneFlipX); + } + if (flag) + { + var width = scrap.ClientSize.Width; + var height = scrap.ClientSize.Height; + var left = scrap.Location.X + (width - height) / 2; + var top = scrap.Location.Y + (height - width) / 2; + scrap.SuspendLayout(); + scrap.ClientSize = new Size(height, width); + scrap.Left = left; + scrap.Top = top; + scrap.ResumeLayout(); + } + scrap.Refresh(); + } + + // Token: 0x06000353 RID: 851 RVA: 0x000159DD File Offset: 0x00013BDD + public override string GetName() + { + return "Rotate"; + } + + // Token: 0x06000354 RID: 852 RVA: 0x000159E4 File Offset: 0x00013BE4 + public override string GetDisplayName() + { + return "旋转和翻转"; + } + + // Token: 0x06000355 RID: 853 RVA: 0x000159EB File Offset: 0x00013BEB + public override string GetDescription() + { + return "旋转和翻转参考图。"; + } + + // Token: 0x06000356 RID: 854 RVA: 0x000159F2 File Offset: 0x00013BF2 + protected override ToolBoxForm GetToolBoxForm() + { + return new RotateStyleItemPanel(this); + } + + // Token: 0x06000357 RID: 855 RVA: 0x000159FC File Offset: 0x00013BFC + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var crotateStyleItem = (CRotateStyleItem)newOwn; + Rotate = crotateStyleItem.Rotate; + VerticalReflection = crotateStyleItem.VerticalReflection; + HorizonReflection = crotateStyleItem.HorizonReflection; + } + + // Token: 0x06000358 RID: 856 RVA: 0x00015A34 File Offset: 0x00013C34 + public override Bitmap GetIcon() + { + return Resources.Icon_Rotate; + } + + // Token: 0x040001DB RID: 475 + public int Rotate; + + // Token: 0x040001DC RID: 476 + public bool VerticalReflection; + + // Token: 0x040001DD RID: 477 + public bool HorizonReflection; + } +} diff --git a/SETUNA/Main/StyleItems/CScaleStyleItem.cs b/SETUNA/Main/StyleItems/CScaleStyleItem.cs new file mode 100644 index 0000000..50e1c2c --- /dev/null +++ b/SETUNA/Main/StyleItems/CScaleStyleItem.cs @@ -0,0 +1,210 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x02000060 RID: 96 + public class CScaleStyleItem : CStyleItem + { + // Token: 0x06000359 RID: 857 RVA: 0x00015A3B File Offset: 0x00013C3B + public CScaleStyleItem() + { + Value = 100; + } + + // Token: 0x17000080 RID: 128 + // (get) Token: 0x0600035B RID: 859 RVA: 0x00015A54 File Offset: 0x00013C54 + // (set) Token: 0x0600035A RID: 858 RVA: 0x00015A4B File Offset: 0x00013C4B + public int Value + { + get => _scalevalue; + set => _scalevalue = value; + } + + // Token: 0x17000081 RID: 129 + // (get) Token: 0x0600035D RID: 861 RVA: 0x00015A65 File Offset: 0x00013C65 + // (set) Token: 0x0600035C RID: 860 RVA: 0x00015A5C File Offset: 0x00013C5C + public CScaleStyleItem.ScaleSetType SetType + { + get => _fixed; + set => _fixed = value; + } + + // Token: 0x17000082 RID: 130 + // (get) Token: 0x0600035F RID: 863 RVA: 0x00015AA0 File Offset: 0x00013CA0 + // (set) Token: 0x0600035E RID: 862 RVA: 0x00015A70 File Offset: 0x00013C70 + public InterpolationMode InterpolationMode + { + get => _interpolationmode; + set + { + try + { + _interpolationmode = value; + } + catch + { + _interpolationmode = InterpolationMode.HighQualityBicubic; + } + } + } + + // Token: 0x06000360 RID: 864 RVA: 0x00015AA8 File Offset: 0x00013CA8 + public override string GetName() + { + return "Zoom"; + } + + // Token: 0x06000361 RID: 865 RVA: 0x00015AAF File Offset: 0x00013CAF + public override string GetDisplayName() + { + return "缩放参考图"; + } + + // Token: 0x06000362 RID: 866 RVA: 0x00015AB6 File Offset: 0x00013CB6 + public override string GetDescription() + { + return "用于缩小/扩大参考图。"; + } + + // Token: 0x06000363 RID: 867 RVA: 0x00015AC0 File Offset: 0x00013CC0 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + if (_fixed == CScaleStyleItem.ScaleSetType.Fixed) + { + scrap.Scale = _scalevalue; + } + else + { + scrap.Scale += _scalevalue; + } + if (_interpolationmode != InterpolationMode.Invalid) + { + if (_interpolationmode != InterpolationMode.Low) + { + scrap.InterpolationMode = _interpolationmode; + } + else + { + var interpolationMode = scrap.InterpolationMode; + if (interpolationMode != InterpolationMode.High) + { + switch (interpolationMode) + { + case InterpolationMode.HighQualityBilinear: + scrap.InterpolationMode = InterpolationMode.HighQualityBicubic; + break; + case InterpolationMode.HighQualityBicubic: + scrap.InterpolationMode = InterpolationMode.NearestNeighbor; + break; + default: + scrap.InterpolationMode = InterpolationMode.High; + break; + } + } + else + { + scrap.InterpolationMode = InterpolationMode.HighQualityBilinear; + } + } + } + scrap.Refresh(); + } + + // Token: 0x06000364 RID: 868 RVA: 0x00015B64 File Offset: 0x00013D64 + protected override ToolBoxForm GetToolBoxForm() + { + return new ScaleStyleItemPanel(this); + } + + // Token: 0x06000365 RID: 869 RVA: 0x00015B6C File Offset: 0x00013D6C + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var cscaleStyleItem = (CScaleStyleItem)newOwn; + Value = cscaleStyleItem.Value; + SetType = cscaleStyleItem.SetType; + InterpolationMode = cscaleStyleItem.InterpolationMode; + } + + // Token: 0x17000083 RID: 131 + // (get) Token: 0x06000366 RID: 870 RVA: 0x00015BA4 File Offset: 0x00013DA4 + public override string StateText + { + get + { + var result = ""; + if (_fixed == CScaleStyleItem.ScaleSetType.Fixed) + { + if (_scalevalue == 100) + { + result = "原始大小"; + } + else + { + result = _scalevalue.ToString() + "% 固定"; + } + } + else + { + if (_scalevalue > 0) + { + result = _scalevalue.ToString() + "% 扩大"; + } + if (_scalevalue < 0) + { + result = Math.Abs(_scalevalue).ToString() + "% 缩小"; + } + } + return result; + } + } + + // Token: 0x06000367 RID: 871 RVA: 0x00015C30 File Offset: 0x00013E30 + public override Bitmap GetIcon() + { + return Resources.Icon_Scale; + } + + // Token: 0x040001DE RID: 478 + public const int FixedScaleMin = 10; + + // Token: 0x040001DF RID: 479 + public const int FixedScaleMax = 200; + + // Token: 0x040001E0 RID: 480 + public const int FixedScaleDefault = 100; + + // Token: 0x040001E1 RID: 481 + public const int RelativeScaleMin = -190; + + // Token: 0x040001E2 RID: 482 + public const int RelativeScaleMax = 190; + + // Token: 0x040001E3 RID: 483 + public const int RelativeScaleDefault = 0; + + // Token: 0x040001E4 RID: 484 + public const InterpolationMode DefaultInterpolation = InterpolationMode.HighQualityBicubic; + + // Token: 0x040001E5 RID: 485 + protected int _scalevalue; + + // Token: 0x040001E6 RID: 486 + protected CScaleStyleItem.ScaleSetType _fixed; + + // Token: 0x040001E7 RID: 487 + protected InterpolationMode _interpolationmode; + + // Token: 0x02000066 RID: 102 + public enum ScaleSetType + { + // Token: 0x040001F9 RID: 505 + Fixed, + // Token: 0x040001FA RID: 506 + Increment + } + } +} diff --git a/SETUNA/Main/StyleItems/CStyleItem.cs b/SETUNA/Main/StyleItems/CStyleItem.cs new file mode 100644 index 0000000..312ae88 --- /dev/null +++ b/SETUNA/Main/StyleItems/CStyleItem.cs @@ -0,0 +1,100 @@ +using System; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000007 RID: 7 + public abstract class CStyleItem : IScrapStyle, ICloneable + { + // Token: 0x06000026 RID: 38 RVA: 0x000033A4 File Offset: 0x000015A4 + public CStyleItem() + { + } + + // Token: 0x06000027 RID: 39 RVA: 0x000033AC File Offset: 0x000015AC + public override string ToString() + { + return GetDisplayName(); + } + + // Token: 0x17000007 RID: 7 + // (get) Token: 0x06000028 RID: 40 RVA: 0x000033B4 File Offset: 0x000015B4 + public bool IsSetting => !(GetToolBoxForm() is NothingStyleItemPanel); + + // Token: 0x06000029 RID: 41 RVA: 0x000033C8 File Offset: 0x000015C8 + public void StyleItemSetting() + { + var toolBoxForm = GetToolBoxForm(); + toolBoxForm.ShowDialog(); + if (toolBoxForm.DialogResult == DialogResult.OK) + { + SetTunedStyleItem((CStyleItem)toolBoxForm.StyleItem); + } + } + + // Token: 0x0600002A RID: 42 RVA: 0x000033FD File Offset: 0x000015FD + public void Apply(ref ScrapBase scrap, out int waitinterval, Point clickpoint) + { + _waitinterval = 0; + Apply(ref scrap, clickpoint); + waitinterval = _waitinterval; + } + + // Token: 0x17000008 RID: 8 + // (get) Token: 0x0600002B RID: 43 RVA: 0x00003416 File Offset: 0x00001616 + public virtual string StateText => ""; + + // Token: 0x17000009 RID: 9 + // (get) Token: 0x0600002C RID: 44 RVA: 0x0000341D File Offset: 0x0000161D + public virtual string NameAndState + { + get + { + if (StateText == "") + { + return GetDisplayName(); + } + return GetDisplayName() + " (" + StateText + ")"; + } + } + + // Token: 0x1700000A RID: 10 + // (get) Token: 0x0600002D RID: 45 RVA: 0x00003453 File Offset: 0x00001653 + public virtual bool IsTerminate => false; + + // Token: 0x1700000B RID: 11 + // (get) Token: 0x0600002E RID: 46 RVA: 0x00003456 File Offset: 0x00001656 + public virtual bool IsInitApply => true; + + // Token: 0x0600002F RID: 47 + public abstract void Apply(ref ScrapBase scrap, Point clickpoint); + + // Token: 0x06000030 RID: 48 + public abstract string GetName(); + + // Token: 0x06000031 RID: 49 + public abstract string GetDisplayName(); + + // Token: 0x06000032 RID: 50 + public abstract string GetDescription(); + + // Token: 0x06000033 RID: 51 + protected abstract ToolBoxForm GetToolBoxForm(); + + // Token: 0x06000034 RID: 52 + protected abstract void SetTunedStyleItem(CStyleItem newOwn); + + // Token: 0x06000035 RID: 53 + public abstract Bitmap GetIcon(); + + // Token: 0x06000036 RID: 54 RVA: 0x00003459 File Offset: 0x00001659 + public object Clone() + { + return base.MemberwiseClone(); + } + + // Token: 0x04000020 RID: 32 + protected int _waitinterval; + } +} diff --git a/SETUNA/Main/StyleItems/CTimerStyleItem.cs b/SETUNA/Main/StyleItems/CTimerStyleItem.cs new file mode 100644 index 0000000..82849e7 --- /dev/null +++ b/SETUNA/Main/StyleItems/CTimerStyleItem.cs @@ -0,0 +1,103 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000095 RID: 149 + public class CTimerStyleItem : CStyleItem + { + // Token: 0x170000B5 RID: 181 + // (get) Token: 0x060004EA RID: 1258 RVA: 0x000233DB File Offset: 0x000215DB + // (set) Token: 0x060004E9 RID: 1257 RVA: 0x000233AA File Offset: 0x000215AA + public uint Interval + { + get => interval; + set + { + if (value < CTimerStyleItem.MIN_INTERVAL) + { + interval = CTimerStyleItem.MIN_INTERVAL; + return; + } + if (value > CTimerStyleItem.MAX_INTERVAL) + { + interval = CTimerStyleItem.MAX_INTERVAL; + return; + } + interval = value; + } + } + + // Token: 0x060004EB RID: 1259 RVA: 0x000233E3 File Offset: 0x000215E3 + public CTimerStyleItem() + { + Interval = 1000U; + } + + // Token: 0x060004EC RID: 1260 RVA: 0x000233F6 File Offset: 0x000215F6 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + _waitinterval = (int)Interval; + } + + // Token: 0x060004ED RID: 1261 RVA: 0x00023404 File Offset: 0x00021604 + public override string GetName() + { + return "Timer"; + } + + // Token: 0x060004EE RID: 1262 RVA: 0x0002340B File Offset: 0x0002160B + public override string GetDisplayName() + { + return "定时器"; + } + + // Token: 0x060004EF RID: 1263 RVA: 0x00023412 File Offset: 0x00021612 + public override string GetDescription() + { + return "指定的时间内,暂停。"; + } + + // Token: 0x060004F0 RID: 1264 RVA: 0x00023419 File Offset: 0x00021619 + protected override ToolBoxForm GetToolBoxForm() + { + return new TimerStyleItemPanel(this); + } + + // Token: 0x060004F1 RID: 1265 RVA: 0x00023424 File Offset: 0x00021624 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var ctimerStyleItem = (CTimerStyleItem)newOwn; + interval = ctimerStyleItem.interval; + } + + // Token: 0x170000B6 RID: 182 + // (get) Token: 0x060004F2 RID: 1266 RVA: 0x00023444 File Offset: 0x00021644 + public override string StateText + { + get + { + var result = ""; + if (interval > 0U) + { + result = Interval.ToString() + "ms"; + } + return result; + } + } + + // Token: 0x060004F3 RID: 1267 RVA: 0x0002347A File Offset: 0x0002167A + public override Bitmap GetIcon() + { + return null; + } + + // Token: 0x0400032D RID: 813 + public static uint MIN_INTERVAL = 100U; + + // Token: 0x0400032E RID: 814 + public static uint MAX_INTERVAL = 60000U; + + // Token: 0x0400032F RID: 815 + protected uint interval; + } +} diff --git a/SETUNA/Main/StyleItems/CToneReverseStyleItem.cs b/SETUNA/Main/StyleItems/CToneReverseStyleItem.cs new file mode 100644 index 0000000..d2a9609 --- /dev/null +++ b/SETUNA/Main/StyleItems/CToneReverseStyleItem.cs @@ -0,0 +1,62 @@ +using System.Drawing; +using System.Drawing.Imaging; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000097 RID: 151 + public class CToneReverseStyleItem : CStyleItem + { + // Token: 0x060004F9 RID: 1273 RVA: 0x0002380C File Offset: 0x00021A0C + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + using (var graphics = Graphics.FromImage(scrap.Image)) + { + var colorMatrix = new ColorMatrix + { + Matrix00 = -1f, + Matrix11 = -1f, + Matrix22 = -1f + }; + var imageAttributes = new ImageAttributes(); + imageAttributes.SetColorMatrix(colorMatrix); + graphics.DrawImage(scrap.Image, new Rectangle(0, 0, scrap.Image.Width, scrap.Image.Height), 0, 0, scrap.Image.Width, scrap.Image.Height, GraphicsUnit.Pixel, imageAttributes); + } + scrap.Refresh(); + } + + // Token: 0x060004FA RID: 1274 RVA: 0x000238C8 File Offset: 0x00021AC8 + public override string GetName() + { + return "ToneReverse"; + } + + // Token: 0x060004FB RID: 1275 RVA: 0x000238CF File Offset: 0x00021ACF + public override string GetDisplayName() + { + return "灰度等级翻转"; + } + + // Token: 0x060004FC RID: 1276 RVA: 0x000238D6 File Offset: 0x00021AD6 + public override string GetDescription() + { + return "进行灰度等级翻转。"; + } + + // Token: 0x060004FD RID: 1277 RVA: 0x000238DD File Offset: 0x00021ADD + protected override ToolBoxForm GetToolBoxForm() + { + return new NothingStyleItemPanel(this); + } + + // Token: 0x060004FE RID: 1278 RVA: 0x000238E5 File Offset: 0x00021AE5 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + } + + // Token: 0x060004FF RID: 1279 RVA: 0x000238E7 File Offset: 0x00021AE7 + public override Bitmap GetIcon() + { + return null; + } + } +} diff --git a/SETUNA/Main/StyleItems/CTrimStyleItem.cs b/SETUNA/Main/StyleItems/CTrimStyleItem.cs new file mode 100644 index 0000000..f48b9e2 --- /dev/null +++ b/SETUNA/Main/StyleItems/CTrimStyleItem.cs @@ -0,0 +1,70 @@ +using System.Drawing; +using System.Drawing.Imaging; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x02000065 RID: 101 + public class CTrimStyleItem : CStyleItem + { + // Token: 0x06000393 RID: 915 RVA: 0x00016110 File Offset: 0x00014310 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + using (var trimWindow = new TrimWindow(scrap)) + { + if (trimWindow.ShowDialog() == DialogResult.OK) + { + using (var bitmap = new Bitmap(trimWindow.TrimRectangle.Width, trimWindow.TrimRectangle.Height, PixelFormat.Format24bppRgb)) + { + using (var graphics = Graphics.FromImage(bitmap)) + { + graphics.DrawImage(scrap.Image, 0, 0, new Rectangle(trimWindow.TrimLeft, trimWindow.TrimTop, trimWindow.TrimRectangle.Width, trimWindow.TrimRectangle.Height), GraphicsUnit.Pixel); + } + scrap.Image = bitmap; + scrap.Left += trimWindow.TrimLeft; + scrap.Top += trimWindow.TrimTop; + scrap.Focus(); + } + } + } + scrap.Refresh(); + } + + // Token: 0x06000394 RID: 916 RVA: 0x0001622C File Offset: 0x0001442C + public override string GetName() + { + return "Trim"; + } + + // Token: 0x06000395 RID: 917 RVA: 0x00016233 File Offset: 0x00014433 + public override string GetDisplayName() + { + return "修剪"; + } + + // Token: 0x06000396 RID: 918 RVA: 0x0001623A File Offset: 0x0001443A + public override string GetDescription() + { + return "您可以删除不需要的部分。"; + } + + // Token: 0x06000397 RID: 919 RVA: 0x00016241 File Offset: 0x00014441 + protected override ToolBoxForm GetToolBoxForm() + { + return new NothingStyleItemPanel(this); + } + + // Token: 0x06000398 RID: 920 RVA: 0x00016249 File Offset: 0x00014449 + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + } + + // Token: 0x06000399 RID: 921 RVA: 0x0001624B File Offset: 0x0001444B + public override Bitmap GetIcon() + { + return Resources.Icon_Trim; + } + } +} diff --git a/SETUNA/Main/StyleItems/CWindowStyleItem.cs b/SETUNA/Main/StyleItems/CWindowStyleItem.cs new file mode 100644 index 0000000..02539c6 --- /dev/null +++ b/SETUNA/Main/StyleItems/CWindowStyleItem.cs @@ -0,0 +1,100 @@ +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200007D RID: 125 + public class CWindowStyleItem : CStyleItem + { + // Token: 0x0600041A RID: 1050 RVA: 0x0001A657 File Offset: 0x00018857 + public CWindowStyleItem() + { + IsWindow = false; + } + + // Token: 0x0600041B RID: 1051 RVA: 0x0001A668 File Offset: 0x00018868 + public override void Apply(ref ScrapBase scrap, Point clickpoint) + { + if (IsWindow) + { + if (scrap.FormBorderStyle != FormBorderStyle.FixedDialog) + { + scrap.FormBorderStyle = FormBorderStyle.FixedDialog; + scrap.ControlBox = true; + scrap.ShowInTaskbar = true; + scrap.TopMost = false; + scrap.ClientSize = scrap.Size; + scrap.Refresh(); + return; + } + } + else if (scrap.FormBorderStyle != FormBorderStyle.None) + { + scrap.FormBorderStyle = FormBorderStyle.None; + scrap.ControlBox = false; + scrap.ShowInTaskbar = false; + scrap.TopMost = true; + scrap.Refresh(); + } + } + + // Token: 0x0600041C RID: 1052 RVA: 0x0001A6ED File Offset: 0x000188ED + public override string GetName() + { + return "Window"; + } + + // Token: 0x0600041D RID: 1053 RVA: 0x0001A6F4 File Offset: 0x000188F4 + public override string GetDisplayName() + { + return "窗口化"; + } + + // Token: 0x0600041E RID: 1054 RVA: 0x0001A6FB File Offset: 0x000188FB + public override string GetDescription() + { + return "为参考图加上窗口边框。"; + } + + // Token: 0x0600041F RID: 1055 RVA: 0x0001A702 File Offset: 0x00018902 + protected override ToolBoxForm GetToolBoxForm() + { + return new WindowStyleItemPanel(this); + } + + // Token: 0x06000420 RID: 1056 RVA: 0x0001A70C File Offset: 0x0001890C + protected override void SetTunedStyleItem(CStyleItem newOwn) + { + var cwindowStyleItem = (CWindowStyleItem)newOwn; + IsWindow = cwindowStyleItem.IsWindow; + } + + // Token: 0x170000A0 RID: 160 + // (get) Token: 0x06000421 RID: 1057 RVA: 0x0001A72C File Offset: 0x0001892C + public override string StateText + { + get + { + string result; + if (IsWindow) + { + result = "是"; + } + else + { + result = "否"; + } + return result; + } + } + + // Token: 0x06000422 RID: 1058 RVA: 0x0001A756 File Offset: 0x00018956 + public override Bitmap GetIcon() + { + return null; + } + + // Token: 0x04000274 RID: 628 + public bool IsWindow; + } +} diff --git a/SETUNA/Main/StyleItems/CompactScrap.Designer.cs b/SETUNA/Main/StyleItems/CompactScrap.Designer.cs new file mode 100644 index 0000000..8de5636 --- /dev/null +++ b/SETUNA/Main/StyleItems/CompactScrap.Designer.cs @@ -0,0 +1,54 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200007B RID: 123 + partial class CompactScrap + { + // Token: 0x06000414 RID: 1044 RVA: 0x0001A173 File Offset: 0x00018373 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x06000415 RID: 1045 RVA: 0x0001A194 File Offset: 0x00018394 + private void InitializeComponent() + { + this.SuspendLayout(); + // + // CompactScrap + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Fuchsia; + this.ClientSize = new System.Drawing.Size(50, 50); + this.ControlBox = false; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.MaximumSize = new System.Drawing.Size(50, 50); + this.MinimumSize = new System.Drawing.Size(50, 50); + this.Name = "CompactScrap"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.Text = "CompactScrap"; + this.TopMost = true; + this.TransparencyKey = System.Drawing.Color.Fuchsia; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.CompactScrap_FormClosed); + this.Load += new System.EventHandler(this.CompactScrap_Load); + this.DoubleClick += new System.EventHandler(this.CompactScrap_DoubleClick); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.CompactScrap_KeyDown); + this.Leave += new System.EventHandler(this.CompactScrap_Leave); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.CompactScrap_MouseDown); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.CompactScrap_MouseMove); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.CompactScrap_MouseUp); + this.ResumeLayout(false); + + } + + // Token: 0x0400026F RID: 623 +#pragma warning disable CS0649 // 从未对字段“CompactScrap.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“CompactScrap.components”赋值,字段将一直保持其默认值 null + } +} diff --git a/SETUNA/Main/StyleItems/CompactScrap.cs b/SETUNA/Main/StyleItems/CompactScrap.cs new file mode 100644 index 0000000..030b666 --- /dev/null +++ b/SETUNA/Main/StyleItems/CompactScrap.cs @@ -0,0 +1,189 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200007B RID: 123 + public partial class CompactScrap : BaseForm + { + // Token: 0x06000407 RID: 1031 RVA: 0x00019DF8 File Offset: 0x00017FF8 + public CompactScrap(ScrapBase scrap, CCompactStyleItem item, Point clickpoint) + { + InitializeComponent(); + this.scrap = scrap; + _thumbnail = scrap.GetViewImage(); + _dragmode = false; + if (clickpoint == Point.Empty) + { + _clickpoint = new Point(base.Width / 2, base.Height / 2); + } + else + { + _clickpoint = clickpoint; + } + _pen = new Pen(Color.FromArgb(item.LineColor), 1f); + if (!item.SoldLine) + { + _pen.DashStyle = DashStyle.Dash; + _pen.DashPattern = new float[] + { + 4f, + 4f + }; + } + else + { + _pen.DashStyle = DashStyle.Solid; + } + if (item.LineColor == Color.Fuchsia.ToArgb()) + { + BackColor = Color.Magenta; + base.TransparencyKey = Color.Magenta; + } + base.Opacity = item.Opacity / 100.0; + } + + // Token: 0x06000408 RID: 1032 RVA: 0x00019F00 File Offset: 0x00018100 + private void CompactScrap_Load(object sender, EventArgs e) + { + if (scrap != null) + { + if (scrap.Visible) + { + scrap.Visible = false; + scrap.StyleForm = this; + } + ConvertScrapPosToCompact(); + } + } + + // Token: 0x06000409 RID: 1033 RVA: 0x00019F80 File Offset: 0x00018180 + private void CompactScrap_FormClosed(object sender, FormClosedEventArgs e) + { + if (scrap != null) + { + if (!scrap.Visible) + { + scrap.Visible = true; + scrap.StyleForm = null; + scrap.RemoveStyle(typeof(CCompactStyleItem)); + } + ConvertCompactPosToScrap(); + } + } + + // Token: 0x0600040A RID: 1034 RVA: 0x00019FFE File Offset: 0x000181FE + private void CompactScrap_DoubleClick(object sender, EventArgs e) + { + _thumbnail.Dispose(); + base.Close(); + } + + // Token: 0x0600040B RID: 1035 RVA: 0x0001A014 File Offset: 0x00018214 + protected override void OnPaint(PaintEventArgs e) + { + e.Graphics.DrawImageUnscaled(_thumbnail, new Point(-_clickpoint.X + base.Width / 2, -_clickpoint.Y + base.Height / 2)); + e.Graphics.DrawRectangle(Pens.White, new Rectangle(0, 0, base.Width - 1, base.Height - 1)); + e.Graphics.DrawRectangle(_pen, new Rectangle(0, 0, base.Width - 1, base.Height - 1)); + } + + // Token: 0x0600040C RID: 1036 RVA: 0x0001A0B0 File Offset: 0x000182B0 + private void DragStart(Point pt) + { + _dragmode = true; + _dragpoint = pt; + } + + // Token: 0x0600040D RID: 1037 RVA: 0x0001A0C0 File Offset: 0x000182C0 + private void DragEnd() + { + _dragmode = false; + } + + // Token: 0x0600040E RID: 1038 RVA: 0x0001A0CC File Offset: 0x000182CC + private void DragMove(Point pt) + { + if (_dragmode) + { + base.Left += pt.X - _dragpoint.X; + base.Top += pt.Y - _dragpoint.Y; + + if (scrap != null) + { + ConvertCompactPosToScrap(); + scrap.fireScrapLocationChangedEvent(); + } + } + } + + // Token: 0x0600040F RID: 1039 RVA: 0x0001A121 File Offset: 0x00018321 + private void CompactScrap_MouseDown(object sender, MouseEventArgs e) + { + DragStart(e.Location); + } + + // Token: 0x06000410 RID: 1040 RVA: 0x0001A12F File Offset: 0x0001832F + private void CompactScrap_MouseUp(object sender, MouseEventArgs e) + { + DragEnd(); + } + + // Token: 0x06000411 RID: 1041 RVA: 0x0001A137 File Offset: 0x00018337 + private void CompactScrap_MouseMove(object sender, MouseEventArgs e) + { + DragMove(e.Location); + } + + // Token: 0x06000412 RID: 1042 RVA: 0x0001A145 File Offset: 0x00018345 + private void CompactScrap_Leave(object sender, EventArgs e) + { + DragEnd(); + } + + // Token: 0x06000413 RID: 1043 RVA: 0x0001A14D File Offset: 0x0001834D + private void CompactScrap_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape || e.KeyCode == Keys.Return || e.KeyCode == Keys.Return) + { + base.Close(); + } + } + + private void ConvertScrapPosToCompact() + { + var left = scrap.Left + _clickpoint.X - base.Width / 2; + var top = scrap.Top + _clickpoint.Y - base.Height / 2; + base.Left = left; + base.Top = top; + } + + private void ConvertCompactPosToScrap() + { + var left = base.Left + base.Width / 2 - _clickpoint.X; + var top = base.Top + base.Height / 2 - _clickpoint.Y; + scrap.Left = left; + scrap.Top = top; + } + + + // Token: 0x04000269 RID: 617 + public ScrapBase scrap; + + // Token: 0x0400026A RID: 618 + private Image _thumbnail; + + // Token: 0x0400026B RID: 619 + private bool _dragmode; + + // Token: 0x0400026C RID: 620 + private Point _dragpoint; + + // Token: 0x0400026D RID: 621 + private Pen _pen; + + // Token: 0x0400026E RID: 622 + private Point _clickpoint; + } +} diff --git a/SETUNA/Main/StyleItems/CompactScrap.resx b/SETUNA/Main/StyleItems/CompactScrap.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/CompactScrap.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/CompactStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/CompactStyleItemPanel.Designer.cs new file mode 100644 index 0000000..e7e3ba5 --- /dev/null +++ b/SETUNA/Main/StyleItems/CompactStyleItemPanel.Designer.cs @@ -0,0 +1,219 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200007A RID: 122 + partial class CompactStyleItemPanel + { + // Token: 0x060003F8 RID: 1016 RVA: 0x00019030 File Offset: 0x00017230 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.rdoDashed = new System.Windows.Forms.RadioButton(); + this.rdoSolid = new System.Windows.Forms.RadioButton(); + this.picLineColor = new System.Windows.Forms.PictureBox(); + this.label3 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.picPreview = new System.Windows.Forms.PictureBox(); + this.barOpacity = new System.Windows.Forms.TrackBar(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.numOpacity = new System.Windows.Forms.NumericUpDown(); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picLineColor)).BeginInit(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.barOpacity)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numOpacity)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(237, 177); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(311, 177); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.rdoDashed); + this.groupBox1.Controls.Add(this.rdoSolid); + this.groupBox1.Controls.Add(this.picLineColor); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.groupBox2); + this.groupBox1.Controls.Add(this.barOpacity); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.numOpacity); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(373, 164); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // rdoDashed + // + this.rdoDashed.AutoSize = true; + this.rdoDashed.Location = new System.Drawing.Point(157, 100); + this.rdoDashed.Name = "rdoDashed"; + this.rdoDashed.Size = new System.Drawing.Size(47, 16); + this.rdoDashed.TabIndex = 14; + this.rdoDashed.TabStop = true; + this.rdoDashed.Text = "虚线"; + this.rdoDashed.UseVisualStyleBackColor = true; + // + // rdoSolid + // + this.rdoSolid.AutoSize = true; + this.rdoSolid.Location = new System.Drawing.Point(104, 100); + this.rdoSolid.Name = "rdoSolid"; + this.rdoSolid.Size = new System.Drawing.Size(47, 16); + this.rdoSolid.TabIndex = 13; + this.rdoSolid.TabStop = true; + this.rdoSolid.Text = "实线"; + this.rdoSolid.UseVisualStyleBackColor = true; + this.rdoSolid.CheckedChanged += new System.EventHandler(this.rdoSolid_CheckedChanged); + // + // picLineColor + // + this.picLineColor.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.picLineColor.Cursor = System.Windows.Forms.Cursors.Hand; + this.picLineColor.Location = new System.Drawing.Point(62, 98); + this.picLineColor.Name = "picLineColor"; + this.picLineColor.Size = new System.Drawing.Size(32, 19); + this.picLineColor.TabIndex = 12; + this.picLineColor.TabStop = false; + this.picLineColor.Click += new System.EventHandler(this.picLineColor_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(25, 102); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 12); + this.label3.TabIndex = 10; + this.label3.Text = "边框:"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.picPreview); + this.groupBox2.Location = new System.Drawing.Point(226, 18); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(138, 138); + this.groupBox2.TabIndex = 9; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "预览"; + // + // picPreview + // + this.picPreview.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.picPreview.Location = new System.Drawing.Point(6, 18); + this.picPreview.Name = "picPreview"; + this.picPreview.Size = new System.Drawing.Size(126, 114); + this.picPreview.TabIndex = 0; + this.picPreview.TabStop = false; + this.picPreview.Paint += new System.Windows.Forms.PaintEventHandler(this.picPreview_Paint); + // + // barOpacity + // + this.barOpacity.AutoSize = false; + this.barOpacity.Location = new System.Drawing.Point(48, 50); + this.barOpacity.Maximum = 100; + this.barOpacity.Minimum = 1; + this.barOpacity.Name = "barOpacity"; + this.barOpacity.Size = new System.Drawing.Size(91, 20); + this.barOpacity.TabIndex = 2; + this.barOpacity.TickFrequency = 10; + this.barOpacity.Value = 1; + this.barOpacity.Scroll += new System.EventHandler(this.barOpacity_Scroll); + this.barOpacity.ValueChanged += new System.EventHandler(this.barOpacity_ValueChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(199, 50); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(11, 12); + this.label2.TabIndex = 4; + this.label2.Text = "%"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(25, 31); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 0; + this.label1.Text = "不透明度:"; + // + // numOpacity + // + this.numOpacity.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numOpacity.Location = new System.Drawing.Point(145, 48); + this.numOpacity.Name = "numOpacity"; + this.numOpacity.Size = new System.Drawing.Size(48, 21); + this.numOpacity.TabIndex = 3; + this.numOpacity.ValueChanged += new System.EventHandler(this.numOpacity_ValueChanged); + this.numOpacity.Enter += new System.EventHandler(this.numOpacity_Enter); + // + // CompactStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(389, 209); + this.Controls.Add(this.groupBox1); + this.DoubleBuffered = true; + this.Name = "CompactStyleItemPanel"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.OpacityStyleItemPanel_FormClosed); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picLineColor)).EndInit(); + this.groupBox2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.barOpacity)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numOpacity)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x04000259 RID: 601 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x0400025A RID: 602 + private global::System.Windows.Forms.Label label1; + + // Token: 0x0400025B RID: 603 + private global::System.Windows.Forms.Label label2; + + // Token: 0x0400025C RID: 604 + private global::System.Windows.Forms.TrackBar barOpacity; + + // Token: 0x0400025D RID: 605 + private global::System.Windows.Forms.GroupBox groupBox2; + + // Token: 0x0400025E RID: 606 + private global::System.Windows.Forms.PictureBox picPreview; + + // Token: 0x0400025F RID: 607 + private global::System.Windows.Forms.NumericUpDown numOpacity; + + // Token: 0x04000263 RID: 611 + private global::System.Windows.Forms.Label label3; + + // Token: 0x04000264 RID: 612 + private global::System.Windows.Forms.RadioButton rdoDashed; + + // Token: 0x04000265 RID: 613 + private global::System.Windows.Forms.RadioButton rdoSolid; + + // Token: 0x04000266 RID: 614 + private global::System.Windows.Forms.PictureBox picLineColor; + + // Token: 0x04000267 RID: 615 + private global::System.Windows.Forms.ColorDialog colorDialog1; + } +} diff --git a/SETUNA/Main/StyleItems/CompactStyleItemPanel.cs b/SETUNA/Main/StyleItems/CompactStyleItemPanel.cs new file mode 100644 index 0000000..bb576a7 --- /dev/null +++ b/SETUNA/Main/StyleItems/CompactStyleItemPanel.cs @@ -0,0 +1,194 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200007A RID: 122 + internal partial class CompactStyleItemPanel : ToolBoxForm + { + // Token: 0x060003F9 RID: 1017 RVA: 0x00019836 File Offset: 0x00017A36 + public CompactStyleItemPanel() + { + } + + // Token: 0x060003FA RID: 1018 RVA: 0x0001983E File Offset: 0x00017A3E + public CompactStyleItemPanel(CCompactStyleItem item) : base(item) + { + } + + // Token: 0x060003FB RID: 1019 RVA: 0x00019848 File Offset: 0x00017A48 + protected override void SetStyleToForm(object style) + { + var ccompactStyleItem = (CCompactStyleItem)style; + InitializeComponent(); + Text = ccompactStyleItem.GetDisplayName(); + numOpacity.Minimum = CCompactStyleItem.OpacityMinValue; + numOpacity.Maximum = CCompactStyleItem.OpacityMaxValue; + numOpacity.Value = ccompactStyleItem.Opacity; + barOpacity.Minimum = CCompactStyleItem.OpacityMinValue; + barOpacity.Maximum = CCompactStyleItem.OpacityMaxValue; + barOpacity.Value = ccompactStyleItem.Opacity; + picLineColor.BackColor = Color.FromArgb(ccompactStyleItem.LineColor); + rdoSolid.Checked = ccompactStyleItem.SoldLine; + rdoDashed.Checked = !ccompactStyleItem.SoldLine; + cm = new ColorMatrix + { + Matrix00 = 1f, + Matrix11 = 1f, + Matrix22 = 1f, + Matrix33 = (float)(numOpacity.Value / 100m), + Matrix44 = 1f + }; + ia = new ImageAttributes(); + ia.SetColorMatrix(cm); + imgBackground = new Bitmap(picPreview.Width, picPreview.Height, PixelFormat.Format24bppRgb); + using (var graphics = Graphics.FromImage(imgBackground)) + { + graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), imgBackground.Size); + } + imgScrap = new Bitmap(50, 50, PixelFormat.Format24bppRgb); + using (var graphics2 = Graphics.FromImage(imgScrap)) + { + graphics2.DrawImageUnscaled(SETUNA.Resources.Image.SampleImage, imgScrap.Width / 2 - SETUNA.Resources.Image.SampleImage.Width / 2, imgScrap.Height / 2 - SETUNA.Resources.Image.SampleImage.Height / 2); + } + UpdateLine(); + } + + // Token: 0x060003FC RID: 1020 RVA: 0x00019A94 File Offset: 0x00017C94 + protected override object GetStyleFromForm() + { + return new CCompactStyleItem + { + Opacity = (byte)numOpacity.Value, + LineColor = picLineColor.BackColor.ToArgb(), + SoldLine = rdoSolid.Checked + }; + } + + // Token: 0x060003FD RID: 1021 RVA: 0x00019AE8 File Offset: 0x00017CE8 + private void numOpacity_Enter(object sender, EventArgs e) + { + var numericUpDown = (NumericUpDown)sender; + numericUpDown.Select(0, numericUpDown.Value.ToString().Length); + } + + // Token: 0x060003FE RID: 1022 RVA: 0x00019B16 File Offset: 0x00017D16 + private void barOpacity_Scroll(object sender, EventArgs e) + { + numOpacity.Value = barOpacity.Value; + } + + // Token: 0x060003FF RID: 1023 RVA: 0x00019B33 File Offset: 0x00017D33 + private void numOpacity_ValueChanged(object sender, EventArgs e) + { + if (barOpacity.Value != (int)numOpacity.Value) + { + barOpacity.Value = (int)numOpacity.Value; + } + } + + // Token: 0x06000400 RID: 1024 RVA: 0x00019B70 File Offset: 0x00017D70 + private void picPreview_Paint(object sender, PaintEventArgs e) + { + if (imgBackground != null) + { + e.Graphics.DrawImageUnscaled(imgBackground, new Point(0, 0)); + } + if (imgScrap != null) + { + e.Graphics.DrawImage(imgScrap, new Rectangle((imgBackground.Width - imgScrap.Width) / 2, (imgBackground.Height - imgScrap.Height) / 2, imgScrap.Width, imgScrap.Height), 0, 0, imgScrap.Width, imgScrap.Height, GraphicsUnit.Pixel, ia); + } + } + + // Token: 0x06000401 RID: 1025 RVA: 0x00019C22 File Offset: 0x00017E22 + private void OpacityStyleItemPanel_FormClosed(object sender, FormClosedEventArgs e) + { + if (imgBackground != null) + { + imgBackground.Dispose(); + imgBackground = null; + if (imgScrap != null) + { + imgScrap.Dispose(); + imgScrap = null; + } + GC.Collect(); + } + } + + // Token: 0x06000402 RID: 1026 RVA: 0x00019C60 File Offset: 0x00017E60 + private void numPreview_ValueChanged() + { + if (cm != null && ia != null) + { + cm.Matrix33 = (float)(numOpacity.Value / 100m); + ia.SetColorMatrix(cm); + } + Refresh(); + } + + // Token: 0x06000403 RID: 1027 RVA: 0x00019CBC File Offset: 0x00017EBC + private void picLineColor_Click(object sender, EventArgs e) + { + colorDialog1.Color = picLineColor.BackColor; + var dialogResult = colorDialog1.ShowDialog(); + if (dialogResult == DialogResult.OK) + { + picLineColor.BackColor = colorDialog1.Color; + } + UpdateLine(); + } + + // Token: 0x06000404 RID: 1028 RVA: 0x00019D0B File Offset: 0x00017F0B + private void barOpacity_ValueChanged(object sender, EventArgs e) + { + numPreview_ValueChanged(); + } + + // Token: 0x06000405 RID: 1029 RVA: 0x00019D14 File Offset: 0x00017F14 + private void UpdateLine() + { + if (imgScrap == null) + { + return; + } + using (var graphics = Graphics.FromImage(imgScrap)) + { + var pen = new Pen(picLineColor.BackColor); + if (rdoDashed.Checked) + { + pen.DashStyle = DashStyle.Dash; + pen.DashPattern = new float[] + { + 4f, + 4f + }; + } + graphics.DrawRectangle(new Pen(Color.White), 0, 0, imgScrap.Width - 1, imgScrap.Height - 1); + graphics.DrawRectangle(pen, 0, 0, imgScrap.Width - 1, imgScrap.Height - 1); + } + picPreview.Refresh(); + } + + // Token: 0x06000406 RID: 1030 RVA: 0x00019DF0 File Offset: 0x00017FF0 + private void rdoSolid_CheckedChanged(object sender, EventArgs e) + { + UpdateLine(); + } + + // Token: 0x04000260 RID: 608 + private System.Drawing.Image imgBackground; + + // Token: 0x04000261 RID: 609 + private System.Drawing.Image imgScrap; + + // Token: 0x04000262 RID: 610 + private ImageAttributes ia; + + // Token: 0x04000268 RID: 616 + private ColorMatrix cm; + } +} diff --git a/SETUNA/Main/StyleItems/CompactStyleItemPanel.resx b/SETUNA/Main/StyleItems/CompactStyleItemPanel.resx new file mode 100644 index 0000000..4b336c9 --- /dev/null +++ b/SETUNA/Main/StyleItems/CompactStyleItemPanel.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/CopyStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/CopyStyleItemPanel.Designer.cs new file mode 100644 index 0000000..4a836ed --- /dev/null +++ b/SETUNA/Main/StyleItems/CopyStyleItemPanel.Designer.cs @@ -0,0 +1,64 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000012 RID: 18 + partial class CopyStyleItemPanel + { + // Token: 0x060000D7 RID: 215 RVA: 0x00006664 File Offset: 0x00004864 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.chkWindow = new System.Windows.Forms.CheckBox(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(36, 77); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(110, 77); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.chkWindow); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(172, 62); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // chkWindow + // + this.chkWindow.AutoSize = true; + this.chkWindow.Location = new System.Drawing.Point(23, 28); + this.chkWindow.Name = "chkWindow"; + this.chkWindow.Size = new System.Drawing.Size(102, 16); + this.chkWindow.TabIndex = 0; + this.chkWindow.Text = "包含窗口/边框"; + this.chkWindow.UseVisualStyleBackColor = true; + // + // CopyStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(188, 109); + this.Controls.Add(this.groupBox1); + this.Name = "CopyStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + // Token: 0x04000076 RID: 118 + private global::System.Windows.Forms.CheckBox chkWindow; + + // Token: 0x04000077 RID: 119 + private global::System.Windows.Forms.GroupBox groupBox1; + } +} diff --git a/SETUNA/Main/StyleItems/CopyStyleItemPanel.cs b/SETUNA/Main/StyleItems/CopyStyleItemPanel.cs new file mode 100644 index 0000000..5486a5a --- /dev/null +++ b/SETUNA/Main/StyleItems/CopyStyleItemPanel.cs @@ -0,0 +1,34 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000012 RID: 18 + internal partial class CopyStyleItemPanel : ToolBoxForm + { + // Token: 0x060000D8 RID: 216 RVA: 0x00006847 File Offset: 0x00004A47 + public CopyStyleItemPanel() + { + } + + // Token: 0x060000D9 RID: 217 RVA: 0x0000684F File Offset: 0x00004A4F + public CopyStyleItemPanel(CCopyStyleItem item) : base(item) + { + } + + // Token: 0x060000DA RID: 218 RVA: 0x00006858 File Offset: 0x00004A58 + protected override void SetStyleToForm(object style) + { + var ccopyStyleItem = (CCopyStyleItem)style; + InitializeComponent(); + Text = ccopyStyleItem.GetDisplayName(); + chkWindow.Checked = !ccopyStyleItem.CopyFromSource; + } + + // Token: 0x060000DB RID: 219 RVA: 0x00006894 File Offset: 0x00004A94 + protected override object GetStyleFromForm() + { + return new CCopyStyleItem + { + CopyFromSource = !chkWindow.Checked + }; + } + } +} diff --git a/SETUNA/Main/StyleItems/CopyStyleItemPanel.resx b/SETUNA/Main/StyleItems/CopyStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/CopyStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/DeleteLayerCommand.cs b/SETUNA/Main/StyleItems/DeleteLayerCommand.cs new file mode 100644 index 0000000..b0a6117 --- /dev/null +++ b/SETUNA/Main/StyleItems/DeleteLayerCommand.cs @@ -0,0 +1,30 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000020 RID: 32 + public class DeleteLayerCommand : LayerCommand + { + // Token: 0x1400000F RID: 15 + // (add) Token: 0x06000158 RID: 344 RVA: 0x00008315 File Offset: 0x00006515 + // (remove) Token: 0x06000159 RID: 345 RVA: 0x0000832E File Offset: 0x0000652E + public event DeleteLayerCommand.DeleteLayerCommandDelegate DeleteLayer; + + // Token: 0x0600015A RID: 346 RVA: 0x00008347 File Offset: 0x00006547 + public DeleteLayerCommand(long layerID) : base("") + { + base.LayerID = layerID; + } + + // Token: 0x0600015B RID: 347 RVA: 0x0000835B File Offset: 0x0000655B + public override void Apply() + { + if (DeleteLayer != null) + { + DeleteLayer(this); + } + } + + // Token: 0x02000021 RID: 33 + // (Invoke) Token: 0x0600015D RID: 349 + public delegate void DeleteLayerCommandDelegate(DeleteLayerCommand sender); + } +} diff --git a/SETUNA/Main/StyleItems/ILayer.cs b/SETUNA/Main/StyleItems/ILayer.cs new file mode 100644 index 0000000..cca5161 --- /dev/null +++ b/SETUNA/Main/StyleItems/ILayer.cs @@ -0,0 +1,15 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000014 RID: 20 + public interface ILayer + { + // Token: 0x060000E4 RID: 228 + void AddCommand(ToolCommand addCmd); + + // Token: 0x060000E5 RID: 229 + void RefreshLayer(); + + // Token: 0x060000E6 RID: 230 + void RemoveCommand(ToolCommand removeCmd); + } +} diff --git a/SETUNA/Main/StyleItems/IPaintToolWindow.cs b/SETUNA/Main/StyleItems/IPaintToolWindow.cs new file mode 100644 index 0000000..6d4251f --- /dev/null +++ b/SETUNA/Main/StyleItems/IPaintToolWindow.cs @@ -0,0 +1,9 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000AA RID: 170 + internal interface IPaintToolWindow + { + // Token: 0x06000583 RID: 1411 + void ChangeSetting(); + } +} diff --git a/SETUNA/Main/StyleItems/IScrapStyle.cs b/SETUNA/Main/StyleItems/IScrapStyle.cs new file mode 100644 index 0000000..3898032 --- /dev/null +++ b/SETUNA/Main/StyleItems/IScrapStyle.cs @@ -0,0 +1,20 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200000A RID: 10 + internal interface IScrapStyle + { + // Token: 0x060000A9 RID: 169 + void Apply(ref ScrapBase scrap, Point clickpoint); + + // Token: 0x060000AA RID: 170 + string GetName(); + + // Token: 0x060000AB RID: 171 + string GetDisplayName(); + + // Token: 0x060000AC RID: 172 + string GetDescription(); + } +} diff --git a/SETUNA/Main/StyleItems/IStyleItemPanel.cs b/SETUNA/Main/StyleItems/IStyleItemPanel.cs new file mode 100644 index 0000000..3c976e6 --- /dev/null +++ b/SETUNA/Main/StyleItems/IStyleItemPanel.cs @@ -0,0 +1,12 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000B5 RID: 181 + public interface IStyleItemPanel + { + // Token: 0x060005A8 RID: 1448 + void SetStyleItem(CStyleItem item); + + // Token: 0x060005A9 RID: 1449 + CStyleItem GetStyleItem(); + } +} diff --git a/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.Designer.cs new file mode 100644 index 0000000..e81b303 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.Designer.cs @@ -0,0 +1,237 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200008A RID: 138 + partial class ImageBmpStyleItemPanel + { + // Token: 0x06000479 RID: 1145 RVA: 0x0001CCB8 File Offset: 0x0001AEB8 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.cmbDupli = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.rdoSaveAs = new System.Windows.Forms.RadioButton(); + this.txtName = new System.Windows.Forms.TextBox(); + this.rdoScrapName = new System.Windows.Forms.RadioButton(); + this.rdoName = new System.Windows.Forms.RadioButton(); + this.label2 = new System.Windows.Forms.Label(); + this.chkCopy = new System.Windows.Forms.CheckBox(); + this.chkWindow = new System.Windows.Forms.CheckBox(); + this.btnRef = new System.Windows.Forms.Button(); + this.txtFolder = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(249, 228); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(323, 228); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.cmbDupli); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.rdoSaveAs); + this.groupBox1.Controls.Add(this.txtName); + this.groupBox1.Controls.Add(this.rdoScrapName); + this.groupBox1.Controls.Add(this.rdoName); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.chkCopy); + this.groupBox1.Controls.Add(this.chkWindow); + this.groupBox1.Controls.Add(this.btnRef); + this.groupBox1.Controls.Add(this.txtFolder); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(386, 212); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // cmbDupli + // + this.cmbDupli.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbDupli.FormattingEnabled = true; + this.cmbDupli.Items.AddRange(new object[] { + "覆盖", + "追加序号", + "重复时指定"}); + this.cmbDupli.Location = new System.Drawing.Point(130, 126); + this.cmbDupli.Name = "cmbDupli"; + this.cmbDupli.Size = new System.Drawing.Size(133, 20); + this.cmbDupli.TabIndex = 9; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(81, 129); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 8; + this.label3.Text = "重复时∶"; + // + // rdoSaveAs + // + this.rdoSaveAs.AutoSize = true; + this.rdoSaveAs.Location = new System.Drawing.Point(83, 65); + this.rdoSaveAs.Name = "rdoSaveAs"; + this.rdoSaveAs.Size = new System.Drawing.Size(83, 16); + this.rdoSaveAs.TabIndex = 4; + this.rdoSaveAs.TabStop = true; + this.rdoSaveAs.Text = "保存时指定"; + this.rdoSaveAs.UseVisualStyleBackColor = true; + this.rdoSaveAs.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // txtName + // + this.txtName.Location = new System.Drawing.Point(100, 103); + this.txtName.MaxLength = 255; + this.txtName.Name = "txtName"; + this.txtName.Size = new System.Drawing.Size(223, 21); + this.txtName.TabIndex = 7; + // + // rdoScrapName + // + this.rdoScrapName.AutoSize = true; + this.rdoScrapName.Location = new System.Drawing.Point(83, 85); + this.rdoScrapName.Name = "rdoScrapName"; + this.rdoScrapName.Size = new System.Drawing.Size(107, 16); + this.rdoScrapName.TabIndex = 5; + this.rdoScrapName.TabStop = true; + this.rdoScrapName.Text = "使用参考图名字"; + this.rdoScrapName.UseVisualStyleBackColor = true; + this.rdoScrapName.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // rdoName + // + this.rdoName.AutoSize = true; + this.rdoName.Location = new System.Drawing.Point(83, 106); + this.rdoName.Name = "rdoName"; + this.rdoName.Size = new System.Drawing.Size(14, 13); + this.rdoName.TabIndex = 6; + this.rdoName.TabStop = true; + this.rdoName.UseVisualStyleBackColor = true; + this.rdoName.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(24, 67); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 3; + this.label2.Text = "文件名∶"; + // + // chkCopy + // + this.chkCopy.AutoSize = true; + this.chkCopy.Location = new System.Drawing.Point(19, 181); + this.chkCopy.Name = "chkCopy"; + this.chkCopy.Size = new System.Drawing.Size(204, 16); + this.chkCopy.TabIndex = 11; + this.chkCopy.Text = "复制到剪贴板上的文件的保存路径"; + this.chkCopy.UseVisualStyleBackColor = true; + // + // chkWindow + // + this.chkWindow.AutoSize = true; + this.chkWindow.Location = new System.Drawing.Point(19, 163); + this.chkWindow.Name = "chkWindow"; + this.chkWindow.Size = new System.Drawing.Size(102, 16); + this.chkWindow.TabIndex = 10; + this.chkWindow.Text = "包含窗口/边框"; + this.chkWindow.UseVisualStyleBackColor = true; + // + // btnRef + // + this.btnRef.Location = new System.Drawing.Point(325, 29); + this.btnRef.Name = "btnRef"; + this.btnRef.Size = new System.Drawing.Size(22, 23); + this.btnRef.TabIndex = 2; + this.btnRef.Text = "..."; + this.btnRef.UseVisualStyleBackColor = true; + this.btnRef.Click += new System.EventHandler(this.btnRef_Click); + // + // txtFolder + // + this.txtFolder.Location = new System.Drawing.Point(73, 31); + this.txtFolder.Name = "txtFolder"; + this.txtFolder.Size = new System.Drawing.Size(250, 21); + this.txtFolder.TabIndex = 1; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(24, 34); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 0; + this.label1.Text = "目的地:"; + // + // folderBrowserDialog1 + // + this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.ApplicationData; + // + // ImageBmpStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(401, 260); + this.Controls.Add(this.groupBox1); + this.Name = "ImageBmpStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + // Token: 0x040002B4 RID: 692 + private global::System.Windows.Forms.Button btnRef; + + // Token: 0x040002B5 RID: 693 + private global::System.Windows.Forms.TextBox txtFolder; + + // Token: 0x040002B6 RID: 694 + private global::System.Windows.Forms.Label label1; + + // Token: 0x040002B7 RID: 695 + private global::System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + + // Token: 0x040002B8 RID: 696 + private global::System.Windows.Forms.CheckBox chkWindow; + + // Token: 0x040002B9 RID: 697 + private global::System.Windows.Forms.CheckBox chkCopy; + + // Token: 0x040002BA RID: 698 + private global::System.Windows.Forms.RadioButton rdoScrapName; + + // Token: 0x040002BB RID: 699 + private global::System.Windows.Forms.RadioButton rdoName; + + // Token: 0x040002BC RID: 700 + private global::System.Windows.Forms.Label label2; + + // Token: 0x040002BD RID: 701 + private global::System.Windows.Forms.RadioButton rdoSaveAs; + + // Token: 0x040002BE RID: 702 + private global::System.Windows.Forms.TextBox txtName; + + // Token: 0x040002BF RID: 703 + private global::System.Windows.Forms.ComboBox cmbDupli; + + // Token: 0x040002C0 RID: 704 + private global::System.Windows.Forms.Label label3; + + // Token: 0x040002C1 RID: 705 + private global::System.Windows.Forms.GroupBox groupBox1; + } +} diff --git a/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.cs b/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.cs new file mode 100644 index 0000000..6ac1393 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.cs @@ -0,0 +1,140 @@ +using System; +using System.IO; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200008A RID: 138 + internal partial class ImageBmpStyleItemPanel : ToolBoxForm + { + // Token: 0x0600047A RID: 1146 RVA: 0x0001D515 File Offset: 0x0001B715 + public ImageBmpStyleItemPanel() + { + } + + // Token: 0x0600047B RID: 1147 RVA: 0x0001D51D File Offset: 0x0001B71D + public ImageBmpStyleItemPanel(CImageBmpStyleItem item) : base(item) + { + } + + // Token: 0x0600047C RID: 1148 RVA: 0x0001D528 File Offset: 0x0001B728 + protected override void SetStyleToForm(object style) + { + var cimageBmpStyleItem = (CImageBmpStyleItem)style; + InitializeComponent(); + Text = cimageBmpStyleItem.GetDisplayName(); + txtFolder.Text = cimageBmpStyleItem.SaveFolder; + chkWindow.Checked = cimageBmpStyleItem.HaveMargin; + chkCopy.Checked = cimageBmpStyleItem.CopyPath; + switch (cimageBmpStyleItem.FileNameType) + { + case CImageStyleItem.EnumFileName.SaveAs: + rdoSaveAs.Checked = true; + break; + case CImageStyleItem.EnumFileName.ScrapName: + rdoScrapName.Checked = true; + break; + case CImageStyleItem.EnumFileName.UseName: + rdoName.Checked = true; + break; + } + cmbDupli.SelectedIndex = (int)cimageBmpStyleItem.DupliType; + txtName.Text = cimageBmpStyleItem.FileName; + } + + // Token: 0x0600047D RID: 1149 RVA: 0x0001D5E8 File Offset: 0x0001B7E8 + protected override object GetStyleFromForm() + { + var cimageBmpStyleItem = new CImageBmpStyleItem + { + SaveFolder = txtFolder.Text, + HaveMargin = chkWindow.Checked, + CopyPath = chkCopy.Checked + }; + if (rdoSaveAs.Checked) + { + cimageBmpStyleItem.FileNameType = CImageStyleItem.EnumFileName.SaveAs; + } + else if (rdoScrapName.Checked) + { + cimageBmpStyleItem.FileNameType = CImageStyleItem.EnumFileName.ScrapName; + } + else + { + cimageBmpStyleItem.FileNameType = CImageStyleItem.EnumFileName.UseName; + } + cimageBmpStyleItem.DupliType = (CImageStyleItem.EnumDupliType)cmbDupli.SelectedIndex; + cimageBmpStyleItem.FileName = txtName.Text; + return cimageBmpStyleItem; + } + + // Token: 0x0600047E RID: 1150 RVA: 0x0001D684 File Offset: 0x0001B884 + private void rdoSaveAs_CheckedChanged(object sender, EventArgs e) + { + if (rdoSaveAs.Checked) + { + cmbDupli.Enabled = false; + } + else + { + cmbDupli.Enabled = true; + } + if (rdoName.Checked) + { + txtName.Enabled = true; + return; + } + txtName.Enabled = false; + } + + // Token: 0x0600047F RID: 1151 RVA: 0x0001D6E0 File Offset: 0x0001B8E0 + private void btnRef_Click(object sender, EventArgs e) + { + folderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyComputer; + folderBrowserDialog1.SelectedPath = txtFolder.Text; + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + txtFolder.Text = folderBrowserDialog1.SelectedPath; + } + } + + // Token: 0x06000480 RID: 1152 RVA: 0x0001D734 File Offset: 0x0001B934 + protected override void OKCheck(ref bool cancel) + { + cancel = true; + if (txtFolder.Text != "") + { + try + { + Path.GetFullPath(txtFolder.Text); + } + catch + { + MessageBox.Show("文件夹名无效。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtFolder.Focus(); + return; + } + } + if (!rdoSaveAs.Checked && rdoName.Checked) + { + if (txtName.Text == "") + { + MessageBox.Show("没有指定文件名。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtName.Focus(); + return; + } + var invalidFileNameChars = Path.GetInvalidFileNameChars(); + foreach (var value in invalidFileNameChars) + { + if (txtName.Text.IndexOf(value) > -1) + { + MessageBox.Show("文件名无效。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtName.Focus(); + return; + } + } + } + cancel = false; + } + } +} diff --git a/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.resx b/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.resx new file mode 100644 index 0000000..a9b062a --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageBmpStyleItemPanel.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.Designer.cs b/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.Designer.cs new file mode 100644 index 0000000..6f3a5f5 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.Designer.cs @@ -0,0 +1,210 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000091 RID: 145 + partial class ImageJpegPreviewPanel + { + // Token: 0x060004C6 RID: 1222 RVA: 0x00020FD0 File Offset: 0x0001F1D0 + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.barQuality = new System.Windows.Forms.TrackBar(); + this.panel1 = new System.Windows.Forms.Panel(); + this.picPreview = new System.Windows.Forms.PictureBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.lblQuality = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.lblSize = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.barQuality)).BeginInit(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(251, 336); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(325, 336); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.barQuality); + this.groupBox1.Controls.Add(this.panel1); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.lblQuality); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(386, 321); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // barQuality + // + this.barQuality.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.barQuality.AutoSize = false; + this.barQuality.Location = new System.Drawing.Point(52, 263); + this.barQuality.Maximum = 100; + this.barQuality.Name = "barQuality"; + this.barQuality.Size = new System.Drawing.Size(173, 33); + this.barQuality.TabIndex = 2; + this.barQuality.TickFrequency = 10; + this.barQuality.Scroll += new System.EventHandler(this.barQuality_Scroll); + this.barQuality.ValueChanged += new System.EventHandler(this.barQuality_Scroll); + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel1.Controls.Add(this.picPreview); + this.panel1.Location = new System.Drawing.Point(13, 18); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(361, 239); + this.panel1.TabIndex = 0; + this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPreview_MouseMove); + this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.picPreview_MouseUp); + // + // picPreview + // + this.picPreview.Location = new System.Drawing.Point(-2, -2); + this.picPreview.Name = "picPreview"; + this.picPreview.Size = new System.Drawing.Size(94, 71); + this.picPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.picPreview.TabIndex = 11; + this.picPreview.TabStop = false; + this.picPreview.MouseDown += new System.Windows.Forms.MouseEventHandler(this.picPreview_MouseDown); + this.picPreview.MouseUp += new System.Windows.Forms.MouseEventHandler(this.picPreview_MouseUp); + // + // label6 + // + this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(200, 297); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(23, 12); + this.label6.TabIndex = 5; + this.label6.Text = "100"; + // + // label5 + // + this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(61, 297); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(11, 12); + this.label5.TabIndex = 4; + this.label5.Text = "0"; + // + // lblQuality + // + this.lblQuality.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblQuality.Location = new System.Drawing.Point(224, 268); + this.lblQuality.Name = "lblQuality"; + this.lblQuality.Size = new System.Drawing.Size(24, 12); + this.lblQuality.TabIndex = 3; + this.lblQuality.Text = "100"; + this.lblQuality.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(11, 268); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 12); + this.label3.TabIndex = 1; + this.label3.Text = "质量:"; + // + // folderBrowserDialog1 + // + this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.ApplicationData; + // + // lblSize + // + this.lblSize.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lblSize.Location = new System.Drawing.Point(6, 336); + this.lblSize.Name = "lblSize"; + this.lblSize.Size = new System.Drawing.Size(239, 24); + this.lblSize.TabIndex = 1; + this.lblSize.Text = "120K"; + // + // timer1 + // + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // ImageJpegPreviewPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(403, 368); + this.Controls.Add(this.lblSize); + this.Controls.Add(this.groupBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.MinimumSize = new System.Drawing.Size(290, 280); + this.Name = "ImageJpegPreviewPanel"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ImageJpegPreviewPanel_FormClosed); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.Controls.SetChildIndex(this.lblSize, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.barQuality)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x040002FB RID: 763 + private global::System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + + // Token: 0x040002FC RID: 764 + private global::System.Windows.Forms.TrackBar barQuality; + + // Token: 0x040002FD RID: 765 + private global::System.Windows.Forms.Label label3; + + // Token: 0x040002FE RID: 766 + private global::System.Windows.Forms.Label label6; + + // Token: 0x040002FF RID: 767 + private global::System.Windows.Forms.Label label5; + + // Token: 0x04000300 RID: 768 + private global::System.Windows.Forms.Label lblQuality; + + // Token: 0x04000301 RID: 769 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x04000303 RID: 771 + private global::System.Windows.Forms.Panel panel1; + + // Token: 0x04000304 RID: 772 + private global::System.Windows.Forms.PictureBox picPreview; + + // Token: 0x04000308 RID: 776 + private global::System.Windows.Forms.Label lblSize; + + // Token: 0x04000309 RID: 777 + private global::System.Windows.Forms.Timer timer1; + + // Token: 0x0400030A RID: 778 + private global::System.ComponentModel.IContainer components; + } +} diff --git a/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.cs b/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.cs new file mode 100644 index 0000000..c9c22f6 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.cs @@ -0,0 +1,178 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000091 RID: 145 + internal partial class ImageJpegPreviewPanel : ToolBoxForm + { + // Token: 0x060004C7 RID: 1223 RVA: 0x0002170F File Offset: 0x0001F90F + public ImageJpegPreviewPanel() + { + tempimg = ""; + } + + // Token: 0x060004C8 RID: 1224 RVA: 0x00021724 File Offset: 0x0001F924 + ~ImageJpegPreviewPanel() + { + if (_img != null) + { + _img.Dispose(); + } + } + + // Token: 0x060004C9 RID: 1225 RVA: 0x00021760 File Offset: 0x0001F960 + public ImageJpegPreviewPanel(CImageJpegStyleItem item, Image img, ImageCodecInfo icodec) : base(item) + { + _img = img; + _icodec = icodec; + UpdatePreview(); + } + + // Token: 0x060004CA RID: 1226 RVA: 0x00021780 File Offset: 0x0001F980 + protected override void SetStyleToForm(object style) + { + var cimageJpegStyleItem = (CImageJpegStyleItem)style; + InitializeComponent(); + Text = cimageJpegStyleItem.GetDisplayName(); + barQuality.Value = cimageJpegStyleItem.Quality; + lastqvalue = barQuality.Value; + try + { + tempimg = Path.GetTempFileName(); + } + catch + { + tempimg = ""; + } + timer1.Start(); + } + + // Token: 0x060004CB RID: 1227 RVA: 0x00021800 File Offset: 0x0001FA00 + protected override object GetStyleFromForm() + { + return new CImageJpegStyleItem + { + Quality = barQuality.Value + }; + } + + // Token: 0x060004CC RID: 1228 RVA: 0x00021825 File Offset: 0x0001FA25 + private void barQuality_Scroll(object sender, EventArgs e) + { + } + + // Token: 0x060004CD RID: 1229 RVA: 0x00021828 File Offset: 0x0001FA28 + protected int UpdatePreview() + { + var value = barQuality.Value; + if (_icodec == null) + { + return value; + } + lblQuality.Text = barQuality.Value.ToString(); + Stream stream = new MemoryStream(); + var encoderParameters = new EncoderParameters(); + encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, value); + _img.Save(stream, _icodec, encoderParameters); + picPreview.Image = new Bitmap(stream); + stream.Close(); + lblSize.Text = ""; + if (tempimg != "") + { + try + { + _img.Save(tempimg, _icodec, encoderParameters); + if (!File.Exists(tempimg)) + { + throw new Exception("缺少临时文件"); + } + var fileInfo = new FileInfo(tempimg); + lblSize.Text = (fileInfo.Length / 1024f).ToString("#,#.0") + " KB"; + } + catch + { + tempimg = ""; + } + } + return value; + } + + // Token: 0x060004CE RID: 1230 RVA: 0x00021968 File Offset: 0x0001FB68 + private void picPreview_MouseDown(object sender, MouseEventArgs e) + { + dragpt = new Point(e.X, e.Y); + dragpt = picPreview.PointToScreen(dragpt); + dragpt = panel1.PointToClient(dragpt); + panel1.Capture = true; + drag = true; + } + + // Token: 0x060004CF RID: 1231 RVA: 0x000219CD File Offset: 0x0001FBCD + private void picPreview_MouseUp(object sender, MouseEventArgs e) + { + panel1.Capture = false; + drag = false; + } + + // Token: 0x060004D0 RID: 1232 RVA: 0x000219E4 File Offset: 0x0001FBE4 + private void picPreview_MouseMove(object sender, MouseEventArgs e) + { + if (drag) + { + var x = picPreview.Location.X - (dragpt.X - e.X); + var y = picPreview.Location.Y - (dragpt.Y - e.Y); + dragpt = new Point(e.X, e.Y); + picPreview.SetBounds(x, y, 0, 0, BoundsSpecified.Location); + } + } + + // Token: 0x060004D1 RID: 1233 RVA: 0x00021A70 File Offset: 0x0001FC70 + private void ImageJpegPreviewPanel_FormClosed(object sender, FormClosedEventArgs e) + { + try + { + if (tempimg != "" && File.Exists(tempimg)) + { + File.Delete(tempimg); + } + timer1.Stop(); + } + catch + { + tempimg = ""; + } + } + + // Token: 0x060004D2 RID: 1234 RVA: 0x00021AD4 File Offset: 0x0001FCD4 + private void timer1_Tick(object sender, EventArgs e) + { + var value = barQuality.Value; + if (value != lastqvalue) + { + lastqvalue = UpdatePreview(); + } + } + + // Token: 0x04000302 RID: 770 + private Image _img; + + // Token: 0x04000305 RID: 773 + private ImageCodecInfo _icodec; + + // Token: 0x04000306 RID: 774 + private bool drag; + + // Token: 0x04000307 RID: 775 + private Point dragpt; + + // Token: 0x0400030B RID: 779 + private string tempimg; + + // Token: 0x0400030C RID: 780 + private int lastqvalue; + } +} diff --git a/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.resx b/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.resx new file mode 100644 index 0000000..31e1886 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageJpegPreviewPanel.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 197, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.Designer.cs new file mode 100644 index 0000000..0797045 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.Designer.cs @@ -0,0 +1,330 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000092 RID: 146 + partial class ImageJpegStyleItemPanel + { + // Token: 0x060004D3 RID: 1235 RVA: 0x00021B04 File Offset: 0x0001FD04 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.cmbDupli = new System.Windows.Forms.ComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.rdoSaveAs = new System.Windows.Forms.RadioButton(); + this.txtName = new System.Windows.Forms.TextBox(); + this.rdoScrapName = new System.Windows.Forms.RadioButton(); + this.rdoName = new System.Windows.Forms.RadioButton(); + this.label4 = new System.Windows.Forms.Label(); + this.chkCopy = new System.Windows.Forms.CheckBox(); + this.chkWindow = new System.Windows.Forms.CheckBox(); + this.chkShowParam = new System.Windows.Forms.CheckBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.lblQuality = new System.Windows.Forms.Label(); + this.barQuality = new System.Windows.Forms.TrackBar(); + this.label3 = new System.Windows.Forms.Label(); + this.btnRef = new System.Windows.Forms.Button(); + this.txtFolder = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.barQuality)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(249, 329); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(323, 329); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.cmbDupli); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.rdoSaveAs); + this.groupBox1.Controls.Add(this.txtName); + this.groupBox1.Controls.Add(this.rdoScrapName); + this.groupBox1.Controls.Add(this.rdoName); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.chkCopy); + this.groupBox1.Controls.Add(this.chkWindow); + this.groupBox1.Controls.Add(this.chkShowParam); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.lblQuality); + this.groupBox1.Controls.Add(this.barQuality); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.btnRef); + this.groupBox1.Controls.Add(this.txtFolder); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(386, 314); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // cmbDupli + // + this.cmbDupli.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbDupli.FormattingEnabled = true; + this.cmbDupli.Items.AddRange(new object[] { + "覆盖", + "追加序号", + "重复时指定"}); + this.cmbDupli.Location = new System.Drawing.Point(133, 127); + this.cmbDupli.Name = "cmbDupli"; + this.cmbDupli.Size = new System.Drawing.Size(133, 20); + this.cmbDupli.TabIndex = 9; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(84, 130); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 8; + this.label2.Text = "重复时∶"; + // + // rdoSaveAs + // + this.rdoSaveAs.AutoSize = true; + this.rdoSaveAs.Location = new System.Drawing.Point(86, 66); + this.rdoSaveAs.Name = "rdoSaveAs"; + this.rdoSaveAs.Size = new System.Drawing.Size(83, 16); + this.rdoSaveAs.TabIndex = 4; + this.rdoSaveAs.TabStop = true; + this.rdoSaveAs.Text = "保存时指定"; + this.rdoSaveAs.UseVisualStyleBackColor = true; + this.rdoSaveAs.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // txtName + // + this.txtName.Location = new System.Drawing.Point(103, 104); + this.txtName.MaxLength = 255; + this.txtName.Name = "txtName"; + this.txtName.Size = new System.Drawing.Size(223, 21); + this.txtName.TabIndex = 7; + // + // rdoScrapName + // + this.rdoScrapName.AutoSize = true; + this.rdoScrapName.Location = new System.Drawing.Point(86, 86); + this.rdoScrapName.Name = "rdoScrapName"; + this.rdoScrapName.Size = new System.Drawing.Size(95, 16); + this.rdoScrapName.TabIndex = 5; + this.rdoScrapName.TabStop = true; + this.rdoScrapName.Text = "使用参考图名"; + this.rdoScrapName.UseVisualStyleBackColor = true; + this.rdoScrapName.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // rdoName + // + this.rdoName.AutoSize = true; + this.rdoName.Location = new System.Drawing.Point(86, 107); + this.rdoName.Name = "rdoName"; + this.rdoName.Size = new System.Drawing.Size(14, 13); + this.rdoName.TabIndex = 6; + this.rdoName.TabStop = true; + this.rdoName.UseVisualStyleBackColor = true; + this.rdoName.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(27, 68); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(53, 12); + this.label4.TabIndex = 3; + this.label4.Text = "文件名∶"; + // + // chkCopy + // + this.chkCopy.AutoSize = true; + this.chkCopy.Location = new System.Drawing.Point(28, 276); + this.chkCopy.Name = "chkCopy"; + this.chkCopy.Size = new System.Drawing.Size(204, 16); + this.chkCopy.TabIndex = 17; + this.chkCopy.Text = "复制到剪贴板上的文件的保存路径"; + this.chkCopy.UseVisualStyleBackColor = true; + // + // chkWindow + // + this.chkWindow.AutoSize = true; + this.chkWindow.Location = new System.Drawing.Point(28, 258); + this.chkWindow.Name = "chkWindow"; + this.chkWindow.Size = new System.Drawing.Size(102, 16); + this.chkWindow.TabIndex = 16; + this.chkWindow.Text = "包含窗口/边框"; + this.chkWindow.UseVisualStyleBackColor = true; + // + // chkShowParam + // + this.chkShowParam.AutoSize = true; + this.chkShowParam.Checked = true; + this.chkShowParam.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkShowParam.Location = new System.Drawing.Point(28, 240); + this.chkShowParam.Name = "chkShowParam"; + this.chkShowParam.Size = new System.Drawing.Size(132, 16); + this.chkShowParam.TabIndex = 15; + this.chkShowParam.Text = "保存图像时设置质量"; + this.chkShowParam.UseVisualStyleBackColor = true; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(276, 204); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(23, 12); + this.label6.TabIndex = 14; + this.label6.Text = "100"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(77, 204); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(11, 12); + this.label5.TabIndex = 13; + this.label5.Text = "0"; + // + // lblQuality + // + this.lblQuality.Location = new System.Drawing.Point(299, 179); + this.lblQuality.Name = "lblQuality"; + this.lblQuality.Size = new System.Drawing.Size(25, 12); + this.lblQuality.TabIndex = 12; + this.lblQuality.Text = "100"; + this.lblQuality.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // barQuality + // + this.barQuality.AutoSize = false; + this.barQuality.Location = new System.Drawing.Point(68, 172); + this.barQuality.Maximum = 100; + this.barQuality.Name = "barQuality"; + this.barQuality.Size = new System.Drawing.Size(233, 33); + this.barQuality.TabIndex = 11; + this.barQuality.TickFrequency = 10; + this.barQuality.Value = 100; + this.barQuality.Scroll += new System.EventHandler(this.barQuality_Scroll); + this.barQuality.ValueChanged += new System.EventHandler(this.barQuality_Scroll); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(27, 177); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 12); + this.label3.TabIndex = 10; + this.label3.Text = "质量:"; + // + // btnRef + // + this.btnRef.Location = new System.Drawing.Point(327, 30); + this.btnRef.Name = "btnRef"; + this.btnRef.Size = new System.Drawing.Size(22, 23); + this.btnRef.TabIndex = 2; + this.btnRef.Text = "..."; + this.btnRef.UseVisualStyleBackColor = true; + this.btnRef.Click += new System.EventHandler(this.btnRef_Click); + // + // txtFolder + // + this.txtFolder.Location = new System.Drawing.Point(75, 32); + this.txtFolder.Name = "txtFolder"; + this.txtFolder.Size = new System.Drawing.Size(250, 21); + this.txtFolder.TabIndex = 1; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(26, 35); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 0; + this.label1.Text = "保存路径:"; + // + // folderBrowserDialog1 + // + this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.ApplicationData; + // + // ImageJpegStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(401, 361); + this.Controls.Add(this.groupBox1); + this.Name = "ImageJpegStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.barQuality)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x0400030D RID: 781 + private global::System.Windows.Forms.Button btnRef; + + // Token: 0x0400030E RID: 782 + private global::System.Windows.Forms.TextBox txtFolder; + + // Token: 0x0400030F RID: 783 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000310 RID: 784 + private global::System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + + // Token: 0x04000311 RID: 785 + private global::System.Windows.Forms.TrackBar barQuality; + + // Token: 0x04000312 RID: 786 + private global::System.Windows.Forms.Label label3; + + // Token: 0x04000313 RID: 787 + private global::System.Windows.Forms.CheckBox chkShowParam; + + // Token: 0x04000314 RID: 788 + private global::System.Windows.Forms.Label label6; + + // Token: 0x04000315 RID: 789 + private global::System.Windows.Forms.Label label5; + + // Token: 0x04000316 RID: 790 + private global::System.Windows.Forms.Label lblQuality; + + // Token: 0x04000317 RID: 791 + private global::System.Windows.Forms.CheckBox chkWindow; + + // Token: 0x04000318 RID: 792 + private global::System.Windows.Forms.CheckBox chkCopy; + + // Token: 0x04000319 RID: 793 + private global::System.Windows.Forms.ComboBox cmbDupli; + + // Token: 0x0400031A RID: 794 + private global::System.Windows.Forms.Label label2; + + // Token: 0x0400031B RID: 795 + private global::System.Windows.Forms.RadioButton rdoSaveAs; + + // Token: 0x0400031C RID: 796 + private global::System.Windows.Forms.TextBox txtName; + + // Token: 0x0400031D RID: 797 + private global::System.Windows.Forms.RadioButton rdoScrapName; + + // Token: 0x0400031E RID: 798 + private global::System.Windows.Forms.RadioButton rdoName; + + // Token: 0x0400031F RID: 799 + private global::System.Windows.Forms.Label label4; + + // Token: 0x04000320 RID: 800 + private global::System.Windows.Forms.GroupBox groupBox1; + } +} diff --git a/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.cs b/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.cs new file mode 100644 index 0000000..b744465 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.cs @@ -0,0 +1,150 @@ +using System; +using System.IO; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000092 RID: 146 + internal partial class ImageJpegStyleItemPanel : ToolBoxForm + { + // Token: 0x060004D4 RID: 1236 RVA: 0x0002270A File Offset: 0x0002090A + public ImageJpegStyleItemPanel() + { + } + + // Token: 0x060004D5 RID: 1237 RVA: 0x00022712 File Offset: 0x00020912 + public ImageJpegStyleItemPanel(CImageJpegStyleItem item) : base(item) + { + } + + // Token: 0x060004D6 RID: 1238 RVA: 0x0002271C File Offset: 0x0002091C + protected override void SetStyleToForm(object style) + { + var cimageJpegStyleItem = (CImageJpegStyleItem)style; + InitializeComponent(); + Text = cimageJpegStyleItem.GetDisplayName(); + txtFolder.Text = cimageJpegStyleItem.SaveFolder; + barQuality.Value = cimageJpegStyleItem.Quality; + chkShowParam.Checked = cimageJpegStyleItem.ShowPreview; + chkWindow.Checked = cimageJpegStyleItem.HaveMargin; + chkCopy.Checked = cimageJpegStyleItem.CopyPath; + switch (cimageJpegStyleItem.FileNameType) + { + case CImageStyleItem.EnumFileName.SaveAs: + rdoSaveAs.Checked = true; + break; + case CImageStyleItem.EnumFileName.ScrapName: + rdoScrapName.Checked = true; + break; + case CImageStyleItem.EnumFileName.UseName: + rdoName.Checked = true; + break; + } + cmbDupli.SelectedIndex = (int)cimageJpegStyleItem.DupliType; + txtName.Text = cimageJpegStyleItem.FileName; + } + + // Token: 0x060004D7 RID: 1239 RVA: 0x000227FC File Offset: 0x000209FC + protected override object GetStyleFromForm() + { + var cimageJpegStyleItem = new CImageJpegStyleItem + { + SaveFolder = txtFolder.Text, + Quality = barQuality.Value, + ShowPreview = chkShowParam.Checked, + HaveMargin = chkWindow.Checked, + CopyPath = chkCopy.Checked + }; + if (rdoSaveAs.Checked) + { + cimageJpegStyleItem.FileNameType = CImageStyleItem.EnumFileName.SaveAs; + } + else if (rdoScrapName.Checked) + { + cimageJpegStyleItem.FileNameType = CImageStyleItem.EnumFileName.ScrapName; + } + else + { + cimageJpegStyleItem.FileNameType = CImageStyleItem.EnumFileName.UseName; + } + cimageJpegStyleItem.DupliType = (CImageStyleItem.EnumDupliType)cmbDupli.SelectedIndex; + cimageJpegStyleItem.FileName = txtName.Text; + return cimageJpegStyleItem; + } + + // Token: 0x060004D8 RID: 1240 RVA: 0x000228BC File Offset: 0x00020ABC + private void barQuality_Scroll(object sender, EventArgs e) + { + lblQuality.Text = barQuality.Value.ToString(); + } + + // Token: 0x060004D9 RID: 1241 RVA: 0x000228E8 File Offset: 0x00020AE8 + private void rdoSaveAs_CheckedChanged(object sender, EventArgs e) + { + if (rdoSaveAs.Checked) + { + cmbDupli.Enabled = false; + } + else + { + cmbDupli.Enabled = true; + } + if (rdoName.Checked) + { + txtName.Enabled = true; + return; + } + txtName.Enabled = false; + } + + // Token: 0x060004DA RID: 1242 RVA: 0x00022944 File Offset: 0x00020B44 + private void btnRef_Click(object sender, EventArgs e) + { + folderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyComputer; + folderBrowserDialog1.SelectedPath = txtFolder.Text; + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + txtFolder.Text = folderBrowserDialog1.SelectedPath; + } + } + + // Token: 0x060004DB RID: 1243 RVA: 0x00022998 File Offset: 0x00020B98 + protected override void OKCheck(ref bool cancel) + { + cancel = true; + if (txtFolder.Text != "") + { + try + { + Path.GetFullPath(txtFolder.Text); + } + catch + { + MessageBox.Show("文件夹名无效。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtFolder.Focus(); + return; + } + } + if (!rdoSaveAs.Checked && rdoName.Checked) + { + if (txtName.Text == "") + { + MessageBox.Show("没有指定文件名。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtName.Focus(); + return; + } + var invalidFileNameChars = Path.GetInvalidFileNameChars(); + foreach (var value in invalidFileNameChars) + { + if (txtName.Text.IndexOf(value) > -1) + { + MessageBox.Show("文件名无效。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtName.Focus(); + return; + } + } + } + cancel = false; + } + } +} diff --git a/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.resx b/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.resx new file mode 100644 index 0000000..a9b062a --- /dev/null +++ b/SETUNA/Main/StyleItems/ImageJpegStyleItemPanel.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ImagePngPreviewPanel.Designer.cs b/SETUNA/Main/StyleItems/ImagePngPreviewPanel.Designer.cs new file mode 100644 index 0000000..0f6b4bb --- /dev/null +++ b/SETUNA/Main/StyleItems/ImagePngPreviewPanel.Designer.cs @@ -0,0 +1,168 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200000C RID: 12 + partial class ImagePngPreviewPanel + { + // Token: 0x060000B1 RID: 177 RVA: 0x00004E0C File Offset: 0x0000300C + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.barQuality = new System.Windows.Forms.TrackBar(); + this.panel1 = new System.Windows.Forms.Panel(); + this.picPreview = new System.Windows.Forms.PictureBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.lblQuality = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.barQuality)).BeginInit(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(124, 214); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(198, 214); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.barQuality); + this.groupBox1.Controls.Add(this.panel1); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.lblQuality); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(261, 198); + this.groupBox1.TabIndex = 3; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // barQuality + // + this.barQuality.AutoSize = false; + this.barQuality.Location = new System.Drawing.Point(52, 143); + this.barQuality.Maximum = 100; + this.barQuality.Name = "barQuality"; + this.barQuality.Size = new System.Drawing.Size(173, 33); + this.barQuality.TabIndex = 6; + this.barQuality.TickFrequency = 10; + this.barQuality.Scroll += new System.EventHandler(this.barQuality_Scroll); + this.barQuality.ValueChanged += new System.EventHandler(this.barQuality_Scroll); + // + // panel1 + // + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel1.Controls.Add(this.picPreview); + this.panel1.Location = new System.Drawing.Point(13, 18); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(233, 119); + this.panel1.TabIndex = 11; + this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPreview_MouseMove); + this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.picPreview_MouseUp); + // + // picPreview + // + this.picPreview.Location = new System.Drawing.Point(-2, -2); + this.picPreview.Name = "picPreview"; + this.picPreview.Size = new System.Drawing.Size(94, 71); + this.picPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.picPreview.TabIndex = 11; + this.picPreview.TabStop = false; + this.picPreview.MouseDown += new System.Windows.Forms.MouseEventHandler(this.picPreview_MouseDown); + this.picPreview.MouseUp += new System.Windows.Forms.MouseEventHandler(this.picPreview_MouseUp); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(200, 177); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(23, 12); + this.label6.TabIndex = 9; + this.label6.Text = "100"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(61, 177); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(11, 12); + this.label5.TabIndex = 8; + this.label5.Text = "0"; + // + // lblQuality + // + this.lblQuality.Location = new System.Drawing.Point(224, 148); + this.lblQuality.Name = "lblQuality"; + this.lblQuality.Size = new System.Drawing.Size(24, 12); + this.lblQuality.TabIndex = 7; + this.lblQuality.Text = "100"; + this.lblQuality.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(11, 148); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 12); + this.label3.TabIndex = 5; + this.label3.Text = "质量:"; + // + // folderBrowserDialog1 + // + this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.ApplicationData; + // + // ImagePngPreviewPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(276, 246); + this.Controls.Add(this.groupBox1); + this.Name = "ImagePngPreviewPanel"; + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.barQuality)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x0400004B RID: 75 + private global::System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + + // Token: 0x0400004C RID: 76 + private global::System.Windows.Forms.TrackBar barQuality; + + // Token: 0x0400004D RID: 77 + private global::System.Windows.Forms.Label label3; + + // Token: 0x0400004E RID: 78 + private global::System.Windows.Forms.Label label6; + + // Token: 0x0400004F RID: 79 + private global::System.Windows.Forms.Label label5; + + // Token: 0x04000050 RID: 80 + private global::System.Windows.Forms.Label lblQuality; + + // Token: 0x04000051 RID: 81 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x04000053 RID: 83 + private global::System.Windows.Forms.Panel panel1; + + // Token: 0x04000054 RID: 84 + private global::System.Windows.Forms.PictureBox picPreview; + } +} diff --git a/SETUNA/Main/StyleItems/ImagePngPreviewPanel.cs b/SETUNA/Main/StyleItems/ImagePngPreviewPanel.cs new file mode 100644 index 0000000..184b518 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImagePngPreviewPanel.cs @@ -0,0 +1,106 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200000C RID: 12 + internal partial class ImagePngPreviewPanel : ToolBoxForm + { + // Token: 0x060000B2 RID: 178 RVA: 0x000053FC File Offset: 0x000035FC + public ImagePngPreviewPanel() + { + } + + // Token: 0x060000B3 RID: 179 RVA: 0x00005404 File Offset: 0x00003604 + public ImagePngPreviewPanel(CImagePngStyleItem item, Image img, ImageCodecInfo icodec) : base(item) + { + _img = img; + _icodec = icodec; + UpdatePreview(); + } + + // Token: 0x060000B4 RID: 180 RVA: 0x00005424 File Offset: 0x00003624 + protected override void SetStyleToForm(object style) + { + var cimagePngStyleItem = (CImagePngStyleItem)style; + InitializeComponent(); + Text = cimagePngStyleItem.GetDisplayName(); + barQuality.Value = cimagePngStyleItem.Quality; + } + + // Token: 0x060000B5 RID: 181 RVA: 0x0000545C File Offset: 0x0000365C + protected override object GetStyleFromForm() + { + return new CImagePngStyleItem + { + Quality = barQuality.Value + }; + } + + // Token: 0x060000B6 RID: 182 RVA: 0x00005481 File Offset: 0x00003681 + private void barQuality_Scroll(object sender, EventArgs e) + { + UpdatePreview(); + } + + // Token: 0x060000B7 RID: 183 RVA: 0x0000548C File Offset: 0x0000368C + protected void UpdatePreview() + { + if (_icodec == null) + { + return; + } + lblQuality.Text = barQuality.Value.ToString(); + Stream stream = new MemoryStream(); + var encoderParameters = new EncoderParameters(); + encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, barQuality.Value); + _img.Save(stream, _icodec, encoderParameters); + picPreview.Image = new Bitmap(stream); + stream.Close(); + } + + // Token: 0x060000B8 RID: 184 RVA: 0x00005514 File Offset: 0x00003714 + private void picPreview_MouseDown(object sender, MouseEventArgs e) + { + dragpt = new Point(e.X, e.Y); + dragpt = picPreview.PointToScreen(dragpt); + dragpt = panel1.PointToClient(dragpt); + panel1.Capture = true; + drag = true; + } + + // Token: 0x060000B9 RID: 185 RVA: 0x00005579 File Offset: 0x00003779 + private void picPreview_MouseUp(object sender, MouseEventArgs e) + { + panel1.Capture = false; + drag = false; + } + + // Token: 0x060000BA RID: 186 RVA: 0x00005590 File Offset: 0x00003790 + private void picPreview_MouseMove(object sender, MouseEventArgs e) + { + if (drag) + { + var x = picPreview.Location.X - (dragpt.X - e.X); + var y = picPreview.Location.Y - (dragpt.Y - e.Y); + dragpt = new Point(e.X, e.Y); + picPreview.SetBounds(x, y, 0, 0, BoundsSpecified.Location); + } + } + + // Token: 0x04000052 RID: 82 + private Image _img; + + // Token: 0x04000055 RID: 85 + private ImageCodecInfo _icodec; + + // Token: 0x04000056 RID: 86 + private bool drag; + + // Token: 0x04000057 RID: 87 + private Point dragpt; + } +} diff --git a/SETUNA/Main/StyleItems/ImagePngPreviewPanel.resx b/SETUNA/Main/StyleItems/ImagePngPreviewPanel.resx new file mode 100644 index 0000000..a9b062a --- /dev/null +++ b/SETUNA/Main/StyleItems/ImagePngPreviewPanel.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.Designer.cs new file mode 100644 index 0000000..f5bb560 --- /dev/null +++ b/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.Designer.cs @@ -0,0 +1,237 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200000F RID: 15 + partial class ImagePngStyleItemPanel + { + // Token: 0x060000CE RID: 206 RVA: 0x00005ACC File Offset: 0x00003CCC + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.cmbDupli = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.rdoSaveAs = new System.Windows.Forms.RadioButton(); + this.txtName = new System.Windows.Forms.TextBox(); + this.rdoScrapName = new System.Windows.Forms.RadioButton(); + this.rdoName = new System.Windows.Forms.RadioButton(); + this.label2 = new System.Windows.Forms.Label(); + this.chkCopy = new System.Windows.Forms.CheckBox(); + this.chkWindow = new System.Windows.Forms.CheckBox(); + this.btnRef = new System.Windows.Forms.Button(); + this.txtFolder = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(249, 231); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(323, 231); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.cmbDupli); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.rdoSaveAs); + this.groupBox1.Controls.Add(this.txtName); + this.groupBox1.Controls.Add(this.rdoScrapName); + this.groupBox1.Controls.Add(this.rdoName); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.chkCopy); + this.groupBox1.Controls.Add(this.chkWindow); + this.groupBox1.Controls.Add(this.btnRef); + this.groupBox1.Controls.Add(this.txtFolder); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(386, 217); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // cmbDupli + // + this.cmbDupli.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbDupli.FormattingEnabled = true; + this.cmbDupli.Items.AddRange(new object[] { + "覆盖", + "追加序号", + "重复时指定"}); + this.cmbDupli.Location = new System.Drawing.Point(129, 127); + this.cmbDupli.Name = "cmbDupli"; + this.cmbDupli.Size = new System.Drawing.Size(133, 20); + this.cmbDupli.TabIndex = 9; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(80, 130); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 8; + this.label3.Text = "重复时∶"; + // + // rdoSaveAs + // + this.rdoSaveAs.AutoSize = true; + this.rdoSaveAs.Location = new System.Drawing.Point(82, 66); + this.rdoSaveAs.Name = "rdoSaveAs"; + this.rdoSaveAs.Size = new System.Drawing.Size(83, 16); + this.rdoSaveAs.TabIndex = 4; + this.rdoSaveAs.TabStop = true; + this.rdoSaveAs.Text = "保存时指定"; + this.rdoSaveAs.UseVisualStyleBackColor = true; + this.rdoSaveAs.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // txtName + // + this.txtName.Location = new System.Drawing.Point(99, 104); + this.txtName.MaxLength = 255; + this.txtName.Name = "txtName"; + this.txtName.Size = new System.Drawing.Size(223, 21); + this.txtName.TabIndex = 7; + // + // rdoScrapName + // + this.rdoScrapName.AutoSize = true; + this.rdoScrapName.Location = new System.Drawing.Point(82, 86); + this.rdoScrapName.Name = "rdoScrapName"; + this.rdoScrapName.Size = new System.Drawing.Size(95, 16); + this.rdoScrapName.TabIndex = 5; + this.rdoScrapName.TabStop = true; + this.rdoScrapName.Text = "使用参考图名"; + this.rdoScrapName.UseVisualStyleBackColor = true; + this.rdoScrapName.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // rdoName + // + this.rdoName.AutoSize = true; + this.rdoName.Location = new System.Drawing.Point(82, 107); + this.rdoName.Name = "rdoName"; + this.rdoName.Size = new System.Drawing.Size(14, 13); + this.rdoName.TabIndex = 6; + this.rdoName.TabStop = true; + this.rdoName.UseVisualStyleBackColor = true; + this.rdoName.CheckedChanged += new System.EventHandler(this.rdoSaveAs_CheckedChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(23, 68); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 3; + this.label2.Text = "文件名∶"; + // + // chkCopy + // + this.chkCopy.AutoSize = true; + this.chkCopy.Location = new System.Drawing.Point(25, 182); + this.chkCopy.Name = "chkCopy"; + this.chkCopy.Size = new System.Drawing.Size(204, 16); + this.chkCopy.TabIndex = 11; + this.chkCopy.Text = "复制到剪贴板上的文件的保存路径"; + this.chkCopy.UseVisualStyleBackColor = true; + // + // chkWindow + // + this.chkWindow.AutoSize = true; + this.chkWindow.Location = new System.Drawing.Point(25, 164); + this.chkWindow.Name = "chkWindow"; + this.chkWindow.Size = new System.Drawing.Size(102, 16); + this.chkWindow.TabIndex = 10; + this.chkWindow.Text = "包含窗口/边框"; + this.chkWindow.UseVisualStyleBackColor = true; + // + // btnRef + // + this.btnRef.Location = new System.Drawing.Point(324, 30); + this.btnRef.Name = "btnRef"; + this.btnRef.Size = new System.Drawing.Size(22, 23); + this.btnRef.TabIndex = 2; + this.btnRef.Text = "..."; + this.btnRef.UseVisualStyleBackColor = true; + this.btnRef.Click += new System.EventHandler(this.btnRef_Click); + // + // txtFolder + // + this.txtFolder.Location = new System.Drawing.Point(72, 32); + this.txtFolder.Name = "txtFolder"; + this.txtFolder.Size = new System.Drawing.Size(250, 21); + this.txtFolder.TabIndex = 1; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(23, 35); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 0; + this.label1.Text = "目的地:"; + // + // folderBrowserDialog1 + // + this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.ApplicationData; + // + // ImagePngStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(401, 263); + this.Controls.Add(this.groupBox1); + this.Name = "ImagePngStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + // Token: 0x04000060 RID: 96 + private global::System.Windows.Forms.Button btnRef; + + // Token: 0x04000061 RID: 97 + private global::System.Windows.Forms.TextBox txtFolder; + + // Token: 0x04000062 RID: 98 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000063 RID: 99 + private global::System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + + // Token: 0x04000064 RID: 100 + private global::System.Windows.Forms.CheckBox chkWindow; + + // Token: 0x04000065 RID: 101 + private global::System.Windows.Forms.CheckBox chkCopy; + + // Token: 0x04000066 RID: 102 + private global::System.Windows.Forms.ComboBox cmbDupli; + + // Token: 0x04000067 RID: 103 + private global::System.Windows.Forms.Label label3; + + // Token: 0x04000068 RID: 104 + private global::System.Windows.Forms.RadioButton rdoSaveAs; + + // Token: 0x04000069 RID: 105 + private global::System.Windows.Forms.TextBox txtName; + + // Token: 0x0400006A RID: 106 + private global::System.Windows.Forms.RadioButton rdoScrapName; + + // Token: 0x0400006B RID: 107 + private global::System.Windows.Forms.RadioButton rdoName; + + // Token: 0x0400006C RID: 108 + private global::System.Windows.Forms.Label label2; + + // Token: 0x0400006D RID: 109 + private global::System.Windows.Forms.GroupBox groupBox1; + } +} diff --git a/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.cs b/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.cs new file mode 100644 index 0000000..794131e --- /dev/null +++ b/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.cs @@ -0,0 +1,145 @@ +using System; +using System.IO; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200000F RID: 15 + internal partial class ImagePngStyleItemPanel : ToolBoxForm + { + // Token: 0x060000CF RID: 207 RVA: 0x00006329 File Offset: 0x00004529 + public ImagePngStyleItemPanel() + { + } + + // Token: 0x060000D0 RID: 208 RVA: 0x00006331 File Offset: 0x00004531 + public ImagePngStyleItemPanel(CImagePngStyleItem item) : base(item) + { + } + + // Token: 0x060000D1 RID: 209 RVA: 0x0000633C File Offset: 0x0000453C + protected override void SetStyleToForm(object style) + { + var cimagePngStyleItem = (CImagePngStyleItem)style; + InitializeComponent(); + Text = cimagePngStyleItem.GetDisplayName(); + txtFolder.Text = cimagePngStyleItem.SaveFolder; + chkWindow.Checked = cimagePngStyleItem.HaveMargin; + chkCopy.Checked = cimagePngStyleItem.CopyPath; + switch (cimagePngStyleItem.FileNameType) + { + case CImageStyleItem.EnumFileName.SaveAs: + rdoSaveAs.Checked = true; + break; + case CImageStyleItem.EnumFileName.ScrapName: + rdoScrapName.Checked = true; + break; + case CImageStyleItem.EnumFileName.UseName: + rdoName.Checked = true; + break; + } + cmbDupli.SelectedIndex = (int)cimagePngStyleItem.DupliType; + txtName.Text = cimagePngStyleItem.FileName; + } + + // Token: 0x060000D2 RID: 210 RVA: 0x000063FC File Offset: 0x000045FC + protected override object GetStyleFromForm() + { + var cimagePngStyleItem = new CImagePngStyleItem + { + SaveFolder = txtFolder.Text, + HaveMargin = chkWindow.Checked, + CopyPath = chkCopy.Checked + }; + if (rdoSaveAs.Checked) + { + cimagePngStyleItem.FileNameType = CImageStyleItem.EnumFileName.SaveAs; + } + else if (rdoScrapName.Checked) + { + cimagePngStyleItem.FileNameType = CImageStyleItem.EnumFileName.ScrapName; + } + else + { + cimagePngStyleItem.FileNameType = CImageStyleItem.EnumFileName.UseName; + } + cimagePngStyleItem.DupliType = (CImageStyleItem.EnumDupliType)cmbDupli.SelectedIndex; + cimagePngStyleItem.FileName = txtName.Text; + return cimagePngStyleItem; + } + + // Token: 0x060000D3 RID: 211 RVA: 0x00006498 File Offset: 0x00004698 + private void barQuality_Scroll(object sender, EventArgs e) + { + } + + // Token: 0x060000D4 RID: 212 RVA: 0x0000649C File Offset: 0x0000469C + private void rdoSaveAs_CheckedChanged(object sender, EventArgs e) + { + if (rdoSaveAs.Checked) + { + cmbDupli.Enabled = false; + } + else + { + cmbDupli.Enabled = true; + } + if (rdoName.Checked) + { + txtName.Enabled = true; + return; + } + txtName.Enabled = false; + } + + // Token: 0x060000D5 RID: 213 RVA: 0x000064F8 File Offset: 0x000046F8 + private void btnRef_Click(object sender, EventArgs e) + { + folderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyComputer; + folderBrowserDialog1.SelectedPath = txtFolder.Text; + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + txtFolder.Text = folderBrowserDialog1.SelectedPath; + } + } + + // Token: 0x060000D6 RID: 214 RVA: 0x0000654C File Offset: 0x0000474C + protected override void OKCheck(ref bool cancel) + { + cancel = true; + if (txtFolder.Text != "") + { + try + { + Path.GetFullPath(txtFolder.Text); + } + catch + { + MessageBox.Show("文件夹名无效。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtFolder.Focus(); + return; + } + } + if (!rdoSaveAs.Checked && rdoName.Checked) + { + if (txtName.Text == "") + { + MessageBox.Show("没有指定文件名。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtName.Focus(); + return; + } + var invalidFileNameChars = Path.GetInvalidFileNameChars(); + foreach (var value in invalidFileNameChars) + { + if (txtName.Text.IndexOf(value) > -1) + { + MessageBox.Show("文件名无效。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + txtName.Focus(); + return; + } + } + } + cancel = false; + } + } +} diff --git a/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.resx b/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.resx new file mode 100644 index 0000000..a9b062a --- /dev/null +++ b/SETUNA/Main/StyleItems/ImagePngStyleItemPanel.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/LayerCommand.cs b/SETUNA/Main/StyleItems/LayerCommand.cs new file mode 100644 index 0000000..113bd52 --- /dev/null +++ b/SETUNA/Main/StyleItems/LayerCommand.cs @@ -0,0 +1,41 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000019 RID: 25 + public abstract class LayerCommand : ToolCommand + { + // Token: 0x17000042 RID: 66 + // (get) Token: 0x06000137 RID: 311 RVA: 0x000081F6 File Offset: 0x000063F6 + public string LayerName => _layerName; + + // Token: 0x17000043 RID: 67 + // (get) Token: 0x06000139 RID: 313 RVA: 0x00008207 File Offset: 0x00006407 + // (set) Token: 0x06000138 RID: 312 RVA: 0x000081FE File Offset: 0x000063FE + public long LayerID + { + get => _layerID; + protected set => _layerID = value; + } + + // Token: 0x0600013A RID: 314 RVA: 0x0000820F File Offset: 0x0000640F + public LayerCommand(string layerName) + { + _layerName = layerName; + } + + // Token: 0x0600013B RID: 315 RVA: 0x0000821E File Offset: 0x0000641E + public override void Draw(Graphics g) + { + } + + // Token: 0x0600013C RID: 316 + public abstract void Apply(); + + // Token: 0x04000099 RID: 153 + private string _layerName; + + // Token: 0x0400009A RID: 154 + private long _layerID; + } +} diff --git a/SETUNA/Main/StyleItems/LayerRenameWindow.Designer.cs b/SETUNA/Main/StyleItems/LayerRenameWindow.Designer.cs new file mode 100644 index 0000000..bf87e5b --- /dev/null +++ b/SETUNA/Main/StyleItems/LayerRenameWindow.Designer.cs @@ -0,0 +1,113 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000028 RID: 40 + partial class LayerRenameWindow + { + // Token: 0x0600019F RID: 415 RVA: 0x0000961C File Offset: 0x0000781C + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x060001A0 RID: 416 RVA: 0x0000963C File Offset: 0x0000783C + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.btnOK = new System.Windows.Forms.Button(); + this.txtLayerName = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.btnCancel = new System.Windows.Forms.Button(); + this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).BeginInit(); + this.SuspendLayout(); + // + // btnOK + // + this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; + this.btnOK.Location = new System.Drawing.Point(98, 51); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(64, 23); + this.btnOK.TabIndex = 1; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + // + // txtLayerName + // + this.txtLayerName.Location = new System.Drawing.Point(80, 18); + this.txtLayerName.MaxLength = 50; + this.txtLayerName.Name = "txtLayerName"; + this.txtLayerName.Size = new System.Drawing.Size(141, 21); + this.txtLayerName.TabIndex = 0; + this.txtLayerName.Validating += new System.ComponentModel.CancelEventHandler(this.textBox1_Validating); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(13, 21); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 2; + this.label1.Text = "图层名称:"; + // + // btnCancel + // + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(164, 51); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(64, 23); + this.btnCancel.TabIndex = 2; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + // + // errorProvider1 + // + this.errorProvider1.ContainerControl = this; + // + // LayerRenameWindow + // + this.AcceptButton = this.btnOK; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(240, 86); + this.ControlBox = false; + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtLayerName); + this.Controls.Add(this.btnOK); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "LayerRenameWindow"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "更改图层名称"; + this.TopMost = true; + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + // Token: 0x040000BE RID: 190 + private global::System.ComponentModel.IContainer components; + + // Token: 0x040000BF RID: 191 + private global::System.Windows.Forms.Button btnOK; + + // Token: 0x040000C0 RID: 192 + private global::System.Windows.Forms.TextBox txtLayerName; + + // Token: 0x040000C1 RID: 193 + private global::System.Windows.Forms.Label label1; + + // Token: 0x040000C2 RID: 194 + private global::System.Windows.Forms.Button btnCancel; + + // Token: 0x040000C3 RID: 195 + private global::System.Windows.Forms.ErrorProvider errorProvider1; + } +} diff --git a/SETUNA/Main/StyleItems/LayerRenameWindow.cs b/SETUNA/Main/StyleItems/LayerRenameWindow.cs new file mode 100644 index 0000000..3c849d8 --- /dev/null +++ b/SETUNA/Main/StyleItems/LayerRenameWindow.cs @@ -0,0 +1,34 @@ +using System.ComponentModel; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000028 RID: 40 + public partial class LayerRenameWindow : BaseForm + { + // Token: 0x1700004B RID: 75 + // (get) Token: 0x0600019C RID: 412 RVA: 0x000095CA File Offset: 0x000077CA + // (set) Token: 0x0600019B RID: 411 RVA: 0x000095BC File Offset: 0x000077BC + public string LayerName + { + get => txtLayerName.Text; + set => txtLayerName.Text = value; + } + + // Token: 0x0600019D RID: 413 RVA: 0x000095D7 File Offset: 0x000077D7 + public LayerRenameWindow() + { + InitializeComponent(); + } + + // Token: 0x0600019E RID: 414 RVA: 0x000095E5 File Offset: 0x000077E5 + private void textBox1_Validating(object sender, CancelEventArgs e) + { + if (txtLayerName.TextLength == 0) + { + errorProvider1.SetIconAlignment(txtLayerName, ErrorIconAlignment.TopLeft); + errorProvider1.SetError(txtLayerName, "没有输入图层名"); + } + } + } +} diff --git a/SETUNA/Main/StyleItems/LayerRenameWindow.resx b/SETUNA/Main/StyleItems/LayerRenameWindow.resx new file mode 100644 index 0000000..7bb98f4 --- /dev/null +++ b/SETUNA/Main/StyleItems/LayerRenameWindow.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/LoginInput.Designer.cs b/SETUNA/Main/StyleItems/LoginInput.Designer.cs new file mode 100644 index 0000000..d8e7350 --- /dev/null +++ b/SETUNA/Main/StyleItems/LoginInput.Designer.cs @@ -0,0 +1,149 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000079 RID: 121 + partial class LoginInput + { + // Token: 0x060003F6 RID: 1014 RVA: 0x00018B97 File Offset: 0x00016D97 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x060003F7 RID: 1015 RVA: 0x00018BB8 File Offset: 0x00016DB8 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.txtID = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.txtPass = new System.Windows.Forms.TextBox(); + this.btnCancel = new System.Windows.Forms.Button(); + this.btnOK = new System.Windows.Forms.Button(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.txtID); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.txtPass); + this.groupBox1.Location = new System.Drawing.Point(12, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(268, 108); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "groupBox1"; + // + // txtID + // + this.txtID.Location = new System.Drawing.Point(87, 28); + this.txtID.MaxLength = 100; + this.txtID.Name = "txtID"; + this.txtID.Size = new System.Drawing.Size(157, 21); + this.txtID.TabIndex = 1; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(24, 65); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 12); + this.label2.TabIndex = 2; + this.label2.Text = "密码:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(24, 31); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 12); + this.label1.TabIndex = 0; + this.label1.Text = "帐号:"; + // + // txtPass + // + this.txtPass.Location = new System.Drawing.Point(87, 62); + this.txtPass.MaxLength = 100; + this.txtPass.Name = "txtPass"; + this.txtPass.PasswordChar = '*'; + this.txtPass.Size = new System.Drawing.Size(157, 21); + this.txtPass.TabIndex = 3; + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(205, 126); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 2; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.Location = new System.Drawing.Point(124, 126); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(75, 23); + this.btnOK.TabIndex = 1; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // LoginInput + // + this.AcceptButton = this.btnOK; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(292, 156); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.groupBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.Name = "LoginInput"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "LoginInput"; + this.Shown += new System.EventHandler(this.LoginInput_Shown); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + // Token: 0x04000251 RID: 593 +#pragma warning disable CS0649 // 从未对字段“LoginInput.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“LoginInput.components”赋值,字段将一直保持其默认值 null + + // Token: 0x04000252 RID: 594 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x04000253 RID: 595 + private global::System.Windows.Forms.TextBox txtID; + + // Token: 0x04000254 RID: 596 + private global::System.Windows.Forms.Label label2; + + // Token: 0x04000255 RID: 597 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000256 RID: 598 + private global::System.Windows.Forms.TextBox txtPass; + + // Token: 0x04000257 RID: 599 + private global::System.Windows.Forms.Button btnCancel; + + // Token: 0x04000258 RID: 600 + private global::System.Windows.Forms.Button btnOK; + } +} diff --git a/SETUNA/Main/StyleItems/LoginInput.cs b/SETUNA/Main/StyleItems/LoginInput.cs new file mode 100644 index 0000000..770d225 --- /dev/null +++ b/SETUNA/Main/StyleItems/LoginInput.cs @@ -0,0 +1,68 @@ +using System; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000079 RID: 121 + public partial class LoginInput : BaseForm + { + // Token: 0x1700009D RID: 157 + // (get) Token: 0x060003EF RID: 1007 RVA: 0x00018ADA File Offset: 0x00016CDA + // (set) Token: 0x060003EE RID: 1006 RVA: 0x00018ACC File Offset: 0x00016CCC + public string ID + { + get => txtID.Text; + set => txtID.Text = value; + } + + // Token: 0x1700009E RID: 158 + // (get) Token: 0x060003F1 RID: 1009 RVA: 0x00018AF5 File Offset: 0x00016CF5 + // (set) Token: 0x060003F0 RID: 1008 RVA: 0x00018AE7 File Offset: 0x00016CE7 + public string Pass + { + get => txtPass.Text; + set => txtPass.Text = value; + } + + // Token: 0x1700009F RID: 159 + // (set) Token: 0x060003F2 RID: 1010 RVA: 0x00018B02 File Offset: 0x00016D02 + public string GroupTitle + { + set => groupBox1.Text = value; + } + + // Token: 0x060003F3 RID: 1011 RVA: 0x00018B10 File Offset: 0x00016D10 + public LoginInput() + { + InitializeComponent(); + } + + // Token: 0x060003F4 RID: 1012 RVA: 0x00018B20 File Offset: 0x00016D20 + private void btnOK_Click(object sender, EventArgs e) + { + if (txtID.TextLength == 0) + { + txtID.Focus(); + return; + } + if (txtPass.TextLength == 0) + { + txtPass.Focus(); + return; + } + base.DialogResult = DialogResult.OK; + base.Close(); + } + + // Token: 0x060003F5 RID: 1013 RVA: 0x00018B6E File Offset: 0x00016D6E + private void LoginInput_Shown(object sender, EventArgs e) + { + if (txtID.TextLength > 0) + { + txtPass.Focus(); + return; + } + txtID.Focus(); + } + } +} diff --git a/SETUNA/Main/StyleItems/LoginInput.resx b/SETUNA/Main/StyleItems/LoginInput.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/LoginInput.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/MarginStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/MarginStyleItemPanel.Designer.cs new file mode 100644 index 0000000..a90406e --- /dev/null +++ b/SETUNA/Main/StyleItems/MarginStyleItemPanel.Designer.cs @@ -0,0 +1,217 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000003 RID: 3 + partial class MarginStyleItemPanel + { + // Token: 0x0600000C RID: 12 RVA: 0x0000230C File Offset: 0x0000050C + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.chkTopMost = new System.Windows.Forms.CheckBox(); + this.rdoSolid = new System.Windows.Forms.RadioButton(); + this.rdo3D = new System.Windows.Forms.RadioButton(); + this.rdoWindow = new System.Windows.Forms.RadioButton(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.numMargin = new System.Windows.Forms.NumericUpDown(); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.picPreview = new System.Windows.Forms.PictureBox(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numMargin)).BeginInit(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(300, 214); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(376, 214); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.chkTopMost); + this.groupBox1.Controls.Add(this.rdoSolid); + this.groupBox1.Controls.Add(this.rdo3D); + this.groupBox1.Controls.Add(this.rdoWindow); + this.groupBox1.Controls.Add(this.pictureBox1); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.numMargin); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(207, 200); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // chkTopMost + // + this.chkTopMost.AutoSize = true; + this.chkTopMost.Location = new System.Drawing.Point(36, 46); + this.chkTopMost.Name = "chkTopMost"; + this.chkTopMost.Size = new System.Drawing.Size(120, 16); + this.chkTopMost.TabIndex = 11; + this.chkTopMost.Text = "设置为总在最上面"; + this.chkTopMost.UseVisualStyleBackColor = true; + // + // rdoSolid + // + this.rdoSolid.AutoSize = true; + this.rdoSolid.Location = new System.Drawing.Point(17, 79); + this.rdoSolid.Name = "rdoSolid"; + this.rdoSolid.Size = new System.Drawing.Size(71, 16); + this.rdoSolid.TabIndex = 1; + this.rdoSolid.TabStop = true; + this.rdoSolid.Text = "单色边框"; + this.rdoSolid.UseVisualStyleBackColor = true; + this.rdoSolid.CheckedChanged += new System.EventHandler(this.rdoWindow_CheckedChanged); + // + // rdo3D + // + this.rdo3D.AutoSize = true; + this.rdo3D.Location = new System.Drawing.Point(17, 156); + this.rdo3D.Name = "rdo3D"; + this.rdo3D.Size = new System.Drawing.Size(71, 16); + this.rdo3D.TabIndex = 5; + this.rdo3D.TabStop = true; + this.rdo3D.Text = "立体边框"; + this.rdo3D.UseVisualStyleBackColor = true; + this.rdo3D.CheckedChanged += new System.EventHandler(this.rdoWindow_CheckedChanged); + // + // rdoWindow + // + this.rdoWindow.AutoSize = true; + this.rdoWindow.Location = new System.Drawing.Point(17, 27); + this.rdoWindow.Name = "rdoWindow"; + this.rdoWindow.Size = new System.Drawing.Size(71, 16); + this.rdoWindow.TabIndex = 0; + this.rdoWindow.TabStop = true; + this.rdoWindow.Text = "窗口边框"; + this.rdoWindow.UseVisualStyleBackColor = true; + this.rdoWindow.CheckedChanged += new System.EventHandler(this.rdoWindow_CheckedChanged); + // + // pictureBox1 + // + this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBox1.Location = new System.Drawing.Point(93, 120); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(32, 19); + this.pictureBox1.TabIndex = 10; + this.pictureBox1.TabStop = false; + this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(53, 122); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(41, 12); + this.label2.TabIndex = 4; + this.label2.Text = "颜色∶"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(53, 98); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 12); + this.label1.TabIndex = 2; + this.label1.Text = "宽度:"; + // + // numMargin + // + this.numMargin.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numMargin.Location = new System.Drawing.Point(93, 96); + this.numMargin.Name = "numMargin"; + this.numMargin.Size = new System.Drawing.Size(48, 21); + this.numMargin.TabIndex = 3; + this.numMargin.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numMargin.ValueChanged += new System.EventHandler(this.rdoWindow_CheckedChanged); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.picPreview); + this.groupBox2.Location = new System.Drawing.Point(231, 8); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(215, 200); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "预览"; + // + // picPreview + // + this.picPreview.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.picPreview.Location = new System.Drawing.Point(6, 18); + this.picPreview.Name = "picPreview"; + this.picPreview.Size = new System.Drawing.Size(203, 176); + this.picPreview.TabIndex = 0; + this.picPreview.TabStop = false; + this.picPreview.Paint += new System.Windows.Forms.PaintEventHandler(this.picPreview_Paint); + // + // MarginStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(454, 246); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Name = "MarginStyleItemPanel"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MarginStyleItemPanel_FormClosed); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.Controls.SetChildIndex(this.groupBox2, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numMargin)).EndInit(); + this.groupBox2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x04000004 RID: 4 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x04000005 RID: 5 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000006 RID: 6 + private global::System.Windows.Forms.PictureBox pictureBox1; + + // Token: 0x04000007 RID: 7 + private global::System.Windows.Forms.Label label2; + + // Token: 0x04000008 RID: 8 + private global::System.Windows.Forms.ColorDialog colorDialog1; + + // Token: 0x04000009 RID: 9 + private global::System.Windows.Forms.GroupBox groupBox2; + + // Token: 0x0400000A RID: 10 + private global::System.Windows.Forms.PictureBox picPreview; + + // Token: 0x0400000B RID: 11 + private global::System.Windows.Forms.NumericUpDown numMargin; + + // Token: 0x0400000F RID: 15 + private global::System.Windows.Forms.RadioButton rdoWindow; + + // Token: 0x04000010 RID: 16 + private global::System.Windows.Forms.RadioButton rdoSolid; + + // Token: 0x04000011 RID: 17 + private global::System.Windows.Forms.RadioButton rdo3D; + + // Token: 0x04000012 RID: 18 + private global::System.Windows.Forms.CheckBox chkTopMost; + } +} diff --git a/SETUNA/Main/StyleItems/MarginStyleItemPanel.cs b/SETUNA/Main/StyleItems/MarginStyleItemPanel.cs new file mode 100644 index 0000000..89b11f7 --- /dev/null +++ b/SETUNA/Main/StyleItems/MarginStyleItemPanel.cs @@ -0,0 +1,197 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000003 RID: 3 + internal partial class MarginStyleItemPanel : ToolBoxForm + { + // Token: 0x0600000B RID: 11 RVA: 0x00002301 File Offset: 0x00000501 + public MarginStyleItemPanel(CMarginStyleItem style) : base(style) + { + } + + // Token: 0x0600000D RID: 13 RVA: 0x00002AF8 File Offset: 0x00000CF8 + protected override void SetStyleToForm(object style) + { + var cmarginStyleItem = (CMarginStyleItem)style; + InitializeComponent(); + imgBackground = new Bitmap(picPreview.Width, picPreview.Height, PixelFormat.Format24bppRgb); + using (var graphics = Graphics.FromImage(imgBackground)) + { + graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), imgBackground.Size); + } + imgScrap = SETUNA.Resources.Image.SampleImage; + picSample = new PictureBox + { + Image = imgScrap, + Size = imgScrap.Size + }; + frmPrev = new Form + { + TopLevel = false, + Parent = picPreview, + Text = "sample" + }; + frmPrev.Controls.Add(picSample); + ResizeSample(); + frmPrev.Show(); + numMargin.Value = cmarginStyleItem.MarginSize; + pictureBox1.BackColor = cmarginStyleItem.GetMarginColor(); + chkTopMost.Checked = cmarginStyleItem.TopMost; + switch (cmarginStyleItem.BorderStyle) + { + case 0: + rdo3D.Checked = true; + break; + case 1: + rdoSolid.Checked = true; + break; + case 2: + rdoWindow.Checked = true; + break; + default: + throw new Exception(); + } + Text = cmarginStyleItem.GetDisplayName(); + rdoWindow_CheckedChanged(null, null); + frmPrev.Paint += Sample_Paint; + } + + // Token: 0x0600000E RID: 14 RVA: 0x00002CCC File Offset: 0x00000ECC + protected override object GetStyleFromForm() + { + var cmarginStyleItem = new CMarginStyleItem + { + MarginSize = (int)numMargin.Value + }; + cmarginStyleItem.SetMarginColor(pictureBox1.BackColor); + if (rdoWindow.Checked) + { + cmarginStyleItem.BorderStyle = 2; + } + else if (rdoSolid.Checked) + { + cmarginStyleItem.BorderStyle = 1; + } + else if (rdo3D.Checked) + { + cmarginStyleItem.BorderStyle = 0; + } + cmarginStyleItem.TopMost = chkTopMost.Checked; + return cmarginStyleItem; + } + + // Token: 0x0600000F RID: 15 RVA: 0x00002D58 File Offset: 0x00000F58 + private void pictureBox1_Click(object sender, EventArgs e) + { + var dialogResult = colorDialog1.ShowDialog(); + if (dialogResult == DialogResult.OK) + { + pictureBox1.BackColor = colorDialog1.Color; + rdoWindow_CheckedChanged(null, null); + } + } + + // Token: 0x06000010 RID: 16 RVA: 0x00002D93 File Offset: 0x00000F93 + private void picPreview_Paint(object sender, PaintEventArgs e) + { + if (imgBackground != null) + { + e.Graphics.DrawImageUnscaled(imgBackground, new Point(0, 0)); + } + } + + // Token: 0x06000011 RID: 17 RVA: 0x00002DB5 File Offset: 0x00000FB5 + private void MarginStyleItemPanel_FormClosed(object sender, FormClosedEventArgs e) + { + if (imgBackground != null) + { + imgBackground.Dispose(); + imgBackground = null; + GC.Collect(); + } + } + + // Token: 0x06000012 RID: 18 RVA: 0x00002DD8 File Offset: 0x00000FD8 + private void ResizeSample() + { + if (frmPrev == null) + { + return; + } + frmPrev.MinimizeBox = false; + frmPrev.MaximizeBox = false; + frmPrev.ControlBox = false; + if (rdoWindow.Checked) + { + frmPrev.ClientSize = new Size(picSample.Width + 1, picSample.Height + 1); + frmPrev.BackColor = SystemColors.Control; + picSample.Left = 0; + picSample.Top = 0; + } + else if (rdoSolid.Checked) + { + frmPrev.ClientSize = new Size(picSample.Width + (int)numMargin.Value * 2, picSample.Height + (int)numMargin.Value * 2); + frmPrev.BackColor = pictureBox1.BackColor; + picSample.Left = (int)numMargin.Value; + picSample.Top = (int)numMargin.Value; + } + else if (rdo3D.Checked) + { + frmPrev.ClientSize = new Size(picSample.Width + 2, picSample.Height + 2); + frmPrev.BackColor = Color.FromArgb(25, 25, 25); + picSample.Left = 1; + picSample.Top = 1; + } + frmPrev.Left = (picPreview.Width - frmPrev.Width) / 2; + frmPrev.Top = (picPreview.Height - frmPrev.Height) / 2; + frmPrev.Refresh(); + } + + // Token: 0x06000013 RID: 19 RVA: 0x00002FD8 File Offset: 0x000011D8 + private void rdoWindow_CheckedChanged(object sender, EventArgs e) + { + if (rdoWindow.Checked) + { + frmPrev.FormBorderStyle = FormBorderStyle.FixedDialog; + } + else if (rdoSolid.Checked) + { + frmPrev.FormBorderStyle = FormBorderStyle.None; + } + else if (rdo3D.Checked) + { + frmPrev.FormBorderStyle = FormBorderStyle.None; + } + ResizeSample(); + } + + // Token: 0x06000014 RID: 20 RVA: 0x0000303C File Offset: 0x0000123C + private void Sample_Paint(object sender, PaintEventArgs e) + { + if (rdo3D.Checked) + { + using (var pen = new Pen(Color.FromArgb(243, 243, 243))) + { + e.Graphics.DrawLine(pen, 0, 0, 0, frmPrev.Height); + e.Graphics.DrawLine(pen, 0, 0, frmPrev.Width, 0); + } + } + } + + // Token: 0x0400000C RID: 12 + private Form frmPrev; + + // Token: 0x0400000D RID: 13 + private PictureBox picSample; + + // Token: 0x0400000E RID: 14 + private System.Drawing.Image imgBackground; + + // Token: 0x04000013 RID: 19 + private System.Drawing.Image imgScrap; + } +} diff --git a/SETUNA/Main/StyleItems/MarginStyleItemPanel.resx b/SETUNA/Main/StyleItems/MarginStyleItemPanel.resx new file mode 100644 index 0000000..4b336c9 --- /dev/null +++ b/SETUNA/Main/StyleItems/MarginStyleItemPanel.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/MoveStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/MoveStyleItemPanel.Designer.cs new file mode 100644 index 0000000..58e94df --- /dev/null +++ b/SETUNA/Main/StyleItems/MoveStyleItemPanel.Designer.cs @@ -0,0 +1,175 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200008D RID: 141 + partial class MoveStyleItemPanel + { + // Token: 0x060004A1 RID: 1185 RVA: 0x0001DAFC File Offset: 0x0001BCFC + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.numRight = new System.Windows.Forms.NumericUpDown(); + this.numLeft = new System.Windows.Forms.NumericUpDown(); + this.numDown = new System.Windows.Forms.NumericUpDown(); + this.numUp = new System.Windows.Forms.NumericUpDown(); + this.chkLeft = new System.Windows.Forms.CheckBox(); + this.chkRight = new System.Windows.Forms.CheckBox(); + this.chkUp = new System.Windows.Forms.CheckBox(); + this.chkDown = new System.Windows.Forms.CheckBox(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRight)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numLeft)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numUp)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(172, 219); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(248, 219); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.numRight); + this.groupBox1.Controls.Add(this.numLeft); + this.groupBox1.Controls.Add(this.numDown); + this.groupBox1.Controls.Add(this.numUp); + this.groupBox1.Controls.Add(this.chkLeft); + this.groupBox1.Controls.Add(this.chkRight); + this.groupBox1.Controls.Add(this.chkUp); + this.groupBox1.Controls.Add(this.chkDown); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(312, 203); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // numRight + // + this.numRight.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numRight.Location = new System.Drawing.Point(194, 96); + this.numRight.Name = "numRight"; + this.numRight.Size = new System.Drawing.Size(51, 21); + this.numRight.TabIndex = 5; + // + // numLeft + // + this.numLeft.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numLeft.Location = new System.Drawing.Point(75, 96); + this.numLeft.Name = "numLeft"; + this.numLeft.Size = new System.Drawing.Size(51, 21); + this.numLeft.TabIndex = 3; + // + // numDown + // + this.numDown.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numDown.Location = new System.Drawing.Point(133, 154); + this.numDown.Name = "numDown"; + this.numDown.Size = new System.Drawing.Size(51, 21); + this.numDown.TabIndex = 7; + // + // numUp + // + this.numUp.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numUp.Location = new System.Drawing.Point(133, 39); + this.numUp.Name = "numUp"; + this.numUp.Size = new System.Drawing.Size(51, 21); + this.numUp.TabIndex = 1; + // + // chkLeft + // + this.chkLeft.Location = new System.Drawing.Point(57, 81); + this.chkLeft.Name = "chkLeft"; + this.chkLeft.Size = new System.Drawing.Size(73, 49); + this.chkLeft.TabIndex = 2; + this.chkLeft.Text = "左"; + this.chkLeft.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.chkLeft.UseVisualStyleBackColor = true; + this.chkLeft.CheckedChanged += new System.EventHandler(this.chkLeft_CheckedChanged); + // + // chkRight + // + this.chkRight.Location = new System.Drawing.Point(176, 81); + this.chkRight.Name = "chkRight"; + this.chkRight.Size = new System.Drawing.Size(73, 49); + this.chkRight.TabIndex = 4; + this.chkRight.Text = "右"; + this.chkRight.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.chkRight.UseVisualStyleBackColor = true; + this.chkRight.CheckedChanged += new System.EventHandler(this.chkRight_CheckedChanged); + // + // chkUp + // + this.chkUp.Location = new System.Drawing.Point(115, 24); + this.chkUp.Name = "chkUp"; + this.chkUp.Size = new System.Drawing.Size(73, 49); + this.chkUp.TabIndex = 0; + this.chkUp.Text = "上"; + this.chkUp.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.chkUp.UseVisualStyleBackColor = true; + this.chkUp.CheckedChanged += new System.EventHandler(this.chkUp_CheckedChanged); + // + // chkDown + // + this.chkDown.Location = new System.Drawing.Point(115, 139); + this.chkDown.Name = "chkDown"; + this.chkDown.Size = new System.Drawing.Size(73, 49); + this.chkDown.TabIndex = 6; + this.chkDown.Text = "下"; + this.chkDown.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.chkDown.UseVisualStyleBackColor = true; + this.chkDown.CheckedChanged += new System.EventHandler(this.chkDown_CheckedChanged); + // + // MoveStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(326, 251); + this.Controls.Add(this.groupBox1); + this.Name = "MoveStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.numRight)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numLeft)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numUp)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x040002C5 RID: 709 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x040002C6 RID: 710 + private global::System.Windows.Forms.NumericUpDown numRight; + + // Token: 0x040002C7 RID: 711 + private global::System.Windows.Forms.NumericUpDown numLeft; + + // Token: 0x040002C8 RID: 712 + private global::System.Windows.Forms.NumericUpDown numDown; + + // Token: 0x040002C9 RID: 713 + private global::System.Windows.Forms.CheckBox chkRight; + + // Token: 0x040002CA RID: 714 + private global::System.Windows.Forms.CheckBox chkLeft; + + // Token: 0x040002CB RID: 715 + private global::System.Windows.Forms.CheckBox chkUp; + + // Token: 0x040002CC RID: 716 + private global::System.Windows.Forms.CheckBox chkDown; + + // Token: 0x040002CD RID: 717 + private global::System.Windows.Forms.NumericUpDown numUp; + } +} diff --git a/SETUNA/Main/StyleItems/MoveStyleItemPanel.cs b/SETUNA/Main/StyleItems/MoveStyleItemPanel.cs new file mode 100644 index 0000000..5f419c3 --- /dev/null +++ b/SETUNA/Main/StyleItems/MoveStyleItemPanel.cs @@ -0,0 +1,154 @@ +using System; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200008D RID: 141 + internal partial class MoveStyleItemPanel : ToolBoxForm + { + // Token: 0x060004A0 RID: 1184 RVA: 0x0001DA94 File Offset: 0x0001BC94 + public MoveStyleItemPanel(CStyleItem item) : base(item) + { + numUp.Maximum = CMoveStyleItem.MAX_MOVE; + numDown.Maximum = CMoveStyleItem.MAX_MOVE; + numLeft.Maximum = CMoveStyleItem.MAX_MOVE; + numRight.Maximum = CMoveStyleItem.MAX_MOVE; + } + + // Token: 0x060004A2 RID: 1186 RVA: 0x0001E1A4 File Offset: 0x0001C3A4 + protected override void SetStyleToForm(object style) + { + var cmoveStyleItem = (CMoveStyleItem)style; + InitializeComponent(); + Text = cmoveStyleItem.GetDisplayName(); + if (cmoveStyleItem.Top <= 0) + { + chkDown.Checked = true; + chkUp.Checked = true; + numUp.Value = Math.Abs(cmoveStyleItem.Top); + } + else + { + chkUp.Checked = true; + chkDown.Checked = true; + numDown.Value = Math.Abs(cmoveStyleItem.Top); + } + if (cmoveStyleItem.Left <= 0) + { + chkRight.Checked = true; + chkLeft.Checked = true; + numLeft.Value = Math.Abs(cmoveStyleItem.Left); + return; + } + chkLeft.Checked = true; + chkRight.Checked = true; + numRight.Value = Math.Abs(cmoveStyleItem.Left); + } + + // Token: 0x060004A3 RID: 1187 RVA: 0x0001E2AC File Offset: 0x0001C4AC + protected override object GetStyleFromForm() + { + var cmoveStyleItem = new CMoveStyleItem(); + int top; + if (chkUp.Checked) + { + top = -(int)numUp.Value; + } + else + { + top = (int)numDown.Value; + } + int left; + if (chkLeft.Checked) + { + left = -(int)numLeft.Value; + } + else + { + left = (int)numRight.Value; + } + cmoveStyleItem.Top = top; + cmoveStyleItem.Left = left; + return cmoveStyleItem; + } + + // Token: 0x060004A4 RID: 1188 RVA: 0x0001E334 File Offset: 0x0001C534 + private void chkUp_CheckedChanged(object sender, EventArgs e) + { + if (!chkDown.Checked && !chkUp.Checked) + { + chkUp.Checked = true; + } + if (chkDown.Checked && chkUp.Checked) + { + chkDown.Checked = false; + } + if (chkUp.Checked) + { + numUp.Enabled = true; + return; + } + numUp.Enabled = false; + numUp.Value = 0m; + } + + // Token: 0x060004A5 RID: 1189 RVA: 0x0001E3C4 File Offset: 0x0001C5C4 + private void chkDown_CheckedChanged(object sender, EventArgs e) + { + if (!chkDown.Checked && !chkUp.Checked) + { + chkDown.Checked = true; + } + if (chkDown.Checked && chkUp.Checked) + { + chkUp.Checked = false; + } + if (chkDown.Checked) + { + numDown.Enabled = true; + return; + } + numDown.Enabled = false; + numDown.Value = 0m; + } + + // Token: 0x060004A6 RID: 1190 RVA: 0x0001E454 File Offset: 0x0001C654 + private void chkLeft_CheckedChanged(object sender, EventArgs e) + { + if (!chkRight.Checked && !chkLeft.Checked) + { + chkLeft.Checked = true; + } + if (chkRight.Checked && chkLeft.Checked) + { + chkRight.Checked = false; + } + if (chkLeft.Checked) + { + numLeft.Enabled = true; + return; + } + numLeft.Enabled = false; + numLeft.Value = 0m; + } + + // Token: 0x060004A7 RID: 1191 RVA: 0x0001E4E4 File Offset: 0x0001C6E4 + private void chkRight_CheckedChanged(object sender, EventArgs e) + { + if (!chkRight.Checked && !chkLeft.Checked) + { + chkRight.Checked = true; + } + if (chkRight.Checked && chkLeft.Checked) + { + chkLeft.Checked = false; + } + if (chkRight.Checked) + { + numRight.Enabled = true; + return; + } + numRight.Enabled = false; + numRight.Value = 0m; + } + } +} diff --git a/SETUNA/Main/StyleItems/MoveStyleItemPanel.resx b/SETUNA/Main/StyleItems/MoveStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/MoveStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/NothingStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/NothingStyleItemPanel.Designer.cs new file mode 100644 index 0000000..87b5dbb --- /dev/null +++ b/SETUNA/Main/StyleItems/NothingStyleItemPanel.Designer.cs @@ -0,0 +1,47 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200000B RID: 11 + partial class NothingStyleItemPanel + { + // Token: 0x060000B0 RID: 176 RVA: 0x00004CCC File Offset: 0x00002ECC + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(53, 62); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(129, 62); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(23, 28); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(101, 12); + this.label1.TabIndex = 2; + this.label1.Text = "这个项目没有设置"; + // + // NothingStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(207, 94); + this.Controls.Add(this.label1); + this.Name = "NothingStyleItemPanel"; + this.Controls.SetChildIndex(this.label1, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + // Token: 0x0400004A RID: 74 + private global::System.Windows.Forms.Label label1; + } +} diff --git a/SETUNA/Main/StyleItems/NothingStyleItemPanel.cs b/SETUNA/Main/StyleItems/NothingStyleItemPanel.cs new file mode 100644 index 0000000..d38a305 --- /dev/null +++ b/SETUNA/Main/StyleItems/NothingStyleItemPanel.cs @@ -0,0 +1,25 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200000B RID: 11 + internal partial class NothingStyleItemPanel : ToolBoxForm + { + // Token: 0x060000AD RID: 173 RVA: 0x00004C94 File Offset: 0x00002E94 + public NothingStyleItemPanel(CStyleItem item) : base(item) + { + } + + // Token: 0x060000AE RID: 174 RVA: 0x00004CA0 File Offset: 0x00002EA0 + protected override void SetStyleToForm(object style) + { + var cstyleItem = (CStyleItem)style; + InitializeComponent(); + Text = cstyleItem.GetDisplayName(); + } + + // Token: 0x060000AF RID: 175 RVA: 0x00004CC6 File Offset: 0x00002EC6 + protected override object GetStyleFromForm() + { + return null; + } + } +} diff --git a/SETUNA/Main/StyleItems/NothingStyleItemPanel.resx b/SETUNA/Main/StyleItems/NothingStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/NothingStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/OpacityStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/OpacityStyleItemPanel.Designer.cs new file mode 100644 index 0000000..6ab763d --- /dev/null +++ b/SETUNA/Main/StyleItems/OpacityStyleItemPanel.Designer.cs @@ -0,0 +1,277 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200008F RID: 143 + partial class OpacityStyleItemPanel + { + // Token: 0x060004AF RID: 1199 RVA: 0x0001F2A8 File Offset: 0x0001D4A8 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.label4 = new System.Windows.Forms.Label(); + this.numPreview = new System.Windows.Forms.NumericUpDown(); + this.btnPreview = new System.Windows.Forms.Button(); + this.picPreview = new System.Windows.Forms.PictureBox(); + this.barOpacity2 = new System.Windows.Forms.TrackBar(); + this.barOpacity = new System.Windows.Forms.TrackBar(); + this.label3 = new System.Windows.Forms.Label(); + this.numOpacity2 = new System.Windows.Forms.NumericUpDown(); + this.rdoIncrement = new System.Windows.Forms.RadioButton(); + this.rdoFixed = new System.Windows.Forms.RadioButton(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.numOpacity = new System.Windows.Forms.NumericUpDown(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numPreview)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.barOpacity2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.barOpacity)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numOpacity2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numOpacity)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(377, 222); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(451, 222); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.groupBox2); + this.groupBox1.Controls.Add(this.barOpacity2); + this.groupBox1.Controls.Add(this.barOpacity); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.numOpacity2); + this.groupBox1.Controls.Add(this.rdoIncrement); + this.groupBox1.Controls.Add(this.rdoFixed); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.numOpacity); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(513, 208); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.label4); + this.groupBox2.Controls.Add(this.numPreview); + this.groupBox2.Controls.Add(this.btnPreview); + this.groupBox2.Controls.Add(this.picPreview); + this.groupBox2.Location = new System.Drawing.Point(328, 18); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(179, 181); + this.groupBox2.TabIndex = 9; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "预览"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(162, 157); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(11, 12); + this.label4.TabIndex = 2; + this.label4.Text = "%"; + // + // numPreview + // + this.numPreview.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numPreview.Location = new System.Drawing.Point(108, 155); + this.numPreview.Name = "numPreview"; + this.numPreview.Size = new System.Drawing.Size(48, 21); + this.numPreview.TabIndex = 1; + this.numPreview.ValueChanged += new System.EventHandler(this.numPreview_ValueChanged); + // + // btnPreview + // + this.btnPreview.Location = new System.Drawing.Point(6, 152); + this.btnPreview.Name = "btnPreview"; + this.btnPreview.Size = new System.Drawing.Size(96, 23); + this.btnPreview.TabIndex = 0; + this.btnPreview.Text = "应用相对值"; + this.btnPreview.UseVisualStyleBackColor = true; + this.btnPreview.Click += new System.EventHandler(this.btnPreview_Click); + // + // picPreview + // + this.picPreview.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.picPreview.Location = new System.Drawing.Point(6, 18); + this.picPreview.Name = "picPreview"; + this.picPreview.Size = new System.Drawing.Size(167, 131); + this.picPreview.TabIndex = 0; + this.picPreview.TabStop = false; + this.picPreview.Paint += new System.Windows.Forms.PaintEventHandler(this.picPreview_Paint); + // + // barOpacity2 + // + this.barOpacity2.AutoSize = false; + this.barOpacity2.Location = new System.Drawing.Point(107, 79); + this.barOpacity2.Name = "barOpacity2"; + this.barOpacity2.Size = new System.Drawing.Size(123, 20); + this.barOpacity2.TabIndex = 6; + this.barOpacity2.TickFrequency = 10; + this.barOpacity2.Scroll += new System.EventHandler(this.barOpacity_Scroll); + // + // barOpacity + // + this.barOpacity.AutoSize = false; + this.barOpacity.Location = new System.Drawing.Point(107, 50); + this.barOpacity.Maximum = 100; + this.barOpacity.Minimum = 1; + this.barOpacity.Name = "barOpacity"; + this.barOpacity.Size = new System.Drawing.Size(123, 20); + this.barOpacity.TabIndex = 2; + this.barOpacity.TickFrequency = 10; + this.barOpacity.Value = 1; + this.barOpacity.Scroll += new System.EventHandler(this.barOpacity_Scroll); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(290, 79); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(11, 12); + this.label3.TabIndex = 8; + this.label3.Text = "%"; + // + // numOpacity2 + // + this.numOpacity2.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numOpacity2.Location = new System.Drawing.Point(236, 77); + this.numOpacity2.Name = "numOpacity2"; + this.numOpacity2.Size = new System.Drawing.Size(48, 21); + this.numOpacity2.TabIndex = 7; + this.numOpacity2.ValueChanged += new System.EventHandler(this.numOpacity_ValueChanged); + this.numOpacity2.Enter += new System.EventHandler(this.numOpacity_Enter); + // + // rdoIncrement + // + this.rdoIncrement.AutoSize = true; + this.rdoIncrement.Location = new System.Drawing.Point(42, 77); + this.rdoIncrement.Name = "rdoIncrement"; + this.rdoIncrement.Size = new System.Drawing.Size(59, 16); + this.rdoIncrement.TabIndex = 5; + this.rdoIncrement.Text = "相对值"; + this.rdoIncrement.UseVisualStyleBackColor = true; + // + // rdoFixed + // + this.rdoFixed.AutoSize = true; + this.rdoFixed.Checked = true; + this.rdoFixed.Location = new System.Drawing.Point(42, 49); + this.rdoFixed.Name = "rdoFixed"; + this.rdoFixed.Size = new System.Drawing.Size(59, 16); + this.rdoFixed.TabIndex = 1; + this.rdoFixed.TabStop = true; + this.rdoFixed.Text = "绝对值"; + this.rdoFixed.UseVisualStyleBackColor = true; + this.rdoFixed.CheckedChanged += new System.EventHandler(this.rdoFixed_CheckedChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(290, 51); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(11, 12); + this.label2.TabIndex = 4; + this.label2.Text = "%"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(25, 31); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 0; + this.label1.Text = "不透明度:"; + // + // numOpacity + // + this.numOpacity.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numOpacity.Location = new System.Drawing.Point(236, 49); + this.numOpacity.Name = "numOpacity"; + this.numOpacity.Size = new System.Drawing.Size(48, 21); + this.numOpacity.TabIndex = 3; + this.numOpacity.ValueChanged += new System.EventHandler(this.numOpacity_ValueChanged); + this.numOpacity.Enter += new System.EventHandler(this.numOpacity_Enter); + // + // OpacityStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(529, 254); + this.Controls.Add(this.groupBox1); + this.DoubleBuffered = true; + this.Name = "OpacityStyleItemPanel"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.OpacityStyleItemPanel_FormClosed); + this.Shown += new System.EventHandler(this.OpacityStyleItemPanel_Shown); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numPreview)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.barOpacity2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.barOpacity)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numOpacity2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numOpacity)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x040002DA RID: 730 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x040002DB RID: 731 + private global::System.Windows.Forms.RadioButton rdoIncrement; + + // Token: 0x040002DC RID: 732 + private global::System.Windows.Forms.RadioButton rdoFixed; + + // Token: 0x040002DD RID: 733 + private global::System.Windows.Forms.Label label1; + + // Token: 0x040002DE RID: 734 + private global::System.Windows.Forms.Label label2; + + // Token: 0x040002DF RID: 735 + private global::System.Windows.Forms.Label label3; + + // Token: 0x040002E0 RID: 736 + private global::System.Windows.Forms.NumericUpDown numOpacity2; + + // Token: 0x040002E1 RID: 737 + private global::System.Windows.Forms.TrackBar barOpacity; + + // Token: 0x040002E2 RID: 738 + private global::System.Windows.Forms.TrackBar barOpacity2; + + // Token: 0x040002E3 RID: 739 + private global::System.Windows.Forms.GroupBox groupBox2; + + // Token: 0x040002E4 RID: 740 + private global::System.Windows.Forms.Button btnPreview; + + // Token: 0x040002E5 RID: 741 + private global::System.Windows.Forms.PictureBox picPreview; + + // Token: 0x040002E6 RID: 742 + private global::System.Windows.Forms.Label label4; + + // Token: 0x040002E7 RID: 743 + private global::System.Windows.Forms.NumericUpDown numPreview; + + // Token: 0x040002E8 RID: 744 + private global::System.Windows.Forms.NumericUpDown numOpacity; + } +} diff --git a/SETUNA/Main/StyleItems/OpacityStyleItemPanel.cs b/SETUNA/Main/StyleItems/OpacityStyleItemPanel.cs new file mode 100644 index 0000000..cd9b5ff --- /dev/null +++ b/SETUNA/Main/StyleItems/OpacityStyleItemPanel.cs @@ -0,0 +1,217 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200008F RID: 143 + internal partial class OpacityStyleItemPanel : ToolBoxForm + { + // Token: 0x060004B0 RID: 1200 RVA: 0x0001FD16 File Offset: 0x0001DF16 + public OpacityStyleItemPanel() + { + } + + // Token: 0x060004B1 RID: 1201 RVA: 0x0001FD1E File Offset: 0x0001DF1E + public OpacityStyleItemPanel(COpacityStyleItem item) : base(item) + { + } + + // Token: 0x060004B2 RID: 1202 RVA: 0x0001FD28 File Offset: 0x0001DF28 + protected override void SetStyleToForm(object style) + { + var copacityStyleItem = (COpacityStyleItem)style; + InitializeComponent(); + Text = copacityStyleItem.GetDisplayName(); + numOpacity.Minimum = 1m; + numOpacity.Maximum = 100m; + numOpacity.Value = 100m; + barOpacity.Minimum = 1; + barOpacity.Maximum = 100; + barOpacity.Value = 100; + numPreview.Minimum = 1m; + numPreview.Maximum = 100m; + numPreview.Value = 100m; + numOpacity2.Minimum = -99m; + numOpacity2.Maximum = 99m; + numOpacity2.Value = 0m; + barOpacity2.Minimum = -99; + barOpacity2.Maximum = 99; + barOpacity2.Value = 0; + rdoFixed.Checked = copacityStyleItem.Absolute; + rdoIncrement.Checked = !copacityStyleItem.Absolute; + if (copacityStyleItem.Absolute) + { + numOpacity.Value = copacityStyleItem.Opacity; + numPreview.Value = copacityStyleItem.Opacity; + } + else + { + numOpacity2.Value = copacityStyleItem.Opacity; + } + rdoFixed_CheckedChanged(this, null); + cm = new ColorMatrix + { + Matrix00 = 1f, + Matrix11 = 1f, + Matrix22 = 1f, + Matrix33 = (float)(numPreview.Value / 100m), + Matrix44 = 1f + }; + ia = new ImageAttributes(); + ia.SetColorMatrix(cm); + imgBackground = new Bitmap(picPreview.Width, picPreview.Height, PixelFormat.Format24bppRgb); + using (var graphics = Graphics.FromImage(imgBackground)) + { + graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), imgBackground.Size); + } + imgScrap = SETUNA.Resources.Image.SampleImage; + } + + // Token: 0x060004B3 RID: 1203 RVA: 0x0001FFBC File Offset: 0x0001E1BC + protected override object GetStyleFromForm() + { + var copacityStyleItem = new COpacityStyleItem(); + if (rdoFixed.Checked) + { + copacityStyleItem.Opacity = (int)numOpacity.Value; + } + else + { + copacityStyleItem.Opacity = (int)numOpacity2.Value; + } + copacityStyleItem.Absolute = rdoFixed.Checked; + return copacityStyleItem; + } + + // Token: 0x060004B4 RID: 1204 RVA: 0x0002001C File Offset: 0x0001E21C + private void rdoFixed_CheckedChanged(object sender, EventArgs e) + { + if (rdoFixed.Checked) + { + numOpacity.Enabled = true; + numOpacity2.Enabled = false; + barOpacity.Enabled = true; + barOpacity2.Enabled = false; + numOpacity.Focus(); + btnPreview.Enabled = false; + numPreview.Enabled = false; + numPreview.Value = numOpacity.Value; + return; + } + numOpacity.Enabled = false; + numOpacity2.Enabled = true; + barOpacity.Enabled = false; + barOpacity2.Enabled = true; + numOpacity2.Focus(); + btnPreview.Enabled = true; + numPreview.Enabled = true; + } + + // Token: 0x060004B5 RID: 1205 RVA: 0x000200F8 File Offset: 0x0001E2F8 + private void numOpacity_Enter(object sender, EventArgs e) + { + var numericUpDown = (NumericUpDown)sender; + numericUpDown.Select(0, numericUpDown.Value.ToString().Length); + } + + // Token: 0x060004B6 RID: 1206 RVA: 0x00020126 File Offset: 0x0001E326 + private void OpacityStyleItemPanel_Shown(object sender, EventArgs e) + { + if (rdoFixed.Checked) + { + numOpacity.Focus(); + return; + } + numOpacity2.Focus(); + } + + // Token: 0x060004B7 RID: 1207 RVA: 0x0002014E File Offset: 0x0001E34E + private void barOpacity_Scroll(object sender, EventArgs e) + { + numOpacity.Value = barOpacity.Value; + numOpacity2.Value = barOpacity2.Value; + } + + // Token: 0x060004B8 RID: 1208 RVA: 0x00020188 File Offset: 0x0001E388 + private void numOpacity_ValueChanged(object sender, EventArgs e) + { + if (barOpacity.Value != (int)numOpacity.Value) + { + barOpacity.Value = (int)numOpacity.Value; + } + if (barOpacity2.Value != (int)numOpacity2.Value) + { + barOpacity2.Value = (int)numOpacity2.Value; + } + if (rdoFixed.Checked) + { + numPreview.Value = numOpacity.Value; + } + } + + // Token: 0x060004B9 RID: 1209 RVA: 0x00020228 File Offset: 0x0001E428 + private void btnPreview_Click(object sender, EventArgs e) + { + if (numPreview.Value + numOpacity2.Value > numPreview.Maximum) + { + numPreview.Value = numPreview.Maximum; + return; + } + if (numPreview.Value + numOpacity2.Value < numPreview.Minimum) + { + numPreview.Value = numPreview.Minimum; + return; + } + numPreview.Value += numOpacity2.Value; + } + + // Token: 0x060004BA RID: 1210 RVA: 0x000202E0 File Offset: 0x0001E4E0 + private void picPreview_Paint(object sender, PaintEventArgs e) + { + if (imgBackground != null) + { + e.Graphics.DrawImageUnscaled(imgBackground, new Point(0, 0)); + } + if (imgScrap != null) + { + e.Graphics.DrawImage(imgScrap, new Rectangle((imgBackground.Width - imgScrap.Width) / 2, (imgBackground.Height - imgScrap.Height) / 2, imgScrap.Width, imgScrap.Height), 0, 0, imgScrap.Width, imgScrap.Height, GraphicsUnit.Pixel, ia); + } + } + + // Token: 0x060004BB RID: 1211 RVA: 0x00020392 File Offset: 0x0001E592 + private void OpacityStyleItemPanel_FormClosed(object sender, FormClosedEventArgs e) + { + if (imgBackground != null) + { + imgBackground.Dispose(); + imgBackground = null; + GC.Collect(); + } + } + + // Token: 0x060004BC RID: 1212 RVA: 0x000203B4 File Offset: 0x0001E5B4 + private void numPreview_ValueChanged(object sender, EventArgs e) + { + if (cm != null && ia != null) + { + cm.Matrix33 = (float)(numPreview.Value / 100m); + ia.SetColorMatrix(cm); + } + Refresh(); + } + + // Token: 0x040002E9 RID: 745 + private System.Drawing.Image imgBackground; + + // Token: 0x040002EA RID: 746 + private System.Drawing.Image imgScrap; + + // Token: 0x040002EB RID: 747 + private ImageAttributes ia; + + // Token: 0x040002EC RID: 748 + private ColorMatrix cm; + } +} diff --git a/SETUNA/Main/StyleItems/OpacityStyleItemPanel.resx b/SETUNA/Main/StyleItems/OpacityStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/OpacityStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/PaintForm.Designer.cs b/SETUNA/Main/StyleItems/PaintForm.Designer.cs new file mode 100644 index 0000000..b504c83 --- /dev/null +++ b/SETUNA/Main/StyleItems/PaintForm.Designer.cs @@ -0,0 +1,60 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000B3 RID: 179 + partial class PaintForm + { + // Token: 0x0600059E RID: 1438 RVA: 0x00026F22 File Offset: 0x00025122 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + if (this._src != null) + { + this._src.Dispose(); + this._src = null; + } + base.Dispose(disposing); + } + + // Token: 0x0600059F RID: 1439 RVA: 0x00026F5C File Offset: 0x0002515C + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(212, 231); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(73, 29); + this.button1.TabIndex = 0; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // PaintForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 266); + this.Controls.Add(this.button1); + this.Name = "PaintForm"; + this.Text = "PaintForm"; + this.ResumeLayout(false); + + } + + // Token: 0x04000394 RID: 916 +#pragma warning disable CS0649 // 从未对字段“PaintForm.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“PaintForm.components”赋值,字段将一直保持其默认值 null + + // Token: 0x04000395 RID: 917 + private global::System.Windows.Forms.Button button1; + + // Token: 0x04000396 RID: 918 + private global::System.Drawing.Image _src; + } +} diff --git a/SETUNA/Main/StyleItems/PaintForm.cs b/SETUNA/Main/StyleItems/PaintForm.cs new file mode 100644 index 0000000..0817947 --- /dev/null +++ b/SETUNA/Main/StyleItems/PaintForm.cs @@ -0,0 +1,56 @@ +using System; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000B3 RID: 179 + public partial class PaintForm : BaseForm + { + // Token: 0x170000C7 RID: 199 + // (get) Token: 0x060005A0 RID: 1440 RVA: 0x00027056 File Offset: 0x00025256 + public Image Image => _src; + + // Token: 0x060005A1 RID: 1441 RVA: 0x0002705E File Offset: 0x0002525E + public PaintForm(Image src) + { + InitializeComponent(); + _src = src; + } + + // Token: 0x060005A2 RID: 1442 RVA: 0x00027073 File Offset: 0x00025273 + protected override void OnPaint(PaintEventArgs e) + { + e.Graphics.FillRectangle(Brushes.Gray, 0, 0, base.Width, base.Height); + if (_src != null) + { + e.Graphics.DrawImageUnscaled(_src, 0, 0); + } + } + + // Token: 0x060005A3 RID: 1443 RVA: 0x000270AE File Offset: 0x000252AE + private void button1_Click(object sender, EventArgs e) + { + base.Close(); + } + + // Token: 0x020000B4 RID: 180 + private abstract class PaintCommand + { + // Token: 0x170000C8 RID: 200 + // (get) Token: 0x060005A5 RID: 1445 RVA: 0x000270BF File Offset: 0x000252BF + // (set) Token: 0x060005A4 RID: 1444 RVA: 0x000270B6 File Offset: 0x000252B6 + public float Opacity + { + get => _opacity; + set => _opacity = value; + } + + // Token: 0x060005A6 RID: 1446 + public abstract void Draw(Graphics g); + + // Token: 0x04000397 RID: 919 + private float _opacity; + } + } +} diff --git a/SETUNA/Main/StyleItems/PaintForm.resx b/SETUNA/Main/StyleItems/PaintForm.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/PaintForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/PaintTool.cs b/SETUNA/Main/StyleItems/PaintTool.cs new file mode 100644 index 0000000..8a09e73 --- /dev/null +++ b/SETUNA/Main/StyleItems/PaintTool.cs @@ -0,0 +1,146 @@ +using System; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000023 RID: 35 + public abstract class PaintTool : IDisposable + { + // Token: 0x14000010 RID: 16 + // (add) Token: 0x0600016B RID: 363 RVA: 0x00008830 File Offset: 0x00006A30 + // (remove) Token: 0x0600016C RID: 364 RVA: 0x00008849 File Offset: 0x00006A49 + public event PaintTool.PaintToolDelegate Finished; + + // Token: 0x14000011 RID: 17 + // (add) Token: 0x0600016D RID: 365 RVA: 0x00008862 File Offset: 0x00006A62 + // (remove) Token: 0x0600016E RID: 366 RVA: 0x0000887B File Offset: 0x00006A7B + public event PaintTool.PaintToolDelegate Started; + + // Token: 0x0600016F RID: 367 RVA: 0x00008894 File Offset: 0x00006A94 + public PaintTool(ScrapPaintWindow parent) + { + _active = false; + _parent = parent; + } + + // Token: 0x06000170 RID: 368 RVA: 0x000088AC File Offset: 0x00006AAC + public void Draw(Graphics g) + { + var command = GetCommand(); + if (command != null) + { + command.Draw(g); + } + } + + // Token: 0x06000171 RID: 369 RVA: 0x000088CA File Offset: 0x00006ACA + public void ChangeColor(Color color) + { + _color = color; + ClearCommand(); + } + + // Token: 0x06000172 RID: 370 RVA: 0x000088D9 File Offset: 0x00006AD9 + public virtual void ShowToolBar(Form parent) + { + } + + // Token: 0x06000173 RID: 371 RVA: 0x000088DB File Offset: 0x00006ADB + private void OnStarted() + { + if (Started != null) + { + Started(GetCommand()); + } + } + + // Token: 0x06000174 RID: 372 RVA: 0x000088F6 File Offset: 0x00006AF6 + private void OnFinished() + { + if (Finished != null) + { + Finished(GetCommand()); + ClearCommand(); + } + } + + // Token: 0x06000175 RID: 373 RVA: 0x00008917 File Offset: 0x00006B17 + public void ReloadCommand() + { + ClearCommand(); + } + + // Token: 0x17000047 RID: 71 + // (get) Token: 0x06000176 RID: 374 RVA: 0x0000891F File Offset: 0x00006B1F + public bool IsActive => _active; + + // Token: 0x06000177 RID: 375 RVA: 0x00008927 File Offset: 0x00006B27 + public void Start() + { + _active = true; + } + + // Token: 0x06000178 RID: 376 RVA: 0x00008930 File Offset: 0x00006B30 + public void End() + { + if (_active) + { + _active = false; + OnFinished(); + } + } + + // Token: 0x17000048 RID: 72 + // (get) Token: 0x06000179 RID: 377 + public abstract ScrapPaintToolBar.ToolKind GetToolType { get; } + + // Token: 0x0600017A RID: 378 + protected abstract ToolCommand GetCommand(); + + // Token: 0x0600017B RID: 379 + protected abstract void ClearCommand(); + + // Token: 0x0600017C RID: 380 RVA: 0x00008947 File Offset: 0x00006B47 + public virtual void MouseDown(MouseEventArgs e) + { + } + + // Token: 0x0600017D RID: 381 RVA: 0x00008949 File Offset: 0x00006B49 + public virtual void MouseUp(MouseEventArgs e) + { + } + + // Token: 0x0600017E RID: 382 RVA: 0x0000894B File Offset: 0x00006B4B + public virtual void MouseMove(MouseEventArgs e) + { + } + + // Token: 0x0600017F RID: 383 RVA: 0x0000894D File Offset: 0x00006B4D + public virtual void KeyUp(KeyEventArgs e) + { + } + + // Token: 0x06000180 RID: 384 RVA: 0x0000894F File Offset: 0x00006B4F + public virtual void Dispose() + { + if (IsActive) + { + End(); + } + } + + // Token: 0x040000A6 RID: 166 + protected Color _color; + + // Token: 0x040000A9 RID: 169 + protected ScrapPaintWindow _parent; + + // Token: 0x040000AA RID: 170 + private bool _active; + + // Token: 0x02000027 RID: 39 + // (Invoke) Token: 0x06000198 RID: 408 + public delegate void PaintToolDelegate(ToolCommand command); + } +} diff --git a/SETUNA/Main/StyleItems/PenButton.cs b/SETUNA/Main/StyleItems/PenButton.cs new file mode 100644 index 0000000..a5848b4 --- /dev/null +++ b/SETUNA/Main/StyleItems/PenButton.cs @@ -0,0 +1,51 @@ +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000AC RID: 172 + public class PenButton : RadioButton + { + // Token: 0x06000587 RID: 1415 RVA: 0x00026280 File Offset: 0x00024480 + public PenButton() + { + ButtonColor = Color.Black; + base.Appearance = Appearance.Button; + } + + // Token: 0x170000C5 RID: 197 + // (get) Token: 0x06000588 RID: 1416 RVA: 0x0002629A File Offset: 0x0002449A + // (set) Token: 0x06000589 RID: 1417 RVA: 0x000262A2 File Offset: 0x000244A2 + public int PenSize + { + get => _pensize; + set + { + _pensize = value; + Refresh(); + } + } + + // Token: 0x170000C6 RID: 198 + // (get) Token: 0x0600058A RID: 1418 RVA: 0x000262B1 File Offset: 0x000244B1 + // (set) Token: 0x0600058B RID: 1419 RVA: 0x000262B9 File Offset: 0x000244B9 + public Color ButtonColor + { + get => _penColor; + set => _penColor = value; + } + + // Token: 0x0600058C RID: 1420 RVA: 0x000262C4 File Offset: 0x000244C4 + protected override void OnPaint(PaintEventArgs pevent) + { + base.OnPaint(pevent); + pevent.Graphics.FillEllipse(new SolidBrush(_penColor), new Rectangle((base.Width - PenSize) / 2 - 1, (base.Height - PenSize - 1) / 2, PenSize, PenSize + 1)); + } + + // Token: 0x04000374 RID: 884 + private int _pensize; + + // Token: 0x04000375 RID: 885 + private Color _penColor; + } +} diff --git a/SETUNA/Main/StyleItems/PenTool.cs b/SETUNA/Main/StyleItems/PenTool.cs new file mode 100644 index 0000000..1cf9815 --- /dev/null +++ b/SETUNA/Main/StyleItems/PenTool.cs @@ -0,0 +1,135 @@ +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000A4 RID: 164 + public class PenTool : PaintTool + { + // Token: 0x170000BB RID: 187 + // (set) Token: 0x0600054A RID: 1354 RVA: 0x00024909 File Offset: 0x00022B09 + public int Opacity + { + set => _opacity = value; + } + + // Token: 0x170000BC RID: 188 + // (get) Token: 0x0600054B RID: 1355 RVA: 0x00024912 File Offset: 0x00022B12 + public static Color EraseColor => Color.Pink; + + // Token: 0x0600054C RID: 1356 RVA: 0x00024919 File Offset: 0x00022B19 + public PenTool(Color color, ScrapPaintWindow parent) : base(parent) + { + PenWidth = 3f; + Opacity = 255; + _color = color; + base.ChangeColor(color); + } + + // Token: 0x0600054D RID: 1357 RVA: 0x00024946 File Offset: 0x00022B46 + public override void MouseDown(MouseEventArgs e) + { + base.Start(); + DrawPen(e.Location); + } + + // Token: 0x0600054E RID: 1358 RVA: 0x0002495A File Offset: 0x00022B5A + public override void MouseUp(MouseEventArgs e) + { + DrawPen(e.Location); + base.End(); + } + + // Token: 0x0600054F RID: 1359 RVA: 0x0002496E File Offset: 0x00022B6E + public override void MouseMove(MouseEventArgs e) + { + DrawPen(e.Location); + } + + // Token: 0x06000550 RID: 1360 RVA: 0x0002497C File Offset: 0x00022B7C + private void DrawPen(Point pt) + { + if (base.IsActive) + { + cmd.AddPoint(pt); + } + } + + // Token: 0x06000551 RID: 1361 RVA: 0x00024994 File Offset: 0x00022B94 + public override void ShowToolBar(Form parent) + { + base.ShowToolBar(parent); + frm = new ScrapPaintPenTool(this, PenTool.EraseColor.ToArgb() == _color.ToArgb()) + { + Left = parent.Left + }; + frm.Top = parent.Top - frm.Height - 20; + parent.AddOwnedForm(frm); + frm.Show(); + parent.AddOwnedForm(frm); + } + + // Token: 0x06000552 RID: 1362 RVA: 0x00024A22 File Offset: 0x00022C22 + protected override ToolCommand GetCommand() + { + return cmd; + } + + // Token: 0x06000553 RID: 1363 RVA: 0x00024A2C File Offset: 0x00022C2C + protected override void ClearCommand() + { + if (cmd != null) + { + cmd.Dispose(); + } + _color = Color.FromArgb(_opacity, _color); + cmd = new PenToolCommand(_color, PenWidth); + } + + // Token: 0x06000554 RID: 1364 RVA: 0x00024A7A File Offset: 0x00022C7A + public override void Dispose() + { + base.Dispose(); + if (cmd != null) + { + cmd.Dispose(); + cmd = null; + } + if (frm != null) + { + frm.Dispose(); + frm = null; + } + } + + // Token: 0x170000BD RID: 189 + // (get) Token: 0x06000555 RID: 1365 RVA: 0x00024AB8 File Offset: 0x00022CB8 + private bool IsEraseMode => PenTool.EraseColor.ToArgb() == _color.ToArgb(); + + // Token: 0x170000BE RID: 190 + // (get) Token: 0x06000556 RID: 1366 RVA: 0x00024ADF File Offset: 0x00022CDF + public override ScrapPaintToolBar.ToolKind GetToolType + { + get + { + if (!IsEraseMode) + { + return ScrapPaintToolBar.ToolKind.笔工具; + } + return ScrapPaintToolBar.ToolKind.消しゴム工具; + } + } + + // Token: 0x04000351 RID: 849 + private PenToolCommand cmd; + + // Token: 0x04000352 RID: 850 + private ScrapPaintPenTool frm; + + // Token: 0x04000353 RID: 851 + public float PenWidth; + + // Token: 0x04000354 RID: 852 + private int _opacity; + } +} diff --git a/SETUNA/Main/StyleItems/PenToolCommand.cs b/SETUNA/Main/StyleItems/PenToolCommand.cs new file mode 100644 index 0000000..09b49e2 --- /dev/null +++ b/SETUNA/Main/StyleItems/PenToolCommand.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000A5 RID: 165 + public class PenToolCommand : ToolCommand + { + // Token: 0x06000557 RID: 1367 RVA: 0x00024AEC File Offset: 0x00022CEC + public PenToolCommand(Color color, float pen_width) + { + _pen = new Pen(color, pen_width) + { + StartCap = LineCap.Round, + EndCap = LineCap.Round + }; + _points = new List(); + } + + // Token: 0x06000558 RID: 1368 RVA: 0x00024B24 File Offset: 0x00022D24 + public void AddPoint(Point pt) + { + _points.Add(pt); + } + + // Token: 0x06000559 RID: 1369 RVA: 0x00024B32 File Offset: 0x00022D32 + public override void Draw(Graphics g) + { + if (_points.Count > 2) + { + g.DrawCurve(_pen, _points.ToArray()); + } + } + + // Token: 0x0600055A RID: 1370 RVA: 0x00024B59 File Offset: 0x00022D59 + public override void Dispose() + { + } + + // Token: 0x04000355 RID: 853 + private Pen _pen; + + // Token: 0x04000356 RID: 854 + private List _points; + } +} diff --git a/SETUNA/Main/StyleItems/PicasaBar.Designer.cs b/SETUNA/Main/StyleItems/PicasaBar.Designer.cs new file mode 100644 index 0000000..4c2f918 --- /dev/null +++ b/SETUNA/Main/StyleItems/PicasaBar.Designer.cs @@ -0,0 +1,86 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000075 RID: 117 + partial class PicasaBar + { + // Token: 0x060003E2 RID: 994 RVA: 0x00017DF0 File Offset: 0x00015FF0 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x060003E3 RID: 995 RVA: 0x00017E10 File Offset: 0x00016010 + private void InitializeComponent() + { + this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // backgroundWorker1 + // + this.backgroundWorker1.WorkerReportsProgress = true; + this.backgroundWorker1.WorkerSupportsCancellation = true; + this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); + this.backgroundWorker1.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged); + this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); + // + // pictureBox1 + // + this.pictureBox1.Image = global::SETUNA.Properties.Resources.PicasaLogo; + this.pictureBox1.Location = new System.Drawing.Point(1, 1); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(92, 30); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // progressBar1 + // + this.progressBar1.Location = new System.Drawing.Point(1, 32); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(92, 10); + this.progressBar1.TabIndex = 1; + // + // PicasaBar + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(93, 43); + this.ControlBox = false; + this.Controls.Add(this.progressBar1); + this.Controls.Add(this.pictureBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximumSize = new System.Drawing.Size(99, 49); + this.MinimumSize = new System.Drawing.Size(99, 49); + this.Name = "PicasaBar"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.Shown += new System.EventHandler(this.PicasaBar_Shown); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + // Token: 0x04000234 RID: 564 +#pragma warning disable CS0649 // 从未对字段“PicasaBar.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“PicasaBar.components”赋值,字段将一直保持其默认值 null + + // Token: 0x04000235 RID: 565 + private global::System.ComponentModel.BackgroundWorker backgroundWorker1; + + // Token: 0x04000236 RID: 566 + private global::System.Windows.Forms.PictureBox pictureBox1; + + // Token: 0x04000237 RID: 567 + private global::System.Windows.Forms.ProgressBar progressBar1; + } +} diff --git a/SETUNA/Main/StyleItems/PicasaBar.cs b/SETUNA/Main/StyleItems/PicasaBar.cs new file mode 100644 index 0000000..95639cc --- /dev/null +++ b/SETUNA/Main/StyleItems/PicasaBar.cs @@ -0,0 +1,345 @@ +using System; +using System.ComponentModel; +using System.Drawing.Imaging; +using System.IO; +using System.Text; +using System.Windows.Forms; +using com.clearunit; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000075 RID: 117 + public partial class PicasaBar : BaseForm + { + // Token: 0x17000091 RID: 145 + // (get) Token: 0x060003CD RID: 973 RVA: 0x0001756D File Offset: 0x0001576D + // (set) Token: 0x060003CC RID: 972 RVA: 0x00017564 File Offset: 0x00015764 + public byte[] ID + { + private get => _id ?? new byte[0]; + set => _id = value; + } + + // Token: 0x17000092 RID: 146 + // (get) Token: 0x060003CF RID: 975 RVA: 0x00017588 File Offset: 0x00015788 + // (set) Token: 0x060003CE RID: 974 RVA: 0x0001757F File Offset: 0x0001577F + public byte[] Pass + { + private get => _pass ?? new byte[0]; + set => _pass = value; + } + + // Token: 0x17000093 RID: 147 + // (get) Token: 0x060003D1 RID: 977 RVA: 0x000175A3 File Offset: 0x000157A3 + // (set) Token: 0x060003D0 RID: 976 RVA: 0x0001759A File Offset: 0x0001579A + public string AlbumName + { + get => _albumname; + set => _albumname = value; + } + + // Token: 0x17000094 RID: 148 + // (get) Token: 0x060003D3 RID: 979 RVA: 0x000175B4 File Offset: 0x000157B4 + // (set) Token: 0x060003D2 RID: 978 RVA: 0x000175AB File Offset: 0x000157AB + public string AlbumComment + { + get => _albumcomment; + set => _albumcomment = value; + } + + // Token: 0x17000095 RID: 149 + // (get) Token: 0x060003D5 RID: 981 RVA: 0x000175C5 File Offset: 0x000157C5 + // (set) Token: 0x060003D4 RID: 980 RVA: 0x000175BC File Offset: 0x000157BC + public bool AlbumPublic + { + get => _albumaccess; + set => _albumaccess = value; + } + + // Token: 0x17000096 RID: 150 + // (get) Token: 0x060003D7 RID: 983 RVA: 0x000175E0 File Offset: 0x000157E0 + // (set) Token: 0x060003D6 RID: 982 RVA: 0x000175CD File Offset: 0x000157CD + public System.Drawing.Image SendImage + { + private get => _img; + set => _img = (System.Drawing.Image)value.Clone(); + } + + // Token: 0x17000097 RID: 151 + // (get) Token: 0x060003D8 RID: 984 RVA: 0x000175E8 File Offset: 0x000157E8 + private static byte[] Key + { + get + { + var array = new byte[16]; + var width = SETUNA.Resources.Image.Crypt.Width; + var height = SETUNA.Resources.Image.Crypt.Height; + array[0] = SETUNA.Resources.Image.Crypt.GetPixel(10, 8).R; + array[1] = SETUNA.Resources.Image.Crypt.GetPixel(4, 9).G; + array[2] = SETUNA.Resources.Image.Crypt.GetPixel(array[0] % width, array[1] % height).B; + array[3] = SETUNA.Resources.Image.Crypt.GetPixel(array[1] % width, array[2] % height).R; + array[4] = SETUNA.Resources.Image.Crypt.GetPixel(array[2] % width, array[3] % height).G; + array[5] = SETUNA.Resources.Image.Crypt.GetPixel(array[3] % width, array[4] % height).G; + array[6] = SETUNA.Resources.Image.Crypt.GetPixel(array[4] % width, array[5] % height).R; + array[7] = SETUNA.Resources.Image.Crypt.GetPixel(array[5] % width, array[6] % height).B; + array[8] = SETUNA.Resources.Image.Crypt.GetPixel(array[6] % width, array[7] % height).G; + array[9] = SETUNA.Resources.Image.Crypt.GetPixel(array[7] % width, array[8] % height).R; + array[10] = SETUNA.Resources.Image.Crypt.GetPixel(array[8] % width, array[9] % height).G; + array[11] = SETUNA.Resources.Image.Crypt.GetPixel(array[9] % width, array[10] % height).B; + array[12] = SETUNA.Resources.Image.Crypt.GetPixel(array[10] % width, array[11] % height).R; + array[13] = SETUNA.Resources.Image.Crypt.GetPixel(array[11] % width, array[12] % height).G; + array[14] = SETUNA.Resources.Image.Crypt.GetPixel(array[12] % width, array[13] % height).R; + array[15] = SETUNA.Resources.Image.Crypt.GetPixel(array[13] % width, array[14] % height).G; + return array; + } + } + + // Token: 0x17000098 RID: 152 + // (get) Token: 0x060003D9 RID: 985 RVA: 0x00017818 File Offset: 0x00015A18 + private static byte[] Iv + { + get + { + var array = new byte[8]; + var width = SETUNA.Resources.Image.Crypt.Width; + var height = SETUNA.Resources.Image.Crypt.Height; + array[0] = SETUNA.Resources.Image.Crypt.GetPixel(6, 3).R; + array[1] = SETUNA.Resources.Image.Crypt.GetPixel(18, 2).G; + array[2] = SETUNA.Resources.Image.Crypt.GetPixel(array[0] % width, array[1] % height).B; + array[3] = SETUNA.Resources.Image.Crypt.GetPixel(array[1] % width, array[2] % height).R; + array[4] = SETUNA.Resources.Image.Crypt.GetPixel(array[2] % width, array[3] % height).G; + array[5] = SETUNA.Resources.Image.Crypt.GetPixel(array[3] % width, array[4] % height).G; + array[6] = SETUNA.Resources.Image.Crypt.GetPixel(array[4] % width, array[5] % height).R; + array[7] = SETUNA.Resources.Image.Crypt.GetPixel(array[5] % width, array[6] % height).B; + return array; + } + } + + // Token: 0x060003DA RID: 986 RVA: 0x00017934 File Offset: 0x00015B34 + public static byte[] Encrypto(string strv) + { + return DesCrypto.DesEncrypto(strv, PicasaBar.Key, PicasaBar.Iv); + } + + // Token: 0x060003DB RID: 987 RVA: 0x00017954 File Offset: 0x00015B54 + public static string Decrypto(byte[] cary) + { + var bytes = DesCrypto.DesDecrypto(cary, PicasaBar.Key, PicasaBar.Iv); + return Encoding.Unicode.GetString(bytes); + } + + // Token: 0x060003DC RID: 988 RVA: 0x0001797D File Offset: 0x00015B7D + public PicasaBar() + { + InitializeComponent(); + } + + // Token: 0x060003DD RID: 989 RVA: 0x00017998 File Offset: 0x00015B98 + private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) + { + var text = ""; + var picasaAccessor = new PicasaAccessor(); + try + { + backgroundWorker1.ReportProgress(5); + Console.WriteLine("创建一个临时文件"); + text = Path.GetTempFileName(); + var imageCodecInfo = GetImageCodecInfo(); + var quality = System.Drawing.Imaging.Encoder.Quality; + var encoderParameters = new EncoderParameters(1); + var encoderParameter = new EncoderParameter(quality, 100L); + encoderParameters.Param[0] = encoderParameter; + SendImage.Save(text, imageCodecInfo, encoderParameters); + backgroundWorker1.ReportProgress(10); + Console.WriteLine("登录"); + if (!picasaAccessor.ClientLogin(_strID, _strPass)) + { + switch (picasaAccessor.LoginErrorCode) + { + case PicasaLoginError.BadAuthentication: + case PicasaLoginError.NotVerified: + case PicasaLoginError.CaptchaRequired: + case PicasaLoginError.AccountDeleted: + case PicasaLoginError.AccountDisabled: + _error = "无法登录。"; + goto IL_119; + case PicasaLoginError.TermsNotAgreed: + _error = "不同意的条款和条件。"; + goto IL_119; + case PicasaLoginError.ServiceDisabled: + _error = "Picasa服务当前无法使用。"; + goto IL_119; + case PicasaLoginError.ServiceUnavailable: + _error = "Picasa服务未启动。"; + goto IL_119; + case PicasaLoginError.ConnectionError: + _error = "无法连接。"; + goto IL_119; + } + _error = "登录失败。"; + IL_119: + e.Cancel = true; + } + else + { + backgroundWorker1.ReportProgress(20); + Console.WriteLine("检查相册"); + var text2 = picasaAccessor.ExistAlbum(AlbumName); + if (text2.Length == 0) + { + text2 = picasaAccessor.CreateAlbum(AlbumName, AlbumComment, AlbumPublic); + } + backgroundWorker1.ReportProgress(30); + if (text2.Length == 0) + { + _error = "无法创建相册。\n\n※要使用此功能,您需要同意使用Picasa服务协议。\n请登陆 https://picasaweb.google.com/ 详细确认。"; + e.Cancel = true; + } + else + { + Console.WriteLine("上传过程"); + if (!picasaAccessor.UploadPhoto(AlbumName, text, backgroundWorker1, 30)) + { + switch (picasaAccessor.UploadErrorCode) + { + case PicasaUploadError.BadRequest: + case PicasaUploadError.UnAuthorized: + case PicasaUploadError.Conflict: + _error = "上传失败。"; + break; + case PicasaUploadError.Forbidden: + _error = "访问被禁止。"; + break; + case PicasaUploadError.NotFound: + _error = "无法找到所需的数据。"; + break; + case PicasaUploadError.InternalServerError: + _error = "内部服务器错误。"; + break; + default: + _error = "上传失败。"; + break; + } + e.Cancel = true; + } + } + } + } + catch (Exception ex) + { + _error = ex.Message; + e.Cancel = true; + } + finally + { + if (text.Length > 0 && File.Exists(text)) + { + File.Delete(text); + } + SendImage.Dispose(); + } + } + + // Token: 0x060003DE RID: 990 RVA: 0x00017C40 File Offset: 0x00015E40 + private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + progressBar1.Value = e.ProgressPercentage; + } + + // Token: 0x060003DF RID: 991 RVA: 0x00017C53 File Offset: 0x00015E53 + private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + MessageBox.Show(this, _error, "上传到Picasa"); + } + base.Close(); + } + + // Token: 0x060003E0 RID: 992 RVA: 0x00017C78 File Offset: 0x00015E78 + protected ImageCodecInfo GetImageCodecInfo() + { + var jpeg = ImageFormat.Jpeg; + ImageCodecInfo imageCodecInfo = null; + foreach (var imageCodecInfo2 in ImageCodecInfo.GetImageEncoders()) + { + if (imageCodecInfo2.FormatID == jpeg.Guid) + { + imageCodecInfo = imageCodecInfo2; + break; + } + } + if (imageCodecInfo == null) + { + MessageBox.Show("因为没找到可以利用的编码器,不能保存图像。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Hand); + } + return imageCodecInfo; + } + + // Token: 0x060003E1 RID: 993 RVA: 0x00017CD8 File Offset: 0x00015ED8 + private void PicasaBar_Shown(object sender, EventArgs e) + { + _strID = (_strPass = ""); + if (ID.Length > 0) + { + _strID = PicasaBar.Decrypto(ID); + } + if (Pass.Length > 0) + { + _strPass = PicasaBar.Decrypto(Pass); + } + if (_strID.Length == 0 || _strPass.Length == 0) + { + using (var loginInput = new LoginInput()) + { + loginInput.ID = _strID; + loginInput.Pass = _strPass; + loginInput.GroupTitle = "输入您的谷歌帐户"; + loginInput.Text = "上传到Picasa"; + loginInput.TopMost = true; + loginInput.StartPosition = FormStartPosition.CenterParent; + if (loginInput.ShowDialog() != DialogResult.OK) + { + base.Close(); + return; + } + _strID = loginInput.ID; + _strPass = loginInput.Pass; + } + } + if (SendImage != null) + { + backgroundWorker1.RunWorkerAsync(); + return; + } + base.Close(); + } + + // Token: 0x0400022B RID: 555 + private byte[] _id; + + // Token: 0x0400022C RID: 556 + private byte[] _pass; + + // Token: 0x0400022D RID: 557 + private string _albumname; + + // Token: 0x0400022E RID: 558 + private string _albumcomment; + + // Token: 0x0400022F RID: 559 + private bool _albumaccess; + + // Token: 0x04000230 RID: 560 + private System.Drawing.Image _img; + + // Token: 0x04000231 RID: 561 + private string _error = ""; + + // Token: 0x04000232 RID: 562 + private string _strID; + + // Token: 0x04000233 RID: 563 + private string _strPass; + } +} diff --git a/SETUNA/Main/StyleItems/PicasaBar.resx b/SETUNA/Main/StyleItems/PicasaBar.resx new file mode 100644 index 0000000..07535d8 --- /dev/null +++ b/SETUNA/Main/StyleItems/PicasaBar.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/PicasaStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/PicasaStyleItemPanel.Designer.cs new file mode 100644 index 0000000..9911e4f --- /dev/null +++ b/SETUNA/Main/StyleItems/PicasaStyleItemPanel.Designer.cs @@ -0,0 +1,183 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000093 RID: 147 + partial class PicasaStyleItemPanel + { + // Token: 0x060004DC RID: 1244 RVA: 0x00022AB0 File Offset: 0x00020CB0 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.button1 = new System.Windows.Forms.Button(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.txtPass = new System.Windows.Forms.TextBox(); + this.txtID = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(136, 234); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(210, 234); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.button1); + this.groupBox1.Controls.Add(this.linkLabel1); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.comboBox1); + this.groupBox1.Controls.Add(this.txtPass); + this.groupBox1.Controls.Add(this.txtID); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(274, 217); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(182, 179); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(64, 23); + this.button1.TabIndex = 8; + this.button1.Text = "复制网址"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(18, 184); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(179, 12); + this.linkLabel1.TabIndex = 7; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "https://picasaweb.google.com/"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // label4 + // + this.label4.Location = new System.Drawing.Point(18, 153); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(250, 29); + this.label4.TabIndex = 6; + this.label4.Text = "请在使用服务前访问 Picasa 的网站,以确认使用条款。"; + // + // label3 + // + this.label3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.label3.Location = new System.Drawing.Point(6, 136); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(262, 16); + this.label3.TabIndex = 5; + this.label3.Text = "※如果这是你第一次使用 Picasa 网络相册"; + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "保存帐号和密码", + "只保存帐号", + "全部不保存"}); + this.comboBox1.Location = new System.Drawing.Point(27, 97); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(219, 20); + this.comboBox1.TabIndex = 4; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // txtPass + // + this.txtPass.Location = new System.Drawing.Point(88, 62); + this.txtPass.Name = "txtPass"; + this.txtPass.PasswordChar = '*'; + this.txtPass.Size = new System.Drawing.Size(158, 21); + this.txtPass.TabIndex = 3; + // + // txtID + // + this.txtID.Location = new System.Drawing.Point(88, 28); + this.txtID.Name = "txtID"; + this.txtID.Size = new System.Drawing.Size(158, 21); + this.txtID.TabIndex = 2; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(25, 65); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(41, 12); + this.label2.TabIndex = 1; + this.label2.Text = "密码:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(25, 31); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 0; + this.label1.Text = "谷歌帐号:"; + // + // PicasaStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(288, 266); + this.Controls.Add(this.groupBox1); + this.DoubleBuffered = true; + this.Name = "PicasaStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + // Token: 0x04000321 RID: 801 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x04000322 RID: 802 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000323 RID: 803 + private global::System.Windows.Forms.TextBox txtID; + + // Token: 0x04000324 RID: 804 + private global::System.Windows.Forms.Label label2; + + // Token: 0x04000325 RID: 805 + private global::System.Windows.Forms.ComboBox comboBox1; + + // Token: 0x04000326 RID: 806 + private global::System.Windows.Forms.Label label3; + + // Token: 0x04000327 RID: 807 + private global::System.Windows.Forms.LinkLabel linkLabel1; + + // Token: 0x04000328 RID: 808 + private global::System.Windows.Forms.Label label4; + + // Token: 0x04000329 RID: 809 + private global::System.Windows.Forms.Button button1; + + // Token: 0x0400032A RID: 810 + private global::System.Windows.Forms.TextBox txtPass; + } +} diff --git a/SETUNA/Main/StyleItems/PicasaStyleItemPanel.cs b/SETUNA/Main/StyleItems/PicasaStyleItemPanel.cs new file mode 100644 index 0000000..9db1aaf --- /dev/null +++ b/SETUNA/Main/StyleItems/PicasaStyleItemPanel.cs @@ -0,0 +1,111 @@ +using System; +using System.Diagnostics; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000093 RID: 147 + internal partial class PicasaStyleItemPanel : ToolBoxForm + { + // Token: 0x060004DD RID: 1245 RVA: 0x00023130 File Offset: 0x00021330 + public PicasaStyleItemPanel() + { + } + + // Token: 0x060004DE RID: 1246 RVA: 0x00023138 File Offset: 0x00021338 + public PicasaStyleItemPanel(CPicasaUploaderStyleItem item) : base(item) + { + } + + // Token: 0x060004DF RID: 1247 RVA: 0x00023144 File Offset: 0x00021344 + protected override void SetStyleToForm(object style) + { + var cpicasaUploaderStyleItem = (CPicasaUploaderStyleItem)style; + InitializeComponent(); + Text = cpicasaUploaderStyleItem.GetDisplayName(); + string text2; + var text = text2 = ""; + if (cpicasaUploaderStyleItem.ID.Length > 0) + { + text2 = PicasaBar.Decrypto(cpicasaUploaderStyleItem.ID); + } + if (cpicasaUploaderStyleItem.Pass.Length > 0) + { + text = PicasaBar.Decrypto(cpicasaUploaderStyleItem.Pass); + } + txtID.Text = text2; + txtPass.Text = text; + comboBox1.SelectedIndex = cpicasaUploaderStyleItem.Manage; + } + + // Token: 0x060004E0 RID: 1248 RVA: 0x000231CC File Offset: 0x000213CC + protected override void OKCheck(ref bool cancel) + { + base.OKCheck(ref cancel); + if (comboBox1.SelectedIndex == 0 && (txtID.TextLength == 0 || txtPass.TextLength == 0)) + { + cancel = true; + MessageBox.Show("请输入帐号和密码。"); + return; + } + if (comboBox1.SelectedIndex == 0 && txtID.TextLength == 0) + { + cancel = true; + MessageBox.Show("请输入帐号。"); + } + } + + // Token: 0x060004E1 RID: 1249 RVA: 0x00023240 File Offset: 0x00021440 + protected override object GetStyleFromForm() + { + var cpicasaUploaderStyleItem = new CPicasaUploaderStyleItem(); + if (comboBox1.SelectedIndex == 1) + { + txtPass.Text = ""; + } + if (comboBox1.SelectedIndex == 2) + { + txtID.Text = ""; + txtPass.Text = ""; + } + cpicasaUploaderStyleItem.ID = PicasaBar.Encrypto(txtID.Text); + cpicasaUploaderStyleItem.Pass = PicasaBar.Encrypto(txtPass.Text); + cpicasaUploaderStyleItem.Manage = (byte)comboBox1.SelectedIndex; + return cpicasaUploaderStyleItem; + } + + // Token: 0x060004E2 RID: 1250 RVA: 0x000232E0 File Offset: 0x000214E0 + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + switch (comboBox1.SelectedIndex) + { + case 0: + txtID.Enabled = true; + txtPass.Enabled = true; + return; + case 1: + txtID.Enabled = true; + txtPass.Enabled = false; + return; + case 2: + txtID.Enabled = false; + txtPass.Enabled = false; + return; + default: + return; + } + } + + // Token: 0x060004E3 RID: 1251 RVA: 0x00023356 File Offset: 0x00021556 + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + Process.Start(linkLabel1.Text); + } + + // Token: 0x060004E4 RID: 1252 RVA: 0x00023369 File Offset: 0x00021569 + private void button1_Click(object sender, EventArgs e) + { + Clipboard.SetText(linkLabel1.Text); + } + } +} diff --git a/SETUNA/Main/StyleItems/PicasaStyleItemPanel.resx b/SETUNA/Main/StyleItems/PicasaStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/PicasaStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/RenameLayerCommand.cs b/SETUNA/Main/StyleItems/RenameLayerCommand.cs new file mode 100644 index 0000000..1463266 --- /dev/null +++ b/SETUNA/Main/StyleItems/RenameLayerCommand.cs @@ -0,0 +1,30 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200001E RID: 30 + public class RenameLayerCommand : LayerCommand + { + // Token: 0x1400000E RID: 14 + // (add) Token: 0x06000150 RID: 336 RVA: 0x000082BD File Offset: 0x000064BD + // (remove) Token: 0x06000151 RID: 337 RVA: 0x000082D6 File Offset: 0x000064D6 + public event RenameLayerCommand.RenameLayerCommandDelegate RenameLayer; + + // Token: 0x06000152 RID: 338 RVA: 0x000082EF File Offset: 0x000064EF + public RenameLayerCommand(long layerID, string layerName) : base(layerName) + { + base.LayerID = layerID; + } + + // Token: 0x06000153 RID: 339 RVA: 0x000082FF File Offset: 0x000064FF + public override void Apply() + { + if (RenameLayer != null) + { + RenameLayer(this); + } + } + + // Token: 0x0200001F RID: 31 + // (Invoke) Token: 0x06000155 RID: 341 + public delegate void RenameLayerCommandDelegate(RenameLayerCommand sender); + } +} diff --git a/SETUNA/Main/StyleItems/RotateStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/RotateStyleItemPanel.Designer.cs new file mode 100644 index 0000000..fa32f04 --- /dev/null +++ b/SETUNA/Main/StyleItems/RotateStyleItemPanel.Designer.cs @@ -0,0 +1,225 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000090 RID: 144 + partial class RotateStyleItemPanel + { + // Token: 0x060004BD RID: 1213 RVA: 0x00020410 File Offset: 0x0001E610 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.chkHorizon = new System.Windows.Forms.CheckBox(); + this.chkVertical = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.rdo180 = new System.Windows.Forms.RadioButton(); + this.rdoLeft90 = new System.Windows.Forms.RadioButton(); + this.rdoRight90 = new System.Windows.Forms.RadioButton(); + this.rdoNone = new System.Windows.Forms.RadioButton(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.picPreview = new System.Windows.Forms.PictureBox(); + this.groupBox1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(299, 174); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(376, 174); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.chkHorizon); + this.groupBox1.Controls.Add(this.chkVertical); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.panel1); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(247, 157); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // chkHorizon + // + this.chkHorizon.AutoSize = true; + this.chkHorizon.Location = new System.Drawing.Point(132, 60); + this.chkHorizon.Name = "chkHorizon"; + this.chkHorizon.Size = new System.Drawing.Size(72, 16); + this.chkHorizon.TabIndex = 11; + this.chkHorizon.Text = "水平翻转"; + this.chkHorizon.UseVisualStyleBackColor = true; + this.chkHorizon.CheckedChanged += new System.EventHandler(this.rdoNone_CheckedChanged); + // + // chkVertical + // + this.chkVertical.AutoSize = true; + this.chkVertical.Location = new System.Drawing.Point(132, 43); + this.chkVertical.Name = "chkVertical"; + this.chkVertical.Size = new System.Drawing.Size(72, 16); + this.chkVertical.TabIndex = 10; + this.chkVertical.Text = "垂直翻转"; + this.chkVertical.UseVisualStyleBackColor = true; + this.chkVertical.CheckedChanged += new System.EventHandler(this.rdoNone_CheckedChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(114, 25); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(77, 12); + this.label2.TabIndex = 2; + this.label2.Text = "翻转参考图∶"; + // + // panel1 + // + this.panel1.Controls.Add(this.rdo180); + this.panel1.Controls.Add(this.rdoLeft90); + this.panel1.Controls.Add(this.rdoRight90); + this.panel1.Controls.Add(this.rdoNone); + this.panel1.Location = new System.Drawing.Point(22, 40); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(86, 97); + this.panel1.TabIndex = 1; + // + // rdo180 + // + this.rdo180.AutoSize = true; + this.rdo180.Location = new System.Drawing.Point(3, 74); + this.rdo180.Name = "rdo180"; + this.rdo180.Size = new System.Drawing.Size(53, 16); + this.rdo180.TabIndex = 3; + this.rdo180.Text = "180度"; + this.rdo180.UseVisualStyleBackColor = true; + this.rdo180.CheckedChanged += new System.EventHandler(this.rdoNone_CheckedChanged); + // + // rdoLeft90 + // + this.rdoLeft90.AutoSize = true; + this.rdoLeft90.Location = new System.Drawing.Point(3, 52); + this.rdoLeft90.Name = "rdoLeft90"; + this.rdoLeft90.Size = new System.Drawing.Size(71, 16); + this.rdoLeft90.TabIndex = 2; + this.rdoLeft90.Text = "左转90度"; + this.rdoLeft90.UseVisualStyleBackColor = true; + this.rdoLeft90.CheckedChanged += new System.EventHandler(this.rdoNone_CheckedChanged); + // + // rdoRight90 + // + this.rdoRight90.AutoSize = true; + this.rdoRight90.Location = new System.Drawing.Point(3, 30); + this.rdoRight90.Name = "rdoRight90"; + this.rdoRight90.Size = new System.Drawing.Size(71, 16); + this.rdoRight90.TabIndex = 1; + this.rdoRight90.Text = "右转90度"; + this.rdoRight90.UseVisualStyleBackColor = true; + this.rdoRight90.CheckedChanged += new System.EventHandler(this.rdoNone_CheckedChanged); + // + // rdoNone + // + this.rdoNone.AutoSize = true; + this.rdoNone.Checked = true; + this.rdoNone.Location = new System.Drawing.Point(3, 8); + this.rdoNone.Name = "rdoNone"; + this.rdoNone.Size = new System.Drawing.Size(35, 16); + this.rdoNone.TabIndex = 0; + this.rdoNone.TabStop = true; + this.rdoNone.Text = "无"; + this.rdoNone.UseVisualStyleBackColor = true; + this.rdoNone.CheckedChanged += new System.EventHandler(this.rdoNone_CheckedChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 25); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(77, 12); + this.label1.TabIndex = 0; + this.label1.Text = "旋转参考图:"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.picPreview); + this.groupBox2.Location = new System.Drawing.Point(261, 8); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(179, 157); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "预览"; + // + // picPreview + // + this.picPreview.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.picPreview.Location = new System.Drawing.Point(6, 18); + this.picPreview.Name = "picPreview"; + this.picPreview.Size = new System.Drawing.Size(167, 131); + this.picPreview.TabIndex = 0; + this.picPreview.TabStop = false; + this.picPreview.Paint += new System.Windows.Forms.PaintEventHandler(this.picPreview_Paint); + // + // RotateStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(453, 206); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Name = "RotateStyleItemPanel"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.RotateStyleItemPanel_FormClosed); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.Controls.SetChildIndex(this.groupBox2, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.picPreview)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x040002ED RID: 749 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x040002EE RID: 750 + private global::System.Windows.Forms.Panel panel1; + + // Token: 0x040002EF RID: 751 + private global::System.Windows.Forms.RadioButton rdoRight90; + + // Token: 0x040002F0 RID: 752 + private global::System.Windows.Forms.RadioButton rdoNone; + + // Token: 0x040002F1 RID: 753 + private global::System.Windows.Forms.RadioButton rdo180; + + // Token: 0x040002F2 RID: 754 + private global::System.Windows.Forms.RadioButton rdoLeft90; + + // Token: 0x040002F3 RID: 755 + private global::System.Windows.Forms.CheckBox chkHorizon; + + // Token: 0x040002F4 RID: 756 + private global::System.Windows.Forms.CheckBox chkVertical; + + // Token: 0x040002F5 RID: 757 + private global::System.Windows.Forms.Label label2; + + // Token: 0x040002F6 RID: 758 + private global::System.Windows.Forms.GroupBox groupBox2; + + // Token: 0x040002F7 RID: 759 + private global::System.Windows.Forms.PictureBox picPreview; + + // Token: 0x040002F8 RID: 760 + private global::System.Windows.Forms.Label label1; + } +} diff --git a/SETUNA/Main/StyleItems/RotateStyleItemPanel.cs b/SETUNA/Main/StyleItems/RotateStyleItemPanel.cs new file mode 100644 index 0000000..6ac4965 --- /dev/null +++ b/SETUNA/Main/StyleItems/RotateStyleItemPanel.cs @@ -0,0 +1,155 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000090 RID: 144 + internal partial class RotateStyleItemPanel : ToolBoxForm + { + // Token: 0x060004BE RID: 1214 RVA: 0x00020C61 File Offset: 0x0001EE61 + public RotateStyleItemPanel() + { + } + + // Token: 0x060004BF RID: 1215 RVA: 0x00020C69 File Offset: 0x0001EE69 + public RotateStyleItemPanel(CRotateStyleItem item) : base(item) + { + } + + // Token: 0x060004C0 RID: 1216 RVA: 0x00020C74 File Offset: 0x0001EE74 + protected override void SetStyleToForm(object style) + { + var crotateStyleItem = (CRotateStyleItem)style; + InitializeComponent(); + Text = crotateStyleItem.GetDisplayName(); + var rotate = crotateStyleItem.Rotate; + if (rotate != 90) + { + if (rotate != 180) + { + if (rotate != 270) + { + rdoNone.Checked = true; + } + else + { + rdoLeft90.Checked = true; + } + } + else + { + rdo180.Checked = true; + } + } + else + { + rdoRight90.Checked = true; + } + chkVertical.Checked = crotateStyleItem.VerticalReflection; + chkHorizon.Checked = crotateStyleItem.HorizonReflection; + imgBackground = new Bitmap(picPreview.Width, picPreview.Height, PixelFormat.Format24bppRgb); + using (var graphics = Graphics.FromImage(imgBackground)) + { + graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), imgBackground.Size); + } + imgScrap = (System.Drawing.Image)SETUNA.Resources.Image.SampleImage.Clone(); + RotateSample(); + } + + // Token: 0x060004C1 RID: 1217 RVA: 0x00020D98 File Offset: 0x0001EF98 + protected override object GetStyleFromForm() + { + var crotateStyleItem = new CRotateStyleItem(); + if (rdoRight90.Checked) + { + crotateStyleItem.Rotate = 90; + } + else if (rdo180.Checked) + { + crotateStyleItem.Rotate = 180; + } + else if (rdoLeft90.Checked) + { + crotateStyleItem.Rotate = 270; + } + else + { + crotateStyleItem.Rotate = 0; + } + crotateStyleItem.VerticalReflection = chkVertical.Checked; + crotateStyleItem.HorizonReflection = chkHorizon.Checked; + return crotateStyleItem; + } + + // Token: 0x060004C2 RID: 1218 RVA: 0x00020E20 File Offset: 0x0001F020 + private void RotateStyleItemPanel_FormClosed(object sender, FormClosedEventArgs e) + { + if (imgBackground != null) + { + imgBackground.Dispose(); + imgBackground = null; + imgScrap.Dispose(); + imgScrap = null; + GC.Collect(); + } + } + + // Token: 0x060004C3 RID: 1219 RVA: 0x00020E54 File Offset: 0x0001F054 + private void picPreview_Paint(object sender, PaintEventArgs e) + { + if (imgBackground != null) + { + e.Graphics.DrawImageUnscaled(imgBackground, new Point(0, 0)); + } + if (imgScrap != null) + { + e.Graphics.DrawImage(imgScrap, new Rectangle((imgBackground.Width - imgScrap.Width) / 2, (imgBackground.Height - imgScrap.Height) / 2, imgScrap.Width, imgScrap.Height), new Rectangle(0, 0, imgScrap.Width, imgScrap.Height), GraphicsUnit.Pixel); + } + } + + // Token: 0x060004C4 RID: 1220 RVA: 0x00020F08 File Offset: 0x0001F108 + private void RotateSample() + { + if (imgScrap != null) + { + imgScrap.Dispose(); + } + imgScrap = (System.Drawing.Image)SETUNA.Resources.Image.SampleImage.Clone(); + if (rdoRight90.Checked) + { + imgScrap.RotateFlip(RotateFlipType.Rotate90FlipNone); + } + if (rdo180.Checked) + { + imgScrap.RotateFlip(RotateFlipType.Rotate180FlipNone); + } + if (rdoLeft90.Checked) + { + imgScrap.RotateFlip(RotateFlipType.Rotate270FlipNone); + } + if (chkHorizon.Checked) + { + imgScrap.RotateFlip(RotateFlipType.RotateNoneFlipX); + } + if (chkVertical.Checked) + { + imgScrap.RotateFlip(RotateFlipType.Rotate180FlipX); + } + picPreview.Refresh(); + } + + // Token: 0x060004C5 RID: 1221 RVA: 0x00020FC5 File Offset: 0x0001F1C5 + private void rdoNone_CheckedChanged(object sender, EventArgs e) + { + RotateSample(); + } + + // Token: 0x040002F9 RID: 761 + private System.Drawing.Image imgBackground; + + // Token: 0x040002FA RID: 762 + private System.Drawing.Image imgScrap; + } +} diff --git a/SETUNA/Main/StyleItems/RotateStyleItemPanel.resx b/SETUNA/Main/StyleItems/RotateStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/RotateStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.Designer.cs new file mode 100644 index 0000000..12ee2e8 --- /dev/null +++ b/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.Designer.cs @@ -0,0 +1,258 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000B2 RID: 178 + partial class SaveImageStyleItemPanel + { + // Token: 0x06000598 RID: 1432 RVA: 0x0002658C File Offset: 0x0002478C + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.button1 = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPng = new System.Windows.Forms.TabPage(); + this.tabJpeg = new System.Windows.Forms.TabPage(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.lblJpegQuality = new System.Windows.Forms.Label(); + this.barJpegQuality = new System.Windows.Forms.TrackBar(); + this.label2 = new System.Windows.Forms.Label(); + this.tabBmp = new System.Windows.Forms.TabPage(); + this.groupBox1.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabJpeg.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.barJpegQuality)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(205, 227); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(279, 227); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.checkBox2); + this.groupBox1.Controls.Add(this.checkBox1); + this.groupBox1.Controls.Add(this.button1); + this.groupBox1.Controls.Add(this.textBox1); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.tabControl1); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(343, 214); + this.groupBox1.TabIndex = 3; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Location = new System.Drawing.Point(10, 189); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(132, 16); + this.checkBox2.TabIndex = 15; + this.checkBox2.Text = "指定保存时的文件名"; + this.checkBox2.UseVisualStyleBackColor = true; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(10, 173); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(168, 16); + this.checkBox1.TabIndex = 13; + this.checkBox1.Text = "保存时的格式、质量等设置"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(314, 14); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(21, 23); + this.button1.TabIndex = 12; + this.button1.Text = "..."; + this.button1.UseVisualStyleBackColor = true; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(62, 16); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(246, 21); + this.textBox1.TabIndex = 11; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(13, 19); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 10; + this.label1.Text = "目的地:"; + // + // tabControl1 + // + this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.Buttons; + this.tabControl1.Controls.Add(this.tabPng); + this.tabControl1.Controls.Add(this.tabJpeg); + this.tabControl1.Controls.Add(this.tabBmp); + this.tabControl1.Location = new System.Drawing.Point(79, 43); + this.tabControl1.Multiline = true; + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(256, 124); + this.tabControl1.TabIndex = 9; + // + // tabPng + // + this.tabPng.Location = new System.Drawing.Point(4, 25); + this.tabPng.Name = "tabPng"; + this.tabPng.Padding = new System.Windows.Forms.Padding(3); + this.tabPng.Size = new System.Drawing.Size(248, 95); + this.tabPng.TabIndex = 0; + this.tabPng.Text = "PNG"; + this.tabPng.UseVisualStyleBackColor = true; + // + // tabJpeg + // + this.tabJpeg.Controls.Add(this.label5); + this.tabJpeg.Controls.Add(this.label4); + this.tabJpeg.Controls.Add(this.lblJpegQuality); + this.tabJpeg.Controls.Add(this.barJpegQuality); + this.tabJpeg.Controls.Add(this.label2); + this.tabJpeg.Location = new System.Drawing.Point(4, 25); + this.tabJpeg.Name = "tabJpeg"; + this.tabJpeg.Padding = new System.Windows.Forms.Padding(3); + this.tabJpeg.Size = new System.Drawing.Size(248, 95); + this.tabJpeg.TabIndex = 1; + this.tabJpeg.Text = "JPEG"; + this.tabJpeg.UseVisualStyleBackColor = true; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(197, 7); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(17, 12); + this.label5.TabIndex = 4; + this.label5.Text = "高"; + this.label5.TextAlign = System.Drawing.ContentAlignment.BottomLeft; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(49, 7); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(17, 12); + this.label4.TabIndex = 3; + this.label4.Text = "低"; + this.label4.TextAlign = System.Drawing.ContentAlignment.BottomLeft; + // + // lblJpegQuality + // + this.lblJpegQuality.Location = new System.Drawing.Point(216, 26); + this.lblJpegQuality.Name = "lblJpegQuality"; + this.lblJpegQuality.Size = new System.Drawing.Size(26, 12); + this.lblJpegQuality.TabIndex = 2; + this.lblJpegQuality.Text = "100"; + this.lblJpegQuality.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // barJpegQuality + // + this.barJpegQuality.Location = new System.Drawing.Point(43, 20); + this.barJpegQuality.Maximum = 100; + this.barJpegQuality.Name = "barJpegQuality"; + this.barJpegQuality.Size = new System.Drawing.Size(175, 45); + this.barJpegQuality.TabIndex = 1; + this.barJpegQuality.TickFrequency = 10; + this.barJpegQuality.Scroll += new System.EventHandler(this.barJpegQuality_Scroll); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 26); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(41, 12); + this.label2.TabIndex = 0; + this.label2.Text = "质量:"; + // + // tabBmp + // + this.tabBmp.Location = new System.Drawing.Point(4, 25); + this.tabBmp.Name = "tabBmp"; + this.tabBmp.Size = new System.Drawing.Size(248, 95); + this.tabBmp.TabIndex = 2; + this.tabBmp.Text = "BMP"; + this.tabBmp.UseVisualStyleBackColor = true; + // + // SaveImageStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(357, 259); + this.Controls.Add(this.groupBox1); + this.Name = "SaveImageStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.tabControl1.ResumeLayout(false); + this.tabJpeg.ResumeLayout(false); + this.tabJpeg.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.barJpegQuality)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x04000385 RID: 901 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000386 RID: 902 + private global::System.Windows.Forms.TabControl tabControl1; + + // Token: 0x04000387 RID: 903 + private global::System.Windows.Forms.TabPage tabPng; + + // Token: 0x04000388 RID: 904 + private global::System.Windows.Forms.TabPage tabJpeg; + + // Token: 0x04000389 RID: 905 + private global::System.Windows.Forms.TabPage tabBmp; + + // Token: 0x0400038A RID: 906 + private global::System.Windows.Forms.CheckBox checkBox1; + + // Token: 0x0400038B RID: 907 + private global::System.Windows.Forms.Button button1; + + // Token: 0x0400038C RID: 908 + private global::System.Windows.Forms.TextBox textBox1; + + // Token: 0x0400038D RID: 909 + private global::System.Windows.Forms.Label lblJpegQuality; + + // Token: 0x0400038E RID: 910 + private global::System.Windows.Forms.TrackBar barJpegQuality; + + // Token: 0x0400038F RID: 911 + private global::System.Windows.Forms.Label label2; + + // Token: 0x04000390 RID: 912 + private global::System.Windows.Forms.Label label5; + + // Token: 0x04000391 RID: 913 + private global::System.Windows.Forms.Label label4; + + // Token: 0x04000392 RID: 914 + private global::System.Windows.Forms.CheckBox checkBox2; + + // Token: 0x04000393 RID: 915 + private global::System.Windows.Forms.GroupBox groupBox1; + } +} diff --git a/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.cs b/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.cs new file mode 100644 index 0000000..adb32b7 --- /dev/null +++ b/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.cs @@ -0,0 +1,37 @@ +using System; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000B2 RID: 178 + internal partial class SaveImageStyleItemPanel : ToolBoxForm + { + // Token: 0x06000599 RID: 1433 RVA: 0x00026ED3 File Offset: 0x000250D3 + public SaveImageStyleItemPanel() + { + } + + // Token: 0x0600059A RID: 1434 RVA: 0x00026EDB File Offset: 0x000250DB + public SaveImageStyleItemPanel(CCopyStyleItem item) : base(item) + { + } + + // Token: 0x0600059B RID: 1435 RVA: 0x00026EE4 File Offset: 0x000250E4 + protected override void SetStyleToForm(object style) + { + var ccopyStyleItem = (CCopyStyleItem)style; + InitializeComponent(); + Text = ccopyStyleItem.GetDisplayName(); + } + + // Token: 0x0600059C RID: 1436 RVA: 0x00026F0C File Offset: 0x0002510C + protected override object GetStyleFromForm() + { + return new CCopyStyleItem(); + } + + // Token: 0x0600059D RID: 1437 RVA: 0x00026F20 File Offset: 0x00025120 + private void barJpegQuality_Scroll(object sender, EventArgs e) + { + } + } +} diff --git a/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.resx b/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/SaveImageStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScaleStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/ScaleStyleItemPanel.Designer.cs new file mode 100644 index 0000000..143baa8 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScaleStyleItemPanel.Designer.cs @@ -0,0 +1,235 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200008E RID: 142 + partial class ScaleStyleItemPanel + { + // Token: 0x060004A9 RID: 1193 RVA: 0x0001E580 File Offset: 0x0001C780 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.lblInterpolation = new System.Windows.Forms.Label(); + this.cmbInterpolation = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.numRelativeScale = new System.Windows.Forms.NumericUpDown(); + this.barRelative = new System.Windows.Forms.TrackBar(); + this.label2 = new System.Windows.Forms.Label(); + this.barFixed = new System.Windows.Forms.TrackBar(); + this.rdoIncrement = new System.Windows.Forms.RadioButton(); + this.rdoFixed = new System.Windows.Forms.RadioButton(); + this.label1 = new System.Windows.Forms.Label(); + this.numFixedScale = new System.Windows.Forms.NumericUpDown(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRelativeScale)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.barRelative)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.barFixed)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numFixedScale)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(197, 189); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(273, 189); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.lblInterpolation); + this.groupBox1.Controls.Add(this.cmbInterpolation); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.numRelativeScale); + this.groupBox1.Controls.Add(this.barRelative); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.barFixed); + this.groupBox1.Controls.Add(this.rdoIncrement); + this.groupBox1.Controls.Add(this.rdoFixed); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.numFixedScale); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(335, 173); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // lblInterpolation + // + this.lblInterpolation.AccessibleDescription = ""; + this.lblInterpolation.AutoSize = true; + this.lblInterpolation.Location = new System.Drawing.Point(28, 127); + this.lblInterpolation.Name = "lblInterpolation"; + this.lblInterpolation.Size = new System.Drawing.Size(65, 12); + this.lblInterpolation.TabIndex = 9; + this.lblInterpolation.Text = "插值方法:"; + // + // cmbInterpolation + // + this.cmbInterpolation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbInterpolation.FormattingEnabled = true; + this.cmbInterpolation.Location = new System.Drawing.Point(107, 124); + this.cmbInterpolation.Name = "cmbInterpolation"; + this.cmbInterpolation.Size = new System.Drawing.Size(177, 20); + this.cmbInterpolation.TabIndex = 10; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(290, 82); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(11, 12); + this.label3.TabIndex = 8; + this.label3.Text = "%"; + // + // numRelativeScale + // + this.numRelativeScale.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numRelativeScale.Location = new System.Drawing.Point(236, 80); + this.numRelativeScale.Minimum = new decimal(new int[] { + 200, + 0, + 0, + -2147483648}); + this.numRelativeScale.Name = "numRelativeScale"; + this.numRelativeScale.Size = new System.Drawing.Size(48, 21); + this.numRelativeScale.TabIndex = 7; + this.numRelativeScale.ValueChanged += new System.EventHandler(this.numFixedScale_ValueChanged); + // + // barRelative + // + this.barRelative.AutoSize = false; + this.barRelative.Location = new System.Drawing.Point(107, 80); + this.barRelative.Maximum = 190; + this.barRelative.Minimum = -190; + this.barRelative.Name = "barRelative"; + this.barRelative.Size = new System.Drawing.Size(123, 20); + this.barRelative.TabIndex = 6; + this.barRelative.TickFrequency = 20; + this.barRelative.Scroll += new System.EventHandler(this.barFixed_Scroll); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(290, 52); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(11, 12); + this.label2.TabIndex = 4; + this.label2.Text = "%"; + // + // barFixed + // + this.barFixed.AutoSize = false; + this.barFixed.Location = new System.Drawing.Point(107, 50); + this.barFixed.Maximum = 200; + this.barFixed.Minimum = 10; + this.barFixed.Name = "barFixed"; + this.barFixed.Size = new System.Drawing.Size(123, 20); + this.barFixed.TabIndex = 2; + this.barFixed.TickFrequency = 10; + this.barFixed.Value = 100; + this.barFixed.Scroll += new System.EventHandler(this.barFixed_Scroll); + // + // rdoIncrement + // + this.rdoIncrement.AutoSize = true; + this.rdoIncrement.Location = new System.Drawing.Point(42, 80); + this.rdoIncrement.Name = "rdoIncrement"; + this.rdoIncrement.Size = new System.Drawing.Size(59, 16); + this.rdoIncrement.TabIndex = 5; + this.rdoIncrement.Text = "相对值"; + this.rdoIncrement.UseVisualStyleBackColor = true; + this.rdoIncrement.CheckedChanged += new System.EventHandler(this.rdoFixed_CheckedChanged); + // + // rdoFixed + // + this.rdoFixed.AutoSize = true; + this.rdoFixed.Checked = true; + this.rdoFixed.Location = new System.Drawing.Point(42, 50); + this.rdoFixed.Name = "rdoFixed"; + this.rdoFixed.Size = new System.Drawing.Size(59, 16); + this.rdoFixed.TabIndex = 1; + this.rdoFixed.TabStop = true; + this.rdoFixed.Text = "绝对值"; + this.rdoFixed.UseVisualStyleBackColor = true; + this.rdoFixed.CheckedChanged += new System.EventHandler(this.rdoFixed_CheckedChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(28, 31); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 12); + this.label1.TabIndex = 0; + this.label1.Text = "尺度∶"; + // + // numFixedScale + // + this.numFixedScale.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numFixedScale.Location = new System.Drawing.Point(236, 50); + this.numFixedScale.Minimum = new decimal(new int[] { + 200, + 0, + 0, + -2147483648}); + this.numFixedScale.Name = "numFixedScale"; + this.numFixedScale.Size = new System.Drawing.Size(48, 21); + this.numFixedScale.TabIndex = 3; + this.numFixedScale.ValueChanged += new System.EventHandler(this.numFixedScale_ValueChanged); + // + // ScaleStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(351, 221); + this.Controls.Add(this.groupBox1); + this.Name = "ScaleStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRelativeScale)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.barRelative)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.barFixed)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numFixedScale)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x040002CE RID: 718 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x040002CF RID: 719 + private global::System.Windows.Forms.RadioButton rdoIncrement; + + // Token: 0x040002D0 RID: 720 + private global::System.Windows.Forms.RadioButton rdoFixed; + + // Token: 0x040002D1 RID: 721 + private global::System.Windows.Forms.Label label1; + + // Token: 0x040002D2 RID: 722 + private global::System.Windows.Forms.TrackBar barFixed; + + // Token: 0x040002D3 RID: 723 + private global::System.Windows.Forms.Label label2; + + // Token: 0x040002D4 RID: 724 + private global::System.Windows.Forms.TrackBar barRelative; + + // Token: 0x040002D5 RID: 725 + private global::System.Windows.Forms.Label lblInterpolation; + + // Token: 0x040002D6 RID: 726 + private global::System.Windows.Forms.ComboBox cmbInterpolation; + + // Token: 0x040002D7 RID: 727 + private global::System.Windows.Forms.Label label3; + + // Token: 0x040002D8 RID: 728 + private global::System.Windows.Forms.NumericUpDown numRelativeScale; + + // Token: 0x040002D9 RID: 729 + private global::System.Windows.Forms.NumericUpDown numFixedScale; + } +} diff --git a/SETUNA/Main/StyleItems/ScaleStyleItemPanel.cs b/SETUNA/Main/StyleItems/ScaleStyleItemPanel.cs new file mode 100644 index 0000000..6941ba7 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScaleStyleItemPanel.cs @@ -0,0 +1,152 @@ +using System; +using System.Drawing.Drawing2D; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200008E RID: 142 + internal partial class ScaleStyleItemPanel : ToolBoxForm + { + // Token: 0x060004A8 RID: 1192 RVA: 0x0001E574 File Offset: 0x0001C774 + public ScaleStyleItemPanel(CScaleStyleItem item) : base(item) + { + } + + // Token: 0x060004AA RID: 1194 RVA: 0x0001EE58 File Offset: 0x0001D058 + protected override void SetStyleToForm(object style) + { + var cscaleStyleItem = (CScaleStyleItem)style; + InitializeComponent(); + cmbInterpolation.Items.Clear(); + cmbInterpolation.Items.Add(new ScaleStyleItemPanel.ComboItem("不要更改", InterpolationMode.Invalid)); + cmbInterpolation.Items.Add(new ScaleStyleItemPanel.ComboItem("最近邻法", InterpolationMode.NearestNeighbor)); + cmbInterpolation.Items.Add(new ScaleStyleItemPanel.ComboItem("标准", InterpolationMode.High)); + cmbInterpolation.Items.Add(new ScaleStyleItemPanel.ComboItem("双线性", InterpolationMode.HighQualityBilinear)); + cmbInterpolation.Items.Add(new ScaleStyleItemPanel.ComboItem("两次立方", InterpolationMode.HighQualityBicubic)); + Text = cscaleStyleItem.GetDisplayName(); + numFixedScale.Minimum = 10m; + numFixedScale.Maximum = 200m; + barFixed.Minimum = 10; + barFixed.Maximum = 200; + numRelativeScale.Minimum = -190m; + numRelativeScale.Maximum = 190m; + barRelative.Minimum = -190; + barRelative.Maximum = 190; + numFixedScale.Value = 100m; + barFixed.Value = 100; + numRelativeScale.Value = 0m; + barRelative.Value = 0; + rdoFixed.Checked = (cscaleStyleItem.SetType == CScaleStyleItem.ScaleSetType.Fixed); + rdoIncrement.Checked = (cscaleStyleItem.SetType == CScaleStyleItem.ScaleSetType.Increment); + rdoFixed_CheckedChanged(this, null); + if (rdoFixed.Checked) + { + numFixedScale.Value = cscaleStyleItem.Value; + } + else + { + numRelativeScale.Value = cscaleStyleItem.Value; + } + cmbInterpolation.SelectedIndex = 0; + foreach (var obj in cmbInterpolation.Items) + { + var comboItem = (ScaleStyleItemPanel.ComboItem)obj; + if (comboItem.Item == cscaleStyleItem.InterpolationMode) + { + cmbInterpolation.SelectedItem = comboItem; + } + } + } + + // Token: 0x060004AB RID: 1195 RVA: 0x0001F0C8 File Offset: 0x0001D2C8 + protected override object GetStyleFromForm() + { + var cscaleStyleItem = new CScaleStyleItem(); + if (rdoFixed.Checked) + { + cscaleStyleItem.Value = (int)numFixedScale.Value; + } + else + { + cscaleStyleItem.Value = (int)numRelativeScale.Value; + } + cscaleStyleItem.SetType = (rdoFixed.Checked ? CScaleStyleItem.ScaleSetType.Fixed : CScaleStyleItem.ScaleSetType.Increment); + cscaleStyleItem.InterpolationMode = ((ScaleStyleItemPanel.ComboItem)cmbInterpolation.SelectedItem).Item; + return cscaleStyleItem; + } + + // Token: 0x060004AC RID: 1196 RVA: 0x0001F14C File Offset: 0x0001D34C + private void rdoFixed_CheckedChanged(object sender, EventArgs e) + { + if (rdoFixed.Checked) + { + barFixed.Enabled = true; + numFixedScale.Enabled = true; + barRelative.Enabled = false; + numRelativeScale.Enabled = false; + return; + } + barFixed.Enabled = false; + numFixedScale.Enabled = false; + barRelative.Enabled = true; + numRelativeScale.Enabled = true; + } + + // Token: 0x060004AD RID: 1197 RVA: 0x0001F1C8 File Offset: 0x0001D3C8 + private void numFixedScale_ValueChanged(object sender, EventArgs e) + { + try + { + barFixed.Value = (int)numFixedScale.Value; + barRelative.Value = (int)numRelativeScale.Value; + } + catch + { + } + } + + // Token: 0x060004AE RID: 1198 RVA: 0x0001F220 File Offset: 0x0001D420 + private void barFixed_Scroll(object sender, EventArgs e) + { + if (barFixed.Value != numFixedScale.Value) + { + numFixedScale.Value = barFixed.Value; + } + if (barRelative.Value != numRelativeScale.Value) + { + numRelativeScale.Value = barRelative.Value; + } + } + + // Token: 0x02000094 RID: 148 + private class ComboItem + { + // Token: 0x060004E5 RID: 1253 RVA: 0x0002337B File Offset: 0x0002157B + public ComboItem(string name, T item) + { + _item = item; + _name = name; + } + + // Token: 0x170000B4 RID: 180 + // (get) Token: 0x060004E7 RID: 1255 RVA: 0x0002339A File Offset: 0x0002159A + // (set) Token: 0x060004E6 RID: 1254 RVA: 0x00023391 File Offset: 0x00021591 + public T Item + { + get => _item; + set => _item = value; + } + + // Token: 0x060004E8 RID: 1256 RVA: 0x000233A2 File Offset: 0x000215A2 + public override string ToString() + { + return _name; + } + + // Token: 0x0400032B RID: 811 + protected T _item; + + // Token: 0x0400032C RID: 812 + protected string _name; + } + } +} diff --git a/SETUNA/Main/StyleItems/ScaleStyleItemPanel.resx b/SETUNA/Main/StyleItems/ScaleStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/ScaleStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScrapDrawForm.Designer.cs b/SETUNA/Main/StyleItems/ScrapDrawForm.Designer.cs new file mode 100644 index 0000000..7ffb5f4 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapDrawForm.Designer.cs @@ -0,0 +1,50 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000022 RID: 34 + partial class ScrapDrawForm + { + // Token: 0x06000160 RID: 352 RVA: 0x00008371 File Offset: 0x00006571 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + if (this._baseimg != null) + { + this._baseimg.Dispose(); + this._baseimg = null; + } + base.Dispose(disposing); + } + + // Token: 0x06000161 RID: 353 RVA: 0x000083AC File Offset: 0x000065AC + private void InitializeComponent() + { + this.SuspendLayout(); + // + // ScrapDrawForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 266); + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "ScrapDrawForm"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "TrimWindow"; + this.TopMost = true; + this.ResumeLayout(false); + + } + + // Token: 0x040000A2 RID: 162 +#pragma warning disable CS0649 // 从未对字段“ScrapDrawForm.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“ScrapDrawForm.components”赋值,字段将一直保持其默认值 null + + // Token: 0x040000A3 RID: 163 + protected global::System.Drawing.Image _baseimg; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapDrawForm.cs b/SETUNA/Main/StyleItems/ScrapDrawForm.cs new file mode 100644 index 0000000..f8719ed --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapDrawForm.cs @@ -0,0 +1,146 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000022 RID: 34 + public partial class ScrapDrawForm : BaseForm + { + // Token: 0x06000162 RID: 354 + [DllImport("user32.dll")] + private static extern IntPtr GetDC(IntPtr hwnd); + + // Token: 0x06000163 RID: 355 + [DllImport("gdi32.dll")] + private static extern int BitBlt(IntPtr hDestDC, int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, int dwRop); + + // Token: 0x06000164 RID: 356 + [DllImport("Gdi32.dll")] + private static extern bool DeleteDC(IntPtr handle); + + // Token: 0x06000165 RID: 357 RVA: 0x00008430 File Offset: 0x00006630 + private ScrapDrawForm() + { + InitializeComponent(); + } + + // Token: 0x06000166 RID: 358 RVA: 0x00008440 File Offset: 0x00006640 + public ScrapDrawForm(ScrapBase scrap) + { + InitializeComponent(); + _scrap = scrap; + _basepoint = new Point(50, 50); + var p = new Point(scrap.ClientRectangle.X + scrap.ClientSize.Width / 2, scrap.ClientRectangle.Y + scrap.ClientSize.Height / 2); + p = scrap.PointToScreen(p); + _baseimg = new Bitmap(scrap.Image.Width + 100, scrap.Image.Height + 100, PixelFormat.Format24bppRgb); + CopyFromScreen(_baseimg, new Point(p.X - scrap.Image.Width / 2 - 50, p.Y - scrap.Image.Height / 2 - 50)); + var colorMatrix = new ColorMatrix(); + var num = 0.298912f; + var num2 = 0.586611f; + var num3 = 0.114478f; + colorMatrix[0, 0] = (colorMatrix[0, 1] = (colorMatrix[0, 2] = num * 0.5f)); + colorMatrix[1, 0] = (colorMatrix[1, 1] = (colorMatrix[1, 2] = num2 * 0.5f)); + colorMatrix[2, 0] = (colorMatrix[2, 1] = (colorMatrix[2, 2] = num3 * 0.5f)); + colorMatrix[3, 3] = (colorMatrix[4, 4] = 1f); + var imageAttributes = new ImageAttributes(); + imageAttributes.SetColorMatrix(colorMatrix); + using (var graphics = Graphics.FromImage(_baseimg)) + { + var p2 = new Point(scrap.ClientRectangle.Left, scrap.ClientRectangle.Top); + p2 = scrap.PointToScreen(p2); + graphics.DrawImageUnscaled(scrap.Image, 50, 50); + graphics.DrawImage(_baseimg, new Rectangle(0, 0, _baseimg.Width, _baseimg.Height), 0, 0, _baseimg.Width, _baseimg.Height, GraphicsUnit.Pixel, imageAttributes); + } + base.Width = _baseimg.Width; + base.Height = _baseimg.Height; + base.Left = p.X - base.Width / 2; + base.Top = p.Y - base.Height / 2; + _scrap.Hide(); + } + + // Token: 0x06000167 RID: 359 RVA: 0x000086F8 File Offset: 0x000068F8 + protected override void OnPaint(PaintEventArgs e) + { + if (_baseimg != null) + { + e.Graphics.DrawImageUnscaled(_baseimg, 0, 0); + } + } + + // Token: 0x06000168 RID: 360 RVA: 0x00008718 File Offset: 0x00006918 + public bool CopyFromScreen(Image img, Point location) + { + var result = true; + var intPtr = IntPtr.Zero; + try + { + intPtr = ScrapDrawForm.GetDC(IntPtr.Zero); + using (var graphics = Graphics.FromImage(img)) + { + var intPtr2 = IntPtr.Zero; + try + { + intPtr2 = graphics.GetHdc(); + ScrapDrawForm.BitBlt(intPtr2, 0, 0, img.Width, img.Height, intPtr, location.X, location.Y, 1087111200); + } + catch (Exception ex) + { + throw ex; + } + finally + { + if (intPtr2 != IntPtr.Zero) + { + graphics.ReleaseHdc(intPtr2); + } + } + } + } + catch (Exception ex2) + { + Console.WriteLine(ex2.Message); + result = false; + } + finally + { + if (intPtr != IntPtr.Zero) + { + ScrapDrawForm.DeleteDC(intPtr); + } + } + return result; + } + + // Token: 0x06000169 RID: 361 RVA: 0x0000880C File Offset: 0x00006A0C + protected override void OnFormClosed(FormClosedEventArgs e) + { + base.OnFormClosed(e); + if (_scrap != null) + { + _scrap.Show(); + } + } + + // Token: 0x17000046 RID: 70 + // (get) Token: 0x0600016A RID: 362 RVA: 0x00008828 File Offset: 0x00006A28 + protected Point BasePoint => _basepoint; + + // Token: 0x0400009F RID: 159 + private const int SRCCOPY = 13369376; + + // Token: 0x040000A0 RID: 160 + private const int CAPTUREBLT = 1073741824; + + // Token: 0x040000A1 RID: 161 + protected const int Space = 50; + + // Token: 0x040000A4 RID: 164 + protected ScrapBase _scrap; + + // Token: 0x040000A5 RID: 165 + private Point _basepoint; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapDrawForm.resx b/SETUNA/Main/StyleItems/ScrapDrawForm.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapDrawForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScrapPaintLayer.Designer.cs b/SETUNA/Main/StyleItems/ScrapPaintLayer.Designer.cs new file mode 100644 index 0000000..1533864 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintLayer.Designer.cs @@ -0,0 +1,140 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000016 RID: 22 + partial class ScrapPaintLayer + { + // Token: 0x06000104 RID: 260 RVA: 0x00007260 File Offset: 0x00005460 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + this._parent = null; + this._select = null; + if (this.LayerCommands != null) + { + foreach (global::SETUNA.Main.StyleItems.ToolCommand toolCommand in this.LayerCommands) + { + toolCommand.Dispose(); + } + this.LayerCommands.Clear(); + this.LayerCommands = null; + } + base.Dispose(disposing); + } + + // Token: 0x06000105 RID: 261 RVA: 0x000072F8 File Offset: 0x000054F8 + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.btnDel = new System.Windows.Forms.Button(); + this.btnLayerAdd = new System.Windows.Forms.Button(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.btnDel); + this.panel1.Controls.Add(this.btnLayerAdd); + this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel1.Location = new System.Drawing.Point(0, 247); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(148, 19); + this.panel1.TabIndex = 0; + // + // btnDel + // + this.btnDel.Location = new System.Drawing.Point(81, 0); + this.btnDel.Name = "btnDel"; + this.btnDel.Size = new System.Drawing.Size(34, 19); + this.btnDel.TabIndex = 1; + this.btnDel.Text = "Del"; + this.btnDel.UseVisualStyleBackColor = true; + this.btnDel.Click += new System.EventHandler(this.btnDel_Click); + // + // btnLayerAdd + // + this.btnLayerAdd.Location = new System.Drawing.Point(114, 0); + this.btnLayerAdd.Name = "btnLayerAdd"; + this.btnLayerAdd.Size = new System.Drawing.Size(34, 19); + this.btnLayerAdd.TabIndex = 0; + this.btnLayerAdd.Text = "Add"; + this.btnLayerAdd.UseVisualStyleBackColor = true; + this.btnLayerAdd.Click += new System.EventHandler(this.btnLayerAdd_Click); + // + // panel2 + // + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(148, 26); + this.panel2.TabIndex = 1; + // + // panel3 + // + this.panel3.AutoScroll = true; + this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(0, 26); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(148, 221); + this.panel3.TabIndex = 2; + // + // ScrapPaintLayer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(148, 266); + this.ControlBox = false; + this.Controls.Add(this.panel3); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.KeyPreview = true; + this.Name = "ScrapPaintLayer"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "层"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ScrapPaintLayer_FormClosing); + this.Shown += new System.EventHandler(this.ScrapPaintLayer_Shown); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + // Token: 0x0400007A RID: 122 + private global::SETUNA.Main.StyleItems.ScrapPaintWindow _parent; + + // Token: 0x0400007C RID: 124 + private global::SETUNA.Main.StyleItems.ScrapPaintLayerItem _select; + + // Token: 0x0400007D RID: 125 + private global::System.Collections.Generic.List LayerCommands; + + // Token: 0x04000081 RID: 129 +#pragma warning disable CS0649 // 从未对字段“ScrapPaintLayer.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“ScrapPaintLayer.components”赋值,字段将一直保持其默认值 null + + // Token: 0x04000082 RID: 130 + private global::System.Windows.Forms.Panel panel1; + + // Token: 0x04000083 RID: 131 + private global::System.Windows.Forms.Panel panel2; + + // Token: 0x04000084 RID: 132 + private global::System.Windows.Forms.Panel panel3; + + // Token: 0x04000085 RID: 133 + private global::System.Windows.Forms.Button btnLayerAdd; + + // Token: 0x04000086 RID: 134 + private global::System.Windows.Forms.Button btnDel; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintLayer.cs b/SETUNA/Main/StyleItems/ScrapPaintLayer.cs new file mode 100644 index 0000000..cd65684 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintLayer.cs @@ -0,0 +1,318 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000016 RID: 22 + public partial class ScrapPaintLayer : BaseForm, ILayer + { + // Token: 0x14000008 RID: 8 + // (add) Token: 0x060000EA RID: 234 RVA: 0x000069B8 File Offset: 0x00004BB8 + // (remove) Token: 0x060000EB RID: 235 RVA: 0x000069D1 File Offset: 0x00004BD1 + public event ScrapPaintLayerItem.LayerDelegate SelectLayer; + + // Token: 0x14000009 RID: 9 + // (add) Token: 0x060000EC RID: 236 RVA: 0x000069EA File Offset: 0x00004BEA + // (remove) Token: 0x060000ED RID: 237 RVA: 0x00006A03 File Offset: 0x00004C03 + public event ScrapPaintLayerItem.LayerDelegate LayerRefresh; + + // Token: 0x1700003C RID: 60 + // (get) Token: 0x060000EE RID: 238 RVA: 0x00006A1C File Offset: 0x00004C1C + public ScrapPaintLayerItem SelectionLayer => _select; + + // Token: 0x1700003D RID: 61 + // (get) Token: 0x060000EF RID: 239 RVA: 0x00006A24 File Offset: 0x00004C24 + // (set) Token: 0x060000F0 RID: 240 RVA: 0x00006A64 File Offset: 0x00004C64 + public int SelectionIndex + { + get + { + var num = 0; + while (num < _layers.Count && !_layers[num].Equals(_select)) + { + num++; + } + return num; + } + private set + { + if (value < 0) + { + value = 0; + } + if (value > _layers.Count - 1) + { + value = _layers.Count - 1; + } + if (LayerCount > 0) + { + layer_SelectLayer(_layers[value]); + } + } + } + + // Token: 0x1700003E RID: 62 + // (get) Token: 0x060000F1 RID: 241 RVA: 0x00006AB2 File Offset: 0x00004CB2 + private int LayerCount => _layers.Count; + + // Token: 0x060000F2 RID: 242 RVA: 0x00006ABF File Offset: 0x00004CBF + public ScrapPaintLayer(ScrapPaintWindow parent) + { + InitializeComponent(); + _select = null; + _parent = parent; + LayerCommands = new List(); + HistoryCommands = new List(); + _layers = new List(); + } + + // Token: 0x060000F3 RID: 243 RVA: 0x00006AFC File Offset: 0x00004CFC + private void ScrapPaintLayer_Shown(object sender, EventArgs e) + { + var addLayerCommand = new AddLayerCommand("层" + (_layers.Count + 1).ToString(), SelectionIndex); + addLayerCommand.AddLayer += addCmd_AddLayer; + AddCommand(addLayerCommand); + layer_SelectLayer(_layers[0]); + } + + // Token: 0x060000F4 RID: 244 RVA: 0x00006B60 File Offset: 0x00004D60 + public void AddLayer() + { + var addLayerCommand = new AddLayerCommand("层" + (_layers.Count + 1).ToString(), SelectionIndex); + addLayerCommand.AddLayer += addCmd_AddLayer; + _parent.AddLayerCommand(addLayerCommand); + } + + // Token: 0x060000F5 RID: 245 RVA: 0x00006BB8 File Offset: 0x00004DB8 + public void addCmd_AddLayer(AddLayerCommand sender) + { + foreach (var scrapPaintLayerItem in _layers) + { + if (scrapPaintLayerItem.LayerID == sender.LayerID) + { + scrapPaintLayerItem.Visible = true; + scrapPaintLayerItem.LayerName = sender.LayerName; + scrapPaintLayerItem.IsAlive = true; + return; + } + } + var scrapPaintLayerItem2 = sender.CreateLayer(_parent.Width, _parent.Height); + scrapPaintLayerItem2.LayerName = sender.LayerName; + scrapPaintLayerItem2.IsAlive = true; + scrapPaintLayerItem2.SelectLayer += layer_SelectLayer; + scrapPaintLayerItem2.LayerChanged += layer_LayerChanged; + scrapPaintLayerItem2.Rename += layer_Rename; + _layers.Insert(sender.InsertIndex, scrapPaintLayerItem2); + SelectionIndex = sender.InsertIndex; + } + + // Token: 0x060000F6 RID: 246 RVA: 0x00006CB8 File Offset: 0x00004EB8 + private void layer_Rename(ScrapPaintLayerItem layerCtrl, string newLayerName) + { + var renameLayerCommand = new RenameLayerCommand(layerCtrl.LayerID, newLayerName); + renameLayerCommand.RenameLayer += renameCmd_RenameLayer; + _parent.RenameLayerCommand(renameLayerCommand); + } + + // Token: 0x060000F7 RID: 247 RVA: 0x00006CF0 File Offset: 0x00004EF0 + private void renameCmd_RenameLayer(RenameLayerCommand sender) + { + foreach (var scrapPaintLayerItem in _layers) + { + if (scrapPaintLayerItem.LayerID == sender.LayerID) + { + scrapPaintLayerItem.LayerName = sender.LayerName; + scrapPaintLayerItem.IsAlive = true; + break; + } + } + } + + // Token: 0x060000F8 RID: 248 RVA: 0x00006D60 File Offset: 0x00004F60 + private void DeleteLayer() + { + if (_select != null && MessageBox.Show(_select.LayerName + "我如何删除?", base.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2) == DialogResult.Yes) + { + var deleteLayerCommand = new DeleteLayerCommand(SelectionLayer.LayerID); + deleteLayerCommand.DeleteLayer += delCmd_DeleteLayer; + _parent.DeleteLayerCommand(deleteLayerCommand); + } + } + + // Token: 0x060000F9 RID: 249 RVA: 0x00006DD0 File Offset: 0x00004FD0 + private void delCmd_DeleteLayer(DeleteLayerCommand sender) + { + foreach (var scrapPaintLayerItem in _layers) + { + if (scrapPaintLayerItem.LayerID == sender.LayerID) + { + scrapPaintLayerItem.Visible = false; + scrapPaintLayerItem.IsAlive = true; + break; + } + } + } + + // Token: 0x060000FA RID: 250 RVA: 0x00006E3C File Offset: 0x0000503C + private void RefreshLayerItem() + { + base.SuspendLayout(); + var selectionIndex = SelectionIndex; + var list = new List(); + foreach (var obj in panel3.Controls) + { + var item = (ScrapPaintLayerItem)obj; + list.Add(item); + } + var num = 0; + new List(); + foreach (var scrapPaintLayerItem in _layers) + { + if (scrapPaintLayerItem.Visible) + { + scrapPaintLayerItem.Top = num; + num += scrapPaintLayerItem.Height; + if (panel3.Controls.IndexOf(scrapPaintLayerItem) == -1) + { + panel3.Controls.Add(scrapPaintLayerItem); + } + else + { + list.Remove(scrapPaintLayerItem); + } + } + } + foreach (var value in list) + { + panel3.Controls.Remove(value); + } + SelectionIndex = selectionIndex; + base.ResumeLayout(); + } + + // Token: 0x060000FB RID: 251 RVA: 0x00006FA0 File Offset: 0x000051A0 + private void layer_SelectLayer(ScrapPaintLayerItem layerCtrl) + { + if (layerCtrl.Equals(_select)) + { + return; + } + _select = layerCtrl; + foreach (var scrapPaintLayerItem in _layers) + { + if (scrapPaintLayerItem.Equals(layerCtrl)) + { + scrapPaintLayerItem.BackColor = Color.SkyBlue; + } + else + { + scrapPaintLayerItem.BackColor = SystemColors.Control; + } + } + if (SelectLayer != null) + { + SelectLayer(layerCtrl); + } + } + + // Token: 0x060000FC RID: 252 RVA: 0x00007038 File Offset: 0x00005238 + private void layer_LayerChanged(ScrapPaintLayerItem layerCtrl) + { + if (LayerRefresh != null) + { + LayerRefresh(null); + } + } + + // Token: 0x060000FD RID: 253 RVA: 0x00007050 File Offset: 0x00005250 + public void Draw(Graphics g) + { + _layers.Reverse(); + foreach (var scrapPaintLayerItem in _layers) + { + if (scrapPaintLayerItem.Visible) + { + scrapPaintLayerItem.Draw(g); + } + } + _layers.Reverse(); + } + + // Token: 0x060000FE RID: 254 RVA: 0x000070C4 File Offset: 0x000052C4 + private void btnLayerAdd_Click(object sender, EventArgs e) + { + AddLayer(); + } + + // Token: 0x060000FF RID: 255 RVA: 0x000070CC File Offset: 0x000052CC + private void btnDel_Click(object sender, EventArgs e) + { + DeleteLayer(); + } + + // Token: 0x06000100 RID: 256 RVA: 0x000070D4 File Offset: 0x000052D4 + public void AddCommand(ToolCommand addCmd) + { + LayerCommands.Add((LayerCommand)addCmd); + addCmd.Parent = this; + RefreshLayer(); + } + + // Token: 0x06000101 RID: 257 RVA: 0x000070F4 File Offset: 0x000052F4 + public void RefreshLayer() + { + foreach (var scrapPaintLayerItem in _layers) + { + scrapPaintLayerItem.IsAlive = false; + } + foreach (var layerCommand in LayerCommands) + { + layerCommand.Apply(); + } + var list = new List(); + foreach (var scrapPaintLayerItem2 in _layers) + { + if (!scrapPaintLayerItem2.IsAlive) + { + list.Add(scrapPaintLayerItem2); + } + } + for (var i = 0; i < list.Count; i++) + { + _layers.Remove(list[i]); + list[i].Dispose(); + } + list.Clear(); + list = null; + RefreshLayerItem(); + if (LayerRefresh != null) + { + LayerRefresh(null); + } + } + + // Token: 0x06000102 RID: 258 RVA: 0x00007234 File Offset: 0x00005434 + public void RemoveCommand(ToolCommand removeCmd) + { + LayerCommands.Remove((LayerCommand)removeCmd); + RefreshLayer(); + } + + // Token: 0x06000103 RID: 259 RVA: 0x0000724E File Offset: 0x0000544E + private void ScrapPaintLayer_FormClosing(object sender, FormClosingEventArgs e) + { + if (e.CloseReason == CloseReason.UserClosing) + { + e.Cancel = true; + } + } + + // Token: 0x0400007B RID: 123 + private List _layers; + + // Token: 0x0400007E RID: 126 + private List HistoryCommands; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintLayer.resx b/SETUNA/Main/StyleItems/ScrapPaintLayer.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintLayer.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScrapPaintLayerItem.cs b/SETUNA/Main/StyleItems/ScrapPaintLayerItem.cs new file mode 100644 index 0000000..90f5082 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintLayerItem.cs @@ -0,0 +1,267 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000018 RID: 24 + public class ScrapPaintLayerItem : UserControl, ILayer + { + // Token: 0x0600011D RID: 285 RVA: 0x00007C08 File Offset: 0x00005E08 + protected override void Dispose(bool disposing) + { + if (disposing && components != null) + { + components.Dispose(); + } + if (_img != null) + { + _img.Dispose(); + _img = null; + } + if (Commands != null) + { + foreach (var toolCommand in Commands) + { + toolCommand.Dispose(); + } + Commands.Clear(); + Commands = null; + } + base.Dispose(disposing); + } + + // Token: 0x0600011E RID: 286 RVA: 0x00007CAC File Offset: 0x00005EAC + private void InitializeComponent() + { + checkBox1 = new System.Windows.Forms.CheckBox(); + picThumb = new System.Windows.Forms.PictureBox(); + label1 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(picThumb)).BeginInit(); + SuspendLayout(); + // + // checkBox1 + // + checkBox1.AutoSize = true; + checkBox1.Location = new System.Drawing.Point(3, 13); + checkBox1.Name = "checkBox1"; + checkBox1.Size = new System.Drawing.Size(15, 14); + checkBox1.TabIndex = 0; + checkBox1.UseVisualStyleBackColor = true; + // + // picThumb + // + picThumb.BackColor = System.Drawing.Color.White; + picThumb.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + picThumb.Location = new System.Drawing.Point(23, 6); + picThumb.Name = "picThumb"; + picThumb.Size = new System.Drawing.Size(35, 31); + picThumb.TabIndex = 1; + picThumb.TabStop = false; + // + // label1 + // + label1.Location = new System.Drawing.Point(64, 0); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(84, 43); + label1.TabIndex = 2; + label1.Text = "label1"; + label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // ScrapPaintLayerItem + // + AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + Controls.Add(label1); + Controls.Add(picThumb); + Controls.Add(checkBox1); + Name = "ScrapPaintLayerItem"; + Size = new System.Drawing.Size(146, 43); + ((System.ComponentModel.ISupportInitialize)(picThumb)).EndInit(); + ResumeLayout(false); + PerformLayout(); + + } + + // Token: 0x1400000A RID: 10 + // (add) Token: 0x0600011F RID: 287 RVA: 0x00007EF3 File Offset: 0x000060F3 + // (remove) Token: 0x06000120 RID: 288 RVA: 0x00007F0C File Offset: 0x0000610C + public event ScrapPaintLayerItem.LayerDelegate SelectLayer; + + // Token: 0x1400000B RID: 11 + // (add) Token: 0x06000121 RID: 289 RVA: 0x00007F25 File Offset: 0x00006125 + // (remove) Token: 0x06000122 RID: 290 RVA: 0x00007F3E File Offset: 0x0000613E + public event ScrapPaintLayerItem.LayerDelegate LayerChanged; + + // Token: 0x1400000C RID: 12 + // (add) Token: 0x06000123 RID: 291 RVA: 0x00007F57 File Offset: 0x00006157 + // (remove) Token: 0x06000124 RID: 292 RVA: 0x00007F70 File Offset: 0x00006170 + public event ScrapPaintLayerItem.LayerRenameDelegate Rename; + + // Token: 0x1700003F RID: 63 + // (get) Token: 0x06000125 RID: 293 RVA: 0x00007F89 File Offset: 0x00006189 + public long LayerID => _id; + + // Token: 0x17000040 RID: 64 + // (get) Token: 0x06000127 RID: 295 RVA: 0x00007F9F File Offset: 0x0000619F + // (set) Token: 0x06000126 RID: 294 RVA: 0x00007F91 File Offset: 0x00006191 + public string LayerName + { + get => label1.Text; + set => label1.Text = value; + } + + // Token: 0x17000041 RID: 65 + // (get) Token: 0x06000129 RID: 297 RVA: 0x00007FB5 File Offset: 0x000061B5 + // (set) Token: 0x06000128 RID: 296 RVA: 0x00007FAC File Offset: 0x000061AC + public bool IsAlive + { + get => _isalive; + set => _isalive = value; + } + + // Token: 0x0600012A RID: 298 RVA: 0x00007FBD File Offset: 0x000061BD + public ScrapPaintLayerItem() + { + InitializeComponent(); + } + + // Token: 0x0600012B RID: 299 RVA: 0x00007FCB File Offset: 0x000061CB + public ScrapPaintLayerItem(long layerID, int width, int height) : this() + { + _id = layerID; + _img = new Bitmap(width, height); + Commands = new List(); + } + + // Token: 0x0600012C RID: 300 RVA: 0x00007FF2 File Offset: 0x000061F2 + private void ScrapPaintLayerItem_Click(object sender, EventArgs e) + { + if (SelectLayer != null) + { + SelectLayer(this); + } + } + + // Token: 0x0600012D RID: 301 RVA: 0x00008008 File Offset: 0x00006208 + protected virtual void Rasterize() + { + using (var graphics = Graphics.FromImage(_img)) + { + graphics.FillRectangle(Brushes.Pink, 0, 0, _img.Width, _img.Height); + foreach (var toolCommand in Commands) + { + toolCommand.Draw(graphics); + } + } + _img.MakeTransparent(Color.Pink); + DrawThumbnail(); + Refresh(); + } + + // Token: 0x0600012E RID: 302 RVA: 0x000080C0 File Offset: 0x000062C0 + protected virtual void DrawThumbnail() + { + picThumb.Image = _img.GetThumbnailImage(picThumb.Width, picThumb.Height, () => false, IntPtr.Zero); + } + + // Token: 0x0600012F RID: 303 RVA: 0x0000811B File Offset: 0x0000631B + public void Draw(Graphics g) + { + if (_img != null) + { + g.DrawImage(_img, 0, 0); + } + } + + // Token: 0x06000130 RID: 304 RVA: 0x00008133 File Offset: 0x00006333 + public void AddCommand(ToolCommand addCmd) + { + Commands.Add(addCmd); + if (addCmd.Parent == null) + { + addCmd.Parent = this; + } + Rasterize(); + } + + // Token: 0x06000131 RID: 305 RVA: 0x00008156 File Offset: 0x00006356 + public void RefreshLayer() + { + if (LayerChanged != null) + { + LayerChanged(this); + } + } + + // Token: 0x06000132 RID: 306 RVA: 0x0000816C File Offset: 0x0000636C + public void RemoveCommand(ToolCommand removeCmd) + { + Commands.Remove(removeCmd); + Rasterize(); + RefreshLayer(); + } + + // Token: 0x06000133 RID: 307 RVA: 0x00008187 File Offset: 0x00006387 + private void label1_DoubleClick(object sender, EventArgs e) + { + RenameLayer(); + } + + // Token: 0x06000134 RID: 308 RVA: 0x00008190 File Offset: 0x00006390 + protected virtual void RenameLayer() + { + using (var layerRenameWindow = new LayerRenameWindow()) + { + layerRenameWindow.LayerName = LayerName; + if (layerRenameWindow.ShowDialog() == DialogResult.OK && Rename != null) + { + Rename(this, layerRenameWindow.LayerName); + } + } + } + + // Token: 0x06000135 RID: 309 RVA: 0x000081F0 File Offset: 0x000063F0 + public virtual bool IsEditableTool(PaintTool tool) + { + return true; + } + + // Token: 0x0400008D RID: 141 +#pragma warning disable CS0649 // 从未对字段“ScrapPaintLayerItem.components”赋值,字段将一直保持其默认值 null + private IContainer components; +#pragma warning restore CS0649 // 从未对字段“ScrapPaintLayerItem.components”赋值,字段将一直保持其默认值 null + + // Token: 0x0400008E RID: 142 + private CheckBox checkBox1; + + // Token: 0x0400008F RID: 143 + private Label label1; + + // Token: 0x04000090 RID: 144 + protected PictureBox picThumb; + + // Token: 0x04000094 RID: 148 + private long _id; + + // Token: 0x04000095 RID: 149 + protected Bitmap _img; + + // Token: 0x04000096 RID: 150 + private bool _isalive; + + // Token: 0x04000097 RID: 151 + protected List Commands; + + // Token: 0x0200001A RID: 26 + // (Invoke) Token: 0x0600013E RID: 318 + public delegate void LayerDelegate(ScrapPaintLayerItem layerCtrl); + + // Token: 0x0200001D RID: 29 + // (Invoke) Token: 0x0600014D RID: 333 + public delegate void LayerRenameDelegate(ScrapPaintLayerItem layerCtrl, string newLayerName); + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintLayerItem.resx b/SETUNA/Main/StyleItems/ScrapPaintLayerItem.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintLayerItem.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScrapPaintPenTool.Designer.cs b/SETUNA/Main/StyleItems/ScrapPaintPenTool.Designer.cs new file mode 100644 index 0000000..ee33288 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintPenTool.Designer.cs @@ -0,0 +1,314 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000A6 RID: 166 + partial class ScrapPaintPenTool + { + // Token: 0x0600055B RID: 1371 RVA: 0x00024B5B File Offset: 0x00022D5B + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x0600055C RID: 1372 RVA: 0x00024B7C File Offset: 0x00022D7C + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.pnlPen = new System.Windows.Forms.Panel(); + this.numPenSize = new System.Windows.Forms.NumericUpDown(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.penButton5 = new SETUNA.Main.StyleItems.PenButton(); + this.penButton4 = new SETUNA.Main.StyleItems.PenButton(); + this.penButton3 = new SETUNA.Main.StyleItems.PenButton(); + this.penButton2 = new SETUNA.Main.StyleItems.PenButton(); + this.penButton1 = new SETUNA.Main.StyleItems.PenButton(); + this.pnlOpacity = new System.Windows.Forms.Panel(); + this.numOpacity = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.pnlCap = new System.Windows.Forms.Panel(); + this.cmbStart = new System.Windows.Forms.ComboBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.flowLayoutPanel1.SuspendLayout(); + this.pnlPen.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numPenSize)).BeginInit(); + this.pnlOpacity.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numOpacity)).BeginInit(); + this.pnlCap.SuspendLayout(); + this.SuspendLayout(); + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Controls.Add(this.pnlPen); + this.flowLayoutPanel1.Controls.Add(this.pnlOpacity); + this.flowLayoutPanel1.Controls.Add(this.pnlCap); + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(462, 57); + this.flowLayoutPanel1.TabIndex = 0; + // + // pnlPen + // + this.pnlPen.Controls.Add(this.numPenSize); + this.pnlPen.Controls.Add(this.label4); + this.pnlPen.Controls.Add(this.label3); + this.pnlPen.Controls.Add(this.penButton5); + this.pnlPen.Controls.Add(this.penButton4); + this.pnlPen.Controls.Add(this.penButton3); + this.pnlPen.Controls.Add(this.penButton2); + this.pnlPen.Controls.Add(this.penButton1); + this.pnlPen.Location = new System.Drawing.Point(0, 0); + this.pnlPen.Margin = new System.Windows.Forms.Padding(0); + this.pnlPen.Name = "pnlPen"; + this.pnlPen.Size = new System.Drawing.Size(217, 35); + this.pnlPen.TabIndex = 0; + // + // numPenSize + // + this.numPenSize.Location = new System.Drawing.Point(161, 13); + this.numPenSize.Name = "numPenSize"; + this.numPenSize.Size = new System.Drawing.Size(36, 21); + this.numPenSize.TabIndex = 10; + this.numPenSize.TabStop = false; + this.numPenSize.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numPenSize.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left; + this.numPenSize.ValueChanged += new System.EventHandler(this.numPenSize_ValueChanged); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(198, 16); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(17, 12); + this.label4.TabIndex = 12; + this.label4.Text = "px"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("宋体", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.label3.Location = new System.Drawing.Point(160, 2); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(25, 10); + this.label3.TabIndex = 11; + this.label3.Text = "尺寸"; + // + // penButton5 + // + this.penButton5.Appearance = System.Windows.Forms.Appearance.Button; + this.penButton5.AutoCheck = false; + this.penButton5.ButtonColor = System.Drawing.Color.Black; + this.penButton5.Location = new System.Drawing.Point(127, 4); + this.penButton5.Name = "penButton5"; + this.penButton5.PenSize = 20; + this.penButton5.Size = new System.Drawing.Size(31, 29); + this.penButton5.TabIndex = 9; + this.toolTip1.SetToolTip(this.penButton5, "20px"); + this.penButton5.UseVisualStyleBackColor = true; + this.penButton5.Click += new System.EventHandler(this.penButton1_Click); + // + // penButton4 + // + this.penButton4.Appearance = System.Windows.Forms.Appearance.Button; + this.penButton4.AutoCheck = false; + this.penButton4.ButtonColor = System.Drawing.Color.Black; + this.penButton4.Location = new System.Drawing.Point(96, 4); + this.penButton4.Name = "penButton4"; + this.penButton4.PenSize = 15; + this.penButton4.Size = new System.Drawing.Size(31, 29); + this.penButton4.TabIndex = 8; + this.toolTip1.SetToolTip(this.penButton4, "15px"); + this.penButton4.UseVisualStyleBackColor = true; + this.penButton4.Click += new System.EventHandler(this.penButton1_Click); + // + // penButton3 + // + this.penButton3.Appearance = System.Windows.Forms.Appearance.Button; + this.penButton3.AutoCheck = false; + this.penButton3.ButtonColor = System.Drawing.Color.Black; + this.penButton3.Location = new System.Drawing.Point(65, 4); + this.penButton3.Name = "penButton3"; + this.penButton3.PenSize = 10; + this.penButton3.Size = new System.Drawing.Size(31, 29); + this.penButton3.TabIndex = 7; + this.toolTip1.SetToolTip(this.penButton3, "10px"); + this.penButton3.UseVisualStyleBackColor = true; + this.penButton3.Click += new System.EventHandler(this.penButton1_Click); + // + // penButton2 + // + this.penButton2.Appearance = System.Windows.Forms.Appearance.Button; + this.penButton2.AutoCheck = false; + this.penButton2.ButtonColor = System.Drawing.Color.Black; + this.penButton2.Location = new System.Drawing.Point(34, 4); + this.penButton2.Name = "penButton2"; + this.penButton2.PenSize = 5; + this.penButton2.Size = new System.Drawing.Size(31, 29); + this.penButton2.TabIndex = 6; + this.toolTip1.SetToolTip(this.penButton2, "5px"); + this.penButton2.UseVisualStyleBackColor = true; + this.penButton2.Click += new System.EventHandler(this.penButton1_Click); + // + // penButton1 + // + this.penButton1.Appearance = System.Windows.Forms.Appearance.Button; + this.penButton1.AutoCheck = false; + this.penButton1.ButtonColor = System.Drawing.Color.Black; + this.penButton1.Location = new System.Drawing.Point(3, 4); + this.penButton1.Name = "penButton1"; + this.penButton1.PenSize = 1; + this.penButton1.Size = new System.Drawing.Size(31, 29); + this.penButton1.TabIndex = 5; + this.toolTip1.SetToolTip(this.penButton1, "1px"); + this.penButton1.UseVisualStyleBackColor = true; + this.penButton1.Click += new System.EventHandler(this.penButton1_Click); + // + // pnlOpacity + // + this.pnlOpacity.Controls.Add(this.numOpacity); + this.pnlOpacity.Controls.Add(this.label1); + this.pnlOpacity.Controls.Add(this.label2); + this.pnlOpacity.Location = new System.Drawing.Point(217, 0); + this.pnlOpacity.Margin = new System.Windows.Forms.Padding(0); + this.pnlOpacity.Name = "pnlOpacity"; + this.pnlOpacity.Size = new System.Drawing.Size(58, 35); + this.pnlOpacity.TabIndex = 1; + // + // numOpacity + // + this.numOpacity.Location = new System.Drawing.Point(3, 13); + this.numOpacity.Name = "numOpacity"; + this.numOpacity.Size = new System.Drawing.Size(40, 21); + this.numOpacity.TabIndex = 0; + this.numOpacity.TabStop = false; + this.numOpacity.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numOpacity.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left; + this.numOpacity.ValueChanged += new System.EventHandler(this.numOpacity_ValueChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.label1.Location = new System.Drawing.Point(3, 2); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(45, 10); + this.label1.TabIndex = 1; + this.label1.Text = "不透明度"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(44, 17); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(11, 12); + this.label2.TabIndex = 2; + this.label2.Text = "%"; + // + // pnlCap + // + this.pnlCap.Controls.Add(this.cmbStart); + this.pnlCap.Location = new System.Drawing.Point(275, 0); + this.pnlCap.Margin = new System.Windows.Forms.Padding(0); + this.pnlCap.Name = "pnlCap"; + this.pnlCap.Size = new System.Drawing.Size(159, 35); + this.pnlCap.TabIndex = 2; + // + // cmbStart + // + this.cmbStart.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbStart.FormattingEnabled = true; + this.cmbStart.Location = new System.Drawing.Point(3, 13); + this.cmbStart.Name = "cmbStart"; + this.cmbStart.Size = new System.Drawing.Size(116, 20); + this.cmbStart.TabIndex = 0; + this.cmbStart.TabStop = false; + // + // ScrapPaintPenTool + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(462, 57); + this.ControlBox = false; + this.Controls.Add(this.flowLayoutPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.MinimumSize = new System.Drawing.Size(292, 59); + this.Name = "ScrapPaintPenTool"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "笔工具"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ScrapPaintPenTool_FormClosing); + this.flowLayoutPanel1.ResumeLayout(false); + this.pnlPen.ResumeLayout(false); + this.pnlPen.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numPenSize)).EndInit(); + this.pnlOpacity.ResumeLayout(false); + this.pnlOpacity.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numOpacity)).EndInit(); + this.pnlCap.ResumeLayout(false); + this.ResumeLayout(false); + + } + + // Token: 0x04000357 RID: 855 + private global::System.ComponentModel.IContainer components; + + // Token: 0x04000358 RID: 856 + private global::System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + + // Token: 0x04000359 RID: 857 + private global::System.Windows.Forms.Panel pnlPen; + + // Token: 0x0400035A RID: 858 + private global::System.Windows.Forms.Panel pnlOpacity; + + // Token: 0x0400035B RID: 859 + private global::System.Windows.Forms.NumericUpDown numOpacity; + + // Token: 0x0400035C RID: 860 + private global::System.Windows.Forms.Label label1; + + // Token: 0x0400035D RID: 861 + private global::System.Windows.Forms.Label label2; + + // Token: 0x0400035E RID: 862 + private global::System.Windows.Forms.Panel pnlCap; + + // Token: 0x0400035F RID: 863 + private global::System.Windows.Forms.ComboBox cmbStart; + + // Token: 0x04000360 RID: 864 + private global::SETUNA.Main.StyleItems.PenButton penButton1; + + // Token: 0x04000361 RID: 865 + private global::SETUNA.Main.StyleItems.PenButton penButton5; + + // Token: 0x04000362 RID: 866 + private global::SETUNA.Main.StyleItems.PenButton penButton4; + + // Token: 0x04000363 RID: 867 + private global::SETUNA.Main.StyleItems.PenButton penButton3; + + // Token: 0x04000364 RID: 868 + private global::SETUNA.Main.StyleItems.PenButton penButton2; + + // Token: 0x04000365 RID: 869 + private global::System.Windows.Forms.NumericUpDown numPenSize; + + // Token: 0x04000366 RID: 870 + private global::System.Windows.Forms.Label label4; + + // Token: 0x04000367 RID: 871 + private global::System.Windows.Forms.Label label3; + + // Token: 0x04000368 RID: 872 + private global::System.Windows.Forms.ToolTip toolTip1; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintPenTool.cs b/SETUNA/Main/StyleItems/ScrapPaintPenTool.cs new file mode 100644 index 0000000..4a39341 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintPenTool.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x020000A6 RID: 166 + public partial class ScrapPaintPenTool : BaseForm + { + // Token: 0x0600055D RID: 1373 RVA: 0x0002577C File Offset: 0x0002397C + public ScrapPaintPenTool(PenTool penTool) + { + InitializeComponent(); + penButtons = new List + { + penButton1, + penButton2, + penButton3, + penButton4, + penButton5 + }; + foreach (var obj in Enum.GetValues(typeof(LineCap))) + { + var lineCap = (LineCap)obj; + cmbStart.Items.Add(lineCap); + } + cmbStart.SelectedItem = LineCap.NoAnchor; + _pentool = penTool; + penButton1_Click(penButton2, null); + } + + // Token: 0x0600055E RID: 1374 RVA: 0x00025880 File Offset: 0x00023A80 + public ScrapPaintPenTool(PenTool penTool, bool erasemode) : this(penTool) + { + if (erasemode) + { + Text = "橡皮擦工具"; + pnlOpacity.Visible = false; + pnlCap.Visible = false; + foreach (var penButton in penButtons) + { + penButton.ButtonColor = Color.FromArgb(95, 168, 239); + } + } + } + + // Token: 0x0600055F RID: 1375 RVA: 0x00025910 File Offset: 0x00023B10 + private void numOpacity_ValueChanged(object sender, EventArgs e) + { + var opacity = 255 * (int)numOpacity.Value / 100; + _pentool.Opacity = opacity; + _pentool.ReloadCommand(); + } + + // Token: 0x06000560 RID: 1376 RVA: 0x00025950 File Offset: 0x00023B50 + private void penButton1_Click(object sender, EventArgs e) + { + var penButton = (PenButton)sender; + numPenSize.Value = penButton.PenSize; + } + + // Token: 0x06000561 RID: 1377 RVA: 0x0002597C File Offset: 0x00023B7C + private void numPenSize_ValueChanged(object sender, EventArgs e) + { + _pentool.PenWidth = (float)numPenSize.Value; + _pentool.ReloadCommand(); + foreach (var penButton in penButtons) + { + if (penButton.PenSize == (int)numPenSize.Value) + { + penButton.Checked = true; + } + else + { + penButton.Checked = false; + } + } + } + + // Token: 0x06000562 RID: 1378 RVA: 0x00025A18 File Offset: 0x00023C18 + private void ScrapPaintPenTool_FormClosing(object sender, FormClosingEventArgs e) + { + if (e.CloseReason == CloseReason.UserClosing) + { + e.Cancel = true; + } + } + + // Token: 0x04000369 RID: 873 + private PenTool _pentool; + + // Token: 0x0400036A RID: 874 + private List penButtons; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintPenTool.resx b/SETUNA/Main/StyleItems/ScrapPaintPenTool.resx new file mode 100644 index 0000000..2716703 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintPenTool.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScrapPaintTextLayerItem.cs b/SETUNA/Main/StyleItems/ScrapPaintTextLayerItem.cs new file mode 100644 index 0000000..0502914 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintTextLayerItem.cs @@ -0,0 +1,80 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + using SETUNA.Properties; + + // Token: 0x020000AD RID: 173 + public class ScrapPaintTextLayerItem : ScrapPaintLayerItem + { + // Token: 0x0600058D RID: 1421 RVA: 0x00026324 File Offset: 0x00024524 + public ScrapPaintTextLayerItem(long layerID, int width, int height) : base(layerID, width, height) + { + picThumb.Image = new Bitmap(picThumb.Width, picThumb.Height); + using (var graphics = Graphics.FromImage(picThumb.Image)) + { + graphics.FillRectangle(Brushes.White, 0, 0, picThumb.Image.Width, picThumb.Image.Height); + graphics.DrawImage(Resources.pi_text, (picThumb.Image.Width - Resources.pi_text.Width) / 2, (picThumb.Image.Height - Resources.pi_text.Height) / 2); + } + } + + // Token: 0x0600058E RID: 1422 RVA: 0x00026400 File Offset: 0x00024600 + public override bool IsEditableTool(PaintTool tool) + { + var getToolType = tool.GetToolType; + if (getToolType == ScrapPaintToolBar.ToolKind.文字工具) + { + var textTool = (TextTool)tool; + textTool.SetFont(GetCommandFont()); + return true; + } + return false; + } + + // Token: 0x0600058F RID: 1423 RVA: 0x0002642E File Offset: 0x0002462E + protected override void DrawThumbnail() + { + } + + // Token: 0x06000590 RID: 1424 RVA: 0x00026430 File Offset: 0x00024630 + protected override void Rasterize() + { + using (var graphics = Graphics.FromImage(_img)) + { + graphics.FillRectangle(Brushes.Pink, 0, 0, _img.Width, _img.Height); + if (Commands.Count > 0) + { + Commands[Commands.Count - 1].Draw(graphics); + } + } + _img.MakeTransparent(Color.Pink); + Refresh(); + } + + // Token: 0x06000591 RID: 1425 RVA: 0x000264CC File Offset: 0x000246CC + public Font GetCommandFont() + { + if (Commands.Count > 0) + { + var textToolCommand = (TextToolCommand)Commands[Commands.Count - 1]; + return textToolCommand.Font; + } + return new Font("Arial", 10f); + } + + private void InitializeComponent() + { + ((System.ComponentModel.ISupportInitialize)(picThumb)).BeginInit(); + SuspendLayout(); + // + // ScrapPaintTextLayerItem + // + AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + Name = "ScrapPaintTextLayerItem"; + ((System.ComponentModel.ISupportInitialize)(picThumb)).EndInit(); + ResumeLayout(false); + PerformLayout(); + + } + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintTextLayerItem.resx b/SETUNA/Main/StyleItems/ScrapPaintTextLayerItem.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintTextLayerItem.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScrapPaintTextTool.Designer.cs b/SETUNA/Main/StyleItems/ScrapPaintTextTool.Designer.cs new file mode 100644 index 0000000..4d96c7c --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintTextTool.Designer.cs @@ -0,0 +1,201 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000099 RID: 153 + partial class ScrapPaintTextTool + { + // Token: 0x06000510 RID: 1296 RVA: 0x00023AC8 File Offset: 0x00021CC8 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x06000511 RID: 1297 RVA: 0x00023AE8 File Offset: 0x00021CE8 + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.pnlPen = new System.Windows.Forms.Panel(); + this.cmbFont = new System.Windows.Forms.ComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.numFontSize = new System.Windows.Forms.NumericUpDown(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.pnlEditing = new System.Windows.Forms.Panel(); + this.btnEditCancel = new System.Windows.Forms.Button(); + this.btnEditOK = new System.Windows.Forms.Button(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.flowLayoutPanel1.SuspendLayout(); + this.pnlPen.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numFontSize)).BeginInit(); + this.pnlEditing.SuspendLayout(); + this.SuspendLayout(); + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Controls.Add(this.pnlPen); + this.flowLayoutPanel1.Controls.Add(this.pnlEditing); + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(451, 57); + this.flowLayoutPanel1.TabIndex = 0; + // + // pnlPen + // + this.pnlPen.Controls.Add(this.cmbFont); + this.pnlPen.Controls.Add(this.label5); + this.pnlPen.Controls.Add(this.numFontSize); + this.pnlPen.Controls.Add(this.label4); + this.pnlPen.Controls.Add(this.label3); + this.pnlPen.Location = new System.Drawing.Point(0, 0); + this.pnlPen.Margin = new System.Windows.Forms.Padding(0); + this.pnlPen.Name = "pnlPen"; + this.pnlPen.Size = new System.Drawing.Size(278, 35); + this.pnlPen.TabIndex = 0; + // + // cmbFont + // + this.cmbFont.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbFont.DropDownWidth = 230; + this.cmbFont.FormattingEnabled = true; + this.cmbFont.Location = new System.Drawing.Point(3, 13); + this.cmbFont.Name = "cmbFont"; + this.cmbFont.Size = new System.Drawing.Size(170, 20); + this.cmbFont.TabIndex = 14; + this.cmbFont.SelectedIndexChanged += new System.EventHandler(this.cmbFont_SelectedIndexChanged); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("宋体", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.label5.Location = new System.Drawing.Point(3, 2); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(25, 10); + this.label5.TabIndex = 13; + this.label5.Text = "字体"; + // + // numFontSize + // + this.numFontSize.Location = new System.Drawing.Point(197, 13); + this.numFontSize.Name = "numFontSize"; + this.numFontSize.Size = new System.Drawing.Size(54, 21); + this.numFontSize.TabIndex = 10; + this.numFontSize.TabStop = false; + this.numFontSize.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numFontSize.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(252, 16); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(17, 12); + this.label4.TabIndex = 12; + this.label4.Text = "pt"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("宋体", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128))); + this.label3.Location = new System.Drawing.Point(195, 2); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(25, 10); + this.label3.TabIndex = 11; + this.label3.Text = "尺寸"; + // + // pnlEditing + // + this.pnlEditing.Controls.Add(this.btnEditCancel); + this.pnlEditing.Controls.Add(this.btnEditOK); + this.pnlEditing.Location = new System.Drawing.Point(278, 0); + this.pnlEditing.Margin = new System.Windows.Forms.Padding(0); + this.pnlEditing.Name = "pnlEditing"; + this.pnlEditing.Size = new System.Drawing.Size(65, 35); + this.pnlEditing.TabIndex = 1; + // + // btnEditCancel + // + this.btnEditCancel.Location = new System.Drawing.Point(32, 9); + this.btnEditCancel.Name = "btnEditCancel"; + this.btnEditCancel.Size = new System.Drawing.Size(28, 23); + this.btnEditCancel.TabIndex = 1; + this.btnEditCancel.Text = "×"; + this.btnEditCancel.UseVisualStyleBackColor = true; + // + // btnEditOK + // + this.btnEditOK.Location = new System.Drawing.Point(3, 9); + this.btnEditOK.Name = "btnEditOK"; + this.btnEditOK.Size = new System.Drawing.Size(28, 23); + this.btnEditOK.TabIndex = 0; + this.btnEditOK.Text = "○"; + this.btnEditOK.UseVisualStyleBackColor = true; + this.btnEditOK.Click += new System.EventHandler(this.btnEditOK_Click); + // + // ScrapPaintTextTool + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(451, 57); + this.ControlBox = false; + this.Controls.Add(this.flowLayoutPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.MinimumSize = new System.Drawing.Size(292, 59); + this.Name = "ScrapPaintTextTool"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "文字工具"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ScrapPaintTextTool_FormClosing); + this.Shown += new System.EventHandler(this.ScrapPaintTextTool_Shown); + this.flowLayoutPanel1.ResumeLayout(false); + this.pnlPen.ResumeLayout(false); + this.pnlPen.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numFontSize)).EndInit(); + this.pnlEditing.ResumeLayout(false); + this.ResumeLayout(false); + + } + + // Token: 0x04000336 RID: 822 + private global::System.ComponentModel.IContainer components; + + // Token: 0x04000337 RID: 823 + private global::System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + + // Token: 0x04000338 RID: 824 + private global::System.Windows.Forms.Panel pnlPen; + + // Token: 0x04000339 RID: 825 + private global::System.Windows.Forms.NumericUpDown numFontSize; + + // Token: 0x0400033A RID: 826 + private global::System.Windows.Forms.Label label4; + + // Token: 0x0400033B RID: 827 + private global::System.Windows.Forms.Label label3; + + // Token: 0x0400033C RID: 828 + private global::System.Windows.Forms.ToolTip toolTip1; + + // Token: 0x0400033D RID: 829 + private global::System.Windows.Forms.ComboBox cmbFont; + + // Token: 0x0400033E RID: 830 + private global::System.Windows.Forms.Label label5; + + // Token: 0x0400033F RID: 831 + private global::System.Windows.Forms.Panel pnlEditing; + + // Token: 0x04000340 RID: 832 + private global::System.Windows.Forms.Button btnEditCancel; + + // Token: 0x04000341 RID: 833 + private global::System.Windows.Forms.Button btnEditOK; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintTextTool.cs b/SETUNA/Main/StyleItems/ScrapPaintTextTool.cs new file mode 100644 index 0000000..e791607 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintTextTool.cs @@ -0,0 +1,81 @@ +using System; +using System.Drawing; +using System.Drawing.Text; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000099 RID: 153 + public partial class ScrapPaintTextTool : BaseForm + { + // Token: 0x06000509 RID: 1289 RVA: 0x00023964 File Offset: 0x00021B64 + public ScrapPaintTextTool(TextTool textTool) + { + InitializeComponent(); + pnlEditing.Visible = false; + _texttool = textTool; + _edit = null; + _texttool.Editing += _texttool_Editing; + _texttool.ChangedFont += SetFont; + } + + // Token: 0x0600050A RID: 1290 RVA: 0x000239C5 File Offset: 0x00021BC5 + private void _texttool_Editing(bool value, TextBox edit) + { + pnlEditing.Visible = value; + _edit = edit; + } + + // Token: 0x0600050B RID: 1291 RVA: 0x000239DC File Offset: 0x00021BDC + private void ScrapPaintTextTool_Shown(object sender, EventArgs e) + { + var installedFontCollection = new InstalledFontCollection(); + foreach (var fontFamily in installedFontCollection.Families) + { + cmbFont.Items.Add(fontFamily.Name); + } + } + + // Token: 0x0600050C RID: 1292 RVA: 0x00023A1F File Offset: 0x00021C1F + private void ScrapPaintTextTool_FormClosing(object sender, FormClosingEventArgs e) + { + if (e.CloseReason == CloseReason.UserClosing) + { + e.Cancel = true; + } + } + + // Token: 0x0600050D RID: 1293 RVA: 0x00023A31 File Offset: 0x00021C31 + private void btnEditOK_Click(object sender, EventArgs e) + { + _texttool.EditEnd(); + } + + // Token: 0x0600050E RID: 1294 RVA: 0x00023A40 File Offset: 0x00021C40 + private void cmbFont_SelectedIndexChanged(object sender, EventArgs e) + { + if (!pnlEditing.Visible) + { + return; + } + if (_edit != null) + { + _edit.Font = new Font((string)cmbFont.SelectedItem, _edit.Font.Size); + } + } + + // Token: 0x0600050F RID: 1295 RVA: 0x00023A93 File Offset: 0x00021C93 + public void SetFont(Font font) + { + cmbFont.SelectedItem = font.Name; + numFontSize.Value = (decimal)font.Size; + _texttool.ReloadCommand(); + } + + // Token: 0x04000334 RID: 820 + private TextTool _texttool; + + // Token: 0x04000335 RID: 821 + private TextBox _edit; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintTextTool.resx b/SETUNA/Main/StyleItems/ScrapPaintTextTool.resx new file mode 100644 index 0000000..2716703 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintTextTool.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScrapPaintToolBar.Designer.cs b/SETUNA/Main/StyleItems/ScrapPaintToolBar.Designer.cs new file mode 100644 index 0000000..5f635be --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintToolBar.Designer.cs @@ -0,0 +1,224 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000024 RID: 36 + partial class ScrapPaintToolBar + { + // Token: 0x06000181 RID: 385 RVA: 0x0000895F File Offset: 0x00006B5F + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x06000182 RID: 386 RVA: 0x00008980 File Offset: 0x00006B80 + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.picColorA = new System.Windows.Forms.PictureBox(); + this.picColorB = new System.Windows.Forms.PictureBox(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.chkPen = new System.Windows.Forms.CheckBox(); + this.chkText = new System.Windows.Forms.CheckBox(); + this.chkErase = new System.Windows.Forms.CheckBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picColorA)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.picColorB)).BeginInit(); + this.tableLayoutPanel2.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0); + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 81.70213F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 18.29787F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(46, 263); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel1 + // + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel1.Controls.Add(this.picColorA); + this.panel1.Controls.Add(this.picColorB); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(2, 216); + this.panel1.Margin = new System.Windows.Forms.Padding(2); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(42, 45); + this.panel1.TabIndex = 1; + // + // picColorA + // + this.picColorA.BackColor = System.Drawing.Color.White; + this.picColorA.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.picColorA.Cursor = System.Windows.Forms.Cursors.Hand; + this.picColorA.Location = new System.Drawing.Point(6, 5); + this.picColorA.Name = "picColorA"; + this.picColorA.Size = new System.Drawing.Size(26, 26); + this.picColorA.TabIndex = 0; + this.picColorA.TabStop = false; + this.toolTip1.SetToolTip(this.picColorA, "前景色"); + this.picColorA.BackColorChanged += new System.EventHandler(this.picColorA_BackColorChanged); + this.picColorA.Click += new System.EventHandler(this.picColorA_Click); + // + // picColorB + // + this.picColorB.BackColor = System.Drawing.Color.Black; + this.picColorB.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.picColorB.Cursor = System.Windows.Forms.Cursors.Hand; + this.picColorB.Location = new System.Drawing.Point(22, 19); + this.picColorB.Name = "picColorB"; + this.picColorB.Size = new System.Drawing.Size(26, 26); + this.picColorB.TabIndex = 1; + this.picColorB.TabStop = false; + this.toolTip1.SetToolTip(this.picColorB, "背景色"); + this.picColorB.Click += new System.EventHandler(this.picColorB_Click); + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 1; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 28F)); + this.tableLayoutPanel2.Controls.Add(this.chkPen, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.chkText, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.chkErase, 0, 1); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 4; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(40, 208); + this.tableLayoutPanel2.TabIndex = 2; + // + // chkPen + // + this.chkPen.Appearance = System.Windows.Forms.Appearance.Button; + this.chkPen.AutoCheck = false; + this.chkPen.Dock = System.Windows.Forms.DockStyle.Fill; + this.chkPen.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.chkPen.Image = global::SETUNA.Properties.Resources.pi_pen; + this.chkPen.ImageAlign = System.Drawing.ContentAlignment.BottomCenter; + this.chkPen.Location = new System.Drawing.Point(1, 1); + this.chkPen.Margin = new System.Windows.Forms.Padding(1); + this.chkPen.Name = "chkPen"; + this.chkPen.Size = new System.Drawing.Size(38, 28); + this.chkPen.TabIndex = 4; + this.toolTip1.SetToolTip(this.chkPen, "笔工具"); + this.chkPen.UseVisualStyleBackColor = true; + this.chkPen.Click += new System.EventHandler(this.chkPen_Click); + // + // chkText + // + this.chkText.Appearance = System.Windows.Forms.Appearance.Button; + this.chkText.AutoCheck = false; + this.chkText.Dock = System.Windows.Forms.DockStyle.Fill; + this.chkText.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.chkText.Image = global::SETUNA.Properties.Resources.pi_text; + this.chkText.ImageAlign = System.Drawing.ContentAlignment.BottomCenter; + this.chkText.Location = new System.Drawing.Point(1, 61); + this.chkText.Margin = new System.Windows.Forms.Padding(1); + this.chkText.Name = "chkText"; + this.chkText.Size = new System.Drawing.Size(38, 28); + this.chkText.TabIndex = 8; + this.toolTip1.SetToolTip(this.chkText, "文本工具"); + this.chkText.UseVisualStyleBackColor = true; + this.chkText.Click += new System.EventHandler(this.chkPen_Click); + // + // chkErase + // + this.chkErase.Appearance = System.Windows.Forms.Appearance.Button; + this.chkErase.AutoCheck = false; + this.chkErase.Dock = System.Windows.Forms.DockStyle.Fill; + this.chkErase.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.chkErase.Image = global::SETUNA.Properties.Resources.pi_erase; + this.chkErase.ImageAlign = System.Drawing.ContentAlignment.BottomCenter; + this.chkErase.Location = new System.Drawing.Point(1, 31); + this.chkErase.Margin = new System.Windows.Forms.Padding(1); + this.chkErase.Name = "chkErase"; + this.chkErase.Size = new System.Drawing.Size(38, 28); + this.chkErase.TabIndex = 5; + this.toolTip1.SetToolTip(this.chkErase, "橡皮擦工具"); + this.chkErase.UseVisualStyleBackColor = true; + this.chkErase.Click += new System.EventHandler(this.chkPen_Click); + // + // colorDialog1 + // + this.colorDialog1.FullOpen = true; + // + // ScrapPaintToolBar + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(50, 288); + this.ControlBox = false; + this.Controls.Add(this.tableLayoutPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.KeyPreview = true; + this.MinimumSize = new System.Drawing.Size(52, 290); + this.Name = "ScrapPaintToolBar"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "工具"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ScrapPaintToolBar_FormClosing); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.picColorA)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.picColorB)).EndInit(); + this.tableLayoutPanel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + // Token: 0x040000AB RID: 171 + private global::System.ComponentModel.IContainer components; + + // Token: 0x040000AC RID: 172 + private global::System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + + // Token: 0x040000AD RID: 173 + private global::System.Windows.Forms.ToolTip toolTip1; + + // Token: 0x040000AE RID: 174 + private global::System.Windows.Forms.CheckBox chkPen; + + // Token: 0x040000AF RID: 175 + private global::System.Windows.Forms.Panel panel1; + + // Token: 0x040000B0 RID: 176 + private global::System.Windows.Forms.PictureBox picColorB; + + // Token: 0x040000B1 RID: 177 + private global::System.Windows.Forms.PictureBox picColorA; + + // Token: 0x040000B2 RID: 178 + private global::System.Windows.Forms.ColorDialog colorDialog1; + + // Token: 0x040000B3 RID: 179 + private global::System.Windows.Forms.CheckBox chkErase; + + // Token: 0x040000B4 RID: 180 + private global::System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + + // Token: 0x040000B5 RID: 181 + private global::System.Windows.Forms.CheckBox chkText; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintToolBar.cs b/SETUNA/Main/StyleItems/ScrapPaintToolBar.cs new file mode 100644 index 0000000..d969db5 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintToolBar.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000024 RID: 36 + public partial class ScrapPaintToolBar : BaseForm + { + // Token: 0x14000012 RID: 18 + // (add) Token: 0x06000183 RID: 387 RVA: 0x0000922E File Offset: 0x0000742E + // (remove) Token: 0x06000184 RID: 388 RVA: 0x00009247 File Offset: 0x00007447 + public event ScrapPaintToolBar.SelectToolDelegate SelectTool; + + // Token: 0x17000049 RID: 73 + // (get) Token: 0x06000186 RID: 390 RVA: 0x0000926E File Offset: 0x0000746E + // (set) Token: 0x06000185 RID: 389 RVA: 0x00009260 File Offset: 0x00007460 + public Color ColorA + { + get => picColorA.BackColor; + set => picColorA.BackColor = value; + } + + // Token: 0x1700004A RID: 74 + // (get) Token: 0x06000188 RID: 392 RVA: 0x00009289 File Offset: 0x00007489 + // (set) Token: 0x06000187 RID: 391 RVA: 0x0000927B File Offset: 0x0000747B + public Color ColorB + { + get => picColorB.BackColor; + set => picColorB.BackColor = value; + } + + // Token: 0x06000189 RID: 393 RVA: 0x00009298 File Offset: 0x00007498 + public ScrapPaintToolBar(ScrapPaintWindow parent) + { + _parent = parent; + InitializeComponent(); + activeTool = null; + tools = new List + { + chkPen, + chkErase, + chkText + }; + } + + // Token: 0x0600018A RID: 394 RVA: 0x00009300 File Offset: 0x00007500 + public void SwitchTool(ScrapPaintToolBar.ToolKind kind) + { + switch (kind) + { + case ScrapPaintToolBar.ToolKind.笔工具: + chkPen_Click(chkPen, null); + return; + case ScrapPaintToolBar.ToolKind.消しゴム工具: + chkPen_Click(chkErase, null); + return; + case ScrapPaintToolBar.ToolKind.文字工具: + chkPen_Click(chkText, null); + return; + default: + return; + } + } + + // Token: 0x0600018B RID: 395 RVA: 0x0000934C File Offset: 0x0000754C + private void SelecionTool() + { + if (chkPen.Checked) + { + OnSelectTool(new PenTool(ColorA, _parent)); + return; + } + if (chkErase.Checked) + { + OnSelectTool(new PenTool(PenTool.EraseColor, _parent)); + return; + } + if (chkText.Checked) + { + OnSelectTool(new TextTool(_parent)); + return; + } + OnSelectTool(null); + } + + // Token: 0x0600018C RID: 396 RVA: 0x000093C8 File Offset: 0x000075C8 + private void OnSelectTool(PaintTool tool) + { + activeTool = tool; + if (activeTool != null) + { + activeTool.ShowToolBar(_parent); + _parent.Activate(); + } + if (SelectTool != null) + { + SelectTool(tool); + } + } + + // Token: 0x0600018D RID: 397 RVA: 0x00009414 File Offset: 0x00007614 + private void chkPen_Click(object sender, EventArgs e) + { + CheckBox obj = null; + foreach (var checkBox in tools) + { + if (checkBox.Checked) + { + obj = checkBox; + break; + } + } + CheckBox checkBox2 = null; + foreach (var checkBox3 in tools) + { + if (checkBox3.Equals(sender)) + { + checkBox3.Checked = true; + checkBox2 = checkBox3; + } + else + { + checkBox3.Checked = false; + } + } + if (checkBox2 != null && !checkBox2.Equals(obj)) + { + SelecionTool(); + } + } + + // Token: 0x0600018E RID: 398 RVA: 0x000094DC File Offset: 0x000076DC + private void picColorA_Click(object sender, EventArgs e) + { + colorDialog1.Color = picColorA.BackColor; + if (colorDialog1.ShowDialog() == DialogResult.OK) + { + picColorA.BackColor = colorDialog1.Color; + } + } + + // Token: 0x0600018F RID: 399 RVA: 0x00009518 File Offset: 0x00007718 + private void picColorB_Click(object sender, EventArgs e) + { + colorDialog1.Color = picColorB.BackColor; + if (colorDialog1.ShowDialog() == DialogResult.OK) + { + picColorB.BackColor = colorDialog1.Color; + } + } + + // Token: 0x06000190 RID: 400 RVA: 0x00009554 File Offset: 0x00007754 + public void ChangeColor() + { + var backColor = picColorA.BackColor; + picColorA.BackColor = picColorB.BackColor; + picColorB.BackColor = backColor; + } + + // Token: 0x06000191 RID: 401 RVA: 0x0000958F File Offset: 0x0000778F + private void picColorA_BackColorChanged(object sender, EventArgs e) + { + if (activeTool != null) + { + activeTool.ChangeColor(ColorA); + } + } + + // Token: 0x06000192 RID: 402 RVA: 0x000095AA File Offset: 0x000077AA + private void ScrapPaintToolBar_FormClosing(object sender, FormClosingEventArgs e) + { + if (e.CloseReason == CloseReason.UserClosing) + { + e.Cancel = true; + } + } + + // Token: 0x040000B7 RID: 183 + private ScrapPaintWindow _parent; + + // Token: 0x040000B8 RID: 184 + private List tools; + + // Token: 0x040000B9 RID: 185 + private PaintTool activeTool; + + // Token: 0x02000025 RID: 37 + // (Invoke) Token: 0x06000194 RID: 404 + public delegate void SelectToolDelegate(PaintTool tool); + + // Token: 0x02000026 RID: 38 + public enum ToolKind + { + // Token: 0x040000BB RID: 187 + 笔工具, + // Token: 0x040000BC RID: 188 + 消しゴム工具, + // Token: 0x040000BD RID: 189 + 文字工具 + } + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintToolBar.resx b/SETUNA/Main/StyleItems/ScrapPaintToolBar.resx new file mode 100644 index 0000000..1b05e72 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintToolBar.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 118, 17 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ScrapPaintWindow.Designer.cs b/SETUNA/Main/StyleItems/ScrapPaintWindow.Designer.cs new file mode 100644 index 0000000..6f34876 --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintWindow.Designer.cs @@ -0,0 +1,20 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000017 RID: 23 + partial class ScrapPaintWindow + { + // Token: 0x06000118 RID: 280 RVA: 0x00007B1C File Offset: 0x00005D1C + private void InitializeComponent() + { + this.SuspendLayout(); + // + // ScrapPaintWindow + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(292, 266); + this.Name = "ScrapPaintWindow"; + this.ResumeLayout(false); + + } + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintWindow.cs b/SETUNA/Main/StyleItems/ScrapPaintWindow.cs new file mode 100644 index 0000000..eb269df --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintWindow.cs @@ -0,0 +1,290 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000017 RID: 23 + public sealed partial class ScrapPaintWindow : ScrapDrawForm + { + // Token: 0x06000106 RID: 262 RVA: 0x00007664 File Offset: 0x00005864 + public ScrapPaintWindow(ScrapBase scrap) : base(scrap) + { + base.SetStyle(ControlStyles.UserPaint, true); + base.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + isToolUse = false; + activeTool = null; + historyCommand = new List(); + toolFrm = new ScrapPaintToolBar(this); + toolFrm.KeyUp += layerForm_KeyUp; + toolFrm.SelectTool += toolFrm_SelectTool; + base.AddOwnedForm(toolFrm); + layerForm = new ScrapPaintLayer(this); + layerForm.KeyUp += layerForm_KeyUp; + layerForm.SelectLayer += layerForm_SelectLayer; + layerForm.LayerRefresh += layerForm_LayerRefresh; + base.AddOwnedForm(layerForm); + activeLayer = layerForm.SelectionLayer; + } + + // Token: 0x06000107 RID: 263 RVA: 0x00007759 File Offset: 0x00005959 + private void ScrapPaintWindow_Shown(object sender, EventArgs e) + { + } + + // Token: 0x06000108 RID: 264 RVA: 0x0000775B File Offset: 0x0000595B + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + toolFrm.SwitchTool(ScrapPaintToolBar.ToolKind.笔工具); + } + + // Token: 0x06000109 RID: 265 RVA: 0x00007770 File Offset: 0x00005970 + private void toolFrm_SelectTool(PaintTool tool) + { + if (activeTool != null) + { + activeTool.Dispose(); + activeTool = null; + } + activeTool = tool; + if (activeTool != null) + { + activeTool.Started += activeTool_Started; + activeTool.Finished += activeTool_Finished; + } + ToolEditCheck(); + } + + // Token: 0x0600010A RID: 266 RVA: 0x000077DA File Offset: 0x000059DA + private void layerForm_SelectLayer(ScrapPaintLayerItem layerCtrl) + { + activeLayer = layerCtrl; + ToolEditCheck(); + } + + // Token: 0x0600010B RID: 267 RVA: 0x000077E9 File Offset: 0x000059E9 + private void layerForm_LayerRefresh(ScrapPaintLayerItem layerCtrl) + { + Refresh(); + } + + // Token: 0x0600010C RID: 268 RVA: 0x000077F1 File Offset: 0x000059F1 + private void activeTool_Started(ToolCommand command) + { + isToolUse = true; + } + + // Token: 0x0600010D RID: 269 RVA: 0x000077FA File Offset: 0x000059FA + private void activeTool_Finished(ToolCommand command) + { + isToolUse = false; + historyCommand.Add(command); + activeLayer.AddCommand(command); + } + + // Token: 0x0600010E RID: 270 RVA: 0x0000781B File Offset: 0x00005A1B + private void ToolEditCheck() + { + if (activeLayer != null) + { + if (activeLayer.IsEditableTool(activeTool)) + { + Cursor = Cursors.Cross; + return; + } + Cursor = Cursors.No; + } + } + + // Token: 0x0600010F RID: 271 RVA: 0x00007850 File Offset: 0x00005A50 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + e.Graphics.DrawImageUnscaled(_scrap.Image, base.BasePoint); + layerForm.Draw(e.Graphics); + if (activeTool != null) + { + activeTool.Draw(e.Graphics); + } + } + + // Token: 0x06000110 RID: 272 RVA: 0x000078AC File Offset: 0x00005AAC + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + toolFrm.Top = base.Top; + toolFrm.Left = base.Left - toolFrm.Width - 20; + toolFrm.Show(); + layerForm.Top = base.Bottom - layerForm.Height; + layerForm.Left = base.Right + 20; + layerForm.Show(); + } + + // Token: 0x06000111 RID: 273 RVA: 0x00007938 File Offset: 0x00005B38 + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + if (Cursor != Cursors.No) + { + if (activeTool != null) + { + activeTool.MouseDown(e); + } + Refresh(); + } + } + + // Token: 0x06000112 RID: 274 RVA: 0x0000796D File Offset: 0x00005B6D + protected override void OnMouseUp(MouseEventArgs e) + { + base.OnMouseUp(e); + if (Cursor != Cursors.No) + { + if (activeTool != null) + { + activeTool.MouseUp(e); + } + Refresh(); + } + } + + // Token: 0x06000113 RID: 275 RVA: 0x000079A2 File Offset: 0x00005BA2 + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + if (Cursor != Cursors.No) + { + if (activeTool != null) + { + activeTool.MouseMove(e); + } + Refresh(); + } + } + + // Token: 0x06000114 RID: 276 RVA: 0x000079D7 File Offset: 0x00005BD7 + protected override void OnKeyUp(KeyEventArgs e) + { + base.OnKeyUp(e); + KeyInput(e); + } + + // Token: 0x06000115 RID: 277 RVA: 0x000079E7 File Offset: 0x00005BE7 + private void layerForm_KeyUp(object sender, KeyEventArgs e) + { + KeyInput(e); + } + + // Token: 0x06000116 RID: 278 RVA: 0x000079F0 File Offset: 0x00005BF0 + private void KeyInput(KeyEventArgs e) + { + if (isToolUse && Cursor != Cursors.No) + { + if (activeTool != null) + { + activeTool.KeyUp(e); + } + Refresh(); + return; + } + if (e.KeyCode == Keys.Z && e.Control) + { + UndoCommand(); + return; + } + if (e.KeyCode == Keys.N && e.Control) + { + layerForm.AddLayer(); + return; + } + if (e.KeyCode == Keys.B) + { + toolFrm.SwitchTool(ScrapPaintToolBar.ToolKind.笔工具); + return; + } + if (e.KeyCode == Keys.E) + { + toolFrm.SwitchTool(ScrapPaintToolBar.ToolKind.消しゴム工具); + return; + } + if (e.KeyCode == Keys.X && activeTool != null && !activeTool.IsActive) + { + toolFrm.ChangeColor(); + } + } + + // Token: 0x06000117 RID: 279 RVA: 0x00007AC4 File Offset: 0x00005CC4 + private void UndoCommand() + { + if (historyCommand.Count == 0) + { + return; + } + var toolCommand = historyCommand[historyCommand.Count - 1]; + historyCommand.Remove(toolCommand); + if (toolCommand.Parent != null) + { + toolCommand.Parent.RemoveCommand(toolCommand); + } + } + + // Token: 0x06000119 RID: 281 RVA: 0x00007B6B File Offset: 0x00005D6B + public int SelectionLayerIndex() + { + return layerForm.SelectionIndex; + } + + // Token: 0x0600011A RID: 282 RVA: 0x00007B78 File Offset: 0x00005D78 + public void AddLayerCommand(AddLayerCommand addCmd) + { + if (layerForm != null) + { + historyCommand.Add(addCmd); + if (!addCmd.IsEvent) + { + addCmd.AddLayer += layerForm.addCmd_AddLayer; + } + layerForm.AddCommand(addCmd); + } + } + + // Token: 0x0600011B RID: 283 RVA: 0x00007BC4 File Offset: 0x00005DC4 + public void DeleteLayerCommand(DeleteLayerCommand delCmd) + { + if (layerForm != null) + { + historyCommand.Add(delCmd); + layerForm.AddCommand(delCmd); + } + } + + // Token: 0x0600011C RID: 284 RVA: 0x00007BE6 File Offset: 0x00005DE6 + public void RenameLayerCommand(RenameLayerCommand renameCmd) + { + if (layerForm != null) + { + historyCommand.Add(renameCmd); + layerForm.AddCommand(renameCmd); + } + } + + // Token: 0x04000087 RID: 135 + private PaintTool activeTool; + + // Token: 0x04000088 RID: 136 + private ScrapPaintToolBar toolFrm; + + // Token: 0x04000089 RID: 137 + private ScrapPaintLayer layerForm; + + // Token: 0x0400008A RID: 138 + private ScrapPaintLayerItem activeLayer; + + // Token: 0x0400008B RID: 139 + private List historyCommand; + + // Token: 0x0400008C RID: 140 + private bool isToolUse; + } +} diff --git a/SETUNA/Main/StyleItems/ScrapPaintWindow.resx b/SETUNA/Main/StyleItems/ScrapPaintWindow.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/ScrapPaintWindow.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/StyleItemDictionary.cs b/SETUNA/Main/StyleItems/StyleItemDictionary.cs new file mode 100644 index 0000000..69295f2 --- /dev/null +++ b/SETUNA/Main/StyleItems/StyleItemDictionary.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000068 RID: 104 + public class StyleItemDictionary + { + // Token: 0x0600039D RID: 925 RVA: 0x0001627C File Offset: 0x0001447C + protected StyleItemDictionary() + { + } + + // Token: 0x0600039E RID: 926 RVA: 0x00016284 File Offset: 0x00014484 + public static CStyleItem[] GetAllStyleItems() + { + return new List + { + new CMoveStyleItem(), + new CScaleStyleItem(), + new CMarginStyleItem(), + new COpacityStyleItem(), + new CCloseStyleItem(), + new CRotateStyleItem(), + new CCopyStyleItem(), + new CPasteStyleItem(), + new CImageBmpStyleItem(), + new CImageJpegStyleItem(), + new CImagePngStyleItem(), + new CCompactStyleItem(), + new CTrimStyleItem(), + new CPicasaUploaderStyleItem() + }.ToArray(); + } + + // Token: 0x0600039F RID: 927 RVA: 0x00016338 File Offset: 0x00014538 + public static Type[] GetStyleType() + { + var list = new List(); + var allStyleItems = StyleItemDictionary.GetAllStyleItems(); + for (var i = 0; i < allStyleItems.Length; i++) + { + list.Add(allStyleItems[i].GetType()); + } + return list.ToArray(); + } + + public static bool CanRestore(Type styleType) + { + if (!styleType?.IsSubclassOf(typeof(CStyleItem)) ?? false) + { + return false; + } + + if (styleType == typeof(CScaleStyleItem)) + { + return true; + } + + if (styleType == typeof(CMarginStyleItem)) + { + return true; + } + + if (styleType == typeof(COpacityStyleItem)) + { + return true; + } + + if (styleType == typeof(CRotateStyleItem)) + { + return true; + } + + if (styleType == typeof(CCompactStyleItem)) + { + return true; + } + + return false; + } + } +} diff --git a/SETUNA/Main/StyleItems/TextTool.cs b/SETUNA/Main/StyleItems/TextTool.cs new file mode 100644 index 0000000..e05de9d --- /dev/null +++ b/SETUNA/Main/StyleItems/TextTool.cs @@ -0,0 +1,221 @@ +using System; +using System.Drawing; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200009A RID: 154 + public class TextTool : PaintTool + { + // Token: 0x14000018 RID: 24 + // (add) Token: 0x06000512 RID: 1298 RVA: 0x000241F3 File Offset: 0x000223F3 + // (remove) Token: 0x06000513 RID: 1299 RVA: 0x0002420C File Offset: 0x0002240C + public event TextTool.BoolDelegate Editing; + + // Token: 0x14000019 RID: 25 + // (add) Token: 0x06000514 RID: 1300 RVA: 0x00024225 File Offset: 0x00022425 + // (remove) Token: 0x06000515 RID: 1301 RVA: 0x0002423E File Offset: 0x0002243E + public event TextTool.FontDelegate ChangedFont; + + // Token: 0x06000516 RID: 1302 RVA: 0x00024258 File Offset: 0x00022458 + public TextTool(ScrapPaintWindow parent) : base(parent) + { + Text = ""; + TextFont = new Font("Arial", 10f); + StartPoint = Point.Empty; + parentCommand = null; + cmd = null; + textbox = new TextTool.TextArea(); + ClearCommand(); + } + + // Token: 0x06000517 RID: 1303 RVA: 0x000242B6 File Offset: 0x000224B6 + protected override ToolCommand GetCommand() + { + cmd.Parent = parentCommand; + cmd.Text = textbox.Text; + cmd.Font = TextFont; + return cmd; + } + + // Token: 0x06000518 RID: 1304 RVA: 0x000242F6 File Offset: 0x000224F6 + protected override void ClearCommand() + { + if (cmd != null) + { + cmd.Dispose(); + } + cmd = new TextToolCommand(Text, TextFont, StartPoint); + } + + // Token: 0x06000519 RID: 1305 RVA: 0x00024328 File Offset: 0x00022528 + public override void MouseUp(MouseEventArgs e) + { + if (!base.IsActive) + { + StartPoint = e.Location; + textbox.Clear(); + ResetTextBox(); + ClearCommand(); + base.Start(); + parentCommand = new AddTextLayerCommand("文字层", _parent.SelectionLayerIndex()); + _parent.AddLayerCommand(parentCommand); + textbox.Parent = _parent; + _parent.Controls.Add(textbox); + if (Editing != null) + { + Editing(true, textbox); + } + textbox.Focus(); + return; + } + EditEnd(); + } + + // Token: 0x0600051A RID: 1306 RVA: 0x000243EC File Offset: 0x000225EC + public void EditEnd() + { + if (base.IsActive) + { + if (textbox != null) + { + TextFont = textbox.Font; + } + base.End(); + if (textbox != null) + { + _parent.Controls.Remove(textbox); + } + if (Editing != null) + { + Editing(false, null); + } + } + } + + // Token: 0x0600051B RID: 1307 RVA: 0x00024453 File Offset: 0x00022653 + public override void KeyUp(KeyEventArgs e) + { + if (e.KeyCode == Keys.Return) + { + base.End(); + _parent.Controls.Remove(textbox); + } + } + + // Token: 0x0600051C RID: 1308 RVA: 0x0002447B File Offset: 0x0002267B + public void ResetTextBox() + { + if (textbox != null) + { + textbox.Font = TextFont; + textbox.Location = StartPoint; + } + } + + // Token: 0x0600051D RID: 1309 RVA: 0x000244A7 File Offset: 0x000226A7 + public override void Dispose() + { + base.Dispose(); + if (textbox != null) + { + _parent.Controls.Remove(textbox); + textbox.Dispose(); + textbox = null; + } + parentCommand = null; + } + + // Token: 0x170000B7 RID: 183 + // (get) Token: 0x0600051E RID: 1310 RVA: 0x000244E6 File Offset: 0x000226E6 + public override ScrapPaintToolBar.ToolKind GetToolType => ScrapPaintToolBar.ToolKind.文字工具; + + // Token: 0x0600051F RID: 1311 RVA: 0x000244EC File Offset: 0x000226EC + public override void ShowToolBar(Form parent) + { + base.ShowToolBar(parent); + frm = new ScrapPaintTextTool(this) + { + Left = parent.Left + }; + frm.Top = parent.Top - frm.Height - 20; + parent.AddOwnedForm(frm); + frm.Show(); + parent.AddOwnedForm(frm); + } + + // Token: 0x06000520 RID: 1312 RVA: 0x00024560 File Offset: 0x00022760 + public void SetFont(Font font) + { + TextFont = font; + if (ChangedFont != null) + { + ChangedFont(font); + } + } + + // Token: 0x04000342 RID: 834 + private string Text; + + // Token: 0x04000343 RID: 835 + private Font TextFont; + + // Token: 0x04000344 RID: 836 + private Point StartPoint; + + // Token: 0x04000345 RID: 837 + private AddTextLayerCommand parentCommand; + + // Token: 0x04000346 RID: 838 + private TextToolCommand cmd; + + // Token: 0x04000347 RID: 839 + private TextTool.TextArea textbox; + + // Token: 0x04000348 RID: 840 + private ScrapPaintTextTool frm; + + // Token: 0x0200009B RID: 155 + // (Invoke) Token: 0x06000522 RID: 1314 + public delegate void BoolDelegate(bool value, TextBox edit); + + // Token: 0x0200009C RID: 156 + // (Invoke) Token: 0x06000526 RID: 1318 + public delegate void FontDelegate(Font font); + + // Token: 0x0200009D RID: 157 + public class TextArea : TextBox + { + // Token: 0x06000529 RID: 1321 RVA: 0x0002457D File Offset: 0x0002277D + public TextArea() + { + base.WordWrap = false; + Multiline = true; + Text = ""; + AreaResize(); + } + + // Token: 0x0600052A RID: 1322 RVA: 0x000245A4 File Offset: 0x000227A4 + protected override void OnTextChanged(EventArgs e) + { + base.OnTextChanged(e); + AreaResize(); + } + + // Token: 0x0600052B RID: 1323 RVA: 0x000245B3 File Offset: 0x000227B3 + protected override void OnFontChanged(EventArgs e) + { + base.OnFontChanged(e); + AreaResize(); + } + + // Token: 0x0600052C RID: 1324 RVA: 0x000245C2 File Offset: 0x000227C2 + private void AreaResize() + { + base.SuspendLayout(); + base.Size = base.PreferredSize; + base.ResumeLayout(); + } + } + } +} diff --git a/SETUNA/Main/StyleItems/TextToolCommand.cs b/SETUNA/Main/StyleItems/TextToolCommand.cs new file mode 100644 index 0000000..f1a51d3 --- /dev/null +++ b/SETUNA/Main/StyleItems/TextToolCommand.cs @@ -0,0 +1,54 @@ +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200009F RID: 159 + public class TextToolCommand : ToolCommand + { + // Token: 0x170000B8 RID: 184 + // (get) Token: 0x06000533 RID: 1331 RVA: 0x00024626 File Offset: 0x00022826 + // (set) Token: 0x06000532 RID: 1330 RVA: 0x0002461D File Offset: 0x0002281D + public string Text + { + get => _text; + set => _text = value; + } + + // Token: 0x170000B9 RID: 185 + // (get) Token: 0x06000534 RID: 1332 RVA: 0x0002462E File Offset: 0x0002282E + // (set) Token: 0x06000535 RID: 1333 RVA: 0x00024636 File Offset: 0x00022836 + public Font Font + { + get => _font; + set => _font = value; + } + + // Token: 0x06000536 RID: 1334 RVA: 0x0002463F File Offset: 0x0002283F + public TextToolCommand(string text, Font font, int x, int y) + { + _text = text; + _font = font; + _location = new Point(x, y); + } + + // Token: 0x06000537 RID: 1335 RVA: 0x00024663 File Offset: 0x00022863 + public TextToolCommand(string text, Font font, Point location) : this(text, font, location.X, location.Y) + { + } + + // Token: 0x06000538 RID: 1336 RVA: 0x0002467B File Offset: 0x0002287B + public override void Draw(Graphics g) + { + g.DrawString(_text, _font, Brushes.SkyBlue, _location); + } + + // Token: 0x0400034C RID: 844 + private string _text; + + // Token: 0x0400034D RID: 845 + private Font _font; + + // Token: 0x0400034E RID: 846 + private Point _location; + } +} diff --git a/SETUNA/Main/StyleItems/TimerStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/TimerStyleItemPanel.Designer.cs new file mode 100644 index 0000000..ad55bda --- /dev/null +++ b/SETUNA/Main/StyleItems/TimerStyleItemPanel.Designer.cs @@ -0,0 +1,92 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000096 RID: 150 + partial class TimerStyleItemPanel + { + // Token: 0x060004F6 RID: 1270 RVA: 0x0002349C File Offset: 0x0002169C + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label2 = new System.Windows.Forms.Label(); + this.numInterval = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numInterval)).BeginInit(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(66, 109); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(142, 109); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.numInterval); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(205, 93); + this.groupBox1.TabIndex = 2; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(147, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(17, 12); + this.label2.TabIndex = 2; + this.label2.Text = "ms"; + // + // numInterval + // + this.numInterval.ImeMode = System.Windows.Forms.ImeMode.Off; + this.numInterval.Location = new System.Drawing.Point(84, 39); + this.numInterval.Name = "numInterval"; + this.numInterval.Size = new System.Drawing.Size(60, 21); + this.numInterval.TabIndex = 1; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(26, 41); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 12); + this.label1.TabIndex = 0; + this.label1.Text = "延迟:"; + // + // TimerStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(220, 141); + this.Controls.Add(this.groupBox1); + this.Name = "TimerStyleItemPanel"; + this.Controls.SetChildIndex(this.groupBox1, 0); + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numInterval)).EndInit(); + this.ResumeLayout(false); + + } + + // Token: 0x04000330 RID: 816 + private global::System.Windows.Forms.Label label2; + + // Token: 0x04000331 RID: 817 + private global::System.Windows.Forms.NumericUpDown numInterval; + + // Token: 0x04000332 RID: 818 + private global::System.Windows.Forms.Label label1; + + // Token: 0x04000333 RID: 819 + private global::System.Windows.Forms.GroupBox groupBox1; + } +} diff --git a/SETUNA/Main/StyleItems/TimerStyleItemPanel.cs b/SETUNA/Main/StyleItems/TimerStyleItemPanel.cs new file mode 100644 index 0000000..5a9a06c --- /dev/null +++ b/SETUNA/Main/StyleItems/TimerStyleItemPanel.cs @@ -0,0 +1,30 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000096 RID: 150 + internal partial class TimerStyleItemPanel : ToolBoxForm + { + // Token: 0x060004F5 RID: 1269 RVA: 0x00023490 File Offset: 0x00021690 + public TimerStyleItemPanel(CStyleItem item) : base(item) + { + } + + // Token: 0x060004F7 RID: 1271 RVA: 0x00023784 File Offset: 0x00021984 + protected override void SetStyleToForm(object style) + { + var ctimerStyleItem = (CTimerStyleItem)style; + InitializeComponent(); + numInterval.Minimum = CTimerStyleItem.MIN_INTERVAL; + numInterval.Maximum = CTimerStyleItem.MAX_INTERVAL; + numInterval.Value = ctimerStyleItem.Interval; + } + + // Token: 0x060004F8 RID: 1272 RVA: 0x000237E0 File Offset: 0x000219E0 + protected override object GetStyleFromForm() + { + return new CTimerStyleItem + { + Interval = (uint)numInterval.Value + }; + } + } +} diff --git a/SETUNA/Main/StyleItems/TimerStyleItemPanel.resx b/SETUNA/Main/StyleItems/TimerStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/TimerStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ToolBoxForm.Designer.cs b/SETUNA/Main/StyleItems/ToolBoxForm.Designer.cs new file mode 100644 index 0000000..44a5dec --- /dev/null +++ b/SETUNA/Main/StyleItems/ToolBoxForm.Designer.cs @@ -0,0 +1,80 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000002 RID: 2 + partial class ToolBoxForm + { + // Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x06000002 RID: 2 RVA: 0x00002070 File Offset: 0x00000270 + private void InitializeComponent() + { + this.cmdOK = new System.Windows.Forms.Button(); + this.cmdCancel = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdOK.Location = new System.Drawing.Point(165, 214); + this.cmdOK.Name = "cmdOK"; + this.cmdOK.Size = new System.Drawing.Size(70, 24); + this.cmdOK.TabIndex = 998; + this.cmdOK.Text = "确定"; + this.cmdOK.UseVisualStyleBackColor = true; + this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click); + // + // cmdCancel + // + this.cmdCancel.Anchor = System.Windows.Forms.AnchorStyles.None; + this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cmdCancel.Location = new System.Drawing.Point(241, 214); + this.cmdCancel.Name = "cmdCancel"; + this.cmdCancel.Size = new System.Drawing.Size(70, 24); + this.cmdCancel.TabIndex = 999; + this.cmdCancel.Text = "取消"; + this.cmdCancel.UseVisualStyleBackColor = true; + this.cmdCancel.Click += new System.EventHandler(this.cmdCancel_Click); + // + // ToolBoxForm + // + this.AcceptButton = this.cmdOK; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.cmdCancel; + this.ClientSize = new System.Drawing.Size(319, 246); + this.Controls.Add(this.cmdCancel); + this.Controls.Add(this.cmdOK); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ToolBoxForm"; + this.Padding = new System.Windows.Forms.Padding(5); + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "ToolBoxForm1"; + this.ResumeLayout(false); + + } + + // Token: 0x04000001 RID: 1 +#pragma warning disable CS0649 // 从未对字段“ToolBoxForm.components”赋值,字段将一直保持其默认值 null + private global::System.ComponentModel.IContainer components; +#pragma warning restore CS0649 // 从未对字段“ToolBoxForm.components”赋值,字段将一直保持其默认值 null + + // Token: 0x04000002 RID: 2 + protected global::System.Windows.Forms.Button cmdOK; + + // Token: 0x04000003 RID: 3 + protected global::System.Windows.Forms.Button cmdCancel; + } +} diff --git a/SETUNA/Main/StyleItems/ToolBoxForm.cs b/SETUNA/Main/StyleItems/ToolBoxForm.cs new file mode 100644 index 0000000..ce8da3e --- /dev/null +++ b/SETUNA/Main/StyleItems/ToolBoxForm.cs @@ -0,0 +1,63 @@ +using System; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000002 RID: 2 + public partial class ToolBoxForm : BaseForm + { + // Token: 0x06000003 RID: 3 RVA: 0x00002285 File Offset: 0x00000485 + public ToolBoxForm() + { + InitializeComponent(); + } + + // Token: 0x06000004 RID: 4 RVA: 0x00002293 File Offset: 0x00000493 + public ToolBoxForm(object style) + { + InitializeComponent(); + SetStyleToForm(style); + } + + // Token: 0x06000005 RID: 5 RVA: 0x000022A8 File Offset: 0x000004A8 + private void cmdOK_Click(object sender, EventArgs e) + { + var flag = false; + OKCheck(ref flag); + if (flag) + { + return; + } + base.DialogResult = DialogResult.OK; + base.Close(); + } + + // Token: 0x06000006 RID: 6 RVA: 0x000022D0 File Offset: 0x000004D0 + private void cmdCancel_Click(object sender, EventArgs e) + { + base.DialogResult = DialogResult.Cancel; + base.Close(); + } + + // Token: 0x17000001 RID: 1 + // (get) Token: 0x06000007 RID: 7 RVA: 0x000022DF File Offset: 0x000004DF + public object StyleItem => GetStyleFromForm(); + + // Token: 0x06000008 RID: 8 RVA: 0x000022E7 File Offset: 0x000004E7 + protected virtual void SetStyleToForm(object style) + { + throw new Exception("SetStyleToForm未实现"); + } + + // Token: 0x06000009 RID: 9 RVA: 0x000022F3 File Offset: 0x000004F3 + protected virtual object GetStyleFromForm() + { + throw new Exception("GetStyleFromForm未实现"); + } + + // Token: 0x0600000A RID: 10 RVA: 0x000022FF File Offset: 0x000004FF + protected virtual void OKCheck(ref bool cancel) + { + } + } +} diff --git a/SETUNA/Main/StyleItems/ToolBoxForm.resx b/SETUNA/Main/StyleItems/ToolBoxForm.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/ToolBoxForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/ToolCommand.cs b/SETUNA/Main/StyleItems/ToolCommand.cs new file mode 100644 index 0000000..0b2f290 --- /dev/null +++ b/SETUNA/Main/StyleItems/ToolCommand.cs @@ -0,0 +1,26 @@ +using System; +using System.Drawing; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000015 RID: 21 + public abstract class ToolCommand : IDisposable + { + // Token: 0x060000E7 RID: 231 RVA: 0x000069A7 File Offset: 0x00004BA7 + public ToolCommand() + { + Parent = null; + } + + // Token: 0x060000E8 RID: 232 + public abstract void Draw(Graphics g); + + // Token: 0x060000E9 RID: 233 RVA: 0x000069B6 File Offset: 0x00004BB6 + public virtual void Dispose() + { + } + + // Token: 0x04000079 RID: 121 + public ILayer Parent; + } +} diff --git a/SETUNA/Main/StyleItems/TrimWindow.Designer.cs b/SETUNA/Main/StyleItems/TrimWindow.Designer.cs new file mode 100644 index 0000000..4666e0f --- /dev/null +++ b/SETUNA/Main/StyleItems/TrimWindow.Designer.cs @@ -0,0 +1,20 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000073 RID: 115 + sealed partial class TrimWindow + { + // Token: 0x060003BB RID: 955 RVA: 0x000167FC File Offset: 0x000149FC + private void InitializeComponent() + { + this.SuspendLayout(); + // + // TrimWindow + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(292, 266); + this.Name = "TrimWindow"; + this.ResumeLayout(false); + + } + } +} diff --git a/SETUNA/Main/StyleItems/TrimWindow.cs b/SETUNA/Main/StyleItems/TrimWindow.cs new file mode 100644 index 0000000..0dd8235 --- /dev/null +++ b/SETUNA/Main/StyleItems/TrimWindow.cs @@ -0,0 +1,405 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +namespace SETUNA.Main.StyleItems +{ + // Token: 0x02000073 RID: 115 + internal sealed partial class TrimWindow : ScrapDrawForm + { + // Token: 0x060003BC RID: 956 RVA: 0x0001684C File Offset: 0x00014A4C + public TrimWindow(ScrapBase scrap) : base(scrap) + { + penCenter = new Pen(Color.Gray) + { + DashStyle = DashStyle.Dot + }; + TrimRight = scrap.Image.Width; + TrimBottom = scrap.Image.Height; + TrimLeft = 0; + TrimTop = 0; + _locmouse = TrimWindow.Locate.None; + _locsel = TrimWindow.Locate.None; + _drag = false; + } + + // Token: 0x1700008C RID: 140 + // (get) Token: 0x060003BE RID: 958 RVA: 0x00016937 File Offset: 0x00014B37 + // (set) Token: 0x060003BD RID: 957 RVA: 0x000168C4 File Offset: 0x00014AC4 + public int TrimLeft + { + get => _sleft; + set + { + if (value < 0) + { + value = 0; + } + if (value > TrimRight - 10) + { + value = TrimRight - 10; + } + _sleft = value; + _arealeft.X = TrimLeft - 1 - 3 + 50; + _arealeft.Y = 0; + _arealeft.Width = 7; + _arealeft.Height = base.Height; + } + } + + // Token: 0x1700008D RID: 141 + // (get) Token: 0x060003C0 RID: 960 RVA: 0x000169CF File Offset: 0x00014BCF + // (set) Token: 0x060003BF RID: 959 RVA: 0x00016940 File Offset: 0x00014B40 + public int TrimRight + { + get => _sright; + set + { + if (value < TrimLeft + 10) + { + value = TrimLeft + 10; + } + if (value > _scrap.Image.Width) + { + value = _scrap.Image.Width; + } + _sright = value; + _arearight.X = TrimRight - 3 + 50; + _arearight.Y = 0; + _arearight.Width = 7; + _arearight.Height = base.Height; + } + } + + // Token: 0x1700008E RID: 142 + // (get) Token: 0x060003C2 RID: 962 RVA: 0x00016A4B File Offset: 0x00014C4B + // (set) Token: 0x060003C1 RID: 961 RVA: 0x000169D8 File Offset: 0x00014BD8 + public int TrimTop + { + get => _stop; + set + { + if (value < 0) + { + value = 0; + } + if (value > TrimBottom - 10) + { + value = TrimBottom - 10; + } + _stop = value; + _areatop.X = 0; + _areatop.Y = TrimTop - 1 - 3 + 50; + _areatop.Width = base.Width; + _areatop.Height = 7; + } + } + + // Token: 0x1700008F RID: 143 + // (get) Token: 0x060003C4 RID: 964 RVA: 0x00016AE3 File Offset: 0x00014CE3 + // (set) Token: 0x060003C3 RID: 963 RVA: 0x00016A54 File Offset: 0x00014C54 + public int TrimBottom + { + get => _sbottom; + set + { + if (value < TrimTop + 10) + { + value = TrimTop + 10; + } + if (value > _scrap.Image.Height) + { + value = _scrap.Image.Height; + } + _sbottom = value; + _areabottom.X = 0; + _areabottom.Y = TrimBottom - 3 + 50; + _areabottom.Width = base.Width; + _areabottom.Height = 7; + } + } + + // Token: 0x17000090 RID: 144 + // (get) Token: 0x060003C5 RID: 965 RVA: 0x00016AEC File Offset: 0x00014CEC + public Rectangle TrimRectangle => new Rectangle + { + Width = TrimRight - TrimLeft, + Height = TrimBottom - TrimTop + }; + + // Token: 0x060003C6 RID: 966 RVA: 0x00016B2C File Offset: 0x00014D2C + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + e.Graphics.DrawImage(_scrap.Image, TrimLeft + 50, TrimTop + 50, new Rectangle(TrimLeft, TrimTop, TrimRight - TrimLeft + 1, TrimBottom - TrimTop + 1), GraphicsUnit.Pixel); + e.Graphics.DrawLine(penCenter, new PointF(TrimRectangle.Width / 2f + TrimLeft + 50f, 50f), new PointF(TrimRectangle.Width / 2f + TrimLeft + 50f, _baseimg.Height - 50f)); + e.Graphics.DrawLine(penCenter, new PointF(0f, TrimRectangle.Height / 2f + TrimTop + 50f), new PointF(_baseimg.Width, TrimRectangle.Height / 2f + TrimTop + 50f)); + e.Graphics.DrawLine(Pens.SkyBlue, new Point(TrimLeft - 1 + 50, 0), new Point(TrimLeft - 1 + 50, _baseimg.Height)); + e.Graphics.DrawLine(Pens.SkyBlue, new Point(TrimRight + 50, 0), new Point(TrimRight + 50, _baseimg.Height)); + e.Graphics.DrawLine(Pens.SkyBlue, new Point(0, TrimTop - 1 + 50), new Point(_baseimg.Width, TrimTop - 1 + 50)); + e.Graphics.DrawLine(Pens.SkyBlue, new Point(0, TrimBottom + 50), new Point(_baseimg.Width, TrimBottom + 50)); + if ((_locsel & TrimWindow.Locate.Left) != TrimWindow.Locate.None) + { + e.Graphics.DrawLine(Pens.Orange, new Point(TrimLeft - 1 + 50, 0), new Point(TrimLeft - 1 + 50, _baseimg.Height)); + } + if ((_locsel & TrimWindow.Locate.Right) != TrimWindow.Locate.None) + { + e.Graphics.DrawLine(Pens.Orange, new Point(TrimRight + 50, 0), new Point(TrimRight + 50, _baseimg.Height)); + } + if ((_locsel & TrimWindow.Locate.Top) != TrimWindow.Locate.None) + { + e.Graphics.DrawLine(Pens.Orange, new Point(0, TrimTop - 1 + 50), new Point(_baseimg.Width, TrimTop - 1 + 50)); + } + if ((_locsel & TrimWindow.Locate.Bottom) != TrimWindow.Locate.None) + { + e.Graphics.DrawLine(Pens.Orange, new Point(0, TrimBottom + 50), new Point(_baseimg.Width, TrimBottom + 50)); + } + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.Black, 2f, 3f); + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.Black, 3f, 2f); + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.Black, 4f, 3f); + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.Black, 3f, 4f); + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.Black, 2f, 2f); + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.Black, 4f, 2f); + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.Black, 2f, 4f); + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.Black, 4f, 4f); + e.Graphics.DrawString(TrimRectangle.Width.ToString() + " x " + TrimRectangle.Height.ToString(), Control.DefaultFont, Brushes.White, 3f, 3f); + } + + // Token: 0x060003C7 RID: 967 RVA: 0x0001719B File Offset: 0x0001539B + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + _locsel = _locmouse; + _drag = (_locsel != TrimWindow.Locate.None); + Refresh(); + } + + // Token: 0x060003C8 RID: 968 RVA: 0x000171C8 File Offset: 0x000153C8 + protected override void OnMouseUp(MouseEventArgs e) + { + base.OnMouseUp(e); + _drag = false; + } + + // Token: 0x060003C9 RID: 969 RVA: 0x000171D8 File Offset: 0x000153D8 + protected override void OnDoubleClick(EventArgs e) + { + base.OnDoubleClick(e); + if (_locsel == TrimWindow.Locate.None) + { + return; + } + if ((_locsel & TrimWindow.Locate.Left) != TrimWindow.Locate.None) + { + TrimLeft = 0; + } + if ((_locsel & TrimWindow.Locate.Right) != TrimWindow.Locate.None) + { + TrimRight = _scrap.Image.Width; + } + if ((_locsel & TrimWindow.Locate.Top) != TrimWindow.Locate.None) + { + TrimTop = 0; + } + if ((_locsel & TrimWindow.Locate.Bottom) != TrimWindow.Locate.None) + { + TrimBottom = _scrap.Image.Height; + } + Refresh(); + } + + // Token: 0x060003CA RID: 970 RVA: 0x00017260 File Offset: 0x00015460 + protected override void OnKeyDown(KeyEventArgs e) + { + base.OnKeyDown(e); + if (e.KeyCode == Keys.Left) + { + if ((_locsel & TrimWindow.Locate.Left) != TrimWindow.Locate.None) + { + TrimLeft--; + } + if ((_locsel & TrimWindow.Locate.Right) != TrimWindow.Locate.None) + { + TrimRight--; + } + Refresh(); + return; + } + if (e.KeyCode == Keys.Right) + { + if ((_locsel & TrimWindow.Locate.Left) != TrimWindow.Locate.None) + { + TrimLeft++; + } + if ((_locsel & TrimWindow.Locate.Right) != TrimWindow.Locate.None) + { + TrimRight++; + } + Refresh(); + return; + } + if (e.KeyCode == Keys.Up) + { + if ((_locsel & TrimWindow.Locate.Top) != TrimWindow.Locate.None) + { + TrimTop--; + } + if ((_locsel & TrimWindow.Locate.Bottom) != TrimWindow.Locate.None) + { + TrimBottom--; + } + Refresh(); + return; + } + if (e.KeyCode == Keys.Down) + { + if ((_locsel & TrimWindow.Locate.Top) != TrimWindow.Locate.None) + { + TrimTop++; + } + if ((_locsel & TrimWindow.Locate.Bottom) != TrimWindow.Locate.None) + { + TrimBottom++; + } + Refresh(); + return; + } + if (e.KeyCode == Keys.Escape) + { + base.DialogResult = DialogResult.Cancel; + base.Close(); + return; + } + if (e.KeyCode == Keys.Return) + { + base.DialogResult = DialogResult.OK; + base.Close(); + } + } + + // Token: 0x060003CB RID: 971 RVA: 0x000173A8 File Offset: 0x000155A8 + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + if (_drag) + { + if ((_locsel & TrimWindow.Locate.Left) != TrimWindow.Locate.None) + { + TrimLeft = e.X - 50; + } + if ((_locsel & TrimWindow.Locate.Right) != TrimWindow.Locate.None) + { + TrimRight = e.X - 50; + } + if ((_locsel & TrimWindow.Locate.Top) != TrimWindow.Locate.None) + { + TrimTop = e.Y - 50; + } + if ((_locsel & TrimWindow.Locate.Bottom) != TrimWindow.Locate.None) + { + TrimBottom = e.Y - 50; + } + Refresh(); + return; + } + bool flag4; + bool flag3; + bool flag2; + var flag = flag2 = (flag3 = (flag4 = false)); + _locmouse = TrimWindow.Locate.None; + if (_arealeft.IntersectsWith(new Rectangle(e.X, e.Y, 1, 1))) + { + flag2 = true; + _locmouse |= TrimWindow.Locate.Left; + } + else if (_arearight.IntersectsWith(new Rectangle(e.X, e.Y, 1, 1))) + { + flag = true; + _locmouse |= TrimWindow.Locate.Right; + } + if (_areatop.IntersectsWith(new Rectangle(e.X, e.Y, 1, 1))) + { + flag3 = true; + _locmouse |= TrimWindow.Locate.Top; + } + else if (_areabottom.IntersectsWith(new Rectangle(e.X, e.Y, 1, 1))) + { + flag4 = true; + _locmouse |= TrimWindow.Locate.Bottom; + } + if ((flag2 && flag3) || (flag && flag4)) + { + Cursor = Cursors.SizeNWSE; + return; + } + if ((flag2 && flag4) || (flag && flag3)) + { + Cursor = Cursors.SizeNESW; + return; + } + if (flag2 || flag) + { + Cursor = Cursors.SizeWE; + return; + } + if (flag3 || flag4) + { + Cursor = Cursors.SizeNS; + return; + } + Cursor = Cursors.Default; + } + + // Token: 0x04000219 RID: 537 + private int _sleft; + + // Token: 0x0400021A RID: 538 + private int _sright; + + // Token: 0x0400021B RID: 539 + private int _stop; + + // Token: 0x0400021C RID: 540 + private int _sbottom; + + // Token: 0x0400021D RID: 541 + private Rectangle _arealeft; + + // Token: 0x0400021E RID: 542 + private Rectangle _arearight; + + // Token: 0x0400021F RID: 543 + private Rectangle _areatop; + + // Token: 0x04000220 RID: 544 + private Rectangle _areabottom; + + // Token: 0x04000221 RID: 545 + private TrimWindow.Locate _locmouse; + + // Token: 0x04000222 RID: 546 + private TrimWindow.Locate _locsel; + + // Token: 0x04000223 RID: 547 + private bool _drag; + + // Token: 0x04000224 RID: 548 + private Pen penCenter; + + // Token: 0x02000074 RID: 116 + private enum Locate + { + // Token: 0x04000226 RID: 550 + None, + // Token: 0x04000227 RID: 551 + Left, + // Token: 0x04000228 RID: 552 + Right, + // Token: 0x04000229 RID: 553 + Top = 4, + // Token: 0x0400022A RID: 554 + Bottom = 8 + } + } +} diff --git a/SETUNA/Main/StyleItems/TrimWindow.resx b/SETUNA/Main/StyleItems/TrimWindow.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/TrimWindow.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/StyleItems/WindowStyleItemPanel.Designer.cs b/SETUNA/Main/StyleItems/WindowStyleItemPanel.Designer.cs new file mode 100644 index 0000000..90a3335 --- /dev/null +++ b/SETUNA/Main/StyleItems/WindowStyleItemPanel.Designer.cs @@ -0,0 +1,95 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200007C RID: 124 + partial class WindowStyleItemPanel + { + // Token: 0x06000419 RID: 1049 RVA: 0x0001A354 File Offset: 0x00018554 + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.rdoIncrement = new System.Windows.Forms.RadioButton(); + this.rdoFixed = new System.Windows.Forms.RadioButton(); + this.groupBox1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // cmdOK + // + this.cmdOK.Location = new System.Drawing.Point(36, 92); + // + // cmdCancel + // + this.cmdCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cmdCancel.Location = new System.Drawing.Point(112, 92); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.panel1); + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(171, 80); + this.groupBox1.TabIndex = 4; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "设置"; + // + // panel1 + // + this.panel1.Controls.Add(this.rdoIncrement); + this.panel1.Controls.Add(this.rdoFixed); + this.panel1.Location = new System.Drawing.Point(6, 18); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(156, 51); + this.panel1.TabIndex = 8; + // + // rdoIncrement + // + this.rdoIncrement.AutoSize = true; + this.rdoIncrement.Location = new System.Drawing.Point(3, 30); + this.rdoIncrement.Name = "rdoIncrement"; + this.rdoIncrement.Size = new System.Drawing.Size(71, 16); + this.rdoIncrement.TabIndex = 1; + this.rdoIncrement.Text = "窗口类型"; + this.rdoIncrement.UseVisualStyleBackColor = true; + // + // rdoFixed + // + this.rdoFixed.AutoSize = true; + this.rdoFixed.Checked = true; + this.rdoFixed.Location = new System.Drawing.Point(3, 8); + this.rdoFixed.Name = "rdoFixed"; + this.rdoFixed.Size = new System.Drawing.Size(83, 16); + this.rdoFixed.TabIndex = 0; + this.rdoFixed.TabStop = true; + this.rdoFixed.Text = "参考图类型"; + this.rdoFixed.UseVisualStyleBackColor = true; + // + // WindowStyleItemPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(190, 124); + this.Controls.Add(this.groupBox1); + this.Name = "WindowStyleItemPanel"; + this.Controls.SetChildIndex(this.cmdOK, 0); + this.Controls.SetChildIndex(this.cmdCancel, 0); + this.Controls.SetChildIndex(this.groupBox1, 0); + this.groupBox1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + // Token: 0x04000270 RID: 624 + private global::System.Windows.Forms.GroupBox groupBox1; + + // Token: 0x04000271 RID: 625 + private global::System.Windows.Forms.RadioButton rdoIncrement; + + // Token: 0x04000272 RID: 626 + private global::System.Windows.Forms.Panel panel1; + + // Token: 0x04000273 RID: 627 + private global::System.Windows.Forms.RadioButton rdoFixed; + } +} diff --git a/SETUNA/Main/StyleItems/WindowStyleItemPanel.cs b/SETUNA/Main/StyleItems/WindowStyleItemPanel.cs new file mode 100644 index 0000000..6141024 --- /dev/null +++ b/SETUNA/Main/StyleItems/WindowStyleItemPanel.cs @@ -0,0 +1,30 @@ +namespace SETUNA.Main.StyleItems +{ + // Token: 0x0200007C RID: 124 + internal partial class WindowStyleItemPanel : ToolBoxForm + { + // Token: 0x06000416 RID: 1046 RVA: 0x0001A2D6 File Offset: 0x000184D6 + public WindowStyleItemPanel(CWindowStyleItem style) : base(style) + { + } + + // Token: 0x06000417 RID: 1047 RVA: 0x0001A2E0 File Offset: 0x000184E0 + protected override void SetStyleToForm(object style) + { + var cwindowStyleItem = (CWindowStyleItem)style; + InitializeComponent(); + Text = cwindowStyleItem.GetDisplayName(); + rdoFixed.Checked = !cwindowStyleItem.IsWindow; + rdoIncrement.Checked = cwindowStyleItem.IsWindow; + } + + // Token: 0x06000418 RID: 1048 RVA: 0x0001A32C File Offset: 0x0001852C + protected override object GetStyleFromForm() + { + return new CWindowStyleItem + { + IsWindow = !rdoFixed.Checked + }; + } + } +} diff --git a/SETUNA/Main/StyleItems/WindowStyleItemPanel.resx b/SETUNA/Main/StyleItems/WindowStyleItemPanel.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/SETUNA/Main/StyleItems/WindowStyleItemPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SETUNA/Main/ToolStripAbstractList.cs b/SETUNA/Main/ToolStripAbstractList.cs new file mode 100644 index 0000000..14d601f --- /dev/null +++ b/SETUNA/Main/ToolStripAbstractList.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections; +using System.Windows.Forms; +using Opulos.Core.UI; + +namespace SETUNA.Main +{ + // Token: 0x020000A3 RID: 163 + public class ToolStripAbstractList : ToolStripMenuItem + { + public ToolStripAbstractList() + { + } + + // Token: 0x06000543 RID: 1347 RVA: 0x00024782 File Offset: 0x00022982 + public ToolStripAbstractList(string text, ScrapBook scrapbook) : base(text) + { + _scrapbook = scrapbook; + base.DropDownItems.Clear(); + base.DropDownItems.Insert(0, new ToolStripMenuItem("无")); + + ToolStripEx.BigButtons(DropDown); + } + + // Token: 0x06000544 RID: 1348 RVA: 0x000247B4 File Offset: 0x000229B4 + protected void RefreshList() + { + if (_createdlist) + { + return; + } + base.DropDownItems.Clear(); + if (_scrapbook != null) + { + foreach (var obj in GetItems()) + { + var scrapBase = (ScrapBase)obj; + var text = string.Concat(new object[] + { + scrapBase.Name, + "\n", + scrapBase.Width, + " x ", + scrapBase.Height + }); + var toolStripMenuItem = new ToolStripMenuItem(text, scrapBase.GetThumbnail(), new EventHandler(_scrapbook.BindForm.OnActiveScrapInList)) + { + Tag = scrapBase, + ImageScaling = ToolStripItemImageScaling.None + }; + OnAddItem(toolStripMenuItem); + base.DropDownItems.Insert(0, toolStripMenuItem); + } + } + if (base.DropDownItems.Count == 0) + { + base.DropDownItems.Insert(0, new ToolStripMenuItem("无")); + } + _createdlist = true; + } + + // Token: 0x06000545 RID: 1349 RVA: 0x000248E8 File Offset: 0x00022AE8 + protected override void OnMouseHover(EventArgs e) + { + RefreshList(); + base.OnMouseHover(e); + } + + protected override void OnDropDownOpened(EventArgs e) + { + Mainform.Instance.MouseWheelCallbackEvent += DropDown_MouseWheel; + DropDown.MouseWheel += DropDown_MouseWheel; + + base.OnDropDownOpened(e); + } + + private void DropDown_MouseWheel(object sender, MouseEventArgs e) + { + if (e.Delta > 0) + { + SendKeys.SendWait("{UP}"); + } + else + { + SendKeys.SendWait("{DOWN}"); + } + } + + // Token: 0x06000546 RID: 1350 RVA: 0x000248F7 File Offset: 0x00022AF7 + protected override void OnDropDownClosed(EventArgs e) + { + DropDown.MouseWheel -= DropDown_MouseWheel; + Mainform.Instance.MouseWheelCallbackEvent -= DropDown_MouseWheel; + + _createdlist = false; + base.OnDropDownClosed(e); + } + + // Token: 0x06000547 RID: 1351 RVA: 0x00024907 File Offset: 0x00022B07 + protected virtual void OnAddItem(ToolStripMenuItem addmi) + { + } + + // Token: 0x06000548 RID: 1352 + protected virtual bool IsExists() + { + return false; + } + + // Token: 0x06000549 RID: 1353 + protected virtual ArrayList GetItems() + { + return null; + } + + // Token: 0x0400034F RID: 847 + protected ScrapBook _scrapbook; + + // Token: 0x04000350 RID: 848 + private bool _createdlist; + } +} diff --git a/SETUNA/Main/ToolStripDustboxList.cs b/SETUNA/Main/ToolStripDustboxList.cs new file mode 100644 index 0000000..081ae46 --- /dev/null +++ b/SETUNA/Main/ToolStripDustboxList.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + // Token: 0x020000A2 RID: 162 + public class ToolStripDustboxList : ToolStripAbstractList + { + // Token: 0x0600053F RID: 1343 RVA: 0x00024730 File Offset: 0x00022930 + public ToolStripDustboxList(string text, ScrapBook scrapbook) : base(text, scrapbook) + { + } + + // Token: 0x06000540 RID: 1344 RVA: 0x0002473A File Offset: 0x0002293A + protected override bool IsExists() + { + return _scrapbook != null && _scrapbook.DustCount > 0; + } + + // Token: 0x06000541 RID: 1345 RVA: 0x00024757 File Offset: 0x00022957 + protected override ArrayList GetItems() + { + return _scrapbook.DustBoxArray; + } + + // Token: 0x06000542 RID: 1346 RVA: 0x00024764 File Offset: 0x00022964 + protected override void OnAddItem(ToolStripMenuItem addmi) + { + addmi.Click += _scrapbook.BindForm.RestoreScrap; + } + } +} diff --git a/SETUNA/Main/ToolStripEx.cs b/SETUNA/Main/ToolStripEx.cs new file mode 100644 index 0000000..a804007 --- /dev/null +++ b/SETUNA/Main/ToolStripEx.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Drawing; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace Opulos.Core.UI +{ + //https://stackoverflow.com/questions/29083903/contextmenustrip-scroll-up-or-down-button + ///Extension class to increase the size of the scroll up-down arrows on a drop down context menu or tool strip menu. The default up-down arrows are only 5 pixels high. + public static class ToolStripEx + { + public delegate void Action(); + private static Hashtable htData = new Hashtable(); + + private class Data + { + public bool needsUpdate = true; + public bool disposeLastImage = false; + public ToolStrip toolStrip = null; + public List currentImages = new List(); + } + + public static void BigButtons(ToolStrip toolStrip) + { + htData[toolStrip] = new Data() { toolStrip = toolStrip }; + toolStrip.VisibleChanged += toolStrip_VisibleChanged; + toolStrip.ForeColorChanged += toolStrip_ForeColorChanged; + toolStrip.Disposed += toolStrip_Disposed; + } + + static void toolStrip_Disposed(object sender, EventArgs e) + { + var d = (Data)htData[sender]; + if (d != null && d.currentImages != null) + { + foreach (var img in d.currentImages) + { + img.Dispose(); + } + + d.currentImages = null; + htData.Remove(sender); + } + } + + static void toolStrip_ForeColorChanged(object sender, EventArgs e) + { + var d = (Data)htData[sender]; + d.needsUpdate = true; + UpdateImages(d); + } + + static void toolStrip_VisibleChanged(object sender, EventArgs e) + { + var d = (Data)htData[sender]; + UpdateImages(d); + } + + private static void UpdateImages(Data d) + { + if (!d.needsUpdate) + { + return; + } + + Action a = () => + { + try + { + var list = GetChildWindows(d.toolStrip.Handle); + if (list.Count == 0) + { + return; + } + + var newImages = new List(); + var k = 0; + + foreach (var i in list) + { + var c = Control.FromHandle(i) as Label; + if (c != null && d.needsUpdate) + { + var glyph = (k == 0 ? "t" : "u"); + using (var f = new System.Drawing.Font("Marlett", 20f)) + { + var s = TextRenderer.MeasureText("t", f); + var oldImage = c.Image; + c.Image = new Bitmap(s.Width, s.Height); + newImages.Add(c.Image); + // avoid disposing the default image + // might cause problems, not sure + if (d.disposeLastImage) + { + oldImage.Dispose(); + } + + using (var g = Graphics.FromImage(c.Image)) + { + using (Brush b = new SolidBrush(d.toolStrip.ForeColor)) + { + g.DrawString(glyph, f, b, 0, 0); + } + } + c.AutoSize = true; + } + k++; + } + } + if (newImages.Count > 0) + { + d.needsUpdate = false; + d.disposeLastImage = true; + d.currentImages = newImages; + } + } + catch { } // protect against crash (just in case) + }; + + d.toolStrip.BeginInvoke(a); + } + + private static List GetChildWindows(IntPtr parent) + { + var result = new List(); + var listHandle = GCHandle.Alloc(result); + try + { + EnumChildWindows(parent, enumProc, GCHandle.ToIntPtr(listHandle)); + } + finally + { + if (listHandle.IsAllocated) + { + listHandle.Free(); + } + } + return result; + } + + private delegate bool EnumChildProc(IntPtr hWnd, IntPtr lParam); + private static EnumChildProc enumProc = new EnumChildProc(CallChildEnumProc); + private static bool CallChildEnumProc(IntPtr hWnd, IntPtr lParam) + { + var gch = GCHandle.FromIntPtr(lParam); + var list = gch.Target as List; + if (list == null) + { + throw new InvalidCastException("GCHandle Target could not be cast as List"); + } + + list.Add(hWnd); + return true; + } + + [DllImport("user32.dll")] + private static extern bool EnumChildWindows(IntPtr hWndParent, EnumChildProc lpEnumFunc, IntPtr lParam); + } +} \ No newline at end of file diff --git a/SETUNA/Main/ToolStripScrapList.cs b/SETUNA/Main/ToolStripScrapList.cs new file mode 100644 index 0000000..b7449d9 --- /dev/null +++ b/SETUNA/Main/ToolStripScrapList.cs @@ -0,0 +1,30 @@ +using System.Collections; + +namespace SETUNA.Main +{ + // Token: 0x020000A1 RID: 161 + public class ToolStripScrapList : ToolStripAbstractList + { + // Token: 0x0600053C RID: 1340 RVA: 0x000246B1 File Offset: 0x000228B1 + public ToolStripScrapList(string text, ScrapBook scrapbook) : base(text, scrapbook) + { + } + + // Token: 0x0600053D RID: 1341 RVA: 0x000246BB File Offset: 0x000228BB + protected override bool IsExists() + { + return _scrapbook != null && _scrapbook.ScrapCount > 0; + } + + // Token: 0x0600053E RID: 1342 RVA: 0x000246D8 File Offset: 0x000228D8 + protected override ArrayList GetItems() + { + var arrayList = new ArrayList(); + foreach (var value in _scrapbook) + { + arrayList.Add(value); + } + return arrayList; + } + } +} diff --git a/SETUNA/Main/ToolStripStyleButton.cs b/SETUNA/Main/ToolStripStyleButton.cs new file mode 100644 index 0000000..538310f --- /dev/null +++ b/SETUNA/Main/ToolStripStyleButton.cs @@ -0,0 +1,54 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using SETUNA.Main.Style; + +namespace SETUNA.Main +{ + // Token: 0x0200005B RID: 91 + internal class ToolStripStyleButton : ToolStripMenuItem + { + // Token: 0x06000330 RID: 816 RVA: 0x00015559 File Offset: 0x00013759 + public ToolStripStyleButton(CStyle style) : base(style.StyleName) + { + _style = style; + } + + // Token: 0x06000331 RID: 817 RVA: 0x0001556E File Offset: 0x0001376E + public ToolStripStyleButton(CStyle style, Image image) : base(style.StyleName, image) + { + _style = style; + _image = image; + } + + // Token: 0x06000332 RID: 818 RVA: 0x0001558C File Offset: 0x0001378C + protected override void OnClick(EventArgs e) + { + if (_style != null) + { + var scrap = ((ContextStyleMenuStrip)base.Owner).Scrap; + _style.Apply(ref scrap); + } + } + + // Token: 0x06000333 RID: 819 RVA: 0x000155BF File Offset: 0x000137BF + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (_image != null) + { + _image.Dispose(); + } + _image = null; + } + base.Dispose(disposing); + } + + // Token: 0x040001D4 RID: 468 + private CStyle _style; + + // Token: 0x040001D5 RID: 469 + private Image _image; + } +} diff --git a/SETUNA/Main/Window/FormManager.cs b/SETUNA/Main/Window/FormManager.cs new file mode 100644 index 0000000..db7c7cf --- /dev/null +++ b/SETUNA/Main/Window/FormManager.cs @@ -0,0 +1,53 @@ + +using System; +using System.Windows.Forms; + +namespace SETUNA.Main +{ + internal class FormManager + { + public delegate void FormHandler(Form form); + + public static event FormHandler Showed; + public static event FormHandler Closed; + public static event FormHandler Activated; + public static event FormHandler Deactivated; + + + public static void RegisterForm(Form form) + { + form.Shown += Form_Showed; + form.FormClosed += Form_Closed; + form.Activated += Form_Activated; + form.Deactivate += Form_Deactivated; + } + + public static void DeregisterForm(Form form) + { + form.Shown -= Form_Showed; + form.FormClosed -= Form_Closed; + form.Activated -= Form_Activated; + form.Deactivate -= Form_Deactivated; + } + + static void Form_Showed(object sender, EventArgs e) + { + Showed?.Invoke((Form)sender); + } + + static void Form_Closed(object sender, FormClosedEventArgs e) + { + Closed?.Invoke((Form)sender); + } + + static void Form_Deactivated(object sender, EventArgs e) + { + Deactivated?.Invoke((Form)sender); + } + + static void Form_Activated(object sender, EventArgs e) + { + Activated?.Invoke((Form)sender); + } + } +} diff --git a/SETUNA/Main/Window/WindowManager.cs b/SETUNA/Main/Window/WindowManager.cs new file mode 100644 index 0000000..75fbc6a --- /dev/null +++ b/SETUNA/Main/Window/WindowManager.cs @@ -0,0 +1,105 @@ + +using System; +using System.Drawing; + +namespace SETUNA.Main +{ + internal class WindowManager + { + public delegate void WindowHandler(object sender, WindowInfo windowInfo); + + public static event WindowHandler WindowActived; + public static event WindowHandler TopMostChanged; + + + public static readonly WindowManager Instance = new WindowManager(); + + public WindowInfo CurrentForegroundWindow => foregroundWindow; + public WindowInfo TopMostWindow => topMostWindow; + + WindowInfo foregroundWindow; + WindowInfo topMostWindow; + + + public void Update() + { + var hwnd = WindowsAPI.GetForegroundWindow(); + if (foregroundWindow.Handle != hwnd) + { + var windowInfo = GetWindowInfo(hwnd); + foregroundWindow = windowInfo; + } + + hwnd = WindowsAPI.GetTopMostWindow(IntPtr.Zero); + if (topMostWindow.Handle != hwnd) + { + var windowInfo = GetWindowInfo(hwnd); + topMostWindow = windowInfo; + } + + WindowActived?.Invoke(this, foregroundWindow); + TopMostChanged?.Invoke(this, topMostWindow); + } + + public WindowInfo GetWindowInfo(IntPtr hwnd) + { + var titleName = WindowsAPI.GetWindowTitle(hwnd); + var className = WindowsAPI.GetClassName(hwnd); + WindowsAPI.GetWindowZOrder(hwnd, out var zOrder); + + var rect = new Rect(); + WindowsAPI.GetWindowRect(hwnd, ref rect); + + return new WindowInfo() + { + Handle = hwnd, + TitleName = titleName, + ClassName = className, + Rect = new Rectangle(rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top), + ZOrder = zOrder, + }; + } + } + + public struct WindowInfo + { + public static WindowInfo Empty { get; internal set; } + + + public IntPtr Handle { set; get; } + public string TitleName { set; get; } + public string ClassName { set; get; } + public int ZOrder { set; get; } + public Rectangle Rect { set; get; } + + + public override string ToString() + { + return string.Format( + $"{nameof(Handle)}:{Handle}," + + $"{nameof(TitleName)}:{TitleName}," + + $"{nameof(ClassName)}:{ClassName}," + + $"{nameof(Rect)}:(X:{Rect.X},Y:{Rect.Y},W:{Rect.Width},H:{Rect.Height})," + + $"{nameof(ZOrder)}:{ZOrder}"); + } + + public override int GetHashCode() + { + return ~(int)Handle; + } + + public override bool Equals(object obj) + { + return base.Equals(obj); + } + + public static bool operator ==(WindowInfo lhs, WindowInfo rhs) + { + return lhs.Handle == rhs.Handle; + } + public static bool operator !=(WindowInfo lhs, WindowInfo rhs) + { + return lhs.Handle != rhs.Handle; + } + } +} diff --git a/SETUNA/Mainform.Designer.cs b/SETUNA/Mainform.Designer.cs new file mode 100644 index 0000000..b6e5881 --- /dev/null +++ b/SETUNA/Mainform.Designer.cs @@ -0,0 +1,169 @@ +namespace SETUNA +{ + // Token: 0x02000037 RID: 55 + sealed partial class Mainform + { + // Token: 0x060001EC RID: 492 RVA: 0x0000A164 File Offset: 0x00008364 + protected override void Dispose(bool disposing) + { + if (disposing && this.components != null) + { + this.components.Dispose(); + } + base.Dispose(disposing); + } + + // Token: 0x060001ED RID: 493 RVA: 0x0000A184 File Offset: 0x00008384 + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Mainform)); + this.button1 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.timPool = new System.Windows.Forms.Timer(this.components); + this.windowTimer = new System.Windows.Forms.Timer(this.components); + this.setunaIcon = new System.Windows.Forms.NotifyIcon(this.components); + this.setunaIconMenu = new SETUNA.Main.ContextStyleMenuStrip(this.components); + this.subMenu = new SETUNA.Main.ContextStyleMenuStrip(this.components); + this.testToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.delayInitTimer = new System.Windows.Forms.Timer(this.components); + this.subMenu.SuspendLayout(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 14F); + this.button1.ForeColor = System.Drawing.Color.Gray; + this.button1.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.button1.Location = new System.Drawing.Point(0, 0); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(190, 54); + this.button1.TabIndex = 0; + this.button1.Text = "截取"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button4 + // + this.button4.Dock = System.Windows.Forms.DockStyle.Right; + this.button4.Font = new System.Drawing.Font("微软雅黑", 9F); + this.button4.ForeColor = System.Drawing.Color.Gray; + this.button4.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.button4.Location = new System.Drawing.Point(189, 0); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(44, 54); + this.button4.TabIndex = 4; + this.button4.Text = "选项"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // timPool + // + this.timPool.Tick += new System.EventHandler(this.timPool_Tick); + // + // windowTimer + // + this.windowTimer.Enabled = true; + this.windowTimer.Interval = 500; + this.windowTimer.Tick += new System.EventHandler(this.window_Tick); + // + // setunaIcon + // + this.setunaIcon.ContextMenuStrip = this.setunaIconMenu; + this.setunaIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("setunaIcon.Icon"))); + this.setunaIcon.Text = "SETUNA2"; + this.setunaIcon.DoubleClick += new System.EventHandler(this.setunaIcon_MouseDoubleClick); + this.setunaIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.setunaIcon_MouseClick); + // + // setunaIconMenu + // + this.setunaIconMenu.ImageScalingSize = new System.Drawing.Size(20, 20); + this.setunaIconMenu.Name = "setunaIconMenu"; + this.setunaIconMenu.Scrap = null; + this.setunaIconMenu.Size = new System.Drawing.Size(61, 4); + this.setunaIconMenu.Opening += new System.ComponentModel.CancelEventHandler(this.setunaIconMenu_Opening); + // + // subMenu + // + this.subMenu.ImageScalingSize = new System.Drawing.Size(20, 20); + this.subMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.testToolStripMenuItem}); + this.subMenu.Name = "subMenu"; + this.subMenu.Scrap = null; + this.subMenu.Size = new System.Drawing.Size(107, 28); + // + // testToolStripMenuItem + // + this.testToolStripMenuItem.Name = "testToolStripMenuItem"; + this.testToolStripMenuItem.Size = new System.Drawing.Size(106, 24); + this.testToolStripMenuItem.Text = "test"; + // + // toolTip1 + // + this.toolTip1.IsBalloon = true; + this.toolTip1.ShowAlways = true; + this.toolTip1.StripAmpersands = true; + this.toolTip1.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info; + // + // delayInitTimer + // + this.delayInitTimer.Interval = 1000; + this.delayInitTimer.Tick += new System.EventHandler(this.delayInitTimer_Tick); + // + // Mainform + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(233, 54); + this.ContextMenuStrip = this.setunaIconMenu; + this.Controls.Add(this.button4); + this.Controls.Add(this.button1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimumSize = new System.Drawing.Size(100, 60); + this.Name = "Mainform"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "SETUNA"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Mainform_FormClosing); + this.Load += new System.EventHandler(this.Mainform_Load); + this.Shown += new System.EventHandler(this.Mainform_Shown); + this.subMenu.ResumeLayout(false); + this.ResumeLayout(false); + + } + + // Token: 0x040000D8 RID: 216 + private global::System.ComponentModel.IContainer components; + + // Token: 0x040000D9 RID: 217 + private global::System.Windows.Forms.Button button1; + + // Token: 0x040000DA RID: 218 + private global::System.Windows.Forms.Button button4; + + // Token: 0x040000DB RID: 219 + private global::System.Windows.Forms.NotifyIcon setunaIcon; + + // Token: 0x040000DC RID: 220 + private global::SETUNA.Main.ContextStyleMenuStrip setunaIconMenu; + + // Token: 0x040000DD RID: 221 + private global::SETUNA.Main.ContextStyleMenuStrip subMenu; + + // Token: 0x040000DE RID: 222 + private global::System.Windows.Forms.ToolStripMenuItem testToolStripMenuItem; + + // Token: 0x040000DF RID: 223 + private global::System.Windows.Forms.Timer timPool; + + // Token: 0x040000E0 RID: 224 + private global::System.Windows.Forms.ToolTip toolTip1; + + private global::System.Windows.Forms.Timer windowTimer; + private System.Windows.Forms.Timer delayInitTimer; + } +} diff --git a/SETUNA/Mainform.cs b/SETUNA/Mainform.cs new file mode 100644 index 0000000..142924b --- /dev/null +++ b/SETUNA/Mainform.cs @@ -0,0 +1,955 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Windows.Forms; +using System.Xml.Serialization; +using com.clearunit; +using SETUNA.Main; +using SETUNA.Main.KeyItems; +using SETUNA.Main.Option; +using SETUNA.Main.Style; + +namespace SETUNA +{ + // Token: 0x02000037 RID: 55 + public sealed partial class Mainform : BaseForm, IScrapKeyPressEventListener, IScrapAddedListener, IScrapRemovedListener, IScrapStyleListener, IScrapMenuListener, ISingletonForm + { + public static Mainform Instance { private set; get; } + + // Token: 0x060001EE RID: 494 RVA: 0x0000A4C4 File Offset: 0x000086C4 + public Mainform() + { + Instance = this; + + _isstart = false; + _iscapture = false; + _isoption = false; + InitializeComponent(); + scrapBook = new ScrapBook(this); + scrapBook.addKeyPressListener(this); + scrapBook.addScrapAddedListener(this); + scrapBook.addScrapRemovedListener(this); + optSetuna = new SetunaOption(); + dustbox = new Queue(); + scrapBook.DustBox = dustbox; + scrapBook.DustBoxCapacity = 5; + keyBook = optSetuna.GetKeyItemBook(); + _imgpool = new Queue(); + SetSubMenu(); + + Text = $"SETUNA {Application.ProductVersion}"; + } + + // Token: 0x17000055 RID: 85 + // (get) Token: 0x060001F0 RID: 496 RVA: 0x0000A59C File Offset: 0x0000879C + // (set) Token: 0x060001EF RID: 495 RVA: 0x0000A577 File Offset: 0x00008777 + public bool IsStart + { + get => _isstart; + set + { + _isstart = value; + if (value && _imgpool.Count > 0) + { + timPool.Start(); + } + } + } + + // Token: 0x17000056 RID: 86 + // (get) Token: 0x060001F2 RID: 498 RVA: 0x0000A5C9 File Offset: 0x000087C9 + // (set) Token: 0x060001F1 RID: 497 RVA: 0x0000A5A4 File Offset: 0x000087A4 + public bool IsCapture + { + get => _iscapture; + set + { + _iscapture = value; + if (!value && _imgpool.Count > 0) + { + timPool.Start(); + } + } + } + + // Token: 0x17000057 RID: 87 + // (get) Token: 0x060001F4 RID: 500 RVA: 0x0000A5F6 File Offset: 0x000087F6 + // (set) Token: 0x060001F3 RID: 499 RVA: 0x0000A5D1 File Offset: 0x000087D1 + public bool IsOption + { + get => _isoption; + set + { + _isoption = value; + if (!value && _imgpool.Count > 0) + { + timPool.Start(); + } + } + } + + // Token: 0x060001F5 RID: 501 RVA: 0x0000A600 File Offset: 0x00008800 + private void SetSubMenu() + { + setunaIconMenu.Scrap = scrapBook.GetDummyScrap(); + setunaIconMenu.Items.Clear(); + setunaIconMenu.Items.Add(new CScrapListStyle().GetToolStrip(scrapBook)); + setunaIconMenu.Items.Add(new CDustBoxStyle().GetToolStrip(scrapBook)); + setunaIconMenu.Items.Add(new CDustEraseStyle().GetToolStrip()); + setunaIconMenu.Items.Add(new ToolStripSeparator()); + setunaIconMenu.Items.Add(new CCaptureStyle().GetToolStrip()); + setunaIconMenu.Items.Add(new ToolStripSeparator()); + setunaIconMenu.Items.Add(new CShowVersionStyle().GetToolStrip()); + setunaIconMenu.Items.Add(new COptionStyle().GetToolStrip()); + setunaIconMenu.Items.Add(new ToolStripSeparator()); + setunaIconMenu.Items.Add(new CShutDownStyle().GetToolStrip()); + } + + // Token: 0x060001F6 RID: 502 RVA: 0x0000A740 File Offset: 0x00008940 + public void StartCapture() + { + if (IsCapture || Mainform.cap_form == null || IsOption) + { + return; + } + try + { + if (frmClickCapture != null) + { + frmClickCapture.Stop(); + } + IsCapture = true; + Console.WriteLine(string.Concat(new object[] + { + "9 - ", + DateTime.Now.ToString(), + " ", + DateTime.Now.Millisecond + })); + Mainform.cap_form.OnCaptureClose = new CaptureForm.CaptureClosedDelegate(EndCapture); + Mainform.cap_form.ShowCapture(optSetuna.Setuna); + Console.WriteLine(string.Concat(new object[] + { + "16 - ", + DateTime.Now.ToString(), + " ", + DateTime.Now.Millisecond + })); + } + catch (Exception ex) + { + Console.WriteLine("Mainform StartCapture Exception:" + ex.Message); + IsCapture = false; + if (Mainform.cap_form != null) + { + Mainform.cap_form.DialogResult = DialogResult.Cancel; + } + EndCapture(Mainform.cap_form); + } + } + + // Token: 0x060001F7 RID: 503 RVA: 0x0000A89C File Offset: 0x00008A9C + private void EndCapture(CaptureForm cform) + { + try + { + Console.WriteLine("Mainform EndCapture Start---"); + if (cform.DialogResult == DialogResult.OK) + { + using (var clipBitmap = cform.ClipBitmap) + { + if (clipBitmap != null) + { + scrapBook.AddScrap(clipBitmap, cform.ClipStart.X, cform.ClipStart.Y, cform.ClipSize.Width, cform.ClipSize.Height); + } + } + } + cform.Hide(); + Cursor.Clip = Rectangle.Empty; + Console.WriteLine("Mainform EndCapture End---"); + } + catch (Exception ex) + { + Console.WriteLine("MainForm EndCapture Exception:" + ex.Message); + } + finally + { + IsCapture = false; + if (frmClickCapture != null) + { + frmClickCapture.Restart(); + } + } + } + + // Token: 0x060001F8 RID: 504 RVA: 0x0000A994 File Offset: 0x00008B94 + public void Option() + { + if (IsCapture) + { + return; + } + IsOption = true; + var opt = (SetunaOption)optSetuna.Clone(); + var list = new List(); + try + { + foreach (var scrapBase in scrapBook) + { + if (scrapBase.Visible && scrapBase.TopMost) + { + list.Add(scrapBase); + } + } + foreach (var scrapBase2 in list) + { + scrapBase2.TopMost = false; + } + base.TopMost = false; + if (frmClickCapture != null) + { + frmClickCapture.Stop(); + } + var optionForm = new OptionForm(opt) + { + StartPosition = FormStartPosition.CenterScreen + }; + optionForm.ShowDialog(); + if (optionForm.DialogResult == DialogResult.OK) + { + optSetuna = optionForm.Option; + OptionApply(); + } + if (!optSetuna.RegistHotKey(base.Handle, HotKeyID.Capture)) + { + optSetuna.ScrapHotKeyEnable = false; + new HotkeyMsg + { + HotKey = optSetuna.ScrapHotKeys[(int)HotKeyID.Capture] + }.ShowDialog(); + } + if (!optSetuna.RegistHotKey(base.Handle, HotKeyID.Function1)) + { + optSetuna.ScrapHotKeyEnable = false; + new HotkeyMsg + { + HotKey = optSetuna.ScrapHotKeys[(int)HotKeyID.Function1] + }.ShowDialog(); + } + if (optionForm.DialogResult == DialogResult.OK) + { + SaveOption(); + } + } + finally + { + base.TopMost = true; + foreach (var scrapBase3 in list) + { + scrapBase3.TopMost = true; + } + IsOption = false; + } + } + + // Token: 0x060001F9 RID: 505 RVA: 0x0000AB90 File Offset: 0x00008D90 + private void OptionApply() + { + try + { + keyBook = optSetuna.GetKeyItemBook(); + if (optSetuna.Setuna.DustBoxEnable) + { + scrapBook.DustBoxCapacity = (short)optSetuna.Setuna.DustBoxCapacity; + } + else + { + scrapBook.DustBoxCapacity = 0; + } + if (!optSetuna.RegistHotKey(base.Handle, HotKeyID.Capture)) + { + optSetuna.ScrapHotKeyEnable = false; + new HotkeyMsg + { + HotKey = optSetuna.ScrapHotKeys[(int)HotKeyID.Capture] + }.ShowDialog(); + } + if (!optSetuna.RegistHotKey(base.Handle, HotKeyID.Function1)) + { + optSetuna.ScrapHotKeyEnable = false; + new HotkeyMsg + { + HotKey = optSetuna.ScrapHotKeys[(int)HotKeyID.Function1] + }.ShowDialog(); + } + if (optSetuna.Setuna.AppType == SetunaOption.SetunaOptionData.ApplicationType.ApplicationMode) + { + base.ShowInTaskbar = true; + setunaIcon.Visible = false; + base.MinimizeBox = true; + base.Visible = true; + } + else + { + setunaIcon.Visible = true; + base.ShowInTaskbar = false; + base.MinimizeBox = false; + base.WindowState = FormWindowState.Normal; + base.Visible = optSetuna.Setuna.ShowMainWindow; + } + subMenu.Items.Clear(); + foreach (var num in optSetuna.Scrap.SubMenuStyles) + { + if (num >= 0) + { + using (var enumerator2 = optSetuna.Styles.GetEnumerator()) + { + while (enumerator2.MoveNext()) + { + var cstyle = enumerator2.Current; + if (cstyle.StyleID == num) + { + subMenu.Items.Add(cstyle.GetToolStrip(scrapBook)); + } + } + continue; + } + } + var preStyle = CPreStyles.GetPreStyle(num); + if (preStyle != null) + { + subMenu.Items.Add(preStyle.GetToolStrip(scrapBook)); + } + } + if (optSetuna.Setuna.ClickCapture) + { + if (frmClickCapture == null) + { + frmClickCapture = new ClickCapture(optSetuna.Setuna.ClickCaptureValue); + frmClickCapture.ClickCaptureEvent += frmClickCapture_ClickCaptureEvent; + frmClickCapture.Show(); + } + else + { + frmClickCapture.ClickFlags = optSetuna.Setuna.ClickCaptureValue; + frmClickCapture.Restart(); + } + } + else if (frmClickCapture != null) + { + frmClickCapture.Close(); + frmClickCapture.Dispose(); + frmClickCapture = null; + } + + windowTimer.Enabled = optSetuna.Setuna.TopMostEnabled; + } + catch (Exception ex) + { + Console.WriteLine("Mainform OptionApply Exception:" + ex.Message); + } + } + + // Token: 0x060001FA RID: 506 RVA: 0x0000AE78 File Offset: 0x00009078 + private void frmClickCapture_ClickCaptureEvent(object sender, EventArgs e) + { + StartCapture(); + } + + // Token: 0x060001FB RID: 507 RVA: 0x0000AE80 File Offset: 0x00009080 + private void CloseSetuna() + { + base.Close(); + } + + // Token: 0x060001FC RID: 508 RVA: 0x0000AE88 File Offset: 0x00009088 + public void ScrapKeyPress(object sender, ScrapKeyPressEventArgs e) + { + var keyItem = keyBook.FindKeyItem(e.key); + if (keyItem != null) + { + var scrapBase = (ScrapBase)sender; + keyItem.ParentStyle.Apply(ref scrapBase); + } + } + + // Token: 0x060001FD RID: 509 RVA: 0x0000AEBE File Offset: 0x000090BE + protected override void WndProc(ref Message m) + { + base.WndProc(ref m); + if (m.Msg == 0x0312) + { + var id = (HotKeyID)m.WParam; + switch (id) + { + case HotKeyID.Capture: + StartCapture(); + break; + case HotKeyID.Function1: + SetAllScrapsActive(!allScrapActive); + break; + } + } + } + + // Token: 0x060001FE RID: 510 RVA: 0x0000AEE8 File Offset: 0x000090E8 + private void SaveOption() + { + var configFile = SetunaOption.ConfigFile; + var allType = SetunaOption.GetAllType(); + try + { + var xmlSerializer = new XmlSerializer(optSetuna.GetType(), allType); + var fileStream = new FileStream(configFile, FileMode.Create); + xmlSerializer.Serialize(fileStream, optSetuna); + fileStream.Close(); + } + catch + { + MessageBox.Show("无法保存配置文件。", "SETUNA2", MessageBoxButtons.OK, MessageBoxIcon.Hand); + } + } + + // Token: 0x060001FF RID: 511 RVA: 0x0000AF58 File Offset: 0x00009158 + private void LoadOption() + { + var configFile = SetunaOption.ConfigFile; + try + { + if (!File.Exists(configFile)) + { + optSetuna = SetunaOption.GetDefaultOption(); + } + else + { + var allType = SetunaOption.GetAllType(); + var xmlSerializer = new XmlSerializer(typeof(SetunaOption), allType); + var fileStream = new FileStream(configFile, FileMode.Open); + optSetuna = (SetunaOption)xmlSerializer.Deserialize(fileStream); + fileStream.Close(); + } + } + catch + { + optSetuna = SetunaOption.GetDefaultOption(); + MessageBox.Show("无法读取配置文件。\n使用默认设置。", "SETUNA2", MessageBoxButtons.OK, MessageBoxIcon.Hand); + } + finally + { + OptionApply(); + } + } + + // Token: 0x06000200 RID: 512 RVA: 0x0000B000 File Offset: 0x00009200 + public void RestoreScrap(object sender, EventArgs e) + { + var toolStripMenuItem = (ToolStripMenuItem)sender; + var list = new List(); + while (dustbox.Count > 0) + { + var scrapBase = dustbox.Dequeue(); + if (!scrapBase.Equals(toolStripMenuItem.Tag)) + { + list.Add(scrapBase); + } + else + { + scrapBook.AddScrapThenShow(scrapBase); + } + } + dustbox.Clear(); + foreach (var item in list) + { + dustbox.Enqueue(item); + } + new ScrapEventArgs(); + } + + // Token: 0x06000201 RID: 513 RVA: 0x0000B0B8 File Offset: 0x000092B8 + private void miCapture_Click(object sender, EventArgs e) + { + StartCapture(); + } + + // Token: 0x06000202 RID: 514 RVA: 0x0000B0C0 File Offset: 0x000092C0 + private void miOption_Click(object sender, EventArgs e) + { + Option(); + } + + // Token: 0x06000203 RID: 515 RVA: 0x0000B0C8 File Offset: 0x000092C8 + private void miSetunaClose_Click(object sender, EventArgs e) + { + CloseSetuna(); + } + + // Token: 0x06000204 RID: 516 RVA: 0x0000B0D0 File Offset: 0x000092D0 + public void OnActiveScrapInList(object sender, EventArgs e) + { + var toolStripMenuItem = (ToolStripMenuItem)sender; + if (toolStripMenuItem.Tag != null) + { + var scrapBase = (ScrapBase)toolStripMenuItem.Tag; + scrapBase.Activate(); + } + } + + // Token: 0x06000205 RID: 517 RVA: 0x0000B0FE File Offset: 0x000092FE + public void ScrapAdded(object sender, ScrapEventArgs e) + { + } + + // Token: 0x06000206 RID: 518 RVA: 0x0000B100 File Offset: 0x00009300 + public void ScrapRemoved(object sender, ScrapEventArgs e) + { + } + + // Token: 0x06000207 RID: 519 RVA: 0x0000B102 File Offset: 0x00009302 + private void button1_Click(object sender, EventArgs e) + { + StartCapture(); + } + + // Token: 0x06000208 RID: 520 RVA: 0x0000B10A File Offset: 0x0000930A + private void button4_Click(object sender, EventArgs e) + { + Option(); + } + + // Token: 0x06000209 RID: 521 RVA: 0x0000B114 File Offset: 0x00009314 + public void ScrapCreated(object sender, ScrapEventArgs e) + { + var cstyle = optSetuna.FindStyle(optSetuna.Scrap.CreateStyleID); + if (cstyle != null) + { + cstyle.Apply(ref e.scrap); + return; + } + } + + // Token: 0x0600020A RID: 522 RVA: 0x0000B168 File Offset: 0x00009368 + public void ScrapInactived(object sender, ScrapEventArgs e) + { + if (optSetuna.Scrap.InactiveAlphaChange) + { + e.scrap.InactiveOpacity = 1.0 - optSetuna.Scrap.InactiveAlphaValue / 100.0; + } + else + { + e.scrap.InactiveOpacity = e.scrap.ActiveOpacity; + } + var inactiveLineChange = optSetuna.Scrap.InactiveLineChange; + } + + // Token: 0x0600020B RID: 523 RVA: 0x0000B1E0 File Offset: 0x000093E0 + public void ScrapActivated(object sender, ScrapEventArgs e) + { + var inactiveAlphaChange = optSetuna.Scrap.InactiveAlphaChange; + var inactiveLineChange = optSetuna.Scrap.InactiveLineChange; + } + + // Token: 0x0600020C RID: 524 RVA: 0x0000B204 File Offset: 0x00009404 + public void ScrapInactiveMouseOver(object sender, ScrapEventArgs e) + { + if (optSetuna.Scrap.MouseOverAlphaChange) + { + e.scrap.RollOverOpacity = 1.0 - optSetuna.Scrap.MouseOverAlphaValue / 100.0; + } + else + { + e.scrap.RollOverOpacity = e.scrap.ActiveOpacity; + } + var mouseOverLineChange = optSetuna.Scrap.MouseOverLineChange; + } + + // Token: 0x0600020D RID: 525 RVA: 0x0000B27C File Offset: 0x0000947C + public void ScrapInactiveMouseOut(object sender, ScrapEventArgs e) + { + if (optSetuna.Scrap.InactiveAlphaChange) + { + e.scrap.InactiveOpacity = 1.0 - optSetuna.Scrap.InactiveAlphaValue / 100.0; + } + else + { + e.scrap.InactiveOpacity = e.scrap.ActiveOpacity; + } + var inactiveLineChange = optSetuna.Scrap.InactiveLineChange; + } + + // Token: 0x0600020E RID: 526 RVA: 0x0000B2F4 File Offset: 0x000094F4 + private void button6_Click(object sender, EventArgs e) + { + optSetuna = SetunaOption.GetDefaultOption(); + var num = 0; + num++; + } + + // Token: 0x0600020F RID: 527 RVA: 0x0000B312 File Offset: 0x00009512 + private void button7_Click(object sender, EventArgs e) + { + } + + // Token: 0x06000210 RID: 528 RVA: 0x0000B314 File Offset: 0x00009514 + private void Mainform_FormClosing(object sender, FormClosingEventArgs e) + { + foreach (HotKeyID item in Enum.GetValues(typeof(HotKeyID))) + { + optSetuna.UnregistHotKey(Handle, item); + } + } + + // Token: 0x06000211 RID: 529 RVA: 0x0000B324 File Offset: 0x00009524 + private void Mainform_Load(object sender, EventArgs e) + { + base.Visible = false; + LoadOption(); + OptionApply(); + SaveOption(); + if (optSetuna.Setuna.ShowSplashWindow) + { + frmSplash = new SplashForm(); + base.AddOwnedForm(frmSplash); + frmSplash.Show(this); + frmSplash.SplashTimer.Start(); + } + timPool.Start(); + Mainform.cap_form = new CaptureForm(optSetuna.Setuna); + IsStart = true; + + SETUNA.Main.Layer.LayerManager.Instance.Init(); + SETUNA.Main.Cache.CacheManager.Instance.Init(); + delayInitTimer.Start(); + } + + // Token: 0x06000212 RID: 530 RVA: 0x0000B3B6 File Offset: 0x000095B6 + private void setunaIcon_MouseClick(object sender, MouseEventArgs e) + { + base.Activate(); + SETUNA.Main.Layer.LayerManager.Instance.RefreshLayer(); + } + + private void setunaIcon_MouseDoubleClick(object sender, EventArgs e) + { + Option(); + } + + // Token: 0x06000213 RID: 531 RVA: 0x0000B3BE File Offset: 0x000095BE + public void ScrapMenuOpening(object sender, ScrapMenuArgs e) + { + subMenu.Scrap = e.scrap; + subMenu.Show(e.scrap, e.scrap.PointToClient(Cursor.Position)); + + subMenu.MouseWheel -= SubMenu_MouseWheel; + subMenu.MouseWheel += SubMenu_MouseWheel; + } + + private void SubMenu_MouseWheel(object sender, MouseEventArgs e) + { + if (MouseWheelCallbackEvent != null) + { + MouseWheelCallbackEvent(sender, e); + } + } + + // Token: 0x06000214 RID: 532 RVA: 0x0000B3F2 File Offset: 0x000095F2 + private void button2_Click(object sender, EventArgs e) + { + GC.Collect(); + } + + // Token: 0x06000215 RID: 533 RVA: 0x0000B3FC File Offset: 0x000095FC + private void timPool_Tick(object sender, EventArgs e) + { + if (_imgpool.Count == 0 || IsCapture || IsOption || !IsStart) + { + timPool.Stop(); + return; + } + using (var scrapSource = _imgpool.Dequeue()) + { + CreateScrapFromsource(scrapSource); + } + } + + // Token: 0x06000216 RID: 534 RVA: 0x0000B46C File Offset: 0x0000966C + public void AddImageList(ScrapSource src) + { + _imgpool.Enqueue(src); + timPool.Start(); + } + + // Token: 0x06000217 RID: 535 RVA: 0x0000B488 File Offset: 0x00009688 + public void CreateScrapFromImage(Image image, Point location) + { + if (image == null) + { + return; + } + using (var bitmap = (Bitmap)image.Clone()) + { + if (location == Point.Empty) + { + location = Cursor.Position; + } + var x = location.X; + var y = location.Y; + scrapBook.AddScrap((Bitmap)bitmap.Clone(), x, y, bitmap.Width, bitmap.Height); + } + } + + // Token: 0x06000218 RID: 536 RVA: 0x0000B50C File Offset: 0x0000970C + private void CreateScrapFromsource(ScrapSource src) + { + CreateScrapFromImage(src.GetImage(), src.GetPosition()); + } + + // Token: 0x06000219 RID: 537 RVA: 0x0000B520 File Offset: 0x00009720 + void ISingletonForm.DetectExternalStartup(string version, string[] args) + { + base.Invoke(new Mainform.ExternalStartupDelegate(ExternalStartup), new object[] + { + version, + args + }); + } + + // Token: 0x0600021A RID: 538 RVA: 0x0000B550 File Offset: 0x00009750 + private void ExternalStartup(string version, string[] args) + { + if (Application.ProductVersion != version) + { + MessageBox.Show("SETUNA已经运行在不同的版本。", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + if (args.Length > 0) + { + CommandRun(args); + return; + } + if (optSetuna.Setuna.DupType == SetunaOption.SetunaOptionData.OpeningType.Capture) + { + StartCapture(); + } + } + + // Token: 0x0600021B RID: 539 RVA: 0x0000B5A8 File Offset: 0x000097A8 + public void CommandRun(string[] args) + { + Console.WriteLine("-命令行参数--------------------"); + var num = 0; + var rect = new Rectangle(0, 0, 0, 0); + var fname = ""; + foreach (var text in args) + { + try + { + var text2 = text; + var text3 = ""; + if (text.Length > 3) + { + text3 = text2.Substring(0, 3); + if (text3.Substring(0, 1) == "/" && text3.Substring(2, 1) == ":") + { + text2 = text.Substring(text3.Length, text2.Length - text3.Length); + } + else + { + text3 = ""; + } + } + if (text3.Length > 0) + { + if (text3 == "/R:") + { + var array = text2.Split(new char[] + { + ',' + }); + if (array.Length == 4) + { + rect = default(Rectangle); + rect.X = int.Parse(array[0]); + rect.Y = int.Parse(array[1]); + rect.Width = int.Parse(array[2]); + rect.Height = int.Parse(array[3]); + Console.WriteLine("[位置]" + rect.ToString()); + goto IL_1C2; + } + } + if (text3 == "/P:") + { + fname = text2; + } + if (text3 == "/C:") + { + if (text2.ToUpper() == "OPTION") + { + num = 1; + goto IL_1C2; + } + if (text2.ToUpper() == "CAPTURE") + { + num = 2; + goto IL_1C2; + } + if (text2.ToUpper() == "SUBMENU") + { + num = 3; + goto IL_1C2; + } + } + } + AddImageList(new ScrapSourcePath(text2)); + Console.WriteLine(text2); + } + catch + { + Console.WriteLine("[Error]" + text); + } + IL_1C2:; + } + Console.WriteLine("---------------------------------------"); + if (rect.Width >= 10 && rect.Height >= 10) + { + CommandCutRect(rect, fname); + return; + } + if (num != 0 && IsStart) + { + switch (num) + { + case 1: + if (!IsOption) + { + Option(); + return; + } + break; + case 2: + if (!IsCapture) + { + StartCapture(); + } + break; + default: + return; + } + } + } + + // Token: 0x0600021C RID: 540 RVA: 0x0000B80C File Offset: 0x00009A0C + private void CommandCutRect(Rectangle rect, string fname) + { + using (var bitmap = new Bitmap(rect.Width, rect.Height, PixelFormat.Format24bppRgb)) + { + var point = new Point(rect.X, rect.Y); + CaptureForm.CopyFromScreen(bitmap, point); + if (fname == "") + { + AddImageList(new ScrapSourceImage(bitmap, point)); + } + } + } + + // Token: 0x0600021D RID: 541 RVA: 0x0000B888 File Offset: 0x00009A88 + private void Mainform_Shown(object sender, EventArgs e) + { + } + + // Token: 0x0600021E RID: 542 RVA: 0x0000B88A File Offset: 0x00009A8A + private void setunaIconMenu_Opening(object sender, CancelEventArgs e) + { + e.Cancel = false; + } + + + private void window_Tick(object sender, EventArgs e) + { + SETUNA.Main.WindowManager.Instance.Update(); + } + + bool allScrapActive = true; + List
forms = new List(); + private void SetAllScrapsActive(bool active) + { + allScrapActive = active; + + if (active) + { + forms.ForEach(x => x.Visible = active); + forms.Clear(); + } + else + { + foreach (var item in scrapBook) + { + if (item.Visible) + { + forms.Add(item); + } + else if ((item.StyleForm?.Visible ?? false) == true) + { + forms.Add(item.StyleForm); + } + } + + forms.ForEach(x => x.Visible = active); + } + } + + private void delayInitTimer_Tick(object sender, EventArgs e) + { + if (SETUNA.Main.Cache.CacheManager.Instance.IsInit) + { + delayInitTimer.Enabled = false; + SETUNA.Main.Layer.LayerManager.Instance.RefreshLayer(); + SETUNA.Main.Layer.LayerManager.Instance.DelayInit(); + } + } + + + + // Token: 0x040000E1 RID: 225 + private SplashForm frmSplash; + + // Token: 0x040000E2 RID: 226 + public ScrapBook scrapBook; + + // Token: 0x040000E3 RID: 227 + public SetunaOption optSetuna; + + // Token: 0x040000E4 RID: 228 + public KeyItemBook keyBook; + + // Token: 0x040000E5 RID: 229 + public Queue dustbox; + + // Token: 0x040000E6 RID: 230 + private ClickCapture frmClickCapture; + + // Token: 0x040000E7 RID: 231 + private static CaptureForm cap_form; + + // Token: 0x040000E8 RID: 232 + private Queue _imgpool; + + // Token: 0x040000E9 RID: 233 + private bool _iscapture; + + // Token: 0x040000EA RID: 234 + private bool _isoption; + + // Token: 0x040000EB RID: 235 + private bool _isstart; + + // Token: 0x02000041 RID: 65 + // (Invoke) Token: 0x0600026A RID: 618 + private delegate void ExternalStartupDelegate(string version, string[] args); + + public delegate void MouseWheelCallback(object sender, MouseEventArgs e); + public event MouseWheelCallback MouseWheelCallbackEvent; + } +} diff --git a/SETUNA/Mainform.resx b/SETUNA/Mainform.resx new file mode 100644 index 0000000..60b764a --- /dev/null +++ b/SETUNA/Mainform.resx @@ -0,0 +1,7362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 148, 17 + + + 17, 17 + + + 246, 17 + + + 362, 17 + + + + + AAABAAQAAAAAAAEAGAAoIAMARgAAADAwAAABABgAqBwAAG4gAwAgIAAAAQAYAKgMAAAWPQMAEBAAAAEA + GABoAwAAvkkDACgAAAAAAQAAAAIAAAEAGAAAAAAAACADAAAAAAAAAAAAAAAAAAAAAABWU0hLRzxLRzxL + RzxLRzxLRztLRztLRztLRztLRztLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpL + RzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpL + RzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpL + RzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRztLRztLRztLRztLRzxLRzxL + Rz1LRz5LRz5LSD9MSEBMSEFMSkZMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExM + TExMTExMS0pIQzhFPS1GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9G + Pi9GPi9GPi9GPi9GPi9HPi9IQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBI + QTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBI + QTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBI + QTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBJQTFJQTFJQTFJQTFJQTFJQTFJQTFJQjFJQjFJ + QjFJQjFJQjFJQjFJQjFJQTFJQTFJQTFJQTFJQTFJQTFJQTFJQTFJQjFJQjFJQjFJQjFJQjFJQTBIQTBI + QTBIQTBIQTBIQTBIQTBIQC5JRThMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExM + TExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExXV1fdzqdAPDBAPC9APC9APC9APC9AOy5A + Oi1AOi1AOixAOSxAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStA + OStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStA + OStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStA + OStAOStAOStAOStAOStAOStAOStAOStAOStAOSxAOSxAOSxAOSxAOSxAOi1AOi1AOi5AOi9AOzBAOzBA + OzFAPDJAPDRBPz1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQD45 + MSQ2LBw2LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02 + LR02LR04Lx48MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88 + MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88 + MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88 + MR88MR88MR88MR88MR88MR88Mh88MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8 + MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiE8MiA8MR88MR88MR88MR88MR88 + MR88MR48MiBAPjtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB + QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJSUn97sXi0qdbVUNAPC9AOy5AOi1AOSxAOStAOCpAOCpAOClA + NylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylA + NylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylA + NylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylA + NylANylANylANylANylANylAOClAOClAOCpAOCpAOCpAOCtAOCxAOSxAOS1AOS5AOi9AOjBAOjFAOzNB + Pz1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE/PDk0KhszKBgzKRkz + KRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRk4LBo7 + Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6 + Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6 + Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6 + Lhs6Lhs6Lxw7Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07 + Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx06Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6LRk8MSJA + Pz5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB + QUFBQUFBQUFBQUFMTEz97sX97cD97cX04K7gypvfx5ffxJPfwY/fv43evorevYjevIfeu4beu4beu4be + u4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4be + u4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4be + u4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4fe + vIfevIfevIjevYjevYrevYvev4zev47ev4/fv5HfwZXfwpbfxJrfxZ7fx6TfyKbg0Lfj4uHj4+Pj4+Pj + 4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PNuZynf0engUqogkyogkyogkyogkyo + gkyogkyogkyogkyogkyogkyogkyogkyog0yog0yog0yog0yog0yog0yngkyqg0zAkVDIllHHllHHllHH + llHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHH + llHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHH + llHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllLHl1THl1THl1THl1THl1THl1THmVjImVnI + mVnImVnImVnImVnImVnImVnImlnJnFrJnFrInFrIm1rIm1nIm1nImlnImlnImVnImVnImVnImVnImVnI + mlnIm1nIm1rIm1rJnFrJnFrIm1nHmFXHl1THl1THl1THl1THllHHllHHllHFj0bVvZvj4+Pj4+Pj4+Pj + 4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Ph4eFBQUFBQUFM + TEz97cP97L/968L85LP73qj62qL615351Jn50ZX4z5P4zpH4zY/4zI74zI74zI74zY74zY34zY34zY34 + zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY74zY74zY74zY34 + zY34zY34zY74zY74zY74zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34 + zY34zY34zY34zY34zY74zY74zY74zY74zY74zY34zY74zY74zY/4zY/4zY/4zY74zY/4zY/4zZD4zZD4 + zpH4zpL4z5T4z5X40Zf40pn505z51J/61qP62Kj626363bL637f87dX//vz///////////////////// + //////////////////////////////////////3cwZ+vfz+yhEeyhEiyhEiyhEiyhEiyhEiyhEiyhEiy + hEiyhEiyhEiyhEiyhEiyhUiyhUiyhUiyhUiyhUiyhUiwg0i7iknanE/bnU/anE/anE/anE/anE/anE/a + nE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/a + nE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/a + nE/anE/anE/anE/anE/anE/anE/an1Dan1Han1Han1Han1Han1HboFLcoVfcoljcoljcoljcoljcoljc + oljcoljcoljcpFndpVndpFncpFncpFncpFjcpFjco1jco1jcoljcoljco1jco1jcpFjcpFjcpFncpFnd + pVndpVnco1jaoFTan1Han1Han1Han1HanlDanE/anE/YmkneqWX89/L///////////////////////// + ///////////////////////////////////////////////////v7+9BQUFBQUFMTEz97cP97L/96b77 + 4a762qL51pz40pf4z5L3zY/3y4v3yYn2yIf2x4f2x4f2x4f2x4f2x4f2x4f2x4f2x4f2x4f2x4f2x4f2 + x4f2x4f2x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3 + x4f3x4f3x4f3x4f3x4f3x4f3x4f3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3 + yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIj3yYj3yYn3yor4yoz4yo34 + y474zJD4zZP4z5b40Jn40p751aP52Kr62q/63LT98N7///////////////////////////////////// + ///////////////////////79u+4jFSlczSqeT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2q + eT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2neD2/hkHXlETVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TV + k0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TV + k0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TV + k0TVk0TVlETWlkbWlkfWlkfWlkfWlkfWlkfXl0jYmU7YmU7YmU7YmU7YmU7YmU7YmU7YmU7YmU7Ymk7Z + nU/ZnU/ZnE/Ym0/Ym07Ym07Ym07Ymk7Ymk7Ymk7Ym07Ym07Ym07Ym0/YnE/ZnE/ZnU/YnE/YmU7XmEvW + lkfWlkfWlkfWlkfWlUbVk0TVk0TVk0TTjjvoxZr///////////////////////////////////////// + ///////////////////////////////////v7+9BQUFBQUFMTEz97cP86bv85rv63ar515740pf4zpH3 + y432yYj2xoX2xYP2w4H1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH2 + woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2 + woH2woH2woH2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2 + w4H2woH2woH2w4H2w4H2w4H2xIH2xIH2xIH2xIH2w4L2xIH2xIL2xYT2xYT3xYb3xYf3x4j3x4v3yY74 + y5H4zZX4z5r50qH51af52Kz63bj+9+7///////////////////////////////////////////////// + ///////////z6Nq1h1KeaSyibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOi + bzOibzOibzOibzOibzOgbjO8fzfUjTvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvS + izvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvS + izvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSjDzSjj3S + jj3Sjj3Sjj3Sjj3Sjj3Tj0DUkkXUkkXUkkXUkkXUkkXUkkXUkkXUkkXUkkXUkkXVk0bWlUbWlUbWlEbV + k0bVk0bVk0XVk0XVk0XVk0XVk0XVk0XVk0bVlEbWlEbWlUbWlUbUkkXUkkXTkUPSjj3Sjj3Sjj3Sjj3S + jj3SizvSizvSizvRiTjRijnv2L3///////////////////////////////////////////////////// + ///////////////////v7+9BQUFBQUFMTEz97cP857j85Ln526f51Jn4z5L3y4z2yIf2xIP1woD1wH71 + v3z1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1 + vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1 + vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv2vnv2vnv2vnv2 + vnv2vnv2vnv2v3v2v3v2v3z2v3z2v3z2v332v331wH71wH/2wYD2woL2w4T2xIb2xYn3yI32y5L3zJf3 + 0J7506X41ar74L/++/b////////////////////////////////////////////////////////////i + zrWYXyGZYyibZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZiqbZiqb + ZiqZZSqfaSvIgDLRhTLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLO + hDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLO + hDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhTPPhzXPhzXPhzXPhzXPhzXP + hzXQiDjRiz3Riz3Riz3Riz3Riz3Riz3Riz3Riz3Riz3Riz3Riz3Tjj7Tjj7Tjj7Tjj7SjT7SjT7SjT7S + jT7SjT7SjT7Sjj7Sjj7Tjj7Tjj7Tjj7SjD7Riz3Riz3QijvPhzXPhzXPhzXPhzXPhzTOhDLOhDLOhDLO + hDLMfSfbpGf///////////////////////////////////////////////////////////////////// + ///v7+9BQUFBQUFMTEz97cL75bb74rX52KP40ZX3zY72yYj2xIP1wX/1v3v1vXn0vHf0u3b0u3b0u3b0 + u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0 + u3b0u3b0u3b0u3b0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0 + u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0 + vHf0vHf0vHf0vHf0vHf0vHf0vHj0vHj0vnn0vXr1v3z1wH71wYH1woX2xYn2yI/2y5X3zpz40qT51qr6 + 5Mn///7////////////////////////////////////////////////////////+/PvMqoWSWBqUXSKV + XSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXiOVXiOVXiOUXSOfZCTC + eSrNfyvLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivL + fivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivL + fivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfizMgS7MgS7MgS7MgS7MgS7MgS7NgjHOhTfOhTfO + hTfOhTfOhTfOhTfOhTfOhTfOhTfOhTfOhTfOhTfPiDjQiTjQiTjQiDjQiDjQiDjPiDjPiDjQiDjQiDjQ + iTjQiTjQiTjPhjjOhTfOhTfOhTfNhDTMgS7MgS7MgS7MgS7MgC3LfivLfivLfivLfivLfSnLfizu1bn/ + ///////////////////////////////////////////////////////////////////v7+9BQUFBQUFM + TEz868H747L74bP516D4z5L3yov2xoT1wX/1vnv0vHf0unX0uHP0uHL0uHL0uHL0uHL0uHL0uHL0uHL0 + uHL0uHL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0 + uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0 + uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0unL0unL0unL0unP0 + unP0unP0unT0unT0u3T0u3X1vHb1vHj1vnv1v3/2wYP2xIn3x433y5T3z5330qX41az879////////// + /////////////////////////////////////////////////////Pi3ilyKTxGRWB6RWB6RWB6RWB6R + WB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWR6RWR6RWR6MVx2kZCHMeyfKeSbJeSbJ + eSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJ + eSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJ + eSbJeSbJeSbJeSbJeSbJeSbJeifKfSnKfSnKfSnKfSnKfSnKfSnLfizMgTLMgTLMgTLMgTLMgTLMgTLM + gTLMgTLMgTLMgTLMgTLMgTLMgTLNgzPOhTPOhTPOhTPOhTPOhDPOhDPOhTPOhTPOhTPOhDPNgjPMgTLM + gTLMgTLMgTLLgC/KfSnKfSnKfSnKfSnKfCjJeSbJeSbJeSbJeSbJeSbHdR7QikL68+v///////////// + ///////////////////////////////////////////////////v7+9BQUFBQUFMTEz86r/747H64LH5 + 1p73zZD3yIn2w4L1v331vHn0unX0uHLzt3HztnDztnDztnDztnDztnDztnDztnDztnDztnDztnDztnDz + t3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dz + t3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dz + t3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3DzuHDzuHDzuHDzuHDzuHHz + uXHzuXL0uXP0unX0u3f0vXr1v371wYP2w4j2x4/2ypX3zp340qX516/98OL///////////////////// + ///////////////////////////////////////y6NyaYyuITBGNUxmNUxmNUxmNUxmNUxmNUxmNUxmN + UxmNUxmNUxmNUxmNUxmNUxmNUxmNUxmNUxmNVBmNVBmNVBmNVBmuZx7KdyLIdSLIdSLIdSLIdSLIdSLI + dSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLI + dSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLI + dSLIdSLIdiPJeSXJeSXJeSXJeSXJeSXJeSXKeibKfS3KfS7KfS7KfS7KfS7KfS7KfS7KfS7KfS7KfS7K + fS7KfS7KfS7KfS7Lfi7Lfy/LgC/LgC/LgC/LgC/LgC/Lfy/Lfi/Kfi7KfS7KfS7KfS7KfS7KfS7KeinJ + eSXJeSXJeSXJeSXJeCTIdSLIdSLIdSLIdSLIdSLIdSLFbhXernz///////////////////////////// + ///////////////////////////////////v7+9BQUFBQUFMTEz86b764rD637D41Zz3zI72x4f1woD0 + vnvzu3fzuHPzt3HytW/ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7y + tW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7y + tW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7y + tW7ytW7ytW7ytW7ytW7ytW7ztW7ztW7ztW7ztW7ztW7ztW7ztm7ztm7ztm7ztm/ztm/ztnDzt3L0t3P0 + uHT0uXj0u3v1vX/1wIT1won2xo/3ypj4zp/40aT53Lj//Pr///////////////////////////////// + ///////////////////////////exauMTxSITRKLUBaLUBaLUBaLUBaLUBaLUBaLUBaLUBaLUBaLUBaL + UBaLUBaLUBaLUBaLUBaLUBaLUBaLURaKUBaLURa2aRzJdR/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/G + cx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/G + cx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/GdCDHdyLH + dyLHdyLHdyLHdyLHdyLHdyLIeinJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJ + eyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvIeCTHdyLHdyLHdyLHdyLH + dSHGcx/Gcx/Gcx/Gcx/Gcx/Gcx/EcBrLfzL68+v///////////////////////////////////////// + ///////////////////v7+9BQUFBQUFMTEz86b364q/637D41Jv2y432x4b1wX/0vnnzunXzuHHytm/y + tW3ytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzy + tGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytG3ytG3ytG3ytG3ytG3ytG3ytG3y + tG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3y + tG3ytG3ytG3ztG3ztG3ztG3ztG3ztG3ztG3ztG3ztWzztWzztW3ztW3ztW7ytm/zt3H0uHT0uXfzu3r1 + vn71wIT1w4n2x5H2y5j3z6D40qb74cX++/f///////////////////////////////////////////// + ///////////////Qs5SERgmITROKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKUBWITxWTVRfBbx3Icx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx7HdSDHdiHHdiHHdiHHdiHH + diHHdiHIeCXJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeSjHdiHHdiHHdiHHdiHHdiHHdCDGch7Gch7Gch7G + ch7Gch7Gch7Gch7EbRbZoGf9+/n///////////////////////////////////////////////////// + ///v7+9BQUFBQUFMTEz86b364a/53q/31Jv2y431xob0wH/0vXnzuXXzt3HytW/ytG3ys2zys2zys2zy + s2zys2zys2zys2zys2zys2zys2zys2zys2zys2zys2zys2zytGzytGzytGzytGzytGzytGzytGzytGzy + tGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzy + tGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzy + tGzytGzytGzytGzytGzytGzytGzytWzytWzytW3ytW3ytW3ytm/zt3DzuXPzunbzvHr0vn/0wYX1xIv1 + yJL2y5r3z6H30qb76dL////////////////////////////////////////////////////////////8 + +fWodUKCRAiJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWHThWfWxjFch7Hcx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7HdSDHdiHHdiHHdiHHdiHHdiHHdiHIdyPJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirIeCfHdiHHdiHHdiHHdiHHdiHHdB/Gch7Gch7Gch7Gch7Gch7Gch7Gch7F + cR3DaxLqzK7////////////////////////////////////////////////////////v7+9BQUFBQUFM + TEz86b364a/53rD31Jv2y431xob0wH/zvXnzuXXzt3HytW/ytG3ys2zys2zys2zys2zys2vys2vys2vy + s2vys2vys2vys2vys2vys2vys2vys2vys2vytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvy + tGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvy + tGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvy + tGvytGvytGzytGzytWzytW3ytW3ytW3ytW7yt2/zuHLzuXTzu3j0vXz0v4D0wob1xY32yZT2zZv30aP4 + 16/98uX////////////////////////////////////////////////////////////16+GpeEaERwuJ + ThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHThWl + XxrIdB7Hch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7HdB/HdiHHdiHHdiHHdiHHdiHHdiHHdiLJeSbJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeinHdyPHdiHHdiHHdiHHdiHHdiHGch/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7EbBXRjkv++/n/ + ///////////////////////////////////////////////////v7+9BQUFBQUFMTEz86b364a/53rD3 + 1Jv2y431xoX0wX/zvXnyuXXyt3HxtW/xtG3xs2zxs2zxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vx + s2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vys2vys2vys2vys2vy + s2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vy + tGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvy + tGzytGzytWzytW3ytW3ytm/zt3Hzt3PzuXbzu3n0vX30wIL1w4j1xo/2yZb3zp/30aT42rX++PD///// + ///////////////////////////////////////////////////////l08CHSg2GSxCJThSJThSKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWIThWNURW7ax3JdB7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7HdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiLJeinJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirIeCXHdiHHdiHH + diHHdiHHdiHHdSDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7GcRzFbxnrzK7///////////////// + ///////////////////////////////////v7+9BQUFBQUFMTEz86b364a753q/31Jr2y4z1xoX0wX7z + vXjyuXTyt3DxtW7xtGzxs2vxs2vxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rys2rys2rys2rys2rys2rys2ry + s2rys2rys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vy + s2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2rys2vys2vytGvytGzy + tGzytG7ztW/ztnDzuHPzuXb0u3r0vX71wIP0w4r1x5H2ypj3zp/30aX638H//fz///////////////// + /////////////////////////////////////////v3Oro2JTRGITBKJThSJThSKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWJThWRUxe5ahzIdB7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7H + dSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHIeCTJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeSjIdiHHdiHHdiHHdiHHdiHHdiHHcx7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7FbxnJeivy38z///////////////////////////// + ///////////////////v7+9BQUFBQUFMTEz86b364a753a/305r2yoz1xYX0wH7zvXjyuHTytnDxtG7x + s2zxsmvxsmvxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrx + smrxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rys2rys2rys2rys2rys2vys2vytGvytGzytG3ytW/z + tnDzt3PzuXf0u3v0vn/0wIX1xIv2yJL3y5r30KL30qf869f///////////////////////////////// + //////////////////////////////+8lGuBQgWJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWGTRWaWBfHcx7Hcx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7HdB/HdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHIeSbJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeinHdiPHdiHHdiHHdiHHdiHHdiHHdSDGch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7CaA7bpXD///////////////////////////////////////////// + ///v7+9BQUFBQUFMTEz86b364a/53q/305r2yoz1xYX0wH7zvXjyuHTytnDxtG7xs2zxsmvxsmvxsmrx + smrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rys2rys2rys2rys2vys2vytGvytGzytG3xtW7ytnDztnHzuHTyunj0 + vHz0v4D0wYb1xY31yJP2zZv30KP41av87d3///////////////////////////////////////////// + ///////////////17eSfaTOERwqJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWnYBrHch7Hch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7HdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHIeCXJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeSjHdyLHdiHHdiHHdiHHdiHHdiHHdiHHdB/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7FcBrJeSr05NT////////////////////////////////////////////v7+9BQUFBQUFM + TEz76bz64a353q/305n1yov0xYTzwH3yvXfxuHPxtm/wtG3ws2vwsmrwsmrwsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmrxsmrxsmrxsmrxsmrx + smrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2vxs2vxtGvxtGvxtGzxtW7ytm/yt3LyuHTyunjzvHzzv4H0wof0 + xY/1yZX2zZ720KT42rb++/f///////////////////////////////////////////////////////// + ///n1L+PVRqGShCJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWJThWIThWwZRvJcx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx7HdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHIeCXJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeSfHdiLHdiHH + diHHdiHHdiHHdiHHdiHHdSDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7D + axPWmVz+/Pr////////////////////////////////////////v7+9BQUFBQUFMTEz76Lz64K353a/3 + 0pn1yYv0xYTzwH3yvXfxuHPxtm/wtG3ws2vwsmrwsmrwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmrxs2rxs2rxs2vxtGzxtG3ytXDyt3LyuHTzuXjzvXzzv4L0woj1xo/1ypf2zp/3 + 0KX53sD++fT////////////////////////////////////////////////////////////XvaKFRwuI + TROJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWIThWQ + Uxa+bR3Hcx7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7HdSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHIdyPIeCbJeinJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirIeSjIeCTHdiLHdiHHdiHHdiHHdiHHdiHHdiHH + diHHcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch3DaxPkvZX///// + ///////////////////////////////////v7+9BQUFBQUFMTEz76Lz64K353a/30pn1yYv0xITzwH3y + vHfxuHPxtm/wtG3ws2vwsmrwsmrwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmrxs2rxs2rxs2vxtGzytG7ytW/yt3LyuHXzunnzvH70v4P0wor1x5H2ypj2zqH30KT75c3///// + ///////////////////////////////////////////////////////+/Pmuf0+DRQiJThSJThSJThSJ + ThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWaWBfDcB7Gch7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7HdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHIeCTIeSfJeSnJeirJeirJeirJ + eirJeirJeirJeirJeinIeSjIeCXHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdB/Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7EbRbPiEH+/Pv///////////////// + ///////////////////v7+9BQUFBQUFMTEz76Lz64K353a/30pn1yYv0xITzwH3yvHfxt3PxtW/ws23w + smvwsWrwsWrwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnw + sWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnxsmnxsmrxsmrxs2rx + s2rxs2zwtG3xtG7ytnHyt3PyuXbzu3rzvn/zwIX0xIv1yJL1y5r2z6L31Kz87+D///////////////// + ///////////////////////////////////////////58uqvgVKERgqJThSJThSJThSJThSJThSJThSK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWhXBnHcx7GcR7FcR7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx7H + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHIdyLIdyPIeCTIeCXIeCXIeCXIeCTIdyTI + dyPHdiLHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdCDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch3Ebhfhtov///////////////////////////////// + ///v7+9BQUFBQUFMTEz76Lv54K353a/30pj1yYrzxIPywH3xvHfxt3LwtW/vs2zvsmrvsWnvsWnvsWjv + sWjvsWjvsWjvsWjvsWjvsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmrwsmrws2rws2rws2zwtG3x + tW/xtnDxt3PxuXfyvHzyvoHzwYbzxY31yJX1zZ320KL31q/99er///////////////////////////// + ///////////////////////////////p2smKTRKGSg+JThSJThSJThSJThSJThSJThSJThSKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWJThWKTxW1ZxzIcx7FcR7FcR7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx7HdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiDHdiDHdiDHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdSDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7FcBrFcR3y3sr////////////////////////////////v7+9BQUFBQUFM + TEz757v54K353a/30pj1yIrzw4Pyv33xu3fxtnLwtG/vsmzvsmrvsWnvsWnvsWjvsWjvsWjvsWjvsWjv + sWjvsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWnwsmnwsmnwsmrws2vxtGzxtG7xtnHxt3Py + uXfyu3zyvoHzwYf0xY71yZX2zZ720KP43Lr//Pn///////////////////////////////////////// + ///////////////////XvJ+MUBWHTBGJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWJTxWOURa1aBzIcx7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx/HdSHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdCDGch/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7DaxPXml/////////////////////////////////v7+9BQUFBQUFMTEz757v54Kz53a73 + 0pj1yIrzw4Pyv33xu3fxtnLwtG/vsmzvsWrvsWnvsWnvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjv + sWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjv + sWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWnwsWnwsmnwsmrws2vxs2zxtG/xtnHxuHTyuXnyvH3zvoPz + won0xpD1ypj2zqD20KT75c3//v7///////////////////////////////////////////////////// + ///////DnnmBQgWJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWGTRWXVhfFcR7Gch7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx7HdSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdCDGch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7FcBvH + dCLz4M3////////////////////////////v7+9BQUFBQUFMTEz757v54Kz43a720pj1yInzw4Lyv3zx + u3bxtnHwtG7vsmvvsWnvsGjvsGjvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsWfvsWfvsWfv + sWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWjvsWjvsWjvsWjv + sWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjv + sWjvsWjvsWjvsWfvsWjvsWnwsmnwsmnwsmrws2vxs23xtW/xtnHxuHXyunnyvH7ywIPzw4r0x5H1ypn1 + z6D20af76dT////////////////////////////////////////////////////////////48+2lc0GC + RQmJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWJ + ThWhXBjEcB7Gch7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7HdB/HdSHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdSDHcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7EbhfPiUL47eP///// + ///////////////////v7+9BQUFBQUFMTEz757v536343a720pj0yInzw4LxvnzwunbwtnHvs27usWvu + sGnur2jur2jur2fusGfusGfusGfusGfusGfusGfusGfusGfusGfusGfusGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfv + sWfvsWfvsWjvsmjvsmjvsmnws2rws2zwtW/wtnHxuHXxunnxvX7ywITzw4v0x5P0zJv1z6L31q/+9/D/ + ///////////////////////////////////////////////////////////w4tKXXyeGSQ6JThSJThSJ + ThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWrYhrJcx7F + cR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx7HdSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdSHHdB/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7CaA3htYj///////////////////// + ///v7+9BQUFBQUFMTEz757v536z43a320Zf0yInzw4LxvnvwunXwtnHvs27usWvusGnur2jur2jur2fu + r2fusGfusGfusGfusGfusGfusGfusGfusGfusGfusGfusGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGjvsGjv + sWjvsWjvsmrvsmvws23wtG/wtnLxuHbxu3rxvX/ywIXzxI30yJT1zJz2z6L42bf+9u3///////////// + ///////////////////////////////////////////////hzLaISw+HTBGJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWJThWPUha5ahzIcx7FcR7FcR7FcR7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Hcx/HdB/HdSDHdSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdSDHdCDHcx/G + cx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7EbxnOhTr58un////////////////////v7+9BQUFBQUFM + TEz757v536z43a320pj0yInzw4LxvnvwunXwtnDvs23usWrusGjur2fur2fur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2busGbusGbusGbusGbusGbusGbusGbusGbusGbusGbvsGbv + sGbvsGbvsGbvsGbvsGbvsGbvsGbvsGbvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGjvsGjvsWjvsWnvsmrw + smvws23wtHDwtnPxuHfxu3zyvYHzwYjzxY/0yZb1zZ/1z6L54cX///////////////////////////// + //////////////////////////////////+9lGqDRAiITROJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWVVRfAbh3Gch7FcR7FcR7FcR7FcR7FcR7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gcx7HdB/HdCDHdSDHdSDHdSDHdSDHdSDHdSDHdB/Gcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/FbxfhtIb////////////////////v7+9BQUFBQUFMTEz757v536z43a32 + 0pfzyInyw4LxvnvwunXvtm/vs2zusWnusGjur2fur2fur2bur2bur2burmburmburmbur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2busGbusGbusGbusGbusGbusGbusGbusGbusGbusGbvsGbvsGbvsGbvsGbv + sGbvsGbvsGbvsGbvsGbvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGbvsGfvsGjvsWjvsWjvsWnvsmrws2vws23wtXDx + t3PxuXjxvHzyvoLzwoj0xpD0ypj1zp/20qf76dX///////////////////////////////////////// + ///////////////////8+fW4kGaERgqJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWdWhjGch7GcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IcyDIdyPt0LP////////////////v7+9BQUFBQUFMTEz757v536z43a320Zfzx4jywoHxvXrw + uXXvtm/usmztsGntr2jtrmftrmftrmbtrmbtrmbtrmbtrmbtrmbtr2btr2btr2btr2btr2btr2btr2bt + r2btr2btr2btr2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2busGbusGbusGbu + sGbusGbusGbusGbusGbusGbusGbusGbusGfusGfusWfusWfusWnvsmrws2vwtG3wtnDxt3TxunjxvH3y + v4Pzw4r0xpL1y5r1zqD20qj88eT///////////////////////////////////////////////////// + ///////w5tqPVBqFSA2JThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWK + TxWKTxWKTxWJTxWJTxWwZRvIch7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLHchvX + nV3////////////////v7+9BQUFBQUFMTEz757v536z43a320Jfzx4jywoHxvXrwuXXvtm/usmztsGnt + r2ftrmftrmftrmbtrmbtrmbtrmbtrmbtrmbtrmbtr2btr2btr2btr2btr2btr2btr2btr2btr2btr2bt + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2busGfusGfusGjusWnvsmrvsmvvs27vtXHwuHXwuXrxvH7yv4Xyw4z0x5P0 + y5v0zqH32LX++vX////////////////////////////////////////////////////////////gy7WS + WB+GSg+JThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWJ + TxWLUBawZRvIcx7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeCTKfSnt0bP///////// + ///v7+9BQUFBQUFMTEz657v53qz43K310Jfzx4jxwoHwvXrvuXXutm/ts2ztsGnsr2bsrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtr2Xtr2Xt + r2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xu + r2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2XurmXurmXur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xu + r2Xur2Xur2bur2busGbusGfusGjvsmrvs2zvs23vtXHwt3XwuXrxvYDywIbyxI3zx5T0zJ31z6H54MT/ + /fv////////////////////////////////////////////////////////////Nro+BQgSIThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWHTRWTVRfDcB7H + ch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbKeSXTkEf68+r////////v7+9BQUFBQUFM + TEz657v53qv43Kz10Jfzx4fxwoDwvXrvuXTutm7ts2vtsGjsr2bsrmXsrmXsrmTtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXu + rmXurmXurmXurmXurmXurmXurmXurmXurmXur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2bu + sGbusGbusGfusWjusmrvsmvvtG/wtnLwuHbxunvxvYHywYfzxY70yJb1zZ71z6P65s7///////////// + ///////////////////////////////////////////////69vGtf1GCRAiJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWJThWcWRjBbx3Gch7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivLfSfkuIj////////v7+9BQUFBQUFMTEz657v53qv43Kz1 + 0Jfzx4fxwYDwvHrvuHTutW7tsmvtr2jsrmbsrWXsrWXsrWTsrWTtrWXtrWXtrWXtrWXtrWXtrWXtrWXt + rWXtrWXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2btr2btsGbtsGbtsGjt + sWnusmrvs2zvtXDwtnPwuHjwu3zxvoLywonzxZD0ypn0zqD106v89Or///////////////////////// + ///////////////////////////////////37+aeaDSESAyJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWGTRWlXhnIcx7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivNgS7VlEr79Oz////v7+9BQUFBQUFMTEz657v53qv43Kz10Jfzx4fxwYDwvHrv + uHTutW7tsmvtr2jsrmbsrWXsrWXsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTt + rWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTt + rmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmTtrmXtrmbtr2btr2btr2fusWnusWrusmzv + tHDwtnPwuXjwu33xvoPyworzxpLzypr0zaD21rD88+j///////////////////////////////////// + ///////////////////////m1cOITBKGShCJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSKTxWKTxWKTxWKTxWKTxWJThWMUBazZxzIch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Ich7Jch7LdSDNfCXM + fSXJeiTGcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLQhzThsnn9+vbv7+9BQUFBQUFMTEz657r53qv43Kv1z5byxobwwH/vvHnut3PttG3ssWrsr2fr + rmXrrWTrrWTrrWPrrWPrrWPrrWPrrWPsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrGTsrGTsrGTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrmTsrmTsrmTsrmTsrmTsrmTsrmTsrmTsrmTsrmTtrmTtrmTt + rmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrWTt + rWTtrWTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmXtr2Xtr2Xtr2btr2fusWjusWrusm3vtXDvtnTvuHjw + u37xvoTyw4vzx5Pzy5z0zqD33b7///////////////////////////////////////////////////// + ///////////Gon6ERgqITBOJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSK + TxWKTxWKTxWKTxWIThWQUha8bB3Hch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Ich7Lch7NcR7QeyTRgijQgCfOgSfJeSPGcR7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSijrTjTnv + 17Xv7+9BQUFBQUFMTEz657r53qv43Kv1z5byxobwwH/vvHnut3PttG3ssWrsrmfrrWXrrGTrrGTrrGPr + rGPrrGPrrGPrrGPrrGPsrGTsrGTsrGTsrGTsrGTsrGTsrGTsrGTsrGTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTtrWTtrWTtrWTtrWTtrWTt + rWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrmTtrmTt + rmTtrmTtrmTtrmTtrmTtrmTtrmXtrmXtr2Xtr2btsGjusWnusmvts27utHHvtnXwuXrwvIDxwIbyxI3z + yJX0zJ31z6T65c3//fz//////////////////////////////////////////////////////////fvB + nXmCRQmITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWK + TxWHThWZWBjFcR7Hch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Hch7Kch7Nch7SdyHWhivXiy7UhyzQgSjLeiPGcR7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvUkD3grm7u7OtBQUFBQUFM + TEz657r53qv43Kz1z5byxobwwH/vvHnut3LttG3ssWrsrmfrrWXrrGTrrGTrrGPrrGPrrGPrrGPrrGPr + rGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrWPrrWPrrWPrrWPrrWPrrWPrrWPrrWPr + rWPrrWPrrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPs + rWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPs + rWPsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWPsrWTsrWXsrmTsrmXsrmbsr2ftsGntsWvts27utHHvt3XwunrwvYDywIfyxI/zyZf0zJ/1z6T7 + 7Nv////////////////////////////////////////////////////////////17eSUWyWCRQqITRWJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWIThWoYRrI + cx7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Ich7Lch7Qcx/VfybZijDakTbYjTDRginLdiHGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0PYmUnjzrJBQUFBQUFMTEz657n53qv426v1 + z5XyxYXwwH7vu3jut3Hts2zssGnsrWbrrGTrq2PrrGPrrGLrrGLrrGLrrGLrrGLrrGLrrGLqrGLqrGLq + rGPrrGPrrGPrrGPrrGPrrGPrrGPrq2Prq2Prq2PrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPs + rGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrWPs + rWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPs + rWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrGPsrGPsrGPsrWPsrWPsrWPsrWPsrWPsrWPs + rWTsrmTsrmTsrmXtr2ftsGntsmvts27utXHvt3bwunzwvYHxwYjyxZDzypj0zJ/21a/99u3///////// + ///////////////////////////////////////////////////o2cmbZTCESA2ITRSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWJTxWrYxvIcx/FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Ich7MdB/S + fSbYii3blD7bkDzWhSrQeCLKcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TZmkvSoF0/PDhBQUFMTEz657n43qv326v0z5bxxYXwwH7uu3jt + t3Hss2zrsGnrrWbqrGTqq2Pqq2Pqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lrq2Prq2Prq2Pr + q2Prq2Prq2Prq2Prq2Prq2PrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPr + rGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPr + rGPrrGPrrGPrrGPrrGPrrGPrrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPs + rGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrWPsrWPsrWPsrWPsrWPsrWPsrWTsrWTsrmTsrmXs + rmbtsGjtsWrtsmvus27utXPuuHjvu33wvoPxworyxpLzy5vzzaD327r++/f///////////////////// + ///////////////////////////////////////ZwaiCRAeHSxKITRSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWIThWQUxbAbx3Ich7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hch7NeiTSginXii7ZkDTYiS7S + fCXNcx7Kch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/PmEw8NChBQUFMTEz657n43qv326v0z5bxxIXwwH7uu3jtt3Hss2zrsGnrrWbq + rGTqq2Pqq2Pqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Hrq2Hrq2Lrq2Lrq2Lrq2Lrq2Lr + q2Lrq2Lrq2Lrq2LrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLsrGLsrGLsrGLsrGLsrGLsrGLsrGLsrGLsrGLsrGPsrGPsrGPsrGPsrGPsrGPsrGPs + rGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrWPsrWPsrWPsrWPsrWPsrGPsrWPsrmTrrWXsrmXtsGjtsGnt + smzts2/utnPut3jvu33xv4Txwozyx5Tzy5z0zqH44cb///////////////////////////////////// + ///////////////////////8+vi9lm+ERguHTBOITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSKTxWKThWIThWYVxe/bh3Hch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7MfCXQgSfSgijUhSrTgCfOdSDLch7Ich7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/QnFM6LhxAPTlMTEz657n43av326v0z5XxxIXwv37uunfttnHssmvrr2jrrGXqq2PqqmLqqmLqqmHq + qmHqqmHqqmHqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lq + q2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lr + q2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2LrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGPrrWPrrWPrrWTsrmXsr2fssWrssWzts3DttXTu + uHnwvH/xv4byw43zyJXzy5700Kb88OL///////////////////////////////////////////////// + ///////////++/atfU+BRAmITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSGTRWiXRnIcx7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Fch/Fch/F + ciDGcyDHdCDHdCDHcyDGcx/Gch7JeCLNgCfPgCfPfyfNdiHKch7Ich7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6LRk9NSZM + S0v657n43av326v0z5XxxYXwv37uunfttnHssmvrr2jrrGXqq2PqqmLqqmLqqmHqqmHqqmHqqmHqqmHq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hr + q2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2HrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHr + rGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLrrGLrrGLrrGPrrGPrrWPrrWTrrWXsrmbsr2jssGrssm3ttHHttnXvuXrwvIDwwIfx + xI/yyZfzzJ710qv88OP////////////////////////////////////////////////////////////v + 4tSRWCCESA2ITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSIThSLTxWwZRvHch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7GcR7GciDGcyHGcyHGcyHGcyHHdCHHdCHH + dCHHdCHHdCHGcyDIdiHJeCLJdiHIch7Hch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs7MB1KRz3657n43av326v0 + z5XxxYXvv37tunfstnHrsmvqr2jqrGXpq2PpqmLpqmLpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHp + qmHpqmHpqmHpqmHpqmDpqmDqqmDqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqq2Hqq2Hqq2Hqq2Hq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hrq2Hrq2Hrq2Hrq2Hr + q2Hrq2Hrq2Hrq2Hrq2Hrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lr + rGLrrGLrrGLrrGPrrWPrrWPrrWTrrmXsr2fsr2jssWvtsm7ttHHutnbvuXzvvYLwwYrxxZHyypnzzJ/2 + 2rj//vz////////////////////////////////////////////////////////////Ut5mGSQ6HTBOI + ThaIThaITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxaJTxaJTxaJTxWJThWJThSJThSJThSIThSMUBW3 + aRzIcx7FcR7FcR7FcR7FcR7FcR7Fch/GcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHHdCHHdCHHdCHHdCHH + cyDGcR3GcR3Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR5JQjP65rj43Kr32qv0zpXxxITvvn3tuXbs + tXDrsWrqrmfqq2TpqmLpqWHpqWHpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDp + qmDpqmDpqmDpqmDqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHq + qmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHq + qmHqqmHqqmHqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hr + q2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2HrrGHrrGHrrGHr + q2LrrGLrrWLrrGPrrWTsrmbsr2jssGrtsm7stHLtt3buun3vvYPwwYryxpLzypvzzqL44cb//Pn///// + ///////////////////////////////////////////////////////JqouDRw6HThaITheITheITheJ + TxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxaJTxaJTxaHTRSUVBfBbx3Hch7FcR7F + cR7FcR7Gch/GcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHHdCHHdCHHdCHHdCHHdCDGch/Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD65rj43Kr32qv0zpXxxITvvn3tuXbstXDrsWrqrmfqq2Tp + qmLpqWHpqWHpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDp + qmDpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHp + qmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHq + qmHqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Dqq2Dq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Lqq2LqrGLqrGLq + rGTqrWXrrmbrr2jrsGzssm/stXPtt3jtun7vvoXxwo3yx5Xzy5zzzaH66NT///////////////////// + ///////////////////////////////////////79vCfaziCRQyITheITheITheITheITheJTxeJTxeJ + TxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeHTReiXRvGch/GcR7FcR7FcR7GcyDGcyHG + cyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHHdCHHdCHHdCHHdCHHcyDGch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD65rj43Kr32qv0zpXwxITvvn3tuXbstXDrsWrqrmfqq2TpqmLpqWHpqWHpqWDp + qWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqV/pqV/pqWDp + qWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmHqqmHqqmHq + qmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqq2Dqq2Hqq2LqrGHqrGLqrGPrrmXrrmbr + sGnssWvss2/stXTtuHnuu3/vvobxw47yyJbzzJ300qv89On///////////////////////////////// + ///////////////////////////v5NigbTyDSBCITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJ + TxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeHThinYRzIcyHFciDGcyDGcyHGcyHGcyHGcyHGcyHGcyHG + cyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHHdCHHdCHHdCHHcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD65rj43Kn32arzzZXwxITtvX3suHbrtG/qsGnprWbpqmPoqWHoqGDoqGDoqF/oqF/oqF/oqF/oqF/o + qF/oqF/oqF/oqF/oqF/oqF/oqF/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/pqWDpqWDpqWDpqWDp + qWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDp + qmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqWDpqWDpqWDpqmDpqmDpqmDpqmDp + qmDpqmDpqmDpqmDpqmDpqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqq2DqqmHqq2HqrGHqq2Lqq2PrrWTrrmbrr2jssWvss2/s + tXTuuHrvu4Dvv4jwxJDxyZjyy53117T++fT///////////////////////////////////////////// + ///////////////eybSERw2GSxSITheITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJ + TxeJTxeJTxeJTxeJTxeHTheNURe7bB/HcyHGdCTGdCPGdCLGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHG + cyHGcyHGcyHGcyHGcyHHdCHHdCHHcyDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55rj43Kn22ary + zZTvxITtvX3suHbrtG/qsGnprWbpqmPoqWHoqGDoqGDoqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/o + qF/oqF/oqF/oqF/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/pqWDpqWDpqWDpqWDpqWDpqWDpqWDp + qWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDp + qWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDp + qmDpqmDpqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmDqqmDqqmHqqmHqqmHqq2Hqq2Lqq2PrrWXrrWbsr2nssG3ss3DttnbuuXvvvILw + wInxxJHyyZryzaD33sH//v7////////////////////////////////////////////////////////+ + /PvFon6FSQ+HTRaITheITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJ + TxeJTxeHTheSVBi6bCDHdSTGdCTGdCTGdCPGdCLGcyHGcyHGcyDGciDGcyDGcyHGcyHGcyHGcyHGcyHG + cyHGcyHHdCHHdCHGch/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55rj43Kn22aryzZTvxITtvX3suHbq + tG/psGnprWbpqmPoqWHoqGDoqGDoqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/o + qF/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/o + qV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/p + qV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pql/pql/pql/pql/pql/pql/pql/pql/pql/pql/q + ql/qql/qql/qql/qql/qql/qql/qql/qql/qqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmHqq2Hqq2Hpq2LrrGPrrWXqrmjqr2rssW3stHLttnfuun3vvYTwwozxxpXxy57z + z6X67Nv//////////////////////////////////////////////////////////////vyxhlqAQwqI + TheITheITheITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeFTRac + WxvHdCPGdCTGdCTGdCTGdCTGdCPGch/GcyDIeCjKfC/JeSrHdCLGcyHGcyHGcyHGcyHGcyHGcyHGcyHG + cx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55rj43Kn22aryzZPvxIPtvXzsuHXqtG/psGjorWXpqmLo + qWDoqF/oqF/oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7op17op17op17o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqV/oqV/oqV/o + qV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/p + qV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/oqV/oqV/pqV/pqV/p + qV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqV/p + qWDpqWHpq2Hpq2Hpq2LqrWPqrWXqrmfrsGrrsW3stHLsuHntu3/uv4fvw4/wyJfyy57z0an77t3///// + ///////////////////////////////////////////////////////y6d+YYS2DSA+ITheITheITheI + TheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJUBipYx/GdCPGcyPF + cyTGdCTGdCTIfTbMi07Tm2jbrYHUllrJeSrGcyDGcyHGcyHGcyHGcyHGcyHGcyHGch/Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55bj43Kn22aryzZTvw4PtvXzst3Tqs2/pr2jnrGXnqWLmqGDnp1/np1/np17n + p17np17np17np17np17np17np17np17np17np17np17np17np17np17np17np17nqF7nqF7nqF7nqF7n + qF7nqF7nqF7nqF7nqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7pqV7pqV7pqV7pqV7pqV7p + qV7pqV7pqV7pqV7pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqWDpqWDpq2Dp + q2Hpq2LqrGPqrWXqrmfrsGvrs3DstXbtuHrtvIHuwInwxJDxyZnyy5/01rP++/j///////////////// + ///////////////////////////////////////////gybKLURiGSxOITheITheITheITheITheITheI + TheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeIUBiJUhqxaCDIdSPFcyPFcyLHei7NkVvO + l2XVpXrfu5rZq4DLgDfGcR/GcyHGcyHGcyHGcyHGcyHGcyHGch/FcR7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55bj33Kn22aryzZTvw4PtvXzrt3Tqs2/or2jnrGXnqWLmqGDmp1/np1/np17np17np17np17np17n + p17np17np17np17np17np17np17np17np17np17np17np17np17nqF7nqF7nqF7nqF7nqF7nqF7nqF7n + qF3nqF3oqF3oqF7oqF7oqF7oqF7oqF7oqF7oqF7op17op17oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7pqV7pqV7pqV7pqV7pqV7pqV7pqV7pqV7p + qV7pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqWDpqWDpqmDpqmHpqmLqq2Tq + rWfqr2rqsW3rsnLstXbtuXzuvIPvwIrwxJLxyZvyzKH23L/++vX///////////////////////////// + ///////////////////////////////QtJiERg2HTRaITheITheITheITheITheITheITheITheJTxeJ + TxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeKUBiIURqRVhu+byLHdCPFcSDIfzrNlGLNlGDRmWjTn3DRnW7L + hUPGch7GcyHGcyHGcyHGcyHGcyHGcyHGch/FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j22any + zZPvw4PtvXvrt3Tqs27or2jnrGTnqWHmqF/mp17mp17np13np13np13np13np13np13np13np13np13n + p13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13n + p17np17np17np17np17np17np17np17np17nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF/oqF/oqV/oql/oqmHprGPprWbprmfqr2rqsW3q + tHLst3ftuX3uvYTvwYvvxpTwypzyzKD45c7///////////////////////////////////////////// + ///////////////9+vepekuBRAqITheITheITheITheITheITheITheITheITheITheJTxeJTxeJTxeJ + TxeJTxeJTxeJTxeKUBiKUhqHURqbXB3DcSLGciDIfzvMlGHMk1/Nk1/Nk1/NlGPKhEPGch/GcyHGcyHG + cyHGcyHGcyHGcyHFch/FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j22anyzJPvwoPtvHvrt3Tq + sm7ormjnrGTnqGHmp1/mpl7mpl7mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3m + pl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mp13mp13mp13mp13mp13mp13mp13mp13mp13np17np17np17n + p17np17np17np17np17np17nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7op17op17op17oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF3oqF3oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF/oqWDoqmHoq2PprGTprWbpr2jqsGvqsm7qtHPst3jsun/t + voXvwo3vx5Xxy53y0an78OH///////////////////////////////////////////////////////// + ///27+aqfE6DRg6ITheITheITheITheITheITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJ + TxeJURqIURqFTxqkYB/GcyHHejDMkVzMk2HNk1/NlGHNklzIfDTGcyPGdCPGcyHGcyHGcyHGcyHGcyDF + cR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j22KnyzJPvwoPtu3vrt3Tqsm7ormjnrGTnqGHm + p1/mpl7mpl7mpl3lpl3lpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3m + pl3mpl3mpl3mpl3mpl3mp13mp13mp13mp13mp13mp13mp13mp1zmp1znp1znp13np13np13np13np13n + p13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13n + p13np13np13np13np13np13np13np13np13np13np13np13np13np13nqF3nqF3nqF3nqF3nqF3nqF3n + qF3nqF3nqF3nqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqV/oqWHoqmHoqmLpq2PprGTprWbprmjqr2vqsXDrtHTst3rtu4Dtvofvw4/wyJjx + y57z06799e3////////////////////////////////////////////////////////////m1cSHSxKF + SxOITheITheITheITheITheITheITheITheITheITheITheJTxeJTxeJTxeHTheGTReJUBiSVhumYR65 + bSHFcyPFcyPIgTzLjlfMkl7MkFrIgDrGcyLGdCTGdCTGdCPGcyHGcyHGcyHFcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55bf326j12KjyzJPvwoLsu3rqtnPpsm3nrmfnrGPmqGDlp17lpl3lpl3lplzl + plzlplzlplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzm + plzmpVzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplznpl3npl3npl3npl3npl3npl3npl3npl3n + pl3np13np13np13np13np13np13np13np13np13mp13mp13mp13np13np13np13np13np13np13np13n + p13np13np13np13np13np13np13np13np13np13np13nqF3nqF3nqF3nqF3nqF3nqF3nqF3nqF3nqF3n + qF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF7oqF7oqF7oqF7oqF7op13oqF7oqF/o + qV/oqWDoqWDoqmHoqWLoqmPpq2TprGbprWjqr2zqsm/rtXXsuHrtu4Huv4nvxJDxyJnxy5/127r//fv/ + //////////////////////////////////////////////////////////3Ps5WHTBOGTBWITheITheI + TheITheITheITheITheITheITheITheITheHTReHTheRVBikXxu0Zx7AcCHHdCPHdCPFcyPFcyPFcyLG + dynGeS7GdyrFciLFcyPGdCTGdCTGdCTGdCPGcyHGch/FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55bf326j12KjyzJPvwoLsu3rqtnPpsW3nrWfnq2Pmp2Dlpl7lpV3lpV3lpVzlpVzlpVzlpVzlpVzm + pVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzm + plzmplzmplzmplzmplzmplzmplzlplzlplzlplzmplzmplzmplzmplzmplzmplzmplzmplzmp1zmp1zm + p1zmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp1znp1znp1znp1znp1znp1znp1znp1znp1znp1znp1znp1zn + p1znp1znp1znp1znp1znp1znp1znplznplznp1znp1znp1znp1znp1znp1znp1znp1znp1znp1znp1zn + p1znp1znp1znp1znp1znp1znp1znp1znp13np13np13np13np13np13nqF7nqF/nqF/nqF/nqGDnqGDn + qWDnqWLoqWLorGTorWbprmnpsGzqs3HqtXbsuXztvILtwIrvxZLwyZvxzaH45tH///////////////// + //////////////////////////////////////////////++mHOAQwmITheITheITheITheITheITheI + TheITheGTReFTBeITheRUxioYRy/bx/HciDHciDGcyHFcyPFcyPFcyPFcyPFcyPFciLFciHFciLFcyPF + cyPGdCTGdCTGdCTGdCTGdCLFcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j12Kjy + zJPvwoLsu3rqtnPpsW3nrWfnq2Pmp2Dlpl7lpV3lpV3lpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzl + pVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlplzlplzlplzl + plzlplzlplzlplzlplvlplvmplvmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzm + plzmplzmplzmplzmplzmplznplznplznplznplznplznplznplznplznplznplznplznplznplznplzn + plznplznplznplznplznplznp1znp1znp1znp1znp1znp1znp1znp1zmp1zmp1zmp1znp1znp1znp1zn + p1znp1znp1znp1znp1znp13np13np13np13nqF7nqF/nqF/nqF/nqF/nqF/nqGDnqWDnqWHnqWHoqmLo + rGTorWfpr2rpsW3qs3HqtnfruXztvYTtwYzvxpTwyZzxzqT56tf///////////////////////////// + ///////////////////////////////28OqfbTyBRg2ITheITheITheITheHTheGTReFTBeSVBmoYRy2 + aB7BbyDGcSDFcSDEcSDEcSDEcSDFciHFcyLFcyPFcyPFcyPFcyPFcyPFcyPFcyPFcyPFcyPGdCTGdCTG + dCPFciLFciDFcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j12Kfxy5LuwYHrunnqtXPo + sGznrGbmqmLlpl/kpl3kpVzkpVzkpVvkpVvkpVvkpVvkpVvkpVvkpVvkpVvlpVvlpVvlpVvlpVvlpVvl + pVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvl + pVvlpVvlpVvlpVvmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmplzmplzmplzmplzmplzmplzmplzm + plzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzm + plzmplzmplzmplzmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp1znp1znp1znp1znp1znp1znp1zn + p1znp1znp1znp1znqF3nqF7nqF7nqF7nqF7nqF7nqF7nqF/nqF/nqV/nqWDnqWHoqmLoq2TprWbpr2rp + sW3qs3LqtXfsun7tvYXuwY3wxpbwyp3z1K79+PP///////////////////////////////////////// + ///////////////////q2siRWiSEShKITheFTBeFTReITheUVRmvZB3BbyDHciHFcSDEcCDDcCDDcCDD + cCDEcSDEcSDEcSDEcSDFciLFcyPFcyPFcyPFcyPFcyPFcyPFcyPFcyPFcyPFciLFciHFciHFciHFciDF + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j12Kfxy5LuwYHrunnqtXPosGznrGbmqmLlpl/k + pV3kpFzkpFzkpFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvl + pFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpVvlpVvlpVvlpVvlpVvlpVvlpVvl + pVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlplvlplvlplvlplvlplvlplvlplvlplvlplvlplvl + plvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvm + plvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvnplvnplvnplvnplvnplvnplvnplvnplvnp1zn + p17np17np17np17np17np17np17np17np1/nqF/nqF/nqGDoqGLoqmLoqmTorWfpr2rqsW7qs3Prt3nt + un/tvofvw4/wyJjwy5/02Lf99+////////////////////////////////////////////////////// + ///////aw6yDSBCGTBWaWBqqYhy4ah/CcCDGciDEcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDE + cSDEcSDFciHFciLFciLFciLFciLFciLFciLFciHFciHEcSDEcSDFciHFciHFciHFciDFcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55bf326j12Kfxy5LuwYHrunnqtXPosGznrGbmqmLlpl/kpF3ko1zkpFzkpFvk + pFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvl + pFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpVvlpVvlpVvlpVvlpVvlpVvlpVvkpVrkpVrkpVrlpVvl + pVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlplvlplvlplvlplvlplvlplvlplvlplvlplvlplvmplvmplvm + plvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmpVvmpVvmplvmplvm + plvmplvmplvmplvmplvmplvmplvmplvnplvnplvnplvnplvnplvnplvnplznp13np13np17np17np17n + p17np17np17np17np17np1/nqF/nqF/mqGHnqWHoqWPnqmXormjpr2vpsm/qtHXrt3rsu4Htv4nvxJLv + yZrwy5724Mb//////////////////////////////////////////////////////////////vy+j2Gq + XBHDbyDHciHFcSDEcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDFciHFciHFciHFciDFcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55bb326f12KfxypHuwIDrunnqtHLosGvnrGXmqWHlpV7kpFzko1vko1vkpFrkpFrkpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrjpFrjpFrjpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrlpVvlpVvlpVvlpVvl + pVvlpVvlpVvlpFvlpFvlpFvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvmpVvmpVvmpVvmpVvm + pVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmplvmplvmplvmplvmplvm + plvmplvmplvmplvlplvlplvmplvmplvmplvmp1vmp13mp13mp13mp13mp13mp13mp17mp17mp17mp17m + p13mp17mp1/mqF7mqF/mqGDnqWLnqWPnrGXnrWjor2vpsXDqtHbrt3vsu4Ltv4rvxZPvyZvxzqT569n/ + ////////////////////////////////////////////////////////////9/DZn2e/aRbCbyDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDFciHFciHFch/FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb226f02Kfx + ypHtwIDrunnptHLnsGvmrGXlqWHkpV7jpFzjo1vjo1vjo1rjo1rjo1rjo1rjo1rjo1rjo1rjo1rjo1rj + o1rjo1rjo1rjo1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rk + o1rko1rko1rko1rkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrl + pFrlpFrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrkpVrkpVrkpVrlpVrlpVrlpVrlpVrlpVrlpVrl + pVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlplrlplrlplrlplrlplrlplrlplrl + plrlplrlplrmplrmplrmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp13mp13mp13mp13mp13mp13mpl7mpl7m + qF7mp17np2DnqWHnqmPnq2XorGjor2zpsXHqtXfruH3svITuwYzvxpXwyZzy0Kj78ub///////////// + ///////////////////////////////////////////////15tbEciPAaxrCbyDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDFciHFciHFcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb22qb02KfxypDtwH/ruXjps3Hn + r2rmq2XlqGHkpF3jo1vjolrjolrjolnjolnjolnjolnjo1njo1njo1njo1njo1njo1njo1njo1njo1nj + o1njo1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nk + o1nkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpVrk + pVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrl + pVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpFrlpFrlpFrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrm + plvmplzmplzmplzmplzmplzmplzmplzmplzmpl3mpl3mpl3mpl3mpl3mpl3mpl7mpl7mp17mp1/np2Dn + qGLnqWTnq2borWnor23qsnPqtnjrun7tvYbuwo7vxpfwyp3z17T++vb///////////////////////// + ///////////////////////////////////rzrDFdSjBbR3CbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDFciHFcSDFcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb22qb02KfxypDtwH/ruXjps3Hnr2rmq2XlqGHkpF3j + o1vjolrjolrjolnjolnjolnjolnjo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1nko1nk + o1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrl + pFrlpFrlpFrlpFrlpFrlpFrlpFrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlplvlplzlplzmplzmplzm + plzmplzmplzmplzmplzmplzmpl3mpl3mpl3mpl3mplzmpl3mpl7mp17mp17mp1/nqGDnqGHnqmPnrGbo + rWnosG7qs3PqtnnruoDtvofuw4/vyJnwyp724MX//vz///////////////////////////////////// + ///////////////////////htYq+ZRHCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDF + cR/FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55bb22qb02KbwypDtwH/ruXjps3Hnr2rmq2XlqGHkpF3jo1vjolrjolrjolnj + olnjolnjolnjolnjo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1nio1nio1njo1njo1njo1nj + o1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njolnjo1njo1njo1njo1njo1nj + o1njo1njo1njo1njo1nko1nko1rko1rko1rko1rko1rko1rko1rko1rkpFrkpFrkpFrkpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrl + pFrlpFrlpFrlpFrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlplvlplzkplzlplzlplzlplzlplzlplzlplzl + plzlplzlplvlplvlplzlplzlplzlplzlplzlpl3lp13lp13mp1/mqGDmqWHmqmPnq2fnrmrosW7ps3Tq + t3nruoHsv4ntxJHvyJrwy6H35c////////////////////////////////////////////////////// + ///////79e/RklS/ZxXCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDFcB7FcB3FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55bb12qb02Kbwyo/swH/quXfos3Dmr2nlq2TkqGDjpFzio1riolniolnioljioljioljioljiolji + oljioljioljioljioljioljioljioljioljioljioljioljioljioljjoljjoljjoljjoljjoljjoljj + oljjoljjoljjoljjoljjoljjoljjoljjoljjoljjoljjoljjoljjoljjo1jjo1jjo1jjo1jjo1jjo1jj + o1jjo1jko1jko1nko1nko1nko1nko1nko1nko1nko1nko1nkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpVrkpVvkpVvkpVvkpVvkpVvkpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvl + pVvlpVzlpVzlpVzlpVzlpV3lpV3lpl3lpl7lpl/mqGDmqGLmqmXnq2jnrmvosHDps3Xqt3zru4PswIvu + xZTvyZzx0Kj99+7////////////////////////////////////////////////////////////369/J + fjfAahnCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcB/FcB3FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb12qb02Kbw + yY/sv3/puHfns3DmrmnlqmTkp2Djo1ziolrioVnioVnioVjioVjioVjioVjioVjioVjioVjioVjiolji + oljioljioljioljioljioljioljioljioljioljioljjoljjoljjoljjoljjoljjoljjoljjoljjoljj + oljjoljjoljjoljjoljjoljjoljjoljjoljjoljjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1nj + o1nko1nko1nko1nko1nko1nko1nko1nko1nko1nkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnko1nko1nk + o1nkpFrkpVvkpVvkpVvkpVvkpVvkpVvkpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVzlpVzl + pVzlpVvlpVzlpV3lpl3lpl3mpl/mqGDmqWLnqWTnq2jorWzpsHDptHbruH3svITtwYzvxpbvyZzz1bH8 + 9ev////////////////////////////////////////////////////////////v1r/BbBvBbR3CbyDC + byDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcR/EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb12qb016bwyY/sv3/puHfns3Dl + rmnlqmTkp2Djo1ziolrioVnioVnioVjioVjioVjioVjioVjioVjioVjioVjioVjioVjioljioljiolji + oljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljiolji + oljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljjolnjolnj + olnjolnjolnjolnjolnjolnjolnjo1njo1njo1njo1njo1njo1njo1njo1njo1njo1nko1nko1nko1nk + o1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nkpFrkpVvkpVvk + pVvkpVvkpVvkpVvkpVvkpVvkpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVrlpVrlpVvlpVvlpVvlpVzl + plzlplzlpl3mpl7mqGDmqWLnqmTnrGjor2zpsnLqtXfruX7svYbtwo/vx5fvyZz13L////////////// + ///////////////////////////////////////////////////bqHa/ZxTCbx/CbyDCbyDCbyDCbyDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bX12qX016bwyY/sv37puHbns2/lrmjkqmPjp1/io1vh + olnhoVjhoVjhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfh + oVfhoVfhoVfhoVfhoVfhoVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfi + oVfioVfioVfioVfioVfioVfiolfiolfiolfiolfiolfiolfiolfiolfjolfjoljjoljjoljjoljjoljj + oljjoljjoljjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jko1jko1jko1jko1jko1jko1jk + o1jko1jko1jko1jko1jko1jko1jko1jko1jko1jko1jko1jkpFnkpFrkpVrkpVrkpVrkpVrkpVrkpVrk + pVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVvkpVvkpVzkpVzkpVzkpl3lpl7l + p1/lp2HmqWLmqmXmrWnnr23osnLptXnruYHrvontw5Hux5rwzKP45tD///////////////////////// + ///////////////////////////////////9+vfYomy/aRbCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcR7EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55LX12aX01qbvyI/rvn7ot3bmsm/krWjjqWPipl/holvhoVnhoFjhoFjhoFfh + oFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfh + oVfhoVfhoVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfi + oVfioVfiolfiolfiolfiolfiolfiolfiolfiolfiolfiolfjoljjoljjoljjoljjoljjoljjoljjoljj + oljjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jj + o1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjpFnjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrj + pFrjpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFvkpFvkpFzkpFzkpVzkpVzlpV7lpl/lqGHlqWPm + qmbmrGrnr3Dosnbptn3quoPsv4rtxJTuyJzwzaT67t7///////////////////////////////////// + ///////////////////////26dzDciTAaxjCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55LX12KX01qbvyI/rvn7ot3bmsm/krWjjqWPipl/holvhoVnhoFjhoFjhoFfhoFfhoFfhoFfhoFfh + oFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfi + oVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfi + olfiolfiolfiolfiolfiolfiolfiolfiolfiolfjoljjoljjoljjoljjoljjoljjoVjjoljjoljjoljj + o1jjo1jjo1jjo1jjo1jjo1jjo1jio1jio1jio1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jj + o1jjo1jjo1fjo1jjpFnjpFrjpFrjo1rjo1rjo1rjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrkpFrkpFnkpFrkpFrkpFvkpFvkpVvkpVzlpl3lp1/lqGHmqWTmqmjnrWznsHHp + s3fqt37ru4TswI3txZbuyZ3y1LD9+PL///////////////////////////////////////////////// + ///////////u1r7HezDAaxrCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcR/EcB3EcB3EcB3E + cB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55LX12KT01qXv + yI7rvn3ot3Xmsm7krWfjqWLipl7holrgoVjgoFfhoFfhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbh + oVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoFbhoFbhoFbhoVbhoVbh + oVbhoVbhoVbhoVbhoVbhoVbhoVbioVfioVfioVfioVfioVfioVfioVfioVfioVfiolfiolfiolfiolfi + olfiolfiolfiolfiolfiolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjo1jj + o1njo1njo1njo1njo1njo1njpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnkpFnkpFnkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpFrkpVvkpVvkpVzlpl7lp2HlqGTmqWbmrGnnrm7nsHPptHnquYDrvYjt + wpDux5rvyqD13MD+/Pr////////////////////////////////////////////////////////////l + wJy+ZhLCbh/CbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcR/EcB3EcB3EcB3EcB3EcB3FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55LX12KT01qXvyI7rvX3ot3Xmsm7k + rGfjqGLipV3hoVrgoFjgn1fgn1fgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bg + n1bgn1bgn1bgn1bgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbh + oVbhoVbhoVbioVfioVfioVfioVfioVfioVfioVfioVfioVfiolfiolfiolfiolfiolfiolfiolfiolfi + olfiolfiolfiolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjo1jjo1njo1njo1njo1njo1nj + o1njo1njo1njpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnj + pFnjpFnjpFrjo1vjpVvjpVzkpV/kpmDkp2LkqGTlqmfmrGvnrm/nsnXptXvquYPsvortw5TuyZzvy6P2 + 4sv////////////////////////////////////////////////////////////9+vXXoGu/aRfCbyDC + byDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcR7EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD45LX12KT01aXux47rvX7ot3Xmsm7krGfiqGLhpV3goVrf + oFjfn1ffn1ffn1bfn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bg + n1bgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbh + oVbioVfioVfioVfioVfioVfioVfioVfioVfioVfiolfiolfiolfiolfiolfiolfiolfiolfiolfiolfi + olfiolfiolfiolfiolfiolfiolfiolfiolfiolfio1jio1nio1nio1nio1nio1nio1nio1nio1nio1ni + o1nio1nio1nio1nio1nio1nio1nio1nio1nio1nio1njo1njo1njo1njo1njo1njo1njo1njo1rjo1rj + pFvjpF3jpF7kpV/kpmDkp2LlqGXlqmjmrWznr3Hos3fptn/qu4XswI7txZfvy6Hw0av78uj///////// + ///////////////////////////////////////////////////79OzNiEjAahnCbyDCbyDCbyDCbyDC + byDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcR/EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD45LX12KT01aXux47rvX7ot3Xmsm7krGfiqGLhpV3goVrfoFjfn1ffn1ffn1bf + n1bfn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgoFbgoFbg + oFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVXhoVXhoVbhoVbi + oVbioVbioVbioVbioVbioVbioFbioVbioVbioVbioVbioVbioVbioVbioVbioVbhoVbhoVbhoVbioVbi + oVbioVbioVbioVbioVbioVbioljioljioljioljioljioljioljioljioljioljioljioljio1jio1ji + o1jio1jio1jio1jio1jio1jio1jio1jjo1jjo1jjo1jjo1jjo1jjo1njo1njo1rjpFvjpF3jpF3kpV/k + pmDkp2LlqGTlqWflrGvnrm/osnXotXzquYPsvortwpPvyZ7wzaXy17X78+j///////////////////// + ///////////////////////////////////////y38zDcSPBbR3CbyDCbyDCbyDCbyDCbyDCbyDCbyDC + byDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcR7EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD45LT12KT01aTux43rvXzotnTmsW3krGbiqGHhpVzgoVnfoFffn1bfn1bfn1Xfn1Xfn1Xfn1Xgn1Xg + n1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1XgnlXgnlXgn1Xgn1Xgn1Xgn1Xgn1Xg + n1Xgn1Xgn1Xgn1Xgn1Xfn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xg + n1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1XgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbioVbioVbioVbioVbi + oVbioVbioljioljioljioljioljioljioljioljioljioljioljioljioljio1jio1jio1jio1jio1ji + o1jio1jio1jio1jio1jjo1jjo1jjo1jjo1njo1njo1rjpFvjpFzjpFzkpF3kpV/kpmHkp2Llp2TlqWfl + rGvnrm/osXTotHrpuIHrvYjswZDux5vwzKTx0Kr13sT//v7///////////////////////////////// + ///////////////////////////juZHAahrBbh/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcR/EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD45LT12KT01aTu + x43rvXzotnTmsW3kqmbipmHho1zgoFnfn1ffnlbfnlbfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXf + nlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xf + n1Xfn1Xfn1Xfn1Xfn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xg + n1Xgn1Xgn1Xgn1XgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbioVbioVbioVbioVbiolfioljiolji + oljioljioljioljioljioljioljioljioljioljioljioljio1jio1jio1jio1jio1jio1jio1jio1ji + o1nio1njo1njo1njo1njpFnjpFvjpFzjpF3kpF3kpV7kpl/kp2Lkp2PlqWXlqmfmrGrnrm/osXTotHrp + uIDrvIfswY/uxpnwy6Lx0azy1bT46NX+/vz///////////////////////////////////////////// + /////////////v3esIO/aRjCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcR/EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447P02KTz1aTux43qvHzotnTmsG3j + qmbhpmHgo1zfoFnen1fenlbenlbenlXenlXenlXenlXenlXenlXenlXfnlXfnlXfnlXfnlXfnlXfnlXf + nlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xf + n1Xfn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xg + n1XgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXhoFXhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbioVbioVbioFbiolfioljioljioljioljioljiolji + oljioljioljioljioljioljioljioljioVjioljiolfiolfioljioljioljioljiolnioljio1nio1ni + o1nio1vio1zjpF3jpV3jpV7jpV/jpmDkp2LkqGTkqWblq2nmrGzmrnDnsXXotXvpt4HqvIjswY/txpnu + y6Lw0Kzy1bTz2bv67+P////////////////////////////////////////////////////////////6 + 8urJfze/aRjCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447P02KPz1aTux43qvHvotnPmsGzjqmXhpmDgo1vfn1je + n1ben1XenlXenlTenlTenlTenlTenlTenlTenlTenlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTf + nlTfnlTfnlTfnlTfnlTfnlTfnlTfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tgn1Tg + n1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1TgnlTgnlTgn1Tgn1Tg + n1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Thn1Thn1Xhn1Xhn1Xhn1Xhn1Xhn1Xhn1Xhn1Xhn1Xhn1XhoFXhoFXh + oFXhoFXhoFXhoFXhoFXhoFXgoFXhoFXhoFbhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfh + oVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfholjholjholjholjho1jho1jho1nho1nipFvipFzjpF3jpV7j + pl/jpmDjp2Lkp2PkqWXkqWflq2nlrW3mr3HmsHTns3notn/puoTrvovswpPtx5vvzKTx0a3z17X02772 + 4cr9+PL////////////////////////////////////////////////////////////04tDLgz7AaxrC + bx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDEcSDEcSDEcSDEcR7EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD447P02KPz1aPux4zqvHvotnPmsGzjqmXhpmDgo1vfn1jenlbenlXenlXenlTe + nlTenlTenlTenlTenlTenlTenlTenlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTf + nlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTgnlTgnlTgnlTgnlTg + nlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgn1Tgn1Tgn1Tgn1Tg + n1Tgn1Tgn1Tgn1Tgn1Tgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1XgoFXgoFXgoFXgoFXgoFXgoFXg + oFXgoFXgoFXgoFXgoVbgoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfh + oVfhoVjhoVjhoVjhoVjholjho1nho1nho1nho1ripFripFvipV7ipV/ipmDjpmHkp2LkqGPkqWTkqmfl + qmnlrGvmrW3mr3HnsXTns3notn7puYPrvYjrv4/sw5buyJ7wzabx067z17f03L/13sT359P+/Pf///// + ///////////////////////////////////////////////////////qzK6/aRfBbh7Cbx/CbyDCbyDC + byDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDEcSDEcR/EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD447P02KPz1aPux4vqvHvotnPmsGzjqmXhpmDgo1vfn1jenVbenVXenVXenVTenVTenVTenVTenVTe + nVTenVTenVTenVTdnVTenVTenVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTf + nVTfnVTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTenlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTf + nlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tf + n1Tfn1Tgn1Tgn1Tgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1XgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXg + oVbgoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVjholjholfh + oljholnio1nio1ripFripFvipVzipV7jpmDjpmHjp2LjqGPkqWXlqmflq2nmrGvmrW7mr3DnsXTns3fo + tHvptn/quYTrvIjsv47sw5Tux5vvy6Pwz6rx07Dz2Lf03cL459T89Or+/Pj///////////////////// + ///////////////////////////////////////+/Pncq3u/ahnCbh7Cbx/CbyDCbyDCbyDCbyDCbyDC + byDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDE + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447P02KPz1KPt + x4zpu3vntXPlr2ziqWXgpV/folrenlfdnVXdnVTdnFTdnFPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPd + nVPdnVPdnVPdnVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenlPe + nlPenlPenlPenlPenlPenlPenlPenlPenlPenlPenlPenlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPf + nlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pg + n1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1TgoFbgoFfgoFfgoFfh + oFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoVfhoVfhoVfhoVjholjiolniolniolrio1vi + pFzipVzjpV7jpmHjp2LjqGTkqGXkqWfkqmnlrGvmrW7mrnHnsHPosnfotHrotn3puIHqu4XqvYnswI7t + w5XtxpvuyZ/vy6Tx0Kvy17j248389e3+/fz///////////////////////////////////////////// + ///////////////////////////+/frVnGTAahnCbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDC + byDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447L02KLz1KPtx4vpu3rntXLlr2vi + qWTgpV7folrenlfdnlXdnVTdnFTdnFPdnFPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPe + nVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenlPenlPenlPenlPe + nlPenlPenlPenlPenlPenlPenlPenlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPf + nlPfnlPfnlPfnlPfnlPfnlPfnVPfnlPfnlPfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pgn1Tgn1Tgn1Tgn1Tg + n1Tgn1Tgn1Tgn1TgnlTgnlTgnlTgn1Tgn1Tgn1Tgn1Tgn1TgoFfgoFfgoFffoFfgoFfgoFfhoFfhoFfh + oFfhoFfhoFfhoFfhoFfgoVfgoVfgoVjhoVjholnholnho1rio1rho1vipF3ipF3ipV/ipmDjqGLjqWXj + qmbkqmnkrGvkrW7krnDlsHPmsXbms3nntXzotn/ouILpu4bqvYrrv47rwpLsxJftx5vtyJ7wzqn138b5 + 7d/9+fT//v7///////////////////////////////////////////////////////////////////// + ///////////9+fTkvZfAbR7Cbh7Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcB/Dbx3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447L02KHz1KPtx4vpu3rntXLlr2viqWTgpV7folrenlfd + nlXdnVTdnFTdnFPdnFPdnFPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPenVPenVPe + nVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPe + nVPenVPenVPenVPenVPenVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPf + nVPfnVPfnVPfnVPfnVPfnVPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlTfnlTfnlTfnlTfnlTfnlTf + nlTfnlTfnlTfn1Tfn1Tfn1Tfn1Tfn1XfoFffoFffoFffoFffoFffoFffoFfgoFfgoFfgoFfgoFfgoVfg + oVfgoVjgoVjgolnholnholrho1vho1zhpF3hpV7ipV/ipmHip2PjqGTjqWfjq2rkrWzkrW7kr3HlsXTl + snfmtHrntX3nuIDouoTpvIfqvorrv47rwpLsxJXsxJbtyJ3vzqf14Mf78uj///////////////////// + ///////////////////////////////////////////////////////////////////68+rpyKfNiknC + byLBbyLBbiDCbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcB/Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD447L02KHz1KPtx4vpu3rntXLlr2viqWTgpV7folnenlbdnlXdnVTdnFTdnFPd + nFPdnFPdm1PdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPenFPenFPenFPenFPe + nFPenFPenFPenFPenFPenFPenFPenFPenFPenFPenFPenVPenVPenVPenVPenVPenVPenVPenVPenVPe + nVPdnVPenVPenVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPf + nVPfnVPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlLfnlPfnlPfnlTfnlTfnlTfnlTfnlTfnlTfnlTf + n1Tfn1Tfn1TfoFXfoFbfoFbfoFffoFffoFffoFffoFffoVfgoVfgoVfgolfgolfholjholnho1nho1rh + o1vhpFzhpF3ipV7ipmDip2LjqGPjqWXjqmfkq2rkrW3krnDlsHPlsnbmtHnntXznt3/ouYLou4XpvYnq + v4zrwZDrw5TsxJbsxZfvy6L03sP57uD9+PL///////////////////////////////////////////// + ///////////////////////////////////////68urmwZ7VnGbIfznAbBy/ahrBbiDBbyLBbyHBbh/C + bx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcB/Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD447L016Hy1KLtxovpu3nmtHHkr2rhqWPfpF3eoVjdnVXcnVPcnFPcm1Pcm1Lcm1Lcm1Lcm1Lcm1Lc + m1Lcm1LcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLd + nFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLd + nVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLe + nlLenlLenlLenlLenlLenlLenlLenlLenlLfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfoFXf + oFbfoFbfoFffoFffoFffoFffoVffoVffoVfgoljholjholjholnho1rho1vhpFzhpV3ipV/ipmDiqGLj + qGPjqWXkq2jkq2nlrWzlrnDmsHPmsnbms3rntX3ot4DouYPpu4bqvYrqv47qwZHrwpPsw5Tsx5vvzaf1 + 38b89/D///////////////////////////////////////////////////////////////////////// + //////////////737eHhuZHMhUO/aBe+aBe/bB3BbiHBbyLBbyLBbyLBbyHBbh/Bbh/Bbh/Cbx/Cbx/C + bx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cB/Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD347Lz16Hy1KLs + xovou3nmtHHkr2rhqWPfpF3eoVjdnVXcnVPcnFPcm1Pcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1LcnFLcnFLc + nFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLd + nFLdnFLdnFLdnFLdm1LdnFLdnFLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLenVLenVLenVLe + nVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenFLenVLenVLenlLenlLe + nlLenlLenlLenlLenlLenlLfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnVPfnlbfn1ffn1ffoFffoFff + oFfgoVfgoVjgoVjgoVngoVnholrho1vho1zipF3ipF7ipWDjpmHjp2PjqGXkqmfkqmnkrGzlrm/lr3Hm + sXTmsnnns3zot3/ouYLpuYbpvInqv43qwZHrw5Tsw5XsxZjvz6r248367+L++/j///////////////// + ///////////////////////////////////////////////////////////////////159ngto/RklnF + eDC9aBi+axvAbyHBbyLBbyLBbyLBbyLBbyLBbyLBbyLBbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDC + byDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcB/Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD347Lz16Hy1KLsxovounnltHHkr2rh + qWPfpF3eoVjdnVXcnVPcnFLcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lc + m1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ld + m1Ldm1Ldm1Ldm1LdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLenFLenFLenFLenFLenFLe + nFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenVLenVLenVLenVLenVLe + nVLenVLenVLenVLfnVPfnVPfnVPfnVPfnVTfnVTfnVTfnVbfnlffoFffoFfgoFfgoVjgoVjgoVjgoVng + olrgo1vgo13hpF7ipV/ipWDjpmLjp2TjqGbkqmjkq2rlrG3lrm/lsHLmsXXms3jntXzot4HouITpu4fp + vYvqv4/rwZLrwpPrxJbtyJ3w0q735tL9+fP///////////////////////////////////////////// + /////////////////////////////////////////fz05NTaqXvDdCq8ZhW9aBm/ax7AbyHAbyLAbyLB + byLBbyLBbyLBbyLBbyLBbyLBbyLBbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDC + byDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD34rLz16Hy1KLsxovounnls3HirGrhqGPfo13eoFjdnFXc + nFPcm1LcmlLcmlHcmlHcmlLcmlLcmlLcmlLcmlLcmlLcmlLcmlLcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lc + m1Lcm1Lcm1Lcm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ld + nFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLenFLenFLenFLenFLenFLenFLenFLe + nFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenVLenVLenVLenVLenVLenVLenVLenVLe + nVPenVPfnVPfnVPfnVTenVPenlTfn1bfoFffoFffoFfgoVjgoljfolngolrgpFzgpF3gpF7hpWDhpmHh + p2PiqWXjqmfjq2nkrGvkrm7lr3HlsXTms3fmtHrntn3nuIHouoXpvYnqvo3qwZHrwpPrwpXsxpvw07H2 + 5M/68+n++/n///////////////////////////////////////////////////////////////////// + ///////////////y4tDbrH7Oj1LCcie9Zxe/bB7AbiLAbiLAbiLAbiLAbyLAbyLAbyLAbyLBbyLBbyLB + byLBbyLBbyLBbyDBbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDC + byDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD34rHz1qDy06LsxYnouXjls3DirGngp2LeolzeoFfdnVTcnFLcm1HcmlHcmlDc + mlDcmlDcmlHcmlHcmlHcmlHcmlHcmlHcmlHcmlHcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hb + m1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1HcnFHcnFHc + nFHcnFHcnFHcnFHcnFHcnFHcnFHcnFHcnFHcnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHd + nFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnVHdnVHdnVHdnVHdnVHdnVHdnVLdnVLdnVLdnlLenlPe + nlPenlPen1TfoFffoFffoFjfoVjfolnfo1rfo1zgpF3gpV7gpmDgp2Lhp2PiqWXiqmjirGrjrWzkrm/l + r3LlsnXmtHjntXznt3/ouYLou4bpvYrqv47qwZHqwpPsxJftyaDy1rb46tr+/fr///////////////// + ///////////////////////////////////////////////////////////////////+/Prx4M3UnmjC + dCi8aBW9ahq+bB/AbiLAbiLAbiLAbiLAbiLAbiLAbiLAbyLAbyLAbyLAbyLBbyLBbyLBbyLBbyLBbyDB + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDC + byDCbyDDcCDDcCDDcCDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD34rHz1qDx06LsxYnnuXjls3DirWnfp2Ldolzcn1fcnVTbnFLbm1HbmlHbmlDbmlDbmlDbmlDbmlDb + mlHbmlHbmlHbmlHbmlHbmlHbmlHbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hc + m1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1HcnFHcnFHcnFHcnFHcnFHc + nFHcnFHcnFHcnFHcnFHcnFHcnFHcnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHd + nFHdnFHdnFHdnFHdm1Hdm1HdnFHdnFHdnVHdnFLdnVLdnVLdnVLdnVLdnlLenlPenlTfnlXfn1bfoFjf + oVrfoVrfolvgol3go17hpGDhpmHhp2PiqGXiqWfiq2njrGzjrm/jr3LksXTlsnjmtHvotn7nuILpuobp + vInqvo3qwJDrwpLrw5Xsx5zy17n46dj79Ov///3///////////////////////////////////////// + //////////////////////////////////////////3u2cHcs4bNj0/BdSq9aRq/bR/AbiK/biK/biK/ + biLAbiLAbiLAbiLAbiLAbiLAbiLAbiLAbyLAbyLAbyLAbyLBbyLBbyLBbyLBbyHBbh/Bbh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDD + cCDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD34rHz1qDx06Ls + xYnnuXjls3DirWnfp2Ldolzcn1fbnFTbnFLbm1HbmlHbmlDbmlDbmlDbmlDbmlDbmlHbmlHbmlHbmlHb + mlHbmlHbmlHbmlHbmlHbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hcm1Hcm1Hcm1Hcm1Hc + m1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hc + m1Hcm1Hcm1Hcm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hd + m1Hdm1Hdm1Ldm1Ldm1LdnFLdnVLdnVLdnVPenVPenlTenlTenlXfnlbfn1jfoFvgolzgol3go1/gpGDh + pWLhpmTip2biqmjiq2vjrG3krm/kr3Pksnbms3nmtXznt4DouYPou4fpvYvqv4/qwJHqwpHsxJftyqDz + 2b368OX//v3///////////////////////////////////////////////////////////////////// + ///////////////8+PLs07jVomzBeC6+byDAcCDAcCHAcCLAbyK/bSK/bSK/biK/biK/biLAbiLAbiLA + biLAbiLAbiLAbiLAbiLAbiLAbyLAbyLAbyLAbyLBbyLBbyHBbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDbyDDbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7Fch/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9JQTD34rHz1qDx06LsxYnnuXjls3DirGnf + p2Ldolvcn1fbm1Tam1LbmlHbmlHbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlHbmlHbmlHbmlHbmlHbmlHb + mVHbmVHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHcmlHcmlHcmlHcmlHcmlHcmlHc + mlHcmlHcmlHcmlHcmlHcmlHcmlHcmlHcmlHcmlHcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hc + m1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Ldm1Ldm1LdnFLd + nFLdnVLenlPenlTenlTen1Xen1ben1beoFjfoFnfoVvgo17hpF/hpWHhpmPip2XiqWfiqmrjq2zjrW/k + r3LlsXXls3jmtHvmtn7nuYLouobpvYrqv43pwZHqwpPrw5TuyqDz28D569v9+PH///////////////// + ///////////////////////////////////////////////////////////////////79u/qz7PVonDK + iUrAdCm9cCS/dCrAdCnCcyfAcSS/byO/bSK/bSK/bSK/bSK/biK/biK/biK/biLAbiLAbiLAbiLAbiLA + biLAbiLAbiLAbyLAbyLAbyLAbyLBbyHBbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/C + bx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Fch/HdCLJeSbL + fivOhDLSizvVk0TanE/RnVU7Lhs8MR9HQC/34bDz1qDx06LsxIjnuHjlsm/irGjfpmHdoVrcnlbbm1Pa + mlHamVDbmFDbmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmVDbmVDbmVDbmVDbmVDbmVDbmVDbmVDbmVDb + mlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDc + mlDcmlDcmlDcmlDcmlDcmlDcmlDcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Ddm1Dd + m1Ddm1Ddm1Ddm1Ddm1Ddm1Ddm1Ddm1Ddm1Ddm1Hdm1Hdm1Hdm1HdnFHdnFHdnFLenVPenVPenlTen1Te + n1Xen1bfoFjfoVnfolrfo1vfpF3gpWDhpmPhqGbiqWfiqmrjrG3jrXDjr3PksXblsnnmtXzmt4DnuoPo + vIfovovpwI7qwZDqwpLrxZjtzKXz3sP89Ov///////////////////////////////////////////// + ///////////////////////////////////////////58ObnxqXKiEa9bR+7aRq9bSG/cijAdCnAdCrA + cyjAcia/cCS/biO/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biLAbiLAbiLAbiLAbiLAbiLAbiLAbiLA + biLAbyLAbyLAbyHBbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/C + byDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Fch/HdCLIeCbKfSvOhDLTjDvYlUXa + nE/PnFU4LBo3Lh1GPi/34bDz1qDx06LsxIjnuHjlsm/irGffpmHdoVrcnlbbm1PamlHamVDZmFDamE/a + mU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmVDbmVDbmVDbmVDbmVDbmVDbmVDbmVDbmlDbmlDbmlDb + mlDbmlDbmlDbmlDbmlDbmlDbmlDamlDbmlDbmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDc + mlDcmlDcmlDcmlDcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dbm1Dbm1Dcm1Dcm1Ddm1Ddm1Dd + m1Ddm1Ddm1Hdm1Hcm1HcnFHcnFHdnFLdnVLdnVPdnVPdnVTdnVTdnlXenlben1feoFjeoVrfo1vfo13f + pF7gpWDgpmLgqWbhqmnirGzjrm/jr3LjsXXksnjmtHzmtn/muIPnu4fovYrov47pwZHpwZPqw5btzaXz + 3sT57uD9+fT///////////////////////////////////////////////////////////////////// + ///////////////58ejhuZTSmWPFeTS+ahy9aRm9biK+cCS/cCa+cSe/cie/cifAcibAcSTAcCO/biG/ + bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biLAbiLAbiLAbiLAbiLAbiLAbiLAbiLAbiLAbyLAbyHA + bh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDC + byDCbyDCbyDCbyDCbyDCbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Fch/HdCLJeCbMfivRhTPMhzrAhkG+jEq0i1EzKRk2LR1G + Pi/34bDz1qDx06LrxIjnuHjksm/hq2ffpmHdoVrbnlbam1PZmlHZmVDZmFDZmE/ZmE/ZmU/amU/amU/a + mU/amU/amU/amU/amU/amU/amVDamVDamVDamVDamVDamVDamVDamVDamlDamlDamlDamlDamlDamlDa + mlDamlDamlDamlDamlDamlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDb + mlDbmlDbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1DcmlDcmlDcmlHcm1Hcm1Hcm1Hc + nFHcnFLcnFLdnFPdnVPdnVTdnVTdnlXdnlbdn1fen1neoFreoVzeo13fpF/gpWHgpmPhp2bhqWjhrG3i + rXDisHLksnfls3rmtX3mt4HnuYTnu4jovYzpv4/pwJHpwZPrxpvuz6z14sz89/D///////////////// + //////////////////////////////////////////////////////////////////////736t7dsIbH + fz+5YxS6ZBa9aR2/bCC/biG/biK+cCO+cCS+cCS+cCS+cCS/cSTAcSO/biK/bSG/bSG/bSG/bSG/bSG/ + bSG/bSK/bSK/bSK/biK/biK/biK/biLAbiLAbiLAbiLAbiLAbiLAbiLAbiLAbSDAbh/Abh/Abh/Bbh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDC + byDCbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Icx/KdiPIeCbCeCqxci6lcTSndzywg0iwiVAzKRk2LR1GPi/34bDz1qDx06Lr + xIjnuHjksm/hq2ffpmHdoVrbnlbam1PZmlHZmVDZmFDZmE/ZmE/ZmE/amE/amE/amU/amU/amU/amU/a + mU/amU/amU/amU/amVDamVDamVDamVDamVDamVDamFDamVDamVDamlDamlDamlDamlDamlDamlDamlDa + mlDamlDamlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmVDbmVDbmVDb + mlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlHbmlHbmlHcmlHcm1Hcm1Hdm1LdnFPdnFPdnFTdnFTd + nVXdnlbenljen1jeoFrfoVvfol3fo17fo2DgpWPgpmXhqWfhqmriq23irXDjsHXksnjktHzltn/muIPn + uofovYvpvo/pwJHqwZTqw5jv0Kz14s368OX++/j///////////////////////////////////////// + ///////////////////////////////////////////159fhuZPNjlXDdjK6ZBa7Zhq9ayG9ayG+bCG+ + bCG/biG/biG/biK+byK+byO+byO/byO/byO/biG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/ + bSK/biK/biK/biK/biLAbiLAbiLAbiLAbiLAbiLAbiLAbR/AbR/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbh3Cbh3Cbh3C + bh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7GcR7Icx7H + ch64ah2mYh2dXyCYXiSYZCmhbjOqeT2yhUixilAzKRk2LR1GPi/34bDz1qDx0qDrxIfnuHfksW7hqmbf + pWDdoFnbnVXamlLZmVDZmE/Zl0/Zl07Zl07Zl07Zl07Zl07amE7amE7amE7amE7amE7amE7amE7amE7a + mE/amE/amE/amE/amE/amE/amE/amE/amE/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/b + mU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmk/bmk/bmk/bmk/b + mk/bmk/bmlDbmlDbmlDbmlDbm1Dbm1Dcm1HcnFHdnFLdnFLdnVPdnFTdnVXdnlbenlfen1jeoFneoVvf + olzfo1/gpWHgpWPhp2XhqGjhqWviq23jrnHjsHTksXfltHzlt4DnuYTnu4fovYvov47pwJDqwpPrx5zw + 0rH36Nf9+vb///////////////////////////////////////////////////////////////////// + ///////////////+/Pry4dDbroLBcyu6ZBa6ZRe8aB29ayG9ayG9ayG9ayG9ayG9ayG+bSG/bSG/biG/ + biG/biG/biG/biG/bSG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/ + biK/biLAbiLAbiLAbiLAbiLAbiLAbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbx/Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7Gch7Icx7Hch7EcR60ZxucWhiKUBaJURiPVx6U + XSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDz1qDx0qDrxIfnuHfksW7hqmbfpWDdoFnbnVXamlLZ + mVDZmE/Zl0/Zl07Zl07Zl07Zl07Zl07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE/amE/a + mE/amE/amE/amE/amE/amE/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/bmU/bmU/b + mU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmk/bmk/bmlDbmlDbmlDbmlDb + m1Dbm1HcnFHcnFLcnFLcnFPdnVTdnVTenlXen1fen1jeoFneoVvfolzfo17gpGDgpWLgpmXhqGfiqmri + q23irXDjr3PksHbls3nltX3mt4HnuobovYvov47owZHpwZLqxZnw07L259P78+v+/fv///////////// + ///////////////////////////////////////////////////////////////////////x38zZqHvL + i1C+bSW6ZBi6Zxy8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG/bSG/bSG/bSG/bSG+bSG+ + bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biK/biLA + biLAbiLAbiHAbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Cbx/Cbx/Cbx/Cbx/Cbx/CbyDCbx/Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3FcR3Ich7DcB6xZhueWxiUVReJThWHTRWLUBaNUxmRWB6VXSObZSqibjOqeT2y + hEixiVAzKRk2LR1GPi/34bDy1p/x0qDrxIfnuHfksW7hqmbfpWDdoFnbnVXamlLZmVDZmE/Zl0/Zl07Z + l07Zl07Zl07Zl07Zl07Zl07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE/amE/amE/amE/amE/a + mE/amE/amE/amE/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/bmU/bmU/bmU/bmU/b + mU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmVDbmVDbmlDbmlDbm1Dbm1Hbm1HbnFHcnFLcnFLcnFPc + nVTcnVXcnlbdn1fen1jeoFrfoVvfol3gpF/gpGHgpmPhp2bhqWjiqmviq27jrnHjsHXksnfltHvmtn7m + uILnuYbovIrov43owJDpwpTryJ7w1rb57d///v7///////////////////////////////////////// + ///////////////////////////////////////////8+PTt1r/QlV7AcSm4YRK5ZBi7aB28ah+8aiC8 + aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+ + bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biLAbiLAbiHAbR/A + bR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/C + bx/Cbx/Cbx/Cbx/Cbx/Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3GcR3Ich7F + cB3Bbx2rYhmQUhWIThWHTRWIThWKTxWKTxWLUBaNUxmRWB6VXSObZSqibjOqeT2yhEixiVAzKRk2LR1G + Pi/34bDy1p/w0qDrxIfmuHfjsW7hqmbfpWDdoFnbnVXamlLZmVDZmE/Zl0/Zl07Zl07Zl07Zl07Zl07Z + l07Zl07Yl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/Z + mU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/amU/amU/amU/amU/amU/amU/amU/amU/a + mU/amE/amFDamFDamVDamVDamVDamVDamlHbm1Hbm1Lbm1LbnFPbnFTbnVXcnVbcnlfcn1jcoFncoFvd + oVzeo17fpGDfpWPgpmXgqGjhqmvhq27irXDjr3TjsXfks3vltX7mt4LmuYbnu4novYzpv4/pv5HrxZvw + 1rf36dn79e3///////////////////////////////////////////////////////////////////// + ///////////////9+/foyazVoHDGfz+8ayK4YhW7aB28aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9 + ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/ + bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biLAbiDAbR/AbR/AbR/AbR/AbR/A + bR/AbR/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/C + bx7CbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3FcB3GcR3Hch28bBymXxmaWBeOURWHTRSHTRSJ + ThSKTxWKTxWKTxWKTxWLUBaNUxmRWB6VXSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDy1p/w0qDq + xIfluHfjsW7gqmbepWDcoFnanVXZmlLYmVDYmE/Yl0/Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Y + l07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/Z + mE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/amE/amE/amE/amE/amE/amE/amE/amFDamFDamFDa + mVDamVDamVHamVHbmlLbmlLbm1PbnFTbnFXbnVbcnlfcnljcn1rdoFvdoV3domDdpGLepWPfp2bhqGjh + qWvhq27irXLir3XjsXjks3vltYDmt4PnuofnvIvovY3ovo7qwZTsx5/x2Lz68eb///////////////// + ///////////////////////////////////////////////////////////////////////69O3jv53L + iU64YhO3YBG5ZRq6Zx67aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9 + ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/ + bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/biK/biG/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/A + bh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx7CbhzCbhzCbh3C + bh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3EcB3Hch3Hch7EcB26ahyhXBiMUBSFTBOGTBSITRSJThSJThSJThSJThSKTxWKTxWK + TxWLUBaNUxmRWB6VXSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDy1Z/w0qDqw4flt3bjsG7gqmXe + pF/coFjanFXZmVHYmE/Yl07Ylk7Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7Z + mE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7amE7amE/amE/amE/amE/amE/amU/amU/amVDbmlDbmlHbmlLbm1Pb + m1Pbm1TbnFXcnVbcn1jdn1ndoFvdoVzeol7eo2DepWLfpmXfqGjgqWrhq23irHDjrnPksXbksnrltH7m + t4LnuYbnu4rovo3ovo/pwJHsyJ/y28D46tv89/H///////////////////////////////////////// + ///////////////////////////////////////////79O3kw6TOk13Deja4YRK4YhS7Zxy7aR67aSC7 + aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9 + ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/ + bSG/bSG/bSK/bSK/bSK/bCC/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/CbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3C + bh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Ebx3GcR3F + cB20ZxuiXRiVVRaKTxSGTBOITRSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWLUBaNUxmRWB6V + XSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDy1Z/w0qDqw4flt3bjsG7fqmXdpF/coFjanFXZmVHY + mE/Yl07Ylk7Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7Z + mE7ZmE7ZmE7ZmE7amE/amE/amE/amU/amU/bmlDbmlHbmlHbmlLbm1Lbm1TbnFTbnFXcnVfcnljcnlnd + n1vdol3eo1/epGHepWTfp2bgqWnhqmzhq2/irnLjsHXjsXnktHzltoDmuIPnuofovIvovYzovo/qwpXt + yqPz3sb79Oz///////////////////////////////////////////////////////////////////// + ///////////////////47+XguZXAci24YRS2XxG5ZBi7aBy7aB27aB27aB27aR+7aSC7aSC7aSC7aSC7 + aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+ + bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/ + bSK/bB+/bB+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/BbRzBbRzCbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3C + bh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3GcR3FcB3Cbh2vZBqYVxeHTBSFTBOHTRSI + ThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSLUBaNUxmRWB6VXSObZSqibjOqeT2y + hEixiVAzKRk2LR1GPi/34bDy1Z/w0qDqw4flt3bjsG7fqmXdpF/boFnanFXZmVHYmE/Yl07Ylk7Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE/ZmE/ZmE/ZmE/ZmE/Z + mU/ZmVDamlDbmlHbmlHbmlLbm1Lbm1PbnFTbnFXcnVbcnljcnlndn1vdoV3dol7eo2DepGPfpmXfqGjg + qmvhq27hrHHir3TjsXfjs3vktX/luIPmuobnvIrovo3pv4/pwJLsy6Tz3sX57uL9+fT///////////// + ///////////////////////////////////////////////////////////////////////269/csYnO + kVu+byi4YhW4Yxe6Zhy6Zx26Zx27aB27aB27aB27aB27aB67aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8 + aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+ + bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bR+/bB+/bB+/bB+/ + bR+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh7BbRzBbRzCbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3C + bh3Dbx3Dbx3Dbx3Dbx3EcB3GcR3Bbh2uYxqcWReRUxaGTBSFSxSITRSITRSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWNUxmRWB6VXSObZSqibjOqeT2yhEixiVAzKRk2LR1G + Pi/34bDy1Z/w0qDqw4flt3bjsG7fqmXdpF/boFnZnFXZmVHYmE/Yl07Ylk7Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Z + l07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE/ZmE/ZmE/ZmU/ZmU/ZmU/ZmVDamlDamlHamlHbmlLb + m1Pbm1TcnFXcnVbcnVfcnljdn1rdoFveoV7eol/epGLfpWTfpmfgqGngqWzhq2/irnLjsHbjsnnktH3l + toHmuYTmu4jnvIvnvY3ovo/pwpbtzqr148/9+fT///////////////////////////////////////// + ///////////////////////////////////////////+/fzz5dbXpnjAdTC0Wwy3YBO5ZRm6Zhy6Zx26 + Zx26Zx26Zx26Zx27aB27aB27aB27aB27aR+7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8 + aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+ + bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bB6/bB6/bB+/bB+/bB+/bB+/bR+/bR+/ + bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh3B + bRzBbRzBbRzBbRzCbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Ebx3HcR7E + cB2/bRypYBmOURWGTBSFSxSGTBSITRSITRSITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSKTxWMUhiQVx2VXSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDy1Z/w0qDq + w4flt3bjsG7fqmXdpF/boFnZnFXXmVHXmE/Xl07Ylk7Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3XlU3Ylk3Ylk3Zl03Zl03Zl03Zl03Zl03Zl0zZl03Zl03Zl03Zl07Zl03Z + l03Zlk7Zlk7Zlk7Zl07Yl0/YmE/YmE7ZmU/ZmVDZmVDZmVDamlHZmlLam1Pam1TanFXbnVbcnVjcn1nc + n1rdoFzeol/domHepGPfpWbgp2jgqWvgqm/hrHLirnTjsHjjs3zktX/luIPmuofmvIrovo7ovo/owJPt + zqr148/58OX+/Pr///////////////////////////////////////////////////////////////// + ///////////////////x4M7br4bIh0y9bSa1XQ+3Yhe5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26 + Zx26Zx27aB27aB27aB27aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8 + aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+ + bCG+bCG/bSG/bSG/bSG/bSG/bSG/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/AbR/A + bR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/BbRzBbRzBbRzBbRzBbRzB + bRzCbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbh3Ebx3FcB25aRykXRmYVxeMTxWGTBSGTBSI + TRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSKTxWMUhiQVx2VXSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDx1Z/v0qDpw4fltnbisG3fqmXc + o17an1jYm1TXmVDWl07Wlk3XlU3XlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk7Ylk7Ylk7Y + l07Yl07YmE/YmU/ZmVDZmVDZmVHZmVLZmlPZm1TanFXanFbanVjbnlncn1vcoF3doV/do2HepGTepmbf + qGnfqWzgq27hrXLir3bisXnjs33ktYHmt4TmuojmvIvnvYznv5Dpw5juz6z36tr+/Pr///////////// + ///////////////////////////////////////////////////////////////////////9+vft18LU + oHG6aSG1XhC2YBO4ZBm5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27 + aB27aB27aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9 + ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/ + bSG/bSG/bR+/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/AbR/AbR/AbR/A + bR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh7BbRzBbRzBbRzBbRzBbRzBbRzBbRzBbRzCbhzC + bhzCbhzCbhzCbh3Cbh3FcB3FcB3Cbh24aBueWhiIThSDSxOESxSGTBSITRSITRSITRSITRSITRSITRSI + TRSITRSITRSITRSITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWMUhiQVx2U + XSKaZCmibjOqeT2yhEixiVAzKRk2LR1GPi/34bDx1Z/v0qDpw4fltnbisG3fqmXco17an1jYm1TXmVDW + l07Wlk3WlU3XlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk7Yl07Yl07Yl0/ZmE/ZmFDZmFDZmVHZ + mVLZmlPam1Tam1XanFbbnVfbnlnbn1vcoF3col7do2HdpGTepWbfp2ngqWzhqm7hrHLhr3XisXnjs3zk + tYDlt4TmuYjnvIvnvY7nvY7owpbv07P25dL79Ov+/fz///////////////////////////////////// + ///////////////////////////////////////////+/fvs1L7VonXGgka5Zhy1XxS3Yxm4ZRy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27Zx27aB67aSC7 + aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9 + ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bCC/bB6/bB6/ + bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/A + bh/Abh/Abh/Abh/Bbh/Bbh/Bbh7BbRzBbRzBbRzBbRzBbRzBbRzBbRzBbRzBbRzCbhzCbhzDbxzGcB3D + bx2wZBqfWhiSUxaJThSESxOGTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSI + TRSITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWMUhiQVx2UXSKaZCmhbjKqeT2y + hEixiVAzKRk2LR1GPi/34bDx1Z/v0aDpwofltnbisG3eqWXco17an1jYm1TXmVDWl07Wlk3WlU3WlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzY + lkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Yl03Yl07Yl0/Zl0/ZmFDZmFDZmFHZmFLZmVTamlTanFXanVbbnljb + n1rboFzcoV7col/dpGHepWTepmfeqGrgqm3hq3DhrXPisHbjsnrjtH7ktoHmuIXmuonmvIznvY3ov5Lq + xZzw1rj4697///7///////////////////////////////////////////////////////////////// + ///////////////////8+PToyq/JiE25Zx60XA+1YBS3Yxq4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aR+7aSC7aSC7aSC7aSC7 + aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9 + ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCC+ax6/ax6/bB6/bB6/bB6/bB6/bB6/ + bB6/bB6/bB6/bB+/bB+/bB+/bB+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/A + bh/Abh/Bbh3BbRzBbRzBbRzBbRzBbRzBbRzBbRzBbRzCbhzEbxzDbhy/bByuYxmXVhaFTBSDSxOFTBSG + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSI + TRSITRSJThSJThSJThSJThSJThSJThSJThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyyg0exiVAzKRk2LR1G + Pi/34bDx1Z/v0qDpwofltnbisG7fqWXco17an1jYm1XXmVDWl07Wlk3WlU3WlUzWlUzWlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlU3YlU3Ylk3Yl03Y + l03Yl03ZmE7Zl07ZmE/ZmE/ZmFHZmFLZmVPamlTam1Xam1banFjbnVnbn1vcoF3col/do2LdpGTepmfe + qGnfqWzfq2/grXPhr3bisXrjs33ktYHluIXmuYjnvIznvY7nvpDqxZzw1rn36dr89e3///////////// + ///////////////////////////////////////////////////////////////////////79fDkw6PQ + mWfAdzS3Yxi1XxO3Yxm4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aB+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7 + aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9 + ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCC+ax++ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/ + bB+/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh7AbRzBbRzB + bRzBbRzBbRzBbRzCbRzDbhzEbhy+bByqYBmZVhePURWFSxSESxSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJ + ThSJThSJThSJThSJThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi/34bDx1Z/v0qDp + wofltnbir27fqWXdo17an1jYm1XXmVDWl07Wlk3WlU3WlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlU3XlU3XlU3XlU3Xlk3Yl03ZmE7Zl07ZmFDZmFDZ + mFHZmVHZmlLamlTam1banFfbnVjbnVrcnlzcoF7doWDdo2LdpWXep2jfqGvfqm7gq3HgrnThsHfisXvj + tH/kt4LluYbluormvIznvY3owJTryKLx2r/68+r///////////////////////////////////////// + ///////////////////////////////////////////////58OfhvZvGgkS0XA+zWw21YBO2Yxi3ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26 + Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aB67aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8 + aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+ + bCG+bCG+bCC+ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/ + bB+/bB+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/AbR3AbRzAbRzAbRzBbRzDbhzFbx3B + bRy7ahumXRiMTxWFShSEShSFSxSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJThSJThSJThSJ + ThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi/34bDx1Z/v0qDpw4fltnbir27fqWXd + o17anljYm1XXmVDWl07Wlk3WlU3WlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlU3XlU3XlU3XlU3XlU3Xlk3Xlk3Yl07Xlk7Yl0/ZmFDZmVDZmVHZmlLamlPam1XanFbanVfb + nlnbn1zcoF3coV/domLdpGTepWfep2rfqW3fq3DhrnPir3fisXrjtH7ktoLluIbmuormvIzmvY7nvpHr + yKLz3cX47N79+fX///////////////////////////////////////////////////////////////// + ///////////////////47+ThvZvNkly/cy+1XQ+0XhC3Yhi3Yxm3Yxm3Yxm3ZRy3ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26 + Zx26Zx26Zx26Zx26Zx26Zx27aB67aB+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8 + aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+ayG+ax++ax6+ax6+ + ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bR+/bR+/ + bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/AbBzAbRzBbRzCbhzDbhy3aBuiXBiWVBaKTRSFSxSFSxSH + TBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSI + TRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJThSJThSJThSKTxWMUhiQVx2U + XSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi/34bDx1Z/v0qDpw4fltnbir27fqWXdol7anljYm1XXmVDW + l07Wlk3WlU3WlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlU3XlU3XlU3XlU3X + lU3Xlk3Xlk3Yl07Yl0/Yl1DYl1DYl1HYmFHZmVLam1Tam1XanFbbnVfbnlnbn1vcoF3comDdo2PdpGXe + pmjfqGvfqm7gq3HhrXTir3jisnzktYDkt4PluYflu4vmvIzmvo/owZbry6X04s779u////////////// + //////////////////////////////////////////////////////////////////////////716Nzd + s4zAdjOzXRCyWwy0XxO2Yhe3Yxi3Yxi3Yxm3Yxm3Yxm3Yxq3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26 + Zx26Zx26Zx27Zx27aB+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8 + aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayC9ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ + ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bB+/bR+/bR+/bR+/bR/A + bR/AbR/AbR/AbR/AbR7DbhzDbRy/bBy1ZxqaWBeITRSCShOFSxSGSxSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSI + TRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyy + g0ewiE8zKRk2LR1GPi734bDx1Z/v0qDpw4fltnbir27fqWbdo1/bn1nYmlXXmFDWl07Wlk3WlU3WlUzW + lUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlU3XlU3XlU3XlU3XlU3Xlk3Xlk3Yl07Yl0/Yl0/Yl1DY + l1DYmFHYmVLZmVPZmlXZm1banFfbnlncn1vcoF3col/do2LepWTepmffp2rfqW3gq3DgrXThr3fisXvi + s3/ktoLluIfluovmvY3nvY7nwJPszanz38n58Ob9+vb///////////////////////////////////// + ///////////////////////////////////////////////z5dXar4fJi1O7bSa0XRC0XhK2YRe2Yhi2 + Yxi2Yxi3Yxi3Yxi3Yxi3Yxi3Yxm3Yxm3ZBu3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27 + Zx27aB67aR+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8 + aiC9ayG9ayG9ayG9ayG9ayC9ax+9ah69ah69ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ + ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/Bbh/Ebx/B + bRyuYhmdWBeQURWHTBSDShSFTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSI + TRSITRSITRSITRSITRSITRSITRSITRSJThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1G + Pi734bDx1aDv0qHpw4fltnbisG7fqWbdo1/bn1nYmlXXmFDWlk7Wlk3WlU3WlUzWlUzWlUzWlUzWlUzW + lUzWlUzWlUzWlU3XlU3XlU3XlU3XlU3Xlk3Xlk3Ylk7Yl07Yl1DYl1DYl1HYmFHYmVPZmlTZm1XZm1fa + nFjanVranlvboF3comDdpGPdpWXfpmjfqGvfqm7gq3LhrXTisHjisn3jtIDkt4TluYjlu4vmvIznvZDp + w5jtz6715NH++/n///////////////////////////////////////////////////////////////// + ///////////////////+/Prw3MrRmmq7bSmxWgyyWw60XxS2YRe2Yhi2Yhi2Yhi2Yhi2Yxi2Yxi2Yxi3 + Yxi3Yxi3Yxi3Yxi3ZBq3ZBy3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aR67 + aR+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9aiC9aiC9 + ax+9ah69ah69ah69ah69ah69ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/ + bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bB/Abh/Cbx/Abh+8ax+qYRqVVBaEShSCSRSEShSF + SxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSI + TRSITRSITRSITRSITRSJThWMUhiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi734bDx1aDv0qHp + w4fltnbisG7fqWbdo2Dbn1nYmlXXmFDWlk7WlU3WlU3WlU3WlUzWlUzWlUzWlUzWlU3WlU3WlU3WlU3W + lk3Wlk3Wlk7Yl07Yl0/Yl0/Yl1DYl1HYmFLYmVLZmVTZmlXZnFfanFjanVranlzbn13boV/comLcpGXd + pWfep2rfqm3gq3DhrXThsHjjsnvjtH/jtoPluIbmu4rmvI3nvY/owZbu0K725NL68ef//vz///////// + //////////////////////////////////////////////////////////////////////////7s1sHT + oXTEgES4Zh6yWQ2zXhO1YRi1Yhi1Yxi1Yhi2Yhi2Yxm2Yhi2Yhi2Yhi2Yhi2Yxi2ZBi2Yxi3Yxi3Yxi3 + Yxm3ZBu3ZBy3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aB27aB67aR67aR+7 + aR+7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8ah+8ah+8ah68aR68aR29ah69ah69ah69ah69 + ah69ah69ah69ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/ + bB6/bB6/bB6/bB6/bB/BbR/CbR+8ah+nXxyXVhqMURiCShSDSRSGSxSGSxSGSxSGSxSGSxSGSxSGTBSG + TBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSI + TRSJThWLURiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi734bDx1aDv0qHpw4jltnfisG7fqWbd + o2Dbn1nZm1XXmFDWlk7WlU3WlE3WlE3WlU3WlUzWlU3WlU3WlU3WlU3Wlk3Wlk3Wlk7Wl07Wl0/Yl1DY + l1DYmFHYmVLYmVPZmlTZm1Xam1fanVjbnVvbnlzcoF7comHco2PdpGbdpWnfqGzfqm/gq3LhrnXisHnj + sn3ktYHkt4TmuYjmu4vmu4znvpDpxZvv07T57OD+/Pn///////////////////////////////////// + ///////////////////////////////////////////////8+PTr0brLj1q0YRewWAuyXBG1XxW1YRi1 + YRi1YRi1YRi1YRi1Yhi1Yhi2Yhi2Yhi2Yhi2Yhi3Yhi2Yhi2Yxi2Yxm2Yxi2Yxi3Yxi3Yxi3ZBy3ZBy3 + ZRy3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aB27aB27aB27aB27aB27aR67aR67 + aR+7aB+7aB+8aR+8ah+8ah68aR28aR28aR28aR28aR28aR28aR29ah69ah69ah69ah69ah69ah69ah69 + ah69ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB7BbR7Cbh7A + bB64aB2iWxuKThiCSheCSheESxaFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThWLURiPVh2U + XSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi734bHy1qDv0qHpw4jltnjisG7fqmbdpGDbn1nZm1XXmFDW + lk7WlU3WlU3WlE3WlE3WlU3WlU3Wlk3Wlk3Wlk3Xl07Xl0/Xl1DXl1DXmFLXmFLYmVLYmlTamlXam1fa + nFjanVrbn1zbn13coWDcomPdpGXepmjep2vfqW7fq3HhrXTgr3jisnzjtIDjtoPkuIfmu4vmvI3nvY/q + xJvw1rn25tX89e7+/v3///////////////////////////////////////////////////////////// + ///////////////////9+vXpzrXQmWnBejy0XxaxWQ60Xxa1Yhm1Yhm0Yhm1YRi1Yhm2Yhm1YRi2YRi2 + YRi1Yhm1Yhi1Yhi2Yhi3Yxm3Yxm2Yhi2Yhi3Yxm3Yxi2Yxi3Yxi3Yxi3ZBq3ZBy3ZBy3ZBy3ZBy3ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6 + Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28 + aB28aB28aR28aR28aR28aR28aR28aR28aR28aR29ah69ah69ah69ah69ah69ah69ah69ah69ah69ah6+ + ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6/bB7AbB7BbR7BbR60Zh2fWhqUVBiHTRaCShaESxaF + TBeFTBeFSxWFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThWLURiPVh2TXCKaZCmhbjKpeDyy + g0ewiE8zKRk2LR1GPi734bHy1qDw0qLqw4jltnjisG7fqmbdpGDbn1nZmlXXmFDWlk7WlU3WlU3WlE3W + lE3WlU3WlU3Wlk7Xlk7Xl0/Xl1DXl1DXmFHXmFLYmVPYmlXYm1bYm1fanFnbnlrbn1zcoF/comHco2Pd + pGbdpmneqGzfqnDgq3PhrnbhsHrjs33jtYHkt4XluYnlu4vmvIznv5Lqx5/x2b757+T///////////// + ///////////////////////////////////////////////////////////////////////////68uvm + yKzEgkayXRKwVwqzXBG0Xxa1YBi1YBi0YBi1YRm1Yhm1Yhm1Yhm2Yhm2Yhm1Yhm1YRi2YRi2Yhm1Yhm2 + Yhi3Yxm3Yhi3Yhi3Yxm3Yxm2Yhm2Yxi3ZBm2Yxi3Yxi4ZRu3ZBu3ZBy3ZBy3ZRy3ZRy3ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26 + Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR28aR28 + aR28aR28aR28aR28aR28aR28aR28aR29ah69ah69ah69ah69ah69ah69ah69ah69ah69ah6+ax6+ax6+ + ax6+ax6+ax6+ax6/ax7BbR7AbB69ax6zZRyXVhiGTBaBShWDSxaETBaFTBaFTBaFTBaFSxSFSxSFSxSF + SxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSITRSITRSITRSITRSITRSITRSITRSITRSJThWLURiPVh2TXCKZZCmgbTKpeDyyg0ewiE8zKRk2LR1G + Pi734bLy1qDw0qLqw4nlt3jisG/fqmfdpGDbn1rZmlXXmFHWlk7WlU7WlU7WlU7Xlk7XlU7Xlk/Xl1DX + mFDXmFHXmFLYmVPYmlTZm1bZnFfZnFnZnVran1zaoF7boWHco2PdpGbdpmnep2vfqm7grHLhrXXhsHni + sn3jtYDktoTkuIjlu4vmvI7mvZDqxp/w2L747N789/H///////////////////////////////////// + ///////////////////////////////////////////////68+ziv6DOlGO8cTCyXRKwWg6zYBa0YRi1 + YBe1YRi1YRi1YRm1YRm1YRm1YRm1Yhm1Yhm1Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yhi3Yxm3 + Yxm3Yxm3Yxm2Yhi3ZBm2Yxi3Yxi2Yxm3ZBu3ZBu4ZRy3ZB23ZRy3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26 + Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR28aR28aR28aR28aR28 + aR28aR28aR28aR28aR29ah69ah69ah69ah69ah69ah69ah69ah69ah69ah69ah6+ax6+ax6/bB7CbR++ + ax6pYBuaVxmOUBeGSxaCShaETBaFTBaFTBaFTBaFTBaFTBaFTBWFSxOFSxSFSxSFSxSFSxSFSxSFSxSF + SxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSI + TRSITRSITRSITRSITRSJThWLURiPVh2TXCKZZCmgbTKodzyyg0ewiE8zKRk2LR1GPS734bLx1qHv0qLq + xIrlt3jisG/fqmfdpGDbn1rZm1XXmFHWlk/WlU7WlU7Xlk/XllDXl1DXl1HXl1LXmFLYmVTYm1XYm1bZ + nFfZnVnanVvan13boF/bomLcpGTcpWfdpmreqW3gq3DgrHPhrnfhsXvis37jtoLkuIbluonlu4vlu4zn + v5TqyKHy3cX89/H///////////////////////////////////////////////////////////////// + ///////////////////////37ePcsozBez2xWQ6wVwyyWxKzXha0YBi0YRi0YRi0YRi1YRi1YRi1YRi1 + YRm1YRm1YRm1YRm1Yhm1Yhm1YRi2Yhm2Yhm2Yhm2Yhm2YRi2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3 + Yhi3Yxi2ZBm2Yxi3ZBq3ZBu4ZRy3ZBu3ZBy4ZR23ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26 + Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR28aR28aR28aR28aR28aR28aR28 + aR28aR29ah69ah69ah69ah69ah69ah69ah69ah69ah6+ax7BbB6/ax66aR6mXhqSUxiCSRaBSRaDShaE + SxaFSxaFTBaFTBaFTBaFTBaFTBaFTBaFSxSFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSG + SxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSI + TRSJThWLURiPVh2TXCKZZCmgbTKodzyxg0ewiE8zKRg1LBtFPS334rLx1qHv0qLpxIrluHnisHDfqmjd + pGHbn1rZnFbYmVLXl1DXlk/XllDXllDXl1HXl1HYmFLYmVTZmVbZm1fZnFnZnlvan13aoF/bomHbo2Tc + pWfcpmneqGzeqm/frHLgrnbhsHrisn7jtIHkt4XluYnlu4zmvI7mvY/ryKLz38n47OD9+vf///////// + ///////////////////////////////////////////////////////////////////////////05djc + tJHHiVS7biyvWQ6wWg+zXxa0YBi0YBi0YBi0YBi0YBi0YRi0YRi1YRi1YRi1YRi1YRi1YRm1YRm1YRm1 + YRm1Yhm1Yhm1YRi2Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm2Yhi3Yxm2Yhm2Yxi3Yxm3 + ZBm3ZBu4ZRy4ZRu3ZBy4ZRy3ZB24ZB23ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27 + aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR28aR28aR28aR28aR28aR28aR28aR28aR29ah69 + ah69ah69ah69ah6+ah6/ax7AbB64Zx2kXRuUUxmLTheCShaCShaFSxaFSxaFSxaFSxaFSxaFSxaFSxaF + TBaFTBaFTBaFTBOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSG + SxSGSxSGSxSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSJThWLURiPVh2T + XCKZZCmgbTKndTquf0KsgUQ0Kxw7NixJR0L34rPy1qPv06PpxIvluHnisXDfqmjdpGLboFrZnFbYmVPX + l1HXllDXl1DXl1LXmFLYmVPYmVXYmlfZnFnanVvbn13boGDbomLcpGXcpmfdp2veqW7eq3HfrXXgr3ji + sXvis3/jtoPkuIfluormu4vmvI7nwZbry6b149D8+PP///////////////////////////////////// + ///////////////////////////////////////////////+/fzw38/UpHm4aSWvVwyvVw2xXBOzXhez + YBizYBi0YBi0YBi0YBi0YBi0YBi0YBi0YRi0YRi0YRi1YRi1YRi1YRi1YRm1YRm1YRm1YRm1YRm1Yhm1 + Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm3Yxm3Yhi3Yxm3Yxi3ZBm3ZBm3ZRy4ZRy4 + ZBu4ZBu3ZBy4ZBy3ZBy4ZR23ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27 + aB27aB27aB27aB27aB27aB27aB28aR28aR28aR28aR28aR28aR28aR28aR28aR28aR29ah6/ax7AbB+9 + ah62Zh2dWBqHTBaBSRaBSBaDSRaEShaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFTBaFTBSFSxOF + SxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSG + TBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSJThWLURiPVh2TWyGWXiObZCendjq7 + kVvTvaA/PjtBQUFMTEz347Ty16Pw06PqxYzluHvisXHfq2rdpWPboFvZnFfYmVTXmFLYmFLYmFPYmVTZ + mlbZm1jZnFranVvan17boWHco2TcpGfdpmneqG3eqnDfrHPgrnfhsXvis37jtYLkt4bkuonlu43lvI7n + v5TszKj04cz68ef++/n///////////////////////////////////////////////////////////// + ///////////////////////v3c3SoHbDgUm0YxyuVw2xWxOzXhezXxizXxizXxizXxizYBizYBi0YBi0 + YBi0YBi0YBi0YBi0YBi0YRi0YRi0YRi1YRi1YRi1YRi1YRm1YRm1YRm1YRm1Yhm1Yhm1Yhm2Yhm2Yhm2 + Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3Yhi3ZBm3ZRu3ZBu4ZBu4ZRy4ZBu4 + ZBy4ZR24ZR23ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27 + aB27aB27aB27aB28aR28aR28aR28aR28aR28aR28aR29aR2/ah2+ah2xYxydWBmRUhiGSxaBSBaDSRaE + ShaEShaEShaEShaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFShWFShOFSxOFSxOFSxOFSxOFSxOF + SxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSG + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSKTxaJTxOPVBetfkrVvJ3r3c38+PPv7+9BQUFBQUFM + TEz347Xy2KTw1KTqxY3luHvisXPfq2rdpmPboF3anVnZmlbYmVTYmVXZmlbZm1fZnFnanVzan1/boWHc + omTcpGfdpmveqG7fqnHgrHXgr3nisnzjtIDjtoTkuYjkuorlu4zmvY/nw5nszq3259f+/fv///////// + ///////////////////////////////////////////////////////////////////////////9+vft + 18XIilWzXxmtUwivWA6xXBSyXheyXxiyXxizXxizXxizXxizXxizXxizYBizYBizYBi0YBi0YBi0YBi0 + YBi0YBi0YBi0YRi0YRi0YRi1YRi1YRi2Yhm1YRm1YRm1YRm1YRm1Yhm1Yhm1Yhm2Yhm2Yhm2Yhm2Yhm2 + Yhm2Yhm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3Yhi3Yxi3ZBq3ZRy3ZRy4ZRy4ZBu3ZBu4ZR24ZR24ZR23 + ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27 + aB27aB28aR28aR29aR2/ax2+ah27aB2uYhuUUxeDShV/SBSCSRaDShaEShaEShaEShaEShaEShaEShaE + ShaEShaFSxaFSxaFSxaFSxaFSxaFSxaFSxWFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOF + SxSFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSGSxKBRQmFRwuMUhmtfk/Ywqr9+/n////////////v7+9BQUFBQUFMTEz347by2KXw1KXq + xo7lun3js3TfrGzdp2XboV/anlzZm1nYm1fZm1jZnFnanVzboF/bomLco2XdpWnep2zeqXDfq3Pgrnfh + sHvis3/jtYPkuIfkuorlvI3lvI/nwJbt0bH15tP68un//v3///////////////////////////////// + ///////////////////////////////////////////////////myK/Pmm2/eDuyXhauVgyxXBSyXhey + XheyXheyXheyXheyXxizXxizXxi0XxizXxizXxizXxizXxizYBizYBi0YBi0YBi0YBi0YBi0YBi0YBi0 + YRi0YRi0YRi1YRi2Yhm1YRi1YRm1YRm1YRm1YRm1Yhm1Yhm1Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yhm2 + Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3ZBq3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy3ZBy4ZR24ZR23ZR23ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26 + Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR3Aah67 + aB2mXRqYVhiMTxaDShWASBWCShWDShWDShWEShaEShaEShaEShaEShaEShaEShaEShaEShaFSxaFSxaF + SxaFSxaFSxaFSxWFSxSFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSF + SxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSGTBKFShCCRQmJThSr + flLSuqLq3tL///7////////////////////v7+9BQUFBQUFMTEz347by2Kfw1Kbrxo/lu37jtHXgrm3e + qGfbo2HaoF7ZnlzZnVvanlzanl7aoGHco2TdpWndqGzeqXDfrHThr3jhsHzis4DjtoTkuInluovkuovm + vZHoxJvu1bj47uH+/fv///////////////////////////////////////////////////////////// + ///////////////////////8+fXlx63Ii1iuVw6rUgevWBCxXBWyXheyXheyXheyXheyXheyXheyXhey + XxiyXxiyXxizXxizXxizXxizXxizXxizYBizYBizYBizYBi0YRm0YRm0YRm0YRm0YBi0YRi0YRi0Yhm1 + Yhm1YRi1YRi1YRm1Yhq1YRm1YRm1YRm1Yhm1Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yxm3Yxm3 + Yxm3Yxm3Yxm3Yxm3Yhi3ZBu3ZRy3ZRy4ZBy4ZRy4ZRy4ZBy4ZBy4ZB24ZR23ZRy4Zhy7ah2+bx26aBy4 + ZBy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26 + Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB29aR2+ah68aR23Zh2jWhmPTxeASBWASBWBSRWC + ShWDShWDShWDShWDShWDShWEShaEShaEShaEShaEShaEShaEShaEShaEShaEShaFSxaFSxaFSxaFShOF + ShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSF + SxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSESQ9/QgWFSQ+LUhmwhlvs3s////////////////// + ///////////////////v7+9BQUFBQUFMTEz35Ljz2Kjx1ajrx5Lmu4DjtXnhr3HeqWrcpWXbomLaoGHZ + oWDaoWLco2XdpWndp23fqnHfrHXhsHrisX7jtILjt4bkuorlu43lu47pxJzv17z36Nn79vD//v7///// + ///////////////////////////////////////////////////////////////////////////89vDm + yrHMlGS9dzuvWA+tVQywXBaxXRexXRexXReyXheyXheyXheyXheyXheyXheyXheyXheyXxiyXxiyXxiz + YBmzXxizYBmzYBmzXxizXxmzYBmzYBizYRm0YRm0YRm0YRm0YBi0YRm0YBi0YRm1Yxm1Yhm1YRi1YRi1 + Yhm1Yhm1YRm1YRm1YRm1Yhq1Yhm1Yhm2Yhm2Yhm2Yhm2Yxq2Yhm2Yhm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3 + Yxm3Yxm3ZBu3ZRy3Zhy3Zhy4Zhy5Zhy5Zhy4Zh24ZRy3ZRy5aB29bh2/cR67aRy4ZBy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26 + Zx26Zx26Zx27aB28aB29aR2+ah20ZByhWhmTUheJTBaARxWBSBWDSRWDShWDShWDShWDShWDShWDShWD + ShWDShWDShWEShaEShaEShaEShaEShaEShaEShaEShaEShaEShaFShWFShOFShOFShOFShOFShOFShOF + ShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSG + SxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSGSxKDSA5+QAOVXinCoYDbxrH07eX///////////////////////////////////////// + ///v7+9BQUFBQUFMTEz35Lnz2Krx1qrryJTnvYPktnvhsHPfq27dp2jcpmfbpGbbpGbcpWncp2zeqnDg + rHTgrnnisn3itYPkt4fkuInkuovmvpLpx6Hx2sH68un///////////////////////////////////// + ///////////////////////////////////////////////////58OfjwqW+dzyvWhOsVAmuWBCwXBWx + XRexXRexXRexXRexXRexXReyXheyXheyXheyXheyXheyXheyXheyXheyXheyXxiyYBmyXxizYBmzYBmz + XxizXxizXxmzYBizYRmzYRm0YRm0YBi0YBi0YRm0YBm0YBi1YRm0Yhm0Yhm1Yhm1YRi1Yhm1Yhm1Yhm1 + YRq1YRq1Yhq1Yhq1Yhm2Yxq2Yxq2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3Yxm4ZRu4 + Zxy4Zxy4Zxy5Zxy5Zxy5Zxu5Zx24Zh26aB28bR28bB64Zhy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx28aB29aR27 + aB2yYxybVhmFShWASBWARxWCSBWDSRWDSRWDSRWDSRWDShWDShWDShWDShWDShWDShWDShWDShWDShWD + ShWEShaEShaEShaEShaEShaEShaEShaEShaESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOF + ShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSG + SxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHSxOCRQuBQgeHSxOZ + ZTHEpIX17OP////////////////////////////////////////////////////////v7+9BQUFBQUFM + TEz35bvz2qvx16zsyZfnv4bluX7is3jgr3Leq2/dqW7dqG3eqW7eqnHfrHXfr3risn7jtYPkuIjkuovl + u43pxZ7x28L469/9+PT///////////////////////////////////////////////////////////// + ///////////////////////47+fdtpXJkF+4bC2uWRKtVg+vWxWwXBexXRexXRexXRexXRexXRexXRex + XRexXRexXReyXheyXheyXheyXheyXheyXxiyXheyXheyXheyXxiyYBmyYBmzXxizYBmzYBmzYBmzYBmz + YBmzYRmzYRm0YRm0YRm0YRm0YRm0YRm1YRm0YRm0Yhm0Yhm1Yhm1YRi1Yhm1Yhm1Yhq1YRm1Yhq1Yhq1 + Yhm1Yxq2Yxq2Yhm2Yhm2Yxq2Yhq2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm4Yxm4ZBm4ZRm4Zhu4Zhy4Zxy4Zxy5 + Zxy5Zxy5Zxy5Zxy5Zx26aB25Zx24ZR23ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx27Zx29aB28aB2uYRuZVRmOTxeESRWARxWCSBWD + SRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDShWDShWDShWDShWDShWDShWDShWDShWDShWDShWEShaEShaE + ShaEShaEShaEShWEShOESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFSxOFSxOF + SxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSG + SxSGSxSGTBSGTBSGTBSHTBSHTBSHTBSHTBSGSxOGShGAQwmCRAmicEHKr5Xk1cb79vH///////////// + ///////////////////////////////////////////////////v7+9BQUFBQUFMS0r45bz0267y2K/t + y5nowYvlu4PjtnzisXfgrnXfrHPfrHPfrnfgsHrhsn7itILjtoTjuInlvZHqyKLz3sn89vD///////// + /////////////////////////////////////////////////////////////////////////////v30 + 6N3Vp3+8dTisVAusVAyuWBGvWhWwXBewXBewXBexXRexXRexXRexXRexXRexXRexXRexXRexXhixXhiy + XhiyXheyXheyXheyXxiyXxiyXheyXheyXheyXxiyXxiyYBmzYBmzYBmzYBmzYBmzYBmzYBmzYBmzYRmz + YRm0YRm0YRm0YRm1YRm0YRm0YRm0Yhm0Yhm0YRi1Yhm1Yhm1Yhm1Yhq1Yhq1YRm1Yhq1Yhm1Yxq1Yxq2 + Yhm2Yxq2Yxq2Yxq2Yxq2Yhm2Yxm2Yxm3ZBm4ZBm4ZRm4ZRm4ZRm4ZRq4Zxy4Zxy4Zxy5Zxy5Zxy5Zxy5 + Zhy4Zhy4Zh24ZR24ZR23Zh24ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy6Zhy9aB28aB25Zx2sXxuRUBeCSBV+RhSARxWBSBWCSBWDSRWDSRWDSRWDSRWDSRWD + SRWDSRWDSRWDSRWDSRWDSRWDShWDShWDShWDShWDShWDShWDShWDShWDShWDShWEShaEShaEShWESROE + SROESROESROESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOF + SxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSG + TBSGTBSGTBSFShGBQwmDRgyJThapeUvXwav+/Pv///////////////////////////////////////// + ///////////////////////////////////v7uxBPz1APTdLSEL45sD03LLz2bLtzZ7pw5DmvYnluYPj + toDhs33hsn3hsn7htIDitYPjtoXkuYrpx6Hy3sf47uL9+vf///////////////////////////////// + ///////////////////////////////////////////////////v28rZr4vBf0m1aCesVQysVw+vWxWw + XBewXBewXBewXBewXBewXBewXBewXBexXRexXRexXRexXRexXRexXRexXhixXRexXRexXRiyXhiyXxey + XxiyXxiyXxiyXxiyXxiyXxiyXxiyYBmyYBmzYBmzXxizYBmzYBmzYBmzYBmzYRmzYRmzYRmzYRm0YRm1 + Yhq0YRm0YRm0YRm0Yhm0Yhm1Yhm1Yhm1Yhm1Yhm1Yhq1Yhq1Yhq1Yhq1Yhq1Yxq1Yxq2Yxq2Yxq2Yxq2 + Yxq2Yhm2Yhq2Yhm3ZRq3ZRq4ZRm4ZRm4ZRm4ZRm4ZRq4Zhu4Zxy4Zxy4Zxy5Zxy5Zxy5Zxy5Zx24Zhy4 + ZR23ZB23ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy6Zxy9aB23 + ZRyiWhmVUxeJTBWCSBV/RhWBSBWCSBWCSBWCSBWCSBWCSBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWD + SRWDSRWDSRWDShWDShWDShWDShWDShWDShWDShWDShWDShWDShWEShSESROESROESROESROESROESROE + SROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOF + SxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSFShKESRCAQwmKUBew + hVvUvafp3dL///////////////////////////////////////////////////////////////////// + ///////+/fv87dz7587q1bZAOjFAOzJLSEH458L13rX03Lbuz6PrxpTowI7mvIrkuYfkuIXjt4XjtYPi + t4XlvI7qyqb04tD9+PT///////////////////////////////////////////////////////////// + ///////////////////////+/fvu2sjSoHawXRirUgqrUwutVxGuWhWvWxavXBavXBawXBewXBewXBew + XBewXBewXBewXBewXBexXRexXRexXRexXhixXhixXRexXhixXRexXRexXReyXhiyXxiyXxiyXxiyXxiy + XxiyXxiyXxiyXxiyYBmyYBmyYBmzYBmzYBmzYBmzYBmzYBmzYRmzYRmzYRmzYRm1Yhq0YRm0YRm0YRm0 + YRm0Yhm0Yhm0Yhm1Yhm1Yhm1Yhm1Yhq1Yhq1Yhq1Yhq1Yhq1Yxq1Yxq2Yxq2Yxq2Yxq2Yxq2Yxq3Yxq3 + ZRq3ZRm3Zhq4ZRm4ZRm4ZRm4ZRm4ZRm4ZRu4Zxy4Zxy4Zxy5Zxy5Zxy5Zxy5Zxy4Zh23ZB23ZRy4Zh24 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy6Zhy8aB26Zxy1YxugWBiLTRZ+RhR+RhR/RxSB + SBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWD + ShWDShWDShWDShWDShWDShWDShWDShWDShKDSRKESRKESROESROESROESROESROESROESROESROESROF + ShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSF + SxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSDRg5+QAWFSBCLURu0i2Lu4tX///////////////// + ///////////////////////////////////////////////////////////////++fb86dT42LL40qT4 + 1qnpzqhAOjBAOzJLR0D56cb14Ln03brw06jsyZzqxZbowZPmvo/lu4vmvo7ry6nz4Mv58OX+/Pr///// + ///////////////////////////////////////////////////////////////////////////////t + 2MbOnHLAfkevXRirVAysVxGuWhWvWxavWxavWhWuWxWvWxavXBawXBewXBewXBewXBewXBewXBewXBew + XBewXBexXRexXRexXhixXhixXhixXhixXhixXRexXhixXhiyXhiyXxiyXxiyXxiyXxiyXxiyXxiyXxiy + XxiyYBmyYBmyYBmzYBmzYBqzYBqzYBqzYBmzYBmzYBqzYRm0Yhq0YRq0YRm0YRq0YRq0YRq0Yhq0Yhm0 + Yhm1Yhm1Yhm1Yhm1Yhm1Yhq1Yhq1Yhq1Yhq1Yxq1Yxq1Yxq2Yxq2Yxq2Yxm3ZBq3ZRq3ZRm3ZRq3ZRm4 + ZRm4ZRm4ZRm4ZRm4ZRm4ZRq4Zhy4Zxy4Zxy5Zxy5Zxy5Zxy5Zhy4ZRy4ZB24ZB24ZRy3ZRy3ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy5ZRy6Zhy7ZxyxYRudVxiPTxaGSxV+RhR/RxSBSBSBSBSBSBSBSBSBSBSCSBWCSBWC + SBWCSBWCSBWCSBWCSBWCSBWCSBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDShWDShWD + ShWDShWDShSDSRKDSRKDSRKDSRKESROESROESROESROESROESROESROESROESROESROFShOFShOFShOF + ShOFShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSF + SxSFSxSFSxOESRKCRQ1+PwSWXyzDo4TcyLT17+j///////////////////////////////////////// + ///////////////////////////////////+9u764sj31rH2zaD2yJT2y5n30KD41Kbpy6FAOS5AOjBL + Rz756sn24r704L7w1q7tzaHrx5vpxJfqxZzt0bL36dn+/Pr///////////////////////////////// + ///////////////////////////////////////////////////8+fXr1L/GiVewYB2oTgWqUwytWBOt + WhWtWxauWxavWxavWxavWxavWxavWhWvWxavXBavXBawXBewXBewXBewXBewXBewXBewXBewXBewXBix + XRexXRexXhixXRexXRexXhixXhixXhixXhixXhiyXxiyXxiyXxiyXxmzYBiyXxiyXxmyXxiyYBmyYBmy + YBmyYBqzYBqzYBqzYBqzYBqzYBqzYBq0YhuzYRqzYRu0YRq0YRq0YRu0YRm0YRq0Yhq0Yhm0Yhm1Yhm1 + Yhm1Yhm1Yhm1Yhq1Yhq1Yhq1Yhq1Yxq1Yxq1Yxq2Yxm3ZRm3ZRq3ZRq3ZRq3ZRm3ZRq3ZRm4ZRm4ZRm4 + ZRm4ZRm4ZRm4Zhu4Zxy4Zxy4Zxy5Zxy5Zhy4ZRy4ZR24ZB23ZRy3ZRy3Zh23ZRy4ZRy4ZRy6Zhy7Zhy4 + ZRyvYBuWUxeCSBR8RRR9RhSARxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWC + SBWCSBWCSBWCSBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDShWDShWDSRKDSRKDSRKD + SRKDSRKDSRKDSRKDSRKESROESROESROESROESROESROESROESROESROESROFShOFShOFShOFShOFShOF + ShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSEShOARAt/QgiFShOY + ZTTJqo738Oj///////////////////////////////////////////////////////////////////// + /////////v398+r53L31xpbzwYr0wor1w431xpH2yZX2zZn30Z/pyZ1AOC1AOi9LRz357M735MP14cPx + 17Lv0qzy27736tr89O3//v7///////////////////////////////////////////////////////// + ///////////////////////8+fXmy7LOnHG6cziwXRmpUQqsVhGtWRWuWhatWRWtWhWuWhauWxauWxav + WxavWxavWxavWxavWxavWxavXBavXBawXBawXBewXBewXBewXBewXRiwXRewXBiwXBixXRexXhixXhix + XhixXhixXhixXhixXhixXhixXhiyXxiyXxiyXxmzYBmyXxmyXxmyXxmyXxmyXxmyYBmyYBqzYBqzYBqz + YBqzYBqzYBqzYBqzYRuzYRqzYRq0YRq0YRq0YRq0YRq0YRq0Yhu0Yhq0Yhq0Yhq1Yhq1Yhm1Yhm1Yhq1 + Yhq1Yhq1Yhq1Yxq1Yxq1Yxq1ZBq3ZRq3ZBq3ZRq3ZRq3ZBq3ZRq3ZRm3ZRm4ZRm4ZRm4ZRm4ZRm4ZRm4 + Zhq4Zhu4Zxy4Zxy5Zxy4Zhy4ZRy4ZR24ZR23ZR24ZR24Zhy6Zxy5ZhyrXxuWUxiMTRaBSBR9RRR/RxSA + RxSARxSARxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWC + SBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRSDSBODSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKD + SRKDSRKESROESROESROESROESROESROESROESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOF + ShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOEShKDSRB+QQeAQwmickXLsJjl18n8+PT///////////// + /////////////////////////////////////////////////////////////v788eT53L/20an0xJLz + v4fzvojzv4f0v4b0wIj1w4n1xY72ypL3zpnox5c/OCxAOS5LRzz57dD35sf35sv358/79Ov///////// + ///////////////////////////////////////////////////////////////////////////////5 + 8uviwaXDg1CqVQ+oUAmpVA6rVxKtWRWtWRWtWRWuWRWuWhatWRWuWRauWxauWxauWxavWxavWxavWxav + WxavWxavWxavXBavXRavXBawXBawXBewXRiwXRiwXRiwXRiwXRewXRixXRixXhixXhixXhixXhixXhix + XhixXhixXhixXhixXhmyXxmzYBmyYBmyXxiyYBmyYBiyXxmzYBmzYBuyYRqyYBqyYBqzYBqzYBqzYRqz + YRuzYBqzYRqzYhuzYhu0YRq0Yhu0Yhu0Yhu0YRq0YRq0YRq0Yhm0Yhq1Yhq1Yhm1Yhq1Yhq1Yhq1Yhq1 + Yhq1Yxq1Yxq2ZRq3ZBq3ZRq3ZRq3ZRq3ZBm3ZBm3ZRq3ZRm4ZRm4ZRm4ZRm4ZRm4ZRm4ZRm4Zhq4Zxu4 + Zxy3Zhy3ZRy4ZRy5Zh27Zx25ZR22ZB2oXRqNThaARxR9RRR+RhR/RxSARxSARxSARxSARxSARxSARxSA + RxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWDSRWD + SRWDSRWDSRWDSRWDSRWDSRODSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKE + SROESROESROESROESROESROESROESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOF + SxOFSxOFSxODSRB/QgiCRgyJTxesf1PXwq3//fz///////////////////////////////////////// + /////////////////////////////////////fv87+L20630xpXzwYvzwInzvofzvYTyu4Hyu3/zu3/z + vID0voL1wof2x432y5ToxZI/NypAOS1LRzz89eX89uz+/Pj///////////////////////////////// + ///////////////////////////////////////////////////58uvhwKTGjVy4bzKqVA6pUgyrVxOs + WBWsWRWsWRWtWRWtWRWtWRWuWRWtWRWuWhauWhauWhauWheuWxeuXBivXBivXBivXBivXBivXBivXBiv + XRivXRivXhiwXRiwXhqwXhqwXhqwXhqwXhqwXhqwXRqwXhmxXhmxXhixXhmxXhixXhmxXhmxXhmxXhmx + XhqxXxqyXxqyYBqyYBmyYBqyYBqyXxmzYBq0YRuyYRqyYBuyYRuyYRuyYRuzYBqzYRuzYBuzYRyzYRuz + YhuzYRq0Yhu0Yhu0Yhu0YRq0YRq0YRq0YRq0Yhu1Yhu1Yhq1Yhm1Yhq1Yhq1Yhq1Yhu1Yhq2Yxq2ZRq2 + ZRq3ZRq3ZRq3ZRq3ZBm3ZRq3ZRq3ZRq3ZRm3ZRm4ZRm4ZRm4ZRm4ZRm4ZRm4Zhm4Zhq4Zhu4Zhy8Zx21 + YxugWBmTURiHShaARhV+RhSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSBSBSBSBSB + SBSBSBSBSBSBSBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWDSRWDSRWDSRSDSROD + SRODSBKDSBKDSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKESROESROESROE + SROESROESROESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOESRGCRw5+QgeJTxev + hFvVv6ns4db///////////////////////////////////////////////////////////////////// + ///////++/n759P52732zaL1xZP0wYzzwIvzvojyvITyuX7xuHvyt3nxtnfxt3fxuHjyu3zzvoH0w4f1 + yI/owo4/NylAOSxLRzv///////////////////////////////////////////////////////////// + ///////////////////////////37eTas5G1ai6oUw2mTwiqVA6sVxOsWBSsWBSsWBWsWBWsWRWsWRWs + WRWtWRatWhatWheuWhiuWxmuWxmuWhmuWxmuXBmuXBmvXBmvXBmvXBmvXBqvXRqvXBmvXRqvXRqvXhmw + XhqwXhuwXhuwXhuwXhuwXhuwXhuwXhuwXhuxXhuxXxyxXxuxXhuxXhqxXxqxXxqxXxqxXhmyXhqyXxqy + YBmyYBqyYBqyXxmzYRuzYRuzYRuyYBqzYBuyYRuyYRuzYRu0YRyzYRu0YRu0YRuzYRuzYRuzYhu0Yhy0 + Yhu0Yhq0Yhq0Yhu0YRu0YRq0Yxu0Yhq1Yxq1Yhq1Yhq1Yhq1Yhu1Yhq2Yxu2ZBq2ZRq2ZRq3ZRq3ZBm3 + ZRq3ZRq3ZRq3ZRq3ZRq3ZRm3ZRm4ZRm4ZRm4ZRm4ZRm6Zhm7Zxm3ZBmyYRmdVheISxZ9RRR+RRSARhWB + RxWBRxWARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSBSBSBSBSBSBSBSBSBSBSB + SBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBSCSBODSBKDSBKDSBKDSBKDSBKDSBKD + SBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKESROESROESROESROESROESROE + SROESROESROESROFShOFShOFShOFShOFShOFShOBRQ19PgOESA+OVSC5kmzx5tr///////////////// + ///////////////////////////////////////////////////////////////++fT65c/20Kn0xJP0 + wo/0wo7zwIvzvofzu4PyuX/yt3vxtHbxs3Tws3LxsnDxs3HxtXPyt3fzvH30wYP1x4zowIw/NilAOCtL + Rjr////////////////////////////////////////////////////////////////////////////0 + 6N7UqITDhlSwYSGoUQyoUg2rVxOrWBSrWBSsWBSsWBSsWRWsWRasWBatWRitWRitWhitWhitWxmuWxmu + WxmuWxmuWxmuWxmuWxmuWxmuXBmuXBmvXBmvXBmvXBmvXBmvXRqvXRqvXRqvXRqvXhqwXhqwXhuwXhuw + XhuwXhuwXhuwXhywXhuwXhyxXhyxXx2xYB2xYB2xXxyxXxyxYByxYByyXxyyYByxXxuzYBuyYBqyYBqz + YRu0Yhy0YRuyYBqzYBuzYRuyYRuzYRy0Yh2zYRu0YRy0YRy0YRyzYRuzYhu0Yhy0YhyzYhu0Yhu1Yhy0 + Yhu0YRu0Yhu0Yxy0Yxu1Yxu1Yhq1Yhq1Yhq1Yhq1Yxu2ZBu2ZRq2ZRu2Zhq2ZRq3ZRq3ZRq3ZRq3ZRq3 + ZBm3ZBm3ZRq3Zhq4ZRm6Zhm7ZhmvYRibVhaOTRSESBN9RBF+RRKARhOBRhOBRhSBRxWBRxWBRxWARxSA + RxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSB + SBSBSBSCSBWCSBWCSBWCSBSCSBSCSBOCRxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKD + SBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKESROESROESROESROESROESROESROESROESROE + SROFShOFSRKESBGAQwt/QAaXYS/CooXdy7j38ev///////////////////////////////////////// + ///////////////////////////////////99u764sr317b2zKH0w5D0wpDzw4/zwIvzvofyu4Pyun/x + t3vxtXfxs3TwsXDwr2zwr2rwr2vwsG3xs27xtnPyu3rzwIH1xonov4k/NihAOCtLRjr///////////// + ///////////////////////////////////////////////////+/v3y49bPnnWyZSakSwOnTwmqVBCr + VhOrVxSrVxSrVxSrWBWrWRarWResWResWResWRetWhitWhmtWRmtWhitWxmtWxmuWxmuWxmuWxmuWxmu + WxmuWxmuWxmuXBmuXBmuXBmvXBmvXBmvXRqvXRqvXRqvXRqvXhqvXhqvXhqwXhuwXhuwXhuwXhywXhyw + XhywXh2wXhywXxyxYB2xYB2xYB2xXx2yYB6xYB2xYB2yYR+xYB6xYB2yYByyYBuzYRy1Yx2zYRyzYRuz + YBuzYBuyYBu0YRyzYh2zYRy0YRy0Yhy0YhyzYRu0YRyzYhu0YhyzYhu0Yhy0Yhu0Yhu1Yhu0Yhu0Yhu0 + Yhu0Yhu0Yxq1Yhq1Yhq1Yhq1Yhq2Yxu2ZBq2ZBu2ZBu2ZRq2ZRq3ZRq3ZRq3ZRq3ZBm4ZRq5Zhq5Zxq3 + ZhqsXxiVUxWDSBJ9RRF+RBJ/RBKARRKARhKARhKARhGBRRGBRhKBRxSARhSARhSARhSARxSARxSARxSA + RxSARxSARxSARxSARxSARxSARxSARxSARxSARxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBOCSBKC + RxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKD + SRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKESROESROESROESROESROESROESRODSBJ+QQl+QAeFSRKb + aDnQtZv68+z///////////////////////////////////////////////////////////////////// + /////////v398+j53sL0y57zxJPzxJPzw5Hzwo3zv4ryvobyvIPxuX7xt3rxtXfws3TwsXDwsG3vrmrv + rGjvrGburGfvrWnwsWvwtXHxuXfzvn71xIbovoc/NihAOCpLRjn///////////////////////////// + ///////////////////////////w4NHQoXu+fUmuXh6lTAaoUw+qVxSrVxSrVxSrWBWrWBarWBarWBer + WBerWRerWRerWResWResWhitWhisWhitWRitWhitWhmtWxmtWxmuWxmuWxmuWxmuWxmuWxmuWxmuWxmu + XBquXRquXRqvXRqvXRqvXRqvXRqvXRqvXRqvXhqvXhqvXhqwXhuwXhuwXhywXhywXhywXh2wXxywXx2w + Xx2xXx2xXx2xYB2yYB6yYB6xYB2yYR6yYR+xYB6yYB6yYR6zYh+1ZCC0Yx+zYR2zYBuzYBuzYByzYRy0 + Yh2zYRyzYRy0Yh20Yhy0YRy0YRy0YRy0YRyzYhu0Yhy0Yhy0Yhu1Yhy1Yhy0Yhu1Yhy1Yhu0Yxu0Yxu0 + Yhu1Yhu1Yxu1Yxq2ZBu2ZBq2ZBq2ZBq2ZRq2ZRq3ZRq4ZRq6Zhq3ZRqpXhiVUxWMThSBSRN+RhKARxKB + RhKARRKARRKARRKARhKARhKARhKARhKBRhKBRRGARRGARRGBRhKARhKARhKARxKARxOARxOARxSARxSA + RxSARxSARxSARxSARxSARxSARxOBRxOBRxOBSBOBSBKBSBKBSBKBRxGBRxGBRxGCRxGCRxKCRxKCRxKC + RxKCRxKCRxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKD + SRKDSRKDSRKDSRKDSRKDSRKESROESROESRODSBKCRxB8PwaAQgmkdUrKr5fl18r9+/j///////////// + /////////////////////////////////////////////////////////////v398OX53cH20670yZrz + xJLzxJL0w5DywYzyvonyvYTxu4LxuX7xt3vxtXbws3PvsW/wr23vrmrurGfuq2TuqmPuqmPuq2TvrWbw + r2jwtG/xuHXzvX30xIXmvoU/NidAOCpLRjn////////////////////////////////////////////9 + +vft2sjJk2asWhmkSwWnTwupUxCqVhSqVhSqVxWqWBaqWBerWBerWBerWBerWBerWBerWBerWBerWRer + WResWResWhisWRetWhitWhmtWhmtWxmtWxmtWxmuWxmuWxmuWxmuWxmuWxmuWxmuXBquWxmuXRquXRqu + XRqvXRqvXRqvXRqvXRqvXRuvXRqvXhqvXhuvXhuwXxywXhywXhywXx2wXx2wXx2wXx6wXh2xXx2xYB2x + YB2yYB6xYB2yYB6yYR+yYR6yYR6yYB6zYh+1ZSK1ZSGzYh+zYh+zYR6zYR20Yh20YRyzYRuzYR2zYh2z + YR20YRy0Yhy0YR20YR2zYRy0Yhy0Yx20Yhy1Yhy1Yxy0Yhu1Yhy1Yhy0Yhu0Yxu0Yxu0Yxu0Yxu1Yxq2 + Yxu2ZRy2ZBu2ZBu3ZRy5Zxu3Zhq0ZBqmXBiMThSASRN+RxJ/SBKASBKBSBOARhKARROARhOARRKARRKA + RRKARRKARhKARhKARhKARRGBRhKBRRGBRhKARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGA + RhGARhGARhGARhGBRhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKC + RxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKD + SRKDSRKDSRKBRg99QAeBRAyIThmvg1raxbH///7///////////////////////////////////////// + /////////////////////////////////////fr87+D206/0yJrzxJPzxJLzw5Hzwo/zwIvzvojyvITy + uoHxuH3xtnnwtHbws3TvsXDwr2zvrWnvrGfuq2XuqmPuqWHuqGDuqWDuqWHvrGTwrmjws27xt3PzvXv0 + w4PmvYQ/Nic/OCpLRjn///////////////////////////////////7q1MDNmnK7d0GqVxalTgioVBGq + VhSqVhSqVxWqVxaqVxaqVxeqWBeqWBeqWBerWBerWBerWBerWBerWBerWBesWRisWRisWhisWhisWRet + WhitWhitWhmtWhmtWxmtWxmtWxmtWxmuWxmuXBquWxmuXBquXBquWxmuXBquXRquXRquXRqvXRqvXRqv + XRqvXRqvXRuvXRuvXhuvXxyvXxywXx2wXx2wXx2wXx2xXx2xXx6wXx2xXx6xXx6xYB6yYB6yYB6yYB6z + YR+yYR+yYR6yYB+zYR+0ZCO0ZSKzYiCzYiCzYiCzYh+0Yx+0Yx+zYR2zYR2zYh2zYh2zYh20Yhy0Yh20 + Yh60Yh20Yh20Yhy0Yxy0Yxy0Yxy0Yhy1Yhu1Yhy0Yhu1Yhy0Yhu1Yxu0Yxu1Yxu2ZBy2Zx+3aCC6aSCy + YxydVxeTUhaGTRSASRN/SBOBSROBSROBSBKBSBOBRxOARRJ/RRKARRKARRKARRKARRKARRKARRKARhKA + RhKARhKARhKBRhKBRhKBRRGBRhKBRhKARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGA + RhGARhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKD + SBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKCSBCARQ19QAaJTxmy + iGHWwKvs4df///////////////////////////////////////////////////////////////////// + ///////++/f659P427z2zqX0xpfzw5Hzw5HzwY7ywIvzvYfyvYXxu4HyuX/xtnvwtnjxs3TwsXHwsG7w + r2vvrWnvrGfvqmTuqWHuqWDuqF7up13up1zup1ztqF7uq2HwrWbwsmzxt3LzvXn0woPmvYM/NSY/NylL + Rjj////////////////////////9+PXp0brHjluvXx6mTwqnUA2oUxGpVhSpVhSpVxWpVxaqVxeqVxeq + VxeqVxeqVxeqVxeqWBeqWBeqWBerWBerWBerWBerWBesWBesWBesWResWhisWResWhitWhitWhitWhmt + WhmtWhmtWxmtWxmtWxmuWxmuXBquWxmuXBquXBquXBquXBquXRquXRquXRqvXRuvXRqvXRuvXRyvXhyv + XRuvXhywXxywXx2wXx2wXx2wXx2xXx2xXx6xXx6xXx6xYB6xYB+yYB+yYR+yYR6yYR+yYR+yYR+yYR+y + YSC0ZCO0ZCOzYiCzYh+zYh+zYiC0YyC0YyGzYh+zYh6zYR2zYh2zYh2zYR20Yh60Yh20Yh20Yh20YRy0 + Yh20Yx20Yxy0Yhy0Yhy1Yhy1Yhy0Yhu0YRu0Yxy1Yxy2ZRu3Zh62bCmwbjObXCOITRd9RhR+RhSARxOB + SBOBSROBSBOBSBOBSBOARhN/RRN/RRJ/RRKARRKARhN/RRKARRKARRKARRKARRKARRKARRKARhKARhKA + RRGBRRGBRRGARRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGBRxGB + RxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKDSBKDSBKD + SBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKDSBF/RAt7PQKCRw+OVyK/mnbz6d////////////////// + ///////////////////////////////////////////////////////////////++PL648z20KnzxJTz + w5Lzw5HzwpDzwIzzv4nyvIbyu4PyuX/xt3zxtnnxtHbwsnPwsXHwr23vrmvvrGfvq2bvqmTuqWPuqGHu + p1/up13uplztplvtplrtplvtp13uq2DvrWTwsWrxtnHzvXn0woHmvYI/NSY/NylLRjj////////////9 + +fbr1LrWq3/Eh061ayitXBetXBmrWRiqVhWpVhWpVhapVhepVxepVxepVxeqVxeqVxeqVxeqVxeqVxeq + VxeqWBeqWBeqWBeqWBerWBerWBerWBesWBerWBesWBisWhisWhitWhitWhitWhitWhmtWhmtWxmtWxqt + WxqtXBquXBquXBquXBquXBquXBquXBquXBquXBquXRquXRqvXRqvXRuvXRuvXRyvXRyvXhywXhywXhyw + Xx2wYB2wXx2xXx6xYB6xYB6xXx6xYB+xYB+xYCCyYCCyYSCzYiCyYSCyYR+yYR+yYSC0ZCO1ZSWzYiGy + YSCzYiCzYiG0YyG0YyGzYiCzYiCzYiCzYiCzYh+zYh+zYh60Yh20Yh60Yh60Yh60Yh20Yh20Yx20Yx20 + Yh21Yhy1Yx21Yxy2Yxy3Yxy3ZBysXhuYVhyOWiqEXTZ+TSF/SBeBRxSBRxSBRhSBRxSBRxOBRxOBRxOA + RxOARhOARhOARRKARhOARRKARRJ/RRKARRKARRKARRKARRKARRKARRKARhKARhKARhKARhKBRRGBRRGB + RRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGB + RxGBRxGBRxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKD + SBKDSBKDRxGCRhB+QQl9PwWYZDTCo4bezLv48+7///////////////////////////////////////// + ///////////////////////////////////99Oz54sr31bT0y5/zw5Hzw5Hzw5HzwY3yv4nyvYbyu4Tx + uoDxuH3xtnrwtXfwsnTwsXLvsG/vr2zvrWrvrGjuq2XuqmTuqWHtqGDtp1/tpl3tpVztpVvtpVrtpVnt + plntplvtp1zuql/vrWTwsWnxtnDzu3j0woDmvII/NSY/NylLRjj////8+fLx38far3vFg0C8dTC3byu0 + aiexYyGuXhyrWhiqVxapVhepVhepVhepVhepVxepVxepVxeqVxeqVxeqVxeqVxeqVxeqVxeqWBeqWBeq + WBeqWBerWBerWBesWRisWRisWRisWRisWhisWhisWhitWhitWhitWhitWhmtWhqtWxqtWxmtXBqtXBqu + XBquXBquXBquXBquXBquXBquXBuuXRuuXRuuXhuvXhuvXRyvXhywXh2vXhyvXhywXx2wYB6wXx2xXx6x + YB+xYB+xXx+xYB+xYB+xYCCxYCCxYCCzYiGzYiGzYSGyYSCyYSC0YyS2Zie0YyOyYSCzYiKzYiG0YyG1 + ZCKzYiCzYiCzYiCzYiCzYiGzYiCzYyCzYx+0Yh60Yh60Yh60Yh60Yh60Yh60Yh60Yx20Yh24ZB23ZB21 + YhupWxuTUBiBRhV9Rhd+Sh1/TR+AShqARxWARhSARhSARRSARhSARROARRSARhSARhOARhOARhOARRKA + RhN/RRKARhOARhOARhN/RRKARRKARRKARRKARRKARRKARRKARhJ/RhKARhKBRRGBRRGBRRGARRGARRGA + RRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGB + RxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKDSBKDSBKDSBKDSBKCRxF8Pwd9PwaESROa + ZznSuaH89/L///////////////////////////////////////////////////////////////////// + /////////v388eX43cD0yZ3zxJPzw5Lzw5HzwY7ywIvyvojyvIXxuoHwuH7wt3vwtXjvtHXvsnLvsXDv + r27urmvurWnurGfuq2XtqWTtqWHtp2Dtp1/tpl3tplzspVrspFrspFnspFnspFjspFjsplrtp1ztql/u + rGTvsWnxtnDyu3jzwoDmvII/NSY/NylLRjjy27LlwYrdsXnPl1jGh0XAfTu6czG1ayiwZCKuXx6rWhqq + VxepVhepVhepVhepVhepVhepVxepVxepVxeqVxeqVxeqVxeqVxeqVxeqVxeqVxeqWBerWBeqWBerWRis + WRisWRisWRisWRisWRisWhisWhisWhitWhitWhitWxmtWhmtWxqtWhqtXBqtXBqtXBquXBquXBuuXBqu + XBquXBuuXBuuXByuXRyuXRyvXhyvXh2vXh2wXh2wXh2wXh2vXh2wYB6wYB6wYB6xXx6xYB+xYCCxYCCx + YCCxYCCxYCCxYCCyYSGzYiGzYiKzYiGzYiG0ZCS2Zyi0ZCOzYiGzYyKyYSCzYyK0ZCO0YyC0ZCKzYyGz + YiCzYyGzYiC0YyGzYyGzYyCzYh+0Yh60Yh60Yh60Yh61Yh63Yx60Yx2lWhuTURmKSxeBRhZ9RBV/RRR/ + RRWARxd/SBZ/RxWARhSARhSARhSARhSARhWARRSARRSARRSARhOARhOARhOARhOARhOARhOARhOARhOA + RRJ/RRJ/RRJ/RRKARRKARRKARRKARRKARRGARhGARhKARhKARRGARRGARRGARRGARRGARRGARhGARhGA + RhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGC + RxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRhGBRQ97PAOAQwqpfFPLsZnp3ND9+/n///////////// + /////////////////////////////////////////////////////////////v388OP43MD20q7zx5jz + w5Hyw5Lyw5DywIzyvonxvYbxu4PwuX/wt3zwtnnvtHbvsnPvsXHusG7vr2zurWrurGjtq2btqmTuqmPt + qWHtp2DtqF/tpl7tplztplvtpVvspFrspFrspFjspFjspFjspFjspVntp1vtql7urGPvsGnwtm/yu3jz + woDmvIE/NSY/NylLRjjryo/it3rdtH7Rm13GiEbAfTu6czK1ayqwZCStXx+qWhqqVxepVhapVhapVhep + VhepVhepVhepVhepVxepVxepVxeqVxeqVxeqVxerVxeqVxeqVxeqWBeqWBeqWRerWRisWRisWRisWRis + WRisWRisWhisWhisWhitWhitWxmtWxmtWxmtWhmtWxqtXBqtXBqtXBquXBquXBquXBuuXBuuXRyuXRuu + XRyuXRyuXRyvXh2vXh2wXh2wXh2wXh2vXh2wXh6xYB+wYB+wYB6wYB+xYB+xYCCyYCCyYSCyYSGxYCCx + YCCyYSGyYSGzYiGzYiG0YyO2Zye0ZSSzYyKzYiGyYiKzYyO0ZCO0YiG0YyK0ZCK0YyK0ZCK0YyK0ZCK0 + YyG0YyGzZCKzYiC1Yx+4ZB+2Yx6yYR2iWRyITBh+Rhd8RRd+RRaARhaARhZ/RRV/RRWARRSARhV/RhR/ + RhSARhSARhSARhSARhSARRSARRSARRSARROARhOARhOARhOARhOARhOARhOARhOARhOARhN/RRJ/RRKA + RRKARRKARRKARRKARRKARRKARRJ/RhF/RhKARhKARRGARRGARRGARRGARRGARhGARhGARhGARhGARhGA + RhGARhGARhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGCRxKCRxKC + RxKCRxKCRxJ/RA57PgZ/QwyJTxuxhV7axrP///////////////////////////////////////////// + ///////////////////////////////////+/Pr77Nz10q3zyJnyw5Lyw5Lyw5DywY3xv4rxvofxu4Pw + uYDwuH3wtnrvtXfvs3TusnLusG/ur23urmrurWjuq2btqmXtqmPtqGLtqGDtqF/tp17tplztplztplvs + pVvspFrspFrspFnspFjspFjspFjspFjspFjspFntplvtqV7urGPvsGnwtG/yu3jzwX/mvIA/NSY/NylL + RTjszZPiuX3dtH7Rm13GiEfAfT26czS1ayuwYyStXx+qWhqpVxepVhapVhapVhapVhepVhepVhepVhep + VhepVxepVxepVxeqVxeqVxerVxeqVxerWBirVxerWBirWBirWRisWRisWRisWRisWRisWRisWRisWRis + WhmsWxmtWxmtWxmtWxmtWxmtWxqtWxqtXBqtXBqtXBquXBuuXBuuXRuuXRuuXRyuXRyuXRyuXRyvXh2v + Xh2vXh2vXh2wXx6wXx6wXx+wXx+xXx+wYB+wYB+wYR+xYCCyYSGyYSKyYSKyYSGxYSGzYSGzYyOyYiKz + YiK0YyO2Zye1ZiazYyOzYyOzYyO0ZCS0ZCOzYyK0ZCK0ZCO0ZCK0ZCK0ZCK0YyK0ZCO1ZCK2ZCK3ZSKu + YSGbVh2RUBuFShl+Rxd9Rhd/Rxd/Rxd/Rxd/RhZ/RxaARhaARhWARRWARRV/RRR/RhSARhWARhWARhSA + RhSARhSARRSARhSARROARROARROARhOARhOARhOARhOARhOARhOARhOARhOARRJ/RRJ/RRKARRKARRKA + RRKARRKARRKARRKARhJ/RhKARhKARhKARRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGA + RhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRRB/Qgx7PQWLUh60 + jWjYw7Dw5t3///////////////////////////////////////////////////////////////////// + ///////++fX55tH32bv0zKPzxZXywpHywpDywY3xv4rxvofwvITwuYDwuH3vtnrvtXfutHTusnLusW/u + r23trmrurWjtrGbtq2TtqmPtqWHtqGDtqF/tp13tp1ztplvtplvtpVrspVrspFnspFnspFnspFnspFjs + pFjso1jso1jspFjso1jspFntplvtqV7urGPvsGnwtHDxunfzwX/mvIA/NSY/NylLRTjszJPiuX3dtH7Q + nF/GiEjAfT66czS1ayuwYyStXh+qWhqpVxeoVhapVhapVhapVhapVhapVhepVhepVhepVhepVxepVxep + VxepVxeqVxeqVxerWBirWBirWBirWBirWRirWRirWRisWRisWRisWRisWRisWRisWhmsWhmsWxmsWxmt + WxmtWxmtWxmtWxmtWxqtWxutXButXButXByuXRyuXRyuXRyuXRyvXR2vXR2uXRyvXh2vXh2uXx2wXx+w + Xx6wXx+wXx+xYB+wXx+wYCCxYSCxYSCxYSCyYSGyYSKyYSKyYiKyYSKzYyOyYiKyYiKzYyO2aCi2Zyez + YyOzYyOzYyO0ZCS0ZCSzYyOzYyS0YyK0ZCK0ZCO0ZCK2ZSO3ZiO0ZCOtXyGYVB6GSxx8Rht9SBt/SBmA + RxiARxeARxeASBiARxd/RxZ/RhaARhaARhaARRaARhaARRV/RRWARhWARhV/RhR/RhSARhSARhOARhSA + RhSARRSARROARROARhOARhOARhOARhOARRKARhOARhOARRJ/RRJ/RRJ/RRKARRKARRKARRKARRKARRKA + RRKARRF/RhGARhKARRGARRGARRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGA + RhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGARhB8QQl6PAOBRg+OVyXBnn/17eb///////////////// + //////////////////////////////////////////////////////////////7+9/H54cn0zaXyw5Ly + wpHywpDywY7yv4zxvojwvITwuoLwuH/wt3vvtXjvs3XvsnPusXDusG3trmvtrWntrGftq2XsqmPsqWHs + qGDsqF/tp17tplztplvsplvspVrspVnrpFnrpFjrpFfspFfspFjspFjso1jso1jso1jso1jso1jso1js + o1jspFntplvtqV7urGPvsGnwtHDxunfzwX/mu4A/NSY/NylLRTjszJPiuH7dtIDQnGDFiEjAfT66czS1 + ayuwYyStXh+qWRqpVxeoVhaoVhaoVhapVhapVhapVhapVhepVhepVhepVhepVhepVxepVxeqVxeqWBiq + VxerWBirWBirWBirWBirWRirWRirWRisWRisWRisWRisWRisWRisWhmsWRisWhmsWxmtWxmtWxmtWxmt + WxqtWxutXBytXBytXBytXRytXRyuXR2vXR2vXR2vXR2vXR2vXh6vXh6vXx+vXx+vXx+wXx6wXx+wXx+x + YCCxYCCxYCCxYSGxYiCxYSCyYiKyYiKyYiOyYiOzYySzYyOyYiOyYiO1Zyi2Zyi0ZCSzYyOzYyO0ZCS0 + ZCSzYyOzYySzYyO0ZCO3ZSO2ZSOpXiKYVR+NTx2DShx9Rht/RxyASRyASRyASR2ASRyASBqASBiARxd/ + Rxd/Rxd/Rxd/Rxd/RhaARhaARxaARhWARRaARRWARRV/RhR/RhR/RhSARhSARhOARhOARhSARRSARRSA + RROARhOARhOARhOARhOARhOARhN/RhN/RRJ/RRJ/RRJ/RRKARRKARRKARRKARRKARRKARRJ/RRF/RRF/ + RRF/RRGARRGARRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGB + RxGBRxGBRhCARQ98QAh8PgWZZzjGqo/gz7/59PD///////////////////////////////////////// + ///////////////////////////////////88uf54Mf21LH0yp7ywpDywpHywpDywYzxvonxvIXxuoLw + uX/wt3zwtXnvs3busnPvsXHur27trmzurWntq2ftq2XsqmPsqmLsqWDsqF/sp17sp13sp1zsplvrpVrr + pVrrpVnrpFjrpFjrpFjrpFfrpFfrpFfro1fro1fro1jro1fro1fro1fro1jro1jro1jrpFnsplvsqV7t + rGLusGnvtW/wunbzwX/lu4A/NSY/NylLRTjszZXiuX/dtIDQnGDFiEi/fT66czS1ayuwYyStXh+qWRqp + VheoVRaoVhaoVhaoVhapVhapVhapVhapVhepVhepVhepVheqVheqVxeqWBipVxeqVxerVxerWBirWBir + WBirWBirWRirWRirWRisWRisWhmsWRisWRisWhmsWhmsWhmsWxmsWxmtWxqtWxqtWxqtWxqtXButXByt + XBytXRytXRytXRyuXR2vXR2vXh6vXh6vXh6vXh+vXh+vXx+vXx+vXx+wXx+wXyCxYCCxYCCxYCCxYCGx + YSGxYiGxYiGyYiKyYiOyYiSzYySzYySyYiSyYiO1Zii2Zyq0ZCWzYyOzYyS0ZCS0ZCS0YyS1ZSS1ZCOy + YySlXCGSUx+BSR19Rxx/RxyASRyASRyASByBSBuBSRyASRyASRyASRuASBqARxeARxh/RxeARxeARxd/ + RhZ/RhaARhaARhaARhaARRWARRWARhWARhV/RhR/RhSARhOARhSARhSARhOARRSARROARROARhOARhOA + RhOARRKARhOARhOARRKARRKARRJ/RRJ/RRJ/RRKARRKARRKARBGARBGARRJ/RRJ/RRJ/RhGARRGARRGA + RRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhF/RA95PAV7PgaCSBKY + aDvUu6X9+vf///////////////////////////////////////////////////////////////////// + /////////vz87+P3273zx5vxw5LywpHywpDywI7yv4vxvYfxvITwuYDwuH7wtnrvtHfvs3TvsXHusG/u + rm3urWrtrGjtq2btqmXtqGPsqGHsqF/sp1/sp13sp1zsplvspVrrpVnrpVnrpFnrpFjrpFjrpFfrpFfr + pFfro1fro1fro1fro1bro1bro1fro1fro1fro1fro1fro1jro1jrpFnsplvsqV7trGLusGjvtG/wunbz + wX/lu4A/NSY/NylLRTjszZXiuX/dtIDQm2DFiEi/fT65czS1ayuwYyStXh+qWRqpVheoVRaoVRaoVhao + VhaoVhapVhapVhapVhapVhepVhepVhepVheqVhepVxipVxeqWBipWBirWBirWBirWBirWBirWBirWRir + WRirWRisWRisWhmsWhmsWhmsWhmsWhmsWhmsWxmsWxmsWxqtWxutXBqtWxqtWxutXByuWx2uXR2uXR2u + Xh2vXR2vXh6vXh6vXh6vXh+vXh+vXh6wXyCwYCCwYCCwYCGxYSGyYSKxYSGxYSGxYSKxYSKxYiKxYiKy + YiOyYiSzYySzYySyYiSyYiO1Zii3aSyzZCWzYySzZCS1ZSW2ZiWyZCSjWyKSUyCJTh9/SB19Rx2ASB2B + SRyBSByASRyBSR2ASByBSRyBSRyASBuBSRyBSR2BSR2ASBuASBl/RxiARxeARxd/Rxd/RxZ/RxeARxeA + RxeARhWARhaARhWARRWARhWARhWARhR/RhOARROARhOARROARROARROARROARhOARhOARhOARhN/RRKA + RRKARRJ/RRJ/RRJ/RRJ/RRJ/RRKARRKARRKARRKARRKARRKARBKARRF/RRF/RRGARRGARRGARRGARRGA + RRGARhGARhGARhGARhGARhGARhGARhGARhF/RQ9+Qw13OgKARQ6rgVnKsZro3ND9/Pr///////////// + /////////////////////////////////////////////////////////////fz77uD327310avyxpfx + wpDxw5Dxwo7xv4vxvojwu4TwuoHvuH7vt3vvtXjvtHXusXLusG/tr23trmvtrGntq2fsqmTsqWPsqGLs + p2Drpl/spl7spl3rpVzrpVvrpFrrpFrqo1nqpFjqpFjro1jro1fro1fro1frolfrolfrolfro1bro1br + o1bro1bro1bro1fro1fro1fro1fro1jro1jrpFnspVvsqV7trGLusGjvs2/wunbzwX/lu38/NSU/NylL + RTjszZXiuX/dtIDQm2DFiEi/fT65czS0ayuvYyStXh+qWRqpVheoVRaoVRaoVRaoVhaoVhaoVhaoVhap + VhapVhapVhapVhepVxipVhepVhipVxiqWBiqWBeqWBirWBirWBirWBirWBirWBirWRirWRirWRirWRis + WhmsWhmsWhmsWhmsWhmsWhqsWxqsWxqsXBusXButXButXButXByuXB2uXB2uXR2uXh2uXR2vXh6vXh+v + Xh+vXh+vXh+wXh+wXyCwXiCwYCGwYCGwYSKyYiOxYiKxYSKxYSKxYSKxYiOxYiOxYiOxYyOyZCSzZCaz + YyWyYyO0Zii3ay62Zie1ZCWzZCSxZCahWyOHTR9/SR59Rx5+SB2ASR6ASR6ASB2ASB2BSR2BSRyBSR2B + SR2BSRyBSRyASByBSRyBSRyASRyASRyASRuASRt/SBh/Rxd/RxeARxd/Rxd/RhZ/RhaARhWBRRWARhWA + RRWARRWARRV/RhR/RhSARRSARhOARhOARROARROARROARROARROARhOARhOARhOARhN/RhN/RhN/RRJ/ + RRJ/RRJ/RRJ/RRJ/RRKARRKARRJ/RRKARBF/RBF/RRF/RRF/RRGARRGARRGARRGARRGARRGARRGARhGA + RhGARhGARhF9Qw15PAR+QguITxyzi2bgzr3///////////////////////////////////////////// + ///////////////////////////////////+/Pn66dj1z6nyxpjxw5HywpHxwo/xwI3xvonwvYbwuoLv + uX/vt3zvtnnutHbusnPtsXHtr27trmzsrWnsrGfsqmbsqWTrqGLrp2Drp1/rpl7rpl3rpVvrpVvqpFrq + pFnqo1nqo1nqo1jqo1jqo1fqolfqolfqolfqolfqolfqolbrolbrolbrolbrolbrolbrolbrolbrolbr + olbrolbrolbrolfrolfro1jspFrsqF3tq2Hur2fvs27wunXzwH7lu38/NSU/NyhLRTfszZXiuX/dtIDQ + m2DFiEi/fT65czS0ayuvYySsXh+qWRqpVheoVRaoVRaoVRaoVRaoVRaoVhaoVhaoVhapVhapVhapVhaq + VxeqVxeqVxiqVxiqVxiqVxiqWBiqWBirWBirWBirWBirWBirWRmrWBirWRmrWhmrWhmsWhmsWhmsWhms + WhqsWhqsWhqsWhqsXBqsXButXBytXBytXBuuXByuXByuXB2uXR6uXh6uXh6vXh+vXh+vXh+vXh+wXyGw + XyCwYCGwYCGwYCGwYSKwYSKxYiOxYSKxYSOxYiOxYiOxYiOxYyOxYySyZCSzZSazZSazYyS2Zyi7bzKv + YyiYViGPUSGFTSCASiB/SR+BSh+BSh+ASh+ASh+BSh+BSR6ASR6ASR6BSh2BSh6BSh6BSR2BSh2ASRyB + SR2BSRyASRyASRyASRyASRyASRuASBmARxeARxd/Rxd/Rxd/RxeARhZ/RhaARhWARRWARRWARRV/RRSA + RhV/RhR/RhSARhOARhOARRKARROARROARROARROARROARhOARhKARhOARhN/RRJ/RRJ/RRJ/RRJ/RRJ/ + RRJ/RBGARRKARRJ/RRGARBGARBF/RBF/RRF/RRGARRGARRGARRGARRGARRGARRF/RA98QQt5PASJUh+2 + kG7YxLHw59////////////////////////////////////////////////////////////////////// + ///////9+PL548722bnzy6LyxJTxwpHxwpDxwI7wv4rwvYbwu4PvuYDuuH3utnrutHfus3TtsXLtsG/t + rmzsrWrtrGjsq2bsqmTrqWLsqGHrp1/rp1/rpV3rplzrpVvrpVvrpFrqpFrqo1jqo1jqo1jqo1jqo1fq + o1fqolfqolfqolfqolbqolbqolbqolbrolbrolbrolbrolbrolbrolbrolbrolbrolbrolbrolbrolfr + olfro1jspFrsqF3tq2Hur2fvs27wunXywH7lu38/NSU/NyhLRTfszZXiuX/dtIDQm2DFiEi/fT65czS0 + aiuvYySsXh+pWRqoVheoVRaoVRaoVRaoVRaoVRaoVRaoVhaoVhaoVhaoVhapVhaqVhaqVxeqVhepVheq + VxiqVxiqWBiqWBiqWBiqWBirWBirWBirWRmrWBirWBmrWRmrWhmrWhmrWhmsWhmsWhqsWhqsWhqsWhus + WxusWxusXButXBytXBytXByuXR2uXR2uXR+uXR+uXh+uXh+vXiCvXiCwXyCwYCGwYCGwYCGwYCGwYCKw + YCKwYSKxYiSxYiSxYSOxYSOxYSOxYiSxYySxYySyZCSyZSayZSWyYyWsYSadXi6HUCR8SB99SR9/SiCA + SyCASh+BSh+BSh+ASh+BSh+BSh+BSh+BSh+ASh+BSh+BSR6BSh6BSh6BSh6BSh2CSh2BSRyBSR2BSByA + SR2ASh2ASRyASRuASBqARxh/RxeARxiARxd/Rxd/RxeARhaARRWARRWARhZ/RRWARRV/RhR/RhR/RhSA + RROARRKARhOARROARROARROARROARROARhN/RhOARRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RBF/ + RRKARRKARRJ/RBF/RBF/RRF/RRF/RRGARRF/RBB7Pgl5OwSARBCMVSTDooT27+n///////////////// + /////////////////////////////////////////////////////////////v799u/34MbzzKLxwpLx + wpHxwZDwwY/wv4vvvYjvu4XvuoHvuH7utnvttXjts3XtsnPssHDsr23srWvrrGnrrGfsq2XsqmPsqGHr + qGDrp1/rpl7rplzrplvrpVvrpVrqpFnqo1nqo1jqo1jqo1fqo1fqo1fqolfqolfqolfqolbqolbqolbq + olbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolfqolfqo1jrpFrrp13s + q2Htr2fus27wunXxwH7lu38/NSU/NyhLRTfszZXiuX/dtIDQm2DFiEi/fT65czS0aiuvYiSsXh+pWRqo + VhenVRaoVRaoVRaoVRaoVRaoVRaoVRaoVhaoVhaoVhapVhapVxeqVxeqVxaqVxeqVxiqVxiqVxiqWBiq + WBiqWBirWBirWBirWRmrWRmrWRmrWRmrWRmrWhmrWhmrWhqrWhqsWhqsWxqsWxqsWxusWxusWxutXByt + XR2tXR2uXR6uXR2uXR6uXR+uXR+uXR+uXiCvXyCwXyGwXyGwYCKwYCGwYCGwYCKwYCOwYSOxYSSxYySx + YiSxYiSyYySyYySyYyWyYySyYySzZSawZCWOUSGBSyGFUyyETyaASiCASiGBTCGBSyGASiCBSiCBSiCB + SiCBSiCBSiCBSiCBSh+BSh+BSiCASh+ASh+BSh+BSh6CSh6BSR2BSRyBSR2BSRyBSRyASRyASRyASRyA + SRyASRuASBmASBiARxd/Rxd/Rxd/RhZ/RhaARhaARhaARRWARRV/RRR/RRR/RhN/RhOARhOARhOARhOA + RROARROARROARBN/RBKARROARhN/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RBF/RRJ/RBGARRJ/RBF/ + RBGARBF/RBB+Qw55PQd7PgeYZzrHrJPh0cL59fH///////////////////////////////////////// + ///////////////////////////////////88eb438b107DyyJzwwZDxwpHxwY/wwIzwvYjvvIXvuoHv + uH7utnvutXnts3XtsXPssHDtr23srmvrrGnsq2frqmTrqWPqqGHrp2Drp17rpl7rpV3rpVvqpFrqpFnq + pFnqo1nqo1jqo1fqo1fqolbqolbqolfqolbqoVbqoVbqolbqolXqolXqolbqolbqolbqolbqolbqolbq + olbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolfqolfqo1jrpFrrp13sq2Htr2fus27wuXXx + wH7lu38/NSU/NyhLRTfszJXiuX/dtIDQm2DFiEi/fT65czS0aiuvYiSsXR+pWBqoVhenVRanVRaoVRao + VRaoVRaoVRaoVRaoVRaoVRapVRaoVxapVxepVxeqVxeqVxeqVxeqVxiqVxiqVxiqVxiqWBiqWBiqWBir + WRmrWBirWBirWRmrWRmrWRmrWRqrWhqrWxurWxqsWxqtWxqsWxusWxutWxysWxutXB2tXR2uXR2uXR2u + XR6uXR6vXR+uXSCuXiCvXyGvYCKvYCKwYCKwYCOwYCKwYCKwYSOwYCOwYSSxYyWxZCWxYySxYySyYyWy + YySyYyWyYyWzZCW1ZielXSOETSGGUyyGUimASyGASyGBTCKBSyKASyGASyGASyCBSiCBSyGBSyGBSyGB + SyGBSiCBSiCASh+ASh+BSh+BSx+CTCCBSh6BSh2BSR2BSRyASRyASBuASByASRyASRyBSRyBShyASBmA + RxeARxd/Rxd/Rxd/RhZ/RhaARhZ/RhWARRWARRV/RRR/RRR/RhN/RhR/RhOARhOARROARRKARROARROA + RROARROARROARhOARhOARRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RBF+Qg94OgR6OwaBRhOc + bELYwav9+/j///////////////////////////////////////////////////////////////////// + /////////fz77uD22brxx5nwwpHwwpDwwY/vwI3vvorvvYbvu4PvuH/ut3zutXnus3btsnPtsHDsr27s + rWvsrGnrq2frqmXrqWTrqGLqp2Dqpl7qpV3qpVzqpFvqpFrqo1nqo1jpoljpoljpolfpolbpolbpoVbp + oVbpoVbpoVbpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpolXpolXpolXpolXpolXpolXpolXpolXpolXp + olXqolXqolXqolXqolXqolXqolXqolbqolbqo1frpFrrp13sq2Htr2bus27wunXxwH7lu38/NSU/NyhL + RTfszJXiuH7dtIDQm2DFiEi/fT65czS0aiuvYiSsXR+pWBqoVRenVRanVRanVRaoVRaoVRaoVRaoVRao + VRaoVRaoVRaoVRapVxeoVxepVxepVxeqVxeqVxiqVxiqVxiqVxiqVxiqWBmqWBmqWRmrWBirWBirWRmr + WRmrWRmrWRqrWRqrWhurWxurWxusWhusWxytWxytWxytXB2tXB2tXR6tXR2tXR2tXR6uXh+vXh+vXiCv + XyGvXyGvYCKvYCKvYCKwYCOwYCOwYCOwYSOwYiSxYiSxYiSxYyWxYyWxYySxYyWyYyWyYyayZCayZCWz + ZSe1ZiepYCWMVyyEUiqASyGASyGCTSKBTCKASyGASyKASyGBSyGBSyKBSyGBSyGBSyKBSyCBSiCBSiCB + SyCBSh+BSyCBSh+BSx+BSh6BSR2BSh2ASR2BSB2ASByASBuBSRyBSRyASRyASRuASBp/Rxh/Rxd/Rxd/ + RhZ/RRV/RhZ/RRWARhV/RRR/RRR/RRR/RRR/RRN/RhR/RROARRKARRKARRKARROARROARROARROARROA + RhOARRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ+RBB8QQ12OAJ/Qw6sgVzLsZvr4NX+/fz///////////// + /////////////////////////////////////////////////////////////fv77N722bz00KnxxJXw + wY/wwpDwwI7vv4rvvYfvu4PuuoDtuH3ttXrttHftsnTtsXHtr2/srmzsrGrsq2jsqmXrqWPrqGLrp2Dr + p1/qpl7qpV3qpVvqpFvqpFrqo1nqo1jpoljpolfpolfpolfpoVbpolbpoVbpoVbpoVbpoVbpoVXpoVXp + oVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXqolXqolXq + olXqolXqolXqolbqolbqo1frpFrrp13sq2Htr2fus27wunXxwH3lu38/NSU/NyhLRTfszJXiuH7dtH/Q + m2DFiEi+fT64czS0aiuvYiSsXR+pWBqoVRenVBanVBanVRanVRanVRaoVRaoVRaoVRaoVRapVhepVRep + VhapVhapVxeoVxeqVxeqVxeqVxeqVxiqWBmqWBmqVxiqVxmqWRmqWRmqWRmrWRmrWRmrWRmrWRqrWhqr + WRqrWhurWxurWxysWxytWxytWxytXB2tXB2tXB6tXR6tXR6tXR6uXR6uXh+vXiCvXyGvXyGvXyKvXyKv + YCOvYSOvYSOwYSSxYSSxYiSxYiSwYiWxYyWyYyaxYyWxZCaxZCayZCazZCeyZCazZSezZSi0ZSevZy6O + WC59SiOASyOCTiSCTSSASyOBSyOBTCKBTCKASyGBSyKCSyGBSyGBSiGBSyGBSyCBSiCBSyCBSyCBSh+B + Sh+BSh+BSh+BSh6BSh6BSR2BSR2BSByBSRyASRyASRyASRyASRyASBqARxd/RxeARxd/RRV/RhZ/RhZ/ + RRV/RRSARRSARRV/RRR/RBN/RRR/RRN/RRKARRKARRKARRKARROARROARROARROARROARRJ/RRJ/RRJ/ + RRJ/RRJ/RRJ8QQ13OwV9Qg6GThy0jmzgz7////////////////////////////////////////////// + ///////////////////////////////////++/j56NXzzqfxxZbwwpHwwZDwwI7wv4zvvYjvvIXuuoLu + uH/utnvttXjts3XssnLssHDsrm7srWvrrGjrq2brqWXrqGPqqGHqpl/qp17ppl3ppVzqpVvqpFrpo1np + o1npoljooljoolboolfpolbpolbpoVbpoVbpoVbpoVbpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXp + oVXpoVXpoVXpoVXpoVXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXqolXqolXqolXqolXqolbq + olbqo1frpFnrp1zsq2Dtr2fus23wuXXxwH3lu38/NSU/NyhLRTfszJXiuH7dtH/Qml/Fh0i+fT64czSz + aiuvYiSsXR+pWBqoVRenVBanVBanVBanVRanVRanVRaoVRaoVRaoVRapVRapVheoVRapVRapVhepVxep + VxeqVxeqVxeqVxeqVxiqWBmqVxiqVxmqWBmqWRmqWRmqWRmrWRmrWRmrWRqrWhqrWhqrWhurWhusWxys + XBysXBytWx2tXB2tXB2tXB6tXB6tXR6uXR+uXh+uXh+vXyCvXyCvXyGvXyKvXyOvYCOvYSSvYSOwYiSw + YiSwYiSxYiSxYiWxYyWyYyeyYyaxZCaxZCeyZSeyZCeyZCizZSy0Zi+zZC24ajKyaziJUCd+SyWCTiiC + TSeCTSeCTCeBTCiBTCiBTCiBTCWBSyKBSyGCTCGCTSKCTSKCTCKCTCKBSiCBSiCBSh+BSiCBSh+BSh6B + Sh6BSh6BSR2BSR2BSRyBSRyASRyASRyASRyASRyASRuASBiARxZ/RxZ/RhZ/Rxd/RhZ/RRV/RRWARRV/ + RRR/RRR/RRR/RRN/RRR/RROARRKARRKARRKARRKARROARROARRN/RRKARRJ/RRJ+QxB7Pwt4OwWLUyO7 + l3fax7by6eH///////////////////////////////////////////////////////////////////// + ///////9+PH44sv117fyy6Dww5LwwZDwwY/wv4zvvonvu4XuuYLut3/tt3zttHjtsnXssnPssHDrrm3r + rWvqrGnqq2bqqWXqqGPqp2Hpp2Dppl7ppV3ppFzppFvpo1rpo1noo1joo1joolfoolfoolfoolfoolbo + olbooVbooVbpoVbpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXp + oVXpoVXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolbpolbpo1fqpFnqp1zr + q2Dsr2Xts23vuXXxwH3ku38+NSU/NyhLRTfszJXiuH7dtH/Qml/Fh0i+fD24czSzaiuuYiSsXR+pWBqo + VRenVBanVBanVBanVBanVRanVRanVRaoVRaoVRapVhepVheoVRapVhepVhepVxepVxepVxeqVxeqVxeq + VxiqVxeqVxiqWBmqWBmqWBmqWRmqWRmqWRmqWRmrWRqrWhqrWhurWhusWhurWhysWxysXBytXB2tXB6t + XB2tXB2uXB+uXB+uXR+uXiCuXiCuXyCvXyCvXyGvYCKvYCKvYCOvYCSvYSSwYiSwYiWxYiWxYiWxYiWx + YiWyYyayZCexYyayZCeyZSqxZSyyZTCzZS+0Zi2zZSm1aCy7cDavYyiLUSSATiSCTiOCTCKCTSOCTSOC + TCSCTSeBTCmATCqBTyaDUSOEUSKDUCGEUCGDTyGCTSCBSiCBSiCBSiCBSh+BSh+BSh6CSh6CSh2BSh2B + SR2BSRyBSRyBSRuASByASRuASRuASRt/SBh/RxZ/RhZ/RhZ/RhZ/RhV+RRV+RRR/RRV/RRR/RRR/RBN/ + RRN/RRN/RhN/RRKARRKARRKARRKARROARBN/RBJ7PQp5OwV+RBGTXjDHqY338Or///////////////// + /////////////////////////////////////////////////////////////v389e333cPyy6HwwpHv + wpDvwY/vwI3vvoruvIfuuoPuuYDttnzttXnss3bssnTrsHHrrm7rrWvqq2nqq2fqqWXpqGPpp2Hppl/p + pV7ppF3ppF3po1vpo1rpolnpolnpoljooVjooVfoolboolboolboolbooVbooVbooVbooVXooVXooVXp + oVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXp + olXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolbpolbpo1fqpFnqp1zrq2Dsr2Xts2zvuXXx + v33ku38+NSU/NyhLRTfszJXiuH7dtH/Qml/Fh0i+fD24cjOzaiuuYiSrXR+oWBqoVRenVBanVBanVBan + VBanVBanVRanVRanVRaoVhepVhepVhepVhepVhepVhepVhepVxepVxepVxeqVxeqWBiqVxeqVxiqWBiq + WBmqWBmqWBmrWRqqWRmrWRqrWRqrWhqrWhurWhurWhurWhusWxysWx2tWx2tXR6tXR+tXB6tXB6uXR+u + XR+uXSCuXiCuXyGuXyGvXyKvXyKvXyKvYCOvYSSvYSSwYiSwYiWwYiWxYiaxYyaxYiexYyayZSmyZCyx + ZC6yZCyyZSyyZSmzZim0aCu0Zim0Zyu5bjS3aSyvYyqPVSd/TCOCTiSCTiSDTiSDTSODTiSDTyODUSSE + USaDUCiDUCiDTySEUCKEUCKDUCGDTiGBSyGBSiCBSiCBSh+BSh+BSx+BSh6BSh6BSR2BSR2BSRyBSRyA + SRyASByASRuASBuASBuARxmARxd/RhZ/RhZ/RhV/RRV/RRV/RRV/RRR/RRR/RRR/RRR/RRN/RRN/RRJ/ + RRKARRKARBF/Qw96PAh7PQiaaT/IrJTi08b8+fb///////////////////////////////////////// + ///////////////////////////////////77+P338Tz0a3xx5rwwY/vwpDvwY7vv4ruvIfuu4TtuYHt + t37stXrstHfssnTrsHHrr27qrWzqrGnqq2fpqmXpqGTpqGHpp2DopV7opV3opFzopFvpo1roo1npolnp + olnooVjooVfooVfooVfooFbooVbooVbooVbooVbooVbooVXooVXooVXooVXooVXooVXpoVXpoVXpoVXp + oVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXp + oVXpoVXpoVXpoVXpoVXpoVXpoVXpoVbpoVbpolfqo1nqplzrqmDsrmXts2zvuHTxvnzkun4+NSU/NyhL + RTfszJXhuH7dtH/Qml/Fh0i+fD24cjOzaSquYSOrXR+oWBqnVRenVBanVBanVBanVBanVBanVBanVBao + VRanVReoVhepVhepVhepVhepVhepVhepVhepVhepVhepVxepWBiqWBiqWBeqWBeqWBiqWBmqWBmrWBqr + WBmrWBqrWRqrWRurWhurWhusWhusWhysWhysWh2sWx2sXB6tXR+tXR+tXR+uXiCuXh+uXiCuXiCuXiGu + XyKuYCKvYCOvYCKvYCOwYSOwYSSwYSSwYiWwYiWwYiawYyexYyexZCmyZC6zZTCyZCqyZSiyZSmzZSiz + Ziq0Zyy1Zyu1Zyu5bjO1aC22aCy0Zy2PVCd/TSWCTiWETyaETyWEUCaFUyWFUiSEUCODTyGCTyWDUCyE + TyiDTiKDTyKEUCKDTiKBSyGBSiCBSiCBSiCASR+BSh6BSh2BSR2BSh2BSRyBSByBSByASByASBuASRuA + SBqASBuASBl/RxZ/RhZ/RhZ/RhV/RRV/RRV+RRV/RRR/RRR/RRR/RBN/RBN/RBJ9Qw93OgR6PQiBRhOb + a0HWv6z9/Pr///////////////////////////////////////////////////////////////////// + /////////fz67Nz12LjwxZfwwZDvwY/vwY7vwIzvvonuu4XtuoLtt37stnvstHjssnXssXLrsHDqrm3q + rGrqq2jpqmbpqWTpqGLpp2Dppl/opV3opVzopFvoo1roo1nooljnolfnoVfooVfooVfooVfooVbooFbo + oVbooFbooFbooFbooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXo + oVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXo + oVXooVXooVXooVbooVbpolfqo1nqplzrqmDsrmXts2zvuHTxvnzkun4+NSU/NyhLRTfszJXhuH7dtH/Q + ml/Fh0i+fD24cjOzaSquYSOrXB6oWBqnVRemVBanVBanVBanVBanVBanVBanVBaoVReoVRenVRaoVhep + VhepVheqVheqVxipVhepVhepVhepVhepVxepVxeqVxeqVxiqWBiqWBmqWBmrWBmrWBqrWBqrWRqrWRur + WhyrWhusWhysWhysWx2sWx6sWx2sWx6tXB+sXR+tXR+uXiCuXSCuXiCuXiCuXiGuXiGuXyKuYCOuYSOv + YSOwYSOwYSSwYSWwYiawYiawYyewYyexYyyxZC6yZSuyZSqzZiqzZiqzZiu0Ziy0Ziy0aCy1aS60aCy5 + bjS4azC1aS24ay+zZi2TVyiBTiaETyaEUCaGVCWGUyaFUiaFUSWEUSSEUSSEUSSDTyaDTymDTyaDUCKE + UCKBTCKBSyGBSiCBSiCBSh+BSh+BSh6BSR2BSh2BSh2BSRyBSByASBuASBuASBqASBuASRt/SBp/SBh/ + Rxd/RhZ/RhZ/RhV/RRV+RRV+RRR/RRR+RRR+QxF8QQ52NwKDRxWxiWXMtJ7s4df//v3///////////// + ///////////////////////////////////////////////////////////+/fv66tr02Lrzzqjvw5Pv + wI/vwY/uv43uvYnuvIbuuYPtuH/ttXzttHnss3bssHPrr3DrrW3rrGvqq2jqqWbqqWTpqGLppmHppV/p + pV7ppF3opFzoo1roo1roo1nooljoolfnoVfnoVbnoVbnoVXnoFbnoVbnoFbnoFXnoFXnoFXnoFXnoFXn + oFXnoVXnoVXnoVXnoVXnoVXnoVXnoVXnoVXnoVXnoVXnoVXooVXooVXooVXooVXooVXooVXooVXooVXo + oVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVbo + oVboolfqo1nqplzrqmDsrmXts2zvuHTxvnzkun4+NSU/NyhLRTfszJXhuH7dtH/Pml/Eh0i+fD24cjOz + aSquYSOrXB6oVxmnVRemVBamVBamVBanVBanVBanVBanVBaoVReoVReoVReoVheoVheoVhepVheqVxiq + VxiqVxipVxipVhipVxepWBipWBipWBiqWBiqWBirWBirWBqrWBurWBurWBurWRqrWRurWhyrWhyrWxys + WxysWx6sWx6sWx6tWx6sXB+tXR+tXR+uXiGuXiKuXiKuXiGuXiKuXiOuYCOvYSOvYSSvYSSwYSSwYiWw + YiawYiawYiiwYy6xZC+xZCiyZSizZSq0Zy20Ziu0Ziy0Zy21Zy21aC63ai+0aC25bzS6bTK3aS+4ay+5 + ai+3aS6WWCqETyiHUiiIVSeIUyeHUyaGUiaFUiWGUiWEUSSDTyKDTySDTyqDTyeEUCKCTiGCTCKBSiGB + SiCBSiCBSh+ASh+ASR6BSR6BSh6ASR2ASBuASByASBuASBuASBqASBp/SBp/SBp/Rxh/RxZ/RhZ/RhV/ + RhV/RRV+RRR6QA53Owd9Qg+KUiK5lHTm18r///////////////////////////////////////////// + ///////////////////////////////////9+fX45tLyzabwxJXvwZDvwI/uwI7uvovtvIftuoTtuIDs + t37stHvss3frsXTrr3Hqrm7qrGzqq2rpqmfpqWbpp2TppmHopmDopV7opF3no1zno1voolroolnnoVjn + oVjnoVfmoVfmoVXmoVbnoVXnoVXmoFXmoFXmoFXnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTo + oFTooFTooFTooFTooFTooFTooFTooFTooFTooVTooVTooVTooVTooVTooVTooVXooVXoolbpo1jpplvq + ql/rrmXts2zuuHPwvnvkun4+NSU/NyhLRTfszJXhuH7dtH/Pml/Eh0i9fD24cjOzaSquYSOrXB6oVxmn + VBamUxWmVBamVBamVBanVBanVBanVBaoVReoVReoVRenVBaoVheoVheoVheoVhepVheqVxipVxiqVxiq + VxmqWBmpWBipWBipWBipWBiqWBmrWBqrWBmrWRqrWRurWRurWByrWhurWxyrWxysWx2sWx2sWx6tWx6s + Wx6sWx6tXB+tXiCuXyGuXiKvXyKuXiKuXyOuYCOvYCOvYCOvYSSvYSSvYSSwYiWwYyWwYyixYy6xZCyx + ZCmyZSqyZiuzZiu0Zy20Zy21Zy21aC62aC63aS+4ajC3ai66cDa6cDW4bDC5bTK4bDG6bTG3azCaWyyI + VCqIVimIVSiIUyiHUyaIUyeHUyeFUiWEUSWEUSODUCSDTyeDUCiEUCKCTCKBSyKBSyGBSyCBSyCBSh+A + SR+ASR6BSh2BSR2ASRyASByASBuASByASBuARxmASBp/SBp/SBp/Rxd/RhZ/RRV+RBN6Pg14OwmOWCq+ + nX/ayLnz7OT///////////////////////////////////////////////////////////////////// + ///////99u/44cv11bTxyJ3vwZLvwI/vwI7uvovuvYjtuoXtuYLst37stXvrs3jrsXXrsHLqrm/qrW3p + rGrpqmjoqWboqGTop2LopmDnpV/npF3npFzno1vno1rnolnnoVjmoljmoVfmoFbmoVbmoFbmoFbmoVXm + oVXmoFXmoFXmoFXmoFTmoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTo + oFTooFTooFTooFTooFTooFTooVTooVTooVTooVTooVTooVXooVXoolbpo1jpplvqql/rrmXts2zuuHPw + vnvkun4+NSU/NyhLRTfszJXhuH7dtH/Pml/Eh0i9fD23cjOzaSquYSOrXB6oVxmnVBamUxWmUxWmVBam + VBamVBamVBanVBanVBanVReoVReoVReoVBeoVReoVheoVheoVhepVhepVxipVheqVxiqVxiqWBmqWRmq + WBipWBiqWBmqWBiqWBmrWRqrWRurWBurWRyrWRurWhyrWx2rWx2sWx6tWx6tXB+tWx6tXSCtXSCtXSCt + XSGtXiGtXyKuXyOvYCOuYCOvYCOvYCOvYCSvYSSvYiWvYiWvYyexYy+xYyuyZCiyZCmyZSqzZiyzZiuz + Zyy2ajC3ai+3aS+3ai+4bDG5bjS5bTO7cTi8czu5cDa6cTe6cDa7bzW8bzS7bjOdYC+JVyuKVyqKVSmJ + VSmJVCmHUyeGUiaFUiWEUSSEUCODUCKDUSiDUCeCTCKCSyGBSyKBSiCBSiCBSiCBSh+ASh+BSR6BSR2B + SR2BSRyBSRyASBuASBqASBqARxqARxmASBp+Rhh6QA95Pgt+RRSVYjfLr5b59O////////////////// + /////////////////////////////////////////////////////////////v389Oz23MLxyJ3vwZLu + wJDuwI7uv43uvIrtu4btuYLsuIDstn3rtHnrsnbqsHPqr3Dqrm7prGvpqmnoqmfoqGTop2PopmHopV/n + pV7npFzno1vno1rnolnnoVjnoVjnoVfmoVfmoVbmoFbmoFXmoFXmn1Xmn1Xmn1XmoFXmoFTmoFTmoFTm + oFTmoFTmoFTmoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoVTnoVTnoVTnoVXnoVXnolboo1joplvpql/qrmXts2zuuHPwvnvkun4+NSU/NyhL + RTfszJXhuH7dtH/Pml/Eh0i9fD23cjOyaSqtYSOrXB6oVxmnVBamUxWmUxWmUxWmVBamVBamVBamVBam + VBanVReoVReoVReoVReoVReoVReoVheoVheoVhepVhepVhepVxipVhepVxiqWBmqWBmqWRmqWRqrWRqr + WBqrWBqrWRqrWRqrWRyrWh2rWh2rWh2rWx2rWx6rWx6sXB+tXCCtXCCtXSCtXSCtXSKtXiKtXyKtXyOu + YCOvYSSwYSSvYCSvYSSvYSWvYiavYievYi2wYymxYyeyZCiyZCqzZSyzZSy0Zy21aS63ajC3azG4bDG5 + bTO5bjW8cTi8czu+dD2/d0C8czu9dj29czu8czq9cjm9czm7cjahZTGMWi6MWS2LWCuJVimIVCiHUyiG + UyaFUSWFUSWEUSSEUSODUCiBTCiCTCKBSyKBSyGBSyGBSyCBSh+BSh+ASh+ASB2BSR2BSR2BSRyASBuA + SBuASBp/Rxl+Rhd5Pg58QhKdb0nKsZvj1cn8+vj///////////////////////////////////////// + ///////////////////////////////////77uH33sTz0KzwxpnvwI/vwJDuv47tvYrtu4bsuoPst3/r + tXzrs3nrsnbpsXTqr3Hprm7prWvoq2noqmbnqGXnqGLnp2Hnpl7npV7opF3no1vno1rnolnnoVjnoVfn + olfmoVbmoFbmoVXmoFXmn1Xmn1TmoFXmn1Tmn1Tmn1Tmn1TmoFPmoFPmoFTmoFTmoFTmoFTmoFTmoFTm + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoVTnoVTnoVXnoVXnolboo1joplvpql/qrmXss2ztuHPwvnvkun4+NSU/NyhLRTfszJXhuH7dtH/P + ml/Eh0i9fD23cjOyaSqtYSOqXB6oVxmnVBamUxWmUxWmUxWmUxWmUxWmUxWmVBamVRenVReoVReoVReo + VReoVReoVReoVReoVReoVheoVxipVxipVhepVxipVxipVxipVxipVxiqWRmrWRqqWhqrWRqrWRurWRqr + WRurWhyrWh2rWh2rWh2rWx6rWx6sXB+sXB+tXR+tXSGtXSGtXSGtXSKtXiKtXyOtXyOuYCOwYSWwYSWv + YSWvYSWvYSavYS2wYyywZCexZSmyZSqzZSq0Zyy0Zy22aC+2aS+3bDG5bjW6bze7cDi8cTm9dDy+dj6/ + d0DBfEa/d0DAekO/eEC+dz+/dj6+dTy+dTu/dzmkZzSLWC+NWS6KWCqKViqKVimIUyiFUiaGUyeFUiWF + UiODTyKBTCiBTCWBSyKBSyKBSyGBSiCBSiCBSiCASR6ASR6ASR6ASB2ASB2ASBx+RRh4PAx7QRKDSx6i + d1Ldy7r+/fz///////////////////////////////////////////////////////////////////// + /////////fv66tr11rXwxZbvwZHvwZDvwI7uvoztvIjtuoXsuILstn7rtHrqsnfqsXTpr3Hprm7prWzo + q2roq2foqWXnqGTnp2Hnpl/npV7mpFzmpFvmo1rmo1nnoljnoVfnoVfmoVbmoVbmoVXmoFTmoFTmn1Tm + n1Tmn1Tmn1Tmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Tm + n1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1TmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoVTnoVXn + oVXnolboo1joplvpql/qrmXss2ztuHPvvnvkun4+NSU/NyhLRTfszJXhuH7dtH/Pml/Eh0i9fD23cjOy + aSqtYSOqXB6nVxmnVBamUxWnVBamUxWnVBamUxWmUxWmVBanVRenVRenVReoVReoVReoVReoVReoVReo + VReoVReoVheoVxipVhepVxipVxipVxipVxiqVxmqVxmqWBqqWRqrWhqrWRurWhysWhysWx2rWh2rWh6s + Wh6sWh6sWh6sXB+sXCCtXSCtXSGtXSGtXSKtXSKtXiKtXyOuYCOuYCOvYSWvYSWwYiawYiavYiuwYi2w + YyixZCmxZSqyZiuzZiy1aC22aC62aS+3bDO4bja6cDm8czy9dD2/d0DAeUHCe0TCfUbFgk3CfUfCf0nB + fEXBe0TBe0TBekPAeEDBej6/eT2najmQXTONWi+MWi6LVyuKViqIVSmGUiaHVCaFUyWDTiOCTSSBTCqB + SyWBSyGBSyKBSyGBSyGBSiCBSh+ASR6ASR5/Rxt9RBh3Ow2HTyK1kXPPuKbv5t7///////////////// + ///////////////////////////////////////////////////////////+/Pn66df12Lnyzqfvw5Pv + wY/vwZDvwI3uvonuu4btuYLst3/rtXzrs3nrsXXqr3LqrnDprW3pq2rpqmjoqGboqGTop2HnpmDnpV7n + pV3npFzmo1rmolrmolnmoVfmoVfmoVbmoVbmoFXloVXmoFXmn1Tmn1Tmn1Tmn1Tmn1Tmn1Pmn1Pmn1Pm + n1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Tmn1Tmn1Tmn1Tm + n1Tmn1Tmn1Tmn1Tmn1TmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFXnoVXnolboo1joplvp + ql/qrmXss2ztuHPvvnvjun4+NSU/NyhKRTfszJXhuH7dtH/Pml/Eh0i9fD23cjOyaSqtYSOqXB6nVxmm + VBalUxWmUxWmUxWnVBanUxWnVBanVBanVBamVBanVRenVRenVReoVReoVReoVReoVReoVReoVReoVheo + VxioVxipVxiqVxipVxmpVxmqVxmqWBqqWBqqWRqqWRuqWRqrWhutWx6sXB+sWx+sWx+sWh6sWh6sWx+s + XCCsXSCsXSCtXSGtXiKtXiKtXiKtXiOuXyOuYCSuYSSuYSWvYiawYiiwYy6wYyixYyixZCqyZSqyZiyz + Zy21aC62aC64bDK5bja7cTq8czy+d0C/eUPAe0TCfUbDgErFgUvHh1PFg0/FhFDEgUzEgEvDgErDf0jC + fEbCfEPDfUHEfD+pbDmNWzKPWzCNWi6LWCyIVCiIVSeHVSaFUSWDTiSDTSOCTCWBTCqASyKBSyGBSyGB + SyGBSiCBSh99RRl5PxJ/RxqLVy27mn/p29D///////////////////////////////////////////// + ///////////////////////////////////9+PT45M/yzKTwxJXvwZDvwY/uwI7uvovuvIjtuoTtuIDs + tn3rtHrqsnfqsHPpr3HorW7oq2voqmnoqWbnqGXnpmLnpWDnpV/mpF3mo1zmolvlolrloVjmoVjmoVfl + oFfloFbloFXkn1Tkn1Xkn1TlnlTlnlTlnlTlnlTlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPl + nlPlnlPlnlPlnlPln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tm + n1Tmn1Tmn1TmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTm + oFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFXmoFXmoVbnoljnpVvoqV/qrWXrsmztt3Pv + vXviuX4+NSU/NyhKRTfszJXhuH7dtH/Pml/Ehki9fD23cjOyaSqtYSOqXB6nVxmmVBalUxWlUxWlUxWm + UxWmUxWmUxWnVBanVBanVBanVRenVRenVReoVhioVhioVReoVReoVhioVReoVhioVhioVxioVxipVxip + VxmqWBmqWBqqWBqqWBqqWBqqWRqqWRuqWRurWRurWh2sWx2sWx6sXCCtXCGtXCCsXCCsXCCsXSGtXSKt + XSKtXiOtXiOtXiOuXyOuXySuYCWuYSWuYiavYi6xYiuxYymxZCqyZCqyZSu0Zy61aS61aS+3bDO5cDe7 + cjm9dD2/d0DBekTCfknCgEvDgU3FhFHHh1PJjFjJi1jIjFjHiFTHh1PGhlLFhVDEg03DgEnDf0fDfkPB + fECtbzuUYTWRXTKNWi6LWSqLVymHUyeFUCaETiWDTSSCTSOCTSeASyaBTCKASiGASR98RBl7QRWRXzfA + oondzL717un///////////////////////////////////////////////////////////////////// + ///////89e334Mn01bTxyZ3vwpHuwZDuwI/uv4vuvIjtu4XsuYLrt37rtXvqs3jqsXTqr3Hprm/orGzo + q2nnqWfnqGXmp2PmpmHmpV/mpV7lpFzlo1vlolrlolnloVjloFfloVfkoFbkn1Xkn1Xkn1Xkn1TknlTk + nlTknlTlnlTlnlTlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPl + nlPln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tm + oFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTloFTloFTloFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTm + oFTmoFTmoFTmoFTmoFTmoFTmoFTmoFXmoFXmoVbnoljnpVvoqV/qrWXrsmztt3PvvXviuX4+NSU/NyhK + RTfszJXhuH7dtH/Pml/Ehki9ez23cjOyaSqtYSOqXB6nVxmmVBalUxWlUxWlUxWlUxWmUxWmUxWnVBan + VBanUxWnVBanVRenVRenVhioVhioVRepVhipVhipVhioVhioVhioVxioVxioVxioVxmqWBmqVxmqWBqq + WBqqWBqqWBuqWBqqWRuqWhyqWhyrWh2rWh2sWh6tWx+tXCGtXSKtXSKtXSGtXSKtXSKtXiKtXyOtXyOu + XySuXySuYCWuYCWvYiquYi2vYyiwYyiyZSqzZSyzZi21Zy61aC+3bDK4bjS6cjq9dT2/eEDAekTDfknE + gk7FhVLGh1XHilfJjVrLkV/Lkl/LkmDKjlvKjVrJjFnIilfHiFTFhVDEgk3CfkfDfUTFfkGucTyQXjSO + XDCMWSyJVSqIUiiFUCeETyaDTiWDTSOCTSSASyh8RBp7QxeBTCKYaUPNtKD69/T///////////////// + /////////////////////////////////////////////////////////////fz88+n12r7wx53uwZHu + wJDtwI/uv43tvYnsu4bsuYPrt4DrtXzqtHnqsnbpsHPprnDprW3oq2voqmjoqGbnp2TmpmLmpWDmpF7l + o13lolzlolvloVnloFjloFfloFbln1bln1bkoFXkn1Xkn1Tkn1TknlTknlTknlTknlTknlPknlPknlPl + nlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPln1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tln1Tln1Tln1Tln1Tln1Tln1Tln1Tln1TloFTloFTloFTl + oFTloFTloFTloFTloFTloFTloFTloFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTm + oFTmoFTmoFTmoFXmoFXmoVbnoljnpVvoqV/qrWXrsmztt3PvvXviuX4+NSU/NyhKRTfqy5ThuH7dtH/P + ml/Ehki9ez23cTOyaSqtYSOqXB6nVxmmVBalUxWlUxWlUxWlUxWlUxWmUxWnUxWnVBanVBanVBanVBan + VBanVRenVRenVReoVRepVhipVhioVhioVxmoVhipVxmpWBmpWBmpWBqpWBmqWBqqWBqqWBqqWBqqWBuq + WRuqWRyqWh2qWh2rWh2sWh6sWx6sWx+sXCCtXSGtXSKuXySuYCStXyStXyOtXyOuXySuXyWuYCWuYCau + YSyvYiiwZCiwZCmxZCqzZi21Zy63ajC2ajG4bTW6cDm9dT6+eEHAfEbDgErFhFDGh1TIjFrKjlzKkF/M + k2LOmGfPmmrOmmrNlmTNlWTMk2LKkF7KjlvIi1jGh1PFg0/EgErDfkfBe0GtbTuTXTWMWDCKVS2KUyqH + UiiFUCeCTiSCTCJ9RRmASiOfdVjKs6Dl2M79+/n///////////////////////////////////////// + ///////////////////////////////////67N323cPyz6vvxpnuwJDuwJDuwI7tvovsu4fsuoTst4Dr + tX7qs3rqsnfpsHPprnHorW/oq2znqmrnqWfmp2XnpmLnpWHnpF/mo13lolzloVvloVrloFnln1jln1fl + n1fln1blnlXknlXknlXknlTknlTknlTknlTknlTknlTknlPknlPknlPknlPknlPknlPlnlPlnlPlnlPl + nlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pln1Pln1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Tm + n1TmoFXnoVfnpFroqF7qrWTrsmvtt3PvvXviuX0+NSU/NyhKRTfnyZPft37dtH/Pml/Dhki9ez23cTOy + aCqtYCOqXB6nVxmmVBalUxWlUxWlUxWlUxWlUxWlUxWlUxWnUxWnVBanVBanVBanVBanVBanVRenVRen + VRenVhioVhioVhioVhioVhioVhipVhipVxmpWRqpWRqqWRurWRurWRuqWBuqWRuqWRuqWRyqWRyqWh2r + Wx2sWx6sWx6sXB+sXCCsXCGsXCGtXSOuXSOtYCWuYSauYSauYCWuYCauYCWuYCevYS6wYiiwYyqwZCmw + ZSuyZy21Zy62ajG4bDO6bzi7cjy+d0HAfEbDgUvFhFDHiVbIjFrLkWDMlWTNl2fOmmrQnW/SoXTQoXTP + nW7QnG3PmmrNlmbNlGPLkF7IjFnIiVXGhVHDgUrCfUXEekGubDuNWTKLVi6KUyuFTiZ+RhqBSh+GUiil + e1rh0cP//v7///////////////////////////////////////////////////////////////////// + ///////+/fv56tn01rbvw5buwJHuwJDuwI/tvo3tvInsuobsuILrtn/qtXzqsnjqsXXpr3PprnDorG3o + qmroqWjnqGbnp2TnpmLmpWDlpF7lo13molzloVrloVnloFjln1fln1bkn1bkn1bkn1XknlXknlTknVTk + nVTknVTknVTknlTknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPk + nlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pk + n1Pkn1Pkn1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Tmn1TmoFXnoVfnpFro + qF7qrGTrsmvtt3PvvXviuX0+NSQ/NyhKRTfnyZPatX3Zsn7Pml/Dhki9ez23cTOyaCqtYCOqWx6nVxmm + VBalUxWlUxWlUxWlUxWlUxWlUxWlUxWmVBamVBanVBanVBanVBanVBanVBanVRenVRenVhioVhioVhio + VhioVhipVhipVhipVxmpVxmpWBmpWBuqWRurWRuqWRyrWRyrWh2rWh2rWh6rWx6rWx6rWx6rWx6sXB+s + XCCsXCGtXCGtXCKtXSOtXSOtXySuYSWuYSauYiivYimvYi6vYSyvYSewYimwYyqyZSuzZy20aS+3azO6 + bze8czy9d0C/eUTCf0rFhVDHiVbJj1zLkmHNl2bPnG3Qn3LSo3fUpnrVqoDVq4LTpnvTpnrSonXRn3HP + nG3NlWbMkmHKjlvHiVbFhFDDgErCfETBeECtazePVy2CSR+QWjK7mX7UwLDw6OH///////////////// + ///////////////////////////////////////////////////////////++/j56Nf02Lrxzqnuw5Xu + wZPuwZLtv43tvIntuobsuIPrtoDrtHzqsnnpsHbpr3PprXDorG7oq2rnqmjnqWbnp2TmpmHmpWDmpF7l + pF3lolvlolnloVnloFjkoFfkoFbkn1bkn1Xjn1Tjn1TjnlTjnVTjnVPjnVPjnVPjnVPjnVPjnVPjnVLj + nlLjnlPjnlPjnlPjnlPjnlPjnlPjnlPjnlPjnlPjnlPknlPknlPknlPknlPknlPknlPknlPknlPknlPk + nlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tln1TloFXmoVfnpFrnqF7prGTqsWvstnPu + vXviuX0+NSQ/NyhKRTfnyJPatX3Vr37Kl17Ehki9ez23cTOxaCqtYCOqWx6nVhmmUxalUxWlUxWlUxWl + UxWlUxWlUxWlUxWlVBamVBanVBanVBanVBanVBanVBanVBanVRenVRenVhinVhioVhioVhioVhioVhip + VxmpVhmpVxqpVxmpWBqpWBqqWBqqWBuqWRyrWh2rWx6sWh+sXB+sXCCsXR+rXB+sXCCtXSGtXSGtXSKt + XiOtXSOtXiOtXiStXyWtYCWuYimwYzGxZCyxZCuxYyqxZCuyZSy0Zy61ajC3bDS5cDm9dD2/eUPCfkrD + gk7HiFbJjlvLk2HOmGjPnW7So3bUqH3WrILYsYnZtI3YtY/XsYnXsIfVq4LUp3zSonXQm23Ol2fLkmDJ + jFrHh1TEgk7Ae0K9czjBdju4ekvFpo/t4tj///////////////////////////////////////////// + //////////////////////////////////79+fT3483wy6XuxZjtwpTtwpPtwJHtvo7svIrruobqt4Hq + tX7qs3vpsnjpr3TornHorG7nq2vnqWnnqGfmp2TmpmLmpmHlpV/lpF3ko1zkolrkoVnjoFjkoFfkoFfj + n1bjn1Xjn1TjnlPjnlPjnlPjnVPjnVPjnVPjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnlLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLk + nlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLlnlPlnlPlnlPl + nlPlnlPlnlPlnlPlnlPlnlPlnlPln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pkn1Pkn1Pln1Pln1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tln1TloFXmoVfnpFrnqF7prGTqsWrst3PuvXviuX0+NSU/NyhK + RTfnyJPatX3Vr37FlV28g0e8ej23cTOxaCqtYCOqWx6nVhmmUxalUhWlUxWlUxWlUxWlUxWmVBamVBam + VBamVBamVBanVBanVBanVBanVBanVBanVRenVBanVRenVhinVhioVhioVhipVxmpVxmpVhmpVxqpVxqp + WBupWBqpWBupWRuqWRyqWhyqWhyrWh6rWx6sWx+sXCCsXSGsXSGsXSKtXiKtXySuXyStXyStXiStXiWt + XyWtXyWuYSmuYSywYymwYyqyZCyzZi61aC+1aDC2ajK4bje7czy9dkDAe0bDgU3FhlPJjVrLkmHNmGjQ + nnDTpnrVrILZs4zat5LcvZnewJ3ewZ/cvZrbu5fZt5HXsYrVq4HTpXjQnm/NlmbLkF7Gh1LDgUvMkmPh + vqHv28z89e////////////////////////////////////////////////////////////////////// + ///////89e324crz1LXvyaHtwpXtwZTswZLsv4/rvYvsu4fruYTqt4HqtX7ps3npsHXornLorW/nq23n + qmrmqWjmp2XmpmTlpWLlpF/lo17ko1zko1vkolrkolnkoVjkoFfkoFfjoFbin1XinlTinlPinlPjnVPj + nVPjnVPjnVPjnVPjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnlLjnlLjnlLjnlLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLk + nlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLjnlLjnlPjnlPknlPknlPknlPknlPk + nlPknlPknlPknlPkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pln1Pln1Pln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pln1Tln1TloFXmoVfnpFrnqF7prGTqsWrst3PuvXviuXw+NCU/NyhKRTfnyJPatX3Vr37F + lV22f0a0djy3cjOyaCqtYCOpWx6mVhmmUxalUhWlUhWlUxWlUxWlUxWmUxWmVBamVBamVBamVBamVBan + VBanVBanVBanVBanVBanVBanVBanVhinVhinVhioVhipVxmpVxmpVhmpVxmpVxqpVxqpWBqpWBupWRyq + WhyqWRyrWRyrWh2rWh6rWx6rWh6rWyCrXCCrXCCsXCGtXiKuXySuXySuYCWuYCauXyavYCauYCuuYSqv + YSivYymwYyqyZS20Zy62ajK3bje6cDu8dD6+eUPAfUjEg1DHiVfKkV/MlmbPnW7TpHjWrYTYtI7bvJne + wqHgxqbiyaviy63hyKnfxaXewJ/auZXYtI3VqoDRoHHOmGbNlWTVpHrq0r79+/n///////////////// + /////////////////////////////////////////////////////////////fz78+n02b3vyaDtwpbt + wZXswZPswJHrvY3ru4nquYbqt4Lptn/ptXzpsnjpsHXor3LorW7nqmrnqWnmqGXmpmTlpWPlpGHlo1/l + o17lolzkoVvkoFnkoFjkoFfkoVbkoFbjoFbjn1Xjn1TjnlPinlPjnlPinVPinVPjnVPjnVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLj + nVLjnVLjnVLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLknlPknlPknlPknlPknlPknlPknlPknlPk + nlPkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tl + n1TloFXmoVfnpFrnqF7prGTqsWrst3PuvXviuXw+NCU/NihKRTfnyJPatX3Vr37FlV24f0avczusbDKv + ZiqtYCOpWx6mVhmlUxalUhWlUhWlUhWlUhWlUxWlUxWmVBamVBamVBamVBamVBamVBanVBanVBanVBan + VBanVRenVRenVRenVRenVhinVhinVhioVxipVxmpVhmpVxqpVxqpVxqpWBupWBypWRupWhypWh2qWh2r + Wh6rWx+rWx+rWx+rWyCrXCCsXCGsXCGsXiOtXiOtXiOuXySuYCWuYCauYCyvYSmwYyqxZCuxZS2yZi20 + Zi61aC+4bTa6cjy9dkHAfEjDgU3Fh1TIjFrLkmLOmmvRonbVq4LZtY/cvZvgxqbjzK7l0rbn1rvn173m + 1Lnl0bTiy63fw6LauZTXsYrfvZ3t2cb16d///v3///////////////////////////////////////// + ///////////////////////////////////67N323sTx0K7ux53twZTtwpXtwZPrv4/rvIvruofpuITq + toHps3zosnnosHfnr3PornHnrG7nq2vmqWjmp2XlpmPlpWDlpF/lo17kol3koVvkoVrkoFnkn1jkn1fj + n1fjnlbjn1Xjn1Tjn1TjnlTjnlTjnlTjnlPjnVPinVPinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLknlPknlPknlPknlPknlPknlPknlPknlPknlPkn1Pkn1Pk + n1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tln1TloFXmoVfnpFrn + p17prGTqsWrstnLuvXviuXw+NCU/NihKRTfnyJPatX3Vr37FlV24f0avczunaTGlYiisXyOqWx6mVhml + UxakUhWkUhWlUhWlUhWlUhWlUhWlUxWmVBamVBamVBamVBamVBamVBamVBanVBanVBanVRenVRenVRen + VRenVRenVhinVhinVhmoVxqpVhqpVxqpVxupVxqpVxupWBupWRupWh2pWh2qWx6rWx+rWx+rWx+rXCCr + XCCsXCGsXSKsXSKsXiOtXiOtXiOtXiOtXyStXyWuYCyuYSivYSiwYyqxZCyzZy61aTC2ajO4bji6cjy9 + dkHAfEjDgU7GiVjJkWDMl2fQnXDUpnzXsYrbu5nfxKTjzrHn1bvp3MTr38ns4Mvq3sfn2L7l07jjzK7o + 1L348Ob///////////////////////////////////////////////////////////////////////// + /////////Pn66tr117nvxpzuw5fswpXswZTswJHrvo3rvIrquYbpt4PotX/os3vosXjnr3XnrnPmrG/m + q2zlqmrlqWjlp2Xlp2TkpWDko17kolzkolvjoVrjoVnjoFjjoFjjn1fjn1bin1Xin1XinlXinlTinVTi + nVTinVTinVPhnFPinFLinVLhnFLhnFLhnFLhnFLhnFLinFLinFLinFLinFLinFLinFLinFLinFLinFLi + nFLinFLinFLinFLinFLinFLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLknlPknlPknlPknlPknlPknlPknlPknlPknlPkn1Pkn1Pkn1Pkn1Pk + n1Pkn1Pkn1Pkn1Pkn1Pjn1Pjn1Pkn1Pkn1Pkn1Pkn1Pkn1Tkn1TkoFXloVfmpFrnp17orGTqsWrrtnLt + vXvhuXw+NCU/NihKRTfnyJPatX3Vr37FlV24f0avczuoaTGiXyifWSKlWR6nVhmlUxakUhWkUhWkUhWl + UhWlUhWlUhWmUhWmUxamVBamVBamVBamVBamVBamVBamVBanVBanVRenVRenVRenVRenVRenVReoVhin + VhmoVxqpVxmpVxqpVxupVxqpVxupWBypWBypWR2pWh2qWh6qWx6rWx6rWyCrXCCsXCCsXCGsXCGsXSOs + XiOsXiOtXiOtXyStXyWuYCauYCyuYSiuYSiwYSqwYyuzZi60aC+2azK4bji8cj2+eEPCfkrEg1HHilrK + kmLOmmvRonXVrYXZtpLdwaHiy63n1rzq3sfu5dTv6dnv6drx6tr07+P38ur8+vb///////////////// + ///////////////////////////////////////////////////////////++/f56dn02r7xz6ztxJjs + wpbswpbrwJPqvo/qvIvquojpuYTot4DotH3nsnrnsHfmrnTmrnHlrG7lq2zlqWnkp2fjpmTkpWTjpWHj + pF/jo17joVvjoFnjn1njn1fjn1fin1finlbinlXinlXinVTinVTinVTinVTinFTinFPinVPinVPhnFLh + nFLinFLinFLhnFLhnFLhnFLhnFLhnFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLi + nFLinFLinFLinFLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLjnVLjnVLjnVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnlLjnlLjnlLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLj + nlLjnlLjnlLjnlLknlLknlLknlLknlPknlPkn1TloFbmo1nnpl3oq2PqsGnrtnHtvXrhuHw+NCQ/NidK + RTfnyJPatX3Vr37FlV23f0avczuoaTGiXyibVyGaUxylVRmmUxakUhWkUhWkUhWkUhWlUhWmUhWmUhWl + UxalVBWmUxWmVBamVBamVBamVBamVBamVRemVBanVRenVRenVRenVReoVReoVRioVhioVhmoVxmoVxqp + VxqpVxupVxupVxupWBypWRypWR2qWR2qWh6qWh+rWx+rWyCsWyCsXCKsXCGsXSKsXSOsXiOsXyOsXySt + XyWuYCauYCyuYSivYSiwYSqxYyyyZC20aC+2azS4bzi7cj2+eEPBfUrEhFHHi1rLkmPPm23SpHjWr4jb + upfgxqfl0LTo28Ps4s/x69318uf5+PL+/fv///////////////////////////////////////////// + //////////////////////////////////799/L24s3vzantxp/rw5jrw5frwZXqv5HpvY7pvIrpuYbp + t4PotYDntHznsXnmr3bmr3PlrXDlrG7kq2vkqGjkqGfjpmXjpWLjpGHjo2Diol7iolzjoVvjoFnjn1fj + nlfjnlbinVXinVTinVPinVTinFTinFTinFTinFTinFPinFPinFPinFPhnFLinFLhnFLhnFLinFPhnFLh + nFLhnFLhnFLhnFLhnFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLi + nFLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLinlLinlLinlLinlLinlLi + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLj + nlLjnlLknlLknlPknlPkn1TloFbmo1nnpl3oq2PqsGnrtnHtvXrhuHw+NCQ/NidKRTfnyJPatX3Vr37F + lV23f0avczuoaTGiXyicVyGYURyWTReeTxalUhWkUhWkUhWkUhWkUhWlUhWmUhWmUxamUxamUxamVBam + VBamVBamVBamVBamVRemVBanVRenVRenVRenVReoVRenVReoVhioVhioVhmoVxqoVxqpVxupWBupWByp + WRypWRypWR2pWR2pWh6qWx6qWx+rWyCrXCCsXCGsXCKsXCKsXSOsXiOsXSOsXySsXyWtYCeuYCyuYSav + YiiwYiqwYyuyZS20Zy+1ajS5bzi7cz2+eEPBfUvEg1HHi1rKkmLNm23So3nWsInbvJjfxqbk0bXu5NH4 + 9Oz8+/j//v7///////////////////////////////////////////////////////////////////// + ///////+9u/55M/22bzyzanwx53vxpzuxJztwpXswJHrvY7pu4rouYXotoLntH3nsnvmsHfmrnXmrHLl + q2/lqmzlqGrkqGjjpmbkpWPjpWLio2HiomDiol3ioVzioFvioFrioFnin1njnlbinVXinVXinVTinFTi + nVTinFPinFPinFPinFPinFLinFLinFPinFPinFLinFLinFLinFLhnFLhnFHhnFLhnFLhnFLhnFLhnFLh + nFLhnFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinVLinVLi + nVLinVLinVLinVLinVLinVLinVLinVLhnVLhnVLhnVLinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLinlLinlLinlLinlLinlLinlLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLknlLknlPk + nlPkn1TloFbmo1nnpl3oq2PqsGnrtnHtvXrhuHw+NCQ/NidKRTfnyJPatX3Vr37FlV23f0avczunaTGi + XyicVyGYURyUTBeTSRSfTxSlUhWkUhWkUhWkUhWlUxalUxalUxamUhWmUxamVBamVBamVBamVBamVBam + VRemVRemVBamVRenVRenVRenVReoVRioVhioVRioVhioVxmoVxuoVxupVxupWBypWRypWR2qWR2qWR6p + Wh6qWh+qWx+qWyCqXCCrXCCsXCKsXCKsXSOsXSOsXSOsXiSsXySsXyauYCyvYSevYievYimxYyuyZS20 + Zy+1aTO4bji6cz2+eEPAfUvEg1HHjFrKkmLOm23Ro3nWsIjavJno1r317uP//v3///////////////// + /////////////////////////////////////////////////////////////fz89Ov23cLyz6vwyKDv + x57uxZzuxJntwZXsv5TrvI3quonpuIXotoHotH7nsnvlr3flrXTlrHHlqm/kqWzkp2rkpmfkpWXjpGPj + pGLjomDiol/ioV3ioFzin1vin1rin1nin1nhn1jhnVfinlbinVTinFTinFTinFPinFTinFPinFLinFLi + nFLinFLinFLinFLinFLhnFLinFLhnFLhnFHhnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHgnFHgnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHh + nVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHi + nVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHjnVLjnVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlPknlPkn1TloFbmo1nn + pl3oq2PqsGnrtnHtvXrhuHw+NCQ/NidKRTfnx4/atHzVr37FlV23f0WvczunaTGhXyibVyGYURyVTBeT + SRSSSBObTRSlUxWkUhWkUhWkUhWkUhWlUhWlUxamUxamUxamVBamVBamVBamVBamVRemVRemVRemVRem + VRenVRenVReoVRioVRioVhioVhmoVhmoVxqoVxqoVxuoWBupWBypWByqWR2qWR6qWh6qWh+qWh+qWyCq + XCCrXCCsXCKsXCKsXCKsXSOsXiOsXiOtXiStXyatYCyuYCavYSiwYimxYyuyZC20Zi+1aTO4bTi7cz6+ + eEPBfkvEhFHHi1rKkmLOm23Ro3jWrobcvJr17OH///////////////////////////////////////// + /////////////////////////////////v367+L3487z1rfxzqnvxp/uxpztw5nswZXrvpDrvY3quojp + uIfotoHotH7msnrnsHjmrnTlrHLlq2/kqm3kqWvjp2jjpmfjpWXjpGLio2Hio1/iol7hoV3hoFvioFvi + oFrhnlnhn1jgnljgnlfhnVfhnVfgnVfgnFXhnFPhnFPhnFLhnFLhnFLhnFHhnFLhnFLhnFLhnFLhnFLh + nFLhnFLhm1Hgm1HhnFLgnFLgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHhnVHhnVHhnVHh + nVHhnVHhnVHhnVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHi + nVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHjnVLjnVLjnVLjnVLjnVLjnVLjnVLj + nVLjnVLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlPinlPin1TkoFblo1nmpl3nq2PpsGnrtnHt + vXrhuHw+NCQ+NidKRTfv2rbYsXjUrn3FlV23f0WvczqnaTGhXyibVyGXURyVTBeTSRSSSBOSSBOaTRSk + URWlUxakUhWlUxalUhWlUxamUxamUxamUxamUxamVBamVBamVBamVRemVRemVRemVRemVRenVRenVReo + VRioVReoVhioVhmoVhmoVhmoVxuoWByoWBypWR2pWR2qWR2qWh+qWh+qWh+qWh+qXCCrXCGrXCGsXSKs + XCKsXSOsXiSsXiStXiStXyatYCutYCeuYSevYimxYyuyZCyzZi61ajK3bDa7cj29d0LAfUnDg1DGilnJ + kWHNmWvRoXbVrIXYtpLew6P27uP///////////////////////////////////////////////////// + /////////fv78OT34crz07Hwzqrvy6bvyaHuxJvtwZXrv5DpvIzpuYjpt4TntYLmtIHnsnrmsHflrnPl + rXHkqm7jqWzjqGnjp2jipmbhpWTipGLio2Hho1/hol7hoFzhoVvhoFrhn1ngn1ngn1jgnlfgnlfgnVfg + nVfgnFfgnFbgnFXgnFXgm1LhnFLhnFLhnFLhnFHhnFHhnFHhnFHhnFHhnFHhnFLhnFLhnFLhm1Hgm1Hh + nFLhnFLgm1HgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHi + nFHinFHinVHinVHinVHinVHinVHinVHhnVHhnVHhnVHinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nlLinlLinlLinlLinlLinlLinlLinlPinlPin1TjoFblo1nmpl3nq2PpsGnrtnHtvXrhuHw+NCQ+NidK + RTf////v38fUrHrEklm3f0WvczqnaTChXyibVyGXURyUTBeTSRSSSBOSSBORSBOWSxSjURWlUxalUxal + UxalUxalUxamUxamUxamUxamUxamUxamVBemVRemVRemVRemVRemVRemVRemVRinVhioVRioVhmoVhmo + VhqoVhqoVxuoVxuoWByoWR2oWR2qWR2qWR6qWR6qWh+qWiCqWiCrXCKrXCKrXSKsXSOsXSOsXiOsXiSs + XiStXyatXyutYCiuYSeuYimwYyqyZCyzZS22ajK3bDe6cTu8dUHAe0jCgE/FiFfIj17Ll2jPnnLTqH/X + so3bvJrhyav27uP////////////////////////////////////////////+/fv78+n569r348z02rvz + 1bXy0a7wzqnuyaLtxZztwJTrvY/quonnt4TntIDmsXzlsHvlr3rlrXPkrHDkqm7jqWviqGnip2jipmbh + pGPhpGHho2Dgo1/hol7hoVzhoVzhoFrhn1nhn1jhn1jgnVjgnVfgnlfgnVfgnVfgnVbgnFbgnFXgnFXg + nFXgnFThm1LhnFLhnFLhnFLhnFLhnFHhnFHhnFHhnFHhnFHhnFLhnFLhnFLhnFLgm1Hgm1Hgm1Hgm1Hg + nFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHgnFHgnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHh + nVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHinVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLi + nlLinlLinlLinlPinlPin1TjoFbko1nmpl3nq2PpsGnrtnHtvXrhuHw+NCQ+NidKRTf////////r2cLE + k1u1fECvczqnaTChXyibVyCXURyUTBeSSRSRSBOSSBOSSBORSBOVShSiURWmUxalUxalUhWlUxalUxal + UxamUxamUxamUxamUxemVBamVRemVRemVRemVRemVRemVRimVRinVhioVhmoVhmoVhmoVhmoVhmoVxuo + WByoWR2oWR2oWR2pWR2qWR6qWh+qWx+qWyCqWiCrXCGrXSKrXSOrXSOsXSOsXiOtXiStXyWtXyqtXyau + YSevYiiuYyqwZCuzZS21aDC3azW5cDu8dD+/ekbBfk3FhlXIjVzKlGTNm27RpHnVrIbZuJTcv53hyar1 + 7OD////////////////////////////////+/Pn89Or46tf35M324Mf13cL02bvz1LPxz6rwyqPtxZvs + wZTrvI7quojot4Tns4DmsXrlr3flrXbkq3Tkqm3jqWviqGnip2fipmbipWTho2Lho2Dhol7hol7goV3g + oVzgoFvgoFvgn1ngn1jgnljgnljgnVfgnVfgnVfgnVfgnVbgnVbgnVbgnVXgnFXgnFXgnFXgnFPgm1Lh + nFLhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFLhnFLhm1LhnFLgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hg + m1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hg + m1Hgm1Hgm1Hgm1Hgm1HgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHh + nVHhnVHhnVHhnVHhnVHinVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLinlLinlLinlPi + nlPin1TjoFbko1nlpl3mq2PpsGnrtnHtvXrhuHw+NCQ+NidKRTf////////////t3s65gkqsbjOnaTCh + XyibVyCXURuUTBeSSRSRSBORSBOSSBOSSBORSBOVSRSgUBWmUxalUhWlUxalUxalUxalUxamUxamUxam + VBemVBemVBemVRemVRemVRemVRemVRinVhmnVhmnVhioVhmoVhmoVhmoVhqoVxqoVxuoWByoWByoWR2p + Wh6qWR6qWh+qWx+qWyCqWiCrWyGrXCKrXCOrXSOrXSOsXiOsXiStXiStXyquYCiuYCeuYSivYimwZCuy + Zi20aC+3azS5bji8cz6+eETAfUnDglHGiVjJkGDMlmjPn3LSpnzWr4nat5Tcvp3gyKny59r///////// + /////////////////v789Or46NT35tH25Mz138X0277z1rXy0a7xzKbux5/tw5fsv5DquYjotoHnsnzm + sHnlrXPkrHLkqnPjqW/jqGrjpmnjpmbipmXipGPhpGHhol/hol7hoV3goV3goVvgoFrfn1nfn1ngn1ng + n1jgnljgnljgnlfgnlfgnVfgnVfgnVbgnVbgnVbgnVbgnVbgnVXgnFXgnFTgm1Lfm1Lgm1Lgm1Hgm1Hg + m1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1HfmlLgm1Lgm1LfmlHfmlHfmlHfmlHfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hf + m1Hfm1Hfm1Hfm1Hfm1Hfm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hg + m1Hgm1HgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHhnVHhnVHhnVHh + nVHhnVHinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLinlPinlPin1TjoFbko1nl + pl3mq2PosGnqtnHsvXrguHw+NCQ+NidKRTf////////////////r28q0e0akYSihXiibVyCXURuUTBaS + SRORSBORSBORSBOSSBOSSBOSSBOTSROgUBamUxalUxalUxalUxalUxalUxalUxamUxamUxamUxamVRem + VRemVRemVRemVRenVhenVhmnVhinVhmoVhmoVhqoVhqoVxuoVxuoWBuoWBypWR2pWR6pWh6qWiCqWh+q + WiCrWyGrWyGrWyKrXCKrXCOrXSOrXSOrXiSsXiOtXymtXyquYCauYSivYiqwYyuyZSyzZy61aTK4bTe6 + cTy9dkG/ekfCf07FhlXHjVzKkmLMmWvQoXXTqH/Wr4jZt5PaupjbvZvx5NX///////////////////// + ///////78eT24sn24cj13cLz2brx0rDwzqrvyaHtxJnsv5LqvIzpuIXntX/lsHjkrnXjq2/iqW3ip2/i + pmnipWXhpGXho2PhpGLho2HhomDhol/hoV3goFzfoFvfn1rfn1nfnlnenlnenVjfnVffnVffnlffnVff + nFffnVbfnVbfnVbfnFbfnFbfnFbfm1bfm1XfnFXfnFTfm1Lfm1HfmlHfmlLgm1Hgm1Hgm1Hgm1Hgm1Hg + m1Hgm1HfmlDgm1DfmlHgmlHgmlHfmlHfmlHfmlHfmlHfmlHfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hf + m1Hfm1Hfm1Hfm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hg + nFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHh + nVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVLhnVLhnlPin1XjoljkpVzlqmLnr2jptXDr + vHnguHs+NCQ+NidKRTf////////////////////w5tuzfEucVhybViCXURuUTBaSSRORSBKRSBORSBOR + SBORSBOSSBOSSBOTSROeThWmUxalUxalUxalUxalUxalUxalUxamUxamUxamUxemVBemVRenVRimVRin + VRenVhinVhmnVhmnVhmoVhqoVhqoVhqoVxuoVxuoWByoWBypWBypWR2pWh+qWh+qWiCqWiCrWyGrWyGr + XCKrXCOrXCOrXSOrXiSrXiWtXyetXy2tYCauYCiwYiqwYiqxYyyyZi60aTG2bDW4bjm8dD6+eEPAfUrD + glHGiFfIjl7Lk2XNmWzPoHPSpnzUq4TWsIrXs43ZuJPs2sb//v7//////////////////////v367uD1 + 3cP02b3z1rfx0a7vzKftx5/rwpfqvI3puIfotIDlsXvkrnbkrHLjqm/iqG3hpWzgpGXgo2PgomLgoWDg + oV/goF7gn17goFzgoFzfn1vfn1vfn1vfn1vfnlnfnlnenljenVfenVffnVffnFbfnFffnFbfnFbfm1bf + nFbfnFbfnFbfm1Xfm1Xfm1Xfm1Xfm1TfmlLfmlLfmlLfmlHgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1HfmlDf + mlDfmlDfmlHfmlHfmlHfmlHfmlHfmlHfmlHfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hf + m1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1HgnFHgnFHgnFHg + nFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHg + nFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnVHgnVHgnVHgnVHgnVHgnVHgnVHgnVHgnVDgnVDhnVHhnVHh + nVHhnVHhnVHhnVHhnVHhnFHhnFHhnVLhnVLhnlPin1XjoljkpVzlqmLnr2jptXDrvHnguHs+NCQ+NidK + RTf////////////////////////z6uOyfE+VSxKXUBuUTBaSSRORSBKRSBKRSBORSBORSBOSSBOSSBOS + SBOSSBOdThWnUxalUxalUxalUxalUxalUxalUxamUxamVBemVBemVBemVRemVhinVhinVRinVhmnVhmn + VhmnVhmnVhqoVhqoVxuoWByoWByoWBypWBypWR2pWR6pWh+pWiCqWyCqWyCrWyGrXCGrXCOrXCOrXSOr + XSSrXiSsXyWsXy6tXyiuYCevYiivYiqwYiuyZS2zaC+1azO3bTe6cTy8dUDAekbBf0zEhFPGiVjJkF/K + k2TMmWrPnnLQonfSpnzUqYDUq4PTqX/r1L/////////////////////////////57N3y1LXx07Lx0Kzv + yqXsxZzrwJTqu4votoXnsn7lsHjkrHPjqm/jqGzipm3ipWrhpGbgomPgoWHgoF/gn17fnlzfnlvfnlrf + nlvenlrenlrfnlnenlnfnljfnlnfnljfnlnfnVjfnVjfnVffnFffnFbfnFbfm1bfm1XfnFbfnFbfm1Xf + m1Xfm1Xfm1Xfm1Xfm1PfmlHfmlHfmlHfmlHfmlHgm1Hgm1Hgm1Hgm1Hgm1HfmlDfmlDfmlDfmlDfmlDf + mlDfmlDfmlDfmlDfmlDfmlDfmlDfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDf + nFDfnFDfnFDfnFDfnFDfnFDfnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDg + nFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFLhnVLhnlPin1XjoljkpVzlqmLnr2nptXDrvHnguHs9NCQ+NidKRTf///////////// + ///////////////17ei3hV2SRw6UShWSSRORSBKRSBKRSBKRSBORSBORSBOSSRSSSRSSSBSTSRSbTRSl + UhalUxalUxalUxalUxalUxalVBemVBemVBemVBemVBenVBenVhinVRinVhinVhmnVhmnVhqnVhqnVxqo + VxuoWByoWByoWBypWBypWB2pWR6pWh+pWiCpWyCqWyGrWyKrXCKrXCOrXCOrXCOrXSSrXSOrXiSrXiqt + XyytYCauYCeuYSmvYimxZCyzZS60aDC1azS4bzi7cz29dkG/e0bCgE3EhFPGiVjIjV3KkmTLlmfNmWvO + nG/PnnHRonbSpHnRoXTjx63+/fv//////////////////////v346trx0a/vzajuyaLsxJrrwJPpuovo + t4Tms37lsHjjrHLjqm/ip2rhpWvhpGbho2ThomLhomHhoV/goF7fn1zfnlvfnVrfnVrfnlnenljenlje + nljenVfenVfenVfenVffnVffnVjfnVffnFffnVbfnVffnVbfnFbfnFbfm1Xfm1Xem1Tem1Tem1Xem1Te + m1PemlHfmlHfmlHfmlHemlHfm1Hfm1Hfm1Dfmk/fm1Dfm1DfmlDemlDemlDemlDemlDemlDemlDemlDe + mlDemlDemlDemlDem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDf + nFDfnFDfnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDg + nFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFLh + nFLhnlPin1XjoljkpVzlqmLnr2nptnHsvHnguHs9NCQ+NidKRTf///////////////////////////// + ///8+fi6i2eMPwWRRhCRRxKRSBKRSBKRSBKRSBKSSRORSROSSRSSSBOSSBORSBOaTRWmUxamUxalUxal + VBelVBelUxalVBelVBemVBenVBenVBenVBinVRinVhinVhinVhmnVhmnVhqnVhunVxunVxuoWByoWByo + WBypWBypWR2pWR6pWh+pWyCpWyGqWyGrWyKrXCOrXCOrXCOrXCSrXSSrXiSrXiasXiytYCetYCeuYCev + YSmwYiuyZC2zaDC1ajK2bDa4cDq7dD6+eELBfUnBf03Dg1LGiFfHjFzJjl/KkWLLlWXLlmfMmGvOnG/O + mWrJj13hwaT////////////////////////////46NfuyaLtyKDsxJrrwJPpu4zouIXls37ksHjjrHPi + qm/hp2zhpWzgpGXgomLfomHgoV7foF3fn13fn13gn1zenlrenVnenljenljdnljdnVfenVfenVfdnVfd + nVfdnFfdnFfdnFbdnFbenFXenFXenFXfnVbfnFXfnFbfnFXfnFXfnFTem1Tem1Tem1PemlHemlDemlDe + mlDemlDemlDemlDem1Dfmk/emk/fm1Demk/emk/emk/emk/emk/emlDemlDemlDemlDemlDemlDemlDe + mlDem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dg + nFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDhnFHhnFHhnFHhnFHhnFHhnFHhnFLhnFLhnVPin1Xjoljk + pVzlqmLnr2nptnHsvHnguHs9NCQ+NidKRTf////////////////////////////////////69/TCmXqQ + RA6QRA+RRxKRSBKRSBKRSBKRSROSSBKSSRSSSRSSSRSSSRSTSRSZTBWjUhamUxalVBelVBelVBelVBel + UxalVBelVBemVBinVRinVBinVRmnVhinVhmnVhmnVhmnVxqnVxunVxunVxuoWByoWBypWBypWR6pWR6p + WR6pWh+qWyCpWyGqWyKqXCKrXCOrXCOrXCOrXSSrXiSsXyStYCqtYSqtYSauYSevYyqvYyqxZCuyZC2z + Zi+1aTK3bTa5cDq7dD69d0K/ekbBfkvDgk/FhVTFiFfHilrIjVzIjl3JkWHKlGXLkmLJj17HjFrdt5j8 + +PT//////////////////////v746djtyqPrw5jqwJTpvI7ouYjltYLksXvkr3birHLhqHHhp2zgpGXg + o2TfomHfoV/foF3en1zenlvenlvenlvenlvenlrenlndnljdnVfdnVfdnVfdnVfdnFfdnFfdnFbdnFbd + nFXdnFXdnFXenFXem1Tem1Tem1TenFTfnFXfnFTem1Tem1TfnFXfm1Lfm1Dfm1HemlDemlDemlDdmk/e + mlDemlDemk/fm1Dfmk/emk/emk/emk/emk/emk/emlDemlDemlDemlDemlDemlDemlDemlDemlDemlDe + mlDemlDemlDemlDemlDemlDemlDemlDemlDemlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDf + mlDfmlDfmlDfmlDfmlDfmlDfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dgm1Dgm1Dg + m1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1DgnFDgnFDgnFDg + nFDgnFDgnFDgnFDgnFDfnFDgnFHgnFHgnFHgnFHgnFHgnFLgnFLgnVPhnlXioVjjpVzkqmLmr2notnHr + vHnfuHw9NCQ+NidKRTf////////////////////////////////////////////GooeKOwOPQw2RRxOR + RxKRSBKSSBKRSBKSSROSSRSSSRSRSRSSSRSRSBSYSxWlUhamUxalVBelVBelVBelVBelVBelVBelVBem + VRenVBinVBmnVRinVhmnVhqnVhqnVhmnVxqnVxunVxunWByoWByoWBypWB2pWB2pWR6pWR+qWiCpWiCq + WyGqWyKqXCOsXCOsXSOsXyOtYCStYCSuYSeuYS6uYiauYyevZCixZSmxZSqyZCyzZS20aDC1ajO3bTe5 + cDq6cz69dkG/ekXAfEjCf0zDgVDEhFPFhlXEh1bGi1nGjFvHjFnFiFfFhlS+eULZr47///////////// + ///////////////359frwZbrwJTovpDnuormtoTltH/ksXjjrHbiqXTiqGvgpWfgo2Xgo2LfoWDfoF7f + n1zen1zenlvenVndnVnenVnenlnenlrenljenVfdnVfdnVbdnFbdnVfdnVbdnFbdnFXdnFXdnFXdnFXe + nFXenFXem1Tem1Tem1Tem1Tem1Pem1Tem1Tem1Pfm1Hfm1Hfm1Hfm1Hfm1HfmlDemlDemlDemk/emlDf + mk/emU/emU/emU/emU/emU/emU/emVDemVDemVDemVDemVDemVDemVDemVDemVDemlDemlDemlDemlDe + mlDemlDemlDemlDemlDemlDemlDemlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDf + mlDfmlDfmlDfmlDfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDf + nFDfnFDfnFDfnFDgnFHgnFHgnFHgnFLgnFLgnVPhnlXioVjjpFzkqWLmr2notnHrvHnfuHw9NCQ+NidK + RTf////////////////////////////////////////////9/fzRspuWTxyOQgyRRxKRRxKSRxKRSRKS + SROSSROSSRSSSRSSSRSSSRSSSRSWSxWhUBWmUxelUxalVBelVBelVBelVBelVBelVBemVBenVRinVRin + VRmnVhmnVhqnVhqnVhqnVhunVxunWByoWByoWBypWBypWR2pWR+pWR+pWR+pWR+qWiCsXSGrXiKsXyOt + XyOtXyOtYCStYCSuYCSuYCquYSyuYSavYyevZCixZSmyZiq0Zy20aC22ajG1ajK3bDW4bzq6cj27dUC9 + d0K/eUXAe0jBfkvBf03CgE7DglHEhFLFhFLCgk7CgU7AfUm/eUTVpoL69O7///////////////////// + //746Nfsxp3ovpDnvI7muIfltoLks33jsH3irHTiqW7hp2rgpWfgo2XgomLfoF/fn13fn13enlvenlne + nVndnVndnVjdnVjdnVjenVjenVjenljdnVjdnFfdnFbdm1bdm1Xdm1Xdm1Xdm1Xdm1Xdm1Xem1Tem1Te + m1Tem1Tem1Tem1PdmlTdmlTdmlLdmVDemlDemlDemlHemlHemlDemVDemlDdmVDdmVDemU/emU/dmU/d + mU/dmU/dmU/dmU/dmU/emVDemVDemVDemVDemVDemVDemVDemVDemlDemlDemlDemlDemlDemlDemlDe + mlDemlDemlDdmlDdmlDdmlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDe + mlDem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDf + nFDgnFHgnFHgnFLgnFLgnVPhnlXioVjjpVzkqWLmr2notnHrvHnfuHw9NCQ+NidKRTf///////////// + ///////////////////////////////////////YvquNQQuNQQmRSBORRxKRRxKRSBKSSROSSROSSROS + SRSSSRSSSRSRSRSWSxSkUhamUxelVBelVBelVBelVBelVBemVBilVBemVRinVRinVRmnVRmnVhmnVhmn + VhqnVhmnVxunWBynWBynWByoWBypWB2pWB2pWR6pWR+qWh+rXB+sXh+sXiGsXyKsXyOtXyOtXyOtYCSt + YCOuYCSuYCyuYSivYyevYyivZCixZSmyZiu1aC20aC22ay+2ajG1azW4bzm5cTy6cjy8dUC9dkG+eUO+ + eUW/e0fAfEnAfUrBfkvAfEi/fEe+eUS9dkC3aS/Sn3n////////////////////////////36dnpvZLn + u4/nuovmt4bltITksYDjr3jjq3PhqG3hpmrfpWbfo2TfoGHeoF/enlzdnlvcnVrcnVncnFncnFncnFjc + m1fcm1fcm1fdnFfdnVfdnVjdnFfcm1bcm1Xcm1Xcm1Xcm1XcmlXcmlTcmlTdmlTdmlTdmlTdmlTdmlPd + mlPdmlTdmlLdmVDdmVDdmVDdmVDdmVDcmE/dmVDcmVDcmE/cmFDdmU/dmlDdmk/emlDdmU/dmU/dmU/d + mU/dmU/dmVDdmVDdmVDdmVDdmVDdmVDdmVDdmVDdmVDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDd + mlDdmlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDem1Dem1De + m1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDgnFHgnFLg + nFLgnVPhnlXioVjjpVzkqWLmr2notXHrvHrfuHw9NCQ+NidKRTf///////////////////////////// + ///////////////////////////fybqhYjSNQAiSRxKRRxKSSBOSSBOSSROSSRKSSRSSSRSSSRSSSRSS + SRSVShWfTxamUxelUxelVBelVBelVBemVBilVRimVBimVRinVRmnVRmnVRmnVhqnVxqnVxqnVxunWByn + WBynWBynWByoWB2oWB2qWR6qWx+rXR+sXR+rXR+sXSCsXiKsXyOsXyOtXyOtYCStYCSuYCWuYCetYS6u + YSiuYievYyiwZSqwZSuyZiuzZyy1aC21ai+2azG3bDW3bDe4bzm4cDq6cTu8cz68dD+8dEC+d0K+eUO+ + eUW9dkK8dEC8dD+7cjy5bzq4bDTNl2/16eD////////////////////////46dvrxZ3nu4znu43mtonk + tILksXzjrnjiq3PiqG7gpmnfpGbfomPeoWHen17enlzdnlvcnVrcnFjcnFjcnFjcm1fcm1fcm1fcm1fc + m1bcnFbdnFfcm1bdnFbdnFbdnFbcm1XcmlTcmlTcmlTcmlTdmlTdmlTdmlTdmlTdmlPdmlTdmlPdmVDd + mVDdmVDdmVDdmVDdmVDcmVDdmVDcmE/cmE/cmE/cmE/dmU/emlDdmU/dmU/dmU/dmU/dmU/dmVDdmVDd + mVDdmVDdmVDdmVDdmVDdmVDdmVDdmVDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDemlDe + mlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDem1Dem1Dem1Dem1Dem1De + m1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFHgnFLgnVPhnlXioVjj + pVzkqWHmr2notXHru3nfuHw9NCQ+NidKRTf///////////////////////////////////////////// + ///////////////m1sqUTBiMPgeRRxKSSBOSSBOSSBOSSBKSSROSSROSSRSSSRSSSRSRSRSUShShUBam + UxelUxelVBelVBelVBemVBimVRimVRimVRmnVRmnVRmnVRqnVRmnVxqnVxunVxunVxuoWByoWByoWB2o + WR6qWx6rXB+rXB+sXR+sXSCsXSCsXSCsXiKsXyOsXyOsXyOtYCOtYCSuYCStYCmtYC2uYSWuYiawZCmw + ZSqwZSqxZiu0Ziy0aC22ay+2azG2azK1ajO2bDS4bji4bji5bzm5bzm7cjy7dDy8dD+7cz+5bzu6cDu4 + bzi3bTe3azSwXiLKkWb+/Pv////////////////////////4693ovJHnupDnuYvlt4XktIDjsXvirXfi + q3PhqG3hpmnfpGXfomLeoV/en13enlzdnVvcnFncnVjcnFjcm1fcm1fcm1fcm1fcm1bcmlbcm1bcm1Xc + m1Xdm1bdm1bdm1bdm1XcmlTcmlTcmlTcmlTcmlTdmlTdmlTdmlPdmlPdmlPdmlHdmVDdmVDdmVDdmE/d + mVDcmE/cmE/dmE/dmE/cmE/cmE/cmE/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmVDdmVDdmVDd + mVDdmVDdmVDdmVDdmVDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDemlDemlDemlDe + mlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDem1Dem1Dem1Dem1Dem1Dem1Dem1De + m1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDenFHenFDenVHgnlThoVfipVvkqWHmr2jotXDr + u3jet3w9NCQ+NidKRTf///////////////////////////////////////////////////////////// + ///q29GueFCMPgaRRxKSSBOSSBORSBOSSBKSSROSSROSSRSSSRSSSRSSShWTShWdTxamUxelVBelUxel + VBemVBimVRimVBimVRimVRmnVRmnVRmnVRmnVRqnVhqnVxqnWByoWBynWByoWR2qWx2qXB2qXB6rXB6r + XR+rXR+sXSCsXSCsXSGsXiKsXyOsXyOsYCSsYCStYCSuYCSuYSmuYS2vYiivYievYyivZCmwZSmyZiqz + Zyy0aC21aC21aS60aS+0aDG2ajO2azS2azW3bDW5bja6cDa5bzm5cDq3azW3bTe2ajO1ajK1aDCzZy6y + ZCrEh1nx4db////////////////////////57eHrxqDnuovmuYrlt4Tks3/jsHrirXXiqnDhqG3gpWfg + pGTfomLeoV/dn13dnlvdnVrdnVncnFfcnFfcm1fcm1fcm1fcm1bcmlXcmlXcm1Tcm1Tcm1TcmlPcm1Xd + m1Tcm1Tdm1Tdm1Tdm1TcmlPcmlPdmlPdmlPdmlLdmlPdmlLdmU/dmVDdmVDdmU/dmU/dmE/cmE/dmE/d + mE/cmE/cmE/cmE/cmE/dmU/dmU/dmU/dmU/dmU7dmU7dmU/dmU/dmU7dmU7dmU/dmU/dmU/dmU/dmU/d + mU/dmU/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/emk/emk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/d + m0/dm0/dm0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/e + mk/emk/em0/em0/em0/em0/em0/em1Dem1DenFHgnVThoFfipFvkqWLmrmjotHDru3jetnw9NCQ+NidK + RTf////////////////////////////////////////////////////////////////////z6+WfXjCM + PgaRRhGRRxKRSBOSSBKSSROSSROSSROSSRSSSRSSSRWSSRSSSRSfUBamUxelUxelUxemVBelVBimVBem + VRmmVRmmVRmmVRmnVRqnVRunVRqnVhunWBynVxuoWBupWxyqWxyqXB2qXB6qXB6qXB6rXB6sXSCsXSCs + XSGsXSGsXiKsXyOsYCSsYCStYCSuYCWuYCSuYSuvYi2uYSauYSauYyiwZCivZCmxZiuxZiuyZiu0Ziy0 + aC20Zi6zZi6zZy+0aDC0aDG2azG3bTG3bDS4bje1aDC2azO0aDGzZi6zZi6yZS2yZi2tWh7BglT8+ff/ + ///////////////////////57uLovpLmuYrnuonltoTks37jsHnirXPhqm/hqGzhpmjgo2TfomHdoF3d + n1zdnVndnVjcnFfcnFfcm1fcm1fcm1XcmlXcmlXcmlTcmlTcm1Tcm1Tcm1Tcm1TcmlPcmlPcmlPdm1Pd + m1Pdm1Tcm1PcmlPdmlLdmlLcmlLcmlLdmk/dmU/dmU/dmU/cmU/cmU/cmU/cmU/bmE7cmE7cmE7cmE7b + mE7bmE7cmE7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/c + mk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/d + mk/dmk/dmk/dmk/dmk/dmk/dmU/dmU/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/e + m0/em0/em0/em1Dem1DenFHfnVPgoFbipFvkqWLmrmjotHDru3jetnw9NCQ+NidKRTf///////////// + ///////////////////////////////////////////////////////////z7Oa7jWyLPQWRRhGSSBOS + SBOSSBOSSBOSSROSSROSSROSSRSSSRSSSRWSShWaThamVBelUxemUxemVBimVRimVRmlVBimVRmmVRmn + VRmnVRqnVRunVhunVhunVxupWhuqWxyqWxyqXB6qXB6qXB6qXB6rXB+rXB+sXSCsXSGsXSCsXSGsXSKs + XiKsXyOsYCSsYCOuYSWuYSWtYCmuYS2uYSiuYSavYievZCiwZSmwZSmxZSqyZSqzZSuzZy2yZSyyZC2y + ZC2yZCy0aS62bC61aTC4bTazZi6zZi6zZy+yZCyxYyuxYyyxZCuwZSyuXiO9fU3t28z///////////// + ///////////57+TsyqXmuYrmuonkt4Pks3/jsHrhrXThqm/hqGzfpmffpGTeoWDdoF7dnlvcnVncnVjc + nFfbnFfcm1fcmlbcmlXcmlXcmlTcmlTcmlTcmlPcmlTcmlTcmlPcmlTbmlPbmlPcmlPcmlLcm1Pcm1Pc + m1Pcm1Pcm1PcmlLcmlHcmU/cmU/cmU/bmE7bmU7cmU/bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7b + mU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/d + mU/dmU/dmU/dmU/dmU/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/emk/emk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/em0/em0/em1De + m1DenFHfnVPgoFbhpFrkqWLmr2jotHDru3net3w9NCQ+NidKRTf///////////////////////////// + ///////////////////////////////////////////////7+Paud1CMPweRRhGSSBOSSBOSSBOSSROS + SROSSROSSROSSROSShWSSRWRSRWaThalUxelUxelUxemVBimVRilVBimVRmmVRmmVRmmVRmnVRqnVhqn + VRqoWBypWxyqWxyqWxyqWx2qXB2qXB2qXB6qXB6qXB+rXR+sXSCsXSCsXSGsXiGsXiKsXiKsXyOtYSSs + YSWsYCStYCSuYCiuYS2uYSivYiavYyevYyewZCiwZSqwZSmxZSqyZSqxZSuwYyuwYyqwYiuzZy20bC6z + Zi63bTayZSyxYyuyZSyxYiuwYiuwYiqwYSqvYimwZCqpVxm7eUf79fL////////////////////////6 + 8ujov5TluYnluYjktoPjsn3isHnhrHLgqW/fp2vepmjeo2PdoWDdoF3cnlvcnVncnVjbnFfbnFfbmlbb + mlbbmlXbmlTbmlTbmlTbmlTbmVPbmlPbmlPbmlPbmlPbmlPbmVPbmVLbmVPbmVLbmlLbmlLcmlPdmlPc + mVLcmU/cmU/cmE/cmE/bmE7cmE/bl07bmE7bmE7bmE7bmE7bmE7bmE7bmE7bl07bl07cmE7cmE7cmE7c + mE7cmE7cmE7cmE7cmE7cmE7cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/d + mU/dmU/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/emk/emk/emk/emk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/em0/em1Dem1DenFHfnVPgoFbh + pFrjqWHmr2jotHDru3net3w9NCQ+NidKRTf///////////////////////////////////////////// + ///////////////////////////////////8+ffJpYuNQAmQRQ+SSBOSSBOSSBOSSROSSROSSROSSROS + SROSShWSSRWRSRSXTBakUxemUxelUximVBimVRimVRimVRmmVRmmVRmmVRqmVRmnVxupWBqpWhupWxyq + WxypWxyqXB2qXB2qWx2qXB+qXB+qXR+rXSCsXSGsXSGsXiGsXiKsXiKtXyOtYCSsXyOsYCStYCStYCWu + YSauYSuvYi2vYSmvYiavYievYyivZCmwZSmxZCmxZCiwZCmvYimvYSqxZiyyai2xZCy1bDSxZC2wYimx + ZCuwYimvYimvYimvYSmvYSevYiivYi2sXCa5dUXo0sH////////////////////////68ujszKnluYnl + uIjktoTjs37hr3jhrXPfqm/fp2vepWfeo2TeomDdoF3cnlvcnVrcnFfcnFfbm1bbm1bbmlXbmlTbmlTb + mlTbmVPbmVPbmVPbmVPbmVPbmVPbmVPbmVPbmVLbmVPbmVLbmVLbmVLbmVLbmVLcmVLcmE/dmE/cmE/c + l0/bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07cl07cl07cmE7cmE7cmE7cmE7c + mE7cmE7cmE7cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmk/d + mk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/emk/emk/emk/emk/emk/emk/emk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/em1Dem1DenFHfnVPgoFbhpFrjqWHmr2jotG/q + u3net3w9NCQ+NihKRTf///////////////////////////////////////////////////////////// + ///////////////////////////Bl3iOQgyQRA+SRxOSSBOSSBOSSBOSSROSSROSSROSShSSShSSShWR + SRWXTRakUhemVBimUxilUximVRimVRimVRmmVRmmVRqmVRmnVxupWRqpWRupWhypWhyqWxyqWx2qWx2q + XB2qXB6qXB+qXB+qXB+rXR+sXSCsXSCsXiKtXiKtXiKsXiOsXyOsXyOsYCSsYCStYCWuYSWvYSquYS6u + YSyuYSevYievYyevZCiuYyevZCiwZCivYimuYCmwZSuwaCuvYiq1azSwZC2uYSiwYymvYiavYSevYSiu + YSiuYCmuYC2uYi+uYSioVhi3cj748ev////////////////////////79O3owJXluIjluIjktYPjsn7h + r3jhrHLfqW7ep2nepGbeomLdoF/dn1zcnlvcnFncm1fbmlfbmlXbmlXbmVbbmFTbmVTbmVTbmVTbmFPb + mFPbmVPbmVPbmVPbmVPbmVPbmVPbmVPbmVLbmVLbmVLbmVLbmVLbmE/cmE/cmE/bl07bl07bl07bl07b + l07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07cmE7cmE7cmE7cmE7cmE7cmE7cmE7cmE7c + mE7cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/bmU/c + mU/cmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmk/dmk/dmk/d + mk/dmk/dmk/dmk/dmk/dmk/cmk/cmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/d + mk/dmk/dmk/dmk/dmk/dmk/dmk/dmlDdm1DdnFHenVPfoFbgpFriqWHlr2jntG/pu3jdt3s9NCQ+NihK + RTf///////////////////////////////////////////////////////////////////////////// + ///////////////XvKiRRxGPQwySSBOSSBOSSBOSSBOSSROSSROSSROSShSSShSSShWRShWVTBaiUhin + VBilUxemVBimVBmmVRmmVRmmVRmnVhqoWBuoWRqpWRupWhypWRupWhupWx2pWxyqXB2qXB2qXB6qXB+q + XB+qXB+rXR+sXSCsXiGsXiKsXiKsXiKsXiKsXyOsXyKsYCSsYCSuYSWuYCWuYSauYCmuYSquYSyuYSuv + YimuYievYyevYyevYietXyavZCqwaC2uYCe0aTKwZSytYCauYSeuYSiuYCmuYCyuYCyuYCuuXymuYSeu + YCetYCaqWx62cTrmzLf////////////////////////79Oztzq3luIfluYjktYTjsX7irnfhrHPgqW7f + pmrdpGXdomPeoF/dn13bnVrbm1jbm1fbmlfamlXamlXbmFXbmFTbmVTbmVTbmFPbmFPbmFPbmVPbmVPb + mVLbmVPbmVPbmVLbmVLbmVLbmVLbmVLamVLamVHamE/bmE/bmE/bl07bl07bl07bl07bl07bl07bl07b + l07bl07bl07bl07bl07bl07bl07bl07al07amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE/bmE/b + mE/bmE/bmE/bmE/bmE/bmE/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmk/cmk/cmk/cmk/cmk/cmk/c + mk/cmk/cmk/cmk/cmk/cmk/cmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/d + mk/dmk/dmk/dmlDdmlDdnFHenVPfoFbgpFriqWHlr2jntG/pu3jdt3s9NCQ+NihKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + ///WuqaUTBiPQQuSSBOSSBOSSBOSSBOSSBOSSROSShSSSROSShSSShWRShWUSxWhUhinVBimUximVBim + VRmmVRmmVRmnVxmoWBqoWRqoWBqoWhupWRupWhyqWhyqWhyqWx2qWx2qXB6qXB6qXB6qXR+rXR+rXSGr + XSCsXSGsXSGsXiKsXiKsXiOsXyOsXyStYCOtYCSsYCWtYCWuYCStYCStYCeuYCuuYS6uYi2uYiuuYimu + YiitXyavYyuwaC6uXyezaTOxZTCtXiiuYSyuYS+tYC2tXymuYCauYCStXyWtYCWuYCetXyWtXyWoVhe1 + bDT06N3////////////////////////89/Hpw5rlt4bluIjktYTisX3irnjhrHLgqW7fpmnepGbdomLd + oF/cn1zbnVnbnFfbm1famlbamlXamVTamFTamFTamFTamFPamFPamFPamFLamFLamVPamVLamVLamVLa + mVLamVLamVLamVLZmVLamVLamE7al07al07al07al07al07al07al07al07al07al07al07al07al07a + l07al07al07al07al07al07al07bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE/bmE/bmE/bmE/bmE/b + mE/bmE/bmE/bmE/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/c + mk/cmk/cmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmlDd + mlDdm1HenFPfoFbgpFriqWHlr2jntG/pu3ndt3w9NCQ+NidKRTf///////////////////////////// + ///////////////////////////////////////////////////////////////////////l1MeaVSSO + PwmSSBOSSBOSSBOSSBOSSRSSSRSSShSSShSSShSSShWSShWTSxWfURamVBimUximVBimVBinVRmoWBmo + WBqoWRqoWBqoWRqpWRupWRyqWhyqWh2qWx2qWxyqXB2qXB6qXB6qXB6qXB+rXSCqXB+rXSCsXiKsXiGs + XSGsXiKsXiOsXiOsYCOsYCOsYCSsXyStYCStYCWtYCStYCWuYSatYCeuYSiuYSmuYiqsXymuYy6uZzGt + XimyaDSxZjKtXimsXymuYSitYCWsXyWtXyWtXyStXyStXiSuXyauXyWtXiOtXySrWR2zajLixa7///// + ///////////////////89vDt0LHkuIfluInktYPisn3hrnfgq3PfqG7epmrdo2XdomLcoF/cnlzcnlrb + nFjbm1fbmlbamVTamVTamFTamFTamFPamFPamFPamFPamFPamFPamVLamVLamVLamVLamVLamVLamVLa + mVLamVLamFDZl07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07a + l07al07al07al07bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE/bmE/bmE/bmE/bmE/bmE/bmE/bmE/b + mE/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/d + mk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmlDdmlDdm1HenFPfn1bg + pFriqWHlr2jntG/punndt3w9NCQ+NidKRTf///////////////////////////////////////////// + ///////////////////////////////////////////////////////////p2s+fXS6MPgeSSBOSSBOS + SBOSSBOSSBOSSRSSShSSShSSShSSShWRShWSShWfURenVBmmVBimUxinVRmoWBmoWBqoWBqoWBqoWBqo + WBqoWRuoWRupWhuqWhyqWh2qWx2qXB2qXB6qXB6qXB+qXB+qXR+qXR+rXSGsXSCsXSCsXiGsXiGtXyOt + XyOsXiKsXyOsXyOsYCStYCStYCOuYCSuYCWtYCStYCStYCStYSWsYCSsYiqtZi2sXiSxZy6xZy6sXiSs + XiSuXyWtYCasXySsXyStXyStXyStXiOtXiOtYCWtXiStXiOtXiSpVxmyZy3w4NP///////////////// + ///////9+vbpxZ/kt4flt4fjtYLisXzhrnfgrHLfqW3epGjdomTcoWDcoF7cnlvcnVnbnFjbmlbbmlXa + mVXamVTamFTamFPamFPamFLamFPamFLamFLamFLamVLamVLamVLamVLamVLamVLamVLamVLZmFDal07a + l07Zl07Zl07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07a + l07bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7b + mU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7c + mU7cmU7cmU7cmU7cmU7cmU7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7dmk7dmk7d + mk7dmk7dmk7dmk7dmk7dmk7dmk7dmk7dmk7dmk7dmk7dmk/dmk/dm1DenFLfn1Xgo1niqGDlrmfntG7p + unjdtns9NCQ+NidKRTf///////////////////////////////////////////////////////////// + ///////////////////////////////////////////////v5d2obUOMPQWSSBOSSBOSSBOSSBOSSBOS + SRSSSRSSShSSShSSShWSShWTShWcTxelVBimVBmnVRioVxmoWBqoWBmoWBqoWRqoWRqoWRuoWhypWRup + WhyqWh2qWh2qWx2qXB2qXB6qXB6qXB6qXR+qXR+qXCCrXSCrXSCsXSCsXiGtXyKsXiKsXiKsXyOsXyKs + XyOsXySsYCOuYCStYCStXyOtYCStYCStYCStYCSsYimrZC2sXiOwZSyyZzCsXiSsXiStXiStXiWsXiOs + XiOsXiOtXiOtXiOtXiOtXiOtXyStXiOtXSKtXSOrWR2wYyjdvKL////////////////////////8+PPv + 1Lbkt4XkuIfjtYLisnzhrnbgq3HfqGzepmjdo2PcoWDcn13cnlvbnVjbm1fbmlbbmlXamVTamVPamFPa + mFLamFLamFLamFHamFHamFHamFHamFHamVHamVHamVHamVHamVHZmFHamFDamE3Zl03Zl03Zl03Zl03a + l03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03bmE3bmE3b + mE3bmE3bmE3bmE3bmE3bmE3bmE3bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7b + mU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7c + mU7cmU7cmE7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7dmU7dmU7dmU7d + mU7dmU7dmU7dmU7dmU7dmU7dmU7dmU/dmU/dmlDem1LfnlXgolnip2DlrWfntG7punjdtns9NCQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////28e2ud0+KOwKSRxKSSBOSSBOSSRSSSRSSSBSSSRSSShSS + ShSSShSSShWRShabTxalVBinVhioVxmoVxqoWBqoWBmoWBqoWBqoWRqoWhuoWRuoWhypWhyqWh2rWx2r + Wx6qXB2qXB6qXB+qXB+qXB+qXB+qXB+qXB+rXR+sXiCsXiCsXSGsXSGsXiGsXiKsXyOsXyKsYCOsYCSs + XyOtYCOtYCOtYCStXyOtXyOsYSirZCyrXSKuYyqxZy+sXiSsXSStXiStXiSsXSOsXSOsXiOsXiOtXiOt + XiOtXiOtXiKtXSKtXCKtXSKsXCKpVhmtXiLq1sX////////////////////////++/jryqXlt4Xlt4fj + tYLisXvhrnbgrHLfqW3epmfdo2TcoWDbn1zbnVnbnFjbm1fbmlXamVTamVPamVPamFLamFLamFHamFHa + mFHamFHamFHamFHamFHamFHamVHamVHamVHamFDZmFDZmE3Zl03Zl03Zl03Zl03Zl03Zl03al03al03a + l03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03a + l03al03al03al03al07al07al07al07al07al07al07al07al07al07amE7amE7amE7amE7amE7amE7a + mE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7b + mE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7c + mU7cmU7cmU7cmU/cmU/cmlDdm1LenlXfolnhp2DkrWfms27punjdtns9NCQ+NidKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////38u65iWiNQQqRRhGSSBOSSBOSSBOSSRSSSRSSSRSSShSSShSSShSSShWS + ShaZThalVReoVxmoVxmoVxmoVxmoVxmoWBqoWRqoWRqoWRuoWRuoWhypWhyqWx2qWh2pWhyqWx2qXB2q + XB6qXB6qXR+qXR+rXSCrXR+rXSCrXB+sXSCsXSGsXSGsXiKsXiKsXSKsXiKsXyOsXyOtYCOtXyOtXyOt + XyOtXyOsYCerYyqrXCKtYSixZi+sXiSsXCKtXiOtXiSsXSOsXSOsXSOsXSKsXiOtXSKsXSGtXSGtXiKt + XSGtXCGsXCGtXCGqWBytXiLYspT////////////////////////++vfw2Lzkt4bkuIbjtYHisnzhrnfg + q3LfqGzdpmjdo2TcoWDbn1zanVranFjamlbamVXamVTZmVPZmFPZl1PZl1LZmFHZmFHZmFHZmFHZmFHZ + mFHZmFHZmFHZmFHZmFHZmFHYl1DYl07Zlk3Ylk3Ylk3Ylk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3al03al03al03al03al03al03a + l03al03al07al07al07al07al07al07al07al07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7a + mE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7b + mU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/c + mU/cmlDdm1LenlXfolnhp2DkrWfms27puXjdtns9NCQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////++k3OKOwKQRQ+SSBOSSBOSSBOSSRSSSRSSSRSSShSSShSSShSSShSRShaaUBenVxio + VxioVxmoVxmoVxmoWBmoWBqoWRqoWRuoWRupWhypWhyoWhypWhyqWh2qWx6qWh2qWx2qXB6qXB+qXB6q + XR+rXR+rXR+qXB+rXSCsXSCsXSGsXSGsXiKsXiGsXSCsXiKsXyOsXyOtXyOtXyOtXyOtXyOsYCerYSmr + WyKsXyewZi6sXySrXCKsXSOtXiStXSOsXSOsXCKsXCGsXSKrXSGrXCGsXCGtXSKtXCGsXB+sXCGsXCGs + XCCqVxqrWRzly7b////////////////////////+/fvszKnktoXkt4bjtIHisHvgrnbfqnDep2zdpWjc + omTboGDanl3anFnamlfamVbamVbZmFTZmFPZl1LZl1LZl1HZl1HZl1HZl1HZl1HZllHZllHZl1HZl1HZ + l1HYmFHZmFHZl0/Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3al03al03al03al03al03al03al03al03al03al07a + l07al07al07al07al07al07al07al07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7b + mE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7b + mU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmlDdm1LenlXf + olnhp2DkrWfms27puXjdtns9NCQ+NidKRTf///////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////8 + +vnJpYqSShSQRA+SSRSSSBOSSRSSSRSSSRSSSRSSShSSShSSShSSShSUTBWZUBakVRioVxmoVxmoVxmo + VxmoVxqoWBqoWRqoWRupWhyoWhyoWhypWhypWhyqWh2qWh2qWx2qWx2qXB6qXB6qXB6rXR+qXR+rXSCq + XSCrXR+sXSCsXSCsXSGsXSGsXSGsXSGsXiKsXyKsXyOtXyKtXyOtXiKsXyWrYCerWyKsXiWvZSysXyWr + XCKrXCKtXSOtXSOsXCGrXCGsXCGsXCKsXSGrXSGrXCGsXCCtXSGsXB+sXB+sXB+sXCCsWyCqVxqpVxnV + q4z////////////////////////+/Prx2sDktoTkt4bjtILhsXzgrXbfqnHep2zdpWjcomPbn2DanVza + nFram1famlfamVXamFTZmFPZmFLZl1LZl1LZl1HZl1HZl1HZl1HZl1HZl1HZl1HYllDYllDZmFHYl0/Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3al03al03al03al03al03al03al03al03al07al07al07al07a + l07al07al07al07al07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7b + mE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7b + mU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmlDdm1LenlXfolnhp2DkrWfms27p + uXjdtns9NCQ+NidKRTf///////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////QsJqMPweP + Qw2SSRSSSBOSSRSSSRSSSRSSSRSSShSSShSSShSUTBSTTRWYUBemVhioVxinVxmoVxmoVxqoVxqoWBqo + WRqoWRuoWhuoWhyoWhuoWhypWhyqWhyqWx2qWh2qWx2qXB2rXB6qXB+qXB+qXB+qXB+qXB+qXB+rXCCs + XSCsXSCsXSCsXSCsXSCsXiGsXyKsXiGsXiGtXiKsXySrXiWrWyGrXSOvYyqsXiSrXCKrXCKrXCGsXSKs + XCGrXCCsXCGsXCGsXCCrWx+rXCCrXB+sXCCsXSCsWx+sXB+sWx+sWh6sWx+qVxmpVRbgwaj///////// + /////////////////v3tz67ktoXkt4XjtIHisHzgrXbgqnHep2zdpWfcomPbn1/anl3anVnam1famlba + mVXamFTZmFPZmFLZl1LZl1LZl1HZl1HZl1HZl1HZl1HYllDZl1HYllDYllDYl0/Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zlk3al03al03al03al03al03al03al03al03al03al07al07al07al07al07al07a + l07al07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7b + mE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7b + mU7bmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmlDdm1LenlXfolnhp2DkrWfms27puXjdtns9NCQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////Zv6ybWSiOQgySSBOSSBOS + SRSSSRSSSRSSSRSSSRSSShSUTBSVTRSUTRSXTxaiVBioVxmoVxmnVxmoVxqoWBqoWBqoWBqoWRuoWRuo + WRuoWhyoWhyoWhuqWh2qWhyqWh2qXB6rXB6qXB6qXB6qXB6qXB+qXB6qXB+qXB6rXR+rXR+sXSCsXSCs + XR+sXSCsXSCrXiCrXiGsXiGrXiOrXSSrWyGrWyGvYSitXyarWyGqWyCrXCGrXSGrXCGrXCCsXCGrXCCr + XCCrWx+rWx+rWx+sXB+sXCCsWx+rWx6sWh6rWh2rWh6sWh6qVxqpVRbSpYL///////////////////// + /////vzz3cfktoXktoXjtIHhsXzhrXbfqnHep2vdpGjcomPcoGDanlzanFram1jamlbamVTamFTZmFLZ + mFLZl1LZl1LZl1DZl1HZl1HZl1HYllDZl1HYllDYllDYllDYlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3al03al03al03al03al03al03al03al03al03al07al07al07al07al07al07al07al07al07a + mE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7b + mE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7c + mU7cmU7cmU7cmU/cmU/cmlDdm1LenlXfolnhp2DkrWfms27puXjdtns9NCQ+NidKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////gy7yQRxKNQAmSSBSSSRSSSRSSSRSSSRSS + SRSSSRSUSxSVTRWVTRWTTRSXThakVRioVxmnVxmoVxmoVxqoVxqoVxqoWBqoWBqoWRuoWRuoWRuoWhyo + WhypWhyqWh2qWx2qWx2qXB2qXB6qXB6qXB6qXB6qXB6qXB6qXB6qXB6rXR+rXR+rXR+rXR+rXR+sXR+s + XiCsXiCrXSKqXCKqWyCrWyGuYCetXyaqWyCqWiCrWyGrXCGrXCCqWyCrWyCrWx+rWx+rWx+rWh6rWh6r + Wh6rWx6rWx6qWh2rWh2sWh2rWh2rWh2rWh6qVxmoVBXbt5j////////////////////////////v07fk + toXktoTjtILisHvgrXbgqnHep2zdpWfdomPboF/bnl3anVram1jamlfamVXamFPZmFPZl1LZl1LZl1HZ + l1HZl1HZllDZllDYllDYllDYllDYllDYlU7YlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3a + l03al03al03al03al03al03al03al03al07al07al07al07al07al07al07al07al07amE7amE7amE7a + mE7amE7amE7amE7amE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7b + mE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU/b + mU/bmlDcm1LdnlXeolngp2DjrWfls27ouXjctns9NCQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////k08WnbUOMPwiSSBOSSRSSSBOSSRSSSRSSSRSUSxSVTRWV + TRWVTRWVTRWWThagUxeoVxmnVxmnVxqoVxqoVxqoVxmoWBqoWRuoWRqoWRuoWhyoWhyoWhuqWhyqWhyp + Wh2pWhyqWx2qWx2qXB2qXB6qXB6qXB6qWx6qXB6qXB+rXB+rXR6rXB+rXR+sXSCrXB+rXR+qXCGpWyGp + Wx+qWyCuYCauYCeqWyCqWiCqWiCrWx+rWx+qWx+qWx+rWx+rWx+rWx6rWx6rWh6rWh6qWh2rWx6rWh6r + Wh2sWhyrWhyrWhyrWhyrWh2qVxqoUhLNnHX////////////////////////////z4MvktobktoXjtYHh + sXzgrnbfq3Hep2zdpGfcomPboGDanlzanFrZm1jYmlbamVTamVTZmFPYmFLZl1LZllLXllDYl1HYl1HY + llDYllDYllDYllDYlk/YlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Xlk3Xlk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7Z + mE7ZmE7ZmE7ZmE7ZmE7ZmE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7a + mE7amE7amU7amU7amU7amU7amU7amU7amU7amU7amU7amU7amU7amU7bmU7bmU/bmU/bmlDcm1LdnlXe + olngp2DjrWfls27ouXjctns9NCQ+NidKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////t4dmZViSMPweSSBOSSBOSSBOSSRSSSRSTShSUTBSVTBSVTRWVThWUTRWV + ThWiVBioVxmnVxmnVxqoVxqoVxqoVxmoWBuoWBqoWRuoWRuoWhyoWhypWhyoWRupWhypWhypWhyqWhyq + Wx2qWx2qXB2qXB6qWx2qWx2qXB6qXB6rXB6rWx6rWx6rXB+rXB+qWx6pWh+pWh+pWiCpWh+sXiSvYCar + WyCqWh6qWh+qWh+rWh+qWh6qWx+qWx+rWx6rWx6rWh2rWh6rWh6qWh2rWh2rWh2qWh2qWhyrWhyrWRyr + WRurWhyrWhyqVxmnUhHTp4P//v7////////////////////////x2b/kt4fjtYTitIHhsXzgrnffqnHd + p2zcpGfcomPaoF/anlzZnVnYm1jYmlbYmVXZmVTYmFPYmFLYl1LXllHYl1HXl1HXllDXllDXllDXllDX + lk/XlU3XlU3XlU3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7Z + mE7ZmE7ZmE7ZmE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7a + mU7amU7amU7amU7amU7amU7amU7amU7amU7amU7amU7bmU/bmU/bmlDcm1LdnlXeolngp2DjrWfls27o + uXjctns9NCQ+NidKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////v5d20g1+LPgaRSBOSSRSSSRSSSRSTSRSUTBSUTBSVTBSVTRWUThWVThWVThaeUheoVxmn + VxmnVxqoVxqoVxmoVxqoVxqoWBqoWRqoWRupWh2oWhyoWRupWhupWhupWhyqWhyqWh2pWxyqWx2pXB2q + WxyqWx2qWx2qXB2qXB6rWx2rXB6rWx6rXB6qWh6pWR+pWR2pWR6pWR6sXSOuXyWrWiCqWR6qWR6qWh+r + Wh+qWh6qWh6pWh2pWh6qWh6rWh6rWh2qWh2qWh2qWhyrWh2qWhyqWhyqWhyrWhurWhurWhurWRurWRyq + WBqmUA7HjmP//v3////////////////////////15NHkt4fjtoTitILhsX3grnbeq3HdqGzdpWfco2Pb + oF/anlzanFrYm1fYmlbYmVXZmVTYmFLXl1HYllHXl1HXllDXllDXllDXllDXllDXlk/XlU3XlU3XlU3X + lU3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7a + mE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amU7amU7amU7amU7a + mU7amU7amU7amU7amU7amU7amU7amU/bmU/bmlDcm1LdnlXeolngp2DjrWfls27ounjctns9MyQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////3 + 8++ma0CLPweRSBOSSRSSSBOTSRSUTBSUTBSUTBSUTBSUTBSVTRSUTRWUTRWeUheoVxinVxinVxmoVxmo + VxmoVxmoVxmoWBmoWRqoWRuoWRqoWRuoWhuoWhupWhypWhyqWhyqWhyqWh2pWxyqWx2qWxyqWx2pWx2q + XB2qXB6qXB2rWx2rWx2qWR2pWR6pWR2pWB2pWB2rXCKtXiSqWyCpWR2qWR6qWh6rWh6qWR6qWR2qWR6p + WR2pWh2pWh2qWh2qWRyqWRyqWh2qWRyrWRuqWRyqWhyqWhurWRurWRurWRqrWRurWRurWBqnTw7Klm39 + +/n////////////////////////z3sfkuIjjtYPitIHhsXvgrnbfq3DeqGvdpWbco2LaoF/an1zZnFjY + m1fXmlXYmVTYmFLXl1HYl1DXllDXllDXlk/Xlk/Xlk/Xlk/Xlk7XlUzXlUzXlUzXlUzXlUzXlkzXlkzX + lkzXlkzXlkzXlkzXlkzXlkzXlkzXlkzXlkzXlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzY + lkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzZlkzZl0zZl0zZl0zZl0zZl0zZl0zZl0zZl0zZl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3amE3amE3a + mE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3a + mE3amE3amE3amE7amE7amU/cmlHdnVXeoVjgpl/jrGblsm7ouHbctXk9MyQ+NidKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////38+/CmXyMPweQ + RxGSSRSSSRSTShOVTBSUTBSUTBSVTBSVTBSUTRSVTRWUTRSbUBanVxinVxmnVxmoVxmoVxmoVxmoVxmo + WRqoWBqoWRuoWRuoWRuoWRuoWRuoWRupWRuqWhyqWhypWhyqWxyqWxyqWx2qWx2qXB2pXBypXByqXB2q + Wx2pWB2pWR6pWB2pWByoWB2qWh+tXSKqXCGoWR6pWR2qWR2qWR6qWR6qWR2qWR2pWR2pWR2pWRypWRyq + WRyqWRyqWRyqWBuqWRuqWRqqWBuqWRuqWBqqWRurWBqrWRqrWRmrWRqqWRqlTQrBhVb9+/n///////// + ///////////////26NfkuIjjtYPitIHhsXzgrnbfq3DeqGvcpWfbo2PboF/anlvZnVjYm1bYmVXXmFPY + mFLYl1HYl1DXllDXllDXlk/Xlk/Xlk/Xlk7XlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzY + lUzYlUzYlUzYlUzYlUzYlUzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03al03al03al03al03al03a + l03al03al03al03al03al03al03al03al03al03al03al03amE3amE3amE3amE3amE3amE3amE3amE7a + mE7amU/bmlHdnVXeoVjgpl7jrGblsm7ouHbctXk9MyQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////+/fy3h2SMQAmQRhGSSRSTSROT + TBSUTBSUTBSVTBSVTBWVTBSVTRSUTRWTTRWaURWmVhioVxmnVxmnVxmoVxmpVxmpWBuoVxqoWBqoWRqo + WRqoWRuoWRuoWRuoWRupWRupWhupWRupWhupWxypWxyqWxyqWxypWxyqWxyqWx2pWh2oWB2pWB2pWB2o + WByoWB2qWh+sXCGqWyCoWR2pWR2pWR2pWR2qWh2qWR2pWRypWRypWBypWBypWRypWRypWRuqWBuqWBuq + WBurWRuqWBuqWBqqWBqqWRqqWRqqWRqrWRqrWBqrWRmqWBqlTQvEil379/T///////////////////// + ///049HluYrjtYPis4HhsXvgrnXfqnDep2vdpWbcomPbn17anlvYm1jYmlbXmFTXmFPYl1LYllHXllDX + lVDXlVDXlU/XlU/XlU7XlEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzY + lUzYlUzYlUzYlUzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03al03al03al03al03al03al03al03a + l03al03al03al03al03al03al03al03al03amE3amE3amE3amE3amE3amE3amE7amE7amU/bmlHcnVXe + oVjgpl7iq2Xlsm7ouHfctXk9MyQ+NidKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////v7QsZqOQwyPRA6SSRSTShSUTBSUTBSUTBSU + TBSVTBSUTBSVTBWUTRWTTRWZUBWmVhioVxmnVxmnVxmpVxmoVxqoVxqoVxmoWBqoWBqoWRqoWRuoWRuo + WRuoWRupWRupWRupWRupWRupWhupWxypWxypWxyqWxupWhyoWBynWByoWR2oWB2oWByoWByqWh6rXCCq + Wh6oWBypWR2oWR2oWRypWRyqWR2pWBypWBupWBypWBypVxupWRupWRuqWBuqWBuqWBurWRyrWBuqWBqq + WBqqWBqqWRmpWBqqWBmrWBirWBirWBmqWBikTQq+fk379vL////////////////////////47N7luYrj + tIPjtILhsHvgrXXfqnDep2vdpWfcoWLbn17anVvZnFnZmlfXmVXYmFPYl1LXllHXllDXlVDXlVDXlVDX + lU/XlEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzY + lUzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03al03al03al03al03al03al03al03al03al03al03a + l03al03al03al03al03al03amE3amE3amE3amE3amE3amE7amE7amU/bmlHcnVXdoVjfpl7iq2Xlsm7n + uHfctXk9MyQ+NidKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////MqZCQRxGORA6SSRSUTBSUTBSUTBSUTBSUTBSUTBSVTBSU + TBSUTRWUTRWYTxWkVhioVxinVxmnVxmnVxmoVxmoVxqoVxmoVxmoWBqoWRuoWBqoWRqoWRqoWRupWRup + WRupWRupWRupWhupWhypWxupWhuoWBunWBynWByoWBynWBynWByoVxupWByrWx+qWR6oWByoWByoWByo + WByoWBupWBypWBupWBupWBupWBupWBupVxupWBupWBupWBqqWBqqWBqrWBuqWBqqWBqqVxmqWBmqWBqq + WBmqWBmqWBirWBiqWBiqWBmlTQvAgVH59O7////////////////////////36drluozjtIPitIHhsHvg + rnbfq3Hdp2vco2bboWLan17anVvYm1jYmlfXmVXWmFPXllLXllDXllDXllDXlVDXlU/XlEzXlEzXlEzX + lEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzWlUzXlUzX + lUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzXlUzXlUzYlkzYlkzZ + lkzZlkzZlkzZlkzZlkzZlkzZlkzZlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Yl03Yl03Zl03al03al03al03al03al03al03al03al03al03al03al03al03a + l03al03al03amE3amE3amE3amE3amE7amE7amU/bmlHcnVXdoVjfpl7hq2Xksm7nuHbctHk9MyQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////eybiUTRmNQguSSROUTBOUTBSUTBSUTBSUTBSUTBSUTBSUTBWVTRWUTRSX + TxaiVRioWBinVxmnVxmoVxmoVxmoVxmoVxmoVxqoWBqoWBmoWBqoWRqoWRqoWRqpWBqpWBqpWRqpWBqp + WRqpWRqpWRunVxqnVxunWByoWBynVxqnVxuoVxupWByrWh6qWR6oVxuoVhuoVxqoVxuoWBuoWBupWBup + WBupVxqpWBupWBypVxupVxqpWBupWBqpWBqpWBqqWBqrWBqqWBmqWBmpWBmqWBmqWBmqWBmpWBipWBiq + WBiqWBiqWBilTgu8ekb48Oj////////////////////////57uPlu43itIPis4HgsHvfrXbdq3Lcp2vb + pGfaoWLZn1/YnVvYm1jXmlfWmFXWl1PWl1LVllHWllDWllDWlVDWlE3WlEzWlEzWlEzWlEzWlEzWlEzW + lEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzY + lkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Y + l03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Z + mE3ZmE3ZmE3ZmE7ZmE7ZmU/amlHbnVXdoFjfpl7hq2Xksm7nuHbctHg9MyQ+NidKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////gy7yYVCKMQAqTSxSUTBSUTBSUTBSUTBSUTBSUTBSUTBSUTBSVTBWUTRWWTxajVReoVxin + VximVxinVxmoVxmoVxmoVxmoVxmoWBmoWBqoWBmoWBmoWBmoWBmoWBqpWRqpWBqpWRqpWBunVxqnVhqn + WBunVxuoWBynVhqnVxqnVxqoWBuqWR2qWR2oVhqoVhqoVhqoVhuoVxqoVxuoVxuoVxupVxqpVxupVxup + VxqpVxqpVxqpVxqpWBqpWBmpWBmqWBqqWBmpWBmpWBmqVxmqVxipWBipWBipWBiqWBiqWBiqWBiqWBil + Tgq8eUX37ub////////////////////////47eHlvJDhtILhs4Hgr3vfrXbeqnHcp2vao2bZoGLZn17Y + nVvYm1jXmlfWmVXWmFTVllLWllDWllDWlVDWlE7WlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzW + lEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzY + lkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Y + l03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03ZmE3ZmE7Z + mE7ZmU/amlHbnVXdoFjfpl7hq2Xksm7nuHbbtHg9MyQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////r + 3tWgYTOLPweSSxSTTBSUTBOUTBSUTBSUTBSUTBSUTBSUTBSVTBWUTRSWThWgUxanVxenVxinVximVhio + VxmoVxmoVxmoVxqoVxmoWBmoWBmoWBmoWBqoWBmoWBmpWBqpWBqoVhqnVhqnVhqnVxqnVxqoVxunVhqn + VxqnVhqoVxupWR2qWByoVhqoVxqoVhqoVhqoVhmoVxqoVxqoVxqoVxupVxqpVhmpVxmpVxqpVxmpVxqp + VhipVxmoWBioVxmpWBmqVxmqVxmpVxipVxipVxipWBipWBipWBipWBiqWBiqWBiqWBilTgy4cjvy5Nn/ + ///////////////////////58ejmvpPis4LitILhsH3frXfeqnLdqGvbpGfaoWLZoF/YnVvYm1jXmlfW + mFXWl1PWl1LVllHVllDWlE7WlE3WlE3WlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzW + lUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03ZmE7ZmE7ZmU/amlHbnVXd + oFjfpl7hq2Xksm7nuHXbtHg9MyM+NidKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////w5t+laT+KPQSS + ShOTTBSUTBSUSxOUSxOUTBSUTBSUTBSUTBSVTBSUTRSUTRWfUxaoVxenVximVhinVxinVxmoVxmoVxio + VhioWBmoWBmoWBmoWBmoWBqoWBmoWBqmVhmmVRmnVRqnVRqnVRqnVhqoVxqnVhqnVhmnVhmoVxqpWByp + WBuoVhmoVhmoVhmoVhmoVhmoVhqoVhmoVhmoVxqoVxqoVhmpVxqpVxmpVxmoVxmpVxmpVhmoVhipVxio + VxipVxipVxmpVxipVxipVhepVxipVxipVxipWBepWBiqWBiqWBiqWBilTwu1bDPy5Nn///////////// + ///////////58efmv5XhsoDis4LhsHzfrHfeqnHcqGzbpGbaoWLZnl/YnVvYm1jXmlbWmVTWmFTWl1PV + llHVlk7WlE3WlE3WlE3WlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzW + lUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Zl07ZmU/amlHbnVXdoFjfpl7hq2XjsW3n + uHXbtHg9MyQ+NidKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////z7Oawe1SLPweSShOTTBSUTBSU + SxOUTBSUTBSUTBSUTBSUTBSUTBSUTBSUTRWdUhWmVxenVhenVhinVxinVxioVxmoVxmoVhioVxmoWBio + WBioWBmnWBmnVRmmVRmmVRmnVRqnVRmnVRmnVhqoVxqnVhqnVhmnVhqnVhmoVxqpWBuoVxqnVhmoVhmo + VhmoVhmoVhmoVhqoVhmoVhmoVhmoVxmoVxmoVhioVxmpVxmpVxmoVhmoVhipVxioVxioVxioVxipVxip + VxipVhepVxipVxipVxipVhepVxepVxeqWBiqVxeqVxemUA2zaC7s2Mn////////////////////////7 + 8+znwZnhs4His4HhsHzfrHfdqnHcp2vbpGfaomPZoF/YnVvYnFnXmlbWmFXWmFPWmFPVlk/VlU3WlU3W + lE3WlE3WlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzW + lUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Zl07ZmE/amlHbnVXdoFjfpl7hq2XjsW3nuHXbtHg9MyQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////8+vi2hWKJOgKRRxGTSxSUTBSUTBSUTBSUTBSU + TBSUTBSUTBSUTBSUTBSSTRSbURWnVxanVhanVximVhenVhinVxioVhioVhioVxioWBmnVhimVRmmVRmm + VRimVRmmVRmnVRmnVRmnVRmoVhqnVhmnVhmnVhmnVhmoVxqpVxqoVxqnVhmnVhmoVhmoVhmoVhioVhmo + VhmoVhmnVRioVhinVhmnVhioVhioVhioVhioVhioVhioVhioVhioVxioVxioVxipVxipVxipVxipVxip + VxipVhepVxipVxepVxepVxeqVxeqVxemUAyvYCPs2Mj////////////////////////79e7nwprhsn/i + s4LgsHzfrXfeqnHcp2zbpWfaomPZoF/YnVzXm1jXmlbWmVXWmFTWl1HVlU7VlU3WlU3WlE3WlE3WlEzW + lEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzW + lUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + l03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl07Zl07ZmE/amVHbnFXdoFjfpl7hq2XjsWzmuHXbtHg9MyM+NiZKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////69/TAl3iPRA+QRxCSShSTSxOUTBSUTBSUSxOUTBSUTBSUTBSU + TBSUTBSUTBSaUBWkVRanVhenVxenVxinVxinVxioVxinVRimVBimUximVBilVRimVRimVRimVRimVBim + VRmnVRmoVhmnVRmnVRmnVhinVhmoVxqoVxqnVhmnVhmnVRinVRioVhioVhmoVhioVhioVRioVRioVRin + VhinVhinVhinVhioVhioVhioVhioVhioVhioVhioVhioVxioVxipVxipVxipVhepVxipVhepVxipVxep + VxepVxepVxeqVxeqVxemUA6wYSXo0L7////////////////////////79e/px6HhsoDhtILgsH3frXfd + qnHcp2zbpGfaomPan2DYnVzYnFnXmlfWmVbWmFLWlk/VlU/VlU3WlU3WlE3WlE3WlEzWlEzWlEzWlEzW + lEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzY + lkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Y + l03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Zl07Z + l07ZmE/amVHbnFXdoFjfpV7hq2XjsWzmuHXbtHg9MyM+NiZKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////HoYaLPQWORA+RSRSTShSTSxSUSxOUTBSUTBSUTBSUTBSUTBSUTBSTTBSZ + UBWmVhaoVxamVhemVhemVhilVBikUxelUxemUximVBilVBimVRimVRimVRilVBemVBilVBinVRinVBin + VRmmVRinVRenVhioVhmnVhmnVhmnVhinVRenVRinVRioVhioVhinVReoVRioVRinVRenVhinVhmnVhin + VhioVhioVhioVhioVhioVReoVhioVxioVxioVxeoVhepVhepVhepVhepVhepVhepVhepVxepVxepVxeq + VxeqVxinUA6rWRnnz7v////////////////////////9+fTpx6Lhsn/htIHgsHzfrXfeqnHcpmzbpWfa + omPZoF/ZnVzXm1jXmlfWmFPWl1DWllDWlU/VlU3WlU3WlE3WlE3WlE3WlEzWlEzWlEzWlEzWlEzWlEzW + lEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzY + lkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Y + l03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Zl07Zl07ZmE/amVHbnFXd + oFjfpF7hqmXjsWzmuHXbtHg9MyM+NiZKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////+/fzSsp2WUB6OQw2RSRSRSRSSShSTShOTShSTSxSTSxSTSxSTSxSTSxSTSxSXThShUxWmVRal + VBakUxekUxelUxilUxelUxilUximVBimVBimVBimVBimVRimVRilVRemVRimVBemVBenVBinVRinVRin + VRinVhinVRimVhinVRemVRemVRinVhinVRinVRenVRenVRenVRenVRenVRenVhinVhinVhioVhioVhio + VhioVReoVhioVReoVhioVheoVheoVhepVhepVhepVhepVhepVhepVhepVhepVxeoVxaqVxeqVxinUQ6t + XiDlyrT////////////////////////8+PPqy6jhsoDhtILgsX3frXfdqnHcp23bpWjaomPZn1/YnVvY + m1nXmVXWl1LWllDWl0/VlU/VlU3VlU3WlU3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3W + lE3WlE3WlE3WlE3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3XlU3XlU3XlU3XlU3XlU3X + lU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Y + l07Yl07Yl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE/amVHbnFXdoFjfpF7hqmXjsGzm + uHTbtHg9MyM+NiZKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////Y + vqyNQgyNQQqRSBORSRSRSBOSSBSSSRSSSRSSSRSSSRSSSRSSSRSRSBOVSxSjUhalUxalUxakUxelUxek + UxelUxelUxelUxelUxilUxemVBimVBilVRimVRimVRilVBelVBimVBinVBenVBinVBimVRemVRimVRem + VRemVRemVRemVRemVRenVRenVRenVRenVRenVRenVBanVRenVRenVhinVhioVReoVhioVhioVhioVReo + VReoVReoVheoVheoVhepVhepVhepVhepVhepVhepVhepVheoVhapVxepVxepVxemUQ+oUxHjyLL///// + ///////////////////9/Pnry6nhsX7htILgsHzfrnfeqnLcp2zbo2faoWLZn17YnVvXm1fXmFPWl1LW + l1HWllDWlU7VlU3VlU3WlU3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3W + lE3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3X + lU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Y + l07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE/amVHbnFXdoFnfpF7hqmXjsGzmt3TbtHg9MyM+NiZK + RDf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////fybqiYzeOQQqS + ShWSShWSShWSSRSTShWTShWTShWTShWTShWTShWTShWVTBWfURemVBelVBelVBilVBilVBimVBilVBim + VBimVBinVRmnVRmmVRinVRinVhmmVRimVRimVRimVRinVRinVRinVRinVhinVhinVhinVhinVhinVhin + VhinVhinVhioVhioVhioVhioVhioVhioVhioVhioVxmoVhipVxmpVxmpVxmpVxmpVhipVhipVhipVxip + VxipVxiqVxiqVxiqVxiqVxiqVxiqVheqVxiqVxiqVxipVxeqVxenUhCsXB3gwaf///////////////// + ///////9+vbszazhs4LhtIPgsX7frnjdqnLcp23bpGjaomPZoGDYnVvXm1fXmlXXmVPWmFHWmFHWllDV + lk/Vlk7Vlk7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7Wlk7Wlk7W + lk7Wlk7Wlk7Wlk7Wlk7Wlk7Wlk7Wlk7Wlk7Wlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7X + lk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl0/Yl0/Y + l0/Yl0/Yl0/Yl0/Yl0/Yl0/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/ZmE/ZmE/Z + mE/ZmE/ZmE/ZmE/ZmE/amVDam1LcnVXdoVrfpV/hqmbksW3nuHbbtHk9MyM+NiZKRDf///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////o18uXUB2PRAyUTBeUTBeUTBeV + TRiVTRiVTBeVTBeVTRiVTRiVTRiUTBeWThmjVRmnVxqmVxqmVxqmVxumVxumVxumVxunVxunVxunVxun + VxunWBuoWRynWBunWBunWBunWBuoWBuoWBuoWBuoWBuoWRuoWRuoWRuoWRuoWRuoWRuoWRuoWRuoWRup + WRupWRupWRupWRupWBqpWBqpWRupWRupWhypWRuqWRuqWRuqWRuqWRuqWRuqWRuqWRuqWhuqWhuqWhur + WhurWhurWhurWhurWhurWhurWRqrWhqqWhqqWhupVRSoVBHfvqP////////////////////////+/fzt + z7Dhs4DitILhsn7grnjfqnLdqG/cpWrbpGbaoWHZnlzYnFnYmlfYmlXXmVTXmVPXmVLWmVHWmFHXmFDX + mFDXmFDXmFDXmFDXmFDXmFDXmFDXmFDXmFDXl1DXl1DXl1DXl1DXl1DXl1DXl1DXmFDXmFDXmFDXmFDX + mFDXmFDXmFDXmFDXmFDXmFDXmFDXmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDY + mFDYmFDYmFDYmFDYmFDYmFDZmVDZmVDZmVDZmVDZmVDZmVDZmVDZmVDZmVDZmVHZmVHZmVHZmVHZmVHZ + mVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHamVHamVHamVHamVHamVHa + mVHam1LbnFXcn1jeolzgp2HirGfksm/nunfbtXk9MyQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////r3tOzfleSRxCXUBuXUhyXURyYURyYURyYURyY + URyYURyYUh2YUh2YURyYUh2iWB6qXB+pXB+pXB+pXB+pXCCpXCCqXCCqXCCqXCCqXCCqXCCrXSGqXSCq + XSCqXSCqXSCqXSCrXSCrXSCrXSCrXSCrXSCrXR+rXh+rXiCrXiCrXyGrXiCrXiCrXR+sXR+sXR+sXiCs + XiCsXR+sXR+sXR+sXiCsXyGsXiCtXiCtXiCtXiCtXiCtXiCtXiCtXiCtXyCsXh+sXh+tXh+uXyCtXyCu + XyCuXyCtXh+tXh+tXx+tXx+tXx+rWxmwYSHcuJr////////////////////////9+/ju1Lbjt4bjtoXi + tIHhsXzfrnbeq3HdqG3cpWfbo2PaoWDZoF3ZnlvZnVnYnVjYnFfYnFbYnFbYm1XYm1XYmlXZm1XZm1XZ + m1XYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTY + mlTYmlTYmlTYmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZ + mlTZmlTZmlTZmlTam1Tam1Tam1Tam1Tam1Tam1Tam1Tam1Tam1Xam1Xam1Xam1Xam1Xam1Xam1Xam1Xa + m1XanFXanFXanFXanFXanFXanFXanFXanFXanFXanFXanFXbnFXbnFXbnFXbnFXbnFXcnVXcn1jdoVvf + pV/hqWTjrmrltXLovHrduH09NCQ+NidKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////07eeobD2WThabVyCbVyGbVyGbVyGcVyGcVyGcVyGcVyGcWCKc + VyGcVyKcWCGnXSOtYSStYSStYSStYSStYSWtYSWtYSWtYCStYSWtYCWuYSWtYiWtYiWtYiWtYiWtYiWt + YiWtYiWuYiWuYiWuYiWuYSSuYiSuYyWuYyWuZCauYyWuYiSuYiSuYiSvYiSvYiSvYiSvYiSvYiSvYiSv + YiSvYiSvYyWvYyWwYyWwYyWwYyWwYyWwYyWwYyWwYyWwYyWvYySwYySvZCWvYySwYySwYySwYySwYySw + YySwZCSwZCSwZCWuYB+tWxfct5f////////////////////////////v1rjjt4XkuIjjtoTitH7gsHjf + rXTeqm/dqWrdp2fdpGTbo2HbomDboV3aoF3aoFzaoFvan1van1raoFrbn1rbn1nbn1nbnljbnljbnlja + nljanljanljanljanljanljanljanljanljanljanljan1jan1jan1jan1jan1jan1jan1jan1jan1ja + n1jan1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbnljb + n1jcn1jcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjc + oFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjdoFjdoFjdoFndoVreolzfpV/gqGPirGjksW7muHXp + vn7dun89NSU+NyhKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////17ujFnHqcVh2gXiehXyihXyihXyiiXyiiXyiiXyiiXyiiXyiiXymiXyihXyip + ZCqyaCuxaSuxaSuxaSuxaSyxaCuxaCuyaSyyaSyyaSyyaSyyaSyyaiyyaiyyaiyyaiyyaiyyaiyzaiyz + aSuzaSyzaiuzaiyzaiuzayyzayyzaiuzaiuzaiuzayyzaiu0aiu0aiu0aiu0aiu0aiu0aiu0ayy0ayy0 + ayy0ayy1ayy1ayy1ayy1ayy1ayy0aiy1ayy1ayy0ayu0ayu0ayu1ayu1ayu1ayu1ayu1ayu1ayu1ayu1 + ayu0aSi2bC3Zso/+/f3////////////////////+/frx28Hmvo7lvIzkuojkt4PitH7hsHfgr3TfrHDf + q27fqWreqWjdp2bdp2XdpmTdpWPdpWPcpWLcpGHcpGHco2Ddo2DdpGDdpGDdpGDdo1/do1/do1/dol7d + ol7do17do17col7col3col3col3col3co13co13co13co13co13co13co13co13co13co13co13co13d + o13do13do13do13do13do13do13do13do13do13do13do13do13do13do13do13do13do13dpF3epF3e + pF3epF3epF3epF3epF3epF3epF3epF7epF7epF7epF7epF7epF7epF7epF7epF7epV7epV7epV7epV7e + pV7epV7epV7epV7epF7epF7epF7fpF7fpF7fpV/gp2HhqWTirGjksG3mtnPou3rrwoLfvIM9NSY+OClK + RTf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////8+fe/kGejYCinZy+naTGnaTGnaTGnaTGoaTGoaTGoaTGoaTGoaTGoaTGnaTGvbDK3cTO3cjS3 + cjO3cTS3cTS3cTS3cjW3cTS3cjW3cjW3cTS3cjS3czW3czW3czW3cjS3cjS3czW4czW4cjS4cjS4cjS4 + czW4czW4czW4czS4czS4czS4czS4czS4czS5czS5czS5czS5czS5czS5czS5czS5czW5czW5czW6czW6 + czS6czS6czW6czS6czW5czW6czS5czS5czS6czS6czS6czS6czS6czS6czS6czS6dDS6dDS5cjG1aSTb + tpP////////////////////////////z38bmv47nwI/mvo3mu4jlt4HjtX3is3risnfhsHPhr3Hhr2/g + rW3frGzfq2vfq2rfqmneqmneqmjeqmjfqmffqmffqmffqmffqmffqmbfqmbfqWbfqWbfqWXfqWXfqGXf + qGXfqGXfqWXfqGXfqWXfqWXfqmXeqWXeqWXeqWXeqWXeqWXeqWXeqWXeqWXeqWXeqWXfqWXfqWXfqWXf + qWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWTfqWXfqWXfqWXgqmXgqmXgqmXgqmXg + qmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXg + qmXgqmXgqmXgqmXhqmXhq2birGfjrmrksW7mtnPnunjqwIDsxofhwIc+Nic/OCpKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////9+vjY + up+sbDOtcTmvczuvczuvczuvczuvczuvczuvczuvczuvczuvczuvczu0dTy9ez29ez29ez29ez29ez69 + ez69ez69fD+9ez69ez69ez69ez69fD69fD69fD69fD69fD69fD69fD6+fD6+fD6+fD6+fD6+fT6+fT6+ + fT6+fT6+fT6+fT6+fT6+fT6/fT6/fT6/fT6/fT6/fT6/fD2/fT6/fT6/fT6+fT++fT/AfT/AfT7AfT7A + fT6/fT7AfT6/fT6/fT6/fT7AfT7AfT7AfT7AfT7AfT7AfT7AfT7Afj7Afj6/fTu/fTvbtZD9+vj///// + ///////////////+/v30483qx5rpxJXow5PowI3mvYnmvITluoLkuH7ktnzjtnnjtXjjtHXjs3TisnPi + snPisnLisXHisXDisHDisHDisG/isG/isG/isG7isG7isG7isG7ir27isG7isG7ir27ir27ir27ir23i + r23ir23isG3isG3isG3isG3isG3isG3isG3isG3isG3isG3isG3isG3isG3jsG3jsG3jsG3jsG3jsG3j + sG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3j + sG3jsG3jsG7jsG7jsG7jsG7jsG7jsG7jsG7jsG7jsG7jsW7jsW7jsW3jsG3jsG3jsG3jsGzjsGzjsGzj + sGzjsW3ksm/ltXLmuHXou3rqwIDsxYbuyo3jxY0+Nyk/OStKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////Wtpa1ekC2fUO3 + f0a3f0a3f0a3f0a4f0a4f0a4f0a4f0a4f0a4f0a3f0a7gUfDhUjEhkjDhkjDhkjDhkjDh0nDh0nDhkjE + hkjEhkjEhkjEhkjEh0jEh0jEh0jEh0jEh0jEh0jEh0jFh0jFh0jFh0jFh0jFiEjFiEjFiEjFiEjFiEjF + iEjFiEjFiEjFiEjFiEjFiEjFiEjFh0jFh0jFh0jFiEjFiEjFiEjFiEnFiEnFiEjFiEjFiEjFiEjFiEjF + iEjFiEjFiEjFiEjGiEjGiEjGiEjGiEjGiEjGiEjGiUjGiUjFiEfBfjjduJD///////////////////// + ///////259LryJrrypzryJjqxZTpw5Dpwo3owInnv4bnvYTmvILmu4Dmu3/lun3luXzluXzluHvluHvl + uHrluHrluHnlt3jluHjlt3jlt3jltnjltnfltnfltnfltnbltnbltnbltnbltnbltnbltnbltnbltnbl + tnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbl + tnbltnbltnbltnbltnbltnbltnbltnbltnbltnbmtnbmt3bmt3bmt3bmt3bmt3bmt3bmt3bmt3bmt3bm + t3fmt3bmt3bmt3bmt3bmt3fmt3bmt3bmuHbmuHbmuHbmuHbmuHbmuHXlt3Xlt3Tlt3TmuHbnunfovHvp + vn7rwoLsxofuyo3x0JPlyZI/OCo/OStKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////q2sfHmWTGlmHImmXImmXImmXI + mmXImmXImmXImmXImmXImmXImmXImmXKm2bQnmfRn2fRn2fRn2fRn2jRn2jRn2jRn2jRn2jRn2jRn2jR + n2jRn2jRn2jRn2jRn2jRn2jRn2jRn2jSn2jSn2jSn2jSn2jSoGjSoGjSoGjSoGjSoGjSoGjSoGjSoGjS + oGjSn2fSoGjSoGjSoGjSn2fSoGjSn2fSoGjSoGjSoWnSoGjSoGjSoGjSoGjSoGjSoGjSoGjSoWjSoWjS + oWjToWjToWjToWjToWjToWjToWjToWjToWjToWbSoGXkxqH9+vb//////////////////////v357d3x + 17Hx1Kzv06vv0abu0aTuz6Huzp7tzJzsy5vsypjsypfsyZXsyJXsyJTryJPryJPryJLqx5Lqx5Hqx5Hq + x5Hrx5Drx5Drx4/rxo/qxo7qxo7qxo7qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3q + xo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3r + xo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3sxo3sx43sxo3sxo3sxo3sxo3sxo3sxo3sxo3sxo3sxo7sxo7s + xo7sxo3sxo3sxo3sxo3sxo3sx43sx43sx43sx43sx43sx43sx43sx43syI7tyZHuzJTwz5fx0pvy1qD1 + 2qb23aY/OSs/OStKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////38Ofr2MHq1r7q18Dq18Dq18Dq18Dq18Dq18Dq + 18Dq18Dq18Dq18Dq18Dr2MDt2cDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu + 2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu + 2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu + 2sDu2sDu2sDu2sDu2sDu28Du2sDt17v16Nf////////////////////////////9+PH57t357t357tz5 + 7tv57dn57Nn57Nj57Nf469b469X469X46tT46tP46tP46tP46tP46tL46tL36dL36dL36dL46dH46dH4 + 6dH46dH46dH46dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dD3 + 6dH36dH36dH36dH36dH36dD36dD46dD46dD46dD46dD46dD46dD46dD46dD46dD46dD46dD46dH46dH4 + 6dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH4 + 6dH46dH46dH46dD46dD46dD46dD46dD46dD46dD46tH56tL569P57NT67tb78Nj78dr889vn0p4/OStK + RTf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////79u/u3MLs2Lzt2b7t2b7t2r7t2r7t2r7t2r7t2r7t2r7t2r7t + 2r7t2r7t2r7v277w3L7w3L7w3L7w3L7w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L7w3L/w3L/w + 3L/w3L/w3L/w3L/w3L/w3L7w3L/w3L7w3L/w3L/w3L7w3L7w3L/w3L/w3L/w3L7w3L7w3L7w3L7w3L7w + 3L7w3L7w3L7w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3b/w3b/w3b/w3b/w3b/w3b/w3b/w3b/w + 3b/w3b/w3b/w3b7w3L726dT+/Pn////////////////////////9+fL68d/679z679z67tv57tn57tj5 + 7df57db57dX57NX57NT57NT57NP569L569L569L569L569L569L56tH56tH56tD56tD56tD56tD56tD5 + 6tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD5 + 6tD56tD46tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD5 + 6tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56s/5 + 6s/56s/56s/56s/56s/56s/569D57NH67dL67tP779X88df88dj88dj77c3UwJBHQjT///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////9+fX158/z48f05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn1 + 5cr25cr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr2 + 5sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr2 + 5sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr2 + 5sr15Mb579v////////////////////////////++/X89eP89eT89OL79OH78+D78+D78t778t778t37 + 8dz78dz78dv78dv78dr78dr78dr78dr78dr68dn68dn68Nn68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj6 + 8Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj6 + 8Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj7 + 8Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nf78Nf78Nf78Nf78Nf7 + 8Nf78Nf78Nj78dj88tn88tr88tr88tr88tr88tr88tr77s7Uw5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAGAAAAAAAgBwAAAAAAAAAAAAAAAAAAAAAAABfWU5SSz9SSz9S + Sz9SSz9SSz9SSz5SSj1SSj1SSj1SSj1SSj1SSj1SSj1SSj1SSz9STURTUlBTU1NTUlJMRDlIPS1IPi9I + Pi9LQDBOQjFOQjFOQjFOQjFOQjFOQjFOQjFOQjFOQjFOQjFOQzFOQzJORDNORDNORDNORDNORDNPRDNS + TklTU1NTU1NTU1NeXl7p06l5bVZHQDNHPzFHPjBHPS9HPS5GPC1GPC1GPC1GPC1GPC1GPC1GPC1HPC1H + PC1HPS9HQjlISEdISEhGREI6LyA4Kxo4LBw4LBw+MB1BMR5AMR5AMR5AMR5AMR5AMR5AMR5AMR5AMR5A + Mh5BMiBBMyBBMyBBMyBBMyFBNCFCMyBDOClIR0ZISEhISEhQUFD86MH96ML12ajmyJflxJHlwozlv4jk + vYbkvIXkvIXkvIXkvIXkvIXkvIXkvIXlvIXlvojlw5Tp2cPr6+vr6+vaz8GqfEipe0apfEmtgErIkU7N + k0/Lk0/Lk0/Lk0/Lk0/Lk0/Lk0/Lk0/MlVHNl1bNmFjNmFjNmFjOmlrOm1rPnlvRn1rhza/q6upISEhT + U1P858D85b/52qf40pr3zZP2yY32yIn1xob1xYX1xYX1xYX1xYX1xYX1xYX1xYX1xYT1xYb2yIv306H9 + 8uP////////YvqKncTWqdz6pdz64gEHWk0fXk0bWk0bWk0bWk0bWk0bWk0bWk0bXlEjYl0rYmE/YmVDY + mVDYmlDZnFDbnlTeoljls3Lw6uJISEhTU1P857/64rn41Z/2zZL1yIr0w4P0wH/zvnzzvXrzvXrzvXrz + vXrzvXrzvXrzvXrzvXrzvXrzvnz0w4X30qX+9/D//////v6/mnKaYCSgajGeaTG4eTTTiTnRiDnRiDnR + iDnRiDnRiDnRiDnRiDnSijvSizzSjD3SjD3SjT7Uj0HWk0fam1DdoFPjwplISEhTU1P75r3637X20Zr0 + yIvzw4Pyvnzxu3fwuXTwt3Lwt3Lxt3Lxt3Lxt3Lxt3Lxt3Hxt3Hxt3Hxt3HxuXXzwIH32LH//fr////2 + 8OumdkSSWByWXyaWXya9dSzPgS/Mfy7Mfy7Mfy7Mfy7Mfy7Mfy7Mfy7MgS/MgS/MgS/OgjLQhjbTiz3W + k0fbnFLWoVxGQz5TU1P65Lr53bH1zZXzxIXxvXvwuXXvtm/us2vusmrusmnusmnusmnusmnvsmnvsmrv + s2rvs2rvs2rus2rvtW/xvoH438H////////m2cqRWSCNUheOVRyVWh7BcyXKeCbJeCbJeCbJeCbKeSfK + eifJeCbJeCbJeCbJeSbKeynMfy7QhjbUjkDZmE3UmVFDOClTUlL64rf43K/0ypDxwIHvunfutXDssWrt + r2fsrWXsrWXsrmXsrmXsrmXsrmXsrmXsrmXsrmbsrmbsrmXsrmbtsm3wv4b66tj////////NtJqGSg2K + UBWITxebWxrGcyHHcyHGcyHHdCDSgCrOfCfGcyDHdCHHdCHHdCHIdyTKeynOgTHSijvXlUnTmVRAMRxR + TEb54bb22a3zyI3vvX3tt3Tssmzrr2fqrGPqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hrq2Hrq2Lrq2Lrq2Hr + q2HrrGPssW3xxJD88+n///////+1kGyBQgeJTxaGTRWjXhnIcx/Gch/Gch7JdyLHcx/Gch7Gch7Gch7G + ch7HdCHJeSbMfy7RiDnWk0bSmFJAMR1ORDT54Lb22azyx4zuvHzstnLrsWvprWXoqmLpqWDpqWDpqWDp + qWDpqWDpqmDpqmDpqmDqqmDqqmDqqmDqqmDqqmDqrGLss3DyzqT++/j////28e2ebkCDRg2ITxeHThaw + Zh3KeizJfTLGciDGch7Gch7Gch7Gch7Gch7HdCHJeCbMfy7RiDnWk0bSmFJAMR5OQjD44LT22avxxoru + u3rstXDqr2nnq2PmqWDnp17nqF7nqF7op17op17op17op17oqF7oqF7oqF7oqF7oqF/oqF/oqF/prWTs + tnb12bn////////p3tKNVR+CSBGFTBeVVRfFfzvMiEjGch/FcR7Gch7Gch7Gch7Gch7HdCHJeCbMfy7R + iDnWk0bSmFJAMR5OQjH43rT216rwxYrsunnqsnDorWjmqGLmpl7lplzmplzmpVzmplvmplvmplvmplvm + plvmp1vmp1vmp1vnp1vnp1znp17nqF/orWbruX745tH////////Su6aWUxKuYxu/biDEcyLFcyLFciHF + cR7FcR7Gch7Gch7Gch7HdCHJeCbMfy7RiDnWk0bSmFJAMR5OQjH33rT11qrvxIjruHjosW7nrGblp2Dl + pFzkpFrkpFrkpFrkpFrkpFrkpVrkpVrlpVrlpFrlpFrlpVrlpVrmplzmpl3mplzlp17orGjtv4r78eT/ + ///////dq3zCaBPEcSDDcCDEcR/EcSDFcSDFcR7FcR7Gch7Gch7HdCHJeCbMfy7RiDnWk0bSmFJAMR5O + QjH33bP01anuwobqtnXnr2vkq2Pkpl3jpFnioVfioVfiolfioljjoljjolnjo1nko1nko1nko1nko1nk + pFnkpVvkpVrkpVrkpFvlpl7nrWrvyZ39+vX////8+PPPjU7AaRXDcCDDcCDEcSDEcSDFcR7FcR3FcR7F + cR7HdCHJeCbMfy7RiDnWk0bSmFJAMR5OQjH33LLz1aftwYXptXTmrmrkqGLipFzholjhoFbhoFbhoFbh + oVbhoVbioVfioVfiolfiolfiolfjolfjo1jjo1nio1njo1jjo1jjo1rkpmHnsHPy1rX+/fz////26d3G + eC7AaxrDcCDDcCDEcSDEcSDEcB3FcR7FcR7GcyHJeCbMfy7RiDnWk0bSmFJAMR5OQjH33LDz1KbswIXn + tXPlrWnjp2HholvgoVffn1Xgn1Xgn1Xgn1Xgn1Xgn1Tgn1Tgn1XhoFXhoFXhoVbhoVfhoVfhoVfholfi + o1njpV3kqGXnsXTux5v68eb////////t1b7DcSLBbh7DcCDDcCDEcCDEcB7EcB3FcR7GcyHIdybMfy7R + iDnWk0bSmFJAMR5OQjH226/y06Xrv4Tns3Ljq2jipV/goVnfnlXenVPenVPenVPenVPfnVPenVPenVPf + nlPfnlPfnlPfn1XfoFbgoFfgolnhpF7jqGblsXXrwJDz2Lr88+j////////26d7jvpvGeC7BbRzCbyDD + cCDDcCDEcB/EcB3EcB3GcyHIdybMfi7QhznWk0bSmFJAMR5OQjH22q/y0qTqvoLmsXDiqmbgpF7eoFfd + nVPdm1Hcm1HcnFHdnFHdnFHenFHdnFHdnFHdnVHenVLfnlXfolrhpWDjq2vnuIHuzqj46Nf///7////8 + +vjpz7PSmWLCdCq9aBfAbR7Bbh/Cbx/CbyDDcCDDbx/Dbx3EcB3FciDHdiXMfi7QhznVkkbTmFJBMR5O + QjH22q7x0qTqvIHksW/iqWTeo13cn1bcnFLbmlDcmlDcmlDbm1DcmlDcmlDcm1Ddm1HdnVTeoVrgpmPk + sXbrxJfz3cP99u7////////w3s7brYPIg0K9bB68Zha+ax/AbiLAbiHBbh/Bbh/Cbx/CbyDCbx/Dbx3D + bx3EciDHdiXMfS3SiDnYk0bPl1I+Lx1KPzD22q3x0aPpvIDkr27gqGPeolzbnVXam1HamU/amU/amE/a + mE7amU/bm1Lcnlbeol3hqWnmuITv0a357N7////////48OnjwaPMjVS8aiC5YxS8aBu+ayC/bSG/bSG/ + biK/bSHAbR/Bbh/Bbh/Cbx/Cbh7Cbh3Dbx3GciDKdyXKfS3Ffza+g0KzhEw4KxxIPi/12a3w0aLou3/j + rm3fpmLcoFrbnFPamU/Zl07Zl07ZmE/amlPcnlnepGLisHfqxZv14sz++/j////+/v7r077Sm2u/cSy4 + YRS4Yxa7aB68aiC9ayG+ayG+bCG/bSG/bSG/bB+/bB/AbR/Abh/Bbh/Cbh3FbxzEbx28bB+sZiGfZCef + aTCodj2ugUo4LBxIPi/12a3v0KLnu3/irmzfpWHcn1nZmlLZmE/ZmFDanFbcoF7fqm3mvIzw1rj68OX/ + ///////z5djbsYzEgES3Yxi1XQ+4ZBi6Zhy7aB67aSC8aiC8aiC9ayG9ayG+ayG+bB+/ax6/bB/AbR/C + bx/Dbx+8axysYhmaVxeMUheLUxyUXSWeaTCqdz6ugUo4KxxIPi/12a3w0KLnun/irmzepWHcoFvanVjb + n1vdpGXjs33ryqX25tT////////69vLlyK/LkFu3Zh2yWgu0XxK3ZBq4ZRy4ZRy5Zhy6Zx27aB67aB+8 + aR+8ah+9ah+9ah6+ax7AbB7Cbh6+bB6yZR2fWRmMTxWESxSEShSITxeOVRyVXiWeaTCqdz6ugUo4KxtI + PS712q/w0KLnun/ir2/fqmvfqWvhr3bnwJTy3MT99/H////////u28vToHW8cTCyWxCxWg61YBW2Yxi3 + Yxm3ZBu4ZRy4ZRy4ZRy5Zhy6Zx26Zx27aB27aB29ah2/ax2/ax61Zh2iWxqQUheFSxWCSROEShSGSxSH + TBSJTxeOVByVXiWdaC+nczmqekI4KxtKQjf127Lw0qbovobmuILowZTv1Lb47d7////////17OTct5fD + gkuyXxeuVguyXBK0YBe1YRm1YRm2Yhm3Yhm3Yxm3ZRy4Zhy5Zxy4ZRy5Zhy6Zx29aB29aR22ZRymXRqV + VBiGSxaBSBaDSRWFShOFSxOFSxSFSxSGSxSIThaMURmPVRqaYyi0hlXLsJFEQT1TU1P23rny2bTx1rL2 + 5tT//fv////9+/rn0LvMlWi0ZCOtVAuuVg2xXBWyXxiyYBmzYRm0YRm0Yhm1Yhm1Yhq2Yxm4ZRm4Zhu5 + aBy6Zhy7Zhy4ZRysXxuZVRiISxaBRxWASBWCShWDShSESROFSROFShOFSxOEShGARAuCRQuSWya0jGTc + ybX5+Pfz8/NIR0VTUEv78eL9+fL////////059zYr4u9dz6uWhSrUwquWRSwXRixXhmxXhmyXxmyXxmz + YBqzYRq0YRq1Yhm1Yhq2Yxq4ZRm7Zxm6ZhqwYRucVhiKTBaARxR+RhSBRxWCSBWDSBSDSRODSRKESRKD + SBKBRQ1+PwWESRGdbkDKsJfv6eP////////97dnu0q5GPC9SSj7////9+vbs1L7TonW8dTexXxuvXRmv + XRquWxmuXBmvXhqwXhuwXx2xXx2yYB2zYh6zYR20YRy1Yhu3Yxu3ZRyyYxyjWheRUBSCRhJ9RBJ+RRJ/ + RhKARxKBRxOCSBKCRxKCRxGBRQ59PwZ/QgqTXzC5l3nh08b9/v//////8uT53Lz1ypr0wonpu4JGOipR + STvy27/huo/KjVC+dze5bzC1aCixYSCvXRuuWxmuXBuuXRuvXh2wXx6xYCCyYSG0ZCO1YyG2ZCCzYh6n + WxuVUhqETBp+RRN9RBN/RRKARRKARRKARRGARhGARhF/RQ98QAh8PgaJUB2pgFrUwK349/f/////+vL6 + 4Mbzx5jwuH7wtXTwtnPxunjouHxFOilRSDrnvYvdsYLMkVfBfUG5cDO1aCmxYSCuXRusWxmtXBuuXR6v + Xh6wYCCxYSKyYySzZCarXyOaViCJTR1/SBp8Rhd+RRWARRSARRSARhN/RRKARRJ/RBB8QAp5OwN/RRCb + bULIrpfv6eT////////759H0zaTwuYHtrmzsqmTsqmLtrWTvsWrxuHTot3tFOShRSDrnwZLes4XMkVjB + fUC5cDK0ZymvYCCtXBysWxqtXBuuXR6vXyGwYCOxYiOyZCWYWCaASiF+SB9/SR+ASR2ASRx/SBl/RRV/ + RRSARBJ+Qg95OwZ7PgqRXTC4l3ng1Mj+///////97+D21rTwvovtsHDrqWTrpl7qo1nppFjrpVvsq2Hu + sGnwuHPnt3lFOShRSDnnwZLes4XLkFjAfUC5cDK0ZyivYCCsXB2rWhutXB2uXh+vYCKwYSSxYyezZSms + YyyJUSeATCOCTiOBSyCBSh6ASRx+RhZ6Pgt5PAiGTh6of1zUwLD5+Pj/////+fH43sPwxJTssnbqqmXp + pl7oo1nooVbooVXooVToo1fqpVvsqmHtr2nvuHPnt3lFOShRSDnnwZLdsoXLkFfAfEC4bzOyZyivYCCt + XB2rWhysWx+tXiGuYCOwYieyZCq2aC68cDW2bTSTWyyDUSaCTSN9RRp5PhCASBqcb0rIsJvw6+b///// + //765c/xy6Hstn7pq2nopl/nolnmoFbmoFTmn1Pmn1TnoFTnoFTnolbopFrqqWDsr2nut3PltnlFOShR + SDnnwJLdsoXLkFfAez+4bzOyZiiuXyGsXB2rWh2sXCCtXiKuYCawYiq2aTC/d0DGhlLKiVW/fEWWWimA + SiCTZEK5m4Pi187////////97t701LLtvInprm7mpmHmolvln1bkn1TknlPlnlPlnlPlnlPln1Pln1Pm + n1TmoVbnpFrpqWDrr2nttXPltnlFOShRRznjvZDcsYXKkFe/ez+4bzKxZSitXiGsWh2rWh2sXCCtXiOu + YCiyZSy8cz3Jj17WrobZt5DUonbSpYHayLv6+fn/////+PH23sTtw5XpsXbmp2Xlo13koFfjnVTjnVLj + nVLjnVLjnVLknVLknlLknVLknlLknlLknlPloFXlo1nnqF/qrmjstXLktXhFOChRRznhuYvYroPJjlfA + e0C3bzKwZSetXiCrWh2pWR2rXCCsXSKuYCezZi6/ekbSpHnt4c/38+r7+PT///////7559Pwy6fot4Pl + q27jpWPjoVvinVXinVPinFLhnFLhnFHinFHinFHinVHinVHinVHinVHjnVHjnVHinVHkoFTloVjmp1/o + rWfrtXHktHdEOChRRzns1LfUqX3BiFS8eUC4bjKwZSesXSCqWR2pWB2qWyCrXSKtXyayZCy+d0PPnnPv + 49P//////Pf348zuxZvmsHrjqGrho2HgoFvgnVfgnVbgm1Phm1Hhm1Hgm1Hgm1HgnFHgnFHhm1HhnFHg + nFHhnFHhnFHhnFHhnFHin1PkoVflpl/nrGfqtXHitHdEOChQRzn////n0Li8hE6xcTuzbDKwZCesXSCp + WRyoVxupWR+qWyKsXiavYim4bjjEhVPPnnHp0r3//fvy1bXmsXzhpWnfoF7enlnenVfenFbfnFXfm1Tf + mlHfmlHfmlDfmlDfm1Hfm1Hfm1Hfm1Hfm1Hfm1HfnFHfnFHgnFHhnVPioVfkpV3nrGbps3DitHdEOCdQ + Rzn////////gxq2tbTemYiyrYCisXB+pWBynVxuoWB2rXCGtXySuYSiyZiy4bzi+eEO+eUPctpr+/Pjs + x6HhqG3foWDdnVjdnFfdnFbdm1Xem1TdmlHdmU/dmU/dmU/dmVDdmlDdmlDdmlDemlDemlDem1Dem1Df + m1DgnVLhoFbjpF3lqmXos2/hs3ZEOCdQRzn////////////fxrGmZC+cVh+kWB+pWBunVhqpWhyrXB+s + XiKtYCWuYiixZSqzZi2zZy6vXyTTqYv++vfsyaLfpmndn1zbm1bbmVTcmlTcmVPcmVHcmE7bmE7bmE7c + mU7cmE/cmU/cmU/dmk/dmk/dmU/dmk/dmk/enFHgn1bio1zkqmTnsm/gsnVEOCdQRzn///////////// + ///izLqjYS2WThehVh2pWRyrXR6rXh+tXyKtYSSvYievZCmwZCqwZi6vYSirWRzRpYX9+vfryqXfpmnc + n13bm1bbmlXbm1Tbm1PbmVDbmVDbmVDbmVDcmlDcmlDcmlHcm1Hcm1Ddm1Ddm1Ddm1DdnFLfoFbhpV3k + q2Xns2/gs3ZDOChQRzn////////////////////o18mlZTSVTRWiWCCuYCKuYSOuYSWvYyewZCixZSmx + ZSuxZy+xZSyxYiesWxzPn3v+/PrtzanfqGvcoV/bnVnbnFfbnFbanFTbm1Pbm1Pbm1PcnFPcnFPcnFPc + nFTcnVTcnVTdnVTdnVXenlbfo1vhp2HkrWnotXPgtXlEOShQRzn////////////////////////t4NWs + cUOaUxqnYSeyZyqyaSuzaiy0ay21ay61ay+1azK1ajG1ai+0aSywYSHPn3j8+vfv0rDgrXDepGTcoV/c + oF3cn1vcoFrcoFrcoFrdoFrdoFrdoFreoVreoVrdoVvdolveolvfo13hpmHjq2flsW7ouHjhuH5EOSlQ + SDr////////////////////////////z6eK3glaiXiSuazK4cTS4cza5dDa5dDe5cze5czm6czm5cze5 + cze6cTS2aSjRoXj9+fbw17fjsnffqmvfpmbfpWLfpWHfpWHfpWHfpWHfpWHfpWHfpmHgpmHgpmLgpmLg + p2LhqWTirGjlsG3ntXXqvX7jvINEOipQSDv////////////////////////////////38u3FmG+sbDK1 + eD6/fULBf0LBfkLAfULBfUTBfkPBfULBfUPBfkLBfkG+dzbUpHr9+vjz3L/luIHisXXirm/irWzirWzi + rWzirmzirmzirmzirmzirmzjrmzjrmzjrm3ksG/ls3Lnt3fqvH7sw4flwYpFPCxQSDr///////////// + ///////////////////////7+fbWspC+h1TEj1vLlF/NlGDMlGDNlWDOlV/OlWDOlV/OlV/OlmDOll/M + j1Xcs4r8+fb25M3rxpXpv4nnvYTovYTovYTovYTovYTovYTpvYTpvYTpvYTpvYTpvoTqvoXrwIjtxY3u + ypLxz5rz051FPS5QSDr//////////////////////////////////////////v7y5djp07zq1b/t18Du + 18Du18Du2MDu2MDu2MDu2MDu2MDu2MDu2MDt1bzy4tD+/Pv89ez46tb36NL359D358/35s/35s/35s/3 + 5s/35s/35s/35s/358/459D46NH56tP57NX77tf779ny1KBNRTf///////////////////////////// + ///////////////////37eLw3cfx3sjz38nz4Mnz4Mnz4Mnz4Mnz4Mnz4Mnz4Mnz4Mnz4Mnz3sb359b+ + /Pr99+7679367tr57dj57df57Nf57Nf57Nf57df57df57df57Nf67df67dj779n779r779r779n56s7f + x58AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABABgAAAAAAIAMAAAAAAAAAAAAAAAA + AAAAAAAAzr6dd21Zc2lXc2lXc2dVcmdUcmdTcmdTcmdTcmdUc2dXdG9odHR0bWdeY1M8Y1Q+aFdAbFtB + bFpAbFpAbFpAbFpAbFpAbFtBbFtDbFxEbV1FbV5Fb2JNdHJxdHR0e3t7/ejF+N6x89ep8tKg8c+a8cyW + 8cuU8cuU8cuU8cuU8cuU8tOm9vDn9/f30rWUtohPvI9Z059e26Vg2qRf2qRf2qRf2qRf2qZi26hn3Klo + 3ats365u4K9s7dm48vLyoqKi/OnH+96u+dWg99CX9suQ9siL9ceI9ceI9ceI9ceI9caH9ceJ+dmu//36 + +vf0vZRmqXU7tYFG1ZRL2ZdL2JZL2JZL2JZL2JhM2ZpP2ZxU255X3aNa4Kdf57Z2+fLop6en/OnG+Nij + 9s+V9ciK88KC8r588r168rx68rx68rx68rx68rx6879/+dy7////7ePYpHE6mmUssHU00og60og50Yg5 + 0Yg50Yc50Yk60Ys80o0/1pNG2pxS36NZ7Myfp6en+ubB9tKc88eL8sCA8Lp377Zx7rVu77Ru77Ru8LRu + 8LRu8LRu77Ru8bt8+uXM////18OtkFYbkFkgsm4ozn4sy30szH4tz4Ivy30szH0szYEw0Yg51pJG3J9V + 4KxnpZ2S+eS+9M6W8cKE77p37rRv7K9o7K1m661l7K1l7K5l7a5l7a1m7a5l7K5l8LyA/O/i////vZx6 + hUgMjVMauG0hynYjynglzHwnyHYjyHYjynknzYEw0os92ZlP3aVfnodn+eG78suS779/7LZy6q9p6axj + 6alf6alf6alf6Klf6alf6apf6qlf6alf6qth8MOP/vr0+vn3pHZKfkMKjlEXwXUsynwxxXEdxnIexnIf + yHYjzH0s0Yg62JdM3aZhm4BY+OG68cmQ7bx967Nw561m56hf5qZc5qZc5qdc56Zc5qdc56dc56dc6Kdc + 56de6Kxk8s+n////7eTbmmApoVkTv3IoyHgsxXEexXEexnIeyHYjy30s0Yg52JZL3aZgm4FZ9+C58MeO + 67t66LFt5qpj5aRc5KNZ5KRa5KRa5aRa5aVa5KVa5aVa5aZb5qZc5aZc6K1p9d3A////69C2xG4bxG4d + xHAfxXEgxXEexnIeyHYjy30s0Yg52JZL3aZgm4FZ99+47saN6rh55q9s5Khh4qNa4qFW4aFX4qFX46JX + 46JX46JX46JY4qNZ46NZ46NY46JZ57J0+OrZ////37OKwGoXw3AgxHEgxHEfxXAex3Ujy30s0Yg52JZL + 3aZgm4FZ99637cWL6LZ25Kxp4aZe4KFX359U4J5U359U4J9U4KBU4J9U4aBW4aBW4aBV4aJX46Zh6LZ9 + 9uDH/////vv5zoxMwGoYw3AgxHAfxHAdx3Ujynws0Yg52JZL3aZgm4FZ9t227MOJ57V046tm4KNc3p9V + 3ZxR3Z1R3ZxR3ZxR3ZxR3p1R3p5U4KFZ46tq68GR9uLJ/vjx+PDn5cSj0JNZw3QpwW0dwm8gwnAgxHAd + xnQiynss0Ic52JZL3qdgm4FZ9ty168GH5bNz4all3aJb3JxU25lP25lP25pP3JpO3JtR36Jc5bV98NSy + +/Ll/Pj07tnH16V4xHs1vGcYvGcYv20gwW4fwm8fwm8fw24dxnMizHwr0oc51JNL0Z5ek3pY9dy06sCG + 5LFx36dj3Z9Y2ppR2ZdN2phO25xU4Kpr68SY9+bT/fn09Oje3reVx4NGu2cduWIUvGgcvmsgv20hv20g + wG0fwW4fw28exXAdw3Eiu3IpsnU0sn9EvJBajndX9du06b+F47Bv36Vh25xW2ppT3KFf5LeD8ti8/PXs + +vTu58uzzZRhu2sktV0QuGEVumYcu2kgvGsgvWsgvmwgwGwewm4fwW0ft2gcpV0YlVcakVsim2cwrHtD + vZBajnZV9du16b+F47Bw4Ktr4rJ67cul+u3d/fj0797Q1qeAvnQ0s1wRs1sNtmIXt2UcuWUcuWYcu2gd + vGkevmoev2seuWgdqV8blVUYh0wVg0kUiVAZkVohnGYtqHQ6uoxVkXxg9d2368WS7c2j9uXP/fny9u3n + 3rygw4NNs18Yr1cLs10StWEYtmMZt2MZuGUbuWYdumYcvGgduWYdq18bmVYYiU0WgkkVgkkThEoThEkS + hUkQjFEXom85xqR/5dfFpqOg+u/e/Pbr/Pj07NjH0J91tmoqrFUMrlYPsV0Wsl8Zs2EatGEatWIat2Qa + umcZuWYbrmAbnFYYik0WgUcVf0cUgkkUgkgRgEQNfj8FhEoSoXVJy7Oc8Ojf/vbt+ujQppeD+/bv6c6y + zpdjum8usF8asFwarlwZr14bsV8dsmAetGIftmMdtmMcsGEbolsZj08UgUYSfUQSfkUSgEYSf0QOfD4G + f0EKkV4uuZl74dTH+/Ts/+3Z+dWs9ceP8cWKpJBx6Meez5RXwn4/unEztGYmsF8erlwbr14esGAgsmIi + sWIkpVwhlFIdhEkZfUUVfUQTf0QSfkMQez4HeTwEhk8cqYNg1MGx9u7n//Hh+tey8byC7rBt8LFt8bp4 + 8MOIpI9v58SZ0ZhgxIJFuXEzs2Unrl4frVwdr14hsWEjs2QmlVYlfEkgfkkff0kdf0YXfEEOeDoFf0UT + mm1Fxa2X7eTc/fPo/OHE8cGN7K1p6aNZ6qNY66he7bBq8Lp38MOIpI5v58Sa0Zhgw4FGuXEzsmUmrl0g + rFwfrl8isGIntWcts2kxk1kqgE0hekIVfEMVj101t5h+4tXJ+/Pr/unT88md67Bx56Na56BU5p9T559T + 6KJX6qde7LBp7rl378KHo45u58Sa0Zhfwn9EuHEzsWQnrl4hrFwgrmAlsmUsvnlCzJFfxYZRn2k+qYdt + 1cS39u/p/vDg9tSw7LZ95qRf5J5U5J5S5J1S5J5S5J5T5Z9T5qJX6Kde669p7rh27sKHo45t4r+XzpZe + woBFuG8zsGMnrV0hq1whrV8mtWkxzJdo69vF79/O9+zk/fTq+eHG7b+O5qlq459X4pxS4ZxR4pxR45xS + 4p1S451S451S4p1S46FW5qZd6a1n7Ld27cGGoo5t7djAxIxXvXxCuG8zr2Imq1whqlsgrF0ltGcvyZFi + 7+HS////9dq957N94aNi355Y35xW35tT4JtQ4JtR35tR4JxR4ZxR4ZxR4ZxR4ZxR4p9V5KVc56xm6rZ1 + 7MCFoo1s////4MSosXM8sGkvsGMnq1wgqVsgrF4jsGMpuXE6w4RR4cCo9+PO46xz3p1Z3JxW3ZtW3ppU + 3ppQ3plP3plP3ZpQ3ppQ3ppQ35pQ35tQ4J5U46Nb5qtm6bZ06r+Eoo1s////////3sOsqGYxqF4krV8j + rGAir2Ilr2QosmYssmctsmQr17GW9eTO4q1y3J1Y3JxX3JxX3ZxU3JtS3ZtS3ZxT3JxT3ZxT3ZxT3p1T + 359W4aVd5Kxo6bZ26sGGoY5t////////////4cu3pmYyp10jsWcqsmkrs2outGswtWwzs2owsWMn17CR + 9uXS47F33aBd3Z9c3Z9b3Z9Z3Z5Z3Z9Y3Z9Z3qBZ3qBZ36FZ4KRc4qlj5rFu6rt768OKoo9w//////// + ////////59XFrXE+rGcruHI3unU4unY5u3U6unU8uXI3uG0v2bCQ9+fW5reC36dl36Zl36Zi36Zi36Zi + 36Zi4KZj4Kdj4Khk4atm5LBt57d268CD7MmRopFz////////////////////7uDUvIZWt3Y7w4JHxINI + w4JJw4JJw4JIw4JGwXw+3LWT+Ova6MCO4rFz47Bv47Bw47Bw47Bw47Bw47Fw5LFx5bR057h667+D7seO + 78+aoZBx////////////////////////9e3kz6R4x5BZ0Jli0Zli0Zli0Zpi0Ztj0Zpi0JVa48Ge+e/h + 7s2g6sCI6sCH6sCH6sCH68CH68CH68CH7MOK7seP8MyW89Of9dilp5Rz//////////////////////// + /////Pn27tnD6tGz7tS27tS37tS37tS37tS37tS27tOy9OXR/fjw+erT9+bL9+bJ9+XI9+XI9+bI9+bI + +OfJ+ejL+erO+erO+enN+N+2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABABgAAAAAAEADAAAAAAAAAAAAAAAA + AAAAAAAAxridXlZHWE9BWE9AWE8/WVNIWFdUS0I1TkEwU0UyU0UyU0UyU0Y0U0UzV1BGYmJi+uXD8caN + 6bd56bd56bd36bV089u72s/BmmkyvHs2y4Y7yYQ7yYc+yoc9zZVUjoqD+N+577t77K1l7K5k7K5k7K1i + 7a9m/+zVxKyVjUwLwG8eyXYixnQfx3QhzIQ1jHhe992367V15qhf56de6Khe6Khe6KZZ7LRy/PLlrohj + qV0UyXclxnIexnMfzIY7iG9N9dq157Jx4qNY4qFX46JY5KNY5KNY459Q7b2G+fDmzYxNwmwaxXEexnMf + zYY8iXBO89iy461t3p5U3p1S3ptQ3ptN4KFX6Ld78M+n9eTT1qBuwGoYw3AexnIez4c8iXBO8tev4Kln + 2ZZK2ZdL4Kdk68KT79O15MKi0ZppwHMsvmobw3AgxG8fvm0dt3o4fWdK8NSs4Kxt5LV/7M2q6Mqt1aZ9 + wXo8t2IXuWIUvmkcvGoermIcmlYViEkMlGEsemlS9+fS7te927WVxIZTtGMesVkNt2AUuGUarmAbnFYX + iEkQez8HgkwYoHVNzbKXkol969a8wYJOqlUQq1YSsV8drF4fnlYai0sSejwHeUAOkGE2uJZ43sKm886o + 88SPlH9k3riQuHI2rFoarV4gs2QomFcjekMYhFMrqYNj0bWa7c2r9MKO7qxm6aBS56xmkn1g3LiSuHI3 + qlkbq1sgvntH27eVzbCY5Mmv8ceb7LFx5Z5S45pN5J1Q5J9T5atpkX1g6tfErWkwp1QWqlofunRA5sy2 + 99m44qJd3phO3phN35lQ35tQ35tQ4J1R4almkHxg////17ujnE8UqVcZrmAjr2Eo0aJ757mJ2phQ2pdP + 25lP25lP25pQ3ZpR4Khmjntf////////3si1snQ/uHU8undAuXU+2K+L6sab36lp36pp4Kpq4Ktr4axs + 5rh9loVp////////////9u/n5s60586y586y582w8uLQ9+rX9eHF9eHF9eHF9uLF9+fM9+S/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + + 513, 17 + + + 620, 17 + + + 738, 17 + + + + AAABAAQAAAAAAAEAGAAoIAMARgAAADAwAAABABgAqBwAAG4gAwAgIAAAAQAYAKgMAAAWPQMAEBAAAAEA + GABoAwAAvkkDACgAAAAAAQAAAAIAAAEAGAAAAAAAACADAAAAAAAAAAAAAAAAAAAAAABWU0hLRzxLRzxL + RzxLRzxLRztLRztLRztLRztLRztLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpL + RzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpL + RzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpL + RzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRzpLRztLRztLRztLRztLRzxLRzxL + Rz1LRz5LRz5LSD9MSEBMSEFMSkZMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExM + TExMTExMS0pIQzhFPS1GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9GPi9G + Pi9GPi9GPi9GPi9GPi9HPi9IQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBI + QTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBI + QTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBI + QTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBIQTBJQTFJQTFJQTFJQTFJQTFJQTFJQTFJQjFJQjFJ + QjFJQjFJQjFJQjFJQjFJQTFJQTFJQTFJQTFJQTFJQTFJQTFJQTFJQjFJQjFJQjFJQjFJQjFJQTBIQTBI + QTBIQTBIQTBIQTBIQTBIQC5JRThMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExM + TExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExXV1fdzqdAPDBAPC9APC9APC9APC9AOy5A + Oi1AOi1AOixAOSxAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStA + OStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStA + OStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStAOStA + OStAOStAOStAOStAOStAOStAOStAOStAOStAOSxAOSxAOSxAOSxAOSxAOi1AOi1AOi5AOi9AOzBAOzBA + OzFAPDJAPDRBPz1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQD45 + MSQ2LBw2LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02LR02 + LR02LR04Lx48MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88 + MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88 + MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88MR88 + MR88MR88MR88MR88MR88MR88Mh88MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8 + MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiA8MiE8MiA8MR88MR88MR88MR88MR88 + MR88MR48MiBAPjtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB + QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJSUn97sXi0qdbVUNAPC9AOy5AOi1AOSxAOStAOCpAOCpAOClA + NylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylA + NylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylA + NylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylANylA + NylANylANylANylANylANylAOClAOClAOCpAOCpAOCpAOCtAOCxAOSxAOS1AOS5AOi9AOjBAOjFAOzNB + Pz1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE/PDk0KhszKBgzKRkz + KRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRkzKRk4LBo7 + Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6 + Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6 + Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6 + Lhs6Lhs6Lxw7Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07 + Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx07Lx06Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6Lhs6LRk8MSJA + Pz5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB + QUFBQUFBQUFBQUFMTEz97sX97cD97cX04K7gypvfx5ffxJPfwY/fv43evorevYjevIfeu4beu4beu4be + u4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4be + u4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4be + u4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4beu4fe + vIfevIfevIjevYjevYrevYvev4zev47ev4/fv5HfwZXfwpbfxJrfxZ7fx6TfyKbg0Lfj4uHj4+Pj4+Pj + 4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PNuZynf0engUqogkyogkyogkyogkyo + gkyogkyogkyogkyogkyogkyogkyogkyog0yog0yog0yog0yog0yog0yngkyqg0zAkVDIllHHllHHllHH + llHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHH + llHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHH + llHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllHHllLHl1THl1THl1THl1THl1THl1THmVjImVnI + mVnImVnImVnImVnImVnImVnImlnJnFrJnFrInFrIm1rIm1nIm1nImlnImlnImVnImVnImVnImVnImVnI + mlnIm1nIm1rIm1rJnFrJnFrIm1nHmFXHl1THl1THl1THl1THllHHllHHllHFj0bVvZvj4+Pj4+Pj4+Pj + 4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Ph4eFBQUFBQUFM + TEz97cP97L/968L85LP73qj62qL615351Jn50ZX4z5P4zpH4zY/4zI74zI74zI74zY74zY34zY34zY34 + zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY74zY74zY74zY34 + zY34zY34zY74zY74zY74zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34zY34 + zY34zY34zY34zY34zY74zY74zY74zY74zY74zY34zY74zY74zY/4zY/4zY/4zY74zY/4zY/4zZD4zZD4 + zpH4zpL4z5T4z5X40Zf40pn505z51J/61qP62Kj626363bL637f87dX//vz///////////////////// + //////////////////////////////////////3cwZ+vfz+yhEeyhEiyhEiyhEiyhEiyhEiyhEiyhEiy + hEiyhEiyhEiyhEiyhEiyhUiyhUiyhUiyhUiyhUiyhUiwg0i7iknanE/bnU/anE/anE/anE/anE/anE/a + nE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/a + nE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/anE/a + nE/anE/anE/anE/anE/anE/anE/an1Dan1Han1Han1Han1Han1HboFLcoVfcoljcoljcoljcoljcoljc + oljcoljcoljcpFndpVndpFncpFncpFncpFjcpFjco1jco1jcoljcoljco1jco1jcpFjcpFjcpFncpFnd + pVndpVnco1jaoFTan1Han1Han1Han1HanlDanE/anE/YmkneqWX89/L///////////////////////// + ///////////////////////////////////////////////////v7+9BQUFBQUFMTEz97cP97L/96b77 + 4a762qL51pz40pf4z5L3zY/3y4v3yYn2yIf2x4f2x4f2x4f2x4f2x4f2x4f2x4f2x4f2x4f2x4f2x4f2 + x4f2x4f2x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3x4f3 + x4f3x4f3x4f3x4f3x4f3x4f3x4f3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3 + yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIf3yIj3yYj3yYn3yor4yoz4yo34 + y474zJD4zZP4z5b40Jn40p751aP52Kr62q/63LT98N7///////////////////////////////////// + ///////////////////////79u+4jFSlczSqeT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2q + eT2qeT2qeT2qeT2qeT2qeT2qeT2qeT2neD2/hkHXlETVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TV + k0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TV + k0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TVk0TV + k0TVk0TVlETWlkbWlkfWlkfWlkfWlkfWlkfXl0jYmU7YmU7YmU7YmU7YmU7YmU7YmU7YmU7YmU7Ymk7Z + nU/ZnU/ZnE/Ym0/Ym07Ym07Ym07Ymk7Ymk7Ymk7Ym07Ym07Ym07Ym0/YnE/ZnE/ZnU/YnE/YmU7XmEvW + lkfWlkfWlkfWlkfWlUbVk0TVk0TVk0TTjjvoxZr///////////////////////////////////////// + ///////////////////////////////////v7+9BQUFBQUFMTEz97cP86bv85rv63ar515740pf4zpH3 + y432yYj2xoX2xYP2w4H1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH1woH2 + woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2woH2 + woH2woH2woH2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2w4H2 + w4H2woH2woH2w4H2w4H2w4H2xIH2xIH2xIH2xIH2w4L2xIH2xIL2xYT2xYT3xYb3xYf3x4j3x4v3yY74 + y5H4zZX4z5r50qH51af52Kz63bj+9+7///////////////////////////////////////////////// + ///////////z6Nq1h1KeaSyibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOibjOi + bzOibzOibzOibzOibzOgbjO8fzfUjTvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvS + izvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvS + izvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSizvSjDzSjj3S + jj3Sjj3Sjj3Sjj3Sjj3Tj0DUkkXUkkXUkkXUkkXUkkXUkkXUkkXUkkXUkkXUkkXVk0bWlUbWlUbWlEbV + k0bVk0bVk0XVk0XVk0XVk0XVk0XVk0XVk0bVlEbWlEbWlUbWlUbUkkXUkkXTkUPSjj3Sjj3Sjj3Sjj3S + jj3SizvSizvSizvRiTjRijnv2L3///////////////////////////////////////////////////// + ///////////////////v7+9BQUFBQUFMTEz97cP857j85Ln526f51Jn4z5L3y4z2yIf2xIP1woD1wH71 + v3z1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1 + vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1 + vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv1vnv2vnv2vnv2vnv2 + vnv2vnv2vnv2v3v2v3v2v3z2v3z2v3z2v332v331wH71wH/2wYD2woL2w4T2xIb2xYn3yI32y5L3zJf3 + 0J7506X41ar74L/++/b////////////////////////////////////////////////////////////i + zrWYXyGZYyibZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZSqbZiqbZiqb + ZiqZZSqfaSvIgDLRhTLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLO + hDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLO + hDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhDLOhTPPhzXPhzXPhzXPhzXPhzXP + hzXQiDjRiz3Riz3Riz3Riz3Riz3Riz3Riz3Riz3Riz3Riz3Riz3Tjj7Tjj7Tjj7Tjj7SjT7SjT7SjT7S + jT7SjT7SjT7Sjj7Sjj7Tjj7Tjj7Tjj7SjD7Riz3Riz3QijvPhzXPhzXPhzXPhzXPhzTOhDLOhDLOhDLO + hDLMfSfbpGf///////////////////////////////////////////////////////////////////// + ///v7+9BQUFBQUFMTEz97cL75bb74rX52KP40ZX3zY72yYj2xIP1wX/1v3v1vXn0vHf0u3b0u3b0u3b0 + u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0u3b0 + u3b0u3b0u3b0u3b0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0 + u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0u3f0 + vHf0vHf0vHf0vHf0vHf0vHf0vHj0vHj0vnn0vXr1v3z1wH71wYH1woX2xYn2yI/2y5X3zpz40qT51qr6 + 5Mn///7////////////////////////////////////////////////////////+/PvMqoWSWBqUXSKV + XSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXSOVXiOVXiOVXiOUXSOfZCTC + eSrNfyvLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivL + fivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfivL + fivLfivLfivLfivLfivLfivLfivLfivLfivLfivLfizMgS7MgS7MgS7MgS7MgS7MgS7NgjHOhTfOhTfO + hTfOhTfOhTfOhTfOhTfOhTfOhTfOhTfOhTfOhTfPiDjQiTjQiTjQiDjQiDjQiDjPiDjPiDjQiDjQiDjQ + iTjQiTjQiTjPhjjOhTfOhTfOhTfNhDTMgS7MgS7MgS7MgS7MgC3LfivLfivLfivLfivLfSnLfizu1bn/ + ///////////////////////////////////////////////////////////////////v7+9BQUFBQUFM + TEz868H747L74bP516D4z5L3yov2xoT1wX/1vnv0vHf0unX0uHP0uHL0uHL0uHL0uHL0uHL0uHL0uHL0 + uHL0uHL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0 + uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0 + uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0uXL0unL0unL0unL0unP0 + unP0unP0unT0unT0u3T0u3X1vHb1vHj1vnv1v3/2wYP2xIn3x433y5T3z5330qX41az879////////// + /////////////////////////////////////////////////////Pi3ilyKTxGRWB6RWB6RWB6RWB6R + WB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWB6RWR6RWR6RWR6MVx2kZCHMeyfKeSbJeSbJ + eSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJ + eSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJeSbJ + eSbJeSbJeSbJeSbJeSbJeSbJeifKfSnKfSnKfSnKfSnKfSnKfSnLfizMgTLMgTLMgTLMgTLMgTLMgTLM + gTLMgTLMgTLMgTLMgTLMgTLMgTLNgzPOhTPOhTPOhTPOhTPOhDPOhDPOhTPOhTPOhTPOhDPNgjPMgTLM + gTLMgTLMgTLLgC/KfSnKfSnKfSnKfSnKfCjJeSbJeSbJeSbJeSbJeSbHdR7QikL68+v///////////// + ///////////////////////////////////////////////////v7+9BQUFBQUFMTEz86r/747H64LH5 + 1p73zZD3yIn2w4L1v331vHn0unX0uHLzt3HztnDztnDztnDztnDztnDztnDztnDztnDztnDztnDztnDz + t3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dz + t3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dz + t3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3Dzt3DzuHDzuHDzuHDzuHDzuHHz + uXHzuXL0uXP0unX0u3f0vXr1v371wYP2w4j2x4/2ypX3zp340qX516/98OL///////////////////// + ///////////////////////////////////////y6NyaYyuITBGNUxmNUxmNUxmNUxmNUxmNUxmNUxmN + UxmNUxmNUxmNUxmNUxmNUxmNUxmNUxmNUxmNVBmNVBmNVBmNVBmuZx7KdyLIdSLIdSLIdSLIdSLIdSLI + dSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLI + dSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLIdSLI + dSLIdSLIdiPJeSXJeSXJeSXJeSXJeSXJeSXKeibKfS3KfS7KfS7KfS7KfS7KfS7KfS7KfS7KfS7KfS7K + fS7KfS7KfS7KfS7Lfi7Lfy/LgC/LgC/LgC/LgC/LgC/Lfy/Lfi/Kfi7KfS7KfS7KfS7KfS7KfS7KeinJ + eSXJeSXJeSXJeSXJeCTIdSLIdSLIdSLIdSLIdSLIdSLFbhXernz///////////////////////////// + ///////////////////////////////////v7+9BQUFBQUFMTEz86b764rD637D41Zz3zI72x4f1woD0 + vnvzu3fzuHPzt3HytW/ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7y + tW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7y + tW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7ytW7y + tW7ytW7ytW7ytW7ytW7ytW7ztW7ztW7ztW7ztW7ztW7ztW7ztm7ztm7ztm7ztm/ztm/ztnDzt3L0t3P0 + uHT0uXj0u3v1vX/1wIT1won2xo/3ypj4zp/40aT53Lj//Pr///////////////////////////////// + ///////////////////////////exauMTxSITRKLUBaLUBaLUBaLUBaLUBaLUBaLUBaLUBaLUBaLUBaL + UBaLUBaLUBaLUBaLUBaLUBaLUBaLURaKUBaLURa2aRzJdR/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/G + cx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/G + cx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/Gcx/GdCDHdyLH + dyLHdyLHdyLHdyLHdyLHdyLIeinJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJ + eyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvJeyvIeCTHdyLHdyLHdyLHdyLH + dSHGcx/Gcx/Gcx/Gcx/Gcx/Gcx/EcBrLfzL68+v///////////////////////////////////////// + ///////////////////v7+9BQUFBQUFMTEz86b364q/637D41Jv2y432x4b1wX/0vnnzunXzuHHytm/y + tW3ytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzy + tGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytG3ytG3ytG3ytG3ytG3ytG3ytG3y + tG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3ytG3y + tG3ytG3ytG3ztG3ztG3ztG3ztG3ztG3ztG3ztG3ztWzztWzztW3ztW3ztW7ytm/zt3H0uHT0uXfzu3r1 + vn71wIT1w4n2x5H2y5j3z6D40qb74cX++/f///////////////////////////////////////////// + ///////////////Qs5SERgmITROKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKUBWITxWTVRfBbx3Icx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx7HdSDHdiHHdiHHdiHHdiHH + diHHdiHIeCXJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeSjHdiHHdiHHdiHHdiHHdiHHdCDGch7Gch7Gch7G + ch7Gch7Gch7Gch7EbRbZoGf9+/n///////////////////////////////////////////////////// + ///v7+9BQUFBQUFMTEz86b364a/53q/31Jv2y431xob0wH/0vXnzuXXzt3HytW/ytG3ys2zys2zys2zy + s2zys2zys2zys2zys2zys2zys2zys2zys2zys2zys2zys2zytGzytGzytGzytGzytGzytGzytGzytGzy + tGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzy + tGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzytGzy + tGzytGzytGzytGzytGzytGzytGzytWzytWzytW3ytW3ytW3ytm/zt3DzuXPzunbzvHr0vn/0wYX1xIv1 + yJL2y5r3z6H30qb76dL////////////////////////////////////////////////////////////8 + +fWodUKCRAiJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWHThWfWxjFch7Hcx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7HdSDHdiHHdiHHdiHHdiHHdiHHdiHIdyPJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirIeCfHdiHHdiHHdiHHdiHHdiHHdB/Gch7Gch7Gch7Gch7Gch7Gch7Gch7F + cR3DaxLqzK7////////////////////////////////////////////////////////v7+9BQUFBQUFM + TEz86b364a/53rD31Jv2y431xob0wH/zvXnzuXXzt3HytW/ytG3ys2zys2zys2zys2zys2vys2vys2vy + s2vys2vys2vys2vys2vys2vys2vys2vys2vytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvy + tGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvy + tGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvy + tGvytGvytGzytGzytWzytW3ytW3ytW3ytW7yt2/zuHLzuXTzu3j0vXz0v4D0wob1xY32yZT2zZv30aP4 + 16/98uX////////////////////////////////////////////////////////////16+GpeEaERwuJ + ThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHThWl + XxrIdB7Hch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7HdB/HdiHHdiHHdiHHdiHHdiHHdiHHdiLJeSbJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeinHdyPHdiHHdiHHdiHHdiHHdiHGch/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7EbBXRjkv++/n/ + ///////////////////////////////////////////////////v7+9BQUFBQUFMTEz86b364a/53rD3 + 1Jv2y431xoX0wX/zvXnyuXXyt3HxtW/xtG3xs2zxs2zxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vx + s2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vxs2vys2vys2vys2vys2vy + s2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vy + tGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvytGvy + tGzytGzytWzytW3ytW3ytm/zt3Hzt3PzuXbzu3n0vX30wIL1w4j1xo/2yZb3zp/30aT42rX++PD///// + ///////////////////////////////////////////////////////l08CHSg2GSxCJThSJThSKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWIThWNURW7ax3JdB7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7HdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiLJeinJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirIeCXHdiHHdiHH + diHHdiHHdiHHdSDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7GcRzFbxnrzK7///////////////// + ///////////////////////////////////v7+9BQUFBQUFMTEz86b364a753q/31Jr2y4z1xoX0wX7z + vXjyuXTyt3DxtW7xtGzxs2vxs2vxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rys2rys2rys2rys2rys2rys2ry + s2rys2rys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vy + s2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2vys2rys2vys2vytGvytGzy + tGzytG7ztW/ztnDzuHPzuXb0u3r0vX71wIP0w4r1x5H2ypj3zp/30aX638H//fz///////////////// + /////////////////////////////////////////v3Oro2JTRGITBKJThSJThSKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWJThWRUxe5ahzIdB7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7H + dSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHIeCTJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeSjIdiHHdiHHdiHHdiHHdiHHdiHHcx7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7FbxnJeivy38z///////////////////////////// + ///////////////////v7+9BQUFBQUFMTEz86b364a753a/305r2yoz1xYX0wH7zvXjyuHTytnDxtG7x + s2zxsmvxsmvxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrx + smrxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rys2rys2rys2rys2rys2vys2vytGvytGzytG3ytW/z + tnDzt3PzuXf0u3v0vn/0wIX1xIv2yJL3y5r30KL30qf869f///////////////////////////////// + //////////////////////////////+8lGuBQgWJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWGTRWaWBfHcx7Hcx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7HdB/HdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHIeSbJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeirJeirJeirJeirJeirJeinHdiPHdiHHdiHHdiHHdiHHdiHHdSDGch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7CaA7bpXD///////////////////////////////////////////// + ///v7+9BQUFBQUFMTEz86b364a/53q/305r2yoz1xYX0wH7zvXjyuHTytnDxtG7xs2zxsmvxsmvxsmrx + smrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rys2rys2rys2rys2vys2vytGvytGzytG3xtW7ytnDztnHzuHTyunj0 + vHz0v4D0wYb1xY31yJP2zZv30KP41av87d3///////////////////////////////////////////// + ///////////////17eSfaTOERwqJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWnYBrHch7Hch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7HdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHIeCXJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJ + eirJeirJeSjHdyLHdiHHdiHHdiHHdiHHdiHHdiHHdB/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7FcBrJeSr05NT////////////////////////////////////////////v7+9BQUFBQUFM + TEz76bz64a353q/305n1yov0xYTzwH3yvXfxuHPxtm/wtG3ws2vwsmrwsmrwsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmrxsmrxsmrxsmrxsmrx + smrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxsmrxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rxs2rx + s2rxs2rxs2rxs2rxs2rxs2rxs2rxs2vxs2vxtGvxtGvxtGzxtW7ytm/yt3LyuHTyunjzvHzzv4H0wof0 + xY/1yZX2zZ720KT42rb++/f///////////////////////////////////////////////////////// + ///n1L+PVRqGShCJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWJThWIThWwZRvJcx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx7HdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHIeCXJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeSfHdiLHdiHH + diHHdiHHdiHHdiHHdiHHdSDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7D + axPWmVz+/Pr////////////////////////////////////////v7+9BQUFBQUFMTEz76Lz64K353a/3 + 0pn1yYv0xYTzwH3yvXfxuHPxtm/wtG3ws2vwsmrwsmrwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmrxs2rxs2rxs2vxtGzxtG3ytXDyt3LyuHTzuXjzvXzzv4L0woj1xo/1ypf2zp/3 + 0KX53sD++fT////////////////////////////////////////////////////////////XvaKFRwuI + TROJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWIThWQ + Uxa+bR3Hcx7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7HdSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHIdyPIeCbJeinJeirJ + eirJeirJeirJeirJeirJeirJeirJeirJeirJeirJeirIeSjIeCTHdiLHdiHHdiHHdiHHdiHHdiHHdiHH + diHHcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch3DaxPkvZX///// + ///////////////////////////////////v7+9BQUFBQUFMTEz76Lz64K353a/30pn1yYv0xITzwH3y + vHfxuHPxtm/wtG3ws2vwsmrwsmrwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnxsmnx + smnxsmrxs2rxs2rxs2vxtGzytG7ytW/yt3LyuHXzunnzvH70v4P0wor1x5H2ypj2zqH30KT75c3///// + ///////////////////////////////////////////////////////+/Pmuf0+DRQiJThSJThSJThSJ + ThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWaWBfDcB7Gch7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7HdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHIeCTIeSfJeSnJeirJeirJeirJ + eirJeirJeirJeirJeinIeSjIeCXHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdB/Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7EbRbPiEH+/Pv///////////////// + ///////////////////v7+9BQUFBQUFMTEz76Lz64K353a/30pn1yYv0xITzwH3yvHfxt3PxtW/ws23w + smvwsWrwsWrwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnw + sWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnxsmnxsmrxsmrxs2rx + s2rxs2zwtG3xtG7ytnHyt3PyuXbzu3rzvn/zwIX0xIv1yJL1y5r2z6L31Kz87+D///////////////// + ///////////////////////////////////////////58uqvgVKERgqJThSJThSJThSJThSJThSJThSK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWhXBnHcx7GcR7FcR7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx7H + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHIdyLIdyPIeCTIeCXIeCXIeCXIeCTIdyTI + dyPHdiLHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdCDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch3Ebhfhtov///////////////////////////////// + ///v7+9BQUFBQUFMTEz76Lv54K353a/30pj1yYrzxIPywH3xvHfxt3LwtW/vs2zvsmrvsWnvsWnvsWjv + sWjvsWjvsWjvsWjvsWjvsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsWnwsmnwsmnw + smnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmnwsmrwsmrws2rws2rws2zwtG3x + tW/xtnDxt3PxuXfyvHzyvoHzwYbzxY31yJX1zZ320KL31q/99er///////////////////////////// + ///////////////////////////////p2smKTRKGSg+JThSJThSJThSJThSJThSJThSJThSKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWJThWKTxW1ZxzIcx7FcR7FcR7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx7HdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiDHdiDHdiDHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdSDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7FcBrFcR3y3sr////////////////////////////////v7+9BQUFBQUFM + TEz757v54K353a/30pj1yIrzw4Pyv33xu3fxtnLwtG/vsmzvsmrvsWnvsWnvsWjvsWjvsWjvsWjvsWjv + sWjvsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWnwsmnwsmnwsmrws2vxtGzxtG7xtnHxt3Py + uXfyu3zyvoHzwYf0xY71yZX2zZ720KP43Lr//Pn///////////////////////////////////////// + ///////////////////XvJ+MUBWHTBGJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWJTxWOURa1aBzIcx7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx/HdSHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdCDGch/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7DaxPXml/////////////////////////////////v7+9BQUFBQUFMTEz757v54Kz53a73 + 0pj1yIrzw4Pyv33xu3fxtnLwtG/vsmzvsWrvsWnvsWnvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjv + sWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjv + sWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjw + sWjwsWjwsWjwsWjwsWjwsWjwsWjwsWjwsWnwsWnwsmnwsmrws2vxs2zxtG/xtnHxuHTyuXnyvH3zvoPz + won0xpD1ypj2zqD20KT75c3//v7///////////////////////////////////////////////////// + ///////DnnmBQgWJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWK + TxWKTxWKTxWGTRWXVhfFcR7Gch7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hcx7HdSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdCDGch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7FcBvH + dCLz4M3////////////////////////////v7+9BQUFBQUFMTEz757v54Kz43a720pj1yInzw4Lyv3zx + u3bxtnHwtG7vsmvvsWnvsGjvsGjvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsWfvsWfvsWfv + sWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWjvsWjvsWjvsWjv + sWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjvsWjv + sWjvsWjvsWjvsWfvsWjvsWnwsmnwsmnwsmrws2vxs23xtW/xtnHxuHXyunnyvH7ywIPzw4r0x5H1ypn1 + z6D20af76dT////////////////////////////////////////////////////////////48+2lc0GC + RQmJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWJ + ThWhXBjEcB7Gch7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7HdB/HdSHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdSDHcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7EbhfPiUL47eP///// + ///////////////////v7+9BQUFBQUFMTEz757v536343a720pj0yInzw4LxvnzwunbwtnHvs27usWvu + sGnur2jur2jur2fusGfusGfusGfusGfusGfusGfusGfusGfusGfusGfusGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfvsWfv + sWfvsWfvsWjvsmjvsmjvsmnws2rws2zwtW/wtnHxuHXxunnxvX7ywITzw4v0x5P0zJv1z6L31q/+9/D/ + ///////////////////////////////////////////////////////////w4tKXXyeGSQ6JThSJThSJ + ThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWrYhrJcx7F + cR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx7HdSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHH + diHHdiHHdiHHdiHHdSHHdB/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7CaA3htYj///////////////////// + ///v7+9BQUFBQUFMTEz757v536z43a320Zf0yInzw4LxvnvwunXwtnHvs27usWvusGnur2jur2jur2fu + r2fusGfusGfusGfusGfusGfusGfusGfusGfusGfusGfusGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGjvsGjv + sWjvsWjvsmrvsmvws23wtG/wtnLxuHbxu3rxvX/ywIXzxI30yJT1zJz2z6L42bf+9u3///////////// + ///////////////////////////////////////////////hzLaISw+HTBGJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWJThWPUha5ahzIcx7FcR7FcR7FcR7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Hcx/HdB/HdSDHdSDHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdiHHdSDHdCDHcx/G + cx7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7EbxnOhTr58un////////////////////v7+9BQUFBQUFM + TEz757v536z43a320pj0yInzw4LxvnvwunXwtnDvs23usWrusGjur2fur2fur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2busGbusGbusGbusGbusGbusGbusGbusGbusGbusGbvsGbv + sGbvsGbvsGbvsGbvsGbvsGbvsGbvsGbvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGjvsGjvsWjvsWnvsmrw + smvws23wtHDwtnPxuHfxu3zyvYHzwYjzxY/0yZb1zZ/1z6L54cX///////////////////////////// + //////////////////////////////////+9lGqDRAiITROJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWVVRfAbh3Gch7FcR7FcR7FcR7FcR7FcR7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gcx7HdB/HdCDHdSDHdSDHdSDHdSDHdSDHdSDHdB/Gcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/FbxfhtIb////////////////////v7+9BQUFBQUFMTEz757v536z43a32 + 0pfzyInyw4LxvnvwunXvtm/vs2zusWnusGjur2fur2fur2bur2bur2burmburmburmbur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2busGbusGbusGbusGbusGbusGbusGbusGbusGbusGbvsGbvsGbvsGbvsGbv + sGbvsGbvsGbvsGbvsGbvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfv + sGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGfvsGbvsGfvsGjvsWjvsWjvsWnvsmrws2vws23wtXDx + t3PxuXjxvHzyvoLzwoj0xpD0ypj1zp/20qf76dX///////////////////////////////////////// + ///////////////////8+fW4kGaERgqJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWK + TxWKTxWKTxWKTxWKTxWKTxWKTxWHTRWdWhjGch7GcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IcyDIdyPt0LP////////////////v7+9BQUFBQUFMTEz757v536z43a320Zfzx4jywoHxvXrw + uXXvtm/usmztsGntr2jtrmftrmftrmbtrmbtrmbtrmbtrmbtrmbtr2btr2btr2btr2btr2btr2btr2bt + r2btr2btr2btr2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2busGbusGbusGbu + sGbusGbusGbusGbusGbusGbusGbusGbusGfusGfusWfusWfusWnvsmrws2vwtG3wtnDxt3TxunjxvH3y + v4Pzw4r0xpL1y5r1zqD20qj88eT///////////////////////////////////////////////////// + ///////w5tqPVBqFSA2JThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWK + TxWKTxWKTxWJTxWJTxWwZRvIch7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLHchvX + nV3////////////////v7+9BQUFBQUFMTEz757v536z43a320Jfzx4jywoHxvXrwuXXvtm/usmztsGnt + r2ftrmftrmftrmbtrmbtrmbtrmbtrmbtrmbtrmbtr2btr2btr2btr2btr2btr2btr2btr2btr2btr2bt + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bur2bu + r2bur2bur2bur2bur2bur2busGfusGfusGjusWnvsmrvsmvvs27vtXHwuHXwuXrxvH7yv4Xyw4z0x5P0 + y5v0zqH32LX++vX////////////////////////////////////////////////////////////gy7WS + WB+GSg+JThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWKTxWJ + TxWLUBawZRvIcx7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeCTKfSnt0bP///////// + ///v7+9BQUFBQUFMTEz657v53qz43K310Jfzx4jxwoHwvXrvuXXutm/ts2ztsGnsr2bsrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtr2Xtr2Xt + r2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xu + r2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2XurmXurmXur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xu + r2Xur2Xur2bur2busGbusGfusGjvsmrvs2zvs23vtXHwt3XwuXrxvYDywIbyxI3zx5T0zJ31z6H54MT/ + /fv////////////////////////////////////////////////////////////Nro+BQgSIThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWHTRWTVRfDcB7H + ch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbKeSXTkEf68+r////////v7+9BQUFBQUFM + TEz657v53qv43Kz10Jfzx4fxwoDwvXrvuXTutm7ts2vtsGjsr2bsrmXsrmXsrmTtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXurmXu + rmXurmXurmXurmXurmXurmXurmXurmXurmXur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2Xur2bu + sGbusGbusGfusWjusmrvsmvvtG/wtnLwuHbxunvxvYHywYfzxY70yJb1zZ71z6P65s7///////////// + ///////////////////////////////////////////////69vGtf1GCRAiJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWJThWcWRjBbx3Gch7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivLfSfkuIj////////v7+9BQUFBQUFMTEz657v53qv43Kz1 + 0Jfzx4fxwYDwvHrvuHTutW7tsmvtr2jsrmbsrWXsrWXsrWTsrWTtrWXtrWXtrWXtrWXtrWXtrWXtrWXt + rWXtrWXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2Xtr2btr2btsGbtsGbtsGjt + sWnusmrvs2zvtXDwtnPwuHjwu3zxvoLywonzxZD0ypn0zqD106v89Or///////////////////////// + ///////////////////////////////////37+aeaDSESAyJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSKTxWKTxWKTxWKTxWKTxWKTxWGTRWlXhnIcx7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivNgS7VlEr79Oz////v7+9BQUFBQUFMTEz657v53qv43Kz10Jfzx4fxwYDwvHrv + uHTutW7tsmvtr2jsrmbsrWXsrWXsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTt + rWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTt + rmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXt + rmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmXtrmTtrmXtrmbtr2btr2btr2fusWnusWrusmzv + tHDwtnPwuXjwu33xvoPyworzxpLzypr0zaD21rD88+j///////////////////////////////////// + ///////////////////////m1cOITBKGShCJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSKTxWKTxWKTxWKTxWKTxWJThWMUBazZxzIch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Ich7Jch7LdSDNfCXM + fSXJeiTGcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLQhzThsnn9+vbv7+9BQUFBQUFMTEz657r53qv43Kv1z5byxobwwH/vvHnut3PttG3ssWrsr2fr + rmXrrWTrrWTrrWPrrWPrrWPrrWPrrWPsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrGTsrGTsrGTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrmTsrmTsrmTsrmTsrmTsrmTsrmTsrmTsrmTsrmTtrmTtrmTt + rmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrWTt + rWTtrWTtrmTtrmTtrmTtrmTtrmTtrmTtrmTtrmXtr2Xtr2Xtr2btr2fusWjusWrusm3vtXDvtnTvuHjw + u37xvoTyw4vzx5Pzy5z0zqD33b7///////////////////////////////////////////////////// + ///////////Gon6ERgqITBOJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSK + TxWKTxWKTxWKTxWIThWQUha8bB3Hch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Ich7Lch7NcR7QeyTRgijQgCfOgSfJeSPGcR7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSijrTjTnv + 17Xv7+9BQUFBQUFMTEz657r53qv43Kv1z5byxobwwH/vvHnut3PttG3ssWrsrmfrrWXrrGTrrGTrrGPr + rGPrrGPrrGPrrGPrrGPsrGTsrGTsrGTsrGTsrGTsrGTsrGTsrGTsrGTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTtrWTtrWTtrWTtrWTtrWTt + rWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrWTtrmTtrmTt + rmTtrmTtrmTtrmTtrmTtrmTtrmXtrmXtr2Xtr2btsGjusWnusmvts27utHHvtnXwuXrwvIDxwIbyxI3z + yJX0zJ31z6T65c3//fz//////////////////////////////////////////////////////////fvB + nXmCRQmITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWK + TxWHThWZWBjFcR7Hch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Hch7Kch7Nch7SdyHWhivXiy7UhyzQgSjLeiPGcR7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvUkD3grm7u7OtBQUFBQUFM + TEz657r53qv43Kz1z5byxobwwH/vvHnut3LttG3ssWrsrmfrrWXrrGTrrGTrrGPrrGPrrGPrrGPrrGPr + rGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrWPrrWPrrWPrrWPrrWPrrWPrrWPrrWPr + rWPrrWPrrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPs + rWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPs + rWPsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTsrWTs + rWTsrWPsrWTsrWXsrmTsrmXsrmbsr2ftsGntsWvts27utHHvt3XwunrwvYDywIfyxI/zyZf0zJ/1z6T7 + 7Nv////////////////////////////////////////////////////////////17eSUWyWCRQqITRWJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWIThWoYRrI + cx7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Ich7Lch7Qcx/VfybZijDakTbYjTDRginLdiHGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0PYmUnjzrJBQUFBQUFMTEz657n53qv426v1 + z5XyxYXwwH7vu3jut3Hts2zssGnsrWbrrGTrq2PrrGPrrGLrrGLrrGLrrGLrrGLrrGLrrGLqrGLqrGLq + rGPrrGPrrGPrrGPrrGPrrGPrrGPrq2Prq2Prq2PrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPs + rGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrWPs + rWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPs + rWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrWPsrGPsrGPsrGPsrWPsrWPsrWPsrWPsrWPsrWPs + rWTsrmTsrmTsrmXtr2ftsGntsmvts27utXHvt3bwunzwvYHxwYjyxZDzypj0zJ/21a/99u3///////// + ///////////////////////////////////////////////////o2cmbZTCESA2ITRSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWKTxWJTxWrYxvIcx/FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Ich7MdB/S + fSbYii3blD7bkDzWhSrQeCLKcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TZmkvSoF0/PDhBQUFMTEz657n43qv326v0z5bxxYXwwH7uu3jt + t3Hss2zrsGnrrWbqrGTqq2Pqq2Pqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lrq2Prq2Prq2Pr + q2Prq2Prq2Prq2Prq2Prq2PrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPr + rGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPrrGPr + rGPrrGPrrGPrrGPrrGPrrGPrrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPs + rGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrWPsrWPsrWPsrWPsrWPsrWPsrWTsrWTsrmTsrmXs + rmbtsGjtsWrtsmvus27utXPuuHjvu33wvoPxworyxpLzy5vzzaD327r++/f///////////////////// + ///////////////////////////////////////ZwaiCRAeHSxKITRSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWIThWQUxbAbx3Ich7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Hch7NeiTSginXii7ZkDTYiS7S + fCXNcx7Kch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/PmEw8NChBQUFMTEz657n43qv326v0z5bxxIXwwH7uu3jtt3Hss2zrsGnrrWbq + rGTqq2Pqq2Pqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Hrq2Hrq2Lrq2Lrq2Lrq2Lrq2Lr + q2Lrq2Lrq2Lrq2LrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLsrGLsrGLsrGLsrGLsrGLsrGLsrGLsrGLsrGLsrGPsrGPsrGPsrGPsrGPsrGPsrGPs + rGPsrGPsrGPsrGPsrGPsrGPsrGPsrGPsrWPsrWPsrWPsrWPsrWPsrGPsrWPsrmTrrWXsrmXtsGjtsGnt + smzts2/utnPut3jvu33xv4Txwozyx5Tzy5z0zqH44cb///////////////////////////////////// + ///////////////////////8+vi9lm+ERguHTBOITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSKTxWKThWIThWYVxe/bh3Hch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7MfCXQgSfSgijUhSrTgCfOdSDLch7Ich7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/QnFM6LhxAPTlMTEz657n43av326v0z5XxxIXwv37uunfttnHssmvrr2jrrGXqq2PqqmLqqmLqqmHq + qmHqqmHqqmHqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lq + q2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lqq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lr + q2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2LrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGPrrWPrrWPrrWTsrmXsr2fssWrssWzts3DttXTu + uHnwvH/xv4byw43zyJXzy5700Kb88OL///////////////////////////////////////////////// + ///////////++/atfU+BRAmITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSGTRWiXRnIcx7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Fch/Fch/F + ciDGcyDHdCDHdCDHcyDGcx/Gch7JeCLNgCfPgCfPfyfNdiHKch7Ich7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6LRk9NSZM + S0v657n43av326v0z5XxxYXwv37uunfttnHssmvrr2jrrGXqq2PqqmLqqmLqqmHqqmHqqmHqqmHqqmHq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hr + q2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2HrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHr + rGHrrGHrrGHrrGHrrGHrrGHrrGHrrGHrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLrrGLr + rGLrrGLrrGLrrGLrrGLrrGLrrGPrrGPrrWPrrWTrrWXsrmbsr2jssGrssm3ttHHttnXvuXrwvIDwwIfx + xI/yyZfzzJ710qv88OP////////////////////////////////////////////////////////////v + 4tSRWCCESA2ITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSIThSLTxWwZRvHch7FcR7FcR7FcR7FcR7FcR7FcR7FcR7GcR7GciDGcyHGcyHGcyHGcyHHdCHHdCHH + dCHHdCHHdCHGcyDIdiHJeCLJdiHIch7Hch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs7MB1KRz3657n43av326v0 + z5XxxYXvv37tunfstnHrsmvqr2jqrGXpq2PpqmLpqmLpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHp + qmHpqmHpqmHpqmHpqmDpqmDqqmDqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqq2Hqq2Hqq2Hqq2Hq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hrq2Hrq2Hrq2Hrq2Hr + q2Hrq2Hrq2Hrq2Hrq2Hrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lrq2Lr + rGLrrGLrrGLrrGPrrWPrrWPrrWTrrmXsr2fsr2jssWvtsm7ttHHutnbvuXzvvYLwwYrxxZHyypnzzJ/2 + 2rj//vz////////////////////////////////////////////////////////////Ut5mGSQ6HTBOI + ThaIThaITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxaJTxaJTxaJTxWJThWJThSJThSJThSIThSMUBW3 + aRzIcx7FcR7FcR7FcR7FcR7FcR7Fch/GcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHHdCHHdCHHdCHHdCHH + cyDGcR3GcR3Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR5JQjP65rj43Kr32qv0zpXxxITvvn3tuXbs + tXDrsWrqrmfqq2TpqmLpqWHpqWHpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDp + qmDpqmDpqmDpqmDqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHq + qmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHq + qmHqqmHqqmHqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hr + q2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2Hrq2HrrGHrrGHrrGHr + q2LrrGLrrWLrrGPrrWTsrmbsr2jssGrtsm7stHLtt3buun3vvYPwwYryxpLzypvzzqL44cb//Pn///// + ///////////////////////////////////////////////////////JqouDRw6HThaITheITheITheJ + TxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxaJTxaJTxaHTRSUVBfBbx3Hch7FcR7F + cR7FcR7Gch/GcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHHdCHHdCHHdCHHdCHHdCDGch/Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD65rj43Kr32qv0zpXxxITvvn3tuXbstXDrsWrqrmfqq2Tp + qmLpqWHpqWHpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDp + qmDpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHpqmHp + qmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHq + qmHqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Dqq2Dq + q2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Lqq2LqrGLqrGLq + rGTqrWXrrmbrr2jrsGzssm/stXPtt3jtun7vvoXxwo3yx5Xzy5zzzaH66NT///////////////////// + ///////////////////////////////////////79vCfaziCRQyITheITheITheITheITheJTxeJTxeJ + TxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeHTReiXRvGch/GcR7FcR7FcR7GcyDGcyHG + cyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHHdCHHdCHHdCHHdCHHcyDGch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD65rj43Kr32qv0zpXwxITvvn3tuXbstXDrsWrqrmfqq2TpqmLpqWHpqWHpqWDp + qWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqV/pqV/pqWDp + qWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmHqqmHqqmHq + qmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqqmHqq2Dqq2Hqq2LqrGHqrGLqrGPrrmXrrmbr + sGnssWvss2/stXTtuHnuu3/vvobxw47yyJbzzJ300qv89On///////////////////////////////// + ///////////////////////////v5NigbTyDSBCITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJ + TxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeHThinYRzIcyHFciDGcyDGcyHGcyHGcyHGcyHGcyHGcyHG + cyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHHdCHHdCHHdCHHcx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD65rj43Kn32arzzZXwxITtvX3suHbrtG/qsGnprWbpqmPoqWHoqGDoqGDoqF/oqF/oqF/oqF/oqF/o + qF/oqF/oqF/oqF/oqF/oqF/oqF/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/pqWDpqWDpqWDpqWDp + qWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDp + qmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqWDpqWDpqWDpqmDpqmDpqmDpqmDp + qmDpqmDpqmDpqmDpqmDpqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqq2DqqmHqq2HqrGHqq2Lqq2PrrWTrrmbrr2jssWvss2/s + tXTuuHrvu4Dvv4jwxJDxyZjyy53117T++fT///////////////////////////////////////////// + ///////////////eybSERw2GSxSITheITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJ + TxeJTxeJTxeJTxeJTxeHTheNURe7bB/HcyHGdCTGdCPGdCLGcyHGcyHGcyHGcyHGcyHGcyHGcyHGcyHG + cyHGcyHGcyHGcyHGcyHHdCHHdCHHcyDGch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55rj43Kn22ary + zZTvxITtvX3suHbrtG/qsGnprWbpqmPoqWHoqGDoqGDoqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/o + qF/oqF/oqF/oqF/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/pqWDpqWDpqWDpqWDpqWDpqWDpqWDp + qWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDp + qWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqmDpqmDpqmDpqmDpqmDpqmDpqmDpqmDp + qmDpqmDpqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmDqqmDqqmHqqmHqqmHqq2Hqq2Lqq2PrrWXrrWbsr2nssG3ss3DttnbuuXvvvILw + wInxxJHyyZryzaD33sH//v7////////////////////////////////////////////////////////+ + /PvFon6FSQ+HTRaITheITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJ + TxeJTxeHTheSVBi6bCDHdSTGdCTGdCTGdCPGdCLGcyHGcyHGcyDGciDGcyDGcyHGcyHGcyHGcyHGcyHG + cyHGcyHHdCHHdCHGch/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55rj43Kn22aryzZTvxITtvX3suHbq + tG/psGnprWbpqmPoqWHoqGDoqGDoqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/o + qF/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/o + qV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/p + qV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pql/pql/pql/pql/pql/pql/pql/pql/pql/pql/q + ql/qql/qql/qql/qql/qql/qql/qql/qql/qqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDqqmDq + qmDqqmDqqmDqqmDqqmHqq2Hqq2Hpq2LrrGPrrWXqrmjqr2rssW3stHLttnfuun3vvYTwwozxxpXxy57z + z6X67Nv//////////////////////////////////////////////////////////////vyxhlqAQwqI + TheITheITheITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeFTRac + WxvHdCPGdCTGdCTGdCTGdCTGdCPGch/GcyDIeCjKfC/JeSrHdCLGcyHGcyHGcyHGcyHGcyHGcyHGcyHG + cx/Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55rj43Kn22aryzZPvxIPtvXzsuHXqtG/psGjorWXpqmLo + qWDoqF/oqF/oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7op17op17op17o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqF/oqV/oqV/oqV/o + qV/oqV/oqV/oqV/oqV/oqV/oqV/oqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/p + qV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/oqV/oqV/pqV/pqV/p + qV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqWDpqV/p + qWDpqWHpq2Hpq2Hpq2LqrWPqrWXqrmfrsGrrsW3stHLsuHntu3/uv4fvw4/wyJfyy57z0an77t3///// + ///////////////////////////////////////////////////////y6d+YYS2DSA+ITheITheITheI + TheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJUBipYx/GdCPGcyPF + cyTGdCTGdCTIfTbMi07Tm2jbrYHUllrJeSrGcyDGcyHGcyHGcyHGcyHGcyHGcyHGch/Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55bj43Kn22aryzZTvw4PtvXzst3Tqs2/pr2jnrGXnqWLmqGDnp1/np1/np17n + p17np17np17np17np17np17np17np17np17np17np17np17np17np17np17np17nqF7nqF7nqF7nqF7n + qF7nqF7nqF7nqF7nqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7pqV7pqV7pqV7pqV7pqV7p + qV7pqV7pqV7pqV7pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqWDpqWDpq2Dp + q2Hpq2LqrGPqrWXqrmfrsGvrs3DstXbtuHrtvIHuwInwxJDxyZnyy5/01rP++/j///////////////// + ///////////////////////////////////////////gybKLURiGSxOITheITheITheITheITheITheI + TheITheJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeIUBiJUhqxaCDIdSPFcyPFcyLHei7NkVvO + l2XVpXrfu5rZq4DLgDfGcR/GcyHGcyHGcyHGcyHGcyHGcyHGch/FcR7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55bj33Kn22aryzZTvw4PtvXzrt3Tqs2/or2jnrGXnqWLmqGDmp1/np1/np17np17np17np17np17n + p17np17np17np17np17np17np17np17np17np17np17np17np17nqF7nqF7nqF7nqF7nqF7nqF7nqF7n + qF3nqF3oqF3oqF7oqF7oqF7oqF7oqF7oqF7oqF7op17op17oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7oqV7pqV7pqV7pqV7pqV7pqV7pqV7pqV7pqV7p + qV7pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqV/pqWDpqWDpqmDpqmHpqmLqq2Tq + rWfqr2rqsW3rsnLstXbtuXzuvIPvwIrwxJLxyZvyzKH23L/++vX///////////////////////////// + ///////////////////////////////QtJiERg2HTRaITheITheITheITheITheITheITheITheJTxeJ + TxeJTxeJTxeJTxeJTxeJTxeJTxeJTxeKUBiIURqRVhu+byLHdCPFcSDIfzrNlGLNlGDRmWjTn3DRnW7L + hUPGch7GcyHGcyHGcyHGcyHGcyHGcyHGch/FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j22any + zZPvw4PtvXvrt3Tqs27or2jnrGTnqWHmqF/mp17mp17np13np13np13np13np13np13np13np13np13n + p13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13n + p17np17np17np17np17np17np17np17np17nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF/oqF/oqV/oql/oqmHprGPprWbprmfqr2rqsW3q + tHLst3ftuX3uvYTvwYvvxpTwypzyzKD45c7///////////////////////////////////////////// + ///////////////9+vepekuBRAqITheITheITheITheITheITheITheITheITheITheJTxeJTxeJTxeJ + TxeJTxeJTxeJTxeKUBiKUhqHURqbXB3DcSLGciDIfzvMlGHMk1/Nk1/Nk1/NlGPKhEPGch/GcyHGcyHG + cyHGcyHGcyHGcyHFch/FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j22anyzJPvwoPtvHvrt3Tq + sm7ormjnrGTnqGHmp1/mpl7mpl7mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3m + pl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mp13mp13mp13mp13mp13mp13mp13mp13mp13np17np17np17n + p17np17np17np17np17np17nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7nqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7op17op17op17oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF3oqF3oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqF7oqF7oqF7oqF7oqF/oqWDoqmHoq2PprGTprWbpr2jqsGvqsm7qtHPst3jsun/t + voXvwo3vx5Xxy53y0an78OH///////////////////////////////////////////////////////// + ///27+aqfE6DRg6ITheITheITheITheITheITheITheITheITheITheJTxeJTxeJTxeJTxeJTxeJTxeJ + TxeJURqIURqFTxqkYB/GcyHHejDMkVzMk2HNk1/NlGHNklzIfDTGcyPGdCPGcyHGcyHGcyHGcyHGcyDF + cR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j22KnyzJPvwoPtu3vrt3Tqsm7ormjnrGTnqGHm + p1/mpl7mpl7mpl3lpl3lpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3mpl3m + pl3mpl3mpl3mpl3mpl3mp13mp13mp13mp13mp13mp13mp13mp1zmp1znp1znp13np13np13np13np13n + p13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13np13n + p13np13np13np13np13np13np13np13np13np13np13np13np13np13nqF3nqF3nqF3nqF3nqF3nqF3n + qF3nqF3nqF3nqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF7oqF7oqF7oqF7oqF7oqF7oqF7o + qF7oqF7oqF7oqF7oqV/oqWHoqmHoqmLpq2PprGTprWbprmjqr2vqsXDrtHTst3rtu4Dtvofvw4/wyJjx + y57z06799e3////////////////////////////////////////////////////////////m1cSHSxKF + SxOITheITheITheITheITheITheITheITheITheITheITheJTxeJTxeJTxeHTheGTReJUBiSVhumYR65 + bSHFcyPFcyPIgTzLjlfMkl7MkFrIgDrGcyLGdCTGdCTGdCPGcyHGcyHGcyHFcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55bf326j12KjyzJPvwoLsu3rqtnPpsm3nrmfnrGPmqGDlp17lpl3lpl3lplzl + plzlplzlplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzm + plzmpVzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplznpl3npl3npl3npl3npl3npl3npl3npl3n + pl3np13np13np13np13np13np13np13np13np13mp13mp13mp13np13np13np13np13np13np13np13n + p13np13np13np13np13np13np13np13np13np13np13nqF3nqF3nqF3nqF3nqF3nqF3nqF3nqF3nqF3n + qF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF3oqF7oqF7oqF7oqF7oqF7op13oqF7oqF/o + qV/oqWDoqWDoqmHoqWLoqmPpq2TprGbprWjqr2zqsm/rtXXsuHrtu4Huv4nvxJDxyJnxy5/127r//fv/ + //////////////////////////////////////////////////////////3Ps5WHTBOGTBWITheITheI + TheITheITheITheITheITheITheITheITheHTReHTheRVBikXxu0Zx7AcCHHdCPHdCPFcyPFcyPFcyLG + dynGeS7GdyrFciLFcyPGdCTGdCTGdCTGdCPGcyHGch/FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55bf326j12KjyzJPvwoLsu3rqtnPpsW3nrWfnq2Pmp2Dlpl7lpV3lpV3lpVzlpVzlpVzlpVzlpVzm + pVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzm + plzmplzmplzmplzmplzmplzmplzlplzlplzlplzmplzmplzmplzmplzmplzmplzmplzmplzmp1zmp1zm + p1zmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp1znp1znp1znp1znp1znp1znp1znp1znp1znp1znp1znp1zn + p1znp1znp1znp1znp1znp1znp1znplznplznp1znp1znp1znp1znp1znp1znp1znp1znp1znp1znp1zn + p1znp1znp1znp1znp1znp1znp1znp1znp13np13np13np13np13np13nqF7nqF/nqF/nqF/nqGDnqGDn + qWDnqWLoqWLorGTorWbprmnpsGzqs3HqtXbsuXztvILtwIrvxZLwyZvxzaH45tH///////////////// + //////////////////////////////////////////////++mHOAQwmITheITheITheITheITheITheI + TheITheGTReFTBeITheRUxioYRy/bx/HciDHciDGcyHFcyPFcyPFcyPFcyPFcyPFciLFciHFciLFcyPF + cyPGdCTGdCTGdCTGdCTGdCLFcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j12Kjy + zJPvwoLsu3rqtnPpsW3nrWfnq2Pmp2Dlpl7lpV3lpV3lpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzl + pVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlpVzlplzlplzlplzl + plzlplzlplzlplzlplvlplvmplvmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzm + plzmplzmplzmplzmplzmplznplznplznplznplznplznplznplznplznplznplznplznplznplznplzn + plznplznplznplznplznplznp1znp1znp1znp1znp1znp1znp1znp1zmp1zmp1zmp1znp1znp1znp1zn + p1znp1znp1znp1znp1znp13np13np13np13nqF7nqF/nqF/nqF/nqF/nqF/nqGDnqWDnqWHnqWHoqmLo + rGTorWfpr2rpsW3qs3HqtnfruXztvYTtwYzvxpTwyZzxzqT56tf///////////////////////////// + ///////////////////////////////28OqfbTyBRg2ITheITheITheITheHTheGTReFTBeSVBmoYRy2 + aB7BbyDGcSDFcSDEcSDEcSDEcSDFciHFcyLFcyPFcyPFcyPFcyPFcyPFcyPFcyPFcyPFcyPGdCTGdCTG + dCPFciLFciDFcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j12Kfxy5LuwYHrunnqtXPo + sGznrGbmqmLlpl/kpl3kpVzkpVzkpVvkpVvkpVvkpVvkpVvkpVvkpVvkpVvlpVvlpVvlpVvlpVvlpVvl + pVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvl + pVvlpVvlpVvlpVvmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmpVzmplzmplzmplzmplzmplzmplzmplzm + plzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzmplzm + plzmplzmplzmplzmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp1znp1znp1znp1znp1znp1znp1zn + p1znp1znp1znp1znqF3nqF7nqF7nqF7nqF7nqF7nqF7nqF/nqF/nqV/nqWDnqWHoqmLoq2TprWbpr2rp + sW3qs3LqtXfsun7tvYXuwY3wxpbwyp3z1K79+PP///////////////////////////////////////// + ///////////////////q2siRWiSEShKITheFTBeFTReITheUVRmvZB3BbyDHciHFcSDEcCDDcCDDcCDD + cCDEcSDEcSDEcSDEcSDFciLFcyPFcyPFcyPFcyPFcyPFcyPFcyPFcyPFcyPFciLFciHFciHFciHFciDF + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bf326j12Kfxy5LuwYHrunnqtXPosGznrGbmqmLlpl/k + pV3kpFzkpFzkpFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvl + pFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpVvlpVvlpVvlpVvlpVvlpVvlpVvl + pVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlplvlplvlplvlplvlplvlplvlplvlplvlplvlplvl + plvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvm + plvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvnplvnplvnplvnplvnplvnplvnplvnplvnp1zn + p17np17np17np17np17np17np17np17np1/nqF/nqF/nqGDoqGLoqmLoqmTorWfpr2rqsW7qs3Prt3nt + un/tvofvw4/wyJjwy5/02Lf99+////////////////////////////////////////////////////// + ///////aw6yDSBCGTBWaWBqqYhy4ah/CcCDGciDEcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDE + cSDEcSDFciHFciLFciLFciLFciLFciLFciLFciHFciHEcSDEcSDFciHFciHFciHFciDFcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55bf326j12Kfxy5LuwYHrunnqtXPosGznrGbmqmLlpl/kpF3ko1zkpFzkpFvk + pFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvkpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvl + pFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpFvlpVvlpVvlpVvlpVvlpVvlpVvlpVvkpVrkpVrkpVrlpVvl + pVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlplvlplvlplvlplvlplvlplvlplvlplvlplvlplvmplvmplvm + plvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmplvmpVvmpVvmplvmplvm + plvmplvmplvmplvmplvmplvmplvmplvnplvnplvnplvnplvnplvnplvnplznp13np13np17np17np17n + p17np17np17np17np17np1/nqF/nqF/mqGHnqWHoqWPnqmXormjpr2vpsm/qtHXrt3rsu4Htv4nvxJLv + yZrwy5724Mb//////////////////////////////////////////////////////////////vy+j2Gq + XBHDbyDHciHFcSDEcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDFciHFciHFciHFciDFcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55bb326f12KfxypHuwIDrunnqtHLosGvnrGXmqWHlpV7kpFzko1vko1vkpFrkpFrkpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrjpFrjpFrjpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrlpVvlpVvlpVvlpVvl + pVvlpVvlpVvlpFvlpFvlpFvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvmpVvmpVvmpVvmpVvm + pVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmpVvmplvmplvmplvmplvmplvm + plvmplvmplvmplvlplvlplvmplvmplvmplvmp1vmp13mp13mp13mp13mp13mp13mp17mp17mp17mp17m + p13mp17mp1/mqF7mqF/mqGDnqWLnqWPnrGXnrWjor2vpsXDqtHbrt3vsu4Ltv4rvxZPvyZvxzqT569n/ + ////////////////////////////////////////////////////////////9/DZn2e/aRbCbyDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDFciHFciHFch/FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb226f02Kfx + ypHtwIDrunnptHLnsGvmrGXlqWHkpV7jpFzjo1vjo1vjo1rjo1rjo1rjo1rjo1rjo1rjo1rjo1rjo1rj + o1rjo1rjo1rjo1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rko1rk + o1rko1rko1rko1rkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrl + pFrlpFrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrkpVrkpVrkpVrlpVrlpVrlpVrlpVrlpVrlpVrl + pVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlplrlplrlplrlplrlplrlplrlplrl + plrlplrlplrmplrmplrmp1zmp1zmp1zmp1zmp1zmp1zmp1zmp13mp13mp13mp13mp13mp13mpl7mpl7m + qF7mp17np2DnqWHnqmPnq2XorGjor2zpsXHqtXfruH3svITuwYzvxpXwyZzy0Kj78ub///////////// + ///////////////////////////////////////////////15tbEciPAaxrCbyDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDFciHFciHFcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb22qb02KfxypDtwH/ruXjps3Hn + r2rmq2XlqGHkpF3jo1vjolrjolrjolnjolnjolnjolnjo1njo1njo1njo1njo1njo1njo1njo1njo1nj + o1njo1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nk + o1nkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpVrk + pVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrl + pVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpFrlpFrlpFrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrm + plvmplzmplzmplzmplzmplzmplzmplzmplzmpl3mpl3mpl3mpl3mpl3mpl3mpl7mpl7mp17mp1/np2Dn + qGLnqWTnq2borWnor23qsnPqtnjrun7tvYbuwo7vxpfwyp3z17T++vb///////////////////////// + ///////////////////////////////////rzrDFdSjBbR3CbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDFciHFcSDFcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb22qb02KfxypDtwH/ruXjps3Hnr2rmq2XlqGHkpF3j + o1vjolrjolrjolnjolnjolnjolnjo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1nko1nk + o1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrl + pFrlpFrlpFrlpFrlpFrlpFrlpFrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlplvlplzlplzmplzmplzm + plzmplzmplzmplzmplzmplzmpl3mpl3mpl3mpl3mplzmpl3mpl7mp17mp17mp1/nqGDnqGHnqmPnrGbo + rWnosG7qs3PqtnnruoDtvofuw4/vyJnwyp724MX//vz///////////////////////////////////// + ///////////////////////htYq+ZRHCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDF + cR/FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55bb22qb02KbwypDtwH/ruXjps3Hnr2rmq2XlqGHkpF3jo1vjolrjolrjolnj + olnjolnjolnjolnjo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1nio1nio1njo1njo1njo1nj + o1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njo1njolnjo1njo1njo1njo1njo1nj + o1njo1njo1njo1njo1nko1nko1rko1rko1rko1rko1rko1rko1rko1rkpFrkpFrkpFrkpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrlpFrl + pFrlpFrlpFrlpFrlpVrlpVrlpVrlpVrlpVrlpVrlpVrlplvlplzkplzlplzlplzlplzlplzlplzlplzl + plzlplzlplvlplvlplzlplzlplzlplzlplzlpl3lp13lp13mp1/mqGDmqWHmqmPnq2fnrmrosW7ps3Tq + t3nruoHsv4ntxJHvyJrwy6H35c////////////////////////////////////////////////////// + ///////79e/RklS/ZxXCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDFcB7FcB3FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55bb12qb02Kbwyo/swH/quXfos3Dmr2nlq2TkqGDjpFzio1riolniolnioljioljioljioljiolji + oljioljioljioljioljioljioljioljioljioljioljioljioljioljjoljjoljjoljjoljjoljjoljj + oljjoljjoljjoljjoljjoljjoljjoljjoljjoljjoljjoljjoljjoljjo1jjo1jjo1jjo1jjo1jjo1jj + o1jjo1jko1jko1nko1nko1nko1nko1nko1nko1nko1nko1nkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpVrkpVvkpVvkpVvkpVvkpVvkpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvl + pVvlpVzlpVzlpVzlpVzlpV3lpV3lpl3lpl7lpl/mqGDmqGLmqmXnq2jnrmvosHDps3Xqt3zru4PswIvu + xZTvyZzx0Kj99+7////////////////////////////////////////////////////////////369/J + fjfAahnCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcB/FcB3FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb12qb02Kbw + yY/sv3/puHfns3DmrmnlqmTkp2Djo1ziolrioVnioVnioVjioVjioVjioVjioVjioVjioVjioVjiolji + oljioljioljioljioljioljioljioljioljioljioljjoljjoljjoljjoljjoljjoljjoljjoljjoljj + oljjoljjoljjoljjoljjoljjoljjoljjoljjoljjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1nj + o1nko1nko1nko1nko1nko1nko1nko1nko1nko1nkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnkpFnko1nko1nk + o1nkpFrkpVvkpVvkpVvkpVvkpVvkpVvkpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVzlpVzl + pVzlpVvlpVzlpV3lpl3lpl3mpl/mqGDmqWLnqWTnq2jorWzpsHDptHbruH3svITtwYzvxpbvyZzz1bH8 + 9ev////////////////////////////////////////////////////////////v1r/BbBvBbR3CbyDC + byDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcR/EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bb12qb016bwyY/sv3/puHfns3Dl + rmnlqmTkp2Djo1ziolrioVnioVnioVjioVjioVjioVjioVjioVjioVjioVjioVjioVjioljioljiolji + oljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljiolji + oljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljioljjolnjolnj + olnjolnjolnjolnjolnjolnjolnjo1njo1njo1njo1njo1njo1njo1njo1njo1njo1nko1nko1nko1nk + o1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nko1nkpFrkpVvkpVvk + pVvkpVvkpVvkpVvkpVvkpVvkpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVvlpVrlpVrlpVvlpVvlpVvlpVzl + plzlplzlpl3mpl7mqGDmqWLnqmTnrGjor2zpsnLqtXfruX7svYbtwo/vx5fvyZz13L////////////// + ///////////////////////////////////////////////////bqHa/ZxTCbx/CbyDCbyDCbyDCbyDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55bX12qX016bwyY/sv37puHbns2/lrmjkqmPjp1/io1vh + olnhoVjhoVjhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfh + oVfhoVfhoVfhoVfhoVfhoVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfi + oVfioVfioVfioVfioVfioVfiolfiolfiolfiolfiolfiolfiolfiolfjolfjoljjoljjoljjoljjoljj + oljjoljjoljjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jko1jko1jko1jko1jko1jko1jk + o1jko1jko1jko1jko1jko1jko1jko1jko1jko1jko1jko1jkpFnkpFrkpVrkpVrkpVrkpVrkpVrkpVrk + pVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVrkpVvkpVvkpVzkpVzkpVzkpl3lpl7l + p1/lp2HmqWLmqmXmrWnnr23osnLptXnruYHrvontw5Hux5rwzKP45tD///////////////////////// + ///////////////////////////////////9+vfYomy/aRbCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcSDEcR7EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD55LX12aX01qbvyI/rvn7ot3bmsm/krWjjqWPipl/holvhoVnhoFjhoFjhoFfh + oFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfh + oVfhoVfhoVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfi + oVfioVfiolfiolfiolfiolfiolfiolfiolfiolfiolfiolfjoljjoljjoljjoljjoljjoljjoljjoljj + oljjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jj + o1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjpFnjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrj + pFrjpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFrkpFvkpFvkpFzkpFzkpVzkpVzlpV7lpl/lqGHlqWPm + qmbmrGrnr3Dosnbptn3quoPsv4rtxJTuyJzwzaT67t7///////////////////////////////////// + ///////////////////////26dzDciTAaxjCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDE + cB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD55LX12KX01qbvyI/rvn7ot3bmsm/krWjjqWPipl/holvhoVnhoFjhoFjhoFfhoFfhoFfhoFfhoFfh + oFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfi + oVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfioVfi + olfiolfiolfiolfiolfiolfiolfiolfiolfiolfjoljjoljjoljjoljjoljjoljjoVjjoljjoljjoljj + o1jjo1jjo1jjo1jjo1jjo1jjo1jio1jio1jio1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jjo1jj + o1jjo1jjo1fjo1jjpFnjpFrjpFrjo1rjo1rjo1rjpFrjpFrjpFrjpFrjpFrjpFrjpFrjpFrkpFrkpFrk + pFrkpFrkpFrkpFrkpFrkpFrkpFnkpFrkpFrkpFvkpFvkpVvkpVzlpl3lp1/lqGHmqWTmqmjnrWznsHHp + s3fqt37ru4TswI3txZbuyZ3y1LD9+PL///////////////////////////////////////////////// + ///////////u1r7HezDAaxrCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcR/EcB3EcB3EcB3E + cB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55LX12KT01qXv + yI7rvn3ot3Xmsm7krWfjqWLipl7holrgoVjgoFfhoFfhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbh + oVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoFbhoFbhoFbhoVbhoVbh + oVbhoVbhoVbhoVbhoVbhoVbhoVbioVfioVfioVfioVfioVfioVfioVfioVfioVfiolfiolfiolfiolfi + olfiolfiolfiolfiolfiolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjo1jj + o1njo1njo1njo1njo1njo1njpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnkpFnkpFnkpFnkpFnk + pFnkpFnkpFnkpFnkpFnkpFnkpFrkpVvkpVvkpVzlpl7lp2HlqGTmqWbmrGnnrm7nsHPptHnquYDrvYjt + wpDux5rvyqD13MD+/Pr////////////////////////////////////////////////////////////l + wJy+ZhLCbh/CbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcR/EcB3EcB3EcB3EcB3EcB3FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD55LX12KT01qXvyI7rvX3ot3Xmsm7k + rGfjqGLipV3hoVrgoFjgn1fgn1fgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bg + n1bgn1bgn1bgn1bgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbh + oVbhoVbhoVbioVfioVfioVfioVfioVfioVfioVfioVfioVfiolfiolfiolfiolfiolfiolfiolfiolfi + olfiolfiolfiolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjolfjo1jjo1njo1njo1njo1njo1nj + o1njo1njo1njpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnjpFnj + pFnjpFnjpFrjo1vjpVvjpVzkpV/kpmDkp2LkqGTlqmfmrGvnrm/nsnXptXvquYPsvortw5TuyZzvy6P2 + 4sv////////////////////////////////////////////////////////////9+vXXoGu/aRfCbyDC + byDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDE + cSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcSDEcR7EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD45LX12KT01aXux47rvX7ot3Xmsm7krGfiqGLhpV3goVrf + oFjfn1ffn1ffn1bfn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bg + n1bgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbh + oVbioVfioVfioVfioVfioVfioVfioVfioVfioVfiolfiolfiolfiolfiolfiolfiolfiolfiolfiolfi + olfiolfiolfiolfiolfiolfiolfiolfiolfiolfio1jio1nio1nio1nio1nio1nio1nio1nio1nio1ni + o1nio1nio1nio1nio1nio1nio1nio1nio1nio1nio1njo1njo1njo1njo1njo1njo1njo1njo1rjo1rj + pFvjpF3jpF7kpV/kpmDkp2LlqGXlqmjmrWznr3Hos3fptn/qu4XswI7txZfvy6Hw0av78uj///////// + ///////////////////////////////////////////////////79OzNiEjAahnCbyDCbyDCbyDCbyDC + byDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDE + cSDEcSDEcSDEcSDEcSDEcR/EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD45LX12KT01aXux47rvX7ot3Xmsm7krGfiqGLhpV3goVrfoFjfn1ffn1ffn1bf + n1bfn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgn1bgoFbgoFbg + oFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbgoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVXhoVXhoVbhoVbi + oVbioVbioVbioVbioVbioVbioFbioVbioVbioVbioVbioVbioVbioVbioVbioVbhoVbhoVbhoVbioVbi + oVbioVbioVbioVbioVbioVbioljioljioljioljioljioljioljioljioljioljioljioljio1jio1ji + o1jio1jio1jio1jio1jio1jio1jio1jjo1jjo1jjo1jjo1jjo1jjo1njo1njo1rjpFvjpF3jpF3kpV/k + pmDkp2LlqGTlqWflrGvnrm/osnXotXzquYPsvortwpPvyZ7wzaXy17X78+j///////////////////// + ///////////////////////////////////////y38zDcSPBbR3CbyDCbyDCbyDCbyDCbyDCbyDCbyDC + byDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDE + cSDEcSDEcR7EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD45LT12KT01aTux43rvXzotnTmsW3krGbiqGHhpVzgoVnfoFffn1bfn1bfn1Xfn1Xfn1Xfn1Xgn1Xg + n1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1XgnlXgnlXgn1Xgn1Xgn1Xgn1Xgn1Xg + n1Xgn1Xgn1Xgn1Xgn1Xfn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xg + n1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1XgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXhoFbhoFbhoFbhoFbh + oFbhoFbhoFbhoFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbioVbioVbioVbioVbi + oVbioVbioljioljioljioljioljioljioljioljioljioljioljioljioljio1jio1jio1jio1jio1ji + o1jio1jio1jio1jio1jjo1jjo1jjo1jjo1njo1njo1rjpFvjpFzjpFzkpF3kpV/kpmHkp2Llp2TlqWfl + rGvnrm/osXTotHrpuIHrvYjswZDux5vwzKTx0Kr13sT//v7///////////////////////////////// + ///////////////////////////juZHAahrBbh/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcSDEcSDEcR/EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD45LT12KT01aTu + x43rvXzotnTmsW3kqmbipmHho1zgoFnfn1ffnlbfnlbfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXf + nlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xf + n1Xfn1Xfn1Xfn1Xfn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xg + n1Xgn1Xgn1Xgn1XgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oFbhoFbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbioVbioVbioVbioVbiolfioljiolji + oljioljioljioljioljioljioljioljioljioljioljioljio1jio1jio1jio1jio1jio1jio1jio1ji + o1nio1njo1njo1njo1njpFnjpFvjpFzjpF3kpF3kpV7kpl/kp2Lkp2PlqWXlqmfmrGrnrm/osXTotHrp + uIDrvIfswY/uxpnwy6Lx0azy1bT46NX+/vz///////////////////////////////////////////// + /////////////v3esIO/aRjCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcR/EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447P02KTz1aTux43qvHzotnTmsG3j + qmbhpmHgo1zfoFnen1fenlbenlbenlXenlXenlXenlXenlXenlXenlXfnlXfnlXfnlXfnlXfnlXfnlXf + nlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfnlXfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xfn1Xf + n1Xfn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xg + n1XgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXhoFXhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbhoFbh + oVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbhoVbioVbioVbioFbiolfioljioljioljioljioljiolji + oljioljioljioljioljioljioljioljioVjioljiolfiolfioljioljioljioljiolnioljio1nio1ni + o1nio1vio1zjpF3jpV3jpV7jpV/jpmDkp2LkqGTkqWblq2nmrGzmrnDnsXXotXvpt4HqvIjswY/txpnu + y6Lw0Kzy1bTz2bv67+P////////////////////////////////////////////////////////////6 + 8urJfze/aRjCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDEcSDEcSDEcSDEcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447P02KPz1aTux43qvHvotnPmsGzjqmXhpmDgo1vfn1je + n1ben1XenlXenlTenlTenlTenlTenlTenlTenlTenlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTf + nlTfnlTfnlTfnlTfnlTfnlTfnlTfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tgn1Tg + n1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1TgnlTgnlTgn1Tgn1Tg + n1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Thn1Thn1Xhn1Xhn1Xhn1Xhn1Xhn1Xhn1Xhn1Xhn1Xhn1XhoFXhoFXh + oFXhoFXhoFXhoFXhoFXhoFXgoFXhoFXhoFbhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfh + oVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfholjholjholjholjho1jho1jho1nho1nipFvipFzjpF3jpV7j + pl/jpmDjp2Lkp2PkqWXkqWflq2nlrW3mr3HmsHTns3notn/puoTrvovswpPtx5vvzKTx0a3z17X02772 + 4cr9+PL////////////////////////////////////////////////////////////04tDLgz7AaxrC + bx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDEcSDEcSDEcSDEcR7EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD447P02KPz1aPux4zqvHvotnPmsGzjqmXhpmDgo1vfn1jenlbenlXenlXenlTe + nlTenlTenlTenlTenlTenlTenlTenlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTf + nlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTgnlTgnlTgnlTgnlTg + nlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgnlTgn1Tgn1Tgn1Tgn1Tg + n1Tgn1Tgn1Tgn1Tgn1Tgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1XgoFXgoFXgoFXgoFXgoFXgoFXg + oFXgoFXgoFXgoFXgoVbgoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfh + oVfhoVjhoVjhoVjhoVjholjho1nho1nho1nho1ripFripFvipV7ipV/ipmDjpmHkp2LkqGPkqWTkqmfl + qmnlrGvmrW3mr3HnsXTns3notn7puYPrvYjrv4/sw5buyJ7wzabx067z17f03L/13sT359P+/Pf///// + ///////////////////////////////////////////////////////qzK6/aRfBbh7Cbx/CbyDCbyDC + byDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDEcSDEcR/EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD447P02KPz1aPux4vqvHvotnPmsGzjqmXhpmDgo1vfn1jenVbenVXenVXenVTenVTenVTenVTenVTe + nVTenVTenVTenVTdnVTenVTenVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTfnVTf + nVTfnVTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTenlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTf + nlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfnlTfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tfn1Tf + n1Tfn1Tgn1Tgn1Tgn1Xgn1Xgn1Xgn1Xgn1Xgn1Xgn1XgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXgoFXg + oVbgoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVfhoVjholjholfh + oljholnio1nio1ripFripFvipVzipV7jpmDjpmHjp2LjqGPkqWXlqmflq2nmrGvmrW7mr3DnsXTns3fo + tHvptn/quYTrvIjsv47sw5Tux5vvy6Pwz6rx07Dz2Lf03cL459T89Or+/Pj///////////////////// + ///////////////////////////////////////+/Pncq3u/ahnCbh7Cbx/CbyDCbyDCbyDCbyDCbyDC + byDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcSDE + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447P02KPz1KPt + x4zpu3vntXPlr2ziqWXgpV/folrenlfdnVXdnVTdnFTdnFPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPd + nVPdnVPdnVPdnVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenlPe + nlPenlPenlPenlPenlPenlPenlPenlPenlPenlPenlPenlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPf + nlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pg + n1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1Tgn1TgoFbgoFfgoFfgoFfh + oFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoFfhoVfhoVfhoVfhoVjholjiolniolniolrio1vi + pFzipVzjpV7jpmHjp2LjqGTkqGXkqWfkqmnlrGvmrW7mrnHnsHPosnfotHrotn3puIHqu4XqvYnswI7t + w5XtxpvuyZ/vy6Tx0Kvy17j248389e3+/fz///////////////////////////////////////////// + ///////////////////////////+/frVnGTAahnCbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDC + byDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDEcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447L02KLz1KPtx4vpu3rntXLlr2vi + qWTgpV7folrenlfdnlXdnVTdnFTdnFPdnFPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPe + nVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenlPenlPenlPenlPe + nlPenlPenlPenlPenlPenlPenlPenlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPf + nlPfnlPfnlPfnlPfnlPfnlPfnVPfnlPfnlPfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pfn1Pgn1Tgn1Tgn1Tgn1Tg + n1Tgn1Tgn1Tgn1TgnlTgnlTgnlTgn1Tgn1Tgn1Tgn1Tgn1TgoFfgoFfgoFffoFfgoFfgoFfhoFfhoFfh + oFfhoFfhoFfhoFfhoFfgoVfgoVfgoVjhoVjholnholnho1rio1rho1vipF3ipF3ipV/ipmDjqGLjqWXj + qmbkqmnkrGvkrW7krnDlsHPmsXbms3nntXzotn/ouILpu4bqvYrrv47rwpLsxJftx5vtyJ7wzqn138b5 + 7d/9+fT//v7///////////////////////////////////////////////////////////////////// + ///////////9+fTkvZfAbR7Cbh7Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcB/Dbx3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD447L02KHz1KPtx4vpu3rntXLlr2viqWTgpV7folrenlfd + nlXdnVTdnFTdnFPdnFPdnFPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPdnVPenVPenVPe + nVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPenVPe + nVPenVPenVPenVPenVPenVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPf + nVPfnVPfnVPfnVPfnVPfnVPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlTfnlTfnlTfnlTfnlTfnlTf + nlTfnlTfnlTfn1Tfn1Tfn1Tfn1Tfn1XfoFffoFffoFffoFffoFffoFffoFfgoFfgoFfgoFfgoFfgoVfg + oVfgoVjgoVjgolnholnholrho1vho1zhpF3hpV7ipV/ipmHip2PjqGTjqWfjq2rkrWzkrW7kr3HlsXTl + snfmtHrntX3nuIDouoTpvIfqvorrv47rwpLsxJXsxJbtyJ3vzqf14Mf78uj///////////////////// + ///////////////////////////////////////////////////////////////////68+rpyKfNiknC + byLBbyLBbiDCbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDD + cCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcB/Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD447L02KHz1KPtx4vpu3rntXLlr2viqWTgpV7folnenlbdnlXdnVTdnFTdnFPd + nFPdnFPdm1PdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPdnFPenFPenFPenFPenFPe + nFPenFPenFPenFPenFPenFPenFPenFPenFPenFPenFPenVPenVPenVPenVPenVPenVPenVPenVPenVPe + nVPdnVPenVPenVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPfnVPf + nVPfnVPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlLfnlPfnlPfnlTfnlTfnlTfnlTfnlTfnlTfnlTf + n1Tfn1Tfn1TfoFXfoFbfoFbfoFffoFffoFffoFffoFffoVfgoVfgoVfgolfgolfholjholnho1nho1rh + o1vhpFzhpF3ipV7ipmDip2LjqGPjqWXjqmfkq2rkrW3krnDlsHPlsnbmtHnntXznt3/ouYLou4XpvYnq + v4zrwZDrw5TsxJbsxZfvy6L03sP57uD9+PL///////////////////////////////////////////// + ///////////////////////////////////////68urmwZ7VnGbIfznAbBy/ahrBbiDBbyLBbyHBbh/C + bx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDD + cCDDcCDDcCDDcCDDcB/Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD447L016Hy1KLtxovpu3nmtHHkr2rhqWPfpF3eoVjdnVXcnVPcnFPcm1Pcm1Lcm1Lcm1Lcm1Lcm1Lc + m1Lcm1LcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLd + nFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLd + nVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLe + nlLenlLenlLenlLenlLenlLenlLenlLenlLfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfoFXf + oFbfoFbfoFffoFffoFffoFffoVffoVffoVfgoljholjholjholnho1rho1vhpFzhpV3ipV/ipmDiqGLj + qGPjqWXkq2jkq2nlrWzlrnDmsHPmsnbms3rntX3ot4DouYPpu4bqvYrqv47qwZHrwpPsw5Tsx5vvzaf1 + 38b89/D///////////////////////////////////////////////////////////////////////// + //////////////737eHhuZHMhUO/aBe+aBe/bB3BbiHBbyLBbyLBbyLBbyHBbh/Bbh/Bbh/Cbx/Cbx/C + bx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcCDD + cB/Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7G + ch7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD347Lz16Hy1KLs + xovou3nmtHHkr2rhqWPfpF3eoVjdnVXcnVPcnFPcm1Pcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1LcnFLcnFLc + nFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLcnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLd + nFLdnFLdnFLdnFLdm1LdnFLdnFLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLdnVLenVLenVLenVLe + nVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenVLenFLenVLenVLenlLenlLe + nlLenlLenlLenlLenlLenlLfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnlPfnVPfnlbfn1ffn1ffoFffoFff + oFfgoVfgoVjgoVjgoVngoVnholrho1vho1zipF3ipF7ipWDjpmHjp2PjqGXkqmfkqmnkrGzlrm/lr3Hm + sXTmsnnns3zot3/ouYLpuYbpvInqv43qwZHrw5Tsw5XsxZjvz6r248367+L++/j///////////////// + ///////////////////////////////////////////////////////////////////159ngto/RklnF + eDC9aBi+axvAbyHBbyLBbyLBbyLBbyLBbyLBbyLBbyLBbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDC + byDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDcCDDcB/Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gch7G + ch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD347Lz16Hy1KLsxovounnltHHkr2rh + qWPfpF3eoVjdnVXcnVPcnFLcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lc + m1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ld + m1Ldm1Ldm1Ldm1LdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLenFLenFLenFLenFLenFLe + nFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenVLenVLenVLenVLenVLe + nVLenVLenVLenVLfnVPfnVPfnVPfnVPfnVTfnVTfnVTfnVbfnlffoFffoFfgoFfgoVjgoVjgoVjgoVng + olrgo1vgo13hpF7ipV/ipWDjpmLjp2TjqGbkqmjkq2rlrG3lrm/lsHLmsXXms3jntXzot4HouITpu4fp + vYvqv4/rwZLrwpPrxJbtyJ3w0q735tL9+fP///////////////////////////////////////////// + /////////////////////////////////////////fz05NTaqXvDdCq8ZhW9aBm/ax7AbyHAbyLAbyLB + byLBbyLBbyLBbyLBbyLBbyLBbyLBbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDC + byDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDcCDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gch7Gcx/IdSLJeSbL + fivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD34rLz16Hy1KLsxovounnls3HirGrhqGPfo13eoFjdnFXc + nFPcm1LcmlLcmlHcmlHcmlLcmlLcmlLcmlLcmlLcmlLcmlLcmlLcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lcm1Lc + m1Lcm1Lcm1Lcm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ldm1Ld + nFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLdnFLenFLenFLenFLenFLenFLenFLenFLe + nFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenFLenVLenVLenVLenVLenVLenVLenVLenVLe + nVPenVPfnVPfnVPfnVTenVPenlTfn1bfoFffoFffoFfgoVjgoljfolngolrgpFzgpF3gpF7hpWDhpmHh + p2PiqWXjqmfjq2nkrGvkrm7lr3HlsXTms3fmtHrntn3nuIHouoXpvYnqvo3qwZHrwpPrwpXsxpvw07H2 + 5M/68+n++/n///////////////////////////////////////////////////////////////////// + ///////////////y4tDbrH7Oj1LCcie9Zxe/bB7AbiLAbiLAbiLAbiLAbyLAbyLAbyLAbyLBbyLBbyLB + byLBbyLBbyLBbyDBbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDC + byDCbyDCbyDCbyDDcCDDcCDDcCDDcCDDcCDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gch7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0Ta + nE/RnVU6Lhs8MR9IQTD34rHz1qDy06LsxYnouXjls3DirGngp2LeolzeoFfdnVTcnFLcm1HcmlHcmlDc + mlDcmlDcmlHcmlHcmlHcmlHcmlHcmlHcmlHcmlHcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hb + m1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1HcnFHcnFHc + nFHcnFHcnFHcnFHcnFHcnFHcnFHcnFHcnFHcnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHd + nFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnVHdnVHdnVHdnVHdnVHdnVHdnVLdnVLdnVLdnlLenlPe + nlPenlPen1TfoFffoFffoFjfoVjfolnfo1rfo1zgpF3gpV7gpmDgp2Lhp2PiqWXiqmjirGrjrWzkrm/l + r3LlsnXmtHjntXznt3/ouYLou4bpvYrqv47qwZHqwpPsxJftyaDy1rb46tr+/fr///////////////// + ///////////////////////////////////////////////////////////////////+/Prx4M3UnmjC + dCi8aBW9ahq+bB/AbiLAbiLAbiLAbiLAbiLAbiLAbiLAbyLAbyLAbyLAbyLBbyLBbyLBbyLBbyLBbyDB + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDC + byDCbyDDcCDDcCDDcCDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9I + QTD34rHz1qDx06LsxYnnuXjls3DirWnfp2Ldolzcn1fcnVTbnFLbm1HbmlHbmlDbmlDbmlDbmlDbmlDb + mlHbmlHbmlHbmlHbmlHbmlHbmlHbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hc + m1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1HcnFHcnFHcnFHcnFHcnFHc + nFHcnFHcnFHcnFHcnFHcnFHcnFHcnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHdnFHd + nFHdnFHdnFHdnFHdm1Hdm1HdnFHdnFHdnVHdnFLdnVLdnVLdnVLdnVLdnlLenlPenlTfnlXfn1bfoFjf + oVrfoVrfolvgol3go17hpGDhpmHhp2PiqGXiqWfiq2njrGzjrm/jr3LksXTlsnjmtHvotn7nuILpuobp + vInqvo3qwJDrwpLrw5Xsx5zy17n46dj79Ov///3///////////////////////////////////////// + //////////////////////////////////////////3u2cHcs4bNj0/BdSq9aRq/bR/AbiK/biK/biK/ + biLAbiLAbiLAbiLAbiLAbiLAbiLAbiLAbyLAbyLAbyLAbyLBbyLBbyLBbyLBbyHBbh/Bbh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDcCDDcCDD + cCDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7Gch7Gcx/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9IQTD34rHz1qDx06Ls + xYnnuXjls3DirWnfp2Ldolzcn1fbnFTbnFLbm1HbmlHbmlDbmlDbmlDbmlDbmlDbmlHbmlHbmlHbmlHb + mlHbmlHbmlHbmlHbmlHbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hbm1Hcm1Hcm1Hcm1Hcm1Hc + m1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hc + m1Hcm1Hcm1Hcm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hd + m1Hdm1Hdm1Ldm1Ldm1LdnFLdnVLdnVLdnVPenVPenlTenlTenlXfnlbfn1jfoFvgolzgol3go1/gpGDh + pWLhpmTip2biqmjiq2vjrG3krm/kr3Pksnbms3nmtXznt4DouYPou4fpvYvqv4/qwJHqwpHsxJftyqDz + 2b368OX//v3///////////////////////////////////////////////////////////////////// + ///////////////8+PLs07jVomzBeC6+byDAcCDAcCHAcCLAbyK/bSK/bSK/biK/biK/biLAbiLAbiLA + biLAbiLAbiLAbiLAbiLAbiLAbyLAbyLAbyLAbyLBbyLBbyHBbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDbyDDbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7F + cR7Fch/IdSLJeSbLfivOhDLSizvVk0TanE/RnVU6Lhs8MR9JQTD34rHz1qDx06LsxYnnuXjls3DirGnf + p2Ldolvcn1fbm1Tam1LbmlHbmlHbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlHbmlHbmlHbmlHbmlHbmlHb + mVHbmVHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHbmlHcmlHcmlHcmlHcmlHcmlHcmlHc + mlHcmlHcmlHcmlHcmlHcmlHcmlHcmlHcmlHcmlHcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hcm1Hc + m1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Hdm1Ldm1Ldm1LdnFLd + nFLdnVLenlPenlTenlTen1Xen1ben1beoFjfoFnfoVvgo17hpF/hpWHhpmPip2XiqWfiqmrjq2zjrW/k + r3LlsXXls3jmtHvmtn7nuYLouobpvYrqv43pwZHqwpPrw5TuyqDz28D569v9+PH///////////////// + ///////////////////////////////////////////////////////////////////79u/qz7PVonDK + iUrAdCm9cCS/dCrAdCnCcyfAcSS/byO/bSK/bSK/bSK/bSK/biK/biK/biK/biLAbiLAbiLAbiLAbiLA + biLAbiLAbiLAbyLAbyLAbyLAbyLBbyHBbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/C + bx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDDbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Fch/HdCLJeSbL + fivOhDLSizvVk0TanE/RnVU7Lhs8MR9HQC/34bDz1qDx06LsxIjnuHjlsm/irGjfpmHdoVrcnlbbm1Pa + mlHamVDbmFDbmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmVDbmVDbmVDbmVDbmVDbmVDbmVDbmVDbmVDb + mlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDc + mlDcmlDcmlDcmlDcmlDcmlDcmlDcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Ddm1Dd + m1Ddm1Ddm1Ddm1Ddm1Ddm1Ddm1Ddm1Ddm1Ddm1Hdm1Hdm1Hdm1HdnFHdnFHdnFLenVPenVPenlTen1Te + n1Xen1bfoFjfoVnfolrfo1vfpF3gpWDhpmPhqGbiqWfiqmrjrG3jrXDjr3PksXblsnnmtXzmt4DnuoPo + vIfovovpwI7qwZDqwpLrxZjtzKXz3sP89Ov///////////////////////////////////////////// + ///////////////////////////////////////////58ObnxqXKiEa9bR+7aRq9bSG/cijAdCnAdCrA + cyjAcia/cCS/biO/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biLAbiLAbiLAbiLAbiLAbiLAbiLAbiLA + biLAbyLAbyLAbyHBbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/C + byDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbyDCbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Fch/HdCLIeCbKfSvOhDLTjDvYlUXa + nE/PnFU4LBo3Lh1GPi/34bDz1qDx06LsxIjnuHjlsm/irGffpmHdoVrcnlbbm1PamlHamVDZmFDamE/a + mU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmVDbmVDbmVDbmVDbmVDbmVDbmVDbmVDbmlDbmlDbmlDb + mlDbmlDbmlDbmlDbmlDbmlDbmlDamlDbmlDbmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDcmlDc + mlDcmlDcmlDcmlDcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dcm1Dbm1Dbm1Dcm1Dcm1Ddm1Ddm1Dd + m1Ddm1Ddm1Hdm1Hcm1HcnFHcnFHdnFLdnVLdnVPdnVPdnVTdnVTdnlXenlben1feoFjeoVrfo1vfo13f + pF7gpWDgpmLgqWbhqmnirGzjrm/jr3LjsXXksnjmtHzmtn/muIPnu4fovYrov47pwZHpwZPqw5btzaXz + 3sT57uD9+fT///////////////////////////////////////////////////////////////////// + ///////////////58ejhuZTSmWPFeTS+ahy9aRm9biK+cCS/cCa+cSe/cie/cifAcibAcSTAcCO/biG/ + bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biLAbiLAbiLAbiLAbiLAbiLAbiLAbiLAbiLAbyLAbyHA + bh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDC + byDCbyDCbyDCbyDCbyDCbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7FcR7Fch/HdCLJeCbMfivRhTPMhzrAhkG+jEq0i1EzKRk2LR1G + Pi/34bDz1qDx06LrxIjnuHjksm/hq2ffpmHdoVrbnlbam1PZmlHZmVDZmFDZmE/ZmE/ZmU/amU/amU/a + mU/amU/amU/amU/amU/amU/amVDamVDamVDamVDamVDamVDamVDamVDamlDamlDamlDamlDamlDamlDa + mlDamlDamlDamlDamlDamlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDb + mlDbmlDbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1Dbm1DcmlDcmlDcmlHcm1Hcm1Hcm1Hc + nFHcnFLcnFLdnFPdnVPdnVTdnVTdnlXdnlbdn1fen1neoFreoVzeo13fpF/gpWHgpmPhp2bhqWjhrG3i + rXDisHLksnfls3rmtX3mt4HnuYTnu4jovYzpv4/pwJHpwZPrxpvuz6z14sz89/D///////////////// + //////////////////////////////////////////////////////////////////////736t7dsIbH + fz+5YxS6ZBa9aR2/bCC/biG/biK+cCO+cCS+cCS+cCS+cCS/cSTAcSO/biK/bSG/bSG/bSG/bSG/bSG/ + bSG/bSK/bSK/bSK/biK/biK/biK/biLAbiLAbiLAbiLAbiLAbiLAbiLAbiLAbSDAbh/Abh/Abh/Bbh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDC + byDCbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7F + cR7FcR7FcR7FcR7FcR7Icx/KdiPIeCbCeCqxci6lcTSndzywg0iwiVAzKRk2LR1GPi/34bDz1qDx06Lr + xIjnuHjksm/hq2ffpmHdoVrbnlbam1PZmlHZmVDZmFDZmE/ZmE/ZmE/amE/amE/amU/amU/amU/amU/a + mU/amU/amU/amU/amVDamVDamVDamVDamVDamVDamFDamVDamVDamlDamlDamlDamlDamlDamlDamlDa + mlDamlDamlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmVDbmVDbmVDb + mlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlDbmlHbmlHbmlHcmlHcm1Hcm1Hdm1LdnFPdnFPdnFTdnFTd + nVXdnlbenljen1jeoFrfoVvfol3fo17fo2DgpWPgpmXhqWfhqmriq23irXDjsHXksnjktHzltn/muIPn + uofovYvpvo/pwJHqwZTqw5jv0Kz14s368OX++/j///////////////////////////////////////// + ///////////////////////////////////////////159fhuZPNjlXDdjK6ZBa7Zhq9ayG9ayG+bCG+ + bCG/biG/biG/biK+byK+byO+byO/byO/byO/biG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/ + bSK/biK/biK/biK/biLAbiLAbiLAbiLAbiLAbiLAbiLAbR/AbR/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbyDCbyDCbyDCbh3Cbh3Cbh3C + bh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7FcR7FcR7FcR7FcR7FcR7GcR7Icx7H + ch64ah2mYh2dXyCYXiSYZCmhbjOqeT2yhUixilAzKRk2LR1GPi/34bDz1qDx0qDrxIfnuHfksW7hqmbf + pWDdoFnbnVXamlLZmVDZmE/Zl0/Zl07Zl07Zl07Zl07Zl07amE7amE7amE7amE7amE7amE7amE7amE7a + mE/amE/amE/amE/amE/amE/amE/amE/amE/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/b + mU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmk/bmk/bmk/bmk/b + mk/bmk/bmlDbmlDbmlDbmlDbm1Dbm1Dcm1HcnFHdnFLdnFLdnVPdnFTdnVXdnlbenlfen1jeoFneoVvf + olzfo1/gpWHgpWPhp2XhqGjhqWviq23jrnHjsHTksXfltHzlt4DnuYTnu4fovYvov47pwJDqwpPrx5zw + 0rH36Nf9+vb///////////////////////////////////////////////////////////////////// + ///////////////+/Pry4dDbroLBcyu6ZBa6ZRe8aB29ayG9ayG9ayG9ayG9ayG9ayG+bSG/bSG/biG/ + biG/biG/biG/biG/bSG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/ + biK/biLAbiLAbiLAbiLAbiLAbiLAbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/Cbx/CbyDCbyDCbx/Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3FcR7FcR7Gch7Icx7Hch7EcR60ZxucWhiKUBaJURiPVx6U + XSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDz1qDx0qDrxIfnuHfksW7hqmbfpWDdoFnbnVXamlLZ + mVDZmE/Zl0/Zl07Zl07Zl07Zl07Zl07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE/amE/a + mE/amE/amE/amE/amE/amE/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/bmU/bmU/b + mU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmk/bmk/bmlDbmlDbmlDbmlDb + m1Dbm1HcnFHcnFLcnFLcnFPdnVTdnVTenlXen1fen1jeoFneoVvfolzfo17gpGDgpWLgpmXhqGfiqmri + q23irXDjr3PksHbls3nltX3mt4HnuobovYvov47owZHpwZLqxZnw07L259P78+v+/fv///////////// + ///////////////////////////////////////////////////////////////////////x38zZqHvL + i1C+bSW6ZBi6Zxy8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG/bSG/bSG/bSG/bSG+bSG+ + bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biK/biLA + biLAbiLAbiHAbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Cbx/Cbx/Cbx/Cbx/Cbx/CbyDCbx/Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3E + cB3EcB3EcB3EcB3EcB3FcR3Ich7DcB6xZhueWxiUVReJThWHTRWLUBaNUxmRWB6VXSObZSqibjOqeT2y + hEixiVAzKRk2LR1GPi/34bDy1p/x0qDrxIfnuHfksW7hqmbfpWDdoFnbnVXamlLZmVDZmE/Zl0/Zl07Z + l07Zl07Zl07Zl07Zl07Zl07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE/amE/amE/amE/amE/a + mE/amE/amE/amE/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/amU/bmU/bmU/bmU/bmU/b + mU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmVDbmVDbmlDbmlDbm1Dbm1Hbm1HbnFHcnFLcnFLcnFPc + nVTcnVXcnlbdn1fen1jeoFrfoVvfol3gpF/gpGHgpmPhp2bhqWjiqmviq27jrnHjsHXksnfltHvmtn7m + uILnuYbovIrov43owJDpwpTryJ7w1rb57d///v7///////////////////////////////////////// + ///////////////////////////////////////////8+PTt1r/QlV7AcSm4YRK5ZBi7aB28ah+8aiC8 + aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+ + bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biLAbiLAbiHAbR/A + bR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/C + bx/Cbx/Cbx/Cbx/Cbx/Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3EcB3GcR3Ich7F + cB3Bbx2rYhmQUhWIThWHTRWIThWKTxWKTxWLUBaNUxmRWB6VXSObZSqibjOqeT2yhEixiVAzKRk2LR1G + Pi/34bDy1p/w0qDrxIfmuHfjsW7hqmbfpWDdoFnbnVXamlLZmVDZmE/Zl0/Zl07Zl07Zl07Zl07Zl07Z + l07Zl07Yl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/Z + mU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/ZmU/amU/amU/amU/amU/amU/amU/amU/amU/a + mU/amE/amFDamFDamVDamVDamVDamVDamlHbm1Hbm1Lbm1LbnFPbnFTbnVXcnVbcnlfcn1jcoFncoFvd + oVzeo17fpGDfpWPgpmXgqGjhqmvhq27irXDjr3TjsXfks3vltX7mt4LmuYbnu4novYzpv4/pv5HrxZvw + 1rf36dn79e3///////////////////////////////////////////////////////////////////// + ///////////////9+/foyazVoHDGfz+8ayK4YhW7aB28aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9 + ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/ + bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/bSK/biK/biK/biLAbiDAbR/AbR/AbR/AbR/AbR/A + bR/AbR/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx/Cbx/C + bx7CbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3EcB3EcB3EcB3EcB3FcB3GcR3Hch28bBymXxmaWBeOURWHTRSHTRSJ + ThSKTxWKTxWKTxWKTxWLUBaNUxmRWB6VXSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDy1p/w0qDq + xIfluHfjsW7gqmbepWDcoFnanVXZmlLYmVDYmE/Yl0/Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Y + l07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/Z + mE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/ZmE/amE/amE/amE/amE/amE/amE/amE/amFDamFDamFDa + mVDamVDamVHamVHbmlLbmlLbm1PbnFTbnFXbnVbcnlfcnljcn1rdoFvdoV3domDdpGLepWPfp2bhqGjh + qWvhq27irXLir3XjsXjks3vltYDmt4PnuofnvIvovY3ovo7qwZTsx5/x2Lz68eb///////////////// + ///////////////////////////////////////////////////////////////////////69O3jv53L + iU64YhO3YBG5ZRq6Zx67aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9 + ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/ + bSG/bSG/bSG/bSG/bSG/bSK/bSK/bSK/biK/biG/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/A + bh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Cbx/Cbx7CbhzCbhzCbh3C + bh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3D + bx3Dbx3Dbx3Dbx3EcB3Hch3Hch7EcB26ahyhXBiMUBSFTBOGTBSITRSJThSJThSJThSJThSKTxWKTxWK + TxWLUBaNUxmRWB6VXSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDy1Z/w0qDqw4flt3bjsG7gqmXe + pF/coFjanFXZmVHYmE/Yl07Ylk7Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7Z + mE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7amE7amE/amE/amE/amE/amE/amU/amU/amVDbmlDbmlHbmlLbm1Pb + m1Pbm1TbnFXcnVbcn1jdn1ndoFvdoVzeol7eo2DepWLfpmXfqGjgqWrhq23irHDjrnPksXbksnrltH7m + t4LnuYbnu4rovo3ovo/pwJHsyJ/y28D46tv89/H///////////////////////////////////////// + ///////////////////////////////////////////79O3kw6TOk13Deja4YRK4YhS7Zxy7aR67aSC7 + aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9 + ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/ + bSG/bSG/bSK/bSK/bSK/bCC/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/CbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3C + bh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Ebx3GcR3F + cB20ZxuiXRiVVRaKTxSGTBOITRSJThSJThSJThSJThSJThSJThSJThSJThSKTxWKTxWLUBaNUxmRWB6V + XSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDy1Z/w0qDqw4flt3bjsG7fqmXdpF/coFjanFXZmVHY + mE/Yl07Ylk7Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7Z + mE7ZmE7ZmE7ZmE7amE/amE/amE/amU/amU/bmlDbmlHbmlHbmlLbm1Lbm1TbnFTbnFXcnVfcnljcnlnd + n1vdol3eo1/epGHepWTfp2bgqWnhqmzhq2/irnLjsHXjsXnktHzltoDmuIPnuofovIvovYzovo/qwpXt + yqPz3sb79Oz///////////////////////////////////////////////////////////////////// + ///////////////////47+XguZXAci24YRS2XxG5ZBi7aBy7aB27aB27aB27aR+7aSC7aSC7aSC7aSC7 + aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+ + bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSK/ + bSK/bB+/bB+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/BbRzBbRzCbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3C + bh3Cbh3Cbh3Cbh3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3Dbx3EcB3GcR3FcB3Cbh2vZBqYVxeHTBSFTBOHTRSI + ThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSLUBaNUxmRWB6VXSObZSqibjOqeT2y + hEixiVAzKRk2LR1GPi/34bDy1Z/w0qDqw4flt3bjsG7fqmXdpF/boFnanFXZmVHYmE/Yl07Ylk7Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE/ZmE/ZmE/ZmE/ZmE/Z + mU/ZmVDamlDbmlHbmlHbmlLbm1Lbm1PbnFTbnFXcnVbcnljcnlndn1vdoV3dol7eo2DepGPfpmXfqGjg + qmvhq27hrHHir3TjsXfjs3vktX/luIPmuobnvIrovo3pv4/pwJLsy6Tz3sX57uL9+fT///////////// + ///////////////////////////////////////////////////////////////////////269/csYnO + kVu+byi4YhW4Yxe6Zhy6Zx26Zx27aB27aB27aB27aB27aB67aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8 + aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+ + bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bR+/bB+/bB+/bB+/ + bR+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/B + bh/Bbh/Bbh/Bbh7BbRzBbRzCbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3C + bh3Dbx3Dbx3Dbx3Dbx3EcB3GcR3Bbh2uYxqcWReRUxaGTBSFSxSITRSITRSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWNUxmRWB6VXSObZSqibjOqeT2yhEixiVAzKRk2LR1G + Pi/34bDy1Z/w0qDqw4flt3bjsG7fqmXdpF/boFnZnFXZmVHYmE/Yl07Ylk7Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Z + l07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE/ZmE/ZmE/ZmU/ZmU/ZmU/ZmVDamlDamlHamlHbmlLb + m1Pbm1TcnFXcnVbcnVfcnljdn1rdoFveoV7eol/epGLfpWTfpmfgqGngqWzhq2/irnLjsHbjsnnktH3l + toHmuYTmu4jnvIvnvY3ovo/pwpbtzqr148/9+fT///////////////////////////////////////// + ///////////////////////////////////////////+/fzz5dbXpnjAdTC0Wwy3YBO5ZRm6Zhy6Zx26 + Zx26Zx26Zx26Zx27aB27aB27aB27aB27aR+7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8 + aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+ + bCG+bCG+bCG+bCG+bCG/bSG/bSG/bSG/bSG/bSG/bSG/bSG/bB6/bB6/bB+/bB+/bB+/bB+/bR+/bR+/ + bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh3B + bRzBbRzBbRzBbRzCbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Cbh3Ebx3HcR7E + cB2/bRypYBmOURWGTBSFSxSGTBSITRSITRSITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSJThSJThSJThSJThSKTxWMUhiQVx2VXSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDy1Z/w0qDq + w4flt3bjsG7fqmXdpF/boFnZnFXXmVHXmE/Xl07Ylk7Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3XlU3Ylk3Ylk3Zl03Zl03Zl03Zl03Zl03Zl0zZl03Zl03Zl03Zl07Zl03Z + l03Zlk7Zlk7Zlk7Zl07Yl0/YmE/YmE7ZmU/ZmVDZmVDZmVDamlHZmlLam1Pam1TanFXbnVbcnVjcn1nc + n1rdoFzeol/domHepGPfpWbgp2jgqWvgqm/hrHLirnTjsHjjs3zktX/luIPmuofmvIrovo7ovo/owJPt + zqr148/58OX+/Pr///////////////////////////////////////////////////////////////// + ///////////////////x4M7br4bIh0y9bSa1XQ+3Yhe5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26 + Zx26Zx27aB27aB27aB27aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8 + aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+ + bCG+bCG/bSG/bSG/bSG/bSG/bSG/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/AbR/A + bR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh/Bbh/Bbh/BbRzBbRzBbRzBbRzBbRzB + bRzCbhzCbhzCbhzCbhzCbh3Cbh3Cbh3Cbh3Cbh3Cbh3Dbh3Ebx3FcB25aRykXRmYVxeMTxWGTBSGTBSI + TRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSJ + ThSKTxWMUhiQVx2VXSObZSqibjOqeT2yhEixiVAzKRk2LR1GPi/34bDx1Z/v0qDpw4fltnbisG3fqmXc + o17an1jYm1TXmVDWl07Wlk3XlU3XlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk7Ylk7Ylk7Y + l07Yl07YmE/YmU/ZmVDZmVDZmVHZmVLZmlPZm1TanFXanFbanVjbnlncn1vcoF3doV/do2HepGTepmbf + qGnfqWzgq27hrXLir3bisXnjs33ktYHmt4TmuojmvIvnvYznv5Dpw5juz6z36tr+/Pr///////////// + ///////////////////////////////////////////////////////////////////////9+vft18LU + oHG6aSG1XhC2YBO4ZBm5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27 + aB27aB27aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9 + ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/ + bSG/bSG/bR+/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/AbR/AbR/AbR/A + bR/AbR/AbR/Abh/Abh/Abh/Abh/Bbh/Bbh/Bbh/Bbh7BbRzBbRzBbRzBbRzBbRzBbRzBbRzBbRzCbhzC + bhzCbhzCbhzCbh3Cbh3FcB3FcB3Cbh24aBueWhiIThSDSxOESxSGTBSITRSITRSITRSITRSITRSITRSI + TRSITRSITRSITRSITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWMUhiQVx2U + XSKaZCmibjOqeT2yhEixiVAzKRk2LR1GPi/34bDx1Z/v0qDpw4fltnbisG3fqmXco17an1jYm1TXmVDW + l07Wlk3WlU3XlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk7Yl07Yl07Yl0/ZmE/ZmFDZmFDZmVHZ + mVLZmlPam1Tam1XanFbbnVfbnlnbn1vcoF3col7do2HdpGTepWbfp2ngqWzhqm7hrHLhr3XisXnjs3zk + tYDlt4TmuYjnvIvnvY7nvY7owpbv07P25dL79Ov+/fz///////////////////////////////////// + ///////////////////////////////////////////+/fvs1L7VonXGgka5Zhy1XxS3Yxm4ZRy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27Zx27aB67aSC7 + aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9 + ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG/bCC/bB6/bB6/ + bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/A + bh/Abh/Abh/Abh/Bbh/Bbh/Bbh7BbRzBbRzBbRzBbRzBbRzBbRzBbRzBbRzBbRzCbhzCbhzDbxzGcB3D + bx2wZBqfWhiSUxaJThSESxOGTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSI + TRSITRSITRSITRSJThSJThSJThSJThSJThSJThSJThSJThSJThSKTxWMUhiQVx2UXSKaZCmhbjKqeT2y + hEixiVAzKRk2LR1GPi/34bDx1Z/v0aDpwofltnbisG3eqWXco17an1jYm1TXmVDWl07Wlk3WlU3WlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzY + lkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Yl03Yl07Yl0/Zl0/ZmFDZmFDZmFHZmFLZmVTamlTanFXanVbbnljb + n1rboFzcoV7col/dpGHepWTepmfeqGrgqm3hq3DhrXPisHbjsnrjtH7ktoHmuIXmuonmvIznvY3ov5Lq + xZzw1rj4697///7///////////////////////////////////////////////////////////////// + ///////////////////8+PToyq/JiE25Zx60XA+1YBS3Yxq4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aR+7aSC7aSC7aSC7aSC7 + aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9 + ayG9ayG9ayG9ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCG+bCC+ax6/ax6/bB6/bB6/bB6/bB6/bB6/ + bB6/bB6/bB6/bB+/bB+/bB+/bB+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/A + bh/Abh/Bbh3BbRzBbRzBbRzBbRzBbRzBbRzBbRzBbRzCbhzEbxzDbhy/bByuYxmXVhaFTBSDSxOFTBSG + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSI + TRSITRSJThSJThSJThSJThSJThSJThSJThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyyg0exiVAzKRk2LR1G + Pi/34bDx1Z/v0qDpwofltnbisG7fqWXco17an1jYm1XXmVDWl07Wlk3WlU3WlUzWlUzWlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlU3YlU3Ylk3Yl03Y + l03Yl03ZmE7Zl07ZmE/ZmE/ZmFHZmFLZmVPamlTam1Xam1banFjbnVnbn1vcoF3col/do2LdpGTepmfe + qGnfqWzfq2/grXPhr3bisXrjs33ktYHluIXmuYjnvIznvY7nvpDqxZzw1rn36dr89e3///////////// + ///////////////////////////////////////////////////////////////////////79fDkw6PQ + mWfAdzS3Yxi1XxO3Yxm4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aB+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7 + aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9 + ayG+bCG+bCG+bCG+bCG+bCG+bCG+bCC+ax++ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/ + bB+/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/Abh/Abh7AbRzBbRzB + bRzBbRzBbRzBbRzCbRzDbhzEbhy+bByqYBmZVhePURWFSxSESxSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJ + ThSJThSJThSJThSJThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi/34bDx1Z/v0qDp + wofltnbir27fqWXdo17an1jYm1XXmVDWl07Wlk3WlU3WlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlU3XlU3XlU3XlU3Xlk3Yl03ZmE7Zl07ZmFDZmFDZ + mFHZmVHZmlLamlTam1banFfbnVjbnVrcnlzcoF7doWDdo2LdpWXep2jfqGvfqm7gq3HgrnThsHfisXvj + tH/kt4LluYbluormvIznvY3owJTryKLx2r/68+r///////////////////////////////////////// + ///////////////////////////////////////////////58OfhvZvGgkS0XA+zWw21YBO2Yxi3ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26 + Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aB67aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8 + aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+bCG+ + bCG+bCG+bCC+ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/ + bB+/bB+/bR+/bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/Abh/AbR3AbRzAbRzAbRzBbRzDbhzFbx3B + bRy7ahumXRiMTxWFShSEShSFSxSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJThSJThSJThSJ + ThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi/34bDx1Z/v0qDpw4fltnbir27fqWXd + o17anljYm1XXmVDWl07Wlk3WlU3WlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlU3XlU3XlU3XlU3XlU3Xlk3Xlk3Yl07Xlk7Yl0/ZmFDZmVDZmVHZmlLamlPam1XanFbanVfb + nlnbn1zcoF3coV/domLdpGTepWfep2rfqW3fq3DhrnPir3fisXrjtH7ktoLluIbmuormvIzmvY7nvpHr + yKLz3cX47N79+fX///////////////////////////////////////////////////////////////// + ///////////////////47+ThvZvNkly/cy+1XQ+0XhC3Yhi3Yxm3Yxm3Yxm3ZRy3ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26 + Zx26Zx26Zx26Zx26Zx26Zx27aB67aB+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8 + aiC8aiC8aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayG+ayG+ax++ax6+ax6+ + ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bR+/bR+/ + bR+/bR/AbR/AbR/AbR/AbR/AbR/AbR/AbR/AbBzAbRzBbRzCbhzDbhy3aBuiXBiWVBaKTRSFSxSFSxSH + TBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSI + TRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJThSJThSJThSKTxWMUhiQVx2U + XSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi/34bDx1Z/v0qDpw4fltnbir27fqWXdol7anljYm1XXmVDW + l07Wlk3WlU3WlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlU3XlU3XlU3XlU3X + lU3Xlk3Xlk3Yl07Yl0/Yl1DYl1DYl1HYmFHZmVLam1Tam1XanFbbnVfbnlnbn1vcoF3comDdo2PdpGXe + pmjfqGvfqm7gq3HhrXTir3jisnzktYDkt4PluYflu4vmvIzmvo/owZbry6X04s779u////////////// + //////////////////////////////////////////////////////////////////////////716Nzd + s4zAdjOzXRCyWwy0XxO2Yhe3Yxi3Yxi3Yxm3Yxm3Yxm3Yxq3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26 + Zx26Zx26Zx27Zx27aB+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8 + aiC8aiC8aiC8aiC9ayG9ayG9ayG9ayG9ayG9ayG9ayG9ayC9ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ + ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bB+/bR+/bR+/bR+/bR/A + bR/AbR/AbR/AbR/AbR7DbhzDbRy/bBy1ZxqaWBeITRSCShOFSxSGSxSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSI + TRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThSJThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyy + g0ewiE8zKRk2LR1GPi734bDx1Z/v0qDpw4fltnbir27fqWbdo1/bn1nYmlXXmFDWl07Wlk3WlU3WlUzW + lUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlU3XlU3XlU3XlU3XlU3Xlk3Xlk3Yl07Yl0/Yl0/Yl1DY + l1DYmFHYmVLZmVPZmlXZm1banFfbnlncn1vcoF3col/do2LepWTepmffp2rfqW3gq3DgrXThr3fisXvi + s3/ktoLluIfluovmvY3nvY7nwJPszanz38n58Ob9+vb///////////////////////////////////// + ///////////////////////////////////////////////z5dXar4fJi1O7bSa0XRC0XhK2YRe2Yhi2 + Yxi2Yxi3Yxi3Yxi3Yxi3Yxi3Yxm3Yxm3ZBu3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27 + Zx27aB67aR+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8 + aiC9ayG9ayG9ayG9ayG9ayC9ax+9ah69ah69ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ + ax6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bR+/bR+/bR+/bR/AbR/Bbh/Ebx/B + bRyuYhmdWBeQURWHTBSDShSFTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSI + TRSITRSITRSITRSITRSITRSITRSITRSJThSKTxWMUhiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1G + Pi734bDx1aDv0qHpw4fltnbisG7fqWbdo1/bn1nYmlXXmFDWlk7Wlk3WlU3WlUzWlUzWlUzWlUzWlUzW + lUzWlUzWlUzWlU3XlU3XlU3XlU3XlU3Xlk3Xlk3Ylk7Yl07Yl1DYl1DYl1HYmFHYmVPZmlTZm1XZm1fa + nFjanVranlvboF3comDdpGPdpWXfpmjfqGvfqm7gq3LhrXTisHjisn3jtIDkt4TluYjlu4vmvIznvZDp + w5jtz6715NH++/n///////////////////////////////////////////////////////////////// + ///////////////////+/Prw3MrRmmq7bSmxWgyyWw60XxS2YRe2Yhi2Yhi2Yhi2Yhi2Yxi2Yxi2Yxi3 + Yxi3Yxi3Yxi3Yxi3ZBq3ZBy3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aR67 + aR+7aSC7aSC7aSC7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC8aiC9aiC9aiC9 + ax+9ah69ah69ah69ah69ah69ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/ + bB6/bB6/bB6/bB6/bB6/bB6/bB6/bB+/bB+/bB+/bB/Abh/Cbx/Abh+8ax+qYRqVVBaEShSCSRSEShSF + SxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSI + TRSITRSITRSITRSITRSJThWMUhiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi734bDx1aDv0qHp + w4fltnbisG7fqWbdo2Dbn1nYmlXXmFDWlk7WlU3WlU3WlU3WlUzWlUzWlUzWlUzWlU3WlU3WlU3WlU3W + lk3Wlk3Wlk7Yl07Yl0/Yl0/Yl1DYl1HYmFLYmVLZmVTZmlXZnFfanFjanVranlzbn13boV/comLcpGXd + pWfep2rfqm3gq3DhrXThsHjjsnvjtH/jtoPluIbmu4rmvI3nvY/owZbu0K725NL68ef//vz///////// + //////////////////////////////////////////////////////////////////////////7s1sHT + oXTEgES4Zh6yWQ2zXhO1YRi1Yhi1Yxi1Yhi2Yhi2Yxm2Yhi2Yhi2Yhi2Yhi2Yxi2ZBi2Yxi3Yxi3Yxi3 + Yxm3ZBu3ZBy3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aB27aB67aR67aR+7 + aR+7aSC7aSC7aSC7aSC7aSC8aiC8aiC8aiC8aiC8aiC8ah+8ah+8ah68aR68aR29ah69ah69ah69ah69 + ah69ah69ah69ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/ + bB6/bB6/bB6/bB6/bB/BbR/CbR+8ah+nXxyXVhqMURiCShSDSRSGSxSGSxSGSxSGSxSGSxSGSxSGTBSG + TBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSI + TRSJThWLURiQVx2UXSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi734bDx1aDv0qHpw4jltnfisG7fqWbd + o2Dbn1nZm1XXmFDWlk7WlU3WlE3WlE3WlU3WlUzWlU3WlU3WlU3WlU3Wlk3Wlk3Wlk7Wl07Wl0/Yl1DY + l1DYmFHYmVLYmVPZmlTZm1Xam1fanVjbnVvbnlzcoF7comHco2PdpGbdpWnfqGzfqm/gq3LhrnXisHnj + sn3ktYHkt4TmuYjmu4vmu4znvpDpxZvv07T57OD+/Pn///////////////////////////////////// + ///////////////////////////////////////////////8+PTr0brLj1q0YRewWAuyXBG1XxW1YRi1 + YRi1YRi1YRi1YRi1Yhi1Yhi2Yhi2Yhi2Yhi2Yhi3Yhi2Yhi2Yxi2Yxm2Yxi2Yxi3Yxi3Yxi3ZBy3ZBy3 + ZRy3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27Zx27aB27aB27aB27aB27aB27aR67aR67 + aR+7aB+7aB+8aR+8ah+8ah68aR28aR28aR28aR28aR28aR28aR29ah69ah69ah69ah69ah69ah69ah69 + ah69ah69ah6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6/bB6/bB6/bB6/bB6/bB7BbR7Cbh7A + bB64aB2iWxuKThiCSheCSheESxaFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThWLURiPVh2U + XSKaZCmhbjKpeDyyg0ewiE8zKRk2LR1GPi734bHy1qDv0qHpw4jltnjisG7fqmbdpGDbn1nZm1XXmFDW + lk7WlU3WlU3WlE3WlE3WlU3WlU3Wlk3Wlk3Wlk3Xl07Xl0/Xl1DXl1DXmFLXmFLYmVLYmlTamlXam1fa + nFjanVrbn1zbn13coWDcomPdpGXepmjep2vfqW7fq3HhrXTgr3jisnzjtIDjtoPkuIfmu4vmvI3nvY/q + xJvw1rn25tX89e7+/v3///////////////////////////////////////////////////////////// + ///////////////////9+vXpzrXQmWnBejy0XxaxWQ60Xxa1Yhm1Yhm0Yhm1YRi1Yhm2Yhm1YRi2YRi2 + YRi1Yhm1Yhi1Yhi2Yhi3Yxm3Yxm2Yhi2Yhi3Yxm3Yxi2Yxi3Yxi3Yxi3ZBq3ZBy3ZBy3ZBy3ZBy3ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6 + Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28 + aB28aB28aR28aR28aR28aR28aR28aR28aR28aR29ah69ah69ah69ah69ah69ah69ah69ah69ah69ah6+ + ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6+ax6/bB7AbB7BbR7BbR60Zh2fWhqUVBiHTRaCShaESxaF + TBeFTBeFSxWFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSITRSITRSITRSITRSITRSITRSITRSITRSITRSJThWLURiPVh2TXCKaZCmhbjKpeDyy + g0ewiE8zKRk2LR1GPi734bHy1qDw0qLqw4jltnjisG7fqmbdpGDbn1nZmlXXmFDWlk7WlU3WlU3WlE3W + lE3WlU3WlU3Wlk7Xlk7Xl0/Xl1DXl1DXmFHXmFLYmVPYmlXYm1bYm1fanFnbnlrbn1zcoF/comHco2Pd + pGbdpmneqGzfqnDgq3PhrnbhsHrjs33jtYHkt4XluYnlu4vmvIznv5Lqx5/x2b757+T///////////// + ///////////////////////////////////////////////////////////////////////////68uvm + yKzEgkayXRKwVwqzXBG0Xxa1YBi1YBi0YBi1YRm1Yhm1Yhm1Yhm2Yhm2Yhm1Yhm1YRi2YRi2Yhm1Yhm2 + Yhi3Yxm3Yhi3Yhi3Yxm3Yxm2Yhm2Yxi3ZBm2Yxi3Yxi4ZRu3ZBu3ZBy3ZBy3ZRy3ZRy3ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26 + Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR28aR28 + aR28aR28aR28aR28aR28aR28aR28aR29ah69ah69ah69ah69ah69ah69ah69ah69ah69ah6+ax6+ax6+ + ax6+ax6+ax6+ax6/ax7BbR7AbB69ax6zZRyXVhiGTBaBShWDSxaETBaFTBaFTBaFTBaFSxSFSxSFSxSF + SxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSITRSITRSITRSITRSITRSITRSITRSITRSJThWLURiPVh2TXCKZZCmgbTKpeDyyg0ewiE8zKRk2LR1G + Pi734bLy1qDw0qLqw4nlt3jisG/fqmfdpGDbn1rZmlXXmFHWlk7WlU7WlU7WlU7Xlk7XlU7Xlk/Xl1DX + mFDXmFHXmFLYmVPYmlTZm1bZnFfZnFnZnVran1zaoF7boWHco2PdpGbdpmnep2vfqm7grHLhrXXhsHni + sn3jtYDktoTkuIjlu4vmvI7mvZDqxp/w2L747N789/H///////////////////////////////////// + ///////////////////////////////////////////////68+ziv6DOlGO8cTCyXRKwWg6zYBa0YRi1 + YBe1YRi1YRi1YRm1YRm1YRm1YRm1Yhm1Yhm1Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yhi3Yxm3 + Yxm3Yxm3Yxm2Yhi3ZBm2Yxi3Yxi2Yxm3ZBu3ZBu4ZRy3ZB23ZRy3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26 + Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR28aR28aR28aR28aR28 + aR28aR28aR28aR28aR29ah69ah69ah69ah69ah69ah69ah69ah69ah69ah69ah6+ax6+ax6/bB7CbR++ + ax6pYBuaVxmOUBeGSxaCShaETBaFTBaFTBaFTBaFTBaFTBaFTBWFSxOFSxSFSxSFSxSFSxSFSxSFSxSF + SxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSI + TRSITRSITRSITRSITRSJThWLURiPVh2TXCKZZCmgbTKodzyyg0ewiE8zKRk2LR1GPS734bLx1qHv0qLq + xIrlt3jisG/fqmfdpGDbn1rZm1XXmFHWlk/WlU7WlU7Xlk/XllDXl1DXl1HXl1LXmFLYmVTYm1XYm1bZ + nFfZnVnanVvan13boF/bomLcpGTcpWfdpmreqW3gq3DgrHPhrnfhsXvis37jtoLkuIbluonlu4vlu4zn + v5TqyKHy3cX89/H///////////////////////////////////////////////////////////////// + ///////////////////////37ePcsozBez2xWQ6wVwyyWxKzXha0YBi0YRi0YRi0YRi1YRi1YRi1YRi1 + YRm1YRm1YRm1YRm1Yhm1Yhm1YRi2Yhm2Yhm2Yhm2Yhm2YRi2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3 + Yhi3Yxi2ZBm2Yxi3ZBq3ZBu4ZRy3ZBu3ZBy4ZR23ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26 + Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR28aR28aR28aR28aR28aR28aR28 + aR28aR29ah69ah69ah69ah69ah69ah69ah69ah69ah6+ax7BbB6/ax66aR6mXhqSUxiCSRaBSRaDShaE + SxaFSxaFTBaFTBaFTBaFTBaFTBaFTBaFSxSFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSG + SxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSI + TRSJThWLURiPVh2TXCKZZCmgbTKodzyxg0ewiE8zKRg1LBtFPS334rLx1qHv0qLpxIrluHnisHDfqmjd + pGHbn1rZnFbYmVLXl1DXlk/XllDXllDXl1HXl1HYmFLYmVTZmVbZm1fZnFnZnlvan13aoF/bomHbo2Tc + pWfcpmneqGzeqm/frHLgrnbhsHrisn7jtIHkt4XluYnlu4zmvI7mvY/ryKLz38n47OD9+vf///////// + ///////////////////////////////////////////////////////////////////////////05djc + tJHHiVS7biyvWQ6wWg+zXxa0YBi0YBi0YBi0YBi0YBi0YRi0YRi1YRi1YRi1YRi1YRi1YRm1YRm1YRm1 + YRm1Yhm1Yhm1YRi2Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm2Yhi3Yxm2Yhm2Yxi3Yxm3 + ZBm3ZBu4ZRy4ZRu3ZBy4ZRy3ZB24ZB23ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27 + aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR28aR28aR28aR28aR28aR28aR28aR28aR29ah69 + ah69ah69ah69ah6+ah6/ax7AbB64Zx2kXRuUUxmLTheCShaCShaFSxaFSxaFSxaFSxaFSxaFSxaFSxaF + TBaFTBaFTBaFTBOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSG + SxSGSxSGSxSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSITRSJThWLURiPVh2T + XCKZZCmgbTKndTquf0KsgUQ0Kxw7NixJR0L34rPy1qPv06PpxIvluHnisXDfqmjdpGLboFrZnFbYmVPX + l1HXllDXl1DXl1LXmFLYmVPYmVXYmlfZnFnanVvbn13boGDbomLcpGXcpmfdp2veqW7eq3HfrXXgr3ji + sXvis3/jtoPkuIfluormu4vmvI7nwZbry6b149D8+PP///////////////////////////////////// + ///////////////////////////////////////////////+/fzw38/UpHm4aSWvVwyvVw2xXBOzXhez + YBizYBi0YBi0YBi0YBi0YBi0YBi0YBi0YRi0YRi0YRi1YRi1YRi1YRi1YRm1YRm1YRm1YRm1YRm1Yhm1 + Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm3Yxm3Yhi3Yxm3Yxi3ZBm3ZBm3ZRy4ZRy4 + ZBu4ZBu3ZBy4ZBy3ZBy4ZR23ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27 + aB27aB27aB27aB27aB27aB27aB28aR28aR28aR28aR28aR28aR28aR28aR28aR28aR29ah6/ax7AbB+9 + ah62Zh2dWBqHTBaBSRaBSBaDSRaEShaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFTBaFTBSFSxOF + SxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSG + TBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSITRSJThWLURiPVh2TWyGWXiObZCendjq7 + kVvTvaA/PjtBQUFMTEz347Ty16Pw06PqxYzluHvisXHfq2rdpWPboFvZnFfYmVTXmFLYmFLYmFPYmVTZ + mlbZm1jZnFranVvan17boWHco2TcpGfdpmneqG3eqnDfrHPgrnfhsXvis37jtYLkt4bkuonlu43lvI7n + v5TszKj04cz68ef++/n///////////////////////////////////////////////////////////// + ///////////////////////v3c3SoHbDgUm0YxyuVw2xWxOzXhezXxizXxizXxizXxizYBizYBi0YBi0 + YBi0YBi0YBi0YBi0YBi0YRi0YRi0YRi1YRi1YRi1YRi1YRm1YRm1YRm1YRm1Yhm1Yhm1Yhm2Yhm2Yhm2 + Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3Yhi3ZBm3ZRu3ZBu4ZBu4ZRy4ZBu4 + ZBy4ZR24ZR23ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27 + aB27aB27aB27aB28aR28aR28aR28aR28aR28aR28aR29aR2/ah2+ah2xYxydWBmRUhiGSxaBSBaDSRaE + ShaEShaEShaEShaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFSxaFShWFShOFSxOFSxOFSxOFSxOFSxOF + SxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSG + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSITRSITRSKTxaJTxOPVBetfkrVvJ3r3c38+PPv7+9BQUFBQUFM + TEz347Xy2KTw1KTqxY3luHvisXPfq2rdpmPboF3anVnZmlbYmVTYmVXZmlbZm1fZnFnanVzan1/boWHc + omTcpGfdpmveqG7fqnHgrHXgr3nisnzjtIDjtoTkuYjkuorlu4zmvY/nw5nszq3259f+/fv///////// + ///////////////////////////////////////////////////////////////////////////9+vft + 18XIilWzXxmtUwivWA6xXBSyXheyXxiyXxizXxizXxizXxizXxizXxizYBizYBizYBi0YBi0YBi0YBi0 + YBi0YBi0YBi0YRi0YRi0YRi1YRi1YRi2Yhm1YRm1YRm1YRm1YRm1Yhm1Yhm1Yhm2Yhm2Yhm2Yhm2Yhm2 + Yhm2Yhm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3Yhi3Yxi3ZBq3ZRy3ZRy4ZRy4ZBu3ZBu4ZR24ZR24ZR23 + ZRy3ZRy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5 + Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27 + aB27aB28aR28aR29aR2/ax2+ah27aB2uYhuUUxeDShV/SBSCSRaDShaEShaEShaEShaEShaEShaEShaE + ShaEShaFSxaFSxaFSxaFSxaFSxaFSxaFSxWFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOF + SxSFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSH + TRSHTRSHTRSGSxKBRQmFRwuMUhmtfk/Ywqr9+/n////////////v7+9BQUFBQUFMTEz347by2KXw1KXq + xo7lun3js3TfrGzdp2XboV/anlzZm1nYm1fZm1jZnFnanVzboF/bomLco2XdpWnep2zeqXDfq3Pgrnfh + sHvis3/jtYPkuIfkuorlvI3lvI/nwJbt0bH15tP68un//v3///////////////////////////////// + ///////////////////////////////////////////////////myK/Pmm2/eDuyXhauVgyxXBSyXhey + XheyXheyXheyXheyXxizXxizXxi0XxizXxizXxizXxizXxizYBizYBi0YBi0YBi0YBi0YBi0YBi0YBi0 + YRi0YRi0YRi1YRi2Yhm1YRi1YRm1YRm1YRm1YRm1Yhm1Yhm1Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yhm2 + Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3Yxm3ZBq3ZRy3ZRy3ZRy4ZRy4ZRy4ZRy3ZBy4ZR24ZR23ZR23ZRy4 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26 + Zx26Zx26Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB27aB27aB27aB27aB27aB28aR3Aah67 + aB2mXRqYVhiMTxaDShWASBWCShWDShWDShWEShaEShaEShaEShaEShaEShaEShaEShaEShaFSxaFSxaF + SxaFSxaFSxaFSxWFSxSFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSF + SxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSHTRSHTRSHTRSGTBKFShCCRQmJThSr + flLSuqLq3tL///7////////////////////v7+9BQUFBQUFMTEz347by2Kfw1Kbrxo/lu37jtHXgrm3e + qGfbo2HaoF7ZnlzZnVvanlzanl7aoGHco2TdpWndqGzeqXDfrHThr3jhsHzis4DjtoTkuInluovkuovm + vZHoxJvu1bj47uH+/fv///////////////////////////////////////////////////////////// + ///////////////////////8+fXlx63Ii1iuVw6rUgevWBCxXBWyXheyXheyXheyXheyXheyXheyXhey + XxiyXxiyXxizXxizXxizXxizXxizXxizYBizYBizYBizYBi0YRm0YRm0YRm0YRm0YBi0YRi0YRi0Yhm1 + Yhm1YRi1YRi1YRm1Yhq1YRm1YRm1YRm1Yhm1Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm2Yxm3Yxm3 + Yxm3Yxm3Yxm3Yxm3Yhi3ZBu3ZRy3ZRy4ZBy4ZRy4ZRy4ZBy4ZBy4ZB24ZR23ZRy4Zhy7ah2+bx26aBy4 + ZBy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26 + Zx26Zx26Zx26Zx26Zx26Zx27aB27aB27aB27aB27aB29aR2+ah68aR23Zh2jWhmPTxeASBWASBWBSRWC + ShWDShWDShWDShWDShWDShWEShaEShaEShaEShaEShaEShaEShaEShaEShaEShaFSxaFSxaFSxaFShOF + ShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSF + SxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSHTBSHTBSHTRSHTRSHTRSHTRSHTRSESQ9/QgWFSQ+LUhmwhlvs3s////////////////// + ///////////////////v7+9BQUFBQUFMTEz35Ljz2Kjx1ajrx5Lmu4DjtXnhr3HeqWrcpWXbomLaoGHZ + oWDaoWLco2XdpWndp23fqnHfrHXhsHrisX7jtILjt4bkuorlu43lu47pxJzv17z36Nn79vD//v7///// + ///////////////////////////////////////////////////////////////////////////89vDm + yrHMlGS9dzuvWA+tVQywXBaxXRexXRexXReyXheyXheyXheyXheyXheyXheyXheyXheyXxiyXxiyXxiz + YBmzXxizYBmzYBmzXxizXxmzYBmzYBizYRm0YRm0YRm0YRm0YBi0YRm0YBi0YRm1Yxm1Yhm1YRi1YRi1 + Yhm1Yhm1YRm1YRm1YRm1Yhq1Yhm1Yhm2Yhm2Yhm2Yhm2Yxq2Yhm2Yhm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3 + Yxm3Yxm3ZBu3ZRy3Zhy3Zhy4Zhy5Zhy5Zhy4Zh24ZRy3ZRy5aB29bh2/cR67aRy4ZBy4ZRy4ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26 + Zx26Zx26Zx27aB28aB29aR2+ah20ZByhWhmTUheJTBaARxWBSBWDSRWDShWDShWDShWDShWDShWDShWD + ShWDShWDShWEShaEShaEShaEShaEShaEShaEShaEShaEShaEShaFShWFShOFShOFShOFShOFShOFShOF + ShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSG + SxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSH + TBSHTBSHTBSGSxKDSA5+QAOVXinCoYDbxrH07eX///////////////////////////////////////// + ///v7+9BQUFBQUFMTEz35Lnz2Krx1qrryJTnvYPktnvhsHPfq27dp2jcpmfbpGbbpGbcpWncp2zeqnDg + rHTgrnnisn3itYPkt4fkuInkuovmvpLpx6Hx2sH68un///////////////////////////////////// + ///////////////////////////////////////////////////58OfjwqW+dzyvWhOsVAmuWBCwXBWx + XRexXRexXRexXRexXRexXReyXheyXheyXheyXheyXheyXheyXheyXheyXheyXxiyYBmyXxizYBmzYBmz + XxizXxizXxmzYBizYRmzYRm0YRm0YBi0YBi0YRm0YBm0YBi1YRm0Yhm0Yhm1Yhm1YRi1Yhm1Yhm1Yhm1 + YRq1YRq1Yhq1Yhq1Yhm2Yxq2Yxq2Yhm2Yhm2Yhm2Yhm2Yhm2Yxm2Yxm3Yxm3Yxm3Yxm3Yxm3Yxm4ZRu4 + Zxy4Zxy4Zxy5Zxy5Zxy5Zxu5Zx24Zh26aB28bR28bB64Zhy3ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4 + ZRy4ZRy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx26Zx26Zx26Zx26Zx28aB29aR27 + aB2yYxybVhmFShWASBWARxWCSBWDSRWDSRWDSRWDSRWDShWDShWDShWDShWDShWDShWDShWDShWDShWD + ShWEShaEShaEShaEShaEShaEShaEShaEShaESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOF + ShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSG + SxSGSxSGSxSGSxSGTBSGTBSGTBSGTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHTBSHSxOCRQuBQgeHSxOZ + ZTHEpIX17OP////////////////////////////////////////////////////////v7+9BQUFBQUFM + TEz35bvz2qvx16zsyZfnv4bluX7is3jgr3Leq2/dqW7dqG3eqW7eqnHfrHXfr3risn7jtYPkuIjkuovl + u43pxZ7x28L469/9+PT///////////////////////////////////////////////////////////// + ///////////////////////47+fdtpXJkF+4bC2uWRKtVg+vWxWwXBexXRexXRexXRexXRexXRexXRex + XRexXRexXReyXheyXheyXheyXheyXheyXxiyXheyXheyXheyXxiyYBmyYBmzXxizYBmzYBmzYBmzYBmz + YBmzYRmzYRm0YRm0YRm0YRm0YRm0YRm1YRm0YRm0Yhm0Yhm1Yhm1YRi1Yhm1Yhm1Yhq1YRm1Yhq1Yhq1 + Yhm1Yxq2Yxq2Yhm2Yhm2Yxq2Yhq2Yhm2Yxm2Yxm2Yxm3Yxm3Yxm4Yxm4ZBm4ZRm4Zhu4Zhy4Zxy4Zxy5 + Zxy5Zxy5Zxy5Zxy5Zx26aB25Zx24ZR23ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5 + Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy5Zhy6Zx26Zx26Zx27Zx29aB28aB2uYRuZVRmOTxeESRWARxWCSBWD + SRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDShWDShWDShWDShWDShWDShWDShWDShWDShWDShWEShaEShaE + ShaEShaEShaEShWEShOESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFSxOFSxOF + SxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSG + SxSGSxSGTBSGTBSGTBSHTBSHTBSHTBSHTBSGSxOGShGAQwmCRAmicEHKr5Xk1cb79vH///////////// + ///////////////////////////////////////////////////v7+9BQUFBQUFMS0r45bz0267y2K/t + y5nowYvlu4PjtnzisXfgrnXfrHPfrHPfrnfgsHrhsn7itILjtoTjuInlvZHqyKLz3sn89vD///////// + /////////////////////////////////////////////////////////////////////////////v30 + 6N3Vp3+8dTisVAusVAyuWBGvWhWwXBewXBewXBexXRexXRexXRexXRexXRexXRexXRexXRexXhixXhiy + XhiyXheyXheyXheyXxiyXxiyXheyXheyXheyXxiyXxiyYBmzYBmzYBmzYBmzYBmzYBmzYBmzYBmzYRmz + YRm0YRm0YRm0YRm1YRm0YRm0YRm0Yhm0Yhm0YRi1Yhm1Yhm1Yhm1Yhq1Yhq1YRm1Yhq1Yhm1Yxq1Yxq2 + Yhm2Yxq2Yxq2Yxq2Yxq2Yhm2Yxm2Yxm3ZBm4ZBm4ZRm4ZRm4ZRm4ZRq4Zxy4Zxy4Zxy5Zxy5Zxy5Zxy5 + Zhy4Zhy4Zh24ZR24ZR23Zh24ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5 + Zhy5Zhy5Zhy5Zhy6Zhy9aB28aB25Zx2sXxuRUBeCSBV+RhSARxWBSBWCSBWDSRWDSRWDSRWDSRWDSRWD + SRWDSRWDSRWDSRWDSRWDSRWDShWDShWDShWDShWDShWDShWDShWDShWDShWDShWEShaEShaEShWESROE + SROESROESROESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOF + SxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSGTBSG + TBSGTBSGTBSFShGBQwmDRgyJThapeUvXwav+/Pv///////////////////////////////////////// + ///////////////////////////////////v7uxBPz1APTdLSEL45sD03LLz2bLtzZ7pw5DmvYnluYPj + toDhs33hsn3hsn7htIDitYPjtoXkuYrpx6Hy3sf47uL9+vf///////////////////////////////// + ///////////////////////////////////////////////////v28rZr4vBf0m1aCesVQysVw+vWxWw + XBewXBewXBewXBewXBewXBewXBewXBexXRexXRexXRexXRexXRexXRexXhixXRexXRexXRiyXhiyXxey + XxiyXxiyXxiyXxiyXxiyXxiyXxiyYBmyYBmzYBmzXxizYBmzYBmzYBmzYBmzYRmzYRmzYRmzYRm0YRm1 + Yhq0YRm0YRm0YRm0Yhm0Yhm1Yhm1Yhm1Yhm1Yhm1Yhq1Yhq1Yhq1Yhq1Yhq1Yxq1Yxq2Yxq2Yxq2Yxq2 + Yxq2Yhm2Yhq2Yhm3ZRq3ZRq4ZRm4ZRm4ZRm4ZRm4ZRq4Zhu4Zxy4Zxy4Zxy5Zxy5Zxy5Zxy5Zx24Zhy4 + ZR23ZB23ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy5Zhy5Zhy5Zhy5Zhy6Zxy9aB23 + ZRyiWhmVUxeJTBWCSBV/RhWBSBWCSBWCSBWCSBWCSBWCSBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWD + SRWDSRWDSRWDShWDShWDShWDShWDShWDShWDShWDShWDShWDShWEShSESROESROESROESROESROESROE + SROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOF + SxOFSxOFSxSFSxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSGSxSGSxSGSxSFShKESRCAQwmKUBew + hVvUvafp3dL///////////////////////////////////////////////////////////////////// + ///////+/fv87dz7587q1bZAOjFAOzJLSEH458L13rX03Lbuz6PrxpTowI7mvIrkuYfkuIXjt4XjtYPi + t4XlvI7qyqb04tD9+PT///////////////////////////////////////////////////////////// + ///////////////////////+/fvu2sjSoHawXRirUgqrUwutVxGuWhWvWxavXBavXBawXBewXBewXBew + XBewXBewXBewXBewXBexXRexXRexXRexXhixXhixXRexXhixXRexXRexXReyXhiyXxiyXxiyXxiyXxiy + XxiyXxiyXxiyXxiyYBmyYBmyYBmzYBmzYBmzYBmzYBmzYBmzYRmzYRmzYRmzYRm1Yhq0YRm0YRm0YRm0 + YRm0Yhm0Yhm0Yhm1Yhm1Yhm1Yhm1Yhq1Yhq1Yhq1Yhq1Yhq1Yxq1Yxq2Yxq2Yxq2Yxq2Yxq2Yxq3Yxq3 + ZRq3ZRm3Zhq4ZRm4ZRm4ZRm4ZRm4ZRm4ZRu4Zxy4Zxy4Zxy5Zxy5Zxy5Zxy5Zxy4Zh23ZB23ZRy4Zh24 + ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy4ZRy6Zhy8aB26Zxy1YxugWBiLTRZ+RhR+RhR/RxSB + SBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWD + ShWDShWDShWDShWDShWDShWDShWDShWDShKDSRKESRKESROESROESROESROESROESROESROESROESROF + ShOFShOFShOFShOFShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSF + SxSFSxSFSxSFSxSFSxSFSxSGSxSGSxSGSxSGSxSDRg5+QAWFSBCLURu0i2Lu4tX///////////////// + ///////////////////////////////////////////////////////////////++fb86dT42LL40qT4 + 1qnpzqhAOjBAOzJLR0D56cb14Ln03brw06jsyZzqxZbowZPmvo/lu4vmvo7ry6nz4Mv58OX+/Pr///// + ///////////////////////////////////////////////////////////////////////////////t + 2MbOnHLAfkevXRirVAysVxGuWhWvWxavWxavWhWuWxWvWxavXBawXBewXBewXBewXBewXBewXBewXBew + XBewXBexXRexXRexXhixXhixXhixXhixXhixXRexXhixXhiyXhiyXxiyXxiyXxiyXxiyXxiyXxiyXxiy + XxiyYBmyYBmyYBmzYBmzYBqzYBqzYBqzYBmzYBmzYBqzYRm0Yhq0YRq0YRm0YRq0YRq0YRq0Yhq0Yhm0 + Yhm1Yhm1Yhm1Yhm1Yhm1Yhq1Yhq1Yhq1Yhq1Yxq1Yxq1Yxq2Yxq2Yxq2Yxm3ZBq3ZRq3ZRm3ZRq3ZRm4 + ZRm4ZRm4ZRm4ZRm4ZRm4ZRq4Zhy4Zxy4Zxy5Zxy5Zxy5Zxy5Zhy4ZRy4ZB24ZB24ZRy3ZRy3ZRy4ZRy4 + ZRy4ZRy4ZRy4ZRy5ZRy6Zhy7ZxyxYRudVxiPTxaGSxV+RhR/RxSBSBSBSBSBSBSBSBSBSBSCSBWCSBWC + SBWCSBWCSBWCSBWCSBWCSBWCSBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDShWDShWD + ShWDShWDShSDSRKDSRKDSRKDSRKESROESROESROESROESROESROESROESROESROESROFShOFShOFShOF + ShOFShOFShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSFSxSFSxSF + SxSFSxSFSxOESRKCRQ1+PwSWXyzDo4TcyLT17+j///////////////////////////////////////// + ///////////////////////////////////+9u764sj31rH2zaD2yJT2y5n30KD41Kbpy6FAOS5AOjBL + Rz756sn24r704L7w1q7tzaHrx5vpxJfqxZzt0bL36dn+/Pr///////////////////////////////// + ///////////////////////////////////////////////////8+fXr1L/GiVewYB2oTgWqUwytWBOt + WhWtWxauWxavWxavWxavWxavWxavWhWvWxavXBavXBawXBewXBewXBewXBewXBewXBewXBewXBewXBix + XRexXRexXhixXRexXRexXhixXhixXhixXhixXhiyXxiyXxiyXxiyXxmzYBiyXxiyXxmyXxiyYBmyYBmy + YBmyYBqzYBqzYBqzYBqzYBqzYBqzYBq0YhuzYRqzYRu0YRq0YRq0YRu0YRm0YRq0Yhq0Yhm0Yhm1Yhm1 + Yhm1Yhm1Yhm1Yhq1Yhq1Yhq1Yhq1Yxq1Yxq1Yxq2Yxm3ZRm3ZRq3ZRq3ZRq3ZRm3ZRq3ZRm4ZRm4ZRm4 + ZRm4ZRm4ZRm4Zhu4Zxy4Zxy4Zxy5Zxy5Zhy4ZRy4ZR24ZB23ZRy3ZRy3Zh23ZRy4ZRy4ZRy6Zhy7Zhy4 + ZRyvYBuWUxeCSBR8RRR9RhSARxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWC + SBWCSBWCSBWCSBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDShWDShWDSRKDSRKDSRKD + SRKDSRKDSRKDSRKDSRKESROESROESROESROESROESROESROESROESROESROFShOFShOFShOFShOFShOF + ShOFShOFShOFShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxOFSxSFSxSEShOARAt/QgiFShOY + ZTTJqo738Oj///////////////////////////////////////////////////////////////////// + /////////v398+r53L31xpbzwYr0wor1w431xpH2yZX2zZn30Z/pyZ1AOC1AOi9LRz357M735MP14cPx + 17Lv0qzy27736tr89O3//v7///////////////////////////////////////////////////////// + ///////////////////////8+fXmy7LOnHG6cziwXRmpUQqsVhGtWRWuWhatWRWtWhWuWhauWxauWxav + WxavWxavWxavWxavWxavWxavXBavXBawXBawXBewXBewXBewXBewXRiwXRewXBiwXBixXRexXhixXhix + XhixXhixXhixXhixXhixXhixXhiyXxiyXxiyXxmzYBmyXxmyXxmyXxmyXxmyXxmyYBmyYBqzYBqzYBqz + YBqzYBqzYBqzYBqzYRuzYRqzYRq0YRq0YRq0YRq0YRq0YRq0Yhu0Yhq0Yhq0Yhq1Yhq1Yhm1Yhm1Yhq1 + Yhq1Yhq1Yhq1Yxq1Yxq1Yxq1ZBq3ZRq3ZBq3ZRq3ZRq3ZBq3ZRq3ZRm3ZRm4ZRm4ZRm4ZRm4ZRm4ZRm4 + Zhq4Zhu4Zxy4Zxy5Zxy4Zhy4ZRy4ZR24ZR23ZR24ZR24Zhy6Zxy5ZhyrXxuWUxiMTRaBSBR9RRR/RxSA + RxSARxSARxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWC + SBWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRWDSRSDSBODSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKD + SRKDSRKESROESROESROESROESROESROESROESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOF + ShOFShOFSxOFSxOFSxOFSxOFSxOFSxOFSxOEShKDSRB+QQeAQwmickXLsJjl18n8+PT///////////// + /////////////////////////////////////////////////////////////v788eT53L/20an0xJLz + v4fzvojzv4f0v4b0wIj1w4n1xY72ypL3zpnox5c/OCxAOS5LRzz57dD35sf35sv358/79Ov///////// + ///////////////////////////////////////////////////////////////////////////////5 + 8uviwaXDg1CqVQ+oUAmpVA6rVxKtWRWtWRWtWRWuWRWuWhatWRWuWRauWxauWxauWxavWxavWxavWxav + WxavWxavWxavXBavXRavXBawXBawXBewXRiwXRiwXRiwXRiwXRewXRixXRixXhixXhixXhixXhixXhix + XhixXhixXhixXhixXhmyXxmzYBmyYBmyXxiyYBmyYBiyXxmzYBmzYBuyYRqyYBqyYBqzYBqzYBqzYRqz + YRuzYBqzYRqzYhuzYhu0YRq0Yhu0Yhu0Yhu0YRq0YRq0YRq0Yhm0Yhq1Yhq1Yhm1Yhq1Yhq1Yhq1Yhq1 + Yhq1Yxq1Yxq2ZRq3ZBq3ZRq3ZRq3ZRq3ZBm3ZBm3ZRq3ZRm4ZRm4ZRm4ZRm4ZRm4ZRm4ZRm4Zhq4Zxu4 + Zxy3Zhy3ZRy4ZRy5Zh27Zx25ZR22ZB2oXRqNThaARxR9RRR+RhR/RxSARxSARxSARxSARxSARxSARxSA + RxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWDSRWD + SRWDSRWDSRWDSRWDSRWDSRODSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKE + SROESROESROESROESROESROESROESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOF + SxOFSxOFSxODSRB/QgiCRgyJTxesf1PXwq3//fz///////////////////////////////////////// + /////////////////////////////////////fv87+L20630xpXzwYvzwInzvofzvYTyu4Hyu3/zu3/z + vID0voL1wof2x432y5ToxZI/NypAOS1LRzz89eX89uz+/Pj///////////////////////////////// + ///////////////////////////////////////////////////58uvhwKTGjVy4bzKqVA6pUgyrVxOs + WBWsWRWsWRWtWRWtWRWtWRWuWRWtWRWuWhauWhauWhauWheuWxeuXBivXBivXBivXBivXBivXBivXBiv + XRivXRivXhiwXRiwXhqwXhqwXhqwXhqwXhqwXhqwXRqwXhmxXhmxXhixXhmxXhixXhmxXhmxXhmxXhmx + XhqxXxqyXxqyYBqyYBmyYBqyYBqyXxmzYBq0YRuyYRqyYBuyYRuyYRuyYRuzYBqzYRuzYBuzYRyzYRuz + YhuzYRq0Yhu0Yhu0Yhu0YRq0YRq0YRq0YRq0Yhu1Yhu1Yhq1Yhm1Yhq1Yhq1Yhq1Yhu1Yhq2Yxq2ZRq2 + ZRq3ZRq3ZRq3ZRq3ZBm3ZRq3ZRq3ZRq3ZRm3ZRm4ZRm4ZRm4ZRm4ZRm4ZRm4Zhm4Zhq4Zhu4Zhy8Zx21 + YxugWBmTURiHShaARhV+RhSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSBSBSBSBSB + SBSBSBSBSBSBSBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWDSRWDSRWDSRSDSROD + SRODSBKDSBKDSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKESROESROESROE + SROESROESROESROESROESROFShOFShOFShOFShOFShOFShOFShOFShOFShOFShOESRGCRw5+QgeJTxev + hFvVv6ns4db///////////////////////////////////////////////////////////////////// + ///////++/n759P52732zaL1xZP0wYzzwIvzvojyvITyuX7xuHvyt3nxtnfxt3fxuHjyu3zzvoH0w4f1 + yI/owo4/NylAOSxLRzv///////////////////////////////////////////////////////////// + ///////////////////////////37eTas5G1ai6oUw2mTwiqVA6sVxOsWBSsWBSsWBWsWBWsWRWsWRWs + WRWtWRatWhatWheuWhiuWxmuWxmuWhmuWxmuXBmuXBmvXBmvXBmvXBmvXBqvXRqvXBmvXRqvXRqvXhmw + XhqwXhuwXhuwXhuwXhuwXhuwXhuwXhuwXhuxXhuxXxyxXxuxXhuxXhqxXxqxXxqxXxqxXhmyXhqyXxqy + YBmyYBqyYBqyXxmzYRuzYRuzYRuyYBqzYBuyYRuyYRuzYRu0YRyzYRu0YRu0YRuzYRuzYRuzYhu0Yhy0 + Yhu0Yhq0Yhq0Yhu0YRu0YRq0Yxu0Yhq1Yxq1Yhq1Yhq1Yhq1Yhu1Yhq2Yxu2ZBq2ZRq2ZRq3ZRq3ZBm3 + ZRq3ZRq3ZRq3ZRq3ZRq3ZRm3ZRm4ZRm4ZRm4ZRm4ZRm6Zhm7Zxm3ZBmyYRmdVheISxZ9RRR+RRSARhWB + RxWBRxWARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSBSBSBSBSBSBSBSBSBSBSB + SBSBSBSBSBSBSBSCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBWCSBSCSBODSBKDSBKDSBKDSBKDSBKDSBKD + SBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKESROESROESROESROESROESROE + SROESROESROESROFShOFShOFShOFShOFShOFShOBRQ19PgOESA+OVSC5kmzx5tr///////////////// + ///////////////////////////////////////////////////////////////++fT65c/20Kn0xJP0 + wo/0wo7zwIvzvofzu4PyuX/yt3vxtHbxs3Tws3LxsnDxs3HxtXPyt3fzvH30wYP1x4zowIw/NilAOCtL + Rjr////////////////////////////////////////////////////////////////////////////0 + 6N7UqITDhlSwYSGoUQyoUg2rVxOrWBSrWBSsWBSsWBSsWRWsWRasWBatWRitWRitWhitWhitWxmuWxmu + WxmuWxmuWxmuWxmuWxmuWxmuXBmuXBmvXBmvXBmvXBmvXBmvXRqvXRqvXRqvXRqvXhqwXhqwXhuwXhuw + XhuwXhuwXhuwXhywXhuwXhyxXhyxXx2xYB2xYB2xXxyxXxyxYByxYByyXxyyYByxXxuzYBuyYBqyYBqz + YRu0Yhy0YRuyYBqzYBuzYRuyYRuzYRy0Yh2zYRu0YRy0YRy0YRyzYRuzYhu0Yhy0YhyzYhu0Yhu1Yhy0 + Yhu0YRu0Yhu0Yxy0Yxu1Yxu1Yhq1Yhq1Yhq1Yhq1Yxu2ZBu2ZRq2ZRu2Zhq2ZRq3ZRq3ZRq3ZRq3ZRq3 + ZBm3ZBm3ZRq3Zhq4ZRm6Zhm7ZhmvYRibVhaOTRSESBN9RBF+RRKARhOBRhOBRhSBRxWBRxWBRxWARxSA + RxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSARxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSB + SBSBSBSCSBWCSBWCSBWCSBSCSBSCSBOCRxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKD + SBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKESROESROESROESROESROESROESROESROESROE + SROFShOFSRKESBGAQwt/QAaXYS/CooXdy7j38ev///////////////////////////////////////// + ///////////////////////////////////99u764sr317b2zKH0w5D0wpDzw4/zwIvzvofyu4Pyun/x + t3vxtXfxs3TwsXDwr2zwr2rwr2vwsG3xs27xtnPyu3rzwIH1xonov4k/NihAOCtLRjr///////////// + ///////////////////////////////////////////////////+/v3y49bPnnWyZSakSwOnTwmqVBCr + VhOrVxSrVxSrVxSrWBWrWRarWResWResWResWRetWhitWhmtWRmtWhitWxmtWxmuWxmuWxmuWxmuWxmu + WxmuWxmuWxmuXBmuXBmuXBmvXBmvXBmvXRqvXRqvXRqvXRqvXhqvXhqvXhqwXhuwXhuwXhuwXhywXhyw + XhywXh2wXhywXxyxYB2xYB2xYB2xXx2yYB6xYB2xYB2yYR+xYB6xYB2yYByyYBuzYRy1Yx2zYRyzYRuz + YBuzYBuyYBu0YRyzYh2zYRy0YRy0Yhy0YhyzYRu0YRyzYhu0YhyzYhu0Yhy0Yhu0Yhu1Yhu0Yhu0Yhu0 + Yhu0Yhu0Yxq1Yhq1Yhq1Yhq1Yhq2Yxu2ZBq2ZBu2ZBu2ZRq2ZRq3ZRq3ZRq3ZRq3ZBm4ZRq5Zhq5Zxq3 + ZhqsXxiVUxWDSBJ9RRF+RBJ/RBKARRKARhKARhKARhGBRRGBRhKBRxSARhSARhSARhSARxSARxSARxSA + RxSARxSARxSARxSARxSARxSARxSARxSARxSARxSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBOCSBKC + RxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKD + SRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKDSRKESROESROESROESROESROESROESRODSBJ+QQl+QAeFSRKb + aDnQtZv68+z///////////////////////////////////////////////////////////////////// + /////////v398+j53sL0y57zxJPzxJPzw5Hzwo3zv4ryvobyvIPxuX7xt3rxtXfws3TwsXDwsG3vrmrv + rGjvrGburGfvrWnwsWvwtXHxuXfzvn71xIbovoc/NihAOCpLRjn///////////////////////////// + ///////////////////////////w4NHQoXu+fUmuXh6lTAaoUw+qVxSrVxSrVxSrWBWrWBarWBarWBer + WBerWRerWRerWResWResWhitWhisWhitWRitWhitWhmtWxmtWxmuWxmuWxmuWxmuWxmuWxmuWxmuWxmu + XBquXRquXRqvXRqvXRqvXRqvXRqvXRqvXRqvXhqvXhqvXhqwXhuwXhuwXhywXhywXhywXh2wXxywXx2w + Xx2xXx2xXx2xYB2yYB6yYB6xYB2yYR6yYR+xYB6yYB6yYR6zYh+1ZCC0Yx+zYR2zYBuzYBuzYByzYRy0 + Yh2zYRyzYRy0Yh20Yhy0YRy0YRy0YRy0YRyzYhu0Yhy0Yhy0Yhu1Yhy1Yhy0Yhu1Yhy1Yhu0Yxu0Yxu0 + Yhu1Yhu1Yxu1Yxq2ZBu2ZBq2ZBq2ZBq2ZRq2ZRq3ZRq4ZRq6Zhq3ZRqpXhiVUxWMThSBSRN+RhKARxKB + RhKARRKARRKARRKARhKARhKARhKARhKBRhKBRRGARRGARRGBRhKARhKARhKARxKARxOARxOARxSARxSA + RxSARxSARxSARxSARxSARxSARxOBRxOBRxOBSBOBSBKBSBKBSBKBRxGBRxGBRxGCRxGCRxKCRxKCRxKC + RxKCRxKCRxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKD + SRKDSRKDSRKDSRKDSRKDSRKESROESROESRODSBKCRxB8PwaAQgmkdUrKr5fl18r9+/j///////////// + /////////////////////////////////////////////////////////////v398OX53cH20670yZrz + xJLzxJL0w5DywYzyvonyvYTxu4LxuX7xt3vxtXbws3PvsW/wr23vrmrurGfuq2TuqmPuqmPuq2TvrWbw + r2jwtG/xuHXzvX30xIXmvoU/NidAOCpLRjn////////////////////////////////////////////9 + +vft2sjJk2asWhmkSwWnTwupUxCqVhSqVhSqVxWqWBaqWBerWBerWBerWBerWBerWBerWBerWBerWRer + WResWResWhisWRetWhitWhmtWhmtWxmtWxmtWxmuWxmuWxmuWxmuWxmuWxmuWxmuXBquWxmuXRquXRqu + XRqvXRqvXRqvXRqvXRqvXRuvXRqvXhqvXhuvXhuwXxywXhywXhywXx2wXx2wXx2wXx6wXh2xXx2xYB2x + YB2yYB6xYB2yYB6yYR+yYR6yYR6yYB6zYh+1ZSK1ZSGzYh+zYh+zYR6zYR20Yh20YRyzYRuzYR2zYh2z + YR20YRy0Yhy0YR20YR2zYRy0Yhy0Yx20Yhy1Yhy1Yxy0Yhu1Yhy1Yhy0Yhu0Yxu0Yxu0Yxu0Yxu1Yxq2 + Yxu2ZRy2ZBu2ZBu3ZRy5Zxu3Zhq0ZBqmXBiMThSASRN+RxJ/SBKASBKBSBOARhKARROARhOARRKARRKA + RRKARRKARhKARhKARhKARRGBRhKBRRGBRhKARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGA + RhGARhGARhGARhGBRhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKC + RxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKDSRKD + SRKDSRKDSRKBRg99QAeBRAyIThmvg1raxbH///7///////////////////////////////////////// + /////////////////////////////////////fr87+D206/0yJrzxJPzxJLzw5Hzwo/zwIvzvojyvITy + uoHxuH3xtnnwtHbws3TvsXDwr2zvrWnvrGfuq2XuqmPuqWHuqGDuqWDuqWHvrGTwrmjws27xt3PzvXv0 + w4PmvYQ/Nic/OCpLRjn///////////////////////////////////7q1MDNmnK7d0GqVxalTgioVBGq + VhSqVhSqVxWqVxaqVxaqVxeqWBeqWBeqWBerWBerWBerWBerWBerWBerWBesWRisWRisWhisWhisWRet + WhitWhitWhmtWhmtWxmtWxmtWxmtWxmuWxmuXBquWxmuXBquXBquWxmuXBquXRquXRquXRqvXRqvXRqv + XRqvXRqvXRuvXRuvXhuvXxyvXxywXx2wXx2wXx2wXx2xXx2xXx6wXx2xXx6xXx6xYB6yYB6yYB6yYB6z + YR+yYR+yYR6yYB+zYR+0ZCO0ZSKzYiCzYiCzYiCzYh+0Yx+0Yx+zYR2zYR2zYh2zYh2zYh20Yhy0Yh20 + Yh60Yh20Yh20Yhy0Yxy0Yxy0Yxy0Yhy1Yhu1Yhy0Yhu1Yhy0Yhu1Yxu0Yxu1Yxu2ZBy2Zx+3aCC6aSCy + YxydVxeTUhaGTRSASRN/SBOBSROBSROBSBKBSBOBRxOARRJ/RRKARRKARRKARRKARRKARRKARRKARhKA + RhKARhKARhKBRhKBRhKBRRGBRhKBRhKARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGA + RhGARhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKD + SBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKDSRKDSRKDSRKDSRKCSBCARQ19QAaJTxmy + iGHWwKvs4df///////////////////////////////////////////////////////////////////// + ///////++/f659P427z2zqX0xpfzw5Hzw5HzwY7ywIvzvYfyvYXxu4HyuX/xtnvwtnjxs3TwsXHwsG7w + r2vvrWnvrGfvqmTuqWHuqWDuqF7up13up1zup1ztqF7uq2HwrWbwsmzxt3LzvXn0woPmvYM/NSY/NylL + Rjj////////////////////////9+PXp0brHjluvXx6mTwqnUA2oUxGpVhSpVhSpVxWpVxaqVxeqVxeq + VxeqVxeqVxeqVxeqWBeqWBeqWBerWBerWBerWBerWBesWBesWBesWResWhisWResWhitWhitWhitWhmt + WhmtWhmtWxmtWxmtWxmuWxmuXBquWxmuXBquXBquXBquXBquXRquXRquXRqvXRuvXRqvXRuvXRyvXhyv + XRuvXhywXxywXx2wXx2wXx2wXx2xXx2xXx6xXx6xXx6xYB6xYB+yYB+yYR+yYR6yYR+yYR+yYR+yYR+y + YSC0ZCO0ZCOzYiCzYh+zYh+zYiC0YyC0YyGzYh+zYh6zYR2zYh2zYh2zYR20Yh60Yh20Yh20Yh20YRy0 + Yh20Yx20Yxy0Yhy0Yhy1Yhy1Yhy0Yhu0YRu0Yxy1Yxy2ZRu3Zh62bCmwbjObXCOITRd9RhR+RhSARxOB + SBOBSROBSBOBSBOBSBOARhN/RRN/RRJ/RRKARRKARhN/RRKARRKARRKARRKARRKARRKARRKARhKARhKA + RRGBRRGBRRGARRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGBRxGB + RxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKDSBKDSBKD + SBKDSBKDSBKDSBKDSBKDSBKDSBKDSBKDSRKDSBF/RAt7PQKCRw+OVyK/mnbz6d////////////////// + ///////////////////////////////////////////////////////////////++PL648z20KnzxJTz + w5Lzw5HzwpDzwIzzv4nyvIbyu4PyuX/xt3zxtnnxtHbwsnPwsXHwr23vrmvvrGfvq2bvqmTuqWPuqGHu + p1/up13uplztplvtplrtplvtp13uq2DvrWTwsWrxtnHzvXn0woHmvYI/NSY/NylLRjj////////////9 + +fbr1LrWq3/Eh061ayitXBetXBmrWRiqVhWpVhWpVhapVhepVxepVxepVxeqVxeqVxeqVxeqVxeqVxeq + VxeqWBeqWBeqWBeqWBerWBerWBerWBesWBerWBesWBisWhisWhitWhitWhitWhitWhmtWhmtWxmtWxqt + WxqtXBquXBquXBquXBquXBquXBquXBquXBquXBquXRquXRqvXRqvXRuvXRuvXRyvXRyvXhywXhywXhyw + Xx2wYB2wXx2xXx6xYB6xYB6xXx6xYB+xYB+xYCCyYCCyYSCzYiCyYSCyYR+yYR+yYSC0ZCO1ZSWzYiGy + YSCzYiCzYiG0YyG0YyGzYiCzYiCzYiCzYiCzYh+zYh+zYh60Yh20Yh60Yh60Yh60Yh20Yh20Yx20Yx20 + Yh21Yhy1Yx21Yxy2Yxy3Yxy3ZBysXhuYVhyOWiqEXTZ+TSF/SBeBRxSBRxSBRhSBRxSBRxOBRxOBRxOA + RxOARhOARhOARRKARhOARRKARRJ/RRKARRKARRKARRKARRKARRKARRKARhKARhKARhKARhKBRRGBRRGB + RRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGB + RxGBRxGBRxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKDSBKDSBKDSBKDSBKDSBKD + SBKDSBKDRxGCRhB+QQl9PwWYZDTCo4bezLv48+7///////////////////////////////////////// + ///////////////////////////////////99Oz54sr31bT0y5/zw5Hzw5Hzw5HzwY3yv4nyvYbyu4Tx + uoDxuH3xtnrwtXfwsnTwsXLvsG/vr2zvrWrvrGjuq2XuqmTuqWHtqGDtp1/tpl3tpVztpVvtpVrtpVnt + plntplvtp1zuql/vrWTwsWnxtnDzu3j0woDmvII/NSY/NylLRjj////8+fLx38far3vFg0C8dTC3byu0 + aiexYyGuXhyrWhiqVxapVhepVhepVhepVhepVxepVxepVxeqVxeqVxeqVxeqVxeqVxeqVxeqWBeqWBeq + WBeqWBerWBerWBesWRisWRisWRisWRisWhisWhisWhitWhitWhitWhitWhmtWhqtWxqtWxmtXBqtXBqu + XBquXBquXBquXBquXBquXBquXBuuXRuuXRuuXhuvXhuvXRyvXhywXh2vXhyvXhywXx2wYB6wXx2xXx6x + YB+xYB+xXx+xYB+xYB+xYCCxYCCxYCCzYiGzYiGzYSGyYSCyYSC0YyS2Zie0YyOyYSCzYiKzYiG0YyG1 + ZCKzYiCzYiCzYiCzYiCzYiGzYiCzYyCzYx+0Yh60Yh60Yh60Yh60Yh60Yh60Yh60Yx20Yh24ZB23ZB21 + YhupWxuTUBiBRhV9Rhd+Sh1/TR+AShqARxWARhSARhSARRSARhSARROARRSARhSARhOARhOARhOARRKA + RhN/RRKARhOARhOARhN/RRKARRKARRKARRKARRKARRKARRKARhJ/RhKARhKBRRGBRRGBRRGARRGARRGA + RRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGB + RxGBRxGBRxGCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKDSBKDSBKDSBKDSBKCRxF8Pwd9PwaESROa + ZznSuaH89/L///////////////////////////////////////////////////////////////////// + /////////v388eX43cD0yZ3zxJPzw5Lzw5HzwY7ywIvyvojyvIXxuoHwuH7wt3vwtXjvtHXvsnLvsXDv + r27urmvurWnurGfuq2XtqWTtqWHtp2Dtp1/tpl3tplzspVrspFrspFnspFnspFjspFjsplrtp1ztql/u + rGTvsWnxtnDyu3jzwoDmvII/NSY/NylLRjjy27LlwYrdsXnPl1jGh0XAfTu6czG1ayiwZCKuXx6rWhqq + VxepVhepVhepVhepVhepVhepVxepVxepVxeqVxeqVxeqVxeqVxeqVxeqVxeqVxeqWBerWBeqWBerWRis + WRisWRisWRisWRisWRisWhisWhisWhitWhitWhitWxmtWhmtWxqtWhqtXBqtXBqtXBquXBquXBuuXBqu + XBquXBuuXBuuXByuXRyuXRyvXhyvXh2vXh2wXh2wXh2wXh2vXh2wYB6wYB6wYB6xXx6xYB+xYCCxYCCx + YCCxYCCxYCCxYCCyYSGzYiGzYiKzYiGzYiG0ZCS2Zyi0ZCOzYiGzYyKyYSCzYyK0ZCO0YyC0ZCKzYyGz + YiCzYyGzYiC0YyGzYyGzYyCzYh+0Yh60Yh60Yh60Yh61Yh63Yx60Yx2lWhuTURmKSxeBRhZ9RBV/RRR/ + RRWARxd/SBZ/RxWARhSARhSARhSARhSARhWARRSARRSARRSARhOARhOARhOARhOARhOARhOARhOARhOA + RRJ/RRJ/RRJ/RRKARRKARRKARRKARRKARRGARhGARhKARhKARRGARRGARRGARRGARRGARRGARhGARhGA + RhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGC + RxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRxKCRhGBRQ97PAOAQwqpfFPLsZnp3ND9+/n///////////// + /////////////////////////////////////////////////////////////v388OP43MD20q7zx5jz + w5Hyw5Lyw5DywIzyvonxvYbxu4PwuX/wt3zwtnnvtHbvsnPvsXHusG7vr2zurWrurGjtq2btqmTuqmPt + qWHtp2DtqF/tpl7tplztplvtpVvspFrspFrspFjspFjspFjspFjspVntp1vtql7urGPvsGnwtm/yu3jz + woDmvIE/NSY/NylLRjjryo/it3rdtH7Rm13GiEbAfTu6czK1ayqwZCStXx+qWhqqVxepVhapVhapVhep + VhepVhepVhepVhepVxepVxepVxeqVxeqVxeqVxerVxeqVxeqVxeqWBeqWBeqWRerWRisWRisWRisWRis + WRisWRisWhisWhisWhitWhitWxmtWxmtWxmtWhmtWxqtXBqtXBqtXBquXBquXBquXBuuXBuuXRyuXRuu + XRyuXRyuXRyvXh2vXh2wXh2wXh2wXh2vXh2wXh6xYB+wYB+wYB6wYB+xYB+xYCCyYCCyYSCyYSGxYCCx + YCCyYSGyYSGzYiGzYiG0YyO2Zye0ZSSzYyKzYiGyYiKzYyO0ZCO0YiG0YyK0ZCK0YyK0ZCK0YyK0ZCK0 + YyG0YyGzZCKzYiC1Yx+4ZB+2Yx6yYR2iWRyITBh+Rhd8RRd+RRaARhaARhZ/RRV/RRWARRSARhV/RhR/ + RhSARhSARhSARhSARhSARRSARRSARRSARROARhOARhOARhOARhOARhOARhOARhOARhOARhN/RRJ/RRKA + RRKARRKARRKARRKARRKARRKARRJ/RhF/RhKARhKARRGARRGARRGARRGARRGARhGARhGARhGARhGARhGA + RhGARhGARhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGCRxKCRxKC + RxKCRxKCRxJ/RA57PgZ/QwyJTxuxhV7axrP///////////////////////////////////////////// + ///////////////////////////////////+/Pr77Nz10q3zyJnyw5Lyw5Lyw5DywY3xv4rxvofxu4Pw + uYDwuH3wtnrvtXfvs3TusnLusG/ur23urmrurWjuq2btqmXtqmPtqGLtqGDtqF/tp17tplztplztplvs + pVvspFrspFrspFnspFjspFjspFjspFjspFjspFntplvtqV7urGPvsGnwtG/yu3jzwX/mvIA/NSY/NylL + RTjszZPiuX3dtH7Rm13GiEfAfT26czS1ayuwYyStXx+qWhqpVxepVhapVhapVhapVhepVhepVhepVhep + VhepVxepVxepVxeqVxeqVxerVxeqVxerWBirVxerWBirWBirWRisWRisWRisWRisWRisWRisWRisWRis + WhmsWxmtWxmtWxmtWxmtWxmtWxqtWxqtXBqtXBqtXBquXBuuXBuuXRuuXRuuXRyuXRyuXRyuXRyvXh2v + Xh2vXh2vXh2wXx6wXx6wXx+wXx+xXx+wYB+wYB+wYR+xYCCyYSGyYSKyYSKyYSGxYSGzYSGzYyOyYiKz + YiK0YyO2Zye1ZiazYyOzYyOzYyO0ZCS0ZCOzYyK0ZCK0ZCO0ZCK0ZCK0ZCK0YyK0ZCO1ZCK2ZCK3ZSKu + YSGbVh2RUBuFShl+Rxd9Rhd/Rxd/Rxd/Rxd/RhZ/RxaARhaARhWARRWARRV/RRR/RhSARhWARhWARhSA + RhSARhSARRSARhSARROARROARROARhOARhOARhOARhOARhOARhOARhOARhOARRJ/RRJ/RRKARRKARRKA + RRKARRKARRKARRKARhJ/RhKARhKARhKARRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGA + RhGARhGARhGARhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRxGBRRB/Qgx7PQWLUh60 + jWjYw7Dw5t3///////////////////////////////////////////////////////////////////// + ///////++fX55tH32bv0zKPzxZXywpHywpDywY3xv4rxvofwvITwuYDwuH3vtnrvtXfutHTusnLusW/u + r23trmrurWjtrGbtq2TtqmPtqWHtqGDtqF/tp13tp1ztplvtplvtpVrspVrspFnspFnspFnspFnspFjs + pFjso1jso1jspFjso1jspFntplvtqV7urGPvsGnwtHDxunfzwX/mvIA/NSY/NylLRTjszJPiuX3dtH7Q + nF/GiEjAfT66czS1ayuwYyStXh+qWhqpVxeoVhapVhapVhapVhapVhapVhepVhepVhepVhepVxepVxep + VxepVxeqVxeqVxerWBirWBirWBirWBirWRirWRirWRisWRisWRisWRisWRisWRisWhmsWhmsWxmsWxmt + WxmtWxmtWxmtWxmtWxqtWxutXButXButXByuXRyuXRyuXRyuXRyvXR2vXR2uXRyvXh2vXh2uXx2wXx+w + Xx6wXx+wXx+xYB+wXx+wYCCxYSCxYSCxYSCyYSGyYSKyYSKyYiKyYSKzYyOyYiKyYiKzYyO2aCi2Zyez + YyOzYyOzYyO0ZCS0ZCSzYyOzYyS0YyK0ZCK0ZCO0ZCK2ZSO3ZiO0ZCOtXyGYVB6GSxx8Rht9SBt/SBmA + RxiARxeARxeASBiARxd/RxZ/RhaARhaARhaARRaARhaARRV/RRWARhWARhV/RhR/RhSARhSARhOARhSA + RhSARRSARROARROARhOARhOARhOARhOARRKARhOARhOARRJ/RRJ/RRJ/RRKARRKARRKARRKARRKARRKA + RRKARRF/RhGARhKARRGARRGARRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGA + RhGARhGARhGBRxGBRxGBRxGBRxGBRxGBRxGARhB8QQl6PAOBRg+OVyXBnn/17eb///////////////// + //////////////////////////////////////////////////////////////7+9/H54cn0zaXyw5Ly + wpHywpDywY7yv4zxvojwvITwuoLwuH/wt3vvtXjvs3XvsnPusXDusG3trmvtrWntrGftq2XsqmPsqWHs + qGDsqF/tp17tplztplvsplvspVrspVnrpFnrpFjrpFfspFfspFjspFjso1jso1jso1jso1jso1jso1js + o1jspFntplvtqV7urGPvsGnwtHDxunfzwX/mu4A/NSY/NylLRTjszJPiuH7dtIDQnGDFiEjAfT66czS1 + ayuwYyStXh+qWRqpVxeoVhaoVhaoVhapVhapVhapVhapVhepVhepVhepVhepVhepVxepVxeqVxeqWBiq + VxerWBirWBirWBirWBirWRirWRirWRisWRisWRisWRisWRisWRisWhmsWRisWhmsWxmtWxmtWxmtWxmt + WxqtWxutXBytXBytXBytXRytXRyuXR2vXR2vXR2vXR2vXR2vXh6vXh6vXx+vXx+vXx+wXx6wXx+wXx+x + YCCxYCCxYCCxYSGxYiCxYSCyYiKyYiKyYiOyYiOzYySzYyOyYiOyYiO1Zyi2Zyi0ZCSzYyOzYyO0ZCS0 + ZCSzYyOzYySzYyO0ZCO3ZSO2ZSOpXiKYVR+NTx2DShx9Rht/RxyASRyASRyASR2ASRyASBqASBiARxd/ + Rxd/Rxd/Rxd/Rxd/RhaARhaARxaARhWARRaARRWARRV/RhR/RhR/RhSARhSARhOARhOARhSARRSARRSA + RROARhOARhOARhOARhOARhOARhN/RhN/RRJ/RRJ/RRJ/RRKARRKARRKARRKARRKARRKARRJ/RRF/RRF/ + RRF/RRGARRGARRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGB + RxGBRxGBRhCARQ98QAh8PgWZZzjGqo/gz7/59PD///////////////////////////////////////// + ///////////////////////////////////88uf54Mf21LH0yp7ywpDywpHywpDywYzxvonxvIXxuoLw + uX/wt3zwtXnvs3busnPvsXHur27trmzurWntq2ftq2XsqmPsqmLsqWDsqF/sp17sp13sp1zsplvrpVrr + pVrrpVnrpFjrpFjrpFjrpFfrpFfrpFfro1fro1fro1jro1fro1fro1fro1jro1jro1jrpFnsplvsqV7t + rGLusGnvtW/wunbzwX/lu4A/NSY/NylLRTjszZXiuX/dtIDQnGDFiEi/fT66czS1ayuwYyStXh+qWRqp + VheoVRaoVhaoVhaoVhapVhapVhapVhapVhepVhepVhepVheqVheqVxeqWBipVxeqVxerVxerWBirWBir + WBirWBirWRirWRirWRisWRisWhmsWRisWRisWhmsWhmsWhmsWxmsWxmtWxqtWxqtWxqtWxqtXButXByt + XBytXRytXRytXRyuXR2vXR2vXh6vXh6vXh6vXh+vXh+vXx+vXx+vXx+wXx+wXyCxYCCxYCCxYCCxYCGx + YSGxYiGxYiGyYiKyYiOyYiSzYySzYySyYiSyYiO1Zii2Zyq0ZCWzYyOzYyS0ZCS0ZCS0YyS1ZSS1ZCOy + YySlXCGSUx+BSR19Rxx/RxyASRyASRyASByBSBuBSRyASRyASRyASRuASBqARxeARxh/RxeARxeARxd/ + RhZ/RhaARhaARhaARhaARRWARRWARhWARhV/RhR/RhSARhOARhSARhSARhOARRSARROARROARhOARhOA + RhOARRKARhOARhOARRKARRKARRJ/RRJ/RRJ/RRKARRKARRKARBGARBGARRJ/RRJ/RRJ/RhGARRGARRGA + RRGARRGARRGARRGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhGARhF/RA95PAV7PgaCSBKY + aDvUu6X9+vf///////////////////////////////////////////////////////////////////// + /////////vz87+P3273zx5vxw5LywpHywpDywI7yv4vxvYfxvITwuYDwuH7wtnrvtHfvs3TvsXHusG/u + rm3urWrtrGjtq2btqmXtqGPsqGHsqF/sp1/sp13sp1zsplvspVrrpVnrpVnrpFnrpFjrpFjrpFfrpFfr + pFfro1fro1fro1fro1bro1bro1fro1fro1fro1fro1fro1jro1jrpFnsplvsqV7trGLusGjvtG/wunbz + wX/lu4A/NSY/NylLRTjszZXiuX/dtIDQm2DFiEi/fT65czS1ayuwYyStXh+qWRqpVheoVRaoVRaoVhao + VhaoVhapVhapVhapVhapVhepVhepVhepVheqVhepVxipVxeqWBipWBirWBirWBirWBirWBirWBirWRir + WRirWRisWRisWhmsWhmsWhmsWhmsWhmsWhmsWxmsWxmsWxqtWxutXBqtWxqtWxutXByuWx2uXR2uXR2u + Xh2vXR2vXh6vXh6vXh6vXh+vXh+vXh6wXyCwYCCwYCCwYCGxYSGyYSKxYSGxYSGxYSKxYSKxYiKxYiKy + YiOyYiSzYySzYySyYiSyYiO1Zii3aSyzZCWzYySzZCS1ZSW2ZiWyZCSjWyKSUyCJTh9/SB19Rx2ASB2B + SRyBSByASRyBSR2ASByBSRyBSRyASBuBSRyBSR2BSR2ASBuASBl/RxiARxeARxd/Rxd/RxZ/RxeARxeA + RxeARhWARhaARhWARRWARhWARhWARhR/RhOARROARhOARROARROARROARROARhOARhOARhOARhN/RRKA + RRKARRJ/RRJ/RRJ/RRJ/RRJ/RRKARRKARRKARRKARRKARRKARBKARRF/RRF/RRGARRGARRGARRGARRGA + RRGARhGARhGARhGARhGARhGARhGARhGARhF/RQ9+Qw13OgKARQ6rgVnKsZro3ND9/Pr///////////// + /////////////////////////////////////////////////////////////fz77uD327310avyxpfx + wpDxw5Dxwo7xv4vxvojwu4TwuoHvuH7vt3vvtXjvtHXusXLusG/tr23trmvtrGntq2fsqmTsqWPsqGLs + p2Drpl/spl7spl3rpVzrpVvrpFrrpFrqo1nqpFjqpFjro1jro1fro1fro1frolfrolfrolfro1bro1br + o1bro1bro1bro1fro1fro1fro1fro1jro1jrpFnspVvsqV7trGLusGjvs2/wunbzwX/lu38/NSU/NylL + RTjszZXiuX/dtIDQm2DFiEi/fT65czS0ayuvYyStXh+qWRqpVheoVRaoVRaoVRaoVhaoVhaoVhaoVhap + VhapVhapVhapVhepVxipVhepVhipVxiqWBiqWBeqWBirWBirWBirWBirWBirWBirWRirWRirWRirWRis + WhmsWhmsWhmsWhmsWhmsWhqsWxqsWxqsXBusXButXButXButXByuXB2uXB2uXR2uXh2uXR2vXh6vXh+v + Xh+vXh+vXh+wXh+wXyCwXiCwYCGwYCGwYSKyYiOxYiKxYSKxYSKxYSKxYiOxYiOxYiOxYyOyZCSzZCaz + YyWyYyO0Zii3ay62Zie1ZCWzZCSxZCahWyOHTR9/SR59Rx5+SB2ASR6ASR6ASB2ASB2BSR2BSRyBSR2B + SR2BSRyBSRyASByBSRyBSRyASRyASRyASRuASRt/SBh/Rxd/RxeARxd/Rxd/RhZ/RhaARhWBRRWARhWA + RRWARRWARRV/RhR/RhSARRSARhOARhOARROARROARROARROARROARhOARhOARhOARhN/RhN/RhN/RRJ/ + RRJ/RRJ/RRJ/RRJ/RRKARRKARRJ/RRKARBF/RBF/RRF/RRF/RRGARRGARRGARRGARRGARRGARRGARhGA + RhGARhGARhF9Qw15PAR+QguITxyzi2bgzr3///////////////////////////////////////////// + ///////////////////////////////////+/Pn66dj1z6nyxpjxw5HywpHxwo/xwI3xvonwvYbwuoLv + uX/vt3zvtnnutHbusnPtsXHtr27trmzsrWnsrGfsqmbsqWTrqGLrp2Drp1/rpl7rpl3rpVvrpVvqpFrq + pFnqo1nqo1nqo1jqo1jqo1fqolfqolfqolfqolfqolfqolbrolbrolbrolbrolbrolbrolbrolbrolbr + olbrolbrolbrolfrolfro1jspFrsqF3tq2Hur2fvs27wunXzwH7lu38/NSU/NyhLRTfszZXiuX/dtIDQ + m2DFiEi/fT65czS0ayuvYySsXh+qWRqpVheoVRaoVRaoVRaoVRaoVRaoVhaoVhaoVhapVhapVhapVhaq + VxeqVxeqVxiqVxiqVxiqVxiqWBiqWBirWBirWBirWBirWBirWRmrWBirWRmrWhmrWhmsWhmsWhmsWhms + WhqsWhqsWhqsWhqsXBqsXButXBytXBytXBuuXByuXByuXB2uXR6uXh6uXh6vXh+vXh+vXh+vXh+wXyGw + XyCwYCGwYCGwYCGwYSKwYSKxYiOxYSKxYSOxYiOxYiOxYiOxYyOxYySyZCSzZSazZSazYyS2Zyi7bzKv + YyiYViGPUSGFTSCASiB/SR+BSh+BSh+ASh+ASh+BSh+BSR6ASR6ASR6BSh2BSh6BSh6BSR2BSh2ASRyB + SR2BSRyASRyASRyASRyASRyASRuASBmARxeARxd/Rxd/Rxd/RxeARhZ/RhaARhWARRWARRWARRV/RRSA + RhV/RhR/RhSARhOARhOARRKARROARROARROARROARROARhOARhKARhOARhN/RRJ/RRJ/RRJ/RRJ/RRJ/ + RRJ/RBGARRKARRJ/RRGARBGARBF/RBF/RRF/RRGARRGARRGARRGARRGARRGARRF/RA98QQt5PASJUh+2 + kG7YxLHw59////////////////////////////////////////////////////////////////////// + ///////9+PL548722bnzy6LyxJTxwpHxwpDxwI7wv4rwvYbwu4PvuYDuuH3utnrutHfus3TtsXLtsG/t + rmzsrWrtrGjsq2bsqmTrqWLsqGHrp1/rp1/rpV3rplzrpVvrpVvrpFrqpFrqo1jqo1jqo1jqo1jqo1fq + o1fqolfqolfqolfqolbqolbqolbqolbrolbrolbrolbrolbrolbrolbrolbrolbrolbrolbrolbrolfr + olfro1jspFrsqF3tq2Hur2fvs27wunXywH7lu38/NSU/NyhLRTfszZXiuX/dtIDQm2DFiEi/fT65czS0 + aiuvYySsXh+pWRqoVheoVRaoVRaoVRaoVRaoVRaoVRaoVhaoVhaoVhaoVhapVhaqVhaqVxeqVhepVheq + VxiqVxiqWBiqWBiqWBiqWBirWBirWBirWRmrWBirWBmrWRmrWhmrWhmrWhmsWhmsWhqsWhqsWhqsWhus + WxusWxusXButXBytXBytXByuXR2uXR2uXR+uXR+uXh+uXh+vXiCvXiCwXyCwYCGwYCGwYCGwYCGwYCKw + YCKwYSKxYiSxYiSxYSOxYSOxYSOxYiSxYySxYySyZCSyZSayZSWyYyWsYSadXi6HUCR8SB99SR9/SiCA + SyCASh+BSh+BSh+ASh+BSh+BSh+BSh+BSh+ASh+BSh+BSR6BSh6BSh6BSh6BSh2CSh2BSRyBSR2BSByA + SR2ASh2ASRyASRuASBqARxh/RxeARxiARxd/Rxd/RxeARhaARRWARRWARhZ/RRWARRV/RhR/RhR/RhSA + RROARRKARhOARROARROARROARROARROARhN/RhOARRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RBF/ + RRKARRKARRJ/RBF/RBF/RRF/RRF/RRGARRF/RBB7Pgl5OwSARBCMVSTDooT27+n///////////////// + /////////////////////////////////////////////////////////////v799u/34MbzzKLxwpLx + wpHxwZDwwY/wv4vvvYjvu4XvuoHvuH7utnvttXjts3XtsnPssHDsr23srWvrrGnrrGfsq2XsqmPsqGHr + qGDrp1/rpl7rplzrplvrpVvrpVrqpFnqo1nqo1jqo1jqo1fqo1fqo1fqolfqolfqolfqolbqolbqolbq + olbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolfqolfqo1jrpFrrp13s + q2Htr2fus27wunXxwH7lu38/NSU/NyhLRTfszZXiuX/dtIDQm2DFiEi/fT65czS0aiuvYiSsXh+pWRqo + VhenVRaoVRaoVRaoVRaoVRaoVRaoVRaoVhaoVhaoVhapVhapVxeqVxeqVxaqVxeqVxiqVxiqVxiqWBiq + WBiqWBirWBirWBirWRmrWRmrWRmrWRmrWRmrWhmrWhmrWhqrWhqsWhqsWxqsWxqsWxusWxusWxutXByt + XR2tXR2uXR6uXR2uXR6uXR+uXR+uXR+uXiCvXyCwXyGwXyGwYCKwYCGwYCGwYCKwYCOwYSOxYSSxYySx + YiSxYiSyYySyYySyYyWyYySyYySzZSawZCWOUSGBSyGFUyyETyaASiCASiGBTCGBSyGASiCBSiCBSiCB + SiCBSiCBSiCBSiCBSh+BSh+BSiCASh+ASh+BSh+BSh6CSh6BSR2BSRyBSR2BSRyBSRyASRyASRyASRyA + SRyASRuASBmASBiARxd/Rxd/Rxd/RhZ/RhaARhaARhaARRWARRV/RRR/RRR/RhN/RhOARhOARhOARhOA + RROARROARROARBN/RBKARROARhN/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RBF/RRJ/RBGARRJ/RBF/ + RBGARBF/RBB+Qw55PQd7PgeYZzrHrJPh0cL59fH///////////////////////////////////////// + ///////////////////////////////////88eb438b107DyyJzwwZDxwpHxwY/wwIzwvYjvvIXvuoHv + uH7utnvutXnts3XtsXPssHDtr23srmvrrGnsq2frqmTrqWPqqGHrp2Drp17rpl7rpV3rpVvqpFrqpFnq + pFnqo1nqo1jqo1fqo1fqolbqolbqolfqolbqoVbqoVbqolbqolXqolXqolbqolbqolbqolbqolbqolbq + olbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolbqolfqolfqo1jrpFrrp13sq2Htr2fus27wuXXx + wH7lu38/NSU/NyhLRTfszJXiuX/dtIDQm2DFiEi/fT65czS0aiuvYiSsXR+pWBqoVhenVRanVRaoVRao + VRaoVRaoVRaoVRaoVRaoVRapVRaoVxapVxepVxeqVxeqVxeqVxeqVxiqVxiqVxiqVxiqWBiqWBiqWBir + WRmrWBirWBirWRmrWRmrWRmrWRqrWhqrWxurWxqsWxqtWxqsWxusWxutWxysWxutXB2tXR2uXR2uXR2u + XR6uXR6vXR+uXSCuXiCvXyGvYCKvYCKwYCKwYCOwYCKwYCKwYSOwYCOwYSSxYyWxZCWxYySxYySyYyWy + YySyYyWyYyWzZCW1ZielXSOETSGGUyyGUimASyGASyGBTCKBSyKASyGASyGASyCBSiCBSyGBSyGBSyGB + SyGBSiCBSiCASh+ASh+BSh+BSx+CTCCBSh6BSh2BSR2BSRyASRyASBuASByASRyASRyBSRyBShyASBmA + RxeARxd/Rxd/Rxd/RhZ/RhaARhZ/RhWARRWARRV/RRR/RRR/RhN/RhR/RhOARhOARROARRKARROARROA + RROARROARROARhOARhOARRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RBF+Qg94OgR6OwaBRhOc + bELYwav9+/j///////////////////////////////////////////////////////////////////// + /////////fz77uD22brxx5nwwpHwwpDwwY/vwI3vvorvvYbvu4PvuH/ut3zutXnus3btsnPtsHDsr27s + rWvsrGnrq2frqmXrqWTrqGLqp2Dqpl7qpV3qpVzqpFvqpFrqo1nqo1jpoljpoljpolfpolbpolbpoVbp + oVbpoVbpoVbpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpolXpolXpolXpolXpolXpolXpolXpolXpolXp + olXqolXqolXqolXqolXqolXqolXqolbqolbqo1frpFrrp13sq2Htr2bus27wunXxwH7lu38/NSU/NyhL + RTfszJXiuH7dtIDQm2DFiEi/fT65czS0aiuvYiSsXR+pWBqoVRenVRanVRanVRaoVRaoVRaoVRaoVRao + VRaoVRaoVRaoVRapVxeoVxepVxepVxeqVxeqVxiqVxiqVxiqVxiqVxiqWBmqWBmqWRmrWBirWBirWRmr + WRmrWRmrWRqrWRqrWhurWxurWxusWhusWxytWxytWxytXB2tXB2tXR6tXR2tXR2tXR6uXh+vXh+vXiCv + XyGvXyGvYCKvYCKvYCKwYCOwYCOwYCOwYSOwYiSxYiSxYiSxYyWxYyWxYySxYyWyYyWyYyayZCayZCWz + ZSe1ZiepYCWMVyyEUiqASyGASyGCTSKBTCKASyGASyKASyGBSyGBSyKBSyGBSyGBSyKBSyCBSiCBSiCB + SyCBSh+BSyCBSh+BSx+BSh6BSR2BSh2ASR2BSB2ASByASBuBSRyBSRyASRyASRuASBp/Rxh/Rxd/Rxd/ + RhZ/RRV/RhZ/RRWARhV/RRR/RRR/RRR/RRR/RRN/RhR/RROARRKARRKARRKARROARROARROARROARROA + RhOARRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ/RRJ+RBB8QQ12OAJ/Qw6sgVzLsZvr4NX+/fz///////////// + /////////////////////////////////////////////////////////////fv77N722bz00KnxxJXw + wY/wwpDwwI7vv4rvvYfvu4PuuoDtuH3ttXrttHftsnTtsXHtr2/srmzsrGrsq2jsqmXrqWPrqGLrp2Dr + p1/qpl7qpV3qpVvqpFvqpFrqo1nqo1jpoljpolfpolfpolfpoVbpolbpoVbpoVbpoVbpoVbpoVXpoVXp + oVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXqolXqolXq + olXqolXqolXqolbqolbqo1frpFrrp13sq2Htr2fus27wunXxwH3lu38/NSU/NyhLRTfszJXiuH7dtH/Q + m2DFiEi+fT64czS0aiuvYiSsXR+pWBqoVRenVBanVBanVRanVRanVRaoVRaoVRaoVRaoVRapVhepVRep + VhapVhapVxeoVxeqVxeqVxeqVxeqVxiqWBmqWBmqVxiqVxmqWRmqWRmqWRmrWRmrWRmrWRmrWRqrWhqr + WRqrWhurWxurWxysWxytWxytWxytXB2tXB2tXB6tXR6tXR6tXR6uXR6uXh+vXiCvXyGvXyGvXyKvXyKv + YCOvYSOvYSOwYSSxYSSxYiSxYiSwYiWxYyWyYyaxYyWxZCaxZCayZCazZCeyZCazZSezZSi0ZSevZy6O + WC59SiOASyOCTiSCTSSASyOBSyOBTCKBTCKASyGBSyKCSyGBSyGBSiGBSyGBSyCBSiCBSyCBSyCBSh+B + Sh+BSh+BSh+BSh6BSh6BSR2BSR2BSByBSRyASRyASRyASRyASRyASBqARxd/RxeARxd/RRV/RhZ/RhZ/ + RRV/RRSARRSARRV/RRR/RBN/RRR/RRN/RRKARRKARRKARRKARROARROARROARROARROARRJ/RRJ/RRJ/ + RRJ/RRJ/RRJ8QQ13OwV9Qg6GThy0jmzgz7////////////////////////////////////////////// + ///////////////////////////////////++/j56NXzzqfxxZbwwpHwwZDwwI7wv4zvvYjvvIXuuoLu + uH/utnvttXjts3XssnLssHDsrm7srWvrrGjrq2brqWXrqGPqqGHqpl/qp17ppl3ppVzqpVvqpFrpo1np + o1npoljooljoolboolfpolbpolbpoVbpoVbpoVbpoVbpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXp + oVXpoVXpoVXpoVXpoVXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXqolXqolXqolXqolXqolbq + olbqo1frpFnrp1zsq2Dtr2fus23wuXXxwH3lu38/NSU/NyhLRTfszJXiuH7dtH/Qml/Fh0i+fT64czSz + aiuvYiSsXR+pWBqoVRenVBanVBanVBanVRanVRanVRaoVRaoVRaoVRapVRapVheoVRapVRapVhepVxep + VxeqVxeqVxeqVxeqVxiqWBmqVxiqVxmqWBmqWRmqWRmqWRmrWRmrWRmrWRqrWhqrWhqrWhurWhusWxys + XBysXBytWx2tXB2tXB2tXB6tXB6tXR6uXR+uXh+uXh+vXyCvXyCvXyGvXyKvXyOvYCOvYSSvYSOwYiSw + YiSwYiSxYiSxYiWxYyWyYyeyYyaxZCaxZCeyZSeyZCeyZCizZSy0Zi+zZC24ajKyaziJUCd+SyWCTiiC + TSeCTSeCTCeBTCiBTCiBTCiBTCWBSyKBSyGCTCGCTSKCTSKCTCKCTCKBSiCBSiCBSh+BSiCBSh+BSh6B + Sh6BSh6BSR2BSR2BSRyBSRyASRyASRyASRyASRyASRuASBiARxZ/RxZ/RhZ/Rxd/RhZ/RRV/RRWARRV/ + RRR/RRR/RRR/RRN/RRR/RROARRKARRKARRKARRKARROARROARRN/RRKARRJ/RRJ+QxB7Pwt4OwWLUyO7 + l3fax7by6eH///////////////////////////////////////////////////////////////////// + ///////9+PH44sv117fyy6Dww5LwwZDwwY/wv4zvvonvu4XuuYLut3/tt3zttHjtsnXssnPssHDrrm3r + rWvqrGnqq2bqqWXqqGPqp2Hpp2Dppl7ppV3ppFzppFvpo1rpo1noo1joo1joolfoolfoolfoolfoolbo + olbooVbooVbpoVbpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXp + oVXpoVXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolbpolbpo1fqpFnqp1zr + q2Dsr2Xts23vuXXxwH3ku38+NSU/NyhLRTfszJXiuH7dtH/Qml/Fh0i+fD24czSzaiuuYiSsXR+pWBqo + VRenVBanVBanVBanVBanVRanVRanVRaoVRaoVRapVhepVheoVRapVhepVhepVxepVxepVxeqVxeqVxeq + VxiqVxeqVxiqWBmqWBmqWBmqWRmqWRmqWRmqWRmrWRqrWhqrWhurWhusWhurWhysWxysXBytXB2tXB6t + XB2tXB2uXB+uXB+uXR+uXiCuXiCuXyCvXyCvXyGvYCKvYCKvYCOvYCSvYSSwYiSwYiWxYiWxYiWxYiWx + YiWyYyayZCexYyayZCeyZSqxZSyyZTCzZS+0Zi2zZSm1aCy7cDavYyiLUSSATiSCTiOCTCKCTSOCTSOC + TCSCTSeBTCmATCqBTyaDUSOEUSKDUCGEUCGDTyGCTSCBSiCBSiCBSiCBSh+BSh+BSh6CSh6CSh2BSh2B + SR2BSRyBSRyBSRuASByASRuASRuASRt/SBh/RxZ/RhZ/RhZ/RhZ/RhV+RRV+RRR/RRV/RRR/RRR/RBN/ + RRN/RRN/RhN/RRKARRKARRKARRKARROARBN/RBJ7PQp5OwV+RBGTXjDHqY338Or///////////////// + /////////////////////////////////////////////////////////////v389e333cPyy6HwwpHv + wpDvwY/vwI3vvoruvIfuuoPuuYDttnzttXnss3bssnTrsHHrrm7rrWvqq2nqq2fqqWXpqGPpp2Hppl/p + pV7ppF3ppF3po1vpo1rpolnpolnpoljooVjooVfoolboolboolboolbooVbooVbooVbooVXooVXooVXp + oVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXp + olXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolXpolbpolbpo1fqpFnqp1zrq2Dsr2Xts2zvuXXx + v33ku38+NSU/NyhLRTfszJXiuH7dtH/Qml/Fh0i+fD24cjOzaiuuYiSrXR+oWBqoVRenVBanVBanVBan + VBanVBanVRanVRanVRaoVhepVhepVhepVhepVhepVhepVhepVxepVxepVxeqVxeqWBiqVxeqVxiqWBiq + WBmqWBmqWBmrWRqqWRmrWRqrWRqrWhqrWhurWhurWhurWhusWxysWx2tWx2tXR6tXR+tXB6tXB6uXR+u + XR+uXSCuXiCuXyGuXyGvXyKvXyKvXyKvYCOvYSSvYSSwYiSwYiWwYiWxYiaxYyaxYiexYyayZSmyZCyx + ZC6yZCyyZSyyZSmzZim0aCu0Zim0Zyu5bjS3aSyvYyqPVSd/TCOCTiSCTiSDTiSDTSODTiSDTyODUSSE + USaDUCiDUCiDTySEUCKEUCKDUCGDTiGBSyGBSiCBSiCBSh+BSh+BSx+BSh6BSh6BSR2BSR2BSRyBSRyA + SRyASByASRuASBuASBuARxmARxd/RhZ/RhZ/RhV/RRV/RRV/RRV/RRR/RRR/RRR/RRR/RRN/RRN/RRJ/ + RRKARRKARBF/Qw96PAh7PQiaaT/IrJTi08b8+fb///////////////////////////////////////// + ///////////////////////////////////77+P338Tz0a3xx5rwwY/vwpDvwY7vv4ruvIfuu4TtuYHt + t37stXrstHfssnTrsHHrr27qrWzqrGnqq2fpqmXpqGTpqGHpp2DopV7opV3opFzopFvpo1roo1npolnp + olnooVjooVfooVfooVfooFbooVbooVbooVbooVbooVbooVXooVXooVXooVXooVXooVXpoVXpoVXpoVXp + oVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXpoVXp + oVXpoVXpoVXpoVXpoVXpoVXpoVXpoVbpoVbpolfqo1nqplzrqmDsrmXts2zvuHTxvnzkun4+NSU/NyhL + RTfszJXhuH7dtH/Qml/Fh0i+fD24cjOzaSquYSOrXR+oWBqnVRenVBanVBanVBanVBanVBanVBanVBao + VRanVReoVhepVhepVhepVhepVhepVhepVhepVhepVhepVxepWBiqWBiqWBeqWBeqWBiqWBmqWBmrWBqr + WBmrWBqrWRqrWRurWhurWhusWhusWhysWhysWh2sWx2sXB6tXR+tXR+tXR+uXiCuXh+uXiCuXiCuXiGu + XyKuYCKvYCOvYCKvYCOwYSOwYSSwYSSwYiWwYiWwYiawYyexYyexZCmyZC6zZTCyZCqyZSiyZSmzZSiz + Ziq0Zyy1Zyu1Zyu5bjO1aC22aCy0Zy2PVCd/TSWCTiWETyaETyWEUCaFUyWFUiSEUCODTyGCTyWDUCyE + TyiDTiKDTyKEUCKDTiKBSyGBSiCBSiCBSiCASR+BSh6BSh2BSR2BSh2BSRyBSByBSByASByASBuASRuA + SBqASBuASBl/RxZ/RhZ/RhZ/RhV/RRV/RRV+RRV/RRR/RRR/RRR/RBN/RBN/RBJ9Qw93OgR6PQiBRhOb + a0HWv6z9/Pr///////////////////////////////////////////////////////////////////// + /////////fz67Nz12LjwxZfwwZDvwY/vwY7vwIzvvonuu4XtuoLtt37stnvstHjssnXssXLrsHDqrm3q + rGrqq2jpqmbpqWTpqGLpp2Dppl/opV3opVzopFvoo1roo1nooljnolfnoVfooVfooVfooVfooVbooFbo + oVbooFbooFbooFbooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXo + oVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXo + oVXooVXooVXooVbooVbpolfqo1nqplzrqmDsrmXts2zvuHTxvnzkun4+NSU/NyhLRTfszJXhuH7dtH/Q + ml/Fh0i+fD24cjOzaSquYSOrXB6oWBqnVRemVBanVBanVBanVBanVBanVBanVBaoVReoVRenVRaoVhep + VhepVheqVheqVxipVhepVhepVhepVhepVxepVxeqVxeqVxiqWBiqWBmqWBmrWBmrWBqrWBqrWRqrWRur + WhyrWhusWhysWhysWx2sWx6sWx2sWx6tXB+sXR+tXR+uXiCuXSCuXiCuXiCuXiGuXiGuXyKuYCOuYSOv + YSOwYSOwYSSwYSWwYiawYiawYyewYyexYyyxZC6yZSuyZSqzZiqzZiqzZiu0Ziy0Ziy0aCy1aS60aCy5 + bjS4azC1aS24ay+zZi2TVyiBTiaETyaEUCaGVCWGUyaFUiaFUSWEUSSEUSSEUSSDTyaDTymDTyaDUCKE + UCKBTCKBSyGBSiCBSiCBSh+BSh+BSh6BSR2BSh2BSh2BSRyBSByASBuASBuASBqASBuASRt/SBp/SBh/ + Rxd/RhZ/RhZ/RhV/RRV+RRV+RRR/RRR+RRR+QxF8QQ52NwKDRxWxiWXMtJ7s4df//v3///////////// + ///////////////////////////////////////////////////////////+/fv66tr02Lrzzqjvw5Pv + wI/vwY/uv43uvYnuvIbuuYPtuH/ttXzttHnss3bssHPrr3DrrW3rrGvqq2jqqWbqqWTpqGLppmHppV/p + pV7ppF3opFzoo1roo1roo1nooljoolfnoVfnoVbnoVbnoVXnoFbnoVbnoFbnoFXnoFXnoFXnoFXnoFXn + oFXnoVXnoVXnoVXnoVXnoVXnoVXnoVXnoVXnoVXnoVXnoVXooVXooVXooVXooVXooVXooVXooVXooVXo + oVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVXooVbo + oVboolfqo1nqplzrqmDsrmXts2zvuHTxvnzkun4+NSU/NyhLRTfszJXhuH7dtH/Pml/Eh0i+fD24cjOz + aSquYSOrXB6oVxmnVRemVBamVBamVBanVBanVBanVBanVBaoVReoVReoVReoVheoVheoVhepVheqVxiq + VxiqVxipVxipVhipVxepWBipWBipWBiqWBiqWBirWBirWBqrWBurWBurWBurWRqrWRurWhyrWhyrWxys + WxysWx6sWx6sWx6tWx6sXB+tXR+tXR+uXiGuXiKuXiKuXiGuXiKuXiOuYCOvYSOvYSSvYSSwYSSwYiWw + YiawYiawYiiwYy6xZC+xZCiyZSizZSq0Zy20Ziu0Ziy0Zy21Zy21aC63ai+0aC25bzS6bTK3aS+4ay+5 + ai+3aS6WWCqETyiHUiiIVSeIUyeHUyaGUiaFUiWGUiWEUSSDTyKDTySDTyqDTyeEUCKCTiGCTCKBSiGB + SiCBSiCBSh+ASh+ASR6BSR6BSh6ASR2ASBuASByASBuASBuASBqASBp/SBp/SBp/Rxh/RxZ/RhZ/RhV/ + RhV/RRV+RRR6QA53Owd9Qg+KUiK5lHTm18r///////////////////////////////////////////// + ///////////////////////////////////9+fX45tLyzabwxJXvwZDvwI/uwI7uvovtvIftuoTtuIDs + t37stHvss3frsXTrr3Hqrm7qrGzqq2rpqmfpqWbpp2TppmHopmDopV7opF3no1zno1voolroolnnoVjn + oVjnoVfmoVfmoVXmoVbnoVXnoVXmoFXmoFXmoFXnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTo + oFTooFTooFTooFTooFTooFTooFTooFTooFTooVTooVTooVTooVTooVTooVTooVXooVXoolbpo1jpplvq + ql/rrmXts2zuuHPwvnvkun4+NSU/NyhLRTfszJXhuH7dtH/Pml/Eh0i9fD24cjOzaSquYSOrXB6oVxmn + VBamUxWmVBamVBamVBanVBanVBanVBaoVReoVReoVRenVBaoVheoVheoVheoVhepVheqVxipVxiqVxiq + VxmqWBmpWBipWBipWBipWBiqWBmrWBqrWBmrWRqrWRurWRurWByrWhurWxyrWxysWx2sWx2sWx6tWx6s + Wx6sWx6tXB+tXiCuXyGuXiKvXyKuXiKuXyOuYCOvYCOvYCOvYSSvYSSvYSSwYiWwYyWwYyixYy6xZCyx + ZCmyZSqyZiuzZiu0Zy20Zy21Zy21aC62aC63aS+4ajC3ai66cDa6cDW4bDC5bTK4bDG6bTG3azCaWyyI + VCqIVimIVSiIUyiHUyaIUyeHUyeFUiWEUSWEUSODUCSDTyeDUCiEUCKCTCKBSyKBSyGBSyCBSyCBSh+A + SR+ASR6BSh2BSR2ASRyASByASBuASByASBuARxmASBp/SBp/SBp/Rxd/RhZ/RRV+RBN6Pg14OwmOWCq+ + nX/ayLnz7OT///////////////////////////////////////////////////////////////////// + ///////99u/44cv11bTxyJ3vwZLvwI/vwI7uvovuvYjtuoXtuYLst37stXvrs3jrsXXrsHLqrm/qrW3p + rGrpqmjoqWboqGTop2LopmDnpV/npF3npFzno1vno1rnolnnoVjmoljmoVfmoFbmoVbmoFbmoFbmoVXm + oVXmoFXmoFXmoFXmoFTmoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTooFTo + oFTooFTooFTooFTooFTooFTooVTooVTooVTooVTooVTooVXooVXoolbpo1jpplvqql/rrmXts2zuuHPw + vnvkun4+NSU/NyhLRTfszJXhuH7dtH/Pml/Eh0i9fD23cjOzaSquYSOrXB6oVxmnVBamUxWmUxWmVBam + VBamVBamVBanVBanVBanVReoVReoVReoVBeoVReoVheoVheoVhepVhepVxipVheqVxiqVxiqWBmqWRmq + WBipWBiqWBmqWBiqWBmrWRqrWRurWBurWRyrWRurWhyrWx2rWx2sWx6tWx6tXB+tWx6tXSCtXSCtXSCt + XSGtXiGtXyKuXyOvYCOuYCOvYCOvYCOvYCSvYSSvYiWvYiWvYyexYy+xYyuyZCiyZCmyZSqzZiyzZiuz + Zyy2ajC3ai+3aS+3ai+4bDG5bjS5bTO7cTi8czu5cDa6cTe6cDa7bzW8bzS7bjOdYC+JVyuKVyqKVSmJ + VSmJVCmHUyeGUiaFUiWEUSSEUCODUCKDUSiDUCeCTCKCSyGBSyKBSiCBSiCBSiCBSh+ASh+BSR6BSR2B + SR2BSRyBSRyASBuASBqASBqARxqARxmASBp+Rhh6QA95Pgt+RRSVYjfLr5b59O////////////////// + /////////////////////////////////////////////////////////////v389Oz23MLxyJ3vwZLu + wJDuwI7uv43uvIrtu4btuYLsuIDstn3rtHnrsnbqsHPqr3Dqrm7prGvpqmnoqmfoqGTop2PopmHopV/n + pV7npFzno1vno1rnolnnoVjnoVjnoVfmoVfmoVbmoFbmoFXmoFXmn1Xmn1Xmn1XmoFXmoFTmoFTmoFTm + oFTmoFTmoFTmoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoVTnoVTnoVTnoVXnoVXnolboo1joplvpql/qrmXts2zuuHPwvnvkun4+NSU/NyhL + RTfszJXhuH7dtH/Pml/Eh0i9fD23cjOyaSqtYSOrXB6oVxmnVBamUxWmUxWmUxWmVBamVBamVBamVBam + VBanVReoVReoVReoVReoVReoVReoVheoVheoVhepVhepVhepVxipVhepVxiqWBmqWBmqWRmqWRqrWRqr + WBqrWBqrWRqrWRqrWRyrWh2rWh2rWh2rWx2rWx6rWx6sXB+tXCCtXCCtXSCtXSCtXSKtXiKtXyKtXyOu + YCOvYSSwYSSvYCSvYSSvYSWvYiavYievYi2wYymxYyeyZCiyZCqzZSyzZSy0Zy21aS63ajC3azG4bDG5 + bTO5bjW8cTi8czu+dD2/d0C8czu9dj29czu8czq9cjm9czm7cjahZTGMWi6MWS2LWCuJVimIVCiHUyiG + UyaFUSWFUSWEUSSEUSODUCiBTCiCTCKBSyKBSyGBSyGBSyCBSh+BSh+ASh+ASB2BSR2BSR2BSRyASBuA + SBuASBp/Rxl+Rhd5Pg58QhKdb0nKsZvj1cn8+vj///////////////////////////////////////// + ///////////////////////////////////77uH33sTz0KzwxpnvwI/vwJDuv47tvYrtu4bsuoPst3/r + tXzrs3nrsnbpsXTqr3Hprm7prWvoq2noqmbnqGXnqGLnp2Hnpl7npV7opF3no1vno1rnolnnoVjnoVfn + olfmoVbmoFbmoVXmoFXmn1Xmn1TmoFXmn1Tmn1Tmn1Tmn1TmoFPmoFPmoFTmoFTmoFTmoFTmoFTmoFTm + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTn + oFTnoVTnoVTnoVXnoVXnolboo1joplvpql/qrmXss2ztuHPwvnvkun4+NSU/NyhLRTfszJXhuH7dtH/P + ml/Eh0i9fD23cjOyaSqtYSOqXB6oVxmnVBamUxWmUxWmUxWmUxWmUxWmUxWmVBamVRenVReoVReoVReo + VReoVReoVReoVReoVReoVheoVxipVxipVhepVxipVxipVxipVxipVxiqWRmrWRqqWhqrWRqrWRurWRqr + WRurWhyrWh2rWh2rWh2rWx6rWx6sXB+sXB+tXR+tXSGtXSGtXSGtXSKtXiKtXyOtXyOuYCOwYSWwYSWv + YSWvYSWvYSavYS2wYyywZCexZSmyZSqzZSq0Zyy0Zy22aC+2aS+3bDG5bjW6bze7cDi8cTm9dDy+dj6/ + d0DBfEa/d0DAekO/eEC+dz+/dj6+dTy+dTu/dzmkZzSLWC+NWS6KWCqKViqKVimIUyiFUiaGUyeFUiWF + UiODTyKBTCiBTCWBSyKBSyKBSyGBSiCBSiCBSiCASR6ASR6ASR6ASB2ASB2ASBx+RRh4PAx7QRKDSx6i + d1Ldy7r+/fz///////////////////////////////////////////////////////////////////// + /////////fv66tr11rXwxZbvwZHvwZDvwI7uvoztvIjtuoXsuILstn7rtHrqsnfqsXTpr3Hprm7prWzo + q2roq2foqWXnqGTnp2Hnpl/npV7mpFzmpFvmo1rmo1nnoljnoVfnoVfmoVbmoVbmoVXmoFTmoFTmn1Tm + n1Tmn1Tmn1Tmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Tm + n1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1TmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoVTnoVXn + oVXnolboo1joplvpql/qrmXss2ztuHPvvnvkun4+NSU/NyhLRTfszJXhuH7dtH/Pml/Eh0i9fD23cjOy + aSqtYSOqXB6nVxmnVBamUxWnVBamUxWnVBamUxWmUxWmVBanVRenVRenVReoVReoVReoVReoVReoVReo + VReoVReoVheoVxipVhepVxipVxipVxipVxiqVxmqVxmqWBqqWRqrWhqrWRurWhysWhysWx2rWh2rWh6s + Wh6sWh6sWh6sXB+sXCCtXSCtXSGtXSGtXSKtXSKtXiKtXyOuYCOuYCOvYSWvYSWwYiawYiavYiuwYi2w + YyixZCmxZSqyZiuzZiy1aC22aC62aS+3bDO4bja6cDm8czy9dD2/d0DAeUHCe0TCfUbFgk3CfUfCf0nB + fEXBe0TBe0TBekPAeEDBej6/eT2najmQXTONWi+MWi6LVyuKViqIVSmGUiaHVCaFUyWDTiOCTSSBTCqB + SyWBSyGBSyKBSyGBSyGBSiCBSh+ASR6ASR5/Rxt9RBh3Ow2HTyK1kXPPuKbv5t7///////////////// + ///////////////////////////////////////////////////////////+/Pn66df12Lnyzqfvw5Pv + wY/vwZDvwI3uvonuu4btuYLst3/rtXzrs3nrsXXqr3LqrnDprW3pq2rpqmjoqGboqGTop2HnpmDnpV7n + pV3npFzmo1rmolrmolnmoVfmoVfmoVbmoVbmoFXloVXmoFXmn1Tmn1Tmn1Tmn1Tmn1Tmn1Pmn1Pmn1Pm + n1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Tmn1Tmn1Tmn1Tm + n1Tmn1Tmn1Tmn1Tmn1TmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTnoFTnoFTnoFTnoFTn + oFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFTnoFXnoVXnolboo1joplvp + ql/qrmXss2ztuHPvvnvjun4+NSU/NyhKRTfszJXhuH7dtH/Pml/Eh0i9fD23cjOyaSqtYSOqXB6nVxmm + VBalUxWmUxWmUxWnVBanUxWnVBanVBanVBamVBanVRenVRenVReoVReoVReoVReoVReoVReoVReoVheo + VxioVxipVxiqVxipVxmpVxmqVxmqWBqqWBqqWRqqWRuqWRqrWhutWx6sXB+sWx+sWx+sWh6sWh6sWx+s + XCCsXSCsXSCtXSGtXiKtXiKtXiKtXiOuXyOuYCSuYSSuYSWvYiawYiiwYy6wYyixYyixZCqyZSqyZiyz + Zy21aC62aC64bDK5bja7cTq8czy+d0C/eUPAe0TCfUbDgErFgUvHh1PFg0/FhFDEgUzEgEvDgErDf0jC + fEbCfEPDfUHEfD+pbDmNWzKPWzCNWi6LWCyIVCiIVSeHVSaFUSWDTiSDTSOCTCWBTCqASyKBSyGBSyGB + SyGBSiCBSh99RRl5PxJ/RxqLVy27mn/p29D///////////////////////////////////////////// + ///////////////////////////////////9+PT45M/yzKTwxJXvwZDvwY/uwI7uvovuvIjtuoTtuIDs + tn3rtHrqsnfqsHPpr3HorW7oq2voqmnoqWbnqGXnpmLnpWDnpV/mpF3mo1zmolvlolrloVjmoVjmoVfl + oFfloFbloFXkn1Tkn1Xkn1TlnlTlnlTlnlTlnlTlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPl + nlPlnlPlnlPlnlPln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tm + n1Tmn1Tmn1TmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTm + oFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFXmoFXmoVbnoljnpVvoqV/qrWXrsmztt3Pv + vXviuX4+NSU/NyhKRTfszJXhuH7dtH/Pml/Ehki9fD23cjOyaSqtYSOqXB6nVxmmVBalUxWlUxWlUxWm + UxWmUxWmUxWnVBanVBanVBanVRenVRenVReoVhioVhioVReoVReoVhioVReoVhioVhioVxioVxipVxip + VxmqWBmqWBqqWBqqWBqqWBqqWRqqWRuqWRurWRurWh2sWx2sWx6sXCCtXCGtXCCsXCCsXCCsXSGtXSKt + XSKtXiOtXiOtXiOuXyOuXySuYCWuYSWuYiavYi6xYiuxYymxZCqyZCqyZSu0Zy61aS61aS+3bDO5cDe7 + cjm9dD2/d0DBekTCfknCgEvDgU3FhFHHh1PJjFjJi1jIjFjHiFTHh1PGhlLFhVDEg03DgEnDf0fDfkPB + fECtbzuUYTWRXTKNWi6LWSqLVymHUyeFUCaETiWDTSSCTSOCTSeASyaBTCKASiGASR98RBl7QRWRXzfA + oondzL717un///////////////////////////////////////////////////////////////////// + ///////89e334Mn01bTxyZ3vwpHuwZDuwI/uv4vuvIjtu4XsuYLrt37rtXvqs3jqsXTqr3Hprm/orGzo + q2nnqWfnqGXmp2PmpmHmpV/mpV7lpFzlo1vlolrlolnloVjloFfloVfkoFbkn1Xkn1Xkn1Xkn1TknlTk + nlTknlTlnlTlnlTlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPl + nlPln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tmn1Tm + oFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTloFTloFTloFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTm + oFTmoFTmoFTmoFTmoFTmoFTmoFTmoFXmoFXmoVbnoljnpVvoqV/qrWXrsmztt3PvvXviuX4+NSU/NyhK + RTfszJXhuH7dtH/Pml/Ehki9ez23cjOyaSqtYSOqXB6nVxmmVBalUxWlUxWlUxWlUxWmUxWmUxWnVBan + VBanUxWnVBanVRenVRenVhioVhioVRepVhipVhipVhioVhioVhioVxioVxioVxioVxmqWBmqVxmqWBqq + WBqqWBqqWBuqWBqqWRuqWhyqWhyrWh2rWh2sWh6tWx+tXCGtXSKtXSKtXSGtXSKtXSKtXiKtXyOtXyOu + XySuXySuYCWuYCWvYiquYi2vYyiwYyiyZSqzZSyzZi21Zy61aC+3bDK4bjS6cjq9dT2/eEDAekTDfknE + gk7FhVLGh1XHilfJjVrLkV/Lkl/LkmDKjlvKjVrJjFnIilfHiFTFhVDEgk3CfkfDfUTFfkGucTyQXjSO + XDCMWSyJVSqIUiiFUCeETyaDTiWDTSOCTSSASyh8RBp7QxeBTCKYaUPNtKD69/T///////////////// + /////////////////////////////////////////////////////////////fz88+n12r7wx53uwZHu + wJDtwI/uv43tvYnsu4bsuYPrt4DrtXzqtHnqsnbpsHPprnDprW3oq2voqmjoqGbnp2TmpmLmpWDmpF7l + o13lolzlolvloVnloFjloFfloFbln1bln1bkoFXkn1Xkn1Tkn1TknlTknlTknlTknlTknlPknlPknlPl + nlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPln1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tln1Tln1Tln1Tln1Tln1Tln1Tln1Tln1TloFTloFTloFTl + oFTloFTloFTloFTloFTloFTloFTloFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTmoFTm + oFTmoFTmoFTmoFXmoFXmoVbnoljnpVvoqV/qrWXrsmztt3PvvXviuX4+NSU/NyhKRTfqy5ThuH7dtH/P + ml/Ehki9ez23cTOyaSqtYSOqXB6nVxmmVBalUxWlUxWlUxWlUxWlUxWmUxWnUxWnVBanVBanVBanVBan + VBanVRenVRenVReoVRepVhipVhioVhioVxmoVhipVxmpWBmpWBmpWBqpWBmqWBqqWBqqWBqqWBqqWBuq + WRuqWRyqWh2qWh2rWh2sWh6sWx6sWx+sXCCtXSGtXSKuXySuYCStXyStXyOtXyOuXySuXyWuYCWuYCau + YSyvYiiwZCiwZCmxZCqzZi21Zy63ajC2ajG4bTW6cDm9dT6+eEHAfEbDgErFhFDGh1TIjFrKjlzKkF/M + k2LOmGfPmmrOmmrNlmTNlWTMk2LKkF7KjlvIi1jGh1PFg0/EgErDfkfBe0GtbTuTXTWMWDCKVS2KUyqH + UiiFUCeCTiSCTCJ9RRmASiOfdVjKs6Dl2M79+/n///////////////////////////////////////// + ///////////////////////////////////67N323cPyz6vvxpnuwJDuwJDuwI7tvovsu4fsuoTst4Dr + tX7qs3rqsnfpsHPprnHorW/oq2znqmrnqWfmp2XnpmLnpWHnpF/mo13lolzloVvloVrloFnln1jln1fl + n1fln1blnlXknlXknlXknlTknlTknlTknlTknlTknlTknlPknlPknlPknlPknlPknlPlnlPlnlPlnlPl + nlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPlnlPln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pln1Pln1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Tm + n1TmoFXnoVfnpFroqF7qrWTrsmvtt3PvvXviuX0+NSU/NyhKRTfnyZPft37dtH/Pml/Dhki9ez23cTOy + aCqtYCOqXB6nVxmmVBalUxWlUxWlUxWlUxWlUxWlUxWlUxWnUxWnVBanVBanVBanVBanVBanVRenVRen + VRenVhioVhioVhioVhioVhioVhipVhipVxmpWRqpWRqqWRurWRurWRuqWBuqWRuqWRuqWRyqWRyqWh2r + Wx2sWx6sWx6sXB+sXCCsXCGsXCGtXSOuXSOtYCWuYSauYSauYCWuYCauYCWuYCevYS6wYiiwYyqwZCmw + ZSuyZy21Zy62ajG4bDO6bzi7cjy+d0HAfEbDgUvFhFDHiVbIjFrLkWDMlWTNl2fOmmrQnW/SoXTQoXTP + nW7QnG3PmmrNlmbNlGPLkF7IjFnIiVXGhVHDgUrCfUXEekGubDuNWTKLVi6KUyuFTiZ+RhqBSh+GUiil + e1rh0cP//v7///////////////////////////////////////////////////////////////////// + ///////+/fv56tn01rbvw5buwJHuwJDuwI/tvo3tvInsuobsuILrtn/qtXzqsnjqsXXpr3PprnDorG3o + qmroqWjnqGbnp2TnpmLmpWDlpF7lo13molzloVrloVnloFjln1fln1bkn1bkn1bkn1XknlXknlTknVTk + nVTknVTknVTknlTknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPk + nlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pk + n1Pkn1Pkn1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Pmn1Tmn1TmoFXnoVfnpFro + qF7qrGTrsmvtt3PvvXviuX0+NSQ/NyhKRTfnyZPatX3Zsn7Pml/Dhki9ez23cTOyaCqtYCOqWx6nVxmm + VBalUxWlUxWlUxWlUxWlUxWlUxWlUxWmVBamVBanVBanVBanVBanVBanVBanVRenVRenVhioVhioVhio + VhioVhipVhipVhipVxmpVxmpWBmpWBuqWRurWRuqWRyrWRyrWh2rWh2rWh6rWx6rWx6rWx6rWx6sXB+s + XCCsXCGtXCGtXCKtXSOtXSOtXySuYSWuYSauYiivYimvYi6vYSyvYSewYimwYyqyZSuzZy20aS+3azO6 + bze8czy9d0C/eUTCf0rFhVDHiVbJj1zLkmHNl2bPnG3Qn3LSo3fUpnrVqoDVq4LTpnvTpnrSonXRn3HP + nG3NlWbMkmHKjlvHiVbFhFDDgErCfETBeECtazePVy2CSR+QWjK7mX7UwLDw6OH///////////////// + ///////////////////////////////////////////////////////////++/j56Nf02Lrxzqnuw5Xu + wZPuwZLtv43tvIntuobsuIPrtoDrtHzqsnnpsHbpr3PprXDorG7oq2rnqmjnqWbnp2TmpmHmpWDmpF7l + pF3lolvlolnloVnloFjkoFfkoFbkn1bkn1Xjn1Tjn1TjnlTjnVTjnVPjnVPjnVPjnVPjnVPjnVPjnVLj + nlLjnlPjnlPjnlPjnlPjnlPjnlPjnlPjnlPjnlPjnlPknlPknlPknlPknlPknlPknlPknlPknlPknlPk + nlPknlPknlPknlPknlPknlPknlPknlPknlPknlPknlPkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tln1TloFXmoVfnpFrnqF7prGTqsWvstnPu + vXviuX0+NSQ/NyhKRTfnyJPatX3Vr37Kl17Ehki9ez23cTOxaCqtYCOqWx6nVhmmUxalUxWlUxWlUxWl + UxWlUxWlUxWlUxWlVBamVBanVBanVBanVBanVBanVBanVBanVRenVRenVhinVhioVhioVhioVhioVhip + VxmpVhmpVxqpVxmpWBqpWBqqWBqqWBuqWRyrWh2rWx6sWh+sXB+sXCCsXR+rXB+sXCCtXSGtXSGtXSKt + XiOtXSOtXiOtXiStXyWtYCWuYimwYzGxZCyxZCuxYyqxZCuyZSy0Zy61ajC3bDS5cDm9dD2/eUPCfkrD + gk7HiFbJjlvLk2HOmGjPnW7So3bUqH3WrILYsYnZtI3YtY/XsYnXsIfVq4LUp3zSonXQm23Ol2fLkmDJ + jFrHh1TEgk7Ae0K9czjBdju4ekvFpo/t4tj///////////////////////////////////////////// + //////////////////////////////////79+fT3483wy6XuxZjtwpTtwpPtwJHtvo7svIrruobqt4Hq + tX7qs3vpsnjpr3TornHorG7nq2vnqWnnqGfmp2TmpmLmpmHlpV/lpF3ko1zkolrkoVnjoFjkoFfkoFfj + n1bjn1Xjn1TjnlPjnlPjnlPjnVPjnVPjnVPjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnlLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLk + nlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLlnlPlnlPlnlPl + nlPlnlPlnlPlnlPlnlPlnlPlnlPln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pkn1Pkn1Pln1Pln1Pl + n1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tln1TloFXmoVfnpFrnqF7prGTqsWrst3PuvXviuX0+NSU/NyhK + RTfnyJPatX3Vr37FlV28g0e8ej23cTOxaCqtYCOqWx6nVhmmUxalUhWlUxWlUxWlUxWlUxWmVBamVBam + VBamVBamVBanVBanVBanVBanVBanVBanVRenVBanVRenVhinVhioVhioVhipVxmpVxmpVhmpVxqpVxqp + WBupWBqpWBupWRuqWRyqWhyqWhyrWh6rWx6sWx+sXCCsXSGsXSGsXSKtXiKtXySuXyStXyStXiStXiWt + XyWtXyWuYSmuYSywYymwYyqyZCyzZi61aC+1aDC2ajK4bje7czy9dkDAe0bDgU3FhlPJjVrLkmHNmGjQ + nnDTpnrVrILZs4zat5LcvZnewJ3ewZ/cvZrbu5fZt5HXsYrVq4HTpXjQnm/NlmbLkF7Gh1LDgUvMkmPh + vqHv28z89e////////////////////////////////////////////////////////////////////// + ///////89e324crz1LXvyaHtwpXtwZTswZLsv4/rvYvsu4fruYTqt4HqtX7ps3npsHXornLorW/nq23n + qmrmqWjmp2XmpmTlpWLlpF/lo17ko1zko1vkolrkolnkoVjkoFfkoFfjoFbin1XinlTinlPinlPjnVPj + nVPjnVPjnVPjnVPjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnlLjnlLjnlLjnlLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLk + nlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLknlLjnlLjnlPjnlPknlPknlPknlPknlPk + nlPknlPknlPknlPkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pln1Pln1Pln1Pln1Pln1Pln1Pl + n1Pln1Pln1Pln1Tln1TloFXmoVfnpFrnqF7prGTqsWrst3PuvXviuXw+NCU/NyhKRTfnyJPatX3Vr37F + lV22f0a0djy3cjOyaCqtYCOpWx6mVhmmUxalUhWlUhWlUxWlUxWlUxWmUxWmVBamVBamVBamVBamVBan + VBanVBanVBanVBanVBanVBanVBanVhinVhinVhioVhipVxmpVxmpVhmpVxmpVxqpVxqpWBqpWBupWRyq + WhyqWRyrWRyrWh2rWh6rWx6rWh6rWyCrXCCrXCCsXCGtXiKuXySuXySuYCWuYCauXyavYCauYCuuYSqv + YSivYymwYyqyZS20Zy62ajK3bje6cDu8dD6+eUPAfUjEg1DHiVfKkV/MlmbPnW7TpHjWrYTYtI7bvJne + wqHgxqbiyaviy63hyKnfxaXewJ/auZXYtI3VqoDRoHHOmGbNlWTVpHrq0r79+/n///////////////// + /////////////////////////////////////////////////////////////fz78+n02b3vyaDtwpbt + wZXswZPswJHrvY3ru4nquYbqt4Lptn/ptXzpsnjpsHXor3LorW7nqmrnqWnmqGXmpmTlpWPlpGHlo1/l + o17lolzkoVvkoFnkoFjkoFfkoVbkoFbjoFbjn1Xjn1TjnlPinlPjnlPinVPinVPjnVPjnVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLj + nVLjnVLjnVLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLknlPknlPknlPknlPknlPknlPknlPknlPk + nlPkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tl + n1TloFXmoVfnpFrnqF7prGTqsWrst3PuvXviuXw+NCU/NihKRTfnyJPatX3Vr37FlV24f0avczusbDKv + ZiqtYCOpWx6mVhmlUxalUhWlUhWlUhWlUhWlUxWlUxWmVBamVBamVBamVBamVBamVBanVBanVBanVBan + VBanVRenVRenVRenVRenVhinVhinVhioVxipVxmpVhmpVxqpVxqpVxqpWBupWBypWRupWhypWh2qWh2r + Wh6rWx+rWx+rWx+rWyCrXCCsXCGsXCGsXiOtXiOtXiOuXySuYCWuYCauYCyvYSmwYyqxZCuxZS2yZi20 + Zi61aC+4bTa6cjy9dkHAfEjDgU3Fh1TIjFrLkmLOmmvRonbVq4LZtY/cvZvgxqbjzK7l0rbn1rvn173m + 1Lnl0bTiy63fw6LauZTXsYrfvZ3t2cb16d///v3///////////////////////////////////////// + ///////////////////////////////////67N323sTx0K7ux53twZTtwpXtwZPrv4/rvIvruofpuITq + toHps3zosnnosHfnr3PornHnrG7nq2vmqWjmp2XlpmPlpWDlpF/lo17kol3koVvkoVrkoFnkn1jkn1fj + n1fjnlbjn1Xjn1Tjn1TjnlTjnlTjnlTjnlPjnVPinVPinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLknlPknlPknlPknlPknlPknlPknlPknlPknlPkn1Pkn1Pk + n1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pkn1Pln1Pln1Pln1Pln1Pln1Pln1Pln1Tln1TloFXmoVfnpFrn + p17prGTqsWrstnLuvXviuXw+NCU/NihKRTfnyJPatX3Vr37FlV24f0avczunaTGlYiisXyOqWx6mVhml + UxakUhWkUhWlUhWlUhWlUhWlUhWlUxWmVBamVBamVBamVBamVBamVBamVBanVBanVBanVRenVRenVRen + VRenVRenVhinVhinVhmoVxqpVhqpVxqpVxupVxqpVxupWBupWRupWh2pWh2qWx6rWx+rWx+rWx+rXCCr + XCCsXCGsXSKsXSKsXiOtXiOtXiOtXiOtXyStXyWuYCyuYSivYSiwYyqxZCyzZy61aTC2ajO4bji6cjy9 + dkHAfEjDgU7GiVjJkWDMl2fQnXDUpnzXsYrbu5nfxKTjzrHn1bvp3MTr38ns4Mvq3sfn2L7l07jjzK7o + 1L348Ob///////////////////////////////////////////////////////////////////////// + /////////Pn66tr117nvxpzuw5fswpXswZTswJHrvo3rvIrquYbpt4PotX/os3vosXjnr3XnrnPmrG/m + q2zlqmrlqWjlp2Xlp2TkpWDko17kolzkolvjoVrjoVnjoFjjoFjjn1fjn1bin1Xin1XinlXinlTinVTi + nVTinVTinVPhnFPinFLinVLhnFLhnFLhnFLhnFLhnFLinFLinFLinFLinFLinFLinFLinFLinFLinFLi + nFLinFLinFLinFLinFLinFLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLknlPknlPknlPknlPknlPknlPknlPknlPknlPkn1Pkn1Pkn1Pkn1Pk + n1Pkn1Pkn1Pkn1Pkn1Pjn1Pjn1Pkn1Pkn1Pkn1Pkn1Pkn1Tkn1TkoFXloVfmpFrnp17orGTqsWrrtnLt + vXvhuXw+NCU/NihKRTfnyJPatX3Vr37FlV24f0avczuoaTGiXyifWSKlWR6nVhmlUxakUhWkUhWkUhWl + UhWlUhWlUhWmUhWmUxamVBamVBamVBamVBamVBamVBamVBanVBanVRenVRenVRenVRenVRenVReoVhin + VhmoVxqpVxmpVxqpVxupVxqpVxupWBypWBypWR2pWh2qWh6qWx6rWx6rWyCrXCCsXCCsXCGsXCGsXSOs + XiOsXiOtXiOtXyStXyWuYCauYCyuYSiuYSiwYSqwYyuzZi60aC+2azK4bji8cj2+eEPCfkrEg1HHilrK + kmLOmmvRonXVrYXZtpLdwaHiy63n1rzq3sfu5dTv6dnv6drx6tr07+P38ur8+vb///////////////// + ///////////////////////////////////////////////////////////++/f56dn02r7xz6ztxJjs + wpbswpbrwJPqvo/qvIvquojpuYTot4DotH3nsnrnsHfmrnTmrnHlrG7lq2zlqWnkp2fjpmTkpWTjpWHj + pF/jo17joVvjoFnjn1njn1fjn1fin1finlbinlXinlXinVTinVTinVTinVTinFTinFPinVPinVPhnFLh + nFLinFLinFLhnFLhnFLhnFLhnFLhnFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLi + nFLinFLinFLinFLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLjnVLjnVLjnVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnVLjnlLjnlLjnlLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLj + nlLjnlLjnlLjnlLknlLknlLknlLknlPknlPkn1TloFbmo1nnpl3oq2PqsGnrtnHtvXrhuHw+NCQ/NidK + RTfnyJPatX3Vr37FlV23f0avczuoaTGiXyibVyGaUxylVRmmUxakUhWkUhWkUhWkUhWlUhWmUhWmUhWl + UxalVBWmUxWmVBamVBamVBamVBamVBamVRemVBanVRenVRenVRenVReoVReoVRioVhioVhmoVxmoVxqp + VxqpVxupVxupVxupWBypWRypWR2qWR2qWh6qWh+rWx+rWyCsWyCsXCKsXCGsXSKsXSOsXiOsXyOsXySt + XyWuYCauYCyuYSivYSiwYSqxYyyyZC20aC+2azS4bzi7cj2+eEPBfUrEhFHHi1rLkmPPm23SpHjWr4jb + upfgxqfl0LTo28Ps4s/x69318uf5+PL+/fv///////////////////////////////////////////// + //////////////////////////////////799/L24s3vzantxp/rw5jrw5frwZXqv5HpvY7pvIrpuYbp + t4PotYDntHznsXnmr3bmr3PlrXDlrG7kq2vkqGjkqGfjpmXjpWLjpGHjo2Diol7iolzjoVvjoFnjn1fj + nlfjnlbinVXinVTinVPinVTinFTinFTinFTinFTinFPinFPinFPinFPhnFLinFLhnFLhnFLinFPhnFLh + nFLhnFLhnFLhnFLhnFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLi + nFLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLinlLinlLinlLinlLinlLi + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLj + nlLjnlLknlLknlPknlPkn1TloFbmo1nnpl3oq2PqsGnrtnHtvXrhuHw+NCQ/NidKRTfnyJPatX3Vr37F + lV23f0avczuoaTGiXyicVyGYURyWTReeTxalUhWkUhWkUhWkUhWkUhWlUhWmUhWmUxamUxamUxamVBam + VBamVBamVBamVBamVRemVBanVRenVRenVRenVReoVRenVReoVhioVhioVhmoVxqoVxqpVxupWBupWByp + WRypWRypWR2pWR2pWh6qWx6qWx+rWyCrXCCsXCGsXCKsXCKsXSOsXiOsXSOsXySsXyWtYCeuYCyuYSav + YiiwYiqwYyuyZS20Zy+1ajS5bzi7cz2+eEPBfUvEg1HHi1rKkmLNm23So3nWsInbvJjfxqbk0bXu5NH4 + 9Oz8+/j//v7///////////////////////////////////////////////////////////////////// + ///////+9u/55M/22bzyzanwx53vxpzuxJztwpXswJHrvY7pu4rouYXotoLntH3nsnvmsHfmrnXmrHLl + q2/lqmzlqGrkqGjjpmbkpWPjpWLio2HiomDiol3ioVzioFvioFrioFnin1njnlbinVXinVXinVTinFTi + nVTinFPinFPinFPinFPinFLinFLinFPinFPinFLinFLinFLinFLhnFLhnFHhnFLhnFLhnFLhnFLhnFLh + nFLhnFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinFLinVLinVLi + nVLinVLinVLinVLinVLinVLinVLinVLhnVLhnVLhnVLinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLinlLinlLinlLinlLinlLinlLjnlLjnlLj + nlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLknlLknlPk + nlPkn1TloFbmo1nnpl3oq2PqsGnrtnHtvXrhuHw+NCQ/NidKRTfnyJPatX3Vr37FlV23f0avczunaTGi + XyicVyGYURyUTBeTSRSfTxSlUhWkUhWkUhWkUhWlUxalUxalUxamUhWmUxamVBamVBamVBamVBamVBam + VRemVRemVBamVRenVRenVRenVReoVRioVhioVRioVhioVxmoVxuoVxupVxupWBypWRypWR2qWR2qWR6p + Wh6qWh+qWx+qWyCqXCCrXCCsXCKsXCKsXSOsXSOsXSOsXiSsXySsXyauYCyvYSevYievYimxYyuyZS20 + Zy+1aTO4bji6cz2+eEPAfUvEg1HHjFrKkmLOm23Ro3nWsIjavJno1r317uP//v3///////////////// + /////////////////////////////////////////////////////////////fz89Ov23cLyz6vwyKDv + x57uxZzuxJntwZXsv5TrvI3quonpuIXotoHotH7nsnvlr3flrXTlrHHlqm/kqWzkp2rkpmfkpWXjpGPj + pGLjomDiol/ioV3ioFzin1vin1rin1nin1nhn1jhnVfinlbinVTinFTinFTinFPinFTinFPinFLinFLi + nFLinFLinFLinFLinFLhnFLinFLhnFLhnFHhnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHgnFHgnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHh + nVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHi + nVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHjnVLjnVLjnVLjnVLj + nVLjnVLjnVLjnVLjnVLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlPknlPkn1TloFbmo1nn + pl3oq2PqsGnrtnHtvXrhuHw+NCQ/NidKRTfnx4/atHzVr37FlV23f0WvczunaTGhXyibVyGYURyVTBeT + SRSSSBObTRSlUxWkUhWkUhWkUhWkUhWlUhWlUxamUxamUxamVBamVBamVBamVBamVRemVRemVRemVRem + VRenVRenVReoVRioVRioVhioVhmoVhmoVxqoVxqoVxuoWBupWBypWByqWR2qWR6qWh6qWh+qWh+qWyCq + XCCrXCCsXCKsXCKsXCKsXSOsXiOsXiOtXiStXyatYCyuYCavYSiwYimxYyuyZC20Zi+1aTO4bTi7cz6+ + eEPBfkvEhFHHi1rKkmLOm23Ro3jWrobcvJr17OH///////////////////////////////////////// + /////////////////////////////////v367+L3487z1rfxzqnvxp/uxpztw5nswZXrvpDrvY3quojp + uIfotoHotH7msnrnsHjmrnTlrHLlq2/kqm3kqWvjp2jjpmfjpWXjpGLio2Hio1/iol7hoV3hoFvioFvi + oFrhnlnhn1jgnljgnlfhnVfhnVfgnVfgnFXhnFPhnFPhnFLhnFLhnFLhnFHhnFLhnFLhnFLhnFLhnFLh + nFLhnFLhm1Hgm1HhnFLgnFLgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHhnVHhnVHhnVHh + nVHhnVHhnVHhnVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHi + nVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHinVHjnVLjnVLjnVLjnVLjnVLjnVLjnVLj + nVLjnVLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlLjnlPinlPin1TkoFblo1nmpl3nq2PpsGnrtnHt + vXrhuHw+NCQ+NidKRTfv2rbYsXjUrn3FlV23f0WvczqnaTGhXyibVyGXURyVTBeTSRSSSBOSSBOaTRSk + URWlUxakUhWlUxalUhWlUxamUxamUxamUxamUxamVBamVBamVBamVRemVRemVRemVRemVRenVRenVReo + VRioVReoVhioVhmoVhmoVhmoVxuoWByoWBypWR2pWR2qWR2qWh+qWh+qWh+qWh+qXCCrXCGrXCGsXSKs + XCKsXSOsXiSsXiStXiStXyatYCutYCeuYSevYimxYyuyZCyzZi61ajK3bDa7cj29d0LAfUnDg1DGilnJ + kWHNmWvRoXbVrIXYtpLew6P27uP///////////////////////////////////////////////////// + /////////fv78OT34crz07Hwzqrvy6bvyaHuxJvtwZXrv5DpvIzpuYjpt4TntYLmtIHnsnrmsHflrnPl + rXHkqm7jqWzjqGnjp2jipmbhpWTipGLio2Hho1/hol7hoFzhoVvhoFrhn1ngn1ngn1jgnlfgnlfgnVfg + nVfgnFfgnFbgnFXgnFXgm1LhnFLhnFLhnFLhnFHhnFHhnFHhnFHhnFHhnFHhnFLhnFLhnFLhm1Hgm1Hh + nFLhnFLgm1HgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHinFHi + nFHinFHinVHinVHinVHinVHinVHinVHhnVHhnVHhnVHinVLinVLinVLinVLinVLinVLinVLinVLinVLi + nlLinlLinlLinlLinlLinlLinlLinlPinlPin1TjoFblo1nmpl3nq2PpsGnrtnHtvXrhuHw+NCQ+NidK + RTf////v38fUrHrEklm3f0WvczqnaTChXyibVyGXURyUTBeTSRSSSBOSSBORSBOWSxSjURWlUxalUxal + UxalUxalUxamUxamUxamUxamUxamUxamVBemVRemVRemVRemVRemVRemVRemVRinVhioVRioVhmoVhmo + VhqoVhqoVxuoVxuoWByoWR2oWR2qWR2qWR6qWR6qWh+qWiCqWiCrXCKrXCKrXSKsXSOsXSOsXiOsXiSs + XiStXyatXyutYCiuYSeuYimwYyqyZCyzZS22ajK3bDe6cTu8dUHAe0jCgE/FiFfIj17Ll2jPnnLTqH/X + so3bvJrhyav27uP////////////////////////////////////////////+/fv78+n569r348z02rvz + 1bXy0a7wzqnuyaLtxZztwJTrvY/quonnt4TntIDmsXzlsHvlr3rlrXPkrHDkqm7jqWviqGnip2jipmbh + pGPhpGHho2Dgo1/hol7hoVzhoVzhoFrhn1nhn1jhn1jgnVjgnVfgnlfgnVfgnVfgnVbgnFbgnFXgnFXg + nFXgnFThm1LhnFLhnFLhnFLhnFLhnFHhnFHhnFHhnFHhnFHhnFLhnFLhnFLhnFLgm1Hgm1Hgm1Hgm1Hg + nFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHgnFHgnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHh + nVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHinVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLi + nlLinlLinlLinlPinlPin1TjoFbko1nmpl3nq2PpsGnrtnHtvXrhuHw+NCQ+NidKRTf////////r2cLE + k1u1fECvczqnaTChXyibVyCXURyUTBeSSRSRSBOSSBOSSBORSBOVShSiURWmUxalUxalUhWlUxalUxal + UxamUxamUxamUxamUxemVBamVRemVRemVRemVRemVRemVRimVRinVhioVhmoVhmoVhmoVhmoVhmoVxuo + WByoWR2oWR2oWR2pWR2qWR6qWh+qWx+qWyCqWiCrXCGrXSKrXSOrXSOsXSOsXiOtXiStXyWtXyqtXyau + YSevYiiuYyqwZCuzZS21aDC3azW5cDu8dD+/ekbBfk3FhlXIjVzKlGTNm27RpHnVrIbZuJTcv53hyar1 + 7OD////////////////////////////////+/Pn89Or46tf35M324Mf13cL02bvz1LPxz6rwyqPtxZvs + wZTrvI7quojot4Tns4DmsXrlr3flrXbkq3Tkqm3jqWviqGnip2fipmbipWTho2Lho2Dhol7hol7goV3g + oVzgoFvgoFvgn1ngn1jgnljgnljgnVfgnVfgnVfgnVfgnVbgnVbgnVbgnVXgnFXgnFXgnFXgnFPgm1Lh + nFLhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFLhnFLhm1LhnFLgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hg + m1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hg + m1Hgm1Hgm1Hgm1Hgm1HgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHh + nVHhnVHhnVHhnVHhnVHinVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLinlLinlLinlPi + nlPin1TjoFbko1nlpl3mq2PpsGnrtnHtvXrhuHw+NCQ+NidKRTf////////////t3s65gkqsbjOnaTCh + XyibVyCXURuUTBeSSRSRSBORSBOSSBOSSBORSBOVSRSgUBWmUxalUhWlUxalUxalUxalUxamUxamUxam + VBemVBemVBemVRemVRemVRemVRemVRinVhmnVhmnVhioVhmoVhmoVhmoVhqoVxqoVxuoWByoWByoWR2p + Wh6qWR6qWh+qWx+qWyCqWiCrWyGrXCKrXCOrXSOrXSOsXiOsXiStXiStXyquYCiuYCeuYSivYimwZCuy + Zi20aC+3azS5bji8cz6+eETAfUnDglHGiVjJkGDMlmjPn3LSpnzWr4nat5Tcvp3gyKny59r///////// + /////////////////v789Or46NT35tH25Mz138X0277z1rXy0a7xzKbux5/tw5fsv5DquYjotoHnsnzm + sHnlrXPkrHLkqnPjqW/jqGrjpmnjpmbipmXipGPhpGHhol/hol7hoV3goV3goVvgoFrfn1nfn1ngn1ng + n1jgnljgnljgnlfgnlfgnVfgnVfgnVbgnVbgnVbgnVbgnVbgnVXgnFXgnFTgm1Lfm1Lgm1Lgm1Hgm1Hg + m1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1HfmlLgm1Lgm1LfmlHfmlHfmlHfmlHfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hf + m1Hfm1Hfm1Hfm1Hfm1Hfm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hg + m1Hgm1HgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHhnVHhnVHhnVHh + nVHhnVHinVLinVLinVLinVLinVLinVLinVLinVLinVLinVLinlLinlLinlLinlPinlPin1TjoFbko1nl + pl3mq2PosGnqtnHsvXrguHw+NCQ+NidKRTf////////////////r28q0e0akYSihXiibVyCXURuUTBaS + SRORSBORSBORSBOSSBOSSBOSSBOTSROgUBamUxalUxalUxalUxalUxalUxalUxamUxamUxamUxamVRem + VRemVRemVRemVRenVhenVhmnVhinVhmoVhmoVhqoVhqoVxuoVxuoWBuoWBypWR2pWR6pWh6qWiCqWh+q + WiCrWyGrWyGrWyKrXCKrXCOrXSOrXSOrXiSsXiOtXymtXyquYCauYSivYiqwYyuyZSyzZy61aTK4bTe6 + cTy9dkG/ekfCf07FhlXHjVzKkmLMmWvQoXXTqH/Wr4jZt5PaupjbvZvx5NX///////////////////// + ///////78eT24sn24cj13cLz2brx0rDwzqrvyaHtxJnsv5LqvIzpuIXntX/lsHjkrnXjq2/iqW3ip2/i + pmnipWXhpGXho2PhpGLho2HhomDhol/hoV3goFzfoFvfn1rfn1nfnlnenlnenVjfnVffnVffnlffnVff + nFffnVbfnVbfnVbfnFbfnFbfnFbfm1bfm1XfnFXfnFTfm1Lfm1HfmlHfmlLgm1Hgm1Hgm1Hgm1Hgm1Hg + m1Hgm1HfmlDgm1DfmlHgmlHgmlHfmlHfmlHfmlHfmlHfmlHfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hf + m1Hfm1Hfm1Hfm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hg + nFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHh + nVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVHhnVLhnVLhnlPin1XjoljkpVzlqmLnr2jptXDr + vHnguHs+NCQ+NidKRTf////////////////////w5tuzfEucVhybViCXURuUTBaSSRORSBKRSBORSBOR + SBORSBOSSBOSSBOTSROeThWmUxalUxalUxalUxalUxalUxalUxamUxamUxamUxemVBemVRenVRimVRin + VRenVhinVhmnVhmnVhmoVhqoVhqoVhqoVxuoVxuoWByoWBypWBypWR2pWh+qWh+qWiCqWiCrWyGrWyGr + XCKrXCOrXCOrXSOrXiSrXiWtXyetXy2tYCauYCiwYiqwYiqxYyyyZi60aTG2bDW4bjm8dD6+eEPAfUrD + glHGiFfIjl7Lk2XNmWzPoHPSpnzUq4TWsIrXs43ZuJPs2sb//v7//////////////////////v367uD1 + 3cP02b3z1rfx0a7vzKftx5/rwpfqvI3puIfotIDlsXvkrnbkrHLjqm/iqG3hpWzgpGXgo2PgomLgoWDg + oV/goF7gn17goFzgoFzfn1vfn1vfn1vfn1vfnlnfnlnenljenVfenVffnVffnFbfnFffnFbfnFbfm1bf + nFbfnFbfnFbfm1Xfm1Xfm1Xfm1Xfm1TfmlLfmlLfmlLfmlHgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1HfmlDf + mlDfmlDfmlHfmlHfmlHfmlHfmlHfmlHfmlHfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hfm1Hf + m1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1Hgm1HgnFHgnFHgnFHg + nFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHg + nFHgnFHgnFHgnFHgnFHgnFHgnFHgnFHgnVHgnVHgnVHgnVHgnVHgnVHgnVHgnVHgnVDgnVDhnVHhnVHh + nVHhnVHhnVHhnVHhnVHhnFHhnFHhnVLhnVLhnlPin1XjoljkpVzlqmLnr2jptXDrvHnguHs+NCQ+NidK + RTf////////////////////////z6uOyfE+VSxKXUBuUTBaSSRORSBKRSBKRSBORSBORSBOSSBOSSBOS + SBOSSBOdThWnUxalUxalUxalUxalUxalUxalUxamUxamVBemVBemVBemVRemVhinVhinVRinVhmnVhmn + VhmnVhmnVhqoVhqoVxuoWByoWByoWBypWBypWR2pWR6pWh+pWiCqWyCqWyCrWyGrXCGrXCOrXCOrXSOr + XSSrXiSsXyWsXy6tXyiuYCevYiivYiqwYiuyZS2zaC+1azO3bTe6cTy8dUDAekbBf0zEhFPGiVjJkF/K + k2TMmWrPnnLQonfSpnzUqYDUq4PTqX/r1L/////////////////////////////57N3y1LXx07Lx0Kzv + yqXsxZzrwJTqu4votoXnsn7lsHjkrHPjqm/jqGzipm3ipWrhpGbgomPgoWHgoF/gn17fnlzfnlvfnlrf + nlvenlrenlrfnlnenlnfnljfnlnfnljfnlnfnVjfnVjfnVffnFffnFbfnFbfm1bfm1XfnFbfnFbfm1Xf + m1Xfm1Xfm1Xfm1Xfm1PfmlHfmlHfmlHfmlHfmlHgm1Hgm1Hgm1Hgm1Hgm1HfmlDfmlDfmlDfmlDfmlDf + mlDfmlDfmlDfmlDfmlDfmlDfmlDfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDf + nFDfnFDfnFDfnFDfnFDfnFDfnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDg + nFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDhnFHhnFHhnFHhnFHhnFHhnFHh + nFHhnFHhnFHhnFLhnVLhnlPin1XjoljkpVzlqmLnr2nptXDrvHnguHs9NCQ+NidKRTf///////////// + ///////////////17ei3hV2SRw6UShWSSRORSBKRSBKRSBKRSBORSBORSBOSSRSSSRSSSBSTSRSbTRSl + UhalUxalUxalUxalUxalUxalVBemVBemVBemVBemVBenVBenVhinVRinVhinVhmnVhmnVhqnVhqnVxqo + VxuoWByoWByoWBypWBypWB2pWR6pWh+pWiCpWyCqWyGrWyKrXCKrXCOrXCOrXCOrXSSrXSOrXiSrXiqt + XyytYCauYCeuYSmvYimxZCyzZS60aDC1azS4bzi7cz29dkG/e0bCgE3EhFPGiVjIjV3KkmTLlmfNmWvO + nG/PnnHRonbSpHnRoXTjx63+/fv//////////////////////v346trx0a/vzajuyaLsxJrrwJPpuovo + t4Tms37lsHjjrHLjqm/ip2rhpWvhpGbho2ThomLhomHhoV/goF7fn1zfnlvfnVrfnVrfnlnenljenlje + nljenVfenVfenVfenVffnVffnVjfnVffnFffnVbfnVffnVbfnFbfnFbfm1Xfm1Xem1Tem1Tem1Xem1Te + m1PemlHfmlHfmlHfmlHemlHfm1Hfm1Hfm1Dfmk/fm1Dfm1DfmlDemlDemlDemlDemlDemlDemlDemlDe + mlDemlDemlDemlDem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDf + nFDfnFDfnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDg + nFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDhnFHhnFHhnFHhnFHhnFHhnFHhnFHhnFLh + nFLhnlPin1XjoljkpVzlqmLnr2nptnHsvHnguHs9NCQ+NidKRTf///////////////////////////// + ///8+fi6i2eMPwWRRhCRRxKRSBKRSBKRSBKRSBKSSRORSROSSRSSSBOSSBORSBOaTRWmUxamUxalUxal + VBelVBelUxalVBelVBemVBenVBenVBenVBinVRinVhinVhinVhmnVhmnVhqnVhunVxunVxuoWByoWByo + WBypWBypWR2pWR6pWh+pWyCpWyGqWyGrWyKrXCOrXCOrXCOrXCSrXSSrXiSrXiasXiytYCetYCeuYCev + YSmwYiuyZC2zaDC1ajK2bDa4cDq7dD6+eELBfUnBf03Dg1LGiFfHjFzJjl/KkWLLlWXLlmfMmGvOnG/O + mWrJj13hwaT////////////////////////////46NfuyaLtyKDsxJrrwJPpu4zouIXls37ksHjjrHPi + qm/hp2zhpWzgpGXgomLfomHgoV7foF3fn13fn13gn1zenlrenVnenljenljdnljdnVfenVfenVfdnVfd + nVfdnFfdnFfdnFbdnFbenFXenFXenFXfnVbfnFXfnFbfnFXfnFXfnFTem1Tem1Tem1PemlHemlDemlDe + mlDemlDemlDemlDem1Dfmk/emk/fm1Demk/emk/emk/emk/emk/emlDemlDemlDemlDemlDemlDemlDe + mlDem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dg + nFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDgnFDhnFHhnFHhnFHhnFHhnFHhnFHhnFLhnFLhnVPin1Xjoljk + pVzlqmLnr2nptnHsvHnguHs9NCQ+NidKRTf////////////////////////////////////69/TCmXqQ + RA6QRA+RRxKRSBKRSBKRSBKRSROSSBKSSRSSSRSSSRSSSRSTSRSZTBWjUhamUxalVBelVBelVBelVBel + UxalVBelVBemVBinVRinVBinVRmnVhinVhmnVhmnVhmnVxqnVxunVxunVxuoWByoWBypWBypWR6pWR6p + WR6pWh+qWyCpWyGqWyKqXCKrXCOrXCOrXCOrXSSrXiSsXyStYCqtYSqtYSauYSevYyqvYyqxZCuyZC2z + Zi+1aTK3bTa5cDq7dD69d0K/ekbBfkvDgk/FhVTFiFfHilrIjVzIjl3JkWHKlGXLkmLJj17HjFrdt5j8 + +PT//////////////////////v746djtyqPrw5jqwJTpvI7ouYjltYLksXvkr3birHLhqHHhp2zgpGXg + o2TfomHfoV/foF3en1zenlvenlvenlvenlvenlrenlndnljdnVfdnVfdnVfdnVfdnFfdnFfdnFbdnFbd + nFXdnFXdnFXenFXem1Tem1Tem1TenFTfnFXfnFTem1Tem1TfnFXfm1Lfm1Dfm1HemlDemlDemlDdmk/e + mlDemlDemk/fm1Dfmk/emk/emk/emk/emk/emk/emlDemlDemlDemlDemlDemlDemlDemlDemlDemlDe + mlDemlDemlDemlDemlDemlDemlDemlDemlDemlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDf + mlDfmlDfmlDfmlDfmlDfmlDfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dgm1Dgm1Dg + m1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1Dgm1DgnFDgnFDgnFDg + nFDgnFDgnFDgnFDgnFDfnFDgnFHgnFHgnFHgnFHgnFHgnFLgnFLgnVPhnlXioVjjpVzkqmLmr2notnHr + vHnfuHw9NCQ+NidKRTf////////////////////////////////////////////GooeKOwOPQw2RRxOR + RxKRSBKSSBKRSBKSSROSSRSSSRSRSRSSSRSRSBSYSxWlUhamUxalVBelVBelVBelVBelVBelVBelVBem + VRenVBinVBmnVRinVhmnVhqnVhqnVhmnVxqnVxunVxunWByoWByoWBypWB2pWB2pWR6pWR+qWiCpWiCq + WyGqWyKqXCOsXCOsXSOsXyOtYCStYCSuYSeuYS6uYiauYyevZCixZSmxZSqyZCyzZS20aDC1ajO3bTe5 + cDq6cz69dkG/ekXAfEjCf0zDgVDEhFPFhlXEh1bGi1nGjFvHjFnFiFfFhlS+eULZr47///////////// + ///////////////359frwZbrwJTovpDnuormtoTltH/ksXjjrHbiqXTiqGvgpWfgo2Xgo2LfoWDfoF7f + n1zen1zenlvenVndnVnenVnenlnenlrenljenVfdnVfdnVbdnFbdnVfdnVbdnFbdnFXdnFXdnFXdnFXe + nFXenFXem1Tem1Tem1Tem1Tem1Pem1Tem1Tem1Pfm1Hfm1Hfm1Hfm1Hfm1HfmlDemlDemlDemk/emlDf + mk/emU/emU/emU/emU/emU/emU/emVDemVDemVDemVDemVDemVDemVDemVDemVDemlDemlDemlDemlDe + mlDemlDemlDemlDemlDemlDemlDemlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDfmlDf + mlDfmlDfmlDfmlDfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDf + nFDfnFDfnFDfnFDgnFHgnFHgnFHgnFLgnFLgnVPhnlXioVjjpFzkqWLmr2notnHrvHnfuHw9NCQ+NidK + RTf////////////////////////////////////////////9/fzRspuWTxyOQgyRRxKRRxKSRxKRSRKS + SROSSROSSRSSSRSSSRSSSRSSSRSWSxWhUBWmUxelUxalVBelVBelVBelVBelVBelVBemVBenVRinVRin + VRmnVhmnVhqnVhqnVhqnVhunVxunWByoWByoWBypWBypWR2pWR+pWR+pWR+pWR+qWiCsXSGrXiKsXyOt + XyOtXyOtYCStYCSuYCSuYCquYSyuYSavYyevZCixZSmyZiq0Zy20aC22ajG1ajK3bDW4bzq6cj27dUC9 + d0K/eUXAe0jBfkvBf03CgE7DglHEhFLFhFLCgk7CgU7AfUm/eUTVpoL69O7///////////////////// + //746Nfsxp3ovpDnvI7muIfltoLks33jsH3irHTiqW7hp2rgpWfgo2XgomLfoF/fn13fn13enlvenlne + nVndnVndnVjdnVjdnVjenVjenVjenljdnVjdnFfdnFbdm1bdm1Xdm1Xdm1Xdm1Xdm1Xdm1Xem1Tem1Te + m1Tem1Tem1Tem1PdmlTdmlTdmlLdmVDemlDemlDemlHemlHemlDemVDemlDdmVDdmVDemU/emU/dmU/d + mU/dmU/dmU/dmU/dmU/emVDemVDemVDemVDemVDemVDemVDemVDemlDemlDemlDemlDemlDemlDemlDe + mlDemlDemlDdmlDdmlDdmlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDe + mlDem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDf + nFDgnFHgnFHgnFLgnFLgnVPhnlXioVjjpVzkqWLmr2notnHrvHnfuHw9NCQ+NidKRTf///////////// + ///////////////////////////////////////YvquNQQuNQQmRSBORRxKRRxKRSBKSSROSSROSSROS + SRSSSRSSSRSRSRSWSxSkUhamUxelVBelVBelVBelVBelVBemVBilVBemVRinVRinVRmnVRmnVhmnVhmn + VhqnVhmnVxunWBynWBynWByoWBypWB2pWB2pWR6pWR+qWh+rXB+sXh+sXiGsXyKsXyOtXyOtXyOtYCSt + YCOuYCSuYCyuYSivYyevYyivZCixZSmyZiu1aC20aC22ay+2ajG1azW4bzm5cTy6cjy8dUC9dkG+eUO+ + eUW/e0fAfEnAfUrBfkvAfEi/fEe+eUS9dkC3aS/Sn3n////////////////////////////36dnpvZLn + u4/nuovmt4bltITksYDjr3jjq3PhqG3hpmrfpWbfo2TfoGHeoF/enlzdnlvcnVrcnVncnFncnFncnFjc + m1fcm1fcm1fdnFfdnVfdnVjdnFfcm1bcm1Xcm1Xcm1Xcm1XcmlXcmlTcmlTdmlTdmlTdmlTdmlTdmlPd + mlPdmlTdmlLdmVDdmVDdmVDdmVDdmVDcmE/dmVDcmVDcmE/cmFDdmU/dmlDdmk/emlDdmU/dmU/dmU/d + mU/dmU/dmVDdmVDdmVDdmVDdmVDdmVDdmVDdmVDdmVDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDd + mlDdmlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDem1Dem1De + m1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDgnFHgnFLg + nFLgnVPhnlXioVjjpVzkqWLmr2notXHrvHrfuHw9NCQ+NidKRTf///////////////////////////// + ///////////////////////////fybqhYjSNQAiSRxKRRxKSSBOSSBOSSROSSRKSSRSSSRSSSRSSSRSS + SRSVShWfTxamUxelUxelVBelVBelVBemVBilVRimVBimVRinVRmnVRmnVRmnVhqnVxqnVxqnVxunWByn + WBynWBynWByoWB2oWB2qWR6qWx+rXR+sXR+rXR+sXSCsXiKsXyOsXyOtXyOtYCStYCSuYCWuYCetYS6u + YSiuYievYyiwZSqwZSuyZiuzZyy1aC21ai+2azG3bDW3bDe4bzm4cDq6cTu8cz68dD+8dEC+d0K+eUO+ + eUW9dkK8dEC8dD+7cjy5bzq4bDTNl2/16eD////////////////////////46dvrxZ3nu4znu43mtonk + tILksXzjrnjiq3PiqG7gpmnfpGbfomPeoWHen17enlzdnlvcnVrcnFjcnFjcnFjcm1fcm1fcm1fcm1fc + m1bcnFbdnFfcm1bdnFbdnFbdnFbcm1XcmlTcmlTcmlTcmlTdmlTdmlTdmlTdmlTdmlPdmlTdmlPdmVDd + mVDdmVDdmVDdmVDdmVDcmVDdmVDcmE/cmE/cmE/cmE/dmU/emlDdmU/dmU/dmU/dmU/dmU/dmVDdmVDd + mVDdmVDdmVDdmVDdmVDdmVDdmVDdmVDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDemlDe + mlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDem1Dem1Dem1Dem1Dem1De + m1Dem1Dem1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFDfnFHgnFLgnVPhnlXioVjj + pVzkqWHmr2notXHru3nfuHw9NCQ+NidKRTf///////////////////////////////////////////// + ///////////////m1sqUTBiMPgeRRxKSSBOSSBOSSBOSSBKSSROSSROSSRSSSRSSSRSRSRSUShShUBam + UxelUxelVBelVBelVBemVBimVRimVRimVRmnVRmnVRmnVRqnVRmnVxqnVxunVxunVxuoWByoWByoWB2o + WR6qWx6rXB+rXB+sXR+sXSCsXSCsXSCsXiKsXyOsXyOsXyOtYCOtYCSuYCStYCmtYC2uYSWuYiawZCmw + ZSqwZSqxZiu0Ziy0aC22ay+2azG2azK1ajO2bDS4bji4bji5bzm5bzm7cjy7dDy8dD+7cz+5bzu6cDu4 + bzi3bTe3azSwXiLKkWb+/Pv////////////////////////4693ovJHnupDnuYvlt4XktIDjsXvirXfi + q3PhqG3hpmnfpGXfomLeoV/en13enlzdnVvcnFncnVjcnFjcm1fcm1fcm1fcm1fcm1bcmlbcm1bcm1Xc + m1Xdm1bdm1bdm1bdm1XcmlTcmlTcmlTcmlTcmlTdmlTdmlTdmlPdmlPdmlPdmlHdmVDdmVDdmVDdmE/d + mVDcmE/cmE/dmE/dmE/cmE/cmE/cmE/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmVDdmVDdmVDd + mVDdmVDdmVDdmVDdmVDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDdmlDemlDemlDemlDe + mlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDemlDem1Dem1Dem1Dem1Dem1Dem1Dem1De + m1Dem1Dem1Dem1Dem1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Dfm1Df + m1Dfm1Dfm1Dfm1DfnFDfnFDfnFDfnFDfnFDfnFDfnFDenFHenFDenVHgnlThoVfipVvkqWHmr2jotXDr + u3jet3w9NCQ+NidKRTf///////////////////////////////////////////////////////////// + ///q29GueFCMPgaRRxKSSBOSSBORSBOSSBKSSROSSROSSRSSSRSSSRSSShWTShWdTxamUxelVBelUxel + VBemVBimVRimVBimVRimVRmnVRmnVRmnVRmnVRqnVhqnVxqnWByoWBynWByoWR2qWx2qXB2qXB6rXB6r + XR+rXR+sXSCsXSCsXSGsXiKsXyOsXyOsYCSsYCStYCSuYCSuYSmuYS2vYiivYievYyivZCmwZSmyZiqz + Zyy0aC21aC21aS60aS+0aDG2ajO2azS2azW3bDW5bja6cDa5bzm5cDq3azW3bTe2ajO1ajK1aDCzZy6y + ZCrEh1nx4db////////////////////////57eHrxqDnuovmuYrlt4Tks3/jsHrirXXiqnDhqG3gpWfg + pGTfomLeoV/dn13dnlvdnVrdnVncnFfcnFfcm1fcm1fcm1fcm1bcmlXcmlXcm1Tcm1Tcm1TcmlPcm1Xd + m1Tcm1Tdm1Tdm1Tdm1TcmlPcmlPdmlPdmlPdmlLdmlPdmlLdmU/dmVDdmVDdmU/dmU/dmE/cmE/dmE/d + mE/cmE/cmE/cmE/cmE/dmU/dmU/dmU/dmU/dmU7dmU7dmU/dmU/dmU7dmU7dmU/dmU/dmU/dmU/dmU/d + mU/dmU/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/emk/emk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/d + m0/dm0/dm0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/em0/e + mk/emk/em0/em0/em0/em0/em0/em1Dem1DenFHgnVThoFfipFvkqWLmrmjotHDru3jetnw9NCQ+NidK + RTf////////////////////////////////////////////////////////////////////z6+WfXjCM + PgaRRhGRRxKRSBOSSBKSSROSSROSSROSSRSSSRSSSRWSSRSSSRSfUBamUxelUxelUxemVBelVBimVBem + VRmmVRmmVRmmVRmnVRqnVRunVRqnVhunWBynVxuoWBupWxyqWxyqXB2qXB6qXB6qXB6rXB6sXSCsXSCs + XSGsXSGsXiKsXyOsYCSsYCStYCSuYCWuYCSuYSuvYi2uYSauYSauYyiwZCivZCmxZiuxZiuyZiu0Ziy0 + aC20Zi6zZi6zZy+0aDC0aDG2azG3bTG3bDS4bje1aDC2azO0aDGzZi6zZi6yZS2yZi2tWh7BglT8+ff/ + ///////////////////////57uLovpLmuYrnuonltoTks37jsHnirXPhqm/hqGzhpmjgo2TfomHdoF3d + n1zdnVndnVjcnFfcnFfcm1fcm1fcm1XcmlXcmlXcmlTcmlTcm1Tcm1Tcm1Tcm1TcmlPcmlPcmlPdm1Pd + m1Pdm1Tcm1PcmlPdmlLdmlLcmlLcmlLdmk/dmU/dmU/dmU/cmU/cmU/cmU/cmU/bmE7cmE7cmE7cmE7b + mE7bmE7cmE7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/c + mk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/d + mk/dmk/dmk/dmk/dmk/dmk/dmU/dmU/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/e + m0/em0/em0/em1Dem1DenFHfnVPgoFbipFvkqWLmrmjotHDru3jetnw9NCQ+NidKRTf///////////// + ///////////////////////////////////////////////////////////z7Oa7jWyLPQWRRhGSSBOS + SBOSSBOSSBOSSROSSROSSROSSRSSSRSSSRWSShWaThamVBelUxemUxemVBimVRimVRmlVBimVRmmVRmn + VRmnVRqnVRunVhunVhunVxupWhuqWxyqWxyqXB6qXB6qXB6qXB6rXB+rXB+sXSCsXSGsXSCsXSGsXSKs + XiKsXyOsYCSsYCOuYSWuYSWtYCmuYS2uYSiuYSavYievZCiwZSmwZSmxZSqyZSqzZSuzZy2yZSyyZC2y + ZC2yZCy0aS62bC61aTC4bTazZi6zZi6zZy+yZCyxYyuxYyyxZCuwZSyuXiO9fU3t28z///////////// + ///////////57+TsyqXmuYrmuonkt4Pks3/jsHrhrXThqm/hqGzfpmffpGTeoWDdoF7dnlvcnVncnVjc + nFfbnFfcm1fcmlbcmlXcmlXcmlTcmlTcmlTcmlPcmlTcmlTcmlPcmlTbmlPbmlPcmlPcmlLcm1Pcm1Pc + m1Pcm1Pcm1PcmlLcmlHcmU/cmU/cmU/bmE7bmU7cmU/bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7b + mU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/d + mU/dmU/dmU/dmU/dmU/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/emk/emk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/em0/em0/em1De + m1DenFHfnVPgoFbhpFrkqWLmr2jotHDru3net3w9NCQ+NidKRTf///////////////////////////// + ///////////////////////////////////////////////7+Paud1CMPweRRhGSSBOSSBOSSBOSSROS + SROSSROSSROSSROSShWSSRWRSRWaThalUxelUxelUxemVBimVRilVBimVRmmVRmmVRmmVRmnVRqnVhqn + VRqoWBypWxyqWxyqWxyqWx2qXB2qXB2qXB6qXB6qXB+rXR+sXSCsXSCsXSGsXiGsXiKsXiKsXyOtYSSs + YSWsYCStYCSuYCiuYS2uYSivYiavYyevYyewZCiwZSqwZSmxZSqyZSqxZSuwYyuwYyqwYiuzZy20bC6z + Zi63bTayZSyxYyuyZSyxYiuwYiuwYiqwYSqvYimwZCqpVxm7eUf79fL////////////////////////6 + 8ujov5TluYnluYjktoPjsn3isHnhrHLgqW/fp2vepmjeo2PdoWDdoF3cnlvcnVncnVjbnFfbnFfbmlbb + mlbbmlXbmlTbmlTbmlTbmlTbmVPbmlPbmlPbmlPbmlPbmlPbmVPbmVLbmVPbmVLbmlLbmlLcmlPdmlPc + mVLcmU/cmU/cmE/cmE/bmE7cmE/bl07bmE7bmE7bmE7bmE7bmE7bmE7bmE7bl07bl07cmE7cmE7cmE7c + mE7cmE7cmE7cmE7cmE7cmE7cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/d + mU/dmU/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/emk/emk/emk/emk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/em0/em1Dem1DenFHfnVPgoFbh + pFrjqWHmr2jotHDru3net3w9NCQ+NidKRTf///////////////////////////////////////////// + ///////////////////////////////////8+ffJpYuNQAmQRQ+SSBOSSBOSSBOSSROSSROSSROSSROS + SROSShWSSRWRSRSXTBakUxemUxelUximVBimVRimVRimVRmmVRmmVRmmVRqmVRmnVxupWBqpWhupWxyq + WxypWxyqXB2qXB2qWx2qXB+qXB+qXR+rXSCsXSGsXSGsXiGsXiKsXiKtXyOtYCSsXyOsYCStYCStYCWu + YSauYSuvYi2vYSmvYiavYievYyivZCmwZSmxZCmxZCiwZCmvYimvYSqxZiyyai2xZCy1bDSxZC2wYimx + ZCuwYimvYimvYimvYSmvYSevYiivYi2sXCa5dUXo0sH////////////////////////68ujszKnluYnl + uIjktoTjs37hr3jhrXPfqm/fp2vepWfeo2TeomDdoF3cnlvcnVrcnFfcnFfbm1bbm1bbmlXbmlTbmlTb + mlTbmVPbmVPbmVPbmVPbmVPbmVPbmVPbmVPbmVLbmVPbmVLbmVLbmVLbmVLbmVLcmVLcmE/dmE/cmE/c + l0/bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07cl07cl07cmE7cmE7cmE7cmE7c + mE7cmE7cmE7cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmk/d + mk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/emk/emk/emk/emk/emk/emk/emk/emk/emk/e + mk/emk/emk/emk/emk/emk/emk/emk/emk/emk/em0/em1Dem1DenFHfnVPgoFbhpFrjqWHmr2jotG/q + u3net3w9NCQ+NihKRTf///////////////////////////////////////////////////////////// + ///////////////////////////Bl3iOQgyQRA+SRxOSSBOSSBOSSBOSSROSSROSSROSShSSShSSShWR + SRWXTRakUhemVBimUxilUximVRimVRimVRmmVRmmVRqmVRmnVxupWRqpWRupWhypWhyqWxyqWx2qWx2q + XB2qXB6qXB+qXB+qXB+rXR+sXSCsXSCsXiKtXiKtXiKsXiOsXyOsXyOsYCSsYCStYCWuYSWvYSquYS6u + YSyuYSevYievYyevZCiuYyevZCiwZCivYimuYCmwZSuwaCuvYiq1azSwZC2uYSiwYymvYiavYSevYSiu + YSiuYCmuYC2uYi+uYSioVhi3cj748ev////////////////////////79O3owJXluIjluIjktYPjsn7h + r3jhrHLfqW7ep2nepGbeomLdoF/dn1zcnlvcnFncm1fbmlfbmlXbmlXbmVbbmFTbmVTbmVTbmVTbmFPb + mFPbmVPbmVPbmVPbmVPbmVPbmVPbmVPbmVLbmVLbmVLbmVLbmVLbmE/cmE/cmE/bl07bl07bl07bl07b + l07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07bl07cmE7cmE7cmE7cmE7cmE7cmE7cmE7cmE7c + mE7cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmE/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/bmU/c + mU/cmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmU/dmk/dmk/dmk/d + mk/dmk/dmk/dmk/dmk/dmk/cmk/cmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/d + mk/dmk/dmk/dmk/dmk/dmk/dmk/dmlDdm1DdnFHenVPfoFbgpFriqWHlr2jntG/pu3jdt3s9NCQ+NihK + RTf///////////////////////////////////////////////////////////////////////////// + ///////////////XvKiRRxGPQwySSBOSSBOSSBOSSBOSSROSSROSSROSShSSShSSShWRShWVTBaiUhin + VBilUxemVBimVBmmVRmmVRmmVRmnVhqoWBuoWRqpWRupWhypWRupWhupWx2pWxyqXB2qXB2qXB6qXB+q + XB+qXB+rXR+sXSCsXiGsXiKsXiKsXiKsXiKsXyOsXyKsYCSsYCSuYSWuYCWuYSauYCmuYSquYSyuYSuv + YimuYievYyevYyevYietXyavZCqwaC2uYCe0aTKwZSytYCauYSeuYSiuYCmuYCyuYCyuYCuuXymuYSeu + YCetYCaqWx62cTrmzLf////////////////////////79Oztzq3luIfluYjktYTjsX7irnfhrHPgqW7f + pmrdpGXdomPeoF/dn13bnVrbm1jbm1fbmlfamlXamlXbmFXbmFTbmVTbmVTbmFPbmFPbmFPbmVPbmVPb + mVLbmVPbmVPbmVLbmVLbmVLbmVLbmVLamVLamVHamE/bmE/bmE/bl07bl07bl07bl07bl07bl07bl07b + l07bl07bl07bl07bl07bl07bl07bl07al07amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE/bmE/b + mE/bmE/bmE/bmE/bmE/bmE/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmk/cmk/cmk/cmk/cmk/cmk/c + mk/cmk/cmk/cmk/cmk/cmk/cmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/d + mk/dmk/dmk/dmlDdmlDdnFHenVPfoFbgpFriqWHlr2jntG/pu3jdt3s9NCQ+NihKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + ///WuqaUTBiPQQuSSBOSSBOSSBOSSBOSSBOSSROSShSSSROSShSSShWRShWUSxWhUhinVBimUximVBim + VRmmVRmmVRmnVxmoWBqoWRqoWBqoWhupWRupWhyqWhyqWhyqWx2qWx2qXB6qXB6qXB6qXR+rXR+rXSGr + XSCsXSGsXSGsXiKsXiKsXiOsXyOsXyStYCOtYCSsYCWtYCWuYCStYCStYCeuYCuuYS6uYi2uYiuuYimu + YiitXyavYyuwaC6uXyezaTOxZTCtXiiuYSyuYS+tYC2tXymuYCauYCStXyWtYCWuYCetXyWtXyWoVhe1 + bDT06N3////////////////////////89/Hpw5rlt4bluIjktYTisX3irnjhrHLgqW7fpmnepGbdomLd + oF/cn1zbnVnbnFfbm1famlbamlXamVTamFTamFTamFTamFPamFPamFPamFLamFLamVPamVLamVLamVLa + mVLamVLamVLamVLZmVLamVLamE7al07al07al07al07al07al07al07al07al07al07al07al07al07a + l07al07al07al07al07al07al07bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE/bmE/bmE/bmE/bmE/b + mE/bmE/bmE/bmE/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/c + mk/cmk/cmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmlDd + mlDdm1HenFPfoFbgpFriqWHlr2jntG/pu3ndt3w9NCQ+NidKRTf///////////////////////////// + ///////////////////////////////////////////////////////////////////////l1MeaVSSO + PwmSSBOSSBOSSBOSSBOSSRSSSRSSShSSShSSShSSShWSShWTSxWfURamVBimUximVBimVBinVRmoWBmo + WBqoWRqoWBqoWRqpWRupWRyqWhyqWh2qWx2qWxyqXB2qXB6qXB6qXB6qXB+rXSCqXB+rXSCsXiKsXiGs + XSGsXiKsXiOsXiOsYCOsYCOsYCSsXyStYCStYCWtYCStYCWuYSatYCeuYSiuYSmuYiqsXymuYy6uZzGt + XimyaDSxZjKtXimsXymuYSitYCWsXyWtXyWtXyStXyStXiSuXyauXyWtXiOtXySrWR2zajLixa7///// + ///////////////////89vDt0LHkuIfluInktYPisn3hrnfgq3PfqG7epmrdo2XdomLcoF/cnlzcnlrb + nFjbm1fbmlbamVTamVTamFTamFTamFPamFPamFPamFPamFPamFPamVLamVLamVLamVLamVLamVLamVLa + mVLamVLamFDZl07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07a + l07al07al07al07bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE/bmE/bmE/bmE/bmE/bmE/bmE/bmE/b + mE/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/bmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/c + mU/cmU/cmU/cmU/cmU/cmU/cmU/cmU/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/cmk/d + mk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmk/dmlDdmlDdm1HenFPfn1bg + pFriqWHlr2jntG/punndt3w9NCQ+NidKRTf///////////////////////////////////////////// + ///////////////////////////////////////////////////////////p2s+fXS6MPgeSSBOSSBOS + SBOSSBOSSBOSSRSSShSSShSSShSSShWRShWSShWfURenVBmmVBimUxinVRmoWBmoWBqoWBqoWBqoWBqo + WBqoWRuoWRupWhuqWhyqWh2qWx2qXB2qXB6qXB6qXB+qXB+qXR+qXR+rXSGsXSCsXSCsXiGsXiGtXyOt + XyOsXiKsXyOsXyOsYCStYCStYCOuYCSuYCWtYCStYCStYCStYSWsYCSsYiqtZi2sXiSxZy6xZy6sXiSs + XiSuXyWtYCasXySsXyStXyStXyStXiOtXiOtYCWtXiStXiOtXiSpVxmyZy3w4NP///////////////// + ///////9+vbpxZ/kt4flt4fjtYLisXzhrnfgrHLfqW3epGjdomTcoWDcoF7cnlvcnVnbnFjbmlbbmlXa + mVXamVTamFTamFPamFPamFLamFPamFLamFLamFLamVLamVLamVLamVLamVLamVLamVLamVLZmFDal07a + l07Zl07Zl07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07al07a + l07bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7b + mU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7c + mU7cmU7cmU7cmU7cmU7cmU7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7cmk7dmk7dmk7d + mk7dmk7dmk7dmk7dmk7dmk7dmk7dmk7dmk7dmk7dmk7dmk/dmk/dm1DenFLfn1Xgo1niqGDlrmfntG7p + unjdtns9NCQ+NidKRTf///////////////////////////////////////////////////////////// + ///////////////////////////////////////////////v5d2obUOMPQWSSBOSSBOSSBOSSBOSSBOS + SRSSSRSSShSSShSSShWSShWTShWcTxelVBimVBmnVRioVxmoWBqoWBmoWBqoWRqoWRqoWRuoWhypWRup + WhyqWh2qWh2qWx2qXB2qXB6qXB6qXB6qXR+qXR+qXCCrXSCrXSCsXSCsXiGtXyKsXiKsXiKsXyOsXyKs + XyOsXySsYCOuYCStYCStXyOtYCStYCStYCStYCSsYimrZC2sXiOwZSyyZzCsXiSsXiStXiStXiWsXiOs + XiOsXiOtXiOtXiOtXiOtXiOtXyStXiOtXSKtXSOrWR2wYyjdvKL////////////////////////8+PPv + 1Lbkt4XkuIfjtYLisnzhrnbgq3HfqGzepmjdo2PcoWDcn13cnlvbnVjbm1fbmlbbmlXamVTamVPamFPa + mFLamFLamFLamFHamFHamFHamFHamFHamVHamVHamVHamVHamVHZmFHamFDamE3Zl03Zl03Zl03Zl03a + l03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03bmE3bmE3b + mE3bmE3bmE3bmE3bmE3bmE3bmE3bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7b + mU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7c + mU7cmU7cmE7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7dmU7dmU7dmU7d + mU7dmU7dmU7dmU7dmU7dmU7dmU7dmU/dmU/dmlDem1LfnlXgolnip2DlrWfntG7punjdtns9NCQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////28e2ud0+KOwKSRxKSSBOSSBOSSRSSSRSSSBSSSRSSShSS + ShSSShSSShWRShabTxalVBinVhioVxmoVxqoWBqoWBmoWBqoWBqoWRqoWhuoWRuoWhypWhyqWh2rWx2r + Wx6qXB2qXB6qXB+qXB+qXB+qXB+qXB+qXB+rXR+sXiCsXiCsXSGsXSGsXiGsXiKsXyOsXyKsYCOsYCSs + XyOtYCOtYCOtYCStXyOtXyOsYSirZCyrXSKuYyqxZy+sXiSsXSStXiStXiSsXSOsXSOsXiOsXiOtXiOt + XiOtXiOtXiKtXSKtXCKtXSKsXCKpVhmtXiLq1sX////////////////////////++/jryqXlt4Xlt4fj + tYLisXvhrnbgrHLfqW3epmfdo2TcoWDbn1zbnVnbnFjbm1fbmlXamVTamVPamVPamFLamFLamFHamFHa + mFHamFHamFHamFHamFHamFHamVHamVHamVHamFDZmFDZmE3Zl03Zl03Zl03Zl03Zl03Zl03al03al03a + l03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03al03a + l03al03al03al03al07al07al07al07al07al07al07al07al07al07amE7amE7amE7amE7amE7amE7a + mE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7b + mE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7c + mU7cmU7cmU7cmU/cmU/cmlDdm1LenlXfolnhp2DkrWfms27punjdtns9NCQ+NidKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////38u65iWiNQQqRRhGSSBOSSBOSSBOSSRSSSRSSSRSSShSSShSSShSSShWS + ShaZThalVReoVxmoVxmoVxmoVxmoVxmoWBqoWRqoWRqoWRuoWRuoWhypWhyqWx2qWh2pWhyqWx2qXB2q + XB6qXB6qXR+qXR+rXSCrXR+rXSCrXB+sXSCsXSGsXSGsXiKsXiKsXSKsXiKsXyOsXyOtYCOtXyOtXyOt + XyOtXyOsYCerYyqrXCKtYSixZi+sXiSsXCKtXiOtXiSsXSOsXSOsXSOsXSKsXiOtXSKsXSGtXSGtXiKt + XSGtXCGsXCGtXCGqWBytXiLYspT////////////////////////++vfw2Lzkt4bkuIbjtYHisnzhrnfg + q3LfqGzdpmjdo2TcoWDbn1zanVranFjamlbamVXamVTZmVPZmFPZl1PZl1LZmFHZmFHZmFHZmFHZmFHZ + mFHZmFHZmFHZmFHZmFHZmFHYl1DYl07Zlk3Ylk3Ylk3Ylk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3al03al03al03al03al03al03a + l03al03al07al07al07al07al07al07al07al07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7a + mE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7b + mU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/c + mU/cmlDdm1LenlXfolnhp2DkrWfms27puXjdtns9NCQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////++k3OKOwKQRQ+SSBOSSBOSSBOSSRSSSRSSSRSSShSSShSSShSSShSRShaaUBenVxio + VxioVxmoVxmoVxmoWBmoWBqoWRqoWRuoWRupWhypWhyoWhypWhyqWh2qWx6qWh2qWx2qXB6qXB+qXB6q + XR+rXR+rXR+qXB+rXSCsXSCsXSGsXSGsXiKsXiGsXSCsXiKsXyOsXyOtXyOtXyOtXyOtXyOsYCerYSmr + WyKsXyewZi6sXySrXCKsXSOtXiStXSOsXSOsXCKsXCGsXSKrXSGrXCGsXCGtXSKtXCGsXB+sXCGsXCGs + XCCqVxqrWRzly7b////////////////////////+/fvszKnktoXkt4bjtIHisHvgrnbfqnDep2zdpWjc + omTboGDanl3anFnamlfamVbamVbZmFTZmFPZl1LZl1LZl1HZl1HZl1HZl1HZl1HZllHZllHZl1HZl1HZ + l1HYmFHZmFHZl0/Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3al03al03al03al03al03al03al03al03al03al07a + l07al07al07al07al07al07al07al07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7b + mE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7b + mU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmlDdm1LenlXf + olnhp2DkrWfms27puXjdtns9NCQ+NidKRTf///////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////8 + +vnJpYqSShSQRA+SSRSSSBOSSRSSSRSSSRSSSRSSShSSShSSShSSShSUTBWZUBakVRioVxmoVxmoVxmo + VxmoVxqoWBqoWRqoWRupWhyoWhyoWhypWhypWhyqWh2qWh2qWx2qWx2qXB6qXB6qXB6rXR+qXR+rXSCq + XSCrXR+sXSCsXSCsXSGsXSGsXSGsXSGsXiKsXyKsXyOtXyKtXyOtXiKsXyWrYCerWyKsXiWvZSysXyWr + XCKrXCKtXSOtXSOsXCGrXCGsXCGsXCKsXSGrXSGrXCGsXCCtXSGsXB+sXB+sXB+sXCCsWyCqVxqpVxnV + q4z////////////////////////+/Prx2sDktoTkt4bjtILhsXzgrXbfqnHep2zdpWjcomPbn2DanVza + nFram1famlfamVXamFTZmFPZmFLZl1LZl1LZl1HZl1HZl1HZl1HZl1HZl1HZl1HYllDYllDZmFHYl0/Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3al03al03al03al03al03al03al03al03al07al07al07al07a + l07al07al07al07al07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7b + mE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7b + mU7bmU7bmU7bmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmlDdm1LenlXfolnhp2DkrWfms27p + uXjdtns9NCQ+NidKRTf///////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////QsJqMPweP + Qw2SSRSSSBOSSRSSSRSSSRSSSRSSShSSShSSShSUTBSTTRWYUBemVhioVxinVxmoVxmoVxqoVxqoWBqo + WRqoWRuoWhuoWhyoWhuoWhypWhyqWhyqWx2qWh2qWx2qXB2rXB6qXB+qXB+qXB+qXB+qXB+qXB+rXCCs + XSCsXSCsXSCsXSCsXSCsXiGsXyKsXiGsXiGtXiKsXySrXiWrWyGrXSOvYyqsXiSrXCKrXCKrXCGsXSKs + XCGrXCCsXCGsXCGsXCCrWx+rXCCrXB+sXCCsXSCsWx+sXB+sWx+sWh6sWx+qVxmpVRbgwaj///////// + /////////////////v3tz67ktoXkt4XjtIHisHzgrXbgqnHep2zdpWfcomPbn1/anl3anVnam1famlba + mVXamFTZmFPZmFLZl1LZl1LZl1HZl1HZl1HZl1HZl1HYllDZl1HYllDYllDYl0/Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zlk3al03al03al03al03al03al03al03al03al03al07al07al07al07al07al07a + l07al07amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7b + mE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7b + mU7bmU7cmU7cmU7cmU7cmU7cmU7cmU/cmU/cmlDdm1LenlXfolnhp2DkrWfms27puXjdtns9NCQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////Zv6ybWSiOQgySSBOSSBOS + SRSSSRSSSRSSSRSSSRSSShSUTBSVTRSUTRSXTxaiVBioVxmoVxmnVxmoVxqoWBqoWBqoWBqoWRuoWRuo + WRuoWhyoWhyoWhuqWh2qWhyqWh2qXB6rXB6qXB6qXB6qXB6qXB+qXB6qXB+qXB6rXR+rXR+sXSCsXSCs + XR+sXSCsXSCrXiCrXiGsXiGrXiOrXSSrWyGrWyGvYSitXyarWyGqWyCrXCGrXSGrXCGrXCCsXCGrXCCr + XCCrWx+rWx+rWx+sXB+sXCCsWx+rWx6sWh6rWh2rWh6sWh6qVxqpVRbSpYL///////////////////// + /////vzz3cfktoXktoXjtIHhsXzhrXbfqnHep2vdpGjcomPcoGDanlzanFram1jamlbamVTamFTZmFLZ + mFLZl1LZl1LZl1DZl1HZl1HZl1HYllDZl1HYllDYllDYllDYlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3al03al03al03al03al03al03al03al03al03al07al07al07al07al07al07al07al07al07a + mE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7b + mE7bmE7bmE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7cmU7c + mU7cmU7cmU7cmU/cmU/cmlDdm1LenlXfolnhp2DkrWfms27puXjdtns9NCQ+NidKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////gy7yQRxKNQAmSSBSSSRSSSRSSSRSSSRSS + SRSSSRSUSxSVTRWVTRWTTRSXThakVRioVxmnVxmoVxmoVxqoVxqoVxqoWBqoWBqoWRuoWRuoWRuoWhyo + WhypWhyqWh2qWx2qWx2qXB2qXB6qXB6qXB6qXB6qXB6qXB6qXB6qXB6rXR+rXR+rXR+rXR+rXR+sXR+s + XiCsXiCrXSKqXCKqWyCrWyGuYCetXyaqWyCqWiCrWyGrXCGrXCCqWyCrWyCrWx+rWx+rWx+rWh6rWh6r + Wh6rWx6rWx6qWh2rWh2sWh2rWh2rWh2rWh6qVxmoVBXbt5j////////////////////////////v07fk + toXktoTjtILisHvgrXbgqnHep2zdpWfdomPboF/bnl3anVram1jamlfamVXamFPZmFPZl1LZl1LZl1HZ + l1HZl1HZllDZllDYllDYllDYllDYllDYlU7YlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3a + l03al03al03al03al03al03al03al03al07al07al07al07al07al07al07al07al07amE7amE7amE7a + mE7amE7amE7amE7amE7amE7amE7amE7amE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7bmE7b + mE7bmE7bmE7bmE7bmE7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU7bmU/b + mU/bmlDcm1LdnlXeolngp2DjrWfls27ouXjctns9NCQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////k08WnbUOMPwiSSBOSSRSSSBOSSRSSSRSSSRSUSxSVTRWV + TRWVTRWVTRWWThagUxeoVxmnVxmnVxqoVxqoVxqoVxmoWBqoWRuoWRqoWRuoWhyoWhyoWhuqWhyqWhyp + Wh2pWhyqWx2qWx2qXB2qXB6qXB6qXB6qWx6qXB6qXB+rXB+rXR6rXB+rXR+sXSCrXB+rXR+qXCGpWyGp + Wx+qWyCuYCauYCeqWyCqWiCqWiCrWx+rWx+qWx+qWx+rWx+rWx+rWx6rWx6rWh6rWh6qWh2rWx6rWh6r + Wh2sWhyrWhyrWhyrWhyrWh2qVxqoUhLNnHX////////////////////////////z4MvktobktoXjtYHh + sXzgrnbfq3Hep2zdpGfcomPboGDanlzanFrZm1jYmlbamVTamVTZmFPYmFLZl1LZllLXllDYl1HYl1HY + llDYllDYllDYllDYlk/YlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Xlk3Xlk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7Z + mE7ZmE7ZmE7ZmE7ZmE7ZmE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7a + mE7amE7amU7amU7amU7amU7amU7amU7amU7amU7amU7amU7amU7amU7bmU7bmU/bmU/bmlDcm1LdnlXe + olngp2DjrWfls27ouXjctns9NCQ+NidKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////t4dmZViSMPweSSBOSSBOSSBOSSRSSSRSTShSUTBSVTBSVTRWVThWUTRWV + ThWiVBioVxmnVxmnVxqoVxqoVxqoVxmoWBuoWBqoWRuoWRuoWhyoWhypWhyoWRupWhypWhypWhyqWhyq + Wx2qWx2qXB2qXB6qWx2qWx2qXB6qXB6rXB6rWx6rWx6rXB+rXB+qWx6pWh+pWh+pWiCpWh+sXiSvYCar + WyCqWh6qWh+qWh+rWh+qWh6qWx+qWx+rWx6rWx6rWh2rWh6rWh6qWh2rWh2rWh2qWh2qWhyrWhyrWRyr + WRurWhyrWhyqVxmnUhHTp4P//v7////////////////////////x2b/kt4fjtYTitIHhsXzgrnffqnHd + p2zcpGfcomPaoF/anlzZnVnYm1jYmlbYmVXZmVTYmFPYmFLYl1LXllHYl1HXl1HXllDXllDXllDXllDX + lk/XlU3XlU3XlU3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7Z + mE7ZmE7ZmE7ZmE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7a + mU7amU7amU7amU7amU7amU7amU7amU7amU7amU7amU7bmU/bmU/bmlDcm1LdnlXeolngp2DjrWfls27o + uXjctns9NCQ+NidKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////v5d20g1+LPgaRSBOSSRSSSRSSSRSTSRSUTBSUTBSVTBSVTRWUThWVThWVThaeUheoVxmn + VxmnVxqoVxqoVxmoVxqoVxqoWBqoWRqoWRupWh2oWhyoWRupWhupWhupWhyqWhyqWh2pWxyqWx2pXB2q + WxyqWx2qWx2qXB2qXB6rWx2rXB6rWx6rXB6qWh6pWR+pWR2pWR6pWR6sXSOuXyWrWiCqWR6qWR6qWh+r + Wh+qWh6qWh6pWh2pWh6qWh6rWh6rWh2qWh2qWh2qWhyrWh2qWhyqWhyqWhyrWhurWhurWhurWRurWRyq + WBqmUA7HjmP//v3////////////////////////15NHkt4fjtoTitILhsX3grnbeq3HdqGzdpWfco2Pb + oF/anlzanFrYm1fYmlbYmVXZmVTYmFLXl1HYllHXl1HXllDXllDXllDXllDXllDXlk/XlU3XlU3XlU3X + lU3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Xlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7ZmE7a + mE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amE7amU7amU7amU7amU7a + mU7amU7amU7amU7amU7amU7amU7amU/bmU/bmlDcm1LdnlXeolngp2DjrWfls27ounjctns9MyQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////3 + 8++ma0CLPweRSBOSSRSSSBOTSRSUTBSUTBSUTBSUTBSUTBSVTRSUTRWUTRWeUheoVxinVxinVxmoVxmo + VxmoVxmoVxmoWBmoWRqoWRuoWRqoWRuoWhuoWhupWhypWhyqWhyqWhyqWh2pWxyqWx2qWxyqWx2pWx2q + XB2qXB6qXB2rWx2rWx2qWR2pWR6pWR2pWB2pWB2rXCKtXiSqWyCpWR2qWR6qWh6rWh6qWR6qWR2qWR6p + WR2pWh2pWh2qWh2qWRyqWRyqWh2qWRyrWRuqWRyqWhyqWhurWRurWRurWRqrWRurWRurWBqnTw7Klm39 + +/n////////////////////////z3sfkuIjjtYPitIHhsXvgrnbfq3DeqGvdpWbco2LaoF/an1zZnFjY + m1fXmlXYmVTYmFLXl1HYl1DXllDXllDXlk/Xlk/Xlk/Xlk/Xlk7XlUzXlUzXlUzXlUzXlUzXlkzXlkzX + lkzXlkzXlkzXlkzXlkzXlkzXlkzXlkzXlkzXlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzY + lkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzZlkzZl0zZl0zZl0zZl0zZl0zZl0zZl0zZl0zZl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3ZmE3amE3amE3a + mE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3amE3a + mE3amE3amE3amE7amE7amU/cmlHdnVXeoVjgpl/jrGblsm7ouHbctXk9MyQ+NidKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////38+/CmXyMPweQ + RxGSSRSSSRSTShOVTBSUTBSUTBSVTBSVTBSUTRSVTRWUTRSbUBanVxinVxmnVxmoVxmoVxmoVxmoVxmo + WRqoWBqoWRuoWRuoWRuoWRuoWRuoWRupWRuqWhyqWhypWhyqWxyqWxyqWx2qWx2qXB2pXBypXByqXB2q + Wx2pWB2pWR6pWB2pWByoWB2qWh+tXSKqXCGoWR6pWR2qWR2qWR6qWR6qWR2qWR2pWR2pWR2pWRypWRyq + WRyqWRyqWRyqWBuqWRuqWRqqWBuqWRuqWBqqWRurWBqrWRqrWRmrWRqqWRqlTQrBhVb9+/n///////// + ///////////////26NfkuIjjtYPitIHhsXzgrnbfq3DeqGvcpWfbo2PboF/anlvZnVjYm1bYmVXXmFPY + mFLYl1HYl1DXllDXllDXlk/Xlk/Xlk/Xlk7XlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzY + lUzYlUzYlUzYlUzYlUzYlUzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zlk3Zlk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03al03al03al03al03al03a + l03al03al03al03al03al03al03al03al03al03al03al03amE3amE3amE3amE3amE3amE3amE3amE7a + mE7amU/bmlHdnVXeoVjgpl7jrGblsm7ouHbctXk9MyQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////+/fy3h2SMQAmQRhGSSRSTSROT + TBSUTBSUTBSVTBSVTBWVTBSVTRSUTRWTTRWaURWmVhioVxmnVxmnVxmoVxmpVxmpWBuoVxqoWBqoWRqo + WRqoWRuoWRuoWRuoWRupWRupWhupWRupWhupWxypWxyqWxyqWxypWxyqWxyqWx2pWh2oWB2pWB2pWB2o + WByoWB2qWh+sXCGqWyCoWR2pWR2pWR2pWR2qWh2qWR2pWRypWRypWBypWBypWRypWRypWRuqWBuqWBuq + WBurWRuqWBuqWBqqWBqqWRqqWRqqWRqrWRqrWBqrWRmqWBqlTQvEil379/T///////////////////// + ///049HluYrjtYPis4HhsXvgrnXfqnDep2vdpWbcomPbn17anlvYm1jYmlbXmFTXmFPYl1LYllHXllDX + lVDXlVDXlU/XlU/XlU7XlEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzY + lUzYlUzYlUzYlUzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Z + lk3Zlk3Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03al03al03al03al03al03al03al03a + l03al03al03al03al03al03al03al03al03amE3amE3amE3amE3amE3amE3amE7amE7amU/bmlHcnVXe + oVjgpl7iq2Xlsm7ouHfctXk9MyQ+NidKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////v7QsZqOQwyPRA6SSRSTShSUTBSUTBSUTBSU + TBSVTBSUTBSVTBWUTRWTTRWZUBWmVhioVxmnVxmnVxmpVxmoVxqoVxqoVxmoWBqoWBqoWRqoWRuoWRuo + WRuoWRupWRupWRupWRupWRupWhupWxypWxypWxyqWxupWhyoWBynWByoWR2oWB2oWByoWByqWh6rXCCq + Wh6oWBypWR2oWR2oWRypWRyqWR2pWBypWBupWBypWBypVxupWRupWRuqWBuqWBuqWBurWRyrWBuqWBqq + WBqqWBqqWRmpWBqqWBmrWBirWBirWBmqWBikTQq+fk379vL////////////////////////47N7luYrj + tIPjtILhsHvgrXXfqnDep2vdpWfcoWLbn17anVvZnFnZmlfXmVXYmFPYl1LXllHXllDXlVDXlVDXlVDX + lU/XlEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzY + lUzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlkzZlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03al03al03al03al03al03al03al03al03al03al03a + l03al03al03al03al03al03amE3amE3amE3amE3amE3amE7amE7amU/bmlHcnVXdoVjfpl7iq2Xlsm7n + uHfctXk9MyQ+NidKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////MqZCQRxGORA6SSRSUTBSUTBSUTBSUTBSUTBSUTBSVTBSU + TBSUTRWUTRWYTxWkVhioVxinVxmnVxmnVxmoVxmoVxqoVxmoVxmoWBqoWRuoWBqoWRqoWRqoWRupWRup + WRupWRupWRupWhupWhypWxupWhuoWBunWBynWByoWBynWBynWByoVxupWByrWx+qWR6oWByoWByoWByo + WByoWBupWBypWBupWBupWBupWBupWBupVxupWBupWBupWBqqWBqqWBqrWBuqWBqqWBqqVxmqWBmqWBqq + WBmqWBmqWBirWBiqWBiqWBmlTQvAgVH59O7////////////////////////36drluozjtIPitIHhsHvg + rnbfq3Hdp2vco2bboWLan17anVvYm1jYmlfXmVXWmFPXllLXllDXllDXllDXlVDXlU/XlEzXlEzXlEzX + lEzXlEzXlEzXlEzXlEzXlEzXlEzXlEzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzWlUzXlUzX + lUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzYlUzXlUzXlUzYlkzYlkzZ + lkzZlkzZlkzZlkzZlkzZlkzZlkzZlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zlk3Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Yl03Yl03Zl03al03al03al03al03al03al03al03al03al03al03al03al03a + l03al03al03amE3amE3amE3amE3amE7amE7amU/bmlHcnVXdoVjfpl7hq2Xksm7nuHbctHk9MyQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////eybiUTRmNQguSSROUTBOUTBSUTBSUTBSUTBSUTBSUTBSUTBWVTRWUTRSX + TxaiVRioWBinVxmnVxmoVxmoVxmoVxmoVxmoVxqoWBqoWBmoWBqoWRqoWRqoWRqpWBqpWBqpWRqpWBqp + WRqpWRqpWRunVxqnVxunWByoWBynVxqnVxuoVxupWByrWh6qWR6oVxuoVhuoVxqoVxuoWBuoWBupWBup + WBupVxqpWBupWBypVxupVxqpWBupWBqpWBqpWBqqWBqrWBqqWBmqWBmpWBmqWBmqWBmqWBmpWBipWBiq + WBiqWBiqWBilTgu8ekb48Oj////////////////////////57uPlu43itIPis4HgsHvfrXbdq3Lcp2vb + pGfaoWLZn1/YnVvYm1jXmlfWmFXWl1PWl1LVllHWllDWllDWlVDWlE3WlEzWlEzWlEzWlEzWlEzWlEzW + lEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzY + lkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Y + l03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Z + mE3ZmE3ZmE3ZmE7ZmE7ZmU/amlHbnVXdoFjfpl7hq2Xksm7nuHbctHg9MyQ+NidKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////gy7yYVCKMQAqTSxSUTBSUTBSUTBSUTBSUTBSUTBSUTBSUTBSVTBWUTRWWTxajVReoVxin + VximVxinVxmoVxmoVxmoVxmoVxmoWBmoWBqoWBmoWBmoWBmoWBmoWBqpWRqpWBqpWRqpWBunVxqnVhqn + WBunVxuoWBynVhqnVxqnVxqoWBuqWR2qWR2oVhqoVhqoVhqoVhuoVxqoVxuoVxuoVxupVxqpVxupVxup + VxqpVxqpVxqpVxqpWBqpWBmpWBmqWBqqWBmpWBmpWBmqVxmqVxipWBipWBipWBiqWBiqWBiqWBiqWBil + Tgq8eUX37ub////////////////////////47eHlvJDhtILhs4Hgr3vfrXbeqnHcp2vao2bZoGLZn17Y + nVvYm1jXmlfWmVXWmFTVllLWllDWllDWlVDWlE7WlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzW + lEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzY + lkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Y + l03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03ZmE3ZmE7Z + mE7ZmU/amlHbnVXdoFjfpl7hq2Xksm7nuHbbtHg9MyQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////r + 3tWgYTOLPweSSxSTTBSUTBOUTBSUTBSUTBSUTBSUTBSUTBSVTBWUTRSWThWgUxanVxenVxinVximVhio + VxmoVxmoVxmoVxqoVxmoWBmoWBmoWBmoWBqoWBmoWBmpWBqpWBqoVhqnVhqnVhqnVxqnVxqoVxunVhqn + VxqnVhqoVxupWR2qWByoVhqoVxqoVhqoVhqoVhmoVxqoVxqoVxqoVxupVxqpVhmpVxmpVxqpVxmpVxqp + VhipVxmoWBioVxmpWBmqVxmqVxmpVxipVxipVxipWBipWBipWBipWBiqWBiqWBiqWBilTgy4cjvy5Nn/ + ///////////////////////58ejmvpPis4LitILhsH3frXfeqnLdqGvbpGfaoWLZoF/YnVvYm1jXmlfW + mFXWl1PWl1LVllHVllDWlE7WlE3WlE3WlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzW + lUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Y + lk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03ZmE7ZmE7ZmU/amlHbnVXd + oFjfpl7hq2Xksm7nuHXbtHg9MyM+NidKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////w5t+laT+KPQSS + ShOTTBSUTBSUSxOUSxOUTBSUTBSUTBSUTBSVTBSUTRSUTRWfUxaoVxenVximVhinVxinVxmoVxmoVxio + VhioWBmoWBmoWBmoWBmoWBqoWBmoWBqmVhmmVRmnVRqnVRqnVRqnVhqoVxqnVhqnVhmnVhmoVxqpWByp + WBuoVhmoVhmoVhmoVhmoVhmoVhqoVhmoVhmoVxqoVxqoVhmpVxqpVxmpVxmoVxmpVxmpVhmoVhipVxio + VxipVxipVxmpVxipVxipVhepVxipVxipVxipWBepWBiqWBiqWBiqWBilTwu1bDPy5Nn///////////// + ///////////58efmv5XhsoDis4LhsHzfrHfeqnHcqGzbpGbaoWLZnl/YnVvYm1jXmlbWmVTWmFTWl1PV + llHVlk7WlE3WlE3WlE3WlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzW + lUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Zl07ZmU/amlHbnVXdoFjfpl7hq2XjsW3n + uHXbtHg9MyQ+NidKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////z7Oawe1SLPweSShOTTBSUTBSU + SxOUTBSUTBSUTBSUTBSUTBSUTBSUTBSUTRWdUhWmVxenVhenVhinVxinVxioVxmoVxmoVhioVxmoWBio + WBioWBmnWBmnVRmmVRmmVRmnVRqnVRmnVRmnVhqoVxqnVhqnVhmnVhqnVhmoVxqpWBuoVxqnVhmoVhmo + VhmoVhmoVhmoVhqoVhmoVhmoVhmoVxmoVxmoVhioVxmpVxmpVxmoVhmoVhipVxioVxioVxioVxipVxip + VxipVhepVxipVxipVxipVhepVxepVxeqWBiqVxeqVxemUA2zaC7s2Mn////////////////////////7 + 8+znwZnhs4His4HhsHzfrHfdqnHcp2vbpGfaomPZoF/YnVvYnFnXmlbWmFXWmFPWmFPVlk/VlU3WlU3W + lE3WlE3WlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzW + lUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Zl07ZmE/amlHbnVXdoFjfpl7hq2XjsW3nuHXbtHg9MyQ+NidK + RTf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////8+vi2hWKJOgKRRxGTSxSUTBSUTBSUTBSUTBSU + TBSUTBSUTBSUTBSUTBSSTRSbURWnVxanVhanVximVhenVhinVxioVhioVhioVxioWBmnVhimVRmmVRmm + VRimVRmmVRmnVRmnVRmnVRmoVhqnVhmnVhmnVhmnVhmoVxqpVxqoVxqnVhmnVhmoVhmoVhmoVhioVhmo + VhmoVhmnVRioVhinVhmnVhioVhioVhioVhioVhioVhioVhioVhioVxioVxioVxipVxipVxipVxipVxip + VxipVhepVxipVxepVxepVxeqVxeqVxemUAyvYCPs2Mj////////////////////////79e7nwprhsn/i + s4LgsHzfrXfeqnHcp2zbpWfaomPZoF/YnVzXm1jXmlbWmVXWmFTWl1HVlU7VlU3WlU3WlE3WlE3WlEzW + lEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzW + lUzWlUzWlUzWlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzX + lUzXlUzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + l03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Z + l03Zl03Zl03Zl07Zl07ZmE/amVHbnFXdoFjfpl7hq2XjsWzmuHXbtHg9MyM+NiZKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////69/TAl3iPRA+QRxCSShSTSxOUTBSUTBSUSxOUTBSUTBSUTBSU + TBSUTBSUTBSaUBWkVRanVhenVxenVxinVxinVxioVxinVRimVBimUximVBilVRimVRimVRimVRimVBim + VRmnVRmoVhmnVRmnVRmnVhinVhmoVxqoVxqnVhmnVhmnVRinVRioVhioVhmoVhioVhioVRioVRioVRin + VhinVhinVhinVhioVhioVhioVhioVhioVhioVhioVhioVxioVxipVxipVxipVhepVxipVhepVxipVxep + VxepVxepVxeqVxeqVxemUA6wYSXo0L7////////////////////////79e/px6HhsoDhtILgsH3frXfd + qnHcp2zbpGfaomPan2DYnVzYnFnXmlfWmVbWmFLWlk/VlU/VlU3WlU3WlE3WlE3WlEzWlEzWlEzWlEzW + lEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzY + lkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Y + l03Yl03Yl03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Zl07Z + l07ZmE/amVHbnFXdoFjfpV7hq2XjsWzmuHXbtHg9MyM+NiZKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////HoYaLPQWORA+RSRSTShSTSxSUSxOUTBSUTBSUTBSUTBSUTBSUTBSTTBSZ + UBWmVhaoVxamVhemVhemVhilVBikUxelUxemUximVBilVBimVRimVRimVRilVBemVBilVBinVRinVBin + VRmmVRinVRenVhioVhmnVhmnVhmnVhinVRenVRinVRioVhioVhinVReoVRioVRinVRenVhinVhmnVhin + VhioVhioVhioVhioVhioVReoVhioVxioVxioVxeoVhepVhepVhepVhepVhepVhepVhepVxepVxepVxeq + VxeqVxinUA6rWRnnz7v////////////////////////9+fTpx6Lhsn/htIHgsHzfrXfeqnHcpmzbpWfa + omPZoF/ZnVzXm1jXmlfWmFPWl1DWllDWlU/VlU3WlU3WlE3WlE3WlE3WlEzWlEzWlEzWlEzWlEzWlEzW + lEzWlEzWlEzWlEzWlEzWlEzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzWlUzXlUzXlUzX + lUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzXlUzYlkzYlkzYlkzY + lkzYlkzYlkzYlkzYlkzYlkzYlk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Yl03Yl03Yl03Yl03Yl03Yl03Y + l03Yl03Yl03Yl03Yl03Yl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl03Zl07Zl07Zl07ZmE/amVHbnFXd + oFjfpF7hqmXjsWzmuHXbtHg9MyM+NiZKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////+/fzSsp2WUB6OQw2RSRSRSRSSShSTShOTShSTSxSTSxSTSxSTSxSTSxSTSxSXThShUxWmVRal + VBakUxekUxelUxilUxelUxilUximVBimVBimVBimVBimVRimVRilVRemVRimVBemVBenVBinVRinVRin + VRinVhinVRimVhinVRemVRemVRinVhinVRinVRenVRenVRenVRenVRenVRenVhinVhinVhioVhioVhio + VhioVReoVhioVReoVhioVheoVheoVhepVhepVhepVhepVhepVhepVhepVhepVxeoVxaqVxeqVxinUQ6t + XiDlyrT////////////////////////8+PPqy6jhsoDhtILgsX3frXfdqnHcp23bpWjaomPZn1/YnVvY + m1nXmVXWl1LWllDWl0/VlU/VlU3VlU3WlU3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3W + lE3WlE3WlE3WlE3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3XlU3XlU3XlU3XlU3XlU3X + lU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk3Ylk3Ylk3Ylk3Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Y + l07Yl07Yl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE/amVHbnFXdoFjfpF7hqmXjsGzm + uHTbtHg9MyM+NiZKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////Y + vqyNQgyNQQqRSBORSRSRSBOSSBSSSRSSSRSSSRSSSRSSSRSSSRSRSBOVSxSjUhalUxalUxakUxelUxek + UxelUxelUxelUxelUxilUxemVBimVBilVRimVRimVRilVBelVBimVBinVBenVBinVBimVRemVRimVRem + VRemVRemVRemVRemVRenVRenVRenVRenVRenVRenVBanVRenVRenVhinVhioVReoVhioVhioVhioVReo + VReoVReoVheoVheoVhepVhepVhepVhepVhepVhepVhepVheoVhapVxepVxepVxemUQ+oUxHjyLL///// + ///////////////////9/Pnry6nhsX7htILgsHzfrnfeqnLcp2zbo2faoWLZn17YnVvXm1fXmFPWl1LW + l1HWllDWlU7VlU3VlU3WlU3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3WlE3W + lE3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3WlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3X + lU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3XlU3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Ylk3Y + lk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Ylk7Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Y + l07Zl07Zl07Zl07Zl07Zl07Zl07Zl07Zl07ZmE/amVHbnFXdoFnfpF7hqmXjsGzmt3TbtHg9MyM+NiZK + RDf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////fybqiYzeOQQqS + ShWSShWSShWSSRSTShWTShWTShWTShWTShWTShWTShWVTBWfURemVBelVBelVBilVBilVBimVBilVBim + VBimVBinVRmnVRmmVRinVRinVhmmVRimVRimVRimVRinVRinVRinVRinVhinVhinVhinVhinVhinVhin + VhinVhinVhioVhioVhioVhioVhioVhioVhioVhioVxmoVhipVxmpVxmpVxmpVxmpVhipVhipVhipVxip + VxipVxiqVxiqVxiqVxiqVxiqVxiqVheqVxiqVxiqVxipVxeqVxenUhCsXB3gwaf///////////////// + ///////9+vbszazhs4LhtIPgsX7frnjdqnLcp23bpGjaomPZoGDYnVvXm1fXmlXXmVPWmFHWmFHWllDV + lk/Vlk7Vlk7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7WlU7Wlk7Wlk7W + lk7Wlk7Wlk7Wlk7Wlk7Wlk7Wlk7Wlk7Wlk7Wlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7X + lk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Xlk7Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl07Yl0/Yl0/Y + l0/Yl0/Yl0/Yl0/Yl0/Yl0/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/YmE/ZmE/ZmE/Z + mE/ZmE/ZmE/ZmE/ZmE/amVDam1LcnVXdoVrfpV/hqmbksW3nuHbbtHk9MyM+NiZKRDf///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////o18uXUB2PRAyUTBeUTBeUTBeV + TRiVTRiVTBeVTBeVTRiVTRiVTRiUTBeWThmjVRmnVxqmVxqmVxqmVxumVxumVxumVxunVxunVxunVxun + VxunWBuoWRynWBunWBunWBunWBuoWBuoWBuoWBuoWBuoWRuoWRuoWRuoWRuoWRuoWRuoWRuoWRuoWRup + WRupWRupWRupWRupWBqpWBqpWRupWRupWhypWRuqWRuqWRuqWRuqWRuqWRuqWRuqWRuqWhuqWhuqWhur + WhurWhurWhurWhurWhurWhurWRqrWhqqWhqqWhupVRSoVBHfvqP////////////////////////+/fzt + z7Dhs4DitILhsn7grnjfqnLdqG/cpWrbpGbaoWHZnlzYnFnYmlfYmlXXmVTXmVPXmVLWmVHWmFHXmFDX + mFDXmFDXmFDXmFDXmFDXmFDXmFDXmFDXmFDXl1DXl1DXl1DXl1DXl1DXl1DXl1DXmFDXmFDXmFDXmFDX + mFDXmFDXmFDXmFDXmFDXmFDXmFDXmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDYmFDY + mFDYmFDYmFDYmFDYmFDYmFDZmVDZmVDZmVDZmVDZmVDZmVDZmVDZmVDZmVDZmVHZmVHZmVHZmVHZmVHZ + mVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHZmVHamVHamVHamVHamVHamVHa + mVHam1LbnFXcn1jeolzgp2HirGfksm/nunfbtXk9MyQ+NidKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////r3tOzfleSRxCXUBuXUhyXURyYURyYURyYURyY + URyYURyYUh2YUh2YURyYUh2iWB6qXB+pXB+pXB+pXB+pXCCpXCCqXCCqXCCqXCCqXCCqXCCrXSGqXSCq + XSCqXSCqXSCqXSCrXSCrXSCrXSCrXSCrXSCrXR+rXh+rXiCrXiCrXyGrXiCrXiCrXR+sXR+sXR+sXiCs + XiCsXR+sXR+sXR+sXiCsXyGsXiCtXiCtXiCtXiCtXiCtXiCtXiCtXiCtXyCsXh+sXh+tXh+uXyCtXyCu + XyCuXyCtXh+tXh+tXx+tXx+tXx+rWxmwYSHcuJr////////////////////////9+/ju1Lbjt4bjtoXi + tIHhsXzfrnbeq3HdqG3cpWfbo2PaoWDZoF3ZnlvZnVnYnVjYnFfYnFbYnFbYm1XYm1XYmlXZm1XZm1XZ + m1XYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTYmlTY + mlTYmlTYmlTYmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZmlTZ + mlTZmlTZmlTZmlTam1Tam1Tam1Tam1Tam1Tam1Tam1Tam1Tam1Xam1Xam1Xam1Xam1Xam1Xam1Xam1Xa + m1XanFXanFXanFXanFXanFXanFXanFXanFXanFXanFXanFXbnFXbnFXbnFXbnFXbnFXcnVXcn1jdoVvf + pV/hqWTjrmrltXLovHrduH09NCQ+NidKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////07eeobD2WThabVyCbVyGbVyGbVyGcVyGcVyGcVyGcVyGcWCKc + VyGcVyKcWCGnXSOtYSStYSStYSStYSStYSWtYSWtYSWtYCStYSWtYCWuYSWtYiWtYiWtYiWtYiWtYiWt + YiWtYiWuYiWuYiWuYiWuYSSuYiSuYyWuYyWuZCauYyWuYiSuYiSuYiSvYiSvYiSvYiSvYiSvYiSvYiSv + YiSvYiSvYyWvYyWwYyWwYyWwYyWwYyWwYyWwYyWwYyWwYyWvYySwYySvZCWvYySwYySwYySwYySwYySw + YySwZCSwZCSwZCWuYB+tWxfct5f////////////////////////////v1rjjt4XkuIjjtoTitH7gsHjf + rXTeqm/dqWrdp2fdpGTbo2HbomDboV3aoF3aoFzaoFvan1van1raoFrbn1rbn1nbn1nbnljbnljbnlja + nljanljanljanljanljanljanljanljanljanljanljan1jan1jan1jan1jan1jan1jan1jan1jan1ja + n1jan1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbn1jbnljb + n1jcn1jcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjc + oFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjcoFjdoFjdoFjdoFndoVreolzfpV/gqGPirGjksW7muHXp + vn7dun89NSU+NyhKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////17ujFnHqcVh2gXiehXyihXyihXyiiXyiiXyiiXyiiXyiiXyiiXymiXyihXyip + ZCqyaCuxaSuxaSuxaSuxaSyxaCuxaCuyaSyyaSyyaSyyaSyyaSyyaiyyaiyyaiyyaiyyaiyyaiyzaiyz + aSuzaSyzaiuzaiyzaiuzayyzayyzaiuzaiuzaiuzayyzaiu0aiu0aiu0aiu0aiu0aiu0aiu0ayy0ayy0 + ayy0ayy1ayy1ayy1ayy1ayy1ayy0aiy1ayy1ayy0ayu0ayu0ayu1ayu1ayu1ayu1ayu1ayu1ayu1ayu1 + ayu0aSi2bC3Zso/+/f3////////////////////+/frx28Hmvo7lvIzkuojkt4PitH7hsHfgr3TfrHDf + q27fqWreqWjdp2bdp2XdpmTdpWPdpWPcpWLcpGHcpGHco2Ddo2DdpGDdpGDdpGDdo1/do1/do1/dol7d + ol7do17do17col7col3col3col3col3co13co13co13co13co13co13co13co13co13co13co13co13d + o13do13do13do13do13do13do13do13do13do13do13do13do13do13do13do13do13do13dpF3epF3e + pF3epF3epF3epF3epF3epF3epF3epF7epF7epF7epF7epF7epF7epF7epF7epF7epV7epV7epV7epV7e + pV7epV7epV7epV7epF7epF7epF7fpF7fpF7fpV/gp2HhqWTirGjksG3mtnPou3rrwoLfvIM9NSY+OClK + RTf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////8+fe/kGejYCinZy+naTGnaTGnaTGnaTGoaTGoaTGoaTGoaTGoaTGoaTGnaTGvbDK3cTO3cjS3 + cjO3cTS3cTS3cTS3cjW3cTS3cjW3cjW3cTS3cjS3czW3czW3czW3cjS3cjS3czW4czW4cjS4cjS4cjS4 + czW4czW4czW4czS4czS4czS4czS4czS4czS5czS5czS5czS5czS5czS5czS5czS5czW5czW5czW6czW6 + czS6czS6czW6czS6czW5czW6czS5czS5czS6czS6czS6czS6czS6czS6czS6czS6dDS6dDS5cjG1aSTb + tpP////////////////////////////z38bmv47nwI/mvo3mu4jlt4HjtX3is3risnfhsHPhr3Hhr2/g + rW3frGzfq2vfq2rfqmneqmneqmjeqmjfqmffqmffqmffqmffqmffqmbfqmbfqWbfqWbfqWXfqWXfqGXf + qGXfqGXfqWXfqGXfqWXfqWXfqmXeqWXeqWXeqWXeqWXeqWXeqWXeqWXeqWXeqWXeqWXfqWXfqWXfqWXf + qWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWXfqWTfqWXfqWXfqWXgqmXgqmXgqmXgqmXg + qmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXgqmXg + qmXgqmXgqmXgqmXhqmXhq2birGfjrmrksW7mtnPnunjqwIDsxofhwIc+Nic/OCpKRTf///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////9+vjY + up+sbDOtcTmvczuvczuvczuvczuvczuvczuvczuvczuvczuvczuvczu0dTy9ez29ez29ez29ez29ez69 + ez69ez69fD+9ez69ez69ez69ez69fD69fD69fD69fD69fD69fD69fD6+fD6+fD6+fD6+fD6+fT6+fT6+ + fT6+fT6+fT6+fT6+fT6+fT6/fT6/fT6/fT6/fT6/fT6/fD2/fT6/fT6/fT6+fT++fT/AfT/AfT7AfT7A + fT6/fT7AfT6/fT6/fT6/fT7AfT7AfT7AfT7AfT7AfT7AfT7AfT7Afj7Afj6/fTu/fTvbtZD9+vj///// + ///////////////+/v30483qx5rpxJXow5PowI3mvYnmvITluoLkuH7ktnzjtnnjtXjjtHXjs3TisnPi + snPisnLisXHisXDisHDisHDisG/isG/isG/isG7isG7isG7isG7ir27isG7isG7ir27ir27ir27ir23i + r23ir23isG3isG3isG3isG3isG3isG3isG3isG3isG3isG3isG3isG3isG3jsG3jsG3jsG3jsG3jsG3j + sG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3jsG3j + sG3jsG3jsG7jsG7jsG7jsG7jsG7jsG7jsG7jsG7jsG7jsW7jsW7jsW3jsG3jsG3jsG3jsGzjsGzjsGzj + sGzjsW3ksm/ltXLmuHXou3rqwIDsxYbuyo3jxY0+Nyk/OStKRTf///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////Wtpa1ekC2fUO3 + f0a3f0a3f0a3f0a4f0a4f0a4f0a4f0a4f0a4f0a3f0a7gUfDhUjEhkjDhkjDhkjDhkjDh0nDh0nDhkjE + hkjEhkjEhkjEhkjEh0jEh0jEh0jEh0jEh0jEh0jEh0jFh0jFh0jFh0jFh0jFiEjFiEjFiEjFiEjFiEjF + iEjFiEjFiEjFiEjFiEjFiEjFiEjFh0jFh0jFh0jFiEjFiEjFiEjFiEnFiEnFiEjFiEjFiEjFiEjFiEjF + iEjFiEjFiEjFiEjGiEjGiEjGiEjGiEjGiEjGiEjGiUjGiUjFiEfBfjjduJD///////////////////// + ///////259LryJrrypzryJjqxZTpw5Dpwo3owInnv4bnvYTmvILmu4Dmu3/lun3luXzluXzluHvluHvl + uHrluHrluHnlt3jluHjlt3jlt3jltnjltnfltnfltnfltnbltnbltnbltnbltnbltnbltnbltnbltnbl + tnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbltnbl + tnbltnbltnbltnbltnbltnbltnbltnbltnbltnbmtnbmt3bmt3bmt3bmt3bmt3bmt3bmt3bmt3bmt3bm + t3fmt3bmt3bmt3bmt3bmt3fmt3bmt3bmuHbmuHbmuHbmuHbmuHbmuHXlt3Xlt3Tlt3TmuHbnunfovHvp + vn7rwoLsxofuyo3x0JPlyZI/OCo/OStKRTf///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////q2sfHmWTGlmHImmXImmXImmXI + mmXImmXImmXImmXImmXImmXImmXImmXKm2bQnmfRn2fRn2fRn2fRn2jRn2jRn2jRn2jRn2jRn2jRn2jR + n2jRn2jRn2jRn2jRn2jRn2jRn2jRn2jSn2jSn2jSn2jSn2jSoGjSoGjSoGjSoGjSoGjSoGjSoGjSoGjS + oGjSn2fSoGjSoGjSoGjSn2fSoGjSn2fSoGjSoGjSoWnSoGjSoGjSoGjSoGjSoGjSoGjSoGjSoWjSoWjS + oWjToWjToWjToWjToWjToWjToWjToWjToWjToWbSoGXkxqH9+vb//////////////////////v357d3x + 17Hx1Kzv06vv0abu0aTuz6Huzp7tzJzsy5vsypjsypfsyZXsyJXsyJTryJPryJPryJLqx5Lqx5Hqx5Hq + x5Hrx5Drx5Drx4/rxo/qxo7qxo7qxo7qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3q + xo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3qxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3r + xo3rxo3rxo3rxo3rxo3rxo3rxo3rxo3sxo3sx43sxo3sxo3sxo3sxo3sxo3sxo3sxo3sxo3sxo7sxo7s + xo7sxo3sxo3sxo3sxo3sxo3sx43sx43sx43sx43sx43sx43sx43sx43syI7tyZHuzJTwz5fx0pvy1qD1 + 2qb23aY/OSs/OStKRTf///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////38Ofr2MHq1r7q18Dq18Dq18Dq18Dq18Dq18Dq + 18Dq18Dq18Dq18Dq18Dr2MDt2cDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu + 2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu + 2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu2sDu + 2sDu2sDu2sDu2sDu2sDu28Du2sDt17v16Nf////////////////////////////9+PH57t357t357tz5 + 7tv57dn57Nn57Nj57Nf469b469X469X46tT46tP46tP46tP46tP46tL46tL36dL36dL36dL46dH46dH4 + 6dH46dH46dH46dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dH36dD3 + 6dH36dH36dH36dH36dH36dD36dD46dD46dD46dD46dD46dD46dD46dD46dD46dD46dD46dD46dH46dH4 + 6dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH46dH4 + 6dH46dH46dH46dD46dD46dD46dD46dD46dD46dD46tH56tL569P57NT67tb78Nj78dr889vn0p4/OStK + RTf///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////79u/u3MLs2Lzt2b7t2b7t2r7t2r7t2r7t2r7t2r7t2r7t2r7t + 2r7t2r7t2r7v277w3L7w3L7w3L7w3L7w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L7w3L/w3L/w + 3L/w3L/w3L/w3L/w3L/w3L7w3L/w3L7w3L/w3L/w3L7w3L7w3L/w3L/w3L/w3L7w3L7w3L7w3L7w3L7w + 3L7w3L7w3L7w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3L/w3b/w3b/w3b/w3b/w3b/w3b/w3b/w3b/w + 3b/w3b/w3b/w3b7w3L726dT+/Pn////////////////////////9+fL68d/679z679z67tv57tn57tj5 + 7df57db57dX57NX57NT57NT57NP569L569L569L569L569L569L56tH56tH56tD56tD56tD56tD56tD5 + 6tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD5 + 6tD56tD46tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD5 + 6tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56tD56s/5 + 6s/56s/56s/56s/56s/56s/569D57NH67dL67tP779X88df88dj88dj77c3UwJBHQjT///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////9+fX158/z48f05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn05Mn1 + 5cr25cr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr2 + 5sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr2 + 5sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr25sr2 + 5sr15Mb579v////////////////////////////++/X89eP89eT89OL79OH78+D78+D78t778t778t37 + 8dz78dz78dv78dv78dr78dr78dr78dr78dr68dn68dn68Nn68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj6 + 8Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj68Nj6 + 8Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj7 + 8Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nj78Nf78Nf78Nf78Nf78Nf7 + 8Nf78Nf78Nj78dj88tn88tr88tr88tr88tr88tr88tr77s7Uw5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAGAAAAAAAgBwAAAAAAAAAAAAAAAAAAAAAAABfWU5SSz9SSz9S + Sz9SSz9SSz9SSz5SSj1SSj1SSj1SSj1SSj1SSj1SSj1SSj1SSz9STURTUlBTU1NTUlJMRDlIPS1IPi9I + Pi9LQDBOQjFOQjFOQjFOQjFOQjFOQjFOQjFOQjFOQjFOQjFOQzFOQzJORDNORDNORDNORDNORDNPRDNS + TklTU1NTU1NTU1NeXl7p06l5bVZHQDNHPzFHPjBHPS9HPS5GPC1GPC1GPC1GPC1GPC1GPC1GPC1HPC1H + PC1HPS9HQjlISEdISEhGREI6LyA4Kxo4LBw4LBw+MB1BMR5AMR5AMR5AMR5AMR5AMR5AMR5AMR5AMR5A + Mh5BMiBBMyBBMyBBMyBBMyFBNCFCMyBDOClIR0ZISEhISEhQUFD86MH96ML12ajmyJflxJHlwozlv4jk + vYbkvIXkvIXkvIXkvIXkvIXkvIXkvIXlvIXlvojlw5Tp2cPr6+vr6+vaz8GqfEipe0apfEmtgErIkU7N + k0/Lk0/Lk0/Lk0/Lk0/Lk0/Lk0/Lk0/MlVHNl1bNmFjNmFjNmFjOmlrOm1rPnlvRn1rhza/q6upISEhT + U1P858D85b/52qf40pr3zZP2yY32yIn1xob1xYX1xYX1xYX1xYX1xYX1xYX1xYX1xYT1xYb2yIv306H9 + 8uP////////YvqKncTWqdz6pdz64gEHWk0fXk0bWk0bWk0bWk0bWk0bWk0bWk0bXlEjYl0rYmE/YmVDY + mVDYmlDZnFDbnlTeoljls3Lw6uJISEhTU1P857/64rn41Z/2zZL1yIr0w4P0wH/zvnzzvXrzvXrzvXrz + vXrzvXrzvXrzvXrzvXrzvXrzvnz0w4X30qX+9/D//////v6/mnKaYCSgajGeaTG4eTTTiTnRiDnRiDnR + iDnRiDnRiDnRiDnRiDnSijvSizzSjD3SjD3SjT7Uj0HWk0fam1DdoFPjwplISEhTU1P75r3637X20Zr0 + yIvzw4Pyvnzxu3fwuXTwt3Lwt3Lxt3Lxt3Lxt3Lxt3Lxt3Hxt3Hxt3Hxt3HxuXXzwIH32LH//fr////2 + 8OumdkSSWByWXyaWXya9dSzPgS/Mfy7Mfy7Mfy7Mfy7Mfy7Mfy7Mfy7MgS/MgS/MgS/OgjLQhjbTiz3W + k0fbnFLWoVxGQz5TU1P65Lr53bH1zZXzxIXxvXvwuXXvtm/us2vusmrusmnusmnusmnusmnvsmnvsmrv + s2rvs2rvs2rus2rvtW/xvoH438H////////m2cqRWSCNUheOVRyVWh7BcyXKeCbJeCbJeCbJeCbKeSfK + eifJeCbJeCbJeCbJeSbKeynMfy7QhjbUjkDZmE3UmVFDOClTUlL64rf43K/0ypDxwIHvunfutXDssWrt + r2fsrWXsrWXsrmXsrmXsrmXsrmXsrmXsrmXsrmbsrmbsrmXsrmbtsm3wv4b66tj////////NtJqGSg2K + UBWITxebWxrGcyHHcyHGcyHHdCDSgCrOfCfGcyDHdCHHdCHHdCHIdyTKeynOgTHSijvXlUnTmVRAMRxR + TEb54bb22a3zyI3vvX3tt3Tssmzrr2fqrGPqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hqq2Hrq2Hrq2Lrq2Lrq2Hr + q2HrrGPssW3xxJD88+n///////+1kGyBQgeJTxaGTRWjXhnIcx/Gch/Gch7JdyLHcx/Gch7Gch7Gch7G + ch7HdCHJeSbMfy7RiDnWk0bSmFJAMR1ORDT54Lb22azyx4zuvHzstnLrsWvprWXoqmLpqWDpqWDpqWDp + qWDpqWDpqmDpqmDpqmDqqmDqqmDqqmDqqmDqqmDqrGLss3DyzqT++/j////28e2ebkCDRg2ITxeHThaw + Zh3KeizJfTLGciDGch7Gch7Gch7Gch7Gch7HdCHJeCbMfy7RiDnWk0bSmFJAMR5OQjD44LT22avxxoru + u3rstXDqr2nnq2PmqWDnp17nqF7nqF7op17op17op17op17oqF7oqF7oqF7oqF7oqF/oqF/oqF/prWTs + tnb12bn////////p3tKNVR+CSBGFTBeVVRfFfzvMiEjGch/FcR7Gch7Gch7Gch7Gch7HdCHJeCbMfy7R + iDnWk0bSmFJAMR5OQjH43rT216rwxYrsunnqsnDorWjmqGLmpl7lplzmplzmpVzmplvmplvmplvmplvm + plvmp1vmp1vmp1vnp1vnp1znp17nqF/orWbruX745tH////////Su6aWUxKuYxu/biDEcyLFcyLFciHF + cR7FcR7Gch7Gch7Gch7HdCHJeCbMfy7RiDnWk0bSmFJAMR5OQjH33rT11qrvxIjruHjosW7nrGblp2Dl + pFzkpFrkpFrkpFrkpFrkpFrkpVrkpVrlpVrlpFrlpFrlpVrlpVrmplzmpl3mplzlp17orGjtv4r78eT/ + ///////dq3zCaBPEcSDDcCDEcR/EcSDFcSDFcR7FcR7Gch7Gch7HdCHJeCbMfy7RiDnWk0bSmFJAMR5O + QjH33bP01anuwobqtnXnr2vkq2Pkpl3jpFnioVfioVfiolfioljjoljjolnjo1nko1nko1nko1nko1nk + pFnkpVvkpVrkpVrkpFvlpl7nrWrvyZ39+vX////8+PPPjU7AaRXDcCDDcCDEcSDEcSDFcR7FcR3FcR7F + cR7HdCHJeCbMfy7RiDnWk0bSmFJAMR5OQjH33LLz1aftwYXptXTmrmrkqGLipFzholjhoFbhoFbhoFbh + oVbhoVbioVfioVfiolfiolfiolfjolfjo1jjo1nio1njo1jjo1jjo1rkpmHnsHPy1rX+/fz////26d3G + eC7AaxrDcCDDcCDEcSDEcSDEcB3FcR7FcR7GcyHJeCbMfy7RiDnWk0bSmFJAMR5OQjH33LDz1KbswIXn + tXPlrWnjp2HholvgoVffn1Xgn1Xgn1Xgn1Xgn1Xgn1Tgn1Tgn1XhoFXhoFXhoVbhoVfhoVfhoVfholfi + o1njpV3kqGXnsXTux5v68eb////////t1b7DcSLBbh7DcCDDcCDEcCDEcB7EcB3FcR7GcyHIdybMfy7R + iDnWk0bSmFJAMR5OQjH226/y06Xrv4Tns3Ljq2jipV/goVnfnlXenVPenVPenVPenVPfnVPenVPenVPf + nlPfnlPfnlPfn1XfoFbgoFfgolnhpF7jqGblsXXrwJDz2Lr88+j////////26d7jvpvGeC7BbRzCbyDD + cCDDcCDEcB/EcB3EcB3GcyHIdybMfi7QhznWk0bSmFJAMR5OQjH22q/y0qTqvoLmsXDiqmbgpF7eoFfd + nVPdm1Hcm1HcnFHdnFHdnFHenFHdnFHdnFHdnVHenVLfnlXfolrhpWDjq2vnuIHuzqj46Nf///7////8 + +vjpz7PSmWLCdCq9aBfAbR7Bbh/Cbx/CbyDDcCDDbx/Dbx3EcB3FciDHdiXMfi7QhznVkkbTmFJBMR5O + QjH22q7x0qTqvIHksW/iqWTeo13cn1bcnFLbmlDcmlDcmlDbm1DcmlDcmlDcm1Ddm1HdnVTeoVrgpmPk + sXbrxJfz3cP99u7////////w3s7brYPIg0K9bB68Zha+ax/AbiLAbiHBbh/Bbh/Cbx/CbyDCbx/Dbx3D + bx3EciDHdiXMfS3SiDnYk0bPl1I+Lx1KPzD22q3x0aPpvIDkr27gqGPeolzbnVXam1HamU/amU/amE/a + mE7amU/bm1Lcnlbeol3hqWnmuITv0a357N7////////48OnjwaPMjVS8aiC5YxS8aBu+ayC/bSG/bSG/ + biK/bSHAbR/Bbh/Bbh/Cbx/Cbh7Cbh3Dbx3GciDKdyXKfS3Ffza+g0KzhEw4KxxIPi/12a3w0aLou3/j + rm3fpmLcoFrbnFPamU/Zl07Zl07ZmE/amlPcnlnepGLisHfqxZv14sz++/j////+/v7r077Sm2u/cSy4 + YRS4Yxa7aB68aiC9ayG+ayG+bCG/bSG/bSG/bB+/bB/AbR/Abh/Bbh/Cbh3FbxzEbx28bB+sZiGfZCef + aTCodj2ugUo4LBxIPi/12a3v0KLnu3/irmzfpWHcn1nZmlLZmE/ZmFDanFbcoF7fqm3mvIzw1rj68OX/ + ///////z5djbsYzEgES3Yxi1XQ+4ZBi6Zhy7aB67aSC8aiC8aiC9ayG9ayG+ayG+bB+/ax6/bB/AbR/C + bx/Dbx+8axysYhmaVxeMUheLUxyUXSWeaTCqdz6ugUo4KxxIPi/12a3w0KLnun/irmzepWHcoFvanVjb + n1vdpGXjs33ryqX25tT////////69vLlyK/LkFu3Zh2yWgu0XxK3ZBq4ZRy4ZRy5Zhy6Zx27aB67aB+8 + aR+8ah+9ah+9ah6+ax7AbB7Cbh6+bB6yZR2fWRmMTxWESxSEShSITxeOVRyVXiWeaTCqdz6ugUo4KxtI + PS712q/w0KLnun/ir2/fqmvfqWvhr3bnwJTy3MT99/H////////u28vToHW8cTCyWxCxWg61YBW2Yxi3 + Yxm3ZBu4ZRy4ZRy4ZRy5Zhy6Zx26Zx27aB27aB29ah2/ax2/ax61Zh2iWxqQUheFSxWCSROEShSGSxSH + TBSJTxeOVByVXiWdaC+nczmqekI4KxtKQjf127Lw0qbovobmuILowZTv1Lb47d7////////17OTct5fD + gkuyXxeuVguyXBK0YBe1YRm1YRm2Yhm3Yhm3Yxm3ZRy4Zhy5Zxy4ZRy5Zhy6Zx29aB29aR22ZRymXRqV + VBiGSxaBSBaDSRWFShOFSxOFSxSFSxSGSxSIThaMURmPVRqaYyi0hlXLsJFEQT1TU1P23rny2bTx1rL2 + 5tT//fv////9+/rn0LvMlWi0ZCOtVAuuVg2xXBWyXxiyYBmzYRm0YRm0Yhm1Yhm1Yhq2Yxm4ZRm4Zhu5 + aBy6Zhy7Zhy4ZRysXxuZVRiISxaBRxWASBWCShWDShSESROFSROFShOFSxOEShGARAuCRQuSWya0jGTc + ybX5+Pfz8/NIR0VTUEv78eL9+fL////////059zYr4u9dz6uWhSrUwquWRSwXRixXhmxXhmyXxmyXxmz + YBqzYRq0YRq1Yhm1Yhq2Yxq4ZRm7Zxm6ZhqwYRucVhiKTBaARxR+RhSBRxWCSBWDSBSDSRODSRKESRKD + SBKBRQ1+PwWESRGdbkDKsJfv6eP////////97dnu0q5GPC9SSj7////9+vbs1L7TonW8dTexXxuvXRmv + XRquWxmuXBmvXhqwXhuwXx2xXx2yYB2zYh6zYR20YRy1Yhu3Yxu3ZRyyYxyjWheRUBSCRhJ9RBJ+RRJ/ + RhKARxKBRxOCSBKCRxKCRxGBRQ59PwZ/QgqTXzC5l3nh08b9/v//////8uT53Lz1ypr0wonpu4JGOipR + STvy27/huo/KjVC+dze5bzC1aCixYSCvXRuuWxmuXBuuXRuvXh2wXx6xYCCyYSG0ZCO1YyG2ZCCzYh6n + WxuVUhqETBp+RRN9RBN/RRKARRKARRKARRGARhGARhF/RQ98QAh8PgaJUB2pgFrUwK349/f/////+vL6 + 4Mbzx5jwuH7wtXTwtnPxunjouHxFOilRSDrnvYvdsYLMkVfBfUG5cDO1aCmxYSCuXRusWxmtXBuuXR6v + Xh6wYCCxYSKyYySzZCarXyOaViCJTR1/SBp8Rhd+RRWARRSARRSARhN/RRKARRJ/RBB8QAp5OwN/RRCb + bULIrpfv6eT////////759H0zaTwuYHtrmzsqmTsqmLtrWTvsWrxuHTot3tFOShRSDrnwZLes4XMkVjB + fUC5cDK0ZymvYCCtXBysWxqtXBuuXR6vXyGwYCOxYiOyZCWYWCaASiF+SB9/SR+ASR2ASRx/SBl/RRV/ + RRSARBJ+Qg95OwZ7PgqRXTC4l3ng1Mj+///////97+D21rTwvovtsHDrqWTrpl7qo1nppFjrpVvsq2Hu + sGnwuHPnt3lFOShRSDnnwZLes4XLkFjAfUC5cDK0ZyivYCCsXB2rWhutXB2uXh+vYCKwYSSxYyezZSms + YyyJUSeATCOCTiOBSyCBSh6ASRx+RhZ6Pgt5PAiGTh6of1zUwLD5+Pj/////+fH43sPwxJTssnbqqmXp + pl7oo1nooVbooVXooVToo1fqpVvsqmHtr2nvuHPnt3lFOShRSDnnwZLdsoXLkFfAfEC4bzOyZyivYCCt + XB2rWhysWx+tXiGuYCOwYieyZCq2aC68cDW2bTSTWyyDUSaCTSN9RRp5PhCASBqcb0rIsJvw6+b///// + //765c/xy6Hstn7pq2nopl/nolnmoFbmoFTmn1Pmn1TnoFTnoFTnolbopFrqqWDsr2nut3PltnlFOShR + SDnnwJLdsoXLkFfAez+4bzOyZiiuXyGsXB2rWh2sXCCtXiKuYCawYiq2aTC/d0DGhlLKiVW/fEWWWimA + SiCTZEK5m4Pi187////////97t701LLtvInprm7mpmHmolvln1bkn1TknlPlnlPlnlPlnlPln1Pln1Pm + n1TmoVbnpFrpqWDrr2nttXPltnlFOShRRznjvZDcsYXKkFe/ez+4bzKxZSitXiGsWh2rWh2sXCCtXiOu + YCiyZSy8cz3Jj17WrobZt5DUonbSpYHayLv6+fn/////+PH23sTtw5XpsXbmp2Xlo13koFfjnVTjnVLj + nVLjnVLjnVLknVLknlLknVLknlLknlLknlPloFXlo1nnqF/qrmjstXLktXhFOChRRznhuYvYroPJjlfA + e0C3bzKwZSetXiCrWh2pWR2rXCCsXSKuYCezZi6/ekbSpHnt4c/38+r7+PT///////7559Pwy6fot4Pl + q27jpWPjoVvinVXinVPinFLhnFLhnFHinFHinFHinVHinVHinVHinVHjnVHjnVHinVHkoFTloVjmp1/o + rWfrtXHktHdEOChRRzns1LfUqX3BiFS8eUC4bjKwZSesXSCqWR2pWB2qWyCrXSKtXyayZCy+d0PPnnPv + 49P//////Pf348zuxZvmsHrjqGrho2HgoFvgnVfgnVbgm1Phm1Hhm1Hgm1Hgm1HgnFHgnFHhm1HhnFHg + nFHhnFHhnFHhnFHhnFHin1PkoVflpl/nrGfqtXHitHdEOChQRzn////n0Li8hE6xcTuzbDKwZCesXSCp + WRyoVxupWR+qWyKsXiavYim4bjjEhVPPnnHp0r3//fvy1bXmsXzhpWnfoF7enlnenVfenFbfnFXfm1Tf + mlHfmlHfmlDfmlDfm1Hfm1Hfm1Hfm1Hfm1Hfm1HfnFHfnFHgnFHhnVPioVfkpV3nrGbps3DitHdEOCdQ + Rzn////////gxq2tbTemYiyrYCisXB+pWBynVxuoWB2rXCGtXySuYSiyZiy4bzi+eEO+eUPctpr+/Pjs + x6HhqG3foWDdnVjdnFfdnFbdm1Xem1TdmlHdmU/dmU/dmU/dmVDdmlDdmlDdmlDemlDemlDem1Dem1Df + m1DgnVLhoFbjpF3lqmXos2/hs3ZEOCdQRzn////////////fxrGmZC+cVh+kWB+pWBunVhqpWhyrXB+s + XiKtYCWuYiixZSqzZi2zZy6vXyTTqYv++vfsyaLfpmndn1zbm1bbmVTcmlTcmVPcmVHcmE7bmE7bmE7c + mU7cmE/cmU/cmU/dmk/dmk/dmU/dmk/dmk/enFHgn1bio1zkqmTnsm/gsnVEOCdQRzn///////////// + ///izLqjYS2WThehVh2pWRyrXR6rXh+tXyKtYSSvYievZCmwZCqwZi6vYSirWRzRpYX9+vfryqXfpmnc + n13bm1bbmlXbm1Tbm1PbmVDbmVDbmVDbmVDcmlDcmlDcmlHcm1Hcm1Ddm1Ddm1Ddm1DdnFLfoFbhpV3k + q2Xns2/gs3ZDOChQRzn////////////////////o18mlZTSVTRWiWCCuYCKuYSOuYSWvYyewZCixZSmx + ZSuxZy+xZSyxYiesWxzPn3v+/PrtzanfqGvcoV/bnVnbnFfbnFbanFTbm1Pbm1Pbm1PcnFPcnFPcnFPc + nFTcnVTcnVTdnVTdnVXenlbfo1vhp2HkrWnotXPgtXlEOShQRzn////////////////////////t4NWs + cUOaUxqnYSeyZyqyaSuzaiy0ay21ay61ay+1azK1ajG1ai+0aSywYSHPn3j8+vfv0rDgrXDepGTcoV/c + oF3cn1vcoFrcoFrcoFrdoFrdoFrdoFreoVreoVrdoVvdolveolvfo13hpmHjq2flsW7ouHjhuH5EOSlQ + SDr////////////////////////////z6eK3glaiXiSuazK4cTS4cza5dDa5dDe5cze5czm6czm5cze5 + cze6cTS2aSjRoXj9+fbw17fjsnffqmvfpmbfpWLfpWHfpWHfpWHfpWHfpWHfpWHfpmHgpmHgpmLgpmLg + p2LhqWTirGjlsG3ntXXqvX7jvINEOipQSDv////////////////////////////////38u3FmG+sbDK1 + eD6/fULBf0LBfkLAfULBfUTBfkPBfULBfUPBfkLBfkG+dzbUpHr9+vjz3L/luIHisXXirm/irWzirWzi + rWzirmzirmzirmzirmzirmzjrmzjrmzjrm3ksG/ls3Lnt3fqvH7sw4flwYpFPCxQSDr///////////// + ///////////////////////7+fbWspC+h1TEj1vLlF/NlGDMlGDNlWDOlV/OlWDOlV/OlV/OlmDOll/M + j1Xcs4r8+fb25M3rxpXpv4nnvYTovYTovYTovYTovYTovYTpvYTpvYTpvYTpvYTpvoTqvoXrwIjtxY3u + ypLxz5rz051FPS5QSDr//////////////////////////////////////////v7y5djp07zq1b/t18Du + 18Du18Du2MDu2MDu2MDu2MDu2MDu2MDu2MDt1bzy4tD+/Pv89ez46tb36NL359D358/35s/35s/35s/3 + 5s/35s/35s/35s/358/459D46NH56tP57NX77tf779ny1KBNRTf///////////////////////////// + ///////////////////37eLw3cfx3sjz38nz4Mnz4Mnz4Mnz4Mnz4Mnz4Mnz4Mnz4Mnz4Mnz3sb359b+ + /Pr99+7679367tr57dj57df57Nf57Nf57Nf57df57df57df57Nf67df67dj779n779r779r779n56s7f + x58AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABABgAAAAAAIAMAAAAAAAAAAAAAAAA + AAAAAAAAzr6dd21Zc2lXc2lXc2dVcmdUcmdTcmdTcmdTcmdUc2dXdG9odHR0bWdeY1M8Y1Q+aFdAbFtB + bFpAbFpAbFpAbFpAbFpAbFtBbFtDbFxEbV1FbV5Fb2JNdHJxdHR0e3t7/ejF+N6x89ep8tKg8c+a8cyW + 8cuU8cuU8cuU8cuU8cuU8tOm9vDn9/f30rWUtohPvI9Z059e26Vg2qRf2qRf2qRf2qRf2qZi26hn3Klo + 3ats365u4K9s7dm48vLyoqKi/OnH+96u+dWg99CX9suQ9siL9ceI9ceI9ceI9ceI9caH9ceJ+dmu//36 + +vf0vZRmqXU7tYFG1ZRL2ZdL2JZL2JZL2JZL2JhM2ZpP2ZxU255X3aNa4Kdf57Z2+fLop6en/OnG+Nij + 9s+V9ciK88KC8r588r168rx68rx68rx68rx68rx6879/+dy7////7ePYpHE6mmUssHU00og60og50Yg5 + 0Yg50Yc50Yk60Ys80o0/1pNG2pxS36NZ7Myfp6en+ubB9tKc88eL8sCA8Lp377Zx7rVu77Ru77Ru8LRu + 8LRu8LRu77Ru8bt8+uXM////18OtkFYbkFkgsm4ozn4sy30szH4tz4Ivy30szH0szYEw0Yg51pJG3J9V + 4KxnpZ2S+eS+9M6W8cKE77p37rRv7K9o7K1m661l7K1l7K5l7a5l7a1m7a5l7K5l8LyA/O/i////vZx6 + hUgMjVMauG0hynYjynglzHwnyHYjyHYjynknzYEw0os92ZlP3aVfnodn+eG78suS779/7LZy6q9p6axj + 6alf6alf6alf6Klf6alf6apf6qlf6alf6qth8MOP/vr0+vn3pHZKfkMKjlEXwXUsynwxxXEdxnIexnIf + yHYjzH0s0Yg62JdM3aZhm4BY+OG68cmQ7bx967Nw561m56hf5qZc5qZc5qdc56Zc5qdc56dc56dc6Kdc + 56de6Kxk8s+n////7eTbmmApoVkTv3IoyHgsxXEexXEexnIeyHYjy30s0Yg52JZL3aZgm4FZ9+C58MeO + 67t66LFt5qpj5aRc5KNZ5KRa5KRa5aRa5aVa5KVa5aVa5aZb5qZc5aZc6K1p9d3A////69C2xG4bxG4d + xHAfxXEgxXEexnIeyHYjy30s0Yg52JZL3aZgm4FZ99+47saN6rh55q9s5Khh4qNa4qFW4aFX4qFX46JX + 46JX46JX46JY4qNZ46NZ46NY46JZ57J0+OrZ////37OKwGoXw3AgxHEgxHEfxXAex3Ujy30s0Yg52JZL + 3aZgm4FZ99637cWL6LZ25Kxp4aZe4KFX359U4J5U359U4J9U4KBU4J9U4aBW4aBW4aBV4aJX46Zh6LZ9 + 9uDH/////vv5zoxMwGoYw3AgxHAfxHAdx3Ujynws0Yg52JZL3aZgm4FZ9t227MOJ57V046tm4KNc3p9V + 3ZxR3Z1R3ZxR3ZxR3ZxR3p1R3p5U4KFZ46tq68GR9uLJ/vjx+PDn5cSj0JNZw3QpwW0dwm8gwnAgxHAd + xnQiynss0Ic52JZL3qdgm4FZ9ty168GH5bNz4all3aJb3JxU25lP25lP25pP3JpO3JtR36Jc5bV98NSy + +/Ll/Pj07tnH16V4xHs1vGcYvGcYv20gwW4fwm8fwm8fw24dxnMizHwr0oc51JNL0Z5ek3pY9dy06sCG + 5LFx36dj3Z9Y2ppR2ZdN2phO25xU4Kpr68SY9+bT/fn09Oje3reVx4NGu2cduWIUvGgcvmsgv20hv20g + wG0fwW4fw28exXAdw3Eiu3IpsnU0sn9EvJBajndX9du06b+F47Bv36Vh25xW2ppT3KFf5LeD8ti8/PXs + +vTu58uzzZRhu2sktV0QuGEVumYcu2kgvGsgvWsgvmwgwGwewm4fwW0ft2gcpV0YlVcakVsim2cwrHtD + vZBajnZV9du16b+F47Bw4Ktr4rJ67cul+u3d/fj0797Q1qeAvnQ0s1wRs1sNtmIXt2UcuWUcuWYcu2gd + vGkevmoev2seuWgdqV8blVUYh0wVg0kUiVAZkVohnGYtqHQ6uoxVkXxg9d2368WS7c2j9uXP/fny9u3n + 3rygw4NNs18Yr1cLs10StWEYtmMZt2MZuGUbuWYdumYcvGgduWYdq18bmVYYiU0WgkkVgkkThEoThEkS + hUkQjFEXom85xqR/5dfFpqOg+u/e/Pbr/Pj07NjH0J91tmoqrFUMrlYPsV0Wsl8Zs2EatGEatWIat2Qa + umcZuWYbrmAbnFYYik0WgUcVf0cUgkkUgkgRgEQNfj8FhEoSoXVJy7Oc8Ojf/vbt+ujQppeD+/bv6c6y + zpdjum8usF8asFwarlwZr14bsV8dsmAetGIftmMdtmMcsGEbolsZj08UgUYSfUQSfkUSgEYSf0QOfD4G + f0EKkV4uuZl74dTH+/Ts/+3Z+dWs9ceP8cWKpJBx6Meez5RXwn4/unEztGYmsF8erlwbr14esGAgsmIi + sWIkpVwhlFIdhEkZfUUVfUQTf0QSfkMQez4HeTwEhk8cqYNg1MGx9u7n//Hh+tey8byC7rBt8LFt8bp4 + 8MOIpI9v58SZ0ZhgxIJFuXEzs2Unrl4frVwdr14hsWEjs2QmlVYlfEkgfkkff0kdf0YXfEEOeDoFf0UT + mm1Fxa2X7eTc/fPo/OHE8cGN7K1p6aNZ6qNY66he7bBq8Lp38MOIpI5v58Sa0Zhgw4FGuXEzsmUmrl0g + rFwfrl8isGIntWcts2kxk1kqgE0hekIVfEMVj101t5h+4tXJ+/Pr/unT88md67Bx56Na56BU5p9T559T + 6KJX6qde7LBp7rl378KHo45u58Sa0Zhfwn9EuHEzsWQnrl4hrFwgrmAlsmUsvnlCzJFfxYZRn2k+qYdt + 1cS39u/p/vDg9tSw7LZ95qRf5J5U5J5S5J1S5J5S5J5T5Z9T5qJX6Kde669p7rh27sKHo45t4r+XzpZe + woBFuG8zsGMnrV0hq1whrV8mtWkxzJdo69vF79/O9+zk/fTq+eHG7b+O5qlq459X4pxS4ZxR4pxR45xS + 4p1S451S451S4p1S46FW5qZd6a1n7Ld27cGGoo5t7djAxIxXvXxCuG8zr2Imq1whqlsgrF0ltGcvyZFi + 7+HS////9dq957N94aNi355Y35xW35tT4JtQ4JtR35tR4JxR4ZxR4ZxR4ZxR4ZxR4p9V5KVc56xm6rZ1 + 7MCFoo1s////4MSosXM8sGkvsGMnq1wgqVsgrF4jsGMpuXE6w4RR4cCo9+PO46xz3p1Z3JxW3ZtW3ppU + 3ppQ3plP3plP3ZpQ3ppQ3ppQ35pQ35tQ4J5U46Nb5qtm6bZ06r+Eoo1s////////3sOsqGYxqF4krV8j + rGAir2Ilr2QosmYssmctsmQr17GW9eTO4q1y3J1Y3JxX3JxX3ZxU3JtS3ZtS3ZxT3JxT3ZxT3ZxT3p1T + 359W4aVd5Kxo6bZ26sGGoY5t////////////4cu3pmYyp10jsWcqsmkrs2outGswtWwzs2owsWMn17CR + 9uXS47F33aBd3Z9c3Z9b3Z9Z3Z5Z3Z9Y3Z9Z3qBZ3qBZ36FZ4KRc4qlj5rFu6rt768OKoo9w//////// + ////////59XFrXE+rGcruHI3unU4unY5u3U6unU8uXI3uG0v2bCQ9+fW5reC36dl36Zl36Zi36Zi36Zi + 36Zi4KZj4Kdj4Khk4atm5LBt57d268CD7MmRopFz////////////////////7uDUvIZWt3Y7w4JHxINI + w4JJw4JJw4JIw4JGwXw+3LWT+Ova6MCO4rFz47Bv47Bw47Bw47Bw47Bw47Fw5LFx5bR057h667+D7seO + 78+aoZBx////////////////////////9e3kz6R4x5BZ0Jli0Zli0Zli0Zpi0Ztj0Zpi0JVa48Ge+e/h + 7s2g6sCI6sCH6sCH6sCH68CH68CH68CH7MOK7seP8MyW89Of9dilp5Rz//////////////////////// + /////Pn27tnD6tGz7tS27tS37tS37tS37tS37tS27tOy9OXR/fjw+erT9+bL9+bJ9+XI9+XI9+bI9+bI + +OfJ+ejL+erO+erO+enN+N+2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABABgAAAAAAEADAAAAAAAAAAAAAAAA + AAAAAAAAxridXlZHWE9BWE9AWE8/WVNIWFdUS0I1TkEwU0UyU0UyU0UyU0Y0U0UzV1BGYmJi+uXD8caN + 6bd56bd56bd36bV089u72s/BmmkyvHs2y4Y7yYQ7yYc+yoc9zZVUjoqD+N+577t77K1l7K5k7K5k7K1i + 7a9m/+zVxKyVjUwLwG8eyXYixnQfx3QhzIQ1jHhe992367V15qhf56de6Khe6Khe6KZZ7LRy/PLlrohj + qV0UyXclxnIexnMfzIY7iG9N9dq157Jx4qNY4qFX46JY5KNY5KNY459Q7b2G+fDmzYxNwmwaxXEexnMf + zYY8iXBO89iy461t3p5U3p1S3ptQ3ptN4KFX6Ld78M+n9eTT1qBuwGoYw3AexnIez4c8iXBO8tev4Kln + 2ZZK2ZdL4Kdk68KT79O15MKi0ZppwHMsvmobw3AgxG8fvm0dt3o4fWdK8NSs4Kxt5LV/7M2q6Mqt1aZ9 + wXo8t2IXuWIUvmkcvGoermIcmlYViEkMlGEsemlS9+fS7te927WVxIZTtGMesVkNt2AUuGUarmAbnFYX + iEkQez8HgkwYoHVNzbKXkol969a8wYJOqlUQq1YSsV8drF4fnlYai0sSejwHeUAOkGE2uJZ43sKm886o + 88SPlH9k3riQuHI2rFoarV4gs2QomFcjekMYhFMrqYNj0bWa7c2r9MKO7qxm6aBS56xmkn1g3LiSuHI3 + qlkbq1sgvntH27eVzbCY5Mmv8ceb7LFx5Z5S45pN5J1Q5J9T5atpkX1g6tfErWkwp1QWqlofunRA5sy2 + 99m44qJd3phO3phN35lQ35tQ35tQ4J1R4almkHxg////17ujnE8UqVcZrmAjr2Eo0aJ757mJ2phQ2pdP + 25lP25lP25pQ3ZpR4Khmjntf////////3si1snQ/uHU8undAuXU+2K+L6sab36lp36pp4Kpq4Ktr4axs + 5rh9loVp////////////9u/n5s60586y586y582w8uLQ9+rX9eHF9eHF9eHF9uLF9+fM9+S/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/SETUNA/Program.cs b/SETUNA/Program.cs new file mode 100644 index 0000000..05850eb --- /dev/null +++ b/SETUNA/Program.cs @@ -0,0 +1,33 @@ +using System; +using System.Windows.Forms; +using com.clearunit; + +namespace SETUNA +{ + // Token: 0x02000086 RID: 134 + internal static class Program + { + // Token: 0x0600046B RID: 1131 RVA: 0x0001CA08 File Offset: 0x0001AC08 + [STAThread] + private static void Main(string[] args) + { + // 不是Win10周年更新版本及以上的,设置DPI感知 + var osVersion = Environment.OSVersion.Version; + if (osVersion == null || osVersion.Major < 10 || osVersion.Build < 14393) + { + SETUNA.Main.WindowsAPI.SetProcessDPIAware(); + } + + var instance = SingletonApplication.GetInstance(Application.ProductVersion, args); + if (instance.Register()) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + var mainform = new Mainform(); + instance.AddSingletonFormListener(mainform); + mainform.CommandRun(args); + Application.Run(mainform); + } + } + } +} diff --git a/SETUNA/Properties/AssemblyInfo.cs b/SETUNA/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..eac55f2 --- /dev/null +++ b/SETUNA/Properties/AssemblyInfo.cs @@ -0,0 +1,15 @@ +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("SETUNA")] +[assembly: AssemblyProduct("SETUNA")] +[assembly: AssemblyCopyright("Copyright (C) 2008 CLEARUP")] +[assembly: AssemblyTrademark("")] +[assembly: ComVisible(false)] +[assembly: Guid("4483e561-8b3e-427d-98a4-e0e821b7bf2f")] +[assembly: AssemblyInformationalVersion("3.0")] +[assembly: AssemblyDescription("")] +[assembly: NeutralResourcesLanguage("zh-CN")] +[assembly: AssemblyVersion("3.0.0.1")] diff --git a/SETUNA/Properties/Resources.Designer.cs b/SETUNA/Properties/Resources.Designer.cs new file mode 100644 index 0000000..c376295 --- /dev/null +++ b/SETUNA/Properties/Resources.Designer.cs @@ -0,0 +1,312 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace SETUNA.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SETUNA.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ArrowDown { + get { + object obj = ResourceManager.GetObject("ArrowDown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ArrowUp { + get { + object obj = ResourceManager.GetObject("ArrowUp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Close { + get { + object obj = ResourceManager.GetObject("Close", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找类似 SetunaConfig.xml 的本地化字符串。 + /// + internal static string ConfigFile { + get { + return ResourceManager.GetString("ConfigFile", resourceCulture); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap icon { + get { + object obj = ResourceManager.GetObject("icon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Bmp { + get { + object obj = ResourceManager.GetObject("Icon_Bmp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Close { + get { + object obj = ResourceManager.GetObject("Icon_Close", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Compact { + get { + object obj = ResourceManager.GetObject("Icon_Compact", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Copy { + get { + object obj = ResourceManager.GetObject("Icon_Copy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Frame { + get { + object obj = ResourceManager.GetObject("Icon_Frame", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Jpeg { + get { + object obj = ResourceManager.GetObject("Icon_Jpeg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Move { + get { + object obj = ResourceManager.GetObject("Icon_Move", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Opacoty { + get { + object obj = ResourceManager.GetObject("Icon_Opacoty", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Paste { + get { + object obj = ResourceManager.GetObject("Icon_Paste", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Picasa { + get { + object obj = ResourceManager.GetObject("Icon_Picasa", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Png { + get { + object obj = ResourceManager.GetObject("Icon_Png", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Rotate { + get { + object obj = ResourceManager.GetObject("Icon_Rotate", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Scale { + get { + object obj = ResourceManager.GetObject("Icon_Scale", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Icon_Trim { + get { + object obj = ResourceManager.GetObject("Icon_Trim", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Logo { + get { + object obj = ResourceManager.GetObject("Logo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap OptionBG { + get { + object obj = ResourceManager.GetObject("OptionBG", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap pi_erase { + get { + object obj = ResourceManager.GetObject("pi_erase", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap pi_pen { + get { + object obj = ResourceManager.GetObject("pi_pen", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap pi_text { + get { + object obj = ResourceManager.GetObject("pi_text", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap PicasaLogo { + get { + object obj = ResourceManager.GetObject("PicasaLogo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/SETUNA/Properties/Resources.resx b/SETUNA/Properties/Resources.resx new file mode 100644 index 0000000..28cfac4 --- /dev/null +++ b/SETUNA/Properties/Resources.resx @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +text/microsoft-resx1.3System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=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AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKALOz2/Sp0K+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+YbPb9KNA+Ze8v3ouzSweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWDy/ei7CweX70XYWNDyvYflUl2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.xml + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAKQIAAAKJUE5HDQoaCgAAAA1JSERSAAAAGgAAABYIBgAAAN6IjLUAAAABc1JHQgCuzhzpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABp0lEQVRIS7WUPUjDUBSFA2JoV8Ehi4uDQ0CXiCCIOHZtcXFwViLdHEydilOdLbh1EUT8qaIgTi6CVOgmSCcXl4JuWrTU53drAlFbzZ+BQy6P987Hue8mmlJK80uL/gzI0WKxqBUKha7LF9+EQKP4Gn7If4DGMF0DskASAXaTJQ0yMSwDcYCsUi+hkaRBExjuA6kA2aAWkGgeDSeVaAqjSyBHQHapt9C6D7ZCbcUdhmlMHoFcA6lKKrTjwiSZI3eGZuKABNIC8grklvoMHbgwSVZB22g5Tus8iALSwaiJrtCxC/OAck/dJ0oiP0SJB3pDD6iGztEJ+vxSI4J6QfywJ3zvUdkPCZvoN4gHe3db950TuHXjnGyVSiW5E8+017v6gxCydTeGYSgmLBIkTOtUJpNp6rreD9Q3SZhhOGTzXqPReMlms6HaFXbqVL1ef+Y7ULZtt91x9oB/JgmayBZj0zQ7juN08vm8BzhlPTAkyB21vAQMQzudTqtcLrfJ2ly/6Yo6dZMcvEilUneWZckvfzEsIGjrZN8sGkKDUSFBWid79DiAXok+AAxAfWzVfcsWAAAAAElFTkSuQmCCCw==AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAegkAAAKJUE5HDQoaCgAAAA1JSERSAAAAMAAAADAIAwAAAGDcCbUAAAABc1JHQgCuzhzpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUnYa0cW60hc8a90+tWoeF1suRqsu7z+f0aYrUdbsJzteoyQ04VRX6TzPbE3vTa7vs5iNG44vpcod3///9kqeSj0vLX7PkhXaxTiMZQmt0iYbCHwet8u+waVZiFxfV4o9OzxNiEqtXj6/NxlbqFvOQ7SVEdaLtapeU1cblPmNoTSoRglc1SU1NipuEqZbFSnN0eccVbpep7vfMaXrAqOkVRnOEuf8xgqumEvel5tONQmtrq9Pys2fZipN9HhMhVnd0uZ58ybrfo6u1pr+slXJVYouFfksqHstwcZbit0u2y2fVcpuaKveVXkMq83PXV5/cfa76UttpCgrtDbJvw9/201fJGeqmDvfAaU40sabTA2O2VxO3j8fw0aquXscsmeco8dalZntxsruJVnuBCeL45f8VCfsGc0vWSwed2n9Byt/DP5vekzPJYmc2LyPVlruwSRoD5/P7G4Pq4z+aQvOJ/uuYIPnuLxPBSnuRThblZoudvsuh0uPBPksvr8fccSYBSmNIMRIFFR0ddpOHY5fPR5/gaXKX3+v3O1+I5dLpnrOhGk9akvdVnmtIWTohqrua03viKvu1WXF+vy+NWnNtqqeKbxu0cKzh5rd9WoN4iTIEWY7jU4u4ld8ikyutrqd96t+lUm9tWoedKl9hRm+B2ufAfV6Go1fRUmt1Un+YgbsEPW7JRnNoLVa0vgcxep+geMUAnUYZITlLM4/Ytcr33+PktPEapzu5iq+phq+zA5/xfqOZKga+/1u1lqusbY68gM0EwP0gvXZLd6PUVYLRJldc+jdMVUJUxgc4UWq/J4PMoOERopt8tecfz8/OvxuCw2/ehx+yjweOfx9/L2+5agKmXrshGk9jO6vnP4PA2eLw/ca+AwPM+eLVcodb7/f///v5oq+ODm7ltqOEWaL5uq+Vur+TK2ebJ1+jF0t4ZWp+ayfIcWKkqgNJAe8Bcf6hkquwdTohbn9C41vCWx+mSyu6awOModMKCuObP5frS3ulWbXlcpORbouFZo+NppeG44I5GAAAF7ElEQVRIS2WVd1xTVxiGwwiyZOSEFUEElCUJKEVBQUagBFlBhkQRwSCrFKVoWIoMIRUURa0IqIwCZYMLwWgpbqtWu+togUppVWpF1NIWaL9zb5b0+f2Sf/I+9/3uOffcUJAc5lqfy9AKTgvT1taXoQ388DVFlh/arXRxnZSL9wdX6hcVvSehqKhIX1tbT0MmCEOyAhdLCfQVnn5V7izHvIzXCQk9i6RCrsWGH+OlPDAVBk1SRzfJGKXWGs8LkAnmWQYbrK33kFjzTIUT1JrbbiRMDH141MV44TuShmMPTSgsHsYTPowkod8mNxotliajkDk8Wrv9llj4zeN6E4NBobBYLB6LopCUdu4xLfbw4TrA3t6+zh0zzdyv7iIW0iE/ZmBgQBiUMTPhids0nF4BGImxryyk51BJ4a5HU9PYGBhY4FHIfHNzs5ENRiLwpcLdDRSKARYgbx0XFzL4JTEPCHI0OClPiRvSsx56ssSCtWGS0mC4y7+0WBi6uaHByKiBwAlQnirJwfcwYWYYRwgwESsu6RhKO32E+thtms8XR4m0k1OmsqiEuOkAs8DnIChggRdnej93DkLBKZO/MKf5mWQUpzOdWrLFwjZfUlDADXveNQsxNVsgRGFa66n0KeVMGS0zIjbRkCgv8OIMDZ97V4X+/CFC2uHlbGZ2Swt2Wlpa6q2WywsMBahgwGZbe146WaUp2BUa7YXQXym1JV3Z9RAHYclydrK4Id6TRQoM2LeTVcAuTYFg/I8FZ9EcrfXqn4JTX5+9pI+9o5YcKd6TJxYYLO+qXRhNza35AsEliycIRYWX57zoyl4iEQJAsOYxHKHBkQEdBk3jEAcBEAi2hn5njlBRylr2i74tKkRD0LadDzx5/SA4OmKDw1AtNhknBcIZ/xaP9sEz4+Tkxlr8eAuVTPdAlhAcVVUZqqqqnP6n17dKlHxBPow2hKKCnmU4gxAFG3XZN+5mx00sgIHhjHD6TcrAsSXIF9iGRsNo2n5w4oJWhwcPorT0xYyOjptXJALHksPhOJqUSRTb/HxviwVnvyg4Rbmn5zyZGK6NkHnIKseOtitkAxYsLS05xSZkh61tWWSkR1Z0gR1ltd720Zqao4laYQh9k3SmDStwdSJvyeVyOcWRRL4s0tsjJqJCg+Kqtx2Ob2ysm8uJYITCDgVy2q7I5blcNW7/0zLcAMKFih5SiF1hY3OYVhMwEYXQbt/46rZqKIDLE7S2tnL7TSJJYYAQmLQ6fBjrYt2oR06noSGlfWeqqwkBslhQU4MeD6kwyqS5txPnt92d9tGkH6xA7leBXFAgSwCC4vFlm9eQDc6j9MJKe3g9EG8IdxqTuh6vwH2zVdwRiUIIOt/ndQ/gZc0ZBsHICN5ABPxp5vDkOVgBYfq+P0fUoMChVc0BC6V53RpiwYcvSfP5/Epln0I6NXFiJTwDb+6oQd7BQU74ZJ76fua0MgQJlAl8Zqbo1COwZkqKakR+lkAv9CGDyj7ADAGTGj6ILt/hOrQqEsJG8UgHcAPdf4bIktEZKyurKf/9z4Rozs4RHJ4lZNTmlIimICTF399fVFIOAx0dwfPManDNMM4poUNGji5RiXERQnuv97cqKhJ5uZFAUGf3irpEoi4xIpFoi3oQQn9H2paZbF41ayRd11RjdZWS5W/Rm5OShnJD88vK+u8sm9UAwtIdKuxeMX29vX19vSoZsAcWkC+G9PG370H33utHjeoq7C1yqJTrIxQNZ+Ap3IHi7xvx9/GNN3Su5nWfougemDt/aWOyihzJa7UQ+tUbHmiISenUuWaTd8uOcv5AQioYO5KlND5aPYhyI0y8vf/sXEbS2dl5Q+daaftPcETP6ybMTZ3/aKmM+XphaMjC28PjgY6Ea5jSFZVvsHDeFYzU+VJS9WDH9sbExKwpFXP1Yxv4d2x396Gak8KrxMSFUgIS13l5PYmIiLiwU8r7BC9fHvICwe+fgYGBHjk0CgoKuisqKrplfEZyC36xoxxc9Dan7OzsNHrgIhr/A/908D+R4SN7qBNnTQAAAABJRU5ErkJgggs=AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAk4MAAAKJUE5HDQoaCgAAAA1JSERSAAABkAAAAH4IAgAAAIXk0N0AAAABc1JHQgCuzhzpAAAABGdBTUEAALGPC/xhBQAAgz1JREFUeF7tvV+srcd53ufe965FiwC9MNAENWogSIDUvnDRq9Rp0MDoRZM6AQwXbarG7lUlQE5aqU0Ri0ycFLItOJWlOLVdybIqC0oll5JsRVDKKLLoSLFQimRFUi7/iEfk4TFJb56zJW4Kp8/Mb+aZ93tnvm+tc0gqLOCD4XDWt7619tprr++3nveZd975nr/6R//+6B34o3fgj96B/5+8A9+j13l5eXmh/875d3V166qcp74Mrq5o3IxH4l0vXl6o6UeUn9If8roMLm7fDu1qezPeVcYv3N6coJscYRDH8aDvPWtw1Z6qnaybV7ev93bt6rbaU1dXT1xePX716qM3v/PVm6+qfenl0v7pxauf+YOr36ztQ9+8pL33mW/R/va1W7R7Hr3100+/qJ729kdy77vuYqBn+5kvXL79gVuvqT1SH85T9SfUuLzaB8pBBvRqf/2B5zi/9Ro8cusnv/oy7S0PXP+xh196y0M31H70d29oXG4+cF1jDrr5IR7wPHpanf/X/lnrGbzlMy+7/We/faGxelq8y2M9iR7IC9av4Pb3//m1D3z522offqi0Tzx86xOP3frM4zc/8/jVP/v6K7QvfeNVtwevXb3G9tXnv8MzMFB/sj3+B6+6PXlxpbH6Jy5uu3/6hSu1axebdv3iatMu683LqxcY1KZxahf1iHsNli0ywXAQHzjejlwUatD+4OIWrQCroET/Sl+YUkYVLg0xHWcz1Dbw6hQzvOCXev14/aT2IrbAuri6Dbku6EWQMS53rRhUT2uoasTR85g4ZlPi0VnE6fBan1x/ygtQiXFsvrefYFTVwRW0Ui9aJWCJVjOwEq0AkGhVru3QyjXJlfnI8/S1bc6JaOMujjRM7BBKl6ibLt1yqYc+3uuL+a5JJ4hAFpp4lNqfe+A5tR+5/yUG8wkc8TMYUn/5dy708tQLRn/xnzwJlX70k8/+8Kee/48//qJ6jzXQEd2rXmNOi/z6G7/1ZGSWaPXeL3xrwayHxayrPWZFfr2m8Y0CLD1D6W8UbKlnsGwRWzArkks31YQt9SbXAFaAlA7qcoZTe+TSCZ1Tl5VfwKQOKn0abS4KHECSBx1SBRqxPf/CCzrVwBq0MqeQXHBqV4KhuUKfgKW7ABZtqcIarQK5QFijkscc2faFSkHXiFzWRzz8NXLqekeSoKOn2vT1LpFo6jdn6hkKsOqZMEsNZqlZZEVm/R/PLxSWaWVmBVQNSdLhZWBt4DU4ZVptsQV6DKMCkSpGOJLUhxGW4BWfxAgz1DhZwsqqx3BBUkUYwSajijH9Abn0JCKUUZVoBbNEpbn5eATWf/Vb1/jFTat7v/AMIkvAygpLtJqAlaRWkl3p5h1QTISSfINcFVUMDsgFtkwrOLWkFdjKOmtLK8HI8AJSgEy4QGeVVmUQkGqogl+GVBVW/WZhhW7U/lKQ0gBUnVZYiVaJWebUXnhoNqH0+Hn6BVIwaFqhraSeKq0qmNBctKa/xKB6byWXxA606iffPaEaiRqDahzHuIIG6LSbA1vt+ECST24PbJzSCdeuXqkhYekdFQ5g3bpcRoUxHnQMmORVDIVEgSaySpBVpFYJuCqS2iAGXx53hZVoFSXVMlA6EFwzwo6PRG0lviRmGU9xwDmz2gJVsTnc00CSytpqySyjCnllWiGv1Kd4EGYRD/6jB6/UAyyHhHsDsWZ5l45/vt7FCRpzJLaCpHoEYFlnAS8rLAuuPXllVeWo0AprRlXUUykeBFs9EuxiqjNrw6kQvTVIRXgVtRWZVWI/jgSF5VgxxINJVS0UFsHdjp9lzVXoU8kKs5Y2lugTKeabg1mOFgO5mraqdJujvwNtZdEEgKybOp4qZcZdbWyV1O6FYrHVuC8AruOsx4OVVq8QFVpkRSfrfJEFg6ywbPdEeOnq4oRCLthEqDgzq3s9S6aYSgfMilLLcuyAUPM5aCJ6SOTob6ZVUliRWX64gQWkzkEV/EJkRT9LzCqS8L5vYWAhr8QpyyuABa0+9fCramcyawYWqKIx3nAqQCrSyszaKqyXY2w4O1nYWCeCwUlkDdNq62G1iK8rrK11NSwme03oGG7GeDAorEyu7mEBrO5hxUhwacQPSWUTfeumJw9eNwEWr29pt2NmDVQNiwo91TXUVlKNcK/HjwtraWVLNfo4oDN3iN2yUCry6trtV8ajxvmBWV2IRVHGs/FYyyuY9cSlWosNi/XeRRZmVooKsdtnkdVQJe/5gevEUzTGEWSNX1Bs29tRTohJtjTOtP3peDON/cAZZO0u294PXAcH5sserX7o/m/ukQu68UA/j45orF6vWb2FFVT6s79xXUfocbI05q6ksHjBzAw4EkzAana7HPcKLIeE5+ispcj6x9/4jo7TJ2aZX5vIsYaB0MoKq8urgq2ZVthVKKxjux2vSpfwnmMVIkHCQBSWx9tIcKuwGr+Cv54UVuRX87CKmAoP2PWt+mxgodjWO8d935v4A1g0Mevk/GAUXD36q8yqbWNa1aiwueBxyq/539nAynHfLJH6kYEnwQXclL7S5+qV0esgSIoHK/XQU6XdrsEgfffde2C4MeD3pgsVGP7io5diFvODDgnTvJjmyxqzKr8ivCK/CBvBFk3jWQ3pOtfBeQYthlfzOOJs9rwcXhUKdGYVYfWZl2WHwxrBxc2EglbqacsIMT7QYzgVw0CB6d//5EvuNaDF8BBmGbtoK/Xi1N/57dIneSVtFeVVYZZM9+5kgS1s+HR8HHz8SnjyTc5POmtJrhYSbs2sf37jZtJWj914OblXAGueH9yLBG2xx2nBaFpFSRVN946w4LubWdvYznZ7jQItu5rOAmQtrcHMYrBw2Wv0Rwy4S5z9u6LvPh7eI0EI1ScK++SgzXUsrWJa4bhPzEJDBXKNWbyaUjBMcfxvyyiM8AGdChrfrIMCGlpDz3o8CNVOLj9lPKSiqp7TTHesd5tZj13dWqY4oLM8XZhE1pj7jwrLtKr8suyK+guWgaqZVrpQcanvus0qLIq1+WlFK4ClHtZEVEVacTwyy+fPwIqoSpDyzWRjRXllvArxsq6ivGJ+ELtdDWCpEQ9aZM2DQTFwFqC2GXe6iWJqxIYMZicLqUWuQ/Kwvvp8kVeJVpju85zg7LInSM15DEBq+Ov1JrTqvpWnCG1s9fDQgd0QTDGhgdnDTVQ4gAWkTswJ7tEqcmov4qs2FgqrSKytaUVCQ7Kxho/ePfhhrgejfZtY0Mk1JRzkQK/7TegmINX4Esbx4JBLHV41sus4M9HSwCcEfplWccYQYJGWVaPCWykwRGSlzIYNsyqqcIJappJ1VtBckVxpns7T/ybOklnJ6LlrrsU8A+HGtAI91lNpYKnFALqJTfRLbRVp9QO/8YKaJBX9nryKXjsKS9oqyqs4PzgDy+SCWcu+oe3xgrkotdLYzMq0Cn4W+Q0xxQFUpWDQImsZDB677MBrllcTswqYgsteJE4QWZ1f9qC2flT3pmKuw77C2mNWm+9bKqwDwRXCRvGQGcrku6OqWipWmx8Mc4LNYmfGsM8b9kGTVM5p2CZtkm2AtnIuAuNklltAMdlnSVV4FLSVKYNxzr0RPfFmN9ex2Pv5k7zyw0NaVpkuLMyqwFISaTSzxKytjVUSr2IYGCfXYBZplsnbmhMpCQmJzmYALWfT9tIC4sMtWMhpcg5UHHDctBJ0TCiBZokto4p7eQi0ijGgHg6qgFREFbTi3hgP6sXQPD+YaDXHg0uFFYF15licSuRykGhLa2YWdjs9qVhxljBNDurmnnV1HAk666pnLTh9Yc4Ltb8e74qm+8SskAHq/KwUFVpqnZfpvhcP7gSJV/1fzHe3jaXBRkxN6VctCWvMDBpVLY+hTAsWbJU+ZHKOqLDlRtU4cWmiF8up+UohxJvwlJCUlNHm5ncuj+7tAeB8jn33kuLw6jotK2a9h6iwTPlF0520SXomyzzwTadWkqPECaDKzncClvXU+djymVz8phU3Mbbpnbdp0BhAe7SKCEOIoa14oB5FH1GlsVXVscJK7pWwpWBQzIqJV0sDyyIrDcSgY/2lE0omRKfVx211bQeLeNAKqyc3pMR3RYKz3X6+tjqZ0R5Nq54duuFX11YrJx6FVecHY2C3VVhNZ5lWujd4WC0oPPxfT2UYZlZllv6ZQYxj3wRUzXBFZ0VhZfeK9CsnYfVBplURVgqb3YOtDq+SplBkVGgjkapP2HWjKnhMzaKaddNTByTiLvV3S6vkZCnFgcys7YzhrTRjGERWybQaIV5dvLLXsLQ9j4ZnJJTs5Sst8fQfffgPHUZprHM4chcs80MSs+ARtPqBT15Ti4Ol4NIz6DSQpwF4OtniL+Jf4S99+Jkor0QrwkD6pbxKNtYeufaOM7Fo/0vkSsxCZ80iK80SbuVVs9jn9KuUbyVhtcwOje6VI8FoV03rb+LM4IZQAVsxP6tlJkCrMVfYc7J6okNzsuzHn6ewEsS2gstsQlclWpll+O4CVkkAm9JHC9RSNtaIAS2saproiVbgtQn9Qm5UnOkbbnoVVmt91En0BCdUNmlcbtaBj7SHp/MPhFX4iYIUOkvWe08l7YFhX2Bo9/0Xn3k+Wu9LhbVkVkxQssONzx29pGUWOFSKtPLVzmC+6xyE/flPfF2nqZ/jOFDlBrNMLsaJa4VTeohQRV/bD/7as8fk8uuPCQ0YWBJWrT3w3J6BZVrZgI9HhKEYMC7Fl/AEs9ybWTEkZLwICbvd7gWGqCp67Hb6qK1IZVjSKq65ib7VvEgweO2mVRnIQUrrBxc2VlVY9qAyszappENnjbSGI1llVcVJKTxsAmuXUw4PsbE6sPamGtt0YXPcSXZP6ezcTHOCXiWDtoqqqh5x2kGe76se+YJWVk9wSiuWK2IareraGo60wXcuNeCmzs/jemQc3K7O8TKdsMawActmloAVZwy7yGrLbhBZsqv25BWWNvKKKTnA5AHJSk5ZMm4SmHT964h7DYQq9R6k82EZeU9z+w8/9KgPNtwESH3/x58WetzHmwlnA1VbYfUnP/S4aPX9v/6S2oyt+Hr0CtFWXjwoVDkYTPIqhYQRVRBqZhbYOoAXWfKC1xwSYrovQ8JhtFcDyy0JK1TVclowWVfRq4oW+zwVGLz2gSfSxYscGalY6WYxsKyqNvJqq7O2Cqsudq7/zlBYs4FlcgWvaqmzouaKwEo21mxpNRvLi3KMrUirldTaBIM9MKyOVWUW83ot3dxeeAdWiuw6s8wmJBVIMqpAWISObzLgIVJPCCgeGAcJWN3MuhyB4TRjqESH6L7bek8rWpapSRw0tjSQwIFcXgY8IwYqze1P/9I3lscPFJk5lYGFOKoNPDFIzEq0ajcFJj2kA0uoEqT+nQ8+Z1qZWWguQ9ZI1a/8X3/423oH1EeFhbZSg1Nuok/MbEgKa09wIbJIi09NzAJYM7YKrZ68WKaMblMZsmmFy/7Yy5dOuYppoktaJX/d04JpNjCZVktVFbEVIRU5lZnVvS2viK7kcmDYgXWOf9Xdqu5YBfcqRYJWVY4HNdCvZIV1AKxmeDUza5Pg3qRWNrBGkFi89mRgdUKNNM6RzNkSO1M0N3wlcFMVFsyCLOJOIpSjOZDkm/Nx3+szlyeX9TpXN+fKMyMw7CkOziMVs6LCSumXvslkHJByg1MxFzyqj8ijP/e+R3UTSKmPzcfj+UKSxRdjmsfotRa7BULBqb22YVaFlGllVJlWMIumn0VPi/FgdK8cDOJhOZshYQtmga3YL+E1iy9jy/KKqDCKrGhgzcBypRprq2WC6DJHdNBqW4khJi5EWsVkq5R4hcPjMLAHetHJajrL/rqBEwXXKuvdOe3nKyzCwN42bvqKWZFW0YzXMxhYGuxmnzrLIQzIaWhLnTfCSo5VM+ALrfTW02ZsXbb0gqMA0Mmc3aVCDUUMWU9ZMTE4blFhzVCzworP+dWbl0waSmeVNYbbLAdSSWeRBbOc0+RcAfKVPJWWkr9103aSURXjvj1IJWYlfkG30t7/yMBZH0d+cVqL4A5RtUQYcR+EUu8W5RWoirTiFyRixcBSk7ZKBpYVlh33JLVmzXWO8qJ+FszywulZXs3WVarlcBAJIq9iW9SNqSWugNceqlI8GGklNAxO1VDM8WC/qwWA+p+jxUSrXZFVnKxoupfxmCXMIms1IbhUUrPLbmalCUSb7tl3n/JIQ3JWS3BPtGpqax0VYrqXv8S1yq+9YFBWt/WUYOFgDWHlgI5B1EQGEAdPAutMnPnZSgZpUViXag4MlZaVUkm9wNBroaWzMNctqZjsp8WxCEWDVubUzBHrKXFnSajv+4XHOM6A03wytJoP8hDuFaoKULaoEne+95e/rqZ7aTqBvrWumxKkuBmFFSCL8kqM80SBtBXySsFgqSHzG9+2woq0Ql7NseEcJ0aTawmvRCuv7CG/IbW0+FnA+vI3bqkFl32Tzo7L7nwre+1xFc7e5CDYSrOBL1ysi/DFqbPKqZTT0PKtmvGNsxQKVVlbbYC1SX/PtNox3a2nttoKiBxHf0tU+aDC0ei7J/01a66e5bAKDFdmVtZWFVWtVXhlA0szfZVZ9PhNpoaFTwwG99AjNcRdDPJN0acfLxbV1c35efhxuou+yCuasxxWIosFhhFYXjyMpJqFVZyVi6EfjlKL16DMTvQnMJ1siVnzzcQ+kShypxDn408DLDfO8Zk6IT3kT7zv2XTE8AJhdtwcDApbohUGlrQVzJqBFZ2sNJ4Fl0NF0yrVdYgltFiEKIQRDCYDq6wfDO5Vq9DQZwadzj5ntNtiT8ubT6azR2BZTM0xIMLK1pVoRVRYoVTg1dYXd821NJ3yRGFfFOhCDFVgbfIeVgprf8HgAa32VFVknH6fASy9kO0K6nSzF8Za21hTfkNVVVVPbQJDONWVVBvcqvlTtY/A0pgWdVOK12bQNBJVBhW+wBr1HkwHy5n9fMYyrRwP6uGFWVVeqX356lYRWQSGPcthTiV1EmlcQhxVVfKqS/73J68JUurhFEqnKawgpqyVBqTe86LH//bf/doBvPRY34sEoyXBBbwiaxKqZmzNYNI5BpYGCV56/hQPClXQimBQqFoqLMHLhLL7nnTWUnYdG1sWWa5Ls5wijPJKqirKq2UxBjysaFo5JNzLY5jjweiv76EqJy50D8tRISVbgBr/xoKZQC8zy/qr5Y56gWHMg/cs4VE8uHKv0pxgnA1c6qZyQo37zvLdvSh6rMjZrssR3cO8Yc0abRG4sQW8iqSytsLGglYVVW7FU6+cMq18JBHK+sic2qihJa3ML+smn4ZRFekGyHScg/UEgOUKfyzZ8aJoAsMUFaYldeRVwiZ6yRNzSpBqqOrRXInUaoMycCcSRzdBlfrUfvBd43h5bL1pTu3R7YBQ812OFhmAp9iSjcXNOC2wca8+eClsQauksGZaJXgtJxDPnE+0h0UqFvFgdNzRVq7hB628ztl57TXramSKzhZ7mhmcM0WXKwTjKpyEp+CvFzHVtVULCRuzKjdaKSpiNfcdNzEqTNHiKNQeKl/th4QOBkNUGKmEboqqykfiYI4io421r7AK2lpmQ0jFKtY7qBrAYoHOmlaNWVVeWVstJZVpVQypl0tUiOSx8GnhXg/lrI9a1AZcUoucmgWXT4ZNsyhDYVVmNWDduvz8zVsWWcwYanVhdN/xsFykhUUqOQ/gN17AM8IYahbSFlV7iDF9Zk4dHIlcO5BjQo/udX8SYZFQ/8bPfRNymV+RWSkeRFvBLLtXFlll8eDWxtrDli2tk/ZWmjecHfeZVgSDiVZxA4tqt+c8hnmp4N3Rak4TjeZ6BJadLIupTQliS6FtOqdBFqPCyKxmbDVaseNEyMM6qbASrSKJ5gnEWX9d1jQF/dv67hvu5ZCw70+RyVVohRPfFkWHZTo9rcHThT0kbAYW4eGtal2FvkWCQtXLNWcqMKsprJcLOwjfFnyJxLm6qSBuxIavvqqbHGFQxvVJPBhPGIVVIJqAZWwBLLvvlMrydCG1YiKwGrN6/jczcUYVtIpOuYHyQz//e0u47AmrcxAWdRlPPkeUQo+ajsMg+kgxHRGYfC/nxyY8OR5UGKhxmh80rcrk4AcvSwshoURWZJbgJR7RHzf4dWbGlpnlBPe63U5z3COtiAqdI4rdblo5j8Hp7DbXU2U+feAP0kRTvlXKupoDwKqYqmkVBmMeME7ZJU986WZNB0e6Q7exQNi5HtYm0FuZ8UuF1STY7dvmHYXlafLgoylWluaUYLDJKzhVe9Lfo7zq9Ruq1BqLdaKBRUjY+xYYVk5pDKFgVpFXL49BA1Zllo2kTZgWlVT0p8ymCqNlE3qWx+HXQFi1rnSwoKr2ByLLzKL8sUUWRYFZBhwzKqOwglYAa8ZTpIm01TlIeo3n/Ot/u8WYApBej26qN4ygWDySUIXm0kEzC3JFA8u00kCoIhiMBpbYhMJyb2AtsZV01nImcamwsNvJF40zg67eV1D15AVzgttpwVY3xl57pNVeHdGDNYPLkHAvDEyQYn4QbHkbrREATgtj9ngVzax5ArHQqpbHKsCyKzaCzOS7R0ItlwFuJxCTwtr67pfXnn0OYEltydgq3lbt5yJZ1lxhUXTHVpBXI6G0b9rRsrG6zjKtmgHfmVX8rNqKpKqtxIAVVYwFrBYM9ujMCJtjwCid9oAVj0d4xTGmVbTbM7DKdOGtUnnm6QuiwiGy6oY3rGp2rZWU/+25Ns/TJVT9e3/vAR1RL0DQfzebIOUmYQXC6K28ZlUVj8x+lu12ajYQErblOFVhmVkaAKzUjpk1u/IHNla02wGWtFWUV21asE8O2muvwooqV6XXTcuruO1gdNmT0Z6YxVLB5drmJa3sVbVBmxZstOJqrTA5VebzDJGVzXgmEFseVk+RaMCKtKqoWlRAnrA1TyBGTll/xXx3Mctm/NrPapor5NGOfQyryBrhYSjh0FPhD7Blux1aIbLcCqfqzYGnPmfn9Kh2V5U/FkfncIpz9qRWohg3I7CUQdqdrFHFAWaxByqVrbzOhvl7wkBdt9DKaVOEWgfa6o5QtfTg/QyOAfeeE06Bp9TiQbFJ99LTlrTCw7LCcnY7tEJe0SKtGB8z6yBCPMgpjakMY9dVlj2PYPBmzGOwy97DwMapWEc0prbbbheYUjx4UJVhGQzuTgICKUKfoK3a9dvSGqYEgGi6mzZbV+tAeTUDvjKrhoTTU3gCcoivEYiOrPdImU1wF/IVEsj0kJTvvhVWPR7MsWGME3uEOGysEjDaem+LoVbhYZRaKGcCw6GtOrZg1gJYTubsYRru0gGDlhT7fIgZv3j5oppPA0/xCWeFVRPfC7A+8Y1XmS5EZLGRsvKJABZLAr10LqJqj1PQBPQgtZZ8OfDO74hx8eQ/9lMLVM3wikeMrWVs6OSGH/qFW2K0+plWAOsckXVHZlYsRJOSsCKt+k7RhIQ37bIXkVUVFnOCAlbIaG+lRIUqF2NwpmjaCdWS6uTM4LFptYFUjf4WCiMe7EFiBxk46gkOUSEFUC0N+LjdRJ8ljMDqLAxxYtsqdf0qQzA4/w6FVtXAkjPlsSJBR4XlJQ66VQNrcrIazruT1fysHhLivm+KZG23z446awBLZYC6jSUwYWZFkbVHK4I1W+BxCs+gmQkFj4CU9BE34ZQOuvc5kVkalxNulgfSRCuABbNKYPi158t04UOl8gwiS8wysEhfcACoy3gpqYwq4kELIkeF0SO3Rjsg1zETE9eg1V0w60BkASxxStJSvd4EAesvvPdmkld3Qas9MyvWzIpLduxhxfWDIRIsW9uz64Q5ZevK8iqEhKVMeywdE4sxHGmrnVU4MbV9Lxg8glTiV6RVG4/JwiGPDgNDq6oALC/NWYWEm3Svfd9qHcoFBg1a9WguAgsbq0Fqq6q2z7xRVRjzYZawGFslG2uLKt/MzKq0wr1CZKG2joGlNKiCJ9UvDhb43tj6yEpKA9gEnlLzQcMrDgCWflZkloFFEinAYtc8RJaAJUdZOVbkgibELCf7rKeWCssAWi7QiY5YPCFha09/gao/9Y4vG1sJYbp5DDWLLHz36GRBK/WilZoIRU/78X/4ikQWvQcHUSFmvALDZbqDOBVXHUa7PWur6l6hrZBXuOwMABYKy6ZV2lTC1pU+utZWR3kM+8sGz1RYmOuba/NAbfmu5GrFXIcdbG2F1VhUOIWEJKR6e9Rj/yyEfktyzbSqoW+ZKJTIUitlGxqnRtA3e+0iFL671VbIbHDF91p3dGLWJvedScMKLPUAS42o0O77iAflbkpP1V5bJ4lW6mnCB31qggtHQAxKyjKqcUpCCWYxiH0/vz0kCKtIK42HwqoiC2CpGVhiFqvkBKyyDrkmgp40kmI8yBiFFWlF9pbX7sz8ct78TK4lsFBJIMktkivSaj5htrG+7z0vFiGpjPzahCriQeRVopVQRYNW4tGejeWpw6WNBaeOaeWZwYqqwqnarkaO6JMXTmdnQBKDsZW0lVc4z3t2bXyrgKq0znmBKmbknRHafSsHhuNiX4ipHvcNEnXAZbW1YBWLctqcIItytqtztsDqz9CDybax8wKrp1C1q7y0W5dg0ScKt2UbjKQxaPODLVMUbDkJazNoVd4ttQK8ErNMK5gFtgyv5L7PNlYil24KH/TLtonprK2WzAJeiWLT04Iqtf/z2h+o/dqzzzsq1PZTApaa6qIYWKIVjbTPgwSFZWKUEENOltcqi0dMty3BxL0mmjMnUqJ8Qqe0VSJR4tfMshg/zvIq0QpmobAcEhpVcSBgHWArMiuKLO9fn9ZCR6+dNYOeGezaqtIqtp51hcjS9yW0glwxEvR43g914bJP8srR37z+ZtjqwWU/FU6t3e1hY6XZvOhqbdkVkrBy9eQNsNBW1fwvOmuzWc5dEWq1TKct0EFhtbINo1oDeVgpG6vxfquqVrTq3wxLnbUIDKu8iqmkKSpsTlbSWVVb0XCUGGuAsGIib92sp6ywErnMrJu3PvWtb/Mkn7x4IfZClY5AKzNLNpYVloH1kx9/VArrL1aFpSbuHDNrb7qwrdTZlpEylSyjWg4qVYlrnWITjbt4/jnni0lAR3wHqFpKsKSwjKoorwwsFJaaqESf5FWkVZRaKQOeBdJzOYfZuop57YFWTVsNrz1Egjaw4JQzRYkB99wrqscoJDSthtdOik+oIXPsW901m5xxefQMY410cOIrs5LvDsfivvQhcbTyb6R+Rff9rmi1esVNOjkkFLMKH0dU2FDVAsCen3W7/iNXq84qbhBmbYWTtfSzEq3IKUVqqXdg6EnDRi7tO0JCg5JfQlSIk2Vs4YKntsusJcuuOp6uKp7qTQ1gFsCCU+5BlbQV8moGVhFZH3pKzQpLwIJZxxN/CSimlSSVKj20BYl9Uz/nyoMtMumZmnRt9YgtyFWCyr4YCIrNIeE52LLjbmZhYEV55ZDQCgtgRVrNUsv5DQfMiulXs90ejfbhXtWUqx4PtplBMYs9JkgTtYG1stvbmkFnMxzUPt7QqqPKBWRSJOhcyHitjW0WdlzsvYXDa1ql+HFfYVlvzVIrKCynReTk1EOldy7LQrh3+7Z992FjVeu9cKoiye8aS3l+/4kn1dqOO/1en8MD3Ya86lFhoRUbPqdU0kAr3HcM+I3OKnsltWZCHaPK5DKzRBmIk+QSPIJN4AlacZOTUxOkorxSPAitaAoJiQpFq7f+778vhSVgWWEJVbEJWxFe0aVCBxlVcsFiURrqZ5lckVlUxfMq64gtO19xJaOV1zl4ms9JKQ4RVUt5dZJZ0X0HVSbX2JNiW7/hnGCwAQtalUXOw73SuKa2V9O957XbvQoJ7uVDyM5dcTnOcrv5nMTghOqKLZgVLzRdSrqZrjURzVdikQvTld6OVAzFZcWbZcb1xvDpzSyYFFOxprSsRTHSTR5W5lRTW6+HgRWzq8o7BbC2vvt4Bx995tn3/8oH/od7fuYHf/g/Ufv+P/Vn/q3v/ePq1TjyV/7Ln/gvfup//J/+/q987p9+USfr3Ud/le3sb1ffPRpYdRxRpXOcXu8JyvZYnqG367e162pp12p7MrRWvspVq/rgS8pTf7Xs2+zMA405eH67/9VXaTzEN+NAdKPFzVax3sUspguFLTGrVHr60FOKDaUpUFvJycKfStVXbEKJVtT/i7tUxArLRXb16E+00l30bBHImN23lo1Q8U6BZZ8+po8irxK2CAYdEkZmpajQsWGcIoyciouiHQ+yCdhJu70Fgz2vveRYafdTmgT7DUn4WvvsxnemtTh8X244RWwYd5dwNdGTKVdgSBfFg48+9uuf+r91oemCmq81XW46rnt1MepMHiWGRfW0R7EBqUGoiq3IqaSQQki4rpucM93j4/u42VjnyqgDLbYx1AVvR4X47oXxV1d6+/TG/av/2h/7nu/5V85sOpl3Vm/r7/4/j5VvD2hVJVVEFQpLx/VTxDv9JdT2BhxXHwfcPNlE0l7UuKkqHTn5qNd4AhBX7/bH//P3aaxebym92r/5A/8pTSY34aFklMY6onPmXveaVi64zC5hsUAgZUvVKGvjh3igg5pt1I+Ym933ZVTIq1q2lLTFwh0Jq3/3py9oJRj8ezdbE7Pq2PHg0skSzZcvcokqar274vu8m05ehdOX4CgA3PtI6DiZotZWeFhMDqalzgKWq1/tAYuAgy9pNV1ufP511Zx/oelMfXh0ienhiIMTFtVCVXVJNXIdtgprO+OX6va5pN82JOy+VUvuiq7+XnrrWSzj1xu/pMK3aGOJx9JKekfOhNTBabpEi0QCVYSBsZW/3JXOee0/6OAZ9IsEYF1JFr0uv9rr8pr9GdVlWZK/f/731Gu8fPLyMa3AEm7ifqtxHLeY15itpOOOrewtpn75U/QjBDK9Bmy1pc6aryuOSHfbqv8Tf/O6xurdzKwNtjq/IrassyRF/4O//on5rdCPk0SNUivZ7UlezantY83gw7dEqw998ek9WOj4px94kjyGOEU4KyzBa94LZ67HoCNYUbrE9B0sTr2WD5IeLmxZYSw9rKMsrYWNNSb6mO5boCr47jse1h6G7iiDdIHhwSwDS2+ovlXOh/3x2603VJvXi1nNscK36r38dd31XQCWIOWQUPB68wDL757w0ZKzfu3ZA2ApHvSWFglbJpEg5eYNx9gq0RsmanAALEWUe8zSow4+G7pXhEJqzbSy1Bo6ayWy7L4rifQcYCWv/RyFFePBz9949S1/9wMHH2NhRYaDaUVOQ5wZ3NtdIqUyoK1EK0Uedxq4HF9luoIUJBIVDcvoEA5ej+ygbdQj7bWVl6YVqVh9m8K4ljB5WJ1Z58xTzuc00bhhVpCRwcbSYyVQXwv142MFLNyoIax6kRlmBvX3e6OBpeePCuvNCSxdmZrgF7PkMR0Dy9W1AJY4JRJBK1NJA5c8ZeCSzSDsrc/tAksiTmseycX39GVMyzr+MhOtYBYtYevP/PQNsJWYFWPDu1BYMZth3k1nPT/Ya4rKXz/+AtNnWJASlZx+9Wi96fLHaS8cb+Pc5NU2R1RYkSZ6va4vP49e5Of/xYOVWeG67gKq1WxwWJadrF5LqydR1SnLuH10Tr9SZoOM7221htnDqghLq5oXbKoPTOIwlGGI4W4bF4P8stSZUdNjX8c3FGApzk6RoFBFjvt3R2FFD+vNCSxB6kc/8XVNIAoWB8CyLQW21KObaFq3aDylMs3thEdKfS7O+Qt/839bRlsClpZq4/GTuWoGiT7HCktPKHtrSSs91gpL2IrASjZWTHw/qbBmebVnty/LyCgefM+Hv3yMYN2rc1Qm1157zG5f0mquG+O58jOBpR8a2zmAU0gOs2wwtSzOmVMccVn3frPHgKYVzAqJV70+MrRSv+9hhahwrriQLDefMLDV1zyXM5vOGuTiNM8SKrpe+hRxnkJQU+TI1OGBX7gAVinl3iLE71pI2Ouvl4rGbyoPyx9E4YPFhurPVFiYUwArcop6pwArcmpw7ZFbUlhLYau/u1SeUCi5R0EFiyzrppN2gQPDRC6Ahcg6x32X1DoAFnntaf3gQfqVdNZcmEGTg+cIfJ3z1NVtfKvoXtllT3t2LUuJwqwDYDFhpfhGF5euQdFHyUOK9TTwNP0xuXQx1lRKEj6nObcCqbEup5Wj6TOFdqy2vlXbHCxvRXGuwurSKSIp5lxYW80ntOyMWK2hWu86U2/i7z9z8dDvP+vkBtE6vjV6I/QOMiUR//FYgVb3il/6u6YHzsASrUqCqPraDhQWUyGvvYmqKSTUZ+Kun/bAJXWeh1SGxnfUG1hSN2cqLFAFmAwpJVJoFwyXlo/MilDTOQcKS8ByVChsCTFgC2ad/LbXH26OB4kNAdaxwiKbQTrrwHRXUtuc2n5MqxlYWosjuz19Ype/nc65/yvPyFN3avssrHIkWEvxhYJ8bV3tElj6NOpTWvRRT7Xiykr/ZB6JXPETqBdGXpGOa7axpDvE+bTALK9GnJnVyTVvd8jiwREP6kqXe4WBVUUWW9XvuFeWUUlhzTdnCdYjx1FVpvCLWsn1XZHo1WwI1rv6GNWLRI2JPZu0JIX2NKuY8CY2i3p67/QO8j1cTfdtSGha1YHu3fuK02soda97IQcXI40lSQ9WGi6zSeO6P5WCKbnpda0yCwBL2uc3L9Uv2y8+87zSrP7qe35lbwrvp77w2L1fu/buL5VeWVe6qabcK/VKv3L7K7/2FbUf+V//BU1hoBp7Wykq1JLDY2DZwyIAFKpMKNXhimNHhW9/5HlopSPaNrFsk/GHl0unEoUlaApYElleUE3aJ+HhSYVFYAihIrksr04yy5UbTiqsFBLOBZGTgTXs9odLCvux3R7/0LoKZGvM+VZRW+2kXLkEQBlEYOmd1IdfoNGVD5s260bYCZW1Ihct8UikENdEN70eCNXqbtZLFN99b6X0slLNdDBaV313ezOrVUYutKKdniVc4skiy5bWCmqhElYVVqaVKPP2n/+sfn+Apd9B7wh/LdGnvI+tekxIYSed3Unt/Sb8Uq/nRHNpljB6WNZWSK1jYNWdVm8/cVmaSiSrecBNmhL86FuynxL/aiuJf3WgmSDnu1dmaduI0pPkOVqtcbxsIOzXzwCWismYVgBLDDKtCpI+9BTMUhOqShhYOaVezBIsltpHfwt9vvGwiAQBEMUCXTLQ2sqb9wzx9czzOkj7By/94Z7CYiKSWoMAi3p7JaH0PS+eo7D45BAYpuaocIisvgTaThbVZiSyDmYJo8IiKpwzsObdUuctnc/PKtDXJ2X56FMj6ypFgl4qWAc1s0fXTDXdQZWmC33B7tWT0aNIeddPLKKm57vXi7e27VJfrr6IISPsDGAhpnoYWEPL+kObzrJ1tQVWzJFfJTScz6zIL7QikIq93sF/9LuP/jd/57clshqwLi7x3fUl7NWC5dferrlpIotVOPWuuiNha3rXCu+T3V7dK0eFos8xsEwoapCaTRFPG071NGVSlsei6AysVl+BknvWWUKVdZYW1gApCavSatXjM4EVtVWklbBlVEErelBFzSz1S1lhYGGuEwwCLISVYWSK6WUXkNXX73s1KDVRb37rWGFBK4ssJg0FLE0XnqOweLVpllDwQlslWs0LdFwreU9hCVhzAayT84OjmEyVVyft9iSl9Y1+7fJ28q1SuavJvboNrXxcF5Qkkp4KHWAzHpzRp0XR6KxyAXrRbt+Gfmy/UCGlFyOhoOi1Vp4JiZbbbevPIBdwbLQCT9yEWYSEXWF5reGcOF8JFI2qpK3mm3FhUb4Xplxe6S8nYP2tX/odmXyEhPKkFB6rBzpjOTSRoJcK9sAwHjGzSmr7lCyK49501imFVeu7F23VvAPt+qVdKouSYv2zdqwcCynYepdqM61VZo21hB1bn3nm5aazNHjm5aawWLcshaVlgKrA90ztK6dKe+b59zz5pI4chITikeJBaKVmVBUe9RY5ZVqVNYa/dY2m8qQHCksnwCmUlFsUVvF4K4Ja90wk2mUg8u4pLAGUkDAyyx78+cByYBixddLDiqtzjhNHE7C8ImdZWTRqK/Yc1KflHLs9MkuIF1DmrCu7V0uRdb3TqoqsQq7qxgw2RcYp9OsIayqp3Cx51zUwrOSqJzS9JrkHoURAXcW6hBUqvfV//qwOxvBwSajybLX1AXhqOo44lN56ah6stvma8t3vlFmO/jbAqoDXbyU86ffUL/k33nM/IbGYpYH+nBoQVLdayU3uVXLbz9rGhq1UAzqr5ojSj9XONWvUIuukwlLOXtZTHVUs9Sp1R7ueYhWYbyoSjK3UmTGzWlRYixrTDKzOrFLpuMoToQpsSZgcA0tukWkFgIQq8QhgQajYOM6ZZHvuJRygWQTEIgOfv1Qw680QYVDSUJyWPDtHuzLj9hSWXq2gCbC8pQ3AUrsjYBEYClKRWVlkKXd0igq9ivBAYS33rD+gleWVtpnQ8uY9u13f03sSUnf93u9fPHFRnKxlSOjlOCNlNGirOWDcCyGttgBTat2iKncJUrpyYwNY8qMrsDaxIWzatMpH44zwkxPMJhC21w73JaxJWK8Drfq+hNjtmh8UqvR7qpdYNbAkr3o8WKdCSYZwD8iih9XHG2YFcm2Y1QPDY2BZYSGyWvRXa8uwSLUoLNMqDEptrE4rOLVFVfWwis66GgqrY6td1SpoRTzVRZawpSPHwBKtBB0AZE6ZVmRaRWxFWukh8r8OgKULRgwtWfsXo+HEbcy4py8qzkbYG8fATk+yByyZbgo5EVlud6ew5sBQtHJgeLyWkFrJ54eEy0J9ctyztpK8eviWPjN2aVPcJ+P1II9UVok82aXISu57XEsYd/o6xFaLHBFiMZCMs40Gli5AgMXFS6+mI4Sc0b2awTcfMa2K0OvtgFY7IWFQWIlWR+FeVFOBUElk6bd64NHr/M78nnEVNMAK2OpSq9OqKa+uwo5drY3U6jrrIK1Bnxt7WMNWH/KqMSsFgPosJmEFquh1eWvQffdGqxgVZse9i6ymsM4A1owqx4PWVjK2m3VV3SsYd47Cuu/RayoXsVfbq25DPfbFcOHmBC+9D8fAUsj5ls+87J1+mDGkFP2dKqw4Y4gBv1BYYQm0IKVpynMU1jJldFZYEVjSVqIVG6MuqaSvBCaL9lI3SqLTxW2JrNnJWiY6RFTFgFFPUlXY6HdBFjSaEYOZpYtXSkpmDpxy07UskKUJRx4b3bH5CK9BGIr9XYWE3dV6HRSWHfde6ErA4ncWsPR7OhVLUaGstebQB6ve8WCPE5vJhbe1CRWD5orGVowQj4FVS2K1+UGb7tZZMR50YRBdtDOwKqRKDOWB95fXxlybqLDbPY6zcLIkr5SsoMm1H/2ZD++lNUg6tcm+bQAoYEEoKigwNrBiPHhSYQlY2tj1uBihahmWN6Hv6AOtYjlDnaBAeykxiDrZVNHbKbLFqWbu9oClRymP4SA/i8Aw0sq++5zmDq3YAvpYYZlZB/LKeQzQqsirfbu92CBX5Sv8YC20Ig99aJ2QxTKd2PZYJjx1h/62xrUVZnUtVgbEkovQcpvShcgCWJg5NEQWyiMCy2zaw2I5oZv9QO1YWDFx2RRWkVGbf9zs63KqrDpXW0G4pLACs/Q76yuFXxVg4btjY7l4BUsR3TdjK+msQKtNqBiL+XkasRtbB2sJ9W0mWinDOKYvjMCwlB6tjlW32Ivd3usZHTALVDkedDAFuZgojDorRoXHIaHjOyQVVGKbnHnAceYHVVYBhaVYTHlSB6Y7wIrbahhe3jyR7TZ8TtvqtdeJVjQtWsnh2AOWzB29FTBLOktNrxCFpX5PYQlJBxmYzBjGeHCZO4rjHvfOOQdYyW534hXaCuvKtCp2+052u16krnN95PQZO/DjdZeIpiY/68GnbglYM7OWMSO6LPYHoixia86ZwIOPwHI8aOWRgHWOg2Zh5ZOPsSU+FA/LURsrB5uqoiAgHhbMuiNozczqCkseFqY7v7M4xUQhk6/jp9ZqYbwL21Bxuy2YpxTnLNNOrqi2joGlHNGUhxXh1SYKSbYK5GqOVZdaFlZDXlX3SpcltBoiK+VhYWN1D6vUaH/mW8cKS+hRA1jWU7BpxhYZWGDO9RWOPawIrIakvhO1t7A2rdgWe9ys1aVL1enqRe4BSzkuej8//vgVi/IAll4qm57uAUs82st3RXlJgnmK8EBemVbsTngArOPSV3u0UjwoVbJkq74gBSDWOeuTHwUjy/pYyaD3TbTSaXBKH8KksI5vAimwdWZLwGK2cQ4J7WQFhVWEWMyWOMZWCgaPsSVE6IRmuiOy3G+Mp7u4caiwFPcZWPqd8d2pg6wvEzIbGqGqWou0WpAr7r1qCZayTKvOok6WnmGvOETxC6o3T2CYYsOtB9+KQ27INZlZTVuhsLrOOpE1eiceVgwJTStiwLkJAboLhUUTsxSFaZXfscIqVU+3u5nFTaoLpGp77OqWtFjpqYJfhZVQpVxc2cb6mx4AS9JVaUpiltRK2bz6vm95U0VVy1quMyVN9GRgGA0sVSucffe0Yf3yrRBuyMOK2kov1ZmiohV2O9pqyKsaD+5ZVHpD9HWIelKiAItk1bO4TxwXzsqn8aIsKqSMH9jyxl8asyP0UnOdA7I9hM3MqnKlFL/Ez0kKK4aEJ+PBmWIm14wway49aiis15NWBpyxFQypOk9Yfm0iYdhMSKiz9KdyNtZgVnDil/AaTvxWbZVJ1rCmh9QtPcPB0hxdXSVpqxaigVkzuZw4OtLcXeiWHPetqxVplRQWG807JCRRoNntdZPBY4WldTb212dCUQ1Z59jPYqmzW4sKH7m1J+L0t8B0j8DyHrEaIKkEKTXhSaB3X1Gl5BItLSgJwAfAkgDRdasLW8zSamHqO0tnlVf7wcslsCRGvM75IDDUXcdThIlW+qF7CksVR6NvFZPaCQkXwWBNv5LCWtrtxINyuIQqehrT0/QCk94W9lJlwNjNIIsDU+yO5NhxyRoxiJQFEq8AFo2rmLQG8hjODAZnuz168PFe0dPJ92+MwkqibMp0Z6Iw+e6CJvnu/C1B2568Old2TTmoes4DYDn11ImmFVgDXmmBzmZpzhQkOrlBzFJdEchFPKgeWtF79+ZN7mjN1TxIa5DCErDYyMumVduC8P2PeLMc7mrxYAdWoZUMoweua4buTIUFqrCuiobqwgpaiVCxMdEBrViEsKewGrCkT7/xqt4lMUvAksjiFeq3WBrSUlgkW50MDPeq95lWTnMvym41xSHwKffiAFibDehtYNVkUbm0MdbTU1HMWsfZikJEoxUe6SNUqTSOdE4lVEVsHYzRX27nxJKRXMWVbxkPxVAmISnJq5g4eqfASmhDXqGkLKygFXe9wQprjiV77ijJ7qSfOd9dCzIVHvoLU5/vuETzfHK11YUOFWPqfCXgQUhY1GyoVtq2AmvAOhtbVXClDNJovVtnRVqZWXfkYdluF5Ikprz/ILsQcnOmFStyRCvNEgpY5ygswsAWAEKrGgCyGQeoqpQvErUs5+za1ovVj4GFiEBkCVhloXVt+qWWIWEspnwQGOqxpXr9qtDoLK8ErAMPK80MRpHlkDCuxRGINZ/A/g7qWTysI2U/+trqRqqlkffgXncBLAWYOl+P0jWiZ5ORhGgyoc6nmGUXFljs5znHOY2rLklsgVFMwoJWenkszZnlVcrFn1PzDSkN9HMRVuyuaEgxlflGelhL22ubPiqRxW8bfXfZWFHhU2Tm7qRWyOfqC336V/2BwvK+OyMTorpaYx/Dug9YChX5k7Nwx+ufl+nvTBcWtVXX6KCziuZ6+kIOTlumIxuLNPcaEp5UWE62IgA0syKwdI4dd0x3uVfkNGhV4DnAMqoIAI0q06pxCknFEoUukPkLHnhYJSSs4kLXLdOFOFnqpSIPFJaxdbDeUHdRX1S93hzSGhKt2MtrT2HpGdgXZy+bgZBQcDG5NHbTL6W/ePmjVzyR90DGQ2uBXBAqrnrRNcLCWwFLl3EClkPFOPDeq2kAtpLzNbv4Tkl1+qiuJuHDC1Qis+y478mrCCmQNAsraAWhLKnQWVFwvVEKq4RyMbkh8osPb3ey9JfAd8fGkqRKNNFnRYJId70WbDHPSMbWcUhYSrv2PSxG3qlUMQsSS9nS4XB1cl3lOJFcU3IgejZ8FFxEiGoGFlILZp2vsH78l+4vOQo1HkyoMq1GPZlqt2NjKdSCVqxbPpiI1DptKSnkVRNT32luOob6tduvXC/lMZpXFTlVv5XHvz1g6a9PsTrLq6iwVGriJLBOBoYKG9niDFrhjpF4RS+Csy/O8q3QC5hDQsNLiBGw6D3wpKEMeI81wJJ3rpaBJT0luOiiFRR0UdCYSed7nfV6Ujp4W7QlrWarK8WMMAvnHngV1yykd22ApfnB+od0ymiilW4qVNQpB/Jqj1nwyMLKzGKAzkJYobDUv/4eVqNVXTZYqbXoG32u2ipofHfJKwFr+bGW7JKilsnljz8Xw/lxos/Uow5CwvS0bRk2CROhtTyJirbrNYSUChO/7JhabUVsjThREUHNLEVqGVtmVllUWEWWjuxVUCoFQ5Q4WvdJTcwiHjSzmrzaulcSL+LCMbAw3QGW+hH63W6c2qiq7Z9jC6sjhaWaJ3pvddno3UBeuZUqER9feFj63cUg6r67+vvxjKFOE6RgluWV3j20FfLqAFgSOCKUyvjMUiuSizjR8Ip+POIL2WXfikgQA0sE0dehfHdzysa2l4UIDFFkHQBradInckXBlTJRmxSqSwvtXs2LckRV5gfJZkgN4jg91Z561Fn2p7jX8CI2jArrDfSwjpkVP8piEOrXwDqo765J3/LuVAhCq7k/ibADhaXn18WjL/w7app+Vtyqzxm7RoMt13sYcaJ3zYz2loKgHiE6NpSJI2CpPwdYlLsSkmyxm1YAC1qpuTwDyZlFYT3QyjAch4RCleLBQqvvXKoVSXV1VVQV9X/6Ys/4zs+00pG9ryL2X9EFo3dAv7UCYQNLPFU+wVJhEQyaWZTuOwgMBd8kr0i8glmuJjq/FeRD6WVIZDnTXeSCXylOjCt1rLwc4sn94ArXL5s8rLKv6jfa3qgx6cfMam7vMxeCmqNCqMRj6eeGEFsa81FhrYFVKj2UAB/HOTrudq+EmCSvYgI9GIrMAkkcQUYxRkmZUJZUHHdg+C9TYfGxlgGvC9757oLFcf2jaGwtyXXMrAOFxQTlXTQ9sFUrrTqrOFwXLV2+2VsOEnt1h5QZH6VW87OqyLo7hQWqZoWlK7PZ7Z+p+0dUkXUcEspq1Hz1E7dfKQFgjf4IAJn7s0vFe378by8kZFdhvVFMEdq/A1vHCkvAisw6njEs+27UWn2zwvKeg5ow5QNASWvdFKpIwqIhsuIaHY2VihF1lsQU5RkI5RzfcZMCDAir6LuDFWl2cp2ivHJUqLhM77mjQk8ppsESW3NgyJGU/UCKKRC5uCx/VpbjpAXPvCR9PPRHn+WV8+b9VHDK2iqJLN802qK2cjVBndYy3V/fPKzzFVZjlkKqGhLSn6zKqG9LhXU608A6X20dKKyDtWkn79Jr1nutT5t6dFbEVqlXsy2nhbfVsCWdtXW1SmZWFVlKgDgICeVhSSBYYdnGimrLHpZFluQVpjsh4QET9T4/cO154anRqidVoapOSqrErwOFpacq70adf9BvrdAJWh0oLFAVG4LreMZQk4D4VrxvVlhCEkdECt5VIYw0UbeosCK5BCZohekuBkU3Cki5lcWzF7d1QqQVgSHAKvc+dQscJGZ1672cg8gymJhY3NNZeyJrTncI7lXJbtc/QlQDyzkNejGKLfQhoGCWg0GHgQyiwnLQ55nBdIQY0BOC8V5c+Wa6R1rF1Tl3keJu02rPvXJAlz7NZLqzRufMOme6nBQ/+ot9yawYM1oFvI7bIBpkApZmEgEWrWErSK3BrB4eWmfhwduJl/uuJq2hC/h4llDo4fIjKozMYsxxB4ZgS8xq8uqh5/Uj9phILYEyC9FVFcIqGoKndNW4/0Bh6TkBlpmFzjpWWMpijwrL4wOFrj+ThKeQxHultYRwyi1t78xNoYpenFJvkRWjQme6CxwSKb7OfbUz0HEVESXTyvLKyQ1Ehbr+qXA5iywd0V9EH7MosloOV2eWb87zhkv33cHgoFW1rvSXY9nvMhgsq+hq3bqZVlZSXAgzthwVgqfY+6aDRMsr1sO8KRRWUZUXFwLWge++p3FEtyi19rwtjgO1M4F4UlXFEwBW2cBVf6SyAWIhV0s6rczapD70olrtKlXxrJoz6XlDgCWtoYytY9O9JFh+6CnnjjJdiKqCU3Hgau7lCnzgOeFAUJC4OwCW3lu9aX3y4Y5VVcTZAbAw3eObQDbWHSksgCWKzYEhUZ7El5pElgs2UFhGbxHksuBixhBIUc199qowsPDgsauKvKprcfTXN3HiTJ/MKV2r+iRsgNUT4gGN3gfxKOqaiC0ssGi9Ryrt2VhLDyvJK9NKLx5tFWnlhTgaIPTKMr6a+x61VSQUwWB0rACZcxeiB5+SsEhoMLywsd5cCkvKznVmZGmdjApT9nBM1zpm1rGHdUeQmoFVJg0LsJrOKoGhihn1ejUy4J2u5YyHFhh2YJU8nbqqDmAdyB9dgUUX1Lp9DgyNp6itosjiIVJYxb16qOzco4VEe4vdpLD4MrhrVXUmsF7YAktvAr++eLo03ZklRGFZZ3lAYGhC6UxBSgsJwZPzG1BYs87CtFITX7wSRcaTYMT6QXPKM4bs6FVLId8s2uepWwgTaEUPa2SZS+YULfnkRfKwYlRIfsMcFWK9FwrUJNKU3LDUVtBqZlZMvzrWVjOtxKl5ZtC0MqcSrfCn9twrx4POdUg2lm6+iRSWgI2BhcjSWF/Ix+57Wt2u85cefOLXscLSJXp3TQZtyZKvwGIShKgQJ4sqt83JqkslDCznPTu30LQ6CSyFNtIC0AqRFZfjJGahthBZEg7yiQk5Bay9qNPAursY8HwPSwoLsem4+BhY+tNHVKWx8ITaEqQQU87A4v3xEY1jMCiISyuZNc6HEiN0zQujpCkktaV30vJKyBBK2GPFKVRmVlnMXA0sKyxnt5s1ulefFgGB9bYpKgR8ZdOHGhUmJ4unTY773vzgIhKsRUf1t5aV7kgweu1N31VapawrOyGzqlp67THB3ZoLSWW7ypOGHH9zKawILBZC659mDO8ofGPTnbtWWGxje2bzFAGQ1aMUEtJKPFj6Da34eLVtLEKKQ7pQERdcrieBhVyCVupNqGi6xzGroKmhTjyodhB1JmD5jT3wrVIiWyTdcUio98HIRmOWXP8vfGuZ6e48rNl6N6r0i5fyDD//e2gro6rs6FVt9Wiikz+lS10sSJN67JZSgXWTCQEDi8lBKMZOE/oTR3Fk4tgvj0uavQRHlCGaI5lT54hH0nRL613PqYiMqHAWWdDqy98okeleNkOsqBVc9itKAzgajWsGnQjGZMucI+oA0Ka7LXPHjGmQrHcrrOheOZsBefUmUli6BvDdLbJ8VdxRhChmHeusA4UlYLW5gjlTn3mxvuKEfO64T2LRVjUPvi3iqQUeW0jY5VVjVpVXFlkorLh0Q9eqPv0yRE4CSxeep7dsVy1pJVTpOMByKXdv23WQh0VIGL8Gjl12G4XzN8cBsDQ3DrCIiKG2Ila9Qv2OCG18KDFU4R5R3gGtBCmaOSVkMAlo7SAiiBQuv6f3XFc4y/JjM7BY3Kfz4ZRTGYgHKYWsP3qyn/xUlkV7SepOMtDnRB8kfbpcQD3pLP0KSi7HekdkiVCG1AGtQJWDwUirEvVfXUkb8oJNq5hRIVYl3yrGEylxgQAwNXtYNrA84Hwni8YBltabS2FF310XCaVH/Y9CDmcaWydjw9OZ7rDJa+L6hmtts7ax91GNAZuw0gBatVq0DgaH4x7WzbeQsK+DjfGgaVW+t/en8PCwSo5CMN33tBXHBSzFg0wResf547WEEVjHqIr3Jlpxcy+tQcm6AlaKB5XVISIIx4KpvkhMKDGIElfw6FhhQSjWuNB7gOTRBS/d5IUyB8DSdV5mMCuwosiK8koP12cAuz26V8l4Yh3MHKl5cQwcsdiJtVwcZpZJuttNZMU8UpNLg4MfodeQaKV0SPK/Iq2Au36oaFvmXvaXNy9pFe2qGV4oLOssVt7Eg6gqx4lg680yS1ic3ctLKywvHoyXge49JyNBV3KsAhgFwvEsIQoLjUCCb2VWG4+dENm5qG3PU5cZVlS1YLDGg8m9Gkuj7V717OSlvNKFQfQhoXGch8XElkLCY1T9YK02Q9mGsm6uAqss2XukbDi4V17GIeH5qDqIx/cUloClhU0Ch5YBfeKxW2rQSiEb+1crgNVrRiQqxFOFLPypmVZWVbh7rINJIV7Elq5DXe2lzEv1yzWeFRa40X584hHLa8wsBtjtklfRbnc0x49r5aLqfn/107JorbBnzWxi9Sv1p/asd13t1G/YI2AEViqsHGlVQryLkUiRtJVegPccnKGTEhdwb2dV5SMJUr6JnorNasvyapjub4Y8rPJBD747NlYL7vqAc9hy9Xg6T+jxwkPbKCfzsAqwGq3GPmNjC1zKAbITZNtdsplWBINMDkpYlb4a7dZWDgaZS06Oe4oHbWCdVFhUHHUe1owtcQpU0RQPUqrB63LYIfUgJOTD2v4S53HLJ/udP6iHxXIrMUu0KhvKqkj0Q4VWShrQDmZiljdbZEoBYKmxWNLNMaBnA6XOFLiJI5Y8e7EeaZxqCViOhgAWCovFQwSGQV7dJJsBu93zgxZEpebXM88qCKW+qJuPMFCvN1wD9Yz3okJSuvQO42TZzFqqqiWtgIieQSBwEkb0rRChij1L9LOqzBfZFPOtIrBmkRXt9nimY0BQFUtiefzm8rD0vniiUGIK4ljyGDc6qMUcB1u5wbJNqeVtruNBeRl+XK2OUvqoqtqukANVXViFnUicLMq0YMq9iqgiKXmWVxhYOO4nFZaAZYWVlhMmweVlOlZYJI6q19KcA4XFupk7AhaAi+57WXJ4WcrJ6u+iLxtByvWhdE3qStZ2HioLAa3UIq3YpJpNYUsKwi/dr99F15LOKTjbUZc6znoavZnMeZkjyZ9iGwgsav29ksJiVk7AInnKytc6y9kMMbt9ntqLPzTe68gx5UAk5C3nCtlZizk4RNYcaXJwrxIDvINWyWKHVgJHpdW5lRhmeTU76zEMtKSynuKI1w9GzTVCwtdXYTk/Htws+72v6tl3Lx99nqQ+xlfCXIgmaS5dEj6/fdXXV6aDBx4WCUcbVcVGtZ1TreZMjwGLBq4TgjG13UkMUVjFxCtndSfjJs4PAqzTawmrwkJbnQwMSWsgyEJkERseAEtAOQmshLMhrET8y0tpE1GPHUYQUzqizT60jlpFtYQqGsDSzmZ6Yd7LWgOBSegpIV6vsgJ6pC+kcfS7QGq0pOUkqpOaMCWUC8In6SyeSuJIps8MLE4WsHTNL4GF/6Wkqpjdvje7l/AUfa4ZScdHeFWSP54unJm1pJWZoj+T9EGi1cYjk61Vv2mWlRjSJOCBXXXArHjXHBX6CKh6A2cJ73RdjvnlfHcSBaBV/LqOzNIJBzpL3+QULJ1DwmOFNXYMqwGgo7/mr9tlJ9mqBoAWViRbNWHVLfaTqCLBPdGKtEn1x5nurIwzs/acLBQWp7H+Wcyi4ujxrjlSHHvA8hvrPx+zqGw1zsdLbJKAojVIvXyp7bW/+vzLWqWoJlSpF60isPSq1IQqIUwsiPoIQ0rXlVwnfC4S0HC4PLdA9oYy1PUkeg+lbY8DQ11vRPEKxEy0GBIaWNHG0ssjWdR2+2th0J0yS+9DWQtdU/8cGBpSe9rKkaB9q2haOcFVVx202ttRwoQ6H1VxEjBJqnNo9UZ5WMe0sjMVP+WIsiI+L5rvzt5fjVadWQk9+FkHyaX6Vq/6rjPrPIVVgLWVVEVVNZe0Out95U101uPeAbv5VnUJjtYPppWDkVY2sESrcxQWNfnOVFiY7gCrbaeqGcNHSurA3l6teg9rjJw1sd4lihrqzalfwpeGlP5w4tTcgJR2LaRnIOsKhaXNDbXSW791nb4sCQ2KDfXO6Bxq2pkjAEuySLzAmNcvpV9NTRuvMvCvKWCJa6rhIxIdB4Zs1G5gRUFn012ULGWLv1Y8LOq4z3b77JHfKYnOPB+RVXZ4r5VI7b5HZqXsUNNKF1pcrhiXNFPBybSajfals743CZiOR5f9eIdnx4b2s97AWcJzmOXIsckoqHR15YnCsoqtH8yoCq7KgcgSzsYzMOVXr7sDhaWKo2U3MH+xjKyFzQa5LpEsseDqV6NoX7DVW1WGrWOVFjlbWyGpyOekYsGBI04BPyusPQ8rmu7tSq6lR+NW9XvAEsUErBfYHi38E6H0i4MkYUjqKeLJ6gkNpZs+goyKVYB1yalejWJD8evXnm0hIQpLzNKMoSK1BBoMF0m/EkJ+oUS4bCILqv7sb1xXKxua1d+RJZM6U38IambOISFH9IT6eOwpLFxtgBW3ILS8mrPbUwwbsysOxkjIlIqxB8H2suuS+5lZBIlMCFoHFXO2L67e01YkW83ZoTEMPE5Z2OPU0sDak1c4WY4H/yUorPihjyiJxyOw9L29RFUMRg4K/ukuQsJROPSUh6UrE2DVZIWmp3LyOvvo9ElAtBWqKkd/SKpgrs8lGSypMNpNK/K8j4FVZv26wpqjwogqj7mqvWW0AkMpLF3ze7OuWmZYuFPnrailoUaIB4li00GdrCCOEE9N0oa4T7vsiFMszdNl5stS3/OqXaPtHbWqUZIKVBGrCkYClp5tqbD0ksQOrHeY5a1kvf0iwFJj1aQDw5hz4NfDTgr6NaP/bQ+rAUvF1yuzRl32x28CBfIPolmusYig45SovKPeJ2vg+u5L652Cn0SFatFfZ7zJZa8rb8i3irTy/lUntVXKt1rqryWtOBgV1vlRIY/67imszKn5dvCqPFHIzvUngSUJsHexkUEa8z9P7kuIaWVU9V1zXHphUwd5ZFedjSrKiiKp9oQV2op2cufnCCxglGwsW9EMYsT0l3/nouxW/8gtedspspYDyF4vulqkHRS4CRB2o1BV9MgomuAiQolTooPiO/as17ZgqlZ6vZfDjmJB41J+86rsewatHKtqYA9rBhYKS6/KwLLOAlul1P0/eZLdrQv7vlZyJsRN6TVsGssfu046qN9UNvbMHdYbtyJWm80jmns1F1cAytVjOtpvGdAse1/hNehrNT9nZpH1jvVOs/tuWvEjWLHsanx6KjNLr7Ys96mbO7etm1d56sloP6aVXnYkVByX36gntS/lVcxpSBOFr3/F0dN4SmeEdTDii16rUOUFetF33wSPPSrUyXs2ltRBARbrCXo7DgmLKVMTQSuqWgqoV9gQAOKs26g6qNq+51WZVsSACCtxqqiqOq/P4JyQsEz5q1h73Z0QKycCa5Op1CfRdA6XNL67JgolUrTeBUhpClXv27u/9JiucFSSuKAmGNEEJmhlTnmmTwMVq9HiRDWtqS7bYr9cNuMo9f9qDiSkcNNNgMX8oF4MGQxWRrPpDggMrLJW+beedIqppVYJEiuw6qxCeXK9pcKo/nBpxjCqLT2trmend5tlAEt/8bpWuWwmGEvuyUKay1dhMClSjigxU5YDr8JrE3ltQ8BW7AXQLLPedZdFFnJvtq6ob+WtqhKtoF7NYKhphvu0OkdS+RzrKR0xoeL4wGvfA9kbkul+FrPier2gsBQGQqtzfHe9xTpzT2EREo5cqjN2fi7vNUX4+uplaOV9caKq2uRVhfKhyVZPVa6SsPJsoJkVK5qf9LC0zgZgiUERWBJT0IqBe4sskkjlgqnJwypzatU2oi4zOZxq0MpZnZCrOVM3u3939arqvoMnaCVsCVgwS8BSIrsuXYMgAksXmx6rH0okyO+CztIRgHWgsGSoi62JWRKMeji5EWoAS18A8sgk+vSts+QL5IIISQYCLJLdvX8Ea4x1nO1Fk80Ei7HDnczJuhnVbBj9tEYnze6BNp5n/im81CKOKmjMQb0kj8GfeCUp4Lz5lM4uhVi/2get7pRZ8fz5saKPgXXSa1/KK7yITeLo61sl+QSzZlr1mUJ8d4usZnXF7ASfWR10Oet7wCJ3dLOkprr4B3lYdXf1IKwub9tWb15V3b+rJazvF2iPXtUMLF2fcTYQZllYMWbpzDGwfG3H7VQtssypSC5rLiVhQis10YprXhEW2kpNekR4Sr0iPl3zwpBkUXkftD+FwuGXC5vULK8+9a1vm1Y64XqtAZDkFReb1IrONLAki/xLLdMaZoWlF2w2zQNopfaeJ5/8xWeKZpSbRmCYUhB8M6EHrYRsYV0x3FETXKTH7eUbxHbxdW9L5nzqlux8PZYV13qseh+BX5vWEz5RTBBn9p6cNkX2iZ2sqOAIBv3wqK3MO10WGO2WV8fAIqZDSTFwH29aYS1jwJPkWk4ULhTWa6+SfFphJQBtM9pjvvuLl2XLs80Teq1fBdZyhRoZ1WRpFx+ddX91Dl5HDmYJy9fRVSm5VwvvbbQVWw3OtBrrbHrWQkwH9RZeybeifIpddrz2Eg9Wo53qemykerBpoEBTVEmN79TjT5XZ/S6vWMWSmphFVdLILLBFoqZ+rkItgUBXiK5Vojb94iKLxKOlU4KUfCi1qLCQV4Ka3tJ5YwUyyBVa6lECiiJTyaICrJ51YYW1N0so2KGwyIyfG6iCVmpSWIgs5azGSb3jNAKABQu8zFiiyShZ6jUd1IetyatKK0uz5QDtptPUBr96krqeR5/hOCEQXzNW4BJYMEV3+QsjzQzqeVh9Ba2ceFUmyncCQzy11nfGgSSDaeNY1bw8PQQAncmpFBJ6rnAA6+4U1l3QjZSebE4FhAlYKCz77m3Lg6qPiidVe55hr4QDK5kbqnr+p66cE8DqOwyKWTFloUaCSndcFLRa7H/Td5RAW1EyBa/dOw+6QF2cHDS2SEc6B1gsDPa8vhiEhlqiKi7BA1gKBi2yBCxdmTSiD8sZRUPSngIQ2ynSYBOtRJG1EQ8SEhIk6oFR0cR4UFe1TuCXdUgoZuk3oojzOR4WwEo6qxzc0krySrT6yIt/8MmLFzQPoCzWZd30GV4Ai8UMeh/0SaBX06fLS3kSQUjpLFn+CvpqDLgHrMQyyy4LLib7UDEsLUxOljWgk0gFOC/u00Fd/ASD65nBejUZWANbgCm2eiSdaV1mWoEkmMU4xoN3Cqy4kFBPdaSwEozmFTzKOrizf2RaPVMKio7E0SkZXS/LwGr57v2cVkShJlXp33FOA/LK2opkBT3wQGHJsdIFFh0rxrm6cQ8GN5vf9CSG2WuHVnF+UJdi4VffMBVUxdYixMOt6iW+RBw1KyZHfLOq8pphPcqoIhjUBV9cqm1hg2SN622RzoJZxha0kkQysGCWbSw9RGlcaQWvUSiZQzyI4468AlhxlvBAYeldEpuglXvTCmEV5RXAQmTJiUt21VJqgQN9JmVrkn0mfJTPSQjTEq0IIXXFOh5EPZlZwlzkFzd9AjpLDWbpScoXhn5c3355md9g6z3O5RFSULw00Yrf3ft06VpekuhOD0ad9Vo4leJBY2tXYZlWW04VQMGp1t8RsSpl9PbpvWMKuWqm9s8ZDPjuYhbYQl4NVPXHHKS5UxelbPeinako4lPNqZPAkrB6SiFhcNkbqvrGgsloz8Da5rKLUGk/+iiyzCz5RNJZOEcJWzKDYv1iKth5yzzQk1oqYzDf1DQiW0abVgqslPGkK8T2drokmPIXeso64cosx4OWWoSEbjqut04PYXor2djEg3r3dD6VuZgidEiom+d4WNR1sLxiIPxpIE7R414RD6oJWEq2+MrVC0pYPScwdEh47eoV6TKWYalJXs0zCbA1FqtCYSGyKMkQsRUpxth9BBbhpxYhLw1+W1FAJ07k6cKJD0nxoP4E8QJscU/Iyo4Jj3Hsa9YPwbDHAiNadEyXRNY5M4NzqQYc943CEpj8r/Joc0DvhVu16CqzQn8muPQbYlIyOa3vXkXX+pU22Nr67uSP1AoK5UuGU/WZOCgyQ0KDVyyzggRgafL2QGFdv32pa+xab6q2SRPF1EsvxFYs5+46E/7QiIbiXGEkl5jFVqk6GPem17jM0AlbdZJOYwwaTRGQEqUlykznYV0RCbqMAdjCn6KXk6U+JjogrLyboYEFGpSUsKyO4pQlveclMqqxYfSzHCES+Upe6XfXO6M3zRUskyGtv74EnU6L8WBUWGQkiONzrQXMe80eCrLRw9J7hcWOwtqTVwKW2hcvX1R6vRLu9uq3xBdcPCzNGl+9IluzrIi8dSm1lXKaIuLlCjmboRVRCMyygIpsSuOksBwV4p2naQFb76xUN7C4cHz+HA/qLuHsdWlCSWZWsLTMrLuLByO/Wh7WFk/p1kBVY9bd0grWxIwS3nqcXX009WsDcmwsmvLZItEp43ewhFCXt5Y9V3lVk6rcToWE7M/6ujTxRb+RrupW6+qZl2FWFFwlu1Ibpn6z7ARBSKWb5pSUgq4lJu9QDdFUBlue5osiC99dWQ5uuskehQSP0lZY7HFysCy4e/ym5EAUWXEeDT9L9+oLhkWUsJtZQrciSK9KnpouuVh70xcVz1Pcqxvf0a9c7PZHnn/LQzeUxSpgxSR1/b6K+NLi5zhLSJ0/HHdqPMzWVYwH7WGJVmpysvT9pNd5HBg2haUPz+2CKpj1gjZqXFXX41fj0sVFYtGSY8PmTHXZxU2LqXmukJDQK2x0aeCaLb02rHdnfpY06Z6vm2iFR0kivvrl4Pje+EC9mFahMIisaGAle0tXp8ml8Tmay+ecBFanVY0BkTl3qbA6dVBYTK/S/B3OCgadoKvCUSHFSRQAyrESCI630hF06npdRYKtKGiUV8cK6673+Fo+UCrvS68WSHlXZ+UEFA/+mZcZqDVm1WBQ1x56YW5p/outvaStgA6NbABEymg1OQtCEQaqobBUs8XMYoWwWsmxqteDUxDmOX6wpWtDfyOdr0iH1Tka6LFauSJVhWzxYz02bsiJZ3IQ9wpataTWnju6BywUFmsJ1aCVwBeTGBKqTCsrLEWFX726KfTsaRZDtims26/I+aLmBODghPQxpq6ecAawyIcwtoCX3q6WnEU2Q+TXdgytnFelhCzxyOlUs3dWlU6pIKoXUCamKrD4Q8weVkzsin8s/17zweURHQRYNsISoeaocJZaklGC18wvB4Mw6wBYNSokEJva3cSDAVjQfW62Y/UuO3dUV/6Z+325OHKZ2mjyamCrJFgdmu6vO7AUFnkOsU2uVVqxEz3LgIWnPU4la4YKnFCG+lByynGduWKJE1mPgm9tnHmvPQ/EL5jlDCy9DL0ecQcJzPpbq4849kpALgNPLOpmXLvrC95PAgdL9mkNBpkZtLZyWgahbqlm9dDz0n0YQ14PzJPouN5GaEVzjmiMB5N7helOSKgmZok+ivUOZgytsHSaoshy/u1XpN+jk837wKdaF1gpZVG9JFcQliaN8MJHB2RzQZh0hDN5uJ4zxSiJWaSA4iVFYCX3yjfjIJJ3Ph7RbJ3BwMAaDn3VTTESTMxaCisOxrvSFOEAlk7K/4DUill3rLC2Za1QWOndSV9T+gARDyo2lLA6B1jKbyjlGVxroc8PjpDwlIf1ugNLCqvoqVqtnCb1IU6V/otPqxdr6CEXYzdiHDUSDvgMcfFz0cp1Ys1wvG516RJFQiJaAha0iiKLucLCrK89ry98/Y2gD18hbjF68sEIqXS+MWdtBa1YOQhb0VZ/8kOP08jFRzASqAIsM9TA0kv1Yum6KLIoLETWTz/9olAVaSVUmVYGFk6WRNZBYDiAdbsBS+cnu91RAkGZTsDzktWF51Vsr86s5bocp0qkgbRVWhIoDJH1vowKdeHUy7Mw60BhLQWXhVW616iKP9HM4iNxoLCSmEJGpYOAyahKFRocD7ZM94WBtU+rZVR45Lg77TP45THpeSYXb5BKUwKsc4q4K1TUArdmtFMdVL0+N9spwu9OSMhcnoShPr5ikBuQUtPl6n7mlI6QNaooRvNZusJ9rUZG6F2SGsL2Ksz62jWlm1Kxk0CJhcF72BIEmSi0yIrMksGkkAc/K2GLD2iM8vw5TgdNK55E15LiOMXI0EoZZESCP/yp50Uo0wpgaeUQwNKvv6ewrNEAn4wwgCVaqTE56PSrBKwossSsi/3AEGC5RKoUluZt4hLieBljexdU9TaAZcO+Ky/rrz2WRVSRWkU2lv7NmQrGDa8hAWtPYe2FivG44Zh0mc/JCqvyCCo5NgQ6HNzzrXxcg8gsPXCT1iBgfTcVlt7QmJroT3nSmeKUbayDole6SxIMqz5lXWXT/Q1TWBCKUuXKvNfrQUxlVYW2qj2cAkxeuMfVJSuaXjCSRvPWnhYyhoiAJQXnTAieDTcKYHlg/x61JUhZXhVy1UTNFBuWmb7nX6YmzKyhUrg3CysgS9Mz6HnQg4jBtmb7k88yM2Bafe8vf92rHSWySoWZh2/Fp9KzKZlDvd7bCKy/9FBx7mEWwNKb+Q9e+kMatFoqLJwsRXnSRPE3jUFoApYYNKMcIgt8+posCRByuzC8rLBqVgT1PygDuVxIvAcvUu2dua6vk/gK7aXoICqvOs7DdE8SNcrVux7HByaFZQ0121KzvDLLDCbTyuTyXcPD2gSFUWGdERWeVljbkgx6N6V1dSnqzXW5n6gjeN9tY82JCAKEDgoNetnF7Uu0cr5oX5HTyjAU2VXSTUll0jOc3+tkzheY3Ewo8ISXHANAk2sEg3VFsSAlKlEOgfwg515qOY7Hcr50kfMuqXfjphIg7YiREtEW9NS1NZBLA6stsOVg0Aor6Szt3UBsqCdn5R0+erSoIj3j1RKP63yjStOIeORshKNpgYgqAUuo+r5feMyl2YkKsbH0o+fmAg8/+rs3aAlY9/zhpZk1AytGhWIWgaEoEN9kj/XrizU6Bw9LHF+epodLfIEqTuZ8wysqL0oY0fZK5SWiSZsUhVVm4gqPlq8BUY+8qpZOie73znwdj1vWFQFVHTQrLAd0Dgajkoq+VVJeKU7cmO6zhdWM9h3fHUKdm4cVFwPWcUxT0HuqV6ZfGH5xcUptaWAbC989ShjqkZK3xvqbuGDQ2oq0hllq6dOJM4rdUP34V3Saesay58t34JUysMoUvrKi9fIk+vSqxDv1GuuTQREoNTaqiqgCYdZZrmnHQBdMqRu1zREXqnSNiVZmFlWlyqK8mvDlRtK57iqJ5qRH9PoKDEp55born9AjAOkFx9gwTi+isJaxIepP2JLaKlWMn7zg0893THQxHI8wz6tzSprVkxflUTfKfGgsd0VtCdUFtW8lVLnZxtI55LvrsfyO0JlcEJLjTSspLETWjz31IiJLG8RGhfXr3/p2VFgRWF++uiWRJbgUnVUlkptuqmG36xyaz0wn6+ERVWZWhFdkVvmwQavQx6UwEVg+jrHdFqulVSJFUo2pun5mqBI+rSrhUjy/j1fuSDStPzROES5llONBR4XHtFpGjjsKC07FfjtReMe0CsxCqZZ/Iac2JY7qp1MYy43ZTfQU79Rmt4iwJVfFkzc6rQX5GrNGvnsLHl2YfJuxVWhV85jFI5FUMFKqBE1jmmBEr4Oxj4TSwz9Ti5e710CN5SzQKjHLtIrMYoaR/HJnmfO0pfWZR13JZSPSWnQcZqGwCAzZsuEAW6aYY0OZYnqU41aQAbwohqdGJgTU1s1CqFq3vqRuPNZ28XMYSLIr6QsxDEReWWTpLldGlRYjzYonwaQrqVudVuLUn3vgOQNLzHrrcy8DrJlZ4pQWD5DsroFMd9GK6UJItNFEQStxgvp4pk9mwMP9PAtg1ZSIEhhWh+v6lT6QpdWPa23btXte1rdcH9PXfvSc6r43nRM4G7B6NpI1V57035zAs7GwJD7zCKLG9RskS6NVkFcxuypqq+RhmVkH84bxqRqw7lRh3Vmme6fVWHq4deJb1n9HmG9KRmG9l/RRva2s0jxsS6k1mNVrH28SSquYKpqfHL9nngVScMqEipDyGFpx09vA6KJVUqIaWy3QGlwCrcysGAzCqRgVAjU1rzoez1mLvQCs1rx/MtjqIovAUFLLTjxee5RXtuHZIAtMuOmBkV9FwXVNByK9abOtNBDTYsCaqeCSEnu0ErOwsWAWYSPV+JyxEVH15x++IVqpVxOzJK9QWDBLUaFFFgoLWjVmVVTRhC39vaKGgjscibSCWSYXd8UW71rSjQjRUqthqyyx2JBL3jr8ooLCzCwivs6X0ysB91YLxuPODI8rW6yeODP2C5L2XCogFVEVHXff5clBgBWT2pX+nVYUbvKwMrMOFVaaK9z1sCqYTDeY7SMFTB1SBdu9BkMft8JYAIv0lrZjYBmUxVypVVoVSVV27uzuVfvW2rpaJda7dUkiciRUxNM8Np64q1UrV9qkCjm09mpBVV+gUxbcAaxSK6ppKw284C6uGV56WOTBs96lIElVEFR3WFKr9rTIr5hF4f1d7Gctpw5jeBgrN8RqxS4BCr/8PJ6OTAM0Gs9ANVRvEoG2EpJgE5GgFRYHHSqaWcwn0ggDxSmjCmCpASzRyiLLzBKwaGaWBp+/uqVmZg366K8ZMFSO37yMqDpnHGEX1ZZdrcKs20FqVYMitvbx7ts4EQnan2o32fHXplW7OaovcKlaba3FWiDRmaud19gSofRUcMqQnbAVWRYVlk2rekKhlZkF10ZaA7R6Q3z3ziwrzOh/ASwTahNphgU6ooPyG8AQOqv9GXbUVtdZV+UhXqPTZRSEEgSP8ZTuLduL9z1gKp7aukJqOaQVKqy2k9SCWVUcNZHleHAvJIwUK9nwtchUjAohIFh0eeISnSkWq6EZmV8tNvzi05469KThMjAsqU81FV7YQg25JXhxEySh1HzTZ7qmoFFlQ108+tO/9A2jKtEqMusHPnlNzWuMfuj+bwpYS1SZVmbWUmEJWCgsWgSWddYsoHxEQuwcVKVzrNEWTnxNQ9WiHyLEERtqfFuf3tqEmzLYBGh7Gd2FI9tQzpg7k0R3c1rE08SpiKQGso4wMLTy4De0ipOG+x4W2Vk7uaPnZGM1XxANdZQr3ypbWdyybYQeFW0sUaZ8UZQ/Xv1K2XhYVW1VNvk4jkBJdXn2ubsmFMXLVVSkrCAr7ntr8rz14XPlmaCwSiSoVqLCXoezx4NApxhY5zArlj2wgRULpdfyeFXN3fiOGqYS05SZWd3PMrAIDJ1capGFwoqswXJyz3oggyyOfRfV5cWpGVVmFlTaU1hRZMEsNdFKr0Q9wDpQWBZZkldq7735LQLDJLJEq6XI0p8PScUg9rhdPmgw+ThH0k1HlLO9NdRWxZYb4WH9hu7Aip/8cTUtDKw1y0LxghZLdr2WCLUXOZ4LshAJ7jxkhIqm1UpzwayiqpzccKiw7tB3H/5Uig8brdbfD0Nh5b9Bnf67vIq+ew8D+1KhuH9Xr82gXxJCOYfrTBmlHyTZ1bbYe7nmyyhxRrsn1IlCmoGlQacVwWCbv3M8WKo13GzBYFdYC1qlkiy+6ZJSCVX1B/nH1R9d9pcuS/lgFnN5bbniYyXp1E7TrLNiZinMsrwStrxQxqupyecUNQwjkMRNj/1AtsMwpDSIs4GOCg2vFA9+/8efVku0ErBglsPAFA/GqBBgCVVilmmVFJaZRWwoDYWfFcFEPOio0O57xFP072dmeXpxj1klNpyZ1SNEf/KTemo7QoVaJoFW2TUfd0V4HY5NHAeA9rZCxFfjzYvL52689NxzN7aQ6hFi3Wp3I6+46ZZubuNBM6sBK8aDu07Wa1tRuKtge8WYGhhuFy3WIxFYZWFngFT5/qlldw4IFR+eYsBIqJLd16ZsRnUHo6pY8lt5JVq5HmmnVcFHKjJD0SiKndeQcDArlutMY5vrTAjynGaiiwuO/Xv0c28UbMEsAkMyAGyEg62UVorxNOus6I4nbM03qWBDE55Sn2jFTUyrvUgQeSVU0RtYoMrAKoKrW1dxkGysyCyZ7lFkOSq8X0s+u5lF0EffpBamO8zqE4V34Wrx2OU0YtJZkVwlUDC2lItTw8MaagQe1Unzj3zsYx/56EfdPvqxj32Uf+X45i6ds7wef/UDH2h3XV7duPHSl7/y4Fd6Yxz7ZIoJZB/5yEd//Md/XNjirg/Xm41fLWbE2CrWUze56thHAsIMKdlYMfthM0u4O1d4Bq12FVYXXDvMal77iAe3PyvWbCi++1UhlAZRQ0ElzycuIcVBNJQeXlY5lOU7bQVPVeAVVWUasa4Cq6lYe9qKCirlw3ezbvnVVU9UWI1W1W8KNtaivrAtKhcXNqdmVFncQS64ic4CWG1Sss8bxhStmAqfwkMvq3aUB4Ocd55QFUkUx5ZUPHZuZIdGVWWLnfTRSKsDYO057hFYst4NLOssG1gaCFUoLDMLhWVs2XqPzLKbfg62YjJEnIVc2vCsrI5qq+QJMoHYLa3BrEoumzOiwzve8Y533XvvPffcQ3/Pvfe+q/yv/+Og7r3nHkdBhIc4Nvfdd5+eRCfceOmlrzz4oMYH/9I0okj01re+7V3vusfr/D7ykY90YG3W/g1mZVWVQ8UQMBZoceEXYB0prP2CDRAq9ifnCpcaKsvaLbCknvZIlMC0vCneiVB6EhGqTBdWMNW/fSidPLK0yItpG+eUqLBqqxQMilaRGp1WJVI7UFghMGzMspKKnDqQVDUgrRtksPV0qDrPayjGWRdZTncg01JSyyJrXsETcx0MLLKlmNSLtAJh7iOSIuBQW6ZePM2JCzOqfMTxYBRWycCameXMhjhXaGZJXtnJitiKUaHgZWaRUHqyga1lZoPt9vlJErBS/lebPayuVp46DOQKmwRfiQ5fefhhJFVrQ2GVkdSTjj/4oIov4Sm3dEgG9Lr3J+q/Gy/dlKTSc7bMCfInaq/n0QkJWF/4wgM6WT3OdxVcBViwqiZDXP7yr37gN3/zN4PCWhOKKcJkb3nG8O4VliXVWcxa6CynqPVlBH3T0xb31WgxpY/OVMKi8nEIxbRCIVQw4xunYFbF1lSCZmS9O9/dIsvYQl41D0sf6JGAXkPClNZAZkONCmNZ4QSpA0lV+dgS7vtr4GZhFiJrTFNGkbXNKY1mllfwzPOGLmRqYM1hYKSVS5sutVg8SHYV5LKYsr8OoVLDa3cYqCnCyKwUCc60Ir9hdrKSyJK8ssK6C2A5XzTHjGfALs4bRmaRNF9mD7uxFQNDZg+hFRGiWgHWgw9mSWVVhfK6557P3X9/QpVpxfGvf/3rn/3c/Rpcu3ZNz6k+ChGRiB8xgFVBJm0lhRUpRoRoWn32s5/TTTFLJOJgz35Yh4SdWW260FlaA1hRZ926unQ7sJ9mhbUODEOau3MajLn+/JVfm53lW/7IHOLFIyJUEVDPPlcYrHeB2cNudXnqsE24sE0h8qqrLeaSvdjQK3VKbNit9yCyCiM2zLLjXp2mKLLGRCFmFuHhtqVyncSY/Ag4Rdp9bKwWmoTeSHRwcpYTSmc/K1paWolNooP8rKiwXFEv+u5zbGgVlrRYVFgeR1WVxpFWcXLQwIrzg8KT80XJaZgzGyKwlglZMb8BZmm1Ob111l4cNyeyx0z3paRyHukyG36sOiSztNvwLBhiAnGTpUWuQ28lJHznOxUGlkiQvkaFcKoHgy0q/PoTT7T07HBtvvTSSx1eTXNJST3wwAMpctJBiaxx7V9eET8W/yv8iwrrs5/9rE5497vf7furh2Uza5Za9q0uqpk1shwWCktPJFrpH/0xsM6JCjcUc7LoJqF0a7c7Kuy+uzI2o4YSpFqOWX158c/mvx9JW6FnkrjGg04iHcxqtWhqPNijwupkxYlCzxJG59t5WHvZWBlbfUvkWFbYnJpR1UJUAtVqq9Ejr0Cnw9KRs0p6fXCyiA3TwkNseLvvopWYxW6mschyrLZ8oLwi17RU0GfODwFVdtZnYRW11RwJshDHTbSK8irZWIgsPCymC3HfTSsUlkWWaAWw6CN69iC1tyJnCaaYQ38cGIKtmO4wM6t+PZdvehHhve9//0c+VnTN+97/fkV/H/jgB/GkCA0FlA984APyuTRuuqlcjDWp6PZtHRSJSsAY/v3sz/6sHhKPSH/pOdXHuOptb3ubDuoZRvzYPXhdoNBKP/fGjRt9trGKrMisOGPYxi0q7DOJjVlrhWVaFWatHPd40MyKg+jqjV840MpSqwzqW5bTtfq8IfuqRkIxpchywhHGxyyHHgmCs5il1ZhVq6w1nVVzXqrCwnoHWKyIHr77HBJuU7F6ZsNKZyXZlSb+oBXmFBEoeiqVHuT1lFadNRQWhdXNLGeT5vT3Si4ttx7rh/vCmnkvUueUlwyGCi/aSWxxAqgie0sJWRrQq5EF6h5mxfQFC6sUDKKt4rLBBCwg5SZI2cZyVOicLKe8J2YxV5hEVll2ruCu9sdLBQ9wlpYZLkE2L2NMBvwmSytMHRIhCgpffvhByPXgww9fFhbd/tznSiAmcl27fh0k4alvRFPF1ks3b+ounXzfpz/te2XDC0bx5Pe97306EmklDuLNF2CN1ULF6tJBmVadVi/VgHH9b8wVTvkNwdIqzLorhRVk14HCSiZX+7VXCmvQyvdWfrUZEOOMgzEBgvE2JaKFgXavgo1lzdV01sbPGpwys5axmM2j4WSFOgpEhXNsOEPKqsqoWnLKyx79Yvo8QNsGIuSvjoCUMglLbDnjgSytJLJcYX2zGmYLrKX4SgdbXXknnfZ6MiaXaBXxtExfSMFgElbcTKiKzCIkjMBKOVkAyworiSxLrcasvjr6JJju4gTWTqeoMKY7HGVpdWDJdIdcv/rBD6oRG37tia9DosIUme4PP5xCvKgnJM0khYgN9e/atesFf1124WoJgn4IgksqbISEPdWckLDovve+d0mpzVwfasv9RmQhtVp/JwprJzxcKqwDS36eXmxHOq0EoPacHVXjITFHrsJr6KxtHqkpVvkVdJZXGjo27DkNQV4VhYXGaaVmgtRC0VjaEBKmwDCWgkljP7a7VC3Ks54STF0SB8/CUWFl1si38FNtjH8lvvdtbJzlMBZgd6klteV5QwoxUwWB2vAEhgleLEI+SStqXW32wuj7Yqi4KM3YWkqqaLQ7o90lGY61lePBqLBOiixl+RpbcMpRYdvMjS3dXi0rHPZaKoN1PrZMqyWzmDFslpaEf0h0iJYWCuu37y+S6q1ve9u7f+7nfvPTn5a7pKZrQdB5bxVHQKTIqK0OMIOkxZKkEu9K5Hh1hbxK9wI4FJbvkvMlNVcU1n33VdnVA7WOrr3MhIqt4subUCG/tBw7W2HxIydm3bHCqr9TYtaGbl1bQaLWk19KcBpV1SGzvIhnHRXiuzeRNarQFDo0RtjwruWxunNEVoGxFf2sJaeS4WVO6XmSpOovpqdcODush4eRViEY3JTKYoFh7KPUSsZWZBY7blG5xQ1ysR/P3AwvQNb26Qrb9riyKPxyTWTW2ZxJK8eDRhV1r9Q8OIgHo8jCxkrLdKyzwJYDw2FjOSoMwCp/x9uvqJkyDBJ04kEQlvC0fFSUWswYxkSH2YDXJwdg/b/Xr334Yx+V1NJYvXih41/RWOR6+GHJK7Xio29DmQiv5LKjqnRQ/xhEYElh6Z+OGFg6X86XbgKscs2S6GV6rOSW+dVF1kZVdYW1BVZa/zx89/iTzs4gPVNhNQZ1EtnGii5VOYf3N9JqkloxCd5Qa348ThYtOPGb/AaHh8N0bwqLMn7bPNJheMcZw8SmTVZ6NZvYWdrBHdKpvQxPX4YZzDF32U13vwwDq3tYA1umlaUWK7FTWikiixQH0crAYqNApBZqaxknLhFmKnnH+VazodLqR+5/KT7KywNZJJgS2dOcYKJVRFXCFgZWUlgWWYlZ0caKGaTWWVJVxXrvCiuKLGi1IY4syF5FizLwbolr47RwzlFIqNXRIcsh+VkPPlFCM2iFhjr416LCyCxdWlUc6K4S9N1f0hoa1K6uFPGRnCWFFWkVxwCL1FPmFnVTY2jlvvruZ/0bOmubB59DwuLe1yckraG574fMaihZSafju5KdvwFTx5MPjjSItHJqLyp0kkS3vZLOoqLDyCDFdO/h2PVuug+ruyssZuh6YkEZGEwzvOxPWU8lNz3SakwODIq1eYBoYOHNp5g0rBBq6w2XTj/YKpUFqwdPHjxb+EVmsWVWQZUKpXfBtSTUfFDMAlLedoybbOdFE7lMqwNOkRqagsEfe/glE0ovEjAZTzOnYjzo5dBeXRhzsprCull8d0eFiVYCFkvfrbAO7KeyZv4MHh2fQzCY0rKYLvSk4f/1pSJ/dETA+ul77+HLW04ICQcjYagKMR3M8WCHl0wunVA8rOA1K0gEfyknawaWThCnsMDwsCKtBJN3vetde5YWGGtZWt2xiu4VQeLaw1qv0dnxsJo1HsSXg745+kt3bZhlD6vSfRMPRn7FwDBIs6ywtpaW87OGwoJW0cmaRNbWPBrKyLa3N0AOOehORm8D5vVy9NeRxGvgZVgGxjSx+BpiFusck+4YZ67VVQZRZLmcvOoyC1iqx5J0lnDAfn9WW7EqMXWpzCBUGMEjjNO+ODCLAS0+hMfGojFRVdm90kOW8irRKqLqGFuIrJlZTm7QwB6WBrO84tuCJp3V/i5bNnkrijLoaotVX2dSLAWDrRBNS3RotIJZ//CDH/jv3vkODT70sY/+tZ/4CTFLTelX//073yFqMC7t3nt1U36WQ5YGne5nyaeXJ5VopSMoLA0IAOd/Dgl9FwornaknOQAWtAJbWw+r3qr/dhXWRredFxWaPlFYQahlhDho5QlBzgxZC2PcmbW0sdpTzb57ynvo5bRWWmZYWrv5BD2aQ2QpuLPa8ooZM2XmFPN9llQtCz8mi4XqXT0Lv6Vf2UTjh/pq2ZupbPBqleBdUqIAC2ZpMXYElphlYM3YijqrbPdQ99SKVlcaAyn28mL/wSWzhCTqW+1hS5zSj6OaaJkQrNrKhds9CXjOAG3ltgcs21gWWQlY0XqHVuobgGo8ODb46sZTPNju7aIJJNmiStOCTmuw776NCls2qQ7+t297m5gFsDSWzqL9L+9/n6ihDAON1Wt5s8z4p69dU9IDF1pvZazMhsGdqh4UIRZOvfOdxal64gmwpbjvLoAlnuDNS3kdxIQ7CmsfWItKfjz9KWal+C4SKt4VNdegTEhNaIQKLns6MtK17L47KkxhYEzUCrnvpMLToAZ0iOFhZ9YoAx9nDPUHtxUVFkhXq6uLqRj6ZUhNhlp5SSEPw+57knjQKsaDDkLbKuieKA+wytxlDWFcsYtaXQBL1WyUQqkNe9i/z1EhwIqWFq7WaADrkFlwKhZZjlCzOjOzllWuYjAoWtllp3A7PQWRz2kzsGLZmWS9F2BplVWPDdNcIe/qUFiTtkJGNeLUOb4Ntjzx16f/PA+4mROsppXTR0uRP+W7l4nCVjmLqPB3Hy5x3+PXr+mmevlZTbPfvpL1rru8fOfjn75PxPnaEwpV2+RVtVwIaK5kXenkkgR/dSW4tLzTe+91hKiITyJL52jeMKWYzgoLP0u9zuSfLLDy/Eo63f9XZwiXOmulsE7UmVnNEjaWTWZ8FFYJWAtmWYUlbRVnDLeuljMhmiLr3xUnA0O40ADRIWV4xXm6pLO6i9RmDOcVM0gqPC/W92z0FKkVWzD5c+O72gsI84Mp/UrMwryPflnyzmLAEtJKawGcDix2bE/AioHhbMNvmGV+RXg9dMOEevsDRVuVVIkHbtF+8qsvL5mFyKLqMdEfnGJMX2jV5VWk1TmcsoeVkhuWIstpWZJae7QqXwBbYDFdWGdmOpgoukDZD+og17KibfuJSiIf5C5LLXjU7g0LdBZZ7xVef+vee9T0yWEQm0NCQMO/srb55k0bW9BKvYCiu3SdiTLM8bVMhebVNF1FrAeMLLVmYAlzTBfGnyv/voqf9m8PXGDL/dBXhISbNFNiyNaHzNSUTAFiTrlaxtbMrHiXc0RHPFien9zRRWYDOhaTKw7WOVkr9z0pmiS1HLvNseFMsaUWK6hi9+mYtuoSz3EQ5J79rJYsWmcAtsBq8aAtf6MqQSrGjIwtsko9+Ju3RCsrLIssSy32Ip11lqVWGnibeFHp7Y8UVOF/3fMo4wavJbO8VVdk1ibZqtJqjgejttKrTfCSnoJQc/potN5nJ4uoMIaEy6gwvuHFGbCTJWyFzKnILHvnA1595U30pwbLdG9FUkfVRlshr1BYyCvFg24fv+8+Hf/ygw9KZNHktdPL0mp1r4IVo2vnve9/XwHK1ZVSQ6Wh9uwqXbmSWmnJjiiWNNfS6oqoKgS4k3/Dw4rACrSaniwQyi6VmbV8fYOl093xrhZO+5xK9IIqq6qVB2+ltpjyGMH5WB0axdcmy2GKB4fnvVofc0CxTegXQjz4OKu/kSmWchp6sqiBZZu/u2ZjLeEeqlj5yL1lTUndJkMKSxckwLLCSsASZUQu9QKWQGAYAal4czmGUDWivKUngVnqwZaYRbQYbXiYZUjFMahqM4NVZOl5HAnCqdhray9zysyCUGm6MFnvXl1YUrF6QtZmUWFw35cia9iXXV55W8NGHEdzfdCivG2glxYPzjcrqvKOFYSBfQJnM27VHarI0FhLcxwkkgBkxZAvU7TV6/rPCutMWCW1NWq6N3M+KCyesS2BTmKK9Iqtzoqx3qBJd9xbEBd++XGEd6077mUUmCVyjRnDJKxsdW3VVjp/LDls071FuK0zs8ZEYQvoYlgXURXZlDnVEybgUf/pK2Btk8KssPyDYuBpAytkVLhsQ4kQ4xwiKx9Nq2JmlUo4BVgq5jsD60BkobZOcsonACntCWZUQat6QumTQx83QzW5zCyhKtrtegY5WaKeddOSVlFezahK1vvedOGBgRVDQuc3WGR1iVSkFsyqqch9gDKiwi01GKItxbgdGWP0lFVVxFMehyKluqvtZBGrlVKRpkaCWx95zI8NDdGZdSA+7gJoYOuOmEWQuL8v4fxkyXffImxJq2i9R4T5N5yZNWiVdFYgWgoGI55iPsSAxY7jPmfAb9OyNjN6e4RyPld6Njhbv8HaYI5YBzSZARglutrK59nAilSK9fx0/Entk97Lz3vQmFVqZpUic1FhqdIpe7hrnx4BSz0hoXZFVINTppWFDIGY+wCypqeQZmArNcTXyKcPtn3Zt/mB654NtLBK7pW3HdTz8Nr0YtgzFQxZYaVpwb1srOhkxRIOJJFGZqXAMIqsGA+25esVVRhYW2YBo5rx1/ciNLPawUqr+mHYhZQzsPbIddGxFbfeQWG5jwPIlXVGc69c6u8u0DSesz1/THw/g1jJyerAalW1hoG1fqrDucJjhXX8u8Y3y+7VAFPVXE27IqacAIGNhdSK+muyrno2XXfcTbFkM6XqDtOUYjLOx+ZxkVA9f8LiLtFqBIPdiW+fvJrm7snB6GGR467eRR1inOhc/MS4ERJe3WR7BcuraGPBLDWhCmyp6eJP2Jpvsi+8wIQKi4T6xUeLyKJ3s73VpFYw70vCxEMlNnSfaCVI4ZFBKxjKJs8ztg6E1V5+g6s4UDqZtKzjiUIySNX0bSFs+TtjI7L6AsABJosgkBQ1URifpNJJWhWF1XYJG6hK8WDRWaHactdc7XotfvwMsv2LeRZikVPNQTpbXs3ue1ZYxymjYKKxrCP5Lqm7Ex6nX7iDLECqs2mkO/QQ0mZWy4vrCJulVoNXxcq2bFYIFblrU1RrHHFQGTXUUFUBnZ4ZSB5WlFfWVi/c3lSV2YaEm+VB7Zt8Ku9HDS83L8GVwqIoXfSwYBbyimZmJVpZakVSRAlmbMGmSKvELIus5tx7njFmTmi1YJgWFMKKYV8NLHvtkZ4orLlPOmuZjXU8Xbip2bBNIk3u4ZgrLB7W7Y22OrSc+nfVkS11FAPuPLmDQXtYRtU8MKfaYHt1L8TXlmIRavES3ggRYjL3Z8grwkD6jelur31XWPWf1JgVKJV+mbP4FaXmVnaOh5tojqIRVlu7qkHK/lfXX5vYMCaUdh2ECz5SHLYJB2uKjTJbo6hppmF33OIM5owqzM6c2l4zwqJTtk6eWECKyUSnXAxmyclqxZgoShdMd6ViKR703mJgCzPLOmuJrSWzwIdpRVxJE7Ais/Djk5ffklG3zEqJFCisGpAWkRUVFlFhjA2PUZUmCpeBoRPflyIr+e4WWS2/oUwUllX0u9jaUVVEgqM/h3Q+h+1X40Y7QV4lSA0nvs8VRlRZc6WwKceMk2rJaLPHnvIK7oRWGVinadXtqr2X+91gVufUPCdIqHjQdpOzArOaYtox41v21jzTF/AUvar4YhyrDu8/LsYO9Zqbwb8VWS2xa5vf4IU+OTus77kSPawyRVjrDdhxV7wjWjFRGHd1Fa1KxagaFarfoxVRWBQ4HFGDUAwEqdhPOqtUhlCrUd42MXWFLU6zeZ/kVaSVsWVjawkvQYqSfolWcbqQ4g0ODFP6aGIWUWGJzauZiMgqwKL+xxYrWVVNrImSKjJoKbVEH45vrKstraJ7dVpqFWUw2U9dTex501tjZ2gPR4Wvj8ICdotg0BSMdIy6LsjCu2HWcSScFJaFWBwccmqRpZWMLTviZJNuExFGrBc5tZ2yHOHeVlgleZXt9gSsxqzm8ccpQtMqYitJsOn8mldNVPidy5bTUDdEkMJiihAbq26V2FLeyckiKrSHhY2V2BS1TBonVEWRZakV/awUGzYzfksrIkEni3ZmDVym1yDg6oh6YHRSZxlYc9b7SCKtZUhpM7McGAKsobC6yBrA2s7fnRkJxsiuUanO/RU8bVu8N00O3gGttruHzRGir3TfNceD6ZwidLbcOE9gLXJH/z9bVPfLWiThywAAAABJRU5ErkJgggs=AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAASQIAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIAwAAAESkisYAAAABc1JHQgCuzhzpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAYFBMVEWp466Wibuw1LfksrbJttfO68zRy+3sztPTxNzF1rn///+O25VolnazmcS76L69psu7ruagz6d9tILIvurdl5nhpaj19PibidrovsLHn6Dx+O+iYWCOg7n16u6omd7b8dm4cKxLAAABW0lEQVQ4T4WUgW6DIBiEURDtrIJFW7dZ+/5vubsfsJm67AzF5j7v/pJY9fGPVPI/64OeYmXgW+t5E+7rej4AemPgz/oUAJMobLuEaZpiidZ4nF/+AmpA0/gG7uZp7dO6ZpOtp3FEREq4L5Zyxpim4WrCDB8lGSgE6ABQhA5ACMF2jhnGBOyaDeM7gb5U4HnjBIB/CgzVBeKHrBf0pe5L8DGhMddLWRKJqkBUG8Ahm2spysCr6gXw3tpAwO2Aqk+A/ArjugQwgCk9FBMAhM51AIZhgNXHDqV2gCPwnmEg0MuQUtF1RSEJ5aXEBtHPAM7ar+uaEvoK40uDAAVOIQT/eDwSgGaaslKC934VoJVzoBH9BMBnweqvMiMASAoiQJ8JnKEkQkcmSAlLURSLKA+p2rYFQuorvxfyktwkvIctPrcdoJhNPwK49gmSmwEi+4TsS8pJxe2g3wln/wQ/e5MwDonHQCUAAAAASUVORK5CYIIL \ No newline at end of file diff --git a/SETUNA/Properties/Settings.Designer.cs b/SETUNA/Properties/Settings.Designer.cs new file mode 100644 index 0000000..a10e0fc --- /dev/null +++ b/SETUNA/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace SETUNA.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/SETUNA/Properties/Settings.settings b/SETUNA/Properties/Settings.settings new file mode 100644 index 0000000..5aa21e7 --- /dev/null +++ b/SETUNA/Properties/Settings.settings @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SETUNA/Resources/Image.cs b/SETUNA/Resources/Image.cs new file mode 100644 index 0000000..eea3d42 --- /dev/null +++ b/SETUNA/Resources/Image.cs @@ -0,0 +1,82 @@ +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Drawing; +using System.Globalization; +using System.Resources; +using System.Runtime.CompilerServices; + +namespace SETUNA.Resources +{ + // Token: 0x02000006 RID: 6 + [CompilerGenerated] + [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [DebuggerNonUserCode] + internal class Image + { + // Token: 0x06000020 RID: 32 RVA: 0x000032FC File Offset: 0x000014FC + internal Image() + { + } + + // Token: 0x17000003 RID: 3 + // (get) Token: 0x06000021 RID: 33 RVA: 0x00003304 File Offset: 0x00001504 + [EditorBrowsable(EditorBrowsableState.Advanced)] + internal static ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(Image.resourceMan, null)) + { + ResourceManager resourceManager = new ResourceManager("SETUNA.Resources.Image", typeof(Image).Assembly); + Image.resourceMan = resourceManager; + } + return Image.resourceMan; + } + } + + // Token: 0x17000004 RID: 4 + // (get) Token: 0x06000022 RID: 34 RVA: 0x00003343 File Offset: 0x00001543 + // (set) Token: 0x06000023 RID: 35 RVA: 0x0000334A File Offset: 0x0000154A + [EditorBrowsable(EditorBrowsableState.Advanced)] + internal static CultureInfo Culture + { + get + { + return Image.resourceCulture; + } + set + { + Image.resourceCulture = value; + } + } + + // Token: 0x17000005 RID: 5 + // (get) Token: 0x06000024 RID: 36 RVA: 0x00003354 File Offset: 0x00001554 + internal static Bitmap Crypt + { + get + { + object @object = Image.ResourceManager.GetObject("Crypt", Image.resourceCulture); + return (Bitmap)@object; + } + } + + // Token: 0x17000006 RID: 6 + // (get) Token: 0x06000025 RID: 37 RVA: 0x0000337C File Offset: 0x0000157C + internal static Bitmap SampleImage + { + get + { + object @object = Image.ResourceManager.GetObject("SampleImage", Image.resourceCulture); + return (Bitmap)@object; + } + } + + // Token: 0x0400001E RID: 30 + private static ResourceManager resourceMan; + + // Token: 0x0400001F RID: 31 + private static CultureInfo resourceCulture; + } +} diff --git a/SETUNA/Resources/Image.resx b/SETUNA/Resources/Image.resx new file mode 100644 index 0000000..a800b38 --- /dev/null +++ b/SETUNA/Resources/Image.resx @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +text/microsoft-resx1.3System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=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 \ No newline at end of file diff --git a/SETUNA/SETUNA.csproj b/SETUNA/SETUNA.csproj new file mode 100644 index 0000000..9811765 --- /dev/null +++ b/SETUNA/SETUNA.csproj @@ -0,0 +1,688 @@ + + + + + + Debug + AnyCPU + {15D64201-91AD-47B1-8675-5DBB30DF6A39} + WinExe + SETUNA + SETUNA + v4.7 + 512 + app.manifest + SETUNA.ico + SETUNA.Program + + + false + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + 7.3 + prompt + MinimumRecommendedRules.ruleset + false + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + MinimumRecommendedRules.ruleset + false + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + false + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + MinimumRecommendedRules.ruleset + false + + + + ..\packages\Costura.Fody.4.1.0\lib\net40\Costura.dll + + + ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + + + + + Form + + + ClickCapture.cs + + + + + + + + + + Component + + + Form + + + Mainform.cs + + + + + Form + + + CaptureForm.cs + + + Form + + + CaptureInfo.cs + + + Form + + + CaptureSelLine.cs + + + Form + + + + + + + Component + + + ContextStyleMenuStrip.cs + + + + + UserControl + + + HotkeyControl.cs + + + Form + + + HotkeyMsg.cs + + + + + + + + + + + + + + + + + + + + + Form + + + OptionForm.cs + + + + Form + + + StyleEditForm.cs + + + + Form + + + ScrapBase.cs + + + + + + + + + + + + Component + + + Form + + + SplashForm.cs + + + + Component + + + Component + + + + + + + + + + + + + + Form + + + CompactScrap.cs + + + Form + + + CompactStyleItemPanel.cs + + + + Form + + + CopyStyleItemPanel.cs + + + + + + + + + + + + + + + Form + + + ImageBmpStyleItemPanel.cs + + + Form + + + ImageJpegPreviewPanel.cs + + + Form + + + ImageJpegStyleItemPanel.cs + + + Form + + + ImagePngPreviewPanel.cs + + + Form + + + ImagePngStyleItemPanel.cs + + + + + + + Form + + + LayerRenameWindow.cs + + + Form + + + LoginInput.cs + + + Form + + + MarginStyleItemPanel.cs + + + Form + + + MoveStyleItemPanel.cs + + + Form + + + NothingStyleItemPanel.cs + + + Form + + + OpacityStyleItemPanel.cs + + + Form + + + PaintForm.cs + + + + Component + + + + + Form + + + PicasaBar.cs + + + Form + + + PicasaStyleItemPanel.cs + + + + Form + + + RotateStyleItemPanel.cs + + + Form + + + SaveImageStyleItemPanel.cs + + + Form + + + ScaleStyleItemPanel.cs + + + Form + + + ScrapDrawForm.cs + + + Form + + + ScrapPaintLayer.cs + + + UserControl + + + Form + + + ScrapPaintPenTool.cs + + + UserControl + + + Form + + + ScrapPaintTextTool.cs + + + Form + + + ScrapPaintToolBar.cs + + + Form + + + ScrapPaintWindow.cs + + + + + + Form + + + TimerStyleItemPanel.cs + + + Form + + + ToolBoxForm.cs + + + + Form + + + TrimWindow.cs + + + Form + + + WindowStyleItemPanel.cs + + + + + + + + + + + + + + + + + + Component + + + Component + + + Component + + + Component + + + + + + Settings.settings + True + True + + + + + + Mainform.cs + + + CaptureSelLine.cs + + + ContextStyleMenuStrip.cs + + + OptionForm.cs + + + CaptureForm.cs + + + CaptureInfo.cs + + + HotkeyMsg.cs + + + StyleEditForm.cs + + + ScrapBase.cs + + + SplashForm.cs + + + CompactScrap.cs + + + CompactStyleItemPanel.cs + + + CopyStyleItemPanel.cs + + + ImageBmpStyleItemPanel.cs + + + ImageJpegPreviewPanel.cs + + + ImageJpegStyleItemPanel.cs + + + ImagePngPreviewPanel.cs + + + ImagePngStyleItemPanel.cs + + + LayerRenameWindow.cs + + + LoginInput.cs + + + MarginStyleItemPanel.cs + + + MoveStyleItemPanel.cs + + + NothingStyleItemPanel.cs + + + OpacityStyleItemPanel.cs + + + PaintForm.cs + + + PicasaBar.cs + + + PicasaStyleItemPanel.cs + + + RotateStyleItemPanel.cs + + + SaveImageStyleItemPanel.cs + + + ScaleStyleItemPanel.cs + + + ScrapDrawForm.cs + + + ScrapPaintLayer.cs + + + ScrapPaintLayerItem.cs + + + ScrapPaintPenTool.cs + + + ScrapPaintTextLayerItem.cs + + + ScrapPaintTextTool.cs + + + ScrapPaintToolBar.cs + + + ScrapPaintWindow.cs + + + TimerStyleItemPanel.cs + + + ToolBoxForm.cs + + + TrimWindow.cs + + + WindowStyleItemPanel.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + Image.cs + + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + False + .NET Framework 3.5 SP1 + true + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + + mkdir $(SolutionDir)\publish +7z a $(TargetName)_$(ConfigurationName)_$(PlatformName).zip $(ProjectDir)$(OutDir)$(TargetFileName) $(ProjectDir)$(OutDir)$(TargetFileName).config +copy /y $(TargetName)_$(ConfigurationName)_$(PlatformName).zip $(SolutionDir)\publish\$(TargetName)_$(ConfigurationName)_$(PlatformName).zip + + + + + + \ No newline at end of file diff --git a/SETUNA/SETUNA.ico b/SETUNA/SETUNA.ico new file mode 100644 index 0000000000000000000000000000000000000000..306101010002fc4eaeacb1721724d6d4623f59d1 GIT binary patch literal 216358 zcmd?S2Ur_d-tV9LfA4+nTec>#jSJXuvT3_1yUDwoP1|HQ#g2Q&nBIHGHtq%t#=SRs z@4ffljeDVk0Ev!-M0d&mcg{$|Xf&e+F1aty@6mJS%pgE~zQ1XldKfAw##{O)(evE{$L@=D>#e|zO! z;t5`P<^Ln*(cvrbee|!bn^vs)@k@$*vFb;veZK0)|2K^KM-hMTSF3*f8rh0}tX}cW z>J{Iv{^^I+Dt)c`X~n-j`~IsBe)#$$we82RKU(qa$G>!2`R$(>?4N&LDQk>Z!X)iV z#@FPV4_AKwnM(g6`4?~7wypI>)Hh##{LPmi&Da+oe)IVU*#7j*-@*R)%QxZ=kvxk3 zI`}g``sRy|vHkg*FaPq*m!E$7kFUN}>Fb-X|NiH<{`#jSfBisHZTsvatuOz)^cQS@ zS^DK)md&ZXfu4=wHPM3kZ@&IQrGJr}i&w5(`DD1F^G?)`E&oFN6XX-jfA;=2$lm+r zZ~spi{2|DQKMEfI_|0d896tEw?^p<*fBenofBxo+PgIq_Kfe6?r|&QR|7586$xy{;M`A~< zUwhT%_VV-XC8yhqPPP>uYb!X~mhaP+=lzQ{AN2bpJBt360{DxLw-udeD>~Iy1b^e% z_L7V3rI*^vueDbMwpWF>S4Vc-%IfOmbgA-HpW`2O@W-gbKSg`2R&1WDqopm%V|A?O z>f*EOt1oS+df9Db)#c4}yQ*D%bvuJy+g{_Z16B>@2euvAHEgu&VG^B1mx;f{Z+q31 zEmA*7^2$`4{^5RspDOh)u)*9ygUWJRj9C3~*OJGQdPe_eCHI(U3}EogmH&<3hC2XAZ%+13)O&1~V@ zTO+o&hHq~Xn|4dMc1svG;#-I@Od>;;9E`7Pb4UBJXb>Uij|*`Ipr$eD~ne4-YQ=NVSKTS2SE*%WBuwHU_Li z=D)7N4{WX2uB~k#jGTe9{^&Be7zXf!53j7E{-6gJe;{9(yQjYBt+=M(U&4Nx#{c8K zyvMw}>DJh(hk*$G8)ql#PL9_c9j`nxUg0@jc6h8*1sg9tJO@^G7=EtGM*L{<8_N%m zlUC+|#~$MqUSJay-V+rd)uR(tpz%|abr9wt-d&rz6Ebx_YN{cAx;6Xh#4!6y$Z$r~ z+mzw6G0^Hyq4u9BYYv};QY_g1ll+5!yLa-7JI7y2JMrb6Q(w{S?&)vto%>#n-9P^W zpo{DR08H5T_s`Sphx-@M1;mxav)w)WFWS!{UzXdxpWQz8cYZ?w!@og^DLVf>*^j$( zrkbN5?LnTu?gaAr<(^}uhsKHzj1}!0E8P2wu<^pZbSv6Bj%=UA_Kz3sM}JiD!SRwq z&{JFzdUg(aO!TvSf_?mdOTgSeT{#l<=Uz6+m-)RoFn0e_{8A}kLK?h&D%NG2G9At41RyQ?Hn={*fFv+{>Ot&ucg@c~KUMyvefs#(_1Gilv=?2_TYgdRO%+W4&5PJB=)D4jQu%*8Q1YlN^${m+>R~W){i>g?kY;xo)G` zE~DAbtd`?E`jT6&^QhQdMso>s9nEze%>#2A%ilSczZ*rjB8Ui{G$fyXK{`J@3@+ ze~)GW;q}9RQO4>$Ke=&)VqTxz03&C-KB@Qkg!(*nhdz?}S^M6ly&6?+TDOkYbzGRj0>mAqoUc-iercnDj)@NqO-U4~4xg*G&F+boK8~ zZd$0CZC-d%Vu==7wY!#AyS+@d^UWIfKhUgp&)c>8Kd9aRp)yu?;KRCu9|71>1~Ugf zsy!g{413;_`dPc*l6^HQ?B}&5?o<3Pk-kET|GvWM&gAL#RJQf=j;@<`e#?Rq z2hD01txD&Y!(6ng+?G}Ce1m4yyZ=zL=lwZ0_jhSOrOI^~n{a>6c&L z5uJZd(o|d01m=IN(tEV{;AnxnD926g{DI6gTNUh?i)Ajvm|-hKW+yfz0Y_1eizs)e zD1Xmr;la_8BV*;q$Eweb*Ik>q88QJ9=({8DHI+H{cxo)#?Vlds{k!kl*Hz{pOU7sI zyr3N#70y~!FO3A4`QP>C9K*lo{p#KC$nd|Ek^c%O%`%%;`>!X;{0CSknD|eo@-LFd zzl|_Wk)_)RUuwe&qVf+3UY3I>+gX(3D$3hETCi`l=+J1X_gDq2gIpM|_nWvKHVK7* zkjwg-GMyM3;Kc0y!RyEWnvDb^3>H(_Zl7B9ROt{Pm;WQ9B?p0jVUC+H%V{LTVI@ik$bgc69c+I7W8$lDd!zY_Eo=yswNN1hn-Yxd| z>DS(?eg_gzLj_0I&O5nbUY?C+jqA&i0zoj6$$#+7@*1cD=12mNP|<&i8*}m_jtEXm zDjXILC>;W1_)o<7&$aQo6JwRY{{d0KZefnAFw1cy!+s;`p@L!=SHw{D=fHZ$p3wp*1UyH}j*USfP#UxLa)N>X)})EM*T!p4j8z;NEynz3y9zTMN7C()=TEi4W<8Rsy3MI%=0t$f zqNAz+$^oJ&1QLMdxxJ_mC`N_Acr`4GUz@lUI&mlJ@xVjMYpK*Q|ANiofBqkWe>GI# zy=LAu?FCQ;ybOf^OA3UF;_5lbg5ImzNzZ&hamr}C)bcmY5su3IKV>q(?O7KCrGmqq*`OM8cBU2rgYFzQ)oE5 zOSc(8W{V}@Ak1}P z4z=*Dh^e;Xr&FVB9)@xLVL|ATAO8zh1jr}=1LXq&@PB60{6afTz^}sT1=j*>RRE!j z>RoSE?}m<$QWbGEB>b?{#RxxW3YPy==zT#i^tJASi;S;7IVq3-a_s-}nf?E>gP(Zj zmq!A^bXf8xqJWzy*Ikrw$(L#MP@h)0%!euvSPr{+^jp}7DCa+- z6#rQ+(EJpn*$Gl@1S!_otOO}@WY02=s3B6UJDg>SGbmd~{Gj$1W;zM8T!g42x<^!a zP*i+m6fcU6)m;HTO0Q?2QCu9BO3#-hauc_wPnpeGl`YlO5b)ZlM zPzb;^85T=mUj&4J7aIkXlz>DFuy=wm`VI=o1(bPJ(ter>pb&;dVPRV>+rLAK{~ike z)yG6-p2DL2BYC?6q@QNU>g z+Ce$)!uUm|Ch2rciM^oRSODL04oBQw=N)@ zKM@69U?4zIfN5VGgI8BZ6l$hDQWB_eTwLY4T-3o_pvn0E_{rA9am2r`sLVrHv~MJD zC;Z0+>Gu3o8Vw||o>Mvsq}ic;AV>mk!d#HR0b#MH zsO;Ei)!DJyt7A8V$8SeH>Qmfyrn;j^(NKiTw;tdB2NiqjSfKFI=OTZ06hcP<;evYzzbG^+JOLsqk5}{2E6QH zspYRZ8Ap}iAN+s9`0dLQ{`U%U-I)1LQouh5ldQ&q%>RVet`B`N`4h3uD*)p&c~YnDumgNcPp1GsC%_d34op84CeY2y!Fj1J z`Dkm<%Oe4_TYD*v1n{(-r60m|M80rHf2{;NeT}HBZjX*72 z0PUcoqKea_HJ8TfgCGh_aVlspwZg-K3)Y_B{X1<@jD(*U$dLeqfQwre6x(Y864WU0 zf&&4uVg=y+;HPc$DU>>0^{oqv!9JO6NM4kbW58(Cjq3BXnmkU$2}5#2q4I-(w;(xXrdkJerp zyAd>g2MU4vv{zgHA>1aDea4(|MS!XT`4R}w(LfB~b|_T^tYE0HqWVlc^K<&eT$Wb5 zEQ5uHp<8Lx{{l1rw=avTjtWZ;j}+_?NL2aK4vfF^o(i0oW6T76n{KazO(7g+;g)t~>{eVq?$_x)c3)q?`I`D;x`W zO{X_6IU%Fs+I`>FGUo1fm#Fp-IiB5FMb%HNBu7_^M8wte*%7Z zl!l);l*>P;<7JnCGQXj?>bE2$fO=wS_WTSdLAIM9XU_<S|_g{;xCc$yuOKo*uj!69L>x3K)AsOrM#^?T`;2$I~m}vUKR3KM<2;kY9LJ5eIB}jxUhjB-U zkJ~{4Xb0u)9Vs|0Eb$RloEoi$S~zg*X4o|EhAiZAW~RqS5)N)4?w2Pymot!+0JMYr zw`;&#MgZz0_SC`uI0;DjM{gXr|DEn^aW7OJ|0Rb6`Fr@;uEQDjL#Z~9{0}CY44S5yJD z@YT^9!DDyh9*?TFHE4p*3$*;yYsIhRU{5_ID*;#+j?iDom<5qS_#dPK3jg(oKfHh8 zr$?iM;DTnuKS*FUHiQ(UuAu;=p3OdgBVr#}@1t@UHHTq;6z+%$azFz6M+!ZKrN=~- z=R~#FM(cyeA0$5(^~&-2vZr|W%ivC7+HEpa=4oS^1Rw;QSU*1vcE_=V073<-N&ud% z##yV*ZCU-kKV07r@AmW7^XOi(W%bI>Q}~DX&b{UHDJRwa$@I81|G86bkpIMu-Ml2M z^cEB!YcQ1?S1RE$Gf)sI*?CO6L z+O4YU=y_i+&HtTapWi+CcmBf+75GoI7)UT1h&RP%G7v9iV$@0Ise@<7zoKVWKfaLg z!+@E8A_@>HK#35F0+1!bMv-(UekQ7g1^I_Yh+4S%BCdtQr(t)TN^cqQKeAK7YD(_}#iazd-(v ze{t{3R~?D=!-E6l=f6z%5dJ@2+W$L?{l8rPX>wpVq{Itq>>$U32`10oW|P0cZwud! zS^>BrU=HySEs>;1BmnK8+&u!+4)PI}pBB|z9=#6h!r_kwo8|j_+F7_?{=$wwczpk# zN7u}wLauO3ssN%uw9z8@g@7`FfN=h|T$bKH_;%y5kDJc^wc+H)w>{pg+xf=xcIL{b zJ>-=%|9||8`{)1FaCK$ZjZ_N%IVk^WhWzKEu;PfI_y9j|_i&aIG(QKS`I%sjJbxVF z_KgSP>DC`_j7=&oh=l;(MVNHdpvhz~-b77%*4iO|F@_&RCSVW?ump%Gkm1D7+9}B0 zCnz{PQgT#SaYj^o1tc(jKk12zTZ4KVYy8YU_FD04m7)L$gp>d*ip810iojBWb2*Q4 zNCy6|yDq)6|LuljA2eV1y7|nP501QlYxnZnmp}Od6)^DsUE{S?cY^i)@#SYA0r>p8 z>7Ja)wz!GrxY3)JMlk=wdAoG@63qMKP5a|auo?Hqv6>ill6mStF8?$+ z%+!3;dcG)l_LK!Z@*}M69`vrxbBc;cLPz%@jiRyzVnsZfs z%ZSF3Xpisyug|Ji)sp~mzkD&ggRb0KnA8QM3LyWf-}BZTkM|xP`>^rMrwzUz-r4tu zdKZ)wF<$?2O)~KhAEI~j%IYsaeV2j%a^(NjH@BXLnb+uv^+=t;p6Ga zf=dowKm3=^>etkf0DjAqE87+n*(<1pNeRF}7U1jq{&4H?J9j+Zy?5mOyHNbPErW6x zG$niGOE<&9|1JMbpMSXIo3H*Z_W!Mf|Gzi_{1+V<&fPVX=`@&XGmvCC5O0P&f2=V! zqyAWl#TfzcEXEomdycFBAN*BB* z8Es33F}ew{X7}>?L+{)KJNQoh&NsmG|1#ib$$!BA-wxRF`3DQX`tP?_uUdujACiB_ zf0X1Oguu%GtWMz|LWC04ALES%)HHfsqg*7yRS&B1i6{W&u;pN~^N^Ec@fl`r=IbVvVsG^~EYd1-xsf4;9L&U;nGgUA zCD0B+5`cD4sy#?xICCdIXCJ@7Lr`*Tq~ffw_NoYK;ihaAKV19gds$cEHZhb1t(}i; z!O^t~eAmg^eBX71LDy)eaRd^8+wHTg=(oubZlA=SHlRuX#R4ZyWWR{Chx{ew^8e+Z zwO0P~lWAV|WJ~NsQ{3nc$bY=}h5Ltcb`EAZ4y0K3CtCE!nIiIIjIbH@#mHDJqMgm; zNkCQ{F54Cb&hEBVM(0ZXJX?2iLeHGjkPj<^qO+7HWxiRP$uO12$L zbr{TW8Oqu{lzV_*cx0sXq_7GK0e?|_$aJr2_sc&T7X;aS=JEZnNd8q(0n&xfngyYH zixKmZ+hicIVZ@#~DJ228o^-9hh=Gdy3)JxcvJrtkW6&1^CKEWw8F|_v@~G$k$ey{$ z1}U**U>(Fryc7aEMnD3vdXi!@m#>AB)}>Puj)MwAg`L2pzzqdJ$$x%}~r3ZBDFi*u+fW%-YpXp9xrUj+V# z3ic0X?;J>X=ufulOEB+?HR+8p>WwzUX3!h0$YKn7SxjvSuq9Ut=AWm&Kmwo(2pk{* zv_yg{VjKlX2@GfN;pZLV7abLppBbsSBCHD-dzh~3JLtC6q>)-}BK6;f8eJpD?NlAj4q|4TJ<{ z`Oa+5HG@)@|NeA`KK1-R5g^zlAV(bvPvJa@$fi_(j5X+ExBgfIc2h|j;@Y7P6~zz* z%=!~8`;%Z%zz)^InY(Z;>?J5YF;aPPq%Kf&Gh$lBtwGQ`O7Ye?^soOUv8N3bs^G|) z`TjfL?a=^xQUW*@pmKOw_3n3T_k9E(BmwWAMmm4#!K~hy@FnK|Jipv?s9@hzf|OID?6=40_p)1G zj6Sa zj0s}}v4iPb7@vo2lAV8$20Q<7iiBML080SX9njZ>S^%1&7LWz?r`QdoIwJ|>>>JMa ztf1Z!{-;4RT z$NZc2#2E3S4R}%dU_DWK&&Jqe3bS@*G{r0*Hte6@JkIVQk&6X0>Weo)oitcX#1iOF zcOJ~zHI%b|xWJ2Fa-3gzK~U>2ydFHsRqcNHC({!#dsZF(j{GKzo8{Rv_s}x zXu~210Y}y?3O7WMSMB-u`dQuU=Zz5m7mVu9=~nOi6siMUBg||Kf{K6&KQVq8Gan*B zQl9^Y7$L!bo;?1!k$Pb2tALq*U0#%K53*+zU*tY*G|I%-3}@q{Cud$p z6)4UBSVJ`C-(xUuPk*LMU#eYCqD4=<2^7EFD18EZZlo@0yhvSjEJDF|^+f8i8oN5k zu%f1d*!h;Wh}h zaNgnJB40i%idA17sS6rw&Qt)(AIPoNl32 z>=YWzm(Lne8*<)=Ne zXA7^m9QxOPket&7;O&pBM$$ODNh8{5Ns+_SD(7Wj;MFDMOC$i;JHze>1iv)@Ac5s1 z=W+%wmjs?A|5PogGp0lnl6-FD4lo`v1(Aa70z|Uf#v%byaqJqQNI(jHLIni>M$k-v zTnJ0RqA$t1FU1Z?AamCMNT9%LsN@8yg=_prZiG+uKa_=B&dj)=KgjOO!$16*Nh?e@XN|2hG=&Y(@xidlmy;HqHtzN{u#CKvZz1>{-Z|f&JC9w z9>{g?&v5BYw(W^G=fxUxBMrJE^|~W;vF+%NU@&gPj%Q)=f{VK9U{j6M{A@xDN~LDn zQ<5=OL5u;80$2i&2%&PAkbrZ4#;(EK149KzhD%NgDlZ9Y14Q={pG=D6055y0zp47H z&RbqTy$TWl=8vpF4*$ZIg-NEGfPEEk4$M0)E0Y*00T_@DpHTvsd+tD4)Y~1i2vobXlgd+tJFBl(j5FtXz96$C%?qD_)KG=G>GwD!oG}HoMkO-kD z(4S)8pXM@<6i0E=P`Sx+YTvYgAAX)23{-JwtjT+?0@YrG`edTFU6+RsD9 zp5z|}(h|UF4|4KUL(CJGN%)7EUycOkg#U28?l1-X6S`1e0!;jON9YhHFSy86ftnJC z*ueu6r(w(kCjJ3_A`4O=0bVptgkns3V$Gn*+?Qn2m+H`;?lzFMXE5*Z5UPdG@oTOL z>H^0*RJ&guwgwfRHj35#eHoL(r;<;OsS;2)Rzm`i9lgk0NGbj^Cz_+i8lpyO&kh$K zLita+b8oT@Y<}Ry7;z)?k>?NFfh=4{j&+6W5GLmu#iu09lkm%v02y?cwUyBB1izGNgx5Eo>-HfIJ4e(kbrGp3bccE4P@^h z%=a2bweUr#g@w1G9|?I3oU>1j@g9^rzgcXvNO=i>E@+U;KNL%VvIS%= zrbx{HnW5r?13A0<(wusdta))}+-Rfja6LqRs1CO6U7->S+ukMDy2G}sY2n+u0+^f){33}*&zBv-h-TVkgP5>Q?R@|mZdMG`=*B<2qqV4Hv5DtK}HgF4jY zAHGo@|8SN?0!qxYMi7#7wgDUer~pCBf>IqMsY9v+;4(NQlOiaJK>|1m#A690qguE> z(|sTptqTvAo#t0x71Tl@P@(EuMsPBY6`K8?;9q$Os2m8KRLFt|Q9M@(sK9@upjH+C z4}n0g|A(`k*c4vIaDk#H$I4>KvJ|OcjwOKk?`B@hAePI~iUwtYgP7FgMj^u$fg#jc zJd_Ao^dwsMrr7tTx%Ov)1P%`t`3{wz8YOryh;*Z=c&-WHIlVOTba9 z!cmjW;WN%ZKM5$u{}{@DfdA8j#RvOycJ-z?@{+8$ai-nThLHSshUs*MZpWtG8LEzT zg=(vBVcK0x)*YrTFTN;ItrwCKP(BdQ zvK@Jcj!RYL|M>+1mH4kYJy>+GFMC%H@SkYKjWz9#GVBV|?F`lF4B3uNyEBBzln}+7 z^N&S=V$kze0r?Xl(8$0KGcwpyXGjUaB#hB!LcE_4O8|9*pca7J?ri%&0?-b^wJ=^6 zz625w-A{QuHoyQn`xO5{QHkwhvJfDIz}N+nos`GCWcgTf&C+reL%?&Afb#r5j1*A# z=c>d%Aqpi_pkDY;_+2wqIa!{Q1G!0>JnfL2vkh4ICq%)b0-{evDuUckh>HS<0w94{ z(;lK7l#14c2XYP!7I+Vpp5|9w1__L{6tTn3e5N^iXOYG0r4CEghyp5<1CE+6qXd-V zKVz&ZVpPokfxhgWJ!uZyM9c12lddR(&afSv(CwTMZEV{(A+xp4kZtN)=(bKK>k8e* z8ef=lCu%~4^C(EAR5X-diI?Zd7LzIiB5NXcmFU6_6O;%=8E~VFKmw2m@e-_hlI(g@ zo%=G}2XYP%6#5R8ogJ>aCb%9p$-Bi2I?F8FCesjVORNY`B{0{ykQVT-o&+EkJgbU8 z8UDL7#u_6=A4Kx2PY)Cx=*`;6OLgc@u5Mesgzn&kZ07`PW820FR>Bl%WX|~~ zM8PTns6G^_K;;Xz*XX-qf9a znfv>5JqL@94V7OQuJ#wyhffc;vB1teJ>J(+=KNN%jRuW>Ukyj1({1dFa1 zl3n`J-TQM64HO(5Dm?>P5WhBftflzr<7pPynWwqM{)OhR zmfA}d0;Cq$n5WIlm4FogFGVh-D*pu%{^KpWqK!Kv^f)0p9l_ciLEErx?FdrQg12@k zGSxKoEcut@QF0}~2tOeQcK+o^LmWzAkv#$oDgxMWZrB}V+#PMojkVy#+w>$l^rX7= zW$f+G@f<8XHdJQRtrexX#*PSY=?3sAg%()D4?DS z<}45>!T%)W{|(`z_ala@P7M@5{*V2CyhUfUF(*Q=BSfb?Si3!F8@8?Os`3xlKO_DL zAv}X9K&Dd61C%U@m-f^cFa!>y9lWb5d`B1THVM}!CBTg~P_3#mwB*1 z@5o^BsiBI?{JIdq?YKum)jnJsKK;D@=nC43096HS%*)QRsDK^<2qDN%dl=8ojRc+n z|Ib1Kpb<5r0ILeNa6-UP0@f*O!Az5q%gCIK;Tz!^W!k)wf`Y6pr~{cQgGi-d_bkCb z+-)Qd0gwf8V=TBh1oWo5^=9l7hk#Pp9U3U8j}Si0c%ilfU07|04TqS2BS?X`Q561DTzk{^ z^kpB0Dqye#ssKO1_3)8fv14uJD!qd)Bu8C2XN#>Dm9P{7gcf8SKI05i6krYkFD4ME z&3~+UXQUA)Ot&L=JIZ_lw_@AU9ymLrD2S92ZJ-!+HnFhq54xB$383;>=^Y@f5r@auQOJ*SZWN11SAApe09z#2+`UNQfN2J(FdOHL10UKP}Zj@*tH z-cO(Gz5n#-W0tI+Y5M7twq(yDD~5LHTm%An{6FtNpbYC{qWj4I_vd5(pKR9^ zYtD%@>IlZ?GU2tn4Q692F)j>JMVY^kb&%~aGP zVn=5fg1;*QOus9_pi5H!cE^}=Tq4C;1=Rv z)R;HTSM4+PriJ}A2mhu}0w4!Qw=X*>6$mI@P{Qrg9vKsUg_G)31j_OsCgFc?Z>9?` z*|sazj1y_t5w@c}NV_d)Yg-V3{pPkn25S%8teORFZdYU-L7P>!z|9?C?BB=<+RO>s zBF|8yU@#m(uzVCP?Xj+phiY?33)AKx+YZ(lzM~U+enfsGBEJiJ{_YsFZpi%Othfnw zyd)=HvTIM8dvE5!zFelkHP7poJ7;P>b=hUjYA~4!{tIqRlyduEd z5hY`REbWXl6bUew08|wyq@D2sl_j78|6#*bC;Ic5_(#rP9{(T;)%aKLdIYoD#;yW+ z`4xKxg^G)itsN@!PwX4PkH9}>9zW`IhJ)?sjL`3lFz5vABT>TN9c|JbW7-{S!Hute% zXor^AYteQGk>ryDM&KDIu?iHVK%@{DA(ua?ngmqi|2Q-M0bAPwwqV=b7Qk$+lKJ+4 z%_^8&A>)-HBbbVAITBEhf8_SJVdqbDO-b@~0e$&`v2hk>%s&#V@K{LiyE>k;K-<5+z!!D?%PtO8`VH3v z@#~=Z6DNF_J>FIScx>qD6IJS8NDNUV+s7w5SF6?$dRxSInQ>qdlqgW3e({r^7W7r2~V_fSBx3-836n4c$@A7`|d8PfhC$b4?ZjI~!z4Yfa+8dbIV zNnsxi;TgIME*INrNkYI}NnmN2!^~bF(%Z`!FhVYWQn3V-kpH;z z(w(}KtT{0z?csWDA=;4qw*+iz@!!riiwCz0y(7oF-aIXh5#9_rjdsB`P1Ak}$1A&@0m#hIrQLmW=d+3QFCRb;uK&~ibM zt!9b+8<>3T|1tj{0hLt1*aE_nGyFfFK)@UYl;D4&D^-N~AFMpy`waL8b*R9 zDo_)Ce~D^Tl>n+EVEYH&1Sm;?h$J7SIw9M^$W#X>`OwuQ8at5cm_a`iC;5QA0~eb4 zDXzR!_nx$Uz1ZRR<#_kygTp_Gum|SLE)G^);oppf!giY9sp{wA$%0{t~;06|1)`h#&Ezg*$QB*YKnx@ z20W{6>=8sdzarbYumeP#`QTI^uqSML2izhNwxc6Vj}wlY`G|but|-&4XsB($;ahX# z?GX9N&b$;iUfOO{+h!f^&Gzcc^XV%%-d}WjpyV7l`~jTd3+^ON@a{aBQti#3WwHPH z$>Y)PdrdKW%Us{jH=kEvxv+4 zRGvn|eb%g74A`D^22q($}TE|_nP}}0JPNF?H ze5h@CX}Gq{gxdCSZ!XU83$eoo>`N~WR{9C^vw zx9W&8ZVT0I3x?+ZW|ZFh5#+CLxkeaqDDw!Hv0F3yDLLQO;=e(mwfb*R(*icM(oIr; zpd3lEHUU+z7=G>c5JY}^m`*!v4g~Te^gCdqNR%-_erK#Dc#kgV>Y!A|nVagyOGgf0 zQrmj>6&xcn{C>#rp`Te3EPRkT+1~_xcvTo@xE5{)8|kRO7id}P`fk4EyaMY*g|`C17*2|3*N!`5M@I zX(J}3AK^+ROdjyEGEqVTpb?cN;J2X_jQB=S0i;{hqC?C-G=*T-H#mPFUk6#}j*d{h zjxc>rxWwT{n{~!mbjDeA#oKlzI&>vDccW(JZeBWUCOOapJ^Wmp;e*33J_Bw10m$&H z{Dlv5Ci@y5jl%o+JYk?&g{ddQjU_E<-u0)~mAJiMV6~{o4q;y;F;yghT0o4Zd?1*q zh~@JC93+4ep;`0a?5`sKNG6IUpc?SFsoyd!eoYjym%qr=?DA0q4L#k4+iXY zG5H1^Kz@WVC(^Vt${acTIGe6`Xl6QeC%JT^mX13QIegU8>6K*o{l#bdOV1*QUmGlH zESMH>e||bk?0sF|MU%M_=;4FIM|sZ4z7oLxJal!20sH3Sse$GvlOrm)cBV@ojr03&rri&9 zto8k=*!8^v$G3`H--kh|%R9wRZxuPbDTZHK0uT3&p9%Jqh9gD#!7Ne(3v9MX0+K`obYUi9U$$n z2^{75knNaoqRmmN1LVisbtO10|mcwaH}@Xz!^s#9@g z=z4^xt?V(%b7uQBCE)c`M${htp}=lwp4FlPyElrQ-v#oEfq$2Gi=E#t0xj4B|8HQE zL;(>g^c4?>{urEg|wy;HKc3)E?y_}p2cdnXLxPMw`y`;cu zVS)YfLO|W|?Lwz_iky)F{NVhH9p5anC*W640&f)CL+!v^0#NG$rOE-!zw#0QnaBa2 zc1k7wYj(eV{lFh@ANl0E&*#P7-xi+uDgF3{Pu^Sj*AJxlAHe>`C+5F7aBGv_ zrp9X<8n3Pg{u{5XLv|IZfW_8Bq+qaX>w$CmCS6(6!vw=w%sD|j+oMENl&%zlA1zo* z_Ogn}Z-s3hKz`8nwqTvM5ZyLJzClNXQ3v?^D05DXB`4mlGr_Sl*||G)7dLGWFJnJ1 z>u^twS5My2-hvZ-MW_3U5%~kKIrC=xSm*V*S+VVJYfbj9I{1$qlh<=i=NDLM7TGRC zgd_gn1PPE<1n@fn{NVGc{7b7q5(QXuA-iP+|H?=J5CsTRUIh?42wlik0R!Zc=s-V3#u~N@ z(7d=XK~)C!{Ad9}yk`k-=Z1aV=++*%!A%>mha|r}RIfcuzdg*bBf_L3(u@;h!HKo* zj6>viB_oI5oxYDtIQ(32_{aMS5%&Eh7y8St@NWV3^-$Q(#ft4iPR{xIQ(MY*{spkl zGhb9-^9ERa5jU&`M5*yXwvyJ6RKrQ}N ziUObxMhR3pX;r&uRXJ;ATWdxdYX%rByQ2Tr71Q@Z>_3Th|0?y!ij-qA{ND*4DEH~f z-qoFA&xti}k1%Wv-rgLrrRmy6?EKd?UItrBwWcd;Sxh1jQYqwsRWjm$!ct$b)g9}a zugMxEc8GH!l=F!9V8Hzga3h15d~o*xD!&^WzK>w?~!erE5768w9uNRjpbbICuU3lCMqCAI+y*~6aJ0gsc!;eO_t=Qp1ZJWH4o950XQk`6H0{dQ+ z;h*cTxGK1tI^J{lk!axQlSi^Jt28sxe!VezZ{6|rg?4|)HPy(qSdwqOjLJN1jG_RA zb5H~k8pHvDa*BG{OcbC~z1f-(?(HCOoU-?8xr9e>Oq*?8(RpzLb zV!k+VhsK313w+nk^I0?R`1<)LH!VD?t#wf@|H21BBdYUH!~&KOAXfqq4(3t?xb7wr zA>{D!>VqWDN1Hcb2^)5?iZlF~RHp+n{P39!zcUsbzCCvMkm`WLN6k!LwntBncW*w_ zwkLaw&-9gE7=YVP9%RD3C$qfq1O)PUa&+iH(XEU6#ZK>K8@-xis*z`@nQy%m;Fr%o zAqOh+w6QeyQet6L0d9>-^G^stq5`)3hdNJJfpq?(ULc_PdD>wm#vVR>ro=%r&UoRO zjq{FT?BVg)I%LZ8FTnisvUhbUo&OO0H$YN!MULT;nJAp8k5^G0E#Ks61SM3^kCK!X z;^Kl>cZ1dHjm`d>(8?X!yuGz0a9c}|c1!T~mf#(&sJ7K_4>xSb8GZ-kIk7gJID3@g zC%JZ|?CMV2%gs2z%ktpmc=zP_ifh}VvjY`=f(Ka>eT|RChE($HvKK#jG|^iVe?Qo< z^58%6ZI)*n&%@Xw=4nQA`?NzE^Rz?NC9rJ9`IAuq25L$GZYWzqW1e=Xb}j_K1Nl|X zn)$X%A`KQ^(_V0D19?;@+ATpkt%!WR)=)|IjwlYfYp<=K<#)02O^x8P)NA++&f6MoQ0L;m!LY9GQY zi#^Otj}CPe1=RVj%{G25%kcL(W{YwywDPRz*gtO-prROJ#8R|zg3%-rP$n0Gh=2nD z!M_3tsG1G|^H9}76v(w+5~8bdV*Tq!R=?)G`t_rje1M-YQUc2Q|NBAU|NF~)xLG^9 zlI=TU&Dz2ZT7tEk{I@h--GJd=+i(eNjeKjoyoSZ33TJ8&Emt+-u!2)8>1slpJ`o8& zCLgdz2D>$|&kxdW4cd;e*KG^cZwoVQi!g4FG;5Ex?1-`EKuagyu`3a+UUjGL;ie;p z4|z^c-m%_7z#esV2CIXF&Bc@b&5tK$y<$5$)Lj;SFl3kF9&% zd-ZEH>`DH~D4-ty?XhO9YVl8~gGB;_G+2ZnFM~oVn27?IeB2Ht+M77rLD&=IZ)*XE zAGp0WXh&BXViFi~42yj3!z4_9e&lF#kPxmfJ{LAKHBnFhbd8U7N;cEn}{%eXTVkRJ$W%+n5O z%+n4POTcz%5tw`lP;w!~fxvD_i5l^vLI9x!n&+n-(y*r;(y*r;va0~YFD-%D1p+OAUnTx&5+KMg zvDZvAS>(Tc!P!moA;~$i3gtO+e7-FIkO(Q&|B=pr2>%cKH>$<|tW_W(f2Ket){Zy8 zP9$-L?+14!;5;V)Is8_f;kSk8w}pbkH*N=qA8FAMZPgJ&I{ckoso?PUb2AU~a=dtX zMqTW(!I33I6F4kO=__ zRX}5&c1UBMcE~INTP?Up2Kj%|2xcnzl1+g|I&L&4c~|?aF0gw$ zL+`g)#tU*J4xhxHHkb(n(kYNa{vjgJn5P}mn5P}mB_M`hS^^UOS)%|Y7oxU6#bfOJ zm6t%7y(W+k>3xpXl5o9+kmsCOhsc-3UR4Pw$^XdxApV`;KB#{)cXlS*f&Xs_({BpW zZt&au@ap;pm)AbHv<7&7cyYBF)^KSxyO9Mop)W~)3HYCZA9f#YY`nIq5tHBKzqKhq zyEzcZ-_a7R*BWBb8V2N>wndt^M_aYW*mlI(a}uDXv$HeBy(?{hcgA5}mKQJgC=WUO z6Fo&|`pT}r7M%&W+{{waT2gxYnUxGbsu|Qo=yw~ok7<=UK{k8!1%>mm0`(})NOQ=3z-wN1A zn72paJSWy396l$>4Py@u{}30j&mr=hQ#}QzdP^_y@1~7&@4zirYQI|`;rU^~cko`} z{ZO|`j~@W_41?FROcrLFNnx*o1W-}HPzXHpKma`-I{Y#!P#6dpB*4l)sDNk+l{qY_ zbVU22lT8-|>1dqWG#^rTuT`&k;~qZI$)`dte=M8!lQT5_L+t;8_W#K2e?a`-4(=-z z`~S8W2LBKIKTym6lOcnm0@CfTX}AoAavrq5h#>#UhQ=$f>1cD)HI(W!1#E2&)NT&a zX%5zH3DIwXR0p?o+9EC5qOCh(?Kp9coCKH7WXSOMbfq8Yh73RZ2rt){mwy6f_(iZ+ z!C&wodvX9iGxw=%>Y~yNtl0L}Ce<8WlVhQkuKU{zLm+<l2q2@p8 z{19%Rz#eY5!4BVVYm>ira{%e^AJ4j*BU@|^ZKhmHgn4$5=(5P1$4utyFbus_vP zcm`viGtt)sZx5>y_Q?So|H((!QTIPf@t=hFZx!eN%>1h^0it}skFba~Lq2g^0i-&( zyhY>#_S>2v!w-PF&vaXY^;<&>5&02jZBdr((KhX|_8oCf9f_`-A;+zs@jxEz?9Ji{kJ}@~HzF z_S8cv^RzLR0Ba(oPz5y4PdlWj0C|3zu}c5~1Vcr@x=d`R3H%cVo*%HUa6sW8&w6pB zo(5F4M}B(U>nGI7gibyi@Qm|R&gG0r@`-_J{1f#r$$uc!zpVT#Apr{WP&+^cjmTg7 z5c)_&s)HIk1oqI?K^cCNIKv0*^;)2?4aE*W!lEt8x;@6O9rBz+m(C=>p2%}NxY^!3 zj6DxI{Ih_)sI_8puZBa(si&wCP@n%${U$~Hv*$w0l-eE!JZ0K-m=uT;P6da!_C?vXB<8! z!L>7KcV{XpY`e2Oxj8=EyyM{TdC6}DlpISpm_ z?bzXW#5r~(xN?xg-`kmXusahRz7IF|IIrL&%J7TN57x(s+H2sh@Y&ycBI4d}O7f{W zzA4Y{?R350rR%?%X|y2ISOc;hl<-IyR)Oi_XDqjTT+pJRfp3T`CAPOd=$K}Il7Y?dbS9N0dMnwiMq`;*w~HV5f7hZwYk z8n=X-wGtVAtQ|Ofz@7suwyCJF?aK5-8GarVw&3tlo-=$aalHG^^hnRoDt+87LmKpS z@IlGl5ZCfU-({O?rEdRqn*M7UMj9E$8X3^u5o5nl%s;6DQ)(<&m<1s~X$jDhAKIZT z`Q!}Fg@^?LLI`v%&^$lBeFpBJ(aN_1(BmTixqx^^9|H7IF zV0aZkq6K^?As;Ohqk9Bq@*L9PH-W=PEu9_BxTVt)YSe-0x zTW7L+S1MYu1&0rvOde$Tc_*Ng*;nDmzneZa*a4r{#=x>FQ_#R4xSd;fS|{CTL9+IL zrRx4Z!(bjFpK722()r^76u**OXrWX_1pHGZps*sKVNX3IftMXfBmgRq7zzql4p1pu zF3q<>C}QR{fq9zAl24tH#hyAtlRydnn51G`t!zup&>f49tp)5CfO)N&Pn5TG_z5{k zB=G!IK=6Nht9<@bgb#@P2l(HO_>VPj4VU2`$e)n_>G0RU)}V)%VS~_mWLGwVfx~Zr zPUf{O2z#98GzTGv-x6Zj5-Kii+oEjRW9-}GoWS9C;KCO29B}yE***w+?C|@`;g+kM zao+vMW5Z8p_ilktrpNkjWZb%HRkG*Hbc6XR+ab@HpJBWZEFB(^=Lc_(2ASCKDX|KO zo(~ZV@R$+>h%AUu0Tu$a3(7dAGEW=Jl24tPfuB?XWdL`|Ba?xjn4tnMJEj6JI|c~= z@IXFTy18bM&Y}yOHGJ00_xNc(!hZDvWUEj=U!DXgxzO_r1SJ3GbF{WTBtRJOk0d~<0FMEC#5_Do`k&}BD2Gk)qlreg8Dv2?5uyYFM)IkXH1es3 zROV@8`4WJ$Z2YUI0$3de<^lc!8?7`m$a6HjSI%{r^SxFB`4W?mPf7p=&p8l~ z2|sN><^QVbd%<>$`G2Z}e_w7E_*x_FRhfiV; zh3!_z@EiTNH$q_>q}vp%-yA~09vnU_UBMQe1UF8yJ1T6UlbPw&olO+Br+5Wt`YVG3 z4TaFapZzUY)1tx7qTm}BO!A#RM&#@KCe3huI{10R1(H+;yuHMvB|r#4{AdE4qe4L3 z`NvBD=upBxoW=Yv2E4OOHOY$jS>-|$pU)_V*+>9F1L6O{=RSP}1 z%Jk^Yh80`n@VSuT7hUMD4iUCi%pQA)0TV-AEvY9;_I?FPPVzQr>AaezKObB@z)zTj zf9(8e5`g3fM*;C8aY#sjT>K&iND&&DgbGj=MDULSLAKe93aCDxaZL66)G^KT(+(NQ zr%uXIfo%Rm&H(Twup`b!E7wXZQh(98O&T66=O11<-;+pnP_`puh+3uamj_t9Qu*VFxoHhDyg=8Kj_Tcb=d;~v` z535&@>TGVjx)nN^$l(Vf?3)nwM$KUe`xcz%w8c8K$2)i6Jf}1DKvz1M=bYf>gTp_K zR&3jACI>rUBQbOOqV()2x1lBdY?bfkJo`T-0r@(=O*6pQ<2(oPFOdL+eAt1s#*)paJ|JB zHZ4597OGn0@Qo#jK#)&9GDHD|xzIB$2W0t=a{D~-;6LLJfA{GhmwfTpKdt=n zpA(&F!UtjeyJ3Ch#}WT21pmg(!36)C5c6WUPx$;z4Oh1`Ttno8!$+OWU_72lAtUq#Tfn0!$JR7X>I5pj-$Uu_*|IfXjhwTojYB zK#m09lq~t=43&A>m=SyGq#OyrDRBE3d$d51X|5Tdy~qdBdvN$G=6kM$PQDEGR3RV< zke;99pBONx;6>#^GyLy(I6}HF#duZc>&)07B*TJa{k>Q)RghQSKg{@s% ztYdq;O9z?fWO#IEd3U2c=Oh=fFS;;zJ$jUL9UAzvU%KMA*53)tLS#CGB!FsR;2+VB1}GOIB_O{dAc2=1(6FZ+Qh}EpGfDuxkFK?5 zp|xg;$&vu=g=aTvKzdJN59AZZ;Q2`j`~*AMXxLK^m6iY{7kWm4;MltPzUy8)y?H^x zfuHW@2Mn~QstAjTZ#(N&l{;dM>EmsxQ z$F`&yEKJz+?@8LfNzr{hRewRMfd<$N{KObbK$$=Q4u7T`mP7&Q1+fJJYB?;41rP`* z`+`su03jg$m6X7<4g?5$8-zW`B+(f1oCTgg%{#aPR%~&GFTtMVpIrqQe&An42`J2k zlqv_5TPE{f_3Gj8|KrGy|8-*H!h{3s8cJiIP(D~tn*U5;LxkX7M1SQeZtniBG}rcc z+tw&ESf6bQ)NSO71y?5uxM-57G>KOe&W_&iLnRrNt5uOE*XgBphO_R{4j()ju3LJ$RttzlcKW~APtD_db7G5|mC(298;(9Fa} zW1e~_69sUqpMYP11Rx?P9SG)Vjm&%Xt4DtNoyYh80sG(L4s5)W8`|G?NA|ua8UCXL z_aX->PjmC2N_Fc-YKR`WA3acYj+b|+E5n_WPn?qGKS$IMJMtiQp!z~jfoFH-UQRNU0QRj>me9{>4mSsD ziLh#cYzNkD<6S!v(dtzvq&itX;Pa8gFFe;*6*AIPg7TbMf59zRU8NC)yS_})c`bhP zengv!-Xgi%LMKUT9huuL&=Ee*L%2)4CjSdgoN|#`~($ zj-#i=e|cupt*C}y6sq%wDo<`IPj@RxTw4^o{9e@3yAez7Vyc6ACd>JSvFmA!PbMF| zEw-+9R-Zo6a6A8zvha^bFZwN4kLoJ#rW`!K$0lvj=oqs%qK#jTwdfXSDI|Oed-+0F z0%(CHJA^ePz>_~$fpnE5Agcw$f9n!pUP$CWSw$1> z32-5h1V{^Pr|iYs0UVIaW@$ghPVb0OuU#{H_)KXHdx`&cs{n+cg+2Afc!%KUL2Yk4 z@ux^Y=7r>iU=yAZG4*wiZ(i~m|5D(0UtNejSoZUo-yb~p16nowPn-IvJgfP3OyjSy z>WfFJ@<6qBX^Klp{F@_ERC*IHZmjJF2x+RW=nfT=*J0uujxp{)Xe ze^CN-QbH;L9DW)KF(c&An^Zt8FslWUB6t-5`5b=mPtm(Y6(BoAx*$8mB*1)8CscqZ z%W>=>C54UN-dR16=iMfDG=gZ-j)*UJY-6Znmi}oY{b+oC1R@#A%%!M{ieckh$ zm%JzbW9y9W5$mS?k{9*#N$0TS& zhr&ci_!9Z@g%{d$fXA0WdGwAsPRY9Rk~$zF0CsIua170P!yr z0!aeoh)5KvP8fmWi6|U?Q35Cgx?Tu{0A7eT2>7X?_W9T82=E0lARpc-(7e|{1K4|V zIPMe4;bS2W!SG1Hw_H3!0$t_I%h%7~zdZ>&$6RRR)Hi&lyoQ9oZB~!CjTYCl!>aFM zp3}+yU>fs8edqVeD>Xl-jQjMRabw?|Hu?k+qeuq++k zeq(9sM!2049L~(zRdXS6oDJIdhYXp`4t%)7-}bdR;9 zkYg`ji?sJZ+NS{g8VO(us*Sx|1xy0ug>-_I04@P7{-r9Q;h!gesS#*R0=Oxd?h8ir zN_Eze0EE!01gHuK{CA)VAmPK|1O8+OJ%7`l+oyL&wnw;6>gtIxzBc*tm(Nf^n-X}# zdkXMFXv~k!`WY%{vkE+00^SqR)&6DUu33|GWh7MQ?hi{X)R1fUFQ;>?88eRG?i2m=|i<4p0eTqfwfUwthEdx|2T0 z$5#f#+v)k5^xQqO`=)8+b2#=OUkW+%I_qah0Cho21-O}u;OC*kyw1x%RRR#&8(tIs z>GtJ+eQz_WAjs#=xupAbRh=gP>4VzeO3ppJ5&z(_|ATV}9$Y-~@T&i#>!H;b1IB$a z1`?Py>5IoT=O2{hG#BO6--uCP4p5#wR(mVmGOdGUv2Vt}u_e)7y#lQ`Qx z;WPdcY4DF|(=O5G-J&hJ$AEl!bf5~vS&FttO8$}%*g|H0XyC(M(kzI#!|W>YuURD7 z>m}Mj2zpEfkN_6wh@VRZFh7F-5vo9|D$wyloPRU|(s?;l1aU`zuxB5LwblFH0QSDC z%Y?43PBk4KOD^sQ-=K7Xvb^02Jn zesMv=F9~%&DjIL+;MuTGn$<5lz<+$d;$p&;m)hD`NJ4D~w-{HtQB+-W^x) zj|KSGl>nE6V1%^2kX6q(D>TJD1qo9`^wSa}a z9xDVS1fl;WQ>1Hzs3YLXUnl`M5iQjMc`v}$a7UsFFc)QA05t+^9K@Ppn($Mb9AyLS zd+wNy!#Q1DCs4u%`8;&6m%o%Vud{Af0$sf)chO;9=cP{O*Lm5ALf|tMCFV7^ul@#y zAGmzN#kj-eznsTCs+~;uPoF+%D0_V8yuKKsHHKflLB;lXt{O_!9rL=I27GBWU4;FdfBc zh?)ZIk@19|?%W5H%yg$dDUN-@t$OdAflVvIo?9J>eEC9-z0O*PeEG}PRM5qHGB%RL zXrl!DiG={zBinmno-?zD!rkDP{OEuE@k9pEb1u=?)|EW?DZ2U0!KS?JO}Sf}ayB<* z`!r^HHfFjvA+kK0bG+{7Z+>ug=Yxv}s!s3w@}rUCJ{b-EpWH8h@<8?U$)o4|D|J5( z?2B`Q&+N2JTl#LK;VThy{t;!;MPb@aVMZb6A8ShfLiC8S=n-StGqz<|^+cx-Yt68? z?j5HSR(PiuIAXq-|(SUDuGZrXh7rL)zNLOqZq{ z&*p;7_s{LF%HQ?nMCFlSfGUNM%vVl~k_)~YwX#1&!Pi@~oKXWdG~TkFN!=*QdW z(Sl(Q@+nXPthoea{FBe2V98(PpWHr?&uqW&0jdJ_`b-793*bNPo#a4{h!VcW1#$lM zQXFLx(1O2pFO=cjD|0T@hy=S{zQ#SaOzTeBenMBk?}_6Ildy;NZ2s{XIrBPe9qeT< zF)wNjd#MCq(OC(=7qwJ@=Y)T{e(|3^lV9Cs)IWXSqK1lFZSvHCA3S~B{9E}C53a)J z>~GHB-JHLRk-xbq)4MUG; zi~N%iNDkn<591#{qQF|@U!N^NIMV|Cx*qO0fC`YVWfFiQz`q_V0eUIU+J!*wh1h76 z$an4)YuEFbara%*yZTJ-;yV6yw+U}}Ozh%G(UtT6r$_*b(8iv~_nPzu4~^%MlP_Pl ztpXkYuk(^5fZ6F}Y}dZ*KJKrF?B2=`+<5n5+QWvhFDVZ$1vD4zY0lr% zRIrSGty$1QG1T+)!TqA_!QQ?BRzGh3@pZvFDZ z;hp0jk0NO-z460|RS8Z*gQxvx*vywA4PT2g?h<9vRS45=QD)tv%z7xqVC46THtR(T zi(UvJ`Rgp01T=+!lP~fgYmGtx6-W{Q{5<;5f|!>i&?mvRFMpX}*Ds!}A%q0xaFQK> zIwKq}Nf#{n6aNf;;+)q4PQGyEb_nK2<%bwdLA_B2KHPhyzVys4fpYHco6(NUiX~vy640f!OCg`kVqWC3`Id};9_ z5OS_sP}dV|XG#>uIzj@6tS{>hZn&=8GqqPVJ{C*xQu9 zv+3lv#+*%!S>6qBJE`kIemy5YZgE}Af;z>#I)!tsVs2gZ{QCHX^~uW`($_TQxZOXs zsVZkPR$U_*}Ulo;#2A>aNr+~CznIrFC7qbPb%mMO zLJ1)L+m=A@7%K|F`N$WHf0+bi{M&&4J_xD;tPp^IE`bEQzFY$Ij$PkG`+mue{gWK} zCEE2N!%qR)dHxp`tUw5bfNFtYged=`3h+X}7T})+z0b-4S^$C{R~BMB0P-`ONedCy zg#C^gT|K9CaRcp>-T>!BJ`aI^QUUQl;dKud^cfzL@GD(dwB?Jscurz5xr^uIH-wn< zx+e>-N$}pStKiR)0R9}WNw2wl`B#sxUkY9|^+N2S@?S3e@q1@mOJHAL{`hX*gP&rW z&mV2VNaxf(r2WRc9gR6#8?${HGQAl2$oZ@56Iay5FRhOy^1*yt6S&J?{`+1_X?i&m#~>HM;N>oY21~< zq+6tE_ejos%PUg>mjJFp6)+e0Z(RbGy{R-X3A9jw9_s~A1@sU|_(J|?3P=&eztg~ErvX?{KoNF*V15M815r>RpqESqSg^W)qTqm!5&X$8KQbW* z5@14LdttCZ`b-6M7eM-4J!JbN$KIj%vho>SJ%IhBH{2(`;X!bAA*v_f+C?J)O%=e8 zSQTJbE(DK>uXiLoCknuG>~*efNdWJ^hzdL>zUn&eZ=U1-v1LZDSa0)Nr{i1Rb<*)n z`>#KKds0{Q;HTK;bHE-6e;-Tu-0HCQHp8@5A6=fg=Br4P?jbY&9&Y%$ z278n4cr((Z2jJ%+WPX_n6lOgs%vlKhqXmEq(nvs10mmL!Y0;(x2>w_beFV?>vdrI? zm4LqSHZVU#JC8)-pGm+L!1qgX9F*iVFwwrh82wNVgo?oVhXkMqGD5iaWmoo+Y(EPU zg3u8NYMtfTDeQ34VcHKZK34&* z8VRt>Z-uLVthIhD7R>Os#782UG%h z70|%XD?%Tt0+jzLm<6I*KvN?JstYN&|J}K7%Ayf*OWr$XIcUrD9@wkJ^d61{*`DAh zTS9@H?>+$`@=q^C7bIVBA)o}X5a9neOW@gs03Gq<*WJgzyy5fz@S61ME|Y;LkFIX2 zE^G->$KQGSsPVVbOPJ?0ojTA|z_b0HrraG(C$~0cZKB>5*r&Q6;bX8;_KGs=8EM=tf}(qbagPWSA++GSa50Z9Cmy^KWNjvOPPUEI>T*hO{G)ZQ|yLpfg^ZmSNnQHNToLoC%H7U~dlb%>cd6aoG%Ya?wK z|MMGCzH7={+nn!Fk)_4|lgEt>g=cTYZaD2dE^F1>sY~BXS}-i$VL*(vew2An_#7f% ziszAlV1eXDh)+RHR#W_QpAUVR}O&{jOy7`GUhQ@=xT8@3f@?_f{oE?@r5^~=9vymNH!CqJeKJbBot1M_pd#ABNp${*d$Z9ebIhB++ZGoRB)yH^_< zGCb?k-0D*|)F-d4OIlTzupAD*E_O+6%);8}`K-NlQb#zdL4KG>eyF7?#9S4OFk@k= z3N}@t1i%7C+SDo>>*9(3#>}-%+Wa@(PAJdYb~k?A4~I<8Y@U$oIyPg)JIMcWjss(C z`bL@eMyl7q&sETl1XxFaoKIDNV=uq*UOXFY%vX$N0A=)QNV-!6|cxGYd2z(P1E|z+oVnBDf%^fQ%5{p(_;y z3MvP36(rmDO?BuCFBD>~w|{o8ZPR*qPVDYFzMDIa=uE(-RS);c-Q6Ylg&Afyf}e*- zyM(<|4!}PTt&UjWoK1na`H^4$of7au1)1>bhR^=f&K^d>Z!Fl?h*QdMJr@GXqtgA~}U6+87&a&FL zB}n+S(U|JYQ%5Ik?OqWKSN zf#p}Z1lS;y#-UsVS`rZ9C-Ra1B?+|P-hMCduIl$gY4eZ11$?5?6FpfR>e3gcLWPTa^v}P74LgYV*@t@~j zk>w%qKjCB5<^3h;t|I@Fa$P^qSn+=H!Z+g_1pdkM6a3GX0Ovo-v?msHMaapQug!ZY zB>07e&dTF|j7(7qR<24Mn@ zrTt^W=YQEgr*G2EdA}CK)mPlrX8Ac@J$-!tamBTVH#3_r1vQ;M*qFb!F(1==0sHza zpZavdzK&sEo5Zk>C+yV>d$qz@9py;abB9mZTallk-j+;0Gd$ew$UIMwsR{x3>8iv3 zcMTb9nsoTTB=CRrxXqa@lXG3a(C}|f`5*j;Yxr-W0?`ZMW4tLA$QSvC1X@u6_-7Jm zO$B<v6=&w|=c^TS)lp8WNC#DfohsZ`rOEadD$4f2-b@*cFjWSds3=6*Ir;KyTl{Cr@;~@b zbGw`5arL6ZMP3H(C>+A7d)3YZFre^d0!V)B2c1W*xl3jwMC;MW(zN%OrFn|?fG5)hp~a=tyO0JO6}<|nq91ZbT+7yP3I;LL+?E+5!M3_ z8}-{cvyb;webxI+SBypR`~i0S>SF5~|0^2J|{%>DRGT10Nd!M|nE^&1&xA(D2)G@I4^VLxz_L26g2*O?!W~~adQiWLp zdu50@3ywX=C-{X3GEq{Pva7VlOMJ$RBokq+R@m3Z&96&dTA#5R`M+Gw|K)=v>FyH$ zCw1~a_&4qmZbb06BY{X`mi$e7@+zS5KP@Ey;JFdvB|uXJ_#lY8AW;I0e~kn<`E>0^ zp^*TRzX(5#eaQ2~+f#`A18<51d&Hn*XYfBV$#IB~^BMn`3ne=ZPIerW;4nDEa=<== zex6hMxK7g7U_V*kbF!YNAOQ$Lk0d}o2{Is*G4Db7O@90vzk4BThXf9s5X?vp`&ACJj>K)dH;%K6ZO2l%H2GC!#R@31$a zf?n>T9b)YOdI3QW%>46Oz#9ST1(4na^UvYek$`M3OoE>;w1+}(c+jaip%Cb*ppACG zeZs45-~4mUr~lzG;gu*)vkUP@t1!=b@|&)I>EP=>p8Q^01nlo$i)uV`s3Ct(L&2Vg z{9O&e9zG`%KF6~z&8?36oTOE?@zm9-$=)wiD=6WsA{|u`z}{XJW~&UfQH5HoLame` zmdX$dWw1G-CdjNN*c73a-UCgPJOuJN|F}x+SyS4Nvj+bIDA4WN4gzTc_NFfd79;_t0!F*YzbFKu7U-cCxKE}kz{#hD zPzbttq6Cl^5<=(&s1asHNG<`aW$ggDAZ;TgR{_>21n!8oB!F5VQ-SL@|6KRkf4P1A z@|KzUiQAovu4H$R@m4>EFXH^I`q%qEL^Pf`+<-A={@#ZC-3_@r;dAPAHr}pujifdoe!c;QoemxamUs>2H(j9s8k4KG< zORqe*ncj3Uu<_J^2Eu+%L+-BnliLXUOz*mMkJ>cX+LZORNo#5oSE}QetC8?y7O9xe zQAIf;;VUET;d2OkM2M9#lx2IC@Ckl_d6E1eIr+vlfkM0p|BW5te*xux@E>8;JDmG} zPQG*%+W}q(B8`~@*zTAh0meV81)>T#|E4%oAxJ<}fe633p2C8KMgr9Qvgj9M)i1`H zBG$S;LW_LL{{tzA|G^aCp9j_s6yP5>EF?G~{|`~v4fVAivw7BFm&yHHr}T55+TUXu zB%tA+3qg_t*McAc5<(v@D1xhi+)*D7CJM15;OzjP3$cozX#{AG09xQxfI4Dgo}n(m z&lfEDYka&}L7>lrx)*pfD{lFC zQ1`ItOw*;nhWvemecqn>yxsLDx7THFsmt70$9zt0$_91vT6N+ob;1f&+;^(j#j5Cq zO2vF756i3W6;F${0$+7_Rv_SHYa~!g3_5jam12!6r@|iglY2Rb&0MBpf z9jrZD2`&m!hbWM~Uc3;9Re(AItzd;fn2WN}ki048{L@Y`H3HNNNFhmJd>3{{4E?B; z{Ldx8_~*5N^Un&wYi{4XvhMT0ZTRAEhv$BJRg?L_>##H zd=9WTp%8LATLc)_Am|+<7Mjd2e(ag=w84M+Dqa3BwdVhk|G~dizX(&x|KPuM2^e*c zfFf`}NSc2NLJ%b&v;)iw3Hcw}0g@01{wNE*Cs+yjM_A3ga@#n z2L1*>?`V4=Q37~MA@@S; zumqO?>xiKOUJE1@h=qUzBBlLS7r1xw>sQx)`d{nE{uQ@R9$)nJuX$0Ozv~3_v&Qzp z&5VY#N9yzU*5^~Uugl$8m$R)dds7{JPMUjdstd5MOm z3A3#UwXO-VstK{I31;4&x%%orQx+!GfyNX8@-V6nXe|Pbs@o1xCR{8s$)F?F}!82mBO(pZM>K z62JoHpLf1U{sSl&|4af5dzSp;xcMQ^1OB-Li2MYHp$U$NA&E}d`5hKvJ7kB+D4#ha zIrCoA2SNgDO;<)f6d^6dxKek0*7?(p*St2YO>J#G7JjhspLZ{{#Qe z^S^LK6+k&)Mo6$UTnpm0ZT{WHW8dnZt3Un^_itWNcv@bJKc+1D8K-Qd1pa)BKYssR zb??E=tmdl`4W|y0!vXoZyXsB?`^~_>Z@8RwN(T>yQuZSpfSE!p{}aHvf=D3kk3Sp~b)Ce_XZtUx9!3tBn5~*Dummyq~1Q zzhU<<1gio%Dxk5Ck$6CYsetj%_ku<8sVOG@dFbYUjRcVPwfVOM|3a`9n3;dhzs@|Hb7M=*y0;UC21TQWD7$jQox`5KaR3J7BLQ}w}Lu^2*<%QS=fiM)}{Bt4D(xa#MoD`5?% zzo&!`drw{M4zl-I8*4MXYLW0od#_4ZPWC>A624L~PZ{N`jBrwhlh3IMwW$fSt`4=T zM#5)4r#i@tBG9yo!nlgae@^V><={CaAn|Xe#12}NE%X12>&gGL!T(X4)0-!A{u5i} zzcmTK|L_emzG%e=A@g(oSqadV0P{c80_Y(CzrvCt+JYs2Dgk{ds09$4UmG(2tOS7n zL5%;w#J~Mu9!vt9|6wEnN5rrMC%}&wp6E0x$@#5B$I)pE-c4Be@zz|eGU49YyT=GNJi#_D2imY?I*ACDRym0Z04 zOKRgq|N4S`ggte&JL+<_qN}Y<_o_{GSEstDlh&#eR;gH5tBhH!j9yrym|qj+Tod6` z1MI`>s>5unL#?Yrtg3@8tAj17gUrEvRgft~pouKNzj0Ln1@k}baZx9)QzfoeC9G7&EmOuU zA?%}o{aj#Q9qv#K>_cs;L#(TVfxT6A5W_wYsh(x~0Mn`fkk5eUSB5=<->52pqII9& z!S|o7f>!xoMEsw0eFp!_-{bs8S@jD?|Et5lyb7>^r$D~6mNx?II1uH38i%qjfaagQ z1^8wBYf1o;KZ0yeKc4@^$q#kDF*XAbQpyX z@_JR$8Ug#*B{k8DShk;A9SQ6mtHUYVSA|$tg;-SuTUN1bUqudwqKab=@)7<*s^mfWjF#ilh(0e9R!3@?Q3liw>L3?N7M2K$<&|x8T#B4OgPYRI=a8g350)hlk2sAE; zQauenUB7vC4dywY{~hz3V++5!aZ=IwQwop=ei_H_e@&}DeF!FpvOTcRC7)B9xlx_r zMcAioP$jKZ!RN#;SH^u;6SKHRv7jbuUUj5%bp)`tXC}vnun!^ZtAfmdJzRZdph+bM zUbq?y1M*P0{}I=y3sf2~{}h2|r{MTO2vHQ8xu~WD z2=Ht8$6b~p{2>2guq1CIPlV%#0A{pJjeJDau_?Z+Cu7LUci>0-_P3 zCm*_f^SaAdudM#)KfEV(i{I*WDd_|~PT}bv9nbLcPvWaaeyh3F{A)(jmGHWP{dKv( zes}H3oweCpYqK`hrhBW?+||jj_sr+Stx(2(r;J{#RKVxVtBHWUXV{0@Rfh;ZhY~(v zFOUyo5ArJmj9C~}`m+VD{#a{AfKg?;@ox|Xt3J=e{|`rPPNDyW|CjPV_&4dr`G*8_ zRKWSCD>jH(pb!X~zjP1|LZIVtC;>cVd%?*6dO`>#020uTqOm^${8L2ZYAKZfU_X!r zUkr*7CO^#l2+5!EZ$CWFVNAT^Tk(#_`Dl2N@JA;(Gx+C@PDacdle*xoqmb0vwj0^Ab2dgo!9?0qBZ=1OPt^8j1>C05?J)fBm>u){Om|>({St zn=>%|z{-kWF33rK-t`}k??0;evGHNcg$CYjbzi=4@AIZB}RasM9=DNcc$` zREcYp@hg?F%W7hl)F>9!L@lU}oLe2?Tpi|E9cot<%6v|+Rb`N6WspTxpm|lGS!IAJ z3zLcfgi!^-Pi$BC3sLEB*y*V9H|%5t7*^>9>oPEF3Noz@wWx`-Q8NEio3^4pXG5$0 zhx4D^l7EnI(2esimw?1Sx?@QKycR$ObP!G)`$!UCc8ED2)&-FHL6}nh2mFkGW_~#Q zTm_H-xBb@S`AGsc41V%I$p6GY>wkyDIUt6|6Z}a2BarzMoZn0Y`QTq9KLzju_yupL zE*O*X-G>?9eUP^3?exX(rY(9WWAQtw3*SC!F=~t9$SuYrwipfHVlW&MU_uxM75Gps z800+*5*UV#fF!^+&V=bGn~TB-kpx&H%=X2Y|KTnO{$C>j)(9Z^kMFYni+`>i`_eAc zkvYEZx6Y+Esmh+0cIoptrSPcu;{BhK8qWFFU@^9B%RYh@GM9dkweg``X++lI@rsyJ;$B_?`KrO zgVH`>uM;n*g3kYXfMKN&%yD7#gc)q8MRlZ2O^5S8_)nNWG8+9a_dgQ<+7ciYNc>9+ znHQ2&zz#(VTfn%XfXJs7nD@W9BLDXhf+WxvLC(jrKZPKHfzj3j!GAPQ{;c8Ulh0T? zz&|wBepsyi=s1TF=zJOfBQffyX+JXmd>Ed$Qy0ENaB!N&p^SgBK<<-z;gu&*MYqsjJU>;vI@nq33zbMu2}H!H>jY{ue#(qv9Ng#bf4)o|kMt!JjhktrVnv%K0B;Ed40+yN|P$eUiQM zvz*mm0RB9eiMZyj|K{Y{aXD+gJh}RdoK>IYtQvcA%_qTg-`{Tf)=slA+e}ApGe(Sn z9YROE$$-4j#yOY^VW$`p;M-(6;~;kXfOrQ1ra*2JdanKK9~-`U!+Toaz%_I3Ud-tH zDFu`V*4W;^kz9ZJ`?|cn%;Ce{?@(uv&rzj$sZ!jON$YD8*3`tWtQN3eR28+LDr#<3 z1h98x*i*Kz2)3*Uwx|d)uLv@$#4v~YS%y8xCvU^RmT0Gi!E=VF6sSc|Kb?X=m}36VcD`u%$!4BN z`&0t@Dx|>hM@ar6{8j@0fS)zLL_VMS#M-|ZN6CLUY=699`$w_a<`@S5dudBx^*_m4 z@mV&@`MK-9%HJ?P-*w_?uj%=&lk(lCevsM)MpRW1_d+SxaL~=5wTkAHS+57WV$T zYS??~YUfpjb9;|$4||V&=B->96sdR=0lmwf5-{~Hp(016V&_CFH; zrQ-a5D(-)|bdb;grT$lkfB2jbG40bvut7Jvvfvh|O%*T+@It^k;$9IF|4agrW_nBr zdVJKQu;@p@C4hxxe}xqV<$stTAqKJjcW{gyf}Bqr8~Cu!7yM(?kG6MIBAfG|+f7^a zZu*iBGnah|_;c2bJGt(gTt9Q!ZadEc#@p#k;#L-rflbn4&eN(a>fiGD3W(%nSMdTb!d4;fD|y|E?2yt^4u~ z_es6Cn~csp>Rx^Osz`BX{u^Jr{HW}Q#!JD%JO^V;-q=#YXY(Ag_blPZtw6%Bie6F` zwXh2IK7#q2Q2WXd>S`;3ttx^nD*`Rb1I^0=(9cp!TkelAF84Po^D`{-qigvIc^H(R z=vep}l(!v%U((f7hYEqbD0Fzu`V@?(P}D*!sv>M^qMeipi`1zr>asVKqzn6By8LgN zjQLNi{6hkg3XuOL323T-anEoB_dyrz4Y%s%7m+D zX+LlM_N8`A_jH_;KouC~F>NTFnwvTR^B&imHo@2$;4V~YX)_F7<{xlxtwrA&2GCU2-o zTnnGW?ETUz1$@r@%80qJ_Z49d6`^(&z&^yfJlL{4h+!XS2J(sd0FyF*V+K5!XYije zEMp<^-!bgv>gXK*5JlTwsNCO>M?0Ts?MI#Ee?xoxOA-+H=R)8{NaUZ!{wzoi2*y9V zGXA;$5hS3;ypUd`xjuroz{vm67HED&>^1yT^GoI*@N@ock^e`=*pJ3B9^`*!`!Vpr zkbg|_Jiz~M+LHG(mVcVP>T}rp-1XxN+@_rJnsIvLoHLt^&Tca~ztjBUUYm>i5VjX~ zSzOp@etw79xosxU0;vGj$Zb-A>-f`dU&So@Y>)N(yDZ<{VK!>3(a0@xhHsoT3_E4s zBmr_k9@B=qjPJeSn;uZX;rZWOPV)clVQ0U@6ZPSbCr_HH@88O)KkHkYw-@sqHDSL~ zoxN3s#x~tsnd*VYwkBy^4H{b{eCBgl!Y7|o8Rl3KYF`mzTM=ws9%NM>XjzVgA7EDQ z&#*_T_oFDIgwL=?+84=Z3xl!~6dg_bEkD_|3d&Jj+6s|#33#1FYmm1ioR0EebMb)2 z{~-T^|7F7b2mLSnKleX8|4UUs?t%m@$l3u7|0ca40oa}hQy#ss5R$(n0V)CDzYhWu zApb*?fA0TD1&nq)j1D33KZNqX?a&yzQL*qpjtI*C9DYoDQWm_Ew)g{h{_Is>-k*3iPa?RXR_ zS))^ML~fJvHhdMmc~>D{`H&c?gJc4`ys0C%n>%mq)DbaXS*tMvns6t%_Py8My!n zzaq@3l6;O`Ww1>J$36hqo0t2WmHU~N`eP0kF_5G=O2sw zZ#OK?engxDIe)ahNwED30slud?V*Nue7^fs_!+=|ez)bteRh`*Isb5c@m0U&KL)M2 z9=iVLNROYRynYJZ@Kfme9|Koi^IL|WUOwo2X`dYm0e%a@LG8$Q8K1XyT=c?^cAJd$ zn$mBN`Ma4%+^*-w)mL@?_&vMpbuP@2yPnP$mKU zb=7gJ3HxYZkH&UEW#qg{G`8e(VDFjF35L&sy@$6apHt?~y*=6cQa?kA6NaU}2!j?e zr}PBEpq+RjIkdq)bkRQKFZ@$xw6I&j@_%Kxb+y8=CVrtRWkoIZzsUb0|L69D|DR*s zE*!ExCFcKlp8vtWaj#GVn*X#Ct?~~=i0yz*6(IPHApty45nc#Jhz^nN;=4|?8p z-{iYZE%2Igc8l@(T^1Mj+g&+452^mgpw-vIU2iD7evRLHGim3q$-94v-}+13W(eVW zmJ_1NMohvuR$IKRXE>}ErB4Y?b>&R+3x-s-Vw>!+O#-K{S9wKH=Z;dh??@woY6 z>E-&1A+@IutMd=2^Y^QB_o{Ptsj{{yGd9(vde)H7*-)LZwmNoYRm?JAUm3NqGGcyZ zID8JX_n~&>AvWc~R%Jn!Wr5~p0cNEF_9mr%#-$v4iE0h@b4q<%3zEPyqU^++KRuq| zuiDlKFDvb8q*eYGs8S{V>HZhW|04gV4_ak;Ps&Ia>T9?aM=x{CPP5|6B#e zJtYYc^BVpEzaEo-UW8!&dH>6HzJ$r=08D-q!pxr-KBA8qePnMnSt$K`IANTZ%j2Gr^z^BfT@CxBVRD`BTW+t0$Ji3&9AT**vGfbK0eS4#hbEb+<1)x!?JN z3Yh0SD8A5iJ-P0DfI9!6I`4ogZ=dSqZe=z(d}X>1C%-xo34c{p%yQWK%BaP#_Z1QI zVDBqJ9m_-P%Y$vogRBYrAPXWt(5x(gCw!Aqf8!EAqmmPbB_|9Jt)%)^;pcBYi+>2@ zPv>7MJ#Chlw#&z}DoFeMyL|C}EBvRpPfS|<8O=Xg{*SQe8_M%P_?JmQejJVqL01A? z2#kL&0U7_i1W^7b6;S6(=3g{I%mSI?+CR#Yg8V<7d6Q;7Lt|`)#-j7JeKW>xWUSrr zSS|r49CCy6e>Zgr4)cu7TKPo|M*XgnPkF=nm|WOvbLo3$Wd5Im*WQTs`88?R?W`mB z@&k&_gqEC-D!CY4d@iE!bjZD2zgy`Ce@)s6Q*_OL*_Ff2Xo`OhUSIQL&Wm)l^f-m4 z>gJo-b?5!n`QNMa4yy9@t8(`$vv(>px7MU1;d@o5xK}5;P{IfKu^@j5>uTp$V2nxF zJCq08l?M^|nCFxQSd{sjmGOihfJu%q$d__Hkq`cTDVPLWOZe>w;otY8wk6gk|L9HH zl|b7n=m7s8>gNA6_ldD9#wr%Q8|zH{FXul5{)h7~Q-M7Hw;};?7DQf1QUUD(OBM(& zh*tr9lz<3x{RmTcA@EOKux9wrCjZ1goIfRhIG=c@(Fx8t^Ye^77VL{-n z^aH2@h1tI9n`iFhYu!3~{2pe9<~jFHHC&CUJ?o2X&vO2LB@%wtc4fxq>NKC46wm5J zm#TzyRdH)7V^_fHR5Gi>6MlK9LpgP|Ea3-Q5%vM*M82PCnIC+PN$Cj@d+zXI@+k;= z#{ZlW-+xQAZlXFOoc}oqX!DP|^2z@%P^Bzq{-5RlHuw*l|4xYgaD~mFNS6P>fAE}c z2ptu)lmOll3W1z|jRbmygLz{{zKI@d1mJ?m0s(&FpZZ@BelhvO0#S(kQwu;|2*aOI zF-ZP)nEXQm*zm=M7t9ZiI(#hSf5w@urspy6IW+gG?|0WjT>$p&%p--Tf=jQ&SN@z? zedm<2@Vu(%V$Hp?mA~ec|C9z%R9(-0RR1DRzyH_2@OaFcTlarSuRC+Rw&0K|9|`{e zCH$P7%B*cj_|>W2RmtvEi5sfo*H*@^s*G7tp;%fGwWvIDL3zZy@-V0JFvqeG+cNkZ zWcxsi(g5>P=I~+i341^0bI9s2x8rMAB7{Nlaf6cM#C-8_t)MqM9vx6k=OqA{{Mjlf z^)oU5l@;eO!IB`BqND4+{0E!>au65z5^C zH95O$vbNV`Y^hH7sY>;zN^-4CSYH{prXpr#Ma;5t#gcN6A2GiyY;I{Nuy-sCu`3O> zDGjnN4X`NnH!Jl+P_{2YoG@n08;QU(@{b#q0DG46Irbd&7m@%IQTyfN-z0%{)bY$8 z$vPA^)Wu#K?o+_gzEG>GD2JN3`O1`K>g@H!Y2be_z5-jP|4n87hx32TWWZ4a{SYIX z|M2`TRRMyZ+JWvNhU_?~b~}u7p;QQD{If$5Y%iE3z*WE{02QDFfPa!eBmxpJ=Ov)O z!UE=hAmbk;fJwk+kV2b(%KvsF;~hpNIF4rgzn?~9f8sySb?PY`a@dZ}*Wrg_i+_ak zkKJ-R<51C=u=1-(RksUNB|kJM@7~8(Hau#?1pbBQIS(5jlw7X69HBnrrz|+EEI6dh zJ6LmaZ*}&r>a1Y*!j& zTM}qp5@;#H50gVar^J^t56(fmJdp5(0PrARlmKdhRtexgeU2*70SUA(kZ1h##GH~g z;+dSc{{g0g7v=xB$$-PN^}nCq`JYDz_=gJz0khZgSy9MKj49Bjh7>ER)O5kspByDthe1& zow=+~-j<}S=|457ekwOa~@(=i_3V?qE?|*U63j+7Ni2ToI{-5!m>&p1YX$Sb9V~ej5|66Wl z9jUsJeZRK!MY>u#pVO>-a5oxYZoJxZoN`vi7345E80IL#z%Mw3}5m=Zqa{NfXYebEVo z3E)Q*A&wiNt7ReinbvcA@v+%O$LL2z6oLfWTIdqqLMgf*_}}0kg6gaUXa}T(T43Yy zAhU{4tI8;cYHk1j1@r%Pw^DwMUwb{qRpkFuiT^_~{vm;*)4K-GCfg4cQ2u9Efqxw% zB*IUHKx_o41PCsONq|%U{`C>m{|f#e-#94-<^KT)n*Rv=uBMIXZdXRrA>*L6yP_pCG9%+Bw%yL@EfwSd(>D>nX`vhQ9&&;#WE=lTyG3|n9J z5L;J2#n)enth*SB4XoNz$B^)qC-+om?Wj)QQl08kne0`OALq{NnM%#dY%zuWlgAi;B*l9HFe=YhbW7*iORbS<9 zn4Ir1^Yj*zbGxlC9-8;ViRC|qyZ@4~^LEzJ;`31*kpP-v>{~rn-g;PisrgoB)6dC` z*JA2%R_A=6`t)&i?g3@?Zdjd4ke}pH5${qS2dlHbJbFc$;yXtE!jka$C7k?VhvHzn z;vm~1PJRH$x8&rL&jIP6=rEFKajd^F*k;nSW}(MY7Ad*cB50{W<^prgR1Qk^~M;?HV|nhM!UiXrTg{ z|M1K&yY>_$An>nU0vP|00ILGB7Jwu$0Q^T;;bC-w1cW0%HY1?|mj8#xIN*4nG*3+i7{>faB$3ORfd4`&qH+X4-)}Cw+_0N8VQzwN(Ug zr{R<4nnyLiJS@BXpy=%VyZOyGGn=j_HvAA-e<4VH`WWW<%B)>5JXL@{5%8~PCVzEV z)Jj;L(g;reT;%+c5Xa&mdyr2FKhU};z^W*~vdG_pLdf~d@bH{3T#bvsKLtzvyaXIK z5UW62a54!nnP~Wzgz)Ds{;jfVTLsS}0WJQ^L#-;>@IMj*>U&qxy{0ObyeH;=@UMsb z&-vGqz?823vzP?95t7;r01V06HL81hrFan}o;1SU_kN`>m_~#=~ zz6<7d{Qm)I z{d+^%gOc+Piq9eWH{qL5evBjMk8^9Mj;K!VtAXcF+gO?GULLo$EM`?{)Y6iO#U)`& zOG4+Dgg6xkI~51P@F4Bm6$c{o+n~uU^0zGXwu@SiZdhwwEm^fjS4!LG+~H5THy zaUqXm#)Zd>3XdZU0Y70(V7D%T!lSc_j?Kacidbm)=URA{1n`Id|Dpn^FKBzg2D8)x z8DzXO~9`SLy#{<>#RZoV#xBpR15x>B=F2myv+~z&Ms;_W)=C)Y8`&w(eRCl z=jR_1XsRhqaG7~<+8c*v!T<355B@b0kg5O{zB9UoX~VCn0^9}hc9@@nqb^wBpDn}^ zz@|V{0yI^iUj$lUOhK^`MivNx=W%ft1pa9kOkp!7+J-C;cEP9w*wZdRB2Gasd@q%i zfUH%x?RR3H`?sfj444bDxv<~y(vbz|g|7y#Ar(Y;T#xepDZ*WO{iKxn<%`FvyN%bA z8-7Y?xT>hT5TZJLT$y{ICUbjL%ErnBH%k7B6@b4qd{Ig0;*yXB#lg-+feu9hc18X+ zAiwa0W#I{n!V~7W-aBEAVAunGQ!IolRRLBA{j#td@28b-bViC|Mu^zt5P>w?VI$IJ9@pamYqN&vb5+zy6Yfbq;X90Ynhc_BLpvEp-bK^rFKdrapNIJeX4!am1~-_ONF z^vdz2Kb%;GL!mzgue%novh-|pE2kiy{_&{hR>QT}y364h`>0MG#d)6UjO}Q9D-wzS zQl9+778Hjp1pLK8j>UoY#esIkEcqAuG5&qc3lTiwBj<~0Uz7YL{>lF^7bJuK-Z4WK zM(k>EPfF%TXVY3p>EL{(K=sjC_nsNYX5D*MJfBAXH~8mjYC{EV8lap1=U2o3Gyl^* z|4_k`$B#0$&)xCmU-nLXZSN$Be_D_trgUNa3vTc8&v_$hkA z2#Lp`c@=;J^ukOiXbQ^r0^}vY0umS?N`U2mk^uOp5)frQRACMNhq2=jxEFW?l>kSS zfVYzuyqmJMS}SWv@Z;_D+;hK^tUSX zqbTyTq|EQj+|CKpy9nla06!KK$9WjvJ#KvOxDgNP0?708E17>$1;l?Vc$4j)d5=i| zSM6v+4$tBr0(m|ObnNr!P&yfHmygyY!1%|RKrR3O9Q@l}{6*%&3x1c#p0-S$c6)^Zo0zwNcQ~?u|04)hH3)GiN0ILGS)i{JaWq3G8JO z*gLuF;c2)>poIiPInYKh_&3BC3h*v~`5&|ck_0p*picyML1r`sVvPW*03c4IA{WHiph8Xw!m{1 z>=5Qcr#2g(*=}}bhsD_)W)Q{cO@=w^zP=f|OZwj~Up%b*MVW{5%m=D+_EctUt4Q%F zPjWAdM+sP660x!*d|^?@+@c`#zxIUzwuS!IFh7C>e9i76|5FJ-Kn2wHG6_)5*DOT- zp#q^0NGhO(fhY#W>@#I>5#Q&r>_Tf5(To4OQ6@VPRpVlpawgxo*hr1w+7Xthg zlK)*CNWd0f)r5NihT{3>TmlL7B}d>N+rjU^ z2&G~iwDi-A<)3G+8b^g--2`k6<8%-lQNG6vOovYS%sK5dC*NyEzUK^V8Q_r-KZkn# z)?6!xpRJ$52&vBa68~AdD$+KWr+Aemx|YVdmMB)1L@X%|TOddPF38`8`yZD734Tc6 zt}o0F1ty;qkyrmjL!S2j4TI9SPuB zxR3z57YzJ63>PKvCZ2yw5?J^asbC=_@Jafz&v0uPhC-+XxH~v!-Gq}HCgr+J!Hg7g zKxsJXGAU=>c-%OTZwmO)Z(R%i>5YfgH>tru9EZlU5S>QSv#{7VUqA)P3vgf9JE#IU8Uz)fDW(HLE55)PiL8})?D^MR3)!o` z#!I}3r)H%u{WNXS`Lx0R=TD>HXgX6~#=*;+MQheLRXPGNMBkWgv znZ9%^o*jWZ$j~+597UYL>~rf)A#-B_07Q5wIYBzg@b zz^VWw;8YlBe=or1o}U#-z}JHEzb})34*y4y`Gw@qT#(>};GdNMnFN>$ zcp+dd0Ofxi2es%EX^H5Iuc1Nm7xF);0FQ$p7erw@7{MjLo(MFW?S*k8geM}7Krevr zKY|gWLV&M*oR4q5dk444r!0IwWg#lU2Y5OokWUgFB*4&Ef^!($FxzyguyVZk78jsF%Bm~r$NPw$AECKA%SX=@c{^5c!4tf*cfZvRclSVq5S#?p7ANlRHt~cI0YY#I5*dw5Ca%PR{@=IOo{0xJ^qlrS@Vso+ zp4pi!_Pp=y{Sa(>z8-HVliserPF5o+XasQ$ zApwT}d><77lm&aQ{6`7YRbD=0{p(_w9s8{BatLu!sE-QPkMUH%hXTL^fIB31fhM33 zhzdv`0AA2U(qK~) z0GZ$Btq4sF!@8tk4NePp%+9jzzZUd5RpKP(X?oz>0)09$d3}heep0UG!qM?V^GYf zfMqrZ9+`*2K`>v8C3CHDw1>$u&;@yvcrI+H0dL`x^-y9C7gv7)Wm_)qS<}~bRoTwM^i#t0lNBjP$`hQ*;`fwBZxck=@x!+8LM?egCR~(&9tU$lC;{L8$D@P`1r?$&D;BnF~Sqc?Dt zM9@s*bpm-)=8LV>n^=u^Hw26$G?4%0)c;5S=l$>>2moHet&m^OEc<`wSN*-$3JfiQ z(QX^Z1``tyqQYc>XdoxC@SFY#$&81u2X zG`#?>q3i3ujMklzzGGEYL9T@Pk_Jei?rsE1APppNv^;TtY25D87zchNkwAzAFUXV^ zD3O3R^@7-5>Ilz1{6~@x2{Hds2n>+_l4#eBFrSbdB``cVpn_qA@IOfc!|~s)rkDR% z|4{NJzH=kjZ8uDf!5WE+YnaExPzw?jtRH<5fmXmx9-bX0E|AK2Q~_BRJ&^ynM*yve zNL(N=0pdUy`A^Ur3yb#!!{=i9Ma1X}0ljf{7-z?T!)OR#c7VbInBThiHFJNRDpJg=|HaRL6L1d_oD z5D7$Y<44%?!mN0~=Da{-u0O=Wx@ZL;7vu%wKLE(D#`aKWyQ{K2#Bf((1BMksuLRiQ zRL=;6AM&j}!~S5SFpLUDv;u7LyKiR;hWCYN^zkN^Vwh_bxn7D~$O8GO@cq>V!P;dJ zM#4BtQIcKt<=x!WePsQ^`{6&3p)fQ2!kW*{t@vxN6&O+i>&Lik92=+%s~~{?LS z#_$Bej5yOT;w`^~8H6OOuff&F)ugzl0+v++?V-d3U{0(7d;(M)f`xW7pgd8E{STFQ zQ-_j3UH$zSAyje49Q1$oy=wYtN0IOc$N_gQv>II{0 z7zw~$OW~SQz<)df^NAIpTZ5qqKr29_02$&1fg=Qu21|S)!hgmJfD1%CB15uM07;ON zHKI^58Wsz|U_J+)nukp^kpB<}Sk8+zn3-tx4a;nPj6TE;U@yLc*#vmR44*H9AE!GG z0RKtpb=c+}oTcYg+`$rf(a~Ie%~J^T!e|AKma&}5Vt12R03?7`fJ>|Z$4{5-qlF=W zmqv-FI!eGpwZvTll@fOf=YLbt-sA z{=+Ik@4@5$9_~Mp{~!FNOI{H^$@f&7c6RCi>n8z{1tsKX93h+<*f7RV36etN83~Ye zq2Zc+_)o0>t&WbRaRL3(pFB?Wk+w4@U^e_fUrEBU`m8ZX+L z>L0QyzzU?D0!OGU!KpNMmmtc4A8yM7D-Z-$z?kE2!0`n~NSp0Vt$;f6zgGeh{)-#^ zncq(c?uy0lN`9)E-$Md#X9C`U|8H*s$oNnB@7Le|$@sna4;-j2dElov4c_kx+sap|HOmssOT}4F6&9mp}{LA@qWX73doXh#et48W98e!4Sae2n>qp z0y(iegmYws{B)%dSOj`HEr#TaqK&_ZG5->tsb^Wt17LkQeb{RNE}KCL%@Oj01hDQF z*c9MDZBK)Y5NtQrBzP=gzNGQ8yS+NkuOjt?F!e-v^5HU;BT4{c0UKVhB{$HN6JW^k z*Qe1%^hkyCS7AsNkK2FuVkYN+nSP;ei>~kul7S!*DYZ z3LMYZgX^jAW+1K+EI{&B=KHA$g0#xQ4TZ55q9ohujNRN6>i=W?TgkWfz8Z}}Zn({g z(~JLe2nqD60QnCS#NM0ej2KJ-!%nGW{Fhh(aD;&Wur&bV2;l~iePUta3laWfr9?dh zl|T%H0DZ#&jEl(x0cE~;?KBlawDIgHQ{ewpaQ+i4=2QODjb_k}5HRGY5};bZEs3Xs z6@YzLxtW23Z{3T|*2X6(6|giSjYuE?B(PHuWzP?{hKwjT$OI+ehZ#{eq(dQpltptYz|2=J~4e1GP%S3@c(RDieSA@t-oG zqopDJl;xS9Kk7d_M)==r1yBMP*N^pp*)b@Mi2UyZ8Vge^AdvtB0=QX*WNNI}3J?>3 zK>_ZaHy|#S%oJ1p6XrAgH=G$|@&%L_iZPnSGAI0pHV*Y-{-X-Opuh%vP==1|#|KGQ zXh2~`+^2qWq~;`$Kv9D85EAI_Xe!FANIhPWcDy|KP#IbQhy}KR72u*3U?foDqg~>y ziGeV2fr>p;irrO;-2lok!jFt1H^n0Gd|c&=`U75hXACcdVN@_8`6beLI~Dx15*VKU z>A$c4)0YNWmmI(f^q(CYEP>G%){pg692dsy6fc%QuOmdG05ky-Lx5${8FvUI0ER%4 z6hfoG_(HgY9-Sj20RodC6+b~k$A93z(QGI&6m2jw-h3W-N}vT8`OyWU<3F5|8l;$R zqMQfk2OF?eCE1=sS1wXR3idA(-bv~Ef2VDDrXHroDpHPt3d)lXmBsH9#O~xrZsmnp zb3-gSfu?MK!xCS;5^t>%PmK}}kbruzyDH(oGVNx>HVq)ZPM@cJ95;O!*vPdQhA2>!q5?z$E73nYJVb_|An8VFNgsGk)W?Ywb}hvL{^ z8U^%P0TK%n6F|vN`A>ZzhW~x?qA)K;Cx|049FQ!TCMu9 z^f@Nu~(-50BDM#}Y$&Q{nM>@c$|Q z#dW7)%*Q<_37`@YtidDx75!M;s#P``j@mMCjD)S7)W!;O!v{+Mwi~E_5KFAUF=7Q! z0s=+?7MwtkfB{+oA1xvQ;s}i>0c5_L5|zNn{QrF^~a3}Npno+P=4ytCMA?Oe1 z4Z!~~fJ-0&1;!ETX9d6(P$7^>0f`D2UkE42$VxfM9C7~!Re|IP4^(2B2vnell~rh! zIb7jj04p5Cbr%Wk$y>e52c9#)-6}B#0rE$aBUJ%dfpFC^>{Rz5B=FmBjgM1_1df&` z9mZIoj}?H`5o~`0Hd+C2gg^q+5u&kh|5yM9f8zWw<3I9W;k6R@eGI|7`$8iwz!)au z`UXL^Lyt1hy32@ixrRa!eDA(>3=hU zK%a0x!hfm)SB0_uDwq)h36L6bv{E#kAjUO968?ibMAt}=O;m|TG(ZTLFGX7bd7&sh zFcXY9pp8h~$xvS?f|Q#ks~u)i{*&svFuco>&6u!3fSjlNN9Hqa;QyqkUPyx#2v;6; z&wIy^x1v>Wry}JzT7hJ=0vHZQkys#@I6`78Q0%2ygc%{67lv4%h*|+x&6 zhY`Z2*Ydy6RUR+mK~bH8gm6iQwPB7r|5|A7znrNtiV z(;ysR93im;F0F?Uc(e<8L1SDL#yFEBb%X{<03Hw{{3l6K8WDpWzz|TN9Qv9Arj07V zM=8m;jpT={kq#}iNNO!=gGHDIJIlk?dy;LKqOcOLj93Dc{OIZc=*SOaKJ~$n|G10& zL@ETZ0%6LZJq|lEL}lIIerqnyhS}kASRh0kAwlde2#2|0)*K>%5`TyVbc=noiiiY? zJk*LkREvlNirj$zNd7{At70E)Ds+)&KzL5sKHTxmY2WY4KC^6tR4^3(sVH720nkW4 zhQG<_>m~39d$J7y z!+*F8Cmry5LVn753_S?{>2HKKke>il04tX?r9u@y$vSUVO}7_f)j*}5RC+cm9`n z4A1`z;{SXzbp7)oP4;_#v7@yybjz||;n^`N0o+i4;XhRY3IW4mGz3HfkP(t3g=lJs ztQTTt$EZ7m38G#T&_@MS0p13yZ}u>s6lzOxiG=DDs3kxdC%g1EB}EE zAc3nMj^GHLU-KD_g)goD9Q>bND*$bIbcf*Rr8t)IUmOvOB>?=F_(GDn7;FJ>k{ALs z2RQ!snt%x1NdWpx8B=8uYAuqAL$K)vO!7iR0Hs%m1V{lQhX0@x3RsUs$WM=&Kz@K! zByDI)!D*Bx@EU^7-gr`QK1fF_`jae=`9 z87zT8{2w5PVNQ!&HohBB0wZCVd54i~2MTBSNr&Oz8d^0B|Jl9#*Z)KDA0+VV<%`r4 zrl;ZYNqC4JU7*h|_2WN0EW=mTeeO~=R@ArcNC|6v7Y1UxT8^Fn9{#6bZO0$DXj zA0oh~DTzCTLJ&7_B!?1PC;_asg%!7e|B&j0@t^KQMhQ;_d0;-$9&7Vrd1{J@$aw-Z z0oVW)AmJ%c0w{zD@M4Jk$Jc++>**L&S@*Z!o|iuorvHLgAdy;u9b|TxSOJ_D&@b`T zp@Bf5yDCb+O&MJvaQKVVlUoJ0`ODAOJErO)A_jfu7V*X(93@g zGydzBMVXQDf7c&j{Ac`uSFawjJkPH9>$#Pmpae)1-0K1{5dnHZAOR1kEZRo`z<*|f z3>r*obdUsyEnu`j$WQo>ZW3^w78)Y8=I|8Vdsxh%ErZYCGh6Z@)zM8t<}+IrAXkkK>=6C{-!1!SKkFxg5_p}f31bt^64<(Rv1d^hqm=u*rz=9KC zj1utCDfZSX_S7i!P{Tl&M8SO|07BR_Ecrnfuj4;l@H?-UdR7;F$4o8(2xJz z08M@>e*hzf{DM13JVGUk91 zl{wPrKnKW=C5Eupkht6yHt^B=Ntp1|LjLywr9B+`057H>V?K=Y68>ud+i}b%M`S)o z0FH19Rv_n)Qr8fbb)l?ii7?|dNC0C2x<&}X;jk^7AaizraS4$Cu>vT8XYMM6BoWHw zf6x$&$bV`YMpVHw@w;y&1gb0=L=0mKhLOOCadeTJJm9TW&`$zG@V_+5tRlfy1pa^0 zzu*67#((iYyjy9`@)OQ1{}`T>blwOU7!Jb%AsP$d1TicV(!_9hU^u|ck?< z0ss$`(Ia`XOj2cq1m#kj~O^@Qy(y-TeC@Skauk43hlw?jD} zf&6C>p*bEv_>adBg^x4$uI_BA692z@|Ltlh7hXP71`1jKas2PY|K0!g__z0q7q?)7*j;tX z>17{X+Ax^>lDHUsA=gb~gK)hxCWS(W%nPAAL=r^Iu@C=YVl1WJO;i~T_Y`n?iBE1>$+Rk;uU6<$Mrs*c}{|L8=G zlu#N*1#cjMx8OhZtWX6b@t>XaN8~^7pqBU4-{>32i(cF?n#96G7y_4#m=SVS7~`)3 zNg-S{jVd5$LPJ*@+U-fLZC+so?D; zFarN~5dKdca{p8D_waA~x2cjJVzu;_#sBx>dT}~v!{^R`J{}Q91Y~x=Pi1U4kpS?Y zCP;|{V2f>VkOoUYDpVb7O^}MCP;n8306Zsh!2LL&P2*hTd_NEsNQ8j=r{u?=166<* zBiq3w5!#FSuRgAi5XSYBz^0Frt-l#Y0;0-nm(qlTpn}qPM}9O&z@8Is%?>t4N61$q z0rh7ds$d1c7XnA8&MkN z|G#toYh-mnanbmFs%QoJN}vz_d$k}x#z%QfC`bS|*QOF+){deC=&%eUv*v^_fVk)` z;Xj`C=RXL6N&tNxZ1;m$0(cDp`Fvsm=#>orK>}hGjF0Hce{3T#7J#G1xKPEvC0fp_ zE4nrKZuGR)iE=%_3&Nx*kpP!CLKq7KniNwj;H_2YsgALLy9(f`>!znJ^3MS8&kFoL z5&$=87!|zE3cQU32>;y&`u~3l{sSLgba$p4Gd}gh|Aw+!BZLDWgo`jcrZgr@V{Di@ z&XI+Rg@F7=iW2gxGqrXl6&Fd-U6cTEhv;TZViSN)5%Rx}1mL3>IpA~pWD9$IV0lO| zPq9%$(C5f#L97Bs0)LG&oLX0Oa|j8vHHfZymL?nkDAOAV0a0{CWb4&)~dAU^@QnAyv91QjsO4`qIT{-YsaB=AYR z(e$c^S%dFVPg`SkegHT^5D^PVEI_OPI6^3a5d zps#Q9w(WOO!Rrjc>m(pvj0fYtg#RI!|M?T~pYkC;;5bxSKMNbMlG!n|1w-*4f@Ly0 z2I0V1FaZRx-Pm}jxJ&A;qY6mHX+{F#{m95>e5CpoNFxk(s6?Ji%mI0YY*zF3mqVVKXN!Qydij<1V;3QhT?y)ere>NkN>bnq9DP?RZ-?F zY{0s1GyrV@#06*(2Et8Ybb!j3P&Fv1g0-dz`LWO_)Y@f=PQ$QIK@0&Doj{Ag>`+g% zK)2@uTL7=)5iTHm_K{amAOnC_qrU_w|LIX3`9HJ-&>TPtcPz02!}*q{-_@W%)KguefA+J5<>tM*Pr zDQiD*gdF*?m=wiWAc#(l;k-a0EE7c&pbUWknGwTS;P;RKgxJ4>3Wg#-Rm6z=r_vZ! z1-<;&;!F6S+K2xu-+%qL!C&8dc?EW#3^e)f?9U&Ol0jHLj;t5LB60%&69iCMk?ggE z#pNg%|A!3zH25VB4-DOq5$%l&sLzi_@xVT~F^t2HF#=5oF-JJ15YGj`j95RYLkPgU zLVckyetzt3E=s_L9Zal%Kg0q=0-kDx9*_=F zLbxhoQpi;SQ==|#1GxTmD0EeLH;gctrm{zX)sDW6id96Vf`C7K${<8 zP#S4of%(s!Y+V09;@>|H|A7)!g?HQ(rO&PWtMkTj6fW}P5gW%LXj^_fyydDeAqaQV zkP2lmF;s&AZZs?bmRpBaK(H2w0Ty7FpwEJ8eB81R`YkJB)>kkEtKluOB6`pfpVLJ2 zJ|-h+!%9(YsYt}c2({7Ss-N+*f(AtU_td@jQk_y-6D6zcR;a+;_y%^_IOA1tqjSu zy_6yO!|~JP1?mdIjLM=dDiZ8O8N1kjfc5`_zuz}`rIzEJc*ggm|OL zoHWnDH{@kcXTy_}aww&ha*RGZ$!8uMv!Ra+lmr+S`|B0^!czlUMeyK&w?>h-I>Jj0 z;i*>a#h}Pj^`A$vr|LVS#7lJ;sFipP18=pG5dm!P3mEx<{M-N?9Q-3p%VReSlebl6 z?&YRAk^L`zm-@GZzqR-K%JX_rxb;SzIe}Ha@zfOrCK)b|Wo9zeCLilP@l=y1C27a0)BZBRx`PP8n z?xzXl$_k_H#21EdF--lJDNz{x3s*O~2oZ zZ4Fg<-g~{(rTz711{lnu2sD`0AG6^U-ik2&BEfPF%SwW|EI75ClVCNsA2!2AVEvG| zd2XWBoJ6a+iJRwO8;)D%BJh-ew39Z^8Hg=&lf+2gGPf_1HZ!M5Tjo$CZ<#YBlB{N> zSbtfZaPHO1mjmwPtC!u)?A*$%v%<{N6&WXC-^sG1{iX4{1aaH>(OdaZw)}|Aya-Ef zm^nAhj2mjo4KV?5LX0`VMu;FoE+ANpAOkK%pgtE6gx~}M^m-Ab$9WyNL3;0kU_IWj z(B}mYgAje*kPu%F(Jlg*A7%t2KaxM*rZUB$>hj*&tB3iSM;3oOW6Afk|H$)S1HSYD zr?B;2_IZmS!&zY#UxisMkRaS@!2rNpan@g_+JBR}ZDH!RZ&K|SGT8PlHsHuK7N$CU z%K)#$(=@=gg$(E^9v2Qky2HYu@NK#SA_K9IfHvrh%#VoQq8Esd+ZSeRUzomaL9*2} zcFLsz|95)Y%D+*WeO8ont}^RP<>iyY)I;UTPGyOE%Mx~##ygb8*_X!I31V#c(boK^ zE&Qm>{75Sv!Vy|50+fnN8q@WX)vctt~d@vmgACMI4#K<3fWFe`oVFr2gaY1z zhU5at>-`%0m*nh+YkmZ2ZR|;!gNPO+CGB4!Zg4hVd`#S+HO1o zQUJTe*eOi;SEDjzXJzUL*wz1C@oC!5%6`}(Oa*KQ!0V9hsmk03K0mlUF!BTWn;%{h z-ns~b|NjjB0}X0Q^7B1RZ@3!W^fVh8x4q0C`dU2llfd$k-3 z!-If^`@Z#ez3c9H)!lZlyX{tY%cbrnz`6G3C4!4J`G5-)wfW}>&eh&HS99a67-wp3 zygO=doOw6Y-8fU1e+G|3<80jxivAbCj|_>MXX|fWXt?X#^uVpTz^mn%e_KgtJ2w=_ z|38NRK#7hfQEgFf&9khU!km#&Ta;5@oYPS9rve*$TVHs&t*US!|H=8w&gQNLE&->j zf!$SK+*JoC>Z&X3tbNv5`xH_0q_gI69~5-f6m(QG=&XJ;03Fqj-Ubf`T@0^0?0h{2 z{@wxIc$?FqeqGI@u9||b+Q(gWPr4hP^)warG?%<+Ws3@Y|0nSuSkTkn*uc43SCm;_ zoP{VE361QmCQe^uH*tmoTsGue^mWO*^wT6)($m35$pwQN-0Y^;06(q0`pK&oLsZjx z+11kB%IgPyM|oIp^0bUpVA=@+W=qWmj99=s|0F{_~1k zuSJ{ib~~W*PlmRN8(od;A-|wkJ#8=A%3riqym(&L^SrdDRe)&W5pa8&IRxyUW(`X)s{GFM82Z{Gz2~0D2nkKe^`lA0PgFxC0;Vz=u2V;SPMb z10U|dhdc1$4t%%+AMU`1JMiHSe7FN2?!bpT@Zk=8xC0;Vz=u2V;SPMb10U|dhdc1$ z4t%%+AMU`1JMiHSe7FN2?!ce^4$Ol8!F>2@2!H?Ae~gFYfBeV6N#vh?2Lmkyw zV~O(m#X|$GlwYZ$tf&Hil$AHGT(oxamur`N1=z4`zQXbaBVok?g%w{bto)`gHm&?d zSz#T18u_EIuV4K*Vvmjbnq}XtS-N1&lKE>Ef3;@uywyK_IT&kx`Vs*bEMK&C?V7b~ z*REc<{D-gPzMmuY{oF}_CG(|!ULdn1P z{wOLczNpH5S#`CoIK1+voACMt;nmZ^?2{E&j#p$J8w_FQF=5t8;Wg*#;%l|!PsxMa zNXNAi`&LIdu8TRi{^kXRdzUud847n@l`L^&^n*HI@5mhRNIZ?ZF$Fr!qK+8a@UfGT}#pq{`~CHn!-z~pAABx^V%Y}^;n?8LlNPrSnRFH_EqHtY6=s#HPw`f z`;*;Wmfrc)ul?S|wwu2^zjow#&Vkk}$JQ%*heej-^J~XC3PN6WG+~!sy~_67=4m+1 zfAa!gs|9I$7Ct_;=+Vg`Q1Hu-1;74OaC$M~%#tVPu=6Eeid=t{@~a-SKRuOKy7|fN zk365>{I&Jkk(MmS=F7X9(ziFIZUZ#;gMD+V80kA&a}ISBvEb<==uvx9ZRpOG7d0oj z8q5G(*)jLQp|9>9m^TFAb%OhczkYc9ACG@s3|(S-D?ba+UA&Kd}>}yKj(U@Y_khrBGVRJ)*l?06mR*eap8xt8cKqJ|%IqOg-KbL-MmBqI&Xvv*X z9(Pu4l8d%XuEX@(yJy@IH6(AXV{NXFv#5(PL&Oe-d0i|3UN^5#uxZLZ-d$5fyL2zf^Z5F| z{h~PLJ zpMTL>O}mtQ-ulq;znt1M_PG3*ApHq99b|881IXOkH6Dznf-g5f-#x^-gPiO=CvwJ{)WE7Uq?-V4p7e_VU z_@&|U-n!(iHE~v=D3i(vLs6K%C>&80)(3Ff3xld~M0Jd5UCPe3;&gh8s(A%x)MO8@ z{p=XjmQfp*ci_jn@Py7b**yE+n*&`Mrauchc}eYskxhBO)Mf0cN!VHyV_6w)Tp6k_ z4Ard!guqd!AHsAh2}EH!qA*?3ZG);9^V;+sj?sDtFyp78-eo-YyN>A8z9Frx6WTkJqH^5XEh& zh%%`N)hiFyDhtp+1Ohb65nAOzS`~c}tW^=B1D!+!>j*>jMKPNjZ~46JZi6mCwZI2w z6mqP_Kz~S=pjWg%(zI8@_J@ShqA#v(#UmL4bN`fO?K&{eX{qk^gA!|o%&iU4&j2ErUCQ$9wyz(qB zxJ9`(ldjs~w}xNbR$1r|fa%Zvc@IxW#vjo8g7%WQmV)4#tizS?IA^4}0G@pJ*Wmi7 zaJ`f`0Byl%d1?K<&~H!}6#tqO?N|_rp8!k&0KyobJx*2Z;q9##gt0 zam8|6j*U#Nt?X4h0O^vQ>@_>=Pu@1U{GHS9lKwosxcafXGWbrUKe5fwpUguQEW5G@ zQy!EH@Kfh_E3-WnIRtDkrojP2>;=0LtMUT01)(Mttev&j-CDWVUbZ(-O*QfEvty3j zJhJ?XwM?e@*sLwGIkr=BY$rp1Bwd1zL4UAIv_DQ?7MxsEbZPYiH{~T?Nv~fzzr7@; z`B6}H=D~_MTPS}4bueHbs1h$F*cluFmGRsaaF=kX59X`R3)Cx(u&PWu+W07@tByyz z(b-g8o*Q)cjB4g)xpb4!nU)i?w#a4MOh(vFfn$yh_J`?`t;|(h><^6Cw|7my?et~d zfq!HjS)O=wm;ws4)jhk$9^>2bkJ@&>v3~j;|Ik*tjfy zS52N*TiIP|8eYA6Rr@%rz-vpk{oFL8(P<`QFI&n$m#%D?oCUBZ{edo7%L1TFIkZc* z(s_21uG>jxTFXY8PxdpN>1Q=ReCOiWL+iogrTuAq7$~}Ype)v!A7aGugZ(9yNeMN@ z5^r^mzdk?GrZV$%)3dbhCLz5ct->NU>-6=5D^pFzC+qz^&2)T*`6TGfWh*)85ABk; zSF+h#WN3fLHzk|7Wm2^91W%1|rNMECIilmpyPpUiNg0 z9$vodVwq$*HAeO0SoOcLbjKtZj88C}kZ3d^31B=S86lNoG9k@uLYn!+bjwLdA#?0i zw82CVwecsR8*9cKTs!9Q`Y}h=k3PEY^J4(grK9UVJGk=W!>c~Ns52w!v?=FSa#v?Z zYisM;HLFwmx?!<=&e5fmyKf&t{J_5^=RnK;k9FqtQ~!1-RDQvjXJt+)RDEL z4z2pz{-ytUblqn@w##nEyERrb5!1{1;)a6Q)jxfuynYGZ5UAPsBOPG2fse`36WG|NCb!B9HUSSHa(I>~5Kvhl=JlZo(UC74VK(jIp~ zarEKUqnuWb+P`Ylfz_i9t{HV`&F6>Ljyk*s@Y$hNpExc3uLH|Jx@0gv-EB|l;~Ot= zAph;RmWnP;X4`Gg=T}cvUp~D0hcA@Y{n*0JF3mW1`;21NuJ6+A<|kXuVj0QB=}jd4 znHZ}#F-~7P-av+BD3@R~8NR_}lgTNja?r6borx~WQb#vR?O*k|)5^~etQvKY!Dk0o zBMz+kyW_I|c3kpbrxc|l4r)KiiRtX%1h+_AUA7g5LZzw>^RH25aO2d&3R4elkUO+q2D-F=_1L{jKHl@we;-$n2|u9wBqzSBlN6EYYVPD+Yr5`S zm$0)Y(yTgEzbZ(pDnPv|K&>i3wJJ!X2Kp0eR3B&6*uOvAgkyKkYvedCOSAhX!288wN$pwk>A|&9-gfJ6 z#(Oo@Qa9{Xx9~ypoq)QO{nb%cRiOr=K&?uD^-6!$NGE{1BV~p6k)@#12Hx{03H6z$s$*>{Lyal}b%cKE6@ID}zA8cq{8WUb zSCs+kqF`+Z@oM9&>cKUo{aLf9{K|O_>)7q{8rj&NuUTfZ;GRTlOZqc4)^JvW+1yNr z#kbDsKZ`wHoO=FA;Ld`OLnSvacXyEo`Z}B2dDrW&xm2@uR)(1ggY+u=HOhTd%YBq3 zsPIv)@Kt7x(17mws|ka&MBxTCv6gko+bWWGuljzL(war3>Ax1m9=UZ^BWK^TRJ*U^ z&1OPDLby4w!yRmL9jyoVXJ(@LyzITJ3xfC5mpD;VcD<1edG?qWcp1kPjD8Ji~ z=T#ZMw>*4vX^@e?Uq|4hA@ETbc&U_nDFFl&-bw;*JcYhtqYujbR4M{Agut$7i<)Hn zGSVN#HH+ZmMGw<5k1DY2e@wLgI^Gof1Dk#09)DW0kvdbN^=HHx&rY-b{`xVM2fp^z z1y{hrwLDF(WI2|GSn>V!dEl-2Xz;w%`QB=LFIB#$5`iM$Q<3kbG!WiOeA+j-jR6`J zA$kyjRwr&H{h3Mo16>l_h>5ZJF4TB#l;NysC|rrV(?Ug7_{t{77)*;bnw4NaH_h(* ztlcZJ_N?Hfc)ohkSqEE$gxl}~47omsBLjpwDx^;F_|Y!X9}>&bxUsfh4G z@VyiTKFSc^l?UqyBh9K3?Mf4OuKd2YKhP!q4OXb>SKjKf!J5z?+$|9{Pmj`tI+jzg zexUIzmf07H=3gdS%!@Oa_Bi6#SKS?Tw*vX0R$M<_wwF5FLzUyH%JER)cqnn)71#tE z4+W0q#JPK)@pKQ!fkBt%x)gCD;iPb`0nbbgAraMv&2$t_tG<)Pc{FqV!~< zpoFHu6sU6;XFM~`bauSy7xCuv;*4fRX-#?*a_nVy2RM+>C61pScF9wX?WM~0Qek^2 zN%tVQHg2bIGzMm!ezMwPoPgUWq5VM7_Lvf&{T&&@g zSfi=2Mo{5!X1pofpV=(4IV_8>SY~rs#xtXJCOz=m_v%G={k;f&_!drp0ozB5?XAJ~ zRxj};y@HN;sc^g{Q04d_AY$VBsPTN&`9V6RVMY}(R#nLkg5*6b7Y)%L=vBSoX|(+c zPZg;!qnQa7UnD>+yUkFT?#tvY^OCoGmAvKajk97(=Ks5TQl_gfSw_m{xle#@mRJchp?jU!Hkn zwAAOh+eKS{oxB^WEiKPIusnDF@*HS5t<2rOA{QGg;Fa9{KWFXw$CKc_P>89OlPyd; zRL0s-7Hd})W6dDe8X^}7%44kwY%1dIAPp``-BpvhzwX)zVeT)hewsVn{h|Hp>1uzL za6apV>h*IvcbpCGIUC+}HoWIzc;Cg~K65m>EAG|aaH-Bd z1x0VF`lI^F(OzU7t;sr8n{%>0?@Yt(i_H%_TOa$ZT0C#${$Q_Oy=oB_RX@(Gd752c znA1Q}l+!Q>^-nWf${xOY(et9MuCwM@M^!43o;(^~ zR|o|n5crrpL0w^YJ)j7>(bHH$P~25>pP%p7Z!+w|$-n##;5?-q{9OirCG(Vjg_8k) z?q~Vzve9y|(m+_KZL?6_W}za6s)L2bc00@M+qc_T=$okgWTLvnQe&C5&d=7`%lZLc z(OF@wyV6E)m5u%?J7f9n+w9?|_U+sEvMR5W$7(H%Xesaq{WRZoZNB5&7cGxN+nYok z9UTS9&M7B1WuDV|?5EETF)Rr-=tZb8JKTZ;H9DiL`LVWwIP3c2w3e2Zz`(#4)%iWV z*siDk9S_~w@0^D@xwib1y|{6rE&o(kaV!LvutC}tXY+_1KPDeq{nU9wvD=0sS25f- z7JF_g26N)8!41+Dgc*oZc6PN?g@uK^sJ_uz6x9B}1t#HIuO5bZua+x&TQd8hHTysp z2X|wtFE0wV|H0F2Zv2jg1t))i6dN<&c4E<^Q$IX{Ikq!PVN#?7Y-EsD-CaNU{O-!! z_5$zL{9jvg4mM@%YD}?jNVaWELNtj1?dHpl-NL)@D+;g0oL8TCUP~^)cGmsphN-?jPbQJj=Yva5@;tb<7c@uXCJ ztXX}GIUHdkswwl}i^eke6<56X9$Wj@Gb&PPHj{7foO*lr^t+BTZ|7Jp{4XAz{GrHgBRAB@>!4<5X-4y{^YxidwTW9r zG3Ma7li3B`N|^J2X$GA6Kva<_kg90YmIt^SM12L@({Ofx*5}#VX5HL9S2Do>pAR<* zZV`O-+)zWWLs}hz^rrl?wU_r+v1}?MO>l+-CJ)FY2To~7rZ;f*MHePxs$#6#xH<4E zY9FRtx1D(17LvR$$AfbQ@Lw3>^Z98FP!=j}Pi35SMYvH}kaii#xr0-SlK~7g$$S8r z5(v~1C2a4kDTZIcPy8ik^Ek|I+v8+O-d36X9fSJMORdlQwJK$2MYL6Es6NT~s|tKo z`IzNb75L*(JSU-63coJYs4B&&U62o-|Ej0!{^^Z5o5xEM=`DetFd9+T086Ww%~+Hg`6Ogx7-}Ueda@eRi&m zG~~puVvb(=#`Y<<_sxaWJlua?7~cPOPI7JT31Ol`X@nVgNF2~0WSIe;n>d~dkecTQ z>I##cnw})|vo}+2#G)scHazmx zzqD7gjgwT9bG(9O&kr-uYv0d0VAn7Uc4_*$F!qCLCCqd0zYME{!&JQg!yR@_0LNv(P1l ztaN|@lo)O)$^?tv{k%bRC-I)M(d8}ElJ!1KGa7^WJIMcTfqb-FmbDy7v&!b$$fjCO z3eg+yq9JubXNs4_{OElvuE6K-RBK}=lh5BOh}u$?u($qBNOwK=W#{uo-os~M2eY;> zOw|1>QRiWZmdfiW4qqPxdzd zGJN|F8K>1QI2yKbQ)}}s*53x}yAtemhb&e-W+r*I4zxv-HMdVv)%zNJ6=ipeBMQwHixIJar^A#r~2;ObEaR(=9$xC5|Fl>WSQkA0<2@_U}w{RYLb zo<_IjpKH$hCHTC3Rle^7XN{}-muA?1lVm;vQhu?zko&`2TY~WvmhrR@-O0|%(nr@# za9TA6^L>!dTJh<=C4brT)BiobX;Q=y!za0{_6E^!&86Li3C)>@8{%!6U~)ZUchj|# z!RPEm*F7G&8(u%WD&78@M6;QYsDdO>oc?5%(NxIdxu{QfTqn1G9VE`A53C;N`12>b zfB4S>t3LO%S(O*#R$sw+*;@6Y^m=pdnYtLO>L9I}AkErv{rdRLU`p`w&%)<>!slN* zv>HA?!E8pX9wfzJH-#yXdrG$WGSO$qfJ+Ly({u`Dl^dFK+ z5YbJC+)dV=<##U_JXDcH%m-}gu%nPPn%Dt7##Q7j>1gOKzbajkHUFy#I+~a{~ZR(41uAkPp; zKhAgtd^n_6qV=XHS$uWtf^lPM0gRJvC09g=PNhM{d|ypI7Z}k=QA96_%@cH^v<4tC#+y8Lws8VT8ct`pD@@NO1 zj}`}$5$ZfoRm?beYyvdlmj*lkCTLZxLR^@mpa{(l5h9dyxW%+(2 zbdR>IPT5(LdpzK*4SYELQ+g*g)ckAMAc4ii#`BW4%!fVc6F1L?q-tUOg?3>_EsHRzWZBkS-dB6=m%wvd#UGFVik{}h*e{8; zn3J~cyNn&*XY5>bdB+bKJAO*v_FbCISHdxAnBXzef1YU6H`}xpr5Io5|uAaK{$7_ezTtBk*+TnEs&{&=8xP+5@sk64E zD(7q&%K?V;^7yU2U~L5>B23yYO50nTeWW4(Y~usZfb;ePJ|9lo>MI@u@6JE3_0Yrk z5rwDmBQKLjp2iPdw99jSyBbRy?)lf`oUF+?K~bA?f}-x)FAe$Un(n%`KK5%X3JG%_ z*nj%#AcAcuzE<-n5q39ec#_%&DGiSko(mtn>}-M%v7_=%N9C;!;Y~y(qEmFMtLhF! zXo%{2o&1ym;lRKA6yuan;jbM06~`&d{tuiC_;Vx8M_+x7=BA%DH!aiLv{XxFt)_g&vX|G0Df z$6H5#ymey9?Guadxu~A~kPo)v8O{_M$}?d(tFAZ}hEQ)6u7OkiC2S z$CGyQZ6(Q~1pBfeP2%`zRs2Vdy!SQW1faO#QgpxvYI_*r_h};@vB5#Wm-9)qzfZmCHTlD|{3y zU>+jM>VlJDP2u$ztNCH7VWy!a7TP)uJCxfxuz(rDOF)5-Oi6}=vg?Twk!@TsK_25hqpfc|6@#Xc>n+a literal 0 HcmV?d00001 diff --git a/SETUNA/app.config b/SETUNA/app.config new file mode 100644 index 0000000..155f59a --- /dev/null +++ b/SETUNA/app.config @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/SETUNA/app.manifest b/SETUNA/app.manifest new file mode 100644 index 0000000..f3aca45 --- /dev/null +++ b/SETUNA/app.manifest @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SETUNA/com/clearunit/DesCrypto.cs b/SETUNA/com/clearunit/DesCrypto.cs new file mode 100644 index 0000000..219466c --- /dev/null +++ b/SETUNA/com/clearunit/DesCrypto.cs @@ -0,0 +1,62 @@ +using System.IO; +using System.Security.Cryptography; +using System.Text; + +namespace com.clearunit +{ + // Token: 0x02000029 RID: 41 + internal class DesCrypto + { + // Token: 0x060001A1 RID: 417 RVA: 0x00009936 File Offset: 0x00007B36 + public static byte[] DesEncrypto(string target, byte[] key, byte[] iv) + { + return DesCrypto.Crypto(Encoding.Unicode.GetBytes(target), key, iv, DesCrypto.CryptoMode.Encrypt); + } + + // Token: 0x060001A2 RID: 418 RVA: 0x0000994B File Offset: 0x00007B4B + public static byte[] DesDecrypto(byte[] target, byte[] key, byte[] iv) + { + return DesCrypto.Crypto(target, key, iv, DesCrypto.CryptoMode.Decrypt); + } + + // Token: 0x060001A3 RID: 419 RVA: 0x00009958 File Offset: 0x00007B58 + private static byte[] Crypto(byte[] target, byte[] key, byte[] iv, DesCrypto.CryptoMode mode) + { + byte[] result; + try + { + var tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider(); + var memoryStream = new MemoryStream(); + ICryptoTransform transform; + if (mode == DesCrypto.CryptoMode.Encrypt) + { + transform = tripleDESCryptoServiceProvider.CreateEncryptor(key, iv); + } + else + { + transform = tripleDESCryptoServiceProvider.CreateDecryptor(key, iv); + } + var cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write); + cryptoStream.Write(target, 0, target.Length); + cryptoStream.Close(); + result = memoryStream.ToArray(); + memoryStream.Close(); + } + catch + { + var array = new byte[1]; + result = array; + } + return result; + } + + // Token: 0x0200002A RID: 42 + public enum CryptoMode + { + // Token: 0x040000C5 RID: 197 + Encrypt, + // Token: 0x040000C6 RID: 198 + Decrypt + } + } +} diff --git a/SETUNA/com/clearunit/ISingletonForm.cs b/SETUNA/com/clearunit/ISingletonForm.cs new file mode 100644 index 0000000..3774ec7 --- /dev/null +++ b/SETUNA/com/clearunit/ISingletonForm.cs @@ -0,0 +1,9 @@ +namespace com.clearunit +{ + // Token: 0x02000040 RID: 64 + public interface ISingletonForm + { + // Token: 0x06000268 RID: 616 + void DetectExternalStartup(string version, string[] args); + } +} diff --git a/SETUNA/com/clearunit/PicasaAccessor.cs b/SETUNA/com/clearunit/PicasaAccessor.cs new file mode 100644 index 0000000..b76634c --- /dev/null +++ b/SETUNA/com/clearunit/PicasaAccessor.cs @@ -0,0 +1,374 @@ +using System; +using System.Collections; +using System.ComponentModel; +using System.IO; +using System.Net; +using System.Text; +using System.Xml; + +namespace com.clearunit +{ + // Token: 0x02000076 RID: 118 + internal class PicasaAccessor + { + // Token: 0x060003E4 RID: 996 RVA: 0x00018020 File Offset: 0x00016220 + public PicasaAccessor() + { + Auth = ""; + LoginErrorCode = PicasaLoginError.None; + } + + // Token: 0x17000099 RID: 153 + // (get) Token: 0x060003E5 RID: 997 RVA: 0x0001803A File Offset: 0x0001623A + private string LoginUrl => "https://www.google.com/accounts/ClientLogin"; + + // Token: 0x1700009A RID: 154 + // (get) Token: 0x060003E6 RID: 998 RVA: 0x00018041 File Offset: 0x00016241 + private string Url => "https://picasaweb.google.com/data/feed/api/user/" + ID; + + // Token: 0x1700009B RID: 155 + // (get) Token: 0x060003E7 RID: 999 RVA: 0x00018053 File Offset: 0x00016253 + private string AlbumFeedUrl => "https://picasaweb.google.com/data/feed/api/user/" + ID + "?kind=album"; + + // Token: 0x1700009C RID: 156 + // (get) Token: 0x060003E8 RID: 1000 RVA: 0x0001806A File Offset: 0x0001626A + private string UploadUrl => "https://picasaweb.google.com/data/feed/api/user/" + ID + "/album/"; + + // Token: 0x060003E9 RID: 1001 RVA: 0x00018084 File Offset: 0x00016284 + public bool ClientLogin(string id, string pass) + { + ID = id; + Auth = ""; + LoginErrorCode = PicasaLoginError.None; + UploadErrorCode = PicasaUploadError.None; + var result = false; + var utf = Encoding.UTF8; + var text = ""; + var hashtable = new Hashtable + { + ["accountType"] = "GOOGLE", + ["Email"] = id, + ["Passwd"] = pass, + ["service"] = "lh2", + ["source"] = "Clearup-PicasaAccessor-1.00" + }; + foreach (var obj in hashtable.Keys) + { + var text2 = (string)obj; + text += string.Format("{0}={1}&", text2, hashtable[text2]); + } + var bytes = Encoding.ASCII.GetBytes(text); + var httpWebRequest = (HttpWebRequest)WebRequest.Create(LoginUrl); + httpWebRequest.Method = "POST"; + httpWebRequest.ContentType = "application/x-www-form-urlencoded"; + httpWebRequest.ContentLength = bytes.Length; + var requestStream = httpWebRequest.GetRequestStream(); + requestStream.Write(bytes, 0, bytes.Length); + requestStream.Close(); + HttpWebResponse httpWebResponse; + try + { + httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); + } + catch (WebException ex) + { + httpWebResponse = (HttpWebResponse)ex.Response; + Console.WriteLine(ex.ToString()); + } + var responseStream = httpWebResponse.GetResponseStream(); + var streamReader = new StreamReader(responseStream, utf); + var text3 = streamReader.ReadToEnd(); + streamReader.Close(); + responseStream.Close(); + if (httpWebResponse.StatusCode == HttpStatusCode.OK) + { + var array = text3.Split(new string[] + { + "\n" + }, StringSplitOptions.RemoveEmptyEntries); + foreach (var text4 in array) + { + var array3 = text4.Split(new char[] + { + '=' + }); + if (array3.Length >= 2 && array3[0] == "Auth") + { + Auth = array3[1]; + result = true; + } + } + } + else if (httpWebResponse.StatusCode == HttpStatusCode.Forbidden) + { + var array4 = text3.Split(new string[] + { + "\n" + }, StringSplitOptions.RemoveEmptyEntries); + foreach (var text5 in array4) + { + var array6 = text5.Split(new char[] + { + '=' + }); + if (array6.Length > 2 && array6[0] == "Error") + { + if (array6[1] == "BadAuthentication") + { + LoginErrorCode = PicasaLoginError.BadAuthentication; + } + else if (array6[1] == "NotVerified") + { + LoginErrorCode = PicasaLoginError.NotVerified; + } + else if (array6[1] == "TermsNotAgreed") + { + LoginErrorCode = PicasaLoginError.TermsNotAgreed; + } + else if (array6[1] == "CaptchaRequired") + { + LoginErrorCode = PicasaLoginError.CaptchaRequired; + } + else if (array6[1] == "AccountDeleted") + { + LoginErrorCode = PicasaLoginError.AccountDeleted; + } + else if (array6[1] == "AccountDisabled") + { + LoginErrorCode = PicasaLoginError.AccountDisabled; + } + else if (array6[1] == "ServiceDisabled") + { + LoginErrorCode = PicasaLoginError.ServiceDisabled; + } + else if (array6[1] == "ServiceUnavailable") + { + LoginErrorCode = PicasaLoginError.ServiceUnavailable; + } + else + { + LoginErrorCode = PicasaLoginError.Unknown; + } + } + } + } + else + { + LoginErrorCode = PicasaLoginError.ConnectionError; + } + return result; + } + + // Token: 0x060003EA RID: 1002 RVA: 0x00018430 File Offset: 0x00016630 + public string CreateAlbum(string title, string description, bool isPublic) + { + if (Auth.Length == 0) + { + throw new Exception("您还没有登录Picasa服务。"); + } + var xmlDocument = new XmlDocument(); + var xmlElement = xmlDocument.CreateElement("entry"); + xmlElement.Attributes.Append(xmlDocument.CreateAttribute("xmlns")).Value = "http://www.w3.org/2005/Atom"; + xmlElement.Attributes.Append(xmlDocument.CreateAttribute("xmlns:gphoto")).Value = "http://schemas.google.com/photos/2007"; + xmlDocument.AppendChild(xmlElement); + var xmlElement2 = xmlDocument.CreateElement("title"); + xmlElement2.Attributes.Append(xmlDocument.CreateAttribute("type")).Value = "text"; + xmlElement2.InnerText = title; + xmlElement.AppendChild(xmlElement2); + var xmlElement3 = xmlDocument.CreateElement("summary"); + xmlElement3.Attributes.Append(xmlDocument.CreateAttribute("type")).Value = "text"; + xmlElement3.InnerText = description; + xmlElement.AppendChild(xmlElement3); + xmlElement.AppendChild(xmlDocument.CreateElement("gphoto-xmlc-access")).InnerText = (isPublic ? "public" : "private"); + xmlElement.AppendChild(xmlDocument.CreateElement("gphoto-xmlc-commentingEnabled")).InnerText = "false"; + var xmlElement4 = xmlDocument.CreateElement("category"); + xmlElement4.Attributes.Append(xmlDocument.CreateAttribute("scheme")).Value = "http://schemas.google.com/g/2005#kind"; + xmlElement4.Attributes.Append(xmlDocument.CreateAttribute("term")).Value = "http://schemas.google.com/photos/2007#album"; + xmlElement.AppendChild(xmlElement4); + return CreateAlbum(xmlDocument); + } + + // Token: 0x060003EB RID: 1003 RVA: 0x000185D0 File Offset: 0x000167D0 + private string CreateAlbum(XmlDocument document) + { + var result = ""; + var utf = Encoding.UTF8; + new Hashtable(); + var s = document.InnerXml.Replace("-xmlc-", ":"); + var bytes = Encoding.UTF8.GetBytes(s); + var httpWebRequest = (HttpWebRequest)WebRequest.Create(Url); + httpWebRequest.Method = "POST"; + httpWebRequest.ContentType = "application/atom+xml"; + httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "GoogleLogin auth=" + Auth); + httpWebRequest.ContentLength = bytes.Length; + var requestStream = httpWebRequest.GetRequestStream(); + requestStream.Write(bytes, 0, bytes.Length); + requestStream.Close(); + HttpWebResponse httpWebResponse; + try + { + httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); + } + catch (WebException ex) + { + httpWebResponse = (HttpWebResponse)ex.Response; + Console.WriteLine(ex.ToString()); + } + var responseStream = httpWebResponse.GetResponseStream(); + var streamReader = new StreamReader(responseStream, utf); + var xml = streamReader.ReadToEnd(); + streamReader.Close(); + responseStream.Close(); + if (httpWebResponse.StatusCode == HttpStatusCode.Created) + { + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(xml); + result = xmlDocument["entry"]["gphoto:id"].InnerText; + } + return result; + } + + // Token: 0x060003EC RID: 1004 RVA: 0x0001872C File Offset: 0x0001692C + public string ExistAlbum(string albumname) + { + if (Auth.Length == 0) + { + throw new Exception("您还没有登录Picasa服务。"); + } + var utf = Encoding.UTF8; + var httpWebRequest = (HttpWebRequest)WebRequest.Create(AlbumFeedUrl); + httpWebRequest.Method = "GET"; + httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "GoogleLogin auth=" + Auth); + HttpWebResponse httpWebResponse; + try + { + httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); + } + catch (WebException ex) + { + httpWebResponse = (HttpWebResponse)ex.Response; + Console.WriteLine(ex.ToString()); + } + var responseStream = httpWebResponse.GetResponseStream(); + var streamReader = new StreamReader(responseStream, utf); + var xml = streamReader.ReadToEnd(); + streamReader.Close(); + responseStream.Close(); + if (httpWebResponse.StatusCode == HttpStatusCode.OK) + { + var xmlDocument = new XmlDocument(); + xmlDocument.LoadXml(xml); + var elementsByTagName = xmlDocument["feed"].GetElementsByTagName("entry"); + foreach (var obj in elementsByTagName) + { + var xmlElement = (XmlElement)obj; + if (xmlElement["title"].InnerText == albumname) + { + return xmlElement["gphoto:id"].InnerText; + } + } + } + return ""; + } + + // Token: 0x060003ED RID: 1005 RVA: 0x000188B0 File Offset: 0x00016AB0 + public bool UploadPhoto(string album, string imgfile, BackgroundWorker bgw, int progress) + { + var result = false; + var utf = Encoding.UTF8; + var s = ""; + Encoding.ASCII.GetBytes(s); + var httpWebRequest = (HttpWebRequest)WebRequest.Create(UploadUrl + album); + httpWebRequest.Method = "POST"; + httpWebRequest.ContentType = "image/jpg"; + httpWebRequest.Headers.Add("Slug: " + Path.GetFileName(imgfile)); + httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "GoogleLogin auth=" + Auth); + var fileStream = new FileStream(imgfile, FileMode.Open, FileAccess.Read); + httpWebRequest.ContentLength = fileStream.Length; + var requestStream = httpWebRequest.GetRequestStream(); + var array = new byte[4096]; + var num = 100 - progress; + var num2 = 0; + for (; ; ) + { + var num3 = fileStream.Read(array, 0, array.Length); + if (num3 == 0) + { + break; + } + requestStream.Write(array, 0, num3); + num2 += (int)(num3 / (float)httpWebRequest.ContentLength * num); + bgw.ReportProgress(num2); + } + fileStream.Close(); + requestStream.Close(); + bgw.ReportProgress(100); + HttpWebResponse httpWebResponse; + try + { + httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); + } + catch (WebException ex) + { + httpWebResponse = (HttpWebResponse)ex.Response; + Console.WriteLine(ex.ToString()); + } + var responseStream = httpWebResponse.GetResponseStream(); + var streamReader = new StreamReader(responseStream, utf); + streamReader.ReadToEnd(); + streamReader.Close(); + responseStream.Close(); + if (httpWebResponse.StatusCode == HttpStatusCode.Created || httpWebResponse.StatusCode == HttpStatusCode.OK) + { + result = true; + } + else + { + var statusCode = httpWebResponse.StatusCode; + switch (statusCode) + { + case HttpStatusCode.BadRequest: + UploadErrorCode = PicasaUploadError.BadRequest; + return result; + case HttpStatusCode.Unauthorized: + UploadErrorCode = PicasaUploadError.UnAuthorized; + return result; + case HttpStatusCode.PaymentRequired: + break; + case HttpStatusCode.Forbidden: + UploadErrorCode = PicasaUploadError.Forbidden; + return result; + case HttpStatusCode.NotFound: + UploadErrorCode = PicasaUploadError.NotFound; + return result; + default: + if (statusCode == HttpStatusCode.Conflict) + { + UploadErrorCode = PicasaUploadError.Conflict; + return result; + } + if (statusCode == HttpStatusCode.InternalServerError) + { + UploadErrorCode = PicasaUploadError.InternalServerError; + return result; + } + break; + } + UploadErrorCode = PicasaUploadError.Unknown; + } + return result; + } + + // Token: 0x04000238 RID: 568 + public PicasaLoginError LoginErrorCode; + + // Token: 0x04000239 RID: 569 + public PicasaUploadError UploadErrorCode; + + // Token: 0x0400023A RID: 570 + private string Auth; + + // Token: 0x0400023B RID: 571 + private string ID; + } +} diff --git a/SETUNA/com/clearunit/PicasaLoginError.cs b/SETUNA/com/clearunit/PicasaLoginError.cs new file mode 100644 index 0000000..5e6c633 --- /dev/null +++ b/SETUNA/com/clearunit/PicasaLoginError.cs @@ -0,0 +1,29 @@ +namespace com.clearunit +{ + // Token: 0x02000077 RID: 119 + public enum PicasaLoginError + { + // Token: 0x0400023D RID: 573 + None, + // Token: 0x0400023E RID: 574 + BadAuthentication, + // Token: 0x0400023F RID: 575 + NotVerified, + // Token: 0x04000240 RID: 576 + TermsNotAgreed, + // Token: 0x04000241 RID: 577 + CaptchaRequired, + // Token: 0x04000242 RID: 578 + Unknown, + // Token: 0x04000243 RID: 579 + AccountDeleted, + // Token: 0x04000244 RID: 580 + AccountDisabled, + // Token: 0x04000245 RID: 581 + ServiceDisabled, + // Token: 0x04000246 RID: 582 + ServiceUnavailable, + // Token: 0x04000247 RID: 583 + ConnectionError + } +} diff --git a/SETUNA/com/clearunit/PicasaUploadError.cs b/SETUNA/com/clearunit/PicasaUploadError.cs new file mode 100644 index 0000000..8829920 --- /dev/null +++ b/SETUNA/com/clearunit/PicasaUploadError.cs @@ -0,0 +1,23 @@ +namespace com.clearunit +{ + // Token: 0x02000078 RID: 120 + public enum PicasaUploadError + { + // Token: 0x04000249 RID: 585 + None, + // Token: 0x0400024A RID: 586 + BadRequest, + // Token: 0x0400024B RID: 587 + UnAuthorized, + // Token: 0x0400024C RID: 588 + Forbidden, + // Token: 0x0400024D RID: 589 + NotFound, + // Token: 0x0400024E RID: 590 + Conflict, + // Token: 0x0400024F RID: 591 + InternalServerError, + // Token: 0x04000250 RID: 592 + Unknown + } +} diff --git a/SETUNA/com/clearunit/SingletonAppRemoteObject.cs b/SETUNA/com/clearunit/SingletonAppRemoteObject.cs new file mode 100644 index 0000000..2d3c586 --- /dev/null +++ b/SETUNA/com/clearunit/SingletonAppRemoteObject.cs @@ -0,0 +1,24 @@ +using System; + +namespace com.clearunit +{ + // Token: 0x02000088 RID: 136 + internal class SingletonAppRemoteObject : MarshalByRefObject + { + // Token: 0x06000473 RID: 1139 RVA: 0x0001CC98 File Offset: 0x0001AE98 + public void Startup(string version, string[] args) + { + if (SingletonAppRemoteObject.Event != null) + { + SingletonAppRemoteObject.Event(version, args); + } + } + + // Token: 0x040002B3 RID: 691 + public static SingletonAppRemoteObject.StartupDelegate Event; + + // Token: 0x02000089 RID: 137 + // (Invoke) Token: 0x06000476 RID: 1142 + public delegate void StartupDelegate(string version, string[] args); + } +} diff --git a/SETUNA/com/clearunit/SingletonApplication.cs b/SETUNA/com/clearunit/SingletonApplication.cs new file mode 100644 index 0000000..e0399a9 --- /dev/null +++ b/SETUNA/com/clearunit/SingletonApplication.cs @@ -0,0 +1,112 @@ +using System; +using System.Runtime.Remoting; +using System.Runtime.Remoting.Channels; +using System.Runtime.Remoting.Channels.Ipc; +using System.Windows.Forms; + +namespace com.clearunit +{ + // Token: 0x02000087 RID: 135 + public class SingletonApplication + { + // Token: 0x0600046C RID: 1132 RVA: 0x0001CABC File Offset: 0x0001ACBC + private SingletonApplication() + { + } + + // Token: 0x0600046D RID: 1133 RVA: 0x0001CAC4 File Offset: 0x0001ACC4 + public static SingletonApplication GetInstance(string version, string[] args) + { + if (SingletonApplication._instance == null) + { + lock (SingletonApplication.lockObj) + { + if (SingletonApplication._instance == null) + { + SingletonApplication._instance = new SingletonApplication(); + } + } + } + SingletonApplication._instance._args = args; + SingletonApplication._instance._version = version; + return SingletonApplication._instance; + } + + // Token: 0x0600046E RID: 1134 RVA: 0x0001CB38 File Offset: 0x0001AD38 + public void AddSingletonFormListener(ISingletonForm implement) + { + SingletonAppRemoteObject.Event = (SingletonAppRemoteObject.StartupDelegate)Delegate.Combine(SingletonAppRemoteObject.Event, new SingletonAppRemoteObject.StartupDelegate(implement.DetectExternalStartup)); + } + + // Token: 0x0600046F RID: 1135 RVA: 0x0001CB5B File Offset: 0x0001AD5B + public bool Register() + { + if (CreateServer()) + { + return true; + } + CreateClient(); + return false; + } + + // Token: 0x06000470 RID: 1136 RVA: 0x0001CB70 File Offset: 0x0001AD70 + private bool CreateServer() + { + bool result; + try + { + var productName = Application.ProductName; + var chnl = new IpcChannel(productName); + ChannelServices.RegisterChannel(chnl, true); + RemotingConfiguration.RegisterWellKnownServiceType(typeof(SingletonAppRemoteObject), productName + "RemoteObject.rem", WellKnownObjectMode.Singleton); + result = true; + } + catch + { + result = false; + } + return result; + } + + // Token: 0x06000471 RID: 1137 RVA: 0x0001CBC8 File Offset: 0x0001ADC8 + private void CreateClient() + { + try + { + var productName = Application.ProductName; + var ipcChannel = new IpcChannel(); + ChannelServices.RegisterChannel(ipcChannel, true); + var text = string.Concat(new string[] + { + ipcChannel.ChannelName, + "://", + productName, + "/", + productName, + "RemoteObject.rem" + }); + var entry = new WellKnownClientTypeEntry(typeof(SingletonAppRemoteObject), text); + RemotingConfiguration.RegisterWellKnownClientType(entry); + ipcChannel.CreateMessageSink(text, null, out var text2); + var singletonAppRemoteObject = new SingletonAppRemoteObject(); + singletonAppRemoteObject.Startup(_version, _args); + } + catch + { + Console.WriteLine("CreateClient Error"); + } + } + + // Token: 0x040002AF RID: 687 + private static volatile SingletonApplication _instance = null; + + // Token: 0x040002B0 RID: 688 + private static object lockObj = new object(); + + // Token: 0x040002B1 RID: 689 + private string[] _args; + + // Token: 0x040002B2 RID: 690 + private string _version; + } +} diff --git a/SETUNA/com/clearunit/WithoutTabControl.cs b/SETUNA/com/clearunit/WithoutTabControl.cs new file mode 100644 index 0000000..5fed407 --- /dev/null +++ b/SETUNA/com/clearunit/WithoutTabControl.cs @@ -0,0 +1,28 @@ +using System.Windows.Forms; + +namespace com.clearunit +{ + // Token: 0x0200007E RID: 126 + internal class WithoutTabControl : TabControl + { + // Token: 0x06000423 RID: 1059 RVA: 0x0001A759 File Offset: 0x00018959 + public WithoutTabControl() + { + base.Appearance = TabAppearance.Buttons; + base.SizeMode = TabSizeMode.Fixed; + } + + // Token: 0x06000424 RID: 1060 RVA: 0x0001A770 File Offset: 0x00018970 + protected override void InitLayout() + { + base.InitLayout(); + if (!base.DesignMode) + { + var itemSize = base.ItemSize; + itemSize.Width = 0; + itemSize.Height = 1; + base.ItemSize = itemSize; + } + } + } +} diff --git a/SETUNA/packages.config b/SETUNA/packages.config new file mode 100644 index 0000000..209b951 --- /dev/null +++ b/SETUNA/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SETUNATests/Main/Layer/LayerManagerTests.cs b/SETUNATests/Main/Layer/LayerManagerTests.cs new file mode 100644 index 0000000..59d8793 --- /dev/null +++ b/SETUNATests/Main/Layer/LayerManagerTests.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace SETUNA.Main.Layer.Tests +{ + [TestClass()] + public class LayerManagerTests + { + [TestMethod()] + public void OptimizeLayerCounterTest() + { + var dic = new Dictionary(); + var rangeCount = 1000000; + var range = new Random().Next(0, rangeCount); + for (var i = 0; i < range; i++) + { + dic.Add(new IntPtr(i), new FormData(null, new Random().Next(0, new Random().Next(new Random().Next(rangeCount))))); + } + if (dic.Count % 2 != 0) + { + dic.Add(new IntPtr(rangeCount), new FormData(null, rangeCount)); + } + + var maxSortingOrder = range; + OptimizeLayerCounter(dic, out maxSortingOrder); + + var list = dic.Values.ToList(); + list.Sort((x, y) => x.SortingOrder.CompareTo(y.SortingOrder)); + for (var i = 0; i < list.Count; i += 2) + { + var cur = list[i]; + var next = list[i + 1]; + Assert.IsTrue(next.SortingOrder - cur.SortingOrder <= 1); + } + + var last = list[list.Count - 1]; + Assert.IsTrue(last.SortingOrder == maxSortingOrder); + } + + void OptimizeLayerCounter(Dictionary formDic, out int maxSortingOrder) + { + var forms = new List(formDic.Values); + forms.Sort((x, y) => x.SortingOrder.CompareTo(y.SortingOrder)); + + var noDuplicates = new List(forms); + for (var i = 0; i < noDuplicates.Count; i++) + { + var item = noDuplicates[i]; + var removeCount = noDuplicates.RemoveAll(x => x.SortingOrder == item.SortingOrder && x != item); + } + maxSortingOrder = noDuplicates.Count - 1; + + var sortingValueDic = new Dictionary(noDuplicates.Count); + for (var i = 0; i < noDuplicates.Count; i++) + { + sortingValueDic.Add(noDuplicates[i].SortingOrder, i); + } + + foreach (var item in forms) + { + item.SortingOrder = sortingValueDic[item.SortingOrder]; + } + } + } + + class Compare : IEqualityComparer + { + bool IEqualityComparer.Equals(FormData x, FormData y) + { + return x.SortingOrder == y.SortingOrder; + } + + int IEqualityComparer.GetHashCode(FormData obj) + { + return obj.GetHashCode(); + } + } +} \ No newline at end of file diff --git a/SETUNATests/Properties/AssemblyInfo.cs b/SETUNATests/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9ea8ab6 --- /dev/null +++ b/SETUNATests/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("SETUNATests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SETUNATests")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +//将 ComVisible 设置为 false 将使此程序集中的类型 +//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("a601cd5f-88ca-47c6-9d24-33e006864bd9")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SETUNATests/SETUNATests.csproj b/SETUNATests/SETUNATests.csproj new file mode 100644 index 0000000..902dbc3 --- /dev/null +++ b/SETUNATests/SETUNATests.csproj @@ -0,0 +1,107 @@ + + + + + Debug + AnyCPU + {A601CD5F-88CA-47C6-9D24-33E006864BD9} + Library + Properties + SETUNATests + SETUNATests + v4.7 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll + + + ..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + + + + + + + + + + + + + + + + + + + + + + {15D64201-91AD-47B1-8675-5DBB30DF6A39} + SETUNA + + + + + + + False + + + False + + + False + + + False + + + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + + + \ No newline at end of file diff --git a/SETUNATests/packages.config b/SETUNATests/packages.config new file mode 100644 index 0000000..7079f81 --- /dev/null +++ b/SETUNATests/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git "a/\345\210\235\345\247\213\351\205\215\347\275\256.txt" "b/\345\210\235\345\247\213\351\205\215\347\275\256.txt" new file mode 100644 index 0000000..4266df9 --- /dev/null +++ "b/\345\210\235\345\247\213\351\205\215\347\275\256.txt" @@ -0,0 +1 @@ +先切换平台到 x86,然后F5 启动一次工程。 \ No newline at end of file