Compare commits

...
80 Commits
Author SHA1 Message Date
Aigio Liu 152c60a9c3 fix ci 2021-05-05 21:53:33 +08:00
rmbgame 6581d67f14 update 2021-05-05 21:52:33 +08:00
Aigio Liu cc5b161d92 v2.1.0 2021-05-05 21:45:07 +08:00
Aigio Liu c1f9d31e6d update cmd 2021-05-05 21:34:03 +08:00
rmbgame 1d09ec05ec update ui 2021-05-05 21:07:38 +08:00
rmbgame 4ced8453cf update Avalonia package 2021-05-05 20:22:46 +08:00
rmbgame a9b6774210 用户steam头像 2021-05-05 19:33:44 +08:00
Aigio Liu cad359bd91 无手机号时隐藏换绑手机 2021-05-05 19:06:30 +08:00
Aigio Liu d2918a9221 Steam 快速登录 2021-05-05 18:35:23 +08:00
rmbgame 276aa4fe15 steam login ui 2021-05-05 18:29:09 +08:00
rmbgame 24e98078ef fix file error 2021-05-05 18:29:09 +08:00
rmbgame d75420f255 修复了多个导致闪退的错误 2021-05-05 15:38:03 +08:00
rmbgame 236ed0a5f8 fix proxy crash error 2021-05-05 15:38:03 +08:00
rmbgame f3033498fb merger 2021-05-05 04:02:02 +08:00
rmbgame f739a5f387 调整脚本列表UI 2021-05-05 03:59:25 +08:00
rmbgame 0f0f50dcd5 close #179 2021-05-05 03:59:25 +08:00
rmbgame 8f6d4378fa 新增背景透明度UI设置 2021-05-05 03:59:25 +08:00
rmbgame da7d5ec814 修复成就解锁窗口不显示的问题 2021-05-05 03:57:33 +08:00
Aigio Liu 171705992b fix macos ci 2021-05-05 02:05:31 +08:00
Aigio Liu 398282f656 Steam 登录状态 Cookie + WebView3 2021-05-05 01:56:31 +08:00
Mossimo 17261c7706 fix tipsmsg 2021-05-04 23:40:52 +08:00
Aigio Liu 2e99ac9899 改进 手机号码号段
改进 UA
2021-05-04 21:18:55 +08:00
Aigio Liu 51dd188141 Steam 快速登录 for WebView3 100% 2021-05-04 18:58:16 +08:00
Aigio Liu 49e5e56fb1 Update ScreenShorts 2021-05-04 12:19:49 +08:00
rmbgame dcea1c6fbc fix other Platform 2021-05-04 06:29:46 +08:00
Mossimo fd3a5129ca fix Gmjs repeat only one remove other 2021-05-04 06:23:26 +08:00
rmbgame a811e5e43a 修复系统关机时应正确关闭掉启用的windows代理 2021-05-04 06:22:38 +08:00
rmbgame 44c3c27315 Absolute path 2021-05-04 06:22:38 +08:00
Aigio Liu 7642eea09d 更正资源文本 2021-05-04 02:40:05 +08:00
Aigio Liu 997f9f9282 Steam 快速登录 95% 2021-05-04 02:30:05 +08:00
Aigio Liu 55067a198a 改进 自动更新 2021-05-04 00:27:29 +08:00
Mossimo 6fd5338f4c fix script Build 2021-05-03 23:48:09 +08:00
Mossimo ea277b218b sfix RefreshScriptItemButton 2021-05-03 23:01:04 +08:00
rmbgame 0f730aac10 没有启用加速也可开启加速单独启用脚本 2021-05-03 21:47:42 +08:00
Mossimo c51e85f52b fix post 2021-05-03 21:35:37 +08:00
Aigio Liu a5e6411afe 改进 当 hosts 文件不存在时自动创建空文件 2021-05-03 20:20:31 +08:00
rmbgame 94b602be26 修复脚本启用状态保存问题 2021-05-03 20:05:57 +08:00
Aigio Liu 572bca08fd Steam 快速登录 80%
即将发布 2.0.0.8
2021-05-03 19:50:09 +08:00
rmbgame 64531c40a1 ui 2021-05-03 16:18:16 +08:00
rmbgame f4c06016c9 ui 2021-05-03 15:57:26 +08:00
rmbgame 19073d111a ready 2021-05-03 15:57:26 +08:00
rmbgame 4a5cacb654 update window 2021-05-03 15:57:26 +08:00
rmbgame 9221e8d0b8 window Size and Position save 2021-05-03 03:27:15 +08:00
Aigio Liu c191ba851f fix warn 2021-05-03 00:56:54 +08:00
Aigio Liu ebc38453e4 DelAcc 2021-05-03 00:56:53 +08:00
Aigio Liu cd3783b864 进行中:Steam 快速登录 2 2021-05-02 23:13:35 +08:00
Mossimo 74fdd9f016 fix js build 2021-05-02 23:04:35 +08:00
Mossimo 731449a46e save 2021-05-02 21:00:10 +08:00
Mossimo 52485b5054 fix jsquery 2021-05-02 21:00:10 +08:00
rmbgame 9fd359c2cf fix 195 2021-05-02 20:33:33 +08:00
rmbgame 8fb9b12f3d fix account offine bug 2021-05-02 20:33:33 +08:00
Aigio Liu fb5aa30287 优化 WebView3 Loading 2021-05-02 19:04:43 +08:00
rmbgame ba1886758b fix proxy bug 2021-05-02 17:31:47 +08:00
rmbgame 5a9e264dda update image2 2021-05-02 17:10:30 +08:00
Aigio Liu dcc8fc04b2 进行中:Steam 快速登录 2021-05-02 14:51:50 +08:00
Aigio Liu 25aa1951e3 新增 WebView3 拦截 Rsp
修复 更新进度条值不正确
版本更变 2.0.0.8
2021-05-02 11:50:16 +08:00
rmbgame 84490ef9b6 fix windows proxy port check 2021-05-02 09:03:25 +08:00
rmbgame 92c358d81b 更改文件夹结构 2021-05-02 08:27:41 +08:00
Aigio Liu 42ae1038f1 fix droid test 2021-05-02 08:11:51 +08:00
Aigio Liu 37918501ab fix CI Build by Linux 2021-05-02 07:12:42 +08:00
Aigio L 0688e7d9a1 Update dotnet.yml 2021-05-02 07:03:56 +08:00
Aigio Liu efcc843557 fix Res by macOS 2021-05-02 06:58:35 +08:00
Aigio Liu 4a41ed7b9c res restore 2021-05-02 06:53:07 +08:00
Aigio Liu 2e7172e1c0 fix Res 2021-05-02 06:43:16 +08:00
Aigio L 7fa92ef55d Update dotnet.yml 2021-05-02 06:39:30 +08:00
Aigio Liu 6555d23e78 fix res 2021-05-02 06:33:54 +08:00
Aigio L a95403c958 Update dotnet.yml 2021-05-02 06:22:11 +08:00
Aigio Liu 8a60b0f91d add Linux.sln 2021-05-02 06:20:05 +08:00
Aigio L 70d33296ca Update dotnet.yml 2021-05-02 06:14:26 +08:00
Aigio L 73f80b6f0f Update dotnet.yml 2021-05-02 06:01:02 +08:00
Aigio L b1169a149e Update dotnet.yml 2021-05-02 05:53:42 +08:00
Aigio L 790dd18bb8 Update dotnet.yml 2021-05-02 05:48:37 +08:00
Aigio L 86ac7ad386 Update dotnet.yml 2021-05-02 05:44:07 +08:00
Aigio L 5310b5e1a5 Update dotnet.yml 2021-05-02 05:35:39 +08:00
Aigio L 6a4af4ab73 Update dotnet.yml 2021-05-02 05:32:17 +08:00
Aigio Liu 1846854759 2.0.0.7-beta
修复 主题跟随系统内嵌网页主题不正确
目标框架TFM 升级至 6.0 解决 Win7 上存在的一些兼容性问题
2021-05-01 19:47:02 +08:00
Aigio Liu b4158be5e8 修复 Hosts 文件操作 2021-05-01 16:22:39 +08:00
Aigio Liu 9a6e5bb323 add note 2021-05-01 15:27:37 +08:00
Aigio Liu 363fc9a440 修复 Hosts 文件服务
添加 打开桌面图标设置
2021-05-01 15:27:36 +08:00
Aigio Liu b19b5cf88f 改进 Hosts 操作重复项忽略
修复 Hosts 操作错误时不提示
改进 ServerApi 添加 Polly
改进 获取加速项目Api 使用 Polly
2021-05-01 14:05:32 +08:00
190 changed files with 5088 additions and 2079 deletions
+32 -10
View File
@@ -2,22 +2,27 @@ name: .NET
on:
push:
branches: [ master,develop ]
branches: [ master, develop ]
pull_request:
branches: [ master,develop ]
branches: [ master, develop ]
jobs:
build:
runs-on: windows-latest
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ windows-latest, macOS-latest, ubuntu-latest ]
steps:
- uses: actions/checkout@v2
- name: Setup .NET
- name: Setup .NET 5
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.100-preview.3.21202.5
- name: Checkout repository
uses: actions/checkout@v2
- name: Checkout submodules
@@ -25,15 +30,32 @@ jobs:
- name: dotnet info
run: dotnet --info
- name: dotnet restore
- name: dotnet restore SteamToolsV2+.sln
if: matrix.os == 'windows-latest'
run: dotnet restore ./SteamToolsV2+.sln
- name: dotnet restore SteamTools.Desktop.Linux.sln
if: matrix.os == 'ubuntu-latest'
run: dotnet restore ./SteamTools.Desktop.Linux.sln
- name: dotnet restore SteamTools.Desktop.Mac.sln
if: matrix.os == 'macOS-latest'
run: dotnet restore ./SteamTools.Desktop.Mac.sln
- name: dotnet AvaloniaApp build
run: dotnet build ./src/ST.Client.Desktop.Avalonia.App/ST.Client.Desktop.Avalonia.App.csproj
- name: dotnet CommonUnit build
run: dotnet build ./tests/Common.UnitTest/Common.UnitTest.csproj
- name: dotnet CommonUnit test
run: dotnet test ./tests/Common.UnitTest/Common.UnitTest.csproj
- name: dotnet ST.Client.UnitTest build
run: dotnet build ./tests/ST.Client.UnitTest/ST.Client.UnitTest.csproj
- name: dotnet ST.Client.Desktop.UnitTest build
run: dotnet build ./tests/ST.Client.Desktop.UnitTest/ST.Client.Desktop.UnitTest.csproj
- name: dotnet CommonUnit test
run: dotnet test ./tests/Common.UnitTest/Common.UnitTest.csproj
- name: dotnet ST.Client.UnitTest test
run: dotnet test ./tests/ST.Client.UnitTest/ST.Client.UnitTest.csproj
- name: dotnet ST.Client.Desktop.UnitTest test
if: matrix.os != 'windows-latest'
run: dotnet test ./tests/ST.Client.Desktop.UnitTest/ST.Client.Desktop.UnitTest.csproj
+4
View File
@@ -19,10 +19,13 @@
[![Official WebSite](https://img.shields.io/badge/website@official-Ant%20Design%20of%20React-blue.svg?style=flat-square&color=61dafb)](https://github.com/ant-design/ant-design)
[![BackManage WebSite](https://img.shields.io/badge/website@back_manage-Ant%20Design%20of%20Blazor-purple.svg?style=flat-square&color=512bd4)](https://github.com/ant-design-blazor/ant-design-blazor)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FSteamTools-Team%2FSteamTools%2Fbadge%3Fref%3Ddevelop&style=flat-square)](https://actions-badge.atrox.dev/SteamTools-Team/SteamTools/goto?ref=develop)
[![GitHub Star](https://img.shields.io/github/stars/rmbadmin/SteamTools.svg?style=social)](https://github.com/SteamTools-Team/SteamTools)
[![Gitee Star](https://gitee.com/rmbgame/SteamTools/badge/star.svg)](https://gitee.com/rmbgame/SteamTools)
</div>
<div align="center"><img src="./resources/screenshots.en.jpg" /></div>
English | [简体中文](./README.md)
## ✨ Functions
@@ -138,6 +141,7 @@ Read what we [milestones](https://github.com/SteamTools-Team/SteamTools/mileston
* [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore)
* [AspNet.Security.OpenId.Providers](https://github.com/aspnet-contrib/AspNet.Security.OpenId.Providers)
* [CefNet](https://github.com/CefNet/CefNet)
* [CefSharp](https://github.com/cefsharp/CefSharp)
* [React](https://github.com/facebook/react)
* [Ant Design](https://github.com/ant-design/ant-design)
* [Ant Design Blazor](https://github.com/ant-design-blazor/ant-design-blazor)
+3 -1
View File
@@ -19,9 +19,10 @@
[![Official WebSite](https://img.shields.io/badge/website@official-Ant%20Design%20of%20React-blue.svg?style=flat-square&color=61dafb)](https://github.com/ant-design/ant-design)
[![BackManage WebSite](https://img.shields.io/badge/website@back_manage-Ant%20Design%20of%20Blazor-purple.svg?style=flat-square&color=512bd4)](https://github.com/ant-design-blazor/ant-design-blazor)
[![](https://img.shields.io/badge/QQ群-479036439-blue.svg?style=flat-square&color=12b7f5)](https://jq.qq.com/?_wv=1027&k=MWH729dD)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FSteamTools-Team%2FSteamTools%2Fbadge%3Fref%3Ddevelop&style=flat-square)](https://actions-badge.atrox.dev/SteamTools-Team/SteamTools/goto?ref=develop)
[![GitHub Star](https://img.shields.io/github/stars/rmbadmin/SteamTools.svg?style=social)](https://github.com/SteamTools-Team/SteamTools)
[![Gitee Star](https://gitee.com/rmbgame/SteamTools/badge/star.svg)](https://gitee.com/rmbgame/SteamTools)
[![](https://img.shields.io/badge/QQ群-479036439-blue.svg?style=flat-square&color=12b7f5)](https://jq.qq.com/?_wv=1027&k=MWH729dD)
</div>
<div align="center"><img src="./resources/screenshots.jpg" /></div>
@@ -152,6 +153,7 @@
* [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore)
* [AspNet.Security.OpenId.Providers](https://github.com/aspnet-contrib/AspNet.Security.OpenId.Providers)
* [CefNet](https://github.com/CefNet/CefNet)
* [CefSharp](https://github.com/cefsharp/CefSharp)
* [React](https://github.com/facebook/react)
* [Ant Design](https://github.com/ant-design/ant-design)
* [Ant Design Blazor](https://github.com/ant-design-blazor/ant-design-blazor)
-125
View File
@@ -1,125 +0,0 @@
## 前言
### 发布至今
Steam++从去年年底12月18日发布了[第一个版本](https://keylol.com/t667906-1-1)至今,已经过去了3个多月。这段时间我肝代码肝的特别勤快,游戏也不咋玩了。在此是感谢keylol的各位老哥对我发布时的支持,发布后短短一天时间就加了1k多体力。以及坛子里各位老哥对我的捐助支持,都非常感谢!
这段时间也发生了许多事情,目前软件没有任何服务器,所以凭下载量判断可能有几万用户吧。还是有10个以内的人与我反馈被盗号了,再此只能表示开源软件想盗号那是真的难如登天了。
### 后续计划
在此为了对得起大家的鼓励和捐助的支持,所以决定并启用了Steam++v2.0版本的开发,短期计划为之前所描述的预计推出功能以及答应大家添加的所有功能,并且做到支持全平台Windows Mac Linux Android iOS版本支持。
### 现在状况
我拉了我几位朋友来一起开发,现在有3个人参与到此项目了,所以开发速度也不会太慢。
## 问卷调查
我们对于2.0的设计开发目前作了一些计划,但更希望能够听到用户朋友们的宝贵意见和建议。为此我们做了一份问卷调查,希望大家能够来填写。
问卷地址:[https://www.wjx.cn/vj/Y0zCByQ.aspx](https://keylol.com/t667906-1-1)
或者扫码 [attachimg]1320065[/attachimg]
## Steam++v2.0 前瞻
### 界面大改
第一个改动最明显的地方就是界面。原先的界面UI不是很美观,文字堆砌太过复杂,在2.0版本将这些文字都简略化,改用更合适的布局界面。
### 多平台
Steam++将会支持Linux、macOS,也会登录安卓平台、IOS平台,由于各个平台兼容性不同以及开发速度的不足,这些平台会删减部分Windows平台上拥有的功能,当然后续会不断增加功能进行完善。
[attachimg]1320063[/attachimg]
### Steam++账号
2.0版本中将开放Steam++账号注册,账号注册登录后将能使用新增的各种联网服务,例如云同步、云挂卡、交易市场等。也能将自己的配置设置同步到多平台。
### 令牌云同步
在新版本中,大家可以使用Steam++生成自己的Steam令牌,并且将自己保存在电脑上的本地令牌加密上传到云端。这样可以在我们的各个平台上看到自己的令牌,无需频繁的导入导出。
在手机App上,大家可以导入PC端生成的令牌,也可以通过云同步获取到自己的令牌,解决了很多用户手机、电脑、平板无法同时查看令牌的尴尬问题。
关于安全问题:令牌将采用加密算法,通过含有用户自己添加的密匙来进行加密,服务器中只会保留加密后的数据。如果没有用户的密匙,任何人(包括Steam++开发组)都无法解开加密,从而使令牌无法读取直接作废。
这个功能将在2.0版本上线,手机端可能会延后上线。
### 本地反代加速改动
在界面上进行了大改,将同类反代(如Steam社区、Steam商店)合并到了一个按钮中,可以一次性全部启动也可以在设置中单独启动某一项反代功能。并且也会推出服务器加速的模式,可供选择使用。
### 本地令牌改动
在界面上进行了调整,使其更加美观。
添加了令牌生成功能,可以直接在Steam++中生成Steam令牌,无需从其他地方生成后再导入。而且之后做了手机端,可以形成互补,大概目标是取代steam手机app,真的不好用。
[attachimg]1320062[/attachimg]
### 云挂卡服务
在2.0版本推出后不久,将会更新云挂卡功能。大家可以使用我们的服务器进行24小时不间断地挂卡挂时长,并且可以用电脑客户端或者手机App来管理云挂卡进度。
这个功能预计在2.1版本上线。
### 云存档服务
大家可以上传自己的游戏存档进行备份保存,也可以选择分享自己的存档给其他人,或者在我们的Steam++社区内浏览下载其他人分享的存档。
Steam++会自动导入存档到正确的位置,保证能够让游戏正常读取。
这个功能还没开始做,估计要等一段时间才能发布。
### 交易市场
可以在交易市场上购买、出售自己多余的CDKey、Steam余额。在Steam++交易市场上能找到由个人卖家挂售游戏和余额。买家可以直接私聊卖家进行砍价,也可以查看到卖家的rep值,也能在交易后给对方好评或者差评,这将直接影响到被评论方的rep值。
同时Steam++也会作为中间担保人,杜绝欺骗行为的发生。
### 其它
更多的小功能就不太值一提了,但是因为太多,短期也不一定搞得完,再此列个说明,Steam下载完成自动关机、Steam Edit编辑Steam游戏信息、自动白嫖epic、steam游戏,Steam封面管理等等等有更多未列出。以及当我们在Steam平台做的差不多的时候,就会更多的开始钻研做其它平台功能。
## 写在最后
再此我可以保证程序将永远良心收费,不流氓不捆绑,所有本地功能永久免费,只有需要成本的服务端功能才会进行收费。并且程序依然开源发布,不会闭源。
(本来以前一直是想做游戏,但是低成本确实太难做好了,一个人开发独立游戏再怎么努力,依然问题太多,并且我得美术是在是差的离谱,就算是像素画自己都没眼看,退而求其次,先尝试别的,如果真的能赚钱,那就再接着做单机游戏!梦想不能放弃)
官网:[http://www.steamtool.net](http://www.steamtool.net)
目前临时使用此域名,后续迁移到steampp.net
GitHub:[https://github.com/rmbadmin/SteamTools/releases](https://github.com/rmbadmin/SteamTools/releases)
官方QQ群:479036439(1群已经满员,新开了2群)
又不知不觉肝了一通宵代码,因为确实需要了解大家对于收费的态度问题,所以发个帖做个小调查,睡醒了才能回复。
实在不知道发在什么区,那就当水贴了。
睡了,大家晚安{:17_1052:} 。
+844
View File
@@ -0,0 +1,844 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31005.135
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Repositories.sqlite-net-pcl", "src\Repositories.sqlite-net-pcl\Repositories.sqlite-net-pcl.csproj", "{512B0511-41AB-444D-BAD8-E19B7D3B52CB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.ClientLib", "src\Common.ClientLib\Common.ClientLib.csproj", "{8B9F2E93-B31B-4BA7-920D-732695A473E6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.CoreLib", "src\Common.CoreLib\Common.CoreLib.csproj", "{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.ClientLib.Droid", "src\Common.ClientLib.Droid\Common.ClientLib.Droid.csproj", "{7C8D906E-426B-49AB-9072-178555370F62}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.ClientLib.iOS", "src\Common.ClientLib.iOS\Common.ClientLib.iOS.csproj", "{F8F6973C-5831-43D1-89C2-1AD543CE7408}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "0_Common", "0_Common", "{2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3_SteamTools_Libs", "3_SteamTools_Libs", "{B43459A1-709B-4623-9677-AAC2FEE4FBA3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Services.CloudService.Models", "src\ST.Services.CloudService.Models\ST.Services.CloudService.Models.csproj", "{6CD71E14-5036-4A16-8084-4AD108D34FF7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Services.CloudService", "src\ST.Services.CloudService\ST.Services.CloudService.csproj", "{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2_Test", "2_Test", "{EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.UnitTest", "tests\Common.UnitTest\Common.UnitTest.csproj", "{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.UnitTest.Droid", "tests\Common.UnitTest.Droid\Common.UnitTest.Droid.csproj", "{0073A08E-6336-4C09-99F9-2E808889D715}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.UnitTest.Droid.App", "tests\Common.UnitTest.Droid.App\Common.UnitTest.Droid.App.csproj", "{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST", "src\ST\ST.csproj", "{66B7BFD6-6D4D-421B-BA5B-915348E53708}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client", "src\ST.Client\ST.Client.csproj", "{0A624994-B0A9-4F1F-B7D0-97FE2929936B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop", "src\ST.Client.Desktop\ST.Client.Desktop.csproj", "{D1F15D97-802E-4AA3-A4A5-B890ABE32897}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia.App", "src\ST.Client.Desktop.Avalonia.App\ST.Client.Desktop.Avalonia.App.csproj", "{2FFA5BCE-B3C3-46EA-8830-838C938BF814}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Root", "_Root", "{B4B548C1-9AFE-4EBB-96E4-990B57C0A953}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
Directory.Build.props = Directory.Build.props
global.json = global.json
nuget.config = nuget.config
README.en.md = README.en.md
README.md = README.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia", "src\ST.Client.Desktop.Avalonia\ST.Client.Desktop.Avalonia.csproj", "{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Linux", "src\ST.Client.Desktop.Linux\ST.Client.Desktop.Linux.csproj", "{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Mac", "src\ST.Client.Desktop.Mac\ST.Client.Desktop.Mac.csproj", "{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Windows", "src\ST.Client.Desktop.Windows\ST.Client.Desktop.Windows.csproj", "{141532E1-540E-4E50-8723-96936C191281}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "1_Reference", "1_Reference", "{8EB91F53-1062-4E9B-8E4A-096F35EA688D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Authenticator", "references\WinAuth\Authenticator\Authenticator.csproj", "{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SAM.API", "references\SteamAchievementManager\SAM.API\SAM.API.csproj", "{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Steam4NET", "references\Steam4NET\Steam4NET\Steam4NET.csproj", "{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Titanium.Web.Proxy", "references\Titanium-Web-Proxy\src\Titanium.Web.Proxy\Titanium.Web.Proxy.csproj", "{35D60129-6652-4B6E-A04A-9766C3CF1869}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.OpenSourceLibraryList", "src\ST.Tools.OpenSourceLibraryList\ST.Tools.OpenSourceLibraryList.csproj", "{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.UnitTest", "tests\ST.Client.UnitTest\ST.Client.UnitTest.csproj", "{8EDF4429-251A-416D-BB68-93F227191BCF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.Translate", "src\ST.Tools.Translate\ST.Tools.Translate.csproj", "{ABAF70E5-A582-4916-B217-6A660BB31D52}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "4_SteamTools_Tools", "4_SteamTools_Tools", "{5A7A506C-4DFF-4941-A9A6-B1182C7D5825}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Avalonia.Demo.App", "src\ST.Client.Desktop.Avalonia.Demo.App\ST.Client.Desktop.Avalonia.Demo.App.csproj", "{39C26BF0-E5FE-42B1-B011-B7300847DED6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Mobile", "src\ST.Client.Mobile\ST.Client.Mobile.csproj", "{64F63608-1390-41D1-8568-F4E05AE35E75}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Mobile.iOS", "src\ST.Client.Mobile.iOS\ST.Client.Mobile.iOS.csproj", "{A040865C-FA5F-486A-9CC9-96CF34859FBD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Mobile.Droid", "src\ST.Client.Mobile.Droid\ST.Client.Mobile.Droid.csproj", "{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ST.Client.Mobile.Droid.App", "src\ST.Client.Mobile.Droid.App\ST.Client.Mobile.Droid.App.csproj", "{B355E372-27D2-4217-A129-D3355573681F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ST.Client.Mobile.iOS.App", "src\ST.Client.Mobile.iOS.App\ST.Client.Mobile.iOS.App.csproj", "{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.Packager.InstallerSetup", "src\ST.Tools.Packager.InstallerSetup\ST.Tools.Packager.InstallerSetup.csproj", "{981AB416-A954-4A68-9521-BC71C5AEE058}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Services.CloudService.ViewModels", "src\ST.Services.CloudService.ViewModels\ST.Services.CloudService.ViewModels.csproj", "{90E4B24A-8A7E-4163-837B-BEC7419A7A97}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Depressurizer.Core", "references\Depressurizer\src\Depressurizer.Core\Depressurizer.Core.csproj", "{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.AreaLib", "src\Common.AreaLib\Common.AreaLib.csproj", "{314F0805-EB94-4685-B0EF-BF9418D19003}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.AreaImport", "src\ST.Tools.AreaImport\ST.Tools.AreaImport.csproj", "{6E3D25E9-544E-498A-8F23-BC4E767FF01B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvaloniaGif", "references\AvaloniaGif\AvaloniaGif\AvaloniaGif.csproj", "{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibAPNG", "references\AvaloniaGif\LibAPNG\LibAPNG.csproj", "{09591D9E-2186-42F1-B6C6-375326E2CF2E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CefNet.Avalonia", "references\CefNet\CefNet.Avalonia\CefNet.Avalonia.csproj", "{38A8EE9F-81A8-4B11-A6E9-864A12C43089}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.MinifyStaticSites", "src\ST.Tools.MinifyStaticSites\ST.Tools.MinifyStaticSites.csproj", "{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Console.App", "src\ST.Client.Desktop.Console.App\ST.Client.Desktop.Console.App.csproj", "{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.UnitTest", "tests\ST.Client.Desktop.UnitTest\ST.Client.Desktop.UnitTest.csproj", "{E21D0376-0A18-4F46-9ED7-BE4466763B2D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhone.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|x86.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|x86.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|Any CPU.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhone.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhone.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|x86.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|x86.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhone.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|x86.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|x86.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|Any CPU.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhone.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhone.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|x86.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|x86.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhone.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|x86.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|x86.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|Any CPU.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhone.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhone.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|x86.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|x86.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhone.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|x86.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|x86.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|Any CPU.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhone.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhone.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|x86.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|x86.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhone.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|x86.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|x86.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|Any CPU.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhone.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhone.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|x86.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|x86.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhone.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|x86.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|x86.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|Any CPU.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhone.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhone.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|x86.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|x86.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhone.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|x86.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|x86.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|Any CPU.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhone.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhone.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|x86.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|x86.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhone.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|x86.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|x86.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|Any CPU.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhone.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhone.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|x86.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|x86.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhone.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|x86.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|x86.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|Any CPU.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhone.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhone.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|x86.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|x86.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhone.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhone.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhone.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhone.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|x86.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|x86.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|x86.Deploy.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|Any CPU.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhone.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|x86.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|x86.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|Any CPU.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhone.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhone.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|x86.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|x86.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhone.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|x86.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|x86.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|Any CPU.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhone.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhone.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|x86.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|x86.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhone.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|x86.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|x86.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|Any CPU.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhone.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhone.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|x86.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|x86.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhone.Build.0 = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|x86.ActiveCfg = Debug|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|x86.Build.0 = Debug|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|Any CPU.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhone.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhone.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|x86.ActiveCfg = Release|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|x86.Build.0 = Release|x86
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhone.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|x86.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|x86.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|Any CPU.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhone.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhone.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|x86.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|x86.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhone.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|x86.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|x86.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|Any CPU.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhone.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhone.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|x86.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|x86.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhone.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|x86.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|x86.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|Any CPU.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhone.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhone.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|x86.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|x86.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|Any CPU.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhone.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|x86.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|x86.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|Any CPU.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|Any CPU.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhone.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhone.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|x86.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|x86.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhone.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|x86.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|x86.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|Any CPU.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhone.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhone.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|x86.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|x86.Build.0 = Release|Any CPU
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|Any CPU.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|Any CPU.Build.0 = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|iPhone.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|x86.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|x86.Build.0 = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|Any CPU.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|Any CPU.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|iPhone.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|x86.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|x86.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|Any CPU.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|Any CPU.Build.0 = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|iPhone.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|x86.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|x86.Build.0 = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|Any CPU.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|Any CPU.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|iPhone.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|x86.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|x86.Build.0 = Release|x86
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhone.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|x86.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|x86.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|Any CPU.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhone.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhone.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|x86.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|x86.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhone.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|x86.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|x86.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|Any CPU.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhone.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhone.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|x86.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|x86.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhone.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhone.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhone.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|x86.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|x86.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhone.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|x86.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|x86.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|Any CPU.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhone.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhone.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|x86.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|x86.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhone.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|x86.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|x86.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|Any CPU.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhone.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhone.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|x86.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|x86.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhone.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|x86.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|x86.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|Any CPU.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhone.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhone.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|x86.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|x86.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhone.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|x86.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|x86.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|Any CPU.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhone.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhone.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|x86.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|x86.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhone.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|x86.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|x86.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|Any CPU.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhone.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhone.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|x86.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|x86.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhone.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhone.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhone.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhone.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|x86.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|x86.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|x86.Deploy.0 = Release|Any CPU
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhone.ActiveCfg = Debug|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhone.Build.0 = Debug|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhone.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhone.Build.0 = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|Any CPU.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhone.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|x86.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|x86.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|Any CPU.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|Any CPU.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhone.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhone.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|x86.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|x86.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhone.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|x86.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|x86.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|Any CPU.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhone.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhone.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|x86.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|x86.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhone.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|x86.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|x86.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|Any CPU.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhone.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhone.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|x86.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|x86.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|Any CPU.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhone.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|x86.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|x86.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|Any CPU.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|Any CPU.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhone.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhone.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|x86.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|x86.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhone.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|x86.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|x86.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|Any CPU.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhone.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhone.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|x86.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|x86.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhone.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|x86.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|x86.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|Any CPU.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhone.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhone.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|x86.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|x86.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhone.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|x86.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|x86.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|Any CPU.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhone.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhone.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|x86.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|x86.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|Any CPU.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhone.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|x86.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|x86.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|Any CPU.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhone.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhone.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|x86.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|x86.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhone.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|x86.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|x86.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|Any CPU.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhone.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhone.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|x86.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|x86.Build.0 = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|iPhone.Build.0 = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|x86.ActiveCfg = Debug|x86
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Debug|x86.Build.0 = Debug|x86
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|Any CPU.Build.0 = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|iPhone.ActiveCfg = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|iPhone.Build.0 = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|x86.ActiveCfg = Release|x86
{CFDEC4A2-2757-403D-B90B-1846BCEE1EC4}.Release|x86.Build.0 = Release|x86
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|iPhone.Build.0 = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|x86.ActiveCfg = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Debug|x86.Build.0 = Debug|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|Any CPU.Build.0 = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|iPhone.ActiveCfg = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|iPhone.Build.0 = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|x86.ActiveCfg = Release|Any CPU
{E21D0376-0A18-4F46-9ED7-BE4466763B2D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{512B0511-41AB-444D-BAD8-E19B7D3B52CB} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{8B9F2E93-B31B-4BA7-920D-732695A473E6} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{7C8D906E-426B-49AB-9072-178555370F62} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{F8F6973C-5831-43D1-89C2-1AD543CE7408} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{6CD71E14-5036-4A16-8084-4AD108D34FF7} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
{0073A08E-6336-4C09-99F9-2E808889D715} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
{66B7BFD6-6D4D-421B-BA5B-915348E53708} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{0A624994-B0A9-4F1F-B7D0-97FE2929936B} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{D1F15D97-802E-4AA3-A4A5-B890ABE32897} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{141532E1-540E-4E50-8723-96936C191281} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{35D60129-6652-4B6E-A04A-9766C3CF1869} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{8EDF4429-251A-416D-BB68-93F227191BCF} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
{ABAF70E5-A582-4916-B217-6A660BB31D52} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{64F63608-1390-41D1-8568-F4E05AE35E75} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{A040865C-FA5F-486A-9CC9-96CF34859FBD} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{981AB416-A954-4A68-9521-BC71C5AEE058} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{90E4B24A-8A7E-4163-837B-BEC7419A7A97} = {B43459A1-709B-4623-9677-AAC2FEE4FBA3}
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{314F0805-EB94-4685-B0EF-BF9418D19003} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{6E3D25E9-544E-498A-8F23-BC4E767FF01B} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{09591D9E-2186-42F1-B6C6-375326E2CF2E} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{38A8EE9F-81A8-4B11-A6E9-864A12C43089} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{E21D0376-0A18-4F46-9ED7-BE4466763B2D} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3833E7C5-69BC-4CB3-92CE-A8854AA35D8A}
EndGlobalSection
EndGlobal
+80
View File
@@ -63,6 +63,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.AreaImport", "src\
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CefNet.Avalonia", "references\CefNet\CefNet.Avalonia\CefNet.Avalonia.csproj", "{9A533027-82BD-40CB-BB32-77F75F6FDDC7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Console.App", "src\ST.Client.Desktop.Console.App\ST.Client.Desktop.Console.App.csproj", "{A621E551-010C-4397-9C15-66D470B4D98E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvaloniaGif", "references\AvaloniaGif\AvaloniaGif\AvaloniaGif.csproj", "{FD444E97-E851-4FF2-A3F1-498C6A3BF098}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.UnitTest", "tests\ST.Client.Desktop.UnitTest\ST.Client.Desktop.UnitTest.csproj", "{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -559,6 +565,78 @@ Global
{9A533027-82BD-40CB-BB32-77F75F6FDDC7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{9A533027-82BD-40CB-BB32-77F75F6FDDC7}.Release|x86.ActiveCfg = Release|Any CPU
{9A533027-82BD-40CB-BB32-77F75F6FDDC7}.Release|x86.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|iPhone.Build.0 = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|x86.ActiveCfg = Debug|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Debug|x86.Build.0 = Debug|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|x86.ActiveCfg = Release|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Nuget_Release|x86.Build.0 = Release|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|Any CPU.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|iPhone.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|iPhone.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|x86.ActiveCfg = Release|x86
{A621E551-010C-4397-9C15-66D470B4D98E}.Release|x86.Build.0 = Release|x86
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|iPhone.Build.0 = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|x86.ActiveCfg = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Debug|x86.Build.0 = Debug|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Nuget_Release|x86.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|Any CPU.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|iPhone.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|iPhone.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|x86.ActiveCfg = Release|Any CPU
{FD444E97-E851-4FF2-A3F1-498C6A3BF098}.Release|x86.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|iPhone.Build.0 = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|x86.ActiveCfg = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Debug|x86.Build.0 = Debug|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Nuget_Release|x86.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|Any CPU.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|iPhone.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|iPhone.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|x86.ActiveCfg = Release|Any CPU
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -582,6 +660,8 @@ Global
{4190F5AE-FFF1-4CB5-A433-FF5403E2BE24} = {2D44BDCF-B70C-4C02-BDC8-4F1DD5066A75}
{536A0A61-97A8-44E9-8258-9D508D54B44B} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{9A533027-82BD-40CB-BB32-77F75F6FDDC7} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{FD444E97-E851-4FF2-A3F1-498C6A3BF098} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{B8597B2B-12B4-4B44-9F37-98BAF3CCD560} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3833E7C5-69BC-4CB3-92CE-A8854AA35D8A}
+37 -348
View File
@@ -107,16 +107,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CefNet.Avalonia", "referenc
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Tools.MinifyStaticSites", "src\ST.Tools.MinifyStaticSites\ST.Tools.MinifyStaticSites.csproj", "{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.Console.App", "src\ST.Client.Desktop.Console.App\ST.Client.Desktop.Console.App.csproj", "{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ST.Client.Desktop.UnitTest", "tests\ST.Client.Desktop.UnitTest\ST.Client.Desktop.UnitTest.csproj", "{F544C06A-152E-48CE-9716-8B92F5CB51FF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x86 = Debug|x86
Nuget_Release|Any CPU = Nuget_Release|Any CPU
Nuget_Release|iPhone = Nuget_Release|iPhone
Nuget_Release|iPhoneSimulator = Nuget_Release|iPhoneSimulator
Nuget_Release|x86 = Nuget_Release|x86
Release|Any CPU = Release|Any CPU
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
@@ -131,14 +131,6 @@ Global
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|x86.ActiveCfg = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Debug|x86.Build.0 = Debug|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Nuget_Release|x86.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|Any CPU.Build.0 = Release|Any CPU
{512B0511-41AB-444D-BAD8-E19B7D3B52CB}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -155,14 +147,6 @@ Global
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|x86.ActiveCfg = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Debug|x86.Build.0 = Debug|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Nuget_Release|x86.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|Any CPU.Build.0 = Release|Any CPU
{8B9F2E93-B31B-4BA7-920D-732695A473E6}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -179,14 +163,6 @@ Global
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|x86.ActiveCfg = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Debug|x86.Build.0 = Debug|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Nuget_Release|x86.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|Any CPU.Build.0 = Release|Any CPU
{E7468FDD-75F7-4B08-BA47-B715BBCFCC11}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -203,14 +179,6 @@ Global
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|x86.ActiveCfg = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Debug|x86.Build.0 = Debug|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Nuget_Release|x86.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|Any CPU.Build.0 = Release|Any CPU
{7C8D906E-426B-49AB-9072-178555370F62}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -227,14 +195,6 @@ Global
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|x86.ActiveCfg = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Debug|x86.Build.0 = Debug|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Nuget_Release|x86.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|Any CPU.Build.0 = Release|Any CPU
{F8F6973C-5831-43D1-89C2-1AD543CE7408}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -251,14 +211,6 @@ Global
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|x86.ActiveCfg = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Debug|x86.Build.0 = Debug|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Nuget_Release|x86.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|Any CPU.Build.0 = Release|Any CPU
{6CD71E14-5036-4A16-8084-4AD108D34FF7}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -275,14 +227,6 @@ Global
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|x86.ActiveCfg = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Debug|x86.Build.0 = Debug|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Nuget_Release|x86.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|Any CPU.Build.0 = Release|Any CPU
{65DE552F-5E62-4E4F-ADCB-F19AD3DB3F78}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -299,14 +243,6 @@ Global
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|x86.ActiveCfg = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Debug|x86.Build.0 = Debug|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|Any CPU.Build.0 = Release|Any CPU
{B9D4C8C7-BF96-417B-A7F8-9A67AE75A38B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -323,14 +259,6 @@ Global
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|x86.ActiveCfg = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Debug|x86.Build.0 = Debug|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Nuget_Release|x86.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|Any CPU.Build.0 = Release|Any CPU
{0073A08E-6336-4C09-99F9-2E808889D715}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -351,18 +279,6 @@ Global
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.ActiveCfg = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.Build.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Debug|x86.Deploy.0 = Debug|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|Any CPU.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhone.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|x86.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Nuget_Release|x86.Deploy.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.Build.0 = Release|Any CPU
{AD7B78B0-AE51-4FB7-9B11-4E22A2B538CA}.Release|Any CPU.Deploy.0 = Release|Any CPU
@@ -383,14 +299,6 @@ Global
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|x86.ActiveCfg = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Debug|x86.Build.0 = Debug|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Nuget_Release|x86.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|Any CPU.Build.0 = Release|Any CPU
{66B7BFD6-6D4D-421B-BA5B-915348E53708}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -407,14 +315,6 @@ Global
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|x86.ActiveCfg = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Debug|x86.Build.0 = Debug|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|Any CPU.Build.0 = Release|Any CPU
{0A624994-B0A9-4F1F-B7D0-97FE2929936B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -431,14 +331,6 @@ Global
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|x86.ActiveCfg = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Debug|x86.Build.0 = Debug|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Nuget_Release|x86.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|Any CPU.Build.0 = Release|Any CPU
{D1F15D97-802E-4AA3-A4A5-B890ABE32897}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -455,14 +347,6 @@ Global
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|x86.ActiveCfg = Debug|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Debug|x86.Build.0 = Debug|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|x86.ActiveCfg = Release|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Nuget_Release|x86.Build.0 = Release|x86
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|Any CPU.Build.0 = Release|Any CPU
{2FFA5BCE-B3C3-46EA-8830-838C938BF814}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -479,14 +363,6 @@ Global
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|x86.ActiveCfg = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Debug|x86.Build.0 = Debug|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Nuget_Release|x86.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|Any CPU.Build.0 = Release|Any CPU
{4F09B6D1-3F83-45A0-AEC8-0F243E7CD263}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -503,14 +379,6 @@ Global
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|x86.ActiveCfg = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Debug|x86.Build.0 = Debug|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Nuget_Release|x86.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|Any CPU.Build.0 = Release|Any CPU
{D4CF08F5-8EAB-48FB-AAA3-1A221F7B2A82}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -527,14 +395,6 @@ Global
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|x86.ActiveCfg = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Debug|x86.Build.0 = Debug|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Nuget_Release|x86.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|Any CPU.Build.0 = Release|Any CPU
{948C1EA8-12DB-4F8A-A190-8615DFBD9FE4}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -551,14 +411,6 @@ Global
{141532E1-540E-4E50-8723-96936C191281}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|x86.ActiveCfg = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Debug|x86.Build.0 = Debug|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Nuget_Release|x86.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|Any CPU.ActiveCfg = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|Any CPU.Build.0 = Release|Any CPU
{141532E1-540E-4E50-8723-96936C191281}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -575,14 +427,6 @@ Global
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Debug|x86.ActiveCfg = Debug|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Debug|x86.Build.0 = Debug|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Release|Any CPU.Build.0 = Release|Any CPU
{60530AF8-4790-4A85-BCE2-C5673E9C601B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -599,14 +443,6 @@ Global
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Debug|x86.ActiveCfg = Debug|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Debug|x86.Build.0 = Debug|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Nuget_Release|x86.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Release|Any CPU.Build.0 = Release|Any CPU
{5A539932-2EB9-40F6-A4C1-94E5ECAB3B34}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -623,14 +459,6 @@ Global
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|x86.ActiveCfg = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Debug|x86.Build.0 = Debug|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Nuget_Release|x86.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|Any CPU.Build.0 = Release|Any CPU
{D018C980-17FD-49BB-A95D-EDE3C18BBE0A}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -645,14 +473,6 @@ Global
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|x86.ActiveCfg = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Debug|x86.Build.0 = Debug|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|Any CPU.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|Any CPU.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|iPhone.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|iPhone.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|iPhoneSimulator.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|x86.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Nuget_Release|x86.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|Any CPU.ActiveCfg = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|Any CPU.Build.0 = Release|x86
{6DD9644F-F005-4C19-8ADF-70C303EC5BB8}.Release|iPhone.ActiveCfg = Release|x86
@@ -665,14 +485,6 @@ Global
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|x86.ActiveCfg = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Debug|x86.Build.0 = Debug|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|Any CPU.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|Any CPU.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|iPhone.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|iPhone.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|iPhoneSimulator.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|x86.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Nuget_Release|x86.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|Any CPU.ActiveCfg = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|Any CPU.Build.0 = Release|x86
{3C05CED6-7712-40F0-AF17-8DD3F4C0A224}.Release|iPhone.ActiveCfg = Release|x86
@@ -687,14 +499,6 @@ Global
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|x86.ActiveCfg = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Debug|x86.Build.0 = Debug|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Nuget_Release|x86.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|Any CPU.Build.0 = Release|Any CPU
{35D60129-6652-4B6E-A04A-9766C3CF1869}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -711,14 +515,6 @@ Global
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|x86.ActiveCfg = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Debug|x86.Build.0 = Debug|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Nuget_Release|x86.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|Any CPU.Build.0 = Release|Any CPU
{CF7C2B80-D393-45EA-A67D-DF46FF17B0F8}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -735,14 +531,6 @@ Global
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.ActiveCfg = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.Build.0 = Debug|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Nuget_Release|x86.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU
{8EDF4429-251A-416D-BB68-93F227191BCF}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -759,14 +547,6 @@ Global
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|x86.ActiveCfg = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Debug|x86.Build.0 = Debug|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Nuget_Release|x86.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|Any CPU.Build.0 = Release|Any CPU
{ABAF70E5-A582-4916-B217-6A660BB31D52}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -783,14 +563,6 @@ Global
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|x86.ActiveCfg = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Debug|x86.Build.0 = Debug|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Nuget_Release|x86.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|Any CPU.Build.0 = Release|Any CPU
{39C26BF0-E5FE-42B1-B011-B7300847DED6}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -807,14 +579,6 @@ Global
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|x86.ActiveCfg = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Debug|x86.Build.0 = Debug|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Nuget_Release|x86.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|Any CPU.Build.0 = Release|Any CPU
{64F63608-1390-41D1-8568-F4E05AE35E75}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -831,14 +595,6 @@ Global
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|x86.ActiveCfg = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Debug|x86.Build.0 = Debug|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Nuget_Release|x86.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|Any CPU.Build.0 = Release|Any CPU
{A040865C-FA5F-486A-9CC9-96CF34859FBD}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -855,14 +611,6 @@ Global
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|x86.ActiveCfg = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Debug|x86.Build.0 = Debug|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Nuget_Release|x86.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|Any CPU.Build.0 = Release|Any CPU
{1B8B3C1D-8095-44F2-8106-46A69D5ECF94}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -883,18 +631,6 @@ Global
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.ActiveCfg = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.Build.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Debug|x86.Deploy.0 = Debug|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|Any CPU.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhone.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|x86.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Nuget_Release|x86.Deploy.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.Build.0 = Release|Any CPU
{B355E372-27D2-4217-A129-D3355573681F}.Release|Any CPU.Deploy.0 = Release|Any CPU
@@ -913,14 +649,6 @@ Global
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|Any CPU.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|Any CPU.Build.0 = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|iPhone.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|iPhone.Build.0 = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|x86.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Nuget_Release|x86.Build.0 = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhone.ActiveCfg = Release|iPhone
{AFC828ED-21EE-4FD4-A40D-FEFED5EED4EA}.Release|iPhone.Build.0 = Release|iPhone
@@ -935,14 +663,6 @@ Global
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|x86.ActiveCfg = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Debug|x86.Build.0 = Debug|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Nuget_Release|x86.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|Any CPU.ActiveCfg = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|Any CPU.Build.0 = Release|Any CPU
{981AB416-A954-4A68-9521-BC71C5AEE058}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -959,14 +679,6 @@ Global
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|x86.ActiveCfg = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Debug|x86.Build.0 = Debug|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Nuget_Release|x86.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|Any CPU.Build.0 = Release|Any CPU
{90E4B24A-8A7E-4163-837B-BEC7419A7A97}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -983,14 +695,6 @@ Global
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|x86.ActiveCfg = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Debug|x86.Build.0 = Debug|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Nuget_Release|x86.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|Any CPU.Build.0 = Release|Any CPU
{B626F392-53EF-4894-B7AD-E6AFBFA68E8C}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1007,14 +711,6 @@ Global
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|x86.ActiveCfg = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Debug|x86.Build.0 = Debug|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Nuget_Release|x86.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|Any CPU.ActiveCfg = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|Any CPU.Build.0 = Release|Any CPU
{314F0805-EB94-4685-B0EF-BF9418D19003}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1031,14 +727,6 @@ Global
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|x86.ActiveCfg = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Debug|x86.Build.0 = Debug|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|Any CPU.Build.0 = Release|Any CPU
{6E3D25E9-544E-498A-8F23-BC4E767FF01B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1055,14 +743,6 @@ Global
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|x86.ActiveCfg = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Debug|x86.Build.0 = Debug|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Nuget_Release|x86.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|Any CPU.Build.0 = Release|Any CPU
{71F3F25A-47A7-4F3D-97A7-50394E7EE21B}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1079,14 +759,6 @@ Global
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|x86.ActiveCfg = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Debug|x86.Build.0 = Debug|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Nuget_Release|x86.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|Any CPU.Build.0 = Release|Any CPU
{09591D9E-2186-42F1-B6C6-375326E2CF2E}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1103,14 +775,6 @@ Global
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|x86.ActiveCfg = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Debug|x86.Build.0 = Debug|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|Any CPU.ActiveCfg = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|Any CPU.Build.0 = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|iPhone.ActiveCfg = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|iPhone.Build.0 = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|iPhoneSimulator.ActiveCfg = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|iPhoneSimulator.Build.0 = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|x86.ActiveCfg = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Nuget_Release|x86.Build.0 = Nuget_Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|Any CPU.Build.0 = Release|Any CPU
{38A8EE9F-81A8-4B11-A6E9-864A12C43089}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1127,14 +791,6 @@ Global
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|x86.ActiveCfg = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Debug|x86.Build.0 = Debug|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|Any CPU.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|Any CPU.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|iPhone.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|iPhone.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|x86.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Nuget_Release|x86.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|Any CPU.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhone.ActiveCfg = Release|Any CPU
@@ -1143,6 +799,38 @@ Global
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|x86.ActiveCfg = Release|Any CPU
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1}.Release|x86.Build.0 = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|iPhone.Build.0 = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|x86.ActiveCfg = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Debug|x86.Build.0 = Debug|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|Any CPU.Build.0 = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|iPhone.ActiveCfg = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|iPhone.Build.0 = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|x86.ActiveCfg = Release|Any CPU
{7F104A37-93AF-4EF8-93EA-E8BD76FE8973}.Release|x86.Build.0 = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|iPhone.Build.0 = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|x86.ActiveCfg = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Debug|x86.Build.0 = Debug|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|Any CPU.Build.0 = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|iPhone.ActiveCfg = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|iPhone.Build.0 = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|x86.ActiveCfg = Release|Any CPU
{F544C06A-152E-48CE-9716-8B92F5CB51FF}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1186,6 +874,7 @@ Global
{09591D9E-2186-42F1-B6C6-375326E2CF2E} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{38A8EE9F-81A8-4B11-A6E9-864A12C43089} = {8EB91F53-1062-4E9B-8E4A-096F35EA688D}
{5E8F54E8-02A6-45D9-A7F9-7C9B43705BE1} = {5A7A506C-4DFF-4941-A9A6-B1182C7D5825}
{F544C06A-152E-48CE-9716-8B92F5CB51FF} = {EBC9DD0C-F7D0-4A00-B263-E69CF4E194F1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3833E7C5-69BC-4CB3-92CE-A8854AA35D8A}
+56 -60
View File
@@ -1,35 +1,51 @@
# 前言
Steam++项目创建于2018年5月8日,不过并不是耗时两年才做出来,之前一直由于工作原因,并没有多少空闲时间,直到今年中旬辞职了,才开始猛肝。
本来是想一直做到完全体了,才考虑发布,不过现在感慨一下,果然是没法这么快就整完的,所以还是一版一版更新做到完全体吧。
Steam++只在keylol论坛与github发布,为了账号安全,请不要到其它不明地方下载。
Steam++项目创建于2018年5月8日,不过并不是耗时三年才做出来,之前一直由于软软(软件原作者)的工作原因,并没有多少空闲时间,直到去年中旬软软辞职了,才开始猛肝。
去年年底发布了Steam++的第一个版本,受到了其乐广大用户的喜爱,并有了高达数百位网友的赞助支持。在此动力下,一直一个人更新维护到今年2月份。之后又找来几位朋友一起全职合作开发,并创立了我们自己的公司来进行运营这一产品。
在每人每天近16小时的高强度爆肝下,我们使用了最新的技术、最新的框架,将Steam++原先的代码全部重写,重新制作了UI。于是乎,Steam++2.0崭新出炉了。
Steam++目前处于一个完全开源的状态,所以对于软件报毒可以不用担心安全问题。我们也制作了自己的产品[官网](https://www.steampp.net),大家可以去官网下载到我们的工具。
# Steam++工具箱
## 已知的未修复问题
* 部分用户无法加载游戏列表,原因可能是因为第一次加载游戏列表时未加载完成程序停止运行了,导致生成了错误的缓存文件apps.json,如果遇到此问题可尝试手动删除程序目录下的apps.json然后重启程序。
## 更新内容
### 1.1.4
### 2.0.0.8
```
更新内容
     修复成就图标加载失败
     优化反代速度
     修复steam图片反代启动时创意工坊图片显示不了的问题
     修复uplay更新反代启动时更新失败的问题
     添加windows系统代理方式(该方式进行代理将不需要修改hosts文件以及不用占用443端口)
添加steam更新代理服务以此解决部分用户无法更新Steam的问题
1. 更换整体架构,提高软件兼容性
2. 重做UI界面,适应跨平台
3. 新增软件热更新支持
4. 新增账号切换界面动态头像支持
5. 新增从云端获取加速列表功能
6. 新增用户登录/注册功能,并且有了用户面板,将支持用户云同步数据
7. 新增脚本商店,用户可以从脚本商店下载更多脚本
8. 优化库存游戏列表加载速度
9. 优化GM0.2脚本
10. 修复1.1.4版本已出现的各种错误
11. 新增 CSGO 市场查看磨损与印花脚本适配
12. 新增 窗口位置保存功能
13. 修复 加速证书安装失败的问题
14. 修复 账号切换离线登录失效的问题
15. 修复 Windows 代理加速导致断网的问题
16. 修复 Discord 客户端代理失效的问题
17. 修复 多个 UI 错误
18. 修复 脚本以及备注无法保存的问题
19. 修复 多个可能导致闪退的问题
20. 修复 更新进度条显示不正确的问题
21. 改进 当 hosts 文件不存在时自动创建空文件而不是返回错误
```
## 工具介绍
`Steam++`是一个包含多种Steam工具功能的工具箱,开源发布于[Github](https://github.com/rmbadmin/SteamTools),如果您对发布的二进制文件不放心,可以自行下载源码编译运行。
此工具的大部分功能都是需要您下载安装Steam才能使用。
工具预计将整合进大部分常用的Steam相关工具,并且尽力做到比原工具更好用,在各种整合添加功能的同时,也会注意体积尽量的控制到最小。
「Steam++」是一个包含多种Steam工具功能的工具箱,所有功能完全免费,开源发布于Github,如果您对发布的二进制文件不放心,可以自行下载源码编译运行。
此工具的大部分功能都是需要您下载安装Steam才能使用。
工具预计将整合进大部分常用的Steam相关工具,并且尽力做到比原工具更好用。
软件截图
[hide]
@@ -42,59 +58,44 @@ Steam++只在keylol论坛与github发布,为了账号安全,请不要到其
## 核心功能
### 1. 反代Steam的社区网页使其能正常访问
### 1. 通过本地反代理Steam的社区等网页使其能正常访问
功能类似羽翼城大佬的[steamcommunity_302](https://www.dogfight360.com/blog/686/),使用[Titanium-Web-Proxy](https://github.com/justcoding121/Titanium-Web-Proxy)开源项目进行本地反代,相比302工具具有更快的启动速度,以及支持简单的脚本注入。该功能也可以配合羽翼城大佬的[UsbEAm Hosts Editor](https://www.dogfight360.com/blog/475/)里的网页相关-steamcommunity_302 社区/api/商店加载速度选项的hosts提升加载速度。
功能使用Titanium-Web-Proxy开源项目进行本地反代,相比SteamCommunity302工具具有更快的启动速度。让用户能够连接上诸如Steam社区(个人资料页)、Discord语音聊天、Twitch直播观看、Origin下载加速、谷歌验证码、Pixiv图片等。
[attachimg]1228388[/attachimg]
### 2. 快速切换当前PC已经记住登陆的Steam账号
该功能是读取Steam路径下存储的本地用户登录记录直接展示操作,可以多账号切换无需重新输入密码和令牌。
该功能是读取Steam路径下存储的本地用户登录记录直接展示操作,可以多账号切换无需重新输入密码和令牌。如果您的ip地址更换,会导致登陆状态失效。在Steam++2.0新版本支持了动态头像。
[attachimg]1228389[/attachimg]
### 3. Steam游戏的成就统计管理功能
功能参考[SteamAchievementManager](https://github.com/gibbed/SteamAchievementManager)进行二次开发,修复了成就语言有中文却依然是英文成就信息的BUG,修改了游戏列表的加载和操作易用性。
能够读取任何游戏的成就信息(包括隐藏成就),并且能进行成就修改,包括成就解锁以及成就反解锁,还能够修改成就统计信息
参考SAM(SteamAchievementManager)进行二次开发,修复了成就语言有中文却依然是英文成就信息的BUG,修改了游戏列表的加载和操作易用性。
注意:滥用成就管理功能可能会导致开发者封禁!
[attachimg]1228390[/attachimg]
### 4. Steam本地两步身份验证器
功能参考[WinAuth](https://github.com/winauth/winauth)开发,可以使您不用启动移动版Steam App也能查看您的令牌,功能类似的软件有[WinAuth](https://github.com/winauth/winauth)、[SteamDesktopAuthenticator](https://github.com/Jessecar96/SteamDesktopAuthenticator)。
该功能能够将Steam手机令牌储存到您的电脑中,并能够进行与手机端一样的操作。
不仅能查看手机令牌,还能进行交易报价确认,并且能一键全部确认
功能参考WinAuth开发,功能类似的软件有WinAuth、SteamDesktopAuthenticator。
[attachimg]1228391[/attachimg]
本地令牌交易市场报价确认
[attachimg]1262615[/attachimg]
### 5. 一些游戏工具
### 5. Steam内置浏览器脚本注入
目前已有强制游戏无边框窗口化,CSGO修复VAC屏蔽。
这一块是随缘做一些我经常用或者闲着没事捣鼓的功能。
将任何游戏强制无边框窗口化
[attachimg]1228392[/attachimg]
使任何窗口化游戏变成动态桌面壁纸(终于可以用《山》当壁纸了)
[attachimg]1228393[/attachimg]
通过反代加速功能将js脚本内置插入了Steam客户端内的浏览器,达到了与油猴类似的效果。目前2.0.0.6版本新增了脚本工坊,可以从我们的服务器上下载到已经兼容的脚本。我们也会不断添加新的脚本,同时也会对旧的脚本进行维护。
------
## 预计后续添加的功能
### Steam自动挂卡
尝试用社区反代功能结合成就解锁功能来重新实现,目的是实现在软件内不用登录Steam即可直接获取徽章卡片信息并开始挂卡。
### Steam皮肤设计器
挖坑画大饼,可视化编辑Steam皮肤,而且如果软件能上架Steam的话打算支持创意工坊分享设计的Steam皮肤,短期内肯定做不完。
### 插件形式加载运行ASF
以插件形式支持ASF在工具内运行并增强ASF在Windows Desktop环境下的使用。
### Steam自定义封面管理
增强Steam自定义封面的管理以及从[SteamGridDB](https://www.steamgriddb.com/)快速匹配下载应用封面。
### 6. 更新计划(画饼时间到)
我们预计会在6月份将推出本地挂卡、挂时长功能。并且同步推出iOS、安卓端App,用户可以利用手机查看多个账号的令牌,一键确认上架,并且支持手机挂卡。
#### 并且,以上功能全部免费!
------
@@ -104,16 +105,11 @@ Steam++只在keylol论坛与github发布,为了账号安全,请不要到其
> 程序使用C# WPF在 .NET Framework4.7.2环境下开发,如果无法运行请下载安装[.NET Framework 4.7.2](https://dotnet.microsoft.com/download/dotnet-framework/net472)。
## 下载
> [官网](https://steampp.net/)
> [Github](https://github.com/rmbadmin/SteamTools/releases)
> 分流下载:
> [hide]
> [蓝奏云](https://wws.lanzous.com/iFkh4lyooeh)
> [百度云](链接: https://pan.baidu.com/s/1mD-C_Ndc332oq_XnFVBLrQ)
> 提取码:2uxe
> [蓝奏云](https://cliencer.lanzous.com/b0165duja)
> 提取码:1234
> [/hide]
> EXE 大小:4.83MB
> EXE MD5:4149DC37BF24DD10181E32450290FEF6
> ZIP MD5:202F62682379566DBCD48C65917D4FFF
> [查毒链接](https://www.virustotal.com/gui/file/8d6da4a3fe7b1738aa5725e9797a86f8b5c668920d1449594279ea7bb262e4ef/detection)
虽然没有什么杀毒软件报毒,但是使用过程中可能遇到windows defender误报,您可以选择添加信任。
+28
View File
@@ -0,0 +1,28 @@
1. 修复 多个 GM.js 同时存在
2. 修复 GM.js 打包错误
3. 修复 手动添加 GM.js 重名替换导致出错
4. 修复 成就解锁窗口不显示
5. 新增 背景透明度 UI 设置
6. 调整 脚本列表 UI
7. 修复 代理过程中的闪退错误
8. 修复 库存游戏闪退错误
9. 修复 Discord 更新代理失效
10. 修复 hosts 闪退错误
11. 新增 Steam 快速登录
| File | Checksum (SHA256) |
| ---- | ---- |
| Steam++_win_x86_v2.1.0.7z | SHA256 |
| Steam++_win_x86_v2.1.0.exe | SHA256 |
| Steam++_linux_x64_v2.1.0.7z | SHA256 |
| Steam++_linux_x64_v2.1.0.deb | SHA256 |
| Steam++_macos_x64_v2.1.0.dmg | SHA256 |
| Steam++_macos_arm64_v2.1.0.dmg | SHA256 |
| Steam++_android_arm_v2.1.0.apk | SHA256 |
| Steam++_android_arm64_v2.1.0.apk | SHA256 |
| Steam++_win_arm64_v2.1.0.7z | SHA256 |
| Steam++_win_arm64_v2.1.0.exe | SHA256 |
***
由于程序体积较大,推荐从 [官网 https://steampp.net](https://steampp.net) 中下载
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 780 KiB

@@ -1,4 +1,4 @@
using MessagePack;
using MessagePack;
using System.Application.Entities;
using System.Linq;
using System.Properties;
@@ -14,7 +14,7 @@ namespace System.Application.Services.Implementation
if (areas == null)
{
var lz4Options = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray);
areas = MessagePackSerializer.Deserialize<TArea[]>(SR.AMap_adcode_citycode_20210406_xlsx_mpo, lz4Options);
areas = MessagePackSerializer.Deserialize<TArea[]>(SR.AMap_adcode_citycode_20210406_xlsx, lz4Options);
}
return areas;
}
+1 -1
View File
@@ -17,7 +17,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj"/>
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj" />
</ItemGroup>
<ItemGroup>
+2 -2
View File
@@ -63,9 +63,9 @@ namespace System.Properties {
/// <summary>
/// 查找 System.Byte[] 类型的本地化资源。
/// </summary>
internal static byte[] AMap_adcode_citycode_20210406_xlsx_mpo {
internal static byte[] AMap_adcode_citycode_20210406_xlsx {
get {
object obj = ResourceManager.GetObject("AMap_adcode_citycode_20210406.xlsx.mpo", resourceCulture);
object obj = ResourceManager.GetObject("AMap_adcode_citycode_20210406_xlsx", resourceCulture);
return ((byte[])(obj));
}
}
+3 -3
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="AMap_adcode_citycode_20210406.xlsx.mpo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\..\..\Resources\Areas\AMap_adcode_citycode_20210406.xlsx.mpo;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AMap_adcode_citycode_20210406_xlsx" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AMap_adcode_citycode_20210406.xlsx.mpo;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>
@@ -1,4 +1,4 @@
using System.Linq;
using System.Linq;
using System.Security.Cryptography;
using System.Threading.Tasks;
using static System.Application.Services.ILocalDataProtectionProvider;
@@ -45,6 +45,8 @@ namespace System.Application.Services.Implementation
_aes = new Lazy<Aes>(() =>
{
(byte[] key, byte[] iv) = MachineSecretKey;
// https://github.com/dotnet/runtime/issues/42214#issuecomment-698495584
// AES CFB in Windows 7 catch Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Unknown error (0xc10000bb)
var r = AESUtils.Create(key, iv, CipherMode.CFB, PaddingMode.PKCS7);
return r;
});
@@ -94,21 +94,22 @@ namespace System.Application
/// <summary>
/// 中国移动
/// </summary>
public static byte[] ChinaMobile = { 139, 138, 137, 136, 135, 134, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188, 198, 148, 172 };
public static byte[] ChinaMobile = { 139, 138, 137, 136, 135, 134, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188, 198 };
/// <summary>
/// 虚拟运营商
/// </summary>
public static byte[] MobileVirtualNetwork = { 170, 171 };
public static byte[] MobileVirtualNetwork = { 170, 171, 172 };
public static byte[] Other = { 190, 197, 196, 192 };
public static byte[] Other = { 190, 191, 192, 193, 195, 196, 197, 198, 199 };
static Lazy<byte[]> mSummary = new(() => new[]
static readonly Lazy<byte[]> mSummary = new(() => new[]
{
ChinaTelecom,
ChinaUnicom,
ChinaMobile,
MobileVirtualNetwork
MobileVirtualNetwork,
Other,
}.SelectMany(b => b).ToArray());
/// <summary>
@@ -127,7 +128,7 @@ namespace System.Application
/// <summary>
/// 中国大陆地区手机号码号段验证使用 黑名单(<see langword="true"/>) 或 白名单(<see langword="false"/>)
/// </summary>
public static bool ChineseMainlandPhoneNumberSegmentVerifyUseBlacklistOrWhitelist { get; set; }
public static bool ChineseMainlandPhoneNumberSegmentVerifyUseBlacklistOrWhitelist { get; set; } = true;
/// <summary>
/// 中国大陆地区手机号码号段验证(通常仅服务端验证)
+3 -1
View File
@@ -1,4 +1,4 @@
namespace System
namespace System
{
/// <summary>
/// 文件扩展名(FileExtensions)
@@ -52,5 +52,7 @@
public const string BIN = ".bin";
public const string APNG = ".apng";
public const string EXE = ".exe";
}
}
@@ -1,4 +1,4 @@
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging;
namespace System.Net.Http
{
@@ -9,7 +9,7 @@ namespace System.Net.Http
{
protected readonly ILogger logger;
protected readonly IHttpPlatformHelper http_helper;
readonly IHttpClientFactory _clientFactory;
protected readonly IHttpClientFactory _clientFactory;
public GeneralHttpClientFactory(
ILogger logger,
@@ -29,9 +29,9 @@ namespace System.Net.Http
protected virtual string? DefaultClientName { get; }
/// <summary>
/// 默认超时时间,19秒
/// 默认超时时间,16秒
/// </summary>
public static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(19);
public static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(16);
static readonly Lazy<int> mDefaultTimeoutTotalMilliseconds = new(() => DefaultTimeout.TotalMilliseconds.ToInt32());
@@ -39,7 +39,7 @@ namespace System.Net.Http
public static int DefaultTimeoutTotalMilliseconds => mDefaultTimeoutTotalMilliseconds.Value;
/// <inheritdoc cref="DefaultTimeout"/>
protected virtual TimeSpan Timeout { get; } = DefaultTimeout;
protected /*virtual*/ TimeSpan Timeout { get; } = DefaultTimeout;
protected virtual HttpClient CreateClient(string? clientName = null)
{
@@ -1,15 +1,15 @@
using System.Globalization;
using System.Globalization;
using System.IO;
using System.IO.FileFormats;
namespace System.Net.Http
{
/// <inheritdoc cref="IHttpPlatformHelper"/>
public class HttpPlatformHelper : IHttpPlatformHelper
public abstract class HttpPlatformHelper : IHttpPlatformHelper
{
const string DefaultUserAgent = "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263";
protected const string DefaultUserAgent = "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263";
public virtual string UserAgent => DefaultUserAgent;
public abstract string UserAgent { get; }
public virtual string AcceptImages => "image/png, image/*; q=0.8";
@@ -2,7 +2,7 @@ namespace System.Properties
{
public static class ThisAssembly
{
public const string Version = "2.0.0.6";
public const string Version = "2.1.0";
public const string InfoVersion = Version + "-beta";
+5 -1
View File
@@ -1,4 +1,4 @@
#if !NOT_MP
#if !NOT_MP
using MessagePack;
#endif
#if !NOT_NJSON
@@ -147,6 +147,10 @@ namespace System
public static byte[] SMP<T>(T value, CancellationToken cancellationToken = default)
=> MessagePackSerializer.Serialize(value, options: lz4Options, cancellationToken: cancellationToken);
/// <inheritdoc cref="SMP{T}(T, CancellationToken)"/>
public static byte[] SMP(Type type, object value, CancellationToken cancellationToken = default)
=> MessagePackSerializer.Serialize(type, value, options: lz4Options, cancellationToken: cancellationToken);
/// <summary>
/// (Serialize)MessagePack 序列化 + Base64Url Encode
/// </summary>
@@ -1,4 +1,4 @@
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.DependencyInjection.Extensions;
using System.Application.Services;
using System.Application.Services.Implementation;
using System.Net.Http;
@@ -19,17 +19,6 @@ namespace Microsoft.Extensions.DependencyInjection
return services;
}
/// <summary>
/// 尝试添加 <see cref="IHttpPlatformHelper"/>
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection TryAddHttpPlatformHelper(this IServiceCollection services)
{
services.TryAddSingleton<IHttpPlatformHelper, HttpPlatformHelper>();
return services;
}
//public static IServiceCollection AddHttpService(this IServiceCollection services, string name)
//{
// // 此函数为添加HTTP服务模板
@@ -1,4 +1,4 @@
using Polly;
using Polly;
using SQLite;
using System.Application.Entities;
using System.Collections.Generic;
+16 -13
View File
@@ -138,24 +138,17 @@ namespace System.Application.UI
#endif
var windowService = IWindowService.Instance;
windowService.Init();
DI.Get<IDesktopPlatformService>().SetSystemSessionEnding(() =>
{
compositeDisposable.Dispose();
});
#if StartupTrace
StartupTrace.Restart("WindowService.Init");
#endif
SettingsHost.Load();
#if StartupTrace
StartupTrace.Restart("SettingsHost.Init");
#endif
#if !UI_DEMO
if (GeneralSettings.IsStartupAppMinimized.Value)
{
Program.IsMinimize = true;
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = null;
}
#endif
Theme = (AppTheme)UISettings.Theme.Value;
#if StartupTrace
StartupTrace.Restart("Theme");
@@ -176,11 +169,18 @@ namespace System.Application.UI
default:
#region 主窗口启动时加载的资源
#if !UI_DEMO
compositeDisposable.Add(SettingsHost.Save);
compositeDisposable.Add(ProxyService.Current.Dispose);
compositeDisposable.Add(AuthService.Current.SaveEditNameAuthenticators);
compositeDisposable.Add(SteamConnectService.Current.Dispose);
if (GeneralSettings.IsStartupAppMinimized.Value)
{
Program.IsMinimize = true;
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = null;
}
#endif
#endregion
MainWindow = new MainWindow
{
@@ -313,7 +313,10 @@ namespace System.Application.UI
if (Program.IsMainProcess)
{
Startup.ActiveUserPost(ActiveUserType.OnStartup);
IAppUpdateService.Instance.CheckUpdate(showIsExistUpdateFalse: false);
if (GeneralSettings.IsAutoCheckUpdate.Value)
{
IAppUpdateService.Instance.CheckUpdate(showIsExistUpdateFalse: false);
}
#if StartupTrace
StartupTrace.Restart("Desktop_Startup.MainProcess");
#endif
@@ -0,0 +1,48 @@
using NLog;
using NLog.Common;
using NLog.Config;
using NLog.Targets;
using System.Application.UI;
using System.IO;
using NLogLevel = NLog.LogLevel;
#if CONSOLEAPP
namespace System.Application
#else
namespace System.Application.UI
#endif
{
static partial class Program
{
public static Logger? logger;
public static string InitLogDir(string? alias = null)
{
var logDirPath = Path.Combine(AppContext.BaseDirectory, "Logs");
IOPath.DirCreateByNotExists(logDirPath);
#if StartupTrace
StartupTrace.Restart("InitLogDir.IO");
#endif
var logDirPath_ = logDirPath + Path.DirectorySeparatorChar;
InternalLogger.LogFile = logDirPath_ + "internal-nlog" + alias + ".txt";
InternalLogger.LogLevel = NLogLevel.Error;
var objConfig = new LoggingConfiguration();
var logfile = new FileTarget("logfile")
{
FileName = logDirPath_ + "nlog-all-${shortdate}" + alias + ".log",
Layout = "${longdate}|${level}|${logger}|${message} |${all-event-properties} ${exception:format=tostring}",
};
objConfig.AddTarget(logfile);
objConfig.AddRule(NLogLevel.Error, NLogLevel.Fatal, logfile, "Microsoft.*");
objConfig.AddRule(NLogLevel.Error, NLogLevel.Fatal, logfile, "System.Net.Http.*");
objConfig.AddRule(AppHelper.DefaultNLoggerMinLevel, NLogLevel.Fatal, logfile, "*");
#if StartupTrace
StartupTrace.Restart("InitLogDir.CreateLoggingConfiguration");
#endif
LogManager.Configuration = objConfig;
return logDirPath;
}
}
}
+2 -30
View File
@@ -5,6 +5,7 @@ using NLog.Targets;
using ReactiveUI;
using System.Application.Services;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reactive;
@@ -15,7 +16,6 @@ namespace System.Application.UI
{
static partial class Program
{
static Logger? logger;
static readonly HashSet<Exception> exceptions = new();
static readonly object lock_global_ex_log = new();
@@ -120,6 +120,7 @@ namespace System.Application.UI
try
{
DI.Get<IHttpProxyService>().StopProxy();
IHostsFileService.OnExitRestoreHosts();
}
catch (Exception ex_restore_hosts)
@@ -165,35 +166,6 @@ namespace System.Application.UI
}
}
static string InitLogDir()
{
var logDirPath = Path.Combine(AppContext.BaseDirectory, "Logs");
IOPath.DirCreateByNotExists(logDirPath);
#if StartupTrace
StartupTrace.Restart("InitLogDir.IO");
#endif
var logDirPath_ = logDirPath + Path.DirectorySeparatorChar;
InternalLogger.LogFile = logDirPath_ + "internal-nlog.txt";
InternalLogger.LogLevel = NLogLevel.Error;
var objConfig = new LoggingConfiguration();
var logfile = new FileTarget("logfile")
{
FileName = logDirPath_ + "nlog-all-${shortdate}.log",
Layout = "${longdate}|${level}|${logger}|${message} |${all-event-properties} ${exception:format=tostring}",
};
objConfig.AddTarget(logfile);
objConfig.AddRule(NLogLevel.Error, NLogLevel.Fatal, logfile, "Microsoft.*");
objConfig.AddRule(NLogLevel.Error, NLogLevel.Fatal, logfile, "System.Net.Http.*");
objConfig.AddRule(AppHelper.DefaultNLoggerMinLevel, NLogLevel.Fatal, logfile, "*");
#if StartupTrace
StartupTrace.Restart("InitLogDir.CreateLoggingConfiguration");
#endif
LogManager.Configuration = objConfig;
return logDirPath;
}
/// <summary>
/// 是否最小化启动
/// </summary>
@@ -3,7 +3,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<!--<DefineConstants>StartupTrace;$(DefineConstants)</DefineConstants>-->
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>false</SignAssembly>
<!--(SignAssembly)对此程序集进行签名会导致编译失败(CompileAvaloniaXamlTask)-->
<RootNamespace>System.Application.UI</RootNamespace>
@@ -11,90 +11,90 @@
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup Condition=" $(DefineConstants.Contains(`StartupTrace`)) ">
<OutputType>Exe</OutputType>
</PropertyGroup>
<PropertyGroup Condition=" $(DefineConstants.Contains(`StartupTrace`)) ">
<OutputType>Exe</OutputType>
</PropertyGroup>
<!--<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<!--<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<AllowedReferenceRelatedFileExtensions>
-->
<!-- Prevent default XML and PDB files copied to output in RELEASE.
<!-- Prevent default XML and PDB files copied to output in RELEASE.
Only *.allowedextension files will be included, which doesn't exist in my case.
-->
<!--
<!--
.allowedextension
</AllowedReferenceRelatedFileExtensions>
</PropertyGroup>-->
<PropertyGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<DefineConstants>WINDOWS;$(DefineConstants)</DefineConstants>
<ApplicationIcon>..\ST.Client.Desktop.Avalonia\Application\UI\Assets\Icon.ico</ApplicationIcon>
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
<!--<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
<PropertyGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<DefineConstants>WINDOWS;$(DefineConstants)</DefineConstants>
<ApplicationIcon>..\ST.Client.Desktop.Avalonia\Application\UI\Assets\Icon.ico</ApplicationIcon>
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
<!--<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>-->
<Platforms>AnyCPU;x86</Platforms>
<PlatformTarget>x86</PlatformTarget>
<!-- 注意:RuntimeIdentifier win-x86 会导致亚克力效果会丢失 -->
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
<!--<UseWindowsForms>false</UseWindowsForms>-->
<!--<UseWPF>false</UseWPF>-->
</PropertyGroup>
<Platforms>AnyCPU;x86</Platforms>
<PlatformTarget>x86</PlatformTarget>
<!-- 注意:RuntimeIdentifier win-x86 会导致亚克力效果会丢失 -->
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
<!--<UseWindowsForms>false</UseWindowsForms>-->
<!--<UseWPF>false</UseWPF>-->
</PropertyGroup>
<PropertyGroup Condition=" $(RuntimeIdentifier.Contains(`osx`)) Or ('$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<DefineConstants>MAC;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" $(RuntimeIdentifier.Contains(`osx`)) Or ('$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<DefineConstants>MAC;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" $(DefineConstants.Contains(`PUBLISH`)) ">
<SelfContained>true</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
<!--目前裁剪存在问题,禁用-->
<PublishTrimmed>false</PublishTrimmed>
<TrimMode>link</TrimMode>
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
<!--剪裁框架库功能 https://docs.microsoft.com/zh-cn/dotnet/core/deploying/trimming-options#trimming-framework-library-features -->
<DebuggerSupport>false</DebuggerSupport>
<EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
<EnableUnsafeUTF7Encoding>false</EnableUnsafeUTF7Encoding>
<SuppressTrimAnalysisWarnings>false</SuppressTrimAnalysisWarnings>
<EventSourceSupport>false</EventSourceSupport>
<HttpActivityPropagationSupport>false</HttpActivityPropagationSupport>
<UseSystemResourceKeys>true</UseSystemResourceKeys>
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<PropertyGroup Condition=" $(DefineConstants.Contains(`PUBLISH`)) ">
<SelfContained>true</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
<!--目前裁剪存在问题,禁用-->
<PublishTrimmed>false</PublishTrimmed>
<TrimMode>link</TrimMode>
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
<!--剪裁框架库功能 https://docs.microsoft.com/zh-cn/dotnet/core/deploying/trimming-options#trimming-framework-library-features -->
<DebuggerSupport>false</DebuggerSupport>
<EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
<EnableUnsafeUTF7Encoding>false</EnableUnsafeUTF7Encoding>
<SuppressTrimAnalysisWarnings>false</SuppressTrimAnalysisWarnings>
<EventSourceSupport>false</EventSourceSupport>
<HttpActivityPropagationSupport>false</HttpActivityPropagationSupport>
<UseSystemResourceKeys>true</UseSystemResourceKeys>
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<!--<ItemGroup>
<TrimmerRootAssembly Include="CefNet" />
<TrimmerRootAssembly Include="CefNet.Avalonia" />
<TrimmerRootAssembly Include="CefNet"/>
<TrimmerRootAssembly Include="CefNet.Avalonia"/>
</ItemGroup>-->
<ItemGroup>
<Compile Include="..\Startup2.cs" />
<Compile Include="..\Startup2.cs"/>
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ST.Client.Desktop.Avalonia\ST.Client.Desktop.Avalonia.csproj" />
<ProjectReference Include="..\ST.Client.Desktop\ST.Client.Desktop.csproj" />
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj" />
<ProjectReference Include="..\ST.Client.Desktop.Avalonia\ST.Client.Desktop.Avalonia.csproj"/>
<ProjectReference Include="..\ST.Client.Desktop\ST.Client.Desktop.csproj"/>
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj"/>
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<ProjectReference Include="..\ST.Client.Desktop.Windows\ST.Client.Desktop.Windows.csproj" />
<ProjectReference Include="..\ST.Client.Desktop.Windows\ST.Client.Desktop.Windows.csproj"/>
</ItemGroup>
<!--<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) And $(DefineConstants.Contains(`PUBLISH`)) ">
<PackageReference Include="System.Reactive" Version="5.0.0.1-exclude-winforms" />
<PackageReference Include="System.Reactive" Version="5.0.0.1-exclude-winforms"/>
</ItemGroup>-->
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`osx`)) Or ('$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<ProjectReference Include="..\ST.Client.Desktop.Mac\ST.Client.Desktop.Mac.csproj" />
<ProjectReference Include="..\ST.Client.Desktop.Mac\ST.Client.Desktop.Mac.csproj"/>
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`linux`)) Or ('$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' == 'true' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<ProjectReference Include="..\ST.Client.Desktop.Linux\ST.Client.Desktop.Linux.csproj" />
<ProjectReference Include="..\ST.Client.Desktop.Linux\ST.Client.Desktop.Linux.csproj"/>
</ItemGroup>
<!--<ItemGroup Condition=" '$(OS)' == 'Windows_NT' And $(RuntimeIdentifier.Contains(`osx`)) And $(DefineConstants.Contains(`PUBLISH`)) ">
@@ -118,42 +118,42 @@
<AvaloniaResource Include="**\*.xaml">
<SubType>Designer</SubType>
</AvaloniaResource>
<AvaloniaResource Include="Assets\**" />
<AvaloniaResource Include="Assets\**"/>
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<!--Win8.1/10的开始菜单磁贴配置-->
<None Include="..\..\Resources\AppIcon\visualelementsmanifest.xml">
<Link>steam++.visualelementsmanifest.xml</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="..\..\Resources\AppIcon\VisualElements_150.png">
<Link>Assets\VisualElements_150.png</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="..\..\Resources\AppIcon\VisualElements_70.png">
<Link>Assets\VisualElements_70.png</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<!--Win8.1/10的开始菜单磁贴配置-->
<None Include="..\..\Resources\AppIcon\visualelementsmanifest.xml">
<Link>steam++.visualelementsmanifest.xml</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="..\..\Resources\AppIcon\VisualElements_150.png">
<Link>Assets\VisualElements_150.png</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="..\..\Resources\AppIcon\VisualElements_70.png">
<Link>Assets\VisualElements_70.png</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup Condition="Exists('$(MSBuildProjectDirectory)\..\..\aes-key.pfx')">
<EmbeddedResource Include="..\..\aes-key.pfx" Link="Resources\3A613E8D" />
<EmbeddedResource Include="..\..\aes-key.pfx" Link="Resources\3A613E8D"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug' And Exists('$(MSBuildProjectDirectory)\..\..\app-id-debug.pfx')">
<EmbeddedResource Include="..\..\app-id-debug.pfx" Link="Resources\0093BF84" />
<EmbeddedResource Include="..\..\app-id-debug.pfx" Link="Resources\0093BF84"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug' And Exists('$(MSBuildProjectDirectory)\..\..\rsa-public-key-debug.pfx')">
<EmbeddedResource Include="..\..\rsa-public-key-debug.pfx" Link="Resources\6D72ED26" />
<EmbeddedResource Include="..\..\rsa-public-key-debug.pfx" Link="Resources\6D72ED26"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Release' And Exists('$(MSBuildProjectDirectory)\..\..\app-id-release.pfx')">
<EmbeddedResource Include="..\..\app-id-release.pfx" Link="Resources\F1D827AB" />
<EmbeddedResource Include="..\..\app-id-release.pfx" Link="Resources\F1D827AB"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Release' And Exists('$(MSBuildProjectDirectory)\..\..\rsa-public-key-release.pfx')">
<EmbeddedResource Include="..\..\rsa-public-key-release.pfx" Link="Resources\E88CA4F9" />
<EmbeddedResource Include="..\..\rsa-public-key-release.pfx" Link="Resources\E88CA4F9"/>
</ItemGroup>
</Project>
@@ -3,8 +3,8 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignWidth="1200" Width="1200" MinWidth="995"
d:DesignHeight="600" Height="800" MinHeight="600"
d:DesignWidth="1200" Width="995" MinWidth="995"
d:DesignHeight="600" Height="600" MinHeight="600"
xmlns:local="clr-namespace:System.Application.UI.Views;assembly=System.Application.SteamTools.Client.Desktop.Avalonia"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
x:Class="System.Application.UI.Views.MainWindow"
@@ -7,7 +7,7 @@ namespace System.Application.UI.Views
{
public class MainWindow : FluentWindow
{
public MainWindow()
public MainWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<SignAssembly>false</SignAssembly>
<!--(SignAssembly)对此程序集进行签名会导致编译失败(CompileAvaloniaXamlTask)-->
<RootNamespace>System.Application.UI</RootNamespace>
@@ -1,5 +1,7 @@
using Avalonia.Threading;
using Avalonia.Threading;
using CefNet;
using CefNet.Input;
using System;
using System.Application.Models;
using System.Globalization;
using System.IO;
@@ -51,6 +53,8 @@ namespace System.Application.UI
// commandLine.AppendSwitch("no-zygote");
// commandLine.AppendSwitch("no-sandbox");
//}
//commandLine.AppendSwitch("disable-web-security"); // LoginUsingSteamClient
}
protected override void OnContextCreated(CefBrowser browser, CefFrame frame, CefV8Context context)
@@ -166,6 +170,8 @@ navigator.__proto__ = newProto;
}
};
KeycodeConverter.Default = new FixChineseInptKeycodeConverter();
app = new CefNetApp
{
ScheduleMessagePumpWorkCallback = async delayMs =>
@@ -205,9 +211,26 @@ navigator.__proto__ = newProto;
var theme = AppHelper.Current.Theme;
return theme switch
{
AppTheme.FollowingSystem => "auto",
AppTheme.FollowingSystem => GetThemeStringByFollowingSystem(),
_ => theme.ToString(),
};
static string GetThemeStringByFollowingSystem()
{
if (DI.Platform == Platform.Windows)
{
var major = Environment.OSVersion.Version.Major;
if (major < 10 || major == 10 && Environment.OSVersion.Version.Build < 18282)
{
goto dark;
}
}
else if (DI.Platform == Platform.Linux)
{
goto dark;
}
return "auto";
dark: return AppTheme.Dark.ToString();
}
}
}
@@ -228,4 +251,34 @@ navigator.__proto__ = newProto;
/// </summary>
Complete,
}
}
namespace CefNet.Input
{
/// <summary>
/// https://github.com/CefNet/CefNet/issues/21
/// </summary>
public class FixChineseInptKeycodeConverter : KeycodeConverter
{
public override VirtualKeys CharacterToVirtualKey(char character)
{
// https://github.com/CefNet/CefNet/blob/master/CefNet/Input/KeycodeConverter.cs#L41
// https://github.com/CefNet/CefNet/blob/90.5.21109.1453/CefNet/Input/KeycodeConverter.cs#L41
try
{
return base.CharacterToVirtualKey(character);
}
catch (Exception e)
{
if (PlatformInfo.IsWindows)
{
if (e.Message == "Incompatible input locale.")
{
return VirtualKeys.None;
}
}
throw;
}
}
}
}
@@ -1,74 +0,0 @@
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Design.PreviewWith>
<Border Padding="20">
<TabControl Classes="sidebar">
<TabItem Header="Item1"/>
<TabItem Header="Item2"/>
</TabControl>
</Border>
</Design.PreviewWith>
<Style Selector="TabControl.sidebar">
<Setter Property="TabStripPlacement" Value="Left"/>
<Setter Property="Padding" Value="0 0 0 0"/>
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="Template">
<ControlTemplate>
<Border
Margin="{TemplateBinding Margin}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<DockPanel>
<ScrollViewer Width="240" Margin="0 50 0 0"
Name="PART_ScrollViewer"
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}"
Background="{TemplateBinding Background}"
DockPanel.Dock="Left">
<ItemsPresenter
Name="PART_ItemsPresenter"
Items="{TemplateBinding Items}"
ItemsPanel="{TemplateBinding ItemsPanel}"
ItemTemplate="{TemplateBinding ItemTemplate}">
</ItemsPresenter>
</ScrollViewer>
<ContentControl Content="{TemplateBinding Tag}" HorizontalContentAlignment="Right" DockPanel.Dock="Bottom"/>
<!--<ScrollViewer Background="{x:Null}"
HorizontalScrollBarVisibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.(ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.(ScrollViewer.VerticalScrollBarVisibility)}">-->
<ContentPresenter
Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding SelectedContent}"
ContentTemplate="{TemplateBinding SelectedContentTemplate}">
</ContentPresenter>
<!--</ScrollViewer>-->
</DockPanel>
</Border>
</ControlTemplate>
</Setter>
</Style>
<Style Selector="TabControl.sidebar > TabItem">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="16"/>
<Setter Property="Width" Value="240" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="(ScrollViewer.HorizontalScrollBarVisibility)" Value="Auto"/>
<Setter Property="(ScrollViewer.VerticalScrollBarVisibility)" Value="Auto"/>
</Style>
<Style Selector="TabControl.sidebar > TabItem:selected /template/ Border#PART_SelectedPipe">
<Setter Property="IsVisible" Value="False" />
</Style>
<Style Selector="TabControl.sidebar > TabItem:selected">
<Setter Property="Background" Value="#1fffffff"/>
</Style>
<Style Selector="TabControl.sidebar > TabItem:pointerover /template/ Border#PART_LayoutRoot">
<Setter Property="Background" Value="#3fffffff"/>
</Style>
</Styles>
@@ -1,87 +1,89 @@
<Styles xmlns="https://github.com/avaloniaui"
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Design.PreviewWith>
<Border Padding="20" Background="White">
<Border Padding="20" Classes="paper">
<TextBox Text="Code Font Family"/>
</Border>
</Border>
</Design.PreviewWith>
<Style Selector="TabControl.flat">
<Setter Property="FontSize" Value="18"></Setter>
<Setter Property="Padding" Value="0"></Setter>
</Style>
<Style Selector="TabControl.flat /template/ DockPanel">
<Setter Property="Margin" Value="0 -10 0 0"></Setter>
</Style>
<Style Selector="TabControl.flat /template/ ItemsPresenter">
<Setter Property="Margin" Value="{StaticResource PageMargin}"></Setter>
</Style>
<Design.PreviewWith>
<Border Padding="20" Background="White">
<Border Padding="20" Classes="paper">
<TextBox Text="Code Font Family"/>
</Border>
</Border>
</Design.PreviewWith>
<Style Selector="TabControl.flat">
<Setter Property="Padding" Value="0"></Setter>
</Style>
<Style Selector="TabControl.flat TabItem">
<Setter Property="FontSize" Value="16"></Setter>
</Style>
<Style Selector="TabControl.flat /template/ DockPanel">
<Setter Property="Margin" Value="0 -10 0 0"></Setter>
</Style>
<Style Selector="TabControl.flat /template/ ItemsPresenter">
<Setter Property="Margin" Value="{StaticResource PageMargin}"></Setter>
</Style>
<Style Selector="TabControl.NavBar">
<Setter Property="TabStripPlacement" Value="Left"/>
<Setter Property="Padding" Value="0 0 0 0"/>
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="Template">
<ControlTemplate>
<Border
Margin="{TemplateBinding Margin}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<DockPanel>
<ScrollViewer Width="240" Margin="0 50 0 0"
Name="PART_ScrollViewer"
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}"
Background="{TemplateBinding Background}"
DockPanel.Dock="Left">
<ItemsPresenter
Name="PART_ItemsPresenter"
Items="{TemplateBinding Items}"
ItemsPanel="{TemplateBinding ItemsPanel}"
ItemTemplate="{TemplateBinding ItemTemplate}">
</ItemsPresenter>
</ScrollViewer>
<ContentControl Content="{TemplateBinding Tag}" HorizontalContentAlignment="Right" DockPanel.Dock="Bottom"/>
<!--<ScrollViewer Background="{x:Null}"
<Style Selector="TabControl.NavBar">
<Setter Property="TabStripPlacement" Value="Left"/>
<Setter Property="Padding" Value="0 0 0 0"/>
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="Template">
<ControlTemplate>
<Border
Margin="{TemplateBinding Margin}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<DockPanel>
<ScrollViewer Width="240" Margin="0 50 0 0"
Name="PART_ScrollViewer"
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}"
Background="{TemplateBinding Background}"
DockPanel.Dock="Left">
<ItemsPresenter
Name="PART_ItemsPresenter"
Items="{TemplateBinding Items}"
ItemsPanel="{TemplateBinding ItemsPanel}"
ItemTemplate="{TemplateBinding ItemTemplate}">
</ItemsPresenter>
</ScrollViewer>
<ContentControl Content="{TemplateBinding Tag}" HorizontalContentAlignment="Right" DockPanel.Dock="Bottom"/>
<!--<ScrollViewer Background="{x:Null}"
HorizontalScrollBarVisibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.(ScrollViewer.HorizontalScrollBarVisibility)}"
VerticalScrollBarVisibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem.(ScrollViewer.VerticalScrollBarVisibility)}">-->
<ContentPresenter
Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding SelectedContent}"
ContentTemplate="{TemplateBinding SelectedContentTemplate}">
</ContentPresenter>
<!--</ScrollViewer>-->
</DockPanel>
</Border>
</ControlTemplate>
</Setter>
</Style>
<ContentPresenter
Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding SelectedContent}"
ContentTemplate="{TemplateBinding SelectedContentTemplate}">
</ContentPresenter>
<!--</ScrollViewer>-->
</DockPanel>
</Border>
</ControlTemplate>
</Setter>
</Style>
<Style Selector="TabControl.NavBar > TabItem">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="16"/>
<Setter Property="Width" Value="240" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="(ScrollViewer.HorizontalScrollBarVisibility)" Value="Auto"/>
<Setter Property="(ScrollViewer.VerticalScrollBarVisibility)" Value="Auto"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem:selected /template/ Border#PART_SelectedPipe">
<Setter Property="IsVisible" Value="False" />
</Style>
<Style Selector="TabControl.NavBar > TabItem:selected">
<Setter Property="Background" Value="#1fffffff"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="16"/>
<Setter Property="Width" Value="240" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="(ScrollViewer.HorizontalScrollBarVisibility)" Value="Auto"/>
<Setter Property="(ScrollViewer.VerticalScrollBarVisibility)" Value="Auto"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem:pointerover /template/ Border#PART_LayoutRoot">
<Setter Property="Background" Value="#3fffffff"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem:selected /template/ Border#PART_SelectedPipe">
<Setter Property="IsVisible" Value="False" />
</Style>
<Style Selector="TabControl.NavBar > TabItem:selected">
<Setter Property="Background" Value="#1fffffff"/>
</Style>
<Style Selector="TabControl.NavBar > TabItem:pointerover /template/ Border#PART_LayoutRoot">
<Setter Property="Background" Value="#3fffffff"/>
</Style>
</Styles>
@@ -135,7 +135,7 @@ namespace System.Application.UI.Views.Controls
var constraints = this.Bounds.Deflate(Padding);
var constraintsWidth = constraints.Width;
//让文字不要在宽度合适的时候滚动
//让文字不要在宽度合适的时候滚动
_isConstrained = _textWidth > constraintsWidth + 1;
if (_isConstrained & !_waiting)
@@ -154,7 +154,7 @@ namespace System.Application.UI.Views.Controls
if (nC.Intersects(nR))
using (context.PushPostTransform(Matrix.CreateTranslation(offset, padding.Top)))
TextLayout.Draw(context);
TextLayout.Draw(context, new Point(Padding.Left, Padding.Top));
}
}
else
@@ -162,7 +162,7 @@ namespace System.Application.UI.Views.Controls
_animate = false;
using (context.PushPostTransform(Matrix.CreateTranslation(padding.Left, padding.Top)))
TextLayout.Draw(context);
TextLayout.Draw(context, new Point(Padding.Left, Padding.Top));
}
}
}
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
mc:Ignorable="d"
x:Name="u" IsHitTestVisible="False"
Background="Transparent"
@@ -9,7 +10,7 @@
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder DockPanel.Dock="Top" IsHitTestVisible="False" Height="{StaticResource TitleBarHeight}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.80" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="10 6 10 6">
<Image Source="/Application/UI/Assets/Icon.ico" Height="18" Width="18" Margin="0,0,10,0"/>
@@ -18,7 +19,7 @@
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder DockPanel.Dock="Bottom" IsHitTestVisible="False" Opacity="{StaticResource ContentOpacity}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.75" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
@@ -5,6 +5,10 @@ using CefNet.Internal;
using System.Application.Services.CloudService;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net.Http.Headers;
using System.Security.Cryptography;
using static System.Application.Services.CloudService.Constants;
// ReSharper disable once CheckNamespace
@@ -43,7 +47,40 @@ namespace System.Application.UI.Views.Controls
RaiseEvent(e);
}
/// <summary>
/// 在浏览器中打开新窗口,所有新页面打开的Url会在浏览器中打开
/// </summary>
public bool OpenInBrowser { get; set; } = true;
/// <summary>
/// 是否固定单页,为 <see langword="true"/> 时所有跳转都将在浏览器中打开
/// </summary>
public bool FixedSinglePage { get; set; } = false;
/// <summary>
/// 需要拦截响应流的Url
/// </summary>
public string[]? StreamResponseFilterUrls { get; set; }
/// <summary>
/// 拦截响应流的处理
/// </summary>
public Action<string, Stream>? OnStreamResponseFilterResourceLoadComplete { get; set; }
public bool IsSecurity { get; set; }
public Aes? Aes { get; internal set; }
protected override void Dispose(bool disposing)
{
if (disposing)
{
Aes?.Dispose();
StreamResponseFilterUrls = null;
OnStreamResponseFilterResourceLoadComplete = null;
}
base.Dispose(disposing);
}
}
public class FullscreenModeChangeEventArgs : RoutedEventArgs
@@ -155,6 +192,11 @@ namespace System.Application.UI.Views.Controls
protected override bool OnBeforePopup(CefBrowser browser, CefFrame frame, string targetUrl, string targetFrameName, CefWindowOpenDisposition targetDisposition, bool userGesture, CefPopupFeatures popupFeatures, CefWindowInfo windowInfo, ref CefClient client, CefBrowserSettings settings, ref CefDictionaryValue extraInfo, ref int noJavascriptAccess)
{
if (webView.FixedSinglePage)
{
BrowserOpen(targetUrl);
return true;
}
switch (targetDisposition)
{
case CefWindowOpenDisposition.NewForegroundTab:
@@ -168,7 +210,10 @@ namespace System.Application.UI.Views.Controls
else
{
// 禁止创建新窗口,仅在当前窗口跳转
browser.MainFrame.LoadUrl(targetUrl);
if (IsHttpUrl(targetUrl))
{
browser.MainFrame.LoadUrl(targetUrl);
}
}
return true;
}
@@ -181,6 +226,17 @@ namespace System.Application.UI.Views.Controls
if (request.Url.StartsWith(sc.ApiBaseUrl, StringComparison.OrdinalIgnoreCase))
{
request.SetHeaderByName(Headers.Request.AppVersion, sc.Settings.AppVersionStr, true);
if (webView.IsSecurity)
{
if (webView.Aes == null)
{
webView.Aes = AESUtils.Create();
}
var skey_bytes = webView.Aes.ToParamsByteArray();
var conn_helper = DI.Get<IApiConnectionPlatformHelper>();
var skey_str = conn_helper.RSA.EncryptToString(skey_bytes);
request.SetHeaderByName(Headers.Request.SecurityKey, skey_str, true);
}
}
var returnValue = base.OnBeforeResourceLoad(browser, frame, request, callback);
return returnValue;
@@ -217,5 +273,144 @@ namespace System.Application.UI.Views.Controls
// var returnValue = base.OnBeforeResourceLoad(browser, frame, request, callback);
// return returnValue;
//}
protected override void OnResourceLoadComplete(CefBrowser browser, CefFrame frame, CefRequest request, CefResponse response, CefUrlRequestStatus status, long receivedContentLength)
{
base.OnResourceLoadComplete(browser, frame, request, response, status, receivedContentLength);
if (responseDictionary.TryGetValue(request.Identifier, out var filter))
{
webView.OnStreamResponseFilterResourceLoadComplete?.Invoke(request.Url, filter.Data);
}
}
readonly Dictionary<ulong, StreamResponseFilter> responseDictionary = new();
protected override CefResponseFilter GetResourceResponseFilter(CefBrowser browser, CefFrame frame, CefRequest request, CefResponse response)
{
if (webView.StreamResponseFilterUrls != null && webView.StreamResponseFilterUrls.Any(x => request.Url.StartsWith(x, StringComparison.OrdinalIgnoreCase)))
{
var rspIsCiphertext = false;
if (webView.IsSecurity)
{
var contentType = response.GetHeaderByName("Content-Type");
if (!string.IsNullOrWhiteSpace(contentType) && MediaTypeHeaderValue.TryParse(contentType, out var contentType_))
{
var mime = contentType_.MediaType;
if (mime == MediaTypeNames.Security)
{
rspIsCiphertext = true;
}
}
}
var dataFilter = new StreamResponseFilter(webView, rspIsCiphertext);
responseDictionary.Add(request.Identifier, dataFilter);
return dataFilter;
}
return base.GetResourceResponseFilter(browser, frame, request, response);
}
/// <summary>
/// https://stackoverflow.com/questions/45816851/using-cefsharp-to-capture-resource-response-data-body
/// </summary>
unsafe class StreamResponseFilter : CefResponseFilter
{
readonly WebView3 webView;
readonly bool rspIsCiphertext;
MemoryStream? memoryStream;
public StreamResponseFilter(WebView3 webView, bool rspIsCiphertext)
{
this.webView = webView;
this.rspIsCiphertext = rspIsCiphertext;
}
protected override bool InitFilter()
{
memoryStream = new();
return true;
}
protected override CefResponseFilterStatus Filter(IntPtr dataIn, long dataInSize, ref long dataInRead, IntPtr dataOut, long dataOutSize, ref long dataOutWritten)
{
Stream? dataInStream;
if (dataIn == default)
{
dataInStream = default;
}
else
{
var dataInBytePtr = (byte*)dataIn.ToPointer();
dataInStream = new UnmanagedMemoryStream(dataInBytePtr, dataInSize, dataInSize, FileAccess.Read);
}
var dataOutBytePtr = (byte*)dataOut.ToPointer();
UnmanagedMemoryStream dataOutStream = new(dataOutBytePtr, dataOutSize, dataOutSize, FileAccess.Write);
return Filter(dataInStream, dataInSize, ref dataInRead, dataOutStream, dataOutSize, ref dataOutWritten);
}
protected virtual CefResponseFilterStatus Filter(Stream? dataIn, long dataInSize, ref long dataInRead, Stream dataOut, long dataOutSize, ref long dataOutWritten)
{
if (dataIn == null)
{
dataInRead = 0;
dataOutWritten = 0;
return CefResponseFilterStatus.Done;
}
dataInRead = dataIn.Length;
dataOutWritten = Math.Min(dataInRead, dataOut.Length);
//Important we copy dataIn to dataOut
dataIn.CopyTo(dataOut);
//Copy data to stream
dataIn.Position = 0;
dataIn.CopyTo(memoryStream!);
return CefResponseFilterStatus.Done;
}
protected override void Dispose(bool disposing)
{
if (!disposing)
{
if (disposing)
{
if (memoryStream != null)
{
memoryStream?.Dispose();
memoryStream = null;
stream?.Dispose();
stream = null;
}
}
}
base.Dispose(disposing);
}
Stream? stream;
public Stream Data
{
get
{
if (stream == null) stream = GetStream();
return stream;
}
}
Stream GetStream()
{
if (rspIsCiphertext && webView.Aes != null)
{
memoryStream!.Position = 0;
var cryptoStream = new CryptoStream(memoryStream, webView.Aes.CreateDecryptor(), CryptoStreamMode.Read);
return cryptoStream;
}
return memoryStream!;
}
}
}
}
@@ -27,12 +27,12 @@
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder IsHitTestVisible="False" DockPanel.Dock="Left" Width="240">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.8" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder IsHitTestVisible="False">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.8" TintOpacity="1" BackgroundSource="Digger" PlatformTransparencyCompensationLevel="0.5"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
@@ -43,7 +43,8 @@
<Image Source="/Application/UI/Assets/Icon.ico" Height="64" Width="64" VerticalAlignment="Center" Margin="-8,0,0,0"/>
<Label Content="{ReflectionBinding Path=Title}" Foreground="{DynamicResource HighlightForegroundBrushKey}" VerticalContentAlignment="Center" FontSize="20" Margin="8,0,0,0"/>
</StackPanel>
<TextBlock IsHitTestVisible="False" Grid.Column="1" Text="{ReflectionBinding SelectedItem.Name}" Foreground="{DynamicResource HighlightForegroundBrushKey}" Padding="15 8 0 0" FontSize="28"/>
<TextBlock IsHitTestVisible="False" Grid.Column="1" Text="{ReflectionBinding SelectedItem.Name}" Foreground="{DynamicResource HighlightForegroundBrushKey}"
Padding="15 8 0 0" FontSize="24" FontWeight="Regular"/>
<StackPanel Grid.Column="2" x:Name="titleMenu" Orientation="Horizontal" VerticalAlignment="Top">
<!--<Menu Items="{Binding SelectedItem.MenuItems}" IsVisible="{Binding !SelectedItem.MenuItems,Converter={StaticResource IsNullConverter}}" Classes="BindMenu">
</Menu>-->
@@ -81,7 +82,7 @@
<StackPanel>
<Panel x:Name="UserMenu" Width="300" Margin="0 20">
<StackPanel Spacing="15">
<Image Source="{ReflectionBinding Path=AvaterPath, Source={x:Static service:UserService.Current},Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter},ConverterParameter=100}"
<Image Source="{ReflectionBinding Path=AvaterPath, Source={x:Static service:UserService.Current},Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter},ConverterParameter=80}"
Stretch="Uniform"
Height="80" Width="80"
HorizontalAlignment="Center">
@@ -113,20 +114,20 @@
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="UserProfile"></Button>
</ListBoxItem>
<ListBoxItem>
<ListBoxItem IsVisible="{ReflectionBinding Path=HasPhoneNumber,Source={x:Static service:UserService.Current}}}">
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.User_ChangePhoneNum,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="ChangeBindPhoneNumber"></Button>
</ListBoxItem>
<ListBoxItem>
<!--<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.DelAccount,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="ChangeBindPhoneNumber"></Button>
</ListBoxItem>
</ListBoxItem>-->
<ListBoxItem>
<Button
Classes="CodeButton"
@@ -144,7 +145,7 @@
<TabControl
Items="{Binding TabItems}"
SelectedItem="{Binding SelectedItem}"
Margin="0 25 0 0"
Margin="0 22 0 0"
Classes="NavBar">
<TabControl.DataTemplates>
<DataTemplate DataType="vm:DebugWebViewPageViewModel">
@@ -5,5 +5,8 @@
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls;assembly=System.Application.SteamTools.Client.Desktop.Avalonia"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="System.Application.UI.Views.Pages.About_FAQPage">
<controls:WebView3 x:Name="webViewQA" Background="Transparent" />
<Panel>
<controls:WebView3 x:Name="webViewQA" Background="Transparent" />
<controls:ProgressRing x:Name="webViewQALoading" IsIndeterminate="True" HorizontalAlignment="Stretch" Height="100" Width="100" />
</Panel>
</UserControl>
@@ -2,6 +2,7 @@ using Avalonia;
using Avalonia.Controls;
using Avalonia.LogicalTree;
using Avalonia.Markup.Xaml;
using CefNet;
using System.Application.UI.Resx;
using System.Application.UI.Views.Controls;
@@ -10,19 +11,32 @@ namespace System.Application.UI.Views.Pages
public class About_FAQPage : UserControl, IDisposable
{
readonly WebView3 webViewQA;
readonly ProgressRing webViewQALoading;
bool disposedValue;
public About_FAQPage()
{
InitializeComponent();
webViewQALoading = this.FindControl<ProgressRing>(nameof(webViewQALoading));
webViewQA = this.FindControl<WebView3>(nameof(webViewQA));
webViewQA.Opacity = 0;
webViewQA.LoadingStateChange += WebView_LoadingStateChange;
webViewQA.InitialUrl = string.Format(
"https://steampp.net/faqbox?theme={0}&language={1}",
CefNetApp.GetTheme(),
R.Language);
}
private void WebView_LoadingStateChange(object? sender, LoadingStateChangeEventArgs e)
{
if (!e.Busy)
{
if (webViewQA.Opacity != 1) webViewQA.Opacity = 1;
if (webViewQALoading.IsVisible) webViewQALoading.IsVisible = false;
}
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
@@ -34,12 +48,6 @@ namespace System.Application.UI.Views.Pages
Dispose();
}
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnDetachedFromVisualTree(e);
Dispose();
}
protected virtual void Dispose(bool disposing)
{
if (!disposedValue)
@@ -49,6 +57,7 @@ namespace System.Application.UI.Views.Pages
// TODO: 释放托管状态(托管对象)
if (webViewQA != null)
{
webViewQA.LoadingStateChange -= WebView_LoadingStateChange;
((IDisposable)webViewQA).Dispose();
}
}
@@ -76,7 +76,9 @@
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
</UserControl.Styles>
<Border Padding="{StaticResource PageMargin2}">
<ScrollViewer HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"
Padding="{StaticResource PageMargin2}">
<DockPanel>
<StackPanel Spacing="10" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
@@ -201,5 +203,5 @@
<Panel Height="150" />
</DockPanel>
</DockPanel>
</Border>
</ScrollViewer>
</UserControl>
@@ -89,8 +89,8 @@
<StackPanel HorizontalAlignment="Right">
<TextBlock Text="{ReflectionBinding Path=Res.CommunityFix_ProxyMode,Mode=OneWay,Source={x:Static resx:R.Current}}" Margin="0 5"
Foreground="{DynamicResource HighlightForegroundBrushKey}"></TextBlock>
<RadioButton Content="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_Hosts,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding Source={x:Static ms:ProxySettings.EnableWindowsProxy},Path=!Value, Mode=TwoWay}"></RadioButton>
<RadioButton Content="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_WinSystem,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding Source={x:Static ms:ProxySettings.EnableWindowsProxy},Path=Value, Mode=TwoWay}"></RadioButton>
<RadioButton Content="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_Hosts,Mode=OneWay,Source={x:Static resx:R.Current}}" ToolTip.Tip="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_HostsTip,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding Source={x:Static ms:ProxySettings.EnableWindowsProxy},Path=!Value, Mode=TwoWay}"></RadioButton>
<RadioButton Content="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_WinSystem,Mode=OneWay,Source={x:Static resx:R.Current}}" ToolTip.Tip="{ReflectionBinding Path=Res.CommunityFix_ProxyMode_WinSystemTip,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding Source={x:Static ms:ProxySettings.EnableWindowsProxy},Path=Value, Mode=TwoWay}"></RadioButton>
</StackPanel>
</WrapPanel>
</Border>
@@ -228,7 +228,7 @@
</MenuItem.Icon>
</MenuItem>
<!--<MenuItem
Header="{ReflectionBinding Path=Res.Edit,Mode=OneWay,Source={x:Static resx:R.Current}}"
Header="{ReflectionBinding Path=Res.GameList_EditAppInfo,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}"
CommandParameter="{Binding}" />-->
<MenuItem
@@ -17,9 +17,7 @@
x:CompileBindings="True"
x:Class="System.Application.UI.Views.Pages.ProxyScriptManagePage">
<DockPanel>
<Border DockPanel.Dock="Top" Classes="paper" Background="{DynamicResource ThemeBrushKey}" Padding="10" Margin="20 0 20 10">
<DockPanel>
<StackPanel Orientation="Horizontal" Spacing="8" HorizontalAlignment="Left">
<ToggleSwitch Content="" OnContent="" OffContent=""
@@ -40,7 +38,7 @@
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{Binding ScriptStoreCommand}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Shop,Mode=OneWay,Source={x:Static resx:R.Current}}">
ToolTip.Tip="{ReflectionBinding Path=Res.ScriptStore,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource JavaScriptDrawing}" />
</Button>
</StackPanel>
@@ -70,115 +68,116 @@
<ScrollViewer HorizontalScrollBarVisibility="Disabled" Padding="{StaticResource ScrollMargin}">
<ItemsRepeater Items="{Binding ProxyScripts}">
<ItemsRepeater.Layout>
<WrapLayout HorizontalSpacing="20" VerticalSpacing="20" Orientation="Horizontal"/>
<StackLayout Spacing="20" Orientation="Vertical"/>
<!--<UniformGridLayout ItemsJustification="Start" ItemsStretch="Uniform" MinColumnSpacing="20" MinRowSpacing="20" MaximumRowsOrColumns="2" Orientation="Horizontal"/>-->
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate>
<Border Width="450" Classes="paper" Background="{DynamicResource ThemeBrushKey}" Padding="20 10">
<DockPanel>
<Image Source="{Binding Icon}" DockPanel.Dock="Left"></Image>
<StackPanel Spacing="8" DockPanel.Dock="Right">
<DockPanel>
<controls:ScrollingTextBlock
Width="{Binding $parent.Width}"
Text="{Binding Name,Mode=OneWay}"
FontSize="16"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<WrapPanel HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock
Text="{Binding Author}"
FontSize="14"
<Border Classes="paper" Background="{DynamicResource ThemeBrushKey}" Padding="20 10">
<DockPanel>
<Image Source="{Binding Icon}" DockPanel.Dock="Left"></Image>
<StackPanel Spacing="8" DockPanel.Dock="Right">
<DockPanel>
<controls:ScrollingTextBlock
Width="{Binding $parent.Width}"
Text="{Binding Name,Mode=OneWay}"
FontSize="16"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<TextBlock Text=" / v" FontSize="14"></TextBlock>
<TextBlock
Text="{Binding Version}"
FontSize="14"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
</WrapPanel>
</DockPanel>
<WrapPanel HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock
Text="{Binding Author}"
FontSize="14"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<Separator Classes="Separator" Margin="0 0 0 5"></Separator>
<TextBlock Text=" / v" FontSize="14"></TextBlock>
<TextBlock
Text="{Binding Version}"
FontSize="14"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
</WrapPanel>
</DockPanel>
<TextBlock
Width="{Binding $parent.Width}"
TextWrapping="WrapWithOverflow"
Text="{Binding Description}"
FontSize="12"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<Separator Classes="Separator" Margin="0 0 0 5"></Separator>
<TextBlock
Width="{Binding $parent.Width}"
TextWrapping="WrapWithOverflow"
Text="{Binding Description}"
FontSize="12"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<DockPanel VerticalAlignment="Bottom">
<StackPanel Orientation="Horizontal" Spacing="10">
<ToggleSwitch OnContent="" OffContent="" IsChecked="{Binding Enable,Mode=TwoWay}">
</ToggleSwitch>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.EditScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Edit,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Data="{StaticResource CodeDrawing}" />
</Button>
<DockPanel VerticalAlignment="Bottom">
<StackPanel Orientation="Horizontal" Spacing="10">
<ToggleSwitch OnContent="" OffContent="" IsChecked="{Binding Enable,Mode=TwoWay}">
</ToggleSwitch>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.EditScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Edit,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Data="{StaticResource CodeDrawing}" />
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.RefreshScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Refresh,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource RefreshDrawing}" />
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.RefreshScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Refresh,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource RefreshDrawing}" />
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.OpenHomeScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Home,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource HomeDrawing}" />
</Button>
<Button Background="Transparent" Cursor="Hand"
Command="{ReflectionBinding #u.DataContext.OpenHomeScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Home,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="16" Data="{StaticResource HomeDrawing}" />
</Button>
<Button Background="Transparent" IsVisible="{Binding !IsBasics}" Cursor="Hand" HorizontalAlignment="Right"
Command="{ReflectionBinding #u.DataContext.DeleteScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Delete,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Data="{StaticResource DeleteDrawing}" />
</Button>
<Button Background="Transparent" IsVisible="{Binding !IsBasics}" Cursor="Hand" HorizontalAlignment="Right"
Command="{ReflectionBinding #u.DataContext.DeleteScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Delete,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Data="{StaticResource DeleteDrawing}" />
</Button>
</StackPanel>
</StackPanel>
<WrapPanel
DockPanel.Dock="Right"
HorizontalAlignment="Right"
VerticalAlignment="Center"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Update,Mode=OneWay,Source={x:Static resx:R.Current}}"
IsVisible="{Binding IsUpdate}">
<!--<Button Background="Transparent" IsVisible="{Binding IsUpdate}" Cursor="Hand" HorizontalAlignment="Right"
<WrapPanel
DockPanel.Dock="Right"
HorizontalAlignment="Right"
VerticalAlignment="Center"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Update,Mode=OneWay,Source={x:Static resx:R.Current}}"
IsVisible="{Binding IsUpdate}">
<!--<Button Background="Transparent" IsVisible="{Binding IsUpdate}" Cursor="Hand" HorizontalAlignment="Right"
Command="{ReflectionBinding #u.DataContext.DownloadScriptItemButton}"
CommandParameter="{Binding}"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_Update,Mode=OneWay,Source={x:Static resx:R.Current}}">
<PathIcon Width="20" Height="20" Data="{StaticResource DownloadDrawing}" />
</Button>-->
<controls:ProgressRing IsIndeterminate="True"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_ImportLoading,Mode=OneWay,Source={x:Static resx:R.Current}}" HorizontalAlignment="Stretch" Height="30" Width="30"
IsVisible="{Binding IsLoading}" />
<Button Classes="Hyperlink"
Command="{ReflectionBinding #u.DataContext.DownloadScriptItemButton}"
CommandParameter="{Binding}"
Content="{Binding NewVersion,StringFormat={}v{0}}"
FontSize="{DynamicResource FontSizeH7}"
VerticalContentAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<Ellipse VerticalAlignment="Center"
HorizontalAlignment="Center"
Height="6" Width="6" Margin="5 0"
Fill="{DynamicResource ValidationErrorColorKey}">
</Ellipse>
</WrapPanel>
</DockPanel>
</StackPanel>
</DockPanel>
</Border>
<controls:ProgressRing IsIndeterminate="True"
ToolTip.Tip="{ReflectionBinding Path=Res.Script_ImportLoading,Mode=OneWay,Source={x:Static resx:R.Current}}" HorizontalAlignment="Stretch" Height="30" Width="30"
IsVisible="{Binding IsLoading}" />
<Button Classes="Hyperlink"
Command="{ReflectionBinding #u.DataContext.DownloadScriptItemButton}"
CommandParameter="{Binding}"
Content="{Binding NewVersion,StringFormat={}v{0}}"
FontSize="{DynamicResource FontSizeH7}"
VerticalContentAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"/>
<Ellipse VerticalAlignment="Center"
HorizontalAlignment="Center"
Height="6" Width="6" Margin="5 0"
Fill="{DynamicResource ValidationErrorColorKey}">
</Ellipse>
</WrapPanel>
</DockPanel>
</StackPanel>
</DockPanel>
</Border>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
@@ -1,3 +1,4 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.Application.Services;
@@ -7,37 +8,48 @@ using System.Properties;
namespace System.Application.UI.Views.Pages
{
public class ProxyScriptManagePage : UserControl
{
public ProxyScriptManagePage()
{
InitializeComponent();
}
public class ProxyScriptManagePage : UserControl
{
public ProxyScriptManagePage()
{
InitializeComponent();
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
private void AddNewScriptButton_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
var fileDialog = new OpenFileDialog
{
Filters = new List<FileDialogFilter> {
new FileDialogFilter { Name = "JavaScript Files", Extensions = new List<string> { "js" } },
new FileDialogFilter { Name = "Text Files", Extensions = new List<string> { "txt" } },
new FileDialogFilter { Name = "All Files", Extensions = new List<string> { "*" } },
},
Title = ThisAssembly.AssemblyTrademark,
AllowMultiple = false,
};
fileDialog.ShowAsync(IDesktopAvaloniaAppService.Instance.MainWindow).ContinueWith(async (s) =>
{
if (s != null && s.Result.Length > 0)
{
await ProxyService.Current.AddNewScript(s.Result[0]);
}
});
}
}
var th = this.FindControl<UserControl>("u");
//var item = this.FindControl<Border>("item");
//th.GetObservable(UserControl.WidthProperty).Subscribe(v =>
//{
// if (v < 800)
// item.Width = 800;
// else
// item.Width = 450;
//});
}
private void AddNewScriptButton_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
var fileDialog = new OpenFileDialog
{
Filters = new List<FileDialogFilter> {
new FileDialogFilter { Name = "JavaScript Files", Extensions = new List<string> { "js" } },
new FileDialogFilter { Name = "Text Files", Extensions = new List<string> { "txt" } },
new FileDialogFilter { Name = "All Files", Extensions = new List<string> { "*" } },
},
Title = ThisAssembly.AssemblyTrademark,
AllowMultiple = false,
};
fileDialog.ShowAsync(IDesktopAvaloniaAppService.Instance.MainWindow).ContinueWith(async (s) =>
{
if (s != null && s.Result.Length > 0)
{
await ProxyService.Current.AddNewScript(s.Result[0]);
}
});
}
}
}
@@ -7,64 +7,70 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="System.Application.UI.Views.Pages.Settings_UI">
<ScrollViewer>
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" Spacing="20">
<StackPanel.Styles>
<Style Selector="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSizeH7}"/>
<Setter Property="Foreground" Value="{DynamicResource HighlightForegroundBrushKey}" />
</Style>
<Style Selector="DockPanel > TextBlock">
<Setter Property="Margin" Value="0 0 20 0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="(DockPanel.Dock)" Value="Left" />
</Style>
<Style Selector="DockPanel > ToggleSwitch">
<Setter Property="Margin" Value="0 0 -12 0" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="OnContent" Value="{x:Null}" />
<Setter Property="OffContent" Value="{x:Null}" />
</Style>
</StackPanel.Styles>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Language,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox HorizontalAlignment="Stretch" SelectedItem="{Binding SelectLanguage, Mode=TwoWay}" Items="{Binding Mode=OneWay,Source={x:Static resx:R.Languages}}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value,Mode=OneWay}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<ScrollViewer>
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" Spacing="20">
<StackPanel.Styles>
<Style Selector="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSizeH7}"/>
<Setter Property="Foreground" Value="{DynamicResource HighlightForegroundBrushKey}" />
</Style>
<Style Selector="DockPanel > TextBlock">
<Setter Property="Margin" Value="0 0 20 0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="(DockPanel.Dock)" Value="Left" />
</Style>
<Style Selector="DockPanel > ToggleSwitch">
<Setter Property="Margin" Value="0 0 -12 0" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="OnContent" Value="{x:Null}" />
<Setter Property="OffContent" Value="{x:Null}" />
</Style>
</StackPanel.Styles>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Theme,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox x:Name="Themes"
SelectedIndex="{Binding Source={x:Static ms:UISettings.Theme},Path=Value, Mode=TwoWay}"
HorizontalAlignment="Stretch">
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_SystemDefault,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_Light,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_Dark,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Vertical" Spacing="10" Margin="0 5 0 0">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Language,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox HorizontalAlignment="Stretch" SelectedItem="{Binding SelectLanguage, Mode=TwoWay}" Items="{Binding Mode=OneWay,Source={x:Static resx:R.Languages}}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value,Mode=OneWay}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Fonts,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox
Items="{Binding Mode=OneWay,Source={x:Static resx:R.Fonts}}"
SelectedItem="{Binding SelectFont}"
HorizontalAlignment="Stretch"
MaxDropDownHeight="450">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key,Mode=OneWay}"
FontFamily="{Binding Value,Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<Separator Classes="Separator"/>
</StackPanel>
</ScrollViewer>
</UserControl>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Theme,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox x:Name="Themes"
SelectedIndex="{Binding Source={x:Static ms:UISettings.Theme},Path=Value, Mode=TwoWay}"
HorizontalAlignment="Stretch">
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_SystemDefault,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_Light,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
<ComboBoxItem Content="{ReflectionBinding Path=Res.Settings_UI_Dark,Mode=OneWay,Source={x:Static resx:R.Current}}"></ComboBoxItem>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Vertical" Spacing="10">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_Fonts,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<ComboBox
Items="{Binding Mode=OneWay,Source={x:Static resx:R.Fonts}}"
SelectedItem="{Binding SelectFont}"
HorizontalAlignment="Stretch"
MaxDropDownHeight="450">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key,Mode=OneWay}"
FontFamily="{Binding Value,Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<Separator Classes="Separator"/>
<StackPanel Orientation="Vertical" Spacing="8">
<TextBlock Text="{ReflectionBinding Path=Res.Settings_UI_AcrylicTransparency,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<Slider Value="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=TwoWay}" Minimum="0" Maximum="1.0"></Slider>
</StackPanel>
<Separator Classes="Separator"/>
</StackPanel>
</ScrollViewer>
</UserControl>
@@ -29,8 +29,11 @@
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate>
<Panel x:Name="panel" MinWidth="224">
<Panel.ContextMenu>
<Border x:Name="card"
Classes="paper"
Background="{DynamicResource ThemeBrushKey}">
<Border.ContextMenu>
<ContextMenu>
<MenuItem
Header="{ReflectionBinding Path=Res.UserChange_BtnText,Mode=OneWay,Source={x:Static resx:R.Current}}"
@@ -45,27 +48,24 @@
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
CommandParameter="{Binding}" />
</ContextMenu>
</Panel.ContextMenu>
<Border x:Name="card"
Classes="paper"
Background="{DynamicResource ThemeBrushKey}">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="PointerEnter" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="True"/>
</ia:EventTriggerBehavior>
<ia:EventTriggerBehavior EventName="PointerLeave" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="False"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<Grid Width="{ReflectionBinding #panel.Width}" Height="184"
ColumnDefinitions="Auto,Auto,*,Auto">
<Panel>
<gif:Image2 x:Name="avatar"
Width="184"
AutoStart="true"
Stretch="Uniform"
Source="{Binding AvatarStream^}">
<!--<i:Interaction.Behaviors>
</Border.ContextMenu>
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="PointerEnter" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="True"/>
</ia:EventTriggerBehavior>
<ia:EventTriggerBehavior EventName="PointerLeave" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #delete_btn}" PropertyName="IsVisible" Value="False"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<Grid Width="{ReflectionBinding #card.Width}" Height="184"
ColumnDefinitions="Auto,Auto,*,Auto">
<Panel>
<gif:Image2 x:Name="avatar"
Width="184"
AutoStart="true"
Stretch="Uniform"
Source="{Binding AvatarStream^}">
<!--<i:Interaction.Behaviors>
<ia:DataTriggerBehavior Binding="{Binding AvatarStream,Converter={StaticResource IsNullConverter},ConverterParameter=invert}" ComparisonCondition="Equal" Value="True">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #avatar}" PropertyName="Source" Value="{Binding AvatarStream}"/>
</ia:DataTriggerBehavior>
@@ -73,107 +73,106 @@
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #avatar}" PropertyName="Source" Value="avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/avater.jpg"/>
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>-->
</gif:Image2>
<Image Width="184" Stretch="Uniform" IsVisible="{Binding AvatarStream^,Converter={StaticResource IsNullConverter}}"
Source="avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/avater.jpg">
</Image>
<!--<gif:Image2 Width="184" Height="184"
</gif:Image2>
<Image Width="184" Stretch="Uniform" IsVisible="{Binding AvatarStream^,Converter={StaticResource IsNullConverter}}"
Source="avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/avater.jpg">
</Image>
<!--<gif:Image2 Width="184" Height="184"
AutoStart="true"
Source="{Binding MiniProfile.AvatarFrameStream^}"
Stretch="Uniform"
IsVisible="{Binding MiniProfile.AvatarFrameStream^,Converter={StaticResource IsNullConverter},ConverterParameter=invert}"/>-->
</Panel>
<Panel Grid.Column="1" Margin="10 5">
<StackPanel>
<DockPanel LastChildFill="True">
<Ellipse VerticalAlignment="Center"
HorizontalAlignment="Center" x:Name="circle" Margin="5 0 12 0" Height="10" Width="10" StrokeThickness="0" ToolTip.Tip="{Binding OnlineState}">
<i:Interaction.Behaviors>
<ia:DataTriggerBehavior Binding="{Binding OnlineState}" ComparisonCondition="Equal" Value="online">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #circle}" PropertyName="Fill" Value="#08D969"/>
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior Binding="{Binding OnlineState}" ComparisonCondition="Equal" Value="offline">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #circle}" PropertyName="Fill" Value="#adadad"/>
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>
</Ellipse>
<controls:ScrollingTextBlock x:Name="nickname" Text="{Binding SteamNickName}" FontSize="24" Foreground="{DynamicResource HighlightForegroundBrushKey}" Cursor="Hand" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OpenUserUrl,Mode=OneWay,Source={x:Static resx:R.Current}}">
<!--OpenUserProfileUrl-->
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #nickname}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.OpenUserProfileUrl}" CommandParameter="{Binding}"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</controls:ScrollingTextBlock>
<!--<WrapPanel VerticalAlignment="Center" IsVisible="{Binding Remark,Converter={StaticResource IsNullConverter},ConverterParameter=invert}">-->
<WrapPanel VerticalAlignment="Center">
<!--<TextBlock Text="("></TextBlock>-->
<!--<controls:ScrollingTextBlock Text="{Binding Remark}">
</Panel>
<Panel Grid.Column="1" Margin="10 5">
<StackPanel>
<DockPanel LastChildFill="True">
<Ellipse VerticalAlignment="Center"
HorizontalAlignment="Center" x:Name="circle" Margin="5 0 12 0" Height="10" Width="10" StrokeThickness="0" ToolTip.Tip="{Binding OnlineState}">
<i:Interaction.Behaviors>
<ia:DataTriggerBehavior Binding="{Binding OnlineState}" ComparisonCondition="Equal" Value="online">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #circle}" PropertyName="Fill" Value="#08D969"/>
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior Binding="{Binding OnlineState}" ComparisonCondition="Equal" Value="offline">
<ia:ChangePropertyAction TargetObject="{ReflectionBinding #circle}" PropertyName="Fill" Value="#adadad"/>
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>
</Ellipse>
<controls:ScrollingTextBlock x:Name="nickname" Text="{Binding SteamNickName}" FontSize="24" Foreground="{DynamicResource HighlightForegroundBrushKey}" Cursor="Hand" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OpenUserUrl,Mode=OneWay,Source={x:Static resx:R.Current}}">
<!--OpenUserProfileUrl-->
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #nickname}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.OpenUserProfileUrl}" CommandParameter="{Binding}"/>
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</controls:ScrollingTextBlock>
<!--<WrapPanel VerticalAlignment="Center" IsVisible="{Binding Remark,Converter={StaticResource IsNullConverter},ConverterParameter=invert}">-->
<WrapPanel VerticalAlignment="Center">
<!--<TextBlock Text="("></TextBlock>-->
<!--<controls:ScrollingTextBlock Text="{Binding Remark}">
</controls:ScrollingTextBlock>-->
<!--<TextBlock Text=")"></TextBlock>-->
<!--<PathIcon Data="{StaticResource EditDrawing}" Width="10" Height="10"></PathIcon>-->
<TextBox VerticalAlignment="Center"
VerticalContentAlignment="Center"
Watermark="{ReflectionBinding Path=Res.UserChange_EditRemark,Mode=OneWay,Source={x:Static resx:R.Current}}"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_EditRemark,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding Remark,Mode=TwoWay}"
Classes="readonlybox"
Foreground="{DynamicResource InactiveForegroundBrushKey}">
<TextBox.InnerRightContent>
<PathIcon Data="{StaticResource EditDrawing}"
Width="10" Height="10"
Opacity="0.8"
VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="0"
IsVisible="{Binding Remark,Converter={StaticResource IsNullConverter}}"/>
</TextBox.InnerRightContent>
</TextBox>
</WrapPanel>
</DockPanel>
<WrapPanel Orientation="Horizontal">
<TextBlock Text="{Binding AccountName}" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<TextBlock Text="(" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<TextBox Text="{Binding SteamId64,Mode=OneWay}" FontSize="14" Classes="readonlybox" Padding="0" Foreground="{DynamicResource InactiveForegroundBrushKey}" IsReadOnly="True"></TextBox>
<TextBlock Text=")" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<!--<TextBlock Text=")"></TextBlock>-->
<!--<PathIcon Data="{StaticResource EditDrawing}" Width="10" Height="10"></PathIcon>-->
<TextBox VerticalAlignment="Center"
VerticalContentAlignment="Center"
Watermark="{ReflectionBinding Path=Res.UserChange_EditRemark,Mode=OneWay,Source={x:Static resx:R.Current}}"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_EditRemark,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding Remark,Mode=TwoWay}"
Classes="readonlybox"
Foreground="{DynamicResource InactiveForegroundBrushKey}">
<TextBox.InnerRightContent>
<PathIcon Data="{StaticResource EditDrawing}"
Width="10" Height="10"
Opacity="0.8"
VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="0"
IsVisible="{Binding Remark,Converter={StaticResource IsNullConverter}}"/>
</TextBox.InnerRightContent>
</TextBox>
</WrapPanel>
</StackPanel>
<WrapPanel VerticalAlignment="Bottom" Orientation="Horizontal">
<PathIcon Data="{StaticResource ClockDrawing}" Width="16" VerticalAlignment="Center" Margin="5 0" Foreground="{DynamicResource InactiveForegroundBrushKey}">
</DockPanel>
<WrapPanel Orientation="Horizontal">
<TextBlock Text="{Binding AccountName}" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<TextBlock Text="(" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
<TextBox Text="{Binding SteamId64,Mode=OneWay}" FontSize="14" Classes="readonlybox" Padding="0" Foreground="{DynamicResource InactiveForegroundBrushKey}" IsReadOnly="True"></TextBox>
<TextBlock Text=")" FontSize="16" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
</WrapPanel>
</StackPanel>
<WrapPanel VerticalAlignment="Bottom" Orientation="Horizontal">
<PathIcon Data="{StaticResource ClockDrawing}" Width="16" VerticalAlignment="Center" Margin="5 0" Foreground="{DynamicResource InactiveForegroundBrushKey}">
</PathIcon>
<TextBlock Text="{Binding LastLoginTime,StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" FontSize="16" VerticalAlignment="Center" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
</WrapPanel>
</Panel>
<Grid Grid.Column="3" RowDefinitions="*,Auto">
<Panel>
<Button Classes="flatbutton" IsVisible="False" x:Name="delete_btn" Background="{DynamicResource ThemeBrushKey}" Cursor="Hand" HorizontalAlignment="Right" Margin="0,0,0,121" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_DeleteUser,Mode=OneWay,Source={x:Static resx:R.Current}}" Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}" CommandParameter="{Binding}">
<PathIcon Width="12" Data="{DynamicResource CloseDrawing}">
</PathIcon>
<TextBlock Text="{Binding LastLoginTime,StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" FontSize="16" VerticalAlignment="Center" Foreground="{DynamicResource InactiveForegroundBrushKey}"/>
</Button>
<WrapPanel HorizontalAlignment="Right" Orientation="Vertical" Margin="0 30 5 0">
<CheckBox Content="{ReflectionBinding Path=Res.UserChange_RecentLogin,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding MostRecent}" IsEnabled="False"></CheckBox>
<CheckBox Content="{ReflectionBinding Path=Res.UserChange_RememberMe,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding RememberPassword}" IsEnabled="False"></CheckBox>
</WrapPanel>
</Panel>
<Grid Grid.Column="3" RowDefinitions="*,Auto">
<Panel>
<Button Classes="flatbutton" IsVisible="False" x:Name="delete_btn" Background="{DynamicResource ThemeBrushKey}" Cursor="Hand" HorizontalAlignment="Right" Margin="0,0,0,121" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_DeleteUser,Mode=OneWay,Source={x:Static resx:R.Current}}" Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}" CommandParameter="{Binding}">
<PathIcon Width="12" Data="{DynamicResource CloseDrawing}">
</PathIcon>
<WrapPanel Grid.Row="1" Orientation="Horizontal">
<Border BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}" BorderThickness=".66 .66 .66 0" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}">
<Button Classes="flatbutton" Cursor="Hand" HorizontalAlignment="Stretch" MaxWidth="200" Background="{DynamicResource ThemeBrushKey}" Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}" CommandParameter="{Binding}">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}"></controls:ScrollingTextBlock>
</Button>
<WrapPanel HorizontalAlignment="Right" Orientation="Vertical" Margin="0 30 5 0">
<CheckBox Content="{ReflectionBinding Path=Res.UserChange_RecentLogin,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding MostRecent}" IsEnabled="False"></CheckBox>
<CheckBox Content="{ReflectionBinding Path=Res.UserChange_RememberMe,Mode=OneWay,Source={x:Static resx:R.Current}}" IsChecked="{Binding RememberPassword}" IsEnabled="False"></CheckBox>
</WrapPanel>
</Panel>
<WrapPanel Grid.Row="1" Orientation="Horizontal">
<Border BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}" BorderThickness=".66 .66 .66 0" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}">
<Button Classes="flatbutton" Cursor="Hand" HorizontalAlignment="Stretch" MaxWidth="200" Background="{DynamicResource ThemeBrushKey}" Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}" CommandParameter="{Binding}">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_OfflineBtn,Mode=OneWay,Source={x:Static resx:R.Current}}"></controls:ScrollingTextBlock>
</Button>
</Border>
<Border BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}" BorderThickness="0 .66 0 0" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,Mode=OneWay,Source={x:Static resx:R.Current}}">
<Button Classes="flatbutton" Cursor="Hand" MaxWidth="250" Background="{DynamicResource ThemeBrushKey}" HorizontalAlignment="Stretch" Command="{ReflectionBinding #u.DataContext.SteamId_Click}" CommandParameter="{Binding}">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_BtnText,Mode=OneWay,Source={x:Static resx:R.Current}}"></controls:ScrollingTextBlock>
</Button>
</Border>
</WrapPanel>
</Grid>
</Border>
<Border BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}" BorderThickness="0 .66 0 0" ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,Mode=OneWay,Source={x:Static resx:R.Current}}">
<Button Classes="flatbutton" Cursor="Hand" MaxWidth="250" Background="{DynamicResource ThemeBrushKey}" HorizontalAlignment="Stretch" Command="{ReflectionBinding #u.DataContext.SteamId_Click}" CommandParameter="{Binding}">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_BtnText,Mode=OneWay,Source={x:Static resx:R.Current}}"></controls:ScrollingTextBlock>
</Button>
</Border>
</WrapPanel>
</Grid>
</Border>
</Panel>
</Grid>
</Border>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
@@ -15,7 +15,7 @@ namespace System.Application.UI.Views.Windows
readonly TextBox TbSmsCodeValidation;
readonly TextBox TbSmsCodeNew;
public ChangeBindPhoneNumberWindow()
public ChangeBindPhoneNumberWindow() : base()
{
InitializeComponent();
TbSmsCodeValidation = this.FindControl<TextBox>(nameof(TbSmsCodeValidation));
@@ -28,7 +28,7 @@ namespace System.Application.UI.Views.Windows
TbPhoneNumber.Focus();
}
};
void Submit(object _, KeyEventArgs e)
void Submit(object? _, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
@@ -65,7 +65,7 @@ namespace System.Application.UI.Views.Windows
{
if (DataContext is ChangeBindPhoneNumberWindowViewModel vm && vm.CurrentStepIsNew && !vm.IsComplete)
{
// 进入第二步时,如果关闭窗口,则需二次确认
// 进入第二步时,如果关闭窗口,则需二次确认
e.Cancel = true;
var r = await MessageBoxCompat.ShowAsync(AppResources.UnsavedEditingWillBeDiscarded, AppResources.Warning, MessageBoxButtonCompat.OKCancel);
if (r == MessageBoxResultCompat.OK)
@@ -3,6 +3,7 @@ using Avalonia.Platform;
using Avalonia.Styling;
using System;
using System.Application.UI.Resx;
using System.Application.UI.ViewModels;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Windows;
@@ -17,6 +18,8 @@ namespace Avalonia.Controls
public FluentWindow()
{
Constructor();
this.Opened += FluentWindow_Opened;
this.PositionChanged += FluentWindow_PositionChanged;
}
public FluentWindow(IWindowImpl impl) : base(impl)
@@ -24,6 +27,49 @@ namespace Avalonia.Controls
Constructor();
}
private void FluentWindow_PositionChanged(object? sender, PixelPointEventArgs e)
{
if (_isOpenWindow == false)
return;
if (this.DataContext is WindowViewModel vm)
{
vm.SizePosition.X = e.Point.X;
vm.SizePosition.Y = e.Point.Y;
}
}
bool _isOpenWindow;
private void FluentWindow_Opened(object? sender, EventArgs e)
{
_isOpenWindow = true;
if (this.DataContext is WindowViewModel vm)
{
if (vm.SizePosition.X > 0 && vm.SizePosition.Y > 0)
{
var point = new PixelPoint(vm.SizePosition.X, vm.SizePosition.Y);
if (Screens.Primary.WorkingArea.Contains(point))
this.Position = point;
}
if (vm.SizePosition.Width > 0)
this.Width = vm.SizePosition.Width;
if (vm.SizePosition.Height > 0)
this.Height = vm.SizePosition.Height;
HandleResized(new Size(this.Width, this.Height));
this.GetObservable(WidthProperty).Subscribe(v =>
{
vm.SizePosition.Width = v;
});
this.GetObservable(HeightProperty).Subscribe(v =>
{
vm.SizePosition.Height = v;
});
}
}
void Constructor()
{
ExtendClientAreaToDecorationsHint = true;
@@ -36,7 +36,7 @@
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder DockPanel.Dock="Top" IsHitTestVisible="False" Height="80">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.85" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="10 8 10 8">
<Image Source="/Application/UI/Assets/Icon.ico" Height="24" Width="24" Margin="0,0,10,0"/>
@@ -45,7 +45,7 @@
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder DockPanel.Dock="Bottom" IsHitTestVisible="False" Opacity="{StaticResource ContentOpacity}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.85" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
@@ -6,7 +6,7 @@ namespace System.Application.UI.Views.Windows
{
public class AchievementWindow : FluentWindow
{
public AchievementWindow()
public AchievementWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -0,0 +1,28 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
Width="600" Height="450"
x:Class="System.Application.UI.Views.Windows.EditAppInfoWindow"
xmlns:resx="clr-namespace:System.Application.UI.Resx;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
FontFamily="{Binding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
Background="Transparent"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="NoChrome"
ExtendClientAreaTitleBarHeightHint="30"
Title="{Binding Title}"
x:DataType="vm:EditAppInfoWindowViewModel"
x:CompileBindings="True">
<DockPanel>
<controls:TitleBar DockPanel.Dock="Top"></controls:TitleBar>
<StackPanel>
<Border Classes="paper" Background="{DynamicResource ThemeBrushKey}">
<TextBox></TextBox>
</Border>
</StackPanel>
</DockPanel>
</Window>
@@ -0,0 +1,22 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace System.Application.UI.Views.Windows
{
public class EditAppInfoWindow : FluentWindow
{
public EditAppInfoWindow() : base()
{
InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}
@@ -26,7 +26,7 @@
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder DockPanel.Dock="Top" IsHitTestVisible="False" Height="95">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.85" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="10 8 10 8">
<Image Source="/Application/UI/Assets/Icon.ico" Height="24" Width="24" Margin="0,0,10,0"/>
@@ -35,7 +35,7 @@
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder DockPanel.Dock="Bottom" IsHitTestVisible="False" Opacity="{StaticResource ContentOpacity}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.85" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
@@ -10,7 +10,7 @@ namespace System.Application.UI.Views.Windows
{
public class AddAuthWindow : FluentWindow
{
public AddAuthWindow()
public AddAuthWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -6,7 +6,7 @@ namespace System.Application.UI.Views.Windows
{
public class AuthTradeWindow : FluentWindow
{
public AuthTradeWindow()
public AuthTradeWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -6,7 +6,7 @@ namespace System.Application.UI.Views.Windows
{
public class ShowAuthWindow : FluentWindow
{
public ShowAuthWindow()
public ShowAuthWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -22,69 +22,84 @@
x:DataType="vm:LoginOrRegisterWindowViewModel"
x:CompileBindings="True"
Title="{Binding Title}">
<Panel>
<controls:TitleBar />
<Panel>
<controls:TitleBar />
<Panel>
<controls:ProgressRing IsIndeterminate="True" HorizontalAlignment="Stretch" Height="100" Width="100" IsVisible="{Binding IsLoading}" />
<Grid RowDefinitions="*,Auto" IsVisible="{Binding !IsLoading}">
<StackPanel VerticalAlignment="Center" Spacing="8" IsVisible="{Binding !IsLoading}" Margin="60 0">
<Image Source="/Application/UI/Assets/Icon.ico" Height="128" Width="128" HorizontalAlignment="Center" Margin="0 0 0 25">
<!--<Image.Clip>
<controls:ProgressRing IsIndeterminate="True" HorizontalAlignment="Stretch" Height="100" Width="100" IsVisible="{Binding IsLoading}" />
<Grid RowDefinitions="*,Auto" IsVisible="{Binding !IsLoading}">
<StackPanel VerticalAlignment="Center" Spacing="8" IsVisible="{Binding !IsLoading}" Margin="60 0">
<Image Source="/Application/UI/Assets/Icon.ico" Height="128" Width="128" HorizontalAlignment="Center" Margin="0 0 0 25">
<!--<Image.Clip>
<EllipseGeometry Rect="0,0,128,128"/>
</Image.Clip>-->
</Image>
<TextBox
x:Name="TbPhoneNumber"
Watermark="{ReflectionBinding Path=Res.User_Phone,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding PhoneNumber}"
MaxLength="{ReflectionBinding Path=PhoneNumber,Mode=OneTime,Source={x:Static ccl_services:InputLengthConstants.Current}}" />
<Panel>
<TextBox
x:Name="TbSmsCode"
Watermark="{ReflectionBinding Path=Res.User_SMSCode,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding SmsCode}"
MaxLength="{ReflectionBinding Path=SMS_CAPTCHA,Mode=OneTime,Source={x:Static ccl_services:InputLengthConstants.Current}}" />
<Border HorizontalAlignment="Right" Cursor="Hand">
<Button Classes="CodeButton"
Content="{Binding BtnSendSmsCodeText}"
HorizontalAlignment="Right"
Command="{ReflectionBinding SendSms}"
IsEnabled="{Binding !IsUnTimeLimit}" />
</Border>
</Panel>
</Image>
<TextBox
x:Name="TbPhoneNumber"
Watermark="{ReflectionBinding Path=Res.User_Phone,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding PhoneNumber}"
MaxLength="{ReflectionBinding Path=PhoneNumber,Mode=OneTime,Source={x:Static ccl_services:InputLengthConstants.Current}}" />
<Panel>
<TextBox
x:Name="TbSmsCode"
Watermark="{ReflectionBinding Path=Res.User_SMSCode,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding SmsCode}"
MaxLength="{ReflectionBinding Path=SMS_CAPTCHA,Mode=OneTime,Source={x:Static ccl_services:InputLengthConstants.Current}}" />
<Border HorizontalAlignment="Right" Cursor="Hand">
<Button Classes="CodeButton"
Content="{Binding BtnSendSmsCodeText}"
HorizontalAlignment="Right"
Command="{ReflectionBinding SendSms}"
IsEnabled="{Binding !IsUnTimeLimit}" />
</Border>
</Panel>
<!--<Panel Margin="2 0 6 0">
<!--<Panel Margin="2 0 6 0">
<CheckBox Content="{ReflectionBinding Path=Res.User_Rememberme,Mode=OneWay,Source={x:Static resx:R.Current}}"></CheckBox>
<Button Classes="Hyperlink" Content="{ReflectionBinding Path=Res.User_LoginTroubleshoot,Mode=OneWay,Source={x:Static resx:R.Current}}" HorizontalAlignment="Right"></Button>
</Panel>-->
<Button Classes="action"
Content="{ReflectionBinding Path=Res.LoginAndRegister,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Submit}"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center">
</Button>
<Button Classes="action"
Content="{ReflectionBinding Path=Res.LoginAndRegister,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Submit}"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center">
</Button>
<WrapPanel HorizontalAlignment="Center" Margin="2 0 6 0">
<TextBlock Text="{ReflectionBinding Path=Res.User_RegisterAgreed,Mode=OneWay,Source={x:Static resx:R.Current}}" FontSize="12"/>
<Button FontSize="12" Classes="Hyperlink" Margin="5,0" Content="{ReflectionBinding Path=Res.User_Agreement,Mode=OneWay,Source={x:Static resx:R.Current}}" Command="{ReflectionBinding OpenHyperlink}" CommandParameter="https://steampp.net/AgreementBox"/>
<TextBlock FontSize="12" Text="{ReflectionBinding Path=Res.And,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<Button FontSize="12" Classes="Hyperlink" Margin="5,0" Content="{ReflectionBinding Path=Res.User_Privacy,Mode=OneWay,Source={x:Static resx:R.Current}}" Command="{ReflectionBinding OpenHyperlink}" CommandParameter="https://steampp.net/PrivacyBox"/>
</WrapPanel>
</StackPanel>
<!--<StackPanel Grid.Row="1" Margin="0 0 0 10">
<Button
HorizontalAlignment="Center" HorizontalContentAlignment="Center" Background="Transparent" BorderThickness="0" Cursor="Hand" Command="{Binding SteamFastLogin}">
<StackPanel Orientation="Horizontal" Spacing="10">
<PathIcon Data="{StaticResource SteamDrawing}" Width="18"></PathIcon>
<TextBlock Text="{ReflectionBinding Path=Res.User_SteamFastLogin,Mode=OneWay,Source={x:Static resx:R.Current}}"></TextBlock>
</StackPanel>
</Button>
</StackPanel>-->
</Grid>
</Panel>
<!--Toast-->
<controls:ToastMessage />
<WrapPanel HorizontalAlignment="Center" Margin="2 0 6 0">
<TextBlock Text="{ReflectionBinding Path=Res.User_RegisterAgreed,Mode=OneWay,Source={x:Static resx:R.Current}}" FontSize="12"/>
<Button FontSize="12" Classes="Hyperlink" Margin="5,0" Content="{ReflectionBinding Path=Res.User_Agreement,Mode=OneWay,Source={x:Static resx:R.Current}}" Command="{ReflectionBinding OpenHyperlink}" CommandParameter="https://steampp.net/AgreementBox"/>
<TextBlock FontSize="12" Text="{ReflectionBinding Path=Res.And,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<Button FontSize="12" Classes="Hyperlink" Margin="5,0" Content="{ReflectionBinding Path=Res.User_Privacy,Mode=OneWay,Source={x:Static resx:R.Current}}" Command="{ReflectionBinding OpenHyperlink}" CommandParameter="https://steampp.net/PrivacyBox"/>
</WrapPanel>
</StackPanel>
<StackPanel HorizontalAlignment="Center" Grid.Row="1" Margin="0 0 0 10" Orientation="Horizontal" Spacing="10">
<Button HorizontalContentAlignment="Center"
Background="Transparent"
BorderThickness="0"
Cursor="Hand"
Command="{ReflectionBinding SteamFastLogin}">
<StackPanel Orientation="Horizontal" Spacing="10">
<PathIcon Data="{StaticResource SteamDrawing}" Width="18"></PathIcon>
<TextBlock Text="{ReflectionBinding Path=Res.User_SteamFastLogin,Mode=OneWay,Source={x:Static resx:R.Current}}"></TextBlock>
</StackPanel>
</Button>
<!--<Button Classes="plain"
HorizontalContentAlignment="Center"
Command="{ReflectionBinding SteamFastLogin}">
<TextBlock Text="{ReflectionBinding Path=Res.User_FastLogin,Mode=OneWay,Source={x:Static resx:R.Current}}"></TextBlock>
</Button>
<Separator Classes="Separator" Height="{ReflectionBinding $parent.Height}" Width="0.88"></Separator>
<Button Classes="plain"
HorizontalContentAlignment="Center"
Command="{ReflectionBinding SteamFastLogin}">
<TextBlock Text="{ReflectionBinding Path=Res.User_PhoneLogin,Mode=OneWay,Source={x:Static resx:R.Current}}"></TextBlock>
</Button>-->
</StackPanel>
</Grid>
</Panel>
<!--Toast-->
<controls:ToastMessage />
</Panel>
</Window>
@@ -11,7 +11,7 @@ namespace System.Application.UI.Views.Windows
readonly TextBox TbPhoneNumber;
readonly TextBox TbSmsCode;
public LoginOrRegisterWindow()
public LoginOrRegisterWindow() : base()
{
InitializeComponent();
TbPhoneNumber = this.FindControl<TextBox>(nameof(TbPhoneNumber));
@@ -8,7 +8,7 @@ namespace System.Application.UI.Views.Windows
{
public class MessageBoxWindow : FluentWindow
{
public MessageBoxWindow()
public MessageBoxWindow() : base()
{
//if (PlatformImpl is Win32WindowImpl win)
//{
@@ -8,7 +8,7 @@ namespace System.Application.UI.Views.Windows
{
public Button BtnCancel { get; }
public NewVersionWindow()
public NewVersionWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -6,7 +6,7 @@ namespace System.Application.UI.Views.Windows
{
public class ScriptStoreWindow : FluentWindow
{
public ScriptStoreWindow()
public ScriptStoreWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -63,7 +63,7 @@
<DockPanel>
<Image Source="/Application/UI/Assets/AppResources/avater.jpg" Width="184" Height="184"/>
<StackPanel Orientation="Vertical" Margin="16,0,0,0">
<Button Content="{ReflectionBinding Path=Res.UploadYourAvatar,Mode=OneWay,Source={x:Static resx:R.Current}}"
<Button Content="{ReflectionBinding Path=Res.RefreshSteamAvatar,Mode=OneWay,Source={x:Static resx:R.Current}}"
Opacity="0"
IsEnabled="False"
Classes="SecondaryMin MariginButton WidthUnify"/>
@@ -71,13 +71,13 @@
Margin="0,0,0,32"
Opacity="0"
FontSize="12"
Text="{ReflectionBinding Path=Res.UploadYourAvatarDesc,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
Text="{ReflectionBinding Path=Res.RefreshSteamAvatarDesc,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<Button Classes="SecondaryMin MariginButton"
IsEnabled="False"
Content="{ReflectionBinding Path=Res.RefreshSteamAvatar,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
Content="{ReflectionBinding Path=Res.UploadYourAvatar,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
<TextBlock FontSize="12"
TextWrapping="Wrap"
Text="{ReflectionBinding Path=Res.RefreshSteamAvatarDesc,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
Text="{ReflectionBinding Path=Res.UploadYourAvatarDesc,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
</StackPanel>
</DockPanel>
<Grid>
@@ -10,7 +10,7 @@ namespace System.Application.UI.Views.Windows
{
public class UserProfileWindow : FluentWindow
{
public UserProfileWindow()
public UserProfileWindow() : base()
{
InitializeComponent();
#if DEBUG
@@ -36,7 +36,7 @@ namespace System.Application.UI.Views.Windows
{
if (DataContext is UserProfileWindowViewModel vm && vm.IsModify && !vm.IsComplete)
{
// 有修改时,如果关闭窗口,则需二次确认
// 有修改时,如果关闭窗口,则需二次确认
e.Cancel = true;
var r = await MessageBoxCompat.ShowAsync(AppResources.UnsavedEditingWillBeDiscarded, AppResources.Warning, MessageBoxButtonCompat.OKCancel);
if (r == MessageBoxResultCompat.OK)
@@ -4,6 +4,8 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:System.Application.UI.ViewModels;assembly=System.Application.SteamTools.Client.Desktop"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls;assembly=System.Application.SteamTools.Client.Desktop.Avalonia"
xmlns:ms="clr-namespace:System.Application.Models.Settings;assembly=System.Application.SteamTools.Client.Desktop"
FontFamily="{ReflectionBinding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
mc:Ignorable="d"
d:DesignWidth="800" d:DesignHeight="600"
Width="800" Height="600"
@@ -25,10 +27,12 @@
</Image>-->
<ExperimentalAcrylicBorder Opacity="{StaticResource ContentOpacity}">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.80" TintOpacity="1"/>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}"
MaterialOpacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}" TintOpacity="1"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
<controls:WebView3 x:Name="webView"/>
<controls:ProgressRing IsIndeterminate="True" HorizontalAlignment="Stretch" Height="100" Width="100" IsVisible="{Binding IsLoading}" />
</Panel>
</DockPanel>
</Window>
@@ -2,11 +2,18 @@ using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using CefNet;
using CefNet.Avalonia;
using CefNet.JSInterop;
using CefNet.Net;
using CefSharp;
using ReactiveUI;
using System.Application.Services;
using System.Application.UI.Resx;
using System.Application.UI.ViewModels;
using System.Application.UI.Views.Controls;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using static System.Application.Services.CloudService.Constants;
namespace System.Application.UI.Views.Windows
@@ -16,7 +23,7 @@ namespace System.Application.UI.Views.Windows
readonly WebView3 webView;
bool disposedValue;
public WebView3Window()
public WebView3Window() : base()
{
InitializeComponent();
#if DEBUG
@@ -26,37 +33,196 @@ namespace System.Application.UI.Views.Windows
webView.InitialUrl = WebView3WindowViewModel.AboutBlank;
webView.Opacity = 0;
webView.DocumentTitleChanged += WebView_DocumentTitleChanged;
webView.LoadingStateChange += WebView_LoadingStateChange;
}
CancellationTokenSource? cts;
/// <summary>
/// 第一次 WebView 加载超时检查
/// </summary>
/// <param name="vm"></param>
async void FirstWebViewLoadingTimeoutInspect(WebView3WindowViewModel vm)
{
if (cts == null)
{
cts = new();
var isDelayed = false;
try
{
await Task.Delay(vm.Timeout, cts.Token);
isDelayed = true;
}
catch (OperationCanceledException)
{
}
if (isDelayed && vm.IsLoading)
{
webView.Stop();
Hide();
await MessageBoxCompat.ShowAsync(
vm.TimeoutErrorMessage!,
vm.Title,
MessageBoxButtonCompat.OKCancel);
Close();
}
}
}
bool isFirstWebViewLoading;
//#if DEBUG
// bool isShowDevTools;
//#endif
private async void WebView_LoadingStateChange(object? sender, LoadingStateChangeEventArgs e)
{
//#if DEBUG
// if (!isShowDevTools)
// {
// webView.ShowDevTools();
// isShowDevTools = true;
// }
//#endif
if (DataContext is WebView3WindowViewModel vm)
{
if (!isFirstWebViewLoading)
{
isFirstWebViewLoading = true;
if (!string.IsNullOrWhiteSpace(vm.TimeoutErrorMessage))
{
FirstWebViewLoadingTimeoutInspect(vm);
}
}
if (!e.Busy)
{
if (loginUsingSteamClientState == LoginUsingSteamClientState.Loading)
{
var frame = webView.GetMainFrame();
if (frame == null)
{
LoginUsingSteamClientFinishNavigate(vm);
}
try
{
dynamic scriptable = await frame.GetScriptableObjectAsync(CancellationToken.None).ConfigureAwait(true);
scriptable.window.eval("function V_SetCookie() {} function V_GetCookie() {}");
scriptable.window.LoginUsingSteamClient("https://steamcommunity.com");
loginUsingSteamClientState = LoginUsingSteamClientState.Success;
}
catch (Exception ex)
{
#if DEBUG
Log.Error(nameof(WebView3Window), ex, "JSInterop fail.");
#endif
LoginUsingSteamClientFinishNavigate(vm);
}
}
else if (loginUsingSteamClientState == LoginUsingSteamClientState.Success)
{
LoginUsingSteamClientFinishNavigate(vm);
}
else
{
if (webView.Opacity != 1) webView.Opacity = 1;
if (vm.IsLoading)
{
vm.IsLoading = false;
}
}
}
}
}
void Navigate(string url)
{
if (webView.BrowserObject == null)
{
webView.InitialUrl = url;
}
else
{
webView.Navigate(url);
}
}
void LoginUsingSteamClientFinishNavigate(WebView3WindowViewModel? vm = null)
{
loginUsingSteamClientState = LoginUsingSteamClientState.None;
if (vm == null && DataContext is WebView3WindowViewModel vm2) vm = vm2;
Navigate(vm?.Url ?? WebView3WindowViewModel.AboutBlank);
}
static Task? mGetLoginUsingSteamClientCookiesAsync;
static async Task GetLoginUsingSteamClientCookiesAsync()
{
var value = await ISteamService.Instance.GetLoginUsingSteamClientCookiesAsync(runasInvoker: DI.Platform == Platform.Windows);
if (value != default)
{
var url = value.uri.ToString();
var cookies = value.cookies;
var manager = CefRequestContext.GetGlobalContext().GetCookieManager(null);
foreach (Cookie item in cookies)
{
var cookie = new CefNetCookie(item.Name, item.Value);
var setCookieResult = await manager.SetCookieAsync(url, cookie);
if (item.Name == "steamLoginSecure" && !setCookieResult)
{
return;
}
}
}
}
async void GetLoginUsingSteamClientCookies()
{
if (mGetLoginUsingSteamClientCookiesAsync == null)
mGetLoginUsingSteamClientCookiesAsync = GetLoginUsingSteamClientCookiesAsync();
await mGetLoginUsingSteamClientCookiesAsync;
LoginUsingSteamClientFinishNavigate();
}
LoginUsingSteamClientState loginUsingSteamClientState;
protected override void OnDataContextChanged(EventArgs e)
{
base.OnDataContextChanged(e);
if (DataContext is WebView3WindowViewModel vm)
{
vm.Close += Close;
if (!string.IsNullOrWhiteSpace(vm.Title))
webView.DocumentTitleChanged -= WebView_DocumentTitleChanged;
if (vm.UseLoginUsingSteamClient)
{
loginUsingSteamClientState = LoginUsingSteamClientState.Loading;
Navigate("https://steamcommunity.com/login/home/?goto=my/profile");
}
else if (vm.UseLoginUsingSteamClientV2)
{
loginUsingSteamClientState = LoginUsingSteamClientState.Loading;
GetLoginUsingSteamClientCookies();
}
vm.WhenAnyValue(x => x.Url).WhereNotNull().Subscribe(x =>
{
if (x == WebView3WindowViewModel.AboutBlank)
if (loginUsingSteamClientState == default)
{
webView.Opacity = 0;
}
else if (IsHttpUrl(x))
{
if (x.Contains("steampp.net"))
x = string.Format(
x + "?theme={0}&language={1}",
CefNetApp.GetTheme(),
R.Language);
if (webView.Opacity != 1) webView.Opacity = 1;
if (webView.BrowserObject == null)
if (x == WebView3WindowViewModel.AboutBlank)
{
webView.InitialUrl = x;
webView.Opacity = 0;
}
else
else if (IsHttpUrl(x))
{
webView.Navigate(x);
if (x.StartsWith("https://steampp.net", StringComparison.OrdinalIgnoreCase))
x = string.Format(
x + "?theme={0}&language={1}",
CefNetApp.GetTheme(),
R.Language);
//if (webView.Opacity != 1) webView.Opacity = 1;
Navigate(x);
}
}
}).AddTo(vm);
vm.WhenAnyValue(x => x.StreamResponseFilterUrls).Subscribe(x => webView.StreamResponseFilterUrls = x).AddTo(vm);
vm.WhenAnyValue(x => x.FixedSinglePage).Subscribe(x => webView.FixedSinglePage = x).AddTo(vm);
vm.WhenAnyValue(x => x.IsSecurity).Subscribe(x => webView.IsSecurity = x).AddTo(vm);
webView.OnStreamResponseFilterResourceLoadComplete += vm.OnStreamResponseFilterResourceLoadComplete;
}
}
@@ -92,6 +258,13 @@ namespace System.Application.UI.Views.Windows
// TODO: 释放托管状态(托管对象)
if (webView != null)
{
cts?.Cancel();
webView.DocumentTitleChanged -= WebView_DocumentTitleChanged;
webView.LoadingStateChange -= WebView_LoadingStateChange;
if (DataContext is WebView3WindowViewModel vm)
{
webView.OnStreamResponseFilterResourceLoadComplete -= vm.OnStreamResponseFilterResourceLoadComplete;
}
((IDisposable)webView).Dispose();
}
if (DataContext is IDisposable d)
@@ -119,5 +292,12 @@ namespace System.Application.UI.Views.Windows
Dispose(disposing: true);
GC.SuppressFinalize(this);
}
enum LoginUsingSteamClientState
{
None,
Loading,
Success,
}
}
}
@@ -0,0 +1,46 @@
// Copyright © 2017 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
// https://github.com/cefsharp/CefSharp/blob/v89.0.170/CefSharp/AsyncExtensions.cs
using CefNet;
using CefNet.Net;
using System;
using System.Threading.Tasks;
namespace CefSharp
{
public static class AsyncExtensions
{
/// <summary>
/// Sets a cookie given a valid URL and explicit user-provided cookie attributes.
/// This function expects each attribute to be well-formed. It will check for disallowed
/// characters (e.g. the ';' character is disallowed within the cookie value attribute) and will return false without setting
/// </summary>
/// <param name="cookieManager">cookie manager</param>
/// <param name="url">The cookie URL. If an empty string is provided, any URL will be matched.</param>
/// <param name="cookie">the cookie to be set</param>
/// <returns>returns false if the cookie cannot be set (e.g. if illegal charecters such as ';' are used);
/// otherwise task that represents the set operation. The value of the TResult parameter contains a bool to indicate success.</returns>
public static Task<bool> SetCookieAsync(this CefCookieManager cookieManager, string url, CefNetCookie cookie)
{
if (cookieManager == null)
{
throw new NullReferenceException("cookieManager");
}
if (cookieManager.IsDisposed)
{
throw new ObjectDisposedException("cookieManager");
}
var callback = new TaskSetCookieCallback();
if (cookieManager.SetCookie(url, cookie, callback))
{
return callback.Task;
}
//There was a problem setting cookies
return Task.FromResult(false);
}
}
}
@@ -0,0 +1,60 @@
// Copyright © 2015 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
// https://github.com/cefsharp/CefSharp/blob/v89.0.170/CefSharp/Callback/TaskSetCookieCallback.cs
using CefNet;
using CefSharp.Internals;
using System.Threading.Tasks;
namespace CefSharp
{
/// <summary>
/// Provides a callback implementation of <see cref="ISetCookieCallback"/>.
/// </summary>
public class TaskSetCookieCallback : CefSetCookieCallback
{
private readonly TaskCompletionSource<bool> taskCompletionSource;
private bool onComplete; //Only ever accessed on the same CEF thread, so no need for thread safety
/// <summary>
/// Default constructor
/// </summary>
public TaskSetCookieCallback()
{
taskCompletionSource = new TaskCompletionSource<bool>();
}
protected override void OnComplete(bool success)
{
onComplete = true;
taskCompletionSource.TrySetResultAsync(success);
}
/// <summary>
/// Task used to await this callback
/// </summary>
public Task<bool> Task
{
get { return taskCompletionSource.Task; }
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
var task = taskCompletionSource.Task;
//If onComplete is false then ISetCookieCallback.OnComplete was never called,
//so we'll set the result to false. Calling TrySetResultAsync multiple times
//can result in the issue outlined in https://github.com/cefsharp/CefSharp/pull/2349
if (onComplete == false && task.IsCompleted == false)
{
taskCompletionSource.TrySetResultAsync(false);
}
}
base.Dispose(disposing);
}
}
}
@@ -0,0 +1,31 @@
// Copyright © 2014 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
// https://github.com/cefsharp/CefSharp/blob/v89.0.170/CefSharp/Internals/TaskExtensions.cs
using System.Threading;
using System.Threading.Tasks;
namespace CefSharp.Internals
{
/// <summary>
/// TaskExtension based on the following
/// https://github.com/ChadBurggraf/parallel-extensions-extras/blob/master/Extensions/TaskExtrasExtensions.cs
/// https://github.com/ChadBurggraf/parallel-extensions-extras/blob/ec803e58eee28c698e44f55f49c5ad6671b1aa58/Extensions/TaskCompletionSourceExtensions.cs
/// </summary>
internal static class TaskExtensions
{
/// <summary>
/// Set the TaskCompletionSource in an async fashion. This prevents the Task Continuation being executed sync on the same thread
/// This is required otherwise contintinuations will happen on CEF UI threads
/// </summary>
/// <typeparam name="TResult">Generic param</typeparam>
/// <param name="taskCompletionSource">tcs</param>
/// <param name="result">result</param>
public static void TrySetResultAsync<TResult>(this TaskCompletionSource<TResult> taskCompletionSource, TResult result)
{
Task.Factory.StartNew(delegate
{ taskCompletionSource.TrySetResult(result); }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
}
}
}
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>System</RootNamespace>
<SignAssembly>false</SignAssembly>
<!--(SignAssembly)对此程序集进行签名会导致编译失败(CompileAvaloniaXamlTask)-->
<AssemblyName>System.Application.SteamTools.Client.Desktop.Avalonia</AssemblyName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
@@ -40,17 +41,17 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.999-cibuild0013745-beta" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.999-cibuild0013745-beta" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.999-cibuild0013745-beta" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.999-cibuild0013745-beta" />
<PackageReference Include="Avalonia" Version="0.10.999-cibuild0013932-beta" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.999-cibuild0013932-beta" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.999-cibuild0013932-beta" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.999-cibuild0013932-beta" />
<PackageReference Include="Avalonia.Xaml.Behaviors" Version="0.10.0" />
<!--<PackageReference Include="CefNet.Avalonia" Version="88.1.21022.1657" />-->
<PackageReference Include="LibVLCSharp.Avalonia" Version="3.5.0" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.999-cibuild0013745-beta" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.999-cibuild0013932-beta" />
</ItemGroup>
<ItemGroup>
@@ -60,5 +61,8 @@
<Compile Update="Application\UI\Views\Pages\Settings\Settings_General.axaml.cs">
<DependentUpon>Settings_General.axaml</DependentUpon>
</Compile>
<Compile Update="Application\UI\Views\Windows\GameListPage\EditAppInfoWindow.axaml.cs">
<DependentUpon>EditAppInfoWindow.axaml</DependentUpon>
</Compile>
</ItemGroup>
</Project>
@@ -0,0 +1,16 @@
using System.Application.Services;
namespace System.Application
{
/// <summary>
/// 使用单元测试进行检查依赖注入关系是否配置正确
/// </summary>
static class DISafeGet
{
public static ISteamService GetLoginUsingSteamClientAuth()
{
Startup.Init(DILevel.HttpClientFactory | DILevel.Steam);
return ISteamService.Instance;
}
}
}
@@ -0,0 +1,46 @@
using NLog;
using System;
using System.Application;
using System.Application.UI;
using System.CommandLine;
using System.CommandLine.Invocation;
using System.IO;
using System.Linq;
using static System.Application.Program;
using Process = System.Diagnostics.Process;
var logDirPath = InitLogDir("_console");
logger = LogManager.GetCurrentClassLogger();
if (!args.Any())
{
var mainFilePath = AppHelper.ProgramPath;
var endsWithMark = DI.Platform == Platform.Windows ? ".console.exe" : ".console";
if (mainFilePath.EndsWith(endsWithMark, StringComparison.OrdinalIgnoreCase))
{
mainFilePath = mainFilePath.Substring(0, mainFilePath.Length - endsWithMark.Length);
if (DI.Platform == Platform.Windows) mainFilePath += ".exe";
if (File.Exists(mainFilePath))
{
Process.Start(mainFilePath);
return 0;
}
}
}
var rootCommand = new RootCommand("命令行工具(Command Line Tools/CLT)");
var glusca = new Command("GetLoginUsingSteamClientAuth", "获取 Steam 客户端自动登录数据");
glusca.AddAlias("glusca");
glusca.Handler = CommandHandler.Create(async () =>
{
var s = DISafeGet.GetLoginUsingSteamClientAuth();
var r = await s.GetLoginUsingSteamClientAuthAsync(false);
var r2 = Serializable.SMPB64U(r);
Console.WriteLine(r2);
});
rootCommand.AddCommand(glusca);
var r = rootCommand.InvokeAsync(args).Result;
return r;
@@ -0,0 +1,86 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>System.Application</RootNamespace>
<AssemblyName>Steam++.Console</AssemblyName>
<DefineConstants>CONSOLEAPP;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<DefineConstants>WINDOWS;$(DefineConstants)</DefineConstants>
<ApplicationIcon>..\ST.Client.Desktop.Avalonia\Application\UI\Assets\Icon.ico</ApplicationIcon>
<!--<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>-->
<Platforms>AnyCPU;x86</Platforms>
<PlatformTarget>x86</PlatformTarget>
<!-- 注意:RuntimeIdentifier win-x86 会导致亚克力效果会丢失 -->
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
<!--<UseWindowsForms>false</UseWindowsForms>-->
<!--<UseWPF>false</UseWPF>-->
</PropertyGroup>
<PropertyGroup Condition=" $(RuntimeIdentifier.Contains(`osx`)) Or ('$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<DefineConstants>MAC;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" $(DefineConstants.Contains(`PUBLISH`)) ">
<SelfContained>true</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
<!--目前裁剪存在问题,禁用-->
<PublishTrimmed>false</PublishTrimmed>
<TrimMode>link</TrimMode>
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
<!--剪裁框架库功能 https://docs.microsoft.com/zh-cn/dotnet/core/deploying/trimming-options#trimming-framework-library-features -->
<DebuggerSupport>false</DebuggerSupport>
<EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
<EnableUnsafeUTF7Encoding>false</EnableUnsafeUTF7Encoding>
<SuppressTrimAnalysisWarnings>false</SuppressTrimAnalysisWarnings>
<EventSourceSupport>false</EventSourceSupport>
<HttpActivityPropagationSupport>false</HttpActivityPropagationSupport>
<UseSystemResourceKeys>true</UseSystemResourceKeys>
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\Startup2.cs" />
<Compile Include="..\Common.CoreLib\Properties\AssemblyInfo.cs">
<Link>Properties\AssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\ST\Properties\InternalsVisibleTo.cs">
<Link>Properties\InternalsVisibleTo.cs</Link>
</Compile>
<Compile Include="..\ST.Client.Desktop.Avalonia.App\Program.InitLogDir.cs">
<Link>Program.InitLogDir.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ST.Client.Desktop.Avalonia\ST.Client.Desktop.Avalonia.csproj"/>
<ProjectReference Include="..\ST.Client.Desktop\ST.Client.Desktop.csproj"/>
<ProjectReference Include="..\Common.CoreLib\Common.CoreLib.csproj"/>
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<ProjectReference Include="..\ST.Client.Desktop.Windows\ST.Client.Desktop.Windows.csproj"/>
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`osx`)) Or ('$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<ProjectReference Include="..\ST.Client.Desktop.Mac\ST.Client.Desktop.Mac.csproj"/>
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`linux`)) Or ('$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' == 'true' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<ProjectReference Include="..\ST.Client.Desktop.Linux\ST.Client.Desktop.Linux.csproj"/>
</ItemGroup>
<ItemGroup Condition=" $(RuntimeIdentifier.Contains(`win`)) Or ('$(OS)' == 'Windows_NT' And !$(DefineConstants.Contains(`PUBLISH`))) ">
<!--Win8.1/10的开始菜单磁贴配置-->
<None Include="..\..\Resources\AppIcon\visualelementsmanifest.xml">
<Link>Steam++.Console.visualelementsmanifest.xml</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>System.Application</RootNamespace>
<AssemblyName>System.Application.SteamTools.Client.Desktop.Linux</AssemblyName>
</PropertyGroup>
@@ -0,0 +1,9 @@
namespace System.Application.Services.Implementation
{
partial class LinuxDesktopPlatformServiceImpl
{
public void OpenDesktopIconsSettings()
{
}
}
}
@@ -1,10 +1,10 @@
using System.Application.Models;
using System.Application.Models;
using System.Diagnostics;
using System.IO;
namespace System.Application.Services.Implementation
{
internal sealed class LinuxDesktopPlatformServiceImpl : IDesktopPlatformService
internal sealed partial class LinuxDesktopPlatformServiceImpl : IDesktopPlatformService
{
public void SetResizeMode(IntPtr hWnd, int value)
{
@@ -15,6 +15,10 @@ namespace System.Application.Services.Implementation
return string.Empty;
}
public void OpenFolder(string dirPath)
{
}
public const string kate = "kate";
public const string vi = "vi";
@@ -23,6 +27,11 @@ namespace System.Application.Services.Implementation
return vi;
}
public void SetSystemSessionEnding(Action action)
{
}
public void SetBootAutoStart(bool isAutoStart, string name)
{
}
@@ -58,7 +67,16 @@ namespace System.Application.Services.Implementation
public void SetLightOrDarkThemeFollowingSystem(bool enable)
{
}
public Process StartAsInvoker(string fileName)
{
return Process.Start(fileName);
}
public Process? StartAsInvoker(ProcessStartInfo startInfo)
{
return Process.Start(startInfo);
}
}
}
@@ -1,9 +1,10 @@
<!--<Project Sdk="Microsoft.NET.Sdk">-->
<Project Sdk="MSBuild.Sdk.Extras">
<Project Sdk="Microsoft.NET.Sdk">
<!--<Project Sdk="MSBuild.Sdk.Extras">-->
<PropertyGroup>
<!--<TargetFramework>net6.0-macos</TargetFramework>-->
<TargetFrameworks>Xamarin.Mac20;netstandard2.1</TargetFrameworks>
<!--<TargetFrameworks>Xamarin.Mac20;net5.0</TargetFrameworks>-->
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>System.Application</RootNamespace>
<AssemblyName>System.Application.SteamTools.Client.Desktop.Mac</AssemblyName>
</PropertyGroup>
@@ -23,7 +24,7 @@
<DefineConstants>XAMARIN_MAC;$(DefineConstants)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" $(TargetFramework.StartsWith('netstandard')) ">
<PropertyGroup Condition=" $(TargetFramework.StartsWith('netstandard')) OR $(TargetFramework.StartsWith('net5')) OR $(TargetFramework.EndsWith('net6.0')) ">
<DefineConstants>MONO_MAC;$(DefineConstants)</DefineConstants>
</PropertyGroup>
@@ -43,13 +44,13 @@
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('Xamarin.Mac20')) ">
<PackageReference Include="nor0x.AppCenter" Version="4.1.0.1-XMAC"/>
<PackageReference Include="nor0x.AppCenter.Analytics" Version="4.1.0.1-XMAC"/>
<PackageReference Include="nor0x.AppCenter.Crashes" Version="4.1.0.1-XMAC"/>
<PackageReference Include="nor0x.AppCenter" Version="4.1.0.1-XMAC" />
<PackageReference Include="nor0x.AppCenter.Analytics" Version="4.1.0.1-XMAC" />
<PackageReference Include="nor0x.AppCenter.Crashes" Version="4.1.0.1-XMAC" />
</ItemGroup>
<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) ">
<PackageReference Include="MonoMac.NetStandard" Version="0.0.4"/>
<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) OR $(TargetFramework.StartsWith('net5')) OR $(TargetFramework.EndsWith('net6.0')) ">
<PackageReference Include="MonoMac.NetStandard" Version="0.0.4" />
</ItemGroup>
<!--<ItemGroup Condition=" '$(OS)' == 'Windows_NT' ">
@@ -67,14 +68,14 @@
</ItemGroup>-->
<ItemGroup>
<ProjectReference Include="..\ST.Client.Desktop\ST.Client.Desktop.csproj"/>
<ProjectReference Include="..\ST.Client.Desktop\ST.Client.Desktop.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug' And Exists('$(MSBuildProjectDirectory)\..\..\appcenter-secret-mac-debug.pfx')">
<EmbeddedResource Include="..\..\appcenter-secret-mac-debug.pfx" Link="Resources\547E2811"/>
<EmbeddedResource Include="..\..\appcenter-secret-mac-debug.pfx" Link="Resources\547E2811" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Release' And Exists('$(MSBuildProjectDirectory)\..\..\appcenter-secret-mac-release.pfx')">
<EmbeddedResource Include="..\..\appcenter-secret-mac-release.pfx" Link="Resources\93850BFE"/>
<EmbeddedResource Include="..\..\appcenter-secret-mac-release.pfx" Link="Resources\93850BFE" />
</ItemGroup>
</Project>
@@ -0,0 +1,9 @@
namespace System.Application.Services.Implementation
{
partial class MacDesktopPlatformServiceImpl
{
public void OpenDesktopIconsSettings()
{
}
}
}
@@ -1,4 +1,4 @@
#if MONO_MAC
#if MONO_MAC
using MonoMac.Foundation;
#elif XAMARIN_MAC
using Foundation;
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
namespace System.Application.Services.Implementation
{
internal sealed class MacDesktopPlatformServiceImpl : IDesktopPlatformService
internal sealed partial class MacDesktopPlatformServiceImpl : IDesktopPlatformService
{
public void SetResizeMode(IntPtr hWnd, int value)
{
@@ -31,6 +31,16 @@ namespace System.Application.Services.Implementation
p?.Close();
}
public void SetSystemSessionEnding(Action action)
{
}
public void OpenFolder(string dirPath)
{
}
public string? GetFileName(TextReaderProvider provider)
{
switch (provider)
@@ -148,5 +158,15 @@ namespace System.Application.Services.Implementation
public void SetLightOrDarkThemeFollowingSystem(bool enable)
{
}
public Process StartAsInvoker(string fileName)
{
return Process.Start(fileName);
}
public Process? StartAsInvoker(ProcessStartInfo startInfo)
{
return Process.Start(startInfo);
}
}
}
+2 -2
View File
@@ -1,4 +1,4 @@
#if MONO_MAC
#if MONO_MAC
using MonoMac.AppKit;
using MonoMac.Foundation;
#elif XAMARIN_MAC
@@ -60,7 +60,7 @@ namespace System.Application.UI
/// <param name="notification"></param>
public override void DidFinishLaunching(NSNotification notification)
{
#if !NETSTANDARD
#if !NETSTANDARD && !NET5_0 && !NET6_0
VisualStudioAppCenterSDK.Init();
#endif
@@ -2,7 +2,7 @@
<PropertyGroup>
<!--<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>-->
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<!--<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>-->
<RootNamespace>System.Application</RootNamespace>
<!--<UseWindowsForms>false</UseWindowsForms>-->
@@ -1,4 +1,4 @@
using Microsoft.Win32;
using Microsoft.Win32;
using System.Application.Models;
using System.Application.UI;
using System.Management;
@@ -42,9 +42,8 @@ namespace System.Application.Services.Implementation
public void SetLightOrDarkThemeFollowingSystem(bool enable)
{
if (Environment.OSVersion.Version.Major < 10) return;
if (Environment.OSVersion.Version.Major == 10 &&
Environment.OSVersion.Version.Build < 18282) return;
var major = Environment.OSVersion.Version.Major;
if (major < 10 || major == 10 && Environment.OSVersion.Version.Build < 18282) return;
var currentUser = WindowsIdentity.GetCurrent()?.User;
if (currentUser == null) return;
@@ -0,0 +1,22 @@
using System.Diagnostics;
namespace System.Application.Services.Implementation
{
partial class WindowsDesktopPlatformServiceImpl
{
#region rundll32 command list
public const string OpenDesktopIconsSettingsCommandArguments = "shell32.dll,Control_RunDLL desk.cpl,,0";
public const string OpenGameControllersCommandArguments = "shell32.dll,Control_RunDLL joy.cpl";
#endregion
public void OpenDesktopIconsSettings()
{
Process.Start(new ProcessStartInfo
{
FileName = "rundll32.exe",
Arguments = OpenDesktopIconsSettingsCommandArguments,
UseShellExecute = true,
});
}
}
}
@@ -135,6 +135,15 @@ namespace System.Application.Services.Implementation
}
}
public void SetSystemSessionEnding(Action action)
{
Microsoft.Win32.SystemEvents.SessionEnding += (sender, e) =>
{
//IDesktopAppService.Instance.CompositeDisposable.Dispose();
action.Invoke();
};
}
static string? GetFullPath(string s)
{
if (!string.IsNullOrWhiteSpace(s))
@@ -164,6 +173,17 @@ namespace System.Application.Services.Implementation
static readonly Lazy<(byte[] key, byte[] iv)> mMachineSecretKey = IDesktopPlatformService.GetMachineSecretKey(GetMachineSecretKey);
public (byte[] key, byte[] iv) MachineSecretKey => mMachineSecretKey.Value;
public Process StartAsInvoker(string fileName)
{
return Process.Start($"/trustlevel:0x20000 \"{fileName}\"");
}
public Process? StartAsInvoker(ProcessStartInfo startInfo)
{
startInfo.FileName = $"/trustlevel:0x20000 \"{startInfo.FileName}\"";
return Process.Start(startInfo);
}
}
}
#pragma warning restore CA1416 // 验证平台兼容性
+119 -119
View File
@@ -1,125 +1,125 @@
using System.Application.Services;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Security;
using System.Threading.Tasks;
using System.Windows;
using static System.Application.KeyConstants;
//using System.Application.Services;
//using System.Collections.Generic;
//using System.Diagnostics;
//using System.IO;
//using System.Linq;
//using System.Security;
//using System.Threading.Tasks;
//using System.Windows;
//using static System.Application.KeyConstants;
namespace System.Application
{
/// <summary>
/// 迁移
/// </summary>
public static class Migrations
{
/// <summary>
/// 获取正在运行的V1版本进程
/// </summary>
/// <returns></returns>
public static IEnumerable<Process> GetRunningV1Processes()
{
var query = from p in Process.GetProcesses()
where p.ProcessName == "Steam++"
let filePath = p.MainModule?.FileName
where !string.IsNullOrWhiteSpace(filePath)
let fileVersionInfo = FileVersionInfo.GetVersionInfo(filePath).FileVersion.TryParseVersion()
where fileVersionInfo != null && fileVersionInfo.Major == 1
select p;
return query;
}
//namespace System.Application
//{
// /// <summary>
// /// 迁移
// /// </summary>
// public static class Migrations
// {
// /// <summary>
// /// 获取正在运行的V1版本进程
// /// </summary>
// /// <returns></returns>
// public static IEnumerable<Process> GetRunningV1Processes()
// {
// var query = from p in Process.GetProcesses()
// where p.ProcessName == "Steam++"
// let filePath = p.MainModule?.FileName
// where !string.IsNullOrWhiteSpace(filePath)
// let fileVersionInfo = FileVersionInfo.GetVersionInfo(filePath).FileVersion.TryParseVersion()
// where fileVersionInfo != null && fileVersionInfo.Major == 1
// select p;
// return query;
// }
/// <summary>
/// 当前正在运行V1版本
/// </summary>
public static bool IsRunningV1 => GetRunningV1Processes().Any();
// /// <summary>
// /// 当前正在运行V1版本
// /// </summary>
// public static bool IsRunningV1 => GetRunningV1Processes().Any();
/// <summary>
/// 检测是否需要从 V1 版本迁移
/// </summary>
/// <returns></returns>
public static (bool needMigrate, Action delete) CheckV1()
{
var paths = new HashSet<string>
{
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
}.AsEnumerable();
paths = paths.Select(x => Path.Combine(x, "rmbgame.net"));
var needMigrate = paths.Any(x => Directory.Exists(x));
void Delete()
{
var processes = GetRunningV1Processes();
if (processes.Any())
{
foreach (var p in processes)
{
p.Kill();
}
IHostsFileService.Instance.RemoveHostsByTag();
}
foreach (var path in paths)
{
if (Directory.Exists(path))
{
Directory.Delete(path, true);
}
}
}
return (needMigrate, Delete);
}
// /// <summary>
// /// 检测是否需要从 V1 版本迁移
// /// </summary>
// /// <returns></returns>
// public static (bool needMigrate, Action delete) CheckV1()
// {
// var paths = new HashSet<string>
// {
// Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
// Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
// }.AsEnumerable();
// paths = paths.Select(x => Path.Combine(x, "rmbgame.net"));
// var needMigrate = paths.Any(x => Directory.Exists(x));
// void Delete()
// {
// var processes = GetRunningV1Processes();
// if (processes.Any())
// {
// foreach (var p in processes)
// {
// p.Kill();
// }
// IHostsFileService.Instance.RemoveHostsByTag();
// }
// foreach (var path in paths)
// {
// if (Directory.Exists(path))
// {
// Directory.Delete(path, true);
// }
// }
// }
// return (needMigrate, Delete);
// }
/// <summary>
/// 删除 V1 版本的配置
/// </summary>
public static void DeleteV1()
{
(var needMigrate, var delete) = CheckV1();
if (needMigrate) delete();
}
// /// <summary>
// /// 删除 V1 版本的配置
// /// </summary>
// public static void DeleteV1()
// {
// (var needMigrate, var delete) = CheckV1();
// if (needMigrate) delete();
// }
/// <summary>
/// 启动时检测从 V1 版本 迁移配置文件等信息
/// </summary>
public static void OnStartFromV1()
{
return; // 当 2.0 Ready 时取消此行
Task.Run(async () =>
{
try
{
var s = IStorage.Instance;
var examined = await s.GetAsync<bool>(EXAMINED_MIGRATE_FROM_V1);
if (!examined)
{
(var needMigrate, var delete) = CheckV1();
if (needMigrate)
{
var r = await MessageBoxCompat.ShowAsync(
"检测到 V1 版本配置文件," +
"如果包含令牌数据,请先手动迁移令牌," +
"如果不存在令牌数据则可直接删除,是否直接删除?",
"警告",
MessageBoxButtonCompat.OKCancel,
MessageBoxImageCompat.Warning);
if (r == MessageBoxResultCompat.OK)
{
delete();
// /// <summary>
// /// 启动时检测从 V1 版本 迁移配置文件等信息
// /// </summary>
// public static void OnStartFromV1()
// {
// return; // 当 2.0 Ready 时取消此行
// Task.Run(async () =>
// {
// try
// {
// var s = IStorage.Instance;
// var examined = await s.GetAsync<bool>(EXAMINED_MIGRATE_FROM_V1);
// if (!examined)
// {
// (var needMigrate, var delete) = CheckV1();
// if (needMigrate)
// {
// var r = await MessageBoxCompat.ShowAsync(
// "检测到 V1 版本配置文件," +
// "如果包含令牌数据,请先手动迁移令牌," +
// "如果不存在令牌数据则可直接删除,是否直接删除?",
// "警告",
// MessageBoxButtonCompat.OKCancel,
// MessageBoxImageCompat.Warning);
// if (r == MessageBoxResultCompat.OK)
// {
// delete();
// 执行迁移成功后,在AppData下写入文件或写入键值对中的一个标记
// 下次启动检查标记,跳过迁移
await s.SetAsync(EXAMINED_MIGRATE_FROM_V1, true);
}
}
}
}
catch (Exception e)
{
Log.Error(nameof(Migrations), e, nameof(OnStartFromV1));
}
});
}
}
}
// // 执行迁移成功后,在AppData下写入文件或写入键值对中的一个标记
// // 下次启动检查标记,跳过迁移
// await s.SetAsync(EXAMINED_MIGRATE_FROM_V1, true);
// }
// }
// }
// }
// catch (Exception e)
// {
// Log.Error(nameof(Migrations), e, nameof(OnStartFromV1));
// }
// });
// }
// }
//}
@@ -1,9 +1,8 @@
using System;
using System.Application.Serialization;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace System.Application.Models.Settings
{
@@ -50,6 +49,17 @@ namespace System.Application.Models.Settings
public static SerializableProperty<IReadOnlyCollection<string>> SupportProxyServicesStatus { get; }
= new SerializableProperty<IReadOnlyCollection<string>>(GetKey(), Providers.Local, new List<string>());
/// <summary>
/// 系统代理模式端口
/// </summary>
public static SerializableProperty<int> SystemProxyPortId { get; }
= new SerializableProperty<int>(GetKey(), Providers.Local, 26501);
/// <summary>
/// 系统代理模式IP
/// </summary>
public static SerializableProperty<string> SystemProxyIp { get; }
= new SerializableProperty<string>(GetKey(), Providers.Local, IPAddress.Loopback.ToString());
/// <summary>
/// 脚本启用状态
@@ -11,7 +11,7 @@ namespace System.Application.Models.Settings
public static class SteamAccountSettings
{
/// <summary>
/// SteamÕ˺ű¸×¢×Öµä
/// Steam账号备注字典
/// </summary>
public static SerializableProperty<IReadOnlyDictionary<long, string?>?> AccountRemarks { get; }
= new SerializableProperty<IReadOnlyDictionary<long, string?>?>(GetKey(), Providers.Local, null);

Some files were not shown because too many files have changed in this diff Show More