From 3c099669657c561a815afdb2f62916fd8c30d890 Mon Sep 17 00:00:00 2001 From: LEO Yoon-Tsaw Date: Thu, 7 Dec 2023 18:13:51 -0500 Subject: [PATCH] Add visionOS support 1. Add visionOS target 2. Changable ring background color 3. Rename to Chinendar 4. Added more Chinese calendar based holidays --- .../project.pbxproj | 444 ++++++++++++++---- .../contents.xcworkspacedata | 2 +- .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcschemes/Chinendar Mac.xcscheme | 20 +- .../xcschemes/Chinendar Vision.xcscheme | 77 +++ .../xcschemes/Chinendar Watch.xcscheme | 26 +- .../xcschemes/Chinendar iOS.xcscheme | 20 +- .../xcschemes/Mac Widget Extension.xcscheme | 22 +- .../xcschemes/Watch Widget Extension.xcscheme | 32 +- .../xcschemes/iOS Widget Extension.xcscheme | 28 +- .../xcdebugger/Breakpoints_v2.xcbkptlist | 0 .../xcschemes/xcschememanagement.plist | 17 +- .../xcdebugger/Breakpoints_v2.xcbkptlist | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcdebugger/Breakpoints_v2.xcbkptlist | 0 .../xcschemes/xcschememanagement.plist | 0 README.md | 6 +- Shared/DataModel/Data.swift | 4 +- Shared/DataModel/MetaLayout.swift | 63 ++- Shared/DataModel/Model.swift | 160 ++++--- Shared/DataModel/PlanetModel.swift | 4 +- Shared/DataModel/ThemeData.swift | 24 +- Shared/Environments.swift | 4 +- Shared/InfoPlist.xcstrings | 4 +- Shared/Locale.swift | 2 +- Shared/Localizable.xcstrings | 69 ++- Shared/Setting/ColorSetting.swift | 36 +- Shared/Setting/Datetime.swift | 31 +- Shared/Setting/Documentation.swift | 110 ++--- Shared/Setting/LayoutSetting.swift | 71 +-- Shared/Setting/Location.swift | 73 +-- Shared/Setting/RingSetting.swift | 102 ++-- Shared/Setting/StatusState.swift | 32 ++ Shared/Setting/ThemesList.swift | 23 +- Shared/Utilities.swift | 4 +- Shared/Views/HoverView.swift | 41 +- Shared/Views/RoundedRect.swift | 2 +- Shared/Views/SwiftUIUtilities.swift | 4 +- Shared/Views/WatchFaceBasics.swift | 18 +- Shared/Views/WatchFaceView.swift | 54 ++- Shared/WatchConnectivity.swift | 2 +- .../Content.imageset/Contents.json | 13 + .../Content.imageset/back.png | Bin 0 -> 5728 bytes .../Back.solidimagestacklayer/Contents.json | 6 + .../AppIcon.solidimagestack/Contents.json | 17 + .../Content.imageset/Contents.json | 13 + .../Content.imageset/top.png | Bin 0 -> 43716 bytes .../Front.solidimagestacklayer/Contents.json | 6 + .../Content.imageset/Contents.json | 13 + .../Content.imageset/middle.png | Bin 0 -> 70034 bytes .../Middle.solidimagestacklayer/Contents.json | 6 + Vision/Assets.xcassets/Contents.json | 6 + .../Image.imageset/Contents.json | 23 + .../Image.imageset/watch icon1x.png | Bin 0 -> 36700 bytes .../Image.imageset/watch icon2x.png | Bin 0 -> 91926 bytes .../Image.imageset/watch icon3x.png | Bin 0 -> 155229 bytes .../Chinendar.entitlements | 0 Vision/Info.plist | 27 ++ Vision/Layout.swift | 107 +++++ Vision/Views/Setting.swift | 73 +++ Vision/Views/WatchFace.swift | 107 +++++ Vision/Views/Welcome.swift | 82 ++++ Vision/layout.txt | 41 ++ Vision/visionApp.swift | 109 +++++ ...ch.entitlements => Chinendar.entitlements} | 0 Watch/Layout.swift | 8 +- Watch/Views/ContentView.swift | 6 +- Watch/Views/DateTimeAdjust.swift | 10 +- Watch/Views/Setting.swift | 2 +- Watch/Views/WatchFace.swift | 2 +- Watch/layout.txt | 2 + Watch/watchApp.swift | 6 +- Widget/Dual.swift | 2 +- Widget/Localizable.xcstrings | 2 +- Widget/Single.swift | 2 +- Widget/TaskGroup.swift | 2 +- Widget/WatchWidgets/Circular.swift | 2 +- Widget/WatchWidgets/CountDown.swift | 2 +- Widget/WatchWidgets/Relevance.swift | 4 +- .../AccentColor.colorset/Contents.json | 11 + iOS/Chinendar.entitlements | 22 + iOS/Layout.swift | 4 +- iOS/Views/Setting.swift | 2 +- iOS/Views/WatchFace.swift | 14 +- iOS/Views/Welcome.swift | 4 +- iOS/iOSApp.swift | 6 +- iOS/layout.txt | 2 + ...ac.entitlements => Chinendar.entitlements} | 0 macOS/Layout.swift | 8 +- macOS/Views/Setting.swift | 59 +-- macOS/Views/WatchFace.swift | 2 +- macOS/Views/Welcome.swift | 4 +- macOS/layout.txt | 2 + macOS/macApp.swift | 8 +- macOS/watchPanel.swift | 4 +- 95 files changed, 1860 insertions(+), 624 deletions(-) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/project.pbxproj (80%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (74%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time Mac.xcscheme => Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Mac.xcscheme (86%) create mode 100644 Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Vision.xcscheme rename Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time Watch.xcscheme => Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Watch.xcscheme (83%) rename Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time iOS.xcscheme => Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar iOS.xcscheme (85%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcshareddata/xcschemes/Mac Widget Extension.xcscheme (86%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcshareddata/xcschemes/Watch Widget Extension.xcscheme (82%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcshareddata/xcschemes/iOS Widget Extension.xcscheme (83%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcuserdata/leo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist (100%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcuserdata/leo.xcuserdatad/xcschemes/xcschememanagement.plist (86%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcuserdata/leoliu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist (100%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcuserdata/leoliu.xcuserdatad/xcschemes/xcschememanagement.plist (100%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcuserdata/leoyoontsaw.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist (100%) rename {Chinese Time.xcodeproj => Chinendar.xcodeproj}/xcuserdata/leoyoontsaw.xcuserdatad/xcschemes/xcschememanagement.plist (100%) create mode 100644 Shared/Setting/StatusState.swift create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/back.png create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Contents.json create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/top.png create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/middle.png create mode 100644 Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json create mode 100644 Vision/Assets.xcassets/Contents.json create mode 100644 Vision/Assets.xcassets/Image.imageset/Contents.json create mode 100644 Vision/Assets.xcassets/Image.imageset/watch icon1x.png create mode 100644 Vision/Assets.xcassets/Image.imageset/watch icon2x.png create mode 100644 Vision/Assets.xcassets/Image.imageset/watch icon3x.png rename iOS/ChineseTimeiOS.entitlements => Vision/Chinendar.entitlements (100%) create mode 100644 Vision/Info.plist create mode 100644 Vision/Layout.swift create mode 100644 Vision/Views/Setting.swift create mode 100644 Vision/Views/WatchFace.swift create mode 100644 Vision/Views/Welcome.swift create mode 100644 Vision/layout.txt create mode 100644 Vision/visionApp.swift rename Watch/{ChineseTimeWatch.entitlements => Chinendar.entitlements} (100%) create mode 100644 iOS/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 iOS/Chinendar.entitlements rename macOS/{ChineseTimeMac.entitlements => Chinendar.entitlements} (100%) diff --git a/Chinese Time.xcodeproj/project.pbxproj b/Chinendar.xcodeproj/project.pbxproj similarity index 80% rename from Chinese Time.xcodeproj/project.pbxproj rename to Chinendar.xcodeproj/project.pbxproj index 7fe0ede..4cb7fd3 100644 --- a/Chinese Time.xcodeproj/project.pbxproj +++ b/Chinendar.xcodeproj/project.pbxproj @@ -32,7 +32,7 @@ 9E90D7EF2A9EABD100855F2C /* Environments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E90D7EE2A9EABD100855F2C /* Environments.swift */; }; 9E90D7F02A9EABD100855F2C /* Environments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E90D7EE2A9EABD100855F2C /* Environments.swift */; }; 9E90D7F12A9EABD100855F2C /* Environments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E90D7EE2A9EABD100855F2C /* Environments.swift */; }; - 9E9889EF2A79EABF0066414A /* watchPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9889EE2A79EABF0066414A /* watchPanel.swift */; }; + 9E9889EF2A79EABF0066414A /* WatchPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9889EE2A79EABF0066414A /* WatchPanel.swift */; }; 9EBFBE332A58A40900DC42AF /* ThemeData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBFBE322A58A40900DC42AF /* ThemeData.swift */; }; 9EBFBE342A58A40900DC42AF /* ThemeData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBFBE322A58A40900DC42AF /* ThemeData.swift */; }; 9EBFBE352A58A40900DC42AF /* ThemeData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBFBE322A58A40900DC42AF /* ThemeData.swift */; }; @@ -51,6 +51,8 @@ B301073D2A0999A900D0A50C /* SourceHanSansKR-Heavy.otf in Resources */ = {isa = PBXBuildFile; fileRef = B301073C2A0999A900D0A50C /* SourceHanSansKR-Heavy.otf */; }; B301073E2A0999A900D0A50C /* SourceHanSansKR-Heavy.otf in Resources */ = {isa = PBXBuildFile; fileRef = B301073C2A0999A900D0A50C /* SourceHanSansKR-Heavy.otf */; }; B30107402A09A0A500D0A50C /* SourceHanSansKR-Heavy.otf in Resources */ = {isa = PBXBuildFile; fileRef = B301073C2A0999A900D0A50C /* SourceHanSansKR-Heavy.otf */; }; + B30CF7642AF827A300B100CF /* visionApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30CF7632AF827A300B100CF /* visionApp.swift */; }; + B30CF7682AF827A400B100CF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B30CF7672AF827A400B100CF /* Assets.xcassets */; }; B32243E22A0D3BF600E7AED5 /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32243E12A0D3BF600E7AED5 /* Layout.swift */; }; B32243E32A0D3BF600E7AED5 /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32243E12A0D3BF600E7AED5 /* Layout.swift */; }; B32243E52A0D8B6C00E7AED5 /* WatchWidgetBasic.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32243E42A0D8B6C00E7AED5 /* WatchWidgetBasic.swift */; }; @@ -80,6 +82,7 @@ B32999302A4F9C8600B71579 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32999282A4F9B7B00B71579 /* LocationManager.swift */; }; B32999312A4F9C8700B71579 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32999282A4F9B7B00B71579 /* LocationManager.swift */; }; B32999322A4F9C8700B71579 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32999282A4F9B7B00B71579 /* LocationManager.swift */; }; + B33635262B02FA7B00BA83F7 /* Setting.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33635252B02FA7B00BA83F7 /* Setting.swift */; }; B34009472A352FEA003F50F7 /* WatchFaceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E1D6E32A0ACD7800F2905A /* WatchFaceView.swift */; }; B34009482A352FEA003F50F7 /* WatchFaceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E1D6E32A0ACD7800F2905A /* WatchFaceView.swift */; }; B34DA20929FDC0B200562449 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34DA20829FDC0B200562449 /* Utilities.swift */; }; @@ -92,9 +95,11 @@ B3515CFF29F6169D00E6BCDC /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F0825C26FAB23500ADBE13 /* Data.swift */; }; B3515D0029F616A000E6BCDC /* PlanetModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2CFF74C270FF940000CECDA /* PlanetModel.swift */; }; B3515D0129F616A200E6BCDC /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = D245D60826FA886200A89044 /* Model.swift */; }; + B356C9042B04460A0017EF03 /* WatchFace.swift in Sources */ = {isa = PBXBuildFile; fileRef = B356C9032B04460A0017EF03 /* WatchFace.swift */; }; B36D2F7A2A0483F800005162 /* WatchFaceBasics.swift in Sources */ = {isa = PBXBuildFile; fileRef = B36D2F782A047A2000005162 /* WatchFaceBasics.swift */; }; B37063A329FAFF3300CC6E57 /* MetaLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B37063A229FAFF3300CC6E57 /* MetaLayout.swift */; }; B37063A429FAFF3300CC6E57 /* MetaLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B37063A229FAFF3300CC6E57 /* MetaLayout.swift */; }; + B38387A92B08319500A04588 /* Welcome.swift in Sources */ = {isa = PBXBuildFile; fileRef = B38387A82B08319500A04588 /* Welcome.swift */; }; B383A6CE2A4D02D8002FADCF /* Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383A6CD2A4D02D8002FADCF /* Single.swift */; }; B383A6CF2A4D02D8002FADCF /* Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383A6CD2A4D02D8002FADCF /* Single.swift */; }; B383A6D12A4D02E2002FADCF /* Dual.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383A6D02A4D02E2002FADCF /* Dual.swift */; }; @@ -103,6 +108,8 @@ B383A6D62A4D1C7B002FADCF /* Relevance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B383A6D32A4D1C7B002FADCF /* Relevance.swift */; }; B383A6D82A4D1EA1002FADCF /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = B383A6D72A4D1EA1002FADCF /* InfoPlist.xcstrings */; }; B383A6ED2A4D1EA2002FADCF /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = B383A6EC2A4D1EA2002FADCF /* Localizable.xcstrings */; }; + B38B52A22B14C5770055569E /* StatusState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B38B52A12B14C5770055569E /* StatusState.swift */; }; + B38B52A32B14C5770055569E /* StatusState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B38B52A12B14C5770055569E /* StatusState.swift */; }; B38CC0492A4F1F1600F4DB9F /* WatchFace.swift in Sources */ = {isa = PBXBuildFile; fileRef = B38CC0482A4F1F1600F4DB9F /* WatchFace.swift */; }; B38E96B12A0D3A82002FD662 /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = D245D60826FA886200A89044 /* Model.swift */; }; B38E96B32A0D3A8A002FD662 /* PlanetModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2CFF74C270FF940000CECDA /* PlanetModel.swift */; }; @@ -111,7 +118,7 @@ B39086012A0314DD00943F2B /* watchApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39086002A0314DD00943F2B /* watchApp.swift */; }; B39086032A0314DD00943F2B /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39086022A0314DD00943F2B /* ContentView.swift */; }; B39086052A0314DD00943F2B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B39086042A0314DD00943F2B /* Assets.xcassets */; }; - B390860B2A0314DD00943F2B /* Chinese Time.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = B39085FE2A0314DD00943F2B /* Chinese Time.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + B390860B2A0314DD00943F2B /* Chinendar.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = B39085FE2A0314DD00943F2B /* Chinendar.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; B39086122A0317CB00943F2B /* RoundedRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39086112A0317CB00943F2B /* RoundedRect.swift */; }; B39086132A0317CB00943F2B /* RoundedRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39086112A0317CB00943F2B /* RoundedRect.swift */; }; B39086142A0317CB00943F2B /* RoundedRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39086112A0317CB00943F2B /* RoundedRect.swift */; }; @@ -123,6 +130,30 @@ B395B5A62A0F1A4A003206E7 /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B395B5A02A0ED7EF003206E7 /* IconView.swift */; }; B395B5A82A0F22CF003206E7 /* IconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B395B5A02A0ED7EF003206E7 /* IconView.swift */; }; B3970CF32A45066C0095F561 /* TextDesp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CC8BF22A0C7E300063DE44 /* TextDesp.swift */; }; + B39B904F2B0178CC0083D05A /* HoverView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F85EAC2A4A5A0B00F8B40B /* HoverView.swift */; }; + B39B90502B0178DF0083D05A /* ThemeData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBFBE322A58A40900DC42AF /* ThemeData.swift */; }; + B39B90512B0178E90083D05A /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = D245D60826FA886200A89044 /* Model.swift */; }; + B39B90522B0178EC0083D05A /* PlanetModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2CFF74C270FF940000CECDA /* PlanetModel.swift */; }; + B39B90532B0178EE0083D05A /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F0825C26FAB23500ADBE13 /* Data.swift */; }; + B39B90542B0178F20083D05A /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32999282A4F9B7B00B71579 /* LocationManager.swift */; }; + B39B90552B0178F50083D05A /* MetaLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B37063A229FAFF3300CC6E57 /* MetaLayout.swift */; }; + B39B90562B0179440083D05A /* WatchFaceBasics.swift in Sources */ = {isa = PBXBuildFile; fileRef = B36D2F782A047A2000005162 /* WatchFaceBasics.swift */; }; + B39B90572B0179470083D05A /* WatchFaceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E1D6E32A0ACD7800F2905A /* WatchFaceView.swift */; }; + B39B90582B01794D0083D05A /* SwiftUIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32243EF2A0DBEF400E7AED5 /* SwiftUIUtilities.swift */; }; + B39B90592B0179500083D05A /* RoundedRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39086112A0317CB00943F2B /* RoundedRect.swift */; }; + B39B905A2B0179580083D05A /* Environments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E90D7EE2A9EABD100855F2C /* Environments.swift */; }; + B39B905B2B0179680083D05A /* Locale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0438C72A8FD5D7007217A8 /* Locale.swift */; }; + B39B905C2B0179700083D05A /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34DA20829FDC0B200562449 /* Utilities.swift */; }; + B39B905E2B0179B70083D05A /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B39B905D2B0179B70083D05A /* Layout.swift */; }; + B39B90602B01803E0083D05A /* SourceHanSansKR-Heavy.otf in Resources */ = {isa = PBXBuildFile; fileRef = B301073C2A0999A900D0A50C /* SourceHanSansKR-Heavy.otf */; }; + B39B90622B01809A0083D05A /* layout.txt in Resources */ = {isa = PBXBuildFile; fileRef = B39B90612B01809A0083D05A /* layout.txt */; }; + B39B90642B0181CE0083D05A /* ThemesList.swift in Sources */ = {isa = PBXBuildFile; fileRef = B328A2EE2A3D19A4002191F4 /* ThemesList.swift */; }; + B39B90652B0181D20083D05A /* ColorSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = B328333B2A46687D00E36989 /* ColorSetting.swift */; }; + B39B90662B0181D50083D05A /* RingSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = B328333D2A4668B000E36989 /* RingSetting.swift */; }; + B39B90672B0181D70083D05A /* Documentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32833412A46691800E36989 /* Documentation.swift */; }; + B39B90682B0181DA0083D05A /* LayoutSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32833392A46685200E36989 /* LayoutSetting.swift */; }; + B39B90692B0181DE0083D05A /* Datetime.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32833432A46695000E36989 /* Datetime.swift */; }; + B39B906A2B0181E00083D05A /* Location.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32833452A4739FD00E36989 /* Location.swift */; }; B3BCCEE82A48746000F5745E /* Setting.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BCCEE72A48746000F5745E /* Setting.swift */; }; B3BEB4C32A48994C000751D5 /* WatchFace.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BEB4C22A48994C000751D5 /* WatchFace.swift */; }; B3BEB4C42A489A0A000751D5 /* WatchFaceBasics.swift in Sources */ = {isa = PBXBuildFile; fileRef = B36D2F782A047A2000005162 /* WatchFaceBasics.swift */; }; @@ -132,7 +163,7 @@ B3BFA2582A05E0590018F99E /* WatchConnectivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BFA2562A05E0590018F99E /* WatchConnectivity.swift */; }; B3CC8B9C2A0B30BB0063DE44 /* iOSWidgetBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CC8B9B2A0B30BB0063DE44 /* iOSWidgetBundle.swift */; }; B3CC8BA12A0B30BC0063DE44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B3CC8BA02A0B30BC0063DE44 /* Assets.xcassets */; }; - B3CC8BA72A0B30BC0063DE44 /* Chinese Time Widget.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B3CC8B972A0B30BB0063DE44 /* Chinese Time Widget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + B3CC8BA72A0B30BC0063DE44 /* Chinendar Widget.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B3CC8B972A0B30BB0063DE44 /* Chinendar Widget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; B3CC8BAF2A0B31B10063DE44 /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3515CE529F6149500E6BCDC /* Layout.swift */; }; B3CC8BB02A0B31B70063DE44 /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = D245D60826FA886200A89044 /* Model.swift */; }; B3CC8BB12A0B31B90063DE44 /* PlanetModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2CFF74C270FF940000CECDA /* PlanetModel.swift */; }; @@ -146,11 +177,11 @@ B3CC8BBD2A0B40E00063DE44 /* Full.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CC8BB62A0B330C0063DE44 /* Full.swift */; }; B3CC8BF32A0C7E300063DE44 /* TextDesp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3CC8BF22A0C7E300063DE44 /* TextDesp.swift */; }; B3CC8BF62A0C7E310063DE44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B3CC8BF52A0C7E310063DE44 /* Assets.xcassets */; }; - B3CC8BFC2A0C7E310063DE44 /* Chinese Time Widget.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B3CC8BEE2A0C7E300063DE44 /* Chinese Time Widget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + B3CC8BFC2A0C7E310063DE44 /* Chinendar Widget.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B3CC8BEE2A0C7E300063DE44 /* Chinendar Widget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; B3CE494F2A111971007905C1 /* SourceHanSansKR-Heavy.otf in Resources */ = {isa = PBXBuildFile; fileRef = B301073C2A0999A900D0A50C /* SourceHanSansKR-Heavy.otf */; }; B3E1D6CE2A0AB43E00F2905A /* MacWidgetBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E1D6CD2A0AB43E00F2905A /* MacWidgetBundle.swift */; }; B3E1D6D12A0AB43E00F2905A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B3E1D6D02A0AB43E00F2905A /* Assets.xcassets */; }; - B3E1D6D82A0AB43E00F2905A /* Chinese Time Widget.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B3E1D6C62A0AB43E00F2905A /* Chinese Time Widget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + B3E1D6D82A0AB43E00F2905A /* Chinendar Widget.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = B3E1D6C62A0AB43E00F2905A /* Chinendar Widget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; B3E1D6DD2A0AC88B00F2905A /* WatchFaceBasics.swift in Sources */ = {isa = PBXBuildFile; fileRef = B36D2F782A047A2000005162 /* WatchFaceBasics.swift */; }; B3E1D6DE2A0AC89300F2905A /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = D245D60826FA886200A89044 /* Model.swift */; }; B3E1D6DF2A0AC89600F2905A /* PlanetModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2CFF74C270FF940000CECDA /* PlanetModel.swift */; }; @@ -160,6 +191,8 @@ B3E1D6E42A0ACD7800F2905A /* WatchFaceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E1D6E32A0ACD7800F2905A /* WatchFaceView.swift */; }; B3E1D6E52A0ACDD800F2905A /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D26CF1BF26FD0C8D004EE9BB /* Layout.swift */; }; B3E1D6E82A0ADCF900F2905A /* layout.txt in Resources */ = {isa = PBXBuildFile; fileRef = B329909A296A1F7F00D246E9 /* layout.txt */; }; + B3E70DA82B01D7EF007474FB /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = B383A6EC2A4D1EA2002FADCF /* Localizable.xcstrings */; }; + B3E70DA92B01D7F4007474FB /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = B383A6D72A4D1EA1002FADCF /* InfoPlist.xcstrings */; }; B3E8A5162A4CF67700302473 /* Circular.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E8A5152A4CF67700302473 /* Circular.swift */; }; B3E8A5172A4CF67700302473 /* Circular.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E8A5152A4CF67700302473 /* Circular.swift */; }; B3E8A5192A4CF6BD00302473 /* CountDown.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E8A5182A4CF6BD00302473 /* CountDown.swift */; }; @@ -226,7 +259,7 @@ dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; dstSubfolderSpec = 16; files = ( - B390860B2A0314DD00943F2B /* Chinese Time.app in Embed Watch Content */, + B390860B2A0314DD00943F2B /* Chinendar.app in Embed Watch Content */, ); name = "Embed Watch Content"; runOnlyForDeploymentPostprocessing = 0; @@ -237,7 +270,7 @@ dstPath = ""; dstSubfolderSpec = 13; files = ( - B3CC8BA72A0B30BC0063DE44 /* Chinese Time Widget.appex in Embed Foundation Extensions */, + B3CC8BA72A0B30BC0063DE44 /* Chinendar Widget.appex in Embed Foundation Extensions */, ); name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; @@ -248,7 +281,7 @@ dstPath = ""; dstSubfolderSpec = 13; files = ( - B3CC8BFC2A0C7E310063DE44 /* Chinese Time Widget.appex in Embed Foundation Extensions */, + B3CC8BFC2A0C7E310063DE44 /* Chinendar Widget.appex in Embed Foundation Extensions */, ); name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; @@ -259,7 +292,7 @@ dstPath = ""; dstSubfolderSpec = 13; files = ( - B3E1D6D82A0AB43E00F2905A /* Chinese Time Widget.appex in Embed Foundation Extensions */, + B3E1D6D82A0AB43E00F2905A /* Chinendar Widget.appex in Embed Foundation Extensions */, ); name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; @@ -272,11 +305,15 @@ 9E71FD062A50BF2E00C9CA78 /* WatchFace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatchFace.swift; path = macOS/Views/WatchFace.swift; sourceTree = SOURCE_ROOT; }; 9E820BE62A7DEA1700453389 /* Welcome.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Welcome.swift; sourceTree = ""; }; 9E90D7EE2A9EABD100855F2C /* Environments.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Environments.swift; sourceTree = ""; }; - 9E9889EE2A79EABF0066414A /* watchPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = watchPanel.swift; sourceTree = ""; }; + 9E9889EE2A79EABF0066414A /* WatchPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchPanel.swift; sourceTree = ""; }; 9E9FB80D2A9BE02200888FA3 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; 9EBFBE322A58A40900DC42AF /* ThemeData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThemeData.swift; path = Shared/DataModel/ThemeData.swift; sourceTree = SOURCE_ROOT; }; B301073C2A0999A900D0A50C /* SourceHanSansKR-Heavy.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SourceHanSansKR-Heavy.otf"; sourceTree = ""; }; B301073F2A099A0700D0A50C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B30CF75D2AF827A300B100CF /* Chinendar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Chinendar.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B30CF7632AF827A300B100CF /* visionApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = visionApp.swift; sourceTree = ""; }; + B30CF7672AF827A400B100CF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B30CF76C2AF827A400B100CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B32243E12A0D3BF600E7AED5 /* Layout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Layout.swift; sourceTree = ""; }; B32243E42A0D8B6C00E7AED5 /* WatchWidgetBasic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchWidgetBasic.swift; sourceTree = ""; }; B32243E72A0D8E5000E7AED5 /* WatchWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchWidgetBundle.swift; sourceTree = ""; }; @@ -293,45 +330,52 @@ B329909A296A1F7F00D246E9 /* layout.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = layout.txt; sourceTree = ""; }; B32999212A4F96D600B71579 /* Setting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Setting.swift; sourceTree = ""; }; B32999282A4F9B7B00B71579 /* LocationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; + B33635252B02FA7B00BA83F7 /* Setting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Setting.swift; path = Vision/Views/Setting.swift; sourceTree = SOURCE_ROOT; }; B34DA20829FDC0B200562449 /* Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Utilities.swift; path = Shared/Utilities.swift; sourceTree = SOURCE_ROOT; }; - B3515CAB29F6147100E6BCDC /* Chinese Time.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Chinese Time.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3515CAB29F6147100E6BCDC /* Chinendar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Chinendar.app; sourceTree = BUILT_PRODUCTS_DIR; }; B3515CE329F6149500E6BCDC /* iOSApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; B3515CE529F6149500E6BCDC /* Layout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Layout.swift; sourceTree = ""; }; B3515CE629F6149500E6BCDC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B3515CE829F6149500E6BCDC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; B3515CFC29F6153E00E6BCDC /* layout.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = layout.txt; sourceTree = ""; }; - B3515D0629F6189F00E6BCDC /* ChineseTimeMac.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ChineseTimeMac.entitlements; sourceTree = ""; }; + B3515D0629F6189F00E6BCDC /* Chinendar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Chinendar.entitlements; sourceTree = ""; }; + B356C9032B04460A0017EF03 /* WatchFace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchFace.swift; sourceTree = ""; }; B36D2F782A047A2000005162 /* WatchFaceBasics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchFaceBasics.swift; sourceTree = ""; }; B37063A229FAFF3300CC6E57 /* MetaLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaLayout.swift; sourceTree = ""; }; + B38387A82B08319500A04588 /* Welcome.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Welcome.swift; sourceTree = ""; }; B383A6CD2A4D02D8002FADCF /* Single.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Single.swift; sourceTree = ""; }; B383A6D02A4D02E2002FADCF /* Dual.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dual.swift; sourceTree = ""; }; B383A6D32A4D1C7B002FADCF /* Relevance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Relevance.swift; sourceTree = ""; }; B383A6D72A4D1EA1002FADCF /* InfoPlist.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = InfoPlist.xcstrings; sourceTree = ""; }; B383A6EC2A4D1EA2002FADCF /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; + B38B52A12B14C5770055569E /* StatusState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StatusState.swift; path = Shared/Setting/StatusState.swift; sourceTree = SOURCE_ROOT; }; B38CC0482A4F1F1600F4DB9F /* WatchFace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchFace.swift; sourceTree = ""; }; - B39085FE2A0314DD00943F2B /* Chinese Time.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Chinese Time.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + B39085FE2A0314DD00943F2B /* Chinendar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Chinendar.app; sourceTree = BUILT_PRODUCTS_DIR; }; B39086002A0314DD00943F2B /* watchApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = watchApp.swift; sourceTree = ""; }; B39086022A0314DD00943F2B /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; B39086042A0314DD00943F2B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; B39086112A0317CB00943F2B /* RoundedRect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundedRect.swift; sourceTree = ""; }; B39086192A03522800943F2B /* layout.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = layout.txt; sourceTree = ""; }; B395B5A02A0ED7EF003206E7 /* IconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconView.swift; sourceTree = ""; }; + B39B905D2B0179B70083D05A /* Layout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Layout.swift; sourceTree = ""; }; + B39B905F2B017AB10083D05A /* Chinendar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Chinendar.entitlements; sourceTree = ""; }; + B39B90612B01809A0083D05A /* layout.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = layout.txt; sourceTree = ""; }; B3BCCEE72A48746000F5745E /* Setting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Setting.swift; sourceTree = ""; }; B3BEB4C22A48994C000751D5 /* WatchFace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchFace.swift; sourceTree = ""; }; B3BFA2562A05E0590018F99E /* WatchConnectivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchConnectivity.swift; sourceTree = ""; }; - B3CC8B972A0B30BB0063DE44 /* Chinese Time Widget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Chinese Time Widget.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3CC8B972A0B30BB0063DE44 /* Chinendar Widget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Chinendar Widget.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; B3CC8B9B2A0B30BB0063DE44 /* iOSWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSWidgetBundle.swift; sourceTree = ""; }; B3CC8BA02A0B30BC0063DE44 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; B3CC8BA22A0B30BC0063DE44 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B3CC8BB62A0B330C0063DE44 /* Full.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Full.swift; sourceTree = ""; }; - B3CC8BC22A0BE4680063DE44 /* ChineseTimeiOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ChineseTimeiOS.entitlements; sourceTree = ""; }; + B3CC8BC22A0BE4680063DE44 /* Chinendar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Chinendar.entitlements; sourceTree = ""; }; B3CC8BC32A0BE47D0063DE44 /* iOSWidget.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = iOSWidget.entitlements; sourceTree = ""; }; - B3CC8BC42A0BE48C0063DE44 /* ChineseTimeWatch.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ChineseTimeWatch.entitlements; sourceTree = ""; }; - B3CC8BEE2A0C7E300063DE44 /* Chinese Time Widget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Chinese Time Widget.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3CC8BC42A0BE48C0063DE44 /* Chinendar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Chinendar.entitlements; sourceTree = ""; }; + B3CC8BEE2A0C7E300063DE44 /* Chinendar Widget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Chinendar Widget.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; B3CC8BF22A0C7E300063DE44 /* TextDesp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextDesp.swift; sourceTree = ""; }; B3CC8BF52A0C7E310063DE44 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; B3CC8BF72A0C7E310063DE44 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3E1D6C62A0AB43E00F2905A /* Chinese Time Widget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Chinese Time Widget.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3E1D6C62A0AB43E00F2905A /* Chinendar Widget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Chinendar Widget.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; B3E1D6CD2A0AB43E00F2905A /* MacWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MacWidgetBundle.swift; sourceTree = ""; }; B3E1D6D02A0AB43E00F2905A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; B3E1D6D22A0AB43E00F2905A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -346,7 +390,7 @@ D245D60826FA886200A89044 /* Model.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; D26CF1BF26FD0C8D004EE9BB /* Layout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Layout.swift; sourceTree = ""; }; D2CFF74C270FF940000CECDA /* PlanetModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanetModel.swift; sourceTree = ""; }; - D2E4E0E226F7C73E002F3716 /* Chinese Time.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Chinese Time.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + D2E4E0E226F7C73E002F3716 /* Chinendar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Chinendar.app; sourceTree = BUILT_PRODUCTS_DIR; }; D2E4E0E526F7C73E002F3716 /* macApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = macApp.swift; sourceTree = ""; }; D2E4E0EC26F7C73F002F3716 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; D2E4E0F126F7C73F002F3716 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -354,6 +398,13 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + B30CF75A2AF827A300B100CF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3515CA829F6147100E6BCDC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -402,6 +453,7 @@ 9E910DDF2A525BCF009A1C54 /* Setting */ = { isa = PBXGroup; children = ( + B38B52A12B14C5770055569E /* StatusState.swift */, B328A2EE2A3D19A4002191F4 /* ThemesList.swift */, B328333B2A46687D00E36989 /* ColorSetting.swift */, B328333D2A4668B000E36989 /* RingSetting.swift */, @@ -413,6 +465,20 @@ path = Setting; sourceTree = ""; }; + B30CF75E2AF827A300B100CF /* Vision */ = { + isa = PBXGroup; + children = ( + B356C9052B0450220017EF03 /* Views */, + B30CF7632AF827A300B100CF /* visionApp.swift */, + B39B905D2B0179B70083D05A /* Layout.swift */, + B30CF76C2AF827A400B100CF /* Info.plist */, + B39B90612B01809A0083D05A /* layout.txt */, + B39B905F2B017AB10083D05A /* Chinendar.entitlements */, + B30CF7672AF827A400B100CF /* Assets.xcassets */, + ); + path = Vision; + sourceTree = ""; + }; B32833382A46681E00E36989 /* Views */ = { isa = PBXGroup; children = ( @@ -466,7 +532,7 @@ B3515CE529F6149500E6BCDC /* Layout.swift */, B3515CE629F6149500E6BCDC /* Info.plist */, B3515CFC29F6153E00E6BCDC /* layout.txt */, - B3CC8BC22A0BE4680063DE44 /* ChineseTimeiOS.entitlements */, + B3CC8BC22A0BE4680063DE44 /* Chinendar.entitlements */, B3515CE829F6149500E6BCDC /* Assets.xcassets */, ); path = iOS; @@ -489,6 +555,16 @@ path = Shared; sourceTree = ""; }; + B356C9052B0450220017EF03 /* Views */ = { + isa = PBXGroup; + children = ( + B356C9032B04460A0017EF03 /* WatchFace.swift */, + B33635252B02FA7B00BA83F7 /* Setting.swift */, + B38387A82B08319500A04588 /* Welcome.swift */, + ); + path = Views; + sourceTree = ""; + }; B39085FF2A0314DD00943F2B /* Watch */ = { isa = PBXGroup; children = ( @@ -497,7 +573,7 @@ B32243E12A0D3BF600E7AED5 /* Layout.swift */, B301073F2A099A0700D0A50C /* Info.plist */, B39086192A03522800943F2B /* layout.txt */, - B3CC8BC42A0BE48C0063DE44 /* ChineseTimeWatch.entitlements */, + B3CC8BC42A0BE48C0063DE44 /* Chinendar.entitlements */, B39086042A0314DD00943F2B /* Assets.xcassets */, ); path = Watch; @@ -581,6 +657,7 @@ D2E4E0E426F7C73E002F3716 /* macOS */, B3515CAC29F6147100E6BCDC /* iOS */, B39085FF2A0314DD00943F2B /* Watch */, + B30CF75E2AF827A300B100CF /* Vision */, B3CC8BBE2A0B42990063DE44 /* Widget */, B3E1D6CC2A0AB43E00F2905A /* MacWidget */, B3CC8B9A2A0B30BB0063DE44 /* iOSWidget */, @@ -592,12 +669,13 @@ D2E4E0E326F7C73E002F3716 /* Products */ = { isa = PBXGroup; children = ( - D2E4E0E226F7C73E002F3716 /* Chinese Time.app */, - B3515CAB29F6147100E6BCDC /* Chinese Time.app */, - B39085FE2A0314DD00943F2B /* Chinese Time.app */, - B3E1D6C62A0AB43E00F2905A /* Chinese Time Widget.appex */, - B3CC8B972A0B30BB0063DE44 /* Chinese Time Widget.appex */, - B3CC8BEE2A0C7E300063DE44 /* Chinese Time Widget.appex */, + D2E4E0E226F7C73E002F3716 /* Chinendar.app */, + B3515CAB29F6147100E6BCDC /* Chinendar.app */, + B39085FE2A0314DD00943F2B /* Chinendar.app */, + B3E1D6C62A0AB43E00F2905A /* Chinendar Widget.appex */, + B3CC8B972A0B30BB0063DE44 /* Chinendar Widget.appex */, + B3CC8BEE2A0C7E300063DE44 /* Chinendar Widget.appex */, + B30CF75D2AF827A300B100CF /* Chinendar.app */, ); name = Products; sourceTree = ""; @@ -607,11 +685,11 @@ children = ( B32999332A4F9E1700B71579 /* Views */, D2E4E0E526F7C73E002F3716 /* macApp.swift */, - 9E9889EE2A79EABF0066414A /* watchPanel.swift */, + 9E9889EE2A79EABF0066414A /* WatchPanel.swift */, D26CF1BF26FD0C8D004EE9BB /* Layout.swift */, B329909A296A1F7F00D246E9 /* layout.txt */, D2E4E0F126F7C73F002F3716 /* Info.plist */, - B3515D0629F6189F00E6BCDC /* ChineseTimeMac.entitlements */, + B3515D0629F6189F00E6BCDC /* Chinendar.entitlements */, D2E4E0EC26F7C73F002F3716 /* Assets.xcassets */, ); path = macOS; @@ -620,9 +698,28 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - B3515CAA29F6147100E6BCDC /* Chinese Time iOS */ = { + B30CF75C2AF827A300B100CF /* Chinendar Vision */ = { + isa = PBXNativeTarget; + buildConfigurationList = B30CF76F2AF827A400B100CF /* Build configuration list for PBXNativeTarget "Chinendar Vision" */; + buildPhases = ( + B30CF7592AF827A300B100CF /* Sources */, + B30CF75A2AF827A300B100CF /* Frameworks */, + B30CF75B2AF827A300B100CF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Chinendar Vision"; + packageProductDependencies = ( + ); + productName = "ChineseTime-Vision"; + productReference = B30CF75D2AF827A300B100CF /* Chinendar.app */; + productType = "com.apple.product-type.application"; + }; + B3515CAA29F6147100E6BCDC /* Chinendar iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = B3515CD529F6147200E6BCDC /* Build configuration list for PBXNativeTarget "Chinese Time iOS" */; + buildConfigurationList = B3515CD529F6147200E6BCDC /* Build configuration list for PBXNativeTarget "Chinendar iOS" */; buildPhases = ( B3515CA729F6147100E6BCDC /* Sources */, B3515CA829F6147100E6BCDC /* Frameworks */, @@ -636,14 +733,14 @@ B390860A2A0314DD00943F2B /* PBXTargetDependency */, B3CC8BA62A0B30BC0063DE44 /* PBXTargetDependency */, ); - name = "Chinese Time iOS"; + name = "Chinendar iOS"; productName = "Chinese Time iOS"; - productReference = B3515CAB29F6147100E6BCDC /* Chinese Time.app */; + productReference = B3515CAB29F6147100E6BCDC /* Chinendar.app */; productType = "com.apple.product-type.application"; }; - B39085FD2A0314DD00943F2B /* Chinese Time Watch */ = { + B39085FD2A0314DD00943F2B /* Chinendar Watch */ = { isa = PBXNativeTarget; - buildConfigurationList = B390860F2A0314DD00943F2B /* Build configuration list for PBXNativeTarget "Chinese Time Watch" */; + buildConfigurationList = B390860F2A0314DD00943F2B /* Build configuration list for PBXNativeTarget "Chinendar Watch" */; buildPhases = ( B39085FA2A0314DD00943F2B /* Sources */, B39085FB2A0314DD00943F2B /* Frameworks */, @@ -655,9 +752,9 @@ dependencies = ( B3CC8BFB2A0C7E310063DE44 /* PBXTargetDependency */, ); - name = "Chinese Time Watch"; + name = "Chinendar Watch"; productName = "ChineseTime Watch App"; - productReference = B39085FE2A0314DD00943F2B /* Chinese Time.app */; + productReference = B39085FE2A0314DD00943F2B /* Chinendar.app */; productType = "com.apple.product-type.application"; }; B3CC8B962A0B30BB0063DE44 /* iOS Widget Extension */ = { @@ -674,7 +771,7 @@ ); name = "iOS Widget Extension"; productName = iOSWidgetExtension; - productReference = B3CC8B972A0B30BB0063DE44 /* Chinese Time Widget.appex */; + productReference = B3CC8B972A0B30BB0063DE44 /* Chinendar Widget.appex */; productType = "com.apple.product-type.app-extension"; }; B3CC8BED2A0C7E300063DE44 /* Watch Widget Extension */ = { @@ -691,7 +788,7 @@ ); name = "Watch Widget Extension"; productName = WatchWidgetExtension; - productReference = B3CC8BEE2A0C7E300063DE44 /* Chinese Time Widget.appex */; + productReference = B3CC8BEE2A0C7E300063DE44 /* Chinendar Widget.appex */; productType = "com.apple.product-type.app-extension"; }; B3E1D6C52A0AB43E00F2905A /* Mac Widget Extension */ = { @@ -708,12 +805,12 @@ ); name = "Mac Widget Extension"; productName = MacWidgetExtension; - productReference = B3E1D6C62A0AB43E00F2905A /* Chinese Time Widget.appex */; + productReference = B3E1D6C62A0AB43E00F2905A /* Chinendar Widget.appex */; productType = "com.apple.product-type.app-extension"; }; - D2E4E0E126F7C73E002F3716 /* Chinese Time Mac */ = { + D2E4E0E126F7C73E002F3716 /* Chinendar Mac */ = { isa = PBXNativeTarget; - buildConfigurationList = D2E4E0F526F7C73F002F3716 /* Build configuration list for PBXNativeTarget "Chinese Time Mac" */; + buildConfigurationList = D2E4E0F526F7C73F002F3716 /* Build configuration list for PBXNativeTarget "Chinendar Mac" */; buildPhases = ( D2E4E0DE26F7C73E002F3716 /* Sources */, D2E4E0DF26F7C73E002F3716 /* Frameworks */, @@ -726,11 +823,11 @@ dependencies = ( B3E1D6D72A0AB43E00F2905A /* PBXTargetDependency */, ); - name = "Chinese Time Mac"; + name = "Chinendar Mac"; packageProductDependencies = ( ); productName = ChineseTime; - productReference = D2E4E0E226F7C73E002F3716 /* Chinese Time.app */; + productReference = D2E4E0E226F7C73E002F3716 /* Chinendar.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -740,9 +837,12 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastSwiftUpdateCheck = 1430; - LastUpgradeCheck = 1500; + LastSwiftUpdateCheck = 1510; + LastUpgradeCheck = 1510; TargetAttributes = { + B30CF75C2AF827A300B100CF = { + CreatedOnToolsVersion = 15.1; + }; B3515CAA29F6147100E6BCDC = { CreatedOnToolsVersion = 14.3; LastSwiftMigration = 1430; @@ -764,7 +864,7 @@ }; }; }; - buildConfigurationList = D2E4E0DD26F7C73E002F3716 /* Build configuration list for PBXProject "Chinese Time" */; + buildConfigurationList = D2E4E0DD26F7C73E002F3716 /* Build configuration list for PBXProject "Chinendar" */; compatibilityVersion = "Xcode 15.0"; developmentRegion = "zh-Hant"; hasScannedForEncodings = 0; @@ -780,9 +880,10 @@ projectDirPath = ""; projectRoot = ""; targets = ( - D2E4E0E126F7C73E002F3716 /* Chinese Time Mac */, - B3515CAA29F6147100E6BCDC /* Chinese Time iOS */, - B39085FD2A0314DD00943F2B /* Chinese Time Watch */, + D2E4E0E126F7C73E002F3716 /* Chinendar Mac */, + B3515CAA29F6147100E6BCDC /* Chinendar iOS */, + B39085FD2A0314DD00943F2B /* Chinendar Watch */, + B30CF75C2AF827A300B100CF /* Chinendar Vision */, B3E1D6C52A0AB43E00F2905A /* Mac Widget Extension */, B3CC8B962A0B30BB0063DE44 /* iOS Widget Extension */, B3CC8BED2A0C7E300063DE44 /* Watch Widget Extension */, @@ -791,6 +892,18 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + B30CF75B2AF827A300B100CF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3E70DA92B01D7F4007474FB /* InfoPlist.xcstrings in Resources */, + B3E70DA82B01D7EF007474FB /* Localizable.xcstrings in Resources */, + B39B90602B01803E0083D05A /* SourceHanSansKR-Heavy.otf in Resources */, + B39B90622B01809A0083D05A /* layout.txt in Resources */, + B30CF7682AF827A400B100CF /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3515CA929F6147100E6BCDC /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -866,6 +979,40 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + B30CF7592AF827A300B100CF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B39B90552B0178F50083D05A /* MetaLayout.swift in Sources */, + B39B90562B0179440083D05A /* WatchFaceBasics.swift in Sources */, + B33635262B02FA7B00BA83F7 /* Setting.swift in Sources */, + B39B90662B0181D50083D05A /* RingSetting.swift in Sources */, + B39B905A2B0179580083D05A /* Environments.swift in Sources */, + B39B90572B0179470083D05A /* WatchFaceView.swift in Sources */, + B38387A92B08319500A04588 /* Welcome.swift in Sources */, + B39B906A2B0181E00083D05A /* Location.swift in Sources */, + B39B905E2B0179B70083D05A /* Layout.swift in Sources */, + B39B90652B0181D20083D05A /* ColorSetting.swift in Sources */, + B39B90502B0178DF0083D05A /* ThemeData.swift in Sources */, + B39B90582B01794D0083D05A /* SwiftUIUtilities.swift in Sources */, + B39B90692B0181DE0083D05A /* Datetime.swift in Sources */, + B39B90682B0181DA0083D05A /* LayoutSetting.swift in Sources */, + B39B905B2B0179680083D05A /* Locale.swift in Sources */, + B39B904F2B0178CC0083D05A /* HoverView.swift in Sources */, + B38B52A32B14C5770055569E /* StatusState.swift in Sources */, + B39B90522B0178EC0083D05A /* PlanetModel.swift in Sources */, + B39B905C2B0179700083D05A /* Utilities.swift in Sources */, + B39B90512B0178E90083D05A /* Model.swift in Sources */, + B39B90642B0181CE0083D05A /* ThemesList.swift in Sources */, + B30CF7642AF827A300B100CF /* visionApp.swift in Sources */, + B39B90672B0181D70083D05A /* Documentation.swift in Sources */, + B39B90592B0179500083D05A /* RoundedRect.swift in Sources */, + B39B90532B0178EE0083D05A /* Data.swift in Sources */, + B356C9042B04460A0017EF03 /* WatchFace.swift in Sources */, + B39B90542B0178F20083D05A /* LocationManager.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B3515CA729F6147100E6BCDC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1022,11 +1169,12 @@ B32999222A4F96D600B71579 /* Setting.swift in Sources */, 9E0438C82A8FD5D7007217A8 /* Locale.swift in Sources */, B32999292A4F9B7B00B71579 /* LocationManager.swift in Sources */, + B38B52A22B14C5770055569E /* StatusState.swift in Sources */, 9ECDCA022A50B24800E11161 /* LayoutSetting.swift in Sources */, 9E71FD072A50BF2E00C9CA78 /* WatchFace.swift in Sources */, D245D60926FA886200A89044 /* Model.swift in Sources */, D26CF1C026FD0C8D004EE9BB /* Layout.swift in Sources */, - 9E9889EF2A79EABF0066414A /* watchPanel.swift in Sources */, + 9E9889EF2A79EABF0066414A /* WatchPanel.swift in Sources */, B34DA20929FDC0B200562449 /* Utilities.swift in Sources */, 9ECDCA052A50B6D100E11161 /* Documentation.swift in Sources */, 9E90D7EF2A9EABD100855F2C /* Environments.swift in Sources */, @@ -1048,7 +1196,7 @@ /* Begin PBXTargetDependency section */ B390860A2A0314DD00943F2B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B39085FD2A0314DD00943F2B /* Chinese Time Watch */; + target = B39085FD2A0314DD00943F2B /* Chinendar Watch */; targetProxy = B39086092A0314DD00943F2B /* PBXContainerItemProxy */; }; B3CC8BA62A0B30BC0063DE44 /* PBXTargetDependency */ = { @@ -1069,18 +1217,94 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + B30CF76D2AF827A400B100CF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = ""; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_ENTITLEMENTS = vision/Chinendar.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(APP_BUILD)"; + DEVELOPMENT_ASSET_PATHS = ""; + DEVELOPMENT_TEAM = 28HU5A7B46; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = vision/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Chinendar; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; + INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; + INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; + INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = "$(APP_VERSION)"; + PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime"; + PRODUCT_NAME = Chinendar; + SDKROOT = xros; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 7; + XROS_DEPLOYMENT_TARGET = 1.0; + }; + name = Debug; + }; + B30CF76E2AF827A400B100CF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = ""; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_ENTITLEMENTS = vision/Chinendar.entitlements; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = "$(APP_BUILD)"; + DEVELOPMENT_ASSET_PATHS = ""; + DEVELOPMENT_TEAM = 28HU5A7B46; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = vision/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Chinendar; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; + INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; + INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; + INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = "$(APP_VERSION)"; + PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime"; + PRODUCT_NAME = Chinendar; + SDKROOT = xros; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 7; + VALIDATE_PRODUCT = YES; + XROS_DEPLOYMENT_TARGET = 1.0; + }; + name = Release; + }; B3515CD629F6147200E6BCDC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = ""; - CODE_SIGN_ENTITLEMENTS = iOS/ChineseTimeiOS.entitlements; + CODE_SIGN_ENTITLEMENTS = iOS/Chinendar.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(APP_BUILD)"; DEVELOPMENT_TEAM = 28HU5A7B46; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = iOS/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time"; + INFOPLIST_KEY_CFBundleDisplayName = Chinendar; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1095,9 +1319,8 @@ ); MARKETING_VERSION = "$(APP_VERSION)"; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime"; - PRODUCT_NAME = "Chinese Time"; + PRODUCT_NAME = Chinendar; SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -1110,15 +1333,16 @@ B3515CD729F6147200E6BCDC /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = ""; - CODE_SIGN_ENTITLEMENTS = iOS/ChineseTimeiOS.entitlements; + CODE_SIGN_ENTITLEMENTS = iOS/Chinendar.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(APP_BUILD)"; DEVELOPMENT_TEAM = 28HU5A7B46; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = iOS/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time"; + INFOPLIST_KEY_CFBundleDisplayName = Chinendar; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1133,9 +1357,8 @@ ); MARKETING_VERSION = "$(APP_VERSION)"; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime"; - PRODUCT_NAME = "Chinese Time"; + PRODUCT_NAME = Chinendar; SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -1149,17 +1372,17 @@ B390860D2A0314DD00943F2B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = Watch/ChineseTimeWatch.entitlements; + CODE_SIGN_ENTITLEMENTS = Watch/Chinendar.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = $APP_VERSION; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = 28HU5A7B46; - ENABLE_PREVIEWS = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Watch/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time"; + INFOPLIST_KEY_CFBundleDisplayName = Chinendar; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1174,7 +1397,7 @@ MARKETING_VERSION = $APP_BUILD; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime.Watch"; - PRODUCT_NAME = "Chinese Time"; + PRODUCT_NAME = Chinendar; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1187,17 +1410,17 @@ B390860E2A0314DD00943F2B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = Watch/ChineseTimeWatch.entitlements; + CODE_SIGN_ENTITLEMENTS = Watch/Chinendar.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = $APP_VERSION; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = 28HU5A7B46; - ENABLE_PREVIEWS = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Watch/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time"; + INFOPLIST_KEY_CFBundleDisplayName = Chinendar; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1212,7 +1435,7 @@ MARKETING_VERSION = $APP_BUILD; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime.Watch"; - PRODUCT_NAME = "Chinese Time"; + PRODUCT_NAME = Chinendar; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1226,6 +1449,7 @@ B3CC8BA92A0B30BC0063DE44 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = iOSWidget/iOSWidget.entitlements; @@ -1234,7 +1458,7 @@ DEVELOPMENT_TEAM = 28HU5A7B46; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = iOSWidget/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time Widget"; + INFOPLIST_KEY_CFBundleDisplayName = "Chinendar Widget"; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1248,10 +1472,9 @@ MARKETING_VERSION = $APP_VERSION; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime.iOSWidget"; - PRODUCT_NAME = "Chinese Time Widget"; + PRODUCT_NAME = "Chinendar Widget"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -1264,6 +1487,7 @@ B3CC8BAA2A0B30BC0063DE44 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = iOSWidget/iOSWidget.entitlements; @@ -1272,7 +1496,7 @@ DEVELOPMENT_TEAM = 28HU5A7B46; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = iOSWidget/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time Widget"; + INFOPLIST_KEY_CFBundleDisplayName = "Chinendar Widget"; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1286,10 +1510,9 @@ MARKETING_VERSION = $APP_VERSION; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime.iOSWidget"; - PRODUCT_NAME = "Chinese Time Widget"; + PRODUCT_NAME = "Chinendar Widget"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -1303,6 +1526,7 @@ B3CC8BFE2A0C7E310063DE44 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = WatchWidget/WatchWidget.entitlements; @@ -1311,7 +1535,7 @@ DEVELOPMENT_TEAM = 28HU5A7B46; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = WatchWidget/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time Widget"; + INFOPLIST_KEY_CFBundleDisplayName = "Chinendar Widget"; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1324,7 +1548,7 @@ ); MARKETING_VERSION = $APP_BUILD; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime.Watch.WatchWidget"; - PRODUCT_NAME = "Chinese Time Widget"; + PRODUCT_NAME = "Chinendar Widget"; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1337,6 +1561,7 @@ B3CC8BFF2A0C7E310063DE44 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = WatchWidget/WatchWidget.entitlements; @@ -1345,7 +1570,7 @@ DEVELOPMENT_TEAM = 28HU5A7B46; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = WatchWidget/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time Widget"; + INFOPLIST_KEY_CFBundleDisplayName = "Chinendar Widget"; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1358,7 +1583,7 @@ ); MARKETING_VERSION = $APP_BUILD; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime.Watch.WatchWidget"; - PRODUCT_NAME = "Chinese Time Widget"; + PRODUCT_NAME = "Chinendar Widget"; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1372,6 +1597,7 @@ B3E1D6DA2A0AB43E00F2905A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = MacWidget/MacWidget.entitlements; @@ -1380,7 +1606,7 @@ DEVELOPMENT_TEAM = 28HU5A7B46; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = MacWidget/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time Widget"; + INFOPLIST_KEY_CFBundleDisplayName = "Chinendar Widget"; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1394,7 +1620,7 @@ MARKETING_VERSION = $APP_VERSION; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime.MacWidget"; - PRODUCT_NAME = "Chinese Time Widget"; + PRODUCT_NAME = "Chinendar Widget"; SKIP_INSTALL = YES; STRINGS_FILE_OUTPUT_ENCODING = binary; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1405,6 +1631,7 @@ B3E1D6DB2A0AB43E00F2905A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = MacWidget/MacWidget.entitlements; @@ -1414,7 +1641,7 @@ ENABLE_HARDENED_RUNTIME = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = MacWidget/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time Widget"; + INFOPLIST_KEY_CFBundleDisplayName = "Chinendar Widget"; INFOPLIST_KEY_NSHumanReadableCopyright = "Open source under GPL v3"; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; INFOPLIST_KEY_NSLocationUsageDescription = "Provide location to calculate local sunrise/set, moonrise/set times. No impact on other functions if you refuse."; @@ -1428,11 +1655,12 @@ MARKETING_VERSION = $APP_VERSION; OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime.MacWidget"; - PRODUCT_NAME = "Chinese Time Widget"; + PRODUCT_NAME = "Chinendar Widget"; SKIP_INSTALL = YES; STRINGS_FILE_OUTPUT_ENCODING = binary; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; + VALIDATE_PRODUCT = YES; }; name = Release; }; @@ -1440,8 +1668,8 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - APP_BUILD = 97; - APP_VERSION = 5.0.1; + APP_BUILD = 103; + APP_VERSION = 5.1; ASSETCATALOG_COMPILER_APPICON_NAME = ""; ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_FRAMEWORKS = SwiftUI; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -1506,13 +1734,12 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; STRINGS_FILE_OUTPUT_ENCODING = binary; - STRIP_INSTALLED_PRODUCT = NO; - STRIP_SWIFT_SYMBOLS = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_STRICT_CONCURRENCY = complete; SWIFT_VERSION = 5.0; WATCHOS_DEPLOYMENT_TARGET = 10.0; + XROS_DEPLOYMENT_TARGET = 1.0; }; name = Debug; }; @@ -1520,8 +1747,8 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - APP_BUILD = 97; - APP_VERSION = 5.0.1; + APP_BUILD = 103; + APP_VERSION = 5.1; ASSETCATALOG_COMPILER_APPICON_NAME = ""; ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_FRAMEWORKS = SwiftUI; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -1587,22 +1814,24 @@ SWIFT_STRICT_CONCURRENCY = complete; SWIFT_VERSION = 5.0; WATCHOS_DEPLOYMENT_TARGET = 10.0; + XROS_DEPLOYMENT_TARGET = 1.0; }; name = Release; }; D2E4E0F626F7C73F002F3716 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = macOS/ChineseTimeMac.entitlements; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = ""; + CODE_SIGN_ENTITLEMENTS = macOS/Chinendar.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = "$(APP_BUILD)"; + CURRENT_PROJECT_VERSION = 102; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 28HU5A7B46; INFOPLIST_FILE = macOS/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time"; + INFOPLIST_KEY_CFBundleDisplayName = Chinendar; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1611,7 +1840,7 @@ MACOSX_DEPLOYMENT_TARGET = 14.0; MARKETING_VERSION = "$(APP_VERSION)"; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime"; - PRODUCT_NAME = "Chinese Time"; + PRODUCT_NAME = Chinendar; STRINGS_FILE_OUTPUT_ENCODING = binary; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -1621,18 +1850,19 @@ D2E4E0F726F7C73F002F3716 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = macOS/ChineseTimeMac.entitlements; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = ""; + CODE_SIGN_ENTITLEMENTS = macOS/Chinendar.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = "$(APP_BUILD)"; + CURRENT_PROJECT_VERSION = 102; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 28HU5A7B46; ENABLE_APP_SANDBOX = YES; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = macOS/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "Chinese Time"; + INFOPLIST_KEY_CFBundleDisplayName = Chinendar; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1641,17 +1871,27 @@ MACOSX_DEPLOYMENT_TARGET = 14.0; MARKETING_VERSION = "$(APP_VERSION)"; PRODUCT_BUNDLE_IDENTIFIER = "Yuncao-Liu.ChineseTime"; - PRODUCT_NAME = "Chinese Time"; + PRODUCT_NAME = Chinendar; STRINGS_FILE_OUTPUT_ENCODING = binary; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; + VALIDATE_PRODUCT = YES; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B3515CD529F6147200E6BCDC /* Build configuration list for PBXNativeTarget "Chinese Time iOS" */ = { + B30CF76F2AF827A400B100CF /* Build configuration list for PBXNativeTarget "Chinendar Vision" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B30CF76D2AF827A400B100CF /* Debug */, + B30CF76E2AF827A400B100CF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3515CD529F6147200E6BCDC /* Build configuration list for PBXNativeTarget "Chinendar iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( B3515CD629F6147200E6BCDC /* Debug */, @@ -1660,7 +1900,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B390860F2A0314DD00943F2B /* Build configuration list for PBXNativeTarget "Chinese Time Watch" */ = { + B390860F2A0314DD00943F2B /* Build configuration list for PBXNativeTarget "Chinendar Watch" */ = { isa = XCConfigurationList; buildConfigurations = ( B390860D2A0314DD00943F2B /* Debug */, @@ -1696,7 +1936,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D2E4E0DD26F7C73E002F3716 /* Build configuration list for PBXProject "Chinese Time" */ = { + D2E4E0DD26F7C73E002F3716 /* Build configuration list for PBXProject "Chinendar" */ = { isa = XCConfigurationList; buildConfigurations = ( D2E4E0F326F7C73F002F3716 /* Debug */, @@ -1705,7 +1945,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D2E4E0F526F7C73F002F3716 /* Build configuration list for PBXNativeTarget "Chinese Time Mac" */ = { + D2E4E0F526F7C73F002F3716 /* Build configuration list for PBXNativeTarget "Chinendar Mac" */ = { isa = XCConfigurationList; buildConfigurations = ( D2E4E0F626F7C73F002F3716 /* Debug */, diff --git a/Chinese Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Chinendar.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 74% rename from Chinese Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Chinendar.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 4a501ad..8bd332f 100644 --- a/Chinese Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Chinendar.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:/Users/leo/Library/Mobile Documents/com~apple~CloudDocs/Codes/ChineseTime/Chinendar.xcodeproj"> diff --git a/Chinese Time.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Chinendar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Chinese Time.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Chinendar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time Mac.xcscheme b/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Mac.xcscheme similarity index 86% rename from Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time Mac.xcscheme rename to Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Mac.xcscheme index 610c7d7..0ddb8e5 100644 --- a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time Mac.xcscheme +++ b/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Mac.xcscheme @@ -1,6 +1,6 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Mac" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -47,9 +47,9 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Mac" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -86,9 +86,9 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Mac" + ReferencedContainer = "container:Chinendar.xcodeproj"> diff --git a/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Vision.xcscheme b/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Vision.xcscheme new file mode 100644 index 0000000..eb6eb5c --- /dev/null +++ b/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Vision.xcscheme @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time Watch.xcscheme b/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Watch.xcscheme similarity index 83% rename from Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time Watch.xcscheme rename to Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Watch.xcscheme index a69a103..505bcef 100644 --- a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time Watch.xcscheme +++ b/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar Watch.xcscheme @@ -1,6 +1,6 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Watch" + ReferencedContainer = "container:Chinendar.xcodeproj"> + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -59,9 +59,9 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Watch" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -98,9 +98,9 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Watch" + ReferencedContainer = "container:Chinendar.xcodeproj"> diff --git a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time iOS.xcscheme b/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar iOS.xcscheme similarity index 85% rename from Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time iOS.xcscheme rename to Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar iOS.xcscheme index 3af2ebd..601280c 100644 --- a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Chinese Time iOS.xcscheme +++ b/Chinendar.xcodeproj/xcshareddata/xcschemes/Chinendar iOS.xcscheme @@ -1,6 +1,6 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -44,9 +44,9 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -83,9 +83,9 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> diff --git a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Mac Widget Extension.xcscheme b/Chinendar.xcodeproj/xcshareddata/xcschemes/Mac Widget Extension.xcscheme similarity index 86% rename from Chinese Time.xcodeproj/xcshareddata/xcschemes/Mac Widget Extension.xcscheme rename to Chinendar.xcodeproj/xcshareddata/xcschemes/Mac Widget Extension.xcscheme index 6aa8d59..6f8a08b 100644 --- a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Mac Widget Extension.xcscheme +++ b/Chinendar.xcodeproj/xcshareddata/xcschemes/Mac Widget Extension.xcscheme @@ -1,6 +1,6 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Mac" + ReferencedContainer = "container:Chinendar.xcodeproj"> + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -65,9 +65,9 @@ + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -105,9 +105,9 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Mac" + ReferencedContainer = "container:Chinendar.xcodeproj"> diff --git a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Watch Widget Extension.xcscheme b/Chinendar.xcodeproj/xcshareddata/xcschemes/Watch Widget Extension.xcscheme similarity index 82% rename from Chinese Time.xcodeproj/xcshareddata/xcschemes/Watch Widget Extension.xcscheme rename to Chinendar.xcodeproj/xcshareddata/xcschemes/Watch Widget Extension.xcscheme index e026fec..2e0fcc9 100644 --- a/Chinese Time.xcodeproj/xcshareddata/xcschemes/Watch Widget Extension.xcscheme +++ b/Chinendar.xcodeproj/xcshareddata/xcschemes/Watch Widget Extension.xcscheme @@ -1,6 +1,6 @@ + ReferencedContainer = "container:Chinendar.xcodeproj"> + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar Watch" + ReferencedContainer = "container:Chinendar.xcodeproj"> + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -74,18 +74,18 @@ + ReferencedContainer = "container:Chinendar.xcodeproj"> + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -117,9 +117,9 @@ + ReferencedContainer = "container:Chinendar.xcodeproj"> diff --git a/Chinese Time.xcodeproj/xcshareddata/xcschemes/iOS Widget Extension.xcscheme b/Chinendar.xcodeproj/xcshareddata/xcschemes/iOS Widget Extension.xcscheme similarity index 83% rename from Chinese Time.xcodeproj/xcshareddata/xcschemes/iOS Widget Extension.xcscheme rename to Chinendar.xcodeproj/xcshareddata/xcschemes/iOS Widget Extension.xcscheme index e617cfc..d1cee05 100644 --- a/Chinese Time.xcodeproj/xcshareddata/xcschemes/iOS Widget Extension.xcscheme +++ b/Chinendar.xcodeproj/xcshareddata/xcschemes/iOS Widget Extension.xcscheme @@ -1,6 +1,6 @@ + ReferencedContainer = "container:Chinendar.xcodeproj"> + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -62,18 +62,18 @@ + ReferencedContainer = "container:Chinendar.xcodeproj"> + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> @@ -107,9 +107,9 @@ + BuildableName = "Chinendar.app" + BlueprintName = "Chinendar iOS" + ReferencedContainer = "container:Chinendar.xcodeproj"> diff --git a/Chinese Time.xcodeproj/xcuserdata/leo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Chinendar.xcodeproj/xcuserdata/leo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist similarity index 100% rename from Chinese Time.xcodeproj/xcuserdata/leo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist rename to Chinendar.xcodeproj/xcuserdata/leo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/Chinese Time.xcodeproj/xcuserdata/leo.xcuserdatad/xcschemes/xcschememanagement.plist b/Chinendar.xcodeproj/xcuserdata/leo.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 86% rename from Chinese Time.xcodeproj/xcuserdata/leo.xcuserdatad/xcschemes/xcschememanagement.plist rename to Chinendar.xcodeproj/xcuserdata/leo.xcuserdatad/xcschemes/xcschememanagement.plist index fa8e9e7..c28be17 100644 --- a/Chinese Time.xcodeproj/xcuserdata/leo.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Chinendar.xcodeproj/xcuserdata/leo.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,17 +4,22 @@ SchemeUserState - Chinese Time Mac.xcscheme_^#shared#^_ + Chinendar Mac.xcscheme_^#shared#^_ orderHint 0 - Chinese Time Watch.xcscheme_^#shared#^_ + Chinendar Vision.xcscheme_^#shared#^_ + + orderHint + 3 + + Chinendar Watch.xcscheme_^#shared#^_ orderHint 2 - Chinese Time iOS.xcscheme_^#shared#^_ + Chinendar iOS.xcscheme_^#shared#^_ orderHint 1 @@ -32,12 +37,12 @@ Mac Widget Extension.xcscheme_^#shared#^_ orderHint - 3 + 4 Watch Widget Extension.xcscheme_^#shared#^_ orderHint - 5 + 6 WidgetExtension.xcscheme_^#shared#^_ @@ -47,7 +52,7 @@ iOS Widget Extension.xcscheme_^#shared#^_ orderHint - 4 + 5 SuppressBuildableAutocreation diff --git a/Chinese Time.xcodeproj/xcuserdata/leoliu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Chinendar.xcodeproj/xcuserdata/leoliu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist similarity index 100% rename from Chinese Time.xcodeproj/xcuserdata/leoliu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist rename to Chinendar.xcodeproj/xcuserdata/leoliu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/Chinese Time.xcodeproj/xcuserdata/leoliu.xcuserdatad/xcschemes/xcschememanagement.plist b/Chinendar.xcodeproj/xcuserdata/leoliu.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 100% rename from Chinese Time.xcodeproj/xcuserdata/leoliu.xcuserdatad/xcschemes/xcschememanagement.plist rename to Chinendar.xcodeproj/xcuserdata/leoliu.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Chinese Time.xcodeproj/xcuserdata/leoyoontsaw.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Chinendar.xcodeproj/xcuserdata/leoyoontsaw.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist similarity index 100% rename from Chinese Time.xcodeproj/xcuserdata/leoyoontsaw.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist rename to Chinendar.xcodeproj/xcuserdata/leoyoontsaw.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/Chinese Time.xcodeproj/xcuserdata/leoyoontsaw.xcuserdatad/xcschemes/xcschememanagement.plist b/Chinendar.xcodeproj/xcuserdata/leoyoontsaw.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 100% rename from Chinese Time.xcodeproj/xcuserdata/leoyoontsaw.xcuserdatad/xcschemes/xcschememanagement.plist rename to Chinendar.xcodeproj/xcuserdata/leoyoontsaw.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/README.md b/README.md index 7e1f53e..15c7639 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

Lunar Time華曆/Chinese Time/Lunar Time

+

Chinendar華曆/Chinendar

Download on the App Store @@ -6,9 +6,9 @@ For detailed information about the background, design (screenshots), and features of this app, please refer to the [Wiki](https://github.com/LEOYoon-Tsaw/ChineseTime/wiki) page. Additionally, the app includes a documentation section that serves as a Q&A resource. -This app is available on `macOS`, `iOS`, `iPadOS`, and `watchOS`, and includes widgets for all these platforms. To build the project from the source, simply download or clone this repo, then build with Xcode. The app does not rely on any third-party dependencies. +This app is available on `macOS`, `iOS`, `iPadOS`, `watchOS` and `visionOS`, and includes widgets for all these platforms but visionOS. To build the project from the source, simply download or clone this repo, then build with Xcode. The app does not rely on any third-party dependencies. -Minimum OS requirements: `macOS 14.0`, `iOS/iPadOS 17.0`, `watchOS 10.0`. You will need `Xcode 15.0` or later to build from the source. +Minimum OS requirements: `macOS 14.0`, `iOS/iPadOS 17.0`, `watchOS 10.0`, `visionOS 1.0`. You will need `Xcode 15.2` or later to build from the source. ## Contributing diff --git a/Shared/DataModel/Data.swift b/Shared/DataModel/Data.swift index 6627aad..d108884 100644 --- a/Shared/DataModel/Data.swift +++ b/Shared/DataModel/Data.swift @@ -1,8 +1,8 @@ // // Data.swift -// ChineseTime +// Chinendar // -// Created by LEO Yoon-Tsaw on 9/21/21. +// Created by Leo Liu on 9/21/21. // let earthSpeed = 360 / 86164.0989 diff --git a/Shared/DataModel/MetaLayout.swift b/Shared/DataModel/MetaLayout.swift index 5c6ff9a..dda618e 100644 --- a/Shared/DataModel/MetaLayout.swift +++ b/Shared/DataModel/MetaLayout.swift @@ -1,6 +1,6 @@ // -// Layout.swift -// Chinese Time +// MetaLayout.swift +// Chinendar // // Created by Leo Liu on 4/27/23. // @@ -142,7 +142,7 @@ extension String { init(locations: [CGFloat], colors: [CGColor], loop: Bool) { guard locations.count == colors.count else { - fatalError() + fatalError("Gradient locations count does not equal colors count") } var colorAndLocation = Array(zip(colors, locations)) colorAndLocation.sort { former, latter in @@ -231,6 +231,7 @@ extension String { var secondRing = Gradient(locations: [0, 1], colors: [CGColor(gray: 1, alpha: 1), CGColor(gray: 1, alpha: 1)], loop: false) var thirdRing = Gradient(locations: [0, 1], colors: [CGColor(gray: 1, alpha: 1), CGColor(gray: 1, alpha: 1)], loop: false) var innerColor = CGColor(gray: 0, alpha: 0) + var backColor = CGColor(gray: 1, alpha: 1) var majorTickColor = CGColor(gray: 0, alpha: 0) var minorTickColor = CGColor(gray: 0, alpha: 0) var majorTickAlpha: CGFloat = 0 @@ -240,6 +241,7 @@ extension String { var evenSolarTermTickColor = CGColor(gray: 1, alpha: 1) var oddSolarTermTickColor = CGColor(gray: 0.67, alpha: 1) var innerColorDark = CGColor(gray: 0, alpha: 0) + var backColorDark = CGColor(gray: 0, alpha: 1) var majorTickColorDark = CGColor(gray: 0, alpha: 0) var minorTickColorDark = CGColor(gray: 0, alpha: 0) var fontColorDark = CGColor(gray: 0, alpha: 1) @@ -276,6 +278,7 @@ extension String { encoded += "secondRing: \(secondRing.encode().replacingOccurrences(of: "\n", with: "; "))\n" encoded += "thirdRing: \(thirdRing.encode().replacingOccurrences(of: "\n", with: "; "))\n" encoded += "innerColor: \(innerColor.hexCode)\n" + encoded += "backColor: \(backColor.hexCode)\n" encoded += "majorTickColor: \(majorTickColor.hexCode)\n" encoded += "majorTickAlpha: \(majorTickAlpha)\n" encoded += "minorTickColor: \(minorTickColor.hexCode)\n" @@ -285,6 +288,7 @@ extension String { encoded += "evenSolarTermTickColor: \(evenSolarTermTickColor.hexCode)\n" encoded += "oddSolarTermTickColor: \(oddSolarTermTickColor.hexCode)\n" encoded += "innerColorDark: \(innerColorDark.hexCode)\n" + encoded += "backColorDark: \(backColorDark.hexCode)\n" encoded += "majorTickColorDark: \(majorTickColorDark.hexCode)\n" encoded += "minorTickColorDark: \(minorTickColorDark.hexCode)\n" encoded += "fontColorDark: \(fontColorDark.hexCode)\n" @@ -323,7 +327,7 @@ extension String { return values } - func update(from values: [String: String]) { + func update(from values: [String: String], updateSize: Bool = true) { let seperatorRegex = /(\s*;|\{\})/ func readGradient(value: String?) -> Gradient? { guard let value = value else { return nil } @@ -353,6 +357,7 @@ extension String { secondRing = readGradient(value: values["secondRing"]) ?? secondRing thirdRing = readGradient(value: values["thirdRing"]) ?? thirdRing innerColor = values["innerColor"]?.colorValue ?? innerColor + backColor = values["backColor"]?.colorValue ?? backColor majorTickColor = values["majorTickColor"]?.colorValue ?? majorTickColor majorTickAlpha = values["majorTickAlpha"]?.floatValue ?? majorTickAlpha minorTickColor = values["minorTickColor"]?.colorValue ?? minorTickColor @@ -361,10 +366,11 @@ extension String { centerFontColor = readGradient(value: values["centerFontColor"]) ?? centerFontColor evenSolarTermTickColor = values["evenSolarTermTickColor"]?.colorValue ?? evenSolarTermTickColor oddSolarTermTickColor = values["oddSolarTermTickColor"]?.colorValue ?? oddSolarTermTickColor - innerColorDark = values["innerColorDark"]?.colorValue ?? innerColor - majorTickColorDark = values["majorTickColorDark"]?.colorValue ?? majorTickColor - minorTickColorDark = values["minorTickColorDark"]?.colorValue ?? minorTickColor - fontColorDark = values["fontColorDark"]?.colorValue ?? fontColor + innerColorDark = values["innerColorDark"]?.colorValue ?? innerColorDark + backColorDark = values["backColorDark"]?.colorValue ?? backColorDark + majorTickColorDark = values["majorTickColorDark"]?.colorValue ?? majorTickColorDark + minorTickColorDark = values["minorTickColorDark"]?.colorValue ?? minorTickColorDark + fontColorDark = values["fontColorDark"]?.colorValue ?? fontColorDark evenSolarTermTickColorDark = values["evenSolarTermTickColorDark"]?.colorValue ?? evenSolarTermTickColorDark oddSolarTermTickColorDark = values["oddSolarTermTickColorDark"]?.colorValue ?? oddSolarTermTickColorDark if let colourList = readColorList(values["planetIndicator"]), colourList.count == self.planetIndicator.count { @@ -386,15 +392,17 @@ extension String { centerTextHOffset = values["centerTextHorizontalOffset"]?.floatValue ?? centerTextHOffset verticalTextOffset = values["verticalTextOffset"]?.floatValue ?? verticalTextOffset horizontalTextOffset = values["horizontalTextOffset"]?.floatValue ?? horizontalTextOffset - if let width = values["watchWidth"]?.floatValue, let height = values["watchHeight"]?.floatValue { - watchSize = CGSize(width: width, height: height) + if updateSize { + if let width = values["watchWidth"]?.floatValue, let height = values["watchHeight"]?.floatValue { + watchSize = CGSize(width: width, height: height) + } } cornerRadiusRatio = values["cornerRadiusRatio"]?.floatValue ?? cornerRadiusRatio } - func update(from str: String) { + func update(from str: String, updateSize: Bool = true) { let values = extract(from: str) - update(from: values) + update(from: values, updateSize: updateSize) } func loadStatic() { @@ -417,9 +425,9 @@ extension String { }() let descriptor = FetchDescriptor(predicate: predicate, sortBy: [SortDescriptor(\.modifiedDate, order: .reverse)]) + var found = false do { let themes = try context.fetch(descriptor) - var found = false for theme in themes { if !found && !theme.isNil { self.update(from: theme.code!) @@ -427,27 +435,29 @@ extension String { break } } - if !found { - let filePath = Bundle.main.path(forResource: "layout", ofType: "txt")! - let defaultLayout = try! String(contentsOfFile: filePath) - self.update(from: defaultLayout) - } } catch { - fatalError(error.localizedDescription) + print(error.localizedDescription) + } + + if !found { + let filePath = Bundle.main.path(forResource: "layout", ofType: "txt")! + let defaultLayout = try! String(contentsOfFile: filePath) + self.update(from: defaultLayout) } } func saveDefault(context: ModelContext) { let defaultName = ThemeData.defaultName let deviceName = ThemeData.deviceName + try? LocalData.write(deviceName: deviceName) + let predicate = #Predicate { data in data.name == defaultName && data.deviceName == deviceName } let descriptor = FetchDescriptor(predicate: predicate, sortBy: [SortDescriptor(\.modifiedDate, order: .reverse)]) + var found = false do { - try LocalData.write(deviceName: deviceName) let themes = try context.fetch(descriptor) - var found = false for theme in themes { if !found && !theme.isNil { theme.update(code: self.encode()) @@ -456,12 +466,13 @@ extension String { context.delete(theme) } } - if !found { - let defaultTheme = ThemeData(name: ThemeData.defaultName, code: self.encode()) - context.insert(defaultTheme) - } } catch { - fatalError(error.localizedDescription) + print(error.localizedDescription) + } + + if !found { + let defaultTheme = ThemeData(name: ThemeData.defaultName, code: self.encode()) + context.insert(defaultTheme) } } } diff --git a/Shared/DataModel/Model.swift b/Shared/DataModel/Model.swift index 4c70569..45efd00 100644 --- a/Shared/DataModel/Model.swift +++ b/Shared/DataModel/Model.swift @@ -1,8 +1,8 @@ // // Model.swift -// ChineseTime +// Chinendar // -// Created by LEO Yoon-Tsaw on 9/21/21. +// Created by Leo Liu on 9/21/21. // import Foundation @@ -445,9 +445,20 @@ extension Array { } @Observable final class ChineseCalendar { + + struct ChineseDate: Hashable { + var month: Int + var day: Int + var leap: Bool = false + + static func == (lhs: ChineseDate, rhs: ChineseDate) -> Bool { + lhs.month == rhs.month && lhs.day == rhs.day && lhs.leap == rhs.leap + } + } + static let updateInterval: CGFloat = 14.4 //Seconds - static let month_chinese = ["冬月", "臘月", "正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月"] - static let month_chinese_compact = ["㋊", "㋋", "㋀", "㋁", "㋂", "㋃", "㋄", "㋅", "㋆", "㋇", "㋈", "㋉"] + static let month_chinese = ["正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "冬月", "臘月", ] + static let month_chinese_compact = ["㋀", "㋁", "㋂", "㋃", "㋄", "㋅", "㋆", "㋇", "㋈", "㋉", "㋊", "㋋"] static let day_chinese = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"] static let day_chinese_compact = ["㏠", "㏡", "㏢", "㏣", "㏤", "㏥", "㏦", "㏧", "㏨", "㏩", "㏪", "㏫", "㏬", "㏭", "㏮", "㏯", "㏰", "㏱", "㏲", "㏳", "㏴", "㏵", "㏶", "㏷", "㏸", "㏹", "㏺", "㏻", "㏼", "㏽"] static let terrestrial_branches = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"] @@ -460,7 +471,10 @@ extension Array { static let dayTimeName = ["夜中", "日出", "日中", "日入"] static let moonTimeName = ["月出", "月中", "月入"] static let moonPhases = ["朔", "望"] - static let holidays = ["正月一日": "元旦", "正月十五": "上元", "三月三日": "上巳", "五月五日": "端午", "七月七日": "七夕", "七月十五": "中元", "九月九日": "重陽", "八月十五": "中秋", "十月十五": "下元", "大年三十": "除夕"] + static let holidays = [ChineseDate(month: 1, day: 1): "元旦", ChineseDate(month: 1, day: 15): "上元", ChineseDate(month: 2, day: 2): "春社", + ChineseDate(month: 3, day: 3): "上巳", ChineseDate(month: 5, day: 5): "端午", ChineseDate(month: 7, day: 7): "七夕", + ChineseDate(month: 7, day: 15): "中元", ChineseDate(month: 9, day: 9): "重陽", ChineseDate(month: 8, day: 15): "中秋", + ChineseDate(month: 10, day: 15): "下元", ChineseDate(month: 12, day: 8): "臘祭", ChineseDate(month: 12, day: -1): "除夕"] static let start: Date = { var components = DateComponents() components.year = 1901 @@ -485,16 +499,16 @@ extension Array { private var _calendar: Calendar = .utcCalendar private var _location: CGPoint? = nil @ObservationIgnored private var _year: Int = 0 + @ObservationIgnored private var _numberOfMonths: Int = 0 @ObservationIgnored private var _year_length: Double = 0 @ObservationIgnored private var _solarTerms: [Date] = [] @ObservationIgnored private var _evenSolarTerms: [Date] = [] @ObservationIgnored private var _oddSolarTerms: [Date] = [] @ObservationIgnored private var _moonEclipses: [Date] = [] @ObservationIgnored private var _fullMoons: [Date] = [] - @ObservationIgnored private var _monthNames: [String] = [] - @ObservationIgnored private var _monthNamesFull: [String] = [] @ObservationIgnored private var _month: Int = -1 @ObservationIgnored private var _precise_month: Int = -1 + @ObservationIgnored private var _leap_month: Int = -1 @ObservationIgnored private var _day: Int = -1 @ObservationIgnored private var _sunTimes: [Date?] = [] @ObservationIgnored private var _moonTimes: [Date?] = [] @@ -552,7 +566,7 @@ extension Array { updateHour() } - private init(compact: Bool, time: Date, calendar: Calendar, location: CGPoint?, globalMonth: Bool, apparentTime: Bool, year: Int, year_length: Double, solarTerms: [Date], evenSolarTerms: [Date], oddSolarTerms: [Date], moonEclipses: [Date], fullMoons: [Date], monthNames: [String], monthNamesFull: [String], month: Int, precise_month: Int, day: Int, sunTimes: [Date?], moonTimes: [Date?], startHour: Date, endHour: Date, hourNames: [String], hour_string: String, quarter_string: String) { + private init(compact: Bool, time: Date, calendar: Calendar, location: CGPoint?, globalMonth: Bool, apparentTime: Bool, year: Int, year_length: Double, numberOfMonths: Int, solarTerms: [Date], evenSolarTerms: [Date], oddSolarTerms: [Date], moonEclipses: [Date], fullMoons: [Date], month: Int, precise_month: Int, leap_month: Int, day: Int, sunTimes: [Date?], moonTimes: [Date?], startHour: Date, endHour: Date, hourNames: [String], hour_string: String, quarter_string: String) { self._compact = compact self._time = time self._calendar = calendar @@ -561,15 +575,15 @@ extension Array { self._apparentTime = apparentTime self._year = year self._year_length = year_length + self._numberOfMonths = numberOfMonths self._solarTerms = solarTerms self._evenSolarTerms = evenSolarTerms self._oddSolarTerms = oddSolarTerms self._moonEclipses = moonEclipses self._fullMoons = fullMoons - self._monthNames = monthNames - self._monthNamesFull = monthNamesFull self._month = month self._precise_month = precise_month + self._leap_month = leap_month self._day = day self._sunTimes = sunTimes self._moonTimes = moonTimes @@ -581,7 +595,7 @@ extension Array { } var copy: ChineseCalendar { - ChineseCalendar(compact: _compact, time: _time, calendar: _calendar, location: _location, globalMonth: _globalMonth, apparentTime: _apparentTime, year: _year, year_length: _year_length, solarTerms: _solarTerms, evenSolarTerms: _evenSolarTerms, oddSolarTerms: _oddSolarTerms, moonEclipses: _moonEclipses, fullMoons: _fullMoons, monthNames: _monthNames, monthNamesFull: _monthNamesFull, month: _month, precise_month: _precise_month, day: _day, sunTimes: _sunTimes, moonTimes: _moonTimes, startHour: _startHour, endHour: _endHour, hourNames: _hourNames, hour_string: _hour_string, quarter_string: _quarter_string) + ChineseCalendar(compact: _compact, time: _time, calendar: _calendar, location: _location, globalMonth: _globalMonth, apparentTime: _apparentTime, year: _year, year_length: _year_length, numberOfMonths: _numberOfMonths, solarTerms: _solarTerms, evenSolarTerms: _evenSolarTerms, oddSolarTerms: _oddSolarTerms, moonEclipses: _moonEclipses, fullMoons: _fullMoons, month: _month, precise_month: _precise_month, leap_month: _leap_month, day: _day, sunTimes: _sunTimes, moonTimes: _moonTimes, startHour: _startHour, endHour: _endHour, hourNames: _hourNames, hour_string: _hour_string, quarter_string: _quarter_string) } private func updateYear() { @@ -645,33 +659,18 @@ extension Array { count = 0 i += 1 } - if thisEclipse >= solar_terms[0], thisEclipse < solar_terms[24] { + if thisEclipse > solar_terms[0], thisEclipse <= solar_terms[24] { monthCount.insert(thisEclipse) } } - var months_compact = [String]() - var months = [String]() - if monthCount.count == 12 { - months_compact = (Self.month_chinese_compact + Self.month_chinese_compact).slice(to: eclipse.count) - months = (Self.month_chinese + Self.month_chinese).slice(to: eclipse.count) - } else if monthCount.count > 12 { - var leap = 0 - var leapLabel = "" + var leap_month = -1 + if monthCount.count > 12 { for i in 0.. 1 { - return "\(chinese_month)\(chinese_day)" - } else { - return "\(chinese_month)\(chinese_day)日" - } + "\(monthString)\(dayString)" } var timeString: String { @@ -890,8 +884,25 @@ extension Array { } return phases } + + var monthNames: [String] { + var names = [String]() + let all_names = _compact ? Self.month_chinese_compact : Self.month_chinese + for i in 0..<_numberOfMonths { + let name = if _leap_month >= 0 && i > _leap_month { + all_names[(i - 3) %% 12] + } else if _leap_month >= 0 && i == _leap_month { + Self.leapLabel + all_names[(i - 3) %% 12] + } else { + all_names[(i - 2) %% 12] + } + names.append(Self.alternativeMonthName[name] ?? name) + } + return names + } var monthTicks: Ticks { + let months = self.monthNames var ticks = Ticks() var monthDivides: [Double] if _globalMonth { @@ -899,28 +910,33 @@ extension Array { } else { monthDivides = _moonEclipses.map { _solarTerms[0].distance(to: _calendar.startOfDay(for: $0, apparent: apparentTime, location: location)) / _year_length } } - monthDivides = monthDivides.filter { $0 > 0 && $0 < 1 } + monthDivides = monthDivides.filter { $0 > 0 && $0 <= 1 } + guard months.count == monthDivides.count else { return ticks } var previousMonthDivide = 0.0 var monthNames = [Ticks.TickName]() let minMonthLength: Double = (_compact ? 0.009 : 0.006) for i in 0.. minMonthLength * Double(_monthNames[i].count) { + if position - previousMonthDivide > minMonthLength * Double(months[i].count) { monthNames.append(Ticks.TickName( pos: position, - name: _monthNames[i], + name: months[i], active: previousMonthDivide <= currentDayInYear )) } previousMonthDivide = monthDivides[i] } - let position = (1 + previousMonthDivide) / 2 - if position - previousMonthDivide > minMonthLength * Double(_monthNames[(monthDivides.count) %% _monthNames.count].count) { - monthNames.append(Ticks.TickName( - pos: position, - name: _monthNames[(monthDivides.count) %% _monthNames.count], - active: previousMonthDivide <= currentDayInYear - )) + if let lastDivide = monthDivides.last, lastDivide < 1 { + let position = (1 + previousMonthDivide) / 2 + if position - previousMonthDivide > minMonthLength * Double(months[0].count) { + monthNames.append(Ticks.TickName( + pos: position, + name: months[0], + active: previousMonthDivide <= currentDayInYear + )) + } + } else { + monthDivides.popLast() } ticks.majorTicks = [0] + monthDivides @@ -959,9 +975,9 @@ extension Array { let allDayNames: [String] if _compact { - allDayNames = Self.day_chinese_compact.slice(to: monthLengthInWholeDays) + [Self.day_chinese_compact[0]] + allDayNames = Self.day_chinese_compact.slice(to: numberOfDaysInMonth) + [Self.day_chinese_compact[0]] } else { - allDayNames = Self.day_chinese.slice(to: monthLengthInWholeDays) + [Self.day_chinese[0]] + allDayNames = Self.day_chinese.slice(to: numberOfDaysInMonth) + [Self.day_chinese[0]] } var dayNames = [Ticks.TickName]() @@ -1182,6 +1198,15 @@ extension Array { var preciseMonth: Int { _globalMonth ? _precise_month : _month } + + var nominalMonth: Int { + let inLeapMonth = _leap_month >= 0 && _month >= _leap_month + return ((_month + (inLeapMonth ? 0 : 1) - 3) %% 12) + 1 + } + + var isLeapMonth: Bool { + _leap_month >= 0 && _month == _leap_month + } var day: Int { _day + 1 @@ -1190,8 +1215,12 @@ extension Array { var time: Date { _time } + + var numberOfMonths: Int { + _numberOfMonths + } - var monthLengthInWholeDays: Int { + var numberOfDaysInMonth: Int { let month = _globalMonth ? _precise_month : _month let monthStartDate = _calendar.startOfDay(for: _moonEclipses[month], apparent: apparentTime, location: location) let monthEndDate = _calendar.startOfDay(for: _moonEclipses[month + 1], apparent: apparentTime, location: location) @@ -1459,17 +1488,12 @@ extension Array { } var lunarHoliday: String? { - if let holiday = Self.holidays[self.dateString] { - return holiday - } else { - let nextDay = self.copy - nextDay.update(time: self.startOfNextDay + 1) - if nextDay.dateString == "正月一日" { - return Self.holidays["大年三十"] - } else { - return nil + for holiday in Self.holidays.keys { + if self.equals(date: holiday) { + return Self.holidays[holiday] } } + return nil } var holidays: [String] { @@ -1491,4 +1515,12 @@ extension Array { } return holidays } + + func equals(date: ChineseDate) -> Bool { + if date.day > 0 { + return date.leap == isLeapMonth && date.month == nominalMonth && date.day == day + } else { + return date.leap == isLeapMonth && date.month == nominalMonth && date.day == day - numberOfDaysInMonth - 1 + } + } } diff --git a/Shared/DataModel/PlanetModel.swift b/Shared/DataModel/PlanetModel.swift index ecb262d..4cf5722 100644 --- a/Shared/DataModel/PlanetModel.swift +++ b/Shared/DataModel/PlanetModel.swift @@ -1,8 +1,8 @@ // // PlanetModel.swift -// ChineseTime +// Chinendar // -// Created by LEO Yoon-Tsaw on 10/7/21. +// Created by Leo Liu on 10/7/21. // import Foundation diff --git a/Shared/DataModel/ThemeData.swift b/Shared/DataModel/ThemeData.swift index 94dec8e..a2e7628 100644 --- a/Shared/DataModel/ThemeData.swift +++ b/Shared/DataModel/ThemeData.swift @@ -1,6 +1,6 @@ // -// Layout.swift -// Chinese Time +// ThemeData.swift +// Chinendar // // Created by Leo Liu on 7/7/23. // @@ -14,6 +14,8 @@ import SystemConfiguration import UIKit #elseif os(watchOS) import WatchKit +#elseif os(visionOS) +import VisionKit #endif typealias ThemeData = DataSchemaV2.Layout @@ -24,19 +26,21 @@ extension ThemeData: Identifiable, Hashable { } #if os(macOS) - static let groupId = Bundle.main.object(forInfoDictionaryKey: "GroupID") as! String -#elseif os(iOS) - static let groupId = "group.ChineseTime" + static let groupId = Bundle.main.object(forInfoDictionaryKey: "GroupID") as! String +#elseif os(iOS) || os(visionOS) + static let groupId = "group.ChineseTime" #elseif os(watchOS) - static let groupId = "group.ChineseTime.Watch" + static let groupId = "group.ChineseTime.Watch" #endif #if os(macOS) - static let deviceName = SCDynamicStoreCopyComputerName(nil, nil).map { String($0) } ?? "Mac" + static let deviceName = SCDynamicStoreCopyComputerName(nil, nil).map { String($0) } ?? "Mac" #elseif os(iOS) - @MainActor static let deviceName = UIDevice.current.name + @MainActor static let deviceName = UIDevice.current.name #elseif os(watchOS) - static let deviceName = WKInterfaceDevice.current().name + static let deviceName = WKInterfaceDevice.current().name +#elseif os(visionOS) + @MainActor static let deviceName = UIDevice.current.name #endif static let defaultName = NSLocalizedString("Default", comment: "Default save file name") @@ -107,7 +111,7 @@ private func createContainer(schema: Schema, migrationPlan: SchemaMigrationPlan. } enum DataSchemaV2: VersionedSchema { - static let versionIdentifier: Schema.Version = .init(1, 1, 0) + static let versionIdentifier: Schema.Version = .init(1, 1, 1) static var models: [any PersistentModel.Type] { [Layout.self] } diff --git a/Shared/Environments.swift b/Shared/Environments.swift index 470e25d..205282d 100644 --- a/Shared/Environments.swift +++ b/Shared/Environments.swift @@ -1,6 +1,6 @@ // -// File.swift -// Chinese Time +// Environments.swift +// Chinendar // // Created by Leo Liu on 8/29/23. // diff --git a/Shared/InfoPlist.xcstrings b/Shared/InfoPlist.xcstrings index d606921..4939eb9 100644 --- a/Shared/InfoPlist.xcstrings +++ b/Shared/InfoPlist.xcstrings @@ -7,7 +7,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "Chinese Time" + "value" : "Chinendar" } }, "zh-Hans" : { @@ -30,7 +30,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "Chinese Time" + "value" : "Chinendar" } }, "zh-Hans" : { diff --git a/Shared/Locale.swift b/Shared/Locale.swift index 88d63a2..9f84fdf 100644 --- a/Shared/Locale.swift +++ b/Shared/Locale.swift @@ -1,6 +1,6 @@ // // Locale.swift -// Chinese Time +// Chinendar // // Created by Leo Liu on 8/18/23. // diff --git a/Shared/Localizable.xcstrings b/Shared/Localizable.xcstrings index d79ccc3..77e13bb 100644 --- a/Shared/Localizable.xcstrings +++ b/Shared/Localizable.xcstrings @@ -258,19 +258,19 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "# Why create this Chinese Time?\nIs the Chinese calendar still useful in daily life? In reality, it is practically useless, but as a form of cultural heritage, it can still serve as an exquisite decoration. Having seen too many traditional but outdated Chinese calendars, I had long wanted to create a modern one. That's why I made this.\nInspired by the design of watches, the months and years are displayed in a circular format similar to hours and minutes. With this design, the year, month, day, and hour can be easily read at a glance. Moreover, the calendar can also show the 24 solar terms, lunar phases, and leap months in an intuitive way.\n# What is the Chinese calendar?\nThe Chinese calendar is a traditional lunar-solar calendar system that is based on astronomical observations. It has a simple philosophy and unique beauty, but is challenging to calculate. Fortunately, modern technology has made the calculation much easier. In the past, people often wondered why the Chinese calendar date is irregular when comparing with Gregorian calendar dates, and do not follow a predictable pattern. However, after thorough study, the rules governing the Chinese calendar were found to be simple, yet the calculations they required were incredibly complex.\nIn the lunar-solar calendar system, the lunar part relates to the moon. The new moon, which occurs when the sun and the moon are at the same ecliptic longitude (and latitude during a solar eclipse), marks the first day of a month. This is an easily observable celestial phenomenon as the moon cannot be seen on that day. The full moon, on the other hand, is not as precisely observable since it can be slightly crescent or gibbous, making it difficult to determine the exact day. Hence, the ancient Chinese used the new moon to mark the beginning of month. Therefore, the first rule of the Chinese calendar system is: **the day of the new moon marks the first day of the month, and the period between two consecutive new moons is one month**.\nThe solar part refers to the sun in the Chinese calendar system. While the months are determined by the moon, but there needs a link between the lunar months and seasons. Therefore, it is the second rule that **winter solstices are always in the eleventh lunar month**. The winter solstice is the most important solar term, and it is easier to observe than the other solar terms, except for the summer solstice. The choice of the winter solstice as the starting point of the year might also be due to the fact that people have more free time during the winter season to make astronomical observations. Therefore, the winter solstice has become a significant holiday in ancient Chinese culture.\nOnce the 11th month is determined, the months between 2 consecutive winter solstices are named in sequence. Ideally, there should be 12 months between 2 winter solstices. However, the average year is 365.24 days long, which means there are 12.37 lunar months with an average of 29.53 days each. Sometimes there can be 13 months between two winter solstices, which requires an extra month, known as the leap month, to sync the lunar aspect to solar. To determine which month to add, the Chinese chose to use the 12 Even Solar Terms as a reference. There are 11 Even Solar Terms between two winter solstices, and if there are 13 lunar months, there will be a month without an Even Solar Term, which will be designated as the leap month. If there are 2 months without a solar term, only the first one will be designated as the leap month. Hence, the third and final rule: **if there are 13 new moons between two winter solstices, the first lunar month without an Even Solar Term repeats its preceding month, and is call Leap Month.**\n# Since it's an astronomical calendar, could the calculated dates differ due to different time zones?\nYes. \nThe Chinese calendar is defined based on celestial observations, and the ancient Chinese people mostly lived in East Asia, so their observations of celestial phenomena were similar. However, with global awareness, the problem of time zones arises. For example, if a new moon is observed in Beijing at 8 a.m. on the 23rd, that day is considered the first day of the month. But in New York, the new moon at 7 p.m. on the 22nd, which means 22nd is the first day. Therefore, countries that use the same calendar system, such as China, Korea, and Vietnam, may have slightly different dates for the first day of a month due to time differences.\nWhile the difference of month starts due to time difference is limited to 1 day, for a leap month, the difference can be much greater. The average interval between two solar terms is 30.44 days, and the average length of a lunar month is 29.53 days, which is not much different. Therefore, if there is no Even Solar Term within a lunar month, that month will be closely surrounded by Even Solar Terms. If there is a difference in the first day of the month, which month contains an Even Solar Term is a major question, and this difference can lead up to four months difference. While a difference of one day can be accepted, a difference of four months cannot be accepted.\nTherefore, there is a more precise way for leap month calculation: instead of counting EST in a month, count EST between 2 new moon moments. Although EST may fall on different dates due to time zones, the relative order of new moon and EST remains undisturbed. This is the \"**Finest Precision**\" option, which is not enabled by default and can be manually turned on.\n# What are Chinese Hour and sub-hour Quarter\nWhen you read \"3 quarters past noon\", what time is it exactly? What is the relationship between Hour and Quarter?. In fact, Hour and Quarter are different from what they mean in English.\nThe 12 words describing Hours originally referred to the twelve astrological signs used for year counting (associated with Jupiter's 11.83-year period). The oldest Hour counts was neither fixed at 12 a day, but can be wither 10 or 16. The length of each was also not fixed and was related to natural phenomena or daily activities, such as dawn, dusk, and breakfast time, and bedtime. The earliest precise time measurement was the water clock, on which Quarters were marked. **A day is divided into 100 Quarters with each Quarter equivalent to 14 minutes and 24 seconds**. However, counting up to 100 is difficult, so people used the 12 Hours in combination with Quarters to create the concept of a x Quarters past y Hour. The maximum Quarters after an Hour is limited, people could easily count them. This greatly improved readability.\nHowever, there was a problem: the interval between 2 Hours is 120 minutes, while the interval between Quarters is 14 minutes and 24 seconds. The former cannot divide the latter in whole. Therefore, only 4 Hours perfectly coincide with the Quarter while the others do not. Therefore, the duration of the first Quarter after each Hour is not the same. Those after the 1st, 4th, 7th and 10th Hour are complete Quarters, while those following other Hours are incomplete. The greatest common divisor of 60 minutes and 14.4 minutes is 2 minutes and 24 seconds, which is called a Minor Quarter. There are 6 Minor Quarters in a Quarter, and they were marked on the innermost ring on the clock.\nIt is worth noting that the ancient Chinese Hour refers to a moment, not a period. For example, the 1st Hour is the moment of 0:00, not the two-hour period from 23:00 the previous day to 1:00 the next day.\nAs for why Hour gradually had evolved to become time period, it is because with the advancement of timekeeping, an exquisite clock that displayed the Hour appeared some time in Song Dynasty. At noon, the 7th Hour appears in the center of the clock window, but the Hour did not just appear out of nowhere, instead, starting from 11:00, the 7th Hour sign enters in the corner of the window, at 12:00 reaches the center, and at 13:00 it disappears from view. This whole time period was then named after the Hour. In addition, each Hour was divided into two hours, with the first hour prefixed by Initial and the second hour by Proper.\n# Apparent Solar Time and Standard Time\nToday's timekeeping uses time zones. For example, when using UTC+8, noon is the noon at the meridian of 120°E longitude, and for places not exactly at 120°E, the true noon time is not 12:00. There is a **longitude time difference**. In addition, because the earth's orbit around the sun is not circular, it moves faster near perihelion and slower near aphelion, causing a slightly longer or shorter day than the average; this also affects the time of noon, which is called the **equation of time**.\nStandard time is the time commonly used in daily life, while apparent solar time is the time corrected for these two differences. The apparent solar noon is when the sun reaches its highest in the day, and the apparent solar midnight is when the sun is directly opposite behind the Earth. However, the noon and midnight in standard time have no astronomical significance.\n# What are the color marks on the Year Ring?\nIn the traditional Chinese practice, in addition to calculating days and time, the positions of the **five planets (Mercury, Venus, Mars, Jupiter and Saturn)** were also essential, for they are bright and moving. With modern astronomy, the positions of planets and moons can be calculated accurately. In particular, the positions of Jupiter and Saturn were also used for year counting in ancient China. Jupiter orbits the sun once every 11.86 years, which is approximately 12 years, so Jupiter's chronological year evolved into the Earthly Branches system of years. Saturn orbits the sun once every 29.5 years, and when combined with Jupiter, they form a cycle of 60 years, which is the famous Heavenly Stems and Earthly Branches system of years that is still used today.\nThere are **6 color marks on the Year Ring (5 planets and moon)**. To understand their position, first comes the fact that the 24 solar terms are both dates and ecliptic positions. For example, Spring Equinox is the position of the Sun on the ecliptic plane on the Spring Equinox day. If for example, Jupiter is at Spring Equinox means it's at the same direction as the Sun was on that day. The positions of Mercury and Venus are always near the Sun because their orbits are within the Earth's orbit. However, the positions of Mars, Jupiter and Saturn may not be near the Sun. The planets that are in front of the Sun (the transparent part on the Year Ring) rise before sunrise and set before sunset, while the planets that are behind the sun (the solid color part) rise after sunrise and set after sunset.\n# What are the color marks on the Month Ring?\nThere are generally 4 types: **New Moon, Full Moon, Odd Solar Term** and **Even Solar Term**, of which the exact colors can be changed in the settings. If the leap month is configured to \"Finest Precision\", then the Month Ring starts from the moment of the New Moon, and thus invalidates the need for New Moon mark, leaving only the other three color marks. The Full Moon marks the fullest moon moment in a month, you can observe for several months and tell whether the moon is the fullest on the 15th, 16th, or 17th. The Solar Term marks also correspond to the 24 solar terms on the Year Ring.\nWhen it is close to the time of a New Moon, Full Moon or Solar Term, the same color mark will also appear on the Day Ring and Hour Ring for accuracy. These four color marks appear on the **outer edge** of the Day and Hour rings.\n# Times of sunrise and moonrise\nThe times of sunrise and moonrise were crucial to ancient people and were essential in agriculture. So they are indispensable in the Chinese calendar.\nIf the location is enabled in settings, the local times of sunrise and moonrise will be displayed on the **inner edge** of Day Ring. When it is close to such a time, the same color mark will also appear on Hour Ring, also on the inner edge. There are 7 color marks in this category: **Sunrise, Noon, Sunset, Midnight, Moonrise, Moon at Meridian** and **Moonset**. The specific colors can also be changed in the settings. If the solar time setting is set to Apparent S Time, noon and midnight are no longer marked with color marks, since they are already apparent by time itself.\n# Terminologies\n**Solar Terms** are positions of Earth on its orbit. 4 solar terms are famous: 冬至 (Winter Solstice), 春分 (Spring Equinox), 夏至 (Summer Solstice), 秋分 (Autumn Equinox). Between each 2 of them, the 90° areas are further divided into 6 smaller divisions, with 5 more solar terms in each quadrant. This makes the total number of Solar Terms to 24, which are apart by 15° in the ecliptic plane.\n**Odd Solar Terms** are odd ones in solar terms, and thus are apart from each other by 30°. They do not include any of the equinoxes or solstices. The 12 of them are: 小寒, 立春, 驚蟄/啓蟄, 清明, 立夏, 芒種, 小暑, 立秋, 白露, 寒露, 立冬 and 大雪. 驚蟄/啓蟄 and 清明 were once Even Solar Terms before 85AC, then switched with 雨水 and 穀雨 respectively.\n**Even Solar Terms** are even ones in solar terms, also apart by 30°. They help determine the Leap Month in Chinese calendar (refer to \"What is the Chinese calendar\" section for details). The 12 of them are: 冬至 (Winter Solstice), 大寒, 雨水, 春分 (Spring Equinox), 穀雨, 小滿, 夏至 (Summer Solstice), 大暑, 處暑, 秋分 (Autumn Equinox), 霜降 and 小雪.\n**New Moon** is the moment when the sun and the moon are at the same ecliptic longitude (and latitude during a solar eclipse).\n**Full Moon** is the moment when the sun and the moon are opposite to each other over the Earth (lunar eclipse can happen on this moment).\n**Hour names** are 12 Earthly Branches in Chinese, apart from each other by 2 hours measured today. from 12am to before 12pm are: 子, 丑, 寅, 卯, 辰 and 巳, then from 12pm to before 12am next day are: 午, 未, 申, 酉, 戌 and 亥." + "value" : "# Why create this Chinendar?\nChinendar is abbreviation of **Chinese Calendar**. Is the Chinese calendar still useful in daily life? In reality, it is practically useless, but as a form of cultural heritage, it can still serve as an exquisite decoration. Having seen too many traditional but outdated Chinese calendars, I had long wanted to create a modern one. That's why I made this.\nInspired by the design of watches, the months and years are displayed in a circular format similar to hours and minutes. With this design, the year, month, day, and hour can be easily read at a glance. Moreover, the calendar can also show the 24 solar terms, lunar phases, and leap months in an intuitive way.\n# What is the Chinese calendar?\nThe Chinese calendar is a traditional **lunar-solar calendar system** that is based on astronomical observations. It has a simple philosophy and unique beauty, but is challenging to calculate. Fortunately, modern technology has made the calculation much easier. In the past, people often wondered why the Chinese calendar date is irregular when comparing with Gregorian calendar dates, and do not follow a predictable pattern. However, after thorough study, the rules governing the Chinese calendar were found to be simple, yet the calculations they required were incredibly complex.\nIn the lunar-solar calendar system, the lunar part relates to the moon. The new moon, which occurs when the sun and the moon are at the same ecliptic longitude (and latitude during a solar eclipse), marks the first day of a month. This is an easily observable celestial phenomenon as the moon cannot be seen on that day. The full moon, on the other hand, is not as precisely observable since it can be slightly crescent or gibbous, making it difficult to determine the exact day. Hence, the ancient Chinese used the new moon to mark the beginning of month. Therefore, the first rule of the Chinese calendar system is: **the day of the new moon marks the first day of the month, and the period between two consecutive new moons is one month**.\nThe solar part refers to the sun in the Chinese calendar system. While the months are determined by the moon, but there needs a link between the lunar months and seasons. Therefore, it is the second rule that **winter solstices are always in the eleventh lunar month**. The winter solstice is the most important solar term, and it is easier to observe than the other solar terms, except for the summer solstice. The choice of the winter solstice as the starting point of the year might also be due to the fact that people have more free time during the winter season to make astronomical observations. Therefore, the winter solstice has become a significant holiday in ancient Chinese culture.\nOnce the 11th month is determined, the months between 2 consecutive winter solstices are named in sequence. Ideally, there should be 12 months between 2 winter solstices. However, the average year is 365.24 days long, which means there are 12.37 lunar months with an average of 29.53 days each. Sometimes there can be 13 months between two winter solstices, which requires an extra month, known as the leap month, to sync the lunar aspect to solar. To determine which month to add, the Chinese chose to use the 12 Even Solar Terms as a reference. There are 11 Even Solar Terms between two winter solstices, and if there are 13 lunar months, there will be a month without an Even Solar Term, which will be designated as the leap month. If there are 2 months without a solar term, only the first one will be designated as the leap month. Hence, the third and final rule: **if there are 13 new moons between two winter solstices, the first lunar month without an Even Solar Term repeats its preceding month, and is call Leap Month.**\n# Since it's an astronomical calendar, could the calculated dates differ due to different time zones?\nYes. \nThe Chinese calendar is defined based on celestial observations, and the ancient Chinese people mostly lived in East Asia, so their observations of celestial phenomena were similar. However, with global awareness, the problem of time zones arises. For example, if a new moon is observed in Beijing at 8 a.m. on the 23rd, that day is considered the first day of the month. But in New York, the new moon at 7 p.m. on the 22nd, which means 22nd is the first day. Therefore, countries that use the same calendar system, such as China, Korea, and Vietnam, may have slightly different dates for the first day of a month due to time differences.\nWhile the difference of month starts due to time difference is limited to 1 day, for a leap month, the difference can be much greater. The average interval between two solar terms is 30.44 days, and the average length of a lunar month is 29.53 days, which is not much different. Therefore, if there is no Even Solar Term within a lunar month, that month will be closely surrounded by Even Solar Terms. If there is a difference in the first day of the month, which month contains an Even Solar Term is a major question, and this difference can lead up to four months difference. While a difference of one day can be accepted, a difference of four months cannot be accepted.\nTherefore, there is a more precise way for leap month calculation: instead of counting EST in a month, count EST between 2 new moon moments. Although EST may fall on different dates due to time zones, the relative order of new moon and EST remains undisturbed. This is the \"**Finest Precision**\" option, which is not enabled by default and can be manually turned on.\n# What are Chinese Hour and sub-hour Quarter\nWhen you read \"3 quarters past noon\", what time is it exactly? What is the relationship between Hour and Quarter?. In fact, Hour and Quarter are different from what they mean in English.\nThe 12 words describing Hours originally referred to the twelve astrological signs used for year counting (associated with Jupiter's 11.83-year period). The oldest Hour counts was neither fixed at 12 a day, but can be wither 10 or 16. The length of each was also not fixed and was related to natural phenomena or daily activities, such as dawn, dusk, and breakfast time, and bedtime. The earliest precise time measurement was the water clock, on which Quarters were marked. **A day is divided into 100 Quarters with each Quarter equivalent to 14 minutes and 24 seconds**. However, counting up to 100 is difficult, so people used the 12 Hours in combination with Quarters to create the concept of a x Quarters past y Hour. The maximum Quarters after an Hour is limited, people could easily count them. This greatly improved readability.\nHowever, there was a problem: the interval between 2 Hours is 120 minutes, while the interval between Quarters is 14 minutes and 24 seconds. The former cannot divide the latter in whole. Therefore, only 4 Hours perfectly coincide with the Quarter while the others do not. Therefore, the duration of the first Quarter after each Hour is not the same. Those after the 1st, 4th, 7th and 10th Hour are complete Quarters, while those following other Hours are incomplete. The greatest common divisor of 60 minutes and 14.4 minutes is 2 minutes and 24 seconds, which is called a Minor Quarter. There are 6 Minor Quarters in a Quarter, and they were marked on the innermost ring on the clock.\nIt is worth noting that the ancient Chinese Hour refers to a moment, not a period. For example, the 1st Hour is the moment of 0:00, not the two-hour period from 23:00 the previous day to 1:00 the next day.\nAs for why Hour gradually had evolved to become time period, it is because with the advancement of timekeeping, an exquisite clock that displayed the Hour appeared some time in Song Dynasty. At noon, the 7th Hour appears in the center of the clock window, but the Hour did not just appear out of nowhere, instead, starting from 11:00, the 7th Hour sign enters in the corner of the window, at 12:00 reaches the center, and at 13:00 it disappears from view. This whole time period was then named after the Hour. In addition, each Hour was divided into two hours, with the first hour prefixed by Initial and the second hour by Proper.\n# Apparent Solar Time and Standard Time\nToday's timekeeping uses time zones. For example, when using UTC+8, noon is the noon at the meridian of 120°E longitude, and for places not exactly at 120°E, the true noon time is not 12:00. There is a **longitude time difference**. In addition, because the earth's orbit around the sun is not circular, it moves faster near perihelion and slower near aphelion, causing a slightly longer or shorter day than the average; this also affects the time of noon, which is called the **equation of time**.\nStandard time is the time commonly used in daily life, while apparent solar time is the time corrected for these two differences. The apparent solar noon is when the sun reaches its highest in the day, and the apparent solar midnight is when the sun is directly opposite behind the Earth. However, the noon and midnight in standard time have no astronomical significance.\n# What are the color marks on the Year Ring?\nIn the traditional Chinese practice, in addition to calculating days and time, the positions of the **five planets (Mercury, Venus, Mars, Jupiter and Saturn)** were also essential, for they are bright and moving. With modern astronomy, the positions of planets and moons can be calculated accurately. In particular, the positions of Jupiter and Saturn were also used for year counting in ancient China. Jupiter orbits the sun once every 11.86 years, which is approximately 12 years, so Jupiter's chronological year evolved into the Earthly Branches system of years. Saturn orbits the sun once every 29.5 years, and when combined with Jupiter, they form a cycle of 60 years, which is the famous Heavenly Stems and Earthly Branches system of years that is still used today.\nThere are **6 color marks on the Year Ring (5 planets and moon)**. To understand their position, first comes the fact that the 24 solar terms are both dates and ecliptic positions. For example, Spring Equinox is the position of the Sun on the ecliptic plane on the Spring Equinox day. If for example, Jupiter is at Spring Equinox means it's at the same direction as the Sun was on that day. The positions of Mercury and Venus are always near the Sun because their orbits are within the Earth's orbit. However, the positions of Mars, Jupiter and Saturn may not be near the Sun. The planets that are in front of the Sun (the transparent part on the Year Ring) rise before sunrise and set before sunset, while the planets that are behind the sun (the solid color part) rise after sunrise and set after sunset.\n# What are the color marks on the Month Ring?\nThere are generally 4 types: **New Moon, Full Moon, Odd Solar Term** and **Even Solar Term**, of which the exact colors can be changed in the settings. If the leap month is configured to \"Finest Precision\", then the Month Ring starts from the moment of the New Moon, and thus invalidates the need for New Moon mark, leaving only the other three color marks. The Full Moon marks the fullest moon moment in a month, you can observe for several months and tell whether the moon is the fullest on the 15th, 16th, or 17th. The Solar Term marks also correspond to the 24 solar terms on the Year Ring.\nWhen it is close to the time of a New Moon, Full Moon or Solar Term, the same color mark will also appear on the Day Ring and Hour Ring for accuracy. These four color marks appear on the **outer edge** of the Day and Hour rings.\n# Times of sunrise and moonrise\nThe times of sunrise and moonrise were crucial to ancient people and were essential in agriculture. So they are indispensable in the Chinese calendar.\nIf the location is enabled in settings, the local times of sunrise and moonrise will be displayed on the **inner edge** of Day Ring. When it is close to such a time, the same color mark will also appear on Hour Ring, also on the inner edge. There are 7 color marks in this category: **Sunrise, Noon, Sunset, Midnight, Moonrise, Moon at Meridian** and **Moonset**. The specific colors can also be changed in the settings. If the solar time setting is set to Apparent S Time, noon and midnight are no longer marked with color marks, since they are already apparent by time itself.\n# Terminologies\n**Solar Terms** are positions of Earth on its orbit. 4 solar terms are famous: 冬至 (Winter Solstice), 春分 (Spring Equinox), 夏至 (Summer Solstice), 秋分 (Autumn Equinox). Between each 2 of them, the 90° areas are further divided into 6 smaller divisions, with 5 more solar terms in each quadrant. This makes the total number of Solar Terms to 24, which are apart by 15° in the ecliptic plane.\n**Odd Solar Terms** are odd ones in solar terms, and thus are apart from each other by 30°. They do not include any of the equinoxes or solstices. The 12 of them are: 小寒, 立春, 驚蟄/啓蟄, 清明, 立夏, 芒種, 小暑, 立秋, 白露, 寒露, 立冬 and 大雪. 驚蟄/啓蟄 and 清明 were once Even Solar Terms before 85AC, then switched with 雨水 and 穀雨 respectively.\n**Even Solar Terms** are even ones in solar terms, also apart by 30°. They help determine the Leap Month in Chinese calendar (refer to \"What is the Chinese calendar\" section for details). The 12 of them are: 冬至 (Winter Solstice), 大寒, 雨水, 春分 (Spring Equinox), 穀雨, 小滿, 夏至 (Summer Solstice), 大暑, 處暑, 秋分 (Autumn Equinox), 霜降 and 小雪.\n**New Moon** is the moment when the sun and the moon are at the same ecliptic longitude (and latitude during a solar eclipse).\n**Full Moon** is the moment when the sun and the moon are opposite to each other over the Earth (lunar eclipse can happen on this moment).\n**Hour names** are 12 Earthly Branches in Chinese, apart from each other by 2 hours measured today. from 12am to before 12pm are: 子, 丑, 寅, 卯, 辰 and 巳, then from 12pm to before 12am next day are: 午, 未, 申, 酉, 戌 and 亥." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "# 何以要做此华历?\n华历在生活中还有用吗?其实基本无用了,但作为一种文化传承,依然可以作为精美的装点。见惯了千篇一律,透露出十几年前那既不传统,又不现代的万年历,我就一直想做一款现代的华历,于是就做了。\n灵感取自表,把年月也仿似日、时一般做成轮。如此,年月日时皆一目了然,一年中的廿四节气、大小月、闰月亦能聚在一盘,直观呈现。\n# 华历是什么?\n华历是阴阳历,亦系天文历,一切皆以天文定,理念朴素,自有美感;但亦因此而难于计算,所幸在现代技术面前,计算不再是问题。以前每每感念新年年年不同,日历下方的小字上的华历日期也无甚规律,可当深入研究后才发现它的规则是如此简单,而所引出的计算又是无比复杂。\n阴阳历中的“阴”指的就系月了,新月,即月与日经度重叠的那一刻(如纬度亦重叠则为日蚀),所在之日为初一。因为日与月同经,同升共落,那一日看不见月,这是非常易于观测的天象,而月圆则没那么精确,圆一点、缺一点,幅度不大时并不明显,古人以新月定初一是很朴素的。所以第一条规则即系:**新月所在之日为初一,初一至下一初一前一日为一月**。\n阴阳历中的“阳”指的系日,月是以月定的,但没有定这个月是几月。给月定名是靠太阳完成的。为了让同样的月总是处在类似的季节,便有了第二条规定:**冬至必定在冬月(十一月)**。冬至是廿四节气中最重要的,其它节气对应的月可以有前后出入,之所以是冬至,因为冬至是北半球正午日影最长的一日,比其它除了夏至外的节气都更易观测,而选冬至不选夏至可能是因为冬季比较闲,无所事事的人就把冬至过成了一个重大节日,就显得比夏至重要了。\n冬月定了,到下个冬月之间的月就按顺序取名,如果中间正好有11个整月,那么完美。但一年365.24日中平均有12.37个平均为29.53日的月,有时候两个冬月之间有12个整G月,多了一个月,就得置闰月调整,这就麻烦了。想了一想,选了廿四节气中的十二个叫中气,两个冬至之间必定有且只有11个中气,如果有12个月,必定至少有一个月是无中气的,这倒霉月就叫闰月。如果碰巧有的月占了两个中气,就可能有两个无中气月,不能都闰了。总结就是:**两个冬至之间若有13个朔,则首个无中气月为闰月**。\n# 既然是天文历,会不会时区不同,计算出的日期也不同呢\n会的。\n华历的定义是从天象来的,古人都在东亚,走不出多远,天象都差不多;而现在视野开阔了,有了全球的概念,问题就复杂了。譬如长安23日早8点朔,23日即初一;而在纽约是22日晚7点朔,22日为初一。因此同样使用这套历法的中国、韩国、越南历,因为时差的缘故,可能初一的日期就略有不同。\n初一有前后一日的出入,闰月的出入就更大了。中气的平均间隔是30.44日,月平均长29.53日,相差不大,无中气月的前后必定紧邻前后两个中气。初一稍有不同,则哪个月无中气就会有巨大差别,前后可以相差4个月。一日的出入可以接受,四个月的出入就难以接受了。\n所以这里提供了另一种置闰法:中气包含的计算规则,由初一至下个初一之间,改为朔(精确时刻)至下个朔之间。随时区不同,中气可能落在不同日期,但朔时刻与中气时刻之间的先后关系是不随时区而变化的。此即“**精确至时刻**”选项,默认不开启,需手动打开。\n# 时、刻又是什么\n午时三刻是众所难忘的台词,午时三刻究竟系几点?时与刻是何关系,想必是常见的疑问。其实时与刻是两种全然不同的计时方法。\n十二辰本是天上十二个星域,用以记年的,最古老的时辰并不固定是十二个,有十个者,也有十六个者,时长亦不定,而以自然现象或作息命名,如旦、昏、朝食、人定……。最早的精确时计是漏,漏上画好刻。**一天分为百刻,一刻合今14分24秒**。但百刻能把人眼看花,古人把十二辰用以计时,同时结合了百刻,出现了某时某刻的说法。即在百刻之上同时画上十二个时辰,在过了某个时辰后就只数该时辰后多少刻。如此大大减轻了眼睛的负担,再也不会数错了。\n但问题来了,时辰之间间隔120分钟,刻之间间隔14分24秒,不能整除。所以子、卯、午、酉四时辰与刻完美重合,其它时辰则不重合。而且时辰之后第一刻所代表的时长并不相同。子、卯、午、酉后第一刻是完整的一刻,其它时辰后第一刻则不完整。一小时60分钟与一刻14分24秒的最大公约数为2分24秒,是为一小刻,一刻内有6小刻,在最内轮中画出了小刻。\n有一点需要明确的是,古代的时辰是一个时刻,非时段,子时就是0:00那一时刻,而并非前一日23:00至后一日1:00那两小时。子时三刻指子时后又过了三刻,而不是子时中的第三刻。\n至于为何时辰会有一段时间,如子时为23:00-1:00的印象?简单来说就是随着时计进步,出现了一种显示时辰牌的时钟,12:00时“午时”出现在窗口正中,而时辰牌不可能突然凭空出现,所以从11:00开始,“午时”牌出现在窗口角落,12:00在正中,13:00离开视线,这一段时间被叫做午时。在这之后,一个时辰被分成两小时,前一小时为某时“初”,后一小时为某时“正”。\n# 真太阳时和标准时\n当今计时使用时区,譬如使用东八区时,正午就是东经120°处之正午,凡不在东经120°之处者,真正的正午时间并不是标准时的12时,此间有**经度时差**。此外,因地球绕日所行非圆,在近日点附近绕行更速,此时一日略长于平均;而于远日点附近绕行更徐,一日略饾于平均,这也会影响正午时刻,这个差值叫**真平时差**。\n标准时即日常所用之时,而真太阳时则系校正此二项差值后之时。真太阳时的午正即当日太阳行经最高点之时,子正即太阳处于地球背后正对面之时。标准时的午正、子正则并无特别天文含义。\n# 年轮上的色块是何物\n在华历中,除了计日、计时,**五行星位置(辰、太白、荧惑、填、岁)**也是必备内容。当今有了现代天文学,行星和日月行迹都能精确计算了。其中填星和岁星位置曾在古代用于计年,如岁在大荒落、岁在辰,岁绕行太阳一周11.86年,约为12年,故岁星纪年演变为地支纪年,填星绕行一周29.5年,填与岁合并,约60年一周期,由此诞生演用至今的干支纪年。\n年轮上有**6个色块(5星+月)**。24节气既是日期,也是天球上的位置,如“清明”即清明时刻太阳所处的黄道位置,而岁星在清明即岁星在同一个黄道位置。辰星与太白星因处于地球轨道内,因此它们总是在太阳(即日轮进度条末位)附近,荧惑、填、岁则未必。而位于太阳前(即年轮上虚色部分)的星会在日出前升空,日入前入地;位于太阳后(即实色部份)的星会在日出后升空,日入后入地。\n# 月轮上的色块是何物\n一般有4种:**朔、望、节、气**,具体颜色可于设置内调整。若选精确至时刻置闰法,则月轮始自朔之刻,此时不标朔,只余另三种色块。望刻所在月最圆,可多观察几个月,看月圆究竟是十五还是十六,抑或是十七?气与闰月息息相关,无气之月一般是闰月。节气色块可与年轮上所标24节气相对应。\n当接近朔、望、节、气时刻时,同样的色块也会出现在日轮和时轮上,以便更精准定时。这四种色块出现于日、时轮时位于轮**外侧**。\n# 日月出入时刻\n日出入时刻对古人来说非常重要,与廿四节气同属对农事最重要的部份,系华历中不可或缺的。\n如果打开了定位,则可计算当地日、月出入时刻,显示于日轮**内侧**,当接近某一时刻时,相同色块亦会出现于时轮上,同样位于内侧。此类色块共有7种:**日出、日中、日入、夜半、月出、月中、月入**,具体颜色亦可经设置调整。若开启了真太阳时,因午正即日中、子正即半夜,此二类不再标出。\n# 名词简介\n**节**其实并无特别名称,但为与中气相区别,此处指节气中的奇数。含:小寒、立春、惊蛰(启蛰)、清明、立夏、芒种、小暑、立秋、白露、寒露、立冬、大雪,共12个。惊蛰(启蛰)、清明二节在后汉之前为中气,后汉元和二年分别与雨水、谷雨对调。\n**中气**指节气中的偶数。含:冬至、大寒、雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪,共12个。气是华历中重要的部份,无中气月与闰月有关(详见“华历是什么”条)。\n**朔**指月与日共处同一天球经度之时刻,因此月与日同出同入,月华为日光所蔽,故无月。日食发生于此刻。\n**望**指月运行至日之正对面(地球位于二者之间),日入时月出,日出时月入,故整夜可见月。月食发生于此刻。\n**五星**之古名与今不同。辰星即今之水星,又单名“星”;太白星即今之金星,以其为天空最亮之星,故名太白;荧惑即今之火星;岁星即今之木星,太岁乃与岁星相关但不同的概念;填星又作镇星,即今之土星。" + "value" : "# 何以要做此华历?\n华历即**中华日历**。华历在生活中还有用吗?其实基本无用了,但作为一种文化传承,依然可以作为精美的装点。见惯了千篇一律,透露出十几年前那既不传统,又不现代的万年历,我就一直想做一款现代的华历,于是就做了。\n灵感取自表,把年月也仿似日、时一般做成轮。如此,年月日时皆一目了然,一年中的廿四节气、大小月、闰月亦能聚在一盘,直观呈现。\n# 华历是什么?\n华历是**阴阳历**,亦系天文历,一切皆以天文定,理念朴素,自有美感;但亦因此而难于计算,所幸在现代技术面前,计算不再是问题。以前每每感念新年年年不同,日历下方的小字上的华历日期也无甚规律,可当深入研究后才发现它的规则是如此简单,而所引出的计算又是无比复杂。\n阴阳历中的“阴”指的就系月了,新月,即月与日经度重叠的那一刻(如纬度亦重叠则为日蚀),所在之日为初一。因为日与月同经,同升共落,那一日看不见月,这是非常易于观测的天象,而月圆则没那么精确,圆一点、缺一点,幅度不大时并不明显,古人以新月定初一是很朴素的。所以第一条规则即系:**新月所在之日为初一,初一至下一初一前一日为一月**。\n阴阳历中的“阳”指的系日,月是以月定的,但没有定这个月是几月。给月定名是靠太阳完成的。为了让同样的月总是处在类似的季节,便有了第二条规定:**冬至必定在冬月(十一月)**。冬至是廿四节气中最重要的,其它节气对应的月可以有前后出入,之所以是冬至,因为冬至是北半球正午日影最长的一日,比其它除了夏至外的节气都更易观测,而选冬至不选夏至可能是因为冬季比较闲,无所事事的人就把冬至过成了一个重大节日,就显得比夏至重要了。\n冬月定了,到下个冬月之间的月就按顺序取名,如果中间正好有11个整月,那么完美。但一年365.24日中平均有12.37个平均为29.53日的月,有时候两个冬月之间有12个整G月,多了一个月,就得置闰月调整,这就麻烦了。想了一想,选了廿四节气中的十二个叫中气,两个冬至之间必定有且只有11个中气,如果有12个月,必定至少有一个月是无中气的,这倒霉月就叫闰月。如果碰巧有的月占了两个中气,就可能有两个无中气月,不能都闰了。总结就是:**两个冬至之间若有13个朔,则首个无中气月为闰月**。\n# 既然是天文历,会不会时区不同,计算出的日期也不同呢\n会的。\n华历的定义是从天象来的,古人都在东亚,走不出多远,天象都差不多;而现在视野开阔了,有了全球的概念,问题就复杂了。譬如长安23日早8点朔,23日即初一;而在纽约是22日晚7点朔,22日为初一。因此同样使用这套历法的中国、韩国、越南历,因为时差的缘故,可能初一的日期就略有不同。\n初一有前后一日的出入,闰月的出入就更大了。中气的平均间隔是30.44日,月平均长29.53日,相差不大,无中气月的前后必定紧邻前后两个中气。初一稍有不同,则哪个月无中气就会有巨大差别,前后可以相差4个月。一日的出入可以接受,四个月的出入就难以接受了。\n所以这里提供了另一种置闰法:中气包含的计算规则,由初一至下个初一之间,改为朔(精确时刻)至下个朔之间。随时区不同,中气可能落在不同日期,但朔时刻与中气时刻之间的先后关系是不随时区而变化的。此即“**精确至时刻**”选项,默认不开启,需手动打开。\n# 时、刻又是什么\n午时三刻是众所难忘的台词,午时三刻究竟系几点?时与刻是何关系,想必是常见的疑问。其实时与刻是两种全然不同的计时方法。\n十二辰本是天上十二个星域,用以记年的,最古老的时辰并不固定是十二个,有十个者,也有十六个者,时长亦不定,而以自然现象或作息命名,如旦、昏、朝食、人定……。最早的精确时计是漏,漏上画好刻。**一天分为百刻,一刻合今14分24秒**。但百刻能把人眼看花,古人把十二辰用以计时,同时结合了百刻,出现了某时某刻的说法。即在百刻之上同时画上十二个时辰,在过了某个时辰后就只数该时辰后多少刻。如此大大减轻了眼睛的负担,再也不会数错了。\n但问题来了,时辰之间间隔120分钟,刻之间间隔14分24秒,不能整除。所以子、卯、午、酉四时辰与刻完美重合,其它时辰则不重合。而且时辰之后第一刻所代表的时长并不相同。子、卯、午、酉后第一刻是完整的一刻,其它时辰后第一刻则不完整。一小时60分钟与一刻14分24秒的最大公约数为2分24秒,是为一小刻,一刻内有6小刻,在最内轮中画出了小刻。\n有一点需要明确的是,古代的时辰是一个时刻,非时段,子时就是0:00那一时刻,而并非前一日23:00至后一日1:00那两小时。子时三刻指子时后又过了三刻,而不是子时中的第三刻。\n至于为何时辰会有一段时间,如子时为23:00-1:00的印象?简单来说就是随着时计进步,出现了一种显示时辰牌的时钟,12:00时“午时”出现在窗口正中,而时辰牌不可能突然凭空出现,所以从11:00开始,“午时”牌出现在窗口角落,12:00在正中,13:00离开视线,这一段时间被叫做午时。在这之后,一个时辰被分成两小时,前一小时为某时“初”,后一小时为某时“正”。\n# 真太阳时和标准时\n当今计时使用时区,譬如使用东八区时,正午就是东经120°处之正午,凡不在东经120°之处者,真正的正午时间并不是标准时的12时,此间有**经度时差**。此外,因地球绕日所行非圆,在近日点附近绕行更速,此时一日略长于平均;而于远日点附近绕行更徐,一日略饾于平均,这也会影响正午时刻,这个差值叫**真平时差**。\n标准时即日常所用之时,而真太阳时则系校正此二项差值后之时。真太阳时的午正即当日太阳行经最高点之时,子正即太阳处于地球背后正对面之时。标准时的午正、子正则并无特别天文含义。\n# 年轮上的色块是何物\n在华历中,除了计日、计时,**五行星位置(辰、太白、荧惑、填、岁)**也是必备内容。当今有了现代天文学,行星和日月行迹都能精确计算了。其中填星和岁星位置曾在古代用于计年,如岁在大荒落、岁在辰,岁绕行太阳一周11.86年,约为12年,故岁星纪年演变为地支纪年,填星绕行一周29.5年,填与岁合并,约60年一周期,由此诞生演用至今的干支纪年。\n年轮上有**6个色块(5星+月)**。24节气既是日期,也是天球上的位置,如“清明”即清明时刻太阳所处的黄道位置,而岁星在清明即岁星在同一个黄道位置。辰星与太白星因处于地球轨道内,因此它们总是在太阳(即日轮进度条末位)附近,荧惑、填、岁则未必。而位于太阳前(即年轮上虚色部分)的星会在日出前升空,日入前入地;位于太阳后(即实色部份)的星会在日出后升空,日入后入地。\n# 月轮上的色块是何物\n一般有4种:**朔、望、节、气**,具体颜色可于设置内调整。若选精确至时刻置闰法,则月轮始自朔之刻,此时不标朔,只余另三种色块。望刻所在月最圆,可多观察几个月,看月圆究竟是十五还是十六,抑或是十七?气与闰月息息相关,无气之月一般是闰月。节气色块可与年轮上所标24节气相对应。\n当接近朔、望、节、气时刻时,同样的色块也会出现在日轮和时轮上,以便更精准定时。这四种色块出现于日、时轮时位于轮**外侧**。\n# 日月出入时刻\n日出入时刻对古人来说非常重要,与廿四节气同属对农事最重要的部份,系华历中不可或缺的。\n如果打开了定位,则可计算当地日、月出入时刻,显示于日轮**内侧**,当接近某一时刻时,相同色块亦会出现于时轮上,同样位于内侧。此类色块共有7种:**日出、日中、日入、夜半、月出、月中、月入**,具体颜色亦可经设置调整。若开启了真太阳时,因午正即日中、子正即半夜,此二类不再标出。\n# 名词简介\n**节**其实并无特别名称,但为与中气相区别,此处指节气中的奇数。含:小寒、立春、惊蛰(启蛰)、清明、立夏、芒种、小暑、立秋、白露、寒露、立冬、大雪,共12个。惊蛰(启蛰)、清明二节在后汉之前为中气,后汉元和二年分别与雨水、谷雨对调。\n**中气**指节气中的偶数。含:冬至、大寒、雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪,共12个。气是华历中重要的部份,无中气月与闰月有关(详见“华历是什么”条)。\n**朔**指月与日共处同一天球经度之时刻,因此月与日同出同入,月华为日光所蔽,故无月。日食发生于此刻。\n**望**指月运行至日之正对面(地球位于二者之间),日入时月出,日出时月入,故整夜可见月。月食发生于此刻。\n**五星**之古名与今不同。辰星即今之水星,又单名“星”;太白星即今之金星,以其为天空最亮之星,故名太白;荧惑即今之火星;岁星即今之木星,太岁乃与岁星相关但不同的概念;填星又作镇星,即今之土星。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "# 何以要做此華曆?\n華曆在生活中還有用嗎?其實基本無用了,但作爲一種文化傳承,依然可以作爲精美的裝點。見慣了千篇一律,透露出十幾年前那既不傳統,又不現代的萬年曆,我就一直想做一款現代的華曆,於是就做了。\n靈感取自錶,把年月也倣似日、時一般做成輪。如此,年月日時皆一目瞭然,一年中的廿四節氣、大小月、閏月亦能聚在一盤,直觀呈現。\n# 華曆是甚麼?\n華曆是陰陽曆,亦係天文曆,一切皆以天文定,理念樸素,自有美感;但亦因此而難於計算,所幸在現代技術面前,計算不再是問題。以前每每感念新年年年不同,日曆下方的小字上的華曆日期也無甚規律,可當深入研究後才發現它的規則是如此簡單,而所引出的計算又是無比複雜。\n陰陽曆中的「陰」指的就係月了,新月,即月與日經度重疊的那一刻(如緯度亦重疊則爲日蝕),所在之日爲初一。因爲日與月同經,同升共落,那一日看不見月,這是非常易於觀測的天象,而月圓則沒那麼精確,圓一點、缺一點,幅度不大時並不明顯,古人以新月定初一是很樸素的。所以第一條規則即係:**新月所在之日爲初一,初一至下一初一前一日爲一月**。\n陰陽曆中的「陽」指的係日,月是以月定的,但沒有定這個月是幾月。給月定名是靠太陽完成的。爲了讓同樣的月總是處在類似的季節,便有了第二條規定:**冬至必定在冬月(十一月)**。冬至是廿四節氣中最重要的,其它節氣對應的月可以有前後出入,之所以是冬至,因爲冬至是北半球正午日影最長的一日,比其它除了夏至外的節氣都更易觀測,而選冬至不選夏至可能是因爲冬季比較閒,無所事事的人就把冬至過成了一個重大節日,就顯得比夏至重要了。\n冬月定了,到下個冬月之間的月就按順序取名,如果中間正好有11個整月,那麼完美。但一年365.24日中平均有12.37個平均爲29.53日的月,有時候兩個冬月之間有12個整月,多了一個月,就得置閏月調整,這就麻煩了。想了一想,選了廿四節氣中的十二個叫中氣,兩個冬至之間必定有且只有11個中氣,如果有12個月,必定至少有一個月是無中氣的,這倒霉月就叫閏月。如果碰巧有的月佔了兩個中氣,就可能有兩個無中氣月,不能都閏了。總結就是:**兩個冬至之間若有13個朔,則首個無中氣月爲閏月**。\n# 既然是天文曆,會不會時區不同,計算出的日期也不同呢\n會的。\n華曆的定義是從天象來的,古人都在東亞,走不出多遠,天象都差不多;而現在視野開闊了,有了全球的概念,問題就複雜了。譬如長安23日早8點朔,23日即初一;而在紐約是22日晚7點朔,22日爲初一。因此同樣使用這套曆法的中國、韓國、越南曆,因爲時差的緣故,可能初一的日期就略有不同。\n初一有前後一日的出入,閏月的出入就更大了。中氣的平均間隔是30.44日,月平均長29.53日,相差不大,無中氣月的前後必定緊鄰前後兩個中氣。初一稍有不同,則哪個月無中氣就會有巨大差別,前後可以相差4個月。一日的出入可以接受,四個月的出入就難以接受了。\n所以這裏提供了另一種置閏法:中氣包含的計算規則,由初一至下個初一之間,改爲朔(精確時刻)至下個朔之間。隨時區不同,中氣可能落在不同日期,但朔時刻與中氣時刻之間的先後關係是不隨時區而變化的。此即「**精確至時刻**」選項,默認不開啓,需手動打開。\n# 時、刻又是甚麼\n午時三刻是眾所難忘的台詞,午時三刻究竟係幾點?時與刻是何關係,想必是常見的疑問。其實時與刻是兩種全然不同的計時方法。\n十二辰本是天上十二個星域,用以記年的,最古老的時辰並不固定是十二個,有十個者,也有十六個者,時長亦不定,而以自然現象或作息命名,如旦、昏、朝食、人定……。最早的精確時計是漏,漏上畫好刻。**一天分爲百刻,一刻合今14分24秒**。但百刻能把人眼看花,古人把十二辰用以計時,同時結合了百刻,出現了某時某刻的說法。即在百刻之上同時畫上十二個時辰,在過了某個時辰後就只數該時辰後多少刻。如此大大減輕了眼睛的負擔,再也不會數錯了。\n但問題來了,時辰之間間隔120分鐘,刻之間間隔14分24秒,不能整除。所以子、卯、午、酉四時辰與刻完美重合,其它時辰則不重合。而且時辰之後第一刻所代表的時長並不相同。子、卯、午、酉後第一刻是完整的一刻,其它時辰後第一刻則不完整。一小時60分鐘與一刻14分24秒的最大公約數爲2分24秒,是爲一小刻,一刻內有6小刻,在最內輪中畫出了小刻。\n有一點需要明確的是,古代的時辰是一個時刻,非時段,子時就是0:00那一時刻,而並非前一日23:00至後一日1:00那兩小時。子時三刻指子時後又過了三刻,而不是子時中的第三刻。\n至於爲何時辰會有一段時間,如子時爲23:00-1:00的印象?簡單來說就是隨著時計進步,出現了一種顯示時辰牌的時鐘,12:00時「午時」出現在窗口正中,而時辰牌不可能突然憑空出現,所以從11:00開始,「午時」牌出現在窗口角落,12:00在正中,13:00離開視線,這一段時間被叫做午時。在這之後,一個時辰被分成兩小時,前一小時爲某時「初」,後一小時爲某時「正」。\n# 真太陽時和標準時\n當今計時使用時區,譬如使用東八區時,正午就是東經120°處之正午,凡不在東經120°之處者,真正的正午時間並不是標準時的12時,此間有**經度時差**。此外,因地球繞日所行非圓,在近日點附近繞行更速,此時一日略長於平均;而於遠日點附近繞行更徐,一日略餖於平均,這也會影響正午時刻,這個差值叫**真平時差**。\n標準時即日常所用之時,而真太陽時則係校正此二項差值後之時。真太陽時的午正即當日太陽行經最高點之時,子正即太陽處於地球背後正對面之時。標準時的午正、子正則並無特別天文含義。\n# 年輪上的色塊是何物\n在華曆中,除了計日、計時,**五行星位置(辰、太白、熒惑、填、歲)**也是必備內容。當今有了現代天文學,行星和日月行跡都能精確計算了。其中填星和歲星位置曾在古代用於計年,如歲在大荒落、歲在辰,歲繞行太陽一週11.86年,約爲12年,故歲星紀年演變爲地支紀年,填星繞行一週29.5年,填與歲合併,約60年一週期,由此誕生演用至今的干支紀年。\n年輪上有**6個色塊(5星+月)**。24節氣既是日期,也是天球上的位置,如「清明」即清明時刻太陽所處的黃道位置,而歲星在清明即歲星在同一個黃道位置。辰星與太白星因處於地球軌道內,因此它們總是在太陽(即日輪進度條末位)附近,熒惑、填、歲則未必。而位於太陽前(即年輪上虚色部分)的星會在日出前升空,日入前入地;位於太陽後(即實色部份)的星會在日出後升空,日入後入地。\n# 月輪上的色塊是何物\n一般有4種:**朔、望、節、氣**,具體顏色可於設置內調整。若選精確至時刻置閏法,則月輪始自朔之刻,此時不標朔,只餘另三種色塊。望刻所在月最圓,可多觀察幾個月,看月圓究竟是十五還是十六,抑或是十七?氣與閏月息息相關,無氣之月一般是閏月。節氣色塊可與年輪上所標24節氣相對應。\n當接近朔、望、節、氣時刻時,同樣的色塊也會出現在日輪和時輪上,以便更精準定時。這四種色塊出現於日、時輪時位於輪**外側**。\n# 日月出入時刻\n日出入時刻對古人來說非常重要,與廿四節氣同屬對農事最重要的部份,係華曆中不可或缺的。\n如果打開了定位,則可計算當地日、月出入時刻,顯示於日輪**內側**,當接近某一時刻時,相同色塊亦會出現於時輪上,同樣位於內側。此類色塊共有7種:**日出、日中、日入、夜半、月出、月中、月入**,具體顏色亦可經設置調整。若開啓了真太陽時,因午正即日中、子正即半夜,此二類不再標出。\n# 名詞簡介\n**節氣**其實並無特別名稱,但爲與中氣相區別,此處指節氣中的奇数。含:大雪、小寒、立春、驚蟄(啓蟄)、清明、立夏、芒種、小暑、立秋、白露、寒露、立冬,共12個。驚蟄(啓蟄)、清明二節在後漢之前爲中氣,後漢元和二年分別與雨水、穀雨對調。\n**中氣**指節氣中的偶數。含:冬至、大寒、雨水、春分、穀雨、小滿、夏至、大暑、處暑、秋分、霜降、小雪,共12個。氣是華曆中重要的部份,無中氣月與閏月有關(詳見「華曆是甚麼」條)。\n**朔**指月與日共處同一天球經度之時刻,因此月與日同出同入,月華爲日光所蔽,故無月。日食發生於此刻。\n**望**指月運行至日之正對面(地球位於二者之間),日入時月出,日出時月入,故整夜可見月。月食發生於此刻。\n**五星**之古名與今不同。辰星即今之水星,又單名「星」;太白星即今之金星,以其爲天空最亮之星,故名太白;熒惑即今之火星;歲星即今之木星,太歲乃與歲星相關但不同的概念;填星又作鎮星,即今之土星。" + "value" : "# 何以要做此華曆?\n華曆即**中華日曆**。華曆在生活中還有用嗎?其實基本無用了,但作爲一種文化傳承,依然可以作爲精美的裝點。見慣了千篇一律,透露出十幾年前那既不傳統,又不現代的萬年曆,我就一直想做一款現代的華曆,於是就做了。\n靈感取自錶,把年月也倣似日、時一般做成輪。如此,年月日時皆一目瞭然,一年中的廿四節氣、大小月、閏月亦能聚在一盤,直觀呈現。\n# 華曆是甚麼?\n華曆是**陰陽曆**,亦係天文曆,一切皆以天文定,理念樸素,自有美感;但亦因此而難於計算,所幸在現代技術面前,計算不再是問題。以前每每感念新年年年不同,日曆下方的小字上的華曆日期也無甚規律,可當深入研究後才發現它的規則是如此簡單,而所引出的計算又是無比複雜。\n陰陽曆中的「陰」指的就係月了,新月,即月與日經度重疊的那一刻(如緯度亦重疊則爲日蝕),所在之日爲初一。因爲日與月同經,同升共落,那一日看不見月,這是非常易於觀測的天象,而月圓則沒那麼精確,圓一點、缺一點,幅度不大時並不明顯,古人以新月定初一是很樸素的。所以第一條規則即係:**新月所在之日爲初一,初一至下一初一前一日爲一月**。\n陰陽曆中的「陽」指的係日,月是以月定的,但沒有定這個月是幾月。給月定名是靠太陽完成的。爲了讓同樣的月總是處在類似的季節,便有了第二條規定:**冬至必定在冬月(十一月)**。冬至是廿四節氣中最重要的,其它節氣對應的月可以有前後出入,之所以是冬至,因爲冬至是北半球正午日影最長的一日,比其它除了夏至外的節氣都更易觀測,而選冬至不選夏至可能是因爲冬季比較閒,無所事事的人就把冬至過成了一個重大節日,就顯得比夏至重要了。\n冬月定了,到下個冬月之間的月就按順序取名,如果中間正好有11個整月,那麼完美。但一年365.24日中平均有12.37個平均爲29.53日的月,有時候兩個冬月之間有12個整月,多了一個月,就得置閏月調整,這就麻煩了。想了一想,選了廿四節氣中的十二個叫中氣,兩個冬至之間必定有且只有11個中氣,如果有12個月,必定至少有一個月是無中氣的,這倒霉月就叫閏月。如果碰巧有的月佔了兩個中氣,就可能有兩個無中氣月,不能都閏了。總結就是:**兩個冬至之間若有13個朔,則首個無中氣月爲閏月**。\n# 既然是天文曆,會不會時區不同,計算出的日期也不同呢\n會的。\n華曆的定義是從天象來的,古人都在東亞,走不出多遠,天象都差不多;而現在視野開闊了,有了全球的概念,問題就複雜了。譬如長安23日早8點朔,23日即初一;而在紐約是22日晚7點朔,22日爲初一。因此同樣使用這套曆法的中國、韓國、越南曆,因爲時差的緣故,可能初一的日期就略有不同。\n初一有前後一日的出入,閏月的出入就更大了。中氣的平均間隔是30.44日,月平均長29.53日,相差不大,無中氣月的前後必定緊鄰前後兩個中氣。初一稍有不同,則哪個月無中氣就會有巨大差別,前後可以相差4個月。一日的出入可以接受,四個月的出入就難以接受了。\n所以這裏提供了另一種置閏法:中氣包含的計算規則,由初一至下個初一之間,改爲朔(精確時刻)至下個朔之間。隨時區不同,中氣可能落在不同日期,但朔時刻與中氣時刻之間的先後關係是不隨時區而變化的。此即「**精確至時刻**」選項,默認不開啓,需手動打開。\n# 時、刻又是甚麼\n午時三刻是眾所難忘的台詞,午時三刻究竟係幾點?時與刻是何關係,想必是常見的疑問。其實時與刻是兩種全然不同的計時方法。\n十二辰本是天上十二個星域,用以記年的,最古老的時辰並不固定是十二個,有十個者,也有十六個者,時長亦不定,而以自然現象或作息命名,如旦、昏、朝食、人定……。最早的精確時計是漏,漏上畫好刻。**一天分爲百刻,一刻合今14分24秒**。但百刻能把人眼看花,古人把十二辰用以計時,同時結合了百刻,出現了某時某刻的說法。即在百刻之上同時畫上十二個時辰,在過了某個時辰後就只數該時辰後多少刻。如此大大減輕了眼睛的負擔,再也不會數錯了。\n但問題來了,時辰之間間隔120分鐘,刻之間間隔14分24秒,不能整除。所以子、卯、午、酉四時辰與刻完美重合,其它時辰則不重合。而且時辰之後第一刻所代表的時長並不相同。子、卯、午、酉後第一刻是完整的一刻,其它時辰後第一刻則不完整。一小時60分鐘與一刻14分24秒的最大公約數爲2分24秒,是爲一小刻,一刻內有6小刻,在最內輪中畫出了小刻。\n有一點需要明確的是,古代的時辰是一個時刻,非時段,子時就是0:00那一時刻,而並非前一日23:00至後一日1:00那兩小時。子時三刻指子時後又過了三刻,而不是子時中的第三刻。\n至於爲何時辰會有一段時間,如子時爲23:00-1:00的印象?簡單來說就是隨著時計進步,出現了一種顯示時辰牌的時鐘,12:00時「午時」出現在窗口正中,而時辰牌不可能突然憑空出現,所以從11:00開始,「午時」牌出現在窗口角落,12:00在正中,13:00離開視線,這一段時間被叫做午時。在這之後,一個時辰被分成兩小時,前一小時爲某時「初」,後一小時爲某時「正」。\n# 真太陽時和標準時\n當今計時使用時區,譬如使用東八區時,正午就是東經120°處之正午,凡不在東經120°之處者,真正的正午時間並不是標準時的12時,此間有**經度時差**。此外,因地球繞日所行非圓,在近日點附近繞行更速,此時一日略長於平均;而於遠日點附近繞行更徐,一日略餖於平均,這也會影響正午時刻,這個差值叫**真平時差**。\n標準時即日常所用之時,而真太陽時則係校正此二項差值後之時。真太陽時的午正即當日太陽行經最高點之時,子正即太陽處於地球背後正對面之時。標準時的午正、子正則並無特別天文含義。\n# 年輪上的色塊是何物\n在華曆中,除了計日、計時,**五行星位置(辰、太白、熒惑、填、歲)**也是必備內容。當今有了現代天文學,行星和日月行跡都能精確計算了。其中填星和歲星位置曾在古代用於計年,如歲在大荒落、歲在辰,歲繞行太陽一週11.86年,約爲12年,故歲星紀年演變爲地支紀年,填星繞行一週29.5年,填與歲合併,約60年一週期,由此誕生演用至今的干支紀年。\n年輪上有**6個色塊(5星+月)**。24節氣既是日期,也是天球上的位置,如「清明」即清明時刻太陽所處的黃道位置,而歲星在清明即歲星在同一個黃道位置。辰星與太白星因處於地球軌道內,因此它們總是在太陽(即日輪進度條末位)附近,熒惑、填、歲則未必。而位於太陽前(即年輪上虚色部分)的星會在日出前升空,日入前入地;位於太陽後(即實色部份)的星會在日出後升空,日入後入地。\n# 月輪上的色塊是何物\n一般有4種:**朔、望、節、氣**,具體顏色可於設置內調整。若選精確至時刻置閏法,則月輪始自朔之刻,此時不標朔,只餘另三種色塊。望刻所在月最圓,可多觀察幾個月,看月圓究竟是十五還是十六,抑或是十七?氣與閏月息息相關,無氣之月一般是閏月。節氣色塊可與年輪上所標24節氣相對應。\n當接近朔、望、節、氣時刻時,同樣的色塊也會出現在日輪和時輪上,以便更精準定時。這四種色塊出現於日、時輪時位於輪**外側**。\n# 日月出入時刻\n日出入時刻對古人來說非常重要,與廿四節氣同屬對農事最重要的部份,係華曆中不可或缺的。\n如果打開了定位,則可計算當地日、月出入時刻,顯示於日輪**內側**,當接近某一時刻時,相同色塊亦會出現於時輪上,同樣位於內側。此類色塊共有7種:**日出、日中、日入、夜半、月出、月中、月入**,具體顏色亦可經設置調整。若開啓了真太陽時,因午正即日中、子正即半夜,此二類不再標出。\n# 名詞簡介\n**節氣**其實並無特別名稱,但爲與中氣相區別,此處指節氣中的奇数。含:大雪、小寒、立春、驚蟄(啓蟄)、清明、立夏、芒種、小暑、立秋、白露、寒露、立冬,共12個。驚蟄(啓蟄)、清明二節在後漢之前爲中氣,後漢元和二年分別與雨水、穀雨對調。\n**中氣**指節氣中的偶數。含:冬至、大寒、雨水、春分、穀雨、小滿、夏至、大暑、處暑、秋分、霜降、小雪,共12個。氣是華曆中重要的部份,無中氣月與閏月有關(詳見「華曆是甚麼」條)。\n**朔**指月與日共處同一天球經度之時刻,因此月與日同出同入,月華爲日光所蔽,故無月。日食發生於此刻。\n**望**指月運行至日之正對面(地球位於二者之間),日入時月出,日出時月入,故整夜可見月。月食發生於此刻。\n**五星**之古名與今不同。辰星即今之水星,又單名「星」;太白星即今之金星,以其爲天空最亮之星,故名太白;熒惑即今之火星;歲星即今之木星,太歲乃與歲星相關但不同的概念;填星又作鎮星,即今之土星。" } } } @@ -785,6 +785,23 @@ } } }, + "定製自己的專屬風格" : { + "comment" : "Welcome, setting - title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Customize in Settings" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "定制自己的专属风格" + } + } + } + }, "容吾三思" : { "comment" : "Cancel Resetting Settings", "extractionState" : "manual", @@ -978,7 +995,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "Click gear icon in Chinese Time sheet to enter settings, where you can make customization and read documentations" + "value" : "Click gear icon in Chinendar sheet to enter settings, where you can make customization and read documentations" } }, "zh-Hans" : { @@ -1023,6 +1040,23 @@ } } }, + "底輪" : { + "comment" : "Ring background", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ring Back" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "底轮" + } + } + } + }, "度" : { "localizations" : { "en" : { @@ -2309,12 +2343,12 @@ } }, "華曆" : { - "comment" : "Chinese Time", + "comment" : "Chinendar", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Chinese Time" + "value" : "Chinendar" } }, "zh-Hans" : { @@ -2331,7 +2365,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "Chinese Time is in Status Bar, click to show the sheet" + "value" : "Chinendar is in Status Bar, click to show the sheet" } }, "zh-Hans" : { @@ -2428,13 +2462,30 @@ } } }, + "設置位於錶盤正下方,更改後自動保存。可調時間、在地、外觀等。另有更多有關華曆之介紹。" : { + "comment" : "Welcome, setting - detail", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings locate below, changes made therein will auto save. Customize for display time, location and layouts. Find more about Chinendar inside." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "设置位于表盘正下方,更改后自动保存。可调时间、在地、外观等。另有更多有关华历之介绍。" + } + } + } + }, "設置更改後自動保存。可調時間、在地、外觀等。另有更多有關華曆之介紹。" : { "comment" : "Welcome, long press - detail", "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Changes made to settings will auto save. Customize for display time, location and layouts. Find more about Chinese Time in Settings." + "value" : "Changes made to settings will auto save. Customize for display time, location and layouts. Find more about Chinendar inside." } }, "zh-Hans" : { @@ -2835,4 +2886,4 @@ } }, "version" : "1.0" -} +} \ No newline at end of file diff --git a/Shared/Setting/ColorSetting.swift b/Shared/Setting/ColorSetting.swift index 7de5b6f..3d1a19e 100644 --- a/Shared/Setting/ColorSetting.swift +++ b/Shared/Setting/ColorSetting.swift @@ -1,6 +1,6 @@ // // ColorSetting.swift -// Chinese Time iOS +// Chinendar // // Created by Leo Liu on 6/23/23. // @@ -30,56 +30,56 @@ struct ColorSetting: View { var body: some View { Form { Section(header: Text("五星", comment: "Planets")) { - HStack() { + HStack(spacing: 20) { ColorSettingCell(text: Text("辰", comment: "Mercury Indicator"), color: watchLayout.binding(\.planetIndicator[0])) - Spacer(minLength: 30) + Divider() ColorSettingCell(text: Text("太白", comment: "Venus Indicator"), color: watchLayout.binding(\.planetIndicator[1])) } - HStack() { + HStack(spacing: 20) { ColorSettingCell(text: Text("熒惑", comment: "Mars Indicator"), color: watchLayout.binding(\.planetIndicator[2])) - Spacer(minLength: 30) + Divider() ColorSettingCell(text: Text("歲", comment: "Jupiter Indicator"), color: watchLayout.binding(\.planetIndicator[3])) } - HStack() { + HStack(spacing: 20) { ColorSettingCell(text: Text("鎮", comment: "Saturn Indicator"), color: watchLayout.binding(\.planetIndicator[4])) - Spacer(minLength: 30) + Divider() ColorSettingCell(text: Text("月", comment: "Moon position Indicator"), color: watchLayout.binding(\.planetIndicator[5])) } } Section(header: Text("朔望節氣", comment: "Moon phase and Solor terms")) { - HStack { + HStack(spacing: 20) { ColorSettingCell(text: Text("朔", comment: "New Moon Indicator"), color: watchLayout.binding(\.eclipseIndicator)) - Spacer(minLength: 30) + Divider() ColorSettingCell(text: Text("望", comment: "Full Moon Indicator"), color: watchLayout.binding(\.fullmoonIndicator)) } - HStack { + HStack(spacing: 20) { ColorSettingCell(text: Text("節氣", comment: "Odd Solar Term Indicator"), color: watchLayout.binding(\.oddStermIndicator)) - Spacer(minLength: 30) + Divider() ColorSettingCell(text: Text("中氣", comment: "Even Solar Term Indicator"), color: watchLayout.binding(\.evenStermIndicator)) } } Section(header: Text("日出入", comment: "Sunrise & Sunset Indicators")) { - HStack { + HStack(spacing: 20) { ColorSettingCell(text: Text("日出", comment: "Sunrise Indicator"), color: watchLayout.binding(\.sunPositionIndicator[1])) - Spacer(minLength: 30) + Divider() ColorSettingCell(text: Text("日中", comment: "Noon Indicator"), color: watchLayout.binding(\.sunPositionIndicator[2])) } - HStack { + HStack(spacing: 20) { ColorSettingCell(text: Text("日入", comment: "Sunset Indicator"), color: watchLayout.binding(\.sunPositionIndicator[3])) - Spacer(minLength: 30) + Divider() ColorSettingCell(text: Text("夜中", comment: "Midnight Indicator"), color: watchLayout.binding(\.sunPositionIndicator[0])) } } Section(header: Text("月出入", comment: "Moonrise & Moonset")) { - HStack { + HStack(spacing: 20) { ColorSettingCell(text: Text("月出", comment: "Moonrise Indicator"), color: watchLayout.binding(\.moonPositionIndicator[0])) - Spacer(minLength: 30) + Divider() ColorSettingCell(text: Text("月中", comment: "Lunar noon Indicator"), color: watchLayout.binding(\.moonPositionIndicator[1])) } - HStack { + HStack(spacing: 20) { ColorSettingCell(text: Text("月入", comment: "Moonset Indicator"), color: watchLayout.binding(\.moonPositionIndicator[2])) } } diff --git a/Shared/Setting/Datetime.swift b/Shared/Setting/Datetime.swift index 902a320..b3cd36a 100644 --- a/Shared/Setting/Datetime.swift +++ b/Shared/Setting/Datetime.swift @@ -1,6 +1,6 @@ // // Datetime.swift -// Chinese Time iOS +// Chinendar // // Created by Leo Liu on 6/23/23. // @@ -131,28 +131,11 @@ fileprivate struct TimeZoneSelection: Equatable { func updateTimeZone() { chineseCalendar?.update(time: watchSetting?.displayTime ?? .now, timezone: watchSetting?.timezone ?? Calendar.current.timeZone, location: chineseCalendar?.location) -#if os(macOS) - updateStatusBar() -#endif } func updateTime() { chineseCalendar?.update(time: watchSetting?.displayTime ?? .now) -#if os(macOS) - updateStatusBar() -#endif } - -#if os(macOS) - @MainActor - func updateStatusBar() { - if let delegate = AppDelegate.instance, - let chineseCalendar = chineseCalendar, - let watchLayout = watchLayout { - delegate.updateStatusBar(dateText: delegate.statusBar(from: chineseCalendar, options: watchLayout)) - } - } -#endif } private func populateTimezones() -> DataTree { @@ -193,7 +176,7 @@ struct Datetime: View { HStack { Picker("太陽時", selection: $dateManager.apparentTime) { - let choice = if locationManager.enabled { + let choice = if (locationManager.enabled) || (watchLayout.location != nil) { [true, false] } else { [false] @@ -222,7 +205,7 @@ struct Datetime: View { NSLocalizedString("時區", comment: "Timezone section") } Section(header: Text(timezoneTitle)) { - HStack { + HStack(spacing: 10) { Picker("大區", selection: $dateManager.timeZoneSelection.primary) { ForEach(dateManager.timeZoneSelection.timeZones.nextLevel.map { $0.nodeName }, id: \.self) { tz in Text(tz.replacingOccurrences(of: "_", with: " ")) @@ -232,8 +215,8 @@ struct Datetime: View { .lineLimit(1) .animation(.default, value: dateManager.timeZoneSelection) if let tzList = dateManager.timeZoneSelection.timeZones[dateManager.timeZoneSelection.primary], tzList.count > 0 { -#if os(macOS) - Spacer(minLength: 20) +#if os(macOS) || os(visionOS) + Divider() #endif Picker("中區", selection: $dateManager.timeZoneSelection.secondary) { ForEach(tzList.nextLevel.map { $0.nodeName }, id: \.self) { tz in @@ -244,8 +227,8 @@ struct Datetime: View { .animation(.default, value: dateManager.timeZoneSelection) } if let tzList = dateManager.timeZoneSelection.timeZones[dateManager.timeZoneSelection.primary], let tzList2 = tzList[dateManager.timeZoneSelection.secondary], tzList2.count > 0 { -#if os(macOS) - Spacer(minLength: 20) +#if os(macOS) || os(visionOS) + Divider() #endif Picker("小區", selection: $dateManager.timeZoneSelection.tertiary) { ForEach(tzList2.nextLevel.map { $0.nodeName }, id: \.self) { tz in diff --git a/Shared/Setting/Documentation.swift b/Shared/Setting/Documentation.swift index fd2aa9b..7db48ee 100644 --- a/Shared/Setting/Documentation.swift +++ b/Shared/Setting/Documentation.swift @@ -1,6 +1,6 @@ // // Documentation.swift -// Chinese Time iOS +// Chinendar // // Created by Leo Liu on 6/23/23. // @@ -8,73 +8,77 @@ import SwiftUI extension MarkdownElement { -#if os(iOS) - typealias SysFont = UIFont -#elseif os(macOS) - typealias SysFont = NSFont -#endif var attributeContainer: AttributeContainer { - var container = AttributeContainer() - switch self { - case .heading: - container.font = .systemFont(ofSize: SysFont.systemFontSize * 1.05) - case .paragraph: - container.font = .systemFont(ofSize: SysFont.systemFontSize / 1.05) - } - return container + var container = AttributeContainer() + switch self { + case .heading: + container.font = .headline + case .paragraph: + container.font = .body + } + return container } } -struct Documentation: View { - struct Paragraph: Identifiable { - var id = UUID() - let title: AttributedString - let body: [AttributedString] - var show: Bool = false - } +fileprivate struct Paragraph: Identifiable { + var id = UUID() + let title: AttributedString + let body: [AttributedString] + var show: Bool = false +} + +struct ParagraphView: View { + @State fileprivate var article: Paragraph + var body: some View { + Section { + Button { + withAnimation { + article.show.toggle() + } + } label: { + HStack { + Text(article.title) + .frame(maxWidth: .infinity, alignment: .leading) + Image(systemName: article.show ? "chevron.up" : "chevron.down") + .transition(.scale) +#if os(iOS) || os(macOS) + .foregroundStyle(Color.accentColor) +#endif + } + } +#if os(iOS) || os(macOS) + .buttonStyle(.plain) +#elseif os(visionOS) + .buttonStyle(.automatic) +#endif + if article.show { + VStack(spacing: 10) { + ForEach(0..: View { formatter.minimumFractionDigits = 0 return formatter }()) +#if os(iOS) || os(visionOS) + .keyboardType(.decimalPad) +#endif .focused($isFocused) .autocorrectionDisabled() .onSubmit(of: .text) { commit() } - .onChange(of: isFocused) { _, newValue in - if !newValue { + .onChange(of: isFocused) { + if !isFocused { commit() } } @@ -52,14 +55,17 @@ struct LayoutSettingCell: View { .padding(.vertical, 5) #elseif os(macOS) .frame(height: 20) +#elseif os(visionOS) + .frame(height: 40) #endif .padding(.leading, 15) -#if os(iOS) +#if os(iOS) || os(visionOS) .background(.thickMaterial, in: RoundedRectangle(cornerRadius: 10)) + .contentShape(.hoverEffect, .rect(cornerRadius: 10, style: .continuous)) + .hoverEffect() #elseif os(macOS) .background(in: RoundedRectangle(cornerRadius: 10)) #endif - .padding(.trailing, 10) } } @@ -170,42 +176,47 @@ struct LayoutSettingCell: View { struct LayoutSetting: View { @Environment(\.watchLayout) var watchLayout @Environment(\.watchSetting) var watchSetting -#if os(macOS) +#if os(macOS) || os(visionOS) static let nameMapping = [ "space": NSLocalizedString("空格", comment: "Space separator"), "dot": NSLocalizedString("・", comment: "・"), "none": NSLocalizedString("無", comment: "No separator") ] @Environment(\.chineseCalendar) var chineseCalendar +#endif +#if os(macOS) @State var fontHandler = FontHandler() #endif var body: some View { Form { -#if os(macOS) +#if os(macOS) || os(visionOS) Section(header: Text("狀態欄", comment: "Status Bar setting")) { - HStack { + HStack(spacing: 20) { Toggle("日", isOn: watchLayout.binding(\.statusBar.date)) - Spacer(minLength: 20) + Divider() Toggle("時", isOn: watchLayout.binding(\.statusBar.time)) } - HStack { + HStack(spacing: 20) { Picker("節日", selection: watchLayout.binding(\.statusBar.holiday)) { ForEach(0...2, id: \.self) { Text(String($0)) } } - Spacer(minLength: 20) + Divider() Picker("讀號", selection: watchLayout.binding(\.statusBar.separator)) { ForEach(WatchLayout.StatusBar.Separator.allCases, id: \.self) { Text(LayoutSetting.nameMapping[$0.rawValue]!) } } } } +#endif +#if os(macOS) Section(header: Text("字體", comment: "Font selection")) { - HStack { + HStack(spacing: 20) { Picker("小字", selection: $fontHandler.textFontSelection) { ForEach(fontHandler.allFonts, id:\.self) { family in Text(family) } } + Divider() Picker("麤細", selection: $fontHandler.textFontMemberSelection) { ForEach(fontHandler.textFontMembers, id:\.self) { member in Text(member) @@ -214,13 +225,13 @@ struct LayoutSetting: View { .labelsHidden() } - HStack { + HStack(spacing: 20) { Picker("大字", selection: $fontHandler.centerFontSelection) { ForEach(fontHandler.allFonts, id:\.self) { family in Text(family) } } - + Divider() Picker("麤細", selection: $fontHandler.centerFontMemberSelection) { ForEach(fontHandler.centerFontMembers, id:\.self) { member in Text(member) @@ -229,13 +240,13 @@ struct LayoutSetting: View { .labelsHidden() } } - .onChange(of: fontHandler.textFont) { _, _ in + .onChange(of: fontHandler.textFont) { if let font = fontHandler.textFont { watchLayout.textFont = font } } - .onChange(of: fontHandler.centerFont) { _, _ in + .onChange(of: fontHandler.centerFont) { if let font = fontHandler.centerFont { watchLayout.centerFont = font } @@ -245,8 +256,8 @@ struct LayoutSetting: View { Section(header: Text("形", comment: "Shape")) { LayoutSettingCell(text: watchSetting.vertical ? Text("寬", comment: "Width") : Text("高", comment: "Height"), value: watchLayout.binding(\.watchSize.width)) { max(10.0, $0) } LayoutSettingCell(text: watchSetting.vertical ? Text("高", comment: "Height") : Text("寬", comment: "Width"), value: watchLayout.binding(\.watchSize.height)) { max(10.0, $0) } - LayoutSettingCell(text: Text("圓角比例", comment: "Corner radius ratio"), value: watchLayout.binding(\.cornerRadiusRatio)) { min(1.0, max(0.0, $0)) } - LayoutSettingCell(text: Text("陰影大小", comment: "Shadow size"), value: watchLayout.binding(\.shadowSize)) { min(0.1, max(0.0, $0)) } + SliderView(value: watchLayout.binding(\.cornerRadiusRatio), min: 0, max: 1, label: Text("圓角比例", comment: "Corner radius ratio")) + SliderView(value: watchLayout.binding(\.shadowSize), min: 0, max: 0.1, label: Text("陰影大小", comment: "Shadow size")) } Section(header: Text("字偏", comment: "Text Shift")) { LayoutSettingCell(text: Text("大字平移", comment: "Height"), value: watchLayout.binding(\.centerTextOffset)) @@ -254,28 +265,31 @@ struct LayoutSetting: View { LayoutSettingCell(text: Text("小字平移", comment: "Height"), value: watchLayout.binding(\.horizontalTextOffset)) LayoutSettingCell(text: Text("小字縱移", comment: "Height"), value: watchLayout.binding(\.verticalTextOffset)) } -#elseif os(macOS) +#elseif os(macOS) || os(visionOS) Section(header: Text("形", comment: "Shape")) { - HStack { +#if os(macOS) + HStack(spacing: 20) { LayoutSettingCell(text: Text("寬", comment: "Width"), value: watchLayout.binding(\.watchSize.width)) { max(10.0, $0) } completion: { AppDelegate.instance?.watchPanel.panelPosition() } + Divider() LayoutSettingCell(text: Text("高", comment: "Height"), value: watchLayout.binding(\.watchSize.height)) { max(10.0, $0) } completion: { AppDelegate.instance?.watchPanel.panelPosition() } } - HStack { - LayoutSettingCell(text: Text("圓角比例", comment: "Corner radius ratio"), value: watchLayout.binding(\.cornerRadiusRatio)) { min(1.0, max(0.0, $0)) } - LayoutSettingCell(text: Text("陰影大小", comment: "Shadow size"), value: watchLayout.binding(\.shadowSize)) { min(0.1, max(0.0, $0)) } - } +#endif + SliderView(value: watchLayout.binding(\.cornerRadiusRatio), min: 0, max: 1, label: Text("圓角比例", comment: "Corner radius ratio")) + SliderView(value: watchLayout.binding(\.shadowSize), min: 0, max: 0.1, label: Text("陰影大小", comment: "Shadow size")) } Section(header: Text("字偏", comment: "Text Shift")) { - HStack { + HStack(spacing: 20) { LayoutSettingCell(text: Text("大字平移", comment: "Height"), value: watchLayout.binding(\.centerTextOffset)) + Divider() LayoutSettingCell(text: Text("大字縱移", comment: "Height"), value: watchLayout.binding(\.centerTextHOffset)) } - HStack { + HStack(spacing: 20) { LayoutSettingCell(text: Text("小字平移", comment: "Height"), value: watchLayout.binding(\.horizontalTextOffset)) + Divider() LayoutSettingCell(text: Text("小字縱移", comment: "Height"), value: watchLayout.binding(\.verticalTextOffset)) } } @@ -292,11 +306,6 @@ struct LayoutSetting: View { .fontWeight(.semibold) } #elseif os(macOS) - .onChange(of: watchLayout.statusBar) { _, _ in - if let delegate = AppDelegate.instance { - delegate.updateStatusBar(dateText: delegate.statusBar(from: chineseCalendar, options: watchLayout)) - } - } .task { fontHandler.textFont = watchLayout.textFont fontHandler.centerFont = watchLayout.centerFont diff --git a/Shared/Setting/Location.swift b/Shared/Setting/Location.swift index 174fb90..eaa8c8c 100644 --- a/Shared/Setting/Location.swift +++ b/Shared/Setting/Location.swift @@ -1,6 +1,6 @@ // // Location.swift -// Chinese Time iOS +// Chinendar // // Created by Leo Liu on 6/24/23. // @@ -139,7 +139,7 @@ struct LocationSelection: Equatable { } } -#if os(macOS) +#if os(macOS) || os(visionOS) struct OnSubmitTextField: View { let title: LocalizedStringKey let formatter: NumberFormatter @@ -155,16 +155,39 @@ struct OnSubmitTextField: View { } var body: some View { - TextField(title, value: $tempValue, formatter: formatter) - .focused($isFocused) - .onSubmit(of: .text) { - value = tempValue - } - .onChange(of: isFocused) { _, newValue in - if !newValue { + HStack { + Text(title) + .lineLimit(1) + .frame(maxWidth: .infinity, alignment: .leading) + TextField("", value: $tempValue, formatter: formatter) + .labelsHidden() +#if os(iOS) || os(visionOS) + .keyboardType(.decimalPad) +#endif + .focused($isFocused) + .autocorrectionDisabled() + .onSubmit(of: .text) { value = tempValue } - } + .onChange(of: isFocused) { + if !isFocused { + value = tempValue + } + } +#if os(macOS) + .frame(height: 20) +#elseif os(visionOS) + .frame(height: 40) +#endif + .padding(.leading, 15) +#if os(visionOS) + .background(.thickMaterial, in: RoundedRectangle(cornerRadius: 10)) + .contentShape(.hoverEffect, .rect(cornerRadius: 10, style: .continuous)) + .hoverEffect() +#elseif os(macOS) + .background(in: RoundedRectangle(cornerRadius: 10)) +#endif + } } } #endif @@ -209,7 +232,7 @@ struct Location: View { NSLocalizedString("緯度", comment: "Latitude section") } Section(header: Text(latitudeTitle)) { - HStack { + HStack(spacing: 10) { #if os(iOS) Picker("度", selection: $locationData.latitudeSelection.degree) { ForEach(0...89, id: \.self) { value in @@ -229,7 +252,7 @@ struct Location: View { } } .animation(.default, value: locationData.latitudeSelection) -#elseif os(macOS) +#elseif os(macOS) || os(visionOS) OnSubmitTextField("度", value: $locationData.latitudeSelection.degree, formatter: { let formatter = NumberFormatter() formatter.maximumFractionDigits = 0 @@ -237,8 +260,7 @@ struct Location: View { formatter.minimum = 0 return formatter }()) - .frame(height: 20) - .background(in: RoundedRectangle(cornerRadius: 10)) + Divider() OnSubmitTextField("分", value: $locationData.latitudeSelection.minute, formatter: { let formatter = NumberFormatter() formatter.maximumFractionDigits = 0 @@ -246,8 +268,7 @@ struct Location: View { formatter.minimum = 0 return formatter }()) - .frame(height: 20) - .background(in: RoundedRectangle(cornerRadius: 10)) + Divider() OnSubmitTextField("秒", value: $locationData.latitudeSelection.second, formatter: { let formatter = NumberFormatter() formatter.maximumFractionDigits = 0 @@ -255,8 +276,7 @@ struct Location: View { formatter.minimum = 0 return formatter }()) - .frame(height: 20) - .background(in: RoundedRectangle(cornerRadius: 10)) + Divider() #endif Picker("北南", selection: $locationData.latitudeSelection.positive) { ForEach([true, false], id: \.self) { value in @@ -279,7 +299,7 @@ struct Location: View { NSLocalizedString("經度", comment: "Longitude section") } Section(header: Text(longitudeTitle)) { - HStack { + HStack(spacing: 10) { #if os(iOS) Picker("度", selection: $locationData.longitudeSelection.degree) { ForEach(0...179, id: \.self) { value in @@ -299,7 +319,7 @@ struct Location: View { } } .animation(.default, value: locationData.longitudeSelection) -#elseif os(macOS) +#elseif os(macOS) || os(visionOS) OnSubmitTextField("度", value: $locationData.longitudeSelection.degree, formatter: { let formatter = NumberFormatter() formatter.maximumFractionDigits = 0 @@ -307,8 +327,7 @@ struct Location: View { formatter.minimum = 0 return formatter }()) - .frame(height: 20) - .background(in: RoundedRectangle(cornerRadius: 10)) + Divider() OnSubmitTextField("分", value: $locationData.longitudeSelection.minute, formatter: { let formatter = NumberFormatter() formatter.maximumFractionDigits = 0 @@ -316,8 +335,7 @@ struct Location: View { formatter.minimum = 0 return formatter }()) - .frame(height: 20) - .background(in: RoundedRectangle(cornerRadius: 10)) + Divider() OnSubmitTextField("秒", value: $locationData.longitudeSelection.second, formatter: { let formatter = NumberFormatter() formatter.maximumFractionDigits = 0 @@ -325,8 +343,7 @@ struct Location: View { formatter.minimum = 0 return formatter }()) - .frame(height: 20) - .background(in: RoundedRectangle(cornerRadius: 10)) + Divider() #endif Picker("東西", selection: $locationData.longitudeSelection.positive) { ForEach([true, false], id: \.self) { value in @@ -348,8 +365,8 @@ struct Location: View { .task { locationData.setup(locationManager: locationManager, watchLayout: watchLayout) } - .onChange(of: locationData.location) { _, newValue in - chineseCalendar.update(time: watchSetting.displayTime ?? Date.now, location: newValue) + .onChange(of: locationData.location) { + chineseCalendar.update(time: watchSetting.displayTime ?? Date.now, location: locationData.location) } .navigationTitle(Text("經緯度", comment: "Geo Location section")) #if os(iOS) diff --git a/Shared/Setting/RingSetting.swift b/Shared/Setting/RingSetting.swift index 6799570..749e4c4 100644 --- a/Shared/Setting/RingSetting.swift +++ b/Shared/Setting/RingSetting.swift @@ -1,6 +1,6 @@ // -// SliderView.swift -// Chinese Time iOS +// RingSetting.swift +// Chinendar // // Created by Leo Liu on 6/23/23. // @@ -185,8 +185,12 @@ struct ColorNodeView: NSViewRepresentable { } struct GradientSliderView: View { +#if os(visionOS) + let barHeight: CGFloat = 10 +#else let barHeight: CGFloat = 5 -#if os(iOS) +#endif +#if os(iOS) || os(visionOS) let slideHeight: CGFloat = 18 let pickerSize: CGFloat = 14 #elseif os(macOS) @@ -226,7 +230,7 @@ struct GradientSliderView: View { .padding(.leading, 10) Toggle("", isOn: $viewGradient.isLoop) .labelsHidden() - .onChange(of: viewGradient.isLoop) { _, _ in + .onChange(of: viewGradient.isLoop) { gradient = viewGradient.export(allowLoop: allowLoop) } } @@ -237,8 +241,14 @@ struct GradientSliderView: View { LinearGradient(gradient: Gradient(stops: viewGradient.gradientStops), startPoint: .leading, endPoint: .trailing) .frame(height: barHeight) .cornerRadius(size.height / 2) - .position(x: size.width / 2 - padding, y: barHeight / 2) - .padding(.top, slideHeight - barHeight / 2) + .padding(.horizontal, padding + pickerSize / 2) + .padding(.vertical, slideHeight - barHeight / 2) +#if os(visionOS) + .contentShape( + .rect(cornerRadius: 16, style: .continuous) + ) + .hoverEffect() +#endif .gesture(tapGesture) ForEach(0.. CGPoint { var boundedPoint = point #if os(iOS) - let verticalOffset = -pickerSize + barHeight - 33 + let verticalOffset = -pickerSize + barHeight - 33 + (allowLoop ? 0 : 10) +#elseif os(visionOS) + let verticalOffset = -pickerSize + barHeight - 39 + (allowLoop ? 0 : 12) #elseif os(macOS) - let verticalOffset = -pickerSize + barHeight - 18 + let verticalOffset = -pickerSize + barHeight - 19 #endif boundedPoint.x = max(min(boundedPoint.x, bound.width - padding * 2), 0) boundedPoint.y = max(min(boundedPoint.y, bound.height + verticalOffset), verticalOffset) @@ -338,24 +353,27 @@ struct GradientSliderView: View { struct SliderView: View { @Binding var value: CGFloat @State var currentValue: CGFloat = 0 + let min: CGFloat + let max: CGFloat let label: Text var body: some View { -#if os(iOS) +#if os(iOS) || os(visionOS) VStack { HStack { label - TextField("", value: $currentValue, formatter: { + Spacer() + + let formatter: NumberFormatter = { let formatter = NumberFormatter() formatter.maximumFractionDigits = 2 formatter.minimumFractionDigits = 0 return formatter - }()) - .labelsHidden() - .disabled(true) - .multilineTextAlignment(.trailing) + }() + Text(formatter.string(from: NSNumber(value: currentValue)) ?? "") + .frame(maxWidth: 40, alignment: .trailing) } - Slider(value: $currentValue, in: 0.0...1.0) { editing in + Slider(value: $currentValue, in: min...max) { editing in if !editing { value = currentValue } @@ -369,22 +387,21 @@ struct SliderView: View { HStack { label .frame(maxWidth: 150, alignment: .leading) - Slider(value: $currentValue, in: 0.0...1.0) { editing in + Slider(value: $currentValue, in: min...max) { editing in if !editing { value = currentValue } } .labelsHidden() - TextField("", value: $currentValue, formatter: { + + let formatter: NumberFormatter = { let formatter = NumberFormatter() formatter.maximumFractionDigits = 2 formatter.minimumFractionDigits = 0 return formatter - }()) - .frame(maxWidth: 40) - .labelsHidden() - .disabled(true) - .multilineTextAlignment(.trailing) + }() + Text(formatter.string(from: NSNumber(value: currentValue)) ?? "") + .frame(maxWidth: 40, alignment: .trailing) } .onAppear { currentValue = value @@ -411,6 +428,7 @@ struct ThemedColorSettingCell: View { ColorPicker("", selection: $color) .labelsHidden() .padding(.trailing, 10) + Divider() Text("暗", comment: "dark theme") .lineLimit(1) .frame(alignment: .trailing) @@ -433,10 +451,12 @@ struct RingSetting: View { var body: some View { Form { Section(header: Text("漸變色", comment: "Gradient Pickers")) { -#if os(iOS) +#if os(iOS) || os(visionOS) let height = 80.0 + let loopSize = 10.0 #else let height = 45.0 + let loopSize = 0.0 #endif GradientSliderView(text: Text("年輪", comment: "Year Ring Gradient"), gradient: watchLayout.binding(\.firstRing), allowLoop: true) .frame(height: height) @@ -445,20 +465,42 @@ struct RingSetting: View { GradientSliderView(text: Text("日輪", comment: "Day Ring Gradient"), gradient: watchLayout.binding(\.thirdRing), allowLoop: true) .frame(height: height) GradientSliderView(text: Text("大字", comment: "Day Ring Gradient"), gradient: watchLayout.binding(\.centerFontColor), allowLoop: false) - .frame(height: height) + .frame(height: height - loopSize) } Section(header: Text("透明度", comment: "Transparency sliders")) { - SliderView(value: watchLayout.binding(\.shadeAlpha), label: Text("殘圈透明", comment: "Inactive ring opacity")) - SliderView(value: watchLayout.binding(\.majorTickAlpha), label: Text("大刻透明", comment: "Major Tick opacity")) - SliderView(value: watchLayout.binding(\.minorTickAlpha), label: Text("小刻透明", comment: "Minor Tick opacity")) + SliderView(value: watchLayout.binding(\.shadeAlpha), min: 0, max: 1, label: Text("殘圈透明", comment: "Inactive ring opacity")) + SliderView(value: watchLayout.binding(\.majorTickAlpha), min: 0, max: 1, label: Text("大刻透明", comment: "Major Tick opacity")) + SliderView(value: watchLayout.binding(\.minorTickAlpha), min: 0, max: 1, label: Text("小刻透明", comment: "Minor Tick opacity")) } Section(header: Text("明暗主題色", comment: "Watch face colors in light and dark themes")) { +#if os(visionOS) + HStack(spacing: 20) { + ColorSettingCell(text: Text("大刻色", comment: "Major tick color"), color: watchLayout.binding(\.majorTickColorDark)) + Divider() + ColorSettingCell(text: Text("小刻色", comment: "Major tick color"), color: watchLayout.binding(\.minorTickColorDark)) + } + HStack(spacing: 20) { + ColorSettingCell(text: Text("節氣刻", comment: "Major tick color"), color: watchLayout.binding(\.oddSolarTermTickColorDark)) + Divider() + ColorSettingCell(text: Text("中氣刻", comment: "Major tick color"), color: watchLayout.binding(\.evenSolarTermTickColorDark)) + } + HStack(spacing: 20) { + ColorSettingCell(text: Text("小字", comment: "Major tick color"), color: watchLayout.binding(\.fontColorDark)) + Divider() + ColorSettingCell(text: Text("核", comment: "Major tick color"), color: watchLayout.binding(\.innerColorDark)) + } + HStack(spacing: 20) { + ColorSettingCell(text: Text("底輪", comment: "Ring background"), color: watchLayout.binding(\.backColorDark)) + } +#else ThemedColorSettingCell(text: Text("大刻色", comment: "Major tick color"), color: watchLayout.binding(\.majorTickColor), darkColor: watchLayout.binding(\.majorTickColorDark)) ThemedColorSettingCell(text: Text("小刻色", comment: "Major tick color"), color: watchLayout.binding(\.minorTickColor), darkColor: watchLayout.binding(\.minorTickColorDark)) ThemedColorSettingCell(text: Text("節氣刻", comment: "Major tick color"), color: watchLayout.binding(\.oddSolarTermTickColor), darkColor: watchLayout.binding(\.oddSolarTermTickColorDark)) ThemedColorSettingCell(text: Text("中氣刻", comment: "Major tick color"), color: watchLayout.binding(\.evenSolarTermTickColor), darkColor: watchLayout.binding(\.evenSolarTermTickColorDark)) ThemedColorSettingCell(text: Text("小字", comment: "Major tick color"), color: watchLayout.binding(\.fontColor), darkColor: watchLayout.binding(\.fontColorDark)) ThemedColorSettingCell(text: Text("核", comment: "Major tick color"), color: watchLayout.binding(\.innerColor), darkColor: watchLayout.binding(\.innerColorDark)) + ThemedColorSettingCell(text: Text("底輪", comment: "Ring background"), color: watchLayout.binding(\.backColor), darkColor: watchLayout.binding(\.backColorDark)) +#endif } } .formStyle(.grouped) diff --git a/Shared/Setting/StatusState.swift b/Shared/Setting/StatusState.swift new file mode 100644 index 0000000..8c0914f --- /dev/null +++ b/Shared/Setting/StatusState.swift @@ -0,0 +1,32 @@ +// +// StatusState.swift +// Chinendar +// +// Created by Leo Liu on 11/27/23. +// + +import Foundation + +class StatusState: Equatable { + var location: CGPoint? + var date: Date? + var timezone: TimeZone? + var statusBar: WatchLayout.StatusBar + var calendarSetting: Int + + init(locationManager: LocationManager, watchLayout: WatchLayout, watchSetting: WatchSetting) { + location = locationManager.location ?? watchLayout.location + date = watchSetting.displayTime + timezone = watchSetting.timezone + statusBar = watchLayout.statusBar + calendarSetting = (watchLayout.globalMonth ? 2 : 0) + (watchLayout.apparentTime ? 1 : 0) + } + + static func == (lhs: StatusState, rhs: StatusState) -> Bool { + return lhs.location == rhs.location && + lhs.date == rhs.date && + lhs.timezone == rhs.timezone && + lhs.statusBar == rhs.statusBar && + lhs.calendarSetting == rhs.calendarSetting + } +} diff --git a/Shared/Setting/ThemesList.swift b/Shared/Setting/ThemesList.swift index 2f72e67..9d83a14 100644 --- a/Shared/Setting/ThemesList.swift +++ b/Shared/Setting/ThemesList.swift @@ -1,6 +1,6 @@ // -// SwiftUIView.swift -// Chinese Time iOS +// ThemesList.swift +// Chinendar // // Created by Leo Liu on 6/16/23. // @@ -134,7 +134,7 @@ struct ThemesList: View { } label: { Text(theme.name!) } -#if os(iOS) +#if os(iOS) || os(visionOS) .buttonStyle(.borderless) #elseif os(macOS) .buttonStyle(.bordered) @@ -148,7 +148,7 @@ struct ThemesList: View { .swipeActions(edge: .leading) { renameButton } -#elseif os(macOS) +#elseif os(macOS) || os(visionOS) .contextMenu { Button { target = theme @@ -161,8 +161,10 @@ struct ThemesList: View { .labelStyle(.titleAndIcon) deleteButton .labelStyle(.titleAndIcon) +#if os(macOS) saveButton .labelStyle(.titleAndIcon) +#endif } #endif Spacer() @@ -173,11 +175,13 @@ struct ThemesList: View { Text(theme.modifiedDate!, style: .date) .foregroundStyle(.secondary) } -#if os(macOS) +#if os(macOS) || os(visionOS) Menu { renameButton deleteButton +#if os(macOS) saveButton +#endif } label: { Image(systemName: "ellipsis") } @@ -215,7 +219,11 @@ struct ThemesList: View { Button(NSLocalizedString("容吾三思", comment: "Cancel adding Settings"), role: .cancel) { target = nil } Button(NSLocalizedString("吾意已決", comment: "Confirm Resetting Settings"), role: .destructive) { if let target = target, !target.isNil { +#if os(visionOS) + watchLayout.update(from: target.code!, updateSize: false) +#else watchLayout.update(from: target.code!) +#endif #if os(iOS) WatchConnectivityManager.shared.sendLayout(watchLayout.encode(includeOffset: false)) #elseif os(macOS) @@ -255,6 +263,11 @@ struct ThemesList: View { .buttonStyle(.borderless) .labelStyle(.titleAndIcon) } +#elseif os(visionOS) + .toolbar { + newTheme + } + #elseif os(iOS) .navigationBarTitleDisplayMode(.inline) .toolbar { diff --git a/Shared/Utilities.swift b/Shared/Utilities.swift index a9bfce1..fa3f74f 100644 --- a/Shared/Utilities.swift +++ b/Shared/Utilities.swift @@ -1,6 +1,6 @@ // -// MarkdownParser.swift -// Chinese Time +// Utilities.swift +// Chinendar // // Created by Leo Liu on 4/29/23. // diff --git a/Shared/Views/HoverView.swift b/Shared/Views/HoverView.swift index c888389..2f02829 100644 --- a/Shared/Views/HoverView.swift +++ b/Shared/Views/HoverView.swift @@ -1,6 +1,6 @@ // -// NamedEntity.swift -// Chinese Time +// HoverView.swift +// Chinendar // // Created by Leo Liu on 6/26/23. // @@ -63,6 +63,11 @@ struct Hover: View { @State var prepared = true var body: some View { + + let shortEdge = min(watchLayout.watchSize.width, watchLayout.watchSize.height) + let longEdge = min(watchLayout.watchSize.width, watchLayout.watchSize.height) + let fontSize: CGFloat = min(shortEdge * 0.04, longEdge * 0.032) + GeometryReader { proxy in if let tapPos = tapPos, entityPresenting.activeNote.count > 0 { let idealPos = edgeSafePos(pos: tapPos, bounds: bounds, screen: proxy.size) @@ -70,22 +75,22 @@ struct Hover: View { HStack(alignment: .top) { ForEach(entityPresenting.activeNote) {note in VStack(spacing: 0) { - RoundedRectangle(cornerRadius: watchLayout.textFont.pointSize * 0.3) - .frame(width: watchLayout.textFont.pointSize, height: watchLayout.textFont.pointSize) + RoundedRectangle(cornerRadius: fontSize * 0.2) + .frame(width: fontSize, height: fontSize) .foregroundStyle(Color(cgColor: note.color)) - .padding(.vertical, 1) - Spacer(minLength: 3) - .frame(maxHeight: 3) + .padding(.vertical, fontSize * 0.08) + Spacer(minLength: fontSize * 0.2) + .frame(maxHeight: fontSize * 0.2) ForEach(Array(note.name), id: \.self) { char in Text(String(char)) - .font(.system(size: watchLayout.textFont.pointSize)) + .font(.system(size: fontSize)) .padding(0) } } } } - .padding(5) - .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 7, style: .continuous)) + .padding(fontSize * 0.3) + .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: fontSize * 0.5, style: .continuous)) .anchorPreference(key: BoundsPreferenceKey.self, value: .bounds) { proxy[$0] } .onPreferenceChange(BoundsPreferenceKey.self) { bounds = $0 } .position(idealPos) @@ -93,21 +98,21 @@ struct Hover: View { VStack(alignment: .leading) { ForEach(entityPresenting.activeNote) {note in HStack(spacing: 0) { - RoundedRectangle(cornerRadius: watchLayout.textFont.pointSize * 0.3) - .frame(width: watchLayout.textFont.pointSize, height: watchLayout.textFont.pointSize) + RoundedRectangle(cornerRadius: fontSize * 0.2) + .frame(width: fontSize, height: fontSize) .foregroundStyle(Color(cgColor: note.color)) - .padding(.horizontal, 1) + .padding(.horizontal, fontSize * 0.08) .padding(.vertical, 0) - Spacer(minLength: 3) - .frame(maxWidth: 3) + Spacer(minLength: fontSize * 0.2) + .frame(maxWidth: fontSize * 0.2) Text(Locale.translation[note.name] ?? "") - .font(.system(size: watchLayout.textFont.pointSize)) + .font(.system(size: fontSize)) .padding(0) } } } - .padding(5) - .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 7, style: .continuous)) + .padding(fontSize * 0.3) + .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: fontSize * 0.5, style: .continuous)) .anchorPreference(key: BoundsPreferenceKey.self, value: .bounds) { proxy[$0] } .onPreferenceChange(BoundsPreferenceKey.self) { bounds = $0 } .position(idealPos) diff --git a/Shared/Views/RoundedRect.swift b/Shared/Views/RoundedRect.swift index 7dd2604..a7c8365 100644 --- a/Shared/Views/RoundedRect.swift +++ b/Shared/Views/RoundedRect.swift @@ -1,6 +1,6 @@ // // RoundedRect.swift -// Chinese Time +// Chinendar // // Created by Leo Liu on 5/3/23. // diff --git a/Shared/Views/SwiftUIUtilities.swift b/Shared/Views/SwiftUIUtilities.swift index 7e023c9..92636f7 100644 --- a/Shared/Views/SwiftUIUtilities.swift +++ b/Shared/Views/SwiftUIUtilities.swift @@ -1,6 +1,6 @@ // -// StartingPhase.swift -// Chinese Time +// SwiftUIUtilities.swift +// Chinendar // // Created by Leo Liu on 5/11/23. // diff --git a/Shared/Views/WatchFaceBasics.swift b/Shared/Views/WatchFaceBasics.swift index dff8f93..0c800a7 100644 --- a/Shared/Views/WatchFaceBasics.swift +++ b/Shared/Views/WatchFaceBasics.swift @@ -1,6 +1,6 @@ // -// WatchFace.swift -// ChineseTime Watch App +// WatchFaceBasics.swift +// Chinendar // // Created by Leo Liu on 5/4/23. // @@ -131,11 +131,12 @@ struct Ring: View { let pathWithAngle: CGPath let majorTickColor: CGColor let minorTickColor: CGColor + let backColor: CGColor let gradient: Gradient fileprivate let drawableTexts: [DrawableText] fileprivate let drawableMarks: [DrawableMark] - init(width: CGFloat, viewSize: CGSize, compact: Bool, ticks: ChineseCalendar.Ticks, startingAngle: CGFloat, angle: CGFloat, textFont: WatchFont, textColor: CGColor, alpha: CGFloat, majorTickAlpha: CGFloat, minorTickAlpha: CGFloat, majorTickColor: CGColor, minorTickColor: CGColor, gradientColor: WatchLayout.Gradient, outerRing: RoundedRect, marks: [Marks], shadowDirection: CGFloat, entityNotes: EntityNotes?, shadowSize: CGFloat, offset: CGSize = .zero) { + init(width: CGFloat, viewSize: CGSize, compact: Bool, ticks: ChineseCalendar.Ticks, startingAngle: CGFloat, angle: CGFloat, textFont: WatchFont, textColor: CGColor, alpha: CGFloat, majorTickAlpha: CGFloat, minorTickAlpha: CGFloat, majorTickColor: CGColor, minorTickColor: CGColor, backColor: CGColor, gradientColor: WatchLayout.Gradient, outerRing: RoundedRect, marks: [Marks], shadowDirection: CGFloat, entityNotes: EntityNotes?, shadowSize: CGFloat, offset: CGSize = .zero) { self.shortEdge = min(viewSize.width, viewSize.height) let longEdge = max(viewSize.width, viewSize.height) self.alpha = alpha @@ -143,6 +144,7 @@ struct Ring: View { self.minorTickAlpha = minorTickAlpha self.majorTickColor = majorTickColor self.minorTickColor = minorTickColor + self.backColor = backColor self.outerRing = outerRing self.shadowDirection = shadowDirection self.shadowSize = shadowSize @@ -210,7 +212,7 @@ struct Ring: View { ZStack { Path(outerRingPath) .fill(.clear) - .background(.windowBackground, in: Path(outerRingPath)) + .background(Color(cgColor: backColor), in: Path(outerRingPath)) Canvas { graphicsContext, size in var context = graphicsContext @@ -273,6 +275,7 @@ struct Ring: View { struct Core: View { let viewSize: CGSize let outerBound: RoundedRect + let innerColor: CGColor let backColor: CGColor let centerOffset: CGFloat let shadowDirection: CGFloat @@ -282,10 +285,11 @@ struct Core: View { let gradient: Gradient fileprivate let drawableTexts: [DrawableText] - init(viewSize: CGSize, compact: Bool, dateString: String, timeString: String, font: WatchFont, maxLength: Int, textColor: WatchLayout.Gradient, outerBound: RoundedRect, backColor: CGColor, centerOffset: CGFloat, shadowDirection: CGFloat, shadowSize: CGFloat) { + init(viewSize: CGSize, compact: Bool, dateString: String, timeString: String, font: WatchFont, maxLength: Int, textColor: WatchLayout.Gradient, outerBound: RoundedRect, innerColor: CGColor, backColor: CGColor, centerOffset: CGFloat, shadowDirection: CGFloat, shadowSize: CGFloat) { self.viewSize = viewSize self.shortEdge = min(viewSize.width, viewSize.height) self.outerBound = outerBound + self.innerColor = innerColor self.backColor = backColor self.centerOffset = centerOffset self.shadowDirection = shadowDirection @@ -302,10 +306,10 @@ struct Core: View { ZStack { Path(outerBoundPath) .fill(.clear) - .background(.windowBackground, in: Path(outerBoundPath)) + .background(Color(cgColor: backColor), in: Path(outerBoundPath)) Canvas { context, _ in - context.fill(Path(outerBoundPath), with: .color(Color(cgColor: backColor))) + context.fill(Path(outerBoundPath), with: .color(Color(cgColor: innerColor))) var startPoint = CGPoint(x: viewSize.width/2, y: viewSize.height/2) var endPoint = startPoint diff --git a/Shared/Views/WatchFaceView.swift b/Shared/Views/WatchFaceView.swift index 2bcaaae..47b960c 100644 --- a/Shared/Views/WatchFaceView.swift +++ b/Shared/Views/WatchFaceView.swift @@ -1,6 +1,6 @@ // // WatchFaceView.swift -// Chinese Time Watch +// Chinendar // // Created by Leo Liu on 5/9/23. // @@ -100,8 +100,12 @@ struct Watch: View { static let frameOffset: CGFloat = 0.03 @Environment(\.colorScheme) var colorScheme +#if !os(visionOS) @Environment(\.showsWidgetContainerBackground) var showsWidgetContainerBackground @Environment(\.widgetRenderingMode) var widgetRenderingMode +#else + let showsWidgetContainerBackground = true +#endif @Environment(\.scaleEffectScale) var scaleEffectScale @Environment(\.scaleEffectAnchor) var scaleEffectAnchor let shrink: Bool @@ -137,18 +141,24 @@ struct Watch: View { var body: some View { +#if !os(visionOS) let watchLayout = switch widgetRenderingMode { case .fullColor: self.watchLayout default: self.watchLayout.monochrome } +#else + let watchLayout = self.watchLayout +#endif + let fourthRingColor = calSubhourGradient(watchLayout: watchLayout, chineseCalendar: chineseCalendar) let textColor = colorScheme == .dark ? watchLayout.fontColorDark : watchLayout.fontColor let majorTickColor = colorScheme == .dark ? watchLayout.majorTickColorDark : watchLayout.majorTickColor let minorTickColor = colorScheme == .dark ? watchLayout.minorTickColorDark : watchLayout.minorTickColor let coreColor = colorScheme == .dark ? watchLayout.innerColorDark : watchLayout.innerColor + let backColor = colorScheme == .dark ? watchLayout.backColorDark : watchLayout.backColor let shadowDirection = chineseCalendar.currentHourInDay GeometryReader { proxy in @@ -172,20 +182,20 @@ struct Watch: View { ZeroRing(width: ZeroRing.width * widthScale, viewSize: size, compact: compact, textFont: WatchFont(watchLayout.textFont), outerRing: outerBound, startingAngle: phase.zeroRing, oddTicks: chineseCalendar.oddSolarTerms.map { CGFloat($0) }, evenTicks: chineseCalendar.evenSolarTerms.map { CGFloat($0) }, oddColor: oddSTColor, evenColor: evenSTColor, oddTexts: ChineseCalendar.oddSolarTermChinese, evenTexts: ChineseCalendar.evenSolarTermChinese, offset: shift) } let _ = entityNotes?.reset() - Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.monthTicks, startingAngle: phase.firstRing, angle: chineseCalendar.currentDayInYear, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, gradientColor: watchLayout.firstRing, outerRing: firstRingOuter, marks: firstRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: showsWidgetContainerBackground ? watchLayout.shadowSize : 0.0, offset: shift) + Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.monthTicks, startingAngle: phase.firstRing, angle: chineseCalendar.currentDayInYear, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, backColor: backColor, gradientColor: watchLayout.firstRing, outerRing: firstRingOuter, marks: firstRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: showsWidgetContainerBackground ? watchLayout.shadowSize : 0.0, offset: shift) .scaleEffect(1 + scaleEffectScale * 0.25, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.6, blendDuration: 0.2), value: scaleEffectScale) - Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.dayTicks, startingAngle: phase.secondRing, angle: chineseCalendar.currentDayInMonth, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, gradientColor: watchLayout.secondRing, outerRing: secondRingOuter, marks: secondRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize, offset: shift) + Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.dayTicks, startingAngle: phase.secondRing, angle: chineseCalendar.currentDayInMonth, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, backColor: backColor, gradientColor: watchLayout.secondRing, outerRing: secondRingOuter, marks: secondRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize, offset: shift) .scaleEffect(1 + scaleEffectScale * 0.5, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.65, blendDuration: 0.2), value: scaleEffectScale) - Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.hourTicks, startingAngle: phase.thirdRing, angle: chineseCalendar.currentHourInDay, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, gradientColor: watchLayout.thirdRing, outerRing: thirdRingOuter, marks: thirdRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize, offset: shift) + Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.hourTicks, startingAngle: phase.thirdRing, angle: chineseCalendar.currentHourInDay, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, backColor: backColor, gradientColor: watchLayout.thirdRing, outerRing: thirdRingOuter, marks: thirdRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize, offset: shift) .scaleEffect(1 + scaleEffectScale * 0.75, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.7, blendDuration: 0.2), value: scaleEffectScale) - Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.subhourTicks, startingAngle: phase.fourthRing, angle: chineseCalendar.subhourInHour, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, gradientColor: fourthRingColor, outerRing: fourthRingOuter, marks: fourthRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize, offset: shift) + Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.subhourTicks, startingAngle: phase.fourthRing, angle: chineseCalendar.subhourInHour, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, backColor: backColor, gradientColor: fourthRingColor, outerRing: fourthRingOuter, marks: fourthRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize, offset: shift) .scaleEffect(1 + scaleEffectScale, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.75, blendDuration: 0.2), value: scaleEffectScale) let timeString = displaySubquarter ? chineseCalendar.timeString : (chineseCalendar.hourString + chineseCalendar.shortQuarterString) - Core(viewSize: size, compact: compact, dateString: chineseCalendar.dateString, timeString: timeString, font: WatchFont(watchLayout.centerFont), maxLength: 5, textColor: watchLayout.centerFontColor, outerBound: innerBound, backColor: coreColor, centerOffset: centerOffset, shadowDirection: shadowDirection, shadowSize: watchLayout.shadowSize) + Core(viewSize: size, compact: compact, dateString: chineseCalendar.dateString, timeString: timeString, font: WatchFont(watchLayout.centerFont), maxLength: 5, textColor: watchLayout.centerFontColor, outerBound: innerBound, innerColor: coreColor, backColor: backColor, centerOffset: centerOffset, shadowDirection: shadowDirection, shadowSize: watchLayout.shadowSize) .scaleEffect(1 + scaleEffectScale * 1.25, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.8, blendDuration: 0.2), value: scaleEffectScale) } @@ -199,8 +209,12 @@ struct DateWatch: View { @Environment(\.scaleEffectScale) var scaleEffectScale @Environment(\.scaleEffectAnchor) var scaleEffectAnchor @Environment(\.colorScheme) var colorScheme +#if !os(visionOS) @Environment(\.showsWidgetContainerBackground) var showsWidgetContainerBackground @Environment(\.widgetRenderingMode) var widgetRenderingMode +#else + let showsWidgetContainerBackground = true +#endif let shrink: Bool let displayZeroRing: Bool let compact: Bool @@ -226,17 +240,22 @@ struct DateWatch: View { var body: some View { +#if !os(visionOS) let watchLayout = switch widgetRenderingMode { case .fullColor: self.watchLayout default: self.watchLayout.monochrome } +#else + let watchLayout = self.watchLayout +#endif let textColor = colorScheme == .dark ? watchLayout.fontColorDark : watchLayout.fontColor let majorTickColor = colorScheme == .dark ? watchLayout.majorTickColorDark : watchLayout.majorTickColor let minorTickColor = colorScheme == .dark ? watchLayout.minorTickColorDark : watchLayout.minorTickColor let coreColor = colorScheme == .dark ? watchLayout.innerColorDark : watchLayout.innerColor + let backColor = colorScheme == .dark ? watchLayout.backColorDark : watchLayout.backColor let shadowDirection = chineseCalendar.currentHourInDay GeometryReader { proxy in @@ -258,14 +277,14 @@ struct DateWatch: View { ZeroRing(width: ZeroRing.width * widthScale, viewSize: size, compact: compact, textFont: WatchFont(watchLayout.textFont), outerRing: outerBound, startingAngle: phase.zeroRing, oddTicks: chineseCalendar.oddSolarTerms.map { CGFloat($0) }, evenTicks: chineseCalendar.evenSolarTerms.map { CGFloat($0) }, oddColor: oddSTColor, evenColor: evenSTColor, oddTexts: ChineseCalendar.oddSolarTermChinese, evenTexts: ChineseCalendar.evenSolarTermChinese) } let _ = entityNotes?.reset() - Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.monthTicks, startingAngle: phase.firstRing, angle: chineseCalendar.currentDayInYear, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, gradientColor: watchLayout.firstRing, outerRing: firstRingOuter, marks: firstRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: showsWidgetContainerBackground ? watchLayout.shadowSize : 0.0) + Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.monthTicks, startingAngle: phase.firstRing, angle: chineseCalendar.currentDayInYear, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, backColor: backColor, gradientColor: watchLayout.firstRing, outerRing: firstRingOuter, marks: firstRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: showsWidgetContainerBackground ? watchLayout.shadowSize : 0.0) .scaleEffect(1 + scaleEffectScale * 0.5, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.6, blendDuration: 0.2), value: scaleEffectScale) - Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.dayTicks, startingAngle: phase.secondRing, angle: chineseCalendar.currentDayInMonth, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, gradientColor: watchLayout.secondRing, outerRing: secondRingOuter, marks: secondRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize) + Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.dayTicks, startingAngle: phase.secondRing, angle: chineseCalendar.currentDayInMonth, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, backColor: backColor, gradientColor: watchLayout.secondRing, outerRing: secondRingOuter, marks: secondRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize) .scaleEffect(1 + scaleEffectScale * 0.75, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.7, blendDuration: 0.2), value: scaleEffectScale) - Core(viewSize: size, compact: compact, dateString: chineseCalendar.monthString, timeString: chineseCalendar.dayString, font: WatchFont(watchLayout.centerFont), maxLength: 3, textColor: watchLayout.centerFontColor, outerBound: innerBound, backColor: coreColor, centerOffset: centerOffset, shadowDirection: shadowDirection, shadowSize: watchLayout.shadowSize) + Core(viewSize: size, compact: compact, dateString: chineseCalendar.monthString, timeString: chineseCalendar.dayString, font: WatchFont(watchLayout.centerFont), maxLength: 3, textColor: watchLayout.centerFontColor, outerBound: innerBound, innerColor: coreColor, backColor: backColor, centerOffset: centerOffset, shadowDirection: shadowDirection, shadowSize: watchLayout.shadowSize) .scaleEffect(1 + scaleEffectScale, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.8, blendDuration: 0.2), value: scaleEffectScale) } @@ -279,8 +298,12 @@ struct TimeWatch: View { @Environment(\.scaleEffectScale) var scaleEffectScale @Environment(\.scaleEffectAnchor) var scaleEffectAnchor @Environment(\.colorScheme) var colorScheme +#if !os(visionOS) @Environment(\.showsWidgetContainerBackground) var showsWidgetContainerBackground @Environment(\.widgetRenderingMode) var widgetRenderingMode +#else + let showsWidgetContainerBackground = true +#endif let shrink: Bool let displayZeroRing: Bool let displaySubquarter: Bool @@ -307,18 +330,25 @@ struct TimeWatch: View { } var body: some View { + +#if !os(visionOS) let watchLayout = switch widgetRenderingMode { case .fullColor: self.watchLayout default: self.watchLayout.monochrome } +#else + let watchLayout = self.watchLayout +#endif + let fourthRingColor = calSubhourGradient(watchLayout: watchLayout, chineseCalendar: chineseCalendar) let textColor = colorScheme == .dark ? watchLayout.fontColorDark : watchLayout.fontColor let majorTickColor = colorScheme == .dark ? watchLayout.majorTickColorDark : watchLayout.majorTickColor let minorTickColor = colorScheme == .dark ? watchLayout.minorTickColorDark : watchLayout.minorTickColor let coreColor = colorScheme == .dark ? watchLayout.innerColorDark : watchLayout.innerColor + let backColor = colorScheme == .dark ? watchLayout.backColorDark : watchLayout.backColor let shadowDirection = chineseCalendar.currentHourInDay GeometryReader { proxy in @@ -334,15 +364,15 @@ struct TimeWatch: View { ZStack { let _ = entityNotes?.reset() - Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.hourTicks, startingAngle: phase.thirdRing, angle: chineseCalendar.currentHourInDay, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, gradientColor: watchLayout.thirdRing, outerRing: firstRingOuter, marks: thirdRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: showsWidgetContainerBackground ? watchLayout.shadowSize : 0.0) + Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.hourTicks, startingAngle: phase.thirdRing, angle: chineseCalendar.currentHourInDay, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, backColor: backColor, gradientColor: watchLayout.thirdRing, outerRing: firstRingOuter, marks: thirdRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: showsWidgetContainerBackground ? watchLayout.shadowSize : 0.0) .scaleEffect(1 + scaleEffectScale * 0.5, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.6, blendDuration: 0.2), value: scaleEffectScale) - Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.subhourTicks, startingAngle: phase.fourthRing, angle: chineseCalendar.subhourInHour, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, gradientColor: fourthRingColor, outerRing: secondRingOuter, marks: fourthRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize) + Ring(width: Ring.paddedWidth * widthScale, viewSize: size, compact: compact, ticks: chineseCalendar.subhourTicks, startingAngle: phase.fourthRing, angle: chineseCalendar.subhourInHour, textFont: WatchFont(watchLayout.textFont), textColor: textColor, alpha: watchLayout.shadeAlpha, majorTickAlpha: watchLayout.majorTickAlpha, minorTickAlpha: watchLayout.minorTickAlpha, majorTickColor: majorTickColor, minorTickColor: minorTickColor, backColor: backColor, gradientColor: fourthRingColor, outerRing: secondRingOuter, marks: fourthRingMarks, shadowDirection: shadowDirection, entityNotes: entityNotes, shadowSize: watchLayout.shadowSize) .scaleEffect(1 + scaleEffectScale * 0.75, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.7, blendDuration: 0.2), value: scaleEffectScale) let timeString = displaySubquarter ? chineseCalendar.quarterString : chineseCalendar.shortQuarterString - Core(viewSize: size, compact: compact, dateString: chineseCalendar.hourString, timeString: timeString, font: WatchFont(watchLayout.centerFont), maxLength: 3, textColor: watchLayout.centerFontColor, outerBound: innerBound, backColor: coreColor, centerOffset: centerOffset, shadowDirection: shadowDirection, shadowSize: watchLayout.shadowSize) + Core(viewSize: size, compact: compact, dateString: chineseCalendar.hourString, timeString: timeString, font: WatchFont(watchLayout.centerFont), maxLength: 3, textColor: watchLayout.centerFontColor, outerBound: innerBound, innerColor: coreColor, backColor: backColor, centerOffset: centerOffset, shadowDirection: shadowDirection, shadowSize: watchLayout.shadowSize) .scaleEffect(1 + scaleEffectScale, anchor: scaleEffectAnchor) .animation(.spring(duration: 0.5, bounce: 0.8, blendDuration: 0.2), value: scaleEffectScale) } diff --git a/Shared/WatchConnectivity.swift b/Shared/WatchConnectivity.swift index 3ed44d4..2ba0235 100644 --- a/Shared/WatchConnectivity.swift +++ b/Shared/WatchConnectivity.swift @@ -1,6 +1,6 @@ // // WatchConnectivity.swift -// Chinese Time +// Chinendar // // Created by Leo Liu on 5/5/23. // diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json b/Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json new file mode 100644 index 0000000..6a54b2a --- /dev/null +++ b/Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "filename" : "back.png", + "idiom" : "vision", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/back.png b/Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/back.png new file mode 100644 index 0000000000000000000000000000000000000000..8d620d7e0a8fc5bc13ceaf9f77800fbe75cfce60 GIT binary patch literal 5728 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w@K)Q9>#R~Q%=Gcui>16(qT3vv=G6#|SI z7&Iop@$ z90}$6#~xN7CZnSy8Y3gaa?#Pne7PT2tcgv##>qwLJKOc!PuouKoT<|CO|fLx-<;A^ z&2`saeY|2mk;CIsT*R6Xy~Fn{mvuDvAAa*Y*puV!--G9xTYqb>w>}>ixASx6v!4H} zH{5%%^hfJXla$&;LR#B@FZ3@FKe{GrwQ%m@8&bcHYpmn_TP(6Ud-Z9Te8J_?C#^2p zd1WW>F@0wJHu~j?=9g~Ye}#$|zHaihb&O8(UX%1s{^#ZyTi+~8@JB880X zj@T;HvIZLE&B+&}&K&u+opTaI5Y7AbRo^MvVm--k4F zl}IKv!;3ke{&Ko!%hbC+bX#v3FBfOO_sB#2%72epg83zLp8q`WUTJqD@ssiTUHcg& z{$=f5c0>0tFz7i8JR*x381$4un6YB1eHjCT$UILM$B>FSZ?8KtG6*mnaQM={idnbf zjo!h1vwzQFWMD8^b00_^ux0}q;KTzYS|or3har#mdKI;Vst0F>O+SpWb4 literal 0 HcmV?d00001 diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json b/Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Vision/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Contents.json b/Vision/Assets.xcassets/AppIcon.solidimagestack/Contents.json new file mode 100644 index 0000000..950af4d --- /dev/null +++ b/Vision/Assets.xcassets/AppIcon.solidimagestack/Contents.json @@ -0,0 +1,17 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "layers" : [ + { + "filename" : "Front.solidimagestacklayer" + }, + { + "filename" : "Middle.solidimagestacklayer" + }, + { + "filename" : "Back.solidimagestacklayer" + } + ] +} diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json b/Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json new file mode 100644 index 0000000..00bb5d1 --- /dev/null +++ b/Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "filename" : "top.png", + "idiom" : "vision", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/top.png b/Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/top.png new file mode 100644 index 0000000000000000000000000000000000000000..a306b2c3c88482cb7eabbd8f58ff3f4c285542ec GIT binary patch literal 43716 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 Rz5m7C%f^=I(u*#S{|`lF%iI6} literal 0 HcmV?d00001 diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json b/Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Vision/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json b/Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json new file mode 100644 index 0000000..c8c91f3 --- /dev/null +++ b/Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "filename" : "middle.png", + "idiom" : "vision", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/middle.png b/Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/middle.png new file mode 100644 index 0000000000000000000000000000000000000000..8e11b3483447a10d9595a56144b85c3f3112238e GIT binary patch literal 70034 zcmeFY_dnJD|37{|$Ba-iQdV`W6eT4iPQ%_Kdxa2L+4CH!WOHOyMn=d=k`+fGiR{s^ z$vXBv9Or!Rp0CU2KluLm?sBOfmoDA!_uKt;zum64>ure8(Nbn&IK=<}U{Y1NqXz&r z{G+;C$Kd1PD9WaI$>1qUtE^1bRAn+Q<+;Id^IZlqouNAi_l2|U=G@%WJvZ-2EOazzf=OfO0T7Hv4L3AnDpD{VR221 z`}(T%O9x*%!=CPomdSQmTGnhln2Dwoy&s*++kILiX&0Q$dcJD^jkXtOOR;Iu374E- zr}kQfOPLNl*(#ii+V8j>&p+KJ(<86uZ2S4@jO>!xd_mZ}($3ypw#$Uanm2Bm*{B!W zkokxesg;Xwt<~-I+n+W3%I0@;es0m9BvXPiyp~^VUNSH>Q5(jBAsd}4544iTr_2(g zj@Nx`?ek>wQC^%zw#Kg7OQB4Vf|q+9t{)sxcIL(?Pbig1Tk%>d)HhFv`;(`r^;x(c z&Jw$n{pEk%Tfb6Pi$|O!JJrAab+HMm{)oGZi6;PJ=MH}({PGlh0D`4k_0CNLzt@Wg zzOPY6!7CJeQJ}q#y>F6K=lSA~D#8huxu^ug+D@XVk=zq9CtlZ(Uj|}^5bxInRDMz0 zo^a9V)EY{)wr#YI|0udtYM*m$_EO;jiJY1~a)jsn>vx`70|cTUeeQCpr@Y08{@qON z;CC_--{_$<0Q8%+d;j+VvVz$D_u&W*tp@&*1T_EqIE6+2?}G`A`0oQtoAtkcKvU`b z?;{H#{J)QG@PFIlxUc)LUa9YZdT4^eY310mwLg(h+XV1mwo{P+;l9-9l4Wr6&j^i-C0YKy9 z?I?7*lXAyR7x03Z7xpsDvUO{_#i3ws>BQ{SA|}$BCa#VD2rMtNnx@=3Al>%v%hlXdbSpu*Seuy-`@ATFATD=uE z6;CWq>G_8fOX$uUmYyVoxvx-yfPrGK=&EM`n-ceN<2Qq}t=7*pq7a z4eqt9lVf-UfR;mSvJUm@%3!>YBgFJn;%YLZYt+7(i#$k=HpwF{ZPn|7_YX${(t0&^ z8eJ883>9mQBA0d9T%xn*Izuaq;;JK#1E8P_w~_4KEKP6EHYD8qmU>#i;-c-f?~e5v zkDlg6m1re98>u6*Dmn>yQMV(rc_On*aG!(^_c>5eT@U-BuB@HR#t*<~Hr%J6(r;{Z z;{}REQgxkQRqA`{ekReu;O@aGW*VR_AwY338qD_Q5Q$)0GGuen%hkj!>lAH;6%6dH zgkCL*HKT{%Dt;(WztU%i9q(_c%HLDNf6OUydB#MWDr{O1V!<*V*h z*>lQ~*()NE4L7dW&XhhpK?TNzAiQJ8HCBGfpJX~J*PS|@kg$0yF_rE|Dgl)~EAuH< z7#QQ~f%W}hMVV6JTG2>T%EftneFz z+m0st&PC_%-sXi+t$n3ft;l0xAxiNM{D?V z9lPS#bJHG$^G?AY?p|9QLuU|RA?)zrc)yk9e-blXYB-0}wi*1kr5|N(^3($OTH{0} z(9Wv3^KM|zlua?yh%MM3E-lCIJfo`3=<1bDMOTAvM;{GPie2C(8#vFN6sBn_)aiP1z=ftf$W?fT&VEh2n~&34Q& z?cwZq3V!J5wdMOR<_H)+0gbO44WBVCUe)q#vs~4j#l8s0y@SZ&X8;Fz#t;q5OnV&I z75TVKt7iWGYo!LOM<5k)eD1eWN+*1|%zzcI@~v25M`Mk;cJsy&8tmk48gVm3mOnwb zb?j!Yi&LdMSEVW6Np6dS+xwRhAm}#Kr_+Vey1;tev|-w`fJ7UULuP8#JWCen_GD!M zKhcP+s>c{QU9Wu8o-xIeK`W-%Qr-$yR?sL54L!?#vcAqR`wl&i_Mg|7%#^#? zt26dg7#Kt$(Fk+O*sJ;#%HyqTP*^K{(LD(GQ@3-9w9Q`8gK=tjVR~b@v?&RNFF^Uf zvFq&m=Wbd9kicQr!08Pj!*-g!$fDi+;6OO zOATiwL?SRXtLY>c`a=5d0wlJ7KKQD0*H0!;x3Rm3;dBVOIiB9rJx)h!WFetD(GLKO z7Fe~GK;Keb9H~}gy-&h)LMEfaNf*R_7DvJt2}PoPC)hz}q!+(a3Xd53T>=dlOG$;$5nOsd` zU;<8uIA@&9JzUqUp-uigxoad)@ntY=tM{oMn3E2jB^XaCVbgTMTyY2uwj$e69a=(~ zX$hYDl*QF~8E#N;=-Jk)A22&l1v5g@anqcr3a8OTB?eLHy#H*3>u~Ki8mx)#MVejiehwjkPvg|0!x-EV92e|10oOIb#)Tu$5#$XVT1>%n@AgYb2a1{US z9NoGtOT`|u@WGPNDVbA%o(t;fyU6dl4JTXN*j-kTjs=q;!Rm$n{%@kaQW!zjh&I0Rw^rPedudDPE{coh-M?DVF+wIG!EUiPkqEK0CEq(Xz%&Xa<$<%(wDSmyoKX?T6Vy}bpJHXVP5zC zBn_5%5;Bfl(~>bh)2cnOp)Ua2b%?W^Z4K!|nGd!wp^<`QPnx^b^yPrxzdl3+*r5^D z<=?6(JFM`6`TedGa`)UjSqnNUAfF9Qff2Ru<9bPz6b@t15Bo_4QE0f+OZTBUz!ae| z==FiNh+)yed;!k^a|$hJJj_JLqwOfA@F^&NQElx>|7Jo=p1NOYJaz~M^!G>J-b7@T zeH#YxNVJl^Zr#CU#hzEtj7DcuxQxJZi zUH>Po{2$6jgdmIy{7#CPOCMdgc!zobRvn%!Y53V;|ATO^+e;Lgoy$UJe%cH1>$nX9 z{i9kBVwWO#CZo&_z)V{*idE@!*3EEVOS6K%3| z;n-Lmcq|4~CW`+`a^O?!7wh{t!2(|1ks`jlC?j{Q@-N0_a(79+^kn)YuH(P}hES}M z>h@A~TXP@9OzE_FE2|+VNI@9GgK1pBbv_45l-Wn-DkZ9=|DNZzST+K1!sl^(VmB76 zEE+N9%DO>6RNir$6YaqUoFbuu*+ArcIXQdoFSK0e+XO>QQLP_nWP;w}bn$o9)T6ZN zi-M|_7jlvbejID{j94UES{US_5#!u{C{ctu<`b2sna}@}jB%Z^sLYFe4jN(P0Zt-t zDKc&Pr=V)cO(k{n);|49haO)120n`vkPEM%wAh(qPCzxCQ0$>_LsN1zIgY@JLLK+3 zeZV+C9uy@QF@~}=d>#00$F6&4*WTZlntn|Q%LeqafIBk{mh`Bsj>@TuY}D^m@9gMx z_u-YZz#Y;s>>riwB|n_%Bt=o01+5fuUy~H z%&f#?Abq_f*&Q+h4Lbc3EzN(brZ;>vHh8m=HblK`^Rz&^)c$UEi7CAzs0EQQQr%_) z_7GUR_Qoh4m4DqX_pR|UmGPy2xN#jAz=(|H7uffa(_h<^MOECJ@Vvu4NFGnRY%Vx%GC`K9$!FG z_tA{sgK=cMp{z^tr6DBvz#*PAYxHF-xM)jJu}A!3jn`KFKW$pz1F_=R6X_)~Uf{t4 z{E+YP2V#b`dgTf-3tXb3!SYrk#*f0lXRs%QQCk}1Qz{wcTX#l)Td?Yb-N7BmX5{+q zjY!P=xzOH2W6hO<_@#)*qJu;rGT4_;XSwIGD#fSh3ndmmT4J^pvmiu=-Gp|zYWTse zwMC-sZ&GuWiqn=wR@ky4&`!K15`P$GpF&86N^ziUJlfmIfUtw^kF->P{-~Q03eZwD z%ms+7hw#c(=QA4ARY?p6={kfN zj~Lu8l^U+~#Z_f@DeBD{^)ItlR0S?{Ff`xj_hlK~WCo>_uFg#SnifGmGTRLX%OV&$ zYU|dqz?vC4(reZ26~}gzn*ldoRV3t3nQ-5h0!iBab$C0tz`U>@pb>^_Jj(`T-p$I) zx5nYuED7>Bt)h_-PZ)B)YSSX!pTe*y1mCCBNbbN$Vy5-o%S15{wR;si3FAP|rWF`p z#Q21eT=FeeAcdaQkZO!mW1!-T$q4lE8QSnpo~Nw^7v2DC zXiLlx-m)_Yxtt2*(v8v`;YhORDMx&eqt`&XAr%rUw#yE{-RHRAzm{e5Z7a1JpIPT1j>+|{5(K^CuGw+hj@upmo4&hw@PEId0_Z~A!QUZ~2!&jf|74Bw2=COB z-!$XS<`r@a$Sf*;cg+rbwz9R3D4!f01J+|J+VK7VuK%pKeHVrZ6!CP*wC}@$bkmR#l8R%~ zcx&zX4QEH(^iz8o@(59yxP{$P$sb<QXp!d-A%BCA* z>4Y=(_HQ{H$gW+IW}MLjV+?>b1u?CNu#WYj!G5cs<%M^s^`Pu5{0vxTRq2OirMd%s z^}&+8o0SLzJyQw*b0WX-OLt#pkdn8it=8A|u*-5$qPWjd^B1h9kPA=oAD#RvG6Jb> zSUtBo1Q7d{cTMELV`xX%SR9q?vlq=PhO88g`9%N0BWO;vmb@h`nhtIKauCt@n?fF@ zlmt{{=+m-Rnql&M_Br9ZzrG;F56(bVXPsb2*)DpafzkUWSAaWmLlmem-df+X1o9k$ zk86%Lwt6Qkr85Fe5)Fj;1OJcW?jp|oC3AG}0@(rtLl+SNUhriSmSi?i`&A0cYyH0G z)yV=Bahg?Oqt~rN)hPchBI0U)H2x9}qe?`oc7%0!kU`#K#aXm5^ha9_qJeLr`YZ-l?0!XD4}(T4 zEd4(Cjw$WeahU5c z#U-FT)`hMoayjm z16v~@lV%geyG#`iO{%~o1;)uS9vbYs$It&P;bWfBy78C>uid$N1$oG>vu;8d9u$sH z5KSZ*Q;Y)RPx>2Bk6QvR4?gTeVelM@mf7;7jKq_Sc<&T#r56kYbmG*FmJ0psL9F`` z(0!~ebcscm6(ei0F7EFkJgw>~_;j-Zo6$V=_dehaPU%)nl+O~ZA9D9A|L1l5jt#Ht zD3N1GCL*z|7Io!Gx$= zU$+FqbXoZtZayKOw|+%Q{oBKo9;_5k43TAzWbMnu{VCabHxlp@*OTP&6oDw9hgy7w zyDi(*w>d3jhs*a4x>>3a*s97ZMXgaLNQ3o{`U|P3Ei8N;q15k8s@|-+jL0<}Tbj!> z4Wkl2X<9MqM_dC1tZ*B99M#{!^BLq1cD%nfp0Xhr-Z1j#@rN)qhHat#kp-{;i!CBx z^8`6?}<0`CbUP;VHpo~s>1v*@bhG0nflCn zKjXkz&(-N?SO@<{1-z=G&3fpI4cS;!!_Rcd-9`Kc(37Yg*3iTR+YB}E`SLITSz!RK z#xL>(M!*eJYOim6O^d?^Eh1OPRU&Qo+2nR#%dB4&d)=Z;9rYTM9#p@KKb;c=!Qfv+ z`o5);I4>xL#1@&d$hUtLGLZyHT;Q=tP~%6bz&3axb`7}KL^xh2EZ<%mf3G)75-8)IiP+h8Rwe-flX5hfyW2Rr0K+`K|!e`!bnUlbVFKph2^w(1j%vo!2u zW&0~F1^3@hDWv}@-|1RpKANRQVgSdorpLEG;pSOHR9!#FxI5yHj<@lQ)RRrnRyJ$% zLqLu=dI7g#1SBplw2`nB0v*hk=^}V?kWu$wE{5Xtf|NNBNj`JR zQNgWk?nfV_`i+MH4r#+2ZIR`-V5O!`&U-n`(s-HA_R)c~f818s2fvz|j@;z0>hY=h zFXwly1bz6byI}>Z7osZlSMHN$wz%EX5;F;T+8n0Gt&g*~()%UT5x&)t&h5*T?{R!K z<3sC9ZpM|xI#3)0W)kcJ_6QK0%1T`Ifa2j>STjGY``X+$7O(1Bu&8o2_bfIJ&(PgH zHJo8A^t~zU)JsOD;Jq73WCt~M1TUXu-?amC|q;ew-J(pkBhmXfALHCU}$8N6(C#JTx&^vVmPd~0sza?87&KMMj4SAVJ3j98I>k1FX z+h&N|TFXq+Xah-fS1OgQw&YrWO3dY12jh32vGz|5sEtv>6{G)F|5dCBFlQYdJ(!T~ zeZSS6OCSecmKlTI;~zBJAauCHVYMU* zb3(| zXXla9xi$k*8#Jv<18+HWA1vaYw_}dIF^KBRO#B!$dcs>6X*a2Uym2BAG;nv-EF-VC zho2lzq74>U*f4x>P}P-^t|%XD*tc%yv{!LLcIQUJOGlsrrTCE=W*cW9x21SdgY59s zlA8Ws2uu~bkt^-B?);0kW-l&$#vg6yzI&FqWA`h4TvO;?$!S&a6s7R&!XsqiGZ(yN(pw=%=YA57W|i zmutUkv}R`hs-(#LT?46cNT35l%c!^7Tm0Fy0Z+bs`b#O|;T{7m$CvN%V3%K#Qbyu; zvT++e9@k-j`%!} zT+KU41xBQQ>m`tO?%T3+*@{Vdth1b`+p)5_cOCFRSW&ZPb~S^XKl47$c}DKfT4it) z$m3<)eX&Z^pb^R6AMXG~fo#UBRE zPAN@V9Vkwtgs0sQt3aO>PL;QR;&*I&bv-Jp`P?ghH-@=6J?OjpFNbNyoAz3zzXUT8 zk#A~#?0R1PCfBVYWR*4?=%{+6i7G}30p5S-KIQD}L`sxcn+o{+ZYqZj5i}{hzdE4@ zIwtl4yC0I+pI|E}+fRt$Rx=BiRo7GPY!9B<mX>LlyFYe#_xXuMsMVe(lFHb(GXrT@jW^8*e;RNTxjdYKHrRQYs>7t$!X43-{ruZu)@$k5z!O;EW%&8 zKko>(=<^v)JpMCD721GF&pRL{`|04MXChhRIa-WHNN=Yw*JaR>rL&#a@RbTQ;h7Y< z!qINhudjbz?U_yKXDi1a84#Al%43 zymzMszK!HVhdYrVO8UCWqZibAAXV0Pn^-~;@#1a{U$GWq10*yeOJfTbFpe>Tj3Bqx zoY3tn;o=rs6mvS{6W9ogPn4GQsedbk7n?s@cTS($xWk(h?R{B?8tSm{Hx0mHx(2Qj z%O2|CD7Vh?xH2)zxxyeWYY~oo@;nd#>D1e{&g|O3s)LD`!pl3l0(o(SuOL6&14Vx~uv_uY|P7|D4Vgg7aaDW@pD7bJ0j{>pqvKe?-NFfG20MgtOSN z)5uzREiYmswzS%E7CYn=w4FJPKWDWAzNNPRgtTgHWIv@YmWG~*2JlmPIu@6p$RDHq zt!XMQ!X40wQJ{hM8S&ib+s;o)B9D5{F_}hIa_1Q{dK@G5|zU!*KW!oy zhKza(V^?4-35J>;63rmJjTUp~VN}FM+RQcIL|FHH6pI3g1C+J20^J-2!9Q@;vY<&D zT$|s+;3y;&vM9S^E9B&HmJ+p(GwG-U##uoYo#)(WQlt=mT6tak>f|F}^`A#$J0B}( zgs}&)=3Z9lSV-@YFth;WJUP=uv=W&>8ZzR6!ce9w}}u1*-JBrNPp!-Aj?G$9)@vI23R}Q zpTYgKr7r%oL_^PU@#^xpMaSmh<@l?_tfH}F*sC!X98 zz9M~abLbvufY##$@h&(AxBK=AML@wffk_ydJJ_#|I6s&xhJ7D95z2bKx=Xc0aKkFy zC_G{cdin5<8GM+aW=#-E)A1%S^R3^)hQ!+@9!hWrLr~3Sekqz_FEt}6>Z8*`z{%rW zqk-Gmk5*^2wtbxArv8x5TJ+k{}*+XM3TeoRQXMZdm%!ekzUuGs`#!2 z&A$tT9<}>e9bm6?gkEfa(VUso(GuBjYqdO8>bZ8Gp|X~{v32Uan=Ad?)J}P+@lf8n zJTY7oMRAo}cI%isn~2IhJywsYfn?DN#)3`>%tZmI&OqUUv)DVwvzm#r4;Bu@)%TlS=iOz>=g>@el3A(D!s)8Z+T7?23gBVU16GLvw z$-SZ1(P(K6iCIFruUR%pm(o4f%dDVGJVc#(pE7q*%kol#=h!RraKtV)5M-?#syD}P zp$|82ag0FBpPagh{N@<1bkV|E0QP3ur&%W07pq^vqfy$A_6rlmEl!U8+bed9I;_yF2?=fUT24ZF*r7b7 z^AWy3P%Leg7ZkByFSE@|LG=n^Um-ZiGT|Pt<9e@7EMj8ZM-;}sShC&_PJ8|Nr}xRj z-cq;9%y_cV`84wHTVd4Rp6E!Bl*I_Xx9)FKYKwY)V{jO9a)8VR*SDF0DcK$Tj|alo zbHh|1#+G?xAG9Qn;XZbBV(T+Dm#p8+?@$*I4?s01dL@N3L;UY&!~O+cU`|;P!cn|} z{$~1e4EmNi^?aqs!9Jjzlix@rUu^`Pdl)m2jFk3Tc_g5p8DBDO#jw}_30 zaajQLk%iZ!9If4D@4kQNpN@rT8RY)mWvX^jmLu-Zk>I638aXSv=Ix7e5#)3R{?Zr& zyQMjU&Y7+i8f#3_?!IN{L)e*$b(2kN`E}mAZ?@vfAM45KvZ4r@RVo@F`AoX{-SZFM^X>uQ*jSQv&>cu;w&dF%+V!OEJxf$p7E!3X?*C=CGq_A#ildS5PzBb^ zF2Mzpg>EXRO6|W|YVUbnn%K(#SMhw8&K!_rFN zT&|!4MU`Bx65DmL_pn#C2#sQ_l8k1id_WIiv9eDUsU zb5AfL>nrimXZ$TI3kJaP#26H8Y*E-bP+_mX=O1`E+zTFir#J2y^-;LHGeREO!ic`1dI zRWr)L;CR(&SYCOjYAraQR^){T`VW&=HpJN_N+^h6!;4$sy& z)eaulv!I`;1HJm;h-0!~;SX7xfN_&wO5|jm4Kz$*l`m6ig%$Ls@S&2=t>kfRpclwW zhTi;FZ8GjBiqhL5*0<(b;UI(+uiI=Xrye=dm>}UQk-|vh$<1HA`74|{;u9qAf$>F! zHU(4?*bCAbNaA_opr6_&BZD>r1Qd7b^nW9&sGCy7~x)h?Gy#X4C+TkYtQh1 zZ4Q6_6-i-DAW6NR>Jqsu&OKH`F|4`?wqd2x=?izmj-IAASx17C<8*{NGQiVY8thQL zzoz*w1-a|Xg?3K?UazYHkCK-L2!F{dR*NGBUS$bcf~)uOwZ_-Siarq6xYB>ubGtAx z4_}w7waF*=VYBA|n&(brKKZTRy14Y%QUFF3Tcm}3NtQq>wqDc1aCA4d1BQ~v44BU2 z@6U}-<0V5-$>~q(v|Ki(uDtZ*OJ{_&uQNo}lRAI~P<0dw|Kqx&Saon-uWFlu?IKGRZz)8t=>I0|KHPigs$E4( z$15*aJK6be67evH3Ve|Wulkgv5v-CYK*4QTd>9%5QL>2IXQzXN&`jbq@zbq4-#;;k zQLSq6C@8Zjuj5lQF+>uLdPC5)Uc+aKP5Z*h&O+<69;#@m zC|mju^y5vhHwLwn6cmjI%;kfuCQdi77sT=%nYl$`Qjrh3W)i!pVZ&>KoAzywrV~Dq z0{B&CR_h_D+s%khHju4oN;g2KP^sMby0!HP@P%+?EkL&=DFQJn;kRz@XJ>ZY%0};x zbd#;lc9Oehn?fF4rr?$Dx>J5n6S=chPC&*u0U0CtdjJ~U1|RYH*_K4i-Qacco+I6w zOfraJzAyv6+b(q=X!jL}=W4@*ZGLut&#Jg58`HyjLI~562k7BU6?H53AJQw>r{z}S zcc@z~-B)i-5qTYRuOWZ~@fCu|60CIPd~xHce+FJ+)Fsd{>w*{HM)%O2S8T2|YXW743l4B^;o*G8=0OVFgCL z5x+9qTL)a@2rKfn>kB!BJ654XDrD!8}gN9-wgIi4mE#K7R3Y#6SrNOc71K~I?tvup}t*W(C! zEXD9$yUdYQPC$yNN^E3+s#qRdSy4|rRBI)xjYkaLI@_M%!k7v<2;^@8%b(!Lr@P2(~k!)(Po{<>Kpb#+NHk| z!;ac^k=5@WzQ8%O!ZrUbN6OB*L9Lg=d)n(O8Gol0=o7RQm$qZhrIdai@)mA1_X3Ry zg8uo%5bp3JfO%oaa+Et>3v1(PAH-b zkEbf3{H95YHvM8kDb{!`=NvRko~?_eN{vzn<4m4jt*n}vpVhyan=EUXv$`kyrcn1o zoD-u_kuv#BD9mjKa-WZ9@x8j9DUP78IZ((tO-UdPJ+G@Ee~HR2AGF@zo9JQBhh$y_ z-b-k0mvTXYm_k~jb@x(5E0_Azg!&+>U*@l?BanA}NN>vcBrQ*>CM#eZ?-h%i4SymH zJ-$rPd`-$AT*8{b4H#!u2e%H%z<@KQFYEMpaV#NJ3)^o#!uEc;qRR_m$D=U9T{DnH z)fm?lt0N1LwQE+IZhNz1zS$ZdNoFVJ4V>M_pFxRiOK&6Q0G1C|s9^LDHn4o9&@G>9 z#nISwQ0mHHJm5Q2hd-Vd2RR)bAUko<*>_(Hno=4HjgyedyJFu!osu@BU3W`D6C(Ko`}u1$Uv-Eac@!PseW#tAtJC4Nw%sIbzuzo6@Th#QQ_{ zvVKF=T$x#&VPw;GN$`pw7}w^U=C6K5wby%OyhRf+kNhtCsY(i&OLaKhu1BvxR9?3# zSs3#59CV>eV1`44Oy>xOyxu$vFC&;iwJlCc{o52ABd9u^bt}UMsgmJ~^z+bfJRcHr z>CW9CjLFV>0qpeHd4+~)a+%QSVN$czl|dI4r4-@Im~ok-lAJui{VVrqP~~JHpQ`=b za8AhLW}UO26i5fe>S{h<0fN72O8Lx`#c%9`-7&;CIX)+MIZls82fV*lz}Jc(2h;sP zx8rT6O1^9}!7%0O%|rh(97>kZjFCAsN6K2tGpHar-SLGhMfyT;$E3*=+EW*rSqfC! z@O)0&KDF+igLp2&waR-ZUR6~yBY(mX+oUVuRitW-^+n#Y0mV$r1?mjqX7UADKpT2K31NF@)g}8ISBUF}-y>dBOb#RuiJc? zH!V>Wq~8^i0z}_3CAT~(sf(2FUsAW!I?8I9seaz11LyBCyP1^Qty^+cd>t*2=XP&H5e$c0FyH#UNl^ocQj)Dz;Qp*|Qj(O$K{(itmcDbC5q|`BA9@>RCX7J(%^pU5NZJM}4 zR$4}<=S5{8;~QS{dGRpNHlfb=AdF-D@wvegf5hh-u26!FdlS+y+2?RtDl#^?4^&%G zG3qim9HQ60w2RALRMr3M3xB>ZV`F#`lPUB-r}ybgk#WoGvzbw-k{2JhJ1Au`8x)7# zemK#C!O)^$rsQzoEYLgem=(PBy*8=NJpA$ADR&;=)Y8%gX#Wesk?F#y=gppCf?tQT-D%lX+QH7UiO_ z(N!ASE>^X7Mc07=;Tc60z7c(;GPpH9*Bd96=+%-&u@avTaUh$(?qy&>;QERo)95YE zfs8F>nrNjLsg%rIqZ($KEk!z@X3Ol>ptLp}C+W%2c6p2ef#Xxeny?r1&8CA5I4CHD zPP2fMqdC!HKq{Rkd4=kd$b+2RI@HLS`OYhphWq0m+J!!7u|Fa`%7FQ!yQk&av+FqQjip?v+CPS+q$CEVpqr)^KLN*t{XK*N{tjN%S3&cK`iP-{e_QQJae_ z-BtZ#e$R8m)dE)GoehJ$a2N%s{;H@7vgR>3QO#WwG!SLp8X5pA6MCslugdi0)^3Y9 z)y3Yw3}+9{&vw|`|Ev>74_&l=qiLI_i0xjc>#i2V#^A`ed-3gaX1L{()r*nyHear` zPk%~xQI%2)=ugA&7N)s|M!&oZ_=%Zaab1JgUh^D8q?b_<gQCJyB=DwdP*am0o~vn+){ql~9xUu%*EzPYQpmUC<}k6wofHfm35lifaAag^|?VG&;+vLIT0M zz4@r%Ja|I*qSg}$P1nEv32ZkkdKo44kInhrzB&8qZYSC7A9>?r$;&Nc{Fb4t2gDMO z>E0x^%zLo8Vtk+3WiJ&spW+iT*g9Q%dd$Yf>3CMQKWE1Y!{hu|G1#@6@IF3X5G^k> zzmhj6x};uq-No6u`bv$<(DU4U^?-!j%okp7roYU*fH8R|Ghg%dR%;L}?5riU8;(rN zF!$5JLp)~|DLlBnkCuDM<~x&S#ifi0HUu13jlNk6!f9#JqRsXggwoE-BGgrHEs6@d@ivNkV&EL`ufqI=@ZReRG zn)A~p>u&ci;V6?T=FT*%o?w)UMedHo5)e6iwP9paQFb-}`0 zY#s;Vp)bOVr%Po|NOdJ?^MNU;r@gsD0NK^2ad}(_Rk_$TX@cPI9;EDX*Wh-~h4~Pu z)WyxV`bwM7yAV7sdG0P>ReSsC-O$zxHl&*2hAVJLp?+day}F@?jjRLPDtp-69jKYv zhesq{{rcn_mYbQd>7?qs7_GMMb~`xMRF#~d%a$Jdr=&}59{ z{3{W~AMeYqFxaO2(|@fLY5q-beV7L?d-wAg(bMbbxt+`Ap}T>dCf@=?+j$l>IOzFw| zG-N?6yGBbbllJQq;Rr6oqSx~Uky>q}6SiAtn@lj%SN7ACbiGig98362s&J=&ot1*o zJz6zH+H+le;QhJA{F7Z?RM(4C4Mv#ILf9=2{jQ1rT>C#HzHZ+7b$=8^_%BX$@PGjS zxM9^B^OCr%X($cj_1twr+#*NF+i$6in%P!9>?{kR%wXC+_93sHoU~wCWeZ*Vx(((E z&NC>Y=l&rlRs7bOyQl^5wLnWXATC$ICC;*@!u=9j>%?Cli+5?U*dZ0uKL<(PGW*)= znc7#|6c*l$IdCcV1ov169(={qX+w?%S>-kobq*>(EEH2y`L+OOw`&O9VR zOUUaN=hJbce|YO3SxrQQ;xr!qtyH@rHMb{_UVpi?1zW`gckliK7vmTR|=^H2N5zm^8npOIZwD}4qC6~)oNy<=^r@^(!cAE>S* zZq97aCDk!%(i%8IU)EK1!);#ClQi~{6Mf~3qeLcJg>XcV}Uh1wSo?yvS9+Z9ciso7AHOI&J_@GbmT=P;_f<@5b|jDr;2qD1fzT}8|* z)!(gewp+(8%s++O^C_>#)tWqNnZt|M*lb4NEDO?B0=!{wSdVN%c|W9Gkwhe>HCNvd zRE~#bL&2HVkrdIiKNkvDy<-OZv(Gh#|C*x}E{)d0n))JM$8TbyH$QFvDcY4j*FW0) zY2-G}QfS^+;Nr@5?OTf-zU>6ziIrj1tF>;a$%!H60{N}PVCbyoyB}aOm3W7ZE5B9I|UR`S^q+fjn|_#_8bgq z-t;Glsd{wP_y42ny925I{{LUsULhkSqcY2glw7kUDbI*7_ALqHw;|UOexn1?l<>OcGJOUe6%M;pC(!IK zM7DHYHJy}J;W0D-DzExW3&8xwSa=*Mspu<$V-4;slH^2EY^vuRuiDu%#U*htxx579 z+A(_s=@5Zyw7e4Z-=HqHA-U!spw%Jj_GY%N>t+S?h5(Oy- zLt8m)y<0u}xA2psJ~TMI!I|^>yV;wgdrM)tfL^_?=d!xeD0<$6 z>I~p9i_#XZrFOKGb8<~j{e_kmgvt4sTxFYcYItNaFJ%u=-s-^Vu$WnX#HFT`yUw?j zzkxEx9f%!6`|+0~lJ3Od*YGtuPd;Nk5IF>%yk%*IFGXUYakJKB!p_F<-&5=74``!# zn(PLdY-EW1+AQyO#!IAuM?&vJPAf{idi0*>6i+>PK1dA;mc^rN%zOGWR%pbj=FAQn zVYjeCf*_|U6@^ia-&q8M`I`&yJ^3P32pKQSwK{?NT_fA#P8HX9wNNu!P z#zbhA)v^#BKgcGD`UL#m2HA;%dLFBq>esrITe7CTd|Se>CL88B=c079^@v5qv&=n8 zo$F0c2?;`>h69h$3=Wrsj?+OD(PUnPJmhk!()x<`Qip+=ip+E1+y+J8CH-}A+L@A2 zoYqMN9pe>LI0ob4w6o)Ygs5vxm-rj&`&10S4 zbdW+iR7WS@YJ<%G8r>;AXmRbAGG0%q%pCpw{soqva$4YH%4QUJusu0wBzpU(Ar)ai zg~>*)-7g7`Gnr7QX6+l076XdHZyg?%lS0)4G~ZW}+ODLaZ zf+O-5Im*>?X()W8V?EdtzDnoGV=y%iHI1F?JMg;QMhJ=hPh{P}OT|#E8L0A(?Ox%MXQglS7JlXcL?2RHDO9EkcR)heyvhvBOT z5O}b|WjCvWbm-LtC9Lt5bb6uJ0B7I22LBI**usDUQhPJoL=FphssccmvSM(AJjcqv+>Ol$?hSTo$k!2_slP4D0Ar|R zol?t{r^nFQmeF}?$@aPxk8Fq*U*ioSUZA{TA3*-hW338Uaxx^BHb_p|N4?^u^8!at zd}mb6&}$F)yFmi_!OE|HrqONwI%m5oYDYa1XHWTfCehr8&MnVmk~l=8{@O5aT-5IM zD6X4)zY-34J_>OokmY>pdQM%9O(ZqU=Ek_QOCBR|zwRGfpFlXR6dzBcLnhvEiVF^X zNlrQ9nZJ7^jN84}<}@0Pr}N~{eLN05wqY|ICT@RZpVCG1t8cNqcnschIcmqg-w{S1 zn^%%><_eh+hm6*YSI^3MZCx$-jzWq-wleJ4mY<&nS3f1(QoAl?mrtC4&X{^@qkdm# zRuopwtNIt#Rv|^#+&I0P)0VrafIjjt_t`HeEXTe-uD>L|SxTQUwhX7*kJN>(OvX0| zb!E$15QDZU5f7eg>2Zp;Q;aV{ef#y(CeGoZ;n?%gy?vI_ja*Q(t(q zcBEg<6RH<|PSvwdVK58vB+6acuVJgJ=#0`7>}E^IAKhIL$&{}=;Ii%NZD59lWm7^6 z=L8;p%x4dN+(o@~ChM}GJe(q^mn%eG%`+W36auRyhE4Xs*-%&BfSK8&RivFwCuCY~ z*i|-=Pt7Xh%mV$lJ>s-9N588VMw;2kO~X0%fdTn}-C!(H;iFy820*&l-8%2 zG^a>^U?ln3+1@4SVi%_g3Jq-1Q zsnn)HV_;S&RJGGvW#w5=&OBBMM3U{$Nnq7SAba0+!@E~FTGUV1@z+Gwd7BGUPc%<= z<-!nOC7Ne~FOmPDK=OS56UM3LzD?+lJGY@085O_Dh}61sQ)Ogp{PDdDPGo%62aJG| zMk>HJ+}omuWs?XoPY|Z+y0Y21Dsqfo)uk$!Un~l~!Uv0yViXHzez=~$lSX-FjcUIf zlZPfzcFTdIIjwDwu#;eHCF6g#KtyB8~RV{|gUKTGCiCe;f-`jGtilgFh%iip5c zhyiBZYBSpKWWri94sYr87di)-S5}5F_8*M@C){2Kn5AT>O1EP=-DROl-8awYcbH#7q*M z+^5TeuVPU32+9XdLbm;XuBY_;?m|voM7skpzk=H!RvDw+2fD7eY`;jZI67bMb92#h zEll;&lRJ_;+d8;M&B_c=++7kI?);1Y7Q41kx(pQ0#McHTrGWz0S5*~p`Og*xatZz9s6Otdd!yDCcVjw2lA-rrUIowAY?`Qqx) zqbpIH`+o#X0a=Z&NZ2zxE0J;28pc5}*3IW~y7?bb2E8-?TbZ$%;*0gw? z&EiP?+b;PLC>p+nlW7LeP4)a7X4M~e1>qh!*q3q}o??Kx|C4IqZ5}ujTW^9U6T4nt zKqDcAH$^sz`6-=H(>?Oa-rm56U1>9gC{-ON-`0F9T7D4ou2qL+wZ92W!Lvrw=U;CA zHVJm_*G~s5}msCc{~08Q`$eqE1JNF%2m<{~5t2@eL? z7xB2Yq@BCnZuUC1HS+>{Bcr-Lp;&n~D<2o!GhP4*@?b*mw9ix?-KY-_&A+w8ki}}a z^tH*KQX*P%C>g9l)B>SL?X(2Rb%Qmf2`g(}9XjHu@q|TDRa3URgX)IWdtirPz(X)be{pBC$d!R zTxf3iXo?%VAHoJ{If4Bh6>7XVIpDYV0inRQ3BwWO4P>ts=lHw--ZKcbYEU^|_dxKm z6v$7(p&Pa{3+CJoJ=n;mGU+{Q$0RX=Ev996oNy|ITDs^Kr_WjOXq|mQ$shdPJpaZ5 zY!Y`04```TV<7er)IG)}DBMFl{INC?w(m|Hd=WF=sNQyct#7lK(0*4GjfwBq&6v9( zcY~GZ`=`o#F%wq{0zx9+i02>XNGU$IThB?w7DNvtCgo>mu1W{@02{*Tr=*KWiK3A5 zbqfSCY>frQp4Yb4pf-RL&aF+TO|Li-i}`_75Q+WJSEi@v>pRPw{-Ka?{T8_A) zIpKN0C=l$ld%A@a4r&@x!fpn(V@)!9P;vDXseex!`pKh&?1PyZy)@yMau$Fe;pu!L zi{LAQpJ9#@eIG5Dc@0l;?foT9S8O&$B7A>$r5ybZX3n2oj-s}@u{&5;6e`?wD>@H+eBl&j>?Yk~VOdP1$2RBEEgnwb_BAscK-kX(Deo_e$> zvyO#S`*cPXvm%P+MCP zzmH3bvQPh0?*w9ypZHQ$6z)CwIy{9k-~8+<{byr2PoRe5f|4e!T0-(%eyZM4ZtLi7 z$6hsJk?Gelzl%?x+HW|84xUDfZ#_?l9MwGnYev^-1--y<#giJo?~->p4el=O|FeSo z;r#eUzdmfAtE?&mCD&pp(MYR-wBl0?rT3sGZ1x$W+XpVhA+FCrWNpsduF>t8KA=lh zv>K8zxo*QlpwZ%7S4La&6@OK2YlXgEEe|VJP_ABZ5>i$(TASo_qD*3OI>b8@e>n3s z1n0%LkCm_!*5ac&4;fS7L0h>%HMu#U)E_^3?~*N|VG8?WoQD1Ns|R;1IVfEEPkHJL z=ze@Rw!?zL-We`c2nurR)fEZ_ z57!zi{~D~1L-V?dR{I=*F?Mzi&qnMKw;|1!y5I=(pSOG@y-K#$Pi<6y&BvC$(1x1p zf7=IJOD>U}ZF=uL@e?}Q^(Hoj!|T2N^^j)|V}A`fRS>mVg1(uS26W`5-;L4f2jhzb zK6~f&VN5XroknA`eE@;pMS@qvFSu=?aUG-$RvhB&0c7p^h0w#iQ$DM(=V>zgTmxn zsCQmDS7$8_bv!C$VN%_VAo`h>9S3w3*Ts35wdL8V-N zG`~Rc*S*m*A7QADbpFw8I_=|6)NTCd5T7(>1giIU07O*i{s$3~4e#!@_Sk7}TSfnU zS{y`rTPQz9ObpGXrOI1`o;?3dmP=WpZb!B&Ms!GX(p6o}%C>@8`%(pjnl}r?ktpd# zei5%tssL#@PS`;@3S2xei2R{yY22p2{O41OA|Z3E+DycYT{B}nF3Mgw!5DjCiQv{o zi8X|tP_U~Oe-CFoYG`>5wW6e=IVr`c=1jL9!$ullP2x+jl7L-FiWG%$;$12$p`?dJ zA(MX+1k&p=kRTX45o%bXLd)Cs41ANaCZGX2!R6#RZEMC!3_O1<*fj0HZVMmzw|fRlxWK26`7*^&)dv71=pvTTC<`+ z^rs|QR&Mi0J#;xy8mj9m}@&U+){-{Oujsb~JE1 zUMh6&B7XqDOTzc^yyuF(&|tcDm{CNHA!oWq=}r^uydRB2tiqoXXn_x=Uk_`#6qQM$ zG}HuPN;d6z(uI3!TBPssclGfnAW-iW8RIdL8xZ2sQ}HNsXsttCF&`ygsu)RI}ac+swPc3=;+=^!_4&mhJ2k`|Ie^ z)9Z4%rks=K%C2PAQ|L%w2FqBlV0owB_IJ3}jPjm?Naeod)Z)CKd!!~zO?^zRPU~Jp zlR)_3_ql0yr_u%0DtoM@CEqH1DHFdl@jVIOmCt}H%Q`nknbi~H7LtsPTCZiyawjm; zJ=R?L-AK_<|9;}zhxxb1(z5*t3WqFNYx-|jopp)++ARKjx+7X7vR_bd_KC7)gWJS( z7fuL`M2>9plM|AZ*JW%x`Di{>$7Fi*=~@UK z9VOogxO)Os{d%Ja7u+|UtDAA?BMJKBTM2FYO_prbsIx${%|!NAh{qRn^fBTzzhZ-_ z6GH+~su3tJZLE0<24YQ}jN3V<{k?>8DdNW@OP;^LVE@}ugxhcCx9h5x+$U-t#J@mh z=jVtD+!H#p56B~}c(%20=M!`0)=)ZYyoSK!ykZ4A;-Hu~Q(U_?!6rh9%960cI<5d} z1Y|ElBHc3-`%na!5l`1sFvz@5G3h3z@|%ppOEoDQ(sE7fVg%S{aR4HknrmP0w+~vC zeE)3St~fSuY!aek>ls>#VjI?*C(ykTa!$gy=5XTD#hlq7x(=X*o!5Mf2N5M8JwCIp z4~)mzH2>bQy5qHUaFnenM?M{Q_Z7{zF|^8|-@(%^Q&-9s5NIC!oj_LYw0y|`b{WSr zRew2)nGbdc9VTz#rQEIxeJBHR$9}TOB^azXA7d1jcXNsU|E~6I_J@9#Q}q8SJ)EdN zb$&W&;D`AH9M~;K4B7x?0V^V3%3K?l(w8Y}y^(wG_M3FECRt&vP(uXD*C)@&>ipCw z`snYlEo68RDY=By^7iibY9c3i9RB-qmrprAC(Utf4Cy^;Z8{Wp?$*G%?6l33t;P1X z``39c0lz2a?$#F-=?5E=dLvQql1-BS^0D5M$)d4>&7YxogRyyg-%_BZj21F+St4Hh zH~1&R=G~5-X>HEM&C=ohri<`u=SX0jWdA1cnQ-D|U!<2904ZTVjImyJ^G! zW2*5M@uH2YtIeinsQKMTr59~=GA5?aLQ2~r+S2dko&?*Lte3uwVo$I2@9j!IT%X8a zV$U<(OFz`!@8rzP2#LS|U8G$BjBASjyoBG3Ov_;9@3$tJK;pYiFqJcuA+=^Gt_T#% z?aL*TMoO&E=bBtR&P@SaZjESbSJ%5edr8tM9|p?08xSictMI14q?xECh2HDZODxLM znVnjxa4%v$&>iroX!)lQ=eSy)wiQJ-g7$?KlUUy6X7lq?l^A)h%yZD$+5a-Dxf(R* zH>Ghq?VBn11Au%{#la3UnB!a2aT{hizk^ehLT3JUP~Ob1rBxe0NBs7v-EtBBChodl ztI5IPj>f@WN-dahDhJT0Gra?d)Q_x_ za7s&G>IaszWJL;)rqC_ZhO*)(M3%UOC3PF1D5Qe^r2pbd%F)S1um|6kS@N)G!5S*b zaGsLj3ww|09eG2$W(asT6G*jq)_T{LP^wF{{!lCQn!xbIH&BgmtNCevH18fKxW!VP zfDj%66s*%5;3YO*KWu7_49&p4IYEIF{Ql3D*jm(n7s#$Ez#f)wV|j#(bSuRz8P7_e zp+@}$&&@YU<@v!$YVG5&Drp*%aZcMRR!@r$WLngPiAzh!&z+5s7HL)c6YwFt zGfym(S^xFHoqYOhl1rk~>raV40yGHR>YQTGV02(Io-R7y=VsOm!u^h13KdSuf;EOO z7Id}B^>Z&9TWKgz|19dmx+je7gC{O7;TBZ%XFN2ORPyZ!D}&$?^9|W{7dG~hUaxNG z(b`}2E>jU@7Ql{us}!S`hZVh6pA<;+y)_VrH|&@t&?sP8-GvrA>r070pVdteFqlJ) zq_HpGb?5+X4^SJ+OU|z`=h=>DKE-6Fo)~P*>E}i-CnP3O?!UK++u-_r_KEANfl|QI zJ9*{lO8f)Eb9@k@-+D{1mHnFjQ7+MsE^&;{u&@UuSWlsHYl{VHl>}(J&|ao2@P236 zS9fr}wmBn;QWLm_%zUG@>Un;AhUWNRkwSN1l8w1p99%k23Q$_;hC1}dHXrFwn!g_(ykSt})|rgef(zp(t+ zyI{aRsnj`KIuhXR*1I62?6Fya_|wMaguX4>wzs_alkWtoz}^_~Xk!i9U0%^+4e-*j z`8j#~%W#@MfcsPG?pAY(-s?-tQ&QT&5?-Jua~D*>mn&3-)+C{%g~D^X=$mH z)ZtB_-fpwZd<{-{Gn?8&3P3LWJ!by2cUrbVina8%%D3S=Hf=&6yDC?o|GU0y-`WMi z{>|5i3)$I^1gEBkI0xx?db_O?1~=T>mWajcrxcFm!0om|AwlIO= z6utBb16NNqF4g^lXL#$w1h2@v)2wi4dFmG*!3+o9L^gqP7fK6dfgX!dyUoVIWus>W z^%PyBK9V$$*6b=;WfA_WK#yO+Yp;i#SG{h`v#=VXZQal|Jz16_jW7Bvv3?OOXsUcV zPlxDjzL^DRE|{rYJeLI?FUUp+}p8|a)E z&4VR|0HkmG+k^-}@a2}@1AWxucpEU09T^RH=(;p8W5n3o z;AMzj5YW(5lneE?MCcOLwf3z_FY?x)w`4M&Szq7r;!kd!|`R@LmmO)-$9Aan` zv=t94B%Io);qJ=@SIi=swEIlneZx*s<4{_K2~jLO(mIJU?VL3u>$4|Q0N5X z@|2wheMca`PVz@9nVmnr&2pKag6SJVbmL_Wy$Nqbao_K8B%dY*Z4@guBV@8X%$ir{ z+bEzLvwqYjP_l}bMcdj$ehzO9{zqf5gI&X+ToSz`J+jVH^f3J{pXyK(f!zj6>fln1 zVHbeqK&)_fRYRjr1owDE2Gb~;OOhJ>IP4oIWl&F@`WO=}RItOTJt}Oq29I+G*C_79 z3{x`7MMMSe@lCQnVq}AzkW@VUp~0#g#a>f2zb@O@;${?o{H#ce5_lf`hJ1&=zRy zv0XEE2~F!J?n41J+W|CaBFz1nK)&1gacM#C|M&3O%irxJZ1i$jv71=r-Wx1S06+zRP_$u8`) zDKcic0r!&HzE32Z=B$lVod2qtG!Cugh-Q;(>~y8<1$T%EPen&4Uihoa6q37-s1m!O8?Ic_GmP4gx?p_#!Ay8$qAv8F&+ck(-kT3 zuw^@(jG!t5bpGll5lyqU6;R9D={-~@HU$g^HMaw4&Ku`bN->#qkYRbL4qPR0?nmJN zoG(RRmqV5ASSoNzcl#6*B=((vTp$Z5HZJt(zFtcxxN%|c{50X<7xsahia>(z zzip@f-sQG&&u%i3=uD`Mp&Z#{_s)*?EylC<$S5CuQ$Sd%o{TD^;d5lZa+MlTsy_h! z{d6yf^Qv_4`cPnu7TNE{m<;BjY3`Pb8p#hPDEC4sDPo1Gom|Nz9AMDm%?9 zLd5e?ZFy_!aGE&)X(l3dnRwQY?~YX!^+oKH6Y9$WwFd&wKAy4S*l5rCr)kUj=smTv z0FuF;g6Yuc&JukX!xccw_}p|(6jE>f6i@~)Vw{{=KikPw7)uSsy^L=%B)pi+h1YEO zIE*~3*}aPJ4vFZjjT4|o*{0mXo!*b=CMaZ=(q_)6@_s+x9@6$m5JK_uZy(`25-Z1l zKF~AR$Nz2Vjkj}Z)Gyt&P&IBdkd{=1CqAQ4OTNHU(ScxnWb31PaR)J_v?q<9p>35C zp@A^(@pp=WFxc#M9L#JS7O7~4y?)oPu86Svs=Sxtaq1x*3n#b{KIW*_-yO)pUun7j z^V1c%^H@U1>^~wB+OR30K(Wwc8TZhks&Zs8_mZzpn~dElLf~TE{DOX|83iO?++rR6 zJjiuRN_dc9?eaAWBR$H`0ojhLx;UmO8w}B7@r_T8lI5?_l)B&5XY35UR z6k_@5|&m9NYA+K0X!$HrIfq#GB$4z)-KRB*>^9q9Yc$Ov|kBUFc4bNwkGCS?2 z1yssi{y~M!3<%lM0m7lk0Ns=&tvOy%%HK*qD|-B{X%r8$1={G zEW&rtWs1#da-S?rL4In>8&+UqRybA53>b0dWO3)4U%EF?5^!T9LrbB=eSWT=Jl!f< zFbHbdyw>g3aCQBOrLgnJ!mg9RS$DfM1M-AN*}9REN?=*8n&Ejk^xR>%J_dSRU_%Zl zW1UEgcUU{waJn}8$>Vx5`g(3)@#{vz>c&g~Fnv!GS+mdykM#<|^(NiT{kg4{@GM|} zw8$;Pp<1I@DUW<{O!jTkT$QGFTkLQL&7D(*%5+?dqU_!@Gv?ebLudDEKdgE{Z%rP z;?^Z_SUx*3*U*2n-3JV-zW6^IH{A;ZY%yxKccVtv;w<*@wS-L0y?#CJ_E1qq975?@ zvDGnYlEkKF3oKmEkJrXCbsI*ugJ+)?_#QUBAd(k%!WbHp*wJAo4iJQ5R|UE3uYJ4i zBWUd!|FP0E&q?FtHbaeJ!V+22J+X4=zJ!j(ccpKi?awAgks_4?uQY1Wm2`B^luEZ)i# zUj864ulghg9ztu>mbo-_8k%}{yu5e2%mHhO_|w_LfM1j;nw!YGxDyZp9y?QjnwxK% zo1#$N4%FC0c|K%~Pg-C<7I%R z&6nUPk{E}a@n^!>D^|VyFo@)cS@#cnd0X}Ml^Fs#;6mbVvVoF<)gymdH()WG`#mdy zLc}{>T{`~BPYxKrc13)N8Fv$cyc^V`MTAVZ6z8)=0*=~NNdZ~X$GAtpXvhcL_b4~u z)jxS-J`JZ*-S^#PU-3B#bRTGCNh$EY1qilck;nK?!sAbUx(s8llirT5C&muEe}5 zKiPNi_B>CFS*=Fxjq?IP7SzM~@cSgKkha4933Otd1>pqF!tu~Koj-xc4l zZGDs31-xwtig+5IXmTw@AlQo_KQ#NxF{bkJ_wVn}aJP%&yA!3>)0gxeG+}~br&TNZ zAHdcWTB;1VRCh3VLD0O5w10>Uy*0r6aJFuevZ2vcMe_oKYPse)@el+JyJZ{-xbFqI_l(KA8wmUwIk?pG%dA_d{WE|#em>|?T^|B^l6uFF zM?AfX!%jyF9f6}bCZMNr=>nK^rfIp4=QZ99JU&;|4E4{U*?U> zoEQw)w(sXlD4~MsO2aGne`Y}t*9BKB#TUb3HvQO%H=5ak!dE#Ha;RQVs2O$zmRy8L zMmpKH62a#HqvL8vz1jx-XHk#lge!*69N;3F^mJGX*7uJ<^SDPkp|RuY_50cEG0&-> z2YW9F$A2-HaHD4bhyEcA`|yb>e!r9(JYIa1138p}66#J1d|qU8@1llH6!TMy7{~THFk4-IJ!jYu>-C7wJ0UG^371$pTPK| zqegw%XroSa#s0VLxs%mq$yN!!E;3@9q#4(WIW(TidkM0Dt0B9dCUFII@}c)U?}7r8 zY@&E9w`Lorrt%VVULAH&pDg%7m>s1U7obm8BV#T>`|)41-P~23Xxjs+Ki-#HgwtS7 zgvu9!gu%N7$mJ(S0%{g;NACoQEWFF26chvCeG5>$aRJs_6!FohHF}v1f%eJN82j&c z&+R~32l}i47*tV2=bh?Cl2H2G*Ubw+gTNxPZcF0Kq+r)@i{ZDS&*FeuNo;*FX71d( zsn=&t&UQMMQ4Cl6-x|$Fsz(h56pGZ9Z{Pcoq#y`T+>R}b8WO{4pLFqCksZii(T(qg zc;bv{Ua&AiJ?&m`bkN2_-xdTFG{qQJ4ug79z`H!~(y4kC@&w6&n^81%^n!*3v*1*q z2W|6KpKsg84jk|_XMr7#HlKk55P;NNJX>BLTyRf44LVDm{45~U04<}yuRbJz>l3m~ zivI*+A5hbj2nxD_pNaHh0d0O#M3GZw2N7J*4PY_;_wT=EpN@RQwZIZ}2>P>YPw?B__e8=o5As5k9v$1aEm3QviG54YUHxz0QE)kPt%8% zo8cUXJ3+|SXd4>KVgJ_v>%m4Ce#|Mk_*vDjVQ9lo89aA~24hEUV4pvG#`&D4%Gu8w zJt%xKePkzDpLjAMp?h-e%8=qC|AqT}!^a~8z~T)wb7!PFxPhzFtINr|iN^y6yJSfE z?Qx3v%|kjWPGB19YMx^QOoCTA^_0ZU^#t z++MfDzUYG8bP-o#!L>e>)e{V$Rnz*oSbHd0yiPCBlaF^YB_7rr4SXsWg+V5E>BY~= z&poHEq3sC{;o-F4xYqAdv!7dz0vplUPI_IQa>~qDMbTqoAqa>Zs=l_X6;ma3rt6*P zVeFPP+{r6I=&YOZ{~?0r$Vx<$I^T>$`Hl(p&K}U6+y% zxSU@Ww-UDv!ONIm|3l3Opb18)T%i2SQt*19NgVv&Zp18TM>bO)MxT=xTp2SUf<51u zHz-lb)Q2#Px!-{3``_Oge!K`aUi3Qts*(+hANo*kc=Q|-G&M*Jlh#V$2x^M7#CTaz zH*(b8&Hlw|^|B!EJ|4t}{-+@Qk8tPrOHZebyrFm?IwVYRE-DSW1*w^TEPOgv*rabo z#duF*vDvOrjlG`v>)gc)k3X^(1SAN&Zw8n59O@f24#p{+HMhKCU3GIj+>_1dB`NC8 za(~pyiETK__|V_{tb|u1VDUNLP8{y&(Ja=cntXa6epUQvli2u<|94e24T$ai_IWtr z!@O;urstvxLjPJZu9z2Tn{z z3N_D_-5d%fL4pD&N!J`&YO&L20hJ_qcbBfp9sw zw9#QB5!f|=;-5;CVJ8V1DA*Kc$`9_l6+EfZ>LM9)h@Xn3k))x4KKF6i?8d;f3F~_y zL&Z~jqrKy+!Or;xdE!Zel`m=ZYhz#|eK6JxHKfz;wjV%)^^?YEw{~sQ!t2DCc2aBpj15f&3-(H=@TcrI*Vx^3ebOABDXs~^ zI?vh1&9?UEnb*_q9@h2Y-j;4E8tgO#dQzWUFt(1-wXgq7%+_84gEaghtu@dN^vvP! zy)`HhJ5y;dhSewX2?oxVz>QvD2g!{oA~J(hJaBfO%_-t_^BGjA824Fj_R0 zwFvWGA(YuAFj9qgM%oV@KOJUHf?h1CXkWgRS+!Ywz!Pk z%~xU4zXoSAXM<1$(&rbid6@e68?6abJKyonOdCFs4S$xaD*~La6=2%mGim94+Lt=1 z@p-+sBKfjnp=#&f!=^j5YnG3Ng&?&hmE#WolEjbrEw{s~>5Zo_##y+r660Byp43RM zqO&es-bi`huvU{B|_3+yl|1H4r;`jukTGzeui)|CsVUZRYUh z-KgZ;k7~aeDUIH>f5~ezVw{5~mNqy4LWjqEx&s5|9*4$g?@_RLd!r4nvf{0<(u|+u z;{7a&BkR{$s6l(pwy#h3Na`03sh`P4Q&69&_?ai<7d2k-4Gn*=o;6IVcnHgm6;J1sqb#ou&PCvHNTon!<-TFaM19r~HRRR-@QAPyz zW?&;bdY5|(yhA0D3;k0_u)jzy0?@B0#EK*9O5ej>ua|*e8$8LCNlam#PjCMUr%;RgXodb{sTpsR z%-h&Q5h&fm7TO+Io~b;&KF3oHYW5TV<@+3iw^C+zZrX0v&Yz)XkaDqFjDY#K!jLi2 z4=E+BJcpLo>p_?l*nj;Igji0EL(9m1D{kHrH!z(3$!df65XrrNt%)nO2DqcQZql%3 z4};ac7u|Ek{x_T5?+M~=Jv&1^c>aul-SSU8FSV_C?%+jI?r&FquU&`Sgcb(oC*ho{ zeoDw#UIkgI-*U{&^`G)25ouxDtBp`pCLmX@SsHf{IX0dv_E!2`>44@i7Z zrFq8gX+QW9L!nk%jR`hK6sxUK5kU`-9j7`=4^t6R#KdT<^W-Pp=sT3q7yQ-IkOgWq zKMsFQ!~gR987fRUBLxSw;|mM!I7=>COvGgWUfMvX>q^h_3*g6TlWd)0p+ky|rcy)nos@LRy+5m|g=m ziC$y1Tgja(d4{aM%2aTMhkXFYy?u@}eO{ZZj`<>14NY|aAhI`J8;Pz)g|9)Bz5juz+C;`s z<~*o-d$$qn{~j5mA!9AJWd5Fp7MdeSbh{-iY-V%Y77E%LFWj!Emx7sTz&h1UTL>-9 zAi=E&+$a)|6bTpduNFZt#YEi66zkVc>uS+sO*96ueVr0|RM0QUAZIK&s?bi2$38J0 zx^K?9sATgEcGiR=jwH^+^oA+4^IPQ?5HjfdD4=x@y;TK<;%*PSqiiSs)WGOwi;dNQ zsy`nYvo{gilp6(uctW>^{nMQ=3ljPk4Hfs8Hu4p-VyI!!6bB|2+^;U2VqyucE1JHi z0`fx*8_VpV_xu9?;`_M@NrU;uYpY%MX1{;f(^+WS8ar*&P+!qX&1rrq%*S#$) z`7TJfXnbChMj}I6;9-L;f%=)_8R}F^Zf>}TP}4t+*uTbd*TL%+!GQkpBcTsx0x}nS zwkU(J&Y6DBh@4%h+G4Y#oR-{IL@lr5L(v`o*jn+MvwzdCLBn!>28d-$cjN!qJkYoDvf)!ccK)>Zp>tSlp|k>K`)T>ug+#$tD^%+4;+ zldZYzWSaloU~DV+DA-r0n^h2K#ca~y`A*lEo7+OAyl}bJ7G#F|H2PVrBKyo(B}o+_ zdV9jEY)6JYTe^M;M|HE^!BeIR;gsNbFKORhs`0%n%=uzo zZXRM0p4*TKEEQZGUgGtog9^`GrZeY#%B6ST6r&}P)cD-Nb)BCW?0QgFor>enu&31# z5ERI>RCT~kk|@=yG5BK6lqF~w3V@5mL0!)aM+!BqeQJB^!%YEn*O0MadH5xRRDTjk zUI}ACKKH2A-to&5(xUm_ii0h;a0n_V{wM}L5eF(9j}<%JulBk+S!ae#npbig+LjHp zS=_LGNByidQ+-zhRv1og$-!N>|MeoLUIZH`d=3A+JDHM1zg2W3F_{pWA5V|;)JDDx zP>ezPy{X1z>Zx)=f_a$t~rbIc!z-sw%xIliG%dwa7)*Rg6h@Pj@ zO@Yc*c6 z`$TwF^4xEYo6V+4YIzTeSRUNFm!&M1l@QE~Z0&Iaon_UOxdG>7N%*4VT*YAt+fhVW zViCF|o@qU=1EV?$2Il{GcwJSd_c?@GJK7ueSH3r(UaxH9X9i02HyFV_`r5FH<%-$1 zkDZT{R#^XW5s8oZy>}<_q=xWb4iZg58>EHQK*HI zlG2>jb@znXj^cn0+B*$yyCM5Gdtx@vjn~ZoT?vOl@PkpaulOT$hI~WgHIdNs&57g?Z*Qed z6E}2+gvi$EtLt+5x&yo?`Rc`~w-y0kQ_ERB|K;ZTQ_tCm95!{|k+JnU=a(2LW{Qxp zo&K=Bu$v=jh`49_0SE&MpoLS6i=;GeDcbP0JPvJV$M z#nP0+WR?ijr!$ltcmF=!E)^6!Fk$^wq5o3aqN&@(&@-AsE&cW?a((M|B=T1L1wYY; zL7Mn-kWht@NuHQ;q59sxD`3d+$onBr5NLx;`0d)r#KaO- zzlAb93wFVK`lX^UpAX-i>pZ<{IOXZ2OZxk{W7^1)AF6q>J$t>pxH}=Qe?AcD2TqT| z*PB;I4YhszVXX|XOZlvE3%fo^`6o{W*H95YCdG%3N)FkBDmE+MGo|Klw)dLyL!ibf z%l+dp0o*%jv8$wtbN8)X(|3Y{sp%Bu)rTG6yx(-LE|Nno7NK{5fA(GKBvbR$a7a~;l zk(G=~XLC;57Ru&SB804yc^dXO`*6<5I(wb%#_#?4{{DjZ>-~B?pO5Ewy`GPUv5+wE zlI&Z~;z|NpfE^|9QJQM;3>app0;~kX@3Ei|@vx!Rw*zt&r2NMawzYmbIU;Zmd%TwL z{Tx$Y;}sl|sd)L+m1g^98qBCQ@>&~A{T<^3SgSqDxKH$u?K<->Kv-&7Du!-qVe#*^ z_`i)$7$CfdJYUu-m)J@<7>YiGVa&y`WIUgL=pm#uRee;3ns606_#^Qiu_GTZuuct*+U+3d%E{!v%vt_+|b zcz%XFY70T2?(t8-+UsOXYYjwLRNJmw&!tDV8imGDWH*Y4pgzEEi>*w|FV>ZueYNhlL!V45(?)GePaSnh zVrF010gv_X4VF90@v#CX)b^q zS(~Bb*1FLkdZ~xCisW0ood8N{x}4Wl7O5G)YAq}^a^NOfuL&_(7c$(KT}>5GkaUw#XVSKlw z&eL^f&p?Nde85TF=teRr#y3sxK5!K84;f!L$6TEGr`6tbcJTq1^>g|l{J}-xyN2Mr zT)G0W`Bh!xViX=kPW^=Y1YWlgUxOd z@=d;4AF)qBmc?~NaIs1BN(mP*uOiod4!TIWQYzSwd}gdL@o4^1)ynN1w-Wi)XNueb zdf>dWdLmoP?&zG%Szh{tG_dIF-&U(=l!YG--+yErcnEvAk2^!*oj|!d{3>Id{|pY< z0xY>@9$W=XY}Yecw7dE>Pj!39KJM=((O97J>p$&m0H#7oWHNeB z#dn?ey(jfd_rZP64wSa}Lxq-YbH|<`&t}C1VSCKn7fDWzv-)l7y{GOMFb9cz7-;pC z3d)|7pOYC!e{`YWLS^!k;CS_}%s-FWUc_(3#0^zgKOc2SzWCV~Z#EZo3iNXKQyMnR zdT?Koi28?!#Z=!!-KtEO%^YE~%cw%$&>mdIJ6drDT5 z)Y9=jLsv&*Gy5#v;<2Py@S8J{nz0iM$F0|0c84{6Azs)IVaRjW=2QKonuiWB1S&bf z$IIlM2h}4DQZg%uhlaZ3_JhP+?;Pm>ELAvdH58>TPbd$+u5dg~S1$J>ahtn6YMGpm zmC-^Sx(BgZ>EM4KZuiuM_r5tcqOSnG&K!dQ>__bvjiyIASJQVIytmLohIkE`#jyog z)n5qm{%lYUVs&{n1*DfwUzp#B$jc`grS!;$=E=Q@jFCHgrE+r8E$boYw`~hBjDzWN zTK4|h^UE)dff1V0-Lrx16q$c%Mn_o@7}V5HT}gV??2d}e7eb9oPYUD;=n9V1NG19J zlzhtS$JPt_Q#&Eer0qAbAuN}=dPY3^?os44P;>BWoNT~r zD{~J4_(9p{MLjxL+w1^(6k9ao&G;OmZ9?^EA6&IINCiA*UR|l1_BtPpQ&RxF{$qrF zoG-ev8H~}7_{F@JLRBtbYAP)+<}wd>6xlm}m31e#`@u~or=?_9peuxe{oDEPuA)A6 z;=DZbCh!~D&;v=e|4>=>+cFSu>lWhS2z%pbY)uvYJTK!A{mZV}Wp#TM4AK*%AI)zx z1F<)`e&fv0Ii`A9^LxqY1r=WoaK^%7Wp+tf zaxu*lZyk^ivMC_}oZpdvd49#RO57Yt|4L@u^wHcYM?ARyyMkc(86z?X7J6wGe zsUd%+=z3nqWK;W2Zj3(A3qCs&tfr|QWpABhJ3RG;Y8 zA`kMBO||EJ%7rl(I2&)X>GA5zqHIGNHM-^bilqePY9A73V7H!60aO^2wsbehAzG<5 zMDZwZyty&gF-_<*MqL8M5t_+jgad4xN3PaoiWq+PSW6vo3})TYWtNM0B}Fw zDwbn)%|Og0&!daPgw+AzV|J762hfy}Ub5wH`H^c&X-9u8N5<*qJSd^GKv&^HvWF7G zE%wZfzC-3JB;hlnGHO-dG!V)xxh1z@% z6ENlwCqxI!=mau3R*&P`#?;sZyuz0J#5zRlURv57quJ;EXTs14Fo=F*(C5y?jr|wn47=>~ zUMdRfs*6M9kh2+1nGUFlKd<@$7bGuN0!nzz-}+`>KjQpWEcU~H{shBj!0H+BcED1< z)Qs=qpN7}4;()=8Rlv_fym8J75%_4v>bA(d<_gJ~ljx0sGnRJ1;7B{spYxbU#`Olv zKZsc={y`QG)%5ThLRKd`Lcdw=a1}LH9jdmoe-SjF`9a}?RjicL?u90E413l zz~&_SJq}?$0N|@t) zY7alQk?~xoEgjo4l04;s@!4NXJO|pL+xf;yG?@*m(2|eto%Q$a%>~RoI%10H79QUd z(jWK|RtuzHf3Dj>OM0{GeOn{H-Fn5KJ!v1Hx%nhG14-Z*)to$D++p>n2| z^6;-B_?SW+)bD@iGS3%$|EP|=vA5#)HCEU2p-#c(-FU~H!oACp>gW9)2{XksZ$i#YILr5{+9F2gSA-L*SugtS)n0OQ|)ve+9>=d>3;QkZTG z5ZEAY?y!kgK(2=yfb%>*kCN@*-S|_RkCg(VL7xu1ta9PXzuc3RH+3>pyF1Nxz76R7#Ha3rVLzo&uaq%`f9pR@YKS1uQ()Sh*?LtY zCL)ckN94;l#h6n8*I5Oj-47i$9~@V;cmNC<1tat@gS(R^j+A`Z-6ZwY?45Vn2L!>| zCo>SOJBF&bqr#_$8w=u4w4#faTu1dekoC@#ov)VJptPie_WsszCq27ez{ik$j!E-6 zAaJna#sBvX0AXBp4^mnP!q*!g>kY>!SI$r&l@P^n05d)1Y_WDvX?gYRNazu{?Xe9` zutXa$?&ivcEoA_my>f-4QMfs5d$%RZ5RtPB`(YxHv3LiHa%l^!M#KTn9~<{m2@}b> zuK8^Kp}Jn&d9w(ISWrR(n4fd9`j%c9@!<1SjT7(+y(9&O_P_JW4Do0OfCr@MXWDiy*ni2ZM;O zoF03}+Eaettvm>^LCka4SY(2K0O8lZn?Iwrdt3Dkw-4I7yiu?}Y|tvTylyk=&C6Tw z0doRMENk{x#hY!i`T1CvY`&Z|*oT8O^+%one2rn+GDUFsD*78+I!;CnlB;x^dRGxM zTcdG@IntiK?N;0LaIm}=DPw7Yp4m!Zzt`@z>d%}X(!Ao8X?yYpki1~ptkoX|v_|r@ z;kKmS$~)5A-@Ll{Ox(pAIl}#cwof&es;d|inNZ$)+DQ^h(?UFcxWX*quh)v+uRvCneN-2R8V`SLse| z)qQJ6D0*B}LGGV4KyMso<|-_pU7IYMns9nv2njz-!%f&IJdk~33x@ayU{gj!#LwI zud_nZ0tic~ih977Bx$&VBCY=05*-V~#sS=&ZqxBlTCbff6UclH5LMK;(@6x`z+j<< zE!l5kE=~>bnfrLOgnSX88UADE1{l&z`D%2N|Fv!_EtS`|V(01v+RR(SO^vBa{D^Jz zu6*GBqXfV<3SRx1-VP?X}Qp%d)s*U%qD7PBuv-_bnsgks5#U z(Q0dg9Q<-sT<_;=LQa7*0%07dly%QBU19Z?XN|LOq?W#szWM$qOJ3(5sR}ApS3pV8 zt=TvBwWB)pz(&F)`R;qi6SokZ3cffT{^1PC`TL|H#3oA>*Ziz1zrDJw(Hqs50d~s8 z29Nt(mjqaAX!#dQsZ$O-H@bI3@NEcMGu)vNnS+By_)y2#M_V^G+N=nS`;8 zB;|j-jzb4e5PU^2s#jj#0(gF8>p5F$m1xPLvUC+s3R(@uP8qw{;BsH$eHA?;)j?2i zeGZnXp~rYPHzgu4mn{P73&nN&0^CcF0;CSpLbF>pDl3))+#%hwB4o#BZFLQg0dUEM zaoxj75BlP(gzwESUF;a-e(#Y`$HAwgTpjRa3Gqm8Lt!nDHCruoD~RLlYbSscsPfzH zeQXN7k}!4L3lryIoSW_K((p~Fq93L(9GTtBWe(B1Vo;dTIO(SBg2FYm%9P)JYERuQ9v{{-)81+P zD3`G}$#FT@o~hsec>R1z4_`)F6}_e?B$n~rAll~v<>UA=+>@GszJD0a_-vqvtnJoV zL3@5%Us*Fw&L!1v4|ZnX2S53?-?)mo)H}Jx7_Uln^Bl*8YUqt_h3Tdh&o>^(pEws` z+Skq075=}2;N`1R7Te!8Aj|t@SGKJ{-0N{(b2IanxZvZGx88qW-2j+>{7Xlrm6~+( zfzyBiATK%lAVBa#NE>P9AXfJ>VU1qpvS%YPWW&&ywb5QdUyYkGNb$IPWc_@j@0YeS z_(=f)7D&j;s3S0{$huQ2GW5^wCS>186OUa>xs*~Nr@f3BB8c{QMXT?nbY6psBy_^hMMq+$b#4j(Z%BnD|SC(lIdkz56y$qh1x%dl%y-= z{Ux<&cHN(|`EcNImp;@-G{k7p_A_c{kHcT&pKae?_x3n@MsH{mI7$GB0lH=p-ebA$ z0A!;vw-`lTCwJxNWcCToS~DCSn-j*IFUyi2B5ur`#}Cvj91}oZE5kZw;iHhZ@3#(A z2{h4IXE8lM3dobB14-^VO}Pjh)3-_@(V5dC?eF(u4dy4iFlF}_6^QT!VjurkOW$p@ zZ{5AKfv_MCNBVte`4d=(XLjHPQ15d>x38DsAe$snaevDMP(5*6S(60cA+K}yqvTy@ zD_`W6mn>FB&Xk*BDJ9+WU`+cpmqz;R1z9`fuY;kf?U_RsKBMrl3|Zbxkz zNII>Hvuk^lfO5He=0F5eV%~RT=M6BiAExDJNzznuKp|;J?=r47M`!MDaQaUfLS1`{n@qxIDRnucA02JZr9{+A(PJvaE z*A#j7uf>4xpYt5=;)oz^pF0WYW*en_CrKHcfS(+k13IbXGN(R(gJN96JJH5zHQNAf z5RF=H@_M)R+m!AhO1%n23Bie-L=GVEs&`6g zTdN!ohznEl38#LVP`k6s<234}=p*(k*e4YxVMAx4v8{8Ep=WylLo2|2TNJ#~_to<@ z$Q-iKe7N^D^RNh;Aq24Us#XE|KMBs70!*Pk0>?Ud<96}LrR_=We?iPW&APEOZ(i|m zfD!!Fer=O&f^KmSM$^gV4F}z+Z*NUs0Zqq^!i+PQ8TBzK^fEggHjiT{wJKiAEMtwH zTT3N3O<`AJIV2fXxsprQw?=aW+}YXmbQ)I{2=ecD+^%XKTcRHDgY)|gA|1;&)C?Eq z7tVqCAsZN>mcUD5W<2NbUdrniRGqmJ^8Jm=f=I1O|KNXqP}cgM>juE+S@D<_Q8NKs zp))-y-A$NT6pW2ccn9J|*}X|_4y*g%L9^VD)d7;SqsP|)3uuQPr3J5)jhz3?#Pu_X z7=HW|%6OdLj?;eb+raajTdWrmo2w?msCo6Y0UVlOa4B!)Wivlh7mxt^{hGhNM>-fZ zgkywHF&ThCWc|`anP9z-QjJs6^ap)Hp+E}QTw1}OU8CP{Hvcm4<4+qX4 zSB>MyrA><)GG>X9_W{mU=G&sFpTE#^*5H76{mgNx_Le-L8ME&vAW1h!VTk{R(mh~- zHTiH8IC0m-GnI*}AZRN5_)q+fDHPv>oZJ`JE3eqr#;YU@dnBy^2@=v2m(H(!UmIGB zH5s_2m-ILiC@$k}>3wXC`~|!)^&UCIx`f5&uq@C^E#05S zoSbfz1S3v?V+}lVi<*V<$l(d6z&0>+As5iLUQIcAc=C!%qwlO^@O*JRzG<4<&^Z0n zi_f6Q!_SNI-xD*gE(HPCwC>T2#yM=9A4dW#Pq6yR7A~7AU=!hd!)`WeHdXcw#d zx$n6;$F=^kaq((&`!8*2BRDE}d#Vq!h=8nthbjTeY<}_qdh2W*5&II* zLuBpwRJ}sW0eEzGRx+1Z)#ZuZ;Db34HBv-wKA?gE*Vwf=&h=R32xM|y=jj+=f3Nno ztb0!fA>4b&*dc;c9hLTLJlQ%YPMZ@FfS^RsJYM&D)NEH6|n+ugWP_OS_BqjtPfA4LOfqbh! z*1~VxA${0MK>%qm%VPgo^SqP&D|Olik=m4C!2V0^lk=1l+0fBU7$v9aqRU$+Ce~SS`bDA`q%IgLtNW_b)O^x>_jG5~D zhW@G8oC15Yed6jzIuqVRD#n1DvTOH#pS8{AQBefAOAoFceK@!Fv8Tt3)y+ut+Q-Wo z*W};o!PoJA;T)7X6RMV+t@2@QB^%sz8?w^V`}ebXp!)L^ol6J?MWc0iuT^ z6jHO;nW3#b@~25uE9gr@RieDL*jhR*ccm_FDIC$_*gY5jg-k(QTx|?j-eAO=keZfO zCrl~z%3%w+vjM@1Yd?$HYJc|3%zr+SxCfKNWg`S~8;<2ecRmJ*>;cq>?L}8X46&%B;VuKwvRN_$4dEa!*1_S4r)pwOr($)avtq{dGSZ23ox ze@Nns7#>E52y4KTeKWsORB?r7yn}z-8DVM<4BvX!gnpb5vOWzcRgp3$E00GW7J}Y) z5&*Lr0d%vJP$?c?Wtm)|&9|>H&6(~DNx0B3-8pIUHjqAu_J zml(?P9N7RW9Ca=PQ~Gi9f@E^U4dA?Z5hfgBUmy)jd(whSY?&!k<0V|ZK!`Ve_D~D_ zJZEcTFF5hd^PFDX5AQAC$Q^=XR{6^D#2GVpV!3kJ!e%Nt`Vm~QK!w0jS%?Kyn2R61Ql2=$dD8VGMVq^Ir+AP3bJq#$S@HRRw z=xs`mPQ+68gE8(OP9OmX@E-xWoaSYynoJY@M4}TcuI#_{T$f86d5ZdxTvrcVW8OGK zKME}EJdcv@1a2_sr_Jb;A0MdQJ-{0gvikq)2yH9}a^+(kk{{MRR9k+@ejD8^B(}Cvxy}>TjQK-8?{279PjmhEC)x^) z{Nx-~e^5NaxVxPQ%x#OkStKS)84ERg&A>iY^7;u-0!*nKnB&5`bW52`FP!y^4WlK6 zq0Q#1({6&M;&yL9NjYPc$7IE~%z3XM$fY%i^p}nEOYQu+X{yfhB`2RHFbpDn_%EUQ@Vb2D{U3%!_=EIcGumu(f^Kt>U&&Cg7zf58;QNN zB>z_J`_~E1oh?k-)J5o#1`zrEBc}Y^EunUaU&Gew=5|+SIrzI213$T${Fj@}d+U_n zE6=EMA}f3jVZbeblAte*5`ch_c566TyEOx+++t+#A>&VeDb4pbJ&XM95+Jxo?S9nQ z`uo`v5TF4yHB}naC4rx}#l$F)Jl`MK391o=9nrgKs}hV8qfND)SSY2wdacp}{|9Sy z^yc4buZ<-onSN_{*wPws7vL~x)}xDgVr+3sKrdBcC>|)yaQJ*%fq#L_bLSx&iUz4G zjov>+!2ji>fF~cg8FQR@^)`+OyCjQz%vhdKrPX^XDJ!@oxT}OWb%~td@Td z6cD!Flad4UWcyn9kr8_;BKZC66StRG7mtq4m;v1roygBF4#BN4W^<>Rd;ge%k{nBD z;H#R0`vG?VN7n+JyVc@8=Yt-bQO$LA-=h$I+1#g%=Vr+l3YpLP?g@l$qa$(+RvwQT zp~RNh3Tr3#U%wmz)ohNYP0?qQBl0rP2SQi3_wkc-j>n2>Bl_%A17+daI) zhpoDcX8f|j1;Dj$Aa-Ane3!)&k|N$pS2cTym_fB8yr`es8$`W zUbk6k98qI*@(I5jSWor1ZK}+*o^q$)d(}XQmERt*HTy)LCRs?0rXBmXqsFsn?>nmO zABO~^mFdd$Lx>Uvsuoz!yxF`mVRV$9uNLQR-JsQ4tykJO|FyRK;||8C9?C&?vZ$H0 zgA*VW>oo8-Zp697d}bbmL{qksBTty+uU+!`?FN?n?-(&UtYw$mr7 zF1onbDl?w|xmKYF^D%|0#uv1Y1)~{E)yE!qH!4pG!~Ql~I&~k`=eU9@XVOb^GZS1w z86Q=Bwdapy4emB+V3b2cQ}XBE@a%CKM4GTSj)?1}HAm{jf(#bcj_a-1N#1ID8U~Ty z%h!%Wjo*M8I>VFPXxCY)Sqb$FB~j{oAsF@B1|j`SZ;K?T!+oBQz*hso*BM^Tq?om4 z*B+&*mlpyJpW8bTV)1ewG$@@MzoB_(1~DtxZL%K}h1Smwrye_+-(YF+LTwKcU{3j3 z60{2U=HpRS1cI;bTpoVb#*yF?#&t9g@?7ZEX?w|E)Hkb-phLQp(QDmo7ER6FZs3rG zANVPl>v(t?>sYh4Q(0`eZBzW5sEr@5o~uC3)U{UmY)WK<^@X4|(qOnF;QWg3;Ia%I zfoocaxZUj!-EPM8*lK#AASEJMH{@wIl3_L|l;&#<@NhAMFCM3)P13obsA40t)g9`p z2C*mcd_dzRCpAybtaW&w{{~BXd^J9FO(igs+|ca)Yp$tX1AqFx zd-It;0uc^?dUEj1QH^am%f8BimmXa?sDB`YhYo7zHwmXDkqL-#zsF6LGCuv){yk2W z1Cq{#UG=RE_1C3U^t$$C<$Dgv45|mC-%^xgdmrP#W4?2kTW%ZxZLu#n z$mVw>?C+)m3LTZ%G`FgauRg*zb5TpJ?YUd;)L>4|SClzLKpkWTX)5Pkr{BkSbW}-6 zn0x-f6Xi_gNb`B2@=7khe%K+-St z#^hdW%eYHNnu1QcxJSE58O+6;qjS#Z{ zuIAfw{fv$9DRDMBWkEq3c0Q11aFWiu2h~h{L1fg`vWY)`6J@^*Fy&Emq9%vyo-X>9 z{(8aLG+&wZ&TTo4fiTFIy@&p(^;6To&D&a}-!*OWiKO1Ed#cyK63cY{5m0I1(dBku zKh&J|>A>)+Z>&%1oAX_Sidl_@aN#7*YfSq2K_k<>SL?t0{RYyrcrl4+m)GySCSCPW zaZ^pXP_2P(x= z1U9NslPe@TN+vr5);}#OR}6Z*pO}di`v{UfF8Ib`q!rYyT2Tykf4ihn#QJ0~GA43V z^SI%R45>ci7q6UdO_|R5yNN8IWI`3CRWW3d_>io=z2`5ugUiHkPiC;u2M{)=sh06- zLBawJbn#|3M(J?|2hf=+-`|pUeC*`-b2BQc(M*4;{>eyxF26Bzb_m5y?QB#>iNV~P z!MQHFA9J7(G_pDxOq{#bNC0|^wnVft`}@Et^?gGO$Kz`5q>K@eCStkTbep~PfwAo|Ur=ikuH&HFVddy-jCbvc8K57)K@kO%4$vXTVD7^(_PJ7r>+d4?6(pU8 zv*a2=a-yh7QTCGJKGDp3Qc#f415m}WVU5qAy2InVbZDfyPmIOsJc8=OFdlFcB{8>g z8(~M^e96Hp!_LJG$W(aY%6v1le_HC-TgKm>hWk+u5c36du-DTtuWLaKjD(krjNTRT zZF%wSy|RzDVX^5KjppOih>a>-A#b9zZ|h$hs+B(TQ>6s-xK@&#>zJO3ynMkmmn9ux zI4KdC6k>^qC%)5fY4m%_F)8-+E@EicN17ZgM=!CkzoNkdx-mPY1-Y`@>2;aFb&!>%cD8|D z)aIqk{|h_iANmWG9SG$GZSgV}1u}$ca?T~;VpukKlW;-h!gDLh{lhSaP=tYg-^Zeo zLx_$3@9KsX&tj0jua|0BjYQ<93Nk6zfhTW-HU$%K>JzbI7RLTZEMONXR}nun@f7H0fEo6_)h^Fta-c8Bu<7mVOp@zmLdZ z1;9+aL4WSg-MK%;56?^urE?AI%gvS%^52dkwpGYt_vCJ-xN8SP(n zL&lR(VSEQ#*0;~RWK6Cd#ipO8U)JKL);5#uHz5q&*#<^$+XL}!wD|T-?!)2akFT(a z*5ap@Pp3^y@z^@QH5^ z>$(1#RIOmXJM;jg>4w_ubzaWM~*G*wf300?VVqZ|dt7 z>Nocr2IxuohA$i+xh-EmmQ$xPjt%r*Ue-#ZkZR*!wpp=9{!v>fI5oW)FZFWg8z@CW zuaaItj@G#6N_c6-{CC+yo!e=~61KX3OY*%6S$ID#rEKCzp0(gaf*2U2wLTtlU<-Qt zQF9Zn15XO1S(+MbqM!CW{K_b8ixPb%4cLm>JNh~{f{-UC4&hH?a3z&Tci@j6o_Wvp zV_Lp|iS8r*{B4xCK$0};pn9jUatLmjB@Pofg8asGL-C#!AqrLzV#ZW0tkq`7Tnz5P zBofUi$mCF6W|y7P^Yts)c!!>KNZe&$DSNA$56_4ked@XT$E0UhgYgz&n@;F2; z%O57L3U35l58H$^n9_q7Sv6`Y=hFA7S0uNUxDN}WCa;N;c#_b2<-+OSipm#)X_6Zp z26ODZB)O(0Vu3Fw}4i)lXI196b#t^t1^oLN|jFrm=-T!t=E{JB(c>OR@ z_&0tUb?0_di|)NF*K)Iqfs8DouNb)h+u9%TZDz@BB=_NqD5|->uaLFIvmc%QU$^Ux zrylVpxiBU1x-O%nV>_b7D~%*P#WY0nd*B0Ctd%QDd`nJ=jR@ZNQ8HnYVDEu4<$DcP zmVN=iaZj!UJlK#5$kHIcfLQwtFfZ*; z%0l4(%xlRuQ(1YJ=c|Zx1j7{^noMxO_&iR^yyiesoy9PRMbwZ3xeqfkHE(Syao0KM zuM661Yz7})rBQ&j;^o9k^j%+>tSyL!9bna>jO?l+;{O~xxob6a4V0tt7*|>l@wGKa zVe}{T;?F*FZm&_Kt_krX7B}FqXtS@jnC&X(vR|?&p_iQ&d~_dUYgnQxOU_0ZQff{h zY_F`<7T*iYX)hQlhrY_Ed|lHDiu+-k^tJoA+*IKlSM({+SOBgs5l94z$JUxoQBULG zS2p45R?DI;hQF}y$h6DvI>ZhV@sR#Abe|3S3NdYi$S5MXtkGAd90ihy;@ifO+t)LW zNDktaluZVsx4-KJv+3LJVK4a*SXNYAOh;B$~v%9^0z zYxxUWt(d^!fMO1d#DVWVFRy`!HR;(d^tJgSmMB7BhxN@r4DUR#5s>MHue6=C0>(6N zn=fR=3>|3FB?&SGlrS8^)@|k9ouQlP*BD~D#etQVzd5Xl_}f*xf_|#`5_Q|90LbTv z5P&@ur1Ru?*pTkPY}PlKCwuqtH&tF)+}-OMR^wjfPHHfC*(AOl8Kr$i{A_U%gR%J! zC8|v&CB}60biG7gE;%|I9YsBC-6)MQ!p9v?7`T3lk~vjST$|cqr9n?V&sgDRKazZZ ziTgZfL0Jn)e!$NuzXK#Y)3?Z?H`{b4N9_LfU>}~Xo15}@h{>6866aI?*$R&-$} zJS|%iJQL?!Y1)ms38+#3K(iPPI+mc>q9cElUMmR_M$AAT`OuuZie3~Lfm)iw0_pNa zW>ft;ba(Wg&vWhr!@e&NxG&%=nXHVWf@>k0Q&Rp^8pwQL zgAfXi2nQ~>C0M+WH*am6~TvfNGcg5#Us$xmX=@cJgIwV#1vJ1 zk0qURGrpSR0^NhzFp*`kZ=)Ew8ew`N|Iq*2P|(58=#BM**+Op<1(E*brVUTFf)l@1 z+@1%f3U8{L&O{y)hDM4aZtx2c&y8&hIa9;(=rYtDtDL(Xy{e!* z(aNon8#BJ%;q`2X@}`$G4xMOU$IrcZiu`UoRy*NnNpvwTH&H*$B?N$rnz~=2Rq=-I z_Qu;6*e}!AOMfU{C+MZG7<02~Syi3s1&~iAc~-wrneFGwHwK8PlwYWATIML?Z;?#@ zdHH(e%WIh|acc{gG0HdXhIB9da$eQoWUE66Wt@DUNi&5~wU;LylO^=JRauikeuNAo zsoth9yXl50@On{M?^^t_K+;L0;*mz?6~pGhnU7hhq{pX#M`@sEUu=VU!eYw ze)2P+N~d9nZ^Ji3_kcvS@bW7cFOph;X z6>>vCDTza_pPlK*2nq1xc<#&WPTN7j%UB@dDaj)USW_CF-(+%PC=##|=9W;);vX z4L|N3v9GV?->$iUOr>fly7#EU>CUSPk|xRr=`2QBSE3N?aw*{Edpu(6q^?nyi?s8@ zw2q{?%XbI&!@f&I&g-}ISGb@x=QG#BEI8Tz-eCf*vwRFPG9ULu=BB;?^8L}zSy9Q1 zzm^!_k;Nw3`_XOGva3Mw(D98Yz!K<4!zc2criZA>y1SR#ZFmCa7|K7JY{J_8M;}X= z$DHg7!1D%#4NHXFW%}zmdySo|HpdqC9o>l&VRWeW-2Zg z{mbPJsfJFS-IrcH^8^UQwQr?##cysRXJ_xw+xm(pvAdI}({fZlW*c-ueqmFCX}dVu zit%3kILENWUgF9?MKU9taAvVvxaU|B`#|V4Lsz-pAt?LxTD%mS5mS%v><#ujg4{Z3 zU{Rshih1mwaL;O1e$sk2VE!oV(ovP;*MSp8@hqT8j*@bIOLV*)D}D7S>wIl=Pv0>w zRa!*LXZrj80dbwal7LnVK?w))zU-}6+4zsCy>@=Cmw=OdKB+uA020oPaQR^L9nSETS=o6-N6XAa>fsim|lHk_j!d+qSuQX+a zg6u{>z4Ij(!~#iC`Yk3OpI*_KZNlCCc}|Rv2h`CvJ%;u$k%H_*8$6P#3^ z?0vX~9{m+#%td077z@GXbe(?Gz^F&K^8Ikjz0q+s<=4tUgdua>TbHM-FHGA91SNJ4 zWLbYS(IpW2d(Z>>RxF&pf_CE(yC;N)f^q_734Kr|0HRG8aYw*WG{95#M|OJu!EDh+01g9xf!^!2L)jxli z3HkR4pA$m&4+aaRvoHK-X_ZPhj`CiQsOe)As;>*j?!jKNG|&fE?=Vve4vk0e0_CJ@ zP(ha38R9gFI)+%N5Zf&){c1h6y52~8eLMH|Q)w?Vk&{cMgGOS$KThcdfl|t&0oICd zx)R_Ewb5I)S(Ed4nmTs|OMfwIy6=4Rg%&q)r-Nu-M)3AWyNIl3cg0kIBY0>YlE(58 z-P@qEtyX+?p3WXb^I>IR#u~@ay3B!_d9vkh+ zD%8PPMTv#UiF^Rt#xDrxe7Jk?JcCZmFqnov!=pkwg4LG$?0!r`ENosf=8*Qt&EYWN zPPxb5NbQN+D7@&6Sg}}iNl}D5I)n()ESXELnAVXjr@iW z@U3jv9lLw#!D+52P95h}vxmNRs4M@@MRH4k-Zy=!kT)_vtR8BCN!*;?`1gkHjSThn ztAM;jS+3?Bqty~mc;NdI-QhX$7Wm~9-ZuK3q7GCach8fgvI}BRbbe+p9vc|E-{ysBy58FV-^Zul{WyBg z{?d?4a=yBWKSQ@Wdw$~%F@&RfMbsq*W+SAR}1@nBVr(ju|;9m}M}{hKicf>5R>2}0xu7ni>#Ou-JPxxyyvU;^n> zrY0a$U+8<}Qx0V;|MDmhJagkM3y69{J+#p38XOY(N`9W6yLM!j2sie8#aJynfIoGl zsf=Y^-b0SJk6cMINd%AO{`s8{QuP;;LEKMAim#jS8nxeLQa<1EfG5vQ$PKV7*M`(J zvUbO4q6XnAoIFQ@VC2ePCwl#rc(F zhze?R+(Z-CQT&q3z6%m9gnhzqXiQ;>41bUh0NfdcKHdY8;{ z)^wyq3;tqbCAzO6d zE5<>)b__3-(6k6sy_pYdU`UbGnr`dAhqUfdxM&x8rZjq9mT!2bbaKvu8{QPZYTHj? z>G#Q!h)f78+!z7*9qpEj)Q1gG`oeF&ybAIHHV<-hlZV^$+0B-8p0y)s!9kF5!vyg4pw=EYRL^b9qzBJ%b9-o!(2sU zp^@V;IV@3HqyAb#BcP;N)t^dgzl=DZ(FM$kGwv+WU$Zz_>hj#^C4<;~U8i|Vq z0bwP_aXs)Q1G5wsBklD@yX_p7E2Jb4H@X;H&)OjBwPD-xhA}Pq--uxUV*cxYyW$p! z-f34h%_>&lN(XAH5xg38W3cW|oGc8fT=!B1+trSY*~%S~8)&|n3W5FdepnfnI@pL# zi4e)_CjK2pX0LrP?tcB&Y=3FL7tW)XuLlKnGW`I$ zwp116z0*anMZH6@dvJHrKpIU3FiAWwDsGNU--SGJtNpU{e4peIVvq1WA5tlFmWOY8 zDgGSs(#q?XOUpuq`(KST7ja8)9x-2)$mm0V!g2)W$+)iJ2#9&*9SXA);t`=&B{ag6z@`cEldvT7;@afVlO40_>3>cNPko9RbZl z=D>v*yu1W11d;&JYafLq-W$%U^o8QFtrrw0chyvNeqn#L9TC0P>Z?;5D=*n#{RJ4z z$%+o2W}a&kb?=}OT>gs!dh$ki24UTWN33LpX%XWy-u&xb-6%A2>0uR+c%_e*kKVU@ zwPKi?`|L`~RUq)b`&R)omJE0BzYGJ+LiW&12l@SGcET(6KO6OFbz;5gdt1(~3W$(*{+eVVZQ5jGWB;^cDF#ZZLZncvT&uRZtARQE zqNIYjG8uv?%_k`R1`Kh^a*f1RsE7P})EB#T684jhI26TM5W~;{uMa1hi3Y*hA9hxm zo+w#XH;~H6%tov>e>w`heETM(cUg4Q1ELe<8WKdrM?H{p8Q`X|TJ(4#%dd{upSSNV zm3`CmW0`Ku*WYaf((Fi7{ORr8eTAl;EQJe(kblbf2^~ry5lNOib`aJ0z;L`D9~Q58 zq&=)%-c&k$WyrdAiojp17Vo_k)lr(hpH*2U!T$H*FL+s|^-w4*GnPuRwEcs8qx6y+E`lKinIxhQ%U!kNy{F7*WsqjH z;hIb_a4h`1lGW;HY^OidbK_8~&5qXlJq5H|pzBjik+4hEpwoTRgjk-MO2kHBF1U3>3+e#TGE>3(iQmg{An1ch_N z-amhf-oaZ?g`Jy%N7~gEXlA0OIPxp_$c$Rxi8+2b1dlL^l#k$_y=MqJ@tM{<9VdL2u8T%L8{ zt-uh=P@sr5Jl(NmKZ2OW9JT!@_-=ZVnV2$7IwGvgXS_%+^%5c(f6hU}>`sl$wzBc5 z10j>szuyF=B5yJZb#L<1SXBhX{_vP#*kQadGy=WTn{>GCI(5X`Y1z1wwKNDhM?=cU zC+w89_M=V!vJGQA?erCm0l1$Tyz4L7gACPAq_@*Inp}HVbDKkS_mP zEQnyiT`OSNkvagbnXzvsXCMzVQKy@%*CUs>(1*b@7{AKIk6 zVeL#4^jlh`ZM&c`9DrU^lq8XB^h74HDXnczxUg3Xs{2d2{3fw8qyL@~+ImU%zl@Np zsAWcqH;PS$agSg46Mo-+@n1goS$#uXF;R`N*}y8(re76T`KVYnQEOjuOkvP1bm=y< z1@?7G;L0b%&@M%ZRv+Ent@eboy2f&Urp<+JrOQ{ma7uXDO8rlrW1q$P?-iGmyQj+U zexuF0g5JwxM-vDDKWlR+SO+QjW7alSrB{;5r8)VZq{0;!KLDGSOoF_@V>q<`v2YwG zeE3&lC;TzN8O_YHp`5>iuItiE3U~avqw1DK1 zWvwuxv~uffQ-{c}oKt;FW>-}i4Z^L=1%;GcR;&D-xFopMyuK+i!^)vqjtA0VY3Uln zgU}BBp^0}7m~#;6Dz=O7C==5X%pk?5#MSre4Zotj$Hx@$%8jIIu|Hur-()4KXsg=9 zcMhAykTCU}h?l=e-}F&nER;XV|AcI%Q96H;p#(G!P)k@N`4GAbHbespoF z6n%4?T5{MZhEkK((mWl_W#%Vj8 z3_Ml(G#R-9qc&WuDQ3wevG@(8R?{b>%y!EBP0-SWp@-v(~9Li_afu( zZq`}39976gxLBBbp7^Yntz~8t{#pFG*{PUDMv%l&-)X~5F}XvjlPcC*#e!+Iu-B;o zA2wu`p~;e1ayMlLy&bHe7?Jp;Vpls7wGwa1pG>xWl?J-3b?f$tvuU-?Rf)XN^#_{h&Axn%8*vA&Ac_uC$dIxSbe+_9!|XfYx`v|iPs|j zG_3Xl(Ukkhxt5B2@w-pr$R;WR|9YqNH!L#m+yI?cl7kke2zuQ&xf@8m*Y6xx4)UUE zR&^+?0k0khX{dB)866Uzpq)r4aK5{~0~--xVJCdo`xT`ooG%A+cL=0-co zDpsjHI<)!Q2pX1Z^nTSPqA$gTGQJm}z{nIm?xPrrTNaYD>Ws<-glu9Nc|h?=jU7G1 z0zJ?zi(B%i-}Q=?jT+gc`|iZP;&@D_C@J`VR?UK|0?eh=cArdBj3e<>#$-e|&V(Pm!@du9UW@^NCv0MNIt%L+GAU zQ$zAUKU(I#zwPYXb)SN?+E1{p!#kfmuo5m5T%L}ft_l1TPg;(c*2t}sze^SEI(6s0 zY(G{;hW4Tl>fLc%>DOd+=#rm0wBe!h(-P^@-l^5#i&f$^B8xtAC#)?iE0ejpb?x0Y zqW$Rs3Cr~FAoU+TMrI4T9j&F$qMy1%L_l&F3DFuwYfvnxb{FY0709M5jh zMCSr<6yM^}+E9a9Nf){k408>mfPUvOT8P}cMe>FCs?MDPXWK+eWWqg}>Er=8S!Ktz z&AdEzS+Vf3pp?Ar?oKMrpWzsihC<4#ntWVc;Ip>J;U<9mgt%71e#j31!~^82em>tG zGv2V$+?@LL*_{URIsne(F^1DA36Fr((`WcMg{at}w1Sl;1t|vm_ULQsH0jt4FR(W& zw@1kpSz^Ig(BhrA)y~qeO_d*l#ON?8!|BebYSn9{*Ce2D=bd@d>GJI(X~oBP#l31@xT9Y?@|_d?wTUX-C5_IXWQHi;SA*B_z%z|} zNUx5FWYzW2y#vXFrQ+Nmhld%M$x&mfblVGft3b|*S&Rj z*Gsq1e_#wT^99GeBXPv=hi(XQxQS|=#T5K7-y%Nj-FP#T&1L`J+-6n(E{k$1QmPnA zFE?&alg8pVA}+;Hgs|Ky=0RwgPCK8w6~JS4M3Ymq<=q|kX5ji&0Se$|%MTBkH7=eC zjIhjDtoLJPF`w?-`xZ8fQCo#uc#@npwrzQ%9M!BnHEP(m_n+7~87u02xpp^FnKA30 zY0pD4)>V#GpIm2El6`6`>?4SS@~+VBD~XP5zn}@CX1bt*2qUy}j9LK?_M zQ)QE4;9Ogrl!eQQV((YPFA#(4o>x-~l_b2Id_uzA&3|`o9Bk6k$2i8f150;NVD^R~SAxu0gpE~WOcmVxx z3(Vn>r^O!<*sQ(Y8t-!YDF?x)wO)!5(1EA)VnjommjP2Qwc4p2*VNdL#d@Ay*XZDe>`kB?WWm zh1>S?GBj4VT>^4TUxBoGkElv z2fPL_7+iFEi&*d+zFtx+ZgT5q>+1VCd3tcPq}JF=s-+%pM0~N^Oh##!mdd?)h*hU} zuMQE!*ZE-X6UI)CTr>mK-_0X9hB~ zH~J;N7`%5B>*cR+t&z12Smj2M1CW5{2OfbIt7qLKqPS(E$N14jsWf;4$!D5I)ukPd zX*=?%*yj^=xT2h0cOlaG1wBTTR;JjzI}Tz3>FA$B=JbQB5rqg{&tv{uuOPleY6((4A{%oqPN86#xV2mC zX5mA8CYcXufShdLvFW5FBLybaPojlnrf9xl$x|$WtJWZm6TDi3zo;cMaD3iRXRf2= z!sbAHW9PT$fBr{v>skNUAO=^?Ds#`;E=v#W?+L|wLX@Ua-6OJb$pAJ$>Cj8>Akl6q z8(y74Y+hX6L>Vh?S#gtg-_mhyq|fkPq&vj@6F_v^P^cq9ss-;}`u@FOZ=j1wttQ>K zeHDM_6Q#yS3h3g0ENpcT9jeZ&*l@O>hW^Dy8CMLFI{e27xPns@i@&$!V)VSU!K+S) z?f}g(X;mS)@f2d}7g0y>xYaug4a(5yIF%RvweA#^BdnDw{k={v0E#Kf=Uci4oQkC8 z(_oK74w6JKqTa*%2>s4m$bC%GG<@FimSW8`luDtt(_Tl902uFvv&5={$A&nyR|3V` zs>BW_0G&PZ<;h|+uvyI4C(Va5r+b8TTvWap13@poh10|NzI}qfu=x&PxxBAotf#iO zovY`iIr?=6A34%hws>ZEfpP46<>k}XkiFM0r{5=DxnbskOzxsaXx9=Ir`x z?;Y=eS;?_)(@VT|N~fH^(>5PIg(AK(Vw@|U?Ed&2N5SGZ*T&EnI9>;WBv?EMO_d+= z`rGRi`WrV`uA^)g>4^uRc{kuDL0bxb>e0s5xy};UXy~eZWvgy?Zii($qL;{`%%hzo z`79-pthVe?*8>2T4q93D&Nc~2m)_O4HpwUr-tiV6r>-#tkUmi zG5HIQDI}uHrKwKi;K^gQgMK2JuVPcDzhUz7?>TWuY)jhc<6_TKC^Hu7CU-@FvvDJ5 z!jnPF$K7sYfC-)PgBZQUh|mRfPdi$*V2(tG1OFH+!=8?_AE3P>@%i%W4dUd<_bYzs zbfQFCIi2s*oD$bcS`IDt88q|t#bv#T0kX8SJnC!T1;6?<%<;mm9=da|Dg~bY9LlHy z;m)w~Di9+h5aYB+)fy%DuJVu?pq(=IQdDylZaohAR1`UV=IcK&dydh(SV!(6x3VY8 z$n4tNo+5_#+SqTr=V|tDS0@|3`twZlGP=wq0N<2M{akC8v+y28 z*=bSE-U5nDo3Qh*oN8pvgZmz#D+18W6WMtzp%x2L|4WFIdqtLI@aGY>h_VZiaX19svF0YxkAn>Xvt3igbHUo3Go{ z2~1PECtoN!i@+qZ#N=khKdJk}Cw88dw^$80&~K7s zTrfC6&G=xCFWhIe`rRd-<3(3?ZR(rsWdt8k+a&>@vzmFk#~ogvn9YU;W#tdOb%Ozj zib}kta3F>4X5goPY|Nno%)HyGpl41}d#&nmjd(i6BdJ7^Is&;E;FlOKD!a6xDK(nr z31tB{W~KAe-R|~^onO74AV$X5kqb0~j|M-MF8ex*QC)=_xR_=8u*qL1FrZFC&vE`H z1%%fGm_4(w*=e}V+zGwt`}g1q0)$pVWpPmVdlz^dq}iE73|v*g)R&^2l(NRzl|g)k zc-~?~n%BM1AIEi6en&3)jncr0Z#$`ZEXZGoAl-y_cGYUml}B#*n^rQsD-VNaD3cz- z)~Po6I(Nlr20&W(7nwkg^=zE|LoHbk3jryS)xDSQE6)q{`(u^CTd@ z##=**da$-tJHn6Zdd$(&ixTf^%dXl@iQ;*bZMB!bCZriSP5O@{s;~(_Ccq~c>0M)+ zxH+;$$=KE8GQo5jmP}9FGdXegX#CJXN{(0-4l37<+?nm4ChwJhD|IJ$gUGimUUfAN zJ{cBIkvv(QQ*7;euq4U+x_)fhm6gd0Kz$xOnT$RDTib{#kXqoaM6&VrQeCZsbb;Z3(EJwsvn-M znxl-u+xw(?49?ZVc*=H--^X%#5N`SyDYe(3arE8)SefBS4U2_(`dqFkUpIhb`0R5k zG|B#;j~G5VoG=i495*DZ9EOURo%}WrqgG1jlwASkV8QtZq?=W1Ln;d~*;J(NBhO8Y zf2KRa#SjzC6uoR67JlI zuM~tV1!>$Tt~pw7S7~7S%ow>!K34edr79`TpRmK3+|(gD@Eo#D?rp_=*+K)7vI_m5 zhRQoFDCcEjFRmNEiK3A`7pim7IR1%t1hcb>VM`8f_*1ebWCa5|woVBBr%m-N0g9SD(RsAZ zS&(_Gi=6{iuFPn=j@9w0WPhJG1Bemk&L~4m-eDG&BY`FkMbVw z_z#bAX%io|--wh7cv*XMNe>bR&cORjGWLZAVzFG_cgD}jo+CzpW@_iyK~lvAF-O)S zEcv!?_Up%{hv+GX?7m-d*!icBb$1wDrr0zfn3F&1WQhx&%&a8zb{kMNQvnsV{k8KI z&QSF48BcV8uYwyesk^w$_>Do5aLN>+|JgBVSpIKldSl}!fzK;m>C&ALtqJADU@UuJ zTuI`lV~yi!LygnDG!w6m6XrJ!ZzkpLB*L0ufbN+^S;jaV$b(#V{-DcpJG1xh(pk;r zc%0B*c8bY+JUTxar^9F9sVhm{d%}YF=dx=+IeQZFp&v~?@K=y#U}n5*)XCIuquQ~C zD0Y5`{810S-rK)7 zM3`(to)30abT!>9;H2n$wRyt<6KgB<7U=$L9ayg?O{)_l1u7#TYO-0lf0?-4^Kcav zQTHT#(efj-OcFN*qX45iA(PK_R9JPg2-KCnAgA6Os4uSin*Pl{BO@3OtKLLO(`qGK zJTs#^_3TAp1k}GmzglXtyh-FbS{)XtB@GK))%U03-)(HVi9mnTYZu20FsyK1r~>G3SLoXp zD;)O4P6-+>M>)qDDM;fbtxpDG7B^AmiWboW^h%sbdK2InQOhyYQ7*w7~Y`sRCT%Sb&leYs8|YLel3?JP627_ zRa!uZHoe-{M_1w+HplbmpAf599Y)_rZxj`-^PjadNWsgB5~~xC zO%yG}wG8wCb)o2A0(S+b&71E%sbntAKb~0N$YzUEs6k>Y^LaeEa$--t5Hr z6JZ+8W_!=1osx^Im4 zviX}k7BvkII1F+?XC~3a|BFiAQhVrZ zf^KmtLQD?2&E0+)Yb=*Qbnz55_O_cImDHBSev+6;aut9wfKpw4B%|nUs#E+Xmg^`~ z3pLzA3WrtD)yIOpr`;&@-yr(^U^+KuBhvL}RUC>q_BV|ia`;RaMb?%d1EQig-EVQk zku<~13c^HbreqxtG!D+a%a3KGwkNZis*ME`#3sLVpQ@4u>6YhXV4kFdI(nH$W@B@m z5{`~nPUcU%z?8&hg^Gx!7Xga2(d`G2`>4$HPq->6KuFv8hr^_P8vHU!8XG2p8Jv>kVIHYB!3~G;|Nc+P_}@dBG`M}n!^!e@1oYS+amaQ{HDcO{ zGmfV0WfdPAGv#%V%XK~|rdE@-tXthw2_u`8L{eQ8`1aQSt*%O$($BpN%ijwNY))S*Hk4C@3yq}SVP>nTi&Temy^bhQXlsslM z`|Ef*-a@XQX`!syqMlDP+#}n!FZtLkZM4hdoXf$@B=}JOm+st1M~Z%lmn7fja8L++ z>qpld5~~MWAP6Y0dtO45fAbg~{vf);wrd^ipLDiUyfP z#8!wSSEoshi6rd^)wgu#g(=^L9=Xyrlf|LQ-um2Yu1!BBYRisI?OYYvkl+6xA#LV5 zdSH9{vAYmD0={2|aU}HX7VvrTTt`|JmsqJuF9is;I8^fO3)#EZTNcADwW}salBdQG z^J$xx!#3^Z4exHu4b}MY%3 zqih%*HOcShnq^peLW$EHjSVORZyY_9O^l>=N(;mBrXq6d^?1_+^-m zkC(xc>j>+C7uEI6rS_MyOah8RPDShU;LF5-X@c_~fKK}SChb*QB%e+{4bKgQcS06zb7FpqK`t3Et+v-mzQ#zYUxg3c%zvU8p$=m{2R z`d{gI61;ARcqpO4|s) z5TtL0DYxJlj=DOxAiVXS*2twA+UAB2_k(gncQ76Rlg?;7)$EDnX{-}%pM{XQ*`Y!|dIaCLrzpj(P{?6XV{4raaIIC&7DrYju zwvW>+etU44nRmY4jmPvE)*`=WrBcSgDz>}RxGm>@`Ndt2c6=YadtB_cJSBqcD;cDm zJJB{99OO_d`;7wiXi%wm7ULO>_V<@=AQ?xkT4b~)9)I3RT?iBFuhXbtw7jbH#99Gq z0JFLMvt8q38M2JLGyTUVcMu#Z1&GmruG5R{hq@QEX@AvOURf#N;T%0}&^UVjWNwB# zo`k0Qdlg#k+iNo=!#A{b4Rax3wjh@?OSNO$DJ(t{S2$dZJkjCd50F*3@V2~H) zX6Bso*(x3e&QDd{v{-Rbh=AK7Zz^Xd?fGbNE~#~-kNi$c>sq#k`bMQ}Au&$Jpd6@o z!T=yo@-L5-%#U{Y>zCpqFakWh9ZRm+zg=7yWxh6C{^CaiwbC(y-`D#`R6&*{|L@O*q)Vsd1Hi8!ssYPzK_=co z9}=QoH6^B)#S@q9ad1Vv<9?mHOplLd6n|i%iY2w3dmw!I@wApIQDP+BWgMBtBw4Jr>&A4g7 zR%=*tH$fb-7B(NBS#}n><(d9pi<{xbx5AMEVffaum@J-Gya8&K2QK7MUiItk8~02P zR0=6D%-x2oC^25-1=*8*tee%=-bA$41X{`-UK+^J1Zz^Dn#Fo27DE*>v;z`Tgsx9c zj{V$6)X@N9g$hSHs5hhQCwNAF%kf0}j$%Vwr>Ornt`qUkh~))V%Otldqm@DYwcf+t z*&(09kmnNDxfGZ*!5vv)xxiC7AuW?p_@P@(z({j6q!9^Z8g6GQ>8hhb+-@#Y$TSQF z4Hp^_EBiRYFSzOyA*!c=;gH_OW0)+^<=N*qo>Z8gok~_QEjcE`CG;C+m&;jh-M_jM z_{H!;Ze>dI<<_F-A(Lz%jHgaaRU zUC!Q#BP6~YUj_HM$=<()J=yON8apO|_L(ac;CVP3H0&0fE=%CEF6BVQ7sge~QGD~K z4XhUL5w#T);JZOp1jEz_^2N&I!cXN_X%71v`*E|FIz9#rE{xQ|V+BdXj<9yFUl+8K^>Is=3qN%H&&<1m-x!xoO$qv2OSraq9M#ksqZVg z%;fybUJ!?%4)^sHC`gdmnaG|w%@g9dcbTa@H;zA~mcVsJumwj)Ej8;6r18Big}>*@ zU()c5(P|<6rs|htu2R)}tE^|qisaV6Bh0?x<2_gVx2KrdM2thX4PA_Kp?@3Nw z)@wzFbP*HT>8)`}>_c*HK8jxFI~mQwdlM@fy>9!Y%NCKn4Y=3bYD*wFO)u$d(hy-b zA88>dMb_-X_EM+U)^Yq@JyO>2$kMmNGQ~ej04ozMWR`KY%lcKUGl-r;XO_1EX0cK2;REA>BWkqUwNmu??NJ$daAL zLSsi#P|oc#vVoL8?pK=4sv=WO+$Mf&A4ZC7{C7k>OAa=3biYcB&3|%U4(G2?ctT24 z_c$z(i=(sqsSR!!@0?l&34zw5<9Hqs`C6-8tN*PQD&w%6V%ShJ~RAPM7X$d_+# zLeaE9i!AIdrM4X}$u94h`<3Yj^I-%vPCo0LFjP+QKHHTa$2yfo>>OE&jOTv!1=CUC8(>#LU{~J70ga@ZXDWlc zn|Q(Bcx1%oUe&JeC7+-Aei$+d(*}}V#4=M?^p-wEC3?=tvAjr<&CvhNMxjt5IDos( zSi0~lNWYa@bs@jgbA#Ylh{lxiVVUnZEKhzUz5cy62fw>}JD=0FDU+*EG z8e}vtwB2pg#YYXI4O`A@s01n7xNi(h-*5~TReT?I3hM$B5Fpn)>ui!Cx9dOahC_K( z_9B#dyh*}AYW8IpTxJ%>+y5G(r&q)gtr4%Ui`=^X3LHye_m)^i$Nlsc27hyN9fWL0t=KSK-dTr~+4?gHExb1}awUWF-`fc5S zQ+&F%)(-rr$}SrKSgx*Y!e+AexzbS9NTQ#(u+GF6|NoFhNRYS+w;9k{>p$fwm2>CTErpC(YS*aVarIEO|N|g z_r+_*3P)*Q^$CXQd+DX56fhHZ`x>yZkE7x<@Zb=$3OG7rXe8ISVHjH=<-8GyQ^JOk zUiJnr(=IM`ceqoK3Gnzk)*FIe+f5 z$9ruAR9{a$70Mg_P}yC&LBz}EGkiX&oqbo5gXVK}q2q$3Ihs$QJ>JfZ#dw(?WlLD* zp>9K6{6Hf$Ubd)^Fk6@=9A{pcMHwF!?!SNkozE1(%WFreA*!dBE`&v)R#xFb`}ro9=QhR*RbNn?15 zfN}aky^c=&jmwc?vj;04kXbKFRpJXh*iVoiR?K%GrD_{-yCO*$uH`8sFlFQ!A(Qh- z42s;`<%2rVBot0X6XX>Tz*=63U5_E#f=pyN4 zF5tAL?h`k>-I~Luse!KYbyJ3V5hVCrwIk{p@wi!KOVZZ7^4RohA|+J!fDF_$OmEG= zlS0h!E1ONuKp~{NbA9VWKDeCJPZPAuyD*Bgt*p0_Fwc>PYmAE5r{7eg=m&zsVBnH0 zNU;4|x4*pa!I#Nl*M?9I-ri6bxOE5J>io4s%na+|joJk7Cl{fe^;kn8>C+3j11##H zb1s>KA<{X0;*hDkD3zV-lm>6~UylcJ!3Kv)q;*FrxP`MjBtQ+w47B|UC1!@4kwI>; zc-ZZ#=^HYuzgI!@ZK9s&(Q+}Lic%?4SX$O|owKp&Z7zGa7$7FI_|mjU-0dz~;6kWhD7Q#j2z8$y@Q}6epqQ zs-FxQrpBd5_vX%Lz&mW?N-smdK|v5|`}x+G)UUFz`_OC4yqIs~i945k9u3&mHw(dXq)Bk%21(4}|c}V=jyK zm|JypkidDso@kwA6_S|B!oWK7YvXFBEnG|}qb^by3Wr5iK)2|fV z?|XbXubWF8%{&v8+4KmoR){kerG`F#2EsBLl%0{j$<4_W6Q$6IM?QO5K`in$S9qXO zrFzg~%9U1gu=M0whUK#s+X12as z^~wW6yaKj|AP?)nBSpBAlmN}=`sJwmPewCua5wGvGM9om5qsbk33hbvvd#HxCWGw@ zDO>1*(I4NM6zhFwO*N^QQAdr-PWb1eSQw%Lpk@%g2@;VUNfD-8Yh4nvAPLojIRjKnn~nW??nkSSqq z>8;5s+;x3Jv6%XLE8-4>@;d$<|Dg+iQkg_DcZ4rsS(J@RySmoiO+VCvXUa2|RDYR{1O-1ZIvea3ILgxG>YUjk)OS>L6Y-&57c7ret5 z4`2^@FQkS=Q>Wlr1QV30l5iWV?B=_~jIWz%)s~*WTS`W$pk&aX40*r$J6uCO#m!x_ zJ{drA1&mgCGFr|U^DaDT>2V;_b&1P!_u{oL1?|?o<{(e5wgY+5zYzjv{n{EahyTpG zdA@={xgb%6#LrRsvgxNc3izFXKli5jME3Hf9M=7u1 z>{ivCXP)v?B5qpZ){lLX=~T^%nkOFC3_r6J>iYa5GR6P6GskN1$Utx!>mQs*YIL8J zps!lSwBC+4`CCcv=8p3M4RP69Lg%kmp>}VIO}Y31fkSPe8ya%WcWiVn4{0=3nQ3&! z1(*)!)*~&-EqS=ZBrHt$#(IMpT;13aADBGdtBYgw2{m2}?oAur{Yvv&;pOL{SqgCA zcKs;ZL6(Pgp>Z2X(npQL9{ncbYkk8>m0XeXMUo=bzG4~8qkRtq>qha&XS&jr$sy^9 zy&oV9K)(s>ph2O{!PE3&U^7`zeTN@7MS@ip9-uPsa&HS477M8qKGS>edduP;EJPlIjN!%mKJ-J@f{p^mz9!F}{$B7Rdl%?Jg#?n@pFO0Q5#@F!5r%8d znH8_C-Od~Sv~IAdEu*RvIp`QIVRUzxV1)7RN7wt_b#B}~al&-jm_rbjEbmBw0(!YU zP==2*^zeu%Dh^W}u2`LPN?OsbLJR4Sa$+p-xdAHetLPISae|>qXqQ;vcTMEcUsI;2 z82K+ucTW5F=TkZPyIJmi4)tiDqTzgbYhI}yfEDyw!UV1Ufw`J=zl}urlRI1xmmvrl z5wR;7EBKg@MqL$)vQ}^%i7pn|@ zz-|er%WnwZswl~zMo>nBG`{&YZW&yv(+5%184>-sHHLUyX2HDCmrYU-73H%<0{Ofq z3av13(6?7MeHvvfMgv8&0~e{|Iz1nNxfW4NK)V=oQA3lJOpYh@EvbNbA^AwONARu3@D?D0WS^+yM*Y}^bl zAq?4A>-9Gch;vUnt{kAxdH_0sSl2kVnoLz@gt)h+y>Rb0;;0$E6vz9frs^#VK4mIB z!Fy+9#!J6;Gama6{=0?vH-ls`HF>=AF-&g8rBAn8+@6YmQO)=&WDwRLAz&1 zuJUB;&J1T*SCs0)0mFKIxv5GYkl5FvVu_aq9#C-OyEd{Iun_>8c#*Ol?UxJW?oMKS zW~$QQX$KV$bbRIkqBZ(eFb}wQqk>8NfQEB~uIs(5VcDXxYJr%%@v>WNdIBpF#)_Gp zj&y>TR?Ql-W|XQIq^ASSEjKo|>W@o=vkbhL+p@@dBY)K$q$xFoAOG7_g}?xe5b6d!AFE~_@%75XxLeyyo>8YjGI zzCW$1a9+uGcbrY}FE}^{7f&DnynqePKJNG4$_<(FJ%V$CuG=zvRH=|hqCnM?kr8zb zn~y)o9(e2=z}4~b_c(g65|={UaiVu?ZLD_8!~En>NZ>n3ZZnc;sOU3}{f}UDVMgc- zh`Y3H*18aJM$inv&B=dht)<^Fc(y?N6Y()4)M zY|q9QCr;npy=ua3tOpFb1u`S3SxA%L7tYUJa~%Y8A!qbD1!GE!%A{`QY0<}<6st^B znDYJ>1tC*+^Bf^8$#c`JwswB>kkYBfpVU(WKT(DI`6ytkV4&|c>oR2|gzz8VD^{rb zel>$fL+h!=m#nol@4R7g?!obrsLC6V;2X^76-bJBU+B_t`~NrRsHggAELx1>0!e~U zd)QGla{o*$kI;jCU(Pq&4g7BP6u%4_egf7S9i^0B*wI2zde)ih$dLUq2;dWU_MXKV}hQnL2O#<@W$V2yFUZOqkqYcgn0I zZBnDWr=Msm*;q$FQ0D#1?3riICxBE92Ieq@_q_gAJw}4XJ(o^h^W$k>8arp%ZGCeal z+EUwG+su&D<$ol07t$t1M3=iWOt%xbrI6SJjlu+t?%S8DczV;Xm+d_$Z7RBob5|U# ztDPrCs%|teyH{goMxWw+jY|CwyZa|SwMVh!Q1e+ZkI-FXw>uha zA&OrE>AR!Zf8sOhNC7qTgF^^P&hdJ^O5om&XeFfyjWuA2J6zHF8r>fRQgpKU;$#1| zcG7-QEws2q^F_3tE1%(6(tlL2)4* z_xYRR(+a&%;j1yK*{>|4vg|s~fk0q_d05Zyp;N`^jAzy;$7Xr8K4)3=M_i4^@S$Gu zzv+ZqW5$l<1h3Mo#MeMNq`TPN2>(0|2%-W7e5g4H`6C1K`O*6M-y2QXcf8qp<+_9X z*}n0ydEA3;NANG)6-GDhnV+6l$<fm~lexXmpiiWy5JE6=fFMjwvS8_?!$GCgE-i;=u*J+FY5jA*abV~I(&pRdr z|8iK2;X23h?Lz{-Xkcg7J){;8UhKOK8BCb=Dhq_UW8;-kp8_N9O-{ i^M88t|Ccc|lgP)fdcNu@E~z~;Hg#1km9qO*LH`d`%t18( literal 0 HcmV?d00001 diff --git a/Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json b/Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Vision/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Vision/Assets.xcassets/Contents.json b/Vision/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Vision/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Vision/Assets.xcassets/Image.imageset/Contents.json b/Vision/Assets.xcassets/Image.imageset/Contents.json new file mode 100644 index 0000000..545a688 --- /dev/null +++ b/Vision/Assets.xcassets/Image.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "watch icon1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "watch icon2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "watch icon3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Vision/Assets.xcassets/Image.imageset/watch icon1x.png b/Vision/Assets.xcassets/Image.imageset/watch icon1x.png new file mode 100644 index 0000000000000000000000000000000000000000..6004c95a1acf9ef21da7290f06a8db3c1d7e83d2 GIT binary patch literal 36700 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

la7@RcOk)*6Vkn1z>5 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 literal 0 HcmV?d00001 diff --git a/Vision/Assets.xcassets/Image.imageset/watch icon3x.png b/Vision/Assets.xcassets/Image.imageset/watch icon3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3687b6e00b4e98842b331e3b0b58bfe3abd167 GIT binary patch literal 155229 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

;GHb*& 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 $=%=Hl131;`g8(Z+w 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 literal 0 HcmV?d00001 diff --git a/iOS/ChineseTimeiOS.entitlements b/Vision/Chinendar.entitlements similarity index 100% rename from iOS/ChineseTimeiOS.entitlements rename to Vision/Chinendar.entitlements diff --git a/Vision/Info.plist b/Vision/Info.plist new file mode 100644 index 0000000..d7ad317 --- /dev/null +++ b/Vision/Info.plist @@ -0,0 +1,27 @@ + + + + + ITSAppUsesNonExemptEncryption + + LSHasLocalizedDisplayName + + UIAppFonts + + SourceHanSansKR-Heavy.otf + + UIApplicationSceneManifest + + UIApplicationPreferredDefaultSceneSessionRole + UIWindowSceneSessionRoleApplication + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + + UIBackgroundModes + + remote-notification + + + diff --git a/Vision/Layout.swift b/Vision/Layout.swift new file mode 100644 index 0000000..822f690 --- /dev/null +++ b/Vision/Layout.swift @@ -0,0 +1,107 @@ +// +// Layout.swift +// Chinendar +// +// Created by Leo Liu on 11/12/23. +// + +import SwiftUI +import Observation + +@Observable final class WatchLayout: MetaWatchLayout { + static let shared = WatchLayout() + + struct StatusBar: Equatable { + + enum Separator: String, CaseIterable { + case space, dot, none + var symbol: String { + switch self { + case .space: " " + case .dot: "・" + case .none: "" + } + } + } + + var date: Bool + var time: Bool + var holiday: Int + var separator: Separator + + func encode() -> String { + "date: \(date.description), time: \(time.description), holiday: \(holiday.description), separator: \(separator.rawValue)" + } + + init(date: Bool = true, time: Bool = true, holiday: Int = 0, separator: Separator = .space) { + self.date = date + self.time = time + self.holiday = holiday + self.separator = separator + } + + init?(from str: String?) { + guard let str = str else { return nil } + let regex = /([a-zA-Z_0-9]+)\s*:[\s"]*([^\s"#][^"#]*)[\s"#]*(#*.*)$/ + var values = [String: String]() + for line in str.split(separator: ",") { + if let match = try? regex.firstMatch(in: String(line))?.output { + values[String(match.1)] = String(match.2) + } + } + guard let date = values["date"]?.boolValue, let time = values["time"]?.boolValue, let holiday = values["holiday"]?.intValue, let separator = values["separator"] else { return nil } + self.date = date + self.time = time + self.holiday = max(0, min(2, holiday)) + self.separator = Separator(rawValue: separator) ?? .space + } + } + + var textFont = UIFont.systemFont(ofSize: UIFont.systemFontSize, weight: .regular) + var centerFont = UIFont(name: "SourceHanSansKR-Heavy", size: UIFont.systemFontSize)! + + var statusBar = StatusBar() + + private override init() { + super.init() + } + + override func encode(includeOffset: Bool = true, includeColor: Bool = true, includeConfig: Bool = true) -> String { + var encoded = super.encode(includeOffset: includeOffset, includeColor: includeColor, includeConfig: includeConfig) + encoded += "statusBar: \(statusBar.encode())\n" + return encoded + } + + override func update(from values: [String: String], updateSize: Bool = true) { + super.update(from: values, updateSize: updateSize) + if let value = values["statusBar"] { + statusBar = StatusBar(from: value) ?? statusBar + } + } + + var monochrome: Self { + let emptyLayout = Self.init() + emptyLayout.update(from: self.encode(includeColor: false)) + return emptyLayout + } + + func binding(_ keyPath: ReferenceWritableKeyPath) -> Binding { + return Binding(get: { self[keyPath: keyPath] }, set: { self[keyPath: keyPath] = $0 }) + } +} + +@Observable class WatchSetting { + static let shared = WatchSetting() + + var displayTime: Date? = nil + var timezone: TimeZone? = nil + var vertical = true + var settingIsOpen = false + var timeDisplay = "" + + private init() {} + + func binding(_ keyPath: ReferenceWritableKeyPath) -> Binding { + return Binding(get: { self[keyPath: keyPath] }, set: { self[keyPath: keyPath] = $0 }) + } +} diff --git a/Vision/Views/Setting.swift b/Vision/Views/Setting.swift new file mode 100644 index 0000000..a007d06 --- /dev/null +++ b/Vision/Views/Setting.swift @@ -0,0 +1,73 @@ +// +// Settings.swift +// Chinendar +// +// Created by Leo Liu on 11/13/23. +// + +import SwiftUI + +struct Setting: View { + @Environment(\.watchLayout) var watchLayout + @Environment(\.watchSetting) var watchSetting + @Environment(\.modelContext) private var modelContext + + var body: some View { + TabView { + NavigationStack { + Datetime() + } + .tabItem { + Label("日時", systemImage: "clock") + } + NavigationStack { + Location() + } + .tabItem { + Label("經緯度", systemImage: "location") + } + NavigationStack { + RingSetting() + } + .tabItem { + Label("輪色", systemImage: "pencil.and.outline") + } + NavigationStack { + ColorSetting() + } + .tabItem { + Label("色塊", systemImage: "wand.and.stars") + } + NavigationStack { + LayoutSetting() + } + .tabItem { + Label("佈局", systemImage: "square.resize") + } + NavigationStack { + ThemesList() + } + .tabItem { + Label("主題庫", systemImage: "archivebox") + } + NavigationStack { + Documentation() + } + .tabItem { + Label("註釋", systemImage: "doc.questionmark") + } + } + .onDisappear { + watchLayout.saveDefault(context: modelContext) + } + } +} + +#Preview("Settings") { + let watchLayout = WatchLayout.shared + let watchSetting = WatchSetting.shared + + return Setting() + .environment(watchLayout) + .environment(watchSetting) +} diff --git a/Vision/Views/WatchFace.swift b/Vision/Views/WatchFace.swift new file mode 100644 index 0000000..12f9304 --- /dev/null +++ b/Vision/Views/WatchFace.swift @@ -0,0 +1,107 @@ +// +// WatchFace.swift +// Chinendar +// +// Created by Leo Liu on 11/14/23. +// + +import SwiftUI + +@MainActor +struct WatchFace: View { + @Environment(\.chineseCalendar) var chineseCalendar + @Environment(\.watchLayout) var watchLayout + @Environment(\.watchSetting) var watchSetting + @Environment(\.scenePhase) var scenePhase + @Environment(\.modelContext) private var modelContext + @State var showWelcome = false + @State var entityPresenting = EntitySelection() + @State var tapPos: CGPoint? = nil + @State var hoverBounds: CGRect = .zero + @GestureState var longPressed = false + + func tapGesture(proxy: GeometryProxy, size: CGSize) -> some Gesture { + SpatialTapGesture(coordinateSpace: .local) + .onEnded { tap in + tapPos = tap.location + var tapPosition = tap.location + tapPosition.x -= (proxy.size.width - size.width) / 2 + tapPosition.y -= (proxy.size.height - size.height) / 2 + entityPresenting.activeNote = [] + for mark in entityPresenting.entityNotes.entities { + let diff = tapPosition - mark.position + let dist = sqrt(diff.x * diff.x + diff.y * diff.y) + if dist.isFinite && dist < 5 * min(size.width, size.height) * Marks.markSize { + entityPresenting.activeNote.append(mark) + } + } + } + } + + var longPress: some Gesture { + LongPressGesture(minimumDuration: 0.5) + .updating($longPressed) { currentState, gestureState, + transaction in + gestureState = currentState + } + } + + func mainSize(proxy: GeometryProxy) -> CGSize { + var idealSize = watchLayout.watchSize + if proxy.size.height < proxy.size.width { + let width = idealSize.width + idealSize.width = idealSize.height + idealSize.height = width + } + if proxy.size.width * 0.95 < idealSize.width { + let ratio = proxy.size.width * 0.95 / idealSize.width + idealSize.width *= ratio + idealSize.height *= ratio + } + if proxy.size.height * 0.95 < idealSize.height { + let ratio = proxy.size.height * 0.95 / idealSize.height + idealSize.width *= ratio + idealSize.height *= ratio + } + return idealSize + } + + var body: some View { + GeometryReader { proxy in + + let size = watchLayout.watchSize + let centerOffset = if size.height >= size.width { + watchLayout.centerTextOffset + } else { + watchLayout.centerTextHOffset + } + + ZStack { + Watch(displaySubquarter: true, displaySolarTerms: true, compact: false, watchLayout: watchLayout, markSize: 1.0, chineseCalendar: chineseCalendar, widthScale: 0.9, centerOffset: centerOffset, entityNotes: entityPresenting.entityNotes, textShift: true) + .frame(width: size.width, height: size.height) + .position(CGPoint(x: proxy.size.width / 2, y: proxy.size.height / 2)) + .environment(\.scaleEffectScale, longPressed ? -0.1 : 0.0) + .environment(\.scaleEffectAnchor, pressAnchor(pos: tapPos, size: size, proxy: proxy)) + .gesture(longPress) + .simultaneousGesture(tapGesture(proxy: proxy, size: size)) + + Hover(entityPresenting: entityPresenting, bounds: $hoverBounds, tapPos: $tapPos) + } + .onChange(of: proxy.size) { + watchSetting.vertical = proxy.size.height >= proxy.size.width + watchLayout.watchSize = proxy.size + } + .animation(.easeInOut(duration: 0.2), value: entityPresenting.activeNote) + } + .sheet(isPresented: $showWelcome) { + Welcome(size: CGSizeMake(watchLayout.watchSize.width * 0.8, watchLayout.watchSize.height * 0.8)) + } + .task(priority: .background) { + showWelcome = ThemeData.latestVersion() < ThemeData.version + } + } +} + +#Preview("Watch Face") { + WatchFace() +} diff --git a/Vision/Views/Welcome.swift b/Vision/Views/Welcome.swift new file mode 100644 index 0000000..c998d33 --- /dev/null +++ b/Vision/Views/Welcome.swift @@ -0,0 +1,82 @@ +// +// Welcome.swift +// Chinendar +// +// Created by Leo Liu on 11/17/23. +// + +import SwiftUI + +struct Welcome: View { + let size: CGSize + @Environment(\.dismiss) var dismiss + + var body: some View { + let baseLength = min(size.width, size.height) + VStack { + ScrollView { + VStack(spacing: baseLength / 25) { + Spacer(minLength: baseLength / 50) + .frame(maxHeight: baseLength / 25) + Image(.image) + .resizable() + .frame(width: baseLength / 4, height: baseLength / 4) + Text("華曆", comment: "Chinendar") + .font(.largeTitle.bold()) + Spacer(minLength: baseLength / 50) + .frame(maxHeight: baseLength / 25) + VStack(spacing: baseLength / 25) { + HStack { + Image(systemName: "pencil.circle.fill") + .font(.largeTitle) + .frame(width: baseLength / 6, height: baseLength / 6) + .foregroundStyle(Color.accentColor) + VStack(alignment: .leading) { + Text("輪式設計", comment: "Welcome, ring design - title") + .font(.title3) + .padding(.vertical, baseLength / 100) + .padding(.trailing, baseLength / 25) + .frame(maxWidth: .infinity, alignment: .leading) + Text("採用錶盤式設計,不同於以往日曆形制。一年、一月、一日、一時均週而復始,最適以「輪」代表。呈現細節之外,亦不失大局。", comment: "Welcome, ring design - detail") + .font(.body) + } + } + HStack { + Image(systemName: "gearshape.fill") + .font(.largeTitle) + .frame(width: baseLength / 6, height: baseLength / 6) + .foregroundStyle(Color.accentColor) + VStack(alignment: .leading) { + Text("定製自己的專屬風格", comment: "Welcome, setting - title") + .font(.title3) + .padding(.vertical, baseLength / 100) + .padding(.trailing, baseLength / 25) + .frame(maxWidth: .infinity, alignment: .leading) + Text("設置位於錶盤正下方,更改後自動保存。可調時間、在地、外觀等。另有更多有關華曆之介紹。", comment: "Welcome, setting - detail") + .font(.body) + } + } + } + } + } + Spacer(minLength: baseLength / 50) + .frame(maxHeight: baseLength / 25) + + Button { + dismiss() + } label: { + Text("閱", comment: "Ok") + .frame(maxWidth: .infinity) + } + .controlSize(.large) + .buttonStyle(.borderedProminent) + } + .padding() + .frame(width: size.width, height: size.height) + } +} + + +#Preview("Welcome") { + Welcome(size: CGSizeMake(396, 484)) +} diff --git a/Vision/layout.txt b/Vision/layout.txt new file mode 100644 index 0000000..8c14c1d --- /dev/null +++ b/Vision/layout.txt @@ -0,0 +1,41 @@ +globalMonth: false +apparentTime: false +locationEnabled: true +backAlpha: 1.0 +firstRing: locations: 0.0, 0.25, 0.5, 0.75, 0.875; colors: 0xFF95517A, 0xFF9060BC, 0xFF6E68E7, 0xFF00A6FF, 0xFF7556EF; loop: true +secondRing: locations: 0.0, 0.25, 0.5, 0.75; colors: 0xFF8658C5, 0xFF6E68E7, 0xFF5283EF, 0xFF6E68E7; loop: true +thirdRing: locations: 0.0, 0.25, 0.5, 0.75; colors: 0xFF8D5263, 0xFF9252B0, 0xFF7556EF, 0xFF9252B0; loop: true +innerColor: 0xFFFFFFFF +backColor: 0xFFCCCCCC +majorTickColor: 0x00000000 +majorTickAlpha: 0.0 +minorTickColor: 0x00000000 +minorTickAlpha: 0.7 +fontColor: 0xFFFFFFFF +centerFontColor: locations: 0.25, 0.75; colors: 0xFFA36497, 0xFFC28F8A; loop: false +evenSolarTermTickColor: 0xFF000000 +oddSolarTermTickColor: 0xFF555555 +innerColorDark: 0xFF101010 +backColorDark: 0xFF333333 +majorTickColorDark: 0x00000000 +minorTickColorDark: 0x007F7F7F +fontColorDark: 0xFF000000 +evenSolarTermTickColorDark: 0xFFFFFFFF +oddSolarTermTickColorDark: 0xFFAAAAAA +planetIndicator: 0xFF3C1E0A, 0xFFEFF6FF, 0xFF2830D2, 0xFF5AB43C, 0xFF52E9E7, 0xFF5E98DC +eclipseIndicator: 0xFF804427 +fullmoonIndicator: 0xFF3BEFFF +oddStermIndicator: 0xFFAAAAAA +evenStermIndicator: 0xFFFFFFFF +sunPositionIndicator: 0xFF000000, 0xFFAAADFF, 0xFF0A36B1, 0xFF6EBCD3 +moonPositionIndicator: 0xFFE6B8AF, 0xFFE56572, 0xFF9E1E67 +shadeAlpha: 0.25 +shadowSize: 0.03 +centerTextOffset: 0.05 +centerTextHorizontalOffset: 0.05 +verticalTextOffset: 0.0 +horizontalTextOffset: 0.0 +watchWidth: 450.0 +watchHeight: 550.0 +cornerRadiusRatio: 0.5 +statusBar: date: false, time: false, holiday: 1, separator: space diff --git a/Vision/visionApp.swift b/Vision/visionApp.swift new file mode 100644 index 0000000..0991a00 --- /dev/null +++ b/Vision/visionApp.swift @@ -0,0 +1,109 @@ +// +// visionApp.swift +// Chinendar +// +// Created by Leo Liu on 11/5/23. +// + +import SwiftUI + +@main +struct Chinendar: App { + let chineseCalendar = ChineseCalendar(time: .now) + let locationManager = LocationManager.shared + let watchLayout = WatchLayout.shared + let watchSetting = WatchSetting.shared + let timer = Timer.publish(every: ChineseCalendar.updateInterval, on: .main, in: .common).autoconnect() + @Environment(\.openWindow) var openWindow + @Environment(\.dismissWindow) var dismissWindow + private var statusState: StatusState { + StatusState(locationManager: locationManager, watchLayout: watchLayout, watchSetting: watchSetting) + } + + + init() { + let modelContext = ThemeData.container.mainContext + watchLayout.loadDefault(context: modelContext) + locationManager.requestLocation() + } + + var body: some Scene { + WindowGroup(id: "WatchFace") { + WatchFace() + .padding(15) + .environment(\.chineseCalendar, chineseCalendar) + .modelContainer(ThemeData.container) + .task { + self.update() + } + .onReceive(timer) { _ in + self.update() + } + .ornament(attachmentAnchor: .scene(.bottom)) { + HStack(spacing: 0) { + if watchSetting.timeDisplay.count > 0 { + Text(watchSetting.timeDisplay) + .padding() + } + Button { + watchSetting.settingIsOpen.toggle() + } label: { + if watchSetting.timeDisplay.count > 0 { + Label("設置", systemImage: "gear") + .labelStyle(.iconOnly) + } else { + Label("設置", systemImage: "gear") + .labelStyle(.titleAndIcon) + } + } + .onChange(of: watchSetting.settingIsOpen) { + if watchSetting.settingIsOpen { + openWindow(id: "Settings") + } else { + dismissWindow(id: "Settings") + } + } + .buttonStyle(.borderless) + } + .glassBackgroundEffect() + .alignmentGuide(VerticalAlignment.center) { _ in + 15 + } + } + } + .defaultSize(width: watchLayout.watchSize.width + 30, height: watchLayout.watchSize.height + 30) + .windowResizability(.contentSize) + + WindowGroup(id: "Settings") { + Setting() + .environment(\.chineseCalendar, chineseCalendar) + .modelContainer(ThemeData.container) + .onChange(of: statusState) { + watchSetting.timeDisplay = String(statusBar(from: chineseCalendar, options: watchLayout).reversed()) + } + } + .defaultSize(width: 700, height: 700) + } + + func statusBar(from chineseCalendar: ChineseCalendar, options watchLayout: WatchLayout) -> String { + var displayText = [String]() + if watchLayout.statusBar.date { + displayText.append(chineseCalendar.dateString) + } + if watchLayout.statusBar.holiday > 0 { + let holidays = chineseCalendar.holidays + displayText.append(contentsOf: holidays[.. 1 { + watchSetting?.displayTime = newValue + } else { + watchSetting?.displayTime = nil + } chineseCalendar?.update(time: watchSetting?.displayTime ?? .now) } } diff --git a/Watch/Views/Setting.swift b/Watch/Views/Setting.swift index cee8b9c..b8ec784 100644 --- a/Watch/Views/Setting.swift +++ b/Watch/Views/Setting.swift @@ -1,6 +1,6 @@ // // Setting.swift -// Chinese Time Watch +// Chinendar // // Created by Leo Liu on 6/26/23. // diff --git a/Watch/Views/WatchFace.swift b/Watch/Views/WatchFace.swift index 53e2a68..48369a7 100644 --- a/Watch/Views/WatchFace.swift +++ b/Watch/Views/WatchFace.swift @@ -1,6 +1,6 @@ // // WatchFace.swift -// Chinese Time Watch +// Chinendar // // Created by Leo Liu on 6/30/23. // diff --git a/Watch/layout.txt b/Watch/layout.txt index 256995c..d76ab92 100644 --- a/Watch/layout.txt +++ b/Watch/layout.txt @@ -7,6 +7,7 @@ firstRing: locations: 0.0, 0.25, 0.5, 0.75, 0.875; colors: 0xFF95517A, 0xFF9060B secondRing: locations: 0.0, 0.25, 0.5, 0.75; colors: 0xFF8658C5, 0xFF6E68E7, 0xFF5283EF, 0xFF6E68E7; loop: true thirdRing: locations: 0.0, 0.25, 0.5, 0.75; colors: 0xFF8D5263, 0xFF9252B0, 0xFF7556EF, 0xFF9252B0; loop: true innerColor: 0xFFFFFFFF +backColor: 0xFFFFFFFF majorTickColor: 0x00000000 majorTickAlpha: 0.0 minorTickColor: 0x00000000 @@ -16,6 +17,7 @@ centerFontColor: locations: 0.25, 0.75; colors: 0xFFA36497, 0xFFC28F8A; loop: fa evenSolarTermTickColor: 0xFF000000 oddSolarTermTickColor: 0xFF555555 innerColorDark: 0xFF101010 +backColorDark: 0xFF000000 majorTickColorDark: 0x00000000 minorTickColorDark: 0x007F7F7F fontColorDark: 0xFF000000 diff --git a/Watch/watchApp.swift b/Watch/watchApp.swift index a8bddfc..9e867e7 100644 --- a/Watch/watchApp.swift +++ b/Watch/watchApp.swift @@ -1,6 +1,6 @@ // -// ChineseTimeApp.swift -// ChineseTime Watch App +// watchApp.swift +// Chinendar // // Created by Leo Liu on 5/3/23. // @@ -8,7 +8,7 @@ import SwiftUI @main -struct ChineseTimeWatchApp: App { +struct Chinendar: App { let watchConnectivity = WatchConnectivityManager.shared let watchLayout = WatchLayout.shared let watchSetting = WatchSetting.shared diff --git a/Widget/Dual.swift b/Widget/Dual.swift index d0d6eb8..f5a6b41 100644 --- a/Widget/Dual.swift +++ b/Widget/Dual.swift @@ -1,6 +1,6 @@ // // Dual.swift -// Chinese Time +// Chinendar // // Created by Leo Liu on 6/28/23. // diff --git a/Widget/Localizable.xcstrings b/Widget/Localizable.xcstrings index 30c93d4..175e8a6 100644 --- a/Widget/Localizable.xcstrings +++ b/Widget/Localizable.xcstrings @@ -752,7 +752,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "Chinese Time" + "value" : "Chinendar" } }, "zh-Hans" : { diff --git a/Widget/Single.swift b/Widget/Single.swift index b718e22..2703e7a 100644 --- a/Widget/Single.swift +++ b/Widget/Single.swift @@ -1,6 +1,6 @@ // // Single.swift -// Chinese Time +// Chinendar // // Created by Leo Liu on 6/28/23. // diff --git a/Widget/TaskGroup.swift b/Widget/TaskGroup.swift index d4c253a..cdf6e50 100644 --- a/Widget/TaskGroup.swift +++ b/Widget/TaskGroup.swift @@ -1,6 +1,6 @@ // // TaskGroup.swift -// Chinese Time Mac +// Chinendar // // Created by Leo Liu on 9/3/23. // diff --git a/Widget/WatchWidgets/Circular.swift b/Widget/WatchWidgets/Circular.swift index 826196a..69d7458 100644 --- a/Widget/WatchWidgets/Circular.swift +++ b/Widget/WatchWidgets/Circular.swift @@ -1,6 +1,6 @@ // // Circular.swift -// Chinese Time +// Chinendar // // Created by Leo Liu on 6/28/23. // diff --git a/Widget/WatchWidgets/CountDown.swift b/Widget/WatchWidgets/CountDown.swift index 10d8cf4..f28ec25 100644 --- a/Widget/WatchWidgets/CountDown.swift +++ b/Widget/WatchWidgets/CountDown.swift @@ -1,6 +1,6 @@ // // CountDown.swift -// Chinese Time +// Chinendar // // Created by Leo Liu on 6/28/23. // diff --git a/Widget/WatchWidgets/Relevance.swift b/Widget/WatchWidgets/Relevance.swift index 19a907e..cdcd1b4 100644 --- a/Widget/WatchWidgets/Relevance.swift +++ b/Widget/WatchWidgets/Relevance.swift @@ -1,6 +1,6 @@ // -// Events.swift -// Chinese Time +// Relevance.swift +// Chinendar // // Created by Leo Liu on 6/28/23. // diff --git a/iOS/Assets.xcassets/AccentColor.colorset/Contents.json b/iOS/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/iOS/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Chinendar.entitlements b/iOS/Chinendar.entitlements new file mode 100644 index 0000000..ba84f61 --- /dev/null +++ b/iOS/Chinendar.entitlements @@ -0,0 +1,22 @@ + + + + + com.apple.developer.device-information.user-assigned-device-name + + aps-environment + development + com.apple.developer.icloud-container-identifiers + + iCloud.YLiu.ChineseTime + + com.apple.developer.icloud-services + + CloudKit + + com.apple.security.application-groups + + group.ChineseTime + + + diff --git a/iOS/Layout.swift b/iOS/Layout.swift index 1ae3ea3..b71f01b 100644 --- a/iOS/Layout.swift +++ b/iOS/Layout.swift @@ -1,8 +1,8 @@ // // Layout.swift -// ChineseTime +// Chinendar // -// Created by LEO Yoon-Tsaw on 9/23/21. +// Created by Leo Liu on 9/23/21. // import SwiftUI diff --git a/iOS/Views/Setting.swift b/iOS/Views/Setting.swift index 31e3c3e..9c1ea37 100644 --- a/iOS/Views/Setting.swift +++ b/iOS/Views/Setting.swift @@ -1,6 +1,6 @@ // // Setting.swift -// Chinese Time iOS +// Chinendar // // Created by Leo Liu on 6/25/23. // diff --git a/iOS/Views/WatchFace.swift b/iOS/Views/WatchFace.swift index d700877..00d14d3 100644 --- a/iOS/Views/WatchFace.swift +++ b/iOS/Views/WatchFace.swift @@ -1,6 +1,6 @@ // -// WatchFaceView.swift -// Chinese Time iOS +// WatchFace.swift +// Chinendar // // Created by Leo Liu on 6/25/23. // @@ -20,11 +20,13 @@ struct WatchFace: View { @State var tapPos: CGPoint? = nil @State var hoverBounds: CGRect = .zero @GestureState var longPressed = false + var presentSetting: Binding { .init(get: { watchSetting.presentSetting }, set: { newValue in watchSetting.presentSetting = newValue if !newValue { watchLayout.saveDefault(context: modelContext) + WatchConnectivityManager.shared.sendLayout(watchLayout.encode(includeOffset: false)) } }) @@ -100,8 +102,8 @@ struct WatchFace: View { Hover(entityPresenting: entityPresenting, bounds: $hoverBounds, tapPos: $tapPos) } - .onChange(of: proxy.size) { _, newSize in - watchSetting.vertical = newSize.height >= newSize.width + .onChange(of: proxy.size) { + watchSetting.vertical = proxy.size.height >= proxy.size.width } .animation(.easeInOut(duration: 0.2), value: entityPresenting.activeNote) } @@ -116,8 +118,8 @@ struct WatchFace: View { .task(priority: .background) { showWelcome = ThemeData.latestVersion() < ThemeData.version } - .onChange(of: scenePhase) { _, newPhase in - switch newPhase { + .onChange(of: scenePhase) { + switch scenePhase { case .inactive, .background: WatchConnectivityManager.shared.sendLayout(watchLayout.encode(includeOffset: false)) WidgetCenter.shared.reloadAllTimelines() diff --git a/iOS/Views/Welcome.swift b/iOS/Views/Welcome.swift index 48ca148..e5c04af 100644 --- a/iOS/Views/Welcome.swift +++ b/iOS/Views/Welcome.swift @@ -1,6 +1,6 @@ // // Welcome.swift -// Chinese Time iOS +// Chinendar // // Created by Leo Liu on 6/23/23. // @@ -19,7 +19,7 @@ struct Welcome: View { Image(.image) .resizable() .frame(width: 120, height: 120) - Text("華曆", comment: "Chinese Time") + Text("華曆", comment: "Chinendar") .font(.largeTitle.bold()) Spacer(minLength: 10) .frame(maxHeight: 20) diff --git a/iOS/iOSApp.swift b/iOS/iOSApp.swift index 6553e1b..db78886 100644 --- a/iOS/iOSApp.swift +++ b/iOS/iOSApp.swift @@ -1,6 +1,6 @@ // -// AppDelegate.swift -// Chinese Time +// iOSApp.swift +// Chinendar // // Created by Leo Liu on 4/17/23. // @@ -8,7 +8,7 @@ import SwiftUI @main -struct ChineseTimeiOSApp: App { +struct Chinendar: App { let watchConnectivity = WatchConnectivityManager.shared let chineseCalendar = ChineseCalendar(time: .now) let locationManager = LocationManager.shared diff --git a/iOS/layout.txt b/iOS/layout.txt index ccb801f..66da124 100644 --- a/iOS/layout.txt +++ b/iOS/layout.txt @@ -6,6 +6,7 @@ firstRing: locations: 0.0, 0.25, 0.5, 0.75, 0.875; colors: 0xFF95517A, 0xFF9060B secondRing: locations: 0.0, 0.25, 0.5, 0.75; colors: 0xFF8658C5, 0xFF6E68E7, 0xFF5283EF, 0xFF6E68E7; loop: true thirdRing: locations: 0.0, 0.25, 0.5, 0.75; colors: 0xFF8D5263, 0xFF9252B0, 0xFF7556EF, 0xFF9252B0; loop: true innerColor: 0xFFFFFFFF +backColor: 0xFFFFFFFF majorTickColor: 0x00000000 majorTickAlpha: 0.0 minorTickColor: 0x00000000 @@ -15,6 +16,7 @@ centerFontColor: locations: 0.25, 0.75; colors: 0xFFA36497, 0xFFC28F8A; loop: fa evenSolarTermTickColor: 0xFF000000 oddSolarTermTickColor: 0xFF555555 innerColorDark: 0xFF101010 +backColorDark: 0xFF000000 majorTickColorDark: 0x00000000 minorTickColorDark: 0x007F7F7F fontColorDark: 0xFF000000 diff --git a/macOS/ChineseTimeMac.entitlements b/macOS/Chinendar.entitlements similarity index 100% rename from macOS/ChineseTimeMac.entitlements rename to macOS/Chinendar.entitlements diff --git a/macOS/Layout.swift b/macOS/Layout.swift index 9c4a33a..bc4220b 100644 --- a/macOS/Layout.swift +++ b/macOS/Layout.swift @@ -1,8 +1,8 @@ // // Layout.swift -// ChineseTime +// Chinendar // -// Created by LEO Yoon-Tsaw on 9/23/21. +// Created by Leo Liu on 9/23/21. // import SwiftUI @@ -74,8 +74,8 @@ import Observation return encoded } - override func update(from values: [String: String]) { - super.update(from: values) + override func update(from values: [String: String], updateSize: Bool = true) { + super.update(from: values, updateSize: updateSize) if let name = values["textFont"] { textFont = NSFont(name: name, size: NSFont.systemFontSize) ?? textFont } diff --git a/macOS/Views/Setting.swift b/macOS/Views/Setting.swift index f388e56..6e372b9 100644 --- a/macOS/Views/Setting.swift +++ b/macOS/Views/Setting.swift @@ -1,6 +1,6 @@ // -// SwiftUIView.swift -// Chinese Time +// Setting.swift +// Chinendar // // Created by Leo Liu on 6/30/23. // @@ -11,10 +11,16 @@ import WidgetKit struct Setting: View { @Environment(\.watchLayout) var watchLayout @Environment(\.watchSetting) var watchSetting + @Environment(\.chineseCalendar) var chineseCalendar + @Environment(\.locationManager) var locationManager @State private var selection: WatchSetting.Selection? = .none @State private var columnVisibility = NavigationSplitViewVisibility.automatic @Environment(\.modelContext) private var modelContext + private var statusState: StatusState { + StatusState(locationManager: locationManager, watchLayout: watchLayout, watchSetting: watchSetting) + } + var body: some View { NavigationSplitView(columnVisibility: $columnVisibility) { List(selection: $selection) { @@ -69,9 +75,14 @@ struct Setting: View { } } .navigationSplitViewStyle(.balanced) - .onChange(of: selection) { _, _ in + .onChange(of: selection) { cleanColorPanel() } + .onChange(of: statusState) { + if let delegate = AppDelegate.instance { + delegate.updateStatusBar(dateText: delegate.statusBar(from: chineseCalendar, options: watchLayout)) + } + } .onAppear { selection = watchSetting.previousSelection ?? .datetime } @@ -88,47 +99,19 @@ struct Setting: View { func buildView(selection: WatchSetting.Selection) -> some View { let sel = switch selection { case .datetime: - Label { - Text("日時", comment: "Display time settings") - } icon: { - Image(systemName: "clock") - } + Label("日時", systemImage: "clock") case .location: - Label { - Text("經緯度", comment: "Geo Location section") - } icon: { - Image(systemName: "location") - } + Label("經緯度", systemImage: "location") case .ringColor: - Label { - Text("輪色", comment: "Rings Color Setting") - } icon: { - Image(systemName: "pencil.and.outline") - } + Label("輪色", systemImage: "pencil.and.outline") case .markColor: - Label { - Text("色塊", comment: "Mark Color settings") - } icon: { - Image(systemName: "wand.and.stars") - } + Label("色塊", systemImage: "wand.and.stars") case .layout: - Label { - Text("佈局", comment: "Layout settings section") - } icon: { - Image(systemName: "square.resize") - } + Label("佈局", systemImage: "square.resize") case .themes: - Label { - Text("主題庫", comment: "manage saved themes") - } icon: { - Image(systemName: "archivebox") - } + Label("主題庫", systemImage: "archivebox") case .documentation: - Label { - Text("註釋", comment: "Documentation View") - } icon: { - Image(systemName: "doc.questionmark") - } + Label("註釋", systemImage: "doc.questionmark") } return sel } diff --git a/macOS/Views/WatchFace.swift b/macOS/Views/WatchFace.swift index a7df342..2f17841 100644 --- a/macOS/Views/WatchFace.swift +++ b/macOS/Views/WatchFace.swift @@ -1,6 +1,6 @@ // // WatchFace.swift -// Chinese Time mac +// Chinendar // // Created by Leo Liu on 7/1/23. // diff --git a/macOS/Views/Welcome.swift b/macOS/Views/Welcome.swift index f49624e..2035662 100644 --- a/macOS/Views/Welcome.swift +++ b/macOS/Views/Welcome.swift @@ -1,6 +1,6 @@ // // Welcome.swift -// Chinese Time mac +// Chinendar // // Created by Leo Liu on 8/4/23. // @@ -15,7 +15,7 @@ struct Welcome: View { Image(.image) .resizable() .frame(width: 120, height: 120) - Text("華曆", comment: "Chinese Time") + Text("華曆", comment: "Chinendar") .font(.largeTitle.bold()) HStack { Image(systemName: "menubar.rectangle") diff --git a/macOS/layout.txt b/macOS/layout.txt index ebad847..23f0916 100644 --- a/macOS/layout.txt +++ b/macOS/layout.txt @@ -6,6 +6,7 @@ firstRing: locations: 0.0, 0.25, 0.5, 0.75, 0.875; colors: 0xFF95517A, 0xFF9060B secondRing: locations: 0.0, 0.25, 0.5, 0.75; colors: 0xFF8658C5, 0xFF6E68E7, 0xFF5283EF, 0xFF6E68E7; loop: true thirdRing: locations: 0.0, 0.25, 0.5, 0.75; colors: 0xFF8D5263, 0xFF9252B0, 0xFF7556EF, 0xFF9252B0; loop: true innerColor: 0xFFFFFFFF +backColor: 0xFFFFFFFF majorTickColor: 0x00000000 majorTickAlpha: 0.0 minorTickColor: 0x00000000 @@ -15,6 +16,7 @@ centerFontColor: locations: 0.25, 0.75; colors: 0xFFA36497, 0xFFC28F8A; loop: fa evenSolarTermTickColor: 0xFF000000 oddSolarTermTickColor: 0xFF555555 innerColorDark: 0xFF101010 +backColorDark: 0xFF303030 majorTickColorDark: 0x00000000 minorTickColorDark: 0x007F7F7F fontColorDark: 0xFF000000 diff --git a/macOS/macApp.swift b/macOS/macApp.swift index d465d61..2192fd0 100644 --- a/macOS/macApp.swift +++ b/macOS/macApp.swift @@ -1,15 +1,15 @@ // -// AppDelegate.swift -// ChineseTime +// macApp.swift +// Chinendar // -// Created by LEO Yoon-Tsaw on 9/19/21. +// Created by Leo Liu on 9/19/21. // import SwiftUI import WidgetKit @main -struct ChineseTimeMacApp: App { +struct Chinendar: App { @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { diff --git a/macOS/watchPanel.swift b/macOS/watchPanel.swift index b102570..416fc74 100644 --- a/macOS/watchPanel.swift +++ b/macOS/watchPanel.swift @@ -1,6 +1,6 @@ // -// watchPanel.swift -// Chinese Time mac +// WatchPanel.swift +// Chinendar // // Created by Leo Liu on 8/1/23. //