Переглянути джерело

Merge branch 'develop_PDFReaderProNew_v4.7.0_AppStroe' of git.kdan.cc:Mac_PDF/PDF_Office into develop_PDFReaderProNew_v4.7.0_AppStroe

tangchao 5 днів тому
батько
коміт
16949d0780
16 змінених файлів з 491 додано та 39 видалено
  1. 17 12
      PDF Office/PDF Master/Class/Purchase/Appstore/KMPurchaseCompareWindowController.m
  2. 1 1
      PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationMessageViewController.m
  3. 5 5
      PDF Office/PDF Master/Class/Purchase/IAPProductsManager.m
  4. 22 0
      PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/giftYearAIImage.imageset/Contents.json
  5. 117 0
      PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/giftYearAIImage.imageset/tab 1.pdf
  6. 117 0
      PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/giftYearAIImage.imageset/tab.pdf
  7. 1 1
      PDF Office/PDF Master/MemberCenter/Assets/en.lproj/MemberCenterLocalizable.strings
  8. 1 1
      PDF Office/PDF Master/MemberCenter/Assets/zh-Hans.lproj/MemberCenterLocalizable.strings
  9. 1 1
      PDF Office/PDF Master/MemberCenter/Assets/zh-Hant.lproj/MemberCenterLocalizable.strings
  10. 5 1
      PDF Office/PDF Master/MemberCenter/Model/KMMemberInfo.swift
  11. 9 4
      PDF Office/PDF Master/MemberCenter/ViewModel/KMUserInfoVCModel.swift
  12. 1 1
      PDF Office/PDF Master/MemberCenter/WindowsController/KMCloseApplyWC.swift
  13. 15 6
      PDF Office/PDF Master/MemberCenter/WindowsController/KMFreeGetAIWC.swift
  14. 0 1
      PDF Office/PDF Master/MemberCenter/WindowsController/KMMemberPromptWC.swift
  15. 89 4
      PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.swift
  16. 90 1
      PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.xib

+ 17 - 12
PDF Office/PDF Master/Class/Purchase/Appstore/KMPurchaseCompareWindowController.m

@@ -1110,21 +1110,26 @@ static NSString *const KMPurchaseCompareCellIdentifier       = @"KMPurchaseCompa
 #pragma mark - Button Actions
 
 - (IBAction)buttonItemClicked_Subscribe:(id)sender {
-    if (self.isPurchaseSwitch) {
-        [[IAPProductsManager defaultManager] makeSubProduct:[IAPProductsManager defaultManager].allAccessPack12months_lite discount:[self isCancelAutoRenew]];
-        
+    if KMMemberInfo.shared.isLogin && KMMemberInfo.shared.validFlag == "5" {
+        KMMemberPromptWC.shared.showWindow(nil)
+        KMMemberPromptWC.shared.tipType = .signouting
     } else {
-        [[IAPProductsManager defaultManager] makeSubProduct:[IAPProductsManager defaultManager].allAccessPackNew6months_lite discount:[self isCancelAutoRenew]];
-    }
-    [self addWaingView:self.window.contentView];
-    [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_Upgrade_6Mon"}];
-
-    if ([self isShowSale]) {
-        self.kEventTag = 1;
         if (self.isPurchaseSwitch) {
-            [self trackEvent_freeWithEventName:@"PromotionalOffer" params:@{@"PUW_Btn" : @"PUW_7OffUpgrade_12Mon"} platform:KMAnalyticsPlatformAppCenter];
+            [[IAPProductsManager defaultManager] makeSubProduct:[IAPProductsManager defaultManager].allAccessPack12months_lite discount:[self isCancelAutoRenew]];
+            
         } else {
-            [self trackEvent_freeWithEventName:@"PromotionalOffer" params:@{@"PUW_Btn" : @"PUW_7OffUpgrade_6Mon"} platform:KMAnalyticsPlatformAppCenter];
+            [[IAPProductsManager defaultManager] makeSubProduct:[IAPProductsManager defaultManager].allAccessPackNew6months_lite discount:[self isCancelAutoRenew]];
+        }
+        [self addWaingView:self.window.contentView];
+        [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_Upgrade_6Mon"}];
+        
+        if ([self isShowSale]) {
+            self.kEventTag = 1;
+            if (self.isPurchaseSwitch) {
+                [self trackEvent_freeWithEventName:@"PromotionalOffer" params:@{@"PUW_Btn" : @"PUW_7OffUpgrade_12Mon"} platform:KMAnalyticsPlatformAppCenter];
+            } else {
+                [self trackEvent_freeWithEventName:@"PromotionalOffer" params:@{@"PUW_Btn" : @"PUW_7OffUpgrade_6Mon"} platform:KMAnalyticsPlatformAppCenter];
+            }
         }
     }
 }

+ 1 - 1
PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationMessageViewController.m

@@ -360,7 +360,7 @@ NSPopoverDelegate>
                 self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Upgrade", nil)];
             } else {
                 if(IAPProductsManager.defaultManager.fourDevicesAllAccessPackNew12months_lite.isTrialPeriod == YES)  { //是否有试用
-                    self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Upgrade", nil)];
+                    self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedStringFromTable(@"Buy Now",@"MemberCenterLocalizable", nil)];
                 } else {
                     self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Free Trial", nil)];
                 }

+ 5 - 5
PDF Office/PDF Master/Class/Purchase/IAPProductsManager.m

@@ -368,12 +368,12 @@ NSString * const KMMemberInfoChangeNotification = @"KMMemberInfoChangeNotificati
         
         self.DMGPDFReaderProAdcanced = [[[IAPProduct alloc] init] autorelease];
         self.DMGPDFReaderProAdcanced.priceNumber = @(99.99);
-        self.DMGPDFReaderProAdcanced.offersPriceNumber = @(79.99);
+        self.DMGPDFReaderProAdcanced.offersPriceNumber = @(59.99);
         self.DMGPDFReaderProAdcanced.isOffers = isOffers;
 
         self.DMGPDFReaderProPermanent = [[[IAPProduct alloc] init] autorelease];
         self.DMGPDFReaderProPermanent.priceNumber = @(119.99);
-        self.DMGPDFReaderProPermanent.offersPriceNumber = @(99.99);
+        self.DMGPDFReaderProPermanent.offersPriceNumber = @(83.99);
         self.DMGPDFReaderProPermanent.isOffers = isOffers;
 
         self.DMGPDFReaderProAI_Annual = [[[IAPProduct alloc] init] autorelease];
@@ -400,14 +400,14 @@ NSString * const KMMemberInfoChangeNotification = @"KMMemberInfoChangeNotificati
         self.fourDevicesAllAccessPackNew6Months_lite = [[[IAPProduct alloc] init] autorelease];
         self.fourDevicesAllAccessPackNew6Months_lite.productIdentifier = KM4DevicesAllAccessPackNew6Months_Free;
         self.fourDevicesAllAccessPackNew6Months_lite.priceNumber = @(49.99);
-        self.fourDevicesAllAccessPackNew6Months_lite.offersPriceNumber = @(39.99);
+        self.fourDevicesAllAccessPackNew6Months_lite.offersPriceNumber = @(49.99);
         self.fourDevicesAllAccessPackNew6Months_lite.isOffers = isOffers;
         self.fourDevicesAllAccessPackNew6Months_lite.mouthNumber = 6;
         
         self.fourDevicesAllAccessPackNew12months_lite = [[[IAPProduct alloc] init] autorelease];
         self.fourDevicesAllAccessPackNew12months_lite.productIdentifier = KM4DevicesAllAccessPack12Months_Free;
         self.fourDevicesAllAccessPackNew12months_lite.priceNumber = @(99.99);
-        self.fourDevicesAllAccessPackNew12months_lite.offersPriceNumber = @(79.99);
+        self.fourDevicesAllAccessPackNew12months_lite.offersPriceNumber = @(59.99);
         self.fourDevicesAllAccessPackNew12months_lite.isOffers = isOffers;
         self.fourDevicesAllAccessPackNew12months_lite.mouthNumber = 12;
         
@@ -447,7 +447,7 @@ NSString * const KMMemberInfoChangeNotification = @"KMMemberInfoChangeNotificati
         self.allAccessPackNew6months_lite = [[[IAPProduct alloc] init] autorelease];
         self.allAccessPackNew6months_lite.productIdentifier = KMNewMonthLicenseProductIdentifier_Free;
         self.allAccessPackNew6months_lite.priceNumber = @(39.99);
-        self.allAccessPackNew6months_lite.offersPriceNumber = @(29.99);
+        self.allAccessPackNew6months_lite.offersPriceNumber = @(39.99);
         self.allAccessPackNew6months_lite.isOffers = isOffers;
         self.allAccessPackNew6months_lite.mouthNumber = 6;
         

+ 22 - 0
PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/giftYearAIImage.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "tab.pdf",
+      "idiom" : "universal"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "filename" : "tab 1.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 117 - 0
PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/giftYearAIImage.imageset/tab 1.pdf

@@ -0,0 +1,117 @@
+%PDF-1.7
+
+1 0 obj
+  << /Length 2 0 R
+     /Range [ 0.000000 1.000000 0.000000 1.000000 0.000000 1.000000 ]
+     /Domain [ 0.000000 1.000000 ]
+     /FunctionType 4
+  >>
+stream
+{  0.316667 exch 0.576160 exch 1.000000 exch dup 0.000000 gt { exch pop exch pop exch pop dup 0.000000 sub 0.548911 mul 0.316667 add exch dup 0.000000 sub -0.271994 mul 0.576160 add exch dup 0.000000 sub 0.000000 mul 1.000000 add exch } if dup 1.000000 gt { exch pop exch pop exch pop 0.865578 exch 0.304167 exch 1.000000 exch } if pop }
+endstream
+endobj
+
+2 0 obj
+  337
+endobj
+
+3 0 obj
+  << /Pattern << /P1 << /Matrix [ 66.105583 -54.584641 54.584641 66.105583 -59.690598 -35.889763 ]
+                        /Shading << /Coords [ 0.000000 0.000000 1.000000 0.000000 ]
+                                    /ColorSpace /DeviceRGB
+                                    /Function 1 0 R
+                                    /Domain [ 0.000000 1.000000 ]
+                                    /ShadingType 2
+                                    /Extend [ true true ]
+                                 >>
+                        /PatternType 2
+                        /Type /Pattern
+                     >> >> >>
+endobj
+
+4 0 obj
+  << /Length 5 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
+/Pattern cs
+/P1 scn
+12.207576 24.818726 m
+12.958493 25.574802 13.980059 26.000000 15.045671 26.000000 c
+117.619049 26.000000 l
+119.828194 26.000000 121.619049 24.209139 121.619049 22.000000 c
+121.619049 4.000000 l
+121.619049 1.790861 119.828186 0.000000 117.619049 0.000000 c
+14.960994 0.000000 l
+13.945702 0.000000 12.968399 0.386084 12.227230 1.079977 c
+3.007484 9.711626 l
+1.361047 11.253042 1.313832 13.850132 2.903155 15.450375 c
+12.207576 24.818726 l
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 9.000000 11.000000 cm
+1.000000 1.000000 1.000000 scn
+4.000000 2.000000 m
+4.000000 0.895430 3.104569 -0.000000 2.000000 -0.000000 c
+0.895431 -0.000000 0.000000 0.895430 0.000000 2.000000 c
+0.000000 3.104569 0.895431 4.000000 2.000000 4.000000 c
+3.104569 4.000000 4.000000 3.104569 4.000000 2.000000 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+5 0 obj
+  900
+endobj
+
+6 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 122.000000 26.000000 ]
+     /Resources 3 0 R
+     /Contents 4 0 R
+     /Parent 7 0 R
+  >>
+endobj
+
+7 0 obj
+  << /Kids [ 6 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+8 0 obj
+  << /Pages 7 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 9
+0000000000 65535 f
+0000000010 00000 n
+0000000531 00000 n
+0000000553 00000 n
+0000001182 00000 n
+0000002138 00000 n
+0000002160 00000 n
+0000002334 00000 n
+0000002408 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 8 0 R
+   /Size 9
+>>
+startxref
+2467
+%%EOF

+ 117 - 0
PDF Office/PDF Master/MemberCenter/Assets/MemberCenter.xcassets/Image/giftYearAIImage.imageset/tab.pdf

@@ -0,0 +1,117 @@
+%PDF-1.7
+
+1 0 obj
+  << /Length 2 0 R
+     /Range [ 0.000000 1.000000 0.000000 1.000000 0.000000 1.000000 ]
+     /Domain [ 0.000000 1.000000 ]
+     /FunctionType 4
+  >>
+stream
+{  0.316667 exch 0.576160 exch 1.000000 exch dup 0.000000 gt { exch pop exch pop exch pop dup 0.000000 sub 0.548911 mul 0.316667 add exch dup 0.000000 sub -0.271994 mul 0.576160 add exch dup 0.000000 sub 0.000000 mul 1.000000 add exch } if dup 1.000000 gt { exch pop exch pop exch pop 0.865578 exch 0.304167 exch 1.000000 exch } if pop }
+endstream
+endobj
+
+2 0 obj
+  337
+endobj
+
+3 0 obj
+  << /Pattern << /P1 << /Matrix [ 66.105583 -54.584641 54.584641 66.105583 -59.690598 -35.889763 ]
+                        /Shading << /Coords [ 0.000000 0.000000 1.000000 0.000000 ]
+                                    /ColorSpace /DeviceRGB
+                                    /Function 1 0 R
+                                    /Domain [ 0.000000 1.000000 ]
+                                    /ShadingType 2
+                                    /Extend [ true true ]
+                                 >>
+                        /PatternType 2
+                        /Type /Pattern
+                     >> >> >>
+endobj
+
+4 0 obj
+  << /Length 5 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
+/Pattern cs
+/P1 scn
+12.207576 24.818726 m
+12.958493 25.574802 13.980059 26.000000 15.045671 26.000000 c
+117.619049 26.000000 l
+119.828194 26.000000 121.619049 24.209139 121.619049 22.000000 c
+121.619049 4.000000 l
+121.619049 1.790861 119.828186 0.000000 117.619049 0.000000 c
+14.960994 0.000000 l
+13.945702 0.000000 12.968399 0.386084 12.227230 1.079977 c
+3.007484 9.711626 l
+1.361047 11.253042 1.313832 13.850132 2.903155 15.450375 c
+12.207576 24.818726 l
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 9.000000 11.000000 cm
+1.000000 1.000000 1.000000 scn
+4.000000 2.000000 m
+4.000000 0.895430 3.104569 -0.000000 2.000000 -0.000000 c
+0.895431 -0.000000 0.000000 0.895430 0.000000 2.000000 c
+0.000000 3.104569 0.895431 4.000000 2.000000 4.000000 c
+3.104569 4.000000 4.000000 3.104569 4.000000 2.000000 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+5 0 obj
+  900
+endobj
+
+6 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 122.000000 26.000000 ]
+     /Resources 3 0 R
+     /Contents 4 0 R
+     /Parent 7 0 R
+  >>
+endobj
+
+7 0 obj
+  << /Kids [ 6 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+8 0 obj
+  << /Pages 7 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 9
+0000000000 65535 f
+0000000010 00000 n
+0000000531 00000 n
+0000000553 00000 n
+0000001182 00000 n
+0000002138 00000 n
+0000002160 00000 n
+0000002334 00000 n
+0000002408 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 8 0 R
+   /Size 9
+>>
+startxref
+2467
+%%EOF

Різницю між файлами не показано, бо вона завелика
+ 1 - 1
PDF Office/PDF Master/MemberCenter/Assets/en.lproj/MemberCenterLocalizable.strings


Різницю між файлами не показано, бо вона завелика
+ 1 - 1
PDF Office/PDF Master/MemberCenter/Assets/zh-Hans.lproj/MemberCenterLocalizable.strings


Різницю між файлами не показано, бо вона завелика
+ 1 - 1
PDF Office/PDF Master/MemberCenter/Assets/zh-Hant.lproj/MemberCenterLocalizable.strings


+ 5 - 1
PDF Office/PDF Master/MemberCenter/Model/KMMemberInfo.swift

@@ -981,7 +981,11 @@ import Cocoa
         // 无旧订阅、买断
         if userScenarioType == .lite_type1 {
             // 试用比较表
-            KMProductCompareWC.shared.orientationType = .trial
+            if(IAPProductsManager.default().fourDevicesAllAccessPackNew12months_lite.isTrialPeriod == true)  { //是否有试用
+                KMProductCompareWC.shared.orientationType = .lite_Base
+            } else {
+                KMProductCompareWC.shared.orientationType = .trial
+            }
             KMProductCompareWC.shared.showWindow(nil)
         } else if userScenarioType == .lite_type3 ||
                     userScenarioType == .lite_type7 {

+ 9 - 4
PDF Office/PDF Master/MemberCenter/ViewModel/KMUserInfoVCModel.swift

@@ -307,10 +307,15 @@ class KMUserInfoVCModel: ObservableObject {
      @abstract 购买全平台年订阅;
      */
     func buyFullPlatformSubscription(_ type: memberEquityType) -> Void {
-        if type == .advancedSixMonthPlan {
-            IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().fourDevicesAllAccessPackNew6Months_lite, discount: IAPProductsManager.default().isCancelAutoRenew())
-        } else if type == .advancedYearMonthPlan {
-            IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().fourDevicesAllAccessPackNew12months_lite, discount: IAPProductsManager.default().isCancelAutoRenew())
+        if KMMemberInfo.shared.isLogin && KMMemberInfo.shared.validFlag == "5" {
+            KMMemberPromptWC.shared.showWindow(nil)
+            KMMemberPromptWC.shared.tipType = .signouting
+        } else {
+            if type == .advancedSixMonthPlan {
+                IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().fourDevicesAllAccessPackNew6Months_lite, discount: IAPProductsManager.default().isCancelAutoRenew())
+            } else if type == .advancedYearMonthPlan {
+                IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().fourDevicesAllAccessPackNew12months_lite, discount: IAPProductsManager.default().isCancelAutoRenew())
+            }
         }
     }
     

+ 1 - 1
PDF Office/PDF Master/MemberCenter/WindowsController/KMCloseApplyWC.swift

@@ -45,7 +45,7 @@ class KMCloseApplyWC: NSWindowController {
         self.window?.title = NSLocalizedString("Remove Account", tableName: "MemberCenterLocalizable", comment: "")
 
         titleLabel.stringValue = NSLocalizedString("Account cancellation application has been submitted", tableName: "MemberCenterLocalizable", comment: "")
-        subTitleLabel.stringValue = String(format: NSLocalizedString("Your account will be automatically deleted in %@ days. Welcome to use PDF Reader Pro again!\nYou can log in with this account and choose to Undo Remove Account within %ld days, and continue to use. The benefits and product services you enjoy will be retained.", tableName: "MemberCenterLocalizable", comment: ""), logOffTime, logOffTime)
+        subTitleLabel.stringValue = String(format: NSLocalizedString("Your account will be automatically deleted in %@ days. Welcome to use PDF Reader Pro again!\nYou can log in with this account and choose to Undo Remove Account within %@ days, and continue to use. The benefits and product services you enjoy will be retained.", tableName: "MemberCenterLocalizable", comment: ""), logOffTime, logOffTime)
         
         yesButton.title = NSLocalizedString("Got it", tableName: "MemberCenterLocalizable", comment: "")
     }

+ 15 - 6
PDF Office/PDF Master/MemberCenter/WindowsController/KMFreeGetAIWC.swift

@@ -130,15 +130,24 @@ class KMFreeGetAIWC: NSWindowController {
             embeddedWC.window?.center()
 #endif
 #else
-            self.window?.showWaitingView()
-
-    // AppStore 免费版本
-            IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().aiAllAccessPack12month_lite, discount: IAPProductsManager.default().isCancelAutoRenew())
+            if KMMemberInfo.shared.isLogin && KMMemberInfo.shared.validFlag == "5" {
+                KMMemberPromptWC.shared.showWindow(nil)
+                KMMemberPromptWC.shared.tipType = .signouting
+            } else {
+                self.window?.showWaitingView()
+                // AppStore 免费版本
+                IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().aiAllAccessPack12month_lite, discount: IAPProductsManager.default().isCancelAutoRenew())
+            }
 #endif
 #else
     // AppStore 付费版
-            self.window?.showWaitingView()
-            IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().aiAllAccessPack12month_pro, discount: IAPProductsManager.default().isCancelAutoRenew())
+            if KMMemberInfo.shared.isLogin && KMMemberInfo.shared.validFlag == "5" {
+                KMMemberPromptWC.shared.showWindow(nil)
+                KMMemberPromptWC.shared.tipType = .signouting
+            } else {
+                self.window?.showWaitingView()
+                IAPProductsManager.default().makeSubProduct(IAPProductsManager.default().aiAllAccessPack12month_pro, discount: IAPProductsManager.default().isCancelAutoRenew())
+            }
 #endif
 
         }

+ 0 - 1
PDF Office/PDF Master/MemberCenter/WindowsController/KMMemberPromptWC.swift

@@ -81,7 +81,6 @@ class KMMemberPromptWC: NSWindowController {
         } else if tipType == .signouting {
             title = NSLocalizedString("Hint", tableName: "MemberCenterLocalizable", comment: "")
             subTitle = NSLocalizedString("You have already submitted an account removal request. Please Undo Remove Account before making a purchase.", tableName: "MemberCenterLocalizable", comment: "")
-            cance = NSLocalizedString("Cancel", tableName: "MemberCenterLocalizable", comment: "")
             yes = NSLocalizedString("Undo Remove Account", tableName: "MemberCenterLocalizable", comment: "")
         }
         titleLabel.stringValue = NSLocalizedString(title, tableName: "MemberCenterLocalizable", comment: "")

+ 89 - 4
PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.swift

@@ -128,6 +128,14 @@ class KMProductCompareWC: NSWindowController {
     @IBOutlet @objc weak var platformsView3: NSView!
     @IBOutlet @objc weak var platformsView4: NSView!
 
+    @IBOutlet @objc weak var giftAIImage1: NSImageView!
+    @IBOutlet @objc weak var giftAILabel1: NSTextField!
+    @IBOutlet @objc weak var giftAIImage2: NSImageView!
+    @IBOutlet @objc weak var giftAILabel2: NSTextField!
+    @IBOutlet @objc weak var giftAIImage3: NSImageView!
+    @IBOutlet @objc weak var giftAILabel3: NSTextField!
+    @IBOutlet @objc weak var giftAIImage4: NSImageView!
+    @IBOutlet @objc weak var giftAILabel4: NSTextField!
     
     private var model = KMProductModel.shared
     private var cancellables = Set<AnyCancellable>()
@@ -361,11 +369,16 @@ class KMProductCompareWC: NSWindowController {
         standardPlanPurchaseLbl.stringValue = NSLocalizedString("Subscribe", comment: "")
         if KMMemberInfo.shared.userScenarioType == .lite_type3 ||
             KMMemberInfo.shared.userScenarioType == .lite_type11 {
-            advancedPlanPurchaseLbl.stringValue = NSLocalizedString("Renew now",tableName: "MemberCenterLocalizable", comment: "")
+            advancedPlanPurchaseLbl.stringValue = NSLocalizedString("Renew now",tableName: "MemberCenterLocalizable", comment: "")
         } else {
             advancedPlanPurchaseLbl.stringValue = NSLocalizedString("Subscribe", comment: "")
         }
         permanentPurchaseLbl.stringValue = NSLocalizedString("Purchase", comment: "")
+        
+        giftAILabel1.stringValue = NSLocalizedString("1-Year AI Tools Giveaway",tableName: "MemberCenterLocalizable", comment: "")
+        giftAILabel2.stringValue = NSLocalizedString("1-Year AI Tools Giveaway",tableName: "MemberCenterLocalizable", comment: "")
+        giftAILabel3.stringValue = NSLocalizedString("1-Year AI Tools Giveaway",tableName: "MemberCenterLocalizable", comment: "")
+        giftAILabel4.stringValue = NSLocalizedString("1-Year AI Tools Giveaway",tableName: "MemberCenterLocalizable", comment: "")
 
 #if VERSION_FREE
 #if VERSION_DMG
@@ -414,9 +427,7 @@ class KMProductCompareWC: NSWindowController {
         }
         if(!isTrialPeriod &&
            KMMemberInfo.shared.canTrail) {
-            if(model.state == .trial) {
-                advancedPlanPurchaseLbl.stringValue = NSLocalizedString("Free Trial", comment: "")
-            }
+            advancedPlanPurchaseLbl.stringValue = NSLocalizedString("Free Trial", comment: "")
         }
 
     // AppStore 免费版本
@@ -444,6 +455,9 @@ class KMProductCompareWC: NSWindowController {
         }
 #endif
 #else
+        if IAPProductsManager.default().fourDevicesAllAccessPack12months_pro.isTrialPeriod == false && KMMemberInfo.shared.canTrail {
+            advancedPlanPurchaseLbl.stringValue = NSLocalizedString("Free Trial", comment: "")
+        }
     // AppStore 付费版
         if model.state == .pro_Base {
             if KMMemberInfo.shared.userScenarioType == .pro_type3 {
@@ -512,6 +526,15 @@ class KMProductCompareWC: NSWindowController {
             }
         }
         
+        giftAILabel1.textColor = NSColor(named: "FFFFFF") ?? NSColor.white
+        giftAILabel1.font = NSFont.SFProTextRegularFont(12)
+        giftAILabel2.textColor = NSColor(named: "FFFFFF") ?? NSColor.white
+        giftAILabel2.font = NSFont.SFProTextRegularFont(12)
+        giftAILabel3.textColor = NSColor(named: "FFFFFF") ?? NSColor.white
+        giftAILabel3.font = NSFont.SFProTextRegularFont(12)
+        giftAILabel4.textColor = NSColor(named: "FFFFFF") ?? NSColor.white
+        giftAILabel4.font = NSFont.SFProTextRegularFont(12)
+
         value1InfoTypeBox.fillColor = NSColor.clear
         value1InfoTypeBox.borderWidth = 0
         sixMouthProLabel.textColor = .white
@@ -547,6 +570,14 @@ class KMProductCompareWC: NSWindowController {
         topSelectBox2.isHidden = true
         topSelectBox3.isHidden = true
         topSelectBox4.isHidden = true
+        giftAIImage1.isHidden = true
+        giftAILabel1.isHidden = true
+        giftAIImage2.isHidden = true
+        giftAILabel2.isHidden = true
+        giftAIImage3.isHidden = true
+        giftAILabel3.isHidden = true
+        giftAIImage4.isHidden = true
+        giftAILabel4.isHidden = true
 
         freeInfoLabel.font = NSFont.UbuntuMediumFontWithSize(14)
         standardPlanInfoLabel.font = NSFont.UbuntuMediumFontWithSize(14)
@@ -589,6 +620,10 @@ class KMProductCompareWC: NSWindowController {
             topsubBox4.contentView = permanentInfoView
             backgroundImage1.isHidden = true
             topSelectBox3.isHidden = false
+            if KMMemberInfo.shared.vip_levels == "1" {
+                giftAIImage3.isHidden = false
+                giftAILabel3.isHidden = false
+            }
             topsubBoxWidth1.constant = 149.5
             topsubBoxWidth2.constant = 149.5
             topsubBoxWidth3.constant = 149.5
@@ -601,6 +636,10 @@ class KMProductCompareWC: NSWindowController {
             topsubBox4.isHidden = true
             topsubBox1.contentView = advancedPlanInfoView
             topSelectBox1.isHidden = false
+            if KMMemberInfo.shared.vip_levels == "1" {
+                giftAIImage1.isHidden = false
+                giftAILabel1.isHidden = false
+            }
             topsubBoxWidth1.constant = 320.0
         } else if model.state == .dmg_Upgrades2 {
             contentWidth = 689.0
@@ -610,6 +649,10 @@ class KMProductCompareWC: NSWindowController {
             topsubBox4.isHidden = true
             topsubBox1.contentView = advancedPlanInfoView
             topSelectBox1.isHidden = false
+            if KMMemberInfo.shared.vip_levels == "1" {
+                giftAIImage1.isHidden = false
+                giftAILabel1.isHidden = false
+            }
             topsubBoxWidth1.constant = 320.0
         } else if model.state == .lite_Base {
             contentWidth = 970.0
@@ -619,6 +662,10 @@ class KMProductCompareWC: NSWindowController {
             topsubBox2.contentView = value1InfoView
             topsubBox3.contentView = permanentInfoView
             topSelectBox2.isHidden = false
+            if KMMemberInfo.shared.vip_levels == "1" {
+                giftAIImage2.isHidden = false
+                giftAILabel2.isHidden = false
+            }
             topsubBoxWidth1.constant = 179.0
             topsubBoxWidth2.constant = 240.0
             topsubBoxWidth3.constant = 179.0
@@ -630,6 +677,10 @@ class KMProductCompareWC: NSWindowController {
             topsubBox4.isHidden = true
             topsubBox1.contentView = advancedPlanInfoView
             topSelectBox1.isHidden = false
+            if KMMemberInfo.shared.vip_levels == "1" {
+                giftAIImage1.isHidden = false
+                giftAILabel1.isHidden = false
+            }
             topsubBoxWidth1.constant = 320.0
         } else if model.state == .pro_Base {
             contentWidth = 970.0
@@ -640,6 +691,10 @@ class KMProductCompareWC: NSWindowController {
             topsubBox2.contentView = permanentInfoView
             backgroundImage1.isHidden = true
             topSelectBox1.isHidden = false
+            if KMMemberInfo.shared.vip_levels == "1" {
+                giftAIImage1.isHidden = false
+                giftAILabel1.isHidden = false
+            }
             topsubBoxWidth1.constant = 299.0
             topsubBoxWidth2.constant = 299.0
         } else if model.state == .pro_Advanced {
@@ -650,6 +705,10 @@ class KMProductCompareWC: NSWindowController {
             topsubBox4.isHidden = true
             topsubBox1.contentView = advancedPlanInfoView
             topSelectBox1.isHidden = false
+            if KMMemberInfo.shared.vip_levels == "1" {
+                giftAIImage1.isHidden = false
+                giftAILabel1.isHidden = false
+            }
             topsubBoxWidth1.constant = 320.0
         } else {
             // model.state == .trial
@@ -661,6 +720,10 @@ class KMProductCompareWC: NSWindowController {
             topsubBox2.contentView = advancedPlanInfoView
             backgroundImage1.isHidden = true
             topSelectBox2.isHidden = false
+            if KMMemberInfo.shared.vip_levels == "1" {
+                giftAIImage2.isHidden = false
+                giftAILabel2.isHidden = false
+            }
             topsubBoxWidth1.constant = 179.0
             topsubBoxWidth2.constant = 240.0
         }
@@ -941,6 +1004,26 @@ class KMProductCompareWC: NSWindowController {
 #endif
 #else
     // AppStore 付费版
+//        value1PurchaseBtnLbl.stringValue = NSLocalizedString("Subscribe", comment: "")
+        let fourDevicesAllAccessPack12months_pro = IAPProductsManager.default().fourDevicesAllAccessPack12months_pro
+        let standardAddDevicesAllAccessPack12months_pro = IAPProductsManager.default().standardAddDevicesAllAccessPack12months_pro
+        let advancedAddDevicesAllAccessPack12months_pro = IAPProductsManager.default().advancedAddDevicesAllAccessPack12months_pro
+        let advancedAdd2DevicesAllAccessPack12months_pro = IAPProductsManager.default().advancedAdd2DevicesAllAccessPack12months_pro
+//        let pdfToOfficePackPermanent_pro = IAPProductsManager.default().pdfToOfficePackPermanent_pro
+        let isTrialPeriod_year = fourDevicesAllAccessPack12months_pro?.isTrialPeriod ?? false
+        let isTrialPeriod_standard = standardAddDevicesAllAccessPack12months_pro?.isTrialPeriod ?? false
+        let isTrialPeriod_advanced1 = advancedAddDevicesAllAccessPack12months_pro?.isTrialPeriod ?? false
+        let isTrialPeriod_advanced2 = advancedAdd2DevicesAllAccessPack12months_pro?.isTrialPeriod ?? false
+        let isSubscribed_year = fourDevicesAllAccessPack12months_pro?.isSubscribed ?? false
+        let isSubscribed_standard = standardAddDevicesAllAccessPack12months_pro?.isSubscribed ?? false
+        let isSubscribed_advanced1 = advancedAddDevicesAllAccessPack12months_pro?.isSubscribed ?? false
+        let isSubscribed_advanced2 = advancedAdd2DevicesAllAccessPack12months_pro?.isSubscribed ?? false
+        let introductoryPrice_year = fourDevicesAllAccessPack12months_pro?.product?.introductoryPrice
+        let introductoryPrice_standard = standardAddDevicesAllAccessPack12months_pro?.product?.introductoryPrice
+        let introductoryPrice_advanced1 = advancedAddDevicesAllAccessPack12months_pro?.product?.introductoryPrice
+        let introductoryPrice_advanced2 = advancedAdd2DevicesAllAccessPack12months_pro?.product?.introductoryPrice
+        
+        
 #endif
     }
     
@@ -1473,6 +1556,8 @@ extension KMProductCompareWC: NSTableViewDelegate, NSTableViewDataSource {
             cellView.selectBox1.isHidden = false
             cellView.viewWidth1.constant = 299.0
             cellView.cellView1.isHidden = false
+            cellView.cellView2.isHidden = false
+            cellView.viewWidth2.constant = 299.0
         } else if model.state == .pro_Advanced {
             cellView.selectBox1.isHidden = false
             cellView.viewWidth1.constant = 320.0

+ 90 - 1
PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.xib

@@ -29,6 +29,14 @@
                 <outlet property="discountYearly" destination="3mf-Iq-URd" id="Ney-Zx-qLE"/>
                 <outlet property="freeInfoLabel" destination="DVN-Eb-hSv" id="1P9-x4-lgR"/>
                 <outlet property="freeInfoView" destination="ZLd-Sg-G8w" id="138-nW-ZY6"/>
+                <outlet property="giftAIImage1" destination="YKE-fi-1tA" id="v9n-4p-Js9"/>
+                <outlet property="giftAIImage2" destination="R8I-NQ-Qxa" id="FGA-cg-oWa"/>
+                <outlet property="giftAIImage3" destination="zyK-EL-Zsm" id="nRW-ga-HbT"/>
+                <outlet property="giftAIImage4" destination="DOg-ny-vRF" id="UDy-1D-EWz"/>
+                <outlet property="giftAILabel1" destination="umU-ZL-ZzR" id="M6A-p6-51d"/>
+                <outlet property="giftAILabel2" destination="WAw-xL-ges" id="6dy-OL-aDJ"/>
+                <outlet property="giftAILabel3" destination="owb-KD-fFj" id="86p-ZC-UdU"/>
+                <outlet property="giftAILabel4" destination="GAi-Em-6J2" id="xBd-jf-8yH"/>
                 <outlet property="labelbox" destination="eYZ-KU-1XY" id="p1E-Z6-bbD"/>
                 <outlet property="oneYearProLabel" destination="rzf-vX-hjW" id="CpJ-P7-gaZ"/>
                 <outlet property="permanentInfoLabel" destination="snj-Zj-OvD" id="dIT-u2-eQT"/>
@@ -102,7 +110,7 @@
         <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="documentWindow" titlebarAppearsTransparent="YES" id="7jy-UC-R98">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
             <rect key="contentRect" x="77" y="40" width="970" height="660"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1800" height="1125"/>
             <view key="contentView" wantsLayer="YES" misplaced="YES" id="BHT-Ss-56B">
                 <rect key="frame" x="0.0" y="0.0" width="970" height="660"/>
                 <autoresizingMask key="autoresizingMask"/>
@@ -1113,6 +1121,21 @@ https://www.pdfreaderpro.com/privacy-policy</mutableString>
                     </view>
                     <color key="borderColor" red="1" green="0.36862745099999999" blue="0.17254901959999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                 </box>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="YKE-fi-1tA">
+                    <rect key="frame" x="29" y="178" width="122" height="26"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="26" id="0dm-Ug-jVw"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="giftYearAIImage" id="veV-U5-rsv"/>
+                </imageView>
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="umU-ZL-ZzR">
+                    <rect key="frame" x="48" y="183" width="88" height="16"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Label" id="f8v-u5-61F">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
                 <box boxType="custom" borderWidth="0.0" cornerRadius="12" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="vWg-fp-y8C">
                     <rect key="frame" x="144" y="0.0" width="300" height="194"/>
                     <view key="contentView" id="Ejr-hQ-Eb7">
@@ -1131,6 +1154,21 @@ https://www.pdfreaderpro.com/privacy-policy</mutableString>
                     </view>
                     <color key="borderColor" red="1" green="0.36862745099999999" blue="0.17254901959999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                 </box>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="R8I-NQ-Qxa">
+                    <rect key="frame" x="329" y="178" width="122" height="26"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="26" id="a4G-0t-Q7l"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="giftYearAIImage" id="nGz-gc-OzE"/>
+                </imageView>
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WAw-xL-ges">
+                    <rect key="frame" x="348" y="183" width="88" height="16"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Label" id="4nZ-AF-coc">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
                 <box boxType="custom" borderWidth="0.0" cornerRadius="12" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="zIJ-y3-LlP">
                     <rect key="frame" x="444" y="0.0" width="154" height="194"/>
                     <view key="contentView" id="dE0-cI-QcR">
@@ -1149,6 +1187,21 @@ https://www.pdfreaderpro.com/privacy-policy</mutableString>
                     </view>
                     <color key="borderColor" red="1" green="0.36862745099999999" blue="0.17254901959999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                 </box>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="zyK-EL-Zsm">
+                    <rect key="frame" x="483" y="178" width="122" height="26"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="26" id="Cea-mz-mSP"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="giftYearAIImage" id="DtY-4W-nJD"/>
+                </imageView>
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="owb-KD-fFj">
+                    <rect key="frame" x="502" y="183" width="88" height="16"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Label" id="MkA-gx-Pc6">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
                 <box boxType="custom" borderWidth="0.0" cornerRadius="12" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Qq2-ys-Kfy">
                     <rect key="frame" x="598" y="0.0" width="144" height="194"/>
                     <view key="contentView" id="d4Y-o0-LU2">
@@ -1167,35 +1220,70 @@ https://www.pdfreaderpro.com/privacy-policy</mutableString>
                     </view>
                     <color key="borderColor" red="1" green="0.36862745099999999" blue="0.17254901959999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                 </box>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="DOg-ny-vRF">
+                    <rect key="frame" x="627" y="178" width="122" height="26"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="26" id="3za-Zm-EKS"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="giftYearAIImage" id="wbh-vM-Cc5"/>
+                </imageView>
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GAi-Em-6J2">
+                    <rect key="frame" x="646" y="183" width="88" height="16"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Label" id="VUs-Hs-Tgr">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
             </subviews>
             <constraints>
+                <constraint firstItem="LHQ-au-Z59" firstAttribute="trailing" secondItem="zyK-EL-Zsm" secondAttribute="trailing" constant="-7" id="1CV-mb-cD5"/>
+                <constraint firstItem="WAw-xL-ges" firstAttribute="trailing" secondItem="R8I-NQ-Qxa" secondAttribute="trailing" constant="-17.5" id="1MB-h8-XWN"/>
                 <constraint firstItem="Qq2-ys-Kfy" firstAttribute="trailing" secondItem="fpi-Pf-NfD" secondAttribute="trailing" id="37c-ei-nKe"/>
                 <constraint firstItem="rtR-EN-GZe" firstAttribute="leading" secondItem="3eO-1v-ESh" secondAttribute="leading" id="3Sh-OV-Fcg"/>
                 <constraint firstAttribute="bottom" secondItem="TbI-cd-sd7" secondAttribute="bottom" constant="-10" id="5Kf-1s-q0v"/>
                 <constraint firstItem="zIJ-y3-LlP" firstAttribute="leading" secondItem="vWg-fp-y8C" secondAttribute="trailing" id="6oK-Ev-WT1"/>
                 <constraint firstAttribute="bottom" secondItem="eSr-Ep-bND" secondAttribute="bottom" constant="-10" id="82b-s7-JIM"/>
+                <constraint firstItem="WAw-xL-ges" firstAttribute="centerY" secondItem="R8I-NQ-Qxa" secondAttribute="centerY" id="8rp-d3-R2T"/>
+                <constraint firstItem="DOg-ny-vRF" firstAttribute="centerY" secondItem="GAi-Em-6J2" secondAttribute="centerY" id="9Yi-WC-oVO"/>
                 <constraint firstAttribute="bottom" secondItem="LHQ-au-Z59" secondAttribute="bottom" constant="-10" id="9rU-Zr-FNP"/>
                 <constraint firstAttribute="bottom" secondItem="rtR-EN-GZe" secondAttribute="bottom" id="A3n-Ux-Vej"/>
                 <constraint firstItem="vWg-fp-y8C" firstAttribute="top" secondItem="3eO-1v-ESh" secondAttribute="top" id="F0Z-DE-6NP"/>
                 <constraint firstAttribute="bottom" secondItem="zIJ-y3-LlP" secondAttribute="bottom" id="GqT-Yb-Baq"/>
+                <constraint firstItem="GAi-Em-6J2" firstAttribute="leading" secondItem="DOg-ny-vRF" secondAttribute="leading" constant="21" id="JJ0-0S-bZZ"/>
                 <constraint firstItem="eSr-Ep-bND" firstAttribute="leading" secondItem="vWg-fp-y8C" secondAttribute="leading" id="Jtz-8a-Xvr"/>
                 <constraint firstAttribute="bottom" secondItem="Qq2-ys-Kfy" secondAttribute="bottom" id="KfJ-gC-k2T"/>
+                <constraint firstItem="YKE-fi-1tA" firstAttribute="top" secondItem="TbI-cd-sd7" secondAttribute="top" constant="-10" id="LRk-QR-2aS"/>
                 <constraint firstItem="fpi-Pf-NfD" firstAttribute="top" secondItem="3eO-1v-ESh" secondAttribute="top" id="MT1-qg-p4B"/>
                 <constraint firstAttribute="bottom" secondItem="fpi-Pf-NfD" secondAttribute="bottom" constant="-10" id="Mkm-un-HZv"/>
+                <constraint firstItem="umU-ZL-ZzR" firstAttribute="leading" secondItem="YKE-fi-1tA" secondAttribute="leading" constant="21" id="NJC-GB-X49"/>
                 <constraint firstItem="zIJ-y3-LlP" firstAttribute="leading" secondItem="LHQ-au-Z59" secondAttribute="leading" id="OVh-rg-lza"/>
+                <constraint firstItem="owb-KD-fFj" firstAttribute="leading" secondItem="zyK-EL-Zsm" secondAttribute="leading" constant="21" id="PXd-ui-sb0"/>
+                <constraint firstItem="GAi-Em-6J2" firstAttribute="trailing" secondItem="DOg-ny-vRF" secondAttribute="trailing" constant="-17.5" id="R17-T7-rVe"/>
+                <constraint firstItem="LHQ-au-Z59" firstAttribute="top" secondItem="zyK-EL-Zsm" secondAttribute="top" constant="10" id="RRs-Dh-Qed"/>
                 <constraint firstItem="zIJ-y3-LlP" firstAttribute="top" secondItem="3eO-1v-ESh" secondAttribute="top" id="RaI-2h-tAF"/>
+                <constraint firstItem="R8I-NQ-Qxa" firstAttribute="trailing" secondItem="eSr-Ep-bND" secondAttribute="trailing" constant="7" id="RfB-dZ-AHx"/>
                 <constraint firstItem="Qq2-ys-Kfy" firstAttribute="leading" secondItem="zIJ-y3-LlP" secondAttribute="trailing" id="Sem-ne-Tja"/>
                 <constraint firstItem="rtR-EN-GZe" firstAttribute="top" secondItem="3eO-1v-ESh" secondAttribute="top" id="Us2-G3-50n"/>
+                <constraint firstItem="R8I-NQ-Qxa" firstAttribute="top" secondItem="eSr-Ep-bND" secondAttribute="top" constant="-10" id="VbH-kU-93f"/>
                 <constraint firstItem="LHQ-au-Z59" firstAttribute="top" secondItem="3eO-1v-ESh" secondAttribute="top" id="Vtl-Az-JnH"/>
+                <constraint firstItem="WAw-xL-ges" firstAttribute="leading" secondItem="R8I-NQ-Qxa" secondAttribute="leading" constant="21" id="Yv9-Q2-W7e"/>
                 <constraint firstAttribute="bottom" secondItem="vWg-fp-y8C" secondAttribute="bottom" id="Z3V-dr-rQX"/>
                 <constraint firstItem="TbI-cd-sd7" firstAttribute="leading" secondItem="3eO-1v-ESh" secondAttribute="leading" id="a9p-q5-1jV"/>
                 <constraint firstItem="vWg-fp-y8C" firstAttribute="leading" secondItem="TbI-cd-sd7" secondAttribute="trailing" id="ae4-HM-fS1"/>
                 <constraint firstItem="TbI-cd-sd7" firstAttribute="top" secondItem="3eO-1v-ESh" secondAttribute="top" id="ah8-Oq-ibA"/>
                 <constraint firstItem="Qq2-ys-Kfy" firstAttribute="leading" secondItem="fpi-Pf-NfD" secondAttribute="leading" id="bHj-e8-KYk"/>
+                <constraint firstItem="owb-KD-fFj" firstAttribute="trailing" secondItem="zyK-EL-Zsm" secondAttribute="trailing" constant="-17.5" id="cin-Gf-0tR"/>
+                <constraint firstItem="umU-ZL-ZzR" firstAttribute="trailing" secondItem="YKE-fi-1tA" secondAttribute="trailing" constant="-17.5" id="dls-PV-IzH"/>
+                <constraint firstItem="zyK-EL-Zsm" firstAttribute="centerY" secondItem="owb-KD-fFj" secondAttribute="centerY" id="is5-pD-PsU"/>
+                <constraint firstItem="fpi-Pf-NfD" firstAttribute="trailing" secondItem="DOg-ny-vRF" secondAttribute="trailing" constant="-7" id="kmQ-3u-d4X"/>
+                <constraint firstItem="fpi-Pf-NfD" firstAttribute="top" secondItem="DOg-ny-vRF" secondAttribute="top" constant="10" id="krE-03-UN6"/>
                 <constraint firstItem="eSr-Ep-bND" firstAttribute="trailing" secondItem="vWg-fp-y8C" secondAttribute="trailing" id="ldT-vt-7wA"/>
                 <constraint firstItem="vWg-fp-y8C" firstAttribute="leading" secondItem="rtR-EN-GZe" secondAttribute="trailing" id="ohS-zf-fO9"/>
+                <constraint firstItem="YKE-fi-1tA" firstAttribute="trailing" secondItem="TbI-cd-sd7" secondAttribute="trailing" constant="7" id="p4J-oz-n0I"/>
                 <constraint firstItem="Qq2-ys-Kfy" firstAttribute="top" secondItem="3eO-1v-ESh" secondAttribute="top" id="rBP-Gz-le1"/>
                 <constraint firstItem="zIJ-y3-LlP" firstAttribute="trailing" secondItem="LHQ-au-Z59" secondAttribute="trailing" id="vOt-uh-0yA"/>
+                <constraint firstItem="umU-ZL-ZzR" firstAttribute="centerY" secondItem="YKE-fi-1tA" secondAttribute="centerY" id="xBV-hX-q0U"/>
                 <constraint firstItem="eSr-Ep-bND" firstAttribute="top" secondItem="3eO-1v-ESh" secondAttribute="top" id="xg4-2n-ELz"/>
             </constraints>
             <point key="canvasLocation" x="666" y="479"/>
@@ -2032,6 +2120,7 @@ https://www.pdfreaderpro.com/privacy-policy</mutableString>
         <image name="KMImageNamePurchaseBuy" width="16" height="16"/>
         <image name="MacOSPlatformImage" width="20" height="20"/>
         <image name="WindowsPlatformImage" width="20" height="20"/>
+        <image name="giftYearAIImage" width="122" height="26"/>
         <image name="iOSPlatformImage" width="20" height="20"/>
         <namedColor name="KMColor_Status_Err">
             <color red="0.98000001907348633" green="0.11800000071525574" blue="0.36500000953674316" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>