diff --git a/APCAppCore/APCAppCore.xcodeproj/project.pbxproj b/APCAppCore/APCAppCore.xcodeproj/project.pbxproj index eef52084..5e0e33fa 100644 --- a/APCAppCore/APCAppCore.xcodeproj/project.pbxproj +++ b/APCAppCore/APCAppCore.xcodeproj/project.pbxproj @@ -86,6 +86,30 @@ 3651424E1AA78521008A5CFA /* APCDataArchiverAndUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3651424C1AA78521008A5CFA /* APCDataArchiverAndUploader.m */; }; 3654318D1A9A7BC200D66D97 /* APCMedTrackerInflatableItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 3654318B1A9A7BC200D66D97 /* APCMedTrackerInflatableItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3654318E1A9A7BC200D66D97 /* APCMedTrackerInflatableItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 3654318C1A9A7BC200D66D97 /* APCMedTrackerInflatableItem.m */; }; + 3663457F1B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.h in Headers */ = {isa = PBXBuildFile; fileRef = 3663457B1B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.h */; }; + 366345801B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.m in Sources */ = {isa = PBXBuildFile; fileRef = 3663457C1B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.m */; }; + 366345811B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.h in Headers */ = {isa = PBXBuildFile; fileRef = 3663457D1B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.h */; }; + 366345821B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.m in Sources */ = {isa = PBXBuildFile; fileRef = 3663457E1B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.m */; }; + 366345841B1F8597003CC0EF /* APCMappingModel4ToModel6.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 366345831B1F8597003CC0EF /* APCMappingModel4ToModel6.xcmappingmodel */; }; + 366345861B1F85B7003CC0EF /* MODEL_MIGRATION_README.txt in Resources */ = {isa = PBXBuildFile; fileRef = 366345851B1F85B7003CC0EF /* MODEL_MIGRATION_README.txt */; }; + 366345891B1F85EA003CC0EF /* APCPotentialScheduledTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 366345871B1F85EA003CC0EF /* APCPotentialScheduledTask.h */; }; + 3663458A1B1F85EA003CC0EF /* APCPotentialScheduledTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 366345881B1F85EA003CC0EF /* APCPotentialScheduledTask.m */; }; + 3663458D1B1F860A003CC0EF /* APCTaskGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 3663458B1B1F860A003CC0EF /* APCTaskGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3663458E1B1F860A003CC0EF /* APCTaskGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 3663458C1B1F860A003CC0EF /* APCTaskGroup.m */; }; + 366345911B1F8627003CC0EF /* NSArray+APCHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3663458F1B1F8627003CC0EF /* NSArray+APCHelper.h */; }; + 366345921B1F8627003CC0EF /* NSArray+APCHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 366345901B1F8627003CC0EF /* NSArray+APCHelper.m */; }; + 366345951B1F863A003CC0EF /* SBBSchedule+APCHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 366345931B1F863A003CC0EF /* SBBSchedule+APCHelper.h */; }; + 366345961B1F863A003CC0EF /* SBBSchedule+APCHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 366345941B1F863A003CC0EF /* SBBSchedule+APCHelper.m */; }; + 3663459D1B1F865B003CC0EF /* APCActivitiesDateState.h in Headers */ = {isa = PBXBuildFile; fileRef = 366345971B1F865B003CC0EF /* APCActivitiesDateState.h */; }; + 3663459E1B1F865B003CC0EF /* APCActivitiesDateState.m in Sources */ = {isa = PBXBuildFile; fileRef = 366345981B1F865B003CC0EF /* APCActivitiesDateState.m */; }; + 3663459F1B1F865B003CC0EF /* APCScheduleDebugPrinter.h in Headers */ = {isa = PBXBuildFile; fileRef = 366345991B1F865B003CC0EF /* APCScheduleDebugPrinter.h */; }; + 366345A01B1F865B003CC0EF /* APCScheduleDebugPrinter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3663459A1B1F865B003CC0EF /* APCScheduleDebugPrinter.m */; }; + 366345A11B1F865B003CC0EF /* APCScheduleIntervalEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 3663459B1B1F865B003CC0EF /* APCScheduleIntervalEnumerator.h */; }; + 366345A21B1F865B003CC0EF /* APCScheduleIntervalEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3663459C1B1F865B003CC0EF /* APCScheduleIntervalEnumerator.m */; }; + 366345A71B1F8666003CC0EF /* APCTaskGroupCacheEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 366345A31B1F8666003CC0EF /* APCTaskGroupCacheEntry.h */; }; + 366345A81B1F8666003CC0EF /* APCTaskGroupCacheEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 366345A41B1F8666003CC0EF /* APCTaskGroupCacheEntry.m */; }; + 366345A91B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 366345A51B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.h */; }; + 366345AA1B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 366345A61B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.m */; }; 36829A411A96B937000AA2AB /* APCMedTrackerPredefinedMedications.plist in Resources */ = {isa = PBXBuildFile; fileRef = 369E27E41A96B7A200D35DFA /* APCMedTrackerPredefinedMedications.plist */; }; 36829A421A96B937000AA2AB /* APCMedTrackerPredefinedPossibleDosages.plist in Resources */ = {isa = PBXBuildFile; fileRef = 369E27E51A96B7A200D35DFA /* APCMedTrackerPredefinedPossibleDosages.plist */; }; 36829A431A96B937000AA2AB /* APCMedTrackerPredefinedPrescriptionColors.plist in Resources */ = {isa = PBXBuildFile; fileRef = 369E27E61A96B7A200D35DFA /* APCMedTrackerPredefinedPrescriptionColors.plist */; }; @@ -95,6 +119,9 @@ 368BAFEA1A9AD91A00F04ABB /* APCMedTrackerDailyDosageRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 368BAFE81A9AD91A00F04ABB /* APCMedTrackerDailyDosageRecord.m */; }; 369B47551A853E8500777639 /* APCUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 369B47531A853E8500777639 /* APCUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; 369B47561A853E8500777639 /* APCUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 369B47541A853E8500777639 /* APCUtilities.m */; }; + 369C77931B1F9171007DD687 /* APCDataVerificationServerAccessControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 369C77921B1F9171007DD687 /* APCDataVerificationServerAccessControl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 369C77961B1FB317007DD687 /* APCActivitiesViewSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 369C77941B1FB317007DD687 /* APCActivitiesViewSection.h */; }; + 369C77971B1FB317007DD687 /* APCActivitiesViewSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 369C77951B1FB317007DD687 /* APCActivitiesViewSection.m */; }; 369E27EB1A96B7A200D35DFA /* APCMedicationActualMedicine.h in Headers */ = {isa = PBXBuildFile; fileRef = 369E27BB1A96B7A200D35DFA /* APCMedicationActualMedicine.h */; }; 369E27EC1A96B7A200D35DFA /* APCMedicationActualMedicine.m in Sources */ = {isa = PBXBuildFile; fileRef = 369E27BC1A96B7A200D35DFA /* APCMedicationActualMedicine.m */; }; 369E27ED1A96B7A200D35DFA /* APCMedicationColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 369E27BD1A96B7A200D35DFA /* APCMedicationColor.h */; }; @@ -223,9 +250,6 @@ 747FB1451ABDDFAE00345000 /* ResearchKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 747FB1441ABDDFAE00345000 /* ResearchKit.framework */; }; 7B07B8AE1ACDD7B400734558 /* APCHealthKitBackgroundDataCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B07B8AA1ACDD7B400734558 /* APCHealthKitBackgroundDataCollector.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7B07B8AF1ACDD7B400734558 /* APCHealthKitBackgroundDataCollector.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B07B8AB1ACDD7B400734558 /* APCHealthKitBackgroundDataCollector.m */; }; - 7B0DC4141A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B0DC4121A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.h */; }; - 7B0DC4151A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B0DC4131A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.m */; }; - 7B0DC4181A5EFECC0072EE80 /* APCActivitiesViewWithNoTask.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7B0DC4171A5EFECC0072EE80 /* APCActivitiesViewWithNoTask.xib */; }; 7B362C061B02A34500127051 /* APCDataArchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B362C041B02A34500127051 /* APCDataArchiver.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7B362C071B02A34500127051 /* APCDataArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B362C051B02A34500127051 /* APCDataArchiver.m */; }; 7B544B331ADF084F00361FB6 /* APCDisplacementTrackingCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B544B311ADF084F00361FB6 /* APCDisplacementTrackingCollector.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -288,7 +312,6 @@ CF130B781A9E8DCD002DA023 /* APCSetupButtonTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = CF130B751A9E8DCD002DA023 /* APCSetupButtonTableViewCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; CF130B791A9E8DCD002DA023 /* APCSetupButtonTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CF130B761A9E8DCD002DA023 /* APCSetupButtonTableViewCell.m */; }; CF130B7A1A9E8DCD002DA023 /* APCSetupButtonTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = CF130B771A9E8DCD002DA023 /* APCSetupButtonTableViewCell.xib */; }; - CF61A3801B0A53490014AD1A /* APCDemographicUploader.h in Resources */ = {isa = PBXBuildFile; fileRef = CF61A37F1B0A53490014AD1A /* APCDemographicUploader.h */; }; CF64CF2D1AE860CC000795B5 /* APCDemographicUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = CF64CF2B1AE860CC000795B5 /* APCDemographicUploader.m */; }; CF7945861AA7AEC70019160F /* APCFrequencyEverydayTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = CF7945831AA7AEC70019160F /* APCFrequencyEverydayTableViewCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; CF7945871AA7AEC70019160F /* APCFrequencyEverydayTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CF7945841AA7AEC70019160F /* APCFrequencyEverydayTableViewCell.m */; }; @@ -436,8 +459,6 @@ F5B947C81A73272C0034C522 /* NSObject+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B947531A73272C0034C522 /* NSObject+Helper.m */; }; F5B947C91A73272C0034C522 /* NSString+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B947541A73272C0034C522 /* NSString+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; F5B947CA1A73272C0034C522 /* NSString+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B947551A73272C0034C522 /* NSString+Helper.m */; }; - F5B947CD1A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B947581A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F5B947CE1A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B947591A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.m */; }; F5B947CF1A73272C0034C522 /* UIAlertController+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B9475A1A73272C0034C522 /* UIAlertController+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; F5B947D01A73272C0034C522 /* UIAlertController+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B9475B1A73272C0034C522 /* UIAlertController+Helper.m */; }; F5B947D11A73272C0034C522 /* UIImage+APCHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B9475C1A73272C0034C522 /* UIImage+APCHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -527,8 +548,6 @@ F5F129F91A2F78490015982C /* APCResult.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F1289F1A2F78490015982C /* APCResult.m */; }; F5F129FA1A2F78490015982C /* APCSchedule+AddOn.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F128A01A2F78490015982C /* APCSchedule+AddOn.h */; settings = {ATTRIBUTES = (Public, ); }; }; F5F129FB1A2F78490015982C /* APCSchedule+AddOn.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F128A11A2F78490015982C /* APCSchedule+AddOn.m */; }; - F5F129FC1A2F78490015982C /* APCSchedule+Bridge.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F128A21A2F78490015982C /* APCSchedule+Bridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F5F129FD1A2F78490015982C /* APCSchedule+Bridge.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F128A31A2F78490015982C /* APCSchedule+Bridge.m */; }; F5F129FE1A2F78490015982C /* APCSchedule.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F128A41A2F78490015982C /* APCSchedule.h */; settings = {ATTRIBUTES = (Public, ); }; }; F5F129FF1A2F78490015982C /* APCSchedule.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F128A51A2F78490015982C /* APCSchedule.m */; }; F5F12A001A2F78490015982C /* APCScheduledTask+AddOn.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F128A61A2F78490015982C /* APCScheduledTask+AddOn.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -547,7 +566,7 @@ F5F12A0F1A2F78490015982C /* APCUser+UserData.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F128B51A2F78490015982C /* APCUser+UserData.m */; }; F5F12A101A2F78490015982C /* APCUser.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F128B61A2F78490015982C /* APCUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; F5F12A111A2F78490015982C /* APCUser.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F128B71A2F78490015982C /* APCUser.m */; }; - F5F12A121A2F78490015982C /* MODEL_README in Resources */ = {isa = PBXBuildFile; fileRef = F5F128B81A2F78490015982C /* MODEL_README */; }; + F5F12A121A2F78490015982C /* MODEL_README.txt in Resources */ = {isa = PBXBuildFile; fileRef = F5F128B81A2F78490015982C /* MODEL_README.txt */; }; F5F12A6C1A2F78490015982C /* APCAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F129201A2F78490015982C /* APCAppDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; F5F12A6D1A2F78490015982C /* APCAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F129211A2F78490015982C /* APCAppDelegate.m */; }; F5F12A6E1A2F78490015982C /* TabBar.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F5F129221A2F78490015982C /* TabBar.storyboard */; }; @@ -798,13 +817,41 @@ 3651424C1AA78521008A5CFA /* APCDataArchiverAndUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCDataArchiverAndUploader.m; sourceTree = ""; }; 3654318B1A9A7BC200D66D97 /* APCMedTrackerInflatableItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCMedTrackerInflatableItem.h; sourceTree = ""; }; 3654318C1A9A7BC200D66D97 /* APCMedTrackerInflatableItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCMedTrackerInflatableItem.m; sourceTree = ""; }; - 366433821A7DA29F007E2BCF /* ReadMe.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ReadMe.txt; sourceTree = ""; }; + 366345781B1F84DD003CC0EF /* APCModel 5.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "APCModel 5.xcdatamodel"; sourceTree = ""; }; + 366345791B1F84F0003CC0EF /* APCModel 6.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "APCModel 6.xcdatamodel"; sourceTree = ""; }; + 3663457B1B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCDataMigrationMetadata_Model4ToModel6.h; sourceTree = ""; }; + 3663457C1B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCDataMigrationMetadata_Model4ToModel6.m; sourceTree = ""; }; + 3663457D1B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCDataMigrationPolicy_Model4ToModel6.h; sourceTree = ""; }; + 3663457E1B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCDataMigrationPolicy_Model4ToModel6.m; sourceTree = ""; }; + 366345831B1F8597003CC0EF /* APCMappingModel4ToModel6.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = APCMappingModel4ToModel6.xcmappingmodel; sourceTree = ""; }; + 366345851B1F85B7003CC0EF /* MODEL_MIGRATION_README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MODEL_MIGRATION_README.txt; sourceTree = ""; }; + 366345871B1F85EA003CC0EF /* APCPotentialScheduledTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCPotentialScheduledTask.h; sourceTree = ""; }; + 366345881B1F85EA003CC0EF /* APCPotentialScheduledTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCPotentialScheduledTask.m; sourceTree = ""; }; + 3663458B1B1F860A003CC0EF /* APCTaskGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCTaskGroup.h; sourceTree = ""; }; + 3663458C1B1F860A003CC0EF /* APCTaskGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCTaskGroup.m; sourceTree = ""; }; + 3663458F1B1F8627003CC0EF /* NSArray+APCHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+APCHelper.h"; sourceTree = ""; }; + 366345901B1F8627003CC0EF /* NSArray+APCHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+APCHelper.m"; sourceTree = ""; }; + 366345931B1F863A003CC0EF /* SBBSchedule+APCHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SBBSchedule+APCHelper.h"; sourceTree = ""; }; + 366345941B1F863A003CC0EF /* SBBSchedule+APCHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "SBBSchedule+APCHelper.m"; sourceTree = ""; }; + 366345971B1F865B003CC0EF /* APCActivitiesDateState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCActivitiesDateState.h; sourceTree = ""; }; + 366345981B1F865B003CC0EF /* APCActivitiesDateState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCActivitiesDateState.m; sourceTree = ""; }; + 366345991B1F865B003CC0EF /* APCScheduleDebugPrinter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCScheduleDebugPrinter.h; sourceTree = ""; }; + 3663459A1B1F865B003CC0EF /* APCScheduleDebugPrinter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCScheduleDebugPrinter.m; sourceTree = ""; }; + 3663459B1B1F865B003CC0EF /* APCScheduleIntervalEnumerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCScheduleIntervalEnumerator.h; sourceTree = ""; }; + 3663459C1B1F865B003CC0EF /* APCScheduleIntervalEnumerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCScheduleIntervalEnumerator.m; sourceTree = ""; }; + 366345A31B1F8666003CC0EF /* APCTaskGroupCacheEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCTaskGroupCacheEntry.h; sourceTree = ""; }; + 366345A41B1F8666003CC0EF /* APCTaskGroupCacheEntry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCTaskGroupCacheEntry.m; sourceTree = ""; }; + 366345A51B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCTopLevelScheduleEnumerator.h; sourceTree = ""; }; + 366345A61B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCTopLevelScheduleEnumerator.m; sourceTree = ""; }; 36829A511A96B98F000AA2AB /* NSOperationQueue+Helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSOperationQueue+Helper.h"; sourceTree = ""; }; 36829A521A96B98F000AA2AB /* NSOperationQueue+Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSOperationQueue+Helper.m"; sourceTree = ""; }; 368BAFE71A9AD91A00F04ABB /* APCMedTrackerDailyDosageRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCMedTrackerDailyDosageRecord.h; sourceTree = ""; }; 368BAFE81A9AD91A00F04ABB /* APCMedTrackerDailyDosageRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCMedTrackerDailyDosageRecord.m; sourceTree = ""; }; 369B47531A853E8500777639 /* APCUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCUtilities.h; sourceTree = ""; }; 369B47541A853E8500777639 /* APCUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCUtilities.m; sourceTree = ""; }; + 369C77921B1F9171007DD687 /* APCDataVerificationServerAccessControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCDataVerificationServerAccessControl.h; sourceTree = ""; }; + 369C77941B1FB317007DD687 /* APCActivitiesViewSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCActivitiesViewSection.h; sourceTree = ""; }; + 369C77951B1FB317007DD687 /* APCActivitiesViewSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCActivitiesViewSection.m; sourceTree = ""; }; 369DD5541AC0DF8100327729 /* ENCRYPTION_README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ENCRYPTION_README.txt; path = CMS/ENCRYPTION_README.txt; sourceTree = ""; }; 369DD5561AC0E26900327729 /* APCCMS_NoEncryption_JustAStub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = APCCMS_NoEncryption_JustAStub.m; path = CMS/APCCMS_NoEncryption_JustAStub.m; sourceTree = ""; }; 369E27BB1A96B7A200D35DFA /* APCMedicationActualMedicine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCMedicationActualMedicine.h; sourceTree = ""; }; @@ -920,9 +967,6 @@ 747FB1441ABDDFAE00345000 /* ResearchKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ResearchKit.framework; path = "../../researchkit/build/Debug-iphoneos/ResearchKit.framework"; sourceTree = ""; }; 7B07B8AA1ACDD7B400734558 /* APCHealthKitBackgroundDataCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCHealthKitBackgroundDataCollector.h; sourceTree = ""; }; 7B07B8AB1ACDD7B400734558 /* APCHealthKitBackgroundDataCollector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCHealthKitBackgroundDataCollector.m; sourceTree = ""; }; - 7B0DC4121A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCActivitiesViewWithNoTask.h; sourceTree = ""; }; - 7B0DC4131A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCActivitiesViewWithNoTask.m; sourceTree = ""; }; - 7B0DC4171A5EFECC0072EE80 /* APCActivitiesViewWithNoTask.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = APCActivitiesViewWithNoTask.xib; sourceTree = ""; }; 7B362C041B02A34500127051 /* APCDataArchiver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCDataArchiver.h; sourceTree = ""; }; 7B362C051B02A34500127051 /* APCDataArchiver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCDataArchiver.m; sourceTree = ""; }; 7B544B311ADF084F00361FB6 /* APCDisplacementTrackingCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCDisplacementTrackingCollector.h; sourceTree = ""; }; @@ -1135,8 +1179,6 @@ F5B947531A73272C0034C522 /* NSObject+Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+Helper.m"; sourceTree = ""; }; F5B947541A73272C0034C522 /* NSString+Helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Helper.h"; sourceTree = ""; }; F5B947551A73272C0034C522 /* NSString+Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Helper.m"; sourceTree = ""; }; - F5B947581A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SBBGuidCreatedOnVersionHolder+APCAdditions.h"; sourceTree = ""; }; - F5B947591A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "SBBGuidCreatedOnVersionHolder+APCAdditions.m"; sourceTree = ""; }; F5B9475A1A73272C0034C522 /* UIAlertController+Helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIAlertController+Helper.h"; sourceTree = ""; }; F5B9475B1A73272C0034C522 /* UIAlertController+Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIAlertController+Helper.m"; sourceTree = ""; }; F5B9475C1A73272C0034C522 /* UIImage+APCHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+APCHelper.h"; sourceTree = ""; }; @@ -1226,8 +1268,6 @@ F5F1289F1A2F78490015982C /* APCResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCResult.m; sourceTree = ""; }; F5F128A01A2F78490015982C /* APCSchedule+AddOn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "APCSchedule+AddOn.h"; sourceTree = ""; }; F5F128A11A2F78490015982C /* APCSchedule+AddOn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "APCSchedule+AddOn.m"; sourceTree = ""; }; - F5F128A21A2F78490015982C /* APCSchedule+Bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "APCSchedule+Bridge.h"; sourceTree = ""; }; - F5F128A31A2F78490015982C /* APCSchedule+Bridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = "APCSchedule+Bridge.m"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; F5F128A41A2F78490015982C /* APCSchedule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCSchedule.h; sourceTree = ""; }; F5F128A51A2F78490015982C /* APCSchedule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCSchedule.m; sourceTree = ""; }; F5F128A61A2F78490015982C /* APCScheduledTask+AddOn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "APCScheduledTask+AddOn.h"; sourceTree = ""; }; @@ -1246,7 +1286,7 @@ F5F128B51A2F78490015982C /* APCUser+UserData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "APCUser+UserData.m"; sourceTree = ""; }; F5F128B61A2F78490015982C /* APCUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCUser.h; sourceTree = ""; }; F5F128B71A2F78490015982C /* APCUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APCUser.m; sourceTree = ""; }; - F5F128B81A2F78490015982C /* MODEL_README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MODEL_README; sourceTree = ""; }; + F5F128B81A2F78490015982C /* MODEL_README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MODEL_README.txt; sourceTree = ""; }; F5F1291B1A2F78490015982C /* update_version.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = update_version.sh; sourceTree = ""; }; F5F129201A2F78490015982C /* APCAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APCAppDelegate.h; sourceTree = ""; }; F5F129211A2F78490015982C /* APCAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = APCAppDelegate.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; @@ -1559,9 +1599,9 @@ 364D34871A7B1C8F0060B3F5 /* DataVerificationClient */ = { isa = PBXGroup; children = ( - 366433821A7DA29F007E2BCF /* ReadMe.txt */, 364D34881A7B1C8F0060B3F5 /* APCDataVerificationClient.h */, 364D34891A7B1C8F0060B3F5 /* APCDataVerificationClient.m */, + 369C77921B1F9171007DD687 /* APCDataVerificationServerAccessControl.h */, ); path = DataVerificationClient; sourceTree = ""; @@ -1585,6 +1625,18 @@ path = DataArchiverAndUploader; sourceTree = ""; }; + 3663457A1B1F8560003CC0EF /* CoreData Migration */ = { + isa = PBXGroup; + children = ( + 366345831B1F8597003CC0EF /* APCMappingModel4ToModel6.xcmappingmodel */, + 3663457B1B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.h */, + 3663457C1B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.m */, + 3663457D1B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.h */, + 3663457E1B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.m */, + ); + name = "CoreData Migration"; + sourceTree = ""; + }; 369E27BA1A96B7A200D35DFA /* MedicationTrackerStorageClasses */ = { isa = PBXGroup; children = ( @@ -1705,15 +1757,15 @@ 5B9B36A01A95D9B500389F42 /* ActivitiesCells */ = { isa = PBXGroup; children = ( - 5B9B36A11A95D9B500389F42 /* APCActivitiesTintedTableViewCell.h */, - 5B9B36A21A95D9B500389F42 /* APCActivitiesTintedTableViewCell.m */, 5B9B36A51A95D9C900389F42 /* APCActivitiesBasicTableViewCell.h */, 5B9B36A61A95D9C900389F42 /* APCActivitiesBasicTableViewCell.m */, - 5B9B36A91A95DC1700389F42 /* APCActivitiesTableViewCell.h */, - 5B9B36AA1A95DC1700389F42 /* APCActivitiesTableViewCell.m */, 5B9B36AD1A95DEEB00389F42 /* APCActivitiesSectionHeaderView.h */, 5B9B36AE1A95DEEB00389F42 /* APCActivitiesSectionHeaderView.m */, 5B9B36B11A95DF0C00389F42 /* APCActivitiesSectionHeaderView.xib */, + 5B9B36A91A95DC1700389F42 /* APCActivitiesTableViewCell.h */, + 5B9B36AA1A95DC1700389F42 /* APCActivitiesTableViewCell.m */, + 5B9B36A11A95D9B500389F42 /* APCActivitiesTintedTableViewCell.h */, + 5B9B36A21A95D9B500389F42 /* APCActivitiesTintedTableViewCell.m */, ); path = ActivitiesCells; sourceTree = ""; @@ -2049,8 +2101,6 @@ F542EF441A69735000D48C4D /* Autogenerated */ = { isa = PBXGroup; children = ( - 7BA5D99C1AA43F50006F505F /* APCStoredUserData.h */, - 7BA5D99D1AA43F50006F505F /* APCStoredUserData.m */, F5F128951A2F78490015982C /* APCDBStatus.h */, F5F128961A2F78490015982C /* APCDBStatus.m */, F5F1289E1A2F78490015982C /* APCResult.h */, @@ -2059,6 +2109,8 @@ F5F128A51A2F78490015982C /* APCSchedule.m */, F5F128A81A2F78490015982C /* APCScheduledTask.h */, F5F128A91A2F78490015982C /* APCScheduledTask.m */, + 7BA5D99C1AA43F50006F505F /* APCStoredUserData.h */, + 7BA5D99D1AA43F50006F505F /* APCStoredUserData.m */, F5F128B01A2F78490015982C /* APCTask.h */, F5F128B11A2F78490015982C /* APCTask.m */, ); @@ -2068,16 +2120,20 @@ F542EF451A69737F00D48C4D /* MemoryOnly */ = { isa = PBXGroup; children = ( + 7BD1D3D21A702ED200D6A377 /* APCDataResult.h */, + 7BD1D3D31A702ED200D6A377 /* APCDataResult.m */, F50738BE1A682E12004CF100 /* APCDateRange.h */, F50738BF1A682E12004CF100 /* APCDateRange.m */, + 366345871B1F85EA003CC0EF /* APCPotentialScheduledTask.h */, + 366345881B1F85EA003CC0EF /* APCPotentialScheduledTask.m */, F5C3635E1A40E21000113129 /* APCSmartSurveyTask.h */, F5C3635F1A40E21000113129 /* APCSmartSurveyTask.m */, + 3663458B1B1F860A003CC0EF /* APCTaskGroup.h */, + 3663458C1B1F860A003CC0EF /* APCTaskGroup.m */, F5F128B61A2F78490015982C /* APCUser.h */, F5F128B71A2F78490015982C /* APCUser.m */, F5F128B41A2F78490015982C /* APCUser+UserData.h */, F5F128B51A2F78490015982C /* APCUser+UserData.m */, - 7BD1D3D21A702ED200D6A377 /* APCDataResult.h */, - 7BD1D3D31A702ED200D6A377 /* APCDataResult.m */, ); name = MemoryOnly; sourceTree = ""; @@ -2104,8 +2160,6 @@ children = ( F5F1289C1A2F78490015982C /* APCResult+Bridge.h */, F5F1289D1A2F78490015982C /* APCResult+Bridge.m */, - F5F128A21A2F78490015982C /* APCSchedule+Bridge.h */, - F5F128A31A2F78490015982C /* APCSchedule+Bridge.m */, F5F128AE1A2F78490015982C /* APCTask+Bridge.h */, F5F128AF1A2F78490015982C /* APCTask+Bridge.m */, F5F128B21A2F78490015982C /* APCUser+Bridge.h */, @@ -2175,27 +2229,27 @@ F5B947341A73272C0034C522 /* Library */ = { isa = PBXGroup; children = ( - 7B6C8CC11AA26F150007B560 /* Stack */, - 712AB4471A9E690600556DA2 /* MotionHistoryReporter */, - 7473070D1A96E1BB0071D863 /* CMS */, F5B947351A73272C0034C522 /* AppearanceHelpers */, F5B9473C1A73272C0034C522 /* AssertionHandler */, - 7BCF702F1ACB6C4A00838717 /* PassiveDataCollector */, F5B9473F1A73272C0034C522 /* Categories */, + 7473070D1A96E1BB0071D863 /* CMS */, F5B947621A73272C0034C522 /* DataArchiverAndCollector */, 3651424A1AA78514008A5CFA /* DataArchiverAndUploader */, 364D34871A7B1C8F0060B3F5 /* DataVerificationClient */, 0894654F1A8C211100A983AC /* Insights */, F5B947681A73272C0034C522 /* Logging */, - CFFDED2F1A95723600B25581 /* MedicationTracking */, 369E27BA1A96B7A200D35DFA /* MedicationTrackerStorageClasses */, + CFFDED2F1A95723600B25581 /* MedicationTracking */, + 712AB4471A9E690600556DA2 /* MotionHistoryReporter */, F5B9476E1A73272C0034C522 /* Objects */, F5B9477B1A73272C0034C522 /* Parameters */, + 7BCF702F1ACB6C4A00838717 /* PassiveDataCollector */, F5B9478E1A73272C0034C522 /* Permissions */, 6CD8B6761AC501250061E6D6 /* Reminders */, F5B947911A73272C0034C522 /* ScheduleExpression */, F5B947A71A73272C0034C522 /* Scheduler */, F5B947AA1A73272C0034C522 /* Scoring */, + 7B6C8CC11AA26F150007B560 /* Stack */, ); path = Library; sourceTree = ""; @@ -2225,16 +2279,20 @@ F5B9473F1A73272C0034C522 /* Categories */ = { isa = PBXGroup; children = ( - 7B751D551B0A61A600E77BD2 /* NSDictionary+APCStringify.h */, - 7B751D561B0A61A600E77BD2 /* NSDictionary+APCStringify.m */, F5B947401A73272C0034C522 /* APCDeviceHardware+APCHelper.h */, F5B947411A73272C0034C522 /* APCDeviceHardware+APCHelper.m */, F5B947421A73272C0034C522 /* APCStepProgressBar+Appearance.h */, F5B947431A73272C0034C522 /* APCStepProgressBar+Appearance.m */, + 7B558D261AE587DF00129167 /* CLLocation+APCAdditions.h */, + 7B558D271AE587DF00129167 /* CLLocation+APCAdditions.m */, 36257FBB1AA714B60060B95A /* CMMotionActivity+Helper.h */, 36257FBC1AA714B60060B95A /* CMMotionActivity+Helper.m */, F5B947441A73272C0034C522 /* HKHealthStore+APCExtensions.h */, F5B947451A73272C0034C522 /* HKHealthStore+APCExtensions.m */, + 7BDF4D301AE5492400ACC1F8 /* HKWorkout+APCHelper.h */, + 7BDF4D311AE5492400ACC1F8 /* HKWorkout+APCHelper.m */, + 3663458F1B1F8627003CC0EF /* NSArray+APCHelper.h */, + 366345901B1F8627003CC0EF /* NSArray+APCHelper.m */, F5B947461A73272C0034C522 /* NSBundle+Helper.h */, F5B947471A73272C0034C522 /* NSBundle+Helper.m */, F5B947481A73272C0034C522 /* NSDate+Helper.h */, @@ -2243,10 +2301,14 @@ F5B9474B1A73272C0034C522 /* NSDateComponents+Helper.m */, F5B9474C1A73272C0034C522 /* NSDictionary+APCAdditions.h */, F5B9474D1A73272C0034C522 /* NSDictionary+APCAdditions.m */, + 7B751D551B0A61A600E77BD2 /* NSDictionary+APCStringify.h */, + 7B751D561B0A61A600E77BD2 /* NSDictionary+APCStringify.m */, F5B9474E1A73272C0034C522 /* NSError+APCAdditions.h */, F5B9474F1A73272C0034C522 /* NSError+APCAdditions.m */, EE4B95231AF82BA6000097C7 /* NSError+Bridge.h */, EE4B95241AF82BA6000097C7 /* NSError+Bridge.m */, + 36D0510C1ABB92F0008FC9B3 /* NSFileManager+Helper.h */, + 36D0510D1ABB92F0008FC9B3 /* NSFileManager+Helper.m */, F5B947501A73272C0034C522 /* NSManagedObject+APCHelper.h */, F5B947511A73272C0034C522 /* NSManagedObject+APCHelper.m */, F5B947521A73272C0034C522 /* NSObject+Helper.h */, @@ -2259,8 +2321,8 @@ 36B7D2541A8D848D0043F968 /* ORKAnswerFormat+Helper.m */, F5306CCB1A8BE7F600732E60 /* ORKQuestionResult+APCHelper.h */, F5306CCC1A8BE7F600732E60 /* ORKQuestionResult+APCHelper.m */, - F5B947581A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.h */, - F5B947591A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.m */, + 366345931B1F863A003CC0EF /* SBBSchedule+APCHelper.h */, + 366345941B1F863A003CC0EF /* SBBSchedule+APCHelper.m */, F5B9475A1A73272C0034C522 /* UIAlertController+Helper.h */, F5B9475B1A73272C0034C522 /* UIAlertController+Helper.m */, F5B9475C1A73272C0034C522 /* UIImage+APCHelper.h */, @@ -2271,12 +2333,6 @@ F5B9475F1A73272C0034C522 /* UIScrollView+Helper.m */, F5B947601A73272C0034C522 /* UIView+Helper.h */, F5B947611A73272C0034C522 /* UIView+Helper.m */, - 36D0510C1ABB92F0008FC9B3 /* NSFileManager+Helper.h */, - 36D0510D1ABB92F0008FC9B3 /* NSFileManager+Helper.m */, - 7BDF4D301AE5492400ACC1F8 /* HKWorkout+APCHelper.h */, - 7BDF4D311AE5492400ACC1F8 /* HKWorkout+APCHelper.m */, - 7B558D261AE587DF00129167 /* CLLocation+APCAdditions.h */, - 7B558D271AE587DF00129167 /* CLLocation+APCAdditions.m */, ); path = Categories; sourceTree = ""; @@ -2393,6 +2449,16 @@ children = ( F5B947A81A73272C0034C522 /* APCScheduler.h */, F5B947A91A73272C0034C522 /* APCScheduler.m */, + 366345971B1F865B003CC0EF /* APCActivitiesDateState.h */, + 366345981B1F865B003CC0EF /* APCActivitiesDateState.m */, + 366345991B1F865B003CC0EF /* APCScheduleDebugPrinter.h */, + 3663459A1B1F865B003CC0EF /* APCScheduleDebugPrinter.m */, + 3663459B1B1F865B003CC0EF /* APCScheduleIntervalEnumerator.h */, + 3663459C1B1F865B003CC0EF /* APCScheduleIntervalEnumerator.m */, + 366345A31B1F8666003CC0EF /* APCTaskGroupCacheEntry.h */, + 366345A41B1F8666003CC0EF /* APCTaskGroupCacheEntry.m */, + 366345A51B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.h */, + 366345A61B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.m */, ); path = Scheduler; sourceTree = ""; @@ -2447,10 +2513,12 @@ F5F128921A2F78490015982C /* Model */ = { isa = PBXGroup; children = ( - F5F128B81A2F78490015982C /* MODEL_README */, + F5F128B81A2F78490015982C /* MODEL_README.txt */, + 366345851B1F85B7003CC0EF /* MODEL_MIGRATION_README.txt */, F5F128971A2F78490015982C /* APCModel.h */, F5F128981A2F78490015982C /* APCModel.xcdatamodeld */, F542EF441A69735000D48C4D /* Autogenerated */, + 3663457A1B1F8560003CC0EF /* CoreData Migration */, F542EF461A6973EF00D48C4D /* AddOns */, F542EF471A69740900D48C4D /* Bridge */, F542EF451A69737F00D48C4D /* MemoryOnly */, @@ -2684,9 +2752,8 @@ F5F129781A2F78490015982C /* APCActivities.storyboard */, F5F129791A2F78490015982C /* APCActivitiesViewController.h */, F5F1297A1A2F78490015982C /* APCActivitiesViewController.m */, - 7B0DC4121A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.h */, - 7B0DC4131A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.m */, - 7B0DC4171A5EFECC0072EE80 /* APCActivitiesViewWithNoTask.xib */, + 369C77941B1FB317007DD687 /* APCActivitiesViewSection.h */, + 369C77951B1FB317007DD687 /* APCActivitiesViewSection.m */, ); path = Activities; sourceTree = ""; @@ -2963,6 +3030,7 @@ 7BEFD7DD1AD596070087F46C /* APCCollectorProtocol.h in Headers */, 7B6C8CBD1AA26ECE0007B560 /* APCConsentTask.h in Headers */, 08023C4F1AA94F48008E6DDA /* APCAllSetContentViewController.h in Headers */, + 366345A71B1F8666003CC0EF /* APCTaskGroupCacheEntry.h in Headers */, 5BD6EBB91A9C77D900C3BFB0 /* APCDiscreteGraphView.h in Headers */, 7BA67A7A1AB174B500238899 /* APCTasksAndSchedulesMigrationUtility.h in Headers */, CFFDEDE91A95734000B25581 /* APCLozengeButton.h in Headers */, @@ -2983,6 +3051,7 @@ F5F12AF61A2F78490015982C /* APCStepViewController.h in Headers */, 5B234E141A329BF300A5A3A0 /* APCWithdrawDescriptionViewController.h in Headers */, F5F12AFB1A2F78490015982C /* APCInstructionStepViewController.h in Headers */, + 366345A91B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.h in Headers */, F5F12A8B1A2F78490015982C /* APCIntroVideoViewController.h in Headers */, 7BDF4D321AE5492400ACC1F8 /* HKWorkout+APCHelper.h in Headers */, F5F129E11A2F78490015982C /* APCAppCore.h in Headers */, @@ -2995,6 +3064,7 @@ CFEF5CAD1A807DE4009A8634 /* APCCustomBackButton.h in Headers */, F5B946411A7309A20034C522 /* ZZOldArchiveEntry.h in Headers */, CFFDEDEF1A95734000B25581 /* APCMedicationNameViewController.h in Headers */, + 3663457F1B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.h in Headers */, CFFDEDE31A95734000B25581 /* APCColorSwatchTableViewCell.h in Headers */, F5F12ADE1A2F78490015982C /* APCShareTableViewCell.h in Headers */, F5F12AE41A2F78490015982C /* APCTintedTableViewCell.h in Headers */, @@ -3010,7 +3080,8 @@ 5BD6EBB71A9C77D900C3BFB0 /* APCBaseGraphView.h in Headers */, F5F12B061A2F78490015982C /* APCUserInfoViewController.h in Headers */, 7B6C8CBF1AA26ECE0007B560 /* APCConsentTextChoiceQuestion.h in Headers */, - 7B0DC4141A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.h in Headers */, + 3663459D1B1F865B003CC0EF /* APCActivitiesDateState.h in Headers */, + 369C77931B1F9171007DD687 /* APCDataVerificationServerAccessControl.h in Headers */, 36AAB3541A9A760D00FAC255 /* APCMedTrackerPrescriptionColor.h in Headers */, F5F129EA1A2F78490015982C /* APCDataSubstrate+ResearchKit.h in Headers */, F5306CCD1A8BE7F600732E60 /* ORKQuestionResult+APCHelper.h in Headers */, @@ -3061,6 +3132,7 @@ A7CFE4B71A8B05F4009A171C /* APCStudyOverviewCollectionViewController.h in Headers */, F5F12A931A2F78490015982C /* APCStudyDetailsViewController.h in Headers */, F5F12AEC1A2F78490015982C /* APCDashboardMessageTableViewCell.h in Headers */, + 366345891B1F85EA003CC0EF /* APCPotentialScheduledTask.h in Headers */, EE028FE31AF94B36001C8251 /* APCKeychainStore+Passcode.h in Headers */, F5B947B11A73272C0034C522 /* UIFont+APCAppearance.h in Headers */, 369E28171A96B7A200D35DFA /* APCMedTrackerPrescriptionColor+Helper.h in Headers */, @@ -3077,7 +3149,6 @@ F5F12A891A2F78490015982C /* APCTableViewItem.h in Headers */, F5F12AC31A2F78490015982C /* APCLearnMasterViewController.h in Headers */, F5B9463A1A7309A20034C522 /* ZZHeaders.h in Headers */, - F5B947CD1A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.h in Headers */, F5F12A7E1A2F78490015982C /* APCGraphConstants.h in Headers */, 089465491A8C179700A983AC /* APCDashboardInsightTableViewCell.h in Headers */, F5F12A981A2F78490015982C /* APCChangeEmailViewController.h in Headers */, @@ -3094,13 +3165,13 @@ 369E28101A96B7A200D35DFA /* APCMedTrackerPossibleDosage+Helper.h in Headers */, F5B947CF1A73272C0034C522 /* UIAlertController+Helper.h in Headers */, F5F12A0E1A2F78490015982C /* APCUser+UserData.h in Headers */, - F5F129FC1A2F78490015982C /* APCSchedule+Bridge.h in Headers */, CFFDED7C1A95731F00B25581 /* NSDate+MedicationTracker.h in Headers */, F5F12AA41A2F78490015982C /* APCSignInViewController.h in Headers */, 7BD1D3D41A702ED200D6A377 /* APCDataResult.h in Headers */, F5B947BB1A73272C0034C522 /* NSBundle+Helper.h in Headers */, F5F12B0A1A2F78490015982C /* APCPasscodeView.h in Headers */, CFFDEDE61A95734000B25581 /* APCMedicationColorViewController.h in Headers */, + 3663458D1B1F860A003CC0EF /* APCTaskGroup.h in Headers */, F5F12ACE1A2F78490015982C /* APCWithdrawCompleteViewController.h in Headers */, F5F12A7D1A2F78490015982C /* APCGraph.h in Headers */, 36829A531A96B98F000AA2AB /* NSOperationQueue+Helper.h in Headers */, @@ -3123,6 +3194,7 @@ F5B9480A1A73272C0034C522 /* APCScheduleExpressionToken.h in Headers */, F5F12AD01A2F78490015982C /* APCWithdrawSurveyViewController.h in Headers */, 368BAFE91A9AD91A00F04ABB /* APCMedTrackerDailyDosageRecord.h in Headers */, + 3663459F1B1F865B003CC0EF /* APCScheduleDebugPrinter.h in Headers */, F5B947F61A73272C0034C522 /* APCParametersDashboardTableViewController.h in Headers */, F5F12AF21A2F78490015982C /* APCBaseTaskViewController.h in Headers */, F5F12AF41A2F78490015982C /* APCBaseWithProgressTaskViewController.h in Headers */, @@ -3186,8 +3258,11 @@ F5F12A7F1A2F78490015982C /* APCLineGraphView.h in Headers */, F5B947E51A73272C0034C522 /* APCKeychainStore.h in Headers */, 7BEC13D41AA3AA5B00CA316C /* APCActivityTrackingStepViewController.h in Headers */, + 366345811B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.h in Headers */, F5F12AD61A2F78490015982C /* APCDefaultTableViewCell.h in Headers */, + 369C77961B1FB317007DD687 /* APCActivitiesViewSection.h in Headers */, F5B9462D1A7309A20034C522 /* ZZDataChannel.h in Headers */, + 366345A11B1F865B003CC0EF /* APCScheduleIntervalEnumerator.h in Headers */, CFFDED751A95731F00B25581 /* APCMedicationTrackerDayTitleLabel.h in Headers */, F5B947D11A73272C0034C522 /* UIImage+APCHelper.h in Headers */, 0871A3931A8F4244002EA80D /* APCDashboardFoodInsightTableViewCell.h in Headers */, @@ -3203,6 +3278,7 @@ F5B947C11A73272C0034C522 /* NSDictionary+APCAdditions.h in Headers */, F5F12A101A2F78490015982C /* APCUser.h in Headers */, 08023C531AAA12DF008E6DDA /* APCAllSetTableViewCell.h in Headers */, + 366345911B1F8627003CC0EF /* NSArray+APCHelper.h in Headers */, F5B948041A73272C0034C522 /* APCPointSelector.h in Headers */, F5B946221A7309A20034C522 /* ZZAESDecryptInputStream.h in Headers */, 6CD8B6741AC5011D0061E6D6 /* APCTaskReminder.h in Headers */, @@ -3226,6 +3302,7 @@ 7BBC9BCB1ACF416700E022DB /* APCDataCollector.h in Headers */, F5B947B91A73272C0034C522 /* HKHealthStore+APCExtensions.h in Headers */, F5F12AE01A2F78490015982C /* APCSwitchTableViewCell.h in Headers */, + 366345951B1F863A003CC0EF /* SBBSchedule+APCHelper.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3339,7 +3416,7 @@ CFFDEDE81A95734000B25581 /* APCMedicationColorViewController.xib in Resources */, CFFDED721A95731F00B25581 /* APCMedicationTrackerCalendarViewController.xib in Resources */, F5F12A8D1A2F78490015982C /* APCOnboarding.storyboard in Resources */, - F5F12A121A2F78490015982C /* MODEL_README in Resources */, + F5F12A121A2F78490015982C /* MODEL_README.txt in Resources */, F5B947F11A73272C0034C522 /* APCParameters.storyboard in Resources */, CFBD289C1AA4408800F49161 /* APCMedicationNameTableViewCell.xib in Resources */, 08027A851A7319AC00B358CC /* handtapping01@2x.png in Resources */, @@ -3347,7 +3424,6 @@ 08027A8D1A7319AC00B358CC /* sittingman@2x.png in Resources */, 08027A781A7319AC00B358CC /* consent_02@2x.png in Resources */, 369E27F71A96B7A200D35DFA /* APCMedicationSampleDosesTaken.plist in Resources */, - 7B0DC4181A5EFECC0072EE80 /* APCActivitiesViewWithNoTask.xib in Resources */, CFFDEDD91A95734000B25581 /* APCMedicationDosageViewController.xib in Resources */, 5B73CAF21A8B3B8C00FFE79C /* APCDashboard.storyboard in Resources */, CFFDEDE51A95734000B25581 /* APCColorSwatchTableViewCell.xib in Resources */, @@ -3368,6 +3444,7 @@ 08027A791A7319AC00B358CC /* consent_03@2x.png in Resources */, 08027A7C1A7319AC00B358CC /* consent_06@2x.png in Resources */, 08027A8B1A7319AC00B358CC /* phonewaves@2x.png in Resources */, + 366345861B1F85B7003CC0EF /* MODEL_MIGRATION_README.txt in Resources */, 08027A8A1A7319AC00B358CC /* phonetapping@2x.png in Resources */, 5B4574CC1ABFD07A00601DCC /* License_ZipZap.txt in Resources */, CF130B7A1A9E8DCD002DA023 /* APCSetupButtonTableViewCell.xib in Resources */, @@ -3406,27 +3483,28 @@ files = ( F5F129F51A2F78490015982C /* APCResult+AddOn.m in Sources */, 5B827B561A80CB0400C685A3 /* APCFadeAnimator.m in Sources */, + 366345961B1F863A003CC0EF /* SBBSchedule+APCHelper.m in Sources */, 36D0510F1ABB92F0008FC9B3 /* NSFileManager+Helper.m in Sources */, F5F12AF11A2F78490015982C /* APCDashboardProgressTableViewCell.m in Sources */, 08BABB431AD62D5D00059C35 /* APCExampleLabel.m in Sources */, F5B9480F1A73272C0034C522 /* APCTimeSelector.m in Sources */, F5F12A0B1A2F78490015982C /* APCTask.m in Sources */, + 366345A21B1F865B003CC0EF /* APCScheduleIntervalEnumerator.m in Sources */, F5B9463E1A7309A20034C522 /* ZZNewArchiveEntry.mm in Sources */, F5F12A861A2F78490015982C /* APCOnboarding.m in Sources */, F5B9480B1A73272C0034C522 /* APCScheduleExpressionToken.m in Sources */, F5F12AB31A2F78490015982C /* APCSignupPasscodeViewController.m in Sources */, 7BA67A7B1AB174B500238899 /* APCTasksAndSchedulesMigrationUtility.m in Sources */, - 7B0DC4151A5EFDDA0072EE80 /* APCActivitiesViewWithNoTask.m in Sources */, 0894654A1A8C179700A983AC /* APCDashboardInsightTableViewCell.m in Sources */, CFFDED761A95731F00B25581 /* APCMedicationTrackerDayTitleLabel.m in Sources */, 5B7EA0241A44C21200924DEE /* APCFormTextField.m in Sources */, 7B6C8CC01AA26ECE0007B560 /* APCConsentTextChoiceQuestion.m in Sources */, F5B947FD1A73272C0034C522 /* APCPermissionsManager.m in Sources */, CF7945871AA7AEC70019160F /* APCFrequencyEverydayTableViewCell.m in Sources */, + 366345A81B1F8666003CC0EF /* APCTaskGroupCacheEntry.m in Sources */, 7B6C8CC51AA26F150007B560 /* APCStack.m in Sources */, 7B544B3C1ADF09E900361FB6 /* APCPassiveDisplacementTrackingDataUploader.m in Sources */, F5F129F91A2F78490015982C /* APCResult.m in Sources */, - F5F129FD1A2F78490015982C /* APCSchedule+Bridge.m in Sources */, F5F12A0D1A2F78490015982C /* APCUser+Bridge.m in Sources */, F5F129FF1A2F78490015982C /* APCSchedule.m in Sources */, F5F12A6D1A2F78490015982C /* APCAppDelegate.m in Sources */, @@ -3454,6 +3532,7 @@ 7B8DBEC51AA1871D007B4026 /* APCVerticalThinLineView.m in Sources */, 5B0432A01A318AA2000DC9ED /* APCSignInTask.m in Sources */, F5F12A0F1A2F78490015982C /* APCUser+UserData.m in Sources */, + 3663459E1B1F865B003CC0EF /* APCActivitiesDateState.m in Sources */, F5F12AC11A2F78490015982C /* APCGraphViewController.m in Sources */, 7B558D291AE587DF00129167 /* CLLocation+APCAdditions.m in Sources */, 5BD6EBA31A9A46BB00C3BFB0 /* APCStudyLandingCollectionViewCell.m in Sources */, @@ -3476,6 +3555,7 @@ F5F12A961A2F78490015982C /* APCStudyOverviewViewController.m in Sources */, F5B947BE1A73272C0034C522 /* NSDate+Helper.m in Sources */, F5F12AD51A2F78490015982C /* APCCheckTableViewCell.m in Sources */, + 366345801B1F857C003CC0EF /* APCDataMigrationMetadata_Model4ToModel6.m in Sources */, F5F12AE51A2F78490015982C /* APCTintedTableViewCell.m in Sources */, 7B76F94C1AD34A72003508EB /* APCCoreMotionBackgroundDataCollector.m in Sources */, F5F12A091A2F78490015982C /* APCTask+Bridge.m in Sources */, @@ -3498,6 +3578,7 @@ F5C363611A40E21000113129 /* APCSmartSurveyTask.m in Sources */, F5F12AF51A2F78490015982C /* APCBaseWithProgressTaskViewController.m in Sources */, 0875C3D91A797A7B00CE50FB /* APCButton.m in Sources */, + 366345A01B1F865B003CC0EF /* APCScheduleDebugPrinter.m in Sources */, F5B9464B1A7309A20034C522 /* ZZStoreOutputStream.m in Sources */, F5F12B0D1A2F78490015982C /* APCPermissionButton.m in Sources */, 369E27F61A96B7A200D35DFA /* APCMedicationPossibleDosage.m in Sources */, @@ -3506,9 +3587,11 @@ F5F129FB1A2F78490015982C /* APCSchedule+AddOn.m in Sources */, F5B9463C1A7309A20034C522 /* ZZInflateInputStream.m in Sources */, F5B946401A7309A20034C522 /* ZZNewArchiveEntryWriter.mm in Sources */, + 3663458E1B1F860A003CC0EF /* APCTaskGroup.m in Sources */, 369E28181A96B7A200D35DFA /* APCMedTrackerPrescriptionColor+Helper.m in Sources */, 7BEC13D71AA3AA5B00CA316C /* APCFitnessAllocation.m in Sources */, CFFDED781A95731F00B25581 /* APCMedicationTrackerDetailViewController.m in Sources */, + 3663458A1B1F85EA003CC0EF /* APCPotentialScheduledTask.m in Sources */, F5F12AFC1A2F78490015982C /* APCInstructionStepViewController.m in Sources */, CFFDEDD81A95734000B25581 /* APCMedicationDosageViewController.m in Sources */, 369E27EC1A96B7A200D35DFA /* APCMedicationActualMedicine.m in Sources */, @@ -3517,6 +3600,7 @@ F5B947E21A73272C0034C522 /* APCDeviceHardware.m in Sources */, F5B946461A7309A20034C522 /* ZZStandardCryptoEngine.cpp in Sources */, F5B947D41A73272C0034C522 /* UIScrollView+Helper.m in Sources */, + 366345841B1F8597003CC0EF /* APCMappingModel4ToModel6.xcmappingmodel in Sources */, 5B827B4D1A80A39900C685A3 /* APCDashboardMoreInfoViewController.m in Sources */, F5F12AB51A2F78490015982C /* APCSignUpPermissionsViewController.m in Sources */, 369E27F01A96B7A200D35DFA /* APCMedicationDataStorageEngine.m in Sources */, @@ -3544,7 +3628,6 @@ 7B751D581B0A61A600E77BD2 /* NSDictionary+APCStringify.m in Sources */, F5B947B81A73272C0034C522 /* APCStepProgressBar+Appearance.m in Sources */, 6C8646411AF8077300B46C49 /* APCCorrelationsSelectorViewController.m in Sources */, - 7BDF4D2B1AE5403E00ACC1F8 /* NSDictionary+APCStringify.m in Sources */, CFFDEDFB1A95734000B25581 /* APCSetupTableViewCell.m in Sources */, 7B8C20141AA3AB8600BFEFDA /* APCTheme.m in Sources */, 0894654E1A8C1F0200A983AC /* APCInsightBarView.m in Sources */, @@ -3590,13 +3673,13 @@ F5F12AB11A2F78490015982C /* APCSignUpMedicalInfoViewController.m in Sources */, F5F12ABF1A2F78490015982C /* APCDashboardViewController.m in Sources */, CFFDEDF61A95734000B25581 /* APCMedicationTrackerSetupViewController.m in Sources */, + 369C77971B1FB317007DD687 /* APCActivitiesViewSection.m in Sources */, F5F12A761A2F78490015982C /* APCPieGraphView.m in Sources */, 7B544B341ADF084F00361FB6 /* APCDisplacementTrackingCollector.m in Sources */, F5F12B011A2F78490015982C /* APCSimpleTaskSummaryViewController.m in Sources */, F5B946331A7309A20034C522 /* ZZDeflateOutputStream.m in Sources */, F5F12AED1A2F78490015982C /* APCDashboardMessageTableViewCell.m in Sources */, F5F12AE31A2F78490015982C /* APCTextFieldTableViewCell.m in Sources */, - F5B947CE1A73272C0034C522 /* SBBGuidCreatedOnVersionHolder+APCAdditions.m in Sources */, 369E27FF1A96B7A200D35DFA /* APCMedTrackerDailyDosageRecord+Helper.m in Sources */, 369E27F41A96B7A200D35DFA /* APCMedicationLozenge.m in Sources */, 7BF54F981AA158E50081C935 /* APCHorizontalBottomThinLineView.m in Sources */, @@ -3644,6 +3727,7 @@ F5B947BC1A73272C0034C522 /* NSBundle+Helper.m in Sources */, 5BD6EBBA1A9C77D900C3BFB0 /* APCDiscreteGraphView.m in Sources */, F5F12A031A2F78490015982C /* APCScheduledTask.m in Sources */, + 366345921B1F8627003CC0EF /* NSArray+APCHelper.m in Sources */, F5B948131A73272C0034C522 /* APCScheduler.m in Sources */, 3654318E1A9A7BC200D66D97 /* APCMedTrackerInflatableItem.m in Sources */, CFFDEDEA1A95734000B25581 /* APCLozengeButton.m in Sources */, @@ -3676,6 +3760,7 @@ F5F12A821A2F78490015982C /* APCPresentAnimator.m in Sources */, F5F12AA91A2F78490015982C /* APCInclusionCriteriaViewController.m in Sources */, CFFDED7D1A95731F00B25581 /* NSDate+MedicationTracker.m in Sources */, + 366345821B1F857C003CC0EF /* APCDataMigrationPolicy_Model4ToModel6.m in Sources */, 3627D3491A9A7517006B02E8 /* APCMedTrackerMedication.m in Sources */, F5F12A801A2F78490015982C /* APCLineGraphView.m in Sources */, F5B947C81A73272C0034C522 /* NSObject+Helper.m in Sources */, @@ -3690,6 +3775,7 @@ F5F12ACD1A2F78490015982C /* APCSettingsViewController.m in Sources */, F5B946251A7309A20034C522 /* ZZArchive.mm in Sources */, 368BAFEA1A9AD91A00F04ABB /* APCMedTrackerDailyDosageRecord.m in Sources */, + 366345AA1B1F8666003CC0EF /* APCTopLevelScheduleEnumerator.m in Sources */, F5B946301A7309A20034C522 /* ZZDataChannelOutput.m in Sources */, F5F12AA51A2F78490015982C /* APCSignInViewController.m in Sources */, F5F12ADB1A2F78490015982C /* APCPickerTableViewCell.m in Sources */, @@ -3727,99 +3813,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ - 3624498B1A7C68D700812317 /* DebugAndSendToDataVerificationServer */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - "USE_DATA_VERIFICATION_CLIENT=1", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = "$(OTHER_LDFLAGS)"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = DebugAndSendToDataVerificationServer; - }; - 3624498C1A7C68D700812317 /* DebugAndSendToDataVerificationServer */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; - INFOPLIST_FILE = "$(SRCROOT)/APCAppCore/Resources/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_CFLAGS = ( - "-Wextra", - "-Wall", - ); - OTHER_LDFLAGS = ""; - PRODUCT_NAME = APCAppCore; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = DebugAndSendToDataVerificationServer; - }; - 3624498D1A7C68D700812317 /* DebugAndSendToDataVerificationServer */ = { - isa = XCBuildConfiguration; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(PROJECT_DIR)/ResearchKit", - "$(PROJECT_DIR)", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = APCAppCoreTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - PRODUCT_NAME = APCAppCoreTests; - }; - name = DebugAndSendToDataVerificationServer; - }; F5179B3A19D09128001DCCB7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4094,7 +4087,6 @@ isa = XCConfigurationList; buildConfigurations = ( F5179B3A19D09128001DCCB7 /* Debug */, - 3624498B1A7C68D700812317 /* DebugAndSendToDataVerificationServer */, F58767F319E4A20E00254897 /* Development */, F5179B3B19D09128001DCCB7 /* Release */, ); @@ -4105,7 +4097,6 @@ isa = XCConfigurationList; buildConfigurations = ( F5179B3D19D09128001DCCB7 /* Debug */, - 3624498C1A7C68D700812317 /* DebugAndSendToDataVerificationServer */, F58767F419E4A20E00254897 /* Development */, F5179B3E19D09128001DCCB7 /* Release */, ); @@ -4116,7 +4107,6 @@ isa = XCConfigurationList; buildConfigurations = ( F5179B4019D09128001DCCB7 /* Debug */, - 3624498D1A7C68D700812317 /* DebugAndSendToDataVerificationServer */, F58767F519E4A20E00254897 /* Development */, F5179B4119D09128001DCCB7 /* Release */, ); @@ -4129,12 +4119,14 @@ F5F128981A2F78490015982C /* APCModel.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + 366345791B1F84F0003CC0EF /* APCModel 6.xcdatamodel */, + 366345781B1F84DD003CC0EF /* APCModel 5.xcdatamodel */, 7BA5D9971AA43E96006F505F /* APCModel 4.xcdatamodel */, 36469C311AA1433700C10CA7 /* APCModel 2.xcdatamodel */, 36469C321AA1650F00C10CA7 /* APCModel 3.xcdatamodel */, F5F128991A2F78490015982C /* APCModel.xcdatamodel */, ); - currentVersion = 7BA5D9971AA43E96006F505F /* APCModel 4.xcdatamodel */; + currentVersion = 366345791B1F84F0003CC0EF /* APCModel 6.xcdatamodel */; path = APCModel.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; diff --git a/APCAppCore/APCAppCore/APCAppCore.h b/APCAppCore/APCAppCore/APCAppCore.h index 32c919f5..97020f7f 100644 --- a/APCAppCore/APCAppCore/APCAppCore.h +++ b/APCAppCore/APCAppCore/APCAppCore.h @@ -32,6 +32,8 @@ // #import +#import + //! Project version number for APCAppCore. FOUNDATION_EXPORT double APCAppCoreVersionNumber; @@ -39,9 +41,10 @@ FOUNDATION_EXPORT double APCAppCoreVersionNumber; //! Project version string for APCAppCore. FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; -#import -//Headers +/* ------------------------------------- + Headers + --------------------------------------- */ #import #import #import @@ -59,7 +62,9 @@ FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; #import #import -// Tasks +/* ------------------------------------- + Tasks + --------------------------------------- */ #import #import #import @@ -94,7 +99,6 @@ FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; #import #import -/* UI */ /* ------------------------- Onboarding ViewControllers ------------------------- */ @@ -162,7 +166,6 @@ FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; /* ------------------------- Medication Tracking Setup Controllers ------------------------- */ - #import #import #import @@ -182,7 +185,6 @@ FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; /* ------------------------- Medication Tracking App Level Components ------------------------- */ - #import #import #import @@ -214,7 +216,6 @@ FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; /* ------------------------- Views ------------------------- */ - #import #import #import @@ -300,7 +301,6 @@ FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; #import #import #import -#import #import #import #import @@ -310,6 +310,7 @@ FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; #import #import #import + /* ------------------------- Appearance ------------------------- */ @@ -319,7 +320,7 @@ FOUNDATION_EXPORT const unsigned char APCAppCoreVersionString[]; #import /* ------------------------- - Schedule and ScheduleExpression components + Scheduler ------------------------- */ #import #import diff --git a/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor+Bridge.h b/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor+Bridge.h index 75e65b00..99d6deac 100644 --- a/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor+Bridge.h +++ b/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor+Bridge.h @@ -33,8 +33,10 @@ #import "APCDataMonitor.h" +typedef void (^APCDataMonitorResponseHandler) (NSError *error); + @interface APCDataMonitor (Bridge) -- (void) refreshFromBridgeOnCompletion: (void (^)(NSError * error)) completionBlock; -- (void) batchUploadDataToBridgeOnCompletion: (void (^)(NSError * error)) completionBlock; -- (void) uploadZipFile:(NSString*) path onCompletion: (void (^)(NSError * error)) completionBlock; +- (void) refreshFromBridgeOnCompletion: (APCDataMonitorResponseHandler) completionBlock; +- (void) batchUploadDataToBridgeOnCompletion: (APCDataMonitorResponseHandler) completionBlock; +- (void) uploadZipFile: (NSString*) path onCompletion: (APCDataMonitorResponseHandler) completionBlock; @end diff --git a/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor+Bridge.m b/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor+Bridge.m index 9b24b798..bda1b7fa 100644 --- a/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor+Bridge.m +++ b/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor+Bridge.m @@ -32,39 +32,55 @@ // #import "APCDataMonitor+Bridge.h" -#import "APCSchedule+Bridge.h" #import "APCAppCore.h" NSString *const kFirstTimeRefreshToday = @"FirstTimeRefreshToday"; @implementation APCDataMonitor (Bridge) -- (void) refreshFromBridgeOnCompletion: (void (^)(NSError * error)) completionBlock +- (void) refreshFromBridgeOnCompletion: (APCDataMonitorResponseHandler) completionBlock { - if (self.dataSubstrate.currentUser.isConsented) { - [APCSchedule updateSchedulesOnCompletion:^(NSError *error) { - if (!error) { - [self.scheduler updateScheduledTasksIfNotUpdatingWithRange:kAPCSchedulerDateRangeToday]; - [self.scheduler updateScheduledTasksIfNotUpdatingWithRange:kAPCSchedulerDateRangeTomorrow]; - [APCTask refreshSurveysOnCompletion:^(NSError *error) { - dispatch_async(dispatch_get_main_queue(), ^{ - [[NSNotificationCenter defaultCenter] postNotificationName:APCUpdateActivityNotification object:self userInfo:NULL]; - }); - if (completionBlock) { - completionBlock(error); - } - }]; + if (self.dataSubstrate.currentUser.isConsented) + { + __weak typeof(self) weakSelf = self; - } - else { - if (completionBlock) { - completionBlock(error); - } - } - }]; + [[APCScheduler defaultScheduler] fetchTasksAndSchedulesFromServerAndThenUseThisQueue: [NSOperationQueue mainQueue] + toDoThisWhenDone: ^(NSError *errorFromServerFetch) + { + if (errorFromServerFetch) + { + [weakSelf finishRefreshCommandPassingError: errorFromServerFetch + toCompletionBlock: completionBlock]; + } + else + { + [APCTask refreshSurveysOnCompletion: ^(NSError *errorFromRefreshingSurveys) { + + [weakSelf finishRefreshCommandPassingError: errorFromRefreshingSurveys + toCompletionBlock: completionBlock]; + + }]; + } + }]; } } +- (void) finishRefreshCommandPassingError: (NSError *) error + toCompletionBlock: (APCDataMonitorResponseHandler) completionBlock +{ + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + + if (completionBlock) + { + completionBlock (error); + } + + [[NSNotificationCenter defaultCenter] postNotificationName: APCUpdateActivityNotification + object: self + userInfo: nil]; + }]; +} + - (void) batchUploadDataToBridgeOnCompletion: (void (^)(NSError * error)) completionBlock { if (self.dataSubstrate.currentUser.isConsented && !self.batchUploadingInProgress) { diff --git a/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor.m b/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor.m index 9fac5be8..84b383f4 100644 --- a/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor.m +++ b/APCAppCore/APCAppCore/DataMonitor/APCDataMonitor.m @@ -32,7 +32,6 @@ // #import "APCAppCore.h" -#import "APCSchedule+Bridge.h" #import "APCDataMonitor+Bridge.h" @interface APCDataMonitor () @@ -47,7 +46,6 @@ - (instancetype)initWithDataSubstrate:(APCDataSubstrate *)dataSubstrate schedul if (self) { self.dataSubstrate = dataSubstrate; self.scheduler = scheduler; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateScheduledTasks) name:APCScheduleUpdatedNotification object:nil]; } return self; } @@ -78,26 +76,18 @@ - (void) addDidEnterBackground - (void) userConsented { [(APCAppDelegate*)[UIApplication sharedApplication].delegate setUpCollectors]; - [self.scheduler updateScheduledTasksIfNotUpdatingWithRange:kAPCSchedulerDateRangeToday]; - [self.scheduler updateScheduledTasksIfNotUpdatingWithRange:kAPCSchedulerDateRangeTomorrow]; + [self refreshFromBridgeOnCompletion:^(NSError *error) { APCLogError2 (error); [self batchUploadDataToBridgeOnCompletion:NULL]; }]; } -- (void) updateScheduledTasks -{ - [self.scheduler updateScheduledTasksIfNotUpdatingWithRange:kAPCSchedulerDateRangeToday]; - [self.scheduler updateScheduledTasksIfNotUpdatingWithRange:kAPCSchedulerDateRangeTomorrow]; -} - - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } - - (void)performCoreDataBlockInBackground:(void (^)(NSManagedObjectContext *))coreDataBlock { NSManagedObjectContext * privateContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; diff --git a/APCAppCore/APCAppCore/DataSubstrate/APCDataSubstrate.h b/APCAppCore/APCAppCore/DataSubstrate/APCDataSubstrate.h index dcd242fb..fc6e9cbf 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/APCDataSubstrate.h +++ b/APCAppCore/APCAppCore/DataSubstrate/APCDataSubstrate.h @@ -70,16 +70,56 @@ #pragma mark - Core Data Public Methods -- (void)loadStaticTasksAndSchedules:(NSDictionary *)jsonDictionary; - /** EXERCISE CAUTION IN CALLING THIS METHOD. */ - (void)resetCoreData; #pragma mark - Core Data Helpers - ONLY RETURNS in NSManagedObjects in mainContext -- (NSUInteger)countOfAllScheduledTasksForToday; -- (NSUInteger)countOfCompletedScheduledTasksForToday; +/** + Tracks the total number of required tasks for "today," whenever + "today" is. This is updated by the Activities screen, or the + CoreData method called by that screen, whenever appropriate. + */ +@property (readonly) NSUInteger countOfTotalRequiredTasksForToday; + +/** + Tracks the total number of completed tasks for "today," whenever + "today" is. This is updated by the Activities screen, or the + CoreData method called by that screen, whenever appropriate. + */ +@property (readonly) NSUInteger countOfTotalCompletedTasksForToday; + +/** + Called by the Activities screen, or the CoreData method + called by that screen, whenever appropriate. Updates the + two -count properties on this object. + */ +- (void) updateCountOfTotalRequiredTasksForToday: (NSUInteger) countOfRequiredTasks + andTotalCompletedTasksToday: (NSUInteger) countOfCompletedTasks; + +/** + Former name for -countOfTotalRequiredTasksForToday. + Please use that method instead. + + This method used to run a CoreData query which counted + today's total (completed + uncompleted) tasks. The + replacement method, in contrast, simply tracks the most + recent stuff appearing on the Activities screen, which + was the point. + */ +- (NSUInteger)countOfAllScheduledTasksForToday __attribute__((deprecated("Please use -countOfTotalRequiredTasksForToday instead."))); + +/** + Former name for -countOfTotalCompletedTasksForToday. + Please use that method instead. + + This method used to run a CoreData query which counted + today's completed tasks. The replacement method, in + contrast, simply tracks the most recent stuff appearing + on the Activities screen, which was the point. + */ +- (NSUInteger) countOfCompletedScheduledTasksForToday __attribute__((deprecated("Please use -countOfTotalCompletedTasksForToday instead."))); #pragma mark - HealthKit diff --git a/APCAppCore/APCAppCore/DataSubstrate/APCDataSubstrate.m b/APCAppCore/APCAppCore/DataSubstrate/APCDataSubstrate.m index 640e06e4..f907e904 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/APCDataSubstrate.m +++ b/APCAppCore/APCAppCore/DataSubstrate/APCDataSubstrate.m @@ -42,6 +42,8 @@ #import "APCSchedule+AddOn.h" #import "APCScheduledTask+AddOn.h" #import "NSError+APCAdditions.h" +#import "APCScheduler.h" + static int dateCheckTimeInterval = 60; @@ -61,13 +63,15 @@ "problem reoccurs, please uninstall and " "reinstall the app."); +static NSString * const kAPCJSONFileKeySchedules = @"schedules"; +static NSString * const kAPCJSONFileKeyTasks = @"tasks"; @interface APCDataSubstrate () - -@property (strong, nonatomic) NSTimer *dateChangeTestTimer;//refreshes Activities if the date crosses midnight. -@property (strong, nonatomic) NSDate *tomorrowAtMidnight; - +@property (nonatomic, strong) NSTimer *dateChangeTestTimer; +@property (nonatomic, strong) NSDate *lastKnownDate; +@property (nonatomic, assign) NSUInteger countOfTotalRequiredTasksForToday; +@property (nonatomic, assign) NSUInteger countOfTotalCompletedTasksForToday; @end @implementation APCDataSubstrate @@ -83,6 +87,11 @@ - (instancetype)initWithPersistentStorePath:(NSString *)storePath { self = [super init]; if (self) { + _dateChangeTestTimer = nil; + _lastKnownDate = [NSDate date]; + _countOfTotalCompletedTasksForToday = 0; + _countOfTotalCompletedTasksForToday = 0; + [self setUpCoreDataStackWithPersistentStorePath:storePath additionalModels:mergedModels]; [self setUpCurrentUser:self.persistentContext]; [self setUpHealthKit]; @@ -110,8 +119,20 @@ - (void)setupParameters - (void)setupNotifications { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(instantiateTimer:) name:UIApplicationWillEnterForegroundNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(instantiateTimer:) name:UIApplicationDidFinishLaunchingNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector (appCameToForeground:) + name: UIApplicationDidFinishLaunchingNotification + object: nil]; + + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector (appCameToForeground:) + name: UIApplicationWillEnterForegroundNotification + object: nil]; + + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector (appWentToBackground:) + name: UIApplicationDidEnterBackgroundNotification + object: nil]; } @@ -243,12 +264,6 @@ - (void)mergeChangesToMainContext:(NSNotification*) notification #pragma mark - Core Data Public Methods -- (void)loadStaticTasksAndSchedules:(NSDictionary *)jsonDictionary -{ - [APCTask createTasksFromJSON:jsonDictionary[@"tasks"] inContext:self.persistentContext]; - [APCSchedule createSchedulesFromJSON:jsonDictionary[@"schedules"] inContext:self.persistentContext]; -} - - (void)resetCoreData { //EXERCISE CAUTION IN CALLING THIS METHOD @@ -260,8 +275,8 @@ - (void)resetCoreData APCLogError2 (error); [self removeSqliteStore]; [self setUpPersistentStore]; - APCAppDelegate * appDelegate = (APCAppDelegate*)[UIApplication sharedApplication].delegate; - [appDelegate loadStaticTasksAndSchedulesIfNecessary]; + APCAppDelegate * appDelegate = [APCAppDelegate sharedAppDelegate]; + [appDelegate.scheduler loadTasksAndSchedulesFromDiskAndThenUseThisQueue: nil toDoThisWhenDone: nil]; } @@ -309,14 +324,23 @@ - (NSArray *)scheduledTasksForPredicate:(NSPredicate *)predicate sortDescriptors return nil; } +- (void) updateCountOfTotalRequiredTasksForToday: (NSUInteger) countOfRequiredTasks + andTotalCompletedTasksToday: (NSUInteger) countOfCompletedTasks +{ + self.countOfTotalRequiredTasksForToday = countOfRequiredTasks; + self.countOfTotalCompletedTasksForToday = countOfCompletedTasks; +} + +// This method is deprecated. See .h file for details. - (NSUInteger)countOfAllScheduledTasksForToday { - return [APCScheduledTask countOfAllScheduledTasksTodayInContext:self.mainContext]; + return self.countOfTotalRequiredTasksForToday; } +// This method is deprecated. See .h file for details. - (NSUInteger)countOfCompletedScheduledTasksForToday { - return [APCScheduledTask countOfAllCompletedTasksTodayInContext:self.mainContext]; + return self.countOfTotalCompletedTasksForToday; } @@ -330,18 +354,84 @@ - (void)parameters:(APCParameters *)__unused parameters didFailWithError:(NSErro #pragma mark - Date Change Test Timer -- (void)instantiateTimer:(NSNotification *)__unused notification +- (void)appCameToForeground:(NSNotification *)__unused notification { - self.tomorrowAtMidnight = [NSDate tomorrowAtMidnight]; - self.dateChangeTestTimer = [NSTimer scheduledTimerWithTimeInterval:dateCheckTimeInterval target:self selector:@selector(didDateCrossMidnight:) userInfo:nil repeats:YES]; + APCLogDebug (@"Handling date changes (DataSubstrate): The app is back in the foreground. Restarting the date-change timer, and checking immediately for a date change."); + + [self hootAndHollerIfTheDateCrossedMidnight]; + [self startTimer]; } -- (void)didDateCrossMidnight:(NSNotification *)__unused notification +- (void)appWentToBackground:(NSNotification *)__unused notification { - if ([[NSDate new] compare:self.tomorrowAtMidnight] == NSOrderedDescending || [[NSDate new] compare:self.tomorrowAtMidnight] == NSOrderedSame) { - [[NSNotificationCenter defaultCenter] postNotificationName:APCDayChangedNotification object:nil]; - self.tomorrowAtMidnight = [NSDate tomorrowAtMidnight]; + APCLogDebug (@"Handling date changes (DataSubstrate): The app has moved to the background. Cancelling the date-change timer."); + + [self stopTimer]; +} + +- (void)startTimer +{ + /* + We can only stop a timer on the thread from which + we started it. Since this block of code is + very small, the main thread is fine. + */ + [[NSOperationQueue mainQueue] addOperationWithBlock: ^{ + + [self stopTimerInternal]; + + self.dateChangeTestTimer = [NSTimer scheduledTimerWithTimeInterval: dateCheckTimeInterval + target: self + selector: @selector (hootAndHollerIfTheDateCrossedMidnight) + userInfo: nil + repeats: YES]; + }]; +} + +- (void)stopTimer +{ + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + + [self stopTimerInternal]; + + }]; +} + +/** + Intended to be called only from within the above + -startTimer and -stopTimer methods, above. + */ +- (void)stopTimerInternal +{ + if (self.dateChangeTestTimer != nil) + { + [self.dateChangeTestTimer invalidate]; + self.dateChangeTestTimer = nil; } } +- (void)hootAndHollerIfTheDateCrossedMidnight +{ + [[NSOperationQueue mainQueue] addOperationWithBlock: ^{ + + NSDate *now = [NSDate date]; + + /** + This calcluation handles the date moving both + forward and backward, so it handles normal + calendar-day turnovers as well as debugging + situations. + */ + if (! [now isSameDayAsDate: self.lastKnownDate]) + { + APCLogDebug (@"Handling date changes (DataSubstrate): The date has changed. Sending notification."); + + self.lastKnownDate = now; + + [[NSNotificationCenter defaultCenter] postNotificationName: APCDayChangedNotification + object: nil]; + } + }]; +} + @end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationMetadata_Model4ToModel6.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationMetadata_Model4ToModel6.h new file mode 100644 index 00000000..545610a3 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationMetadata_Model4ToModel6.h @@ -0,0 +1,52 @@ +// +// APCDataMigrationMetadata_Model4ToModel6.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + +/** + A tiny class we use to maintain state during a data + migration. We shove an instance of this object into the + MigrationManager's userInfo dictionary, and then retrieve + it at various points to inspect the progress of the + migration. Allows us to only do certain processes when + all the required objects have been migrated. + */ +@interface APCDataMigrationMetadata_Model4ToModel6 : NSObject + +@property (nonatomic, assign) BOOL haveMigratedUserDataYet; +@property (nonatomic, assign) BOOL haveMigratedScheduleDataYet; +@property (nonatomic, assign) BOOL haveMigratedScheduleRelationshipsYet; +@property (nonatomic, assign) BOOL haveMigratedTaskRelationshipsYet; +@property (nonatomic, assign) BOOL haveMigratedScheduledTaskRelationshipsYet; + +@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationMetadata_Model4ToModel6.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationMetadata_Model4ToModel6.m new file mode 100644 index 00000000..49bba333 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationMetadata_Model4ToModel6.m @@ -0,0 +1,54 @@ +// +// APCDataMigrationMetadata_Model4ToModel6.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCDataMigrationMetadata_Model4ToModel6.h" + +@implementation APCDataMigrationMetadata_Model4ToModel6 + +- (instancetype) init +{ + self = [super init]; + + if (self) + { + _haveMigratedUserDataYet = NO; + _haveMigratedScheduleDataYet = NO; + _haveMigratedScheduleRelationshipsYet = NO; + _haveMigratedTaskRelationshipsYet = NO; + _haveMigratedScheduledTaskRelationshipsYet = NO; + } + + return self; +} + +@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationPolicy_Model4ToModel6.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationPolicy_Model4ToModel6.h new file mode 100644 index 00000000..3b90a3c9 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationPolicy_Model4ToModel6.h @@ -0,0 +1,44 @@ +// +// APCDataMigrationPolicy_Model4ToModel6.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + +/** + Used automatically when migrating from our database model + 4 to model 6. (Model 5 was internal, not released to the + outside world.) To see how this was installed, please + see the MODEL_MIGRATION_README.txt file. + */ +@interface APCDataMigrationPolicy_Model4ToModel6 : NSEntityMigrationPolicy + +@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationPolicy_Model4ToModel6.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationPolicy_Model4ToModel6.m new file mode 100644 index 00000000..48930d7e --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDataMigrationPolicy_Model4ToModel6.m @@ -0,0 +1,528 @@ +// +// APCDataMigrationPolicy_Model4ToModel6.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCDataMigrationPolicy_Model4ToModel6.h" + +#import "APCAppDelegate.h" +#import "APCConstants.h" +#import "APCDataMigrationMetadata_Model4ToModel6.h" +#import "APCDataSubstrate.h" +#import "APCLog.h" +#import "APCSchedule+AddOn.h" +#import "APCScheduleDebugPrinter.h" +#import "APCScheduledTask+AddOn.h" +#import "APCStoredUserData.h" +#import "APCTask+AddOn.h" +#import "APCUser.h" +#import "APCUtilities.h" +#import "NSDate+Helper.h" +#import "NSManagedObject+APCHelper.h" +#import "NSError+APCAdditions.h" + + +static NSString * const kAPCTaskIdPrefixGlucoseLog = @"APHLogGlucose"; +static NSString * const kAPCDataMigrationMetadataKey = @"kAPCDataMigrationContextKey"; + +typedef enum : NSUInteger { + kAPCErrorFetchingSchedulesWithNilStartDatesCode, + kAPCErrorFetchingUsersCode, +} kAPCError; + +static NSString * const kAPCErrorDomain = @"APCDataMigrationError"; +static NSString * const kAPCErrorFetchingSchedulesWithNilStartDatesReason = @"Unable to Fetch Schedules"; +static NSString * const kAPCErrorFetchingSchedulesWithNilStartDatesSuggestion = @"Unable to fetch schedules with nil start dates during migration. You may wish to make sure the migration is happening correctly."; +static NSString * const kAPCErrorFetchingUsersReason = @"Unable to Fetch Users"; +static NSString * const kAPCErrorFetchingUsersSuggestion = @"Unable to fetch users during migration. This doesn't mean there are no users in the database; it means we can't tell. You may wish to make sure the migration is happening correctly."; + + + +@implementation APCDataMigrationPolicy_Model4ToModel6 + + + +// --------------------------------------------------------- +#pragma mark - Migration methods called from the model file +// --------------------------------------------------------- + +/* + All methods in this section are called by the migration + process, because we typed these method names and + parameters into the migration-model XML file + (APCMappingModel4ToModel6.xcmappingmodel). For details + on how to do that, see the README file + MODEL_MIGRATION_README.txt. + */ + +- (NSNumber *) generateNewScheduleSourceFromOldSchedule: (id) scheduleFromV4 +{ + NSNumber *result = [self extractScheduleSourceEnumValueFromOldSchedule: scheduleFromV4]; + + return result; +} + +/** + Takes an old Schedule object, extracts its task ID, + and converts that to a bunch of actual Tasks which we + can then relate to the matching Schedule object in + the new model. + */ +- (NSSet *) linkTasksToV6ScheduleMatchingV4Schedule: (id) scheduleFromV4 + usingMigrationManager: (NSMigrationManager *) manager +{ + NSSet *tasksWithCorrectId = nil; + NSManagedObjectContext *context = manager.destinationContext; + NSString *taskIdV4 = [self extractOriginalTaskIdFieldFromScheduleV4: scheduleFromV4]; + + if (taskIdV4.length) + { + NSString *taskIdV6 = [self generateNewTaskIdFromOldTaskId: taskIdV4]; + NSNumber *taskVersionV6 = [self generateNewTaskVersionNumberFromOldTaskId: taskIdV4]; + + NSError *errorFetchingTasks = nil; + NSFetchRequest *request = [APCTask requestWithPredicate: [NSPredicate predicateWithFormat: @"%K == %@ && %K == %@", + NSStringFromSelector (@selector (taskID)), + taskIdV6, + NSStringFromSelector (@selector (taskVersionNumber)), + taskVersionV6]]; + + NSArray *tasks = [context executeFetchRequest: request + error: & errorFetchingTasks]; + + if (! tasks) + { + // We don't really care about the error, but + // for debugging this migration process. + APCLogError2 (errorFetchingTasks); + } + else + { + tasksWithCorrectId = [NSSet setWithArray: tasks]; + } + } + + return tasksWithCorrectId; +} + +- (NSString *) generateNewTaskIdFromOldTaskId: (id) maybeTaskIdFromTaskV4 +{ + NSString *taskIdForV6 = [self extractSageStyleTaskIdFromV4TaskId: maybeTaskIdFromTaskV4]; + + /* + Only the tasks from the server had that format. + If we couldn't extract it, just use whatever we had. + */ + if (taskIdForV6 == nil) + { + taskIdForV6 = maybeTaskIdFromTaskV4; + } + + return taskIdForV6; +} + +- (NSNumber *) generateNewTaskVersionNumberFromOldTaskId: (id) maybeTaskIdFromTaskV4 +{ + // May be nil. No problem. + NSNumber *versionNumber = [self extractSageVersionNumberFromV4TaskId: maybeTaskIdFromTaskV4]; + + return versionNumber; +} + + + +// --------------------------------------------------------- +#pragma mark - Cleanup, validation, other lifecycle methods +// --------------------------------------------------------- + +/* + These are (some of) the lifecycle methods for the Policy + class. Look at the documentation for these methods for + details, as well as the discussion of CoreData's "three- + stage migration": + + https://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmMigrationProcess.html + */ + +- (BOOL) endRelationshipCreationForEntityMapping: (NSEntityMapping *) mapping + manager: (NSMigrationManager *) manager + error: (NSError * __autoreleasing *) __unused error +{ + BOOL result = YES; + APCDataMigrationMetadata_Model4ToModel6 *metadata = [self metadataForManager: manager]; + + if ([mapping.name hasPrefix: NSStringFromClass ([APCStoredUserData class])]) { metadata.haveMigratedUserDataYet = YES; } + else if ([mapping.name hasPrefix: NSStringFromClass ([APCSchedule class])]) { metadata.haveMigratedScheduleDataYet = YES; } + else if ([mapping.name hasPrefix: NSStringFromClass ([APCScheduledTask class])]) { metadata.haveMigratedScheduledTaskRelationshipsYet = YES; } + else if ([mapping.name hasPrefix: NSStringFromClass ([APCTask class])]) { metadata.haveMigratedTaskRelationshipsYet = YES; } + else if ([mapping.name hasPrefix: NSStringFromClass ([APCSchedule class])]) { metadata.haveMigratedScheduleRelationshipsYet = YES; } + + if (metadata.haveMigratedUserDataYet && metadata.haveMigratedScheduleDataYet) + { + [self generateStartDatesForSchedulesWithNilStartDatesUsingManager: manager]; + } + else if (metadata.haveMigratedScheduleRelationshipsYet && + metadata.haveMigratedTaskRelationshipsYet && + metadata.haveMigratedScheduledTaskRelationshipsYet) + { + // For now, just breaking here so I can inspect the results. + [self printMigrationStatusUsingMigrationManager: manager]; + } + + return result; +} + + + +// --------------------------------------------------------- +#pragma mark - Migration methods called from the lifecyle methods +// --------------------------------------------------------- + +- (APCDataMigrationMetadata_Model4ToModel6 *) metadataForManager: (NSMigrationManager *) manager +{ + APCDataMigrationMetadata_Model4ToModel6 *metadata = manager.userInfo [kAPCDataMigrationMetadataKey]; + + if (metadata == nil) + { + metadata = [APCDataMigrationMetadata_Model4ToModel6 new]; + manager.userInfo = @{ kAPCDataMigrationMetadataKey : metadata }; + } + + return metadata; +} + +- (void) generateStartDatesForSchedulesWithNilStartDatesUsingManager: (NSMigrationManager *) manager +{ + NSManagedObjectContext *context = manager.destinationContext; + NSError *errorFetchingSchedules = nil; + + NSPredicate *nilStartDates = [NSPredicate predicateWithFormat: @"%K == %@", + NSStringFromSelector(@selector(startsOn)), + nil]; + + NSFetchRequest *requestNilStartDates = [APCSchedule requestWithPredicate: nilStartDates]; + + NSArray *schedulesWithNilStartDates = [context executeFetchRequest: requestNilStartDates + error: & errorFetchingSchedules]; + + if (! schedulesWithNilStartDates) + { + // Error. Should literally never happen if the + // rest of this migration has been progressing + // at all -- we shouldn't have gotten here. + NSError *couldntQueryForSchedulesWithNilStartDates = [NSError errorWithCode: kAPCErrorFetchingSchedulesWithNilStartDatesCode + domain: kAPCErrorDomain + failureReason: kAPCErrorFetchingSchedulesWithNilStartDatesReason + recoverySuggestion: kAPCErrorFetchingSchedulesWithNilStartDatesSuggestion + nestedError: errorFetchingSchedules]; + + APCLogError2 (couldntQueryForSchedulesWithNilStartDates); + } + else if (schedulesWithNilStartDates.count == 0) + { + // Nothing to worry about. + } + else // have schedules with nil start dates. + { + APCScheduleDebugPrinter *printer = [APCScheduleDebugPrinter new]; + NSMutableString *printout = [NSMutableString new]; + + [printer printArrayOfSchedules: schedulesWithNilStartDates + withLabel: @"\n\n During migration. About to fill these schedules with start dates" + intoMutableString: printout]; + + NSDate *consentSignatureDate = nil; + NSError *errorFetchingUsers = nil; + NSFetchRequest *requestAllUsers = [APCStoredUserData request]; + NSArray *users = [context executeFetchRequest: requestAllUsers error: & errorFetchingUsers]; + + if (! users) + { + // Error. Should literally never happen if the + // rest of this migration has been progressing + // at all -- we shouldn't have gotten here. + NSError *couldntQueryForUsers = [NSError errorWithCode: kAPCErrorFetchingUsersCode + domain: kAPCErrorDomain + failureReason: kAPCErrorFetchingUsersReason + recoverySuggestion: kAPCErrorFetchingUsersSuggestion + nestedError: errorFetchingSchedules]; + + APCLogError2 (couldntQueryForUsers); + } + else if (users.count == 0) + { + // Hm. Shouldn't happen, but we can deal with it (below). + } + else + { + // There should truly never be more than one user, as of the date + // of this migration -- that's not how our code works. + APCStoredUserData *user = users.firstObject; + consentSignatureDate = user.consentSignatureDate; + } + + if (consentSignatureDate == nil) + { + // Same logic as in -[APCUser estimatedConsentDate]: + // if we can't get the user's consent date, try a + // series of best guesses, ending with today's date. + consentSignatureDate = [APCUser proxyForConsentDate]; + + // Should truly never happen, but: + if (consentSignatureDate == nil) + { + consentSignatureDate = [NSDate date]; + } + } + + for (APCSchedule *schedule in schedulesWithNilStartDates) + { + if (schedule.startsOn == nil) + { + /* + The effectiveStartDate is startsOn + delay, + but migrated schedules don't have delays. + (We're migrating to a data model that + gives us delays.) + */ + schedule.startsOn = consentSignatureDate; + schedule.effectiveStartDate = consentSignatureDate.startOfDay; + } + else + { + /* + Should never happen. Prevented by the fetchRequest at + the top of this method. (This "else" clause serves to + ensure that we don't destroy existing start dates; + ending up here is not a problem.) + */ + } + } + + [printer printArrayOfSchedules: schedulesWithNilStartDates + withLabel: @"Here's what we did" + intoMutableString: printout]; + + APCLogDebug (@"%@", printout); + } +} + + + +// --------------------------------------------------------- +#pragma mark - Utilities +// --------------------------------------------------------- + +/* + The methods in this section are called by the + migration-mapping methods above. + */ + +- (NSString *) extractOriginalTaskIdFieldFromScheduleV4: (id) scheduleFromV4 +{ + NSString *result = nil; + + if ([scheduleFromV4 respondsToSelector: @selector (taskID)]) + { + id maybeTaskId = [scheduleFromV4 taskID]; + + if (maybeTaskId != nil && [maybeTaskId isKindOfClass: [NSString class]]) + { + result = maybeTaskId; + } + } + + return result; +} + +/** + Our old "taskID"s were a mash of the original Sage task ID, + a date, and version number if it was available. We ignore + the date, and use the task ID and version number directly. + + Compare with -extractSageVersionNumberFromV4TaskId:. + This method extracts the leading "id" part; that method + extracts the trailing version-number part. + + Here was the original method that converted the ID, date, + and version into a single string. This is what we need + to undo. This method was in a category we'd written around + a Sage-provided class, SBBGuidCreatedOnVersionHolder: + + - (NSString*) uniqueID + { + NSString * retValue; + if (self.version != nil) { + retValue = [NSString stringWithFormat:@"%@-%@-%@", self.guid, self.createdOn, self.version]; + } + else if (self.versionValue > 0) + { + retValue = [NSString stringWithFormat:@"%@-%@-%lld", self.guid, self.createdOn, self.versionValue]; + } + else + { + retValue = [NSString stringWithFormat:@"%@-%@", self.guid, self.createdOn]; + } + return retValue; + } + */ +- (NSString *) extractSageStyleTaskIdFromV4TaskId: (id) maybeTaskIdFromTaskV4 +{ + NSString *taskIdForV6 = nil; + + if (maybeTaskIdFromTaskV4 != nil && [maybeTaskIdFromTaskV4 isKindOfClass: [NSString class]]) + { + /* + A regular expression to recognize task IDs. + Sample format: 88e6db5b-0afa-499f-88e5-83465471be3d + */ + NSString *uuidRegex = (@"" + "[a-fA-F0-9]{8}\\-" // 8 hex chars + literal hyphen + "[a-fA-F0-9]{4}\\-" // 4 hex chars + literal hyphen + "[a-fA-F0-9]{4}\\-" // 4 hex chars + literal hyphen + "[a-fA-F0-9]{4}\\-" // 4 hex chars + literal hyphen + "[a-fA-F0-9]{12}"); // 12 hex chars + + NSString *taskIdFromV4 = maybeTaskIdFromTaskV4; + + NSRange uuidRange = [taskIdFromV4 rangeOfString: uuidRegex + options: NSRegularExpressionSearch | NSCaseInsensitiveSearch]; + + /* + This is part of the analysis: the task ID has to + be the first part of the string. + */ + if (uuidRange.location == 0) + { + taskIdForV6 = [taskIdFromV4 substringWithRange: uuidRange]; + } + } + + return taskIdForV6; +} + +/** + See comments on -extractSageStyleTaskIdFromV4TaskId:. + That method extracts the leading "id" part; this method + extracts the trailing version-number part. + + In practice, the version numbers were often nil, so + this method will likely often return nil. + */ +- (NSNumber *) extractSageVersionNumberFromV4TaskId: (id) maybeTaskIdFromTaskV4 +{ + NSNumber *versionNumber = nil; + + NSString *taskIdForV6 = [self extractSageStyleTaskIdFromV4TaskId: maybeTaskIdFromTaskV4]; + + if (taskIdForV6 != nil) + { + NSString *taskIdFromV4 = maybeTaskIdFromTaskV4; + NSString *stuffAfterStrippingTaskId = [taskIdFromV4 substringFromIndex: taskIdFromV4.length]; + NSString *regexForTrailingHyphenAndInteger = @"\\-\\d+$"; + NSRange versionNumberRange = [stuffAfterStrippingTaskId rangeOfString: regexForTrailingHyphenAndInteger + options: NSRegularExpressionSearch]; + + if (versionNumberRange.location != NSNotFound) + { + NSString *hyphenAndInteger = [stuffAfterStrippingTaskId substringFromIndex: versionNumberRange.location]; + NSString *theInteger = [hyphenAndInteger substringFromIndex: @"-".length]; + NSUInteger versionValue = theInteger.integerValue; + versionNumber = @(versionValue); + } + } + + return versionNumber; +} + +- (NSNumber *) extractScheduleSourceEnumValueFromOldSchedule: (id) scheduleFromV4 +{ + NSNumber *result = nil; + APCScheduleSource scheduleSource = APCScheduleSourceLocalDisk; + + /* + This refers to the property -[APCSchedule remoteUpdatable] + in the code we're migrating from. + */ + id maybeRemoteUpdatable = [scheduleFromV4 valueForKey: @"remoteUpdatable"]; + + if (maybeRemoteUpdatable != nil && [maybeRemoteUpdatable isKindOfClass: [NSNumber class]]) + { + NSNumber *remoteUpdatable = maybeRemoteUpdatable; + BOOL isRemoteUpdatable = remoteUpdatable.boolValue; + scheduleSource = isRemoteUpdatable ? APCScheduleSourceServer : APCScheduleSourceLocalDisk; + } + else + { + scheduleSource = APCScheduleSourceLocalDisk; + } + + /* + If this is the singleton schedule managing the Glucose + Log, set its Source to GlucoseLog. + */ + NSString *taskId = [self extractOriginalTaskIdFieldFromScheduleV4: scheduleFromV4]; + + if (taskId != nil && [taskId hasPrefix: kAPCTaskIdPrefixGlucoseLog]) + { + scheduleSource = APCScheduleSourceGlucoseLog; + } + + result = @(scheduleSource); + return result; +} + +- (void) printMigrationStatusUsingMigrationManager: (NSMigrationManager *) manager +{ + NSManagedObjectContext *context = manager.destinationContext; + + NSArray *schedules = [context executeFetchRequest: [APCSchedule request] error: nil]; + NSArray *tasks = [context executeFetchRequest: [APCTask request] error: nil]; + NSArray *completedItems = [context executeFetchRequest: [APCScheduledTask request] error: nil]; + + NSMutableString *printout = [NSMutableString stringWithFormat: + @"\n\n========= Current state of the world: ==========\n\n" + "-------------- Schedules --------------\n%@\n\n" + "-------------- Tasks --------------\n%@\n\n" + "-------------- Completed ScheduledTasks --------------\n%@", + schedules, + tasks, + completedItems]; + + [printout replaceOccurrencesOfString: @"\\n" withString: @"\n" options: 0 range: NSMakeRange (0, printout.length)]; + [printout replaceOccurrencesOfString: @"\\\"" withString: @"\"" options: 0 range: NSMakeRange (0, printout.length)]; + + APCLogDebug (@"%@", printout); + APCLogDebug (@""); // easy place to put a breakpoint, in order to inspect the printout +} + + +@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCDateRange.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDateRange.m index 0caeabce..c06fccb1 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCDateRange.m +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCDateRange.m @@ -52,9 +52,15 @@ - (instancetype) initWithStartDate: (NSDate*) startDate endDate: (NSDate*) endDa - (instancetype) initWithStartDate:(NSDate *)startDate durationString: (NSString*) durationString { NSParameterAssert(startDate); - NSParameterAssert(durationString); + + NSTimeInterval delta = 0; + + if (durationString.length > 0) + { + delta = [NSDate timeIntervalByAddingISO8601Duration: durationString + toDate: startDate]; + } - NSTimeInterval delta = [NSDate parseISO8601DurationString: durationString]; self = [self initWithStartDate:startDate durationInterval:delta]; return self; } diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCMappingModel4ToModel6.xcmappingmodel/xcmapping.xml b/APCAppCore/APCAppCore/DataSubstrate/Model/APCMappingModel4ToModel6.xcmappingmodel/xcmapping.xml new file mode 100644 index 00000000..204ed162 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCMappingModel4ToModel6.xcmappingmodel/xcmapping.xml @@ -0,0 +1,644 @@ + + + + + + 134481920 + 1994F3E2-3BE3-4DAD-92D3-8967EED8F7A7 + 221 + + + + NSPersistenceFrameworkVersion + 526 + NSStoreModelVersionHashes + + XDDevAttributeMapping + + 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= + + XDDevEntityMapping + + qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= + + XDDevMappingModel + + EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= + + XDDevPropertyMapping + + XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= + + XDDevRelationshipMapping + + akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= + + + NSStoreModelVersionHashesVersion + 3 + NSStoreModelVersionIdentifiers + + + + + + + + + effectiveStartDate + + + + taskID + + + + numberOfDosesTakenForThisDate + + + + bloodType + + + + effectiveEndDate + + + + name + + + + taskIsOptional + + + + 1 + dosage + + + + YnBsaXN0MDDUAQIDBAUGXV5YJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8Q +FgcIExQZGiIoLS4zODk8PUFGR0xQVlhVJG51bGzVCQoLDA0ODxAREllOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzViRjbGFzc4ADgAIQBIAGgBVfEDpkZXN0aW5hdGlvbkluc3RhbmNlc0ZvckVudGl0eU1hcHBpbmdOYW1lZDpzb3VyY2VJbnN0YW5jZXM60xULDRYXGFpOU1ZhcmlhYmxlgAQQAoAFV21hbmFnZXLSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXxAUTlNWYXJpYWJsZUV4cHJlc3Npb26jHyAhXxAUTlNWYXJpYWJsZUV4cHJlc3Npb25cTlNFeHByZXNzaW9uWE5TT2JqZWN00iMNJCdaTlMub2JqZWN0c6IlJoAHgAqAFNMpCw0qKyxfEA9OU0NvbnN0YW50VmFsdWWACBAAgAlfECJBUENTY2hlZHVsZWRUYXNrVG9BUENTY2hlZHVsZWRUYXNr0hscLzBfEBlOU0NvbnN0YW50VmFsdWVFeHByZXNzaW9uozEyIV8QGU5TQ29uc3RhbnRWYWx1ZUV4cHJlc3Npb25cTlNFeHByZXNzaW9u1QkKCwwNNDUQNjeADIALgA6AE18QEHZhbHVlRm9yS2V5UGF0aDrTFQsNOhcYgA2ABVZzb3VyY2XSIw0+QKE/gA+AEtMNC0JDREVZTlNLZXlQYXRogBEQCoAQXxAVc2NoZWR1bGVkVGFza3NfdW51c2Vk0hscSElfEBxOU0tleVBhdGhTcGVjaWZpZXJFeHByZXNzaW9uo0pLIV8QHE5TS2V5UGF0aFNwZWNpZmllckV4cHJlc3Npb25cTlNFeHByZXNzaW9u0hscTU5eTlNNdXRhYmxlQXJyYXmjTU8hV05TQXJyYXnSGxxRUl8QE05TS2V5UGF0aEV4cHJlc3Npb26kU1RVIV8QE05TS2V5UGF0aEV4cHJlc3Npb25fEBROU0Z1bmN0aW9uRXhwcmVzc2lvblxOU0V4cHJlc3Npb27SGxxPV6JPIdIbHFlaXxAUTlNGdW5jdGlvbkV4cHJlc3Npb26jW1whXxAUTlNGdW5jdGlvbkV4cHJlc3Npb25cTlNFeHByZXNzaW9uXxAPTlNLZXllZEFyY2hpdmVy0V9gVHJvb3SAAQAIABEAGgAjAC0AMgA3AFAAVgBhAGsAegCNAJkAoACiAKQApgCoAKoA5wDuAPkA+wD9AP8BBwEMARcBIAE3ATsBUgFfAWgBbQF4AXsBfQF/AYEBiAGaAZwBngGgAcUBygHmAeoCBgITAh4CIAIiAiQCJgI5AkACQgJEAksCUAJSAlQCVgJdAmcCaQJrAm0ChQKKAqkCrQLMAtkC3gLtAvEC+QL+AxQDGQMvA0YDUwNYA1sDYAN3A3sDkgOfA7EDtAO5AAAAAAAAAgEAAAAAAAAAYQAAAAAAAAAAAAAAAAAAA7s= + + 1 + scheduledTasks + + + + 1 + schedules + + + + reminderMessage + + + + homeLocationAddress + + + + 1 + prescriptionIAmBasedOn + + + + completed == YES + APCScheduledTask + Undefined + 1 + APCScheduledTask + 1 + + + + + + alphaAsFloat + + + + 1 + generatedSchedule + + + + timesOfDay + + + + updatedAt + + + + scheduleType + + + + APCDBStatus + Undefined + 5 + APCDBStatus + 1 + + + + + + createdAt + + + + dateThisRecordRepresents + + + + completed + + + + YnBsaXN0MDDUAQIDBAUGMzRYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKsH +CBMUGRoiJyorLlUkbnVsbNUJCgsMDQ4PEBESWU5TT3BlcmFuZF5OU1NlbGVjdG9yTmFtZV8QEE5TRXhwcmVzc2lvblR5cGVbTlNBcmd1bWVudHNWJGNsYXNzgAOAAhAEgAaACl8QKWdlbmVyYXRlTmV3U2NoZWR1bGVTb3VyY2VGcm9tT2xkU2NoZWR1bGU60xULDRYXGFpOU1ZhcmlhYmxlgAQQAoAFXGVudGl0eVBvbGljedIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNfEBROU1ZhcmlhYmxlRXhwcmVzc2lvbqMfICFfEBROU1ZhcmlhYmxlRXhwcmVzc2lvblxOU0V4cHJlc3Npb25YTlNPYmplY3TSIw0kJlpOUy5vYmplY3RzoSWAB4AJ0xULDSgXGIAIgAVWc291cmNl0hscLC1XTlNBcnJheaIsIdIbHC8wXxAUTlNGdW5jdGlvbkV4cHJlc3Npb26jMTIhXxAUTlNGdW5jdGlvbkV4cHJlc3Npb25cTlNFeHByZXNzaW9uXxAPTlNLZXllZEFyY2hpdmVy0TU2VHJvb3SAAQAIABEAGgAjAC0AMgA3AEMASQBUAF4AbQCAAIwAkwCVAJcAmQCbAJ0AyQDQANsA3QDfAOEA7gDzAP4BBwEeASIBOQFGAU8BVAFfAWEBYwFlAWwBbgFwAXcBfAGEAYcBjAGjAacBvgHLAd0B4AHlAAAAAAAAAgEAAAAAAAAANwAAAAAAAAAAAAAAAAAAAec= + + scheduleSource + + + + consentSignatureImage + + + + YnBsaXN0MDDUAQIDBAUGPD1YJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKwH +CBMUGRoiJywtMjZVJG51bGzVCQoLDA0ODxAREllOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzViRjbGFzc4ADgAIQBIAGgAtfEBB2YWx1ZUZvcktleVBhdGg60xULDRYXGFpOU1ZhcmlhYmxlgAQQAoAFVnNvdXJjZdIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNfEBROU1ZhcmlhYmxlRXhwcmVzc2lvbqMfICFfEBROU1ZhcmlhYmxlRXhwcmVzc2lvblxOU0V4cHJlc3Npb25YTlNPYmplY3TSIw0kJlpOUy5vYmplY3RzoSWAB4AK0w0LKCkqK1lOU0tleVBhdGiACRAKgAhYc3RhcnRzT27SGxwuL18QHE5TS2V5UGF0aFNwZWNpZmllckV4cHJlc3Npb26jMDEhXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvblxOU0V4cHJlc3Npb27SGxwzNF5OU011dGFibGVBcnJheaMzNSFXTlNBcnJhedIbHDc4XxATTlNLZXlQYXRoRXhwcmVzc2lvbqQ5OjshXxATTlNLZXlQYXRoRXhwcmVzc2lvbl8QFE5TRnVuY3Rpb25FeHByZXNzaW9uXE5TRXhwcmVzc2lvbl8QD05TS2V5ZWRBcmNoaXZlctE+P1Ryb290gAEACAARABoAIwAtADIANwBEAEoAVQBfAG4AgQCNAJQAlgCYAJoAnACeALEAuADDAMUAxwDJANAA1QDgAOkBAAEEARsBKAExATYBQQFDAUUBRwFOAVgBWgFcAV4BZwFsAYsBjwGuAbsBwAHPAdMB2wHgAfYB+wIRAigCNQJHAkoCTwAAAAAAAAIBAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJR + + startsOn + + + + startOn + + + + APCDataMigrationPolicy_Model4ToModel6 + APCStoredUserData + Undefined + 10 + APCStoredUserData + 1 + + + + + + APCMedTrackerPrescription + Undefined + 11 + APCMedTrackerPrescription + 1 + + + + + + didStopUsingOnDoctorsOrders + + + + profileImage + + + + taskDescription + + + + archiveFilename + + + + customSurveyQuestion + + + + createdAt + + + + taskCompletion + + + + taskContentFileName + + + + medicalConditions + + + + 1 + scheduledTask + + + + taskTitle + + + + shouldRemind + + + + redAsInteger + + + + consentSignatureDate + + + + notes + + + + hasHeartDisease + + + + dateStoppedUsing + + + + sharedOptionSelection + + + + createdAt + + + + medications + + + + interval + + + + APCMedTrackerPossibleDosage + Undefined + 2 + APCMedTrackerPossibleDosage + 1 + + + + + + 1 + prescriptionsWhereIAmUsed + + + + scheduleString + + + + updatedAt + + + + 1 + prescriptionsWhereIAmUsed + + + + uid + + + + secondaryInfoSaved + + + + resultSummary + + + + YnBsaXN0MDDUAQIDBAUGUVJYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8Q +EwcIExQZGiInLC0wMTU6O0BESkxVJG51bGzVCQoLDA0ODxAREllOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzViRjbGFzc4ADgAIQBIAGgBJfECpnZW5lcmF0ZU5ld1Rhc2tWZXJzaW9uTnVtYmVyRnJvbU9sZFRhc2tJZDrTFQsNFhcYWk5TVmFyaWFibGWABBACgAVcZW50aXR5UG9saWN50hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc18QFE5TVmFyaWFibGVFeHByZXNzaW9uox8gIV8QFE5TVmFyaWFibGVFeHByZXNzaW9uXE5TRXhwcmVzc2lvblhOU09iamVjdNIjDSQmWk5TLm9iamVjdHOhJYAHgBHVCQoLDA0oKRAqK4AJgAiAC4AQXxAQdmFsdWVGb3JLZXlQYXRoOtMVCw0uFxiACoAFVnNvdXJjZdIjDTI0oTOADIAP0w0LNjc4OVlOU0tleVBhdGiADhAKgA1WdGFza0lE0hscPD1fEBxOU0tleVBhdGhTcGVjaWZpZXJFeHByZXNzaW9uoz4/IV8QHE5TS2V5UGF0aFNwZWNpZmllckV4cHJlc3Npb25cTlNFeHByZXNzaW9u0hscQUJeTlNNdXRhYmxlQXJyYXmjQUMhV05TQXJyYXnSGxxFRl8QE05TS2V5UGF0aEV4cHJlc3Npb26kR0hJIV8QE05TS2V5UGF0aEV4cHJlc3Npb25fEBROU0Z1bmN0aW9uRXhwcmVzc2lvblxOU0V4cHJlc3Npb27SGxxDS6JDIdIbHE1OXxAUTlNGdW5jdGlvbkV4cHJlc3Npb26jT1AhXxAUTlNGdW5jdGlvbkV4cHJlc3Npb25cTlNFeHByZXNzaW9uXxAPTlNLZXllZEFyY2hpdmVy0VNUVHJvb3SAAQAIABEAGgAjAC0AMgA3AE0AUwBeAGgAdwCKAJYAnQCfAKEAowClAKcA1ADbAOYA6ADqAOwA+QD+AQkBEgEpAS0BRAFRAVoBXwFqAWwBbgFwAXsBfQF/AYEBgwGWAZ0BnwGhAagBrQGvAbEBswG6AcQBxgHIAcoB0QHWAfUB+QIYAiUCKgI5Aj0CRQJKAmACZQJ7ApICnwKkAqcCrALDAscC3gLrAv0DAAMFAAAAAAAAAgEAAAAAAAAAVQAAAAAAAAAAAAAAAAAAAwc= + + taskVersionNumber + + + + 1 + task + + + + name + + + + APCResult + Undefined + 3 + APCResult + 1 + + + + + + endsOn + + + + dateStartedUsing + + + + name + + + + createdAt + + + + uploaded + + + + birthDate + + + + 1 + medication + + + + homeLocationLat + + + + greenAsInteger + + + + APCDataMigrationPolicy_Model4ToModel6 + APCSchedule + Undefined + 7 + APCSchedule + 1 + + + + + + blueAsInteger + + + + YnBsaXN0MDDUAQIDBAUGODlYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK0H +CBMUGRoiKCssLzAzVSRudWxs1QkKCwwNDg8QERJZTlNPcGVyYW5kXk5TU2VsZWN0b3JOYW1lXxAQTlNFeHByZXNzaW9uVHlwZVtOU0FyZ3VtZW50c1YkY2xhc3OAA4ACEASABoAMXxA+bGlua1Rhc2tzVG9WNlNjaGVkdWxlTWF0Y2hpbmdWNFNjaGVkdWxlOnVzaW5nTWlncmF0aW9uTWFuYWdlcjrTFQsNFhcYWk5TVmFyaWFibGWABBACgAVcZW50aXR5UG9saWN50hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc18QFE5TVmFyaWFibGVFeHByZXNzaW9uox8gIV8QFE5TVmFyaWFibGVFeHByZXNzaW9uXE5TRXhwcmVzc2lvblhOU09iamVjdNIjDSQnWk5TLm9iamVjdHOiJSaAB4AJgAvTFQsNKRcYgAiABVZzb3VyY2XTFQsNLRcYgAqABVdtYW5hZ2Vy0hscMTJXTlNBcnJheaIxIdIbHDQ1XxAUTlNGdW5jdGlvbkV4cHJlc3Npb26jNjchXxAUTlNGdW5jdGlvbkV4cHJlc3Npb25cTlNFeHByZXNzaW9uXxAPTlNLZXllZEFyY2hpdmVy0To7VHJvb3SAAQAIABEAGgAjAC0AMgA3AEUASwBWAGAAbwCCAI4AlQCXAJkAmwCdAJ8A4ADnAPIA9AD2APgBBQEKARUBHgE1ATkBUAFdAWYBawF2AXkBewF9AX8BhgGIAYoBkQGYAZoBnAGkAakBsQG0AbkB0AHUAesB+AIKAg0CEgAAAAAAAAIBAAAAAAAAADwAAAAAAAAAAAAAAAAAAAIU + + 1 + tasks + + + + YnBsaXN0MDDUAQIDBAUGUVJYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8Q +EwcIExQZGiInLC0wMTU6O0BESkxVJG51bGzVCQoLDA0ODxAREllOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzViRjbGFzc4ADgAIQBIAGgBJfEB9nZW5lcmF0ZU5ld1Rhc2tJZEZyb21PbGRUYXNrSWQ60xULDRYXGFpOU1ZhcmlhYmxlgAQQAoAFXGVudGl0eVBvbGljedIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNfEBROU1ZhcmlhYmxlRXhwcmVzc2lvbqMfICFfEBROU1ZhcmlhYmxlRXhwcmVzc2lvblxOU0V4cHJlc3Npb25YTlNPYmplY3TSIw0kJlpOUy5vYmplY3RzoSWAB4AR1QkKCwwNKCkQKiuACYAIgAuAEF8QEHZhbHVlRm9yS2V5UGF0aDrTFQsNLhcYgAqABVZzb3VyY2XSIw0yNKEzgAyAD9MNCzY3ODlZTlNLZXlQYXRogA4QCoANVnRhc2tJRNIbHDw9XxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqM+PyFfEBxOU0tleVBhdGhTcGVjaWZpZXJFeHByZXNzaW9uXE5TRXhwcmVzc2lvbtIbHEFCXk5TTXV0YWJsZUFycmF5o0FDIVdOU0FycmF50hscRUZfEBNOU0tleVBhdGhFeHByZXNzaW9upEdISSFfEBNOU0tleVBhdGhFeHByZXNzaW9uXxAUTlNGdW5jdGlvbkV4cHJlc3Npb25cTlNFeHByZXNzaW9u0hscQ0uiQyHSGxxNTl8QFE5TRnVuY3Rpb25FeHByZXNzaW9uo09QIV8QFE5TRnVuY3Rpb25FeHByZXNzaW9uXE5TRXhwcmVzc2lvbl8QD05TS2V5ZWRBcmNoaXZlctFTVFRyb290gAEACAARABoAIwAtADIANwBNAFMAXgBoAHcAigCWAJ0AnwChAKMApQCnAMkA0ADbAN0A3wDhAO4A8wD+AQcBHgEiATkBRgFPAVQBXwFhAWMBZQFwAXIBdAF2AXgBiwGSAZQBlgGdAaIBpAGmAagBrwG5AbsBvQG/AcYBywHqAe4CDQIaAh8CLgIyAjoCPwJVAloCcAKHApQCmQKcAqECuAK8AtMC4ALyAvUC+gAAAAAAAAIBAAAAAAAAAFUAAAAAAAAAAAAAAAAAAAL8 + + taskID + + + + name + + + + 1 + scheduledTasks + + + + endOn + + + + updatedAt + + + + endDate + + + + APCMedTrackerInflatableItem + Undefined + 8 + APCMedTrackerInflatableItem + 1 + + + + + + metaData + + + + taskCompletionTimeString + + + + delay + + + + allowContact + + + + numberOfTimesPerDay + + + + homeLocationLong + + + + reminderOffset + + + + expires + + + + amount + + + + startDate + + + + ethnicity + + + + zeroBasedDaysOfTheWeek + + + + 1 + actualDosesTaken + + + + dailyScalesCompletionCounter + + + + naturalSortOrder + + + + 1 + prescriptionsWhereIAmUsed + + + + status + + + + APCMedTrackerPrescriptionColor + Undefined + 9 + APCMedTrackerPrescriptionColor + 1 + + + + + + updatedAt + + + + inActive + + + + APCDataMigrationPolicy_Model4ToModel6 + APCTask + Undefined + 6 + APCTask + 1 + + + + + + consentSignatureName + + + + sleepTime + + + + maxCount + + + + serverConsented + + + + sortString + + + + glucoseLevels + + + + biologicalSex + + + + APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/APCModel 4.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGfxt/HFgkdmVyc2lvblgkb2JqZWN0c1kkYXJjaGl2ZXJUJHRv +cBIAAYagrxEJ2wAHAAgAFwAzADQANQBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAHoAewB8AIIAgwCPAKMApAClAKYApwCoAKkAqgCrAMQAxwDOANQA4wDyAQEBBAB5ARQBIwEnASsBOgFAAUEBSQFYAVkBYgGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGlAaYBrgGvAbABvAHQAdEB0gHTAdQB1QHWAdcB2AHnAfYCBQIJAhgCJwIoAjcCRgJVAmECcwJ0AnUCdgJ3AngCeQJ6AokCmAKnArYCtwLGAtUC5ALsAwEDAgMKAxYDKgM5A0gDVwNbA2oDeQOIA5cDpgOyA8QD0wPiA/EEAAQBBBAEHwQuBEMERARMBFgEbAR7BIoEmQSdBKwEuwTKBNkE6AT0BQYFFQUkBTMFQgVRBWAFbwWEBYUFjQWZBa0FvAXLBdoF3gXtBfwGCwYaBikGNQZHBlYGZQZ0BoMGhAaTBqIGsQbGBscGzwbbBu8G/gcNBxwHIAcvBz4HTQdcB2sHdweJB5gHpwe2B8UH1AfjB/IIBwgICBAIHAgwCD8ITghdCGEIcAh/CI4InQisCLgIygjZCOgI9wkGCRUJJAkzCUgJSQlRCV0JcQmACY8JngmiCbEJwAnPCd4J7Qn5CgsKGgopCjgKRwpWCmUKdAqJCooKkgqeCrIKwQrQCt8K4wryCwELEAsfCy4LOgtMC1sLagt5C4gLlwumC7ULygvLC9ML3wvzDAIMEQwgDCQMMwxCDFEMYAxvDHsMjQycDKsMugzJDNgM5wz2DQsNDA0UDSANNA1DDVINYQ1lDXQNgw2SDaENsA28Dc4N3Q3eDe0N/A4LDgwOGw4qDjkOTg5PDlcOYw53DoYOlQ6kDqgOtw7GDtUO5A7zDv8PEQ8gDy8PPg9ND1wPaw96D48PkA+YD5kPpQ+5D8gP1w/mD+oP+RAIEBcQJhA1EEEQUxBUEFUQVhBXEFgQWRBaAC0QaRB4EHkQiBCXELEQshC4EMQQ2BDnEOoQ+REIERcRGhEpETgRPBFLEVoRWxFxEXIRcxF0EXURdhF3EXgRjRGOEZYRohG2EcUR1BHjEecR9hIFEhQSIxIyEj4SUBJfEm4SfRKMEpsSqhK5Es4SzxLXEuMS9xMGExUTJBMoEzcTRhNVE2QTcxN/E5EToBOvE74TzRPcE+sT+hQPFBAUGBQkFDgURxRWFGUUaRR4FIcUlhSlFLQUwBTSFOEU8BT/FQ4VHRUsFTsVQxVYFVkVYRVtFYEVkBWfFa4VshXBFdAV3xXuFf0WCRYbFioWORZIFlcWcRZyFngWhBaYFqcWqha5FsgW1xbaFukW+Bb8FwsXGhcwFzEXMhczFzQXNRc2F0sXTBdUF2AXdBeDF5IXoRelF7QXwxfSF+EX8Bf8GA4YHRgsGDsYShhZGGgYdxiMGI0YlRihGLUYxBjTGOIY5hj1GQQZExkiGTEZPRlPGV4ZbRl8GYsZmhmpGbgZzRnOGdYZ4hn2GgUaFBojGicaNhpFGlQaYxpyGn4akBqfGq4avRrMGtsa6hr5Gw4bDxsXGyMbNxtGG1UbZBtoG3cbhhuVG6Qbsxu/G9Eb4BvvG/4cDRwcHCscOhxPHFAcWBxkHHgchxyWHKUcqRy4HMcc1hzlHPQdAB0SHSEdMB0xHUAdTx1eHW0dfB2RHZIdmh2mHbodyR3YHecd6x36HgkeGB4nHjYeQh5UHmMech6BHpAenx6uHr0e0h7THtse5x77HwofGR8oHywfOx9KH1kfaB93H4MflR+kH7Mfwh/RH+Af7x/+IBMgFCAcICggPCBLIFogaSBtIHwgiyCaIKkguCDEINYg5SD0IQMhEiEhITAhPyFUIVUhXSFpIX0hjCGbIaohriG9Icwh2yHqIfkiBSIXIiYiNSJEIlMiVCJjInIigSKCIoUijiKdIqwiuyLQItEi2SLlIvkjCCMXIyYjKiM5I0gjVyNmI3UjgSOTI6IjsSPAI88j6SPqI/Aj/CQQJB8kIiQxJEAkTyRSJGEkcCR0JIMkkiSsJK0kriSvJLAksSSyJLMktCTJJMok0iTeJPIlASUQJR8lIyUyJUElUCVfJW4leiWMJZslqiW5Jcgl1yXmJfUmCiYLJhMmHyYzJkImUSZgJmQmcyaCJpEmoCavJrsmzSbcJusm+icJJxgnJyc2J0snTCdUJ2AndCeDJ5InoSelJ7QnwyfSJ+En8Cf8KA4oHSgsKDsoSihZKGgodyiMKI0olSihKLUoxCjTKOIo5ij1KQQpEykiKTEpPSlPKV4pbSl8KYspmimpKbgpzSnOKdYp4in2KgUqFCojKicqNipFKlQqYypyKn4qkCqfKq4qvSrMKtsq6ir5Kw4rDysXKyMrNytGK1UrZCtoK3crhiuVK6Qrsyu/K9Er4CvvK/4sDSwcLCssOixPLFAsWCxkLHgshyyWLKUsqSy4LMcs1izlLPQtAC0SLSEtMC0/LU4tXS1sLXstkC2RLZktpS25Lcgt1y3mLeot+S4ILhcuJi41LkEuUy5iLnEugC6PLp4urS68LtEu0i7aLuYu+i8JLxgvJy8rLzovSS9YL2cvdi+CL5Qvoy+yL8Ev0C/fL+4v/TASMBMwGzAnMDswSjBZMGgwbDB7MIowmTCoMLcwwzDVMOQw8zECMRExIDEvMT4xUzFUMVwxaDF8MYsxmjGpMa0xvDHLMdox6TH4MgQyFjIlMjQyQzJSMmEycDJ/MoIykTKgMq8yxDLFMs0y2TLtMvwzCzMaMx4zLTM8M0szWjNpM3UzhzOWM6UztDPDM9Iz4TPwNAU0BjQONBo0LjQ9NEw0WzRfNG40fTSMNJs0qjS2NMg01zTmNPU1BDUTNSI1MTVGNUc1TzVbNW81fjWNNZw1oDWvNb41zTXcNes19zYJNhg2JzY2NkU2VDZjNnI2hzaINpA2nDawNr82zjbdNuE28Db/Nw43HTcsNzg3SjdZN2g3dzeGN5U3pDezN7Y3xTfUN+M3+Df5OAE4DTghODA4PzhOOFI4YThwOH84jjidOKk4uzjKONk46Dj3OQY5FTkkOTk5OjlCOU45YjlxOYA5jzmTOaI5sTnAOc853jnqOfw6CzoaOik6ODpHOlY6ZTpoOoI6gzqJOpU6qTq4Ors6yjrZOug66zr6Owk7DTscOys7LDsyOzM7SDtJO1E7XTtxO4A7jzueO6I7sTvAO8873jvtO/k8CzwaPCk8ODxHPGE8YjxoPHQ8iDyXPJo8qTy4PMc8yjzZPOg87Dz7PQo9Cz0hPSI9Iz0kPSU9Jj0nPSg9KT0qPT89QD1IPVQ9aD13PYY9lT2ZPag9tz3GPdU95D3wPgI+ET4gPi8+Pj5YPlk+Xz5rPn8+jj6RPqA+rz6+PsE+0D7fPuM+8j8BPwI/Cj8LPww/IT8iPyo/Nj9KP1k/aD93P3s/ij+ZP6g/tz/GP9I/5D/zQAJAEUAgQCFAMEA/QE5AY0BkQGxAeECMQJtAqkC5QL1AzEDbQOpA+UEIQRRBJkE1QURBU0FiQXFBgEGPQZNBnEGdQb9BwEHGQdJB5kH1QfhCB0IWQiVCKEI3QkZCSkJZQmhCaUJvQnBChUKGQo5CmkKuQr1CzELbQt9C7kL9QwxDG0MqQzZDSENXQ2ZDdUN2Q4VDlEOjQ7JDtUO7Q8JDw0PJQ9BD6kPrQ/FD/UQRRCBEI0QyREFEUERTRGJEcUR1RIREk0SURKREpUSmRKdEqESpRKpEv0TARMhE1EToRPdFBkUVRRlFKEU3RUZFVUVkRXBFgkWRRaBFr0W+Rc1F3EXrRgBGAUYJRhVGKUY4RkdGVkZaRmlGeEaHRpZGpUaxRsNG0kbhRvBG/0cARw9HHkctR0JHQ0dLR1dHa0d6R4lHmEecR6tHukfJR9hH50fzSAVIFEgVSCRIM0hCSFFIUkhhSHBIhUiGSI5ImkiuSL1IzEjbSN9I7kj9SQxJG0kqSTZJSElXSWZJdUmESZNJokmxScZJx0nPSdtJ70n+Sg1KHEogSi9KPkpNSlxKa0p3SolKmEqnSrZKxUrUSuNK8ksHSwhLEEscSzBLP0tOS11LYUtwS39LjkudS6xLuEvKS9lL6Ev3TAZMFUwkTDNMSExJTFFMXUxxTIBMj0yeTKJMsUzATM9M3kztTPlNC00aTSlNOE1HTVZNZU10TXhNeU2ITZdNpk27TbxNxE3QTeRN804CThFOFU4kTjNOQk5RTmBObE5+To1OnE6rTrpOyU7YTudO/E79TwVPEU8lTzRPQ09ST1ZPZU90T4NPkk+hT61Pv0/OT91P7E/7UApQGVAoUD1QPlBGUFJQZlB1UIRQk1CXUKZQtVDEUNNQ4lDuUQBRD1EeUS1RPFFWUVdRXVFpUX1RjFGPUZ5RrVG8Ub9RzlHdUeFR8FH/UgBSClILUgxSDVIiUiNSK1I3UktSWlJpUnhSfFKLUppSqVK4UsdS01LlUvRTA1MSUyFTMFM/U05TY1NkU2xTeFOMU5tTqlO5U71TzFPbU+pT+VQIVBRUJlQ1VERUU1RiVHFUgFSPVKRUpVStVLlUzVTcVOtU+lT+VQ1VHFUrVTpVSVVVVWdVdlWFVZRVo1WyVcFV0FXTVeJV8VYAVhVWFlYeVipWPlZNVlxWa1ZvVn5WjVacVqtWulbGVthW51b2VwVXFFcjVzJXQVdWV1dXX1drV39XjledV6xXsFe/V85X3VfsV/tYB1gZWChYN1hGWFVYZFhzWIJYl1iYWKBYrFjAWM9Y3ljtWPFZAFkPWR5ZLVk8WUhZWllpWXhZh1mWWaVZtFnDWdhZ2VnhWe1aAVoQWh9aLloyWkFaUFpfWm5afVqJWptaqlq5Wsha11rmWvVbBFsHWxZbJVs0WzhbUltTW1lbZVt5W4hbi1uaW6lbuFu7W8pb2VvdW+xb+1v8XDRcNVw2XDdcOFw5XDpcO1w8XD1cPlw/XEBcQVxCXENcRFxFXEZcR1xIXElcSlxLXExcTVxOXGNcZFxsXHhcjFybXKpcuVy9XMxc21zqXPldCF0UXSZdNV1EXVNdYl1xXYBdj12kXaVdrV25Xc1d3F3rXfpd/l4NXhxeK146XkleVV5nXnZehV6UXqNesl7BXtBe5V7mXu5e+l8OXx1fLF87Xz9fTl9dX2xfe1+KX5ZfqF+3X8Zf1V/kX/NgAmARYCZgJ2AvYDtgT2BeYG1gfGCAYI9gnmCtYLxgy2DXYOlg+GEHYRZhJWE0YUNhUmFnYWhhcGF8YZBhn2GuYb1hwWHQYd9h7mH9YgxiGGIqYjliSGJXYmZidWKEYpNiqGKpYrFivWLRYuBi72L+YwJjEWMgYy9jPmNNY1lja2N6Y4ljmGOnY7ZjxWPUY+lj6mPyY/5kEmQhZDBkP2RDZFJkYWRwZH9kjmSaZKxku2TKZNlk6GTpZPhlB2UWZStlLGU0ZUBlVGVjZXJlgWWFZZRlo2WyZcFl0GXcZe5l/WYMZhtmKmY5ZkhmV2ZsZm1mdWaBZpVmpGazZsJmxmbVZuRm82cCZxFnHWcvZz5nTWdcZ2tnemeJZ5hnrWeuZ7ZnwmfWZ+Vn9GgDaAdoFmglaDRoQ2hSaF5ocGh/aI5onWisaLtoymjZaO5o72j3aQNpF2kmaTVpRGlIaVdpZml1aYRpk2mfabFpwGnPad5p7Wn8agtqGmovajBqOGpEalhqZ2p2aoVqiWqYaqdqtmrFatRq4GryawFrEGsfay5rPWtMa1trcGtxa3lrhWuZa6hrt2vGa8pr2Wvoa/dsBmwVbCFsM2xCbFFsYGxvbH5sjWycbLFssmy6bMZs2mzpbPhtB20LbRptKW04bUdtVm1ibXRtg22SbaFtsG2/bc5t3W3ybfNt+24HbhtuKm45bkhuTG5bbmpueW6Ibpduo261bsRu027ibvFvAG8Pbx5vM280bzxvSG9cb2tvem+Jb41vnG+rb7pvyW/Yb+Rv9nAFcBRwI3AycEFwUHBfcHRwdXB9cIlwnXCscLtwynDOcN1w7HD7cQpxGXElcTdxRnFVcWRxc3GCcZFxoHG1cbZxvnHKcd5x7XH8cgtyD3Ieci1yPHJLclpyZnJ4codylnKlcrRyw3LScuFy9nL3cv9zC3Mfcy5zPXNMc1BzX3Nuc31zjHObc6dzuXPIc9dz5nP1dAR0E3QidDd0OHRAdEx0YHRvdH50jXSRdKB0r3S+dM103HTodPp1CXUYdSd1NnVFdVR1Y3V4dXl1gXWNdaF1sHW/dc510nXhdfB1/3YOdh12KXY7dkp2WXZodnd2hnaVdqR2uXa6dsJ2znbidvF3AHcPdxN3Incxd0B3T3ded2p3fHeLd5p3qXe4d8d31nfld/p3+3gDeA94I3gyeEF4UHhUeGN4cniBeJB4n3ireL14zHjbeOp4+XkIeRd5Jnk7eTx5RHlQeWR5c3mCeZF5lXmkebN5wnnReeB57Hn+eg16HHorejp6SXpYemd6fHp9eoV6kXqlerR6w3rSetZ65Xr0ewN7Enshey17P3tOe117bHt7e4p7mXuoe717vnvGe9J75nv1fAR8E3wXfCZ8NXxEfFN8YnxufIB8j3yefK18vHzLfNp86XzsfQZ9B30NfRl9LX08fT99Tn1dfWx9b31+fY19kX2gfa99sH22fbd9zH3NfdV94X31fgR+E34ifiZ+NX5EflN+Yn5xfn1+j36efq1+vH7Lftp+6X74fvt+/38Dfwd/D38SfxZ/F1UkbnVsbNcACQAKAAsADAANAA4ADwAQABEAEgATABQAEwAWXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc1xfeGRfY29tbWVudHNfEBBfeGRfbW9kZWxNYW5hZ2VyXxAVX2NvbmZpZ3VyYXRpb25zQnlOYW1lXV94ZF9tb2RlbE5hbWVfEBdfbW9kZWxWZXJzaW9uSWRlbnRpZmllcoACgQnagQnXgACBCdiAAIEJ2d4AGAAZABoAGwAcAB0AHgAKAB8AIAAhACIAIwAkACUAJgAnACgAJQATACsALAAtAC4ALwAlACUAE18QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEJ1YEJ04ABgASAAIEJ1IEJ1hAAgAWAA4AEgASAAFBTWUVT0wA2ADcACgA4AEUAUldOUy5rZXlzWk5TLm9iamVjdHOsADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEgAaAB4AIgAmACoALgAyADYAOgA+AEIARrABGAEcASABJAEoASwBMAE0ATgBPAFAAUYASgQLsgQSVgQckgQF3gQTrgQmogQVigQHqgQZlgQUxgQS8gC1bQVBDU2NoZWR1bGVZQVBDUmVzdWx0XxAXQVBDTWVkVHJhY2tlck1lZGljYXRpb25fEBFBUENTdG9yZWRVc2VyRGF0YV8QEEFQQ1NjaGVkdWxlZFRhc2tfEBtBUENNZWRUcmFja2VyUG9zc2libGVEb3NhZ2VbQVBDREJTdGF0dXNfEB5BUENNZWRUcmFja2VyUHJlc2NyaXB0aW9uQ29sb3JXQVBDVGFza18QHkFQQ01lZFRyYWNrZXJEYWlseURvc2FnZVJlY29yZF8QG0FQQ01lZFRyYWNrZXJJbmZsYXRhYmxlSXRlbV8QGUFQQ01lZFRyYWNrZXJQcmVzY3JpcHRpb27fEBAAYABhAGIAYwAdAGQAZQAfAGYAZwAKACEAaABpACQAagBrAGwAJQAlABAAcABxAC0AJQBrAHQAOQBrAHcAeAB5XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gBSANYAEgASAAoAVgQLSgASAFIEC1IAGgBSBBJSAEwgS5+rZw1dvcmRlcmVk0wA2ADcACgB9AH8AUqEAfoAWoQCAgBeALV5YRF9QU3RlcmVvdHlwZdkAHQAhAIQACgAkAIUAHwBqAIYARgB+AGsAigATACUALQB5AI5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAEoAWgBSANIAAgAQIgBjTADYANwAKAJAAmQBSqACRAJIAkwCUAJUAlgCXAJiAGYAagBuAHIAdgB6AH4AgqACaAJsAnACdAJ4AnwCgAKGAIYAlgCaAJ4ApgCuALoAygC1fEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAEwC3ABMAgAB5AHkAeQAtAHkAvgCRAHkAeQATAHlVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAIoAAgBcICAgIgCSAGQgIgAAI0gA3AAoAxQDGoIAj0gDIAMkAygDLWiR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VTUxHZW5lcmFsaXphdGlvbkltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w1wAKACFBlAAdACRBlQAfQZYAEwBNAE1DzgBQAC2BBWCAAIEFYoEFYoEGH4EFMd8QEEPRQ9JD00PUAB1D1UPWAB9D10PYAAoAIUPZQ9oAJABqAGtD3AAlACUAEEPgAHEALQAlAGsAdABAAGtD50PoAHlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAFIEFc4AEgASAAoEFZIEC0oAEgBSBAtSADYAUgQYegQVjCBLSziwB0wA2ADcACkPsQ+4AUqEAfoAWoUPvgQVlgC3ZAB0AIUPyAAoAJEPzAB8AakP0AE0AfgBrAIoAEwAlAC0AeUP8XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQVigBaAFIA0gACABAiBBWbTADYANwAKQ/5EBwBSqACRAJIAkwCUAJUAlgCXAJiAGYAagBuAHIAdgB6AH4AgqEQIRAlECkQLRAxEDUQORA+BBWeBBWmBBWqBBWuBBW2BBW6BBXCBBXGALd8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATRBMAE0PvAHkAeQB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fALIACgAhALMAtAAkALUAEwATABNTaQB5AHkAeQAtAHkAvgHEAHkAeQATAHmAAIAAgACBBpQICAgIgCSAUQgIgAAI3xAPAKwArQCuAB0ArwCwALEAHwCyAAoAIQCzALQAJAC1ABMBBgATU2kAeQB5AHkALQB5AL4BxQB5AHkAEwB5gACAKoAAgQaUCAgICIAkgFIICIAACNkAHQAhVAkACgAkVAoAHwBqVAtSBw+TAGsAigATACUALQB5VBNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBpGBAVyAFIA0gACABAiBBqDTADYANwAKVBVUHQBSpxBDEEQQRRBGEEcQSBBJgQFqgQFrgQFsgQFtgQFugQFvgQFwp1QeVB9UIFQhVCJUI1QkgQahgQaigQajgQakgQalgQamgQangC3fEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAExBcABNTagB5AHkAeQAtAHkAvhBDAHkAeQATAHmAAIEBcoAAgQafCAgICIAkgQFqCAiAAAjfEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAExBrABNTagB5AHkAeQAtAHkAvhBEAHkAeQATAHmAAIEBdIAAgQafCAgICIAkgQFrCAiAAAjfEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAExBrABNTagB5AHkAeQAtAHkAvhBFAHkAeQATAHmAAIEBdIAAgQafCAgICIAkgQFsCAiAAAjfEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAEwBRABNTagB5AHkAeQAtAHkAvhBGAHkAeQATAHmAAIEEvIAAgQafCAgICIAkgQFtCAiAAAjfEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAEwEGABNTagB5AHkAeQAtAHkAvhBHAHkAeQATAHmAAIAqgACBBp8ICAgIgCSBAW4ICIAACN8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATAQYAE1NqAHkAeQB5AC0AeQC+EEgAeQB5ABM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H8oEICYEIIIEIN4EIToEIZYEIfIEIk4EIqoEIwYEI2IEI74EJBoEJHYEJNIEJS4EJYoEJeYEJkIAtXnRhc2tDb21wbGV0aW9uXxAUY29uc2VudFNpZ25hdHVyZURhdGVfEBVjb25zZW50U2lnbmF0dXJlSW1hZ2VccHJvZmlsZUltYWdlXWdsdWNvc2VMZXZlbHNZc2xlZXBUaW1lXxAVc2hhcmVkT3B0aW9uU2VsZWN0aW9uWWJpcnRoRGF0ZV8QD3NlcnZlckNvbnNlbnRlZF8QFGN1c3RvbVN1cnZleVF1ZXN0aW9uXxAPaGFzSGVhcnREaXNlYXNlXxASc2Vjb25kYXJ5SW5mb1NhdmVkWWJsb29kVHlwZV8QEW1lZGljYWxDb25kaXRpb25zWndha2VVcFRpbWVfEBRjb25zZW50U2lnbmF0dXJlTmFtZV8QE2hvbWVMb2NhdGlvbkFkZHJlc3NfEA9ob21lTG9jYXRpb25MYXRdYmlvbG9naWNhbFNleF11c2VyQ29uc2VudGVkWWV0aG5pY2l0eV8QHGRhaWx5U2NhbGVzQ29tcGxldGlvbkNvdW50ZXJcYWxsb3dDb250YWN0W3Bob25lTnVtYmVyXxAQaG9tZUxvY2F0aW9uTG9uZ1ttZWRpY2F0aW9uc98QEgCsAK0ArlxPAB0AsACxXFAAHwCvXFEAsgAKACEAswC0ACQAtQATABMAEwAlAEkAeQB5XFkALQB5AGsAeQGfW/4AeQB5XGEAeV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQckCAiBB1IIgBQIgG6BBzYICIEHUQgSO5kaptMANgA3AApcZVxoAFKiAagBqYBHgEiiXGlcaoEHU4EHXoAt2QAdACFcbQAKACRcbgAfAGpcb1wZAagAawCKABMAJQAtAHlcd18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHUIBHgBS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AADG3AAAx9gAAMfgAADH6AAAx/AAAMf4AADH/AAAyAAAAMgEAADICAAAyBAAAMgYAADIHAAAyCAAAMgoAADILAAAySgAAMkwAADJOAAAyUAAAMlIAADJTAAAyVAAAMlUAADJWAAAyWAAAMloAADJbAAAyXAAAMl4AADJfAAAyngAAMqAAADKiAAAypAAAMqYAADKnAAAyqAAAMqkAADKqAAAyrAAAMq4AADKvAAAysAAAMrIAADKzAAAy8gAAMvQAADL2AAAy+AAAMvoAADL7AAAy/AAAMv0AADL+AAAzAAAAMwIAADMDAAAzBAAAMwYAADMHAAAzCgAAM0kAADNLAAAzTQAAM08AADNRAAAzUgAAM1MAADNUAAAzVQAAM1cAADNZAAAzWgAAM1sAADNdAAAzXgAAM50AADOfAAAzoQAAM6MAADOlAAAzpgAAM6cAADOoAAAzqQAAM6sAADOtAAAzrgAAM68AADOxAAAzsgAAM/EAADPzAAAz9QAAM/cAADP5AAAz+gAAM/sAADP8AAAz/QAAM/8AADQBAAA0AgAANAMAADQFAAA0BgAANFEAADR0AAA0lAAANLQAADS2AAA0uAAANLoAADS8AAA0vgAANL8AADTAAAA0wgAANMMAADTFAAA0xgAANMgAADTKAAA0ywAANMwAADTOAAA0zwAANNQAADThAAA05gAANOgAADTqAAA07wAANPEAADTzAAA09QAANRoAADU+AAA1ZQAANYkAADWLAAA1jQAANY8AADWRAAA1kwAANZUAADWWAAA1mAAANaUAADW2AAA1uAAANboAADW8AAA1vgAANcAAADXCAAA1xAAANcYAADXXAAA12QAANdsAADXdAAA13wAANeEAADXjAAA15QAANecAADXpAAA2KAAANioAADYsAAA2LgAANjAAADYxAAA2MgAANjMAADY0AAA2NgAANjgAADY5AAA2OgAANjwAADY9AAA2fAAANn4AADaAAAA2ggAANoQAADaFAAA2hgAANocAADaIAAA2igAANowAADaNAAA2jgAANpAAADaRAAA20AAANtIAADbUAAA21gAANtgAADbZAAA22gAANtsAADbcAAA23gAANuAAADbhAAA24gAANuQAADblAAA28gAANvMAADb0AAA29gAANzUAADc3AAA3OQAANzsAADc9AAA3PgAANz8AADdAAAA3QQAAN0MAADdFAAA3RgAAN0cAADdJAAA3SgAAN4kAADeLAAA3jQAAN48AADeRAAA3kgAAN5MAADeUAAA3lQAAN5cAADeZAAA3mgAAN5sAADedAAA3ngAAN90AADffAAA34QAAN+MAADflAAA35gAAN+cAADfoAAA36QAAN+sAADftAAA37gAAN+8AADfxAAA38gAAODEAADgzAAA4NQAAODcAADg5AAA4OgAAODsAADg8AAA4PQAAOD8AADhBAAA4QgAAOEMAADhFAAA4RgAAOIUAADiHAAA4iQAAOIsAADiNAAA4jgAAOI8AADiQAAA4kQAAOJMAADiVAAA4lgAAOJcAADiZAAA4mgAAOL8AADjjAAA5CgAAOS4AADkwAAA5MgAAOTQAADk2AAA5OAAAOToAADk7AAA5PQAAOUoAADlZAAA5WwAAOV0AADlfAAA5YQAAOWMAADllAAA5ZwAAOXYAADl4AAA5egAAOXwAADl+AAA5gAAAOYIAADmEAAA5hgAAOcUAADnHAAA5yQAAOcsAADnNAAA5zgAAOc8AADnQAAA50QAAOdMAADnVAAA51gAAOdcAADnZAAA52gAAOhkAADobAAA6HQAAOh8AADohAAA6IgAAOiMAADokAAA6JQAAOicAADopAAA6KgAAOisAADotAAA6LgAAOm0AADpvAAA6cQAAOnMAADp1AAA6dgAAOncAADp4AAA6eQAAOnsAADp9AAA6fgAAOn8AADqBAAA6ggAAOsEAADrDAAA6xQAAOscAADrJAAA6ygAAOssAADrMAAA6zQAAOs8AADrRAAA60gAAOtMAADrVAAA61gAAOxUAADsXAAA7GQAAOxsAADsdAAA7HgAAOx8AADsgAAA7IQAAOyMAADslAAA7JgAAOycAADspAAA7KgAAO2kAADtrAAA7bQAAO28AADtxAAA7cgAAO3MAADt0AAA7dQAAO3cAADt5AAA7egAAO3sAADt9AAA7fgAAO70AADu/AAA7wQAAO8MAADvFAAA7xgAAO8cAADvIAAA7yQAAO8sAADvNAAA7zgAAO88AADvRAAA70gAAPB0AADxAAAA8YAAAPIAAADyCAAA8hAAAPIYAADyIAAA8igAAPIsAADyMAAA8jgAAPI8AADyRAAA8kgAAPJQAADyWAAA8lwAAPJgAADyaAAA8mwAAPKQAADyxAAA8tgAAPLgAADy6AAA8vwAAPMEAADzDAAA8xQAAPOoAAD0OAAA9NQAAPVkAAD1bAAA9XQAAPV8AAD1hAAA9YwAAPWUAAD1mAAA9aAAAPXUAAD2GAAA9iAAAPYoAAD2MAAA9jgAAPZAAAD2SAAA9lAAAPZYAAD2nAAA9qQAAPasAAD2tAAA9rwAAPbEAAD2zAAA9tQAAPbcAAD25AAA9+AAAPfoAAD38AAA9/gAAPgAAAD4BAAA+AgAAPgMAAD4EAAA+BgAAPggAAD4JAAA+CgAAPgwAAD4NAAA+TAAAPk4AAD5QAAA+UgAAPlQAAD5VAAA+VgAAPlcAAD5YAAA+WgAAPlwAAD5dAAA+XgAAPmAAAD5hAAA+oAAAPqIAAD6kAAA+pgAAPqgAAD6pAAA+qgAAPqsAAD6sAAA+rgAAPrAAAD6xAAA+sgAAPrQAAD61AAA+wgAAPsMAAD7EAAA+xgAAPwUAAD8HAAA/CQAAPwsAAD8NAAA/DgAAPw8AAD8QAAA/EQAAPxMAAD8VAAA/FgAAPxcAAD8ZAAA/GgAAP1kAAD9bAAA/XQAAP18AAD9hAAA/YgAAP2MAAD9kAAA/ZQAAP2cAAD9pAAA/agAAP2sAAD9tAAA/bgAAP60AAD+vAAA/sQAAP7MAAD+1AAA/tgAAP7cAAD+4AAA/uQAAP7sAAD+9AAA/vgAAP78AAD/BAAA/wgAAQAEAAEADAABABQAAQAcAAEAJAABACgAAQAsAAEAMAABADQAAQA8AAEARAABAEgAAQBMAAEAVAABAFgAAQFUAAEBXAABAWQAAQFsAAEBdAABAXgAAQF8AAEBgAABAYQAAQGMAAEBlAABAZgAAQGcAAEBpAABAagAAQI8AAECzAABA2gAAQP4AAEEAAABBAgAAQQQAAEEGAABBCAAAQQoAAEELAABBDQAAQRoAAEEpAABBKwAAQS0AAEEvAABBMQAAQTMAAEE1AABBNwAAQUYAAEFIAABBSgAAQUwAAEFOAABBUAAAQVIAAEFUAABBVgAAQZUAAEGXAABBmQAAQZsAAEGdAABBngAAQZ8AAEGgAABBoQAAQaMAAEGlAABBpgAAQacAAEGpAABBqgAAQekAAEHrAABB7QAAQe8AAEHxAABB8gAAQfMAAEH0AABB9QAAQfcAAEH5AABB+gAAQfsAAEH9AABB/gAAQj0AAEI/AABCQQAAQkMAAEJFAABCRgAAQkcAAEJIAABCSQAAQksAAEJNAABCTgAAQk8AAEJRAABCUgAAQpEAAEKTAABClQAAQpcAAEKZAABCmgAAQpsAAEKcAABCnQAAQp8AAEKhAABCogAAQqMAAEKlAABCpgAAQqkAAELoAABC6gAAQuwAAELuAABC8AAAQvEAAELyAABC8wAAQvQAAEL2AABC+AAAQvkAAEL6AABC/AAAQv0AAEM8AABDPgAAQ0AAAENCAABDRAAAQ0UAAENGAABDRwAAQ0gAAENKAABDTAAAQ00AAENOAABDUAAAQ1EAAEOQAABDkgAAQ5QAAEOWAABDmAAAQ5kAAEOaAABDmwAAQ5wAAEOeAABDoAAAQ6EAAEOiAABDpAAAQ6UAAEPwAABEEwAARDMAAERTAABEVQAARFcAAERZAABEWwAARF0AAEReAABEXwAARGEAAERiAABEZAAARGUAAERnAABEaQAARGoAAERrAABEbQAARG4AAERzAABEgAAARIUAAESHAABEiQAARI4AAESQAABEkgAARJQAAES5AABE3QAARQQAAEUoAABFKgAARSwAAEUuAABFMAAARTIAAEU0AABFNQAARTcAAEVEAABFVQAARVcAAEVZAABFWwAARV0AAEVfAABFYQAARWMAAEVlAABFdgAARXgAAEV6AABFfAAARX4AAEWAAABFggAARYQAAEWGAABFiAAARccAAEXJAABFywAARc0AAEXPAABF0AAARdEAAEXSAABF0wAARdUAAEXXAABF2AAARdkAAEXbAABF3AAARhsAAEYdAABGHwAARiEAAEYjAABGJAAARiUAAEYmAABGJwAARikAAEYrAABGLAAARi0AAEYvAABGMAAARm8AAEZxAABGcwAARnUAAEZ3AABGeAAARnkAAEZ6AABGewAARn0AAEZ/AABGgAAARoEAAEaDAABGhAAARpEAAEaSAABGkwAARpUAAEbUAABG1gAARtgAAEbaAABG3AAARt0AAEbeAABG3wAARuAAAEbiAABG5AAARuUAAEbmAABG6AAARukAAEcoAABHKgAARywAAEcuAABHMAAARzEAAEcyAABHMwAARzQAAEc2AABHOAAARzkAAEc6AABHPAAARz0AAEd8AABHfgAAR4AAAEeCAABHhAAAR4UAAEeGAABHhwAAR4gAAEeKAABHjAAAR40AAEeOAABHkAAAR5EAAEfQAABH0gAAR9QAAEfWAABH2AAAR9kAAEfaAABH2wAAR9wAAEfeAABH4AAAR+EAAEfiAABH5AAAR+UAAEgkAABIJgAASCgAAEgqAABILAAASC0AAEguAABILwAASDAAAEgyAABINAAASDUAAEg2AABIOAAASDkAAEheAABIggAASKkAAEjNAABIzwAASNEAAEjTAABI1QAASNcAAEjZAABI2gAASNwAAEjpAABI+AAASPoAAEj8AABI/gAASQAAAEkCAABJBAAASQYAAEkVAABJFwAASRkAAEkbAABJHQAASR8AAEkhAABJIwAASSUAAElkAABJZgAASWgAAElqAABJbAAASW0AAEluAABJbwAASXAAAElyAABJdAAASXUAAEl2AABJeAAASXkAAEm4AABJugAASbwAAEm+AABJwAAAScEAAEnCAABJwwAAScQAAEnGAABJyAAASckAAEnKAABJzAAASc0AAEoMAABKDgAAShAAAEoSAABKFAAAShUAAEoWAABKFwAAShgAAEoaAABKHAAASh0AAEoeAABKIAAASiEAAEpgAABKYgAASmQAAEpmAABKaAAASmkAAEpqAABKawAASmwAAEpuAABKcAAASnEAAEpyAABKdAAASnUAAEq0AABKtgAASrgAAEq6AABKvAAASr0AAEq+AABKvwAASsAAAErCAABKxAAASsUAAErGAABKyAAASskAAEsIAABLCgAASwwAAEsOAABLEAAASxEAAEsSAABLEwAASxQAAEsWAABLGAAASxkAAEsaAABLHAAASx0AAEtcAABLXgAAS2AAAEtiAABLZAAAS2UAAEtmAABLZwAAS2gAAEtqAABLbAAAS20AAEtuAABLcAAAS3EAAEu8AABL3wAAS/8AAEwfAABMIQAATCMAAEwlAABMJwAATCkAAEwqAABMKwAATC0AAEwuAABMMAAATDEAAEwzAABMNQAATDYAAEw3AABMOQAATDoAAEw/AABMTAAATFEAAExTAABMVQAATFoAAExcAABMXgAATGAAAEyFAABMqQAATNAAAEz0AABM9gAATPgAAEz6AABM/AAATP4AAE0AAABNAQAATQMAAE0QAABNIQAATSMAAE0lAABNJwAATSkAAE0rAABNLQAATS8AAE0xAABNQgAATUQAAE1GAABNSAAATUoAAE1MAABNTgAATVAAAE1SAABNVAAATZMAAE2VAABNlwAATZkAAE2bAABNnAAATZ0AAE2eAABNnwAATaEAAE2jAABNpAAATaUAAE2nAABNqAAATecAAE3pAABN6wAATe0AAE3vAABN8AAATfEAAE3yAABN8wAATfUAAE33AABN+AAATfkAAE37AABN/AAATjsAAE49AABOPwAATkEAAE5DAABORAAATkUAAE5GAABORwAATkkAAE5LAABOTAAATk0AAE5PAABOUAAATl0AAE5eAABOXwAATmEAAE6gAABOogAATqQAAE6mAABOqAAATqkAAE6qAABOqwAATqwAAE6uAABOsAAATrEAAE6yAABOtAAATrUAAE70AABO9gAATvgAAE76AABO/AAATv0AAE7+AABO/wAATwAAAE8CAABPBAAATwUAAE8GAABPCAAATwkAAE9IAABPSgAAT0wAAE9OAABPUAAAT1EAAE9SAABPUwAAT1QAAE9WAABPWAAAT1kAAE9aAABPXAAAT10AAE+cAABPngAAT6AAAE+iAABPpAAAT6UAAE+mAABPpwAAT6gAAE+qAABPrAAAT60AAE+uAABPsAAAT7EAAE/wAABP8gAAT/QAAE/2AABP+AAAT/kAAE/6AABP+wAAT/wAAE/+AABQAAAAUAEAAFACAABQBAAAUAUAAFAqAABQTgAAUHUAAFCZAABQmwAAUJ0AAFCfAABQoQAAUKMAAFClAABQpgAAUKgAAFC1AABQxAAAUMYAAFDIAABQygAAUMwAAFDOAABQ0AAAUNIAAFDhAABQ4wAAUOUAAFDnAABQ6QAAUOsAAFDtAABQ7wAAUPEAAFEwAABRMgAAUTQAAFE2AABROAAAUTkAAFE6AABROwAAUTwAAFE+AABRQAAAUUEAAFFCAABRRAAAUUUAAFGEAABRhgAAUYgAAFGKAABRjAAAUY0AAFGOAABRjwAAUZAAAFGSAABRlAAAUZUAAFGWAABRmAAAUZkAAFHYAABR2gAAUdwAAFHeAABR4AAAUeEAAFHiAABR4wAAUeQAAFHmAABR6AAAUekAAFHqAABR7AAAUe0AAFIsAABSLgAAUjAAAFIyAABSNAAAUjUAAFI2AABSNwAAUjgAAFI6AABSPAAAUj0AAFI+AABSQAAAUkEAAFKAAABSggAAUoQAAFKGAABSiAAAUokAAFKKAABSiwAAUowAAFKOAABSkAAAUpEAAFKSAABSlAAAUpUAAFLUAABS1gAAUtgAAFLaAABS3AAAUt0AAFLeAABS3wAAUuAAAFLiAABS5AAAUuUAAFLmAABS6AAAUukAAFMoAABTKgAAUywAAFMuAABTMAAAUzEAAFMyAABTMwAAUzQAAFM2AABTOAAAUzkAAFM6AABTPAAAUz0AAFOIAABTqwAAU8sAAFPrAABT7QAAU+8AAFPxAABT8wAAU/UAAFP2AABT9wAAU/kAAFP6AABT/AAAU/0AAFP/AABUAQAAVAIAAFQDAABUBQAAVAYAAFQLAABUGAAAVB0AAFQfAABUIQAAVCYAAFQoAABUKgAAVCwAAFRRAABUdQAAVJwAAFTAAABUwgAAVMQAAFTGAABUyAAAVMoAAFTMAABUzQAAVM8AAFTcAABU7QAAVO8AAFTxAABU8wAAVPUAAFT3AABU+QAAVPsAAFT9AABVDgAAVRAAAFUSAABVFAAAVRYAAFUYAABVGgAAVRwAAFUeAABVIAAAVV8AAFVhAABVYwAAVWUAAFVnAABVaAAAVWkAAFVqAABVawAAVW0AAFVvAABVcAAAVXEAAFVzAABVdAAAVbMAAFW1AABVtwAAVbkAAFW7AABVvAAAVb0AAFW+AABVvwAAVcEAAFXDAABVxAAAVcUAAFXHAABVyAAAVgcAAFYJAABWCwAAVg0AAFYPAABWEAAAVhEAAFYSAABWEwAAVhUAAFYXAABWGAAAVhkAAFYbAABWHAAAVikAAFYqAABWKwAAVi0AAFZsAABWbgAAVnAAAFZyAABWdAAAVnUAAFZ2AABWdwAAVngAAFZ6AABWfAAAVn0AAFZ+AABWgAAAVoEAAFbAAABWwgAAVsQAAFbGAABWyAAAVskAAFbKAABWywAAVswAAFbOAABW0AAAVtEAAFbSAABW1AAAVtUAAFcUAABXFgAAVxgAAFcaAABXHAAAVx0AAFceAABXHwAAVyAAAFciAABXJAAAVyUAAFcmAABXKAAAVykAAFdoAABXagAAV2wAAFduAABXcAAAV3EAAFdyAABXcwAAV3QAAFd2AABXeAAAV3kAAFd6AABXfAAAV30AAFe8AABXvgAAV8AAAFfCAABXxAAAV8UAAFfGAABXxwAAV8gAAFfKAABXzAAAV80AAFfOAABX0AAAV9EAAFf2AABYGgAAWEEAAFhlAABYZwAAWGkAAFhrAABYbQAAWG8AAFhxAABYcgAAWHQAAFiBAABYkAAAWJIAAFiUAABYlgAAWJgAAFiaAABYnAAAWJ4AAFitAABYrwAAWLEAAFizAABYtQAAWLcAAFi5AABYuwAAWL0AAFj8AABY/gAAWQAAAFkCAABZBAAAWQUAAFkGAABZBwAAWQgAAFkKAABZDAAAWQ0AAFkOAABZEAAAWREAAFlQAABZUgAAWVQAAFlWAABZWAAAWVkAAFlaAABZWwAAWVwAAFleAABZYAAAWWEAAFliAABZZAAAWWUAAFmkAABZpgAAWagAAFmqAABZrAAAWa0AAFmuAABZrwAAWbAAAFmyAABZtAAAWbUAAFm2AABZuAAAWbkAAFn4AABZ+gAAWfwAAFn+AABaAAAAWgEAAFoCAABaAwAAWgQAAFoGAABaCAAAWgkAAFoKAABaDAAAWg0AAFpMAABaTgAAWlAAAFpSAABaVAAAWlUAAFpWAABaVwAAWlgAAFpaAABaXAAAWl0AAFpeAABaYAAAWmEAAFqgAABaogAAWqQAAFqmAABaqAAAWqkAAFqqAABaqwAAWqwAAFquAABasAAAWrEAAFqyAABatAAAWrUAAFr0AABa9gAAWvgAAFr6AABa/AAAWv0AAFr+AABa/wAAWwAAAFsCAABbBAAAWwUAAFsGAABbCAAAWwkAAFtUAABbdwAAW5cAAFu3AABbuQAAW7sAAFu9AABbvwAAW8EAAFvCAABbwwAAW8UAAFvGAABbyAAAW8kAAFvLAABbzQAAW84AAFvPAABb0QAAW9IAAFvXAABb5AAAW+kAAFvrAABb7QAAW/IAAFv0AABb9wAAW/kAAFweAABcQgAAXGkAAFyNAABcjwAAXJEAAFyTAABclQAAXJcAAFyZAABcmgAAXJwAAFypAABcugAAXLwAAFy+AABcwAAAXMIAAFzEAABcxgAAXMgAAFzKAABc2wAAXN4AAFzhAABc5AAAXOcAAFzqAABc7QAAXPAAAFzzAABc9QAAXTQAAF02AABdOAAAXToAAF08AABdPQAAXT4AAF0/AABdQAAAXUIAAF1EAABdRQAAXUYAAF1IAABdSQAAXYgAAF2KAABdjAAAXY4AAF2QAABdkQAAXZIAAF2TAABdlAAAXZYAAF2YAABdmQAAXZoAAF2cAABdnQAAXdwAAF3eAABd4QAAXeMAAF3lAABd5gAAXecAAF3oAABd6QAAXesAAF3tAABd7gAAXe8AAF3xAABd8gAAXf8AAF4AAABeAQAAXgMAAF5CAABeRAAAXkYAAF5IAABeSgAAXksAAF5MAABeTQAAXk4AAF5QAABeUgAAXlMAAF5UAABeVgAAXlcAAF6WAABemAAAXpoAAF6cAABengAAXp8AAF6gAABeoQAAXqIAAF6kAABepgAAXqcAAF6oAABeqgAAXqsAAF7qAABe7AAAXu4AAF7wAABe8gAAXvMAAF70AABe9QAAXvYAAF74AABe+gAAXvsAAF78AABe/gAAXv8AAF8+AABfQAAAX0IAAF9EAABfRgAAX0cAAF9IAABfSQAAX0oAAF9MAABfTgAAX08AAF9QAABfUgAAX1MAAF+SAABflAAAX5YAAF+YAABfmgAAX5sAAF+cAABfnQAAX54AAF+gAABfogAAX6MAAF+kAABfpgAAX6cAAF/MAABf8AAAYBcAAGA7AABgPQAAYD8AAGBBAABgQwAAYEUAAGBHAABgSAAAYEsAAGBYAABgZwAAYGkAAGBrAABgbQAAYG8AAGBxAABgcwAAYHUAAGCEAABghwAAYIoAAGCNAABgkAAAYJMAAGCWAABgmQAAYJsAAGDaAABg3AAAYN4AAGDgAABg4wAAYOQAAGDlAABg5gAAYOcAAGDpAABg6wAAYOwAAGDtAABg7wAAYPAAAGEvAABhMQAAYTMAAGE1AABhOAAAYTkAAGE6AABhOwAAYTwAAGE+AABhQAAAYUEAAGFCAABhRAAAYUUAAGGEAABhhgAAYYgAAGGKAABhjQAAYY4AAGGPAABhkAAAYZEAAGGTAABhlQAAYZYAAGGXAABhmQAAYZoAAGHZAABh2wAAYd0AAGHfAABh4gAAYeMAAGHkAABh5QAAYeYAAGHoAABh6gAAYesAAGHsAABh7gAAYe8AAGIuAABiMAAAYjIAAGI0AABiNwAAYjgAAGI5AABiOgAAYjsAAGI9AABiPwAAYkAAAGJBAABiQwAAYkQAAGKDAABihQAAYocAAGKJAABijAAAYo0AAGKOAABijwAAYpAAAGKSAABilAAAYpUAAGKWAABimAAAYpkAAGLYAABi2gAAYtwAAGLeAABi4QAAYuIAAGLjAABi5AAAYuUAAGLnAABi6QAAYuoAAGLrAABi7QAAYu4AAGM5AABjXAAAY3wAAGOcAABjngAAY6AAAGOiAABjpAAAY6YAAGOnAABjqAAAY6sAAGOsAABjrgAAY68AAGOxAABjswAAY7QAAGO1AABjuAAAY7kAAGO+AABjywAAY9AAAGPSAABj1AAAY9kAAGPcAABj3wAAY+EAAGQGAABkKgAAZFEAAGR1AABkeAAAZHoAAGR8AABkfgAAZIAAAGSCAABkgwAAZIYAAGSTAABkpAAAZKYAAGSoAABkqgAAZKwAAGSuAABksAAAZLIAAGS0AABkxQAAZMgAAGTLAABkzgAAZNEAAGTUAABk1wAAZNoAAGTdAABk3wAAZR4AAGUgAABlIgAAZSQAAGUnAABlKAAAZSkAAGUqAABlKwAAZS0AAGUvAABlMAAAZTEAAGUzAABlNAAAZXMAAGV1AABldwAAZXkAAGV8AABlfQAAZX4AAGV/AABlgAAAZYIAAGWEAABlhQAAZYYAAGWIAABliQAAZcgAAGXKAABlzQAAZc8AAGXSAABl0wAAZdQAAGXVAABl1gAAZdgAAGXaAABl2wAAZdwAAGXeAABl3wAAZewAAGXtAABl7gAAZfAAAGYvAABmMQAAZjMAAGY1AABmOAAAZjkAAGY6AABmOwAAZjwAAGY+AABmQAAAZkEAAGZCAABmRAAAZkUAAGaEAABmhgAAZogAAGaKAABmjQAAZo4AAGaPAABmkAAAZpEAAGaTAABmlQAAZpYAAGaXAABmmQAAZpoAAGbZAABm2wAAZt0AAGbfAABm4gAAZuMAAGbkAABm5QAAZuYAAGboAABm6gAAZusAAGbsAABm7gAAZu8AAGcuAABnMAAAZzIAAGc0AABnNwAAZzgAAGc5AABnOgAAZzsAAGc9AABnPwAAZ0AAAGdBAABnQwAAZ0QAAGeDAABnhQAAZ4cAAGeJAABnjAAAZ40AAGeOAABnjwAAZ5AAAGeSAABnlAAAZ5UAAGeWAABnmAAAZ5kAAGe+AABn4gAAaAkAAGgtAABoMAAAaDIAAGg0AABoNgAAaDgAAGg6AABoOwAAaD4AAGhLAABoWgAAaFwAAGheAABoYAAAaGIAAGhkAABoZgAAaGgAAGh3AABoegAAaH0AAGiAAABogwAAaIYAAGiJAABojAAAaI4AAGjNAABozwAAaNEAAGjTAABo1gAAaNcAAGjYAABo2QAAaNoAAGjcAABo3gAAaN8AAGjgAABo4gAAaOMAAGkiAABpJAAAaSYAAGkoAABpKwAAaSwAAGktAABpLgAAaS8AAGkxAABpMwAAaTQAAGk1AABpNwAAaTgAAGl3AABpeQAAaXsAAGl9AABpgAAAaYEAAGmCAABpgwAAaYQAAGmGAABpiAAAaYkAAGmKAABpjAAAaY0AAGnMAABpzgAAadAAAGnSAABp1QAAadYAAGnXAABp2AAAadkAAGnbAABp3QAAad4AAGnfAABp4QAAaeIAAGohAABqIwAAaiUAAGonAABqKgAAaisAAGosAABqLQAAai4AAGowAABqMgAAajMAAGo0AABqNgAAajcAAGp2AABqeAAAanoAAGp8AABqfwAAaoAAAGqBAABqggAAaoMAAGqFAABqhwAAaogAAGqJAABqiwAAaowAAGrLAABqzQAAas8AAGrRAABq1AAAatUAAGrWAABq1wAAatgAAGraAABq3AAAat0AAGreAABq4AAAauEAAGssAABrTwAAa28AAGuPAABrkQAAa5MAAGuVAABrlwAAa5kAAGuaAABrmwAAa54AAGufAABroQAAa6IAAGukAABrpgAAa6cAAGuoAABrqwAAa6wAAGuxAABrvgAAa8MAAGvFAABrxwAAa8wAAGvPAABr0gAAa9QAAGv5AABsHQAAbEQAAGxoAABsawAAbG0AAGxvAABscQAAbHMAAGx1AABsdgAAbHkAAGyGAABslwAAbJkAAGybAABsnQAAbJ8AAGyhAABsowAAbKUAAGynAABsuAAAbLsAAGy+AABswQAAbMQAAGzHAABsygAAbM0AAGzQAABs0gAAbREAAG0TAABtFQAAbRcAAG0aAABtGwAAbRwAAG0dAABtHgAAbSAAAG0iAABtIwAAbSQAAG0mAABtJwAAbWYAAG1oAABtagAAbWwAAG1vAABtcAAAbXEAAG1yAABtcwAAbXUAAG13AABteAAAbXkAAG17AABtfAAAbbsAAG29AABtwAAAbcIAAG3FAABtxgAAbccAAG3IAABtyQAAbcsAAG3NAABtzgAAbc8AAG3RAABt0gAAbd8AAG3gAABt4QAAbeMAAG4iAABuJAAAbiYAAG4oAABuKwAAbiwAAG4tAABuLgAAbi8AAG4xAABuMwAAbjQAAG41AABuNwAAbjgAAG53AABueQAAbnsAAG59AABugAAAboEAAG6CAABugwAAboQAAG6GAABuiAAAbokAAG6KAABujAAAbo0AAG7MAABuzgAAbtAAAG7SAABu1QAAbtYAAG7XAABu2AAAbtkAAG7bAABu3QAAbt4AAG7fAABu4QAAbuIAAG8hAABvIwAAbyUAAG8nAABvKgAAbysAAG8sAABvLQAAby4AAG8wAABvMgAAbzMAAG80AABvNgAAbzcAAG92AABveAAAb3oAAG98AABvfwAAb4AAAG+BAABvggAAb4MAAG+FAABvhwAAb4gAAG+JAABviwAAb4wAAG+xAABv1QAAb/wAAHAgAABwIwAAcCUAAHAnAABwKQAAcCsAAHAtAABwLgAAcDEAAHA+AABwTQAAcE8AAHBRAABwUwAAcFUAAHBXAABwWQAAcFsAAHBqAABwbQAAcHAAAHBzAABwdgAAcHkAAHB8AABwfwAAcIEAAHDAAABwwgAAcMUAAHDHAABwygAAcMsAAHDMAABwzQAAcM4AAHDQAABw0gAAcNMAAHDUAABw1gAAcNcAAHDZAABxGAAAcRoAAHEcAABxHgAAcSEAAHEiAABxIwAAcSQAAHElAABxJwAAcSkAAHEqAABxKwAAcS0AAHEuAABxbQAAcW8AAHFxAABxcwAAcXYAAHF3AABxeAAAcXkAAHF6AABxfAAAcX4AAHF/AABxgAAAcYIAAHGDAABxwgAAccQAAHHHAABxyQAAccwAAHHNAABxzgAAcc8AAHHQAABx0gAAcdQAAHHVAABx1gAAcdgAAHHZAABx3AAAchsAAHIdAAByHwAAciEAAHIkAAByJQAAciYAAHInAAByKAAAcioAAHIsAAByLQAAci4AAHIwAAByMQAAcnAAAHJyAABydAAAcnYAAHJ5AAByegAAcnsAAHJ8AAByfQAAcn8AAHKBAAByggAAcoMAAHKFAAByhgAAcsUAAHLHAAByyQAAcssAAHLOAAByzwAActAAAHLRAABy0gAActQAAHLWAABy1wAActgAAHLaAABy2wAAcyYAAHNJAABzaQAAc4kAAHOLAABzjQAAc48AAHORAABzkwAAc5QAAHOVAABzmAAAc5kAAHObAABznAAAc54AAHOgAABzoQAAc6IAAHOlAABzpgAAc6sAAHO4AABzvQAAc78AAHPBAABzxgAAc8kAAHPMAABzzgAAc/MAAHQXAAB0PgAAdGIAAHRlAAB0ZwAAdGkAAHRrAAB0bQAAdG8AAHRwAAB0cwAAdIAAAHSRAAB0kwAAdJUAAHSXAAB0mQAAdJsAAHSdAAB0nwAAdKEAAHSyAAB0tQAAdLgAAHS7AAB0vgAAdMEAAHTEAAB0xwAAdMoAAHTMAAB1CwAAdQ0AAHUPAAB1EQAAdRQAAHUVAAB1FgAAdRcAAHUYAAB1GgAAdRwAAHUdAAB1HgAAdSAAAHUhAAB1YAAAdWIAAHVkAAB1ZgAAdWkAAHVqAAB1awAAdWwAAHVtAAB1bwAAdXEAAHVyAAB1cwAAdXUAAHV2AAB1tQAAdbcAAHW6AAB1vAAAdb8AAHXAAAB1wQAAdcIAAHXDAAB1xQAAdccAAHXIAAB1yQAAdcsAAHXMAAB12QAAddoAAHXbAAB13QAAdhwAAHYeAAB2IAAAdiIAAHYlAAB2JgAAdicAAHYoAAB2KQAAdisAAHYtAAB2LgAAdi8AAHYxAAB2MgAAdnEAAHZzAAB2dQAAdncAAHZ6AAB2ewAAdnwAAHZ9AAB2fgAAdoAAAHaCAAB2gwAAdoQAAHaGAAB2hwAAdsYAAHbIAAB2ygAAdswAAHbPAAB20AAAdtEAAHbSAAB20wAAdtUAAHbXAAB22AAAdtkAAHbbAAB23AAAdxsAAHcdAAB3HwAAdyEAAHckAAB3JQAAdyYAAHcnAAB3KAAAdyoAAHcsAAB3LQAAdy4AAHcwAAB3MQAAd3AAAHdyAAB3dAAAd3YAAHd5AAB3egAAd3sAAHd8AAB3fQAAd38AAHeBAAB3ggAAd4MAAHeFAAB3hgAAd6sAAHfPAAB39gAAeBoAAHgdAAB4HwAAeCEAAHgjAAB4JQAAeCcAAHgoAAB4KwAAeDgAAHhHAAB4SQAAeEsAAHhNAAB4TwAAeFEAAHhTAAB4VQAAeGQAAHhnAAB4agAAeG0AAHhwAAB4cwAAeHYAAHh5AAB4ewAAeLoAAHi8AAB4vgAAeMAAAHjDAAB4xAAAeMUAAHjGAAB4xwAAeMkAAHjLAAB4zAAAeM0AAHjPAAB40AAAeQ8AAHkRAAB5EwAAeRUAAHkYAAB5GQAAeRoAAHkbAAB5HAAAeR4AAHkgAAB5IQAAeSIAAHkkAAB5JQAAeWQAAHlmAAB5aAAAeWoAAHltAAB5bgAAeW8AAHlwAAB5cQAAeXMAAHl1AAB5dgAAeXcAAHl5AAB5egAAebkAAHm7AAB5vQAAeb8AAHnCAAB5wwAAecQAAHnFAAB5xgAAecgAAHnKAAB5ywAAecwAAHnOAAB5zwAAeg4AAHoQAAB6EgAAehQAAHoXAAB6GAAAehkAAHoaAAB6GwAAeh0AAHofAAB6IAAAeiEAAHojAAB6JAAAemMAAHplAAB6ZwAAemkAAHpsAAB6bQAAem4AAHpvAAB6cAAAenIAAHp0AAB6dQAAenYAAHp4AAB6eQAAergAAHq6AAB6vAAAer4AAHrBAAB6wgAAesMAAHrEAAB6xQAAescAAHrJAAB6ygAAessAAHrNAAB6zgAAexkAAHs8AAB7XAAAe3wAAHt+AAB7gAAAe4IAAHuEAAB7hgAAe4cAAHuIAAB7iwAAe4wAAHuOAAB7jwAAe5IAAHuUAAB7lQAAe5YAAHuZAAB7mgAAe6MAAHuwAAB7tQAAe7cAAHu6AAB7vwAAe8IAAHvFAAB7xwAAe9oAAHv/AAB8IwAAfEoAAHxuAAB8cQAAfHMAAHx1AAB8dwAAfHkAAHx7AAB8fAAAfH8AAHyMAAB8nQAAfJ8AAHyhAAB8owAAfKUAAHynAAB8qQAAfKsAAHytAAB8vgAAfMEAAHzEAAB8xwAAfMoAAHzNAAB80AAAfNMAAHzWAAB82AAAfRcAAH0ZAAB9GwAAfR0AAH0gAAB9IQAAfSIAAH0jAAB9JAAAfSYAAH0oAAB9KQAAfSoAAH0sAAB9LQAAfWwAAH1uAAB9cAAAfXIAAH11AAB9dgAAfXcAAH14AAB9eQAAfXsAAH19AAB9fgAAfX8AAH2BAAB9ggAAfcEAAH3DAAB9xgAAfcgAAH3LAAB9zAAAfc0AAH3OAAB9zwAAfdEAAH3TAAB91AAAfdUAAH3XAAB92AAAfeUAAH3mAAB95wAAfekAAH4oAAB+KgAAfiwAAH4uAAB+MQAAfjIAAH4zAAB+NAAAfjUAAH43AAB+OQAAfjoAAH47AAB+PQAAfj4AAH59AAB+fwAAfoEAAH6DAAB+hgAAfocAAH6IAAB+iQAAfooAAH6MAAB+jgAAfo8AAH6QAAB+kgAAfpMAAH7SAAB+1AAAftYAAH7YAAB+2wAAftwAAH7dAAB+3gAAft8AAH7hAAB+4wAAfuQAAH7lAAB+5wAAfugAAH8nAAB/KQAAfysAAH8tAAB/MAAAfzEAAH8yAAB/MwAAfzQAAH82AAB/OAAAfzkAAH86AAB/PAAAfz0AAH98AAB/fgAAf4AAAH+CAAB/hQAAf4YAAH+HAAB/iAAAf4kAAH+LAAB/jQAAf44AAH+PAAB/kQAAf5IAAH+3AAB/2wAAgAIAAIAmAACAKQAAgCwAAIAuAACAMAAAgDIAAIA0AACANQAAgDgAAIBFAACAVAAAgFcAAIBaAACAXQAAgGAAAIBjAACAZgAAgGkAAIB4AACAewAAgH4AAICBAACAhAAAgIcAAICKAACAjQAAgI8AAIChAACAtQAAgMcAAIDcAACA7gAAgP0AAIEaAACBWQAAgVsAAIFeAACBYAAAgWMAAIFkAACBZQAAgWYAAIFnAACBaQAAgWwAAIFtAACBbgAAgXAAAIFxAACBsAAAgbIAAIG1AACBtwAAgboAAIG7AACBvAAAgb0AAIG+AACBwAAAgcMAAIHEAACBxQAAgccAAIHIAACBygAAggkAAIILAACCDgAAghAAAIITAACCFAAAghUAAIIWAACCFwAAghkAAIIcAACCHQAAgh4AAIIgAACCIQAAgmAAAIJiAACCZQAAgmcAAIJqAACCawAAgmwAAIJtAACCbgAAgnAAAIJzAACCdAAAgnUAAIJ3AACCeAAAgrsAAILfAACDAwAAgyYAAINNAACDbQAAg5QAAIO7AACD2wAAg/8AAIQjAACEJQAAhCgAAIQqAACELAAAhC4AAIQxAACENAAAhDYAAIQ4AACEOwAAhD0AAIQ/AACEQgAAhEUAAIRGAACESwAAhFgAAIRbAACEXQAAhGAAAIRjAACEZQAAhIoAAISuAACE1QAAhPkAAIT8AACE/gAAhQAAAIUCAACFBAAAhQYAAIUHAACFCgAAhRcAAIUoAACFKgAAhSwAAIUuAACFMAAAhTIAAIU0AACFNgAAhTgAAIVJAACFTAAAhU8AAIVSAACFVQAAhVgAAIVbAACFXgAAhWEAAIVjAACFogAAhaQAAIWnAACFqQAAhawAAIWtAACFrgAAha8AAIWwAACFsgAAhbQAAIW1AACFtgAAhbgAAIW5AACFwgAAhcMAAIXFAACGBAAAhgYAAIYIAACGCgAAhg0AAIYOAACGDwAAhhAAAIYRAACGEwAAhhUAAIYWAACGFwAAhhkAAIYaAACGWQAAhlsAAIZdAACGXwAAhmIAAIZjAACGZAAAhmUAAIZmAACGaAAAhmoAAIZrAACGbAAAhm4AAIZvAACGrgAAhrAAAIazAACGtQAAhrgAAIa5AACGugAAhrsAAIa8AACGvgAAhsAAAIbBAACGwgAAhsQAAIbFAACGzgAAhs8AAIbRAACHEAAAhxIAAIcUAACHFgAAhxkAAIcaAACHGwAAhxwAAIcdAACHHwAAhyEAAIciAACHIwAAhyUAAIcmAACHZQAAh2cAAIdqAACHbAAAh28AAIdwAACHcQAAh3IAAIdzAACHdQAAh3cAAId4AACHeQAAh3sAAId8AACHiQAAh4oAAIeLAACHjQAAh8wAAIfOAACH0AAAh9IAAIfVAACH1gAAh9cAAIfYAACH2QAAh9sAAIfdAACH3gAAh98AAIfhAACH4gAAiCEAAIgjAACIJgAAiCgAAIgrAACILAAAiC0AAIguAACILwAAiDEAAIgzAACINAAAiDUAAIg3AACIOAAAiEsAAIhYAACIawAAiG4AAIhxAACIdAAAiHcAAIh6AACIfAAAiH8AAIiCAACIhAAAiJcAAIiaAACInQAAiKAAAIijAACIpgAAiKkAAIisAACIrwAAiLIAAIi0AACIvAAAiMAAAIjUAACI2QAAiOEAAIjnAACI8QAAiTwAAIlfAACJfwAAiZ8AAImhAACJowAAiaUAAImnAACJqgAAiasAAImsAACJrwAAibAAAImyAACJswAAibUAAIm4AACJuQAAiboAAIm9AACJvgAAicMAAInQAACJ1QAAidcAAInZAACJ3gAAieEAAInkAACJ5gAAigsAAIovAACKVgAAinoAAIp9AACKfwAAioEAAIqDAACKhQAAiocAAIqIAACKiwAAipgAAIqpAACKqwAAiq0AAIqvAACKsQAAirMAAIq1AACKtwAAirkAAIrKAACKzQAAitAAAIrTAACK1gAAitkAAIrcAACK3wAAiuIAAIrkAACLIwAAiyUAAIsnAACLKQAAiywAAIstAACLLgAAiy8AAIswAACLMgAAizQAAIs1AACLNgAAizgAAIs5AACLeAAAi3oAAIt8AACLfgAAi4EAAIuCAACLgwAAi4QAAIuFAACLhwAAi4kAAIuKAACLiwAAi40AAIuOAACLzQAAi88AAIvSAACL1AAAi9cAAIvYAACL2QAAi9oAAIvbAACL3QAAi98AAIvgAACL4QAAi+MAAIvkAACL8QAAi/IAAIvzAACL9QAAjDQAAIw2AACMOAAAjDoAAIw9AACMPgAAjD8AAIxAAACMQQAAjEMAAIxFAACMRgAAjEcAAIxJAACMSgAAjIkAAIyLAACMjQAAjI8AAIySAACMkwAAjJQAAIyVAACMlgAAjJgAAIyaAACMmwAAjJwAAIyeAACMnwAAjN4AAIzgAACM4gAAjOQAAIznAACM6AAAjOkAAIzqAACM6wAAjO0AAIzvAACM8AAAjPEAAIzzAACM9AAAjTMAAI01AACNNwAAjTkAAI08AACNPQAAjT4AAI0/AACNQAAAjUIAAI1EAACNRQAAjUYAAI1IAACNSQAAjYgAAI2KAACNjAAAjY4AAI2RAACNkgAAjZMAAI2UAACNlQAAjZcAAI2ZAACNmgAAjZsAAI2dAACNngAAjcMAAI3nAACODgAAjjIAAI41AACONwAAjjkAAI47AACOPQAAjj8AAI5AAACOQwAAjlAAAI5fAACOYQAAjmMAAI5lAACOZwAAjmkAAI5rAACObQAAjnwAAI5/AACOggAAjoUAAI6IAACOiwAAjo4AAI6RAACOkwAAjtIAAI7UAACO1gAAjtgAAI7bAACO3AAAjt0AAI7eAACO3wAAjuEAAI7jAACO5AAAjuUAAI7nAACO6AAAjycAAI8pAACPKwAAjy0AAI8wAACPMQAAjzIAAI8zAACPNAAAjzYAAI84AACPOQAAjzoAAI88AACPPQAAj3wAAI9+AACPgAAAj4IAAI+FAACPhgAAj4cAAI+IAACPiQAAj4sAAI+NAACPjgAAj48AAI+RAACPkgAAj9EAAI/TAACP1QAAj9cAAI/aAACP2wAAj9wAAI/dAACP3gAAj+AAAI/iAACP4wAAj+QAAI/mAACP5wAAkCYAAJAoAACQKgAAkCwAAJAvAACQMAAAkDEAAJAyAACQMwAAkDUAAJA3AACQOAAAkDkAAJA7AACQPAAAkHsAAJB9AACQfwAAkIEAAJCEAACQhQAAkIYAAJCHAACQiAAAkIoAAJCMAACQjQAAkI4AAJCQAACQkQAAkNAAAJDSAACQ1AAAkNYAAJDZAACQ2gAAkNsAAJDcAACQ3QAAkN8AAJDhAACQ4gAAkOMAAJDlAACQ5gAAkTEAAJFUAACRdAAAkZQAAJGWAACRmAAAkZoAAJGcAACRnwAAkaAAAJGhAACRpAAAkaUAAJGnAACRqAAAkaoAAJGtAACRrgAAka8AAJGyAACRswAAkbwAAJHJAACRzgAAkdAAAJHSAACR1wAAkdoAAJHdAACR3wAAkgQAAJIoAACSTwAAknMAAJJ2AACSeAAAknoAAJJ8AACSfgAAkoAAAJKBAACShAAAkpEAAJKiAACSpAAAkqYAAJKoAACSqgAAkqwAAJKuAACSsAAAkrIAAJLDAACSxgAAkskAAJLMAACSzwAAktIAAJLVAACS2AAAktsAAJLdAACTHAAAkx4AAJMgAACTIgAAkyUAAJMmAACTJwAAkygAAJMpAACTKwAAky0AAJMuAACTLwAAkzEAAJMyAACTcQAAk3MAAJN1AACTdwAAk3oAAJN7AACTfAAAk30AAJN+AACTgAAAk4IAAJODAACThAAAk4YAAJOHAACTxgAAk8gAAJPLAACTzQAAk9AAAJPRAACT0gAAk9MAAJPUAACT1gAAk9gAAJPZAACT2gAAk9wAAJPdAACT6gAAk+sAAJPsAACT7gAAlC0AAJQvAACUMQAAlDMAAJQ2AACUNwAAlDgAAJQ5AACUOgAAlDwAAJQ+AACUPwAAlEAAAJRCAACUQwAAlIIAAJSEAACUhgAAlIgAAJSLAACUjAAAlI0AAJSOAACUjwAAlJEAAJSTAACUlAAAlJUAAJSXAACUmAAAlNcAAJTZAACU2wAAlN0AAJTgAACU4QAAlOIAAJTjAACU5AAAlOYAAJToAACU6QAAlOoAAJTsAACU7QAAlSwAAJUuAACVMAAAlTIAAJU1AACVNgAAlTcAAJU4AACVOQAAlTsAAJU9AACVPgAAlT8AAJVBAACVQgAAlYEAAJWDAACVhQAAlYcAAJWKAACViwAAlYwAAJWNAACVjgAAlZAAAJWSAACVkwAAlZQAAJWWAACVlwAAlbwAAJXgAACWBwAAlisAAJYuAACWMAAAljIAAJY0AACWNgAAljgAAJY5AACWPAAAlkkAAJZYAACWWgAAllwAAJZeAACWYAAAlmIAAJZkAACWZgAAlnUAAJZ4AACWewAAln4AAJaBAACWhAAAlocAAJaKAACWjAAAlssAAJbNAACWzwAAltEAAJbUAACW1QAAltYAAJbXAACW2AAAltoAAJbcAACW3QAAlt4AAJbgAACW4QAAlyAAAJciAACXJAAAlyYAAJcpAACXKgAAlysAAJcsAACXLQAAly8AAJcxAACXMgAAlzMAAJc1AACXNgAAl3UAAJd3AACXeQAAl3sAAJd+AACXfwAAl4AAAJeBAACXggAAl4QAAJeGAACXhwAAl4gAAJeKAACXiwAAl8oAAJfMAACXzgAAl9AAAJfTAACX1AAAl9UAAJfWAACX1wAAl9kAAJfbAACX3AAAl90AAJffAACX4AAAmB8AAJghAACYIwAAmCUAAJgoAACYKQAAmCoAAJgrAACYLAAAmC4AAJgwAACYMQAAmDIAAJg0AACYNQAAmHQAAJh2AACYeAAAmHoAAJh9AACYfgAAmH8AAJiAAACYgQAAmIMAAJiFAACYhgAAmIcAAJiJAACYigAAmMkAAJjLAACYzQAAmM8AAJjSAACY0wAAmNQAAJjVAACY1gAAmNgAAJjaAACY2wAAmNwAAJjeAACY3wAAmSoAAJlNAACZbQAAmY0AAJmPAACZkQAAmZMAAJmVAACZmAAAmZkAAJmaAACZnQAAmZ4AAJmgAACZoQAAmaQAAJmnAACZqAAAmakAAJmsAACZrQAAmbIAAJm/AACZxAAAmcYAAJnJAACZzgAAmdEAAJnUAACZ1gAAmfsAAJofAACaRgAAmmoAAJptAACabwAAmnEAAJpzAACadQAAmncAAJp4AACaewAAmogAAJqZAACamwAAmp0AAJqfAACaoQAAmqMAAJqlAACapwAAmqkAAJq6AACavQAAmsAAAJrDAACaxgAAmskAAJrMAACazwAAmtIAAJrUAACbEwAAmxUAAJsXAACbGQAAmxwAAJsdAACbHgAAmx8AAJsgAACbIgAAmyQAAJslAACbJgAAmygAAJspAACbaAAAm2oAAJtsAACbbgAAm3EAAJtyAACbcwAAm3QAAJt1AACbdwAAm3kAAJt6AACbewAAm30AAJt+AACbvQAAm78AAJvCAACbxAAAm8cAAJvIAACbyQAAm8oAAJvLAACbzQAAm88AAJvQAACb0QAAm9MAAJvUAACb4QAAm+IAAJvjAACb5QAAnCQAAJwmAACcKAAAnCoAAJwtAACcLgAAnC8AAJwwAACcMQAAnDMAAJw1AACcNgAAnDcAAJw5AACcOgAAnHkAAJx7AACcfQAAnH8AAJyCAACcgwAAnIQAAJyFAACchgAAnIgAAJyKAACciwAAnIwAAJyOAACcjwAAnM4AAJzQAACc0gAAnNQAAJzXAACc2AAAnNkAAJzaAACc2wAAnN0AAJzfAACc4AAAnOEAAJzjAACc5AAAnSMAAJ0lAACdJwAAnSkAAJ0sAACdLQAAnS4AAJ0vAACdMAAAnTIAAJ00AACdNQAAnTYAAJ04AACdOQAAnXgAAJ16AACdfAAAnX4AAJ2BAACdggAAnYMAAJ2EAACdhQAAnYcAAJ2JAACdigAAnYsAAJ2NAACdjgAAnbMAAJ3XAACd/gAAniIAAJ4lAACeKAAAnioAAJ4sAACeLgAAnjAAAJ4xAACeNAAAnkEAAJ5QAACeUwAAnlYAAJ5ZAACeXAAAnl8AAJ5iAACeZQAAnnQAAJ53AACeegAAnn0AAJ6AAACegwAAnoYAAJ6JAACeiwAAnsoAAJ7MAACezwAAntEAAJ7UAACe1QAAntYAAJ7XAACe2AAAntoAAJ7dAACe3gAAnt8AAJ7hAACe4gAAnyEAAJ8jAACfJgAAnygAAJ8rAACfLAAAny0AAJ8uAACfLwAAnzEAAJ80AACfNQAAnzYAAJ84AACfOQAAn3gAAJ96AACffQAAn38AAJ+CAACfgwAAn4QAAJ+FAACfhgAAn4gAAJ+LAACfjAAAn40AAJ+PAACfkAAAn88AAJ/RAACf0wAAn9UAAJ/YAACf2QAAn9oAAJ/bAACf3AAAn94AAJ/hAACf4gAAn+MAAJ/lAACf5gAAoCUAAKAnAACgKQAAoCsAAKAuAACgLwAAoDAAAKAxAACgMgAAoDQAAKA3AACgOAAAoDkAAKA7AACgPAAAoHsAAKB9AACgfwAAoIEAAKCEAACghQAAoIYAAKCHAACgiAAAoIoAAKCNAACgjgAAoI8AAKCRAACgkgAAoNEAAKDTAACg1gAAoNgAAKDbAACg3AAAoN0AAKDeAACg3wAAoOEAAKDkAACg5QAAoOYAAKDoAACg6QAAoPIAAKEFAAChEgAAoSUAAKEyAAChRQAAoVwAAKFuAAChuQAAodwAAKH8AACiHAAAoh4AAKIgAACiIgAAoiQAAKInAACiKAAAoikAAKIsAACiLQAAoi8AAKIwAACiMwAAojYAAKI3AACiOAAAojsAAKI8AACiQQAAok4AAKJTAACiVQAAolgAAKJdAACiYAAAomMAAKJlAACiigAAoq4AAKLVAACi+QAAovwAAKL+AACjAAAAowIAAKMEAACjBgAAowcAAKMKAACjFwAAoygAAKMqAACjLAAAoy4AAKMwAACjMgAAozQAAKM2AACjOAAAo0kAAKNMAACjTwAAo1IAAKNVAACjWAAAo1sAAKNeAACjYQAAo2MAAKOiAACjpAAAo6YAAKOoAACjqwAAo6wAAKOtAACjrgAAo68AAKOxAACjswAAo7QAAKO1AACjtwAAo7gAAKP3AACj+QAAo/sAAKP9AACkAAAApAEAAKQCAACkAwAApAQAAKQGAACkCAAApAkAAKQKAACkDAAApA0AAKRMAACkTgAApFEAAKRTAACkVgAApFcAAKRYAACkWQAApFoAAKRcAACkXgAApF8AAKRgAACkYgAApGMAAKRwAACkcQAApHIAAKR0AACkswAApLUAAKS3AACkuQAApLwAAKS9AACkvgAApL8AAKTAAACkwgAApMQAAKTFAACkxgAApMgAAKTJAAClCAAApQoAAKUMAAClDgAApREAAKUSAAClEwAApRQAAKUVAAClFwAApRkAAKUaAAClGwAApR0AAKUeAAClXQAApV8AAKVhAAClYwAApWYAAKVnAAClaAAApWkAAKVqAAClbAAApW4AAKVvAAClcAAApXIAAKVzAAClsgAApbQAAKW2AACluAAApbsAAKW8AAClvQAApb4AAKW/AAClwQAApcMAAKXEAAClxQAApccAAKXIAACmBwAApgkAAKYLAACmDQAAphAAAKYRAACmEgAAphMAAKYUAACmFgAAphgAAKYZAACmGgAAphwAAKYdAACmQgAApmYAAKaNAACmsQAAprQAAKa3AACmuQAAprsAAKa9AACmvwAApsAAAKbDAACm0AAApt8AAKbiAACm5QAApugAAKbrAACm7gAApvEAAKb0AACnAwAApwYAAKcJAACnDAAApw8AAKcSAACnFQAApxgAAKcaAACnWQAAp1sAAKdeAACnYAAAp2MAAKdkAACnZQAAp2YAAKdnAACnaQAAp2wAAKdtAACnbgAAp3AAAKdxAACnsAAAp7IAAKe1AACntwAAp7oAAKe7AACnvAAAp70AAKe+AACnwAAAp8MAAKfEAACnxQAAp8cAAKfIAACoBwAAqAkAAKgMAACoDgAAqBEAAKgSAACoEwAAqBQAAKgVAACoFwAAqBoAAKgbAACoHAAAqB4AAKgfAACoXgAAqGAAAKhjAACoZQAAqGgAAKhpAACoagAAqGsAAKhsAACobgAAqHEAAKhyAACocwAAqHUAAKh2AACouQAAqN0AAKkBAACpJAAAqUsAAKlrAACpkgAAqbkAAKnZAACp/QAAqiEAAKojAACqJgAAqigAAKoqAACqLAAAqi8AAKoyAACqNAAAqjYAAKo5AACqOwAAqj0AAKpAAACqQwAAqkQAAKpJAACqVgAAqlkAAKpbAACqXgAAqmEAAKpjAACqiAAAqqwAAKrTAACq9wAAqvoAAKr8AACq/gAAqwAAAKsCAACrBAAAqwUAAKsIAACrFQAAqyYAAKsoAACrKgAAqywAAKsuAACrMAAAqzIAAKs0AACrNgAAq0cAAKtKAACrTQAAq1AAAKtTAACrVgAAq1kAAKtcAACrXwAAq2EAAKugAACrogAAq6UAAKunAACrqgAAq6sAAKusAACrrQAAq64AAKuwAACrsgAAq7MAAKu0AACrtgAAq7cAAKvAAACrwQAAq8MAAKwCAACsBAAArAYAAKwIAACsCwAArAwAAKwNAACsDgAArA8AAKwRAACsEwAArBQAAKwVAACsFwAArBgAAKxXAACsWQAArFsAAKxdAACsYAAArGEAAKxiAACsYwAArGQAAKxmAACsaAAArGkAAKxqAACsbAAArG0AAKysAACsrgAArLEAAKyzAACstgAArLcAAKy4AACsuQAArLoAAKy8AACsvgAArL8AAKzAAACswgAArMMAAKzMAACszQAArM8AAK0OAACtEAAArRIAAK0UAACtFwAArRgAAK0ZAACtGgAArRsAAK0dAACtHwAArSAAAK0hAACtIwAArSQAAK1jAACtZQAArWgAAK1qAACtbQAArW4AAK1vAACtcAAArXEAAK1zAACtdQAArXYAAK13AACteQAArXoAAK2HAACtiAAArYkAAK2LAACtygAArcwAAK3OAACt0AAArdMAAK3UAACt1QAArdYAAK3XAACt2QAArdsAAK3cAACt3QAArd8AAK3gAACuHwAAriEAAK4jAACuJQAArigAAK4pAACuKgAArisAAK4sAACuLgAArjAAAK4xAACuMgAArjQAAK41AACuQgAArlUAAK5XAACuWgAArl0AAK5gAACuYwAArmUAAK5nAACuagAArm0AAK6AAACugwAAroYAAK6JAACujAAAro8AAK6SAACulQAArpgAAK6bAACunQAArqsAAK60AACuvgAArtYAAK7xAACvAwAAr04AAK9xAACvkQAAr7EAAK+zAACvtQAAr7cAAK+5AACvvAAAr70AAK++AACvwQAAr8IAAK/EAACvxQAAr8cAAK/JAACvygAAr8sAAK/OAACvzwAAr9QAAK/hAACv5gAAr+gAAK/qAACv7wAAr/IAAK/1AACv9wAAsBwAALBAAACwZwAAsIsAALCOAACwkAAAsJIAALCUAACwlgAAsJgAALCZAACwnAAAsKkAALC6AACwvAAAsL4AALDAAACwwgAAsMQAALDGAACwyAAAsMoAALDbAACw3gAAsOEAALDkAACw5wAAsOoAALDtAACw8AAAsPMAALD1AACxNAAAsTYAALE4AACxOgAAsT0AALE+AACxPwAAsUAAALFBAACxQwAAsUUAALFGAACxRwAAsUkAALFKAACxiQAAsYsAALGNAACxjwAAsZIAALGTAACxlAAAsZUAALGWAACxmAAAsZoAALGbAACxnAAAsZ4AALGfAACx3gAAseAAALHjAACx5QAAsegAALHpAACx6gAAsesAALHsAACx7gAAsfAAALHxAACx8gAAsfQAALH1AACyAgAAsgMAALIEAACyBgAAskUAALJHAACySQAAsksAALJOAACyTwAAslAAALJRAACyUgAAslQAALJWAACyVwAAslgAALJaAACyWwAAspoAALKcAACyngAAsqAAALKjAACypAAAsqUAALKmAACypwAAsqkAALKrAACyrAAAsq0AALKvAACysAAAsu8AALLxAACy8wAAsvUAALL4AACy+QAAsvoAALL7AACy/AAAsv4AALMAAACzAQAAswIAALMEAACzBQAAs0QAALNGAACzSAAAs0oAALNNAACzTgAAs08AALNQAACzUQAAs1MAALNVAACzVgAAs1cAALNZAACzWgAAs5kAALObAACznQAAs58AALOiAACzowAAs6QAALOlAACzpgAAs6gAALOqAACzqwAAs6wAALOuAACzrwAAs9QAALP4AAC0HwAAtEMAALRGAAC0SAAAtEoAALRMAAC0TgAAtFAAALRRAAC0VAAAtGEAALRwAAC0cgAAtHQAALR2AAC0eAAAtHoAALR8AAC0fgAAtI0AALSQAAC0kwAAtJYAALSZAAC0nAAAtJ8AALSiAAC0pAAAtOMAALTlAAC05wAAtOkAALTsAAC07QAAtO4AALTvAAC08AAAtPIAALT0AAC09QAAtPYAALT4AAC0+QAAtTgAALU6AAC1PAAAtT4AALVBAAC1QgAAtUMAALVEAAC1RQAAtUcAALVJAAC1SgAAtUsAALVNAAC1TgAAtY0AALWPAAC1kQAAtZMAALWWAAC1lwAAtZgAALWZAAC1mgAAtZwAALWeAAC1nwAAtaAAALWiAAC1owAAteIAALXkAAC15gAAtegAALXrAAC17AAAte0AALXuAAC17wAAtfEAALXzAAC19AAAtfUAALX3AAC1+AAAtjcAALY5AAC2OwAAtj0AALZAAAC2QQAAtkIAALZDAAC2RAAAtkYAALZIAAC2SQAAtkoAALZMAAC2TQAAtowAALaOAAC2kAAAtpIAALaVAAC2lgAAtpcAALaYAAC2mQAAtpsAALadAAC2ngAAtp8AALahAAC2ogAAtuEAALbjAAC25QAAtucAALbqAAC26wAAtuwAALbtAAC27gAAtvAAALbyAAC28wAAtvQAALb2AAC29wAAt0IAALdlAAC3hQAAt6UAALenAAC3qQAAt6sAALetAAC3sAAAt7EAALeyAAC3tQAAt7YAALe4AAC3uQAAt7sAALe+AAC3vwAAt8AAALfDAAC3xAAAt8kAALfWAAC32wAAt90AALffAAC35AAAt+cAALfqAAC37AAAuBEAALg1AAC4XAAAuIAAALiDAAC4hQAAuIcAALiJAAC4iwAAuI0AALiOAAC4kQAAuJ4AALivAAC4sQAAuLMAALi1AAC4twAAuLkAALi7AAC4vQAAuL8AALjQAAC40wAAuNYAALjZAAC43AAAuN8AALjiAAC45QAAuOgAALjqAAC5KQAAuSsAALktAAC5LwAAuTIAALkzAAC5NAAAuTUAALk2AAC5OAAAuToAALk7AAC5PAAAuT4AALk/AAC5fgAAuYAAALmCAAC5hAAAuYcAALmIAAC5iQAAuYoAALmLAAC5jQAAuY8AALmQAAC5kQAAuZMAALmUAAC50wAAudUAALnYAAC52gAAud0AALneAAC53wAAueAAALnhAAC54wAAueUAALnmAAC55wAAuekAALnqAAC59wAAufgAALn5AAC5+wAAujoAALo8AAC6PgAAukAAALpDAAC6RAAAukUAALpGAAC6RwAAukkAALpLAAC6TAAAuk0AALpPAAC6UAAAuo8AALqRAAC6kwAAupUAALqYAAC6mQAAupoAALqbAAC6nAAAup4AALqgAAC6oQAAuqIAALqkAAC6pQAAuuQAALrmAAC66AAAuuoAALrtAAC67gAAuu8AALrwAAC68QAAuvMAALr1AAC69gAAuvcAALr5AAC6+gAAuzkAALs7AAC7PQAAuz8AALtCAAC7QwAAu0QAALtFAAC7RgAAu0gAALtKAAC7SwAAu0wAALtOAAC7TwAAu44AALuQAAC7kgAAu5QAALuXAAC7mAAAu5kAALuaAAC7mwAAu50AALufAAC7oAAAu6EAALujAAC7pAAAu8kAALvtAAC8FAAAvDgAALw7AAC8PQAAvD8AALxBAAC8QwAAvEUAALxGAAC8SQAAvFYAALxlAAC8ZwAAvGkAALxrAAC8bQAAvG8AALxxAAC8cwAAvIIAALyFAAC8iAAAvIsAALyOAAC8kQAAvJQAALyXAAC8mQAAvNgAALzaAAC83AAAvN4AALzhAAC84gAAvOMAALzkAAC85QAAvOcAALzpAAC86gAAvOsAALztAAC87gAAvS0AAL0vAAC9MQAAvTMAAL02AAC9NwAAvTgAAL05AAC9OgAAvTwAAL0+AAC9PwAAvUAAAL1CAAC9QwAAvYIAAL2EAAC9hgAAvYgAAL2LAAC9jAAAvY0AAL2OAAC9jwAAvZEAAL2TAAC9lAAAvZUAAL2XAAC9mAAAvdcAAL3ZAAC92wAAvd0AAL3gAAC94QAAveIAAL3jAAC95AAAveYAAL3oAAC96QAAveoAAL3sAAC97QAAviwAAL4uAAC+MAAAvjIAAL41AAC+NgAAvjcAAL44AAC+OQAAvjsAAL49AAC+PgAAvj8AAL5BAAC+QgAAvoEAAL6DAAC+hQAAvocAAL6KAAC+iwAAvowAAL6NAAC+jgAAvpAAAL6SAAC+kwAAvpQAAL6WAAC+lwAAvtYAAL7YAAC+2gAAvtwAAL7fAAC+4AAAvuEAAL7iAAC+4wAAvuUAAL7nAAC+6AAAvukAAL7rAAC+7AAAvzcAAL9aAAC/egAAv5oAAL+cAAC/ngAAv6AAAL+iAAC/pQAAv6YAAL+nAAC/qgAAv6sAAL+tAAC/rgAAv7AAAL+zAAC/tAAAv7UAAL+4AAC/uQAAv8IAAL/PAAC/1AAAv9YAAL/YAAC/3QAAv+AAAL/jAAC/5QAAwAoAAMAuAADAVQAAwHkAAMB8AADAfgAAwIAAAMCCAADAhAAAwIYAAMCHAADAigAAwJcAAMCoAADAqgAAwKwAAMCuAADAsAAAwLIAAMC0AADAtgAAwLgAAMDJAADAzAAAwM8AAMDSAADA1QAAwNgAAMDbAADA3gAAwOEAAMDjAADBIgAAwSQAAMEmAADBKAAAwSsAAMEsAADBLQAAwS4AAMEvAADBMQAAwTMAAME0AADBNQAAwTcAAME4AADBdwAAwXkAAMF7AADBfQAAwYAAAMGBAADBggAAwYMAAMGEAADBhgAAwYgAAMGJAADBigAAwYwAAMGNAADBzAAAwc4AAMHRAADB0wAAwdYAAMHXAADB2AAAwdkAAMHaAADB3AAAwd4AAMHfAADB4AAAweIAAMHjAADB8AAAwfEAAMHyAADB9AAAwjMAAMI1AADCNwAAwjkAAMI8AADCPQAAwj4AAMI/AADCQAAAwkIAAMJEAADCRQAAwkYAAMJIAADCSQAAwogAAMKKAADCjAAAwo4AAMKRAADCkgAAwpMAAMKUAADClQAAwpcAAMKZAADCmgAAwpsAAMKdAADCngAAwt0AAMLfAADC4QAAwuMAAMLmAADC5wAAwugAAMLpAADC6gAAwuwAAMLuAADC7wAAwvAAAMLyAADC8wAAwzIAAMM0AADDNgAAwzgAAMM7AADDPAAAwz0AAMM+AADDPwAAw0EAAMNDAADDRAAAw0UAAMNHAADDSAAAw4cAAMOJAADDiwAAw40AAMOQAADDkQAAw5IAAMOTAADDlAAAw5YAAMOYAADDmQAAw5oAAMOcAADDnQAAw8IAAMPmAADEDQAAxDEAAMQ0AADENgAAxDgAAMQ6AADEPAAAxD4AAMQ/AADEQgAAxE8AAMReAADEYAAAxGIAAMRkAADEZgAAxGgAAMRqAADEbAAAxHsAAMR+AADEgQAAxIQAAMSHAADEigAAxI0AAMSQAADEkgAAxNEAAMTTAADE1QAAxNcAAMTaAADE2wAAxNwAAMTdAADE3gAAxOAAAMTiAADE4wAAxOQAAMTmAADE5wAAxSYAAMUoAADFKgAAxSwAAMUvAADFMAAAxTEAAMUyAADFMwAAxTUAAMU3AADFOAAAxTkAAMU7AADFPAAAxXsAAMV9AADFfwAAxYEAAMWEAADFhQAAxYYAAMWHAADFiAAAxYoAAMWMAADFjQAAxY4AAMWQAADFkQAAxdAAAMXSAADF1AAAxdYAAMXZAADF2gAAxdsAAMXcAADF3QAAxd8AAMXhAADF4gAAxeMAAMXlAADF5gAAxiUAAMYnAADGKQAAxisAAMYuAADGLwAAxjAAAMYxAADGMgAAxjQAAMY2AADGNwAAxjgAAMY6AADGOwAAxnoAAMZ8AADGfgAAxoAAAMaDAADGhAAAxoUAAMaGAADGhwAAxokAAMaLAADGjAAAxo0AAMaPAADGkAAAxs8AAMbRAADG0wAAxtUAAMbYAADG2QAAxtoAAMbbAADG3AAAxt4AAMbgAADG4QAAxuIAAMbkAADG5QAAxzAAAMdTAADHcwAAx5MAAMeVAADHlwAAx5kAAMebAADHngAAx58AAMegAADHowAAx6QAAMemAADHpwAAx6kAAMesAADHrQAAx64AAMexAADHsgAAx7cAAMfEAADHyQAAx8sAAMfNAADH0gAAx9UAAMfYAADH2gAAx/8AAMgjAADISgAAyG4AAMhxAADIcwAAyHUAAMh3AADIeQAAyHsAAMh8AADIfwAAyIwAAMidAADInwAAyKEAAMijAADIpQAAyKcAAMipAADIqwAAyK0AAMi+AADIwQAAyMQAAMjHAADIygAAyM0AAMjQAADI0wAAyNYAAMjYAADJFwAAyRkAAMkbAADJHQAAySAAAMkhAADJIgAAySMAAMkkAADJJgAAySgAAMkpAADJKgAAySwAAMktAADJbAAAyW4AAMlwAADJcgAAyXUAAMl2AADJdwAAyXgAAMl5AADJewAAyX0AAMl+AADJfwAAyYEAAMmCAADJwQAAycMAAMnGAADJyAAAycsAAMnMAADJzQAAyc4AAMnPAADJ0QAAydMAAMnUAADJ1QAAydcAAMnYAADJ5QAAyeYAAMnnAADJ6QAAyigAAMoqAADKLAAAyi4AAMoxAADKMgAAyjMAAMo0AADKNQAAyjcAAMo5AADKOgAAyjsAAMo9AADKPgAAyn0AAMp/AADKgQAAyoMAAMqGAADKhwAAyogAAMqJAADKigAAyowAAMqOAADKjwAAypAAAMqSAADKkwAAytIAAMrUAADK1gAAytgAAMrbAADK3AAAyt0AAMreAADK3wAAyuEAAMrjAADK5AAAyuUAAMrnAADK6AAAyycAAMspAADLKwAAyy0AAMswAADLMQAAyzIAAMszAADLNAAAyzYAAMs4AADLOQAAyzoAAMs8AADLPQAAy3wAAMt+AADLgAAAy4IAAMuFAADLhgAAy4cAAMuIAADLiQAAy4sAAMuNAADLjgAAy48AAMuRAADLkgAAy7cAAMvbAADMAgAAzCYAAMwpAADMKwAAzC0AAMwvAADMMQAAzDMAAMw0AADMNwAAzEQAAMxTAADMVQAAzFcAAMxZAADMWwAAzF0AAMxfAADMYQAAzHAAAMxzAADMdgAAzHkAAMx8AADMfwAAzIIAAMyFAADMhwAAzMYAAMzIAADMygAAzMwAAMzPAADM0AAAzNEAAMzSAADM0wAAzNUAAMzXAADM2AAAzNkAAMzbAADM3AAAzRsAAM0dAADNHwAAzSEAAM0kAADNJQAAzSYAAM0nAADNKAAAzSoAAM0sAADNLQAAzS4AAM0wAADNMQAAzXAAAM1yAADNdAAAzXYAAM15AADNegAAzXsAAM18AADNfQAAzX8AAM2BAADNggAAzYMAAM2FAADNhgAAzcUAAM3HAADNyQAAzcsAAM3OAADNzwAAzdAAAM3RAADN0gAAzdQAAM3WAADN1wAAzdgAAM3aAADN2wAAzhoAAM4cAADOHgAAziAAAM4jAADOJAAAziUAAM4mAADOJwAAzikAAM4rAADOLAAAzi0AAM4vAADOMAAAzm8AAM5xAADOcwAAznUAAM54AADOeQAAznoAAM57AADOfAAAzn4AAM6AAADOgQAAzoIAAM6EAADOhQAAzsQAAM7GAADOyAAAzsoAAM7NAADOzgAAzs8AAM7QAADO0QAAztMAAM7VAADO1gAAztcAAM7ZAADO2gAAzyUAAM9IAADPaAAAz4gAAM+KAADPjAAAz44AAM+QAADPkwAAz5QAAM+VAADPmAAAz5kAAM+bAADPnAAAz58AAM+iAADPowAAz6QAAM+nAADPqAAAz7EAAM++AADPwwAAz8UAAM/IAADPzQAAz9AAAM/TAADP1QAAz/oAANAeAADQRQAA0GkAANBsAADQbgAA0HAAANByAADQdAAA0HYAANB3AADQegAA0IcAANCYAADQmgAA0JwAANCeAADQoAAA0KIAANCkAADQpgAA0KgAANC5AADQvAAA0L8AANDCAADQxQAA0MgAANDLAADQzgAA0NEAANDTAADREgAA0RQAANEWAADRGAAA0RsAANEcAADRHQAA0R4AANEfAADRIQAA0SMAANEkAADRJQAA0ScAANEoAADRZwAA0WkAANFrAADRbQAA0XAAANFxAADRcgAA0XMAANF0AADRdgAA0XgAANF5AADRegAA0XwAANF9AADRvAAA0b4AANHBAADRwwAA0cYAANHHAADRyAAA0ckAANHKAADRzAAA0c4AANHPAADR0AAA0dIAANHTAADR4AAA0eEAANHiAADR5AAA0iMAANIlAADSJwAA0ikAANIsAADSLQAA0i4AANIvAADSMAAA0jIAANI0AADSNQAA0jYAANI4AADSOQAA0ngAANJ6AADSfAAA0n4AANKBAADSggAA0oMAANKEAADShQAA0ocAANKJAADSigAA0osAANKNAADSjgAA0s0AANLPAADS0QAA0tMAANLWAADS1wAA0tgAANLZAADS2gAA0twAANLeAADS3wAA0uAAANLiAADS4wAA0yIAANMkAADTJgAA0ygAANMrAADTLAAA0y0AANMuAADTLwAA0zEAANMzAADTNAAA0zUAANM3AADTOAAA03cAANN5AADTewAA030AANOAAADTgQAA04IAANODAADThAAA04YAANOIAADTiQAA04oAANOMAADTjQAA07IAANPWAADT/QAA1CEAANQkAADUJwAA1CkAANQrAADULQAA1C8AANQwAADUMwAA1EAAANRPAADUUgAA1FUAANRYAADUWwAA1F4AANRhAADUZAAA1HMAANR2AADUeQAA1HwAANR/AADUggAA1IUAANSIAADUigAA1MkAANTLAADUzgAA1NAAANTTAADU1AAA1NUAANTWAADU1wAA1NkAANTcAADU3QAA1N4AANTgAADU4QAA1SAAANUiAADVJQAA1ScAANUqAADVKwAA1SwAANUtAADVLgAA1TAAANUzAADVNAAA1TUAANU3AADVOAAA1ToAANV5AADVewAA1X4AANWAAADVgwAA1YQAANWFAADVhgAA1YcAANWJAADVjAAA1Y0AANWOAADVkAAA1ZEAANXQAADV0gAA1dUAANXXAADV2gAA1dsAANXcAADV3QAA1d4AANXgAADV4wAA1eQAANXlAADV5wAA1egAANYnAADWKQAA1isAANYtAADWMAAA1jEAANYyAADWMwAA1jQAANY2AADWOQAA1joAANY7AADWPQAA1j4AANZ9AADWfwAA1oEAANaDAADWhgAA1ocAANaIAADWiQAA1ooAANaMAADWjwAA1pAAANaRAADWkwAA1pQAANbTAADW1QAA1tgAANbaAADW3QAA1t4AANbfAADW4AAA1uEAANbjAADW5gAA1ucAANboAADW6gAA1usAANc2AADXWQAA13kAANeZAADXmwAA150AANefAADXoQAA16QAANelAADXpgAA16kAANeqAADXrAAA160AANevAADXsQAA17IAANezAADXtgAA17cAANe8AADXyQAA184AANfQAADX0gAA19cAANfaAADX3QAA198AANgEAADYKAAA2E8AANhzAADYdgAA2HgAANh6AADYfAAA2H4AANiAAADYgQAA2IQAANiRAADYogAA2KQAANimAADYqAAA2KoAANisAADYrgAA2LAAANiyAADYwwAA2MYAANjJAADYzAAA2M8AANjSAADY1QAA2NgAANjbAADY3QAA2RwAANkeAADZIAAA2SIAANklAADZJgAA2ScAANkoAADZKQAA2SsAANktAADZLgAA2S8AANkxAADZMgAA2XEAANlzAADZdQAA2XcAANl6AADZewAA2XwAANl9AADZfgAA2YAAANmCAADZgwAA2YQAANmGAADZhwAA2cYAANnIAADZywAA2c0AANnQAADZ0QAA2dIAANnTAADZ1AAA2dYAANnYAADZ2QAA2doAANncAADZ3QAA2eoAANnrAADZ7AAA2e4AANotAADaLwAA2jEAANozAADaNgAA2jcAANo4AADaOQAA2joAANo8AADaPgAA2j8AANpAAADaQgAA2kMAANqCAADahAAA2oYAANqIAADaiwAA2owAANqNAADajgAA2o8AANqRAADakwAA2pQAANqVAADalwAA2pgAANrXAADa2QAA2tsAANrdAADa4AAA2uEAANriAADa4wAA2uQAANrmAADa6AAA2ukAANrqAADa7AAA2u0AANssAADbLgAA2zAAANsyAADbNQAA2zYAANs3AADbOAAA2zkAANs7AADbPQAA2z4AANs/AADbQQAA20IAANuBAADbgwAA24UAANuHAADbigAA24sAANuMAADbjQAA244AANuQAADbkgAA25MAANuUAADblgAA25cAANu8AADb4AAA3AcAANwrAADcLgAA3DAAANwyAADcNAAA3DYAANw4AADcOQAA3DwAANxJAADcWAAA3FoAANxcAADcXgAA3GAAANxiAADcZAAA3GYAANx1AADceAAA3HsAANx+AADcgQAA3IQAANyHAADcigAA3IwAANzLAADczQAA3M8AANzRAADc1AAA3NUAANzWAADc1wAA3NgAANzaAADc3AAA3N0AANzeAADc4AAA3OEAAN0gAADdIgAA3SQAAN0mAADdKQAA3SoAAN0rAADdLAAA3S0AAN0vAADdMQAA3TIAAN0zAADdNQAA3TYAAN11AADddwAA3XkAAN17AADdfgAA3X8AAN2AAADdgQAA3YIAAN2EAADdhgAA3YcAAN2IAADdigAA3YsAAN3KAADdzAAA3c4AAN3QAADd0wAA3dQAAN3VAADd1gAA3dcAAN3ZAADd2wAA3dwAAN3dAADd3wAA3eAAAN4fAADeIQAA3iMAAN4lAADeKAAA3ikAAN4qAADeKwAA3iwAAN4uAADeMAAA3jEAAN4yAADeNAAA3jUAAN50AADedgAA3ngAAN56AADefQAA3n4AAN5/AADegAAA3oEAAN6DAADehQAA3oYAAN6HAADeiQAA3ooAAN7JAADeywAA3s0AAN7PAADe0gAA3tMAAN7UAADe1QAA3tYAAN7YAADe2gAA3tsAAN7cAADe3gAA3t8AAN8qAADfTQAA320AAN+NAADfjwAA35EAAN+TAADflQAA35gAAN+ZAADfmgAA350AAN+eAADfoAAA36EAAN+jAADfpQAA36YAAN+nAADfqgAA36sAAN+0AADfwQAA38YAAN/IAADfygAA388AAN/SAADf1QAA39cAAN/8AADgIAAA4EcAAOBrAADgbgAA4HAAAOByAADgdAAA4HYAAOB4AADgeQAA4HwAAOCJAADgmgAA4JwAAOCeAADgoAAA4KIAAOCkAADgpgAA4KgAAOCqAADguwAA4L4AAODBAADgxAAA4McAAODKAADgzQAA4NAAAODTAADg1QAA4RQAAOEWAADhGAAA4RoAAOEdAADhHgAA4R8AAOEgAADhIQAA4SMAAOElAADhJgAA4ScAAOEpAADhKgAA4WkAAOFrAADhbQAA4W8AAOFyAADhcwAA4XQAAOF1AADhdgAA4XgAAOF6AADhewAA4XwAAOF+AADhfwAA4b4AAOHAAADhwwAA4cUAAOHIAADhyQAA4coAAOHLAADhzAAA4c4AAOHQAADh0QAA4dIAAOHUAADh1QAA4eIAAOHjAADh5AAA4eYAAOIlAADiJwAA4ikAAOIrAADiLgAA4i8AAOIwAADiMQAA4jIAAOI0AADiNgAA4jcAAOI4AADiOgAA4jsAAOJ6AADifAAA4n4AAOKAAADigwAA4oQAAOKFAADihgAA4ocAAOKJAADiiwAA4owAAOKNAADijwAA4pAAAOLPAADi0QAA4tMAAOLVAADi2AAA4tkAAOLaAADi2wAA4twAAOLeAADi4AAA4uEAAOLiAADi5AAA4uUAAOMkAADjJgAA4ygAAOMqAADjLQAA4y4AAOMvAADjMAAA4zEAAOMzAADjNQAA4zYAAOM3AADjOQAA4zoAAON5AADjewAA430AAON/AADjggAA44MAAOOEAADjhQAA44YAAOOIAADjigAA44sAAOOMAADjjgAA448AAOO0AADj2AAA4/8AAOQjAADkJgAA5CgAAOQqAADkLAAA5C4AAOQwAADkMQAA5DQAAORBAADkUAAA5FIAAORUAADkVgAA5FgAAORaAADkXAAA5F4AAORtAADkcAAA5HMAAOR2AADkeQAA5HwAAOR/AADkggAA5IQAAOTDAADkxQAA5McAAOTJAADkzAAA5M0AAOTOAADkzwAA5NAAAOTSAADk1AAA5NUAAOTWAADk2AAA5NkAAOUYAADlGgAA5RwAAOUeAADlIQAA5SIAAOUjAADlJAAA5SUAAOUnAADlKQAA5SoAAOUrAADlLQAA5S4AAOVtAADlbwAA5XEAAOVzAADldgAA5XcAAOV4AADleQAA5XoAAOV8AADlfgAA5X8AAOWAAADlggAA5YMAAOXCAADlxAAA5cYAAOXIAADlywAA5cwAAOXNAADlzgAA5c8AAOXRAADl0wAA5dQAAOXVAADl1wAA5dgAAOYXAADmGQAA5hsAAOYdAADmIAAA5iEAAOYiAADmIwAA5iQAAOYmAADmKAAA5ikAAOYqAADmLAAA5i0AAOZsAADmbgAA5nAAAOZyAADmdQAA5nYAAOZ3AADmeAAA5nkAAOZ7AADmfQAA5n4AAOZ/AADmgQAA5oIAAObBAADmwwAA5sUAAObHAADmygAA5ssAAObMAADmzQAA5s4AAObQAADm0gAA5tMAAObUAADm1gAA5tcAAOciAADnRQAA52UAAOeFAADnhwAA54kAAOeLAADnjQAA55AAAOeRAADnkgAA55UAAOeWAADnmAAA55kAAOebAADnngAA558AAOegAADnowAA56QAAOepAADntgAA57sAAOe9AADnvwAA58QAAOfHAADnygAA58wAAOfxAADoFQAA6DwAAOhgAADoYwAA6GUAAOhnAADoaQAA6GsAAOhtAADobgAA6HEAAOh+AADojwAA6JEAAOiTAADolQAA6JcAAOiZAADomwAA6J0AAOifAADosAAA6LMAAOi2AADouQAA6LwAAOi/AADowgAA6MUAAOjIAADoygAA6QkAAOkLAADpDQAA6Q8AAOkSAADpEwAA6RQAAOkVAADpFgAA6RgAAOkaAADpGwAA6RwAAOkeAADpHwAA6V4AAOlgAADpYgAA6WQAAOlnAADpaAAA6WkAAOlqAADpawAA6W0AAOlvAADpcAAA6XEAAOlzAADpdAAA6bMAAOm1AADpuAAA6boAAOm9AADpvgAA6b8AAOnAAADpwQAA6cMAAOnFAADpxgAA6ccAAOnJAADpygAA6dcAAOnYAADp2QAA6dsAAOoaAADqHAAA6h4AAOogAADqIwAA6iQAAOolAADqJgAA6icAAOopAADqKwAA6iwAAOotAADqLwAA6jAAAOpvAADqcQAA6nMAAOp1AADqeAAA6nkAAOp6AADqewAA6nwAAOp+AADqgAAA6oEAAOqCAADqhAAA6oUAAOrEAADqxgAA6sgAAOrKAADqzQAA6s4AAOrPAADq0AAA6tEAAOrTAADq1QAA6tYAAOrXAADq2QAA6toAAOsZAADrGwAA6x0AAOsfAADrIgAA6yMAAOskAADrJQAA6yYAAOsoAADrKgAA6ysAAOssAADrLgAA6y8AAOtuAADrcAAA63IAAOt0AADrdwAA63gAAOt5AADregAA63sAAOt9AADrfwAA64AAAOuBAADrgwAA64QAAOupAADrzQAA6/QAAOwYAADsGwAA7B0AAOwfAADsIQAA7CMAAOwlAADsJgAA7CkAAOw2AADsRQAA7EcAAOxJAADsSwAA7E0AAOxPAADsUQAA7FMAAOxiAADsZQAA7GgAAOxrAADsbgAA7HEAAOx0AADsdwAA7HkAAOy4AADsugAA7LwAAOy+AADswQAA7MIAAOzDAADsxAAA7MUAAOzHAADsyQAA7MoAAOzLAADszQAA7M4AAO0NAADtDwAA7REAAO0TAADtFgAA7RcAAO0YAADtGQAA7RoAAO0cAADtHgAA7R8AAO0gAADtIgAA7SMAAO1iAADtZAAA7WYAAO1oAADtawAA7WwAAO1tAADtbgAA7W8AAO1xAADtcwAA7XQAAO11AADtdwAA7XgAAO23AADtuQAA7bsAAO29AADtwAAA7cEAAO3CAADtwwAA7cQAAO3GAADtyAAA7ckAAO3KAADtzAAA7c0AAO4MAADuDgAA7hAAAO4SAADuFQAA7hYAAO4XAADuGAAA7hkAAO4bAADuHQAA7h4AAO4fAADuIQAA7iIAAO5hAADuYwAA7mUAAO5nAADuagAA7msAAO5sAADubQAA7m4AAO5wAADucgAA7nMAAO50AADudgAA7ncAAO62AADuuAAA7roAAO68AADuvwAA7sAAAO7BAADuwgAA7sMAAO7FAADuxwAA7sgAAO7JAADuywAA7swAAO8XAADvOgAA71oAAO96AADvfAAA734AAO+AAADvggAA74UAAO+GAADvhwAA74oAAO+LAADvjQAA744AAO+QAADvkwAA75QAAO+VAADvmAAA75kAAO+eAADvqwAA77AAAO+yAADvtAAA77kAAO+8AADvvwAA78EAAO/mAADwCgAA8DEAAPBVAADwWAAA8FoAAPBcAADwXgAA8GAAAPBiAADwYwAA8GYAAPBzAADwhAAA8IYAAPCIAADwigAA8IwAAPCOAADwkAAA8JIAAPCUAADwpQAA8KgAAPCrAADwrgAA8LEAAPC0AADwtwAA8LoAAPC9AADwvwAA8P4AAPEAAADxAgAA8QQAAPEHAADxCAAA8QkAAPEKAADxCwAA8Q0AAPEPAADxEAAA8REAAPETAADxFAAA8VMAAPFVAADxVwAA8VkAAPFcAADxXQAA8V4AAPFfAADxYAAA8WIAAPFkAADxZQAA8WYAAPFoAADxaQAA8agAAPGqAADxrQAA8a8AAPGyAADxswAA8bQAAPG1AADxtgAA8bg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AAQO5AAEDuwABA70AAQO+AAEDvwABA8EAAQPCAAEDywABA8wAAQPOAAEEDQABBA8AAQQRAAEEEwABBBYAAQQXAAEEGAABBBkAAQQaAAEEHAABBB4AAQQfAAEEIAABBCIAAQQjAAEEYgABBGQAAQRnAAEEaQABBGwAAQRtAAEEbgABBG8AAQRwAAEEcgABBHQAAQR1AAEEdgABBHgAAQR5AAEEhgABBIcAAQSIAAEEigABBMkAAQTLAAEEzQABBM8AAQTSAAEE0wABBNQAAQTVAAEE1gABBNgAAQTaAAEE2wABBNwAAQTeAAEE3wABBR4AAQUgAAEFIgABBSQAAQUnAAEFKAABBSkAAQUqAAEFKwABBS0AAQUvAAEFMAABBTEAAQUzAAEFNAABBUEAAQVYAAEFWwABBV0AAQVgAAEFYwABBWYAAQVpAAEFbAABBW8AAQVxAAEFcwABBXYAAQWNAAEFkAABBZMAAQWWAAEFmQABBZwAAQWfAAEFogABBaUAAQWoAAEFqwABBa4AAQWwAAEFvgABBcYAAQXQAAEF2gABBeMAAQXsAAEF/gABBgwAAQZXAAEGegABBpoAAQa6AAEGvAABBr4AAQbAAAEGwgABBsUAAQbGAAEGxwABBsoAAQbLAAEGzQABBs4AAQbQAAEG0wABBtQAAQbVAAEG2AABBtkAAQbeAAEG6wABBvAAAQbyAAEG9AABBvkAAQb8AAEG/wABBwEAAQcmAAEHSgABB3EAAQeVAAEHmAABB5oAAQecAAEHngABB6AAAQeiAAEHowABB6YAAQezAAEHxAABB8YAAQfIAAEHygABB8wAAQfOAAEH0AABB9IAAQfUAAEH5QABB+gAAQfrAAEH7gABB/EAAQf0AAEH9wABB/oAAQf9AAEH/wABCD4AAQhAAAEIQgABCEQAAQhHAAEISAABCEkAAQhKAAEISwABCE0AAQhPAAEIUAABCFEAAQhTAAEIVAABCJMAAQiVAAEIlwABCJkAAQicAAEInQABCJ4AAQifAAEIoAABCKIAAQikAAEIpQABCKYAAQioAAEIqQABCOgAAQjqAAEI7QABCO8AAQjyAAEI8wABCPQAAQj1AAEI9gABCPgAAQj6AAEI+wABCPwAAQj+AAEI/wABCQwAAQkNAAEJDgABCRAAAQlPAAEJUQABCVMAAQlVAAEJWAABCVkAAQlaAAEJWwABCVwAAQleAAEJYAABCWEAAQliAAEJZAABCWUAAQmkAAEJpgABCagAAQmqAAEJrQABCa4AAQmvAAEJsAABCbEAAQmzAAEJtQABCbYAAQm3AAEJuQABCboAAQn5AAEJ+wABCf0AAQn/AAEKAgABCgMAAQoEAAEKBQABCgYAAQoIAAEKCgABCgsAAQoMAAEKDgABCg8AAQpOAAEKUAABClIAAQpUAAEKVwABClgAAQpZAAEKWgABClsAAQpdAAEKXwABCmAAAQphAAEKYwABCmQAAQqjAAEKpQABCqcAAQqpAAEKrAABCq0AAQquAAEKrwABCrAAAQqyAAEKtAABCrUAAQq2AAEKuAABCrkAAQreAAELAgABCykAAQtNAAELUAABC1IAAQtUAAELVgABC1gAAQtaAAELWwABC14AAQtrAAELegABC3wAAQt+AAELgAABC4IAAQuEAAELhgABC4gAAQuXAAELmgABC50AAQugAAELowABC6YAAQupAAELrAABC64AAQvtAAEL7wABC/EAAQvzAAEL9gABC/cAAQv4AAEL+QABC/oAAQv8AAEL/gABC/8AAQwAAAEMAgABDAMAAQxCAAEMRAABDEYAAQxIAAEMSwABDEwAAQxNAAEMTgABDE8AAQxRAAEMUwABDFQAAQxVAAEMVwABDFgAAQyXAAEMmQABDJsAAQydAAEMoAABDKEAAQyiAAEMowABDKQAAQymAAEMqAABDKkAAQyqAAEMrAABDK0AAQzsAAEM7gABDPAAAQzyAAEM9QABDPYAAQz3AAEM+AABDPkAAQz7AAEM/QABDP4AAQz/AAENAQABDQIAAQ1BAAENQwABDUUAAQ1HAAENSgABDUsAAQ1MAAENTQABDU4AAQ1QAAENUgABDVMAAQ1UAAENVgABDVcAAQ2WAAENmAABDZoAAQ2cAAENnwABDaAAAQ2hAAENogABDaMAAQ2lAAENpwABDagAAQ2pAAENqwABDawAAQ3rAAEN7QABDe8AAQ3xAAEN9AABDfUAAQ32AAEN9wABDfgAAQ36AAEN/AABDf0AAQ3+AAEOAAABDgEAAQ5MAAEObwABDo8AAQ6vAAEOsQABDrMAAQ61AAEOtwABDroAAQ67AAEOvAABDr8AAQ7AAAEOwgABDsMAAQ7FAAEOxwABDsgAAQ7JAAEOzAABDs0AAQ7SAAEO3wABDuQAAQ7mAAEO6AABDu0AAQ7wAAEO8wABDvUAAQ8aAAEPPgABD2UAAQ+JAAEPjAABD44AAQ+QAAEPkgABD5QAAQ+WAAEPlwABD5oAAQ+nAAEPuAABD7oAAQ+8AAEPvgABD8AAAQ/CAAEPxAABD8YAAQ/IAAEP2QABD9wAAQ/fAAEP4gABD+UAAQ/oAAEP6wABD+4AAQ/xAAEP8wABEDIAARA0AAEQNgABEDgAARA7AAEQPAABED0AARA+AAEQPwABEEEAARBDAAEQRAABEEUAARBHAAEQSAABEIcAARCJAAEQiwABEI0AARCQAAEQkQABEJIAARCTAAEQlAABEJYAARCYAAEQmQABEJoAARCcAAEQnQABENwAARDeAAEQ4QABEOMAARDmAAEQ5wABEOgAARDpAAEQ6gABEOwAARDuAAEQ7wABEPAAARDyAAEQ8wABEQAAAREBAAERAgABEQQAARFDAAERRQABEUcAARFJAAERTAABEU0AARFOAAERTwABEVAAARFSAAERVAABEVUAARFWAAERWAABEVkAARGYAAERmgABEZwAARGeAAERoQABEaIAARGjAAERpAABEaUAARGnAAERqQABEaoAARGrAAERrQABEa4AARHtAAER7wABEfEAARHzAAER9gABEfcAARH4AAER+QABEfoAARH8AAER/gABEf8AARIAAAESAgABEgMAARJCAAESRAABEkYAARJIAAESSwABEkwAARJNAAESTgABEk8AARJRAAESUwABElQAARJVAAESVwABElgAARKXAAESmQABEpsAARKdAAESoAABEqEAARKiAAESowABEqQAARKmAAESqAABEqkAARKqAAESrAABEq0AARLSAAES9gABEx0AARNBAAETRAABE0YAARNIAAETSgABE0wAARNOAAETTwABE1IAARNfAAETbgABE3AAARNyAAETdAABE3YAARN4AAETegABE3wAAROLAAETjgABE5EAAROUAAETlwABE5oAAROdAAEToAABE6IAARPhAAET4wABE+UAARPnAAET6gABE+sAARPsAAET7QABE+4AARPwAAET8gABE/MAARP0AAET9gABE/cAARQ2AAEUOAABFDoAARQ8AAEUPwABFEAAARRBAAEUQgABFEMAARRFAAEURwABFEgAARRJAAEUSwABFEwAARSLAAEUjQABFI8AARSRAAEUlAABFJUAARSWAAEUlwABFJgAARSaAAEUnAABFJ0AARSeAAEUoAABFKEAARTgAAEU4gABFOQAARTmAAEU6QABFOoAARTrAAEU7AABFO0AARTvAAEU8QABFPIAARTzAAEU9QABFPYAARU1AAEVNwABFTkAARU7AAEVPgABFT8AARVAAAEVQQABFUIAARVEAAEVRgABFUcAARVIAAEVSgABFUsAARWKAAEVjAABFY4AARWQAAEVkwABFZQAARWVAAEVlgABFZcAARWZAAEVmwABFZwAARWdAAEVnwABFaAAARXfAAEV4QABFeMAARXlAAEV6AABFekAARXqAAEV6wABFewAARXuAAEV8AABFfEAARXyAAEV9AABFfUAARZAAAEWYwABFoMAARajAAEWpQABFqcAARapAAEWqwABFq4AARavAAEWsAABFrMAARa0AAEWtgABFrcAARa5AAEWvAABFr0AARa+AAEWwQABFsIAARbHAAEW1AABFtkAARbbAAEW3QABFuIAARblAAEW6AABFuoAARcPAAEXMwABF1oAARd+AAEXgQABF4MAAReFAAEXhwABF4kAAReLAAEXjAABF48AARecAAEXrQABF68AARexAAEXswABF7UAARe3AAEXuQABF7sAARe9AAEXzgABF9EAARfUAAEX1wABF9oAARfdAAEX4AABF+MAARfmAAEX6AABGCcAARgpAAEYKwABGC0AARgwAAEYMQABGDIAARgzAAEYNAABGDYAARg4AAEYOQABGDoAARg8AAEYPQABGHwAARh+AAEYgAABGIIAARiFAAEYhgABGIcAARiIAAEYiQABGIsAARiNAAEYjgABGI8AARiRAAEYkgABGNEAARjTAAEY1gABGNgAARjbAAEY3AABGN0AARjeAAEY3wABGOEAARjjAAEY5AABGOUAARjnAAEY6AABGPUAARj2AAEY9wABGPkAARk4AAEZOgABGTwAARk+AAEZQQABGUIAARlDAAEZRAABGUUAARlHAAEZSQABGUoAARlLAAEZTQABGU4AARmNAAEZjwABGZEAARmTAAEZlgABGZcAARmYAAEZmQABGZoAARmcAAEZngABGZ8AARmgAAEZogABGaMAARniAAEZ5AABGeYAARnoAAEZ6wABGewAARntAAEZ7gABGe8AARnxAAEZ8wABGfQAARn1AAEZ9wABGfgAARo3AAEaOQABGjsAARo9AAEaQAABGkEAARpCAAEaQwABGkQAARpGAAEaSAABGkkAARpKAAEaTAABGk0AARqMAAEajgABGpAAARqSAAEalQABGpYAARqXAAEamAABGpkAARqbAAEanQABGp4AARqfAAEaoQABGqIAARrHAAEa6wABGxIAARs2AAEbOQABGzsAARs9AAEbPwABG0EAARtDAAEbRAABG0cAARtUAAEbYwABG2UAARtnAAEbaQABG2sAARttAAEbbwABG3EAARuAAAEbgwABG4YAARuJAAEbjAABG48AARuSAAEblQABG5cAARvWAAEb2AABG9oAARvcAAEb3wABG+AAARvhAAEb4gABG+MAARvlAAEb5wABG+gAARvpAAEb6wABG+wAARwrAAEcLQABHC8AARwxAAEcNAABHDUAARw2AAEcNwABHDgAARw6AAEcPAABHD0AARw+AAEcQAABHEEAARyAAAEcggABHIQAARyGAAEciQABHIoAARyLAAEcjAABHI0AARyPAAEckQABHJIAARyTAAEclQABHJYAARzVAAEc1wABHNkAARzbAAEc3gABHN8AARzgAAEc4QABHOIAARzkAAEc5gABHOcAARzoAAEc6gABHOsAAR0qAAEdLAABHS4AAR0wAAEdMwABHTQAAR01AAEdNgABHTcAAR05AAEdOwABHTwAAR09AAEdPwABHUAAAR1/AAEdgQABHYMAAR2FAAEdiAABHYkAAR2KAAEdiwABHYwAAR2OAAEdkAABHZEAAR2SAAEdlAABHZUAAR3UAAEd1gABHdgAAR3aAAEd3QABHd4AAR3fAAEd4AABHeEAAR3jAAEd5QABHeYAAR3nAAEd6QABHeoAAR41AAEeWAABHngAAR6YAAEemgABHpwAAR6eAAEeoAABHqMAAR6kAAEepQABHqgAAR6pAAEeqwABHqwAAR6uAAEesQABHrIAAR6zAAEetgABHrcAAR68AAEeyQABHs4AAR7QAAEe0gABHtcAAR7aAAEe3QABHt8AAR8EAAEfKAABH08AAR9zAAEfdgABH3gAAR96AAEffAABH34AAR+AAAEfgQABH4QAAR+RAAEfogABH6QAAR+mAAEfqAABH6oAAR+sAAEfrgABH7AAAR+yAAEfwwABH8YAAR/JAAEfzAABH88AAR/SAAEf1QABH9gAAR/bAAEf3QABIBwAASAeAAEgIAABICIAASAlAAEgJgABICcAASAoAAEgKQABICsAASAtAAEgLgABIC8AASAxAAEgMgABIHEAASBzAAEgdQABIHcAASB6AAEgewABIHwAASB9AAEgfgABIIAAASCCAAEggwABIIQAASCGAAEghwABIMYAASDIAAEgywABIM0AASDQAAEg0QABINIAASDTAAEg1AABINYAASDYAAEg2QABINoAASDcAAEg3QABIOoAASDrAAEg7AABIO4AASEtAAEhLwABITEAASEzAAEhNgABITcAASE4AAEhOQABIToAASE8AAEhPgABIT8AASFAAAEhQgABIUMAASGCAAEhhAABIYYAASGIAAEhiwABIYwAASGNAAEhjgABIY8AASGRAAEhkwABIZQAASGVAAEhlwABIZgAASHXAAEh2QABIdsAASHdAAEh4AABIeEAASHiAAEh4wABIeQAASHmAAEh6AABIekAASHqAAEh7AABIe0AASIsAAEiLgABIjAAASIyAAEiNQABIjYAASI3AAEiOAABIjkAASI7AAEiPQABIj4AASI/AAEiQQABIkIAASKBAAEigwABIoUAASKHAAEiigABIosAASKMAAEijQABIo4AASKQAAEikgABIpMAASKUAAEilgABIpcAASK8AAEi4AABIwcAASMrAAEjLgABIzAAASMyAAEjNAABIzYAASM4AAEjOQABIzwAASNJAAEjWAABI1oAASNcAAEjXgABI2AAASNiAAEjZAABI2YAASN1AAEjeAABI3sAASN+AAEjgQABI4QAASOHAAEjigABI4wAASPLAAEjzQABI88AASPRAAEj1AABI9UAASPWAAEj1wABI9gAASPaAAEj3AABI90AASPeAAEj4AABI+EAASQgAAEkIgABJCQAASQmAAEkKQABJCoAASQrAAEkLAABJC0AASQvAAEkMQABJDIAASQzAAEkNQABJDYAASR1AAEkdwABJHkAASR7AAEkfgABJH8AASSAAAEkgQABJIIAASSEAAEkhgABJIcAASSIAAEkigABJIsAASTKAAEkzAABJM4AASTQAAEk0wABJNQAASTVAAEk1gABJNcAASTZAAEk2wABJNwAASTdAAEk3wABJOAAASUfAAElIQABJSMAASUlAAElKAABJSkAASUqAAElKwABJSwAASUuAAElMAABJTEAASUyAAElNAABJTUAASV0AAEldgABJXgAASV6AAElfQABJX4AASV/AAElgAABJYEAASWDAAElhQABJYYAASWHAAEliQABJYoAASXJAAElywABJc0AASXPAAEl0gABJdMAASXUAAEl1QABJdYAASXYAAEl2gABJdsAASXcAAEl3gABJd8AASYqAAEmTQABJm0AASaNAAEmjwABJpEAASaTAAEmlQABJpgAASaZAAEmmgABJp0AASaeAAEmoAABJqEAASajAAEmpgABJqcAASaoAAEmqwABJqwAASaxAAEmvgABJsMAASbFAAEmxwABJswAASbPAAEm0gABJtQAASb5AAEnHQABJ0QAASdoAAEnawABJ20AASdvAAEncQABJ3MAASd1AAEndgABJ3kAASeGAAEnlwABJ5kAASebAAEnnQABJ58AASehAAEnowABJ6UAASenAAEnuAABJ7sAASe+AAEnwQABJ8QAASfHAAEnygABJ80AASfQAAEn0gABKBEAASgTAAEoFQABKBcAASgaAAEoGwABKBwAASgdAAEoHgABKCAAASgiAAEoIwABKCQAASgmAAEoJwABKGYAAShoAAEoagABKGwAAShvAAEocAABKHEAAShyAAEocwABKHUAASh3AAEoeAABKHkAASh7AAEofAABKLsAASi9AAEowAABKMIAASjFAAEoxgABKMcAASjIAAEoyQABKMsAASjNAAEozgABKM8AASjRAAEo0gABKN8AASjgAAEo4QABKOMAASkiAAEpJAABKSYAASkoAAEpKwABKSwAASktAAEpLgABKS8AASkxAAEpMwABKTQAASk1AAEpNwABKTgAASl3AAEpeQABKXsAASl9AAEpgAABKYEAASmCAAEpgwABKYQAASmGAAEpiAABKYkAASmKAAEpjAABKY0AASnMAAEpzgABKdAAASnSAAEp1QABKdYAASnXAAEp2AABKdkAASnbAAEp3QABKd4AASnfAAEp4QABKeIAASohAAEqIwABKiUAASonAAEqKgABKisAASosAAEqLQABKi4AASowAAEqMgABKjMAASo0AAEqNgABKjcAASp2AAEqeAABKnoAASp8AAEqfwABKoAAASqBAAEqggABKoMAASqFAAEqhwABKogAASqJAAEqiwABKowAASqxAAEq1QABKvwAASsgAAErIwABKyUAASsnAAErKQABKysAASstAAErLgABKzEAASs+AAErTQABK08AAStRAAErUwABK1UAAStXAAErWQABK1sAAStqAAErbQABK3AAAStzAAErdgABK3kAASt8AAErfwABK4EAASvAAAErwgABK8QAASvGAAEryQABK8oAASvLAAErzAABK80AASvPAAEr0QABK9IAASvTAAEr1QABK9YAASwVAAEsFwABLBkAASwbAAEsHgABLB8AASwgAAEsIQABLCIAASwkAAEsJgABLCcAASwoAAEsKgABLCsAASxqAAEsbAABLG4AASxwAAEscwABLHQAASx1AAEsdgABLHcAASx5AAEsewABLHwAASx9AAEsfwABLIAAASy/AAEswQABLMMAASzFAAEsyAABLMkAASzKAAEsywABLMwAASzOAAEs0AABLNEAASzSAAEs1AABLNUAAS0UAAEtFgABLRgAAS0aAAEtHQABLR4AAS0fAAEtIAABLSEAAS0jAAEtJQABLSYAAS0nAAEtKQABLSoAAS1pAAEtawABLW0AAS1vAAEtcgABLXMAAS10AAEtdQABLXYAAS14AAEtegABLXsAAS18AAEtfgABLX8AAS2+AAEtwAABLcIAAS3EAAEtxwABLcgAAS3JAAEtygABLcsAAS3NAAEtzwABLdAAAS3RAAEt0wABLdQAAS4fAAEuQgABLmIAAS6CAAEuhAABLoYAAS6IAAEuigABLo0AAS6OAAEujwABLpIAAS6TAAEulQABLpYAAS6YAAEumwABLpwAAS6dAAEuoAABLqEAAS6mAAEuswABLrgAAS66AAEuvAABLsEAAS7EAAEuxwABLskAAS7uAAEvEgABLzkAAS9dAAEvYAABL2IAAS9kAAEvZgABL2gAAS9qAAEvawABL24AAS97AAEvjAABL44AAS+QAAEvkgABL5QAAS+WAAEvmAABL5oAAS+cAAEvrQABL7AAAS+zAAEvtgABL7kAAS+8AAEvvwABL8IAAS/FAAEvxwABMAYAATAIAAEwCgABMAwAATAPAAEwEAABMBEAATASAAEwEwABMBUAATAXAAEwGAABMBkAATAbAAEwHAABMFsAATBdAAEwXwABMGEAATBkAAEwZQABMGYAATBnAAEwaAABMGoAATBsAAEwbQABMG4AATBwAAEwcQABMLAAATCyAAEwtQABMLcAATC6AAEwuwABMLwAATC9AAEwvgABMMAAATDCAAEwwwABMMQAATDGAAEwxwABMNQAATDVAAEw1gABMNgAATEXAAExGQABMRsAATEdAAExIAABMSEAATEiAAExIwABMSQAATEmAAExKAABMSkAATEqAAExLAABMS0AATFsAAExbgABMXAAATFyAAExdQABMXYAATF3AAExeAABMXkAATF7AAExfQABMX4AATF/AAExgQABMYIAATHBAAExwwABMcUAATHHAAExygABMcsAATHMAAExzQABMc4AATHQAAEx0gABMdMAATHUAAEx1gABMdcAATIWAAEyGAABMhoAATIcAAEyHwABMiAAATIhAAEyIgABMiMAATIlAAEyJwABMigAATIpAAEyKwABMiwAATJrAAEybQABMm8AATJxAAEydAABMnUAATJ2AAEydwABMngAATJ6AAEyfAABMn0AATJ+AAEygAABMoEAATKmAAEyygABMvEAATMVAAEzGAABMxoAATMcAAEzHgABMyAAATMiAAEzIwABMyYAATMzAAEzQgABM0QAATNGAAEzSAABM0oAATNMAAEzTgABM1AAATNfAAEzYgABM2UAATNoAAEzawABM24AATNxAAEzdAABM3YAATO1AAEztwABM7kAATO7AAEzvgABM78AATPAAAEzwQABM8IAATPEAAEzxgABM8cAATPIAAEzygABM8sAATQKAAE0DAABNA4AATQQAAE0EwABNBQAATQVAAE0FgABNBcAATQZAAE0GwABNBwAATQdAAE0HwABNCAAATRfAAE0YQABNGMAATRlAAE0aAABNGkAATRqAAE0awABNGwAATRuAAE0cAABNHEAATRyAAE0dAABNHUAATS0AAE0tgABNLgAATS6AAE0vQABNL4AATS/AAE0wAABNMEAATTDAAE0xQABNMYAATTHAAE0yQABNMoAATUJAAE1CwABNQ0AATUPAAE1EgABNRMAATUUAAE1FQABNRYAATUYAAE1GgABNRsAATUcAAE1HgABNR8AATVeAAE1YAABNWIAATVkAAE1ZwABNWgAATVpAAE1agABNWsAATVtAAE1bwABNXAAATVxAAE1cwABNXQAATWzAAE1tQABNbcAATW5AAE1vAABNb0AATW+AAE1vwABNcAAATXCAAE1xAABNcUAATXGAAE1yAABNckAATYUAAE2NwABNlcAATZ3AAE2eQABNnsAATZ9AAE2fwABNoIAATaDAAE2hAABNocAATaIAAE2igABNosAATaNAAE2kAABNpEAATaSAAE2lQABNpYAATabAAE2qAABNq0AATavAAE2sQABNrYAATa5AAE2vAABNr4AATbjAAE3BwABNy4AATdSAAE3VQABN1cAATdZAAE3WwABN10AATdfAAE3YAABN2MAATdwAAE3gQABN4MAATeFAAE3hwABN4kAATeLAAE3jQABN48AATeRAAE3ogABN6UAATeoAAE3qwABN64AATexAAE3tAABN7cAATe6AAE3vAABN/sAATf9AAE3/wABOAEAATgEAAE4BQABOAYAATgHAAE4CAABOAoAATgMAAE4DQABOA4AATgQAAE4EQABOFAAAThSAAE4VAABOFYAAThZAAE4WgABOFsAAThcAAE4XQABOF8AAThhAAE4YgABOGMAAThlAAE4ZgABOKUAATinAAE4qgABOKwAATivAAE4sAABOLEAATiyAAE4swABOLUAATi3AAE4uAABOLkAATi7AAE4vAABOMkAATjKAAE4ywABOM0AATkMAAE5DgABORAAATkSAAE5FQABORYAATkXAAE5GAABORkAATkbAAE5HQABOR4AATkfAAE5IQABOSIAATlhAAE5YwABOWUAATlnAAE5agABOWsAATlsAAE5bQABOW4AATlwAAE5cgABOXMAATl0AAE5dgABOXcAATm2AAE5uAABOboAATm8AAE5vwABOcAAATnBAAE5wgABOcMAATnFAAE5xwABOcgAATnJAAE5ywABOcwAAToLAAE6DQABOg8AAToRAAE6FAABOhUAAToWAAE6FwABOhgAAToaAAE6HAABOh0AAToeAAE6IAABOiEAATpgAAE6YgABOmQAATpmAAE6aQABOmoAATprAAE6bAABOm0AATpvAAE6cQABOnIAATpzAAE6dQABOnYAATqbAAE6vwABOuYAATsKAAE7DQABOw8AATsRAAE7EwABOxUAATsXAAE7GAABOxsAATsoAAE7NwABOzkAATs7AAE7PQABOz8AATtBAAE7QwABO0UAATtUAAE7VwABO1oAATtdAAE7YAABO2MAATtmAAE7aQABO2sAATuqAAE7rAABO64AATuwAAE7swABO7QAATu1AAE7tgABO7cAATu5AAE7uwABO7wAATu9AAE7vwABO8AAATv/AAE8AQABPAMAATwFAAE8CAABPAkAATwKAAE8CwABPAwAATwOAAE8EAABPBEAATwSAAE8FAABPBUAATxUAAE8VgABPFgAATxaAAE8XQABPF4AATxfAAE8YAABPGEAATxjAAE8ZQABPGYAATxnAAE8aQABPGoAATypAAE8qwABPK0AATyvAAE8sgABPLMAATy0AAE8tQABPLYAATy4AAE8ugABPLsAATy8AAE8vgABPL8AATz+AAE9AAABPQIAAT0EAAE9BwABPQgAAT0JAAE9CgABPQsAAT0NAAE9DwABPRAAAT0RAAE9EwABPRQAAT1TAAE9VQABPVcAAT1ZAAE9XAABPV0AAT1eAAE9XwABPWAAAT1iAAE9ZAABPWUAAT1mAAE9aAABPWkAAT2oAAE9qgABPawAAT2uAAE9sQABPbIAAT2zAAE9tAABPbUAAT23AAE9uQABPboAAT27AAE9vQABPb4AAT4JAAE+LAABPkwAAT5sAAE+bgABPnAAAT5yAAE+dAABPncAAT54AAE+eQABPnwAAT59AAE+fwABPoAAAT6CAAE+hQABPoYAAT6HAAE+igABPosAAT6QAAE+nQABPqIAAT6kAAE+pgABPqsAAT6uAAE+sQABPrMAAT7YAAE+/AABPyMAAT9HAAE/SgABP0wAAT9OAAE/UAABP1IAAT9UAAE/VQABP1gAAT9lAAE/dgABP3gAAT96AAE/fAABP34AAT+AAAE/ggABP4QAAT+GAAE/lwABP5oAAT+dAAE/oAABP6MAAT+mAAE/qQABP6wAAT+vAAE/sQABP/AAAT/yAAE/9AABP/YAAT/5AAE/+gABP/sAAT/8AAE//QABP/8AAUABAAFAAgABQAMAAUAFAAFABgABQEUAAUBHAAFASQABQEsAAUBOAAFATwABQFAAAUBRAAFAUgABQFQAAUBWAAFAVwABQFgAAUBaAAFAWwABQJoAAUCcAAFAnwABQKEAAUCkAAFApQABQKYAAUCnAAFAqAABQKoAAUCsAAFArQABQK4AAUCwAAFAsQABQL4AAUC/AAFAwAABQMIAAUEBAAFBAwABQQUAAUEHAAFBCgABQQsAAUEMAAFBDQABQQ4AAUEQAAFBEgABQRMAAUEUAAFBFgABQRcAAUFWAAFBWAABQVoAAUFcAAFBXwABQWAAAUFhAAFBYgABQWMAAUFlAAFBZwABQWgAAUFpAAFBawABQWwAAUGrAAFBrQABQa8AAUGxAAFBtAABQbUAAUG2AAFBtwABQbgAAUG6AAFBvAABQb0AAUG+AAFBwAABQcEAAUIAAAFCAgABQgQAAUIGAAFCCQABQgoAAUILAAFCDAABQg0AAUIPAAFCEQABQhIAAUITAAFCFQABQhYAAUJVAAFCVwABQlkAAUJbAAFCXgABQl8AAUJgAAFCYQABQmIAAUJkAAFCZgABQmcAAUJoAAFCagABQmsAAUKQAAFCtAABQtsAAUL/AAFDAgABQwQAAUMGAAFDCAABQwoAAUMMAAFDDQABQxAAAUMdAAFDLAABQy4AAUMwAAFDMgABQzQAAUM2AAFDOAABQzoAAUNJAAFDTAABQ08AAUNSAAFDVQABQ1gAAUNbAAFDXgABQ2AAAUOfAAFDoQABQ6MAAUOlAAFDqAABQ6kAAUOqAAFDqwABQ6wAAUOuAAFDsAABQ7EAAUOyAAFDtAABQ7UAAUP0AAFD9gABQ/gAAUP6AAFD/QABQ/4AAUP/AAFEAAABRAEAAUQDAAFEBQABRAYAAUQHAAFECQABRAoAAURJAAFESwABRE0AAURPAAFEUgABRFMAAURUAAFEVQABRFYAAURYAAFEWgABRFsAAURcAAFEXgABRF8AAUSeAAFEoAABRKIAAUSkAAFEpwABRKgAAUSpAAFEqgABRKsAAUStAAFErwABRLAAAUSxAAFEswABRLQAAUTzAAFE9QABRPcAAUT5AAFE/AABRP0AAUT+AAFE/wABRQAAAUUCAAFFBAABRQUAAUUGAAFFCAABRQkAAUVIAAFFSgABRUwAAUVOAAFFUQABRVIAAUVTAAFFVAABRVUAAUVXAAFFWQABRVoAAUVbAAFFXQABRV4AAUWdAAFFnwABRaEAAUWjAAFFpgABRacAAUWoAAFFqQABRaoAAUWsAAFFrgABRa8AAUWwAAFFsgABRbMAAUX+AAFGIQABRkEAAUZhAAFGYwABRmUAAUZnAAFGaQABRmwAAUZtAAFGbgABRnEAAUZyAAFGdAABRnUAAUZ3AAFGeQABRnoAAUZ7AAFGfgABRn8AAUaEAAFGkQABRpYAAUaYAAFGmgABRp8AAUaiAAFGpQABRqcAAUbMAAFG8AABRxcAAUc7AAFHPgABR0AAAUdCAAFHRAABR0YAAUdIAAFHSQABR0wAAUdZAAFHagABR2wAAUduAAFHcAABR3IAAUd0AAFHdgABR3gAAUd6AAFHiwABR44AAUeRAAFHlAABR5cAAUeaAAFHnQABR6AAAUejAAFHpQABR+QAAUfmAAFH6AABR+oAAUftAAFH7gABR+8AAUfwAAFH8QABR/MAAUf1AAFH9gABR/cAAUf5AAFH+gABSDkAAUg7AAFIPQABSD8AAUhCAAFIQwABSEQAAUhFAAFIRgABSEgAAUhKAAFISwABSEwAAUhOAAFITwABSI4AAUiQAAFIkwABSJUAAUiYAAFImQABSJoAAUibAAFInAABSJ4AAUigAAFIoQABSKIAAUikAAFIpQABSLIAAUizAAFItAABSLYAAUj1AAFI9wABSPkAAUj7AAFI/gABSP8AAUkAAAFJAQABSQIAAUkEAAFJBgABSQcAAUkIAAFJCgABSQsAAUlKAAFJTAABSU4AAUlQAAFJUwABSVQAAUlVAAFJVgABSVcAAUlZAAFJWwABSVwAAUldAAFJXwABSWAAAUmfAAFJoQABSaMAAUmlAAFJqAABSakAAUmqAAFJqwABSawAAUmuAAFJsAABSbEAAUmyAAFJtAABSbUAAUn0AAFJ9gABSfgAAUn6AAFJ/QABSf4AAUn/AAFKAAABSgEAAUoDAAFKBQABSgYAAUoHAAFKCQABSgoAAUpJAAFKSwABSk0AAUpPAAFKUgABSlMAAUpUAAFKVQABSlYAAUpYAAFKWgABSlsAAUpcAAFKXgABSl8AAUqEAAFKqAABSs8AAUrzAAFK9gABSvgAAUr6AAFK/AABSv4AAUsAAAFLAQABSwQAAUsRAAFLIAABSyIAAUskAAFLJgABSygAAUsqAAFLLAABSy4AAUs9AAFLQAABS0MAAUtGAAFLSQABS0wAAUtPAAFLUgABS1QAAUuTAAFLlQABS5cAAUuZAAFLnAABS50AAUueAAFLnwABS6AAAUuiAAFLpAABS6UAAUumAAFLqAABS6kAAUvoAAFL6gABS+wAAUvuAAFL8QABS/IAAUvzAAFL9AABS/UAAUv3AAFL+QABS/oAAUv7AAFL/QABS/4AAUw9AAFMPwABTEEAAUxDAAFMRgABTEcAAUxIAAFMSQABTEoAAUxMAAFMTgABTE8AAUxQAAFMUgABTFMAAUySAAFMlAABTJYAAUyYAAFMmwABTJwAAUydAAFMngABTJ8AAUyhAAFMowABTKQAAUylAAFMpwABTKgAAUznAAFM6QABTOsAAUztAAFM8AABTPEAAUzyAAFM8wABTPQAAUz2AAFM+AABTPkAAUz6AAFM/AABTP0AAU08AAFNPgABTUAAAU1CAAFNRQABTUYAAU1HAAFNSAABTUkAAU1LAAFNTQABTU4AAU1PAAFNUQABTVIAAU2RAAFNkwABTZUAAU2XAAFNmgABTZsAAU2cAAFNnQABTZ4AAU2gAAFNogABTaMAAU2kAAFNpgABTacAAU3yAAFOFQABTjUAAU5VAAFOVwABTlkAAU5bAAFOXQABTmAAAU5hAAFOYgABTmUAAU5mAAFOaAABTmkAAU5rAAFObQABTm4AAU5vAAFOcgABTnMAAU54AAFOhQABTooAAU6MAAFOjgABTpMAAU6WAAFOmQABTpsAAU7AAAFO5AABTwsAAU8vAAFPMgABTzQAAU82AAFPOAABTzoAAU88AAFPPQABT0AAAU9NAAFPXgABT2AAAU9iAAFPZAABT2YAAU9oAAFPagABT2wAAU9uAAFPfwABT4IAAU+FAAFPiAABT4sAAU+OAAFPkQABT5QAAU+XAAFPmQABT9gAAU/aAAFP3AABT94AAU/hAAFP4gABT+MAAU/kAAFP5QABT+cAAU/pAAFP6gABT+sAAU/tAAFP7gABUC0AAVAvAAFQMQABUDMAAVA2AAFQNwABUDgAAVA5AAFQOgABUDwAAVA+AAFQPwABUEAAAVBCAAFQQwABUIIAAVCEAAFQhwABUIkAAVCMAAFQjQABUI4AAVCPAAFQkAABUJIAAVCUAAFQlQABUJYAAVCYAAFQmQABUKYAAVCnAAFQqAABUKoAAVDpAAFQ6wABUO0AAVDvAAFQ8gABUPMAAVD0AAFQ9QABUPYAAVD4AAFQ+gABUPsAAVD8AAFQ/gABUP8AAVE+AAFRQAABUUIAAVFEAAFRRwABUUgAAVFJAAFRSgABUUsAAVFNAAFRTwABUVAAAVFRAAFRUwABUVQAAVGTAAFRlQABUZcAAVGZAAFRnAABUZ0AAVGeAAFRnwABUaAAAVGiAAFRpAABUaUAAVGmAAFRqAABUakAAVHoAAFR6gABUewAAVHuAAFR8QABUfIAAVHzAAFR9AABUfUAAVH3AAFR+QABUfoAAVH7AAFR/QABUf4AAVI9AAFSPwABUkEAAVJDAAFSRgABUkcAAVJIAAFSSQABUkoAAVJMAAFSTgABUk8AAVJQAAFSUgABUlMAAVJ4AAFSnAABUsMAAVLnAAFS6gABUuwAAVLuAAFS8AABUvIAAVL0AAFS9QABUvgAAVMFAAFTFAABUxYAAVMYAAFTGgABUxwAAVMeAAFTIAABUyIAAVMxAAFTNAABUzcAAVM6AAFTPQABU0AAAVNDAAFTRgABU0gAAVOHAAFTiQABU4sAAVONAAFTkAABU5EAAVOSAAFTkwABU5QAAVOWAAFTmAABU5kAAVOaAAFTnAABU50AAVPcAAFT3gABU+AAAVPiAAFT5QABU+YAAVPnAAFT6AABU+kAAVPrAAFT7QABU+4AAVPvAAFT8QABU/IAAVQxAAFUMwABVDUAAVQ3AAFUOgABVDsAAVQ8AAFUPQABVD4AAVRAAAFUQgABVEMAAVREAAFURgABVEcAAVSGAAFUiAABVIoAAVSMAAFUjwABVJAAAVSRAAFUkgABVJMAAVSVAAFUlwABVJgAAVSZAAFUmwABVJwAAVTbAAFU3QABVN8AAVThAAFU5AABVOUAAVTmAAFU5wABVOgAAVTqAAFU7AABVO0AAVTuAAFU8AABVPEAAVUwAAFVMgABVTQAAVU2AAFVOQABVToAAVU7AAFVPAABVT0AAVU/AAFVQQABVUIAAVVDAAFVRQABVUYAAVWFAAFVhwABVYkAAVWLAAFVjgABVY8AAVWQAAFVkQABVZIAAVWUAAFVlgABVZcAAVWYAAFVmgABVZsAAVXmAAFWCQABVikAAVZJAAFWSwABVk0AAVZPAAFWUQABVlQAAVZVAAFWVgABVlkAAVZaAAFWXAABVl0AAVZgAAFWYwABVmQAAVZlAAFWaAABVmkAAVZuAAFWewABVoAAAVaCAAFWhQABVooAAVaNAAFWkAABVpIAAVa3AAFW2wABVwIAAVcmAAFXKQABVysAAVctAAFXLwABVzEAAVczAAFXNAABVzcAAVdEAAFXVQABV1cAAVdZAAFXWwABV10AAVdfAAFXYQABV2MAAVdlAAFXdgABV3kAAVd8AAFXfwABV4IAAVeFAAFXiAABV4sAAVeOAAFXkAABV88AAVfRAAFX0wABV9UAAVfYAAFX2QABV9oAAVfbAAFX3AABV94AAVfgAAFX4QABV+IAAVfkAAFX5QABWCQAAVgmAAFYKAABWCoAAVgtAAFYLgABWC8AAVgwAAFYMQABWDMAAVg1AAFYNgABWDcAAVg5AAFYOgABWHkAAVh7AAFYfgABWIAAAViDAAFYhAABWIUAAViGAAFYhwABWIkAAViLAAFYjAABWI0AAViPAAFYkAABWJ0AAVieAAFYnwABWKEAAVjgAAFY4gABWOQAAVjmAAFY6QABWOoAAVjrAAFY7AABWO0AAVjvAAFY8QABWPIAAVjzAAFY9QABWPYAAVk1AAFZNwABWTkAAVk7AAFZPgABWT8AAVlAAAFZQQABWUIAAVlEAAFZRgABWUcAAVlIAAFZSgABWUsAAVmKAAFZjAABWY4AAVmQAAFZkwABWZQAAVmVAAFZlgABWZcAAVmZAAFZmwABWZwAAVmdAAFZnwABWaAAAVnfAAFZ4QABWeMAAVnlAAFZ6AABWekAAVnqAAFZ6wABWewAAVnuAAFZ8AABWfEAAVnyAAFZ9AABWfUAAVo0AAFaNgABWjgAAVo6AAFaPQABWj4AAVo/AAFaQAABWkEAAVpDAAFaRQABWkYAAVpHAAFaSQABWkoAAVpvAAFakwABWroAAVreAAFa4QABWuQAAVrmAAFa6AABWuoAAVrsAAFa7QABWvAAAVr9AAFbDAABWw8AAVsSAAFbFQABWxgAAVsbAAFbHgABWyEAAVswAAFbMwABWzYAAVs5AAFbPAABWz8AAVtCAAFbRQABW0cAAVuGAAFbiAABW4sAAVuNAAFbkAABW5EAAVuSAAFbkwABW5QAAVuWAAFbmQABW5oAAVubAAFbnQABW54AAVvdAAFb3wABW+IAAVvkAAFb5wABW+gAAVvpAAFb6gABW+sAAVvtAAFb8AABW/EAAVvyAAFb9AABW/UAAVw0AAFcNgABXDkAAVw7AAFcPgABXD8AAVxAAAFcQQABXEIAAVxEAAFcRwABXEgAAVxJAAFcSwABXEwAAVyLAAFcjQABXJAAAVySAAFclQABXJYAAVyXAAFcmAABXJkAAVybAAFcngABXJ8AAVygAAFcogABXKMAAVziAAFc5AABXOYAAVzoAAFc6wABXOwAAVztAAFc7gABXO8AAVzxAAFc9AABXPUAAVz2AAFc+AABXPkAAV04AAFdOgABXTwAAV0+AAFdQQABXUIAAV1DAAFdRAABXUUAAV1HAAFdSgABXUsAAV1MAAFdTgABXU8AAV2OAAFdkAABXZMAAV2VAAFdmAABXZkAAV2aAAFdmwABXZwAAV2eAAFdoQABXaIAAV2jAAFdpQABXaYAAV2vAAFdsAABXbIAAV3xAAFd8wABXfUAAV33AAFd+gABXfsAAV38AAFd/QABXf4AAV4AAAFeAwABXgQAAV4FAAFeBwABXggAAV5HAAFeSQABXksAAV5NAAFeUAABXlEAAV5SAAFeUwABXlQAAV5WAAFeWQABXloAAV5bAAFeXQABXl4AAV6dAAFenwABXqIAAV6kAAFepwABXqgAAV6pAAFeqgABXqsAAV6tAAFesAABXrEAAV6yAAFetAABXrUAAV8AAAFfIwABX0MAAV9jAAFfZQABX2cAAV9pAAFfawABX24AAV9vAAFfcAABX3MAAV90AAFfdgABX3cAAV95AAFfewABX3wAAV99AAFfgAABX4EAAV+GAAFfkwABX5gAAV+aAAFfnAABX6EAAV+kAAFfpwABX6kAAV/OAAFf8gABYBkAAWA9AAFgQAABYEIAAWBEAAFgRgABYEgAAWBKAAFgSwABYE4AAWBbAAFgbAABYG4AAWBwAAFgcgABYHQAAWB2AAFgeAABYHoAAWB8AAFgjQABYJAAAWCTAAFglgABYJkAAWCcAAFgnwABYKIAAWClAAFgpwABYOYAAWDoAAFg6gABYOwAAWDvAAFg8AABYPEAAWDyAAFg8wABYPUAAWD3AAFg+AABYPkAAWD7AAFg/AABYTsAAWE9AAFhPwABYUEAAWFEAAFhRQABYUYAAWFHAAFhSAABYUoAAWFMAAFhTQABYU4AAWFQAAFhUQABYZAAAWGSAAFhlQABYZcAAWGaAAFhmwABYZwAAWGdAAFhngABYaAAAWGiAAFhowABYaQAAWGmAAFhpwABYbQAAWG1AAFhtgABYbgAAWH3AAFh+QABYfsAAWH9AAFiAAABYgEAAWICAAFiAwABYgQAAWIGAAFiCAABYgkAAWIKAAFiDAABYg0AAWJMAAFiTgABYlAAAWJSAAFiVQABYlYAAWJXAAFiWAABYlkAAWJbAAFiXQABYl4AAWJfAAFiYQABYmIAAWKhAAFiowABYqUAAWKnAAFiqgABYqsAAWKsAAFirQABYq4AAWKwAAFisgABYrMAAWK0AAFitgABYrcAAWL2AAFi+AABYvoAAWL8AAFi/wABYwAAAWMBAAFjAgABYwMAAWMFAAFjBwABYwgAAWMJAAFjCwABYwwAAWNLAAFjTQABY08AAWNRAAFjVAABY1UAAWNWAAFjVwABY1gAAWNaAAFjXAABY10AAWNeAAFjYAABY2EAAWOGAAFjqgABY9EAAWP1AAFj+AABY/oAAWP8AAFj/gABZAAAAWQCAAFkAwABZAYAAWQTAAFkIgABZCQAAWQmAAFkKAABZCoAAWQsAAFkLgABZDAAAWQ/AAFkQgABZEUAAWRIAAFkSwABZE4AAWRRAAFkVAABZFYAAWSVAAFklwABZJkAAWSbAAFkngABZJ8AAWSgAAFkoQABZKIAAWSkAAFkpgABZKcAAWSoAAFkqgABZKsAAWTqAAFk7AABZO4AAWTwAAFk8wABZPQAAWT1AAFk9gABZPcAAWT5AAFk+wABZPwAAWT9AAFk/wABZQAAAWU/AAFlQQABZUMAAWVFAAFlSAABZUkAAWVKAAFlSwABZUwAAWVOAAFlUAABZVEAAWVSAAFlVAABZVUAAWWUAAFllgABZZgAAWWaAAFlnQABZZ4AAWWfAAFloAABZaEAAWWjAAFlpQABZaYAAWWnAAFlqQABZaoAAWXpAAFl6wABZe0AAWXvAAFl8gABZfMAAWX0AAFl9QABZfYAAWX4AAFl+gABZfsAAWX8AAFl/gABZf8AAWY+AAFmQAABZkIAAWZEAAFmRwABZkgAAWZJAAFmSgABZksAAWZNAAFmTwABZlAAAWZRAAFmUwABZlQAAWaTAAFmlQABZpcAAWaZAAFmnAABZp0AAWaeAAFmnwABZqAAAWaiAAFmpAABZqUAAWamAAFmqAABZqkAAWb0AAFnFwABZzcAAWdXAAFnWQABZ1sAAWddAAFnXwABZ2IAAWdjAAFnZAABZ2cAAWdoAAFnagABZ2sAAWdtAAFncAABZ3EAAWdyAAFndQABZ3YAAWd/AAFnjAABZ5EAAWeTAAFnlQABZ5oAAWedAAFnoAABZ6IAAWfHAAFn6wABaBIAAWg2AAFoOQABaDsAAWg9AAFoPwABaEEAAWhDAAFoRAABaEcAAWhUAAFoZQABaGcAAWhpAAFoawABaG0AAWhvAAFocQABaHMAAWh1AAFohgABaIkAAWiMAAFojwABaJIAAWiVAAFomAABaJsAAWieAAFooAABaN8AAWjhAAFo4wABaOUAAWjoAAFo6QABaOoAAWjrAAFo7AABaO4AAWjwAAFo8QABaPIAAWj0AAFo9QABaTQAAWk2AAFpOAABaToAAWk9AAFpPgABaT8AAWlAAAFpQQABaUMAAWlFAAFpRgABaUcAAWlJAAFpSgABaYkAAWmLAAFpjgABaZAAAWmTAAFplAABaZUAAWmWAAFplwABaZkAAWmbAAFpnAABaZ0AAWmfAAFpoAABaa0AAWmuAAFprwABabEAAWnwAAFp8gABafQAAWn2AAFp+QABafoAAWn7AAFp/AABaf0AAWn/AAFqAQABagIAAWoDAAFqBQABagYAAWpFAAFqRwABakkAAWpLAAFqTgABak8AAWpQAAFqUQABalIAAWpUAAFqVgABalcAAWpYAAFqWgABalsAAWqaAAFqnAABap4AAWqgAAFqowABaqQAAWqlAAFqpgABaqcAAWqpAAFqqwABaqwAAWqtAAFqrwABarAAAWrvAAFq8QABavMAAWr1AAFq+AABavkAAWr6AAFq+wABavwAAWr+AAFrAAABawEAAWsCAAFrBAABawUAAWtEAAFrRgABa0gAAWtKAAFrTQABa04AAWtPAAFrUAABa1EAAWtTAAFrVQABa1YAAWtXAAFrWQABa1oAAWt/AAFrowABa8oAAWvuAAFr8QABa/MAAWv1AAFr9wABa/kAAWv7AAFr/AABa/8AAWwMAAFsGwABbB0AAWwfAAFsIQABbCMAAWwlAAFsJwABbCkAAWw4AAFsOwABbD4AAWxBAAFsRAABbEcAAWxKAAFsTQABbE8AAWyOAAFskAABbJIAAWyUAAFslwABbJgAAWyZAAFsmgABbJsAAWydAAFsnwABbKAAAWyhAAFsowABbKQAAWzjAAFs5QABbOcAAWzpAAFs7AABbO0AAWzuAAFs7wABbPAAAWzyAAFs9AABbPUAAWz2AAFs+AABbPkAAW04AAFtOgABbTwAAW0+AAFtQQABbUIAAW1DAAFtRAABbUUAAW1HAAFtSQABbUoAAW1LAAFtTQABbU4AAW2NAAFtjwABbZEAAW2TAAFtlgABbZcAAW2YAAFtmQABbZoAAW2cAAFtngABbZ8AAW2gAAFtogABbaMAAW3iAAFt5AABbeYAAW3oAAFt6wABbewAAW3tAAFt7gABbe8AAW3xAAFt8wABbfQAAW31AAFt9wABbfgAAW43AAFuOQABbjsAAW49AAFuQAABbkEAAW5CAAFuQwABbkQAAW5GAAFuSAABbkkAAW5KAAFuTAABbk0AAW6MAAFujgABbpAAAW6SAAFulQABbpYAAW6XAAFumAABbpkAAW6bAAFunQABbp4AAW6fAAFuoQABbqIAAW7tAAFvEAABbzAAAW9QAAFvUgABb1QAAW9WAAFvWAABb1sAAW9cAAFvXQABb2AAAW9hAAFvYwABb2QAAW9mAAFvaQABb2oAAW9rAAFvbgABb28AAW94AAFvhQABb4oAAW+MAAFvjgABb5MAAW+WAAFvmQABb5sAAW/AAAFv5AABcAsAAXAvAAFwMgABcDQAAXA2AAFwOAABcDoAAXA8AAFwPQABcEAAAXBNAAFwXgABcGAAAXBiAAFwZAABcGYAAXBoAAFwagABcGwAAXBuAAFwfwABcIIAAXCFAAFwiAABcIsAAXCOAAFwkQABcJQAAXCXAAFwmQABcNgAAXDaAAFw3AABcN4AAXDhAAFw4gABcOMAAXDkAAFw5QABcOcAAXDpAAFw6gABcOsAAXDtAAFw7gABcS0AAXEvAAFxMQABcTMAAXE2AAFxNwABcTgAAXE5AAFxOgABcTwAAXE+AAFxPwABcUAAAXFCAAFxQwABcYIAAXGEAAFxhwABcYkAAXGMAAFxjQABcY4AAXGPAAFxkAABcZIAAXGUAAFxlQABcZYAAXGYAAFxmQABcaYAAXGnAAFxqAABcaoAAXHpAAFx6wABce0AAXHvAAFx8gABcfMAAXH0AAFx9QABcfYAAXH4AAFx+gABcfsAAXH8AAFx/gABcf8AAXI+AAFyQAABckIAAXJEAAFyRwABckgAAXJJAAFySgABcksAAXJNAAFyTwABclAAAXJRAAFyUwABclQAAXKTAAFylQABcpcAAXKZAAFynAABcp0AAXKeAAFynwABcqAAAXKiAAFypAABcqUAAXKmAAFyqAABcqkAAXLoAAFy6gABcuwAAXLuAAFy8QABcvIAAXLzAAFy9AABcvUAAXL3AAFy+QABcvoAAXL7AAFy/QABcv4AAXM9AAFzPwABc0EAAXNDAAFzRgABc0cAAXNIAAFzSQABc0oAAXNMAAFzTgABc08AAXNQAAFzUgABc1MAAXN4AAFznAABc8MAAXPnAAFz6gABc+wAAXPuAAFz8AABc/IAAXP0AAFz9QABc/gAAXQFAAF0FAABdBYAAXQYAAF0GgABdBwAAXQeAAF0IAABdCIAAXQxAAF0NAABdDcAAXQ6AAF0PQABdEAAAXRDAAF0RgABdEgAAXSHAAF0iQABdIsAAXSNAAF0kAABdJEAAXSSAAF0kwABdJQAAXSWAAF0mAABdJkAAXSaAAF0nAABdJ0AAXTcAAF03gABdOAAAXTiAAF05QABdOYAAXTnAAF06AABdOkAAXTrAAF07QABdO4AAXTvAAF08QABdPIAAXUxAAF1MwABdTUAAXU3AAF1OgABdTsAAXU8AAF1PQABdT4AAXVAAAF1QgABdUMAAXVEAAF1RgABdUcAAXWGAAF1iAABdYoAAXWMAAF1jwABdZAAAXWRAAF1kgABdZMAAXWVAAF1lwABdZgAAXWZAAF1mwABdZwAAXXbAAF13QABdd8AAXXhAAF15AABdeUAAXXmAAF15wABdegAAXXqAAF17AABde0AAXXuAAF18AABdfEAAXYwAAF2MgABdjQAAXY2AAF2OQABdjoAAXY7AAF2PAABdj0AAXY/AAF2QQABdkIAAXZDAAF2RQABdkYAAXaFAAF2hwABdokAAXaLAAF2jgABdo8AAXaQAAF2kQABdpIAAXaUAAF2lgABdpcAAXaYAAF2mgABdpsAAXbmAAF3CQABdykAAXdJAAF3SwABd00AAXdPAAF3UQABd1QAAXdVAAF3VgABd1kAAXdaAAF3XAABd10AAXdfAAF3YQABd2IAAXdjAAF3ZgABd2cAAXdsAAF3eQABd34AAXeAAAF3ggABd4cAAXeKAAF3jQABd48AAXe0AAF32AABd/8AAXgjAAF4JgABeCgAAXgqAAF4LAABeC4AAXgwAAF4MQABeDQAAXhBAAF4UgABeFQAAXhWAAF4WAABeFoAAXhcAAF4XgABeGAAAXhiAAF4cwABeHYAAXh5AAF4fAABeH8AAXiCAAF4hQABeIgAAXiLAAF4jQABeMwAAXjOAAF40AABeNIAAXjVAAF41gABeNcAAXjYAAF42QABeNsAAXjdAAF43gABeN8AAXjhAAF44gABeSEAAXkjAAF5JQABeScAAXkqAAF5KwABeSwAAXktAAF5LgABeTAAAXkyAAF5MwABeTQAAXk2AAF5NwABeXYAAXl4AAF5ewABeX0AAXmAAAF5gQABeYIAAXmDAAF5hAABeYYAAXmIAAF5iQABeYoAAXmMAAF5jQABeZoAAXmbAAF5nAABeZ4AAXndAAF53wABeeEAAXnjAAF55gABeecAAXnoAAF56QABeeoAAXnsAAF57gABee8AAXnwAAF58gABefMAAXoyAAF6NAABejYAAXo4AAF6OwABejwAAXo9AAF6PgABej8AAXpBAAF6QwABekQAAXpFAAF6RwABekgAAXqHAAF6iQABeosAAXqNAAF6kAABepEAAXqSAAF6kwABepQAAXqWAAF6mAABepkAAXqaAAF6nAABep0AAXrcAAF63gABeuAAAXriAAF65QABeuYAAXrnAAF66AABeukAAXrrAAF67QABeu4AAXrvAAF68QABevIAAXsxAAF7MwABezUAAXs3AAF7OgABezsAAXs8AAF7PQABez4AAXtAAAF7QgABe0MAAXtEAAF7RgABe0cAAXtsAAF7kAABe7cAAXvbAAF73gABe+AAAXviAAF75AABe+YAAXvoAAF76QABe+wAAXv5AAF8CAABfAoAAXwMAAF8DgABfBAAAXwSAAF8FAABfBYAAXwlAAF8KAABfCsAAXwuAAF8MQABfDQAAXw3AAF8OgABfDwAAXx7AAF8fQABfH8AAXyBAAF8hAABfIUAAXyGAAF8hwABfIgAAXyKAAF8jAABfI0AAXyOAAF8kAABfJEAAXzQAAF80gABfNQAAXzWAAF82QABfNoAAXzbAAF83AABfN0AAXzfAAF84QABfOIAAXzjAAF85QABfOYAAX0lAAF9JwABfSkAAX0rAAF9LgABfS8AAX0wAAF9MQABfTIAAX00AAF9NgABfTcAAX04AAF9OgABfTsAAX16AAF9fAABfX4AAX2AAAF9gwABfYQAAX2FAAF9hgABfYcAAX2JAAF9iwABfYwAAX2NAAF9jwABfZAAAX3PAAF90QABfdMAAX3VAAF92AABfdkAAX3aAAF92wABfdwAAX3eAAF94AABfeEAAX3iAAF95AABfeUAAX4kAAF+JgABfigAAX4qAAF+LQABfi4AAX4vAAF+MAABfjEAAX4zAAF+NQABfjYAAX43AAF+OQABfjoAAX55AAF+ewABfn0AAX5/AAF+ggABfoMAAX6EAAF+hQABfoYAAX6IAAF+igABfosAAX6MAAF+jgABfo8AAX6YAAF+mQABfpsAAX7aAAF+3AABft4AAX7gAAF+4wABfuQAAX7lAAF+5gABfucAAX7pAAF+7AABfu0AAX7uAAF+8AABfvEAAX8wAAF/MgABfzQAAX82AAF/OQABfzoAAX87AAF/PAABfz0AAX8/AAF/QgABf0MAAX9EAAF/RgABf0cAAX+GAAF/iAABf4sAAX+NAAF/kAABf5EAAX+SAAF/kwABf5QAAX+WAAF/mQABf5oAAX+bAAF/nQABf54AAX/pAAGADAABgCwAAYBMAAGATgABgFAAAYBSAAGAVAABgFYAAYBXAAGAWAABgFsAAYBcAAGAXgABgF8AAYBhAAGAYwABgGQAAYBlAAGAaAABgGkAAYBuAAGAewABgIAAAYCCAAGAhAABgIkAAYCMAAGAjwABgJEAAYC2AAGA2gABgQEAAYElAAGBKAABgSoAAYEsAAGBLgABgTAAAYEyAAGBMwABgTYAAYFDAAGBVAABgVYAAYFYAAGBWgABgVwAAYFeAAGBYAABgWIAAYFkAAGBdQABgXgAAYF7AAGBfgABgYEAAYGEAAGBhwABgYoAAYGNAAGBjwABgc4AAYHQAAGB0gABgdQAAYHXAAGB2AABgdkAAYHaAAGB2wABgd0AAYHfAAGB4AABgeEAAYHjAAGB5AABgiMAAYIlAAGCJwABgikAAYIsAAGCLQABgi4AAYIvAAGCMAABgjIAAYI0AAGCNQABgjYAAYI4AAGCOQABgngAAYJ6AAGCfQABgn8AAYKCAAGCgwABgoQAAYKFAAGChgABgogAAYKKAAGCiwABgowAAYKOAAGCjwABgpwAAYKdAAGCngABgqAAAYLfAAGC4QABguMAAYLlAAGC6AABgukAAYLqAAGC6wABguwAAYLuAAGC8AABgvEAAYLyAAGC9AABgvUAAYM0AAGDNgABgzgAAYM6AAGDPQABgz4AAYM/AAGDQAABg0EAAYNDAAGDRQABg0YAAYNHAAGDSQABg0oAAYOJAAGDiwABg40AAYOPAAGDkgABg5MAAYOUAAGDlQABg5YAAYOYAAGDmgABg5sAAYOcAAGDngABg58AAYPeAAGD4AABg+IAAYPkAAGD5wABg+gAAYPpAAGD6gABg+sAAYPtAAGD7wABg/AAAYPxAAGD8wABg/QAAYQzAAGENQABhDcAAYQ5AAGEPAABhD0AAYQ+AAGEPwABhEAAAYRCAAGERAABhEUAAYRGAAGESAABhEkAAYRuAAGEkgABhLkAAYTdAAGE4AABhOIAAYTkAAGE5gABhOgAAYTqAAGE6wABhO4AAYT7AAGFCgABhQwAAYUOAAGFEAABhRIAAYUUAAGFFgABhRgAAYUnAAGFKgABhS0AAYUwAAGFMwABhTYAAYU5AAGFPAABhT4AAYV9AAGFfwABhYEAAYWDAAGFhgABhYcAAYWIAAGFiQABhYoAAYWMAAGFjgABhY8AAYWQAAGFkgABhZMAAYXSAAGF1AABhdYAAYXYAAGF2wABhdwAAYXdAAGF3gABhd8AAYXhAAGF4wABheQAAYXlAAGF5wABhegAAYYnAAGGKQABhisAAYYtAAGGMAABhjEAAYYyAAGGMwABhjQAAYY2AAGGOAABhjkAAYY6AAGGPAABhj0AAYZ8AAGGfgABhoAAAYaCAAGGhQABhoYAAYaHAAGGiAABhokAAYaLAAGGjQABho4AAYaPAAGGkQABhpIAAYbRAAGG0wABhtUAAYbXAAGG2gABhtsAAYbcAAGG3QABht4AAYbgAAGG4gABhuMAAYbkAAGG5gABhucAAYcmAAGHKAABhyoAAYcsAAGHLwABhzAAAYcxAAGHMgABhzMAAYc1AAGHNwABhzgAAYc5AAGHOwABhzwAAYd7AAGHfQABh38AAYeBAAGHhAABh4UAAYeGAAGHhwABh4gAAYeKAAGHjAABh40AAYeOAAGHkAABh5EAAYfcAAGH/wABiB8AAYg/AAGIQQABiEMAAYhFAAGIRwABiEkAAYhKAAGISwABiE4AAYhPAAGIUQABiFIAAYhUAAGIVgABiFcAAYhYAAGIWwABiFwAAYhhAAGIbgABiHMAAYh1AAGIdwABiHwAAYh/AAGIggABiIQAAYipAAGIzQABiPQAAYkYAAGJGwABiR0AAYkfAAGJIQABiSMAAYklAAGJJgABiSkAAYk2AAGJRwABiUkAAYlLAAGJTQABiU8AAYlRAAGJUwABiVUAAYlXAAGJaAABiWsAAYluAAGJcQABiXQAAYl3AAGJegABiX0AAYmAAAGJggABicEAAYnDAAGJxQABiccAAYnKAAGJywABicwAAYnNAAGJzgABidAAAYnSAAGJ0wABidQAAYnWAAGJ1wABihYAAYoYAAGKGgABihwAAYofAAGKIAABiiEAAYoiAAGKIwABiiUAAYonAAGKKAABiikAAYorAAGKLAABimsAAYptAAGKcAABinIAAYp1AAGKdgABincAAYp4AAGKeQABinsAAYp9AAGKfgABin8AAYqBAAGKggABio8AAYqQAAGKkQABipMAAYrSAAGK1AABitYAAYrYAAGK2wABitwAAYrdAAGK3gABit8AAYrhAAGK4wABiuQAAYrlAAGK5wABiugAAYsnAAGLKQABiysAAYstAAGLMAABizEAAYsyAAGLMwABizQAAYs2AAGLOAABizkAAYs6AAGLPAABiz0AAYt8AAGLfgABi4AAAYuCAAGLhQABi4YAAYuHAAGLiAABi4kAAYuLAAGLjQABi44AAYuPAAGLkQABi5IAAYvRAAGL0wABi9UAAYvXAAGL2gABi9sAAYvcAAGL3QABi94AAYvgAAGL4gABi+MAAYvkAAGL5gABi+cAAYwmAAGMKAABjCoAAYwsAAGMLwABjDAAAYwxAAGMMgABjDMAAYw1AAGMNwABjDgAAYw5AAGMOwABjDwAAYxhAAGMhQABjKwAAYzQAAGM0wABjNUAAYzXAAGM2QABjNsAAYzdAAGM3gABjOEAAYzuAAGM/QABjP8AAY0BAAGNAwABjQUAAY0HAAGNCQABjQsAAY0aAAGNHQABjSAAAY0jAAGNJgABjSkAAY0sAAGNLwABjTEAAY1wAAGNcgABjXQAAY12AAGNeQABjXoAAY17AAGNfAABjX0AAY1/AAGNgQABjYIAAY2DAAGNhQABjYYAAY3FAAGNxwABjckAAY3LAAGNzgABjc8AAY3QAAGN0QABjdIAAY3UAAGN1gABjdcAAY3YAAGN2gABjdsAAY4aAAGOHAABjh4AAY4gAAGOIwABjiQAAY4lAAGOJgABjicAAY4pAAGOKwABjiwAAY4tAAGOLwABjjAAAY5vAAGOcQABjnMAAY51AAGOeAABjnkAAY56AAGOewABjnwAAY5+AAGOgAABjoEAAY6CAAGOhAABjoUAAY7EAAGOxgABjsgAAY7KAAGOzQABjs4AAY7PAAGO0AABjtEAAY7TAAGO1QABjtYAAY7XAAGO2QABjtoAAY8ZAAGPGwABjx0AAY8fAAGPIgABjyMAAY8kAAGPJQABjyYAAY8oAAGPKgABjysAAY8sAAGPLgABjy8AAY9uAAGPcAABj3IAAY90AAGPdwABj3gAAY95AAGPegABj3sAAY99AAGPfwABj4AAAY+BAAGPgwABj4QAAY+NAAGPjgABj5AAAY/TAAGP9wABkBsAAZA+AAGQZQABkIUAAZCsAAGQ0wABkPMAAZEXAAGROwABkT0AAZFAAAGRQgABkUQAAZFGAAGRSQABkUwAAZFOAAGRUAABkVMAAZFVAAGRVwABkVoAAZFdAAGRXgABkWMAAZFwAAGRcwABkXUAAZF4AAGRewABkX0AAZGiAAGRxgABke0AAZIRAAGSFAABkhYAAZIYAAGSGgABkhwAAZIeAAGSHwABkiIAAZIvAAGSQAABkkIAAZJEAAGSRgABkkgAAZJKAAGSTAABkk4AAZJQAAGSYQABkmQAAZJnAAGSagABkm0AAZJwAAGScwABknYAAZJ5AAGSewABkroAAZK8AAGSvwABksEAAZLEAAGSxQABksYAAZLHAAGSyAABksoAAZLMAAGSzQABks4AAZLQAAGS0QABktoAAZLbAAGS3QABkxwAAZMeAAGTIAABkyIAAZMlAAGTJgABkycAAZMoAAGTKQABkysAAZMtAAGTLgABky8AAZMxAAGTMgABk3EAAZNzAAGTdQABk3cAAZN6AAGTewABk3wAAZN9AAGTfgABk4AAAZOCAAGTgwABk4QAAZOGAAGThwABk8YAAZPIAAGTywABk80AAZPQAAGT0QABk9IAAZPTAAGT1AABk9YAAZPYAAGT2QABk9oAAZPcAAGT3QABk+YAAZPnAAGT6QABlCgAAZQqAAGULAABlC4AAZQxAAGUMgABlDMAAZQ0AAGUNQABlDcAAZQ5AAGUOgABlDsAAZQ9AAGUPgABlH0AAZR/AAGUggABlIQAAZSHAAGUiAABlIkAAZSKAAGUiwABlI0AAZSPAAGUkAABlJEAAZSTAAGUlAABlKEAAZSiAAGUowABlKUAAZTkAAGU5gABlOgAAZTqAAGU7QABlO4AAZTvAAGU8AABlPEAAZTzAAGU9QABlPYAAZT3AAGU+QABlPoAAZU5AAGVOwABlT4AAZVAAAGVQwABlUQAAZVFAAGVRgABlUcAAZVJAAGVSwABlUwAAZVNAAGVTwABlVAAAZVqAAGVdwABlXoAAZV9AAGVgAABlYMAAZWFAAGVoQABlewAAZYPAAGWLwABlk8AAZZRAAGWUwABllUAAZZXAAGWWgABllsAAZZcAAGWXwABlmAAAZZiAAGWYwABlmYAAZZpAAGWagABlmsAAZZuAAGWbwABlnQAAZaBAAGWhgABlogAAZaLAAGWkAABlpMAAZaWAAGWmAABlr0AAZbhAAGXCAABlywAAZcvAAGXMQABlzMAAZc1AAGXNwABlzkAAZc6AAGXPQABl0oAAZdbAAGXXQABl18AAZdhAAGXYwABl2UAAZdnAAGXaQABl2sAAZd8AAGXfwABl4IAAZeFAAGXiAABl4sAAZeOAAGXkQABl5QAAZeWAAGX1QABl9cAAZfZAAGX2wABl94AAZffAAGX4AABl+EAAZfiAAGX5AABl+YAAZfnAAGX6AABl+oAAZfrAAGYKgABmCwAAZguAAGYMAABmDMAAZg0AAGYNQABmDYAAZg3AAGYOQABmDsAAZg8AAGYPQABmD8AAZhAAAGYfwABmIEAAZiEAAGYhgABmIkAAZiKAAGYiwABmIwAAZiNAAGYjwABmJEAAZiSAAGYkwABmJUAAZiWAAGYowABmKQAAZilAAGYpwABmOYAAZjoAAGY6gABmOwAAZjvAAGY8AABmPEAAZjyAAGY8wABmPUAAZj3AAGY+AABmPkAAZj7AAGY/AABmTsAAZk9AAGZPwABmUEAAZlEAAGZRQABmUYAAZlHAAGZSAABmUoAAZlMAAGZTQABmU4AAZlQAAGZUQABmZAAAZmSAAGZlAABmZYAAZmZAAGZmgABmZsAAZmcAAGZnQABmZ8AAZmhAAGZogABmaMAAZmlAAGZpgABmeUAAZnnAAGZ6QABmesAAZnuAAGZ7wABmfAAAZnxAAGZ8gABmfQAAZn2AAGZ9wABmfgAAZn6AAGZ+wABmjoAAZo8AAGaPgABmkAAAZpDAAGaRAABmkUAAZpGAAGaRwABmkkAAZpLAAGaTAABmk0AAZpPAAGaUAABmnUAAZqZAAGawAABmuQAAZrnAAGa6gABmuwAAZruAAGa8AABmvIAAZrzAAGa9gABmwMAAZsSAAGbFQABmxgAAZsbAAGbHgABmyEAAZskAAGbJwABmzYAAZs5AAGbPAABmz8AAZtCAAGbRQABm0gAAZtLAAGbTQABm4wAAZuOAAGbkQABm5MAAZuWAAGblwABm5gAAZuZAAGbmgABm5wAAZufAAGboAABm6EAAZujAAGbpAABm+MAAZvlAAGb6AABm+oAAZvtAAGb7gABm+8AAZvwAAGb8QABm/MAAZv2AAGb9wABm/gAAZv6AAGb+wABnDoAAZw8AAGcPwABnEEAAZxEAAGcRQABnEYAAZxHAAGcSAABnEoAAZxNAAGcTgABnE8AAZxRAAGcUgABnJEAAZyTAAGclgABnJgAAZybAAGcnAABnJ0AAZyeAAGcnwABnKEAAZykAAGcpQABnKYAAZyoAAGcqQABnOwAAZ0QAAGdNAABnVcAAZ1+AAGdngABncUAAZ3sAAGeDAABnjAAAZ5UAAGeVgABnlkAAZ5bAAGeXQABnl8AAZ5iAAGeZQABnmcAAZ5pAAGebAABnm4AAZ5wAAGecwABnnYAAZ53AAGefAABnokAAZ6MAAGejgABnpEAAZ6UAAGelgABnrsAAZ7fAAGfBgABnyoAAZ8tAAGfLwABnzEAAZ8zAAGfNQABnzcAAZ84AAGfOwABn0gAAZ9ZAAGfWwABn10AAZ9fAAGfYQABn2MAAZ9lAAGfZwABn2kAAZ96AAGffQABn4AAAZ+DAAGfhgABn4kAAZ+MAAGfjwABn5IAAZ+UAAGf0wABn9UAAZ/YAAGf2gABn90AAZ/eAAGf3wABn+AAAZ/hAAGf4wABn+UAAZ/mAAGf5wABn+kAAZ/qAAGf8wABn/QAAZ/2AAGgNQABoDcAAaA5AAGgOwABoD4AAaA/AAGgQAABoEEAAaBCAAGgRAABoEYAAaBHAAGgSAABoEoAAaBLAAGgigABoIwAAaCOAAGgkAABoJMAAaCUAAGglQABoJYAAaCXAAGgmQABoJsAAaCcAAGgnQABoJ8AAaCgAAGg3wABoOEAAaDkAAGg5gABoOkAAaDqAAGg6wABoOwAAaDtAAGg7wABoPEAAaDyAAGg8wABoPUAAaD2AAGg/wABoQAAAaECAAGhQQABoUMAAaFFAAGhRwABoUoAAaFLAAGhTAABoU0AAaFOAAGhUAABoVIAAaFTAAGhVAABoVYAAaFXAAGhlgABoZgAAaGbAAGhnQABoaAAAaGhAAGhogABoaMAAaGkAAGhpgABoagAAaGpAAGhqgABoawAAaGtAAGhugABobsAAaG8AAGhvgABof0AAaH/AAGiAQABogMAAaIGAAGiBwABoggAAaIJAAGiCgABogwAAaIOAAGiDwABohAAAaISAAGiEwABolIAAaJUAAGiVwABolkAAaJcAAGiXQABol4AAaJfAAGiYAABomIAAaJkAAGiZQABomYAAaJoAAGiaQABooUAAaKSAAGipQABoqgAAaKrAAGirgABorEAAaK0AAGitwABoroAAaK9AAGiwAABotMAAaLWAAGi2QABotwAAaLfAAGi4gABouUAAaLoAAGi6wABou4AAaLwAAGi9wABowoAAaMQAAGjKQABozwAAaNPAAGjbQABo3gAAaOOAAGj2QABo/wAAaQcAAGkPAABpD4AAaRAAAGkQgABpEQAAaRHAAGkSAABpEkAAaRMAAGkTQABpE8AAaRQAAGkUwABpFYAAaRXAAGkWAABpFsAAaRcAAGkYQABpG4AAaRzAAGkdQABpHgAAaR9AAGkgAABpIMAAaSFAAGkqgABpM4AAaT1AAGlGQABpRwAAaUeAAGlIAABpSIAAaUkAAGlJgABpScAAaUqAAGlNwABpUgAAaVKAAGlTAABpU4AAaVQAAGlUgABpVQAAaVWAAGlWAABpWkAAaVsAAGlbwABpXIAAaV1AAGleAABpXsAAaV+AAGlgQABpYMAAaXCAAGlxAABpcYAAaXIAAGlywABpcwAAaXNAAGlzgABpc8AAaXRAAGl0wABpdQAAaXVAAGl1wABpdgAAaYXAAGmGQABphsAAaYdAAGmIAABpiEAAaYiAAGmIwABpiQAAaYmAAGmKAABpikAAaYqAAGmLAABpi0AAaZsAAGmbgABpnEAAaZzAAGmdgABpncAAaZ4AAGmeQABpnoAAaZ8AAGmfgABpn8AAaaAAAGmggABpoMAAaaQAAGmkQABppIAAaaUAAGm0wABptUAAabXAAGm2QABptwAAabdAAGm3gABpt8AAabgAAGm4gABpuQAAablAAGm5gABpugAAabpAAGnKAABpyoAAacsAAGnLgABpzEAAacyAAGnMwABpzQAAac1AAGnNwABpzkAAac6AAGnOwABpz0AAac+AAGnfQABp38AAaeBAAGngwABp4YAAaeHAAGniAABp4kAAaeKAAGnjAABp44AAaePAAGnkAABp5IAAaeTAAGn0gABp9QAAafWAAGn2AABp9sAAafcAAGn3QABp94AAaffAAGn4QABp+MAAafkAAGn5QABp+cAAafoAAGoJwABqCkAAagrAAGoLQABqDAAAagxAAGoMgABqDMAAag0AAGoNgABqDgAAag5AAGoOgABqDwAAag9AAGoYgABqIYAAaitAAGo0QABqNQAAajXAAGo2QABqNsAAajdAAGo3wABqOAAAajjAAGo8AABqP8AAakCAAGpBQABqQgAAakLAAGpDgABqREAAakUAAGpIwABqSYAAakpAAGpLAABqS8AAakyAAGpNQABqTgAAak6AAGpeQABqXsAAal+AAGpgAABqYMAAamEAAGphQABqYYAAamHAAGpiQABqYwAAamNAAGpjgABqZAAAamRAAGp0AABqdIAAanVAAGp1wABqdoAAanbAAGp3AABqd0AAaneAAGp4AABqeMAAankAAGp5QABqecAAanoAAGqJwABqikAAaosAAGqLgABqjEAAaoyAAGqMwABqjQAAao1AAGqNwABqjoAAao7AAGqPAABqj4AAao/AAGqfgABqoAAAaqDAAGqhQABqogAAaqJAAGqigABqosAAaqMAAGqjgABqpEAAaqSAAGqkwABqpUAAaqWAAGq2QABqv0AAashAAGrRAABq2sAAauLAAGrsgABq9kAAav5AAGsHQABrEEAAaxDAAGsRgABrEgAAaxKAAGsTAABrE8AAaxSAAGsVAABrFYAAaxZAAGsWwABrF0AAaxgAAGsYwABrGQAAaxpAAGsdgABrHkAAax7AAGsfgABrIEAAayDAAGsqAABrMwAAazzAAGtFwABrRoAAa0cAAGtHgABrSAAAa0iAAGtJAABrSUAAa0oAAGtNQABrUYAAa1IAAGtSgABrUwAAa1OAAGtUAABrVIAAa1UAAGtVgABrWcAAa1qAAGtbQABrXAAAa1zAAGtdgABrXkAAa18AAGtfwABrYEAAa3AAAGtwgABrcUAAa3HAAGtygABrcsAAa3MAAGtzQABrc4AAa3QAAGt0gABrdMAAa3UAAGt1gABrdcAAa3gAAGt4QABreMAAa4iAAGuJAABriYAAa4oAAGuKwABriwAAa4tAAGuLgABri8AAa4xAAGuMwABrjQAAa41AAGuNwABrjgAAa53AAGueQABrnsAAa59AAGugAABroEAAa6CAAGugwABroQAAa6GAAGuiAABrokAAa6KAAGujAABro0AAa7MAAGuzgABrtEAAa7TAAGu1gABrtcAAa7YAAGu2QABrtoAAa7cAAGu3gABrt8AAa7gAAGu4gABruMAAa7sAAGu7QABru8AAa8uAAGvMAABrzIAAa80AAGvNwABrzgAAa85AAGvOgABrzsAAa89AAGvPwABr0AAAa9BAAGvQwABr0QAAa+DAAGvhQABr4gAAa+KAAGvjQABr44AAa+PAAGvkAABr5EAAa+TAAGvlQABr5YAAa+XAAGvmQABr5oAAa+nAAGvqAABr6kAAa+rAAGv6gABr+wAAa/uAAGv8AABr/MAAa/0AAGv9QABr/YAAa/3AAGv+QABr/sAAa/8AAGv/QABr/8AAbAAAAGwPwABsEEAAbBEAAGwRgABsEkAAbBKAAGwSwABsEwAAbBNAAGwTwABsFEAAbBSAAGwUwABsFUAAbBWAAGwdAABsIEAAbCGAAGwiQABsIwAAbCRAAGwlAABsJcAAbCZAAGwoAABsLwAAbEHAAGxKgABsUoAAbFqAAGxbAABsW4AAbFwAAGxcgABsXUAAbF2AAGxdwABsXoAAbF7AAGxfQABsX4AAbGAAAGxgwABsYQAAbGFAAGxiAABsYkAAbGOAAGxmwABsaAAAbGiAAGxpAABsakAAbGsAAGxrwABsbEAAbHWAAGx+gABsiEAAbJFAAGySAABskoAAbJMAAGyTgABslAAAbJSAAGyUwABslYAAbJjAAGydAABsnYAAbJ4AAGyegABsnwAAbJ+AAGygAABsoIAAbKEAAGylQABspgAAbKbAAGyngABsqEAAbKkAAGypwABsqoAAbKtAAGyrwABsu4AAbLwAAGy8gABsvQAAbL3AAGy+AABsvkAAbL6AAGy+wABsv0AAbL/AAGzAAABswEAAbMDAAGzBAABs0MAAbNFAAGzRwABs0kAAbNMAAGzTQABs04AAbNPAAGzUAABs1IAAbNUAAGzVQABs1YAAbNYAAGzWQABs5gAAbOaAAGznQABs58AAbOiAAGzowABs6QAAbOlAAGzpgABs6gAAbOqAAGzqwABs6wAAbOuAAGzrwABs7wAAbO9AAGzvgABs8AAAbP/AAG0AQABtAMAAbQFAAG0CAABtAkAAbQKAAG0CwABtAwAAbQOAAG0EAABtBEAAbQSAAG0FAABtBUAAbRUAAG0VgABtFgAAbRaAAG0XQABtF4AAbRfAAG0YAABtGEAAbRjAAG0ZQABtGYAAbRnAAG0aQABtGoAAbSpAAG0qwABtK0AAbSvAAG0sgABtLMAAbS0AAG0tQABtLYAAbS4AAG0ugABtLsAAbS8AAG0vgABtL8AAbT+AAG1AAABtQIAAbUEAAG1BwABtQgAAbUJAAG1CgABtQsAAbUNAAG1DwABtRAAAbURAAG1EwABtRQAAbVTAAG1VQABtVcAAbVZAAG1XAABtV0AAbVeAAG1XwABtWAAAbViAAG1ZAABtWUAAbVmAAG1aAABtWkAAbWOAAG1sgABtdkAAbX9AAG2AAABtgIAAbYEAAG2BgABtggAAbYKAAG2CwABtg4AAbYbAAG2KgABtiwAAbYuAAG2MAABtjIAAbY0AAG2NgABtjgAAbZHAAG2SgABtk0AAbZQAAG2UwABtlYAAbZZAAG2XAABtl4AAbadAAG2nwABtqEAAbajAAG2pgABtqcAAbaoAAG2qQABtqoAAbasAAG2rgABtq8AAbawAAG2sgABtrMAAbbyAAG29AABtvYAAbb4AAG2+wABtvwAAbb9AAG2/gABtv8AAbcBAAG3AwABtwQAAbcFAAG3BwABtwgAAbdHAAG3SQABt0wAAbdOAAG3UQABt1IAAbdTAAG3VAABt1UAAbdXAAG3WQABt1oAAbdbAAG3XQABt14AAbedAAG3nwABt6IAAbekAAG3pwABt6gAAbepAAG3qgABt6sAAbetAAG3rwABt7AAAbexAAG3swABt7QAAbe3AAG39gABt/gAAbf6AAG3/AABt/8AAbgAAAG4AQABuAIAAbgDAAG4BQABuAcAAbgIAAG4CQABuAsAAbgMAAG4SwABuE0AAbhPAAG4UQABuFQAAbhVAAG4VgABuFcAAbhYAAG4WgABuFwAAbhdAAG4XgABuGAAAbhhAAG4oAABuKIAAbikAAG4pgABuKkAAbiqAAG4qwABuKwAAbitAAG4rwABuLEAAbiyAAG4swABuLUAAbi2AAG5AQABuSQAAblEAAG5ZAABuWYAAbloAAG5agABuWwAAblvAAG5cAABuXEAAbl0AAG5dQABuXcAAbl4AAG5ewABuX4AAbl/AAG5gAABuYMAAbmEAAG5iQABuZYAAbmbAAG5nQABuaAAAbmlAAG5qAABuasAAbmtAAG50gABufYAAbodAAG6QQABukQAAbpGAAG6SAABukoAAbpMAAG6TgABuk8AAbpSAAG6XwABunAAAbpyAAG6dAABunYAAbp4AAG6egABunwAAbp+AAG6gAABupEAAbqUAAG6lwABupoAAbqdAAG6oAABuqMAAbqmAAG6qQABuqsAAbrqAAG67AABuu4AAbrwAAG68wABuvQAAbr1AAG69gABuvcAAbr5AAG6+wABuvwAAbr9AAG6/wABuwAAAbs/AAG7QQABu0MAAbtFAAG7SAABu0kAAbtKAAG7SwABu0wAAbtOAAG7UAABu1EAAbtSAAG7VAABu1UAAbuUAAG7lgABu5kAAbubAAG7ngABu58AAbugAAG7oQABu6IAAbukAAG7pgABu6cAAbuoAAG7qgABu6sAAbu4AAG7uQABu7oAAbu8AAG7+wABu/0AAbv/AAG8AQABvAQAAbwFAAG8BgABvAcAAbwIAAG8CgABvAwAAbwNAAG8DgABvBAAAbwRAAG8UAABvFIAAbxUAAG8VgABvFkAAbxaAAG8WwABvFwAAbxdAAG8XwABvGEAAbxiAAG8YwABvGUAAbxmAAG8pQABvKcAAbypAAG8qwABvK4AAbyvAAG8sAABvLEAAbyyAAG8tAABvLYAAby3AAG8uAABvLoAAby7AAG8+gABvPwAAbz+AAG9AAABvQMAAb0EAAG9BQABvQYAAb0HAAG9CQABvQsAAb0MAAG9DQABvQ8AAb0QAAG9TwABvVEAAb1TAAG9VQABvVgAAb1ZAAG9WgABvVsAAb1cAAG9XgABvWAAAb1hAAG9YgABvWQAAb1lAAG9igABva4AAb3VAAG9+QABvfwAAb3/AAG+AQABvgMAAb4FAAG+BwABvggAAb4LAAG+GAABvicAAb4qAAG+LQABvjAAAb4zAAG+NgABvjkAAb48AAG+SwABvk4AAb5RAAG+VAABvlcAAb5aAAG+XQABvmAAAb5iAAG+oQABvqMAAb6mAAG+qAABvqsAAb6sAAG+rQABvq4AAb6vAAG+sQABvrQAAb61AAG+tgABvrgAAb65AAG++AABvvoAAb79AAG+/wABvwIAAb8DAAG/BAABvwUAAb8GAAG/CAABvwsAAb8MAAG/DQABvw8AAb8QAAG/TwABv1EAAb9UAAG/VgABv1kAAb9aAAG/WwABv1wAAb9dAAG/XwABv2IAAb9jAAG/ZAABv2YAAb9nAAG/pgABv6gAAb+rAAG/rQABv7AAAb+xAAG/sgABv7MAAb+0AAG/tgABv7kAAb+6AAG/uwABv70AAb++AAG//QABv/8AAcABAAHAAwABwAYAAcAHAAHACAABwAkAAcAKAAHADAABwA8AAcAQAAHAEQABwBMAAcAUAAHAUwABwFUAAcBXAAHAWQABwFwAAcBdAAHAXgABwF8AAcBgAAHAYgABwGUAAcBmAAHAZwABwGkAAcBqAAHAqQABwKsAAcCuAAHAsAABwLMAAcC0AAHAtQABwLYAAcC3AAHAuQABwLwAAcC9AAHAvgABwMAAAcDBAAHAygABwM0AAcDQAAHA0gABwO8AAcD5AAHBAgABwQUAAcEHAAHBCgABwQ0AAcEQAAHBEwABwRgAAcFrAAHBjwABwbMAAcHTAAHB+gABwiEAAcJBAAHCaAABwowAAcKvAAHC1gABwvoAAcMeAAHDQgABw2kAAcNqAAHDbAABw24AAcNxAAHDcwABw3YAAcN4AAHDegABw30AAcN/AAHDgQABw4QAAcOHAAHDiQABw4sAAcONAAHDkAABw5MAAcOWAAHDmwABw6gAAcOrAAHDrQABw7AAAcOzAAHDtQABw9oAAcP+AAHEJQABxEkAAcRMAAHETgABxFAAAcRSAAHEVAABxFYAAcRXAAHEWgABxGcAAcR4AAHEegABxHwAAcR+AAHEgAABxIIAAcSEAAHEhgABxIgAAcSZAAHEnAABxJ8AAcSiAAHEpQABxKgAAcSrAAHErgABxLEAAcSzAAHE8gABxPQAAcT3AAHE+QABxPwAAcT9AAHE/gABxP8AAcUAAAHFAgABxQQAAcUFAAHFBgABxQgAAcUJAAHFEgABxRMAAcUVAAHFVAABxVYAAcVYAAHFWgABxV0AAcVeAAHFXwABxWAAAcVhAAHFYwABxWUAAcVmAAHFZwABxWkAAcVqAAHFqQABxasAAcWtAAHFrwABxbIAAcWzAAHFtAABxbUAAcW2AAHFuAABxboAAcW7AAHFvAABxb4AAcW/AAHF/gABxgAAAcYDAAHGBQABxggAAcYJAAHGCgABxgsAAcYMAAHGDgABxhAAAcYRAAHGEgABxhQAAcYVAAHGHgABxh8AAcYhAAHGYAABxmIAAcZkAAHGZgABxmkAAcZqAAHGawABxmwAAcZtAAHGbwABxnEAAcZyAAHGcwABxnUAAcZ2AAHGtQABxrcAAca6AAHGvAABxr8AAcbAAAHGwQABxsIAAcbDAAHGxQABxscAAcbIAAHGyQABxssAAcbMAAHG2QABxtoAAcbbAAHG3QABxxwAAcceAAHHIAABxyIAAcclAAHHJgABxycAAccoAAHHKQABxysAAcctAAHHLgABxy8AAccxAAHHMgABx3EAAcdzAAHHdgABx3gAAcd7AAHHfAABx30AAcd+AAHHfwABx4EAAceDAAHHhAABx4UAAceHAAHHiAABx6YAAcezAAHHtgABx7kAAce8AAHHvwABx8EAAcfGAAHIEQAByDQAAchUAAHIdAAByHYAAch4AAHIegAByHwAAch/AAHIgAAByIEAAciEAAHIhQAByIcAAciIAAHIigAByI0AAciOAAHIjwAByJIAAciTAAHImAAByKUAAciqAAHIrAAByK4AAcizAAHItgAByLkAAci7AAHI4AAByQQAAckrAAHJTwAByVIAAclUAAHJVgAByVgAAclaAAHJXAAByV0AAclgAAHJbQAByX4AAcmAAAHJggAByYQAAcmGAAHJiAAByYoAAcmMAAHJjgAByZ8AAcmiAAHJpQAByagAAcmrAAHJrgABybEAAcm0AAHJtwABybkAAcn4AAHJ+gAByfwAAcn+AAHKAQABygIAAcoDAAHKBAABygUAAcoHAAHKCQABygoAAcoLAAHKDQAByg4AAcpNAAHKTwABylEAAcpTAAHKVgABylcAAcpYAAHKWQAByloAAcpcAAHKXgAByl8AAcpgAAHKYgABymMAAcqiAAHKpAAByqcAAcqpAAHKrAAByq0AAcquAAHKrwAByrAAAcqyAAHKtAAByrUAAcq2AAHKuAAByrkAAcrGAAHKxwABysgAAcrKAAHLCQABywsAAcsNAAHLDwAByxIAAcsTAAHLFAAByxUAAcsWAAHLGAAByxoAAcsbAAHLHAAByx4AAcsfAAHLXgABy2AAActiAAHLZAABy2cAActoAAHLaQABy2oAActrAAHLbQABy28AActwAAHLcQABy3MAAct0AAHLswABy7UAAcu3AAHLuQABy7wAAcu9AAHLvgABy78AAcvAAAHLwgABy8QAAcvFAAHLxgABy8g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AAf/MAAH/7AAB/+4AAf/wAAH/8gAB//QAAf/3AAH/+AAB//kAAf/8AAH//QAB//8AAgAAAAIAAwACAAYAAgAHAAIACAACAAsAAgAMAAIAEQACAB4AAgAjAAIAJQACACgAAgAtAAIAMAACADMAAgA1AAIAWgACAH4AAgClAAIAyQACAMwAAgDOAAIA0AACANIAAgDUAAIA1gACANcAAgDaAAIA5wACAPgAAgD6AAIA/AACAP4AAgEAAAIBAgACAQQAAgEGAAIBCAACARkAAgEcAAIBHwACASIAAgElAAIBKAACASsAAgEuAAIBMQACATMAAgFyAAIBdAACAXYAAgF4AAIBewACAXwAAgF9AAIBfgACAX8AAgGBAAIBgwACAYQAAgGFAAIBhwACAYgAAgHHAAIByQACAcsAAgHNAAIB0AACAdEAAgHSAAIB0wACAdQAAgHWAAIB2AACAdkAAgHaAAIB3AACAd0AAgIcAAICHgACAiEAAgIjAAICJgACAicAAgIoAAICKQACAioAAgIsAAICLgACAi8AAgIwAAICMgACAjMAAgJAAAICQQACAkIAAgJEAAICgwACAoUAAgKHAAICiQACAowAAgKNAAICjgACAo8AAgKQAAICkgACApQAAgKVAAIClgACApgAAgKZAAIC2AACAtoAAgLcAAIC3gACAuEAAgLiAAIC4wACAuQAAgLlAAIC5wACAukAAgLqAAIC6wACAu0AAgLuAAIDLQACAy8AAgMxAAIDMwACAzYAAgM3AAIDOAACAzkAAgM6AAIDPAACAz4AAgM/AAIDQAACA0IAAgNDAAIDggACA4QAAgOGAAIDiAACA4sAAgOMAAIDjQACA44AAgOPAAIDkQACA5MAAgOUAAIDlQACA5cAAgOYAAID1wACA9kAAgPbAAID3QACA+AAAgPhAAID4gACA+MAAgPkAAID5gACA+gAAgPpAAID6gACA+wAAgPtAAIEEgACBDYAAgRdAAIEgQACBIQAAgSHAAIEiQACBIsAAgSNAAIEjwACBJAAAgSTAAIEoAACBK8AAgSyAAIEtQACBLgAAgS7AAIEvgACBMEAAgTEAAIE0wACBNYAAgTZAAIE3AACBN8AAgTiAAIE5QACBOgAAgTqAAIFKQACBSsAAgUuAAIFMAACBTMAAgU0AAIFNQACBTYAAgU3AAIFOQACBTwAAgU9AAIFPgACBUAAAgVBAAIFgAACBYIAAgWFAAIFhwACBYoAAgWLAAIFjAACBY0AAgWOAAIFkAACBZMAAgWUAAIFlQACBZcAAgWYAAIF1wACBdkAAgXcAAIF3gACBeEAAgXiAAIF4wACBeQAAgXlAAIF5wACBeoAAgXrAAIF7AACBe4AAgXvAAIGLgACBjAAAgYzAAIGNQACBjgAAgY5AAIGOgACBjsAAgY8AAIGPgACBkEAAgZCAAIGQwACBkUAAgZGAAIGhQACBocAAgaJAAIGiwACBo4AAgaPAAIGkAACBpEAAgaSAAIGlAACBpcAAgaYAAIGmQACBpsAAgacAAIG2wACBt0AAgbfAAIG4QACBuQAAgblAAIG5gACBucAAgboAAIG6gACBu0AAgbuAAIG7wACBvEAAgbyAAIHMQACBzMAAgc2AAIHOAACBzsAAgc8AAIHPQACBz4AAgc/AAIHQQACB0QAAgdFAAIHRgACB0gAAgdJAAIHlAACB7cAAgfXAAIH9wACB/kAAgf7AAIH/QACB/8AAggCAAIIAwACCAQAAggHAAIICAACCAoAAggLAAIIDQACCBAAAggRAAIIEgACCBUAAggWAAIIGwACCCgAAggtAAIILwACCDEAAgg2AAIIOQACCDwAAgg+AAIIYwACCIcAAgiuAAII0gACCNUAAgjXAAII2QACCNsAAgjdAAII3wACCOAAAgjjAAII8AACCQEAAgkDAAIJBQACCQcAAgkJAAIJCwACCQ0AAgkPAAIJEQACCSIAAgklAAIJKAACCSsAAgkuAAIJMQACCTQAAgk3AAIJOgACCTwAAgl7AAIJfQACCX8AAgmBAAIJhAACCYUAAgmGAAIJhwACCYgAAgmKAAIJjAACCY0AAgmOAAIJkAACCZEAAgnQAAIJ0gACCdQAAgnWAAIJ2QACCdoAAgnbAAIJ3AACCd0AAgnfAAIJ4QACCeIAAgnjAAIJ5QACCeYAAgolAAIKJwACCioAAgosAAIKLwACCjAAAgoxAAIKMgACCjMAAgo1AAIKNwACCjgAAgo5AAIKOwACCjwAAgpJAAIKSgACCksAAgpNAAIKjAACCo4AAgqQAAIKkgACCpUAAgqWAAIKlwACCpgAAgqZAAIKmwACCp0AAgqeAAIKnwACCqEAAgqiAAIK4QACCuMAAgrlAAIK5wACCuoAAgrrAAIK7AACCu0AAgruAAIK8AACCvIAAgrzAAIK9AACCvYAAgr3AAILNgACCzgAAgs6AAILPAACCz8AAgtAAAILQQACC0IAAgtDAAILRQACC0cAAgtIAAILSQACC0sAAgtMAAILiwACC40AAguPAAILkQACC5QAAguVAAILlgACC5cAAguYAAILmgACC5wAAgudAAILngACC6AAAguhAAIL4AACC+IAAgvkAAIL5gACC+kAAgvqAAIL6wACC+wAAgvtAAIL7wACC/EAAgvyAAIL8wACC/UAAgv2AAIMGwACDD8AAgxmAAIMigACDI0AAgyPAAIMkQACDJMAAgyVAAIMlwACDJgAAgybAAIMqAACDLcAAgy5AAIMuwACDL0AAgy/AAIMwQACDMMAAgzFAAIM1AACDNcAAgzaAAIM3QACDOAAAgzjAAIM5gACDOkAAgzrAAINKgACDSwAAg0vAAINMQACDTQAAg01AAINNgACDTcAAg04AAINOgACDTwAAg09AAINPgACDUAAAg1BAAINgAACDYIAAg2EAAINhgACDYkAAg2KAAINiwACDYwAAg2NAAINjwACDZEAAg2SAAINkwACDZUAAg2WAAIN1QACDdcAAg3aAAIN3AACDd8AAg3gAAIN4QACDeIAAg3jAAIN5QACDecAAg3oAAIN6QACDesAAg3sAAIOKwACDi0AAg4wAAIOMgACDjUAAg42AAIONwACDjgAAg45AAIOOwACDj0AAg4+AAIOPwACDkEAAg5CAAIOgQACDoMAAg6GAAIOiAACDosAAg6MAAIOjQACDo4AAg6PAAIOkQACDpMAAg6UAAIOlQACDpcAAg6YAAIO1wACDtkAAg7bAAIO3QACDuAAAg7hAAIO4gACDuMAAg7kAAIO5gACDugAAg7pAAIO6gACDuwAAg7tAAIPLAACDy4AAg8wAAIPMgACDzUAAg82AAIPNwACDzgAAg85AAIPOwACDz0AAg8+AAIPPwACD0EAAg9CAAIPSwACD04AAg9RAAIPUwACD1gAAg+XAAIPmQACD5sAAg+dAAIPoAACD6EAAg+iAAIPowACD6QAAg+mAAIPqQACD6oAAg+rAAIPrQACD64AAg/tAAIP7wACD/EAAg/zAAIP9gACD/cAAg/4AAIP+QACD/oAAg/8AAIP/wACEAAAAhABAAIQAwACEAQAAhBDAAIQRQACEEgAAhBKAAIQTQACEE4AAhBPAAIQUAACEFEAAhBTAAIQVgACEFcAAhBYAAIQWgACEFsAAhCmAAIQyQACEOkAAhEJAAIRCwACEQ0AAhEPAAIREQACERQAAhEVAAIRFgACERkAAhEaAAIRHAACER0AAhEfAAIRIgACESMAAhEkAAIRJwACESgAAhEtAAIROgACET8AAhFBAAIRQwACEUgAAhFLAAIRTgACEVAAAhF1AAIRmQACEcAAAhHkAAIR5wACEekAAhHrAAIR7QACEe8AAhHxAAIR8gACEfUAAhICAAISEwACEhUAAhIXAAISGQACEhsAAhIdAAISHwACEiEAAhIjAAISNAACEjcAAhI6AAISPQACEkAAAhJDAAISRgACEkkAAhJMAAISTgACEo0AAhKPAAISkQACEpMAAhKWAAISlwACEpgAAhKZAAISmgACEpwAAhKeAAISnwACEqAAAhKiAAISowACEuIAAhLkAAIS5gACEugAAhLrAAIS7AACEu0AAhLuAAIS7wACEvEAAhLzAAIS9AACEvUAAhL3AAIS+AACEzcAAhM5AAITPAACEz4AAhNBAAITQgACE0MAAhNEAAITRQACE0cAAhNJAAITSgACE0sAAhNNAAITTgACE1sAAhNcAAITXQACE18AAhOeAAIToAACE6IAAhOkAAITpwACE6gAAhOpAAITqgACE6sAAhOtAAITrwACE7AAAhOxAAITswACE7QAAhPzAAIT9QACE/cAAhP5AAIT/AACE/0AAhP+AAIT/wACFAAAAhQCAAIUBAACFAUAAhQGAAIUCAACFAkAAhRIAAIUSgACFEwAAhROAAIUUQACFFIAAhRTAAIUVAACFFUAAhRXAAIUWQACFFoAAhRbAAIUXQACFF4AAhSdAAIUnwACFKEAAhSjAAIUpgACFKcAAhSoAAIUqQACFKoAAhSsAAIUrgACFK8AAhSwAAIUsgACFLMAAhTyAAIU9AACFPYAAhT4AAIU+wACFPwAAhT9AAIU/gACFP8AAhUBAAIVAwACFQQAAhUFAAIVBwACFQgAAhUtAAIVUQACFXgAAhWcAAIVnwACFaEAAhWjAAIVpQACFacAAhWpAAIVqgACFa0AAhW6AAIVyQACFcsAAhXNAAIVzwACFdEAAhXTAAIV1QACFdcAAhXmAAIV6QACFewAAhXvAAIV8gACFfUAAhX4AAIV+wACFf0AAhY8AAIWPgACFkAAAhZCAAIWRQACFkYAAhZHAAIWSAACFkkAAhZLAAIWTQACFk4AAhZPAAIWUQACFlIAAhaRAAIWkwACFpUAAhaXAAIWmgACFpsAAhacAAIWnQACFp4AAhagAAIWogACFqMAAhakAAIWpgACFqcAAhbmAAIW6AACFuoAAhbsAAIW7wACFvAAAhbxAAIW8gACFvMAAhb1AAIW9wACFvgAAhb5AAIW+wACFvwAAhc7AAIXPQACFz8AAhdBAAIXRAACF0UAAhdGAAIXRwACF0gAAhdKAAIXTAACF00AAhdOAAIXUAACF1EAAheQAAIXkgACF5QAAheWAAIXmQACF5oAAhebAAIXnAACF50AAhefAAIXoQACF6IAAhejAAIXpQACF6YAAhflAAIX5wACF+kAAhfrAAIX7gACF+8AAhfwAAIX8QACF/IAAhf0AAIX9gACF/cAAhf4AAIX+gACF/sAAhg6AAIYPAACGD4AAhhAAAIYQwACGEQAAhhFAAIYRgACGEcAAhhJAAIYSwACGEwAAhhNAAIYTwACGFAAAhibAAIYvgACGN4AAhj+AAIZAAACGQIAAhkEAAIZBgACGQkAAhkKAAIZCwACGQ4AAhkPAAIZEQACGRIAAhkUAAIZFwACGRgAAhkZAAIZHAACGR0AAhkiAAIZLwACGTQAAhk2AAIZOAACGT0AAhlAAAIZQwACGUUAAhlqAAIZjgACGbUAAhnZAAIZ3AACGd4AAhngAAIZ4gACGeQAAhnmAAIZ5wACGeoAAhn3AAIaCAACGgoAAhoMAAIaDgACGhAAAhoSAAIaFAACGhYAAhoYAAIaKQACGiwAAhovAAIaMgACGjUAAho4AAIaOwACGj4AAhpBAAIaQwACGoIAAhqEAAIahgACGogAAhqLAAIajAACGo0AAhqOAAIajwACGpEAAhqTAAIalAACGpUAAhqXAAIamAACGtcAAhrZAAIa2wACGt0AAhrgAAIa4QACGuIAAhrjAAIa5AACGuYAAhroAAIa6QACGuoAAhrsAAIa7QACGywAAhsuAAIbMQACGzMAAhs2AAIbNwACGzgAAhs5AAIbOgACGzwAAhs+AAIbPwACG0AAAhtCAAIbQwACG1AAAhtRAAIbUgACG1QAAhuTAAIblQACG5c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AAiacAAImngACJp8AAibeAAIm4AACJuMAAiblAAIm6AACJukAAibqAAIm6wACJuwAAibuAAIm8QACJvIAAibzAAIm9QACJvYAAic1AAInNwACJzoAAic8AAInPwACJ0AAAidBAAInQgACJ0MAAidFAAInSAACJ0kAAidKAAInTAACJ00AAieQAAIntAACJ9gAAif7AAIoIgACKEIAAihpAAIokAACKLAAAijUAAIo+AACKPoAAij9AAIo/wACKQEAAikDAAIpBgACKQkAAikLAAIpDQACKRAAAikSAAIpFAACKRcAAikaAAIpGwACKSAAAiktAAIpMAACKTIAAik1AAIpOAACKToAAilfAAIpgwACKaoAAinOAAIp0QACKdMAAinVAAIp1wACKdkAAinbAAIp3AACKd8AAinsAAIp/QACKf8AAioBAAIqAwACKgUAAioHAAIqCQACKgsAAioNAAIqHgACKiEAAiokAAIqJwACKioAAiotAAIqMAACKjMAAio2AAIqOAACKncAAip5AAIqfAACKn4AAiqBAAIqggACKoMAAiqEAAIqhQACKocAAiqJAAIqigACKosAAiqNAAIqjgACKpcAAiqYAAIqmgACKtkAAirbAAIq3QACKt8AAiriAAIq4wACKuQAAirlAAIq5gACKugAAirqAAIq6wACKuwAAiruAAIq7wACKy4AAiswAAIrMgACKzQAAis3AAIrOAACKzkAAis6AAIrOwACKz0AAis/AAIrQAACK0EAAitDAAIrRAACK4MAAiuFAAIriAACK4oAAiuNAAIrjgACK48AAiuQAAIrkQACK5MAAiuVAAIrlgACK5cAAiuZAAIrmgACK6MAAiukAAIrpgACK+UAAivnAAIr6QACK+sAAivuAAIr7wACK/AAAivxAAIr8gACK/QAAiv2AAIr9wACK/gAAiv6AAIr+wACLDoAAiw8AAIsPwACLEEAAixEAAIsRQACLEYAAixHAAIsSAACLEoAAixMAAIsTQACLE4AAixQAAIsUQACLF4AAixfAAIsYAACLGIAAiyhAAIsowACLKUAAiynAAIsqgACLKsAAiysAAIsrQACLK4AAiywAAIssgACLLMAAiy0AAIstgACLLcAAiz2AAIs+AACLPsAAiz9AAItAAACLQEAAi0CAAItAwACLQQAAi0GAAItCAACLQk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AAkP7AAJD/AACQ/0AAkP/AAJEAAACRD8AAkRBAAJEQwACREUAAkRIAAJESQACREoAAkRLAAJETAACRE4AAkRQAAJEUQACRFIAAkRUAAJEVQACRJQAAkSWAAJEmAACRJoAAkSdAAJEngACRJ8AAkSgAAJEoQACRKMAAkSlAAJEpgACRKcAAkSpAAJEqgACROkAAkTrAAJE7QACRO8AAkTyAAJE8wACRPQAAkT1AAJE9gACRPgAAkT6AAJE+wACRPwAAkT+AAJE/wACRT4AAkVAAAJFQgACRUQAAkVHAAJFSAACRUkAAkVKAAJFSwACRU0AAkVPAAJFUAACRVEAAkVTAAJFVAACRZMAAkWVAAJFlwACRZkAAkWcAAJFnQACRZ4AAkWfAAJFoAACRaIAAkWkAAJFpQACRaYAAkWoAAJFqQACRbIAAkWzAAJFtQACRfQAAkX2AAJF+AACRfoAAkX9AAJF/gACRf8AAkYAAAJGAQACRgMAAkYGAAJGBwACRggAAkYKAAJGCwACRkoAAkZMAAJGTgACRlAAAkZTAAJGVAACRlUAAkZWAAJGVwACRlkAAkZcAAJGXQACRl4AAkZgAAJGYQACRqAAAkaiAAJGpQACRqcAAkaqAAJGqwACRqwAAkatAAJGrgACRrAAAkazAAJGtAACRrUAAka3AAJGuAACRwMAAkcmAAJHRgACR2YAAkdoAAJHagACR2wAAkduAAJHcQACR3IAAkdzAAJHdgACR3cAAkd5AAJHegACR3wAAkd/AAJHgAACR4EAAkeEAAJHhQACR4oAAkeXAAJHnAACR54AAkegAAJHpQACR6gAAkerAAJHrQACR9IAAkf2AAJIHQACSEEAAkhEAAJIRgACSEgAAkhKAAJITAACSE4AAkhPAAJIUgACSF8AAkhwAAJIcgACSHQAAkh2AAJIeAACSHoAAkh8AAJIfgACSIAAAkiRAAJIlAACSJcAAkiaAAJInQACSKAAAkijAAJIpgACSKkAAkirAAJI6gACSOwAAkjuAAJI8AACSPMAAkj0AAJI9QACSPYAAkj3AAJI+QACSPsAAkj8AAJI/QACSP8AAkkAAAJJPwACSUEAAklDAAJJRQACSUgAAklJAAJJSgACSUsAAklMAAJJTgACSVAAAklRAAJJUgACSVQAAklVAAJJlAACSZYAAkmZAAJJmwACSZ4AAkmfAAJJoAACSaEAAkmiAAJJpAACSaYAAkmnAAJJqAACSaoAAkmrAAJJuAACSbkAAkm6AAJJvAACSfsAAkn9AAJJ/wACSgEAAkoEAAJKBQACSgYAAkoHAAJKCAACSgoAAkoMAAJKDQACSg4AAkoQAAJKEQACSlAAAkpSAAJKVAACSlYAAkpZAAJKWgACSlsAAkpcAAJKXQACSl8AAkphAAJKYgACSmMAAkplAAJKZgACSqUAAkqnAAJKqQACSqsAAkquAAJKrwACSrAAAkqxAAJKsgACSrQAAkq2AAJKtwACSrgAAkq6AAJKuwACSvoAAkr8AAJK/gACSwAAAksDAAJLBAACSwUAAksGAAJLBwACSwkAAksLAAJLDAACSw0AAksPAAJLEAACS08AAktRAAJLUwACS1UAAktYAAJLWQACS1oAAktbAAJLXAACS14AAktgAAJLYQACS2IAAktkAAJLZQACS4oAAkuuAAJL1QACS/kAAkv8AAJL/gACTAAAAkwCAAJMBAACTAYAAkwHAAJMCgACTBcAAkwmAAJMKAACTCoAAkwsAAJMLgACTDAAAkwyAAJMNAACTEMAAkxGAAJMSQACTEwAAkxPAAJMUgACTFUAAkxYAAJMWgACTJkAAkybAAJMnQACTJ8AAkyiAAJMowACTKQAAkylAAJMpgACTKgAAkyqAAJMqwACTKwAAkyuAAJMrwACTO4AAkzwAAJM8gACTPQAAkz3AAJM+AACTPkAAkz6AAJM+wACTP0AAkz/AAJNAAACTQEAAk0DAAJNBAACTUMAAk1FAAJNRwACTUkAAk1MAAJNTQACTU4AAk1PAAJNUAACTVIAAk1UAAJNVQACTVYAAk1YAAJNWQACTZgAAk2aAAJNnAACTZ4AAk2hAAJNogACTaMAAk2kAAJNpQACTacAAk2pAAJNqgACTasAAk2tAAJNrgACTe0AAk3vAAJN8QACTfMAAk32AAJN9wACTfgAAk35AAJN+gACTfwAAk3+AAJN/wACTgAAAk4CAAJOAwACTkIAAk5EAAJORgACTkgAAk5LAAJOTAACTk0AAk5OAAJOTwACTlEAAk5TAAJOVAACTlUAAk5XAAJOWAACTpcAAk6ZAAJOmwACTp0AAk6gAAJOoQACTqIAAk6jAAJOpAACTqYAAk6oAAJOqQACTqoAAk6sAAJOrQACTvgAAk8bAAJPOwACT1sAAk9dAAJPXwACT2EAAk9jAAJPZgACT2cAAk9oAAJPawACT2wAAk9uAAJPbwACT3EAAk90AAJPdQACT3YAAk95AAJPegACT38AAk+MAAJPkQACT5MAAk+VAAJPmgACT50AAk+gAAJPogACT8cAAk/rAAJQEgACUDYAAlA5AAJQOwACUD0AAlA/AAJQQQACUEMAAlBEAAJQRwACUFQAAlBlAAJQZwACUGkAAlBrAAJQbQACUG8AAlBxAAJQcwACUHUAAlCGAAJQiQACUIwAAlCPAAJQkgACUJUAAlCYAAJQmwACUJ4AAlCgAAJQ3wACUOEAAlDjAAJQ5QACUOgAAlDpAAJQ6gACUOsAAlDsAAJQ7gACUPAAAlDxAAJQ8gACUPQAAlD1AAJRNAACUTYAAlE4AAJROgACUT0AAlE+AAJRPwACUUAAAlFBAAJRQwACUUUAAlFGAAJRRwACUUkAAlFKAAJRiQACUYsAAlGOAAJRkAACUZMAAlGUAAJRlQACUZYAAlGXAAJRmQACUZsAAlGcAAJRnQACUZ8AAlGgAAJRrQACUa4AAlGvAAJRsQACUfAAAlHyAAJR9AACUfYAAlH5AAJR+gACUfsAAlH8AAJR/QACUf8AAlIBAAJSAgACUgMAAlIFAAJSBgACUkUAAlJHAAJSSQACUksAAlJOAAJSTwACUlAAAlJRAAJSUgACUlQAAlJWAAJSVwACUlgAAlJaAAJSWwACUpoAAlKcAAJSngACUqAAAlKjAAJSpAACUqUAAlKmAAJSpwACUqkAAlKrAAJSrAACUq0AAlKvAAJSsAACUu8AAlLxAAJS8wACUvUAAlL4AAJS+QACUvoAAlL7AAJS/AACUv4AAlMAAAJTAQACUwIAAlMEAAJTBQACU0QAAlNGAAJTSAACU0oAAlNNAAJTTgACU08AAlNQAAJTUQACU1MAAlNVAAJTVgACU1cAAlNZAAJTWgACU38AAlOjAAJTygACU+4AAlPxAAJT8wACU/UAAlP3AAJT+QACU/sAAlP8AAJT/wACVAwAAlQbAAJUHQACVB8AAlQhAAJUIwACVCUAAlQnAAJUKQACVDgAAlQ7AAJUPgACVEEAAlREAAJURwACVEoAAlRNAAJUTwACVI4AAlSQAAJUkgACVJQAAlSXAAJUmAACVJkAAlSaAAJUmwACVJ0AAlSfAAJUoAACVKEAAlSjAAJUpAACVOMAAlTlAAJU5wACVOkAAlTsAAJU7QACVO4AAlTvAAJU8AACVPIAAlT0AAJU9QACVPYAAlT4AAJU+QACVTgAAlU6AAJVPAACVT4AAlVBAAJVQgACVUMAAlVEAAJVRQACVUcAAlVJAAJVSgACVUsAAlVNAAJVTgACVY0AAlWPAAJVkQACVZMAAlWWAAJVlwACVZgAAlWZAAJVmgACVZwAAlWeAAJVnwACVaAAAlWiAAJVowACVeIAAlXkAAJV5gACVegAAlXrAAJV7AACVe0AAlXuAAJV7wACVfEAAlXzAAJV9AACVfUAAlX3AAJV+AACVjcAAlY5AAJWOwACVj0AAlZAAAJWQQACVkIAAlZDAAJWRAACVkYAAlZIAAJWSQACVkoAAlZMAAJWTQACVowAAlaOAAJWkAACVpIAAlaVAAJWlgACVpcAAlaYAAJWmQACVpsAAladAAJWngACVp8AAlahAAJWogACVu0AAlcQAAJXMAACV1AAAldSAAJXVAACV1YAAldYAAJXWwACV1wAAlddAAJXYAACV2EAAldjAAJXZAACV2cAAldqAAJXawACV2wAAldvAAJXcAACV3UAAleCAAJXhwACV4kAAleMAAJXkQACV5QAAleXAAJXmQACV74AAlfiAAJYCQACWC0AAlgwAAJYMgACWDQAAlg2AAJYOAACWDoAAlg7AAJYPgACWEsAAlhcAAJYXgACWGAAAlhiAAJYZAACWGYAAlhoAAJYagACWGwAAlh9AAJYgAACWIMAAliGAAJYiQACWIwAAliPAAJYkgACWJUAAliXAAJY1gACWNgAAljaAAJY3AACWN8AAljgAAJY4QACWOIAAljjAAJY5QACWOcAAljoAAJY6QACWOsAAljsAAJZKwACWS0AAlkvAAJZMQACWTQAAlk1AAJZNgACWTcAAlk4AAJZOgACWTwAAlk9AAJZPgACWUAAAllBAAJZgAACWYIAAlmFAAJZhwACWYoAAlmLAAJZjAACWY0AAlmOAAJZkAACWZIAAlmTAAJZlAACWZYAAlmXAAJZpAACWaUAAlmmAAJZqAACWecAAlnpAAJZ6wACWe0AAlnwAAJZ8QACWfIAAlnzAAJZ9AACWfYAAln4AAJZ+QACWfoAAln8AAJZ/QACWjwAAlo+AAJaQAACWkIAAlpFAAJaRgACWkcAAlpIAAJaSQACWksAAlpNAAJaTgACWk8AAlpRAAJaUgACWpEAAlqTAAJalQACWpcAAlqaAAJamwACWpwAAlqdAAJangACWqAAAlqiAAJaowACWqQAAlqmAAJapwACWuYAAlroAAJa6gACWuwAAlrvAAJa8AACWvEAAlryAAJa8wACWvUAAlr3AAJa+AACWvkAAlr7AAJa/AACWzsAAls9AAJbPwACW0EAAltEAAJbRQACW0YAAltHAAJbSAACW0oAAltMAAJbTQACW04AAltQAAJbUQACW3YAAluaAAJbwQACW+UAAlvoAAJb6wACW+0AAlvvAAJb8QACW/MAAlv0AAJb9wACXAQAAlwTAAJcFgACXBkAAlwcAAJcHwACXCIAAlwlAAJcKAACXDcAAlw6AAJcPQACXEAAAlxDAAJcRgACXEkAAlxMAAJcTgACXI0AAlyPAAJckgACXJQAAlyXAAJcmAACXJkAAlyaAAJcmwACXJ0AAlygAAJcoQACXKIAAlykAAJcpQACXOQAAlzmAAJc6QACXOsAAlzuAAJc7wACXPAAAlzxAAJc8gACXPQAAlz3AAJc+AACXPkAAlz7AAJc/AACXTsAAl09AAJdQAACXUIAAl1FAAJdRgACXUcAAl1IAAJdSQACXUsAAl1OAAJdTwACXVAAAl1SAAJdUwACXZIAAl2UAAJdlwACXZkAAl2cAAJdnQACXZ4AAl2fAAJdoAACXaIAAl2lAAJdpgACXacAAl2pAAJdqgACXekAAl3rAAJd7QACXe8AAl3yAAJd8wACXfQAAl31AAJd9gACXfgAAl37AAJd/AACXf0AAl3/AAJeAAACXj8AAl5BAAJeQwACXkUAAl5IAAJeSQACXkoAAl5LAAJeTAACXk4AAl5RAAJeUgACXlMAAl5VAAJeVgACXpUAAl6XAAJemgACXpwAAl6fAAJeoAACXqEAAl6iAAJeowACXqUAAl6oAAJeqQACXqoAAl6sAAJerQACXvgAAl8bAAJfOwACX1sAAl9dAAJfXwACX2EAAl9jAAJfZgACX2cAAl9oAAJfawACX2wAAl9uAAJfbwACX3EAAl90AAJfdQACX3YAAl95AAJfegACX38AAl+MAAJfkQACX5MAAl+VAAJfmgACX50AAl+gAAJfogACX8cAAl/rAAJgEgACYDYAAmA5AAJgOwACYD0AAmA/AAJgQQACYEMAAmBEAAJgRwACYFQAAmBlAAJgZwACYGkAAmBrAAJgbQACYG8AAmBxAAJgcwACYHUAAmCGAAJgiQACYIwAAmCPAAJgkgACYJUAAmCYAAJgmwACYJ4AAmCgAAJg3wACYOEAAmDjAAJg5QACYOgAAmDpAAJg6gACYOsAAmDsAAJg7gACYPAAAmDxAAJg8gACYPQAAmD1AAJhNAACYTYAAmE4AAJhOgACYT0AAmE+AAJhPwACYUAAAmFBAAJhQwACYUUAAmFGAAJhRwACYUkAAmFKAAJhiQACYYsAAmGOAAJhkAACYZMAAmGUAAJhlQACYZYAAmGXAAJhmQACYZsAAmGcAAJhnQACYZ8AAmGgAAJhrQACYa4AAmGvAAJhsQACYfAAAmHyAAJh9AACYfYAAmH5AAJh+gACYfsAAmH8AAJh/QACYf8AAmIBAAJiAgACYgMAAmIFAAJiBgACYkUAAmJHAAJiSQACYksAAmJOAAJiTwACYlAAAmJRAAJiUgACYlQAAmJWAAJiVwACYlgAAmJaAAJiWwACYpoAAmKcAAJingACYqAAAmKjAAJipAACYqUAAmKmAAJipwACYqkAAmKrAAJirAACYq0AAmKvAAJisAACYu8AAmLxAAJi8wACYvUAAmL4AAJi+QACYvoAAmL7AAJi/AACYv4AAmMAAAJjAQACYwIAAmMEAAJjBQACY0QAAmNGAAJjSAACY0oAAmNNAAJjTgACY08AAmNQAAJjUQACY1MAAmNVAAJjVgACY1cAAmNZAAJjWgACY38AAmOjAAJjygACY+4AAmPxAAJj8wACY/UAAmP3AAJj+QACY/sAAmP8AAJj/wACZAwAAmQbAAJkHQACZB8AAmQhAAJkIwACZCUAAmQnAAJkKQACZDgAAmQ7AAJkPgACZEEAAmREAAJkRwACZEoAAmRNAAJkTwACZI4AAmSQAAJkkwACZJUAAmSYAAJkmQACZJoAAmSbAAJknAACZJ4AAmSgAAJkoQACZKIAAmSkAAJkpQACZOQAAmTmAAJk6AACZOoAAmTtAAJk7gACZO8AAmTwAAJk8QACZPMAAmT1AAJk9gACZPcAAmT5AAJk+gACZTkAAmU7AAJlPgACZUAAAmVDAAJlRAACZUUAAmVGAAJlRwACZUkAAmVLAAJlTAACZU0AAmVPAAJlUAACZY8AAmWRAAJllAACZZYAAmWZAAJlmgACZZsAAmWcAAJlnQACZZ8AAmWhAAJlogACZaMAAmWlAAJlpgACZeUAAmXnAAJl6QACZesAAmXuAAJl7wACZfAAAmXxAAJl8gACZfQAAmX2AAJl9wACZfgAAmX6AAJl+wACZjoAAmY8AAJmPgACZkAAAmZDAAJmRAACZkUAAmZGAAJmRwACZkkAAmZLAAJmTAACZk0AAmZPAAJmUAACZo8AAmaRAAJmkwACZpUAAmaYAAJmmQACZpoAAmabAAJmnAACZp4AAmagAAJmoQACZqIAAmakAAJmpQACZq4AAmavAAJmsQACZvAAAmbyAAJm9AACZvYAAmb5AAJm+gACZvsAAmb8AAJm/QACZv8AAmcCAAJnAwACZwQAAmcGAAJnBwACZ0YAAmdIAAJnSgACZ0wAAmdPAAJnUAACZ1EAAmdSAAJnUwACZ1UAAmdYAAJnWQACZ1oAAmdcAAJnXQACZ5wAAmeeAAJnoQACZ6MAAmemAAJnpwACZ6gAAmepAAJnqgACZ6wAAmevAAJnsAACZ7EAAmezAAJntAACZ70AAmfAAAJnwwACZ8UAAmgIAAJoLAACaFAAAmhzAAJomgACaLoAAmjhAAJpCAACaSgAAmlMAAJpcAACaXIAAml1AAJpdwACaXkAAml7AAJpfgACaYEAAmmDAAJphQACaYgAAmmKAAJpjAACaY8AAmmSAAJpkwACaZwAAmmpAAJprAACaa4AAmmxAAJptAACabYAAmnbAAJp/wACaiYAAmpKAAJqTQACak8AAmpRAAJqUwACalUAAmpXAAJqWAACalsAAmpoAAJqeQACansAAmp9AAJqfwACaoEAAmqDAAJqhQACaocAAmqJAAJqmgACap0AAmqgAAJqowACaqYAAmqpAAJqrAACaq8AAmqyAAJqtAACavMAAmr1AAJq+AACavoAAmr9AAJq/gACav8AAmsAAAJrAQACawMAAmsFAAJrBgACawcAAmsJAAJrCgACaxMAAmsUAAJrFgACa1UAAmtXAAJrWQACa1sAAmteAAJrXwACa2AAAmthAAJrYgACa2QAAmtmAAJrZwACa2gAAmtqAAJrawACa6oAAmusAAJrrgACa7AAAmuzAAJrtAACa7UAAmu2AAJrtwACa7kAAmu7AAJrvAACa70AAmu/AAJrwAACa/8AAmwBAAJsBAACbAYAAmwJAAJsCgACbAsAAmwMAAJsDQACbA8AAmwRAAJsEgACbBMAAmwVAAJsFgACbB8AAmwgAAJsIgACbGEAAmxjAAJsZQACbGcAAmxqAAJsawACbGwAAmxtAAJsbgACbHAAAmxyAAJscwACbHQAAmx2AAJsdwACbLYAAmy4AAJsuwACbL0AAmzAAAJswQACbMIAAmzDAAJsxAACbMYAAmzIAAJsyQACbMoAAmzMAAJszQACbNoAAmzbAAJs3AACbN4AAm0dAAJtHwACbSEAAm0jAAJtJgACbScAAm0oAAJtKQACbSoAAm0sAAJtLgACbS8AAm0wAAJtMgACbTMAAm1yAAJtdAACbXcAAm15AAJtfAACbX0AAm1+AAJtfwACbYAAAm2CAAJthAACbYUAAm2GAAJtiAACbYkAAm2dAAJtqgACbeEAAm3kAAJt5wACbeoAAm3tAAJt8AACbfMAAm32AAJt+QACbfwAAm3/AAJuAgACbgUAAm4IAAJuCwACbg4AAm4RAAJuFAACbhcAAm4aAAJuHQACbiAAAm4jAAJuJgACbikAAm4sAAJuLwACbmYAAm5pAAJubAACbm8AAm5yAAJudQACbngAAm57AAJufgACboEAAm6EAAJuhwACbooAAm6NAAJukAACbpMAAm6WAAJumQACbpwAAm6fAAJuogACbqUAAm6oAAJuqwACbq4AAm6xAAJutAACbrYAAm7FAAJu3AACbvQAAm8BAAJvDwACbxkAAm8xAAJvOwACb00AAm9kAAJvdgACb4sAAm+VAAJvqQACb7QAAm/LAAJv4QACb/MAAnABAAJwDwACcBkAAnA4AAJwRQACcFEAAnBkAAJwcAACcLsAAnDeAAJw/gACcR4AAnEgAAJxIgACcSQAAnEmAAJxKQACcSoAAnErAAJxLgACcS8AAnExAAJxMgACcTQAAnE3AAJxOAACcTkAAnE8AAJxPQACcUIAAnFPAAJxVAACcVYAAnFYAAJxXQACcWAAAnFjAAJxZQACcYoAAnGuAAJx1QACcfkAAnH8AAJx/gACcgAAAnICAAJyBAACcgYAAnIHAAJyCgACchcAAnIoAAJyKgACciwAAnIuAAJyMAACcjIAAnI0AAJyNgACcjgAAnJJAAJyTAACck8AAnJSAAJyVQACclgAAnJbAAJyXgACcmEAAnJjAAJyogACcqQAAnKmAAJyqAACcqsAAnKsAAJyrQACcq4AAnKvAAJysQACcrMAAnK0AAJytQACcrcAAnK4AAJy9wACcvkAAnL7AAJy/QACcwAAAnMBAAJzAgACcwMAAnMEAAJzBgACcwgAAnMJAAJzCgACcwwAAnMNAAJzTAACc04AAnNRAAJzUwACc1YAAnNXAAJzWAACc1kAAnNaAAJzXAACc14AAnNfAAJzYAACc2IAAnNjAAJzcAACc3EAAnNyAAJzdAACc7MAAnO1AAJztwACc7kAAnO8AAJzvQACc74AAnO/AAJzwAACc8IAAnPEAAJzxQACc8YAAnPIAAJzyQACdAgAAnQKAAJ0DAACdA4AAnQRAAJ0EgACdBMAAnQUAAJ0FQACdBcAAnQZAAJ0GgACdBsAAnQdAAJ0HgACdF0AAnRfAAJ0YQACdGMAAnRmAAJ0ZwACdGgAAnRpAAJ0agACdGwAAnRuAAJ0bwACdHAAAnRyAAJ0cwACdLIAAnS0AAJ0tgACdLgAAnS7AAJ0vAACdL0AAnS+AAJ0vwACdMEAAnTDAAJ0xAACdMUAAnTHAAJ0yAACdQcAAnUJAAJ1CwACdQ0AAnUQAAJ1EQACdRIAAnUTAAJ1FAACdRYAAnUYAAJ1GQACdRoAAnUcAAJ1HQACdUIAAnVmAAJ1jQACdbEAAnW0AAJ1tgACdbgAAnW6AAJ1vAACdb4AAnW/AAJ1wgACdc8AAnXeAAJ14AACdeIAAnXkAAJ15gACdegAAnXqAAJ17AACdfsAAnX+AAJ2AQACdgQAAnYHAAJ2CgACdg0AAnYQAAJ2EgACdlEAAnZTAAJ2VQACdlcAAnZaAAJ2WwACdlwAAnZdAAJ2XgACdmAAAnZiAAJ2YwACdmQAAnZmAAJ2ZwACdqYAAnaoAAJ2qgACdqwAAnavAAJ2sAACdrEAAnayAAJ2swACdrUAAna3AAJ2uAACdrkAAna7AAJ2vAACdvsAAnb9AAJ2/wACdwEAAncEAAJ3BQACdwYAAncHAAJ3CAACdwoAAncMAAJ3DQACdw4AAncQAAJ3EQACd1AAAndSAAJ3VAACd1YAAndZAAJ3WgACd1sAAndcAAJ3XQACd18AAndhAAJ3YgACd2MAAndlAAJ3ZgACd6UAAnenAAJ3qQACd6sAAneuAAJ3rwACd7AAAnexAAJ3sgACd7QAAne2AAJ3twACd7gAAne6AAJ3uwACd/oAAnf8AAJ3/gACeAAAAngDAAJ4BAACeAUAAngGAAJ4BwACeAkAAngLAAJ4DAACeA0AAngPAAJ4EAACeE8AAnhRAAJ4UwACeFUAAnhYAAJ4WQACeFoAAnhbAAJ4XAACeF4AAnhgAAJ4YQACeGIAAnhkAAJ4ZQACeLAAAnjTAAJ48wACeRMAAnkVAAJ5FwACeRkAAnkbAAJ5HgACeR8AAnkgAAJ5IwACeSQAAnkmAAJ5JwACeSkAAnksAAJ5LQACeS4AAnkxAAJ5MgACeTcAAnlEAAJ5SQACeUsAAnlNAAJ5UgACeVUAAnlYAAJ5WgACeX8AAnmjAAJ5ygACee4AAnnxAAJ58wACefUAAnn3AAJ5+QACefsAAnn8AAJ5/wACegwAAnodAAJ6HwACeiEAAnojAAJ6JQACeicAAnopAAJ6KwACei0AAno+AAJ6QQACekQAAnpHAAJ6SgACek0AAnpQAAJ6UwACelYAAnpYAAJ6lwACepkAAnqbAAJ6nQACeqAAAnqhAAJ6ogACeqMAAnqkAAJ6pgACeqgAAnqpAAJ6qgACeqwAAnqtAAJ67AACeu4AAnrwAAJ68gACevUAAnr2AAJ69wACevgAAnr5AAJ6+wACev0AAnr+AAJ6/wACewEAAnsCAAJ7QQACe0MAAntGAAJ7SAACe0sAAntMAAJ7TQACe04AAntPAAJ7UQACe1MAAntUAAJ7VQACe1cAAntYAAJ7ZQACe2YAAntnAAJ7aQACe6gAAnuqAAJ7rAACe64AAnuxAAJ7sgACe7MAAnu0AAJ7tQACe7cAAnu5AAJ7ugACe7sAAnu9AAJ7vgACe/0AAnv/AAJ8AQACfAMAAnwGAAJ8BwACfAgAAnwJAAJ8CgACfAwAAnwOAAJ8DwACfBAAAnwSAAJ8EwACfFIAAnxUAAJ8VgACfFgAAnxbAAJ8XAACfF0AAnxeAAJ8XwACfGEAAnxjAAJ8ZAACfGUAAnxnAAJ8aAACfKcAAnypAAJ8qwACfK0AAnywAAJ8sQACfLIAAnyzAAJ8tAACfLYAAny4AAJ8uQACfLoAAny8AAJ8vQACfPwAAnz+AAJ9AAACfQIAAn0FAAJ9BgACfQcAAn0IAAJ9CQACfQsAAn0NAAJ9DgACfQ8AAn0RAAJ9EgACfTcAAn1bAAJ9ggACfaYAAn2pAAJ9qwACfa0AAn2vAAJ9sQACfbMAAn20AAJ9twACfcQAAn3TAAJ91QACfdcAAn3ZAAJ92wACfd0AAn3fAAJ94QACffAAAn3zAAJ99gACffkAAn38AAJ9/wACfgIAAn4FAAJ+BwACfkYAAn5IAAJ+SgACfkwAAn5PAAJ+UAACflEAAn5SAAJ+UwACflUAAn5XAAJ+WAACflkAAn5bAAJ+XAACfpsAAn6dAAJ+nwACfqEAAn6kAAJ+pQACfqYAAn6nAAJ+qAACfqoAAn6sAAJ+rQACfq4AAn6wAAJ+sQACfvAAAn7yAAJ+9AACfvYAAn75AAJ++gACfvsAAn78AAJ+/QACfv8AAn8BAAJ/AgACfwMAAn8FAAJ/BgACf0UAAn9HAAJ/SQACf0sAAn9OAAJ/TwACf1AAAn9RAAJ/UgACf1QAAn9WAAJ/VwACf1gAAn9aAAJ/WwACf5oAAn+cAAJ/ngACf6AAAn+jAAJ/pAACf6UAAn+mAAJ/pwACf6kAAn+rAAJ/rAACf60AAn+vAAJ/sAACf+8AAn/xAAJ/8wACf/UAAn/4AAJ/+QACf/oAAn/7AAJ//AACf/4AAoAAAAKAAQACgAIAAoAEAAKABQACgEQAAoBGAAKASAACgEoAAoBNAAKATgACgE8AAoBQAAKAUQACgFMAAoBVAAKAVgACgFcAAoBZAAKAWgACgKUAAoDIAAKA6AACgQgAAoEKAAKBDAACgQ4AAoEQAAKBEwACgRQAAoEVAAKBGAACgRkAAoEbAAKBHAACgR4AAoEhAAKBIgACgSMAAoEmAAKBJwACgSwAAoE5AAKBPgACgUAAAoFCAAKBRwACgUoAAoFNAAKBTwACgXQAAoGYAAKBvwACgeMAAoHmAAKB6AACgeoAAoHsAAKB7gACgfAAAoHxAAKB9AACggEAAoISAAKCFAACghYAAoIYAAKCGgACghwAAoIeAAKCIAACgiIAAoIzAAKCNgACgjkAAoI8AAKCPwACgkIAAoJFAAKCSAACgksAAoJNAAKCjAACgo4AAoKQAAKCkgACgpUAAoKWAAKClwACgpgAAoKZAAKCmwACgp0AAoKeAAKCnwACgqEAAoKiAAKC4QACguMAAoLlAAKC5wACguoAAoLrAAKC7AACgu0AAoLuAAKC8AACgvIAAoLzAAKC9AACgvYAAoL3AAKDNgACgzgAAoM7AAKDPQACg0AAAoNBAAKDQgACg0MAAoNEAAKDRgACg0gAAoNJAAKDSgACg0wAAoNNAAKDWgACg1sAAoNcAAKDXgACg50AAoOfAAKDoQACg6MAAoOmAAKDpwACg6gAAoOpAAKDqgACg6wAAoOuAAKDrwACg7AAAoOyAAKDswACg/IAAoP0AAKD9gACg/gAAoP7AAKD/AACg/0AAoP+AAKD/wAChAEAAoQDAAKEBAAChAUAAoQHAAKECAAChEcAAoRJAAKESwAChE0AAoRQAAKEUQAChFIAAoRTAAKEVAAChFYAAoRYAAKEWQAChFoAAoRcAAKEXQAChJwAAoSeAAKEoAAChKIAAoSlAAKEpgAChKcAAoSoAAKEqQAChKsAAoStAAKErgAChK8AAoSxAAKEsgAChPEAAoTzAAKE9QAChPcAAoT6AAKE+wAChPwAAoT9AAKE/gAChQAAAoUCAAKFAwAChQQAAoUGAAKFBwAChSwAAoVQAAKFdwAChZsAAoWeAAKFoAAChaIAAoWkAAKFpgAChagAAoWpAAKFrAAChbkAAoXIAAKFygAChcwAAoXOAAKF0AAChdIAAoXUAAKF1gACheUAAoXoAAKF6wAChe4AAoXxAAKF9AAChfcAAoX6AAKF/AAChjsAAoY9AAKGPwAChkEAAoZEAAKGRQAChkYAAoZHAAKGSAAChkoAAoZMAAKGTQAChk4AAoZQAAKGUQAChpAAAoaSAAKGlAAChpYAAoaZAAKGmgAChpsAAoacAAKGnQAChp8AAoahAAKGogAChqMAAoalAAKGpgAChuUAAobnAAKG6QAChusAAobuAAKG7wAChvAAAobxAAKG8gAChvQAAob2AAKG9wAChvgAAob6AAKG+wAChzoAAoc8AAKHPwACh0EAAodEAAKHRQACh0YAAodHAAKHSAACh0oAAodMAAKHTQACh04AAodQAAKHUQACh5AAAoeSAAKHlAACh5YAAoeZAAKHmgACh5sAAoecAAKHnQACh58AAoehAAKHogACh6MAAoelAAKHpgACh+UAAofnAAKH6QACh+sAAofuAAKH7wACh/AAAofxAAKH8gACh/QAAof2AAKH9wACh/gAAof6AAKH+wACiDoAAog8AAKIPgACiEAAAohDAAKIRAACiEUAAohGAAKIRwACiEkAAohLAAKITAACiE0AAohPAAKIUAACiJsAAoi+AAKI3gACiP4AAokAAAKJAgACiQQAAokGAAKJCQACiQoAAokLAAKJDgACiQ8AAokRAAKJEgACiRQAAokXAAKJGAACiRkAAokcAAKJHQACiSIAAokvAAKJNAACiTYAAok4AAKJPQACiUAAAolDAAKJRQACiWoAAomOAAKJtQACidkAAoncAAKJ3gACieAAAoniAAKJ5AACieYAAonnAAKJ6gACifcAAooIAAKKCgACigwAAooOAAKKEAACihIAAooUAAKKFgACihgAAoopAAKKLAACii8AAooyAAKKNQACijgAAoo7AAKKPgACikEAAopDAAKKggACioQAAoqGAAKKiAACiosAAoqMAAKKjQACio4AAoqPAAKKkQACipMAAoqUAAKKlQACipcAAoqYAAKK1wACitkAAorbAAKK3QACiuAAAorhAAKK4gACiuMAAorkAAKK5gACiugAAorpAAKK6gACiuwAAortAAKLLAACiy4AAosxAAKLMwACizYAAos3AAKLOAACizkAAos6AAKLPAACiz4AAos/AAKLQAACi0IAAotDAAKLUAACi1EAAotSAAKLVAACi5MAAouVAAKLlwACi5kAAoucAAKLnQACi54AAoufAAKLoAACi6IAAoukAAKLpQACi6YAAouoAAKLqQACi+gAAovqAAKL7AACi+4AAovxAAKL8gACi/MAAov0AAKL9QACi/cAAov5AAKL+gACi/sAAov9AAKL/gACjD0AAow/AAKMQQACjEMAAoxGAAKMRwACjEgAAoxJAAKMSgACjEwAAoxOAAKMTwACjFAAAoxSAAKMUwACjJIAAoyUAAKMlgACjJgAAoybAAKMnAACjJ0AAoyeAAKMnwACjKEAAoyjAAKMpAACjKUAAoynAAKMqAACjOcAAozpAAKM6wACjO0AAozwAAKM8QACjPIAAozzAAKM9AACjPYAAoz4AAKM+QACjPoAAoz8AAKM/QACjSIAAo1GAAKNbQACjZEAAo2UAAKNlgACjZgAAo2aAAKNnAACjZ4AAo2fAAKNogACja8AAo2+AAKNwAACjcIAAo3EAAKNxgACjcgAAo3KAAKNzAACjdsAAo3eAAKN4QACjeQAAo3nAAKN6gACje0AAo3wAAKN8gACjjEAAo4zAAKONQACjjcAAo46AAKOOwACjjwAAo49AAKOPgACjkAAAo5CAAKOQwACjkQAAo5GAAKORwACjoYAAo6IAAKOigACjowAAo6PAAKOkAACjpEAAo6SAAKOkwACjpUAAo6XAAKOmAACjpkAAo6bAAKOnAACjtsAAo7dAAKO3wACjuEAAo7kAAKO5QACjuYAAo7nAAKO6AACjuoAAo7sAAKO7QACju4AAo7wAAKO8QACjzAAAo8yAAKPNQACjzcAAo86AAKPOwACjzwAAo89AAKPPgACj0AAAo9CAAKPQwACj0QAAo9GAAKPRwACj4YAAo+IAAKPigACj4wAAo+PAAKPkAACj5EAAo+SAAKPkwACj5UAAo+XAAKPmAACj5kAAo+bAAKPnAACj9sAAo/dAAKP3wACj+EAAo/kAAKP5QACj+YAAo/nAAKP6AACj+oAAo/sAAKP7QACj+4AAo/wAAKP8QACkDAAApAyAAKQNAACkDYAApA5AAKQOgACkDsAApA8AAKQPQACkD8AApBBAAKQQgACkEMAApBFAAKQRgACkJEAApC0AAKQ1AACkPQAApD2AAKQ+AACkPoAApD8AAKQ/wACkQAAApEBAAKRBAACkQUAApEHAAKRCAACkQoAApENAAKRDgACkQ8AApESAAKREwACkRgAApElAAKRKgACkSwAApEuAAKRMwACkTYAApE5AAKROwACkWAAApGEAAKRqwACkc8AApHSAAKR1AACkdYAApHYAAKR2gACkdwAApHdAAKR4AACke0AApH+AAKSAAACkgIAApIEAAKSBgACkggAApIKAAKSDAACkg4AApIfAAKSIgACkiUAApIoAAKSKwACki4AApIxAAKSNAACkjcAApI5AAKSeAACknoAApJ8AAKSfgACkoEAApKCAAKSgwACkoQAApKFAAKShwACkokAApKKAAKSiwACko0AApKOAAKSzQACks8AApLRAAKS0wACktYAApLXAAKS2AACktkAApLaAAKS3AACkt4AApLfAAKS4AACkuIAApLjAAKTIgACkyQAApMnAAKTKQACkywAApMtAAKTLgACky8AApMwAAKTMgACkzQAApM1AAKTNgACkzgAApM5AAKTRgACk0cAApNIAAKTSgACk4kAApOLAAKTjQACk48AApOSAAKTkwACk5QAApOVAAKTlgACk5gAApOaAAKTmwACk5wAApOeAAKTnwACk94AApPgAAKT4gACk+QAApPnAAKT6AACk+kAApPqAAKT6wACk+0AApPvAAKT8AACk/EAApPzAAKT9AAClDMAApQ1AAKUNwAClDkAApQ8AAKUPQAClD4AApQ/AAKUQAAClEIAApREAAKURQAClEYAApRIAAKUSQAClIgAApSKAAKUjAAClI4AApSRAAKUkgAClJMAApSUAAKUlQAClJcAApSZAAKUmgAClJsAApSdAAKUngAClN0AApTfAAKU4QAClOMAApTmAAKU5wAClOgAApTpAAKU6gAClOwAApTuAAKU7wAClPAAApTyAAKU8wAClRgAApU8AAKVYwAClYcAApWKAAKVjAAClY4AApWQAAKVkgAClZQAApWVAAKVmAAClaUAApW0AAKVtgAClbgAApW6AAKVvAAClb4AApXAAAKVwgACldEAApXUAAKV1wACldoAApXdAAKV4AACleMAApXmAAKV6AAClicAApYpAAKWKwACli0AApYwAAKWMQACljIAApYzAAKWNAACljYAApY4AAKWOQACljoAApY8AAKWPQAClnwAApZ+AAKWgAACloIAApaFAAKWhgAClocAApaIAAKWiQAClosAApaNAAKWjgAClo8AApaRAAKWkgACltEAApbTAAKW1QACltcAApbaAAKW2wACltwAApbdAAKW3gACluAAApbiAAKW4wACluQAApbmAAKW5wAClyYAApcoAAKXKgAClywAApcvAAKXMAAClzEAApcyAAKXMwAClzUAApc3AAKXOAAClzkAApc7AAKXPAACl3sAApd9AAKXfwACl4EAApeEAAKXhQACl4YAApeHAAKXiAACl4oAApeMAAKXjQACl44AApeQAAKXkQACl9AAApfSAAKX1AACl9YAApfZAAKX2gACl9sAApfcAAKX3QACl98AApfhAAKX4gACl+MAApflAAKX5gACmCUAApgnAAKYKQACmCsAApguAAKYLwACmDAAApgxAAKYMgACmDQAApg2AAKYNwACmDgAApg6AAKYOwACmIYAApipAAKYyQACmOkAApjrAAKY7QACmO8AApjxAAKY9AACmPUAApj2AAKY+QACmPoAApj8AAKY/QACmP8AApkCAAKZAwACmQQAApkHAAKZCAACmQ0AApkaAAKZHwACmSEAApkjAAKZKAACmSsAApkuAAKZMAACmVUAApl5AAKZoAACmcQAApnHAAKZyQACmcsAApnNAAKZzwACmdEAApnSAAKZ1QACmeIAApnzAAKZ9QACmfcAApn5AAKZ+wACmf0AApn/AAKaAQACmgMAApoUAAKaFwACmhoAApodAAKaIAACmiMAApomAAKaKQACmiwAApouAAKabQACmm8AAppxAAKacwACmnYAApp3AAKaeAACmnkAApp6AAKafAACmn4AApp/AAKagAACmoIAApqDAAKawgACmsQAAprGAAKayAACmssAAprMAAKazQACms4AAprPAAKa0QACmtMAAprUAAKa1QACmtcAAprYAAKbFwACmxkAApscAAKbHgACmyEAApsiAAKbIwACmyQAApslAAKbJwACmykAApsqAAKbKwACmy0AApsuAAKbOwACmzwAAps9AAKbPwACm34AApuAAAKbggACm4QAApuHAAKbiAACm4kAApuKAAKbiwACm40AApuPAAKbkAACm5EAApuTAAKblAACm9MAApvVAAKb1wACm9kAApvcAAKb3QACm94AApvfAAKb4AACm+IAApvkAAKb5QACm+YAApvoAAKb6QACnCgAApwqAAKcLAACnC4AApwxAAKcMgACnDMAApw0AAKcNQACnDcAApw5AAKcOgACnDsAApw9AAKcPgACnH0AApx/AAKcgQACnIMAApyGAAKchwACnIgAApyJAAKcigACnIwAApyOAAKcjwACnJAAApySAAKckwACnNIAApzUAAKc1gACnNgAApzbAAKc3AACnN0AApzeAAKc3wACnOEAApzjAAKc5AACnOUAApznAAKc6AACnQ0AAp0xAAKdWAACnXwAAp1/AAKdgQACnYMAAp2FAAKdhwACnYkAAp2KAAKdjQACnZoAAp2pAAKdqwACna0AAp2vAAKdsQACnbMAAp21AAKdtwACncYAAp3JAAKdzAACnc8AAp3SAAKd1QACndgAAp3bAAKd3QACnhwAAp4eAAKeIAACniIAAp4lAAKeJgACnicAAp4oAAKeKQACnisAAp4tAAKeLgACni8AAp4xAAKeMgACnnEAAp5zAAKedQACnncAAp56AAKeewACnnwAAp59AAKefgACnoAAAp6CAAKegwACnoQAAp6GAAKehwACnsYAAp7IAAKeygACnswAAp7PAAKe0AACntEAAp7SAAKe0wACntUAAp7XAAKe2AACntkAAp7bAAKe3AACnxsAAp8dAAKfHwACnyEAAp8kAAKfJQACnyYAAp8nAAKfKAACnyoAAp8sAAKfLQACny4AAp8wAAKfMQACn3AAAp9yAAKfdAACn3YAAp95AAKfegACn3sAAp98AAKffQACn38AAp+BAAKfggACn4MAAp+FAAKfhgACn8UAAp/HAAKfyQACn8sAAp/OAAKfzwACn9AAAp/RAAKf0gACn9QAAp/WAAKf1wACn9gAAp/aAAKf2wACoBoAAqAcAAKgHgACoCAAAqAjAAKgJAACoCUAAqAmAAKgJwACoCkAAqArAAKgLAACoC0AAqAvAAKgMAACoHsAAqCeAAKgvgACoN4AAqDgAAKg4gACoOQAAqDmAAKg6QACoOoAAqDrAAKg7gACoO8AAqDxAAKg8gACoPQAAqD3AAKg+AACoPkAAqD8AAKg/QACoQIAAqEPAAKhFAACoRYAAqEYAAKhHQACoSAAAqEjAAKhJQACoUoAAqFuAAKhlQACobkAAqG8AAKhvgACocAAAqHCAAKhxAACocYAAqHHAAKhygACodcAAqHoAAKh6gACoewAAqHuAAKh8AACofIAAqH0AAKh9gACofgAAqIJAAKiDAACog8AAqISAAKiFQACohgAAqIbAAKiHgACoiEAAqIjAAKiYgAComQAAqJmAAKiaAAComsAAqJsAAKibQACom4AAqJvAAKicQAConMAAqJ0AAKidQAConcAAqJ4AAKitwACorkAAqK7AAKivQACosAAAqLBAAKiwgACosMAAqLEAAKixgACosgAAqLJAAKiygACoswAAqLNAAKjDAACow4AAqMRAAKjEwACoxYAAqMXAAKjGAACoxkAAqMaAAKjHAACox4AAqMfAAKjIAACoyIAAqMjAAKjMAACozEAAqMyAAKjNAACo3MAAqN1AAKjdwACo3kAAqN8AAKjfQACo34AAqN/AAKjgAACo4IAAqOEAAKjhQACo4YAAqOIAAKjiQACo8gAAqPKAAKjzAACo84AAqPRAAKj0gACo9MAAqPUAAKj1QACo9cAAqPZAAKj2gACo9sAAqPdAAKj3gACpB0AAqQfAAKkIQACpCMAAqQmAAKkJwACpCgAAqQpAAKkKgACpCwAAqQuAAKkLwACpDAAAqQyAAKkMwACpHIAAqR0AAKkdgACpHgAAqR7AAKkfAACpH0AAqR+AAKkfwACpIEAAqSDAAKkhAACpIUAAqSHAAKkiAACpMcAAqTJAAKkywACpM0AAqTQAAKk0QACpNIAAqTTAAKk1AACpNYAAqTYAAKk2QACpNoAAqTcAAKk3QACpQIAAqUmAAKlTQACpXEAAqV0AAKldgACpXgAAqV6AAKlfAACpX4AAqV/AAKlggACpY8AAqWeAAKloAACpaIAAqWkAAKlpgACpagAAqWqAAKlrAACpbsAAqW+AAKlwQACpcQAAqXHAAKlygACpc0AAqXQAAKl0gACphEAAqYTAAKmFgACphgAAqYbAAKmHAACph0AAqYeAAKmHwACpiEAAqYjAAKmJAACpiUAAqYnAAKmKAACpmcAAqZpAAKmawACpm0AAqZwAAKmcQACpnIAAqZzAAKmdAACpnYAAqZ4AAKmeQACpnoAAqZ8AAKmfQACprwAAqa+AAKmwAACpsIAAqbFAAKmxgACpscAAqbIAAKmyQACpssAAqbNAAKmzgACps8AAqbRAAKm0gACpxEAAqcTAAKnFgACpxgAAqcbAAKnHAACpx0AAqceAAKnHwACpyEAAqcjAAKnJAACpyUAAqcnAAKnKAACpysAAqdqAAKnbAACp24AAqdwAAKncwACp3QAAqd1AAKndgACp3cAAqd5AAKnewACp3wAAqd9AAKnfwACp4AAAqe/AAKnwQACp8MAAqfFAAKnyAACp8kAAqfKAAKnywACp8wAAqfOAAKn0AACp9EAAqfSAAKn1AACp9UAAqgUAAKoFgACqBgAAqgaAAKoHQACqB4AAqgfAAKoIAACqCEAAqgjAAKoJQACqCYAAqgnAAKoKQACqCoAAqh1AAKomAACqLgAAqjYAAKo2gACqNwAAqjeAAKo4AACqOMAAqjkAAKo5QACqOgAAqjpAAKo6wACqOwAAqjuAAKo8QACqPIAAqjzAAKo9gACqPcAAqj8AAKpCQACqQ4AAqkQAAKpEgACqRcAAqkaAAKpHQACqR8AAqlEAAKpaAACqY8AAqmzAAKptgACqbgAAqm6AAKpvAACqb4AAqnAAAKpwQACqcQAAqnRAAKp4gACqeQAAqnmAAKp6AACqeoAAqnsAAKp7gACqfAAAqnyAAKqAwACqgYAAqoJAAKqDAACqg8AAqoSAAKqFQACqhgAAqobAAKqHQACqlwAAqpeAAKqYAACqmIAAqplAAKqZgACqmcAAqpoAAKqaQACqmsAAqptAAKqbgACqm8AAqpxAAKqcgACqrEAAqqzAAKqtQACqrcAAqq6AAKquwACqrwAAqq9AAKqvgACqsAAAqrCAAKqwwACqsQAAqrGAAKqxwACqwYAAqsIAAKrCwACqw0AAqsQAAKrEQACqxIAAqsTAAKrFAACqxYAAqsYAAKrGQACqxoAAqscAAKrHQACqyoAAqsrAAKrLAACqy4AAqttAAKrbwACq3EAAqtzAAKrdgACq3cAAqt4AAKreQACq3oAAqt8AAKrfgACq38AAquAAAKrggACq4MAAqvCAAKrxAACq8YAAqvIAAKrywACq8wAAqvNAAKrzgACq88AAqvRAAKr0wACq9QAAqvVAAKr1wACq9gAAqwXAAKsGQACrBsAAqwdAAKsIAACrCEAAqwiAAKsIwACrCQAAqwmAAKsKAACrCkAAqwqAAKsLAACrC0AAqxsAAKsbgACrHAAAqxyAAKsdQACrHYAAqx3AAKseAACrHkAAqx7AAKsfQACrH4AAqx/AAKsgQACrIIAAqzBAAKswwACrMUAAqzHAAKsygACrMsAAqzMAAKszQACrM4AAqzQAAKs0gACrNMAAqzUAAKs1gACrNcAAqz8AAKtIAACrUcAAq1rAAKtbgACrXAAAq1yAAKtdAACrXYAAq14AAKteQACrXwAAq2JAAKtmAACrZoAAq2cAAKtngACraAAAq2iAAKtpAACraYAAq21AAKtuAACrbsAAq2+AAKtwQACrcQAAq3HAAKtygACrcwAAq4LAAKuDQACrg8AAq4RAAKuFAACrhUAAq4WAAKuFwACrhgAAq4aAAKuHAACrh0AAq4eAAKuIAACriEAAq5gAAKuYgACrmQAAq5mAAKuaQACrmoAAq5rAAKubAACrm0AAq5vAAKucQACrnIAAq5zAAKudQACrnYAAq61AAKutwACrrkAAq67AAKuvgACrr8AAq7AAAKuwQACrsIAAq7EAAKuxgACrscAAq7IAAKuygACrssAAq8KAAKvDAACrw4AAq8QAAKvEwACrxQAAq8VAAKvFgACrxcAAq8ZAAKvGwACrxwAAq8dAAKvHwACryAAAq9fAAKvYQACr2MAAq9lAAKvaAACr2kAAq9qAAKvawACr2wAAq9uAAKvcAACr3EAAq9yAAKvdAACr3UAAq+0AAKvtgACr7gAAq+6AAKvvQACr74AAq+/AAKvwAACr8EAAq/DAAKvxQACr8YAAq/HAAKvyQACr8oAArAJAAKwCwACsA0AArAPAAKwEgACsBMAArAUAAKwFQACsBYAArAYAAKwGgACsBsAArAcAAKwHgACsB8AArBqAAKwjQACsK0AArDNAAKwzwACsNEAArDTAAKw1QACsNgAArDZAAKw2gACsN0AArDeAAKw4AACsOEAArDjAAKw5gACsOcAArDoAAKw6wACsOwAArDxAAKw/gACsQMAArEFAAKxBwACsQwAArEPAAKxEgACsRQAArE5AAKxXQACsYQAArGoAAKxqwACsa0AArGvAAKxsQACsbMAArG1AAKxtgACsbkAArHGAAKx1wACsdkAArHbAAKx3QACsd8AArHhAAKx4wACseUAArHnAAKx+AACsfsAArH+AAKyAQACsgQAArIHAAKyCgACsg0AArIQAAKyEgACslEAArJTAAKyVQACslcAArJaAAKyWwACslwAArJdAAKyXgACsmAAArJiAAKyYwACsmQAArJmAAKyZwACsqYAArKoAAKyqgACsqwAArKvAAKysAACsrEAArKyAAKyswACsrUAArK3AAKyuAACsrkAArK7AAKyvAACsvsAArL9AAKzAAACswIAArMFAAKzBgACswcAArMIAAKzCQACswsAArMNAAKzDgACsw8AArMRAAKzEgACsx8AArMgAAKzIQACsyMAArNiAAKzZAACs2YAArNoAAKzawACs2wAArNtAAKzbgACs28AArNxAAKzcwACs3QAArN1AAKzdwACs3gAArO3AAKzuQACs7sAArO9AAKzwAACs8EAArPCAAKzwwACs8QAArPGAAKzyAACs8kAArPKAAKzzAACs80AArQMAAK0DgACtBAAArQSAAK0FQACtBYAArQXAAK0GAACtBkAArQbAAK0HQACtB4AArQfAAK0IQACtCIAArRhAAK0YwACtGUAArRnAAK0agACtGsAArRsAAK0bQACtG4AArRwAAK0cgACtHMAArR0AAK0dgACtHcAArS2AAK0uAACtLoAArS8AAK0vwACtMAAArTBAAK0wgACtMMAArTFAAK0xwACtMgAArTJAAK0ywACtMwAArTxAAK1FQACtTwAArVgAAK1YwACtWUAArVnAAK1aQACtWsAArVtAAK1bgACtXEAArV+AAK1jQACtY8AArWRAAK1kwACtZUAArWXAAK1mQACtZsAArWqAAK1rQACtbAAArWzAAK1tgACtbkAArW8AAK1vwACtcEAArYAAAK2AgACtgQAArYGAAK2CQACtgoAArYLAAK2DAACtg0AArYPAAK2EQACthIAArYTAAK2FQACthYAArZVAAK2VwACtlkAArZbAAK2XgACtl8AArZgAAK2YQACtmIAArZkAAK2ZgACtmcAArZoAAK2agACtmsAAraqAAK2rAACtq4AArawAAK2swACtrQAAra1AAK2tgACtrcAAra5AAK2uwACtrwAAra9AAK2vwACtsAAArb/AAK3AQACtwMAArcFAAK3CAACtwkAArcKAAK3CwACtwwAArcOAAK3EAACtxEAArcSAAK3FAACtxUAArdUAAK3VgACt1gAArdaAAK3XQACt14AArdfAAK3YAACt2EAArdjAAK3ZQACt2YAArdnAAK3aQACt2oAArepAAK3qwACt60AArevAAK3sgACt7MAAre0AAK3tQACt7YAAre4AAK3ugACt7sAAre8AAK3vgACt78AArf+AAK4AAACuAIAArgEAAK4BwACuAgAArgJAAK4CgACuAsAArgNAAK4DwACuBAAArgRAAK4EwACuBQAArhfAAK4ggACuKIAArjCAAK4xAACuMYAArjIAAK4ygACuM0AArjOAAK4zwACuNIAArjTAAK41QACuNYAArjYAAK42wACuNwAArjdAAK44AACuOEAArjmAAK48wACuPgAArj6AAK4/AACuQEAArkEAAK5BwACuQkAArkuAAK5UgACuXkAArmdAAK5oAACuaIAArmkAAK5pgACuagAArmqAAK5qwACua4AArm7AAK5zAACuc4AArnQAAK50gACudQAArnWAAK52AACudoAArncAAK57QACufAAArnzAAK59gACufkAArn8AAK5/wACugIAAroFAAK6BwACukYAArpIAAK6SgACukwAArpPAAK6UAACulEAArpSAAK6UwACulUAArpXAAK6WAACulkAArpbAAK6XAACupsAArqdAAK6nwACuqEAArqkAAK6pQACuqYAArqnAAK6qAACuqoAArqsAAK6rQACuq4AArqwAAK6sQACuvAAArryAAK69QACuvcAArr6AAK6+wACuvwAArr9AAK6/gACuwAAArsCAAK7AwACuwQAArsGAAK7BwACuxQAArsVAAK7FgACuxgAArtXAAK7WQACu1sAArtdAAK7YAACu2EAArtiAAK7YwACu2QAArtmAAK7aAACu2kAArtqAAK7bAACu20AArusAAK7rgACu7AAAruyAAK7tQACu7YAAru3AAK7uAACu7kAAru7AAK7vQACu74AAru/AAK7wQACu8IAArwBAAK8AwACvAUAArwHAAK8CgACvAsAArwMAAK8DQACvA4AArwQAAK8EgACvBMAArwUAAK8FgACvBcAArxWAAK8WAACvFoAArxcAAK8XwACvGAAArxhAAK8YgACvGMAArxlAAK8ZwACvGgAArxpAAK8awACvGwAAryrAAK8rQACvK8AAryxAAK8tAACvLUAAry2AAK8twACvLgAAry6AAK8vAACvL0AAry+AAK8wAACvMEAArzmAAK9CgACvTEAAr1VAAK9WAACvVoAAr1cAAK9XgACvWAAAr1iAAK9YwACvWYAAr1zAAK9ggACvYQAAr2GAAK9iAACvYoAAr2MAAK9jgACvZAAAr2fAAK9ogACvaUAAr2oAAK9qwACva4AAr2xAAK9tAACvbYAAr31AAK99wACvfkAAr37AAK9/gACvf8AAr4AAAK+AQACvgIAAr4EAAK+BgACvgcAAr4IAAK+CgACvgsAAr5KAAK+TAACvk4AAr5QAAK+UwACvlQAAr5VAAK+VgACvlcAAr5ZAAK+WwACvlwAAr5dAAK+XwACvmAAAr6fAAK+oQACvqMAAr6lAAK+qAACvqkAAr6qAAK+qwACvqwAAr6uAAK+sAACvrEAAr6yAAK+tAACvrUAAr70AAK+9gACvvgAAr76AAK+/QACvv4AAr7/AAK/AAACvwEAAr8DAAK/BQACvwYAAr8HAAK/CQACvwoAAr9JAAK/SwACv00AAr9PAAK/UgACv1MAAr9UAAK/VQACv1YAAr9YAAK/WgACv1sAAr9cAAK/XgACv18AAr+eAAK/oAACv6IAAr+kAAK/pwACv6gAAr+pAAK/qgACv6sAAr+tAAK/rwACv7AAAr+xAAK/swACv7QAAr/zAAK/9QACv/cAAr/5AAK//AACv/0AAr/+AAK//wACwAAAAsACAALABAACwAUAAsAGAALACAACwAkAAsBUAALAdwACwJcAAsC3AALAuQACwLsAAsC9AALAvwACwMIAAsDDAALAxAACwMcAAsDIAALAygACwMsAAsDNAALA0AACwNEAAsDSAALA1QACwNYAAsDbAALA6AACwO0AAsDvAALA8QACwPYAAsD5AALA/AACwP4AAsEjAALBRwACwW4AAsGSAALBlQACwZcAAsGZAALBmwACwZ0AAsGfAALBoAACwaMAAsGwAALBwQACwcMAAsHFAALBxwACwckAAsHLAALBzQACwc8AAsHRAALB4gACweUAAsHoAALB6wACwe4AAsHxAALB9AACwfcAAsH6AALB/AACwjsAAsI9AALCPwACwkEAAsJEAALCRQACwkYAAsJHAALCSAACwkoAAsJMAALCTQACwk4AAsJQAALCUQACwpAAAsKSAALClAACwpYAAsKZAALCmgACwpsAAsKcAALCnQACwp8AAsKhAALCogACwqMAAsKlAALCpgACwuUAAsLnAALC6gACwuwAAsLvAALC8AACwvEAAsLyAALC8wACwvUAAsL3AALC+AACwvkAAsL7AALC/AACwwkAAsMKAALDCwACww0AAsNMAALDTgACw1AAAsNSAALDVQACw1YAAsNXAALDWAACw1kAAsNbAALDXQACw14AAsNfAALDYQACw2IAAsOhAALDowACw6UAAsOnAALDqgACw6sAAsOsAALDrQACw64AAsOwAALDsgACw7MAAsO0AALDtgACw7cAAsP2AALD+AACw/oAAsP8AALD/wACxAAAAsQBAALEAgACxAMAAsQFAALEBwACxAgAAsQJAALECwACxAwAAsRLAALETQACxE8AAsRRAALEVAACxFUAAsRWAALEVwACxFgAAsRaAALEXAACxF0AAsReAALEYAACxGEAAsSgAALEogACxKQAAsSmAALEqQACxKoAAsSrAALErAACxK0AAsSvAALEsQACxLIAAsSzAALEtQACxLYAAsTbAALE/wACxSYAAsVKAALFTQACxU8AAsVRAALFUwACxVUAAsVXAALFWAACxVsAAsVoAALFdwACxXkAAsV7AALFfQACxX8AAsWBAALFgwACxYUAAsWUAALFlwACxZoAAsWdAALFoAACxaMAAsWmAALFqQACxasAAsXqAALF7AACxe8AAsXxAALF9AACxfUAAsX2AALF9wACxfgAAsX6AALF/AACxf0AAsX+AALGAAACxgEAAsZAAALGQgACxkQAAsZGAALGSQACxkoAAsZLAALGTAACxk0AAsZPAALGUQACxlIAAsZTAALGVQACxlYAAsaVAALGlwACxpkAAsabAALGngACxp8AAsagAALGoQACxqIAAsakAALGpgACxqcAAsaoAALGqgACxqsAAsbqAALG7AACxu8AAsbxAALG9AACxvUAAsb2AALG9wACxvgAAsb6AALG/AACxv0AAsb+AALHAAACxwEAAsdAAALHQgACx0QAAsdGAALHSQACx0oAAsdLAALHTAACx00AAsdPAALHUQACx1IAAsdTAALHVQACx1YAAseVAALHlwACx5kAAsebAALHngACx58AAsegAALHoQACx6IAAsekAALHpgACx6cAAseoAALHqgACx6sAAsfqAALH7AACx+4AAsfwAALH8wACx/QAAsf1AALH9gACx/cAAsf5AALH+wACx/wAAsf9AALH/wACyAAAAshLAALIbgACyI4AAsiuAALIsAACyLIAAsi0AALItgACyLkAAsi6AALIuwACyL4AAsi/AALIwQACyMIAAsjEAALIxwACyMgAAsjJAALIzAACyM0AAsjSAALI3wACyOQAAsjmAALI6AACyO0AAsjwAALI8wACyPUAAskaAALJPgACyWUAAsmJAALJjAACyY4AAsmQAALJkgACyZQAAsmWAALJlwACyZoAAsmnAALJuAACyboAAsm8AALJvgACycAAAsnCAALJxAACycYAAsnIAALJ2QACydwAAsnfAALJ4gACyeUAAsnoAALJ6wACye4AAsnxAALJ8wACyjIAAso0AALKNgACyjgAAso7AALKPAACyj0AAso+AALKPwACykEAAspDAALKRAACykUAAspHAALKSAACyocAAsqJAALKiwACyo0AAsqQAALKkQACypIAAsqTAALKlAACypYAAsqYAALKmQACypoAAsqcAALKnQACytwAAsreAALK4QACyuMAAsrmAALK5wACyugAAsrpAALK6gACyuwAAsruAALK7wACyvAAAsryAALK8wACywAAAssBAALLAgACywQAAstDAALLRQACy0cAAstJAALLTAACy00AAstOAALLTwACy1AAAstSAALLVAACy1UAAstWAALLWAACy1kAAsuYAALLmgACy5wAAsueAALLoQACy6IAAsujAALLpAACy6UAAsunAALLqQACy6oAAsurAALLrQACy64AAsvtAALL7wACy/EAAsvzAALL9gACy/cAAsv4AALL+QACy/oAAsv8AALL/gACy/8AAswAAALMAgACzAMAAsxCAALMRAACzEYAAsxIAALMSwACzEwAAsxNAALMTgACzE8AAsxRAALMUwACzFQAAsxVAALMVwACzFgAAsyXAALMmQACzJsAAsydAALMoAACzKEAAsyiAALMowACzKQAAsymAALMqAACzKkAAsyqAALMrAACzK0AAszSAALM9gACzR0AAs1BAALNRAACzUYAAs1IAALNSgACzUwAAs1OAALNTwACzVIAAs1fAALNbgACzXAAAs1yAALNdAACzXYAAs14AALNegACzXwAAs2LAALNjgACzZEAAs2UAALNlwACzZoAAs2dAALNoAACzaIAAs3hAALN4wACzeUAAs3nAALN6gACzesAAs3sAALN7QACze4AAs3wAALN8gACzfMAAs30AALN9gACzfcAAs42AALOOAACzjoAAs48AALOPwACzkAAAs5BAALOQgACzkMAAs5FAALORwACzkgAAs5JAALOSwACzkwAAs6LAALOjQACzo8AAs6RAALOlAACzpUAAs6WAALOlwACzpgAAs6aAALOnAACzp0AAs6eAALOoAACzqEAAs7gAALO4gACzuQAAs7mAALO6QACzuoAAs7rAALO7AACzu0AAs7vAALO8QACzvIAAs7zAALO9QACzvYAAs81AALPNwACzzkAAs87AALPPgACzz8AAs9AAALPQQACz0IAAs9EAALPRgACz0cAAs9IAALPSgACz0sAAs+KAALPjAACz44AAs+QAALPkwACz5QAAs+VAALPlgACz5cAAs+ZAALPmwACz5wAAs+dAALPnwACz6AAAs/fAALP4QACz+MAAs/lAALP6AACz+kAAs/qAALP6wACz+wAAs/uAALP8AACz/EAAs/yAALP9AACz/UAAtBAAALQYwAC0IMAAtCjAALQpQAC0KcAAtCpAALQqwAC0K4AAtCvAALQsAAC0LMAAtC0AALQtgAC0LcAAtC5AALQvAAC0L0AAtC+AALQwQAC0MIAAtDHAALQ1AAC0NkAAtDbAALQ3QAC0OIAAtDlAALQ6AAC0OoAAtEPAALRMwAC0VoAAtF+AALRgQAC0YMAAtGFAALRhwAC0YkAAtGLAALRjAAC0Y8AAtGcAALRrQAC0a8AAtGxAALRswAC0bUAAtG3AALRuQAC0bsAAtG9AALRzgAC0dEAAtHUAALR1wAC0doAAtHdAALR4AAC0eMAAtHmAALR6AAC0icAAtIpAALSKwAC0i0AAtIwAALSMQAC0jIAAtIzAALSNAAC0jYAAtI4AALSOQAC0joAAtI8AALSPQAC0nwAAtJ+AALSgAAC0oIAAtKFAALShgAC0ocAAtKIAALSiQAC0osAAtKNAALSjgAC0o8AAtKRAALSkgAC0tEAAtLTAALS1gAC0tgAAtLbAALS3AAC0t0AAtLeAALS3wAC0uEAAtLjAALS5AAC0uUAAtLnAALS6AAC0vUAAtL2AALS9wAC0vkAAtM4AALTOgAC0zwAAtM+AALTQQAC00IAAtNDAALTRAAC00UAAtNHAALTSQAC00oAAtNLAALTTQAC004AAtONAALTjwAC05EAAtOTAALTlgAC05cAAtOYAALTmQAC05oAAtOcAALTngAC058AAtOgAALTogAC06MAAtPiAALT5AAC0+YAAtPoAALT6wAC0+wAAtPtAALT7gAC0+8AAtPxAALT8wAC0/QAAtP1AALT9wAC0/gAAtQ3AALUOQAC1DsAAtQ9AALUQAAC1EEAAtRCAALUQwAC1EQAAtRGAALUSAAC1EkAAtRKAALUTAAC1E0AAtSMAALUjgAC1JAAAtSSAALUlQAC1JYAAtSXAALUmAAC1JkAAtSbAALUnQAC1J4AAtSfAALUoQAC1KIAAtTHAALU6wAC1RIAAtU2AALVOQAC1TsAAtU9AALVPwAC1UEAAtVDAALVRAAC1UcAAtVUAALVYwAC1WUAAtVnAALVaQAC1WsAAtVtAALVbwAC1XEAAtWAAALVgwAC1YYAAtWJAALVjAAC1Y8AAtWSAALVlQAC1ZcAAtXWAALV2AAC1dsAAtXdAALV4AAC1eEAAtXiAALV4wAC1eQAAtXmAALV6AAC1ekAAtXqAALV7AAC1e0AAtYsAALWLgAC1jAAAtYyAALWNQAC1jYAAtY3AALWOAAC1jkAAtY7AALWPQAC1j4AAtY/AALWQQAC1kIAAtaBAALWgwAC1oUAAtaHAALWigAC1osAAtaMAALWjQAC1o4AAtaQAALWkgAC1pMAAtaUAALWlgAC1pcAAtbWAALW2AAC1tsAAtbdAALW4AAC1uEAAtbiAALW4wAC1uQAAtbmAALW6AAC1ukAAtbqAALW7AAC1u0AAtcsAALXLgAC1zAAAtcyAALXNQAC1zYAAtc3AALXOAAC1zkAAtc7AALXPQAC1z4AAtc/AALXQQAC10IAAteBAALXgwAC14UAAteHAALXigAC14sAAteMAALXjQAC144AAteQAALXkgAC15MAAteUAALXlgAC15cAAtfWAALX2AAC19oAAtfcAALX3wAC1+AAAtfhAALX4gAC1+MAAtflAALX5wAC1+gAAtfpAALX6wAC1+wAAtg3AALYWgAC2HoAAtiaAALYnAAC2J4AAtigAALYogAC2KUAAtimAALYpwAC2KoAAtirAALYrQAC2K4AAtiwAALYswAC2LQAAti1AALYuAAC2LkAAti+AALYywAC2NAAAtjSAALY1AAC2NkAAtjcAALY3wAC2OEAAtkGAALZKgAC2VEAAtl1AALZeAAC2XoAAtl8AALZfgAC2YAAAtmCAALZgwAC2YYAAtmTAALZpAAC2aYAAtmoAALZqgAC2awAAtmuAALZsAAC2bIAAtm0AALZxQAC2cgAAtnLAALZzgAC2dEAAtnUAALZ1wAC2doAAtndAALZ3wAC2h4AAtogAALaIgAC2iQAAtonAALaKAAC2ikAAtoqAALaKwAC2i0AAtovAALaMAAC2jEAAtozAALaNAAC2nMAAtp1AALadwAC2nkAAtp8AALafQAC2n4AAtp/AALagAAC2oIAAtqEAALahQAC2oYAAtqIAALaiQAC2sgAAtrKAALazQAC2s8AAtrSAALa0wAC2tQAAtrVAALa1gAC2tgAAtraAALa2wAC2twAAtreAALa3wAC2uwAAtrtAALa7gAC2vAAAtsvAALbMQAC2zMAAts1AALbOAAC2zkAAts6AALbOwAC2zwAAts+AALbQAAC20EAAttCAALbRAAC20UAAtuEAALbhgAC24gAAtuKAALbjQAC244AAtuPAALbkAAC25EAAtuTAALblQAC25YAAtuXAALbmQAC25oAAtvZAALb2wAC290AAtvfAALb4gAC2+MAAtvkAALb5QAC2+YAAtvoAALb6gAC2+sAAtvsAALb7gAC2+8AAtwuAALcMAAC3DIAAtw0AALcNwAC3DgAAtw5AALcOgAC3DsAAtw9AALcPwAC3EAAAtxBAALcQwAC3EQAAtyDAALchQAC3IcAAtyJAALcjAAC3I0AAtyOAALcjwAC3JAAAtySAALclAAC3JUAAtyWAALcmAAC3JkAAty+AALc4gAC3QkAAt0tAALdMAAC3TIAAt00AALdNgAC3TgAAt06AALdOwAC3T4AAt1LAALdWgAC3VwAAt1eAALdYAAC3WIAAt1kAALdZgAC3WgAAt13AALdegAC3X0AAt2AAALdgwAC3YYAAt2JAALdjAAC3Y4AAt3NAALdzwAC3dEAAt3TAALd1gAC3dcAAt3YAALd2QAC3doAAt3cAALd3gAC3d8AAt3gAALd4gAC3eMAAt4iAALeJAAC3iYAAt4oAALeKwAC3iwAAt4tAALeLgAC3i8AAt4xAALeMwAC3jQAAt41AALeNwAC3jgAAt53AALeeQAC3nsAAt59AALegAAC3oEAAt6CAALegwAC3oQAAt6GAALeiAAC3okAAt6KAALejAAC3o0AAt7MAALezgAC3tAAAt7SAALe1QAC3tYAAt7XAALe2AAC3tkAAt7bAALe3QAC3t4AAt7fAALe4QAC3uIAAt8hAALfIwAC3yUAAt8nAALfKgAC3ysAAt8sAALfLQAC3y4AAt8wAALfMgAC3zMAAt80AALfNgAC3zcAAt92AALfeAAC33oAAt98AALffwAC34AAAt+BAALfggAC34MAAt+FAALfhwAC34gAAt+JAALfiwAC34wAAt/LAALfzQAC388AAt/RAALf1AAC39UAAt/WAALf1wAC39gAAt/aAALf3AAC390AAt/eAALf4AAC3+EAAuAsAALgTwAC4G8AAuCPAALgkQAC4JMAAuCVAALglwAC4JoAAuCbAALgnAAC4J8AAuCgAALgogAC4KMAAuClAALgqAAC4KkAAuCqAALgrQAC4K4AAuCzAALgwAAC4MUAAuDHAALgyQAC4M4AAuDRAALg1AAC4NYAAuD7AALhHwAC4UYAAuFqAALhbQAC4W8AAuFxAALhcwAC4XUAAuF3AALheAAC4XsAAuGIAALhmQAC4ZsAAuGdAALhnwAC4aEAAuGjAALhpQAC4acAAuGpAALhugAC4b0AAuHAAALhwwAC4cYAAuHJAALhzAAC4c8AAuHSAALh1AAC4hMAAuIVAALiFwAC4hkAAuIcAALiHQAC4h4AAuIfAALiIAAC4iIAAuIkAALiJQAC4iYAAuIoAALiKQAC4mgAAuJqAALibAAC4m4AAuJxAALicgAC4nMAAuJ0AALidQAC4ncAAuJ5AALiegAC4nsAAuJ9AALifgAC4r0AAuK/AALiwgAC4sQAAuLHAALiyAAC4skAAuLKAALiywAC4s0AAuLPAALi0AAC4tEAAuLTAALi1AAC4uEAAuLiAALi4wAC4uUAAuMkAALjJgAC4ygAAuMqAALjLQAC4y4AAuMvAALjMAAC4zEAAuMzAALjNQAC4zYAAuM3AALjOQAC4zoAAuN5AALjewAC430AAuN/AALjggAC44MAAuOEAALjhQAC44YAAuOIAALjigAC44sAAuOMAALjjgAC448AAuPOAALj0AAC49IAAuPUAALj1wAC49gAAuPZAALj2gAC49sAAuPdAALj3wAC4+AAAuPhAALj4wAC4+QAAuQjAALkJQAC5CcAAuQpAALkLAAC5C0AAuQuAALkLwAC5DAAAuQyAALkNAAC5DUAAuQ2AALkOAAC5DkAAuR4AALkegAC5HwAAuR+AALkgQAC5IIAAuSDAALkhAAC5IUAAuSHAALkiQAC5IoAAuSLAALkjQAC5I4AAuSzAALk1wAC5P4AAuUiAALlJQAC5ScAAuUpAALlKwAC5S0AAuUvAALlMAAC5TMAAuVAAALlTwAC5VEAAuVTAALlVQAC5VcAAuVZAALlWwAC5V0AAuVsAALlbwAC5XIAAuV1AALleAAC5XsAAuV+AALlgQAC5YMAAuXCAALlxAAC5cYAAuXIAALlywAC5cwAAuXNAALlzgAC5c8AAuXRAALl0wAC5dQAAuXVAALl1wAC5dgAAuYXAALmGQAC5hsAAuYdAALmIAAC5iEAAuYiAALmIwAC5iQAAuYmAALmKAAC5ikAAuYqAALmLAAC5i0AAuZsAALmbgAC5nAAAuZyAALmdQAC5nYAAuZ3AALmeAAC5nkAAuZ7AALmfQAC5n4AAuZ/AALmgQAC5oIAAubBAALmwwAC5sUAAubHAALmygAC5ssAAubMAALmzQAC5s4AAubQAALm0gAC5tMAAubUAALm1gAC5tcAAucWAALnGAAC5xoAAuccAALnHwAC5yAAAuchAALnIgAC5yMAAuclAALnJwAC5ygAAucpAALnKwAC5ywAAudrAALnbQAC528AAudxAALndAAC53UAAud2AALndwAC53gAAud6AALnfAAC530AAud+AALngAAC54EAAufAAALnwgAC58QAAufGAALnyQAC58oAAufLAALnzAAC580AAufPAALn0QAC59IAAufTAALn1QAC59YAAughAALoRAAC6GQAAuiEAALohgAC6IgAAuiKAALojAAC6I8AAuiQAALokQAC6JQAAuiVAALolwAC6JgAAuiaAALonQAC6J4AAuifAALoogAC6KMAAuisAALouQAC6L4AAujAAALowgAC6McAAujKAALozQAC6M8AAuj0AALpGAAC6T8AAuljAALpZgAC6WgAAulqAALpbAAC6W4AAulwAALpcQAC6XQAAumBAALpkgAC6ZQAAumWAALpmAAC6ZoAAumcAALpngAC6aAAAumiAALpswAC6bYAAum5AALpvAAC6b8AAunCAALpxQAC6cgAAunLAALpzQAC6gwAAuoOAALqEAAC6hIAAuoVAALqFgAC6hcAAuoYAALqGQAC6hsAAuodAALqHgAC6h8AAuohAALqIgAC6mEAAupjAALqZQAC6mcAAupqAALqawAC6mwAAuptAALqbgAC6nAAAupyAALqcwAC6nQAAup2AALqdwAC6rYAAuq4AALquwAC6r0AAurAAALqwQAC6sIAAurDAALqxAAC6sYAAurIAALqyQAC6soAAurMAALqzQAC6toAAurbAALq3AAC6t4AAusdAALrHwAC6yEAAusjAALrJgAC6ycAAusoAALrKQAC6yoAAussAALrLgAC6y8AAuswAALrMgAC6zMAAutyAALrdAAC63YAAut4AALrewAC63wAAut9AALrfgAC638AAuuBAALrgwAC64QAAuuFAALrhwAC64gAAuvHAALryQAC68sAAuvNAALr0AAC69EAAuvSAALr0wAC69QAAuvWAALr2AAC69kAAuvaAALr3AAC690AAuwcAALsHgAC7CAAAuwiAALsJQAC7CYAAuwnAALsKAAC7CkAAuwrAALsLQAC7C4AAuwvAALsMQAC7DIAAuxxAALscwAC7HUAAux3AALsegAC7HsAAux8AALsfQAC7H4AAuyAAALsggAC7IMAAuyEAALshgAC7IcAAuysAALs0AAC7PcAAu0bAALtHgAC7SAAAu0iAALtJAAC7SYAAu0oAALtKQAC7SwAAu05AALtSAAC7UoAAu1MAALtTgAC7VAAAu1SAALtVAAC7VYAAu1lAALtaAAC7WsAAu1uAALtcQAC7XQAAu13AALtegAC7XwAAu27AALtvQAC7b8AAu3BAALtxAAC7cUAAu3GAALtxwAC7cgAAu3KAALtzAAC7c0AAu3OAALt0AAC7dEAAu4QAALuEgAC7hQAAu4WAALuGQAC7hoAAu4bAALuHAAC7h0AAu4fAALuIQAC7iIAAu4jAALuJQAC7iYAAu5lAALuZwAC7mkAAu5rAALubgAC7m8AAu5wAALucQAC7nIAAu50AALudgAC7ncAAu54AALuegAC7nsAAu66AALuvAAC7r4AAu7AAALuwwAC7sQAAu7FAALuxgAC7scAAu7JAALuywAC7swAAu7NAALuzwAC7tAAAu8PAALvEQAC7xMAAu8VAALvGAAC7xkAAu8aAALvGwAC7xwAAu8eAALvIAAC7yEAAu8iAALvJAAC7yUAAu9kAALvZgAC72gAAu9qAALvbQAC724AAu9vAALvcAAC73EAAu9zAALvdQAC73YAAu93AALveQAC73oAAu+5AALvuwAC770AAu+/AALvwgAC78MAAu/EAALvxQAC78YAAu/IAALvygAC78sAAu/MAALvzgAC788AAvAaAALwPQAC8F0AAvB9AALwfwAC8IEAAvCDAALwhQAC8IgAAvCJAALwigAC8I0AAvCOAALwkAAC8JEAAvCTAALwlgAC8JcAAvCYAALwmwAC8JwAAvChAALwrgAC8LMAAvC1AALwtwAC8LwAAvC/AALwwgAC8MQAAvDpAALxDQAC8TQAAvFYAALxWwAC8V0AAvFfAALxYQAC8WMAAvFlAALxZgAC8WkAAvF2AALxhwAC8YkAAvGLAALxjQAC8Y8AAvGRAALxkwAC8ZUAAvGXAALxqAAC8asAAvGuAALxsQAC8bQAAvG3AALxugAC8b0AAvHAAALxwgAC8gEAAvIDAALyBQAC8gcAAvIKAALyCwAC8gwAAvINAALyDgAC8hAAAvISAALyEwAC8hQAAvIWAALyFwAC8lYAAvJYAALyWgAC8lwAAvJfAALyYAAC8mEAAvJiAALyYwAC8mUAAvJnAALyaAAC8mkAAvJrAALybAAC8qsAAvKtAALysAAC8rI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AAwNZAAMDXAADA10AAwNeAAMDXwADA2AAAwNiAAMDZAADA2UAAwNmAAMDaAADA2kAAwOoAAMDqgADA6wAAwOuAAMDsQADA7IAAwOzAAMDtAADA7UAAwO3AAMDuQADA7oAAwO7AAMDvQADA74AAwP9AAMD/wADBAEAAwQDAAMEBgADBAcAAwQIAAMECQADBAoAAwQMAAMEDgADBA8AAwQQAAMEEgADBBMAAwRSAAMEVAADBFYAAwRYAAMEWwADBFwAAwRdAAMEXgADBF8AAwRhAAMEYwADBGQAAwRlAAMEZwADBGgAAwSNAAMEsQADBNgAAwT8AAME/wADBQEAAwUDAAMFBQADBQcAAwUJAAMFCgADBQ0AAwUaAAMFKQADBSsAAwUtAAMFLwADBTEAAwUzAAMFNQADBTcAAwVGAAMFSQADBUwAAwVPAAMFUgADBVUAAwVYAAMFWwADBV0AAwWcAAMFngADBaEAAwWjAAMFpgADBacAAwWoAAMFqQADBaoAAwWsAAMFrgADBa8AAwWwAAMFsgADBbMAAwXyAAMF9AADBfYAAwX4AAMF+wADBfwAAwX9AAMF/gADBf8AAwYBAAMGAwADBgQAAwYFAAMGBwADBggAAwZHAAMGSQADBksAAwZNAAMGUAADBlEAAwZSAAMGUwADBlQAAwZWAAMGWAADBlkAAwZaAAMGXAADBl0AAwacAAMGngADBqEAAwajAAMGpgADBqcAAwaoAAMGqQADBqoAAwasAAMGrgADBq8AAwawAAMGsgADBrMAAwbyAAMG9AADBvYAAwb4AAMG+wADBvwAAwb9AAMG/gADBv8AAwcBAAMHAwADBwQAAwcFAAMHBwADBwgAAwdHAAMHSQADB0sAAwdNAAMHUAADB1EAAwdSAAMHUwADB1QAAwdWAAMHWAADB1kAAwdaAAMHXAADB10AAwecAAMHngADB6AAAweiAAMHpQADB6YAAwenAAMHqAADB6kAAwerAAMHrQADB64AAwevAAMHsQADB7IAAwf9AAMIIAADCEAAAwhgAAMIYgADCGQAAwhmAAMIaAADCGsAAwhsAAMIbQADCHAAAwhxAAMIcwADCHQAAwh2AAMIeQADCHoAAwh7AAMIfgADCH8AAwiEAAMIkQADCJYAAwiYAAMImgADCJ8AAwiiAAMIpQADCKcAAwjMAAMI8AADCRcAAwk7AAMJPgADCUAAAwlCAAMJRAADCUYAAwlIAAMJSQADCUwAAwlZAAMJagADCWwAAwluAAMJcAADCXIAAwl0AAMJdgADCXgAAwl6AAMJiwADCY4AAwmRAAMJlAADCZcAAwmaAAMJnQADCaAAAwmjAAMJpQADCeQAAwnmAAMJ6AADCeoAAwntAAMJ7gADCe8AAwnwAAMJ8QADCfMAAwn1AAMJ9gADCfcAAwn5AAMJ+gADCjkAAwo7AAMKPQADCj8AAwpCAAMKQwADCkQAAwpFAAMKRgADCkgAAwpKAAMKSwADCkwAAwpOAAMKTwADCo4AAwqQAAMKkwADCpUAAwqYAAMKmQADCpoAAwqbAAMKnAADCp4AAwqgAAMKoQADCqIAAwqkAAMKpQADCrIAAwqzAAMKtAADCrYAAwr1AAMK9wADCvkAAwr7AAMK/gADCv8AAwsAAAMLAQADCwIAAwsEAAMLBgADCwcAAwsIAAMLCgADCwsAAwtKAAMLTAADC04AAwtQAAMLUwADC1QAAwtVAAMLVgADC1cAAwtZAAMLWwADC1wAAwtdAAMLXwADC2AAAwufAAMLoQADC6MAAwulAAMLqAADC6kAAwuqAAMLqwADC6wAAwuuAAMLsAADC7EAAwuyAAMLtAADC7UAAwv0AAML9gADC/gAAwv6AAML/QADC/4AAwv/AAMMAAADDAEAAwwDAAMMBQADDAYAAwwHAAMMCQADDAoAAwxJAAMMSwADDE0AAwxPAAMMUgADDFMAAwxUAAMMVQADDFYAAwxYAAMMWgADDFsAAwxcAAMMXgADDF8AAwyEAAMMqAADDM8AAwzzAAMM9gADDPgAAwz6AAMM/AADDP4AAw0AAAMNAQADDQQAAw0RAAMNIAADDSIAAw0kAAMNJgADDSgAAw0qAAMNLAADDS4AAw09AAMNQAADDUMAAw1GAAMNSQADDUwAAw1PAAMNUgADDVQAAw2TAAMNlQADDZcAAw2ZAAMNnAADDZ0AAw2eAAMNnwADDaAAAw2iAAMNpAADDaUAAw2mAAMNqAADDakAAw3oAAMN6gADDewAAw3uAAMN8QADDfIAAw3zAAMN9AADDfUAAw33AAMN+QADDfoAAw37AAMN/QADDf4AAw49AAMOPwADDkEAAw5DAAMORgADDkcAAw5IAAMOSQADDkoAAw5MAAMOTgADDk8AAw5QAAMOUgADDlMAAw6SAAMOlAADDpYAAw6YAAMOmwADDpwAAw6dAAMOngADDp8AAw6hAAMOowADDqQAAw6lAAMOpwADDqgAAw7nAAMO6QADDusAAw7tAAMO8AADDvEAAw7yAAMO8wADDvQAAw72AAMO+AADDvkAAw76AAMO/AADDv0AAw88AAMPPgADD0AAAw9CAAMPRQADD0YAAw9HAAMPSAADD0kAAw9LAAMPTQADD04AAw9PAAMPUQADD1IAAw+RAAMPkwADD5UAAw+XAAMPmgADD5sAAw+cAAMPnQADD54AAw+gAAMPogADD6MAAw+kAAMPpgADD6cAAw/yAAMQFQADEDUAAxBVAAMQVwADEFkAAxBbAAMQXQADEGAAAxBhAAMQYgADEGUAAxBmAAMQaAADEGkAAxBrAAMQbgADEG8AAxBwAAMQcwADEHQAAxB9AAMQigADEI8AAxCRAAMQkwADEJgAAxCbAAMQngADEKAAAxDFAAMQ6QADERAAAxE0AAMRNwADETkAAxE7AAMRPQADET8AAxFBAAMRQgADEUUAAxFSAAMRYwADEWUAAxFnAAMRaQADEWsAAxFtAAMRbwADEXEAAxFzAAMRhAADEYcAAxGKAAMRjQADEZAAAxGTAAMRlgADEZkAAxGcAAMRngADEd0AAxHfAAMR4QADEeMAAxHmAAMR5wADEegAAxHpAAMR6gADEewAAxHuAAMR7wADEfAAAxHyAAMR8wADEjIAAxI0AAMSNgADEjgAAxI7AAMSPAADEj0AAxI+AAMSPwADEkEAAxJDAAMSRAADEkUAAxJHAAMSSAADEocAAxKJAAMSjAADEo4AAxKRAAMSkgADEpMAAxKUAAMSlQADEpcAAxKZAAMSmgADEpsAAxKdAAMSngADEqsAAxKsAAMSrQADEq8AAxLuAAMS8AADEvIAAxL0AAMS9wADEvgAAxL5AAMS+gADEvsAAxL9AAMS/wADEwAAAxMBAAMTAwADEwQAAxNDAAMTRQADE0cAAxNJAAMTTAADE00AAxNOAAMTTwADE1AAAxNSAAMTVAADE1UAAxNWAAMTWAADE1kAAxOYAAMTmgADE5wAAxOeAAMToQADE6IAAxOjAAMTpAADE6UAAxOnAAMTqQADE6oAAxOrAAMTrQADE64AAxPtAAMT7wADE/EAAxPzAAMT9gADE/cAAxP4AAMT+QADE/oAAxP8AAMT/gADE/8AAxQAAAMUAgADFAMAAxRCAAMURAADFEYAAxRIAAMUSwADFEwAAxRNAAMUTgADFE8AAxRRAAMUUwADFFQAAxRVAAMUVwADFFgAAxR9AAMUoQADFMgAAxTsAAMU7wADFPEAAxTzAAMU9QADFPcAAxT5AAMU+gADFP0AAxUKAAMVGQADFRsAAxUdAAMVHwADFSEAAxUjAAMVJQADFScAAxU2AAMVOQADFTwAAxU/AAMVQgADFUUAAxVIAAMVSwADFU0AAxWMAAMVjgADFZAAAxWSAAMVlQADFZYAAxWXAAMVmAADFZkAAxWbAAMVnQADFZ4AAxWfAAMVoQADFaIAAxXhAAMV4wADFeUAAxXnAAMV6gADFesAAxXsAAMV7QADFe4AAxXwAAMV8gADFfMAAxX0AAMV9gADFfcAAxY2AAMWOAADFjoAAxY8AAMWPwADFkAAAxZBAAMWQgADFkMAAxZFAAMWRwADFkgAAxZJAAMWSwADFkwAAxaLAAMWjQADFo8AAxaRAAMWlAADFpUAAxaWAAMWlwADFpgAAxaaAAMWnAADFp0AAxaeAAMWoAADFqEAAxbgAAMW4gADFuQAAxbmAAMW6QADFuoAAxbrAAMW7AADFu0AAxbvAAMW8QADFvIAAxbzAAMW9QADFvYAAxc1AAMXNwADFzkAAxc7AAMXPgADFz8AAxdAAAMXQQADF0IAAxdEAAMXRgADF0cAAxdIAAMXSgADF0sAAxeKAAMXjAADF44AAxeQAAMXkwADF5QAAxeVAAMXlgADF5cAAxeZAAMXmwADF5wAAxedAAMXnwADF6AAAxfrAAMYDgADGC4AAxhOAAMYUAADGFIAAxhUAAMYVgADGFkAAxhaAAMYWwADGF4AAxhfAAMYYQADGGIAAxhkAAMYZwADGGgAAxhpAAMYbAADGG0AAxhyAAMYfwADGIQAAxiGAAMYiAADGI0AAxiQAAMYkwADGJUAAxi6AAMY3gADGQUAAxkpAAMZLAADGS4AAxkwAAMZMgADGTQAAxk2AAMZNwADGToAAxlHAAMZWAADGVoAAxlcAAMZXgADGWAAAxliAAMZZAADGWYAAxloAAMZeQADGXwAAxl/AAMZggADGYUAAxmIAAMZiwADGY4AAxmRAAMZkwADGdIAAxnUAAMZ1gADGdg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AAyTlAAMk5gADJOkAAyT2AAMlBQADJQcAAyUJAAMlCwADJQ0AAyUPAAMlEQADJRMAAyUiAAMlJQADJSgAAyUrAAMlLgADJTEAAyU0AAMlNwADJTkAAyV4AAMlegADJXwAAyV+AAMlgQADJYIAAyWDAAMlhAADJYUAAyWHAAMliQADJYoAAyWLAAMljQADJY4AAyXNAAMlzwADJdEAAyXTAAMl1gADJdcAAyXYAAMl2QADJdoAAyXcAAMl3gADJd8AAyXgAAMl4gADJeMAAyYiAAMmJAADJiYAAyYoAAMmKwADJiwAAyYtAAMmLgADJi8AAyYxAAMmMwADJjQAAyY1AAMmNwADJjgAAyZ3AAMmeQADJnsAAyZ9AAMmgAADJoEAAyaCAAMmgwADJoQAAyaGAAMmiAADJokAAyaKAAMmjAADJo0AAybMAAMmzgADJtAAAybSAAMm1QADJtYAAybXAAMm2AADJtkAAybbAAMm3QADJt4AAybfAAMm4QADJuIAAychAAMnIwADJyUAAycnAAMnKgADJysAAycsAAMnLQADJy4AAycwAAMnMgADJzMAAyc0AAMnNgADJzcAAyd2AAMneAADJ3oAAyd8AAMnfwADJ4AAAyeBAAMnggADJ4MAAyeFAAMnhwADJ4gAAyeJAAMniwADJ4wAAyfXAAMn+gADKBoAAyg6AAMoPAADKD4AAyhAAAMoQgADKEUAAyhGAAMoRwADKEoAAyhLAAMoTQADKE4AAyhQAAMoUwADKFQAAyhVAAMoWAADKFkAAyheAAMoawADKHAAAyhyAAModAADKHkAAyh8AAMofwADKIEAAyimAAMoygADKPEAAykVAAMpGAADKRoAAykcAAMpHgADKSAAAykiAAMpIwADKSYAAykzAAMpRAADKUYAAylIAAMpSgADKUwAAylOAAMpUAADKVIAAylUAAMpZQADKWgAAylrAAMpbgADKXEAAyl0AAMpdwADKXoAAyl9AAMpfwADKb4AAynAAAMpwgADKcQAAynHAAMpyAADKckAAynKAAMpywADKc0AAynPAAMp0AADKdEAAynTAAMp1AADKhMAAyoVAAMqFwADKhkAAyocAAMqHQADKh4AAyofAAMqIAADKiIAAyokAAMqJQADKiYAAyooAAMqKQADKmgAAypqAAMqbQADKm8AAypyAAMqcwADKnQAAyp1AAMqdgADKngAAyp6AAMqewADKnwAAyp+AAMqfwADKowAAyqNAAMqjgADKpAAAyrPAAMq0QADKtMAAyrVAAMq2AADKtkAAyraAAMq2wADKtwAAyreAAMq4AADKuEAAyriAAMq5AADKuUAAyskAAMrJgADKygAAysqAAMrLQADKy4AAysvAAMrMAADKzEAAyszAAMrNQADKzYAAys3AAMrOQADKzoAAyt5AAMrewADK30AAyt/AAMrggADK4MAAyuEAAMrhQADK4YAAyuIAAMrigADK4sAAyuMAAMrjgADK48AAyvOAAMr0AADK9IAAyvUAAMr1wADK9gAAyvZAAMr2gADK9sAAyvdAAMr3wADK+AAAyvhAAMr4wADK+QAAywjAAMsJQADLCcAAywpAAMsLAADLC0AAywuAAMsLwADLDAAAywyAAMsNAADLDUAAyw2AAMsOAADLDkAAyxeAAMsggADLKkAAyzNAAMs0AADLNIAAyzUAAMs1gADLNgAAyzaAAMs2wADLN4AAyzrAAMs+gADLPwAAyz+AAMtAAADLQIAAy0EAAMtBgADLQgAAy0XAAMtGgADLR0AAy0gAAMtIwADLSYAAy0pAAMtLAADLS4AAy1tAAMtbwADLXEAAy1zAAMtdgADLXcAAy14AAMteQADLXoAAy18AAMtfgADLX8AAy2AAAMtggADLYMAAy3CAAMtxAADLcYAAy3IAAMtywADLcwAAy3NAAMtzgADLc8AAy3RAAMt0wADLdQAAy3VAAMt1wADLdgAAy4XAAMuGQADLhsAAy4dAAMuIAADLiEAAy4iAAMuIwADLiQAAy4mAAMuKAADLikAAy4qAAMuLAADLi0AAy5sAAMubgADLnAAAy5yAAMudQADLnYAAy53AAMueAADLnkAAy57AAMufQADLn4AAy5/AAMugQADLoIAAy7BAAMuwwADLsUAAy7HAAMuygADLssAAy7MAAMuzQADLs4AAy7QAAMu0gADLtMAAy7UAAMu1gADLtcAAy8WAAMvGAADLxoAAy8cAAMvHwADLyAAAy8hAAMvIgADLyMAAy8lAAMvJwADLygAAy8pAAMvKwADLywAAy9rAAMvbQADL28AAy9xAAMvdAADL3UAAy92AAMvdwADL3gAAy96AAMvfAADL30AAy9+AAMvgAADL4EAAy/MAAMv7wADMA8AAzAvAAMwMQADMDMAAzA1AAMwNwADMDoAAzA7AAMwPAADMD8AAzBAAAMwQgADMEMAAzBFAAMwSAADMEkAAzBKAAMwTQADME4AAzBTAAMwYAADMGUAAzBnAAMwaQADMG4AAzBxAAMwdAADMHYAAzCbAAMwvwADMOYAAzEKAAMxDQADMQ8AAzERAAMxEwADMRUAAzEXAAMxGAADMRsAAzEoAAMxOQADMTsAAzE9AAMxPwADMUEAAzFDAAMxRQADMUcAAzFJAAMxWgADMV0AAzFgAAMxYwADMWYAAzFpAAMxbAADMW8AAzFyAAMxdAADMbMAAzG1AAMxtwADMbkAAzG8AAMxvQADMb4AAzG/AAMxwAADMcIAAzHEAAMxxQADMcYAAzHIAAMxyQADMggAAzIKAAMyDAADMg4AAzIRAAMyEgADMhMAAzIUAAMyFQADMhcAAzIZAAMyGgADMhsAAzIdAAMyHgADMl0AAzJfAAMyYgADMmQAAzJnAAMyaAADMmkAAzJqAAMyawADMm0AAzJvAAMycAADMnEAAzJzAAMydAADMoEAAzKCAAMygwADMoUAAzLEAAMyxgADMsgAAzLKAAMyzQADMs4AAzLPAAMy0AADMtEAAzLTAAMy1QADMtYAAzLXAAMy2QADMtoAAzMZAAMzGwADMx0AAzMfAAMzIgADMyMAAzMkAAMzJQADMyYAAzMoAAMzKgADMysAAzMsAAMzLgADMy8AAzNuAAMzcAADM3IAAzN0AAMzdwADM3gAAzN5AAMzegADM3sAAzN9AAMzfwADM4AAAzOBAAMzgwADM4QAAzPDAAMzxQADM8cAAzPJAAMzzAADM80AAzPOAAMzzwADM9AAAzPSAAMz1AADM9UAAzPWAAMz2AADM9kAAzQYAAM0GgADNBwAAzQeAAM0IQADNCIAAzQjAAM0JAADNCUAAzQnAAM0KQADNCoAAzQrAAM0LQADNC4AAzRTAAM0dwADNJ4AAzTCAAM0xQADNMcAAzTJAAM0ywADNM0AAzTPAAM00AADNNMAAzTgAAM07wADNPEAAzTzAAM09QADNPcAAzT5AAM0+wADNP0AAzUMAAM1DwADNRIAAzUVAAM1GAADNRsAAzUeAAM1IQADNSMAAzViAAM1ZAADNWcAAzVpAAM1bAADNW0AAzVuAAM1bwADNXAAAzVyAAM1dAADNXUAAzV2AAM1eAADNXkAAzW4AAM1ugADNbwAAzW+AAM1wQADNcIAAzXDAAM1xAADNcUAAzXHAAM1yQADNcoAAzXLAAM1zQADNc4AAzYNAAM2DwADNhEAAzYTAAM2FgADNhcAAzYYAAM2GQADNhoAAzYcAAM2HgADNh8AAzYgAAM2IgADNiMAAzZiAAM2ZAADNmcAAzZpAAM2bAADNm0AAzZuAAM2bwADNnAAAzZyAAM2dAADNnUAAzZ2AAM2eAADNnkAAza4AAM2ugADNrwAAza+AAM2wQADNsIAAzbDAAM2xAADNsUAAzbHAAM2yQADNsoAAzbLAAM2zQADNs4AAzcNAAM3DwADNxEAAzcTAAM3FgADNxcAAzcYAAM3GQADNxoAAzccAAM3HgADNx8AAzcgAAM3IgADNyMAAzdiAAM3ZAADN2YAAzdoAAM3awADN2wAAzdtAAM3bgADN28AAzdxAAM3cwADN3QAAzd1AAM3dwADN3gAAzfDAAM35gADOAYAAzgmAAM4KAADOCoAAzgsAAM4LgADODEAAzgyAAM4MwADODYAAzg3AAM4OQADODoAAzg8AAM4PwADOEAAAzhBAAM4RAADOEUAAzhKAAM4VwADOFwAAzheAAM4YAADOGUAAzhoAAM4awADOG0AAziSAAM4tgADON0AAzkBAAM5BAADOQYAAzkIAAM5CgADOQwAAzkOAAM5DwADORIAAzkfAAM5MAADOTIAAzk0AAM5NgADOTgAAzk6AAM5PAADOT4AAzlAAAM5UQADOVQAAzlXAAM5WgADOV0AAzlgAAM5YwADOWYAAzlpAAM5awADOaoAAzmsAAM5rgADObAAAzmzAAM5tAADObUAAzm2AAM5twADObkAAzm7AAM5vAADOb0AAzm/AAM5wAADOf8AAzoBAAM6AwADOgUAAzoIAAM6CQADOgoAAzoLAAM6DAADOg4AAzoQAAM6EQADOhIAAzoUAAM6FQADOlQAAzpWAAM6WQADOlsAAzpeAAM6XwADOmAAAzphAAM6YgADOmQAAzpmAAM6ZwADOmgAAzpqAAM6awADOngAAzp5AAM6egADOnwAAzq7AAM6vQADOr8AAzrBAAM6xAADOsUAAzrGAAM6xwADOsgAAzrKAAM6zAADOs0AAzrOAAM60AADOtEAAzsQAAM7EgADOxQAAzsWAAM7GQADOxoAAzsbAAM7HAADOx0AAzsfAAM7IQADOyIAAzsjAAM7JQADOyYAAztlAAM7ZwADO2kAAztrAAM7bgADO28AAztwAAM7cQADO3IAAzt0AAM7dgADO3cAAzt4AAM7egADO3sAAzu6AAM7vAADO74AAzvAAAM7wwADO8QAAzvFAAM7xgADO8cAAzvJAAM7ywADO8wAAzvNAAM7zwADO9AAAzwPAAM8EQADPBMAAzwVAAM8GAADPBkAAzwaAAM8GwADPBwAAzweAAM8IAADPCEAAzwiAAM8JAADPCUAAzxKAAM8bgADPJUAAzy5AAM8vAADPL4AAzzAAAM8wgADPMQAAzzGAAM8xwADPMoAAzzXAAM85gADPOgAAzzqAAM87AADPO4AAzzwAAM88gADPPQAAz0DAAM9BgADPQkAAz0MAAM9DwADPRIAAz0VAAM9GAADPRoAAz1ZAAM9WwADPV0AAz1fAAM9YgADPWMAAz1kAAM9ZQADPWYAAz1oAAM9agADPWsAAz1sAAM9bgADPW8AAz2uAAM9sAADPbIAAz20AAM9twADPbgAAz25AAM9ugADPbsAAz29AAM9vwADPcAAAz3BAAM9wwADPcQAAz4DAAM+BQADPgcAAz4JAAM+DAADPg0AAz4OAAM+DwADPhAAAz4SAAM+FAADPhUAAz4WAAM+GAADPhkAAz5YAAM+WgADPlwAAz5eAAM+YQADPmIAAz5jAAM+ZAADPmUAAz5nAAM+aQADPmoAAz5rAAM+bQADPm4AAz6tAAM+rwADPrEAAz6zAAM+tgADPrcAAz64AAM+uQADProAAz68AAM+vgADPr8AAz7AAAM+wgADPsMAAz8CAAM/BAADPwYAAz8IAAM/CwADPwwAAz8NAAM/DgADPw8AAz8RAAM/EwADPxQAAz8VAAM/FwADPxgAAz9XAAM/WQADP1sAAz9dAAM/YAADP2EAAz9iAAM/YwADP2QAAz9mAAM/aAADP2kAAz9qAAM/bAADP20AAz92AAM/dwADP3kAAz+8AAM/4AADQAQAA0AnAANATgADQG4AA0CVAANAvAADQNwAA0EAAANBJAADQSYAA0EpAANBKwADQS0AA0EvAANBMgADQTUAA0E3AANBOQADQTwAA0E+AANBQAADQUMAA0FGAANBRwADQUwAA0FZAANBXAADQV4AA0FhAANBZAADQWYAA0GLAANBrwADQdYAA0H6AANB/QADQf8AA0IBAANCAwADQgUAA0IHAANCCAADQgsAA0IYAANCKQADQisAA0ItAANCLwADQjEAA0IzAANCNQADQjcAA0I5AANCSgADQk0AA0JQAANCUwADQlYAA0JZAANCXAADQl8AA0JiAANCZAADQqMAA0KlAANCqAADQqoAA0KtAANCrgADQq8AA0KwAANCsQADQrMAA0K1AANCtgADQrcAA0K5AANCugADQsMAA0LEAANCxgADQwUAA0MHAANDCQADQwsAA0MOAANDDwADQxAAA0MRAANDEgADQxQAA0MWAANDFwADQxgAA0MaAANDGwADQ1oAA0NcAANDXgADQ2AAA0NjAANDZAADQ2UAA0NmAANDZwADQ2kAA0NrAANDbAADQ20AA0NvAANDcAADQ68AA0OxAANDtAADQ7YAA0O5AANDugADQ7sAA0O8AANDvQADQ78AA0PBAANDwgADQ8MAA0PFAANDxgADQ88AA0PQAAND0gADRBEAA0QTAANEFQADRBcAA0QaAANEGwADRBwAA0QdAANEHgADRCAAA0QiAANEIwADRCQAA0QmAANEJwADRGYAA0RoAANEawADRG0AA0RwAANEcQADRHIAA0RzAANEdAADRHYAA0R4AANEeQADRHoAA0R8AANEfQADRIoAA0SLAANEjAADRI4AA0TNAANEzwADRNEAA0TTAANE1gADRNcAA0TYAANE2QADRNoAA0TcAANE3gADRN8AA0TgAANE4gADROMAA0UiAANFJAADRScAA0UpAANFLAADRS0AA0UuAANFLwADRTAAA0UyAANFNAADRTUAA0U2AANFOAADRTkAA0VFAANFUgADRVUAA0VYAANFWwADRV4AA0VgAANFZwADRbIAA0XVAANF9QADRhUAA0YXAANGGQADRhsAA0YdAANGIAADRiEAA0YiAANGJQADRiYAA0YoAANGKQADRisAA0YuAANGLwADRjAAA0YzAANGNAADRjkAA0ZGAANGSwADRk0AA0ZPAANGVAADRlcAA0ZaAANGXAADRoEAA0alAANGzAADRvAAA0bzAANG9QADRvcAA0b5AANG+wADRv0AA0b+AANHAQADRw4AA0cfAANHIQADRyMAA0clAANHJwADRykAA0crAANHLQADRy8AA0dAAANHQwADR0YAA0dJAANHTAADR08AA0dSAANHVQADR1gAA0daAANHmQADR5sAA0edAANHnwADR6IAA0ejAANHpAADR6UAA0emAANHqAADR6oAA0erAANHrAADR64AA0evAANH7gADR/AAA0fyAANH9AADR/cAA0f4AANH+QADR/oAA0f7AANH/QADR/8AA0gAAANIAQADSAMAA0gEAANIQwADSEUAA0hIAANISgADSE0AA0hOAANITwADSFAAA0hRAANIUwADSFUAA0hWAANIVwADSFkAA0haAANIZwADSGgAA0hpAANIawADSKoAA0isAANIrgADSLAAA0izAANItAADSLUAA0i2AANItwADSLkAA0i7AANIvAADSL0AA0i/AANIwAADSP8AA0kBAANJAwADSQUAA0kIAANJCQADSQoAA0kLAANJDAADSQ4AA0kQAANJEQADSRIAA0kUAANJFQADSVQAA0lWAANJWAADSVoAA0ldAANJXgADSV8AA0lgAANJYQADSWMAA0llAANJZgADSWcAA0lpAANJagADSakAA0mrAANJrQADSa8AA0myAANJswADSbQAA0m1AANJtgADSbgAA0m6AANJuwADSbwAA0m+AANJvwADSf4AA0oAAANKAgADSgQAA0oHAANKCAADSgkAA0oKAANKCwADSg0AA0oPAANKEAADShEAA0oTAANKFAADSjkAA0pdAANKhAADSqgAA0qrAANKrQADSq8AA0qxAANKswADSrUAA0q2AANKuQADSsYAA0rVAANK1wADStkAA0rbAANK3QADSt8AA0rhAANK4wADSvIAA0r1AANK+AADSvsAA0r+AANLAQADSwQAA0sHAANLCQADS0gAA0tKAANLTAADS04AA0tRAANLUgADS1MAA0tUAANLVQADS1cAA0tZAANLWgADS1sAA0tdAANLXgADS50AA0ufAANLoQADS6MAA0umAANLpwADS6gAA0upAANLqgADS6wAA0uuAANLrwADS7AAA0uyAANLswADS/IAA0v0AANL9gADS/gAA0v7AANL/AADS/0AA0v+AANL/wADTAEAA0wDAANMBAADTAUAA0wHAANMCAADTEcAA0xJAANMSwADTE0AA0xQAANMUQADTFIAA0xTAANMVAADTFYAA0xYAANMWQADTFoAA0xcAANMXQADTJwAA0yeAANMoAADTKIAA0ylAANMpgADTKcAA0yoAANMqQADTKsAA0ytAANMrgADTK8AA0yxAANMsgADTPEAA0zzAANM9QADTPcAA0z6AANM+wADTPwAA0z9AANM/gADTQAAA00CAANNAwADTQQAA00GAANNBwADTUYAA01IAANNSgADTUwAA01PAANNUAADTVEAA01SAANNUwADTVUAA01XAANNWAADTVkAA01bAANNXAADTWUAA01mAANNaAADTXUAA012AANNdwADTXkAA02GAANNhwADTYgAA02KAANNlwADTZgAA02ZAANNmwADTaQAA02zAANNwAADTc8AA03hAANN9QADTgwAA04eAANOJwADTigAA04qAANONwADTjgAA045AANOOwADTjwAA05FAANOTwADTlYAA05eAANOcAADTnUAA056AAAAAAAABAIAAAAAAAB/HwAAAAAAAAAAAAAAAAADTnw= + + APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/APCModel 6.xcdatamodel + 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/WU5ZUllhWXBZf1mOWZ1ZqVm7WcpZ2VnoWfdaBloVWiRaOVo6WkJaTlpiWnFagFqPWpNaolqxWsBaz1reWupa/FsLWxpbKVs4W0dbVltlW3pbe1uDW49bo1uyW8Fb0FvUW+Nb8lwBXBBcH1wrXD1cTFxbXGpceVyIXJdcplyqXKtculzJXNhc7VzuXPZdAl0WXSVdNF1DXUddVl1lXXRdg12SXZ5dsF2/Xc5d3V3sXfteCl4ZXi5eL143XkNeV15mXnVehF6IXpdepl61XsRe017fXvFfAF8PXx5fLV88X0tfWl9vX3BfeF+EX5hfp1+2X8VfyV/YX+df9mAFYBRgIGAyYEFgUGBfYG5giGCJYI9gm2CvYL5gwWDQYN9g7mDxYQBhD2ETYSJhMWEyYTxhPWE+YT9hVGFVYV1haWF9YYxhm2GqYa5hvWHMYdth6mH5YgViF2ImYjViRGJTYmJicWKAYpVilmKeYqpivmLNYtxi62LvYv5jDWMcYytjOmNGY1hjZ2N2Y4VjlGOjY7JjwWPWY9dj32PrY/9kDmQdZCxkMGQ/ZE5kXWRsZHtkh2SZZKhkt2TGZNVk5GTzZQJlBWUUZSNlMmVHZUhlUGVcZXBlf2WOZZ1loWWwZb9lzmXdZexl+GYKZhlmKGY3ZkZmVWZkZnNmiGaJZpFmnWaxZsBmz2beZuJm8WcAZw9nHmctZzlnS2daZ2lneGeHZ5ZnpWe0Z8lnymfSZ95n8mgBaBBoH2gjaDJoQWhQaF9obmh6aIxom2iqaLloyGjXaOZo9WkKaQtpE2kfaTNpQmlRaWBpZGlzaYJpkWmgaa9pu2nNadxp62n6aglqGGonajZqOWpIaldqZmpqaoRqhWqLapdqq2q6ar1qzGrbaupq7Wr8awtrD2seay1rLmtma2draGtpa2pra2tsa21rbmtva3BrcWtya3NrdGt1a3Zrd2t4a3lremt7a3xrfWt+a39rgGuVa5Zrnmuqa75rzWvca+tr72v+bA1sHGwrbDpsRmxYbGdsdmyFbJRso2yybMFs1mzXbN9s62z/bQ5tHW0sbTBtP21ObV1tbG17bYdtmW2obbdtxm3VbeRt824CbhduGG4gbixuQG5Pbl5ubW5xboBuj26ebq1uvG7Ibtpu6W74bwdvFm8lbzRvQ29Yb1lvYW9tb4FvkG+fb65vsm/Bb9Bv32/ub/1wCXAbcCpwOXBIcFdwZnB1cIRwmXCacKJwrnDCcNFw4HDvcPNxAnERcSBxL3E+cUpxXHFrcXpxiXGYcadxtnHFcdpx23Hjce9yA3ISciFyMHI0ckNyUnJhcnByf3KLcp1yrHK7cspy2XLocvdzBnMbcxxzJHMwc0RzU3Nic3FzdXOEc5NzonOxc8BzzHPec+1z/HQLdBp0G3QqdDl0SHRddF50ZnRydIZ0lXSkdLN0t3TGdNV05HTzdQJ1DnUgdS91PnVNdVx1a3V6dYl1nnWfdad1s3XHddZ15XX0dfh2B3YWdiV2NHZDdk92YXZwdn92jnaddqx2u3bKdt924HbodvR3CHcXdyZ3NXc5d0h3V3dmd3V3hHeQd6J3sXfAd8933nftd/x4C3ggeCF4KXg1eEl4WHhneHZ4eniJeJh4p3i2eMV40XjjePJ5AXkQeR95Lnk9eUx5YXlieWp5dnmKeZl5qHm3ebt5ynnZeeh593oGehJ6JHozekJ6UXpgem96fnqNeqJ6o3qrerd6y3raeul6+Hr8ewt7Gnspezh7R3tTe2V7dHuDe5J7oXuwe797znvje+R77Hv4fAx8G3wqfDl8PXxMfFt8anx5fIh8lHymfLV8xHzTfOJ88X0AfQ99JH0lfS19OX1NfVx9a316fX59jX2cfat9un3JfdV95332fgV+FH4jfjJ+QX5QfmV+Zn5ufnp+jn6dfqx+u36/fs5+3X7sfvt/Cn8Wfyh/N39Gf1V/ZH9zf4J/kX+mf6d/r3+7f89/3n/tf/yAAIAPgB6ALYA8gEuAV4BpgHiAh4CWgKWAtIDDgNKA54DogPCA/IEQgR+BLoE9gUGBUIFfgW6BfYGMgZiBqoG5gciB14HmgfWCBIITgiiCKYIxgj2CUYJggm+CfoKCgpGCoIKvgr6CzYLZguuC+oMJgxiDJ4M2g0WDVINpg2qDcoN+g5KDoYOwg7+Dw4PSg+GD8IP/hA6EGoQshDuESoRZhGiEd4SGhJWEqoSrhLOEv4TThOKE8YUAhQSFE4UihTGFQIVPhVuFbYV8hYuFmoWphbiFx4XWheuF7IX0hgCGFIYjhjKGQYZFhlSGY4ZyhoGGkIachq6GvYbMhtuG6ob5hwiHF4cshy2HNYdBh1WHZIdzh4KHhoeVh6SHs4fCh9GH3Yfvh/6IDYgciCuIOohJiFiIbYhuiHaIgoiWiKWItIjDiMeI1ojliPSJA4kSiR6JMIk/iU6JXYlsiXuJiomZia6Jr4m3icOJ14nmifWKBIoIiheKJoo1ikSKU4pfinGKgIqPip6KrYq8isuK2orvivCK+IsEixiLJ4s2i0WLSYtYi2eLdouFi5SLoIuyi8GL0Ivfi+6L/YwMjBuMHow4jDmMP4xLjF+MboxxjICMj4yejKGMsIy/jMOM0ozhjOKM6IzpjP6M/40HjRONJ402jUWNVI1YjWeNdo2FjZSNo42vjcGN0I3fje6N/Y4MjhuOKo4tjjGONY45jkGORI5IjklVJG51bGzXAAkACgALAAwADQAOAA8AEAARABIAEwAUABMAFl8QD194ZF9yb290UGFja2FnZVYkY2xhc3NcX3hkX2NvbW1lbnRzXxAQX3hkX21vZGVsTWFuYWdlcl8QFV9jb25maWd1cmF0aW9uc0J5TmFtZV1feGRfbW9kZWxOYW1lXxAXX21vZGVsVmVyc2lvbklkZW50aWZpZXKAAoEK/IEK+YAAgQr6gACBCvveABgAGQAaABsAHAAdAB4ACgAfACAAIQAiACMAJAAlACYAJwAoACUAEwArACwALQAuAC8AJQAlABNfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASBCveBCvWAAYAEgACBCvaBCvgQAIAFgAOABIAEgABQU1lFU9MANgA3AAoAOABFAFJXTlMua2V5c1pOUy5vYmplY3RzrAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARIAGgAeACIAJgAqAC4AMgA2ADoAPgBCAEawARgBHAEgASQBKAEsATABNAE4ATwBQAFGAEoEDP4EFt4EIRoEBOYEGDYEKyoEGhIEBrIEHh4EGU4EF3oAtW0FQQ1NjaGVkdWxlWUFQQ1Jlc3VsdF8QF0FQQ01lZFRyYWNrZXJNZWRpY2F0aW9uXxARQVBDU3RvcmVkVXNlckRhdGFfEBBBUENTY2hlZHVsZWRUYXNrXxAbQVBDTWVkVHJhY2tlclBvc3NpYmxlRG9zYWdlW0FQQ0RCU3RhdHVzXxAeQVBDTWVkVHJhY2tlclByZXNjcmlwdGlvbkNvbG9yV0FQQ1Rhc2tfEB5BUENNZWRUcmFja2VyRGFpbHlEb3NhZ2VSZWNvcmRfEBtBUENNZWRUcmFja2VySW5mbGF0YWJsZUl0ZW1fEBlBUENNZWRUcmFja2VyUHJlc2NyaXB0aW9u3xAQAGAAYQBiAGMAHQBkAGUAHwBmAGcACgAhAGgAaQAkAGoAawBsACUAJQAQAHAAcQAtACUAawB0ADkAawB3AHgAeV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZVtfaXNBYnN0cmFjdIAUgDWABIAEgAKAFYEDJYAEgBSBAyeABoAUgQW2gBMIEup7gktXb3JkZXJlZNMANgA3AAoAfQB/AFKhAH6AFqEAgIAXgC1eWERfUFN0ZXJlb3R5cGXZAB0AIQCEAAoAJACFAB8AagCGAEYAfgBrAIoAEwAlAC0AeQCOXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBKAFoAUgDSAAIAECIAY0wA2ADcACgCQAJkAUqgAkQCSAJMAlACVAJYAlwCYgBmAGoAbgByAHYAegB+AIKgAmgCbAJwAnQCeAJ8AoAChgCGAJYAmgCeAKYArgC6AMoAtXxATWERQTUNvbXBvdW5kSW5kZXhlc18QEFhEX1BTS19lbGVtZW50SURfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAKwArQCuAB0ArwCwALEAHwCyAAoAIQCzALQAJAC1ABMAtwATAIAAeQB5AHkALQB5AL4AkQB5AHkAEwB5VV90eXBlWF9kZWZhdWx0XF9hc3NvY2lhdGlvbltfaXNSZWFkT25seVlfaXNTdGF0aWNZX2lzVW5pcXVlWl9pc0Rlcml2ZWRaX2lzT3JkZXJlZFxfaXNDb21wb3NpdGVXX2lzTGVhZoAAgCKAAIAXCAgICIAkgBkICIAACNIANwAKAMUAxqCAI9IAyADJAMoAy1okY2xhc3NuYW1lWCRjbGFzc2VzXk5TTXV0YWJsZUFycmF5owDKAMwAzVdOU0FycmF5WE5TT2JqZWN00gDIAMkAzwDQXxAQWERVTUxQcm9wZXJ0eUltcKQA0QDSANMAzV8QEFhEVU1MUHJvcGVydHlJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATABMAEwCAAHkAeQB5AC0AeQC+AJIAeQB5ABMAeYAAgACAAIAXCAgICIAkgBoICIAACN8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATABMAEwCAAHkAeQB5AC0AeQC+AJMAeQB5ABMAeYAAgACAAIAXCAgICIAkgBsICIAACN8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATAPQAEwCAAHkAeQB5AC0AeQC+AJQAeQB5ABMAeYAAgCiAAIAXCAgICIAkgBwICIAACNIANwAKAQIAxqCAI98QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATAQYAEwCAAHkAeQB5AC0AeQC+AJUAeQB5ABMAeYAAgCqAAIAXCAgICIAkgB0ICIAACAjfEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAEwEWABMAgAB5AHkAeQAtAHkAvgCWAHkAeQATAHmAAIAsgACAFwgICAiAJIAeCAiAAAjTADYANwAKASQBJQBSoKCALdIAyADJASgBKV8QE05TTXV0YWJsZURpY3Rpb25hcnmjASgBKgDNXE5TRGljdGlvbmFyed8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATAS0AEwCAAHkAeQB5AC0AeQC+AJcAeQB5ABMAeYAAgC+AAIAXCAgICIAkgB8ICIAACNYAIQAKACQAagAdAB8BOwE8ABMAeQATAC2AMIAxgAAIgABfEBRYREdlbmVyaWNSZWNvcmRDbGFzc9IAyADJAUIBQ11YRFVNTENsYXNzSW1wpgFEAUUBRgFHAUgAzV1YRFVNTENsYXNzSW1wXxASWERVTUxDbGFzc2lmaWVySW1wXxARWERVTUxOYW1lc3BhY2VJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATAUsAEwCAAHkAeQB5AC0AeQC+AJgAeQB5ABMAeYAAgDOAAIAXCAgICIAkgCAICIAACFtBUENTY2hlZHVsZdIAyADJAVoBW18QElhEVU1MU3RlcmVvdHlwZUltcKcBXAFdAV4BXwFgAWEAzV8QElhEVU1MU3RlcmVvdHlwZUltcF1YRFVNTENsYXNzSW1wXxASWERVTUxDbGFzc2lmaWVySW1wXxARWERVTUxOYW1lc3BhY2VJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcNMANgA3AAoBYwF5AFKvEBUBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXiANoA3gDiAOYA6gDuAPIA9gD6AP4BAgEGAQoBDgESARYBGgEeASIBJgEqvEBUBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY6AS4B2gI6Ap4C+gNWA7YEBBIEBG4EEuYEE0IEE54EE/oEFFYEFLIEFQ4EFWoEB4IEFcYEFiIEFn4AtXxASZWZmZWN0aXZlU3RhcnREYXRlVWRlbGF5WG1heENvdW50XnNjaGVkdWxlU3RyaW5nXnNjaGVkdWxlU291cmNlXnJlbWluZGVyT2Zmc2V0WWNyZWF0ZWRBdFZlbmRzT25ec2NoZWR1bGVkVGFza3NYc3RhcnRzT25ZdXBkYXRlZEF0XHNjaGVkdWxlVHlwZV8QD3JlbWluZGVyTWVzc2FnZVdleHBpcmVzWnRpbWVzT2ZEYXlcc2hvdWxkUmVtaW5kWGluQWN0aXZlVXRhc2tzVW5vdGVzWGludGVydmFsXxAQZWZmZWN0aXZlRW5kRGF0Zd8QEgCsAK0ArgGmAB0AsACxAacAHwCvAagAsgAKACEAswC0ACQAtQATABMAEwAlAEYAeQB5AbAALQB5AGsAeQG0AWQAeQB5AbgAeV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgBIICIBNCIAUCIB1gDYICIBMCBLbK5bU0wA2ADcACgG8Ab8AUqIBvQG+gE6AT6IBwAHBgFCAZIAtXxASWERfUFByb3BTdGVyZW90eXBlXxASWERfUEF0dF9TdGVyZW90eXBl2QAdACEBxgAKACQBxwAfAGoByAF6Ab0AawCKABMAJQAtAHkB0F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYBLgE6AFIA0gACABAiAUdMANgA3AAoB0gHbAFKoAdMB1AHVAdYB1wHYAdkB2oBSgFOAVIBVgFaAV4B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kXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCIAUgBSBBlWABIEDJYAUgAKBAyeABIAQgQZ+gQZUgASABIAUgQZkgQZ/gQMlEpegSmfTADYANwAKUPNQ9QBSoQB+gBahUPaBBlaALdkAHQAhUPkACgAkUPoAHwBqUPsAUAB+AGsAigATACUALQB5UQNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBlOAFoAUgDSAAIAECIEGV9MANgA3AApRBVEOAFKoAJEAkgCTAJQAlQCWAJcAmIAZgBqAG4AcgB2AHoAfgCCoUQ9REFERURJRE1EUURVRFoEGWIEGWoEGW4EGXIEGXoEGX4EGYYEGYoAt3xAPAKwArQCuAB0ArwCwALEAHwCyAAoAIQCzALQAJAC1ABNRGgATUPYAeQB5AHkALQB5AL4AkQB5AHkAEwB5gACBBlmAAIEGVggICAiAJIAZCAiAAAjSADcAClEoAMaggCPfEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALU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KUuUAxqCAI9IANwAKUugAxqNS6VDDUuuBBoCBBlGBBoOAI9cACgAhUMYAHQAkUMcAH1DIABMASABIUvIAUAAtgQaCgACBBbeBBbeBBoGBBlMS5KAiy9IAyADJUvZS918QFlhEVU1MR2VuZXJhbGl6YXRpb25JbXCkUvhS+VL6AM1fEBZYRFVNTEdlbmVyYWxpemF0aW9uSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDXAAoAIVDGAB0AJFDHAB9QyAATAE0ATVMAAFAALYEGgoAAgQaEgQaEgQdBgQZT3xAQUwNTBFMFUwYAHVMHUwgAH1MJUwoACgAhUwtTDAAkAGoAa1MOACUAJQAQUxIAcQAtACUAawB0AEAAa1MZUxoAeV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYAUgQaVgASABIACgQaGgQMlgASAFIEDJ4ANgBSBB0CBBoUIEoYsfR/TADYANwAKUx5TIABSoQB+gBahUyGBBoeALdkAHQAhUyQACgAkUyUAHwBqUyYATQB+AGsAigATACUALQB5Uy5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBoSAFoAUgDSAAIAECIEGiNM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fgACBBdgICAgIgCSBATAICIAACN8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATAQYAE0qBAHkAeQB5AC0AeQC+DJoAeQB5ABMAeYAAgCqAAIEF2AgICAiAJIEBMQgIgAAI3xAPAKwArQCuAB0ArwCwALEAHwCyAAoAIQCzALQAJAC1ABNMUAATSoEAeQB5AHkALQB5AL4MmwB5AHkAEwB5gACBCBOAAIEF2AgICAiAJIEBMggIgAAI0gA3AApqZwDGoVLpgQaAgCPfEBBqa2psam1qbgAdam9qcAAfanFqcgAKACFqc2p0ACQAagBranYAJQAlABBqegBxAC0AJQBrAHQAPABraoFqggB5XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgBSBCFeABIAEgAKBCEiBAyWABIAUgQMngAmAFIEKyYEIRwgTAAAAAQcoNa/TADYANwAKaoZqiABSoQB+gBahaomBCEmALdkAHQAhaowACgAkao0AHwBqao4ASQB+AGsAigATACUALQB5apZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBCEaAFoAUgDSAAIAECIEIStMANgA3AApqmGqhAFKoAJEAkgCTAJQAlQCWAJcAmIAZgBqAG4AcgB2AHoAfgCCoaqJqo2qkaqVqpmqnaqhqqYEIS4EITYEIToEIT4EIUYEIUoEIVIEIVYAt3xAPAKwArQCuAB0ArwCwALEAHwCyAAoAIQCzALQAJAC1ABNqrQATaokAeQB5AHkALQB5AL4AkQB5AHkAEwB5gACBCEyAAIEISQgICAiAJIAZCAiAAAjSADcACmq7AMaggCPfEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAEwATABNqiQB5AHkAeQAtAHkAvgCSAHkAeQATAHmAAIAAgACBCEkICAgIgCSAGggIgAAI3xAPAKwArQCuAB0ArwCwALEAHwCyAAoAIQCzALQAJAC1ABMAEwATaokAeQB5AHkALQB5AL4AkwB5AHkAEwB5gACAAIAAgQhJCAgICIAkgBsICIAACN8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATat0AE2qJAHkAeQB5AC0AeQC+AJQAeQB5ABMAeYAAgQhQgACBCEkICAgIgCSAHAgIgAAI0gA3AApq6wDGoIAj3xAPAKwArQCuAB0ArwCwALEAHwCyAAoAIQCzALQAJAC1ABMBBgATaokAeQB5AHkALQB5AL4AlQB5AHkAEwB5gACAKoAAgQhJCAgICIAkgB0ICIAACN8QDwCsAK0ArgAdAK8AsACxAB8AsgAKACEAswC0ACQAtQATav4AE2qJAHkAeQB5AC0AeQC+AJYAeQB5ABMAeYAAgQhTgACBCEkICAgIgCSAHggIgAAI0wA2ADcACmsMaw0AUqCggC3fEA8ArACtAK4AHQCvALAAsQAfALIACgAhALMAtAAkALUAEwEtABNqiQB5AHkAeQAtAHkAvgCXAHkAeQATAHmAAIAvgACBCEkICAgIgCSAHwgIgAAI3xAPAKwArQCuAB0ArwCwALEAHwCyAAoAIQCzALQAJAC1ABNrIAATaokAeQB5AHkALQB5AL4AmAB5AHkAEwB5gACBCFaAAIEISQgICAiAJIAgCAiAAAhfEBFBUENTdG9yZWRVc2VyRGF0YdMANgA3AAprL2tKAFKvEBprMGsxazJrM2s0azVrNms3azhrOWs6aztrPGs9az5rP2tAa0FrQmtDa0RrRWtGa0drSGtJgQhYgQhZgQhagQhbgQhcgQhdgQhegQhfgQhggQhhgQhigQhjgQhkgQhlgQhmgQhngQhogQhpgQhqgQhrgQhsgQhtgQhugQhvgQhwgQhxrxAaa0trTGtNa05rT2tQa1FrUmtTa1RrVWtWa1drWGtZa1prW2tca11rXmtfa2BrYWtia2NrZIEIcoEIiYEIoIEIt4EIzoEI5YEI/IEJFIEJK4EJQoEJWYEJcIEJh4EJnoEJtYEJzIEJ44EJ+oEKEYEKKIEKP4EKVoEKbYEKhIEKm4EKsoAtXnRhc2tDb21wbGV0aW9uXxAUY29uc2VudFNpZ25hdHVyZURhdGVfEBVjb25zZW50U2lnbmF0dXJlSW1hZ2VccHJvZmlsZUltYWdlXWdsdWNvc2VMZXZlbHNZc2xlZXBUaW1lXxAVc2hhcmVkT3B0aW9uU2VsZWN0aW9uWWJpcnRoRGF0ZV8QD3NlcnZlckNvbnNlbnRlZF8QFGN1c3RvbVN1cnZleVF1ZXN0aW9uXxAPaGFzSGVhcnREaXNlYXNlXxASc2Vjb25kYXJ5SW5mb1NhdmVkWWJsb29kVHlwZV8QEW1lZGljYWxDb25kaXRpb25zWndha2VVcFRpbWVfEBRjb25zZW50U2lnbmF0dXJlTmFtZV8QE2hvbWVMb2NhdGlvbkFkZHJlc3NfEA9ob21lTG9jYXRpb25MYXRdYmlvbG9naWNhbFNleF11c2VyQ29uc2VudGVkWWV0aG5pY2l0eV8QHGRhaWx5U2NhbGVzQ29tcGxldGlvbkNvdW50ZXJcYWxsb3dDb250YWN0W3Bob25lTnVtYmVyXxAQaG9tZUxvY2F0aW9uTG9uZ1ttZWRpY2F0aW9uc98QEgCsAK0ArmuBAB0AsACxa4IAHwCva4MAsgAKACEAswC0ACQAtQATABMAEwAlAEkAeQB5a4sALQB5AGsAeQG0azAAeQB5a5MAeV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQhGCAiBCHQIgBQIgHWBCFgICIEIcwgSxtvnk9MANgA3AAprl2uaAFKiAb0BvoBOgE+ia5trnIEIdYEIgIAt2QAdACFrnwAKACRroAAfAGproWtLAb0AawC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nBAAAJwYAACcIAAAnCgAAJygAACdGAAAnWQAAJ20AACeCAAAnnwAAJ7MAACfJAAAoCAAAKAoAACgMAAAoDgAAKBAAACgRAAAoEgAAKBMAACgUAAAoFgAAKBgAACgZAAAoGgAAKBwAACgdAAAoXAAAKF4AAChgAAAoYgAAKGQAAChlAAAoZgAAKGcAAChoAAAoagAAKGwAAChtAAAobgAAKHAAAChxAAAosAAAKLIAACi0AAAotgAAKLgAACi5AAAougAAKLsAACi8AAAovgAAKMAAACjBAAAowgAAKMQAACjFAAAo0gAAKNMAACjUAAAo1gAAKRUAACkXAAApGQAAKRsAACkdAAApHgAAKR8AACkgAAApIQAAKSMAACklAAApJgAAKScAACkpAAApKgAAKSsAAClqAAApbAAAKW4AAClwAAApcgAAKXMAACl0AAApdQAAKXYAACl4AAApegAAKXsAACl8AAApfgAAKX8AACm+AAApwAAAKcIAACnEAAApxgAAKccAACnIAAApyQAAKcoAACnMAAApzgAAKc8AACnQAAAp0gAAKdMAACoSAAAqFAAAKhYAACoYAAAqGgAAKhsAACocAAAqHQAAKh4AACogAAAqIgAAKiMAACokAAAqJgAAKicAACpmAAAqaAAAKmoAACpsAAAqbgAAKm8AACpwAAAqcQAAKnIAACp0AAAqdgAAKncAACp4AAAqegAAKnsAACqgAAAqxAAAKusAACsPAAArEQAAKxMAACsVAAArFwAAKxkAACsbAAArHAAAKx4AACsrAAArOgAAKzwAACs+AAArQAAAK0IAACtEAAArRgAAK0gAACtXAAArWQAAK1sAACtdAAArXwAAK2EAACtjAAArZQAAK2cAACuHAAArsgAAK8wAACvlAAAr/wAALB8AACxCAAAsgQAALIMAACyFAAAshwAALIkAACyKAAAsiwAALIwAACyNAAAsjwAALJEAACySAAAskwAALJUAACyWAAAs1QAALNcAACzZAAAs2wAALN0AACzeAAAs3wAALOAAACzhAAAs4wAALOUAACzmAAAs5wAALOkAACzqAAAtKQAALSsAAC0tAAAtLwAALTEAAC0yAAAtMwAALTQAAC01AAAtNwAALTkAAC06AAAtOwAALT0AAC0+AAAtfQAALX8AAC2BAAAtgwAALYUAAC2GAAAthwAALYgAAC2JAAAtiwAALY0AAC2OAAAtjwAALZEAAC2SAAAtlQAALdQAAC3WAAAt2AAALdoAAC3cAAAt3QAALd4AAC3fAAAt4AAALeIAAC3kAAAt5QAALeYAAC3oAAAt6QAALigAAC4qAAAuLAAALi4AAC4wAAAuMQAALjIAAC4zAAAuNAAALjYAAC44AAAuOQAALjoAAC48AAAuPQAALnwAAC5+AAAugAAALoIAAC6EAAAuhQAALoYAAC6HAAAuiAAALooAAC6MAAAujQAALo4AAC6QAAAukQAALpoAAC6oAAAutQAALsMAAC7QAAAu4wAALvoAAC8MAAAvVwAAL3oAAC+aAAAvugAAL7wAAC++AAAvwAAAL8IAAC/EAAAvxQAAL8YAAC/IAAAvyQAAL8sAAC/MAAAvzgAAL9AAAC/RAAAv0gAAL9QAAC/VAAAv2gAAL+cAAC/sAAAv7gAAL/AAAC/1AAAv9wAAL/kAAC/7AAAwIAAAMEQAADBrAAAwjwAAMJEAADCTAAAwlQAAMJcAADCZAAAwmwAAMJwAADCeAAAwqwAAMLwAADC+AAAwwAAAMMIAADDEAAAwxgAAMMgAADDKAAAwzAAAMN0AADDfAAAw4QAAMOMAADDlAAAw5wAAMOkAADDrAAAw7QAAMO8AADEuAAAxMAAAMTIAADE0AAAxNgAAMTcAADE4AAAxOQAAMToAADE8AAAxPgAAMT8AADFAAAAxQgAAMUMAADGCAAAxhAAAMYYAADGIAAAxigAAMYsAADGMAAAxjQAAMY4AADGQAAAxkgAAMZMAADGUAAAxlgAAMZcAADHWAAAx2AAAMdoAADHcAAAx3gAAMd8AADHgAAAx4QAAMeIAADHkAAAx5gAAMecAADHoAAAx6gAAMesAADH4AAAx+QAAMfoAADH8AAAyOwAAMj0AADI/AAAyQQAAMkMAADJEAAAyRQAAMkYAADJHAAAySQAAMksAADJMAAAyTQAAMk8AADJQAAAyjwAAMpEAADKTAAAylQAAMpcAADKYAAAymQAAMpoAADKbAAAynQAAMp8AADKgAAAyoQAAMqMAADKkAAAy4wAAMuUAADLnAAAy6QAAMusAADLsAAAy7QAAMu4AADLvAAAy8QAAMvMAADL0AAAy9QAAMvcAADL4AAAzNwAAMzkAADM7AAAzPQAAMz8AADNAAAAzQQAAM0IAADNDAAAzRQAAM0cAADNIAAAzSQAAM0sAADNMAAAziwAAM40AADOPAAAzkQAAM5MAADOUAAAzlQAAM5YAADOXAAAzmQAAM5sAADOcAAAznQAAM58AADOgAAAzxQAAM+kAADQQAAA0NAAANDYAADQ4AAA0OgAANDwAADQ+AAA0QAAANEEAADRDAAA0UAAANF8AADRhAAA0YwAANGUAADRnAAA0aQAANGsAADRtAAA0fAAANH4AADSAAAA0ggAANIQAADSGAAA0iAAANIoAADSMAAA0ywAANM0AADTPAAA00QAANNMAADTUAAA01QAANNYAADTXAAA02QAANNsAADTcAAA03QAANN8AADTgAAA1HwAANSEAADUjAAA1JQAANScAADUoAAA1KQAANSoAADUrAAA1LQAANS8AADUwAAA1MQAANTMAADU0AAA1cwAANXUAADV3AAA1eQAANXsAADV8AAA1fQAANX4AADV/AAA1gQAANYMAADWEAAA1hQAANYcAADWIAAA1xwAANckAADXLAAA1zQAANc8AADXQAAA10QAANdIAADXTAAA11QAANdcAADXYAAA12QAANdsAADXcAAA13wAANh4AADYgAAA2IgAANiQAADYmAAA2JwAANigAADYpAAA2KgAANiwAADYuAAA2LwAANjAAADYyAAA2MwAANnIAADZ0AAA2dgAANngAADZ6AAA2ewAANnwAADZ9AAA2fgAANoAAADaCAAA2gwAANoQAADaGAAA2hwAANsYAADbIAAA2ygAANswAADbOAAA2zwAANtAAADbRAAA20gAANtQAADbWAAA21wAANtgAADbaAAA22wAANyYAADdJAAA3aQAAN4kAADeLAAA3jQAAN48AADeRAAA3kwAAN5QAADeVAAA3lwAAN5gAADeaAAA3mwAAN50AADefAAA3oAAAN6EAADejAAA3pAAAN6kAADe2AAA3uwAAN70AADe/AAA3xAAAN8YAADfIAAA3ygAAN+8AADgTAAA4OgAAOF4AADhgAAA4YgAAOGQAADhmAAA4aAAAOGoAADhrAAA4bQAAOHoAADiLAAA4jQAAOI8AADiRAAA4kwAAOJUAADiXAAA4mQAAOJsAADisAAA4rgAAOLAAADiyAAA4tAAAOLYAADi4AAA4ugAAOLwAADi+AAA4/QAAOP8AADkBAAA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D2QAAQ9sAAEPdAABD3wAAQ+AAAEPiAABD7wAAQ/4AAEQAAABEAgAARAQAAEQGAABECAAARAoAAEQMAABEGwAARB0AAEQfAABEIQAARCMAAEQlAABEJwAARCkAAEQrAABEagAARGwAAERuAABEcAAARHIAAERzAABEdAAARHUAAER2AABEeAAARHoAAER7AABEfAAARH4AAER/AABEvgAARMAAAETCAABExAAARMYAAETHAABEyAAARMkAAETKAABEzAAARM4AAETPAABE0AAARNIAAETTAABFEgAARRQAAEUWAABFGAAARRoAAEUbAABFHAAARR0AAEUeAABFIAAARSIAAEUjAABFJAAARSYAAEUnAABFZgAARWgAAEVqAABFbAAARW4AAEVvAABFcAAARXEAAEVyAABFdAAARXYAAEV3AABFeAAARXoAAEV7AABFugAARbwAAEW+AABFwAAARcIAAEXDAABFxAAARcUAAEXGAABFyAAARcoAAEXLAABFzAAARc4AAEXPAABGDgAARhAAAEYSAABGFAAARhYAAEYXAABGGAAARhkAAEYaAABGHAAARh4AAEYfAABGIAAARiIAAEYjAABGYgAARmQAAEZmAABGaAAARmoAAEZrAABGbAAARm0AAEZuAABGcAAARnIAAEZzAABGdAAARnYAAEZ3AABGwgAARuUAAEcFAABHJQAARycAAEcpAABHKwAARy0AAEcvAABHMAAARzEAAEczAABHNAAARzYAAEc3AABHOQAARzsAAEc8AABHPQAARz8AAEdAAABHRQAAR1IAAEdXAABHWQAAR1sAAEdgAABHYgAAR2QAAEdmAABHiwAAR68AAEfWAABH+gAAR/wAAEf+AABIAAAASAIAAEgEAABIBgAASAcAAEgJAABIFgAASCcAAEgpAABIKwAASC0AAEgvAABIMQAASDMAAEg1AABINwAASEgAAEhKAABITAAASE4AAEhQAABIUgAASFQAAEhWAABIWAAASFoAAEiZAABImwAASJ0AAEifAABIoQAASKIAAEijAABIpAAASKUAAEinAABIqQAASKoAAEirAABIrQAASK4AAEjtAABI7wAASPEAAEjzAABI9QAASPYAAEj3AABI+AAASPkAAEj7AABI/QAASP4AAEj/AABJAQAASQIAAElBAABJQwAASUUAAElHAABJSQAASUoAAElLAABJTAAASU0AAElPAABJUQAASVIAAElTAABJVQAASVYAAEljAABJZAAASWUAAElnAABJpgAASagAAEmqAABJrAAASa4AAEmvAABJsAAASbEAAEmyAABJtAAASbYAAEm3AABJuAAASboAAEm7AABJ+gAASfwAAEn+AABKAAAASgIAAEoDAABKBAAASgUAAEoGAABKCAAASgoAAEoLAABKDAAASg4AAEoPAABKTgAASlAAAEpSAABKVAAASlYAAEpXAABKWAAASlkAAEpaAABKXAAASl4AAEpfAABKYAAASmIAAEpjAABKogAASqQAAEqmAABKqAAASqoAAEqrAABKrAAASq0AAEquAABKsAAASrIAAEqzAABKtAAASrYAAEq3AABK9gAASvgAAEr6AABK/AAASv4AAEr/AABLAAAASwEAAEsCAABLBAAASwYAAEsHAABLCAAASwoAAEsLAABLMAAAS1QAAEt7AABLnwAAS6EAAEujAABLpQAAS6cAAEupAABLqwAAS6wAAEuuAABLuwAAS8oAAEvMAABLzgAAS9AAAEvSAABL1AAAS9YAAEvYAABL5wAAS+kAAEvrAABL7QAAS+8AAEvxAABL8wAAS/UAAEv3AABMNgAATDgAAEw6AABMPAAATD4AAEw/AABMQAAATEEAAExCAABMRAAATEYAAExHAABMSAAATEoAAExLAABMigAATIwAAEyOAABMkAAATJIAAEyTAABMlAAATJUAAEyWAABMmAAATJoAAEybAABMnAAATJ4AAEyfAABM3gAATOAAAEziAABM5AAATOYAAEznAABM6AAATOkAAEzqAABM7AAATO4AAEzvAABM8AAATPIAAEzzAABNMgAATTQAAE02AABNOAAATToAAE07AABNPAAATT0AAE0+AABNQAAATUIAAE1DAABNRAAATUYAAE1HAABNhgAATYgAAE2KAABNjAAATY4AAE2PAABNkAAATZEAAE2SAABNlAAATZYAAE2XAABNmAAATZoAAE2bAABN2gAATdwAAE3eAABN4AAATeIAAE3jAABN5AAATeUAAE3mAABN6AAATeoAAE3rAABN7AAATe4AAE3vAABOLgAATjAAAE4yAABONAAATjYAAE43AABOOAAATjkAAE46AABOPAAATj4AAE4/AABOQAAATkIAAE5DAABOjgAATrEAAE7RAABO8QAATvMAAE71AABO9wAATvkAAE77AABO/AAATv0AAE7/AABPAAAATwIAAE8DAABPBQAATwcAAE8IAABPCQAATwsAAE8MAABPEQAATx4AAE8jAABPJQAATycAAE8sAABPLgAATzAAAE8yAABPVwAAT3sAAE+iAABPxgAAT8gAAE/KAABPzAAAT84AAE/QAABP0gAAT9MAAE/VAABP4gAAT/MAAE/1AABP9wAAT/kAAE/7AABP/QAAT/8AAFABAABQAwAAUBQAAFAWAABQGAAAUBoAAFAcAABQHgAAUCAAAFAiAABQJAAAUCYAAFBlAABQZwAAUGkAAFBrAABQbQAAUG4AAFBvAABQcAAAUHEAAFBzAABQdQAAUHYAAFB3AABQeQAAUHoAAFC5AABQuwAAUL0AAFC/AABQwQAAUMIAAFDDAABQxAAAUMUAAFDHAABQyQAAUMoAAFDLAABQzQAAUM4AAFENAABRDwAAUREAAFETAABRFQAAURYAAFEXAABRGAAAURkAAFEbAABRHQAAUR4AAFEfAABRIQAAUSIAAFEvAABRMAAAUTEAAFEzAABRcgAAUXQAAFF2AABReAAAUXoAAFF7AABRfAAAUX0AAFF+AABRgAAAUYIAAFGDAABRhAAAUYYAAFGHAABRxgAAUcgAAFHKAABRzAAAUc4AAFHPAABR0AAAUdEAAFHSAABR1AAAUdYAAFHXAABR2AAAUdoAAFHbAABSGgAAUhwAAFIeAABSIAAAUiIAAFIjAABSJAAAUiUAAFImAABSKAAAUioAAFIrAABSLAAAUi4AAFIvAABSbgAAUnAAAFJyAABSdAAAUnYAAFJ3AABSeAAAUnkAAFJ6AABSfAAAUn4AAFJ/AABSgAAAUoIAAFKDAABSwgAAUsQAAFLGAABSyAAAUsoAAFLLAABSzAAAUs0AAFLOAABS0AAAUtIAAFLTAABS1AAAUtYAAFLXAABS/AAAUyAAAFNHAABTawAAU20AAFNvAABTcQAAU3MAAFN1AABTdwAAU3gAAFN6AABThwAAU5YAAFOYAABTmgAAU5wAAFOeAABToAAAU6IAAFOkAABTswAAU7UAAFO3AABTuQAAU7sAAFO9AABTvwAAU8EAAFPDAABUAgAAVAQAAFQGAABUCAAAVAoAAFQLAABUDAAAVA0AAFQOAABUEAAAVBIAAFQTAABUFAAAVBYAAFQXAABUVgAAVFgAAFRaAABUXAAAVF4AAFRfAABUYAAAVGEAAFRiAABUZAAAVGYAAFRnAABUaAAAVGoAAFRrAABUqgAAVKwAAFSuAABUsAAAVLIAAFSzAABUtAAAVLUAAFS2AABUuAAAVLoAAFS7AABUvAAAVL4AAFS/AABU/gAAVQAAAFUCAABVBAAAVQYAAFUHAABVCAAAVQkAAFUKAABVDAAAVQ4AAFUPAABVEAAAVRIAAFUTAABVFgAAVVUAAFVXAABVWQAAVVsAAFVdAABVXgAAVV8AAFVgAABVYQAAVWMAAFVlAABVZgAAVWcAAFVpAABVagAAVakAAFWrAABVrQAAVa8AAFWxAABVsgAAVbMAAFW0AABVtQAAVbcAAFW5AABVugAAVbsAAFW9AABVvgAAVf0AAFX/AABWAQAAVgMAAFYFAABWBgAAVgcAAFYIAABWCQAAVgsAAFYNAABWDgAAVg8AAFYRAABWEgAAVl0AAFaAAABWoAAAVsAAAFbCAABWxAAAVsYAAFbIAABWygAAVssAAFbMAABWzgAAVs8AAFbRAABW0gAAVtQAAFbWAABW1wAAVtgAAFbaAABW2wAAVuAAAFbtAABW8gAAVvQAAFb2AABW+wAAVv0AAFb/AABXAQAAVyYAAFdKAABXcQAAV5UAAFeXAABXmQAAV5sAAFedAABXnwAAV6EAAFeiAABXpAAAV7EAAFfCAABXxAAAV8YAAFfIAABXygAAV8wAAFfOAABX0AAAV9IAAFfjAABX5QAAV+cAAFfpAABX6wAAV+0AAFfvAABX8QAAV/MAAFf1AABYNAAAWDYAAFg4AABYOgAAWDwAAFg9AABYPgAAWD8AAFhAAABYQgAAWEQAAFhFAABYRgAAWEgAAFhJAABYiAAAWIoAAFiMAABYjgAAWJAAAFiRAABYkgAAWJMAAFiUAABYlgAAWJgAAFiZAABYmgAAWJwAAFidAABY3AAAWN4AAFjgAABY4gAAWOQAAFjlAABY5gAAWOcAAFjoAABY6gAAWOwAAFjtAABY7gAAWPAAAFjxAABY/gAAWP8AAFkAAABZAgAAWUEAAFlDAABZRQAAWUcAAFlJAABZSgAAWUsAAFlMAABZTQAAWU8AAFlRAABZUgAAWVMAAFlVAABZVgAAWZUAAFmXAABZmQAAWZsAAFmdAABZngAAWZ8AAFmgAABZoQAAWaMAAFmlAABZpgAAWacAAFmpAABZqgAAWekAAFnrAABZ7QAAWe8AAFnxAABZ8gAAWfMAAFn0AABZ9QAAWfcAAFn5AABZ+gAAWfsAAFn9AABZ/gAAWj0AAFo/AABaQQAAWkMAAFpFAABaRgAAWkcAAFpIAABaSQAAWksAAFpNAABaTgAAWk8AAFpRAABaUgAAWpEAAFqTAABalQAAWpcAAFqZAABamgAAWpsAAFqcAABanQAAWp8AAFqhAABaogAAWqMAAFqlAABapgAAWssAAFrvAABbFgAAWzoAAFs8AABbPgAAW0AAAFtCAABbRAAAW0YAAFtHAABbSQAAW1YAAFtlAABbZwAAW2kAAFtrAABbbQAAW28AAFtxAABbcwAAW4IAAFuEAABbhgAAW4gAAFuLAABbjgAAW5EAAFuUAABblgAAW9UAAFvXAABb2QAAW9sAAFvdAABb3gAAW98AAFvgAABb4QAAW+MAAFvlAABb5gAAW+cAAFvpAABb6gAAXCkAAFwrAABcLQAAXC8AAFwxAABcMgAAXDMAAFw0AABcNQAAXDcAAFw5AABcOgAAXDsAAFw9AABcPgAAXH0AAFx/AABcgQAAXIMAAFyFAABchgAAXIcAAFyIAABciQAAXIsAAFyNAABcjgAAXI8AAFyRAABckgAAXNEAAFzTAABc1QAAXNcAAFzZAABc2gAAXNsAAFzcAABc3QAAXN8AAFzhAABc4gAAXOMAAFzlAABc5gAAXSUAAF0nAABdKQAAXSsAAF0tAABdLgAAXS8AAF0wAABdMQAAXTMAAF01AABdNgAAXTcAAF05AABdOgAAXXkAAF17AABdfQAAXX8AAF2BAABdggAAXYMAAF2EAABdhQAAXYcAAF2JAABdigAAXYsAAF2NAABdjgAAXc0AAF3PAABd0QAAXdMAAF3VAABd1gAAXdcAAF3YAABd2QAAXdsAAF3dAABd3gAAXd8AAF3hAABd4gAAXi0AAF5QAABecAAAXpAAAF6SAABelAAAXpYAAF6YAABemgAAXpsAAF6cAABenwAAXqAAAF6iAABeowAAXqUAAF6nAABeqAAAXqkAAF6sAABerQAAXrIAAF6/AABexAAAXsYAAF7IAABezQAAXtAAAF7TAABe1QAAXvoAAF8eAABfRQAAX2kAAF9sAABfbgAAX3AAAF9yAABfdAAAX3YAAF93AABfegAAX4cAAF+YAABfmgAAX5wAAF+eAABfoAAAX6IAAF+kAABfpgAAX6gAAF+5AABfvAAAX78AAF/CAABfxQAAX8gAAF/LAABfzgAAX9EAAF/TAABgEgAAYBQAAGAWAABgGAAAYBsAAGAcAABgHQAAYB4AAGAfAABgIQAAYCMAAGAkAABgJQAAYCcAAGAoAABgZwAAYGkAAGBrAABgbQAAYHAAAGBxAABgcgAAYHMAAGB0AABgdgAAYHgAAGB5AABgegAAYHwAAGB9AABgvAAAYL4AAGDBAABgwwAAYMYAAGDHAABgyAAAYMkAAGDKAABgzAAAYM4AAGDPAABg0AAAYNIAAGDTAABg4AAAYOEAAGDiAABg5AAAYSMAAGElAABhJwAAYSkAAGEsAABhLQAAYS4AAGEvAABhMAAAYTIAAGE0AABhNQAAYTYAAGE4AABhOQAAYXgAAGF6AABhfAAAYX4AAGGBAABhggAAYYMAAGGEAABhhQAAYYcAAGGJAABhigAAYYsAAGGNAABhjgAAYc0AAGHPAABh0QAAYdMAAGHWAABh1wAAYdgAAGHZAABh2gAAYdwAAGHeAABh3wAAYeAAAGHiAABh4wAAYiIAAGIkAABiJgAAYigAAGIrAABiLAAAYi0AAGIuAABiLwAAYjEAAGIzAABiNAAAYjUAAGI3AABiOAAAYncAAGJ5AABiewAAYn0AAGKAAABigQAAYoIAAGKDAABihAAAYoYAAGKIAABiiQAAYooAAGKMAABijQAAYrIAAGLWAABi/QAAYyEAAGMkAABjJgAAYygAAGMqAABjLAAAYy4AAGMvAABjMgAAYz8AAGNOAABjUAAAY1IAAGNUAABjVgAAY1gAAGNaAABjXAAAY2sAAGNuAABjcQAAY3QAAGN3AABjegAAY30AAGOAAABjggAAY8EAAGPDAABjxQAAY8cAAGPKAABjywAAY8wAAGPNAABjzgAAY9AAAGPSAABj0wAAY9QAAGPWAABj1wAAZBYAAGQYAABkGgAAZBwAAGQfAABkIAAAZCEAAGQiAABkIwAAZCUAAGQnAABkKAAAZCkAAGQrAABkLAAAZGsAAGRtAABkbwAAZHEAAGR0AABkdQAAZHYAAGR3AABkeAAAZHoAAGR8AABkfQAAZH4AAGSAAABkgQAAZMAAAGTCAABkxAAAZMYAAGTJAABkygAAZMsAAGTMAABkzQAAZM8AAGTRAABk0gAAZNMAAGTVAABk1gAAZRUAAGUXAABlGQAAZRsAAGUeAABlHwAAZSAAAGUhAABlIgAAZSQAAGUmAABlJwAAZSgAAGUqAABlKwAAZWoAAGVsAABlbgAAZXAAAGVzAABldAAAZXUAAGV2AABldwAAZXkAAGV7AABlfAAAZX0AAGV/AABlgAAAZb8AAGXBAABlwwAAZcUAAGXIAABlyQAAZcoAAGXLAABlzAAAZc4AAGXQAABl0QAAZdIAAGXUAABl1QAAZiAAAGZDAABmYwAAZoMAAGaFAABmhwAAZokAAGaLAABmjQAAZo4AAGaPAABmkgAAZpMAAGaVAABmlgAAZpkAAGabAABmnAAAZp0AAGagAABmoQAAZqYAAGazAABmuAAAZroAAGa9AABmwgAAZsUAAGbIAABmygAAZt0AAGcCAABnJgAAZ00AAGdxAABndAAAZ3YAAGd4AABnegAAZ3wAAGd+AABnfwAAZ4IAAGePAABnoAAAZ6IAAGekAABnpgAAZ6gAAGeqAABnrAAAZ64AAGewAABnwQAAZ8QAAGfHAABnygAAZ80AAGfQAABn0wAAZ9YAAGfZAABn2wAAaBoAAGgcAABoHgAAaCAAAGgjAABoJAAAaCUAAGgmAABoJwAAaCkAAGgrAABoLAAAaC0AAGgvAABoMAAAaG8AAGhxAABocwAAaHUAAGh4AABoeQAAaHoAAGh7AABofAAAaH4AAGiAAABogQAAaIIAAGiEAABohQAAaMQAAGjGAABoyQAAaMsAAGjOAABozwAAaNAAAGjRAABo0gAAaNQAAGjWAABo1wAAaNgAAGjaAABo2wAAaOgAAGjpAABo6gAAaOwAAGkrAABpLQAAaS8AAGkxAABpNAAAaTUAAGk2AABpNwAAaTgAAGk6AABpPAAAaT0AAGk+AABpQAAAaUEAAGmAAABpggAAaYQAAGmGAABpiQAAaYoAAGmLAABpjAAAaY0AAGmPAABpkQAAaZIAAGmTAABplQAAaZYAAGnVAABp1wAAadkAAGnbAABp3gAAad8AAGngAABp4QAAaeIAAGnkAABp5gAAaecAAGnoAABp6gAAaesAAGoqAABqLAAAai4AAGowAABqMwAAajQAAGo1AABqNgAAajcAAGo5AABqOwAAajwAAGo9AABqPwAAakAAAGp/AABqgQAAaoMAAGqFAABqiAAAaokAAGqKAABqiwAAaowAAGqOAABqkAAAapEAAGqSAABqlAAAapUAAGq6AABq3gAAawUAAGspAABrLAAAay8AAGsxAABrMwAAazUAAGs3AABrOAAAazsAAGtIAABrVwAAa1oAAGtdAABrYAAAa2MAAGtmAABraQAAa2wAAGt7AABrfgAAa4EAAGuEAABrhwAAa4oAAGuNAABrkAAAa5IAAGukAABruAAAa8oAAGvfAABr8QAAbAAAAGwdAABsXAAAbF4AAGxhAABsYwAAbGYAAGxnAABsaAAAbGkAAGxqAABsbAAAbG8AAGxwAABscQAAbHMAAGx0AABsswAAbLUAAGy4AABsugAAbL0AAGy+AABsvwAAbMAAAGzBAABswwAAbMYAAGzHAABsyAAAbMoAAGzLAABszQAAbQwAAG0OAABtEQAAbRMAAG0WAABtFwAAbRgAAG0ZAABtGgAAbRwAAG0fAABtIAAAbSEAAG0jAABtJAAAbWMAAG1lAABtaAAAbWoAAG1tAABtbgAAbW8AAG1wAABtcQAAbXMAAG12AABtdwAAbXgAAG16AABtewAAbb4AAG3iAABuBgAAbikAAG5QAABucAAAbpcAAG6+AABu3gAAbwIAAG8mAABvKAAAbysAAG8tAABvLwAAbzEAAG80AABvNwAAbzkAAG87AABvPgAAb0AAAG9CAABvRQAAb0gAAG9JAABvTgAAb1sAAG9eAABvYAAAb2MAAG9mAABvaAAAb40AAG+xAABv2AAAb/wAAG//AABwAQAAcAMAAHAFAABwBwAAcAkAAHAKAABwDQAAcBoAAHArAABwLQAAcC8AAHAxAABwMwAAcDUAAHA3AABwOQAAcDsAAHBMAABwTwAAcFIAAHBVAABwWAAAcFsAAHBeAABwYQAAcGQAAHBmAABwpQAAcKcAAHCqAABwrAAAcK8AAHCwAABwsQAAcLIAAHCzAABwtQAAcLcAAHC4AABwuQAAcLsAAHC8AABwxQAAcMYAAHDIAABxBwAAcQkAAHELAABxDQAAcRAAAHERAABxEgAAcRMAAHEUAABxFgAAcRgAAHEZAABxGgAAcRwAAHEdAABxXAAAcV4AAHFgAABxYgAAcWUAAHFmAABxZwAAcWgAAHFpAABxawAAcW0AAHFuAABxbwAAcXEAAHFyAABxsQAAcbMAAHG2AABxuAAAcbsAAHG8AABxvQAAcb4AAHG/AABxwQAAccMAAHHEAABxxQAAcccAAHHIAABx0QAAcdIAAHHUAAByEwAAchUAAHIXAAByGQAAchwAAHIdAAByHgAAch8AAHIgAAByIgAAciQAAHIlAAByJgAAcigAAHIpAAByaAAAcmoAAHJtAABybwAAcnIAAHJzAABydAAAcnUAAHJ2AAByeAAAcnoAAHJ7AAByfAAAcn4AAHJ/AAByjAAAco0AAHKOAABykAAAcs8AAHLRAABy0wAActUAAHLYAABy2QAActoAAHLbAABy3AAAct4AAHLgAABy4QAAcuIAAHLkAABy5QAAcyQAAHMmAABzKQAAcysAAHMuAABzLwAAczAAAHMxAABzMgAAczQAAHM2AABzNwAAczgAAHM6AABzOwAAc04AAHNbAABzbgAAc3EAAHN0AABzdwAAc3oAAHN9AABzfwAAc4IAAHOFAABzhwAAc5oAAHOdAABzoAAAc6MAAHOmAABzqQAAc6wAAHOvAABzsgAAc7UAAHO3AABzvwAAc8MAAHPXAABz3AAAc+QAAHPqAABz9AAAdD8AAHRiAAB0ggAAdKIAAHSkAAB0pgAAdKgAAHSqAAB0rQAAdK4AAHSvAAB0sgAAdLMAAHS1AAB0tgAAdLgAAHS7AAB0vAAAdL0AAHTAAAB0wQAAdMYAAHTTAAB02AAAdNoAAHTcAAB04QAAdOQAAHTnAAB06QAAdQ4AAHUyAAB1WQAAdX0AAHWAAAB1ggAAdYQAAHWGAAB1iAAAdYoAAHWLAAB1jgAAdZsAAHWsAAB1rgAAdbAAAHWyAAB1tAAAdbYAAHW4AAB1ugAAdbwAAHXNAAB10AAAddMAAHXWAAB12QAAddwAAHXfAAB14gAAdeUAAHXnAAB2JgAAdigAAHYqAAB2LAAAdi8AAHYwAAB2MQAAdjIAAHYzAAB2NQAAdjcAAHY4AAB2OQAAdjsAAHY8AAB2ewAAdn0AAHZ/AAB2gQAAdoQAAHaFAAB2hgAAdocAAHaIAAB2igAAdowAAHaNAAB2jgAAdpAAAHaRAAB20AAAdtIAAHbVAAB21wAAdtoAAHbbAAB23AAAdt0AAHbeAAB24AAAduIAAHbjAAB25AAAduYAAHbnAAB29AAAdvUAAHb2AAB2+AAAdzcAAHc5AAB3OwAAdz0AAHdAAAB3QQAAd0IAAHdDAAB3RAAAd0YAAHdIAAB3SQAAd0oAAHdMAAB3TQAAd4wAAHeOAAB3kAAAd5IAAHeVAAB3lgAAd5cAAHeYAAB3mQAAd5sAAHedAAB3ngAAd58AAHehAAB3ogAAd+EAAHfjAAB35QAAd+cAAHfqAAB36wAAd+wAAHftAAB37gAAd/AAAHfyAAB38wAAd/QAAHf2AAB39wAAeDYAAHg4AAB4OgAAeDwAAHg/AAB4QAAAeEEAAHhCAAB4QwAAeEUAAHhHAAB4SAAAeEkAAHhLAAB4TAAAeIsAAHiNAAB4jwAAeJEAAHiUAAB4lQAAeJYAAHiXAAB4mAAAeJoAAHicAAB4nQAAeJ4AAHigAAB4oQAAeMYAAHjqAAB5EQAAeTUAAHk4AAB5OgAAeTwAAHk+AAB5QAAAeUIAAHlDAAB5RgAAeVMAAHliAAB5ZAAAeWYAAHloAAB5agAAeWwAAHluAAB5cAAAeX8AAHmCAAB5hQAAeYgAAHmLAAB5jgAAeZEAAHmUAAB5lgAAedUAAHnXAAB52QAAedsAAHneAAB53wAAeeAAAHnhAAB54gAAeeQAAHnmAAB55wAAeegAAHnqAAB56wAAeioAAHosAAB6LgAAejAAAHozAAB6NAAAejUAAHo2AAB6NwAAejkAAHo7AAB6PAAAej0AAHo/AAB6QAAAen8AAHqBAAB6gwAAeoUAAHqIAAB6iQAAeooAAHqLAAB6jAAAeo4AAHqQAAB6kQAAepIAAHqUAAB6lQAAetQAAHrWAAB62AAAetoAAHrdAAB63gAAet8AAHrgAAB64QAAeuMAAHrlAAB65gAAeucAAHrpAAB66gAAeykAAHsrAAB7LQAAey8AAHsyAAB7MwAAezQAAHs1AAB7NgAAezgAAHs6AAB7OwAAezwAAHs+AAB7PwAAe34AAHuAAAB7ggAAe4QAAHuHAAB7iAAAe4kAAHuKAAB7iwAAe40AAHuPAAB7kAAAe5EAAHuTAAB7lAAAe9MAAHvVAAB71wAAe9kAAHvcAAB73QAAe94AAHvfAAB74AAAe+IAAHvkAAB75QAAe+YAAHvoAAB76QAAfDQAAHxXAAB8dwAAfJcAAHyZAAB8mwAAfJ0AAHyfAAB8ogAAfKMAAHykAAB8pwAAfKgAAHyqAAB8qwAAfK0AAHywAAB8sQAAfLIAAHy1AAB8tgAAfLsAAHzIAAB8zQAAfM8AAHzRAAB81gAAfNkAAHzcAAB83gAAfQMAAH0nAAB9TgAAfXIAAH11AAB9dwAAfXkAAH17AAB9fQAAfX8AAH2AAAB9gwAAfZAAAH2hAAB9owAAfaUAAH2nAAB9qQAAfasAAH2tAAB9rwAAfbEAAH3CAAB9xQAAfcgAAH3LAAB9zgAAfdEAAH3UAAB91wAAfdoAAH3cAAB+GwAAfh0AAH4fAAB+IQAAfiQAAH4lAAB+JgAAficAAH4oAAB+KgAAfiwAAH4tAAB+LgAAfjAAAH4xAAB+cAAAfnIAAH50AAB+dgAAfnkAAH56AAB+ewAAfnwAAH59AAB+fwAAfoEAAH6CAAB+gwAAfoUAAH6GAAB+xQAAfscAAH7KAAB+zAAAfs8AAH7QAAB+0QAAftIAAH7TAAB+1QAAftcAAH7YAAB+2QAAftsAAH7cAAB+6QAAfuoAAH7rAAB+7QAAfywAAH8uAAB/MAAAfzIAAH81AAB/NgAAfzcAAH84AAB/OQAAfzsAAH89AAB/PgAAfz8AAH9BAAB/QgAAf4EAAH+DAAB/hQAAf4cAAH+KAAB/iwAAf4wAAH+NAAB/jgAAf5AAAH+SAAB/kwAAf5QAAH+WAAB/lwAAf9YAAH/YAAB/2gAAf9wAAH/fAAB/4AAAf+EAAH/iAAB/4wAAf+UAAH/nAAB/6AAAf+kAAH/rAAB/7AAAgCsAAIAtAACALwAAgDEAAIA0AACANQAAgDYAAIA3AACAOAAAgDoAAIA8AACAPQAAgD4AAIBAAACAQQAAgIAAAICCAACAhAAAgIYAAICJAACAigAAgIsAAICMAACAjQAAgI8AAICRAACAkgAAgJMAAICVAACAlgAAgLsAAIDfAACBBgAAgSoAAIEtAACBLwAAgTEAAIEzAACBNQAAgTcAAIE4AACBOwAAgUgAAIFXAACBWQAAgVsAAIFdAACBXwAAgWEAAIFjAACBZQAAgXQAAIF3AACBegAAgX0AAIGAAACBgwAAgYYAAIGJAACBiwAAgcoAAIHMAACBzgAAgdAAAIHTAACB1AAAgdUAAIHWAACB1wAAgdkAAIHbAACB3AAAgd0AAIHfAACB4AAAgh8AAIIhAACCIwAAgiUAAIIoAACCKQAAgioAAIIrAACCLAAAgi4AAIIwAACCMQAAgjIAAII0AACCNQAAgnQAAIJ2AACCeAAAgnoAAIJ9AACCfgAAgn8AAIKAAACCgQAAgoMAAIKFAACChgAAgocAAIKJAACCigAAgskAAILLAACCzQAAgs8AAILSAACC0wAAgtQAAILVAACC1gAAgtgAAILaAACC2wAAgtwAAILeAACC3wAAgx4AAIMgAACDIgAAgyQAAIMnAACDKAAAgykAAIMqAACDKwAAgy0AAIMvAACDMAAAgzEAAIMzAACDNAAAg3MAAIN1AACDdwAAg3kAAIN8AACDfQAAg34AAIN/AACDgAAAg4IAAIOEAACDhQAAg4YAAIOIAACDiQAAg8gAAIPKAACDzAAAg84AAIPRAACD0gAAg9MAAIPUAACD1QAAg9cAAIPZAACD2gAAg9sAAIPdAACD3gAAhCkAAIRMAACEbAAAhIwAAISOAACEkAAAhJIAAISUAACElwAAhJgAAISZAACEnAAAhJ0AAISfAACEoAAAhKMAAISmAACEpwAAhKgAAISrAACErAAAhLEAAIS+AACEwwAAhMUAAITIAACEzQAAhNAAAITTAACE1QAAhPoAAIUeAACFRQAAhWkAAIVsAACFbgAAhXAAAIVyAACFdAAAhXYAAIV3AACFegAAhYcAAIWYAACFmgAAhZwAAIWeAACFoAAAhaIAAIWkAACFpgAAhagAAIW5AACFvAAAhb8AAIXCAACFxQAAhcgAAIXLAACFzgAAhdEAAIXTAACGEgAAhhQAAIYWAACGGAAAhhsAAIYcAACGHQAAhh4AAIYfAACGIQAAhiMAAIYkAACGJQAAhicAAIYoAACGZwAAhmkAAIZrAACGbQAAhnAAAIZxAACGcgAAhnMAAIZ0AACGdgAAhngAAIZ5AACGegAAhnwAAIZ9AACGvAAAhr4AAIbBAACGwwAAhsYAAIbHAACGyAAAhskAAIbKAACGzAAAhs4AAIbPAACG0AAAhtIAAIbTAACG4AAAhuEAAIbiAACG5AAAhyMAAIclAACHJwAAhykAAIcsAACHLQAAhy4AAIcvAACHMAAAhzIAAIc0AACHNQAAhzYAAIc4AACHOQAAh3gAAId6AACHfAAAh34AAIeBAACHggAAh4MAAIeEAACHhQAAh4cAAIeJAACHigAAh4sAAIeNAACHjgAAh80AAIfPAACH0QAAh9MAAIfWAACH1wAAh9gAAIfZAACH2gAAh9wAAIfeAACH3wAAh+AAAIfiAACH4wAAiCIAAIgkAACIJgAAiCgAAIgrAACILAAAiC0AAIguAACILwAAiDEAAIgzAACINAAAiDUAAIg3AACIOAAAiHcAAIh5AACIewAAiH0AAIiAAACIgQAAiIIAAIiDAACIhAAAiIYAAIiIAACIiQAAiIoAAIiMAACIjQAAiLIAAIjWAACI/QAAiSEAAIkkAACJJwAAiSkAAIkrAACJLQAAiS8AAIkwAACJMwAAiUAAAIlPAACJUgAAiVUAAIlYAACJWwAAiV4AAIlhAACJZAAAiXMAAIl2AACJeQAAiXwAAIl/AACJggAAiYUAAImIAACJigAAickAAInLAACJzgAAidAAAInTAACJ1AAAidUAAInWAACJ1wAAidkAAIncAACJ3QAAid4AAIngAACJ4QAAiiAAAIoiAACKJQAAiicAAIoqAACKKwAAiiwAAIotAACKLgAAijAAAIozAACKNAAAijUAAIo3AACKOAAAincAAIp5AACKfAAAin4AAIqBAACKggAAioMAAIqEAACKhQAAiocAAIqKAACKiwAAiowAAIqOAACKjwAAis4AAIrQAACK0gAAitQAAIrXAACK2AAAitkAAIraAACK2wAAit0AAIrgAACK4QAAiuIAAIrkAACK5QAAiyQAAIsmAACLKAAAiyoAAIstAACLLgAAiy8AAIswAACLMQAAizMAAIs2AACLNwAAizgAAIs6AACLOwAAi3oAAIt8AACLfgAAi4AAAIuDAACLhAAAi4UAAIuGAACLhwAAi4kAAIuMAACLjQAAi44AAIuQAACLkQAAi9AAAIvSAACL1QAAi9cAAIvaAACL2wAAi9wAAIvdAACL3gAAi+AAAIvjAACL5AAAi+UAAIvnAACL6AAAi/EAAIwEAACMEQAAjCQAAIwxAACMRAAAjFsAAIxtAACMuAAAjNsAAIz7AACNGwAAjR0AAI0fAACNIQAAjSMAAI0mAACNJwAAjSgAAI0rAACNLAAAjS4AAI0vAACNMgAAjTUAAI02AACNNwAAjToAAI07AACNQAAAjU0AAI1SAACNVAAAjVcAAI1cAACNXwAAjWIAAI1kAACNiQAAja0AAI3UAACN+AAAjfsAAI39AACN/wAAjgEAAI4DAACOBQAAjgYAAI4JAACOFgAAjicAAI4pAACOKwAAji0AAI4vAACOMQAAjjMAAI41AACONwAAjkgAAI5LAACOTgAAjlEAAI5UAACOVwAAjloAAI5dAACOYAAAjmIAAI6hAACOowAAjqUAAI6nAACOqgAAjqsAAI6sAACOrQAAjq4AAI6wAACOsgAAjrMAAI60AACOtgAAjrcAAI72AACO+AAAjvoAAI78AACO/wAAjwAAAI8BAACPAgAAjwMAAI8FAACPBwAAjwgAAI8JAACPCwAAjwwAAI9LAACPTQAAj1AAAI9SAACPVQAAj1YAAI9XAACPWAAAj1kAAI9bAACPXQAAj14AAI9fAACPYQAAj2IAAI9vAACPcAAAj3EAAI9zAACPsgAAj7QAAI+2AACPuAAAj7sAAI+8AACPvQAAj74AAI+/AACPwQAAj8MAAI/EAACPxQAAj8cAAI/IAACQBwAAkAkAAJALAACQDQAAkBAAAJARAACQEgAAkBMAAJAUAACQFgAAkBgAAJAZAACQGgAAkBwAAJAdAACQXAAAkF4AAJBgAACQYgAAkGUAAJBmAACQZwAAkGgAAJBpAACQawAAkG0AAJBuAACQbwAAkHEAAJByAACQsQAAkLMAAJC1AACQtwAAkLoAAJC7AACQvAAAkL0AAJC+AACQwAAAkMIAAJDDAACQxAAAkMYAAJDHAACRBgAAkQgAAJEKAACRDAAAkQ8AAJEQAACREQAAkRIAAJETAACRFQAAkRcAAJEYAACRGQAAkRsAAJEcAACRQQAAkWUAAJGMAACRsAAAkbMAAJG2AACRuAAAkboAAJG8AACRvgAAkb8AAJHCAACRzwAAkd4AAJHhAACR5AAAkecAAJHqAACR7QAAkfAAAJHzAACSAgAAkgUAAJIIAACSCwAAkg4AAJIRAACSFAAAkhcAAJIZAACSWAAAkloAAJJdAACSXwAAkmIAAJJjAACSZAAAkmUAAJJmAACSaAAAkmsAAJJsAACSbQAAkm8AAJJwAACSrwAAkrEAAJK0AACStgAAkrkAAJK6AACSuwAAkrwAAJK9AACSvwAAksIAAJLDAACSxAAAksYAAJLHAACTBgAAkwgAAJMLAACTDQAAkxAAAJMRAACTEgAAkxMAAJMUAACTFgAAkxkAAJMaAACTGwAAkx0AAJMeAACTXQAAk18AAJNiAACTZAAAk2cAAJNoAACTaQAAk2oAAJNrAACTbQAAk3AAAJNxAACTcgAAk3QAAJN1AACTuAAAk9wAAJQAAACUIwAAlEoAAJRqAACUkQAAlLgAAJTYAACU/AAAlSAAAJUiAACVJQAAlScAAJUpAACVKwAAlS4AAJUxAACVMwAAlTUAAJU4AACVOgAAlTwAAJU/AACVQgAAlUMAAJVIAACVVQAAlVgAAJVaAACVXQAAlWAAAJViAACVhwAAlasAAJXSAACV9gAAlfkAAJX7AACV/QAAlf8AAJYBAACWAwAAlgQAAJYHAACWFAAAliUAAJYnAACWKQAAlisAAJYtAACWLwAAljEAAJYzAACWNQAAlkYAAJZJAACWTAAAlk8AAJZSAACWVQAAllgAAJZbAACWXgAAlmAAAJafAACWoQAAlqQAAJamAACWqQAAlqoAAJarAACWrAAAlq0AAJavAACWsQAAlrIAAJazAACWtQAAlrYAAJa/AACWwAAAlsIAAJcBAACXAwAAlwUAAJcHAACXCgAAlwsAAJcMAACXDQAAlw4AAJcQAACXEgAAlxMAAJcUAACXFgAAlxcAAJdWAACXWAAAl1oAAJdcAACXXwAAl2AAAJdhAACXYgAAl2MAAJdlAACXZwAAl2gAAJdpAACXawAAl2wAAJerAACXrQAAl7AAAJeyAACXtQAAl7YAAJe3AACXuAAAl7kAAJe7AACXvQAAl74AAJe/AACXwQAAl8IAAJfLAACXzAAAl84AAJgNAACYDwAAmBEAAJgTAACYFgAAmBcAAJgYAACYGQAAmBoAAJgcAACYHgAAmB8AAJggAACYIgAAmCMAAJhiAACYZAAAmGcAAJhpAACYbAAAmG0AAJhuAACYbwAAmHAAAJhyAACYdAAAmHUAAJh2AACYeAAAmHkAAJiGAACYhwAAmIgAAJiKAACYyQAAmMsAAJjNAACYzwAAmNIAAJjTAACY1AAAmNUAAJjWAACY2AAAmNoAAJjbAACY3AAAmN4AAJjfAACZHgAAmSAAAJkiAACZJAAAmScAAJkoAACZKQAAmSoAAJkrAACZLQAAmS8AAJkwAACZMQAAmTMAAJk0AACZQQAAmV4AAJlhAACZYwAAmWYAAJlpAACZbAAAmW8AAJlyAACZdQAAmXgAAJl7AACZfgAAmYEAAJmDAACZhgAAmaMAAJmmAACZqQAAmawAAJmvAACZsgAAmbUAAJm4AACZuwAAmb4AAJnBAACZxAAAmccAAJnKAACZzQAAmc8AAJnZAACZ4AAAmesAAJn9AACaEQAAmhsAAJo2AACaTAAAmlsAAJppAACacgAAmoEAAJrMAACa7wAAmw8AAJsvAACbMQAAmzMAAJs1AACbNwAAmzoAAJs7AACbPAAAmz8AAJtAAACbQgAAm0MAAJtGAACbSQAAm0oAAJtLAACbTgAAm08AAJtUAACbYQAAm2YAAJtoAACbawAAm3AAAJtzAACbdgAAm3gAAJudAACbwQAAm+gAAJwMAACcDwAAnBEAAJwTAACcFQAAnBcAAJwZAACcGgAAnB0AAJwqAACcOwAAnD0AAJw/AACcQQAAnEMAAJxFAACcRwAAnEkAAJxLAACcXAAAnF8AAJxiAACcZQAAnGgAAJxrAACcbgAAnHEAAJx0AACcdgAAnLUAAJy3AACcuQAAnLsAAJy+AACcvwAAnMAAAJzBAACcwgAAnMQAAJzGAACcxwAAnMgAAJzKAACcywAAnQoAAJ0MAACdDgAAnRAAAJ0TAACdFAAAnRUAAJ0WAACdFwAAnRkAAJ0bAACdHAAAnR0AAJ0fAACdIAAAnV8AAJ1hAACdZAAAnWYAAJ1pAACdagAAnWsAAJ1sAACdbQAAnW8AAJ1xAACdcgAAnXMAAJ11AACddgAAnYMAAJ2EAACdhQAAnYcAAJ3GAACdyAAAncoAAJ3MAACdzwAAndAAAJ3RAACd0gAAndMAAJ3VAACd1wAAndgAAJ3ZAACd2wAAndwAAJ4bAACeHQAAnh8AAJ4hAACeJAAAniUAAJ4mAACeJwAAnigAAJ4qAACeLAAAni0AAJ4uAACeMAAAnjEAAJ5wAACecgAAnnQAAJ52AACeeQAAnnoAAJ57AACefAAAnn0AAJ5/AACegQAAnoIAAJ6DAACehQAAnoYAAJ7FAACexwAAnskAAJ7LAACezgAAns8AAJ7QAACe0QAAntIAAJ7UAACe1gAAntcAAJ7YAACe2gAAntsAAJ8aAACfHAAAnx4AAJ8gAACfIwAAnyQAAJ8lAACfJgAAnycAAJ8pAACfKwAAnywAAJ8tAACfLwAAnzAAAJ9VAACfeQAAn6AAAJ/EAACfxwAAn8oAAJ/MAACfzgAAn9AAAJ/SAACf0wAAn9YAAJ/jAACf8gAAn/UAAJ/4AACf+wAAn/4AAKABAACgBAAAoAcAAKAWAACgGQAAoBwAAKAfAACgIgAAoCUAAKAoAACgKwAAoC0AAKBsAACgbgAAoHEAAKBzAACgdgAAoHcAAKB4AACgeQAAoHoAAKB8AACgfwAAoIAAAKCBAACggwAAoIQAAKDDAACgxQAAoMgAAKDKAACgzQAAoM4AAKDPAACg0AAAoNEAAKDTAACg1gAAoNcAAKDYAACg2gAAoNsAAKEaAAChHAAAoR8AAKEhAAChJAAAoSUAAKEmAAChJwAAoSgAAKEqAAChLQAAoS4AAKEvAAChMQAAoTIAAKFxAAChcwAAoXUAAKF3AAChegAAoXsAAKF8AAChfQAAoX4AAKGAAAChgwAAoYQAAKGFAAChhwAAoYgAAKHHAAChyQAAocsAAKHNAACh0AAAodEAAKHSAACh0wAAodQAAKHWAACh2QAAodoAAKHbAACh3QAAod4AAKIdAACiHwAAoiEAAKIjAACiJgAAoicAAKIoAACiKQAAoioAAKIsAACiLwAAojAAAKIxAACiMwAAojQAAKJzAACidQAAongAAKJ6AACifQAAon4AAKJ/AACigAAAooEAAKKDAACihgAAoocAAKKIAACiigAAoosAAKLWAACi+QAAoxkAAKM5AACjOwAAoz0AAKM/AACjQQAAo0MAAKNEAACjRQAAo0gAAKNJAACjSwAAo0wAAKNPAACjUQAAo1IAAKNTAACjVgAAo1cAAKNcAACjaQAAo24AAKNwAACjcwAAo3gAAKN7AACjfgAAo4AAAKOlAACjyQAAo/AAAKQUAACkFwAApBkAAKQbAACkHQAApB8AAKQhAACkIgAApCUAAKQyAACkQwAApEUAAKRHAACkSQAApEsAAKRNAACkTwAApFEAAKRTAACkZAAApGcAAKRqAACkbQAApHAAAKRzAACkdgAApHkAAKR8AACkfgAApL0AAKS/AACkwQAApMMAAKTGAACkxwAApMgAAKTJAACkygAApMwAAKTOAACkzwAApNAAAKTSAACk0wAApRIAAKUUAAClFgAApRgAAKUbAAClHAAApR0AAKUeAAClHwAApSEAAKUjAAClJAAApSUAAKUnAAClKAAApWcAAKVpAAClbAAApW4AAKVxAAClcgAApXMAAKV0AACldQAApXcAAKV5AAClegAApXsAAKV9AAClfgAApYsAAKWMAACljQAApY8AAKXOAACl0AAApdIAAKXUAACl1wAApdgAAKXZAACl2gAApdsAAKXdAACl3wAApeAAAKXhAACl4wAApeQAAKYjAACmJQAApicAAKYpAACmLAAApi0AAKYuAACmLwAApjAAAKYyAACmNAAApjUAAKY2AACmOAAApjkAAKZ4AACmegAApnwAAKZ+AACmgQAApoIAAKaDAACmhAAApoUAAKaHAACmiQAApooAAKaLAACmjQAApo4AAKbNAACmzwAAptEAAKbTAACm1gAAptcAAKbYAACm2QAAptoAAKbcAACm3gAApt8AAKbgAACm4gAApuMAAKciAACnJAAApyYAAKcoAACnKwAApywAAKctAACnLgAApy8AAKcxAACnMwAApzQAAKc1AACnNwAApzgAAKddAACngQAAp6gAAKfMAACnzwAAp9IAAKfUAACn1gAAp9gAAKfaAACn2wAAp94AAKfrAACn+gAAp/0AAKgAAACoAwAAqAYAAKgJAACoDAAAqA8AAKgeAACoIQAAqCQAAKgnAACoKgAAqC0AAKgwAACoMwAAqDUAAKh0AACodgAAqHkAAKh7AACofgAAqH8AAKiAAACogQAAqIIAAKiEAACohwAAqIgAAKiJAACoiwAAqIwAAKjLAACozQAAqNAAAKjSAACo1QAAqNYAAKjXAACo2AAAqNkAAKjbAACo3gAAqN8AAKjgAACo4gAAqOMAAKkiAACpJAAAqScAAKkpAACpLAAAqS0AAKkuAACpLwAAqTAAAKkyAACpNQAAqTYAAKk3AACpOQAAqToAAKl5AACpewAAqX4AAKmAAACpgwAAqYQAAKmFAACphgAAqYcAAKmJAACpjAAAqY0AAKmOAACpkAAAqZEAAKnQAACp0gAAqdQAAKnWAACp2QAAqdoAAKnbAACp3AAAqd0AAKnfAACp4gAAqeMAAKnkAACp5gAAqecAAKomAACqKAAAqioAAKosAACqLwAAqjAAAKoxAACqMgAAqjMAAKo1AACqOAAAqjkAAKo6AACqPAAAqj0AAKp8AACqfgAAqoEAAKqDAACqhgAAqocAAKqIAACqiQAAqooAAKqMAACqjwAAqpAAAKqRAACqkwAAqpQAAKrfAACrAgAAqyIAAKtCAACrRAAAq0YAAKtIAACrSgAAq00AAKtOAACrTwAAq1IAAKtTAACrVQAAq1YAAKtYAACrWgAAq1sAAKtcAACrXwAAq2AAAKtlAACrcgAAq3cAAKt5AACrewAAq4AAAKuDAACrhgAAq4gAAKutAACr0QAAq/gAAKwcAACsHwAArCEAAKwjAACsJQAArCcAAKwpAACsKgAArC0AAKw6AACsSwAArE0AAKxPAACsUQAArFMAAKxVAACsVwAArFkAAKxbAACsbAAArG8AAKxyAACsdQAArHgAAKx7AACsfgAArIEAAKyEAACshgAArMUAAKzHAACsyQAArMsAAKzOAACszwAArNAAAKzRAACs0gAArNQAAKzWAACs1wAArNgAAKzaAACs2wAArRoAAK0cAACtHgAArSAAAK0jAACtJAAArSUAAK0mAACtJwAArSkAAK0rAACtLAAArS0AAK0vAACtMAAArW8AAK1xAACtdAAArXYAAK15AACtegAArXsAAK18AACtfQAArX8AAK2BAACtggAArYMAAK2FAACthgAArZMAAK2UAACtlQAArZcAAK3WAACt2AAArdoAAK3cAACt3wAAreAAAK3hAACt4gAAreMAAK3lAACt5wAAregAAK3pAACt6wAArewAAK4rAACuLQAAri8AAK4xAACuNAAArjUAAK42AACuNwAArjgAAK46AACuPAAArj0AAK4+AACuQAAArkEAAK6AAACuggAAroQAAK6GAACuiQAArooAAK6LAACujAAAro0AAK6PAACukQAArpIAAK6TAACulQAArpYAAK7VAACu1wAArtkAAK7bAACu3gAArt8AAK7gAACu4QAAruIAAK7kAACu5gAArucAAK7oAACu6gAArusAAK8qAACvLAAAry4AAK8wAACvMwAArzQAAK81AACvNgAArzcAAK85AACvOwAArzwAAK89AACvPwAAr0AAAK9lAACviQAAr7AAAK/UAACv1wAAr9kAAK/bAACv3QAAr98AAK/hAACv4gAAr+UAAK/yAACwAQAAsAMAALAFAACwBwAAsAkAALALAACwDQAAsA8AALAeAACwIQAAsCQAALAnAACwKgAAsC0AALAwAACwMwAAsDUAALB0AACwdgAAsHgAALB6AACwfQAAsH4AALB/AACwgAAAsIEAALCDAACwhQAAsIYAALCHAACwiQAAsIoAALDJAACwywAAsM0AALDPAACw0gAAsNMAALDUAACw1QAAsNYAALDYAACw2gAAsNsAALDcAACw3gAAsN8AALEeAACxIAAAsSIAALEkAACxJwAAsSgAALEpAACxKgAAsSsAALEtAACxLwAAsTAAALExAACxMwAAsTQAALFzAACxdQAAsXcAALF5AACxfAAAsX0AALF+AACxfwAAsYAAALGCAACxhAAAsYUAALGGAACxiAAAsYkAALHIAACxygAAscwAALHOAACx0QAAsdIAALHTAACx1AAAsdUAALHXAACx2QAAsdoAALHbAACx3QAAsd4AALIdAACyHwAAsiEAALIjAACyJgAAsicAALIoAACyKQAAsioAALIsAACyLgAAsi8AALIwAACyMgAAsjMAALJyAACydAAAsnYAALJ4AACyewAAsnwAALJ9AACyfgAAsn8AALKBAACygwAAsoQAALKFAACyhwAAsogAALLTAACy9gAAsxYAALM2AACzOAAAszoAALM8AACzPgAAs0EAALNCAACzQwAAs0YAALNHAACzSQAAs0oAALNMAACzTwAAs1AAALNRAACzVAAAs1UAALNaAACzZwAAs2wAALNuAACzcAAAs3UAALN4AACzewAAs30AALOiAACzxgAAs+0AALQRAAC0FAAAtBYAALQYAAC0GgAAtBwAALQeAAC0HwAAtCIAALQvAAC0QAAAtEIAALREAAC0RgAAtEgAALRKAAC0TAAAtE4AALRQAAC0YQAAtGQAALRnAAC0agAAtG0AALRwAAC0cwAAtHYAALR5AAC0ewAAtLoAALS8AAC0vgAAtMAAALTDAAC0xAAAtMUAALTGAAC0xwAAtMkAALTLAAC0zAAAtM0AALTPAAC00AAAtQ8AALURAAC1EwAAtRUAALUYAAC1GQAAtRoAALUbAAC1HAAAtR4AALUgAAC1IQAAtSIAALUkAAC1JQAAtWQAALVmAAC1aQAAtWsAALVuAAC1bwAAtXAAALVxAAC1cgAAtXQAALV2AAC1dwAAtXgAALV6AAC1ewAAtYgAALWJAAC1igAAtYwAALXLAAC1zQAAtc8AALXRAAC11AAAtdUAALXWAAC11wAAtdgAALXaAAC13AAAtd0AALXeAAC14AAAteEAALYgAAC2IgAAtiQAALYmAAC2KQAAtioAALYrAAC2LAAAti0AALYvAAC2MQAAtjIAALYzAAC2NQAAtjYAALZ1AAC2dwAAtnkAALZ7AAC2fgAAtn8AALaAAAC2gQAAtoIAALaEAAC2hgAAtocAALaIAAC2igAAtosAALbKAAC2zAAAts4AALbQAAC20wAAttQAALbVAAC21gAAttcAALbZAAC22wAAttwAALbdAAC23wAAtuAAALcfAAC3IQAAtyMAALclAAC3KAAAtykAALcqAAC3KwAAtywAALcuAAC3MAAAtzEAALcyAAC3NAAAtzUAALdaAAC3fgAAt6UAALfJAAC3zAAAt84AALfQAAC30gAAt9QAALfWAAC31wAAt9oAALfnAAC39gAAt/gAALf6AAC3/AAAt/4AALgAAAC4AgAAuAQAALgTAAC4FgAAuBkAALgcAAC4HwAAuCIAALglAAC4KAAAuCoAALhpAAC4awAAuG0AALhvAAC4cgAAuHMAALh0AAC4dQAAuHYAALh4AAC4egAAuHsAALh8AAC4fgAAuH8AALi+AAC4wAAAuMIAALjEAAC4xwAAuMgAALjJAAC4ygAAuMsAALjNAAC4zwAAuNAAALjRAAC40wAAuNQAALkTAAC5FQAAuRcAALkZAAC5HAAAuR0AALkeAAC5HwAAuSAAALkiAAC5JAAAuSUAALkmAAC5KAAAuSkAALloAAC5agAAuWwAALluAAC5cQAAuXIAALlzAAC5dAAAuXUAALl3AAC5eQAAuXoAALl7AAC5fQAAuX4AALm9AAC5vwAAucEAALnDAAC5xgAAuccAALnIAAC5yQAAucoAALnMAAC5zgAAuc8AALnQAAC50gAAudMAALoSAAC6FAAAuhYAALoYAAC6GwAAuhwAALodAAC6HgAAuh8AALohAAC6IwAAuiQAALolAAC6JwAAuigAALpnAAC6aQAAumsAALptAAC6cAAAunEAALpyAAC6cwAAunQAALp2AAC6eAAAunkAALp6AAC6fAAAun0AALrIAAC66wAAuwsAALsrAAC7LQAAuy8AALsxAAC7MwAAuzYAALs3AAC7OAAAuzsAALs8AAC7PgAAuz8AALtBAAC7RAAAu0UAALtGAAC7SQAAu0oAALtPAAC7XAAAu2EAALtjAAC7ZQAAu2oAALttAAC7cAAAu3IAALuXAAC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MowAAzKUAAMynAADMqgAAzKsAAMysAADMrQAAzK4AAMywAADMsgAAzLMAAMy0AADMtgAAzLcAAMz2AADM+AAAzPoAAMz8AADM/wAAzQAAAM0BAADNAgAAzQMAAM0FAADNBwAAzQgAAM0JAADNCwAAzQwAAM1LAADNTQAAzVAAAM1SAADNVQAAzVYAAM1XAADNWAAAzVkAAM1bAADNXQAAzV4AAM1fAADNYQAAzWIAAM1vAADNcAAAzXEAAM1zAADNsgAAzbQAAM22AADNuAAAzbsAAM28AADNvQAAzb4AAM2/AADNwQAAzcMAAM3EAADNxQAAzccAAM3IAADOBwAAzgkAAM4LAADODQAAzhAAAM4RAADOEgAAzhMAAM4UAADOFgAAzhgAAM4ZAADOGgAAzhwAAM4dAADOXAAAzl4AAM5gAADOYgAAzmUAAM5mAADOZwAAzmgAAM5pAADOawAAzm0AAM5uAADObwAAznEAAM5yAADOsQAAzrMAAM61AADOtwAAzroAAM67AADOvAAAzr0AAM6+AADOwAAAzsIAAM7DAADOxAAAzsYAAM7HAADPBgAAzwgAAM8KAADPDAAAzw8AAM8QAADPEQAAzxIAAM8TAADPFQAAzxcAAM8YAADPGQAAzxsAAM8cAADPQQAAz2UAAM+MAADPsAAAz7MAAM+1AADPtwAAz7kAAM+7AADPvQAAz74AAM/BAADPzgAAz90AAM/fAADP4QAAz+MAAM/lAADP5wAAz+kAAM/rAADP+gAAz/0AANAAAADQAwAA0AYAANAJAADQDAAA0A8AANARAADQUAAA0FIAANBUAADQVgAA0FkAANBaAADQWwAA0FwAANBdAADQXwAA0GEAANBiAADQYwAA0GUAANBmAADQpQAA0KcAANCpAADQqwAA0K4AANCvAADQsAAA0LEAANCyAADQtAAA0LYAANC3AADQuAAA0LoAANC7AADQ+gAA0PwAAND+AADRAAAA0QMAANEEAADRBQAA0QYAANEHAADRCQAA0QsAANEMAADRDQAA0Q8AANEQAADRTwAA0VEAANFTAADRVQAA0VgAANFZAADRWgAA0VsAANFcAADRXgAA0WAAANFhAADRYgAA0WQAANFlAADRpAAA0aYAANGoAADRqgAA0a0AANGuAADRrwAA0bAAANGxAADRswAA0bUAANG2AADRtwAA0bkAANG6AADR+QAA0fsAANH9AADR/wAA0gIAANIDAADSBAAA0gUAANIGAADSCAAA0goAANILAADSDAAA0g4AANIPAADSTgAA0lAAANJSAADSVAAA0lcAANJYAADSWQAA0loAANJbAADSXQAA0l8AANJgAADSYQAA0mMAANJkAADSrwAA0tIAANLyAADTEgAA0xQAANMWAADTGAAA0xoAANMdAADTHgAA0x8AANMiAADTIwAA0yUAANMmAADTKAAA0ysAANMsAADTLQAA0zAAANMxAADTNgAA00MAANNIAADTSgAA00wAANNRAADTVAAA01cAANNZAADTfgAA06IAANPJAADT7QAA0/AAANPyAADT9AAA0/YAANP4AADT+gAA0/sAANP+AADUCwAA1BwAANQeAADUIAAA1CIAANQkAADUJgAA1CgAANQqAADULAAA1D0AANRAAADUQwAA1EYAANRJAADUTAAA1E8AANRSAADUVQAA1FcAANSWAADUmAAA1JoAANScAADUnwAA1KAAANShAADUogAA1KMAANSlAADUpwAA1KgAANSpAADUqwAA1KwAANTrAADU7QAA1O8AANTxAADU9AAA1PUAANT2AADU9wAA1PgAANT6AADU/AAA1P0AANT+AADVAAAA1QEAANVAAADVQgAA1UUAANVHAADVSgAA1UsAANVMAADVTQAA1U4AANVQAADVUgAA1VMAANVUAADVVgAA1VcAANVkAADVZQAA1WYAANVoAADVpwAA1akAANWrAADVrQAA1bAAANWxAADVsgAA1bMAANW0AADVtgAA1bgAANW5AADVugAA1bwAANW9AADV/AAA1f4AANYAAADWAgAA1gUAANYGAADWBwAA1ggAANYJAADWCwAA1g0AANYOAADWDwAA1hEAANYSAADWUQAA1lMAANZVAADWVwAA1loAANZbAADWXAAA1l0AANZeAADWYAAA1mIAANZjAADWZAAA1mYAANZnAADWpgAA1qgAANaqAADWrAAA1q8AANawAADWsQAA1rIAANazAADWtQAA1rcAANa4AADWuQAA1rsAANa8AADW+wAA1v0AANb/AADXAQAA1wQAANcFAADXBgAA1wcAANcIAADXCgAA1wwAANcNAADXDgAA1xAAANcRAADXNgAA11oAANeBAADXpQAA16gAANeqAADXrAAA164AANewAADXsgAA17MAANe2AADXwwAA19IAANfUAADX1gAA19gAANfaAADX3AAA194AANfgAADX7wAA1/IAANf1AADX+AAA1/sAANf+AADYAQAA2AQAANgGAADYRQAA2EcAANhJAADYSwAA2E4AANhPAADYUAAA2FEAANhSAADYVAAA2FYAANhXAADYWAAA2FoAANhbAADYmgAA2JwAANieAADYoAAA2KMAANikAADYpQAA2KYAANinAADYqQAA2KsAANisAADYrQAA2K8AANiwAADY7wAA2PEAANjzAADY9QAA2PgAANj5AADY+gAA2PsAANj8AADY/gAA2QAAANkBAADZAgAA2QQAANkFAADZRAAA2UYAANlIAADZSgAA2U0AANlOAADZTwAA2VAAANlRAADZUwAA2VUAANlWAADZVwAA2VkAANlaAADZmQAA2ZsAANmdAADZnwAA2aIAANmjAADZpAAA2aUAANmmAADZqAAA2aoAANmrAADZrAAA2a4AANmvAADZ7gAA2fAAANnyAADZ9AAA2fcAANn4AADZ+QAA2foAANn7AADZ/QAA2f8AANoAAADaAQAA2gMAANoEAADaQwAA2kUAANpHAADaSQAA2kwAANpNAADaTgAA2k8AANpQAADaUgAA2lQAANpVAADaVgAA2lgAANpZAADapAAA2scAANrnAADbBwAA2wkAANsLAADbDQAA2w8AANsSAADbEwAA2xQAANsXAADbGAAA2xoAANsbAADbHQAA2yAAANshAADbIgAA2yUAANsmAADbKwAA2zgAANs9AADbPwAA20EAANtGAADbSQAA20wAANtOAADbcwAA25cAANu+AADb4gAA2+UAANvnAADb6QAA2+sAANvtAADb7wAA2/AAANvzAADcAAAA3BEAANwTAADcFQAA3BcAANwZAADcGwAA3B0AANwfAADcIQAA3DIAANw1AADcOAAA3DsAANw+AADcQQAA3EQAANxHAADcSgAA3EwAANyLAADcjQAA3I8AANyRAADclAAA3JUAANyWAADclwAA3JgAANyaAADcnAAA3J0AANyeAADcoAAA3KEAANzgAADc4gAA3OQAANzmAADc6QAA3OoAANzrAADc7AAA3O0AANzvAADc8QAA3PIAANzzAADc9QAA3PYAAN01AADdNwAA3ToAAN08AAD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EcQABBHQAAQR1AAEEdgABBHcAAQR4AAEEegABBHwAAQR9AAEEfgABBIAAAQSBAAEEwAABBMIAAQTEAAEExgABBMkAAQTKAAEEywABBMwAAQTNAAEEzwABBNEAAQTSAAEE0wABBNUAAQTWAAEFFQABBRcAAQUaAAEFHAABBR8AAQUgAAEFIQABBSIAAQUjAAEFJQABBScAAQUoAAEFKQABBSsAAQUsAAEFOQABBToAAQU7AAEFPQABBXwAAQV+AAEFgAABBYIAAQWFAAEFhgABBYcAAQWIAAEFiQABBYsAAQWNAAEFjgABBY8AAQWRAAEFkgABBdEAAQXTAAEF1QABBdcAAQXaAAEF2wABBdwAAQXdAAEF3gABBeAAAQXiAAEF4wABBeQAAQXmAAEF5wABBiYAAQYoAAEGKgABBiwAAQYvAAEGMAABBjEAAQYyAAEGMwABBjUAAQY3AAEGOAABBjkAAQY7AAEGPAABBnsAAQZ9AAEGfwABBoEAAQaEAAEGhQABBoYAAQaHAAEGiAABBooAAQaMAAEGjQABBo4AAQaQAAEGkQABBtAAAQbSAAEG1AABBtYAAQbZAAEG2gABBtsAAQbcAAEG3QABBt8AAQbhAAEG4gABBuMAAQblAAEG5gABBwsAAQcvAAEHVgABB3oAAQd9AAEHfwABB4EAAQeDAAEHhQABB4cAAQeIAAEHiwABB5gAAQenAAEHqQABB6sAAQetAAEHrwABB7EAAQezAAEHtQABB8QAAQfHAAEHygABB80AAQfQAAEH0wABB9YAAQfZAAEH2wABCBoAAQgcAAEIHgABCCAAAQgjAAEIJAABCCUAAQgmAAEIJwABCCkAAQgrAAEILAABCC0AAQgvAAEIMAABCG8AAQhxAAEIcwABCHUAAQh4AAEIeQABCHoAAQh7AAEIfAABCH4AAQiAAAEIgQABCIIAAQiEAAEIhQABCMQAAQjGAAEIyAABCMoAAQjNAAEIzgABCM8AAQjQAAEI0QABCNMAAQjVAAEI1gABCNcAAQjZAAEI2gABCRkAAQkbAAEJHQABCR8AAQkiAAEJIwABCSQAAQklAAEJJgABCSgAAQkqAAEJKwABCSwAAQkuAAEJLwABCW4AAQlwAAEJcgABCXQAAQl3AAEJeAABCXkAAQl6AAEJewABCX0AAQl/AAEJgAABCYEAAQmDAAEJhAABCcMAAQnFAAEJxwABCckAAQnMAAEJzQABCc4AAQnPAAEJ0AABCdIAAQnUAAEJ1QABCdYAAQnYAAEJ2QABChgAAQoaAAEKHAABCh4AAQohAAEKIgABCiMAAQokAAEKJQABCicAAQopAAEKKgABCisAAQotAAEKLgABCnkAAQqcAAEKvAABCtwAAQreAAEK4AABCuIAAQrkAAEK5wABCugAAQrpAAEK7AABCu0AAQrvAAEK8AABCvIAAQr1AAEK9gABCvcAAQr6AAEK+wABCwAAAQsNAAELEgABCxQAAQsWAAELGwABCx4AAQshAAELIwABC0gAAQtsAAELkwABC7cAAQu6AAELvAABC74AAQvAAAELwgABC8QAAQvFAAELyAABC9UAAQvmAAEL6AABC+oAAQvsAAEL7gABC/AAAQvyAAEL9AABC/YAAQwHAAEMCgABDA0AAQwQAAEMEwABDBYAAQwZAAEMHAABDB8AAQwhAAEMYAABDGIAAQxkAAEMZgABDGkAAQxqAAEMawABDGwAAQxtAAEMbwABDHEAAQxyAAEMcwABDHUAAQx2AAEMtQABDLcAAQy5AAEMuwABDL4AAQy/AAEMwAABDMEAAQzCAAEMxAABDMYAAQzHAAEMyAABDMoAAQzLAAENCgABDQwAAQ0PAAENEQABDRQAAQ0VAAENFgABDRcAAQ0YAAENGgABDRwAAQ0dAAENHgABDSAAAQ0hAAENLgABDS8AAQ0wAAENMgABDXEAAQ1zAAENdQABDXcAAQ16AAENewABDXwAAQ19AAENfgABDYAAAQ2CAAENgwABDYQAAQ2GAAENhwABDcYAAQ3IAAENygABDcwAAQ3PAAEN0AABDdEAAQ3SAAEN0wABDdUAAQ3XAAEN2AABDdkAAQ3bAAEN3AABDhsAAQ4dAAEOHwABDiEAAQ4kAAEOJQABDiYAAQ4nAAEOKAABDioAAQ4sAAEOLQABDi4AAQ4wAAEOMQABDnAAAQ5yAAEOdAABDnYAAQ55AAEOegABDnsAAQ58AAEOfQABDn8AAQ6BAAEOggABDoMAAQ6FAAEOhgABDsUAAQ7HAAEOyQABDssAAQ7OAAEOzwABDtAAAQ7RAAEO0gABDtQAAQ7WAAEO1wABDtgAAQ7aAAEO2wABDwAAAQ8kAAEPSwABD28AAQ9yAAEPdAABD3YAAQ94AAEPegABD3wAAQ99AAEPgAABD40AAQ+cAAEPngABD6AAAQ+iAAEPpAABD6YAAQ+oAAEPqgABD7kAAQ+8AAEPvwABD8IAAQ/FAAEPyAABD8sAAQ/OAAEP0AABEA8AARARAAEQEwABEBUAARAYAAEQGQABEBoAARAbAAEQHAABEB4AARAgAAEQIQABECIAARAkAAEQJQABEGQAARBmAAEQaAABEGoAARBtAAEQbgABEG8AARBwAAEQcQABEHMAARB1AAEQdgABEHcAARB5AAEQegABELkAARC7AAEQvQABEL8AARDCAAEQwwABEMQAARDFAAEQxgABEMgAARDKAAEQywABEMwAARDOAAEQzwABEQ4AAREQAAEREwABERUAAREYAAERGQABERoAAREbAAERHAABER4AAREgAAERIQABESIAAREkAAERJQABESgAARFnAAERaQABEWsAARFtAAERcAABEXEAARFyAAERcwABEXQAARF2AAEReAABEXkAARF6AAERfAABEX0AARG8AAERvgABEcAAARHCAAERxQABEcYAARHHAAERyAABEckAARHLAAERzQABEc4AARHPAAER0QABEdIAARIRAAESEwABEhUAARIXAAESGgABEhsAARIcAAESHQABEh4AARIgAAESIgABEiMAARIkAAESJgABEicAARIyAAESOwABEjwAARI+AAESRwABElIAARJhAAESbAABEnoAARKPAAESowABEroAARLMAAETCwABEw0AARMPAAETEQABExQAARMVAAETFgABExcAARMYAAETGgABEx0AARMeAAETHwABEyEAARMiAAETYQABE2MAARNlAAETZwABE2oAARNrAAETbAABE20AARNuAAETcAABE3MAARN0AAETdQABE3cAARN4AAETtwABE7kAARO8AAETvgABE8EAARPCAAETwwABE8QAARPFAAETxwABE8oAARPLAAETzAABE84AARPPAAEUGgABFD0AARRdAAEUfQABFH8AARSBAAEUgwABFIUAARSIAAEUiQABFIoAARSNAAEUjgABFJAAARSRAAEUlAABFJcAARSYAAEUmQABFJwAARSdAAEUogABFK8AARS0AAEUtgABFLkAARS+AAEUwQABFMQAARTGAAEU6wABFQ8AARU2AAEVWgABFV0AARVfAAEVYQABFWMAARVlAAEVZwABFWgAARVrAAEVeAABFYkAARWLAAEVjQABFY8AARWRAAEVkwABFZUAARWXAAEVmQABFaoAARWtAAEVsAABFbMAARW2AAEVuQABFbwAARW/AAEVwgABFcQAARYDAAEWBQABFgcAARYJAAEWDAABFg0AARYOAAEWDwABFhAAARYSAAEWFAABFhUAARYWAAEWGAABFhkAARZYAAEWWgABFlwAARZeAAEWYQABFmIAARZjAAEWZAABFmUAARZnAAEWaQABFmoAARZrAAEWbQABFm4AARatAAEWrwABFrIAARa0AAEWtwABFrgAARa5AAEWugABFrsAARa9AAEWvwABFsAAARbBAAEWwwABFsQAARbRAAEW0gABFtMAARbVAAEXFAABFxYAARcYAAEXGgABFx0AARceAAEXHwABFyAAARchAAEXIwABFyUAARcmAAEXJwABFykAARcqAAEXaQABF2sAARdtAAEXbwABF3IAARdzAAEXdAABF3UAARd2AAEXeAABF3oAARd7AAEXfAABF34AARd/AAEXvgABF8AAARfCAAEXxAABF8cAARfIAAEXyQABF8oAARfLAAEXzQABF88AARfQAAEX0QABF9MAARfUAAEYEwABGBUAARgXAAEYGQABGBwAARgdAAEYHgABGB8AARggAAEYIgABGCQAARglAAEYJgABGCgAARgpAAEYaAABGGoAARhsAAEYbgABGHEAARhyAAEYcwABGHQAARh1AAEYdwABGHkAARh6AAEYewABGH0AARh+AAEYowABGMcAARjuAAEZEgABGRUAARkYAAEZGgABGRwAARkeAAEZIAABGSEAARkkAAEZMQABGUAAARlDAAEZRgABGUkAARlMAAEZTwABGVIAARlVAAEZZAABGWcAARlqAAEZbQABGXAAARlzAAEZdgABGXkAARl7AAEZugABGbwAARm/AAEZwQABGcQAARnFAAEZxgABGccAARnIAAEZygABGc0AARnOAAEZzwABGdEAARnSAAEaEQABGhMAARoWAAEaGAABGhsAARocAAEaHQABGh4AARofAAEaIQABGiQAARolAAEaJgABGigAARopAAEaaAABGmoAARptAAEabwABGnIAARpzAAEadAABGnUAARp2AAEaeAABGnsAARp8AAEafQABGn8AARqAAAEavwABGsEAARrEAAEaxgABGskAARrKAAEaywABGswAARrNAAEazwABGtIAARrTAAEa1AABGtYAARrXAAEbGgABGz4AARtiAAEbhQABG6wAARvMAAEb8wABHBoAARw6AAEcXgABHIIAARyEAAEchwABHIkAARyLAAEcjQABHJAAARyTAAEclQABHJcAARyaAAEcnAABHJ4AARyhAAEcpAABHKUAARyqAAEctwABHLoAARy8AAEcvwABHMIAARzEAAEc6QABHQ0AAR00AAEdWAABHVsAAR1dAAEdXwABHWEAAR1jAAEdZQABHWYAAR1pAAEddgABHYcAAR2JAAEdiwABHY0AAR2PAAEdkQABHZMAAR2VAAEdlwABHagAAR2rAAEdrgABHbEAAR20AAEdtwABHboAAR29AAEdwAABHcIAAR4BAAEeAwABHgYAAR4IAAEeCwABHgwAAR4NAAEeDgABHg8AAR4RAAEeEwABHhQAAR4VAAEeFwABHhgAAR4hAAEeIgABHiQAAR5jAAEeZQABHmcAAR5pAAEebAABHm0AAR5uAAEebwABHnAAAR5yAAEedAABHnUAAR52AAEeeAABHnkAAR64AAEeugABHrwAAR6+AAEewQABHsIAAR7DAAEexAABHsUAAR7HAAEeyQABHsoAAR7LAAEezQABHs4AAR8NAAEfDwABHxIAAR8UAAEfFwABHxgAAR8ZAAEfGgABHxsAAR8dAAEfHwABHyAAAR8hAAEfIwABHyQAAR8tAAEfLgABHzAAAR9vAAEfcQABH3MAAR91AAEfeAABH3kAAR96AAEfewABH3wAAR9+AAEfgAABH4EAAR+CAAEfhAABH4UAAR/EAAEfxgABH8kAAR/LAAEfzgABH88AAR/QAAEf0QABH9IAAR/UAAEf1gABH9cAAR/YAAEf2gABH9sAAR/oAAEf6QABH+oAAR/sAAEgKwABIC0AASAvAAEgMQABIDQAASA1AAEgNgABIDcAASA4AAEgOgABIDwAASA9AAEgPgABIEAAASBBAAEggAABIIIAASCEAAEghgABIIkAASCKAAEgiwABIIwAASCNAAEgjwABIJEAASCSAAEgkwABIJUAASCWAAEgowABILoAASC9AAEgwAABIMMAASDGAAEgyQABIMwAASDPAAEg0gABINQAASDWAAEg2QABIPAAASDzAAEg9gABIPkAASD8AAEg/wABIQIAASEFAAEhCAABIQsAASEOAAEhEQABIRMAASEhAAEhKQABITMAASE9AAEhRgABIU8AASFhAAEhbwABIboAASHdAAEh/QABIh0AASIfAAEiIQABIiMAASIlAAEiKAABIikAASIqAAEiLQABIi4AASIwAAEiMQABIjMAASI2AAEiNwABIjgAASI7AAEiPAABIkEAASJOAAEiUwABIlUAASJXAAEiXAABIl8AASJiAAEiZAABIokAASKtAAEi1AABIvgAASL7AAEi/QABIv8AASMBAAEjAwABIwUAASMGAAEjCQABIxYAASMnAAEjKQABIysAASMtAAEjLwABIzEAASMzAAEjNQABIzcAASNIAAEjSwABI04AASNRAAEjVAABI1cAASNaAAEjXQABI2AAASNiAAEjoQABI6MAASOlAAEjpwABI6oAASOrAAEjrAABI60AASOuAAEjsAABI7IAASOzAAEjtAABI7YAASO3AAEj9gABI/gAASP6AAEj/AABI/8AASQAAAEkAQABJAIAASQDAAEkBQABJAcAASQIAAEkCQABJAsAASQMAAEkSwABJE0AASRQAAEkUgABJFUAASRWAAEkVwABJFgAASRZAAEkWwABJF0AASReAAEkXwABJGEAASRiAAEkbwABJHAAASRxAAEkcwABJLIAASS0AAEktgABJLgAASS7AAEkvAABJL0AASS+AAEkvwABJMEAASTDAAEkxAABJMUAASTHAAEkyAABJQcAASUJAAElCwABJQ0AASUQAAElEQABJRIAASUTAAElFAABJRYAASUYAAElGQABJRoAASUcAAElHQABJVwAASVeAAElYAABJWIAASVlAAElZgABJWcAASVoAAElaQABJWsAASVtAAElbgABJW8AASVxAAElcgABJbEAASWzAAEltQABJbcAASW6AAEluwABJbwAASW9AAElvgABJcAAASXCAAElwwABJcQAASXGAAElxwABJgYAASYIAAEmCgABJgwAASYPAAEmEAABJhEAASYSAAEmEwABJhUAASYXAAEmGAABJhkAASYbAAEmHAABJkEAASZlAAEmjAABJrAAASazAAEmtQABJrcAASa5AAEmuwABJr0AASa+AAEmwQABJs4AASbdAAEm3wABJuEAASbjAAEm5QABJucAASbpAAEm6wABJvoAASb9AAEnAAABJwMAAScGAAEnCQABJwwAAScPAAEnEQABJ1AAASdSAAEnVAABJ1YAASdZAAEnWgABJ1sAASdcAAEnXQABJ18AASdhAAEnYgABJ2MAASdlAAEnZgABJ6UAASenAAEnqQABJ6sAASeuAAEnrwABJ7AAASexAAEnsgABJ7QAASe2AAEntwABJ7gAASe6AAEnuwABJ/oAASf8AAEn/gABKAAAASgDAAEoBAABKAUAASgGAAEoBwABKAkAASgLAAEoDAABKA0AASgPAAEoEAABKE8AAShRAAEoUwABKFUAAShYAAEoWQABKFoAAShbAAEoXAABKF4AAShgAAEoYQABKGIAAShkAAEoZQABKKQAASimAAEoqAABKKoAASitAAEorgABKK8AASiwAAEosQABKLMAASi1AAEotgABKLcAASi5AAEougABKPkAASj7AAEo/QABKP8AASkCAAEpAwABKQQAASkFAAEpBgABKQgAASkKAAEpCwABKQwAASkOAAEpDwABKU4AASlQAAEpUgABKVQAASlXAAEpWAABKVkAASlaAAEpWwABKV0AASlfAAEpYAABKWEAASljAAEpZAABKa8AASnSAAEp8gABKhIAASoUAAEqFgABKhgAASoaAAEqHQABKh4AASofAAEqIgABKiMAASolAAEqJgABKigAASorAAEqLAABKi0AASowAAEqMQABKjYAASpDAAEqSAABKkoAASpMAAEqUQABKlQAASpXAAEqWQABKn4AASqiAAEqyQABKu0AASrwAAEq8gABKvQAASr2AAEq+AABKvoAASr7AAEq/gABKwsAASscAAErHgABKyAAASsiAAErJAABKyYAASsoAAErKgABKywAASs9AAErQAABK0MAAStGAAErSQABK0wAAStPAAErUgABK1UAAStXAAErlgABK5gAASuaAAErnAABK58AASugAAEroQABK6IAASujAAErpQABK6cAASuoAAErqQABK6sAASusAAEr6wABK+0AASvvAAEr8QABK/QAASv1AAEr9gABK/cAASv4AAEr+gABK/wAASv9AAEr/gABLAAAASwBAAEsQAABLEIAASxFAAEsRwABLEoAASxLAAEsTAABLE0AASxOAAEsUAABLFIAASxTAAEsVAABLFYAASxXAAEsZAABLGUAASxmAAEsaAABLKcAASypAAEsqwABLK0AASywAAEssQABLLIAASyzAAEstAABLLYAASy4AAEsuQABLLoAASy8AAEsvQABLPwAASz+AAEtAAABLQIAAS0FAAEtBgABLQcAAS0IAAEtCQABLQsAAS0NAAEtDgABLQ8AAS0RAAEtEgABLVEAAS1TAAEtVQABLVcAAS1aAAEtWwABLVwAAS1dAAEtXgABLWAAAS1iAAEtYwABLWQAAS1mAAEtZwABLaYAAS2oAAEtqgABLawAAS2vAAEtsAABLbEAAS2yAAEtswABLbUAAS23AAEtuAABLbkAAS27AAEtvAABLfsAAS39AAEt/wABLgEAAS4EAAEuBQABLgYAAS4HAAEuCAABLgoAAS4MAAEuDQABLg4AAS4QAAEuEQABLjYAAS5aAAEugQABLqUAAS6oAAEuqgABLqwAAS6uAAEusAABLrIAAS6zAAEutgABLsMAAS7SAAEu1AABLtYAAS7YAAEu2gABLtwAAS7eAAEu4AABLu8AAS7yAAEu9QABLvgAAS77AAEu/gABLwEAAS8EAAEvBgABL0UAAS9HAAEvSQABL0sAAS9OAAEvTwABL1AAAS9RAAEvUgABL1QAAS9WAAEvVwABL1gAAS9aAAEvWwABL5oAAS+cAAEvngABL6AAAS+jAAEvpAABL6UAAS+mAAEvpwABL6kAAS+rAAEvrAABL60AAS+vAAEvsAABL+8AAS/xAAEv8wABL/UAAS/4AAEv+QABL/oAAS/7AAEv/AABL/4AATAAAAEwAQABMAIAATAEAAEwBQABMEQAATBGAAEwSAABMEoAATBNAAEwTgABME8AATBQAAEwUQABMFMAATBVAAEwVgABMFcAATBZAAEwWgABMJkAATCbAAEwnQABMJ8AATCiAAEwowABMKQAATClAAEwpgABMKgAATCqAAEwqwABMKwAATCuAAEwrwABMO4AATDwAAEw8gABMPQAATD3AAEw+AABMPkAATD6AAEw+wABMP0AATD/AAExAAABMQEAATEDAAExBAABMUMAATFFAAExRwABMUkAATFMAAExTQABMU4AATFPAAExUAABMVIAATFUAAExVQABMVYAATFYAAExWQABMaQAATHHAAEx5wABMgcAATIJAAEyCwABMg0AATIPAAEyEgABMhMAATIUAAEyFwABMhgAATIaAAEyGwABMh0AATIgAAEyIQABMiIAATIlAAEyJgABMi8AATI8AAEyQQABMkMAATJFAAEySgABMk0AATJQAAEyUgABMncAATKbAAEywgABMuYAATLpAAEy6wABMu0AATLvAAEy8QABMvMAATL0AAEy9wABMwQAATMVAAEzFwABMxkAATMbAAEzHQABMx8AATMhAAEzIwABMyUAATM2AAEzOQABMzwAATM/AAEzQgABM0UAATNIAAEzSwABM04AATNQAAEzjwABM5EAATOTAAEzlQABM5gAATOZAAEzmgABM5sAATOcAAEzngABM6AAATOhAAEzogABM6QAATOlAAEz5AABM+YAATPoAAEz6gABM+0AATPuAAEz7wABM/AAATPxAAEz8wABM/UAATP2AAEz9wABM/kAATP6AAE0OQABNDsAATQ+AAE0QAABNEMAATREAAE0RQABNEYAATRHAAE0SQABNEsAATRMAAE0TQABNE8AATRQAAE0XQABNF4AATRfAAE0YQABNKAAATSiAAE0pAABNKYAATSpAAE0qgABNKsAATSsAAE0rQABNK8AATSxAAE0sgABNLMAATS1AAE0tgABNPUAATT3AAE0+QABNPsAATT+AAE0/wABNQAAATUBAAE1AgABNQQAATUGAAE1BwABNQgAATUKAAE1CwABNUoAATVMAAE1TgABNVAAATVTAAE1VAABNVUAATVWAAE1VwABNVkAATVbAAE1XAABNV0AATVfAAE1YAABNZ8AATWhAAE1owABNaUAATWoAAE1qQABNaoAATWrAAE1rAABNa4AATWwAAE1sQABNbIAATW0AAE1tQABNfQAATX2AAE1+AABNfoAATX9AAE1/gABNf8AATYAAAE2AQABNgMAATYFAAE2BgABNgcAATYJAAE2CgABNi8AATZTAAE2egABNp4AATahAAE2owABNqUAATanAAE2qQABNqsAATasAAE2rwABNrwAATbLAAE2zQABNs8AATbRAAE20wABNtUAATbXAAE22QABNugAATbrAAE27gABNvEAATb0AAE29wABNvoAATb9AAE2/wABNz4AATdAAAE3QgABN0QAATdHAAE3SAABN0kAATdKAAE3SwABN00AATdPAAE3UAABN1EAATdTAAE3VAABN5MAATeVAAE3lwABN5kAATecAAE3nQABN54AATefAAE3oAABN6IAATekAAE3pQABN6YAATeoAAE3qQABN+gAATfqAAE37AABN+4AATfxAAE38gABN/MAATf0AAE39QABN/cAATf5AAE3+gABN/sAATf9AAE3/gABOD0AATg/AAE4QQABOEMAAThGAAE4RwABOEgAAThJAAE4SgABOEwAAThOAAE4TwABOFAAAThSAAE4UwABOJIAATiUAAE4lgABOJgAATibAAE4nAABOJ0AATieAAE4nwABOKEAATijAAE4pAABOKUAATinAAE4qAABOOcAATjpAAE46wABOO0AATjwAAE48QABOPIAATjzAAE49AABOPYAATj4AAE4+QABOPoAATj8AAE4/QABOTwAATk+AAE5QAABOUIAATlFAAE5RgABOUcAATlIAAE5SQABOUsAATlNAAE5TgABOU8AATlRAAE5UgABOZ0AATnAAAE54AABOgAAAToCAAE6BAABOgYAAToIAAE6CwABOgwAAToNAAE6EAABOhEAAToTAAE6FAABOhYAAToZAAE6GgABOhsAAToeAAE6HwABOiQAAToxAAE6NgABOjgAATo6AAE6PwABOkIAATpFAAE6RwABOmwAATqQAAE6twABOtsAATreAAE64AABOuIAATrkAAE65gABOugAATrpAAE67AABOvkAATsKAAE7DAABOw4AATsQAAE7EgABOxQAATsWAAE7GAABOxoAATsrAAE7LgABOzEAATs0AAE7NwABOzoAATs9AAE7QAABO0MAATtFAAE7hAABO4YAATuIAAE7igABO40AATuOAAE7jwABO5AAATuRAAE7kwABO5UAATuWAAE7lwABO5kAATuaAAE72QABO9sAATvdAAE73wABO+IAATvjAAE75AABO+UAATvmAAE76AABO+oAATvrAAE77AABO+4AATvvAAE8LgABPDAAATwzAAE8NQABPDgAATw5AAE8OgABPDsAATw8AAE8PgABPEAAATxBAAE8QgABPEQAATxFAAE8UgABPFMAATxUAAE8VgABPJUAATyXAAE8mQABPJsAATyeAAE8nwABPKAAATyhAAE8ogABPKQAATymAAE8pwABPKgAATyqAAE8qwABPOoAATzsAAE87gABPPAAATzzAAE89AABPPUAATz2AAE89wABPPkAATz7AAE8/AABPP0AATz/AAE9AAABPT8AAT1BAAE9QwABPUUAAT1IAAE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N4AABTeIAAU3kAAFN5QABTeYAAU3oAAFN6QABTg4AAU4yAAFOWQABTn0AAU6AAAFOggABToQAAU6GAAFOiAABTooAAU6LAAFOjgABTpsAAU6qAAFOrAABTq4AAU6wAAFOsgABTrQAAU62AAFOuAABTscAAU7KAAFOzQABTtAAAU7TAAFO1gABTtkAAU7cAAFO3gABTx0AAU8fAAFPIQABTyMAAU8mAAFPJwABTygAAU8pAAFPKgABTywAAU8uAAFPLwABTzAAAU8yAAFPMwABT3IAAU90AAFPdgABT3gAAU97AAFPfAABT30AAU9+AAFPfwABT4EAAU+DAAFPhAABT4UAAU+HAAFPiAABT8cAAU/JAAFPywABT80AAU/QAAFP0QABT9IAAU/TAAFP1AABT9YAAU/YAAFP2QABT9oAAU/cAAFP3QABUBwAAVAeAAFQIAABUCIAAVAlAAFQJgABUCcAAVAoAAFQKQABUCsAAVAtAAFQLgABUC8AAVAxAAFQMgABUHEAAVBzAAFQdQABUHcAAVB6AAFQewABUHwAAVB9AAFQfgABUIAAAVCCAAFQgwABUIQAAVCGAAFQhwABUMYAAVDIAAFQygABUMwAAVDPAAFQ0AABUNEAAVDSAAFQ0wABUNUAAVDXAAFQ2AABUNkAAVDbAAFQ3AABURsAAVEdAAFRHwABUSEAAVEkAAFRJQABUSYAAVEnAAFRKAABUSoAAVEsAAFRLQABUS4AAVEwAAFRMQABUXwAAVGfAAFRvwABUd8AAVHhAAFR4wABUeUAAVHnAAFR6gABUesAAVHsAAFR7wABUfAAAVHyAAFR8wABUfUAAVH4AAFR+QABUfoAAVH9AAFR/gABUgMAAVIQAAFSFQABUhcAAVIZAAFSHgABUiEAAVIkAAFSJgABUksAAVJvAAFSlgABUroAAVK9AAFSvwABUsEAAVLDAAFSxQABUscAAVLIAAFSywABUtgAAVLpAAFS6wABUu0AAVLvAAFS8QABUvMAAVL1AAFS9wABUvkAAVMKAAFTDQABUxAAAVMTAAFTFgABUxkAAVMcAAFTHwABUyIAAVMkAAFTYwABU2UAAVNnAAFTaQABU2wAAVNtAAFTbgABU28AAVNwAAFTcgABU3QAAVN1AAFTdgABU3gAAVN5AAFTuAABU7oAAVO8AAFTvgABU8EAAVPCAAFTwwABU8QAAVPFAAFTxwABU8kAAVPKAAFTywABU80AAVPOAAFUDQABVA8AAVQSAAFUFAABVBcAAVQYAAFUGQABVBoAAVQbAAFUHQABVB8AAVQgAAFUIQABVCMAAVQkAAFUMQABVDIAAVQzAAFUNQABVHQAAVR2AAFUeAABVHoAAVR9AAFUfgABVH8AAVSAAAFUgQABVIMAAVSFAAFUhgABVIcAAVSJAAFUigABVMkAAVTLAAFUzQABVM8AAVTSAAFU0wABVNQAAVTVAAFU1gABVNgAAVTaAAFU2wABVNwAAVTeAAFU3wABVR4AAVUgAAFVIgABVSQAAVUnAAFVKAABVSkAAVUqAAFVKwABVS0AAVUvAAFVMAABVTEAAVUzAAFVNAABVXMAAVV1AAFVdwABVXkAAVV8AAFVfQABVX4AAVV/AAFVgAABVYIAAVWEAAFVhQABVYYAAVWIAAFViQABVcgAAVXKAAFVzAABVc4AAVXRAAFV0gABVdMAAVXUAAFV1QABVdcAAVXZAAFV2gABVdsAAVXdAAFV3gABVgMAAVYnAAFWTgABVnIAAVZ1AAFWdwABVnkAAVZ7AAFWfQABVn8AAVaAAAFWgwABVpAAAVafAAFWoQABVqMAAValAAFWpwABVqkAAVarAAFWrQABVrwAAVa/AAFWwgABVsUAAVbIAAFWywABVs4AAVbRAAFW0wABVxIAAVcUAAFXFgABVxgAAVcbAAFXHAABVx0AAVceAAFXHwABVyEAAVcjAAFXJAABVyUAAVcnAAFXKAABV2cAAVdpAAFXawABV20AAVdwAAFXcQABV3IAAVdzAAFXdAABV3YAAVd4AAFXeQABV3oAAVd8AAFXfQABV7wAAVe+AAFXwAABV8IAAVfFAAFXxgABV8cAAVfIAAFXyQABV8sAAVfNAAFXzgABV88AAVfRAAFX0gABWBEAAVgTAAFYFgABWBgAAVgbAAFYHAABWB0AAVgeAAFYHwABWCEAAVgjAAFYJAABWCUAAVgnAAFYKAABWGcAAVhpAAFYawABWG0AAVhwAAFYcQABWHIAAVhzAAFYdAABWHYAAVh4AAFYeQABWHoAAVh8AAFYfQABWLwAAVi+AAFYwAABWMIAAVjFAAFYxgABWMcAAVjIAAFYyQABWMsAAVjNAAFYzgABWM8AAVjRAAFY0gABWREAAVkTAAFZFQABWRcAAVkaAAFZGwABWRwAAVkdAAFZHgABWSAAAVkiAAFZIwABWSQAAVkmAAFZJwABWXIAAVmVAAFZtQABWdUAAVnXAAFZ2QABWdsAAVndAAFZ4AABWeEAAVniAAFZ5QABWeYAAVnoAAFZ6QABWesAAVnuAAFZ7wABWfAAAVnzAAFZ9AABWf0AAVoKAAFaDwABWhEAAVoTAAFaGAABWhsAAVoeAAFaIAABWkUAAVppAAFakAABWrQAAVq3AAFauQABWrsAAVq9AAFavwABWsEAAVrCAAFaxQABWtIAAVrjAAFa5QABWucAAVrpAAFa6wABWu0AAVrvAAFa8QABWvMAAVsEAAFbBwABWwoAAVsNAAFbEAABWxMAAVsWAAFbGQABWxwAAVseAAFbXQABW18AAVthAAFbYwABW2YAAVtnAAFbaAABW2kAAVtqAAFbbAABW24AAVtvAAFbcAABW3IAAVtzAAFbsgABW7QAAVu2AAFbuAABW7sAAVu8AAFbvQABW74AAVu/AAFbwQABW8MAAVvEAAFbxQABW8cAAVvIAAFcBwABXAkAAVwMAAFcDgABXBEAAVwSAAFcEwABXBQAAVwVAAFcFwABXBkAAVwaAAFcGwABXB0AAVweAAFcKwABXCwAAVwtAAFcLwABXG4AAVxwAAFccgABXHQAAVx3AAFceAABXHkAAVx6AAFcewABXH0AAVx/AAFcgAABXIEAAVyDAAFchAABXMMAAVzFAAFcxwABXMkAAVzMAAFczQABXM4AAVzPAAFc0AABXNIAAVzUAAFc1QABXNYAAVzYAAFc2QABXRgAAV0aAAFdHAABXR4AAV0hAAFdIgABXSMAAV0kAAFdJQABXScAAV0pAAFdKgABXSsAAV0tAAFdLgABXW0AAV1vAAFdcQABXXMAAV12AAFddwABXXgAAV15AAFdegABXXwAAV1+AAFdfwABXYAAAV2CAAFdgwABXcIAAV3EAAFdxgABXcgAAV3LAAFdzAABXc0AAV3OAAFdzwABXdEAAV3TAAFd1AABXdUAAV3XAAFd2AABXf0AAV4hAAFeSAABXmwAAV5vAAFecQABXnMAAV51AAFedwABXnkAAV56AAFefQABXooAAV6ZAAFemwABXp0AAV6fAAFeoQABXqMAAV6lAAFepwABXrYAAV65AAFevAABXr8AAV7CAAFexQABXsgAAV7LAAFezQABXwwAAV8OAAFfEAABXxIAAV8VAAFfFgABXxcAAV8YAAFfGQABXxsAAV8dAAFfHgABXx8AAV8hAAFfIgABX2EAAV9jAAFfZQABX2cAAV9qAAFfawABX2wAAV9tAAFfbgABX3AAAV9yAAFfcwABX3QAAV92AAFfdwABX7YAAV+4AAFfugABX7wAAV+/AAFfwAABX8EAAV/CAAFfwwABX8UAAV/HAAFfyAABX8kAAV/LAAFfzAABYAsAAWANAAFgDwABYBEAAWAUAAFgFQABYBYAAWAXAAFgGAABYBoAAWAcAAFgHQABYB4AAWAgAAFgIQABYGAAAWBiAAFgZAABYGYAAWBpAAFgagABYGsAAWBsAAFgbQABYG8AAWBxAAFgcgABYHMAAWB1AAFgdgABYLUAAWC3AAFguQABYLsAAWC+AAFgvwABYMAAAWDBAAFgwgABYMQAAWDGAAFgxwABYMgAAWDKAAFgywABYQoAAWEMAAFhDgABYRAAAWETAAFhFAABYRUAAWEWAAFhFwABYRkAAWEbAAFhHAABYR0AAWEfAAFhIAABYWsAAWGOAAFhrgABYc4AAWHQAAFh0gABYdQAAWHWAAFh2QABYdoAAWHbAAFh3gABYd8AAWHhAAFh4gABYeQAAWHmAAFh5wABYegAAWHrAAFh7AABYfEAAWH+AAFiAwABYgUAAWIHAAFiDAABYg8AAWISAAFiFAABYjkAAWJdAAFihAABYqgAAWKrAAFirQABYq8AAWKxAAFiswABYrUAAWK2AAFiuQABYsYAAWLXAAFi2QABYtsAAWLdAAFi3wABYuEAAWLjAAFi5QABYucAAWL4AAFi+wABYv4AAWMBAAFjBAABYwcAAWMKAAFjDQABYxAAAWMSAAFjUQABY1MAAWNVAAFjVwABY1oAAWNbAAFjXAABY10AAWNeAAFjYAABY2IAAWNjAAFjZAABY2YAAWNnAAFjpgABY6gAAWOqAAFjrAABY68AAWOwAAFjsQABY7IAAWOzAAFjtQABY7cAAWO4AAFjuQABY7sAAWO8AAFj+wABY/0AAWQAAAFkAgABZAUAAWQGAAFkBwABZAgAAWQJAAFkCwABZA0AAWQOAAFkDwABZBEAAWQSAAFkHwABZCAAAWQhAAFkIwABZGIAAWRkAAFkZgABZGgAAWRrAAFkbAABZG0AAWRuAAFkbwABZHEAAWRzAAFkdAABZHUAAWR3AAFkeAABZLcAAWS5AAFkuwABZL0AAWTAAAFkwQABZMIAAWTDAAFkxAABZMYAAWTIAAFkyQABZMoAAWTMAAFkzQABZQwAAWUOAAFlEAABZRIAAWUVAAFlFgABZRcAAWUYAAFlGQABZRsAAWUdAAFlHgABZR8AAWUhAAFlIgABZWEAAWVjAAFlZQABZWcAAWVqAAFlawABZWwAAWVtAAFlbgABZXAAAWVyAAFlcwABZXQAAWV2AAFldwABZbYAAWW4AAFlugABZbwAAWW/AAFlwAABZcEAAWXCAAFlwwABZcUAAWXHAAFlyAABZckAAWXLAAFlzAABZfEAAWYVAAFmPAABZmAAAWZjAAFmZQABZmcAAWZpAAFmawABZm0AAWZuAAFmcQABZn4AAWaNAAFmjwABZpEAAWaTAAFmlQABZpcAAWaZAAFmmwABZqoAAWatAAFmsAABZrMAAWa2AAFmuQABZrwAAWa/AAFmwQABZwAAAWcCAAFnBAABZwYAAWcJAAFnCgABZwsAAWcMAAFnDQABZw8AAWcRAAFnEgABZxMAAWcVAAFnFgABZ1UAAWdXAAFnWQABZ1sAAWdeAAFnXwABZ2AAAWdhAAFnYgABZ2QAAWdmAAFnZwABZ2gAAWdqAAFnawABZ6oAAWesAAFnrgABZ7AAAWezAAFntAABZ7UAAWe2AAFntwABZ7kAAWe7AAFnvAABZ70AAWe/AAFnwAABZ/8AAWgBAAFoAwABaAUAAWgIAAFoCQABaAoAAWgLAAFoDAABaA4AAWgQAAFoEQABaBIAAWgUAAFoFQABaFQAAWhWAAFoWAABaFoAAWhdAAFoXgABaF8AAWhgAAFoYQABaGMAAWhlAAFoZgABaGcAAWhpAAFoagABaKkAAWirAAForQABaK8AAWiyAAFoswABaLQAAWi1AAFotgABaLgAAWi6AAFouwABaLwAAWi+AAFovwABaP4AAWkAAAFpAgABaQQAAWkHAAFpCAABaQkAAWkKAAFpCwABaQ0AAWkPAAFpEAABaREAAWkTAAFpFAABaV8AAWmCAAFpogABacIAAWnEAAFpxgABacgAAWnKAAFpzQABac4AAWnPAAFp0gABadMAAWnVAAFp1gABadgAAWnaAAFp2wABadwAAWnfAAFp4AABaeUAAWnyAAFp9wABafkAAWn7AAFqAAABagMAAWoGAAFqCAABai0AAWpRAAFqeAABapwAAWqfAAFqoQABaqMAAWqlAAFqpwABaqkAAWqqAAFqrQABaroAAWrLAAFqzQABas8AAWrRAAFq0wABatUAAWrXAAFq2QABatsAAWrsAAFq7wABavIAAWr1AAFq+AABavsAAWr+AAFrAQABawQAAWsGAAFrRQABa0cAAWtJAAFrSwABa04AAWtPAAFrUAABa1EAAWtSAAFrVAABa1YAAWtXAAFrWAABa1oAAWtbAAFrmgABa5wAAWueAAFroAABa6MAAWukAAFrpQABa6YAAWunAAFrqQABa6sAAWusAAFrrQABa68AAWuwAAFr7wABa/EAAWv0AAFr9gABa/kAAWv6AAFr+wABa/wAAWv9AAFr/wABbAEAAWwCAAFsAwABbAUAAWwGAAFsEwABbBQAAWwVAAFsFwABbFYAAWxYAAFsWgABbFwAAWxfAAFsYAABbGEAAWxiAAFsYwABbGUAAWxnAAFsaAABbGkAAWxrAAFsbAABbKsAAWytAAFsrwABbLEAAWy0AAFstQABbLYAAWy3AAFsuAABbLoAAWy8AAFsvQABbL4AAWzAAAFswQABbQAAAW0CAAFtBAABbQYAAW0JAAFtCgABbQsAAW0MAAFtDQABbQ8AAW0RAAFtEgABbRMAAW0VAAFtFgABbVUAAW1XAAFtWQABbVsAAW1eAAFtXwABbWAAAW1hAAFtYgABbWQAAW1mAAFtZwABbWgAAW1qAAFtawABbaoAAW2sAAFtrgABbbAAAW2zAAFttAABbbUAAW22AAFttwABbbkAAW27AAFtvAABbb0AAW2/AAFtwAABbeUAAW4JAAFuMAABblQAAW5XAAFuWQABblsAAW5dAAFuXwABbmEAAW5iAAFuZQABbnIAAW6BAAFugwABboUAAW6HAAFuiQABbosAAW6NAAFujwABbp4AAW6hAAFupAABbqcAAW6qAAFurQABbrAAAW6zAAFutQABbvQAAW72AAFu+AABbvoAAW79AAFu/gABbv8AAW8AAAFvAQABbwMAAW8FAAFvBgABbwcAAW8JAAFvCgABb0kAAW9LAAFvTQABb08AAW9SAAFvUwABb1QAAW9VAAFvVgABb1gAAW9aAAFvWwABb1wAAW9eAAFvXwABb54AAW+gAAFvogABb6QAAW+nAAFvqAABb6kAAW+qAAFvqwABb60AAW+vAAFvsAABb7EAAW+zAAFvtAABb/MAAW/1AAFv9wABb/kAAW/8AAFv/QABb/4AAW//AAFwAAABcAIAAXAEAAFwBQABcAYAAXAIAAFwCQABcEgAAXBKAAFwTAABcE4AAXBRAAFwUgABcFMAAXBUAAFwVQABcFcAAXBZAAFwWgABcFsAAXBdAAFwXgABcJ0AAXCfAAFwoQABcKMAAXCmAAFwpwABcKgAAXCpAAFwqgABcKwAAXCuAAFwrwABcLAAAXCyAAFwswABcPIAAXD0AAFw9gABcPgAAXD7AAFw/AABcP0AAXD+AAFw/wABcQEAAXEDAAFxBAABcQUAAXEHAAFxCAABcVMAAXF2AAFxlgABcbYAAXG4AAFxugABcbwAAXG+AAFxwQABccIAAXHDAAFxxgABcccAAXHJAAFxygABcc0AAXHQAAFx0QABcdIAAXHVAAFx1gABcdsAAXHoAAFx7QABce8AAXHyAAFx9wABcfoAAXH9AAFx/wABciQAAXJIAAFybwABcpMAAXKWAAFymAABcpoAAXKcAAFyngABcqAAAXKhAAFypAABcrEAAXLCAAFyxAABcsYAAXLIAAFyygABcswAAXLOAAFy0AABctIAAXLjAAFy5gABcukAAXLsAAFy7wABcvIAAXL1AAFy+AABcvsAAXL9AAFzPAABcz4AAXNAAAFzQgABc0UAAXNGAAFzRwABc0gAAXNJAAFzSwABc00AAXNOAAFzTwABc1EAAXNSAAFzkQABc5MAAXOVAAFzlwABc5oAAXObAAFznAABc50AAXOeAAFzoAABc6IAAXOjAAFzpAABc6YAAXOnAAFz5gABc+gAAXPrAAFz7QABc/AAAXPxAAFz8gABc/MAAXP0AAFz9gABc/gAAXP5AAFz+gABc/wAAXP9AAF0CgABdAsAAXQMAAF0DgABdE0AAXRPAAF0UQABdFMAAXRWAAF0VwABdFgAAXRZAAF0WgABdFwAAXReAAF0XwABdGAAAXRiAAF0YwABdKIAAXSkAAF0pgABdKgAAXSrAAF0rAABdK0AAXSuAAF0rwABdLEAAXSzAAF0tAABdLUAAXS3AAF0uAABdPcAAXT5AAF0+wABdP0AAXUAAAF1AQABdQIAAXUDAAF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AGAABgFcAAYBZAAGAWwABgF0AAYBgAAGAYQABgGIAAYBjAAGAZAABgGYAAYBoAAGAaQABgGoAAYBsAAGAbQABgKwAAYCuAAGAsAABgLIAAYC1AAGAtgABgLcAAYC4AAGAuQABgLsAAYC9AAGAvgABgL8AAYDBAAGAwgABgQEAAYEDAAGBBQABgQcAAYEKAAGBCwABgQwAAYENAAGBDgABgRAAAYESAAGBEwABgRQAAYEWAAGBFwABgVYAAYFYAAGBWgABgVwAAYFfAAGBYAABgWEAAYFiAAGBYwABgWUAAYFnAAGBaAABgWkAAYFrAAGBbAABgasAAYGtAAGBrwABgbEAAYG0AAGBtQABgbYAAYG3AAGBuAABgboAAYG8AAGBvQABgb4AAYHAAAGBwQABggAAAYICAAGCBAABggYAAYIJAAGCCgABggsAAYIMAAGCDQABgg8AAYIRAAGCEgABghMAAYIVAAGCFgABgmEAAYKEAAGCpAABgsQAAYLGAAGCyAABgsoAAYLMAAGCzwABgtAAAYLRAAGC1AABgtUAAYLXAAGC2AABgtoAAYLdAAGC3gABgt8AAYLiAAGC4wABgugAAYL1AAGC+gABgvwAAYL+AAGDAwABgwYAAYMJAAGDCwABgzAAAYNUAAGDewABg58AAYOiAAGDpAABg6YAAYOoAAGDqgABg6wAAYOtAAGDsAABg70AAYPOAAGD0AABg9IAAYPUAAGD1gABg9gAAYPaAAGD3AABg94AAYPvAAGD8gABg/UAAYP4AAGD+wABg/4AAYQBAAGEBAABhAcAAYQJAAGESAABhEoAAYRMAAGETgABhFEAAYRSAAGEUwABhFQAAYRVAAGEVwABhFkAAYRaAAGEWwABhF0AAYReAAGEnQABhJ8AAYShAAGEowABhKYAAYSnAAGEqAABhKkAAYSqAAGErAABhK4AAYSvAAGEsAABhLIAAYSzAAGE8gABhPQAAYT3AAGE+QABhPwAAYT9AAGE/gABhP8AAYUAAAGFAgABhQQAAYUFAAGFBgABhQgAAYUJAAGFFgABhRcAAYUYAAGFGgABhVkAAYVbAAGFXQABhV8AAYViAAGFYwABhWQAAYVlAAGFZgABhWgAAYVqAAGFawABhWwAAYVuAAGFbwABha4AAYWwAAGFsgABhbQAAYW3AAGFuAABhbkAAYW6AAGFuwABhb0AAYW/AAGFwAABhcEAAYXDAAGFxAABhgMAAYYFAAGGBwABhgkAAYYMAAGGDQABhg4AAYYPAAGGEAABhhIAAYYUAAGGFQABhhYAAYYYAAGGGQABhlgAAYZaAAGGXAABhl4AAYZhAAGGYgABhmMAAYZkAAGGZQABhmcAAYZpAAGGagABhmsAAYZtAAGGbgABhq0AAYavAAGGsQABhrMAAYa2AAGGtwABhrgAAYa5AAGGugABhrwAAYa+AAGGvwABhsAAAYbCAAGGwwABhugAAYcMAAGHMwABh1cAAYdaAAGHXAABh14AAYdgAAGHYgABh2QAAYdlAAGHaAABh3UAAYeEAAGHhgABh4gAAYeKAAGHjAABh44AAYeQAAGHkgABh6EAAYekAAGHpwABh6oAAYetAAGHsAABh7MAAYe2AAGHuAABh/cAAYf5AAGH+wABh/0AAYgAAAGIAQABiAIAAYgDAAGIBAABiAYAAYgIAAGICQABiAoAAYgMAAGIDQABiEwAAYhOAAGIUAABiFIAAYhVAAGIVgABiFcAAYhYAAGIWQABiFsAAYhdAAGIXgABiF8AAYhhAAGIYgABiKEAAYijAAGIpQABiKcAAYiqAAGIqwABiKwAAYitAAGIrgABiLAAAYiyAAGIswABiLQAAYi2AAGItwABiPYAAYj4AAGI+gABiPwAAYj/AAGJAAABiQEAAYkCAAGJAwABiQUAAYkHAAGJCAABiQkAAYkLAAGJDAABiUsAAYlNAAGJTwABiVEAAYlUAAGJVQABiVYAAYlXAAGJWAABiVoAAYlcAAGJXQABiV4AAYlgAAGJYQABiaAAAYmiAAGJpAABiaYAAYmpAAGJqgABiasAAYmsAAGJrQABia8AAYmxAAGJsgABibMAAYm1AAGJtgABifUAAYn3AAGJ+QABifsAAYn+AAGJ/wABigAAAYoBAAGKAgABigQAAYoGAAGKBwABiggAAYoKAAGKCwABilYAAYp5AAGKmQABirkAAYq7AAGKvQABir8AAYrBAAGKxAABisUAAYrGAAGKyQABisoAAYrMAAGKzQABis8AAYrSAAGK0wABitQAAYrXAAGK2AABit0AAYrqAAGK7wABivEAAYrzAAGK+AABivsAAYr+AAGLAAABiyUAAYtJAAGLcAABi5QAAYuXAAGLmQABi5sAAYudAAGLnwABi6EAAYuiAAGLpQABi7IAAYvDAAGLxQABi8cAAYvJAAGLywABi80AAYvPAAGL0QABi9MAAYvkAAGL5wABi+oAAYvtAAGL8AABi/MAAYv2AAGL+QABi/wAAYv+AAGMPQABjD8AAYxBAAGMQwABjEYAAYxHAAGMSAABjEkAAYxKAAGMTAABjE4AAYxPAAGMUAABjFIAAYxTAAGMkgABjJQAAYyWAAGMmAABjJsAAYycAAGMnQABjJ4AAYyfAAGMoQABjKMAAYykAAGMpQABjKcAAYyoAAGM5wABjOkAAYzsAAGM7gABjPEAAYzyAAGM8wABjPQAAYz1AAGM9wABjPkAAYz6AAGM+wABjP0AAYz+AAGNCwABjQwAAY0NAAGNDwABjU4AAY1QAAGNUgABjVQAAY1XAAGNWAABjVkAAY1aAAGNWwABjV0AAY1fAAGNYAABjWEAAY1jAAGNZAABjaMAAY2lAAGNpwABjakAAY2sAAGNrQABja4AAY2vAAGNsAABjbIAAY20AAGNtQABjbYAAY24AAGNuQABjfgAAY36AAGN/AABjf4AAY4BAAGOAgABjgMAAY4EAAGOBQABjgcAAY4JAAGOCgABjgsAAY4NAAGODgABjk0AAY5PAAGOUQABjlMAAY5WAAGOVwABjlgAAY5ZAAGOWgABjlwAAY5eAAGOXwABjmAAAY5iAAGOYwABjqIAAY6kAAGOpgABjqgAAY6rAAGOrAABjq0AAY6uAAGOrwABjrEAAY6zAAGOtAABjrUAAY63AAGOuAABjt0AAY8BAAGPKAABj0wAAY9PAAGPUQABj1MAAY9VAAGPVwABj1kAAY9aAAGPXQABj2oAAY95AAGPewABj30AAY9/AAGPgQABj4MAAY+FAAGPhwABj5YAAY+ZAAGPnAABj58AAY+iAAGPpQABj6gAAY+rAAGPrQABj+wAAY/uAAGP8AABj/IAAY/1AAGP9gABj/cAAY/4AAGP+QABj/sAAY/9AAGP/gABj/8AAZABAAGQAgABkEEAAZBDAAGQRQABkEcAAZBKAAGQSwABkEwAAZBNAAGQTgABkFAAAZBSAAGQUwABkFQAAZBWAAGQVwABkJYAAZCYAAGQmgABkJwAAZCfAAGQoAABkKEAAZCiAAGQowABkKUAAZCnAAGQqAABkKkAAZCrAAGQrAABkOsAAZDtAAGQ8AABkPIAAZD1AAGQ9gABkPcAAZD4AAGQ+QABkPsAAZD9AAGQ/gABkP8AAZEBAAGRAgABkUEAAZFDAAGRRQABkUcAAZFKAAGRSwABkUwAAZFNAAGRTgABkVAAAZFSAAGRUwABkVQAAZFWAAGRVwABkZYAAZGYAAGRmgABkZwAAZGfAAGRoAABkaEAAZGiAAGRowABkaUAAZGnAAGRqAABkakAAZGrAAGRrAABkesAAZHtAAGR7wABkfEAAZH0AAGR9QABkfYAAZH3AAGR+AABkfoAAZH8AAGR/QABkf4AAZIAAAGSAQABkkwAAZJvAAGSjwABkq8AAZKxAAGSswABkrUAAZK3AAGSugABkrsAAZK8AAGSvwABksAAAZLCAAGSwwABksUAAZLHAAGSyAABkskAAZLMAAGSzQABktIAAZLfAAGS5AABkuYAAZLoAAGS7QABkvAAAZLzAAGS9QABkxoAAZM+AAGTZQABk4kAAZOMAAGTjgABk5AAAZOSAAGTlAABk5YAAZOXAAGTmgABk6cAAZO4AAGTugABk7wAAZO+AAGTwAABk8IAAZPEAAGTxgABk8gAAZPZAAGT3AABk98AAZPiAAGT5QABk+gAAZPrAAGT7gABk/EAAZPzAAGUMgABlDQAAZQ2AAGUOAABlDsAAZQ8AAGUPQABlD4AAZQ/AAGUQQABlEMAAZREAAGURQABlEcAAZRIAAGUhwABlIkAAZSLAAGUjQABlJAAAZSRAAGUkgABlJMAAZSUAAGUlgABlJgAAZSZAAGUmgABlJwAAZSdAAGU3AABlN4AAZThAAGU4wABlOYAAZTnAAGU6AABlOkAAZTqAAGU7AABlO4AAZTvAAGU8AABlPIAAZTzAAGVAAABlQEAAZUCAAGVBAABlUMAAZVFAAGVRwABlUkAAZVMAAGVTQABlU4AAZVPAAGVUAABlVIAAZVUAAGVVQABlVYAAZVYAAGVWQABlZgAAZWaAAGVnAABlZ4AAZWhAAGVogABlaMAAZWkAAGVpQABlacAAZWpAAGVqgABlasAAZWtAAGVrgABle0AAZXvAAGV8QABlfMAAZX2AAGV9wABlfgAAZX5AAGV+gABlfwAAZX+AAGV/wABlgAAAZYCAAGWAwABlkIAAZZEAAGWRgABlkgAAZZLAAGWTAABlk0AAZZOAAGWTwABllEAAZZTAAGWVAABllUAAZZXAAGWWAABlpcAAZaZAAGWmwABlp0AAZagAAGWoQABlqIAAZajAAGWpAABlqYAAZaoAAGWqQABlqoAAZasAAGWrQABltIAAZb2AAGXHQABl0EAAZdEAAGXRgABl0gAAZdKAAGXTAABl04AAZdPAAGXUgABl18AAZduAAGXcAABl3IAAZd0AAGXdgABl3gAAZd6AAGXfAABl4sAAZeOAAGXkQABl5QAAZeXAAGXmgABl50AAZegAAGXogABl+EAAZfjAAGX5QABl+cAAZfqAAGX6wABl+wAAZftAAGX7gABl/AAAZfyAAGX8wABl/QAAZf2AAGX9wABmDYAAZg4AAGYOgABmDwAAZg/AAGYQAABmEEAAZhCAAGYQwABmEUAAZhHAAGYSAABmEkAAZhLAAGYTAABmIsAAZiNAAGYjwABmJEAAZiUAAGYlQABmJYAAZiXAAGYmAABmJoAAZicAAGYnQABmJ4AAZigAAGYoQABmOAAAZjiAAGY5AABmOYAAZjpAAGY6gABmOsAAZjsAAGY7QABmO8AAZjxAAGY8gABmPMAAZj1AAGY9gABmTUAAZk3AAGZOQABmTsAAZk+AAGZPwABmUAAAZlBAAGZQgABmUQAAZlGAAGZRwABmUgAAZlKAAGZSwABmYoAAZmMAAGZjgABmZAAAZmTAAGZlAABmZUAAZmWAAGZlwABmZkAAZmbAAGZnAABmZ0AAZmfAAGZoAABmd8AAZnhAAGZ4wABmeUAAZnoAAGZ6QABmeoAAZnrAAGZ7AABme4AAZnwAAGZ8QABmfIAAZn0AAGZ9QABmf4AAZn/AAGaAQABmkAAAZpCAAGaRAABmkYAAZpJAAGaSgABmksAAZpMAAGaTQABmk8AAZpSAAGaUwABmlQAAZpWAAGaVwABmpYAAZqYAAGamgABmpwAAZqfAAGaoAABmqEAAZqiAAGaowABmqUAAZqoAAGaqQABmqoAAZqsAAGarQABmuwAAZruAAGa8QABmvMAAZr2AAGa9wABmvgAAZr5AAGa+gABmvwAAZr/AAGbAAABmwEAAZsDAAGbBAABm08AAZtyAAGbkgABm7IAAZu0AAGbtgABm7gAAZu6AAGbvAABm70AAZu+AAGbwQABm8IAAZvEAAGbxQABm8cAAZvJAAGbygABm8sAAZvOAAGbzwABm9QAAZvhAAGb5gABm+gAAZvqAAGb7wABm/IAAZv1AAGb9wABnBwAAZxAAAGcZwABnIsAAZyOAAGckAABnJIAAZyUAAGclgABnJgAAZyZAAGcnAABnKkAAZy6AAGcvAABnL4AAZzAAAGcwgABnMQAAZzGAAGcyAABnMoAAZzbAAGc3gABnOEAAZzkAAGc5wABnOoAAZztAAGc8AABnPMAAZz1AAGdNAABnTYAAZ04AAGdOgABnT0AAZ0+AAGdPwABnUAAAZ1BAAGdQwABnUUAAZ1GAAGdRwABnUkAAZ1KAAGdiQABnYsAAZ2NAAGdjwABnZIAAZ2TAAGdlAABnZUAAZ2WAAGdmAABnZoAAZ2bAAGdnAABnZ4AAZ2fAAGd3gABneAAAZ3jAAGd5QABnegAAZ3pAAGd6gABnesAAZ3sAAGd7gABnfAAAZ3xAAGd8gABnfQAAZ31AAGeAgABngMAAZ4EAAGeBgABnkUAAZ5HAAGeSQABnksAAZ5OAAGeTwABnlAAAZ5RAAGeUgABnlQAAZ5WAAGeVwABnlgAAZ5aAAGeWwABnpoAAZ6cAAGengABnqAAAZ6jAAGepAABnqUAAZ6mAAGepwABnqkAAZ6rAAGerAABnq0AAZ6vAAGesAABnu8AAZ7xAAGe8wABnvUAAZ74AAGe+QABnvoAAZ77AAGe/AABnv4AAZ8AAAGfAQABnwIAAZ8EAAGfBQABn0QAAZ9GAAGfSAABn0oAAZ9NAAGfTgABn08AAZ9QAAGfUQABn1MAAZ9VAAGfVgABn1cAAZ9ZAAGfWgABn5kAAZ+bAAGfnQABn58AAZ+iAAGfowABn6QAAZ+lAAGfpgABn6gAAZ+qAAGfqwABn6wAAZ+uAAGfrwABn9QAAZ/4AAGgHwABoEMAAaBGAAGgSAABoEoAAaBMAAGgTgABoFAAAaBRAAGgVAABoGEAAaBwAAGgcgABoHQAAaB2AAGgeAABoHoAAaB8AAGgfgABoI0AAaCQAAGgkwABoJYAAaCZAAGgnAABoJ8AAaCiAAGgpAABoOMAAaDlAAGg5wABoOkAAaDsAAGg7QABoO4AAaDvAAGg8AABoPIAAaD0AAGg9QABoPYAAaD4AAGg+QABoTgAAaE6AAGhPAABoT4AAaFBAAGhQgABoUMAAaFEAAGhRQABoUcAAaFJAAGhSgABoUsAAaFNAAGhTgABoY0AAaGPAAGhkQABoZMAAaGWAAGhlwABoZgAAaGZAAGhmgABoZwAAaGeAAGhnwABoaAAAaGiAAGhowABoeIAAaHkAAGh5gABoegAAaHrAAGh7AABoe0AAaHuAAGh7wABofEAAaHzAAGh9AABofUAAaH3AAGh+AABojcAAaI5AAGiOwABoj0AAaJAAAGiQQABokIAAaJDAAGiRAABokYAAaJIAAGiSQABokoAAaJMAAGiTQABoowAAaKOAAGikAABopIAAaKVAAGilgABopcAAaKYAAGimQABopsAAaKdAAGingABop8AAaKhAAGiogABouEAAaLjAAGi5QABoucAAaLqAAGi6wABouwAAaLtAAGi7gABovAAAaLyAAGi8wABovQAAaL2AAGi9wABo0IAAaNlAAGjhQABo6UAAaOnAAGjqQABo6sAAaOtAAGjrwABo7AAAaOxAAGjtAABo7UAAaO3AAGjuAABo7oAAaO8AAGjvQABo74AAaPBAAGjwgABo8cAAaPUAAGj2QABo9sAAaPdAAGj4gABo+UAAaPoAAGj6gABpA8AAaQzAAGkWgABpH4AAaSBAAGkgwABpIUAAaSHAAGkiQABpIsAAaSMAAGkjwABpJwAAaStAAGkrwABpLEAAaSzAAGktQABpLcAAaS5AAGkuwABpL0AAaTOAAGk0QABpNQAAaTXAAGk2gABpN0AAaTgAAGk4wABpOYAAaToAAGlJwABpSkAAaUrAAGlLQABpTAAAaUxAAGlMgABpTMAAaU0AAGlNgABpTgAAaU5AAGlOgABpTwAAaU9AAGlfAABpX4AAaWAAAGlggABpYUAAaWGAAGlhwABpYgAAaWJAAGliwABpY0AAaWOAAGljwABpZEAAaWSAAGl0QABpdMAAaXWAAGl2AABpdsAAaXcAAGl3QABpd4AAaXfAAGl4QABpeMAAaXkAAGl5QABpecAAaXoAAGl9QABpfYAAaX3AAGl+QABpjgAAaY6AAGmPAABpj4AAaZBAAGmQgABpkMAAaZEAAGmRQABpkcAAaZJAAGmSgABpksAAaZNAAGmTgABpo0AAaaPAAGmkQABppMAAaaWAAGmlwABppgAAaaZAAGmmgABppwAAaaeAAGmnwABpqAAAaaiAAGmowABpuIAAabkAAGm5gABpugAAabrAAGm7AABpu0AAabuAAGm7wABpvEAAabzAAGm9AABpvUAAab3AAGm+AABpzcAAac5AAGnOwABpz0AAadAAAGnQQABp0IAAadDAAGnRAABp0YAAadIAAGnSQABp0oAAadMAAGnTQABp4wAAaeOAAGnkAABp5IAAaeVAAGnlgABp5cAAaeYAAGnmQABp5sAAaedAAGnngABp58AAaehAAGnogABp8cAAafrAAGoEgABqDYAAag5AAGoOwABqD0AAag/AAGoQQABqEMAAahEAAGoRwABqFQAAahjAAGoZQABqGcAAahpAAGoawABqG0AAahvAAGocQABqIAAAaiDAAGohgABqIkAAaiMAAGojwABqJIAAaiVAAGolwABqNYAAajYAAGo2gABqNwAAajfAAGo4AABqOEAAajiAAGo4wABqOUAAajnAAGo6AABqOkAAajrAAGo7AABqSsAAaktAAGpLwABqTEAAak0AAGpNQABqTYAAak3AAGpOAABqToAAak8AAGpPQABqT4AAalAAAGpQQABqYAAAamCAAGphAABqYYAAamJAAGpigABqYsAAamMAAGpjQABqY8AAamRAAGpkgABqZMAAamVAAGplgABqdUAAanXAAGp2QABqdsAAaneAAGp3wABqeAAAanhAAGp4gABqeQAAanmAAGp5wABqegAAanqAAGp6wABqioAAaosAAGqLgABqjAAAaozAAGqNAABqjUAAao2AAGqNwABqjkAAao7AAGqPAABqj0AAao/AAGqQAABqn8AAaqBAAGqgwABqoUAAaqIAAGqiQABqooAAaqLAAGqjAABqo4AAaqQAAGqkQABqpIAAaqUAAGqlQABqtQAAarWAAGq2AABqtoAAardAAGq3gABqt8AAargAAGq4QABquMAAarlAAGq5gABqucAAarpAAGq6gABqzUAAatYAAGreAABq5gAAauaAAGrnAABq54AAaugAAGrogABq6MAAaukAAGrpwABq6gAAauqAAGrqwABq60AAauvAAGrsAABq7EAAau0AAGrtQABq7oAAavHAAGrzAABq84AAavQAAGr1QABq9gAAavbAAGr3QABrAIAAawmAAGsTQABrHEAAax0AAGsdgABrHgAAax6AAGsfAABrH4AAax/AAGsggABrI8AAaygAAGsogABrKQAAaymAAGsqAABrKoAAaysAAGsrgABrLAAAazBAAGsxAABrMcAAazKAAGszQABrNAAAazTAAGs1gABrNkAAazbAAGtGgABrRwAAa0eAAGtIAABrSMAAa0kAAGtJQABrSYAAa0nAAGtKQABrSsAAa0sAAGtLQABrS8AAa0wAAGtbwABrXEAAa1zAAGtdQABrXgAAa15AAGtegABrXsAAa18AAGtfgABrYAAAa2BAAGtggABrYQAAa2FAAGtxAABrcYAAa3JAAGtywABrc4AAa3PAAGt0AABrdEAAa3SAAGt1AABrdYAAa3XAAGt2AABrdoAAa3bAAGt6AABrekAAa3qAAGt7AABrisAAa4tAAGuLwABrjEAAa40AAGuNQABrjYAAa43AAGuOAABrjoAAa48AAGuPQABrj4AAa5AAAGuQQABroAAAa6CAAGuhAABroYAAa6JAAGuigABrosAAa6MAAGujQABro8AAa6RAAGukgABrpMAAa6VAAGulgABrtUAAa7XAAGu2QABrtsAAa7eAAGu3wABruAAAa7hAAGu4gABruQAAa7mAAGu5wABrugAAa7qAAGu6wABryoAAa8sAAGvLgABrzAAAa8zAAGvNAABrzUAAa82AAGvNwABrzkAAa87AAGvPAABrz0AAa8/AAGvQAABr38AAa+BAAGvgwABr4UAAa+IAAGviQABr4oAAa+LAAGvjAABr44AAa+QAAGvkQABr5IAAa+UAAGvlQABr7oAAa/eAAGwBQABsCkAAbAsAAGwLgABsDAAAbAyAAGwNAABsDYAAbA3AAGwOgABsEcAAbBWAAGwWAABsFoAAbBcAAGwXgABsGAAAbBiAAGwZAABsHMAAbB2AAGweQABsHwAAbB/AAGwggABsIUAAbCIAAGwigABsMkAAbDLAAGwzQABsM8AAbDSAAGw0wABsNQAAbDVAAGw1gABsNgAAbDaAAGw2wABsNwAAbDeAAGw3wABsR4AAbEgAAGxIgABsSQAAbEnAAGxKAABsSkAAbEqAAGxKwABsS0AAbEvAAGxMAABsTEAAbEzAAGxNAABsXMAAbF1AAGxdwABsXkAAbF8AAGxfQABsX4AAbF/AAGxgAABsYIAAbGEAAGxhQABsYYAAbGIAAGxiQABscgAAbHKAAGxzAABsc4AAbHRAAGx0gABsdMAAbHUAAGx1QABsdcAAbHZAAGx2gABsdsAAbHdAAGx3gABsh0AAbIfAAGyIQABsiMAAbImAAGyJwABsigAAbIpAAGyKgABsiwAAbIuAAGyLwABsjAAAbIyAAGyMwABsnIAAbJ0AAGydgABsngAAbJ7AAGyfAABsn0AAbJ+AAGyfwABsoEAAbKDAAGyhAABsoUAAbKHAAGyiAABsscAAbLJAAGyywABss0AAbLQAAGy0QABstIAAbLTAAGy1AABstYAAbLYAAGy2QABstoAAbLcAAGy3QABsygAAbNLAAGzawABs4sAAbONAAGzjwABs5EAAbOTAAGzlQABs5YAAbOXAAGzmgABs5sAAbOdAAGzngABs6AAAbOiAAGzowABs6QAAbOnAAGzqAABs60AAbO6AAGzvwABs8EAAbPDAAGzyAABs8sAAbPOAAGz0AABs/UAAbQZAAG0QAABtGQAAbRnAAG0aQABtGsAAbRtAAG0bwABtHEAAbRyAAG0dQABtIIAAbSTAAG0lQABtJcAAbSZAAG0mwABtJ0AAbSfAAG0oQABtKMAAbS0AAG0twABtLoAAbS9AAG0wAABtMMAAbTGAAG0yQABtMwAAbTOAAG1DQABtQ8AAbURAAG1EwABtRYAAbUXAAG1GAABtRkAAbUaAAG1HAABtR4AAbUfAAG1IAABtSIAAbUjAAG1YgABtWQAAbVmAAG1aAABtWsAAbVsAAG1bQABtW4AAbVvAAG1cQABtXMAAbV0AAG1dQABtXcAAbV4AAG1twABtbkAAbW8AAG1vgABtcEAAbXCAAG1wwABtcQAAbXFAAG1xwABtckAAbXKAAG1ywABtc0AAbXOAAG12wABtdwAAbXdAAG13wABth4AAbYgAAG2IgABtiQAAbYnAAG2KAABtikAAbYqAAG2KwABti0AAbYvAAG2MAABtjEAAbYzAAG2NAABtnMAAbZ1AAG2dwABtnkAAbZ8AAG2fQABtn4AAbZ/AAG2gAABtoIAAbaEAAG2hQABtoYAAbaIAAG2iQABtsgAAbbKAAG2zAABts4AAbbRAAG20gABttMAAbbUAAG21QABttcAAbbZAAG22gABttsAAbbdAAG23gABtx0AAbcfAAG3IQABtyMAAbcmAAG3JwABtygAAbcpAAG3KgABtywAAbcuAAG3LwABtzAAAbcyAAG3MwABt3IAAbd0AAG3dgABt3gAAbd7AAG3fAABt30AAbd+AAG3fwABt4EAAbeDAAG3hAABt4UAAbeHAAG3iAABt60AAbfRAAG3+AABuBwAAbgfAAG4IQABuCMAAbglAAG4JwABuCkAAbgqAAG4LQABuDoAAbhJAAG4SwABuE0AAbhPAAG4UQABuFMAAbhVAAG4VwABuGYAAbhpAAG4bAABuG8AAbhyAAG4dQABuHgAAbh7AAG4fQABuLwAAbi+AAG4wAABuMIAAbjFAAG4xgABuMcAAbjIAAG4yQABuMsAAbjNAAG4zgABuM8AAbjRAAG40gABuREAAbkTAAG5FQABuRcAAbkaAAG5GwABuRwAAbkdAAG5HgABuSAAAbkiAAG5IwABuSQAAbkmAAG5JwABuWYAAbloAAG5agABuWwAAblvAAG5cAABuXEAAblyAAG5cwABuXUAAbl3AAG5eAABuXkAAbl7AAG5fAABubsAAbm9AAG5vwABucEAAbnEAAG5xQABucYAAbnHAAG5yAABucoAAbnMAAG5zQABuc4AAbnQAAG50QABuhAAAboSAAG6FAABuhYAAboZAAG6GgABuhsAAbocAAG6HQABuh8AAbohAAG6IgABuiMAAbolAAG6JgABumUAAbpnAAG6aQABumsAAbpuAAG6bwABunAAAbpxAAG6cgABunQAAbp2AAG6dwABungAAbp6AAG6ewABuroAAbq8AAG6vgABusAAAbrDAAG6xAABusUAAbrGAAG6xwABuskAAbrLAAG6zAABus0AAbrPAAG60AABuxsAAbs+AAG7XgABu34AAbuAAAG7ggABu4QAAbuGAAG7iAABu4kAAbuKAAG7jQABu44AAbuQAAG7kQABu5MAAbuVAAG7lgABu5cAAbuaAAG7mwABu6AAAbutAAG7sgABu7QAAbu2AAG7uwABu74AAbvBAAG7wwABu+gAAbwMAAG8MwABvFcAAbxaAAG8XAABvF4AAbxgAAG8YgABvGQAAbxlAAG8aAABvHUAAbyGAAG8iAABvIoAAbyMAAG8jgABvJAAAbySAAG8lAABvJYAAbynAAG8qgABvK0AAbywAAG8swABvLYAAby5AAG8vAABvL8AAbzBAAG9AAABvQIAAb0EAAG9BgABvQkAAb0KAAG9CwABvQwAAb0NAAG9DwABvREAAb0SAAG9EwABvRUAAb0WAAG9VQABvVcAAb1ZAAG9WwABvV4AAb1fAAG9YAABvWEAAb1iAAG9ZAABvWYAAb1nAAG9aAABvWoAAb1rAAG9qgABvawAAb2vAAG9sQABvbQAAb21AAG9tgABvbcAAb24AAG9ugABvbwAAb29AAG9vgABvcAAAb3BAAG9zgABvc8AAb3QAAG90gABvhEAAb4TAAG+FQABvhcAAb4aAAG+GwABvhwAAb4dAAG+HgABviAAAb4iAAG+IwABviQAAb4mAAG+JwABvmYAAb5oAAG+agABvmwAAb5vAAG+cAABvnEAAb5yAAG+cwABvnUAAb53AAG+eAABvnkAAb57AAG+fAABvrsAAb69AAG+vwABvsEAAb7EAAG+xQABvsYAAb7HAAG+yAABvsoAAb7MAAG+zQABvs4AAb7QAAG+0QABvxAAAb8SAAG/FAABvxYAAb8ZAAG/GgABvxsAAb8cAAG/HQABvx8AAb8hAAG/IgABvyMAAb8lAAG/JgABv2UAAb9nAAG/aQABv2sAAb9uAAG/bwABv3AAAb9xAAG/cgABv3QAAb92AAG/dwABv3gAAb96AAG/ewABv6AAAb/EAAG/6wABwA8AAcASAAHAFAABwBYAAcAYAAHAGgABwBwAAcAdAAHAIAABwC0AAcA8AAHAPgABwEAAAcBCAAHARAABwEYAAcBIAAHASgABwFkAAcBcAAHAXwABwGIAAcBlAAHAaAABwGsAAcBuAAHAcAABwK8AAcCxAAHAswABwLUAAcC4AAHAuQABwLoAAcC7AAHAvAABwL4AAcDAAAHAwQABwMIAAcDEAAHAxQABwQQAAcEGAAHBCAABwQoAAcENAAHBDgABwQ8AAcEQAAHBEQABwRMAAcEVAAHBFgABwRcAAcEZAAHBGgABwVkAAcFbAAHBXQABwV8AAcFiAAHBYwABwWQAAcFlAAHBZgABwWgAAcFqAAHBawABwWwAAcFuAAHBbwABwa4AAcGwAAHBsgABwbQAAcG3AAHBuAABwbkAAcG6AAHBuwABwb0AAcG/AAHBwAABwcEAAcHDAAHBxAABwgMAAcIFAAHCBwABwgkAAcIMAAHCDQABwg4AAcIPAAHCEAABwhIAAcIUAAHCFQABwhYAAcIYAAHCGQABwlgAAcJaAAHCXAABwl4AAcJhAAHCYgABwmMAAcJkAAHCZQABwmcAAcJpAAHCagABwmsAAcJtAAHCbgABwq0AAcKvAAHCsQABwrMAAcK2AAHCtwABwrgAAcK5AAHCugABwrwAAcK+AAHCvwABwsAAAcLCAAHCwwABww4AAcMxAAHDUQABw3EAAcNzAAHDdQABw3cAAcN5AAHDewABw3wAAcN9AAHDgAABw4EAAcODAAHDhAABw4YAAcOIAAHDiQABw4oAAcONAAHDjgABw5MAAcOgAAHDpQABw6cAAcOpAAHDrgABw7EAAcO0AAHDtgABw9sAAcP/AAHEJgABxEoAAcRNAAHETwABxFEAAcRTAAHEVQABxFcAAcRYAAHEWwABxGgAAcR5AAHEewABxH0AAcR/AAHEgQABxIMAAcSFAAHEhwABxIkAAcSaAAHEnQABxKAAAcSjAAHEpgABxKkAAcSsAAHErwABxLIAAcS0AAHE8wABxPUAAcT3AAHE+QABxPwAAcT9AAHE/gABxP8AAcUAAAHFAgABxQQAAcUFAAHFBgABxQgAAcUJAAHFSAABxUoAAcVMAAHFTgABxVEAAcVSAAHFUwABxVQAAcVVAAHFVwABxVkAAcVaAAHFWwABxV0AAcVeAAHFnQABxZ8AAcWiAAHFpAABxacAAcWoAAHFqQABxaoAAcWrAAHFrQABxa8AAcWwAAHFsQABxbMAAcW0AAHFwQABxcIAAcXDAAHFxQABxgQAAcYGAAHGCAABxgoAAcYNAAHGDgABxg8AAcYQAAHGEQABxhMAAcYVAAHGFgABxhcAAcYZAAHGGgABxlkAAcZbAAHGXQABxl8AAcZiAAHGYwABxmQAAcZlAAHGZgABxmgAAcZqAAHGawABxmwAAcZuAAHGbwABxq4AAcawAAHGsgABxrQAAca3AAHGuAABxrkAAca6AAHGuwABxr0AAca/AAHGwAABxsEAAcbDAAHGxAABxwMAAccFAAHHBwABxwkAAccMAAHHDQABxw4AAccPAAHHEAABxxIAAccUAAHHFQABxxYAAccYAAHHGQABx1gAAcdaAAHHXAABx14AAcdhAAHHYgABx2MAAcdkAAHHZQABx2cAAcdpAAHHagABx2sAAcdtAAHHbgABx5MAAce3AAHH3gAByAIAAcgFAAHIBwAByAkAAcgLAAHIDQAByA8AAcgQAAHIEwAByCAAAcgvAAHIMQAByDMAAcg1AAHINwAByDkAAcg7AAHIPQAByEwAAchPAAHIUgAByFUAAchYAAHIWwAByF4AAchhAAHIYwAByKIAAcikAAHIpgAByKgAAcirAAHIrAAByK0AAciuAAHIrwAByLEAAcizAAHItAAByLUAAci3AAHIuAAByPcAAcj5AAHI+wAByP0AAckAAAHJAQAByQIAAckDAAHJBAAByQYAAckIAAHJCQAByQoAAckMAAHJDQAByUwAAclOAAHJUAAByVIAAclVAAHJVgAByVcAAclYAAHJWQAByVsAAcldAAHJXgAByV8AAclhAAHJYgAByaEAAcmjAAHJpQAByacAAcmqAAHJqwAByawAAcmtAAHJrgABybAAAcmyAAHJswABybQAAcm2AAHJtwAByfYAAcn4AAHJ+gAByfwAAcn/AAHKAAABygEAAcoCAAHKAwABygUAAcoHAAHKCAABygkAAcoLAAHKDAAByksAAcpNAAHKTwABylEAAcpUAAHKVQABylYAAcpXAAHKWAAByloAAcpcAAHKXQAByl4AAcpgAAHKYQAByqAAAcqiAAHKpAAByqYAAcqpAAHKqgAByqsAAcqsAAHKrQAByq8AAcqxAAHKsgAByrMAAcq1AAHKtgABywEAAcskAAHLRAABy2QAActmAAHLaAABy2oAActsAAHLbgABy28AActwAAHLcwABy3QAAct2AAHLdwABy3kAAct7AAHLfAABy30AAcuAAAHLgQABy4YAAcuTAAHLmAABy5oAAcucAAHLoQABy6QAAcunAAHLqQABy84AAcvyAAHMGQABzD0AAcxAAAHMQgABzEQAAcxGAAHMSAABzEoAAcxLAAHMTgABzFsAAcxsAAHMbgABzHAAAcxyAAHMdAABzHYAAcx4AAHMegABzHwAAcyNAAHMkAABzJMAAcyWAAHMmQABzJwAAcyfAAHMogABzKUAAcynAAHM5gABzOgAAczqAAHM7AABzO8AAczwAAHM8QABzPIAAczzAAHM9QABzPcAAcz4AAHM+QABzPsAAcz8AAHNOwABzT0AAc0/AAHNQQABzUQAAc1FAAHNRgABzUcAAc1IAAHNSgABzUwAAc1NAAHNTgABzVAAAc1RAAHNkAABzZIAAc2VAAHNlwABzZoAAc2bAAHNnAABzZ0AAc2eAAHNoAABzaIAAc2jAAHNpAABzaYAAc2nAAHNtAABzbUAAc22AAHNuAABzfcAAc35AAHN+wABzf0AAc4AAAHOAQABzgIAAc4DAAHOBAABzgYAAc4IAAHOCQABzgoAAc4MAAHODQABzkwAAc5OAAHOUAABzlIAAc5VAAHOVgABzlcAAc5YAAHOWQABzlsAAc5dAAHOXgABzl8AAc5hAAHOYgABzqEAAc6jAAHOpQABzqcAAc6qAAHOqwABzqwAAc6tAAHOrgABzrAAAc6yAAHOswABzrQAAc62AAHOtwABzvYAAc74AAHO+gABzvwAAc7/AAHPAAABzwEAAc8CAAHPAwABzwUAAc8HAAHPCAABzwkAAc8LAAHPDAABz0sAAc9NAAHPTwABz1EAAc9UAAHPVQABz1YAAc9XAAHPWAABz1oAAc9cAAHPXQABz14AAc9gAAHPYQABz4YAAc+qAAHP0QABz/UAAc/4AAHP+gABz/wAAc/+AAHQAAAB0AIAAdADAAHQBgAB0BMAAdAiAAHQJAAB0CYAAdAoAAHQKgAB0CwAAdAuAAHQMAAB0D8AAdBCAAHQRQAB0EgAAdBLAAHQTgAB0FEAAdBUAAHQVgAB0JUAAdCXAAHQmQAB0JsAAdCeAAHQnwAB0KAAAdChAAHQogAB0KQAAdCmAAHQpwAB0KgAAdCqAAHQqwAB0OoAAdDsAAHQ7gAB0PAAAdDzAAHQ9AAB0PUAAdD2AAHQ9wAB0PkAAdD7AAHQ/AAB0P0AAdD/AAHRAAAB0T8AAdFBAAHRQwAB0UUAAdFIAAHRSQAB0UoAAdFLAAHRTAAB0U4AAdFQAAHRUQAB0VIAAdFUAAHRVQAB0ZQAAdGWAAHRmQAB0ZsAAdGeAAHRnwAB0aAAAdGhAAHRogAB0aQAAdGmAAHRpwAB0agAAdGqAAHRqwAB0eoAAdHsAAHR7gAB0fAAAdHzAAHR9AAB0fUAAdH2AAHR9wAB0fkAAdH7AAHR/AAB0f0AAdH/AAHSAAAB0j8AAdJBAAHSQwAB0kUAAdJIAAHSSQAB0koAAdJLAAHSTAAB0k4AAdJQAAHSUQAB0lIAAdJUAAHSVQAB0pQAAdKWAAHSmAAB0poAAdKdAAHSngAB0p8AAdKgAAHSoQAB0qMAAdKlAAHSpgAB0qcAAdKpAAHSqgAB0vUAAdMYAAHTOAAB01gAAdNaAAHTXAAB014AAdNgAAHTYgAB02MAAdNkAAHTZwAB02gAAdNqAAHTawAB020AAdNvAAHTcAAB03EAAdN0AAHTdQAB03oAAdOHAAHTjAAB044AAdOQAAH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CgAACAoMAAgKGAAICiQACAosAAgLKAAICzAACAs8AAgLRAAIC1AACAtUAAgLWAAIC1wACAtgAAgLaAAIC3AACAt0AAgLeAAIC4AACAuEAAgLqAAIC6wACAu0AAgMsAAIDLgACAzAAAgMyAAIDNQACAzYAAgM3AAIDOAACAzkAAgM7AAIDPQACAz4AAgM/AAIDQQACA0IAAgOBAAIDgwACA4UAAgOHAAIDigACA4sAAgOMAAIDjQACA44AAgOQAAIDkgACA5MAAgOUAAIDlgACA5cAAgPWAAID2AACA9sAAgPdAAID4AACA+EAAgPiAAID4wACA+QAAgPmAAID6AACA+kAAgPqAAID7AACA+0AAgP2AAID9wACA/kAAgQ4AAIEOgACBDwAAgQ+AAIEQQACBEIAAgRDAAIERAACBEUAAgRHAAIESQACBEoAAgRLAAIETQACBE4AAgSNAAIEjwACBJIAAgSUAAIElwACBJgAAgSZAAIEmgACBJsAAgSdAAIEnwACBKAAAgShAAIEowACBKQAAgSxAAIEsgACBLMAAgS1AAIE9AACBPYAAgT4AAIE+gACBP0AAgT+AAIE/wACBQAAAgUBAAIFAwACBQUAAgUGAAIFBwACBQkAAgUKAAIFSQACBUsAAgVOAAIFUAACBVMAAgVUAAIFVQACBVYAAgVXAAIFWQACBVsAAgVcAAIFXQACBV8AAgVgAAIFfAACBYkAAgWcAAIFnwACBaIAAgWlAAIFqAACBasAAgWuAAIFsQACBbQAAgW3AAIFygACBc0AAgXQAAIF0wACBdYAAgXZAAIF3AACBd8AAgXiAAIF5QACBecAAgXuAAIGAQACBgcAAgYgAAIGMwACBkYAAgZkAAIGbwACBoUAAgbQAAIG8wACBxMAAgczAAIHNQACBzcAAgc5AAIHOwACBz4AAgc/AAIHQAACB0MAAgdEAAIHRgACB0cAAgdKAAIHTQACB04AAgdPAAIHUgACB1MAAgdYAAIHZQACB2oAAgdsAAIHbwACB3QAAgd3AAIHegACB3wAAgehAAIHxQACB+wAAggQAAIIEwACCBUAAggXAAIIGQACCBsAAggdAAIIHgACCCEAAgguAAIIPwACCEEAAghDAAIIRQACCEcAAghJAAIISwACCE0AAghPAAIIYAACCGMAAghmAAIIaQACCGwAAghvAAIIcgACCHUAAgh4AAIIegACCLkAAgi7AAIIvQACCL8AAgjCAAIIwwACCMQAAgjFAAIIxgACCMgAAgjKAAIIywACCMwAAgjOAAIIzwACCQ4AAgkQAAIJEgACCRQAAgkXAAIJGAACCRkAAgkaAAIJGwACCR0AAgkfAAIJIAACCSEAAgkjAAIJJAACCWMAAgllAAIJaAACCWoAAgltAAIJbgACCW8AAglwAAIJcQACCXMAAgl1AAIJdgACCXcAAgl5AAIJegACCYcAAgmIAAIJiQACCYsAAgnKAAIJzAACCc4AAgnQAAIJ0wACCdQAAgnVAAIJ1gACCdcAAgnZAAIJ2wACCdwAAgndAAIJ3wACCeAAAgofAAIKIQACCiMAAgolAAIKKAACCikAAgoqAAIKKwACCiwAAgouAAIKMAACCjEAAgoyAAIKNAACCjUAAgp0AAIKdgACCngAAgp6AAIKfQACCn4AAgp/AAIKgAACCoEAAgqDAAIKhQACCoYAAgqHAAIKiQACCooAAgrJAAIKywACCs0AAgrPAAIK0gACCtMAAgrUAAIK1QACCtYAAgrYAAIK2gACCtsAAgrcAAIK3gACCt8AAgseAAILIAACCyIAAgskAAILJwACCygAAgspAAILKgACCysAAgstAAILLwACCzAAAgsxAAILMwACCzQAAgtZAAILfQACC6QAAgvIAAILywACC84AAgvQAAIL0gACC9QAAgvWAAIL1wACC9oAAgvnAAIL9gACC/kAAgv8AAIL/wACDAIAAgwFAAIMCAACDAsAAgwaAAIMHQACDCAAAgwjAAIMJgACDCkAAgwsAAIMLwACDDEAAgxwAAIMcgACDHUAAgx3AAIMegACDHsAAgx8AAIMfQACDH4AAgyAAAIMgwACDIQAAgyFAAIMhwACDIgAAgzHAAIMyQACDMwAAgzOAAIM0QACDNIAAgzTAAIM1AACDNUAAgzXAAIM2gACDNsAAgzcAAIM3gACDN8AAg0eAAINIAACDSMAAg0lAAINKAACDSkAAg0qAAINKwACDSwAAg0uAAINMQACDTIAAg0zAAINNQACDTYAAg11AAINdwACDXoAAg18AAINfwACDYAAAg2BAAINggACDYMAAg2FAAINiAACDYkAAg2KAAINjAACDY0AAg3QAAIN9AACDhgAAg47AAIOYgACDoIAAg6pAAIO0AACDvAAAg8UAAIPOAACDzoAAg89AAIPPwACD0EAAg9DAAIPRgACD0kAAg9LAAIPTQACD1AAAg9SAAIPVAACD1cAAg9aAAIPWwACD2AAAg9tAAIPcAACD3IAAg91AAIPeAACD3oAAg+fAAIPwwACD+oAAhAOAAIQEQACEBMAAhAVAAIQFwACEBkAAhAbAAIQHAACEB8AAhAsAAIQPQACED8AAhBBAAIQQwACEEUAAhBHAAIQSQACEEsAAhBNAAIQXgACEGEAAhBkAAIQZwACEGoAAhBtAAIQcAACEHMAAhB2AAIQeAACELcAAhC5AAIQvAACEL4AAhDBAAIQwgACEMMAAhDEAAIQxQACEMcAAhDJAAIQygACEMsAAhDNAAIQzgACENcAAhDYAAIQ2gACERkAAhEbAAIRHQACER8AAhEiAAIRIwACESQAAhElAAIRJgACESgAAhEqAAIRKwACESwAAhEuAAIRLwACEW4AAhFwAAIRcgACEXQAAhF3AAIReAACEXkAAhF6AAIRewACEX0AAhF/AAIRgAACEYEAAhGDAAIRhAACEcMAAhHFAAIRyAACEcoAAhHNAAIRzgACEc8AAhHQAAIR0QACEdMAAhHVAAIR1gACEdcAAhHZAAIR2gACEeMAAhHkAAIR5gACEiUAAhInAAISKQACEisAAhIuAAISLwACEjAAAhIxAAISMgACEjQAAhI2AAISNwACEjgAAhI6AAISOwACEnoAAhJ8AAISfwACEoEAAhKEAAIShQACEoYAAhKHAAISiAACEooAAhKMAAISjQACEo4AAhKQAAISkQACEp4AAhKfAAISoAACEqIAAhLhAAIS4wACEuUAAhLnAAIS6gACEusAAhLsAAIS7QACEu4AAhLwAAIS8gACEvMAAhL0AAIS9gACEvcAAhM2AAITOAACEzsAAhM9AAITQAACE0EAAhNCAAITQwACE0QAAhNGAAITSAACE0kAAhNKAAITTAACE00AAhNrAAITeAACE30AAhOAAAITgwACE4gAAhOLAAITjgACE5AAAhOXAAITswACE/4AAhQhAAIUQQACFGEAAhRjAAIUZQACFGcAAhRpAAIUbAACFG0AAhRuAAIUcQACFHIAAhR0AAIUdQACFHcAAhR6AAIUewACFHwAAhR/AAIUgAACFIUAAhSSAAIUlwACFJkAAhSbAAIUoAACFKMAAhSmAAIUqAACFM0AAhTxAAIVGAACFTwAAhU/AAIVQQACFUMAAhVFAAIVRwACFUkAAhVKAAIVTQACFVoAAhVrAAIVbQACFW8AAhVxAAIVcwACFXUAAhV3AAIVeQACFXsAAhWMAAIVjwACFZIAAhWVAAIVmAACFZsAAhWeAAIVoQACFaQAAhWmAAIV5QACFecAAhXpAAIV6wACFe4AAhXvAAIV8AACFfEAAhXyAAIV9AACFfYAAhX3AAIV+AACFfoAAhX7AAIWOgACFjwAAhY+AAIWQAACFkMAAhZEAAIWRQACFkYAAhZHAAIWSQACFksAAhZMAAIWTQACFk8AAhZQAAIWjwACFpEAAhaUAAIWlgACFpkAAhaaAAIWmwACFpwAAhadAAIWnwACFqEAAhaiAAIWowACFqUAAhamAAIWswACFrQAAha1AAIWtwACFvYAAhb4AAIW+gACFvwAAhb/AAIXAAACFwEAAhcCAAIXAwACFwUAAhcHAAIXCAACFwkAAhcLAAIXDAACF0sAAhdNAAIXTwACF1EAAhdUAAIXVQACF1YAAhdXAAIXWAACF1oAAhdcAAIXXQACF14AAhdgAAIXYQACF6AAAheiAAIXpAACF6YAAhepAAIXqgACF6sAAhesAAIXrQACF68AAhexAAIXsgACF7MAAhe1AAIXtgACF/UAAhf3AAIX+QACF/sAAhf+AAIX/wACGAAAAhgBAAIYAgACGAQAAhgGAAIYBwACGAgAAhgKAAIYCwACGEoAAhhMAAIYTgACGFAAAhhTAAIYVAACGFUAAhhWAAIYVwACGFkAAhhbAAIYXAACGF0AAhhfAAIYYAACGIUAAhipAAIY0AACGPQAAhj3AAIY+QACGPsAAhj9AAIY/wACGQEAAhkCAAIZBQACGRIAAhkhAAIZIwACGSUAAhknAAIZKQACGSsAAhktAAIZLwACGT4AAhlBAAIZRAACGUcAAhlKAAIZTQACGVAAAhlTAAIZVQACGZQAAhmWAAIZmAACGZoAAhmdAAIZngACGZ8AAhmgAAIZoQACGaMAAhmlAAIZpgACGacAAhmpAAIZqgACGekAAhnrAAIZ7QACGe8AAhnyAAIZ8wACGfQAAhn1AAIZ9gACGfgAAhn6AAIZ+wACGfwAAhn+AAIZ/wACGj4AAhpAAAIaQgACGkQAAhpHAAI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nPwACJ0IAAidEAAInRgACJ0gAAidKAAInTAACJ00AAidQAAInXQACJ24AAidwAAIncgACJ3QAAid2AAIneAACJ3oAAid8AAInfgACJ48AAieSAAInlQACJ5gAAiebAAInngACJ6EAAiekAAInpwACJ6kAAifoAAIn6gACJ+0AAifvAAIn8gACJ/MAAif0AAIn9QACJ/YAAif4AAIn+gACJ/sAAif8AAIn/gACJ/8AAigIAAIoCQACKAsAAihKAAIoTAACKE4AAihQAAIoUwACKFQAAihVAAIoVgACKFcAAihZAAIoWwACKFwAAihdAAIoXwACKGAAAiifAAIooQACKKMAAiilAAIoqAACKKkAAiiqAAIoqwACKKwAAiiuAAIosAACKLEAAiiyAAIotAACKLUAAij0AAIo9gACKPkAAij7AAIo/gACKP8AAikAAAIpAQACKQIAAikEAAIpBgACKQcAAikIAAIpCgACKQsAAikUAAIpFQACKRcAAilWAAIpWAACKVoAAilcAAIpXwACKWAAAilhAAIpYgACKWMAAillAAIpZwACKWgAAilpAAIpawACKWwAAimrAAIprQACKbAAAimyAAIptQACKbYAAim3AAIpuAACKbkAAim7AAIpvQACKb4AAim/AAIpwQACKcIAAinPAAIp0AACKdEAAinTAAIqEgACKhQAAioWAAIqGAACKhsAAiocAAIqHQACKh4AAiofAAIqIQACKiMAAiokAAIqJQACKicAAiooAAIqZwACKmkAAipsAAIqbgACKnEAAipyAAIqcwACKnQAAip1AAIqdwACKnkAAip6AAIqewACKn0AAip+AAIqnAACKqkAAiqsAAIqrwACKrIAAiq1AAIqtwACKrwAAisHAAIrKgACK0oAAitqAAIrbAACK24AAitwAAIrcgACK3UAAit2AAIrdwACK3oAAit7AAIrfQACK34AAiuAAAIrgwACK4QAAiuFAAIriAACK4kAAiuOAAIrmwACK6AAAiuiAAIrpAACK6kAAiusAAIrrwACK7EAAivWAAIr+gACLCEAAixFAAIsSAACLEoAAixMAAIsTgACLFAAAixSAAIsUwACLFYAAixjAAIsdAACLHYAAix4AAIsegACLHwAAix+AAIsgAACLIIAAiyEAAIslQACLJgAAiybAAIsngACLKEAAiykAAI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EcQACRHIAAkRzAAJEdAACRHYAAkR4AAJEeQACRHoAAkR8AAJEfQACRLwAAkS+AAJEwAACRMIAAkTFAAJExgACRMcAAkTIAAJEyQACRMsAAkTNAAJEzgACRM8AAkTRAAJE0gACRREAAkUTAAJFFgACRRgAAkUbAAJFHAACRR0AAkUeAAJFHwACRSEAAkUjAAJFJAACRSUAAkUnAAJFKAACRTUAAkU2AAJFNwACRTkAAkV4AAJFegACRXwAAkV+AAJFgQACRYIAAkWDAAJFhAACRYUAAkWHAAJFiQACRYoAAkWLAAJFjQACRY4AAkXNAAJFzwACRdEAAkXTAAJF1gACRdcAAkXYAAJF2QACRdoAAkXcAAJF3gACRd8AAkXgAAJF4gACReMAAkYiAAJGJAACRiYAAkYoAAJGKwACRiwAAkYtAAJGLgACRi8AAkYxAAJGMwACRjQAAkY1AAJGNwACRjgAAkZ3AAJGeQACRnsAAkZ9AAJGgAACRoEAAkaCAAJGgwACRoQAAkaGAAJGiAACRokAAkaKAAJGjAACRo0AAkbMAAJGzgACRtAAAkbSAAJG1QACRtYAAkbXAAJG2AACRtkAAkbbAAJG3QACRt4AAkbfAAJG4QACRuIAAkcHAAJHKwACR1IAAkd2AAJHeQACR3sAAkd9AAJHfwACR4EAAkeDAAJHhAACR4cAAkeUAAJHowACR6UAAkenAAJHqQACR6sAAketAAJHrwACR7EAAkfAAAJHwwACR8YAAkfJAAJHzAACR88AAkfSAAJH1QACR9cAAkgWAAJIGAACSBoAAkgcAAJIHwACSCAAAkghAAJIIgACSCMAAkglAAJIJwACSCgAAkgpAAJIKwACSCwAAkhrAAJIbQACSG8AAkhxAAJIdAACSHUAAkh2AAJIdwACSHgAAkh6AAJIfAACSH0AAkh+AAJIgAACSIEAAkjAAAJIwgACSMQAAkjGAAJIyQACSMoAAkjLAAJIzAACSM0AAkjPAAJI0QACSNIAAkjTAAJI1QACSNYAAkkVAAJJFwACSRoAAkkcAAJJHwACSSAAAkkhAAJJIgACSSMAAkklAAJJJwACSSgAAkkpAAJJKwACSSwAAkkuAAJJbQACSW8AAklxAAJJcwACSXYAAkl3AAJJeAACSXkAAkl6AAJJfAACSX4AAkl/AAJJgAACSYIAAkmDAAJJwgACScQAAknGAAJJyAACScsAAknMAAJJzQACSc4AAknPAAJJ0QACSdMAAknUAAJJ1QACSdcAAknYAAJKFwACShkAAkobAAJKHQACSiAAAkohAAJKIgACSiMAAkokAAJKJgACSigAAkopAAJKKgACSiwAAkotAAJKeAACSpsAAkq7AAJK2wACSt0AAkrfAAJK4QACSuMAAkrmAAJK5wACSugAAkrrAAJK7AACSu4AAkrvAAJK8QACSvQAAkr1AAJK9gACSvkAAkr6AAJK/wACSwwAAksRAAJLEwACSxUAAksaAAJLHQACSyAAAksiAAJLRwACS2sAAkuSAAJLtgACS7kAAku7AAJLvQACS78AAkvBAAJLwwACS8QAAkvHAAJL1AACS+UAAkvnAAJL6QACS+sAAkvtAAJL7wACS/EAAkvzAAJL9QACTAYAAkwJAAJMDAACTA8AAkwSAAJMFQACTBgAAkwbAAJMHgACTCAAAkxfAAJMYQACTGMAAkxlAAJMaAACTGkAAkxqAAJMawACTGwAAkxuAAJMcAACTHEAAkxyAAJMdAACTHUAAky0AAJMtgACTLgAAky6AAJMvQACTL4AAky/AAJMwAACTMEAAkzDAAJMxQACTMYAAkzHAAJMyQACTMoAAk0JAAJNCwACTQ4AAk0QAAJNEwACTRQAAk0VAAJNFgACTRcAAk0ZAAJNGwACTRwAAk0dAAJNHwACTSAAAk0tAAJNLgACTS8AAk0xAAJNcAACTXIAAk10AAJNdgACTXkAAk16AAJNewACTXwAAk19AAJNfwACTYEAAk2CAAJNgwACTYUAAk2GAAJNxQACTccAAk3JAAJNywACTc4AAk3PAAJN0AACTdEAAk3SAAJN1AACTdYAAk3XAAJN2AACTdoAAk3bAAJOGgACThwAAk4eAAJOIAACTiMAAk4kAAJOJQACTiYAAk4nAAJOKQACTisAAk4sAAJOLQACTi8AAk4wAAJObwACTnEAAk5zAAJOdQACTngAAk55AAJOegACTnsAAk58AAJOfgACToAAAk6BAAJOggACToQAAk6FAAJOxAACTsYAAk7IAAJOygACTs0AAk7OAAJOzwACTtAAAk7RAAJO0wACTtUAAk7WAAJO1wACTtkAAk7aAAJO/wACTyMAAk9KAAJPbgACT3EAAk9zAAJPdQACT3cAAk95AAJPewACT3wAAk9/AAJPjAACT5sAAk+dAAJPnwACT6EAAk+jAAJPpQACT6cAAk+pAAJPuAACT7sAAk++AAJPwQACT8QAAk/HAAJPygACT80AAk/PAAJQDgACUBAAAlATAAJQFQACUBgAAlAZAAJQGgACUBsAAlAcAAJQHgACUCAAAlAhAAJQIgACUCQAAlAlAAJQKAACUGcAAlBpAAJQawACUG0AAlBwAAJQcQACUHIAAlBzAAJQdAACUHYAAlB4AAJQeQACUHoAAlB8AAJQfQACULwAAlC+AAJQwAACUMIAAlDFAAJQxgACUMcAAlDIAAJQyQACUMsAAlDNAAJQzgACUM8AAlDRAAJQ0gACUREAAlETAAJRFgACURgAAlEbAAJRHAACUR0AAlEeAAJRHwACUSEAAlEjAAJRJAACUSUAAlEnAAJRKAACUWcAAlFpAAJRbAACUW4AAlFxAAJRcgACUXMAAlF0AAJRdQACUXcAAlF5AAJRegACUXsAAlF9AAJRfgACUYIAAlHBAAJRwwACUcUAAlHHAAJRygACUcsAAlHMAAJRzQACUc4AAlHQAAJR0gACUdMAAlHUAAJR1gACUdcAAlIWAAJSGAACUhoAAlIcAAJSHwACUiAAAlIhAAJSIgACUiMAAlIlAAJSJwACUigAAlIpAAJSKwACUiwAAlJ3AAJSmgACUroAAlLaAAJS3AACUt4AAlLgAAJS4gACUuUAAlLmAAJS5wACUuoAAlLrAAJS7QACUu4AAlLwAAJS8wACUvQAAlL1AAJS+AACUvkAAlL+AAJTCwACUxAAAlMSAAJTFAACUxkAAlMcAAJTHwACUyEAAlNGAAJTagACU5EAAlO1AAJTuAACU7oAAlO8AAJTvgACU8AAAlPCAAJTwwACU8YAAlPTAAJT5AACU+YAAlPoAAJT6gACU+wAAlPuAAJT8AACU/IAAlP0AAJUBQACVAgAAlQLAAJUDgACVBEAAlQUAAJUFwACVBoAAlQdAAJUHwACVF4AAlRgAAJUYgACVGQAAlRnAAJUaAACVGkAAlRqAAJUawACVG0AAlRvAAJUcAACVHEAAlRzAAJUdAACVLMAAlS1AAJUtwACVLkAAlS8AAJUvQACVL4AAlS/AAJUwAACVMIAAlTEAAJUxQACVMYAAlTIAAJUyQACVQgAAlUKAAJVDQACVQ8AAlUSAAJVEwACVRQAAlUVAAJVFgACVRgAAlUaAAJVGwACVRwAAlUeAAJVHwACVSwAAlUtAAJVLgACVTAAAlVvAAJVcQACVXMAAlV1AAJVeAACVXkAAlV6AAJVewACVXwAAlV+AAJVgAACVYEAAlWCAAJVhAACVYUAAlXEAAJVxgACVcgAAlXKAAJVzQACVc4AAlXPAAJV0AACVdEAAlXTAAJV1QACVdYAAlXXAAJV2QACVdoAAlYZAAJWGwACVh0AAlYfAAJWIgACViMAAlYkAAJWJQACViYAAlYoAAJWKgACVisAAlYsAAJWLgACVi8AAlZuAAJWcAACVnIAAlZ0AAJWdwACVngAAlZ5AAJWegACVnsAAlZ9AAJWfwACVoAAAlaBAAJWgwACVoQAAlbDAAJWxQACVscAAlbJAAJWzAACVs0AAlbOAAJWzwACVtAAAlbSAAJW1AACVtUAAlbWAAJW2AACVtkAAlb+AAJXIgACV0kAAldtAAJXcAACV3IAAld0AAJXdgACV3gAAld6AAJXewACV34AAleLAAJXmgACV5wAAleeAAJXoAACV6IAAlekAAJXpgACV6gAAle3AAJXugACV70AAlfAAAJXwwACV8YAAlfJAAJXzAACV84AAlgNAAJYDwACWBIAAlgUAAJYFwACWBgAAlgZAAJYGgACWBsAAlgdAAJYHwACWCAAAlghAAJYIwACWCQAAlhjAAJYZQACWGcAAlhpAAJYbAACWG0AAlhuAAJYbwACWHAAAlhyAAJYdAACWHUAAlh2AAJYeAACWHkAAli4AAJYugACWLwAAli+AAJYwQACWMIAAljDAAJYxAACWMUAAljHAAJYyQACWMoAAljLAAJYzQACWM4AAlkNAAJZDwACWRIAAlkUAAJZFwACWRgAAlkZAAJZGgACWRsAAlkdAAJZHwACWSAAAlkhAAJZIwACWSQAAlljAAJZZQACWWgAAllqAAJZbQACWW4AAllvAAJZcAACWXEAAllzAAJZdQACWXYAAll3AAJZeQACWXoAAlm5AAJZuwACWb0AAlm/AAJZwgACWcMAAlnEAAJZxQACWcYAAlnIAAJZygACWcsAAlnMAAJZzgACWc8AAloOAAJaEAACWhIAAloUAAJaFwACWhgAAloZAAJaGgACWhsAAlodAAJaHwACWiAAAlohAAJaIwACWiQAAlpvAAJakgACWrIAAlrSAAJa1AACWtYAAlrYAAJa2gACWt0AAlreAAJa3wACWuIAAlrjAAJa5QACWuYAAlrpAAJa7AACWu0AAlruAAJa8QACWvIAAlr3AAJbBAACWwkAAlsLAAJbDgACWxMAAlsWAAJbGQACWxsAAltAAAJbZAACW4sAAluvAAJbsgACW7QAAlu2AAJbuAACW7oAAlu8AAJbvQACW8AAAlvNAAJb3gACW+AAAlviAAJb5AACW+YAAlvoAAJb6gACW+wAAlvuAAJb/wACXAIAAlwFAAJcCAACXAsAAlwOAAJcEQACXBQAAlwXAAJcGQACXFgAAlxaAAJcXAACXF4AAlxhAAJcYgACXGMAAlxkAAJcZQACXGcAAlxpAAJcagACXGsAAlxtAAJcbgACXK0AAlyvAAJcsQACXLMAAly2AAJctwACXLgAAly5AAJcugACXLwAAly+AAJcvwACXMAAAlzCAAJcwwACXQIAAl0EAAJdBwACXQkAAl0MAAJdDQACXQ4AAl0PAAJdEAACXRIAAl0UAAJdFQACXRYAAl0YAAJdGQACXSYAAl0nAAJdKAACXSoAAl1pAAJdawACXW0AAl1vAAJdcgACXXMAAl10AAJddQACXXYAAl14AAJdegACXXsAAl18AAJdfgACXX8AAl2+AAJdwAACXcIAAl3EAAJdxwACXcgAAl3JAAJdygACXcsAAl3NAAJdzwACXdAAAl3RAAJd0wACXdQAAl4TAAJeFQACXhcAAl4ZAAJeHAACXh0AAl4eAAJeHwACXiAAAl4iAAJeJAACXiUAAl4mAAJeKAACXikAAl5oAAJeagACXmwAAl5uAAJecQACXnIAAl5zAAJedAACXnUAAl53AAJeeQACXnoAAl57AAJefQACXn4AAl69AAJevwACXsEAAl7DAAJexgACXscAAl7IAAJeyQACXsoAAl7MAAJezgACXs8AAl7QAAJe0gACXtMAAl74AAJfHAACX0MAAl9nAAJfagACX20AAl9vAAJfcQACX3MAAl91AAJfdgACX3kAAl+GAAJflQACX5gAAl+bAAJfngACX6EAAl+kAAJfpwACX6oAAl+5AAJfvAACX78AAl/CAAJfxQACX8gAAl/LAAJfzgACX9AAAmAPAAJgEQACYBQAAmAWAAJgGQACYBoAAmAbAAJgHAACYB0AAmAfAAJgIgACYCMAAmAkAAJgJgACYCcAAmBmAAJgaAACYGsAAmBtAAJgcAACYHEAAmByAAJgcwACYHQAAmB2AAJgeQACYHoAAmB7AAJgfQACYH4AAmC9AAJgvwACYMIAAmDEAAJgxwACYMgAAmDJAAJgygACYMsAAmDNAAJg0AACYNEAAmDSAAJg1AACYNUAAmEUAAJhFgACYRkAAmEbAAJhHgACYR8AAmEgAAJhIQACYSIAAmEkAAJhJwACYSgAAmEpAAJhKwACYSwAAmFrAAJhbQACYW8AAmFxAAJhdAACYXUAAmF2AAJhdwACYXgAAmF6AAJhfQACYX4AAmF/AAJhgQACYYIAAmHBAAJhwwACYcUAAmHHAAJhygACYcsAAmHMAAJhzQACYc4AAmHQAAJh0wACYdQAAmHVAAJh1wACYdgAAmIXAAJiGQACYhwAAmIeAAJiIQACYiIAAmIjAAJiJAACYiUAAmInAAJiKgACYisAAmIsAAJiLgACYi8AAmJ6AAJinQACYr0AAmLdAAJi3wACYuEAAmLjAAJi5QACYugAAmLpAAJi6gACYu0AAmLuAAJi8AACYvEAAmL0AAJi9wACYvgAAmL5AAJi/AACYv0AAmMGAAJjEwACYxgAAmMaAAJjHQACYyIAAmMlAAJjKAACYyoAAmNPAAJjcwACY5oAAmO+AAJjwQACY8MAAmPFAAJjxwACY8kAAmPLAAJjzAACY88AAmPcAAJj7QACY+8AAmPxAAJj8wACY/UAAmP3AAJj+QACY/sAAmP9AAJkDgACZBEAAmQUAAJkFwACZBoAAmQdAAJkIAACZCMAAmQmAAJkKAACZGcAAmRpAAJkawACZG0AAmRwAAJkcQACZHIAAmRzAAJkdAACZHYAAmR4AAJkeQACZHoAAmR8AAJkfQACZLwAAmS+AAJkwAACZMIAAmTFAAJkxgACZMcAAmTIAAJkyQACZMsAAmTNAAJkzgACZM8AAmTRAAJk0gACZREAAmUTAAJlFgACZRgAAmUbAAJlHAACZR0AAmUeAAJlHwACZSEAAmUjAAJlJAACZSUAAmUnAAJlKAACZTUAAmU2AAJlNwACZTkAAmV4AAJlegACZXwAAmV+AAJlgQACZYIAAmWDAAJlhAACZYUAAmWHAAJliQACZYoAAmWLAAJljQACZY4AAmXNAAJlzwACZdEAAmXTAAJl1gACZdcAAmXYAAJl2QACZdoAAmXcAAJl3gACZd8AAmXgAAJl4gACZeMAAmYiAAJmJAACZiYAAmYoAAJmKwACZiwAAmYtAAJmLgACZi8AAmYxAAJmMwACZjQAAmY1AAJmNwACZjgAAmZ3AAJmeQACZnsAAmZ9AAJmgAACZoEAAmaCAAJmgwACZoQAAmaGAAJmiAACZokAAmaKAAJmjAACZo0AAmbMAAJmzgACZtAAAmbSAAJm1QACZtYAAmbXAAJm2AACZtkAAmbbAAJm3QACZt4AAmbfAAJm4QACZuIAAmcHAAJnKwACZ1IAAmd2AAJneQACZ3wAAmd+AAJngAACZ4IAAmeEAAJnhQACZ4gAAmeVAAJnpAACZ6cAAmeqAAJnrQACZ7AAAmezAAJntgACZ7kAAmfIAAJnywACZ84AAmfRAAJn1AACZ9cAAmfaAAJn3QACZ98AAmgeAAJoIAACaCMAAmglAAJoKAACaCkAAmgqAAJoKwACaCwAAmguAAJoMQACaDIAAmgzAAJoNQACaDYAAmh1AAJodwACaHoAAmh8AAJofwACaIAAAmiBAAJoggACaIMAAmiFAAJoiAACaIkAAmiKAAJojAACaI0AAmjMAAJozgACaNEAAmjTAAJo1gACaNcAAmjYAAJo2QACaNoAAmjcAAJo3wACaOAAAmjhAAJo4wACaOQAAmkjAAJpJQACaSgAAmkqAAJpLQACaS4AAmkvAAJpMAACaTEAAmkzAAJpNgACaTcAAmk4AAJpOgACaTsAAml6AAJpfAACaX4AAmmAAAJpgwACaYQAAmmFAAJphgACaYcAAmmJAAJpjAACaY0AAmmOAAJpkAACaZEAAmnQAAJp0gACadQAAmnWAAJp2QACadoAAmnbAAJp3AACad0AAmnfAAJp4gACaeMAAmnkAAJp5gACaecAAmomAAJqKAACaisAAmotAAJqMAACajEAAmoyAAJqMwACajQAAmo2AAJqOQACajoAAmo7AAJqPQACaj4AAmqJAAJqrAACaswAAmrsAAJq7gACavAAAmryAAJq9AACavcAAmr4AAJq+QACavwAAmr9AAJq/wACawAAAmsCAAJrBQACawYAAmsHAAJrCgACawsAAmsQAAJrHQACayIAAmskAAJrJgACaysAAmsuAAJrMQACazMAAmtYAAJrfAACa6MAAmvHAAJrygACa8wAAmvOAAJr0AACa9IAAmvUAAJr1QACa9gAAmvlAAJr9gACa/gAAmv6AAJr/AACa/4AAmwAAAJsAgACbAQAAmwGAAJsFwACbBoAAmwdAAJsIAACbCMAAmwmAAJsKQACbCwAAmwvAAJsMQACbHAAAmxyAAJsdAACbHYAAmx5AAJsegACbHsAAmx8AAJsfQACbH8AAmyBAAJsggACbIMAAmyFAAJshgACbMUAAmzHAAJsyQACbMsAAmzOAAJszwACbNAAAmzRAAJs0gACbNQAAmzWAAJs1wACbNgAAmzaAAJs2wACbRoAAm0cAAJtHwACbSEAAm0kAAJtJQACbSYAAm0nAAJtKAACbSoAAm0sAAJtLQACbS4AAm0wAAJtMQACbT4AAm0/AAJtQAACbUIAAm2BAAJtgwACbYUAAm2HAAJtigACbYsAAm2MAAJtjQACbY4AAm2QAAJtkgACbZMAAm2UAAJtlgACbZcAAm3WAAJt2AACbdoAAm3cAAJt3wACbeAAAm3hAAJt4gACbeMAAm3lAAJt5wACbegAAm3pAAJt6wACbewAAm4rAAJuLQACbi8AAm4xAAJuNAACbjUAAm42AAJuNwACbjgAAm46AAJuPAACbj0AAm4+AAJuQAACbkEAAm6AAAJuggACboQAAm6GAAJuiQACbooAAm6LAAJujAACbo0AAm6PAAJukQACbpIAAm6TAAJulQACbpYAAm7VAAJu1wACbtkAAm7bAAJu3gACbt8AAm7gAAJu4QACbuIAAm7kAAJu5gACbucAAm7oAAJu6gACbusAAm8QAAJvNAACb1sAAm9/AAJvggACb4QAAm+GAAJviAACb4oAAm+MAAJvjQACb5AAAm+dAAJvrAACb64AAm+wAAJvsgACb7QAAm+2AAJvuAACb7oAAm/JAAJvzAACb88AAm/SAAJv1QACb9gAAm/bAAJv3gACb+AAAnAfAAJwIQACcCQAAnAmAAJwKQACcCoAAnArAAJwLAACcC0AAnAvAAJwMQACcDIAAnAzAAJwNQACcDYAAnB1AAJwdwACcHkAAnB7AAJwfgACcH8AAnCAAAJwgQACcIIAAnCEAAJwhgACcIcAAnCIAAJwigACcIsAAnDKAAJwzAACcM4AAnDQAAJw0wACcNQAAnDVAAJw1gACcNcAAnDZAAJw2wACcNwAAnDdAAJw3wACcOAAAnEfAAJxIQACcSQAAnEmAAJxKQACcSoAAnErAAJxLAACcS0AAnEvAAJxMQACcTIAAnEzAAJxNQACcTYAAnF1AAJxdwACcXoAAnF8AAJxfwACcYAAAnGBAAJxggACcYMAAnGFAAJxhwACcYgAAnGJAAJxiwACcYwAAnHLAAJxzQACcc8AAnHRAAJx1AACcdUAAnHWAAJx1wACcdgAAnHaAAJx3AACcd0AAnHeAAJx4AACceEAAnIgAAJyIgACciQAAnImAAJyKQACcioAAnIrAAJyLAACci0AAnIvAAJyMQACcjIAAnIzAAJyNQACcjYAAnI/AAJyQgACckUAAnJHAAJyTAACcosAAnKNAAJyjwACcpEAAnKUAAJylQACcpYAAnKXAAJymAACcpoAAnKdAAJyngACcp8AAnKhAAJyogACcuEAAnLjAAJy5QACcucAAnLqAAJy6wACcuwAAnLtAAJy7gACcvAAAnLzAAJy9AACcvUAAnL3AAJy+AACczcAAnM5AAJzPAACcz4AAnNBAAJzQgACc0MAAnNEAAJzRQACc0cAAnNKAAJzSwACc0wAAnNOAAJzTwACc5oAAnO9AAJz3QACc/0AAnP/AAJ0AQACdAMAAnQFAAJ0CAACdAkAAnQKAAJ0DQACdA4AAnQQAAJ0EQACdBMAAnQWAAJ0FwACdBgAAnQbAAJ0HAACdCEAAnQuAAJ0MwACdDUAAnQ3AAJ0PAACdD8AAnRCAAJ0RAACdGkAAnSNAAJ0tAACdNgAAnTbAAJ03QACdN8AAnThAAJ04wACdOUAAnTmAAJ06QACdPYAAnUHAAJ1CQACdQsAAnUNAAJ1DwACdREAAnUTAAJ1FQACdRcAAnUoAAJ1KwACdS4AAnUxAAJ1NAACdTcAAnU6AAJ1PQACdUAAAnVCAAJ1gQACdYMAAnWFAAJ1hwACdYoAAnWLAAJ1jAACdY0AAnWOAAJ1kAACdZIAAnWTAAJ1lAACdZYAAnWXAAJ11gACddgAAnXaAAJ13AACdd8AAnXgAAJ14QACdeIAAnXjAAJ15QACdecAAnXoAAJ16QACdesAAnXsAAJ2KwACdi0AAnYwAAJ2MgACdjUAAnY2AAJ2NwACdjgAAnY5AAJ2OwACdj0AAnY+AAJ2PwACdkEAAnZCAAJ2TwACdlAAAnZRAAJ2UwACdpIAAnaUAAJ2lgACdpgAAnabAAJ2nAACdp0AAnaeAAJ2nwACdqEAAnajAAJ2pAACdqUAAnanAAJ2qAACducAAnbpAAJ26wACdu0AAnbwAAJ28QACdvIAAnbzAAJ29AACdvYAAnb4AAJ2+QACdvoAAnb8AAJ2/QACdzwAAnc+AAJ3QAACd0IAAndFAAJ3RgACd0cAAndIAAJ3SQACd0sAAndNAAJ3TgACd08AAndRAAJ3UgACd5EAAneTAAJ3lQACd5cAAneaAAJ3mwACd5wAAnedAAJ3ngACd6AAAneiAAJ3owACd6QAAnemAAJ3pwACd+YAAnfoAAJ36gACd+wAAnfvAAJ38AACd/EAAnfyAAJ38wACd/UAAnf3AAJ3+AACd/kAAnf7AAJ3/AACeCEAAnhFAAJ4bAACeJAAAniTAAJ4lQACeJcAAniZAAJ4mwACeJ0AAnieAAJ4oQACeK4AAni9AAJ4vwACeMEAAnjDAAJ4xQACeMcAAnjJAAJ4ywACeNoAAnjdAAJ44AACeOMAAnjmAAJ46QACeOwAAnjvAAJ48QACeTAAAnkyAAJ5NAACeTYAAnk5AAJ5OgACeTsAAnk8AAJ5PQACeT8AAnlBAAJ5QgACeUMAAnlFAAJ5RgACeYUAAnmHAAJ5iQACeYsAAnmOAAJ5jwACeZAAAnmRAAJ5kgACeZQAAnmWAAJ5lwACeZgAAnmaAAJ5mwACedoAAnncAAJ53gACeeAAAnnjAAJ55AACeeUAAnnmAAJ55wACeekAAnnrAAJ57AACee0AAnnvAAJ58AACei8AAnoxAAJ6MwACejUAAno4AAJ6OQACejoAAno7AAJ6PAACej4AAnpAAAJ6QQACekIAAnpEAAJ6RQACeoQAAnqGAAJ6iAACeooAAnqNAAJ6jgACeo8AAnqQAAJ6kQACepMAAnqVAAJ6lgACepcAAnqZAAJ6mgACetkAAnrbAAJ63QACet8AAnriAAJ64wACeuQAAnrlAAJ65gACeugAAnrqAAJ66wACeuwAAnruAAJ67wACey4AAnswAAJ7MgACezQAAns3AAJ7OAACezkAAns6AAJ7OwACez0AAns/AAJ7QAACe0EAAntDAAJ7RAACe48AAnuyAAJ70gACe/IAAnv0AAJ79gACe/gAAnv6AAJ7/QACe/4AAnv/AAJ8AgACfAMAAnwFAAJ8BgACfAgAAnwLAAJ8DAACfA0AAnwQAAJ8EQACfBYAAnwjAAJ8KAACfCoAAnwsAAJ8MQACfDQAAnw3AAJ8OQACfF4AAnyCAAJ8qQACfM0AAnzQAAJ80gACfNQAAnzWAAJ82AACfNoAAnzbAAJ83gACfOsAAnz8AAJ8/gACfQAAAn0CAAJ9BAACfQYAAn0IAAJ9CgACfQwAAn0dAAJ9IAACfSMAAn0mAAJ9KQACfSwAAn0vAAJ9MgACfTUAAn03AAJ9dgACfXgAAn16AAJ9fAACfX8AAn2AAAJ9gQACfYIAAn2DAAJ9hQACfYcAAn2IAAJ9iQACfYsAAn2MAAJ9ywACfc0AAn3PAAJ90QACfdQAAn3VAAJ91gACfdcAAn3YAAJ92gACfdwAAn3dAAJ93gACfeAAAn3hAAJ+IAACfiIAAn4lAAJ+JwACfioAAn4rAAJ+LAACfi0AAn4uAAJ+MAACfjIAAn4zAAJ+NAACfjYAAn43AAJ+RAACfkUAAn5GAAJ+SAACfocAAn6JAAJ+iwACfo0AAn6QAAJ+kQACfpIAAn6TAAJ+lAACfpYAAn6YAAJ+mQACfpoAAn6cAAJ+nQACftwAAn7eAAJ+4AACfuIAAn7lAAJ+5gACfucAAn7oAAJ+6QACfusAAn7tAAJ+7gACfu8AAn7xAAJ+8gACfzEAAn8zAAJ/NQACfzcAAn86AAJ/OwACfzwAAn89AAJ/PgACf0AAAn9CAAJ/QwACf0QAAn9GAAJ/RwACf4YAAn+IAAJ/igACf4wAAn+PAAJ/kAACf5EAAn+SAAJ/kwACf5UAAn+XAAJ/mAACf5kAAn+bAAJ/nAACf9sAAn/dAAJ/3wACf+EAAn/kAAJ/5QACf+YAAn/nAAJ/6AACf+oAAn/sAAJ/7QACf+4AAn/wAAJ/8QACgBYAAoA6AAKAYQACgIUAAoCIAAKAigACgIwAAoCOAAKAkAACgJIAAoCTAAKAlgACgKMAAoCyAAKAtAACgLYAAoC4AAKAugACgLwAAoC+AAKAwAACgM8AAoDSAAKA1QACgNgAAoDbAAKA3gACgOEAAoDkAAKA5gACgSUAAoEnAAKBKQACgSsAAoEuAAKBLwACgTAAAoExAAKBMgACgTQAAoE2AAKBNwACgTgAAoE6AAKBOwACgXoAAoF8AAKBfgACgYAAAoGDAAKBhAACgYUAAoGGAAKBhwACgYkAAoGLAAKBjAACgY0AAoGPAAKBkAACgc8AAoHRAAKB0wACgdUAAoHYAAKB2QACgdoAAoHbAAKB3AACgd4AAoHgAAKB4QACgeIAAoHkAAKB5QACgiQAAoImAAKCKAACgioAAoItAAKCLgACgi8AAoIwAAKCMQACgjMAAoI1AAKCNgACgjcAAoI5AAKCOgACgnkAAoJ7AAKCfQACgn8AAoKCAAKCgwACgoQAAoKFAAKChgACgogAAoKKAAKCiwACgowAAoKOAAKCjwACgs4AAoLQAAKC0gACgtQAAoLXAAKC2AACgtkAAoLaAAKC2wACgt0AAoLfAAKC4AACguEAAoLjAAKC5AACgyMAAoMlAAKDJwACgykAAoMsAAKDLQACgy4AAoMvAAKDMAACgzIAAoM0AAKDNQACgzYAAoM4AAKDOQACg4QAAoOnAAKDxwACg+cAAoPpAAKD6wACg+0AAoPvAAKD8gACg/MAAoP0AAKD9wACg/gAAoP6AAKD+wACg/4AAoQBAAKEAgAChAMAAoQGAAKEBwAChAwAAoQZAAKEHgAChCAAAoQjAAKEKAAChCsAAoQuAAKEMAAChFUAAoR5AAKEoAAChMQAAoTHAAKEyQAChMsAAoTNAAKEzwAChNEAAoTSAAKE1QAChOIAAoTzAAKE9QAChPcAAoT5AAKE+wAChP0AAoT/AAKFAQAChQMAAoUUAAKFFwAChRoAAoUdAAKFIAAChSMAAoUmAAKFKQAChSwAAoUuAAKFbQAChW8AAoVxAAKFcwAChXYAAoV3AAKFeAAChXkAAoV6AAKFfAAChX4AAoV/AAKFgAAChYIAAoWDAAKFwgAChcQAAoXGAAKFyAAChcsAAoXMAAKFzQAChc4AAoXPAAKF0QAChdMAAoXUAAKF1QAChdcAAoXYAAKGFwAChhkAAoYcAAKGHgAChiEAAoYiAAKGIwAChiQAAoYlAAKGJwAChikAAoYqAAKGKwAChi0AAoYuAAKGOwAChjwAAoY9AAKGPwAChn4AAoaAAAKGggAChoQAAoaHAAKGiAAChokAAoaKAAKGiwACho0AAoaPAAKGkAAChpEAAoaTAAKGlAAChtMAAobVAAKG1wAChtkAAobcAAKG3QACht4AAobfAAKG4AAChuIAAobkAAKG5QAChuYAAoboAAKG6QAChygAAocqAAKHLAAChy4AAocxAAKHMgAChzMAAoc0AAKHNQAChzcAAoc5AAKHOgAChzsAAoc9AAKHPgACh30AAod/AAKHgQACh4MAAoeGAAKHhwACh4gAAoeJAAKHigACh4wAAoeOAAKHjwACh5AAAoeSAAKHkwACh9IAAofUAAKH1gACh9gAAofbAAKH3AACh90AAofeAAKH3wACh+EAAofjAAKH5AACh+UAAofnAAKH6AACiA0AAogxAAKIWAACiHwAAoh/AAKIggACiIQAAoiGAAKIiAACiIoAAoiLAAKIjgACiJsAAoiqAAKIrQACiLAAAoizAAKItgACiLkAAoi8AAKIvwACiM4AAojRAAKI1AACiNcAAojaAAKI3QACiOAAAojjAAKI5QACiSQAAokmAAKJKQACiSsAAokuAAKJLwACiTAAAokxAAKJMgACiTQAAok3AAKJOAACiTkAAok7AAKJPAACiXsAAol9AAKJgAACiYIAAomFAAKJhgACiYcAAomIAAKJiQACiYsAAomOAAKJjwACiZAAAomSAAKJkwACidIAAonUAAKJ1wACidkAAoncAAKJ3QACid4AAonfAAKJ4AACieIAAonlAAKJ5gACiecAAonpAAKJ6gACiikAAoorAAKKLgACijAAAoozAAKKNAACijUAAoo2AAKKNwACijkAAoo8AAKKPQACij4AAopAAAKKQQACioQAAoqoAAKKzAACiu8AAosWAAKLNgACi10AAouEAAKLpAACi8gAAovsAAKL7gACi/EAAovzAAKL9QACi/cAAov6AAKL/QACi/8AAowBAAKMBAACjAYAAowIAAKMCwACjA4AAowPAAKMFAACjCEAAowkAAKMJgACjCkAAowsAAKMLgACjFMAAox3AAKMngACjMIAAozFAAKMxwACjMkAAozLAAKMzQACjM8AAozQAAKM0wACjOAAAozxAAKM8wACjPUAAoz3AAKM+QACjPsAAoz9AAKM/wACjQEAAo0SAAKNFQACjRgAAo0bAAKNHgACjSEAAo0kAAKNJwACjSoAAo0sAAKNawACjW0AAo1wAAKNcgACjXUAAo12AAKNdwACjXgAAo15AAKNewACjX0AAo1+AAKNfwACjYEAAo2CAAKNiwACjYwAAo2OAAKNzQACjc8AAo3RAAKN0wACjdYAAo3XAAKN2AACjdkAAo3aAAKN3AACjd4AAo3fAAKN4AACjeIAAo3jAAKOIgACjiQAAo4mAAKOKAACjisAAo4sAAKOLQACji4AAo4vAAKOMQACjjMAAo40AAKONQACjjcAAo44AAKOdwACjnkAAo58AAKOfgACjoEAAo6CAAKOgwACjoQAAo6FAAKOhwACjokAAo6KAAKOiwACjo0AAo6OAAKOlwACjpgAAo6aAAKO2QACjtsAAo7dAAKO3wACjuIAAo7jAAKO5AACjuUAAo7mAAKO6AACjuoAAo7rAAKO7AACju4AAo7vAAKPLgACjzAAAo8zAAKPNQACjzgAAo85AAKPOgACjzsAAo88AAKPPgACj0AAAo9BAAKPQgACj0QAAo9FAAKPUgACj1MAAo9UAAKPVgACj5UAAo+XAAKPmQACj5sAAo+eAAKPnwACj6AAAo+hAAKPogACj6QAAo+mAAKPpwACj6gAAo+qAAKPqwACj+oAAo/sAAKP7wACj/EAAo/0AAKP9QACj/YAAo/3AAKP+AACj/oAAo/8AAKP/QACj/4AApAAAAKQAQACkCIAApAvAAKQNgACkDkAApA8AAKQPwACkEYAApBJAAKQTAACkE8AApBRAAKQcQACkIoAApClAAKQ8AACkRMAApEzAAKRUwACkVUAApFXAAKRWQACkVsAApFeAAKRXwACkWAAApFjAAKRZAACkWYAApFnAAKRaQACkWwAApFtAAKRbgACkXEAApFyAAKRdwACkYQAApGJAAKRiwACkY0AApGSAAKRlQACkZgAApGaAAKRvwACkeMAApIKAAKSLgACkjEAApIzAAKSNQACkjcAApI5AAKSOwACkjwAApI/AAKSTAACkl0AApJfAAKSYQACkmMAApJlAAKSZwACkmkAApJrAAKSbQACkn4AApKBAAKShAACkocAApKKAAKSjQACkpAAApKTAAKSlgACkpgAApLXAAKS2QACktsAApLdAAKS4AACkuEAApLiAAKS4wACkuQAApLmAAKS6AACkukAApLqAAKS7AACku0AApMsAAKTLgACkzAAApMyAAKTNQACkzYAApM3AAKTOAACkzkAApM7AAKTPQACkz4AApM/AAKTQQACk0IAApOBAAKTgwACk4YAApOIAAKTiwACk4wAApONAAKTjgACk48AApORAAKTkwACk5QAApOVAAKTlwACk5gAApOlAAKTpgACk6cAApOpAAKT6AACk+oAApPsAAKT7gACk/EAApPyAAKT8wACk/QAApP1AAKT9wACk/kAApP6AAKT+wACk/0AApP+AAKUPQAClD8AApRBAAKUQwAClEYAApRHAAKUSAAClEkAApRKAAKUTAAClE4AApRPAAKUUAAClFIAApRTAAKUkgAClJQAApSWAAKUmAAClJsAApScAAKUnQAClJ4AApSfAAKUoQAClKMAApSkAAKUpQAClKcAApSoAAKU5wAClOkAApTrAAKU7QAClPAAApTxAAKU8gAClPMAApT0AAKU9gAClPgAApT5AAKU+gAClPwAApT9AAKVPAAClT4AApVAAAKVQgAClUUAApVGAAKVRwAClUgAApVJAAKVSwAClU0AApVOAAKVTwAClVEAApVSAAKVdwAClZsAApXCAAKV5gAClekAApXrAAKV7QACle8AApXxAAKV8wAClfQAApX3AAKWBAAClhMAApYVAAKWFwAClhkAApYbAAKWHQAClh8AApYhAAKWMAACljMAApY2AAKWOQACljwAApY/AAKWQgAClkUAApZHAAKWhgAClogAApaKAAKWjAAClo8AApaQAAKWkQAClpIAApaTAAKWlQAClpcAApaYAAKWmQAClpsAApacAAKW2wAClt0AApbfAAKW4QACluQAApblAAKW5gAClucAApboAAKW6gACluwAApbtAAKW7gAClvAAApbxAAKXMAAClzIAApc0AAKXNgAClzkAApc6AAKXOwAClzwAApc9AAKXPwACl0EAApdCAAKXQwACl0UAApdGAAKXhQACl4cAApeKAAKXjAACl48AApeQAAKXkQACl5IAApeTAAKXlQACl5cAApeYAAKXmQACl5sAApecAAKX2wACl90AApffAAKX4QACl+QAApflAAKX5gACl+cAApfoAAKX6gACl+wAApftAAKX7gACl/AAApfxAAKYMAACmDIAApg0AAKYNgACmDkAApg6AAKYOwACmDwAApg9AAKYPwACmEEAAphCAAKYQwACmEUAAphGAAKYhQACmIcAApiJAAKYiwACmI4AApiPAAKYkAACmJEAApiSAAKYlAACmJYAApiXAAKYmAACmJoAApibAAKY5gACmQkAApkpAAKZSQACmUsAAplNAAKZTwACmVEAAplUAAKZVQACmVYAAplZAAKZWgACmVwAApldAAKZYAACmWMAAplkAAKZZQACmWgAAplpAAKZbgACmXsAApmAAAKZggACmYUAApmKAAKZjQACmZAAApmSAAKZtwACmdsAApoCAAKaJgACmikAAporAAKaLQACmi8AApoxAAKaMwACmjQAApo3AAKaRAACmlUAAppXAAKaWQACmlsAAppdAAKaXwACmmEAAppjAAKaZQACmnYAApp5AAKafAACmn8AApqCAAKahQACmogAApqLAAKajgACmpAAAprPAAKa0QACmtMAAprVAAKa2AACmtkAApraAAKa2wACmtwAApreAAKa4AACmuEAApriAAKa5AACmuUAApskAAKbJgACmygAApsqAAKbLQACmy4AApsvAAKbMAACmzEAApszAAKbNQACmzYAAps3AAKbOQACmzoAApt5AAKbewACm34AApuAAAKbgwACm4QAApuFAAKbhgACm4cAApuJAAKbiwACm4wAApuNAAKbjwACm5AAApudAAKbngACm58AApuhAAKb4AACm+IAApvkAAKb5gACm+kAApvqAAKb6wACm+wAApvtAAKb7wACm/EAApvyAAKb8wACm/UAApv2AAKcNQACnDcAApw5AAKcOwACnD4AApw/AAKcQAACnEEAApxCAAKcRAACnEYAApxHAAKcSAACnEoAApxLAAKcigACnIwAApyOAAKckAACnJMAApyUAAKclQACnJYAApyXAAKcmQACnJsAApycAAKcnQACnJ8AApygAAKc3wACnOEAApzjAAKc5QACnOgAApzpAAKc6gACnOsAApzsAAKc7gACnPAAApzxAAKc8gACnPQAApz1AAKdNAACnTYAAp04AAKdOgACnT0AAp0+AAKdPwACnUAAAp1BAAKdQwACnUUAAp1GAAKdRwACnUkAAp1KAAKdbwACnZMAAp26AAKd3gACneEAAp3kAAKd5gACnegAAp3qAAKd7AACne0AAp3wAAKd/QACngwAAp4PAAKeEgACnhUAAp4YAAKeGwACnh4AAp4hAAKeMAACnjMAAp42AAKeOQACnjwAAp4/AAKeQgACnkUAAp5HAAKehgACnogAAp6LAAKejQACnpAAAp6RAAKekgACnpMAAp6UAAKelgACnpkAAp6aAAKemwACnp0AAp6eAAKe3QACnt8AAp7iAAKe5AACnucAAp7oAAKe6QACnuoAAp7rAAKe7QACnvAAAp7xAAKe8gACnvQAAp71AAKfNAACnzYAAp85AAKfOwACnz4AAp8/AAKfQAACn0EAAp9CAAKfRAACn0cAAp9IAAKfSQACn0sAAp9MAAKfiwACn40AAp+QAAKfkgACn5UAAp+WAAKflwACn5gAAp+ZAAKfmwACn54AAp+fAAKfoAACn6IAAp+jAAKf4gACn+QAAp/mAAKf6AACn+sAAp/sAAKf7QACn+4AAp/vAAKf8QACn/QAAp/1AAKf9gACn/gAAp/5AAKgOAACoDoAAqA8AAKgPgACoEEAAqBCAAKgQwACoEQAAqBFAAKgRwACoEoAAqBLAAKgTAACoE4AAqBPAAKgjgACoJAAAqCTAAKglQACoJgAAqCZAAKgmgACoJsAAqCcAAKgngACoKEAAqCiAAKgowACoKUAAqCmAAKg8QACoRQAAqE0AAKhVAACoVYAAqFYAAKhWgACoVwAAqFfAAKhYAACoWEAAqFkAAKhZQACoWcAAqFoAAKhagACoW0AAqFuAAKhbwACoXIAAqFzAAKheAACoYUAAqGKAAKhjAACoY4AAqGTAAKhlgACoZkAAqGbAAKhwAACoeQAAqILAAKiLwACojIAAqI0AAKiNgACojgAAqI6AAKiPAACoj0AAqJAAAKiTQACol4AAqJgAAKiYgAComQAAqJmAAKiaAAComoAAqJsAAKibgACon8AAqKCAAKihQACoogAAqKLAAKijgACopEAAqKUAAKilwACopkAAqLYAAKi2gACotwAAqLeAAKi4QACouIAAqLjAAKi5AACouUAAqLnAAKi6QACouoAAqLrAAKi7QACou4AAqMtAAKjLwACozEAAqMzAAKjNgACozcAAqM4AAKjOQACozoAAqM8AAKjPgACoz8AAqNAAAKjQgACo0MAAqOCAAKjhAACo4cAAqOJAAKjjAACo40AAqOOAAKjjwACo5AAAqOSAAKjlAACo5UAAqOWAAKjmAACo5kAAqOmAAKjpwACo6gAAqOqAAKj6QACo+sAAqPtAAKj7wACo/IAAqPzAAKj9AACo/UAAqP2AAKj+AACo/oAAqP7AAKj/AACo/4AAqP/AAKkPgACpEAAAqRCAAKkRAACpEcAAqRIAAKkSQACpEoAAqRLAAKkTQACpE8AAqRQAAKkUQACpFMAAqRUAAKkkwACpJUAAqSXAAKkmQACpJwAAqSdAAKkngACpJ8AAqSgAAKkogACpKQAAqSlAAKkpgACpKgAAqSpAAKk6AACpOoAAqTsAAKk7gACpPEAAqTyAAKk8wACpPQAAqT1AAKk9wACpPkAAqT6AAKk+wACpP0AAqT+AAKlPQACpT8AAqVBAAKlQwACpUYAAqVHAAKlSAACpUkAAqVKAAKlTAACpU4AAqVPAAKlUAACpVIAAqVTAAKleAACpZwAAqXDAAKl5wACpeoAAqXsAAKl7gACpfAAAqXyAAKl9AACpfUAAqX4AAKmBQACphQAAqYWAAKmGAACphoAAqYcAAKmHgACpiAAAqYiAAKmMQACpjQAAqY3AAKmOgACpj0AAqZAAAKmQwACpkYAAqZIAAKmhwACpokAAqaLAAKmjQACppAAAqaRAAKmkgACppMAAqaUAAKmlgACppgAAqaZAAKmmgACppwAAqadAAKm3AACpt4AAqbgAAKm4gACpuUAAqbmAAKm5wACpugAAqbpAAKm6wACpu0AAqbuAAKm7wACpvEAAqbyAAKnMQACpzMAAqc1AAKnNwACpzoAAqc7AAKnPAACpz0AAqc+AAKnQAACp0IAAqdDAAKnRAACp0YAAqdHAAKnhgACp4gAAqeKAAKnjAACp48AAqeQAAKnkQACp5IAAqeTAAKnlQACp5cAAqeYAAKnmQACp5sAAqecAAKn2wACp90AAqffAAKn4QACp+QAAqflAAKn5gACp+cAAqfoAAKn6gACp+wAAqftAAKn7gACp/AAAqfxAAKoMAACqDIAAqg0AAKoNgACqDkAAqg6AAKoOwACqDwAAqg9AAKoPwACqEEAAqhCAAKoQwACqEUAAqhGAAKohQACqIcAAqiJAAKoiwACqI4AAqiPAAKokAACqJEAAqiSAAKolAACqJYAAqiXAAKomAACqJoAAqibAAKopAACqKUAAqinAAKo5gACqOgAAqjqAAKo7AACqO8AAqjwAAKo8QACqPIAAqjzAAKo9QACqPgAAqj5AAKo+gACqPwAAqj9AAKpPAACqT4AAqlAAAKpQgACqUUAAqlGAAKpRwACqUgAAqlJAAKpSwACqU4AAqlPAAKpUAACqVIAAqlTAAKpkgACqZQAAqmXAAKpmQACqZwAAqmdAAKpngACqZ8AAqmgAAKpogACqaUAAqmmAAKppwACqakAAqmqAAKp9QACqhgAAqo4AAKqWAACqloAAqpcAAKqXgACqmAAAqpjAAKqZAACqmUAAqpoAAKqaQACqmsAAqpsAAKqbgACqnEAAqpyAAKqcwACqnYAAqp3AAKqfAACqokAAqqOAAKqkAACqpIAAqqXAAKqmgACqp0AAqqfAAKqxAACqugAAqsPAAKrMwACqzYAAqs4AAKrOgACqzwAAqs+AAKrQAACq0EAAqtEAAKrUQACq2IAAqtkAAKrZgACq2gAAqtqAAKrbAACq24AAqtwAAKrcgACq4MAAquGAAKriQACq4wAAquPAAKrkgACq5UAAquYAAKrmwACq50AAqvcAAKr3gACq+AAAqviAAKr5QACq+YAAqvnAAKr6AACq+kAAqvrAAKr7QACq+4AAqvvAAKr8QACq/IAAqwxAAKsMwACrDUAAqw3AAKsOgACrDsAAqw8AAKsPQACrD4AAqxAAAKsQgACrEMAAqxEAAKsRgACrEcAAqyGAAKsiAACrIsAAqyNAAKskAACrJEAAqySAAKskwACrJQAAqyWAAKsmAACrJkAAqyaAAKsnAACrJ0AAqyqAAKsqwACrKwAAqyuAAKs7QACrO8AAqzxAAKs8wACrPYAAqz3AAKs+AACrPkAAqz6AAKs/AACrP4AAqz/AAKtAAACrQIAAq0DAAKtQgACrUQAAq1GAAKtSAACrUsAAq1MAAKtTQACrU4AAq1PAAKtUQACrVMAAq1UAAKtVQACrVcAAq1YAAKtlwACrZkAAq2bAAKtnQACraAAAq2hAAKtogACraMAAq2kAAKtpgACragAAq2pAAKtqgACrawAAq2tAAKt7AACre4AAq3wAAKt8gACrfUAAq32AAKt9wACrfgAAq35AAKt+wACrf0AAq3+AAKt/wACrgEAAq4CAAKuQQACrkMAAq5FAAKuRwACrkoAAq5LAAKuTAACrk0AAq5OAAKuUAACrlIAAq5TAAKuVAACrlYAAq5XAAKufAACrqAAAq7HAAKu6wACru4AAq7wAAKu8gACrvQAAq72AAKu+AACrvkAAq78AAKvCQACrxgAAq8aAAKvHAACrx4AAq8gAAKvIgACryQAAq8mAAKvNQACrzgAAq87AAKvPgACr0EAAq9EAAKvRwACr0oAAq9MAAKviwACr40AAq+PAAKvkQACr5QAAq+VAAKvlgACr5cAAq+YAAKvmgACr5wAAq+dAAKvngACr6AAAq+hAAKv4AACr+IAAq/kAAKv5gACr+kAAq/qAAKv6wACr+wAAq/tAAKv7wACr/EAAq/yAAKv8wACr/UAAq/2AAKwNQACsDcAArA5AAKwOwACsD4AArA/AAKwQAACsEEAArBCAAKwRAACsEYAArBHAAKwSAACsEoAArBLAAKwigACsIwAArCOAAKwkAACsJMAArCUAAKwlQACsJYAArCXAAKwmQACsJsAArCcAAKwnQACsJ8AArCgAAKw3wACsOEAArDjAAKw5QACsOgAArDpAAKw6gACsOsAArDsAAKw7gACsPAAArDxAAKw8gACsPQAArD1AAKxNAACsTYAArE4AAKxOgACsT0AArE+AAKxPwACsUAAArFBAAKxQwACsUUAArFGAAKxRwACsUkAArFKAAKxiQACsYsAArGNAAKxjwACsZIAArGTAAKxlAACsZUAArGWAAKxmAACsZoAArGbAAKxnAACsZ4AArGfAAKx6gACsg0AArItAAKyTQACsk8AArJRAAKyUwACslUAArJYAAKyWQACsloAArJdAAKyXgACsmAAArJhAAKyYwACsmYAArJnAAKyaAACsmsAArJsAAKycQACsn4AArKDAAKyhQACsocAArKMAAKyjwACspIAArKUAAKyuQACst0AArMEAAKzKAACsysAArMtAAKzLwACszEAArMzAAKzNQACszYAArM5AAKzRgACs1cAArNZAAKzWwACs10AArNfAAKzYQACs2MAArNlAAKzZwACs3gAArN7AAKzfgACs4EAArOEAAKzhwACs4oAArONAAKzkAACs5IAArPRAAKz0wACs9UAArPXAAKz2gACs9sAArPcAAKz3QACs94AArPgAAKz4gACs+MAArPkAAKz5gACs+cAArQmAAK0KAACtCoAArQsAAK0LwACtDAAArQxAAK0MgACtDMAArQ1AAK0NwACtDgAArQ5AAK0OwACtDwAArR7AAK0fQACtIAAArSCAAK0hQACtIYAArSHAAK0iAACtIkAArSLAAK0jQACtI4AArSPAAK0kQACtJIAArSfAAK0oAACtKEAArSjAAK04gACtOQAArTmAAK06AACtOsAArTsAAK07QACtO4AArTvAAK08QACtPMAArT0AAK09QACtPcAArT4AAK1NwACtTkAArU7AAK1PQACtUAAArVBAAK1QgACtUMAArVEAAK1RgACtUgAArVJAAK1SgACtUwAArVNAAK1jAACtY4AArWQAAK1kgACtZUAArWWAAK1lwACtZgAArWZAAK1mwACtZ0AArWeAAK1nwACtaEAArWiAAK14QACteMAArXlAAK15wACteoAArXrAAK17AACte0AArXuAAK18AACtfIAArXzAAK19AACtfYAArX3AAK2NgACtjgAArY6AAK2PAACtj8AArZAAAK2QQACtkIAArZDAAK2RQACtkcAArZIAAK2SQACtksAArZMAAK2cQACtpUAAra8AAK24AACtuMAArblAAK25wACtukAArbrAAK27QACtu4AArbxAAK2/gACtw0AArcPAAK3EQACtxMAArcVAAK3FwACtxkAArcbAAK3KgACty0AArcwAAK3MwACtzYAArc5AAK3PAACtz8AArdBAAK3gAACt4IAAreEAAK3hgACt4kAAreKAAK3iwACt4wAAreNAAK3jwACt5EAAreSAAK3kwACt5UAAreWAAK31QACt9cAArfZAAK32wACt94AArffAAK34AACt+EAArfiAAK35AACt+YAArfnAAK36AACt+oAArfrAAK4KgACuCwAArguAAK4MAACuDMAArg0AAK4NQACuDYAArg3AAK4OQACuDsAArg8AAK4PQACuD8AArhAAAK4fwACuIEAAriEAAK4hgACuIkAAriKAAK4iwACuIwAAriNAAK4jwACuJEAAriSAAK4kwACuJUAAriWAAK41QACuNcAArjZAAK42wACuN4AArjfAAK44AACuOEAArjiAAK45AACuOYAArjnAAK46AACuOoAArjrAAK5KgACuSwAArkuAAK5MAACuTMAArk0AAK5NQACuTYAArk3AAK5OQACuTsAArk8AAK5PQACuT8AArlAAAK5fwACuYEAArmDAAK5hQACuYgAArmJAAK5igACuYsAArmMAAK5jgACuZAAArmRAAK5kgACuZQAArmVAAK54AACugMAArojAAK6QwACukUAArpHAAK6SQACuksAArpOAAK6TwACulAAArpTAAK6VAACulYAArpXAAK6WgACul0AArpeAAK6XwACumIAArpjAAK6aAACunUAArp6AAK6fAACun8AArqEAAK6hwACuooAArqMAAK6sQACutUAArr8AAK7IAACuyMAArslAAK7JwACuykAArsrAAK7LQACuy4AArsxAAK7PgACu08AArtRAAK7UwACu1UAArtXAAK7WQACu1sAArtdAAK7XwACu3AAArtzAAK7dgACu3kAArt8AAK7fwACu4IAAruFAAK7iAACu4oAArvJAAK7ywACu80AArvPAAK70gACu9MAArvUAAK71QACu9YAArvYAAK72gACu9sAArvcAAK73gACu98AArweAAK8IAACvCIAArwkAAK8JwACvCgAArwpAAK8KgACvCsAArwtAAK8LwACvDAAArwxAAK8MwACvDQAArxzAAK8dQACvHgAArx6AAK8fQACvH4AArx/AAK8gAACvIEAAryDAAK8hQACvIYAAryHAAK8iQACvIoAAryXAAK8mAACvJkAArybAAK82gACvNwAArzeAAK84AACvOMAArzkAAK85QACvOYAArznAAK86QACvOsAArzsAAK87QACvO8AArzwAAK9LwACvTEAAr0zAAK9NQACvTgAAr05AAK9OgACvTsAAr08AAK9PgACvUAAAr1BAAK9QgACvUQAAr1FAAK9hAACvYYAAr2IAAK9igACvY0AAr2OAAK9jwACvZAAAr2RAAK9kwACvZUAAr2WAAK9lwACvZkAAr2aAAK92QACvdsAAr3dAAK93wACveIAAr3jAAK95AACveUAAr3mAAK96AACveoAAr3rAAK97AACve4AAr3vAAK+LgACvjAAAr4yAAK+NAACvjcAAr44AAK+OQACvjoAAr47AAK+PQACvj8AAr5AAAK+QQACvkMAAr5EAAK+aQACvo0AAr60AAK+2AACvtsAAr7eAAK+4AACvuIAAr7kAAK+5gACvucAAr7qAAK+9wACvwYAAr8JAAK/DAACvw8AAr8SAAK/FQACvxgAAr8bAAK/KgACvy0AAr8wAAK/MwACvzYAAr85AAK/PAACvz8AAr9BAAK/gAACv4IAAr+FAAK/hwACv4oAAr+LAAK/jAACv40AAr+OAAK/kAACv5MAAr+UAAK/lQACv5cAAr+YAAK/1wACv9kAAr/cAAK/3gACv+EAAr/iAAK/4wACv+QAAr/lAAK/5wACv+oAAr/rAAK/7AACv+4AAr/vAALALgACwDAAAsAzAALANQACwDgAAsA5AALAOgACwDsAAsA8AALAPgACwEEAAsBCAALAQwACwEUAAsBGAALAhQACwIcAAsCKAALAjAACwI8AAsCQAALAkQACwJIAAsCTAALAlQACwJgAAsCZAALAmgACwJwAAsCdAALA3AACwN4AAsDgAALA4gACwOUAAsDmAALA5wACwOgAAsDpAALA6wACwO4AAsDvAALA8AACwPIAAsDzAALBMgACwTQAAsE2AALBOAACwTsAAsE8AALBPQACwT4AAsE/AALBQQACwUQAAsFFAALBRgACwUgAAsFJAALBiAACwYoAAsGNAALBjwACwZIAAsGTAALBlAACwZUAAsGWAALBmAACwZsAAsGcAALBnQACwZ8AAsGgAALB6wACwg4AAsIuAALCTgACwlAAAsJSAALCVAACwlYAAsJZAALCWgACwlsAAsJeAALCXwACwmEAAsJiAALCZAACwmcAAsJoAALCaQACwmwAAsJtAALCcgACwn8AAsKEAALChgACwogAAsKNAALCkAACwpMAAsKVAALCugACwt4AAsMFAALDKQACwywAAsMuAALDMAACwzIAAsM0AALDNgACwzcAAsM6AALDRwACw1gAAsNaAALDXAACw14AAsNgAALDYgACw2QAAsNmAALDaAACw3kAAsN8AALDfwACw4IAAsOFAALDiAACw4sAAsOOAALDkQACw5MAAsPSAALD1AACw9YAAsPYAALD2wACw9wAAsPdAALD3gACw98AAsPhAALD4wACw+QAAsPlAALD5wACw+gAAsQnAALEKQACxCsAAsQtAALEMAACxDEAAsQyAALEMwACxDQAAsQ2AALEOAACxDkAAsQ6AALEPAACxD0AAsR8AALEfgACxIEAAsSDAALEhgACxIcAAsSIAALEiQACxIoAAsSMAALEjgACxI8AAsSQAALEkgACxJMAAsSgAALEoQACxKIAAsSkAALE4wACxOUAAsTnAALE6QACxOwAAsTtAALE7gACxO8AAsTwAALE8gACxPQAAsT1AALE9gACxPgAAsT5AALFOAACxToAAsU8AALFPgACxUEAAsVCAALFQwACxUQAAsVFAALFRwACxUkAAsVKAALFSwACxU0AAsVOAALFjQACxY8AAsWRAALFkwACxZYAAsWXAALFmAACxZkAAsWaAALFnAACxZ4AAsWfAALFoAACxaIAAsWjAALF4gACxeQAAsXmAALF6AACxesAAsXsAALF7QACxe4AAsXvAALF8QACxfMAAsX0AALF9QACxfcAAsX4AALGNwACxjkAAsY7AALGPQACxkAAAsZBAALGQgACxkMAAsZEAALGRgACxkgAAsZJAALGSgACxkwAAsZNAALGcgACxpYAAsa9AALG4QACxuQAAsbmAALG6AACxuoAAsbsAALG7gACxu8AAsbyAALG/wACxw4AAscQAALHEgACxxQAAscWAALHGAACxxoAAsccAALHKwACxy4AAscxAALHNAACxzcAAsc6AALHPQACx0AAAsdCAALHgQACx4MAAseFAALHhwACx4oAAseLAALHjAACx40AAseOAALHkAACx5IAAseTAALHlAACx5YAAseXAALH1gACx9gAAsfaAALH3AACx98AAsfgAALH4QACx+IAAsfjAALH5QACx+cAAsfoAALH6QACx+sAAsfsAALIKwACyC0AAsgvAALIMQACyDQAAsg1AALINgACyDcAAsg4AALIOgACyDwAAsg9AALIPgACyEAAAshBAALIgAACyIIAAsiFAALIhwACyIoAAsiLAALIjAACyI0AAsiOAALIkAACyJIAAsiTAALIlAACyJYAAsiXAALI1gACyNgAAsjaAALI3AACyN8AAsjgAALI4QACyOIAAsjjAALI5QACyOcAAsjoAALI6QACyOsAAsjsAALJKwACyS0AAskvAALJMQACyTQAAsk1AALJNgACyTcAAsk4AALJOgACyTwAAsk9AALJPgACyUAAAslBAALJgAACyYIAAsmEAALJhgACyYkAAsmKAALJiwACyYwAAsmNAALJjwACyZEAAsmSAALJkwACyZUAAsmWAALJnwACyaAAAsmiAALJ4QACyeMAAsnlAALJ5wACyeoAAsnrAALJ7AACye0AAsnuAALJ8AACyfMAAsn0AALJ9QACyfcAAsn4AALKNwACyjkAAso7AALKPQACykAAAspBAALKQgACykMAAspEAALKRgACykkAAspKAALKSwACyk0AAspOAALKjQACyo8AAsqSAALKlAACypcAAsqYAALKmQACypoAAsqbAALKnQACyqAAAsqhAALKogACyqQAAsqlAALKrgACyrEAAsq0AALKtgACyvkAAssdAALLQQACy2QAAsuLAALLqwACy9IAAsv5AALMGQACzD0AAsxhAALMYwACzGYAAsxoAALMagACzGwAAsxvAALMcgACzHQAAsx2AALMeQACzHsAAsx9AALMgAACzIMAAsyEAALMjQACzJoAAsydAALMnwACzKIAAsylAALMpwACzMwAAszwAALNFwACzTsAAs0+AALNQAACzUIAAs1EAALNRgACzUgAAs1JAALNTAACzVkAAs1qAALNbAACzW4AAs1wAALNcgACzXQAAs12AALNeAACzXoAAs2LAALNjgACzZEAAs2UAALNlwACzZoAAs2dAALNoAACzaMAAs2lAALN5AACzeYAAs3pAALN6wACze4AAs3vAALN8AACzfEAAs3yAALN9AACzfYAAs33AALN+AACzfoAAs37AALOBAACzgUAAs4HAALORgACzkgAAs5KAALOTAACzk8AAs5QAALOUQACzlIAAs5TAALOVQACzlcAAs5YAALOWQACzlsAAs5cAALOmwACzp0AAs6fAALOoQACzqQAAs6lAALOpgACzqcAAs6oAALOqgACzqwAAs6tAALOrgACzrAAAs6xAALO8AACzvIAAs71AALO9wACzvoAAs77AALO/AACzv0AAs7+AALPAAACzwIAAs8DAALPBAACzwYAAs8HAALPEAACzxEAAs8TAALPUgACz1QAAs9WAALPWAACz1sAAs9cAALPXQACz14AAs9fAALPYQACz2MAAs9kAALPZQACz2cAAs9oAALPpwACz6kAAs+sAALPrgACz7EAAs+yAALPswACz7QAAs+1AALPtwACz7kAAs+6AALPuwACz70AAs++AALPywACz8wAAs/NAALPzwAC0A4AAtAQAALQEgAC0BQAAtAXAALQGAAC0BkAAtAaAALQGwAC0B0AAtAfAALQIAAC0CEAAtAjAALQJAAC0GMAAtBlAALQaAAC0GoAAtBtAALQbgAC0G8AAtBwAALQcQAC0HMAAtB1AALQdgAC0HcAAtB5AALQegAC0I4AAtCbAALQ0gAC0NUAAtDYAALQ2wAC0N4AAtDhAALQ5AAC0OcAAtDqAALQ7QAC0PAAAtDzAALQ9gAC0PkAAtD8AALQ/wAC0QIAAtEFAALRCAAC0QsAAtEOAALREQAC0RQAAtEXAALRGgAC0R0AAtEgAALRVwAC0VoAAtFdAALRYAAC0WMAAtFmAALRaQAC0WwAAtFvAALRcgAC0XUAAtF4AALRewAC0X4AAtGBAALRhAAC0YcAAtGKAALRjQAC0ZAAAtGTAALRlgAC0ZkAAtGcAALRnwAC0aIAAtGlAALRpwAC0bYAAtHNAALR5QAC0fIAAtIAAALSCgAC0iIAAtIsAALSPgAC0lUAAtJnAALSfAAC0oYAAtKaAALSpQAC0rwAAtLSAALS5AAC0vIAAtMAAALTCgAC0ykAAtM2AALTQgAC01UAAtNhAALTrAAC088AAtPvAALUDwAC1BEAAtQTAALUFQAC1BcAAtQaAALUGwAC1BwAAtQfAALUIAAC1CIAAtQjAALUJQAC1CgAAtQpAALUKgAC1C0AAtQuAALUMwAC1EAAAtRFAALURwAC1EkAAtROAALUUQAC1FQAAtRWAALUewAC1J8AAtTGAALU6gAC1O0AAtTvAALU8QAC1PMAAtT1AALU9wAC1PgAAtT7AALVCAAC1RkAAtUbAALVHQAC1R8AAtUhAALVIwAC1SUAAtUnAALVKQAC1ToAAtU9AALVQAAC1UMAAtVGAALVSQAC1UwAAtVPAALVUgAC1VQAAtWTAALVlQAC1ZcAAtWZAALVnAAC1Z0AAtWeAALVnwAC1aAAAtWiAALVpAAC1aUAAtWmAALVqAAC1akAAtXoAALV6gAC1ewAAtXuAALV8QAC1fIAAtXzAALV9AAC1fUAAtX3AALV+QAC1foAAtX7AALV/QAC1f4AAtY9AALWPwAC1kIAAtZEAALWRwAC1kgAAtZJAALWSgAC1ksAAtZNAALWTwAC1lAAAtZRAALWUwAC1lQAAtZhAALWYgAC1mMAAtZlAALWpAAC1qYAAtaoAALWqgAC1q0AAtauAALWrwAC1rAAAtaxAALWswAC1rUAAta2AALWtwAC1rkAAta6AALW+QAC1vsAAtb9AALW/wAC1wIAAtcDAALXBAAC1wUAAtcGAALXCAAC1woAAtcLAALXDAAC1w4AAtcPAALXTgAC11AAAtdSAALXVAAC11cAAtdYAALXWQAC11oAAtdbAALXXQAC118AAtdgAALXYQAC12MAAtdkAALXowAC16UAAtenAALXqQAC16wAAtetAALXrgAC168AAtewAALXsgAC17QAAte1AALXtgAC17gAAte5AALX+AAC1/oAAtf8AALX/gAC2AEAAtgCAALYAwAC2AQAAtgFAALYBwAC2AkAAtgKAALYCwAC2A0AAtgOAAL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jRAAC40YAAuNHAALjSAAC40oAAuNLAALjlgAC47kAAuPZAALj+QAC4/sAAuP9AALj/wAC5AEAAuQEAALkBQAC5AYAAuQJAALkCgAC5AwAAuQNAALkDwAC5BIAAuQTAALkFAAC5BcAAuQYAALkHQAC5CoAAuQvAALkMQAC5DMAAuQ4AALkOwAC5D4AAuRAAALkZQAC5IkAAuSwAALk1AAC5NcAAuTZAALk2wAC5N0AAuTfAALk4QAC5OIAAuTlAALk8gAC5QMAAuUFAALlBwAC5QkAAuULAALlDQAC5Q8AAuURAALlEwAC5SQAAuUnAALlKgAC5S0AAuUwAALlMwAC5TYAAuU5AALlPAAC5T4AAuV9AALlfwAC5YEAAuWDAALlhgAC5YcAAuWIAALliQAC5YoAAuWMAALljgAC5Y8AAuWQAALlkgAC5ZMAAuXSAALl1AAC5dYAAuXYAALl2wAC5dwAAuXdAALl3gAC5d8AAuXhAALl4wAC5eQAAuXlAALl5wAC5egAAuYnAALmKQAC5iwAAuYuAALmMQAC5jIAAuYzAALmNAAC5jUAAuY3AALmOQAC5joAAuY7AALmPQAC5j4AAuZLAALmTAAC5k0AAuZPAALmjgAC5pAAAuaSAALmlAAC5pcAAuaYAALmmQAC5poAAuabAALmnQAC5p8AAuagAALmoQAC5qMAAuakAALm4wAC5uUAAubnAALm6QAC5uwAAubtAALm7gAC5u8AAubwAALm8gAC5vQAAub1AALm9gAC5vgAAub5AALnOAAC5zoAAuc8AALnPgAC50EAAudCAALnQwAC50QAAudFAALnRwAC50kAAudKAALnSwAC500AAudOAALnjQAC548AAueRAALnkwAC55YAAueXAALnmAAC55kAAueaAALnnAAC554AAuefAALnoAAC56IAAuejAALn4gAC5+QAAufmAALn6AAC5+sAAufsAALn7QAC5+4AAufvAALn8QAC5/MAAuf0AALn9QAC5/cAAuf4AALoHQAC6EEAAuhoAALojAAC6I8AAuiRAALokwAC6JUAAuiXAALomQAC6JoAAuidAALoqgAC6LkAAui7AALovQAC6L8AAujBAALowwAC6MUAAujHAALo1gAC6NkAAujcAALo3wAC6OIAAujlAALo6AAC6OsAAujtAALpLAAC6S4AAukwAALpMgAC6TUAAuk2AALpNwAC6TgAAuk5AALpOwAC6T0AAuk+AALpPwAC6UEAAulCAALpgQAC6YMAAumFAALphwAC6YoAAumLAALpjAAC6Y0AAumOAALpkAAC6ZIAAumTAALplAAC6ZYAAumXAALp1gAC6dgAAunaAALp3AAC6d8AAungAALp4QAC6eIAAunjAALp5QAC6ecAAunoAALp6QAC6esAAunsAALqKwAC6i0AAuowAALqMgAC6jUAAuo2AALqNwAC6jgAAuo5AALqOwAC6j0AAuo+AALqPwAC6kEAAupCAALqgQAC6oMAAuqFAALqhwAC6ooAAuqLAALqjAAC6o0AAuqOAALqkAAC6pIAAuqTAALqlAAC6pYAAuqXAALq1gAC6tgAAuraAALq3AAC6t8AAurgAALq4QAC6uIAAurjAALq5QAC6ucAAuroAALq6QAC6usAAursAALrKwAC6y0AAusvAALrMQAC6zQAAus1AALrNgAC6zcAAus4AALrOgAC6zwAAus9AALrPgAC60AAAutBAALrjAAC668AAuvPAALr7wAC6/EAAuvzAALr9QAC6/cAAuv6AALr+wAC6/wAAuv/AALsAAAC7AIAAuwDAALsBQAC7AgAAuwJAALsCgAC7A0AAuwOAALsEwAC7CAAAuwlAALsJwAC7CkAAuwuAALsMQAC7DQAAuw2AALsWwAC7H8AAuymAALsygAC7M0AAuzPAALs0QAC7NMAAuzVAALs1wAC7NgAAuzbAALs6AAC7PkAAuz7AALs/QAC7P8AAu0BAALtAwAC7QUAAu0HAALtCQAC7RoAAu0dAALtIAAC7SMAAu0mAALtKQAC7SwAAu0vAALtMgAC7TQAAu1zAALtdQAC7XcAAu15AALtfAAC7X0AAu1+AALtfwAC7YAAAu2CAALthAAC7YUAAu2GAALtiAAC7YkAAu3IAALtygAC7cwAAu3OAALt0QAC7dIAAu3TAALt1AAC7dUAAu3XAALt2QAC7doAAu3bAALt3QAC7d4AAu4dAALuHwAC7iIAAu4kAALuJwAC7igAAu4pAALuKgAC7isAAu4tAALuLwAC7jAAAu4xAALuMwAC7jQAAu5BAALuQgAC7kMAAu5FAALuhAAC7oYAAu6IAALuigAC7o0AAu6OAALujwAC7pAAAu6RAALukwAC7pUAAu6WAALulwAC7pkAAu6aAALu2QAC7tsAAu7dAALu3wAC7uIAAu7jAALu5AAC7uUAAu7mAALu6AAC7uoAAu7rAALu7AAC7u4AAu7vAALvLgAC7zAAAu8yAALvNAAC7zcAAu84AALvOQAC7zoAAu87AALvPQAC7z8AAu9AAALvQQAC70MAAu9EAALvgwAC74UAAu+HAALviQAC74wAAu+NAALvjgAC748AAu+QAALvkgAC75QAAu+VAALvlgAC75gAAu+ZAALv2AAC79oAAu/cAALv3gAC7+EAAu/iAALv4wAC7+QAAu/lAALv5wAC7+kAAu/qAALv6wAC7+0AAu/uAALwEwAC8DcAAvBeAALwggAC8IUAAvCHAALwiQAC8IsAAvCNAALwjwAC8JAAAvCTAALwoAAC8K8AAvCxAALwswAC8LUAAvC3AALwuQAC8LsAAvC9AALwzAAC8M8AAvDSAALw1QAC8NgAAvDbAALw3gAC8OEAAvDjAALxIgAC8SQAAvEmAALxKAAC8SsAAvEsAALxLQAC8S4AAvEvAALxMQAC8TMAAvE0AALxNQAC8TcAAvE4AALxdwAC8XkAAvF7AALxfQAC8YAAAvGBAALxggAC8YMAAvGEAALxhgAC8YgAAvGJAALxigAC8YwAAvGNAALxzAAC8c4AAvHQAALx0gAC8dUAAvHWAALx1wAC8dgAAvHZAALx2wAC8d0AAvHeAALx3wAC8eEAAvHiAALyIQAC8iMAAvImAALyKAAC8isAAvIsAALyLQAC8i4AAvIvAALyMQAC8jMAAvI0AALyNQAC8jcAAvI4AALydwAC8nkAAvJ7AALyfQAC8oAAAvKBAALyggAC8oMAAvKEAALyhgAC8ogAAvKJAALyigAC8owAAvKNAALyzAAC8s4AAvLQAALy0gAC8tUAAvLWAALy1wAC8tgAAvLZAALy2wAC8t0AAvLeAALy3wAC8uEAAvLiAALzIQAC8yMAAvMlAALzJwAC8yoAAvMrAALzLAAC8y0AAvMuAALzMAAC8zIAAvMzAALzNAAC8zYAAvM3AALzggAC86UAAvPFAALz5QAC8+cAAvPpAALz6wAC8+0AAvPwAALz8QAC8/IAAvP1AALz9gAC8/gAAvP5AALz+wAC8/4AAvP/AAL0AAAC9AMAAvQEAAL0CQAC9BYAAvQbAAL0HQAC9B8AAvQkAAL0JwAC9CoAAvQsAAL0UQAC9HUAAvScAAL0wAAC9MMAAvTFAAL0xwAC9MkAAvTLAAL0zQAC9M4AAvTRAAL03gAC9O8AAvTxAAL08wAC9PUAAvT3AAL0+QAC9PsAAvT9AAL0/wAC9RAAAvUTAAL1FgAC9RkAAvUcAAL1HwAC9SIAAvUlAAL1KAAC9SoAAvVpAAL1awAC9W0AAvVvAAL1cgAC9XMAAvV0AAL1dQAC9XYAAvV4AAL1egAC9XsAAvV8AAL1fgAC9X8AAvW+AAL1wAAC9cIAAvXEAAL1xwAC9cgAAvXJAAL1ygAC9csAAvXNAAL1zwAC9dAAAvXRAAL10wAC9dQAAvYTAAL2FQAC9hgAAvYaAAL2HQAC9h4AAvYfAAL2IAAC9iEAAvYjAAL2JQAC9iYAAvYnAAL2KQAC9ioAAvY3AAL2OAAC9jkAAvY7AAL2egAC9nwAAvZ+AAL2gAAC9oMAAvaEAAL2hQAC9oYAAvaHAAL2iQAC9osAAvaMAAL2jQAC9o8AAvaQAAL2zwAC9tEAAvbTAAL21QAC9tgAAvbZAAL22gAC9tsAAvbcAAL23gAC9uAAAvbhAAL24gAC9uQAAvblAAL3JAAC9yYAAvcoAAL3KgAC9y0AAvcuAAL3LwAC9zAAAvcxAAL3MwAC9zUAAvc2AAL3NwAC9zkAAvc6AAL3eQAC93sAAvd9AAL3fwAC94IAAveDAAL3hAAC94UAAveGAAL3iAAC94oAAveLAAL3jAAC944AAvePAAL3zgAC99AAAvfSAAL31AAC99cAAvfYAAL32QAC99oAAvfbAAL33QAC998AAvfgAAL34QAC9+MAAvfkAAL4CQAC+C0AAvhUAAL4eAAC+HsAAvh9AAL4fwAC+IEAAviDAAL4hQAC+IYAAviJAAL4lgAC+KUAAvinAAL4qQAC+KsAAvitAAL4rwAC+LEAAvizAAL4wgAC+MUAAvjIAAL4ywAC+M4AAvjRAAL41AAC+NcAAvjZAAL5GAAC+RoAAvkcAAL5HgAC+SEAAvkiAAL5IwAC+SQAAvklAAL5JwAC+SkAAvkqAAL5KwAC+S0AAvkuAAL5bQAC+W8AAvlxAAL5cwAC+XYAAvl3AAL5eAAC+XkAAvl6AAL5fAAC+X4AAvl/AAL5gAAC+YIAAvmDAAL5wgAC+cQAAvnGAAL5yAAC+csAAvnMAAL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FEgADBRQAAwVTAAMFVQADBVcAAwVZAAMFXAADBV0AAwVeAAMFXwADBWAAAwViAAMFZAADBWUAAwVmAAMFaAADBWkAAwWoAAMFqgADBawAAwWuAAMFsQADBbIAAwWzAAMFtAADBbUAAwW3AAMFuQADBboAAwW7AAMFvQADBb4AAwX9AAMF/wADBgIAAwYEAAMGBwADBggAAwYJAAMGCgADBgsAAwYNAAMGDwADBhAAAwYRAAMGEwADBhQAAwYhAAMGIgADBiMAAwYlAAMGZAADBmYAAwZoAAMGagADBm0AAwZuAAMGbwADBnAAAwZxAAMGcwADBnUAAwZ2AAMGdwADBnkAAwZ6AAMGuQADBrsAAwa9AAMGvwADBsIAAwbDAAMGxAADBsUAAwbGAAMGyAADBsoAAwbLAAMGzAADBs4AAwbPAAMHDgADBxAAAwcSAAMHFAADBxcAAwcYAAMHGQADBxoAAwcbAAMHHQADBx8AAwcgAAMHIQADByMAAwckAAMHYwADB2UAAwdnAAMHaQADB2wAAwdtAAMHbgADB28AAwdwAAMHcgADB3QAAwd1AAMHdgADB3gAAwd5AAMHuAADB7oAAwe8AAMHvgADB8EAAwfCAAMHwwADB8QAAwfFAAMHxwADB8kAAwfKAAMHywADB80AAwfOAAMH8wADCBcAAwg+AAMIYgADCGUAAwhnAAMIaQADCGsAAwhtAAMIbwADCHAAAwhzAAMIgAADCI8AAwiRAAMIkwADCJUAAwiXAAMImQADCJsAAwidAAMIrAADCK8AAwiyAAMItQADCLgAAwi7AAMIvgADCMEAAwjDAAMJAgADCQQAAwkGAAMJCAADCQsAAwkMAAMJDQADCQ4AAwkPAAMJEQADCRMAAwkUAAMJFQADCRcAAwkYAAMJVwADCVkAAwlbAAMJXQADCWAAAwlhAAMJYgADCWMAAwlkAAMJZgADCWgAAwlpAAMJagADCWwAAwltAAMJrAADCa4AAwmwAAMJsgADCbUAAwm2AAMJtwADCbgAAwm5AAMJuwADCb0AAwm+AAMJvwADCcEAAwnCAAMKAQADCgMAAwoGAAMKCAADCgsAAwoMAAMKDQADCg4AAwoPAAMKEQADChMAAwoUAAMKFQADChcAAwoYAAMKGwADCloAAwpcAAMKXgADCmAAAwpjAAMKZAADCmUAAwpmAAM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V6wADFe0AAxXwAAMV8gADFfUAAxX2AAMV9wADFfgAAxX5AAMV+wADFf0AAxX+AAMV/wADFgEAAxYCAAMWDwADFhAAAxYRAAMWEwADFlIAAxZUAAMWVgADFlgAAxZbAAMWXAADFl0AAxZeAAMWXwADFmEAAxZjAAMWZAADFmUAAxZnAAMWaAADFqcAAxapAAMWqwADFq0AAxawAAMWsQADFrIAAxazAAMWtAADFrYAAxa4AAMWuQADFroAAxa8AAMWvQADFvwAAxb+AAMXAAADFwIAAxcFAAMXBgADFwcAAxcIAAMXCQADFwsAAxcNAAMXDgADFw8AAxcRAAMXEgADF1EAAxdTAAMXVQADF1cAAxdaAAMXWwADF1wAAxddAAMXXgADF2AAAxdiAAMXYwADF2QAAxdmAAMXZwADF6YAAxeoAAMXqgADF6wAAxevAAMXsAADF7EAAxeyAAMXswADF7UAAxe3AAMXuAADF7kAAxe7AAMXvAADF+EAAxgFAAMYLAADGFAAAxhTAAMYVQADGFcAAxhZAAMYWwADGF0AAxheAAMYYQADGG4AAxh9AAMYfwADGIEAAxiDAAMYhQADGIcAAxiJAAMYiwADGJoAAxidAAMYoAADGKMAAximAAMYqQADGKwAAxivAAMYsQADGPAAAxjyAAMY9AADGPYAAxj5AAMY+gADGPsAAxj8AAMY/QADGP8AAxkBAAMZAgADGQMAAxkFAAMZBgADGUUAAxlHAAMZSQADGUsAAxlOAAMZTwADGVAAAxlRAAMZUgADGVQAAxlWAAMZVwADGVgAAxlaAAMZWwADGZoAAxmcAAMZngADGaAAAxmjAAMZpAADGaUAAxmmAAMZpwADGakAAxmrAAMZrAADGa0AAxmvAAMZsAADGe8AAxnxAAMZ9AADGfYAAxn5AAMZ+gADGfsAAxn8AAMZ/QADGf8AAxoBAAMaAgADGgMAAxoFAAMaBgADGkUAAxpHAAMaSQADGksAAxpOAAMaTwADGlAAAxpRAAMaUgADGlQAAxpWAAMaVwADGlgAAxpaAAMaWwADGpoAAxqcAAMangADGqAAAxqjAAMapAADGqUAAxqmAAMapwADGqkAAxqrAAMarAADGq0AAxqvAAMasAADGu8AAxrxAAMa8wADGvUAAxr4AAMa+QADGvoAAxr7AAMa/AADGv4AAxsAAAM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mUwADJpIAAyaUAAMmlgADJpgAAyabAAMmnAADJp0AAyaeAAMmnwADJqEAAyajAAMmpAADJqUAAyanAAMmqAADJucAAybpAAMm6wADJu0AAybwAAMm8QADJvIAAybzAAMm9AADJvYAAyb4AAMm+QADJvoAAyb8AAMm/QADJzwAAyc+AAMnQAADJ0IAAydFAAMnRgADJ0cAAydIAAMnSQADJ0sAAydNAAMnTgADJ08AAydRAAMnUgADJ5EAAyeTAAMnlQADJ5cAAyeaAAMnmwADJ5wAAyedAAMnngADJ6AAAyeiAAMnowADJ6QAAyemAAMnpwADJ8wAAyfwAAMoFwADKDsAAyg+AAMoQAADKEIAAyhEAAMoRgADKEgAAyhJAAMoTAADKFkAAyhoAAMoagADKGwAAyhuAAMocAADKHIAAyh0AAModgADKIUAAyiIAAMoiwADKI4AAyiRAAMolAADKJcAAyiaAAMonAADKNsAAyjdAAMo3wADKOEAAyjkAAMo5QADKOYAAyjnAAMo6AADKOoAAyjsAAMo7QADKO4AAyjwAAMo8QADKTAAAykyAAMpNAADKTYAAyk5AAMpOgADKTsAAyk8AAMpPQADKT8AAylBAAMpQgADKUMAAylFAAMpRgADKYUAAymHAAMpiQADKYsAAymOAAMpjwADKZAAAymRAAMpkgADKZQAAymWAAMplwADKZgAAymaAAMpmwADKdoAAyncAAMp3wADKeEAAynkAAMp5QADKeYAAynnAAMp6AADKeoAAynsAAMp7QADKe4AAynwAAMp8QADKjAAAyoyAAMqNAADKjYAAyo5AAMqOgADKjsAAyo8AAMqPQADKj8AAypBAAMqQgADKkMAAypFAAMqRgADKoUAAyqHAAMqiQADKosAAyqOAAMqjwADKpAAAyqRAAMqkgADKpQAAyqWAAMqlwADKpgAAyqaAAMqmwADKtoAAyrcAAMq3gADKuAAAyrjAAMq5AADKuUAAyrmAAMq5wADKukAAyrrAAMq7AADKu0AAyrvAAMq8AADKzsAAyteAAMrfgADK54AAyugAAMrogADK6QAAyumAAMrqQADK6oAAyurAAMrrgADK68AAyuxAAMrsgADK7QAAyu3AAMruAADK7kAAyu8AAMrvQADK8IAAyvPAAMr1AADK9YAAyvYAAMr3QADK+AAAyvjAAM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3LAADNy4AAzcxAAM3MgADNzMAAzc0AAM3NQADNzcAAzc5AAM3OgADNzsAAzc9AAM3PgADN30AAzd/AAM3gQADN4MAAzeGAAM3hwADN4gAAzeJAAM3igADN4wAAzeOAAM3jwADN5AAAzeSAAM3kwADN7gAAzfcAAM4AwADOCcAAzgqAAM4LAADOC4AAzgwAAM4MgADODQAAzg1AAM4OAADOEUAAzhUAAM4VgADOFgAAzhaAAM4XAADOF4AAzhgAAM4YgADOHEAAzh0AAM4dwADOHoAAzh9AAM4gAADOIMAAziGAAM4iAADOMcAAzjJAAM4ywADOM0AAzjQAAM40QADONIAAzjTAAM41AADONYAAzjYAAM42QADONoAAzjcAAM43QADORwAAzkeAAM5IAADOSIAAzklAAM5JgADOScAAzkoAAM5KQADOSsAAzktAAM5LgADOS8AAzkxAAM5MgADOXEAAzlzAAM5dQADOXcAAzl6AAM5ewADOXwAAzl9AAM5fgADOYAAAzmCAAM5gwADOYQAAzmGAAM5hwADOcYAAznIAAM5ywADOc0AAznQAAM50QADOdIAAznTAAM51AADOdYAAznYAAM52QADOdoAAzncAAM53QADOhwAAzoeAAM6IAADOiIAAzolAAM6JgADOicAAzooAAM6KQADOisAAzotAAM6LgADOi8AAzoxAAM6MgADOnEAAzpzAAM6dQADOncAAzp6AAM6ewADOnwAAzp9AAM6fgADOoAAAzqCAAM6gwADOoQAAzqGAAM6hwADOsYAAzrIAAM6ygADOswAAzrPAAM60AADOtEAAzrSAAM60wADOtUAAzrXAAM62AADOtkAAzrbAAM63AADOycAAztKAAM7agADO4oAAzuMAAM7jgADO5AAAzuSAAM7lQADO5YAAzuXAAM7mgADO5sAAzudAAM7ngADO6AAAzujAAM7pAADO6UAAzuoAAM7qQADO64AAzu7AAM7wAADO8IAAzvEAAM7yQADO8wAAzvPAAM70QADO/YAAzwaAAM8QQADPGUAAzxoAAM8agADPGwAAzxuAAM8cAADPHIAAzxzAAM8dgADPIMAAzyUAAM8lgADPJgAAzyaAAM8nAADPJ4AAzygAAM8ogADPKQAAzy1AAM8uAADPLsAAzy+AAM8wQADPMQAAzzHAAM8ygADPM0AAzzPAAM9DgADPRAAAz0SAAM9FAADPRcAAz0YAAM9GQADPRoAAz0bAAM9HQADPR8AAz0gAAM9IQADPSMAAz0kAAM9YwADPWUAAz1nAAM9aQADPWwAAz1tAAM9bgADPW8AAz1wAAM9cgADPXQAAz11AAM9dgADPXgAAz15AAM9uAADPboAAz29AAM9vwADPcIAAz3DAAM9xAADPcUAAz3GAAM9yAADPcoAAz3LAAM9zAADPc4AAz3PAAM93AADPd0AAz3eAAM94AADPh8AAz4hAAM+IwADPiUAAz4oAAM+KQADPioAAz4rAAM+LAADPi4AAz4wAAM+MQADPjIAAz40AAM+NQADPnQAAz52AAM+eAADPnoAAz59AAM+fgADPn8AAz6AAAM+gQADPoMAAz6FAAM+hgADPocAAz6JAAM+igADPskAAz7LAAM+zQADPs8AAz7SAAM+0wADPtQAAz7VAAM+1gADPtgAAz7aAAM+2wADPtwAAz7eAAM+3wADPx4AAz8gAAM/IgADPyQAAz8nAAM/KAADPykAAz8qAAM/KwADPy0AAz8vAAM/MAADPzEAAz8zAAM/NAADP3MAAz91AAM/dwADP3kAAz98AAM/fQADP34AAz9/AAM/gAADP4IAAz+EAAM/hQADP4YAAz+IAAM/iQADP64AAz/SAAM/+QADQB0AA0AgAANAIgADQCQAA0AmAANAKAADQCoAA0ArAANALgADQDsAA0BKAANATAADQE4AA0BQAANAUgADQFQAA0BWAANAWAADQGcAA0BqAANAbQADQHAAA0BzAANAdgADQHkAA0B8AANAfgADQL0AA0C/AANAwQADQMMAA0DGAANAxwADQMgAA0DJAANAygADQMwAA0DOAANAzwADQNAAA0DSAANA0wADQRIAA0EUAANBFgADQRgAA0EbAANBHAADQR0AA0EeAANBHwADQSEAA0EjAANBJAADQSUAA0EnAANBKAADQWcAA0FpAANBawADQW0AA0FwAANBcQADQXIAA0FzAANBdAADQXYAA0F4AANBeQADQXoAA0F8AANBfQADQbwAA0G+AANBwAADQcIAA0HFAANBxgADQccAA0HIAANByQADQcsAA0HNAANBzgADQc8AA0HRAANB0gADQhEAA0ITAANCFQADQhcAA0IaAANCGwADQhwAA0IdAANCHgADQiAAA0IiAANCIwADQiQAA0ImAANCJwADQmYAA0JoAANCagADQmwAA0JvAANCcAADQnEAA0JyAANCcwADQnUAA0J3AANCeAADQnkAA0J7AANCfAADQrsAA0K9AANCvwADQsEAA0LEAANCxQADQsYAA0LHAANCyAADQsoAA0LMAANCzQADQs4AA0LQAANC0QADQxwAA0M/AANDXwADQ38AA0OBAANDgwADQ4UAA0OHAANDigADQ4sAA0OMAANDjwADQ5AAA0OSAANDkwADQ5UAA0OYAANDmQADQ5oAA0OdAANDngADQ6MAA0OwAANDtQADQ7cAA0O5AANDvgADQ8EAA0PEAANDxgADQ+sAA0QPAANENgADRFoAA0RdAANEXwADRGEAA0RjAANEZQADRGcAA0RoAANEawADRHgAA0SJAANEiwADRI0AA0SPAANEkQADRJMAA0SVAANElwADRJkAA0SqAANErQADRLAAA0SzAANEtgADRLkAA0S8AANEvwADRMIAA0TEAANFAwADRQUAA0UHAANFCQADRQwAA0UNAANFDgADRQ8AA0UQAANFEgADRRQAA0UVAANFFgADRRgAA0UZAANFWAADRVoAA0VcAANFXgADRWEAA0ViAANFYwADRWQAA0VlAANFZwADRWkAA0VqAANFawADRW0AA0VuAANFrQADRa8AA0WyAANFtAADRbcAA0W4AANFuQADRboAA0W7AANFvQADRb8AA0XAAANFwQADRcMAA0XEAANF0QADRdIAA0XTAANF1QADRhQAA0YWAANGGAADRhoAA0YdAANGHgADRh8AA0YgAANGIQADRiMAA0YlAANGJgADRicAA0YpAANGKgADRmkAA0ZrAANGbQADRm8AA0ZyAANGcwADRnQAA0Z1AANGdgADRngAA0Z6AANGewADRnwAA0Z+AANGfwADRr4AA0bAAANGwgADRsQAA0bHAANGyAADRskAA0bKAANGywADRs0AA0bPAANG0AADRtEAA0bTAANG1AADRxMAA0cVAANHFwADRxkAA0ccAANHHQADRx4AA0cfAANHIAADRyIAA0ckAANHJQADRyYAA0coAANHKQADR2gAA0dqAANHbAADR24AA0dxAANHcgADR3MAA0d0AANHdQADR3cAA0d5AANHegADR3sAA0d9AANHfgADR6MAA0fHAANH7gADSBIAA0gVAANIFwADSBkAA0gbAANIHQADSB8AA0ggAANIIwADSDAAA0g/AANIQQADSEMAA0hFAANIRwADSEkAA0hLAANITQADSFwAA0hfAANIYgADSGUAA0hoAANIawADSG4AA0hxAANIcwADSLIAA0i0AANItgADSLgAA0i7AANIvAADSL0AA0i+AANIvwADSMEAA0jDAANIxAADSMUAA0jHAANIyAADSQcAA0kJAANJCwADSQ0AA0kQAANJEQADSRIAA0kTAANJFAADSRYAA0kYAANJGQADSRoAA0kcAANJHQADSVwAA0leAANJYAADSWIAA0llAANJZgADSWcAA0loAANJaQADSWsAA0ltAANJbgADSW8AA0lxAANJcgADSbEAA0mzAANJtQADSbcAA0m6AANJuwADSbwAA0m9AANJvgADScAAA0nCAANJwwADScQAA0nGAANJxwADSgYAA0oIAANKCgADSgwAA0oPAANKEAADShEAA0oSAANKEwADShUAA0oXAANKGAADShkAA0obAANKHAADSlsAA0pdAANKXwADSmEAA0pkAANKZQADSmYAA0pnAANKaAADSmoAA0psAANKbQADSm4AA0pwAANKcQADSrAAA0qyAANKtAADSrYAA0q5AANKugADSrsAA0q8AANKvQADSr8AA0rBAANKwgADSsMAA0rFAANKxgADSxEAA0s0AANLVAADS3QAA0t2AANLeAADS3oAA0t8AANLfwADS4AAA0uBAANLhAADS4UAA0uHAANLiAADS4oAA0uNAANLjgADS48AA0uSAANLkwADS5gAA0ulAANLqgADS6wAA0uuAANLswADS7YAA0u5AANLuwADS+AAA0wEAANMKwADTE8AA0xSAANMVAADTFYAA0xYAANMWgADTFwAA0xdAANMYAADTG0AA0x+AANMgAADTIIAA0yEAANMhgADTIgAA0yKAANMjAADTI4AA0yfAANMogADTKUAA0yoAANMqwADTK4AA0yxAANMtAADTLcAA0y5AANM+AADTPoAA0z8AANM/gADTQEAA00CAANNAwADTQQAA00FAANNBwADTQkAA00KAANNCwADTQ0AA00OAANNTQADTU8AA01RAANNUwADTVYAA01XAANNWAADTVkAA01aAANNXAADTV4AA01fAANNYAADTWIAA01jAANNogADTaQAA02nAANNqQADTawAA02tAANNrgADTa8AA02wAANNsgADTbQAA021AANNtgADTbgAA025AANNxgADTccAA03IAANNygADTgkAA04LAANODQADTg8AA04SAANOEwADThQAA04VAANOFgADThgAA04aAANOGwADThwAA04eAANOHwADTl4AA05gAANOYgADTmQAA05nAANOaAADTmkAA05qAANOawADTm0AA05vAANOcAADTnEAA05zAANOdAADTrMAA061AANOtwADTrkAA068AANOvQADTr4AA06/AANOwAADTsIAA07EAANOxQADTsYAA07IAANOyQADTwgAA08KAANPDAADTw4AA08RAANPEgADTxMAA08UAANPFQADTxcAA08ZAANPGgADTxsAA08dAANPHgADT10AA09fAANPYQADT2MAA09mAANPZwADT2gAA09pAANPagADT2wAA09uAANPbwADT3AAA09yAANPcwADT5gAA0+8AANP4wADUAcAA1AKAANQDAADUA4AA1AQAANQEgADUBQAA1AVAANQGAADUCUAA1A0AANQNgADUDgAA1A6AANQPAADUD4AA1BAAANQQgADUFEAA1BUAANQVwADUFoAA1BdAANQYAADUGMAA1BmAANQaAADUKcAA1CpAANQqwADUK0AA1CwAANQsQADULIAA1CzAANQtAADULYAA1C4AANQuQADULoAA1C8AANQvQADUPwAA1D+AANRAAADUQIAA1EFAANRBgADUQcAA1EIAANRCQADUQsAA1ENAANRDgADUQ8AA1ERAANREgADUVEAA1FTAANRVQADUVcAA1FaAANRWwADUVwAA1FdAANRXgADUWAAA1FiAANRYwADUWQAA1FmAANRZwADUaYAA1GoAANRqgADUawAA1GvAANRsAADUbEAA1GyAANRswADUbUAA1G3AANRuAADUbkAA1G7AANRvAADUfsAA1H9AANR/wADUgEAA1IEAANSBQADUgYAA1IHAANSCAADUgoAA1IMAANSDQADUg4AA1IQAANSEQADUlAAA1JSAANSVAADUlYAA1JZAANSWgADUlsAA1JcAANSXQADUl8AA1JhAANSYgADUmMAA1JlAANSZgADUqUAA1KnAANSqQADUqsAA1KuAANSrwADUrAAA1KxAANSsgADUrQAA1K2AANStwADUrgAA1K6AANSuwADUwYAA1MpAANTSQADU2kAA1NrAANTbQADU28AA1NxAANTdAADU3UAA1N2AANTeQADU3oAA1N8AANTfQADU38AA1OCAANTgwADU4QAA1OHAANTiAADU40AA1OaAANTnwADU6EAA1OjAANTqAADU6sAA1OuAANTsAADU9UAA1P5AANUIAADVEQAA1RHAANUSQADVEsAA1RNAANUTwADVFEAA1RSAANUVQADVGIAA1RzAANUdQADVHcAA1R5AANUewADVH0AA1R/AANUgQADVIMAA1SUAANUlwADVJoAA1SdAANUoAADVKMAA1SmAANUqQADVKwAA1SuAANU7QADVO8AA1TxAANU8wADVPYAA1T3AANU+AADVPkAA1T6AANU/AADVP4AA1T/AANVAAADVQIAA1UDAANVQgADVUQAA1VGAANVSAADVUsAA1VMAANVTQADVU4AA1VPAANVUQADVVMAA1VUAANVVQADVVcAA1VYAANVlwADVZkAA1WcAANVngADVaEAA1WiAANVowADVaQAA1WlAANVpwADVakAA1WqAANVqwADVa0AA1WuAANVuwADVbwAA1W9AANVvwADVf4AA1YAAANWAgADVgQAA1YHAANWCAADVgkAA1YKAANWCwADVg0AA1YPAANWEAADVhEAA1YTAANWFAADVlMAA1ZVAANWVwADVlkAA1ZcAANWXQADVl4AA1ZfAANWYAADVmIAA1ZkAANWZQADVmYAA1ZoAANWaQADVqgAA1aqAANWrAADVq4AA1axAANWsgADVrMAA1a0AANWtQADVrcAA1a5AANWugADVrsAA1a9AANWvgADVv0AA1b/AANXAQADVwMAA1cGAANXBwADVwgAA1cJAANXCgADVwwAA1cOAANXDwADVxAAA1cSAANXEwADV1IAA1dUAANXVgADV1gAA1dbAANXXAADV10AA1deAANXXwADV2EAA1djAANXZAADV2UAA1dnAANXaAADV40AA1exAANX2AADV/wAA1f/AANYAQADWAMAA1gFAANYBwADWAkAA1gKAANYDQADWBoAA1gpAANYKwADWC0AA1gvAANYMQADWDMAA1g1AANYNwADWEYAA1hJAANYTAADWE8AA1hSAANYVQADWFgAA1hbAANYXQADWJwAA1ieAANYoAADWKIAA1ilAANYpgADWKcAA1ioAANYqQADWKsAA1itAANYrgADWK8AA1ixAANYsgADWPEAA1jzAANY9QADWPcAA1j6AANY+wADWPwAA1j9AANY/gADWQAAA1kCAANZAwADWQQAA1kGAANZBwADWUYAA1lIAANZSgADWUwAA1lPAANZUAADWVEAA1lSAANZUwADWVUAA1lXAANZWAADWVkAA1lbAANZXAADWZsAA1mdAANZnwADWaEAA1mkAANZpQADWaYAA1mnAANZqAADWaoAA1msAANZrQADWa4AA1mwAANZsQADWfAAA1nyAANZ9AADWfYAA1n5AANZ+gADWfsAA1n8AANZ/QADWf8AA1oBAANaAgADWgMAA1oFAANaBgADWkUAA1pHAANaSQADWksAA1pOAANaTwADWlAAA1pRAANaUgADWlQAA1pWAANaVwADWlgAA1paAANaWwADWpoAA1qcAANangADWqAAA1qjAANapAADWqUAA1qmAANapwADWqkAA1qrAANarAADWq0AA1qvAANasAADWvsAA1seAANbPgADW14AA1tgAANbYgADW2QAA1tmAANbaQADW2oAA1trAANbbgADW28AA1txAANbcgADW3QAA1t3AANbeAADW3kAA1t8AANbfQADW4IAA1uPAANblAADW5YAA1uYAANbnQADW6AAA1ujAANbpQADW8oAA1vuAANcFQADXDkAA1w8AANcPgADXEAAA1xCAANcRAADXEYAA1xHAANcSgADXFcAA1xoAANcagADXGwAA1xuAANccAADXHIAA1x0AANcdgADXHgAA1yJAANcjAADXI8AA1ySAANclQADXJgAA1ybAANcngADXKEAA1yjAANc4gADXOQAA1zmAANc6AADXOsAA1zsAANc7QADXO4AA1zvAANc8QADXPMAA1z0AANc9QADXPcAA1z4AANdNwADXTkAA107AANdPQADXUAAA11BAANdQgADXUMAA11EAANdRgADXUgAA11JAANdSgADXUwAA11NAANdjAADXY4AA12RAANdkwADXZYAA12XAANdmAADXZkAA12aAANdnAADXZ4AA12fAANdoAADXaIAA12jAANdsAADXbEAA12yAANdtAADXfMAA131AANd9wADXfkAA138AANd/QADXf4AA13/AANeAAADXgIAA14EAANeBQADXgYAA14IAANeCQADXkgAA15KAANeTAADXk4AA15RAANeUgADXlMAA15UAANeVQADXlcAA15ZAANeWgADXlsAA15dAANeXgADXp0AA16fAANeoQADXqMAA16mAANepwADXqgAA16pAANeqgADXqwAA16uAANerwADXrAAA16yAANeswADXvIAA170AANe9gADXvgAA177AANe/AADXv0AA17+AANe/wADXwEAA18DAANfBAADXwUAA18HAANfCAADX0cAA19JAANfSwADX00AA19QAANfUQADX1IAA19TAANfVAADX1YAA19YAANfWQADX1oAA19cAANfXQADX4IAA1+mAANfzQADX/EAA1/0AANf9gADX/gAA1/6AANf/AADX/4AA1//AANgAgADYA8AA2AeAANgIAADYCIAA2AkAANgJgADYCgAA2AqAANgLAADYDsAA2A+AANgQQADYEQAA2BHAANgSgADYE0AA2BQAANgUgADYJEAA2CTAANglQADYJcAA2CaAANgmwADYJwAA2CdAANgngADYKAAA2CiAANgowADYKQAA2CmAANgpwADYOYAA2DoAANg6gADYOwAA2DvAANg8AADYPEAA2DyAANg8wADYPUAA2D3AANg+AADYPkAA2D7AANg/AADYTsAA2E9AANhPwADYUEAA2FEAANhRQADYUYAA2FHAANhSAADYUoAA2FMAANhTQADYU4AA2FQAANhUQADYZAAA2GSAANhlQADYZcAA2GaAANhmwADYZwAA2GdAANhngADYaAAA2GiAANhowADYaQAA2GmAANhpwADYeYAA2HoAANh6gADYewAA2HvAANh8AADYfEAA2HyAANh8wADYfUAA2H3AANh+AADYfkAA2H7AANh/AADYjsAA2I9AANiPwADYkEAA2JEAANiRQADYkYAA2JHAANiSAADYkoAA2JMAANiTQADYk4AA2JQAANiUQADYpAAA2KSAANilAADYpYAA2KZAANimgADYpsAA2KcAANinQADYp8AA2KhAANiogADYqMAA2KlAANipgADYvEAA2MUAANjNAADY1QAA2NWAANjWAADY1oAA2NcAANjXwADY2AAA2NhAANjZAADY2UAA2NnAANjaAADY2oAA2NtAANjbgADY28AA2NyAANjcwADY3gAA2OFAANjigADY4wAA2OOAANjkwADY5YAA2OZAANjmwADY8AAA2PkAANkCwADZC8AA2QyAANkNAADZDYAA2Q4AANkOgADZDwAA2Q9AANkQAADZE0AA2ReAANkYAADZGIAA2RkAANkZgADZGgAA2RqAANkbAADZG4AA2R/AANkggADZIUAA2SIAANkiwADZI4AA2SRAANklAADZJcAA2SZAANk2AADZNoAA2TcAANk3gADZOEAA2TiAANk4wADZOQAA2TlAANk5wADZOkAA2TqAANk6wADZO0AA2TuAANlLQADZS8AA2UxAANlMwADZTYAA2U3AANlOAADZTkAA2U6AANlPAADZT4AA2U/AANlQAADZUIAA2VDAANlggADZYQAA2WHAANliQADZYwAA2WNAANljgADZY8AA2WQAANlkgADZZQAA2WVAANllgADZZgAA2WZAANlpgADZacAA2WoAANlqgADZekAA2XrAANl7QADZe8AA2XyAANl8wADZfQAA2X1AANl9gADZfgAA2X6AANl+wADZfwAA2X+AANl/wADZj4AA2ZAAANmQgADZkQAA2ZHAANmSAADZkkAA2ZKAANmSwADZk0AA2ZPAANmUAADZlEAA2ZTAANmVAADZpMAA2aVAANmlwADZpkAA2acAANmnQADZp4AA2afAANmoAADZqIAA2akAANmpQADZqYAA2aoAANmqQADZugAA2bqAANm7AADZu4AA2bxAANm8gADZvMAA2b0AANm9QADZvcAA2b5AANm+gADZvsAA2b9AANm/gADZz0AA2c/AANnQQADZ0MAA2dGAANnRwADZ0gAA2dJAANnSgADZ0wAA2dOAANnTwADZ1AAA2dSAANnUwADZ3gAA2ecAANnwwADZ+cAA2fqAANn7AADZ+4AA2fwAANn8gADZ/QAA2f1AANn+AADaAUAA2gUAANoFgADaBgAA2gaAANoHAADaB4AA2ggAANoIgADaDEAA2g0AANoNwADaDoAA2g9AANoQAADaEMAA2hGAANoSAADaIcAA2iJAANoiwADaI0AA2iQAANokQADaJIAA2iTAANolAADaJYAA2iYAANomQADaJoAA2icAANonQADaNwAA2jeAANo4AADaOIAA2jlAANo5gADaOcAA2joAANo6QADaOsAA2jtAANo7gADaO8AA2jxAANo8gADaTEAA2kzAANpNQADaTcAA2k6AANpOwADaTwAA2k9AANpPgADaUAAA2lCAANpQwADaUQAA2lGAANpRwADaYYAA2mIAANpiwADaY0AA2mQAANpkQADaZIAA2mTAANplAADaZYAA2mYAANpmQADaZoAA2mcAANpnQADadwAA2neAANp4AADaeIAA2nlAANp5gADaecAA2noAANp6QADaesAA2ntAANp7gADae8AA2nxAANp8gADajEAA2ozAANqNQADajcAA2o6AANqOwADajwAA2o9AANqPgADakAAA2pCAANqQwADakQAA2pGAANqRwADaoYAA2qIAANqigADaowAA2qPAANqkAADapEAA2qSAANqkwADapUAA2qXAANqmAADapkAA2qbAANqnAADaucAA2sKAANrKgADa0oAA2tMAANrTgADa1AAA2tSAANrVQADa1YAA2tXAANrWgADa1sAA2tdAANrXgADa2AAA2tjAANrZAADa2UAA2toAANraQADa24AA2t7AANrgAADa4IAA2uEAANriQADa4wAA2uPAANrkQADa7YAA2vaAANsAQADbCUAA2woAANsKgADbCwAA2wuAANsMAADbDIAA2wzAANsNgADbEMAA2xUAANsVgADbFgAA2xaAANsXAADbF4AA2xgAANsYgADbGQAA2x1AANseAADbHsAA2x+AANsgQADbIQAA2yHAANsigADbI0AA2yPAANszgADbNAAA2zSAANs1AADbNcAA2zYAANs2QADbNoAA2zbAANs3QADbN8AA2zgAANs4QADbOMAA2zkAANtIwADbSUAA20nAANtKQADbSwAA20tAANtLgADbS8AA20wAANtMgADbTQAA201AANtNgADbTgAA205AANteAADbXoAA219AANtfwADbYIAA22DAANthAADbYUAA22GAANtiAADbYoAA22LAANtjAADbY4AA22PAANtnAADbZ0AA22eAANtoAADbd8AA23hAANt4wADbeUAA23oAANt6QADbeoAA23rAANt7AADbe4AA23wAANt8QADbfIAA230AANt9QADbjQAA242AANuOAADbjoAA249AANuPgADbj8AA25AAANuQQADbkMAA25FAANuRgADbkcAA25JAANuSgADbokAA26LAANujQADbo8AA26SAANukwADbpQAA26VAANulgADbpgAA26aAANumwADbpwAA26eAANunwADbt4AA27gAANu4gADbuQAA27nAANu6AADbukAA27qAANu6wADbu0AA27vAANu8AADbvEAA27zAANu9AADbzMAA281AANvNwADbzkAA288AANvPQADbz4AA28/AANvQAADb0IAA29EAANvRQADb0YAA29IAANvSQADb24AA2+SAANvuQADb90AA2/gAANv4gADb+QAA2/mAANv6AADb+oAA2/rAANv7gADb/sAA3AKAANwDAADcA4AA3AQAANwEgADcBQAA3AWAANwGAADcCcAA3AqAANwLQADcDAAA3AzAANwNgADcDkAA3A8AANwPgADcH0AA3B/AANwgQADcIMAA3CGAANwhwADcIgAA3CJAANwigADcIwAA3COAANwjwADcJAAA3CSAANwkwADcNIAA3DUAANw1gADcNgAA3DbAANw3AADcN0AA3DeAANw3wADcOEAA3DjAANw5AADcOUAA3DnAANw6AADcScAA3EpAANxKwADcS0AA3EwAANxMQADcTIAA3EzAANxNAADcTYAA3E4AANxOQADcToAA3E8AANxPQADcXwAA3F+AANxgQADcYMAA3GGAANxhwADcYgAA3GJAANxigADcYwAA3GOAANxjwADcZAAA3GSAANxkwADcdIAA3HUAANx1gADcdgAA3HbAANx3AADcd0AA3HeAANx3wADceEAA3HjAANx5AADceUAA3HnAANx6AADcicAA3IpAANyKwADci0AA3IwAANyMQADcjIAA3IzAANyNAADcjYAA3I4AANyOQADcjoAA3I8AANyPQADcnwAA3J+AANygAADcoIAA3KFAANyhgADcocAA3KIAANyiQADcosAA3KNAANyjgADco8AA3KRAANykgADct0AA3MAAANzIAADc0AAA3NCAANzRAADc0YAA3NIAANzSwADc0wAA3NNAANzUAADc1EAA3NTAANzVAADc1YAA3NZAANzWgADc1sAA3NeAANzXwADc2QAA3NxAANzdgADc3gAA3N6AANzfwADc4IAA3OFAANzhwADc6wAA3PQAANz9wADdBsAA3QeAAN0IAADdCIAA3QkAAN0JgADdCgAA3QpAAN0LAADdDkAA3RKAAN0TAADdE4AA3RQAAN0UgADdFQAA3RWAAN0WAADdFoAA3RrAAN0bgADdHEAA3R0AAN0dwADdHoAA3R9AAN0gAADdIMAA3SFAAN0xAADdMYAA3TIAAN0ygADdM0AA3TOAAN0zwADdNAAA3TRAAN00wADdNUAA3TWAAN01wADdNkAA3TaAAN1GQADdRsAA3UdAAN1HwADdSIAA3UjAAN1JAADdSUAA3UmAAN1KAADdSoAA3UrAAN1LAADdS4AA3UvAAN1bgADdXAAA3VzAAN1dQADdXgAA3V5AAN1egADdXsAA3V8AAN1fgADdYAAA3WBAAN1ggADdYQAA3WFAAN1kgADdZMAA3WUAAN1lgADddUAA3XXAAN12QADddsAA3XeAAN13wADdeAAA3XhAAN14gADdeQAA3XmAAN15wADdegAA3XqAAN16wADdioAA3YsAAN2LgADdjAAA3YzAAN2NAADdjUAA3Y2AAN2NwADdjkAA3Y7AAN2PAADdj0AA3Y/AAN2QAADdn8AA3aBAAN2gwADdoUAA3aIAAN2iQADdooAA3aLAAN2jAADdo4AA3aQAAN2kQADdpIAA3aUAAN2lQADdtQAA3bWAAN22AADdtoAA3bdAAN23gADdt8AA3bgAAN24QADduMAA3blAAN25gADducAA3bpAAN26gADdykAA3crAAN3LQADdy8AA3cyAAN3MwADdzQAA3c1AAN3NgADdzgAA3c6AAN3OwADdzwAA3c+AAN3PwADd2QAA3eIAAN3rwADd9MAA3fWAAN32AADd9oAA3fcAAN33gADd+AAA3fhAAN35AADd/EAA3gAAAN4AgADeAQAA3gGAAN4CAADeAoAA3gMAAN4DgADeB0AA3ggAAN4IwADeCYAA3gpAAN4LAADeC8AA3gyAAN4NAADeHMAA3h1AAN4dwADeHkAA3h8AAN4fQADeH4AA3h/AAN4gAADeIIAA3iEAAN4hQADeIYAA3iIAAN4iQADeMgAA3jKAAN4zAADeM4AA3jRAAN40gADeNMAA3jUAAN41QADeNcAA3jZAAN42gADeNsAA3jdAAN43gADeR0AA3kfAAN5IQADeSMAA3kmAAN5JwADeSgAA3kpAAN5KgADeSwAA3kuAAN5LwADeTAAA3kyAAN5MwADeXIAA3l0AAN5dgADeXgAA3l7AAN5fAADeX0AA3l+AAN5fwADeYEAA3mDAAN5hAADeYUAA3mHAAN5iAADeccAA3nJAAN5ywADec0AA3nQAAN50QADedIAA3nTAAN51AADedYAA3nYAAN52QADedoAA3ncAAN53QADehwAA3oeAAN6IAADeiIAA3olAAN6JgADeicAA3ooAAN6KQADeisAA3otAAN6LgADei8AA3oxAAN6MgADenEAA3pzAAN6dQADencAA3p6AAN6ewADenwAA3p9AAN6fgADeoAAA3qCAAN6gwADeoQAA3qGAAN6hwADetIAA3r1AAN7FQADezUAA3s3AAN7OQADezsAA3s9AAN7QAADe0EAA3tCAAN7RQADe0YAA3tIAAN7SQADe0sAA3tOAAN7TwADe1AAA3tTAAN7VAADe10AA3tqAAN7bwADe3EAA3tzAAN7eAADe3sAA3t+AAN7gAADe6UAA3vJAAN78AADfBQAA3wXAAN8GQADfBsAA3wdAAN8HwADfCEAA3wiAAN8JQADfDIAA3xDAAN8RQADfEcAA3xJAAN8SwADfE0AA3xPAAN8UQADfFMAA3xkAAN8ZwADfGoAA3xtAAN8cAADfHMAA3x2AAN8eQADfHwAA3x+AAN8vQADfL8AA3zBAAN8wwADfMYAA3zHAAN8yAADfMkAA3zKAAN8zAADfM4AA3zPAAN80AADfNIAA3zTAAN9EgADfRQAA30WAAN9GAADfRsAA30cAAN9HQADfR4AA30fAAN9IQADfSMAA30kAAN9JQADfScAA30oAAN9ZwADfWkAA31sAAN9bgADfXEAA31yAAN9cwADfXQAA311AAN9dwADfXkAA316AAN9ewADfX0AA31+AAN9iwADfYwAA32NAAN9jwADfc4AA33QAAN90gADfdQAA33XAAN92AADfdkAA33aAAN92wADfd0AA33fAAN94AADfeEAA33jAAN95AADfiMAA34lAAN+JwADfikAA34sAAN+LQADfi4AA34vAAN+MAADfjIAA340AAN+NQADfjYAA344AAN+OQADfngAA356AAN+fAADfn4AA36BAAN+ggADfoMAA36EAAN+hQADfocAA36JAAN+igADfosAA36NAAN+jgADfs0AA37PAAN+0QADftMAA37WAAN+1wADftgAA37ZAAN+2gADftwAA37eAAN+3wADfuAAA37iAAN+4wADfyIAA38kAAN/JgADfygAA38rAAN/LAADfy0AA38uAAN/LwADfzEAA38zAAN/NAADfzUAA383AAN/OAADf10AA3+BAAN/qAADf8wAA3/PAAN/0QADf9MAA3/VAAN/1wADf9kAA3/aAAN/3QADf+oAA3/5AAN/+wADf/0AA3//AAOAAQADgAMAA4AFAAOABwADgBYAA4AZAAOAHAADgB8AA4AiAAOAJQADgCgAA4ArAAOALQADgGwAA4BuAAOAcAADgHIAA4B1AAOAdgADgHcAA4B4AAOAeQADgHsAA4B9AAOAfgADgH8AA4CBAAOAggADgMEAA4DDAAOAxQADgMcAA4DKAAOAywADgMwAA4DNAAOAzgADgNAAA4DSAAOA0wADgNQAA4DWAAOA1wADgRYAA4EYAAOBGgADgRwAA4EfAAOBIAADgSEAA4EiAAOBIwADgSUAA4EnAAOBKAADgSkAA4ErAAOBLAADgWsAA4FtAAOBcAADgXIAA4F1AAOBdgADgXcAA4F4AAOBeQADgXsAA4F9AAOBfgADgX8AA4GBAAOBggADgcEAA4HDAAOBxQADgccAA4HKAAOBywADgcwAA4HNAAOBzgADgdAAA4HSAAOB0wADgdQAA4HWAAOB1wADghYAA4IYAAOCGgADghwAA4IfAAOCIAADgiEAA4IiAAOCIwADgiUAA4InAAOCKAADgikAA4IrAAOCLAADgmsAA4JtAAOCbwADgnEAA4J0AAOCdQADgnYAA4J3AAOCeAADgnoAA4J8AAOCfQADgn4AA4KAAAOCgQADgswAA4LvAAODDwADgy8AA4MxAAODMwADgzUAA4M3AAODOgADgzsAA4M8AAODPwADg0AAA4NCAAODQwADg0UAA4NIAAODSQADg0oAA4NNAAODTgADg1MAA4NgAAODZQADg2cAA4NpAAODbgADg3EAA4N0AAODdgADg5sAA4O/AAOD5gADhAoAA4QNAAOEDwADhBEAA4QTAAOEFQADhBcAA4QYAAOEGwADhCgAA4Q5AAOEOwADhD0AA4Q/AAOEQQADhEMAA4RFAAOERwADhEkAA4RaAAOEXQADhGAAA4RjAAOEZgADhGkAA4RsAAOEbwADhHIAA4R0AAOEswADhLUAA4S3AAOEuQADhLwAA4S9AAOEvgADhL8AA4TAAAOEwgADhMQAA4TFAAOExgADhMgAA4TJAAOFCAADhQoAA4UMAAOFDgADhREAA4USAAOFEwADhRQAA4UVAAOFFwADhRkAA4UaAAOFGwADhR0AA4UeAAOFXQADhV8AA4ViAAOFZAADhWcAA4VoAAOFaQADhWoAA4VrAAOFbQADhW8AA4VwAAOFcQADhXMAA4V0AAOFgQADhYIAA4WDAAOFhQADhcQAA4XGAAOFyAADhcoAA4XNAAOFzgADhc8AA4XQAAOF0QADhdMAA4XVAAOF1gADhdcAA4XZAAOF2gADhhkAA4YbAAOGHQADhh8AA4YiAAOGIwADhiQAA4YlAAOGJgADhigAA4YqAAOGKwADhiwAA4YuAAOGLwADhm4AA4ZwAAOGcgADhnQAA4Z3AAOGeAADhnkAA4Z6AAOGewADhn0AA4Z/AAOGgAADhoEAA4aDAAOGhAADhsMAA4bFAAOGxwADhskAA4bMAAOGzQADhs4AA4bPAAOG0AADhtIAA4bUAAOG1QADhtYAA4bYAAOG2QADhxgAA4caAAOHHAADhx4AA4chAAOHIgADhyMAA4ckAAOHJQADhycAA4cpAAOHKgADhysAA4ctAAOHLgADh1MAA4d3AAOHngADh8IAA4fFAAOHxwADh8kAA4fLAAOHzQADh88AA4fQAAOH0wADh+AAA4fvAAOH8QADh/MAA4f1AAOH9wADh/kAA4f7AAOH/QADiAwAA4gPAAOIEgADiBUAA4gYAAOIGwADiB4AA4ghAAOIIwADiGIAA4hkAAOIZgADiGgAA4hrAAOIbAADiG0AA4huAAOIbwADiHEAA4hzAAOIdAADiHUAA4h3AAOIeAADiLcAA4i5AAOIuwADiL0AA4jAAAOIwQADiMIAA4jDAAOIxAADiMYAA4jIAAOIyQADiMoAA4jMAAOIzQADiQwAA4kOAAOJEAADiRIAA4kVAAOJFgADiRcAA4kYAAOJGQADiRsAA4kdAAOJHgADiR8AA4khAAOJIgADiWEAA4ljAAOJZgADiWgAA4lrAAOJbAADiW0AA4luAAOJbwADiXEAA4lzAAOJdAADiXUAA4l3AAOJeAADibcAA4m5AAOJuwADib0AA4nAAAOJwQADicIAA4nDAAOJxAADicYAA4nIAAOJyQADicoAA4nMAAOJzQADigwAA4oOAAOKEAADihIAA4oVAAOKFgADihcAA4oYAAOKGQADihsAA4odAAOKHgADih8AA4ohAAOKIgADimEAA4pjAAOKZQADimcAA4pqAAOKawADimwAA4ptAAOKbgADinAAA4pyAAOKcwADinQAA4p2AAOKdwADisIAA4rlAAOLBQADiyUAA4snAAOLKQADiysAA4stAAOLMAADizEAA4syAAOLNQADizYAA4s4AAOLOQADizsAA4s+AAOLPwADi0AAA4tDAAOLRAADi0kAA4tWAAOLWwADi10AA4tfAAOLZAADi2cAA4tqAAOLbAADi5EAA4u1AAOL3AADjAAAA4wDAAOMBQADjAcAA4wJAAOMCwADjA0AA4wOAAOMEQADjB4AA4wvAAOMMQADjDMAA4w1AAOMNwADjDkAA4w7AAOMPQADjD8AA4xQAAOMUwADjFYAA4xZAAOMXAADjF8AA4xiAAOMZQADjGgAA4xqAAOMqQADjKsAA4ytAAOMrwADjLIAA4yzAAOMtAADjLUAA4y2AAOMuAADjLoAA4y7AAOMvAADjL4AA4y/AAOM/gADjQAAA40CAAONBAADjQcAA40IAAONCQADjQoAA40LAAONDQADjQ8AA40QAAONEQADjRMAA40UAAONUwADjVUAA41YAAONWgADjV0AA41eAAONXwADjWAAA41hAAONYwADjWUAA41mAAONZwADjWkAA41qAAONdwADjXgAA415AAONewADjboAA428AAONvgADjcAAA43DAAONxAADjcUAA43GAAONxwADjckAA43LAAONzAADjc0AA43PAAON0AADjg8AA44RAAOOEwADjhUAA44YAAOOGQADjhoAA44bAAOOHAADjh4AA44gAAOOIQADjiIAA44kAAOOJQADjmQAA45mAAOOaAADjmoAA45tAAOObgADjm8AA45wAAOOcQADjnMAA451AAOOdgADjncAA455AAOOegADjrkAA467AAOOvQADjr8AA47CAAOOwwADjsQAA47FAAOOxgADjsgAA47KAAOOywADjswAA47OAAOOzwADjw4AA48QAAOPEgADjxQAA48XAAOPGAADjxkAA48aAAOPGwADjx0AA48fAAOPIAADjyEAA48jAAOPJAADj0kAA49tAAOPlAADj7gAA4+7AAOPvQADj78AA4/BAAOPwwADj8UAA4/GAAOPyQADj9YAA4/lAAOP5wADj+kAA4/rAAOP7QADj+8AA4/xAAOP8wADkAIAA5AFAAOQCAADkAsAA5AOAAOQEQADkBQAA5AXAAOQGQADkFgAA5BaAAOQXAADkF4AA5BhAAOQYgADkGMAA5BkAAOQZQADkGcAA5BpAAOQagADkGsAA5BtAAOQbgADkK0AA5CvAAOQsQADkLMAA5C2AAOQtwADkLgAA5C5AAOQugADkLwAA5C+AAOQvwADkMAAA5DCAAOQwwADkQIAA5EEAAORBgADkQgAA5ELAAORDAADkQ0AA5EOAAORDwADkREAA5ETAAORFAADkRUAA5EXAAORGAADkVcAA5FZAAORWwADkV0AA5FgAAORYQADkWIAA5FjAAORZAADkWYAA5FoAAORaQADkWoAA5FsAAORbQADkawAA5GuAAORsAADkbIAA5G1AAORtgADkbcAA5G4AAORuQADkbsAA5G9AAORvgADkb8AA5HBAAORwgADkgEAA5IDAAOSBQADkgcAA5IKAAOSCwADkgwAA5INAAOSDgADkhAAA5ISAAOSEwADkhQAA5IWAAOSFwADklYAA5JYAAOSWgADklwAA5JfAAOSYAADkmEAA5JiAAOSYwADkmUAA5JnAAOSaAADkmkAA5JrAAOSbAADkrcAA5LaAAOS+gADkxoAA5McAAOTHgADkyAAA5MiAAOTJQADkyYAA5MnAAOTKgADkysAA5MtAAOTLgADkzAAA5MzAAOTNAADkzUAA5M4AAOTOQADkz4AA5NLAAOTUAADk1IAA5NUAAOTWQADk1wAA5NfAAOTYQADk4YAA5OqAAOT0QADk/UAA5P4AAOT+gADk/wAA5P+AAOUAAADlAIAA5QDAAOUBgADlBMAA5QkAAOUJgADlCgAA5QqAAOULAADlC4AA5QwAAOUMgADlDQAA5RFAAOUSAADlEsAA5ROAAOUUQADlFQAA5RXAAOUWgADlF0AA5RfAAOUngADlKAAA5SiAAOUpAADlKcAA5SoAAOUqQADlKoAA5SrAAOUrQADlK8AA5SwAAOUsQADlLMAA5S0AAOU8wADlPUAA5T3AAOU+QADlPwAA5T9AAOU/gADlP8AA5UAAAOVAgADlQQAA5UFAAOVBgADlQgAA5UJAAOVSAADlUoAA5VNAAOVTwADlVIAA5VTAAOVVAADlVUAA5VWAAOVWAADlVoAA5VbAAOVXAADlV4AA5VfAAOVbAADlW0AA5VuAAOVcAADla8AA5WxAAOVswADlbUAA5W4AAOVuQADlboAA5W7AAOVvAADlb4AA5XAAAOVwQADlcIAA5XEAAOVxQADlgQAA5YGAAOWCAADlgoAA5YNAAOWDgADlg8AA5YQAAOWEQADlhMAA5YVAAOWFgADlhcAA5YZAAOWGgADllkAA5ZbAAOWXQADll8AA5ZiAAOWYwADlmQAA5ZlAAOWZgADlmgAA5ZqAAOWawADlmwAA5ZuAAOWbwADlq4AA5awAAOWsgADlrQAA5a3AAOWuAADlrkAA5a6AAOWuwADlr0AA5a/AAOWwAADlsEAA5bDAAOWxAADlwMAA5cFAAOXBwADlwkAA5cMAAOXDQADlw4AA5cPAAOXEAADlxIAA5cUAAOXFQADlxYAA5cYAAOXGQADlz4AA5diAAOXiQADl60AA5ewAAOXsgADl7QAA5e2AAOXuAADl7oAA5e7AAOXvgADl8sAA5faAAOX3AADl94AA5fgAAOX4gADl+QAA5fmAAOX6AADl/cAA5f6AAOX/QADmAAAA5gDAAOYBgADmAkAA5gMAAOYDgADmE0AA5hPAAOYUQADmFMAA5hWAAOYVwADmFgAA5hZAAOYWgADmFwAA5heAAOYXwADmGAAA5hiAAOYYwADmKIAA5ikAAOYpgADmKgAA5irAAOYrAADmK0AA5iuAAOYrwADmLEAA5izAAOYtAADmLUAA5i3AAOYuAADmPcAA5j5AAOY+wADmP0AA5kAAAOZAQADmQIAA5kDAAOZBAADmQYAA5kIAAOZCQADmQoAA5kMAAOZDQADmUwAA5lOAAOZUQADmVMAA5lWAAOZVwADmVgAA5lZAAOZWgADmVwAA5leAAOZXwADmWAAA5liAAOZYwADmaIAA5mkAAOZpgADmagAA5mrAAOZrAADma0AA5muAAOZrwADmbEAA5mzAAOZtAADmbUAA5m3AAOZuAADmfcAA5n5AAOZ+wADmf0AA5oAAAOaAQADmgIAA5oDAAOaBAADmgYAA5oIAAOaCQADmgoAA5oMAAOaDQADmkwAA5pOAAOaUAADmlIAA5pVAAOaVgADmlcAA5pYAAOaWQADmlsAA5pdAAOaXgADml8AA5phAAOaYgADmq0AA5rQAAOa8AADmxAAA5sSAAObFAADmxYAA5sYAAObGwADmxwAA5sdAAObIAADmyEAA5sjAAObJAADmyYAA5spAAObKgADmysAA5suAAObLwADmzQAA5tBAAObRgADm0gAA5tKAAObTwADm1IAA5tVAAObVwADm3wAA5ugAAObxwADm+sAA5vuAAOb8AADm/IAA5v0AAOb9gADm/gAA5v5AAOb/AADnAkAA5waAAOcHAADnB4AA5wgAAOcIgADnCQAA5wmAAOcKAADnCoAA5w7AAOcPgADnEEAA5xEAAOcRwADnEoAA5xNAAOcUAADnFMAA5xVAAOclAADnJYAA5yYAAOcmgADnJ0AA5yeAAOcnwADnKAAA5yhAAOcowADnKUAA5ymAAOcpwADnKkAA5yqAAOc6QADnOsAA5ztAAOc7wADnPIAA5zzAAOc9AADnPUAA5z2AAOc+AADnPoAA5z7AAOc/AADnP4AA5z/AAOdPgADnUAAA51DAAOdRQADnUgAA51JAAOdSgADnUsAA51MAAOdTgADnVAAA51RAAOdUgADnVQAA51VAAOdYgADnWMAA51kAAOdZgADnaUAA52nAAOdqQADnasAA52uAAOdrwADnbAAA52xAAOdsgADnbQAA522AAOdtwADnbgAA526AAOduwADnfoAA538AAOd/gADngAAA54DAAOeBAADngUAA54GAAOeBwADngkAA54LAAOeDAADng0AA54PAAOeEAADnk8AA55RAAOeUwADnlUAA55YAAOeWQADnloAA55bAAOeXAADnl4AA55gAAOeYQADnmIAA55kAAOeZQADnqQAA56mAAOeqAADnqoAA56tAAOergADnq8AA56wAAOesQADnrMAA561AAOetgADnrcAA565AAOeugADnvkAA577AAOe/QADnv8AA58CAAOfAwADnwQAA58FAAOfBgADnwgAA58KAAOfCwADnwwAA58OAAOfDwADnzQAA59YAAOffwADn6MAA5+mAAOfqAADn6oAA5+sAAOfrgADn7AAA5+xAAOftAADn8EAA5/QAAOf0gADn9QAA5/WAAOf2AADn9oAA5/cAAOf3gADn+0AA5/wAAOf8wADn/YAA5/5AAOf/AADn/8AA6ACAAOgBAADoEMAA6BFAAOgRwADoEkAA6BMAAOgTQADoE4AA6BPAAOgUAADoFIAA6BUAAOgVQADoFYAA6BYAAOgWQADoJgAA6CaAAOgnAADoJ4AA6ChAAOgogADoKMAA6CkAAOgpQADoKcAA6CpAAOgqgADoKsAA6CtAAOgrgADoO0AA6DvAAOg8QADoPMAA6D2AAOg9wADoPgAA6D5AAOg+gADoPwAA6D+AAOg/wADoQAAA6ECAAOhAwADoUIAA6FEAAOhRgADoUgAA6FLAAOhTAADoU0AA6FOAAOhTwADoVEAA6FTAAOhVAADoVUAA6FXAAOhWAADoZcAA6GZAAOhmwADoZ0AA6GgAAOhoQADoaIAA6GjAAOhpAADoaYAA6GoAAOhqQADoaoAA6GsAAOhrQADoewAA6HuAAOh8AADofIAA6H1AAOh9gADofcAA6H4AAOh+QADofsAA6H9AAOh/gADof8AA6IBAAOiAgADokEAA6JDAAOiRQADokcAA6JKAAOiSwADokwAA6JNAAOiTgADolAAA6JSAAOiUwADolQAA6JWAAOiVwADomAAA6JhAAOiYwADoqYAA6LKAAOi7gADoxEAA6M4AAOjWAADo38AA6OmAAOjxgADo+oAA6QOAAOkEAADpBMAA6QVAAOkFwADpBkAA6QcAAOkHwADpCEAA6QjAAOkJgADpCgAA6QqAAOkLQADpDAAA6QxAAOkNgADpEMAA6RGAAOkSAADpEsAA6ROAAOkUAADpHUAA6SZAAOkwAADpOQAA6TnAAOk6QADpOsAA6TtAAOk7wADpPEAA6TyAAOk9QADpQIAA6UTAAOlFQADpRcAA6UZAAOlGwADpR0AA6UfAAOlIQADpSMAA6U0AAOlNwADpToAA6U9AAOlQAADpUMAA6VGAAOlSQADpUwAA6VOAAOljQADpY8AA6WSAAOllAADpZcAA6WYAAOlmQADpZoAA6WbAAOlnQADpZ8AA6WgAAOloQADpaMAA6WkAAOlrQADpa4AA6WwAAOl7wADpfEAA6XzAAOl9QADpfgAA6X5AAOl+gADpfsAA6X8AAOl/gADpgAAA6YBAAOmAgADpgQAA6YFAAOmRAADpkYAA6ZIAAOmSgADpk0AA6ZOAAOmTwADplAAA6ZRAAOmUwADplUAA6ZWAAOmVwADplkAA6ZaAAOmmQADppsAA6aeAAOmoAADpqMAA6akAAOmpQADpqYAA6anAAOmqQADpqsAA6asAAOmrQADpq8AA6awAAOmuQADproAA6a8AAOm+wADpv0AA6b/AAOnAQADpwQAA6cFAAOnBgADpwcAA6cIAAOnCgADpwwAA6cNAAOnDgADpxAAA6cRAAOnUAADp1IAA6dVAAOnVwADp1oAA6dbAAOnXAADp10AA6deAAOnYAADp2IAA6djAAOnZAADp2YAA6dnAAOndAADp3UAA6d2AAOneAADp7cAA6e5AAOnuwADp70AA6fAAAOnwQADp8IAA6fDAAOnxAADp8YAA6fIAAOnyQADp8oAA6fMAAOnzQADqAwAA6gOAAOoEQADqBMAA6gWAAOoFwADqBgAA6gZAAOoGgADqBwAA6geAAOoHwADqCAAA6giAAOoIwADqC8AA6g8AAOoPwADqEIAA6hFAAOoSAADqEoAA6hRAAOonAADqL8AA6jfAAOo/wADqQEAA6kDAAOpBQADqQcAA6kKAAOpCwADqQwAA6kPAAOpEAADqRIAA6kTAAOpFQADqRgAA6kZAAOpGgADqR0AA6keAAOpJwADqTQAA6k5AAOpOwADqT0AA6lCAAOpRQADqUgAA6lKAAOpbwADqZMAA6m6AAOp3gADqeEAA6njAAOp5QADqecAA6npAAOp6wADqewAA6nvAAOp/AADqg0AA6oPAAOqEQADqhMAA6oVAAOqFwADqhkAA6obAAOqHQADqi4AA6oxAAOqNAADqjcAA6o6AAOqPQADqkAAA6pDAAOqRgADqkgAA6qHAAOqiQADqosAA6qNAAOqkAADqpEAA6qSAAOqkwADqpQAA6qWAAOqmAADqpkAA6qaAAOqnAADqp0AA6rcAAOq3gADquAAA6riAAOq5QADquYAA6rnAAOq6AADqukAA6rrAAOq7QADqu4AA6rvAAOq8QADqvIAA6sxAAOrMwADqzYAA6s4AAOrOwADqzwAA6s9AAOrPgADqz8AA6tBAAOrQwADq0QAA6tFAAOrRwADq0gAA6tVAAOrVgADq1cAA6tZAAOrmAADq5oAA6ucAAOrngADq6EAA6uiAAOrowADq6QAA6ulAAOrpwADq6kAA6uqAAOrqwADq60AA6uuAAOr7QADq+8AA6vxAAOr8wADq/YAA6v3AAOr+AADq/kAA6v6AAOr/AADq/4AA6v/AAOsAAADrAIAA6wDAAOsQgADrEQAA6xGAAOsSAADrEsAA6xMAAOsTQADrE4AA6xPAAOsUQADrFMAA6xUAAOsVQADrFcAA6xYAAOslwADrJkAA6ybAAOsnQADrKAAA6yhAAOsogADrKMAA6ykAAOspgADrKgAA6ypAAOsqgADrKwAA6ytAAOs7AADrO4AA6zwAAOs8gADrPUAA6z2AAOs9wADrPgAA6z5AAOs+wADrP0AA6z+AAOs/wADrQEAA60CAAOtJwADrUsAA61yAAOtlgADrZkAA62bAAOtnQADrZ8AA62hAAOtowADraQAA62nAAOttAADrcMAA63FAAOtxwADrckAA63LAAOtzQADrc8AA63RAAOt4AADreMAA63mAAOt6QADrewAA63vAAOt8gADrfUAA633AAOuNgADrjgAA646AAOuPAADrj8AA65AAAOuQQADrkIAA65DAAOuRQADrkcAA65IAAOuSQADrksAA65MAAOuiwADro0AA66PAAOukQADrpQAA66VAAOulgADrpcAA66YAAOumgADrpwAA66dAAOungADrqAAA66hAAOu4AADruIAA67kAAOu5gADrukAA67qAAOu6wADruwAA67tAAOu7wADrvEAA67yAAOu8wADrvUAA672AAOvNQADrzcAA685AAOvOwADrz4AA68/AAOvQAADr0EAA69CAAOvRAADr0YAA69HAAOvSAADr0oAA69LAAOvigADr4wAA6+OAAOvkAADr5MAA6+UAAOvlQADr5YAA6+XAAOvmQADr5sAA6+cAAOvnQADr58AA6+gAAOv3wADr+EAA6/jAAOv5QADr+gAA6/pAAOv6gADr+sAA6/sAAOv7gADr/AAA6/xAAOv8gADr/QAA6/1AAOwNAADsDYAA7A4AAOwOgADsD0AA7A+AAOwPwADsEAAA7BBAAOwQwADsEUAA7BGAAOwRwADsEkAA7BKAAOwUwADsFQAA7BWAAOwYwADsGQAA7BlAAOwZwADsHQAA7B1AAOwdgADsHgAA7CFAAOwhgADsIcAA7CJAAOwkgADsKEAA7CuAAOwvQADsM8AA7DjAAOw+gADsQwAA7EVAAOxFgADsRgAA7ElAAOxJgADsScAA7EpAAOxKgADsTMAA7E9AAOxRAADsUwAA7FeAAOxYwADsWgAAAAAAAAEAgAAAAAAAI5RAAAAAAAAAAAAAAAAAAOxag== + + + + + taskRunID + + + + taskHRef + + + + userConsented + + + + taskClassName + + + + phoneNumber + + + + 1 + results + + + + wakeUpTime + + + + APCMedTrackerMedication + Undefined + 4 + APCMedTrackerMedication + 1 + + + + + + 1 + color + + + + APCMedTrackerDailyDosageRecord + Undefined + 12 + APCMedTrackerDailyDosageRecord + 1 + + + + + \ No newline at end of file diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.h index e85ad2f1..b5499581 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.h +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.h @@ -48,7 +48,6 @@ #import "APCTask+AddOn.h" #import "APCTask+Bridge.h" #import "APCSchedule+AddOn.h" -#import "APCSchedule+Bridge.h" #import "APCScheduledTask+AddOn.h" #import "APCDBStatus+AddOn.h" diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/.xccurrentversion b/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/.xccurrentversion index 0363cbb9..7955b3e1 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/.xccurrentversion +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - APCModel 4.xcdatamodel + APCModel 6.xcdatamodel diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/APCModel 5.xcdatamodel/contents b/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/APCModel 5.xcdatamodel/contents new file mode 100644 index 00000000..ffe3c128 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/APCModel 5.xcdatamodel/contents @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/APCModel 6.xcdatamodel/contents b/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/APCModel 6.xcdatamodel/contents new file mode 100644 index 00000000..3a4fa088 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCModel.xcdatamodeld/APCModel 6.xcdatamodel/contents @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCPotentialScheduledTask.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCPotentialScheduledTask.h new file mode 100644 index 00000000..4be3bac6 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCPotentialScheduledTask.h @@ -0,0 +1,56 @@ +// +// APCPotentialTask.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import +@class APCSchedule; +@class APCTask; + + +/** + In the Activities view, serves as a placeholder for a task + that the user *could* do, but has not yet done. Contains + enough information to generate a real user-data task + (a ScheduledTask) at a specific date and time, according + to the Schedule for that Task. + */ +@interface APCPotentialTask : NSObject + +@property (nonatomic, strong) APCSchedule *schedule; +@property (nonatomic, strong) APCTask *task; +@property (nonatomic, strong) NSDate *scheduledAppearanceDate; + +- (instancetype) initWithTask: (APCTask *) task + onSchedule: (APCSchedule *) schedule + appearingAtDateAndTime: (NSDate *) scheduledAppearanceDate; + +@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCPotentialScheduledTask.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCPotentialScheduledTask.m new file mode 100644 index 00000000..52f6c94b --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCPotentialScheduledTask.m @@ -0,0 +1,73 @@ +// +// APCPotentialTask.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCPotentialScheduledTask.h" + +@interface APCPotentialTask () +- (instancetype) init NS_DESIGNATED_INITIALIZER; +@end + +@implementation APCPotentialTask + +- (instancetype) init +{ + self = [super init]; + + if (self) + { + _schedule = nil; + _task = nil; + _scheduledAppearanceDate = nil; + } + + return self; +} + +- (instancetype) initWithTask: (APCTask *) task + onSchedule: (APCSchedule *) schedule + appearingAtDateAndTime: (NSDate *) scheduledAppearanceDate +{ + self = [self init]; + + if (self) + { + _schedule = schedule; + _task = task; + _scheduledAppearanceDate = scheduledAppearanceDate; + } + + return self; +} + + +@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+AddOn.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+AddOn.h index 9900bf17..56c62d3a 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+AddOn.h +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+AddOn.h @@ -34,16 +34,61 @@ #import "APCSchedule.h" #import "APCScheduleExpression.h" + +@class APCTopLevelScheduleEnumerator; +@class APCTask; +@class APCDateRange; + + + +/** + Describes the enumeration style of a particular Schedule. + Also determines which techniques we employ when enumerating + the date/time values represented by that Schedule. + */ +typedef enum : NSUInteger { + + /** The schedule specifies a single occurrence. */ + APCScheduleRecurrenceStyleExactlyOnce, + + /** The schedule recurs according to the rules of + a Unix-style cron expression. */ + APCScheduleRecurrenceStyleCronExpression, + + /** The schedule recurs according to a (human-readable) + ISO 8601 time interval, like "every 90 days," and + an optional list of times in a given day. */ + APCScheduleRecurrenceStyleInterval, + +} APCScheduleRecurrenceStyle; + + +/** + Used in the very occasional place we need to know one + specific value of the scheduleType field outside this + category. For the most part, we can get more and + better information from schedule.recurrenceStyle. + */ +FOUNDATION_EXPORT NSString * const kAPCScheduleTypeValueOneTimeSchedule; + + + @interface APCSchedule (AddOn) -//Synchronous Method Call -+ (void) createSchedulesFromJSON: (NSArray*) schedulesArray inContext: (NSManagedObjectContext*) context; -+ (void) updateSchedulesFromJSON: (NSArray *)schedulesArray inContext:(NSManagedObjectContext *)context; +@property (readonly) APCScheduleExpression * scheduleExpression; +@property (readonly) APCScheduleRecurrenceStyle recurrenceStyle; +@property (readonly) NSString *firstTaskTitle; +@property (readonly) NSString *firstTaskId; +@property (readonly) BOOL isOneTimeSchedule; +@property (readonly) BOOL isRecurringCronSchedule; +@property (readonly) BOOL isRecurringIntervalSchedule; + +- (APCTopLevelScheduleEnumerator *) enumeratorFromDate: (NSDate *) startDate + toDate: (NSDate *) endDate; -- (BOOL) isOneTimeSchedule; -@property (nonatomic, readonly) APCScheduleExpression * scheduleExpression; -- (NSTimeInterval) expiresInterval; +- (APCTopLevelScheduleEnumerator *) enumeratorOverDateRange: (APCDateRange *) dateRange; -+ (APCSchedule*) cannedScheduleForTaskID: (NSString*) taskID inContext:(NSManagedObjectContext *)context; +- (NSComparisonResult) compareWithSchedule: (APCSchedule *) otherSchedule; @end + diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+AddOn.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+AddOn.m index 70b5cc8e..41825484 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+AddOn.m +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+AddOn.m @@ -33,115 +33,189 @@ #import "APCSchedule+AddOn.h" #import "APCModel.h" -#import "APCLog.h" -#import "NSDate+Helper.h" +#import "APCTopLevelScheduleEnumerator.h" +#import "APCTask+AddOn.h" +#import "APCDateRange.h" -static NSString * const kScheduleShouldRemindKey = @"shouldRemind"; -static NSString * const kScheduleReminderOffsetKey = @"reminderOffset"; + +static NSString * const kScheduleShouldRemindKey = @"shouldRemind"; +static NSString * const kScheduleReminderOffsetKey = @"reminderOffset"; static NSString * const kScheduleReminderMessageKey = @"reminderMessage"; -static NSString * const kTaskIDKey = @"taskID"; -static NSString * const kScheduleStringKey = @"scheduleString"; -static NSString * const kScheduleTypeKey = @"scheduleType"; -static NSString * const kRemoteUpdatable = @"remoteUpdatable"; -static NSString * const kExpires = @"expires"; +static NSString * const kTaskIDKey = @"taskID"; +static NSString * const kScheduleStringKey = @"scheduleString"; +static NSString * const kScheduleTypeKey = @"scheduleType"; + +static NSString * const kExpires = @"expires"; +static NSString * const kScheduleDelayKey = @"delay"; +static NSString * const kScheduleNotesKey = @"notes"; + +NSString * const kAPCScheduleTypeValueOneTimeSchedule = @"once"; + -static NSString * const kOneTimeSchedule = @"once"; @implementation APCSchedule (AddOn) -+(void)createSchedulesFromJSON:(NSArray *)schedulesArray inContext:(NSManagedObjectContext *)context +- (APCScheduleExpression *) scheduleExpression { - [context performBlockAndWait:^{ - for(NSDictionary *scheduleDict in schedulesArray) { - - APCSchedule * schedule = [APCSchedule newObjectForContext:context]; - - schedule.scheduleType = [scheduleDict objectForKey:kScheduleTypeKey]; - schedule.scheduleString = [scheduleDict objectForKey:kScheduleStringKey]; - schedule.taskID = scheduleDict[kTaskIDKey]; - schedule.remoteUpdatable = scheduleDict[kRemoteUpdatable]; - schedule.expires = scheduleDict[kExpires]; - - schedule.shouldRemind = [scheduleDict objectForKey:kScheduleShouldRemindKey]; - schedule.reminderOffset = [scheduleDict objectForKey:kScheduleReminderOffsetKey]; - schedule.reminderMessage = [scheduleDict objectForKey:kScheduleReminderMessageKey]; - - NSError * error; - [schedule saveToPersistentStore:&error]; - APCLogError2(error); - } - }]; + return [[APCScheduleExpression alloc] initWithExpression:self.scheduleString timeZero:0]; +} + ++ (NSString *) safeScheduleIdFromDictionaryValue: (id) dictionaryValue +{ + NSString *result = nil; + + result = [self safeStringFromDictionaryValue: dictionaryValue + allowNil: YES // schedule IDs are optional -- we're phasing them in. + trimWhitespace: YES]; + + return result; } -+ (void) updateSchedulesFromJSON: (NSArray *)schedulesArray inContext:(NSManagedObjectContext *)context ++ (NSString *) safeStringFromDictionaryValue: (id) dictionaryValue + allowNil: (BOOL) shouldAllowNil + trimWhitespace: (BOOL) shouldTrimWhitespace { - [context performBlockAndWait:^{ - for(NSDictionary *scheduleDict in schedulesArray) { - - APCSchedule * schedule = [APCSchedule cannedScheduleForTaskID:scheduleDict[kTaskIDKey] inContext:context]; - if (schedule == nil) { - schedule = [APCSchedule newObjectForContext:context]; - schedule.taskID = scheduleDict[kTaskIDKey]; - } - - schedule.scheduleType = [scheduleDict objectForKey:kScheduleTypeKey]; - schedule.scheduleString = [scheduleDict objectForKey:kScheduleStringKey]; - schedule.taskID = scheduleDict[kTaskIDKey]; - schedule.remoteUpdatable = scheduleDict[kRemoteUpdatable]; - schedule.expires = scheduleDict[kExpires]; - - schedule.shouldRemind = [scheduleDict objectForKey:kScheduleShouldRemindKey]; - schedule.reminderOffset = [scheduleDict objectForKey:kScheduleReminderOffsetKey]; - schedule.reminderMessage = [scheduleDict objectForKey:kScheduleReminderMessageKey]; - - NSError * error; - [schedule saveToPersistentStore:&error]; - APCLogError2(error); + NSString *result = nil; + + if ([dictionaryValue isKindOfClass: [NSString class]]) + { + result = dictionaryValue; + + if (result == nil && ! shouldAllowNil) + { + result = @""; } - }]; + + if (shouldTrimWhitespace) + { + result = [result stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; + } + } + + return result; } -//Returns only local canned schedule -+ (APCSchedule*) cannedScheduleForTaskID: (NSString*) taskID inContext:(NSManagedObjectContext *)context +- (void)awakeFromInsert { - __block APCSchedule * retSchedule; - [context performBlockAndWait:^{ - NSFetchRequest * request = [APCSchedule request]; - request.predicate = [NSPredicate predicateWithFormat:@"taskID == %@ && (remoteUpdatable == %@ || remoteUpdatable == nil)",taskID, @NO]; - NSError * error; - retSchedule = [[context executeFetchRequest:request error:&error]firstObject]; - }]; - return retSchedule; + [super awakeFromInsert]; + [self setPrimitiveValue:[NSDate date] forKey:@"createdAt"]; } -- (BOOL)isOneTimeSchedule +- (void)willSave { - return [self.scheduleType isEqualToString:kOneTimeSchedule]; + [self setPrimitiveValue:[NSDate date] forKey:@"updatedAt"]; } -- (APCScheduleExpression *)scheduleExpression +- (APCTopLevelScheduleEnumerator *) enumeratorFromDate: (NSDate *) startDate + toDate: (NSDate *) endDate { - //TODO: Schedule interval is 0 - return [[APCScheduleExpression alloc] initWithExpression:self.scheduleString timeZero:0]; + APCTopLevelScheduleEnumerator *enumerator = [[APCTopLevelScheduleEnumerator alloc] initWithSchedule: self + fromDate: startDate + toDate: endDate]; + return enumerator; } -- (NSTimeInterval) expiresInterval { - return [NSDate parseISO8601DurationString:self.expires]; +- (APCTopLevelScheduleEnumerator *) enumeratorOverDateRange: (APCDateRange *) dateRange +{ + return [self enumeratorFromDate: dateRange.startDate + toDate: dateRange.endDate]; } -/*********************************************************************************/ -#pragma mark - Life Cycle Methods -/*********************************************************************************/ -- (void)awakeFromInsert +- (APCScheduleRecurrenceStyle) recurrenceStyle { - [super awakeFromInsert]; - [self setPrimitiveValue:[NSDate date] forKey:@"createdAt"]; + APCScheduleRecurrenceStyle style = APCScheduleRecurrenceStyleExactlyOnce; + + if ([self.scheduleType isEqualToString: kAPCScheduleTypeValueOneTimeSchedule]) + { + style = APCScheduleRecurrenceStyleExactlyOnce; + } + + else if (self.interval.length > 0) + { + style = APCScheduleRecurrenceStyleInterval; + } + + else if (self.scheduleString.length > 0) + { + style = APCScheduleRecurrenceStyleCronExpression; + } + + else + { + style = APCScheduleRecurrenceStyleExactlyOnce; + } + + return style; } -- (void)willSave +- (BOOL) isOneTimeSchedule { - [self setPrimitiveValue:[NSDate date] forKey:@"updatedAt"]; + return self.recurrenceStyle == APCScheduleRecurrenceStyleExactlyOnce; +} + +- (BOOL)isRecurringCronSchedule +{ + return self.recurrenceStyle == APCScheduleRecurrenceStyleCronExpression; +} + +- (BOOL) isRecurringIntervalSchedule +{ + return self.recurrenceStyle == APCScheduleRecurrenceStyleInterval; +} + +- (NSString *) firstTaskTitle +{ + NSString *result = nil; + + if (self.tasks.count) + { + APCTask *firstTask = self.tasks.anyObject; + result = firstTask.taskTitle; + } + + return result; +} + +- (NSString *) firstTaskId +{ + NSString *result = nil; + + if (self.tasks.count) + { + APCTask *firstTask = self.tasks.anyObject; + result = firstTask.taskID; + } + + return result; +} + +- (NSComparisonResult) compareWithSchedule: (APCSchedule *) otherSchedule +{ + NSComparisonResult result = NSOrderedSame; + APCTask *oneOfMyTasks = self.tasks.anyObject; + APCTask *oneOfOtherTasks = otherSchedule.tasks.anyObject; + + if (oneOfMyTasks == nil && oneOfOtherTasks == nil) + { + result = NSOrderedSame; + } + else if (oneOfOtherTasks == nil) + { + result = NSOrderedDescending; + } + else if (oneOfMyTasks == nil) + { + result = NSOrderedAscending; + } + else + { + NSArray *plainTasks = @[oneOfMyTasks, oneOfOtherTasks]; + NSArray *sortedTasks = [plainTasks sortedArrayUsingDescriptors: [APCTask defaultSortDescriptors]]; + result = sortedTasks.firstObject == oneOfMyTasks ? NSOrderedAscending : NSOrderedDescending; + } + + return result; } @end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+Bridge.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+Bridge.h deleted file mode 100644 index 3af4df8e..00000000 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+Bridge.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// APCSchedule+Bridge.h -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#import "APCSchedule.h" - -@interface APCSchedule (Bridge) -+ (void) updateSchedulesOnCompletion: (void (^)(NSError * error)) completionBlock; -@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+Bridge.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+Bridge.m deleted file mode 100644 index bbfb2bc7..00000000 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule+Bridge.m +++ /dev/null @@ -1,146 +0,0 @@ -// -// APCSchedule+Bridge.m -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#import "APCSchedule+Bridge.h" -#import "APCAppDelegate.h" -#import "APCTask+AddOn.h" -#import "APCLog.h" -#import "NSManagedObject+APCHelper.h" -#import "SBBGuidCreatedOnVersionHolder+APCAdditions.h" - - -NSString *const kSurveyTaskViewController = @"APCGenericSurveyTaskViewController"; - -@implementation APCSchedule (Bridge) - -+ (BOOL) serverDisabled -{ -#if DEVELOPMENT - return YES; -#else - return ((APCAppDelegate*)[UIApplication sharedApplication].delegate).dataSubstrate.parameters.bypassServer; -#endif -} - -+ (void) updateSchedulesOnCompletion: (void (^)(NSError * error)) completionBlock -{ - if (![self serverDisabled]) { - [SBBComponent(SBBScheduleManager) getSchedulesWithCompletion:^(id schedulesList, NSError *error) { - APCLogError2 (error); - if (!error) { - SBBResourceList *list = (SBBResourceList *)schedulesList; - NSArray * schedules = list.items; - NSManagedObjectContext * context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; - context.parentContext = ((APCAppDelegate*)[UIApplication sharedApplication].delegate).dataSubstrate.persistentContext; - [self clearAllRemoteUpdatableSchedules:context]; - [context performBlockAndWait:^{ - [schedules enumerateObjectsUsingBlock:^(SBBSchedule* schedule, NSUInteger __unused idx, BOOL * __unused stop) { - APCSchedule * apcSchedule = [APCSchedule newObjectForContext:context]; - [self mapSBBSchedule:schedule APCSchedule:apcSchedule]; - NSError * error; - [apcSchedule saveToPersistentStore:&error]; - APCLogError2 (error); - }]; - }]; - } - dispatch_async(dispatch_get_main_queue(), ^{ - if (!error) { - APCLogEventWithData(kNetworkEvent, @{@"event_detail":@"schedule updated"}); - } - if (completionBlock) { - completionBlock(error); - } - }); - }]; - } - else - { - dispatch_async(dispatch_get_main_queue(), ^{ - if (completionBlock) { - completionBlock(nil); - } - }); - } -} - -+ (void) clearAllRemoteUpdatableSchedules: (NSManagedObjectContext*) context -{ - [context performBlockAndWait:^{ - NSFetchRequest * request = [APCSchedule request]; - request.predicate = [NSPredicate predicateWithFormat:@"remoteUpdatable == %@", @(YES)]; - NSError * error; - NSMutableArray * mutableArray = [[context executeFetchRequest:request error:&error] mutableCopy]; - APCLogError2 (error); - APCSchedule * handle = [mutableArray lastObject]; - while (mutableArray.count) { - APCSchedule * schedule = [mutableArray lastObject]; - [mutableArray removeLastObject]; - [context deleteObject:schedule]; - } - [handle saveToPersistentStore:&error]; - APCLogError2 (error); - }]; -} - -+ (void) mapSBBSchedule:(SBBSchedule*) sbbSchedule APCSchedule: (APCSchedule*) apcSchedule -{ - apcSchedule.remoteUpdatable = @(YES); - apcSchedule.scheduleType = sbbSchedule.scheduleType; - apcSchedule.scheduleString = sbbSchedule.cronTrigger; - apcSchedule.expires = sbbSchedule.expires; - apcSchedule.startsOn = sbbSchedule.startsOn; - apcSchedule.endsOn = sbbSchedule.endsOn; - apcSchedule.reminderMessage = sbbSchedule.label; - - SBBActivity * activity = [sbbSchedule.activities firstObject]; - if(activity != nil) { - //APCTask - if ([activity.activityType isEqualToString:@"survey"]) { - APCTask * task = [APCTask taskWithTaskID:activity.survey.uniqueID inContext:apcSchedule.managedObjectContext]; - if (!task) { - task = [APCTask newObjectForContext:apcSchedule.managedObjectContext]; - task.taskID = activity.survey.uniqueID; - task.taskHRef = activity.ref; - task.taskClassName = kSurveyTaskViewController; - } - apcSchedule.taskID = activity.survey.uniqueID; - } - else - { - APCLogError(@"Unknown Activity Type: %@", activity.activityType); - } - } - - -} -@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule.h index 9269b301..525cf539 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule.h +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule.h @@ -1,57 +1,64 @@ -// -// APCSchedule.h -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - +// +// APCSchedule.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + #import #import -@class APCScheduledTask; +@class APCScheduledTask, APCTask; @interface APCSchedule : NSManagedObject @property (nonatomic, retain) NSDate * createdAt; +@property (nonatomic, retain) NSString * delay; +@property (nonatomic, retain) NSDate * effectiveEndDate; +@property (nonatomic, retain) NSDate * effectiveStartDate; @property (nonatomic, retain) NSDate * endsOn; @property (nonatomic, retain) NSString * expires; @property (nonatomic, retain) NSNumber * inActive; +@property (nonatomic, retain) NSString * notes; @property (nonatomic, retain) NSString * reminderMessage; @property (nonatomic, retain) NSNumber * reminderOffset; -@property (nonatomic, retain) NSNumber * remoteUpdatable; +@property (nonatomic, retain) NSNumber * scheduleSource; @property (nonatomic, retain) NSString * scheduleString; @property (nonatomic, retain) NSString * scheduleType; @property (nonatomic, retain) NSNumber * shouldRemind; @property (nonatomic, retain) NSDate * startsOn; -@property (nonatomic, retain) NSString * taskID; @property (nonatomic, retain) NSDate * updatedAt; +@property (nonatomic, retain) NSString * interval; +@property (nonatomic, retain) NSString * timesOfDay; +@property (nonatomic, retain) NSNumber * maxCount; @property (nonatomic, retain) NSSet *scheduledTasks; +@property (nonatomic, retain) NSSet *tasks; @end @interface APCSchedule (CoreDataGeneratedAccessors) @@ -61,4 +68,9 @@ - (void)addScheduledTasks:(NSSet *)values; - (void)removeScheduledTasks:(NSSet *)values; +- (void)addTasksObject:(APCTask *)value; +- (void)removeTasksObject:(APCTask *)value; +- (void)addTasks:(NSSet *)values; +- (void)removeTasks:(NSSet *)values; + @end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule.m index c9577c58..bc45f9c0 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule.m +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCSchedule.m @@ -1,55 +1,63 @@ -// -// APCSchedule.m -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - +// +// APCSchedule.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + #import "APCSchedule.h" #import "APCScheduledTask.h" +#import "APCTask.h" @implementation APCSchedule @dynamic createdAt; +@dynamic delay; +@dynamic effectiveEndDate; +@dynamic effectiveStartDate; @dynamic endsOn; @dynamic expires; @dynamic inActive; +@dynamic notes; @dynamic reminderMessage; @dynamic reminderOffset; -@dynamic remoteUpdatable; +@dynamic scheduleSource; @dynamic scheduleString; @dynamic scheduleType; @dynamic shouldRemind; @dynamic startsOn; -@dynamic taskID; @dynamic updatedAt; +@dynamic interval; +@dynamic timesOfDay; +@dynamic maxCount; @dynamic scheduledTasks; +@dynamic tasks; @end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCScheduledTask+AddOn.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCScheduledTask+AddOn.h index 6579f2e2..eafc4921 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCScheduledTask+AddOn.h +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCScheduledTask+AddOn.h @@ -42,18 +42,8 @@ - (BOOL)removeScheduledTask:(NSError **)taskError; @property (nonatomic, readonly) APCResult* lastResult; - @property (nonatomic, readonly) NSString * completeByDateString; -+ (NSDictionary*) APCActivityVCScheduledTasksInContext: (NSManagedObjectContext*) context; -+ (instancetype) scheduledTaskForStartOnDate: (NSDate *) startOn schedule: (APCSchedule*) schedule inContext: (NSManagedObjectContext*) context; - -+ (NSArray *)allScheduledTasksForDateRange: (APCDateRange*) dateRange completed: (NSNumber*) completed inContext: (NSManagedObjectContext*) context; -/*********************************************************************************/ -#pragma mark - Counts -/*********************************************************************************/ -+ (NSUInteger)countOfAllScheduledTasksTodayInContext: (NSManagedObjectContext*) context; -+ (NSUInteger)countOfAllCompletedTasksTodayInContext: (NSManagedObjectContext*) context; /*********************************************************************************/ #pragma mark - Reminder diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCScheduledTask+AddOn.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCScheduledTask+AddOn.m index 7795a70d..fc9319cf 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCScheduledTask+AddOn.m +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCScheduledTask+AddOn.m @@ -45,12 +45,6 @@ @implementation APCScheduledTask (AddOn) - (void)completeScheduledTask { self.completed = @(YES); - - //Turn off one time schedule - if ([self.generatedSchedule isOneTimeSchedule]) - { - self.generatedSchedule.inActive = @(YES); - } NSError * saveError; [self saveToPersistentStore:&saveError]; APCLogError2 (saveError); @@ -93,158 +87,18 @@ - (NSString *)completeByDateString - (APCResult *)lastResult { APCResult * retValue = nil; - if (self.results.count == 1) { - retValue = [self.results anyObject]; - } - else if(self.results.count > 1) - { - NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"endDate" ascending:NO]; - NSArray * sortedArray = [self.results sortedArrayUsingDescriptors:@[sortDescriptor]]; - retValue = [sortedArray firstObject]; - } - return retValue; -} - -+ (NSDictionary*) APCActivityVCScheduledTasksInContext: (NSManagedObjectContext*) context -{ - NSArray * array1 = [self getTodaysTaskInContext:context]; - NSArray * array2 = [self getYesterdaysIncompleteTaskInContext:context]; - - NSMutableDictionary * finalDict = [NSMutableDictionary dictionary]; - if (array1.count) { - finalDict[@"today"] = array1; - } - if (array2.count) { - finalDict[@"yesterday"] = array2; - } - return finalDict.count ? finalDict : nil; -} - -+ (NSArray *) getTodaysTaskInContext: (NSManagedObjectContext*) context { - NSArray * array = [self allScheduledTasksForDateRange:[APCDateRange todayRange] completed:nil inContext:context]; - //If there are no today's activities, generate them - if (array.count == 0) { - [((APCAppDelegate*) [UIApplication sharedApplication].delegate).dataMonitor.scheduler updateScheduledTasksIfNotUpdatingWithRange:kAPCSchedulerDateRangeToday]; - array = [self allScheduledTasksForDateRange:[APCDateRange todayRange] completed:nil inContext:context]; - } - return array.count ? array : nil; - -} - -+ (NSArray*) getYesterdaysIncompleteTaskInContext: (NSManagedObjectContext*) context { - NSArray * array = [self allScheduledTasksForDateRange:[APCDateRange yesterdayRange] completed:@NO inContext:context]; - //If there are no yesterday's activities and there are completed activities in the past, generate yesterday's activities - if (array.count == 0) { - if ([self userHasCompletedActivitiesInThePastInContext:context]) { - [((APCAppDelegate*) [UIApplication sharedApplication].delegate).dataMonitor.scheduler updateScheduledTasksIfNotUpdatingWithRange:kAPCSchedulerDateRangeYesterday]; - array = [self allScheduledTasksForDateRange:[APCDateRange yesterdayRange] completed:@NO inContext:context]; - } - } - NSArray * filteredArray = [self filterYesterdayIncompleteScheduledTasksByEndDate:array]; - return filteredArray.count ? filteredArray : nil; -} - -+ (NSArray*) filterYesterdayIncompleteScheduledTasksByEndDate: (NSArray*) scheduledTasksArray { - - NSMutableArray * filteredArray = [NSMutableArray array]; - NSDate * yesterdaysEndDate = [NSDate endOfDay:[NSDate yesterdayAtMidnight]]; - for (APCScheduledTask * scheduledTask in scheduledTasksArray) { - if (scheduledTask.endOn <= yesterdaysEndDate) { - [filteredArray addObject:scheduledTask]; + @synchronized(self){ + if (self.results.count == 1) { + retValue = [self.results anyObject]; } - } - return filteredArray.count ? filteredArray : nil; -} - -//If completed is nil then no filtering on completion, else the result will be filtered by completed value -+ (NSArray *)allScheduledTasksForDateRange: (APCDateRange*) dateRange completed: (NSNumber*) completed inContext: (NSManagedObjectContext*) context -{ - NSFetchRequest * request = [APCScheduledTask request]; - - NSPredicate * datePredicate = [NSPredicate predicateWithFormat:@"endOn > %@", dateRange.startDate]; - NSPredicate * completionPrediate = nil; - if (completed != nil) { - completionPrediate = [completed isEqualToNumber:@YES] ? [NSPredicate predicateWithFormat:@"completed == %@", completed] :[NSPredicate predicateWithFormat:@"completed == nil || completed == %@", completed] ; - } - - NSPredicate * finalPredicate = completionPrediate ? [NSCompoundPredicate andPredicateWithSubpredicates:@[datePredicate, completionPrediate]] : datePredicate; - request.predicate = finalPredicate; - - NSSortDescriptor *titleSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"task.taskTitle" ascending:YES]; - request.sortDescriptors = @[titleSortDescriptor]; - - NSError * error; - NSArray * array = [context executeFetchRequest:request error:&error]; - APCLogError2 (error); - - - NSMutableArray * filteredArray = [NSMutableArray array]; - - for (APCScheduledTask * scheduledTask in array) { - if ([scheduledTask.dateRange compare:dateRange] != kAPCDateRangeComparisonOutOfRange) { - [filteredArray addObject:scheduledTask]; - } - } - - NSArray * finalArray = filteredArray; - //Filtering multiday tasks that were completed yesterday or older - if (completed == nil) { - finalArray = [self filterTasksCompletedYesterdayOrOlder:filteredArray]; - } - - return finalArray.count ? finalArray : nil; -} - -+ (BOOL) userHasCompletedActivitiesInThePastInContext: (NSManagedObjectContext*) context { - - NSFetchRequest * request = [APCScheduledTask request]; - request.predicate = [NSPredicate predicateWithFormat:@"completed == %@ && endOn < %@", @YES, [NSDate yesterdayAtMidnight]]; - NSError * error; - NSUInteger count = [context countForFetchRequest:request error:&error]; - APCLogError2 (error); - return (count > 0) ? YES : NO; -} - -+ (instancetype) scheduledTaskForStartOnDate: (NSDate *) startOn schedule: (APCSchedule*) schedule inContext: (NSManagedObjectContext*) context -{ - NSFetchRequest * request = [APCScheduledTask request]; - request.predicate = [NSPredicate predicateWithFormat:@"startOn == %@ && generatedSchedule == %@", startOn, schedule]; - NSError * error; - NSArray * array = [context executeFetchRequest:request error:&error]; - APCLogError2 (error); - return array.count ? [array firstObject] : nil; -} - -+ (NSArray*) filterTasksCompletedYesterdayOrOlder: (NSArray*) scheduledTasksArray -{ - NSMutableArray * filteredArray = [NSMutableArray array]; - NSDate * todayAtMidnight = [NSDate todayAtMidnight]; - [scheduledTasksArray enumerateObjectsUsingBlock:^(APCScheduledTask * obj, NSUInteger __unused idx, BOOL * __unused stop) { - - if ([obj.completed isEqualToNumber:@YES]) { - if (obj.lastResult.endDate.timeIntervalSinceReferenceDate >= todayAtMidnight.timeIntervalSinceReferenceDate) { - [filteredArray addObject:obj]; - } - } - else + else if(self.results.count > 1) { - [filteredArray addObject:obj]; + NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"endDate" ascending:NO]; + NSArray * sortedArray = [self.results sortedArrayUsingDescriptors:@[sortDescriptor]]; + retValue = [sortedArray firstObject]; } - }]; - return filteredArray; -} - -/*********************************************************************************/ -#pragma mark - Counts -/*********************************************************************************/ -+ (NSUInteger)countOfAllScheduledTasksTodayInContext: (NSManagedObjectContext*) context { - NSArray * array = [self allScheduledTasksForDateRange:[APCDateRange todayRange] completed:nil inContext:context]; - return array.count; -} - -+ (NSUInteger)countOfAllCompletedTasksTodayInContext: (NSManagedObjectContext*) context { - NSArray * array = [self allScheduledTasksForDateRange:[APCDateRange todayRange] completed:@YES inContext:context]; - return array.count; + } + return retValue; } diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask+AddOn.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask+AddOn.h index d39a2361..2985fa8e 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask+AddOn.h +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask+AddOn.h @@ -36,13 +36,26 @@ @protocol ORKTask; @interface APCTask (AddOn) -//Synchronous Method Call -+ (void) createTasksFromJSON: (NSArray*) tasksArray inContext: (NSManagedObjectContext*) context; -+ (void) updateTasksFromJSON: (NSArray*) tasksArray inContext:(NSManagedObjectContext *)context; - -+ (APCTask*) taskWithTaskID: (NSString*) taskID inContext: (NSManagedObjectContext*) context; +/** + Runs a CoreData query in the specified context retrieving a task with + the specified ID. Returns nil if there was an error, or if there was + no task with such an ID. + + If we need the error from this method, we'll have to make an overload + of the method which returns an error parameter; several parts of our + world are already using this method as-is. + */ ++ (APCTask *) taskWithTaskID: (NSString *) taskID + inContext: (NSManagedObjectContext *) context; +/** + Stores and retrieves the binary, encoded content of the + survey itself represented by this task. + + The data is stored in CoreData as an NSData blob. + */ @property (nonatomic, strong) id rkTask; ++ (NSArray *) defaultSortDescriptors; @end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask+AddOn.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask+AddOn.m index 5d6b19d7..30c11467 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask+AddOn.m +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask+AddOn.m @@ -35,6 +35,8 @@ #import "APCAppCore.h" #import +static NSArray *defaultSortDescriptorsInternal = nil; + static NSString * const kTaskIDKey = @"taskID"; static NSString * const kTaskTitleKey = @"taskTitle"; static NSString * const kTaskClassNameKey = @"taskClassName"; @@ -43,71 +45,67 @@ @implementation APCTask (AddOn) -+ (void)createTasksFromJSON:(NSArray *)tasksArray inContext:(NSManagedObjectContext *)context +/** + Sets global, static values the first time anyone calls this category. + + By definition, this method is called once per category, in a thread-safe + way, the first time the category is sent a message -- basically, the first + time we refer to any method declared in that category. + + Documentation: the key sentence is actually in the documentation for + +initialize: "initialize is invoked only once per class. If you want + to perform independent initialization for the class and for categories + of the class, you should implement +load methods." + + I learned that from: + http://stackoverflow.com/q/13326435 + + The official +load documentation: + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/clm/NSObject/load + + The official +initialize documentation, with that key sentence: + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/clm/NSObject/initialize + */ ++ (void) load { - [context performBlockAndWait:^{ - for (NSDictionary * taskDict in tasksArray) { - APCTask * task = [APCTask newObjectForContext:context]; - task.taskID = taskDict[kTaskIDKey]; - task.taskTitle = taskDict[kTaskTitleKey]; - task.taskClassName = taskDict[kTaskClassNameKey]; - task.taskCompletionTimeString = taskDict[kTaskCompletionTimeStringKey]; - - if (taskDict[kTaskFileNameKey]) { - NSString *resource = [[NSBundle mainBundle] pathForResource:taskDict[kTaskFileNameKey] ofType:@"json"]; - NSData *jsonData = [NSData dataWithContentsOfFile:resource]; - NSError * error; - NSDictionary * dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; - id manager = SBBComponent(SBBSurveyManager); - SBBSurvey * survey = [[manager objectManager] objectFromBridgeJSON:dictionary]; - task.rkTask = [APCTask rkTaskFromSBBSurvey:survey]; - } - NSError * error; - [task saveToPersistentStore:&error]; - APCLogError2 (error); - } - }]; + defaultSortDescriptorsInternal = @[[NSSortDescriptor sortDescriptorWithKey: @"sortString" ascending: YES], + [NSSortDescriptor sortDescriptorWithKey: @"taskTitle" ascending: YES], + [NSSortDescriptor sortDescriptorWithKey: @"updatedAt" ascending: NO]]; } -+ (void) updateTasksFromJSON: (NSArray*) tasksArray inContext:(NSManagedObjectContext *)context ++ (NSArray *) defaultSortDescriptors { - [context performBlockAndWait:^{ - for (NSDictionary * taskDict in tasksArray) { - APCTask * task = [APCTask taskWithTaskID:taskDict[kTaskIDKey] inContext:context]; - if (task == nil) { - task = [APCTask newObjectForContext:context]; - task.taskID = taskDict[kTaskIDKey]; - } - task.taskTitle = taskDict[kTaskTitleKey]; - task.taskClassName = taskDict[kTaskClassNameKey]; - task.taskCompletionTimeString = taskDict[kTaskCompletionTimeStringKey]; - - if (taskDict[kTaskFileNameKey]) { - NSString *resource = [[NSBundle mainBundle] pathForResource:taskDict[kTaskFileNameKey] ofType:@"json"]; - NSData *jsonData = [NSData dataWithContentsOfFile:resource]; - NSError * error; - NSDictionary * dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; - id manager = SBBComponent(SBBSurveyManager); - SBBSurvey * survey = [[manager objectManager] objectFromBridgeJSON:dictionary]; - task.rkTask = [APCTask rkTaskFromSBBSurvey:survey]; - } - NSError * error; - [task saveToPersistentStore:&error]; - APCLogError2 (error); - } - }]; + return defaultSortDescriptorsInternal; } -+ (APCTask*) taskWithTaskID: (NSString*) taskID inContext:(NSManagedObjectContext *)context ++ (APCTask *) taskWithTaskID: (NSString *) taskID + inContext: (NSManagedObjectContext *) context { - __block APCTask * retTask; - [context performBlockAndWait:^{ - NSFetchRequest * request = [APCTask request]; - request.predicate = [NSPredicate predicateWithFormat:@"taskID == %@",taskID]; - NSError * error; - retTask = [[context executeFetchRequest:request error:&error]firstObject]; + __block APCTask *taskToReturn = nil; + + [context performBlockAndWait: ^{ + + NSFetchRequest *request = [APCTask request]; + request.predicate = [NSPredicate predicateWithFormat: @"%K == %@", + NSStringFromSelector (@selector (taskID)), + taskID]; + + NSError * errorRetrievingTasks = nil; + NSArray *possibleTasks = [context executeFetchRequest: request + error: & errorRetrievingTasks]; + + if (possibleTasks == nil) + { + APCLogError2 (errorRetrievingTasks); + } + + else + { + taskToReturn = possibleTasks.firstObject; + } }]; - return retTask; + + return taskToReturn; } - (id)rkTask diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask.h index 44cb1c0f..60bbdbba 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask.h +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask.h @@ -1,59 +1,69 @@ -// -// APCTask.h -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - +// +// APCTask.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + #import #import -@class APCScheduledTask; +@class APCSchedule, APCScheduledTask; @interface APCTask : NSManagedObject @property (nonatomic, retain) NSDate * createdAt; +@property (nonatomic, retain) NSString * sortString; @property (nonatomic, retain) NSString * taskClassName; @property (nonatomic, retain) NSString * taskCompletionTimeString; +@property (nonatomic, retain) NSString * taskContentFileName; @property (nonatomic, retain) NSData * taskDescription; @property (nonatomic, retain) NSString * taskHRef; @property (nonatomic, retain) NSString * taskID; +@property (nonatomic, retain) NSNumber * taskIsOptional; @property (nonatomic, retain) NSString * taskTitle; +@property (nonatomic, retain) NSNumber * taskVersionNumber; @property (nonatomic, retain) NSDate * updatedAt; -@property (nonatomic, retain) NSSet *scheduledTasks_unused; +@property (nonatomic, retain) NSSet *scheduledTasks; +@property (nonatomic, retain) NSSet *schedules; @end @interface APCTask (CoreDataGeneratedAccessors) -- (void)addScheduledTasks_unusedObject:(APCScheduledTask *)value; -- (void)removeScheduledTasks_unusedObject:(APCScheduledTask *)value; -- (void)addScheduledTasks_unused:(NSSet *)values; -- (void)removeScheduledTasks_unused:(NSSet *)values; +- (void)addScheduledTasksObject:(APCScheduledTask *)value; +- (void)removeScheduledTasksObject:(APCScheduledTask *)value; +- (void)addScheduledTasks:(NSSet *)values; +- (void)removeScheduledTasks:(NSSet *)values; + +- (void)addSchedulesObject:(APCSchedule *)value; +- (void)removeSchedulesObject:(APCSchedule *)value; +- (void)addSchedules:(NSSet *)values; +- (void)removeSchedules:(NSSet *)values; @end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask.m index d16f7d32..e2ab3ad5 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask.m +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTask.m @@ -1,49 +1,56 @@ -// -// APCTask.m -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - +// +// APCTask.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + #import "APCTask.h" +#import "APCSchedule.h" +#import "APCScheduledTask.h" @implementation APCTask @dynamic createdAt; +@dynamic sortString; @dynamic taskClassName; @dynamic taskCompletionTimeString; +@dynamic taskContentFileName; @dynamic taskDescription; @dynamic taskHRef; @dynamic taskID; +@dynamic taskIsOptional; @dynamic taskTitle; +@dynamic taskVersionNumber; @dynamic updatedAt; -@dynamic scheduledTasks_unused; +@dynamic scheduledTasks; +@dynamic schedules; @end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTaskGroup.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTaskGroup.h new file mode 100644 index 00000000..4fa631f7 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTaskGroup.h @@ -0,0 +1,168 @@ +// +// APCTaskGroup.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import +@class APCTask; +@class APCPotentialTask; +@class APCScheduledTask; + + +/** + Represents everything we know about a single Task -- + something the user can do -- on a given day: + + - how many times the user has done that task + - links to the data representing the stuff the user has + already done + - the number of times the task's Schedule says the user + should do that task + - links to objects we can use to generate more user data + for that task + */ +@interface APCTaskGroup : NSObject + +/** + The Task mentioned by all everything else in this group. + A Task is our main template for "something the user + should do." Other properties on this Group reflect + different aspects of that to-do concept: stuff that's + already been done, stuff that could be done at a specific + date and time, etc. + */ +@property (nonatomic, strong) APCTask *task; + +/** + An array of PotentialTask objects representing both + the number of remaining required tasks for this user, + and the times of day, if any, that those tasks should + be done. + */ +@property (nonatomic, strong) NSArray *requiredRemainingTasks; + +/** + An array of ScheduledTask objects that have been marked + as "completed," which match the times required by the + attached Schedule. + */ +@property (nonatomic, strong) NSArray *requiredCompletedTasks; + +/** + An array of ScheduledTask objects that have been marked + as "completed," which the user did without being required + to do so, within the specified time range. + */ +@property (nonatomic, strong) NSArray *gratuitousCompletedTasks; + +/** + Returns the combination of -requiredCompletedTasks and + -gratuitousCompletedTasks, sorted by date completed, such + that the most recent completed task is the last object + in the array. + + @see latestCompletedTask + @see requiredCompletedTasks + @see gratuitousCompletedTasks + */ +@property (readonly) NSArray *allCompletedTasks; + +/** + Returns the most recent task completed by the user on + this date, regardless of whether it was required or + gratuitous. I.e., it returns the last object in the + -allCompletedTasks array. + + @see allCompletedTasks + */ +@property (readonly) APCScheduledTask *latestCompletedTask; + +/** + YES if there are any completed tasks in this TaskGroup + (i.e., for this date), whether required or gratuitous. + NO otherwise. + */ +@property (readonly) BOOL hasAnyCompletedTasks; + +/** + A sample PotentialTask you can use to create new + ScheduledTasks, and open the matching ViewController. + Use this if there are no more requiredRemainingTasks, + but the user still needs/wants to do one. + */ +@property (nonatomic, strong) APCPotentialTask *samplePotentialTask; + +/** + An integer reporting how many instances of this task were + required for this date range. This number will report the + total number that should have occurred, while the + -completedTasks and -requiredRemainingTasks will contain a + continuously-variable number of tasks, based on what has + in fact been accomplished. + */ +@property (nonatomic, assign) NSUInteger totalRequiredTasksForThisTimeRange; + +/** + Former name for totalRequiredTasksForThisTimeRange. + Please use -totalRequiredTasksForThisTimeRange instead. + */ +@property (readonly) NSUInteger countOfRequiredTasksForThisTimeRange __attribute__((deprecated("Please use -totalRequiredTasksForThisTimeRange instead."))); + +/** + The day whose midnight-to-midnight is represented by the + contents of this group. + */ +@property (nonatomic, strong) NSDate *date; + +/** + Returns YES if -requiredCompletedTasks.count is greater + than -countOfRequiredTasksForThisTimeRange. + */ +@property (readonly) BOOL isFullyCompleted; + +/** + Returns the date this group was fully completed -- the + latest "date updated" in the list of + requiredCompletedTasks. + */ +@property (readonly) NSDate *dateFullyCompleted; + +- (NSComparisonResult) compareWithTaskGroup: (APCTaskGroup *) otherTaskGroup; + +- (instancetype) initWithTask: (APCTask *) task + requiredRemainingPotentialTasks: (NSArray *) requiredRemainingTasks + requiredCompletedTasks: (NSArray *) requiredCompletedTasks + gratuitousCompletedTasks: (NSArray *) gratuitousCompletedTasks + samplePotentialTask: (APCPotentialTask *) samplePotentialTask + totalRequiredTasks: (NSUInteger) countOfRequiredTasks + forDate: (NSDate *) date; + +@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCTaskGroup.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTaskGroup.m new file mode 100644 index 00000000..b7b52cf7 --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCTaskGroup.m @@ -0,0 +1,249 @@ +// +// APCTaskGroup.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCTaskGroup.h" +#import "APCTask+AddOn.h" +#import "APCSchedule+AddOn.h" +#import "APCConstants.h" +#import "APCScheduledTask+AddOn.h" +#import "NSDate+Helper.h" + + +/** + We always sort -allCompletedTasks by the same set of + sort descriptors, so we might as well make it common. + This is thread-safe: it's created during +initialize, + and never changes. + */ +static NSArray *sortDescriptorsForSortingScheduledTasksByCompletionDate = nil; + +/** The date format we use when debug-printing the taskGroup. */ +static NSString * const kAPCDebugDateFormat = @"EEE yyyy-MM-dd HH:mm zzz"; + +/** A date formatter we use when debug-printing the taskGroup. */ +static NSDateFormatter *debugDateFormatter = nil; + + +@implementation APCTaskGroup + +/** + Set global, static values the first time anyone calls this class. + + By definition, this method is called once per class, in a thread-safe + way, the first time the class is sent a message -- basically, the first + time we refer to the class. That means we can use this to set up stuff + that applies to all objects (instances) of this class. + + Documentation: See +initialize in the NSObject Class Reference. Currently, that's here: + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/clm/NSObject/initialize + */ ++ (void) initialize +{ + sortDescriptorsForSortingScheduledTasksByCompletionDate = @[[NSSortDescriptor sortDescriptorWithKey: NSStringFromSelector (@selector (updatedAt)) + ascending: YES]]; + + debugDateFormatter = [NSDateFormatter new]; + debugDateFormatter.dateFormat = kAPCDebugDateFormat; + debugDateFormatter.timeZone = [NSTimeZone localTimeZone]; +} + +- (instancetype) init +{ + self = [super init]; + + if (self) + { + _task = nil; + _samplePotentialTask = nil; + _requiredRemainingTasks = nil; + _requiredCompletedTasks = nil; + _gratuitousCompletedTasks = nil; + _totalRequiredTasksForThisTimeRange = 0; + _date = nil; + } + + return self; +} + +- (instancetype) initWithTask: (APCTask *) task + requiredRemainingPotentialTasks: (NSArray *) requiredRemainingTasks + requiredCompletedTasks: (NSArray *) requiredCompletedTasks + gratuitousCompletedTasks: (NSArray *) gratuitousCompletedTasks + samplePotentialTask: (APCPotentialTask *) samplePotentialTask + totalRequiredTasks: (NSUInteger) countOfRequiredTasks + forDate: (NSDate *) date +{ + self = [self init]; + + if (self) + { + _task = task; + _samplePotentialTask = samplePotentialTask; + _requiredRemainingTasks = requiredRemainingTasks; + _requiredCompletedTasks = requiredCompletedTasks; + _gratuitousCompletedTasks = gratuitousCompletedTasks; + _totalRequiredTasksForThisTimeRange = countOfRequiredTasks; + _date = date; + } + + return self; +} + +- (BOOL) hasAnyCompletedTasks +{ + return self.requiredCompletedTasks.count + self.gratuitousCompletedTasks.count > 0; +} + +- (BOOL) isFullyCompleted +{ + return self.requiredCompletedTasks.count >= self.totalRequiredTasksForThisTimeRange; +} + +- (NSArray *) allCompletedTasks +{ + NSMutableArray *result = [NSMutableArray new]; + + if (self.requiredCompletedTasks.count) + { + [result addObjectsFromArray: self.requiredCompletedTasks]; + } + + if (self.gratuitousCompletedTasks.count) + { + [result addObjectsFromArray: self.gratuitousCompletedTasks]; + } + + [result sortUsingDescriptors: sortDescriptorsForSortingScheduledTasksByCompletionDate]; + + return result; +} + +- (APCScheduledTask *) latestCompletedTask +{ + return self.allCompletedTasks.lastObject; +} + +- (NSDate *) dateFullyCompleted +{ + NSDate *latestCompletionDate = nil; + + for (APCScheduledTask *completedTask in self.requiredCompletedTasks) + { + if (latestCompletionDate == nil || [completedTask.updatedAt isLaterThanDate: latestCompletionDate]) + { + latestCompletionDate = completedTask.updatedAt; + } + } + + return latestCompletionDate; +} + +- (NSString *) description +{ + NSString *result = nil; + + NSMutableString *dates = [NSMutableString stringWithString: @"dates completed: "]; + + if (! self.hasAnyCompletedTasks) + { + [dates appendString: @"(none)"]; + } + else for (APCScheduledTask *scheduledTask in self.allCompletedTasks) + { + [dates appendFormat: @"%@, ", scheduledTask.updatedAt]; + } + + result = [NSString stringWithFormat: @"TaskGroup: %@ | %@ | %@ | vcToShow: %@ | %@ | tasks: %@ required, %@ completed, %@ remaining, %@ gratuitous completed, most recent completed on %@", + NSStringShortFromAPCScheduleSourceAsNumber ([self.task.schedules.anyObject scheduleSource]), + self.task.taskTitle, + self.task.taskID, + self.task.taskClassName, + dates, + @(self.totalRequiredTasksForThisTimeRange), + @(self.requiredCompletedTasks.count), + @(self.requiredRemainingTasks.count), + @(self.gratuitousCompletedTasks.count), + [self debugStringFromDate: self.latestCompletedTask.updatedAt] + ]; + + return result; +} + +- (NSComparisonResult) compareWithTaskGroup: (APCTaskGroup *) otherTaskGroup +{ + NSComparisonResult result = NSOrderedSame; + + if (self.task == nil && otherTaskGroup.task == nil) + { + result = NSOrderedSame; + } + else if (otherTaskGroup.task == nil) + { + result = NSOrderedDescending; + } + else if (self.task == nil) + { + result = NSOrderedAscending; + } + else + { + NSArray *plainTasks = @[self.task, otherTaskGroup.task]; + NSArray *sortedTasks = [plainTasks sortedArrayUsingDescriptors: [APCTask defaultSortDescriptors]]; + result = sortedTasks.firstObject == self.task ? NSOrderedAscending : NSOrderedDescending; + } + + return result; +} + +/** + Deprecated method name. Replaced by + -totalRequiredTasksForThisTimeRange. + */ +- (NSUInteger) countOfRequiredTasksForThisTimeRange +{ + return self.totalRequiredTasksForThisTimeRange; +} + +- (NSString *) debugStringFromDate: (NSDate *) date +{ + NSString *result = @"(null)"; + + if (date != nil) + { + result = [debugDateFormatter stringFromDate: date]; + } + + return result; +} + +@end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCUser.h b/APCAppCore/APCAppCore/DataSubstrate/Model/APCUser.h index 7b875327..53840951 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCUser.h +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCUser.h @@ -118,4 +118,24 @@ typedef NS_ENUM(NSInteger, APCUserConsentSharingScope) { - (BOOL) isLoggedOut; +/** + Returns our best approximation of the user's "date of + consent" -- the date they agreed to start the study. + + These days, we track the date the user signs up. In + earlier versions of the apps, we didn't. This method + represents a set of next-best-guesses about that date, + for users who signed up before we started tracking it. + */ +@property (readonly) NSDate *estimatedConsentDate; + +/** + Returns the best approximation we have for a user-consent + date if we don't yet have any user data. This is a + static method so that it can be used during database + migration, when we attach start dates to existing + schedules, as well as during normal operation. + */ ++ (NSDate *) proxyForConsentDate; + @end diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/APCUser.m b/APCAppCore/APCAppCore/DataSubstrate/Model/APCUser.m index 2c77f57c..c68c50b3 100644 --- a/APCAppCore/APCAppCore/DataSubstrate/Model/APCUser.m +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/APCUser.m @@ -37,7 +37,7 @@ #import "APCDataSubstrate.h" #import "APCKeychainStore.h" #import "APCLog.h" - +#import "APCUtilities.h" #import "NSManagedObject+APCHelper.h" #import "HKHealthStore+APCExtensions.h" @@ -276,6 +276,30 @@ - (NSString*) hashIfNeeded: (NSString*) password return password; } +- (NSDate *) estimatedConsentDate +{ + NSDate *consentDate = self.consentSignatureDate; + + if (! consentDate) + { + consentDate = [[self class] proxyForConsentDate]; + } + + return consentDate; +} + ++ (NSDate *) proxyForConsentDate +{ + NSDate *bestGuessConsentDate = [APCUtilities firstKnownFileAccessDate]; + + if (! bestGuessConsentDate) + { + bestGuessConsentDate = [NSDate date]; + } + + return bestGuessConsentDate; +} + /*********************************************************************************/ #pragma mark - Setters for Properties in Core Data diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/MODEL_MIGRATION_README.txt b/APCAppCore/APCAppCore/DataSubstrate/Model/MODEL_MIGRATION_README.txt new file mode 100644 index 00000000..cd7b666a --- /dev/null +++ b/APCAppCore/APCAppCore/DataSubstrate/Model/MODEL_MIGRATION_README.txt @@ -0,0 +1,211 @@ +MODEL_MIGRATION_README: Notes on how to upgrade your CoreData model + + +---------- +Copyright (c) 2015, Apple Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +3. Neither the name of the copyright holder(s) nor the names of any contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. No license is granted to the trademarks of +the copyright holders even if such marks are included in this software. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +---------- + + + +We use CoreData "versioning." This means we can change the data model at development time, and the CoreData infrastructure will try to upgrade the data on the user's device at run time. + +This works "automatically" if your changes are very simple: you add entities, or you add optional attributes to existing entities. + +If you want to do anything more complex, you may need: +- a "mapping model", telling CoreData what attributes to copy from the old entities to the new ones; and +- a "migration policy," a class which computes the values of properties that can't be copied. + +Here's how to do both the automatic and mapping-model-based conversions. + + +-------------- +A. Add a new data model +-------------- + +For simple stuff, this is all you'll need. For more complex stuff, you'll also need the stuff in section B. + +Let's say we're on model version 4, and you're creating model version 5. + +1. Create the model file: + a. Click the model file for version 4 (APCModel 4.xcdatamodel) + b. Choose "Add Model Version" from Xcode's "Product" menu + c. Give the new model file an appropriate name, or accept the default (like "APCModel 5.xcdatamodel") + +2. Make it the "current" model: + a. Click the model container (APCModel.xcdatamodeld) in the Project view at left + b. In the File Inspector, set the "Model Version" to your new file ("APCModel 5") + +3. Start editing your model: + a. Click on your new model file ("APCModel 5.xcdatamodel") + +4. WATCH OUT FOR THIS XCODE BUG: + + Make sure you click on some file OTHER than the file you just created, and then click BACK to your new file, before editing it. + + Reason: Xcode seems to have a bug. When you create the new model file, Xcode highlights it in the Project view, but DOES NOT CHANGE THE CONTENTS OF THE EDITOR WINDOW. This makes it very easy to THINK you're editing your new file when you're actually changing the OLD file -- which really trashes everything about your data. + + + + +-------------- +B. Add a custom migration for your data model +-------------- + +If you try to run the app with your new model, and you see some sort of "we can't upgrade your database" warning, your data probably requires a "migration policy." + +For example, when I went from version 4 to version 5 (above), I created a new attribute called "uniqueId," and made it a "required" attribute. When CoreData tried to migrate the old data, it didn't know how to generate that new uniqueId field. (I wanted a UUID.) So my migration failed. The console log told me which fields it couldn't migrate. + +So here's how I fixed it. I learned this mostly from: + + http://9elements.com/io/index.php/customizing-core-data-migrations/ + https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmMappingOverview.html + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/NSMigrationManager_class/ + + +Note: before doing this, make sure YOU care about the things it's complaining about. For example, for me, it once "complained" that it couldn't generate unique values for a certain string. It was right: I had made that string "required." But that actually made me realize I wanted that string to be "optional." I made that attribute optional, and presto, automatic conversion worked perfectly! + + + +- - - - - - - - +Summary of what we're about to do +- - - - - - - - + +1. Create a Mapping Model which specifies how attributes from a version 4 file will be converted to (or invented for) a version 5 file (or whatever versions you're playing with). + +2. Create a class to do the calculations needed for that conversion. + +3. In that class, write one method for every attribute or relationship you need to create or convert. + +4. Tell the Mapping Model to use your new class. + +5. Tell the Mapping Model to use your new conversion method. + +6. Repeat steps 1-5 for every version of the model you might encounter. For example, if your customers are using versions 1, 2, and 3 of your data model -- if you've released all those versions to the App Store -- and you're changing to version 5, you'll need to write Mapping Models converting EACH of those earlier versions to version 5. + + +- - - - - - - - +Details +- - - - - - - - + +1. Create a new Mapping Model: + + a. Create a new Mapping Model file: File > New > CoreData > MappingModel. + b. When it asks, tell it the version you're migrating from: say, version 4. + c. When it asks, tell it the version you're migrating to: say, version 5. + d. Save that file. Name it after the versions you're mapping: perhaps "APCMappingModel4ToModel5". Use the default extension, ".xcmappingmodel". + + +2. Inspect that file. Here's what you'll see: + + a. The file contains every entity, attribute, and relationship from version 4, and, by default, says to copy that data over to the same field or relationship in version 5. THAT'S GREAT, and that's what we want. The catch will be: for NEW attributes and relationships, it won't know what values to give them. And for attributes that have changed, its assumptions will be wrong. So we'll write methods to generate, or fix, JUST THOSE ATTRIBUTES and relationships. Leave everything else the way it is. + + b. You might ask: why can't I delete the entities, attributes, and relationships that I *don't* want it to convert, to make the file cleaner and simpler? In theory, you can. In practice, if any OTHER attributes relate to those, the automatic conversions may not do what you expect, or may not happen at all. It's probably easier to just leave the file the way it is. + + +3. Create a class to perform the "hard parts" of the migration: + + a. Create a new class + b. Make it a subclass of NSEntityMigrationPolicy + c. Give it an appropriate name. I called mine: + + APCDataMigrationPolicy_from_APCMedTrackerPrescription_v4_to_APCMedTrackerPrescription_v5 + + (meaning: "a bunch of methods for converting Prescription v4 objects to Prescription v5") + + +4. In that class, write a method to generate the new attribute (or relationship) from the old one, or from the old object. Presume you'll receive a pointer to the old object, and will return the value of the new attribute/relationship. I'll show you how to send those values in a moment. For example, if you're generating a new Color field, you might make a method called + + - (UIColor *) generateNewColorFromOldPrescription: (id) prescriptionFromModel4 + { + // read the properties of the old object + // generate the new color + // return the new color + } + + +5. Tell the mapping model to use your new class: + + a. Click the Mapping Model file. + b. In the list of entities, click the entity you're about to convert. + c. In the data inspector (command-option-3), enter your new class as the "custom policy." + + (This shows us why this class is called a "policy." Your "policy" class is a physical embodiment of a set of principles and rules for converting something into something else. The migration manager will instantiate one of these rule-beasties so that it (the manager) can follow those rules.) + + +6. Tell the mapping model to use your new method: + + a. Click the attribute or relationship you need to edit. + + b. In its "value" field, you WANT to call the conversion method you wrote in step 4. That method is a method of your Policy subclass, so the migration manager will execute a line of code like this: + + newColor = [yourMigrationPolicyObject getColorFromPrescription: myPrescription + usingDate: myPrescription.startDate + andColor: myPrescription.color]; + + To make it do that, enter an expression like this in the "value" field: + + FUNCTION ($entityPolicy, "getColorFromPrescription:usingDate:andColor:", $source, $source.startDate, $source.color) + + From left to right, those two lines contain the same pieces: + + yourMigrationPolicyObject = $entityPolicy + = method name, wrapped in C-style quotation marks + myPrescription = $source + myPrescription.startDate = $source.startDate + myPrescription.color = $source.color + + Those magic variables are: + + $entityPolicy a magically-created instance of your converter class from step 3 + $source a pointer to the object being converted (for me, a Prescription) + $source. a named attribute of $source, or a method call (i.e., a keypath) + + Here are some other magic variables: + + $destination the object that $source is being converted into + $manager the object doing the conversion. This is a gem: it lets you + access the ManagedObjectContexts being used to read the old + objects and generate the new ones, which means you can run + FetchRequests to inspect and generate data on either side + of the conversion. + + +7. Repeat steps 4 and 6 for every field or relationship you need to create or convert. + +8. Repeat steps 1-7 for EVERY VERSION of your data that you're likely to encounter. + + + +For more information, I used these sources: + http://9elements.com/io/index.php/customizing-core-data-migrations/ + https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmMappingOverview.html + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/NSMigrationManager_class/ + + +Have fun, and good luck! diff --git a/APCAppCore/APCAppCore/DataSubstrate/Model/MODEL_README b/APCAppCore/APCAppCore/DataSubstrate/Model/MODEL_README.txt similarity index 100% rename from APCAppCore/APCAppCore/DataSubstrate/Model/MODEL_README rename to APCAppCore/APCAppCore/DataSubstrate/Model/MODEL_README.txt diff --git a/APCAppCore/APCAppCore/Library/CMS/ENCRYPTION_README.txt b/APCAppCore/APCAppCore/Library/CMS/ENCRYPTION_README.txt index 194f751f..7bba734f 100644 --- a/APCAppCore/APCAppCore/Library/CMS/ENCRYPTION_README.txt +++ b/APCAppCore/APCAppCore/Library/CMS/ENCRYPTION_README.txt @@ -2,10 +2,6 @@ Setting up Encryption ------------------------------- -(Placeholder. This ReadMe presumes some knowledge of how -this project uses encryption. We're still evolving this.) - - How to use these files: - Pick the encryption .m file you want to use, or make your own (examples below) - Add only ONE of those files to the AppCore target. diff --git a/APCAppCore/APCAppCore/Library/Categories/NSArray+APCHelper.h b/APCAppCore/APCAppCore/Library/Categories/NSArray+APCHelper.h new file mode 100644 index 00000000..b9681096 --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Categories/NSArray+APCHelper.h @@ -0,0 +1,64 @@ +// +// NSArray+APCHelper.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + +@interface NSArray (APCHelper) + +/** + Creates a new array containing the contents of the + specified arrays. Does not remove duplicates. + + Usage: + + @code + NSArray *myArray = [NSArray arrayWithObjectsFromArrays: someArray, someOtherArray, someThirdArray]; + @endcode + */ ++ (instancetype) arrayWithObjectsFromArrays: (NSArray *) firstArray, ...; + +/** + Returns the second object in self, or nil if there is no + second object. + + This method/property is useful because, sometimes, + the second object in an array has a meaningful purpose: + the 2nd day in a list of selected days in a month, the + 2nd item in a two-item array of start-and-stop values, + etc. In those cases, having this -secondObject property + avoids having "magic numbers" in the code: hard-coding + a "1" to access that second array element. + */ +@property (readonly) id secondObject; + +@end diff --git a/APCAppCore/APCAppCore/Library/Categories/NSArray+APCHelper.m b/APCAppCore/APCAppCore/Library/Categories/NSArray+APCHelper.m new file mode 100644 index 00000000..df15b4ab --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Categories/NSArray+APCHelper.m @@ -0,0 +1,88 @@ +// +// NSArray+APCHelper.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "NSArray+APCHelper.h" +#import "APCUtilities.h" + +@implementation NSArray (APCHelper) + ++ (instancetype) arrayWithObjectsFromArrays: (NSArray *) firstArray, ... +{ + NSArray *inboundArrays = NSArrayFromVariadicArguments (firstArray); + NSMutableArray *result = nil; + + /* + I found a tantalizing suggestion of a built-in + Objective-C way of doing this: a call to + -valueForKeyPath which runs a "collection" operation + on the thing you pass it. There are several such + operations having to do with the "unions" of arrays. + However, they had specific limitations: "raises an + exception if such-and-such is nil." I prefer to write + stuff so that it never crashes, or appears to crash. + + For your information, I found it here: + http://stackoverflow.com/a/17091443 + + ...which pointed to this official documentation: + https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueCoding/Articles/CollectionOperators.html + */ + if (inboundArrays.count) + { + result = [NSMutableArray new]; + + for (id thingy in inboundArrays) + { + if ([thingy isKindOfClass: [NSArray class]]) + { + [result addObjectsFromArray: thingy]; + } + } + } + + return result; +} + +- (id) secondObject +{ + id result = nil; + + if (self.count >= 2) + { + result = self [1]; + } + + return result; +} + +@end diff --git a/APCAppCore/APCAppCore/Library/Categories/NSDate+Helper.h b/APCAppCore/APCAppCore/Library/Categories/NSDate+Helper.h index b0bb7505..e825e172 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NSDate+Helper.h +++ b/APCAppCore/APCAppCore/Library/Categories/NSDate+Helper.h @@ -53,6 +53,20 @@ extern NSString * const NSDateDefaultDateFormat; */ - (NSString *) toStringInISO8601Format; +/** + Tries to interpret the specified string with any of + several legal ISO 8601 formats. + + To add formats, modify the +initialize method in this + category. + + @return An NSDate, if one could be created from the + specified string. Returns nil if the conversion failed. + To change the list of possible input formats, change the + +initialize method in this category. + */ ++ (NSDate *) dateWithISO8601String: (NSString *) iso8601string; + - (NSString *) friendlyDescription; - (NSDate *) dateByAddingDays:(NSInteger)inDays; @@ -64,6 +78,9 @@ extern NSString * const NSDateDefaultDateFormat; - (instancetype) startOfDay; - (instancetype) endOfDay; +- (instancetype) dayBefore; +- (instancetype) dayAfter; + +(instancetype) todayAtMidnight; +(instancetype) tomorrowAtMidnight; +(instancetype) yesterdayAtMidnight; @@ -77,6 +94,138 @@ extern NSString * const NSDateDefaultDateFormat; - (BOOL) isInThePast; - (BOOL) isInTheFuture; -+ (NSTimeInterval) parseISO8601DurationString: (NSString*) duration ; +/** + Returns YES if self and otherDate are on the same + human-perceived day -- if they're both between midnight + and midnight on the same date. + */ +- (BOOL) isSameDayAsDate: (NSDate *) otherDate; + + +/** + Adds the specified duration string to the specified + date. Duration strings follow the ISO 8601 standard. + Some examples: + + @code + P3D 3 days ("P" == "period") + P1W 1 week + P2D5H10S 2 days, 5 hours, and 10 seconds + P36H 36 hours, i.e., a day and a half + P1.5D a day and a half, i.e., 36 hours + @endcode + + If you want to include minutes, you'll need a (T)ime + indicator somewhere to the left of it, to distinguish it + from months. Like this: + + @code + P3DT5M 3 days + 5 minutes + @endcode + + You can use any time interval from (S)econds through + (Y)ears, except fortnights. Time will be measured in + terms of the interval: 1.5D and 36H both give you a + day and a half, but 1M or 1Y will give you different + numbers of days, depending on the months and leap years + as measured from startDate. If you specify a startDate + of nil, you'll get 30 days per month and 365 days per + year. + + @param duration An ISO 8601 duration string, as described + above. + + @param date A date from which to start counting. Mostly + matters for durations involving months: "P1M" (1 month) + means different things if you start on January 1 or + February 1, and if months or years go far enough, we have + to account for leap years. So: if you specify nil, the + calculation will use 30 days per month (every month) and + 365 days per year. If you specify a real date, the + calculations will account for the actual number of days + per month during the elapsed months, and will account for + leap years. + + @see +timeIntervalBySubtractingISO8601Duration:fromDate + @see http://en.wikipedia.org/wiki/ISO_8601#Durations + */ ++ (NSTimeInterval) timeIntervalByAddingISO8601Duration: (NSString *) duration + toDate: (NSDate *) date; + +/** + Just like +timeIntervalByAddingISO8601Duration:toDate:, + but subtracts the specified duration from the specified + date. + + @see +timeIntervalByAddingISO8601Duration:toDate: + */ ++ (NSTimeInterval) timeIntervalBySubtractingISO8601Duration: (NSString *) duration + fromDate: (NSDate *) date; + +/** + Just like +timeIntervalByAddingISO8601Duration:toDate:, + operating on self instead of a passed-in date parameter. + + @see +timeIntervalByAddingISO8601Duration:toDate: + */ +- (NSTimeInterval) timeIntervalByAddingISO8601Duration: (NSString *) duration; + +/** + Just like +timeIntervalByAddingISO8601Duration:toDate:, + but subtracts the specified duration from the specified + self instead of adding to a passed-in parameter. + + @see +timeIntervalByAddingISO8601Duration:toDate: + */ +- (NSTimeInterval) timeIntervalBySubtractingISO8601Duration: (NSString *) duration; + +/** + Adds the specified duration string to the specified + date. Duration strings follow the ISO 8601 standard. + Some examples: + + @code + P3D 3 days ("P" == "period") + P1W 1 week + P2D5H10S 2 days, 5 hours, and 10 seconds + P36H 36 hours, i.e., a day and a half + P1.5D a day and a half, i.e., 36 hours + @endcode + + If you want to include minutes, you'll need a (T)ime + indicator somewhere to the left of it, to distinguish it + from months. Like this: + + @code + P3DT5M 3 days + 5 minutes + @endcode + + You can use any time interval from (S)econds through + (Y)ears, except fortnights. Time will be measured in + terms of the interval: 1.5D and 36H both give you a + day and a half, but 1M or 1Y will give you different + numbers of days, depending on the months and leap years + as measured from startDate. + + This method calls + +timeIntervalByAddingISO8601Duration:toDate. + + @param durationString An ISO 8601 duration string, as + described above. + + @see -dateBySubtractingISO8601Duration: + @see +timeIntervalByAddingISO8601Duration:toDate: + @see http://en.wikipedia.org/wiki/ISO_8601#Durations + */ +- (NSDate *) dateByAddingISO8601Duration: (NSString *) durationString; + +/** + Just like -dateByAddingISO8601Duration:, but subtracts + the specified duration from self. See + -dateByAddingISO8601Duration: for details. + + @see -dateByAddingISO8601Duration: + */ +- (NSDate *) dateBySubtractingISO8601Duration: (NSString *) durationString; @end diff --git a/APCAppCore/APCAppCore/Library/Categories/NSDate+Helper.m b/APCAppCore/APCAppCore/Library/Categories/NSDate+Helper.m index 378859eb..d4ceecb9 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NSDate+Helper.m +++ b/APCAppCore/APCAppCore/Library/Categories/NSDate+Helper.m @@ -32,12 +32,15 @@ // #import "NSDate+Helper.h" +#import "APCConstants.h" +#import "NSDateComponents+Helper.h" -NSString * const NSDateDefaultDateFormat = @"MMM dd, yyyy"; + +NSString * const NSDateDefaultDateFormat = @"MMM dd, yyyy"; /** - Sage requires our dates to be in "ISO-8601" format, + Sage requires our dates to be in "ISO 8601" format, like this: 2015-02-25T16:42:11+00:00 @@ -47,10 +50,60 @@ */ static NSString * const kDateFormatISO8601 = @"yyyy-MM-dd'T'HH:mm:ssZZZZZ"; +/** + The possible ways we might receive an ISO 8601 date. + Filled in during +initialize. + */ +static NSArray * kAPCDateFormatISO8601InputOptions = nil; + + + +/** + Makes some of the method calls below more explicit than + using a Boolean to indicate "backwards" or "forwards." + */ +typedef enum : NSUInteger { + APCDateDirectionForwards, + APCDateDirectionBackwards, +} APCDateDirection; + @implementation NSDate (Helper) +/** + Set global, static values the first time anyone calls this class. + + By definition, this method is called once per class, in a thread-safe + way, the first time the class is sent a message -- basically, the first + time we refer to the class. That means we can use this to set up stuff + that applies to all objects (instances) of this class. + + Documentation: See +initialize in the NSObject Class Reference. Currently, that's here: + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/clm/NSObject/initialize + */ ++ (void) initialize +{ + /* + The list of formats we'll use when trying to interpret + an ISO 8601 date string. Add any others you need. + + For more options, see http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns + */ + kAPCDateFormatISO8601InputOptions = @[@"yyyy-MM-dd", + @"yyyy-MM-dd'T'HH:mm", + @"yyyy-MM-dd'T'HH:mmZZZZZ", + @"yyyy-MM-dd'T'HH:mm:ssZZZZZ", + @"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ", + ]; +} + + + +// --------------------------------------------------------- +#pragma mark - Strings and Printouts +// --------------------------------------------------------- + - (NSString *) toStringWithFormat:(NSString *)format { if (!format) { format = NSDateDefaultDateFormat; @@ -128,12 +181,43 @@ - (NSString *) toStringInISO8601Format locale ("en_US_POSIX"), instead of the simpler "en-US", see: http://blog.gregfiumara.com/archives/245 */ - [formatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier: @"en_US_POSIX"]]; + [formatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier: kAPCDateFormatLocaleEN_US_POSIX]]; NSString *result = [formatter stringFromDate: self]; return result; } ++ (NSDate *) dateWithISO8601String: (NSString *) iso8601string +{ + NSDate *result = nil; + + if (iso8601string.length) + { + NSDateFormatter *formatter = [NSDateFormatter new]; + [formatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier: kAPCDateFormatLocaleEN_US_POSIX]]; + + for (NSUInteger formatIndex = 0; formatIndex < kAPCDateFormatISO8601InputOptions.count; formatIndex ++) + { + NSString *dateFormat = kAPCDateFormatISO8601InputOptions [formatIndex]; + [formatter setDateFormat: dateFormat]; + result = [formatter dateFromString: iso8601string]; + + if (result) + { + break; + } + } + } + + return result; +} + + + +// --------------------------------------------------------- +#pragma mark - Uncategorized utility functions and "computed properties" +// --------------------------------------------------------- + + (NSUInteger)ageFromDateOfBirth:(NSDate *)dateOfBirth { NSUInteger answer = 0; @@ -174,6 +258,16 @@ - (instancetype) endOfDay return [cal dateFromComponents:components]; } +- (instancetype) dayBefore +{ + return [self dateByAddingDays: -1]; +} + +- (instancetype) dayAfter +{ + return [self dateByAddingDays: 1]; +} + + (instancetype) startOfTomorrow: (NSDate*) date { NSCalendar *cal = [NSCalendar currentCalendar]; @@ -259,60 +353,195 @@ - (BOOL) isInTheFuture return result; } -+ (NSTimeInterval) parseISO8601DurationString: (NSString*) duration { - - float i = 0, years = 0, months = 0, weeks = 0, days = 0, hours = 0, minutes = 0, seconds = 0; +- (BOOL) isSameDayAsDate: (NSDate *) otherDate +{ + BOOL result = ([self isLaterThanOrEqualToDate: otherDate.startOfDay] && + [self isEarlierOrEqualToDate: otherDate.endOfDay]); + + return result; +} + + + +// --------------------------------------------------------- +#pragma mark - ISO 8601 conversion +// --------------------------------------------------------- + ++ (NSTimeInterval) timeIntervalByAddingISO8601Duration: (NSString *) duration + toDate: (NSDate *) startDate + addInDirection: (APCDateDirection) dateDirection +{ + float characterIndex = 0, years = 0, months = 0, weeks = 0, days = 0, hours = 0, minutes = 0, seconds = 0; BOOL timeStarted = NO; - while(i < duration.length) + while (characterIndex < duration.length) { - NSString *str = [duration substringWithRange:NSMakeRange(i, duration.length-i)]; - - i++; + NSString *substring = [duration substringWithRange: NSMakeRange (characterIndex, duration.length - characterIndex)]; + + characterIndex++; - if([str hasPrefix:@"P"]) continue; + if ([substring hasPrefix: @"P"]) + { + // Expected prefix to everything. Keep going. + } - if ([str hasPrefix:@"T"]) { + else if ([substring hasPrefix: @"T"]) + { timeStarted = YES; - continue; } - - - NSScanner *sc = [NSScanner scannerWithString:str]; - float value = 0; - - if ([sc scanFloat:&value]) + + else { - i += [sc scanLocation]-1; - - str = [duration substringWithRange:NSMakeRange(i, duration.length-i)]; - - i++; - - if([str hasPrefix:@"Y"]) - years = value; - else if([str hasPrefix:@"M"] && !timeStarted) - months = value; - else if([str hasPrefix:@"W"]) - weeks = value; - else if([str hasPrefix:@"D"]) - days = value; - else if([str hasPrefix:@"H"]) - hours = value; - else if([str hasPrefix:@"M"] && timeStarted) - minutes = value; - else if([str hasPrefix:@"S"]) - seconds = value; + NSScanner *scanner = [NSScanner scannerWithString: substring]; + float value = 0; + + if ([scanner scanFloat: & value]) + { + characterIndex += [scanner scanLocation] - 1; + substring = [duration substringWithRange: NSMakeRange (characterIndex, duration.length - characterIndex)]; + characterIndex ++; + + if ([substring hasPrefix: @"Y"]) { years = value; } + else if ([substring hasPrefix: @"M"] && ! timeStarted) { months = value; } + else if ([substring hasPrefix: @"W"]) { weeks = value; } + else if ([substring hasPrefix: @"D"]) { days = value; } + else if ([substring hasPrefix: @"H"]) { hours = value; } + else if ([substring hasPrefix: @"M"] && timeStarted) { minutes = value; } + else if ([substring hasPrefix: @"S"]) { seconds = value; } + } } } - -// NSLog(@"%@", [NSString stringWithFormat:@"%0.2f years, %0.2f months, %0.2f weeks, %0.2f days, %0.2f hours, %0.2f mins, %0.2f seconds", years, months, weeks, days, hours, minutes, seconds]); - NSTimeInterval interval = 0; - interval = years * 365 + months * 30 + weeks * 7 + days; //Days - interval = (interval * 24) + hours; //Hours - interval = (interval * 60) + minutes; //Minutes - interval = (interval * 60) + seconds; //Seconds - return interval; + + if (dateDirection == APCDateDirectionForwards) + { + // Actually, that's the default. + } + else + { + seconds = - seconds; + minutes = - minutes; + hours = - hours; + days = - days; + weeks = - weeks; + months = - months; + years = - years; + } + + NSTimeInterval elapsedTimeInterval = 0; + + if ((months != 0 || years != 0) && startDate != nil) + { + NSDateComponents *components = [NSDateComponents components: @[ @(NSCalendarUnitDay), @(NSCalendarUnitMonth), @(NSCalendarUnitYear) ] + inGregorianLocalFromDate: startDate]; + + components.month += months; + components.year += years; + components.day += days; + components.hour += hours; + components.minute += minutes; + components.second += seconds; + NSDate *newDate = components.date; + elapsedTimeInterval = [newDate timeIntervalSinceDate: startDate]; + } + else + { + /* + If we get here, either we don't have a startDate -- + so we don't know where to start counting, which means + we'll use 30 days for "days per month" and 365 for + "days per year" -- or the user didn't specify months + and/or years, which means those will zero out. + */ + elapsedTimeInterval = years * 365 + months * 30 + weeks * 7 + days; + elapsedTimeInterval = (elapsedTimeInterval * 24) + hours; + elapsedTimeInterval = (elapsedTimeInterval * 60) + minutes; + elapsedTimeInterval = (elapsedTimeInterval * 60) + seconds; + } + + return elapsedTimeInterval; +} + ++ (NSTimeInterval) timeIntervalByAddingISO8601Duration: (NSString *) duration + toDate: (NSDate *) date +{ + NSTimeInterval result = [self timeIntervalByAddingISO8601Duration: duration + toDate: date + addInDirection: APCDateDirectionForwards]; + return result; +} + ++ (NSTimeInterval) timeIntervalBySubtractingISO8601Duration: (NSString *) duration + fromDate: (NSDate *) date +{ + NSTimeInterval result = [self timeIntervalByAddingISO8601Duration: duration + toDate: date + addInDirection: APCDateDirectionBackwards]; + return result; +} + +- (NSTimeInterval) timeIntervalByAddingISO8601Duration: (NSString *) duration +{ + NSTimeInterval time = [[self class] timeIntervalByAddingISO8601Duration: duration toDate: self]; + + return time; +} + +- (NSTimeInterval) timeIntervalBySubtractingISO8601Duration: (NSString *) duration +{ + NSTimeInterval time = [[self class] timeIntervalBySubtractingISO8601Duration: duration fromDate: self]; + + return time; +} + ++ (NSDate *) dateByAddingISO8601Duration: (NSString *) duration + toDate: (NSDate *) date + addInDirection: (APCDateDirection) dateDirection +{ + NSTimeInterval timeToAdd = [self timeIntervalByAddingISO8601Duration: duration + toDate: date + addInDirection: dateDirection]; + + if (date == nil) + { + date = [NSDate date]; + } + + NSDate *result = [date dateByAddingTimeInterval: timeToAdd]; + + return result; +} + ++ (NSDate *) dateByAddingISO8601Duration: (NSString *) duration + toDate: (NSDate *) date +{ + NSDate *result = [self dateByAddingISO8601Duration: duration + toDate: date + addInDirection: APCDateDirectionForwards]; + return result; } ++ (NSDate *) dateBySubtractingISO8601Duration: (NSString *) duration + fromDate: (NSDate *) date +{ + NSDate *result = [self dateByAddingISO8601Duration: duration + toDate: date + addInDirection: APCDateDirectionBackwards]; + return result; +} + +- (NSDate *) dateByAddingISO8601Duration: (NSString *) durationString +{ + NSDate *result = [[self class] dateByAddingISO8601Duration: durationString toDate: self]; + + return result; +} + +- (NSDate *) dateBySubtractingISO8601Duration: (NSString *) durationString +{ + NSDate *result = [[self class] dateBySubtractingISO8601Duration: durationString fromDate: self]; + + return result; +} + + @end diff --git a/APCAppCore/APCAppCore/Library/Categories/NSDictionary+APCAdditions.h b/APCAppCore/APCAppCore/Library/Categories/NSDictionary+APCAdditions.h index 38764131..c46e8bb7 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NSDictionary+APCAdditions.h +++ b/APCAppCore/APCAppCore/Library/Categories/NSDictionary+APCAdditions.h @@ -39,4 +39,32 @@ + (instancetype) dictionaryWithJSONString: (NSString *) string; - (NSString *)formatNumbersAndDays; + +/** + Loads the specified file from disk, attempts to interpret + it as a JSON dictionary, and returns the resulting + NSDictionary. If it encounters a problem, stops, returns + nil, and optionally returns an error in the specified + error object. + + @param filename The normal-looking name of a file in the + specified bundle, like "temp.json". + + @param bundle The application bundle in which to search + for this file. Pass nil to use the "main" bundle + [NSBundle mainBundle]. + + @param errorToReturn Will contain the error results, if + any, or will be set to nil if there was no error. Pass + nil if you want to ignore this value. You can still check + the result value for nil to see if there was a problem. + + @return an NSDictionary containing the contents of the + specified file, or nil if there was a problem. + */ ++ (NSDictionary *) dictionaryWithContentsOfJSONFileWithName: (NSString *) filename + inBundle: (NSBundle *) bundle + returningError: (NSError * __autoreleasing *) errorToReturn; + + @end diff --git a/APCAppCore/APCAppCore/Library/Categories/NSDictionary+APCAdditions.m b/APCAppCore/APCAppCore/Library/Categories/NSDictionary+APCAdditions.m index 705ed236..e80277d3 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NSDictionary+APCAdditions.m +++ b/APCAppCore/APCAppCore/Library/Categories/NSDictionary+APCAdditions.m @@ -38,6 +38,14 @@ static NSUInteger numberOfDaysOfWeek = (sizeof(daysOfWeekNames) / sizeof(NSString *)); static NSString *oneThroughFiveNames[] = { @"Once", @"Two times", @"Three times", @"Four times", @"Five times" }; +static NSString * const APCErrorDomainLoadingDictionary = @"APCErrorDomainLoadingDictionary"; +static NSInteger const APCErrorLoadingJsonNoFileCode = 1; +static NSString * const APCErrorLoadingJsonNoFileReason = @"Can't Find JSON File"; +static NSString * const APCErrorLoadingJsonNoFileSuggestion = @"We were unable to find a file with the specified filename."; +static NSInteger const APCErrorLoadingJsonNoDictionaryCode = 2; +static NSString * const APCErrorLoadingJsonNoDictionaryReason = @"Can't Understand JSON File"; +static NSString * const APCErrorLoadingJsonNoDictionarySuggestion = @"We were unable to find a dictionary at the top level of the JSON file at the specified path."; + @implementation NSDictionary (APCAdditions) - (NSString *)JSONString @@ -110,4 +118,78 @@ - (NSString *)formatNumbersAndDays } return result; } + ++ (NSDictionary *) dictionaryWithContentsOfJSONFileWithName: (NSString *) filename + inBundle: (NSBundle *) bundle + returningError: (NSError * __autoreleasing *) errorToReturn +{ + if (bundle == nil) + { + bundle = [NSBundle mainBundle]; + } + + NSError *localError = nil; + NSDictionary *jsonDictionary = nil; + NSString *extension = filename.pathExtension; + NSString *basename = [filename substringToIndex: filename.length - extension.length - 1]; + + NSString *pathToJSONFile = [bundle pathForResource: basename + ofType: extension]; + + if (! pathToJSONFile) + { + localError = [NSError errorWithCode: APCErrorLoadingJsonNoFileCode + domain: APCErrorDomainLoadingDictionary + failureReason: APCErrorLoadingJsonNoFileReason + recoverySuggestion: APCErrorLoadingJsonNoFileSuggestion + relatedFilePath: filename]; + } + else + { + NSError *errorReadingFile = nil; + NSData *maybeJsonData = [NSData dataWithContentsOfFile: pathToJSONFile + options: 0 + error: & errorReadingFile]; + + if (! maybeJsonData) + { + localError = errorReadingFile; + } + else + { + NSError *errorConvertingToJSON = nil; + id maybeJsonDictionary = [NSJSONSerialization JSONObjectWithData: maybeJsonData + options: NSJSONReadingMutableContainers + error: & errorConvertingToJSON]; + + if (! maybeJsonDictionary) + { + localError = errorConvertingToJSON; + } + + else if (! [maybeJsonDictionary isKindOfClass: [NSDictionary class]]) + { + localError = [NSError errorWithCode: APCErrorLoadingJsonNoDictionaryCode + domain: APCErrorDomainLoadingDictionary + failureReason: APCErrorLoadingJsonNoDictionaryReason + recoverySuggestion: APCErrorLoadingJsonNoDictionarySuggestion + relatedFilePath: pathToJSONFile]; + } + + else + { + // Done! + jsonDictionary = maybeJsonDictionary; + } + } + } + + if (errorToReturn != nil) + { + * errorToReturn = localError; + } + + return jsonDictionary; +} + @end diff --git a/APCAppCore/APCAppCore/Library/Categories/NSError+APCAdditions.h b/APCAppCore/APCAppCore/Library/Categories/NSError+APCAdditions.h index 12c5b0ad..3963535f 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NSError+APCAdditions.h +++ b/APCAppCore/APCAppCore/Library/Categories/NSError+APCAdditions.h @@ -59,12 +59,14 @@ FOUNDATION_EXPORT NSString * const kAPCInvalidEmailAddressOrPasswordErrorMessage /*********************************************************************************/ /** - Shortcut for creating an NSError with the specified fields. - Code and domain are required. The other fields are optional. + Creates an NSError with the specified domain, error code, + reason, and suggestion, using Apple's standard keys to + store the reason and suggestion in the error's userInfo + dictionary. - These convenience methods all call the same, master convenience - method behind the scenes. Please add any more such methods - you need. + These convenience methods all call the same, master + convenience method behind the scenes. Please add any + more such methods you need. @param code An error code. Any integer you like. @@ -76,12 +78,14 @@ FOUNDATION_EXPORT NSString * const kAPCInvalidEmailAddressOrPasswordErrorMessage recoverySuggestion: (NSString *) localizedRecoverySuggestion; /** - Shortcut for creating an NSError with the specified fields. - Code and domain are required. The other fields are optional. + Creates an NSError with the specified domain, error code, + reason, suggestion, and originating error, using Apple's + standard keys to store the latter three items in the + error's userInfo dictionary. - These convenience methods all call the same, master convenience - method behind the scenes. Please add any more such methods - you need. + These convenience methods all call the same, master + convenience method behind the scenes. Please add any + more such methods you need. @param code An error code. Any integer you like. @@ -102,12 +106,14 @@ FOUNDATION_EXPORT NSString * const kAPCInvalidEmailAddressOrPasswordErrorMessage nestedError: (NSError *) rootCause; /** - Shortcut for creating an NSError with the specified fields. - Code and domain are required. The other fields are optional. + Creates an NSError with the specified domain, error code, + reason, suggestion, and a related file path, using Apple's + standard keys to store the latter three items in the + error's userInfo dictionary. - These convenience methods all call the same, master convenience - method behind the scenes. Please add any more such methods - you need. + These convenience methods all call the same, master + convenience method behind the scenes. Please add any + more such methods you need. @param code An error code. Any integer you like. @@ -120,12 +126,14 @@ FOUNDATION_EXPORT NSString * const kAPCInvalidEmailAddressOrPasswordErrorMessage relatedFilePath: (NSString *) someFilePath; /** - Shortcut for creating an NSError with the specified fields. - Code and domain are required. The other fields are optional. + Creates an NSError with the specified domain, error code, + reason, suggestion, and a related URL, using Apple's + standard keys to store the latter three items in the + error's userInfo dictionary. - These convenience methods all call the same, master convenience - method behind the scenes. Please add any more such methods - you need. + These convenience methods all call the same, master + convenience method behind the scenes. Please add any + more such methods you need. @param code An error code. Any integer you like. @@ -138,12 +146,15 @@ FOUNDATION_EXPORT NSString * const kAPCInvalidEmailAddressOrPasswordErrorMessage relatedURL: (NSURL *) someURL; /** - Shortcut for creating an NSError with the specified fields. - Code and domain are required. The other fields are optional. + Creates an NSError with the specified domain, error code, + reason, suggestion, a related file path, a related URL, + and an originating error. Uses Apple's standard keys to + store those latter five items in the error's userInfo + dictionary. - These convenience methods all call the same, master convenience - method behind the scenes. Please add any more such methods - you need. + These convenience methods all call the same, master + convenience method behind the scenes. Please add any + more such methods you need. @param code An error code. Any integer you like. @@ -166,12 +177,18 @@ FOUNDATION_EXPORT NSString * const kAPCInvalidEmailAddressOrPasswordErrorMessage nestedError: (NSError *) rootCause; /** - Shortcut for creating an NSError with the specified fields. - Code and domain are required. The other fields are optional. - - These convenience methods all call the same, master convenience - method behind the scenes. Please add any more such methods - you need. + Creates an NSError with the specified domain, error code, + reason, suggestion, a related file path, a related URL, an + originating error, and a dictionary of arbitrary other + data. Uses Apple's standard keys to store the reason, + suggestion, file path, URL, and originating error in the + error's user-info dictionary, and adds any items with + non-conflicting keys from your otherUserInfo into that + same dictionary. + + These convenience methods all call the same, master + convenience method behind the scenes. Please add any + more such methods you need. @param code An error code. Any integer you like. @@ -205,9 +222,9 @@ FOUNDATION_EXPORT NSString * const kAPCInvalidEmailAddressOrPasswordErrorMessage otherUserInfo: (NSDictionary *) otherUserInfo; /** - Walks through the error and prepares a friendly printout for it, - specifically so we can print out and format the contents of nested - errors, arrays, and dictionaries. + Walks through the error and prepares a friendly printout + for it, specifically so we can print out and format the + contents of nested errors, arrays, and dictionaries. */ - (NSString *) friendlyFormattedString; diff --git a/APCAppCore/APCAppCore/Library/Categories/NSManagedObject+APCHelper.h b/APCAppCore/APCAppCore/Library/Categories/NSManagedObject+APCHelper.h index 9573dc7e..3fe7540d 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NSManagedObject+APCHelper.h +++ b/APCAppCore/APCAppCore/Library/Categories/NSManagedObject+APCHelper.h @@ -34,15 +34,28 @@ #import @interface NSManagedObject (APCHelper) -/*********************************************************************************/ + + + +// --------------------------------------------------------- #pragma mark - Class Methods -/*********************************************************************************/ +// --------------------------------------------------------- + + (instancetype)newObjectForContext:(NSManagedObjectContext*)context; + + (NSFetchRequest*)request; -/*********************************************************************************/ ++ (NSFetchRequest*)requestWithPredicate:(NSPredicate *)predicate; + ++ (NSFetchRequest*)requestWithPredicate:(NSPredicate *)predicate + sortDescriptors:(NSArray *)sortDescriptors; + + + +// --------------------------------------------------------- #pragma mark - Instance Methods -/*********************************************************************************/ +// --------------------------------------------------------- + - (BOOL)saveToPersistentStore:(NSError *__autoreleasing *)error; @end diff --git a/APCAppCore/APCAppCore/Library/Categories/NSManagedObject+APCHelper.m b/APCAppCore/APCAppCore/Library/Categories/NSManagedObject+APCHelper.m index 64dadcac..366636de 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NSManagedObject+APCHelper.m +++ b/APCAppCore/APCAppCore/Library/Categories/NSManagedObject+APCHelper.m @@ -46,6 +46,21 @@ + (NSFetchRequest *)request return [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([self class])]; } ++ (NSFetchRequest *)requestWithPredicate:(NSPredicate *)predicate +{ + NSFetchRequest *request = [self request]; + request.predicate = predicate; + return request; +} + ++ (NSFetchRequest *)requestWithPredicate:(NSPredicate *)predicate + sortDescriptors:(NSArray *)sortDescriptors +{ + NSFetchRequest *request = [self requestWithPredicate: predicate]; + request.sortDescriptors = sortDescriptors; + return request; +} + - (BOOL)saveToPersistentStore:(NSError *__autoreleasing *)error { __block NSError *localError = nil; diff --git a/APCAppCore/APCAppCore/Library/Categories/NewDataCollector/APCDataArchiver.h b/APCAppCore/APCAppCore/Library/Categories/NewDataCollector/APCDataArchiver.h index b2fe7883..8a143dce 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NewDataCollector/APCDataArchiver.h +++ b/APCAppCore/APCAppCore/Library/Categories/NewDataCollector/APCDataArchiver.h @@ -33,6 +33,7 @@ #import #import +#import "APCDataVerificationServerAccessControl.h" @class ORKTaskResult; @@ -71,7 +72,7 @@ Make sure crackers (Bad Guys) don't know these features exist, and (also) cannot use them, even by accident. */ -#ifdef USE_DATA_VERIFICATION_CLIENT +#ifdef USE_DATA_VERIFICATION_SERVER /** Should we save the unencrypted .zip file? Specifically diff --git a/APCAppCore/APCAppCore/Library/Categories/NewDataCollector/APCDataArchiver.m b/APCAppCore/APCAppCore/Library/Categories/NewDataCollector/APCDataArchiver.m index 44e78039..9803e572 100644 --- a/APCAppCore/APCAppCore/Library/Categories/NewDataCollector/APCDataArchiver.m +++ b/APCAppCore/APCAppCore/Library/Categories/NewDataCollector/APCDataArchiver.m @@ -197,7 +197,7 @@ - (instancetype) init Make sure crackers (Bad Guys) don't know these features exist, and (also) cannot use them, even by accident. */ - #ifdef USE_DATA_VERIFICATION_CLIENT + #ifdef USE_DATA_VERIFICATION_SERVER _preserveUnencryptedFile = NO; _unencryptedFilePath = nil; @@ -705,7 +705,7 @@ - (NSString*)writeToOutputDirectory:(NSString *)outputDirectory { Make sure crackers (Bad Guys) don't know these features exist, and (also) cannot use them, even by accident. */ -#ifdef USE_DATA_VERIFICATION_CLIENT +#ifdef USE_DATA_VERIFICATION_SERVER NSString * newUnEncryptedPath = [outputDirectory stringByAppendingPathComponent:@"unencrypted.zip"]; diff --git a/APCAppCore/APCAppCore/Library/Categories/SBBGuidCreatedOnVersionHolder+APCAdditions.h b/APCAppCore/APCAppCore/Library/Categories/SBBGuidCreatedOnVersionHolder+APCAdditions.h deleted file mode 100644 index 950c0dd8..00000000 --- a/APCAppCore/APCAppCore/Library/Categories/SBBGuidCreatedOnVersionHolder+APCAdditions.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// SBBGuidCreatedOnVersionHolder+APCAdditions.h -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#import - -@interface SBBGuidCreatedOnVersionHolder (APCAdditions) - -- (NSString*) uniqueID; - -@end diff --git a/APCAppCore/APCAppCore/Library/Categories/SBBGuidCreatedOnVersionHolder+APCAdditions.m b/APCAppCore/APCAppCore/Library/Categories/SBBGuidCreatedOnVersionHolder+APCAdditions.m deleted file mode 100644 index af0c0848..00000000 --- a/APCAppCore/APCAppCore/Library/Categories/SBBGuidCreatedOnVersionHolder+APCAdditions.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// SBBGuidCreatedOnVersionHolder+APCAdditions.m -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#import "SBBGuidCreatedOnVersionHolder+APCAdditions.h" - -@implementation SBBGuidCreatedOnVersionHolder (APCAdditions) - -- (NSString*) uniqueID -{ - NSString * retValue; - if (self.version != nil) { - retValue = [NSString stringWithFormat:@"%@-%@-%@", self.guid, self.createdOn, self.version]; - } - else if (self.versionValue > 0) - { - retValue = [NSString stringWithFormat:@"%@-%@-%lld", self.guid, self.createdOn, self.versionValue]; - } - else - { - retValue = [NSString stringWithFormat:@"%@-%@", self.guid, self.createdOn]; - } - return retValue; -} - -@end diff --git a/APCAppCore/APCAppCore/Library/Categories/SBBSchedule+APCHelper.h b/APCAppCore/APCAppCore/Library/Categories/SBBSchedule+APCHelper.h new file mode 100644 index 00000000..5f72fde8 --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Categories/SBBSchedule+APCHelper.h @@ -0,0 +1,45 @@ +// +// SBBSchedule+APCHelper.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + +@interface SBBSchedule (APCHelper) + +/** + As of this writing, the SBBSchedule class doesn't seem + to have a -description method. Keep an eye on that; when + and if they do grow one, we can likely remove this method. + */ +- (NSString *) description; + +@end diff --git a/APCAppCore/APCAppCore/Library/Categories/SBBSchedule+APCHelper.m b/APCAppCore/APCAppCore/Library/Categories/SBBSchedule+APCHelper.m new file mode 100644 index 00000000..1538a13d --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Categories/SBBSchedule+APCHelper.m @@ -0,0 +1,53 @@ +// +// SBBSchedule+APCHelper.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "SBBSchedule+APCHelper.h" + +@implementation SBBSchedule (APCHelper) + +- (NSString *) description +{ + NSString *result = [NSString stringWithFormat: @"SBBSchedule 0x%x { type: %@, cronTrigger: %@, startsOn: %@, endsOn: %@, label: %@, expires: %@ }", + (unsigned int) self, + self.scheduleType, + self.cronTrigger, + self.startsOn, + self.endsOn, + self.label, + self.expires + ]; + + return result; +} + +@end diff --git a/APCAppCore/APCAppCore/Library/DataArchiverAndUploader/APCDataArchiverAndUploader.m b/APCAppCore/APCAppCore/Library/DataArchiverAndUploader/APCDataArchiverAndUploader.m index fee01c59..07fc680e 100644 --- a/APCAppCore/APCAppCore/Library/DataArchiverAndUploader/APCDataArchiverAndUploader.m +++ b/APCAppCore/APCAppCore/Library/DataArchiverAndUploader/APCDataArchiverAndUploader.m @@ -1765,7 +1765,7 @@ - (void) beginTheUpload to Bad Guys in production. Even if the code isn't called, if it's in RAM at all, it can be exploited. */ - #ifdef USE_DATA_VERIFICATION_CLIENT + #ifdef USE_DATA_VERIFICATION_SERVER [APCDataVerificationClient uploadDataFromFileAtPath: self.unencryptedZipPath]; diff --git a/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationClient.h b/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationClient.h index cbece9ef..26d71f88 100644 --- a/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationClient.h +++ b/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationClient.h @@ -30,14 +30,16 @@ // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // - + + /* Only allow this file to exist in the compiled code if we're diagnosting stuff, in-house. */ // --------------------------------------------------------- -#ifdef USE_DATA_VERIFICATION_CLIENT +#import "APCDataVerificationServerAccessControl.h" +#ifdef USE_DATA_VERIFICATION_SERVER // --------------------------------------------------------- @@ -85,7 +87,7 @@ // --------------------------------------------------------- -#endif // USE_DATA_VERIFICATION_CLIENT +#endif // USE_DATA_VERIFICATION_SERVER // --------------------------------------------------------- diff --git a/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationClient.m b/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationClient.m index 4d1b489e..c7d2dfb4 100644 --- a/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationClient.m +++ b/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationClient.m @@ -34,13 +34,12 @@ /* Only allow this file to exist in the compiled code if - we're diagnosing stuff, in-house. For documentation, - see: + we're diagnosing stuff, in-house. */ - // --------------------------------------------------------- -#ifdef USE_DATA_VERIFICATION_CLIENT +#import "APCDataVerificationServerAccessControl.h" +#ifdef USE_DATA_VERIFICATION_SERVER // --------------------------------------------------------- @@ -282,7 +281,7 @@ + (NSData *) createFormBodyPartWithBoundary: (NSString *) boundary // --------------------------------------------------------- -#endif // USE_DATA_VERIFICATION_CLIENT +#endif // USE_DATA_VERIFICATION_SERVER // --------------------------------------------------------- diff --git a/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationServerAccessControl.h b/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationServerAccessControl.h new file mode 100644 index 00000000..07a0a7db --- /dev/null +++ b/APCAppCore/APCAppCore/Library/DataVerificationClient/APCDataVerificationServerAccessControl.h @@ -0,0 +1,52 @@ +// +// APCDataVerificationServerAccessControl.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + + + +/* + Uncomment this line in order to use the data-verification + server. + + If you do that: consider carefully whether you want to + push this change to Git. It allows the app to broadcast + its unencrypted content to a local IP address. (It's very + helpful during debugging.) + */ + +#if DEBUG + + #define USE_DATA_VERIFICATION_SERVER + +#endif + + diff --git a/APCAppCore/APCAppCore/Library/Logging/APCLog.m b/APCAppCore/APCAppCore/Library/Logging/APCLog.m index 114c2d5e..2c68e243 100644 --- a/APCAppCore/APCAppCore/Library/Logging/APCLog.m +++ b/APCAppCore/APCAppCore/Library/Logging/APCLog.m @@ -75,6 +75,17 @@ @implementation APCLog #pragma mark - Setup // --------------------------------------------------------- +/** + Set global, static values the first time anyone calls this class. + + By definition, this method is called once per class, in a thread-safe + way, the first time the class is sent a message -- basically, the first + time we refer to the class. That means we can use this to set up stuff + that applies to all objects (instances) of this class. + + Documentation: See +initialize in the NSObject Class Reference. Currently, that's here: + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/clm/NSObject/initialize + */ + (void) initialize { if (dateFormatter == nil) @@ -108,6 +119,7 @@ + (void) methodInfo: (NSString *) apcLogMethodData { if (error != nil) { + // Note: this is expensive. NSString *description = error.friendlyFormattedString; [self logInternal_tag: APCLogTagError diff --git a/APCAppCore/APCAppCore/Library/MedicationTrackingAppComponent/NSDate+MedicationTracker.m b/APCAppCore/APCAppCore/Library/MedicationTrackingAppComponent/NSDate+MedicationTracker.m index 03879853..efa05277 100644 --- a/APCAppCore/APCAppCore/Library/MedicationTrackingAppComponent/NSDate+MedicationTracker.m +++ b/APCAppCore/APCAppCore/Library/MedicationTrackingAppComponent/NSDate+MedicationTracker.m @@ -32,10 +32,9 @@ // #import "NSDate+MedicationTracker.h" +#import "APCConstants.h" #import "NSDate+Helper.h" -static NSString *kDefaultLocale = @"en_US_POSIX"; - @implementation NSDate (MedicationTracker) - (NSDate *)getWeekStartDate: (NSInteger)weekStartIndex @@ -61,7 +60,7 @@ - (NSString *)getDayOfWeekShortString if (formatter == nil) { formatter = [[NSDateFormatter alloc] init]; - NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; + NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier: kAPCDateFormatLocaleEN_US_POSIX]; [formatter setLocale:locale]; [formatter setDateFormat:@"E"]; } @@ -73,7 +72,7 @@ - (NSString *)getDateOfMonth static NSDateFormatter *formatter; if (formatter == nil) { formatter = [[NSDateFormatter alloc] init]; - NSLocale *en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:kDefaultLocale]; + NSLocale *en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier: kAPCDateFormatLocaleEN_US_POSIX]; [formatter setLocale:en_US_POSIX]; [formatter setDateFormat:@"d"]; } diff --git a/APCAppCore/APCAppCore/Library/Objects/APCConstants.h b/APCAppCore/APCAppCore/Library/Objects/APCConstants.h index efa01b77..e87a1600 100644 --- a/APCAppCore/APCAppCore/Library/Objects/APCConstants.h +++ b/APCAppCore/APCAppCore/Library/Objects/APCConstants.h @@ -33,6 +33,13 @@ #import + + +// --------------------------------------------------------- +#pragma mark - Enums +// --------------------------------------------------------- + + typedef NS_ENUM(NSUInteger, APCSignUpPermissionsType) { kAPCSignUpPermissionsTypeNone = 0, kAPCSignUpPermissionsTypeHealthKit, @@ -54,6 +61,53 @@ typedef NS_ENUM(NSUInteger, APCDashboardGraphType) { kAPCDashboardGraphTypeDiscrete, }; +/** + Indicates where we're getting each batch of schedules and + tasks: from the server, from disk, or from various + application-specific areas. + + Please feel free to add your own sources, here. If you + do, please respect the following: + + - Make them bitmask-friendly, using the examples below. + + - Do NOT change the values of the existing items. Those + are values in our users' current databases. + + - Add your enum name to the switch() statement in the + function NSStringFromAPCScheduleSource(), inside + APCConstants.m. + */ +typedef enum : NSUInteger { + APCScheduleSourceAll = 0, + APCScheduleSourceLocalDisk = 1 << 0, // 0000 0000 0000 0001 + APCScheduleSourceServer = 1 << 1, // 0000 0000 0000 0010 + APCScheduleSourceGlucoseLog = 1 << 2, // 0000 0000 0000 0100 + APCScheduleSourceMedicationTracker = 1 << 3, // 0000 0000 0000 1000 +} APCScheduleSource; + + + +// --------------------------------------------------------- +#pragma mark - Enum Translation Functions +// --------------------------------------------------------- + +/* + Converts an APCScheduleSource object or value to a string. + + @see APCScheduleSource + */ +NSString *NSStringFromAPCScheduleSource (APCScheduleSource scheduleSource); +NSString *NSStringFromAPCScheduleSourceAsNumber (NSNumber *scheduleSourceAsNumber); +NSString *NSStringShortFromAPCScheduleSource (APCScheduleSource scheduleSource); +NSString *NSStringShortFromAPCScheduleSourceAsNumber (NSNumber *scheduleSourceAsNumber); + + + +// --------------------------------------------------------- +#pragma mark - Notifications +// --------------------------------------------------------- + FOUNDATION_EXPORT NSString *const APCUserSignedUpNotification; FOUNDATION_EXPORT NSString *const APCUserSignedInNotification; FOUNDATION_EXPORT NSString *const APCUserLogOutNotification; @@ -77,6 +131,17 @@ FOUNDATION_EXPORT NSString *const APCMotionHistoryReporterDoneNotification; FOUNDATION_EXPORT NSString *const APCHealthKitObserverQueryUpdateForSampleTypeNotification; +FOUNDATION_EXPORT NSString *const APCActivityCompletionNotification; +FOUNDATION_EXPORT NSString *const APCSchedulerUpdatedScheduledTasksNotification; +FOUNDATION_EXPORT NSString *const APCUpdateChartsNotification; + + + +// --------------------------------------------------------- +#pragma mark - Uncategorized Constants +// --------------------------------------------------------- + +FOUNDATION_EXPORT NSString *const kAnonDemographicDataUploadedKey; FOUNDATION_EXPORT NSString *const kStudyIdentifierKey; FOUNDATION_EXPORT NSString *const kAppPrefixKey; FOUNDATION_EXPORT NSString *const kBridgeEnvironmentKey; @@ -106,7 +171,7 @@ FOUNDATION_EXPORT NSString *const kHKWorkoutTypeKey; FOUNDATION_EXPORT NSString * const kPasswordKey; FOUNDATION_EXPORT NSString * const kNumberOfMinutesForPasscodeKey; -FOUNDATION_EXPORT NSUInteger const kIndexOfActivitesTab; +FOUNDATION_EXPORT NSUInteger const kAPCActivitiesTabIndex; FOUNDATION_EXPORT NSInteger const kAPCSigninErrorCode_NotSignedIn; FOUNDATION_EXPORT NSUInteger const kAPCSigninNumRetriesBeforePause; FOUNDATION_EXPORT NSTimeInterval const kAPCSigninNumSecondsBetweenRetries; @@ -157,11 +222,41 @@ FOUNDATION_EXPORT NSString *const kAllSetDashboardTextAdditional; FOUNDATION_EXPORT NSString *const kActivitiesSectionKeepGoing; FOUNDATION_EXPORT NSString *const kActivitiesSectionYesterday; FOUNDATION_EXPORT NSString *const kActivitiesSectionToday; +FOUNDATION_EXPORT NSString *const kActivitiesQueryKeyToday; +FOUNDATION_EXPORT NSString *const kActivitiesQueryKeyYesterday; FOUNDATION_EXPORT NSString *const kActivitiesRequiresMotionSensor; +// --------------------------------------------------------- +#pragma mark - Known Times and Dates +// --------------------------------------------------------- + +FOUNDATION_EXPORT NSTimeInterval const kAPCTimeOneHour; +FOUNDATION_EXPORT NSTimeInterval const kAPCTimeOneMinute; +FOUNDATION_EXPORT NSUInteger const kAPCTimeFirstLegalISO8601HourOfDay; +FOUNDATION_EXPORT NSUInteger const kAPCTimeLastLegalISO8601HourOfDay; + + + +// --------------------------------------------------------- +#pragma mark - Fonts and Font Sizes +// --------------------------------------------------------- + +FOUNDATION_EXPORT float const kAPCActivitiesNormalFontSize; +FOUNDATION_EXPORT float const kAPCActivitiesSmallFontSize; + + + +// --------------------------------------------------------- +#pragma mark - Locales +// --------------------------------------------------------- + +FOUNDATION_EXPORT NSString *const kAPCDateFormatLocaleEN_US_POSIX; + + + // --------------------------------------------------------- #pragma mark - Events // --------------------------------------------------------- @@ -217,15 +312,3 @@ FOUNDATION_EXPORT NSString * const kAPCContentType_UnknownData; @interface APCConstants : NSObject @end - - - - - - - - - - - - diff --git a/APCAppCore/APCAppCore/Library/Objects/APCConstants.m b/APCAppCore/APCAppCore/Library/Objects/APCConstants.m index 53b92dd9..ff92c1ed 100644 --- a/APCAppCore/APCAppCore/Library/Objects/APCConstants.m +++ b/APCAppCore/APCAppCore/Library/Objects/APCConstants.m @@ -36,33 +36,85 @@ // --------------------------------------------------------- -#pragma mark - Constants +#pragma mark - Enum Translation Functions // --------------------------------------------------------- -NSString *const APCUserSignedUpNotification = @"APCUserSignedUpNotification"; -NSString *const APCUserSignedInNotification = @"APCUserSignedInNotification"; -NSString *const APCUserLogOutNotification = @"APCUserLogOutNotification"; -NSString *const APCUserWithdrawStudyNotification = @"APCUserWithdrawStudyNotification"; -NSString *const APCUserDidConsentNotification = @"APCUserDidConsentNotification"; +NSString *NSStringFromAPCScheduleSource (APCScheduleSource scheduleSource) +{ + NSString *result = nil; -NSString *const APCScheduleUpdatedNotification = @"APCScheduleUpdatedNotification"; -NSString *const APCUpdateActivityNotification = @"APCUpdateActivityNotification"; -NSString *const APCDayChangedNotification = @"APCDayChangedNotification"; + switch (scheduleSource) + { + case APCScheduleSourceAll: result = @"APCScheduleSourceAll"; break; + case APCScheduleSourceLocalDisk: result = @"APCScheduleSourceLocalDisk"; break; + case APCScheduleSourceServer: result = @"APCScheduleSourceServer"; break; + case APCScheduleSourceGlucoseLog: result = @"APCScheduleSourceGlucoseLog"; break; + case APCScheduleSourceMedicationTracker: result = @"APCScheduleSourceMedicationTracker"; break; -NSString *const APCAppDidRegisterUserNotification = @"APCAppDidRegisterUserNotification"; -NSString *const APCAppDidFailToRegisterForRemoteNotification = @"APCAppDidFailToRegisterForRemoteNotifications"; + default: result = @"Unknown"; break; + } -NSString *const APCScoringHealthKitDataIsAvailableNotification = @"APCScoringHealthKitDataIsAvailableNotification"; -NSString *const APCTaskResultsProcessedNotification = @"APCTaskResultsProcessedNotification"; + return result; +} -NSString *const APCUpdateTasksReminderNotification = @"APCUpdateTasksReminderNotification"; +NSString *NSStringFromAPCScheduleSourceAsNumber (NSNumber *scheduleSourceAsNumber) +{ + return NSStringFromAPCScheduleSource (scheduleSourceAsNumber.integerValue); +} -NSString *const APCConsentCompletedWithDisagreeNotification = @"goToSignInJoinScreen"; +NSString *NSStringShortFromAPCScheduleSource (APCScheduleSource scheduleSource) +{ + NSString *result = NSStringFromAPCScheduleSource (scheduleSource); + result = [result substringFromIndex: @"APCScheduleSource".length]; + return result; +} -NSString *const APCMotionHistoryReporterDoneNotification = @"APCMotionHistoryReporterDoneNotification"; +NSString *NSStringShortFromAPCScheduleSourceAsNumber (NSNumber *scheduleSourceAsNumber) +{ + return NSStringShortFromAPCScheduleSource (scheduleSourceAsNumber.integerValue); +} + + + +// --------------------------------------------------------- +#pragma mark - Notifications +// --------------------------------------------------------- + +NSString *const APCUserSignedUpNotification = @"APCUserSignedUpNotification"; +NSString *const APCUserSignedInNotification = @"APCUserSignedInNotification"; +NSString *const APCUserLogOutNotification = @"APCUserLogOutNotification"; +NSString *const APCUserWithdrawStudyNotification = @"APCUserWithdrawStudyNotification"; +NSString *const APCUserDidConsentNotification = @"APCUserDidConsentNotification"; + +NSString *const APCScheduleUpdatedNotification = @"APCScheduleUpdatedNotification"; +NSString *const APCUpdateActivityNotification = @"APCUpdateActivityNotification"; +NSString *const APCDayChangedNotification = @"APCDayChangedNotification"; + +NSString *const APCAppDidRegisterUserNotification = @"APCAppDidRegisterUserNotification"; +NSString *const APCAppDidFailToRegisterForRemoteNotification = @"APCAppDidFailToRegisterForRemoteNotifications"; + +NSString *const APCScoringHealthKitDataIsAvailableNotification = @"APCScoringHealthKitDataIsAvailableNotification"; +NSString *const APCTaskResultsProcessedNotification = @"APCTaskResultsProcessedNotification"; + +NSString *const APCUpdateTasksReminderNotification = @"APCUpdateTasksReminderNotification"; + +NSString *const APCConsentCompletedWithDisagreeNotification = @"goToSignInJoinScreen"; + +NSString *const APCMotionHistoryReporterDoneNotification = @"APCMotionHistoryReporterDoneNotification"; NSString *const APCHealthKitObserverQueryUpdateForSampleTypeNotification = @"APCHealthKitObserverQueryUpdateForSampleTypeNotification"; +NSString *const APCActivityCompletionNotification = @"APCActivityCompletionNotification"; +NSString *const APCSchedulerUpdatedScheduledTasksNotification = @"APCSchedulerUpdatedScheduledTasksNotification"; +NSString *const APCUpdateChartsNotification = @"APCUpdateChartsNotification"; + + + +// --------------------------------------------------------- +#pragma mark - Uncategorized Constants +// --------------------------------------------------------- + +NSString *const kAnonDemographicDataUploadedKey = @"kAnonDemographicDataUploadedKey"; NSString *const kStudyIdentifierKey = @"StudyIdentifierKey"; NSString *const kAppPrefixKey = @"AppPrefixKey"; NSString *const kBridgeEnvironmentKey = @"BridgeEnvironmentKey"; @@ -93,7 +145,7 @@ NSString * const kPasswordKey = @"Password"; NSString * const kNumberOfMinutesForPasscodeKey = @"NumberOfMinutesForPasscodeKey"; -NSUInteger const kIndexOfActivitesTab = 0; +NSUInteger const kAPCActivitiesTabIndex = 0; NSInteger const kAPCSigninErrorCode_NotSignedIn = 404; NSUInteger const kAPCSigninNumRetriesBeforePause = 10; NSTimeInterval const kAPCSigninNumSecondsBetweenRetries = 10; @@ -143,11 +195,41 @@ NSString *const kActivitiesSectionKeepGoing = @"activitiesSectionKeepGoing"; NSString *const kActivitiesSectionYesterday = @"activitiesSectionYesterday"; NSString *const kActivitiesSectionToday = @"activitiesSectionToday"; +NSString *const kActivitiesQueryKeyToday = @"today"; +NSString *const kActivitiesQueryKeyYesterday = @"yesterday"; NSString *const kActivitiesRequiresMotionSensor = @"activitiesRequireMotionSensor"; +// --------------------------------------------------------- +#pragma mark - Known Times and Dates +// --------------------------------------------------------- + +NSTimeInterval const kAPCTimeOneHour = 60 * 60; // seconds * minutes = 1 hour. +NSTimeInterval const kAPCTimeOneMinute = 60; // seconds per minute. +NSUInteger const kAPCTimeFirstLegalISO8601HourOfDay = 0; // midnight on a given morning. +NSUInteger const kAPCTimeLastLegalISO8601HourOfDay = 24; // midnight on a given evening. + + + +// --------------------------------------------------------- +#pragma mark - Fonts and Font Sizes +// --------------------------------------------------------- + +float const kAPCActivitiesNormalFontSize = 16.0; +float const kAPCActivitiesSmallFontSize = 14.0; + + + +// --------------------------------------------------------- +#pragma mark - Locales +// --------------------------------------------------------- + +NSString *const kAPCDateFormatLocaleEN_US_POSIX = @"en_US_POSIX"; + + + // --------------------------------------------------------- #pragma mark - Events // --------------------------------------------------------- diff --git a/APCAppCore/APCAppCore/Library/Objects/APCTasksReminderManager.h b/APCAppCore/APCAppCore/Library/Objects/APCTasksReminderManager.h index 19d13ea2..2a50f896 100644 --- a/APCAppCore/APCAppCore/Library/Objects/APCTasksReminderManager.h +++ b/APCAppCore/APCAppCore/Library/Objects/APCTasksReminderManager.h @@ -42,4 +42,6 @@ - (void)manageTaskReminder:(APCTaskReminder *)reminder; + (NSArray*) reminderTimesArray; + (NSSet *) taskReminderCategories; + +- (void)handleActivitiesUpdateWithTodaysTaskGroups:(NSArray *) todaysTaskGroups; @end diff --git a/APCAppCore/APCAppCore/Library/Objects/APCTasksReminderManager.m b/APCAppCore/APCAppCore/Library/Objects/APCTasksReminderManager.m index c2068a06..83fd08d5 100644 --- a/APCAppCore/APCAppCore/Library/Objects/APCTasksReminderManager.m +++ b/APCAppCore/APCAppCore/Library/Objects/APCTasksReminderManager.m @@ -41,9 +41,12 @@ #import "NSDate+Helper.h" #import "NSDictionary+APCAdditions.h" #import "NSManagedObject+APCHelper.h" +#import "APCTask.h" +#import "APCTaskGroup.h" #import + NSString * const kTaskReminderUserInfo = @"CurrentTaskReminder"; NSString * const kSubtaskReminderUserInfo = @"CurrentSubtaskReminder"; NSString * const kTaskReminderUserInfoKey = @"TaskReminderUserInfoKey"; @@ -57,7 +60,7 @@ NSString * const kTaskReminderDelayMessage = @"Remind me in 1 hour"; @interface APCTasksReminderManager () - +@property (strong, nonatomic) NSArray *taskGroups; @property (strong, nonatomic) NSMutableDictionary *remindersToSend; @end @@ -66,7 +69,11 @@ @implementation APCTasksReminderManager - (instancetype)init { self = [super init]; if (self) { + //posted by APCSettingsViewController on turning reminders on/off [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTasksReminder) name:APCUpdateTasksReminderNotification object:nil]; + //posted by APCBaseTaskViewController when user completes an activity + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTasksReminder) name:APCActivityCompletionNotification object:nil]; + self.reminders = [NSMutableArray new]; self.remindersToSend = [NSMutableDictionary new]; [self updateTasksReminder]; @@ -93,6 +100,13 @@ -(NSArray *)reminders{ /*********************************************************************************/ #pragma mark - Local Notification Scheduling /*********************************************************************************/ + +//updated in parallel with ActivitiesViewController +-(void)handleActivitiesUpdateWithTodaysTaskGroups: (NSArray *) todaysTaskGroups { + self.taskGroups = todaysTaskGroups; + [self updateTasksReminder]; +} + - (void) updateTasksReminder { @@ -167,7 +181,7 @@ - (void) createTaskReminder { UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert |UIUserNotificationTypeBadge |UIUserNotificationTypeSound) - categories:[APCTasksReminderManager taskReminderCategories]]; + categories:[APCTasksReminderManager taskReminderCategories]]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; [[NSUserDefaults standardUserDefaults]synchronize]; @@ -299,14 +313,16 @@ - (BOOL)reminderOn { //default to on if user has given Notification permissions if ([[UIApplication sharedApplication] currentUserNotificationSettings].types != UIUserNotificationTypeNone){ flag = @YES; - [self updateReminderOn:flag]; + [[NSUserDefaults standardUserDefaults] setObject:flag forKey:kTasksReminderDefaultsOnOffKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; } } //if Notifications are not enabled, set Reminders to off if ([[UIApplication sharedApplication] currentUserNotificationSettings].types == UIUserNotificationTypeNone) { flag = @NO; - [self updateReminderOn:flag]; + [[NSUserDefaults standardUserDefaults] setObject:flag forKey:kTasksReminderDefaultsOnOffKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; } return [flag boolValue]; @@ -437,18 +453,28 @@ -(BOOL)includeTaskInReminder:(APCTaskReminder *)taskReminder{ //the reminder for this task is off return includeTask; } - - NSArray *completedTasks = [APCTasksReminderManager scheduledTasksForTaskID:taskReminder.taskID completed:@1]; - NSArray *scheduledTasks = [APCTasksReminderManager scheduledTasksForTaskID:taskReminder.taskID completed:nil]; - if(completedTasks.count < scheduledTasks.count){//if this task has not been completed but was scheduled, include it in the reminder + APCTaskGroup *groupForTaskID; + for (APCTaskGroup *group in self.taskGroups) { + + if ([group.task.taskID isEqualToString:taskReminder.taskID]) { + groupForTaskID = group; + break; + } + } + + if (!groupForTaskID) { + includeTask = NO; + }else if (!groupForTaskID.isFullyCompleted ) {//if this task has not been completed but was required, include it in the reminder includeTask = YES; - }else if (completedTasks.count > 0 && taskReminder.resultsSummaryKey != nil) { - for (APCScheduledTask *task in completedTasks) { - - //get the result summary for this daily prompt task - if (task.lastResult) { - NSString * resultSummary = task.lastResult.resultSummary; + }else if (taskReminder.resultsSummaryKey != nil) { + //we have a completed task with a subtask reminder. Get the results object from task. + NSArray *allCompletedActivitiesForTaskID = [groupForTaskID.requiredCompletedTasks arrayByAddingObjectsFromArray:groupForTaskID.gratuitousCompletedTasks]; + + for (APCScheduledTask *subtask in allCompletedActivitiesForTaskID) { + if (subtask.results.count > 0) { + includeTask = NO; + NSString * resultSummary = subtask.lastResult.resultSummary; NSDictionary * dictionary = resultSummary ? [NSDictionary dictionaryWithJSONString:resultSummary] : nil; @@ -468,45 +494,5 @@ -(BOOL)includeTaskInReminder:(APCTaskReminder *)taskReminder{ return includeTask; } -//Pass in a taskID -+ (NSArray *)scheduledTasksForTaskID:(NSString *)taskID completed:(NSNumber *)completed -{ - - APCDateRange *dateRange = [[APCDateRange alloc]initWithStartDate:[NSDate todayAtMidnight] endDate:[NSDate tomorrowAtMidnight]]; - NSManagedObjectContext *context = ((APCAppDelegate *)[UIApplication sharedApplication].delegate).dataSubstrate.mainContext; - - NSFetchRequest * request = [APCScheduledTask request]; - request.shouldRefreshRefetchedObjects = YES; - - NSPredicate * datePredicate = [NSPredicate predicateWithFormat:@"endOn >= %@ AND task.taskID == %@", dateRange.startDate, taskID]; - - NSPredicate * completionPredicate = nil; - if (completed != nil) { - completionPredicate = [completed isEqualToNumber:@YES] ? [NSPredicate predicateWithFormat:@"completed == %@", completed] :[NSPredicate predicateWithFormat:@"completed == nil || completed == %@", completed] ; - } - - NSPredicate * finalPredicate = completionPredicate ? [NSCompoundPredicate andPredicateWithSubpredicates:@[datePredicate, completionPredicate]] : datePredicate; - request.predicate = finalPredicate; - - NSSortDescriptor *titleSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"task.taskTitle" ascending:YES]; - NSSortDescriptor * completedSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"completed" ascending:YES]; - request.sortDescriptors = @[completedSortDescriptor, titleSortDescriptor]; - - NSError * error; - NSArray * array = [context executeFetchRequest:request error:&error]; - if (array == nil) { - APCLogError2 (error); - } - - NSMutableArray * filteredArray = [NSMutableArray array]; - - for (APCScheduledTask * scheduledTask in array) { - if ([scheduledTask.dateRange compare:dateRange] != kAPCDateRangeComparisonOutOfRange) { - [filteredArray addObject:scheduledTask]; - } - } - return filteredArray.count ? filteredArray : nil; -} - @end diff --git a/APCAppCore/APCAppCore/Library/Objects/APCUtilities.h b/APCAppCore/APCAppCore/Library/Objects/APCUtilities.h index 445213cb..6316a2f4 100644 --- a/APCAppCore/APCAppCore/Library/Objects/APCUtilities.h +++ b/APCAppCore/APCAppCore/Library/Objects/APCUtilities.h @@ -73,6 +73,14 @@ */ + (NSString *) phoneInfo; +/** + Returns YES if the current build is a "DEBUG" build -- + i.e., if the DEBUG preprocessor flag is defined. Lets + us use debug-only logic in normal "if" statements, + instead of having to use #if statements. + */ ++ (BOOL) isInDebuggingMode; + /** Trims whitespace from someString and returns it. If the trimmed string has length 0, returns nil. @@ -100,10 +108,36 @@ + (NSString *) pathToTemporaryDirectoryAddingUuid: (BOOL) shouldAddUuid; +/** + Returns the file-creation date on our database file. + A good approximation of the first time the user ran the + app. + */ ++ (NSDate *) firstKnownFileAccessDate; + + @end +// --------------------------------------------------------- +#pragma mark - Other Macros +// --------------------------------------------------------- + +/** + Returns valueToTest clamped to minValue and maxValue. + I.e., returns minValue if valueToTest is less than + minValue, maxValue if valueToTest if greater than + maxValue, and valueToTest itself if it's between those + two values. + + This macro name is in ALL CAPS simply to be consistent + with MIN() and MAX(). + */ +#define CLAMP( minValue, valueToTest, maxValue ) (MIN (MAX (valueToTest, minValue), maxValue)) + + + // --------------------------------------------------------- #pragma mark - Macro: converting varArgs into a string // --------------------------------------------------------- @@ -134,7 +168,7 @@ - (void) printMyStuff: (NSString *) messageFormat, ... { - NSString extractedString = stringFromVariadicArgumentsAndFormat( messageFormat ); + NSString extractedString = NSStringFromVariadicArgumentsAndFormat ( messageFormat ); // // now use the extractedString. For example: @@ -191,6 +225,89 @@ +/** + Macro NSArrayFromVariadicArguments() + + This macro converts a bunch of "..." arguments into an NSArray, + including the parameter to the left of the "...". Each argument + must be an "id" type, or a subclass of NSObject. + + @details + To use it: + + First, create a method that ENDS with a "...", like this: + + @code + - (void) collectMyStuff: (NSNumber *) myAge, ... + { + } + @endcode + + The data type of that parameter doesn't matter for the purpose + of this macro. It only matters that there IS a parameter to the + left of the ", ..." (the comma-space-dot-dot-dot). + + Inside that method, call this macro, passing it the name of the + parameter to the left of the "...". Using the above method as + an example, you might write: + + @code + - (void) collectMyStuff: (NSNumber *) myAge, ... + { + NSArray myStuff = NSArrayFromVariadicArguments( myAge ); + + // + // now use myStuff. For example: + // + NSLog (@"All my stuff is: %@", myStuff); + } + @endcode + + You might use it like this: + + @code + NSString *name = @"Joe"; + UIColor *favoriteColor = [UIColor blueColor]; + NSNumber *age = "50"; + + [self collectMyStuff: name, favoriteColor, age]; + @endcode + + Behind the scenes, this macro adds that first parameter to + a mutable array. Then it walks through all the remaining "..." + parameters (if any), adding each of them to the same mutable + array. Finally, it slurps the contents of the mutable array + into a normal NSArray and returns that. + + Note that this macro requires ARC. (To use it without ARC, + you'll need to edit the macro to release and autorelease + things appropriately.) + + This macro was created with the same research as for + NSStringFromVariadicArgumentsAndFormat(), with some additional + help regarding this command for accessing individual parameters + in the "..." list: + + http://www.cplusplus.com/reference/cstdarg/va_arg/ + + For more information, see NSStringFromVariadicArgumentsAndFormat (). + + Other keywords to find this chunk of code: va_args, varargs, + vaargs, variadic arguments, variadic macro, dotdotdot, ellipsis, + three dots +*/ +#define NSArrayFromVariadicArguments( firstArgumentName ) \ + ({ \ + NSMutableArray *incomingObjects = [NSMutableArray new]; \ + [incomingObjects addObject: firstArgumentName]; \ + va_list arguments; \ + va_start (arguments, firstArgumentName); \ + [incomingObjects addObject: va_arg (arguments, id)]; \ + va_end (arguments); \ + NSArray *returnValue = [NSArray arrayWithArray: incomingObjects]; \ + returnValue; \ + }) + diff --git a/APCAppCore/APCAppCore/Library/Objects/APCUtilities.m b/APCAppCore/APCAppCore/Library/Objects/APCUtilities.m index b9088dbb..4413f88d 100644 --- a/APCAppCore/APCAppCore/Library/Objects/APCUtilities.m +++ b/APCAppCore/APCAppCore/Library/Objects/APCUtilities.m @@ -33,6 +33,7 @@ #import "APCUtilities.h" #import "APCDeviceHardware.h" +#import "APCLog.h" /** These are fixed per launch of the app. They're also @@ -139,6 +140,17 @@ works like this (here's line 2 as an example): return _appName; } ++ (BOOL) isInDebuggingMode +{ + BOOL result = NO; + + #if DEBUG + result = YES; + #endif + + return result; +} + /** Trims whitespace from someString and returns it. If the trimmed string has length 0, returns nil. @@ -177,4 +189,30 @@ + (NSString *) pathToTemporaryDirectoryAddingUuid: (BOOL) shouldAddUuid return tempDirectory; } ++ (NSDate *) firstKnownFileAccessDate +{ + NSDate *result = nil; + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *applicationDocumentsDirectory = ([paths count] > 0) ? paths[0] : nil; + NSFileManager* fileManager = [NSFileManager defaultManager]; + NSString* filePath = [applicationDocumentsDirectory stringByAppendingPathComponent:@"db.sqlite"]; + + if ([fileManager fileExistsAtPath:filePath]) + { + NSError* error = nil; + NSDictionary* attributes = [fileManager attributesOfItemAtPath:filePath error:&error]; + + if (error) + { + APCLogError2(error); + } + else + { + result = [attributes fileCreationDate]; + } + } + + return result; +} + @end diff --git a/APCAppCore/APCAppCore/Library/ScheduleExpression/APCScheduleExpression.h b/APCAppCore/APCAppCore/Library/ScheduleExpression/APCScheduleExpression.h index 19f2004e..6e89ebc0 100644 --- a/APCAppCore/APCAppCore/Library/ScheduleExpression/APCScheduleExpression.h +++ b/APCAppCore/APCAppCore/Library/ScheduleExpression/APCScheduleExpression.h @@ -33,6 +33,8 @@ #import +@class APCScheduleEnumerator; + /** @@ -105,7 +107,7 @@ * * @return An enumerator; returns NSDate(s) that satisfies `self` */ -- (NSEnumerator*)enumeratorBeginningAtTime:(NSDate*)start; +- (APCScheduleEnumerator*)enumeratorBeginningAtTime:(NSDate*)start; /** * An enumerator that provides a finite sequence of NSDates from `start` to `end` that satifisies `self` @@ -115,6 +117,6 @@ * * @return An enumerator, returns NSDate(s) that satisfies `self` */ -- (NSEnumerator*)enumeratorBeginningAtTime:(NSDate*)start endingAtTime:(NSDate*)end; +- (APCScheduleEnumerator*)enumeratorBeginningAtTime:(NSDate*)start endingAtTime:(NSDate*)end; @end diff --git a/APCAppCore/APCAppCore/Library/ScheduleExpression/APCScheduleExpression.m b/APCAppCore/APCAppCore/Library/ScheduleExpression/APCScheduleExpression.m index e5e8ef14..e0bd564d 100644 --- a/APCAppCore/APCAppCore/Library/ScheduleExpression/APCScheduleExpression.m +++ b/APCAppCore/APCAppCore/Library/ScheduleExpression/APCScheduleExpression.m @@ -85,7 +85,7 @@ - (instancetype)initWithExpression:(NSString*)expression timeZero:(NSTimeInterva return self; } -- (NSEnumerator*)enumeratorBeginningAtTime:(NSDate*)start +- (APCScheduleEnumerator*)enumeratorBeginningAtTime:(NSDate*)start { NSParameterAssert(start != nil); @@ -98,11 +98,11 @@ - (NSEnumerator*)enumeratorBeginningAtTime:(NSDate*)start originalCronExpression:self.originalCronExpression]; } -- (NSEnumerator*)enumeratorBeginningAtTime:(NSDate*)start endingAtTime:(NSDate*)end +- (APCScheduleEnumerator*)enumeratorBeginningAtTime:(NSDate*)start endingAtTime:(NSDate*)end { NSParameterAssert(start != nil); NSParameterAssert(end != nil); - + return [[APCScheduleEnumerator alloc] initWithBeginningTime:start endingTime:end minuteSelector:self.minuteSelector diff --git a/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleEnumerator.h b/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleEnumerator.h index 886ab6e9..cbe0a71e 100644 --- a/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleEnumerator.h +++ b/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleEnumerator.h @@ -1,5 +1,5 @@ // -// APCScheduleEnumerator.h +// APCScheduleEnumerator.h // APCAppCore // // Copyright (c) 2015, Apple Inc. All rights reserved. @@ -55,4 +55,18 @@ yearSelector:(APCTimeSelector *) yearSelector originalCronExpression: (NSString *) originalExpression; +/** + Simply calls -nextScheduledDate. Provided for the ability + to enumerate using fast enumeration (i.e., inside a for + loop). + */ +- (id) nextObject; + +/** + The next date being emitted by this enumerator. If this + is the first time being called, returns the first date. + */ +@property (readonly) NSDate *nextScheduledDate; + + @end diff --git a/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleEnumerator.m b/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleEnumerator.m index ca6d79aa..1b7f100d 100644 --- a/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleEnumerator.m +++ b/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleEnumerator.m @@ -1,5 +1,5 @@ // -// APCScheduleEnumerator.m +// APCScheduleEnumerator.m // APCAppCore // // Copyright (c) 2015, Apple Inc. All rights reserved. @@ -141,7 +141,12 @@ - (instancetype)initWithBeginningTime: (NSDate *) begin return self; } -- (NSDate*) nextObject +- (id) nextObject +{ + return self.nextScheduledDate; +} + +- (NSDate *) nextScheduledDate { NSDate* result = nil; @@ -222,7 +227,9 @@ - (NSDate*) firstDate month-and-year combination, so that the day-of-the-week rules are applied correctly (e.g., getting the right date for "the first Friday of the month") and so that we have - the right number of days per month (28, 31, etc.). + the right number of days per month (28, 31, etc.). We thus + also have to check whether the new month has ANY legal days + in it at all, and move to the next month if not. This method is also used when determining the first legal date for this enumerator. See -firstDate. @@ -316,8 +323,8 @@ - (NSDate*) nextDate { // Record the fact that we looked at this month or year. self.dateComponents [dateFieldIndex] = newFieldValue; - // Recompute the days in this new month. + // Recompute the days in this new month. NSNumber* month = self.dateComponents [DateFieldMonth]; NSNumber* year = self.dateComponents [DateFieldYear]; diff --git a/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleExpressionParser.m b/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleExpressionParser.m index 30892c10..f108bc6c 100644 --- a/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleExpressionParser.m +++ b/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleExpressionParser.m @@ -422,7 +422,7 @@ - (void) coerceSelector: (APCListSelector *) list default: // No changes for the rest of them, yet. break; - } + } } } diff --git a/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleExpressionTokenizer.m b/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleExpressionTokenizer.m index b39d7a53..38ee71a7 100644 --- a/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleExpressionTokenizer.m +++ b/APCAppCore/APCAppCore/Library/ScheduleExpression/Internals/APCScheduleExpressionTokenizer.m @@ -52,8 +52,15 @@ @implementation APCScheduleExpressionTokenizer /** - This method runs exactly once, in a thread-safe way, - the first time the class is referenced in the code. + Set global, static values the first time anyone calls this class. + + By definition, this method is called once per class, in a thread-safe + way, the first time the class is sent a message -- basically, the first + time we refer to the class. That means we can use this to set up stuff + that applies to all objects (instances) of this class. + + Documentation: See +initialize in the NSObject Class Reference. Currently, that's here: + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/clm/NSObject/initialize */ + (void) initialize { diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCActivitiesDateState.h b/APCAppCore/APCAppCore/Library/Scheduler/APCActivitiesDateState.h new file mode 100644 index 00000000..29cc50e1 --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCActivitiesDateState.h @@ -0,0 +1,40 @@ +// +// APCActivitiesDateState.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + +@interface APCActivitiesDateState : NSObject + +- (NSDictionary *)activitiesStateForDate:(NSDate *)date; + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCActivitiesDateState.m b/APCAppCore/APCAppCore/Library/Scheduler/APCActivitiesDateState.m new file mode 100644 index 00000000..4ced08ac --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCActivitiesDateState.m @@ -0,0 +1,147 @@ +// +// APCActivitiesDateState.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCActivitiesDateState.h" +#import "APCTopLevelScheduleEnumerator.h" +#import "APCScheduler.h" +#import +#import "APCSchedule+AddOn.h" +#import "APCAppDelegate.h" +#import "APCTask.h" +#import "APCScheduledTask.h" +#import "APCLog.h" +#import "NSManagedObject+APCHelper.h" + +@implementation APCActivitiesDateState + +-(NSDictionary *)activitiesStateForDate:(NSDate *)date +{ + + NSMutableDictionary *activitiesState = [NSMutableDictionary new]; + + //incomplete Activity State + for (APCSchedule *schedule in [self activitiesSchedulesForDate:date]) + { + NSArray *scheduledTimes = [self scheduledTimesForSchedule:schedule forDate:date]; + + NSMutableDictionary *times = [NSMutableDictionary new]; + for (NSDate *date in scheduledTimes) { + APCLogDebug(@"scheduled time for task: %@ is %@", [(APCTask *)schedule.tasks.anyObject taskID], date); + [times setObject:[NSNumber numberWithBool:NO] forKey:date]; + } + [activitiesState setValue:times forKey:[(APCTask *)schedule.tasks.anyObject taskID]]; + } + + //Complete Activity State. Update the completed boolean on the dictionary + NSArray *completedTasks = [self completedScheduledTasksForDate:date]; + for (APCScheduledTask *scheduledTask in completedTasks) { + APCLogDebug(@"scheduled time for task: %@ is %@ and completed = %@", scheduledTask.task.taskID, date, scheduledTask.completed); + //get the existing time object for task + + NSMutableDictionary *taskTimes = [activitiesState objectForKey:scheduledTask.task.taskID] ?: [NSMutableDictionary new]; + if ([taskTimes objectForKey:scheduledTask.startOn]) { + [taskTimes setObject:@YES forKey:scheduledTask.startOn]; + } + + [activitiesState setValue:taskTimes forKey:scheduledTask.task.taskID]; + } + + return activitiesState; +} + +- (NSArray *)scheduledTimesForSchedule:(APCSchedule *)schedule forDate:(NSDate *)date +{ + + APCTopLevelScheduleEnumerator *enumerator = [schedule enumeratorFromDate: date.startOfDay + toDate: date.endOfDay]; + + NSMutableArray *appearanceDates = [NSMutableArray new]; + + for (NSDate *nextAppearance in enumerator) + { + if ([nextAppearance isLaterThanOrEqualToDate: schedule.effectiveStartDate.startOfDay] + && [nextAppearance isEarlierOrEqualToDate: schedule.effectiveEndDate.endOfDay]) + { + [appearanceDates addObject: nextAppearance]; + } + } + + return appearanceDates; +} + +- (NSArray *)activitiesSchedulesForDate: (NSDate *)date +{ + /* + get ALL of the schedules active on the date + endDate >= date.endOfDay //this value will often be null - need to programatically check results + effectiveEndDate >= date.endOfDay //this value will often be null - need to programatically check results + effectiveStartDate <= date + startsOn <= date + */ + + NSArray *dailySchedules = nil; + NSFetchRequest *request = [APCSchedule request]; + NSDate *startDate = date.startOfDay; + + NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(%K >= %@ OR %K == null) AND %K <= %@ AND %K <= %@", + NSStringFromSelector (@selector (effectiveEndDate)), date.endOfDay, + NSStringFromSelector (@selector (effectiveEndDate)), + NSStringFromSelector (@selector (effectiveStartDate)), startDate, + NSStringFromSelector (@selector (startsOn)), startDate + ]; + + request.predicate = predicate; + NSError *error = nil; + dailySchedules = [[APCAppDelegate sharedAppDelegate].dataSubstrate.mainContext executeFetchRequest:request error:&error]; + + return dailySchedules; +} + +- (NSArray *)completedScheduledTasksForDate: (NSDate *)date +{ + NSFetchRequest *request = [APCScheduledTask request]; + request.predicate = [NSPredicate predicateWithFormat:@"%K >= %@ AND %K <= %@ AND %K == %@", + NSStringFromSelector (@selector (startOn)), + date.startOfDay, + NSStringFromSelector (@selector (startOn)), + date.endOfDay, + NSStringFromSelector (@selector (completed)), + @YES]; + + NSError *error = nil; + NSArray *dailyScheduledTasks = [[APCAppDelegate sharedAppDelegate].dataSubstrate.mainContext executeFetchRequest:request error:&error]; + + return dailyScheduledTasks; +} + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleDebugPrinter.h b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleDebugPrinter.h new file mode 100644 index 00000000..9c56df81 --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleDebugPrinter.h @@ -0,0 +1,52 @@ +// +// APCScheduleDebugPrinter.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + +/** + Utility class that lets us create printouts for Schedules + and Tasks in a consistent format across classes, so we + get consistent column spacing, date formatting (including + time zones), etc. + */ +@interface APCScheduleDebugPrinter : NSObject + +- (void) printArrayOfSchedules: (NSArray *) schedules + withLabel: (NSString *) label + intoMutableString: (NSMutableString *) printout; + ++ (NSString *) stringFromDate: (NSDate *) date; +- (NSString *) stringFromDate: (NSDate *) date; +- (NSString *) stringsFromArrayOfDates: (NSArray *) arrayOfDates; + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleDebugPrinter.m b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleDebugPrinter.m new file mode 100644 index 00000000..8b44666e --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleDebugPrinter.m @@ -0,0 +1,269 @@ +// +// APCScheduleDebugPrinter.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCScheduleDebugPrinter.h" +#import "APCSchedule+AddOn.h" +#import "APCConstants.h" +#import "APCTask+AddOn.h" + +/** The date format we use when debug-printing the schedules. */ +static NSString * const kAPCDebugDateFormat = @"EEE yyyy-MM-dd HH:mm zzz"; + +/** A date formatter we use when debug-printing the schedules. */ +static NSDateFormatter *debugDateFormatter = nil; + +@implementation APCScheduleDebugPrinter + +/** + Set global, static values the first time anyone calls this class. + + By definition, this method is called once per class, in a thread-safe + way, the first time the class is sent a message -- basically, the first + time we refer to the class. That means we can use this to set up stuff + that applies to all objects (instances) of this class. + + Documentation: See +initialize in the NSObject Class Reference. Currently, that's here: + https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/clm/NSObject/initialize + */ ++ (void) initialize +{ + debugDateFormatter = [NSDateFormatter new]; + debugDateFormatter.dateFormat = kAPCDebugDateFormat; + debugDateFormatter.timeZone = [NSTimeZone localTimeZone]; +} + +- (void) printArrayOfSchedules: (NSArray *) schedules + withLabel: (NSString *) label + intoMutableString: (NSMutableString *) printout +{ + [printout appendFormat: @"%@ (%d schedule%@):\n", label, (int) schedules.count, schedules.count == 1 ? @"" : @"s"]; + + NSUInteger patternWidth = 0; + NSUInteger delayWidth = 0; + NSUInteger expirationWidth = 0; + NSUInteger sourceWidth = 0; + NSUInteger startDateWidth = 0; + NSUInteger endDateWidth = 0; + NSUInteger effectiveStartDateWidth = 0; + NSUInteger effectiveEndDateWidth = 0; + NSUInteger titleWidth = 0; + NSUInteger intervalWidth = 0; + NSUInteger timeListWidth = 0; + NSUInteger longestTitleIllPrint = 35; + NSUInteger taskIdWidth = 0; + NSUInteger oneTimeStringWidth = 0; + + if (schedules.count == 0) + { + [printout appendString: @"- (none)\n"]; + } + + else + { + for (APCSchedule *schedule in schedules) + { + NSString *source = [NSStringFromAPCScheduleSourceAsNumber (schedule.scheduleSource) substringFromIndex: @"APCScheduleSource".length]; + + /* + We don't seem to be able to get to Objective-C categories during + a database migration. These methods let us work around that. + */ + NSString *title = [self firstTaskTitleForSchedule: schedule]; + NSString *taskId = [self firstTaskIdForSchedule: schedule]; + NSString *isOneTimeScheduleString = [self isOneTimeScheduleStringForSchedule: schedule]; + + patternWidth = MAX (patternWidth, schedule.scheduleString.length); + delayWidth = MAX (delayWidth, schedule.delay.length); + expirationWidth = MAX (expirationWidth, schedule.expires.length); + sourceWidth = MAX (sourceWidth, source.length); + startDateWidth = MAX (startDateWidth, [self stringFromDate: schedule.startsOn].length); + endDateWidth = MAX (endDateWidth, [self stringFromDate: schedule.endsOn].length); + effectiveStartDateWidth = MAX (startDateWidth, [self stringFromDate: schedule.effectiveStartDate].length); + effectiveEndDateWidth = MAX (endDateWidth, [self stringFromDate: schedule.effectiveEndDate].length); + titleWidth = MAX (titleWidth, title.length); + intervalWidth = MAX (intervalWidth, schedule.interval.length); + timeListWidth = MAX (timeListWidth, schedule.timesOfDay.length); + taskIdWidth = MAX (taskIdWidth, taskId.length); + oneTimeStringWidth = MAX (oneTimeStringWidth, isOneTimeScheduleString.length); + } + + titleWidth = MIN (titleWidth, longestTitleIllPrint); + + for (APCSchedule *schedule in schedules) + { + NSString *source = [NSStringFromAPCScheduleSourceAsNumber (schedule.scheduleSource) substringFromIndex: @"APCScheduleSource".length]; + + /* + We don't seem to be able to get to Objective-C categories during + a database migration. These methods let us work around that. + */ + NSString *title = [self firstTaskTitleForSchedule: schedule]; + NSString *taskId = [self firstTaskIdForSchedule: schedule]; + NSString *isOneTimeScheduleString = [self isOneTimeScheduleStringForSchedule: schedule]; + + if (title.length > longestTitleIllPrint) + { + title = [NSString stringWithFormat: @"%@...", [title substringToIndex: longestTitleIllPrint - 3]]; + } + + [printout appendFormat: @"- %-*s | real: %-*s to %-*s | effective: %-*s to %-*s | once: %-*s | cron: %-*s | intvl: %-*s @ %-*s | delay: %-*s expire: %-*s | %-*s | %-*s\n", + (int) sourceWidth, [self safePrintableString: source], + (int) startDateWidth, [self safePrintableString: [self stringFromDate: schedule.startsOn]], + (int) endDateWidth, [self safePrintableString: [self stringFromDate: schedule.endsOn]], + (int) effectiveStartDateWidth, [self safePrintableString: [self stringFromDate: schedule.effectiveStartDate]], + (int) effectiveEndDateWidth, [self safePrintableString: [self stringFromDate: schedule.effectiveEndDate]], + (int) oneTimeStringWidth, [self safePrintableString: isOneTimeScheduleString], + (int) patternWidth, [self safePrintableString: schedule.scheduleString], + (int) intervalWidth, [self safePrintableString: schedule.interval], + (int) timeListWidth, [self safePrintableString: schedule.timesOfDay], + (int) delayWidth, [self safePrintableString: schedule.delay], + (int) expirationWidth, [self safePrintableString: schedule.expires], + (int) taskIdWidth, [self safePrintableString: taskId], + (int) titleWidth, [self safePrintableString: title] + ]; + } + } + + [printout appendString: @"\n"]; +} + + + +// --------------------------------------------------------- +#pragma mark - Handling the fact that Categories are missing during CoreData migration +// --------------------------------------------------------- + +/* + For some reason, we can't get to the APCSchedule+AddOn + category during a database migration. These methods let + us work around that fact. They depend on + + - [schedule respondsToSelector: @selector (firstTaskTitle)] + + because that's reliable symptom of the problem: during + migration, we can't get to that category method, but + during normal operation of the app, we can. + */ + +- (BOOL) weCanAccessCategoryMethodsForThisSchedule: (APCSchedule *) schedule +{ + BOOL result = [schedule respondsToSelector: @selector (firstTaskTitle)]; + return result; +} + +- (NSString *) firstTaskTitleForSchedule: (APCSchedule *) schedule +{ + NSString * result = ([self weCanAccessCategoryMethodsForThisSchedule: schedule] ? + [schedule firstTaskTitle] : + ((APCTask *) schedule.tasks.anyObject).taskTitle); + return result; +} + +- (NSString *) firstTaskIdForSchedule: (APCSchedule *) schedule +{ + NSString * result = ([self weCanAccessCategoryMethodsForThisSchedule: schedule] ? + [schedule firstTaskId] : + ((APCTask *) schedule.tasks.anyObject).taskID); + return result; +} + +- (NSString *) isOneTimeScheduleStringForSchedule: (APCSchedule *) schedule +{ + BOOL isOneTimeSchedule = ([self weCanAccessCategoryMethodsForThisSchedule: schedule] ? + schedule.isOneTimeSchedule : + [schedule.scheduleType isEqualToString: kAPCScheduleTypeValueOneTimeSchedule]); + + NSString *result = isOneTimeSchedule ? @"YES" : @"NO"; + return result; +} + + + +// --------------------------------------------------------- +#pragma mark - Utilities +// --------------------------------------------------------- + +- (NSString *) stringFromDate: (NSDate *) date +{ + return [[self class] stringFromDate: date]; +} + ++ (NSString *) stringFromDate: (NSDate *) date +{ + NSString *result = @"(null)"; + + if (date != nil) + { + result = [debugDateFormatter stringFromDate: date]; + } + + return result; +} + +- (NSString *) stringsFromArrayOfDates: (NSArray *) arrayOfDates +{ + NSMutableString *result = [NSMutableString new]; + + for (id maybeDate in arrayOfDates) + { + if (result.length > 0) + { + [result appendString: @" | "]; + } + + if ([maybeDate isKindOfClass: [NSDate class]]) + { + [result appendString: [debugDateFormatter stringFromDate: maybeDate]]; + } + else + { + [result appendString: [NSString stringWithFormat: @"%@", maybeDate]]; + } + } + + return result; +} + +- (const char *) safePrintableString: (NSString *) inputString +{ + NSString *result = @"---"; + + if (inputString.length) + { + result = inputString; + } + + return result.UTF8String; +} + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleIntervalEnumerator.h b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleIntervalEnumerator.h new file mode 100644 index 00000000..2030ef44 --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleIntervalEnumerator.h @@ -0,0 +1,60 @@ +// +// APCScheduleIntervalEnumerator.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import +@class APCSchedule; + +/** + Emits the dates and times in a Schedule when the schedule + is of APCScheduleRecurrenceStyleInterval. + + This is used internally to APCTopLevelScheduleEnumerator. + If you're trying to enumerate the date/time values in a + Schedule, you probably want that class instead, which you + can get most easily from the APCSchedule object itself. + */ +@interface APCScheduleIntervalEnumerator : NSEnumerator + +- (instancetype) initWithSchedule: (APCSchedule *) schedule + startDate: (NSDate *) startDate + endDate: (NSDate *) endDate; + +/** + Calls nextScheduledDate. We don't have to + declare this; I just wanted to make that fact explicit. + */ +- (NSDate *) nextObject; + +- (NSDate *) nextScheduledDate; + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleIntervalEnumerator.m b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleIntervalEnumerator.m new file mode 100644 index 00000000..f11371fc --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduleIntervalEnumerator.m @@ -0,0 +1,267 @@ +// +// APCScheduleIntervalEnumerator.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCScheduleIntervalEnumerator.h" +#import "APCConstants.h" +#import "APCSchedule+AddOn.h" +#import "NSDate+Helper.h" + + +@interface APCScheduleIntervalEnumerator () +- (instancetype) init NS_DESIGNATED_INITIALIZER; +@property (readonly) BOOL hasTimesOfDay; +@property (readonly) BOOL hasEndDate; +@property (readonly) BOOL hasPassedEndDate; +@property (nonatomic, strong) APCSchedule *schedule; +@property (nonatomic, assign) BOOL hasBeenCalledOnce; +@property (nonatomic, strong) NSDate *startDate; +@property (nonatomic, strong) NSDate *endDate; +@property (nonatomic, strong) NSString *iso8601TimeInterval; +@property (nonatomic, strong) NSString *timesOfDayOriginalString; +@property (nonatomic, strong) NSArray *timesOfDayInSeconds; +@property (nonatomic, assign) NSInteger previousTimeOfDayIndex; +@property (nonatomic, strong) NSDate *previousEnumeratedDate; +@end + +@implementation APCScheduleIntervalEnumerator + +- (instancetype) init +{ + self = [super init]; + + if (self) + { + _schedule = nil; + _startDate = nil; + _endDate = nil; + _iso8601TimeInterval = nil; + _timesOfDayOriginalString = nil; + _timesOfDayInSeconds = nil; + _hasBeenCalledOnce = NO; + _previousEnumeratedDate = nil; + _previousTimeOfDayIndex = 0; + } + + return self; +} + +- (instancetype) initWithSchedule: (APCSchedule *) schedule + startDate: (NSDate *) startDate + endDate: (NSDate *) endDate +{ + self = [self init]; + + if (self) + { + _schedule = schedule; + _iso8601TimeInterval = schedule.interval; + _startDate = startDate; + _endDate = endDate; + _timesOfDayOriginalString = schedule.timesOfDay; + _timesOfDayInSeconds = [self deserializedArrayOfDurationsSinceMidnightFromISO8601TimesOfDayString: _timesOfDayOriginalString]; + } + + return self; +} + +- (BOOL) hasTimesOfDay +{ + return self.timesOfDayInSeconds.count > 0; +} + +- (BOOL) hasEndDate +{ + return self.endDate != nil; +} + +- (BOOL) hasPassedEndDate +{ + BOOL result = (self.previousEnumeratedDate != nil && + self.endDate != nil && + [self.previousEnumeratedDate isLaterThanDate: self.endDate] ); + + return result; +} + +- (NSDate *) nextObject +{ + NSDate *result = [self nextScheduledDate]; + + return result; +} + +- (NSDate *) nextScheduledDate +{ + NSDate *computedDate = nil; + NSUInteger computedIndexOfTimeOfDay = 0; + NSNumber *selectedTimeAsNumber = nil; + NSTimeInterval selectedTime = 0; + + if (self.hasPassedEndDate) + { + computedDate = nil; + } + + else if (self.hasBeenCalledOnce == NO) + { + computedDate = self.startDate.startOfDay; + self.previousEnumeratedDate = computedDate; + + if (self.hasTimesOfDay == NO) + { + // Done with this computation. + } + else + { + computedIndexOfTimeOfDay = 0; + self.previousTimeOfDayIndex = computedIndexOfTimeOfDay; + + selectedTimeAsNumber = self.timesOfDayInSeconds [computedIndexOfTimeOfDay]; + selectedTime = selectedTimeAsNumber.integerValue; + computedDate = [computedDate dateByAddingTimeInterval: selectedTime]; + } + + self.hasBeenCalledOnce = YES; + } + + else + { + if (self.hasTimesOfDay == NO) + { + computedDate = [self.previousEnumeratedDate dateByAddingISO8601Duration: self.iso8601TimeInterval]; + self.previousEnumeratedDate = computedDate; + } + else + { + computedIndexOfTimeOfDay = self.previousTimeOfDayIndex; + + if (computedIndexOfTimeOfDay < self.timesOfDayInSeconds.count - 1) + { + computedIndexOfTimeOfDay ++; + self.previousTimeOfDayIndex = computedIndexOfTimeOfDay; + + selectedTimeAsNumber = self.timesOfDayInSeconds [computedIndexOfTimeOfDay]; + selectedTime = selectedTimeAsNumber.integerValue; + + computedDate = self.previousEnumeratedDate; + computedDate = [computedDate dateByAddingTimeInterval: selectedTime]; + } + else + { + computedDate = [self.previousEnumeratedDate dateByAddingISO8601Duration: self.iso8601TimeInterval]; + self.previousEnumeratedDate = computedDate; + + computedIndexOfTimeOfDay = 0; + self.previousTimeOfDayIndex = computedIndexOfTimeOfDay; + + selectedTimeAsNumber = self.timesOfDayInSeconds [computedIndexOfTimeOfDay]; + selectedTime = selectedTimeAsNumber.integerValue; + + computedDate = [computedDate dateByAddingTimeInterval: selectedTime]; + } + } + } + + // See if the calculations we just did pushed us past the end date. + if (self.hasPassedEndDate) + { + computedDate = nil; + } + + return computedDate; +} + +/** + This method is very similar to a method in APCScheduler.m. + */ +- (NSArray *) deserializedArrayOfDurationsSinceMidnightFromISO8601TimesOfDayString: (NSString *) serializedTimesOfDayString +{ + NSMutableArray *result = nil; + + if (serializedTimesOfDayString.length > 0) + { + NSDateFormatter *formatter = [NSDateFormatter new]; + formatter.locale = [NSLocale localeWithLocaleIdentifier: kAPCDateFormatLocaleEN_US_POSIX]; + + NSArray *legalFormats = @[@"H", + @"HH", + @"HH:mm", + @"HH:mm:SS", + @"HH:mm:SS.sss" + ]; + + result = [NSMutableArray new]; + + NSArray *iso8601TimeStrings = [serializedTimesOfDayString componentsSeparatedByString: @"|"]; + + for (NSString *iso8601TimeString in iso8601TimeStrings) + { + NSDate *date = nil; + + for (NSString *format in legalFormats) + { + formatter.dateFormat = format; + date = [formatter dateFromString: iso8601TimeString]; + + if (date != nil) + { + break; + } + } + + if (date != nil) + { + NSDate *midnightOnThatDate = date.startOfDay; + NSTimeInterval secondsSinceMidnight = [date timeIntervalSinceDate: midnightOnThatDate]; + [result addObject: @(secondsSinceMidnight)]; + } + } + } + + if (result.count == 0) + { + result = nil; + } + + else + { + // The result array is a bunch of NSNumbers. + // Sort them from midnight-before to midnight-after + // using -[NSNumber compare:]. + [result sortUsingSelector: @selector (compare:)]; + } + + return result; +} + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCScheduler.h b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduler.h index 02552229..cf03a272 100644 --- a/APCAppCore/APCAppCore/Library/Scheduler/APCScheduler.h +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduler.h @@ -33,11 +33,14 @@ #import #import +#import "APCConstants.h" @class APCDataSubstrate; @class APCSchedule; @class APCDateRange; @class APCTask; +@class APCScheduledTask; +@class APCPotentialTask; typedef NS_ENUM(NSUInteger, APCSchedulerDateRange) { kAPCSchedulerDateRangeYesterday, @@ -45,18 +48,149 @@ typedef NS_ENUM(NSUInteger, APCSchedulerDateRange) { kAPCSchedulerDateRangeTomorrow }; -@interface APCScheduler : NSObject -- (instancetype) initWithDataSubstrate: (APCDataSubstrate*) dataSubstrate; -- (void)updateScheduledTasksIfNotUpdating: (BOOL) today; -- (void)updateScheduledTasksIfNotUpdatingWithRange: (APCSchedulerDateRange) range; -- (void) updateScheduledTasksForSchedule: (APCSchedule*) schedule; +typedef void (^APCSchedulerCallbackForTaskGroupQueries) (NSDictionary *taskGroups, NSError *queryError); +typedef void (^APCSchedulerCallbackForFetchAndLoadOperations) (NSError *errorFetchingOrLoading); +typedef void (^APCSchedulerCallbackForFetchingCount) (NSUInteger count, NSError *errorFetchingOrLoading); + + + +/** + Manages tasks and schedules. + + Specifically, manages the processes of downloading tasks + and schedules, merging them with existing ones, figuring + out which ones are active on a given day, and figuring out + which to display on a given day, whether present, past, or + future. Maintains a cache of the query results for each + type of query, because each query is time-consuming: we + not only pull stuff from CoreData, but do a fair amount of + math to figure out how to map schedules onto a human + calendar. + + Combines features formerly in several other classes, so + we can see and debug them in the same place. These + features are those which either query or manipulate + tasks, schedules, PotentialTasks, and some aspects of + ScheduledTasks. + + In former versions of the app, tasks were "scheduled" out + into the future, based on their projected dates of + appearance. When their schedules changed, those + ScheduledTask objects were modified. This new Scheduler + class represents a different paradigm: instead of + scheduling tasks into the future, we simply maintain a + Schedule -- a set of rules about when tasks should appear + on a user's calendar. Whenever we want to display the + calendar, we query the schedule. Only when the user wants + to actually *perform* one of those tasks do we create a + ScheduledTask object representing the task being performed + and/or completed, and if the user cancels the task, we + delete that ScheduledTask. + */ +@interface APCScheduler : NSObject + ++ (APCScheduler *) defaultScheduler; @property (nonatomic, strong) APCDateRange * referenceRange; -- (void) findOrCreateOneTimeScheduledTask:(APCSchedule *) schedule task: (APCTask*) task andStartDateReference: (NSDate *)startOn; +@property (readonly) NSManagedObjectContext * managedObjectContext; + + + +// --------------------------------------------------------- +#pragma mark - Setup +// --------------------------------------------------------- + +- (instancetype) initWithDataSubstrate: (APCDataSubstrate *) dataSubstrate; + + + +// --------------------------------------------------------- +#pragma mark - Querying +// --------------------------------------------------------- + +- (void) fetchTaskGroupsFromDate: (NSDate *) startDate + toDate: (NSDate *) endDate + usingQueue: (NSOperationQueue *) queue + toReportResults: (APCSchedulerCallbackForTaskGroupQueries) callbackBlock; + +- (void) fetchTaskGroupsFromDate: (NSDate *) startDate + toDate: (NSDate *) endDate + forTasksMatchingFilter: (NSPredicate *) taskFilter + usingQueue: (NSOperationQueue *) queue + toReportResults: (APCSchedulerCallbackForTaskGroupQueries) callbackBlock; -@end +// --------------------------------------------------------- +#pragma mark - Importing +// --------------------------------------------------------- + +- (void) fetchTasksAndSchedulesFromServerAndThenUseThisQueue: (NSOperationQueue *) queue + toDoThisWhenDone: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock; + +- (void) loadTasksAndSchedulesFromDiskAndThenUseThisQueue: (NSOperationQueue *) queue + toDoThisWhenDone: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock; + +- (void) importScheduleFromDictionary: (NSDictionary *) scheduleContainingTasks + assigningSource: (APCScheduleSource) scheduleSource + andThenUseThisQueue: (NSOperationQueue *) queue + toDoThisWhenDone: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock; + + + +// --------------------------------------------------------- +#pragma mark - Converting PotentialTasks to ScheduledTasks +// --------------------------------------------------------- + +/** + We only save ScheduledTasks when the user actually does + something with them. The -fetch methods above return + (among other things) PotentialTask objects which show when + a user *could* perform a task. This method lets us + convert from one of those PotentialTasks to a + ScheduledTask, representing the user's real work. Please + be sure to call -deleteScheduledTask: if the user cancels + that operation. + */ +- (APCScheduledTask *) createScheduledTaskFromPotentialTask: (APCPotentialTask *) potentialTask; + +/** + ScheduledTasks represent work the user is actually doing. + If the user cancels a particular task, we want to delete + the task from the database. This method lets us do that. + */ +- (void) deleteScheduledTask: (APCScheduledTask *) scheduledTask; + + + +// --------------------------------------------------------- +#pragma mark - Debugging +// --------------------------------------------------------- + +/** + Used for debugging and testing. Inside this class, + everything that wants to access the system date uses this + property. This allows you to create schedules as if they + had arrived at a specific date in the future or the past, + and then change your view independently. + + Call -clearFakeSystemDate to make it use the actual system + date (or set this property to nil). + + In a release build, this feature is disabled, and always + returns the system date. + */ +@property (nonatomic, strong) NSDate *fakeSystemDate; + +/** + Sets the -fakeSystemDate property to nil, making the + scheduler use the real system date for all calculations. + See -fakeSystemDate for more information. + */ +- (void) clearFakeSystemDate; + + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCScheduler.m b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduler.m index a4881aeb..56d2f3c0 100644 --- a/APCAppCore/APCAppCore/Library/Scheduler/APCScheduler.m +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCScheduler.m @@ -2,440 +2,2957 @@ // APCScheduler.m // APCAppCore // -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// #import "APCScheduler.h" -#import "APCAppCore.h" + +#import "APCAppDelegate.h" +#import "APCDataSubstrate.h" #import "APCDateRange.h" +#import "APCGenericSurveyTaskViewController.h" +#import "APCPotentialScheduledTask.h" +#import "APCSchedule+AddOn.h" +#import "APCScheduleDebugPrinter.h" +#import "APCTask+AddOn.h" +#import "APCTaskGroup.h" +#import "APCTaskGroupCacheEntry.h" +#import "APCTopLevelScheduleEnumerator.h" +#import "APCUser.h" +#import "APCUtilities.h" +#import "NSArray+APCHelper.h" +#import "NSDate+Helper.h" +#import "NSDictionary+APCAdditions.h" +#import "NSOperationQueue+Helper.h" +#import "SBBSchedule+APCHelper.h" -static NSString * const kOneTimeSchedule = @"once"; -@interface APCScheduler() -@property (weak, nonatomic) APCDataSubstrate *dataSubstrate; -@property (strong, nonatomic) NSManagedObjectContext *scheduleMOC; -@property (nonatomic) BOOL isUpdating; +/** + Controls whether we compute and show (very) detailed + debugging printouts. Becomes NO in a release build. + Turn this on to see this class analyze each download + or import of tasks and schedules, and merge them with + the existing ones in CoreData. + */ +static BOOL const kAPCShowDebugPrintouts = NO; + + +/** + If we import multiple tasks with an ID of "null," this + value will appear in the list of duplicate IDs. + */ +static NSString * const kAPCNullTaskIdString = @"(this task ID was null)"; + + +/** + Location of the static tasks-and-schedules file on disk, + and dictionary keys in that file. + */ +static NSString * const kAPCStaticJSONTasksAndSchedulesFileName = @"APHTasksAndSchedules.json"; +static NSString * const kAPCStaticJSONTasksAndSchedulesSchedulesKey = @"schedules"; +static NSString * const kAPCStaticJSONTasksAndSchedulesTasksKey = @"tasks"; // Deprecated. + + +/** + Error codes and messages generated by this class. + */ +typedef enum : NSUInteger { + APCErrorCouldntFetchActiveSchedulesForDateCode, + APCErrorCouldntFetchVisibleSchedulesForDateCode, + APCErrorCouldntFindSurveyFileCode, + APCErrorDeletingTaskCode, + APCErrorInboundListOfSchedulesAndTasksIssuesCode, + APCErrorJSONTasksAndScheduleIsNotAnArrayCode, + APCErrorJSONTasksAndSchedulesIsEmptyCode, + APCErrorJSONTasksAndSchedulesNilValueForKeyCode, + APCErrorLoadingJsonFromDiskCode, + APCErrorLoadingJsonNoDictionaryCode, + APCErrorLoadingNativeBridgeSurveyObjectCode, + APCErrorLoadingSurveyFileCode, + APCErrorMoreThanOneScheduleWithSameTaskIDCode, + APCErrorMoreThanOneTaskWithIdAndVersionCode, + APCErrorParsingSurveyContentCode, + APCErrorSavingEverythingCode, + APCErrorSavingToPeristentStoreCode, + APCErrorSearchingForTaskWithIDCode, + APCErrorServerDisabledCode, + APCErrorTooManyTasksWithSameIDCode +} APCError; + +static NSString * const APCErrorDomainLoadingTasksAndSchedules = @"kAPCErrorDomainLoadingTasksAndSchedules"; + +static NSString * const APCErrorCouldntFetchActiveSchedulesForDateReason = @"Couldn't fetch active schedules for given date"; +static NSString * const APCErrorCouldntFetchActiveSchedulesForDateSuggestion = @"There was an error executing a fetch request for active APCSchedules with this date."; +static NSString * const APCErrorCouldntFetchVisibleSchedulesForDateReason = @"Couldn't fetch visible schedules for given date"; +static NSString * const APCErrorCouldntFetchVisibleSchedulesForDateSuggestion = @"There was an error executing a fetch request for visible APCSchedules with this date."; +static NSString * const APCErrorCouldntFindSurveyFileReason = @"Can't Find Survey File"; +static NSString * const APCErrorCouldntFindSurveyFileSuggestion = @"We couldn't find the specified survey file on the phone. Did you misspell the filename, perhaps?"; +static NSString * const APCErrorDeletingTaskReason = @"Error attempting to delete task."; +static NSString * const APCErrorDeletingTaskSuggestion = @"Error attempting to delete task. This may give the user unexpected results."; +static NSString * const APCErrorInboundListOfSchedulesAndTasksIssuesReason = @"Inbound list of schedules and task have issues"; +static NSString * const APCErrorInboundListOfSchedulesAndTasksIssuesSuggestion = @"Inbound list of schedules and task ID's or versions conflict."; +static NSString * const APCErrorJSONTasksAndScheduleIsNotAnArrayReason = @"The JSON tasks and schedules key is returning an incorrect type"; +static NSString * const APCErrorJSONTasksAndScheduleIsNotAnArraySuggestion = @"The expected type from the JSON tasks and schedules key is an array."; +static NSString * const APCErrorJSONTasksAndSchedulesIsEmptyReason = @"The JSON tasks and schedules key is returning an empty array"; +static NSString * const APCErrorJSONTasksAndSchedulesIsEmptySuggestion = @"The JSON tasks and schedules may be incomplete because the array count is zero."; +static NSString * const APCErrorJSONTasksAndSchedulesNilValueForKeyReason = @"The JSON tasks and schedules key returns nil"; +static NSString * const APCErrorJSONTasksAndSchedulesNilValueForKeySuggestion = @"The JSON tasks and schedules key returns nil. The key may be incorrect or the file is empty."; +static NSString * const APCErrorLoadingJsonFromDiskReason = @"Can't Open JSON File"; +static NSString * const APCErrorLoadingJsonFromDiskSuggestion = @"We were unable to open the specified file as JSON."; +static NSString * const APCErrorLoadingJsonNoDictionaryReason = @"Can't Understand JSON File"; +static NSString * const APCErrorLoadingJsonNoDictionarySuggestion = @"We were unable to find a dictionary at the top level of the JSON file at the specified path."; +static NSString * const APCErrorLoadingNativeBridgeSurveyObjectReason = @"Can't Find Survey File"; +static NSString * const APCErrorLoadingNativeBridgeSurveyObjectSuggestion = @"We couldn't find the specified survey file on the phone. Did you misspell the filename, perhaps?"; +static NSString * const APCErrorLoadingSurveyFileReason = @"There was an error serializing the contents of a survey file"; +static NSString * const APCErrorLoadingSurveyFileSuggestion = @"There was an error serializing the contents of a survey file. "; +static NSString * const APCErrorMoreThanOneScheduleWithSameTaskIDReason = @"More than one schedule with this ID"; +static NSString * const APCErrorMoreThanOneScheduleWithSameTaskIDSuggestion = @"We found more than one schedule managing a task with this ID. This will give the user unexpected results."; +static NSString * const APCErrorMoreThanOneTaskWithIdAndVersionReason = @"More than one task with this ID"; +static NSString * const APCErrorMoreThanOneTaskWithIdAndVersionSuggestion = @"We found more than one task with the specified ID, and we're not sure how to choose just one."; +static NSString * const APCErrorParsingSurveyContentReason = @"There was an error parsing the contents of a survey file"; +static NSString * const APCErrorParsingSurveyContentSuggestion = @"There was an error parsing the contents of a survey file."; +static NSString * const APCErrorSavingEverythingReason = @"Error Saving New Schedules"; +static NSString * const APCErrorSavingEverythingSuggestion = @"There was an error attempting to save the new schedules."; +static NSString * const APCErrorSavingToPeristentStoreReason = @"Error attempting to save new APCScheduledTask"; +static NSString * const APCErrorSavingToPeristentStoreSuggestion = @"Error attempting to save new APCScheduledTask. This may give the user unexpected results."; +static NSString * const APCErrorSearchingForTaskWithIDReason = @"Couldn't fetch APCTask with ID"; +static NSString * const APCErrorSearchingForTasksWithIDSuggestion = @"There was an error executing a fetch request for APCTasks with ID."; +static NSString * const APCErrorServerDisabledReason = @"Server disabled"; +static NSString * const APCErrorServerDisabledSuggestion = @"The server is disabled."; +static NSString * const APCErrorTooManyTasksWithSameIDReason = @"More than one task with this ID"; +static NSString * const APCErrorTooManyTasksWithSameIDSuggestion = @"We found more than one task with this ID. This will give the user unexpected results."; -@property (nonatomic, strong) NSDateFormatter * dateFormatter; +/** + Keys in the user-info dictionary for our custom NSErrors. + */ +static NSString * const kAPCErrorUserInfoKeyListOfDuplicatedTaskIDs = @"ListOfDuplicatedTaskIDs"; -//Properties that need to be cleaned after every upate -@property (nonatomic, strong) NSMutableArray * allScheduledTasksForReferenceDate; -@property (nonatomic, strong) NSMutableArray * validatedScheduledTasksForReferenceDate; +/** + Keys and special values in the JSON dictionaries representing + tasks and schedules. + */ +static NSString * const kScheduleDelayKey = @"delay"; +static NSString * const kScheduleEndDateKey = @"endOn"; +static NSString * const kScheduleExpiresKey = @"expires"; +static NSString * const kScheduleIDValueLocallyGeneratedPrefix = @"autogenerated"; +static NSString * const kScheduleIntervalKey = @"interval"; +static NSString * const kScheduleListOfTasksKey = @"tasks"; +static NSString * const kScheduleMaxCountKey = @"maxCount"; +static NSString * const kScheduleNotesKey = @"notes"; +static NSString * const kScheduleReminderMessageKey = @"reminderMessage"; +static NSString * const kScheduleReminderOffsetKey = @"reminderOffset"; +static NSString * const kScheduleShouldRemindKey = @"shouldRemind"; +static NSString * const kScheduleStartDateKey = @"startOn"; +static NSString * const kScheduleStringKey = @"scheduleString"; +static NSString * const kScheduleTimesOfDayKey = @"times"; +static NSString * const kScheduleTypeKey = @"scheduleType"; +static NSString * const kScheduleTypeValueOnce = @"once"; +static NSString * const kTaskClassNameKey = @"taskClassName"; +static NSString * const kTaskCompletionTimeStringKey = @"taskCompletionTimeString"; +static NSString * const kTaskFileNameKey = @"taskFileName"; +static NSString * const kTaskIDKey = @"taskID"; +static NSString * const kTaskIsOptionalKey = @"optional"; +static NSString * const kTaskSortStringKey = @"sortString"; +static NSString * const kTaskTitleKey = @"taskTitle"; +static NSString * const kTaskTypeKey = @"taskType"; +static NSString * const kTaskTypeValueSurvey = @"survey"; +static NSString * const kTaskUrlKey = @"taskUrl"; +static NSString * const kTaskVersionNumberKey = @"version"; + + +/** + The name of the queue where this class does most of its work. + */ +static NSString * const kQueueName = @"APCScheduler CoreData query queue"; + + +@interface APCScheduler() +@property (nonatomic, weak) APCDataSubstrate *dataSubstrate; +@property (nonatomic, strong) NSManagedObjectContext *scheduleMOC; +@property (nonatomic, strong) NSOperationQueue *queryQueue; +@property (nonatomic, assign) BOOL isUpdating; +@property (nonatomic, strong) NSDateFormatter *dateFormatter; +@property (nonatomic, strong) NSMutableArray *taskGroupCache; +@property (nonatomic, strong) NSObject *taskGroupCacheMutex; +@property (readonly) APCAppDelegate *appDelegate; +@property (readonly) NSDate *systemDate; @end @implementation APCScheduler -- (NSDateFormatter *)dateFormatter { - if (_dateFormatter == nil) { - _dateFormatter = [NSDateFormatter new]; - [_dateFormatter setDateStyle:NSDateFormatterMediumStyle]; - [_dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; - } - return _dateFormatter; + + +// ========================================================= +#pragma mark - I. SETUP - +// ========================================================= + ++ (APCScheduler *) defaultScheduler +{ + APCAppDelegate *app = [APCAppDelegate sharedAppDelegate]; + APCScheduler *scheduler = app.scheduler; + return scheduler; } -- (instancetype)initWithDataSubstrate: (APCDataSubstrate*) dataSubstrate +- (instancetype) initWithDataSubstrate: (APCDataSubstrate *) dataSubstrate { self = [super init]; - if (self) { - self.dataSubstrate = dataSubstrate; - self.scheduleMOC = self.dataSubstrate.persistentContext; + + if (self) + { + _dataSubstrate = dataSubstrate; + _scheduleMOC = _dataSubstrate.persistentContext; + _queryQueue = [NSOperationQueue sequentialOperationQueueWithName: kQueueName]; + _isUpdating = NO; + _dateFormatter = [NSDateFormatter new]; + _dateFormatter.dateStyle = NSDateFormatterMediumStyle; + _dateFormatter.timeStyle = NSDateFormatterMediumStyle; + _fakeSystemDate = nil; + _taskGroupCache = [NSMutableArray new]; + _taskGroupCacheMutex = [NSObject new]; } + return self; } -- (void)updateScheduledTasksIfNotUpdating: (BOOL) today -{ - [self updateScheduledTasksIfNotUpdatingWithRange:today? kAPCSchedulerDateRangeToday : kAPCSchedulerDateRangeTomorrow]; -} --(void)updateScheduledTasksIfNotUpdatingWithRange:(APCSchedulerDateRange)range + +// ========================================================= +#pragma mark - II. QUERYING - +// ========================================================= + + + +// --------------------------------------------------------- +#pragma mark - Fetching tasks for all days in a range +// --------------------------------------------------------- + +- (void) fetchTaskGroupsFromDate: (NSDate *) startDate + toDate: (NSDate *) endDate + usingQueue: (NSOperationQueue *) queue + toReportResults: (APCSchedulerCallbackForTaskGroupQueries) callbackBlock { - if (!self.isUpdating) { - self.isUpdating = YES; - switch (range) { - case kAPCSchedulerDateRangeYesterday: - self.referenceRange = [APCDateRange yesterdayRange]; - break; - case kAPCSchedulerDateRangeToday: - self.referenceRange = [APCDateRange todayRange]; - break; - - case kAPCSchedulerDateRangeTomorrow: - self.referenceRange = [APCDateRange tomorrowRange]; - break; - } - [self updateScheduledTasks]; - } + [self fetchTaskGroupsFromDate: startDate + toDate: endDate + forTasksMatchingFilter: nil + usingQueue: queue + toReportResults: callbackBlock]; } -- (void) updateScheduledTasks +- (void) fetchTaskGroupsFromDate: (NSDate *) startDate + toDate: (NSDate *) endDate + forTasksMatchingFilter: (NSPredicate *) taskFilter + usingQueue: (NSOperationQueue *) queue + toReportResults: (APCSchedulerCallbackForTaskGroupQueries) callbackBlock { - [self.scheduleMOC performBlockAndWait:^{ - - //STEP 1: Update inActive property of schedules based on endOn date. - [self updateSchedulesAsInactiveIfNecessary]; - - //STEP 2: Disable one time tasks if they are already completed - [self disableOneTimeTasksIfAlreadyCompleted]; - - //STEP 3: Get all the current scheduled tasks relevant to reference daterange - [self filterAllScheduledTasksInReferenceDate]; - - //STEP 4: Update scheduled tasks - [self updateScheduledTasksBasedOnActiveSchedules]; - - //STEP 5: Validate all completed tasks - [self validateAllCompletedTasks]; - - //STEP 6: Delete non-validated schedules - [self deleteAllNonvalidatedScheduledTasks]; - - //STEP 7: Issue notifications that we've completed a survey - [[NSNotificationCenter defaultCenter]postNotificationName:APCUpdateTasksReminderNotification object:nil]; - - self.isUpdating = NO; - APCLogEventWithData(kSchedulerEvent, (@{@"event_detail":[NSString stringWithFormat:@"Updated Schedule For %@", self.referenceRange.startDate]})); - }]; -} + [self.queryQueue addOperationWithBlock: ^{ -/*********************************************************************************/ -#pragma mark - Methods Inside MOC -/*********************************************************************************/ -- (void) updateSchedulesAsInactiveIfNecessary -{ - NSFetchRequest * request = [APCSchedule request]; - NSDate * lastEndOnDate = [NSDate yesterdayAtMidnight]; - NSDate * earliestStartOnDate = [NSDate endOfDay:[NSDate tomorrowAtMidnight]]; - request.predicate = [NSPredicate predicateWithFormat:@"(endsOn <= %@) || (startsOn > %@)", lastEndOnDate, earliestStartOnDate]; - NSError * error; - NSArray * array = [self.scheduleMOC executeFetchRequest:request error:&error]; - APCLogError2 (error); - [array enumerateObjectsUsingBlock:^(APCSchedule * schedule, NSUInteger __unused idx, BOOL * __unused stop) { - schedule.inActive = @(YES); - NSError * saveError; - [schedule saveToPersistentStore:&saveError]; - APCLogError2 (saveError); - }]; -} + NSMutableDictionary *results = [NSMutableDictionary new]; + NSDate *dayAfterEndDate = endDate.dayAfter.startOfDay; + NSDate *date = startDate.startOfDay; -- (void) disableOneTimeTasksIfAlreadyCompleted -{ - //List remoteupdatable, one time tasks - NSFetchRequest * request = [APCSchedule request]; - request.predicate = [NSPredicate predicateWithFormat:@"remoteUpdatable == %@ && scheduleType == %@", @(YES), kOneTimeSchedule]; - NSError * error; - NSArray * scheduleArray = [self.scheduleMOC executeFetchRequest:request error:&error]; - APCLogError2 (error); - - //Get completed scheduled tasks with that one time task. If they exist make the schedule inactive - [scheduleArray enumerateObjectsUsingBlock:^(APCSchedule * obj, NSUInteger __unused idx, BOOL * __unused stop) { - NSFetchRequest * request = [APCScheduledTask request]; - request.predicate = [NSPredicate predicateWithFormat:@"completed == %@ && task.taskID == %@", @(YES), obj.taskID]; - NSError * error; - NSArray * scheduledTaskArray = [self.scheduleMOC executeFetchRequest:request error:&error]; - if (scheduledTaskArray.count > 0) { obj.inActive = @(YES);} - APCLogError2 (error); - }]; - - APCSchedule * lastSchedule = [scheduleArray lastObject]; - NSError * saveError; - [lastSchedule saveToPersistentStore:&saveError]; - APCLogError2 (saveError); -} - -- (void) filterAllScheduledTasksInReferenceDate { - NSFetchRequest * request = [APCScheduledTask request]; - NSDate * startOfDay = [NSDate startOfDay:self.referenceRange.startDate]; - request.predicate = [NSPredicate predicateWithFormat:@"endOn > %@", startOfDay]; - NSError * error; - NSArray * array = [self.scheduleMOC executeFetchRequest:request error:&error]; - APCLogError2 (error); - NSMutableArray * filteredArray = [NSMutableArray array]; - - for (APCScheduledTask * scheduledTask in array) { - if ([scheduledTask.dateRange compare:self.referenceRange] != kAPCDateRangeComparisonOutOfRange) { - [filteredArray addObject:scheduledTask]; + for (date = startDate.startOfDay; [date isEarlierThanDate: dayAfterEndDate]; date = [date dateByAddingDays: 1]) + { + NSArray *taskGroups = [self taskGroupsForDayOfDate: date + forTasksMatchingFilter: taskFilter]; + + if (taskGroups.count > 0) { + results [date] = taskGroups; + } } - } - self.allScheduledTasksForReferenceDate = filteredArray; -} -- (void) updateScheduledTasksBasedOnActiveSchedules -{ - NSArray * activeSchedules = [self readActiveSchedules]; - [activeSchedules enumerateObjectsUsingBlock:^(APCSchedule * schedule, NSUInteger __unused idx, BOOL * __unused stop) { - [self updateScheduledTasksForSchedule:schedule]; + if (queue != nil && callbackBlock != nil) + { + [queue addOperationWithBlock:^{ + callbackBlock (results, nil); + }]; + } }]; } -- (NSArray*) readActiveSchedules +- (NSArray *) taskGroupsForDayOfDate: (NSDate *) date + forTasksMatchingFilter: (NSPredicate *) taskFilter { - NSFetchRequest * request = [APCSchedule request]; - NSDate * lastStartOnDate = [NSDate startOfTomorrow:self.referenceRange.startDate]; - request.predicate = [NSPredicate predicateWithFormat:@"(inActive == nil || inActive == %@) && (startsOn == nil || startsOn < %@)", @(NO), lastStartOnDate]; - NSError * error; - NSArray * array = [self.scheduleMOC executeFetchRequest:request error:&error]; - APCLogError2 (error); - return array.count ? array : nil; -} + NSArray *taskGroupsToReport = nil; --(NSArray *) allScheduledTasks{ - __block NSArray * scheduledTaskArray; - NSFetchRequest * request = [APCScheduledTask request]; - [request setShouldRefreshRefetchedObjects:YES]; - NSError * error; - scheduledTaskArray = [self.scheduleMOC executeFetchRequest:request error:&error]; - if (scheduledTaskArray.count == 0) { - APCLogError2 (error); + NSArray *cachedTaskGroups = [self cachedTaskGroupsForDayOfDate: date + forTasksMatchingFilter: taskFilter]; + + if (cachedTaskGroups) + { + taskGroupsToReport = cachedTaskGroups; + } + + else + { + taskGroupsToReport = [self uncachedTaskGroupsForDayOfDate: date + forTasksMatchingFilter: taskFilter]; + + + /* + Lastly: cache these results, because of the performance problem + mentioned at the top of this method. + + Note that another thread might have come through here and + cache this same list of stuff while we were working. That's + fine. The cachcing mechanism is thread-safe, and stores the + first set of results matching this date range and filter, so + even if a bunch of threads try to do this simultaneously, + only one will win, and every subsequent request will use + that cached value. + */ + [self cacheTaskGroups: taskGroupsToReport + forDate: date + andFilter: taskFilter]; } - return scheduledTaskArray; + return taskGroupsToReport; } +/** + Retrieves all tasks scheduled for the specified day, + whether completed, not-yet-completed, missed, or any other + status. "The specified day" means, specifically, + midnight to midnight on that date in the user's time zone. + + This method does not manage threading. It expects + to be called from a background thread -- in particular, + a private queue managed by self. However, it works fine + if called from the main thread, or any other thread. + + The query turns out to be a little tricky, because of how + we want to think about dates. We want schedules that are + "active on this day." That means we want schedules whose + start date is earlier than midnight on the specified date, + and whose end date is later than midnight on that date. + + Here's the pseudocode. The leading "."s are to preserve + the indentation. + + . - theSpecifiedDate = the date passed to this method. + . + . - get schedules active between morning-midnight and evening-midnight on + . theSpecifiedDate. This may be a long list, including schedules that start + . today, schedules that end today, and schedules with either of those values + . set to nil. + . + . - for each of those schedules: + . + . - get the times of day the schedule wants to appear on this date. + . + . - if none (if the schedule doesn't want to appear today): + . + . - get the times of day the schedule wants to appear on the next closest + . previous day for that schedule. Example: if the schedule says "every + . monday and wednesday at noon and 3pm," and today is Tuesday, we'll get + . "noon and 3pm" for Monday. + . + . - if we got anything: remove dates and times that specify an expired task + . (its grace period has run over). We'll keep this list of times if either + . (a) the schedule's expiration period is nil, or (b) if the expiration + . period + those dates means tasks with those dates will last through + . theScheduledDate. + . + . - now we have a list of times of day that tasks should happen, either on + . theSpecifiedDate or the next-closest previous date specified by this schedule. + . + . - if the list is non-empty: + . + . - for each task managed by this schedule: create a TaskGroup containing all + . the related objects. Specifically: + . + . - for each of the found time slots: + . + . - gather any completed items for this time slot (should be at most + . one, but we'll take 'em all just in case) + . + . - if no completed items for this time slot, create a PotentialTask + . for this slot + . + . - gather any completed gratuitious items for the scheduled date of the + . times in this list + . + . - create a sample Potential gratuitous item for that scheduled date + . + . - package all that up into a TaskGroup, and add it to the list of results. + . + . - but wait! if the task has been "fully completed," and the current + . system date is later than the date on which it reached Fully Completed + . status, we have to remove the taskGroup from the list. This real-life + . situation is: you keep a reminder on your fridge until you've + . remembered to do that thing; then you take it off the fridge. + . The catch is: we're creating the ability for user to scroll backward + . or forward in time and see what sticky notes *were* or *should be* on + . the fridge on a given date. This boils down to: + . + . - if the taskGroup's dateFullyCompleted is set, and the current + . system date is greater than midnight on the evening of that date, + . remove the taskGroup from the list of results. + . + . - (repeat for every schedule overlapping theSpecifiedDate.) -- (void) updateScheduledTasksForSchedule: (APCSchedule*) schedule + Here we go. + */ +- (NSArray *) uncachedTaskGroupsForDayOfDate: (NSDate *) theSpecifiedDate + forTasksMatchingFilter: (NSPredicate *) taskFilter { - APCTask * task = [APCTask taskWithTaskID:schedule.taskID inContext:self.scheduleMOC]; - NSAssert(task,@"Task is nil"); - if (schedule.isOneTimeSchedule) { - [self findOrCreateOneTimeScheduledTask:schedule task:task]; + NSMutableString *printout = nil; + APCScheduleDebugPrinter *printer = nil; + +#if DEBUG + if (kAPCShowDebugPrintouts) + { + printout = [NSMutableString new]; + printer = [APCScheduleDebugPrinter new]; + } +#endif + + [printout appendFormat: @"\n\n-------------- Fetching uncached task groups for %@ using filter [%@]. --------------\n", + [printer stringFromDate: theSpecifiedDate], + taskFilter]; + + NSDate *theSpecifiedMorningAtMidnight = theSpecifiedDate.startOfDay; + NSDate *theSpecifiedNightAtMidnight = theSpecifiedDate.endOfDay; + NSMutableArray *resultingTaskGroups = [NSMutableArray new]; + NSManagedObjectContext *context = self.scheduleMOC; + NSError *errorFetchingSchedules = nil; + NSArray *activeSchedules = [self schedulesVisibleOnDayOfDate: theSpecifiedDate + usingContext: context + returningError: & errorFetchingSchedules]; + + if (activeSchedules == nil) // checking for errors, not an empty list. + { + [printout appendFormat: @"Whoops! Failed to load schedules. Error:\n%@\n", errorFetchingSchedules.friendlyFormattedString]; } + else { - APCScheduleExpression * scheduleExpression = schedule.scheduleExpression; - NSDate * beginningTime = (schedule.expires !=nil) ? [self.referenceRange.startDate dateByAddingTimeInterval:(-1*schedule.expiresInterval)] : self.referenceRange.startDate; - - NSEnumerator* enumerator = [scheduleExpression enumeratorBeginningAtTime:beginningTime endingAtTime:self.referenceRange.endDate]; - NSDate * startOnDate; - while ((startOnDate = enumerator.nextObject)) - { - APCDateRange * range; - BOOL doFindOrCreate = NO; - if (schedule.expires != nil) { - range = [[APCDateRange alloc] initWithStartDate:startOnDate durationInterval:schedule.expiresInterval]; - if ([range compare:self.referenceRange] != kAPCDateRangeComparisonOutOfRange) { - doFindOrCreate = YES; - } - else { - APCLogDebug(@"Created out of range dateRange: %@ for %@", range, task.taskTitle); + activeSchedules = [activeSchedules sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + + [printer printArrayOfSchedules: activeSchedules + withLabel: [NSString stringWithFormat: + @"\nSchedules POTENTIALLY visible between %@ and %@", + [printer stringFromDate: theSpecifiedMorningAtMidnight], + [printer stringFromDate: theSpecifiedNightAtMidnight]] + intoMutableString: printout]; + + for (APCSchedule *schedule in activeSchedules) + { + NSArray *timestamps = [self visibleTimesOfDayForSchedule: schedule + onDayOfDate: theSpecifiedDate + addingDiagnosticsToPrintout: printout + usingPrinter: printer]; + + /* + While the specified schedule may be active on this + day, it may not actually emit any date values for + this day. + */ + if (timestamps.count) + { + NSSet *filteredTasks = [self filterTasksFromSchedule: schedule + withTaskFilter: taskFilter + addingDiagnosticsToPrintout: printout + usingPrinter: printer]; + + for (APCTask *task in filteredTasks) + { + APCTaskGroup *taskGroup = [self computeAndGenerateTaskGroupForTask: task + andSchedule: schedule + atTheseTimes: timestamps + onThisDate: theSpecifiedDate + addingDiagnosticsToPrintout: printout + usingPrinter: printer]; + + if (taskGroup != nil) + { + /* + Spelling out the criteria that tell us whether or not + to include a task in the "today" list (whatever day + "today" is): + */ + BOOL isCompleted = taskGroup.isFullyCompleted; + NSDate *dateCompleted = taskGroup.dateFullyCompleted; + BOOL __unused wasCompletedInThePast = (isCompleted && [dateCompleted isEarlierThanDate: theSpecifiedMorningAtMidnight]); + BOOL wasCompletedOnThisDate = (isCompleted && [dateCompleted isLaterThanOrEqualToDate: theSpecifiedMorningAtMidnight] && [dateCompleted isEarlierOrEqualToDate: theSpecifiedNightAtMidnight]); + BOOL wasCompletedInTheFuture = (isCompleted && [dateCompleted isLaterThanDate: theSpecifiedNightAtMidnight]); + BOOL shouldShowThisTaskToday = (! isCompleted) || wasCompletedOnThisDate || wasCompletedInTheFuture; + + if (shouldShowThisTaskToday) + { + [resultingTaskGroups addObject: taskGroup]; + } + } } } - else { - range = [[APCDateRange alloc] initWithStartDate:startOnDate endDate:self.referenceRange.endDate]; - doFindOrCreate = YES; - } - if (doFindOrCreate) { - [self findOrCreateRecurringScheduledTask:schedule task:task dateRange:range]; - } } } + + + NSArray *sortedGroups = [resultingTaskGroups sortedArrayUsingSelector: @selector(compareWithTaskGroup:)]; + + [printout appendString: @"\n----------\nTotal list of taskGroups found:\n----------\n"]; + + for (APCTaskGroup *taskGroup in sortedGroups) + { + [printout appendFormat: @"- %@\n", taskGroup]; + } + + [printout appendFormat: @"\n-------------- Done fetching uncached task groups for %@ using filter %@. --------------\n\n", + [printer stringFromDate: theSpecifiedDate], + taskFilter + ]; + + APCLogDebug (@"%@", printout); + + + return sortedGroups; } -- (void) validateAllCompletedTasks +/** + Returns the times of day that the specified schedule + says a task should appear on the given date. This happens + in one of exactly two situations: the schedule says stuff + should appear on exactly that date; or the schedule says + stuff should appear on a previous date, and those items + haven't "expired" yet, according to the schedule's + expiration rule. + */ +- (NSArray *) visibleTimesOfDayForSchedule: (APCSchedule *) schedule + onDayOfDate: (NSDate *) theSpecifiedDate + addingDiagnosticsToPrintout: (NSMutableString *) printout + usingPrinter: (APCScheduleDebugPrinter *) printer { - NSArray * filteredArray = [self.allScheduledTasksForReferenceDate filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"completed == %@", @YES]]; - - [self.validatedScheduledTasksForReferenceDate addObjectsFromArray:filteredArray]; - [self.allScheduledTasksForReferenceDate removeObjectsInArray:filteredArray]; -} + [printer printArrayOfSchedules: @[schedule] + withLabel: @"\nAnalyzing schedule" + intoMutableString: printout]; -/*********************************************************************************/ -#pragma mark - One Time Task Find Or Create -/*********************************************************************************/ -- (void) findOrCreateOneTimeScheduledTask:(APCSchedule *) schedule task: (APCTask*) task { + NSDate *theSpecifiedMorningAtMidnight = theSpecifiedDate.startOfDay; + NSDate *theSpecifiedEveningAtMidnight = theSpecifiedDate.endOfDay; + NSMutableArray *timesOfDayForThisDay = [NSMutableArray new]; + NSMutableArray *timesOfDayForDayBeforeThisDay = [NSMutableArray new]; + NSDate *startDate = schedule.effectiveStartDate; - NSArray * scheduledTasksArray = [[self allScheduledTasks] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"task.taskID == %@", task.taskID]]; - - if (scheduledTasksArray.count > 0){ - APCLogDebug(@"task already scheduled: %@", task); - APCScheduledTask * validatedTask = scheduledTasksArray.firstObject; - [self validateScheduledTask:validatedTask]; - }else{ - //One time not created, create it - NSDate *startOnDate = [self.referenceRange.startDate startOfDay]; - - NSDate * endDate = (schedule.expires !=nil) ? [startOnDate dateByAddingTimeInterval:schedule.expiresInterval] : [startOnDate dateByAddingTimeInterval:[NSDate parseISO8601DurationString:@"P2Y"]]; - endDate = [NSDate endOfDay:endDate]; - [self createScheduledTask:schedule task:task dateRange:[[APCDateRange alloc] initWithStartDate:startOnDate endDate:endDate]]; + if (startDate == nil) + { + startDate = [APCUtilities firstKnownFileAccessDate]; + + if (startDate == nil) + { + startDate = [NSDate date]; + } } -} -- (void) findOrCreateOneTimeScheduledTask:(APCSchedule *) schedule task: (APCTask*) task andStartDateReference: (NSDate *)startOn { - - NSArray * scheduledTasksArray = [[self allScheduledTasks] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"task.taskID == %@", task.taskID]]; - - if (scheduledTasksArray.count > 0){ - APCLogDebug(@"task already scheduled: %@", task); - APCScheduledTask * validatedTask = scheduledTasksArray.firstObject; - [self validateScheduledTask:validatedTask]; - }else{ - //One time not created, create it - NSDate *startOnDate = [startOn startOfDay]; - - NSDate * endDate = (schedule.expires !=nil) ? [startOnDate dateByAddingTimeInterval:schedule.expiresInterval] : [startOnDate dateByAddingTimeInterval:[NSDate parseISO8601DurationString:@"P2Y"]]; - endDate = [NSDate endOfDay:endDate]; - [self createScheduledTask:schedule task:task dateRange:[[APCDateRange alloc] initWithStartDate:startOnDate endDate:endDate]]; + APCTopLevelScheduleEnumerator *enumerator = [schedule enumeratorFromDate: startDate.startOfDay + toDate: theSpecifiedEveningAtMidnight]; + + /* + We want to get "today" and "the day before today" from + the Schedule. To do that, we'll walk forward through + all dates generated by this schedule until we hit + "today" and "the day before today" (which could be, + like a month ago). If we find "today," we'll keep it. + If not, we'll use the day- before-today. This will + tell us the list of times that tasks SHOULD appear.... + if the schedule's expiration ("grace period") rules + allow it. We'll address expiration in a moment. + */ + for (NSDate *nextAppearance in enumerator) + { + if ([nextAppearance isLaterThanOrEqualToDate: theSpecifiedMorningAtMidnight]) + { + [timesOfDayForThisDay addObject: nextAppearance]; + } + else + { + if (timesOfDayForDayBeforeThisDay.count) + { + NSDate *maybeSometimeOnPreviousDay = timesOfDayForDayBeforeThisDay.firstObject; + + if ([nextAppearance.startOfDay isLaterThanDate: maybeSometimeOnPreviousDay.endOfDay]) + { + [timesOfDayForDayBeforeThisDay removeAllObjects]; + } + } + + [timesOfDayForDayBeforeThisDay addObject: nextAppearance]; + } } - -} -/*********************************************************************************/ -#pragma mark - Recurring Task Find or Create -/*********************************************************************************/ -- (void) findOrCreateRecurringScheduledTask: (APCSchedule*) schedule task: (APCTask*) task dateRange: (APCDateRange*) range { - - NSArray * scheduledTasksArray = [self.allScheduledTasksForReferenceDate filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"task == %@", task]]; - - NSMutableArray * filteredArray = [NSMutableArray array]; - [scheduledTasksArray enumerateObjectsUsingBlock:^(APCScheduledTask * scheduledTask, NSUInteger __unused idx, BOOL * __unused stop) { - if ([scheduledTask.dateRange compare:range] == kAPCDateRangeComparisonSameRange) { - [filteredArray addObject:scheduledTask]; + [printout appendFormat: @" Found times of day for that date : %@\n", [printer stringsFromArrayOfDates: timesOfDayForThisDay]]; + [printout appendFormat: @" Found times of day for preceding legal date : %@\n", [printer stringsFromArrayOfDates: timesOfDayForDayBeforeThisDay]]; + + if (timesOfDayForThisDay.count) + { + /* + Today turns out to be on the schedule. Our rules + say: only one copy of a scheduled item appears on + a schedule at a time. Therefore we don't need any + enumerated dates from the previous day. + */ + timesOfDayForDayBeforeThisDay = nil; + } + + else if (timesOfDayForDayBeforeThisDay.count) + { + if (schedule.expires == nil) + { + // The times from the previous date are allowed. + } + else + { + NSDate *sometimeOnPrevousDate = timesOfDayForDayBeforeThisDay.firstObject; + NSDate *expirationTimeForThatDate = [sometimeOnPrevousDate dateByAddingISO8601Duration: schedule.expires]; + NSDate *expirationDateAtMidnight = expirationTimeForThatDate.endOfDay.dayBefore; + + // Expiration items should be at least one day long. + if ([expirationDateAtMidnight isLaterThanDate: theSpecifiedEveningAtMidnight]) + { + expirationDateAtMidnight = theSpecifiedEveningAtMidnight; + } + + if ([expirationDateAtMidnight isLaterThanOrEqualToDate: theSpecifiedMorningAtMidnight]) + { + // We're within the expiration period. This date is legal. Leave it. + } + else + { + // These dates are too far in the past: they've expired. Trash 'em. + timesOfDayForDayBeforeThisDay = nil; + [printout appendFormat: @" Stuff on the previous day has expired. Ignoring.\n"]; + } } - }]; - - if (filteredArray.count == 0) { - //Schedule not created, create it - [self createScheduledTask:schedule task:task dateRange:range]; } - else if (filteredArray.count == 1) { - APCScheduledTask * validatedTask = filteredArray.firstObject; - [self validateScheduledTask:validatedTask]; + + else + { + // We have no schedule items for this date or + // any previous date -- meaning, this date is + // before the schedule says it's allowed to run. + // No problem. } - else { - APCLogError(@"Many recurring scheduled tasks %@ present with the exact same range: %@", task.taskTitle, range); + + // What'd we get? + NSArray *chosenTimestamps = (timesOfDayForThisDay.count > 0 ? + timesOfDayForThisDay : + timesOfDayForDayBeforeThisDay); + + + [printout appendFormat: @" Chosen array of times : %@\n", [printer stringsFromArrayOfDates: chosenTimestamps]]; + + if (chosenTimestamps.count == 0) + { + [printout appendFormat: @" ...which has no times of day in it. Not getting tasks for this schedule. Moving to next schedule.\n"]; + + chosenTimestamps = nil; } + + return chosenTimestamps; } -/*********************************************************************************/ -#pragma mark - Helpers -/*********************************************************************************/ -- (void) createScheduledTask:(APCSchedule*) schedule task: (APCTask*) task dateRange: (APCDateRange*) dateRange +- (NSSet *) filterTasksFromSchedule: (APCSchedule *) schedule + withTaskFilter: (NSPredicate *) taskFilter + addingDiagnosticsToPrintout: (NSMutableString *) printout + usingPrinter: (APCScheduleDebugPrinter *) __unused printer { - APCAppDelegate * appDelegate = (APCAppDelegate*)[UIApplication sharedApplication].delegate; - - NSArray *offsetsForTask = [appDelegate offsetForTaskSchedules]; - - - - APCScheduledTask * createdScheduledTask = [APCScheduledTask newObjectForContext:self.scheduleMOC]; - - NSDate *taskStartDate = dateRange.startDate; - NSDate *taskEndDate = dateRange.endDate; + NSSet *result = nil; - - NSPredicate *predicate = nil; - NSArray *matchedTasks = nil; - NSNumber *daysToOffset = nil; - NSString *currentTaskID = nil; - NSDate *offsetStartDate = nil; - NSDate *todaysDate = [NSDate todayAtMidnight]; - - if (offsetsForTask) { - predicate = [NSPredicate predicateWithFormat:@"%K == %@", kScheduleOffsetTaskIdKey, task.taskID]; - matchedTasks = [offsetsForTask filteredArrayUsingPredicate:predicate]; - daysToOffset = nil; - - if (matchedTasks.count > 0) { - daysToOffset = [[matchedTasks firstObject] valueForKey:kScheduleOffsetOffsetKey]; - currentTaskID = [[matchedTasks firstObject] valueForKey:kScheduleOffsetTaskIdKey]; - } - + if (schedule == nil) + { + // This call turned out to be meaningless. Return nil. + result = nil; } - - if (daysToOffset) { - NSDateComponents *components = [[NSDateComponents alloc] init]; - [components setDay:[daysToOffset integerValue]]; - - offsetStartDate = [[NSCalendar currentCalendar] dateByAddingComponents:components - toDate:task.createdAt - options:0]; - - offsetStartDate = [offsetStartDate startOfDay]; - - APCLogDebug(@"Task %@ scheduled offset by %lu days. New start date is %@", task.taskTitle, [daysToOffset integerValue], taskStartDate); + + else + { + NSSet *unfilteredTasks = schedule.tasks; + + if (unfilteredTasks.count == 0) + { + // No tasks. Return nil. + result = nil; + } + + else + { + [printout appendString: @"\n Schedule has this set of tasks:\n"]; + + for (APCTask *task in unfilteredTasks) + { + [printout appendFormat: @" - title: %@, optional: %@\n", task.taskTitle, task.taskIsOptional]; + } + + if (taskFilter == nil) + { + result = unfilteredTasks; + } + else + { + NSSet *filteredTasks = [unfilteredTasks filteredSetUsingPredicate: taskFilter]; + + if (filteredTasks.count == unfilteredTasks.count) + { + // Nothing happened. + result = unfilteredTasks; + } + else + { + result = filteredTasks; + + [printout appendString: @"\n Filtering down to this list of tasks:\n"]; + + for (APCTask *task in filteredTasks) + { + [printout appendFormat: @" - title: %@, optional: %@\n", task.taskTitle, task.taskIsOptional]; + } + } + } + } } - if (([task.taskID isEqualToString:currentTaskID] && currentTaskID != nil) - && (([offsetStartDate isEqualToDate:todaysDate]) || - ([[todaysDate laterDate:offsetStartDate] isEqualToDate:todaysDate]))) + return result; +} + +- (APCTaskGroup *) computeAndGenerateTaskGroupForTask: (APCTask *) task + andSchedule: (APCSchedule *) schedule + atTheseTimes: (NSArray *) timestamps + onThisDate: (NSDate *) theSpecifiedDate + addingDiagnosticsToPrintout: (NSMutableString *) printout + usingPrinter: (APCScheduleDebugPrinter *) printer +{ + APCTaskGroup *taskGroup = nil; + + if (timestamps.count) { + [printout appendFormat: @"\n ------------\n Analyzing task: title: %@, optional: %@\n ------------\n", + task.taskTitle, + task.taskIsOptional + ]; - createdScheduledTask.startOn = taskStartDate; - createdScheduledTask.endOn = taskEndDate; - createdScheduledTask.generatedSchedule = schedule; - createdScheduledTask.task = task; - - NSError * saveError = nil; - BOOL saveSuccess = [createdScheduledTask saveToPersistentStore:&saveError]; - - if (!saveSuccess) { - APCLogError2 (saveError); + NSArray *completedTasks = [self completedOrPartlyCompletedTasksForTask: task + asOfThisDate: theSpecifiedDate + scheduledForOneOfTheseTimes: timestamps + addingDiagnosticsToPrintout: printout + usingPrinter: printer]; + + NSArray *remainingTasks = [self generatePotentialTasksForTask: task + andSchedule: schedule + givenThesePotentialTimes: timestamps + andTheseCompletedTasks: completedTasks + addingDiagnosticsToPrintout: printout + usingPrinter: printer]; + + NSDate *generalGratuitousTaskTimestamp = [timestamps.firstObject startOfDay]; + + APCPotentialTask *sampleGratuitousPotentialTask = [[APCPotentialTask alloc] initWithTask: task + onSchedule: schedule + appearingAtDateAndTime: generalGratuitousTaskTimestamp]; + + NSArray *completedGratuitousTasks = [self completedGratuitousTasksForTask: task + withGratuitousTaskTimestamp: generalGratuitousTaskTimestamp + addingDiagnosticsToPrintout: printout + usingPrinter: printer]; + + if (completedTasks.count == 0) { completedTasks = nil; } + if (remainingTasks.count == 0) { remainingTasks = nil; } + if (completedGratuitousTasks.count == 0) { completedGratuitousTasks = nil; } + + NSUInteger totalCountOfRequiredTasks = timestamps.count; + + taskGroup = [[APCTaskGroup alloc] initWithTask: task + requiredRemainingPotentialTasks: remainingTasks + requiredCompletedTasks: completedTasks + gratuitousCompletedTasks: completedGratuitousTasks + samplePotentialTask: sampleGratuitousPotentialTask + totalRequiredTasks: totalCountOfRequiredTasks + forDate: theSpecifiedDate]; + + + [printout appendFormat: @"\n Resulting taskGroup: %@\n", taskGroup]; + + if (taskGroup.isFullyCompleted && [theSpecifiedDate isLaterThanDate: taskGroup.dateFullyCompleted.endOfDay]) + { + [printout appendFormat: @"\n Group was fully completed on [%@]. Current system date is [%@], which is past that date. Omitting this group.\n", taskGroup.dateFullyCompleted, self.systemDate]; } - - //Validate the task - [self.validatedScheduledTasksForReferenceDate addObject:createdScheduledTask]; - - } else if (daysToOffset == nil || daysToOffset <= 0) { - createdScheduledTask.startOn = taskStartDate; - createdScheduledTask.endOn = taskEndDate; - createdScheduledTask.generatedSchedule = schedule; - createdScheduledTask.task = task; - - NSError * saveError = nil; - BOOL saveSuccess = [createdScheduledTask saveToPersistentStore:&saveError]; - - if (!saveSuccess) { - APCLogError2 (saveError); + else + { + // Ship it! } - - //Validate the task - [self.validatedScheduledTasksForReferenceDate addObject:createdScheduledTask]; - } else { - APCLogDebug(@"Nothing should be happening here!"); } + + return taskGroup; +} + +- (NSArray *) completedOrPartlyCompletedTasksForTask: (APCTask *) task + asOfThisDate: (NSDate *) theSpecifiedDate + scheduledForOneOfTheseTimes: (NSArray *) timestamps + addingDiagnosticsToPrintout: (NSMutableString *) printout + usingPrinter: (APCScheduleDebugPrinter *) printer +{ + NSPredicate *filterForCompletedTasks = [NSPredicate predicateWithFormat: @"%K in %@ && %K <= %@", + NSStringFromSelector (@selector (startOn)), + timestamps, + NSStringFromSelector (@selector (updatedAt)), + theSpecifiedDate.endOfDay + ]; + + NSSet *scheduledTasks = [task.scheduledTasks filteredSetUsingPredicate: filterForCompletedTasks]; + + NSArray *scheduledTasksSortedByTimeScheduled = [scheduledTasks.allObjects sortedArrayUsingComparator: + ^NSComparisonResult (APCScheduledTask *scheduledTask1, + APCScheduledTask *scheduledTask2) + { + return [scheduledTask1.startOn compare: scheduledTask2.startOn]; + }]; + + + [printout appendString: @" Found these probably-completed tasks:\n"]; + + for (APCScheduledTask *completedTask in scheduledTasksSortedByTimeScheduled) + { + [printout appendFormat: @" - scheduled for: %@ completedOn: %@\n", [printer stringFromDate: completedTask.startOn], [printer stringFromDate: completedTask.updatedAt]]; + } + + return scheduledTasksSortedByTimeScheduled; } -- (void) validateScheduledTask: (APCScheduledTask*) scheduledTask { - [self.validatedScheduledTasksForReferenceDate addObject:scheduledTask]; - [self.allScheduledTasksForReferenceDate removeObject:scheduledTask]; +- (NSArray *) completedGratuitousTasksForTask: (APCTask *) task + withGratuitousTaskTimestamp: (NSDate *) timestamp + addingDiagnosticsToPrintout: (NSMutableString *) printout + usingPrinter: (APCScheduleDebugPrinter *) printer +{ + NSSet *gratuitousTasks = [task.scheduledTasks filteredSetUsingPredicate: [NSPredicate predicateWithFormat: @"%K == %@", + NSStringFromSelector (@selector (startOn)), + timestamp]]; + + NSArray *sortedTasks = [gratuitousTasks.allObjects sortedArrayUsingComparator: + ^NSComparisonResult (APCScheduledTask *scheduledTask1, + APCScheduledTask *scheduledTask2) + { + return [scheduledTask1.updatedAt compare: scheduledTask2.updatedAt]; + }]; + + [printout appendString: @"\n Found these gratuitous completed tasks:\n"]; + + for (APCScheduledTask *gratuitousTask in sortedTasks) + { + [printout appendFormat: @" - completedOn: %@\n", [printer stringFromDate: gratuitousTask.updatedAt]]; + } + + return sortedTasks; } -- (void) deleteAllNonvalidatedScheduledTasks { - while (self.allScheduledTasksForReferenceDate.count) { - APCScheduledTask * task = [self.allScheduledTasksForReferenceDate lastObject]; - [self.allScheduledTasksForReferenceDate removeLastObject]; - [task deleteScheduledTask]; +- (NSArray *) generatePotentialTasksForTask: (APCTask *) task + andSchedule: (APCSchedule *) schedule + givenThesePotentialTimes: (NSArray *) timestamps + andTheseCompletedTasks: (NSArray *) completedTasks + addingDiagnosticsToPrintout: (NSMutableString *) printout + usingPrinter: (APCScheduleDebugPrinter *) printer +{ + NSMutableArray *result = nil; + + if (timestamps.count) + { + result = [NSMutableArray new]; + + [printout appendString: @"\n Generating these potentialTasks:\n"]; + + for (NSDate *time in timestamps) + { + NSArray *completedTasksForThisTime = [completedTasks filteredArrayUsingPredicate: [NSPredicate predicateWithFormat: @"%K == %@", + NSStringFromSelector (@selector (startOn)), + time]]; + + if (completedTasksForThisTime.count == 0) + { + APCPotentialTask *potentialTask = [[APCPotentialTask alloc] initWithTask: task + onSchedule: schedule + appearingAtDateAndTime: time]; + [result addObject: potentialTask]; + [printout appendFormat: @" - scheduled for: %@\n", [printer stringFromDate: time]]; + } + } } + + return result; } +/** + Returns the schedules that are, or were, in their + "started" state on the specified date. This is NOT the + schedules VISIBLE on that date; rather, this is schedules + whose "start dates" are equal to or later than this date. + + This is used when importing new schedules, in + - processSchedulesAndTasks. + + You might note that this method looks nearly identical + to -schedulesVisibleOnDayOfDate:. They are indeed very + similar. I tried parameterizing them, to make sure we + ran the same query and same type of query in both + cases... and it took nearly as much code to do that as + it took to have two separate methods. And the separate + methods are much more readable, because the code does + exactly what it says it does. (In the parameterized + version, the code was so abstract I found it hard to + visually verify that the query was doing what it needed + to do.) So two methods it is. + + @see -schedulesVisibleOnDayOfDate: + */ +- (NSArray *) schedulesActiveOnDayOfDate: (NSDate *) dateWhenThingsShouldBeActive + fromSource: (APCScheduleSource) scheduleSource + inContext: (NSManagedObjectContext *) context + returningError: (NSError * __autoreleasing *) errorToReturn +{ + NSDate * midnightThisMorning = dateWhenThingsShouldBeActive.startOfDay; + NSDate * __unused midnightThisEvening = dateWhenThingsShouldBeActive.endOfDay; // for debugging + + NSPredicate *filter = [NSPredicate predicateWithFormat: + @"%K == %@ && (%K == nil || %K <= %@) && (%K == nil || %K >= %@)", + NSStringFromSelector (@selector (scheduleSource)), + @(scheduleSource), + NSStringFromSelector (@selector (startsOn)), // -[APCSchedule startsOn] + NSStringFromSelector (@selector (startsOn)), // -[APCSchedule startsOn] + midnightThisEvening, + NSStringFromSelector (@selector (effectiveEndDate)), // -[APCSchedule effectiveEndDate] + NSStringFromSelector (@selector (effectiveEndDate)), // -[APCSchedule effectiveEndDate] + midnightThisMorning + ]; + + NSFetchRequest *request = [APCSchedule requestWithPredicate: filter]; + NSError *errorFetchingSchedules = nil; + NSArray *schedules = [context executeFetchRequest: request error: & errorFetchingSchedules]; + + if (errorToReturn != nil) + { + * errorToReturn = [NSError errorWithCode: APCErrorCouldntFetchActiveSchedulesForDateCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorCouldntFetchActiveSchedulesForDateReason + recoverySuggestion: APCErrorCouldntFetchActiveSchedulesForDateSuggestion + nestedError: errorFetchingSchedules]; + } + + return schedules; +} + + +/** + Returns the schedules that are, or were, actually visible + on the user's screen on the specified date. This is a + subset of the schedules that were ACTIVE on that date: a + schedule can be active-but-not-visible if it has a non-nil + "delay" value. + + This is used when fetching CoreData items to show on the + screen, during -uncachedTaskGroups. + + You might note that this method looks nearly identical to + -schedulesActiveOnDayOfDate:. They are indeed very + similar. I tried parameterizing them, to make sure we ran + the same query and same type of query in both cases... + and it took nearly as much code to do that as it took to + have two separate methods. And the separate methods are + much more readable, because the code does exactly what it + says it does. (In the parameterized version, the code was + so abstract I found it hard to visually verify that the + query was doing what it needed to do.) So two methods it + is. + + @see -schedulesActiveOnDayOfDate: + */ +- (NSArray *) schedulesVisibleOnDayOfDate: (NSDate *) dateWhenThingsShouldBeVisible + usingContext: (NSManagedObjectContext *) context + returningError: (NSError * __autoreleasing *) errorToReturn +{ + NSDate *midnightThisMorning = dateWhenThingsShouldBeVisible.startOfDay; + NSDate *midnightThisEvening = dateWhenThingsShouldBeVisible.endOfDay; + + NSPredicate *filterForThisDay = [NSPredicate predicateWithFormat: + @"(%K == nil || %K <= %@) && (%K == nil || %K >= %@)", + NSStringFromSelector (@selector (effectiveStartDate)), // -[APCSchedule effectiveStartDate] + NSStringFromSelector (@selector (effectiveStartDate)), // -[APCSchedule effectiveStartDate] + midnightThisEvening, + NSStringFromSelector (@selector (effectiveEndDate)), // -[APCSchedule effectiveEndDate] + NSStringFromSelector (@selector (effectiveEndDate)), // -[APCSchedule effectiveEndDate] + midnightThisMorning + ]; + + NSFetchRequest *scheduleQuery = [APCSchedule requestWithPredicate: filterForThisDay]; + NSError *errorFetchingSchedules = nil; + NSArray *schedules = [context executeFetchRequest: scheduleQuery + error: & errorFetchingSchedules]; + + if (errorToReturn != nil) + { + * errorToReturn = [NSError errorWithCode: APCErrorCouldntFetchVisibleSchedulesForDateCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorCouldntFetchVisibleSchedulesForDateReason + recoverySuggestion: APCErrorCouldntFetchVisibleSchedulesForDateSuggestion + nestedError: errorFetchingSchedules]; + } + + return schedules; +} + + + + +// ========================================================= +#pragma mark - III. IMPORTING - +// ========================================================= + + + +// --------------------------------------------------------- +#pragma mark - Downloading tasks and schedules from the server +// --------------------------------------------------------- + +/** + This method and -loadTasksAndSchedulesFromDisk do + analogous things: get a list of schedules-and-tasks from a + source (server or disk). Then they call a central method + to delete old versions, add the new versions, and save + everything to disk. + + This method (-fetch) differs from -load because it has to + extract Sage's data into an array of data with the + key-value pairs we need. + + Both methods put the specified work onto a (private, + serial) operation queue, and so can return to the calling + method immediately. + + Both methods are immediately followed by methods for + handling errors and success specific to that download + type. Both "success" methods call the same internal + method for processing schedules. + */ +- (void) fetchTasksAndSchedulesFromServerAndThenUseThisQueue: (NSOperationQueue *) queue + toDoThisWhenDone: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock +{ + /* + Get off whatever thread we were called on. For this outer "if" + statement, we'll only be here for an instant, but for consistency + in all our data-handling, we'll do everything on the same thread. + */ + [self.queryQueue addOperationWithBlock:^{ + + if (self.isServerDisabled) + { + NSError *errorFetchingSchedules = [NSError errorWithCode: APCErrorServerDisabledCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorServerDisabledReason + recoverySuggestion: APCErrorServerDisabledSuggestion]; + + [self handleErrorFetchingTasksAndSchedulesFromServer: errorFetchingSchedules + andThenUseThisQueue: queue + toDoThis: callbackBlock]; + } + else + { + /* + Bounce over to the Sage SDK's thread, call the server, and then come + back to our thread a while later. + */ + [SBBComponent (SBBScheduleManager) getSchedulesWithCompletion: ^(SBBResourceList *schedulesList, + NSError *errorFetchingSchedules) + { + /* + Immediately get off the Sage queue and back onto ours, + so we know and can control what's happening and what + resources are being used. + */ + [self.queryQueue addOperationWithBlock: ^{ + + [self handleSuccessfullyFetchedTasksAndSchedulesFromServer: schedulesList + givenThisPossibleErrorFromTheDownloadProcess: errorFetchingSchedules + andThenUseThisQueue: queue + toDoThis: callbackBlock]; + }]; + }]; + } + }]; +} + +/** + Convert inbound Sage server data to an NSDictionary of + keys we know how to look for. + + This lets us use the same method to process data + downloaded from the server as we do data pulled from a + local JSON file. + */ +- (NSDictionary *) extractJsonDataFromIncomingSageSchedule: (SBBSchedule *) sageSchedule +{ + NSNull *null = [NSNull null]; + NSMutableDictionary *scheduleData = [NSMutableDictionary new]; + NSMutableArray *activities = [NSMutableArray new]; + + scheduleData [kScheduleReminderMessageKey] = [self nullIfNil: sageSchedule.label]; + scheduleData [kScheduleTypeKey] = [self nullIfNil: sageSchedule.scheduleType]; + scheduleData [kScheduleStartDateKey] = [self nullIfNil: sageSchedule.startsOn]; + scheduleData [kScheduleStringKey] = [self nullIfNil: sageSchedule.cronTrigger]; + scheduleData [kScheduleExpiresKey] = [self nullIfNil: sageSchedule.expires]; + scheduleData [kScheduleEndDateKey] = [self nullIfNil: sageSchedule.endsOn]; + scheduleData [kScheduleListOfTasksKey] = activities; + + // As a reminder to get these when Sage has a chance to add them. + scheduleData [kScheduleIntervalKey] = null; // [self nullIfNil: sageSchedule.interval]; + scheduleData [kScheduleTimesOfDayKey] = null; // [self nullIfNil: sageSchedule.times]; + scheduleData [kScheduleMaxCountKey] = null; // [self nullIfNil: sageSchedule.maxCount]; + + + for (SBBActivity *activity in sageSchedule.activities) + { + NSMutableDictionary *activityData = [NSMutableDictionary new]; + + activityData [kTaskTitleKey] = [self nullIfNil: activity.label]; + activityData [kTaskTypeKey] = [self nullIfNil: activity.activityType]; + activityData [kTaskIDKey] = [self nullIfNil: activity.survey.guid]; + activityData [kTaskVersionNumberKey] = [self nullIfNil: activity.survey.version]; + activityData [kTaskUrlKey] = [self nullIfNil: activity.ref]; + activityData [kTaskClassNameKey] = NSStringFromClass ([APCGenericSurveyTaskViewController class]); + + // When we start getting these from Sage, we'll use them. + // In the mean time, noting them here, because we're using + // them from our local disk files. + activityData [kTaskCompletionTimeStringKey] = null; + activityData [kTaskFileNameKey] = null; + activityData [kTaskSortStringKey] = null; + + [activities addObject: activityData]; + } + + return scheduleData; +} + +/** + By the time we get here, we're safely on our private thread + (a private serial queue). + */ +- (void) handleErrorFetchingTasksAndSchedulesFromServer: (NSError *) errorFetchingSchedules + andThenUseThisQueue: (NSOperationQueue *) queue + toDoThis: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock +{ + APCLogError2 (errorFetchingSchedules); + + [self performFetchAndLoadCallback: callbackBlock + onQueue: queue + sendingError: errorFetchingSchedules]; +} + +/** + By the time we get here, we're safely on our private thread + (a private serial queue). + */ +- (void) handleSuccessfullyFetchedTasksAndSchedulesFromServer: (SBBResourceList *) schedulesAndTasks + givenThisPossibleErrorFromTheDownloadProcess: (NSError *) errorFetchingSchedules + andThenUseThisQueue: (NSOperationQueue *) queue + toDoThis: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock +{ + + if (errorFetchingSchedules) + { + [self handleErrorFetchingTasksAndSchedulesFromServer: errorFetchingSchedules + andThenUseThisQueue: queue + toDoThis: callbackBlock]; + } + else + { + NSMutableArray *jsonCopyOfSageSchdulesAndTasks = nil; + + if (! errorFetchingSchedules) + { + jsonCopyOfSageSchdulesAndTasks = [NSMutableArray new]; + NSArray *sageSchedules = schedulesAndTasks.items; + + for (SBBSchedule *sageSchedule in sageSchedules) + { + NSDictionary *sageScheduleData = [self extractJsonDataFromIncomingSageSchedule: sageSchedule]; + + [jsonCopyOfSageSchdulesAndTasks addObject: sageScheduleData]; + } + } + + /* + Loop through the incoming items and save/udpate everything. + Both -fetch and -load boil down to this one call. + */ + [self processSchedulesAndTasks: jsonCopyOfSageSchdulesAndTasks + fromSource: APCScheduleSourceServer + andThenUseThisQueue: queue + toDoThisWhenDone: callbackBlock]; + } +} + + + +// --------------------------------------------------------- +#pragma mark - Loading tasks and schedules from disk +// --------------------------------------------------------- + +/** + This method and -fetchSchedulesFromServer do the same + thing: get a list of schedules-and-tasks from a source + (server or disk). Then they call a central method to + delete old versions, add the new versions, and save + everything to disk. + + This method (-load) differs from -fetchFromServer because + it has to extract the appropriate array from a loaded JSON + file. + + Both methods put the specified work onto a (private, + serial) dispatch queue, and so can return to the calling + method immediately. + + Both methods are immediately followed by methods for + handling errors and success specific to that download + type. Both "success" methods call the same internal + method for processing schedules. + */ +- (void) loadTasksAndSchedulesFromDiskAndThenUseThisQueue: (NSOperationQueue *) queue + toDoThisWhenDone: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock +{ + [self.queryQueue addOperationWithBlock: ^{ + + // Was: + // [self.appDelegate.dataSubstrate loadStaticTasksAndSchedules: jsonDictionary]; + + NSArray *schedulesArray = nil; + NSError *errorToReport = nil; + NSError *errorLoadingTasksAndSchedulesFile = nil; + NSDictionary *jsonDictionary = [NSDictionary dictionaryWithContentsOfJSONFileWithName: kAPCStaticJSONTasksAndSchedulesFileName + inBundle: nil + returningError: & errorLoadingTasksAndSchedulesFile]; + if (! jsonDictionary) + { + errorToReport = [NSError errorWithCode: APCErrorLoadingJsonFromDiskCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorLoadingJsonFromDiskReason + recoverySuggestion: APCErrorLoadingJsonFromDiskSuggestion + relatedFilePath: kAPCStaticJSONTasksAndSchedulesFileName + relatedURL: nil + nestedError: errorLoadingTasksAndSchedulesFile]; + } + else + { + id maybeSchedulesArray = jsonDictionary [kAPCStaticJSONTasksAndSchedulesSchedulesKey]; + + /* To test each condition, use or do one of the following: + 1. maybeSchedulesArray = nil; + 2. Set the check for whether the object isKindOf: NSArray + 3. [maybeSchedulesArray removeAllObjects] + */ + + if (maybeSchedulesArray == nil) + { + errorToReport = [NSError errorWithCode: APCErrorJSONTasksAndSchedulesNilValueForKeyCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorJSONTasksAndSchedulesNilValueForKeyReason + recoverySuggestion: APCErrorJSONTasksAndSchedulesNilValueForKeySuggestion]; + } + + else if (! [maybeSchedulesArray isKindOfClass: [NSArray class]]) + { + errorToReport = [NSError errorWithCode: APCErrorJSONTasksAndScheduleIsNotAnArrayCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorJSONTasksAndScheduleIsNotAnArrayReason + recoverySuggestion: APCErrorJSONTasksAndScheduleIsNotAnArraySuggestion]; + } + + else + { + schedulesArray = maybeSchedulesArray; + + if (schedulesArray.count == 0) + { + // This may not be an error, but it probably is. + errorToReport = [NSError errorWithCode: APCErrorJSONTasksAndSchedulesIsEmptyCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorJSONTasksAndSchedulesIsEmptyReason + recoverySuggestion: APCErrorJSONTasksAndSchedulesIsEmptySuggestion]; + } + else + { + // Whew. Looks like we got real data. Ready to process. + } + } + } + + if (errorToReport != nil) + { + [self handleErrorLoadingTasksAndSchedulesFromDisk: errorToReport + andThenUseThisQueue: queue + toDoThis: callbackBlock]; + } + + else + { + [self handleSuccessfullyLoadedTasksAndSchedulesFromDisk: schedulesArray + andThenUseThisQueue: queue + toDoThis: callbackBlock]; + } + }]; +} + +- (void) handleErrorLoadingTasksAndSchedulesFromDisk: (NSError *) errorLoadingFromDisk + andThenUseThisQueue: (NSOperationQueue *) queue + toDoThis: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock +{ + APCLogError2 (errorLoadingFromDisk); + + +#if DEBUG + + NSString *errorMessage = [NSString stringWithFormat: + @"\n\n" + "============ error: couldn't open JSON file =============\n" + "We had trouble loading the JSON file. Maybe there's a copy-and-paste error? Here's the original error message:\n\n" + "%@\n" + "=========================================================\n", + errorLoadingFromDisk.friendlyFormattedString]; + + /* + If the app crashes here, we couldn't read the JSON + file you're trying to import. (If you've been editing + it, the file probably has a simple typo, like an + extra comma.) See console for details. + */ + APCLogDebug (errorMessage); + NSAssert (NO, errorMessage); + +#endif + + + [self performFetchAndLoadCallback: callbackBlock + onQueue: queue + sendingError: errorLoadingFromDisk]; +} + +- (void) handleSuccessfullyLoadedTasksAndSchedulesFromDisk: (NSArray *) taskAndSchduleData + andThenUseThisQueue: (NSOperationQueue *) queue + toDoThis: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock +{ + /* + Loop through the incoming items and save/udpate everything. + Both -fetch and -load boil down to this one call. + */ + [self processSchedulesAndTasks: taskAndSchduleData + fromSource: APCScheduleSourceLocalDisk + andThenUseThisQueue: queue + toDoThisWhenDone: callbackBlock]; +} + + + +// --------------------------------------------------------- +#pragma mark - Loading tasks and schedules from in-RAM dictionaries +// --------------------------------------------------------- + +- (void) importScheduleFromDictionary: (NSDictionary *) scheduleContainingTasks + assigningSource: (APCScheduleSource) scheduleSource + andThenUseThisQueue: (NSOperationQueue *) queue + toDoThisWhenDone: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock +{ + [self.queryQueue addOperationWithBlock:^{ + [self processSchedulesAndTasks: @[scheduleContainingTasks] + fromSource: scheduleSource + andThenUseThisQueue: queue + toDoThisWhenDone: callbackBlock]; + }]; +} + + + +// --------------------------------------------------------- +#pragma mark - The core import process +// --------------------------------------------------------- + +/** + This method is the core of our effort when loading + schedules, where we: + - unify the processing for schedules and tasks from Sage + and local disk, and + - compute the "effective start" and "effective end" dates + + Here's how the process of creating schedules and tasks + works, and why. + + We have (basically) 2 types of schedules: downloaded and + local. As a business requirement, both types COMPLETELY + REPLACE any existing schedules of that type. To expire a + schedule, the authors simply don't mention it in the + download; and to expire a task, the authors simply don't + make a schedule for it. + + The catch is: we need the user to be able to see what was + SUPPOSED to happen in the past (again, as a business + requirement). So we have to track schedules that were + once visible to the user, but no longer, and show them to + the user under certain circumstances. I.e., we need to + show the users what the researchers EXPECTED them to do. + + Example: A researcher schedules a "please enter your + weight" task for every Monday. On Tuesday, March 5, the + researcher changes that schedule to be "every Tuesday and + Thursday": she wants the user to measure his weight every + Tuesday and Thursday. The user didn't do the task + yesterday, Monday, March 5. So if the user looks at + YESTERDAY's calendar: what does he see? Nothing, because + the new schedule for that task says "Tuesday and + Thursday"? Or one missed task, because the schedule AT + THAT TIME said "every Monday"? The answer: we show the + user whatever was true FOR HIM, yesterday. Downloading a + schedule shouldn't "rewrite the past." It should simply + tell the user what can happen from this day *forward*. + + There are 2 parts to making this happen: + - Downloading tasks and schedules, and then adding, + updating, or deleting them in the system. + - Showing tasks appropriately when the user looks + at a calendar. + + We'll keep those two issues separate. This method is the + core of the first part: download and update. Here's how + it works: + + 1. The user downloads (from the server) or loads (from + disk) some schedules and tasks, either by launching + the app or by pull-to-refresh. We look at the existing + schedules, and: + + a. We delete any schedules with start dates of today or + later. + + b. If any schedules have effective start AND end dates + before midnight tonight, we leave them alone. + + c. If any schedules have effective START dates before + midnight tonight, but an END date of today or later, + we give them an end date of this morning at midnight. + + + 2. Each loaded Schedule includes one or more tasks. For + each schedule, we look at each contained task, and: + + a. If the schedule links to a task whose ID/version + aren't already here: simply create the new task. + + b. If a schedule links to a task whose ID and version IS + already here: see if the *contents* of that task have + changed. If no change, link to the existing task. If + changed, create a new task with a different locally- + created ID and version. + + + 3. An edge case: the user does a pull-to-refresh several + times between 9am and 10am the same day -- say, a + minute apart. At the same time, out in the real world, + our friendly researcher is busily playing with tasks + and schedules. So each time the user gets a download, + he might get new schedules and new tasks. In this + case: when we're about to delete the schedules that + were downloaded earlier today (case 1a, above), we see + if the tasks owned by those schedules are owned by any + other schedules. If not -- if the only schedules + owning those tasks are the schedules we're about to + delete -- delete those tasks, too. + */ +- (void) processSchedulesAndTasks: (NSArray *) arrayOfSchedulesAndTasks + fromSource: (APCScheduleSource) scheduleSource + andThenUseThisQueue: (NSOperationQueue *) queue + toDoThisWhenDone: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock +{ + NSMutableString *printout = nil; + APCScheduleDebugPrinter *printer = nil; + + #if DEBUG + if (kAPCShowDebugPrintouts) + { + printout = [NSMutableString new]; + printer = [APCScheduleDebugPrinter new]; + } + #endif + + NSManagedObjectContext *context = self.scheduleMOC; + NSError *finalErrorFromThisMethod = nil; + NSDate *today = self.systemDate; + NSDate *morningMidnight = today.startOfDay; + NSDate *eveningMidnight = today.endOfDay; + + NSError *errorFetchingCurrentSchedules = nil; + NSArray *currentSchedules = [self schedulesActiveOnDayOfDate: today + fromSource: scheduleSource + inContext: context + returningError: & errorFetchingCurrentSchedules]; + + if (! currentSchedules) + { + finalErrorFromThisMethod = errorFetchingCurrentSchedules; + } + + else + { + NSArray *rawIncomingSchedules = [self createSchedulesAndUpdateTasksFromIncomingData: arrayOfSchedulesAndTasks + forSource: scheduleSource + inContext: context]; + NSArray *uniquifiedIncomingSchedules = nil; + NSArray *schedulesWithDuplicateTaskIDs = nil; + NSArray *duplicateTaskIds = nil; + + [self findDuplicateTaskIdsInIncomingSchedules: rawIncomingSchedules + returningTheUniquifiedSchedules: & uniquifiedIncomingSchedules + theDuplicatedTaskIDs: & duplicateTaskIds + andTheSchedulesWeWillIgnore: & schedulesWithDuplicateTaskIDs]; + + if (duplicateTaskIds.count) + { + /* + If the app crashes inside this method call, it + means your JSON file contains one or more + schedules with the same task ID. See the + console for which task IDs are duplicated. + */ + [self reportLoudlyAboutDuplicateTaskIds: duplicateTaskIds + andTheSchedulesContainingThem: schedulesWithDuplicateTaskIDs + fromSource: scheduleSource]; + } + + + /* + Take various unions and intersections of the + current schedules and the incoming schedules. + This is the CORE OF THE BUSINESS LOGIC in this + method. + */ + NSArray *schedulesThatAreAlreadyPerfect = [self arrayByFindingCommonElementsInScheduleArray: currentSchedules + andScheduleArray: uniquifiedIncomingSchedules + comparingObjectsUsingFields: YES]; + + NSArray *oldSchedulesToKillOrDelete = [self arrayByRemovingElementsInScheduleArray: uniquifiedIncomingSchedules + fromScheduleArray: currentSchedules + comparingObjectsUsingFields: YES]; + + NSArray *schedulesFromThisMorningToDelete = [oldSchedulesToKillOrDelete filteredArrayUsingPredicate: [NSPredicate predicateWithFormat: @"%K >= %@ && %K <= %@", + NSStringFromSelector (@selector (createdAt)), + morningMidnight, + NSStringFromSelector (@selector (createdAt)), + eveningMidnight]]; + + NSArray *oldSchedulesToTerminate = [self arrayByRemovingElementsInScheduleArray: schedulesFromThisMorningToDelete + fromScheduleArray: oldSchedulesToKillOrDelete + comparingObjectsUsingFields: NO]; + + NSArray *newSchedulesToKeep = [self arrayByRemovingElementsInScheduleArray: schedulesThatAreAlreadyPerfect + fromScheduleArray: uniquifiedIncomingSchedules + comparingObjectsUsingFields: YES]; + + NSArray *unnecessaryImportedSchedulesToDelete = [self arrayByRemovingElementsInScheduleArray: newSchedulesToKeep + fromScheduleArray: uniquifiedIncomingSchedules + comparingObjectsUsingFields: NO]; + + + // + // For debugging: sort them by title, so we can see what's going on. + // The incoming schedules, unique and duplicated, are already sorted + // by the method we used to search for duplicates. + // + currentSchedules = [currentSchedules sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + schedulesThatAreAlreadyPerfect = [schedulesThatAreAlreadyPerfect sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + oldSchedulesToTerminate = [oldSchedulesToTerminate sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + newSchedulesToKeep = [newSchedulesToKeep sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + unnecessaryImportedSchedulesToDelete = [unnecessaryImportedSchedulesToDelete sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + schedulesFromThisMorningToDelete = [schedulesFromThisMorningToDelete sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + + + [printout appendFormat: + @"\n\n======================= new batch of schedules from %@ =======================\n", + NSStringFromAPCScheduleSource (scheduleSource)]; + + [printer printArrayOfSchedules: currentSchedules withLabel: @"Current Schedules" intoMutableString: printout]; + [printer printArrayOfSchedules: uniquifiedIncomingSchedules withLabel: @"Incoming Schedules with unique task IDs (we'll analyze these)" intoMutableString: printout]; + [printer printArrayOfSchedules: schedulesWithDuplicateTaskIDs withLabel: @"Incoming Schedules with DUPLICATE task IDs (we'll delete these)" intoMutableString: printout]; + [printer printArrayOfSchedules: schedulesThatAreAlreadyPerfect withLabel: @"Current Schedules that are Already Perfect" intoMutableString: printout]; + [printer printArrayOfSchedules: newSchedulesToKeep withLabel: @"Incoming Schedules to Keep" intoMutableString: printout]; + [printer printArrayOfSchedules: schedulesFromThisMorningToDelete withLabel: @"Schedules imported earlier today to delete" intoMutableString: printout]; + [printer printArrayOfSchedules: oldSchedulesToTerminate withLabel: @"Current Schedules to Terminate" intoMutableString: printout]; + [printer printArrayOfSchedules: unnecessaryImportedSchedulesToDelete withLabel: @"Unneded Incoming Schedules to Delete" intoMutableString: printout]; + + + // + // Back to the business logic: + // + + [self disableSchedules: oldSchedulesToTerminate]; + + [self deleteSchedulesButNotTasks: schedulesFromThisMorningToDelete + inContext: context]; + + [self deleteSchedulesButNotTasks: unnecessaryImportedSchedulesToDelete + inContext: context]; + + [self deleteSchedulesButNotTasks: schedulesWithDuplicateTaskIDs + inContext: context]; + + + // + // Save everything, if needed. + // + + if (! context.hasChanges) + { + [printout appendString: @"\n...which means, all told, there's nothing to save. We're done.\n\n"]; + } + else + { + NSManagedObject *anySaveableObject = uniquifiedIncomingSchedules.firstObject; + NSError *errorSavingEverything = nil; + BOOL saved = [anySaveableObject saveToPersistentStore: & errorSavingEverything]; + + if (! saved) + { + finalErrorFromThisMethod = [NSError errorWithCode: APCErrorSavingEverythingCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorSavingEverythingReason + recoverySuggestion: APCErrorSavingEverythingSuggestion + nestedError: errorSavingEverything]; + } + } + + + // + // What happened? + // + + NSArray *currentSchedulesAfterImport = [self schedulesActiveOnDayOfDate: today + fromSource: scheduleSource + inContext: context + returningError: & errorFetchingCurrentSchedules]; + + currentSchedulesAfterImport = [currentSchedulesAfterImport sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + + [printout appendString: @"--------\nResults\n--------\n"]; + + [printer printArrayOfSchedules: currentSchedulesAfterImport withLabel: @"Current schedules after import" intoMutableString: printout]; + + [printer printArrayOfSchedules: oldSchedulesToTerminate withLabel: @"Terminated schedules" intoMutableString: printout]; + + [printout appendFormat: + @"======================= end batch of schedules from %@ =======================\n\n", + NSStringFromAPCScheduleSource (scheduleSource)]; + + NSLog (@"%@", printout); + } + + + // + // Lastly: clear the performance cache. + // + + [self clearTaskGroupCache]; + + + // + // Done. + // + + if (finalErrorFromThisMethod) + { + APCLogError2 (finalErrorFromThisMethod); + } + + [self performFetchAndLoadCallback: callbackBlock + onQueue: queue + sendingError: finalErrorFromThisMethod]; +} + +- (NSArray *) createSchedulesAndUpdateTasksFromIncomingData: (NSArray *) incomingSchedulesAndTasks + forSource: (APCScheduleSource) scheduleSource + inContext: (NSManagedObjectContext *) context +{ + NSMutableArray *schedules = [NSMutableArray new]; + + for (NSDictionary *scheduleData in incomingSchedulesAndTasks) + { + APCSchedule *schedule = [self createOneScheduleAndItsTasksFromJsonData: scheduleData + fromSource: scheduleSource + usingContext: context]; + + [schedules addObject: schedule]; + } + + return schedules; +} + +- (void) findDuplicateTaskIdsInIncomingSchedules: (NSArray *) incomingSchedulesAndTasks + returningTheUniquifiedSchedules: (NSArray * __autoreleasing * ) uniquifiedSchedulesToReturn + theDuplicatedTaskIDs: (NSArray * __autoreleasing * ) duplicateTaskIdsToReturn + andTheSchedulesWeWillIgnore: (NSArray * __autoreleasing * ) duplicateSchedulesToReturn +{ + NSMutableArray *uniqueTaskIds = [NSMutableArray new]; + NSMutableArray *duplicateTaskIds = [NSMutableArray new]; + NSMutableArray *uniquifiedSchedules = [NSMutableArray new]; + NSMutableArray *duplicateSchedules = [NSMutableArray new]; + + for (APCSchedule *schedule in incomingSchedulesAndTasks) + { + BOOL thisScheduleContainsSomeoneElsesTaskId = NO; + + for (APCTask *task in schedule.tasks) + { + NSString *taskId = task.taskID; + + if (taskId == nil) + { + taskId = kAPCNullTaskIdString; + } + + if ([uniqueTaskIds containsObject: taskId]) + { + thisScheduleContainsSomeoneElsesTaskId = YES; + [duplicateTaskIds addObject: taskId]; + break; + } + else + { + [uniqueTaskIds addObject: taskId]; + } + } + + if (thisScheduleContainsSomeoneElsesTaskId) + { + [duplicateSchedules addObject: schedule]; + } + else + { + [uniquifiedSchedules addObject: schedule]; + } + } + + /* + These results are intended to be human-readable, + so sort them. The task IDs are strings, so we can + sort by their -compare: method. We'll sort the + schedules by a comparator we use to sort all lists of + schedules when we print them. + */ + [duplicateTaskIds sortUsingSelector: @selector (compare:)]; + [uniquifiedSchedules sortUsingSelector: @selector (compareWithSchedule:)]; + [duplicateSchedules sortUsingSelector: @selector (compareWithSchedule:)]; + + // Ship 'em. + if (uniquifiedSchedulesToReturn != nil) { * uniquifiedSchedulesToReturn = uniquifiedSchedules; } + if (duplicateTaskIdsToReturn != nil) { * duplicateTaskIdsToReturn = duplicateTaskIds; } + if (duplicateSchedulesToReturn != nil) { * duplicateSchedulesToReturn = duplicateSchedules; } +} + +- (void) reportLoudlyAboutDuplicateTaskIds: (NSArray *) duplicateTaskIds + andTheSchedulesContainingThem: (NSArray *) schedulesContainingThoseIDs + fromSource: (APCScheduleSource) scheduleSource +{ + if (duplicateTaskIds.count) + { + NSString *errorMessage = nil; + + if (scheduleSource == APCScheduleSourceServer) + { + errorMessage = APCErrorMoreThanOneScheduleWithSameTaskIDSuggestion; + } + else + { + APCScheduleDebugPrinter *printer = [APCScheduleDebugPrinter new]; + + NSMutableString *message = [NSMutableString stringWithFormat: + @"\n\n============ error: duplicate task IDs =============\nMore than one schedule in the imported JSON data is referring to the same task ID. (Copy-and-paste error?)\n\nHere are the duplicate task IDs:\n"]; + + for (NSString *taskId in duplicateTaskIds) + { + [message appendFormat: @"- %@\n", taskId]; + } + + [printer printArrayOfSchedules: schedulesContainingThoseIDs + withLabel: @"\nHere are the schedules containing those IDs" + intoMutableString: message]; + + [message appendString: @"====================================================\n"]; + + errorMessage = message; + } + + NSError *errorForDuplicateTaskIds = [NSError errorWithCode: APCErrorMoreThanOneScheduleWithSameTaskIDCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorMoreThanOneScheduleWithSameTaskIDReason + recoverySuggestion: errorMessage + relatedFilePath: nil + relatedURL: nil + nestedError: nil + otherUserInfo: @{ kAPCErrorUserInfoKeyListOfDuplicatedTaskIDs : duplicateTaskIds }]; + + APCLogError2 (errorForDuplicateTaskIds); + +#if DEBUG + // If the app crashes here, you have duplicate + // task IDs in your JSON file. See console for + // details. + NSAssert (NO, errorMessage); +#endif + + } +} + +- (BOOL) updateTasksInSchedules: (NSArray *) schedulesThatAreAlreadyPerfect + fromIncomingData: (NSArray *) incomingScheduleAndTaskData +{ + BOOL result = NO; + + for (APCSchedule *schedule in schedulesThatAreAlreadyPerfect) + { + for (APCTask *task in schedule.tasks) + { + NSString *taskId = task.taskID; + NSNumber *taskVersion = task.taskVersionNumber; + NSDictionary *taskData = [self extractTaskDataFromIncomingListOfSchedulesAndTasks: incomingScheduleAndTaskData + withThisTaskId: taskId + andThisVersion: taskVersion]; + [self updateTask: task + withData: taskData]; + } + } + + return result; +} + +/** + Crawls through the dictionaries and arrays in the incoming + data until it finds a task dictionary containing the + specified id and version. + */ +- (NSDictionary *) extractTaskDataFromIncomingListOfSchedulesAndTasks: (NSArray *) incomingScheduleAndTaskData + withThisTaskId: (NSString *) taskId + andThisVersion: (NSNumber *) taskVersion +{ + NSDictionary *foundTaskData = nil; + NSMutableArray *taskDataWithSameIdAndVersion = [NSMutableArray new]; + + for (NSDictionary *scheduleData in incomingScheduleAndTaskData) + { + NSArray *tasksForThisSchedule = scheduleData [kScheduleListOfTasksKey]; + + for (NSDictionary *taskData in tasksForThisSchedule) + { + NSString *taskIdFromData = [self nilIfNull: taskData [kTaskIDKey]]; + NSNumber *taskVersionFromData = [self nilIfNull: taskData [kTaskVersionNumberKey]]; + + if ([self object1: taskId equalsObject2: taskIdFromData] && + [self object1: taskVersion equalsObject2: taskVersionFromData] ) + { + [taskDataWithSameIdAndVersion addObject: taskData]; + } + } + } + + if (taskDataWithSameIdAndVersion.count == 0) + { + // Truly should never happen, since we got the taskID + // and version from a previous pass through the data. + } + + else if (taskDataWithSameIdAndVersion.count == 1) + { + // This is what we were expecting. + foundTaskData = taskDataWithSameIdAndVersion.firstObject; + } + + else // .count > 1 + { + NSError *tooManyTasksWithSameIdAndVersion = [NSError errorWithCode: APCErrorInboundListOfSchedulesAndTasksIssuesCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorInboundListOfSchedulesAndTasksIssuesReason + recoverySuggestion: APCErrorInboundListOfSchedulesAndTasksIssuesSuggestion + relatedFilePath: nil + relatedURL: nil + nestedError: nil + otherUserInfo: @{ kTaskIDKey : [self nullIfNil: taskId], + kTaskVersionNumberKey : [self nullIfNil: taskVersion] }]; + APCLogError2 (tooManyTasksWithSameIdAndVersion); + + // Therefore, this is kinda undefined: + foundTaskData = taskDataWithSameIdAndVersion.firstObject; + } + + return foundTaskData; +} + +- (void) disableSchedules: (NSArray *) schedulesToTerminate +{ + NSDate *endOfDayYesterday = self.systemDate.dayBefore.endOfDay; // 23:59:59 + + for (APCSchedule *schedule in schedulesToTerminate) + { + schedule.effectiveEndDate = endOfDayYesterday; + } +} + +- (void) deleteSchedulesButNotTasks: (NSArray *) schedulesToDelete + inContext: (NSManagedObjectContext *) context +{ + for (APCSchedule *schedule in schedulesToDelete) + { + [context deleteObject: schedule]; + } +} + +- (APCSchedule *) createOneScheduleAndItsTasksFromJsonData: (NSDictionary *) inboundScheduleData + fromSource: (APCScheduleSource) scheduleSource + usingContext: (NSManagedObjectContext *) context +{ + APCSchedule *schedule = [APCSchedule newObjectForContext: context]; + schedule.scheduleSource = @(scheduleSource); + + NSMutableDictionary *scheduleData = inboundScheduleData.mutableCopy; + + + // + // Pre-import data validation. + // + + id requestedStartDate = [self nilIfNull: scheduleData [kScheduleStartDateKey]]; + id requestedEndDate = [self nilIfNull: scheduleData [kScheduleEndDateKey]]; + id timesOfDay = [self nilIfNull: scheduleData [kScheduleTimesOfDayKey] ]; + + if ([requestedStartDate isKindOfClass: [NSString class]]) + { + requestedStartDate = [NSDate dateWithISO8601String: requestedStartDate]; + } + + if ([requestedEndDate isKindOfClass: [NSString class]]) + { + requestedEndDate = [NSDate dateWithISO8601String: requestedEndDate]; + } + + if ([timesOfDay isKindOfClass: [NSArray class]]) + { + timesOfDay = [self serializedTimesOfDayStringFromISO8601TimesOfDayInArray: timesOfDay]; + } + + scheduleData [kScheduleStartDateKey] = [self nullIfNil: requestedStartDate]; + scheduleData [kScheduleEndDateKey] = [self nullIfNil: requestedEndDate]; + scheduleData [kScheduleTimesOfDayKey] = [self nullIfNil: timesOfDay]; + + + + // + // Copy the data into our local object. + // + + schedule.delay = [self nilIfNull: scheduleData [kScheduleDelayKey]]; + schedule.endsOn = [self nilIfNull: scheduleData [kScheduleEndDateKey]]; + schedule.expires = [self nilIfNull: scheduleData [kScheduleExpiresKey]]; + schedule.interval = [self nilIfNull: scheduleData [kScheduleIntervalKey]]; + schedule.maxCount = [self nilIfNull: scheduleData [kScheduleMaxCountKey]]; + schedule.notes = [self nilIfNull: scheduleData [kScheduleNotesKey]]; + schedule.reminderMessage = [self nilIfNull: scheduleData [kScheduleReminderMessageKey]]; // if from Sage: "label" + schedule.reminderOffset = [self nilIfNull: scheduleData [kScheduleReminderOffsetKey]]; + schedule.scheduleString = [self nilIfNull: scheduleData [kScheduleStringKey]]; + schedule.scheduleType = [self nilIfNull: scheduleData [kScheduleTypeKey]]; + schedule.shouldRemind = [self nilIfNull: scheduleData [kScheduleShouldRemindKey]]; + schedule.startsOn = [self nilIfNull: scheduleData [kScheduleStartDateKey]]; + schedule.timesOfDay = [self nilIfNull: scheduleData [kScheduleTimesOfDayKey]]; + + + // + // Add data validation, defaults, and calculations. + // + + /* + Start date: this morning, at midnight, whenever "this + morning" is. NOT the app-installation time; that might + be months ago, which would not reflect the user's + experience of this schedule -- it didn't exist back + then. + */ + NSDate *beginningOfTime = self.systemDate.startOfDay; + + if (schedule.startsOn == nil) + { + schedule.startsOn = beginningOfTime; + } + + + /* + Effective start date = start date + delay. Then round + to midnight that morning. + */ + schedule.effectiveStartDate = schedule.startsOn; + + if (schedule.delay.length) + { + schedule.effectiveStartDate = [schedule.effectiveStartDate dateByAddingISO8601Duration: schedule.delay]; + schedule.effectiveStartDate = schedule.effectiveStartDate.dayBefore; + } + + schedule.effectiveStartDate = schedule.effectiveStartDate.startOfDay; + + NSDate *effectiveEndDate = schedule.endsOn; + + if (schedule.expires.length) + { + effectiveEndDate = [effectiveEndDate dateByAddingISO8601Duration: schedule.expires]; + } + + effectiveEndDate = effectiveEndDate.endOfDay; + schedule.effectiveEndDate = effectiveEndDate; + + + // + // Creating Tasks + // + NSArray *tasks = scheduleData [kScheduleListOfTasksKey]; + + for (NSDictionary *taskData in tasks) + { + APCTask *task = [self createOrUpdateTaskFromJsonData: taskData + inContext: context]; + if (task) + { + [schedule addTasksObject: task]; + } + } + + + // + // Done! + // + return schedule; +} + +/** + When we get data from a file or from the server, we first + convert it to a set of dictionaries. Each dictionary + contains one Schedule. That Schedule contains a list of + the Tasks the schedule should manage. Then we loop + through those Schedules, creating each one. Within that + "create schedule" method, we then loop through all the + Tasks it's supposed to manage, and create each of THOSE. + This method does that part: creates a single Task, when + we're looping through the list of tasks attached to + inbound schedule data. + */ +- (APCTask *) createOrUpdateTaskFromJsonData: (NSDictionary *) taskData + inContext: (NSManagedObjectContext *) context +{ + APCTask *task = nil; + NSString *taskId = [self nilIfNull: taskData [kTaskIDKey]]; + NSNumber *taskVersionNumber = [self nilIfNull: taskData [kTaskVersionNumberKey]]; + + NSError *errorFindingExistingTask = nil; + + task = [self taskWithId: taskId + versionNumber: taskVersionNumber + inContext: context + returningError: & errorFindingExistingTask]; + + if (task == nil) + { + task = [APCTask newObjectForContext: context]; + task.taskID = taskId; + task.taskVersionNumber = taskVersionNumber; + } + + [self updateTask: task + withData: taskData]; + + return task; +} + +- (void) updateTask: (APCTask *) task + withData: (NSDictionary *) taskData +{ + // + // Update the task with potentially new data + // (or add it for the first time, if we're creating a task). + // + task.taskHRef = [self nilIfNull: taskData [kTaskUrlKey]]; // Sage-only? + task.taskTitle = [self nilIfNull: taskData [kTaskTitleKey]]; // sage and us + task.sortString = [self nilIfNull: taskData [kTaskSortStringKey]]; // us-only, for now + task.taskClassName = [self nilIfNull: taskData [kTaskClassNameKey]]; // sage and us, because we add to sage + task.taskCompletionTimeString = [self nilIfNull: taskData [kTaskCompletionTimeStringKey]]; // us-only? + task.taskContentFileName = [self nilIfNull: taskData [kTaskFileNameKey]]; // us-only? + task.taskIsOptional = [self nilIfNull: taskData [kTaskIsOptionalKey]]; // us for now, Sage eventually? + + + if ([task.taskTitle stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]].length == 0) + { + APCLogDebug (@"\n-------------\nWARNING! About to create a Task with an empty title! taskData and task are: \n%@\n%@\n----------------", taskData, task); + NSLog (@""); + } + + /* + STRONGLY SUGGESTED: move this to the individual Task + view controllers. This section actually compiles and + serializes the content of the survey file. But those + files are just JSON, and can easily and safely be + loaded later; we don't have to store them in CoreData. + We probably *do* want to *verify* that it can indeed + be compiled, though. + */ + if (task.taskContentFileName) + { + // This method spews errors as needed. + id survey = [self surveyFromFileBaseName: task.taskContentFileName]; + + if (survey) + { + task.rkTask = survey; + } + } +} + +- (APCTask *) taskWithId: (NSString *) taskId + versionNumber: (NSNumber *) versionNumber + inContext: (NSManagedObjectContext *) context + returningError: (NSError * __autoreleasing *) errorToReturn +{ + APCTask *task = nil; + NSError *localError = nil; + NSFetchRequest *searchForThisExactTask = [APCTask requestWithPredicate: [NSPredicate predicateWithFormat: @"%K == %@ && %K == %@", + NSStringFromSelector (@selector (taskID)), + taskId, + NSStringFromSelector (@selector (taskVersionNumber)), + versionNumber + ]]; + + NSError *errorSearchingForTasks = nil; + NSArray *possibleCopiesOfThisTask = [context executeFetchRequest: searchForThisExactTask + error: & errorSearchingForTasks]; + + if (! possibleCopiesOfThisTask) + { + localError = [NSError errorWithCode: APCErrorSearchingForTaskWithIDCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorSearchingForTaskWithIDReason + recoverySuggestion: APCErrorSearchingForTasksWithIDSuggestion + nestedError: errorSearchingForTasks]; + } + else if (possibleCopiesOfThisTask.count == 0) + { + // It actually doesn't exist. No problem. + } + else if (possibleCopiesOfThisTask.count == 1) + { + // Whew. Perfect. + task = possibleCopiesOfThisTask.firstObject; + } + else // more than one task with this ID and version + { + /* + This should literally never happen, because of + this "if" block. What do we we if it does? + For now, yelp and continue. + */ + NSString *nameOfTaskIDField = NSStringFromSelector (@selector (taskID)); + NSString *nameOfTaskVersionField = NSStringFromSelector (@selector (taskVersionNumber)); + + NSError *whoopsTooManyTasksWithThisID = [NSError errorWithCode: APCErrorMoreThanOneTaskWithIdAndVersionCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorMoreThanOneTaskWithIdAndVersionReason + recoverySuggestion: APCErrorMoreThanOneTaskWithIdAndVersionSuggestion + relatedFilePath: nil + relatedURL: nil + nestedError: nil + otherUserInfo: @{ nameOfTaskIDField : [self nullIfNil: taskId], + nameOfTaskVersionField : [self nullIfNil: versionNumber] + }]; + + APCLogError2 (whoopsTooManyTasksWithThisID); + + // ...so this is undefined, kinda: + task = possibleCopiesOfThisTask.firstObject; + + // ...and we're about to return an error when we're also + // returning a valid object, which means the calling + // method won't expect this. In progress. + localError = whoopsTooManyTasksWithThisID; + } + + if (errorToReturn != nil) + { + * errorToReturn = localError; + } + + return task; +} + +- (id ) surveyFromFileBaseName: (NSString *) surveyContentFileBaseName +{ + id rkSurvey = nil; + + NSString *surveyFilePath = [[NSBundle mainBundle] pathForResource: surveyContentFileBaseName + ofType: kAPCFileExtension_JSON]; + + if (! surveyFilePath) + { + NSString *fullFileName = [NSString stringWithFormat: @"%@.%@", surveyContentFileBaseName, kAPCFileExtension_JSON]; + + NSError *errorFindingSurveyFile = [NSError errorWithCode: APCErrorCouldntFindSurveyFileCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorCouldntFindSurveyFileReason + recoverySuggestion: APCErrorCouldntFindSurveyFileSuggestion + relatedFilePath: fullFileName + relatedURL: nil + nestedError: nil]; + + APCLogError2 (errorFindingSurveyFile); + } + + else + { + NSError *errorLoadingSurveyFile = nil; + NSData *jsonData = [NSData dataWithContentsOfFile: surveyFilePath + options: 0 + error: & errorLoadingSurveyFile]; + + if (! jsonData) + { + NSError *error = [NSError errorWithCode: APCErrorLoadingSurveyFileCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorLoadingSurveyFileReason + recoverySuggestion: APCErrorLoadingSurveyFileSuggestion + nestedError: errorLoadingSurveyFile]; + + APCLogError2 (error); + } + + else + { + NSError *errorParsingSurveyContent = nil; + NSDictionary *surveyContent = [NSJSONSerialization JSONObjectWithData: jsonData + options: 0 + error: & errorParsingSurveyContent]; + if (! surveyContent) + { + NSError *error = [NSError errorWithCode: APCErrorParsingSurveyContentCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorParsingSurveyContentReason + recoverySuggestion: APCErrorParsingSurveyContentSuggestion + nestedError: errorParsingSurveyContent]; + + APCLogError2 (error); + } + + else + { + @try + { + id manager = SBBComponent(SBBSurveyManager); + SBBSurvey *survey = [[manager objectManager] objectFromBridgeJSON: surveyContent]; + rkSurvey = [APCTask rkTaskFromSBBSurvey: survey]; + } + @catch (NSException *exception) + { + NSError *error = [NSError errorWithCode: APCErrorLoadingNativeBridgeSurveyObjectCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorLoadingNativeBridgeSurveyObjectReason + recoverySuggestion: APCErrorLoadingNativeBridgeSurveyObjectSuggestion + relatedFilePath: surveyFilePath + relatedURL: nil + nestedError: nil + otherUserInfo: @{ @"exception": exception, + @"stackTrace": exception.callStackSymbols }]; + + APCLogError2 (error); + } + @finally + { + + } + } + } + } + + return rkSurvey; +} + + + + +// ========================================================= +#pragma mark - IV. MANAGING POTENTIAL AND SCHEDULED TASKS - +// ========================================================= + +/** + Generates a new Scheduled Task, when the user is about to + view it for the first time. + */ +- (APCScheduledTask *) createScheduledTaskFromPotentialTask: (APCPotentialTask *) potentialTask +{ + APCSchedule *schedule = potentialTask.schedule; + NSDate *startDate = potentialTask.scheduledAppearanceDate; + NSString *expirationPeriod = schedule.expires; + NSDate *endDate = nil; + + if (expirationPeriod.length) + { + endDate = [startDate dateByAddingISO8601Duration: expirationPeriod]; + } + + APCScheduledTask *scheduledTask = [APCScheduledTask newObjectForContext: self.scheduleMOC]; + scheduledTask.generatedSchedule = potentialTask.schedule; + scheduledTask.task = potentialTask.task; + scheduledTask.startOn = startDate; + scheduledTask.endOn = endDate; + + NSError *errorSavingTask = nil; + BOOL savedSuccessfully = [scheduledTask saveToPersistentStore: & errorSavingTask]; + + if (! savedSuccessfully) + { + NSError *error = [NSError errorWithCode: APCErrorSavingToPeristentStoreCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorSavingToPeristentStoreReason + recoverySuggestion: APCErrorSavingToPeristentStoreSuggestion + nestedError: errorSavingTask]; + + APCLogError2 (error); + + [self deleteScheduledTask: scheduledTask]; + + scheduledTask = nil; + } + + + /* + Clear the taskGroup cache, so UIs (and anything else + depending on the cached taskGroups) draw correctly. + This operation is thread-safe. + */ + [self clearTaskGroupCache]; + + + return scheduledTask; +} + +- (void) deleteScheduledTask: (APCScheduledTask *) scheduledTask +{ + NSError *errorDeleting = nil; + [self.scheduleMOC deleteObject: scheduledTask]; + + BOOL deletedSuccessfully = [scheduledTask saveToPersistentStore: & errorDeleting]; + + if (! deletedSuccessfully) + { + NSError* error = [NSError errorWithCode: APCErrorDeletingTaskCode + domain: APCErrorDomainLoadingTasksAndSchedules + failureReason: APCErrorDeletingTaskReason + recoverySuggestion: APCErrorDeletingTaskSuggestion + nestedError: errorDeleting]; + + APCLogError2 (error); + } + + /* + Clear the taskGroup cache, so UIs (and anything else + depending on the cached taskGroups) draw correctly. + This operation is thread-safe. + */ + [self clearTaskGroupCache]; +} + + + + +// ========================================================= +#pragma mark - V. UTILITIES - +// ========================================================= + + + + +// --------------------------------------------------------- +#pragma mark - Replying to the method who called us +// --------------------------------------------------------- + +/** + A local utility function, which checks for nil in both the + callbackBlock and the queue before queueing that block on + that queue, solely so we don't have to repeat those "if" + clauses everywhere we do this. + */ +- (void) performFetchAndLoadCallback: (APCSchedulerCallbackForFetchAndLoadOperations) callbackBlock + onQueue: (NSOperationQueue *) queue + sendingError: (NSError *) error +{ + if (queue != nil && callbackBlock != nil) + { + [queue addOperationWithBlock: ^{ + callbackBlock (error); + }]; + } +} + + + +// --------------------------------------------------------- +#pragma mark - Wrapper around system date +// --------------------------------------------------------- + +/** + Internal method that returns the fakeSystemDate, if it's + been set and if we're in debug mode, or the real system + date otherwise. + */ +- (NSDate *) systemDate +{ + NSDate *date = nil; + + if ([APCUtilities isInDebuggingMode] && self.fakeSystemDate != nil) + { + date = self.fakeSystemDate; + } + else + { + date = [NSDate date]; + } + + return date; +} + +- (void) clearFakeSystemDate +{ + /* + queue this along with all other operations on our + internal queue. + */ + [self.queryQueue addOperationWithBlock:^{ + + self.fakeSystemDate = nil; + + }]; +} + + + +// --------------------------------------------------------- +#pragma mark - Default Values +// --------------------------------------------------------- + +- (NSDictionary *) defaultScheduleValues +{ + NSNull *null = [NSNull null]; + + return @{ + kScheduleTypeKey : kScheduleTypeValueOnce, + kScheduleStringKey : null, + kTaskIDKey : null, + kScheduleExpiresKey : null, + kScheduleDelayKey : null, + kScheduleStartDateKey : null, + kScheduleEndDateKey : null, + }; +} + +- (NSDictionary *) defaultTaskValues +{ + return @{}; +} + + + +// --------------------------------------------------------- +#pragma mark - Are we talkin' to the server? +// --------------------------------------------------------- + +- (BOOL) isServerDisabled +{ + APCAppDelegate *app = [APCAppDelegate sharedAppDelegate]; + BOOL result = app.dataSubstrate.parameters.bypassServer; + +#if DEVELOPMENT + result = YES; +#endif + + return result; +} + + + +// --------------------------------------------------------- +#pragma mark - The TaskGroup Cache +// --------------------------------------------------------- + +/* + The three methods in this section use the "@synchronized" + keyword. This means precisely the following: + + - They read and change the same array. + + - They are called by a couple of methods from at least + 2 threads, and are frequently called at the same time. + + - Each change to that array takes several steps. + Those steps have to happen together if we want the + array and its contents to be make sense. + */ + +- (NSArray *) cachedTaskGroupsForDayOfDate: (NSDate *) date + forTasksMatchingFilter: (NSPredicate *) taskFilter +{ + APCTaskGroupCacheEntry *foundCacheEntry = nil; + + @synchronized (self.taskGroupCacheMutex) + { + for (APCTaskGroupCacheEntry *cacheEntry in self.taskGroupCache) + { + BOOL bothTaskFiltersAreNil = taskFilter == nil && cacheEntry.taskFilter == nil; + BOOL taskFiltersHaveSameDescription = [taskFilter.description isEqualToString: cacheEntry.taskFilter.description]; + + if ([date.startOfDay isEqualToDate: cacheEntry.date.startOfDay] && + (bothTaskFiltersAreNil || taskFiltersHaveSameDescription)) + { + foundCacheEntry = cacheEntry; + break; + } + } + } + + return foundCacheEntry.taskGroups; +} + +- (void) cacheTaskGroups: (NSArray *) taskGroups + forDate: (NSDate *) date + andFilter: (NSPredicate *) taskFilter +{ + @synchronized (self.taskGroupCacheMutex) + { + NSArray *cachedTaskGroups = [self cachedTaskGroupsForDayOfDate: date + forTasksMatchingFilter: taskFilter]; + + if (cachedTaskGroups == nil) + { + APCTaskGroupCacheEntry *cacheEntry = [[APCTaskGroupCacheEntry alloc] initWithDate: date + taskFilter: taskFilter + taskGroups: taskGroups]; + + APCLogDebug (@"Caching task groups: %@", cacheEntry); + + [self.taskGroupCache addObject: cacheEntry]; + } + } +} + +- (void) clearTaskGroupCache +{ + @synchronized (self.taskGroupCacheMutex) + { + APCLogDebug (@"Clearing the task-group cache."); + + self.taskGroupCache = [NSMutableArray new]; + } +} + + + +// --------------------------------------------------------- +#pragma mark - Utility Methods +// --------------------------------------------------------- + +- (APCAppDelegate *) appDelegate +{ + return [APCAppDelegate sharedAppDelegate]; +} + +- (NSManagedObjectContext *) managedObjectContext +{ + return self.scheduleMOC; +} + +/** + Performs a "practical" version of "isEqual", returning YES if + (a) both objects are nil, or + (b) [object1 isEqual: object2] + */ +- (BOOL) object1: (id) object1 + equalsObject2: (id) object2 +{ + return ((object1 == nil && object2 == nil) || [object1 isEqual: object2]); +} + +/** + Returns nil if the specified value is [NSNull null]. + Otherwise, returns the value itself. + + Used to extract values from an NSDictionary and treat + them as "nil" when that was the actual intent. + */ +- (id) nilIfNull: (id) someInputValue +{ + id outputValue = someInputValue; + + if (outputValue == [NSNull null]) + { + outputValue = nil; + } + + return outputValue; +} + +/** + Returns [NSNull null] if the specified value is + [NSNull null], so that we can insert the specified item + into a dictionary. Otherwise, returns the value itself. + */ +- (id) nullIfNil: (id) someInputValue +{ + id outputValue = someInputValue; + + if (outputValue == nil) + { + outputValue = [NSNull null]; + } + + return outputValue; +} + +- (NSArray *) arrayByFindingCommonElementsInScheduleArray: (NSArray *) scheduleList1 + andScheduleArray: (NSArray *) scheduleList2 + comparingObjectsUsingFields: (BOOL) shouldComparePointersNotFields +{ + // + // For debugging: sort them by title, so we can see what's going on. + // + scheduleList1 = [scheduleList1 sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + scheduleList2 = [scheduleList2 sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + + NSMutableArray *result = [NSMutableArray new]; + NSMutableArray *shorterCopyOfList2 = [NSArray arrayWithArray: scheduleList2].mutableCopy; + + for (APCSchedule *schedule1 in scheduleList1) + { + for (APCSchedule *schedule2 in shorterCopyOfList2) + { + BOOL theyreTheSame = [self schedule: schedule1 + isEquivalentToSchedule: schedule2 + comparingObjectsUsingFields: shouldComparePointersNotFields]; + + if (theyreTheSame) + { + [result addObject: schedule1]; + [shorterCopyOfList2 removeObject: schedule2]; + break; + } + } + } + + return result; +} + +- (NSArray *) arrayByRemovingElementsInScheduleArray: (NSArray *) stuffToRemove + fromScheduleArray: (NSArray *) stuffToKeep + comparingObjectsUsingFields: (BOOL) shouldCompareFieldsNotPointers +{ + + // + // For debugging: sort them by title, so we can see what's going on. + // + stuffToRemove = [stuffToRemove sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + stuffToKeep = [stuffToKeep sortedArrayUsingSelector: @selector (compareWithSchedule:)]; + + NSMutableArray *result = [NSMutableArray new]; + + for (APCSchedule *scheduleToKeep in stuffToKeep) + { + BOOL found = NO; + + for (APCSchedule *scheduleToRemove in stuffToRemove) + { + BOOL theyreTheSame = [self schedule: scheduleToKeep + isEquivalentToSchedule: scheduleToRemove + comparingObjectsUsingFields: shouldCompareFieldsNotPointers]; + + if (theyreTheSame) + { + found = YES; + break; + } + } + + if (! found) + { + [result addObject: scheduleToKeep]; + } + } + + return result; +} + +- (NSArray *) arrayByRemovingElementsInArray: (NSArray *) stuffToRemove + fromArray: (NSArray *) stuffToKeep + comparingObjectsUsingIsEqual: (BOOL) shouldCompareEqualityNotPointers +{ + NSMutableArray *result = [NSMutableArray new]; + + for (NSObject *thingyToKeep in stuffToKeep) + { + BOOL found = NO; + + for (NSObject *thingyToRemove in stuffToRemove) + { + BOOL theyreTheSame = (shouldCompareEqualityNotPointers ? + [thingyToKeep isEqual: thingyToRemove] : + thingyToKeep == thingyToRemove); + + if (theyreTheSame) + { + found = YES; + break; + } + } + + if (! found) + { + [result addObject: thingyToKeep]; + } + } + + return result; +} + +- (BOOL) schedule: (APCSchedule *) schedule1 + isEquivalentToSchedule: (APCSchedule *) schedule2 + comparingObjectsUsingFields: (BOOL) shouldCompareFieldsNotPointers +{ + BOOL schedulesAreEquivalent = NO; + + if (! shouldCompareFieldsNotPointers) + { + schedulesAreEquivalent = (schedule1 == schedule2); + } + else + { + BOOL propertiesAreEqual = ( + [self object1: schedule1.scheduleSource equalsObject2: schedule2.scheduleSource] && // server, disk, glucose log, etc. + [self object1: schedule1.scheduleType equalsObject2: schedule2.scheduleType] && // one-time, cron-based, interval-based + [self object1: schedule1.effectiveEndDate equalsObject2: schedule2.effectiveEndDate] && + [self object1: schedule1.delay equalsObject2: schedule2.delay] && // delay before first instance shows up on calendar + [self object1: schedule1.expires equalsObject2: schedule2.expires] && // delay before each instance vanishes from calendar + [self object1: schedule1.maxCount equalsObject2: schedule2.maxCount] && // max number of occurrences on calendar + [self object1: schedule1.notes equalsObject2: schedule2.notes] && + [self object1: schedule1.scheduleString equalsObject2: schedule2.scheduleString] && // the cron expression + [self object1: schedule1.shouldRemind equalsObject2: schedule2.shouldRemind] && + [self object1: schedule1.reminderMessage equalsObject2: schedule2.reminderMessage] && + [self object1: schedule1.reminderOffset equalsObject2: schedule2.reminderOffset] && + [self object1: schedule1.interval equalsObject2: schedule2.interval] && // time between appearances, like "3 months" + [self object1: schedule1.timesOfDay equalsObject2: schedule2.timesOfDay] && // list of times of day, if using intervals + + true // leave this at the end, to make it easier to rearrange the lines above + ); + + if (propertiesAreEqual && + (schedule1.tasks.count == schedule2.tasks.count) && + (schedule1.tasks.count > 0)) + { + /* + Up to here, they're identical. Past this point, we'll + look for something NOT different, and set this to NO + if found: + */ + schedulesAreEquivalent = YES; + + /* + We have the same number of tasks. Let's sort both lists of tasks + by ID and version, and then walk through them in order. If we find + any differences, one of the tasks is different from the other, which + is all we need to know. + + Sort them using an array of sort descriptors we declared at the top + of this file. We might call this method hundreds of times for a given + schedule download. We won't do that OFTEN, but there's no reason to + keep reallocating those sort descriptors every time that happens. + */ + NSArray *myTasks = [schedule1.tasks.allObjects sortedArrayUsingDescriptors: [APCTask defaultSortDescriptors]]; + NSArray *otherTasks = [schedule2.tasks.allObjects sortedArrayUsingDescriptors: [APCTask defaultSortDescriptors]]; + + for (NSUInteger taskIndex = 0; taskIndex < myTasks.count; taskIndex ++) + { + APCTask *myTask = myTasks [taskIndex]; + APCTask *otherTask = otherTasks [taskIndex]; + + if (! [self object1: myTask.taskID equalsObject2: otherTask.taskID] || + ! [self object1: myTask.taskVersionNumber equalsObject2: otherTask.taskVersionNumber]) + { + schedulesAreEquivalent = NO; + break; + } + } + } + } + + return schedulesAreEquivalent; +} + +/** + These two methods are very similar to a method in APCScheduleIntervalEnumerator.m. + */ +- (NSString *) serializedTimesOfDayStringFromISO8601TimesOfDayInArray: (NSArray *) timesOfDay +{ + NSDateFormatter *formatter = [NSDateFormatter new]; + formatter.locale = [NSLocale localeWithLocaleIdentifier: kAPCDateFormatLocaleEN_US_POSIX]; + + NSArray *legalFormats = @[@"H", + @"HH", + @"HH:mm", + @"HH:mm:SS", + @"HH:mm:SS.sss" + ]; + + NSString *result = nil; + NSMutableArray *arrayOfValidStrings = [NSMutableArray new]; + + if (timesOfDay != nil && [timesOfDay isKindOfClass: [NSArray class]]) + { + for (id thingy in timesOfDay) + { + NSString *inboundTimeString = nil; + + /* + Allow integers as times of day (3 = 3am, 14 = + 2pm, etc.) The spec only requests ISO 8601 + strings, but I think this will make life + easier and equally practical, and it doesn't + cost us much. + */ + if ([thingy isKindOfClass: [NSNumber class]]) + { + NSNumber *value = thingy; + NSUInteger intValue = value.integerValue; + float floatValue = value.floatValue; + if (floatValue == (float) intValue && + intValue >= kAPCTimeFirstLegalISO8601HourOfDay && + intValue <= kAPCTimeLastLegalISO8601HourOfDay) + { + inboundTimeString = value.stringValue; + } + } + + else if ([thingy isKindOfClass: [NSString class]]) + { + inboundTimeString = thingy; + } + + else + { + // Ignore all other data types. + } + + if (inboundTimeString != nil) + { + NSDate *date = nil; + + for (NSString *format in legalFormats) + { + formatter.dateFormat = format; + date = [formatter dateFromString: inboundTimeString]; + + if (date != nil) + { + break; + } + } + + if (date != nil) + { + [arrayOfValidStrings addObject: inboundTimeString]; + } + } + } + } + + result = [arrayOfValidStrings componentsJoinedByString: @"|"]; + + if (result.length == 0) + { + result = nil; + } + + return result; +} + +- (NSArray *) deserializedArrayOfDurationsSinceMidnightFromISO8601TimesOfDayString: (NSString *) serializedTimesOfDayString +{ + NSDateFormatter *formatter = [NSDateFormatter new]; + formatter.locale = [NSLocale localeWithLocaleIdentifier: kAPCDateFormatLocaleEN_US_POSIX]; + + NSArray *legalFormats = @[@"H", + @"HH", + @"HH:mm", + @"HH:mm:SS", + @"HH:mm:SS.sss" + ]; + + NSMutableArray *result = [NSMutableArray new]; + + NSArray *iso8601TimeStrings = [serializedTimesOfDayString componentsSeparatedByString: @"|"]; + + for (NSString *iso8601TimeString in iso8601TimeStrings) + { + NSDate *date = nil; + + for (NSString *format in legalFormats) + { + formatter.dateFormat = format; + date = [formatter dateFromString: iso8601TimeString]; + + if (date != nil) + { + break; + } + } + + if (date != nil) + { + NSDate *midnightOnThatDate = date.startOfDay; + NSTimeInterval secondsSinceMidnight = [date timeIntervalSinceDate: midnightOnThatDate]; + [result addObject: @(secondsSinceMidnight)]; + } + } + + if (result.count == 0) + { + result = nil; + } + + return result; +} + + @end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCTaskGroupCacheEntry.h b/APCAppCore/APCAppCore/Library/Scheduler/APCTaskGroupCacheEntry.h new file mode 100644 index 00000000..771a2632 --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCTaskGroupCacheEntry.h @@ -0,0 +1,52 @@ +// +// APCTaskGroupCacheEntry.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + + + +/** + Caches the taskGroups retrieved from CoreData for a + specific date range and filter. + */ +@interface APCTaskGroupCacheEntry : NSObject + +@property (nonatomic, strong) NSDate *date; +@property (nonatomic, strong) NSPredicate *taskFilter; +@property (nonatomic, strong) NSArray *taskGroups; + +- (instancetype) initWithDate: (NSDate *) date + taskFilter: (NSPredicate *) taskFilter + taskGroups: (NSArray *) taskGroups; + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCTaskGroupCacheEntry.m b/APCAppCore/APCAppCore/Library/Scheduler/APCTaskGroupCacheEntry.m new file mode 100644 index 00000000..c489a811 --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCTaskGroupCacheEntry.m @@ -0,0 +1,65 @@ +// +// APCTaskGroupCacheEntry.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCTaskGroupCacheEntry.h" + +@implementation APCTaskGroupCacheEntry + +- (instancetype) initWithDate: (NSDate *) date + taskFilter: (NSPredicate *) taskFilter + taskGroups: (NSArray *) taskGroups +{ + self = [super init]; + + if (self) + { + _date = date; + _taskFilter = taskFilter; + _taskGroups = taskGroups; + } + + return self; +} + +- (NSString *) description +{ + NSString *result = [NSString stringWithFormat: @"CacheEntry with date %@, filter \"%@\", and %@ taskGroups.", + self.date, + self.taskFilter, + @(self.taskGroups.count) + ]; + + return result; +} + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCTopLevelScheduleEnumerator.h b/APCAppCore/APCAppCore/Library/Scheduler/APCTopLevelScheduleEnumerator.h new file mode 100644 index 00000000..5e54f4c1 --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCTopLevelScheduleEnumerator.h @@ -0,0 +1,75 @@ +// +// APCTopLevelScheduleEnumerator.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + +@class APCSchedule; +@class APCDateRange; + + + +/** + Enumerates over all dates in a Schedule, returning + DateRanges representing the amount of time each + scheduled item would appear on a calendar. + + This is a "top level" enumerator because of evolution. + We had a previous "schedule enumerator" which was as + appropriately generalized as we knew how to make it. + However, we now realize better and more appropriate + ways to generalize this. + */ +@interface APCTopLevelScheduleEnumerator : NSEnumerator + +- (instancetype) initWithSchedule: (APCSchedule *) schedule + fromDate: (NSDate *) startDate + toDate: (NSDate *) endDate; + +/** + Returns -nextScheduledAppearance. + + This is the normal NSEnumerator interface for getting the + next thingy being enumerated. In this class, we return + date ranges. See -nextScheduledAppearance. + */ +- (NSDate *) nextObject; + +/** + This is the method called by -nextObject in this + enumerator. Returns the next "scheduled appearance" of + something on this Schedule -- the date and time where that + object would appear. + */ +- (NSDate *) nextScheduledAppearance; + +@end diff --git a/APCAppCore/APCAppCore/Library/Scheduler/APCTopLevelScheduleEnumerator.m b/APCAppCore/APCAppCore/Library/Scheduler/APCTopLevelScheduleEnumerator.m new file mode 100644 index 00000000..bf2d894c --- /dev/null +++ b/APCAppCore/APCAppCore/Library/Scheduler/APCTopLevelScheduleEnumerator.m @@ -0,0 +1,190 @@ +// +// APCTopLevelScheduleEnumerator.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCTopLevelScheduleEnumerator.h" +#import "APCDateRange.h" +#import "APCSchedule+AddOn.h" +#import "APCScheduleEnumerator.h" +#import "APCScheduleIntervalEnumerator.h" +#import "NSDate+Helper.h" + + +@interface APCTopLevelScheduleEnumerator () + +- (instancetype) init NS_DESIGNATED_INITIALIZER; + +// The basics +@property (nonatomic, strong) APCSchedule *schedule; +@property (nonatomic, strong) NSDate *startDate; +@property (nonatomic, strong) NSDate *endDate; +@property (nonatomic, assign) APCScheduleRecurrenceStyle recurrenceStyle; + +// enumeration style #1: using cron expressions +@property (nonatomic, strong) NSString *originalCronExpression; +@property (nonatomic, strong) APCScheduleExpression *apcCronExpression; +@property (nonatomic, strong) APCScheduleEnumerator *apcCronExpressionEnumerator; + +// enumeration style #2: ISO 8601 (human-readable) time intervals +@property (nonatomic, strong) APCScheduleIntervalEnumerator *intervalEnumerator; + +/* + Optional max count of iterations. This is an NSNumber + to allow us to use "nil" to mean "not set." + */ +@property (nonatomic, strong) NSNumber *maxCount; +@property (nonatomic, assign) NSUInteger countOfTimesCalledSoFar; + +@end + + +@implementation APCTopLevelScheduleEnumerator + +- (instancetype) init +{ + self = [super init]; + + if (self) + { + _apcCronExpression = nil; + _apcCronExpressionEnumerator = nil; + _countOfTimesCalledSoFar = 0; + _endDate = nil; + _intervalEnumerator = nil; + _maxCount = nil; + _originalCronExpression = nil; + _recurrenceStyle = APCScheduleRecurrenceStyleExactlyOnce; + _schedule = nil; + _startDate = nil; + } + + return self; +} + +- (instancetype) initWithSchedule: (APCSchedule *) schedule + fromDate: (NSDate *) startDate + toDate: (NSDate *) endDate +{ + self = [self init]; + + if (self) + { + _endDate = endDate; + _maxCount = schedule.maxCount; + _originalCronExpression = schedule.scheduleString; + _schedule = schedule; + _startDate = startDate; + + // This is a computed property. + _recurrenceStyle = schedule.recurrenceStyle; + + switch (schedule.recurrenceStyle) + { + default: + case APCScheduleRecurrenceStyleExactlyOnce: + { + _maxCount = @(1); + break; + } + + case APCScheduleRecurrenceStyleCronExpression: + { + if (_originalCronExpression.length) + { + _apcCronExpression = schedule.scheduleExpression; + _apcCronExpressionEnumerator = [_apcCronExpression enumeratorBeginningAtTime: startDate + endingAtTime: endDate]; + } + break; + } + + case APCScheduleRecurrenceStyleInterval: + { + _intervalEnumerator = [[APCScheduleIntervalEnumerator alloc] initWithSchedule: schedule + startDate: startDate + endDate: endDate]; + break; + } + } + } + + return self; +} + +- (NSDate *) nextObject +{ + return [self nextScheduledAppearance]; +} + +- (NSDate *) nextScheduledAppearance +{ + NSDate *appearanceDate = nil; + NSUInteger maxCount = self.maxCount.integerValue; + + if (self.schedule.recurrenceStyle == APCScheduleRecurrenceStyleExactlyOnce) + { + maxCount = 1; + } + + BOOL weNeedToWatchForMaxCount = maxCount > 0; + BOOL weHaveReachedMaxCount = (self.countOfTimesCalledSoFar >= maxCount); + + + if (weNeedToWatchForMaxCount && weHaveReachedMaxCount) + { + // We're done enumerating. Return nil. + appearanceDate = nil; + } + else + { + switch (self.recurrenceStyle) + { + default: + case APCScheduleRecurrenceStyleExactlyOnce: + appearanceDate = self.startDate; + break; + + case APCScheduleRecurrenceStyleCronExpression: + appearanceDate = self.apcCronExpressionEnumerator.nextScheduledDate; + break; + + case APCScheduleRecurrenceStyleInterval: + appearanceDate = self.intervalEnumerator.nextScheduledDate; + break; + } + } + + self.countOfTimesCalledSoFar = self.countOfTimesCalledSoFar + 1; + return appearanceDate; +} + +@end diff --git a/APCAppCore/APCAppCore/Library/Scoring/APCScoring.m b/APCAppCore/APCAppCore/Library/Scoring/APCScoring.m index 268c5b37..719b7c55 100644 --- a/APCAppCore/APCAppCore/Library/Scoring/APCScoring.m +++ b/APCAppCore/APCAppCore/Library/Scoring/APCScoring.m @@ -47,11 +47,11 @@ static NSString *const kDatasetGroupByMonth = @"datasetGroupByMonth"; static NSString *const kDatasetGroupByYear = @"datasetGroupByYear"; -static NSInteger const kNumberOfDaysInWeek = 7; -static NSInteger const kNumberOfDaysInMonth = 30; -static NSInteger const kNumberOfDaysIn3Months = 90; -static NSInteger const kNumberOfDaysIn6Months = 180; -static NSInteger const kNumberOfDaysInYear = 365; +static NSInteger const kNumberOfDaysInWeek = 7; +static NSInteger const kNumberOfDaysInMonth = 30; +static NSInteger const kNumberOfDaysIn3Months = 90; +static NSInteger const __unused kNumberOfDaysIn6Months = 180; +static NSInteger const kNumberOfDaysInYear = 365; @interface APCScoring() @property (nonatomic, strong) APCScoring *correlatedScoring; diff --git a/APCAppCore/APCAppCore/Startup/APCAppDelegate.h b/APCAppCore/APCAppCore/Startup/APCAppDelegate.h index 919e2063..422ed959 100644 --- a/APCAppCore/APCAppCore/Startup/APCAppDelegate.h +++ b/APCAppCore/APCAppCore/Startup/APCAppDelegate.h @@ -47,6 +47,8 @@ extern NSUInteger const kTheEntireDataModelOfTheApp; @property (nonatomic, strong) APCFitnessAllocation *sevenDayFitnessAllocationData; @property (strong, nonatomic) UITabBarController *tabster; ++ (instancetype) sharedAppDelegate; + //APC Related Properties & Methods @property (strong, nonatomic) APCDataSubstrate * dataSubstrate; @property (strong, nonatomic) APCDataMonitor * dataMonitor; @@ -65,7 +67,6 @@ extern NSUInteger const kTheEntireDataModelOfTheApp; @property (nonatomic, strong) NSArray *storyboardIdInfo; -- (void)loadStaticTasksAndSchedulesIfNecessary; //For resetting app - (void) updateDBVersionStatus; - (void) clearNSUserDefaults; //For resetting app @@ -79,7 +80,7 @@ extern NSUInteger const kTheEntireDataModelOfTheApp; - (void) showNeedsEmailVerification; - (void) setUpRootViewController: (UIViewController*) viewController; - (void) setUpTasksReminder; -- (NSDictionary *) tasksAndSchedulesWillBeLoaded; + - (void)performMigrationFrom:(NSInteger)previousVersion currentVersion:(NSInteger)currentVersion; - (void)performMigrationAfterDataSubstrateFrom:(NSInteger)previousVersion currentVersion:(NSInteger)currentVersion; - (NSString *) applicationDocumentsDirectory; @@ -95,7 +96,6 @@ extern NSUInteger const kTheEntireDataModelOfTheApp; - (void) signedUpNotification: (NSNotification*) notification; - (void) logOutNotification:(NSNotification *)notification; -- (NSArray *)offsetForTaskSchedules; - (void)afterOnBoardProcessIsFinished; - (NSArray *)reviewConsentActions; - (NSArray *)allSetTextBlocks; diff --git a/APCAppCore/APCAppCore/Startup/APCAppDelegate.m b/APCAppCore/APCAppCore/Startup/APCAppDelegate.m index c725569e..ef0d6267 100644 --- a/APCAppCore/APCAppCore/Startup/APCAppDelegate.m +++ b/APCAppCore/APCAppCore/Startup/APCAppDelegate.m @@ -91,6 +91,14 @@ @interface APCAppDelegate ( ) @implementation APCAppDelegate + ++ (instancetype)sharedAppDelegate +{ + APCAppDelegate *appDelegate = (APCAppDelegate *) [[UIApplication sharedApplication] delegate]; + return appDelegate; +} + + /*********************************************************************************/ #pragma mark - App Delegate Methods /*********************************************************************************/ @@ -108,7 +116,10 @@ - (BOOL) application: (UIApplication *) __unused application [self doGeneralInitialization]; [self initializeBridgeServerConnection]; [self initializeAppleCoreStack]; - [self loadStaticTasksAndSchedulesIfNecessary]; + + [self.scheduler loadTasksAndSchedulesFromDiskAndThenUseThisQueue: nil + toDoThisWhenDone: nil]; + [self registerNotifications]; [self setUpHKPermissions]; [self setUpAppAppearance]; @@ -317,12 +328,12 @@ - (UIViewController *)application:(UIApplication *) __unused application viewCon } else if ([identifierComponents.lastObject isEqualToString:@"ActivitiesNavController"]) { - return self.tabster.viewControllers[kIndexOfActivitesTab]; + return self.tabster.viewControllers[kAPCActivitiesTabIndex]; } else if ([identifierComponents.lastObject isEqualToString:@"APCActivityVC"]) { - if ( [self.tabster.viewControllers[kIndexOfActivitesTab] respondsToSelector:@selector(topViewController)]) { - return [(UINavigationController*) self.tabster.viewControllers[kIndexOfActivitesTab] topViewController]; + if ( [self.tabster.viewControllers[kAPCActivitiesTabIndex] respondsToSelector:@selector(topViewController)]) { + return [(UINavigationController*) self.tabster.viewControllers[kAPCActivitiesTabIndex] topViewController]; } } @@ -371,54 +382,9 @@ - (void) initializeAppleCoreStack manager.authDelegate = self.dataSubstrate.currentUser; } -- (void)loadStaticTasksAndSchedulesIfNecessary -{ - if (![APCDBStatus isSeedLoadedWithContext:self.dataSubstrate.persistentContext]) { - [APCDBStatus setSeedLoaded:self.initializationOptions[kDBStatusVersionKey] WithContext:self.dataSubstrate.persistentContext]; - NSString *resource = [[NSBundle mainBundle] pathForResource:self.initializationOptions[kTasksAndSchedulesJSONFileNameKey] ofType:@"json"]; - NSData *jsonData = [NSData dataWithContentsOfFile:resource]; - NSError * error; - NSDictionary * dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; - APCLogError2 (error); - - NSDictionary *manipulatedDictionary = [(APCAppDelegate*)[UIApplication sharedApplication].delegate tasksAndSchedulesWillBeLoaded]; - - if (manipulatedDictionary != nil) { - dictionary = manipulatedDictionary; - } - - [self.dataSubstrate loadStaticTasksAndSchedules:dictionary]; - [APCKeychainStore resetKeyChain]; - } - else - { - NSString * dbVersionStr = [APCDBStatus dbStatusVersionwithContext:self.dataSubstrate.persistentContext]; - if (![dbVersionStr isEqualToString:self.initializationOptions[kDBStatusVersionKey]]) { - [self updateDBVersionStatus]; - } - } -} - //This method is overridable from each app - (void) updateDBVersionStatus { - NSString *resource = [[NSBundle mainBundle] pathForResource:self.initializationOptions[kTasksAndSchedulesJSONFileNameKey] ofType:@"json"]; - NSData *jsonData = [NSData dataWithContentsOfFile:resource]; - NSError * error; - NSDictionary * dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; - APCLogError2 (error); - - //Deeper investigation needed for enabling tasksAndSchedulesWillBeLoaded - /*NSDictionary *manipulatedDictionary = [(APCAppDelegate*)[UIApplication sharedApplication].delegate tasksAndSchedulesWillBeLoaded]; - - if (manipulatedDictionary != nil) { - dictionary = manipulatedDictionary; - }*/ - - //Enabling refreshing of tasks JSON only. Schedules might be tricky as Apps could manipulate schedules after creation. - //More investigation needed - [APCTask updateTasksFromJSON:dictionary[@"tasks"] inContext:self.dataSubstrate.persistentContext]; - //[APCSchedule updateSchedulesFromJSON:dictionary[@"schedules"] inContext:self.dataSubstrate.persistentContext]; [APCDBStatus updateSeedLoaded:self.initializationOptions[kDBStatusVersionKey] WithContext:self.dataSubstrate.persistentContext]; } @@ -617,13 +583,6 @@ -(void)application:(UIApplication *)__unused application handleActionWithIdentif [[UIApplication sharedApplication] scheduleLocalNotification:notification]; } completionHandler(); - } - - -- (NSArray *)offsetForTaskSchedules -{ - //TODO: Number of days should be zero based. If I want something to show up on day 2 then the offset is 1 - return nil; } - (void)afterOnBoardProcessIsFinished @@ -774,9 +733,6 @@ - (void) setUpCollectors {/*Abstract Implementation*/} return nil; } -- (NSDictionary *) tasksAndSchedulesWillBeLoaded { - return nil; -} /*********************************************************************************/ #pragma mark - Public Helpers @@ -830,11 +786,12 @@ - (void)showTabBar UITabBarController *tabBarController = (UITabBarController *)[storyBoard instantiateInitialViewController]; self.window.rootViewController = tabBarController; + self.tabster = tabBarController; tabBarController.delegate = self; NSArray *items = tabBarController.tabBar.items; - NSUInteger selectedItemIndex = kIndexOfActivitesTab; + NSUInteger selectedItemIndex = kAPCActivitiesTabIndex; NSArray *deselectedImageNames = @[ @"tab_activities", @"tab_dashboard", @"tab_learn", @"tab_profile" ]; NSArray *selectedImageNames = @[ @"tab_activities_selected", @"tab_dashboard_selected", @"tab_learn_selected", @"tab_profile_selected" ]; @@ -846,18 +803,6 @@ - (void)showTabBar item.selectedImage = [[UIImage imageNamed:selectedImageNames[i]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; item.title = tabBarTitles[i]; item.tag = i; - if (i == kIndexOfActivitesTab) { - NSUInteger allScheduledTasks = self.dataSubstrate.countOfAllScheduledTasksForToday; - NSUInteger completedScheduledTasks = self.dataSubstrate.countOfCompletedScheduledTasksForToday; - - NSNumber *activitiesBadgeValue = (completedScheduledTasks < allScheduledTasks) ? @(allScheduledTasks - completedScheduledTasks) : @(0); - - if ([activitiesBadgeValue integerValue] != 0) { - item.badgeValue = [activitiesBadgeValue stringValue]; - } else { - item.badgeValue = nil; - } - } } NSArray *controllers = tabBarController.viewControllers; @@ -875,7 +820,6 @@ - (void)showTabBar - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { - self.tabster = (UITabBarController *)self.window.rootViewController; NSArray *deselectedImageNames = @[ @"tab_activities", @"tab_dashboard", @"tab_learn", @"tab_profile" ]; NSArray *selectedImageNames = @[ @"tab_activities_selected", @"tab_dashboard_selected", @"tab_learn_selected", @"tab_profile_selected" ]; NSArray *tabBarTitles = @[ @"Activities", @"Dashboard", @"Learn", @"Profile"]; @@ -910,19 +854,6 @@ - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewCon self.profileViewController.delegate = [self profileExtenderDelegate]; } } - - if (controllerIndex == kIndexOfActivitesTab) { - NSUInteger allScheduledTasks = self.dataSubstrate.countOfAllScheduledTasksForToday; - NSUInteger completedScheduledTasks = self.dataSubstrate.countOfCompletedScheduledTasksForToday; - - NSNumber *remainingTasks = (completedScheduledTasks < allScheduledTasks) ? @(allScheduledTasks - completedScheduledTasks) : @(0); - - if ([remainingTasks integerValue] != 0) { - item.badgeValue = [remainingTasks stringValue]; - } else { - item.badgeValue = nil; - } - } } } diff --git a/APCAppCore/APCAppCore/Startup/Migration/APCTasksAndSchedulesMigrationUtility.m b/APCAppCore/APCAppCore/Startup/Migration/APCTasksAndSchedulesMigrationUtility.m index 9bcede15..857f6129 100644 --- a/APCAppCore/APCAppCore/Startup/Migration/APCTasksAndSchedulesMigrationUtility.m +++ b/APCAppCore/APCAppCore/Startup/Migration/APCTasksAndSchedulesMigrationUtility.m @@ -83,34 +83,6 @@ - (NSDictionary *)sharedInit:(NSString *)tasksAndSchedulesFileName { } - (void)migrateScheduleAndTasks { - //TODO check for tasks that are in the datasubstrate - /* Compare schedule expression if they exist */ - /* Delete if they exist in the datasubstrate and if they are no longer in the JSON */ - - - //TODO check for tasks in the dictionary that are not in the datasubstrate - /* Create if they are in the JSON and do not exist in the datasubstrate */ - - // jsonDictionary[@"tasks"] - // jsonDictionary[@"schedules"] - - if (self.needsMigration) { - [self.dataSubstrate loadStaticTasksAndSchedules:@{@"BLAH" : @"BLAH"}]; - } } -// This will eventually become code -//- (void)modifyTask:(NSString *)taskIdentifier scheduleExpression:(NSString *)expression { -// -//} -// -//- (void)deleteScheduledTask:(NSString *)taskIdentifier { -// -//} -// -//- (void)createTaskAndSchedule:(NSDictionary *)taskAndSchedule { -// -//} - - @end diff --git a/APCAppCore/APCAppCore/UI/Components/GraphCharts/APCCubicCurveAlgorithm.m b/APCAppCore/APCAppCore/UI/Components/GraphCharts/APCCubicCurveAlgorithm.m index e491fc5b..abe09e2f 100644 --- a/APCAppCore/APCAppCore/UI/Components/GraphCharts/APCCubicCurveAlgorithm.m +++ b/APCAppCore/APCAppCore/UI/Components/GraphCharts/APCCubicCurveAlgorithm.m @@ -57,7 +57,7 @@ - (NSArray *)emptyArrayTillLength:(NSUInteger)length { NSMutableArray *emptyArray = [NSMutableArray new]; - for (int i=0; i - + - + @@ -11,161 +11,502 @@ - - + - + - + - - - + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - - - - - - - - - - - - + + + + + + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewController.h b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewController.h index b84e7bf9..43021a3b 100644 --- a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewController.h +++ b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewController.h @@ -32,11 +32,10 @@ // #import -#import "APCGroupedScheduledTask.h" #import "APCActivitiesBasicTableViewCell.h" #import "APCActivitiesTintedTableViewCell.h" #import "APCActivitiesSectionHeaderView.h" -@interface APCActivitiesViewController : UITableViewController +@interface APCActivitiesViewController : UIViewController @end diff --git a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewController.m b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewController.m index 440a66c8..a43b93fe 100644 --- a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewController.m +++ b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewController.m @@ -1,4 +1,4 @@ -// +// // APCActivitiesViewController.m // APCAppCore // @@ -32,201 +32,202 @@ // #import "APCActivitiesViewController.h" -#import "APCAppCore.h" -#import "APCActivitiesViewWithNoTask.h" +#import "APCActivitiesViewSection.h" +#import "APCAppDelegate.h" +#import "APCBaseTaskViewController.h" #import "APCCircularProgressView.h" +#import "APCConstants.h" +#import "APCDataMonitor+Bridge.h" +#import "APCLog.h" +#import "APCScheduler.h" +#import "APCSpinnerViewController.h" +#import "APCTask.h" +#import "APCTaskGroup.h" +#import "APCTasksReminderManager.h" +#import "APCUtilities.h" +#import "NSBundle+Helper.h" +#import "NSDate+Helper.h" +#import "UIAlertController+Helper.h" #import "UIColor+APCAppearance.h" -static CGFloat kTintedCellHeight = 65; -static CGFloat kTableViewSectionHeaderHeight = 77; +static CGFloat const kTintedCellHeight = 65; +static CGFloat const kTableViewSectionHeaderHeight = 77; +static NSString * const kAPCSampleGlucoseLogTaskAndScheduleFileName = @"APHSampleGlucoseLogTaskAndSchedule.json"; +static NSString * const kAPCListOfTimesMarker = @"LIST_OF_TIMES"; +static NSString * const kAPCListOfWeekdaysMarker = @"LIST_OF_WEEKDAYS"; +static NSString * const kAPCScheduleStringKey = @"scheduleString"; -typedef NS_ENUM(NSUInteger, APCActivitiesSections) -{ - APCActivitiesSectionToday = 0, - APCActivitiesSectionYesterday, - APCActivitiesSectionsTotalNumberOfSections -}; @interface APCActivitiesViewController () -@property (nonatomic) BOOL taskSelectionDisabled; +@property (nonatomic, strong) IBOutlet UITableView *tableView; +@property (nonatomic, weak) IBOutlet UILabel *noTasksLabel; -@property (strong, nonatomic) NSMutableArray *sectionsArray; -@property (strong, nonatomic) NSMutableArray *scheduledTasksArray; +@property (readonly) APCAppDelegate *appDelegate; +@property (readonly) APCActivitiesViewSection *todaySection; +@property (readonly) NSUInteger countOfRequiredTasksToday; +@property (readonly) NSUInteger countOfCompletedTasksToday; +@property (readonly) NSUInteger countOfRemainingTasksToday; +@property (readonly) UITabBarItem *myTabBarItem; -@property (strong, nonatomic) APCActivitiesViewWithNoTask *noTasksView; +@property (nonatomic, strong) NSDateFormatter *dateFormatter; +@property (nonatomic, strong) NSDate *lastKnownSystemDate; +@property (nonatomic, strong) NSArray *sections; +@property (nonatomic, assign) BOOL isFetchingFromCoreDataRightNow; +@property (nonatomic, strong) UIRefreshControl *refreshControl; -@property (strong, nonatomic) NSDateFormatter *dateFormatter; - -// The below, tasksBySection and keepGoingTasks, are used only -// for filtering the tasks that should not appear in the 'Yesterday' -// section. Needless to say, we do need to refactor this bit of -// logic so that it is more flexible. -@property (strong, nonatomic) NSDictionary *tasksBySection; -@property (strong, nonatomic) NSMutableArray *keepGoingTasks; +@property (readonly) NSDate *dateWeAreUsingForToday; @end + @implementation APCActivitiesViewController -#pragma mark - Lazy Loading -- (NSMutableArray*) scheduledTasksArray -{ - if (!_scheduledTasksArray) { - _scheduledTasksArray = [NSMutableArray array]; - } - return _scheduledTasksArray; -} - -- (NSMutableArray *)sectionsArray -{ - if (!_sectionsArray) { - _sectionsArray = [NSMutableArray array]; - } - return _sectionsArray; -} #pragma mark - Lifecycle -- (void)viewDidLoad +- (void) viewDidLoad { [super viewDidLoad]; - [self setupNotifications]; - + self.navigationItem.title = NSLocalizedString(@"Activities", @"Activities"); self.tableView.backgroundColor = [UIColor appSecondaryColor4]; - - [self.tableView registerNib:[UINib nibWithNibName:@"APCActivitiesSectionHeaderView" bundle:[NSBundle appleCoreBundle]] forHeaderFooterViewReuseIdentifier:kAPCActivitiesSectionHeaderViewIdentifier]; - + + NSString *headerViewNibName = NSStringFromClass ([APCActivitiesSectionHeaderView class]); + UINib *nib = [UINib nibWithNibName:headerViewNibName bundle:[NSBundle appleCoreBundle]]; + [self.tableView registerNib: nib forHeaderFooterViewReuseIdentifier: headerViewNibName]; + self.dateFormatter = [NSDateFormatter new]; - - self.keepGoingTasks = [NSMutableArray new]; - - APCAppDelegate * appDelegate = (APCAppDelegate*)[UIApplication sharedApplication].delegate; - self.tasksBySection = [appDelegate configureTasksForActivities]; + [self configureRefreshControl]; + self.lastKnownSystemDate = nil; } -- (void)viewWillAppear:(BOOL)animated +- (void) viewWillAppear: (BOOL) animated { - [super viewWillAppear:animated]; - + [super viewWillAppear: animated]; + + [self setupNotifications]; [self setUpNavigationBarAppearance]; - [self reloadData]; + + [self reloadTasksFromCoreData]; + [self checkForAndMaybeRespondToSystemDateChange]; + APCLogViewControllerAppeared(); } --(void) setupNotifications{ - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(reloadData) - name:APCUpdateActivityNotification object:nil]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(updateActivities:) - name:APCDayChangedNotification object:nil]; -} +- (void) viewDidDisappear: (BOOL) animated +{ + [super viewDidDisappear: animated]; --(void)setUpNavigationBarAppearance{ - [self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]]; - self.navigationController.navigationBar.translucent = NO; + [self cancelNotifications]; } -- (void) viewDidAppear:(BOOL)animated +- (void) setupNotifications { - [super viewDidAppear:animated]; + // Fires when one day rolls over to the next. + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector (checkForAndMaybeRespondToSystemDateChange) + name: APCDayChangedNotification + object: nil]; + + // ...but that only happens every minute or so. This lets us respond much faster. + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector (checkForAndMaybeRespondToSystemDateChange) + name: UIApplicationWillEnterForegroundNotification + object: nil]; + + // ...but that only happens every minute or so. This lets us respond much faster. + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector (checkForAndMaybeRespondToSystemDateChange) + name: UIApplicationDidBecomeActiveNotification + object: nil]; } -- (void)viewDidDisappear:(BOOL)animated +- (void) cancelNotifications { - [super viewDidDisappear:animated]; - [[NSNotificationCenter defaultCenter] removeObserver:self]; + [[NSNotificationCenter defaultCenter] removeObserver: self]; } -#pragma mark - UITableViewDataSource Methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *) __unused tableView +/** + Sets up the pull-to-refresh control at the top of the TableView. + If/when we go back to being a subclass of UITableViewController, + we can remove this. + */ +- (void) configureRefreshControl { - return self.sectionsArray.count; + self.refreshControl = [UIRefreshControl new]; + + [self.refreshControl addTarget: self + action: @selector (fetchNewestSurveysAndTasksFromServer:) + forControlEvents: UIControlEventValueChanged]; + + [self.tableView addSubview: self.refreshControl]; } -- (NSInteger)tableView:(UITableView *) __unused tableView numberOfRowsInSection:(NSInteger)section +- (void) setUpNavigationBarAppearance { - return ((NSArray*)self.scheduledTasksArray[section]).count; + [self.navigationController.navigationBar setBarTintColor: [UIColor whiteColor]]; + + self.navigationController.navigationBar.translucent = NO; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath + + +// --------------------------------------------------------- +#pragma mark - Responding to changes in system state +// --------------------------------------------------------- + +- (void) checkForAndMaybeRespondToSystemDateChange { - static NSString *medicationTrackerTaskId = @"a-APHMedicationTracker-20EF8ED2-E461-4C20-9024-F43FCAAAF4C3"; - - id task = ((NSArray*)self.scheduledTasksArray[indexPath.section])[indexPath.row]; - - APCGroupedScheduledTask *groupedScheduledTask; - APCScheduledTask *scheduledTask; - NSString * taskCompletionTimeString; - - if ([task isKindOfClass:[APCGroupedScheduledTask class]]) - { - groupedScheduledTask = (APCGroupedScheduledTask *)task; - taskCompletionTimeString = groupedScheduledTask.taskCompletionTimeString; - } - else if ([task isKindOfClass:[APCScheduledTask class]]) - { - scheduledTask = (APCScheduledTask *)task; - taskCompletionTimeString = scheduledTask.task.taskCompletionTimeString; - } - - APCActivitiesTintedTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: kAPCActivitiesTintedTableViewCellIdentifier]; - - if (taskCompletionTimeString) { - cell.subTitleLabel.text = taskCompletionTimeString; - cell.hidesSubTitle = NO; - } else { - cell.hidesSubTitle = YES; - } + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - if ([task isKindOfClass:[APCGroupedScheduledTask class]]) - { - cell.titleLabel.text = groupedScheduledTask.taskTitle; - NSUInteger tasksCount = groupedScheduledTask.scheduledTasks.count; - NSUInteger completedTasksCount = groupedScheduledTask.completedTasksCount; - - if (tasksCount == completedTasksCount) { - cell.countLabel.text = nil; - cell.countLabel.hidden = YES; - } else { - NSUInteger remaining = tasksCount - completedTasksCount; - cell.countLabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)remaining]; - cell.countLabel.hidden = NO; - } - - - cell.confirmationView.completed = groupedScheduledTask.complete; - - APCScheduledTask *firstTask = groupedScheduledTask.scheduledTasks.firstObject; - cell.tintColor = [UIColor colorForTaskId:firstTask.task.taskID]; - } - else if ([task isKindOfClass:[APCScheduledTask class]]) - { - cell.titleLabel.text = scheduledTask.task.taskTitle; - if ([scheduledTask.task.taskID isEqualToString:medicationTrackerTaskId] == NO) { - cell.confirmationView.completed = scheduledTask.completed.boolValue; + NSDate *now = self.dateWeAreUsingForToday; + + if (self.lastKnownSystemDate == nil || ! [now isSameDayAsDate: self.lastKnownSystemDate]) + { + APCLogDebug (@"Handling date changes (Activities): Last-known date has changed. Resetting dates, refreshing server content, and refreshing UI."); + + self.lastKnownSystemDate = now; + [self reloadTasksFromCoreData]; + [self fetchNewestSurveysAndTasksFromServer: nil]; } - cell.countLabel.text = nil; - cell.countLabel.hidden = YES; - cell.tintColor = [UIColor colorForTaskId:scheduledTask.task.taskID]; - } - - if (indexPath.section == APCActivitiesSectionYesterday) { - [cell setupIncompleteAppearance]; - } else { - [cell setupAppearance]; - } - - return cell; + }]; } -#pragma mark - UITableViewDelegate Methods + + +// --------------------------------------------------------- +#pragma mark - Displaying the table cells +// --------------------------------------------------------- + +- (NSInteger) numberOfSectionsInTableView: (UITableView *) __unused tableView +{ + return self.sections.count; +} + +- (NSInteger) tableView: (UITableView *) __unused tableView + numberOfRowsInSection: (NSInteger) sectionNumber +{ + APCActivitiesViewSection *section = [self sectionForSectionNumber: sectionNumber]; + NSInteger count = section.taskGroups.count; + return count; +} + +- (UITableViewCell *) tableView: (UITableView *) tableView + cellForRowAtIndexPath: (NSIndexPath *) indexPath +{ + APCActivitiesViewSection *section = [self sectionForCellAtIndexPath: indexPath]; + APCTaskGroup *taskGroupForThisRow = [self taskGroupForCellAtIndexPath: indexPath]; + APCActivitiesTintedTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: kAPCActivitiesTintedTableViewCellIdentifier]; + + [cell configureWithTaskGroup: taskGroupForThisRow + isTodayCell: section.isTodaySection + showDebuggingInfo: NO]; + + return cell; +} - (CGFloat) tableView: (UITableView *) __unused tableView heightForRowAtIndexPath: (NSIndexPath *) __unused indexPath @@ -237,370 +238,455 @@ - (CGFloat) tableView: (UITableView *) __unused tableView - (CGFloat) tableView: (UITableView *) __unused tableView heightForHeaderInSection: (NSInteger) __unused section { - CGFloat height = kTableViewSectionHeaderHeight; - - if (section == APCActivitiesSectionToday) { - height -= 15; - } - return height; + return kTableViewSectionHeaderHeight; } -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section +- (UIView *) tableView: (UITableView *) tableView + viewForHeaderInSection: (NSInteger) sectionNumber { - APCActivitiesSectionHeaderView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:kAPCActivitiesSectionHeaderViewIdentifier]; - - - switch (section) { - case APCActivitiesSectionToday: - { - [self.dateFormatter setDateFormat:@"MMMM d"]; - headerView.titleLabel.text = [NSString stringWithFormat:@"%@, %@", NSLocalizedString(@"Today", @""), [self.dateFormatter stringFromDate:[NSDate date]] ]; - headerView.subTitleLabel.text = NSLocalizedString(@"To start an activity, select from the list below.", @""); - } - break; - case APCActivitiesSectionYesterday: - { - headerView.titleLabel.text = NSLocalizedString(@"Yesterday", @""); - headerView.subTitleLabel.text = NSLocalizedString(@"Below are your incomplete tasks from yesterday. These are for reference only.", @""); - } - break; + NSString *headerViewIdentifier = NSStringFromClass ([APCActivitiesSectionHeaderView class]); + APCActivitiesSectionHeaderView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier: headerViewIdentifier]; + APCActivitiesViewSection *section = [self sectionForSectionNumber: sectionNumber]; - - default: // Keep going - { - headerView.titleLabel.text = NSLocalizedString(@"Keep Going!", @"Keep going"); - headerView.subTitleLabel.text = NSLocalizedString(@"Try one of these extra activities, to enchance your experience in your study.", - @"Try one of these extra activities, to enchance your experience in your study."); - } - break; - } + headerView.titleLabel.text = section.title; + headerView.subTitleLabel.text = section.subtitle; - return headerView; } - (BOOL) tableView: (UITableView *) __unused tableView shouldHighlightRowAtIndexPath: (NSIndexPath *) indexPath { - return indexPath.section != 1; + return [self allowSelectionAtIndexPath: indexPath]; } -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +- (BOOL) allowSelectionAtIndexPath: (NSIndexPath *) indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - - if (indexPath.section != APCActivitiesSectionYesterday) { - if (!self.taskSelectionDisabled) { - - id task = ((NSArray*)self.scheduledTasksArray[indexPath.section])[indexPath.row]; - - if ([task isKindOfClass:[APCGroupedScheduledTask class]]) { - - APCGroupedScheduledTask *groupedScheduledTask = (APCGroupedScheduledTask *)task; - - NSString *taskClass = groupedScheduledTask.taskClassName; - - Class class = [NSClassFromString(taskClass) class]; - - if (class != [NSNull class]) - { - NSInteger taskIndex = -1; - - for (NSUInteger i =0; i 0) { - [self.sectionsArray addObject:[self formattedTodaySection]]; - - NSArray *todaysTaskList = [self removeTaskWhenHardwareNotAvailble:scheduledTasksDict[@"today"]]; - - NSArray * groupedArray = [self generateGroupsForTask:todaysTaskList]; - - NSArray *sortedTasks = [self sortTasksInArray:groupedArray]; - - [self.scheduledTasksArray addObject:sortedTasks]; + APCActivitiesViewSection *section = nil; + + if (self.sections.count > sectionNumber) + { + section = self.sections [sectionNumber]; } - - if (((NSArray*)scheduledTasksDict[@"yesterday"]).count > 0) { - NSArray *yesterdaysTaskList = [self removeTasksFromTaskList:scheduledTasksDict[@"yesterday"]]; - - if (yesterdaysTaskList.count > 0) { - [self.sectionsArray addObject:@"Yesterday - Incomplete Tasks"]; - - NSArray * groupedArray = [self generateGroupsForTask:yesterdaysTaskList]; - - NSArray *sortedTasks = [self sortTasksInArray:groupedArray]; - - [self.scheduledTasksArray addObject:sortedTasks]; + + return section; } + +- (APCTaskGroup *) taskGroupForCellAtIndexPath: (NSIndexPath *) indexPath +{ + APCTaskGroup *taskGroup = nil; + NSUInteger indexOfTaskGroupWeWant = indexPath.row; + NSUInteger indexOfSectionWeWant = indexPath.section; + APCActivitiesViewSection *section = [self sectionForSectionNumber: indexOfSectionWeWant]; + + if (section.taskGroups.count > indexOfTaskGroupWeWant) + { + taskGroup = section.taskGroups [indexOfTaskGroupWeWant]; } + + return taskGroup; } -- (NSArray *)sortTasksInArray:(NSArray *)unsortedTasks +- (NSUInteger) countOfRequiredTasksToday { - //NOTE: The task identifiers (taskID) start with a sort field. If you want to change the sort order change the identifiers within the file(s) currently named APHTasksAndSchedules.json and APHTasksAndSchedules_NoM7.json. - NSSortDescriptor* descriptorForSorting = [[NSSortDescriptor alloc]initWithKey:@"task.taskID" ascending:YES]; - NSArray* sortDescriptors = @[descriptorForSorting]; - NSArray* sortedArray = [unsortedTasks sortedArrayUsingDescriptors:sortDescriptors]; - - return sortedArray; + NSUInteger result = 0; + APCActivitiesViewSection *section = self.todaySection; + + for (APCTaskGroup *group in section.taskGroups) + { + result += group.totalRequiredTasksForThisTimeRange; + } + + return result; } -- (NSString*) formattedTodaySection +- (NSUInteger) countOfCompletedTasksToday { - [self.dateFormatter setDateFormat:@"MMMM d"]; - - return [NSString stringWithFormat:@"Today, %@", [self.dateFormatter stringFromDate:[NSDate date]]]; + NSUInteger result = 0; + APCActivitiesViewSection *section = self.todaySection; + + for (APCTaskGroup *group in section.taskGroups) + { + result += group.requiredCompletedTasks.count; + } + + return result; } -- (NSArray*)generateGroupsForTask:(NSArray *)ungroupedScheduledTasks +- (NSUInteger) countOfRemainingTasksToday { - NSMutableArray *taskTypesArray = [[NSMutableArray alloc] init]; - - /* Get the list of task Ids to group */ - for (APCScheduledTask *scheduledTask in ungroupedScheduledTasks) { - NSString *taskId = scheduledTask.task.taskID; - - if (taskId) { - if (![taskTypesArray containsObject:taskId]) { - [taskTypesArray addObject:taskId]; - } - } + NSUInteger result = 0; + APCActivitiesViewSection *section = self.todaySection; + + for (APCTaskGroup *group in section.taskGroups) + { + result += group.requiredRemainingTasks.count; } - - NSMutableArray * returnArray = [NSMutableArray array]; - /* group tasks by task Id */ - for (NSString *taskId in taskTypesArray) { - - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"task.taskID == %@", taskId]; - - NSArray *filteredTasksArray = [ungroupedScheduledTasks filteredArrayUsingPredicate:predicate]; - - //if there is more than 1 task for the taskID, create an APCGroupedScheduledTask - if (filteredTasksArray.count > 1) { - APCScheduledTask *scheduledTask = filteredTasksArray.firstObject; - APCGroupedScheduledTask *groupedTask = [[APCGroupedScheduledTask alloc] init]; - - groupedTask.scheduledTasks = [NSMutableArray arrayWithArray:filteredTasksArray]; - groupedTask.taskTitle = scheduledTask.task.taskTitle; - groupedTask.taskClassName = scheduledTask.task.taskClassName; - groupedTask.taskCompletionTimeString = scheduledTask.task.taskCompletionTimeString; - - [returnArray addObject:groupedTask]; - } - else if(filteredTasksArray.count == 1) + + return result; +} + + + +// --------------------------------------------------------- +#pragma mark - Outbound messages +// --------------------------------------------------------- + +/* + This viewController does a query that other people need. + One aspect of the information they need is the number of + required and completed tasks for "today." Update them. + */ +- (void) reportNewTaskTotals +{ + NSUInteger requiredTasks = self.countOfRequiredTasksToday; + NSUInteger completedTasks = self.countOfCompletedTasksToday; + + [self.appDelegate.dataSubstrate updateCountOfTotalRequiredTasksForToday: requiredTasks + andTotalCompletedTasksToday: completedTasks]; +} + + + +// --------------------------------------------------------- +#pragma mark - Reloading data from the server +// --------------------------------------------------------- + +- (void) fetchNewestSurveysAndTasksFromServer: (id) __unused sender +{ + __weak APCActivitiesViewController * weakSelf = self; + + [self.appDelegate.dataMonitor refreshFromBridgeOnCompletion: ^(NSError *error) { + + if (error != nil) { - [returnArray addObject:filteredTasksArray.firstObject]; + UIAlertController * alert = [UIAlertController simpleAlertWithTitle: @"Error" + message: error.localizedDescription]; + + [weakSelf presentViewController: alert + animated: YES + completion: NULL]; } - } - return returnArray; + + [weakSelf reloadTasksFromCoreData]; + }]; } -/** @brief Removes the tasks (provide via the self.tasksBySection property) from the provided task list. - * - * @param taskList - Array of APCScheduledTask. This list will be filtered - * - * @return A filtered array of APCScheduledTask; otherwise the original array is returned. - * - * @note This needs to be refactored. - */ -- (NSArray *)removeTasksFromTaskList:(NSArray *)taskList + + +// --------------------------------------------------------- +#pragma mark - Repainting the UI +// --------------------------------------------------------- + +- (void) updateWholeUI { - NSArray *keepGoingTasks = self.tasksBySection[kActivitiesSectionKeepGoing]; - NSMutableArray *filteredList = [taskList mutableCopy]; + [self.refreshControl endRefreshing]; + [self performSelector:@selector(dismiss) withObject:self afterDelay:0.5]; + [self configureNoTasksView]; + [self updateBadge]; + [self.tableView reloadData]; - for (APCScheduledTask *scheduledTask in taskList) { - if (keepGoingTasks) { - if ([keepGoingTasks containsObject:scheduledTask.task.taskID]) { - [filteredList removeObject:scheduledTask]; - [self.keepGoingTasks addObject:scheduledTask]; - } - } +} + +- (void) dismiss +{ + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void) updateBadge +{ + NSString *badgeValue = nil; + NSUInteger remainingTasks = self.countOfRemainingTasksToday; + + if (remainingTasks > 0) + { + badgeValue = @(remainingTasks).stringValue; } - - return filteredList; + + self.myTabBarItem.badgeValue = badgeValue; } -/** @brief When the hardware that is required by task that is not present on the device - * the task will be removed from the provided task list. - * - * @param taskList - Array of APCScheduledTask. This list will be filtered - * - * @return A filtered array of APCScheduledTask; otherwise the original array is returned. - * - * @note This needs to be refactored. - */ -- (NSArray *)removeTaskWhenHardwareNotAvailble:(NSArray *)taskList + + +// --------------------------------------------------------- +#pragma mark - The "no tasks at this time" view. +// --------------------------------------------------------- + +- (void) configureNoTasksView { - NSMutableArray *filteredList = [taskList mutableCopy]; - - if ([APCDeviceHardware isMotionActivityAvailable] == NO) { - NSArray *hardwareDependentTasks = self.tasksBySection[kActivitiesRequiresMotionSensor]; - - for (APCScheduledTask *scheduledTask in taskList) { - if (hardwareDependentTasks) { - if ([hardwareDependentTasks containsObject:scheduledTask.task.taskID]) { - [filteredList removeObject:scheduledTask]; - } - } + // Only add the noTasksView if there are no activities to show. + if (self.sections.count == 0 && ! self.isFetchingFromCoreDataRightNow) + { + [self.view bringSubviewToFront:self.noTasksLabel]; + [self.noTasksLabel setHidden:NO]; + } + else + { + [self.noTasksLabel setHidden:YES]; + } +} + + + +// --------------------------------------------------------- +#pragma mark - Fetching current tasks from CoreData (NOT from server) +// --------------------------------------------------------- + +- (void) reloadTasksFromCoreData +{ + self.isFetchingFromCoreDataRightNow = YES; + APCSpinnerViewController *spinnerController = [[APCSpinnerViewController alloc] init]; + [self presentViewController:spinnerController animated:YES completion:nil]; + + NSPredicate *filterForOptionalTasks = [NSPredicate predicateWithFormat: @"%K == %@", + NSStringFromSelector(@selector(taskIsOptional)), + @(YES)]; + + NSPredicate *filterForRequiredTasks = [NSPredicate predicateWithFormat: @"%K == nil || %K == %@", + NSStringFromSelector(@selector(taskIsOptional)), + NSStringFromSelector(@selector(taskIsOptional)), + @(NO)]; + + NSDate *today = self.dateWeAreUsingForToday; + NSDate *yesterday = today.dayBefore; + NSDate *midnightThisMorning = today.startOfDay; + BOOL sortNewestToOldest = YES; + + __weak typeof(self) weakSelf = self; + + [[APCScheduler defaultScheduler] fetchTaskGroupsFromDate: yesterday + toDate: today + forTasksMatchingFilter: filterForRequiredTasks + usingQueue: [NSOperationQueue mainQueue] + toReportResults: ^(NSDictionary *taskGroups, NSError * __unused queryError) + { + + APCActivitiesViewSection *todaySection = nil; + NSUInteger indexOfTodaySection = NSNotFound; + + NSMutableArray *sections = [NSMutableArray new]; + + NSArray *sortedDates = [taskGroups.allKeys sortedArrayUsingComparator: ^NSComparisonResult (NSDate *date1, NSDate *date2) { + + NSComparisonResult result = (sortNewestToOldest ? + [date2 compare: date1] : + [date1 compare: date2] ); + return result; + }]; + + for (NSUInteger dateIndex = 0; dateIndex < sortedDates.count; dateIndex ++) + { + NSDate *date = sortedDates [dateIndex]; + NSArray *taskGroupsForThisDate = taskGroups [date]; + APCActivitiesViewSection *section = [[APCActivitiesViewSection alloc] initWithDate: date + tasks: taskGroupsForThisDate + usingDateForSystemDate: today]; + + if (section.isTodaySection) + { + todaySection = section; + } + else if (section.isYesterdaySection) + { + [section removeFullyCompletedTasks]; + } + + if (section.taskGroups.count) + { + [sections addObject: section]; + } + + if ([date isEqualToDate: midnightThisMorning]) + { + indexOfTodaySection = dateIndex; + } + } + + /* + Now that we've gotten all tasks for all the dates + we care about, get the "optional" tasks for + "today" (or the date we formally believe is + "today"), and insert them between "today" and + "yesterday" (if available, or at the bottom of + the list of sections, if not). + */ + [[APCScheduler defaultScheduler] fetchTaskGroupsFromDate: today + toDate: today + forTasksMatchingFilter: filterForOptionalTasks + usingQueue: [NSOperationQueue mainQueue] + toReportResults: ^(NSDictionary *taskGroups, NSError * __unused queryError) + { + /* + There should be exactly one date in the list + of groups, and thus one list of values. + */ + NSArray *optionalTaskGroups = taskGroups.allValues.firstObject; + + if (optionalTaskGroups.count) + { + APCActivitiesViewSection *section = [[APCActivitiesViewSection alloc] initAsKeepGoingSectionWithTasks: optionalTaskGroups]; + + if (indexOfTodaySection == NSNotFound) + { + [sections addObject: section]; + } + else + { + [sections insertObject: section atIndex: indexOfTodaySection + 1]; + } + } + + + // + // Regardless of whether we got any optional + // groups, show everything, now. + // + weakSelf.sections = sections; + + + // + // Regenerate reminders for all these things. + // + NSArray *taskGroupsForToday = todaySection.taskGroups; + [weakSelf.appDelegate.tasksReminder handleActivitiesUpdateWithTodaysTaskGroups: taskGroupsForToday]; + + + // + // Update central data points, so other screens + // can draw their graphics and whatnot. + // + [weakSelf reportNewTaskTotals]; + + + // + // Per the above: we always fetch optional tasks. + // Now that the second fetch is complete: + // update the UI. + // + weakSelf.isFetchingFromCoreDataRightNow = NO; + [weakSelf updateWholeUI]; + + }]; // second fetch: optional tasks + }]; // first fetch: required tasks, for a range of dates +} // method reloadFromCoreData + + + +// --------------------------------------------------------- +#pragma mark - Utilities +// --------------------------------------------------------- + +- (APCAppDelegate *) appDelegate +{ + return [APCAppDelegate sharedAppDelegate]; +} + +- (NSDate *) dateWeAreUsingForToday +{ + return [NSDate date]; +} + +- (UITabBarItem *) myTabBarItem +{ + UITabBarItem *activitiesTab = nil; + UITabBar *tabBar = self.appDelegate.tabster.tabBar; + + for (UITabBarItem *item in tabBar.items) + { + if (item.tag == (NSInteger) kAPCActivitiesTabIndex) + { + activitiesTab = item; + break; } } - - return filteredList; + + return activitiesTab; } @end diff --git a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewSection.h b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewSection.h new file mode 100644 index 00000000..e104905d --- /dev/null +++ b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewSection.h @@ -0,0 +1,66 @@ +// +// APCActivitiesViewSection.h +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import + +/** + Data and metadata describing one literal and conceptual + section of the tableView on the ActivitiesViewController. + */ +@interface APCActivitiesViewSection : NSObject + +@property (nonatomic, strong) NSDate *date; +@property (nonatomic, assign) BOOL isKeepGoingSection; +@property (nonatomic, strong) NSDate *presumedSystemDate; +@property (nonatomic, strong) NSArray *taskGroups; +@property (readonly) BOOL isTodaySection; +@property (readonly) BOOL isYesterdaySection; +@property (readonly) BOOL isEmpty; +@property (readonly) NSString *title; +@property (readonly) NSString *subtitle; + +- (instancetype) initWithDate: (NSDate *) date + tasks: (NSArray *) arrayOfTaskGroupObjects + usingDateForSystemDate: (NSDate *) potentiallyFakeSystemDate; + +- (instancetype) initAsKeepGoingSectionWithTasks: (NSArray *) arrayOfTaskGroupObjects; + +/** + Used after fetching the tasks for a specific day -- + the "yesterday," as perceived by the user -- and + converting resulting section to a "here's the stuff + you didn't finish" section. + */ +- (void) removeFullyCompletedTasks; + +@end diff --git a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewSection.m b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewSection.m new file mode 100644 index 00000000..0addc098 --- /dev/null +++ b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewSection.m @@ -0,0 +1,210 @@ +// +// APCActivitiesViewSection.m +// APCAppCore +// +// Copyright (c) 2015, Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder(s) nor the names of any contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. No license is granted to the trademarks of +// the copyright holders even if such marks are included in this software. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +#import "APCActivitiesViewSection.h" +#import "NSDate+Helper.h" +#import "APCTaskGroup.h" + +static NSDateFormatter *headerViewDateFormatterDebugging = nil; +static NSDateFormatter *headerViewDateFormatterToday = nil; + +static NSString * const kAPCSectionTitleToday = @"Today"; +static NSString * const kAPCSectionTitleYesterday = @"Yesterday"; +static NSString * const kAPCSectionTitleTomorrow = @"Tomorrow"; +static NSString * const kAPCSectionTitleKeepGoing = @"Keep Going!"; +static NSString * const kAPCSectionSubtitleKeepGoing = @"Try one of these extra activities\nto enhance your experience in your study."; +static NSString * const kAPCSectionSubtitleToday = @"To start an activity, select from the list below."; +static NSString * const kAPCSectionSubtitleYesterday = @"Below are your incomplete tasks from yesterday. These are for reference only."; +static NSString * const kAPCSectionHeaderDateFormatDebugging = @"eeee, MMMM d, yyyy"; +static NSString * const kAPCSectionHeaderDateFormatToday = @"eeee, MMMM d"; + + +@interface APCActivitiesViewSection () + +- (instancetype) init NS_DESIGNATED_INITIALIZER; + +@property (readonly) NSDate *yesterday; +@property (readonly) NSDate *today; +@property (readonly) NSDate *tomorrow; +@property (readonly) NSDate *myDateRoundedToMidnight; +@end + + +@implementation APCActivitiesViewSection + ++ (void) initialize +{ + if (headerViewDateFormatterDebugging == nil) + { + headerViewDateFormatterDebugging = [NSDateFormatter new]; + headerViewDateFormatterDebugging.timeZone = [NSTimeZone localTimeZone]; + headerViewDateFormatterDebugging.dateFormat = kAPCSectionHeaderDateFormatDebugging; + + headerViewDateFormatterToday = [NSDateFormatter new]; + headerViewDateFormatterToday.timeZone = [NSTimeZone localTimeZone]; + headerViewDateFormatterToday.dateFormat = kAPCSectionHeaderDateFormatToday; + } +} + +- (instancetype) init +{ + self = [super init]; + + if (self) + { + _date = nil; + _isKeepGoingSection = NO; + _presumedSystemDate = nil; + _taskGroups = nil; + } + + return self; +} + +- (instancetype) initWithDate: (NSDate *) date + tasks: (NSArray *) arrayOfTaskGroupObjects + usingDateForSystemDate: (NSDate *) potentiallyFakeSystemDate +{ + self = [self init]; + + if (self) + { + _date = date; + _taskGroups = arrayOfTaskGroupObjects; + _presumedSystemDate = potentiallyFakeSystemDate; + } + + return self; +} + +- (instancetype) initAsKeepGoingSectionWithTasks: (NSArray *) arrayOfTaskGroupObjects +{ + self = [self init]; + + if (self) + { + _isKeepGoingSection = YES; + _taskGroups = arrayOfTaskGroupObjects; + } + + return self; +} + +- (NSDate *) today +{ + return self.presumedSystemDate.startOfDay; +} + +- (NSDate *) tomorrow +{ + return self.presumedSystemDate.dayAfter.startOfDay; +} + +- (NSDate *) yesterday +{ + return self.presumedSystemDate.dayBefore.startOfDay; +} + +- (NSDate *) myDateRoundedToMidnight +{ + return self.date.startOfDay; +} + +- (BOOL) isTodaySection +{ + BOOL isToday = [self.myDateRoundedToMidnight isEqualToDate: self.today]; + return isToday; +} + +- (BOOL) isYesterdaySection +{ + BOOL isYesterday = [self.myDateRoundedToMidnight isEqualToDate: self.yesterday]; + return isYesterday; +} + +- (BOOL) isEmpty +{ + return self.taskGroups.count == 0; +} + +- (NSString *) title +{ + NSString *todayTitle = [NSString stringWithFormat: @"%@, %@", kAPCSectionTitleToday, [headerViewDateFormatterToday stringFromDate: self.myDateRoundedToMidnight]]; + + NSString *result = (self.isKeepGoingSection ? kAPCSectionTitleKeepGoing : + [self.myDateRoundedToMidnight isEqualToDate: self.today] ? todayTitle : + [self.myDateRoundedToMidnight isEqualToDate: self.yesterday] ? kAPCSectionTitleYesterday : + [self.myDateRoundedToMidnight isEqualToDate: self.tomorrow] ? kAPCSectionTitleTomorrow : + [headerViewDateFormatterDebugging stringFromDate: self.myDateRoundedToMidnight] + ); + + return result; +} + +- (NSString *) subtitle +{ + NSString *result = (self.isKeepGoingSection ? kAPCSectionSubtitleKeepGoing : + [self.myDateRoundedToMidnight isEqualToDate: self.today] ? kAPCSectionSubtitleToday : + [self.myDateRoundedToMidnight isEqualToDate: self.yesterday] ? kAPCSectionSubtitleYesterday : + nil + ); + + return result; +} + +- (void) removeFullyCompletedTasks +{ + /* + I gotta say, this is pretty cool: using a "predicate" + to run a method on every object in the array, based + on which we can remove elements from the array, using + a syntax that looks like SQL, kinda, and trusting + Objective-C to do this efficiently. Purrrrrrty! + + The method we're running on every object in the array + is -isFullyCompleted. The objects in the array are + APCTaskGroups. Objective-C converts the @(YES) in the + predicate into the Boolean that's actually returned + by -isFullyCompleted. + */ + NSPredicate *filterToRemoveCompletedTasks = [NSPredicate predicateWithFormat: @"%K != %@", + NSStringFromSelector (@selector (isFullyCompleted)), + @(YES)]; + + NSArray *newListOfTaskGroups = [self.taskGroups filteredArrayUsingPredicate: filterToRemoveCompletedTasks]; + + self.taskGroups = newListOfTaskGroups; +} + + +@end diff --git a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.h b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.h deleted file mode 100644 index 2bc605b5..00000000 --- a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// APCActivitiesViewWithNoTask.h -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#import - -@interface APCActivitiesViewWithNoTask : UIView -@property (weak, nonatomic) IBOutlet UIImageView *imgView; - -@property (weak, nonatomic) IBOutlet UILabel *todaysDate; -@end diff --git a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.m b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.m deleted file mode 100644 index f9ade145..00000000 --- a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// APCActivitiesViewWithNoTask.m -// APCAppCore -// -// Copyright (c) 2015, Apple Inc. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder(s) nor the names of any contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. No license is granted to the trademarks of -// the copyright holders even if such marks are included in this software. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// - -#import "APCActivitiesViewWithNoTask.h" - -@implementation APCActivitiesViewWithNoTask - -@end diff --git a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.xib b/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.xib deleted file mode 100644 index bae10012..00000000 --- a/APCAppCore/APCAppCore/UI/TabBarControllers/Activities/APCActivitiesViewWithNoTask.xib +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/APCAppCore/APCAppCore/UI/TableViewCells/ActivitiesCells/APCActivitiesTintedTableViewCell.h b/APCAppCore/APCAppCore/UI/TableViewCells/ActivitiesCells/APCActivitiesTintedTableViewCell.h index c7d0d76e..29cb3a3c 100644 --- a/APCAppCore/APCAppCore/UI/TableViewCells/ActivitiesCells/APCActivitiesTintedTableViewCell.h +++ b/APCAppCore/APCAppCore/UI/TableViewCells/ActivitiesCells/APCActivitiesTintedTableViewCell.h @@ -34,29 +34,30 @@ #import #import "APCActivitiesTableViewCell.h" #import "APCBadgeLabel.h" +#import "APCConstants.h" -FOUNDATION_EXPORT NSString * const kAPCActivitiesTintedTableViewCellIdentifier; - -typedef NS_ENUM(NSUInteger, APCTintColorType) { - kAPCTintColorTypeGreen, - kAPCTintColorTypeRed, - kAPCTintColorTypeYellow, - kAPCTintColorTypePurple, - kAPCTintColorTypeBlue -}; +@class APCTaskGroup; -@interface APCActivitiesTintedTableViewCell : APCActivitiesTableViewCell -@property (weak, nonatomic) IBOutlet UILabel *subTitleLabel; -@property (weak, nonatomic) IBOutlet UIView *tintView; -@property (weak, nonatomic) IBOutlet APCBadgeLabel *countLabel; -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *titleLabelCenterYConstraint; +FOUNDATION_EXPORT NSString * const kAPCActivitiesTintedTableViewCellIdentifier; -@property (strong, nonatomic) UIColor *tintColor; -@property (nonatomic) BOOL hidesSubTitle; +/** + Displays a single row in the main TableView on the + ActivitiesViewController. Each such row describes the + state of a certain Task the user can perform on a given + day. + */ +@interface APCActivitiesTintedTableViewCell : APCActivitiesTableViewCell -- (void)setupAppearance; -- (void)setupIncompleteAppearance; +/** + Configure this cell to display its TaskGroup: a single + conceptual activity the user can perform, with various + pieces of metadata describing the present, past, and + future state of that activity. + */ +- (void) configureWithTaskGroup: (APCTaskGroup *) taskGroup + isTodayCell: (BOOL) cellRepresentsToday + showDebuggingInfo: (BOOL) shouldShowDebuggingInfo; @end diff --git a/APCAppCore/APCAppCore/UI/TableViewCells/ActivitiesCells/APCActivitiesTintedTableViewCell.m b/APCAppCore/APCAppCore/UI/TableViewCells/ActivitiesCells/APCActivitiesTintedTableViewCell.m index 5e9c3b49..85f1dd11 100644 --- a/APCAppCore/APCAppCore/UI/TableViewCells/ActivitiesCells/APCActivitiesTintedTableViewCell.m +++ b/APCAppCore/APCAppCore/UI/TableViewCells/ActivitiesCells/APCActivitiesTintedTableViewCell.m @@ -34,70 +34,150 @@ #import "APCActivitiesTintedTableViewCell.h" #import "UIColor+APCAppearance.h" #import "UIFont+APCAppearance.h" +#import "APCUtilities.h" +#import "APCTaskGroup.h" +#import "APCLog.h" +#import "APCSchedule+AddOn.h" +#import "APCTask+AddOn.h" + NSString * const kAPCActivitiesTintedTableViewCellIdentifier = @"APCActivitiesTintedTableViewCell"; static CGFloat const kTitleLabelCenterYConstant = 10.5f; -@implementation APCActivitiesTintedTableViewCell +@interface APCActivitiesTintedTableViewCell () +@property (nonatomic, weak) IBOutlet UILabel *subTitleLabel; +@property (nonatomic, weak) IBOutlet UIView *tintView; +@property (nonatomic, weak) IBOutlet APCBadgeLabel *countLabel; +@property (nonatomic, weak) IBOutlet NSLayoutConstraint *titleLabelCenterYConstraint; +@property (nonatomic, strong) APCTaskGroup *taskGroup; +@end -- (void)awakeFromNib { - - [super awakeFromNib]; - - [self setupAppearance]; - - self.countLabel.text = @""; - - self.hidesSubTitle = NO; -} -- (void)setupAppearance -{ - self.titleLabel.textColor = [UIColor appSecondaryColor1]; - self.titleLabel.font = [UIFont appRegularFontWithSize:16.f]; - - self.subTitleLabel.textColor = [UIColor appSecondaryColor3]; - self.subTitleLabel.font = [UIFont appRegularFontWithSize:14.f]; -} +@implementation APCActivitiesTintedTableViewCell -- (void)setHidesSubTitle:(BOOL)hidesSubTitle +- (void)configureWithTaskGroup:(APCTaskGroup *)taskGroup + isTodayCell:(BOOL)cellRepresentsToday + showDebuggingInfo:(BOOL)shouldShowDebuggingInfo { - _hidesSubTitle = hidesSubTitle; - - self.subTitleLabel.hidden = hidesSubTitle; - - if (hidesSubTitle) { - self.titleLabelCenterYConstraint.constant = 0; - } else { - self.titleLabelCenterYConstraint.constant = kTitleLabelCenterYConstant; + // + // General configuration data. + // + + NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet]; + NSString *subtitle = [taskGroup.task.taskCompletionTimeString stringByTrimmingCharactersInSet: whitespace]; + NSUInteger countOfRemainingRequiredTasks = taskGroup.requiredRemainingTasks.count; + NSUInteger countOfCompletedTasks = taskGroup.requiredCompletedTasks.count + taskGroup.gratuitousCompletedTasks.count; + BOOL isOptionalTask = taskGroup.task.taskIsOptional.boolValue; + + + // + // Tint color. + // + + self.tintColor = (cellRepresentsToday ? + [UIColor colorForTaskId: taskGroup.task.taskID] : + [UIColor appTertiaryGrayColor]); + + if (self.tintColor == nil) + { + self.tintColor = [UIColor lightGrayColor]; } - [self setNeedsDisplay]; -} -- (void)setTintColor:(UIColor *)tintColor -{ - if (!tintColor) { - // default to the lightgray system color. - tintColor = [UIColor lightGrayColor]; + + // + // General settings. + // + + self.taskGroup = taskGroup; + self.titleLabel.text = taskGroup.task.taskTitle; + self.titleLabel.textColor = (cellRepresentsToday || isOptionalTask) ? [UIColor appSecondaryColor1] : [UIColor appSecondaryColor3]; + self.subTitleLabel.textColor = [UIColor appSecondaryColor3]; + self.titleLabel.font = [UIFont appRegularFontWithSize: kAPCActivitiesNormalFontSize]; + self.subTitleLabel.font = [UIFont appRegularFontWithSize: kAPCActivitiesSmallFontSize]; + self.tintView.backgroundColor = self.tintColor; + self.countLabel.tintColor = cellRepresentsToday ? [UIColor appPrimaryColor] : [UIColor appSecondaryColor3]; + + + // + // The "to do" count in this cell (like, "4 tasks of this type to do today"). + // Note that the tint color is set above. + // + + if (taskGroup.totalRequiredTasksForThisTimeRange > 1 && + ! taskGroup.isFullyCompleted) + { + self.countLabel.text = @(countOfRemainingRequiredTasks).stringValue; + self.countLabel.hidden = NO; + } + else + { + self.countLabel.text = nil; + self.countLabel.hidden = YES; } - - _tintColor = tintColor; - - self.tintView.backgroundColor = tintColor; -} -- (void)setupIncompleteAppearance -{ - self.titleLabel.textColor = [UIColor appSecondaryColor3]; - - self.subTitleLabel.textColor = [UIColor appSecondaryColor3]; - - self.countLabel.hidden = YES; - - self.tintView.backgroundColor = [UIColor appTertiaryGrayColor]; - + + // + // The checkmark. + // + + self.confirmationView.completed = ! isOptionalTask && taskGroup.isFullyCompleted; + self.confirmationView.hidden = isOptionalTask; + + + + // + // The subtitle. + // If needed, hide the subtitle and vertically center the title. + // + + if (subtitle.length == 0) + { + self.subTitleLabel.text = nil; + self.subTitleLabel.hidden = YES; + self.titleLabelCenterYConstraint.constant = 0; + } + else + { + self.subTitleLabel.text = subtitle; + self.subTitleLabel.hidden = NO; + self.titleLabelCenterYConstraint.constant = kTitleLabelCenterYConstant; + } + + + + // + // Debugging info, if requested. + // + + if ([APCUtilities isInDebuggingMode] && shouldShowDebuggingInfo) + { + BOOL isServerTask = NO; + + if (taskGroup.task.schedules.count) + { + APCSchedule *anySchedule = taskGroup.task.schedules.anyObject; + isServerTask = ((APCScheduleSource) anySchedule.scheduleSource.integerValue) == APCScheduleSourceServer; + } + + if (isServerTask) + { + self.titleLabel.text = [NSString stringWithFormat: @"%@ (server)", self.titleLabel.text]; + self.titleLabel.textColor = [UIColor blueColor]; + } + + self.countLabel.hidden = NO; + self.countLabel.text = [NSString stringWithFormat: @"%@/%@", @(countOfCompletedTasks), @(taskGroup.totalRequiredTasksForThisTimeRange)]; + } + + + // + // Draw the cell border -- the colored strip that shows + // how this cell maps to the Dashboard. + // + + [self setNeedsDisplay]; } - (void)drawRect:(CGRect)rect diff --git a/APCAppCore/APCAppCore/UI/TasksAndSteps/APCBaseTaskViewController.h b/APCAppCore/APCAppCore/UI/TasksAndSteps/APCBaseTaskViewController.h index 2967fb07..e83dec81 100644 --- a/APCAppCore/APCAppCore/UI/TasksAndSteps/APCBaseTaskViewController.h +++ b/APCAppCore/APCAppCore/UI/TasksAndSteps/APCBaseTaskViewController.h @@ -34,12 +34,33 @@ #import #import #import "APCScheduledTask.h" +#import "APCTaskGroup.h" + +@class APCAppDelegate; @interface APCBaseTaskViewController : ORKTaskViewController + @property (nonatomic, strong) APCScheduledTask *scheduledTask; @property (nonatomic, copy) void (^createResultSummaryBlock) (NSManagedObjectContext* context); +@property (readonly) APCAppDelegate *appDelegate; +/** + Older, default version of an initialization method. Initializes + your subclass of this ViewController with a ScheduledTask. Compare + with +configureTaskViewController:. + */ + (instancetype)customTaskViewController: (APCScheduledTask*) scheduledTask; + +/** + Initializes an instance of this class with the task + represented by the taskGroup. By default, creates + a new ScheduledTask from the TaskGroup, and initializes + your subclass with it. Feel free to override this method + if you want to interact directly with the higher-level + data in the TaskGroup itself. + */ ++ (instancetype)configureTaskViewController:(APCTaskGroup *)taskGroup; + - (NSString *) createResultSummary; - (void) storeInCoreDataWithFileName: (NSString *) fileName resultSummary: (NSString *) resultSummary diff --git a/APCAppCore/APCAppCore/UI/TasksAndSteps/APCBaseTaskViewController.m b/APCAppCore/APCAppCore/UI/TasksAndSteps/APCBaseTaskViewController.m index 5c644990..bd0e3165 100644 --- a/APCAppCore/APCAppCore/UI/TasksAndSteps/APCBaseTaskViewController.m +++ b/APCAppCore/APCAppCore/UI/TasksAndSteps/APCBaseTaskViewController.m @@ -35,6 +35,7 @@ #import "APCAppDelegate.h" #import "APCAppCore.h" #import "APCDataVerificationClient.h" +#import "APCDataVerificationServerAccessControl.h" @interface APCBaseTaskViewController () @property (strong, nonatomic) ORKStepViewController * stepVC; @@ -42,6 +43,60 @@ @interface APCBaseTaskViewController () @property (nonatomic, strong) NSData * localRestorationData; @end + + + +/** + Converts the ORKTaskViewControllerFinishReason enum + to a string. + + Declared in this file because the enum itself is + declared in my ORK superclass, ORKTaskViewController. + + Contains hard-coded strings because I think is their proper + place -- the place where there's a 1:1 mapping between + the enum and the string equivalent. + + Problems: Highly dependent on the definition of original + enum itself. If the enum changes, this function instantly + starts delivering misleading strings. Granted, I'm only + currently using them internally, but, still. That's why + I'm only declaring this function inside this file, for now. + + Suggested Future Changes: push this function into + ResearchKit, making it a part of the same class or file + where the enum itself is declared. + + This is a function, not a method, so that it can follow + Apple's convention for functions which convert various + objects to strings: NSStringFromClassName(), etc. + + @return A human-readable string for the FinishReason. + If the finishReason can't be identified -- if you pass + a random integer, for example, or if the source enum + definition is changed -- returns "Unknown FinishReason." + + @see ORKTaskViewControllerFinishReason + */ +NSString * NSStringFromORKTaskViewControllerFinishReason (ORKTaskViewControllerFinishReason reason) +{ + NSString *result = nil; + + switch (reason) + { + case ORKTaskViewControllerFinishReasonSaved: result = @"Saved"; break; + case ORKTaskViewControllerFinishReasonCompleted: result = @"Completed"; break; + case ORKTaskViewControllerFinishReasonDiscarded: result = @"Discarded"; break; + case ORKTaskViewControllerFinishReasonFailed: result = @"Failed"; break; + default: result = @"Unknown FinishReason"; break; + } + + return result; +} + + + + @implementation APCBaseTaskViewController #pragma mark - Instance Initialisation @@ -58,6 +113,32 @@ + (instancetype)customTaskViewController: (APCScheduledTask*) scheduledTask return controller; } ++ (instancetype)configureTaskViewController:(APCTaskGroup *)taskGroup +{ + APCPotentialTask *potentialTask = taskGroup.requiredRemainingTasks.firstObject; + APCBaseTaskViewController *viewController = nil; + + /* + It's a fundamental business requirement that our users + can do *more* than the required number of tasks. This + object lets us do that, if they've gone through all + the actually- required tasks for this date. + */ + if (potentialTask == nil) + { + potentialTask = taskGroup.samplePotentialTask; + } + + if (potentialTask != nil) { + APCScheduledTask *scheduledTask = [[APCScheduler defaultScheduler] createScheduledTaskFromPotentialTask:potentialTask]; + + viewController = [self customTaskViewController:scheduledTask]; + } + + + return viewController; +} + + (id)createTask: (APCScheduledTask*) __unused scheduledTask { //To be overridden by child classes @@ -84,85 +165,112 @@ - (void)viewWillAppear:(BOOL)animated @"task_view_controller":NSStringFromClass([self class]) })); } + +- (APCAppDelegate *) appDelegate +{ + return [APCAppDelegate sharedAppDelegate]; +} + + /*********************************************************************************/ #pragma mark - ORKOrderedTaskDelegate /*********************************************************************************/ -- (void)taskViewController:(ORKTaskViewController *)taskViewController didFinishWithReason:(ORKTaskViewControllerFinishReason)reason error:(nullable NSError *)error + +- (void) taskViewController: (ORKTaskViewController *) taskViewController + didFinishWithReason: (ORKTaskViewControllerFinishReason) reason + error: (nullable NSError *) error { - - NSString *currentStepIdentifier = @"Step identifier not available"; - - if ( self.currentStepViewController.step.identifier != nil) + NSString *currentStepIdentifier = self.currentStepViewController.step.identifier; + NSString *taskTitle = self.scheduledTask.task.taskTitle; + BOOL shouldLogError = YES; + + if (currentStepIdentifier == nil) { - currentStepIdentifier = self.currentStepViewController.step.identifier; + currentStepIdentifier = @"Step identifier not available"; } - - if (reason == ORKTaskViewControllerFinishReasonCompleted) + + if (taskTitle == nil) { - [self processTaskResult]; - - [self.scheduledTask completeScheduledTask]; - APCAppDelegate* appDelegate = (APCAppDelegate*)[UIApplication sharedApplication].delegate; - [appDelegate.scheduler updateScheduledTasksIfNotUpdating:NO]; - [taskViewController dismissViewControllerAnimated:YES completion:nil]; - - APCLogEventWithData(kTaskEvent, (@{ - @"task_status":@"ResultCompleted", - @"task_title": self.scheduledTask.task.taskTitle, - @"task_view_controller":NSStringFromClass([self class]), - @"task_step" : currentStepIdentifier - })); + taskTitle = @"Task Title not available"; } - else if (reason == ORKTaskViewControllerFinishReasonFailed) + + /* + Most results have common behaviors, below this + switch() statement: log the fact that we're here, log + an error if needed, and close the window. For those + with specific behaviors, add them to this switch(). + */ + switch (reason) { - if (error.code == 4 && error.domain == NSCocoaErrorDomain) - { - - } - else if (error.code == 260 && error.domain == NSCocoaErrorDomain) - { - // Ignore this condition as it's due to no collected data. - } - else - { - [taskViewController dismissViewControllerAnimated:YES completion:nil]; - APCLogEventWithData(kTaskEvent, (@{ - @"task_status":@"ResultFailed", - @"task_title": self.scheduledTask.task.taskTitle, - @"task_view_controller":NSStringFromClass([self class]), - @"task_step" : currentStepIdentifier - })); + case ORKTaskViewControllerFinishReasonCompleted: + [self processTaskResult]; + [self.scheduledTask completeScheduledTask]; + [[NSNotificationCenter defaultCenter]postNotificationName:APCActivityCompletionNotification object:nil]; + break; + + case ORKTaskViewControllerFinishReasonFailed: + + if ([error.domain isEqualToString: NSCocoaErrorDomain]) + { + if (error.code == 4) + { + shouldLogError = NO; + } + else if (error.code == 260) + { + // Ignore this condition as it's due to no collected data. + shouldLogError = NO; + } + else + { + // Log it and bug out, as usual. + } + } + break; - } - - APCLogError2(error); - } - else if (reason == ORKTaskViewControllerFinishReasonDiscarded) - { - [taskViewController dismissViewControllerAnimated:YES completion:nil]; - APCLogEventWithData(kTaskEvent, (@{ - @"task_status":@"ResultDiscarded", - @"task_title": self.scheduledTask.task.taskTitle, - @"task_view_controller":NSStringFromClass([self class]), - @"task_step" : currentStepIdentifier - })); - } - else if (reason == ORKTaskViewControllerFinishReasonSaved) - { - [taskViewController dismissViewControllerAnimated:YES completion:nil]; - APCLogEventWithData(kTaskEvent, (@{ - @"task_status":@"ResultSaved", - @"task_title": self.scheduledTask.task.taskTitle, - @"task_view_controller":NSStringFromClass([self class]), - @"task_step" : currentStepIdentifier - })); + case ORKTaskViewControllerFinishReasonDiscarded: + /* + The user cancelled the operation. Delete the ScheduledTask. + + In our new world, the theory is: ScheduledTasks are only created + in the database when the user actually chooses to save them. + Unfortunately, a lot of existing code depends on ScheduledTasks + already having been created before a view appears. So we'll run + with that: save the task while the views are using it, but then + destroy it if the user cancels. + + This should be asynchronous. For now, it's not, so I can + figure out what threads this class (the one you're reading + now) is reliably using. Then I'll fix it to be wholly- + asynchronous. + */ + [self.appDelegate.scheduler deleteScheduledTask: self.scheduledTask]; + break; + + case ORKTaskViewControllerFinishReasonSaved: + // Nothing special to do. + break; + + default: + // We don't recognize this reason. We'll log an event saying so, + // but we don't have anything special to do aside from that. + break; } - else + + APCLogEventWithData (kTaskEvent, (@{ + @"task_status" : NSStringFromORKTaskViewControllerFinishReason (reason), + @"task_title" : taskTitle, + @"task_view_controller" : NSStringFromClass (self.class), + @"task_step" : currentStepIdentifier + })); + + if (shouldLogError) { - APCLogError2(error); - APCLogEvent(@"The ORKTaskViewControllerFinishReason for this task is not set"); + APCLogError2 (error); } + + [taskViewController dismissViewControllerAnimated:YES completion:nil]; } @@ -196,7 +304,7 @@ - (void) processTaskResult /* See comment at bottom of this method. */ - #ifdef USE_DATA_VERIFICATION_CLIENT + #ifdef USE_DATA_VERIFICATION_SERVER archiver.preserveUnencryptedFile = YES; @@ -215,7 +323,7 @@ - (void) processTaskResult the code isn't called, if it's in RAM at all, it can be exploited. */ - #ifdef USE_DATA_VERIFICATION_CLIENT + #ifdef USE_DATA_VERIFICATION_SERVER [APCDataVerificationClient uploadDataFromFileAtPath: archiver.unencryptedFilePath]; @@ -224,8 +332,12 @@ - (void) processTaskResult - (void) storeInCoreDataWithFileName: (NSString *) fileName resultSummary: (NSString *) resultSummary { - NSManagedObjectContext * context = ((APCAppDelegate *)[UIApplication sharedApplication].delegate).dataSubstrate.mainContext; - + // This is a background context, not the main context. + // I'm migrating toward doing everything in the background. + // Granted, I didn't think I was going to "go there" this + // fast. Still experimenting. + NSManagedObjectContext *context = [[APCScheduler defaultScheduler] managedObjectContext]; + [self storeInCoreDataWithFileName: fileName resultSummary: resultSummary usingContext: context]; } @@ -234,19 +346,27 @@ - (void) storeInCoreDataWithFileName: (NSString *) fileName usingContext: (NSManagedObjectContext *) context { NSManagedObjectID * objectID = [APCResult storeTaskResult:self.result inContext:context]; + APCScheduledTask *localContextScheduledTask = (APCScheduledTask *)[context objectWithID:self.scheduledTask.objectID]; + APCResult * result = (APCResult*)[context objectWithID:objectID]; result.archiveFilename = fileName; result.resultSummary = resultSummary; - result.scheduledTask = self.scheduledTask; - NSError * error; - [result saveToPersistentStore:&error]; - APCLogError2 (error); - APCAppDelegate * appDelegate = (APCAppDelegate*)[UIApplication sharedApplication].delegate; - [appDelegate.dataMonitor batchUploadDataToBridgeOnCompletion:^(NSError *error) { + result.scheduledTask = localContextScheduledTask; + + NSError * resultSaveError = nil; + BOOL saveSuccess = [result saveToPersistentStore:&resultSaveError]; + + if (!saveSuccess) { + APCLogError2 (resultSaveError); + } + + [self.appDelegate.dataMonitor batchUploadDataToBridgeOnCompletion:^(NSError *error) + { APCLogError2 (error); }]; + if (self.createResultSummaryBlock) { - [((APCAppDelegate *)[UIApplication sharedApplication].delegate).dataMonitor performCoreDataBlockInBackground:self.createResultSummaryBlock]; + [self.appDelegate.dataMonitor performCoreDataBlockInBackground:self.createResultSummaryBlock]; } } @@ -274,8 +394,9 @@ + (UIViewController *) viewControllerWithRestorationIdentifierPath: (NSArray *) { id task = [coder decodeObjectForKey:@"task"]; NSString * scheduledTaskID = [coder decodeObjectForKey:@"scheduledTask"]; - NSManagedObjectID * objID = [((APCAppDelegate*)[UIApplication sharedApplication].delegate).dataSubstrate.persistentStoreCoordinator managedObjectIDForURIRepresentation:[NSURL URLWithString:scheduledTaskID]]; - APCScheduledTask * scheduledTask = (APCScheduledTask*)[((APCAppDelegate*)[UIApplication sharedApplication].delegate).dataSubstrate.mainContext objectWithID:objID]; + APCAppDelegate *appDelegate = [APCAppDelegate sharedAppDelegate]; + NSManagedObjectID * objID = [appDelegate.dataSubstrate.persistentStoreCoordinator managedObjectIDForURIRepresentation:[NSURL URLWithString:scheduledTaskID]]; + APCScheduledTask * scheduledTask = (APCScheduledTask*)[appDelegate.dataSubstrate.mainContext objectWithID:objID]; id localRestorationData = [coder decodeObjectForKey:@"restorationData"]; if (scheduledTask) { APCBaseTaskViewController * tvc =[[self alloc] initWithTask:task restorationData:localRestorationData]; diff --git a/APCAppCore/APCAppCore/UI/TasksAndSteps/CommonTaskVCs/SimpleSummaryViewController/APCSimpleTaskSummaryViewController.m b/APCAppCore/APCAppCore/UI/TasksAndSteps/CommonTaskVCs/SimpleSummaryViewController/APCSimpleTaskSummaryViewController.m index aa682885..bb65587b 100644 --- a/APCAppCore/APCAppCore/UI/TasksAndSteps/CommonTaskVCs/SimpleSummaryViewController/APCSimpleTaskSummaryViewController.m +++ b/APCAppCore/APCAppCore/UI/TasksAndSteps/CommonTaskVCs/SimpleSummaryViewController/APCSimpleTaskSummaryViewController.m @@ -53,22 +53,6 @@ - (void)viewDidLoad [self.view setBackgroundColor:viewBackgroundColor]; self.navigationItem.leftBarButtonItem = nil; self.navigationItem.hidesBackButton = YES; - - APCAppDelegate *appDelegate = (APCAppDelegate *)[[UIApplication sharedApplication] delegate]; - - NSUInteger allScheduledTasks = appDelegate.dataSubstrate.countOfAllScheduledTasksForToday; - NSUInteger completedScheduledTasks = appDelegate.dataSubstrate.countOfCompletedScheduledTasksForToday; - - NSNumber *remainingTasks = (completedScheduledTasks < allScheduledTasks) ? @(allScheduledTasks - completedScheduledTasks) : @(0); - - UITabBarItem *activitiesTab = appDelegate.tabster.tabBar.selectedItem; - - if ([remainingTasks integerValue] != 0) { - activitiesTab.badgeValue = [remainingTasks stringValue]; - } else { - activitiesTab.badgeValue = nil; - } - self.confirmation.completed = YES; [self setUpAppearance]; @@ -109,7 +93,7 @@ - (void)didReceiveMemoryWarning - (void)doneButtonTapped:(UIBarButtonItem *) __unused sender { if (self.delegate != nil) { - if ([self.delegate respondsToSelector:@selector(stepViewController:didFinishWithNavigationDirection:)]) { + if ([self.delegate respondsToSelector:@selector(stepViewController:didFinishWithNavigationDirection:)] == YES) { [self.delegate stepViewController:self didFinishWithNavigationDirection: ORKStepViewControllerNavigationDirectionForward]; } }