Skip to content

Commit

Permalink
Merge branch 'release/v0.12.4'
Browse files Browse the repository at this point in the history
  • Loading branch information
gee1k committed Oct 31, 2019
2 parents 3313a68 + 1170724 commit 174c287
Show file tree
Hide file tree
Showing 28 changed files with 137 additions and 97 deletions.
8 changes: 4 additions & 4 deletions Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PODS:
- Alamofire (5.0.0-rc.2)
- CryptoSwift (1.1.2)
- CryptoSwift (1.1.3)
- MASShortcut (2.4.0)
- Sparkle (1.22.0)
- SwiftyJSON (5.0.0)
Expand Down Expand Up @@ -30,20 +30,20 @@ EXTERNAL SOURCES:

CHECKOUT OPTIONS:
CryptoSwift:
:commit: 4ccfe9034a07af4b153657ba1cdac702ffcf8f2f
:commit: 3e911edb36b57de4fa37ecbb989fd3a0bc8c59b9
:git: https://github.com/krzyzanowskim/CryptoSwift
SwiftyXMLParser:
:commit: bc85162ecee60d6eb94b778648bc4c51e1c4d34f
:git: https://github.com/yahoojapan/SwiftyXMLParser.git

SPEC CHECKSUMS:
Alamofire: f9450d3c7f6bea2ad62e7a541c3e9b186c7991d6
CryptoSwift: 31dacd1f13427439ddae5b5cbaae4c8dbc43047e
CryptoSwift: 6b6e488df0598b3e9fa49254ed1a65e8c1b1e10b
MASShortcut: d9e4909e878661cc42877cc9d6efbe638273ab57
Sparkle: 593ac2e677c07bcb6c3b22d621240e7cbedaab57
SwiftyJSON: 36413e04c44ee145039d332b4f4e2d3e8d6c4db7
SwiftyXMLParser: 8271497e0a37b5c04b0b167c77b4896e36175a21

PODFILE CHECKSUM: d426de3f20f6f6f0df58c0732d6bb48c0d8764b6

COCOAPODS: 1.8.3
COCOAPODS: 1.8.4
8 changes: 8 additions & 0 deletions ReleaseTutorial.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- 1. Download the latest [appcast_pre.xml](https://svend.cc/uPic/appcast_pre.xml)
- 2. Get the dmg's Sparkle signature

```
Pods/Sparkle/bin/sign_update upic.dmg
```
- 3. Fill in the output information to the location of the corresponding version in `appcast_pre.xml`
- 4. Copy the `appcast_pre.xml` content to the `appcast.xml` file.
12 changes: 8 additions & 4 deletions uPic.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@
16EA205C22AF8FB90006FB9C /* ConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16EA205B22AF8FB90006FB9C /* ConfigManager.swift */; };
16F7467422E994A300480A62 /* FinderSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16F7467322E994A300480A62 /* FinderSync.swift */; };
16F7467922E994A300480A62 /* uPicFinderExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 16F7467122E994A300480A62 /* uPicFinderExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
4B66A850235ED44600DED242 /* PreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B66A84F235ED44600DED242 /* PreviewView.swift */; };
68BBB3EF25C92DCAE216A4DF /* AmazonS3Uploader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68BBB5C4550545707614BE4D /* AmazonS3Uploader.swift */; };
68BBB6E5FFBB050D05107413 /* AmazonS3HostConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68BBB8CF2838A67CA1AD438F /* AmazonS3HostConfig.swift */; };
68BBB99780D7F4586458D4F5 /* AmazonS3Util.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68BBB2F5FAEEFFF55935F022 /* AmazonS3Util.swift */; };
Expand Down Expand Up @@ -243,6 +244,7 @@
16F7467322E994A300480A62 /* FinderSync.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FinderSync.swift; sourceTree = "<group>"; };
16F7467522E994A300480A62 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
16F7467622E994A300480A62 /* uPicFinderExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = uPicFinderExtension.entitlements; sourceTree = "<group>"; };
4B66A84F235ED44600DED242 /* PreviewView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreviewView.swift; sourceTree = "<group>"; };
68BBB2F5FAEEFFF55935F022 /* AmazonS3Util.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AmazonS3Util.swift; sourceTree = "<group>"; };
68BBB5C4550545707614BE4D /* AmazonS3Uploader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AmazonS3Uploader.swift; sourceTree = "<group>"; };
68BBB8CF2838A67CA1AD438F /* AmazonS3HostConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AmazonS3HostConfig.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -560,6 +562,7 @@
16ADBE5E22D1D74D00E6C605 /* Views */ = {
isa = PBXGroup;
children = (
4B66A84F235ED44600DED242 /* PreviewView.swift */,
169F074322AF7A3D008E8525 /* StatusMenuController.swift */,
);
path = Views;
Expand Down Expand Up @@ -867,6 +870,7 @@
168A831122B606C000344E77 /* UpYunUploader.swift in Sources */,
165701A122C8A6E600C57EE9 /* Regex.swift in Sources */,
163632F122B274B400805E7F /* Date+Extension.swift in Sources */,
4B66A850235ED44600DED242 /* PreviewView.swift in Sources */,
16995A3622B6026500B1F923 /* UpYunUtil.swift in Sources */,
167DDBED22C76F6600B03357 /* GithubHostConfig.swift in Sources */,
1646B80822C79349009271DF /* GiteeUtil.swift in Sources */,
Expand Down Expand Up @@ -1115,7 +1119,7 @@
CODE_SIGN_IDENTITY = "Mac Developer";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 20191020;
CURRENT_PROJECT_VERSION = 20191031;
DEVELOPMENT_TEAM = W863J6W8DZ;
ENABLE_HARDENED_RUNTIME = YES;
INFOPLIST_FILE = "$(SRCROOT)/uPic/Supporting Files/Info.plist";
Expand All @@ -1124,7 +1128,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.12;
MARKETING_VERSION = 0.12.3;
MARKETING_VERSION = 0.12.4;
PRODUCT_BUNDLE_IDENTIFIER = com.svend.uPic;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -1145,7 +1149,7 @@
CODE_SIGN_IDENTITY = "Mac Developer";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 20191020;
CURRENT_PROJECT_VERSION = 20191031;
DEVELOPMENT_TEAM = W863J6W8DZ;
ENABLE_HARDENED_RUNTIME = YES;
INFOPLIST_FILE = "$(SRCROOT)/uPic/Supporting Files/Info.plist";
Expand All @@ -1154,7 +1158,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.12;
MARKETING_VERSION = 0.12.3;
MARKETING_VERSION = 0.12.4;
PRODUCT_BUNDLE_IDENTIFIER = com.svend.uPic;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down
3 changes: 3 additions & 0 deletions uPic/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ class AppDelegate: NSObject, NSApplicationDelegate {
// Insert code here to initialize your application
ConfigManager.shared.firstSetup()

// Request notification permission
NotificationExt.requestAuthorization()

self.resetNewVersionLaunchAtLogin()

self.setupStatusBar()
Expand Down
29 changes: 20 additions & 9 deletions uPic/Extensions/NotificationExt.swift
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,9 @@ extension NotificationExt: UNUserNotificationCenterDelegate {
notificationCenter.delegate = self
notificationCenter.setNotificationCategories([])

notificationCenter.requestAuthorization(options: [.alert, .sound]) { (success, error) in
if success {
notificationCenter.add(request) { (error) in
if error != nil {
// Handle any errors.
}
}
} else {
// user rejection
notificationCenter.add(request) { (error) in
if error != nil {
// Handle any errors.
}
}

Expand Down Expand Up @@ -156,3 +150,20 @@ extension NotificationExt: NSUserNotificationCenterDelegate {
}

}

extension NotificationExt {
// MARK: 请求通知权限
static func requestAuthorization () {
if #available(OSX 10.14, *) {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { (success, error) in
if success {
// user accept
} else {
// user rejection
}
}
} else {
// Fallback on earlier versions
}
}
}
3 changes: 2 additions & 1 deletion uPic/Models/Weibo/WeiboUploader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ class WeiboUploader: BaseUploader {
static let shared = WeiboUploader()
static let fileExtensions: [String] = ["jpeg", "jpg", "png", "gif", "bmp"]

let url = "http://picupload.service.weibo.com/interface/pic_upload.php?ori=1&mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog"
let url = "https://picupload.weibo.com/interface/pic_upload.php?ori=1&mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog"


func _upload(_ fileUrl: URL?, fileData: Data?) {
guard let host = ConfigManager.shared.getDefaultHost(), let data = host.data else {
Expand Down
2 changes: 1 addition & 1 deletion uPic/PreferencesWindow/Base.lproj/Preferences.storyboard
Original file line number Diff line number Diff line change
Expand Up @@ -915,7 +915,7 @@ Gw
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YZD-zT-qZX">
<rect key="frame" x="345" y="2" width="97" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="️Reset" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="TD4-LI-X9U">
<buttonCell key="cell" type="push" title="️ Reset" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="TD4-LI-X9U">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
Expand Down
10 changes: 10 additions & 0 deletions uPic/PreferencesWindow/ConfigView/ConfigView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,16 @@ class ConfigView: NSView {
// Subclasses override
}

func createHelpBtn(_ paddingRight: Int, _ y: Int, _ url: String) {
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: Int(self.frame.width) - helpBtnWidth - paddingRight, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = url
self.addSubview(helpBtn)
}

func setNextKeyViews() {
if nextKeyViews.count > 1 {
for (index, item) in nextKeyViews.enumerated() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,7 @@ class AliyunConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/aliyun_oss"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/aliyun_oss")
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,7 @@ class AmazonS3ConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/amazon_s3"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/amazon_s3")
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,13 +162,7 @@ class CustomConfigView: ConfigView {

// MARK: help
y = y - gapTop - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/custom"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/custom")

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,7 @@ class GiteeConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/gitee"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/gitee")
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,7 @@ class GithubConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/github"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/github")
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,7 @@ class ImgurConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/imgur"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/imgur")
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -144,13 +144,7 @@ class QiniuConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/qiniu_kodo"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/qiniu_kodo")

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,7 @@ class TencentConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/tencent_cos"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/tencent_cos")
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,7 @@ class UpYunConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/upyun_uss"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/upyun_uss")

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,13 +134,7 @@ class WeiboConfigView: ConfigView {

// MARK: help
y = y - gapTop * 2 - labelHeight
let helpBtn = NSButton(title: "", target: self, action: #selector(openTutorial(_:)))
let helpBtnWidth = Int(helpBtn.frame.width)
helpBtn.frame = NSRect(x: viewWidth - helpBtnWidth * 3 / 2, y: y, width: helpBtnWidth, height: Int(helpBtn.frame.height))
helpBtn.bezelStyle = .helpButton
helpBtn.setButtonType(.momentaryPushIn)
helpBtn.toolTip = "https://blog.svend.cc/upic/tutorials/weibo"
self.addSubview(helpBtn)
super.createHelpBtn(paddingLeft, y, "https://blog.svend.cc/upic/tutorials/weibo")
}

@objc func cookieModeChanged(_ sender: NSButton) {
Expand Down
4 changes: 2 additions & 2 deletions uPic/PreferencesWindow/en.lproj/Preferences.strings
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@
/* Class = "NSTextFieldCell"; title = "💡 HomePage:"; ObjectID = "OjL-Zl-YKD"; */
"OjL-Zl-YKD.title" = "💡 HomePage:";

/* Class = "NSButtonCell"; title = "⚠️Reset"; ObjectID = "TD4-LI-X9U"; */
"TD4-LI-X9U.title" = "⚠️Reset";
/* Class = "NSButtonCell"; title = "⚠️ Reset"; ObjectID = "TD4-LI-X9U"; */
"TD4-LI-X9U.title" = "⚠️ Reset";

/* Class = "NSTextFieldCell"; title = "💸 Donate:"; ObjectID = "Vjv-pA-ffP"; */
"Vjv-pA-ffP.title" = "💸 Donate:";
Expand Down
8 changes: 4 additions & 4 deletions uPic/PreferencesWindow/zh-Hans.lproj/Preferences.strings
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@
/* Class = "NSTextFieldCell"; title = "💡 主页:"; ObjectID = "OjL-Zl-YKD"; */
"OjL-Zl-YKD.title" = "💡 主页:";

/* Class = "NSButtonCell"; title = "⚠️撤销"; ObjectID = "TD4-LI-X9U"; */
"TD4-LI-X9U.title" = "⚠️撤销";
/* Class = "NSButtonCell"; title = "⚠️ 撤销"; ObjectID = "TD4-LI-X9U"; */
"TD4-LI-X9U.title" = "⚠️ 撤销";

/* Class = "NSTextFieldCell"; title = "💸 捐赠:"; ObjectID = "Vjv-pA-ffP"; */
"Vjv-pA-ffP.title" = "💸 捐赠:";
Expand Down Expand Up @@ -122,8 +122,8 @@
/* Class = "NSButtonCell"; title = "重置偏好设置"; ObjectID = "jyI-H7-qN3"; */
"jyI-H7-qN3.title" = "重置偏好设置";

/* Class = "NSViewController"; title = "About"; ObjectID = "k6X-N1-mVu"; */
"k6X-N1-mVu.title" = "About";
/* Class = "NSViewController"; title = "关于"; ObjectID = "k6X-N1-mVu"; */
"k6X-N1-mVu.title" = "关于";

/* Class = "NSTextFieldCell"; title = "/"; ObjectID = "kdM-To-7Hl"; */
"kdM-To-7Hl.title" = "/";
Expand Down
Loading

0 comments on commit 174c287

Please sign in to comment.