From 8c671ac4550ed62f4c0429229a40c613137e662a Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 20 Oct 2015 15:35:21 -0400 Subject: [PATCH 01/92] MS-1288 Interstitial VAST Video Implementation --- .../ANSDK.xcodeproj/project.pbxproj | 770 +++++++------- sdk/ANAdConstants.h | 5 + sdk/ANCustomAdapter.h | 1 + sdk/ANInterstitialAd.h | 19 +- sdk/Resources/images/mute-off.png | Bin 0 -> 1830 bytes sdk/Resources/images/mute-off@2x.png | Bin 0 -> 3914 bytes sdk/Resources/images/mute-on.png | Bin 0 -> 1779 bytes sdk/Resources/images/mute-on@2x.png | Bin 0 -> 3821 bytes sdk/VastDataModel/ANInLine.h | 41 + sdk/VastDataModel/ANInLine.m | 81 ++ sdk/VastDataModel/ANVast.h | 34 + sdk/VastDataModel/ANVast.m | 177 ++++ sdk/VastDataModel/ANVastDataModelInterface.h | 26 + sdk/VastDataModel/ANVastDataModelInterface.m | 28 + sdk/VastDataModel/ANWrapper.h | 25 + sdk/VastDataModel/ANWrapper.m | 37 + sdk/VastDataModel/Inline/ANAdSystem.h | 29 + sdk/VastDataModel/Inline/ANAdSystem.m | 35 + sdk/VastDataModel/Inline/ANImpression.h | 29 + sdk/VastDataModel/Inline/ANImpression.m | 35 + .../Inline/Creatives/ANCreative.h | 41 + .../Inline/Creatives/ANCreative.m | 70 ++ sdk/VastDataModel/Inline/Creatives/ANLinear.h | 39 + sdk/VastDataModel/Inline/Creatives/ANLinear.m | 80 ++ .../Inline/Creatives/ANNonLinearAds.h | 29 + .../Inline/Creatives/ANNonLinearAds.m | 50 + .../Inline/Creatives/ANStaticResource.h | 29 + .../Inline/Creatives/ANStaticResource.m | 35 + .../Inline/Creatives/ANTracking.h | 30 + .../Inline/Creatives/ANTracking.m | 46 + .../Creatives/CompanionAds/AnCompanion.h | 45 + .../Creatives/CompanionAds/AnCompanion.m | 81 ++ .../Inline/Creatives/Linear/ANVideoClicks.h | 29 + .../Inline/Creatives/Linear/ANVideoClicks.m | 47 + .../Creatives/Linear/MediaFiles/ANMediaFile.h | 37 + .../Creatives/Linear/MediaFiles/ANMediaFile.m | 43 + .../Linear/VideoClicks/ANCustomClick.h | 29 + .../Linear/VideoClicks/ANCustomClick.m | 40 + .../Creatives/NonLinearAds/ANNonLinear.h | 42 + .../Creatives/NonLinearAds/ANNonLinear.m | 67 ++ sdk/XMLParsing/ANXML+HTTP.h | 72 ++ sdk/XMLParsing/ANXML+HTTP.m | 152 +++ sdk/XMLParsing/ANXML.h | 228 ++++ sdk/XMLParsing/ANXML.m | 972 ++++++++++++++++++ sdk/internal/ANAdFetcher.m | 21 + sdk/internal/ANAdServerResponse.h | 3 + sdk/internal/ANAdServerResponse.m | 51 +- sdk/internal/ANAdViewInternalDelegate.h | 1 + sdk/internal/ANCircularAnimationView.h | 33 + sdk/internal/ANCircularAnimationView.m | 187 ++++ sdk/internal/ANGlobal.h | 40 + sdk/internal/ANInterstitialAd.m | 87 +- sdk/internal/ANPlayerView.h | 29 + sdk/internal/ANPlayerView.m | 57 + sdk/internal/ANVideoAd.h | 29 + sdk/internal/ANVideoAd.m | 20 + sdk/internal/ANVideoPlayerViewController.h | 32 + sdk/internal/ANVideoPlayerViewController.m | 264 +++++ sdk/internal/ANVolumeButtonView.h | 34 + sdk/internal/ANVolumeButtonView.m | 92 ++ 60 files changed, 4337 insertions(+), 348 deletions(-) create mode 100644 sdk/Resources/images/mute-off.png create mode 100644 sdk/Resources/images/mute-off@2x.png create mode 100644 sdk/Resources/images/mute-on.png create mode 100644 sdk/Resources/images/mute-on@2x.png create mode 100644 sdk/VastDataModel/ANInLine.h create mode 100644 sdk/VastDataModel/ANInLine.m create mode 100644 sdk/VastDataModel/ANVast.h create mode 100644 sdk/VastDataModel/ANVast.m create mode 100644 sdk/VastDataModel/ANVastDataModelInterface.h create mode 100644 sdk/VastDataModel/ANVastDataModelInterface.m create mode 100644 sdk/VastDataModel/ANWrapper.h create mode 100644 sdk/VastDataModel/ANWrapper.m create mode 100644 sdk/VastDataModel/Inline/ANAdSystem.h create mode 100644 sdk/VastDataModel/Inline/ANAdSystem.m create mode 100644 sdk/VastDataModel/Inline/ANImpression.h create mode 100644 sdk/VastDataModel/Inline/ANImpression.m create mode 100644 sdk/VastDataModel/Inline/Creatives/ANCreative.h create mode 100644 sdk/VastDataModel/Inline/Creatives/ANCreative.m create mode 100644 sdk/VastDataModel/Inline/Creatives/ANLinear.h create mode 100644 sdk/VastDataModel/Inline/Creatives/ANLinear.m create mode 100644 sdk/VastDataModel/Inline/Creatives/ANNonLinearAds.h create mode 100644 sdk/VastDataModel/Inline/Creatives/ANNonLinearAds.m create mode 100644 sdk/VastDataModel/Inline/Creatives/ANStaticResource.h create mode 100644 sdk/VastDataModel/Inline/Creatives/ANStaticResource.m create mode 100644 sdk/VastDataModel/Inline/Creatives/ANTracking.h create mode 100644 sdk/VastDataModel/Inline/Creatives/ANTracking.m create mode 100644 sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.h create mode 100644 sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.m create mode 100644 sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.h create mode 100644 sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.m create mode 100644 sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.h create mode 100644 sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.m create mode 100644 sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.h create mode 100644 sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.m create mode 100644 sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.h create mode 100644 sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.m create mode 100755 sdk/XMLParsing/ANXML+HTTP.h create mode 100755 sdk/XMLParsing/ANXML+HTTP.m create mode 100755 sdk/XMLParsing/ANXML.h create mode 100755 sdk/XMLParsing/ANXML.m create mode 100644 sdk/internal/ANCircularAnimationView.h create mode 100644 sdk/internal/ANCircularAnimationView.m create mode 100644 sdk/internal/ANPlayerView.h create mode 100644 sdk/internal/ANPlayerView.m create mode 100644 sdk/internal/ANVideoAd.h create mode 100644 sdk/internal/ANVideoAd.m create mode 100644 sdk/internal/ANVideoPlayerViewController.h create mode 100644 sdk/internal/ANVideoPlayerViewController.m create mode 100644 sdk/internal/ANVolumeButtonView.h create mode 100644 sdk/internal/ANVolumeButtonView.m diff --git a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj index 29a551a6e..df2bddb3b 100644 --- a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj +++ b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj @@ -11,9 +11,6 @@ 8A0EFA8B1B4356F600196294 /* ANAdAdapterBaseYahoo.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8A9687211B433A3300D9399B /* ANAdAdapterBaseYahoo.h */; }; 8A0EFA8E1B4357E900196294 /* ANAdAdapterBannerYahoo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0EFA8D1B4357E900196294 /* ANAdAdapterBannerYahoo.m */; }; 8A0EFA911B4357FB00196294 /* ANAdAdapterInterstitialYahoo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0EFA901B4357FB00196294 /* ANAdAdapterInterstitialYahoo.m */; }; - 8A2F48241A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A2F48211A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A2F48251A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A2F48221A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.m */; }; - 8A2F48261A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A2F48221A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.m */; }; 8A2F483D1A2E33B000B0EA05 /* compass.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A2F483C1A2E33B000B0EA05 /* compass.png */; }; 8A3601271B39B51300B7BB62 /* ANBrowserViewController_SizeClasses.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8A3601261B39B2E000B7BB62 /* ANBrowserViewController_SizeClasses.xib */; }; 8A3B378119D623C300CE24A5 /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = EC48177B1845046A0066BBFE /* ANSDKResources.bundle */; }; @@ -48,6 +45,62 @@ 8A6D2E8D1A44A751003CE77A /* interstitial_flat_closebox@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A6D2E841A44A5D3003CE77A /* interstitial_flat_closebox@3x.png */; }; 8A6D2E8E1A44A751003CE77A /* interstitial_flat_closebox@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A6D2E871A44A62A003CE77A /* interstitial_flat_closebox@2x.png */; }; 8A6D2E8F1A44A751003CE77A /* interstitial_flat_closebox.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A6D2E881A44A62A003CE77A /* interstitial_flat_closebox.png */; }; + 8A73FA311BD6B34E00D18188 /* ANAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B21BD6B34D00D18188 /* ANAdFetcher.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA321BD6B34E00D18188 /* ANAdFetcherResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B41BD6B34D00D18188 /* ANAdFetcherResponse.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA331BD6B34E00D18188 /* ANAdRequestUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B61BD6B34D00D18188 /* ANAdRequestUrl.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA341BD6B34E00D18188 /* ANAdServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B81BD6B34D00D18188 /* ANAdServerResponse.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA351BD6B34E00D18188 /* ANAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B91BD6B34D00D18188 /* ANAdView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA361BD6B34E00D18188 /* ANAdWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BC1BD6B34D00D18188 /* ANAdWebViewController.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA371BD6B34E00D18188 /* ANANJAMImplementation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BE1BD6B34D00D18188 /* ANANJAMImplementation.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA381BD6B34E00D18188 /* ANBannerAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BF1BD6B34D00D18188 /* ANBannerAdView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA391BD6B34E00D18188 /* ANBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C11BD6B34D00D18188 /* ANBrowserViewController.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA3A1BD6B34E00D18188 /* ANCircularAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C31BD6B34D00D18188 /* ANCircularAnimationView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA3B1BD6B34E00D18188 /* ANClickOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C51BD6B34D00D18188 /* ANClickOverlayView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA3C1BD6B34E00D18188 /* ANGlobal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C71BD6B34D00D18188 /* ANGlobal.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA3D1BD6B34E00D18188 /* ANInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C81BD6B34D00D18188 /* ANInterstitialAd.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA3E1BD6B34E00D18188 /* ANInterstitialAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CA1BD6B34D00D18188 /* ANInterstitialAdViewController.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA3F1BD6B34E00D18188 /* ANLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CB1BD6B34D00D18188 /* ANLocation.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA401BD6B34E00D18188 /* ANLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CD1BD6B34D00D18188 /* ANLogging.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA411BD6B34E00D18188 /* ANLogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CE1BD6B34D00D18188 /* ANLogManager.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA421BD6B34E00D18188 /* ANMediatedAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D01BD6B34D00D18188 /* ANMediatedAd.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA431BD6B34E00D18188 /* ANMediationAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D21BD6B34D00D18188 /* ANMediationAdViewController.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA441BD6B34E00D18188 /* ANMediationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D41BD6B34D00D18188 /* ANMediationContainerView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA451BD6B34E00D18188 /* ANOpenInExternalBrowserActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D61BD6B34D00D18188 /* ANOpenInExternalBrowserActivity.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA461BD6B34E00D18188 /* ANPBBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D81BD6B34D00D18188 /* ANPBBuffer.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA471BD6B34E00D18188 /* ANPBContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DA1BD6B34D00D18188 /* ANPBContainerView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA481BD6B34E00D18188 /* ANPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DC1BD6B34D00D18188 /* ANPlayerView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA491BD6B34E00D18188 /* ANReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DE1BD6B34D00D18188 /* ANReachability.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA4A1BD6B34E00D18188 /* ANStandardAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E01BD6B34D00D18188 /* ANStandardAd.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA4B1BD6B34E00D18188 /* ANTargetingParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E11BD6B34D00D18188 /* ANTargetingParameters.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA4C1BD6B34E00D18188 /* ANVideoAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E31BD6B34D00D18188 /* ANVideoAd.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA4D1BD6B34E00D18188 /* ANVideoPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E51BD6B34D00D18188 /* ANVideoPlayerViewController.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA4E1BD6B34E00D18188 /* ANVolumeButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E71BD6B34D00D18188 /* ANVolumeButtonView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA4F1BD6B34E00D18188 /* ANMRAIDCalendarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EA1BD6B34D00D18188 /* ANMRAIDCalendarManager.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA501BD6B34E00D18188 /* ANMRAIDContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EC1BD6B34D00D18188 /* ANMRAIDContainerView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA511BD6B34E00D18188 /* ANMRAIDExpandProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EE1BD6B34D00D18188 /* ANMRAIDExpandProperties.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA521BD6B34E00D18188 /* ANMRAIDExpandViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F01BD6B34D00D18188 /* ANMRAIDExpandViewController.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA531BD6B34E00D18188 /* ANMRAIDJavascriptUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F21BD6B34D00D18188 /* ANMRAIDJavascriptUtil.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA541BD6B34E00D18188 /* ANMRAIDOrientationProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F41BD6B34D00D18188 /* ANMRAIDOrientationProperties.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA551BD6B34E00D18188 /* ANMRAIDResizeProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F61BD6B34D00D18188 /* ANMRAIDResizeProperties.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA561BD6B34E00D18188 /* ANMRAIDResizeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F81BD6B34D00D18188 /* ANMRAIDResizeView.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA571BD6B34E00D18188 /* ANMRAIDResizeViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FA1BD6B34D00D18188 /* ANMRAIDResizeViewManager.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA581BD6B34E00D18188 /* ANMRAIDUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FC1BD6B34D00D18188 /* ANMRAIDUtil.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA591BD6B34E00D18188 /* ANInLine.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FF1BD6B34D00D18188 /* ANInLine.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA5A1BD6B34E00D18188 /* ANVast.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA011BD6B34D00D18188 /* ANVast.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA5B1BD6B34E00D18188 /* ANVastDataModelInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA031BD6B34D00D18188 /* ANVastDataModelInterface.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA5C1BD6B34E00D18188 /* ANWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA051BD6B34D00D18188 /* ANWrapper.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA5D1BD6B34E00D18188 /* ANAdSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA081BD6B34D00D18188 /* ANAdSystem.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA5E1BD6B34E00D18188 /* ANImpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0A1BD6B34D00D18188 /* ANImpression.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA5F1BD6B34E00D18188 /* ANCreative.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0D1BD6B34D00D18188 /* ANCreative.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA601BD6B34E00D18188 /* ANLinear.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0F1BD6B34D00D18188 /* ANLinear.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA611BD6B34E00D18188 /* ANNonLinearAds.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA111BD6B34D00D18188 /* ANNonLinearAds.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA621BD6B34E00D18188 /* ANStaticResource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA131BD6B34D00D18188 /* ANStaticResource.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA631BD6B34E00D18188 /* ANTracking.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA151BD6B34D00D18188 /* ANTracking.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA641BD6B34E00D18188 /* AnCompanion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA181BD6B34D00D18188 /* AnCompanion.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA651BD6B34E00D18188 /* ANVideoClicks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA1B1BD6B34D00D18188 /* ANVideoClicks.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA661BD6B34E00D18188 /* ANMediaFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA1E1BD6B34D00D18188 /* ANMediaFile.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA671BD6B34E00D18188 /* ANCustomClick.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA211BD6B34D00D18188 /* ANCustomClick.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA681BD6B34E00D18188 /* ANNonLinear.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA241BD6B34D00D18188 /* ANNonLinear.m */; settings = {ASSET_TAGS = (); }; }; 8A7FB9511B0527E800C90859 /* ANAdAdapterBaseChartboost.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8A949AD21ADF1D8B00D83DCE /* ANAdAdapterBaseChartboost.h */; }; 8A82FDF61A30F36C00A267A0 /* ANNativeImpressionTrackerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A82FDF41A30F36B00A267A0 /* ANNativeImpressionTrackerManager.m */; }; 8A84E42E1A25350800C60EAB /* ANNativeAdResponse+PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A84E42A1A2534F300C60EAB /* ANNativeAdResponse+PrivateMethods.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -92,21 +145,6 @@ 8A9AEDC81A1BF88200C58BDA /* NSTimer+ANCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA98194B768A0069D934 /* NSTimer+ANCategory.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8A9AEDC91A1BF88200C58BDA /* UIView+ANCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA9A194B768A0069D934 /* UIView+ANCategory.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8A9AEDCA1A1BF88200C58BDA /* UIWebView+ANCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA9C194B768A0069D934 /* UIWebView+ANCategory.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDCB1A1BF88200C58BDA /* ANAdFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD6189E1981C11F00AC0780 /* ANAdFetcher.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDCC1A1BF88200C58BDA /* ANAdRequestUrl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618A01981C11F00AC0780 /* ANAdRequestUrl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDCE1A1BF88200C58BDA /* ANAdViewInternalDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618A51981C11F00AC0780 /* ANAdViewInternalDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD01A1BF88200C58BDA /* ANANJAMImplementation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618A81981C11F00AC0780 /* ANANJAMImplementation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD21A1BF88200C58BDA /* ANBrowserViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618AC1981C11F00AC0780 /* ANBrowserViewController.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD31A1BF88200C58BDA /* ANClickOverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618AE1981C11F00AC0780 /* ANClickOverlayView.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD41A1BF88200C58BDA /* ANGlobal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618B01981C11F00AC0780 /* ANGlobal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD51A1BF88200C58BDA /* ANInterstitialAdViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618B31981C11F00AC0780 /* ANInterstitialAdViewController.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD61A1BF88200C58BDA /* ANLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618B61981C11F00AC0780 /* ANLogging.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD71A1BF88200C58BDA /* ANMediatedAd.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618B91981C11F00AC0780 /* ANMediatedAd.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD81A1BF88200C58BDA /* ANMediationAdViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618BB1981C11F00AC0780 /* ANMediationAdViewController.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDD91A1BF88200C58BDA /* ANMediationContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618BD1981C11F00AC0780 /* ANMediationContainerView.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDDC1A1BF88200C58BDA /* ANPBBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618C21981C11F00AC0780 /* ANPBBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDDD1A1BF88300C58BDA /* ANPBContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618C41981C11F00AC0780 /* ANPBContainerView.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9AEDDE1A1BF88300C58BDA /* ANReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618C61981C11F00AC0780 /* ANReachability.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8A9AEDE01A1BF88300C58BDA /* ANNativeAdFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AB8761E1A0994310022D9A5 /* ANNativeAdFetcher.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8A9AEDE11A1BF88300C58BDA /* ANNativeAdImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AB876201A0994310022D9A5 /* ANNativeAdImageCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8A9AEDE31A1BF88300C58BDA /* ANNativeAdRequestUrlBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AB876241A0994310022D9A5 /* ANNativeAdRequestUrlBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -117,26 +155,6 @@ 8A9AEDEA1A1BF99D00C58BDA /* NSTimer+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EA99194B768A0069D934 /* NSTimer+ANCategory.m */; }; 8A9AEDEB1A1BF99D00C58BDA /* UIView+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EA9B194B768A0069D934 /* UIView+ANCategory.m */; }; 8A9AEDEC1A1BF99D00C58BDA /* UIWebView+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EA9D194B768A0069D934 /* UIWebView+ANCategory.m */; }; - 8A9AEDED1A1BF99D00C58BDA /* ANAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD6189F1981C11F00AC0780 /* ANAdFetcher.m */; }; - 8A9AEDEE1A1BF99D00C58BDA /* ANAdRequestUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618A11981C11F00AC0780 /* ANAdRequestUrl.m */; }; - 8A9AEDF01A1BF99D00C58BDA /* ANAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618A41981C11F00AC0780 /* ANAdView.m */; }; - 8A9AEDF21A1BF99D00C58BDA /* ANANJAMImplementation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618A91981C11F00AC0780 /* ANANJAMImplementation.m */; }; - 8A9AEDF31A1BF99D00C58BDA /* ANBannerAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618AA1981C11F00AC0780 /* ANBannerAdView.m */; }; - 8A9AEDF41A1BF99D00C58BDA /* ANBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618AD1981C11F00AC0780 /* ANBrowserViewController.m */; }; - 8A9AEDF51A1BF99D00C58BDA /* ANClickOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618AF1981C11F00AC0780 /* ANClickOverlayView.m */; }; - 8A9AEDF61A1BF99D00C58BDA /* ANGlobal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B11981C11F00AC0780 /* ANGlobal.m */; }; - 8A9AEDF71A1BF99D00C58BDA /* ANInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B21981C11F00AC0780 /* ANInterstitialAd.m */; }; - 8A9AEDF81A1BF99D00C58BDA /* ANInterstitialAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B41981C11F00AC0780 /* ANInterstitialAdViewController.m */; }; - 8A9AEDF91A1BF99D00C58BDA /* ANLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B51981C11F00AC0780 /* ANLocation.m */; }; - 8A9AEDFA1A1BF99D00C58BDA /* ANLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B71981C11F00AC0780 /* ANLogging.m */; }; - 8A9AEDFB1A1BF99D00C58BDA /* ANLogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B81981C11F00AC0780 /* ANLogManager.m */; }; - 8A9AEDFC1A1BF99D00C58BDA /* ANMediatedAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618BA1981C11F00AC0780 /* ANMediatedAd.m */; }; - 8A9AEDFD1A1BF99D00C58BDA /* ANMediationAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618BC1981C11F00AC0780 /* ANMediationAdViewController.m */; }; - 8A9AEDFE1A1BF99D00C58BDA /* ANMediationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618BE1981C11F00AC0780 /* ANMediationContainerView.m */; }; - 8A9AEE001A1BF99D00C58BDA /* ANPBBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618C31981C11F00AC0780 /* ANPBBuffer.m */; }; - 8A9AEE011A1BF99D00C58BDA /* ANPBContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618C51981C11F00AC0780 /* ANPBContainerView.m */; }; - 8A9AEE021A1BF99D00C58BDA /* ANReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618C71981C11F00AC0780 /* ANReachability.m */; }; - 8A9AEE031A1BF99D00C58BDA /* ANTargetingParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618C81981C11F00AC0780 /* ANTargetingParameters.m */; }; 8A9AEE051A1BF99D00C58BDA /* ANNativeAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB8761F1A0994310022D9A5 /* ANNativeAdFetcher.m */; }; 8A9AEE061A1BF99D00C58BDA /* ANNativeAdImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB876211A0994310022D9A5 /* ANNativeAdImageCache.m */; }; 8A9AEE071A1BF99D00C58BDA /* ANNativeAdRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB876231A0994310022D9A5 /* ANNativeAdRequest.m */; }; @@ -150,60 +168,11 @@ 8AA5B4E31AA8B74E00522E1C /* ANAdAdapterInterstitialInMobi.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA5B4E01AA8B74E00522E1C /* ANAdAdapterInterstitialInMobi.m */; }; 8AA5B4E41AA8B74E00522E1C /* ANAdAdapterNativeInMobi.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA5B4E21AA8B74E00522E1C /* ANAdAdapterNativeInMobi.m */; }; 8AA5B4E71AA8B7F800522E1C /* ANAdAdapterBaseInMobi.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA5B4E61AA8B7F800522E1C /* ANAdAdapterBaseInMobi.m */; }; - 8AC65F4C1A40DE63006BCF39 /* ANMRAIDCalendarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F381A40DE63006BCF39 /* ANMRAIDCalendarManager.m */; }; - 8AC65F4E1A40DE63006BCF39 /* ANMRAIDContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F3A1A40DE63006BCF39 /* ANMRAIDContainerView.m */; }; - 8AC65F501A40DE63006BCF39 /* ANMRAIDExpandProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F3C1A40DE63006BCF39 /* ANMRAIDExpandProperties.m */; }; - 8AC65F521A40DE63006BCF39 /* ANMRAIDExpandViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F3E1A40DE63006BCF39 /* ANMRAIDExpandViewController.m */; }; - 8AC65F541A40DE63006BCF39 /* ANMRAIDJavascriptUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F401A40DE63006BCF39 /* ANMRAIDJavascriptUtil.m */; }; - 8AC65F561A40DE63006BCF39 /* ANMRAIDOrientationProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F421A40DE63006BCF39 /* ANMRAIDOrientationProperties.m */; }; - 8AC65F581A40DE63006BCF39 /* ANMRAIDResizeProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F441A40DE63006BCF39 /* ANMRAIDResizeProperties.m */; }; - 8AC65F5A1A40DE63006BCF39 /* ANMRAIDResizeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F461A40DE63006BCF39 /* ANMRAIDResizeView.m */; }; - 8AC65F5C1A40DE63006BCF39 /* ANMRAIDResizeViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F481A40DE63006BCF39 /* ANMRAIDResizeViewManager.m */; }; - 8AC65F5E1A40DE63006BCF39 /* ANMRAIDUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F4A1A40DE63006BCF39 /* ANMRAIDUtil.m */; }; - 8AC65F5F1A40DE74006BCF39 /* ANMRAIDCalendarManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F371A40DE63006BCF39 /* ANMRAIDCalendarManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F601A40DE74006BCF39 /* ANMRAIDCalendarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F381A40DE63006BCF39 /* ANMRAIDCalendarManager.m */; }; - 8AC65F611A40DE74006BCF39 /* ANMRAIDContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F391A40DE63006BCF39 /* ANMRAIDContainerView.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F621A40DE74006BCF39 /* ANMRAIDContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F3A1A40DE63006BCF39 /* ANMRAIDContainerView.m */; }; - 8AC65F631A40DE74006BCF39 /* ANMRAIDExpandProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F3B1A40DE63006BCF39 /* ANMRAIDExpandProperties.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F641A40DE74006BCF39 /* ANMRAIDExpandProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F3C1A40DE63006BCF39 /* ANMRAIDExpandProperties.m */; }; - 8AC65F651A40DE74006BCF39 /* ANMRAIDExpandViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F3D1A40DE63006BCF39 /* ANMRAIDExpandViewController.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F661A40DE74006BCF39 /* ANMRAIDExpandViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F3E1A40DE63006BCF39 /* ANMRAIDExpandViewController.m */; }; - 8AC65F671A40DE74006BCF39 /* ANMRAIDJavascriptUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F3F1A40DE63006BCF39 /* ANMRAIDJavascriptUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F681A40DE74006BCF39 /* ANMRAIDJavascriptUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F401A40DE63006BCF39 /* ANMRAIDJavascriptUtil.m */; }; - 8AC65F691A40DE74006BCF39 /* ANMRAIDOrientationProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F411A40DE63006BCF39 /* ANMRAIDOrientationProperties.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F6A1A40DE74006BCF39 /* ANMRAIDOrientationProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F421A40DE63006BCF39 /* ANMRAIDOrientationProperties.m */; }; - 8AC65F6B1A40DE74006BCF39 /* ANMRAIDResizeProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F431A40DE63006BCF39 /* ANMRAIDResizeProperties.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F6C1A40DE74006BCF39 /* ANMRAIDResizeProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F441A40DE63006BCF39 /* ANMRAIDResizeProperties.m */; }; - 8AC65F6D1A40DE74006BCF39 /* ANMRAIDResizeView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F451A40DE63006BCF39 /* ANMRAIDResizeView.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F6E1A40DE74006BCF39 /* ANMRAIDResizeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F461A40DE63006BCF39 /* ANMRAIDResizeView.m */; }; - 8AC65F6F1A40DE74006BCF39 /* ANMRAIDResizeViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F471A40DE63006BCF39 /* ANMRAIDResizeViewManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F701A40DE74006BCF39 /* ANMRAIDResizeViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F481A40DE63006BCF39 /* ANMRAIDResizeViewManager.m */; }; - 8AC65F711A40DE74006BCF39 /* ANMRAIDUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC65F491A40DE63006BCF39 /* ANMRAIDUtil.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8AC65F721A40DE74006BCF39 /* ANMRAIDUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC65F4A1A40DE63006BCF39 /* ANMRAIDUtil.m */; }; - 8AC7C5391A3B5CEF00AA5548 /* ANAdWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC7C5371A3B5CEF00AA5548 /* ANAdWebViewController.m */; }; + 8AAD5D161BD6C0E300B4CD53 /* ANXML+HTTP.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD5D131BD6C0E300B4CD53 /* ANXML+HTTP.m */; settings = {ASSET_TAGS = (); }; }; + 8AAD5D171BD6C0E300B4CD53 /* ANXML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD5D151BD6C0E300B4CD53 /* ANXML.m */; settings = {ASSET_TAGS = (); }; }; 8AD5155D19D216E6002E53D6 /* ANAdAdapterBannerAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155619D216E6002E53D6 /* ANAdAdapterBannerAmazon.m */; }; 8AD5155E19D216E6002E53D6 /* ANAdAdapterBaseAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155819D216E6002E53D6 /* ANAdAdapterBaseAmazon.m */; }; 8AD5155F19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155A19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m */; }; - 8AD618CB1981C11F00AC0780 /* ANAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD6189F1981C11F00AC0780 /* ANAdFetcher.m */; }; - 8AD618CC1981C11F00AC0780 /* ANAdRequestUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618A11981C11F00AC0780 /* ANAdRequestUrl.m */; }; - 8AD618CE1981C11F00AC0780 /* ANAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618A41981C11F00AC0780 /* ANAdView.m */; }; - 8AD618D01981C11F00AC0780 /* ANANJAMImplementation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618A91981C11F00AC0780 /* ANANJAMImplementation.m */; }; - 8AD618D11981C11F00AC0780 /* ANBannerAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618AA1981C11F00AC0780 /* ANBannerAdView.m */; }; - 8AD618D21981C11F00AC0780 /* ANBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618AD1981C11F00AC0780 /* ANBrowserViewController.m */; }; - 8AD618D31981C11F00AC0780 /* ANClickOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618AF1981C11F00AC0780 /* ANClickOverlayView.m */; }; - 8AD618D41981C11F00AC0780 /* ANGlobal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B11981C11F00AC0780 /* ANGlobal.m */; }; - 8AD618D51981C11F00AC0780 /* ANInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B21981C11F00AC0780 /* ANInterstitialAd.m */; }; - 8AD618D61981C11F00AC0780 /* ANInterstitialAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B41981C11F00AC0780 /* ANInterstitialAdViewController.m */; }; - 8AD618D71981C11F00AC0780 /* ANLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B51981C11F00AC0780 /* ANLocation.m */; }; - 8AD618D81981C11F00AC0780 /* ANLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B71981C11F00AC0780 /* ANLogging.m */; }; - 8AD618D91981C11F00AC0780 /* ANLogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618B81981C11F00AC0780 /* ANLogManager.m */; }; - 8AD618DA1981C11F00AC0780 /* ANMediatedAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618BA1981C11F00AC0780 /* ANMediatedAd.m */; }; - 8AD618DB1981C11F00AC0780 /* ANMediationAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618BC1981C11F00AC0780 /* ANMediationAdViewController.m */; }; - 8AD618DC1981C11F00AC0780 /* ANMediationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618BE1981C11F00AC0780 /* ANMediationContainerView.m */; }; - 8AD618DE1981C11F00AC0780 /* ANPBBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618C31981C11F00AC0780 /* ANPBBuffer.m */; }; - 8AD618DF1981C11F00AC0780 /* ANPBContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618C51981C11F00AC0780 /* ANPBContainerView.m */; }; - 8AD618E01981C11F00AC0780 /* ANReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618C71981C11F00AC0780 /* ANReachability.m */; }; - 8AD618E11981C11F00AC0780 /* ANTargetingParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618C81981C11F00AC0780 /* ANTargetingParameters.m */; }; 8AD618E31981C19100AC0780 /* appnexus_logo_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */; }; 8AD618E41981C19500AC0780 /* appnexus_logo_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */; }; 8AD7C4DB1AD2FB430049C997 /* ANAdAdapterInterstitialVungle.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD7C4DA1AD2FB430049C997 /* ANAdAdapterInterstitialVungle.m */; }; @@ -229,20 +198,10 @@ 8AE2D87019CC9B7300001B70 /* ANMoPubMediationInterstitial.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86E19CC9B7300001B70 /* ANMoPubMediationInterstitial.m */; }; 8AE5E11E1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AE5E11C1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8AE7AD9E1A7AC4E5009E2F2F /* EventKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AE7AD9D1A7AC4E5009E2F2F /* EventKitUI.framework */; }; - 8AE7AD9F1A7AC4F6009E2F2F /* ANAdWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC7C5371A3B5CEF00AA5548 /* ANAdWebViewController.m */; }; 8AF366BD19D492F30097019F /* ANSDKResources.bundle in Copy Files */ = {isa = PBXBuildFile; fileRef = EC48177B1845046A0066BBFE /* ANSDKResources.bundle */; }; 8AF3C19D1A361CC30018FB6A /* ANNativeImpressionTrackerInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF3C19B1A361CC30018FB6A /* ANNativeImpressionTrackerInfo.m */; }; 8AF3C19F1A3631460018FB6A /* ANNativeImpressionTrackerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A82FDF41A30F36B00A267A0 /* ANNativeImpressionTrackerManager.m */; }; 8AF3C1A01A3631490018FB6A /* ANNativeImpressionTrackerInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF3C19B1A361CC30018FB6A /* ANNativeImpressionTrackerInfo.m */; }; - 8AF5A87F1ACC60D50089C529 /* ANAdFetcherResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AF5A8791ACC60D50089C529 /* ANAdFetcherResponse.h */; }; - 8AF5A8801ACC60D50089C529 /* ANAdFetcherResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF5A87A1ACC60D50089C529 /* ANAdFetcherResponse.m */; }; - 8AF5A8811ACC60D50089C529 /* ANAdFetcherResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF5A87A1ACC60D50089C529 /* ANAdFetcherResponse.m */; }; - 8AF5A8821ACC60D50089C529 /* ANAdServerResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AF5A87B1ACC60D50089C529 /* ANAdServerResponse.h */; }; - 8AF5A8831ACC60D50089C529 /* ANAdServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF5A87C1ACC60D50089C529 /* ANAdServerResponse.m */; }; - 8AF5A8841ACC60D50089C529 /* ANAdServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF5A87C1ACC60D50089C529 /* ANAdServerResponse.m */; }; - 8AF5A8851ACC60D50089C529 /* ANStandardAd.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AF5A87D1ACC60D50089C529 /* ANStandardAd.h */; }; - 8AF5A8861ACC60D50089C529 /* ANStandardAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF5A87E1ACC60D50089C529 /* ANStandardAd.m */; }; - 8AF5A8871ACC60D50089C529 /* ANStandardAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AF5A87E1ACC60D50089C529 /* ANStandardAd.m */; }; 8AF9F08D19DA131F00758111 /* ANAdAdapterBaseAmazon.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8AD5155719D216E6002E53D6 /* ANAdAdapterBaseAmazon.h */; }; 8AFC045F1A2E74AC00BEA485 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AFC045E1A2E74AC00BEA485 /* UIKit.framework */; }; 8AFC04611A2E74C800BEA485 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AFC04601A2E74C800BEA485 /* CoreGraphics.framework */; }; @@ -581,8 +540,6 @@ 8A1482481AD3371C0046F1B9 /* AdColony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AdColony.framework; sourceTree = ""; }; 8A1482571AD337320046F1B9 /* libANSDKAdColonyAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKAdColonyAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; 8A2BD4001B66F6450000DB66 /* MMAdSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MMAdSDK.framework; sourceTree = ""; }; - 8A2F48211A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANOpenInExternalBrowserActivity.h; sourceTree = ""; }; - 8A2F48221A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANOpenInExternalBrowserActivity.m; sourceTree = ""; }; 8A2F483C1A2E33B000B0EA05 /* compass.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = compass.png; sourceTree = ""; }; 8A35B89619FEB5EC0016C81F /* ANNativeAdRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANNativeAdRequest.h; path = native/ANNativeAdRequest.h; sourceTree = ""; }; 8A35B89919FEB8A40016C81F /* ANNativeAdResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANNativeAdResponse.h; path = native/ANNativeAdResponse.h; sourceTree = ""; }; @@ -635,6 +592,113 @@ 8A6D2E841A44A5D3003CE77A /* interstitial_flat_closebox@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "interstitial_flat_closebox@3x.png"; sourceTree = ""; }; 8A6D2E871A44A62A003CE77A /* interstitial_flat_closebox@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "interstitial_flat_closebox@2x.png"; sourceTree = ""; }; 8A6D2E881A44A62A003CE77A /* interstitial_flat_closebox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = interstitial_flat_closebox.png; sourceTree = ""; }; + 8A73F9B11BD6B34D00D18188 /* ANAdFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdFetcher.h; sourceTree = ""; }; + 8A73F9B21BD6B34D00D18188 /* ANAdFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdFetcher.m; sourceTree = ""; }; + 8A73F9B31BD6B34D00D18188 /* ANAdFetcherResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdFetcherResponse.h; sourceTree = ""; }; + 8A73F9B41BD6B34D00D18188 /* ANAdFetcherResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdFetcherResponse.m; sourceTree = ""; }; + 8A73F9B51BD6B34D00D18188 /* ANAdRequestUrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdRequestUrl.h; sourceTree = ""; }; + 8A73F9B61BD6B34D00D18188 /* ANAdRequestUrl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdRequestUrl.m; sourceTree = ""; }; + 8A73F9B71BD6B34D00D18188 /* ANAdServerResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdServerResponse.h; sourceTree = ""; }; + 8A73F9B81BD6B34D00D18188 /* ANAdServerResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdServerResponse.m; sourceTree = ""; }; + 8A73F9B91BD6B34D00D18188 /* ANAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdView.m; sourceTree = ""; }; + 8A73F9BA1BD6B34D00D18188 /* ANAdViewInternalDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdViewInternalDelegate.h; sourceTree = ""; }; + 8A73F9BB1BD6B34D00D18188 /* ANAdWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdWebViewController.h; sourceTree = ""; }; + 8A73F9BC1BD6B34D00D18188 /* ANAdWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdWebViewController.m; sourceTree = ""; }; + 8A73F9BD1BD6B34D00D18188 /* ANANJAMImplementation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANANJAMImplementation.h; sourceTree = ""; }; + 8A73F9BE1BD6B34D00D18188 /* ANANJAMImplementation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANANJAMImplementation.m; sourceTree = ""; }; + 8A73F9BF1BD6B34D00D18188 /* ANBannerAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANBannerAdView.m; sourceTree = ""; }; + 8A73F9C01BD6B34D00D18188 /* ANBrowserViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBrowserViewController.h; sourceTree = ""; }; + 8A73F9C11BD6B34D00D18188 /* ANBrowserViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANBrowserViewController.m; sourceTree = ""; }; + 8A73F9C21BD6B34D00D18188 /* ANCircularAnimationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCircularAnimationView.h; sourceTree = ""; }; + 8A73F9C31BD6B34D00D18188 /* ANCircularAnimationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANCircularAnimationView.m; sourceTree = ""; }; + 8A73F9C41BD6B34D00D18188 /* ANClickOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANClickOverlayView.h; sourceTree = ""; }; + 8A73F9C51BD6B34D00D18188 /* ANClickOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANClickOverlayView.m; sourceTree = ""; }; + 8A73F9C61BD6B34D00D18188 /* ANGlobal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGlobal.h; sourceTree = ""; }; + 8A73F9C71BD6B34D00D18188 /* ANGlobal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANGlobal.m; sourceTree = ""; }; + 8A73F9C81BD6B34D00D18188 /* ANInterstitialAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInterstitialAd.m; sourceTree = ""; }; + 8A73F9C91BD6B34D00D18188 /* ANInterstitialAdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAdViewController.h; sourceTree = ""; }; + 8A73F9CA1BD6B34D00D18188 /* ANInterstitialAdViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInterstitialAdViewController.m; sourceTree = ""; }; + 8A73F9CB1BD6B34D00D18188 /* ANLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLocation.m; sourceTree = ""; }; + 8A73F9CC1BD6B34D00D18188 /* ANLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogging.h; sourceTree = ""; }; + 8A73F9CD1BD6B34D00D18188 /* ANLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLogging.m; sourceTree = ""; }; + 8A73F9CE1BD6B34D00D18188 /* ANLogManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLogManager.m; sourceTree = ""; }; + 8A73F9CF1BD6B34D00D18188 /* ANMediatedAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediatedAd.h; sourceTree = ""; }; + 8A73F9D01BD6B34D00D18188 /* ANMediatedAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediatedAd.m; sourceTree = ""; }; + 8A73F9D11BD6B34D00D18188 /* ANMediationAdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediationAdViewController.h; sourceTree = ""; }; + 8A73F9D21BD6B34D00D18188 /* ANMediationAdViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediationAdViewController.m; sourceTree = ""; }; + 8A73F9D31BD6B34D00D18188 /* ANMediationContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediationContainerView.h; sourceTree = ""; }; + 8A73F9D41BD6B34D00D18188 /* ANMediationContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediationContainerView.m; sourceTree = ""; }; + 8A73F9D51BD6B34D00D18188 /* ANOpenInExternalBrowserActivity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANOpenInExternalBrowserActivity.h; sourceTree = ""; }; + 8A73F9D61BD6B34D00D18188 /* ANOpenInExternalBrowserActivity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANOpenInExternalBrowserActivity.m; sourceTree = ""; }; + 8A73F9D71BD6B34D00D18188 /* ANPBBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANPBBuffer.h; sourceTree = ""; }; + 8A73F9D81BD6B34D00D18188 /* ANPBBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANPBBuffer.m; sourceTree = ""; }; + 8A73F9D91BD6B34D00D18188 /* ANPBContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANPBContainerView.h; sourceTree = ""; }; + 8A73F9DA1BD6B34D00D18188 /* ANPBContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANPBContainerView.m; sourceTree = ""; }; + 8A73F9DB1BD6B34D00D18188 /* ANPlayerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANPlayerView.h; sourceTree = ""; }; + 8A73F9DC1BD6B34D00D18188 /* ANPlayerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANPlayerView.m; sourceTree = ""; }; + 8A73F9DD1BD6B34D00D18188 /* ANReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANReachability.h; sourceTree = ""; }; + 8A73F9DE1BD6B34D00D18188 /* ANReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANReachability.m; sourceTree = ""; }; + 8A73F9DF1BD6B34D00D18188 /* ANStandardAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANStandardAd.h; sourceTree = ""; }; + 8A73F9E01BD6B34D00D18188 /* ANStandardAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANStandardAd.m; sourceTree = ""; }; + 8A73F9E11BD6B34D00D18188 /* ANTargetingParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANTargetingParameters.m; sourceTree = ""; }; + 8A73F9E21BD6B34D00D18188 /* ANVideoAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANVideoAd.h; sourceTree = ""; }; + 8A73F9E31BD6B34D00D18188 /* ANVideoAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANVideoAd.m; sourceTree = ""; }; + 8A73F9E41BD6B34D00D18188 /* ANVideoPlayerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANVideoPlayerViewController.h; sourceTree = ""; }; + 8A73F9E51BD6B34D00D18188 /* ANVideoPlayerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANVideoPlayerViewController.m; sourceTree = ""; }; + 8A73F9E61BD6B34D00D18188 /* ANVolumeButtonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANVolumeButtonView.h; sourceTree = ""; }; + 8A73F9E71BD6B34D00D18188 /* ANVolumeButtonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANVolumeButtonView.m; sourceTree = ""; }; + 8A73F9E91BD6B34D00D18188 /* ANMRAIDCalendarManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDCalendarManager.h; sourceTree = ""; }; + 8A73F9EA1BD6B34D00D18188 /* ANMRAIDCalendarManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDCalendarManager.m; sourceTree = ""; }; + 8A73F9EB1BD6B34D00D18188 /* ANMRAIDContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDContainerView.h; sourceTree = ""; }; + 8A73F9EC1BD6B34D00D18188 /* ANMRAIDContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDContainerView.m; sourceTree = ""; }; + 8A73F9ED1BD6B34D00D18188 /* ANMRAIDExpandProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDExpandProperties.h; sourceTree = ""; }; + 8A73F9EE1BD6B34D00D18188 /* ANMRAIDExpandProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDExpandProperties.m; sourceTree = ""; }; + 8A73F9EF1BD6B34D00D18188 /* ANMRAIDExpandViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDExpandViewController.h; sourceTree = ""; }; + 8A73F9F01BD6B34D00D18188 /* ANMRAIDExpandViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDExpandViewController.m; sourceTree = ""; }; + 8A73F9F11BD6B34D00D18188 /* ANMRAIDJavascriptUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDJavascriptUtil.h; sourceTree = ""; }; + 8A73F9F21BD6B34D00D18188 /* ANMRAIDJavascriptUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDJavascriptUtil.m; sourceTree = ""; }; + 8A73F9F31BD6B34D00D18188 /* ANMRAIDOrientationProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDOrientationProperties.h; sourceTree = ""; }; + 8A73F9F41BD6B34D00D18188 /* ANMRAIDOrientationProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDOrientationProperties.m; sourceTree = ""; }; + 8A73F9F51BD6B34D00D18188 /* ANMRAIDResizeProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeProperties.h; sourceTree = ""; }; + 8A73F9F61BD6B34D00D18188 /* ANMRAIDResizeProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeProperties.m; sourceTree = ""; }; + 8A73F9F71BD6B34D00D18188 /* ANMRAIDResizeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeView.h; sourceTree = ""; }; + 8A73F9F81BD6B34D00D18188 /* ANMRAIDResizeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeView.m; sourceTree = ""; }; + 8A73F9F91BD6B34D00D18188 /* ANMRAIDResizeViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeViewManager.h; sourceTree = ""; }; + 8A73F9FA1BD6B34D00D18188 /* ANMRAIDResizeViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeViewManager.m; sourceTree = ""; }; + 8A73F9FB1BD6B34D00D18188 /* ANMRAIDUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDUtil.h; sourceTree = ""; }; + 8A73F9FC1BD6B34D00D18188 /* ANMRAIDUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDUtil.m; sourceTree = ""; }; + 8A73F9FE1BD6B34D00D18188 /* ANInLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInLine.h; sourceTree = ""; }; + 8A73F9FF1BD6B34D00D18188 /* ANInLine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInLine.m; sourceTree = ""; }; + 8A73FA001BD6B34D00D18188 /* ANVast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANVast.h; sourceTree = ""; }; + 8A73FA011BD6B34D00D18188 /* ANVast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANVast.m; sourceTree = ""; }; + 8A73FA021BD6B34D00D18188 /* ANVastDataModelInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANVastDataModelInterface.h; sourceTree = ""; }; + 8A73FA031BD6B34D00D18188 /* ANVastDataModelInterface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANVastDataModelInterface.m; sourceTree = ""; }; + 8A73FA041BD6B34D00D18188 /* ANWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANWrapper.h; sourceTree = ""; }; + 8A73FA051BD6B34D00D18188 /* ANWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANWrapper.m; sourceTree = ""; }; + 8A73FA071BD6B34D00D18188 /* ANAdSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdSystem.h; sourceTree = ""; }; + 8A73FA081BD6B34D00D18188 /* ANAdSystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdSystem.m; sourceTree = ""; }; + 8A73FA091BD6B34D00D18188 /* ANImpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANImpression.h; sourceTree = ""; }; + 8A73FA0A1BD6B34D00D18188 /* ANImpression.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANImpression.m; sourceTree = ""; }; + 8A73FA0C1BD6B34D00D18188 /* ANCreative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCreative.h; sourceTree = ""; }; + 8A73FA0D1BD6B34D00D18188 /* ANCreative.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANCreative.m; sourceTree = ""; }; + 8A73FA0E1BD6B34D00D18188 /* ANLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLinear.h; sourceTree = ""; }; + 8A73FA0F1BD6B34D00D18188 /* ANLinear.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLinear.m; sourceTree = ""; }; + 8A73FA101BD6B34D00D18188 /* ANNonLinearAds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANNonLinearAds.h; sourceTree = ""; }; + 8A73FA111BD6B34D00D18188 /* ANNonLinearAds.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANNonLinearAds.m; sourceTree = ""; }; + 8A73FA121BD6B34D00D18188 /* ANStaticResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANStaticResource.h; sourceTree = ""; }; + 8A73FA131BD6B34D00D18188 /* ANStaticResource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANStaticResource.m; sourceTree = ""; }; + 8A73FA141BD6B34D00D18188 /* ANTracking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTracking.h; sourceTree = ""; }; + 8A73FA151BD6B34D00D18188 /* ANTracking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANTracking.m; sourceTree = ""; }; + 8A73FA171BD6B34D00D18188 /* AnCompanion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnCompanion.h; sourceTree = ""; }; + 8A73FA181BD6B34D00D18188 /* AnCompanion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnCompanion.m; sourceTree = ""; }; + 8A73FA1A1BD6B34D00D18188 /* ANVideoClicks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANVideoClicks.h; sourceTree = ""; }; + 8A73FA1B1BD6B34D00D18188 /* ANVideoClicks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANVideoClicks.m; sourceTree = ""; }; + 8A73FA1D1BD6B34D00D18188 /* ANMediaFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediaFile.h; sourceTree = ""; }; + 8A73FA1E1BD6B34D00D18188 /* ANMediaFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediaFile.m; sourceTree = ""; }; + 8A73FA201BD6B34D00D18188 /* ANCustomClick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomClick.h; sourceTree = ""; }; + 8A73FA211BD6B34D00D18188 /* ANCustomClick.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANCustomClick.m; sourceTree = ""; }; + 8A73FA231BD6B34D00D18188 /* ANNonLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANNonLinear.h; sourceTree = ""; }; + 8A73FA241BD6B34D00D18188 /* ANNonLinear.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANNonLinear.m; sourceTree = ""; }; 8A82FDF31A30F36B00A267A0 /* ANNativeImpressionTrackerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANNativeImpressionTrackerManager.h; sourceTree = ""; }; 8A82FDF41A30F36B00A267A0 /* ANNativeImpressionTrackerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANNativeImpressionTrackerManager.m; sourceTree = ""; }; 8A84E42A1A2534F300C60EAB /* ANNativeAdResponse+PrivateMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANNativeAdResponse+PrivateMethods.h"; sourceTree = ""; }; @@ -743,6 +807,10 @@ 8AA5B4E21AA8B74E00522E1C /* ANAdAdapterNativeInMobi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterNativeInMobi.m; sourceTree = ""; }; 8AA5B4E51AA8B7F800522E1C /* ANAdAdapterBaseInMobi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBaseInMobi.h; sourceTree = ""; }; 8AA5B4E61AA8B7F800522E1C /* ANAdAdapterBaseInMobi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBaseInMobi.m; sourceTree = ""; }; + 8AAD5D121BD6C0E300B4CD53 /* ANXML+HTTP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANXML+HTTP.h"; sourceTree = ""; }; + 8AAD5D131BD6C0E300B4CD53 /* ANXML+HTTP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ANXML+HTTP.m"; sourceTree = ""; }; + 8AAD5D141BD6C0E300B4CD53 /* ANXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANXML.h; sourceTree = ""; }; + 8AAD5D151BD6C0E300B4CD53 /* ANXML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANXML.m; sourceTree = ""; }; 8AB8761E1A0994310022D9A5 /* ANNativeAdFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANNativeAdFetcher.h; sourceTree = ""; }; 8AB8761F1A0994310022D9A5 /* ANNativeAdFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANNativeAdFetcher.m; sourceTree = ""; }; 8AB876201A0994310022D9A5 /* ANNativeAdImageCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANNativeAdImageCache.h; sourceTree = ""; }; @@ -758,30 +826,8 @@ 8AB8762E1A0994310022D9A5 /* ANNativeMediatedAdResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANNativeMediatedAdResponse.m; sourceTree = ""; }; 8ABB76691A00385C00FEAD9D /* ANAdConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdConstants.h; sourceTree = ""; }; 8ABB766D1A004DBD00FEAD9D /* ANNativeAdStarRating.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANNativeAdStarRating.h; path = native/ANNativeAdStarRating.h; sourceTree = ""; }; - 8AC65F371A40DE63006BCF39 /* ANMRAIDCalendarManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDCalendarManager.h; sourceTree = ""; }; - 8AC65F381A40DE63006BCF39 /* ANMRAIDCalendarManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDCalendarManager.m; sourceTree = ""; }; - 8AC65F391A40DE63006BCF39 /* ANMRAIDContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDContainerView.h; sourceTree = ""; }; - 8AC65F3A1A40DE63006BCF39 /* ANMRAIDContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDContainerView.m; sourceTree = ""; }; - 8AC65F3B1A40DE63006BCF39 /* ANMRAIDExpandProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDExpandProperties.h; sourceTree = ""; }; - 8AC65F3C1A40DE63006BCF39 /* ANMRAIDExpandProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDExpandProperties.m; sourceTree = ""; }; - 8AC65F3D1A40DE63006BCF39 /* ANMRAIDExpandViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDExpandViewController.h; sourceTree = ""; }; - 8AC65F3E1A40DE63006BCF39 /* ANMRAIDExpandViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDExpandViewController.m; sourceTree = ""; }; - 8AC65F3F1A40DE63006BCF39 /* ANMRAIDJavascriptUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDJavascriptUtil.h; sourceTree = ""; }; - 8AC65F401A40DE63006BCF39 /* ANMRAIDJavascriptUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDJavascriptUtil.m; sourceTree = ""; }; - 8AC65F411A40DE63006BCF39 /* ANMRAIDOrientationProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDOrientationProperties.h; sourceTree = ""; }; - 8AC65F421A40DE63006BCF39 /* ANMRAIDOrientationProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDOrientationProperties.m; sourceTree = ""; }; - 8AC65F431A40DE63006BCF39 /* ANMRAIDResizeProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeProperties.h; sourceTree = ""; }; - 8AC65F441A40DE63006BCF39 /* ANMRAIDResizeProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeProperties.m; sourceTree = ""; }; - 8AC65F451A40DE63006BCF39 /* ANMRAIDResizeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeView.h; sourceTree = ""; }; - 8AC65F461A40DE63006BCF39 /* ANMRAIDResizeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeView.m; sourceTree = ""; }; - 8AC65F471A40DE63006BCF39 /* ANMRAIDResizeViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeViewManager.h; sourceTree = ""; }; - 8AC65F481A40DE63006BCF39 /* ANMRAIDResizeViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeViewManager.m; sourceTree = ""; }; - 8AC65F491A40DE63006BCF39 /* ANMRAIDUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDUtil.h; sourceTree = ""; }; - 8AC65F4A1A40DE63006BCF39 /* ANMRAIDUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDUtil.m; sourceTree = ""; }; 8AC662A219DC9DDA004025D5 /* MPServerAdPositioning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPServerAdPositioning.h; sourceTree = ""; }; 8AC662A319DC9E07004025D5 /* MoPub-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MoPub-Bridging-Header.h"; sourceTree = ""; }; - 8AC7C5361A3B5CEF00AA5548 /* ANAdWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdWebViewController.h; sourceTree = ""; }; - 8AC7C5371A3B5CEF00AA5548 /* ANAdWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdWebViewController.m; sourceTree = ""; }; 8AD5154019D214CA002E53D6 /* libANSDKAmazonAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKAmazonAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; 8AD5155519D216E6002E53D6 /* ANAdAdapterBannerAmazon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerAmazon.h; sourceTree = ""; }; 8AD5155619D216E6002E53D6 /* ANAdAdapterBannerAmazon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerAmazon.m; sourceTree = ""; }; @@ -792,41 +838,6 @@ 8AD5156019D21706002E53D6 /* Amazon.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Amazon.pch; sourceTree = ""; }; 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = appnexus_logo_icon.png; sourceTree = ""; }; 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "appnexus_logo_icon@2x.png"; sourceTree = ""; }; - 8AD6189E1981C11F00AC0780 /* ANAdFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdFetcher.h; sourceTree = ""; }; - 8AD6189F1981C11F00AC0780 /* ANAdFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdFetcher.m; sourceTree = ""; }; - 8AD618A01981C11F00AC0780 /* ANAdRequestUrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdRequestUrl.h; sourceTree = ""; }; - 8AD618A11981C11F00AC0780 /* ANAdRequestUrl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdRequestUrl.m; sourceTree = ""; }; - 8AD618A41981C11F00AC0780 /* ANAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdView.m; sourceTree = ""; }; - 8AD618A51981C11F00AC0780 /* ANAdViewInternalDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdViewInternalDelegate.h; sourceTree = ""; }; - 8AD618A81981C11F00AC0780 /* ANANJAMImplementation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANANJAMImplementation.h; sourceTree = ""; }; - 8AD618A91981C11F00AC0780 /* ANANJAMImplementation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANANJAMImplementation.m; sourceTree = ""; }; - 8AD618AA1981C11F00AC0780 /* ANBannerAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANBannerAdView.m; sourceTree = ""; }; - 8AD618AC1981C11F00AC0780 /* ANBrowserViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBrowserViewController.h; sourceTree = ""; }; - 8AD618AD1981C11F00AC0780 /* ANBrowserViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANBrowserViewController.m; sourceTree = ""; }; - 8AD618AE1981C11F00AC0780 /* ANClickOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANClickOverlayView.h; sourceTree = ""; }; - 8AD618AF1981C11F00AC0780 /* ANClickOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANClickOverlayView.m; sourceTree = ""; }; - 8AD618B01981C11F00AC0780 /* ANGlobal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGlobal.h; sourceTree = ""; }; - 8AD618B11981C11F00AC0780 /* ANGlobal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANGlobal.m; sourceTree = ""; }; - 8AD618B21981C11F00AC0780 /* ANInterstitialAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInterstitialAd.m; sourceTree = ""; }; - 8AD618B31981C11F00AC0780 /* ANInterstitialAdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAdViewController.h; sourceTree = ""; }; - 8AD618B41981C11F00AC0780 /* ANInterstitialAdViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInterstitialAdViewController.m; sourceTree = ""; }; - 8AD618B51981C11F00AC0780 /* ANLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLocation.m; sourceTree = ""; }; - 8AD618B61981C11F00AC0780 /* ANLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogging.h; sourceTree = ""; }; - 8AD618B71981C11F00AC0780 /* ANLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLogging.m; sourceTree = ""; }; - 8AD618B81981C11F00AC0780 /* ANLogManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLogManager.m; sourceTree = ""; }; - 8AD618B91981C11F00AC0780 /* ANMediatedAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediatedAd.h; sourceTree = ""; }; - 8AD618BA1981C11F00AC0780 /* ANMediatedAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediatedAd.m; sourceTree = ""; }; - 8AD618BB1981C11F00AC0780 /* ANMediationAdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediationAdViewController.h; sourceTree = ""; }; - 8AD618BC1981C11F00AC0780 /* ANMediationAdViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediationAdViewController.m; sourceTree = ""; }; - 8AD618BD1981C11F00AC0780 /* ANMediationContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediationContainerView.h; sourceTree = ""; }; - 8AD618BE1981C11F00AC0780 /* ANMediationContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediationContainerView.m; sourceTree = ""; }; - 8AD618C21981C11F00AC0780 /* ANPBBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANPBBuffer.h; sourceTree = ""; }; - 8AD618C31981C11F00AC0780 /* ANPBBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANPBBuffer.m; sourceTree = ""; }; - 8AD618C41981C11F00AC0780 /* ANPBContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANPBContainerView.h; sourceTree = ""; }; - 8AD618C51981C11F00AC0780 /* ANPBContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANPBContainerView.m; sourceTree = ""; }; - 8AD618C61981C11F00AC0780 /* ANReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANReachability.h; sourceTree = ""; }; - 8AD618C71981C11F00AC0780 /* ANReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANReachability.m; sourceTree = ""; }; - 8AD618C81981C11F00AC0780 /* ANTargetingParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANTargetingParameters.m; sourceTree = ""; }; 8AD7C4D81AD2FABA0049C997 /* libANSDKVungleAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKVungleAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; 8AD7C4D91AD2FB430049C997 /* ANAdAdapterInterstitialVungle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialVungle.h; sourceTree = ""; }; 8AD7C4DA1AD2FB430049C997 /* ANAdAdapterInterstitialVungle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialVungle.m; sourceTree = ""; }; @@ -888,12 +899,6 @@ 8AEA6BE91A0BF43E009DB71B /* ANNativeAdDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANNativeAdDelegate.h; path = native/ANNativeAdDelegate.h; sourceTree = ""; }; 8AF3C19A1A361CC30018FB6A /* ANNativeImpressionTrackerInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANNativeImpressionTrackerInfo.h; sourceTree = ""; }; 8AF3C19B1A361CC30018FB6A /* ANNativeImpressionTrackerInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANNativeImpressionTrackerInfo.m; sourceTree = ""; }; - 8AF5A8791ACC60D50089C529 /* ANAdFetcherResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdFetcherResponse.h; sourceTree = ""; }; - 8AF5A87A1ACC60D50089C529 /* ANAdFetcherResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdFetcherResponse.m; sourceTree = ""; }; - 8AF5A87B1ACC60D50089C529 /* ANAdServerResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdServerResponse.h; sourceTree = ""; }; - 8AF5A87C1ACC60D50089C529 /* ANAdServerResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdServerResponse.m; sourceTree = ""; }; - 8AF5A87D1ACC60D50089C529 /* ANStandardAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANStandardAd.h; sourceTree = ""; }; - 8AF5A87E1ACC60D50089C529 /* ANStandardAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANStandardAd.m; sourceTree = ""; }; 8AFC045E1A2E74AC00BEA485 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 8AFC04601A2E74C800BEA485 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 8AFC04621A2E74F500BEA485 /* EventKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKit.framework; path = System/Library/Frameworks/EventKit.framework; sourceTree = SDKROOT; }; @@ -1151,6 +1156,191 @@ path = VdopiaSDK; sourceTree = ""; }; + 8A73F9B01BD6B34D00D18188 /* internal */ = { + isa = PBXGroup; + children = ( + 8A73F9B11BD6B34D00D18188 /* ANAdFetcher.h */, + 8A73F9B21BD6B34D00D18188 /* ANAdFetcher.m */, + 8A73F9B31BD6B34D00D18188 /* ANAdFetcherResponse.h */, + 8A73F9B41BD6B34D00D18188 /* ANAdFetcherResponse.m */, + 8A73F9B51BD6B34D00D18188 /* ANAdRequestUrl.h */, + 8A73F9B61BD6B34D00D18188 /* ANAdRequestUrl.m */, + 8A73F9B71BD6B34D00D18188 /* ANAdServerResponse.h */, + 8A73F9B81BD6B34D00D18188 /* ANAdServerResponse.m */, + 8A73F9B91BD6B34D00D18188 /* ANAdView.m */, + 8A73F9BA1BD6B34D00D18188 /* ANAdViewInternalDelegate.h */, + 8A73F9BB1BD6B34D00D18188 /* ANAdWebViewController.h */, + 8A73F9BC1BD6B34D00D18188 /* ANAdWebViewController.m */, + 8A73F9BD1BD6B34D00D18188 /* ANANJAMImplementation.h */, + 8A73F9BE1BD6B34D00D18188 /* ANANJAMImplementation.m */, + 8A73F9BF1BD6B34D00D18188 /* ANBannerAdView.m */, + 8A73F9C01BD6B34D00D18188 /* ANBrowserViewController.h */, + 8A73F9C11BD6B34D00D18188 /* ANBrowserViewController.m */, + 8A73F9C21BD6B34D00D18188 /* ANCircularAnimationView.h */, + 8A73F9C31BD6B34D00D18188 /* ANCircularAnimationView.m */, + 8A73F9C41BD6B34D00D18188 /* ANClickOverlayView.h */, + 8A73F9C51BD6B34D00D18188 /* ANClickOverlayView.m */, + 8A73F9C61BD6B34D00D18188 /* ANGlobal.h */, + 8A73F9C71BD6B34D00D18188 /* ANGlobal.m */, + 8A73F9C81BD6B34D00D18188 /* ANInterstitialAd.m */, + 8A73F9C91BD6B34D00D18188 /* ANInterstitialAdViewController.h */, + 8A73F9CA1BD6B34D00D18188 /* ANInterstitialAdViewController.m */, + 8A73F9CB1BD6B34D00D18188 /* ANLocation.m */, + 8A73F9CC1BD6B34D00D18188 /* ANLogging.h */, + 8A73F9CD1BD6B34D00D18188 /* ANLogging.m */, + 8A73F9CE1BD6B34D00D18188 /* ANLogManager.m */, + 8A73F9CF1BD6B34D00D18188 /* ANMediatedAd.h */, + 8A73F9D01BD6B34D00D18188 /* ANMediatedAd.m */, + 8A73F9D11BD6B34D00D18188 /* ANMediationAdViewController.h */, + 8A73F9D21BD6B34D00D18188 /* ANMediationAdViewController.m */, + 8A73F9D31BD6B34D00D18188 /* ANMediationContainerView.h */, + 8A73F9D41BD6B34D00D18188 /* ANMediationContainerView.m */, + 8A73F9D51BD6B34D00D18188 /* ANOpenInExternalBrowserActivity.h */, + 8A73F9D61BD6B34D00D18188 /* ANOpenInExternalBrowserActivity.m */, + 8A73F9D71BD6B34D00D18188 /* ANPBBuffer.h */, + 8A73F9D81BD6B34D00D18188 /* ANPBBuffer.m */, + 8A73F9D91BD6B34D00D18188 /* ANPBContainerView.h */, + 8A73F9DA1BD6B34D00D18188 /* ANPBContainerView.m */, + 8A73F9DB1BD6B34D00D18188 /* ANPlayerView.h */, + 8A73F9DC1BD6B34D00D18188 /* ANPlayerView.m */, + 8A73F9DD1BD6B34D00D18188 /* ANReachability.h */, + 8A73F9DE1BD6B34D00D18188 /* ANReachability.m */, + 8A73F9DF1BD6B34D00D18188 /* ANStandardAd.h */, + 8A73F9E01BD6B34D00D18188 /* ANStandardAd.m */, + 8A73F9E11BD6B34D00D18188 /* ANTargetingParameters.m */, + 8A73F9E21BD6B34D00D18188 /* ANVideoAd.h */, + 8A73F9E31BD6B34D00D18188 /* ANVideoAd.m */, + 8A73F9E41BD6B34D00D18188 /* ANVideoPlayerViewController.h */, + 8A73F9E51BD6B34D00D18188 /* ANVideoPlayerViewController.m */, + 8A73F9E61BD6B34D00D18188 /* ANVolumeButtonView.h */, + 8A73F9E71BD6B34D00D18188 /* ANVolumeButtonView.m */, + 8A73F9E81BD6B34D00D18188 /* MRAID */, + ); + path = internal; + sourceTree = ""; + }; + 8A73F9E81BD6B34D00D18188 /* MRAID */ = { + isa = PBXGroup; + children = ( + 8A73F9E91BD6B34D00D18188 /* ANMRAIDCalendarManager.h */, + 8A73F9EA1BD6B34D00D18188 /* ANMRAIDCalendarManager.m */, + 8A73F9EB1BD6B34D00D18188 /* ANMRAIDContainerView.h */, + 8A73F9EC1BD6B34D00D18188 /* ANMRAIDContainerView.m */, + 8A73F9ED1BD6B34D00D18188 /* ANMRAIDExpandProperties.h */, + 8A73F9EE1BD6B34D00D18188 /* ANMRAIDExpandProperties.m */, + 8A73F9EF1BD6B34D00D18188 /* ANMRAIDExpandViewController.h */, + 8A73F9F01BD6B34D00D18188 /* ANMRAIDExpandViewController.m */, + 8A73F9F11BD6B34D00D18188 /* ANMRAIDJavascriptUtil.h */, + 8A73F9F21BD6B34D00D18188 /* ANMRAIDJavascriptUtil.m */, + 8A73F9F31BD6B34D00D18188 /* ANMRAIDOrientationProperties.h */, + 8A73F9F41BD6B34D00D18188 /* ANMRAIDOrientationProperties.m */, + 8A73F9F51BD6B34D00D18188 /* ANMRAIDResizeProperties.h */, + 8A73F9F61BD6B34D00D18188 /* ANMRAIDResizeProperties.m */, + 8A73F9F71BD6B34D00D18188 /* ANMRAIDResizeView.h */, + 8A73F9F81BD6B34D00D18188 /* ANMRAIDResizeView.m */, + 8A73F9F91BD6B34D00D18188 /* ANMRAIDResizeViewManager.h */, + 8A73F9FA1BD6B34D00D18188 /* ANMRAIDResizeViewManager.m */, + 8A73F9FB1BD6B34D00D18188 /* ANMRAIDUtil.h */, + 8A73F9FC1BD6B34D00D18188 /* ANMRAIDUtil.m */, + ); + path = MRAID; + sourceTree = ""; + }; + 8A73F9FD1BD6B34D00D18188 /* VastDataModel */ = { + isa = PBXGroup; + children = ( + 8A73F9FE1BD6B34D00D18188 /* ANInLine.h */, + 8A73F9FF1BD6B34D00D18188 /* ANInLine.m */, + 8A73FA001BD6B34D00D18188 /* ANVast.h */, + 8A73FA011BD6B34D00D18188 /* ANVast.m */, + 8A73FA021BD6B34D00D18188 /* ANVastDataModelInterface.h */, + 8A73FA031BD6B34D00D18188 /* ANVastDataModelInterface.m */, + 8A73FA041BD6B34D00D18188 /* ANWrapper.h */, + 8A73FA051BD6B34D00D18188 /* ANWrapper.m */, + 8A73FA061BD6B34D00D18188 /* Inline */, + ); + path = VastDataModel; + sourceTree = ""; + }; + 8A73FA061BD6B34D00D18188 /* Inline */ = { + isa = PBXGroup; + children = ( + 8A73FA071BD6B34D00D18188 /* ANAdSystem.h */, + 8A73FA081BD6B34D00D18188 /* ANAdSystem.m */, + 8A73FA091BD6B34D00D18188 /* ANImpression.h */, + 8A73FA0A1BD6B34D00D18188 /* ANImpression.m */, + 8A73FA0B1BD6B34D00D18188 /* Creatives */, + ); + path = Inline; + sourceTree = ""; + }; + 8A73FA0B1BD6B34D00D18188 /* Creatives */ = { + isa = PBXGroup; + children = ( + 8A73FA0C1BD6B34D00D18188 /* ANCreative.h */, + 8A73FA0D1BD6B34D00D18188 /* ANCreative.m */, + 8A73FA0E1BD6B34D00D18188 /* ANLinear.h */, + 8A73FA0F1BD6B34D00D18188 /* ANLinear.m */, + 8A73FA101BD6B34D00D18188 /* ANNonLinearAds.h */, + 8A73FA111BD6B34D00D18188 /* ANNonLinearAds.m */, + 8A73FA121BD6B34D00D18188 /* ANStaticResource.h */, + 8A73FA131BD6B34D00D18188 /* ANStaticResource.m */, + 8A73FA141BD6B34D00D18188 /* ANTracking.h */, + 8A73FA151BD6B34D00D18188 /* ANTracking.m */, + 8A73FA161BD6B34D00D18188 /* CompanionAds */, + 8A73FA191BD6B34D00D18188 /* Linear */, + 8A73FA221BD6B34D00D18188 /* NonLinearAds */, + ); + path = Creatives; + sourceTree = ""; + }; + 8A73FA161BD6B34D00D18188 /* CompanionAds */ = { + isa = PBXGroup; + children = ( + 8A73FA171BD6B34D00D18188 /* AnCompanion.h */, + 8A73FA181BD6B34D00D18188 /* AnCompanion.m */, + ); + path = CompanionAds; + sourceTree = ""; + }; + 8A73FA191BD6B34D00D18188 /* Linear */ = { + isa = PBXGroup; + children = ( + 8A73FA1A1BD6B34D00D18188 /* ANVideoClicks.h */, + 8A73FA1B1BD6B34D00D18188 /* ANVideoClicks.m */, + 8A73FA1C1BD6B34D00D18188 /* MediaFiles */, + 8A73FA1F1BD6B34D00D18188 /* VideoClicks */, + ); + path = Linear; + sourceTree = ""; + }; + 8A73FA1C1BD6B34D00D18188 /* MediaFiles */ = { + isa = PBXGroup; + children = ( + 8A73FA1D1BD6B34D00D18188 /* ANMediaFile.h */, + 8A73FA1E1BD6B34D00D18188 /* ANMediaFile.m */, + ); + path = MediaFiles; + sourceTree = ""; + }; + 8A73FA1F1BD6B34D00D18188 /* VideoClicks */ = { + isa = PBXGroup; + children = ( + 8A73FA201BD6B34D00D18188 /* ANCustomClick.h */, + 8A73FA211BD6B34D00D18188 /* ANCustomClick.m */, + ); + path = VideoClicks; + sourceTree = ""; + }; + 8A73FA221BD6B34D00D18188 /* NonLinearAds */ = { + isa = PBXGroup; + children = ( + 8A73FA231BD6B34D00D18188 /* ANNonLinear.h */, + 8A73FA241BD6B34D00D18188 /* ANNonLinear.m */, + ); + path = NonLinearAds; + sourceTree = ""; + }; 8A944DDD19D5AF8C007AAAB0 /* AmazonSDK */ = { isa = PBXGroup; children = ( @@ -1413,6 +1603,17 @@ path = InMobiSDK; sourceTree = ""; }; + 8AAD5D111BD6C0E300B4CD53 /* XMLParsing */ = { + isa = PBXGroup; + children = ( + 8AAD5D141BD6C0E300B4CD53 /* ANXML.h */, + 8AAD5D151BD6C0E300B4CD53 /* ANXML.m */, + 8AAD5D121BD6C0E300B4CD53 /* ANXML+HTTP.h */, + 8AAD5D131BD6C0E300B4CD53 /* ANXML+HTTP.m */, + ); + path = XMLParsing; + sourceTree = ""; + }; 8AB8761B1A0994310022D9A5 /* internal */ = { isa = PBXGroup; children = ( @@ -1442,33 +1643,6 @@ path = native/internal; sourceTree = ""; }; - 8AC65F361A40DE63006BCF39 /* MRAID */ = { - isa = PBXGroup; - children = ( - 8AC65F371A40DE63006BCF39 /* ANMRAIDCalendarManager.h */, - 8AC65F381A40DE63006BCF39 /* ANMRAIDCalendarManager.m */, - 8AC65F391A40DE63006BCF39 /* ANMRAIDContainerView.h */, - 8AC65F3A1A40DE63006BCF39 /* ANMRAIDContainerView.m */, - 8AC65F3B1A40DE63006BCF39 /* ANMRAIDExpandProperties.h */, - 8AC65F3C1A40DE63006BCF39 /* ANMRAIDExpandProperties.m */, - 8AC65F3D1A40DE63006BCF39 /* ANMRAIDExpandViewController.h */, - 8AC65F3E1A40DE63006BCF39 /* ANMRAIDExpandViewController.m */, - 8AC65F3F1A40DE63006BCF39 /* ANMRAIDJavascriptUtil.h */, - 8AC65F401A40DE63006BCF39 /* ANMRAIDJavascriptUtil.m */, - 8AC65F411A40DE63006BCF39 /* ANMRAIDOrientationProperties.h */, - 8AC65F421A40DE63006BCF39 /* ANMRAIDOrientationProperties.m */, - 8AC65F431A40DE63006BCF39 /* ANMRAIDResizeProperties.h */, - 8AC65F441A40DE63006BCF39 /* ANMRAIDResizeProperties.m */, - 8AC65F451A40DE63006BCF39 /* ANMRAIDResizeView.h */, - 8AC65F461A40DE63006BCF39 /* ANMRAIDResizeView.m */, - 8AC65F471A40DE63006BCF39 /* ANMRAIDResizeViewManager.h */, - 8AC65F481A40DE63006BCF39 /* ANMRAIDResizeViewManager.m */, - 8AC65F491A40DE63006BCF39 /* ANMRAIDUtil.h */, - 8AC65F4A1A40DE63006BCF39 /* ANMRAIDUtil.m */, - ); - path = MRAID; - sourceTree = ""; - }; 8AD5155119D216E6002E53D6 /* Amazon */ = { isa = PBXGroup; children = ( @@ -1486,59 +1660,6 @@ path = ../mediation/mediatedviews/Amazon; sourceTree = ""; }; - 8AD6189D1981C11F00AC0780 /* internal */ = { - isa = PBXGroup; - children = ( - 8AD6189E1981C11F00AC0780 /* ANAdFetcher.h */, - 8AD6189F1981C11F00AC0780 /* ANAdFetcher.m */, - 8AF5A8791ACC60D50089C529 /* ANAdFetcherResponse.h */, - 8AF5A87A1ACC60D50089C529 /* ANAdFetcherResponse.m */, - 8AD618A01981C11F00AC0780 /* ANAdRequestUrl.h */, - 8AD618A11981C11F00AC0780 /* ANAdRequestUrl.m */, - 8AF5A87B1ACC60D50089C529 /* ANAdServerResponse.h */, - 8AF5A87C1ACC60D50089C529 /* ANAdServerResponse.m */, - 8AD618A41981C11F00AC0780 /* ANAdView.m */, - 8AD618A51981C11F00AC0780 /* ANAdViewInternalDelegate.h */, - 8AC7C5361A3B5CEF00AA5548 /* ANAdWebViewController.h */, - 8AC7C5371A3B5CEF00AA5548 /* ANAdWebViewController.m */, - 8AD618A81981C11F00AC0780 /* ANANJAMImplementation.h */, - 8AD618A91981C11F00AC0780 /* ANANJAMImplementation.m */, - 8AD618AA1981C11F00AC0780 /* ANBannerAdView.m */, - 8AD618AC1981C11F00AC0780 /* ANBrowserViewController.h */, - 8AD618AD1981C11F00AC0780 /* ANBrowserViewController.m */, - 8AD618AE1981C11F00AC0780 /* ANClickOverlayView.h */, - 8AD618AF1981C11F00AC0780 /* ANClickOverlayView.m */, - 8AD618B01981C11F00AC0780 /* ANGlobal.h */, - 8AD618B11981C11F00AC0780 /* ANGlobal.m */, - 8AD618B21981C11F00AC0780 /* ANInterstitialAd.m */, - 8AD618B31981C11F00AC0780 /* ANInterstitialAdViewController.h */, - 8AD618B41981C11F00AC0780 /* ANInterstitialAdViewController.m */, - 8AD618B51981C11F00AC0780 /* ANLocation.m */, - 8AD618B61981C11F00AC0780 /* ANLogging.h */, - 8AD618B71981C11F00AC0780 /* ANLogging.m */, - 8AD618B81981C11F00AC0780 /* ANLogManager.m */, - 8AD618B91981C11F00AC0780 /* ANMediatedAd.h */, - 8AD618BA1981C11F00AC0780 /* ANMediatedAd.m */, - 8AD618BB1981C11F00AC0780 /* ANMediationAdViewController.h */, - 8AD618BC1981C11F00AC0780 /* ANMediationAdViewController.m */, - 8AD618BD1981C11F00AC0780 /* ANMediationContainerView.h */, - 8AD618BE1981C11F00AC0780 /* ANMediationContainerView.m */, - 8A2F48211A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.h */, - 8A2F48221A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.m */, - 8AD618C21981C11F00AC0780 /* ANPBBuffer.h */, - 8AD618C31981C11F00AC0780 /* ANPBBuffer.m */, - 8AD618C41981C11F00AC0780 /* ANPBContainerView.h */, - 8AD618C51981C11F00AC0780 /* ANPBContainerView.m */, - 8AD618C61981C11F00AC0780 /* ANReachability.h */, - 8AD618C71981C11F00AC0780 /* ANReachability.m */, - 8AF5A87D1ACC60D50089C529 /* ANStandardAd.h */, - 8AF5A87E1ACC60D50089C529 /* ANStandardAd.m */, - 8AD618C81981C11F00AC0780 /* ANTargetingParameters.m */, - 8AC65F361A40DE63006BCF39 /* MRAID */, - ); - path = internal; - sourceTree = ""; - }; 8AD7C4C51AD2FA0E0049C997 /* Vungle */ = { isa = PBXGroup; children = ( @@ -1775,9 +1896,11 @@ ECE4EA93194B768A0069D934 /* ANLogManager.h */, ECE4EA94194B768A0069D934 /* ANTargetingParameters.h */, ECE4EA95194B768A0069D934 /* Categories */, - 8AD6189D1981C11F00AC0780 /* internal */, + 8A73F9B01BD6B34D00D18188 /* internal */, 8A35B87919FEAAE30016C81F /* native */, ECE4EACA194B768A0069D934 /* Resources */, + 8A73F9FD1BD6B34D00D18188 /* VastDataModel */, + 8AAD5D111BD6C0E300B4CD53 /* XMLParsing */, ); name = ANSDK; path = ../sdk; @@ -1872,37 +1995,8 @@ 8A9AEDC81A1BF88200C58BDA /* NSTimer+ANCategory.h in Headers */, 8A9AEDC91A1BF88200C58BDA /* UIView+ANCategory.h in Headers */, 8A9AEDCA1A1BF88200C58BDA /* UIWebView+ANCategory.h in Headers */, - 8A9AEDCB1A1BF88200C58BDA /* ANAdFetcher.h in Headers */, - 8A9AEDCC1A1BF88200C58BDA /* ANAdRequestUrl.h in Headers */, - 8A9AEDCE1A1BF88200C58BDA /* ANAdViewInternalDelegate.h in Headers */, - 8A9AEDD01A1BF88200C58BDA /* ANANJAMImplementation.h in Headers */, - 8A9AEDD21A1BF88200C58BDA /* ANBrowserViewController.h in Headers */, - 8AF5A87F1ACC60D50089C529 /* ANAdFetcherResponse.h in Headers */, - 8AF5A8851ACC60D50089C529 /* ANStandardAd.h in Headers */, - 8A9AEDD31A1BF88200C58BDA /* ANClickOverlayView.h in Headers */, - 8A9AEDD41A1BF88200C58BDA /* ANGlobal.h in Headers */, - 8A9AEDD51A1BF88200C58BDA /* ANInterstitialAdViewController.h in Headers */, - 8A9AEDD61A1BF88200C58BDA /* ANLogging.h in Headers */, - 8A9AEDD71A1BF88200C58BDA /* ANMediatedAd.h in Headers */, - 8A9AEDD81A1BF88200C58BDA /* ANMediationAdViewController.h in Headers */, - 8A9AEDD91A1BF88200C58BDA /* ANMediationContainerView.h in Headers */, 8A84E42E1A25350800C60EAB /* ANNativeAdResponse+PrivateMethods.h in Headers */, - 8AC65F611A40DE74006BCF39 /* ANMRAIDContainerView.h in Headers */, - 8AC65F711A40DE74006BCF39 /* ANMRAIDUtil.h in Headers */, - 8AF5A8821ACC60D50089C529 /* ANAdServerResponse.h in Headers */, - 8AC65F631A40DE74006BCF39 /* ANMRAIDExpandProperties.h in Headers */, - 8AC65F6B1A40DE74006BCF39 /* ANMRAIDResizeProperties.h in Headers */, - 8AC65F6F1A40DE74006BCF39 /* ANMRAIDResizeViewManager.h in Headers */, 8AE5E11E1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h in Headers */, - 8AC65F5F1A40DE74006BCF39 /* ANMRAIDCalendarManager.h in Headers */, - 8AC65F691A40DE74006BCF39 /* ANMRAIDOrientationProperties.h in Headers */, - 8A2F48241A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.h in Headers */, - 8AC65F671A40DE74006BCF39 /* ANMRAIDJavascriptUtil.h in Headers */, - 8AC65F651A40DE74006BCF39 /* ANMRAIDExpandViewController.h in Headers */, - 8AC65F6D1A40DE74006BCF39 /* ANMRAIDResizeView.h in Headers */, - 8A9AEDDC1A1BF88200C58BDA /* ANPBBuffer.h in Headers */, - 8A9AEDDD1A1BF88300C58BDA /* ANPBContainerView.h in Headers */, - 8A9AEDDE1A1BF88300C58BDA /* ANReachability.h in Headers */, 8A9AEDE01A1BF88300C58BDA /* ANNativeAdFetcher.h in Headers */, 8A9AEDE11A1BF88300C58BDA /* ANNativeAdImageCache.h in Headers */, 8A9AEDE31A1BF88300C58BDA /* ANNativeAdRequestUrlBuilder.h in Headers */, @@ -2481,46 +2575,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8AE7AD9F1A7AC4F6009E2F2F /* ANAdWebViewController.m in Sources */, 8A9AEDE81A1BF99D00C58BDA /* ANBannerAdView+ANContentViewTransitions.m in Sources */, 8A9AEDE91A1BF99D00C58BDA /* NSString+ANCategory.m in Sources */, 8A9AEDEA1A1BF99D00C58BDA /* NSTimer+ANCategory.m in Sources */, - 8AC65F6E1A40DE74006BCF39 /* ANMRAIDResizeView.m in Sources */, 8A9AEDEB1A1BF99D00C58BDA /* UIView+ANCategory.m in Sources */, - 8A2F48261A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.m in Sources */, 8A9AEDEC1A1BF99D00C58BDA /* UIWebView+ANCategory.m in Sources */, - 8A9AEDED1A1BF99D00C58BDA /* ANAdFetcher.m in Sources */, 8A598F8D1A1EA061009BA879 /* ANNativeStandardAdResponse.m in Sources */, - 8A9AEDEE1A1BF99D00C58BDA /* ANAdRequestUrl.m in Sources */, - 8AC65F601A40DE74006BCF39 /* ANMRAIDCalendarManager.m in Sources */, - 8A9AEDF01A1BF99D00C58BDA /* ANAdView.m in Sources */, - 8AC65F721A40DE74006BCF39 /* ANMRAIDUtil.m in Sources */, - 8AC65F6C1A40DE74006BCF39 /* ANMRAIDResizeProperties.m in Sources */, - 8A9AEDF21A1BF99D00C58BDA /* ANANJAMImplementation.m in Sources */, - 8AF5A8811ACC60D50089C529 /* ANAdFetcherResponse.m in Sources */, - 8AC65F6A1A40DE74006BCF39 /* ANMRAIDOrientationProperties.m in Sources */, - 8A9AEDF31A1BF99D00C58BDA /* ANBannerAdView.m in Sources */, - 8A9AEDF41A1BF99D00C58BDA /* ANBrowserViewController.m in Sources */, - 8AC65F641A40DE74006BCF39 /* ANMRAIDExpandProperties.m in Sources */, 8AF3C1A01A3631490018FB6A /* ANNativeImpressionTrackerInfo.m in Sources */, - 8A9AEDF51A1BF99D00C58BDA /* ANClickOverlayView.m in Sources */, - 8A9AEDF61A1BF99D00C58BDA /* ANGlobal.m in Sources */, - 8A9AEDF71A1BF99D00C58BDA /* ANInterstitialAd.m in Sources */, - 8A9AEDF81A1BF99D00C58BDA /* ANInterstitialAdViewController.m in Sources */, - 8A9AEDF91A1BF99D00C58BDA /* ANLocation.m in Sources */, - 8AC65F661A40DE74006BCF39 /* ANMRAIDExpandViewController.m in Sources */, - 8AC65F681A40DE74006BCF39 /* ANMRAIDJavascriptUtil.m in Sources */, - 8A9AEDFA1A1BF99D00C58BDA /* ANLogging.m in Sources */, - 8A9AEDFB1A1BF99D00C58BDA /* ANLogManager.m in Sources */, - 8AC65F701A40DE74006BCF39 /* ANMRAIDResizeViewManager.m in Sources */, - 8A9AEDFC1A1BF99D00C58BDA /* ANMediatedAd.m in Sources */, - 8A9AEDFD1A1BF99D00C58BDA /* ANMediationAdViewController.m in Sources */, - 8AF5A8871ACC60D50089C529 /* ANStandardAd.m in Sources */, - 8A9AEDFE1A1BF99D00C58BDA /* ANMediationContainerView.m in Sources */, - 8A9AEE001A1BF99D00C58BDA /* ANPBBuffer.m in Sources */, - 8A9AEE011A1BF99D00C58BDA /* ANPBContainerView.m in Sources */, - 8A9AEE021A1BF99D00C58BDA /* ANReachability.m in Sources */, - 8A9AEE031A1BF99D00C58BDA /* ANTargetingParameters.m in Sources */, 8A9AEE051A1BF99D00C58BDA /* ANNativeAdFetcher.m in Sources */, 8A9AEE061A1BF99D00C58BDA /* ANNativeAdImageCache.m in Sources */, 8AF3C19F1A3631460018FB6A /* ANNativeImpressionTrackerManager.m in Sources */, @@ -2531,8 +2592,6 @@ 8A9AEE0D1A1BF99D00C58BDA /* ANNativeMediatedAdController.m in Sources */, 8A9AEE0E1A1BF99D00C58BDA /* ANNativeMediatedAdResponse.m in Sources */, 8A9AEE0F1A1BF99D00C58BDA /* UIView+ANNativeAdCategory.m in Sources */, - 8AC65F621A40DE74006BCF39 /* ANMRAIDContainerView.m in Sources */, - 8AF5A8841ACC60D50089C529 /* ANAdServerResponse.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2640,58 +2699,81 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8AD618D51981C11F00AC0780 /* ANInterstitialAd.m in Sources */, - 8AD618DA1981C11F00AC0780 /* ANMediatedAd.m in Sources */, - 8AC65F5A1A40DE63006BCF39 /* ANMRAIDResizeView.m in Sources */, - 8AC65F561A40DE63006BCF39 /* ANMRAIDOrientationProperties.m in Sources */, - 8AC65F501A40DE63006BCF39 /* ANMRAIDExpandProperties.m in Sources */, - 8A2F48251A2E255600B0EA05 /* ANOpenInExternalBrowserActivity.m in Sources */, + 8A73FA5A1BD6B34E00D18188 /* ANVast.m in Sources */, + 8A73FA651BD6B34E00D18188 /* ANVideoClicks.m in Sources */, ECE4EADA194B768A0069D934 /* NSString+ANCategory.m in Sources */, - 8AD618E11981C11F00AC0780 /* ANTargetingParameters.m in Sources */, - 8AC65F5C1A40DE63006BCF39 /* ANMRAIDResizeViewManager.m in Sources */, + 8A73FA5B1BD6B34E00D18188 /* ANVastDataModelInterface.m in Sources */, + 8A73FA3B1BD6B34E00D18188 /* ANClickOverlayView.m in Sources */, + 8A73FA4D1BD6B34E00D18188 /* ANVideoPlayerViewController.m in Sources */, + 8A73FA631BD6B34E00D18188 /* ANTracking.m in Sources */, 8A598F8C1A1EA061009BA879 /* ANNativeStandardAdResponse.m in Sources */, - 8AD618CB1981C11F00AC0780 /* ANAdFetcher.m in Sources */, - 8AD618D61981C11F00AC0780 /* ANInterstitialAdViewController.m in Sources */, + 8A73FA4A1BD6B34E00D18188 /* ANStandardAd.m in Sources */, + 8A73FA381BD6B34E00D18188 /* ANBannerAdView.m in Sources */, + 8A73FA451BD6B34E00D18188 /* ANOpenInExternalBrowserActivity.m in Sources */, 8A82FDF61A30F36C00A267A0 /* ANNativeImpressionTrackerManager.m in Sources */, + 8A73FA5C1BD6B34E00D18188 /* ANWrapper.m in Sources */, + 8A73FA331BD6B34E00D18188 /* ANAdRequestUrl.m in Sources */, + 8A73FA351BD6B34E00D18188 /* ANAdView.m in Sources */, + 8A73FA421BD6B34E00D18188 /* ANMediatedAd.m in Sources */, 8A6385E31A14336000280054 /* ANNativeAdRequestUrlBuilder.m in Sources */, - 8AC65F521A40DE63006BCF39 /* ANMRAIDExpandViewController.m in Sources */, + 8A73FA461BD6B34E00D18188 /* ANPBBuffer.m in Sources */, + 8A73FA4E1BD6B34E00D18188 /* ANVolumeButtonView.m in Sources */, + 8A73FA3E1BD6B34E00D18188 /* ANInterstitialAdViewController.m in Sources */, + 8A73FA371BD6B34E00D18188 /* ANANJAMImplementation.m in Sources */, + 8A73FA521BD6B34E00D18188 /* ANMRAIDExpandViewController.m in Sources */, + 8A73FA391BD6B34E00D18188 /* ANBrowserViewController.m in Sources */, + 8A73FA601BD6B34E00D18188 /* ANLinear.m in Sources */, + 8A73FA661BD6B34E00D18188 /* ANMediaFile.m in Sources */, ECE4EADB194B768A0069D934 /* NSTimer+ANCategory.m in Sources */, - 8AF5A8801ACC60D50089C529 /* ANAdFetcherResponse.m in Sources */, - 8AD618D01981C11F00AC0780 /* ANANJAMImplementation.m in Sources */, - 8AD618DC1981C11F00AC0780 /* ANMediationContainerView.m in Sources */, + 8A73FA3A1BD6B34E00D18188 /* ANCircularAnimationView.m in Sources */, + 8A73FA681BD6B34E00D18188 /* ANNonLinear.m in Sources */, + 8A73FA501BD6B34E00D18188 /* ANMRAIDContainerView.m in Sources */, 8A6385E61A14336000280054 /* ANNativeMediatedAdController.m in Sources */, 8A6385E11A14336000280054 /* ANNativeAdStarRating.m in Sources */, - 8AC65F541A40DE63006BCF39 /* ANMRAIDJavascriptUtil.m in Sources */, - 8AD618DE1981C11F00AC0780 /* ANPBBuffer.m in Sources */, - 8AD618D21981C11F00AC0780 /* ANBrowserViewController.m in Sources */, - 8AC7C5391A3B5CEF00AA5548 /* ANAdWebViewController.m in Sources */, - 8AD618CE1981C11F00AC0780 /* ANAdView.m in Sources */, - 8AD618D81981C11F00AC0780 /* ANLogging.m in Sources */, - 8AD618CC1981C11F00AC0780 /* ANAdRequestUrl.m in Sources */, - 8AD618DB1981C11F00AC0780 /* ANMediationAdViewController.m in Sources */, - 8AD618D11981C11F00AC0780 /* ANBannerAdView.m in Sources */, - 8AD618D31981C11F00AC0780 /* ANClickOverlayView.m in Sources */, - 8AD618DF1981C11F00AC0780 /* ANPBContainerView.m in Sources */, + 8A73FA561BD6B34E00D18188 /* ANMRAIDResizeView.m in Sources */, + 8A73FA441BD6B34E00D18188 /* ANMediationContainerView.m in Sources */, + 8A73FA3F1BD6B34E00D18188 /* ANLocation.m in Sources */, 8AF3C19D1A361CC30018FB6A /* ANNativeImpressionTrackerInfo.m in Sources */, + 8A73FA3D1BD6B34E00D18188 /* ANInterstitialAd.m in Sources */, + 8A73FA551BD6B34E00D18188 /* ANMRAIDResizeProperties.m in Sources */, 8A3EC16E19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.m in Sources */, - 8AF5A8861ACC60D50089C529 /* ANStandardAd.m in Sources */, + 8A73FA611BD6B34E00D18188 /* ANNonLinearAds.m in Sources */, + 8A73FA481BD6B34E00D18188 /* ANPlayerView.m in Sources */, + 8A73FA311BD6B34E00D18188 /* ANAdFetcher.m in Sources */, + 8A73FA581BD6B34E00D18188 /* ANMRAIDUtil.m in Sources */, 8A6385E91A14336000280054 /* UIView+ANNativeAdCategory.m in Sources */, + 8A73FA571BD6B34E00D18188 /* ANMRAIDResizeViewManager.m in Sources */, 8A6385E21A14336000280054 /* ANNativeAdRequest.m in Sources */, - 8AC65F581A40DE63006BCF39 /* ANMRAIDResizeProperties.m in Sources */, + 8A73FA511BD6B34E00D18188 /* ANMRAIDExpandProperties.m in Sources */, + 8A73FA491BD6B34E00D18188 /* ANReachability.m in Sources */, + 8A73FA5F1BD6B34E00D18188 /* ANCreative.m in Sources */, + 8AAD5D161BD6C0E300B4CD53 /* ANXML+HTTP.m in Sources */, ECE4EADD194B768A0069D934 /* UIWebView+ANCategory.m in Sources */, - 8AD618E01981C11F00AC0780 /* ANReachability.m in Sources */, + 8A73FA3C1BD6B34E00D18188 /* ANGlobal.m in Sources */, + 8A73FA431BD6B34E00D18188 /* ANMediationAdViewController.m in Sources */, + 8A73FA471BD6B34E00D18188 /* ANPBContainerView.m in Sources */, 8A6385E01A14336000280054 /* ANNativeAdImageCache.m in Sources */, - 8AC65F4C1A40DE63006BCF39 /* ANMRAIDCalendarManager.m in Sources */, + 8A73FA5D1BD6B34E00D18188 /* ANAdSystem.m in Sources */, + 8A73FA4F1BD6B34E00D18188 /* ANMRAIDCalendarManager.m in Sources */, ECE4EADC194B768A0069D934 /* UIView+ANCategory.m in Sources */, - 8AC65F5E1A40DE63006BCF39 /* ANMRAIDUtil.m in Sources */, - 8AC65F4E1A40DE63006BCF39 /* ANMRAIDContainerView.m in Sources */, + 8A73FA641BD6B34E00D18188 /* AnCompanion.m in Sources */, + 8A73FA321BD6B34E00D18188 /* ANAdFetcherResponse.m in Sources */, + 8A73FA341BD6B34E00D18188 /* ANAdServerResponse.m in Sources */, + 8AAD5D171BD6C0E300B4CD53 /* ANXML.m in Sources */, + 8A73FA4C1BD6B34E00D18188 /* ANVideoAd.m in Sources */, + 8A73FA401BD6B34E00D18188 /* ANLogging.m in Sources */, + 8A73FA4B1BD6B34E00D18188 /* ANTargetingParameters.m in Sources */, + 8A73FA5E1BD6B34E00D18188 /* ANImpression.m in Sources */, + 8A73FA541BD6B34E00D18188 /* ANMRAIDOrientationProperties.m in Sources */, 8A6385DF1A14336000280054 /* ANNativeAdFetcher.m in Sources */, - 8AD618D71981C11F00AC0780 /* ANLocation.m in Sources */, 8A6385E71A14336000280054 /* ANNativeMediatedAdResponse.m in Sources */, + 8A73FA411BD6B34E00D18188 /* ANLogManager.m in Sources */, + 8A73FA671BD6B34E00D18188 /* ANCustomClick.m in Sources */, + 8A73FA621BD6B34E00D18188 /* ANStaticResource.m in Sources */, 8A6385E41A14336000280054 /* ANNativeAdResponse.m in Sources */, - 8AD618D41981C11F00AC0780 /* ANGlobal.m in Sources */, - 8AD618D91981C11F00AC0780 /* ANLogManager.m in Sources */, - 8AF5A8831ACC60D50089C529 /* ANAdServerResponse.m in Sources */, + 8A73FA591BD6B34E00D18188 /* ANInLine.m in Sources */, + 8A73FA361BD6B34E00D18188 /* ANAdWebViewController.m in Sources */, + 8A73FA531BD6B34E00D18188 /* ANMRAIDJavascriptUtil.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/sdk/ANAdConstants.h b/sdk/ANAdConstants.h index fd194573e..789c17153 100644 --- a/sdk/ANAdConstants.h +++ b/sdk/ANAdConstants.h @@ -15,6 +15,11 @@ #import +typedef NS_ENUM(NSUInteger, ANCloseDelayType){ + ANCloseDelayTypeAbsolute = 0, + ANCloseDelayTypeRelative +}; + typedef NS_ENUM(NSInteger, ANAdResponseCode) { ANDefaultCode = -1, ANAdResponseSuccessful = 0, diff --git a/sdk/ANCustomAdapter.h b/sdk/ANCustomAdapter.h index bc0b1b08a..320dcdefa 100644 --- a/sdk/ANCustomAdapter.h +++ b/sdk/ANCustomAdapter.h @@ -61,3 +61,4 @@ - (void)didLoadInterstitialAd:(id)adapter; - (void)failedToDisplayAd; @end + diff --git a/sdk/ANInterstitialAd.h b/sdk/ANInterstitialAd.h index 817d1ce1d..4c6d3cba3 100644 --- a/sdk/ANInterstitialAd.h +++ b/sdk/ANInterstitialAd.h @@ -16,6 +16,7 @@ #import "ANAdView.h" @protocol ANInterstitialAdDelegate; +@protocol ANVideoAdDelegate; /** This is the interface through which interstitial ads are (1) @@ -44,7 +45,7 @@ */ @interface ANInterstitialAd : ANAdView -@property (nonatomic, readwrite, weak) id delegate; +@property (nonatomic, readwrite, weak) id delegate; /** Delegate object that receives custom app event notifications from this @@ -81,6 +82,13 @@ */ @property (nonatomic, readwrite, assign) NSTimeInterval closeDelay; +/** + The delay counter between when an interstitial ad is displayed and when the + close button appears to the user. 0 = closeDelayTypeAbsolute and + 1 = closeDelayTypeRelative. Accepts ANCloseDelayType enum. + */ +@property (nonatomic, readwrite, assign) NSUInteger closeDelayType; + /** The set of allowed ad sizes for the interstitial ad. The set should contain CGSize values wrapped as NSValue objects. @@ -140,4 +148,13 @@ @endcode */ - (void)adFailedToDisplay:(ANInterstitialAd *)ad; + +@end + +@protocol ANVideoAdDelegate + +- (void) videoAdPaused:(ANInterstitialAd *)ad; +- (void) videoAdResumed:(ANInterstitialAd *)ad; +- (void) videoAdStarted:(ANInterstitialAd *)ad; +- (void) videoAdFinishedPlaying:(ANInterstitialAd *)ad; @end diff --git a/sdk/Resources/images/mute-off.png b/sdk/Resources/images/mute-off.png new file mode 100644 index 0000000000000000000000000000000000000000..af21c77ade86bb433fd177160febc260daa9ad3f GIT binary patch literal 1830 zcmY*Z3pmql8~=Nka%g&yV>NrHFo(@q*yh6==G~AG)g?2VhRtl#=Fq1ca!#&F-uL74 zA*s+Dm*hA@C8r|igs;Nu)GNh^Z>qQN`=0B%pXYw==Xd{p_x(KA^`yAFI)P=>WdHyG za2BvLdb#^svN(ov|iQqLuY; z+@fbCQnVbkF68|CSQ<6mczFELJBRMB#U7=q6UuyL^Cwq?+WwjwKe@p5g@V^{Rap;K zRm~LK^4@QtOLjImJrWO{EV|iLmB1>#5=8CAog$Od8=5z3+zEPw`Yelm_65@0=rD`A zf#^jqznwp}QG=@=8YCXbOi8rWgif89;vXCHEZb7or@C+n;Z-eXQc04S?H5>q?UV_z z+j(wP@L2%SB$Hdpx5h{|rcX6;aY*&aFL!al(^Dy?~LfweXJnQxur{fz_DOk=00UL1rkdv{5@PJnwdM~sxz6G3GR%X zoPlQ|RP+ONqJ>s(+wU;Gf#3};^!0LUutngsBB zuB!N1e5sy3Y###NiWEje5Cg*k$OtZtAw~lLifbiyX=FAL%B6+USyo&$>?^`b?C*w= zFz8nZI|L2$A-F^B!bvkYeS5b^M+#-l1XV*=&Xt63O9k5F8Uk z7&8cIWNB%MG&DvU8ykob2CPUro5(ewvoybv{KbPMvq(%TgG~*iLw9+J0bvnrGz_*Y z^kaOhlTD@kSBcL0-j=vQDQ>ZRg4S@`QzF!GI)WuF93i(;IOuy&fwZ?LdZ?0gO?g{wWA`XU-eS=D5wO4 zs;IXs6nD_;`)Z{S*uG1$C+@Pd;vN@zpPDaBoVOE!bZ?iZsdIu;>Q4$2m$n2vk1hTq zOz*fQPjNXzxgFGt4x;qruJ$yTyl3=abTQ0}Xy@QP z;Y-59dhO|0FVMaVx8Din_BO}UR*X;yFAetxz0uv0eP%ivhnxzTjfbxQa)L}@gGwdU zBH?Nc`+95d&rApjh)Etw#f%JD{?g&X>d#mNgBHz~E?=88RKDqZ{;?!Ur?WN>)B`r6 zgf4e+TuL^#q0vX|d%Gn@D@uCW!KqEoGEs+ZLakMP@2U-~wu_UI=^4vW-IZYWyCq)b$xtii1G z9pb+l5Q{Yz>orG~rA0Q}{rPRgj`v1k+MgnZC2;A9QxP7|`^kbt|G9d}*VWR;6^gdO z3nd$R3m^@Aq@2d|>cK`?e3ioz|hD=i2NP5ukRf*6t1^FiMcXfvc<6xdrY<(XV& zjaET~-b(_7eGTh=F2(ih!-Tc#O<)EHp(x7 z+18HEcCB{Z%-D&9G4yxJF)fi^a7Wkic@PQ?(M1Pl4S+uS?F4v^&0L4wy<>ACTMxO0 ztMK-_tmEZ3PhYXFQy0DIjxA)k1bBdJ#{RHgL!N^#Z&_4k-CI8vwSk$=toZzq5Sy^} zA*xvM9~up*O7Qyz8CMyB(N0B~&}^-Tboq~VF~qXA_iujM;x&tqz=55K>@%t%;vW_O Na1O562X_8({{gb=H9Y_T literal 0 HcmV?d00001 diff --git a/sdk/Resources/images/mute-off@2x.png b/sdk/Resources/images/mute-off@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aabd3bb134b8f85b4531aeeb7a4dc6d0381d66e9 GIT binary patch literal 3914 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 GMExIWF-{x+ literal 0 HcmV?d00001 diff --git a/sdk/Resources/images/mute-on.png b/sdk/Resources/images/mute-on.png new file mode 100644 index 0000000000000000000000000000000000000000..6f9c27b5d2d7f3d4f8f3939687fdb4911026066a GIT binary patch literal 1779 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 +#import "ANGlobal.h" +#import "ANAdSystem.h" +#import "ANImpression.h" +#import "ANCreative.h" +#import "ANVastDataModelInterface.h" + +@interface ANInLine : ANVastDataModelInterface + +@property (nonatomic, strong) ANAdSystem *anAdSystem; +@property (nonatomic, strong) NSString *adTitle; +@property (nonatomic, strong) NSString *adDescription; +@property (nonatomic, strong) NSString *adSurvey; +@property (nonatomic, strong) NSString *adError; +@property (nonatomic, strong) NSMutableArray *impressions; + +@property (nonatomic, strong) NSMutableArray *creatives; + +@property (nonatomic, strong) NSMutableArray *extensions; +@property (nonatomic) ANExtensionType anExtensionType; + + +@end diff --git a/sdk/VastDataModel/ANInLine.m b/sdk/VastDataModel/ANInLine.m new file mode 100644 index 000000000..d73598e0d --- /dev/null +++ b/sdk/VastDataModel/ANInLine.m @@ -0,0 +1,81 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANInLine.h" + +@implementation ANInLine + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + + ANXMLElement *adSystemElement = [ANXML childElementNamed:@"AdSystem" parentElement:element]; + if (adSystemElement) { + self.anAdSystem = [[ANAdSystem alloc] initWithXMLElement:adSystemElement]; + } + + ANXMLElement *adTitleElement = [ANXML childElementNamed:@"AdTitle" parentElement:element]; + if (adTitleElement) { + self.adTitle = String(adTitleElement->text); + } + + ANXMLElement *descElement = [ANXML childElementNamed:@"Description" parentElement:element]; + if (descElement) { + self.adDescription = String(descElement->text); + } + + ANXMLElement *surveyElement = [ANXML childElementNamed:@"Survey" parentElement:element]; + if (surveyElement) { + self.adSurvey = String(surveyElement->text); + } + + ANXMLElement *errorElement = [ANXML childElementNamed:@"Error" parentElement:element]; + if (errorElement) { + self.adError = String(errorElement->text); + } + + ANXMLElement *impressionElement = [ANXML childElementNamed:@"Impression" parentElement:element]; + self.impressions = [NSMutableArray array]; + while (impressionElement) { + ANImpression *anImpression = [[ANImpression alloc] initWithXMLElement:impressionElement]; + if (anImpression) { + [self.impressions addObject:anImpression]; + } + impressionElement = [ANXML nextSiblingNamed:@"Impression" searchFromElement:impressionElement]; + } + + ANXMLElement *creativesElement = [ANXML childElementNamed:@"Creatives" parentElement:element]; + if (creativesElement) { + ANXMLElement *creativeElement = [ANXML childElementNamed:@"Creative" parentElement:creativesElement]; + self.creatives = [NSMutableArray array]; + while (creativeElement) { + ANCreative *anCreative = [[ANCreative alloc] initWithXMLElement:creativeElement]; + if (anCreative) { + [self.creatives addObject:anCreative]; + } + creativeElement = [ANXML nextSiblingNamed:@"Creative" searchFromElement:creativeElement]; + } + } + + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/ANVast.h b/sdk/VastDataModel/ANVast.h new file mode 100644 index 000000000..e35bcd955 --- /dev/null +++ b/sdk/VastDataModel/ANVast.h @@ -0,0 +1,34 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANInLine.h" +#import "ANWrapper.h" + +@interface ANVast : NSObject + +@property (nonatomic, strong) NSString *version; +@property (nonatomic, strong) NSString *AdId; +@property (nonatomic, strong) ANInLine *anInLine; +@property (nonatomic, strong) ANWrapper *anWrapper; + +//+ (instancetype)sharedInstance; +- (void)parseVastResponseWithURL:(NSURL *)xmlURL error:(NSError **)error; +- (NSURL *) getMediaFileURL; + +@end diff --git a/sdk/VastDataModel/ANVast.m b/sdk/VastDataModel/ANVast.m new file mode 100644 index 000000000..f50a5ab61 --- /dev/null +++ b/sdk/VastDataModel/ANVast.m @@ -0,0 +1,177 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANVast.h" +#import "ANXML+HTTP.h" +#import "ANXML.h" +#import "ANLogging.h" +#import "ANReachability.h" + +NSString *const kANVideoSupportedFormats = @"video/mp4"; //,video/x-flv"; +NSString *const kANVideoBitrateCapOverWAN = @"1200"; //this should be set to 460, temporarily been set to 1200 to enable ad display + +@implementation ANVast + +static NSString *XML_URL = @"http://oasc-training7.247realmedia.com/2/VastVideoAd.com/@Bottom"; +static ANVast *sharedInstance; +static dispatch_semaphore_t waitForVastParsingCompletion; +static int releaseCounter; + +- (void) parseResponseWithURL:(NSURL *)xmlURL error:(NSError *__autoreleasing *)error{ + + NSURL *url = xmlURL?xmlURL:[NSURL URLWithString:XML_URL]; + + ANXML *xmlParser = [ANXML newANXMLWithURL:url success:^(ANXML *tbxml) { + [self parseRootElement:tbxml.rootXMLElement]; + } failure:^(ANXML *tbxml, NSError *error) { + NSLog(@"XML Error: %@", error.localizedDescription); + }]; + + //mark for release - the unused object + xmlParser = nil; +} + +- (void)parseVastResponseWithURL:(NSURL *)xmlURL error:(NSError *__autoreleasing *)error{ + waitForVastParsingCompletion = dispatch_semaphore_create(0); + + releaseCounter = 0; + [self parseResponseWithURL:xmlURL error:error]; + + dispatch_semaphore_wait(waitForVastParsingCompletion, dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC)); + +} + +- (void) parseRootElement:(ANXMLElement *)rootElement{ + + if (rootElement) { + + NSString *version = [ANXML valueOfAttributeNamed:@"version" forElement:rootElement]; + if (version) { + [self setVersion:version]; + } + + ANXMLElement *ad = [ANXML childElementNamed:@"Ad" parentElement:rootElement]; + + while(ad){ + + NSString *adId = [ANXML valueOfAttributeNamed:@"id" forElement:ad]; + + if (adId) { + [self setAdId:adId]; + } + + ANXMLElement *inlineElement = [ANXML childElementNamed:@"InLine" parentElement:ad]; + if (inlineElement) { + self.anInLine = [[ANInLine alloc] initWithXMLElement:inlineElement]; + }else{ + ANXMLElement *wrapperElement = [ANXML childElementNamed:@"Wrapper" parentElement:ad]; + if (wrapperElement) { + self.anWrapper = [[ANWrapper alloc] initWithXMLElement:wrapperElement]; + if (self.anWrapper.vastAdTagURI) { + NSURL *vastURL = [NSURL URLWithString:self.anWrapper.vastAdTagURI]; + NSError *error = [[NSError alloc] init]; + releaseCounter++; + [self parseResponseWithURL:vastURL error:&error]; + } + } + } + + ad = [ANXML nextSiblingNamed:@"Ad" searchFromElement:ad]; + } + } + + if (releaseCounter == 0) { + dispatch_semaphore_signal(waitForVastParsingCompletion); + }else{ + releaseCounter--; + } +} + +- (NSURL *) getMediaFileURL{ + ANInLine *inLine = (self.anInLine)?self.anInLine:self.anWrapper; + NSString *fileURI = @""; + for (ANCreative *creative in inLine.creatives) { + + //Sort array on bitRate = Ascending + NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"bitRate" ascending:YES]; + NSArray *mediaFiles = [creative.anLinear.mediaFiles sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; + + //get mediafiles based on the supported file formats + NSPredicate *predicateFileType = [NSPredicate predicateWithFormat:@"%@ beginswith fileType or %@ contains fileType", kANVideoSupportedFormats, [NSString stringWithFormat:@",%@", kANVideoSupportedFormats]]; + mediaFiles = [mediaFiles filteredArrayUsingPredicate:predicateFileType]; + + //Now that we have a sorted array based on supported file formates, we need to now get mediafiles based on the screen size. + mediaFiles = [self getPreferredMediaFileBasedOnSizeFromMediaFiles:mediaFiles]; + + ANReachability *reachability = [ANReachability reachabilityForInternetConnection]; + ANNetworkStatus networkStatus = [reachability currentReachabilityStatus]; + + if (networkStatus == ANNetworkStatusReachableViaWWAN) { + NSPredicate *predicateBitRate = [NSPredicate predicateWithFormat:@"bitRate.intValue <= %d", [kANVideoBitrateCapOverWAN intValue]]; + NSArray *filteredArray = [mediaFiles filteredArrayUsingPredicate:predicateBitRate]; + + if (filteredArray.count) { + //pick the highest bit rate satisfying the WAN capping + fileURI = ((ANMediaFile *)[filteredArray lastObject]).fileURI; + }else{ + //NO files found satisfying the WAN Capping, so pick the next highest bitrate file. + fileURI = ((ANMediaFile *)[mediaFiles firstObject]).fileURI; + } + }else if(networkStatus == ANNetworkStatusReachableViaWiFi){ + //pick the file with highest bit rate + ANMediaFile *mediaFile = [mediaFiles lastObject]; + fileURI = mediaFile.fileURI; + }else{ + //Log info for No Network Status. + ANLogInfo(@"Network not available. Failed to run video."); + } + } + + NSURL *fileURL = [NSURL URLWithString:fileURI]; + + return fileURL; +} + +- (NSArray *) getPreferredMediaFileBasedOnSizeFromMediaFiles:(NSArray *)mediaFiles{ + CGRect screenBounds = ANPortraitScreenBounds(); + + int iDividingFactor = 1; + + if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES) { + if ([[UIScreen mainScreen] scale] == 2) { + iDividingFactor = 2; + }else if([[UIScreen mainScreen] scale] == 3){ + iDividingFactor = 3; + } + } + + //since the bounds are in portrait mode, width <= height always. Hence reversed. Video size is in pixel. So no need to convert to points. + NSPredicate *predicateSize = [NSPredicate predicateWithFormat:@"width.intValue >= %d AND height.intValue >= %d", iDividingFactor, screenBounds.size.height, iDividingFactor, screenBounds.size.width]; + NSArray *fileteredArray = [mediaFiles filteredArrayUsingPredicate:predicateSize]; + + if (fileteredArray.count) { + //Best match found for the screen size. + return fileteredArray; + } + + //No match found, return the original collection. + return mediaFiles; + +} + +@end diff --git a/sdk/VastDataModel/ANVastDataModelInterface.h b/sdk/VastDataModel/ANVastDataModelInterface.h new file mode 100644 index 000000000..3514cab6c --- /dev/null +++ b/sdk/VastDataModel/ANVastDataModelInterface.h @@ -0,0 +1,26 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANXML.h" + +@interface ANVastDataModelInterface : NSObject + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end \ No newline at end of file diff --git a/sdk/VastDataModel/ANVastDataModelInterface.m b/sdk/VastDataModel/ANVastDataModelInterface.m new file mode 100644 index 000000000..c9a7ae7cc --- /dev/null +++ b/sdk/VastDataModel/ANVastDataModelInterface.m @@ -0,0 +1,28 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANVastDataModelInterface.h" + +@implementation ANVastDataModelInterface + +- (instancetype)initWithXMLElement:(ANXMLElement *)element { + self = [super init]; + return self; +} + +@end diff --git a/sdk/VastDataModel/ANWrapper.h b/sdk/VastDataModel/ANWrapper.h new file mode 100644 index 000000000..1ba3f94d9 --- /dev/null +++ b/sdk/VastDataModel/ANWrapper.h @@ -0,0 +1,25 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANInLine.h" + +@interface ANWrapper : ANInLine + +@property (nonatomic, strong) NSString *vastAdTagURI; + +@end diff --git a/sdk/VastDataModel/ANWrapper.m b/sdk/VastDataModel/ANWrapper.m new file mode 100644 index 000000000..436416bb6 --- /dev/null +++ b/sdk/VastDataModel/ANWrapper.m @@ -0,0 +1,37 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANWrapper.h" + +@implementation ANWrapper + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + + self = [super initWithXMLElement:element]; + + if (self) { + ANXMLElement *vastAdTagURIElement = [ANXML childElementNamed:@"VASTAdTagURI" parentElement:element]; + if (vastAdTagURIElement) { + self.vastAdTagURI = String(vastAdTagURIElement->text); + } + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/ANAdSystem.h b/sdk/VastDataModel/Inline/ANAdSystem.h new file mode 100644 index 000000000..85264a9fb --- /dev/null +++ b/sdk/VastDataModel/Inline/ANAdSystem.h @@ -0,0 +1,29 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANVastDataModelInterface.h" + +@interface ANAdSystem : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *version; +@property (nonatomic, strong) NSString *value; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/ANAdSystem.m b/sdk/VastDataModel/Inline/ANAdSystem.m new file mode 100644 index 000000000..b91706b01 --- /dev/null +++ b/sdk/VastDataModel/Inline/ANAdSystem.m @@ -0,0 +1,35 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANAdSystem.h" +#import "ANGlobal.h" + +@implementation ANAdSystem + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + self.value = String(element->text); + self.version = [ANXML valueOfAttributeNamed:@"version" forElement:element]; + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/ANImpression.h b/sdk/VastDataModel/Inline/ANImpression.h new file mode 100644 index 000000000..e54beeeb5 --- /dev/null +++ b/sdk/VastDataModel/Inline/ANImpression.h @@ -0,0 +1,29 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANVastDataModelInterface.h" + +@interface ANImpression : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *value; +@property (nonatomic, strong) NSString *impressionId; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/ANImpression.m b/sdk/VastDataModel/Inline/ANImpression.m new file mode 100644 index 000000000..973823517 --- /dev/null +++ b/sdk/VastDataModel/Inline/ANImpression.m @@ -0,0 +1,35 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANImpression.h" +#import "ANGlobal.h" + +@implementation ANImpression + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + self.value = String(element->text); + self.impressionId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANCreative.h b/sdk/VastDataModel/Inline/Creatives/ANCreative.h new file mode 100644 index 000000000..00d6f34d4 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANCreative.h @@ -0,0 +1,41 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANLinear.h" +#import "ANCompanion.h" +#import "ANNonLinearAds.h" +#import "ANVastDataModelInterface.h" + +@interface ANCreative : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *creativeId; +@property (nonatomic, strong) NSString *sequence; +@property (nonatomic, strong) NSString *adId; +@property (nonatomic, strong) ANLinear *anLinear; + +@property (nonatomic, strong) NSMutableArray *companionAds; +@property (nonatomic, strong) ANCompanion *anCompanion; + +@property (nonatomic, strong) ANNonLinearAds *anNonLinearAds; + +@property (nonatomic, strong) NSMutableArray *trackingEvents; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANCreative.m b/sdk/VastDataModel/Inline/Creatives/ANCreative.m new file mode 100644 index 000000000..967f742df --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANCreative.m @@ -0,0 +1,70 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANCreative.h" + +@implementation ANCreative + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + NSString *creativeId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; + if (creativeId) { + self.creativeId = creativeId; + } + + NSString *sequence = [ANXML valueOfAttributeNamed:@"sequence" forElement:element]; + if (sequence) { + self.sequence = sequence; + } + + NSString *adId = [ANXML valueOfAttributeNamed:@"AdId" forElement:element]; + if (adId) { + self.adId = adId; + } + + ANXMLElement *linearElement = [ANXML childElementNamed:@"Linear" parentElement:element]; + if (linearElement) { + self.anLinear = [[ANLinear alloc] initWithXMLElement:linearElement]; + } + + ANXMLElement *companionAdsElement = [ANXML childElementNamed:@"CompanionAds" parentElement:element]; + self.companionAds = [NSMutableArray array]; + if (companionAdsElement) { + ANXMLElement *companionElement = [ANXML childElementNamed:@"Companion" parentElement:companionAdsElement]; + while (companionElement) { + ANCompanion *companion = [[ANCompanion alloc] initWithXMLElement:companionElement]; + if (companion) { + [self.companionAds addObject:companion]; + } + companionElement = [ANXML nextSiblingNamed:@"Companion" searchFromElement:companionElement]; + } + } + + ANXMLElement *nonLinearElements = [ANXML childElementNamed:@"NonLinearAds" parentElement:element]; + if (nonLinearElements) { + self.anNonLinearAds = [[ANNonLinearAds alloc] initWithXMLElement:nonLinearElements]; + } + + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANLinear.h b/sdk/VastDataModel/Inline/Creatives/ANLinear.h new file mode 100644 index 000000000..33fa7d619 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANLinear.h @@ -0,0 +1,39 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANTracking.h" +#import "ANVideoClicks.h" +#import "ANMediaFile.h" +#import "ANVastDataModelInterface.h" + +@interface ANLinear : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *duration; +@property (nonatomic, strong) NSMutableArray *trackingEvents; +@property (nonatomic, strong) NSString *adParameters; + +@property (nonatomic, strong) ANVideoClicks *anVideoClicks; + +@property (nonatomic, strong) NSMutableArray *mediaFiles; + +@property (nonatomic, strong) NSString *skipOffSet; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANLinear.m b/sdk/VastDataModel/Inline/Creatives/ANLinear.m new file mode 100644 index 000000000..85d9ec124 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANLinear.m @@ -0,0 +1,80 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + +#import "ANLinear.h" + +@implementation ANLinear + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + + NSString *skipOffSet = [ANXML valueOfAttributeNamed:@"skipoffset" forElement:element]; + if (skipOffSet) { + self.skipOffSet = skipOffSet; + } + + ANXMLElement *durationElement = [ANXML childElementNamed:@"Duration" parentElement:element]; + if (durationElement) { + self.duration = String(durationElement->text); + } + + ANXMLElement *trackingElements = [ANXML childElementNamed:@"TrackingEvents" parentElement:element]; + self.trackingEvents = [NSMutableArray array]; + if (trackingElements) { + ANXMLElement *trackingElement = [ANXML childElementNamed:@"Tracking" parentElement:trackingElements]; + while (trackingElement) { + ANTracking *tracking = [[ANTracking alloc] initWithXMLElement:trackingElement]; + if (tracking) { + [self.trackingEvents addObject:tracking]; + } + trackingElement = [ANXML nextSiblingNamed:@"Tracking" searchFromElement:trackingElement]; + } + } + + ANXMLElement *paramElement = [ANXML childElementNamed:@"AdParameters" parentElement:element]; + if (paramElement) { + NSString *adParam = String(paramElement->text); + if (adParam) { + self.adParameters = adParam; + } + } + + ANXMLElement *videoClickElements = [ANXML childElementNamed:@"VideoClicks" parentElement:element]; + if (videoClickElements) { + self.anVideoClicks = [[ANVideoClicks alloc] initWithXMLElement:videoClickElements]; + } + + ANXMLElement *mediaFileElements = [ANXML childElementNamed:@"MediaFiles" parentElement:element]; + self.mediaFiles = [NSMutableArray array]; + if (mediaFileElements) { + ANXMLElement *mediaFileElement = [ANXML childElementNamed:@"MediaFile" parentElement:mediaFileElements]; + while (mediaFileElement) { + ANMediaFile *mediaFile = [[ANMediaFile alloc] initWithXMLElement:mediaFileElement]; + if (mediaFile) { + [self.mediaFiles addObject:mediaFile]; + } + mediaFileElement = [ANXML nextSiblingNamed:@"MediaFile" searchFromElement:mediaFileElement]; + } + } + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANNonLinearAds.h b/sdk/VastDataModel/Inline/Creatives/ANNonLinearAds.h new file mode 100644 index 000000000..dad9d3793 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANNonLinearAds.h @@ -0,0 +1,29 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANVastDataModelInterface.h" +#import "ANNonLinear.h" +#import "ANTracking.h" + +@interface ANNonLinearAds : ANVastDataModelInterface + +@property (nonatomic, strong) NSMutableArray *trackingEvents; +@property (nonatomic, strong) ANNonLinear *anNonLinear; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANNonLinearAds.m b/sdk/VastDataModel/Inline/Creatives/ANNonLinearAds.m new file mode 100644 index 000000000..978f1e7de --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANNonLinearAds.m @@ -0,0 +1,50 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANNonLinearAds.h" + +@implementation ANNonLinearAds + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + + ANXMLElement *nonLinearElement = [ANXML childElementNamed:@"NonLinear" parentElement:element]; + if (nonLinearElement) { + self.anNonLinear = [[ANNonLinear alloc] initWithXMLElement:nonLinearElement]; + + ANXMLElement *trackingEventsElement = [ANXML childElementNamed:@"TrackingEvents" parentElement:element]; + self.trackingEvents = [NSMutableArray array]; + if (trackingEventsElement) { + ANXMLElement *trackingElement = [ANXML childElementNamed:@"Tracking" parentElement:trackingEventsElement]; + while (trackingElement) { + ANTracking *tracking = [[ANTracking alloc] initWithXMLElement:trackingElement]; + if (tracking) { + [self.trackingEvents addObject:tracking]; + } + } + } + } + + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANStaticResource.h b/sdk/VastDataModel/Inline/Creatives/ANStaticResource.h new file mode 100644 index 000000000..982b6950d --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANStaticResource.h @@ -0,0 +1,29 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANVastDataModelInterface.h" + +@interface ANStaticResource : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *staticResourceURI; +@property (nonatomic, strong) NSString *creativeType; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANStaticResource.m b/sdk/VastDataModel/Inline/Creatives/ANStaticResource.m new file mode 100644 index 000000000..8b263dd62 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANStaticResource.m @@ -0,0 +1,35 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANStaticResource.h" +#import "ANGlobal.h" + +@implementation ANStaticResource + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + self.staticResourceURI = String(element->text); + self.creativeType = [ANXML valueOfAttributeNamed:@"CreativeType" forElement:element]; + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANTracking.h b/sdk/VastDataModel/Inline/Creatives/ANTracking.h new file mode 100644 index 000000000..012053478 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANTracking.h @@ -0,0 +1,30 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANVastDataModelInterface.h" +#import "ANGlobal.h" + +@interface ANTracking : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *trackingURI; +@property (nonatomic) NSString *vastEvent; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/ANTracking.m b/sdk/VastDataModel/Inline/Creatives/ANTracking.m new file mode 100644 index 000000000..b9545b88a --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/ANTracking.m @@ -0,0 +1,46 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANTracking.h" + +@implementation ANTracking + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + ANXMLElement *trackingElement = [ANXML childElementNamed:@"Tracking" parentElement:element]; + if (trackingElement) { + + NSString *trackingURI = String(trackingElement->text); + if (trackingURI) { + self.trackingURI = trackingURI; + } + + NSString *event = [ANXML valueOfAttributeNamed:@"event" forElement:trackingElement]; + if (event) { + self.vastEvent = event; + } + + } + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.h b/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.h new file mode 100644 index 000000000..23cde2869 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.h @@ -0,0 +1,45 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANStaticResource.h" +#import "ANTracking.h" +#import "ANVastDataModelInterface.h" + +@interface ANCompanion : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *companionId; +@property (nonatomic, strong) NSString *width; +@property (nonatomic, strong) NSString *height; +@property (nonatomic, strong) NSString *expandedWidth; +@property (nonatomic, strong) NSString *expandedHeight; +@property (nonatomic, strong) NSString *apiFramework; + +@property (nonatomic, strong) ANStaticResource *anStaticResource; +@property (nonatomic, strong) NSString *iFrameResource; +@property (nonatomic, strong) NSString *htmlResource; + +@property (nonatomic, strong) NSMutableArray *trackingEvents; + +@property (nonatomic, strong) NSString *clickThroughURI; +@property (nonatomic, strong) NSString *altText; +@property (nonatomic, strong) NSString *adParameters; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.m b/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.m new file mode 100644 index 000000000..7daad53fb --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.m @@ -0,0 +1,81 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANCompanion.h" + +@implementation ANCompanion + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + self.companionId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; + self.width = [ANXML valueOfAttributeNamed:@"width" forElement:element]; + self.height = [ANXML valueOfAttributeNamed:@"height" forElement:element]; + self.expandedWidth = [ANXML valueOfAttributeNamed:@"expandedWidth" forElement:element]; + self.expandedHeight = [ANXML valueOfAttributeNamed:@"expandedHeight" forElement:element]; + self.apiFramework = [ANXML valueOfAttributeNamed:@"apiFramework" forElement:element]; + + ANXMLElement *staticResourceElement = [ANXML childElementNamed:@"StaticResource" parentElement:element]; + if (staticResourceElement) { + self.anStaticResource = [[ANStaticResource alloc] initWithXMLElement:staticResourceElement]; + } + + ANXMLElement *iFrameResourceElement = [ANXML childElementNamed:@"IFrameResource" parentElement:element]; + if (iFrameResourceElement) { + self.iFrameResource = String(iFrameResourceElement->text); + } + + ANXMLElement *htmlResourceElement = [ANXML childElementNamed:@"HTMLResource" parentElement:element]; + if (htmlResourceElement) { + self.htmlResource = String(htmlResourceElement->text); + } + + ANXMLElement *trackingElements = [ANXML childElementNamed:@"TrackingEvents" parentElement:element]; + self.trackingEvents = [NSMutableArray array]; + if (trackingElements) { + ANXMLElement *trackingElement = [ANXML childElementNamed:@"Tracking" parentElement:trackingElements]; + while (trackingElement) { + ANTracking *tracking = [[ANTracking alloc] initWithXMLElement:trackingElement]; + if (tracking) { + [self.trackingEvents addObject:tracking]; + } + trackingElement = [ANXML nextSiblingNamed:@"Tracking" searchFromElement:trackingElement]; + } + } + + ANXMLElement *companionClickThroughElement = [ANXML childElementNamed:@"CompanionClickThrough" parentElement:element]; + if (companionClickThroughElement) { + self.clickThroughURI = String(companionClickThroughElement->text); + } + + ANXMLElement *altTextElement = [ANXML childElementNamed:@"AltText" parentElement:element]; + if (altTextElement) { + self.altText = String(altTextElement->text); + } + + ANXMLElement *adParametersElement = [ANXML childElementNamed:@"AdParameters" parentElement:element]; + if (adParametersElement) { + self.adParameters = String(adParametersElement->text); + } + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.h b/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.h new file mode 100644 index 000000000..14d5d3201 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.h @@ -0,0 +1,29 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANCustomClick.h" +#import "ANVastDataModelInterface.h" + +@interface ANVideoClicks : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *clickThrough; +@property (nonatomic, strong) NSString *clickTracking; +@property (nonatomic, strong) ANCustomClick *anCustomClick; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.m b/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.m new file mode 100644 index 000000000..c8cef0a55 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.m @@ -0,0 +1,47 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANVideoClicks.h" +#import "ANGlobal.h" + +@implementation ANVideoClicks + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + ANXMLElement *clickThrough = [ANXML childElementNamed:@"ClickThrough" parentElement:element]; + if (clickThrough) { + self.clickThrough = String(clickThrough->text); + } + + ANXMLElement *clickTracking = [ANXML childElementNamed:@"ClickTracking" parentElement:element]; + if (clickTracking) { + self.clickTracking = String(clickTracking->text); + } + + ANXMLElement *customClick = [ANXML childElementNamed:@"CustomClick" parentElement:element]; + if (customClick) { + self.anCustomClick = [[ANCustomClick alloc] initWithXMLElement:customClick]; + } + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.h b/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.h new file mode 100644 index 000000000..95c3668b8 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.h @@ -0,0 +1,37 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANVastDataModelInterface.h" + +@interface ANMediaFile : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *fileURI; +@property (nonatomic, strong) NSString *fileId; +@property (nonatomic) NSString *deliveryMethod; +@property (nonatomic, strong) NSString *fileType; +@property (nonatomic, strong) NSString *bitRate; +@property (nonatomic, strong) NSString *width; +@property (nonatomic, strong) NSString *height; +@property (nonatomic, strong) NSString *scalable; +@property (nonatomic, strong) NSString *maintainAspectRatio; +@property (nonatomic, strong) NSString *apiFramework; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.m b/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.m new file mode 100644 index 000000000..d6b98c834 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.m @@ -0,0 +1,43 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANMediaFile.h" +#import "ANGlobal.h" + +@implementation ANMediaFile + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + + if (self) { + self.fileURI = String(element->text); + self.fileId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; + self.deliveryMethod = [ANXML valueOfAttributeNamed:@"delivery" forElement:element]; + self.fileType = [ANXML valueOfAttributeNamed:@"type" forElement:element]; + self.bitRate = [ANXML valueOfAttributeNamed:@"bitrate" forElement:element]; + self.width = [ANXML valueOfAttributeNamed:@"width" forElement:element]; + self.height = [ANXML valueOfAttributeNamed:@"height" forElement:element]; + self.scalable = [ANXML valueOfAttributeNamed:@"scalable" forElement:element]; + self.maintainAspectRatio = [ANXML valueOfAttributeNamed:@"maintainAspectRatio" forElement:element]; + self.apiFramework = [ANXML valueOfAttributeNamed:@"apiFramework" forElement:element]; + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.h b/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.h new file mode 100644 index 000000000..ac54e4a23 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.h @@ -0,0 +1,29 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANVastDataModelInterface.h" + +@interface ANCustomClick : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *customClickURI; +@property (nonatomic, strong) NSString *customClickId; + +- (instancetype)initWithXMLElement:(ANXMLElement *)element; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.m b/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.m new file mode 100644 index 000000000..4c82b6ba0 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.m @@ -0,0 +1,40 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANCustomClick.h" +#import "ANGlobal.h" + +@implementation ANCustomClick + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + + self = [super init]; + + if (self) { + self.customClickURI = String(element->text); + + NSString *customClickId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; + if (customClickId) { + self.customClickId = customClickId; + } + } + + return self; +} + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.h b/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.h new file mode 100644 index 000000000..fdcac9b78 --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.h @@ -0,0 +1,42 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANStaticResource.h" +#import "ANVastDataModelInterface.h" + +@interface ANNonLinear : ANVastDataModelInterface + +@property (nonatomic, strong) NSString *nonLinearId; +@property (nonatomic, strong) NSString *width; +@property (nonatomic, strong) NSString *height; +@property (nonatomic, strong) NSString *expandedWidth; +@property (nonatomic, strong) NSString *expandedHeight; +@property (nonatomic, strong) NSString *scalable; +@property (nonatomic, strong) NSString *maintainAspectRatio; +@property (nonatomic, strong) NSString *minSuggestedDuration; +@property (nonatomic, strong) NSString *apiFramework; + +@property (nonatomic, strong) ANStaticResource *anStaticResource; +@property (nonatomic, strong) NSString *iFrameResource; +@property (nonatomic, strong) NSString *htmlResource; + +@property (nonatomic, strong) NSString *clickThroughURI; +@property (nonatomic, strong) NSString *adParameters; + +@end diff --git a/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.m b/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.m new file mode 100644 index 000000000..727ce2aff --- /dev/null +++ b/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.m @@ -0,0 +1,67 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANNonLinear.h" +#import "ANGlobal.h" + +@implementation ANNonLinear + +- (instancetype)initWithXMLElement:(ANXMLElement *)element{ + self = [super init]; + if (self) { + self.nonLinearId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; + self.width = [ANXML valueOfAttributeNamed:@"width" forElement:element]; + self.height = [ANXML valueOfAttributeNamed:@"height" forElement:element]; + self.expandedWidth = [ANXML valueOfAttributeNamed:@"expandedWidth" forElement:element]; + self.expandedHeight = [ANXML valueOfAttributeNamed:@"expandedHeight" forElement:element]; + self.scalable = [ANXML valueOfAttributeNamed:@"scalable" forElement:element]; + self.maintainAspectRatio = [ANXML valueOfAttributeNamed:@"maintainAspectRatio" forElement:element]; + self.minSuggestedDuration = [ANXML valueOfAttributeNamed:@"minSuggestedDuration" forElement:element]; + self.apiFramework = [ANXML valueOfAttributeNamed:@"apiFramework" forElement:element]; + + ANXMLElement *staticResourceElement = [ANXML childElementNamed:@"StaticResource" parentElement:element]; + if (staticResourceElement) { + self.anStaticResource = [[ANStaticResource alloc] initWithXMLElement:staticResourceElement]; + } + + ANXMLElement *iFrameResourceElement = [ANXML childElementNamed:@"IFrameResource" parentElement:element]; + if (iFrameResourceElement) { + self.iFrameResource = String(iFrameResourceElement->text); + } + + ANXMLElement *htmlResourceElement = [ANXML childElementNamed:@"HTMLResource" parentElement:element]; + if (htmlResourceElement) { + self.htmlResource = String(htmlResourceElement->text); + } + + ANXMLElement *clickThroughElement = [ANXML nextSiblingNamed:@"ClickThrough" searchFromElement:element]; + if (clickThroughElement) { + self.clickThroughURI = String(clickThroughElement->text); + } + + ANXMLElement *adParametersElement = [ANXML nextSiblingNamed:@"AdParameters" searchFromElement:element]; + if (adParametersElement) { + self.adParameters = String(adParametersElement->text); + } + + } + + return self; +} + +@end diff --git a/sdk/XMLParsing/ANXML+HTTP.h b/sdk/XMLParsing/ANXML+HTTP.h new file mode 100755 index 000000000..670981362 --- /dev/null +++ b/sdk/XMLParsing/ANXML+HTTP.h @@ -0,0 +1,72 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +// ================================================================================================ +// TBXML+HTTP.h +// Fast processing of XML files +// +// ================================================================================================ +// Created by Tom Bradley on 21/10/2009. +// Version 1.5 +// +// Copyright 2012 71Squared All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// ================================================================================================ + +#import "ANXML.h" + +typedef void (^ANXMLAsyncRequestSuccessBlock)(NSData *,NSURLResponse *); +typedef void (^ANXMLAsyncRequestFailureBlock)(NSData *,NSError *); + +@interface NSMutableURLRequest (ANXML_HTTP) + ++ (NSMutableURLRequest*)an_tbxmlGetRequestWithURL:(NSURL*)url; ++ (NSMutableURLRequest*)an_tbxmlPostRequestWithURL:(NSURL*)url parameters:(NSDictionary*)parameters; + +@end + + +@interface NSURLConnection (ANXML_HTTP) + ++ (void)an_tbxmlAsyncRequest:(NSURLRequest *)request success:(ANXMLAsyncRequestSuccessBlock)successBlock failure:(ANXMLAsyncRequestFailureBlock)failureBlock; + +@end + + +@interface ANXML (ANXML_HTTP) + ++ (id)newANXMLWithURL:(NSURL*)aURL success:(ANXMLSuccessBlock)successBlock failure:(ANXMLFailureBlock)failureBlock; +- (id)initWithURL:(NSURL*)aURL success:(ANXMLSuccessBlock)successBlock failure:(ANXMLFailureBlock)failureBlock; + +@end + + diff --git a/sdk/XMLParsing/ANXML+HTTP.m b/sdk/XMLParsing/ANXML+HTTP.m new file mode 100755 index 000000000..1db2976d4 --- /dev/null +++ b/sdk/XMLParsing/ANXML+HTTP.m @@ -0,0 +1,152 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +// ================================================================================================ +// TBXML+HTTP.m +// Fast processing of XML files +// +// ================================================================================================ +// Created by Tom Bradley on 21/10/2009. +// Version 1.5 +// +// Copyright 2012 71Squared All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// ================================================================================================ + +#import "ANXML+HTTP.h" + +@implementation NSMutableURLRequest (ANXML_HTTP) + + ++ (NSMutableURLRequest*)an_tbxmlGetRequestWithURL:(NSURL*)url { + + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; + [request setURL:url]; + [request setHTTPMethod:@"GET"]; + + +#ifndef ANXML_ARC_ENABLED + return [request autorelease]; +#else + return request; +#endif + +} + ++ (NSMutableURLRequest*)an_tbxmlPostRequestWithURL:(NSURL*)url parameters:(NSDictionary*)parameters { + + NSMutableArray * params = [NSMutableArray new]; + + for (NSString * key in [parameters allKeys]) { + [params addObject:[NSString stringWithFormat:@"%@=%@", key, [parameters objectForKey:key]]]; + } + + NSData * postData = [[params componentsJoinedByString:@"&"] dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; + NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; + + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; + [request setURL:url]; + [request setHTTPMethod:@"POST"]; + [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; + [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; + [request setHTTPBody:postData]; + +#ifndef ANXML_ARC_ENABLED + [params release]; + return [request autorelease]; +#else + return request; +#endif +} + +@end + + +@implementation NSURLConnection (ANXML_HTTP) + ++ (void)an_tbxmlAsyncRequest:(NSURLRequest *)request success:(ANXMLAsyncRequestSuccessBlock)successBlock failure:(ANXMLAsyncRequestFailureBlock)failureBlock { + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + + @autoreleasepool { + NSURLResponse *response = nil; + NSError *error = nil; + NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; + + if (error) { + failureBlock(data,error); + } else { + successBlock(data,response); + } + } + }); +} + +@end + + +@implementation ANXML (ANXML_HTTP) + ++ (id)newANXMLWithURL:(NSURL*)aURL success:(ANXMLSuccessBlock)successBlock failure:(ANXMLFailureBlock)failureBlock { + return [[ANXML alloc] initWithURL:aURL success:successBlock failure:failureBlock]; +} + +- (id)initWithURL:(NSURL*)aURL success:(ANXMLSuccessBlock)successBlock failure:(ANXMLFailureBlock)failureBlock { + self = [self init]; + if (self != nil) { + + ANXMLAsyncRequestSuccessBlock requestSuccessBlock = ^(NSData *data, NSURLResponse *response) { + + NSError *error = nil; + [self decodeData:data withError:&error]; + + // If ANXML found a root node, process element and iterate all children + if (!error) { + successBlock(self); + } else { + failureBlock(self, error); + } + }; + + ANXMLAsyncRequestFailureBlock requestFailureBlock = ^(NSData *data, NSError *error) { + failureBlock(self, error); + }; + + + [NSURLConnection an_tbxmlAsyncRequest:[NSMutableURLRequest an_tbxmlGetRequestWithURL:aURL] + success:requestSuccessBlock + failure:requestFailureBlock]; + } + return self; +} + +@end \ No newline at end of file diff --git a/sdk/XMLParsing/ANXML.h b/sdk/XMLParsing/ANXML.h new file mode 100755 index 000000000..8181ad86a --- /dev/null +++ b/sdk/XMLParsing/ANXML.h @@ -0,0 +1,228 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +// ================================================================================================ +// TBXML.h +// Fast processing of XML files +// +// ================================================================================================ +// Created by Tom Bradley on 21/10/2009. +// Version 1.5 +// +// Copyright 2012 71Squared All rights reserved.b +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// ================================================================================================ + +#import + +#define ANXML_ARC_ENABLED 1 + +@class ANXML; + +// ================================================================================================ +// Error Codes +// ================================================================================================ +enum ANXMLErrorCodes { + D_ANXML_SUCCESS = 0, + + D_ANXML_DATA_NIL, + D_ANXML_DECODE_FAILURE, + D_ANXML_MEMORY_ALLOC_FAILURE, + D_ANXML_FILE_NOT_FOUND_IN_BUNDLE, + + D_ANXML_ELEMENT_IS_NIL, + D_ANXML_ELEMENT_NAME_IS_NIL, + D_ANXML_ELEMENT_NOT_FOUND, + D_ANXML_ELEMENT_TEXT_IS_NIL, + D_ANXML_ATTRIBUTE_IS_NIL, + D_ANXML_ATTRIBUTE_NAME_IS_NIL, + D_ANXML_ATTRIBUTE_NOT_FOUND, + D_ANXML_PARAM_NAME_IS_NIL +}; + + +// ================================================================================================ +// Defines +// ================================================================================================ +#define D_ANXML_DOMAIN @"com.71squared.tbxml" + +#define ANXML_MAX_ELEMENTS 100 +#define ANXML_MAX_ATTRIBUTES 100 + +#define ANXML_ATTRIBUTE_NAME_START 0 +#define ANXML_ATTRIBUTE_NAME_END 1 +#define ANXML_ATTRIBUTE_VALUE_START 2 +#define ANXML_ATTRIBUTE_VALUE_END 3 +#define ANXML_ATTRIBUTE_CDATA_END 4 + +// ================================================================================================ +// Structures +// ================================================================================================ + +/** The ANXMLAttribute structure holds information about a single XML attribute. The structure holds the attribute name, value and next sibling attribute. This structure allows us to create a linked list of attributes belonging to a specific element. + */ +typedef struct _ANXMLAttribute { + char * name; + char * value; + struct _ANXMLAttribute * next; +} ANXMLAttribute; + + + +/** The ANXMLElement structure holds information about a single XML element. The structure holds the element name & text along with pointers to the first attribute, parent element, first child element and first sibling element. Using this structure, we can create a linked list of ANXMLElements to map out an entire XML file. + */ +typedef struct _ANXMLElement { + char * name; + char * text; + + ANXMLAttribute * firstAttribute; + + struct _ANXMLElement * parentElement; + + struct _ANXMLElement * firstChild; + struct _ANXMLElement * currentChild; + + struct _ANXMLElement * nextSibling; + struct _ANXMLElement * previousSibling; + +} ANXMLElement; + +/** The ANXMLElementBuffer is a structure that holds a buffer of ANXMLElements. When the buffer of elements is used, an additional buffer is created and linked to the previous one. This allows for efficient memory allocation/deallocation elements. + */ +typedef struct _ANXMLElementBuffer { + ANXMLElement * elements; + struct _ANXMLElementBuffer * next; + struct _ANXMLElementBuffer * previous; +} ANXMLElementBuffer; + + + +/** The ANXMLAttributeBuffer is a structure that holds a buffer of ANXMLAttributes. When the buffer of attributes is used, an additional buffer is created and linked to the previous one. This allows for efficient memeory allocation/deallocation of attributes. + */ +typedef struct _ANXMLAttributeBuffer { + ANXMLAttribute * attributes; + struct _ANXMLAttributeBuffer * next; + struct _ANXMLAttributeBuffer * previous; +} ANXMLAttributeBuffer; + + +// ================================================================================================ +// Block Callbacks +// ================================================================================================ +typedef void (^ANXMLSuccessBlock)(ANXML *tbxml); +typedef void (^ANXMLFailureBlock)(ANXML *tbxml, NSError *error); +typedef void (^ANXMLIterateBlock)(ANXMLElement *element); +typedef void (^ANXMLIterateAttributeBlock)(ANXMLAttribute *attribute, NSString *attributeName, NSString *attributeValue); + + +// ================================================================================================ +// ANXML Public Interface +// ================================================================================================ + +@interface ANXML : NSObject { + +@private + ANXMLElement * rootXMLElement; + + ANXMLElementBuffer * currentElementBuffer; + ANXMLAttributeBuffer * currentAttributeBuffer; + + long currentElement; + long currentAttribute; + + char * bytes; + long bytesLength; +} + + +@property (nonatomic, readonly) ANXMLElement * rootXMLElement; + ++ (id)newANXMLWithXMLString:(NSString*)aXMLString error:(NSError **)error; ++ (id)newANXMLWithXMLData:(NSData*)aData error:(NSError **)error; ++ (id)newANXMLWithXMLFile:(NSString*)aXMLFile error:(NSError **)error; ++ (id)newANXMLWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension error:(NSError **)error; + ++ (id)newANXMLWithXMLString:(NSString*)aXMLString __attribute__((deprecated)); ++ (id)newANXMLWithXMLData:(NSData*)aData __attribute__((deprecated)); ++ (id)newANXMLWithXMLFile:(NSString*)aXMLFile __attribute__((deprecated)); ++ (id)newANXMLWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension __attribute__((deprecated)); + + +- (id)initWithXMLString:(NSString*)aXMLString error:(NSError **)error; +- (id)initWithXMLData:(NSData*)aData error:(NSError **)error; +- (id)initWithXMLFile:(NSString*)aXMLFile error:(NSError **)error; +- (id)initWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension error:(NSError **)error; + +- (id)initWithXMLString:(NSString*)aXMLString __attribute__((deprecated)); +- (id)initWithXMLData:(NSData*)aData __attribute__((deprecated)); +- (id)initWithXMLFile:(NSString*)aXMLFile __attribute__((deprecated)); +- (id)initWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension __attribute__((deprecated)); + + +- (int) decodeData:(NSData*)data; +- (int) decodeData:(NSData*)data withError:(NSError **)error; + +@end + +// ================================================================================================ +// ANXML Static Functions Interface +// ================================================================================================ + +@interface ANXML (StaticFunctions) + ++ (NSString*) elementName:(ANXMLElement*)aXMLElement; ++ (NSString*) elementName:(ANXMLElement*)aXMLElement error:(NSError **)error; ++ (NSString*) textForElement:(ANXMLElement*)aXMLElement; ++ (NSString*) textForElement:(ANXMLElement*)aXMLElement error:(NSError **)error; ++ (NSString*) valueOfAttributeNamed:(NSString *)aName forElement:(ANXMLElement*)aXMLElement; ++ (NSString*) valueOfAttributeNamed:(NSString *)aName forElement:(ANXMLElement*)aXMLElement error:(NSError **)error; + ++ (NSString*) attributeName:(ANXMLAttribute*)aXMLAttribute; ++ (NSString*) attributeName:(ANXMLAttribute*)aXMLAttribute error:(NSError **)error; ++ (NSString*) attributeValue:(ANXMLAttribute*)aXMLAttribute; ++ (NSString*) attributeValue:(ANXMLAttribute*)aXMLAttribute error:(NSError **)error; + ++ (ANXMLElement*) nextSiblingNamed:(NSString*)aName searchFromElement:(ANXMLElement*)aXMLElement; ++ (ANXMLElement*) childElementNamed:(NSString*)aName parentElement:(ANXMLElement*)aParentXMLElement; + ++ (ANXMLElement*) nextSiblingNamed:(NSString*)aName searchFromElement:(ANXMLElement*)aXMLElement error:(NSError **)error; ++ (ANXMLElement*) childElementNamed:(NSString*)aName parentElement:(ANXMLElement*)aParentXMLElement error:(NSError **)error; + +/** Iterate through all elements found using query. + + Inspiration taken from John Blanco's RaptureXML https://github.com/ZaBlanc/RaptureXML + */ ++ (void)iterateElementsForQuery:(NSString *)query fromElement:(ANXMLElement *)anElement withBlock:(ANXMLIterateBlock)iterateBlock; ++ (void)iterateAttributesOfElement:(ANXMLElement *)anElement withBlock:(ANXMLIterateAttributeBlock)iterateBlock; + + +@end diff --git a/sdk/XMLParsing/ANXML.m b/sdk/XMLParsing/ANXML.m new file mode 100755 index 000000000..9fe6a9fee --- /dev/null +++ b/sdk/XMLParsing/ANXML.m @@ -0,0 +1,972 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +// ================================================================================================ +// TBXML.m +// Fast processing of XML files +// +// ================================================================================================ +// Created by Tom Bradley on 21/10/2009. +// Version 1.5 +// +// Copyright 2012 71Squared All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// ================================================================================================ + +#import "ANXML.h" + +// ================================================================================================ +// Private methods +// ================================================================================================ +@interface ANXML (Private) ++ (NSString *) errorTextForCode:(int)code; ++ (NSError *) errorWithCode:(int)code; ++ (NSError *) errorWithCode:(int)code userInfo:(NSDictionary *)userInfo; +- (void) decodeBytes; +- (int) allocateBytesOfLength:(long)length error:(NSError **)error; +- (ANXMLElement*) nextAvailableElement; +- (ANXMLAttribute*) nextAvailableAttribute; +@end + +// ================================================================================================ +// Public Implementation +// ================================================================================================ +@implementation ANXML + +@synthesize rootXMLElement; + ++ (id)newANXMLWithXMLString:(NSString*)aXMLString { + return [[ANXML alloc] initWithXMLString:aXMLString]; +} + ++ (id)newANXMLWithXMLString:(NSString*)aXMLString error:(NSError *__autoreleasing *)error { + return [[ANXML alloc] initWithXMLString:aXMLString error:error]; +} + ++ (id)newANXMLWithXMLData:(NSData*)aData { + return [[ANXML alloc] initWithXMLData:aData]; +} + ++ (id)newANXMLWithXMLData:(NSData*)aData error:(NSError *__autoreleasing *)error { + return [[ANXML alloc] initWithXMLData:aData error:error]; +} + ++ (id)newANXMLWithXMLFile:(NSString*)aXMLFile { + return [[ANXML alloc] initWithXMLFile:aXMLFile]; +} + ++ (id)newANXMLWithXMLFile:(NSString*)aXMLFile error:(NSError *__autoreleasing *)error { + return [[ANXML alloc] initWithXMLFile:aXMLFile error:error]; +} + ++ (id)newANXMLWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension { + return [[ANXML alloc] initWithXMLFile:aXMLFile fileExtension:aFileExtension]; +} + ++ (id)newANXMLWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension error:(NSError *__autoreleasing *)error { + return [[ANXML alloc] initWithXMLFile:aXMLFile fileExtension:aFileExtension error:error]; +} + +- (id)init { + self = [super init]; + if (self != nil) { + rootXMLElement = nil; + + currentElementBuffer = 0; + currentAttributeBuffer = 0; + + currentElement = 0; + currentAttribute = 0; + + bytes = 0; + bytesLength = 0; + } + return self; +} +- (id)initWithXMLString:(NSString*)aXMLString { + NSError *error = nil; + return [self initWithXMLString:aXMLString error:&error]; +} + +- (id)initWithXMLString:(NSString*)aXMLString error:(NSError *__autoreleasing *)error { + self = [self init]; + if (self != nil) { + + + // allocate memory for byte array + int result = [self allocateBytesOfLength:[aXMLString lengthOfBytesUsingEncoding:NSUTF8StringEncoding] error:error]; + + // if an error occured, return + if (result != D_ANXML_SUCCESS) + return self; + + // copy string to byte array + [aXMLString getBytes:bytes maxLength:bytesLength usedLength:0 encoding:NSUTF8StringEncoding options:NSStringEncodingConversionAllowLossy range:NSMakeRange(0, bytesLength) remainingRange:nil]; + + // set null terminator at end of byte array + bytes[bytesLength] = 0; + + // decode xml data + [self decodeBytes]; + + // Check for root element + if (error && !*error && !self.rootXMLElement) { + *error = [ANXML errorWithCode:D_ANXML_DECODE_FAILURE]; + } + } + return self; +} + +- (id)initWithXMLData:(NSData*)aData { + NSError *error = nil; + return [self initWithXMLData:aData error:&error]; +} + +- (id)initWithXMLData:(NSData*)aData error:(NSError **)error { + self = [self init]; + if (self != nil) { + // decode aData + [self decodeData:aData withError:error]; + } + + return self; +} + +- (id)initWithXMLFile:(NSString*)aXMLFile { + NSError *error = nil; + return [self initWithXMLFile:aXMLFile error:&error]; +} + +- (id)initWithXMLFile:(NSString*)aXMLFile error:(NSError **)error { + NSString * filename = [aXMLFile stringByDeletingPathExtension]; + NSString * extension = [aXMLFile pathExtension]; + + self = [self initWithXMLFile:filename fileExtension:extension error:error]; + if (self != nil) { + + } + return self; +} + +- (id)initWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension { + NSError *error = nil; + return [self initWithXMLFile:aXMLFile fileExtension:aFileExtension error:&error]; +} + +- (id)initWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension error:(NSError **)error { + self = [self init]; + if (self != nil) { + + NSData * data; + + // Get the bundle that this class resides in. This allows to load resources from the app bundle when running unit tests. + NSString * bundlePath = [[NSBundle bundleForClass:[self class]] pathForResource:aXMLFile ofType:aFileExtension]; + + if (!bundlePath) { + if (error) { + NSDictionary * userInfo = [NSDictionary dictionaryWithObjectsAndKeys:[aXMLFile stringByAppendingPathExtension:aFileExtension], NSFilePathErrorKey, nil]; + *error = [ANXML errorWithCode:D_ANXML_FILE_NOT_FOUND_IN_BUNDLE userInfo:userInfo]; + } + } else { + SEL dataWithUncompressedContentsOfFile = NSSelectorFromString(@"dataWithUncompressedContentsOfFile:"); + + // Get uncompressed file contents if ANXML+Compression has been included + if ([[NSData class] respondsToSelector:dataWithUncompressedContentsOfFile]) { + + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Warc-performSelector-leaks" + data = [[NSData class] performSelector:dataWithUncompressedContentsOfFile withObject:bundlePath]; + #pragma clang diagnostic pop + + } else { + data = [NSData dataWithContentsOfFile:bundlePath]; + } + + // decode data + [self decodeData:data withError:error]; + + // Check for root element + if (error && !*error && !self.rootXMLElement) { + *error = [ANXML errorWithCode:D_ANXML_DECODE_FAILURE]; + } + } + } + return self; +} + +- (int) decodeData:(NSData*)data { + NSError *error = nil; + return [self decodeData:data withError:&error]; +} + +- (int) decodeData:(NSData*)data withError:(NSError **)error { + + NSError *localError = nil; + + // allocate memory for byte array + int result = [self allocateBytesOfLength:[data length] error:&localError]; + + // ensure no errors during allocation + if (result == D_ANXML_SUCCESS) { + + // copy data to byte array + [data getBytes:bytes length:bytesLength]; + + // set null terminator at end of byte array + bytes[bytesLength] = 0; + + // decode xml data + [self decodeBytes]; + + if (!self.rootXMLElement) { + localError = [ANXML errorWithCode:D_ANXML_DECODE_FAILURE]; + } + } + + // assign local error to pointer + if (error) *error = localError; + + // return success or error code + return localError == nil ? D_ANXML_SUCCESS : (int)[localError code]; +} + +@end + + +// ================================================================================================ +// Static Functions Implementation +// ================================================================================================ + +#pragma mark - +#pragma mark Static Functions implementation + +@implementation ANXML (StaticFunctions) + ++ (NSString*) elementName:(ANXMLElement*)aXMLElement { + if (nil == aXMLElement->name) return @""; + return [NSString stringWithCString:&aXMLElement->name[0] encoding:NSUTF8StringEncoding]; +} + ++ (NSString*) elementName:(ANXMLElement*)aXMLElement error:(NSError **)error { + // check for nil element + if (nil == aXMLElement) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_IS_NIL]; + return @""; + } + + // check for nil element name + if (nil == aXMLElement->name || strlen(aXMLElement->name) == 0) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_NAME_IS_NIL]; + return @""; + } + + return [NSString stringWithCString:&aXMLElement->name[0] encoding:NSUTF8StringEncoding]; +} + ++ (NSString*) attributeName:(ANXMLAttribute*)aXMLAttribute { + if (nil == aXMLAttribute->name) return @""; + return [NSString stringWithCString:&aXMLAttribute->name[0] encoding:NSUTF8StringEncoding]; +} + ++ (NSString*) attributeName:(ANXMLAttribute*)aXMLAttribute error:(NSError **)error { + // check for nil attribute + if (nil == aXMLAttribute) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ATTRIBUTE_IS_NIL]; + return @""; + } + + // check for nil attribute name + if (nil == aXMLAttribute->name) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ATTRIBUTE_NAME_IS_NIL]; + return @""; + } + + return [NSString stringWithCString:&aXMLAttribute->name[0] encoding:NSUTF8StringEncoding]; +} + + ++ (NSString*) attributeValue:(ANXMLAttribute*)aXMLAttribute { + if (nil == aXMLAttribute->value) return @""; + return [NSString stringWithCString:&aXMLAttribute->value[0] encoding:NSUTF8StringEncoding]; +} + ++ (NSString*) attributeValue:(ANXMLAttribute*)aXMLAttribute error:(NSError **)error { + // check for nil attribute + if (nil == aXMLAttribute) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ATTRIBUTE_IS_NIL]; + return @""; + } + + return [NSString stringWithCString:&aXMLAttribute->value[0] encoding:NSUTF8StringEncoding]; +} + ++ (NSString*) textForElement:(ANXMLElement*)aXMLElement { + if (nil == aXMLElement->text) return @""; + return [NSString stringWithCString:&aXMLElement->text[0] encoding:NSUTF8StringEncoding]; +} + ++ (NSString*) textForElement:(ANXMLElement*)aXMLElement error:(NSError **)error { + // check for nil element + if (nil == aXMLElement) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_IS_NIL]; + return @""; + } + + // check for nil text value + if (nil == aXMLElement->text || strlen(aXMLElement->text) == 0) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_TEXT_IS_NIL]; + return @""; + } + + return [NSString stringWithCString:&aXMLElement->text[0] encoding:NSUTF8StringEncoding]; +} + ++ (NSString*) valueOfAttributeNamed:(NSString *)aName forElement:(ANXMLElement*)aXMLElement { + const char * name = [aName cStringUsingEncoding:NSUTF8StringEncoding]; + NSString * value = nil; + ANXMLAttribute * attribute = aXMLElement->firstAttribute; + while (attribute) { + if (strlen(attribute->name) == strlen(name) && memcmp(attribute->name,name,strlen(name)) == 0) { + value = [NSString stringWithCString:&attribute->value[0] encoding:NSUTF8StringEncoding]; + break; + } + attribute = attribute->next; + } + return value; +} + ++ (NSString*) valueOfAttributeNamed:(NSString *)aName forElement:(ANXMLElement*)aXMLElement error:(NSError **)error { + // check for nil element + if (nil == aXMLElement) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_IS_NIL]; + return @""; + } + + // check for nil name parameter + if (nil == aName) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ATTRIBUTE_NAME_IS_NIL]; + return @""; + } + + const char * name = [aName cStringUsingEncoding:NSUTF8StringEncoding]; + NSString * value = nil; + + ANXMLAttribute * attribute = aXMLElement->firstAttribute; + while (attribute) { + if (strlen(attribute->name) == strlen(name) && memcmp(attribute->name,name,strlen(name)) == 0) { + if (attribute->value[0]) + value = [NSString stringWithCString:&attribute->value[0] encoding:NSUTF8StringEncoding]; + else + value = @""; + + break; + } + attribute = attribute->next; + } + + // check for attribute not found + if (!value) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ATTRIBUTE_NOT_FOUND]; + return @""; + } + + return value; +} + ++ (ANXMLElement*) childElementNamed:(NSString*)aName parentElement:(ANXMLElement*)aParentXMLElement{ + + ANXMLElement * xmlElement = aParentXMLElement->firstChild; + const char * name = [aName cStringUsingEncoding:NSUTF8StringEncoding]; + while (xmlElement) { + if (strlen(xmlElement->name) == strlen(name) && memcmp(xmlElement->name,name,strlen(name)) == 0) { + return xmlElement; + } + xmlElement = xmlElement->nextSibling; + } + return nil; +} + ++ (ANXMLElement*) childElementNamed:(NSString*)aName parentElement:(ANXMLElement*)aParentXMLElement error:(NSError **)error { + // check for nil element + if (nil == aParentXMLElement) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_IS_NIL]; + return nil; + } + + // check for nil name parameter + if (nil == aName) { + if (error) *error = [ANXML errorWithCode:D_ANXML_PARAM_NAME_IS_NIL]; + return nil; + } + + ANXMLElement * xmlElement = aParentXMLElement->firstChild; + const char * name = [aName cStringUsingEncoding:NSUTF8StringEncoding]; + while (xmlElement) { + if (strlen(xmlElement->name) == strlen(name) && memcmp(xmlElement->name,name,strlen(name)) == 0) { + return xmlElement; + } + xmlElement = xmlElement->nextSibling; + } + + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_NOT_FOUND]; + + return nil; +} + ++ (ANXMLElement*) nextSiblingNamed:(NSString*)aName searchFromElement:(ANXMLElement*)aXMLElement{ + ANXMLElement * xmlElement = aXMLElement->nextSibling; + const char * name = [aName cStringUsingEncoding:NSUTF8StringEncoding]; + while (xmlElement) { + if (strlen(xmlElement->name) == strlen(name) && memcmp(xmlElement->name,name,strlen(name)) == 0) { + return xmlElement; + } + xmlElement = xmlElement->nextSibling; + } + return nil; +} + ++ (ANXMLElement*) nextSiblingNamed:(NSString*)aName searchFromElement:(ANXMLElement*)aXMLElement error:(NSError **)error { + // check for nil element + if (nil == aXMLElement) { + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_IS_NIL]; + return nil; + } + + // check for nil name parameter + if (nil == aName) { + if (error) *error = [ANXML errorWithCode:D_ANXML_PARAM_NAME_IS_NIL]; + return nil; + } + + ANXMLElement * xmlElement = aXMLElement->nextSibling; + const char * name = [aName cStringUsingEncoding:NSUTF8StringEncoding]; + while (xmlElement) { + if (strlen(xmlElement->name) == strlen(name) && memcmp(xmlElement->name,name,strlen(name)) == 0) { + return xmlElement; + } + xmlElement = xmlElement->nextSibling; + } + + if (error) *error = [ANXML errorWithCode:D_ANXML_ELEMENT_NOT_FOUND]; + + return nil; +} + ++ (void)iterateElementsForQuery:(NSString *)query fromElement:(ANXMLElement *)anElement withBlock:(ANXMLIterateBlock)iterateBlock { + + NSArray *components = [query componentsSeparatedByString:@"."]; + ANXMLElement *currANXMLElement = anElement; + + // navigate down + for (NSInteger i=0; i < components.count; ++i) { + NSString *iTagName = [components objectAtIndex:i]; + + if ([iTagName isEqualToString:@"*"]) { + currANXMLElement = currANXMLElement->firstChild; + + // different behavior depending on if this is the end of the query or midstream + if (i < (components.count - 1)) { + // midstream + do { + NSString *restOfQuery = [[components subarrayWithRange:NSMakeRange(i + 1, components.count - i - 1)] componentsJoinedByString:@"."]; + [ANXML iterateElementsForQuery:restOfQuery fromElement:currANXMLElement withBlock:iterateBlock]; + } while ((currANXMLElement = currANXMLElement->nextSibling)); + + } + } else { + currANXMLElement = [ANXML childElementNamed:iTagName parentElement:currANXMLElement]; + } + + if (!currANXMLElement) { + break; + } + } + + if (currANXMLElement) { + // enumerate + NSString *childTagName = [components lastObject]; + + if ([childTagName isEqualToString:@"*"]) { + childTagName = nil; + } + + do { + iterateBlock(currANXMLElement); + } while (childTagName ? (currANXMLElement = [ANXML nextSiblingNamed:childTagName searchFromElement:currANXMLElement]) : (currANXMLElement = currANXMLElement->nextSibling)); + } +} + ++ (void)iterateAttributesOfElement:(ANXMLElement *)anElement withBlock:(ANXMLIterateAttributeBlock)iterateAttributeBlock { + + // Obtain first attribute from element + ANXMLAttribute * attribute = anElement->firstAttribute; + + // if attribute is valid + + while (attribute) { + // Call the iterateAttributeBlock with the attribute, it's name and value + iterateAttributeBlock(attribute, [ANXML attributeName:attribute], [ANXML attributeValue:attribute]); + + // Obtain the next attribute + attribute = attribute->next; + } +} + +@end + + +// ================================================================================================ +// Private Implementation +// ================================================================================================ + +#pragma mark - +#pragma mark Private implementation + +@implementation ANXML (Private) + ++ (NSString *) errorTextForCode:(int)code { + NSString * codeText = @""; + + switch (code) { + case D_ANXML_DATA_NIL: codeText = @"Data is nil"; break; + case D_ANXML_DECODE_FAILURE: codeText = @"Decode failure"; break; + case D_ANXML_MEMORY_ALLOC_FAILURE: codeText = @"Unable to allocate memory"; break; + case D_ANXML_FILE_NOT_FOUND_IN_BUNDLE: codeText = @"File not found in bundle"; break; + + case D_ANXML_ELEMENT_IS_NIL: codeText = @"Element is nil"; break; + case D_ANXML_ELEMENT_NAME_IS_NIL: codeText = @"Element name is nil"; break; + case D_ANXML_ATTRIBUTE_IS_NIL: codeText = @"Attribute is nil"; break; + case D_ANXML_ATTRIBUTE_NAME_IS_NIL: codeText = @"Attribute name is nil"; break; + case D_ANXML_ELEMENT_TEXT_IS_NIL: codeText = @"Element text is nil"; break; + case D_ANXML_PARAM_NAME_IS_NIL: codeText = @"Parameter name is nil"; break; + case D_ANXML_ATTRIBUTE_NOT_FOUND: codeText = @"Attribute not found"; break; + case D_ANXML_ELEMENT_NOT_FOUND: codeText = @"Element not found"; break; + + default: codeText = @"No Error Description!"; break; + } + + return codeText; +} + ++ (NSError *) errorWithCode:(int)code { + + NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:[ANXML errorTextForCode:code], NSLocalizedDescriptionKey, nil]; + + return [NSError errorWithDomain:D_ANXML_DOMAIN + code:code + userInfo:userInfo]; +} + ++ (NSError *) errorWithCode:(int)code userInfo:(NSMutableDictionary *)someUserInfo { + + NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:someUserInfo]; + [userInfo setValue:[ANXML errorTextForCode:code] forKey:NSLocalizedDescriptionKey]; + + return [NSError errorWithDomain:D_ANXML_DOMAIN + code:code + userInfo:userInfo]; +} + +- (int) allocateBytesOfLength:(long)length error:(NSError **)error { + bytesLength = length; + + NSError *localError = nil; + + if(!length) { + localError = [ANXML errorWithCode:D_ANXML_DATA_NIL]; + } + + bytes = malloc(bytesLength+1); + + if(!bytes) { + localError = [ANXML errorWithCode:D_ANXML_MEMORY_ALLOC_FAILURE]; + } + + if (error) *error = localError; + + return localError == nil ? D_ANXML_SUCCESS : (int)[localError code]; +} + +- (void) decodeBytes { + + // ----------------------------------------------------------------------------- + // Process xml + // ----------------------------------------------------------------------------- + + // set elementStart pointer to the start of our xml + char * elementStart=bytes; + + // set parent element to nil + ANXMLElement * parentXMLElement = nil; + + // find next element start + while ((elementStart = strstr(elementStart,"<"))) { + + // detect comment section + if (strncmp(elementStart,"") + 3; + continue; + } + + // detect cdata section within element text + int isCDATA = strncmp(elementStart,""); + + // find start of next element skipping any cdata sections within text + char * elementEnd = CDATAEnd; + + // find next open tag + elementEnd = strstr(elementEnd,"<"); + // if open tag is a cdata section + while (strncmp(elementEnd,""); + // find next open tag + elementEnd = strstr(elementEnd,"<"); + } + + // calculate length of cdata content + long CDATALength = CDATAEnd-elementStart; + + // calculate total length of text + long textLength = elementEnd-elementStart; + + // remove begining cdata section tag + memcpy(elementStart, elementStart+9, CDATAEnd-elementStart-9); + + // remove ending cdata section tag + memcpy(CDATAEnd-9, CDATAEnd+3, textLength-CDATALength-3); + + // blank out end of text + memset(elementStart+textLength-12,' ',12); + + // set new search start position + elementStart = CDATAEnd-9; + continue; + } + + + // find element end, skipping any cdata sections within attributes + char * elementEnd = elementStart+1; + while ((elementEnd = strpbrk(elementEnd, "<>"))) { + if (strncmp(elementEnd,"")+3; + } else { + break; + } + } + + if (!elementEnd) break; + + // null terminate element end + if (elementEnd) *elementEnd = 0; + + // null terminate element start so previous element text doesnt overrun + *elementStart = 0; + + // get element name start + char * elementNameStart = elementStart+1; + + // ignore tags that start with ? or ! unless cdata "text) { + // trim whitespace from start of text + while (isspace(*parentXMLElement->text)) + parentXMLElement->text++; + + // trim whitespace from end of text + char * end = parentXMLElement->text + strlen(parentXMLElement->text)-1; + while (end > parentXMLElement->text && isspace(*end)) + *end--=0; + } + + parentXMLElement = parentXMLElement->parentElement; + + // if parent element has children clear text + if (parentXMLElement && parentXMLElement->firstChild) + parentXMLElement->text = 0; + + } + continue; + } + + + // is this element opening and closing + BOOL selfClosingElement = NO; + if (*(elementEnd-1) == '/') { + selfClosingElement = YES; + } + + + // create new xmlElement struct + ANXMLElement * xmlElement = [self nextAvailableElement]; + + // set element name + xmlElement->name = elementNameStart; + + // if there is a parent element + if (parentXMLElement) { + + // if this is first child of parent element + if (parentXMLElement->currentChild) { + // set next child element in list + parentXMLElement->currentChild->nextSibling = xmlElement; + xmlElement->previousSibling = parentXMLElement->currentChild; + + parentXMLElement->currentChild = xmlElement; + + + } else { + // set first child element + parentXMLElement->currentChild = xmlElement; + parentXMLElement->firstChild = xmlElement; + } + + xmlElement->parentElement = parentXMLElement; + } + + + // in the following xml the ">" is replaced with \0 by elementEnd. + // element may contain no atributes and would return nil while looking for element name end + // + // find end of element name + char * elementNameEnd = strpbrk(xmlElement->name," /\n"); + + + // if end was found check for attributes + if (elementNameEnd) { + + // null terminate end of elemenet name + *elementNameEnd = 0; + + char * chr = elementNameEnd; + char * name = nil; + char * value = nil; + char * CDATAStart = nil; + char * CDATAEnd = nil; + ANXMLAttribute * lastXMLAttribute = nil; + ANXMLAttribute * xmlAttribute = nil; + BOOL singleQuote = NO; + + int mode = ANXML_ATTRIBUTE_NAME_START; + + // loop through all characters within element + while (chr++ < elementEnd) { + + switch (mode) { + // look for start of attribute name + case ANXML_ATTRIBUTE_NAME_START: + if (isspace(*chr)) continue; + name = chr; + mode = ANXML_ATTRIBUTE_NAME_END; + break; + // look for end of attribute name + case ANXML_ATTRIBUTE_NAME_END: + if (isspace(*chr) || *chr == '=') { + *chr = 0; + mode = ANXML_ATTRIBUTE_VALUE_START; + } + break; + // look for start of attribute value + case ANXML_ATTRIBUTE_VALUE_START: + if (isspace(*chr)) continue; + if (*chr == '"' || *chr == '\'') { + value = chr+1; + mode = ANXML_ATTRIBUTE_VALUE_END; + if (*chr == '\'') + singleQuote = YES; + else + singleQuote = NO; + } + break; + // look for end of attribute value + case ANXML_ATTRIBUTE_VALUE_END: + if (*chr == '<' && strncmp(chr, ""); + + // remove end cdata tag + memcpy(CDATAEnd, CDATAEnd+3, strlen(CDATAEnd)-2); + } + + + // create new attribute + xmlAttribute = [self nextAvailableAttribute]; + + // if this is the first attribute found, set pointer to this attribute on element + if (!xmlElement->firstAttribute) xmlElement->firstAttribute = xmlAttribute; + // if previous attribute found, link this attribute to previous one + if (lastXMLAttribute) lastXMLAttribute->next = xmlAttribute; + // set last attribute to this attribute + lastXMLAttribute = xmlAttribute; + + // set attribute name & value + xmlAttribute->name = name; + xmlAttribute->value = value; + + // clear name and value pointers + name = nil; + value = nil; + + // start looking for next attribute + mode = ANXML_ATTRIBUTE_NAME_START; + } + break; + // look for end of cdata + case ANXML_ATTRIBUTE_CDATA_END: + if (*chr == ']') { + if (strncmp(chr, "]]>", 3) == 0) { + mode = ANXML_ATTRIBUTE_VALUE_END; + } + } + break; + default: + break; + } + } + } + + // if tag is not self closing, set parent to current element + if (!selfClosingElement) { + // set text on element to element end+1 + if (*(elementEnd+1) != '>') + xmlElement->text = elementEnd+1; + + parentXMLElement = xmlElement; + } + + // start looking for next element after end of current element + elementStart = elementEnd+1; + } +} + +// Deallocate used memory +- (void) dealloc { + + if (bytes) { + free(bytes); + bytes = nil; + } + + while (currentElementBuffer) { + if (currentElementBuffer->elements) + free(currentElementBuffer->elements); + + if (currentElementBuffer->previous) { + currentElementBuffer = currentElementBuffer->previous; + free(currentElementBuffer->next); + } else { + free(currentElementBuffer); + currentElementBuffer = 0; + } + } + + while (currentAttributeBuffer) { + if (currentAttributeBuffer->attributes) + free(currentAttributeBuffer->attributes); + + if (currentAttributeBuffer->previous) { + currentAttributeBuffer = currentAttributeBuffer->previous; + free(currentAttributeBuffer->next); + } else { + free(currentAttributeBuffer); + currentAttributeBuffer = 0; + } + } + +#ifndef ANXML_ARC_ENABLED + [super dealloc]; +#endif +} + +- (ANXMLElement*) nextAvailableElement { + currentElement++; + + if (!currentElementBuffer) { + currentElementBuffer = calloc(1, sizeof(ANXMLElementBuffer)); + currentElementBuffer->elements = (ANXMLElement*)calloc(1,sizeof(ANXMLElement)*ANXML_MAX_ELEMENTS); + currentElement = 0; + rootXMLElement = ¤tElementBuffer->elements[currentElement]; + } else if (currentElement >= ANXML_MAX_ELEMENTS) { + currentElementBuffer->next = calloc(1, sizeof(ANXMLElementBuffer)); + currentElementBuffer->next->previous = currentElementBuffer; + currentElementBuffer = currentElementBuffer->next; + currentElementBuffer->elements = (ANXMLElement*)calloc(1,sizeof(ANXMLElement)*ANXML_MAX_ELEMENTS); + currentElement = 0; + } + + return ¤tElementBuffer->elements[currentElement]; +} + +- (ANXMLAttribute*) nextAvailableAttribute { + currentAttribute++; + + if (!currentAttributeBuffer) { + currentAttributeBuffer = calloc(1, sizeof(ANXMLAttributeBuffer)); + currentAttributeBuffer->attributes = (ANXMLAttribute*)calloc(ANXML_MAX_ATTRIBUTES,sizeof(ANXMLAttribute)); + currentAttribute = 0; + } else if (currentAttribute >= ANXML_MAX_ATTRIBUTES) { + currentAttributeBuffer->next = calloc(1, sizeof(ANXMLAttributeBuffer)); + currentAttributeBuffer->next->previous = currentAttributeBuffer; + currentAttributeBuffer = currentAttributeBuffer->next; + currentAttributeBuffer->attributes = (ANXMLAttribute*)calloc(ANXML_MAX_ATTRIBUTES,sizeof(ANXMLAttribute)); + currentAttribute = 0; + } + + return ¤tAttributeBuffer->attributes[currentAttribute]; +} + +@end diff --git a/sdk/internal/ANAdFetcher.m b/sdk/internal/ANAdFetcher.m index f1c9f96f4..50c4ac764 100644 --- a/sdk/internal/ANAdFetcher.m +++ b/sdk/internal/ANAdFetcher.m @@ -27,6 +27,8 @@ #import "NSTimer+ANCategory.h" #import "UIView+ANCategory.h" +#import "ANVideoAd.h" + NSString *const kANAdFetcherWillRequestAdNotification = @"kANAdFetcherWillRequestAdNotification"; NSString *const kANAdFetcherAdRequestURLKey = @"kANAdFetcherAdRequestURLKey"; NSString *const kANAdFetcherWillInstantiateMediatedClassNotification = @"kANAdFetcherWillInstantiateMediatedClassKey"; @@ -42,6 +44,7 @@ @interface ANAdFetcher () 0) { // mediated [self handleMediatedAds:self.mediatedAds]; } + else if(self.videoAd){ + [self handleVideoAd:self.videoAd]; + } else { // no mediatedAds, parse for non-mediated ad response [self handleStandardAd:response.standardAd]; @@ -276,8 +283,22 @@ - (void)handleStandardAd:(ANStandardAd *)standardAd { HTML:standardAd.content webViewBaseURL:[NSURL URLWithString:self.ANBaseURL]]; self.standardAdView.webViewController.loadingDelegate = self; + } +- (void)handleVideoAd:(ANVideoAd *)videoAd { + +// self.playerController = [[ANPlayerViewController alloc] init]; +// ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.playerController]; +// [self processFinalResponse:response]; + + ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.videoAd]; + [self processFinalResponse:response]; + + +} + + - (void)didCompleteFirstLoadFromWebViewController:(ANAdWebViewController *)controller { if (self.standardAdView.webViewController == controller) { ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.standardAdView]; diff --git a/sdk/internal/ANAdServerResponse.h b/sdk/internal/ANAdServerResponse.h index 85911e9b8..44e1c89b5 100644 --- a/sdk/internal/ANAdServerResponse.h +++ b/sdk/internal/ANAdServerResponse.h @@ -16,6 +16,7 @@ #import #import "ANStandardAd.h" #import "ANNativeStandardAdResponse.h" +#import "ANVideoAd.h" @interface ANAdServerResponse : NSObject @@ -29,6 +30,8 @@ @property (nonatomic, readonly, strong) NSMutableArray *standardAds; @property (nonatomic, readonly, strong) NSMutableArray *mediatedAds; @property (nonatomic, readonly, strong) NSMutableArray *nativeAds; +@property (nonatomic, readonly, strong) ANVideoAd *videoAd; +@property (nonatomic, readonly, strong) NSMutableArray *videoAds; - (instancetype)initWithContent:(NSString *)htmlContent width:(NSInteger)width diff --git a/sdk/internal/ANAdServerResponse.m b/sdk/internal/ANAdServerResponse.m index 7394991d3..b6c537c0b 100644 --- a/sdk/internal/ANAdServerResponse.m +++ b/sdk/internal/ANAdServerResponse.m @@ -17,6 +17,7 @@ #import "ANLogging.h" #import "ANGlobal.h" #import "ANMediatedAd.h" +#import "ANVast.h" static NSString *const kANAdServerResponseKeyStatus = @"status"; static NSString *const kANAdServerResponseKeyType = @"type"; @@ -72,6 +73,8 @@ @interface ANAdServerResponse () @property (nonatomic, readwrite, strong) NSMutableArray *standardAds; @property (nonatomic, readwrite, strong) NSMutableArray *mediatedAds; @property (nonatomic, readwrite, strong) NSMutableArray *nativeAds; +@property (nonatomic, readwrite, strong) ANVideoAd *videoAd; +@property (nonatomic, readwrite, strong) NSMutableArray *videoAds; @end @@ -113,7 +116,9 @@ - (void)processResponseData:(NSData *)data { self.mediatedAds = [[self class] mediatedAdsFromJSONResponse:jsonResponse]; self.nativeAds = [[self class] nativeAdsFromJSONResponse:jsonResponse]; self.nativeAd = [self.nativeAds firstObject]; - if (self.standardAd || self.mediatedAds.count || self.nativeAds.count) { + self.videoAds = [[self class] videoAdsFromJSONResponse:jsonResponse]; + self.videoAd = [self.videoAds firstObject]; + if (self.standardAd || self.mediatedAds.count || self.nativeAds.count || self.videoAd) { self.containsAds = YES; } } @@ -191,6 +196,19 @@ + (NSMutableArray *)nativeAdsFromJSONResponse:(NSDictionary *)jsonResponse { return parsedNativeAdObjects; } ++ (NSMutableArray *)videoAdsFromJSONResponse:(NSDictionary *)jsonResponse { + NSArray *videoAdDictArray = [[self class] validDictionaryArrayForKey:kANAdServerResponseKeyAds + inJSONResponse:jsonResponse]; + NSMutableArray *parsedVideoAdObjects = [[NSMutableArray alloc] init]; + [videoAdDictArray enumerateObjectsUsingBlock:^(NSDictionary *videoAdDict, NSUInteger idx, BOOL *stop) { + ANVideoAd *videoAd = [[self class] parseVideoAdFromDictionary:videoAdDict]; + if (videoAd) { + [parsedVideoAdObjects addObject:videoAd]; + } + }]; + return parsedVideoAdObjects; +} + + (NSMutableArray *)validDictionaryArrayForKey:(NSString *)key inJSONResponse:(NSDictionary *)jsonResponse { if ([jsonResponse[key] isKindOfClass:[NSArray class]]) { @@ -215,6 +233,7 @@ + (ANStandardAd *)parseStandardAdFromDictionary:(NSDictionary *)standardAdDict { ad.width = [standardAdDict[kANAdServerResponseKeyWidth] description]; ad.height = [standardAdDict[kANAdServerResponseKeyHeight] description]; ad.content = [standardAdDict[kANAdServerResponseKeyContent] description]; + if (!ad.content || [ad.content length] == 0) { ANLogError(@"blank_ad"); return nil; @@ -348,4 +367,34 @@ + (ANNativeStandardAdResponse *)parseNativeAdFromDictionary:(NSDictionary *)nati return nil; } ++ (ANVideoAd *)parseVideoAdFromDictionary:(NSDictionary *)videoAdDict { + if (videoAdDict) { + ANVideoAd *ad = [[ANVideoAd alloc] init]; + ad.type = [videoAdDict[kANAdServerResponseKeyType] description]; + ad.width = [videoAdDict[kANAdServerResponseKeyWidth] description]; + ad.height = [videoAdDict[kANAdServerResponseKeyHeight] description]; + ad.content = [videoAdDict[kANAdServerResponseKeyContent] description]; + + //Video Implementation - Deepak + NSError *error; + ad.vastDataModel = [[ANVast alloc] init]; + [ad.vastDataModel parseVastResponseWithURL:nil error:&error]; + //Video Implementation - Deepak + + if (!ad.content || [ad.content length] == 0) { + ANLogError(@"blank_ad"); + return nil; + } + + NSRange mraidJSRange = [ad.content rangeOfString:kANAdServerResponseMraidJSFilename]; + if (mraidJSRange.location != NSNotFound) { + ad.mraid = YES; + } + + return ad; + } + return nil; +} + + @end \ No newline at end of file diff --git a/sdk/internal/ANAdViewInternalDelegate.h b/sdk/internal/ANAdViewInternalDelegate.h index 2f1a49d0e..3943c1f63 100644 --- a/sdk/internal/ANAdViewInternalDelegate.h +++ b/sdk/internal/ANAdViewInternalDelegate.h @@ -14,6 +14,7 @@ */ #import +#import "ANGlobal.h" @protocol ANAdViewInternalDelegate diff --git a/sdk/internal/ANCircularAnimationView.h b/sdk/internal/ANCircularAnimationView.h new file mode 100644 index 000000000..6bcd0d50b --- /dev/null +++ b/sdk/internal/ANCircularAnimationView.h @@ -0,0 +1,33 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import + +@protocol ANCircularAnimationViewDelegate + +- (void) closeButtonClicked; + +@end + +@interface ANCircularAnimationView : UIControl + +@property (nonatomic, weak) id delegate; +@property (nonatomic) CGFloat skipOffset; +- (void) performCircularAnimationWithStartTime:(NSDate *)startDate; + +@end diff --git a/sdk/internal/ANCircularAnimationView.m b/sdk/internal/ANCircularAnimationView.m new file mode 100644 index 000000000..62a22ae8a --- /dev/null +++ b/sdk/internal/ANCircularAnimationView.m @@ -0,0 +1,187 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANCircularAnimationView.h" + +@interface ANCircularAnimationView (){ + NSDate *startTime; + BOOL isButtonClickable; +} + +@property (nonatomic, strong) CAShapeLayer *circularProgressLayer; +@property (nonatomic, strong) UILabel *countdownlabel; + +@end + +@implementation ANCircularAnimationView + +- (instancetype)init{ + self = [super init]; + if (self) { + [self createCircularAnimationView]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder{ + self = [super initWithCoder:aDecoder]; + if (self) { + [self createCircularAnimationView]; + } + return self; +} + +- (instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if (self) { + [self createCircularAnimationView]; + } + return self; +} + +- (void)layoutSubviews{ + [super layoutSubviews]; +} + +- (void) createCircularAnimationView{ + _circularProgressLayer = [[CAShapeLayer alloc] init]; + self.circularProgressLayer.frame = self.bounds; + self.circularProgressLayer.fillColor = [UIColor clearColor].CGColor; + self.circularProgressLayer.strokeColor = [UIColor whiteColor].CGColor; + self.circularProgressLayer.lineCap = kCALineCapSquare; + self.circularProgressLayer.lineWidth = 4.0; + self.circularProgressLayer.strokeEnd = 0; + [self.circularProgressLayer setAffineTransform:CGAffineTransformMakeRotation(-M_PI_2)]; + [self.layer addSublayer:self.circularProgressLayer]; + self.circularProgressLayer.hidden = YES; + + [self createCountdownLabel]; + self.circularProgressLayer.path = [UIBezierPath bezierPathWithOvalInRect:self.bounds].CGPath; + + [self.layer setCornerRadius:20.0]; + + [self setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.1]]; + [self setAlpha:0.7]; +} + +- (void) performCircularAnimationWithStartTime:(NSDate *)startDate{ + + if (!startTime) { + startTime = startDate; + self.circularProgressLayer.hidden = NO; + } + + NSDate *dateNow = [NSDate date]; + NSTimeInterval timeElapsed = [dateNow timeIntervalSinceDate:startTime]; + if (timeElapsed < self.skipOffset) { + [self.countdownlabel setText:[NSString stringWithFormat:@"%ld", (long)ceil(self.skipOffset - timeElapsed)]]; + } + [self updateProgress:timeElapsed/self.skipOffset]; + if (timeElapsed >= self.skipOffset) { + self.countdownlabel.hidden = YES; + [self drawCloseButton]; + isButtonClickable = YES; + } +} + +- (void) updateProgress :(CGFloat)progress{ + if (progress > 1) { + self.circularProgressLayer.strokeEnd = 1.0; + }else if(progress < 0){ + self.circularProgressLayer.strokeEnd = 0.0; + }else{ + self.circularProgressLayer.strokeEnd = progress; + } +} + +- (void) createCountdownLabel{ + + CGRect frame = self.bounds; + + _countdownlabel = [[UILabel alloc] initWithFrame:frame]; + self.countdownlabel.center = self.center; + [self.countdownlabel setFont:[UIFont systemFontOfSize:20.0]]; + [self.countdownlabel setTextColor:[UIColor whiteColor]]; + [self.countdownlabel setTextAlignment:NSTextAlignmentCenter]; + + UIView *countdownLabelView = self.countdownlabel; + + [self addSubview:countdownLabelView]; + [self bringSubviewToFront:countdownLabelView]; + +} + +- (void) drawCloseButton{ + CGRect lineFrame = CGRectMake(10, 10, self.bounds.size.width-10, self.bounds.size.height-10); + CAShapeLayer *line1 = [[CAShapeLayer alloc] init]; + UIBezierPath *path1 = [UIBezierPath bezierPath]; + + CGPoint startPointForLine1 = CGPointMake(lineFrame.origin.x, lineFrame.origin.y); + CGPoint endPointForLine1 = CGPointMake(lineFrame.size.width, lineFrame.size.height); + + [path1 moveToPoint:startPointForLine1]; + [path1 addLineToPoint:endPointForLine1]; + + line1.path = path1.CGPath; + line1.fillColor = [UIColor clearColor].CGColor; + line1.strokeColor = [UIColor whiteColor].CGColor; + + CAShapeLayer *line2 = [[CAShapeLayer alloc] init]; + UIBezierPath *path2 = [UIBezierPath bezierPath]; + + CGPoint startPointForLine2 = CGPointMake(lineFrame.origin.x, lineFrame.size.height); + CGPoint endPointForLine2 = CGPointMake(lineFrame.size.width, lineFrame.origin.y); + + [path2 moveToPoint:startPointForLine2]; + [path2 addLineToPoint:endPointForLine2]; + + line2.path = path2.CGPath; + line2.fillColor = [UIColor clearColor].CGColor; + line2.strokeColor = [UIColor whiteColor].CGColor; + + line1.lineWidth = 3; + line2.lineWidth = 3; + + [self.layer addSublayer:line1]; + [self.layer addSublayer:line2]; + +} + +- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { + if (!isButtonClickable) { + return NO; + } + return [super beginTrackingWithTouch:touch withEvent:event]; +} + +- (void)setHighlighted:(BOOL)highlighted { + [super setHighlighted:highlighted]; + CGFloat highlightedAlphaValue = 2.0/3.0; + if (isButtonClickable) { + self.alpha = highlighted ? highlightedAlphaValue : 1.0; + } +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ + self.highlighted = NO; + if (isButtonClickable) { + [self.delegate closeButtonClicked]; + } +} + +@end diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index 786992d28..61490a39b 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -16,6 +16,14 @@ #import #import +//Version Check +#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) +#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) +#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) + + // Production #define AN_BASE_URL @"http://mediation.adnxs.com/" #define AN_MOBILE_HOSTNAME @"mediation.adnxs.com/mob" @@ -42,6 +50,8 @@ #define APPNEXUS_LEADERBOARD_SIZE CGSizeMake(728, 90) #define APPNEXUS_WIDE_SKYSCRAPER_SIZE CGSizeMake(160, 600) +#define String(charValue) [NSString stringWithCString:charValue encoding:NSUTF8StringEncoding]; + #pragma mark Constants #define kAppNexusRequestTimeoutInterval 30.0 @@ -78,6 +88,36 @@ // Buffer Limit #define kANPBBufferLimit 10 +typedef NS_ENUM(NSUInteger, ANMediaFileDeliveryMethod){ + ANMediaFileDeliveryMethodStreaming = 0, + ANMediaFileDeliveryMethodProgressive +}; + +typedef NS_ENUM(NSUInteger, ANExtensionType){ + ANExtensionTypeAdServer = 0, + ANExtensionTypeCustomTracking, + ANExtensionTypeValue, +}; + +typedef NS_ENUM(NSUInteger, ANVideoEvent){ + ANVideoEventUnknown = 0, + ANVideoEventStart, + ANVideoEventQuartileFirst, + ANVideoEventQuartileMidPoint, + ANVideoEventQuartileThird, + ANVideoEventQuartileComplete, + ANVideoEventZoomRestore, + ANVideoEventZoomFullScreen, + ANVideoEventPlay, + ANVideoEventPause, + ANVideoEventResume, + ANVideoEventRewind, + ANVideoEventMute, + ANVideoEventUnMute, + ANVideoEventStop, + ANVideoEventClose +}; + typedef NS_ENUM(NSUInteger, ANMobileEndpoint) { ANMobileEndpointProduction = 0, ANMobileEndpointClientTesting, diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index 4e2633f02..c3f0eb0ad 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -23,6 +23,10 @@ #import "ANPBBuffer.h" #import "ANPBContainerView.h" #import "ANMRAIDContainerView.h" +#import "ANVast.h" +#import "ANBrowserViewController.h" +#import "ANVideoPlayerViewController.h" +#import "ANVideoAd.h" static NSTimeInterval const kANInterstitialAdTimeout = 270.0; @@ -38,15 +42,22 @@ NSString *const kANInterstitialAdViewDateLoadedKey = @"kANInterstitialAdViewDateLoadedKey"; NSString *const kANInterstitialAdViewAuctionInfoKey = @"kANInterstitialAdViewAuctionInfoKey"; -@interface ANInterstitialAd () +@interface ANInterstitialAd () @property (nonatomic, readwrite, strong) ANInterstitialAdViewController *controller; @property (nonatomic, readwrite, strong) NSMutableArray *precachedAdObjects; @property (nonatomic, readwrite, assign) CGRect frame; +@property (nonatomic, readwrite, strong) ANBrowserViewController *browserController; +@property (nonatomic, strong) NSTimer *progressUpdateTimer; +@property (nonatomic, strong) ANVideoPlayerViewController* playbackViewController; +@property (nonatomic, strong) ANVast *vastAd; @end @implementation ANInterstitialAd +@synthesize browserController = _browserController; +@synthesize playbackViewController = _playbackViewController; +@synthesize vastAd = _vastAd; #pragma mark Initialization @@ -146,7 +157,23 @@ - (void)displayAdFromViewController:(UIViewController *)controller { [ANPBBuffer captureDelayedImage:controller.presentedViewController.view forAuctionID:auctionID]; } - } else { + } else if([adToShow isKindOfClass:[ANVideoAd class]]){ + + self.controller = (ANInterstitialAdViewController *)controller; + + ANVideoAd *videoAd = (ANVideoAd *)adToShow; + + + if (!self.playbackViewController) + { + _playbackViewController = [[ANVideoPlayerViewController alloc] initWithVastDataModel:videoAd.vastDataModel]; + [_playbackViewController setSkipOffSet:self.closeDelay]; + [_playbackViewController setSkipOffSetType:self.closeDelayType]; + } + + [controller presentViewController:self.playbackViewController animated:YES completion:nil]; + + }else { ANLogError(@"Display ad called, but no valid ad to show. Please load another interstitial ad."); [self adFailedToDisplay]; } @@ -340,4 +367,60 @@ - (void)adShouldUseCustomClose:(BOOL)useCustomClose { self.controller.useCustomClose = useCustomClose; } +#pragma mark - ANPlayerViewControllerDelegate + +- (void)openClickInBrowserWithURL:(NSURL *)url{ + _browserController = [[ANBrowserViewController alloc] initWithURL:url delegate:self delayPresentationForLoad:NO]; + + if (!self.browserController) { + NSLog(@"Failed to initialize the browser."); + } +} + +- (void)fireVideoEventImpressions:(ANVideoEvent)event{ + switch (event) { + case ANVideoEventPause: + { + if ([self.delegate respondsToSelector:@selector(videoAdPaused:)]) { + [self.delegate videoAdPaused:self]; + } + break; + } + case ANVideoEventResume: + { + if ([self.delegate respondsToSelector:@selector(videoAdResumed:)]) { + [self.delegate videoAdResumed:self]; + } + break; + } + case ANVideoEventStop: + { + if ([self.delegate respondsToSelector:@selector(videoAdFinishedPlaying:)]) { + [self.delegate videoAdFinishedPlaying:self]; + } + break; + } + case ANVideoEventStart: + { + if ([self.delegate respondsToSelector:@selector(videoAdStarted:)]) { + [self.delegate videoAdStarted:self]; + } + break; + } + default: + break; + } +} + +#pragma mark - ANBrowserViewControllerDelegate + +- (UIViewController *)rootViewControllerForDisplayingBrowserViewController:(ANBrowserViewController *)controller{ + return [self.controller presentedViewController]; +} + +- (void)didDismissBrowserViewController:(ANBrowserViewController *)controller{ + //play the video + [self.playbackViewController play]; +} + @end diff --git a/sdk/internal/ANPlayerView.h b/sdk/internal/ANPlayerView.h new file mode 100644 index 000000000..7fed17e12 --- /dev/null +++ b/sdk/internal/ANPlayerView.h @@ -0,0 +1,29 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + +#import + +@class AVPlayer; + +@interface ANPlayerView : UIView + +@property (nonatomic, strong) AVPlayer* player; + +- (void)setPlayer:(AVPlayer*)player; +- (void)setVideoFillMode:(NSString *)fillMode; + +@end diff --git a/sdk/internal/ANPlayerView.m b/sdk/internal/ANPlayerView.m new file mode 100644 index 000000000..388126b2a --- /dev/null +++ b/sdk/internal/ANPlayerView.m @@ -0,0 +1,57 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANPlayerView.h" +#import + +/* --------------------------------------------------------- +** To play the visual component of an asset, you need a view +** containing an AVPlayerLayer layer to which the output of an +** AVPlayer object can be directed. You can create a simple +** subclass of UIView to accommodate this. Use the view’s Core +** Animation layer (see the 'layer' property) for rendering. +** This class, ANPlayerView, is a subclass of UIView +** that is used for this purpose. +** ------------------------------------------------------- */ + +@implementation ANPlayerView + ++ (Class)layerClass +{ + return [AVPlayerLayer class]; +} + +- (AVPlayer*)player +{ + return [(AVPlayerLayer*)[self layer] player]; +} + +- (void)setPlayer:(AVPlayer*)player +{ + [(AVPlayerLayer*)[self layer] setPlayer:player]; +} + +/* Specifies how the video is displayed within a player layer’s bounds. + (AVLayerVideoGravityResizeAspect is default) */ +- (void)setVideoFillMode:(NSString *)fillMode +{ + AVPlayerLayer *playerLayer = (AVPlayerLayer*)[self layer]; + playerLayer.videoGravity = fillMode; +} + +@end diff --git a/sdk/internal/ANVideoAd.h b/sdk/internal/ANVideoAd.h new file mode 100644 index 000000000..55de5e80e --- /dev/null +++ b/sdk/internal/ANVideoAd.h @@ -0,0 +1,29 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdView.h" +#import "ANVast.h" + +@interface ANVideoAd : NSObject + +@property (nonatomic, readwrite, strong) NSString *content; +@property (nonatomic, readwrite, strong) NSString *height; +@property (nonatomic, readwrite, strong) NSString *width; +@property (nonatomic, readwrite, strong) NSString *type; +@property (nonatomic, readwrite, strong) ANVast *vastDataModel; + +@property (nonatomic, readwrite, assign, getter=isMraid) BOOL mraid; + +@end diff --git a/sdk/internal/ANVideoAd.m b/sdk/internal/ANVideoAd.m new file mode 100644 index 000000000..d836bfca3 --- /dev/null +++ b/sdk/internal/ANVideoAd.m @@ -0,0 +1,20 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANVideoAd.h" + +@implementation ANVideoAd + +@end diff --git a/sdk/internal/ANVideoPlayerViewController.h b/sdk/internal/ANVideoPlayerViewController.h new file mode 100644 index 000000000..70e640525 --- /dev/null +++ b/sdk/internal/ANVideoPlayerViewController.h @@ -0,0 +1,32 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import +#import "ANVast.h" + +@interface ANVideoPlayerViewController : UIViewController + +@property (strong, nonatomic) ANVast *vastDataModel; +@property (nonatomic) float skipOffSet; +@property (nonatomic) NSUInteger skipOffSetType; + +- (instancetype) initWithVastDataModel:(ANVast *)vastDataModel; +- (void) play; +- (void) pause; + +@end diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m new file mode 100644 index 000000000..f3da090a0 --- /dev/null +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -0,0 +1,264 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANVideoPlayerViewController.h" +#import "ANAdConstants.h" +#import +#import +#import "ANPlayerView.h" +#import "ANVolumeButtonView.h" +#import "ANLogging.h" +#import "ANGlobal.h" +#import +#import "ANCircularAnimationView.h" + + +@interface ANVideoPlayerViewController (){ + float previousDuration; + BOOL isStarted; + BOOL isFirstQuartileDone; + BOOL isMidPointQuartileDone; + BOOL isThirdQuartileDone; + BOOL isCompleteQuartileDone; +} + +@property (nonatomic, strong) NSURL *fileURL; +@property (nonatomic, strong) ANPlayerView *playerView; +@property (nonatomic, strong) ANVolumeButtonView *volumeView; +@property (nonatomic, strong) ANCircularAnimationView *circularAnimationView; + +@end + +@implementation ANVideoPlayerViewController + +- (instancetype)initWithVastDataModel:(ANVast *)vastDataModel{ + + self = [super init]; + + if (self) { + self.vastDataModel = vastDataModel; + _fileURL = [self.vastDataModel getMediaFileURL]; + } + + return self; +} + +- (void)viewDidAppear:(BOOL)animated{ + [super viewDidAppear:animated]; + + [self play]; + +} + +- (void)viewWillDisappear:(BOOL)animated{ + [super viewWillDisappear:animated]; + + [self pause]; +} + +- (void) setupVolumeView{ + _volumeView = [[ANVolumeButtonView alloc] initWithDelegate:self]; + [self.volumeView addVolumeViewWithContainer:self.playerView]; +} + +- (float) getSkipOffSetFromVastDataModel{ + ANInLine *inLine = (self.vastDataModel.anInLine)?self.vastDataModel.anInLine:self.vastDataModel.anWrapper; + + float skipOffSet = 0.0; + + for (ANCreative *creative in inLine.creatives) { + if(creative.anLinear.skipOffSet.length > 0){ + NSArray *timeComponents = [creative.anLinear.skipOffSet componentsSeparatedByString:@":"]; + skipOffSet = [[timeComponents lastObject] floatValue]; + } + } + + if (!skipOffSet) { + if (self.skipOffSet) { + int iDuration = (int)CMTimeGetSeconds(self.playerView.player.currentItem.asset.duration); + if (self.skipOffSetType == ANCloseDelayTypeRelative) { + int skipOffsetTime = MIN(100, MAX(0, (int)self.skipOffSet)); + float percent = (float)skipOffsetTime/100.0; + float calculatedTime = iDuration*percent; + skipOffSet = calculatedTime; + }else if(self.skipOffSetType == ANCloseDelayTypeAbsolute){ + skipOffSet = MIN(MAX(0, (int)self.skipOffSet), iDuration); + } + } + } + + return skipOffSet; +} + +- (void) setupPlayer{ + AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:self.fileURL]; + AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; + + self.playerView = [[ANPlayerView alloc] init]; + [self.playerView setPlayer:player]; + [self.playerView setVideoFillMode:AVLayerVideoGravityResizeAspect]; + + UIView *selfView = self.view; + UIView *playerView = self.playerView; + + [playerView setTranslatesAutoresizingMaskIntoConstraints:NO]; + + [selfView addSubview:self.playerView]; + + [selfView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[playerView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(playerView)]]; + [selfView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[playerView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(playerView)]]; +} + +- (void) setupCircularView{ + _circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; + self.circularAnimationView.delegate = self; + + UIView *selfView = self.view; + UIView *circularView = self.circularAnimationView; + + [circularView setTranslatesAutoresizingMaskIntoConstraints:NO]; + + [selfView addSubview:circularView]; + + [selfView bringSubviewToFront:circularView]; + + [selfView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[circularView(==40)]-15-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(circularView)]]; + [selfView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-15-[circularView(==40)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(circularView)]]; + + float skipOffSet = [self getSkipOffSetFromVastDataModel]; + + self.circularAnimationView.skipOffset = skipOffSet; + +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + [self setupPlayer]; + [self setupCircularView]; + [self setupVolumeView]; + + __weak typeof(self) SELF = self; + + [self.playerView.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 100) queue:nil usingBlock:^(CMTime time) { + [SELF updateEventsWithSeconds:CMTimeGetSeconds(time)]; //Fire every 0.01 seconds + }]; + +} + +- (void) updateEventsWithSeconds:(float) seconds{ + + float totalDuration = CMTimeGetSeconds([self.playerView.player.currentItem.asset duration]); + float currentDuration = seconds; + + float quartileDuration = totalDuration/4; + + if (self.playerView.player.rate > 0 && !self.playerView.player.error) { + [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; + } + + if (currentDuration > 0 && !isStarted) { + isStarted = YES; + ANLogDebug(@"Started"); + + //send video start event tracking + }else if(currentDuration > 0){ + if(currentDuration > previousDuration){ + previousDuration = currentDuration; + if (currentDuration > quartileDuration && !isFirstQuartileDone) { + isFirstQuartileDone = YES; + ANLogDebug(@"First Quartile"); + + //send first quartile event tracking + }else if(currentDuration > quartileDuration*2 && !isMidPointQuartileDone){ + isMidPointQuartileDone = YES; + ANLogDebug(@"Mid Point"); + + //send mid quartile event tracking + }else if(currentDuration > quartileDuration * 3 && !isThirdQuartileDone){ + isThirdQuartileDone = YES; + ANLogDebug(@"Third Quartile"); + + //send third quartile event tracking + } + }else if(currentDuration == totalDuration){ + isCompleteQuartileDone = YES; + ANLogDebug(@"Complete Quartile"); + + //send quartile complete event tracking + } + } +} + +- (void)closeInterstitial{ + [self pause]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (BOOL)prefersStatusBarHidden{ + return YES; +} + +- (void)play{ + [self.playerView.player play]; +} + +- (void)pause{ + [self.playerView.player pause]; +} + +- (void)mute:(BOOL)value{ + AVAudioSession *session = [AVAudioSession sharedInstance]; + NSError *error = [[NSError alloc] init]; + + float volume = 1.0; + + if ([session setActive:YES error:&error]) { + volume = session.outputVolume; + }else{ + ANLogInfo(@"Unable to get system volume."); + } + + if (value) { + [self.playerView.player setVolume:0]; + ANLogDebug(@"Volume Muted."); + + //send mute event tracking + }else{ + [self.playerView.player setVolume:volume]; + ANLogDebug(@"Volume Unmuted."); + + //send unmute event tracking + } +} + +- (void)closeButtonClicked{ + [self closeInterstitial]; +} + +- (void)dealloc{ + + _fileURL = nil; + _volumeView = nil; + _playerView = nil; + _circularAnimationView = nil; + +} + + +@end diff --git a/sdk/internal/ANVolumeButtonView.h b/sdk/internal/ANVolumeButtonView.h new file mode 100644 index 000000000..dcea6daca --- /dev/null +++ b/sdk/internal/ANVolumeButtonView.h @@ -0,0 +1,34 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import + +@protocol ANVolumeButtonViewDelegate + +- (void) mute:(BOOL)value; + +@end + +@interface ANVolumeButtonView : UIView + +@property (nonatomic, weak) id delegate; + +- (instancetype) initWithDelegate:(id)delegate; +- (void) addVolumeViewWithContainer:(UIView *)containerView; + +@end diff --git a/sdk/internal/ANVolumeButtonView.m b/sdk/internal/ANVolumeButtonView.m new file mode 100644 index 000000000..dad0c2ba6 --- /dev/null +++ b/sdk/internal/ANVolumeButtonView.m @@ -0,0 +1,92 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + + +#import "ANVolumeButtonView.h" +#import "ANGlobal.h" + +@interface ANVolumeButtonView(){ + BOOL isVolumeMuted; +} + +@property (nonatomic, strong) UIButton *volumeButton; + +@end + +@implementation ANVolumeButtonView + +- (instancetype) initWithDelegate:(id)delegate{ + self = [super init]; + + if(self){ + self.delegate = delegate; + } + + return self; +} + +//ContainerView is AVPlayerView that is passed from the parent class.The volume button is displayed on this view. +- (void) addVolumeViewWithContainer:(UIView *)containerView{ + + _volumeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; + UIImage *volumeImage = [UIImage imageWithContentsOfFile:ANPathForANResource(@"mute-off",@"png")]; + [self.volumeButton setBackgroundImage:volumeImage forState:UIControlStateNormal]; + + [self.volumeButton addTarget:self action:@selector(handleVolumeButton) forControlEvents:UIControlEventTouchUpInside]; + + [self.volumeButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + + [containerView addSubview:self.volumeButton]; + [containerView bringSubviewToFront:self.volumeButton]; + + UIView *volumeView = self.volumeButton; + + [containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[volumeView(==50)]-15-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(volumeView)]]; + [containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[volumeView(==50)]-15-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(volumeView)]]; + + + [volumeView setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.1]]; + [volumeView setAlpha:0.7]; +} + + +- (void) handleVolumeButton{ + isVolumeMuted = !isVolumeMuted; + + UIImage *volumeImage; + + if (isVolumeMuted) { + volumeImage = [UIImage imageWithContentsOfFile:ANPathForANResource(@"mute-on", @"png")]; + [self mute:YES]; + }else{ + volumeImage = [UIImage imageWithContentsOfFile:ANPathForANResource(@"mute-off",@"png")]; + [self mute:NO]; + } + + [self.volumeButton setBackgroundImage:volumeImage forState:UIControlStateNormal]; + +} + +- (void) mute:(BOOL)value{ + [self.delegate mute:value]; +} + +- (void)dealloc{ + _volumeButton = nil; +} + +@end From 89eac6bbc7c36b48e757b93b79b5d1aea177e19f Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Wed, 21 Oct 2015 19:03:01 -0400 Subject: [PATCH 02/92] MS-1708 Undo changes to ANAdFetcher, ANAdServerResponse --- sdk/internal/ANAdFetcher.m | 21 ------------- sdk/internal/ANAdServerResponse.h | 3 -- sdk/internal/ANAdServerResponse.m | 51 +------------------------------ 3 files changed, 1 insertion(+), 74 deletions(-) diff --git a/sdk/internal/ANAdFetcher.m b/sdk/internal/ANAdFetcher.m index 50c4ac764..f1c9f96f4 100644 --- a/sdk/internal/ANAdFetcher.m +++ b/sdk/internal/ANAdFetcher.m @@ -27,8 +27,6 @@ #import "NSTimer+ANCategory.h" #import "UIView+ANCategory.h" -#import "ANVideoAd.h" - NSString *const kANAdFetcherWillRequestAdNotification = @"kANAdFetcherWillRequestAdNotification"; NSString *const kANAdFetcherAdRequestURLKey = @"kANAdFetcherAdRequestURLKey"; NSString *const kANAdFetcherWillInstantiateMediatedClassNotification = @"kANAdFetcherWillInstantiateMediatedClassKey"; @@ -44,7 +42,6 @@ @interface ANAdFetcher () 0) { // mediated [self handleMediatedAds:self.mediatedAds]; } - else if(self.videoAd){ - [self handleVideoAd:self.videoAd]; - } else { // no mediatedAds, parse for non-mediated ad response [self handleStandardAd:response.standardAd]; @@ -283,22 +276,8 @@ - (void)handleStandardAd:(ANStandardAd *)standardAd { HTML:standardAd.content webViewBaseURL:[NSURL URLWithString:self.ANBaseURL]]; self.standardAdView.webViewController.loadingDelegate = self; - } -- (void)handleVideoAd:(ANVideoAd *)videoAd { - -// self.playerController = [[ANPlayerViewController alloc] init]; -// ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.playerController]; -// [self processFinalResponse:response]; - - ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.videoAd]; - [self processFinalResponse:response]; - - -} - - - (void)didCompleteFirstLoadFromWebViewController:(ANAdWebViewController *)controller { if (self.standardAdView.webViewController == controller) { ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.standardAdView]; diff --git a/sdk/internal/ANAdServerResponse.h b/sdk/internal/ANAdServerResponse.h index 44e1c89b5..85911e9b8 100644 --- a/sdk/internal/ANAdServerResponse.h +++ b/sdk/internal/ANAdServerResponse.h @@ -16,7 +16,6 @@ #import #import "ANStandardAd.h" #import "ANNativeStandardAdResponse.h" -#import "ANVideoAd.h" @interface ANAdServerResponse : NSObject @@ -30,8 +29,6 @@ @property (nonatomic, readonly, strong) NSMutableArray *standardAds; @property (nonatomic, readonly, strong) NSMutableArray *mediatedAds; @property (nonatomic, readonly, strong) NSMutableArray *nativeAds; -@property (nonatomic, readonly, strong) ANVideoAd *videoAd; -@property (nonatomic, readonly, strong) NSMutableArray *videoAds; - (instancetype)initWithContent:(NSString *)htmlContent width:(NSInteger)width diff --git a/sdk/internal/ANAdServerResponse.m b/sdk/internal/ANAdServerResponse.m index b6c537c0b..7394991d3 100644 --- a/sdk/internal/ANAdServerResponse.m +++ b/sdk/internal/ANAdServerResponse.m @@ -17,7 +17,6 @@ #import "ANLogging.h" #import "ANGlobal.h" #import "ANMediatedAd.h" -#import "ANVast.h" static NSString *const kANAdServerResponseKeyStatus = @"status"; static NSString *const kANAdServerResponseKeyType = @"type"; @@ -73,8 +72,6 @@ @interface ANAdServerResponse () @property (nonatomic, readwrite, strong) NSMutableArray *standardAds; @property (nonatomic, readwrite, strong) NSMutableArray *mediatedAds; @property (nonatomic, readwrite, strong) NSMutableArray *nativeAds; -@property (nonatomic, readwrite, strong) ANVideoAd *videoAd; -@property (nonatomic, readwrite, strong) NSMutableArray *videoAds; @end @@ -116,9 +113,7 @@ - (void)processResponseData:(NSData *)data { self.mediatedAds = [[self class] mediatedAdsFromJSONResponse:jsonResponse]; self.nativeAds = [[self class] nativeAdsFromJSONResponse:jsonResponse]; self.nativeAd = [self.nativeAds firstObject]; - self.videoAds = [[self class] videoAdsFromJSONResponse:jsonResponse]; - self.videoAd = [self.videoAds firstObject]; - if (self.standardAd || self.mediatedAds.count || self.nativeAds.count || self.videoAd) { + if (self.standardAd || self.mediatedAds.count || self.nativeAds.count) { self.containsAds = YES; } } @@ -196,19 +191,6 @@ + (NSMutableArray *)nativeAdsFromJSONResponse:(NSDictionary *)jsonResponse { return parsedNativeAdObjects; } -+ (NSMutableArray *)videoAdsFromJSONResponse:(NSDictionary *)jsonResponse { - NSArray *videoAdDictArray = [[self class] validDictionaryArrayForKey:kANAdServerResponseKeyAds - inJSONResponse:jsonResponse]; - NSMutableArray *parsedVideoAdObjects = [[NSMutableArray alloc] init]; - [videoAdDictArray enumerateObjectsUsingBlock:^(NSDictionary *videoAdDict, NSUInteger idx, BOOL *stop) { - ANVideoAd *videoAd = [[self class] parseVideoAdFromDictionary:videoAdDict]; - if (videoAd) { - [parsedVideoAdObjects addObject:videoAd]; - } - }]; - return parsedVideoAdObjects; -} - + (NSMutableArray *)validDictionaryArrayForKey:(NSString *)key inJSONResponse:(NSDictionary *)jsonResponse { if ([jsonResponse[key] isKindOfClass:[NSArray class]]) { @@ -233,7 +215,6 @@ + (ANStandardAd *)parseStandardAdFromDictionary:(NSDictionary *)standardAdDict { ad.width = [standardAdDict[kANAdServerResponseKeyWidth] description]; ad.height = [standardAdDict[kANAdServerResponseKeyHeight] description]; ad.content = [standardAdDict[kANAdServerResponseKeyContent] description]; - if (!ad.content || [ad.content length] == 0) { ANLogError(@"blank_ad"); return nil; @@ -367,34 +348,4 @@ + (ANNativeStandardAdResponse *)parseNativeAdFromDictionary:(NSDictionary *)nati return nil; } -+ (ANVideoAd *)parseVideoAdFromDictionary:(NSDictionary *)videoAdDict { - if (videoAdDict) { - ANVideoAd *ad = [[ANVideoAd alloc] init]; - ad.type = [videoAdDict[kANAdServerResponseKeyType] description]; - ad.width = [videoAdDict[kANAdServerResponseKeyWidth] description]; - ad.height = [videoAdDict[kANAdServerResponseKeyHeight] description]; - ad.content = [videoAdDict[kANAdServerResponseKeyContent] description]; - - //Video Implementation - Deepak - NSError *error; - ad.vastDataModel = [[ANVast alloc] init]; - [ad.vastDataModel parseVastResponseWithURL:nil error:&error]; - //Video Implementation - Deepak - - if (!ad.content || [ad.content length] == 0) { - ANLogError(@"blank_ad"); - return nil; - } - - NSRange mraidJSRange = [ad.content rangeOfString:kANAdServerResponseMraidJSFilename]; - if (mraidJSRange.location != NSNotFound) { - ad.mraid = YES; - } - - return ad; - } - return nil; -} - - @end \ No newline at end of file From f0fc8b5de96f7413c90be6429c12227aa0b9a0cb Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Thu, 22 Oct 2015 18:33:30 -0400 Subject: [PATCH 03/92] MS-1706, MS-1707, MS-1708, MS-1709 /ut request for interstitials, vast & html response parsing --- .../ANSDK.xcodeproj/project.pbxproj | 44 ++- sdk/VastDataModel/ANVast.h | 15 +- sdk/VastDataModel/ANVast.m | 69 ++-- sdk/internal/ANInterstitialAd.m | 58 +++- sdk/internal/ANInterstitialAdFetcher.h | 39 +++ sdk/internal/ANInterstitialAdFetcher.m | 169 ++++++++++ sdk/internal/ANUniversalTagAdServerResponse.h | 32 ++ sdk/internal/ANUniversalTagAdServerResponse.m | 176 +++++++++++ sdk/internal/ANUniversalTagRequestBuilder.h | 24 ++ sdk/internal/ANUniversalTagRequestBuilder.m | 295 ++++++++++++++++++ sdk/internal/ANVideoAd.h | 7 +- sdk/internal/ANVideoPlayerViewController.m | 5 +- 12 files changed, 886 insertions(+), 47 deletions(-) create mode 100644 sdk/internal/ANInterstitialAdFetcher.h create mode 100644 sdk/internal/ANInterstitialAdFetcher.m create mode 100644 sdk/internal/ANUniversalTagAdServerResponse.h create mode 100644 sdk/internal/ANUniversalTagAdServerResponse.m create mode 100644 sdk/internal/ANUniversalTagRequestBuilder.h create mode 100644 sdk/internal/ANUniversalTagRequestBuilder.m diff --git a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj index df2bddb3b..fe8e9c7d4 100644 --- a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj +++ b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj @@ -104,6 +104,13 @@ 8A7FB9511B0527E800C90859 /* ANAdAdapterBaseChartboost.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8A949AD21ADF1D8B00D83DCE /* ANAdAdapterBaseChartboost.h */; }; 8A82FDF61A30F36C00A267A0 /* ANNativeImpressionTrackerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A82FDF41A30F36B00A267A0 /* ANNativeImpressionTrackerManager.m */; }; 8A84E42E1A25350800C60EAB /* ANNativeAdResponse+PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A84E42A1A2534F300C60EAB /* ANNativeAdResponse+PrivateMethods.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8A87BF351BD9443000281EA9 /* ANUniversalTagRequestBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF341BD9443000281EA9 /* ANUniversalTagRequestBuilder.m */; settings = {ASSET_TAGS = (); }; }; + 8A87BF4B1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF4A1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m */; settings = {ASSET_TAGS = (); }; }; + 8A87BF501BD961EB00281EA9 /* ANInterstitialAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF4F1BD961EB00281EA9 /* ANInterstitialAdFetcher.m */; settings = {ASSET_TAGS = (); }; }; + 8A87BF551BD96E5C00281EA9 /* mute-off.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A87BF511BD96E4E00281EA9 /* mute-off.png */; }; + 8A87BF561BD96E5C00281EA9 /* mute-off@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A87BF521BD96E4E00281EA9 /* mute-off@2x.png */; }; + 8A87BF571BD96E5C00281EA9 /* mute-on.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A87BF531BD96E4E00281EA9 /* mute-on.png */; }; + 8A87BF581BD96E5C00281EA9 /* mute-on@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A87BF541BD96E4E00281EA9 /* mute-on@2x.png */; }; 8A8DEFA21AD5C03D00742AD7 /* ANAdAdapterBaseInMobi.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8AA5B4E51AA8B7F800522E1C /* ANAdAdapterBaseInMobi.h */; }; 8A8DEFA31AD5C04700742AD7 /* ANAdAdapterBaseAdColony.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8A8E0FDA1AD432B7004C5C50 /* ANAdAdapterBaseAdColony.h */; }; 8A8DEFA41AD5C05300742AD7 /* ANAdAdapterBaseVungle.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8AD7C4DC1AD2FF070049C997 /* ANAdAdapterBaseVungle.h */; }; @@ -702,6 +709,16 @@ 8A82FDF31A30F36B00A267A0 /* ANNativeImpressionTrackerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANNativeImpressionTrackerManager.h; sourceTree = ""; }; 8A82FDF41A30F36B00A267A0 /* ANNativeImpressionTrackerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANNativeImpressionTrackerManager.m; sourceTree = ""; }; 8A84E42A1A2534F300C60EAB /* ANNativeAdResponse+PrivateMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANNativeAdResponse+PrivateMethods.h"; sourceTree = ""; }; + 8A87BF331BD9443000281EA9 /* ANUniversalTagRequestBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANUniversalTagRequestBuilder.h; sourceTree = ""; }; + 8A87BF341BD9443000281EA9 /* ANUniversalTagRequestBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANUniversalTagRequestBuilder.m; sourceTree = ""; }; + 8A87BF491BD9471600281EA9 /* ANUniversalTagAdServerResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANUniversalTagAdServerResponse.h; sourceTree = ""; }; + 8A87BF4A1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANUniversalTagAdServerResponse.m; sourceTree = ""; }; + 8A87BF4E1BD961EB00281EA9 /* ANInterstitialAdFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAdFetcher.h; sourceTree = ""; }; + 8A87BF4F1BD961EB00281EA9 /* ANInterstitialAdFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInterstitialAdFetcher.m; sourceTree = ""; }; + 8A87BF511BD96E4E00281EA9 /* mute-off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-off.png"; sourceTree = ""; }; + 8A87BF521BD96E4E00281EA9 /* mute-off@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-off@2x.png"; sourceTree = ""; }; + 8A87BF531BD96E4E00281EA9 /* mute-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-on.png"; sourceTree = ""; }; + 8A87BF541BD96E4E00281EA9 /* mute-on@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-on@2x.png"; sourceTree = ""; }; 8A8DEF891AD58EC900742AD7 /* ANAdAdapterBaseAdColony+PrivateMethods.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ANAdAdapterBaseAdColony+PrivateMethods.h"; sourceTree = ""; }; 8A8E0FDA1AD432B7004C5C50 /* ANAdAdapterBaseAdColony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBaseAdColony.h; sourceTree = ""; }; 8A8E0FDB1AD432B7004C5C50 /* ANAdAdapterBaseAdColony.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBaseAdColony.m; sourceTree = ""; }; @@ -1183,6 +1200,8 @@ 8A73F9C61BD6B34D00D18188 /* ANGlobal.h */, 8A73F9C71BD6B34D00D18188 /* ANGlobal.m */, 8A73F9C81BD6B34D00D18188 /* ANInterstitialAd.m */, + 8A87BF4E1BD961EB00281EA9 /* ANInterstitialAdFetcher.h */, + 8A87BF4F1BD961EB00281EA9 /* ANInterstitialAdFetcher.m */, 8A73F9C91BD6B34D00D18188 /* ANInterstitialAdViewController.h */, 8A73F9CA1BD6B34D00D18188 /* ANInterstitialAdViewController.m */, 8A73F9CB1BD6B34D00D18188 /* ANLocation.m */, @@ -1208,6 +1227,10 @@ 8A73F9DF1BD6B34D00D18188 /* ANStandardAd.h */, 8A73F9E01BD6B34D00D18188 /* ANStandardAd.m */, 8A73F9E11BD6B34D00D18188 /* ANTargetingParameters.m */, + 8A87BF491BD9471600281EA9 /* ANUniversalTagAdServerResponse.h */, + 8A87BF4A1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m */, + 8A87BF331BD9443000281EA9 /* ANUniversalTagRequestBuilder.h */, + 8A87BF341BD9443000281EA9 /* ANUniversalTagRequestBuilder.m */, 8A73F9E21BD6B34D00D18188 /* ANVideoAd.h */, 8A73F9E31BD6B34D00D18188 /* ANVideoAd.m */, 8A73F9E41BD6B34D00D18188 /* ANVideoPlayerViewController.h */, @@ -1942,26 +1965,30 @@ ECE4EACF194B768A0069D934 /* images */ = { isa = PBXGroup; children = ( - 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */, - 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */, 8A4FF3A61A2F8AFE0000E4CC /* an_arrow_left.png */, 8A4FF3A51A2F8AFE0000E4CC /* an_arrow_left@2x.png */, 8A4FF3A31A2F8ACC0000E4CC /* an_arrow_left@3x.png */, 8A4FF3AC1A2F8CE50000E4CC /* an_arrow_right.png */, 8A4FF3AB1A2F8CE50000E4CC /* an_arrow_right@2x.png */, 8A4FF3A91A2F8CC10000E4CC /* an_arrow_right@3x.png */, + 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */, + 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */, 8A2F483C1A2E33B000B0EA05 /* compass.png */, 8A4FF3A01A2F72D00000E4CC /* compass@2x.png */, 8A6CD9261A96B2FD0060BCF4 /* compass@3x.png */, ECE4EAD2194B768A0069D934 /* interstitial_closebox.png */, ECE4EAD3194B768A0069D934 /* interstitial_closebox@2x.png */, + 8A6D2E881A44A62A003CE77A /* interstitial_flat_closebox.png */, + 8A6D2E871A44A62A003CE77A /* interstitial_flat_closebox@2x.png */, + 8A6D2E841A44A5D3003CE77A /* interstitial_flat_closebox@3x.png */, + 8A87BF511BD96E4E00281EA9 /* mute-off.png */, + 8A87BF521BD96E4E00281EA9 /* mute-off@2x.png */, + 8A87BF531BD96E4E00281EA9 /* mute-on.png */, + 8A87BF541BD96E4E00281EA9 /* mute-on@2x.png */, ECE4EAD4194B768A0069D934 /* UIButtonBarArrowLeft.png */, ECE4EAD5194B768A0069D934 /* UIButtonBarArrowLeft@2x.png */, ECE4EAD6194B768A0069D934 /* UIButtonBarArrowRight.png */, ECE4EAD7194B768A0069D934 /* UIButtonBarArrowRight@2x.png */, - 8A6D2E841A44A5D3003CE77A /* interstitial_flat_closebox@3x.png */, - 8A6D2E871A44A62A003CE77A /* interstitial_flat_closebox@2x.png */, - 8A6D2E881A44A62A003CE77A /* interstitial_flat_closebox.png */, ); path = images; sourceTree = ""; @@ -2516,6 +2543,10 @@ 8A2F483D1A2E33B000B0EA05 /* compass.png in Resources */, 8A6CD9271A96B2FD0060BCF4 /* compass@3x.png in Resources */, 8A3EC17019B8FDCA0049CD29 /* ANMRAID.bundle in Resources */, + 8A87BF551BD96E5C00281EA9 /* mute-off.png in Resources */, + 8A87BF561BD96E5C00281EA9 /* mute-off@2x.png in Resources */, + 8A87BF571BD96E5C00281EA9 /* mute-on.png in Resources */, + 8A87BF581BD96E5C00281EA9 /* mute-on@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2714,6 +2745,7 @@ 8A73FA5C1BD6B34E00D18188 /* ANWrapper.m in Sources */, 8A73FA331BD6B34E00D18188 /* ANAdRequestUrl.m in Sources */, 8A73FA351BD6B34E00D18188 /* ANAdView.m in Sources */, + 8A87BF4B1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m in Sources */, 8A73FA421BD6B34E00D18188 /* ANMediatedAd.m in Sources */, 8A6385E31A14336000280054 /* ANNativeAdRequestUrlBuilder.m in Sources */, 8A73FA461BD6B34E00D18188 /* ANPBBuffer.m in Sources */, @@ -2756,6 +2788,7 @@ 8A73FA5D1BD6B34E00D18188 /* ANAdSystem.m in Sources */, 8A73FA4F1BD6B34E00D18188 /* ANMRAIDCalendarManager.m in Sources */, ECE4EADC194B768A0069D934 /* UIView+ANCategory.m in Sources */, + 8A87BF351BD9443000281EA9 /* ANUniversalTagRequestBuilder.m in Sources */, 8A73FA641BD6B34E00D18188 /* AnCompanion.m in Sources */, 8A73FA321BD6B34E00D18188 /* ANAdFetcherResponse.m in Sources */, 8A73FA341BD6B34E00D18188 /* ANAdServerResponse.m in Sources */, @@ -2774,6 +2807,7 @@ 8A73FA591BD6B34E00D18188 /* ANInLine.m in Sources */, 8A73FA361BD6B34E00D18188 /* ANAdWebViewController.m in Sources */, 8A73FA531BD6B34E00D18188 /* ANMRAIDJavascriptUtil.m in Sources */, + 8A87BF501BD961EB00281EA9 /* ANInterstitialAdFetcher.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/sdk/VastDataModel/ANVast.h b/sdk/VastDataModel/ANVast.h index e35bcd955..dedc275cc 100644 --- a/sdk/VastDataModel/ANVast.h +++ b/sdk/VastDataModel/ANVast.h @@ -22,13 +22,12 @@ @interface ANVast : NSObject -@property (nonatomic, strong) NSString *version; -@property (nonatomic, strong) NSString *AdId; -@property (nonatomic, strong) ANInLine *anInLine; -@property (nonatomic, strong) ANWrapper *anWrapper; +- (instancetype)initWithContent:(NSString *)vast; -//+ (instancetype)sharedInstance; -- (void)parseVastResponseWithURL:(NSURL *)xmlURL error:(NSError **)error; -- (NSURL *) getMediaFileURL; +@property (nonatomic, readonly) NSString *version; +@property (nonatomic, readonly) NSString *AdId; +@property (nonatomic, readonly) ANInLine *anInLine; +@property (nonatomic, readonly) ANWrapper *anWrapper; +@property (nonatomic, readonly) NSURL *mediaFileURL; -@end +@end \ No newline at end of file diff --git a/sdk/VastDataModel/ANVast.m b/sdk/VastDataModel/ANVast.m index f50a5ab61..c2faac84f 100644 --- a/sdk/VastDataModel/ANVast.m +++ b/sdk/VastDataModel/ANVast.m @@ -25,35 +25,56 @@ NSString *const kANVideoSupportedFormats = @"video/mp4"; //,video/x-flv"; NSString *const kANVideoBitrateCapOverWAN = @"1200"; //this should be set to 460, temporarily been set to 1200 to enable ad display +@interface ANVast () + +@property (nonatomic) NSString *version; +@property (nonatomic) NSString *AdId; +@property (nonatomic) ANInLine *anInLine; +@property (nonatomic) ANWrapper *anWrapper; +@property (nonatomic) NSURL *mediaFileURL; + +@end + @implementation ANVast -static NSString *XML_URL = @"http://oasc-training7.247realmedia.com/2/VastVideoAd.com/@Bottom"; -static ANVast *sharedInstance; +- (instancetype)initWithContent:(NSString *)vast { + if (self = [super init]) { + NSError *error; + [self parseVastResponse:vast + error:&error]; + if (!error) { + self.mediaFileURL = [self optimalMediaFileURL]; + } else { + ANLogError(@"VAST parsing error: %@", error); + } + } + return self; +} + +- (void)parseVastResponse:(NSString *)response + error:(NSError **)error { + ANXML *xml = [ANXML newANXMLWithXMLString:response + error:error]; + if (!*error) { + waitForVastParsingCompletion = dispatch_semaphore_create(0); + releaseCounter = 0; + [self parseRootElement:xml.rootXMLElement]; + dispatch_semaphore_wait(waitForVastParsingCompletion, dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC)); + } +} + static dispatch_semaphore_t waitForVastParsingCompletion; static int releaseCounter; -- (void) parseResponseWithURL:(NSURL *)xmlURL error:(NSError *__autoreleasing *)error{ - - NSURL *url = xmlURL?xmlURL:[NSURL URLWithString:XML_URL]; - - ANXML *xmlParser = [ANXML newANXMLWithURL:url success:^(ANXML *tbxml) { +- (void)parseResponseWithURL:(NSURL *)xmlURL + error:(NSError **)error { + [ANXML newANXMLWithURL:xmlURL + success:^(ANXML *tbxml) { [self parseRootElement:tbxml.rootXMLElement]; - } failure:^(ANXML *tbxml, NSError *error) { - NSLog(@"XML Error: %@", error.localizedDescription); + } + failure:^(ANXML *tbxml, NSError *error) { + ANLogError(@"XML Error: %@", error.localizedDescription); }]; - - //mark for release - the unused object - xmlParser = nil; -} - -- (void)parseVastResponseWithURL:(NSURL *)xmlURL error:(NSError *__autoreleasing *)error{ - waitForVastParsingCompletion = dispatch_semaphore_create(0); - - releaseCounter = 0; - [self parseResponseWithURL:xmlURL error:error]; - - dispatch_semaphore_wait(waitForVastParsingCompletion, dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC)); - } - (void) parseRootElement:(ANXMLElement *)rootElement{ @@ -84,7 +105,7 @@ - (void) parseRootElement:(ANXMLElement *)rootElement{ self.anWrapper = [[ANWrapper alloc] initWithXMLElement:wrapperElement]; if (self.anWrapper.vastAdTagURI) { NSURL *vastURL = [NSURL URLWithString:self.anWrapper.vastAdTagURI]; - NSError *error = [[NSError alloc] init]; + NSError *error; releaseCounter++; [self parseResponseWithURL:vastURL error:&error]; } @@ -102,7 +123,7 @@ - (void) parseRootElement:(ANXMLElement *)rootElement{ } } -- (NSURL *) getMediaFileURL{ +- (NSURL *)optimalMediaFileURL { ANInLine *inLine = (self.anInLine)?self.anInLine:self.anWrapper; NSString *fileURI = @""; for (ANCreative *creative in inLine.creatives) { diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index c3f0eb0ad..2c12d6513 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -16,6 +16,7 @@ #import "ANInterstitialAd.h" #import "ANAdFetcher.h" +#import "ANInterstitialAdFetcher.h" #import "ANGlobal.h" #import "ANInterstitialAdViewController.h" #import "ANLogging.h" @@ -42,7 +43,8 @@ NSString *const kANInterstitialAdViewDateLoadedKey = @"kANInterstitialAdViewDateLoadedKey"; NSString *const kANInterstitialAdViewAuctionInfoKey = @"kANInterstitialAdViewAuctionInfoKey"; -@interface ANInterstitialAd () +@interface ANInterstitialAd () @property (nonatomic, readwrite, strong) ANInterstitialAdViewController *controller; @property (nonatomic, readwrite, strong) NSMutableArray *precachedAdObjects; @@ -51,6 +53,8 @@ @interface ANInterstitialAd () +#import "ANAdFetcher.h" + +@protocol ANInterstitialAdFetcherDelegate; + +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://ib.adnxs.com/ut/v1"; + +@interface ANInterstitialAdFetcher : NSObject + +- (instancetype)initWithDelegate:(id)delegate; +- (void)stopAdLoad; + +@end + +@protocol ANInterstitialAdFetcherDelegate + +- (NSMutableSet *)allowedAdSizes; + +@optional + +- (void)interstitialAdFetcher:(ANInterstitialAdFetcher *)fetcher + didFinishRequestWithResponse:(ANAdFetcherResponse *)response; + +@end \ No newline at end of file diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m new file mode 100644 index 000000000..77a5694b2 --- /dev/null +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -0,0 +1,169 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANInterstitialAdFetcher.h" +#import "ANLogging.h" +#import "ANAdWebViewController.h" +#import "ANStandardAd.h" +#import "ANMRAIDContainerView.h" +#import "ANUniversalTagRequestBuilder.h" +#import "ANUniversalTagAdServerResponse.h" + +@interface ANInterstitialAdFetcher () + +@property (nonatomic, readwrite, weak) id delegate; + +@property (nonatomic, readwrite, strong) NSURLConnection *connection; +@property (nonatomic, readwrite, strong) NSMutableData *data; + +@property (nonatomic, readwrite, strong) ANMRAIDContainerView *standardAdView; + +@end + + +@implementation ANInterstitialAdFetcher + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [self init]) { + self.delegate = delegate; + self.data = [NSMutableData data]; + [self requestAd]; + } + return self; +} + +- (void)sendDelegateFinishedResponse:(ANAdFetcherResponse *)response { + if ([self.delegate respondsToSelector:@selector(adFetcher:didFinishRequestWithResponse:)]) { + [self.delegate interstitialAdFetcher:self didFinishRequestWithResponse:response]; + } +} + +#pragma mark - Ad Request + +- (void)requestAd { + NSURLRequest *request = [ANUniversalTagRequestBuilder buildRequestWithAdFetcherDelegate:self.delegate + baseUrlString:kANInterstitialAdFetcherDefaultRequestUrlString]; + self.connection = [NSURLConnection connectionWithRequest:request + delegate:self]; + if (!self.connection) { + ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithError:ANError(@"bad_url_connection", ANAdResponseBadURLConnection)]; + [self processFinalResponse:response]; + } else { + ANLogDebug(@"Starting request: %@", request); + } +} + +- (void)stopAdLoad { + [self.connection cancel]; + self.connection = nil; + self.data = nil; +} + +#pragma mark - Ad Response + +- (void)processAdResponse:(ANUniversalTagAdServerResponse *)response { + BOOL responseAdsExist = response && response.containsAds; + + if (!responseAdsExist) { + ANLogWarn(@"response_no_ads"); + [self finishRequestWithError:ANError(@"response_no_ads", ANAdResponseUnableToFill)]; + return; + } + + if (response.videoAd) { + ANAdFetcherResponse *adFetcherResponse = [ANAdFetcherResponse responseWithAdObject:response.videoAd]; + [self processFinalResponse:adFetcherResponse]; + } else { + [self handleStandardAd:response.standardAd]; + } +} + +- (void)finishRequestWithError:(NSError *)error { + ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithError:error]; + [self processFinalResponse:response]; +} + +- (void)processFinalResponse:(ANAdFetcherResponse *)response { + [self sendDelegateFinishedResponse:response]; +} + +#pragma mark - Standard Ads + +- (void)handleStandardAd:(ANStandardAd *)standardAd { + CGSize receivedSize = CGSizeMake([standardAd.width floatValue], [standardAd.height floatValue]); + + // Setting the base URL to /ut will result in mraid.js not loading properly from the server + // which will cause rendering issues for certain MRAID creatives. + self.standardAdView = [[ANMRAIDContainerView alloc] initWithSize:receivedSize + HTML:standardAd.content + webViewBaseURL:[NSURL URLWithString:AN_BASE_URL]]; + self.standardAdView.webViewController.loadingDelegate = self; +} + +- (void)didCompleteFirstLoadFromWebViewController:(ANAdWebViewController *)controller { + ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.standardAdView]; + [self processFinalResponse:response]; +} + +#pragma mark - NSURLConnectionDataDelegate + +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { + if (connection == self.connection) { + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; + NSInteger status = [httpResponse statusCode]; + + if (status >= 400) { + [connection cancel]; + NSError *statusError = ANError(@"connection_failed %ld", ANAdResponseNetworkError, (long)status); + [self connection:connection didFailWithError:statusError]; + return; + } + } + + self.data = [NSMutableData data]; + ANLogDebug(@"Received response: %@", response); + } else { + ANLogDebug(@"Received response from unknown"); + } +} + +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d { + if (connection == self.connection) { + [self.data appendData:d]; + } +} + +- (void)connectionDidFinishLoading:(NSURLConnection *)connection { + if (connection == self.connection) { + ANUniversalTagAdServerResponse *adResponse = [ANUniversalTagAdServerResponse responseWithData:self.data]; + NSString *responseString = [[NSString alloc] initWithData:self.data + encoding:NSUTF8StringEncoding]; + ANPostNotifications(kANAdFetcherDidReceiveResponseNotification, self, + @{kANAdFetcherAdResponseKey: (responseString ? responseString : @"")}); + [self processAdResponse:adResponse]; + } +} + +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { + if (connection == self.connection) { + NSError *connectionError = ANError(@"ad_request_failed %@%@", ANAdResponseNetworkError, connection, [error localizedDescription]); + ANLogError(@"%@", connectionError); + ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithError:connectionError]; + [self processFinalResponse:response]; + } +} + +@end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagAdServerResponse.h b/sdk/internal/ANUniversalTagAdServerResponse.h new file mode 100644 index 000000000..ed275455a --- /dev/null +++ b/sdk/internal/ANUniversalTagAdServerResponse.h @@ -0,0 +1,32 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANStandardAd.h" +#import "ANVideoAd.h" + +@interface ANUniversalTagAdServerResponse : NSObject + ++ (ANUniversalTagAdServerResponse *)responseWithData:(NSData *)data; + +- (instancetype)initWithAdServerData:(NSData *)data; + +@property (nonatomic, readonly, assign) BOOL containsAds; +@property (nonatomic, readonly, strong) ANStandardAd *standardAd; +@property (nonatomic, readonly, strong) NSMutableArray *standardAds; +@property (nonatomic, readonly, strong) ANVideoAd *videoAd; +@property (nonatomic, readonly, strong) NSMutableArray *videoAds; + +@end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m new file mode 100644 index 000000000..31169c653 --- /dev/null +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -0,0 +1,176 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANUniversalTagAdServerResponse.h" +#import "ANLogging.h" + +static NSString *const kANUniversalTagAdServerResponseKeyTags = @"tags"; +static NSString *const kANUniversalTagAdServerResponseKeyAd = @"ad"; + +static NSString *const kANUniversalTagAdServerResponseKeyVideo = @"video"; +static NSString *const kANUniversalTagAdServerResponseVideoKeyContent = @"content"; + +static NSString *const kANUniversalTagAdServerResponseKeyBanner = @"banner"; +static NSString *const kANUniversalTagAdServerResponseBannerKeyWidth = @"width"; +static NSString *const kANUniversalTagAdServerResponseBannerKeyHeight = @"height"; +static NSString *const kANUniversalTagAdServerResponseBannerKeyContent = @"content"; + +static NSString *const kANUniversalTagAdServerResponseMraidJSFilename = @"mraid.js"; + +@interface ANUniversalTagAdServerResponse () + +@property (nonatomic, readwrite, assign) BOOL containsAds; +@property (nonatomic, readwrite, strong) ANStandardAd *standardAd; +@property (nonatomic, readwrite, strong) NSMutableArray *standardAds; +@property (nonatomic, readwrite, strong) ANVideoAd *videoAd; +@property (nonatomic, readwrite, strong) NSMutableArray *videoAds; + +@end + +@implementation ANUniversalTagAdServerResponse + +- (instancetype)initWithAdServerData:(NSData *)data { + self = [super init]; + if (self) { + [self processResponseData:data]; + } + return self; +} + ++ (ANUniversalTagAdServerResponse *)responseWithData:(NSData *)data { + return [[ANUniversalTagAdServerResponse alloc] initWithAdServerData:data]; +} + +- (void)processResponseData:(NSData *)data { + NSDictionary *jsonResponse = [[self class] jsonResponseFromData:data]; + if (jsonResponse) { + NSArray *tags = [[self class] tagsFromJSONResponse:jsonResponse]; + for (NSDictionary *tag in tags) { + NSDictionary *adObject = [[self class] adObjectFromTag:tag]; + if (adObject) { + ANStandardAd *standardAd = [[self class] standardAdFromAdObject:adObject]; + if (standardAd) { + [self.standardAds addObject:standardAd]; + } + ANVideoAd *videoAd = [[self class] videoAdFromAdObject:adObject]; + if (videoAd) { + [self.videoAds addObject:videoAd]; + } + } + } + } + self.standardAd = [self.standardAds firstObject]; + self.videoAd = [self.videoAds firstObject]; + if (self.standardAd || self.videoAd) { + self.containsAds = YES; + } +} + ++ (NSArray *)tagsFromJSONResponse:(NSDictionary *)jsonResponse { + return [[self class] validDictionaryArrayForKey:kANUniversalTagAdServerResponseKeyTags + inJSONResponse:jsonResponse]; +} + ++ (NSDictionary *)adObjectFromTag:(NSDictionary *)tag { + if ([tag[kANUniversalTagAdServerResponseKeyAd] isKindOfClass:[NSDictionary class]]) { + return tag[kANUniversalTagAdServerResponseKeyAd]; + } + return nil; +} + ++ (ANStandardAd *)standardAdFromAdObject:(NSDictionary *)adObject { + if ([adObject[kANUniversalTagAdServerResponseKeyBanner] isKindOfClass:[NSDictionary class]]) { + NSDictionary *banner = adObject[kANUniversalTagAdServerResponseKeyBanner]; + ANStandardAd *standardAd = [[ANStandardAd alloc] init]; + standardAd.width = [banner[kANUniversalTagAdServerResponseBannerKeyWidth] description]; + standardAd.height = [banner[kANUniversalTagAdServerResponseBannerKeyHeight] description]; + standardAd.content = [banner[kANUniversalTagAdServerResponseBannerKeyContent] description]; + if (!standardAd.content || [standardAd.content length] == 0) { + ANLogError(@"blank_ad"); + return nil; + } + NSRange mraidJSRange = [standardAd.content rangeOfString:kANUniversalTagAdServerResponseMraidJSFilename]; + if (mraidJSRange.location != NSNotFound) { + standardAd.mraid = YES; + } + return standardAd; + } + return nil; +} + ++ (ANVideoAd *)videoAdFromAdObject:(NSDictionary *)adObject { + if ([adObject[kANUniversalTagAdServerResponseKeyVideo] isKindOfClass:[NSDictionary class]]) { + NSDictionary *video = adObject[kANUniversalTagAdServerResponseKeyVideo]; + ANVideoAd *videoAd = [[ANVideoAd alloc] init]; + videoAd.content = [video[kANUniversalTagAdServerResponseVideoKeyContent] description]; + videoAd.vastDataModel = [[ANVast alloc] initWithContent:videoAd.content]; + return videoAd; + } + return nil; +} + +#pragma mark - Helper Methods + +- (NSMutableArray *)standardAds { + if (!_standardAds) _standardAds = [[NSMutableArray alloc] init]; + return _standardAds; +} + +- (NSMutableArray *)videoAds { + if (!_videoAds) _videoAds = [[NSMutableArray alloc] init]; + return _videoAds; +} + ++ (NSDictionary *)jsonResponseFromData:(NSData *)data { + NSString *responseString = [[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding]; + if (!responseString || [responseString length] == 0) { + ANLogDebug(@"Received empty response from ad server"); + return nil; + } + + NSError *jsonParsingError = nil; + id jsonResponse = [NSJSONSerialization JSONObjectWithData:data + options:0 + error:&jsonParsingError]; + if (jsonParsingError) { + ANLogError(@"response_json_error %@", jsonParsingError); + return nil; + } else if (![jsonResponse isKindOfClass:[NSDictionary class]]) { + ANLogError(@"Response from ad server in an unexpected format: %@", jsonResponse); + return nil; + } + + return (NSDictionary *)jsonResponse; +} + ++ (NSArray *)validDictionaryArrayForKey:(NSString *)key + inJSONResponse:(NSDictionary *)jsonResponse { + if ([jsonResponse[key] isKindOfClass:[NSArray class]]) { + NSArray *adsArray = (NSArray *)jsonResponse[key]; + NSMutableArray *validAdsArray = [[NSMutableArray alloc] initWithCapacity:[adsArray count]]; + [adsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + if ([obj isKindOfClass:[NSDictionary class]]) { + [validAdsArray addObject:obj]; + } + }]; + if (validAdsArray.count) { + return [validAdsArray copy]; + } + } + return nil; +} + +@end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagRequestBuilder.h b/sdk/internal/ANUniversalTagRequestBuilder.h new file mode 100644 index 000000000..9a59b727a --- /dev/null +++ b/sdk/internal/ANUniversalTagRequestBuilder.h @@ -0,0 +1,24 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANAdFetcher.h" + +@interface ANUniversalTagRequestBuilder : NSObject + ++ (NSURLRequest *)buildRequestWithAdFetcherDelegate:(id)adFetcherDelegate + baseUrlString:(NSString *)baseUrlString; + +@end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagRequestBuilder.m b/sdk/internal/ANUniversalTagRequestBuilder.m new file mode 100644 index 000000000..cdd97b787 --- /dev/null +++ b/sdk/internal/ANUniversalTagRequestBuilder.m @@ -0,0 +1,295 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANUniversalTagRequestBuilder.h" +#import "ANGlobal.h" +#import "ANLogging.h" +#import "ANReachability.h" +#import "ANInterstitialAdFetcher.h" + +#import +#import + +@interface ANUniversalTagRequestBuilder() + +@property (nonatomic, readwrite, weak) id adFetcherDelegate; +@property (nonatomic) NSString *baseURLString; + +@end + +@implementation ANUniversalTagRequestBuilder + ++ (NSURLRequest *)buildRequestWithAdFetcherDelegate:(id)adFetcherDelegate + baseUrlString:(NSString *)baseUrlString { + ANUniversalTagRequestBuilder *requestBuilder = [[ANUniversalTagRequestBuilder alloc] initWithAdFetcherDelegate:adFetcherDelegate + baseUrlString:baseUrlString]; + return [requestBuilder request]; +} + +- (instancetype)initWithAdFetcherDelegate:(id)adFetcherDelegate + baseUrlString:(NSString *)baseUrlString { + if (self = [super init]) { + _adFetcherDelegate = adFetcherDelegate; + _baseURLString = baseUrlString; + } + return self; +} + +- (NSURLRequest *)request { + NSURL *URL = [NSURL URLWithString:self.baseURLString]; + NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:URL + cachePolicy:NSURLRequestReloadIgnoringLocalCacheData + timeoutInterval:kAppNexusRequestTimeoutInterval]; + [mutableRequest setValue:ANUserAgent() forHTTPHeaderField:@"User-Agent"]; + [mutableRequest setHTTPMethod:@"POST"]; + NSError *error; + NSData *postData = [NSJSONSerialization dataWithJSONObject:[self requestBody] + options:kNilOptions + error:&error]; + if (!error) { + NSString *jsonString = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding]; + ANLogDebug(@"Post JSON: %@", jsonString); + [mutableRequest setHTTPBody:postData]; + return [mutableRequest copy]; + } else { + ANLogError(@"Error formulating Universal Tag request: %@", error); + return nil; + } +} + +- (NSDictionary *)requestBody { + NSMutableDictionary *requestDict = [[NSMutableDictionary alloc] init]; + + NSDictionary *tags = [self tag]; + if (tags) { + requestDict[@"tags"] = @[tags]; + } + NSDictionary *user = [self user]; + if (user) { + requestDict[@"user"] = user; + } + NSDictionary *device = [self device]; + if (device) { + requestDict[@"device"] = device; + } + NSDictionary *app = [self app]; + if (app) { + requestDict[@"app"] = app; + } + NSArray *keywords = [self keywords]; + if (keywords) { + requestDict[@"keywords"] = keywords; + } + + return [requestDict copy]; +} + +- (NSArray *)keywords { + NSDictionary *customKeywords = [self.adFetcherDelegate customKeywords]; + if (customKeywords.count < 1) { + return nil; + } + + NSMutableArray *kvSegmentsArray = [[NSMutableArray alloc] init]; + [customKeywords enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) { + NSString *stringKey = ANConvertToNSString(key); + NSString *stringValue = ANConvertToNSString(value); + if (stringKey.length > 0 && stringValue.length > 0) { + [kvSegmentsArray addObject:@{@"key":stringKey, @"value":stringValue}]; + } + }]; + return [kvSegmentsArray copy]; +} + +- (NSDictionary *)tag { + NSMutableDictionary *tagDict = [[NSMutableDictionary alloc] init]; + NSInteger placementId = [[self.adFetcherDelegate placementId] integerValue]; + if (placementId > 0) { + tagDict[@"id"] = @(placementId); + } + if ([self.adFetcherDelegate conformsToProtocol:@protocol(ANInterstitialAdFetcherDelegate)]) { + id interstitialDelegate = (id)self.adFetcherDelegate; + NSMutableSet *allowedSizes = [interstitialDelegate allowedAdSizes]; + [allowedSizes addObject:[NSValue valueWithCGSize:CGSizeMake(1, 1)]]; + NSMutableArray *sizeObjectArray = [[NSMutableArray alloc] init]; + for (id sizeValue in allowedSizes) { + if ([sizeValue isKindOfClass:[NSValue class]]) { + CGSize size = [sizeValue CGSizeValue]; + [sizeObjectArray addObject:@{@"width":@(size.width), + @"height":@(size.height)}]; + } + } + tagDict[@"sizes"] = sizeObjectArray; + } + tagDict[@"disable_psa"] = @([self.adFetcherDelegate shouldServePublicServiceAnnouncements]); + return [tagDict copy]; +} + +- (NSDictionary *)user { + NSMutableDictionary *userDict = [[NSMutableDictionary alloc] init]; + + NSInteger ageValue = [[self.adFetcherDelegate age] integerValue]; // Invalid value for hyphenated age + if (ageValue > 0) { + userDict[@"age"] = @(ageValue); + } + + ANGender genderValue = [self.adFetcherDelegate gender]; + NSUInteger gender; + switch (genderValue) { + case ANGenderMale: + gender = 1; + break; + case ANGenderFemale: + gender = 2; + break; + default: + gender = 0; + break; + } + userDict[@"gender"] = @(gender); + + NSString *language = [NSLocale preferredLanguages][0]; + if (language.length) { + userDict[@"language"] = language; + } + + return [userDict copy]; +} + +- (NSDictionary *)device { + NSMutableDictionary *deviceDict = [[NSMutableDictionary alloc] init]; + + NSString *userAgent = ANUserAgent(); + if (userAgent) { + deviceDict[@"useragent"] = userAgent; + } + + NSDictionary *geo = [self geo]; + if (geo) { + deviceDict[@"geo"] = geo; + } + + deviceDict[@"make"] = @"Apple"; + + NSString *deviceModel = ANDeviceModel(); + if (deviceModel) { + deviceDict[@"model"] = deviceModel; + } + + CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init]; + CTCarrier *carrier = [netinfo subscriberCellularProvider]; + + if (carrier.carrierName.length > 0) { + deviceDict[@"carrier"] = carrier.carrierName; + } + + ANReachability *reachability = [ANReachability reachabilityForInternetConnection]; + ANNetworkStatus status = [reachability currentReachabilityStatus]; + NSUInteger connectionType = 0; + switch (status) { + case ANNetworkStatusReachableViaWiFi: + connectionType = 1; + break; + case ANNetworkStatusReachableViaWWAN: + connectionType = 2; + break; + default: + connectionType = 0; + break; + } + deviceDict[@"connectiontype"] = @(connectionType); + + if (carrier.mobileCountryCode.length > 0) { + deviceDict[@"mcc"] = @([carrier.mobileCountryCode integerValue]); + } + if (carrier.mobileNetworkCode.length > 0) { + deviceDict[@"mnc"] = @([carrier.mobileNetworkCode integerValue]); + } + + + deviceDict[@"limit_ad_tracking"] = @(!ANAdvertisingTrackingEnabled()); + + NSDictionary *deviceId = [self deviceId]; + if (deviceId) { + deviceDict[@"device_id"] = deviceId; + } + + NSInteger timeInMiliseconds = (NSInteger)[[NSDate date] timeIntervalSince1970]; + deviceDict[@"devtime"] = @(timeInMiliseconds); + + return [deviceDict copy]; +} + +- (NSDictionary *)deviceId { + NSString *idfa = ANUDID(); + if (idfa) { + return @{@"idfa":idfa}; + } else { + return nil; + } +} + +- (NSDictionary *)geo { + ANLocation *location = [self.adFetcherDelegate location]; + if (location) { + NSMutableDictionary *geoDict = [[NSMutableDictionary alloc] init]; + + CGFloat latitude = location.latitude; + CGFloat longitude = location.longitude; + + if (location.precision >= 0) { + NSNumberFormatter *nf = [[self class] precisionNumberFormatter]; + nf.maximumFractionDigits = location.precision; + nf.minimumFractionDigits = location.precision; + geoDict[@"lat"] = [nf numberFromString:[NSString stringWithFormat:@"%f", location.latitude]]; + geoDict[@"lng"] = [nf numberFromString:[NSString stringWithFormat:@"%f", location.longitude]]; + } else { + geoDict[@"lat"] = @(latitude); + geoDict[@"lng"] = @(longitude); + } + + NSDate *locationTimestamp = location.timestamp; + NSTimeInterval ageInSeconds = -1.0 * [locationTimestamp timeIntervalSinceNow]; + NSInteger ageInMilliseconds = (NSInteger)(ageInSeconds * 1000); + + geoDict[@"loc_age"] = @(ageInMilliseconds); + geoDict[@"loc_precision"] = @((NSInteger)location.horizontalAccuracy); + + return [geoDict copy]; + } else { + return nil; + } +} + ++ (NSNumberFormatter *)precisionNumberFormatter { + static dispatch_once_t precisionNumberFormatterToken; + static NSNumberFormatter *precisionNumberFormatter; + dispatch_once(&precisionNumberFormatterToken, ^{ + precisionNumberFormatter = [[NSNumberFormatter alloc] init]; + precisionNumberFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"]; + }); + return precisionNumberFormatter; +} + +- (NSDictionary *)app { + NSString *appId = [[NSBundle mainBundle] infoDictionary][@"CFBundleIdentifier"]; + if (appId) { + return @{@"appid":appId}; + } else { + return nil; + } +} + +@end \ No newline at end of file diff --git a/sdk/internal/ANVideoAd.h b/sdk/internal/ANVideoAd.h index 55de5e80e..62789e165 100644 --- a/sdk/internal/ANVideoAd.h +++ b/sdk/internal/ANVideoAd.h @@ -19,11 +19,6 @@ @interface ANVideoAd : NSObject @property (nonatomic, readwrite, strong) NSString *content; -@property (nonatomic, readwrite, strong) NSString *height; -@property (nonatomic, readwrite, strong) NSString *width; -@property (nonatomic, readwrite, strong) NSString *type; @property (nonatomic, readwrite, strong) ANVast *vastDataModel; -@property (nonatomic, readwrite, assign, getter=isMraid) BOOL mraid; - -@end +@end \ No newline at end of file diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index f3da090a0..fcc5b3e57 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -52,7 +52,8 @@ - (instancetype)initWithVastDataModel:(ANVast *)vastDataModel{ if (self) { self.vastDataModel = vastDataModel; - _fileURL = [self.vastDataModel getMediaFileURL]; + _fileURL = self.vastDataModel.mediaFileURL; + ANLogDebug(@"Playing Media File URL %@", _fileURL); } return self; @@ -224,7 +225,7 @@ - (void)pause{ - (void)mute:(BOOL)value{ AVAudioSession *session = [AVAudioSession sharedInstance]; - NSError *error = [[NSError alloc] init]; + NSError *error; float volume = 1.0; From 4df00cf2ecd19083774567b70cbb593dd75a4784 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 23 Oct 2015 13:44:23 -0400 Subject: [PATCH 04/92] MS-1707 Added check for invalid VAST data model --- sdk/VastDataModel/ANVast.m | 16 ++++++++++++---- sdk/internal/ANUniversalTagAdServerResponse.m | 4 ++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/sdk/VastDataModel/ANVast.m b/sdk/VastDataModel/ANVast.m index c2faac84f..93b18e191 100644 --- a/sdk/VastDataModel/ANVast.m +++ b/sdk/VastDataModel/ANVast.m @@ -42,10 +42,18 @@ - (instancetype)initWithContent:(NSString *)vast { NSError *error; [self parseVastResponse:vast error:&error]; - if (!error) { - self.mediaFileURL = [self optimalMediaFileURL]; - } else { - ANLogError(@"VAST parsing error: %@", error); + if (error) { + ANLogDebug(@"Error parsing VAST response: %@", error); + return nil; + } + if (!self.anInLine) { + ANLogDebug(@"No linear ad found in VAST content, unable to use"); + return nil; + } + self.mediaFileURL = [self optimalMediaFileURL]; + if (!self.mediaFileURL) { + ANLogDebug(@"No valid media URL found in VAST content, unable to use"); + return nil; } } return self; diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 31169c653..b06646003 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -116,6 +116,10 @@ + (ANVideoAd *)videoAdFromAdObject:(NSDictionary *)adObject { ANVideoAd *videoAd = [[ANVideoAd alloc] init]; videoAd.content = [video[kANUniversalTagAdServerResponseVideoKeyContent] description]; videoAd.vastDataModel = [[ANVast alloc] initWithContent:videoAd.content]; + if (!videoAd.vastDataModel) { + ANLogDebug(@"Invalid VAST content, unable to use"); + return nil; + } return videoAd; } return nil; From 31caba364bf4f3f17648c8f9ffd3f0056fb377cf Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 23 Oct 2015 13:59:26 -0400 Subject: [PATCH 05/92] MS-1708 Added 'nobid' check --- sdk/internal/ANUniversalTagAdServerResponse.m | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index b06646003..bfd256c9f 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -16,6 +16,7 @@ #import "ANUniversalTagAdServerResponse.h" #import "ANLogging.h" +static NSString *const kANUniversalTagAdServerResponseKeyNoBid = @"nobid"; static NSString *const kANUniversalTagAdServerResponseKeyTags = @"tags"; static NSString *const kANUniversalTagAdServerResponseKeyAd = @"ad"; @@ -56,6 +57,9 @@ + (ANUniversalTagAdServerResponse *)responseWithData:(NSData *)data { - (void)processResponseData:(NSData *)data { NSDictionary *jsonResponse = [[self class] jsonResponseFromData:data]; if (jsonResponse) { + if ([[self class] isNoBidResponse:jsonResponse]) { + return; + } NSArray *tags = [[self class] tagsFromJSONResponse:jsonResponse]; for (NSDictionary *tag in tags) { NSDictionary *adObject = [[self class] adObjectFromTag:tag]; @@ -78,6 +82,14 @@ - (void)processResponseData:(NSData *)data { } } ++ (BOOL)isNoBidResponse:(NSDictionary *)jsonResponse { + if (jsonResponse[kANUniversalTagAdServerResponseKeyNoBid]) { + BOOL noBid = [jsonResponse[kANUniversalTagAdServerResponseKeyNoBid] boolValue]; + return noBid; + } + return NO; +} + + (NSArray *)tagsFromJSONResponse:(NSDictionary *)jsonResponse { return [[self class] validDictionaryArrayForKey:kANUniversalTagAdServerResponseKeyTags inJSONResponse:jsonResponse]; From 22f0c8bdb9cab66b06d7fe6ea3371b2d4f3eba95 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 23 Oct 2015 14:09:43 -0400 Subject: [PATCH 06/92] MS-1708 Restrict ad types --- sdk/internal/ANUniversalTagRequestBuilder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/internal/ANUniversalTagRequestBuilder.m b/sdk/internal/ANUniversalTagRequestBuilder.m index cdd97b787..69cdadd79 100644 --- a/sdk/internal/ANUniversalTagRequestBuilder.m +++ b/sdk/internal/ANUniversalTagRequestBuilder.m @@ -122,7 +122,6 @@ - (NSDictionary *)tag { if ([self.adFetcherDelegate conformsToProtocol:@protocol(ANInterstitialAdFetcherDelegate)]) { id interstitialDelegate = (id)self.adFetcherDelegate; NSMutableSet *allowedSizes = [interstitialDelegate allowedAdSizes]; - [allowedSizes addObject:[NSValue valueWithCGSize:CGSizeMake(1, 1)]]; NSMutableArray *sizeObjectArray = [[NSMutableArray alloc] init]; for (id sizeValue in allowedSizes) { if ([sizeValue isKindOfClass:[NSValue class]]) { @@ -133,6 +132,7 @@ - (NSDictionary *)tag { } tagDict[@"sizes"] = sizeObjectArray; } + tagDict[@"ad_types"] = @[@"banner", @"video"]; tagDict[@"disable_psa"] = @([self.adFetcherDelegate shouldServePublicServiceAnnouncements]); return [tagDict copy]; } From 370b723fd2bbdaeee1c94783090f3812bd5d3287 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 23 Oct 2015 14:10:31 -0400 Subject: [PATCH 07/92] MS-1708 Fix disable_psa behavior --- sdk/internal/ANUniversalTagRequestBuilder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/internal/ANUniversalTagRequestBuilder.m b/sdk/internal/ANUniversalTagRequestBuilder.m index 69cdadd79..a5c506b9a 100644 --- a/sdk/internal/ANUniversalTagRequestBuilder.m +++ b/sdk/internal/ANUniversalTagRequestBuilder.m @@ -133,7 +133,7 @@ - (NSDictionary *)tag { tagDict[@"sizes"] = sizeObjectArray; } tagDict[@"ad_types"] = @[@"banner", @"video"]; - tagDict[@"disable_psa"] = @([self.adFetcherDelegate shouldServePublicServiceAnnouncements]); + tagDict[@"disable_psa"] = @(![self.adFetcherDelegate shouldServePublicServiceAnnouncements]); return [tagDict copy]; } From 23b3f3a9e8472dea190db354784b99912751a0f4 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 23 Oct 2015 16:19:05 -0400 Subject: [PATCH 08/92] MS-1708 Fix 'no bid' behavior --- sdk/internal/ANUniversalTagAdServerResponse.m | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index bfd256c9f..280284450 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -57,11 +57,11 @@ + (ANUniversalTagAdServerResponse *)responseWithData:(NSData *)data { - (void)processResponseData:(NSData *)data { NSDictionary *jsonResponse = [[self class] jsonResponseFromData:data]; if (jsonResponse) { - if ([[self class] isNoBidResponse:jsonResponse]) { - return; - } NSArray *tags = [[self class] tagsFromJSONResponse:jsonResponse]; for (NSDictionary *tag in tags) { + if ([[self class] isNoBidTag:tag]) { + continue; + } NSDictionary *adObject = [[self class] adObjectFromTag:tag]; if (adObject) { ANStandardAd *standardAd = [[self class] standardAdFromAdObject:adObject]; @@ -82,9 +82,9 @@ - (void)processResponseData:(NSData *)data { } } -+ (BOOL)isNoBidResponse:(NSDictionary *)jsonResponse { - if (jsonResponse[kANUniversalTagAdServerResponseKeyNoBid]) { - BOOL noBid = [jsonResponse[kANUniversalTagAdServerResponseKeyNoBid] boolValue]; ++ (BOOL)isNoBidTag:(NSDictionary *)tag { + if (tag[kANUniversalTagAdServerResponseKeyNoBid]) { + BOOL noBid = [tag[kANUniversalTagAdServerResponseKeyNoBid] boolValue]; return noBid; } return NO; From ecd7cac0664cdcfd43c8fd9d3f68232aa6fbaafa Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Mon, 2 Nov 2015 18:04:54 +0530 Subject: [PATCH 09/92] Handle Clicks and auto play on closing native browser / moving from background to foreground. auto play on closing the native browser auto play on moving from background to foreground. handle clicks to open in-app browser and native browser (includes configuration changes) correction in ANTracking.m for proper parsing of tracking data --- .../Inline/Creatives/ANTracking.m | 19 +- sdk/internal/ANGlobal.h | 4 +- sdk/internal/ANInterstitialAd.m | 36 +--- sdk/internal/ANVideoPlayerViewController.h | 1 + sdk/internal/ANVideoPlayerViewController.m | 190 +++++++++++++++++- 5 files changed, 198 insertions(+), 52 deletions(-) diff --git a/sdk/VastDataModel/Inline/Creatives/ANTracking.m b/sdk/VastDataModel/Inline/Creatives/ANTracking.m index b9545b88a..1fd074244 100644 --- a/sdk/VastDataModel/Inline/Creatives/ANTracking.m +++ b/sdk/VastDataModel/Inline/Creatives/ANTracking.m @@ -24,19 +24,14 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ self = [super init]; if (self) { - ANXMLElement *trackingElement = [ANXML childElementNamed:@"Tracking" parentElement:element]; - if (trackingElement) { - - NSString *trackingURI = String(trackingElement->text); - if (trackingURI) { - self.trackingURI = trackingURI; - } + NSString *trackingURI = String(element->text); + if (trackingURI) { + self.trackingURI = trackingURI; + } - NSString *event = [ANXML valueOfAttributeNamed:@"event" forElement:trackingElement]; - if (event) { - self.vastEvent = event; - } - + NSString *event = [ANXML valueOfAttributeNamed:@"event" forElement:element]; + if (event) { + self.vastEvent = event; } } diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index 61490a39b..2fa3a3fe0 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -115,7 +115,9 @@ typedef NS_ENUM(NSUInteger, ANVideoEvent){ ANVideoEventMute, ANVideoEventUnMute, ANVideoEventStop, - ANVideoEventClose + ANVideoEventClose, + ANVideoEventCloseLinear, + ANVideoEventSkip }; typedef NS_ENUM(NSUInteger, ANMobileEndpoint) { diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index 2c12d6513..9449131b4 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -223,6 +223,7 @@ - (void)displayAdFromViewController:(UIViewController *)controller { _playbackViewController = [[ANVideoPlayerViewController alloc] initWithVastDataModel:videoAd.vastDataModel]; [_playbackViewController setSkipOffSet:self.closeDelay]; [_playbackViewController setSkipOffSetType:self.closeDelayType]; + [_playbackViewController setOpenClicksInNativeBrowser:self.opensInNativeBrowser]; } [controller presentViewController:self.playbackViewController animated:YES completion:nil]; @@ -431,41 +432,6 @@ - (void)openClickInBrowserWithURL:(NSURL *)url{ } } -- (void)fireVideoEventImpressions:(ANVideoEvent)event{ - switch (event) { - case ANVideoEventPause: - { - if ([self.delegate respondsToSelector:@selector(videoAdPaused:)]) { - [self.delegate videoAdPaused:self]; - } - break; - } - case ANVideoEventResume: - { - if ([self.delegate respondsToSelector:@selector(videoAdResumed:)]) { - [self.delegate videoAdResumed:self]; - } - break; - } - case ANVideoEventStop: - { - if ([self.delegate respondsToSelector:@selector(videoAdFinishedPlaying:)]) { - [self.delegate videoAdFinishedPlaying:self]; - } - break; - } - case ANVideoEventStart: - { - if ([self.delegate respondsToSelector:@selector(videoAdStarted:)]) { - [self.delegate videoAdStarted:self]; - } - break; - } - default: - break; - } -} - #pragma mark - ANBrowserViewControllerDelegate - (UIViewController *)rootViewControllerForDisplayingBrowserViewController:(ANBrowserViewController *)controller{ diff --git a/sdk/internal/ANVideoPlayerViewController.h b/sdk/internal/ANVideoPlayerViewController.h index 70e640525..b58d9ae57 100644 --- a/sdk/internal/ANVideoPlayerViewController.h +++ b/sdk/internal/ANVideoPlayerViewController.h @@ -24,6 +24,7 @@ @property (strong, nonatomic) ANVast *vastDataModel; @property (nonatomic) float skipOffSet; @property (nonatomic) NSUInteger skipOffSetType; +@property (nonatomic) BOOL openClicksInNativeBrowser; - (instancetype) initWithVastDataModel:(ANVast *)vastDataModel; - (void) play; diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index fcc5b3e57..f555de18f 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -26,9 +26,10 @@ #import "ANGlobal.h" #import #import "ANCircularAnimationView.h" +#import "ANBrowserViewController.h" -@interface ANVideoPlayerViewController (){ +@interface ANVideoPlayerViewController (){ float previousDuration; BOOL isStarted; BOOL isFirstQuartileDone; @@ -41,7 +42,7 @@ @interface ANVideoPlayerViewController () 0 && !isStarted) { isStarted = YES; ANLogDebug(@"Started"); + [self fireTrackingEventWithEvent:ANVideoEventStart]; //send video start event tracking }else if(currentDuration > 0){ @@ -184,22 +238,28 @@ - (void) updateEventsWithSeconds:(float) seconds{ if (currentDuration > quartileDuration && !isFirstQuartileDone) { isFirstQuartileDone = YES; ANLogDebug(@"First Quartile"); + [self fireTrackingEventWithEvent:ANVideoEventQuartileFirst]; //send first quartile event tracking }else if(currentDuration > quartileDuration*2 && !isMidPointQuartileDone){ isMidPointQuartileDone = YES; ANLogDebug(@"Mid Point"); + [self fireTrackingEventWithEvent:ANVideoEventQuartileMidPoint]; //send mid quartile event tracking }else if(currentDuration > quartileDuration * 3 && !isThirdQuartileDone){ isThirdQuartileDone = YES; ANLogDebug(@"Third Quartile"); + [self fireTrackingEventWithEvent:ANVideoEventQuartileThird]; //send third quartile event tracking } - }else if(currentDuration == totalDuration){ + } + + if(currentDuration == totalDuration){ isCompleteQuartileDone = YES; ANLogDebug(@"Complete Quartile"); + [self fireTrackingEventWithEvent:ANVideoEventQuartileComplete]; //send quartile complete event tracking } @@ -208,7 +268,11 @@ - (void) updateEventsWithSeconds:(float) seconds{ - (void)closeInterstitial{ [self pause]; - [self dismissViewControllerAnimated:YES completion:nil]; + [self dismissViewControllerAnimated:YES completion:^{ + [self fireTrackingEventWithEvent:ANVideoEventClose]; + [self fireTrackingEventWithEvent:ANVideoEventCloseLinear]; + [self removeApplicationNotifications]; + }]; } - (BOOL)prefersStatusBarHidden{ @@ -217,10 +281,16 @@ - (BOOL)prefersStatusBarHidden{ - (void)play{ [self.playerView.player play]; + + if (CMTimeGetSeconds(self.playerView.player.currentTime) > 0) { + [self fireTrackingEventWithEvent:ANVideoEventResume]; + } } - (void)pause{ [self.playerView.player pause]; + + [self fireTrackingEventWithEvent:ANVideoEventPause]; } - (void)mute:(BOOL)value{ @@ -238,11 +308,13 @@ - (void)mute:(BOOL)value{ if (value) { [self.playerView.player setVolume:0]; ANLogDebug(@"Volume Muted."); + [self fireTrackingEventWithEvent:ANVideoEventMute]; //send mute event tracking }else{ [self.playerView.player setVolume:volume]; ANLogDebug(@"Volume Unmuted."); + [self fireTrackingEventWithEvent:ANVideoEventUnMute]; //send unmute event tracking } @@ -250,6 +322,89 @@ - (void)mute:(BOOL)value{ - (void)closeButtonClicked{ [self closeInterstitial]; + [self fireTrackingEventWithEvent:ANVideoEventSkip]; +} + +- (void) fireTrackingEventWithEvent:(ANVideoEvent)event{ + NSString *eventString = [NSString string]; + switch (event) { + case ANVideoEventStart: + eventString = @"start"; + break; + case ANVideoEventQuartileFirst: + eventString = @"firstQuartile"; + break; + case ANVideoEventQuartileMidPoint: + eventString = @"midpoint"; + break; + case ANVideoEventQuartileThird: + eventString = @"thirdQuartile"; + break; + case ANVideoEventQuartileComplete: + eventString = @"complete"; + break; + case ANVideoEventSkip: + eventString = @"skip"; + break; + case ANVideoEventMute: + eventString = @"mute"; + break; + case ANVideoEventUnMute: + eventString = @"unmute"; + break; + case ANVideoEventPause: + eventString = @"pause"; + break; + case ANVideoEventResume: + eventString = @"resume"; + break; + case ANVideoEventClose: + eventString = @"close"; + break; + case ANVideoEventCloseLinear: + eventString = @"closeLinear"; + break; + default: + break; + } + + NSArray *trackingArray = [NSArray array]; + ANInLine *anInline = self.vastDataModel.anInLine?self.vastDataModel.anInLine:self.vastDataModel.anWrapper; + for (ANCreative *creative in anInline.creatives) { + if (creative) { + if (creative.anLinear) { + if (creative.anLinear.trackingEvents.count > 0) { + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"vastEvent == %@", eventString]; + trackingArray = [creative.anLinear.trackingEvents filteredArrayUsingPredicate:predicate]; + + for (ANTracking *tracking in trackingArray) { + [self fireImpressionWithURL:tracking.trackingURI forEvent:eventString]; + } + } + } + } + } +} + +- (void) fireClickTracking{ + ANInLine *anInline = self.vastDataModel.anInLine?self.vastDataModel.anInLine:self.vastDataModel.anWrapper; + if (anInline) { + for (ANCreative *creative in anInline.creatives) { + if (creative) { + if (creative.anLinear.anVideoClicks) { + NSString *clickTrackingURL = creative.anLinear.anVideoClicks.clickTracking; + [self fireImpressionWithURL:clickTrackingURL forEvent:@"click"]; + } + } + } + } +} + +- (void) fireImpressionWithURL:(NSString *)urlString forEvent:(NSString *)eventString{ + NSURLRequest *requestURL = [NSURLRequest requestWithURL:[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]; + [NSURLConnection sendAsynchronousRequest:requestURL queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { + ANLogDebug(@"Impression Fired: Event=%@, URL: %@", eventString, [[requestURL URL] absoluteString]); + }]; } - (void)dealloc{ @@ -258,8 +413,35 @@ - (void)dealloc{ _volumeView = nil; _playerView = nil; _circularAnimationView = nil; + _browserController = nil; + +} + +- (void)openClickInBrowserWithURL:(NSURL *)url{ + + if (!self.openClicksInNativeBrowser) { + _browserController = [[ANBrowserViewController alloc] initWithURL:url delegate:self delayPresentationForLoad:NO]; + + if (!self.browserController) { + NSLog(@"Failed to initialize the browser."); + } + }else{ + [self pause]; + [[UIApplication sharedApplication] openURL:url]; + } +} + +#pragma mark - ANBrowserViewControllerDelegate + +- (UIViewController *)rootViewControllerForDisplayingBrowserViewController:(ANBrowserViewController *)controller{ + UIViewController *rootViewController = [[self presentationController] presentedViewController]; + return rootViewController; } +- (void)didDismissBrowserViewController:(ANBrowserViewController *)controller{ + //play the video + [self play]; +} @end From a14567fd458d169928fd0fca6f3f6baea2106dc2 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Tue, 3 Nov 2015 19:11:22 +0530 Subject: [PATCH 10/92] Work against MS1777 Improvements in Vast Video Improvements in Volume Button Mute & unmute, impression tracking for creativeView when video is loaded. --- sdk/internal/ANGlobal.h | 3 ++- sdk/internal/ANVideoPlayerViewController.m | 25 ++++++++++++++++++++-- sdk/internal/ANVolumeButtonView.h | 1 + sdk/internal/ANVolumeButtonView.m | 9 ++++++-- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index 2fa3a3fe0..e18d4ce3e 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -117,7 +117,8 @@ typedef NS_ENUM(NSUInteger, ANVideoEvent){ ANVideoEventStop, ANVideoEventClose, ANVideoEventCloseLinear, - ANVideoEventSkip + ANVideoEventSkip, + ANVideoEventCreativeView }; typedef NS_ENUM(NSUInteger, ANMobileEndpoint) { diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index f555de18f..473c5c057 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -27,6 +27,7 @@ #import #import "ANCircularAnimationView.h" #import "ANBrowserViewController.h" +#import @interface ANVideoPlayerViewController (){ @@ -223,15 +224,19 @@ - (void) updateEventsWithSeconds:(float) seconds{ float quartileDuration = totalDuration/4; if (self.playerView.player.rate > 0 && !self.playerView.player.error) { + //creative load event should be fired only when the video is viewed. + [self fireTrackingEventWithEvent:ANVideoEventCreativeView]; + [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; } if (currentDuration > 0 && !isStarted) { isStarted = YES; ANLogDebug(@"Started"); - [self fireTrackingEventWithEvent:ANVideoEventStart]; //send video start event tracking + [self fireTrackingEventWithEvent:ANVideoEventStart]; + }else if(currentDuration > 0){ if(currentDuration > previousDuration){ previousDuration = currentDuration; @@ -297,7 +302,7 @@ - (void)mute:(BOOL)value{ AVAudioSession *session = [AVAudioSession sharedInstance]; NSError *error; - float volume = 1.0; + float volume = 0.5; if ([session setActive:YES error:&error]) { volume = session.outputVolume; @@ -320,6 +325,19 @@ - (void)mute:(BOOL)value{ } } +- (float)getSystemVolume{ + MPVolumeView *slide = [MPVolumeView new]; + UISlider *volumeViewSlider; + + for (UIView *view in [slide subviews]){ + if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) { + volumeViewSlider = (UISlider *) view; + } + } + + return [volumeViewSlider value]; +} + - (void)closeButtonClicked{ [self closeInterstitial]; [self fireTrackingEventWithEvent:ANVideoEventSkip]; @@ -364,6 +382,9 @@ - (void) fireTrackingEventWithEvent:(ANVideoEvent)event{ case ANVideoEventCloseLinear: eventString = @"closeLinear"; break; + case ANVideoEventCreativeView: + eventString = @"creativeView"; + break; default: break; } diff --git a/sdk/internal/ANVolumeButtonView.h b/sdk/internal/ANVolumeButtonView.h index dcea6daca..b93f2e1fa 100644 --- a/sdk/internal/ANVolumeButtonView.h +++ b/sdk/internal/ANVolumeButtonView.h @@ -21,6 +21,7 @@ @protocol ANVolumeButtonViewDelegate - (void) mute:(BOOL)value; +- (float) getSystemVolume; @end diff --git a/sdk/internal/ANVolumeButtonView.m b/sdk/internal/ANVolumeButtonView.m index dad0c2ba6..9557275af 100644 --- a/sdk/internal/ANVolumeButtonView.m +++ b/sdk/internal/ANVolumeButtonView.m @@ -43,8 +43,13 @@ - (instancetype) initWithDelegate:(id)delegate{ - (void) addVolumeViewWithContainer:(UIView *)containerView{ _volumeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; - UIImage *volumeImage = [UIImage imageWithContentsOfFile:ANPathForANResource(@"mute-off",@"png")]; - [self.volumeButton setBackgroundImage:volumeImage forState:UIControlStateNormal]; +// UIImage *volumeImage = [UIImage imageWithContentsOfFile:ANPathForANResource(@"mute-off",@"png")]; +// [self.volumeButton setBackgroundImage:volumeImage forState:UIControlStateNormal]; + + isVolumeMuted = ([self.delegate getSystemVolume] > 0) ? NO : YES; + isVolumeMuted = !isVolumeMuted; //negate the value as it would again be negated inside handleVolumeButton + + [self handleVolumeButton]; [self.volumeButton addTarget:self action:@selector(handleVolumeButton) forControlEvents:UIControlEventTouchUpInside]; From 2450e6c50a70f27e1b640f2ff727778b82fb42b8 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 3 Nov 2015 15:30:50 -0500 Subject: [PATCH 11/92] MS-1538 Video Ad Refactoring, Bug Fixes --- .../ANSDK.xcodeproj/project.pbxproj | 174 ++++--- sdk/Resources/images/mute-off.png | Bin 1830 -> 2062 bytes sdk/Resources/images/mute-off@2x.png | Bin 3914 -> 3699 bytes sdk/Resources/images/mute-off@3x.png | Bin 0 -> 5814 bytes sdk/Resources/images/mute-on.png | Bin 1779 -> 1954 bytes sdk/Resources/images/mute-on@2x.png | Bin 3821 -> 3267 bytes sdk/Resources/images/mute-on@3x.png | Bin 0 -> 5159 bytes sdk/internal/ANInterstitialAd.m | 45 +- sdk/internal/ANVASTUtil.h | 24 + sdk/internal/ANVASTUtil.m | 60 +++ sdk/internal/ANVast+ANCategory.h | 26 + sdk/internal/ANVast+ANCategory.m | 85 ++++ sdk/internal/ANVideoPlayerViewController.h | 10 +- sdk/internal/ANVideoPlayerViewController.m | 448 +++++++----------- sdk/internal/ANVolumeButtonView.h | 7 +- sdk/internal/ANVolumeButtonView.m | 54 +-- 16 files changed, 494 insertions(+), 439 deletions(-) create mode 100644 sdk/Resources/images/mute-off@3x.png create mode 100644 sdk/Resources/images/mute-on@3x.png create mode 100644 sdk/internal/ANVASTUtil.h create mode 100644 sdk/internal/ANVASTUtil.m create mode 100644 sdk/internal/ANVast+ANCategory.h create mode 100644 sdk/internal/ANVast+ANCategory.m diff --git a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj index fe8e9c7d4..c1e3dfa9e 100644 --- a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj +++ b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj @@ -45,72 +45,68 @@ 8A6D2E8D1A44A751003CE77A /* interstitial_flat_closebox@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A6D2E841A44A5D3003CE77A /* interstitial_flat_closebox@3x.png */; }; 8A6D2E8E1A44A751003CE77A /* interstitial_flat_closebox@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A6D2E871A44A62A003CE77A /* interstitial_flat_closebox@2x.png */; }; 8A6D2E8F1A44A751003CE77A /* interstitial_flat_closebox.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A6D2E881A44A62A003CE77A /* interstitial_flat_closebox.png */; }; - 8A73FA311BD6B34E00D18188 /* ANAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B21BD6B34D00D18188 /* ANAdFetcher.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA321BD6B34E00D18188 /* ANAdFetcherResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B41BD6B34D00D18188 /* ANAdFetcherResponse.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA331BD6B34E00D18188 /* ANAdRequestUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B61BD6B34D00D18188 /* ANAdRequestUrl.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA341BD6B34E00D18188 /* ANAdServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B81BD6B34D00D18188 /* ANAdServerResponse.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA351BD6B34E00D18188 /* ANAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B91BD6B34D00D18188 /* ANAdView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA361BD6B34E00D18188 /* ANAdWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BC1BD6B34D00D18188 /* ANAdWebViewController.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA371BD6B34E00D18188 /* ANANJAMImplementation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BE1BD6B34D00D18188 /* ANANJAMImplementation.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA381BD6B34E00D18188 /* ANBannerAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BF1BD6B34D00D18188 /* ANBannerAdView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA391BD6B34E00D18188 /* ANBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C11BD6B34D00D18188 /* ANBrowserViewController.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA3A1BD6B34E00D18188 /* ANCircularAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C31BD6B34D00D18188 /* ANCircularAnimationView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA3B1BD6B34E00D18188 /* ANClickOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C51BD6B34D00D18188 /* ANClickOverlayView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA3C1BD6B34E00D18188 /* ANGlobal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C71BD6B34D00D18188 /* ANGlobal.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA3D1BD6B34E00D18188 /* ANInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C81BD6B34D00D18188 /* ANInterstitialAd.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA3E1BD6B34E00D18188 /* ANInterstitialAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CA1BD6B34D00D18188 /* ANInterstitialAdViewController.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA3F1BD6B34E00D18188 /* ANLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CB1BD6B34D00D18188 /* ANLocation.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA401BD6B34E00D18188 /* ANLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CD1BD6B34D00D18188 /* ANLogging.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA411BD6B34E00D18188 /* ANLogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CE1BD6B34D00D18188 /* ANLogManager.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA421BD6B34E00D18188 /* ANMediatedAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D01BD6B34D00D18188 /* ANMediatedAd.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA431BD6B34E00D18188 /* ANMediationAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D21BD6B34D00D18188 /* ANMediationAdViewController.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA441BD6B34E00D18188 /* ANMediationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D41BD6B34D00D18188 /* ANMediationContainerView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA451BD6B34E00D18188 /* ANOpenInExternalBrowserActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D61BD6B34D00D18188 /* ANOpenInExternalBrowserActivity.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA461BD6B34E00D18188 /* ANPBBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D81BD6B34D00D18188 /* ANPBBuffer.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA471BD6B34E00D18188 /* ANPBContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DA1BD6B34D00D18188 /* ANPBContainerView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA481BD6B34E00D18188 /* ANPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DC1BD6B34D00D18188 /* ANPlayerView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA491BD6B34E00D18188 /* ANReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DE1BD6B34D00D18188 /* ANReachability.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA4A1BD6B34E00D18188 /* ANStandardAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E01BD6B34D00D18188 /* ANStandardAd.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA4B1BD6B34E00D18188 /* ANTargetingParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E11BD6B34D00D18188 /* ANTargetingParameters.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA4C1BD6B34E00D18188 /* ANVideoAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E31BD6B34D00D18188 /* ANVideoAd.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA4D1BD6B34E00D18188 /* ANVideoPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E51BD6B34D00D18188 /* ANVideoPlayerViewController.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA4E1BD6B34E00D18188 /* ANVolumeButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E71BD6B34D00D18188 /* ANVolumeButtonView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA4F1BD6B34E00D18188 /* ANMRAIDCalendarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EA1BD6B34D00D18188 /* ANMRAIDCalendarManager.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA501BD6B34E00D18188 /* ANMRAIDContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EC1BD6B34D00D18188 /* ANMRAIDContainerView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA511BD6B34E00D18188 /* ANMRAIDExpandProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EE1BD6B34D00D18188 /* ANMRAIDExpandProperties.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA521BD6B34E00D18188 /* ANMRAIDExpandViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F01BD6B34D00D18188 /* ANMRAIDExpandViewController.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA531BD6B34E00D18188 /* ANMRAIDJavascriptUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F21BD6B34D00D18188 /* ANMRAIDJavascriptUtil.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA541BD6B34E00D18188 /* ANMRAIDOrientationProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F41BD6B34D00D18188 /* ANMRAIDOrientationProperties.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA551BD6B34E00D18188 /* ANMRAIDResizeProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F61BD6B34D00D18188 /* ANMRAIDResizeProperties.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA561BD6B34E00D18188 /* ANMRAIDResizeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F81BD6B34D00D18188 /* ANMRAIDResizeView.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA571BD6B34E00D18188 /* ANMRAIDResizeViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FA1BD6B34D00D18188 /* ANMRAIDResizeViewManager.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA581BD6B34E00D18188 /* ANMRAIDUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FC1BD6B34D00D18188 /* ANMRAIDUtil.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA591BD6B34E00D18188 /* ANInLine.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FF1BD6B34D00D18188 /* ANInLine.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA5A1BD6B34E00D18188 /* ANVast.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA011BD6B34D00D18188 /* ANVast.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA5B1BD6B34E00D18188 /* ANVastDataModelInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA031BD6B34D00D18188 /* ANVastDataModelInterface.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA5C1BD6B34E00D18188 /* ANWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA051BD6B34D00D18188 /* ANWrapper.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA5D1BD6B34E00D18188 /* ANAdSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA081BD6B34D00D18188 /* ANAdSystem.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA5E1BD6B34E00D18188 /* ANImpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0A1BD6B34D00D18188 /* ANImpression.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA5F1BD6B34E00D18188 /* ANCreative.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0D1BD6B34D00D18188 /* ANCreative.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA601BD6B34E00D18188 /* ANLinear.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0F1BD6B34D00D18188 /* ANLinear.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA611BD6B34E00D18188 /* ANNonLinearAds.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA111BD6B34D00D18188 /* ANNonLinearAds.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA621BD6B34E00D18188 /* ANStaticResource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA131BD6B34D00D18188 /* ANStaticResource.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA631BD6B34E00D18188 /* ANTracking.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA151BD6B34D00D18188 /* ANTracking.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA641BD6B34E00D18188 /* AnCompanion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA181BD6B34D00D18188 /* AnCompanion.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA651BD6B34E00D18188 /* ANVideoClicks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA1B1BD6B34D00D18188 /* ANVideoClicks.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA661BD6B34E00D18188 /* ANMediaFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA1E1BD6B34D00D18188 /* ANMediaFile.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA671BD6B34E00D18188 /* ANCustomClick.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA211BD6B34D00D18188 /* ANCustomClick.m */; settings = {ASSET_TAGS = (); }; }; - 8A73FA681BD6B34E00D18188 /* ANNonLinear.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA241BD6B34D00D18188 /* ANNonLinear.m */; settings = {ASSET_TAGS = (); }; }; + 8A73FA311BD6B34E00D18188 /* ANAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B21BD6B34D00D18188 /* ANAdFetcher.m */; }; + 8A73FA321BD6B34E00D18188 /* ANAdFetcherResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B41BD6B34D00D18188 /* ANAdFetcherResponse.m */; }; + 8A73FA331BD6B34E00D18188 /* ANAdRequestUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B61BD6B34D00D18188 /* ANAdRequestUrl.m */; }; + 8A73FA341BD6B34E00D18188 /* ANAdServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B81BD6B34D00D18188 /* ANAdServerResponse.m */; }; + 8A73FA351BD6B34E00D18188 /* ANAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9B91BD6B34D00D18188 /* ANAdView.m */; }; + 8A73FA361BD6B34E00D18188 /* ANAdWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BC1BD6B34D00D18188 /* ANAdWebViewController.m */; }; + 8A73FA371BD6B34E00D18188 /* ANANJAMImplementation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BE1BD6B34D00D18188 /* ANANJAMImplementation.m */; }; + 8A73FA381BD6B34E00D18188 /* ANBannerAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9BF1BD6B34D00D18188 /* ANBannerAdView.m */; }; + 8A73FA391BD6B34E00D18188 /* ANBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C11BD6B34D00D18188 /* ANBrowserViewController.m */; }; + 8A73FA3A1BD6B34E00D18188 /* ANCircularAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C31BD6B34D00D18188 /* ANCircularAnimationView.m */; }; + 8A73FA3B1BD6B34E00D18188 /* ANClickOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C51BD6B34D00D18188 /* ANClickOverlayView.m */; }; + 8A73FA3C1BD6B34E00D18188 /* ANGlobal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C71BD6B34D00D18188 /* ANGlobal.m */; }; + 8A73FA3D1BD6B34E00D18188 /* ANInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9C81BD6B34D00D18188 /* ANInterstitialAd.m */; }; + 8A73FA3E1BD6B34E00D18188 /* ANInterstitialAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CA1BD6B34D00D18188 /* ANInterstitialAdViewController.m */; }; + 8A73FA3F1BD6B34E00D18188 /* ANLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CB1BD6B34D00D18188 /* ANLocation.m */; }; + 8A73FA401BD6B34E00D18188 /* ANLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CD1BD6B34D00D18188 /* ANLogging.m */; }; + 8A73FA411BD6B34E00D18188 /* ANLogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9CE1BD6B34D00D18188 /* ANLogManager.m */; }; + 8A73FA421BD6B34E00D18188 /* ANMediatedAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D01BD6B34D00D18188 /* ANMediatedAd.m */; }; + 8A73FA431BD6B34E00D18188 /* ANMediationAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D21BD6B34D00D18188 /* ANMediationAdViewController.m */; }; + 8A73FA441BD6B34E00D18188 /* ANMediationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D41BD6B34D00D18188 /* ANMediationContainerView.m */; }; + 8A73FA451BD6B34E00D18188 /* ANOpenInExternalBrowserActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D61BD6B34D00D18188 /* ANOpenInExternalBrowserActivity.m */; }; + 8A73FA461BD6B34E00D18188 /* ANPBBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9D81BD6B34D00D18188 /* ANPBBuffer.m */; }; + 8A73FA471BD6B34E00D18188 /* ANPBContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DA1BD6B34D00D18188 /* ANPBContainerView.m */; }; + 8A73FA481BD6B34E00D18188 /* ANPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DC1BD6B34D00D18188 /* ANPlayerView.m */; }; + 8A73FA491BD6B34E00D18188 /* ANReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9DE1BD6B34D00D18188 /* ANReachability.m */; }; + 8A73FA4A1BD6B34E00D18188 /* ANStandardAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E01BD6B34D00D18188 /* ANStandardAd.m */; }; + 8A73FA4B1BD6B34E00D18188 /* ANTargetingParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E11BD6B34D00D18188 /* ANTargetingParameters.m */; }; + 8A73FA4C1BD6B34E00D18188 /* ANVideoAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E31BD6B34D00D18188 /* ANVideoAd.m */; }; + 8A73FA4D1BD6B34E00D18188 /* ANVideoPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E51BD6B34D00D18188 /* ANVideoPlayerViewController.m */; }; + 8A73FA4E1BD6B34E00D18188 /* ANVolumeButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9E71BD6B34D00D18188 /* ANVolumeButtonView.m */; }; + 8A73FA4F1BD6B34E00D18188 /* ANMRAIDCalendarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EA1BD6B34D00D18188 /* ANMRAIDCalendarManager.m */; }; + 8A73FA501BD6B34E00D18188 /* ANMRAIDContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EC1BD6B34D00D18188 /* ANMRAIDContainerView.m */; }; + 8A73FA511BD6B34E00D18188 /* ANMRAIDExpandProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9EE1BD6B34D00D18188 /* ANMRAIDExpandProperties.m */; }; + 8A73FA521BD6B34E00D18188 /* ANMRAIDExpandViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F01BD6B34D00D18188 /* ANMRAIDExpandViewController.m */; }; + 8A73FA531BD6B34E00D18188 /* ANMRAIDJavascriptUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F21BD6B34D00D18188 /* ANMRAIDJavascriptUtil.m */; }; + 8A73FA541BD6B34E00D18188 /* ANMRAIDOrientationProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F41BD6B34D00D18188 /* ANMRAIDOrientationProperties.m */; }; + 8A73FA551BD6B34E00D18188 /* ANMRAIDResizeProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F61BD6B34D00D18188 /* ANMRAIDResizeProperties.m */; }; + 8A73FA561BD6B34E00D18188 /* ANMRAIDResizeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9F81BD6B34D00D18188 /* ANMRAIDResizeView.m */; }; + 8A73FA571BD6B34E00D18188 /* ANMRAIDResizeViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FA1BD6B34D00D18188 /* ANMRAIDResizeViewManager.m */; }; + 8A73FA581BD6B34E00D18188 /* ANMRAIDUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FC1BD6B34D00D18188 /* ANMRAIDUtil.m */; }; + 8A73FA591BD6B34E00D18188 /* ANInLine.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73F9FF1BD6B34D00D18188 /* ANInLine.m */; }; + 8A73FA5A1BD6B34E00D18188 /* ANVast.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA011BD6B34D00D18188 /* ANVast.m */; }; + 8A73FA5B1BD6B34E00D18188 /* ANVastDataModelInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA031BD6B34D00D18188 /* ANVastDataModelInterface.m */; }; + 8A73FA5C1BD6B34E00D18188 /* ANWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA051BD6B34D00D18188 /* ANWrapper.m */; }; + 8A73FA5D1BD6B34E00D18188 /* ANAdSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA081BD6B34D00D18188 /* ANAdSystem.m */; }; + 8A73FA5E1BD6B34E00D18188 /* ANImpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0A1BD6B34D00D18188 /* ANImpression.m */; }; + 8A73FA5F1BD6B34E00D18188 /* ANCreative.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0D1BD6B34D00D18188 /* ANCreative.m */; }; + 8A73FA601BD6B34E00D18188 /* ANLinear.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA0F1BD6B34D00D18188 /* ANLinear.m */; }; + 8A73FA611BD6B34E00D18188 /* ANNonLinearAds.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA111BD6B34D00D18188 /* ANNonLinearAds.m */; }; + 8A73FA621BD6B34E00D18188 /* ANStaticResource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA131BD6B34D00D18188 /* ANStaticResource.m */; }; + 8A73FA631BD6B34E00D18188 /* ANTracking.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA151BD6B34D00D18188 /* ANTracking.m */; }; + 8A73FA641BD6B34E00D18188 /* AnCompanion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA181BD6B34D00D18188 /* AnCompanion.m */; }; + 8A73FA651BD6B34E00D18188 /* ANVideoClicks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA1B1BD6B34D00D18188 /* ANVideoClicks.m */; }; + 8A73FA661BD6B34E00D18188 /* ANMediaFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA1E1BD6B34D00D18188 /* ANMediaFile.m */; }; + 8A73FA671BD6B34E00D18188 /* ANCustomClick.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA211BD6B34D00D18188 /* ANCustomClick.m */; }; + 8A73FA681BD6B34E00D18188 /* ANNonLinear.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FA241BD6B34D00D18188 /* ANNonLinear.m */; }; 8A7FB9511B0527E800C90859 /* ANAdAdapterBaseChartboost.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8A949AD21ADF1D8B00D83DCE /* ANAdAdapterBaseChartboost.h */; }; 8A82FDF61A30F36C00A267A0 /* ANNativeImpressionTrackerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A82FDF41A30F36B00A267A0 /* ANNativeImpressionTrackerManager.m */; }; 8A84E42E1A25350800C60EAB /* ANNativeAdResponse+PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A84E42A1A2534F300C60EAB /* ANNativeAdResponse+PrivateMethods.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A87BF351BD9443000281EA9 /* ANUniversalTagRequestBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF341BD9443000281EA9 /* ANUniversalTagRequestBuilder.m */; settings = {ASSET_TAGS = (); }; }; - 8A87BF4B1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF4A1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m */; settings = {ASSET_TAGS = (); }; }; - 8A87BF501BD961EB00281EA9 /* ANInterstitialAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF4F1BD961EB00281EA9 /* ANInterstitialAdFetcher.m */; settings = {ASSET_TAGS = (); }; }; - 8A87BF551BD96E5C00281EA9 /* mute-off.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A87BF511BD96E4E00281EA9 /* mute-off.png */; }; - 8A87BF561BD96E5C00281EA9 /* mute-off@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A87BF521BD96E4E00281EA9 /* mute-off@2x.png */; }; - 8A87BF571BD96E5C00281EA9 /* mute-on.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A87BF531BD96E4E00281EA9 /* mute-on.png */; }; - 8A87BF581BD96E5C00281EA9 /* mute-on@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A87BF541BD96E4E00281EA9 /* mute-on@2x.png */; }; + 8A87BF351BD9443000281EA9 /* ANUniversalTagRequestBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF341BD9443000281EA9 /* ANUniversalTagRequestBuilder.m */; }; + 8A87BF4B1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF4A1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m */; }; + 8A87BF501BD961EB00281EA9 /* ANInterstitialAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87BF4F1BD961EB00281EA9 /* ANInterstitialAdFetcher.m */; }; 8A8DEFA21AD5C03D00742AD7 /* ANAdAdapterBaseInMobi.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8AA5B4E51AA8B7F800522E1C /* ANAdAdapterBaseInMobi.h */; }; 8A8DEFA31AD5C04700742AD7 /* ANAdAdapterBaseAdColony.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8A8E0FDA1AD432B7004C5C50 /* ANAdAdapterBaseAdColony.h */; }; 8A8DEFA41AD5C05300742AD7 /* ANAdAdapterBaseVungle.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8AD7C4DC1AD2FF070049C997 /* ANAdAdapterBaseVungle.h */; }; @@ -175,8 +171,16 @@ 8AA5B4E31AA8B74E00522E1C /* ANAdAdapterInterstitialInMobi.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA5B4E01AA8B74E00522E1C /* ANAdAdapterInterstitialInMobi.m */; }; 8AA5B4E41AA8B74E00522E1C /* ANAdAdapterNativeInMobi.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA5B4E21AA8B74E00522E1C /* ANAdAdapterNativeInMobi.m */; }; 8AA5B4E71AA8B7F800522E1C /* ANAdAdapterBaseInMobi.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA5B4E61AA8B7F800522E1C /* ANAdAdapterBaseInMobi.m */; }; - 8AAD5D161BD6C0E300B4CD53 /* ANXML+HTTP.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD5D131BD6C0E300B4CD53 /* ANXML+HTTP.m */; settings = {ASSET_TAGS = (); }; }; - 8AAD5D171BD6C0E300B4CD53 /* ANXML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD5D151BD6C0E300B4CD53 /* ANXML.m */; settings = {ASSET_TAGS = (); }; }; + 8AAD5D161BD6C0E300B4CD53 /* ANXML+HTTP.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD5D131BD6C0E300B4CD53 /* ANXML+HTTP.m */; }; + 8AAD5D171BD6C0E300B4CD53 /* ANXML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD5D151BD6C0E300B4CD53 /* ANXML.m */; }; + 8ABC3FED1BE9195B0099501F /* ANVASTUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8ABC3FEC1BE9195B0099501F /* ANVASTUtil.m */; }; + 8ABC3FF41BE91B530099501F /* mute-off.png in Resources */ = {isa = PBXBuildFile; fileRef = 8ABC3FEE1BE91B530099501F /* mute-off.png */; }; + 8ABC3FF51BE91B530099501F /* mute-off@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8ABC3FEF1BE91B530099501F /* mute-off@2x.png */; }; + 8ABC3FF61BE91B530099501F /* mute-off@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8ABC3FF01BE91B530099501F /* mute-off@3x.png */; }; + 8ABC3FF71BE91B530099501F /* mute-on.png in Resources */ = {isa = PBXBuildFile; fileRef = 8ABC3FF11BE91B530099501F /* mute-on.png */; }; + 8ABC3FF81BE91B530099501F /* mute-on@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8ABC3FF21BE91B530099501F /* mute-on@2x.png */; }; + 8ABC3FF91BE91B530099501F /* mute-on@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8ABC3FF31BE91B530099501F /* mute-on@3x.png */; }; + 8ABC3FFC1BE91D910099501F /* ANVast+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 8ABC3FFB1BE91D910099501F /* ANVast+ANCategory.m */; }; 8AD5155D19D216E6002E53D6 /* ANAdAdapterBannerAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155619D216E6002E53D6 /* ANAdAdapterBannerAmazon.m */; }; 8AD5155E19D216E6002E53D6 /* ANAdAdapterBaseAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155819D216E6002E53D6 /* ANAdAdapterBaseAmazon.m */; }; 8AD5155F19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155A19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m */; }; @@ -715,10 +719,6 @@ 8A87BF4A1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANUniversalTagAdServerResponse.m; sourceTree = ""; }; 8A87BF4E1BD961EB00281EA9 /* ANInterstitialAdFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAdFetcher.h; sourceTree = ""; }; 8A87BF4F1BD961EB00281EA9 /* ANInterstitialAdFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInterstitialAdFetcher.m; sourceTree = ""; }; - 8A87BF511BD96E4E00281EA9 /* mute-off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-off.png"; sourceTree = ""; }; - 8A87BF521BD96E4E00281EA9 /* mute-off@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-off@2x.png"; sourceTree = ""; }; - 8A87BF531BD96E4E00281EA9 /* mute-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-on.png"; sourceTree = ""; }; - 8A87BF541BD96E4E00281EA9 /* mute-on@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-on@2x.png"; sourceTree = ""; }; 8A8DEF891AD58EC900742AD7 /* ANAdAdapterBaseAdColony+PrivateMethods.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ANAdAdapterBaseAdColony+PrivateMethods.h"; sourceTree = ""; }; 8A8E0FDA1AD432B7004C5C50 /* ANAdAdapterBaseAdColony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBaseAdColony.h; sourceTree = ""; }; 8A8E0FDB1AD432B7004C5C50 /* ANAdAdapterBaseAdColony.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBaseAdColony.m; sourceTree = ""; }; @@ -843,6 +843,16 @@ 8AB8762E1A0994310022D9A5 /* ANNativeMediatedAdResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANNativeMediatedAdResponse.m; sourceTree = ""; }; 8ABB76691A00385C00FEAD9D /* ANAdConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdConstants.h; sourceTree = ""; }; 8ABB766D1A004DBD00FEAD9D /* ANNativeAdStarRating.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANNativeAdStarRating.h; path = native/ANNativeAdStarRating.h; sourceTree = ""; }; + 8ABC3FEB1BE9195B0099501F /* ANVASTUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANVASTUtil.h; sourceTree = ""; }; + 8ABC3FEC1BE9195B0099501F /* ANVASTUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANVASTUtil.m; sourceTree = ""; }; + 8ABC3FEE1BE91B530099501F /* mute-off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-off.png"; sourceTree = ""; }; + 8ABC3FEF1BE91B530099501F /* mute-off@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-off@2x.png"; sourceTree = ""; }; + 8ABC3FF01BE91B530099501F /* mute-off@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-off@3x.png"; sourceTree = ""; }; + 8ABC3FF11BE91B530099501F /* mute-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-on.png"; sourceTree = ""; }; + 8ABC3FF21BE91B530099501F /* mute-on@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-on@2x.png"; sourceTree = ""; }; + 8ABC3FF31BE91B530099501F /* mute-on@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-on@3x.png"; sourceTree = ""; }; + 8ABC3FFA1BE91D910099501F /* ANVast+ANCategory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANVast+ANCategory.h"; sourceTree = ""; }; + 8ABC3FFB1BE91D910099501F /* ANVast+ANCategory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ANVast+ANCategory.m"; sourceTree = ""; }; 8AC662A219DC9DDA004025D5 /* MPServerAdPositioning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPServerAdPositioning.h; sourceTree = ""; }; 8AC662A319DC9E07004025D5 /* MoPub-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MoPub-Bridging-Header.h"; sourceTree = ""; }; 8AD5154019D214CA002E53D6 /* libANSDKAmazonAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKAmazonAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1231,6 +1241,10 @@ 8A87BF4A1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m */, 8A87BF331BD9443000281EA9 /* ANUniversalTagRequestBuilder.h */, 8A87BF341BD9443000281EA9 /* ANUniversalTagRequestBuilder.m */, + 8ABC3FFA1BE91D910099501F /* ANVast+ANCategory.h */, + 8ABC3FFB1BE91D910099501F /* ANVast+ANCategory.m */, + 8ABC3FEB1BE9195B0099501F /* ANVASTUtil.h */, + 8ABC3FEC1BE9195B0099501F /* ANVASTUtil.m */, 8A73F9E21BD6B34D00D18188 /* ANVideoAd.h */, 8A73F9E31BD6B34D00D18188 /* ANVideoAd.m */, 8A73F9E41BD6B34D00D18188 /* ANVideoPlayerViewController.h */, @@ -1981,10 +1995,12 @@ 8A6D2E881A44A62A003CE77A /* interstitial_flat_closebox.png */, 8A6D2E871A44A62A003CE77A /* interstitial_flat_closebox@2x.png */, 8A6D2E841A44A5D3003CE77A /* interstitial_flat_closebox@3x.png */, - 8A87BF511BD96E4E00281EA9 /* mute-off.png */, - 8A87BF521BD96E4E00281EA9 /* mute-off@2x.png */, - 8A87BF531BD96E4E00281EA9 /* mute-on.png */, - 8A87BF541BD96E4E00281EA9 /* mute-on@2x.png */, + 8ABC3FEE1BE91B530099501F /* mute-off.png */, + 8ABC3FEF1BE91B530099501F /* mute-off@2x.png */, + 8ABC3FF01BE91B530099501F /* mute-off@3x.png */, + 8ABC3FF11BE91B530099501F /* mute-on.png */, + 8ABC3FF21BE91B530099501F /* mute-on@2x.png */, + 8ABC3FF31BE91B530099501F /* mute-on@3x.png */, ECE4EAD4194B768A0069D934 /* UIButtonBarArrowLeft.png */, ECE4EAD5194B768A0069D934 /* UIButtonBarArrowLeft@2x.png */, ECE4EAD6194B768A0069D934 /* UIButtonBarArrowRight.png */, @@ -2516,6 +2532,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8ABC3FF51BE91B530099501F /* mute-off@2x.png in Resources */, 8A6D2E8E1A44A751003CE77A /* interstitial_flat_closebox@2x.png in Resources */, 8AD618E41981C19500AC0780 /* appnexus_logo_icon@2x.png in Resources */, 8AD618E31981C19100AC0780 /* appnexus_logo_icon.png in Resources */, @@ -2527,26 +2544,27 @@ 8A4FF3A41A2F8ACC0000E4CC /* an_arrow_left@3x.png in Resources */, 8A4FF3A81A2F8AFE0000E4CC /* an_arrow_left.png in Resources */, ECE4EB09194B76960069D934 /* interstitial_closebox.png in Resources */, + 8ABC3FF61BE91B530099501F /* mute-off@3x.png in Resources */, + 8ABC3FF91BE91B530099501F /* mute-on@3x.png in Resources */, 8A4FF3AE1A2F8CE50000E4CC /* an_arrow_right.png in Resources */, ECE4EB0A194B76960069D934 /* interstitial_closebox@2x.png in Resources */, 8A4FF3AD1A2F8CE50000E4CC /* an_arrow_right@2x.png in Resources */, + 8ABC3FF81BE91B530099501F /* mute-on@2x.png in Resources */, ECE4EB0B194B76960069D934 /* UIButtonBarArrowLeft.png in Resources */, ECE4EB0C194B76960069D934 /* UIButtonBarArrowLeft@2x.png in Resources */, 8A4FF3A71A2F8AFE0000E4CC /* an_arrow_left@2x.png in Resources */, ECE4EB0D194B76960069D934 /* UIButtonBarArrowRight.png in Resources */, + 8ABC3FF41BE91B530099501F /* mute-off.png in Resources */, 8A4FF3A11A2F72D00000E4CC /* compass@2x.png in Resources */, ECE4EB0E194B76960069D934 /* UIButtonBarArrowRight@2x.png in Resources */, 8A6D2E8F1A44A751003CE77A /* interstitial_flat_closebox.png in Resources */, ECE4EB05194B76960069D934 /* anjam.js in Resources */, + 8ABC3FF71BE91B530099501F /* mute-on.png in Resources */, ECE4EB10194B76960069D934 /* sdkjs.js in Resources */, ECE4EB06194B76960069D934 /* errors.strings in Resources */, 8A2F483D1A2E33B000B0EA05 /* compass.png in Resources */, 8A6CD9271A96B2FD0060BCF4 /* compass@3x.png in Resources */, 8A3EC17019B8FDCA0049CD29 /* ANMRAID.bundle in Resources */, - 8A87BF551BD96E5C00281EA9 /* mute-off.png in Resources */, - 8A87BF561BD96E5C00281EA9 /* mute-off@2x.png in Resources */, - 8A87BF571BD96E5C00281EA9 /* mute-on.png in Resources */, - 8A87BF581BD96E5C00281EA9 /* mute-on@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2733,6 +2751,7 @@ 8A73FA5A1BD6B34E00D18188 /* ANVast.m in Sources */, 8A73FA651BD6B34E00D18188 /* ANVideoClicks.m in Sources */, ECE4EADA194B768A0069D934 /* NSString+ANCategory.m in Sources */, + 8ABC3FFC1BE91D910099501F /* ANVast+ANCategory.m in Sources */, 8A73FA5B1BD6B34E00D18188 /* ANVastDataModelInterface.m in Sources */, 8A73FA3B1BD6B34E00D18188 /* ANClickOverlayView.m in Sources */, 8A73FA4D1BD6B34E00D18188 /* ANVideoPlayerViewController.m in Sources */, @@ -2780,6 +2799,7 @@ 8A73FA491BD6B34E00D18188 /* ANReachability.m in Sources */, 8A73FA5F1BD6B34E00D18188 /* ANCreative.m in Sources */, 8AAD5D161BD6C0E300B4CD53 /* ANXML+HTTP.m in Sources */, + 8ABC3FED1BE9195B0099501F /* ANVASTUtil.m in Sources */, ECE4EADD194B768A0069D934 /* UIWebView+ANCategory.m in Sources */, 8A73FA3C1BD6B34E00D18188 /* ANGlobal.m in Sources */, 8A73FA431BD6B34E00D18188 /* ANMediationAdViewController.m in Sources */, diff --git a/sdk/Resources/images/mute-off.png b/sdk/Resources/images/mute-off.png index af21c77ade86bb433fd177160febc260daa9ad3f..29ce238cb62a81cb7b7de326193da306fb47004a 100644 GIT binary patch delta 1897 zcmV-v2bTDz4vr8diBL{Q4GJ0x0000DNk~Le0000o0000o2nGNE03JVxu>b%88Wpp57WoKz_JtFVBzak)MWIZBRHBB&0a6@HiX-Ilx6Z zKRybR)&V#MH7+nBJ_?f-0!5Qw0v!V{J_?cp8Gk%KcyM83Yh`pGWo~3WB61=>J{n4^ z>Hq)%g=s@WP;*j8LLf;+LpCuvHa0CXE-?TAD3NuMyGsK>5Qjf6O2jBBOkrVhMX(SR zjUw9lKztxUqJmMINgyI- zmVe#-_O~;$yR)DyWi`XD?*$|0Sh2}5bt%5A`d8gh<|YP2V@>*@&8Z(-T(jq32;bRa{vGf z6951U69E94oEQKA1qew*K~!jg)tXIcT~!dr=QIILW5{cyU`w(oDGds>)KtZdU{{I> zF5K9S6-|W}+}YHHDY!6F6+C{_wIYqfy?EdnKLv0dp>5)hm(Q`D2d1uBC=mZcA7^-WZpc}B67hwce5xT zY9^o?I0jq-R>)5)TK5>xy%_*{fHS~)4bG?08gRNPfPfP42C!Tp087hiqkojgH8J&{hwKD+x+hfmea8 z^#Vw+*$#}T4NF&YgTZ&Fq<@xJ0v;q9So{8>7Y zRly+ffjvXc>97a_wk3dB2L`HDECGuN-Kl9Uk>FErLN{9s{#bkV_y_QVe-XGRV6V^ESpiA{ z95RgA93Tcr&s>wbmIF>I{~FL?_^&JPoho*%&1VF7%M_jpD0mO}NS{xM2hSjo2$)Y) z=5r!r0_eiG$_>I}<&?4YrVvjKpA9IO3OJq#i0Ziu_(|m+F@L^k4(THC2) z0xuh07x07ff=Q#wC#EQMC5@`M1)nGV9stsVZ#@g5lYdGYe=b97*rf4qptH=ZD~*pB zd6Y^TlbWJLv@W8I;PpJ&Be?2E?7A%yPZjps%CPpT9nB*mkX^b-1+_~mO z&CBi16|zwlwiY(XhQudeBl!YKDJ;ao-h#4`uJaf*5>K6f=lMOS|M_>$0k=mt&2(uO zWU{su9vRZ6qcd9hBbBsJO)E{hkv9iJp$YyyZ#THqd+k+T|Lgud)${SZ0j>(+0mHOx z;ZfnXCEHZ2{2DB2N_b6ivcOx4V+B6`(nP{R;WJ^)Na^#!_re|{Wo5vv{M%zcG|3;F zNiQ1T{isQQYU0_cNu`%)CQq0VhR_&em>>bV>6bfz7e7AvVaJzkRUFKjE7n3XWov`7 ziMTeFHGCe;-__j<h!+@Amd010qNS#tmY3ljhU3ljkVnw%H_00CKPR9JLaO-wpt zZ*4ANWN%_+E_iKl000000FiY#2sAD*B0dTrAd$000w5rf_8)%=ARr(hARr(hARr(h zcx`NMb2@ZsW@bGiXmoUNIxjD7b1q?IZ(?OGV{dIQbZKU0FEK7KFCsn)ARr(hARr(h zAUt$wW@b81a%p95bYXO9Z*D#@JTG)WgSJ_;ZpAUrQ}WM(>2L`FUeJTG`Ucx`ZPWprUa3QWQ$SpWb7@kvBM zR7efAmQ8DwM-+g)NwwPg6-z6M1QHiwY!@2E5~ap&y3n-quTuQBxjxU_IjB#Jm@=X*Yz9v~-if&k%ARV*q@J*NQ&b*Eu1^ zN^{YT?F|F%HtvCt-!K-HS!lZjV<^Y9odeDdF=lM<%Xdnr`~Dz%9YfE}0ot&uBrOt5 zX8eQf8+tB%#!!s8Zp=J7JdLM8aZ5b@K5cu}DPez1qQ7cmuY{lAi|iY#>7g&S*VxtR zHL%B7c?bh}Vzsg&kwLaX^-i&8!!Ixl9vH44=bc z#^--AZzuM3*a1n5h2eEl%+Y1Sg<$Er1>Um>I1;1&4eY1+E9?UwOnD9;;`0=}3rw;X zl*2Hed0(YgBsmM)`Jf;3W{^;8YDH@A@EeLK>NTqU@?Rk z)7Z)~C$C9nqk2RIvCC~!T#?E2RZ_BsnSOt-@hb~>fJbPnj1?-xm=Skv1c|{?r{hhB zC(d^oD=dAqXTu!0#40Uy)4_MwQcU=J9?@As?qb}7+hD?YIPG+(NbnK12kH*1JB3~e zpMsyPkTUL&K}Pb3@2M-i&_|&kHoR1@XA;{rotz12-2ZLJMNt`fpglj9>iAe!V(9(_+Cn-y7<^l z^^?90Z~$f*Ou@F6{s5LQx75BUiA@*ZaUEKgwlvrnuU3rjOo#*J+|@7y{raOViLtuo z(w3cGTfDPRRj_S`5ZqeYX&bFitZsk&;+>t#&y(M?F`uU*LABcG%k#^XjsJNfa4i3= zKEQcZDMn7*>H|C}9x6R#k<Td8mxElK4 z&3~eBN@7wCwA<@D^)Fv3@BBBhk*WA4dig%$kFfXjO@D;-@p`2bn;*Q26)7{SEsc(F xWP3-Wk06#Nw{8*iLVRJY!{^`v{I9?IF8~k!-IiMzYZw3k002ovPDHLkV1n>H4x9i0 diff --git a/sdk/Resources/images/mute-off@2x.png b/sdk/Resources/images/mute-off@2x.png index aabd3bb134b8f85b4531aeeb7a4dc6d0381d66e9..8f667dc8a88d150ffca55e3df40c5d7f6234c9bf 100644 GIT binary patch delta 3548 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 V0F?0uf14NpLf>5PiLN{T{{ZCC>zV)n diff --git a/sdk/Resources/images/mute-on@3x.png b/sdk/Resources/images/mute-on@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ed4d90efbf6ee2cda9e59ce1c064a6092f18e07c GIT binary patch literal 5159 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 Hs7L +@interface ANInterstitialAd () @property (nonatomic, readwrite, strong) ANInterstitialAdViewController *controller; @property (nonatomic, readwrite, strong) NSMutableArray *precachedAdObjects; @property (nonatomic, readwrite, assign) CGRect frame; @property (nonatomic, readwrite, strong) ANBrowserViewController *browserController; @property (nonatomic, strong) NSTimer *progressUpdateTimer; -@property (nonatomic, strong) ANVideoPlayerViewController* playbackViewController; +@property (nonatomic, strong) ANVideoPlayerViewController *playbackViewController; @property (nonatomic, strong) ANVast *vastAd; @property (nonatomic, strong) ANInterstitialAdFetcher *interstitialAdFetcher; @property (nonatomic, strong) NSMutableArray *adFetchers; @@ -213,22 +212,17 @@ - (void)displayAdFromViewController:(UIViewController *)controller { } } else if([adToShow isKindOfClass:[ANVideoAd class]]){ - self.controller = (ANInterstitialAdViewController *)controller; - ANVideoAd *videoAd = (ANVideoAd *)adToShow; + self.playbackViewController = [[ANVideoPlayerViewController alloc] initWithVastDataModel:videoAd.vastDataModel]; + [self.playbackViewController setPublisherSkipOffset:self.closeDelay]; + [self.playbackViewController setOpenClicksInNativeBrowser:self.opensInNativeBrowser]; - if (!self.playbackViewController) - { - _playbackViewController = [[ANVideoPlayerViewController alloc] initWithVastDataModel:videoAd.vastDataModel]; - [_playbackViewController setSkipOffSet:self.closeDelay]; - [_playbackViewController setSkipOffSetType:self.closeDelayType]; - [_playbackViewController setOpenClicksInNativeBrowser:self.opensInNativeBrowser]; - } - - [controller presentViewController:self.playbackViewController animated:YES completion:nil]; + [controller presentViewController:self.playbackViewController + animated:YES + completion:nil]; - }else { + } else { ANLogError(@"Display ad called, but no valid ad to show. Please load another interstitial ad."); [self adFailedToDisplay]; } @@ -422,25 +416,4 @@ - (void)adShouldUseCustomClose:(BOOL)useCustomClose { self.controller.useCustomClose = useCustomClose; } -#pragma mark - ANPlayerViewControllerDelegate - -- (void)openClickInBrowserWithURL:(NSURL *)url{ - _browserController = [[ANBrowserViewController alloc] initWithURL:url delegate:self delayPresentationForLoad:NO]; - - if (!self.browserController) { - NSLog(@"Failed to initialize the browser."); - } -} - -#pragma mark - ANBrowserViewControllerDelegate - -- (UIViewController *)rootViewControllerForDisplayingBrowserViewController:(ANBrowserViewController *)controller{ - return [self.controller presentedViewController]; -} - -- (void)didDismissBrowserViewController:(ANBrowserViewController *)controller{ - //play the video - [self.playbackViewController play]; -} - @end diff --git a/sdk/internal/ANVASTUtil.h b/sdk/internal/ANVASTUtil.h new file mode 100644 index 000000000..6c091be06 --- /dev/null +++ b/sdk/internal/ANVASTUtil.h @@ -0,0 +1,24 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANVAST.h" + +@interface ANVASTUtil : NSObject + ++ (NSString *)eventStringForVideoEvent:(ANVideoEvent)event; ++ (float)getSystemVolume; + +@end \ No newline at end of file diff --git a/sdk/internal/ANVASTUtil.m b/sdk/internal/ANVASTUtil.m new file mode 100644 index 000000000..4d1e684ac --- /dev/null +++ b/sdk/internal/ANVASTUtil.m @@ -0,0 +1,60 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANVASTUtil.h" +#import "ANLogging.h" +#import + +@implementation ANVASTUtil + ++ (NSString *)eventStringForVideoEvent:(ANVideoEvent)event { + switch (event) { + case ANVideoEventStart: + return @"start"; + case ANVideoEventQuartileFirst: + return @"firstQuartile"; + case ANVideoEventQuartileMidPoint: + return @"midpoint"; + case ANVideoEventQuartileThird: + return @"thirdQuartile"; + case ANVideoEventQuartileComplete: + return @"complete"; + case ANVideoEventSkip: + return @"skip"; + case ANVideoEventMute: + return @"mute"; + case ANVideoEventUnMute: + return @"unmute"; + case ANVideoEventPause: + return @"pause"; + case ANVideoEventResume: + return @"resume"; + case ANVideoEventClose: + return @"close"; + case ANVideoEventCloseLinear: + return @"closeLinear"; + case ANVideoEventCreativeView: + return @"creativeView"; + default: + ANLogDebug(@"Unknown event string for video event %ld", (long)event); + return nil; + } +} + ++ (float)getSystemVolume { + return [[AVAudioSession sharedInstance] outputVolume]; +} + +@end \ No newline at end of file diff --git a/sdk/internal/ANVast+ANCategory.h b/sdk/internal/ANVast+ANCategory.h new file mode 100644 index 000000000..458b2d974 --- /dev/null +++ b/sdk/internal/ANVast+ANCategory.h @@ -0,0 +1,26 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANVast.h" + +@interface ANVast (ANCategory) + +- (ANInLine *)inlineAd; +- (NSString *)getClickThroughURL; +- (float)getSkipOffSetFromVastDataModel; +- (NSString *)clickTrackingURL; +- (NSArray *)trackingArrayForEvent:(ANVideoEvent)event; + +@end diff --git a/sdk/internal/ANVast+ANCategory.m b/sdk/internal/ANVast+ANCategory.m new file mode 100644 index 000000000..ad7d05593 --- /dev/null +++ b/sdk/internal/ANVast+ANCategory.m @@ -0,0 +1,85 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANVast+ANCategory.h" +#import "ANVASTUtil.h" + +@implementation ANVast (ANCategory) + +- (ANInLine *)inlineAd { + return self.anInLine ? self.anInLine : self.anWrapper; +} + +- (NSString *)getClickThroughURL { + if (self.inlineAd) { + for (ANCreative *creative in self.inlineAd.creatives) { + if (creative) { + if (creative.anLinear.anVideoClicks) { + if (creative.anLinear.anVideoClicks.clickThrough) { + return creative.anLinear.anVideoClicks.clickThrough; + } + } + } + } + } + + return nil; +} + +- (float)getSkipOffSetFromVastDataModel { + float skipOffSet = 0.0; + + for (ANCreative *creative in self.inlineAd.creatives) { + if(creative.anLinear.skipOffSet.length > 0){ + NSArray *timeComponents = [creative.anLinear.skipOffSet componentsSeparatedByString:@":"]; + skipOffSet = [[timeComponents lastObject] floatValue]; + } + } + + return skipOffSet; +} + +- (NSString *)clickTrackingURL { + if (self.inlineAd) { + for (ANCreative *creative in self.inlineAd.creatives) { + if (creative) { + if (creative.anLinear.anVideoClicks) { + return creative.anLinear.anVideoClicks.clickTracking; + } + } + } + } + + return nil; +} + +- (NSArray *)trackingArrayForEvent:(ANVideoEvent)event { + NSString *vastEventString = [ANVASTUtil eventStringForVideoEvent:event]; + if (vastEventString) { + for (ANCreative *creative in self.inlineAd.creatives) { + if (creative) { + if (creative.anLinear) { + if (creative.anLinear.trackingEvents.count > 0) { + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"vastEvent == %@", vastEventString]; + return [creative.anLinear.trackingEvents filteredArrayUsingPredicate:predicate]; + } + } + } + } + } + return nil; +} + +@end diff --git a/sdk/internal/ANVideoPlayerViewController.h b/sdk/internal/ANVideoPlayerViewController.h index b58d9ae57..5e82a3eaa 100644 --- a/sdk/internal/ANVideoPlayerViewController.h +++ b/sdk/internal/ANVideoPlayerViewController.h @@ -15,19 +15,17 @@ */ - #import #import "ANVast.h" @interface ANVideoPlayerViewController : UIViewController @property (strong, nonatomic) ANVast *vastDataModel; -@property (nonatomic) float skipOffSet; -@property (nonatomic) NSUInteger skipOffSetType; +@property (nonatomic) float publisherSkipOffset; @property (nonatomic) BOOL openClicksInNativeBrowser; -- (instancetype) initWithVastDataModel:(ANVast *)vastDataModel; -- (void) play; -- (void) pause; +- (instancetype)initWithVastDataModel:(ANVast *)vastDataModel; +- (void)play; +- (void)pause; @end diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 473c5c057..66546cbf2 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -27,11 +27,16 @@ #import #import "ANCircularAnimationView.h" #import "ANBrowserViewController.h" -#import +#import "ANVASTUtil.h" +#import "ANVAST+ANCategory.h" +#import "UIView+ANCategory.h" -@interface ANVideoPlayerViewController (){ +@interface ANVideoPlayerViewController () { float previousDuration; + BOOL isSkipped; + BOOL creativeView; BOOL isStarted; BOOL isFirstQuartileDone; BOOL isMidPointQuartileDone; @@ -44,6 +49,8 @@ @interface ANVideoPlayerViewController () 0){ - NSArray *timeComponents = [creative.anLinear.skipOffSet componentsSeparatedByString:@":"]; - skipOffSet = [[timeComponents lastObject] floatValue]; - } - } - - if (!skipOffSet) { - if (self.skipOffSet) { - int iDuration = (int)CMTimeGetSeconds(self.playerView.player.currentItem.asset.duration); - if (self.skipOffSetType == ANCloseDelayTypeRelative) { - int skipOffsetTime = MIN(100, MAX(0, (int)self.skipOffSet)); - float percent = (float)skipOffsetTime/100.0; - float calculatedTime = iDuration*percent; - skipOffSet = calculatedTime; - }else if(self.skipOffSetType == ANCloseDelayTypeAbsolute){ - skipOffSet = MIN(MAX(0, (int)self.skipOffSet), iDuration); - } - } - } - - return skipOffSet; +- (BOOL)prefersStatusBarHidden { + return YES; } -- (void) setupPlayer{ +#pragma mark - Setup + +- (void)setupPlayer { AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:self.fileURL]; AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; self.playerView = [[ANPlayerView alloc] init]; [self.playerView setPlayer:player]; [self.playerView setVideoFillMode:AVLayerVideoGravityResizeAspect]; + self.playerView.translatesAutoresizingMaskIntoConstraints = NO; - UIView *selfView = self.view; - UIView *playerView = self.playerView; + [self.view addSubview:self.playerView]; + [self.playerView an_constrainToSizeOfSuperview]; - [playerView setTranslatesAutoresizingMaskIntoConstraints:NO]; - - [selfView addSubview:self.playerView]; - - [selfView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[playerView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(playerView)]]; - [selfView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[playerView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(playerView)]]; - - UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapOnPlayerViewWithGestureRecognizer:)]; + UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self + action:@selector(handleSingleTapOnPlayerViewWithGestureRecognizer:)]; singleFingerTap.delegate = self; - [playerView addGestureRecognizer:singleFingerTap]; + [self.playerView addGestureRecognizer:singleFingerTap]; } -- (void) handleSingleTapOnPlayerViewWithGestureRecognizer:(UITapGestureRecognizer *)tapGestureRecognizer{ - NSURL *clickURL = [NSURL URLWithString:[self getClickThroughURL]]; - if (clickURL) { - [self openClickInBrowserWithURL:clickURL]; - [self fireClickTracking]; - }else{ - ANLogDebug(@"Click URL not found. Ensure clickthrough URL is available in the Vast Tag"); - } -} - -- (void) setupCircularView{ - _circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; +- (void)setupCircularView { + self.circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; self.circularAnimationView.delegate = self; - - UIView *selfView = self.view; - UIView *circularView = self.circularAnimationView; - - [circularView setTranslatesAutoresizingMaskIntoConstraints:NO]; - - [selfView addSubview:circularView]; - - [selfView bringSubviewToFront:circularView]; - - [selfView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[circularView(==40)]-15-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(circularView)]]; - [selfView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-15-[circularView(==40)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(circularView)]]; - - float skipOffSet = [self getSkipOffSetFromVastDataModel]; - + self.circularAnimationView.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.circularAnimationView]; + [self.view bringSubviewToFront:self.circularAnimationView]; + [self.circularAnimationView an_constrainWithSize:CGSizeMake(40,40)]; + [self.circularAnimationView an_alignToSuperviewWithXAttribute:NSLayoutAttributeRight + yAttribute:NSLayoutAttributeTop + offsetX:-15.0 + offsetY:15.0]; + float skipOffSet = [self skipOffset]; self.circularAnimationView.skipOffset = skipOffSet; - } -- (void)viewDidLoad { - [super viewDidLoad]; - - [self setupPlayer]; - [self setupCircularView]; - [self setupVolumeView]; +- (void)setupVolumeView { + self.volumeView = [[ANVolumeButtonView alloc] initWithDelegate:self]; + self.volumeView.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.volumeView]; + [self.view bringSubviewToFront:self.volumeView]; + [self.volumeView an_constrainWithSize:CGSizeMake(50,50)]; + [self.volumeView an_alignToSuperviewWithXAttribute:NSLayoutAttributeRight + yAttribute:NSLayoutAttributeBottom + offsetX:-15.0 + offsetY:-15.0]; +} - __weak typeof(self) SELF = self; +- (float)skipOffset { + float skipOffset = [self.vastDataModel getSkipOffSetFromVastDataModel]; - [self.playerView.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 100) queue:nil usingBlock:^(CMTime time) { - [SELF updateEventsWithSeconds:CMTimeGetSeconds(time)]; //Fire every 0.01 seconds - }]; + if (!skipOffset && self.publisherSkipOffset) { + int iDuration = (int)CMTimeGetSeconds(self.playerView.player.currentItem.asset.duration); + skipOffset = MIN(MAX(0, (int)self.publisherSkipOffset), iDuration); + } - [self registerForApplicaitonNotifications]; - -} - -- (void)viewDidUnload{ - [self removeApplicationNotifications]; -} - -- (void) registerForApplicaitonNotifications{ - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground) name:UIApplicationWillEnterForegroundNotification object:nil]; + return skipOffset; } -- (void) removeApplicationNotifications{ - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillEnterForegroundNotification object:nil]; -} - -- (void) applicationWillEnterForeground{ - [self play]; -} - -- (void) updateEventsWithSeconds:(float) seconds{ +- (void)updateEventsWithSeconds:(float)seconds { float totalDuration = CMTimeGetSeconds([self.playerView.player.currentItem.asset duration]); float currentDuration = seconds; @@ -224,81 +175,72 @@ - (void) updateEventsWithSeconds:(float) seconds{ float quartileDuration = totalDuration/4; if (self.playerView.player.rate > 0 && !self.playerView.player.error) { - //creative load event should be fired only when the video is viewed. - [self fireTrackingEventWithEvent:ANVideoEventCreativeView]; - [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; } if (currentDuration > 0 && !isStarted) { isStarted = YES; ANLogDebug(@"Started"); - - //send video start event tracking [self fireTrackingEventWithEvent:ANVideoEventStart]; - - }else if(currentDuration > 0){ - if(currentDuration > previousDuration){ + } else if(currentDuration > 0){ + if (currentDuration > previousDuration){ previousDuration = currentDuration; if (currentDuration > quartileDuration && !isFirstQuartileDone) { isFirstQuartileDone = YES; ANLogDebug(@"First Quartile"); [self fireTrackingEventWithEvent:ANVideoEventQuartileFirst]; - - //send first quartile event tracking - }else if(currentDuration > quartileDuration*2 && !isMidPointQuartileDone){ + } else if(currentDuration > quartileDuration*2 && !isMidPointQuartileDone){ isMidPointQuartileDone = YES; ANLogDebug(@"Mid Point"); [self fireTrackingEventWithEvent:ANVideoEventQuartileMidPoint]; - - //send mid quartile event tracking - }else if(currentDuration > quartileDuration * 3 && !isThirdQuartileDone){ + } else if(currentDuration > quartileDuration * 3 && !isThirdQuartileDone){ isThirdQuartileDone = YES; ANLogDebug(@"Third Quartile"); [self fireTrackingEventWithEvent:ANVideoEventQuartileThird]; - - //send third quartile event tracking } } - if(currentDuration == totalDuration){ + if (currentDuration >= totalDuration && !isCompleteQuartileDone){ isCompleteQuartileDone = YES; ANLogDebug(@"Complete Quartile"); [self fireTrackingEventWithEvent:ANVideoEventQuartileComplete]; - - //send quartile complete event tracking } } } -- (void)closeInterstitial{ - [self pause]; - [self dismissViewControllerAnimated:YES completion:^{ +- (void)closeInterstitial { + isSkipped = YES; + if (!isCompleteQuartileDone) { + [self.playerView.player pause]; + [self fireTrackingEventWithEvent:ANVideoEventSkip]; + } + [self removeApplicationNotifications]; + [self dismissViewControllerAnimated:YES + completion:^{ [self fireTrackingEventWithEvent:ANVideoEventClose]; [self fireTrackingEventWithEvent:ANVideoEventCloseLinear]; - [self removeApplicationNotifications]; }]; } -- (BOOL)prefersStatusBarHidden{ - return YES; -} +#pragma mark - Player Controls -- (void)play{ - [self.playerView.player play]; - - if (CMTimeGetSeconds(self.playerView.player.currentTime) > 0) { - [self fireTrackingEventWithEvent:ANVideoEventResume]; +- (void)play { + if (!isCompleteQuartileDone) { + if (isStarted && CMTimeGetSeconds(self.playerView.player.currentTime) > 0) { + [self fireTrackingEventWithEvent:ANVideoEventResume]; + } + [self.playerView.player play]; } } -- (void)pause{ - [self.playerView.player pause]; - - [self fireTrackingEventWithEvent:ANVideoEventPause]; +- (void)pause { + if (!isCompleteQuartileDone) { + [self.playerView.player pause]; + [self fireTrackingEventWithEvent:ANVideoEventPause]; + } } -- (void)mute:(BOOL)value{ +- (void)mute:(BOOL)value { AVAudioSession *session = [AVAudioSession sharedInstance]; NSError *error; @@ -306,7 +248,7 @@ - (void)mute:(BOOL)value{ if ([session setActive:YES error:&error]) { volume = session.outputVolume; - }else{ + } else{ ANLogInfo(@"Unable to get system volume."); } @@ -314,154 +256,98 @@ - (void)mute:(BOOL)value{ [self.playerView.player setVolume:0]; ANLogDebug(@"Volume Muted."); [self fireTrackingEventWithEvent:ANVideoEventMute]; - - //send mute event tracking - }else{ + } else{ [self.playerView.player setVolume:volume]; ANLogDebug(@"Volume Unmuted."); [self fireTrackingEventWithEvent:ANVideoEventUnMute]; - - //send unmute event tracking - } -} - -- (float)getSystemVolume{ - MPVolumeView *slide = [MPVolumeView new]; - UISlider *volumeViewSlider; - - for (UIView *view in [slide subviews]){ - if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) { - volumeViewSlider = (UISlider *) view; - } } - - return [volumeViewSlider value]; } -- (void)closeButtonClicked{ +- (void)closeButtonClicked { [self closeInterstitial]; - [self fireTrackingEventWithEvent:ANVideoEventSkip]; } -- (void) fireTrackingEventWithEvent:(ANVideoEvent)event{ - NSString *eventString = [NSString string]; - switch (event) { - case ANVideoEventStart: - eventString = @"start"; - break; - case ANVideoEventQuartileFirst: - eventString = @"firstQuartile"; - break; - case ANVideoEventQuartileMidPoint: - eventString = @"midpoint"; - break; - case ANVideoEventQuartileThird: - eventString = @"thirdQuartile"; - break; - case ANVideoEventQuartileComplete: - eventString = @"complete"; - break; - case ANVideoEventSkip: - eventString = @"skip"; - break; - case ANVideoEventMute: - eventString = @"mute"; - break; - case ANVideoEventUnMute: - eventString = @"unmute"; - break; - case ANVideoEventPause: - eventString = @"pause"; - break; - case ANVideoEventResume: - eventString = @"resume"; - break; - case ANVideoEventClose: - eventString = @"close"; - break; - case ANVideoEventCloseLinear: - eventString = @"closeLinear"; - break; - case ANVideoEventCreativeView: - eventString = @"creativeView"; - break; - default: - break; - } - - NSArray *trackingArray = [NSArray array]; - ANInLine *anInline = self.vastDataModel.anInLine?self.vastDataModel.anInLine:self.vastDataModel.anWrapper; - for (ANCreative *creative in anInline.creatives) { - if (creative) { - if (creative.anLinear) { - if (creative.anLinear.trackingEvents.count > 0) { - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"vastEvent == %@", eventString]; - trackingArray = [creative.anLinear.trackingEvents filteredArrayUsingPredicate:predicate]; - - for (ANTracking *tracking in trackingArray) { - [self fireImpressionWithURL:tracking.trackingURI forEvent:eventString]; - } - } - } - } - } +#pragma mark - Tracking + +- (void)fireTrackingEventWithEvent:(ANVideoEvent)event { + NSArray *trackingArray = [self.vastDataModel trackingArrayForEvent:event]; + [trackingArray enumerateObjectsUsingBlock:^(ANTracking *tracking, NSUInteger idx, BOOL *stop) { + ANLogDebug(@"(%@, %@)", [ANVASTUtil eventStringForVideoEvent:event], tracking.trackingURI); + [self fireImpressionWithURL:tracking.trackingURI]; + }]; } -- (void) fireClickTracking{ - ANInLine *anInline = self.vastDataModel.anInLine?self.vastDataModel.anInLine:self.vastDataModel.anWrapper; - if (anInline) { - for (ANCreative *creative in anInline.creatives) { - if (creative) { - if (creative.anLinear.anVideoClicks) { - NSString *clickTrackingURL = creative.anLinear.anVideoClicks.clickTracking; - [self fireImpressionWithURL:clickTrackingURL forEvent:@"click"]; - } - } - } +- (void)fireClickTracking { + if (self.vastDataModel.clickTrackingURL) { + ANLogDebug(@"(click, %@)", self.vastDataModel.clickTrackingURL); + [self fireImpressionWithURL:self.vastDataModel.clickTrackingURL]; } } -- (void) fireImpressionWithURL:(NSString *)urlString forEvent:(NSString *)eventString{ - NSURLRequest *requestURL = [NSURLRequest requestWithURL:[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]; - [NSURLConnection sendAsynchronousRequest:requestURL queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { - ANLogDebug(@"Impression Fired: Event=%@, URL: %@", eventString, [[requestURL URL] absoluteString]); +- (void)fireImpressionWithURL:(NSString *)urlString { + NSURL *impressionURL = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + NSURLRequest *request = ANBasicRequestWithURL(impressionURL); + [NSURLConnection sendAsynchronousRequest:request + queue:[NSOperationQueue mainQueue] + completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { + }]; } -- (void)dealloc{ - - _fileURL = nil; - _volumeView = nil; - _playerView = nil; - _circularAnimationView = nil; - _browserController = nil; - +#pragma mark - Observe + +- (void)registerForApplicationNotifications { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationWillEnterForeground) + name:UIApplicationWillEnterForegroundNotification + object:nil]; } -- (void)openClickInBrowserWithURL:(NSURL *)url{ - +- (void)removeApplicationNotifications { + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIApplicationWillEnterForegroundNotification + object:nil]; +} + +- (void)dealloc { + [self removeApplicationNotifications]; +} + +- (void) applicationWillEnterForeground{ + [self play]; +} + +#pragma mark - ANBrowserViewControllerDelegate + +- (void)handleSingleTapOnPlayerViewWithGestureRecognizer:(UITapGestureRecognizer *)tapGestureRecognizer{ + NSURL *clickURL = [NSURL URLWithString:[self.vastDataModel getClickThroughURL]]; + if (clickURL) { + [self openClickInBrowserWithURL:clickURL]; + [self fireClickTracking]; + }else{ + ANLogDebug(@"Click URL not found."); + } +} + +- (void)openClickInBrowserWithURL:(NSURL *)url { if (!self.openClicksInNativeBrowser) { - _browserController = [[ANBrowserViewController alloc] initWithURL:url delegate:self delayPresentationForLoad:NO]; - + _browserController = [[ANBrowserViewController alloc] initWithURL:url + delegate:self + delayPresentationForLoad:NO]; if (!self.browserController) { - NSLog(@"Failed to initialize the browser."); + ANLogDebug(@"Failed to initialize the browser."); } - }else{ + } else{ [self pause]; [[UIApplication sharedApplication] openURL:url]; } } -#pragma mark - ANBrowserViewControllerDelegate - -- (UIViewController *)rootViewControllerForDisplayingBrowserViewController:(ANBrowserViewController *)controller{ - UIViewController *rootViewController = [[self presentationController] presentedViewController]; - - return rootViewController; +- (UIViewController *)rootViewControllerForDisplayingBrowserViewController:(ANBrowserViewController *)controller { + return self; } - (void)didDismissBrowserViewController:(ANBrowserViewController *)controller{ - //play the video [self play]; } diff --git a/sdk/internal/ANVolumeButtonView.h b/sdk/internal/ANVolumeButtonView.h index b93f2e1fa..470357541 100644 --- a/sdk/internal/ANVolumeButtonView.h +++ b/sdk/internal/ANVolumeButtonView.h @@ -15,13 +15,11 @@ */ - #import @protocol ANVolumeButtonViewDelegate -- (void) mute:(BOOL)value; -- (float) getSystemVolume; +- (void)mute:(BOOL)value; @end @@ -29,7 +27,6 @@ @property (nonatomic, weak) id delegate; -- (instancetype) initWithDelegate:(id)delegate; -- (void) addVolumeViewWithContainer:(UIView *)containerView; +- (instancetype)initWithDelegate:(id)delegate; @end diff --git a/sdk/internal/ANVolumeButtonView.m b/sdk/internal/ANVolumeButtonView.m index 9557275af..c85a5c2c2 100644 --- a/sdk/internal/ANVolumeButtonView.m +++ b/sdk/internal/ANVolumeButtonView.m @@ -15,9 +15,10 @@ */ - #import "ANVolumeButtonView.h" #import "ANGlobal.h" +#import "ANVASTUtil.h" +#import "UIView+ANCategory.h" @interface ANVolumeButtonView(){ BOOL isVolumeMuted; @@ -29,47 +30,36 @@ @interface ANVolumeButtonView(){ @implementation ANVolumeButtonView -- (instancetype) initWithDelegate:(id)delegate{ +- (instancetype)initWithDelegate:(id)delegate { self = [super init]; - if(self){ + if (self){ self.delegate = delegate; + [self addVolumeButton]; } return self; } -//ContainerView is AVPlayerView that is passed from the parent class.The volume button is displayed on this view. -- (void) addVolumeViewWithContainer:(UIView *)containerView{ - - _volumeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; -// UIImage *volumeImage = [UIImage imageWithContentsOfFile:ANPathForANResource(@"mute-off",@"png")]; -// [self.volumeButton setBackgroundImage:volumeImage forState:UIControlStateNormal]; - - isVolumeMuted = ([self.delegate getSystemVolume] > 0) ? NO : YES; +- (void)addVolumeButton { + self.volumeButton = [[UIButton alloc] init]; + self.volumeButton.translatesAutoresizingMaskIntoConstraints = NO; + isVolumeMuted = ([ANVASTUtil getSystemVolume] > 0) ? NO : YES; isVolumeMuted = !isVolumeMuted; //negate the value as it would again be negated inside handleVolumeButton - [self handleVolumeButton]; + [self.volumeButton addTarget:self + action:@selector(handleVolumeButton) + forControlEvents:UIControlEventTouchUpInside]; + [self addSubview:self.volumeButton]; + [self.volumeButton an_alignToSuperviewWithXAttribute:NSLayoutAttributeLeft + yAttribute:NSLayoutAttributeTop]; + [self.volumeButton an_constrainToSizeOfSuperview]; - [self.volumeButton addTarget:self action:@selector(handleVolumeButton) forControlEvents:UIControlEventTouchUpInside]; - - [self.volumeButton setTranslatesAutoresizingMaskIntoConstraints:NO]; - - [containerView addSubview:self.volumeButton]; - [containerView bringSubviewToFront:self.volumeButton]; - - UIView *volumeView = self.volumeButton; - - [containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[volumeView(==50)]-15-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(volumeView)]]; - [containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[volumeView(==50)]-15-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(volumeView)]]; - - - [volumeView setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.1]]; - [volumeView setAlpha:0.7]; + [self setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.1]]; + [self setAlpha:0.7]; } - -- (void) handleVolumeButton{ +- (void)handleVolumeButton { isVolumeMuted = !isVolumeMuted; UIImage *volumeImage; @@ -86,12 +76,8 @@ - (void) handleVolumeButton{ } -- (void) mute:(BOOL)value{ +- (void)mute:(BOOL)value { [self.delegate mute:value]; } -- (void)dealloc{ - _volumeButton = nil; -} - @end From d7f1dfaa52cb3290e6b18b1970b94f108f4f1dea Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 3 Nov 2015 15:59:51 -0500 Subject: [PATCH 12/92] MS-1538 Added missing tracking for VAST wrapper --- sdk/internal/ANVast+ANCategory.h | 2 +- sdk/internal/ANVast+ANCategory.m | 51 ++++++++++++++-------- sdk/internal/ANVideoPlayerViewController.m | 9 ++-- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/sdk/internal/ANVast+ANCategory.h b/sdk/internal/ANVast+ANCategory.h index 458b2d974..fb79ac931 100644 --- a/sdk/internal/ANVast+ANCategory.h +++ b/sdk/internal/ANVast+ANCategory.h @@ -20,7 +20,7 @@ - (ANInLine *)inlineAd; - (NSString *)getClickThroughURL; - (float)getSkipOffSetFromVastDataModel; -- (NSString *)clickTrackingURL; +- (NSArray *)clickTrackingURL; - (NSArray *)trackingArrayForEvent:(ANVideoEvent)event; @end diff --git a/sdk/internal/ANVast+ANCategory.m b/sdk/internal/ANVast+ANCategory.m index ad7d05593..bd7930551 100644 --- a/sdk/internal/ANVast+ANCategory.m +++ b/sdk/internal/ANVast+ANCategory.m @@ -51,33 +51,50 @@ - (float)getSkipOffSetFromVastDataModel { return skipOffSet; } -- (NSString *)clickTrackingURL { - if (self.inlineAd) { - for (ANCreative *creative in self.inlineAd.creatives) { - if (creative) { - if (creative.anLinear.anVideoClicks) { - return creative.anLinear.anVideoClicks.clickTracking; - } - } +/** + TODO: Proper tracking for nested VAST wrappers + */ + +- (NSArray *)clickTrackingURL { + NSArray *creatives = @[]; + if (self.anInLine.creatives) { + creatives = [creatives arrayByAddingObjectsFromArray:self.anInLine.creatives]; + } + if (self.anWrapper.creatives) { + creatives = [creatives arrayByAddingObjectsFromArray:self.anWrapper.creatives]; + } + NSArray *trackingArray = @[]; + for (ANCreative *creative in creatives) { + if (creative.anLinear.anVideoClicks) { + trackingArray = [trackingArray arrayByAddingObject:creative.anLinear.anVideoClicks.clickTracking]; } } - + if ([trackingArray count]) { + return trackingArray; + } return nil; } - (NSArray *)trackingArrayForEvent:(ANVideoEvent)event { + NSArray *creatives = @[]; + if (self.anInLine.creatives) { + creatives = [creatives arrayByAddingObjectsFromArray:self.anInLine.creatives]; + } + if (self.anWrapper.creatives) { + creatives = [creatives arrayByAddingObjectsFromArray:self.anWrapper.creatives]; + } + NSString *vastEventString = [ANVASTUtil eventStringForVideoEvent:event]; if (vastEventString) { - for (ANCreative *creative in self.inlineAd.creatives) { - if (creative) { - if (creative.anLinear) { - if (creative.anLinear.trackingEvents.count > 0) { - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"vastEvent == %@", vastEventString]; - return [creative.anLinear.trackingEvents filteredArrayUsingPredicate:predicate]; - } - } + NSArray *trackingArray = @[]; + for (ANCreative *creative in creatives) { + if (creative.anLinear.trackingEvents.count > 0) { + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"vastEvent == %@", vastEventString]; + trackingArray = [trackingArray arrayByAddingObjectsFromArray: + [creative.anLinear.trackingEvents filteredArrayUsingPredicate:predicate]]; } } + return trackingArray; } return nil; } diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 66546cbf2..3cccaa839 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -278,10 +278,11 @@ - (void)fireTrackingEventWithEvent:(ANVideoEvent)event { } - (void)fireClickTracking { - if (self.vastDataModel.clickTrackingURL) { - ANLogDebug(@"(click, %@)", self.vastDataModel.clickTrackingURL); - [self fireImpressionWithURL:self.vastDataModel.clickTrackingURL]; - } + NSArray *trackingArray = self.vastDataModel.clickTrackingURL; + [trackingArray enumerateObjectsUsingBlock:^(NSString *clickTrackingURL, NSUInteger idx, BOOL *stop) { + ANLogDebug(@"(click, %@)", clickTrackingURL); + [self fireImpressionWithURL:clickTrackingURL]; + }]; } - (void)fireImpressionWithURL:(NSString *)urlString { From 91bf7a6cce47ff90a5ddd81fa43cdf72f891f39c Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 3 Nov 2015 16:34:33 -0500 Subject: [PATCH 13/92] MS-1538 Fixed click tracking url bug --- sdk/internal/ANVast+ANCategory.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/internal/ANVast+ANCategory.m b/sdk/internal/ANVast+ANCategory.m index bd7930551..f379cd654 100644 --- a/sdk/internal/ANVast+ANCategory.m +++ b/sdk/internal/ANVast+ANCategory.m @@ -65,7 +65,7 @@ - (NSArray *)clickTrackingURL { } NSArray *trackingArray = @[]; for (ANCreative *creative in creatives) { - if (creative.anLinear.anVideoClicks) { + if (creative.anLinear.anVideoClicks.clickTracking) { trackingArray = [trackingArray arrayByAddingObject:creative.anLinear.anVideoClicks.clickTracking]; } } From 45f2510396660664be02ed38dd1f9404a8e19cd1 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 3 Nov 2015 17:19:08 -0500 Subject: [PATCH 14/92] MS-1538 Volume button sizing minor changes --- sdk/Resources/images/mute-off.png | Bin 2062 -> 1910 bytes sdk/Resources/images/mute-off@2x.png | Bin 3699 -> 3127 bytes sdk/Resources/images/mute-off@3x.png | Bin 5814 -> 5122 bytes sdk/Resources/images/mute-on.png | Bin 1954 -> 1795 bytes sdk/Resources/images/mute-on@2x.png | Bin 3267 -> 2847 bytes sdk/Resources/images/mute-on@3x.png | Bin 5159 -> 4550 bytes sdk/internal/ANCircularAnimationView.m | 1 - sdk/internal/ANVideoPlayerViewController.m | 6 +++--- sdk/internal/ANVolumeButtonView.m | 4 ++-- 9 files changed, 5 insertions(+), 6 deletions(-) diff --git a/sdk/Resources/images/mute-off.png b/sdk/Resources/images/mute-off.png index 29ce238cb62a81cb7b7de326193da306fb47004a..113443e204e025550d4f43906e190f2c2c60921b 100644 GIT binary patch delta 1210 zcmV;r1V#If5cUosiBL{Q4GJ0x0000DNk~Le0000i0000i2nGNE03L)|0kI*^0)GT> zNkl@6x4;dlVX#Fq77=? z6kMo?U1(`>;U6j*XcjdU+z7UiV%(U81*MH3l2?!#v4T-*elG4jI(OdOx%a;Np6G!K zk8|dH^WAyp&N*|&sDc1BN%u&)Uw_g~lKP!Tl9rw4jHJ&bePxVUt1@p{k_M;)hk&z` zmxlGN1E$+#M}QM;kj#=3z(^Smh29Vtko1P6U6El8Nk1w1`x{obSxI=@AnE#u@2sTf zjWJ6__~enT11lLTG!N_r1`FT}+OhK)SSvui3Q+@00v7_{p90$}U~dQJ0)My{fCofxkWHmrMUmshpk{v43VKxv3-QC>N^P50;9LX9y;tgEvWXuAuTFkq0 z#`V$qAr6P$%+Fw@cLU&V;D7QA+fLwj;4k3m9Go$a%kk7dP4c0+GS>##XMkm3TV%|w z&gxC(;2rZgjl0G}p0RLJ0D6FTfmQo#b8PE@A$N6vjlkD-o+l%?LmsDtO+$@z)iqy& z>@C2Tj;~MnF{}R&*x=}|0=@@+18$7qpLDPrKrQsK?JY?5QQ)-a>wgpO13s{}!`@2Y z3#?3T6k+RYfcLEZInVZv)!&{$c+kV&C*UJT zv7F&}pC$OKeX^v5u=Vc+7DzJaosNFk`n?!g<%WZQxTcH887Zk}v*Zd%SK6nP7-Lo? zJte6o=?TZQprm$wD1YMaa_aX92UoZgVvIQ@X-U$Uqg#{oouum`t}dq*!VPs-)+DWZ zx~nCfi}HVgH4%74Dr9}a z{py0)t@2q(-$**@n3|>Q{)l^u@H(XlZ_RKzC22}Y3`)|dl7Hq&Zs`f!Ea?kLJ(4Dj zF1HgHou(kI(zYXxVo#$gs@7H1Q%KEu{*9n58o@y16B_>LTr zatQ1uiQV1;W8+68JE*IN(4s=pScxA(ox%T~W4?9xuQgJBA=XH-PIX#4mebu_X}hvM z+5A?O0}yHk&U7QDsoD&*Acmyn>B}N8)Ejb-N_#n52a&SGWHF Ya+(lCuMeWma{vGU07*qoM6N<$g0hoTvH$=8 delta 1363 zcmV-Z1+4n^4vr8ZiBL{Q4GJ0x0000DNk~Le0000o0000o2nGNE03JVxv9Te~0)GVv zNklSK@q2fRXhH<|^G1AA)Fy+`ZLrGMyN2TlN) ze|VaqHsHe)BfkPK0IhWy@pf8)Az(hm);Q2s4~Q!XN>_nbfvxodNU+%sjHnGuS8{{F zcc-M5SOOj^8bE^mgK8_OWwLiO{Ftyb1N1h~f9pdpe*9TFkyXJU@qs-<&grlS0=6Z9 zSqBEHRV)FE3Ein_Es@|;Z+}8JTMYhKd?1R_Dh(JD_%ZlAa3G`nLE;m@Xqs>j@rXTA zD1wTuk~+4EACFry)EP0pEt8ba;Pad)%>(T<5BNx*Pl*T5Adm={PgLe}B4YyR!neu|!eix> zvGt}9PY$0AD3}U3o(YKRxeNG7p)s06skdcz?<8`n7xxXsKd1F(B5QqNvhc8pP~6-{xA|sbm5#8(tUigYtq&qsk|y zD0L-`s<;K8C;c7((t~e33!;-s8hK;H92!bfi- zG+=6`=zpWPh~l=CmH{7UhA8eZ^azbO42>9Z_#@)b@$@hdIx|nx-KTX!$J4`P=uUYq z3=D|KSqWblxGo~+MPx=cUZ4@#c**8o5gC-qx;=@OMC7n@ZX&CXnF$|fMrr&Nj!~L1 z-Q&}l)5H_adT0$8W0P(PbpuC%Nov35G^sl30w_@59gmHmO5%4w@?1Q-Sk%R{e*iCq V(Ls!qnauzI002ovPDHLkV1npCa|8eY diff --git a/sdk/Resources/images/mute-off@2x.png b/sdk/Resources/images/mute-off@2x.png index 8f667dc8a88d150ffca55e3df40c5d7f6234c9bf..7c696a8a90e02f2857c148dc7fb7d7b84b098a57 100644 GIT binary patch delta 2436 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 delta 5144 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 delta 1254 zcmV!NhQi#tf!m?{+v3l_%c1~D2xXx(TcZp2_&z{Z$J(Zog< zS{Jf2y0O4Q_yfR?q?pPE6B1-WVq3Z}Zg`uRw9!PVv9v!I_m)oY%-qhrGw)mRNoFyb zd!KWjIrrn-4^vG58j@a+v`^BG;D3>%X7F5>^sSlwUY8Fo1Ly;e1DAj$%45mbJr4A3 zhJc;G8DOOa=ku@(obHGqpaFaWEY>I>#G<#+DC3)z5HTd_jHCx5#bzX3l=QRK`of(5 zwq0v|W{;#nNdpnC1xat1*@dD$MgbV`F8R%98aM&$YJq!~uRD{&y#kyB3V;9bJVQOe z`5Ys+fH#5eN=BTWZeSQ_=GZz1^i&aXC4=-1@IJ7ms(=iey}+oq5#mZ|F}UWG6^RAl zK-~f|>_6>oWksfVGsE?X5K};Z8~qP`=*RWH5GRWg43X~GQj1DVL(B>=xKYIh zFrU$!Iu?lxpZYVJ*?jcJ;(sQhB<|3GKCuySeI^_L#_|g9Bt2t~cG%}!;6}3~7RgFy zaCuG=O`x|$qrJeX%HF3r!+B;rEYycf+L9P<(coU-Dsa6P1?#zw20kvYiwZ7{PGXuC zW^CXH@T=#zR;vo#%>cr5=2)`8rQqX<77Tm={F&gWU5K|e68Ji?`hTH8dQnt30mKaw zlcbRnf*XCF*?`Z0L%`mg?*oCIC7>bTwcx{a2@!)Cp^gc;;lCY;h&biToR8QIZ64~D zTVp42F+%XUq;3B7eo0R$zCH=@mZYyGeF@0S?v6UR9O_d^Z_BM=K8WyKkn~RCeV<4t zhp$J3T+8|Ug(BiP4u1f*laUD`(F7ij{SDx7VC!7B)^<5o(TtH)g_%tP2elR%lk|wz zBC+4hW;dV-ecT~nHc+=GuXY^~NpK}2Qz#ONx{n67Zgwdhk-4nOZNLwbzDc})Rv;3q zNJXTp9-qpAwT}I=q2-cqin4_QTROm2BH1??DN5y} z(G%YXd<^_nbblUc6{M5Ke}JuB{(RzcQ2wPdmo>j1q|HF2W zFMRKB(D@4g#Vyl^D7$6qE8hE?*a?EHV}mdY4N1?d+{Lr+>biLLFK6R>7S=+` QkN^Mx07*qoM6N<$g6i;Jz5oCK diff --git a/sdk/Resources/images/mute-on@2x.png b/sdk/Resources/images/mute-on@2x.png index 0c6a25d125720305282e744e1cd723a1cae592a2..70075067021fd7563934e7408dd882cccee76e35 100644 GIT binary patch delta 2154 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 delta 4484 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 Date: Fri, 6 Nov 2015 18:26:09 +0530 Subject: [PATCH 15/92] MS1780 & MS1781 Handle CALayer overlapping issue Handle Nested Wrappers --- sdk/VastDataModel/ANVast.h | 2 +- sdk/VastDataModel/ANVast.m | 43 ++++++++++++++++++---- sdk/internal/ANCircularAnimationView.m | 2 +- sdk/internal/ANGlobal.h | 1 - sdk/internal/ANVASTUtil.m | 2 - sdk/internal/ANVast+ANCategory.m | 22 ++++++----- sdk/internal/ANVideoPlayerViewController.m | 10 ++++- 7 files changed, 59 insertions(+), 23 deletions(-) diff --git a/sdk/VastDataModel/ANVast.h b/sdk/VastDataModel/ANVast.h index dedc275cc..e53862677 100644 --- a/sdk/VastDataModel/ANVast.h +++ b/sdk/VastDataModel/ANVast.h @@ -27,7 +27,7 @@ @property (nonatomic, readonly) NSString *version; @property (nonatomic, readonly) NSString *AdId; @property (nonatomic, readonly) ANInLine *anInLine; -@property (nonatomic, readonly) ANWrapper *anWrapper; +@property (nonatomic, readonly) NSMutableArray *anWrappers; @property (nonatomic, readonly) NSURL *mediaFileURL; @end \ No newline at end of file diff --git a/sdk/VastDataModel/ANVast.m b/sdk/VastDataModel/ANVast.m index 93b18e191..68f687e13 100644 --- a/sdk/VastDataModel/ANVast.m +++ b/sdk/VastDataModel/ANVast.m @@ -30,7 +30,7 @@ @interface ANVast () @property (nonatomic) NSString *version; @property (nonatomic) NSString *AdId; @property (nonatomic) ANInLine *anInLine; -@property (nonatomic) ANWrapper *anWrapper; +@property (nonatomic) NSMutableArray *anWrappers; @property (nonatomic) NSURL *mediaFileURL; @end @@ -108,14 +108,41 @@ - (void) parseRootElement:(ANXMLElement *)rootElement{ if (inlineElement) { self.anInLine = [[ANInLine alloc] initWithXMLElement:inlineElement]; }else{ + ANXMLElement *wrapperElement = [ANXML childElementNamed:@"Wrapper" parentElement:ad]; + if (wrapperElement) { - self.anWrapper = [[ANWrapper alloc] initWithXMLElement:wrapperElement]; - if (self.anWrapper.vastAdTagURI) { - NSURL *vastURL = [NSURL URLWithString:self.anWrapper.vastAdTagURI]; - NSError *error; - releaseCounter++; - [self parseResponseWithURL:vastURL error:&error]; + + ANWrapper *wrapper = [[ANWrapper alloc] initWithXMLElement:wrapperElement]; + + if (wrapper) { + + if (wrapper.vastAdTagURI) { + + if (!self.anWrappers) { + //initialize wrapper array if not alreay done. + self.anWrappers = [NSMutableArray array]; + } + + //wrappers can get into infinite loop. there should be a system to break out of the infinite loop. + __block BOOL isVastTagURIAlreadyExists = NO; + + [self.anWrappers enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + ANWrapper *anWrapper = (ANWrapper *)obj; + if ([anWrapper.vastAdTagURI isEqualToString:wrapper.vastAdTagURI]) { + isVastTagURIAlreadyExists = YES; + *stop = YES; + } + }]; + + if (!isVastTagURIAlreadyExists) { + [self.anWrappers addObject:wrapper]; + NSURL *vastURL = [NSURL URLWithString:wrapper.vastAdTagURI]; + NSError *error; + releaseCounter++; + [self parseResponseWithURL:vastURL error:&error]; + } + } } } } @@ -132,7 +159,7 @@ - (void) parseRootElement:(ANXMLElement *)rootElement{ } - (NSURL *)optimalMediaFileURL { - ANInLine *inLine = (self.anInLine)?self.anInLine:self.anWrapper; + ANInLine *inLine = (self.anInLine)?self.anInLine:[self.anWrappers lastObject]; //last object will be the valid inline element NSString *fileURI = @""; for (ANCreative *creative in inLine.creatives) { diff --git a/sdk/internal/ANCircularAnimationView.m b/sdk/internal/ANCircularAnimationView.m index 502b4141d..016ba23c4 100644 --- a/sdk/internal/ANCircularAnimationView.m +++ b/sdk/internal/ANCircularAnimationView.m @@ -91,7 +91,7 @@ - (void) performCircularAnimationWithStartTime:(NSDate *)startDate{ [self.countdownlabel setText:[NSString stringWithFormat:@"%ld", (long)ceil(self.skipOffset - timeElapsed)]]; } [self updateProgress:timeElapsed/self.skipOffset]; - if (timeElapsed >= self.skipOffset) { + if (timeElapsed >= self.skipOffset && !self.countdownlabel.hidden) { self.countdownlabel.hidden = YES; [self drawCloseButton]; isButtonClickable = YES; diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index e18d4ce3e..d7504dd86 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -115,7 +115,6 @@ typedef NS_ENUM(NSUInteger, ANVideoEvent){ ANVideoEventMute, ANVideoEventUnMute, ANVideoEventStop, - ANVideoEventClose, ANVideoEventCloseLinear, ANVideoEventSkip, ANVideoEventCreativeView diff --git a/sdk/internal/ANVASTUtil.m b/sdk/internal/ANVASTUtil.m index 4d1e684ac..af22cc7ac 100644 --- a/sdk/internal/ANVASTUtil.m +++ b/sdk/internal/ANVASTUtil.m @@ -41,8 +41,6 @@ + (NSString *)eventStringForVideoEvent:(ANVideoEvent)event { return @"pause"; case ANVideoEventResume: return @"resume"; - case ANVideoEventClose: - return @"close"; case ANVideoEventCloseLinear: return @"closeLinear"; case ANVideoEventCreativeView: diff --git a/sdk/internal/ANVast+ANCategory.m b/sdk/internal/ANVast+ANCategory.m index f379cd654..35505a450 100644 --- a/sdk/internal/ANVast+ANCategory.m +++ b/sdk/internal/ANVast+ANCategory.m @@ -19,7 +19,7 @@ @implementation ANVast (ANCategory) - (ANInLine *)inlineAd { - return self.anInLine ? self.anInLine : self.anWrapper; + return self.anInLine ? self.anInLine : [self.anWrappers lastObject]; //last object has the valid inline element } - (NSString *)getClickThroughURL { @@ -56,13 +56,15 @@ - (float)getSkipOffSetFromVastDataModel { */ - (NSArray *)clickTrackingURL { - NSArray *creatives = @[]; + __block NSArray *creatives = @[]; if (self.anInLine.creatives) { creatives = [creatives arrayByAddingObjectsFromArray:self.anInLine.creatives]; } - if (self.anWrapper.creatives) { - creatives = [creatives arrayByAddingObjectsFromArray:self.anWrapper.creatives]; - } + + [self.anWrappers enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + ANWrapper *wrapper = (ANWrapper *)obj; + creatives = [creatives arrayByAddingObjectsFromArray:wrapper.creatives]; + }]; NSArray *trackingArray = @[]; for (ANCreative *creative in creatives) { if (creative.anLinear.anVideoClicks.clickTracking) { @@ -76,13 +78,15 @@ - (NSArray *)clickTrackingURL { } - (NSArray *)trackingArrayForEvent:(ANVideoEvent)event { - NSArray *creatives = @[]; + __block NSArray *creatives = @[]; if (self.anInLine.creatives) { creatives = [creatives arrayByAddingObjectsFromArray:self.anInLine.creatives]; } - if (self.anWrapper.creatives) { - creatives = [creatives arrayByAddingObjectsFromArray:self.anWrapper.creatives]; - } + + [self.anWrappers enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + ANWrapper *wrapper = (ANWrapper *)obj; + creatives = [creatives arrayByAddingObjectsFromArray:wrapper.creatives]; + }]; NSString *vastEventString = [ANVASTUtil eventStringForVideoEvent:event]; if (vastEventString) { diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index ccf1800b7..0467a58f9 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -42,6 +42,7 @@ @interface ANVideoPlayerViewController () 0 && !self.playerView.player.error) { + if (!isImpressionFired) { + isImpressionFired = YES; + for (ANImpression *impression in self.vastDataModel.anInLine.impressions) { + if (impression) { + [self fireImpressionWithURL:impression.value]; + } + } + } [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; } @@ -217,7 +226,6 @@ - (void)closeInterstitial { [self removeApplicationNotifications]; [self dismissViewControllerAnimated:YES completion:^{ - [self fireTrackingEventWithEvent:ANVideoEventClose]; [self fireTrackingEventWithEvent:ANVideoEventCloseLinear]; }]; } From 9c8a6bf4dc3d47566d85883ff917f0c3feb892fd Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Sun, 8 Nov 2015 19:53:12 -0500 Subject: [PATCH 16/92] MS-1781 Added log for impression fire --- sdk/internal/ANVideoPlayerViewController.m | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 0467a58f9..574632d4f 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -180,6 +180,7 @@ - (void)updateEventsWithSeconds:(float)seconds { isImpressionFired = YES; for (ANImpression *impression in self.vastDataModel.anInLine.impressions) { if (impression) { + ANLogDebug(@"(impression, %@)", impression.value); [self fireImpressionWithURL:impression.value]; } } From 23ac8278172f1f4c527afe4f9dbc4d222b45d720 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Mon, 9 Nov 2015 12:57:18 +0530 Subject: [PATCH 17/92] code review feedback improvements --- sdk/internal/ANVast+ANCategory.m | 16 ++++++++++++---- sdk/internal/ANVideoPlayerViewController.m | 6 ++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/sdk/internal/ANVast+ANCategory.m b/sdk/internal/ANVast+ANCategory.m index 35505a450..69d4c8fb5 100644 --- a/sdk/internal/ANVast+ANCategory.m +++ b/sdk/internal/ANVast+ANCategory.m @@ -53,6 +53,7 @@ - (float)getSkipOffSetFromVastDataModel { /** TODO: Proper tracking for nested VAST wrappers + [DeepakB:] Done. */ - (NSArray *)clickTrackingURL { @@ -63,8 +64,11 @@ - (NSArray *)clickTrackingURL { [self.anWrappers enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { ANWrapper *wrapper = (ANWrapper *)obj; - creatives = [creatives arrayByAddingObjectsFromArray:wrapper.creatives]; + if (wrapper.creatives) { + creatives = [creatives arrayByAddingObjectsFromArray:wrapper.creatives]; + } }]; + NSArray *trackingArray = @[]; for (ANCreative *creative in creatives) { if (creative.anLinear.anVideoClicks.clickTracking) { @@ -85,7 +89,9 @@ - (NSArray *)trackingArrayForEvent:(ANVideoEvent)event { [self.anWrappers enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { ANWrapper *wrapper = (ANWrapper *)obj; - creatives = [creatives arrayByAddingObjectsFromArray:wrapper.creatives]; + if (wrapper.creatives) { + creatives = [creatives arrayByAddingObjectsFromArray:wrapper.creatives]; + } }]; NSString *vastEventString = [ANVASTUtil eventStringForVideoEvent:event]; @@ -94,8 +100,10 @@ - (NSArray *)trackingArrayForEvent:(ANVideoEvent)event { for (ANCreative *creative in creatives) { if (creative.anLinear.trackingEvents.count > 0) { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"vastEvent == %@", vastEventString]; - trackingArray = [trackingArray arrayByAddingObjectsFromArray: - [creative.anLinear.trackingEvents filteredArrayUsingPredicate:predicate]]; + NSArray *trackingEventsArray = [creative.anLinear.trackingEvents filteredArrayUsingPredicate:predicate]; + if (trackingEventsArray) { + trackingArray = [trackingArray arrayByAddingObjectsFromArray:trackingEventsArray]; + } } } return trackingArray; diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 574632d4f..d74bd3d03 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -179,10 +179,8 @@ - (void)updateEventsWithSeconds:(float)seconds { if (!isImpressionFired) { isImpressionFired = YES; for (ANImpression *impression in self.vastDataModel.anInLine.impressions) { - if (impression) { - ANLogDebug(@"(impression, %@)", impression.value); - [self fireImpressionWithURL:impression.value]; - } + ANLogDebug(@"(impression, %@)", impression.value); + [self fireImpressionWithURL:impression.value]; } } [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; From 4fd9dc73c276d8d5b63a954c57c567febb926717 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Mon, 9 Nov 2015 18:17:39 +0530 Subject: [PATCH 18/92] Implementation of Circular Animation Close Button on HTML Interstitial - Removed default close button - removed progress view - implemented circular animated close button - improved animation lag issue --- sdk/internal/ANCircularAnimationView.h | 3 + sdk/internal/ANCircularAnimationView.m | 8 ++- sdk/internal/ANInterstitialAdViewController.h | 2 - sdk/internal/ANInterstitialAdViewController.m | 67 +++++++++++-------- 4 files changed, 47 insertions(+), 33 deletions(-) diff --git a/sdk/internal/ANCircularAnimationView.h b/sdk/internal/ANCircularAnimationView.h index 6bcd0d50b..44d56a8b8 100644 --- a/sdk/internal/ANCircularAnimationView.h +++ b/sdk/internal/ANCircularAnimationView.h @@ -22,6 +22,9 @@ - (void) closeButtonClicked; +@optional +- (void) stopTimerForHTMLInterstitial; + @end @interface ANCircularAnimationView : UIControl diff --git a/sdk/internal/ANCircularAnimationView.m b/sdk/internal/ANCircularAnimationView.m index 502b4141d..9558b50a1 100644 --- a/sdk/internal/ANCircularAnimationView.m +++ b/sdk/internal/ANCircularAnimationView.m @@ -90,9 +90,13 @@ - (void) performCircularAnimationWithStartTime:(NSDate *)startDate{ if (timeElapsed < self.skipOffset) { [self.countdownlabel setText:[NSString stringWithFormat:@"%ld", (long)ceil(self.skipOffset - timeElapsed)]]; } - [self updateProgress:timeElapsed/self.skipOffset]; - if (timeElapsed >= self.skipOffset) { + float floatProgress = timeElapsed/self.skipOffset; + NSString *strProgress = [NSString stringWithFormat:@"%.02f", floatProgress]; + floatProgress = [strProgress floatValue]; + [self updateProgress:floatProgress]; + if (timeElapsed >= self.skipOffset && !self.countdownlabel.hidden) { self.countdownlabel.hidden = YES; + [self.delegate stopTimerForHTMLInterstitial]; [self drawCloseButton]; isButtonClickable = YES; } diff --git a/sdk/internal/ANInterstitialAdViewController.h b/sdk/internal/ANInterstitialAdViewController.h index 5e57c746b..57bc3efa3 100644 --- a/sdk/internal/ANInterstitialAdViewController.h +++ b/sdk/internal/ANInterstitialAdViewController.h @@ -22,8 +22,6 @@ @property (nonatomic, readwrite, weak) id delegate; @property (nonatomic, readwrite, strong) UIView *contentView; -@property (nonatomic, readwrite, weak) IBOutlet UIButton *closeButton; -@property (nonatomic, readwrite, weak) IBOutlet UIProgressView *progressView; @property (nonatomic, readwrite, strong) UIColor *backgroundColor; @property (nonatomic, readonly, assign) UIInterfaceOrientation orientation; @property (nonatomic, readwrite, weak) IBOutlet NSLayoutConstraint *buttonTopToSuperviewConstraint; diff --git a/sdk/internal/ANInterstitialAdViewController.m b/sdk/internal/ANInterstitialAdViewController.m index c839479eb..b987b8fb3 100644 --- a/sdk/internal/ANInterstitialAdViewController.m +++ b/sdk/internal/ANInterstitialAdViewController.m @@ -21,14 +21,16 @@ #import "UIWebView+ANCategory.h" #import "ANMRAIDOrientationProperties.h" #import "NSTimer+ANCategory.h" +#import "ANCircularAnimationView.h" -@interface ANInterstitialAdViewController () +@interface ANInterstitialAdViewController () @property (nonatomic, readwrite, strong) NSTimer *progressTimer; @property (nonatomic, readwrite, strong) NSDate *timerStartDate; @property (nonatomic, readwrite, assign) BOOL viewed; @property (nonatomic, readwrite, assign) BOOL originalHiddenState; @property (nonatomic, readwrite, assign) UIInterfaceOrientation orientation; @property (nonatomic, readwrite, assign, getter=isDismissing) BOOL dismissing; +@property (nonatomic, strong) ANCircularAnimationView *circularAnimationView; @end @implementation ANInterstitialAdViewController @@ -49,32 +51,39 @@ - (void)viewDidLoad { if (!self.backgroundColor) { self.backgroundColor = [UIColor whiteColor]; // Default white color, clear color background doesn't work with interstitial modal view } - self.progressView.hidden = YES; - self.closeButton.hidden = YES; if (self.contentView && !self.contentView.superview) { [self.view addSubview:self.contentView]; - [self.view insertSubview:self.contentView - belowSubview:self.progressView]; [self.contentView an_alignToSuperviewWithXAttribute:NSLayoutAttributeCenterX yAttribute:NSLayoutAttributeCenterY]; } [self setupCloseButtonImageWithCustomClose:self.useCustomClose]; } +- (void)setupCircularView { + _circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; + self.circularAnimationView.delegate = self; + self.circularAnimationView.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.circularAnimationView]; + [self.view bringSubviewToFront:self.circularAnimationView]; + [self.circularAnimationView an_constrainWithSize:CGSizeMake(40,40)]; + [self.circularAnimationView an_alignToSuperviewWithXAttribute:NSLayoutAttributeRight + yAttribute:NSLayoutAttributeTop + offsetX:-17.0 + offsetY:17.0]; + float skipOffSet = [self.delegate closeDelayForController]; + self.circularAnimationView.skipOffset = skipOffSet; + [self.circularAnimationView setBackgroundColor:[UIColor grayColor]]; + [self.circularAnimationView setAlpha:0.2]; + +} + - (void)setupCloseButtonImageWithCustomClose:(BOOL)useCustomClose { if (useCustomClose) { - [self.closeButton setImage:nil - forState:UIControlStateNormal]; return; } - BOOL atLeastiOS7 = [self respondsToSelector:@selector(modalPresentationCapturesStatusBarAppearance)]; - NSString *closeboxImageName = @"interstitial_flat_closebox"; - if (!atLeastiOS7) { - closeboxImageName = @"interstitial_closebox"; - } - UIImage *closeboxImage = [UIImage imageWithContentsOfFile:ANPathForANResource(closeboxImageName, @"png")]; - [self.closeButton setImage:closeboxImage - forState:UIControlStateNormal]; + + _circularAnimationView = nil; + [self setupCircularView]; } - (void)viewWillAppear:(BOOL)animated { @@ -105,27 +114,16 @@ - (void)viewDidDisappear:(BOOL)animated { } - (void)startCountdownTimer { - self.progressView.hidden = NO; - self.closeButton.hidden = YES; self.timerStartDate = [NSDate date]; self.progressTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(progressTimerDidFire:) userInfo:nil repeats:YES]; } - (void)stopCountdownTimer { [self.progressTimer invalidate]; - self.progressView.hidden = YES; - self.closeButton.hidden = NO; } - (void)progressTimerDidFire:(NSTimer *)timer { - NSDate *timeNow = [NSDate date]; - NSTimeInterval timeShown = [timeNow timeIntervalSinceDate:self.timerStartDate]; - NSTimeInterval closeDelay = [self.delegate closeDelayForController]; - [self.progressView setProgress:(timeShown / closeDelay)]; - - if (timeShown >= closeDelay && self.closeButton.hidden == YES) { - [self stopCountdownTimer]; - } + [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; } - (void)setContentView:(UIView *)contentView { @@ -138,9 +136,10 @@ - (void)setContentView:(UIView *)contentView { [_contentView removeFromSuperview]; _contentView = contentView; - + + [self.view addSubview:_contentView]; [self.view insertSubview:_contentView - belowSubview:self.progressView]; + belowSubview:self.circularAnimationView]; _contentView.translatesAutoresizingMaskIntoConstraints = NO; [_contentView an_constrainWithFrameSize]; [_contentView an_alignToSuperviewWithXAttribute:NSLayoutAttributeCenterX @@ -267,5 +266,15 @@ - (void)setOrientationProperties:(ANMRAIDOrientationProperties *)orientationProp } } } + +#pragma ANCircularAnimationView Delegates +- (void)stopTimerForHTMLInterstitial{ + [self stopCountdownTimer]; +} + +- (void)closeButtonClicked{ + [self closeAction:nil]; +} + @end \ No newline at end of file From d132bd40d4e1671517e81d300d1e3e3f5e0d7cbf Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Mon, 9 Nov 2015 23:14:04 +0530 Subject: [PATCH 19/92] codereview changes - implemented close button size as constant (ANGlobal) - removed close button IBAction (house keeping) --- sdk/internal/ANGlobal.h | 1 + sdk/internal/ANInterstitialAdViewController.m | 19 ++++++++----------- sdk/internal/ANVideoPlayerViewController.m | 5 +++-- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index e18d4ce3e..86dad374a 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -62,6 +62,7 @@ #define kAppNexusNativeAdImageDownloadTimeoutInterval 10.0 #define kAppNexusNativeAdCheckViewabilityForTrackingFrequency 0.25 #define kAppNexusNativeAdIABShouldBeViewableForTrackingDuration 1.0 +#define APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_SIZE CGSizeMake(40, 40) // Banner AutoRefresh diff --git a/sdk/internal/ANInterstitialAdViewController.m b/sdk/internal/ANInterstitialAdViewController.m index b987b8fb3..7c3ecc5de 100644 --- a/sdk/internal/ANInterstitialAdViewController.m +++ b/sdk/internal/ANInterstitialAdViewController.m @@ -60,12 +60,13 @@ - (void)viewDidLoad { } - (void)setupCircularView { - _circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; + CGSize closeButtonSize = APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_SIZE; + _circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, closeButtonSize.width, closeButtonSize.height)]; self.circularAnimationView.delegate = self; self.circularAnimationView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:self.circularAnimationView]; [self.view bringSubviewToFront:self.circularAnimationView]; - [self.circularAnimationView an_constrainWithSize:CGSizeMake(40,40)]; + [self.circularAnimationView an_constrainWithSize:closeButtonSize]; [self.circularAnimationView an_alignToSuperviewWithXAttribute:NSLayoutAttributeRight yAttribute:NSLayoutAttributeTop offsetX:-17.0 @@ -152,14 +153,6 @@ - (void)setBackgroundColor:(UIColor *)backgroundColor { self.view.backgroundColor = _backgroundColor; } -- (IBAction)closeAction:(id)sender { - if ([self.progressTimer an_isScheduled]) { - return; - } - self.dismissing = YES; - [self.delegate interstitialAdViewControllerShouldDismiss:self]; -} - - (BOOL)prefersStatusBarHidden { return YES; } @@ -273,7 +266,11 @@ - (void)stopTimerForHTMLInterstitial{ } - (void)closeButtonClicked{ - [self closeAction:nil]; + if ([self.progressTimer an_isScheduled]) { + return; + } + self.dismissing = YES; + [self.delegate interstitialAdViewControllerShouldDismiss:self]; } diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index ccf1800b7..5bdd38595 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -130,12 +130,13 @@ - (void)setupPlayer { } - (void)setupCircularView { - self.circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; + CGSize closeButtonSize = APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_SIZE; + self.circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, closeButtonSize.width, closeButtonSize.height)]; self.circularAnimationView.delegate = self; self.circularAnimationView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:self.circularAnimationView]; [self.view bringSubviewToFront:self.circularAnimationView]; - [self.circularAnimationView an_constrainWithSize:CGSizeMake(40,40)]; + [self.circularAnimationView an_constrainWithSize:closeButtonSize]; [self.circularAnimationView an_alignToSuperviewWithXAttribute:NSLayoutAttributeRight yAttribute:NSLayoutAttributeTop offsetX:-17.0 From 55ac0fbbbd8e0ea3237f0d468ce7e6883a7f86eb Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 9 Nov 2015 18:29:10 -0500 Subject: [PATCH 20/92] MS-1727 Added Interstitial Unified Demand Example --- .../project.pbxproj | 599 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../InterstitialUnifiedDemand/AppDelegate.h | 17 + .../InterstitialUnifiedDemand/AppDelegate.m | 46 ++ .../AppIcon.appiconset/Contents.json | 80 +++ .../AppIcon.appiconset/Icon-60@2x.png | Bin 0 -> 15173 bytes .../AppIcon.appiconset/Icon-60@3x.png | Bin 0 -> 26583 bytes .../AppIcon.appiconset/Icon-76.png | Bin 0 -> 8222 bytes .../AppIcon.appiconset/Icon-76@2x.png | Bin 0 -> 21014 bytes .../AppIcon.appiconset/Icon-Small-40.png | Bin 0 -> 3557 bytes .../AppIcon.appiconset/Icon-Small-40@2x-1.png | Bin 0 -> 8889 bytes .../AppIcon.appiconset/Icon-Small-40@2x.png | Bin 0 -> 8889 bytes .../AppIcon.appiconset/Icon-Small-40@3x.png | Bin 0 -> 15173 bytes .../AppIcon.appiconset/Icon-Small.png | Bin 0 -> 2404 bytes .../AppIcon.appiconset/Icon-Small@2x-1.png | Bin 0 -> 5767 bytes .../AppIcon.appiconset/Icon-Small@2x.png | Bin 0 -> 5767 bytes .../AppIcon.appiconset/Icon-Small@3x.png | Bin 0 -> 9909 bytes .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 28 + .../Base.lproj/Main.storyboard | 48 ++ .../InterstitialUnifiedDemand/Info.plist | 56 ++ .../ViewController.h | 15 + .../ViewController.m | 76 +++ .../InterstitialUnifiedDemand/main.m | 16 + .../InterstitialUnifiedDemand/nqr@2x.png | Bin 0 -> 54449 bytes 25 files changed, 994 insertions(+) create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/AppDelegate.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/AppDelegate.m create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-76.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@3x.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/Contents.json create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Base.lproj/LaunchScreen.storyboard create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Base.lproj/Main.storyboard create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Info.plist create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/main.m create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/nqr@2x.png diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj new file mode 100644 index 000000000..51a7b440f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj @@ -0,0 +1,599 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 8A00B20C1BF1634000818A2A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B2011BF1633F00818A2A /* AppDelegate.m */; }; + 8A00B20D1BF1634000818A2A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2021BF1633F00818A2A /* Assets.xcassets */; }; + 8A00B20E1BF1634000818A2A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2031BF1633F00818A2A /* LaunchScreen.storyboard */; }; + 8A00B20F1BF1634000818A2A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2051BF1634000818A2A /* Main.storyboard */; }; + 8A00B2101BF1634000818A2A /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2071BF1634000818A2A /* Info.plist */; }; + 8A00B2111BF1634000818A2A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B2081BF1634000818A2A /* main.m */; }; + 8A00B2121BF1634000818A2A /* nqr@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2091BF1634000818A2A /* nqr@2x.png */; }; + 8A00B2131BF1634000818A2A /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B20B1BF1634000818A2A /* ViewController.m */; }; + 8A0D45481BF161870097D925 /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A0D45271BF1615D0097D925 /* libANSDK.a */; }; + 8A0D45491BF1618D0097D925 /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A0D45291BF1615D0097D925 /* ANSDKResources.bundle */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 8A0D45261BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EC3E5CDC1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8A0D45281BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EC48177B1845046A0066BBFE; + remoteInfo = ANSDKResources; + }; + 8A0D452A1BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D6D119CC874B00001B70; + remoteInfo = ANSDKGoogleAdMobAdapter; + }; + 8A0D452C1BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D70219CC878300001B70; + remoteInfo = ANSDKiAdAdapter; + }; + 8A0D452E1BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D73319CC879900001B70; + remoteInfo = ANSDKMillennialMediaAdapter; + }; + 8A0D45301BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D76419CC87B200001B70; + remoteInfo = ANSDKMoPubAdapter; + }; + 8A0D45321BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D79519CC87CC00001B70; + remoteInfo = ANSDKFacebookAdapter; + }; + 8A0D45341BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AD5154019D214CA002E53D6; + remoteInfo = ANSDKAmazonAdapter; + }; + 8A0D45361BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AA5B4C41AA8B4A500522E1C; + remoteInfo = ANSDKInMobiAdapter; + }; + 8A0D45381BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8A4B96B51ACD9A4C00FFEB2A; + remoteInfo = ANSDKVdopiaAdapter; + }; + 8A0D453A1BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8A1482571AD337320046F1B9; + remoteInfo = ANSDKAdColonyAdapter; + }; + 8A0D453C1BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AD7C4D81AD2FABA0049C997; + remoteInfo = ANSDKVungleAdapter; + }; + 8A0D453E1BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8A949ACE1ADF131500D83DCE; + remoteInfo = ANSDKChartboostAdapter; + }; + 8A0D45401BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8A96871A1B43314E00D9399B; + remoteInfo = ANSDKYahooAdapter; + }; + 8A0D45421BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D85319CC9A6F00001B70; + remoteInfo = ANAdapterForGoogleAdMobSDK; + }; + 8A0D45441BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D86119CC9B0F00001B70; + remoteInfo = ANAdapterForMoPubSDK; + }; + 8A0D45461BF1615D0097D925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8A9AED8C1A1BE84F00C58BDA; + remoteInfo = AppNexusSDK; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 8A00B2001BF1633F00818A2A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 8A00B2011BF1633F00818A2A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 8A00B2021BF1633F00818A2A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 8A00B2041BF1633F00818A2A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 8A00B2061BF1634000818A2A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 8A00B2071BF1634000818A2A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8A00B2081BF1634000818A2A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 8A00B2091BF1634000818A2A /* nqr@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "nqr@2x.png"; sourceTree = ""; }; + 8A00B20A1BF1634000818A2A /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 8A00B20B1BF1634000818A2A /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ANSDK.xcodeproj; path = ../../BinaryProjects/ANSDK.xcodeproj; sourceTree = ""; }; + 8A87BEE11BD941E900281EA9 /* InterstitialUnifiedDemand.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InterstitialUnifiedDemand.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8A87BEDE1BD941E900281EA9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8A0D45481BF161870097D925 /* libANSDK.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8A00B1FF1BF1633F00818A2A /* InterstitialUnifiedDemand */ = { + isa = PBXGroup; + children = ( + 8A00B2001BF1633F00818A2A /* AppDelegate.h */, + 8A00B2011BF1633F00818A2A /* AppDelegate.m */, + 8A00B2021BF1633F00818A2A /* Assets.xcassets */, + 8A00B2031BF1633F00818A2A /* LaunchScreen.storyboard */, + 8A00B2051BF1634000818A2A /* Main.storyboard */, + 8A00B2071BF1634000818A2A /* Info.plist */, + 8A00B2081BF1634000818A2A /* main.m */, + 8A00B2091BF1634000818A2A /* nqr@2x.png */, + 8A00B20A1BF1634000818A2A /* ViewController.h */, + 8A00B20B1BF1634000818A2A /* ViewController.m */, + ); + path = InterstitialUnifiedDemand; + sourceTree = ""; + }; + 8A0D45131BF1615D0097D925 /* Products */ = { + isa = PBXGroup; + children = ( + 8A0D45271BF1615D0097D925 /* libANSDK.a */, + 8A0D45291BF1615D0097D925 /* ANSDKResources.bundle */, + 8A0D452B1BF1615D0097D925 /* libANSDKGoogleAdMobAdapter.a */, + 8A0D452D1BF1615D0097D925 /* libANSDKiAdAdapter.a */, + 8A0D452F1BF1615D0097D925 /* libANSDKMillennialMediaAdapter.a */, + 8A0D45311BF1615D0097D925 /* libANSDKMoPubAdapter.a */, + 8A0D45331BF1615D0097D925 /* libANSDKFacebookAdapter.a */, + 8A0D45351BF1615D0097D925 /* libANSDKAmazonAdapter.a */, + 8A0D45371BF1615D0097D925 /* libANSDKInMobiAdapter.a */, + 8A0D45391BF1615D0097D925 /* libANSDKVdopiaAdapter.a */, + 8A0D453B1BF1615D0097D925 /* libANSDKAdColonyAdapter.a */, + 8A0D453D1BF1615D0097D925 /* libANSDKVungleAdapter.a */, + 8A0D453F1BF1615D0097D925 /* libANSDKChartboostAdapter.a */, + 8A0D45411BF1615D0097D925 /* libANSDKYahooAdapter.a */, + 8A0D45431BF1615D0097D925 /* libANAdapterForGoogleAdMobSDK.a */, + 8A0D45451BF1615D0097D925 /* libANAdapterForMoPubSDK.a */, + 8A0D45471BF1615D0097D925 /* AppNexusSDK.framework */, + ); + name = Products; + sourceTree = ""; + }; + 8A87BED81BD941E900281EA9 = { + isa = PBXGroup; + children = ( + 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */, + 8A00B1FF1BF1633F00818A2A /* InterstitialUnifiedDemand */, + 8A87BEE21BD941E900281EA9 /* Products */, + ); + sourceTree = ""; + }; + 8A87BEE21BD941E900281EA9 /* Products */ = { + isa = PBXGroup; + children = ( + 8A87BEE11BD941E900281EA9 /* InterstitialUnifiedDemand.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8A87BEE01BD941E900281EA9 /* InterstitialUnifiedDemand */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8A87BEF81BD941E900281EA9 /* Build configuration list for PBXNativeTarget "InterstitialUnifiedDemand" */; + buildPhases = ( + 8A87BEDD1BD941E900281EA9 /* Sources */, + 8A87BEDE1BD941E900281EA9 /* Frameworks */, + 8A87BEDF1BD941E900281EA9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = InterstitialUnifiedDemand; + productName = VASTInterstitialDemo; + productReference = 8A87BEE11BD941E900281EA9 /* InterstitialUnifiedDemand.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8A87BED91BD941E900281EA9 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = AppNexus; + TargetAttributes = { + 8A87BEE01BD941E900281EA9 = { + CreatedOnToolsVersion = 7.0; + DevelopmentTeam = HR94J6TSB3; + }; + }; + }; + buildConfigurationList = 8A87BEDC1BD941E900281EA9 /* Build configuration list for PBXProject "InterstitialUnifiedDemand" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8A87BED81BD941E900281EA9; + productRefGroup = 8A87BEE21BD941E900281EA9 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 8A0D45131BF1615D0097D925 /* Products */; + ProjectRef = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 8A87BEE01BD941E900281EA9 /* InterstitialUnifiedDemand */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 8A0D45271BF1615D0097D925 /* libANSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDK.a; + remoteRef = 8A0D45261BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45291BF1615D0097D925 /* ANSDKResources.bundle */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = ANSDKResources.bundle; + remoteRef = 8A0D45281BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D452B1BF1615D0097D925 /* libANSDKGoogleAdMobAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKGoogleAdMobAdapter.a; + remoteRef = 8A0D452A1BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D452D1BF1615D0097D925 /* libANSDKiAdAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKiAdAdapter.a; + remoteRef = 8A0D452C1BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D452F1BF1615D0097D925 /* libANSDKMillennialMediaAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKMillennialMediaAdapter.a; + remoteRef = 8A0D452E1BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45311BF1615D0097D925 /* libANSDKMoPubAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKMoPubAdapter.a; + remoteRef = 8A0D45301BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45331BF1615D0097D925 /* libANSDKFacebookAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKFacebookAdapter.a; + remoteRef = 8A0D45321BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45351BF1615D0097D925 /* libANSDKAmazonAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKAmazonAdapter.a; + remoteRef = 8A0D45341BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45371BF1615D0097D925 /* libANSDKInMobiAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKInMobiAdapter.a; + remoteRef = 8A0D45361BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45391BF1615D0097D925 /* libANSDKVdopiaAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKVdopiaAdapter.a; + remoteRef = 8A0D45381BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D453B1BF1615D0097D925 /* libANSDKAdColonyAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKAdColonyAdapter.a; + remoteRef = 8A0D453A1BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D453D1BF1615D0097D925 /* libANSDKVungleAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKVungleAdapter.a; + remoteRef = 8A0D453C1BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D453F1BF1615D0097D925 /* libANSDKChartboostAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKChartboostAdapter.a; + remoteRef = 8A0D453E1BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45411BF1615D0097D925 /* libANSDKYahooAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKYahooAdapter.a; + remoteRef = 8A0D45401BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45431BF1615D0097D925 /* libANAdapterForGoogleAdMobSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANAdapterForGoogleAdMobSDK.a; + remoteRef = 8A0D45421BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45451BF1615D0097D925 /* libANAdapterForMoPubSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANAdapterForMoPubSDK.a; + remoteRef = 8A0D45441BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8A0D45471BF1615D0097D925 /* AppNexusSDK.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = AppNexusSDK.framework; + remoteRef = 8A0D45461BF1615D0097D925 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 8A87BEDF1BD941E900281EA9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8A00B20E1BF1634000818A2A /* LaunchScreen.storyboard in Resources */, + 8A00B20D1BF1634000818A2A /* Assets.xcassets in Resources */, + 8A0D45491BF1618D0097D925 /* ANSDKResources.bundle in Resources */, + 8A00B2101BF1634000818A2A /* Info.plist in Resources */, + 8A00B2121BF1634000818A2A /* nqr@2x.png in Resources */, + 8A00B20F1BF1634000818A2A /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8A87BEDD1BD941E900281EA9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8A00B2131BF1634000818A2A /* ViewController.m in Sources */, + 8A00B2111BF1634000818A2A /* main.m in Sources */, + 8A00B20C1BF1634000818A2A /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 8A00B2031BF1633F00818A2A /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 8A00B2041BF1633F00818A2A /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + 8A00B2051BF1634000818A2A /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 8A00B2061BF1634000818A2A /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 8A87BEF61BD941E900281EA9 /* Debug */ = { + 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; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + 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 = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8A87BEF71BD941E900281EA9 /* Release */ = { + 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; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + 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 = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 8A87BEF91BD941E900281EA9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../sdk"; + INFOPLIST_FILE = InterstitialUnifiedDemand/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = corp.appnexus.InterstitialUnifiedDemand; + PRODUCT_NAME = InterstitialUnifiedDemand; + PROVISIONING_PROFILE = ""; + }; + name = Debug; + }; + 8A87BEFA1BD941E900281EA9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../sdk"; + INFOPLIST_FILE = InterstitialUnifiedDemand/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = corp.appnexus.InterstitialUnifiedDemand; + PRODUCT_NAME = InterstitialUnifiedDemand; + PROVISIONING_PROFILE = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8A87BEDC1BD941E900281EA9 /* Build configuration list for PBXProject "InterstitialUnifiedDemand" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8A87BEF61BD941E900281EA9 /* Debug */, + 8A87BEF71BD941E900281EA9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8A87BEF81BD941E900281EA9 /* Build configuration list for PBXNativeTarget "InterstitialUnifiedDemand" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8A87BEF91BD941E900281EA9 /* Debug */, + 8A87BEFA1BD941E900281EA9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 8A87BED91BD941E900281EA9 /* Project object */; +} diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..aad8b5a11 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/AppDelegate.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/AppDelegate.h new file mode 100644 index 000000000..4017d8d95 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/AppDelegate.h @@ -0,0 +1,17 @@ +// +// AppDelegate.h +// VASTInterstitialDemo +// +// Created by Jose Cabal-Ugaz on 10/22/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/AppDelegate.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/AppDelegate.m new file mode 100644 index 000000000..95fc1b2ad --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/AppDelegate.m @@ -0,0 +1,46 @@ +// +// AppDelegate.m +// VASTInterstitialDemo +// +// Created by Jose Cabal-Ugaz on 10/22/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import "AppDelegate.h" +#import + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..0bcee3d12 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,80 @@ +{ + "images" : [ + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Small@2x-1.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Small@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-Small-40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-Small-40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-60@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Small.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Small@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-Small-40.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-Small-40@2x-1.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-76@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..885a326c8cbf6dd6bbc4fd9dd4a7aaa7875b6298 GIT binary patch literal 15173 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 Qu>b%707*qoM6N<$g0=C;d;kCd literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5e11f23825d0d471213a85465a59e20b52f85e GIT binary patch literal 21014 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 literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40.png b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40.png new file mode 100644 index 0000000000000000000000000000000000000000..220e9eb05e7412276866f5ed73247ac64d4f8081 GIT binary patch literal 3557 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 literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2677ad58146700d82a40465fa9b5c205db5915a7 GIT binary patch literal 8889 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 Hu0mjfDH%Hj literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2677ad58146700d82a40465fa9b5c205db5915a7 GIT binary patch literal 8889 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 Hu0mjfDH%Hj literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@3x.png b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..885a326c8cbf6dd6bbc4fd9dd4a7aaa7875b6298 GIT binary patch literal 15173 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 nvcRz{{PaUK{H?g@V!HqT(Y)DgAOP + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Base.lproj/Main.storyboard b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Base.lproj/Main.storyboard new file mode 100644 index 000000000..190c947e1 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Base.lproj/Main.storyboard @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Info.plist b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Info.plist new file mode 100644 index 000000000..47e2b6883 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/Info.plist @@ -0,0 +1,56 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIRequiresFullScreen + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.h new file mode 100644 index 000000000..14e96d846 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.h @@ -0,0 +1,15 @@ +// +// ViewController.h +// VASTInterstitialDemo +// +// Created by Jose Cabal-Ugaz on 10/22/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m new file mode 100644 index 000000000..4209ac20e --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m @@ -0,0 +1,76 @@ +// +// ViewController.m +// VASTInterstitialDemo +// +// Created by Jose Cabal-Ugaz on 10/22/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import "ViewController.h" +#import "ANInterstitialAd.h" +#import "ANLogManager.h" + +@interface ViewController () + +@property (nonatomic) ANInterstitialAd *interstitialAd; + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [ANLogManager setANLogLevel:ANLogLevelAll]; + // VAST Placement + self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"5778861"]; + // HTML Placement +// self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"2140061"]; + self.interstitialAd.closeDelay = 5.0; + self.interstitialAd.opensInNativeBrowser = NO; + self.interstitialAd.shouldServePublicServiceAnnouncements = YES; + self.interstitialAd.delegate = self; + [self.interstitialAd loadAd]; +} + +- (void)adDidReceiveAd:(id)ad { + NSLog(@"adDidReceiveAd"); +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error { + NSLog(@"ad:requestFailedWithError:"); +} + +- (IBAction)onTap:(UITapGestureRecognizer *)sender { + [self.interstitialAd displayAdFromViewController:self]; + [self.interstitialAd loadAd]; +} + +- (void)viewDidAppear:(BOOL)animated { + NSLog(@"view did appear"); +} + +- (void)videoAdPaused:(ANInterstitialAd *)ad { + +} + +- (void)videoAdStarted:(ANInterstitialAd *)ad { + +} + +- (void)videoAdFinishedPlaying:(ANInterstitialAd *)ad { + +} + +- (void)videoAdResumed:(ANInterstitialAd *)ad { + +} + +- (BOOL)prefersStatusBarHidden { + return YES; +} + +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait; +} + +@end \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/main.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/main.m new file mode 100644 index 000000000..6e4abc0dd --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/main.m @@ -0,0 +1,16 @@ +// +// main.m +// VASTInterstitialDemo +// +// Created by Jose Cabal-Ugaz on 10/22/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/nqr@2x.png b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/nqr@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6e26d9b57a4da26800eaf87d0de686259ee099b6 GIT binary patch literal 54449 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 dczfn4X4- Date: Mon, 9 Nov 2015 18:31:44 -0500 Subject: [PATCH 21/92] MS-1727 Deleted xcworkspace data in InterstitialUnifiedDemand example --- .../project.xcworkspace/contents.xcworkspacedata | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index aad8b5a11..000000000 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - From 6e9bc23b87036df4cd5f7a524f966d76ec6f2a6c Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Tue, 10 Nov 2015 11:36:28 +0530 Subject: [PATCH 22/92] improvement with delegates added check for delegate existence for optional delegates. --- sdk/internal/ANCircularAnimationView.h | 2 +- sdk/internal/ANCircularAnimationView.m | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/internal/ANCircularAnimationView.h b/sdk/internal/ANCircularAnimationView.h index 44d56a8b8..58b232e9b 100644 --- a/sdk/internal/ANCircularAnimationView.h +++ b/sdk/internal/ANCircularAnimationView.h @@ -18,7 +18,7 @@ #import -@protocol ANCircularAnimationViewDelegate +@protocol ANCircularAnimationViewDelegate - (void) closeButtonClicked; diff --git a/sdk/internal/ANCircularAnimationView.m b/sdk/internal/ANCircularAnimationView.m index 9558b50a1..b44f019ba 100644 --- a/sdk/internal/ANCircularAnimationView.m +++ b/sdk/internal/ANCircularAnimationView.m @@ -96,7 +96,9 @@ - (void) performCircularAnimationWithStartTime:(NSDate *)startDate{ [self updateProgress:floatProgress]; if (timeElapsed >= self.skipOffset && !self.countdownlabel.hidden) { self.countdownlabel.hidden = YES; - [self.delegate stopTimerForHTMLInterstitial]; + if ([self.delegate respondsToSelector:@selector(stopTimerForHTMLInterstitial)]) { + [self.delegate stopTimerForHTMLInterstitial]; + } [self drawCloseButton]; isButtonClickable = YES; } From 66c6b3fe379474c95e9ac5cd82ff38c91332bec6 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Tue, 10 Nov 2015 14:46:11 +0530 Subject: [PATCH 23/92] - load vast video with volume muted - restore volume to system level when closing the interstitial --- sdk/internal/ANVideoPlayerViewController.m | 21 ++++++++++++++++++++- sdk/internal/ANVolumeButtonView.m | 3 +-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index d74bd3d03..dc4000677 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -74,7 +74,7 @@ - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; - + [self setupPlayer]; [self setupCircularView]; [self setupVolumeView]; @@ -100,6 +100,8 @@ - (void)viewDidAppear:(BOOL)animated{ - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; + [self handleVolumeLevelForViewLoad:NO]; + [self.playerView.player removeTimeObserver:self.observer]; if (!isSkipped) { [self pause]; @@ -147,6 +149,10 @@ - (void)setupCircularView { - (void)setupVolumeView { self.volumeView = [[ANVolumeButtonView alloc] initWithDelegate:self]; + + //Mute player as soon as possible on start to avoid being muted after video is loaded. This is a race condition. + [self handleVolumeLevelForViewLoad:YES]; + self.volumeView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:self.volumeView]; [self.view bringSubviewToFront:self.volumeView]; @@ -359,4 +365,17 @@ - (void)didDismissBrowserViewController:(ANBrowserViewController *)controller{ [self play]; } +- (void) handleVolumeLevelForViewLoad:(BOOL)value{ + if (!value) { + //restore player volume to system volume on closing + float systemVolume = [ANVASTUtil getSystemVolume]; + [self.playerView.player setVolume:systemVolume]; + [self mute:NO]; + }else{ + //mute on start + [self.playerView.player setVolume:0.0]; + [self mute:YES]; + } +} + @end diff --git a/sdk/internal/ANVolumeButtonView.m b/sdk/internal/ANVolumeButtonView.m index f074ed7bf..0f341bf03 100644 --- a/sdk/internal/ANVolumeButtonView.m +++ b/sdk/internal/ANVolumeButtonView.m @@ -44,8 +44,7 @@ - (instancetype)initWithDelegate:(id)delegate { - (void)addVolumeButton { self.volumeButton = [[UIButton alloc] init]; self.volumeButton.translatesAutoresizingMaskIntoConstraints = NO; - isVolumeMuted = ([ANVASTUtil getSystemVolume] > 0) ? NO : YES; - isVolumeMuted = !isVolumeMuted; //negate the value as it would again be negated inside handleVolumeButton + isVolumeMuted = NO; //negate the value as it would again be negated inside handleVolumeButton [self handleVolumeButton]; [self.volumeButton addTarget:self action:@selector(handleVolumeButton) From f12cfc8994aaab11fb250c4bdc2368b96ca9eb18 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 10 Nov 2015 16:35:30 -0500 Subject: [PATCH 24/92] MS-1727 Removed closeButton & progressView from ANInterstitialAdViewController.xib --- .../ANInterstitialAdViewController.xib | 37 +------------------ 1 file changed, 2 insertions(+), 35 deletions(-) diff --git a/sdk/Resources/ANInterstitialAdViewController.xib b/sdk/Resources/ANInterstitialAdViewController.xib index a38be7c59..6175b25c8 100644 --- a/sdk/Resources/ANInterstitialAdViewController.xib +++ b/sdk/Resources/ANInterstitialAdViewController.xib @@ -1,15 +1,12 @@ - + - + - - - @@ -17,37 +14,7 @@ - - - - - - - - - - - - - - - - - - From c34c22d9f43ab75a04ec95fe5698666c505e1d6c Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 10 Nov 2015 16:41:35 -0500 Subject: [PATCH 25/92] MS-1727 Align HTML interstitial appearance to VAST interstitial appearance --- sdk/internal/ANInterstitialAdViewController.m | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sdk/internal/ANInterstitialAdViewController.m b/sdk/internal/ANInterstitialAdViewController.m index 7c3ecc5de..eb05eb73b 100644 --- a/sdk/internal/ANInterstitialAdViewController.m +++ b/sdk/internal/ANInterstitialAdViewController.m @@ -49,7 +49,7 @@ - (instancetype)init { - (void)viewDidLoad { [super viewDidLoad]; if (!self.backgroundColor) { - self.backgroundColor = [UIColor whiteColor]; // Default white color, clear color background doesn't work with interstitial modal view + self.backgroundColor = [UIColor blackColor]; } if (self.contentView && !self.contentView.superview) { [self.view addSubview:self.contentView]; @@ -72,10 +72,7 @@ - (void)setupCircularView { offsetX:-17.0 offsetY:17.0]; float skipOffSet = [self.delegate closeDelayForController]; - self.circularAnimationView.skipOffset = skipOffSet; - [self.circularAnimationView setBackgroundColor:[UIColor grayColor]]; - [self.circularAnimationView setAlpha:0.2]; - + self.circularAnimationView.skipOffset = skipOffSet; } - (void)setupCloseButtonImageWithCustomClose:(BOOL)useCustomClose { From f5f810c3ba0b8008b4a5dc7a02c9447578b6f4b1 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 10 Nov 2015 16:50:35 -0500 Subject: [PATCH 26/92] MS-1727 Fixed updateProgress conflict --- sdk/internal/ANCircularAnimationView.m | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/sdk/internal/ANCircularAnimationView.m b/sdk/internal/ANCircularAnimationView.m index b44f019ba..00011fc2e 100644 --- a/sdk/internal/ANCircularAnimationView.m +++ b/sdk/internal/ANCircularAnimationView.m @@ -90,10 +90,7 @@ - (void) performCircularAnimationWithStartTime:(NSDate *)startDate{ if (timeElapsed < self.skipOffset) { [self.countdownlabel setText:[NSString stringWithFormat:@"%ld", (long)ceil(self.skipOffset - timeElapsed)]]; } - float floatProgress = timeElapsed/self.skipOffset; - NSString *strProgress = [NSString stringWithFormat:@"%.02f", floatProgress]; - floatProgress = [strProgress floatValue]; - [self updateProgress:floatProgress]; + [self updateProgress:timeElapsed/self.skipOffset]; if (timeElapsed >= self.skipOffset && !self.countdownlabel.hidden) { self.countdownlabel.hidden = YES; if ([self.delegate respondsToSelector:@selector(stopTimerForHTMLInterstitial)]) { From d944824b3b33803abb7e7f618e756c30febac711 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 10 Nov 2015 18:58:03 -0500 Subject: [PATCH 27/92] MS-1727 Added close button for MRAID custom close functionality --- .../ANInterstitialAdViewController.xib | 21 +++++++++++++++++++ sdk/internal/ANInterstitialAdViewController.h | 1 + sdk/internal/ANInterstitialAdViewController.m | 21 +++++++++++++------ 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/sdk/Resources/ANInterstitialAdViewController.xib b/sdk/Resources/ANInterstitialAdViewController.xib index 6175b25c8..30d871c29 100644 --- a/sdk/Resources/ANInterstitialAdViewController.xib +++ b/sdk/Resources/ANInterstitialAdViewController.xib @@ -7,6 +7,8 @@ + + @@ -14,7 +16,26 @@ + + + + + + + diff --git a/sdk/internal/ANInterstitialAdViewController.h b/sdk/internal/ANInterstitialAdViewController.h index 57bc3efa3..0aedcb02f 100644 --- a/sdk/internal/ANInterstitialAdViewController.h +++ b/sdk/internal/ANInterstitialAdViewController.h @@ -22,6 +22,7 @@ @property (nonatomic, readwrite, weak) id delegate; @property (nonatomic, readwrite, strong) UIView *contentView; +@property (nonatomic, readwrite, weak) IBOutlet UIButton *closeButton; @property (nonatomic, readwrite, strong) UIColor *backgroundColor; @property (nonatomic, readonly, assign) UIInterfaceOrientation orientation; @property (nonatomic, readwrite, weak) IBOutlet NSLayoutConstraint *buttonTopToSuperviewConstraint; diff --git a/sdk/internal/ANInterstitialAdViewController.m b/sdk/internal/ANInterstitialAdViewController.m index eb05eb73b..2342cff4c 100644 --- a/sdk/internal/ANInterstitialAdViewController.m +++ b/sdk/internal/ANInterstitialAdViewController.m @@ -61,7 +61,8 @@ - (void)viewDidLoad { - (void)setupCircularView { CGSize closeButtonSize = APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_SIZE; - _circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, closeButtonSize.width, closeButtonSize.height)]; + [self.circularAnimationView removeFromSuperview]; + self.circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, closeButtonSize.width, closeButtonSize.height)]; self.circularAnimationView.delegate = self; self.circularAnimationView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:self.circularAnimationView]; @@ -72,16 +73,18 @@ - (void)setupCircularView { offsetX:-17.0 offsetY:17.0]; float skipOffSet = [self.delegate closeDelayForController]; - self.circularAnimationView.skipOffset = skipOffSet; + self.circularAnimationView.skipOffset = skipOffSet; } - (void)setupCloseButtonImageWithCustomClose:(BOOL)useCustomClose { if (useCustomClose) { - return; + // MRAID custom close + self.closeButton.hidden = NO; + [self.circularAnimationView removeFromSuperview]; + } else { + self.closeButton.hidden = YES; + [self setupCircularView]; } - - _circularAnimationView = nil; - [self setupCircularView]; } - (void)viewWillAppear:(BOOL)animated { @@ -150,6 +153,12 @@ - (void)setBackgroundColor:(UIColor *)backgroundColor { self.view.backgroundColor = _backgroundColor; } +- (IBAction)closeAction:(id)sender { + // This method is intended to fire only for MRAID custom close + self.dismissing = YES; + [self.delegate interstitialAdViewControllerShouldDismiss:self]; +} + - (BOOL)prefersStatusBarHidden { return YES; } From 85c9d5cb7d8c8854c0e6b5dee24f0e6a31aae560 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Wed, 11 Nov 2015 12:18:48 -0500 Subject: [PATCH 28/92] MS-1796 Set unmute player volume to 1.0, volume button workflow improvements --- sdk/internal/ANVASTUtil.h | 1 - sdk/internal/ANVASTUtil.m | 4 -- sdk/internal/ANVideoPlayerViewController.m | 43 ++++++---------------- sdk/internal/ANVolumeButtonView.h | 6 ++- sdk/internal/ANVolumeButtonView.m | 29 ++++++--------- 5 files changed, 26 insertions(+), 57 deletions(-) diff --git a/sdk/internal/ANVASTUtil.h b/sdk/internal/ANVASTUtil.h index 6c091be06..681962a4a 100644 --- a/sdk/internal/ANVASTUtil.h +++ b/sdk/internal/ANVASTUtil.h @@ -19,6 +19,5 @@ @interface ANVASTUtil : NSObject + (NSString *)eventStringForVideoEvent:(ANVideoEvent)event; -+ (float)getSystemVolume; @end \ No newline at end of file diff --git a/sdk/internal/ANVASTUtil.m b/sdk/internal/ANVASTUtil.m index af22cc7ac..0146af88e 100644 --- a/sdk/internal/ANVASTUtil.m +++ b/sdk/internal/ANVASTUtil.m @@ -51,8 +51,4 @@ + (NSString *)eventStringForVideoEvent:(ANVideoEvent)event { } } -+ (float)getSystemVolume { - return [[AVAudioSession sharedInstance] outputVolume]; -} - @end \ No newline at end of file diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index dc4000677..faece3ddb 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -32,6 +32,11 @@ #import "ANVAST+ANCategory.h" #import "UIView+ANCategory.h" +static float const kANVideoPlayerViewControllerVolumeMuteOnValue = 0.0; +static float const kANVideoPlayerViewControllerVolumeMuteOffValue = 1.0; + +static BOOL const kANVideoPlayerViewControllerDoMuteOnLoad = YES; + @interface ANVideoPlayerViewController () { float previousDuration; @@ -100,7 +105,6 @@ - (void)viewDidAppear:(BOOL)animated{ - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; - [self handleVolumeLevelForViewLoad:NO]; [self.playerView.player removeTimeObserver:self.observer]; if (!isSkipped) { @@ -117,6 +121,8 @@ - (BOOL)prefersStatusBarHidden { - (void)setupPlayer { AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:self.fileURL]; AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; + player.volume = kANVideoPlayerViewControllerDoMuteOnLoad ? + kANVideoPlayerViewControllerVolumeMuteOnValue : kANVideoPlayerViewControllerVolumeMuteOffValue; self.playerView = [[ANPlayerView alloc] init]; [self.playerView setPlayer:player]; @@ -149,10 +155,7 @@ - (void)setupCircularView { - (void)setupVolumeView { self.volumeView = [[ANVolumeButtonView alloc] initWithDelegate:self]; - - //Mute player as soon as possible on start to avoid being muted after video is loaded. This is a race condition. - [self handleVolumeLevelForViewLoad:YES]; - + self.volumeView.isVolumeMuted = kANVideoPlayerViewControllerDoMuteOnLoad; self.volumeView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:self.volumeView]; [self.view bringSubviewToFront:self.volumeView]; @@ -253,24 +256,13 @@ - (void)pause { } } -- (void)mute:(BOOL)value { - AVAudioSession *session = [AVAudioSession sharedInstance]; - NSError *error; - - float volume = 0.5; - - if ([session setActive:YES error:&error]) { - volume = session.outputVolume; - } else{ - ANLogInfo(@"Unable to get system volume."); - } - +- (void)mutePlayer:(BOOL)value { if (value) { - [self.playerView.player setVolume:0]; + [self.playerView.player setVolume:kANVideoPlayerViewControllerVolumeMuteOnValue]; ANLogDebug(@"Volume Muted."); [self fireTrackingEventWithEvent:ANVideoEventMute]; } else{ - [self.playerView.player setVolume:volume]; + [self.playerView.player setVolume:kANVideoPlayerViewControllerVolumeMuteOffValue]; ANLogDebug(@"Volume Unmuted."); [self fireTrackingEventWithEvent:ANVideoEventUnMute]; } @@ -365,17 +357,4 @@ - (void)didDismissBrowserViewController:(ANBrowserViewController *)controller{ [self play]; } -- (void) handleVolumeLevelForViewLoad:(BOOL)value{ - if (!value) { - //restore player volume to system volume on closing - float systemVolume = [ANVASTUtil getSystemVolume]; - [self.playerView.player setVolume:systemVolume]; - [self mute:NO]; - }else{ - //mute on start - [self.playerView.player setVolume:0.0]; - [self mute:YES]; - } -} - @end diff --git a/sdk/internal/ANVolumeButtonView.h b/sdk/internal/ANVolumeButtonView.h index 470357541..3b4aee218 100644 --- a/sdk/internal/ANVolumeButtonView.h +++ b/sdk/internal/ANVolumeButtonView.h @@ -19,7 +19,7 @@ @protocol ANVolumeButtonViewDelegate -- (void)mute:(BOOL)value; +- (void)mutePlayer:(BOOL)value; @end @@ -29,4 +29,6 @@ - (instancetype)initWithDelegate:(id)delegate; -@end +@property (nonatomic) BOOL isVolumeMuted; + +@end \ No newline at end of file diff --git a/sdk/internal/ANVolumeButtonView.m b/sdk/internal/ANVolumeButtonView.m index 0f341bf03..164235d68 100644 --- a/sdk/internal/ANVolumeButtonView.m +++ b/sdk/internal/ANVolumeButtonView.m @@ -20,9 +20,7 @@ #import "ANVASTUtil.h" #import "UIView+ANCategory.h" -@interface ANVolumeButtonView(){ - BOOL isVolumeMuted; -} +@interface ANVolumeButtonView() @property (nonatomic, strong) UIButton *volumeButton; @@ -44,8 +42,6 @@ - (instancetype)initWithDelegate:(id)delegate { - (void)addVolumeButton { self.volumeButton = [[UIButton alloc] init]; self.volumeButton.translatesAutoresizingMaskIntoConstraints = NO; - isVolumeMuted = NO; //negate the value as it would again be negated inside handleVolumeButton - [self handleVolumeButton]; [self.volumeButton addTarget:self action:@selector(handleVolumeButton) forControlEvents:UIControlEventTouchUpInside]; @@ -59,24 +55,21 @@ - (void)addVolumeButton { } - (void)handleVolumeButton { - isVolumeMuted = !isVolumeMuted; - + self.isVolumeMuted = !self.isVolumeMuted; + [self.delegate mutePlayer:self.isVolumeMuted]; +} + +- (void)setIsVolumeMuted:(BOOL)isVolumeMuted { + _isVolumeMuted = isVolumeMuted; UIImage *volumeImage; - if (isVolumeMuted) { + if (_isVolumeMuted) { volumeImage = [UIImage imageWithContentsOfFile:ANPathForANResource(@"mute-on", @"png")]; - [self mute:YES]; - }else{ + } else { volumeImage = [UIImage imageWithContentsOfFile:ANPathForANResource(@"mute-off",@"png")]; - [self mute:NO]; } - + [self.volumeButton setBackgroundImage:volumeImage forState:UIControlStateNormal]; - } -- (void)mute:(BOOL)value { - [self.delegate mute:value]; -} - -@end +@end \ No newline at end of file From 6d89d6b84abb977ab31e9990fe07d9d1f361950d Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Wed, 11 Nov 2015 14:49:07 -0500 Subject: [PATCH 29/92] MS-1723 /ut/v2 implementation for html, video + notify url --- sdk/VastDataModel/ANVast.h | 2 + sdk/internal/ANInterstitialAdFetcher.h | 6 ++ sdk/internal/ANUniversalTagAdServerResponse.m | 65 +++++++++++++++++++ sdk/internal/ANVideoPlayerViewController.m | 4 ++ 4 files changed, 77 insertions(+) diff --git a/sdk/VastDataModel/ANVast.h b/sdk/VastDataModel/ANVast.h index e53862677..a42ef9503 100644 --- a/sdk/VastDataModel/ANVast.h +++ b/sdk/VastDataModel/ANVast.h @@ -30,4 +30,6 @@ @property (nonatomic, readonly) NSMutableArray *anWrappers; @property (nonatomic, readonly) NSURL *mediaFileURL; +@property (nonatomic, readwrite) NSString *notifyUrlString; + @end \ No newline at end of file diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index 4a236b6fc..d8046d4bf 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -18,7 +18,13 @@ @protocol ANInterstitialAdFetcherDelegate; +#define kANANInterstitialAdFetcherUseUTV2 1 + +#if kANANInterstitialAdFetcherUseUTV2 +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2video"; +#else static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://ib.adnxs.com/ut/v1"; +#endif @interface ANInterstitialAdFetcher : NSObject diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 280284450..da126ae42 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -15,10 +15,16 @@ #import "ANUniversalTagAdServerResponse.h" #import "ANLogging.h" +#import "ANInterstitialAdFetcher.h" static NSString *const kANUniversalTagAdServerResponseKeyNoBid = @"nobid"; static NSString *const kANUniversalTagAdServerResponseKeyTags = @"tags"; static NSString *const kANUniversalTagAdServerResponseKeyAd = @"ad"; +static NSString *const kANUniversalTagAdServerResponseKeyAds = @"ads"; + +static NSString *const kANUniversalTagAdServerResponseKeyNotifyUrl = @"notify_url"; + +static NSString *const kANUniversalTagAdServerResponseKeyRTBObject = @"rtb"; static NSString *const kANUniversalTagAdServerResponseKeyVideo = @"video"; static NSString *const kANUniversalTagAdServerResponseVideoKeyContent = @"content"; @@ -45,7 +51,11 @@ @implementation ANUniversalTagAdServerResponse - (instancetype)initWithAdServerData:(NSData *)data { self = [super init]; if (self) { + #if kANANInterstitialAdFetcherUseUTV2 + [self processV2ResponseData:data]; + #else [self processResponseData:data]; + #endif } return self; } @@ -70,6 +80,7 @@ - (void)processResponseData:(NSData *)data { } ANVideoAd *videoAd = [[self class] videoAdFromAdObject:adObject]; if (videoAd) { + videoAd.vastDataModel.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; [self.videoAds addObject:videoAd]; } } @@ -137,6 +148,60 @@ + (ANVideoAd *)videoAdFromAdObject:(NSDictionary *)adObject { return nil; } +#pragma mark - Universal Tag V2 Support + +- (void)processV2ResponseData:(NSData *)data { + NSDictionary *jsonResponse = [[self class] jsonResponseFromData:data]; + if (jsonResponse) { + NSArray *tags = [[self class] tagsFromJSONResponse:jsonResponse]; + for (NSDictionary *tag in tags) { + if ([[self class] isNoBidTag:tag]) { + continue; + } + NSArray *adsArray = [[self class] adsArrayFromTag:tag]; + if (adsArray) { + for (id adObject in adsArray) { + if (![adObject isKindOfClass:[NSDictionary class]]) { + continue; + } + NSDictionary *rtbObject = [[self class] rtbObjectFromAdObject:adObject]; + if (!rtbObject) { + return; + } + ANStandardAd *standardAd = [[self class] standardAdFromAdObject:rtbObject]; + if (standardAd) { + [self.standardAds addObject:standardAd]; + } + ANVideoAd *videoAd = [[self class] videoAdFromAdObject:rtbObject]; + if (videoAd) { + videoAd.vastDataModel.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; + [self.videoAds addObject:videoAd]; + } + } + } + } + } + self.standardAd = [self.standardAds firstObject]; + self.videoAd = [self.videoAds firstObject]; + if (self.standardAd || self.videoAd) { + self.containsAds = YES; + } +} + ++ (NSArray *)adsArrayFromTag:(NSDictionary *)tag { + if ([tag[kANUniversalTagAdServerResponseKeyAds] isKindOfClass:[NSArray class]]) { + return tag[kANUniversalTagAdServerResponseKeyAds]; + } + return nil; +} + ++ (NSDictionary *)rtbObjectFromAdObject:(NSDictionary *)adObject { + if ([adObject[kANUniversalTagAdServerResponseKeyRTBObject] isKindOfClass:[NSDictionary class]]) { + return adObject[kANUniversalTagAdServerResponseKeyRTBObject]; + } + return nil; +} + #pragma mark - Helper Methods - (NSMutableArray *)standardAds { diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 3b41f8f10..19a5cd442 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -192,6 +192,10 @@ - (void)updateEventsWithSeconds:(float)seconds { ANLogDebug(@"(impression, %@)", impression.value); [self fireImpressionWithURL:impression.value]; } + if (self.vastDataModel.notifyUrlString) { + ANLogDebug(@"(impression, %@)", self.vastDataModel.notifyUrlString); + [self fireImpressionWithURL:self.vastDataModel.notifyUrlString]; + } } [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; } From a235ef77193683dff57c2cbe69061732158e96b0 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 13 Nov 2015 11:57:19 -0500 Subject: [PATCH 30/92] MS-1810 Close button size changes --- sdk/internal/ANCircularAnimationView.m | 3 ++- sdk/internal/ANGlobal.h | 3 ++- sdk/internal/ANInterstitialAdViewController.m | 2 +- sdk/internal/ANVideoPlayerViewController.m | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sdk/internal/ANCircularAnimationView.m b/sdk/internal/ANCircularAnimationView.m index 00011fc2e..cd9d7afdc 100644 --- a/sdk/internal/ANCircularAnimationView.m +++ b/sdk/internal/ANCircularAnimationView.m @@ -17,6 +17,7 @@ #import "ANCircularAnimationView.h" +#import "ANGlobal.h" @interface ANCircularAnimationView (){ NSDate *startTime; @@ -129,7 +130,7 @@ - (void) createCountdownLabel{ } - (void) drawCloseButton{ - CGRect lineFrame = CGRectMake(10, 10, self.bounds.size.width-10, self.bounds.size.height-10); + CGRect lineFrame = APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_CROSS_RECT; CAShapeLayer *line1 = [[CAShapeLayer alloc] init]; UIBezierPath *path1 = [UIBezierPath bezierPath]; diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index 9c7683641..2e6544373 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -62,7 +62,8 @@ #define kAppNexusNativeAdImageDownloadTimeoutInterval 10.0 #define kAppNexusNativeAdCheckViewabilityForTrackingFrequency 0.25 #define kAppNexusNativeAdIABShouldBeViewableForTrackingDuration 1.0 -#define APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_SIZE CGSizeMake(40, 40) +#define APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_VIEW_SIZE CGSizeMake(40, 40) +#define APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_CROSS_RECT CGRectMake(13, 13, 27, 27) // Banner AutoRefresh diff --git a/sdk/internal/ANInterstitialAdViewController.m b/sdk/internal/ANInterstitialAdViewController.m index 2342cff4c..01f5a1eef 100644 --- a/sdk/internal/ANInterstitialAdViewController.m +++ b/sdk/internal/ANInterstitialAdViewController.m @@ -60,7 +60,7 @@ - (void)viewDidLoad { } - (void)setupCircularView { - CGSize closeButtonSize = APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_SIZE; + CGSize closeButtonSize = APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_VIEW_SIZE; [self.circularAnimationView removeFromSuperview]; self.circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, closeButtonSize.width, closeButtonSize.height)]; self.circularAnimationView.delegate = self; diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 3b41f8f10..575008c9b 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -139,7 +139,7 @@ - (void)setupPlayer { } - (void)setupCircularView { - CGSize closeButtonSize = APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_SIZE; + CGSize closeButtonSize = APPNEXUS_INTERSTITIAL_CLOSE_BUTTON_VIEW_SIZE; self.circularAnimationView = [[ANCircularAnimationView alloc] initWithFrame:CGRectMake(0, 0, closeButtonSize.width, closeButtonSize.height)]; self.circularAnimationView.delegate = self; self.circularAnimationView.translatesAutoresizingMaskIntoConstraints = NO; From 536a31918f322f3d66c00e62bd3edc15dae2da7a Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Tue, 17 Nov 2015 15:16:34 +0530 Subject: [PATCH 31/92] Implemented the video delegates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Implemented video delegates for client apps - implemented video delegates for internal use - moved ENUM ANVideoEvent from ANGlobal to ANAdConstant - Tested video for events at client side — Video Start — Video Paused — Video Resumed — Video Mute — Video Unmute — Video Skipped — Video Clicked — Video Closed — Video Quartile First — Video Quartile MidPoint — Video Quartile Third — Video Quartile Complete (Video finished playing complete video) --- .../contents.xcworkspacedata | 7 ++ sdk/ANAdConstants.h | 23 ++++++- sdk/ANInterstitialAd.h | 20 ++++-- sdk/VastDataModel/ANInLine.h | 2 +- sdk/internal/ANAdViewInternalDelegate.h | 18 ++++- sdk/internal/ANGlobal.h | 21 ------ sdk/internal/ANInterstitialAd.m | 67 ++++++++++++++++++- sdk/internal/ANVideoPlayerViewController.h | 3 + sdk/internal/ANVideoPlayerViewController.m | 17 ++++- 9 files changed, 145 insertions(+), 33 deletions(-) create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/sdk/ANAdConstants.h b/sdk/ANAdConstants.h index 789c17153..a734cdebe 100644 --- a/sdk/ANAdConstants.h +++ b/sdk/ANAdConstants.h @@ -56,4 +56,25 @@ typedef NS_ENUM(NSUInteger, ANNativeAdNetworkCode) { ANNativeAdNetworkCodeAdColony, ANNativeAdNetworkCodeYahoo, ANNativeAdNetworkCodeCustom, -}; \ No newline at end of file +}; + +typedef NS_ENUM(NSUInteger, ANVideoEvent){ + ANVideoEventUnknown = 0, + ANVideoEventStart, + ANVideoEventQuartileFirst, + ANVideoEventQuartileMidPoint, + ANVideoEventQuartileThird, + ANVideoEventQuartileComplete, + ANVideoEventZoomRestore, + ANVideoEventZoomFullScreen, + ANVideoEventPlay, + ANVideoEventPause, + ANVideoEventResume, + ANVideoEventRewind, + ANVideoEventMute, + ANVideoEventUnMute, + ANVideoEventStop, + ANVideoEventCloseLinear, + ANVideoEventSkip, + ANVideoEventCreativeView +}; diff --git a/sdk/ANInterstitialAd.h b/sdk/ANInterstitialAd.h index 4c6d3cba3..311339170 100644 --- a/sdk/ANInterstitialAd.h +++ b/sdk/ANInterstitialAd.h @@ -45,7 +45,7 @@ */ @interface ANInterstitialAd : ANAdView -@property (nonatomic, readwrite, weak) id delegate; +@property (nonatomic, readwrite, weak) id delegate; /** Delegate object that receives custom app event notifications from this @@ -53,6 +53,11 @@ */ @property (nonatomic, readwrite, weak) id appEventDelegate; +/** + Delegate object that receives custom video event notifications from this + ANInterstitialAd. + */ +@property (nonatomic, readwrite, weak) id videoAdDelegate; /** The ad view's background color. If the color is fully or partially transparent, set opaque to NO to render an interstitial with a transparent background. @@ -153,8 +158,13 @@ @protocol ANVideoAdDelegate -- (void) videoAdPaused:(ANInterstitialAd *)ad; -- (void) videoAdResumed:(ANInterstitialAd *)ad; -- (void) videoAdStarted:(ANInterstitialAd *)ad; -- (void) videoAdFinishedPlaying:(ANInterstitialAd *)ad; +@optional +- (void) adStartedPlayingVideo:(id)ad; +- (void) adPausedVideo:(id)ad; +- (void) adResumedVideo:(id)ad; +- (void) adSkippedVideo:(id)ad; +- (void) adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad; +- (void) adFinishedPlayingCompleteVideo:(id)ad; +- (void) adMuted:(BOOL) isMuted withAd:(id)ad; + @end diff --git a/sdk/VastDataModel/ANInLine.h b/sdk/VastDataModel/ANInLine.h index 6e09a8878..689e17dc0 100644 --- a/sdk/VastDataModel/ANInLine.h +++ b/sdk/VastDataModel/ANInLine.h @@ -17,7 +17,7 @@ #import -#import "ANGlobal.h" +#import "ANAdConstants.h" #import "ANAdSystem.h" #import "ANImpression.h" #import "ANCreative.h" diff --git a/sdk/internal/ANAdViewInternalDelegate.h b/sdk/internal/ANAdViewInternalDelegate.h index 3943c1f63..795850eaa 100644 --- a/sdk/internal/ANAdViewInternalDelegate.h +++ b/sdk/internal/ANAdViewInternalDelegate.h @@ -14,7 +14,7 @@ */ #import -#import "ANGlobal.h" +#import "ANAdConstants.h" @protocol ANAdViewInternalDelegate @@ -54,4 +54,18 @@ - (void)adShouldSetOrientationProperties:(ANMRAIDOrientationProperties *)orientationProperties; - (void)adShouldUseCustomClose:(BOOL)useCustomClose; -@end \ No newline at end of file +@end + +@class ANVideoAd; +@protocol ANVideoAdInternalDelegate +- (void) adStartedPlayingVideo:(ANVideoAd *) ad; +- (void) adPausedVideo:(ANVideoAd *) ad; +- (void) adResumedVideo:(ANVideoAd *) ad; +- (void) adSkippedVideo:(ANVideoAd *) ad; +- (void) adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(ANVideoAd *) ad; +- (void) adFinishedPlayingCompleteVideo:(ANVideoAd *) ad; +- (void) adMuted:(BOOL) isMuted withAd:(ANVideoAd *) ad; +- (void) adDidPerformClickThroughOnVideo:(ANVideoAd *) ad; +- (void) adWillCloseVideo:(ANVideoAd *) ad; +- (void) adDidCloseVideo:(ANVideoAd *) ad; +@end diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index 9c7683641..78f5e913e 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -100,27 +100,6 @@ typedef NS_ENUM(NSUInteger, ANExtensionType){ ANExtensionTypeValue, }; -typedef NS_ENUM(NSUInteger, ANVideoEvent){ - ANVideoEventUnknown = 0, - ANVideoEventStart, - ANVideoEventQuartileFirst, - ANVideoEventQuartileMidPoint, - ANVideoEventQuartileThird, - ANVideoEventQuartileComplete, - ANVideoEventZoomRestore, - ANVideoEventZoomFullScreen, - ANVideoEventPlay, - ANVideoEventPause, - ANVideoEventResume, - ANVideoEventRewind, - ANVideoEventMute, - ANVideoEventUnMute, - ANVideoEventStop, - ANVideoEventCloseLinear, - ANVideoEventSkip, - ANVideoEventCreativeView -}; - typedef NS_ENUM(NSUInteger, ANMobileEndpoint) { ANMobileEndpointProduction = 0, ANMobileEndpointClientTesting, diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index f8a488394..25ad314b5 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -43,7 +43,7 @@ NSString *const kANInterstitialAdViewDateLoadedKey = @"kANInterstitialAdViewDateLoadedKey"; NSString *const kANInterstitialAdViewAuctionInfoKey = @"kANInterstitialAdViewAuctionInfoKey"; -@interface ANInterstitialAd () +@interface ANInterstitialAd () @property (nonatomic, readwrite, strong) ANInterstitialAdViewController *controller; @property (nonatomic, readwrite, strong) NSMutableArray *precachedAdObjects; @@ -217,6 +217,8 @@ - (void)displayAdFromViewController:(UIViewController *)controller { self.playbackViewController = [[ANVideoPlayerViewController alloc] initWithVastDataModel:videoAd.vastDataModel]; [self.playbackViewController setPublisherSkipOffset:self.closeDelay]; [self.playbackViewController setOpenClicksInNativeBrowser:self.opensInNativeBrowser]; + [self.playbackViewController setDelegate:self]; + [self.playbackViewController setVideoAd:videoAd]; [controller presentViewController:self.playbackViewController animated:YES @@ -416,4 +418,65 @@ - (void)adShouldUseCustomClose:(BOOL)useCustomClose { self.controller.useCustomClose = useCustomClose; } -@end +#pragma mark - ANVideoAdDelegate + +- (void)adStartedPlayingVideo:(ANVideoAd *)ad{ + if ([self.videoAdDelegate respondsToSelector:@selector(adStartedPlayingVideo:)]) { + [self.videoAdDelegate adStartedPlayingVideo:self]; + } +} + +- (void)adPausedVideo:(ANVideoAd *)ad{ + if ([self.videoAdDelegate respondsToSelector:@selector(adPausedVideo:)]) { + [self.videoAdDelegate adPausedVideo:self]; + } +} + +- (void)adResumedVideo:(ANVideoAd *)ad{ + if ([self.videoAdDelegate respondsToSelector:@selector(adResumedVideo:)]) { + [self.videoAdDelegate adResumedVideo:self]; + } +} + +- (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(ANVideoAd *)ad{ + if ([self.videoAdDelegate respondsToSelector:@selector(adFinishedQuartileEvent:withAd:)]) { + [self.videoAdDelegate adFinishedQuartileEvent:videoEvent withAd:self]; + } +} + +- (void)adSkippedVideo:(ANVideoAd *)ad{ + if ([self.videoAdDelegate respondsToSelector:@selector(adSkippedVideo:)]) { + [self.videoAdDelegate adSkippedVideo:self]; + } +} + +- (void)adMuted:(BOOL)isMuted withAd:(ANVideoAd *)ad{ + if ([self.videoAdDelegate respondsToSelector:@selector(adMuted:withAd:)]) { + [self.videoAdDelegate adMuted:isMuted withAd:self]; + } +} + +- (void)adFinishedPlayingCompleteVideo:(ANVideoAd *)ad{ + if ([self.videoAdDelegate respondsToSelector:@selector(adFinishedPlayingCompleteVideo:)]) { + [self.videoAdDelegate adFinishedPlayingCompleteVideo:self]; + } +} + +- (void)adDidPerformClickThroughOnVideo:(ANVideoAd *)ad{ + if ([self.delegate respondsToSelector:@selector(adWasClicked:)]) { + [self.delegate adWasClicked:self]; + } +} + +- (void)adWillCloseVideo:(ANVideoAd *)ad{ + if ([self.delegate respondsToSelector:@selector(adWillClose:)]) { + [self.delegate adWillClose:self]; + } +} + +- (void)adDidCloseVideo:(ANVideoAd *)ad{ + if ([self.delegate respondsToSelector:@selector(adDidClose:)]) { + [self.delegate adDidClose:self]; + } +} +@end \ No newline at end of file diff --git a/sdk/internal/ANVideoPlayerViewController.h b/sdk/internal/ANVideoPlayerViewController.h index 5e82a3eaa..f081cce44 100644 --- a/sdk/internal/ANVideoPlayerViewController.h +++ b/sdk/internal/ANVideoPlayerViewController.h @@ -17,12 +17,15 @@ #import #import "ANVast.h" +#import "ANAdViewInternalDelegate.h" @interface ANVideoPlayerViewController : UIViewController @property (strong, nonatomic) ANVast *vastDataModel; @property (nonatomic) float publisherSkipOffset; @property (nonatomic) BOOL openClicksInNativeBrowser; +@property (nonatomic, readwrite, weak) id delegate; +@property (nonatomic, strong) ANVideoAd *videoAd; - (instancetype)initWithVastDataModel:(ANVast *)vastDataModel; - (void)play; diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 19a5cd442..216be40d4 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -204,6 +204,7 @@ - (void)updateEventsWithSeconds:(float)seconds { isStarted = YES; ANLogDebug(@"Started"); [self fireTrackingEventWithEvent:ANVideoEventStart]; + [self.delegate adStartedPlayingVideo:self.videoAd]; } else if(currentDuration > 0){ if (currentDuration > previousDuration){ previousDuration = currentDuration; @@ -211,14 +212,17 @@ - (void)updateEventsWithSeconds:(float)seconds { isFirstQuartileDone = YES; ANLogDebug(@"First Quartile"); [self fireTrackingEventWithEvent:ANVideoEventQuartileFirst]; + [self.delegate adFinishedQuartileEvent:ANVideoEventQuartileFirst withAd:self.videoAd]; } else if(currentDuration > quartileDuration*2 && !isMidPointQuartileDone){ isMidPointQuartileDone = YES; ANLogDebug(@"Mid Point"); [self fireTrackingEventWithEvent:ANVideoEventQuartileMidPoint]; + [self.delegate adFinishedQuartileEvent:ANVideoEventQuartileMidPoint withAd:self.videoAd]; } else if(currentDuration > quartileDuration * 3 && !isThirdQuartileDone){ isThirdQuartileDone = YES; ANLogDebug(@"Third Quartile"); [self fireTrackingEventWithEvent:ANVideoEventQuartileThird]; + [self.delegate adFinishedQuartileEvent:ANVideoEventQuartileThird withAd:self.videoAd]; } } @@ -226,6 +230,7 @@ - (void)updateEventsWithSeconds:(float)seconds { isCompleteQuartileDone = YES; ANLogDebug(@"Complete Quartile"); [self fireTrackingEventWithEvent:ANVideoEventQuartileComplete]; + [self.delegate adFinishedPlayingCompleteVideo:self.videoAd]; } } } @@ -235,11 +240,14 @@ - (void)closeInterstitial { if (!isCompleteQuartileDone) { [self.playerView.player pause]; [self fireTrackingEventWithEvent:ANVideoEventSkip]; + [self.delegate adSkippedVideo:self.videoAd]; } + [self.delegate adWillCloseVideo:self.videoAd]; [self removeApplicationNotifications]; [self dismissViewControllerAnimated:YES completion:^{ - [self fireTrackingEventWithEvent:ANVideoEventCloseLinear]; + [self fireTrackingEventWithEvent:ANVideoEventCloseLinear]; + [self.delegate adDidCloseVideo:self.videoAd]; }]; } @@ -249,6 +257,7 @@ - (void)play { if (!isCompleteQuartileDone) { if (isStarted && CMTimeGetSeconds(self.playerView.player.currentTime) > 0) { [self fireTrackingEventWithEvent:ANVideoEventResume]; + [self.delegate adResumedVideo:self.videoAd]; } [self.playerView.player play]; } @@ -258,6 +267,7 @@ - (void)pause { if (!isCompleteQuartileDone) { [self.playerView.player pause]; [self fireTrackingEventWithEvent:ANVideoEventPause]; + [self.delegate adPausedVideo:self.videoAd]; } } @@ -271,6 +281,8 @@ - (void)mutePlayer:(BOOL)value { ANLogDebug(@"Volume Unmuted."); [self fireTrackingEventWithEvent:ANVideoEventUnMute]; } + + [self.delegate adMuted:value withAd:self.videoAd]; } - (void)closeButtonClicked { @@ -341,6 +353,7 @@ - (void)handleSingleTapOnPlayerViewWithGestureRecognizer:(UITapGestureRecognizer } - (void)openClickInBrowserWithURL:(NSURL *)url { + if (!self.openClicksInNativeBrowser) { _browserController = [[ANBrowserViewController alloc] initWithURL:url delegate:self @@ -352,6 +365,8 @@ - (void)openClickInBrowserWithURL:(NSURL *)url { [self pause]; [[UIApplication sharedApplication] openURL:url]; } + + [self.delegate adDidPerformClickThroughOnVideo:self.videoAd]; } - (UIViewController *)rootViewControllerForDisplayingBrowserViewController:(ANBrowserViewController *)controller { From 38934f6d6766b5a758b1ee36de5195a7607441b7 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Tue, 24 Nov 2015 17:14:06 +0530 Subject: [PATCH 32/92] Unit Test Cases for Clicks and Delegates Did the implementation in example/InterstitialUnifiedDemand --- .../project.pbxproj | 244 ++- .../ViewController.m | 70 +- .../DisplayVideoAd/DisplayVideoAd.h | 13 + .../DisplayVideoAd/DisplayVideoAd.m | 165 ++ .../InterstitialUnifiedDemandTests/Info.plist | 24 + .../VideoClicks/CloseVideoTest.h | 13 + .../VideoClicks/CloseVideoTest.m | 110 + .../VideoClicks/PlayerClickTest.h | 13 + .../VideoClicks/PlayerClickTest.m | 94 + .../VideoClicks/VolumeClickTest.h | 13 + .../VideoClicks/VolumeClickTest.m | 100 + .../KIF-master/.gitignore | 25 + .../KIF-master/.travis.yml | 16 + .../Additions/CGGeometry-KIFAdditions.h | 18 + .../Additions/CGGeometry-KIFAdditions.m | 11 + .../KIF-master/Additions/LoadableCategory.h | 18 + .../Additions/NSBundle-KIFAdditions.h | 15 + .../Additions/NSBundle-KIFAdditions.m | 27 + .../Additions/NSError-KIFAdditions.h | 16 + .../Additions/NSError-KIFAdditions.m | 39 + .../Additions/NSException-KIFAdditions.h | 15 + .../Additions/NSException-KIFAdditions.m | 28 + .../Additions/NSFileManager-KIFAdditions.h | 18 + .../Additions/NSFileManager-KIFAdditions.m | 67 + .../UIAccessibilityElement-KIFAdditions.h | 69 + .../UIAccessibilityElement-KIFAdditions.m | 177 ++ .../Additions/UIApplication-KIFAdditions.h | 111 + .../Additions/UIApplication-KIFAdditions.m | 281 +++ .../Additions/UIEvent+KIFAdditions.h | 19 + .../Additions/UIEvent+KIFAdditions.m | 90 + .../Additions/UIScrollView-KIFAdditions.h | 17 + .../Additions/UIScrollView-KIFAdditions.m | 44 + .../Additions/UITableView-KIFAdditions.h | 16 + .../Additions/UITableView-KIFAdditions.m | 87 + .../Additions/UITouch-KIFAdditions.h | 21 + .../Additions/UITouch-KIFAdditions.m | 112 + .../KIF-master/Additions/UIView-Debugging.h | 22 + .../KIF-master/Additions/UIView-Debugging.m | 207 ++ .../Additions/UIView-KIFAdditions.h | 118 ++ .../Additions/UIView-KIFAdditions.m | 901 ++++++++ .../Additions/UIWindow-KIFAdditions.h | 17 + .../Additions/UIWindow-KIFAdditions.m | 15 + .../Additions/XCTestCase-KIFAdditions.h | 14 + .../Additions/XCTestCase-KIFAdditions.m | 94 + .../KIF-master/Classes/IOHIDEvent+KIF.h | 11 + .../KIF-master/Classes/IOHIDEvent+KIF.m | 188 ++ .../KIF-master/Classes/KIF-Prefix.pch | 7 + .../KIF-master/Classes/KIF-XCTestPrefix.pch | 8 + .../KIF-master/Classes/KIF.h | 16 + .../Classes/KIFAccessibilityEnabler.h | 13 + .../Classes/KIFAccessibilityEnabler.m | 115 ++ .../KIF-master/Classes/KIFSystemTestActor.h | 79 + .../KIF-master/Classes/KIFSystemTestActor.m | 115 ++ .../KIF-master/Classes/KIFTestActor.h | 173 ++ .../KIF-master/Classes/KIFTestActor.m | 180 ++ .../KIF-master/Classes/KIFTestCase.h | 48 + .../KIF-master/Classes/KIFTestCase.m | 132 ++ .../Classes/KIFTestStepValidation.h | 51 + .../Classes/KIFTestStepValidation.m | 34 + .../KIF-master/Classes/KIFTypist.h | 20 + .../KIF-master/Classes/KIFTypist.m | 112 + .../Classes/KIFUITestActor-ConditionalTests.h | 68 + .../Classes/KIFUITestActor-ConditionalTests.m | 73 + .../KIF-master/Classes/KIFUITestActor.h | 569 ++++++ .../KIF-master/Classes/KIFUITestActor.m | 1096 ++++++++++ .../KIF-master/Classes/UIAutomationHelper.h | 19 + .../KIF-master/Classes/UIAutomationHelper.m | 151 ++ .../Acceptance Tests copy-Info.plist | 22 + .../Acceptance Tests-Info.plist | 22 + .../Acceptance Tests-Prefix.pch | 9 + .../Acceptance Tests/BasicCalculatorTests.m | 98 + .../en.lproj/InfoPlist.strings | 2 + .../Calculator.xcodeproj/project.pbxproj | 578 ++++++ .../xcschemes/Calculator.xcscheme | 101 + .../Calculator/AboutViewController.h | 14 + .../Calculator/AboutViewController.m | 27 + .../Calculator/AboutViewController.xib | 169 ++ .../Calculator/Calculator/AppDelegate.h | 18 + .../Calculator/Calculator/AppDelegate.m | 73 + .../BasicCalculatorViewController.h | 16 + .../BasicCalculatorViewController.m | 77 + .../Calculator/Calculator-Info.plist | 38 + .../Calculator/Calculator-Prefix.pch | 14 + .../Calculator/Calculator/Default-568h@2x.png | Bin 0 -> 18594 bytes .../Calculator/Calculator/Default.png | Bin 0 -> 6540 bytes .../Calculator/Calculator/Default@2x.png | Bin 0 -> 16107 bytes .../Calculator/HomeViewController.h | 14 + .../Calculator/HomeViewController.m | 39 + .../Calculator/HomeViewController.xib | 263 +++ .../BasicCalculatorViewController.xib | 433 ++++ .../Calculator/en.lproj/InfoPlist.strings | 2 + .../Examples/Calculator/Calculator/main.m | 20 + .../Testable Swift.xcodeproj/project.pbxproj | 556 +++++ .../xcschemes/Testable Swift.xcscheme | 96 + .../Testable Swift/AppDelegate.swift | 15 + .../Base.lproj/LaunchScreen.xib | 41 + .../Testable Swift/Base.lproj/Main.storyboard | 102 + .../AppIcon.appiconset/Contents.json | 38 + .../Testable Swift/Testable Swift/Info.plist | 50 + .../Testable Swift/MasterViewController.swift | 19 + .../Testable SwiftTests/Info.plist | 24 + .../Testable SwiftTests/SimpleObjCTest.m | 24 + .../Testable SwiftTests/SimpleSwiftTest.swift | 29 + .../Testable SwiftTests-Bridging-Header.h | 5 + .../Testable_SwiftTests.swift | 37 + .../Acceptance Tests-Info.plist | 22 + .../Acceptance Tests-Prefix.pch | 8 + .../Acceptance Tests/IntegrationTestCases.m | 39 + .../KIFUITestActor+EXAddition.h | 16 + .../KIFUITestActor+EXAddition.m | 37 + .../en.lproj/InfoPlist.strings | 2 + .../Examples/Testable/Default-568h@2x.png | Bin 0 -> 18594 bytes .../Testable.xcodeproj/project.pbxproj | 491 +++++ .../xcshareddata/xcschemes/Testable.xcscheme | 96 + .../contents.xcworkspacedata | 10 + .../Testable/Testable/RootViewController.h | 18 + .../Testable/Testable/RootViewController.m | 55 + .../Testable/Testable/Testable-Info.plist | 38 + .../Testable/Testable/Testable-Prefix.pch | 14 + .../Testable/Testable/TestableAppDelegate.h | 19 + .../Testable/Testable/TestableAppDelegate.m | 41 + .../Testable/en.lproj/InfoPlist.strings | 2 + .../Testable/Testable/en.lproj/MainWindow.xib | 542 +++++ .../Testable/en.lproj/RootViewController.xib | 384 ++++ .../Examples/Testable/Testable/main.m | 19 + .../Images/Add Category Linker Flags.png | Bin 0 -> 429491 bytes .../Images/Add Header Search Paths.png | Bin 0 -> 106453 bytes .../Images/Add KIF Preprocessor Macro.png | Bin 0 -> 109459 bytes .../Images/Add Library Sheet.png | Bin 0 -> 405262 bytes .../Documentation/Images/Add Library.png | Bin 0 -> 338802 bytes .../Images/Added KIF to Project.png | Bin 0 -> 326638 bytes .../Documentation/Images/Create Workspace.png | Bin 0 -> 137294 bytes .../Images/Duplicate Target Confirmation.png | Bin 0 -> 59057 bytes .../Documentation/Images/Duplicate Target.png | Bin 0 -> 163642 bytes .../Documentation/Images/Rename Product.png | Bin 0 -> 163474 bytes .../Documentation/Images/Rename Target.png | Bin 0 -> 171438 bytes .../Documentation/Images/Simple App.png | Bin 0 -> 313691 bytes .../Documentation/Test Action Composition.md | 125 ++ .../KIFUITestActor-IdentifierTests.h | 95 + .../KIFUITestActor-IdentifierTests.m | 224 ++ .../KIF Tests/AccessibilityIdentifierTests.m | 127 ++ .../KIF-master/KIF Tests/BackgroundTests.m | 31 + .../KIF Tests/CascadingFailureTests.m | 46 + .../KIF Tests/CollectionViewTests.m | 63 + .../KIF-master/KIF Tests/CompositionTests.m | 86 + .../KIF-master/KIF Tests/ExistTests.m | 33 + .../KIF-master/KIF Tests/GestureTests.m | 206 ++ .../KIF-master/KIF Tests/KIF Tests-Info.plist | 22 + .../KIF-master/KIF Tests/KIF Tests-Prefix.pch | 8 + .../KIF Tests/KIF XCTests-Prefix.pch | 9 + .../KIF-master/KIF Tests/LandscapeTests.m | 40 + .../KIF-master/KIF Tests/LongPressTests.m | 45 + .../KIF-master/KIF Tests/ModalViewTests.m | 63 + .../KIF-master/KIF Tests/MultiFingerTests.m | 149 ++ .../KIF-master/KIF Tests/PickerTests.m | 81 + .../KIF-master/KIF Tests/ScrollViewTests.m | 40 + .../KIF-master/KIF Tests/SearchFieldTests.m | 35 + .../KIF Tests/SpecificControlTests.m | 60 + .../KIF-master/KIF Tests/SystemAlertTests.m | 40 + .../KIF-master/KIF Tests/SystemTests.m | 106 + .../KIF-master/KIF Tests/TableViewTests.m | 174 ++ .../KIF-master/KIF Tests/TappingTests.m | 103 + .../KIF-master/KIF Tests/TypingTests.m | 105 + .../KIF Tests/WaitForAbscenceTests.m | 41 + .../KIF Tests/WaitForAnimationTests.m | 31 + .../KIF Tests/WaitForTappableViewTests.m | 43 + .../KIF-master/KIF Tests/WaitForViewTests.m | 31 + .../KIF-master/KIF Tests/WebViewTests.m | 43 + .../KIF Tests/en.lproj/InfoPlist.strings | 2 + .../KIF-master/KIF XCTests-Prefix.gcda | Bin 0 -> 336 bytes .../KIF-master/KIF.podspec | 28 + .../KIF-master/KIF.xcodeproj/project.pbxproj | 1627 +++++++++++++++ .../xcschemes/KIF Documentation.xcscheme | 71 + .../xcshareddata/xcschemes/KIF.xcscheme | 99 + .../xcschemes/KIFFramework.xcscheme | 80 + .../KIF-master/KIFFramework/Info.plist | 26 + .../KIF-master/KIFFramework/KIF.h | 42 + .../KIF-master/LICENSE | 15 + .../KIF-master/README.md | 316 +++ .../Test Host/AnimationViewController.m | 25 + .../KIF-master/Test Host/AppDelegate.m | 22 + .../Test Host/BackgroundViewController.m | 33 + .../Test Host/CollectionViewController.m | 58 + .../KIF-master/Test Host/Default-568h@2x.png | Bin 0 -> 18594 bytes .../KIF-master/Test Host/Default.png | Bin 0 -> 6540 bytes .../KIF-master/Test Host/Default@2x.png | Bin 0 -> 16107 bytes .../Test Host/GestureViewController.m | 59 + .../KIF-master/Test Host/PickerController.m | 141 ++ .../Test Host/ScrollViewController.m | 68 + .../Test Host/ShowHideViewController.m | 52 + .../Test Host/SystemAlertViewController.m | 47 + .../Test Host/TableViewController.m | 55 + .../KIF-master/Test Host/TapViewController.m | 103 + .../KIF-master/Test Host/Test Host-Info.plist | 42 + .../KIF-master/Test Host/Test Host-Prefix.pch | 14 + .../Test Host/TestSuiteViewController.m | 59 + .../KIF-master/Test Host/WebViewController.m | 23 + .../Test Host/en.lproj/InfoPlist.strings | 2 + .../en.lproj/MainStoryboard.storyboard | 1804 +++++++++++++++++ .../KIF-master/Test Host/index.html | 14 + .../KIF-master/Test Host/main.m | 16 + .../KIF-master/Test Host/page2.html | 6 + sdk/internal/ANCircularAnimationView.m | 3 + sdk/internal/ANVideoPlayerViewController.m | 2 + sdk/internal/ANVolumeButtonView.m | 1 + 205 files changed, 19062 insertions(+), 18 deletions(-) create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/Info.plist create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/.gitignore create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/.travis.yml create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/CGGeometry-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/CGGeometry-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/LoadableCategory.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/NSBundle-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/NSBundle-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/NSError-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/NSError-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/NSException-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/NSException-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/NSFileManager-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/NSFileManager-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIAccessibilityElement-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIAccessibilityElement-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIApplication-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIApplication-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIEvent+KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIEvent+KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIScrollView-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIScrollView-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UITableView-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UITableView-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UITouch-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UITouch-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-Debugging.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-Debugging.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIWindow-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/UIWindow-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/XCTestCase-KIFAdditions.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Additions/XCTestCase-KIFAdditions.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/IOHIDEvent+KIF.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/IOHIDEvent+KIF.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF-Prefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF-XCTestPrefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFAccessibilityEnabler.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFAccessibilityEnabler.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFSystemTestActor.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFSystemTestActor.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestActor.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestActor.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestCase.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestCase.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestStepValidation.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestStepValidation.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTypist.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTypist.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor-ConditionalTests.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor-ConditionalTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/UIAutomationHelper.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Classes/UIAutomationHelper.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests copy-Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/Acceptance Tests-Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/Acceptance Tests-Prefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/BasicCalculatorTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/en.lproj/InfoPlist.strings create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator.xcodeproj/project.pbxproj create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator.xcodeproj/xcshareddata/xcschemes/Calculator.xcscheme create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.xib create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AppDelegate.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AppDelegate.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/BasicCalculatorViewController.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/BasicCalculatorViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Calculator-Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Calculator-Prefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Default-568h@2x.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Default.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Default@2x.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.xib create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/en.lproj/BasicCalculatorViewController.xib create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/en.lproj/InfoPlist.strings create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/main.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift.xcodeproj/project.pbxproj create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift.xcodeproj/xcshareddata/xcschemes/Testable Swift.xcscheme create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/AppDelegate.swift create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Base.lproj/LaunchScreen.xib create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Base.lproj/Main.storyboard create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/MasterViewController.swift create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/SimpleObjCTest.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/SimpleSwiftTest.swift create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Testable SwiftTests-Bridging-Header.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Testable_SwiftTests.swift create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/Acceptance Tests-Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/Acceptance Tests-Prefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/IntegrationTestCases.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/KIFUITestActor+EXAddition.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/KIFUITestActor+EXAddition.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/en.lproj/InfoPlist.strings create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Default-568h@2x.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcodeproj/project.pbxproj create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcodeproj/xcshareddata/xcschemes/Testable.xcscheme create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcworkspace/contents.xcworkspacedata create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/RootViewController.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/RootViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/Testable-Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/Testable-Prefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/TestableAppDelegate.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/TestableAppDelegate.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/InfoPlist.strings create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/MainWindow.xib create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/RootViewController.xib create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/main.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add Category Linker Flags.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add Header Search Paths.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add KIF Preprocessor Macro.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add Library Sheet.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add Library.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Added KIF to Project.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Create Workspace.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Duplicate Target Confirmation.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Duplicate Target.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Rename Product.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Rename Target.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Simple App.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Documentation/Test Action Composition.md create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/IdentifierTests/KIFUITestActor-IdentifierTests.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/IdentifierTests/KIFUITestActor-IdentifierTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/AccessibilityIdentifierTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/BackgroundTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CascadingFailureTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CollectionViewTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CompositionTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ExistTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/GestureTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF Tests-Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF Tests-Prefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF XCTests-Prefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/LandscapeTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/LongPressTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ModalViewTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/MultiFingerTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/PickerTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ScrollViewTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SearchFieldTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SpecificControlTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SystemAlertTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SystemTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TableViewTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TappingTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TypingTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForAbscenceTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForAnimationTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForTappableViewTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForViewTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WebViewTests.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/en.lproj/InfoPlist.strings create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF XCTests-Prefix.gcda create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF.podspec create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/project.pbxproj create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIF Documentation.xcscheme create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIF.xcscheme create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIFFramework.xcscheme create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIFFramework/Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/KIFFramework/KIF.h create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/LICENSE create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/README.md create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/AnimationViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/AppDelegate.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/BackgroundViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/CollectionViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/Default-568h@2x.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/Default.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/Default@2x.png create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/GestureViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/PickerController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/ScrollViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/ShowHideViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/SystemAlertViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/TableViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/TapViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/Test Host-Info.plist create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/Test Host-Prefix.pch create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/TestSuiteViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/WebViewController.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/en.lproj/InfoPlist.strings create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/en.lproj/MainStoryboard.storyboard create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/index.html create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/main.m create mode 100755 examples/InterstitialUnifiedDemand/KIF-master/Test Host/page2.html diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj index 51a7b440f..0eb85505e 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj @@ -7,6 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 496007961BFEDA0D00B50A1F /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 496007801BFED7AB00B50A1F /* libKIF.a */; }; + 4960079B1BFEDAF400B50A1F /* DisplayVideoAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 4960079A1BFEDAF400B50A1F /* DisplayVideoAd.m */; settings = {ASSET_TAGS = (); }; }; + 496007A01BFF2A6E00B50A1F /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A0D45291BF1615D0097D925 /* ANSDKResources.bundle */; }; 8A00B20C1BF1634000818A2A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B2011BF1633F00818A2A /* AppDelegate.m */; }; 8A00B20D1BF1634000818A2A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2021BF1633F00818A2A /* Assets.xcassets */; }; 8A00B20E1BF1634000818A2A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2031BF1633F00818A2A /* LaunchScreen.storyboard */; }; @@ -17,9 +20,48 @@ 8A00B2131BF1634000818A2A /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B20B1BF1634000818A2A /* ViewController.m */; }; 8A0D45481BF161870097D925 /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A0D45271BF1615D0097D925 /* libANSDK.a */; }; 8A0D45491BF1618D0097D925 /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A0D45291BF1615D0097D925 /* ANSDKResources.bundle */; }; + EFAA6F9E1C04270700C3C83B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFAA6F9D1C04270700C3C83B /* CoreGraphics.framework */; }; + EFDD763B1C047BED0073ACC4 /* VolumeClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763A1C047BED0073ACC4 /* VolumeClickTest.m */; settings = {ASSET_TAGS = (); }; }; + EFDD763E1C047D9B0073ACC4 /* PlayerClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763D1C047D9B0073ACC4 /* PlayerClickTest.m */; settings = {ASSET_TAGS = (); }; }; + EFDD76411C047E7A0073ACC4 /* CloseVideoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD76401C047E7A0073ACC4 /* CloseVideoTest.m */; settings = {ASSET_TAGS = (); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 4960077F1BFED7AB00B50A1F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 496007661BFED7AB00B50A1F /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EABD46AA1857A0C700A5F081; + remoteInfo = KIF; + }; + 496007811BFED7AB00B50A1F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 496007661BFED7AB00B50A1F /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EB60ECC1177F8C83005A041A; + remoteInfo = "Test Host"; + }; + 496007831BFED7AB00B50A1F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 496007661BFED7AB00B50A1F /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EABD46CD1857A0F300A5F081; + remoteInfo = "KIF Tests"; + }; + 496007851BFED7AB00B50A1F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 496007661BFED7AB00B50A1F /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9CC9673B1AD4B1B600576D13; + remoteInfo = KIFFramework; + }; + 496007911BFED9B100B50A1F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A87BED91BD941E900281EA9 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8A87BEE01BD941E900281EA9; + remoteInfo = InterstitialUnifiedDemand; + }; 8A0D45261BF1615D0097D925 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; @@ -142,6 +184,11 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 496007661BFED7AB00B50A1F /* KIF.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = KIF.xcodeproj; path = "KIF-master/KIF.xcodeproj"; sourceTree = ""; }; + 4960078C1BFED9B100B50A1F /* InterstitialUnifiedDemandTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = InterstitialUnifiedDemandTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 496007901BFED9B100B50A1F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 496007991BFEDAF400B50A1F /* DisplayVideoAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DisplayVideoAd.h; path = DisplayVideoAd/DisplayVideoAd.h; sourceTree = ""; }; + 4960079A1BFEDAF400B50A1F /* DisplayVideoAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DisplayVideoAd.m; path = DisplayVideoAd/DisplayVideoAd.m; sourceTree = ""; }; 8A00B2001BF1633F00818A2A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 8A00B2011BF1633F00818A2A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 8A00B2021BF1633F00818A2A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -154,9 +201,25 @@ 8A00B20B1BF1634000818A2A /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ANSDK.xcodeproj; path = ../../BinaryProjects/ANSDK.xcodeproj; sourceTree = ""; }; 8A87BEE11BD941E900281EA9 /* InterstitialUnifiedDemand.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InterstitialUnifiedDemand.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EFAA6F9D1C04270700C3C83B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + EFDD76391C047BED0073ACC4 /* VolumeClickTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VolumeClickTest.h; path = VideoClicks/VolumeClickTest.h; sourceTree = ""; }; + EFDD763A1C047BED0073ACC4 /* VolumeClickTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VolumeClickTest.m; path = VideoClicks/VolumeClickTest.m; sourceTree = ""; }; + EFDD763C1C047D9B0073ACC4 /* PlayerClickTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlayerClickTest.h; path = VideoClicks/PlayerClickTest.h; sourceTree = ""; }; + EFDD763D1C047D9B0073ACC4 /* PlayerClickTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PlayerClickTest.m; path = VideoClicks/PlayerClickTest.m; sourceTree = ""; }; + EFDD763F1C047E7A0073ACC4 /* CloseVideoTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CloseVideoTest.h; path = VideoClicks/CloseVideoTest.h; sourceTree = ""; }; + EFDD76401C047E7A0073ACC4 /* CloseVideoTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CloseVideoTest.m; path = VideoClicks/CloseVideoTest.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 496007891BFED9B100B50A1F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EFAA6F9E1C04270700C3C83B /* CoreGraphics.framework in Frameworks */, + 496007961BFEDA0D00B50A1F /* libKIF.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8A87BEDE1BD941E900281EA9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -168,6 +231,36 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 496007671BFED7AB00B50A1F /* Products */ = { + isa = PBXGroup; + children = ( + 496007801BFED7AB00B50A1F /* libKIF.a */, + 496007821BFED7AB00B50A1F /* Test Host.app */, + 496007841BFED7AB00B50A1F /* KIF Tests - XCTest.xctest */, + 496007861BFED7AB00B50A1F /* KIF.framework */, + ); + name = Products; + sourceTree = ""; + }; + 4960078D1BFED9B100B50A1F /* InterstitialUnifiedDemandTests */ = { + isa = PBXGroup; + children = ( + 496007901BFED9B100B50A1F /* Info.plist */, + EFDD76351C0478BC0073ACC4 /* VideoClicks */, + 4960079C1BFEDAFE00B50A1F /* DisplayVideoAd */, + ); + path = InterstitialUnifiedDemandTests; + sourceTree = ""; + }; + 4960079C1BFEDAFE00B50A1F /* DisplayVideoAd */ = { + isa = PBXGroup; + children = ( + 496007991BFEDAF400B50A1F /* DisplayVideoAd.h */, + 4960079A1BFEDAF400B50A1F /* DisplayVideoAd.m */, + ); + name = DisplayVideoAd; + sourceTree = ""; + }; 8A00B1FF1BF1633F00818A2A /* InterstitialUnifiedDemand */ = { isa = PBXGroup; children = ( @@ -212,8 +305,11 @@ 8A87BED81BD941E900281EA9 = { isa = PBXGroup; children = ( + EFAA6F9D1C04270700C3C83B /* CoreGraphics.framework */, + 496007661BFED7AB00B50A1F /* KIF.xcodeproj */, 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */, 8A00B1FF1BF1633F00818A2A /* InterstitialUnifiedDemand */, + 4960078D1BFED9B100B50A1F /* InterstitialUnifiedDemandTests */, 8A87BEE21BD941E900281EA9 /* Products */, ); sourceTree = ""; @@ -222,13 +318,45 @@ isa = PBXGroup; children = ( 8A87BEE11BD941E900281EA9 /* InterstitialUnifiedDemand.app */, + 4960078C1BFED9B100B50A1F /* InterstitialUnifiedDemandTests.xctest */, ); name = Products; sourceTree = ""; }; + EFDD76351C0478BC0073ACC4 /* VideoClicks */ = { + isa = PBXGroup; + children = ( + EFDD76391C047BED0073ACC4 /* VolumeClickTest.h */, + EFDD763A1C047BED0073ACC4 /* VolumeClickTest.m */, + EFDD763C1C047D9B0073ACC4 /* PlayerClickTest.h */, + EFDD763D1C047D9B0073ACC4 /* PlayerClickTest.m */, + EFDD763F1C047E7A0073ACC4 /* CloseVideoTest.h */, + EFDD76401C047E7A0073ACC4 /* CloseVideoTest.m */, + ); + name = VideoClicks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 4960078B1BFED9B100B50A1F /* InterstitialUnifiedDemandTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 496007931BFED9B100B50A1F /* Build configuration list for PBXNativeTarget "InterstitialUnifiedDemandTests" */; + buildPhases = ( + 496007881BFED9B100B50A1F /* Sources */, + 496007891BFED9B100B50A1F /* Frameworks */, + 4960078A1BFED9B100B50A1F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 496007921BFED9B100B50A1F /* PBXTargetDependency */, + ); + name = InterstitialUnifiedDemandTests; + productName = InterstitialUnifiedDemandTests; + productReference = 4960078C1BFED9B100B50A1F /* InterstitialUnifiedDemandTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 8A87BEE01BD941E900281EA9 /* InterstitialUnifiedDemand */ = { isa = PBXNativeTarget; buildConfigurationList = 8A87BEF81BD941E900281EA9 /* Build configuration list for PBXNativeTarget "InterstitialUnifiedDemand" */; @@ -255,9 +383,14 @@ LastUpgradeCheck = 0700; ORGANIZATIONNAME = AppNexus; TargetAttributes = { + 4960078B1BFED9B100B50A1F = { + CreatedOnToolsVersion = 7.0; + DevelopmentTeam = TBFU6QDZMS; + TestTargetID = 8A87BEE01BD941E900281EA9; + }; 8A87BEE01BD941E900281EA9 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = HR94J6TSB3; + DevelopmentTeam = TBFU6QDZMS; }; }; }; @@ -277,15 +410,48 @@ ProductGroup = 8A0D45131BF1615D0097D925 /* Products */; ProjectRef = 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */; }, + { + ProductGroup = 496007671BFED7AB00B50A1F /* Products */; + ProjectRef = 496007661BFED7AB00B50A1F /* KIF.xcodeproj */; + }, ); projectRoot = ""; targets = ( 8A87BEE01BD941E900281EA9 /* InterstitialUnifiedDemand */, + 4960078B1BFED9B100B50A1F /* InterstitialUnifiedDemandTests */, ); }; /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 496007801BFED7AB00B50A1F /* libKIF.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libKIF.a; + remoteRef = 4960077F1BFED7AB00B50A1F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 496007821BFED7AB00B50A1F /* Test Host.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "Test Host.app"; + remoteRef = 496007811BFED7AB00B50A1F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 496007841BFED7AB00B50A1F /* KIF Tests - XCTest.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "KIF Tests - XCTest.xctest"; + remoteRef = 496007831BFED7AB00B50A1F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 496007861BFED7AB00B50A1F /* KIF.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = KIF.framework; + remoteRef = 496007851BFED7AB00B50A1F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 8A0D45271BF1615D0097D925 /* libANSDK.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -408,6 +574,14 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ + 4960078A1BFED9B100B50A1F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 496007A01BFF2A6E00B50A1F /* ANSDKResources.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8A87BEDF1BD941E900281EA9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -424,6 +598,17 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 496007881BFED9B100B50A1F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EFDD76411C047E7A0073ACC4 /* CloseVideoTest.m in Sources */, + EFDD763B1C047BED0073ACC4 /* VolumeClickTest.m in Sources */, + 4960079B1BFEDAF400B50A1F /* DisplayVideoAd.m in Sources */, + EFDD763E1C047D9B0073ACC4 /* PlayerClickTest.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8A87BEDD1BD941E900281EA9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -436,6 +621,14 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 496007921BFED9B100B50A1F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8A87BEE01BD941E900281EA9 /* InterstitialUnifiedDemand */; + targetProxy = 496007911BFED9B100B50A1F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ 8A00B2031BF1633F00818A2A /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; @@ -456,6 +649,42 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 496007941BFED9B100B50A1F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../sdk"; + INFOPLIST_FILE = InterstitialUnifiedDemandTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-framework", + IOKit, + ); + PRODUCT_BUNDLE_IDENTIFIER = com.appNexus.InterstitialUnifiedDemandTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/InterstitialUnifiedDemand.app/InterstitialUnifiedDemand"; + }; + name = Debug; + }; + 496007951BFED9B100B50A1F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../../sdk"; + INFOPLIST_FILE = InterstitialUnifiedDemandTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-framework", + IOKit, + ); + PRODUCT_BUNDLE_IDENTIFIER = com.appNexus.InterstitialUnifiedDemandTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/InterstitialUnifiedDemand.app/InterstitialUnifiedDemand"; + }; + name = Release; + }; 8A87BEF61BD941E900281EA9 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -549,7 +778,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = corp.appnexus.InterstitialUnifiedDemand; + PRODUCT_BUNDLE_IDENTIFIER = com.appNexus.InterstitialUnifiedDemand; PRODUCT_NAME = InterstitialUnifiedDemand; PROVISIONING_PROFILE = ""; }; @@ -566,7 +795,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = corp.appnexus.InterstitialUnifiedDemand; + PRODUCT_BUNDLE_IDENTIFIER = com.appNexus.InterstitialUnifiedDemand; PRODUCT_NAME = InterstitialUnifiedDemand; PROVISIONING_PROFILE = ""; }; @@ -575,6 +804,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 496007931BFED9B100B50A1F /* Build configuration list for PBXNativeTarget "InterstitialUnifiedDemandTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 496007941BFED9B100B50A1F /* Debug */, + 496007951BFED9B100B50A1F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 8A87BEDC1BD941E900281EA9 /* Build configuration list for PBXProject "InterstitialUnifiedDemand" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m index 4209ac20e..20426e4fc 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m @@ -20,16 +20,17 @@ @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; - [ANLogManager setANLogLevel:ANLogLevelAll]; + [ANLogManager setANLogLevel:ANLogLevelOff]; // VAST Placement self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"5778861"]; // HTML Placement // self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"2140061"]; self.interstitialAd.closeDelay = 5.0; - self.interstitialAd.opensInNativeBrowser = NO; + self.interstitialAd.opensInNativeBrowser = YES; self.interstitialAd.shouldServePublicServiceAnnouncements = YES; self.interstitialAd.delegate = self; - [self.interstitialAd loadAd]; + self.interstitialAd.videoAdDelegate = self; + self.view.accessibilityLabel = @"interstitial"; } - (void)adDidReceiveAd:(id)ad { @@ -49,28 +50,67 @@ - (void)viewDidAppear:(BOOL)animated { NSLog(@"view did appear"); } -- (void)videoAdPaused:(ANInterstitialAd *)ad { - +- (BOOL)prefersStatusBarHidden { + return YES; } -- (void)videoAdStarted:(ANInterstitialAd *)ad { - +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait; } -- (void)videoAdFinishedPlaying:(ANInterstitialAd *)ad { - +#pragma mark - VideoDelegates + +- (void)adStartedPlayingVideo:(id)ad{ + NSLog(@"App: video started playing."); } -- (void)videoAdResumed:(ANInterstitialAd *)ad { - +- (void)adPausedVideo:(id)ad{ + NSLog(@"App: video paused."); } -- (BOOL)prefersStatusBarHidden { - return YES; +- (void)adResumedVideo:(id)ad{ + NSLog(@"App: video Resumed."); } -- (UIInterfaceOrientationMask)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait; +- (void)adWasClicked:(id)ad{ + NSLog(@"App: video was clicked."); +} + +- (void)adWillClose:(id)ad{ + NSLog(@"App: video will close."); +} + +- (void)adDidClose:(id)ad{ + NSLog(@"App: video did close."); +} + +- (void)adMuted:(BOOL)isMuted withAd:(id)ad{ + NSLog(@"App: video muted: %i", isMuted); +} + +- (void)adSkippedVideo:(id)ad{ + NSLog(@"App: video Skipped."); +} + +- (void)adFinishedPlayingCompleteVideo:(id)ad{ + NSLog(@"App: video finished playing."); +} + +- (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ + switch (videoEvent) { + case ANVideoEventQuartileFirst: + NSLog(@"App: First Quartile."); + break; + case ANVideoEventQuartileMidPoint: + NSLog(@"App: MidPoint Quartile."); + break; + case ANVideoEventQuartileThird: + NSLog(@"App: Third Quartile."); + break; + default: + NSLog(@"App: Event not handled."); + break; + } } @end \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.h new file mode 100644 index 000000000..91ed6a7f9 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.h @@ -0,0 +1,13 @@ +// +// DisplayVideoAd.h +// InterstitialUnifiedDemand +// +// Created by Deepak.Badiger on 20/11/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import + +@interface DisplayVideoAd : KIFTestCase + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m new file mode 100644 index 000000000..3162d0fb8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m @@ -0,0 +1,165 @@ +// +// DisplayVideoAd.m +// InterstitialUnifiedDemand +// +// Created by Deepak.Badiger on 20/11/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] +#define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] + +#import "DisplayVideoAd.h" +#import +#import "ANInterstitialAd.h" + +@interface DisplayVideoAd(){ + ANInterstitialAd *interstitialAdView; +} + +@property (nonatomic, strong) XCTestExpectation *expectation; +@property (nonatomic) int tapsRequired; + +@end + +@implementation DisplayVideoAd + +- (void) test1DisplayAd{ + + self.tapsRequired = 2; + + UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + + for (UIView *subView in view.subviews) { + if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { + break; + } + } + + int breakCounter = 10; + + while (interstitial && breakCounter--) { + [self performClickOnInterstitial]; + [tester waitForTimeInterval:2.0]; + } + + [self setupDelegatesForVideo]; + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + if (!player) { + NSLog(@"Test: Not able to load the video."); + } + } + + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + [self waitForExpectationsWithTimeout:100.0 handler:^(NSError * _Nullable error) { + if (error) { + NSLog(@"%@", error.description); + } + }]; + +} + +- (void) test3ExistenceOfCloseCountDownTimerAtTopRight{ + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + UIView *circularView = [tester waitForViewWithAccessibilityLabel:@"close button"]; + CGRect superViewFrame = circularView.superview.frame; + CGRect testFrame = CGRectMake(superViewFrame.size.width - 75, superViewFrame.origin.y, 50, 75); + XCTAssertTrue(CGRectContainsPoint(testFrame, circularView.frame.origin)); + } +} + +- (void) test2ExistenceOfVolumeView{ + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + [tester waitForViewWithAccessibilityLabel:@"volume button"]; + } +} + +- (void) test4ExistenceOfVolumeButtonAtBottomRight{ + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + UIView *volumeView = [tester waitForViewWithAccessibilityLabel:@"volume button"]; + CGRect superViewFrame = volumeView.superview.superview.frame; + CGRect testFrame = CGRectMake(superViewFrame.size.width - 75, superViewFrame.size.height-75, 50, 50); + + CGPoint point = [volumeView convertPoint:volumeView.superview.center toView:volumeView.superview]; + + XCTAssertTrue(CGRectContainsPoint(testFrame, point)); + } +} + +-(void) setupDelegatesForVideo{ + + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + if (controller) { + SEL aSelector = NSSelectorFromString(@"interstitialAd"); + interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.delegate = self; + interstitialAdView.videoAdDelegate = self; + + } +} + +- (void) performClickOnInterstitial{ + if (interstitial) { + [tester tapViewWithAccessibilityLabel:@"interstitial"]; + } +} + +- (void) performClickOnPlayer{ + [tester waitForViewWithAccessibilityLabel:@"countdown label"]; + [tester tapViewWithAccessibilityLabel:@"player"]; +} + +- (void)adDidReceiveAd:(id)ad{ + self.tapsRequired--; + NSLog(@"Test: ad received ad."); +} + +- (void)adStartedPlayingVideo:(id)ad{ + NSLog(@"Test: video ad started playing video."); + XCTAssertTrue(YES, @"Test: Ad Started Playing Delegate Fired"); +} + +- (void)adPausedVideo:(id)ad{ + NSLog(@"Test: video ad paused video."); + XCTAssertTrue(YES, @"Test: Ad Started Paused video."); +} + +- (void)adMuted:(BOOL)isMuted withAd:(id)ad{ + NSLog(@"Test: Ad Muted: %i", isMuted); + XCTAssertTrue(YES, @"Test: Ad %@", isMuted?@"Muted":@"Unmuted"); +} + +- (void)adSkippedVideo:(id)ad{ + NSLog(@"Test: video ad skipped video."); + XCTAssertTrue(YES, @"Test: Ad skipped video delegate fired."); +} + +- (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ + switch (videoEvent) { + case ANVideoEventQuartileFirst: + XCTAssertTrue(YES, @"Test: Video Quartile Event First"); + break; + case ANVideoEventQuartileMidPoint: + XCTAssertTrue(YES, @"Test: Video Quartile Event Midpoint"); + break; + case ANVideoEventQuartileThird: + XCTAssertTrue(YES, @"Test: Video Quartile Event Third"); + break; + case ANVideoEventCreativeView: + XCTAssertTrue(YES, @"Test: Video Quartile Event Creative View"); + break; + default: + break; + } +} + +- (void)adFinishedPlayingCompleteVideo:(id)ad{ + NSLog(@"Test: Video finished playing complete video."); + [self.expectation fulfill]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/Info.plist b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/Info.plist new file mode 100644 index 000000000..ba72822e8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.h new file mode 100644 index 000000000..4da4527d4 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.h @@ -0,0 +1,13 @@ +// +// CloseVideoTest.h +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/24/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import + +@interface CloseVideoTest : KIFTestCase + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m new file mode 100644 index 000000000..ba54c80d6 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m @@ -0,0 +1,110 @@ +// +// CloseVideoTest.m +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/24/15. +// Copyright © 2015 AppNexus. All rights reserved. +// +#define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] +#define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] + +#import "CloseVideoTest.h" +#import +#import "ANInterstitialAd.h" + +@interface CloseVideoTest(){ + ANInterstitialAd *interstitialAdView; +} + +@property (nonatomic, strong) XCTestExpectation *expectation; +@property (nonatomic) int tapsRequired; + +@end + +@implementation CloseVideoTest + +- (void)setUp{ + UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + + for (UIView *subView in view.subviews) { + if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { + break; + } + } + + int breakCounter = 10; + + while (interstitial && breakCounter--) { + [self performClickOnInterstitial]; + [tester waitForTimeInterval:2.0]; + } + + [self setupDelegatesForVideo]; + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + if (!player) { + NSLog(@"Test: Not able to load the video."); + } + } +} + +- (void) test1ClickOnClose{ + + [tester waitForViewWithAccessibilityLabel:@"close button"]; + [tester waitForTimeInterval:10.0]; + [tester tapViewWithAccessibilityLabel:@"close button"]; + + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { + if (error) { + NSLog(@"%@", error.description); + } + }]; + +} + +-(void) setupDelegatesForVideo{ + + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + if (controller) { + SEL aSelector = NSSelectorFromString(@"interstitialAd"); + interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.delegate = self; + interstitialAdView.videoAdDelegate = self; + } +} + +- (void) performClickOnInterstitial{ + if (interstitial) { + [tester tapViewWithAccessibilityLabel:@"interstitial"]; + } +} + +- (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ + switch (videoEvent) { + case ANVideoEventCloseLinear: + XCTAssertTrue(YES, @"Test: Video Quartile Event Close"); + [self.expectation fulfill]; + break; + default: + break; + } +} + +- (void)adSkippedVideo:(id)ad{ + NSLog(@"Test: Ad Skipped Video."); + XCTAssertTrue(YES, @"Test: adSkippedVideo delegate fired."); +} + +- (void)adWillClose:(id)ad{ + NSLog(@"Test: Ad will close now."); + XCTAssertTrue(YES, @"Test: adWillClose delegate fired."); +} + +- (void)adDidClose:(id)ad{ + NSLog(@"Test: Ad Did close now."); + XCTAssertTrue(YES, @"Test: adDidClose delegate fired."); + [self.expectation fulfill]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.h new file mode 100644 index 000000000..c70c67a2f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.h @@ -0,0 +1,13 @@ +// +// PlayerClickTest.h +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/24/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import + +@interface PlayerClickTest : KIFTestCase + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m new file mode 100644 index 000000000..b49fcabf4 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m @@ -0,0 +1,94 @@ +// +// PlayerClickTest.m +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/24/15. +// Copyright © 2015 AppNexus. All rights reserved. +// +#define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] +#define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] + +#import "PlayerClickTest.h" +#import +#import "ANInterstitialAd.h" + +@interface PlayerClickTest(){ + ANInterstitialAd *interstitialAdView; +} + +@property (nonatomic, strong) XCTestExpectation *expectation; +@property (nonatomic) int tapsRequired; + +@end + +@implementation PlayerClickTest + +- (void)setUp{ + UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + + for (UIView *subView in view.subviews) { + if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { + break; + } + } + + int breakCounter = 10; + + while (interstitial && breakCounter--) { + [self performClickOnInterstitial]; + [tester waitForTimeInterval:2.0]; + } + + [self setupDelegatesForVideo]; + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + if (!player) { + NSLog(@"Test: Not able to load the video."); + } + } +} + +- (void) test1ClickOnPlayer{ + + [tester waitForViewWithAccessibilityLabel:@"close button"]; + [tester tapViewWithAccessibilityLabel:@"player"]; + + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { + if (error) { + NSLog(@"%@", error.description); + } + }]; + +} + +-(void) setupDelegatesForVideo{ + + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + if (controller) { + SEL aSelector = NSSelectorFromString(@"interstitialAd"); + interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.delegate = self; + interstitialAdView.videoAdDelegate = self; + } +} + +- (void) performClickOnInterstitial{ + if (interstitial) { + [tester tapViewWithAccessibilityLabel:@"interstitial"]; + } +} + +-(void)adPausedVideo:(id)ad{ + NSLog(@"Test: Ad was paused."); + XCTAssertTrue(YES, @"Test: adPausedVideo delegate fired."); +} + +- (void)adWasClicked:(id)ad{ + NSLog(@"Test: Ad was clicked."); + XCTAssertTrue(YES, @"Test: adWasClicked delegate fired."); + [self.expectation fulfill]; +} + + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.h new file mode 100644 index 000000000..937dd4199 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.h @@ -0,0 +1,13 @@ +// +// VolumeClickTest.h +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/24/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import + +@interface VolumeClickTest : KIFTestCase + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m new file mode 100644 index 000000000..ff549874f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m @@ -0,0 +1,100 @@ +// +// VolumeClickTest.m +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/24/15. +// Copyright © 2015 AppNexus. All rights reserved. +// +#define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] +#define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] + +#import "VolumeClickTest.h" +#import +#import "ANInterstitialAd.h" + +@interface VolumeClickTest(){ + ANInterstitialAd *interstitialAdView; +} + +@property (nonatomic, strong) XCTestExpectation *expectation; +@property (nonatomic) int tapsRequired; + +@end + +@implementation VolumeClickTest + +- (void)setUp{ + UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + + for (UIView *subView in view.subviews) { + if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { + break; + } + } + + int breakCounter = 10; + + while (interstitial && breakCounter--) { + [self performClickOnInterstitial]; + [tester waitForTimeInterval:2.0]; + } + + [self setupDelegatesForVideo]; + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + if (!player) { + NSLog(@"Test: Not able to load the video."); + } + } +} + +- (void) test1UnmuteVolume{ + + [tester tapViewWithAccessibilityLabel:@"volume button"]; + + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { + if (error) { + NSLog(@"%@", error.description); + } + }]; + +} + +- (void) test2MuteVolume{ + + [tester tapViewWithAccessibilityLabel:@"volume button"]; + + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { + if (error) { + NSLog(@"%@", error.description); + } + }]; + +} + +-(void) setupDelegatesForVideo{ + + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + if (controller) { + SEL aSelector = NSSelectorFromString(@"interstitialAd"); + interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.delegate = self; + interstitialAdView.videoAdDelegate = self; + } +} + +- (void) performClickOnInterstitial{ + if (interstitial) { + [tester tapViewWithAccessibilityLabel:@"interstitial"]; + } +} + +- (void)adMuted:(BOOL)isMuted withAd:(id)ad{ + NSLog(@"Test: Ad was %@", isMuted?@"Muted":@"Unmuted"); + XCTAssertTrue(YES, @"AsMuted delegate fired."); + [self.expectation fulfill]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/.gitignore b/examples/InterstitialUnifiedDemand/KIF-master/.gitignore new file mode 100755 index 000000000..238abff20 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/.gitignore @@ -0,0 +1,25 @@ +#Ignore the Mac OS X .DS_Store files +.DS_Store + +#Ignore user-specific settings +*.mode1v3 +*.mode2v3 +*.pbxuser +*.perspectivev3 +xcuserdata +project.xcworkspace + +#Ignore textmate build errors +*.tm_build_errors + +#Ignore temp nibs and swap files +*.swp +*~.nib + +#Ignore the build, since we don't want archived builds +build + +.gitattributes + +*.orig +DerivedData/* diff --git a/examples/InterstitialUnifiedDemand/KIF-master/.travis.yml b/examples/InterstitialUnifiedDemand/KIF-master/.travis.yml new file mode 100755 index 000000000..ab1b11ca0 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/.travis.yml @@ -0,0 +1,16 @@ +language: objective-c +osx_image: xcode7 +env: + matrix: + - 'DESTINATION="platform=iOS Simulator,name=iPhone 6,OS=8.4"' + - 'DESTINATION="platform=iOS Simulator,name=iPhone 6,OS=9.0"' + +before_install: + - xcrun simctl list + - brew update || brew update +install: + - brew install coreutils + - gem install xcpretty --no-rdoc --no-ri --no-document --quiet +script: + - open -b com.apple.iphonesimulator # Workaround https://github.com/travis-ci/travis-ci/issues/3040 + - gstdbuf -o 0 xcodebuild test -scheme KIF -destination "${DESTINATION}" | xcpretty -c && exit ${PIPESTATUS[0]} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/CGGeometry-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/CGGeometry-KIFAdditions.h new file mode 100755 index 000000000..a1e94fb0c --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/CGGeometry-KIFAdditions.h @@ -0,0 +1,18 @@ +// +// CGGeometry-KIFAdditions.h +// KIF +// +// Created by Eric Firestone on 5/22/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +CG_INLINE CGPoint CGPointCenteredInRect(CGRect bounds) { + return CGPointMake(bounds.origin.x + bounds.size.width * 0.5f, bounds.origin.y + bounds.size.height * 0.5f); +} + +CG_INLINE CGPoint CGPointMidPoint(CGPoint point1, CGPoint point2) { + return CGPointMake((point1.x + point2.x) / 2.0f, (point1.y + point2.y) / 2.0f); +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/CGGeometry-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/CGGeometry-KIFAdditions.m new file mode 100755 index 000000000..bb4062b1e --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/CGGeometry-KIFAdditions.m @@ -0,0 +1,11 @@ +// +// CGGeometry-KIFAdditions.m +// KIF +// +// Created by Eric Firestone on 5/22/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "CGGeometry-KIFAdditions.h" + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/LoadableCategory.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/LoadableCategory.h new file mode 100755 index 000000000..92259bb37 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/LoadableCategory.h @@ -0,0 +1,18 @@ +// +// LoadableCategory.h +// KIF +// +// Created by Karl Stenerud on 7/16/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +/** Make all categories in the current file loadable without using -load-all. + * + * Normally, compilers will skip linking files that contain only categories. + * Adding a call to this macro adds a dummy class, which causes the linker + * to add the file. + * + * @param UNIQUE_NAME A globally unique name. + */ +#define MAKE_CATEGORIES_LOADABLE(UNIQUE_NAME) @interface FORCELOAD_##UNIQUE_NAME : NSObject @end @implementation FORCELOAD_##UNIQUE_NAME @end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSBundle-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSBundle-KIFAdditions.h new file mode 100755 index 000000000..60cbe68b6 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSBundle-KIFAdditions.h @@ -0,0 +1,15 @@ +// +// NSBundle+KIFAdditions.h +// KIF +// +// Created by Brian Nickel on 7/27/13. +// +// + +#import + +@interface NSBundle (KIFAdditions) + ++ (NSBundle *)KIFTestBundle; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSBundle-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSBundle-KIFAdditions.m new file mode 100755 index 000000000..8b34f6968 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSBundle-KIFAdditions.m @@ -0,0 +1,27 @@ +// +// NSBundle+KIFAdditions.m +// KIF +// +// Created by Brian Nickel on 7/27/13. +// +// + +#import "NSBundle-KIFAdditions.h" +#import "KIFTestCase.h" +#import "LoadableCategory.h" + +MAKE_CATEGORIES_LOADABLE(NSBundle_KIFAdditions) + +@implementation NSBundle (KIFAdditions) + ++ (NSBundle *)KIFTestBundle +{ + static NSBundle *bundle; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + bundle = [self bundleForClass:[KIFTestCase class]]; + }); + return bundle; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSError-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSError-KIFAdditions.h new file mode 100755 index 000000000..923256091 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSError-KIFAdditions.h @@ -0,0 +1,16 @@ +// +// NSError+KIFAdditions.h +// KIF +// +// Created by Brian Nickel on 7/27/13. +// +// + +#import + +@interface NSError (KIFAdditions) + ++ (instancetype)KIFErrorWithUnderlyingError:(NSError *)underlyingError format:(NSString *)format, ... NS_FORMAT_FUNCTION(2,3); ++ (instancetype)KIFErrorWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSError-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSError-KIFAdditions.m new file mode 100755 index 000000000..226309fd0 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSError-KIFAdditions.m @@ -0,0 +1,39 @@ +// +// NSError+KIFAdditions.m +// KIF +// +// Created by Brian Nickel on 7/27/13. +// +// + +#import "NSError-KIFAdditions.h" +#import "LoadableCategory.h" +#import "KIFTestActor.h" + +MAKE_CATEGORIES_LOADABLE(NSError_KIFAdditions) + +@implementation NSError (KIFAdditions) + ++ (instancetype)KIFErrorWithFormat:(NSString *)format, ... +{ + va_list args; + va_start(args, format); + NSString *description = [[NSString alloc] initWithFormat:format arguments:args]; + va_end(args); + + return [self errorWithDomain:@"KIFTest" code:KIFTestStepResultFailure userInfo:@{NSLocalizedDescriptionKey: description}]; +} + ++ (instancetype)KIFErrorWithUnderlyingError:(NSError *)underlyingError format:(NSString *)format, ... +{ + va_list args; + va_start(args, format); + NSString *description = [[NSString alloc] initWithFormat:format arguments:args]; + va_end(args); + + NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:description, NSLocalizedDescriptionKey, underlyingError, NSUnderlyingErrorKey, nil]; + + return [self errorWithDomain:@"KIFTest" code:KIFTestStepResultFailure userInfo:userInfo]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSException-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSException-KIFAdditions.h new file mode 100755 index 000000000..487fc0b59 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSException-KIFAdditions.h @@ -0,0 +1,15 @@ +// +// NSException-KIFAdditions.h +// KIF +// +// Created by Tony DiPasquale on 12/20/13. +// +// + +#import + +@interface NSException (KIFAdditions) + ++ (NSException *)failureInFile:(NSString *)file atLine:(NSInteger)line withDescription:(NSString *)formatString, ...; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSException-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSException-KIFAdditions.m new file mode 100755 index 000000000..55bcc2167 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSException-KIFAdditions.m @@ -0,0 +1,28 @@ +// +// NSException-KIFAdditions.m +// KIF +// +// Created by Tony DiPasquale on 12/20/13. +// +// + +#import "NSException-KIFAdditions.h" + +@implementation NSException (KIFAdditions) + ++ (NSException *)failureInFile:(NSString *)file atLine:(NSInteger)line withDescription:(NSString *)formatString, ... +{ + va_list argumentList; + va_start(argumentList, formatString); + + NSString *reason = [[NSString alloc] initWithFormat:formatString arguments:argumentList]; + + va_end(argumentList); + + return [NSException exceptionWithName:@"KIFFailureException" + reason: reason + userInfo:@{@"FilenameKey": file, + @"LineNumberKey": @(line)}]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSFileManager-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSFileManager-KIFAdditions.h new file mode 100755 index 000000000..5875d54a4 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSFileManager-KIFAdditions.h @@ -0,0 +1,18 @@ +// +// NSFileManager-KIFAdditions.h +// KIF +// +// Created by Michael Thole on 6/1/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + + +@interface NSFileManager (KIFAdditions) + +- (NSString *)createUserDirectory:(NSSearchPathDirectory)searchPath; +- (BOOL)recursivelyCreateDirectory:(NSString *)path; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSFileManager-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSFileManager-KIFAdditions.m new file mode 100755 index 000000000..b41f4a543 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/NSFileManager-KIFAdditions.m @@ -0,0 +1,67 @@ +// +// NSFileManager-KIFAdditions.m +// KIF +// +// Created by Michael Thole on 6/1/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "NSFileManager-KIFAdditions.h" +#import "LoadableCategory.h" + + +MAKE_CATEGORIES_LOADABLE(NSFileManager_KIFAdditions) + + +@implementation NSFileManager (KIFAdditions) + +#pragma mark Public Methods + +- (NSString *)createUserDirectory:(NSSearchPathDirectory)searchPath; +{ + NSArray *paths = NSSearchPathForDirectoriesInDomains(searchPath, NSUserDomainMask, YES); + if (!paths.count) { + return nil; + } + + NSString *rootDirectory = paths[0]; + + BOOL isDir; + BOOL created = NO; + if ([self fileExistsAtPath:rootDirectory isDirectory:&isDir] && isDir) { + created = YES; + } else { + created = [self recursivelyCreateDirectory:rootDirectory]; + } + + return created ? rootDirectory : nil; +} + +- (BOOL)recursivelyCreateDirectory:(NSString *)path; +{ + BOOL isDir = NO; + BOOL isParentADir = NO; + NSString *parentDir = nil; + + if (![self fileExistsAtPath:path isDirectory:&isDir]) { + // if file doesn't exist, first create parent + parentDir = [path stringByDeletingLastPathComponent]; + + if (!parentDir.length || [parentDir isEqualToString:@"/"]) { + isParentADir = YES; + } else { + isParentADir = [self recursivelyCreateDirectory:parentDir]; + } + + if (isParentADir) { + isDir = [self createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil]; + } else { + return NO; + } + } + + return isDir; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIAccessibilityElement-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIAccessibilityElement-KIFAdditions.h new file mode 100755 index 000000000..d8aee6c3a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIAccessibilityElement-KIFAdditions.h @@ -0,0 +1,69 @@ +// +// UIAccessibilityElement-KIFAdditions.h +// KIF +// +// Created by Eric Firestone on 5/23/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + + +@interface UIAccessibilityElement (KIFAdditions) + +/*! + @abstract Finds the first view that the accessibility element is part of. + @discussion There is not always a one-to-one mapping between views and accessibility elements. Accessibility elements may not even map to the view you will expect. For instance, table view cell accessibility elements return the @c UITableView and keyboard keys map to the keyboard as a whole. + + @param element The accessibility element. + @return The first matching @c UIView as determined by the accessibility API. + */ ++ (UIView *)viewContainingAccessibilityElement:(UIAccessibilityElement *)element; + +/*! + @abstract Finds an accessibility element and view with a matching label, value, and traits, optionally passing a tappability test. + @discussion This method combines @c +accessibilityElementWithLabel:value:traits:error: and @c +viewContainingAccessibilityElement:tappable:error: for convenience. + @param foundElement The found accessibility element or @c nil if the method returns @c NO. Can be @c NULL. + @param foundView The first matching view for @c foundElement as determined by the accessibility API or @c nil if the view is hidden or fails the tappability test. Can be @c NULL. + @param label The accessibility label of the element to wait for. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + @param error A reference to an error object to be populated when no matching element or view is found. Can be @c NULL. + @result @c YES if the element and view were found. Otherwise @c NO. + */ ++ (BOOL)accessibilityElement:(out UIAccessibilityElement **)foundElement view:(out UIView **)foundView withLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits tappable:(BOOL)mustBeTappable error:(out NSError **)error; + +/*! + @abstract Finds an accessibility element with a matching label, value, and traits. + @discussion This functionality is identical to -[UIApplication accessibilityElementWithLabel:accessibilityValue:traits:] except that it detailed error messaging in the case where the element cannot be found. + @param label The accessibility label of the element to wait for. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + @param error A reference to an error object to be populated when no element is found. Can be @c NULL. + @return The found accessibility element. If @c nil see the @c error for a detailed reason. + */ ++ (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits error:(out NSError **)error; + +/*! + @abstract Finds an accessibility element and view where the element passes the predicate, optionally passing a tappability test. + @param foundElement The found accessibility element or @c nil if the method returns @c NO. Can be @c NULL. + @param foundView The first matching view for @c foundElement as determined by the accessibility API or @c nil if the view is hidden or fails the tappability test. Can be @c NULL. + @param predicate The predicate to test the accessibility element on. + @param error A reference to an error object to be populated when no matching element or view is found. Can be @c NULL. + @result @c YES if the element and view were found. Otherwise @c NO. + */ ++ (BOOL)accessibilityElement:(out UIAccessibilityElement **)foundElement view:(out UIView **)foundView withElementMatchingPredicate:(NSPredicate *)predicate tappable:(BOOL)mustBeTappable error:(out NSError **)error; + +/*! + @abstract Finds and attempts to make visible a view for a given accessibility element. + @discussion If the element is found, off screen, and is inside a scroll view, this method will attempt to programmatically scroll the view onto the screen before performing any logic as to if the view is tappable. + + @param element The accessibility element. + @param mustBeTappable If @c YES, a tappability test will be performed. + @param error A reference to an error object to be populated when no element is found. Can be @c NULL. + @return The first matching view as determined by the accessibility API or nil if the view is hidden or fails the tappability test. + */ ++ (UIView *)viewContainingAccessibilityElement:(UIAccessibilityElement *)element tappable:(BOOL)mustBeTappable error:(NSError **)error; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIAccessibilityElement-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIAccessibilityElement-KIFAdditions.m new file mode 100755 index 000000000..d0c877414 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIAccessibilityElement-KIFAdditions.m @@ -0,0 +1,177 @@ +// +// UIAccessibilityElement-KIFAdditions.m +// KIF +// +// Created by Eric Firestone on 5/23/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "NSError-KIFAdditions.h" +#import "UIAccessibilityElement-KIFAdditions.h" +#import "UIApplication-KIFAdditions.h" +#import "UIScrollView-KIFAdditions.h" +#import "UIView-KIFAdditions.h" +#import "LoadableCategory.h" +#import "KIFTestActor.h" + +MAKE_CATEGORIES_LOADABLE(UIAccessibilityElement_KIFAdditions) + + +@implementation UIAccessibilityElement (KIFAdditions) + ++ (UIView *)viewContainingAccessibilityElement:(UIAccessibilityElement *)element; +{ + while (element && ![element isKindOfClass:[UIView class]]) { + // Sometimes accessibilityContainer will return a view that's too far up the view hierarchy + // UIAccessibilityElement instances will sometimes respond to view, so try to use that and then fall back to accessibilityContainer + id view = [element respondsToSelector:@selector(view)] ? [(id)element view] : nil; + + if (view) { + element = view; + } else { + element = [element accessibilityContainer]; + } + } + + return (UIView *)element; +} + ++ (BOOL)accessibilityElement:(out UIAccessibilityElement **)foundElement view:(out UIView **)foundView withLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits tappable:(BOOL)mustBeTappable error:(out NSError **)error; +{ + UIAccessibilityElement *element = [self accessibilityElementWithLabel:label value:value traits:traits error:error]; + if (!element) { + return NO; + } + + UIView *view = [self viewContainingAccessibilityElement:element tappable:mustBeTappable error:error]; + if (!view) { + return NO; + } + + if (foundElement) { *foundElement = element; } + if (foundView) { *foundView = view; } + return YES; +} + ++ (BOOL)accessibilityElement:(out UIAccessibilityElement **)foundElement view:(out UIView **)foundView withElementMatchingPredicate:(NSPredicate *)predicate tappable:(BOOL)mustBeTappable error:(out NSError **)error; +{ + UIAccessibilityElement *element = [[UIApplication sharedApplication] accessibilityElementMatchingBlock:^BOOL(UIAccessibilityElement *element) { + return [predicate evaluateWithObject:element]; + }]; + + if (!element) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Could not find view matching: %@", predicate]; + } + return NO; + } + + UIView *view = [UIAccessibilityElement viewContainingAccessibilityElement:element tappable:mustBeTappable error:error]; + if (!view) { + return NO; + } + + if (foundElement) { *foundElement = element; } + if (foundView) { *foundView = view; } + return YES; +} + ++ (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits error:(out NSError **)error; +{ + UIAccessibilityElement *element = [[UIApplication sharedApplication] accessibilityElementWithLabel:label accessibilityValue:value traits:traits]; + if (element || !error) { + return element; + } + + element = [[UIApplication sharedApplication] accessibilityElementWithLabel:label accessibilityValue:nil traits:traits]; + // For purposes of a better error message, see if we can find the view, just not a view with the specified value. + if (value && element) { + *error = [NSError KIFErrorWithFormat:@"Found an accessibility element with the label \"%@\", but with the value \"%@\", not \"%@\"", label, element.accessibilityValue, value]; + return nil; + } + + // Check the traits, too. + element = [[UIApplication sharedApplication] accessibilityElementWithLabel:label accessibilityValue:nil traits:UIAccessibilityTraitNone]; + if (traits != UIAccessibilityTraitNone && element) { + *error = [NSError KIFErrorWithFormat:@"Found an accessibility element with the label \"%@\", but not with the traits \"%llu\"", label, traits]; + return nil; + } + + *error = [NSError KIFErrorWithFormat:@"Failed to find accessibility element with the label \"%@\"", label]; + return nil; +} + ++ (UIView *)viewContainingAccessibilityElement:(UIAccessibilityElement *)element tappable:(BOOL)mustBeTappable error:(NSError **)error; +{ + // Small safety mechanism. If someone calls this method after a failing call to accessibilityElementWithLabel:..., we don't want to wipe out the error message. + if (!element && error && *error) { + return nil; + } + + // Make sure the element is visible + UIView *view = [UIAccessibilityElement viewContainingAccessibilityElement:element]; + if (!view) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Cannot find view containing accessibility element with the label \"%@\"", element.accessibilityLabel]; + } + return nil; + } + + // Scroll the view (and superviews) to be visible if necessary + UIView *superview = (UIScrollView *)view; + while (superview) { + // Fix for iOS7 table view cells containing scroll views + if ([superview.superview isKindOfClass:[UITableViewCell class]]) { + break; + } + + if ([superview isKindOfClass:[UIScrollView class]]) { + UIScrollView *scrollView = (UIScrollView *)superview; + + if (((UIAccessibilityElement *)view == element) && ![view isKindOfClass:[UITableViewCell class]]) { + [scrollView scrollViewToVisible:view animated:YES]; + } else { + CGRect elementFrame = [view.window convertRect:element.accessibilityFrame toView:scrollView]; + CGRect visibleRect = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, CGRectGetWidth(scrollView.bounds), CGRectGetHeight(scrollView.bounds)); + + // Only call scrollRectToVisible if the element isn't already visible + // iOS 8 will sometimes incorrectly scroll table views so the element scrolls out of view + if (!CGRectContainsRect(visibleRect, elementFrame)) { + [scrollView scrollRectToVisible:elementFrame animated:YES]; + } + } + + // Give the scroll view a small amount of time to perform the scroll. + CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.3, false); + } + + superview = superview.superview; + } + + if ([[UIApplication sharedApplication] isIgnoringInteractionEvents]) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Application is ignoring interaction events"]; + } + return nil; + } + + // If we don't require tappability, at least make sure it's not hidden + if ([view isHidden]) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Accessibility element with label \"%@\" is hidden.", element.accessibilityLabel]; + } + return nil; + } + + if (mustBeTappable && !view.isProbablyTappable) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Accessibility element with label \"%@\" is not tappable. It may be blocked by other views.", element.accessibilityLabel]; + } + return nil; + } + + return view; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIApplication-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIApplication-KIFAdditions.h new file mode 100755 index 000000000..bc44aa28e --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIApplication-KIFAdditions.h @@ -0,0 +1,111 @@ +// +// UIApplication-KIFAdditions.h +// KIF +// +// Created by Eric Firestone on 5/20/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +#define UIApplicationCurrentRunMode ([[UIApplication sharedApplication] currentRunLoopMode]) + +/*! + @abstract When mocking @c -openURL:, this notification is posted. + */ +UIKIT_EXTERN NSString *const UIApplicationDidMockOpenURLNotification; + +/*! + @abstract When mocking @c -canOpenURL:, this notification is posted. + */ +UIKIT_EXTERN NSString *const UIApplicationDidMockCanOpenURLNotification; + +/*! + @abstract The key for the opened URL in the @c UIApplicationDidMockOpenURLNotification notification. + */ +UIKIT_EXTERN NSString *const UIApplicationOpenedURLKey; + +@interface UIApplication (KIFAdditions) + +/*! + @abstract Finds an accessibility element with a matching label, value, and traits across all windows in the application starting at the frontmost window. + @param label The accessibility label of the element to search for. + @param value The accessibility value of the element to search for. If @c nil, all values will be accepted. + @param traits The accessibility traits of the element to search for. Elements that do not include at least these traits are ignored. + @return The found accessibility element or @c nil if the element could not be found. + */ +- (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label accessibilityValue:(NSString *)value traits:(UIAccessibilityTraits)traits; + +/*! + @abstract Finds an accessibility element where @c matchBlock returns @c YES, across all windows in the application starting at the fronmost window. + @discussion This method should be used if @c accessibilityElementWithLabel:accessibilityValue:traits: does not meet your requirements. For example, if you are searching for an element that begins with a pattern or if of a certain view type. + @param matchBlock A block to be performed on each element to see if it passes. + */ +- (UIAccessibilityElement *)accessibilityElementMatchingBlock:(BOOL(^)(UIAccessibilityElement *))matchBlock; + +/*! + @returns The window containing the keyboard or @c nil if the keyboard is not visible. + */ +- (UIWindow *)keyboardWindow; + +/*! + @returns The topmost window containing a @c UIDatePicker. + */ +- (UIWindow *)datePickerWindow; + +/*! + @returns The topmost window containing a @c UIPickerView. + */ +- (UIWindow *)pickerViewWindow; + +/*! + @returns The topmost window containing a @c UIDimmingView. + */ +- (UIWindow *)dimmingViewWindow; + +/*! + @returns All windows in the application, including the key window even if it does not appear in @c -windows. + */ +- (NSArray *)windowsWithKeyWindow; + +/*! + @abstract Writes a screenshot to disk. + @discussion This method only works if the @c KIF_SCREENSHOTS environment variable is set. + @param lineNumber The line number in the code at which the screenshot was taken. + @param filename The name of the file in which the screenshot was taken. + @param description An optional description of the scene being captured. + @param error If the method returns @c YES, this optional parameter provides additional information as to why it failed. + @returns @c YES if the screenshot was written to disk, otherwise @c NO. + */ +- (BOOL)writeScreenshotForLine:(NSUInteger)lineNumber inFile:(NSString *)filename description:(NSString *)description error:(NSError **)error; + +/*! + @returns The current run loop mode. + */ +- (CFStringRef)currentRunLoopMode; + +/*! + @abstract Swizzles the run loop modes so KIF can better switch between them. + */ ++ (void)swizzleRunLoop; + +/*! + @abstract Starts mocking requests to @c -openURL:, announcing all requests with a notification. + @discussion After calling this method, whenever @c -openURL: is called a notification named @c UIApplicationDidMockOpenURLNotification with the URL in the @c UIApplicationOpenedURL will be raised and the normal behavior will be cancelled. + @param returnValue The value to return when @c -openURL: is called. + */ ++ (void)startMockingOpenURLWithReturnValue:(BOOL)returnValue; + +/*! + @abstract Stops the application from mocking requests to @c -openURL:. + */ ++ (void)stopMockingOpenURL; + +@end + +@interface UIApplication (Private) +- (UIWindow *)statusBarWindow; +@property(getter=isStatusBarHidden) BOOL statusBarHidden; +@end + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIApplication-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIApplication-KIFAdditions.m new file mode 100755 index 000000000..bafaee3d1 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIApplication-KIFAdditions.m @@ -0,0 +1,281 @@ +// +// UIApplication-KIFAdditions.m +// KIF +// +// Created by Eric Firestone on 5/20/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "UIApplication-KIFAdditions.h" +#import "LoadableCategory.h" +#import "UIView-KIFAdditions.h" +#import "NSError-KIFAdditions.h" +#import +#import +#import + +MAKE_CATEGORIES_LOADABLE(UIApplication_KIFAdditions) + +static BOOL _KIF_UIApplicationMockOpenURL = NO; +static BOOL _KIF_UIApplicationMockOpenURL_returnValue = NO; + +@interface UIApplication (Undocumented) +- (void)pushRunLoopMode:(id)arg1; +- (void)pushRunLoopMode:(id)arg1 requester:(id)requester; +- (void)popRunLoopMode:(id)arg1; +- (void)popRunLoopMode:(id)arg1 requester:(id)requester; +@end + +NSString *const UIApplicationDidMockOpenURLNotification = @"UIApplicationDidMockOpenURLNotification"; +NSString *const UIApplicationDidMockCanOpenURLNotification = @"UIApplicationDidMockCanOpenURLNotification"; +NSString *const UIApplicationOpenedURLKey = @"UIApplicationOpenedURL"; +static const void *KIFRunLoopModesKey = &KIFRunLoopModesKey; + +@implementation UIApplication (KIFAdditions) + +#pragma mark - Finding elements + +- (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label accessibilityValue:(NSString *)value traits:(UIAccessibilityTraits)traits; +{ + // Go through the array of windows in reverse order to process the frontmost window first. + // When several elements with the same accessibilitylabel are present the one in front will be picked. + for (UIWindow *window in [self.windowsWithKeyWindow reverseObjectEnumerator]) { + UIAccessibilityElement *element = [window accessibilityElementWithLabel:label accessibilityValue:value traits:traits]; + if (element) { + return element; + } + } + + return nil; +} + +- (UIAccessibilityElement *)accessibilityElementMatchingBlock:(BOOL(^)(UIAccessibilityElement *))matchBlock; +{ + for (UIWindow *window in [self.windowsWithKeyWindow reverseObjectEnumerator]) { + UIAccessibilityElement *element = [window accessibilityElementMatchingBlock:matchBlock]; + if (element) { + return element; + } + } + + return nil; +} + +#pragma mark - Interesting windows + +- (UIWindow *)keyboardWindow; +{ + for (UIWindow *window in self.windowsWithKeyWindow) { + if ([NSStringFromClass([window class]) isEqual:@"UITextEffectsWindow"]) { + return window; + } + } + + return nil; +} + +- (UIWindow *)datePickerWindow; +{ + return [self getWindowForSubviewClass:@"UIDatePicker"]; +} + +- (UIWindow *)pickerViewWindow; +{ + return [self getWindowForSubviewClass:@"UIPickerView"]; +} + +- (UIWindow *)dimmingViewWindow; +{ + return [self getWindowForSubviewClass:@"UIDimmingView"]; +} + +- (UIWindow *)getWindowForSubviewClass:(NSString*)className; +{ + for (UIWindow *window in self.windowsWithKeyWindow) { + NSArray *subViews = [window subviewsWithClassNameOrSuperClassNamePrefix:className]; + if (subViews.count > 0) { + return window; + } + } + + return nil; +} + +- (NSArray *)windowsWithKeyWindow +{ + NSMutableArray *windows = self.windows.mutableCopy; + UIWindow *keyWindow = self.keyWindow; + if (![windows containsObject:keyWindow]) { + [windows addObject:keyWindow]; + } + return windows; +} + +#pragma mark - Screenshotting + +- (BOOL)writeScreenshotForLine:(NSUInteger)lineNumber inFile:(NSString *)filename description:(NSString *)description error:(NSError **)error; +{ + NSString *outputPath = [[[NSProcessInfo processInfo] environment] objectForKey:@"KIF_SCREENSHOTS"]; + if (!outputPath) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Screenshot path not defined. Please set KIF_SCREENSHOTS environment variable."]; + } + return NO; + } + + NSArray *windows = [self windowsWithKeyWindow]; + if (windows.count == 0) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Could not take screenshot. No windows were available."]; + } + return NO; + } + + UIGraphicsBeginImageContextWithOptions([[windows objectAtIndex:0] bounds].size, YES, 0); + for (UIWindow *window in windows) { + //avoid https://github.com/kif-framework/KIF/issues/679 + if (window.hidden) { + continue; + } + + if ([window respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) { + [window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES]; + } else { + [window.layer renderInContext:UIGraphicsGetCurrentContext()]; + } + } + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + outputPath = [outputPath stringByExpandingTildeInPath]; + + NSError *directoryCreationError = nil; + if (![[NSFileManager defaultManager] createDirectoryAtPath:outputPath withIntermediateDirectories:YES attributes:nil error:&directoryCreationError]) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Couldn't create directory at path %@ (details: %@)", outputPath, directoryCreationError]; + } + return NO; + } + + NSString *imageName = [NSString stringWithFormat:@"%@, line %lu", [filename lastPathComponent], (unsigned long)lineNumber]; + if (description) { + imageName = [imageName stringByAppendingFormat:@", %@", description]; + } + + outputPath = [outputPath stringByAppendingPathComponent:imageName]; + outputPath = [outputPath stringByAppendingPathExtension:@"png"]; + + if (![UIImagePNGRepresentation(image) writeToFile:outputPath atomically:YES]) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Could not write file at path %@", outputPath]; + } + return NO; + } + + return YES; +} + +#pragma mark - Run loop monitoring + +- (NSMutableArray *)KIF_runLoopModes; +{ + NSMutableArray *modes = objc_getAssociatedObject(self, KIFRunLoopModesKey); + if (!modes) { + modes = [NSMutableArray arrayWithObject:(id)kCFRunLoopDefaultMode]; + objc_setAssociatedObject(self, KIFRunLoopModesKey, modes, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + } + return modes; +} + +- (CFStringRef)currentRunLoopMode; +{ + return (__bridge CFStringRef)[self KIF_runLoopModes].lastObject; +} + +- (void)KIF_pushRunLoopMode:(NSString *)mode; +{ + [[self KIF_runLoopModes] addObject:mode]; + [self KIF_pushRunLoopMode:mode]; +} + +- (void)KIF_pushRunLoopMode:(NSString *)mode requester:(id)requester; +{ + [[self KIF_runLoopModes] addObject:mode]; + [self KIF_pushRunLoopMode:mode requester:requester]; +} + +- (void)KIF_popRunLoopMode:(NSString *)mode; +{ + [[self KIF_runLoopModes] removeLastObject]; + [self KIF_popRunLoopMode:mode]; +} + + +- (void)KIF_popRunLoopMode:(NSString *)mode requester:(id)requester; +{ + [[self KIF_runLoopModes] removeLastObject]; + [self KIF_popRunLoopMode:mode requester:requester]; +} + +- (BOOL)KIF_openURL:(NSURL *)URL; +{ + if (_KIF_UIApplicationMockOpenURL) { + [[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidMockOpenURLNotification object:self userInfo:@{UIApplicationOpenedURLKey: URL}]; + return _KIF_UIApplicationMockOpenURL_returnValue; + } else { + return [self KIF_openURL:URL]; + } +} + +- (BOOL)KIF_canOpenURL:(NSURL *)URL; +{ + if (_KIF_UIApplicationMockOpenURL) { + [[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidMockCanOpenURLNotification object:self userInfo:@{UIApplicationOpenedURLKey: URL}]; + return _KIF_UIApplicationMockOpenURL_returnValue; + } else { + return [self KIF_canOpenURL:URL]; + } +} + +static inline void Swizzle(Class c, SEL orig, SEL new) +{ + Method origMethod = class_getInstanceMethod(c, orig); + Method newMethod = class_getInstanceMethod(c, new); + if(class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod))) + class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod)); + else + method_exchangeImplementations(origMethod, newMethod); +} + ++ (void)swizzleRunLoop; +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Swizzle(self, @selector(pushRunLoopMode:), @selector(KIF_pushRunLoopMode:)); + Swizzle(self, @selector(pushRunLoopMode:requester:), @selector(KIF_pushRunLoopMode:requester:)); + Swizzle(self, @selector(popRunLoopMode:), @selector(KIF_popRunLoopMode:)); + Swizzle(self, @selector(popRunLoopMode:requester:), @selector(KIF_popRunLoopMode:requester:)); + }); +} + +#pragma mark - openURL mocking + ++ (void)startMockingOpenURLWithReturnValue:(BOOL)returnValue; +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Swizzle(self, @selector(openURL:), @selector(KIF_openURL:)); + Swizzle(self, @selector(canOpenURL:), @selector(KIF_canOpenURL:)); + }); + + _KIF_UIApplicationMockOpenURL = YES; + _KIF_UIApplicationMockOpenURL_returnValue = returnValue; +} + ++ (void)stopMockingOpenURL; +{ + _KIF_UIApplicationMockOpenURL = NO; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIEvent+KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIEvent+KIFAdditions.h new file mode 100755 index 000000000..bbbbc823f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIEvent+KIFAdditions.h @@ -0,0 +1,19 @@ +// +// UIEvent+KIFAdditions.h +// KIF +// +// Created by Thomas on 3/1/15. +// +// + +#import + +// Exposes methods of UITouchesEvent so that the compiler doesn't complain +@interface UIEvent (KIFAdditionsPrivateHeaders) +- (void)_addTouch:(UITouch *)touch forDelayedDelivery:(BOOL)arg2; +- (void)_clearTouches; +@end + +@interface UIEvent (KIFAdditions) +- (void)kif_setEventWithTouches:(NSArray *)touches; +@end \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIEvent+KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIEvent+KIFAdditions.m new file mode 100755 index 000000000..ec438aefb --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIEvent+KIFAdditions.m @@ -0,0 +1,90 @@ +// +// UIEvent+KIFAdditions.m +// KIF +// +// Created by Thomas on 3/1/15. +// +// + +#import "UIEvent+KIFAdditions.h" +#import "LoadableCategory.h" +#import "IOHIDEvent+KIF.h" + +MAKE_CATEGORIES_LOADABLE(UIEvent_KIFAdditions) + +// +// GSEvent is an undeclared object. We don't need to use it ourselves but some +// Apple APIs (UIScrollView in particular) require the x and y fields to be present. +// +@interface KIFGSEventProxy : NSObject +{ +@public + unsigned int flags; + unsigned int type; + unsigned int ignored1; + float x1; + float y1; + float x2; + float y2; + unsigned int ignored2[10]; + unsigned int ignored3[7]; + float sizeX; + float sizeY; + float x3; + float y3; + unsigned int ignored4[3]; +} +@end + +@implementation KIFGSEventProxy +@end + +typedef struct __GSEvent * GSEventRef; + +@interface UIEvent (KIFAdditionsMorePrivateHeaders) +- (void)_setGSEvent:(GSEventRef)event; +- (void)_setHIDEvent:(IOHIDEventRef)event; +- (void)_setTimestamp:(NSTimeInterval)timestemp; +@end + +@implementation UIEvent (KIFAdditions) + +- (void)kif_setEventWithTouches:(NSArray *)touches +{ + NSOperatingSystemVersion iOS8 = {8, 0, 0}; + if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)] + && [[NSProcessInfo new] isOperatingSystemAtLeastVersion:iOS8]) { + [self kif_setIOHIDEventWithTouches:touches]; + } else { + [self kif_setGSEventWithTouches:touches]; + } +} + +- (void)kif_setGSEventWithTouches:(NSArray *)touches +{ + UITouch *touch = touches[0]; + CGPoint location = [touch locationInView:touch.window]; + KIFGSEventProxy *gsEventProxy = [[KIFGSEventProxy alloc] init]; + gsEventProxy->x1 = location.x; + gsEventProxy->y1 = location.y; + gsEventProxy->x2 = location.x; + gsEventProxy->y2 = location.y; + gsEventProxy->x3 = location.x; + gsEventProxy->y3 = location.y; + gsEventProxy->sizeX = 1.0; + gsEventProxy->sizeY = 1.0; + gsEventProxy->flags = ([touch phase] == UITouchPhaseEnded) ? 0x1010180 : 0x3010180; + gsEventProxy->type = 3001; + + [self _setGSEvent:(GSEventRef)gsEventProxy]; + + [self _setTimestamp:(((UITouch*)touches[0]).timestamp)]; +} + +- (void)kif_setIOHIDEventWithTouches:(NSArray *)touches +{ + IOHIDEventRef event = kif_IOHIDEventWithTouches(touches); + [self _setHIDEvent:event]; +} + +@end \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIScrollView-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIScrollView-KIFAdditions.h new file mode 100755 index 000000000..a97480e02 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIScrollView-KIFAdditions.h @@ -0,0 +1,17 @@ +// +// UIScrollView-KIFAdditions.h +// KIF +// +// Created by Eric Firestone on 5/22/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + + +@interface UIScrollView (KIFAdditions) + +- (void)scrollViewToVisible:(UIView *)view animated:(BOOL)animated; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIScrollView-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIScrollView-KIFAdditions.m new file mode 100755 index 000000000..a1e224516 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIScrollView-KIFAdditions.m @@ -0,0 +1,44 @@ +// +// UIScrollView-KIFAdditions.m +// KIF +// +// Created by Eric Firestone on 5/22/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "UIScrollView-KIFAdditions.h" +#import "LoadableCategory.h" +#import "UIApplication-KIFAdditions.h" +#import "UIView-KIFAdditions.h" + + +MAKE_CATEGORIES_LOADABLE(UIScrollView_KIFAdditions) + + +@implementation UIScrollView (KIFAdditions) + +- (void)scrollViewToVisible:(UIView *)view animated:(BOOL)animated; +{ + CGRect viewFrame = [self convertRect:view.bounds fromView:view]; + CGPoint contentOffset = self.contentOffset; + + if (CGRectGetMaxX(viewFrame) > self.contentOffset.x + CGRectGetWidth(self.bounds)) { + contentOffset.x = MIN(CGRectGetMaxX(viewFrame) - CGRectGetWidth(self.bounds), CGRectGetMinX(viewFrame)); + } else if (CGRectGetMinX(viewFrame) < self.contentOffset.x) { + contentOffset.x = MAX(CGRectGetMaxX(viewFrame) - CGRectGetWidth(self.bounds), CGRectGetMinX(viewFrame)); + } + + if (CGRectGetMaxY(viewFrame) > self.contentOffset.y + CGRectGetHeight(self.bounds)) { + contentOffset.y = MIN(CGRectGetMaxY(viewFrame) - CGRectGetHeight(self.bounds), CGRectGetMinY(viewFrame)); + } else if (CGRectGetMinY(viewFrame) < self.contentOffset.y) { + contentOffset.y = MAX(CGRectGetMaxY(viewFrame) - CGRectGetHeight(self.bounds), CGRectGetMinY(viewFrame)); + } + + if (!CGPointEqualToPoint(contentOffset, self.contentOffset)) { + [self setContentOffset:contentOffset animated:animated]; + CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.2, false); + } +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITableView-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITableView-KIFAdditions.h new file mode 100755 index 000000000..5dfc98791 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITableView-KIFAdditions.h @@ -0,0 +1,16 @@ +// +// UITableView-KIFAdditions.h +// KIF +// +// Created by Hilton Campbell on 4/12/14. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +@interface UITableView (KIFAdditions) + +- (BOOL)dragCell:(UITableViewCell *)cell toIndexPath:(NSIndexPath *)indexPath error:(NSError **)error; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITableView-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITableView-KIFAdditions.m new file mode 100755 index 000000000..e3bbab061 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITableView-KIFAdditions.m @@ -0,0 +1,87 @@ +// +// UITableView-KIFAdditions.m +// KIF +// +// Created by Hilton Campbell on 4/12/14. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "UITableView-KIFAdditions.h" +#import "UIView-KIFAdditions.h" +#import "UIApplication-KIFAdditions.h" +#import "UITouch-KIFAdditions.h" +#import "CGGeometry-KIFAdditions.h" +#import "NSError-KIFAdditions.h" + +@implementation UITableView (KIFAdditions) + +#define DRAG_STEP_DISTANCE 5 + +- (BOOL)dragCell:(UITableViewCell *)cell toIndexPath:(NSIndexPath *)indexPath error:(NSError **)error; +{ + UIView *sourceReorderControl = [[cell subviewsWithClassNameOrSuperClassNamePrefix:@"UITableViewCellReorderControl"] lastObject]; + if (!sourceReorderControl) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Failed to find reorder control for cell"]; + } + return NO; + } + + CGPoint sourcePoint = [self convertPoint:CGPointCenteredInRect(sourceReorderControl.bounds) fromView:sourceReorderControl]; + + // If section < 0, search from the end of the table. + if (indexPath.section < 0) { + indexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:self.numberOfSections + indexPath.section]; + } + + // If row < 0, search from the end of the section. + if (indexPath.row < 0) { + indexPath = [NSIndexPath indexPathForRow:[self numberOfRowsInSection:indexPath.section] + indexPath.row inSection:indexPath.section]; + } + + CGPoint destinationPoint = CGPointMake(sourcePoint.x, CGPointCenteredInRect([self rectForRowAtIndexPath:indexPath]).y); + + // Create the touch (there should only be one touch object for the whole drag) + UITouch *touch = [[UITouch alloc] initAtPoint:sourcePoint inView:self]; + [touch setPhaseAndUpdateTimestamp:UITouchPhaseBegan]; + + UIEvent *eventDown = [self eventWithTouch:touch]; + [[UIApplication sharedApplication] sendEvent:eventDown]; + + // Hold long enough to enter reordering mode + CFRunLoopRunInMode(UIApplicationCurrentRunMode, 0.2, false); + + CGPoint currentLocation = sourcePoint; + while (currentLocation.y < destinationPoint.y - DRAG_STEP_DISTANCE || currentLocation.y > destinationPoint.y + DRAG_STEP_DISTANCE) { + if (currentLocation.y < destinationPoint.y) { + currentLocation.y += DRAG_STEP_DISTANCE; + } else { + currentLocation.y -= DRAG_STEP_DISTANCE; + } + + [touch setLocationInWindow:[self.window convertPoint:currentLocation fromView:self]]; + [touch setPhaseAndUpdateTimestamp:UITouchPhaseMoved]; + + UIEvent *eventDrag = [self eventWithTouch:touch]; + [[UIApplication sharedApplication] sendEvent:eventDrag]; + + CFRunLoopRunInMode(UIApplicationCurrentRunMode, 0.01, false); + } + + // Hold long enough for the animations to catch up + CFRunLoopRunInMode(UIApplicationCurrentRunMode, 0.2, false); + + [touch setPhaseAndUpdateTimestamp:UITouchPhaseEnded]; + + UIEvent *eventUp = [self eventWithTouch:touch]; + [[UIApplication sharedApplication] sendEvent:eventUp]; + + // Dispatching the event doesn't actually update the first responder, so fake it + if (touch.view == self && [self canBecomeFirstResponder]) { + [self becomeFirstResponder]; + } + return YES; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITouch-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITouch-KIFAdditions.h new file mode 100755 index 000000000..ea8dc350c --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITouch-KIFAdditions.h @@ -0,0 +1,21 @@ +// +// UITouch-KIFAdditions.h +// KIF +// +// Created by Eric Firestone on 5/20/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + + +@interface UITouch (KIFAdditions) + +- (id)initInView:(UIView *)view; +- (id)initAtPoint:(CGPoint)point inView:(UIView *)view; + +- (void)setLocationInWindow:(CGPoint)location; +- (void)setPhaseAndUpdateTimestamp:(UITouchPhase)phase; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITouch-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITouch-KIFAdditions.m new file mode 100755 index 000000000..4b6840059 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UITouch-KIFAdditions.m @@ -0,0 +1,112 @@ +// +// UITouch-KIFAdditions.m +// KIF +// +// Created by Eric Firestone on 5/20/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "UITouch-KIFAdditions.h" +#import "LoadableCategory.h" +#import +#import "IOHIDEvent+KIF.h" + +MAKE_CATEGORIES_LOADABLE(UITouch_KIFAdditions) + +typedef struct { + unsigned int _firstTouchForView:1; + unsigned int _isTap:1; + unsigned int _isDelayed:1; + unsigned int _sentTouchesEnded:1; + unsigned int _abandonForwardingRecord:1; +} UITouchFlags; + +@interface UITouch () + + +- (void)setWindow:(UIWindow *)window; +- (void)setView:(UIView *)view; +- (void)setTapCount:(NSUInteger)tapCount; +- (void)setIsTap:(BOOL)isTap; +- (void)setTimestamp:(NSTimeInterval)timestamp; +- (void)setPhase:(UITouchPhase)touchPhase; +- (void)setGestureView:(UIView *)view; +- (void)_setLocationInWindow:(CGPoint)location resetPrevious:(BOOL)resetPrevious; +- (void)_setIsFirstTouchForView:(BOOL)firstTouchForView; + +- (void)_setHidEvent:(IOHIDEventRef)event; + +@end + +@implementation UITouch (KIFAdditions) + +- (id)initInView:(UIView *)view; +{ + CGRect frame = view.frame; + CGPoint centerPoint = CGPointMake(frame.size.width * 0.5f, frame.size.height * 0.5f); + return [self initAtPoint:centerPoint inView:view]; +} + +- (id)initAtPoint:(CGPoint)point inWindow:(UIWindow *)window; +{ + self = [super init]; + if (self == nil) { + return nil; + } + + // Create a fake tap touch + [self setWindow:window]; // Wipes out some values. Needs to be first. + + [self setTapCount:1]; + [self _setLocationInWindow:point resetPrevious:YES]; + + UIView *hitTestView = [window hitTest:point withEvent:nil]; + + [self setView:hitTestView]; + [self setPhase:UITouchPhaseBegan]; + [self _setIsFirstTouchForView:YES]; + [self setIsTap:YES]; + [self setTimestamp:[[NSProcessInfo processInfo] systemUptime]]; + + if ([self respondsToSelector:@selector(setGestureView:)]) { + [self setGestureView:hitTestView]; + } + + // Starting with iOS 9, internal IOHIDEvent must be set for UITouch object + NSOperatingSystemVersion iOS9 = {9, 0, 0}; + if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)] && [[NSProcessInfo new] isOperatingSystemAtLeastVersion:iOS9]) { + [self kif_setHidEvent]; + } + + return self; +} + +- (id)initAtPoint:(CGPoint)point inView:(UIView *)view; +{ + return [self initAtPoint:[view.window convertPoint:point fromView:view] inWindow:view.window]; +} + +// +// setLocationInWindow: +// +// Setter to allow access to the _locationInWindow member. +// +- (void)setLocationInWindow:(CGPoint)location +{ + [self setTimestamp:[[NSProcessInfo processInfo] systemUptime]]; + [self _setLocationInWindow:location resetPrevious:NO]; +} + +- (void)setPhaseAndUpdateTimestamp:(UITouchPhase)phase +{ + [self setTimestamp:[[NSProcessInfo processInfo] systemUptime]]; + [self setPhase:phase]; +} + +- (void)kif_setHidEvent { + IOHIDEventRef event = kif_IOHIDEventWithTouches(@[self]); + [self _setHidEvent:event]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-Debugging.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-Debugging.h new file mode 100755 index 000000000..cb7cfdf0e --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-Debugging.h @@ -0,0 +1,22 @@ +// +// UIView+Debugging.h +// KIF +// +// Created by Graeme Arthur on 02/05/15. +// + +#import +#import + +@interface UIView (Debugging) +/*! + @abstract Prints the view hiererchy, starting from the top window(s), along with accessibility information, which is more related to KIF than the usual information given by the 'description' method. + */ ++(void)printViewHierarchy; + +/*! + @abstract Prints the view hiererchy, starting from this view, along with accessibility information, which is more related to KIF than the usual information given by the 'description' method. + */ +-(void)printViewHierarchy; + +@end \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-Debugging.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-Debugging.m new file mode 100755 index 000000000..96d860028 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-Debugging.m @@ -0,0 +1,207 @@ +// +// UIView+Debugging.m +// KIF +// +// Created by Graeme Arthur on 02/05/15. +// + +#import "UIView-Debugging.h" + +@implementation UIView (Debugging) + ++(void)printViewHierarchy { + NSArray* windows = [UIApplication sharedApplication].windows; + if(windows.count == 1) { + [windows[0] printViewHierarchy]; + } else { + //more than one window, also print some information about each window + for (UIWindow* window in windows) { + printf("Window level %f", window.windowLevel); + if(window.isKeyWindow) printf(" (key window)"); + printf("\n"); + [window printViewHierarchy]; + printf("\n"); + } + } +} + +- (void)printViewHierarchy { + [self printViewHierarchyWithIndentation:0]; +} + +- (void)printViewHierarchyWithIndentation:(int)indent { + [self printIndentation:indent]; + [self printClassName]; + + [self printAccessibilityInfo]; + + if(self.hidden) { + printf(" (invisible)"); + } + + if([self isKindOfClass:[UIImageView class]]) { + [self printImageHighlightedState]; + } + + if([self isKindOfClass:[UIControl class]]) { + [self printControlState]; + } + printf("\n"); + + [self printAccessibilityElementsWithIndentation:indent]; + + for (UIView *subview in self.subviews) { + [subview printViewHierarchyWithIndentation:indent+1]; + } +} + +- (void)printIndentation:(int)indent { + for(int i = 0; i < indent; ++i) { + printf("|\t"); + } +} + +- (void)printClassName { + NSString* name = NSStringFromClass([self class]); + printf("%s", name.UTF8String); +} + +- (void)printAccessibilityInfo { + NSString* label = self.accessibilityLabel; + NSString* identifier = self.accessibilityIdentifier; + if(label != nil) { + printf(", label: %s", label.UTF8String); + } else if(identifier != nil) { + printf(", identifier: %s", identifier.UTF8String); + } +} + +- (void)printImageHighlightedState { + if(((UIImageView*)self).highlighted) { + printf(" (highlighted)"); + } else { + printf(" (not highlighted)"); + } +} + +- (void)printControlState { + UIControl* ctrl = (UIControl*)self; + ctrl.enabled ? printf(" (enabled)") : printf(" (not enabled)"); + ctrl.selected ? printf(" (selected)") : printf(" (not selected)"); + ctrl.highlighted ? printf(" (highlighted)") : printf(" (not highlighted)"); +} + +- (void)printAccessibilityElementsWithIndentation:(int)indent { + NSInteger numOfAccElements = self.accessibilityElementCount; + if(numOfAccElements != NSNotFound) { + for (NSInteger i = 0; i < numOfAccElements; ++i) { + [self printIndentation:indent]; + UIAccessibilityElement *e = [(UIAccessibilityElement*)self accessibilityElementAtIndex:i]; + printf("%s, label: %s", NSStringFromClass([e class]).UTF8String, e.accessibilityLabel.UTF8String); + if(e.accessibilityValue && e.accessibilityValue.length > 0) { + printf(", value: %s", e.accessibilityValue.UTF8String); + } + if(e.accessibilityHint && e.accessibilityHint.length > 0) { + printf(", hint: %s", e.accessibilityHint.UTF8String); + } + printf(", "); + [self printAccessibilityTraits:e.accessibilityTraits]; + printf("\n"); + } + } +} + +- (void)printAccessibilityTraits:(UIAccessibilityTraits)traits { + + printf("traits: "); + bool didPrintOne = false; + if(traits == UIAccessibilityTraitNone) { + printf("none"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitButton) { + if(didPrintOne) printf(", "); + printf("button"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitLink) { + if(didPrintOne) printf(", "); + printf("link"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitHeader) { + if(didPrintOne) printf(", "); + printf("header"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitSearchField) { + if(didPrintOne) printf(", "); + printf("search field"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitImage) { + if(didPrintOne) printf(", "); + printf("image"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitSelected) { + if(didPrintOne) printf(", "); + printf("selected"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitPlaysSound) { + if(didPrintOne) printf(", "); + printf("plays sound"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitKeyboardKey) { + if(didPrintOne) printf(", "); + printf("keyboard key"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitStaticText) { + if(didPrintOne) printf(", "); + printf("static text"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitSummaryElement) { + if(didPrintOne) printf(", "); + printf("summary element"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitNotEnabled) { + if(didPrintOne) printf(", "); + printf("not enabled"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitUpdatesFrequently) { + if(didPrintOne) printf(", "); + printf("updates frequently"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitStartsMediaSession) { + if(didPrintOne) printf(", "); + printf("starts media session"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitAdjustable) { + if(didPrintOne) printf(", "); + printf("adjustable"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitAllowsDirectInteraction) { + if(didPrintOne) printf(", "); + printf("allows direct interaction"); + didPrintOne = true; + } + if(traits & UIAccessibilityTraitCausesPageTurn) { + if(didPrintOne) printf(", "); + printf("causes page turn"); + didPrintOne = true; + } + if(!didPrintOne) { + printf("unknown flags (0x%llx)", traits); + } +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-KIFAdditions.h new file mode 100755 index 000000000..746fde0be --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-KIFAdditions.h @@ -0,0 +1,118 @@ +// +// UIView-KIFAdditions.h +// KIF +// +// Created by Eric Firestone on 5/20/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +extern double KIFDegreesToRadians(double deg); +extern double KIFRadiansToDegrees(double rad); + +typedef CGPoint KIFDisplacement; + +@interface UIView (KIFAdditions) + +@property (nonatomic, readonly, getter=isProbablyTappable) BOOL probablyTappable; + +- (BOOL)isDescendantOfFirstResponder; +- (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label; +- (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label traits:(UIAccessibilityTraits)traits; +- (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label accessibilityValue:(NSString *)value traits:(UIAccessibilityTraits)traits; + +/*! + @method accessibilityElementMatchingBlock: + @abstract Finds the descendent accessibility element that matches the conditions defined by the match block. + @param matchBlock A block which returns YES for matching elements. + @result The matching accessibility element. + */ +- (UIAccessibilityElement *)accessibilityElementMatchingBlock:(BOOL(^)(UIAccessibilityElement *))matchBlock; + +- (UIView *)subviewWithClassNamePrefix:(NSString *)prefix __deprecated; +- (NSArray *)subviewsWithClassNamePrefix:(NSString *)prefix; +- (UIView *)subviewWithClassNameOrSuperClassNamePrefix:(NSString *)prefix __deprecated; +- (NSArray *)subviewsWithClassNameOrSuperClassNamePrefix:(NSString *)prefix; + +- (void)flash; +- (void)tap; +- (void)tapAtPoint:(CGPoint)point; +- (void)twoFingerTapAtPoint:(CGPoint)point; +- (void)longPressAtPoint:(CGPoint)point duration:(NSTimeInterval)duration; + +/*! + @method dragFromPoint:toPoint: + @abstract Simulates dragging a finger on the screen between the given points. + @discussion Causes the application to dispatch a sequence of touch events which simulate dragging a finger from startPoint to endPoint. + @param startPoint The point at which to start the drag, in the coordinate system of the receiver. + @param endPoint The point at which to end the drag, in the coordinate system of the receiver. + */ +- (void)dragFromPoint:(CGPoint)startPoint toPoint:(CGPoint)endPoint; +- (void)dragFromPoint:(CGPoint)startPoint toPoint:(CGPoint)endPoint steps:(NSUInteger)stepCount; +- (void)dragFromPoint:(CGPoint)startPoint displacement:(KIFDisplacement)displacement steps:(NSUInteger)stepCount; +- (void)dragAlongPathWithPoints:(CGPoint *)points count:(NSInteger)count; +- (void)twoFingerPanFromPoint:(CGPoint)startPoint toPoint:(CGPoint)toPoint steps:(NSUInteger)stepCount; +- (void)pinchAtPoint:(CGPoint)centerPoint distance:(CGFloat)distance steps:(NSUInteger)stepCount; +- (void)zoomAtPoint:(CGPoint)centerPoint distance:(CGFloat)distance steps:(NSUInteger)stepCount; +- (void)twoFingerRotateAtPoint:(CGPoint)centerPoint angle:(CGFloat)angleInDegrees; +/*! + @method isTappableWithHitTestResultView: + @abstract Easy hook to override whether a hit test result makes a view tappable. + @discussion Some times, your view hierarchies involve putting overlays over views that would otherwise be tappable. Since KIF doesn't know about these exceptions, you can override this method as a convenient way of hooking in to the check for something being tappable. Your implementation will probably want to call up to super. + @param hitView The view -hitTest: returned when trying to tap on a point inside your view's bounds + @result Whether or not the view is tappable. + */ +- (BOOL)isTappableWithHitTestResultView:(UIView *)hitView; + +/*! + @method isTappableInRect: + @abstract Whether or not the receiver can be tapped inside the given rectangular area. + @discussion Determines whether or not tapping within the given rectangle would actually hit the receiver or one of its children. This is useful for determining if the view is actually on screen and enabled. + @param rect A rectangle specifying an area in the receiver in the receiver's frame coordinates. + @result Whether or not the view is tappable. + */ +- (BOOL)isTappableInRect:(CGRect)rect; + +/*! + @method tappablePointInRect:(CGRect)rect; + @abstract Finds a point in the receiver that is tappable. + @discussion Finds a tappable point in the receiver, where tappable is defined as a point that, when tapped, will hit the receiver. + @param rect A rectangle specifying an area in the receiver in the receiver's frame coordinates. + @result A tappable point in the receivers frame coordinates. + */ +- (CGPoint)tappablePointInRect:(CGRect)rect; + +- (UIEvent *)eventWithTouch:(UITouch *)touch; + +/*! + @abstract Evaluates if user interaction is enabled including edge cases. + */ +- (BOOL)isUserInteractionActuallyEnabled; + +/*! + @abstract Evaluates if the view and all its superviews are visible. + */ +- (BOOL)isVisibleInViewHierarchy; + +/*! + @method performBlockOnDescendentViews: + @abstract Calls a block on the view itself and on all its descendent views. + @param block The block that will be called on the views. Stop the traversation of the views by assigning YES to the stop-parameter of the block. + */ +- (void)performBlockOnDescendentViews:(void (^)(UIView *view, BOOL *stop))block; + +/*! + @method performBlockOnAscendentViews: + @abstract Calls a block on the view itself and on all its superviews. + @param block The block that will be called on the views. Stop the traversation of the views by assigning YES to the stop-parameter of the block. + */ +- (void)performBlockOnAscendentViews:(void (^)(UIView *view, BOOL *stop))block; + +/*! + @abstract Returns either the current window or another window if a transform is applied. Returns `nil` if all windows in the application have transforms. + */ +@property (nonatomic, readonly) UIWindow *windowOrIdentityWindow; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-KIFAdditions.m new file mode 100755 index 000000000..0293f4953 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIView-KIFAdditions.m @@ -0,0 +1,901 @@ +// +// UIView-KIFAdditions.m +// KIF +// +// Created by Eric Firestone on 5/20/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "UIView-KIFAdditions.h" +#import "CGGeometry-KIFAdditions.h" +#import "UIAccessibilityElement-KIFAdditions.h" +#import "UIApplication-KIFAdditions.h" +#import "UITouch-KIFAdditions.h" +#import +#import "UIEvent+KIFAdditions.h" + +double KIFDegreesToRadians(double deg) { + return (deg) / 180.0 * M_PI; +} + +double KIFRadiansToDegrees(double rad) { + return ((rad) * (180.0 / M_PI)); +} + +static CGFloat const kTwoFingerConstantWidth = 40; + +@interface UIApplication (KIFAdditionsPrivate) +- (UIEvent *)_touchesEvent; +@end + +@interface NSObject (UIWebDocumentViewInternal) + +- (void)tapInteractionWithLocation:(CGPoint)point; + +@end + +// On iOS 6 the accessibility label may contain line breaks, so when trying to find the +// element, these line breaks are necessary. But on iOS 7 the system replaces them with +// spaces. So the same test breaks on either iOS 6 or iOS 7. iOS8 befuddles this again by +//limiting replacement to spaces in between strings. To work around this replace +// the line breaks in both and try again. +NS_INLINE BOOL StringsMatchExceptLineBreaks(NSString *expected, NSString *actual) { + if (expected == actual) { + return YES; + } + + if (expected.length != actual.length) { + return NO; + } + + if ([expected isEqualToString:actual]) { + return YES; + } + + if ([expected rangeOfString:@"\n"].location == NSNotFound && + [actual rangeOfString:@"\n"].location == NSNotFound) { + return NO; + } + + for (NSUInteger i = 0; i < expected.length; i ++) { + unichar expectedChar = [expected characterAtIndex:i]; + unichar actualChar = [actual characterAtIndex:i]; + if (expectedChar != actualChar && + !(expectedChar == '\n' && actualChar == ' ') && + !(expectedChar == ' ' && actualChar == '\n')) { + return NO; + } + } + + return YES; +} + + +@implementation UIView (KIFAdditions) + ++ (NSSet *)classesToSkipAccessibilitySearchRecursion +{ + static NSSet *classesToSkip; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + // UIDatePicker contains hundreds of thousands of placeholder accessibility elements that aren't useful to KIF, + // so don't recurse into a date picker when searching for matching accessibility elements + classesToSkip = [[NSSet alloc] initWithObjects:[UIDatePicker class], nil]; + }); + + return classesToSkip; +} + +- (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label +{ + return [self accessibilityElementWithLabel:label traits:UIAccessibilityTraitNone]; +} + +- (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label traits:(UIAccessibilityTraits)traits; +{ + return [self accessibilityElementWithLabel:label accessibilityValue:nil traits:traits]; +} + +- (UIAccessibilityElement *)accessibilityElementWithLabel:(NSString *)label accessibilityValue:(NSString *)value traits:(UIAccessibilityTraits)traits; +{ + return [self accessibilityElementMatchingBlock:^(UIAccessibilityElement *element) { + + // TODO: This is a temporary fix for an SDK defect. + NSString *accessibilityValue = nil; + @try { + accessibilityValue = element.accessibilityValue; + } + @catch (NSException *exception) { + NSLog(@"KIF: Unable to access accessibilityValue for element %@ because of exception: %@", element, exception.reason); + } + + if ([accessibilityValue isKindOfClass:[NSAttributedString class]]) { + accessibilityValue = [(NSAttributedString *)accessibilityValue string]; + } + + BOOL labelsMatch = StringsMatchExceptLineBreaks(label, element.accessibilityLabel); + BOOL traitsMatch = ((element.accessibilityTraits) & traits) == traits; + BOOL valuesMatch = !value || [value isEqual:accessibilityValue]; + + return (BOOL)(labelsMatch && traitsMatch && valuesMatch); + }]; +} + +- (UIAccessibilityElement *)accessibilityElementMatchingBlock:(BOOL(^)(UIAccessibilityElement *))matchBlock; +{ + return [self accessibilityElementMatchingBlock:matchBlock notHidden:YES]; +} + +- (UIAccessibilityElement *)accessibilityElementMatchingBlock:(BOOL(^)(UIAccessibilityElement *))matchBlock notHidden:(BOOL)notHidden; +{ + if (notHidden && self.hidden) { + return nil; + } + + // In case multiple elements with the same label exist, prefer ones that are currently visible + UIAccessibilityElement *matchingButOccludedElement = nil; + + BOOL elementMatches = matchBlock((UIAccessibilityElement *)self); + + if (elementMatches) { + if (self.isTappable) { + return (UIAccessibilityElement *)self; + } else { + matchingButOccludedElement = (UIAccessibilityElement *)self; + } + } + + if ([[[self class] classesToSkipAccessibilitySearchRecursion] containsObject:[self class]]) { + return matchingButOccludedElement; + } + + // Check the subviews first. Even if the receiver says it's an accessibility container, + // the returned objects are UIAccessibilityElementMockViews (which aren't actually views) + // rather than the real subviews it contains. We want the real views if possible. + // UITableViewCell is such an offender. + for (UIView *view in [self.subviews reverseObjectEnumerator]) { + UIAccessibilityElement *element = [view accessibilityElementMatchingBlock:matchBlock]; + if (!element) { + continue; + } + + UIView *viewForElement = [UIAccessibilityElement viewContainingAccessibilityElement:element]; + CGRect accessibilityFrame = [viewForElement.window convertRect:element.accessibilityFrame toView:viewForElement]; + + if ([viewForElement isTappableInRect:accessibilityFrame]) { + return element; + } else { + matchingButOccludedElement = element; + } + } + + NSMutableArray *elementStack = [NSMutableArray arrayWithObject:self]; + + while (elementStack.count) { + UIAccessibilityElement *element = [elementStack lastObject]; + [elementStack removeLastObject]; + + BOOL elementMatches = matchBlock(element); + + if (elementMatches) { + UIView *viewForElement = [UIAccessibilityElement viewContainingAccessibilityElement:element]; + CGRect accessibilityFrame = [viewForElement.window convertRect:element.accessibilityFrame toView:viewForElement]; + + if ([viewForElement isTappableInRect:accessibilityFrame]) { + return element; + } else { + matchingButOccludedElement = element; + continue; + } + } + + // If the view is an accessibility container, and we didn't find a matching subview, + // then check the actual accessibility elements + NSInteger accessibilityElementCount = element.accessibilityElementCount; + if (accessibilityElementCount == 0 || accessibilityElementCount == NSNotFound) { + continue; + } + + for (NSInteger accessibilityElementIndex = 0; accessibilityElementIndex < accessibilityElementCount; accessibilityElementIndex++) { + UIAccessibilityElement *subelement = [element accessibilityElementAtIndex:accessibilityElementIndex]; + + if (subelement) { + // Skip table view cell accessibility elements, they're handled below + if ([subelement isKindOfClass:NSClassFromString(@"UITableViewCellAccessibilityElement")]) { + continue; + } + + [elementStack addObject:subelement]; + } + } + } + + if (!matchingButOccludedElement) { + if ([self isKindOfClass:[UITableView class]]) { + UITableView *tableView = (UITableView *)self; + + // Because of a bug in [UITableView indexPathsForVisibleRows] http://openradar.appspot.com/radar?id=5191284490764288 + // We use [UITableView visibleCells] to determine the index path of the visible cells + NSMutableArray *indexPathsForVisibleRows = [[NSMutableArray alloc] init]; + [[tableView visibleCells] enumerateObjectsUsingBlock:^(UITableViewCell *cell, NSUInteger idx, BOOL *stop) { + NSIndexPath *indexPath = [tableView indexPathForCell:cell]; + if (indexPath) { + [indexPathsForVisibleRows addObject:indexPath]; + } + }]; + + for (NSUInteger section = 0, numberOfSections = [tableView numberOfSections]; section < numberOfSections; section++) { + for (NSUInteger row = 0, numberOfRows = [tableView numberOfRowsInSection:section]; row < numberOfRows; row++) { + // Skip visible rows because they are already handled + NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section]; + if ([indexPathsForVisibleRows containsObject:indexPath]) { + continue; + } + + @autoreleasepool { + // Get the cell directly from the dataSource because UITableView will only vend visible cells + UITableViewCell *cell = [tableView.dataSource tableView:tableView cellForRowAtIndexPath:indexPath]; + + UIAccessibilityElement *element = [cell accessibilityElementMatchingBlock:matchBlock notHidden:NO]; + + // Remove the cell from the table view so that it doesn't stick around + [cell removeFromSuperview]; + + // Skip this cell if it isn't the one we're looking for + if (!element) { + continue; + } + } + + // Scroll to the cell and wait for the animation to complete + [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:YES]; + CFRunLoopRunInMode(UIApplicationCurrentRunMode, 0.5, false); + + // Now try finding the element again + return [self accessibilityElementMatchingBlock:matchBlock]; + } + } + } else if ([self isKindOfClass:[UICollectionView class]]) { + UICollectionView *collectionView = (UICollectionView *)self; + + NSArray *indexPathsForVisibleItems = [collectionView indexPathsForVisibleItems]; + + for (NSUInteger section = 0, numberOfSections = [collectionView numberOfSections]; section < numberOfSections; section++) { + for (NSUInteger item = 0, numberOfItems = [collectionView numberOfItemsInSection:section]; item < numberOfItems; item++) { + // Skip visible items because they are already handled + NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section]; + if ([indexPathsForVisibleItems containsObject:indexPath]) { + continue; + } + + @autoreleasepool { + // Get the cell directly from the dataSource because UICollectionView will only vend visible cells + UICollectionViewCell *cell = [collectionView.dataSource collectionView:collectionView cellForItemAtIndexPath:indexPath]; + + UIAccessibilityElement *element = [cell accessibilityElementMatchingBlock:matchBlock notHidden:NO]; + + // Remove the cell from the collection view so that it doesn't stick around + [cell removeFromSuperview]; + + // Skip this cell if it isn't the one we're looking for + // Sometimes we get cells with no size here which can cause an endless loop, so we ignore those + if (!element || CGSizeEqualToSize(cell.frame.size, CGSizeZero)) { + continue; + } + } + + // Scroll to the cell and wait for the animation to complete + [collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionNone animated:YES]; + CFRunLoopRunInMode(UIApplicationCurrentRunMode, 0.5, false); + + // Now try finding the element again + return [self accessibilityElementMatchingBlock:matchBlock]; + } + } + } + } + + return matchingButOccludedElement; +} + +- (UIView *)subviewWithClassNamePrefix:(NSString *)prefix; +{ + NSArray *subviews = [self subviewsWithClassNamePrefix:prefix]; + if ([subviews count] == 0) { + return nil; + } + + return subviews[0]; +} + +- (NSArray *)subviewsWithClassNamePrefix:(NSString *)prefix; +{ + NSMutableArray *result = [NSMutableArray array]; + + // Breadth-first population of matching subviews + // First traverse the next level of subviews, adding matches. + for (UIView *view in self.subviews) { + if ([NSStringFromClass([view class]) hasPrefix:prefix]) { + [result addObject:view]; + } + } + + // Now traverse the subviews of the subviews, adding matches. + for (UIView *view in self.subviews) { + NSArray *matchingSubviews = [view subviewsWithClassNamePrefix:prefix]; + [result addObjectsFromArray:matchingSubviews]; + } + + return result; +} + +- (UIView *)subviewWithClassNameOrSuperClassNamePrefix:(NSString *)prefix; +{ + NSArray *subviews = [self subviewsWithClassNameOrSuperClassNamePrefix:prefix]; + if ([subviews count] == 0) { + return nil; + } + + return subviews[0]; +} + +- (NSArray *)subviewsWithClassNameOrSuperClassNamePrefix:(NSString *)prefix; +{ + NSMutableArray * result = [NSMutableArray array]; + + // Breadth-first population of matching subviews + // First traverse the next level of subviews, adding matches + for (UIView *view in self.subviews) { + Class klass = [view class]; + while (klass) { + if ([NSStringFromClass(klass) hasPrefix:prefix]) { + [result addObject:view]; + break; + } + + klass = [klass superclass]; + } + } + + // Now traverse the subviews of the subviews, adding matches + for (UIView *view in self.subviews) { + NSArray * matchingSubviews = [view subviewsWithClassNameOrSuperClassNamePrefix:prefix]; + [result addObjectsFromArray:matchingSubviews]; + } + + return result; +} + + +- (BOOL)isDescendantOfFirstResponder; +{ + if ([self isFirstResponder]) { + return YES; + } + return [self.superview isDescendantOfFirstResponder]; +} + +- (void)flash; +{ + UIColor *originalBackgroundColor = self.backgroundColor; + for (NSUInteger i = 0; i < 5; i++) { + self.backgroundColor = [UIColor yellowColor]; + CFRunLoopRunInMode(kCFRunLoopDefaultMode, .05, false); + self.backgroundColor = [UIColor blueColor]; + CFRunLoopRunInMode(kCFRunLoopDefaultMode, .05, false); + } + self.backgroundColor = originalBackgroundColor; +} + +- (void)tap; +{ + CGPoint centerPoint = CGPointMake(self.frame.size.width * 0.5f, self.frame.size.height * 0.5f); + + [self tapAtPoint:centerPoint]; +} + +- (void)tapAtPoint:(CGPoint)point; +{ + // Web views don't handle touches in a normal fashion, but they do have a method we can call to tap them + // This may not be necessary anymore. We didn't properly support controls that used gesture recognizers + // when this was added, but we now do. It needs to be tested before we can get rid of it. + id /*UIWebBrowserView*/ webBrowserView = nil; + + if ([NSStringFromClass([self class]) isEqual:@"UIWebBrowserView"]) { + webBrowserView = self; + } else if ([self isKindOfClass:[UIWebView class]]) { + id webViewInternal = [self valueForKey:@"_internal"]; + webBrowserView = [webViewInternal valueForKey:@"browserView"]; + } + + if (webBrowserView) { + [webBrowserView tapInteractionWithLocation:point]; + return; + } + + // Handle touches in the normal way for other views + UITouch *touch = [[UITouch alloc] initAtPoint:point inView:self]; + [touch setPhaseAndUpdateTimestamp:UITouchPhaseBegan]; + + UIEvent *event = [self eventWithTouch:touch]; + + [[UIApplication sharedApplication] sendEvent:event]; + + [touch setPhaseAndUpdateTimestamp:UITouchPhaseEnded]; + [[UIApplication sharedApplication] sendEvent:event]; + + // Dispatching the event doesn't actually update the first responder, so fake it + if ([touch.view isDescendantOfView:self] && [self canBecomeFirstResponder]) { + [self becomeFirstResponder]; + } + +} + +- (void)twoFingerTapAtPoint:(CGPoint)point { + CGPoint finger1 = CGPointMake(point.x - kTwoFingerConstantWidth, point.y - kTwoFingerConstantWidth); + CGPoint finger2 = CGPointMake(point.x + kTwoFingerConstantWidth, point.y + kTwoFingerConstantWidth); + UITouch *touch1 = [[UITouch alloc] initAtPoint:finger1 inView:self]; + UITouch *touch2 = [[UITouch alloc] initAtPoint:finger2 inView:self]; + [touch1 setPhaseAndUpdateTimestamp:UITouchPhaseBegan]; + [touch2 setPhaseAndUpdateTimestamp:UITouchPhaseBegan]; + + UIEvent *event = [self eventWithTouches:@[touch1, touch2]]; + [[UIApplication sharedApplication] sendEvent:event]; + + [touch1 setPhaseAndUpdateTimestamp:UITouchPhaseEnded]; + [touch2 setPhaseAndUpdateTimestamp:UITouchPhaseEnded]; + + [[UIApplication sharedApplication] sendEvent:event]; +} + +#define DRAG_TOUCH_DELAY 0.01 + +- (void)longPressAtPoint:(CGPoint)point duration:(NSTimeInterval)duration +{ + UITouch *touch = [[UITouch alloc] initAtPoint:point inView:self]; + [touch setPhaseAndUpdateTimestamp:UITouchPhaseBegan]; + + UIEvent *eventDown = [self eventWithTouch:touch]; + [[UIApplication sharedApplication] sendEvent:eventDown]; + + CFRunLoopRunInMode(kCFRunLoopDefaultMode, DRAG_TOUCH_DELAY, false); + + for (NSTimeInterval timeSpent = DRAG_TOUCH_DELAY; timeSpent < duration; timeSpent += DRAG_TOUCH_DELAY) + { + [touch setPhaseAndUpdateTimestamp:UITouchPhaseStationary]; + + UIEvent *eventStillDown = [self eventWithTouch:touch]; + [[UIApplication sharedApplication] sendEvent:eventStillDown]; + + CFRunLoopRunInMode(kCFRunLoopDefaultMode, DRAG_TOUCH_DELAY, false); + } + + [touch setPhaseAndUpdateTimestamp:UITouchPhaseEnded]; + UIEvent *eventUp = [self eventWithTouch:touch]; + [[UIApplication sharedApplication] sendEvent:eventUp]; + + // Dispatching the event doesn't actually update the first responder, so fake it + if ([touch.view isDescendantOfView:self] && [self canBecomeFirstResponder]) { + [self becomeFirstResponder]; + } + +} + +- (void)dragFromPoint:(CGPoint)startPoint toPoint:(CGPoint)endPoint; +{ + [self dragFromPoint:startPoint toPoint:endPoint steps:3]; +} + + +- (void)dragFromPoint:(CGPoint)startPoint toPoint:(CGPoint)endPoint steps:(NSUInteger)stepCount; +{ + KIFDisplacement displacement = CGPointMake(endPoint.x - startPoint.x, endPoint.y - startPoint.y); + [self dragFromPoint:startPoint displacement:displacement steps:stepCount]; +} + +- (void)dragFromPoint:(CGPoint)startPoint displacement:(KIFDisplacement)displacement steps:(NSUInteger)stepCount; +{ + CGPoint endPoint = CGPointMake(startPoint.x + displacement.x, startPoint.y + displacement.y); + NSArray *path = [self pointsFromStartPoint:startPoint toPoint:endPoint steps:stepCount]; + [self dragPointsAlongPaths:@[path]]; +} + +- (void)dragAlongPathWithPoints:(CGPoint *)points count:(NSInteger)count; +{ + // convert point array into NSArray with NSValue + NSMutableArray *array = [NSMutableArray array]; + for (int i = 0; i < count; i++) + { + [array addObject:[NSValue valueWithCGPoint:points[i]]]; + } + [self dragPointsAlongPaths:@[[array copy]]]; +} + +- (void)dragPointsAlongPaths:(NSArray *)arrayOfPaths { + // must have at least one path, and each path must have the same number of points + if (arrayOfPaths.count == 0) + { + return; + } + + // all paths must have similar number of points + NSUInteger pointsInPath = [arrayOfPaths[0] count]; + for (NSArray *path in arrayOfPaths) + { + if (path.count != pointsInPath) + { + return; + } + } + + NSMutableArray *touches = [NSMutableArray array]; + + for (NSUInteger pointIndex = 0; pointIndex < pointsInPath; pointIndex++) { + // create initial touch event and send touch down event + if (pointIndex == 0) + { + for (NSArray *path in arrayOfPaths) + { + CGPoint point = [path[pointIndex] CGPointValue]; + UITouch *touch = [[UITouch alloc] initAtPoint:point inView:self]; + [touch setPhaseAndUpdateTimestamp:UITouchPhaseBegan]; + [touches addObject:touch]; + } + UIEvent *eventDown = [self eventWithTouches:[NSArray arrayWithArray:touches]]; + [[UIApplication sharedApplication] sendEvent:eventDown]; + + CFRunLoopRunInMode(UIApplicationCurrentRunMode, DRAG_TOUCH_DELAY, false); + } + else + { + UITouch *touch; + for (NSUInteger pathIndex = 0; pathIndex < arrayOfPaths.count; pathIndex++) + { + NSArray *path = arrayOfPaths[pathIndex]; + CGPoint point = [path[pointIndex] CGPointValue]; + touch = touches[pathIndex]; + [touch setLocationInWindow:[self.window convertPoint:point fromView:self]]; + [touch setPhaseAndUpdateTimestamp:UITouchPhaseMoved]; + } + UIEvent *event = [self eventWithTouches:[NSArray arrayWithArray:touches]]; + [[UIApplication sharedApplication] sendEvent:event]; + + CFRunLoopRunInMode(UIApplicationCurrentRunMode, DRAG_TOUCH_DELAY, false); + + // The last point needs to also send a phase ended touch. + if (pointIndex == pointsInPath - 1) { + for (UITouch * touch in touches) { + [touch setPhaseAndUpdateTimestamp:UITouchPhaseEnded]; + UIEvent *eventUp = [self eventWithTouch:touch]; + [[UIApplication sharedApplication] sendEvent:eventUp]; + + } + + } + } + } + + // Dispatching the event doesn't actually update the first responder, so fake it + if ([touches[0] view] == self && [self canBecomeFirstResponder]) { + [self becomeFirstResponder]; + } + + while (UIApplicationCurrentRunMode != kCFRunLoopDefaultMode) { + CFRunLoopRunInMode(UIApplicationCurrentRunMode, 0.1, false); + } +} + +- (void)twoFingerPanFromPoint:(CGPoint)startPoint toPoint:(CGPoint)toPoint steps:(NSUInteger)stepCount { + //estimate the first finger to be diagonally up and left from the center + CGPoint finger1Start = CGPointMake(startPoint.x - kTwoFingerConstantWidth, + startPoint.y - kTwoFingerConstantWidth); + CGPoint finger1End = CGPointMake(toPoint.x - kTwoFingerConstantWidth, + toPoint.y - kTwoFingerConstantWidth); + //estimate the second finger to be diagonally down and right from the center + CGPoint finger2Start = CGPointMake(startPoint.x + kTwoFingerConstantWidth, + startPoint.y + kTwoFingerConstantWidth); + CGPoint finger2End = CGPointMake(toPoint.x + kTwoFingerConstantWidth, + toPoint.y + kTwoFingerConstantWidth); + NSArray *finger1Path = [self pointsFromStartPoint:finger1Start toPoint:finger1End steps:stepCount]; + NSArray *finger2Path = [self pointsFromStartPoint:finger2Start toPoint:finger2End steps:stepCount]; + NSArray *paths = @[finger1Path, finger2Path]; + + [self dragPointsAlongPaths:paths]; +} + +- (void)pinchAtPoint:(CGPoint)centerPoint distance:(CGFloat)distance steps:(NSUInteger)stepCount { + //estimate the first finger to be on the left + CGPoint finger1Start = CGPointMake(centerPoint.x - kTwoFingerConstantWidth - distance, centerPoint.y); + CGPoint finger1End = CGPointMake(centerPoint.x - kTwoFingerConstantWidth, centerPoint.y); + //estimate the second finger to be on the right + CGPoint finger2Start = CGPointMake(centerPoint.x + kTwoFingerConstantWidth + distance, centerPoint.y); + CGPoint finger2End = CGPointMake(centerPoint.x + kTwoFingerConstantWidth, centerPoint.y); + NSArray *finger1Path = [self pointsFromStartPoint:finger1Start toPoint:finger1End steps:stepCount]; + NSArray *finger2Path = [self pointsFromStartPoint:finger2Start toPoint:finger2End steps:stepCount]; + NSArray *paths = @[finger1Path, finger2Path]; + + [self dragPointsAlongPaths:paths]; +} + +- (void)zoomAtPoint:(CGPoint)centerPoint distance:(CGFloat)distance steps:(NSUInteger)stepCount { + //estimate the first finger to be on the left + CGPoint finger1Start = CGPointMake(centerPoint.x - kTwoFingerConstantWidth, centerPoint.y); + CGPoint finger1End = CGPointMake(centerPoint.x - kTwoFingerConstantWidth - distance, centerPoint.y); + //estimate the second finger to be on the right + CGPoint finger2Start = CGPointMake(centerPoint.x + kTwoFingerConstantWidth, centerPoint.y); + CGPoint finger2End = CGPointMake(centerPoint.x + kTwoFingerConstantWidth + distance, centerPoint.y); + NSArray *finger1Path = [self pointsFromStartPoint:finger1Start toPoint:finger1End steps:stepCount]; + NSArray *finger2Path = [self pointsFromStartPoint:finger2Start toPoint:finger2End steps:stepCount]; + NSArray *paths = @[finger1Path, finger2Path]; + + [self dragPointsAlongPaths:paths]; +} + +- (void)twoFingerRotateAtPoint:(CGPoint)centerPoint angle:(CGFloat)angleInDegrees { + NSInteger stepCount = ABS(angleInDegrees)/2; // very rough approximation. 90deg = ~45 steps, 360 deg = ~180 steps + CGFloat radius = kTwoFingerConstantWidth*2; + double angleInRadians = KIFDegreesToRadians(angleInDegrees); + + NSMutableArray *finger1Path = [NSMutableArray array]; + NSMutableArray *finger2Path = [NSMutableArray array]; + for (NSUInteger i = 0; i < stepCount; i++) { + double currentAngle = 0; + if (i == stepCount - 1) { + currentAngle = angleInRadians; // do not interpolate for the last step for maximum accuracy + } + else { + double interpolation = i/(double)stepCount; + currentAngle = interpolation * angleInRadians; + } + // interpolate betwen 0 and the target rotation + CGPoint offset1 = CGPointMake(radius * cos(currentAngle), radius * sin(currentAngle)); + CGPoint offset2 = CGPointMake(-offset1.x, -offset1.y); // second finger is just opposite of the first + + CGPoint finger1 = CGPointMake(centerPoint.x + offset1.x, centerPoint.y + offset1.y); + CGPoint finger2 = CGPointMake(centerPoint.x + offset2.x, centerPoint.y + offset2.y); + + [finger1Path addObject:[NSValue valueWithCGPoint:finger1]]; + [finger2Path addObject:[NSValue valueWithCGPoint:finger2]]; + } + [self dragPointsAlongPaths:@[[finger1Path copy], [finger2Path copy]]]; +} + +- (NSArray *)pointsFromStartPoint:(CGPoint)startPoint toPoint:(CGPoint)toPoint steps:(NSUInteger)stepCount { + + CGPoint displacement = CGPointMake(toPoint.x - startPoint.x, toPoint.y - startPoint.y); + NSMutableArray *points = [NSMutableArray array]; + + for (NSUInteger i = 0; i < stepCount; i++) { + CGFloat progress = ((CGFloat)i)/(stepCount - 1); + CGPoint point = CGPointMake(startPoint.x + (progress * displacement.x), + startPoint.y + (progress * displacement.y)); + [points addObject:[NSValue valueWithCGPoint:point]]; + } + return [NSArray arrayWithArray:points]; +} + +- (BOOL)isProbablyTappable +{ + // There are some issues with the tappability check in UIWebViews, so if the view is a UIWebView we will just skip the check. + return [NSStringFromClass([self class]) isEqualToString:@"UIWebBrowserView"] || self.isTappable; +} + +// Is this view currently on screen? +- (BOOL)isTappable; +{ + return ([self hasTapGestureRecognizer] || + [self isTappableInRect:self.bounds]); +} + +- (BOOL)hasTapGestureRecognizer +{ + __block BOOL hasTapGestureRecognizer = NO; + + [self.gestureRecognizers enumerateObjectsUsingBlock:^(id obj, + NSUInteger idx, + BOOL *stop) { + if ([obj isKindOfClass:[UITapGestureRecognizer class]]) { + hasTapGestureRecognizer = YES; + + if (stop != NULL) { + *stop = YES; + } + } + }]; + + return hasTapGestureRecognizer; +} + +- (BOOL)isTappableInRect:(CGRect)rect; +{ + CGPoint tappablePoint = [self tappablePointInRect:rect]; + + return !isnan(tappablePoint.x); +} + +- (BOOL)isTappableWithHitTestResultView:(UIView *)hitView; +{ + // Special case for UIControls, which may have subviews which don't respond to -hitTest:, + // but which are tappable. In this case the hit view will be the containing + // UIControl, and it will forward the tap to the appropriate subview. + // This applies with UISegmentedControl which contains UISegment views (a private UIView + // representing a single segment). + if ([hitView isKindOfClass:[UIControl class]] && [self isDescendantOfView:hitView]) { + return YES; + } + + // Button views in the nav bar (a private class derived from UINavigationItemView), do not return + // themselves in a -hitTest:. Instead they return the nav bar. + if ([hitView isKindOfClass:[UINavigationBar class]] && [self isNavigationItemView] && [self isDescendantOfView:hitView]) { + return YES; + } + + return [hitView isDescendantOfView:self]; +} + +- (CGPoint)tappablePointInRect:(CGRect)rect; +{ + // Start at the top and recurse down + CGRect frame = [self.window convertRect:rect fromView:self]; + + UIView *hitView = nil; + CGPoint tapPoint = CGPointZero; + + // Mid point + tapPoint = CGPointCenteredInRect(frame); + hitView = [self.window hitTest:tapPoint withEvent:nil]; + if ([self isTappableWithHitTestResultView:hitView]) { + return [self.window convertPoint:tapPoint toView:self]; + } + + // Top left + tapPoint = CGPointMake(frame.origin.x + 1.0f, frame.origin.y + 1.0f); + hitView = [self.window hitTest:tapPoint withEvent:nil]; + if ([self isTappableWithHitTestResultView:hitView]) { + return [self.window convertPoint:tapPoint toView:self]; + } + + // Top right + tapPoint = CGPointMake(frame.origin.x + frame.size.width - 1.0f, frame.origin.y + 1.0f); + hitView = [self.window hitTest:tapPoint withEvent:nil]; + if ([self isTappableWithHitTestResultView:hitView]) { + return [self.window convertPoint:tapPoint toView:self]; + } + + // Bottom left + tapPoint = CGPointMake(frame.origin.x + 1.0f, frame.origin.y + frame.size.height - 1.0f); + hitView = [self.window hitTest:tapPoint withEvent:nil]; + if ([self isTappableWithHitTestResultView:hitView]) { + return [self.window convertPoint:tapPoint toView:self]; + } + + // Bottom right + tapPoint = CGPointMake(frame.origin.x + frame.size.width - 1.0f, frame.origin.y + frame.size.height - 1.0f); + hitView = [self.window hitTest:tapPoint withEvent:nil]; + if ([self isTappableWithHitTestResultView:hitView]) { + return [self.window convertPoint:tapPoint toView:self]; + } + + return CGPointMake(NAN, NAN); +} + +- (UIEvent *)eventWithTouches:(NSArray *)touches +{ + // _touchesEvent is a private selector, interface is exposed in UIApplication(KIFAdditionsPrivate) + UIEvent *event = [[UIApplication sharedApplication] _touchesEvent]; + + [event _clearTouches]; + [event kif_setEventWithTouches:touches]; + + for (UITouch *aTouch in touches) { + [event _addTouch:aTouch forDelayedDelivery:NO]; + } + + return event; +} + +- (UIEvent *)eventWithTouch:(UITouch *)touch; +{ + NSArray *touches = touch ? @[touch] : nil; + return [self eventWithTouches:touches]; +} + +- (BOOL)isUserInteractionActuallyEnabled; +{ + BOOL isUserInteractionEnabled = self.userInteractionEnabled; + + // Navigation item views don't have user interaction enabled, but their parent nav bar does and will forward the event + if (!isUserInteractionEnabled && [self isNavigationItemView]) { + // If this view is inside a nav bar, and the nav bar is enabled, then consider it enabled + UIView *navBar = [self superview]; + while (navBar && ![navBar isKindOfClass:[UINavigationBar class]]) { + navBar = [navBar superview]; + } + if (navBar && navBar.userInteractionEnabled) { + isUserInteractionEnabled = YES; + } + } + + // UIActionsheet Buttons have UIButtonLabels with userInteractionEnabled=NO inside, + // grab the superview UINavigationButton instead. + if (!isUserInteractionEnabled && [self isKindOfClass:NSClassFromString(@"UIButtonLabel")]) { + UIView *button = [self superview]; + while (button && ![button isKindOfClass:NSClassFromString(@"UINavigationButton")]) { + button = [button superview]; + } + if (button && button.userInteractionEnabled) { + isUserInteractionEnabled = YES; + } + } + + return isUserInteractionEnabled; +} + +- (BOOL)isNavigationItemView; +{ + return [self isKindOfClass:NSClassFromString(@"UINavigationItemView")] || [self isKindOfClass:NSClassFromString(@"_UINavigationBarBackIndicatorView")]; +} + +- (UIWindow *)windowOrIdentityWindow +{ + if (CGAffineTransformIsIdentity(self.window.transform)) { + return self.window; + } + + for (UIWindow *window in [[UIApplication sharedApplication] windowsWithKeyWindow]) { + if (CGAffineTransformIsIdentity(window.transform)) { + return window; + } + } + + return nil; +} + +- (BOOL)isVisibleInViewHierarchy +{ + __block BOOL result = YES; + [self performBlockOnAscendentViews:^(UIView *view, BOOL *stop) { + if (view.isHidden) { + result = NO; + if (stop != NULL) { + *stop = YES; + } + } + }]; + return result; +} + +- (void)performBlockOnDescendentViews:(void (^)(UIView *view, BOOL *stop))block +{ + BOOL stop = NO; + [self performBlockOnDescendentViews:block stop:&stop]; +} + +- (void)performBlockOnDescendentViews:(void (^)(UIView *view, BOOL *stop))block stop:(BOOL *)stop +{ + block(self, stop); + if (*stop) { + return; + } + + for (UIView *view in self.subviews) { + [view performBlockOnDescendentViews:block stop:stop]; + if (*stop) { + return; + } + } +} + +- (void)performBlockOnAscendentViews:(void (^)(UIView *view, BOOL *stop))block +{ + BOOL stop = NO; + UIView *checkedView = self; + while(checkedView && stop == NO) { + block(checkedView, &stop); + checkedView = checkedView.superview; + } +} + + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIWindow-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIWindow-KIFAdditions.h new file mode 100755 index 000000000..64c9b2c40 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIWindow-KIFAdditions.h @@ -0,0 +1,17 @@ +// +// UIWindow-KIFAdditions.h +// KIF +// +// Created by Eric Firestone on 5/20/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + + +@interface UIWindow (KIFAdditions) + +- (UIResponder *)firstResponder; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIWindow-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIWindow-KIFAdditions.m new file mode 100755 index 000000000..893b49e1e --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/UIWindow-KIFAdditions.m @@ -0,0 +1,15 @@ +// +// UIWindow-KIFAdditions.m +// KIF +// +// Created by Eric Firestone on 5/20/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "UIWindow-KIFAdditions.h" + + +//@implementation UIWindow (KIFAdditions) +// +//@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/XCTestCase-KIFAdditions.h b/examples/InterstitialUnifiedDemand/KIF-master/Additions/XCTestCase-KIFAdditions.h new file mode 100755 index 000000000..64f966c07 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/XCTestCase-KIFAdditions.h @@ -0,0 +1,14 @@ +// +// XCTestCase-KIFAdditions.h +// KIF +// +// Created by Tony DiPasquale on 12/9/13. +// +// + +#import +#import "KIFTestActor.h" + +@interface XCTestCase (KIFAdditions) + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Additions/XCTestCase-KIFAdditions.m b/examples/InterstitialUnifiedDemand/KIF-master/Additions/XCTestCase-KIFAdditions.m new file mode 100755 index 000000000..01e8aff25 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Additions/XCTestCase-KIFAdditions.m @@ -0,0 +1,94 @@ +// +// XCTestCase-KIFAdditions.m +// KIF +// +// Created by Tony DiPasquale on 12/9/13. +// +// + +#import "XCTestCase-KIFAdditions.h" +#import "LoadableCategory.h" +#import "UIApplication-KIFAdditions.h" +#import + +MAKE_CATEGORIES_LOADABLE(TestCase_KIFAdditions) + +static inline void Swizzle(Class c, SEL orig, SEL new) +{ + Method origMethod = class_getInstanceMethod(c, orig); + Method newMethod = class_getInstanceMethod(c, new); + if(class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod))) + class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod)); + else + method_exchangeImplementations(origMethod, newMethod); +} + +@interface XCTestCase () +- (void)_recordUnexpectedFailureWithDescription:(id)arg1 exception:(id)arg2; +@end + +@implementation XCTestCase (KIFAdditions) + +- (void)failWithException:(NSException *)exception stopTest:(BOOL)stop +{ + self.continueAfterFailure = YES; + + [self recordFailureWithDescription:exception.description inFile:exception.userInfo[@"FilenameKey"] atLine:[exception.userInfo[@"LineNumberKey"] unsignedIntegerValue] expected:NO]; + + if (stop) { + [self writeScreenshotForException:exception]; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Swizzle([XCTestCase class], @selector(_recordUnexpectedFailureWithDescription:exception:), @selector(KIF_recordUnexpectedFailureWithDescription:exception:)); + }); + [exception raise]; + } +} + +- (void)failWithExceptions:(NSArray *)exceptions stopTest:(BOOL)stop +{ + NSException *lastException = exceptions.lastObject; + for (NSException *exception in exceptions) { + [self failWithException:exception stopTest:(exception == lastException ? stop : NO)]; + } +} + +- (void)KIF_recordUnexpectedFailureWithDescription:(id)arg1 exception:(NSException *)arg2 +{ + if (![[arg2 name] isEqualToString:@"KIFFailureException"]) { + [self KIF_recordUnexpectedFailureWithDescription:arg1 exception:arg2]; + } +} + +- (void)writeScreenshotForException:(NSException *)exception; +{ + [[UIApplication sharedApplication] writeScreenshotForLine:[exception.userInfo[@"LineNumberKey"] unsignedIntegerValue] inFile:exception.userInfo[@"FilenameKey"] description:nil error:NULL]; +} + +@end + +#ifdef __IPHONE_8_0 + +@interface XCTestSuite () +- (void)_recordUnexpectedFailureForTestRun:(id)arg1 description:(id)arg2 exception:(id)arg3; +@end + +@implementation XCTestSuite (KIFAdditions) + ++ (void)load +{ + Swizzle([XCTestSuite class], @selector(_recordUnexpectedFailureForTestRun:description:exception:), @selector(KIF_recordUnexpectedFailureForTestRun:description:exception:)); +} + +- (void)KIF_recordUnexpectedFailureForTestRun:(XCTestSuiteRun *)arg1 description:(id)arg2 exception:(NSException *)arg3 +{ + if (![[arg3 name] isEqualToString:@"KIFFailureException"]) { + [self KIF_recordUnexpectedFailureForTestRun:arg1 description:arg2 exception:arg3]; + } else { + [arg1 recordFailureWithDescription:[NSString stringWithFormat:@"Test suite stopped on fatal error: %@", arg3.description] inFile:arg3.userInfo[@"FilenameKey"] atLine:[arg3.userInfo[@"LineNumberKey"] unsignedIntegerValue] expected:NO]; + } +} + +@end + +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/IOHIDEvent+KIF.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/IOHIDEvent+KIF.h new file mode 100755 index 000000000..b9253ee83 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/IOHIDEvent+KIF.h @@ -0,0 +1,11 @@ +// +// IOHIDEvent+KIF.h +// KIF +// +// Created by Thomas Bonnin on 7/6/15. +// +// + +typedef struct __IOHIDEvent * IOHIDEventRef; +IOHIDEventRef kif_IOHIDEventWithTouches(NSArray *touches); + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/IOHIDEvent+KIF.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/IOHIDEvent+KIF.m new file mode 100755 index 000000000..737cc8a8f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/IOHIDEvent+KIF.m @@ -0,0 +1,188 @@ +// +// IOHIDEvent+KIF.m +// KIF +// +// Created by Thomas Bonnin on 7/6/15. +// +// + +#import +#import "IOHIDEvent+KIF.h" +#import + +#define IOHIDEventFieldBase(type) (type << 16) +#ifdef __LP64__ +typedef double IOHIDFloat; +#else +typedef float IOHIDFloat; +#endif +typedef UInt32 IOOptionBits; +typedef uint32_t IOHIDDigitizerTransducerType; +typedef uint32_t IOHIDEventField; +typedef uint32_t IOHIDEventType; + +void IOHIDEventAppendEvent(IOHIDEventRef event, IOHIDEventRef childEvent); +void IOHIDEventSetIntegerValue(IOHIDEventRef event, IOHIDEventField field, int value); +void IOHIDEventSetSenderID(IOHIDEventRef event, uint64_t sender); + +enum { + kIOHIDDigitizerTransducerTypeStylus = 0, + kIOHIDDigitizerTransducerTypePuck, + kIOHIDDigitizerTransducerTypeFinger, + kIOHIDDigitizerTransducerTypeHand +}; + +enum { + kIOHIDEventTypeNULL, // 0 + kIOHIDEventTypeVendorDefined, + kIOHIDEventTypeButton, + kIOHIDEventTypeKeyboard, + kIOHIDEventTypeTranslation, + kIOHIDEventTypeRotation, // 5 + kIOHIDEventTypeScroll, + kIOHIDEventTypeScale, + kIOHIDEventTypeZoom, + kIOHIDEventTypeVelocity, + kIOHIDEventTypeOrientation, // 10 + kIOHIDEventTypeDigitizer, + kIOHIDEventTypeAmbientLightSensor, + kIOHIDEventTypeAccelerometer, + kIOHIDEventTypeProximity, + kIOHIDEventTypeTemperature, // 15 + kIOHIDEventTypeNavigationSwipe, + kIOHIDEventTypePointer, + kIOHIDEventTypeProgress, + kIOHIDEventTypeMultiAxisPointer, + kIOHIDEventTypeGyro, // 20 + kIOHIDEventTypeCompass, + kIOHIDEventTypeZoomToggle, + kIOHIDEventTypeDockSwipe, // just like kIOHIDEventTypeNavigationSwipe, but intended for consumption by Dock + kIOHIDEventTypeSymbolicHotKey, + kIOHIDEventTypePower, // 25 + kIOHIDEventTypeLED, + kIOHIDEventTypeFluidTouchGesture, // This will eventually superseed Navagation and Dock swipes + kIOHIDEventTypeBoundaryScroll, + kIOHIDEventTypeBiometric, + kIOHIDEventTypeUnicode, // 30 + kIOHIDEventTypeAtmosphericPressure, + kIOHIDEventTypeUndefined, + kIOHIDEventTypeCount, // This should always be last + + + // DEPRECATED: + kIOHIDEventTypeSwipe = kIOHIDEventTypeNavigationSwipe, + kIOHIDEventTypeMouse = kIOHIDEventTypePointer +}; + +enum { + kIOHIDDigitizerEventRange = 0x00000001, + kIOHIDDigitizerEventTouch = 0x00000002, + kIOHIDDigitizerEventPosition = 0x00000004, + kIOHIDDigitizerEventStop = 0x00000008, + kIOHIDDigitizerEventPeak = 0x00000010, + kIOHIDDigitizerEventIdentity = 0x00000020, + kIOHIDDigitizerEventAttribute = 0x00000040, + kIOHIDDigitizerEventCancel = 0x00000080, + kIOHIDDigitizerEventStart = 0x00000100, + kIOHIDDigitizerEventResting = 0x00000200, + kIOHIDDigitizerEventSwipeUp = 0x01000000, + kIOHIDDigitizerEventSwipeDown = 0x02000000, + kIOHIDDigitizerEventSwipeLeft = 0x04000000, + kIOHIDDigitizerEventSwipeRight = 0x08000000, + kIOHIDDigitizerEventSwipeMask = 0xFF000000, +}; +enum { + kIOHIDEventFieldDigitizerX = IOHIDEventFieldBase(kIOHIDEventTypeDigitizer), + kIOHIDEventFieldDigitizerY, + kIOHIDEventFieldDigitizerZ, + kIOHIDEventFieldDigitizerButtonMask, + kIOHIDEventFieldDigitizerType, + kIOHIDEventFieldDigitizerIndex, + kIOHIDEventFieldDigitizerIdentity, + kIOHIDEventFieldDigitizerEventMask, + kIOHIDEventFieldDigitizerRange, + kIOHIDEventFieldDigitizerTouch, + kIOHIDEventFieldDigitizerPressure, + kIOHIDEventFieldDigitizerAuxiliaryPressure, //BarrelPressure + kIOHIDEventFieldDigitizerTwist, + kIOHIDEventFieldDigitizerTiltX, + kIOHIDEventFieldDigitizerTiltY, + kIOHIDEventFieldDigitizerAltitude, + kIOHIDEventFieldDigitizerAzimuth, + kIOHIDEventFieldDigitizerQuality, + kIOHIDEventFieldDigitizerDensity, + kIOHIDEventFieldDigitizerIrregularity, + kIOHIDEventFieldDigitizerMajorRadius, + kIOHIDEventFieldDigitizerMinorRadius, + kIOHIDEventFieldDigitizerCollection, + kIOHIDEventFieldDigitizerCollectionChord, + kIOHIDEventFieldDigitizerChildEventMask, + kIOHIDEventFieldDigitizerIsDisplayIntegrated, + kIOHIDEventFieldDigitizerQualityRadiiAccuracy, +}; +IOHIDEventRef IOHIDEventCreateDigitizerEvent(CFAllocatorRef allocator, AbsoluteTime timeStamp, IOHIDDigitizerTransducerType type, + uint32_t index, uint32_t identity, uint32_t eventMask, uint32_t buttonMask, + IOHIDFloat x, IOHIDFloat y, IOHIDFloat z, IOHIDFloat tipPressure, IOHIDFloat barrelPressure, + Boolean range, Boolean touch, IOOptionBits options); +IOHIDEventRef IOHIDEventCreateDigitizerFingerEventWithQuality(CFAllocatorRef allocator, AbsoluteTime timeStamp, + uint32_t index, uint32_t identity, uint32_t eventMask, + IOHIDFloat x, IOHIDFloat y, IOHIDFloat z, IOHIDFloat tipPressure, IOHIDFloat twist, + IOHIDFloat minorRadius, IOHIDFloat majorRadius, IOHIDFloat quality, IOHIDFloat density, IOHIDFloat irregularity, + Boolean range, Boolean touch, IOOptionBits options); + +IOHIDEventRef kif_IOHIDEventWithTouches(NSArray *touches) { + uint64_t abTime = mach_absolute_time(); + AbsoluteTime timeStamp; + timeStamp.hi = (UInt32)(abTime >> 32); + timeStamp.lo = (UInt32)(abTime); + + IOHIDEventRef handEvent = IOHIDEventCreateDigitizerEvent(kCFAllocatorDefault, // allocator + timeStamp, // timestamp + kIOHIDDigitizerTransducerTypeHand, // type + 0, // index + 0, // identity + kIOHIDDigitizerEventTouch, // eventMask + 0, // buttonMask + 0, // x + 0, // y + 0, // z + 0, // tipPressure + 0, // barrelPressure + 0, // range + true, // touch + 0); // options + IOHIDEventSetIntegerValue(handEvent, kIOHIDEventFieldDigitizerIsDisplayIntegrated, true); + + for (UITouch *touch in touches) + { + uint32_t eventMask = (touch.phase == UITouchPhaseMoved) ? kIOHIDDigitizerEventPosition : (kIOHIDDigitizerEventRange | kIOHIDDigitizerEventTouch); + uint32_t isTouching = (touch.phase == UITouchPhaseEnded) ? 0 : 1; + + CGPoint touchLocation = [touch locationInView:touch.window]; + + IOHIDEventRef fingerEvent = IOHIDEventCreateDigitizerFingerEventWithQuality(kCFAllocatorDefault, // allocator + timeStamp, // timestamp + (UInt32)[touches indexOfObject:touch] + 1, //index + 2, // identity + eventMask, // eventMask + (IOHIDFloat)touchLocation.x, // x + (IOHIDFloat)touchLocation.y, // y + 0.0, // z + 0, // tipPressure + 0, // twist + 5.0, // minor radius + 5.0, // major radius + 1.0, // quality + 1.0, // density + 1.0, // irregularity + (IOHIDFloat)isTouching, // range + (IOHIDFloat)isTouching, // touch + 0); // options + IOHIDEventSetIntegerValue(fingerEvent, kIOHIDEventFieldDigitizerIsDisplayIntegrated, 1); + + IOHIDEventAppendEvent(handEvent, fingerEvent); + CFRelease(fingerEvent); + } + + return handEvent; +} \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF-Prefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF-Prefix.pch new file mode 100755 index 000000000..69b4274ea --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'KIF' target in the 'KIF' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF-XCTestPrefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF-XCTestPrefix.pch new file mode 100755 index 000000000..51c42519c --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF-XCTestPrefix.pch @@ -0,0 +1,8 @@ +// +// Prefix header for all source files of the 'KIF' target in the 'KIF' project +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF.h new file mode 100755 index 000000000..a8c00a37b --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIF.h @@ -0,0 +1,16 @@ +// +// KIF.h +// KIF +// +// Created by Jim Puls on 12/21/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "KIFTestActor.h" +#import "KIFTestCase.h" +#import "KIFSystemTestActor.h" +#import "KIFUITestActor.h" +#import "KIFUITestActor-ConditionalTests.h" + +#import "XCTestCase-KIFAdditions.h" diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFAccessibilityEnabler.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFAccessibilityEnabler.h new file mode 100755 index 000000000..ba77decb9 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFAccessibilityEnabler.h @@ -0,0 +1,13 @@ +// +// KIFAccessibilityEnabler.h +// KIF +// +// Created by Timothy Clem on 10/11/15. +// +// + +#import + +@interface KIFAccessibilityEnabler : NSObject + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFAccessibilityEnabler.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFAccessibilityEnabler.m new file mode 100755 index 000000000..ea1558ece --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFAccessibilityEnabler.m @@ -0,0 +1,115 @@ +// +// KIFAccessibilityEnabler.m +// KIF +// +// Created by Timothy Clem on 10/11/15. +// +// + +#import "KIFAccessibilityEnabler.h" +#import +#import + + +#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000 +@protocol XCTestObservation +@end + +@interface XCTestObservationCenter : NSObject ++ (XCTestObservationCenter *)sharedTestObservationCenter; +- (void)addTestObserver:(id )testObserver; +@end +#endif + + +@interface AccessibilitySettingsController +- (void)setAXInspectorEnabled:(NSNumber*)enabled specifier:(id)specifier; +- (NSNumber *)AXInspectorEnabled:(id)specifier; +@end + + +@interface KIFAccessibilityEnabler () + +@property (nonatomic, strong) id axSettingPrefController; +@property (nonatomic, strong) NSNumber *initialAccessibilityInspectorSetting; + +@end + + +@implementation KIFAccessibilityEnabler + ++ (void)load +{ + @autoreleasepool { + if ([XCTestObservationCenter respondsToSelector:@selector(sharedTestObservationCenter)]) { + XCTestObservationCenter *observationCenter = [XCTestObservationCenter sharedTestObservationCenter]; + [observationCenter addTestObserver:[self sharedAccessibilityEnabler]]; + } + } +} + ++ (instancetype)sharedAccessibilityEnabler +{ + static dispatch_once_t onceToken; + static KIFAccessibilityEnabler *_sharedAccessibilityEnabler; + dispatch_once(&onceToken, ^{ + _sharedAccessibilityEnabler = [[self alloc] init]; + }); + + return _sharedAccessibilityEnabler; +} + +- (void)_enableAccessibility +{ + NSDictionary *environment = [[NSProcessInfo processInfo] environment]; + NSString *simulatorRoot = [environment objectForKey:@"IPHONE_SIMULATOR_ROOT"]; + + NSString *appSupportLocation = @"/System/Library/PrivateFrameworks/AppSupport.framework/AppSupport"; + if (simulatorRoot) { + appSupportLocation = [simulatorRoot stringByAppendingString:appSupportLocation]; + } + + void *appSupportLibrary = dlopen([appSupportLocation fileSystemRepresentation], RTLD_LAZY); + + CFStringRef (*copySharedResourcesPreferencesDomainForDomain)(CFStringRef domain) = dlsym(appSupportLibrary, "CPCopySharedResourcesPreferencesDomainForDomain"); + + if (copySharedResourcesPreferencesDomainForDomain) { + CFStringRef accessibilityDomain = copySharedResourcesPreferencesDomainForDomain(CFSTR("com.apple.Accessibility")); + + if (accessibilityDomain) { + CFPreferencesSetValue(CFSTR("ApplicationAccessibilityEnabled"), kCFBooleanTrue, accessibilityDomain, kCFPreferencesAnyUser, kCFPreferencesAnyHost); + CFRelease(accessibilityDomain); + } + } + + NSString* accessibilitySettingsBundleLocation = @"/System/Library/PreferenceBundles/AccessibilitySettings.bundle/AccessibilitySettings"; + if (simulatorRoot) { + accessibilitySettingsBundleLocation = [simulatorRoot stringByAppendingString:accessibilitySettingsBundleLocation]; + } + const char *accessibilitySettingsBundlePath = [accessibilitySettingsBundleLocation fileSystemRepresentation]; + void* accessibilitySettingsBundle = dlopen(accessibilitySettingsBundlePath, RTLD_LAZY); + if (accessibilitySettingsBundle) { + Class axSettingsPrefControllerClass = NSClassFromString(@"AccessibilitySettingsController"); + self.axSettingPrefController = [[axSettingsPrefControllerClass alloc] init]; + + self.initialAccessibilityInspectorSetting = [self.axSettingPrefController AXInspectorEnabled:nil]; + [self.axSettingPrefController setAXInspectorEnabled:@(YES) specifier:nil]; + } +} + +- (void)_resetAccessibilityInspector +{ + [self.axSettingPrefController setAXInspectorEnabled:self.initialAccessibilityInspectorSetting specifier:nil]; +} + +- (void)testBundleWillStart:(NSBundle *)testBundle +{ + [self _enableAccessibility]; +} + +- (void)testBundleDidFinish:(NSBundle *)testBundle +{ + [self _resetAccessibilityInspector]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFSystemTestActor.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFSystemTestActor.h new file mode 100755 index 000000000..b5b5c2032 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFSystemTestActor.h @@ -0,0 +1,79 @@ +// +// KIFTester+Generic.h +// KIF +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "KIFTestActor.h" +#import + +#define system KIFActorWithClass(KIFSystemTestActor) + +@interface KIFSystemTestActor : KIFTestActor + +/*! + @abstract Waits for a specific NSNotification. + @discussion Useful when a test requires an asynchronous task to complete, especially when that task does not trigger a visible change in the view hierarchy. + @param name The name of the NSNotification. + @param object The object to which the step should listen. Nil value will listen to all objects. + @return The detected NSNotification. + */ +- (NSNotification *)waitForNotificationName:(NSString*)name object:(id)object; + +/*! + @abstract Waits for a specific NSNotification, emitted during or after execution of a block. + @discussion Useful when step execution causes a notification to be emitted, but executes too quickly for waitForNotificationName: to observe it. + An observer will be registered for the notification before the block is executed. + @param name The name of the NSNotification. + @param object The object to which the step should listen. Nil value will listen to all objects. + @param block The block of code to be executed. + @return The detected NSNotification. + */ +- (NSNotification *)waitForNotificationName:(NSString *)name object:(id)object whileExecutingBlock:(void(^)())block; + +/*! + @abstract Simulates a memory warning. + */ +- (void)simulateMemoryWarning; + +/*! + @abstract Simulates a device rotation to a specific orentation from its last set orientation. + @discussion The first time this method is called, it will be from the device's natural orientation to the orientation described. + @param orientation The desired orientation. + */ +- (void)simulateDeviceRotationToOrientation:(UIDeviceOrientation)orientation; + +/*! + @abstract Waits for the application to request a specific URL while executing a block. + @param URLString The absolute string representation of the URL to detect. + @param block The block of code to be executed. + @param returnValue The value to return from @c +[UIApplication openURL:]. + */ +- (void)waitForApplicationToOpenURL:(NSString *)URLString whileExecutingBlock:(void(^)())block returning:(BOOL)returnValue; + +/*! + @abstract Waits for the application to request any URL while executing a block. + @param block The block of code to be executed. + @param returnValue The value to return from @c +[UIApplication openURL:]. + */ +- (void)waitForApplicationToOpenAnyURLWhileExecutingBlock:(void(^)())block returning:(BOOL)returnValue; + +/*! + @abstract Waits for the application to request any URL with the given URL Scheme while executing a block. + @param URLScheme The scheme component of the URL to detect. + @param block The block of code to be executed. + @param returnValue The value to return from @c +[UIApplication openURL:]. + */ +- (void)waitForApplicationToOpenURLWithScheme:(NSString *)URLScheme whileExecutingBlock:(void (^)())block returning:(BOOL)returnValue; + +/*! + @abstract Captured a screenshot of the current screen and writes it to disk with an optional description. + @discussion This step will fail if the @c KIF_SCREENSHOTS environment variable is not set or if the screenshot cannot be written to disk. + @param description A description to use when writing the file to disk. + */ +- (void)captureScreenshotWithDescription:(NSString *)description; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFSystemTestActor.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFSystemTestActor.m new file mode 100755 index 000000000..959e5dcea --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFSystemTestActor.m @@ -0,0 +1,115 @@ +// +// KIFTester+Generic.m +// KIF +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "KIFSystemTestActor.h" +#import +#import "UIApplication-KIFAdditions.h" +#import "NSError-KIFAdditions.h" + +@implementation KIFSystemTestActor + +- (NSNotification *)waitForNotificationName:(NSString*)name object:(id)object +{ + return [self waitForNotificationName:name object:object whileExecutingBlock:nil]; +} + +- (NSNotification *)waitForNotificationName:(NSString *)name object:(id)object whileExecutingBlock:(void(^)())block +{ + return [self waitForNotificationName:name object:object whileExecutingBlock:block complete:nil]; +} + +- (NSNotification *)waitForNotificationName:(NSString *)name object:(id)object whileExecutingBlock:(void(^)())block complete:(void(^)())complete +{ + __block NSNotification *detectedNotification = nil; + id observer = [[NSNotificationCenter defaultCenter] addObserverForName:name object:object queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { + detectedNotification = note; + }]; + + if (block) { + block(); + } + + [self runBlock:^KIFTestStepResult(NSError **error) { + KIFTestWaitCondition(detectedNotification, error, @"Waiting for notification \"%@\"", name); + return KIFTestStepResultSuccess; + } complete:^(KIFTestStepResult result, NSError *error) { + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + + if (complete) { + complete(); + } + }]; + + return detectedNotification; +} + +- (void)simulateMemoryWarning +{ + [[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidReceiveMemoryWarningNotification object:[UIApplication sharedApplication]]; +} + +- (void)simulateDeviceRotationToOrientation:(UIDeviceOrientation)orientation +{ + [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:orientation] forKey:@"orientation"]; +} + + +- (void)waitForApplicationToOpenAnyURLWhileExecutingBlock:(void (^)())block returning:(BOOL)returnValue +{ + [self waitForApplicationToOpenURL:nil whileExecutingBlock:block returning:returnValue]; +} + +- (void)waitForApplicationToOpenURLWithScheme:(NSString *)URLScheme whileExecutingBlock:(void (^)())block returning:(BOOL)returnValue { + [self waitForApplicationToOpenURLMatchingBlock:^(NSURL *actualURL){ + if (URLScheme && ![URLScheme isEqualToString:actualURL.scheme]) { + [self failWithError:[NSError KIFErrorWithFormat:@"Expected %@ to start with %@", actualURL.absoluteString, URLScheme] stopTest:YES]; + } + } whileExecutingBlock:block returning:returnValue]; +} + +- (void)waitForApplicationToOpenURL:(NSString *)URLString whileExecutingBlock:(void (^)())block returning:(BOOL)returnValue { + [self waitForApplicationToOpenURLMatchingBlock:^(NSURL *actualURL){ + + if (URLString && ![[actualURL absoluteString] isEqualToString:URLString]) { + [self failWithError:[NSError KIFErrorWithFormat:@"Expected %@, got %@", URLString, actualURL.absoluteString] stopTest:YES]; + } + } whileExecutingBlock:block returning:returnValue]; +} + +- (void)waitForApplicationToOpenURLMatchingBlock:(void (^)(NSURL *actualURL))URLMatcherBlock whileExecutingBlock:(void (^)())block returning:(BOOL)returnValue +{ + [UIApplication startMockingOpenURLWithReturnValue:returnValue]; + + id canOpenURLObserver = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidMockCanOpenURLNotification object:[UIApplication sharedApplication] queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { + if (URLMatcherBlock) { + NSURL *actualURL = [notification.userInfo objectForKey:UIApplicationOpenedURLKey]; + URLMatcherBlock(actualURL); + } + }]; + + NSNotification *notification = [self waitForNotificationName:UIApplicationDidMockOpenURLNotification object:[UIApplication sharedApplication] whileExecutingBlock:block complete:^{ + [UIApplication stopMockingOpenURL]; + [[NSNotificationCenter defaultCenter] removeObserver:canOpenURLObserver]; + }]; + + if (URLMatcherBlock) { + NSURL *actualURL = [notification.userInfo objectForKey:UIApplicationOpenedURLKey]; + URLMatcherBlock(actualURL); + } +} + +- (void)captureScreenshotWithDescription:(NSString *)description +{ + NSError *error; + if (![[UIApplication sharedApplication] writeScreenshotForLine:(NSUInteger)self.line inFile:self.file description:description error:&error]) { + [self failWithError:error stopTest:NO]; + } +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestActor.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestActor.h new file mode 100755 index 000000000..bbea43f50 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestActor.h @@ -0,0 +1,173 @@ +// +// KIFTester.h +// KIF +// +// Created by Brian Nickel on 12/13/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +#ifdef DEPRECATED_MSG_ATTRIBUTE +#define KIF_DEPRECATED(m) DEPRECATED_MSG_ATTRIBUTE(m) +#else +#define KIF_DEPRECATED(m) +#endif + +#define KIFActorWithClass(clazz) [clazz actorInFile:[NSString stringWithUTF8String:__FILE__] atLine:__LINE__ delegate:self] + +/*! + @define KIFTestCondition + @abstract Tests a condition and returns a failure result if the condition isn't true. + @discussion This is a useful macro for quickly evaluating conditions in a test step. If the condition is false then the current test step will be aborted with a failure result. + @param condition The condition to test. + @param error The NSError object to put the error string into. May be nil, but should usually be the error parameter from the test step execution block. + @param ... A string describing what the failure was that occurred. This may be a format string with additional arguments. + */ +#define KIFTestCondition(condition, error, ...) ({ \ +if (!(condition)) { \ +if (error) { \ +*error = [NSError errorWithDomain:@"KIFTest" code:KIFTestStepResultFailure userInfo:[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:__VA_ARGS__], NSLocalizedDescriptionKey, nil]]; \ +} \ +return KIFTestStepResultFailure; \ +} \ +}) + +/*! + @define KIFTestWaitCondition + @abstract Tests a condition and returns a wait result if the condition isn't true. + @discussion This is a useful macro for quickly evaluating conditions in a test step. If the condition is false then the current test step will be aborted with a wait result, indicating that it should be called again in the near future. + @param condition The condition to test. + @param error The NSError object to put the error string into. May be nil, but should usually be the error parameter from the test step execution block. + @param ... A string describing why the step needs to wait. This is important since this reason will be considered the cause of a timeout error if the step requires waiting for too long. This may be a format string with additional arguments. + */ +#define KIFTestWaitCondition(condition, error, ...) ({ \ +if (!(condition)) { \ +if (error) { \ +*error = [NSError errorWithDomain:@"KIFTest" code:KIFTestStepResultWait userInfo:[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:__VA_ARGS__], NSLocalizedDescriptionKey, nil]]; \ +} \ +return KIFTestStepResultWait; \ +} \ +}) + + +/*! + @enum KIFTestStepResult + @abstract Result codes from a test step. + @constant KIFTestStepResultFailure The step failed and the test controller should move to the next scenario. + @constant KIFTestStepResultSuccess The step succeeded and the test controller should move to the next step in the current scenario. + @constant KIFTestStepResultWait The test isn't ready yet and should be tried again after a short delay. + */ +typedef NS_ENUM(NSUInteger, KIFTestStepResult) { + KIFTestStepResultFailure = 0, + KIFTestStepResultSuccess, + KIFTestStepResultWait, +}; + +/*! + @typedef KIFTestExecutionBlock + @param error An error to fill out in the case of a failure or wait condition. Filling out this error is mandatory in these cases to ensure that testing output is useful. + @result A test result code. Returning KIFTestStepResultWait will cause the block to be tried again on the next iteration. + */ +typedef KIFTestStepResult (^KIFTestExecutionBlock)(NSError **error); + +/*! + @typedef KIFTestCompletionBlock + @param result The result of the test, either KIFTestStepResultSuccess or KIFTestStepResultFailure. + @param error An error provided by the test or nil if result is equal to KIFTestStepResultSuccess. + */ +typedef void (^KIFTestCompletionBlock)(KIFTestStepResult result, NSError *error); + +@protocol KIFTestActorDelegate; + +@interface KIFTestActor : NSObject + ++ (instancetype)actorInFile:(NSString *)file atLine:(NSInteger)line delegate:(id)delegate; + +@property (strong, nonatomic, readonly) NSString *file; +@property (nonatomic, readonly) NSInteger line; +@property (weak, nonatomic, readonly) id delegate; +@property (nonatomic) NSTimeInterval executionBlockTimeout; +@property (nonatomic) NSTimeInterval animationWaitingTimeout; + +- (instancetype)usingTimeout:(NSTimeInterval)executionBlockTimeout; + +- (void)runBlock:(KIFTestExecutionBlock)executionBlock complete:(KIFTestCompletionBlock)completionBlock timeout:(NSTimeInterval)timeout; +- (void)runBlock:(KIFTestExecutionBlock)executionBlock complete:(KIFTestCompletionBlock)completionBlock; +- (void)runBlock:(KIFTestExecutionBlock)executionBlock timeout:(NSTimeInterval)timeout; +- (void)runBlock:(KIFTestExecutionBlock)executionBlock; + + +/*! + @discussion Attempts to run the test block similar to -runBlock:complete:timeout: but does not halt the test on completion, instead returning NO on failure and providing an error description to the optional error parameter. + */ +- (BOOL)tryRunningBlock:(KIFTestExecutionBlock)executionBlock complete:(KIFTestCompletionBlock)completionBlock timeout:(NSTimeInterval)timeout error:(out NSError **)error; + +/*! + @method defaultAnimationWaitingTimeout + @abstract The default amount of time to wait for an animation to complete. + @discussion To change the default value of the timeout property, call +setDefaultAnimationWaitingTimeout: with a different value. + */ ++ (NSTimeInterval)defaultAnimationWaitingTimeout; + +/*! + @method setDefaultAnimationWaitingTimeout: + @abstract Sets the default amount of time to wait for an animation to complete. + */ ++ (void)setDefaultAnimationWaitingTimeout:(NSTimeInterval)newDefaultAnimationWaitingTimeout; + +/*! + @method defaultTimeout + @abstract The default amount of time to assign to execution blocks before assuming they failed. + @discussion To change the default value of the timeout property, call +setDefaultTimeout: with a different value. + */ ++ (NSTimeInterval)defaultTimeout; + +/*! + @method setDefaultTimeout: + @abstract Sets the default amount of time to assign to execution blocks before assuming they failed. + */ ++ (void)setDefaultTimeout:(NSTimeInterval)newDefaultTimeout; + +/*! + @method stepDelay + @abstract The amount of time that execution blocks use before trying again to met desired conditions. + @discussion To change the default value of the step delay property, call +setStepDelay: with a different value. + */ ++ (NSTimeInterval)stepDelay; + +/*! + @method setStepDelay: + @abstract Sets the amount of time that execution blocks use before trying again to met desired conditions. + */ ++ (void)setStepDelay:(NSTimeInterval)newStepDelay; + +/*! + @abstract Fails the test. + @discussion Mostly useful for test debugging or as a placeholder when building new tests. + */ +- (void)fail; + +- (void)failWithError:(NSError *)error stopTest:(BOOL)stopTest; + +/*! + @abstract Waits for a certain amount of time before returning. + @discussion In general when waiting for the app to get into a known state, it's better to use -waitForTappableViewWithAccessibilityLabel:, however this step may be useful in some situations as well. + @param timeInterval The number of seconds to wait before returning. + */ +- (void)waitForTimeInterval:(NSTimeInterval)timeInterval; + + + +@end + +@protocol KIFTestActorDelegate + +- (void)failWithException:(NSException *)exception stopTest:(BOOL)stop; +- (void)failWithExceptions:(NSArray *)exceptions stopTest:(BOOL)stop; + +@end + +@interface KIFTestActor (Delegate) +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestActor.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestActor.m new file mode 100755 index 000000000..8f9f5ac33 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestActor.m @@ -0,0 +1,180 @@ +// +// KIFTester.m +// KIF +// +// Created by Brian Nickel on 12/13/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import +#import "NSException-KIFAdditions.h" +#import "KIFTestActor.h" +#import "NSError-KIFAdditions.h" +#import +#import +#import "UIApplication-KIFAdditions.h" +#import "UIView-KIFAdditions.h" + +@implementation KIFTestActor + ++ (void)load +{ + @autoreleasepool { + NSLog(@"KIFTester loaded"); + [UIApplication swizzleRunLoop]; + } +} + +- (instancetype)initWithFile:(NSString *)file line:(NSInteger)line delegate:(id)delegate +{ + self = [super init]; + if (self) { + _file = file; + _line = line; + _delegate = delegate; + _executionBlockTimeout = [[self class] defaultTimeout]; + _animationWaitingTimeout = [[self class] defaultAnimationWaitingTimeout]; + } + return self; +} + ++ (instancetype)actorInFile:(NSString *)file atLine:(NSInteger)line delegate:(id)delegate +{ + return [[self alloc] initWithFile:file line:line delegate:delegate]; +} + +- (instancetype)usingTimeout:(NSTimeInterval)executionBlockTimeout +{ + self.executionBlockTimeout = executionBlockTimeout; + return self; +} + +- (BOOL)tryRunningBlock:(KIFTestExecutionBlock)executionBlock complete:(KIFTestCompletionBlock)completionBlock timeout:(NSTimeInterval)timeout error:(out NSError **)error +{ + NSDate *startDate = [NSDate date]; + KIFTestStepResult result; + NSError *internalError; + + while ((result = executionBlock(&internalError)) == KIFTestStepResultWait && -[startDate timeIntervalSinceNow] < timeout) { + CFRunLoopRunInMode([[UIApplication sharedApplication] currentRunLoopMode] ?: kCFRunLoopDefaultMode, KIFTestStepDelay, false); + } + + if (result == KIFTestStepResultWait) { + internalError = [NSError KIFErrorWithUnderlyingError:internalError format:@"The step timed out after %.2f seconds: %@", timeout, internalError.localizedDescription]; + result = KIFTestStepResultFailure; + } + + if (completionBlock) { + completionBlock(result, internalError); + } + + if (error) { + *error = internalError; + } + + return result != KIFTestStepResultFailure; +} + +- (void)runBlock:(KIFTestExecutionBlock)executionBlock complete:(KIFTestCompletionBlock)completionBlock timeout:(NSTimeInterval)timeout +{ + NSError *error = nil; + if (![self tryRunningBlock:executionBlock complete:completionBlock timeout:timeout error:&error]) { + [self failWithError:error stopTest:YES]; + } +} + +- (void)runBlock:(KIFTestExecutionBlock)executionBlock complete:(KIFTestCompletionBlock)completionBlock +{ + [self runBlock:executionBlock complete:completionBlock timeout:self.executionBlockTimeout]; +} + +- (void)runBlock:(KIFTestExecutionBlock)executionBlock timeout:(NSTimeInterval)timeout +{ + [self runBlock:executionBlock complete:nil timeout:timeout]; +} + +- (void)runBlock:(KIFTestExecutionBlock)executionBlock +{ + [self runBlock:executionBlock complete:nil]; +} + + +#pragma mark Class Methods + +static NSTimeInterval KIFTestStepDefaultAnimationWaitingTimeout = 0.5; +static NSTimeInterval KIFTestStepDefaultTimeout = 10.0; +static NSTimeInterval KIFTestStepDelay = 0.1; + ++ (NSTimeInterval)defaultAnimationWaitingTimeout +{ + return KIFTestStepDefaultAnimationWaitingTimeout; +} + ++ (void)setDefaultAnimationWaitingTimeout:(NSTimeInterval)newDefaultAnimationWaitingTimeout; +{ + KIFTestStepDefaultAnimationWaitingTimeout = newDefaultAnimationWaitingTimeout; +} + ++ (NSTimeInterval)defaultTimeout; +{ + return KIFTestStepDefaultTimeout; +} + ++ (void)setDefaultTimeout:(NSTimeInterval)newDefaultTimeout; +{ + KIFTestStepDefaultTimeout = newDefaultTimeout; +} + ++ (NSTimeInterval)stepDelay; +{ + return KIFTestStepDelay; +} + ++ (void)setStepDelay:(NSTimeInterval)newStepDelay; +{ + KIFTestStepDelay = newStepDelay; +} + +#pragma mark Generic tests + +- (void)fail +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + KIFTestCondition(NO, error, @"This test always fails"); + }]; +} + +- (void)failWithError:(NSError *)error stopTest:(BOOL)stopTest +{ + [self.delegate failWithException:[NSException failureInFile:self.file atLine:(int)self.line withDescription:error.localizedDescription] stopTest:stopTest]; +} + +- (void)waitForTimeInterval:(NSTimeInterval)timeInterval +{ + NSTimeInterval startTime = [NSDate timeIntervalSinceReferenceDate]; + + [self runBlock:^KIFTestStepResult(NSError **error) { + KIFTestWaitCondition((([NSDate timeIntervalSinceReferenceDate] - startTime) >= timeInterval), error, @"Waiting for time interval to expire."); + return KIFTestStepResultSuccess; + } timeout:timeInterval + 1]; +} + +@end + +@implementation KIFTestActor (Delegate) + +- (void)failWithException:(NSException *)exception stopTest:(BOOL)stop +{ + [self failWithExceptions:@[exception] stopTest:stop]; +} + +- (void)failWithExceptions:(NSArray *)exceptions stopTest:(BOOL)stop +{ + NSException *firstException = [exceptions objectAtIndex:0]; + NSException *newException = [NSException failureInFile:self.file atLine:(int)self.line withDescription:@"Failure in child step: %@", firstException.description]; + + [self.delegate failWithExceptions:[exceptions arrayByAddingObject:newException] stopTest:stop]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestCase.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestCase.h new file mode 100755 index 000000000..2823bdc6b --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestCase.h @@ -0,0 +1,48 @@ +// +// KIFTestCase.h +// KIF +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +/*! + * @abstract @c KIFTestCase subclasses @c XCTestCase to add setup and teardown steps that can be used to execute KIF test steps. + * @discussion This class provides four new methods: @c beforeAll and @c afterAll which run once before and after all tests and @c beforeEach and @c afterEach which run before and after every test. @c beforeEach and @c afterEach are guaranteed to run in the same instance as each test, but @c beforeAll and @c afterAll are not. As such, @c beforeEach can be used to set up instance variables while @c beforeAll can only be used to set up static variables. + */ +#import +#import "XCTestCase-KIFAdditions.h" +@interface KIFTestCase : XCTestCase + +/*! + * @abstract This method runs once before executing the first test in the class. + * @discussion This should be used for navigating to the starting point in the app where all tests will start from. Because this method is not guaranteed to run in the same instance as tests, it should not be used for setting up instance variables but can be used for setting up static variables. + */ +- (void)beforeAll; + +/*! + * @abstract This method runs before each test. + * @discussion This should be used for any common tasks required before each test. Because this method is guaranteed to run in the same instance as tests, it can be used for setting up instance variables. + */ +- (void)beforeEach; + +/*! + * @abstract This method runs after each test. + * @discussion This should be used for restoring the app to the state it was in before the test. This could include conditional logic to recover from failed tests. + */ +- (void)afterEach; + +/*! + * @abstract This method runs once after executing the last test in the class. + * @discussion This should be used for navigating back to the initial state of the app, where it was before @c beforeAll. This should also be used for tearing down any static methods created by @c beforeAll. + */ +- (void)afterAll; + +/*! + * @discussion When @c YES, rather than failing the test and advancing on the first failure, KIF will stop executing tests and begin spinning the run loop. This provides an opportunity for inspecting the state of the app when the failure occurred. + */ +@property (nonatomic, assign) BOOL stopTestsOnFirstBigFailure; + +@end + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestCase.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestCase.m new file mode 100755 index 000000000..c9a096c86 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestCase.m @@ -0,0 +1,132 @@ +// +// KIFTestCase.m +// KIF +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "KIFTestCase.h" +#import +#import "UIApplication-KIFAdditions.h" +#import "KIFTestActor.h" + +#define SIG(class, selector) [class instanceMethodSignatureForSelector:selector] + +@implementation KIFTestCase +{ + NSException *_stoppingException; +} + +NSComparisonResult selectorSort(NSInvocation *invocOne, NSInvocation *invocTwo, void *reverse); + ++ (id)defaultTestSuite +{ + if (self == [KIFTestCase class]) { + // Don't run KIFTestCase "tests" + return nil; + } + + return [super defaultTestSuite]; +} + +- (id)initWithInvocation:(NSInvocation *)anInvocation; +{ + self = [super initWithInvocation:anInvocation]; + if (!self) { + return nil; + } + + self.continueAfterFailure = NO; + return self; +} + +- (void)beforeEach { } +- (void)afterEach { } +- (void)beforeAll { } +- (void)afterAll { } + +NSComparisonResult selectorSort(NSInvocation *invocOne, NSInvocation *invocTwo, void *reverse) { + + NSString *selectorOne = NSStringFromSelector([invocOne selector]); + NSString *selectorTwo = NSStringFromSelector([invocTwo selector]); + return [selectorOne compare:selectorTwo options:NSCaseInsensitiveSearch]; +} + ++ (NSArray *)testInvocations +{ + NSArray *disorderedInvoc = [super testInvocations]; + NSArray *newArray = [disorderedInvoc sortedArrayUsingFunction:selectorSort context:NULL]; + return newArray; +} + ++ (void)setUp +{ + [self performSetupTearDownWithSelector:@selector(beforeAll)]; +} + ++ (void)tearDown +{ + [self performSetupTearDownWithSelector:@selector(afterAll)]; +} + ++ (void)performSetupTearDownWithSelector:(SEL)selector +{ + KIFTestCase *testCase = [self testCaseWithSelector:selector]; + if ([testCase respondsToSelector:selector]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + [testCase performSelector:selector]; +#pragma clang diagnostic pop + } + + if (testCase->_stoppingException) { + [testCase->_stoppingException raise]; + } +} + +- (void)setUp; +{ + [super setUp]; + + if ([self isNotBeforeOrAfter]) { + [self beforeEach]; + } +} + +- (void)tearDown; +{ + if ([self isNotBeforeOrAfter]) { + [self afterEach]; + } + + [super tearDown]; +} + +- (BOOL)isNotBeforeOrAfter; +{ + SEL selector = self.invocation.selector; + return selector != @selector(beforeAll) && selector != @selector(afterAll); +} + +- (void)failWithException:(NSException *)exception stopTest:(BOOL)stop +{ + if (stop) { + _stoppingException = exception; + } + + if (stop && self.stopTestsOnFirstBigFailure) { + NSLog(@"Fatal failure encountered: %@", exception.description); + NSLog(@"Stopping tests since stopTestsOnFirstBigFailure = YES"); + + KIFTestActor *waiter = [[KIFTestActor alloc] init]; + [waiter waitForTimeInterval:[[NSDate distantFuture] timeIntervalSinceNow]]; + + return; + } else { + [super failWithException:exception stopTest:stop]; + } +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestStepValidation.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestStepValidation.h new file mode 100755 index 000000000..796e76165 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestStepValidation.h @@ -0,0 +1,51 @@ +// +// KIFTestStepValidation.h +// KIF +// +// Created by Brian Nickel on 7/27/13. +// +// + +#import +#import "KIFTestCase.h" + +#define __KIFFail XCTFail +#define __KIFAssertEqual XCTAssertEqual +#define __KIFAssertEqualObjects XCTAssertEqualObjects + +#define KIFExpectFailure(stmt) \ +{\ + _MockKIFTestActorDelegate *mockDelegate = [_MockKIFTestActorDelegate mockDelegate];\ + {\ + _MockKIFTestActorDelegate *self = mockDelegate;\ + @try { stmt; }\ + @catch (NSException *exception) { }\ + }\ + if (!mockDelegate.failed) {\ + __KIFFail(@"%s should have failed.", #stmt);\ + }\ +} + +#define KIFExpectFailureWithCount(stmt, cnt) \ +{\ + _MockKIFTestActorDelegate *mockDelegate = [_MockKIFTestActorDelegate mockDelegate];\ + {\ + _MockKIFTestActorDelegate *self = mockDelegate;\ + @try { stmt; }\ + @catch (NSException *exception) { }\ + }\ + if (!mockDelegate.failed) {\ + __KIFFail(@"%s should have failed.", #stmt);\ + }\ + __KIFAssertEqual((NSUInteger)cnt, mockDelegate.exceptions.count, @"Expected a different number of exceptions.");\ +} + + +@interface _MockKIFTestActorDelegate : NSObject +@property (nonatomic, assign) BOOL failed; +@property (nonatomic, strong) NSArray *exceptions; +@property (nonatomic, assign) BOOL stopped; + ++ (instancetype)mockDelegate; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestStepValidation.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestStepValidation.m new file mode 100755 index 000000000..9828503ae --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTestStepValidation.m @@ -0,0 +1,34 @@ +// +// KIFTestStepValidation.m +// KIF +// +// Created by Brian Nickel on 7/27/13. +// +// + +#import "KIFTestStepValidation.h" + +@implementation _MockKIFTestActorDelegate + +- (void)failWithException:(NSException *)exception stopTest:(BOOL)stop +{ + [self failWithExceptions:@[exception] stopTest:stop]; +} + +- (void)failWithExceptions:(NSArray *)exceptions stopTest:(BOOL)stop +{ + self.failed = YES; + self.exceptions = exceptions; + self.stopped = stop; + if (stop) { + [[exceptions objectAtIndex:0] raise]; + } +} + ++ (instancetype)mockDelegate +{ + return [[self alloc] init]; +} + + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTypist.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTypist.h new file mode 100755 index 000000000..b3a0866eb --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTypist.h @@ -0,0 +1,20 @@ +// +// KIFTypist.h +// KIF +// +// Created by Pete Hodgson on 8/12/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + + +@interface KIFTypist : NSObject + ++ (void)registerForNotifications; ++ (BOOL)keyboardHidden; ++ (BOOL)enterCharacter:(NSString *)characterString; ++ (void)setKeystrokeDelay:(NSTimeInterval)delay; ++ (BOOL)hasHardwareKeyboard; ++ (BOOL)hasKeyInputResponder; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTypist.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTypist.m new file mode 100755 index 000000000..bb5dc57cd --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFTypist.m @@ -0,0 +1,112 @@ +// +// KIFTypist.m +// KIF +// +// Created by Pete Hodgson on 8/12/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "KIFTypist.h" +#import "UIApplication-KIFAdditions.h" +#import "UIView-KIFAdditions.h" +#import "CGGeometry-KIFAdditions.h" +#import "UIAccessibilityElement-KIFAdditions.h" + +@interface UIKeyboardImpl : NSObject ++ (UIKeyboardImpl *)sharedInstance; +- (void)addInputString:(NSString *)string; +- (void)deleteFromInput; +@property(getter=isInHardwareKeyboardMode) BOOL inHardwareKeyboardMode; +@property(retain) UIResponder * delegate; +@end + +static NSTimeInterval keystrokeDelay = 0.01f; + +@interface KIFTypist() +@property (nonatomic, assign) BOOL keyboardHidden; +@end + +@implementation KIFTypist + ++ (KIFTypist *)sharedTypist +{ + static dispatch_once_t once; + static KIFTypist *sharedObserver = nil; + dispatch_once(&once, ^{ + sharedObserver = [[self alloc] init]; + }); + return sharedObserver; +} + ++ (void)registerForNotifications { + [[self sharedTypist] registerForNotifications]; +} + +- (instancetype)init +{ + if ((self = [super init])) { + self.keyboardHidden = YES; + } + return self; +} + +- (void)registerForNotifications +{ + // Instead of listening to keyboard will show/hide notifications, this is more robust. When keyboard is split + // on a physical device, keyboard will show/hide notifications does not get fired, whereas this does. + __weak KIFTypist *weakSelf = self; + [[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardDidChangeFrameNotification + object:nil + queue:[NSOperationQueue mainQueue] + usingBlock:^(NSNotification *note) { + CGRect keyboardEndFrame = + [[note.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + + CGRect screenRect = [[UIScreen mainScreen] bounds]; + + if (CGRectIntersectsRect(keyboardEndFrame, screenRect)) + { + weakSelf.keyboardHidden = NO; + } + else + { + weakSelf.keyboardHidden = YES; + } + }]; +} + ++ (BOOL)keyboardHidden +{ + return [self sharedTypist].keyboardHidden; +} + ++ (BOOL)enterCharacter:(NSString *)characterString; +{ + if ([characterString isEqualToString:@"\b"]) { + [[UIKeyboardImpl sharedInstance] deleteFromInput]; + } else { + [[UIKeyboardImpl sharedInstance] addInputString:characterString]; + } + + CFRunLoopRunInMode(kCFRunLoopDefaultMode, keystrokeDelay, false); + return YES; +} + ++ (void)setKeystrokeDelay:(NSTimeInterval)delay +{ + keystrokeDelay = delay; +} + ++ (BOOL)hasHardwareKeyboard +{ + return [UIKeyboardImpl sharedInstance].inHardwareKeyboardMode; +} + ++ (BOOL)hasKeyInputResponder +{ + return [UIKeyboardImpl sharedInstance].delegate != nil; +} + + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor-ConditionalTests.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor-ConditionalTests.h new file mode 100755 index 000000000..10cdc3349 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor-ConditionalTests.h @@ -0,0 +1,68 @@ +// +// KIFUITestActor-ConditionalTests.h +// KIF +// +// Created by Brian Nickel on 7/24/14. +// +// + +#import "KIF.h" + +@interface KIFUITestActor (ConditionalTests) + +/*! + @abstract Checks if an accessibility element is visible on screen. + @discussion The view or accessibility element with the given label is searched in the view hierarchy. If the element isn't found, then NO is returned. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + @param label The accessibility label of the element to wait for. + + If the view you want to check for is tappable, use the -tryFindingTappableViewWithAccessibilityLabel: methods instead as they provide a more strict test. + + */ +- (BOOL)tryFindingViewWithAccessibilityLabel:(NSString *)label error:(out NSError **)error; + +/*! + @abstract Checks if an accessibility element is visible on screen. + @discussion The view or accessibility element with the given label is searched in the view hierarchy. If the element isn't found, then NO is returned. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + @param label The accessibility label of the element to wait for. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (BOOL)tryFindingViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits error:(out NSError **)error; + +/*! + @abstract Checks if an accessibility element is visible on screen. + @discussion The view or accessibility element with the given label is searched in the view hierarchy. If the element isn't found, then NO is returned. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + @param label The accessibility label of the element to wait for. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (BOOL)tryFindingViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits error:(out NSError **)error; + +/*! + @abstract Checks if an accessibility element is visible on screen. + @discussion The view or accessibility element with the given label is searched in the view hierarchy. If the element isn't found, then NO is returned. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + @param label The accessibility label of the element to wait for. + */ +- (BOOL)tryFindingTappableViewWithAccessibilityLabel:(NSString *)label error:(out NSError **)error; + +/*! + @abstract Checks if an accessibility element is visible on screen. + @discussion The view or accessibility element with the given label is searched in the view hierarchy. If the element isn't found, then NO is returned. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + @param label The accessibility label of the element to wait for. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (BOOL)tryFindingTappableViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits error:(out NSError **)error; + +/*! + @abstract Checks if an accessibility element is visible on screen. + @discussion The view or accessibility element with the given label is searched in the view hierarchy. If the element isn't found, then NO is returned. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + @param label The accessibility label of the element to wait for. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (BOOL)tryFindingTappableViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits error:(out NSError **)error; + +- (BOOL)tryFindingAccessibilityElement:(out UIAccessibilityElement **)element view:(out UIView **)view withIdentifier:(NSString *)identifier tappable:(BOOL)mustBeTappable error:(out NSError **)error; + +- (BOOL)tryFindingAccessibilityElement:(out UIAccessibilityElement **)element view:(out UIView **)view withElementMatchingPredicate:(NSPredicate *)predicate tappable:(BOOL)mustBeTappable error:(out NSError **)error; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor-ConditionalTests.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor-ConditionalTests.m new file mode 100755 index 000000000..d6226f0e4 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor-ConditionalTests.m @@ -0,0 +1,73 @@ +// +// KIFUITestActor-ConditionalTests.m +// KIF +// +// Created by Brian Nickel on 7/24/14. +// +// + +#import "KIFUITestActor-ConditionalTests.h" +#import "UIAccessibilityElement-KIFAdditions.h" +#import "NSError-KIFAdditions.h" + +@implementation KIFUITestActor (ConditionalTests) + +- (BOOL)tryFindingViewWithAccessibilityLabel:(NSString *)label error:(out NSError **)error +{ + return [self tryFindingViewWithAccessibilityLabel:label value:nil traits:UIAccessibilityTraitNone tappable:NO error:error]; +} + +- (BOOL)tryFindingViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits error:(out NSError **)error +{ + return [self tryFindingViewWithAccessibilityLabel:label value:nil traits:traits tappable:NO error:error]; +} + +- (BOOL)tryFindingViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits error:(out NSError **)error +{ + return [self tryFindingViewWithAccessibilityLabel:label value:value traits:traits tappable:NO error:error]; +} + +- (BOOL)tryFindingTappableViewWithAccessibilityLabel:(NSString *)label error:(out NSError **)error +{ + return [self tryFindingViewWithAccessibilityLabel:label value:nil traits:UIAccessibilityTraitNone tappable:YES error:error]; +} + +- (BOOL)tryFindingTappableViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits error:(out NSError **)error +{ + return [self tryFindingViewWithAccessibilityLabel:label value:nil traits:traits tappable:YES error:error]; +} + +- (BOOL)tryFindingTappableViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits error:(out NSError **)error +{ + return [self tryFindingViewWithAccessibilityLabel:label value:value traits:traits tappable:YES error:error]; +} + +- (BOOL)tryFindingViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits tappable:(BOOL)mustBeTappable error:(out NSError **)error +{ + return [self tryFindingAccessibilityElement:NULL view:NULL withLabel:label value:value traits:traits tappable:mustBeTappable error:error]; +} + +- (BOOL)tryFindingAccessibilityElement:(out UIAccessibilityElement **)element view:(out UIView **)view withLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits tappable:(BOOL)mustBeTappable error:(out NSError **)error +{ + return [self tryRunningBlock:^KIFTestStepResult(NSError *__autoreleasing *error) { + return [UIAccessibilityElement accessibilityElement:element view:view withLabel:label value:value traits:traits tappable:mustBeTappable error:error] ? KIFTestStepResultSuccess : KIFTestStepResultWait; + } complete:nil timeout:1.0 error:error]; +} + +- (BOOL)tryFindingAccessibilityElement:(out UIAccessibilityElement **)element view:(out UIView **)view withIdentifier:(NSString *)identifier tappable:(BOOL)mustBeTappable error:(out NSError **)error +{ + if (![UIAccessibilityElement instancesRespondToSelector:@selector(accessibilityIdentifier)]) { + [self failWithError:[NSError KIFErrorWithFormat:@"Running test on platform that does not support accessibilityIdentifier"] stopTest:YES]; + } + + return [self tryFindingAccessibilityElement:element view:view withElementMatchingPredicate:[NSPredicate predicateWithFormat:@"accessibilityIdentifier = %@", identifier] tappable:mustBeTappable error:error]; +} + +- (BOOL)tryFindingAccessibilityElement:(out UIAccessibilityElement **)element view:(out UIView **)view withElementMatchingPredicate:(NSPredicate *)predicate tappable:(BOOL)mustBeTappable error:(out NSError **)error +{ + return [self tryRunningBlock:^KIFTestStepResult(NSError *__autoreleasing *error) { + return [UIAccessibilityElement accessibilityElement:element view:view withElementMatchingPredicate:predicate tappable:mustBeTappable error:error] ? KIFTestStepResultSuccess : KIFTestStepResultWait; + } complete:nil timeout:1.0 error:error]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor.h new file mode 100755 index 000000000..61309a971 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor.h @@ -0,0 +1,569 @@ +// +// KIFTester+UI.h +// KIF +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "KIFTestActor.h" +#import +#import "UIView-KIFAdditions.h" + +#define tester KIFActorWithClass(KIFUITestActor) + +/*! + @enum KIFSwipeDirection + @abstract Directions in which to swipe. + @constant KIFSwipeDirectionRight Swipe to the right. + @constant KIFSwipeDirectionLeft Swipe to the left. + @constant KIFSwipeDirectionUp Swipe up. + @constant KIFSwipeDirectionDown Swipe down. + */ +typedef NS_ENUM(NSUInteger, KIFSwipeDirection) { + KIFSwipeDirectionRight, + KIFSwipeDirectionLeft, + KIFSwipeDirectionUp, + KIFSwipeDirectionDown +}; + +/*! + @enum KIFPickerType + @abstract Picker type to select values from. + @constant KIFUIPickerView UIPickerView type + @constant KIFUIDatePicker UIDatePicker type + */ +typedef NS_ENUM(NSUInteger, KIFPickerType) { + KIFUIPickerView, + KIFUIDatePicker +}; + +/*! + @enum KIFStepperDirection + @abstract Direction in which to increment or decrement the stepper. + @constant KIFStepperDirectionIncrement Increment the stepper + @constant KIFUIDatePicker Decrement the stepper + */ +typedef NS_ENUM(NSUInteger, KIFStepperDirection) { + KIFStepperDirectionIncrement, + KIFStepperDirectionDecrement +}; + +#define kKIFMajorSwipeDisplacement 200 +#define kKIFMinorSwipeDisplacement 5 + +static inline KIFDisplacement KIFDisplacementForSwipingInDirection(KIFSwipeDirection direction) +{ + switch (direction) + { + // As discovered on the Frank mailing lists, it won't register as a + // swipe if you move purely horizontally or vertically, so need a + // slight orthogonal offset too. + case KIFSwipeDirectionRight: + return CGPointMake(kKIFMajorSwipeDisplacement, kKIFMinorSwipeDisplacement); + case KIFSwipeDirectionLeft: + return CGPointMake(-kKIFMajorSwipeDisplacement, kKIFMinorSwipeDisplacement); + case KIFSwipeDirectionUp: + return CGPointMake(kKIFMinorSwipeDisplacement, -kKIFMajorSwipeDisplacement); + case KIFSwipeDirectionDown: + return CGPointMake(kKIFMinorSwipeDisplacement, kKIFMajorSwipeDisplacement); + } +} + +@interface KIFUITestActor : KIFTestActor + +/*! + @abstract Waits until a view or accessibility element is present. + @discussion The view or accessibility element with the given label is found in the view hierarchy. If the element isn't found, then the step will attempt to wait until it is. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + + If the view you want to wait for is tappable, use the -waitForTappableViewWithAccessibilityLabel: methods instead as they provide a more strict test. + @param label The accessibility label of the element to wait for. + */ +- (UIView *)waitForViewWithAccessibilityLabel:(NSString *)label; + +/*! + @abstract Waits until a view or accessibility element is present. + @discussion The view or accessibility element with the given label is found in the view hierarchy. If the element isn't found, then the step will attempt to wait until it is. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + + If the view you want to wait for is tappable, use the -waitForTappableViewWithAccessibilityLabel: methods instead as they provide a more strict test. + @param label The accessibility label of the element to wait for. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (UIView *)waitForViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits; + + +/*! + @abstract Waits until a view or accessibility element is present. + @discussion The view or accessibility element with the given label is found in the view hierarchy. If the element isn't found, then the step will attempt to wait until it is. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are ignored. + + If the view you want to wait for is tappable, use the -waitForTappableViewWithAccessibilityLabel: methods instead as they provide a more strict test. + @param label The accessibility label of the element to wait for. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + @result A configured test step. + */ +- (UIView *)waitForViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits; + +/*! + @abstract Waits until a view or accessibility element is no longer present. + @discussion The view or accessibility element with the given label is found in the view hierarchy. If the element is found, then the step will attempt to wait until it isn't. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are considered absent. + @param label The accessibility label of the element to wait for. + */ +- (void)waitForAbsenceOfViewWithAccessibilityLabel:(NSString *)label; + +/*! + @abstract Waits until a view or accessibility element is no longer present. + @discussion The view or accessibility element with the given label is found in the view hierarchy. If the element is found, then the step will attempt to wait until it isn't. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are considered absent. + @param label The accessibility label of the element to wait for. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (void)waitForAbsenceOfViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits; + +/*! + @abstract Waits until a view or accessibility element is no longer present. + @discussion The view or accessibility element with the given label is found in the view hierarchy. If the element is found, then the step will attempt to wait until it isn't. Note that the view does not necessarily have to be visible on the screen, and may be behind another view or offscreen. Views with their hidden property set to YES are considered absent. + @param label The accessibility label of the element to wait for. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (void)waitForAbsenceOfViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits; + +/*! + @abstract Waits until a view or accessibility element is present and available for tapping. + @discussion The view or accessibility element with the given label is found in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Whether or not a view is tappable is based on -[UIView hitTest:]. + @param label The accessibility label of the element to wait for. + */ +- (UIView *)waitForTappableViewWithAccessibilityLabel:(NSString *)label; + +/*! + @abstract Waits until a view or accessibility element is present and available for tapping. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Whether or not a view is tappable is based on -[UIView hitTest:]. + @param label The accessibility label of the element to wait for. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (UIView *)waitForTappableViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits; + +/*! + @abstract Waits until a view or accessibility element is present and available for tapping. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Whether or not a view is tappable is based on -[UIView hitTest:]. + @param label The accessibility label of the element to wait for. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (UIView *)waitForTappableViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits; + + +/*! + @abstract Waits for an accessibility element and its containing view based on a variety of criteria. + @discussion This method provides a more verbose API for achieving what is available in the waitForView/waitForTappableView family of methods, exposing both the found element and its containing view. The results can be used in other methods such as @c tapAccessibilityElement:inView: + @param element To be populated with the matching accessibility element when found. Can be NULL. + @param view To be populated with the matching view when found. Can be NULL. + @param label The accessibility label of the element to wait for. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + @param mustBeTappable If YES, only an element that can be tapped on will be returned. + */ +- (void)waitForAccessibilityElement:(UIAccessibilityElement **)element view:(out UIView **)view withLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits tappable:(BOOL)mustBeTappable; + +/*! + @abstract Waits for an accessibility element and its containing view based the accessibility identifier. + @discussion This method provides a more verbose API for achieving what is available in the waitForView/waitForTappableView family of methods, exposing both the found element and its containing view. The results can be used in other methods such as @c tapAccessibilityElement:inView: + @param element To be populated with the matching accessibility element when found. Can be NULL. + @param view To be populated with the matching view when found. Can be NULL. + @param identifier The accessibility identifier of the element to wait for. + @param mustBeTappable If YES, only an element that can be tapped on will be returned. + */ +- (void)waitForAccessibilityElement:(UIAccessibilityElement **)element view:(out UIView **)view withIdentifier:(NSString *)identifier tappable:(BOOL)mustBeTappable; + +/*! + @abstract Waits for an accessibility element and its containing view based on a predicate. + @discussion This method provides a more verbose API for achieving what is available in the waitForView/waitForTappableView family of methods, exposing both the found element and its containing view. The results can be used in other methods such as @c tapAccessibilityElement:inView: + + This method provides more flexability than @c waitForAccessibilityElement:view:withLabel:value:traits:tappable: but less precise error messages. This message will tell you why the method failed but not whether or not the element met some of the criteria. + @param element To be populated with the matching accessibility element when found. Can be NULL. + @param view To be populated with the matching view when found. Can be NULL. + @param predicate The predicate to match. + @param mustBeTappable If YES, only an element that can be tapped on will be returned. + */ +- (void)waitForAccessibilityElement:(UIAccessibilityElement **)element view:(out UIView **)view withElementMatchingPredicate:(NSPredicate *)predicate tappable:(BOOL)mustBeTappable; + +/*! + @abstract Tries to guess if there are any unfinished animations and waits for a certain amount of time to let them finish. + */ +- (void)waitForAnimationsToFinish; + +/*! + @abstract Tries to guess if there are any unfinished animations and waits for a certain amount of time to let them finish. + @param timeout The maximum duration the method waits to let the animations finish. + */ +- (void)waitForAnimationsToFinishWithTimeout:(NSTimeInterval)timeout; + +/*! + @abstract Taps a particular view in the view hierarchy. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present and tappable, a tap event is simulated in the center of the view or element. + @param label The accessibility label of the element to tap. + */ +- (void)tapViewWithAccessibilityLabel:(NSString *)label; + +/*! + @abstract Taps a particular view in the view hierarchy. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present and tappable, a tap event is simulated in the center of the view or element. + @param label The accessibility label of the element to tap. + @param traits The accessibility traits of the element to tap. Elements that do not include at least these traits are ignored. + */ +- (void)tapViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits; + +/*! + @abstract Taps a particular view in the view hierarchy. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present and tappable, a tap event is simulated in the center of the view or element. + + This variation allows finding a particular instance of an accessibility element. For example, a table view might have multiple elements with the accessibility label of "Employee", but only one that also has the accessibility value of "Bob". + @param label The accessibility label of the element to tap. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to tap. Elements that do not include at least these traits are ignored. + */ +- (void)tapViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits; + +/*! + @abstract Taps a particular view in the view heirarchy. + @discussion Unlike the -tapViewWithAccessibilityLabel: family of methods, this method allows you to tap an arbitrary element. Combined with -waitForAccessibilityElement:view:withLabel:value:traits:tappable: or +[UIAccessibilityElement accessibilityElement:view:withLabel:value:traits:tappable:error:] this provides an opportunity for more complex logic. + @param element The accessibility element to tap. + @param view The view containing the accessibility element. + */ +- (void)tapAccessibilityElement:(UIAccessibilityElement *)element inView:(UIView *)view; + +/*! + @abstract Taps the increment|decrement button of a UIStepper view in the view heirarchy. + @discussion Unlike the -tapViewWithAccessibilityLabel: family of methods, this method allows you to tap an arbitrary element. Combined with -waitForAccessibilityElement:view:withLabel:value:traits:tappable: or +[UIAccessibilityElement accessibilityElement:view:withLabel:value:traits:tappable:error:] this provides an opportunity for more complex logic. + @param element The accessibility element to tap. + @param view The view containing the accessibility element. + */ +- (void)tapStepperWithAccessibilityElement:(UIAccessibilityElement *)element increment: (KIFStepperDirection) stepperDirection inView:(UIView *)view; + +/*! + @abstract Taps the screen at a particular point. + @discussion Taps the screen at a specific point. In general you should use the factory steps that tap a view based on its accessibility label, but there are situations where it's not possible to access a view using accessibility mechanisms. This step is more lenient than the steps that use the accessibility label, and does not wait for any particular view to appear, or validate that the tapped view is enabled or has interaction enabled. Because this step doesn't doesn't validate that a view is present before tapping it, it's good practice to precede this step where possible with a -waitForViewWithAccessibilityLabel: with the label for another view that should appear on the same screen. + + @param screenPoint The point in screen coordinates to tap. Screen points originate from the top left of the screen. + */ +- (void)tapScreenAtPoint:(CGPoint)screenPoint; + +/*! + @abstract Performs a long press on a particular view in the view hierarchy. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present and tappable, touch events are simulated in the center of the view or element. + @param label The accessibility label of the element to tap. + @param duration The length of time to long press the element. + */ +- (void)longPressViewWithAccessibilityLabel:(NSString *)label duration:(NSTimeInterval)duration; + +/*! + @abstract Performs a long press on a particular view in the view hierarchy. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present and tappable, touch events are simulated in the center of the view or element. + + This variation allows finding a particular instance of an accessibility element. For example, a table view might have multiple elements with the accessibility label of "Employee", but only one that also has the accessibility value of "Bob". + @param label The accessibility label of the element to tap. + @param value The accessibility value of the element to tap. + @param duration The length of time to long press the element. + */ +- (void)longPressViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value duration:(NSTimeInterval)duration; + +- (void)longPressAccessibilityElement:(UIAccessibilityElement *)element inView:(UIView *)view duration:(NSTimeInterval)duration; + +/*! + @abstract Performs a long press on a particular view in the view hierarchy. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present and tappable, touch events are simulated in the center of the view or element. + + This variation allows finding a particular instance of an accessibility element. For example, a table view might have multiple elements with the accessibility label of "Employee", but only one that also has the accessibility value of "Bob". + @param label The accessibility label of the element to tap. + @param value The accessibility value of the element to tap. + @param traits The accessibility traits of the element to tap. Elements that do not include at least these traits are ignored. + @param duration The length of time to long press the element. + */ +- (void)longPressViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits duration:(NSTimeInterval)duration; + + +/*! + @abstract Waits for the software keyboard to be visible. + @discussion If input is also possible from a hardare keyboard @c waitForKeyInputReady may be more appropriate. + */ +- (void)waitForSoftwareKeyboard; +- (void)waitForKeyboard KIF_DEPRECATED("Use waitForSoftwareKeyboard or waitForKeyInputReady."); + +/*! + @abstract If present, waits for the software keyboard to dismiss. + */ +- (void)waitForAbsenceOfSoftwareKeyboard; +- (void)waitForAbsenceOfKeyboard KIF_DEPRECATED("Use waitForAbscenseOfSoftwareKeyboard."); + +/*! + @abstract Waits for the keyboard to be ready for input. This tests whether or not a hardware or software keyboard is available and if the keyboard has a responder to send events to. + */ +- (void)waitForKeyInputReady; + +/*! + @abstract Enters text into a the current first responder. + @discussion Text is entered into the view by simulating taps on the appropriate keyboard keys if the keyboard is already displayed. Useful to enter text in UIWebViews or components with no accessibility labels. + @param text The text to enter. + */ +- (void)enterTextIntoCurrentFirstResponder:(NSString *)text; +- (void)enterTextIntoCurrentFirstResponder:(NSString *)text fallbackView:(UIView *)fallbackView; + +/*! + @abstract Enters text into a particular view in the view hierarchy. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present and tappable, a tap event is simulated in the center of the view or element, then text is entered into the view by simulating taps on the appropriate keyboard keys. + @param text The text to enter. + @param label The accessibility label of the element to type into. + */ +- (void)enterText:(NSString *)text intoViewWithAccessibilityLabel:(NSString *)label; + +/*! + @abstract Enters text into a particular view in the view hierarchy. + @discussion The view or accessibility element with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present and tappable, a tap event is simulated in the center of the view or element, then text is entered into the view by simulating taps on the appropriate keyboard keys. + @param text The text to enter. + @param label The accessibility label of the element to type into. + @param traits The accessibility traits of the element to type into. Elements that do not include at least these traits are ignored. + @param expectedResult What the text value should be after entry, including any formatting done by the field. If this is nil, the "text" parameter will be used. + */ +- (void)enterText:(NSString *)text intoViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits expectedResult:(NSString *)expectedResult; + +- (void)clearTextFromFirstResponder; +- (void)clearTextFromViewWithAccessibilityLabel:(NSString *)label; +- (void)clearTextFromViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits; +- (void)clearTextFromElement:(UIAccessibilityElement*)element inView:(UIView*)view; + +- (void)clearTextFromAndThenEnterTextIntoCurrentFirstResponder:(NSString *)text; +- (void)clearTextFromAndThenEnterText:(NSString *)text intoViewWithAccessibilityLabel:(NSString *)label; +- (void)clearTextFromAndThenEnterText:(NSString *)text intoViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits expectedResult:(NSString *)expectedResult; + +- (void)expectView:(UIView *)view toContainText:(NSString *)expectedResult; + +/*! + @abstract Selects an item from a currently visible picker view. + @discussion With a picker view already visible, this step will find an item with the given title, select that item, and tap the Done button. + @param title The title of the row to select. + */ +- (void)selectPickerViewRowWithTitle:(NSString *)title; + +/*! + @abstract Selects an item from a currently visible picker view in specified component. + @discussion With a picker view already visible, this step will find an item with the given title in given component, select that item, and tap the Done button. + @param title The title of the row to select. + @param component The component tester inteds to select the title in. + */ +- (void)selectPickerViewRowWithTitle:(NSString *)title inComponent:(NSInteger)component; + +/*! + @abstract Selects a value from a currently visible date picker view. + @discussion With a date picker view already visible, this step will select the different rotating weel values in order of how the array parameter is passed in. After it is done it will hide the date picker. It works with all 4 UIDatePickerMode* modes. The input parameter of type NSArray has to match in what order the date picker is displaying the values/columns. So if the locale is changing the input parameter has to be adjusted. Example: Mode: UIDatePickerModeDate, Locale: en_US, Input param: NSArray *date = @[@"June", @"17", @"1965"];. Example: Mode: UIDatePickerModeDate, Locale: de_DE, Input param: NSArray *date = @[@"17.", @"Juni", @"1965". + @param datePickerColumnValues Each element in the NSArray represents a rotating wheel in the date picker control. Elements from 0 - n are listed in the order of the rotating wheels, left to right. + */ +- (void) selectDatePickerValue:(NSArray*)datePickerColumnValues; + +/*! + @abstract Toggles a UISwitch into a specified position. + @discussion The UISwitch with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present, the step will return if it's already in the desired position. If the switch is tappable but not in the desired position, a tap event is simulated in the center of the view or element, toggling the switch into the desired position. + @param switchIsOn The desired position of the UISwitch. + @param label The accessibility label of the element to switch. + */ +- (void)setOn:(BOOL)switchIsOn forSwitchWithAccessibilityLabel:(NSString *)label; + +/*! + @abstract Slides a UISlider to a specified value. + @discussion The UISlider with the given label is searched for in the view hierarchy. If the element isn't found or isn't currently tappable, then the step will attempt to wait until it is. Once the view is present, the step will attempt to drag the slider to the new value. The step will fail if it finds a view with the given accessibility label that is not a UISlider or if value is outside of the possible values. Because this step simulates drag events, the value reached may not be the exact value requested and the app may ignore the touch events if the movement is less than the drag gesture recognizer's minimum distance. + @param value The desired value of the UISlider. + @param label The accessibility label of the element to drag. + */ +- (void)setValue:(float)value forSliderWithAccessibilityLabel:(NSString *)label; +- (void)setValue:(float)value forSlider:(UISlider *)slider; + +/*! + @abstract Dismisses a popover on screen. + @discussion With a popover up, tap at the top-left corner of the screen. + */ +- (void)dismissPopover; + +/*! + @abstract Select a certain photo from the built in photo picker. + @discussion This set of steps expects that the photo picker has been initiated and that the sheet is up. From there it will tap the "Choose Photo" button and select the desired photo. + @param albumName The name of the album to select the photo from. (1-indexed) + @param row The row number in the album for the desired photo. (1-indexed) + @param column The column number in the album for the desired photo. + */ +- (void)choosePhotoInAlbum:(NSString *)albumName atRow:(NSInteger)row column:(NSInteger)column; + +/*! + @abstract Taps the row at indexPath in a table view with the given label. + @discussion This step will get the view with the specified accessibility label and tap the row at indexPath. + + For cases where you may need to work from the end of a table view rather than the beginning, negative sections count back from the end of the table view (-1 is the last section) and negative rows count back from the end of the section (-1 is the last row for that section). + + @param tableViewLabel Accessibility label of the table view. + @param indexPath Index path of the row to tap. + */ +- (void)tapRowInTableViewWithAccessibilityLabel:(NSString*)tableViewLabel atIndexPath:(NSIndexPath *)indexPath KIF_DEPRECATED("Use tapRowAtIndexPath:inTableViewWithAccessibilityIdentifier:"); + +/*! + @abstract Taps the row at indexPath in a table view with the given identifier. + @discussion This step will get the view with the specified accessibility identifier and tap the row at indexPath. + + For cases where you may need to work from the end of a table view rather than the beginning, negative sections count back from the end of the table view (-1 is the last section) and negative rows count back from the end of the section (-1 is the last row for that section). + + @param indexPath Index path of the row to tap. + @param identifier Accessibility identifier of the table view. + */ +- (void)tapRowAtIndexPath:(NSIndexPath *)indexPath inTableViewWithAccessibilityIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0); + +/*! + @abstract Taps the item at indexPath in a collection view with the given identifier. + @discussion This step will get the view with the specified accessibility identifier and tap the item at indexPath. + + For cases where you may need to work from the end of a collection view rather than the beginning, negative sections count back from the end of the collection view (-1 is the last section) and negative items count back from the end of the section (-1 is the last item for that section). + + @param indexPath Index path of the item to tap. + @param identifier Accessibility identifier of the collection view. + */ +- (void)tapItemAtIndexPath:(NSIndexPath *)indexPath inCollectionViewWithAccessibilityIdentifier:(NSString *)identifier; + +/*! + @abstract Taps a stepper to either increment or decrement the stepper. Presumed that - (minus) to decrement is on the left. + @discussion This will locate the left or right half of the stepper and perform a calculated click. + @param label The accessibility identifier of the view to interact with. + @param stepperDirection The direction in which to change the value of the stepper (KIFStepperDirectionIncrement | KIFStepperDirectionDecrement) + */ +-(void) tapStepperWithAccessibilityLabel: (NSString *)accessibilityLabel increment: (KIFStepperDirection) stepperDirection; + +#if TARGET_IPHONE_SIMULATOR +/*! + @abstract If present, dismisses a system alert with the last button, usually 'Allow'. Returns YES if a dialog was dismissed, NO otherwise. + @discussion Use this to dissmiss a location services authorization dialog or a photos access dialog by tapping the 'Allow' button. No action is taken if no alert is present. + */ +- (BOOL)acknowledgeSystemAlert; +#endif + +/*! + @abstract Swipes a particular view in the view hierarchy in the given direction. + @discussion The view will get the view with the specified accessibility label and swipe the screen in the given direction from the view's center. + @param label The accessibility label of the view to swipe. + @param direction The direction in which to swipe. + */ +- (void)swipeViewWithAccessibilityLabel:(NSString *)label inDirection:(KIFSwipeDirection)direction; + +/*! + @abstract Swipes a particular view in the view hierarchy in the given direction. + @discussion The view will get the view with the specified accessibility label and swipe the screen in the given direction from the view's center. + @param label The accessibility label of the view to swipe. + @param value The accessibility value of the view to swipe. + @param direction The direction in which to swipe. + */ +- (void)swipeViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value inDirection:(KIFSwipeDirection)direction; + +/*! + @abstract Swipes a particular view in the view hierarchy in the given direction. + @discussion This step will get the view with the specified accessibility label and swipe the screen in the given direction from the view's center. + @param label The accessibility label of the view to swipe. + @param value The accessibility value of the view to swipe. + @param traits The accessibility traits of the view to swipe. Elements that do not include at least these traits are ignored. + @param direction The direction in which to swipe. + */ +- (void)swipeViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits inDirection:(KIFSwipeDirection)direction; + +/*! + @abstract Swipes a particular view in the view heirarchy. + @discussion Unlike the -swipeViewWithAccessibilityLabel: family of methods, this method allows you to swipe an arbitrary element. Combined with -waitForAccessibilityElement:view:withLabel:value:traits:tappable: or +[UIAccessibilityElement accessibilityElement:view:withLabel:value:traits:tappable:error:] this provides an opportunity for more complex logic. + @param element The accessibility element to tap. + @param viewToSwipe The view containing the accessibility element. + */ +- (void)swipeAccessibilityElement:(UIAccessibilityElement *)element inView:(UIView *)viewToSwipe inDirection:(KIFSwipeDirection)direction; + +/*! + @abstract Scrolls a particular view in the view hierarchy by an amount indicated as a fraction of its size. + @discussion The view will get the view with the specified accessibility label and scroll it by the indicated fraction of its size, with the scroll centered on the center of the view. + @param label The accessibility label of the view to scroll. + @param horizontalFraction The horizontal displacement of the scroll action, as a fraction of the width of the view. + @param verticalFraction The vertical displacement of the scroll action, as a fraction of the height of the view. + */ +- (void)scrollViewWithAccessibilityLabel:(NSString *)label byFractionOfSizeHorizontal:(CGFloat)horizontalFraction vertical:(CGFloat)verticalFraction KIF_DEPRECATED("Use scrollViewWithAccessibilityIdentifier:byFractionOfSizeHorizontal:vertical:"); + +/*! + @abstract Scrolls a particular view in the view hierarchy by an amount indicated as a fraction of its size. + @discussion The view will get the view with the specified accessibility identifier and scroll it by the indicated fraction of its size, with the scroll centered on the center of the view. + @param identifier The accessibility identifier of the view to scroll. + @param horizontalFraction The horizontal displacement of the scroll action, as a fraction of the width of the view. + @param verticalFraction The vertical displacement of the scroll action, as a fraction of the height of the view. + */ +- (void)scrollViewWithAccessibilityIdentifier:(NSString *)identifier byFractionOfSizeHorizontal:(CGFloat)horizontalFraction vertical:(CGFloat)verticalFraction NS_AVAILABLE_IOS(5_0); + +/*! + @abstract Waits until a view or accessibility element is the first responder. + @discussion The first responder is found by searching the view hierarchy of the application's + main window and its accessibility label is compared to the given value. If they match, the + step returns success else it will attempt to wait until they do. + @param label The accessibility label of the element to wait for. + */ +- (void)waitForFirstResponderWithAccessibilityLabel:(NSString *)label; + +/*! + @abstract Waits until a view or accessibility element is the first responder. + @discussion The first responder is found by searching the view hierarchy of the application's + main window and its accessibility label is compared to the given value. If they match, the + step returns success else it will attempt to wait until they do. + @param label The accessibility label of the element to wait for. + @param traits The accessibility traits of the element to wait for. Elements that do not include at least these traits are ignored. + */ +- (void)waitForFirstResponderWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits; + +- (void)tapStatusBar; + +/*! + @abstract Waits for the cell at indexPath in a table view with the given identifier. + @discussion This step will get the view with the specified accessibility identifier and then get the cell at the indexPath. + + For cases where you may need to work from the end of a table view rather than the beginning, negative sections count back from the end of the table view (-1 is the last section) and negative rows count back from the end of the section (-1 is the last row for that section). + + @param indexPath Index path of the cell. + @param identifier Accessibility identifier of the table view. + @result Table view cell at index path + */ +- (UITableViewCell *)waitForCellAtIndexPath:(NSIndexPath *)indexPath inTableViewWithAccessibilityIdentifier:(NSString *)identifier; + +/*! + @abstract Waits for the cell at indexPath in a collection view with the given identifier. + @discussion This step will get the view with the specified accessibility identifier and then get the cell at indexPath. + + For cases where you may need to work from the end of a collection view rather than the beginning, negative sections count back from the end of the collection view (-1 is the last section) and negative items count back from the end of the section (-1 is the last item for that section). + + @param indexPath Index path of the item to tap. + @param identifier Accessibility identifier of the collection view. + @result Collection view cell at index path + */ +- (UICollectionViewCell *)waitForCellAtIndexPath:(NSIndexPath *)indexPath inCollectionViewWithAccessibilityIdentifier:(NSString *)identifier; + +/*! + @abstract Moves the row at sourceIndexPath to destinationIndexPath in a table view with the given identifier. + @discussion This step will get the view with the specified accessibility identifier and move the row at sourceIndexPath to destinationIndexPath. + + For cases where you may need to work from the end of a table view rather than the beginning, negative sections count back from the end of the table view (-1 is the last section) and negative rows count back from the end of the section (-1 is the last row for that section). + + @param sourceIndexPath Index path of the row to move. + @param destinationIndexPath Desired final index path of the row after moving. + @param identifier Accessibility identifier of the table view. + */ +- (void)moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath inTableViewWithAccessibilityIdentifier:(NSString *)identifier; + +/*! + @abstract Swipes the row at indexPath in the given direction. + + @param indexPath Index path of the row to swipe. + @param tableView Table view to operate on. + @param direction Direction of the swipe. + */ +- (void)swipeRowAtIndexPath:(NSIndexPath *)indexPath inTableView:(UITableView *)tableView inDirection:(KIFSwipeDirection)direction; + +/*! + @abstract Backgrounds app using UIAutomation command, simulating pressing the Home button + @param duration Amount of time for a background event before the app becomes active again + */ +- (void)deactivateAppForDuration:(NSTimeInterval)duration; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor.m new file mode 100755 index 000000000..7b96c47ec --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/KIFUITestActor.m @@ -0,0 +1,1096 @@ +// +// KIFTester+UI.m +// KIF +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "KIFUITestActor.h" +#import "UIApplication-KIFAdditions.h" +#import "UIWindow-KIFAdditions.h" +#import "UIAccessibilityElement-KIFAdditions.h" +#import "UIView-KIFAdditions.h" +#import "UITableView-KIFAdditions.h" +#import "CGGeometry-KIFAdditions.h" +#import "NSError-KIFAdditions.h" +#import "KIFTypist.h" +#import "UIAutomationHelper.h" + +@implementation KIFUITestActor + ++ (void)initialize +{ + if (self == [KIFUITestActor class]) { + [KIFTypist registerForNotifications]; + } +} + +- (UIView *)waitForViewWithAccessibilityLabel:(NSString *)label +{ + return [self waitForViewWithAccessibilityLabel:label value:nil traits:UIAccessibilityTraitNone tappable:NO]; +} + +- (UIView *)waitForViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits +{ + return [self waitForViewWithAccessibilityLabel:label value:nil traits:traits tappable:NO]; +} + +- (UIView *)waitForViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits +{ + return [self waitForViewWithAccessibilityLabel:label value:value traits:traits tappable:NO]; +} + +- (UIView *)waitForTappableViewWithAccessibilityLabel:(NSString *)label +{ + return [self waitForViewWithAccessibilityLabel:label value:nil traits:UIAccessibilityTraitNone tappable:YES]; +} + +- (UIView *)waitForTappableViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits +{ + return [self waitForViewWithAccessibilityLabel:label value:nil traits:traits tappable:YES]; +} + +- (UIView *)waitForTappableViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits +{ + return [self waitForViewWithAccessibilityLabel:label value:value traits:traits tappable:YES]; +} + +- (UIView *)waitForViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits tappable:(BOOL)mustBeTappable +{ + UIView *view = nil; + @autoreleasepool { + [self waitForAccessibilityElement:NULL view:&view withLabel:label value:value traits:traits tappable:mustBeTappable]; + } + + return view; +} + +- (void)waitForAccessibilityElement:(UIAccessibilityElement **)element view:(out UIView **)view withLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits tappable:(BOOL)mustBeTappable +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + return [UIAccessibilityElement accessibilityElement:element view:view withLabel:label value:value traits:traits tappable:mustBeTappable error:error] ? KIFTestStepResultSuccess : KIFTestStepResultWait; + }]; +} + +- (void)waitForAccessibilityElement:(UIAccessibilityElement **)element view:(out UIView **)view withIdentifier:(NSString *)identifier tappable:(BOOL)mustBeTappable +{ + if (![UIAccessibilityElement instancesRespondToSelector:@selector(accessibilityIdentifier)]) { + [self failWithError:[NSError KIFErrorWithFormat:@"Running test on platform that does not support accessibilityIdentifier"] stopTest:YES]; + } + + [self waitForAccessibilityElement:element view:view withElementMatchingPredicate:[NSPredicate predicateWithFormat:@"accessibilityIdentifier = %@", identifier] tappable:mustBeTappable]; +} + +- (void)waitForAccessibilityElement:(UIAccessibilityElement **)element view:(out UIView **)view withElementMatchingPredicate:(NSPredicate *)predicate tappable:(BOOL)mustBeTappable +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + return [UIAccessibilityElement accessibilityElement:element view:view withElementMatchingPredicate:predicate tappable:mustBeTappable error:error] ? KIFTestStepResultSuccess : KIFTestStepResultWait; + }]; +} + +- (void)waitForAbsenceOfViewWithAccessibilityLabel:(NSString *)label +{ + [self waitForAbsenceOfViewWithAccessibilityLabel:label traits:UIAccessibilityTraitNone]; +} + +- (void)waitForAbsenceOfViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits +{ + [self waitForAbsenceOfViewWithAccessibilityLabel:label value:nil traits:traits]; +} + +- (void)waitForAbsenceOfViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + // If the app is ignoring interaction events, then wait before doing our analysis + KIFTestWaitCondition(![[UIApplication sharedApplication] isIgnoringInteractionEvents], error, @"Application is ignoring interaction events."); + + // If the element can't be found, then we're done + UIAccessibilityElement *element = [[UIApplication sharedApplication] accessibilityElementWithLabel:label accessibilityValue:value traits:traits]; + if (!element) { + return KIFTestStepResultSuccess; + } + + UIView *view = [UIAccessibilityElement viewContainingAccessibilityElement:element]; + + // If we found an element, but it's not associated with a view, then something's wrong. Wait it out and try again. + KIFTestWaitCondition(view, error, @"Cannot find view containing accessibility element with the label \"%@\"", label); + + // Hidden views count as absent + KIFTestWaitCondition([view isHidden] || [view superview] == nil, error, @"Accessibility element with label \"%@\" is visible and not hidden.", label); + + return KIFTestStepResultSuccess; + }]; +} + +- (void)waitForAnimationsToFinish { + [self waitForAnimationsToFinishWithTimeout:self.animationWaitingTimeout]; +} + +- (void)waitForAnimationsToFinishWithTimeout:(NSTimeInterval)timeout { + static const CGFloat kStabilizationWait = 0.5f; + + NSTimeInterval maximumWaitingTimeInterval = timeout; + if (maximumWaitingTimeInterval <= kStabilizationWait) { + if(maximumWaitingTimeInterval >= 0) { + [self waitForTimeInterval:maximumWaitingTimeInterval]; + } + + return; + } + + // Wait for the view to stabilize and give them a chance to start animations before we wait for them. + [self waitForTimeInterval:kStabilizationWait]; + maximumWaitingTimeInterval -= kStabilizationWait; + + NSTimeInterval startTime = [NSDate timeIntervalSinceReferenceDate]; + [self runBlock:^KIFTestStepResult(NSError **error) { + __block BOOL runningAnimationFound = false; + for (UIWindow *window in [UIApplication sharedApplication].windowsWithKeyWindow) { + [window performBlockOnDescendentViews:^(UIView *view, BOOL *stop) { + BOOL isViewVisible = [view isVisibleInViewHierarchy]; // do not wait for animatinos of views that aren't visible + BOOL hasAnimation = view.layer.animationKeys.count != 0 && ![view.layer.animationKeys isEqualToArray:@[@"_UIParallaxMotionEffect"]]; // explicitly exclude _UIParallaxMotionEffect as it is used in alertviews, and we don't want every alertview to be paused + BOOL hasUnfinishedSystemAnimation = [NSStringFromClass(view.class) isEqualToString:@"_UIParallaxDimmingView"]; // indicates that the view-hierarchy is in an in-between-state of an animation + if (isViewVisible && (hasAnimation || hasUnfinishedSystemAnimation)) { + runningAnimationFound = YES; + if (stop != NULL) { + *stop = YES; + } + return; + } + }]; + } + + return runningAnimationFound && ([NSDate timeIntervalSinceReferenceDate] - startTime) < maximumWaitingTimeInterval ? KIFTestStepResultWait : KIFTestStepResultSuccess; + } timeout:maximumWaitingTimeInterval + 1]; +} + +- (void)tapViewWithAccessibilityLabel:(NSString *)label +{ + [self tapViewWithAccessibilityLabel:label value:nil traits:UIAccessibilityTraitNone]; +} + +- (void)tapViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits +{ + [self tapViewWithAccessibilityLabel:label value:nil traits:traits]; +} + +- (void)tapViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits +{ + @autoreleasepool { + UIView *view = nil; + UIAccessibilityElement *element = nil; + [self waitForAccessibilityElement:&element view:&view withLabel:label value:value traits:traits tappable:YES]; + [self tapAccessibilityElement:element inView:view]; + } +} + +- (void)tapAccessibilityElement:(UIAccessibilityElement *)element inView:(UIView *)view +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + + KIFTestWaitCondition(view.isUserInteractionActuallyEnabled, error, @"View is not enabled for interaction"); + + // If the accessibilityFrame is not set, fallback to the view frame. + CGRect elementFrame; + if (CGRectEqualToRect(CGRectZero, element.accessibilityFrame)) { + elementFrame.origin = CGPointZero; + elementFrame.size = view.frame.size; + } else { + elementFrame = [view.windowOrIdentityWindow convertRect:element.accessibilityFrame toView:view]; + } + CGPoint tappablePointInElement = [view tappablePointInRect:elementFrame]; + + // This is mostly redundant of the test in _accessibilityElementWithLabel: + KIFTestWaitCondition(!isnan(tappablePointInElement.x), error, @"View is not tappable"); + + NSOperatingSystemVersion iOS9 = {9, 0, 0}; + BOOL isOperatingSystemAtLeastVersion9 = [NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)] && [[NSProcessInfo new] isOperatingSystemAtLeastVersion:iOS9]; + if (isOperatingSystemAtLeastVersion9 && [NSStringFromClass([view class]) isEqualToString:@"_UIAlertControllerActionView"]) { + [view longPressAtPoint:tappablePointInElement duration:0.1]; + } else { + [view tapAtPoint:tappablePointInElement]; + } + + KIFTestCondition(![view canBecomeFirstResponder] || [view isDescendantOfFirstResponder], error, @"Failed to make the view into the first responder"); + + return KIFTestStepResultSuccess; + }]; + + [self waitForAnimationsToFinish]; +} + +- (void)tapScreenAtPoint:(CGPoint)screenPoint +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + + // Try all the windows until we get one back that actually has something in it at the given point + UIView *view = nil; + for (UIWindow *window in [[[UIApplication sharedApplication] windowsWithKeyWindow] reverseObjectEnumerator]) { + CGPoint windowPoint = [window convertPoint:screenPoint fromView:nil]; + view = [window hitTest:windowPoint withEvent:nil]; + + // If we hit the window itself, then skip it. + if (view != window && view != nil) { + break; + } + } + + KIFTestWaitCondition(view, error, @"No view was found at the point %@", NSStringFromCGPoint(screenPoint)); + + // This is mostly redundant of the test in _accessibilityElementWithLabel: + CGPoint viewPoint = [view convertPoint:screenPoint fromView:nil]; + [view tapAtPoint:viewPoint]; + + return KIFTestStepResultSuccess; + }]; +} + +- (void)longPressViewWithAccessibilityLabel:(NSString *)label duration:(NSTimeInterval)duration; +{ + [self longPressViewWithAccessibilityLabel:label value:nil traits:UIAccessibilityTraitNone duration:duration]; +} + +- (void)longPressViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value duration:(NSTimeInterval)duration; +{ + [self longPressViewWithAccessibilityLabel:label value:value traits:UIAccessibilityTraitNone duration:duration]; +} + +- (void)longPressViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits duration:(NSTimeInterval)duration; +{ + @autoreleasepool { + UIView *view = nil; + UIAccessibilityElement *element = nil; + [self waitForAccessibilityElement:&element view:&view withLabel:label value:value traits:traits tappable:YES]; + [self longPressAccessibilityElement:element inView:view duration:duration]; + } +} + +- (void)longPressAccessibilityElement:(UIAccessibilityElement *)element inView:(UIView *)view duration:(NSTimeInterval)duration; +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + + KIFTestWaitCondition(view.isUserInteractionActuallyEnabled, error, @"View is not enabled for interaction"); + + CGRect elementFrame = [view.windowOrIdentityWindow convertRect:element.accessibilityFrame toView:view]; + CGPoint tappablePointInElement = [view tappablePointInRect:elementFrame]; + + // This is mostly redundant of the test in _accessibilityElementWithLabel: + KIFTestWaitCondition(!isnan(tappablePointInElement.x), error, @"View is not tappable"); + [view longPressAtPoint:tappablePointInElement duration:duration]; + + KIFTestCondition(![view canBecomeFirstResponder] || [view isDescendantOfFirstResponder], error, @"Failed to make the view into the first responder"); + + return KIFTestStepResultSuccess; + }]; + + // Wait for view to settle. + [self waitForTimeInterval:0.5]; +} + +- (void)waitForKeyboard +{ + [self waitForSoftwareKeyboard]; +} + +- (void)waitForSoftwareKeyboard +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + KIFTestWaitCondition(![KIFTypist keyboardHidden], error, @"Keyboard is not visible"); + + return KIFTestStepResultSuccess; + }]; +} + +- (void)waitForAbsenceOfKeyboard +{ + [self waitForAbsenceOfSoftwareKeyboard]; +} + +- (void)waitForAbsenceOfSoftwareKeyboard +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + KIFTestWaitCondition([KIFTypist keyboardHidden], error, @"Keyboard is visible"); + + return KIFTestStepResultSuccess; + }]; +} + +- (void)waitForKeyInputReady +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + KIFTestWaitCondition(![KIFTypist keyboardHidden] || [KIFTypist hasHardwareKeyboard], error, @"No software or hardware keyboard."); + KIFTestWaitCondition([KIFTypist hasKeyInputResponder], error, @"No responder for key inputs."); + + return KIFTestStepResultSuccess; + }]; +} + +- (void)enterTextIntoCurrentFirstResponder:(NSString *)text +{ + [self waitForKeyInputReady]; + [self enterTextIntoCurrentFirstResponder:text fallbackView:nil]; +} + +- (void)enterTextIntoCurrentFirstResponder:(NSString *)text fallbackView:(UIView *)fallbackView +{ + [text enumerateSubstringsInRange:NSMakeRange(0, text.length) + options:NSStringEnumerationByComposedCharacterSequences + usingBlock: ^(NSString *characterString,NSRange substringRange,NSRange enclosingRange,BOOL * stop) + { + if (![KIFTypist enterCharacter:characterString]) { + // Attempt to cheat if we couldn't find the character + UIView * fallback = fallbackView; + if (!fallback) { + UIResponder *firstResponder = [[[UIApplication sharedApplication] keyWindow] firstResponder]; + if ([firstResponder isKindOfClass:[UIView class]]) { + fallback = (UIView *)firstResponder; + } + } + + if ([fallback isKindOfClass:[UITextField class]] || [fallback isKindOfClass:[UITextView class]] || [fallback isKindOfClass:[UISearchBar class]]) { + NSLog(@"KIF: Unable to find keyboard key for %@. Inserting manually.", characterString); + [(UITextField *)fallback setText:[[(UITextField *)fallback text] stringByAppendingString:characterString]]; + } else { + [self failWithError:[NSError KIFErrorWithFormat:@"Failed to find key for character \"%@\"", characterString] stopTest:YES]; + } + } + }]; +} + +- (void)enterText:(NSString *)text intoViewWithAccessibilityLabel:(NSString *)label +{ + return [self enterText:text intoViewWithAccessibilityLabel:label traits:UIAccessibilityTraitNone expectedResult:nil]; +} + +- (void)enterText:(NSString *)text intoViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits expectedResult:(NSString *)expectedResult +{ + UIView *view = nil; + UIAccessibilityElement *element = nil; + + [self waitForAccessibilityElement:&element view:&view withLabel:label value:nil traits:traits tappable:YES]; + [self tapAccessibilityElement:element inView:view]; + [self waitForTimeInterval:0.25]; + [self enterTextIntoCurrentFirstResponder:text fallbackView:view]; + [self expectView:view toContainText:expectedResult ?: text]; +} + +- (void)expectView:(UIView *)view toContainText:(NSString *)expectedResult +{ + // We will perform some additional validation if the view is UITextField or UITextView. + if (![view respondsToSelector:@selector(text)]) { + return; + } + + UITextView *textView = (UITextView *)view; + + // Some slower machines take longer for typing to catch up, so wait for a bit before failing + [self runBlock:^KIFTestStepResult(NSError **error) { + // We trim \n and \r because they trigger the return key, so they won't show up in the final product on single-line inputs. + // Also trim \b (backspace) characters to allow for deletion. + NSMutableCharacterSet *charExclusionSet = [NSMutableCharacterSet characterSetWithCharactersInString:@"\b"]; + [charExclusionSet formUnionWithCharacterSet:[NSCharacterSet newlineCharacterSet]]; + NSString *expected = [expectedResult stringByTrimmingCharactersInSet:charExclusionSet]; + NSString *actual = [textView.text stringByTrimmingCharactersInSet:charExclusionSet]; + + KIFTestWaitCondition([actual isEqualToString:expected], error, @"Failed to get text \"%@\" in field; instead, it was \"%@\"", expected, actual); + + return KIFTestStepResultSuccess; + } timeout:1.0]; +} + +- (void)clearTextFromFirstResponder +{ + UIView *firstResponder = (id)[[[UIApplication sharedApplication] keyWindow] firstResponder]; + if ([firstResponder isKindOfClass:[UIView class]]) { + [self clearTextFromElement:(UIAccessibilityElement *)firstResponder inView:firstResponder]; + } +} + +- (void)clearTextFromViewWithAccessibilityLabel:(NSString *)label +{ + [self clearTextFromViewWithAccessibilityLabel:label traits:UIAccessibilityTraitNone]; +} + +- (void)clearTextFromViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits +{ + UIView *view = nil; + UIAccessibilityElement *element = nil; + + [self waitForAccessibilityElement:&element view:&view withLabel:label value:nil traits:traits tappable:YES]; + [self clearTextFromElement:element inView:view]; +} + +- (void)clearTextFromElement:(UIAccessibilityElement*)element inView:(UIView*)view +{ + [self tapAccessibilityElement:element inView:view]; + + // Per issue #294, the tap occurs in the center of the text view. If the text is too long, this means not all text gets cleared. To address this for most cases, we can check if the selected view conforms to UITextInput and select the whole text range. + if ([view conformsToProtocol:@protocol(UITextInput)]) { + id textInput = (id )view; + [textInput setSelectedTextRange:[textInput textRangeFromPosition:textInput.beginningOfDocument toPosition:textInput.endOfDocument]]; + + [self waitForTimeInterval:0.1]; + [self enterTextIntoCurrentFirstResponder:@"\b" fallbackView:view]; + } else { + NSUInteger numberOfCharacters = [view respondsToSelector:@selector(text)] ? [(UITextField *)view text].length : element.accessibilityValue.length; + NSMutableString *text = [NSMutableString string]; + for (NSInteger i = 0; i < numberOfCharacters; i ++) { + [text appendString:@"\b"]; + } + [self enterTextIntoCurrentFirstResponder:text fallbackView:view]; + } + + [self expectView:view toContainText:@""]; +} + +- (void)clearTextFromAndThenEnterText:(NSString *)text intoViewWithAccessibilityLabel:(NSString *)label +{ + [self clearTextFromViewWithAccessibilityLabel:label]; + [self enterText:text intoViewWithAccessibilityLabel:label]; +} + +- (void)clearTextFromAndThenEnterText:(NSString *)text intoViewWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits expectedResult:(NSString *)expectedResult +{ + [self clearTextFromViewWithAccessibilityLabel:label traits:traits]; + [self enterText:text intoViewWithAccessibilityLabel:label traits:traits expectedResult:expectedResult]; +} + +- (void)clearTextFromAndThenEnterTextIntoCurrentFirstResponder:(NSString *)text +{ + [self clearTextFromFirstResponder]; + [self enterTextIntoCurrentFirstResponder:text]; +} + +- (void) selectDatePickerValue:(NSArray*)datePickerColumnValues { + [self selectPickerValue:datePickerColumnValues pickerType:KIFUIDatePicker]; +} + +- (void)selectPickerViewRowWithTitle:(NSString *)title +{ + NSArray *dataToSelect = @[title]; + [self selectPickerValue:dataToSelect pickerType:KIFUIPickerView]; +} + +- (void)selectPickerViewRowWithTitle:(NSString *)title inComponent:(NSInteger)component +{ + NSMutableArray *dataToSelect = [[NSMutableArray alloc] init]; + + // Assume it is datePicker and then test our hypothesis later! + UIPickerView *pickerView = [[[[UIApplication sharedApplication] datePickerWindow] subviewsWithClassNameOrSuperClassNamePrefix:@"UIPickerView"] lastObject]; + + // Check which type of UIPickerVIew is visible on current window. + KIFPickerType pickerType = 0; + if ([pickerView respondsToSelector:@selector(setDate:animated:)]) { + pickerType = KIFUIDatePicker; + } + else { + pickerType = KIFUIPickerView; + pickerView = [[[[UIApplication sharedApplication] pickerViewWindow] subviewsWithClassNameOrSuperClassNamePrefix:@"UIPickerView"] lastObject]; + } + + // Add title at component index and add empty strings for other. + // This support legacy function re-use. + for (int i = 0; i < pickerView.numberOfComponents; i++) { + if (component == i) { + [dataToSelect addObject:title]; + } + else { + NSInteger currentIndex = [pickerView selectedRowInComponent:i]; + NSString *rowTitle = nil; + if ([pickerView.delegate respondsToSelector:@selector(pickerView:titleForRow:forComponent:)]) { + rowTitle = [pickerView.delegate pickerView:pickerView titleForRow:currentIndex forComponent: i]; + } else if ([pickerView.delegate respondsToSelector:@selector(pickerView:viewForRow:forComponent:reusingView:)]) { + // This delegate inserts views directly, so try to figure out what the title is by looking for a label + UIView *rowView = [pickerView.delegate pickerView:pickerView viewForRow:currentIndex forComponent: i reusingView:nil]; + NSArray *labels = [rowView subviewsWithClassNameOrSuperClassNamePrefix:@"UILabel"]; + UILabel *label = (labels.count > 0 ? labels[0] : nil); + rowTitle = label.text; + } + + if (rowTitle) { + [dataToSelect addObject: rowTitle]; + } else { + @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Unknown picker type. Delegate responds neither to pickerView:titleForRow:forComponent: nor to pickerView:viewForRow:forComponent:reusingView:" userInfo:nil]; + } + } + } + + [self selectPickerValue:dataToSelect pickerType:pickerType]; +} + +- (void) selectPickerValue:(NSArray*)pickerColumnValues pickerType:(KIFPickerType)pickerType { + + [self runBlock:^KIFTestStepResult(NSError **error) { + NSInteger columnCount = [pickerColumnValues count]; + NSMutableArray* found_values = [NSMutableArray arrayWithCapacity:columnCount]; + for (NSInteger componentIndex = 0; componentIndex < columnCount; componentIndex++) { + [found_values addObject:[NSNumber numberWithBool:NO]]; + } + // Find the picker view + UIPickerView *pickerView = nil; + switch (pickerType) + { + case KIFUIDatePicker: + pickerView = [[[[UIApplication sharedApplication] datePickerWindow] subviewsWithClassNameOrSuperClassNamePrefix:@"UIPickerView"] lastObject]; + KIFTestCondition(pickerView, error, @"No picker view is present"); + break; + case KIFUIPickerView: + pickerView = [[[[UIApplication sharedApplication] pickerViewWindow] subviewsWithClassNameOrSuperClassNamePrefix:@"UIPickerView"] lastObject]; + } + + NSInteger componentCount = [pickerView.dataSource numberOfComponentsInPickerView:pickerView]; + KIFTestCondition(componentCount == columnCount, error, @"The UIDatePicker does not have the expected column count."); + + for (NSInteger componentIndex = 0; componentIndex < componentCount; componentIndex++) { + NSInteger rowCount = [pickerView.dataSource pickerView:pickerView numberOfRowsInComponent:componentIndex]; + for (NSInteger rowIndex = 0; rowIndex < rowCount; rowIndex++) { + NSString *rowTitle = nil; + if ([pickerView.delegate respondsToSelector:@selector(pickerView:titleForRow:forComponent:)]) { + rowTitle = [pickerView.delegate pickerView:pickerView titleForRow:rowIndex forComponent:componentIndex]; + } else if ([pickerView.delegate respondsToSelector:@selector(pickerView:viewForRow:forComponent:reusingView:)]) { + + UIView *rowView = [pickerView.delegate pickerView:pickerView viewForRow:rowIndex forComponent:componentIndex reusingView:nil]; + UILabel *label; + if ([rowView isKindOfClass:[UILabel class]] ) { + label = (id)rowView; + } else { + // This delegate inserts views directly, so try to figure out what the title is by looking for a label + NSArray *labels = [rowView subviewsWithClassNameOrSuperClassNamePrefix:@"UILabel"]; + label = (labels.count > 0 ? labels[0] : nil); + } + rowTitle = label.text; + } + + if (rowIndex==[pickerView selectedRowInComponent:componentIndex] && [rowTitle isEqual:pickerColumnValues[componentIndex]]){ + [found_values replaceObjectAtIndex:componentIndex withObject:@(YES)]; + break; + } + else if ([rowTitle isEqual:pickerColumnValues[componentIndex]]) { + [pickerView selectRow:rowIndex inComponent:componentIndex animated:false]; + CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1, false); + + // Tap in the middle of the picker view to select the item + [pickerView tap]; + [self waitForTimeInterval:0.5]; + + // The combination of selectRow:inComponent:animated: and tap does not consistently result in + // pickerView:didSelectRow:inComponent: being called on the delegate. We need to do it explicitly. + if ([pickerView.delegate respondsToSelector:@selector(pickerView:didSelectRow:inComponent:)]) { + [pickerView.delegate pickerView:pickerView didSelectRow:rowIndex inComponent:componentIndex]; + } + + [found_values replaceObjectAtIndex:componentIndex withObject:@(YES)]; + break; + } + } + if (found_values[componentIndex] == [NSNumber numberWithBool:YES]) { + continue; + } + } + + // Support multiple column by adding flag to check if the value found in + // at-least one column + BOOL _foundInOneColumn = NO; + for (NSInteger componentIndex = 0; componentIndex < columnCount; componentIndex++) { + if (found_values[componentIndex] != [NSNumber numberWithBool:NO]) { + _foundInOneColumn = YES; + } + } + + if (!_foundInOneColumn) { + KIFTestCondition(NO, error, @"Failed to select from Picker."); + return KIFTestStepResultFailure; + } + + return KIFTestStepResultSuccess; + }]; + +} + +- (void)setOn:(BOOL)switchIsOn forSwitchWithAccessibilityLabel:(NSString *)label +{ + UIView *view = nil; + UIAccessibilityElement *element = nil; + + [self waitForAccessibilityElement:&element view:&view withLabel:label value:nil traits:UIAccessibilityTraitButton tappable:YES]; + + if (![view isKindOfClass:[UISwitch class]]) { + [self failWithError:[NSError KIFErrorWithFormat:@"View with accessibility label \"%@\" is a %@, not a UISwitch", label, NSStringFromClass([view class])] stopTest:YES]; + } + + UISwitch *switchView = (UISwitch *)view; + + // No need to switch it if it's already in the correct position + if (switchView.isOn == switchIsOn) { + return; + } + + [self tapAccessibilityElement:element inView:view]; + + // If we succeeded, stop the test. + if (switchView.isOn == switchIsOn) { + return; + } + + NSLog(@"Faking turning switch %@ with accessibility label %@", switchIsOn ? @"ON" : @"OFF", label); + [switchView setOn:switchIsOn animated:YES]; + [switchView sendActionsForControlEvents:UIControlEventValueChanged]; + [self waitForTimeInterval:0.5]; + + // We gave it our best shot. Fail the test. + if (switchView.isOn != switchIsOn) { + [self failWithError:[NSError KIFErrorWithFormat:@"Failed to toggle switch to \"%@\"; instead, it was \"%@\"", switchIsOn ? @"ON" : @"OFF", switchView.on ? @"ON" : @"OFF"] stopTest:YES]; + } +} + + + +- (void)setValue:(float)value forSliderWithAccessibilityLabel:(NSString *)label +{ + UISlider *slider = nil; + UIAccessibilityElement *element = nil; + [self waitForAccessibilityElement:&element view:&slider withLabel:label value:nil traits:UIAccessibilityTraitNone tappable:YES]; + + if (![slider isKindOfClass:[UISlider class]]) { + [self failWithError:[NSError KIFErrorWithFormat:@"View with accessibility label \"%@\" is a %@, not a UISlider", label, NSStringFromClass([slider class])] stopTest:YES]; + } + [self setValue:value forSlider:slider]; +} + +- (void)setValue:(float)value forSlider:(UISlider *)slider +{ + if (value < slider.minimumValue) { + [self failWithError:[NSError KIFErrorWithFormat:@"Cannot slide past minimum value of %f", slider.minimumValue] stopTest:YES]; + } + + if (value > slider.maximumValue) { + [self failWithError:[NSError KIFErrorWithFormat:@"Cannot slide past maximum value of %f", slider.maximumValue] stopTest:YES]; + } + + CGRect trackRect = [slider trackRectForBounds:slider.bounds]; + CGPoint currentPosition = CGPointCenteredInRect([slider thumbRectForBounds:slider.bounds trackRect:trackRect value:slider.value]); + CGPoint finalPosition = CGPointCenteredInRect([slider thumbRectForBounds:slider.bounds trackRect:trackRect value:value]); + + if (value == slider.minimumValue) { + finalPosition.x = 0; + } else if (value == slider.maximumValue) { + finalPosition.x = slider.bounds.size.width; + } + + [slider dragFromPoint:currentPosition toPoint:finalPosition steps:10]; +} + +- (void)dismissPopover +{ + const NSTimeInterval tapDelay = 0.05; + UIWindow *window = [[UIApplication sharedApplication] dimmingViewWindow]; + if (!window) { + [self failWithError:[NSError KIFErrorWithFormat:@"Failed to find any dimming views in the application"] stopTest:YES]; + } + UIView *dimmingView = [[window subviewsWithClassNamePrefix:@"UIDimmingView"] lastObject]; + [dimmingView tapAtPoint:CGPointMake(50.0f, 50.0f)]; + CFRunLoopRunInMode(kCFRunLoopDefaultMode, tapDelay, false); +} + +- (void)choosePhotoInAlbum:(NSString *)albumName atRow:(NSInteger)row column:(NSInteger)column +{ + // This is basically the same as the step to tap with an accessibility label except that the accessibility labels for the albums have the number of photos appended to the end, such as "My Photos (3)." This means that we have to do a prefix match rather than an exact match. + [self runBlock:^KIFTestStepResult(NSError **error) { + + NSString *labelPrefix = [NSString stringWithFormat:@"%@", albumName]; + UIAccessibilityElement *element = [[UIApplication sharedApplication] accessibilityElementMatchingBlock:^(UIAccessibilityElement *element) { + return [element.accessibilityLabel hasPrefix:labelPrefix]; + }]; + + KIFTestWaitCondition(element, error, @"Failed to find photo album with name %@", albumName); + + UIView *view = [UIAccessibilityElement viewContainingAccessibilityElement:element]; + KIFTestWaitCondition(view, error, @"Failed to find view for photo album with name %@", albumName); + + if (![view isUserInteractionActuallyEnabled]) { + if (error) { + *error = [NSError KIFErrorWithFormat:@"Album picker is not enabled for interaction"]; + } + return KIFTestStepResultWait; + } + + CGRect elementFrame = [view.windowOrIdentityWindow convertRect:element.accessibilityFrame toView:view]; + CGPoint tappablePointInElement = [view tappablePointInRect:elementFrame]; + + [view tapAtPoint:tappablePointInElement]; + + return KIFTestStepResultSuccess; + }]; + + // Wait for media picker view controller to be pushed. + [self waitForTimeInterval:1]; + + // Tap the desired photo in the grid + // TODO: This currently only works for the first page of photos. It should scroll appropriately at some point. + const CGFloat headerHeight = 64.0; + const CGSize thumbnailSize = CGSizeMake(75.0, 75.0); + const CGFloat thumbnailMargin = 5.0; + CGPoint thumbnailCenter; + thumbnailCenter.x = thumbnailMargin + (MAX(0, column - 1) * (thumbnailSize.width + thumbnailMargin)) + thumbnailSize.width / 2.0; + thumbnailCenter.y = headerHeight + thumbnailMargin + (MAX(0, row - 1) * (thumbnailSize.height + thumbnailMargin)) + thumbnailSize.height / 2.0; + [self tapScreenAtPoint:thumbnailCenter]; +} + +- (void)tapRowAtIndexPath:(NSIndexPath *)indexPath inTableViewWithAccessibilityIdentifier:(NSString *)identifier +{ + UITableView *tableView; + [self waitForAccessibilityElement:NULL view:&tableView withIdentifier:identifier tappable:NO]; + [self tapRowAtIndexPath:indexPath inTableView:tableView]; +} + +- (void)tapRowInTableViewWithAccessibilityLabel:(NSString*)tableViewLabel atIndexPath:(NSIndexPath *)indexPath +{ + UITableView *tableView = (UITableView *)[self waitForViewWithAccessibilityLabel:tableViewLabel]; + [self tapRowAtIndexPath:indexPath inTableView:tableView]; +} + +- (void)tapRowAtIndexPath:(NSIndexPath *)indexPath inTableView:(UITableView *)tableView +{ + UITableViewCell *cell = [self waitForCellAtIndexPath:indexPath inTableView:tableView]; + CGRect cellFrame = [cell.contentView convertRect:cell.contentView.frame toView:tableView]; + [tableView tapAtPoint:CGPointCenteredInRect(cellFrame)]; + + [self waitForAnimationsToFinish]; +} + +- (void)swipeRowAtIndexPath:(NSIndexPath *)indexPath inTableView:(UITableView *)tableView inDirection:(KIFSwipeDirection)direction +{ + const NSUInteger kNumberOfPointsInSwipePath = 20; + + UITableViewCell *cell = [self waitForCellAtIndexPath:indexPath inTableView:tableView]; + CGRect cellFrame = [cell.contentView convertRect:cell.contentView.frame toView:tableView]; + CGPoint swipeStart = CGPointCenteredInRect(cellFrame); + KIFDisplacement swipeDisplacement = KIFDisplacementForSwipingInDirection(direction); + [tableView dragFromPoint:swipeStart displacement:swipeDisplacement steps:kNumberOfPointsInSwipePath]; + + // Wait for the view to stabilize. + [tester waitForTimeInterval:0.5]; + +} + +- (void)tapItemAtIndexPath:(NSIndexPath *)indexPath inCollectionViewWithAccessibilityIdentifier:(NSString *)identifier +{ + UICollectionView *collectionView; + [self waitForAccessibilityElement:NULL view:&collectionView withIdentifier:identifier tappable:NO]; + [self tapItemAtIndexPath:indexPath inCollectionView:collectionView]; +} + +- (BOOL)acknowledgeSystemAlert { + return [UIAutomationHelper acknowledgeSystemAlert]; +} + +- (void)tapItemAtIndexPath:(NSIndexPath *)indexPath inCollectionView:(UICollectionView *)collectionView +{ + UICollectionViewCell *cell; + cell = [self waitForCellAtIndexPath:indexPath inCollectionView:collectionView]; + + CGRect cellFrame = [cell.contentView convertRect:cell.contentView.frame toView:collectionView]; + [collectionView tapAtPoint:CGPointCenteredInRect(cellFrame)]; + + [self waitForAnimationsToFinish]; +} + +- (void)swipeViewWithAccessibilityLabel:(NSString *)label inDirection:(KIFSwipeDirection)direction +{ + [self swipeViewWithAccessibilityLabel:label value:nil traits:UIAccessibilityTraitNone inDirection:direction]; +} + +- (void)swipeViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value inDirection:(KIFSwipeDirection)direction +{ + [self swipeViewWithAccessibilityLabel:label value:value traits:UIAccessibilityTraitNone inDirection:direction]; +} + +- (void)swipeViewWithAccessibilityLabel:(NSString *)label value:(NSString *)value traits:(UIAccessibilityTraits)traits inDirection:(KIFSwipeDirection)direction +{ + UIView *viewToSwipe = nil; + UIAccessibilityElement *element = nil; + + [self waitForAccessibilityElement:&element view:&viewToSwipe withLabel:label value:value traits:traits tappable:YES]; + + [self swipeAccessibilityElement:element inView:viewToSwipe inDirection:direction]; +} + +- (void)swipeAccessibilityElement:(UIAccessibilityElement *)element inView:(UIView *)viewToSwipe inDirection:(KIFSwipeDirection)direction +{ + // The original version of this came from http://groups.google.com/group/kif-framework/browse_thread/thread/df3f47eff9f5ac8c + + const NSUInteger kNumberOfPointsInSwipePath = 20; + + // Within this method, all geometry is done in the coordinate system of the view to swipe. + + CGRect elementFrame = [viewToSwipe.windowOrIdentityWindow convertRect:element.accessibilityFrame toView:viewToSwipe]; + CGPoint swipeStart = CGPointCenteredInRect(elementFrame); + KIFDisplacement swipeDisplacement = KIFDisplacementForSwipingInDirection(direction); + + [viewToSwipe dragFromPoint:swipeStart displacement:swipeDisplacement steps:kNumberOfPointsInSwipePath]; +} + +- (void)scrollViewWithAccessibilityLabel:(NSString *)label byFractionOfSizeHorizontal:(CGFloat)horizontalFraction vertical:(CGFloat)verticalFraction +{ + UIView *viewToScroll; + UIAccessibilityElement *element; + [self waitForAccessibilityElement:&element view:&viewToScroll withLabel:label value:nil traits:UIAccessibilityTraitNone tappable:NO]; + [self scrollAccessibilityElement:element inView:viewToScroll byFractionOfSizeHorizontal:horizontalFraction vertical:verticalFraction]; +} + +- (void)scrollViewWithAccessibilityIdentifier:(NSString *)identifier byFractionOfSizeHorizontal:(CGFloat)horizontalFraction vertical:(CGFloat)verticalFraction +{ + UIView *viewToScroll; + UIAccessibilityElement *element; + [self waitForAccessibilityElement:&element view:&viewToScroll withIdentifier:identifier tappable:NO]; + [self scrollAccessibilityElement:element inView:viewToScroll byFractionOfSizeHorizontal:horizontalFraction vertical:verticalFraction]; +} + +- (void)scrollAccessibilityElement:(UIAccessibilityElement *)element inView:(UIView *)viewToScroll byFractionOfSizeHorizontal:(CGFloat)horizontalFraction vertical:(CGFloat)verticalFraction +{ + const NSUInteger kNumberOfPointsInScrollPath = 5; + + // Within this method, all geometry is done in the coordinate system of the view to scroll. + + CGRect elementFrame = [viewToScroll.windowOrIdentityWindow convertRect:element.accessibilityFrame toView:viewToScroll]; + + KIFDisplacement scrollDisplacement = CGPointMake(elementFrame.size.width * horizontalFraction, elementFrame.size.height * verticalFraction); + + CGPoint scrollStart = CGPointCenteredInRect(elementFrame); + scrollStart.x -= scrollDisplacement.x / 2; + scrollStart.y -= scrollDisplacement.y / 2; + + [viewToScroll dragFromPoint:scrollStart displacement:scrollDisplacement steps:kNumberOfPointsInScrollPath]; +} + +- (void)waitForFirstResponderWithAccessibilityLabel:(NSString *)label +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + UIResponder *firstResponder = [[[UIApplication sharedApplication] keyWindow] firstResponder]; + if ([firstResponder isKindOfClass:NSClassFromString(@"UISearchBarTextField")]) { + do { + firstResponder = [(UIView *)firstResponder superview]; + } while (firstResponder && ![firstResponder isKindOfClass:[UISearchBar class]]); + } + KIFTestWaitCondition([[firstResponder accessibilityLabel] isEqualToString:label], error, @"Expected accessibility label for first responder to be '%@', got '%@'", label, [firstResponder accessibilityLabel]); + + return KIFTestStepResultSuccess; + }]; +} + +- (void)waitForFirstResponderWithAccessibilityLabel:(NSString *)label traits:(UIAccessibilityTraits)traits +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + UIResponder *firstResponder = [[[UIApplication sharedApplication] keyWindow] firstResponder]; + + NSString *foundLabel = firstResponder.accessibilityLabel; + + // foundLabel == label checks for the case where both are nil. + KIFTestWaitCondition(foundLabel == label || [foundLabel isEqualToString:label], error, @"Expected accessibility label for first responder to be '%@', got '%@'", label, foundLabel); + KIFTestWaitCondition(firstResponder.accessibilityTraits & traits, error, @"Found first responder with accessibility label, but not traits."); + + return KIFTestStepResultSuccess; + }]; +} + +- (UITableViewCell *)waitForCellAtIndexPath:(NSIndexPath *)indexPath inTableViewWithAccessibilityIdentifier:(NSString *)identifier +{ + UITableView *tableView; + [self waitForAccessibilityElement:NULL view:&tableView withIdentifier:identifier tappable:NO]; + return [self waitForCellAtIndexPath:indexPath inTableView:tableView]; +} + +- (UITableViewCell *)waitForCellAtIndexPath:(NSIndexPath *)indexPath inTableView:(UITableView *)tableView +{ + if (![tableView isKindOfClass:[UITableView class]]) { + [self failWithError:[NSError KIFErrorWithFormat:@"View is not a table view"] stopTest:YES]; + } + + // If section < 0, search from the end of the table. + if (indexPath.section < 0) { + indexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:tableView.numberOfSections + indexPath.section]; + } + + // If row < 0, search from the end of the section. + if (indexPath.row < 0) { + indexPath = [NSIndexPath indexPathForRow:[tableView numberOfRowsInSection:indexPath.section] + indexPath.row inSection:indexPath.section]; + } + + [self runBlock:^KIFTestStepResult(NSError **error) { + + KIFTestWaitCondition(indexPath.section < tableView.numberOfSections, error, @"Section %ld is not found in table view", (long)indexPath.section); + + KIFTestWaitCondition(indexPath.row < [tableView numberOfRowsInSection:indexPath.section], error, @"Row %ld is not found in section %ld of table view", (long)indexPath.row, (long)indexPath.section); + + return KIFTestStepResultSuccess; + }]; + + __block UITableViewCell *cell = nil; + __block CGFloat lastYOffset = CGFLOAT_MAX; + [self runBlock:^KIFTestStepResult(NSError **error) { + [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; + cell = [tableView cellForRowAtIndexPath:indexPath]; + KIFTestWaitCondition(!!cell, error, @"Table view cell at index path %@ not found", indexPath); + + if (lastYOffset != tableView.contentOffset.y) { + lastYOffset = tableView.contentOffset.y; + KIFTestWaitCondition(NO, error, @"Didn't finish scrolling to cell."); + } + + return KIFTestStepResultSuccess; + }]; + + [self waitForTimeInterval:0.1]; // Let things settle. + + + return cell; +} + +- (UICollectionViewCell *)waitForCellAtIndexPath:(NSIndexPath *)indexPath inCollectionViewWithAccessibilityIdentifier:(NSString *)identifier +{ + UICollectionView *collectionView; + [self waitForAccessibilityElement:NULL view:&collectionView withIdentifier:identifier tappable:NO]; + return [self waitForCellAtIndexPath:indexPath inCollectionView:collectionView]; +} + +- (UICollectionViewCell *)waitForCellAtIndexPath:(NSIndexPath *)indexPath inCollectionView:(UICollectionView *)collectionView +{ + if (![collectionView isKindOfClass:[UICollectionView class]]) { + [self failWithError:[NSError KIFErrorWithFormat:@"View is not a collection view"] stopTest:YES]; + } + + NSInteger section = indexPath.section; + NSInteger item = indexPath.item; + + // If section < 0, search from the end of the table. + if (section < 0) { + section += collectionView.numberOfSections; + } + + // If item < 0, search from the end of the section. + if (item < 0) { + item += [collectionView numberOfItemsInSection:section]; + } + + indexPath = [NSIndexPath indexPathForItem:item inSection:section]; + + [self runBlock:^KIFTestStepResult(NSError **error) { + + KIFTestWaitCondition(indexPath.section < collectionView.numberOfSections, error, @"Section %ld is not found in collection view", (long)indexPath.section); + + KIFTestWaitCondition(indexPath.row < [collectionView numberOfItemsInSection:indexPath.section], error, @"Item %ld is not found in section %ld of collection view", (long)indexPath.row, (long)indexPath.section); + + return KIFTestStepResultSuccess; + }]; + + [collectionView scrollToItemAtIndexPath:indexPath + atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally | UICollectionViewScrollPositionCenteredVertically + animated:YES]; + + [self waitForAnimationsToFinish]; + UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath]; + + //For big collection views with many cells the cell might not be ready yet. Relayout and try again. + if(cell == nil) { + [collectionView layoutIfNeeded]; + [collectionView scrollToItemAtIndexPath:indexPath + atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally | UICollectionViewScrollPositionCenteredVertically + animated:YES]; + [self waitForAnimationsToFinish]; + cell = [collectionView cellForItemAtIndexPath:indexPath]; + } + + if (!cell) { + [self failWithError:[NSError KIFErrorWithFormat: @"Collection view cell at index path %@ not found", indexPath] stopTest:YES]; + } + + return cell; +} + +- (void)tapStatusBar +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + KIFTestWaitCondition(![UIApplication sharedApplication].statusBarHidden, error, @"Expected status bar to be visible."); + return KIFTestStepResultSuccess; + }]; + + UIWindow *statusBarWindow = [[UIApplication sharedApplication] statusBarWindow]; + NSArray *statusBars = [statusBarWindow subviewsWithClassNameOrSuperClassNamePrefix:@"UIStatusBar"]; + + if (statusBars.count == 0) { + [self failWithError:[NSError KIFErrorWithFormat: @"Could not find the status bar"] stopTest:YES]; + } + + [self tapAccessibilityElement:statusBars[0] inView:statusBars[0]]; +} + +- (void)moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath inTableViewWithAccessibilityIdentifier:(NSString *)identifier +{ + UITableView *tableView; + [self waitForAccessibilityElement:NULL view:&tableView withIdentifier:identifier tappable:NO]; + + UITableViewCell *cell = [self waitForCellAtIndexPath:sourceIndexPath inTableView:tableView]; + + NSError *error = nil; + if (![tableView dragCell:cell toIndexPath:destinationIndexPath error:&error]) { + [self failWithError:error stopTest:YES]; + } +} + +- (void)deactivateAppForDuration:(NSTimeInterval)duration { + [UIAutomationHelper deactivateAppForDuration:@(duration)]; +} + +-(void) tapStepperWithAccessibilityLabel: (NSString *)accessibilityLabel increment: (KIFStepperDirection) stepperDirection +{ + @autoreleasepool { + UIView *view = nil; + UIAccessibilityElement *element = nil; + [self waitForAccessibilityElement:&element view:&view withLabel:accessibilityLabel value:nil traits:UIAccessibilityTraitNone tappable:YES]; + [self tapStepperWithAccessibilityElement:element increment:stepperDirection inView:view]; + } +} + +//inspired by http://www.raywenderlich.com/61419/ios-ui-testing-with-kif +- (void)tapStepperWithAccessibilityElement:(UIAccessibilityElement *)element increment: (KIFStepperDirection) stepperDirection inView:(UIView *)view +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + + KIFTestWaitCondition(view.isUserInteractionActuallyEnabled, error, @"View is not enabled for interaction"); + + // If the accessibilityFrame is not set, fallback to the view frame. + CGRect elementFrame; + if (CGRectEqualToRect(CGRectZero, element.accessibilityFrame)) { + elementFrame.origin = CGPointZero; + elementFrame.size = view.frame.size; + } else { + elementFrame = [view.windowOrIdentityWindow convertRect:element.accessibilityFrame toView:view]; + } + + CGPoint stepperPointToTap = [view tappablePointInRect:elementFrame]; + + switch (stepperDirection) + { + case KIFStepperDirectionIncrement: + stepperPointToTap.x += CGRectGetWidth(view.frame) / 4; + break; + case KIFStepperDirectionDecrement: + stepperPointToTap.x -= CGRectGetWidth(view.frame) / 4; + break; + } + + // This is mostly redundant of the test in _accessibilityElementWithLabel: + KIFTestWaitCondition(!isnan(stepperPointToTap.x), error, @"View is not tappable"); + [view tapAtPoint:stepperPointToTap]; + + KIFTestCondition(![view canBecomeFirstResponder] || [view isDescendantOfFirstResponder], error, @"Failed to make the view into the first responder"); + + return KIFTestStepResultSuccess; + }]; + + [self waitForAnimationsToFinish]; +} +@end + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/UIAutomationHelper.h b/examples/InterstitialUnifiedDemand/KIF-master/Classes/UIAutomationHelper.h new file mode 100755 index 000000000..822f7219d --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/UIAutomationHelper.h @@ -0,0 +1,19 @@ +// +// UIAutomationHelper.h +// KIF +// +// Created by Joe Masilotti on 12/1/14. +// +// + +#import + +@class KIFTestActor; + +@interface UIAutomationHelper : NSObject + ++ (BOOL)acknowledgeSystemAlert; + ++ (void)deactivateAppForDuration:(NSNumber *)duration; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Classes/UIAutomationHelper.m b/examples/InterstitialUnifiedDemand/KIF-master/Classes/UIAutomationHelper.m new file mode 100755 index 000000000..cc4bf4f1c --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Classes/UIAutomationHelper.m @@ -0,0 +1,151 @@ +// +// UIAutomationHelper.m +// KIF +// +// Created by Joe Masilotti on 12/1/14. +// +// + +#import "UIAutomationHelper.h" +#import +#import +#import + +@interface UIAElement : NSObject +- (void)tap; +- (NSNumber *)pid; +@end + +@interface UIAXElement : NSObject +- (BOOL)isValid; +@end + +@interface UIAElementArray : NSArray +- (id)firstWithPredicate:(id)predicate; +@end + +@interface UIAAlert : UIAElement +- (NSArray *)buttons; +- (BOOL)isValid; +- (BOOL)isVisible; +@end + +@interface UIAApplication : UIAElement +- (UIAAlert *)alert; +- (NSString *)name; +- (id)appItemScrollView; +@end + +@interface UIATarget : UIAElement ++ (UIATarget *)localTarget; +- (UIAApplication *)frontMostApp; +- (void)deactivateAppForDuration:(NSNumber *)duration; +@end + +@interface UIAElementNil : UIAElement + +@end + +@implementation UIAutomationHelper + +static UIAApplication * (*frontMostAppIMP)(id, SEL); +static id (*firstWithPredicateIMP)(id, SEL, id); + +static UIAApplication * KIF_frontMostApp(id self, SEL _cmd) +{ + UIAApplication *frontMostApp = frontMostAppIMP(self, _cmd); + if (![frontMostApp name] && [@(getpid()) isEqual:[frontMostApp pid]]) { + NSBundle *mainBundle = [NSBundle mainBundle]; + NSString *appName = [mainBundle objectForInfoDictionaryKey:@"CFBundleDisplayName"] ?: [mainBundle objectForInfoDictionaryKey:@"CFBundleName"]; + [frontMostApp setValue:appName forKey:@"name"]; + } + return frontMostApp; +} + +static id KIF_firstWithPredicate(id self, SEL _cmd, id predicate) +{ + NSArray *callStackSymbols = [NSThread callStackSymbols]; + if (callStackSymbols.count > 1 && [callStackSymbols[1] containsString:@"-[UIATarget reactivateApp]"]) { + id firstWithPredicate = firstWithPredicateIMP(self, _cmd, predicate); + // -[UIATarget reactivateApp] was not rewritten for the new iOS 9 app switcher + return [firstWithPredicate isValid] ? firstWithPredicate : [[[[UIAutomationHelper sharedHelper] target] frontMostApp] appItemScrollView]; + } else { + return firstWithPredicateIMP(self, _cmd, predicate); + } +} + +static void FixReactivateApp(void) +{ + NSProcessInfo *processInfo = [NSProcessInfo processInfo]; + if ([processInfo respondsToSelector:@selector(isOperatingSystemAtLeastVersion:)] && [processInfo isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){9, 0, 0}]) { + // Workaround bug in iOS 9: https://github.com/kif-framework/KIF/issues/703 + Method frontMostApp = class_getInstanceMethod(objc_lookUpClass("UIATarget"), @selector(frontMostApp)); + frontMostAppIMP = (__typeof__(frontMostAppIMP))method_getImplementation(frontMostApp); + method_setImplementation(frontMostApp, (IMP)KIF_frontMostApp); + + Method firstWithPredicate = class_getInstanceMethod(objc_lookUpClass("UIAElementArray"), @selector(firstWithPredicate:)); + firstWithPredicateIMP = (__typeof__(firstWithPredicateIMP))method_getImplementation(firstWithPredicate); + method_setImplementation(firstWithPredicate, (IMP)KIF_firstWithPredicate); + } +} + ++ (UIAutomationHelper *)sharedHelper +{ + static dispatch_once_t once; + static UIAutomationHelper *sharedHelper = nil; + dispatch_once(&once, ^{ + sharedHelper = [[self alloc] init]; + [sharedHelper linkAutomationFramework]; + }); + return sharedHelper; +} + ++ (BOOL)acknowledgeSystemAlert { + return [[self sharedHelper] acknowledgeSystemAlert]; +} + ++ (void)deactivateAppForDuration:(NSNumber *)duration { + [[self sharedHelper] deactivateAppForDuration:duration]; +} +- (BOOL)acknowledgeSystemAlert { + UIAApplication *application = [[self target] frontMostApp]; + UIAAlert* alert = application.alert; + if (![alert isKindOfClass:[self nilElementClass]]) { + [[alert.buttons lastObject] tap]; + while ([alert isValid] && [alert isVisible]) { + } + return YES; + } + return NO; +} + +- (void)deactivateAppForDuration:(NSNumber *)duration { + [[self target] deactivateAppForDuration:duration]; +} + +#pragma mark - Private + +- (void)linkAutomationFramework { + dlopen([@"/Developer/Library/PrivateFrameworks/UIAutomation.framework/UIAutomation" fileSystemRepresentation], RTLD_LOCAL); + FixReactivateApp(); + + // Keep trying until the accessibility server starts up (it takes a little while on iOS 7) + UIATarget *target = nil; + while (!target) { + @try { + target = [self target]; + } + @catch (NSException *exception) { } + @finally { } + } +} + +- (UIATarget *)target { + return [NSClassFromString(@"UIATarget") localTarget]; +} + +- (Class)nilElementClass { + return NSClassFromString(@"UIAElementNil"); +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests copy-Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests copy-Info.plist new file mode 100755 index 000000000..30ddc97b8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests copy-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.square.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/Acceptance Tests-Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/Acceptance Tests-Info.plist new file mode 100755 index 000000000..30ddc97b8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/Acceptance Tests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.square.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/Acceptance Tests-Prefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/Acceptance Tests-Prefix.pch new file mode 100755 index 000000000..e8420de79 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/Acceptance Tests-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header for all source files of the 'Acceptance Tests' target in the 'Acceptance Tests' project +// + +#ifdef __OBJC__ + #import + #import + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/BasicCalculatorTests.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/BasicCalculatorTests.m new file mode 100755 index 000000000..ee30c38d1 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/BasicCalculatorTests.m @@ -0,0 +1,98 @@ +// +// BasicCalculatorTests.m +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +@interface KIFUITestActor (BasicCalculator) + +- (void)enterValue1:(NSString *)value; +- (void)enterValue2:(NSString *)value; +- (void)setOperation:(NSString *)operation; +- (void)enterValue1:(NSString *)value1 value2:(NSString *)value2 operation:(NSString *)operation; +- (void)waitForResult:(NSString *)result; + +@end + +@implementation KIFUITestActor (BasicCalculator) + +- (void)enterValue1:(NSString *)value +{ + [self clearTextFromAndThenEnterText:value intoViewWithAccessibilityLabel:@"First Number"]; +} + +- (void)enterValue2:(NSString *)value +{ + [self clearTextFromAndThenEnterText:value intoViewWithAccessibilityLabel:@"Second Number"]; +} + +- (void)setOperation:(NSString *)operation +{ + [self tapViewWithAccessibilityLabel:operation]; +} + +- (void)enterValue1:(NSString *)value1 value2:(NSString *)value2 operation:(NSString *)operation +{ + [self enterValue1:value1]; + [self enterValue2:value2]; + [self setOperation:operation]; +} + +- (void)waitForResult:(NSString *)result +{ + [self waitForViewWithAccessibilityLabel:result]; +} + +@end + +@interface BasicCalculatorTests : KIFTestCase +@end + +@implementation BasicCalculatorTests + +- (void)beforeAll +{ + [tester tapViewWithAccessibilityLabel:@"Basic Calculator" traits:UIAccessibilityTraitButton]; +} + +- (void)afterAll +{ + [tester tapViewWithAccessibilityLabel:@"Home" traits:UIAccessibilityTraitButton]; +} + +- (void)testAddition +{ + [tester enterValue1:@"100" value2:@"11.11111" operation:@"Add"]; + [tester waitForResult:@"111.11111000"]; +} + +- (void)testSubtraction +{ + [tester enterValue1:@"200" value2:@"0.1" operation:@"Subtract"]; + [tester waitForResult:@"199.90000000"]; +} + +- (void)testMultiplication +{ + [tester enterValue1:@"11.000" value2:@"1.1" operation:@"Multiply"]; + [tester waitForResult:@"12.10000000"]; +} + +- (void)testDivision +{ + [tester enterValue1:@"5.000" value2:@"2" operation:@"Divide"]; + [tester waitForResult:@"2.50000000"]; +} + +- (void)testToFail +{ + [tester fail]; + NSLog(@"This line never executes."); +} + +@end \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/en.lproj/InfoPlist.strings b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/en.lproj/InfoPlist.strings new file mode 100755 index 000000000..477b28ff8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Acceptance Tests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator.xcodeproj/project.pbxproj new file mode 100755 index 000000000..3143acc30 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator.xcodeproj/project.pbxproj @@ -0,0 +1,578 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + A88930681685133100FC7C63 /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A88930001684F0A400FC7C63 /* libKIF.a */; }; + EB4C30DE167B9E3A00E31109 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB4C30DD167B9E3A00E31109 /* UIKit.framework */; }; + EB4C30E0167B9E3A00E31109 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB4C30DF167B9E3A00E31109 /* Foundation.framework */; }; + EB4C30E2167B9E3A00E31109 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB4C30E1167B9E3A00E31109 /* CoreGraphics.framework */; }; + EB4C30E8167B9E3A00E31109 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EB4C30E6167B9E3A00E31109 /* InfoPlist.strings */; }; + EB4C30EA167B9E3A00E31109 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C30E9167B9E3A00E31109 /* main.m */; }; + EB4C30EE167B9E3A00E31109 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C30ED167B9E3A00E31109 /* AppDelegate.m */; }; + EB4C30F0167B9E3A00E31109 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = EB4C30EF167B9E3A00E31109 /* Default.png */; }; + EB4C30F2167B9E3A00E31109 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB4C30F1167B9E3A00E31109 /* Default@2x.png */; }; + EB4C30F4167B9E3A00E31109 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB4C30F3167B9E3A00E31109 /* Default-568h@2x.png */; }; + EB4C30F7167B9E3A00E31109 /* BasicCalculatorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C30F6167B9E3A00E31109 /* BasicCalculatorViewController.m */; }; + EB4C30FA167B9E3A00E31109 /* BasicCalculatorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB4C30F8167B9E3A00E31109 /* BasicCalculatorViewController.xib */; }; + EB4C3140167BA79700E31109 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB4C3101167B9E3A00E31109 /* SenTestingKit.framework */; }; + EB4C3141167BA79700E31109 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB4C30DD167B9E3A00E31109 /* UIKit.framework */; }; + EB4C3142167BA79700E31109 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB4C30DF167B9E3A00E31109 /* Foundation.framework */; }; + EB4C3148167BA79700E31109 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EB4C3146167BA79700E31109 /* InfoPlist.strings */; }; + EB4C3153167BA89B00E31109 /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3151167BA89A00E31109 /* AboutViewController.m */; }; + EB4C3155167BA89B00E31109 /* AboutViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB4C3152167BA89B00E31109 /* AboutViewController.xib */; }; + EB4C3156167BA89B00E31109 /* AboutViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB4C3152167BA89B00E31109 /* AboutViewController.xib */; }; + EB4C315A167BA99E00E31109 /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3158167BA99D00E31109 /* HomeViewController.m */; }; + EB4C315C167BA99E00E31109 /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB4C3159167BA99E00E31109 /* HomeViewController.xib */; }; + EB4C315D167BA99E00E31109 /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB4C3159167BA99E00E31109 /* HomeViewController.xib */; }; + EB4C3160167BAE6100E31109 /* BasicCalculatorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C315F167BAE6100E31109 /* BasicCalculatorTests.m */; }; + EB4C317B167BB0A900E31109 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB4C30E1167B9E3A00E31109 /* CoreGraphics.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + A8892FFF1684F0A400FC7C63 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A8892FF71684F0A400FC7C63 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = AAB07268139719AC008AF393; + remoteInfo = KIF; + }; + A88930061684F0B300FC7C63 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A8892FF71684F0A400FC7C63 /* KIF.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EB72043E1680DDAD00278DA2; + remoteInfo = KIFTestCase; + }; + EB2A8A871781D68600C6299F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A8892FF71684F0A400FC7C63 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EB60ECC1177F8C83005A041A; + remoteInfo = "Test Host"; + }; + EB2A8A891781D68600C6299F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A8892FF71684F0A400FC7C63 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EB60ECEB177F8DB3005A041A; + remoteInfo = "KIF Tests"; + }; + EB4C3161167BAEDE00E31109 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EB4C30D0167B9E3A00E31109 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EB4C30D8167B9E3A00E31109; + remoteInfo = Calculator; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + A8892FF71684F0A400FC7C63 /* KIF.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = KIF.xcodeproj; path = ../../../KIF.xcodeproj; sourceTree = ""; }; + EB4C30D9167B9E3A00E31109 /* Calculator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Calculator.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EB4C30DD167B9E3A00E31109 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + EB4C30DF167B9E3A00E31109 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + EB4C30E1167B9E3A00E31109 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + EB4C30E5167B9E3A00E31109 /* Calculator-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Calculator-Info.plist"; sourceTree = ""; }; + EB4C30E7167B9E3A00E31109 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + EB4C30E9167B9E3A00E31109 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + EB4C30EB167B9E3A00E31109 /* Calculator-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Calculator-Prefix.pch"; sourceTree = ""; }; + EB4C30EC167B9E3A00E31109 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + EB4C30ED167B9E3A00E31109 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + EB4C30EF167B9E3A00E31109 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + EB4C30F1167B9E3A00E31109 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + EB4C30F3167B9E3A00E31109 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + EB4C30F5167B9E3A00E31109 /* BasicCalculatorViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BasicCalculatorViewController.h; sourceTree = ""; }; + EB4C30F6167B9E3A00E31109 /* BasicCalculatorViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BasicCalculatorViewController.m; sourceTree = ""; }; + EB4C30F9167B9E3A00E31109 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/BasicCalculatorViewController.xib; sourceTree = ""; }; + EB4C3101167B9E3A00E31109 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + EB4C313F167BA79700E31109 /* Acceptance Tests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Acceptance Tests.octest"; sourceTree = BUILT_PRODUCTS_DIR; }; + EB4C3145167BA79700E31109 /* Acceptance Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Acceptance Tests-Info.plist"; sourceTree = ""; }; + EB4C3147167BA79700E31109 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + EB4C314C167BA79700E31109 /* Acceptance Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Acceptance Tests-Prefix.pch"; sourceTree = ""; }; + EB4C3150167BA89A00E31109 /* AboutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutViewController.h; sourceTree = ""; }; + EB4C3151167BA89A00E31109 /* AboutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutViewController.m; sourceTree = ""; }; + EB4C3152167BA89B00E31109 /* AboutViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AboutViewController.xib; sourceTree = ""; }; + EB4C3157167BA99D00E31109 /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = ""; }; + EB4C3158167BA99D00E31109 /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = ""; }; + EB4C3159167BA99E00E31109 /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = ""; }; + EB4C315F167BAE6100E31109 /* BasicCalculatorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BasicCalculatorTests.m; sourceTree = ""; }; + EB7204861680E02800278DA2 /* libKIFTestCase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libKIFTestCase.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + EB4C30D6167B9E3A00E31109 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EB4C30DE167B9E3A00E31109 /* UIKit.framework in Frameworks */, + EB4C30E0167B9E3A00E31109 /* Foundation.framework in Frameworks */, + EB4C30E2167B9E3A00E31109 /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB4C313B167BA79700E31109 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A88930681685133100FC7C63 /* libKIF.a in Frameworks */, + EB4C317B167BB0A900E31109 /* CoreGraphics.framework in Frameworks */, + EB4C3140167BA79700E31109 /* SenTestingKit.framework in Frameworks */, + EB4C3141167BA79700E31109 /* UIKit.framework in Frameworks */, + EB4C3142167BA79700E31109 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A8892FF81684F0A400FC7C63 /* Products */ = { + isa = PBXGroup; + children = ( + A88930001684F0A400FC7C63 /* libKIF.a */, + EB2A8A881781D68600C6299F /* Test Host.app */, + EB2A8A8A1781D68600C6299F /* KIF Tests.octest */, + ); + name = Products; + sourceTree = ""; + }; + EB4C30CE167B9E3A00E31109 = { + isa = PBXGroup; + children = ( + EB4C30E3167B9E3A00E31109 /* Calculator */, + EB4C3143167BA79700E31109 /* Acceptance Tests */, + EB4C30DC167B9E3A00E31109 /* Frameworks */, + EB4C30DA167B9E3A00E31109 /* Products */, + ); + sourceTree = ""; + }; + EB4C30DA167B9E3A00E31109 /* Products */ = { + isa = PBXGroup; + children = ( + EB4C30D9167B9E3A00E31109 /* Calculator.app */, + EB4C313F167BA79700E31109 /* Acceptance Tests.octest */, + ); + name = Products; + sourceTree = ""; + }; + EB4C30DC167B9E3A00E31109 /* Frameworks */ = { + isa = PBXGroup; + children = ( + A8892FF71684F0A400FC7C63 /* KIF.xcodeproj */, + EB7204861680E02800278DA2 /* libKIFTestCase.a */, + EB4C30DD167B9E3A00E31109 /* UIKit.framework */, + EB4C30DF167B9E3A00E31109 /* Foundation.framework */, + EB4C30E1167B9E3A00E31109 /* CoreGraphics.framework */, + EB4C3101167B9E3A00E31109 /* SenTestingKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + EB4C30E3167B9E3A00E31109 /* Calculator */ = { + isa = PBXGroup; + children = ( + EB4C30EC167B9E3A00E31109 /* AppDelegate.h */, + EB4C30ED167B9E3A00E31109 /* AppDelegate.m */, + EB4C30F5167B9E3A00E31109 /* BasicCalculatorViewController.h */, + EB4C30F6167B9E3A00E31109 /* BasicCalculatorViewController.m */, + EB4C30F8167B9E3A00E31109 /* BasicCalculatorViewController.xib */, + EB4C30E4167B9E3A00E31109 /* Supporting Files */, + EB4C3150167BA89A00E31109 /* AboutViewController.h */, + EB4C3151167BA89A00E31109 /* AboutViewController.m */, + EB4C3152167BA89B00E31109 /* AboutViewController.xib */, + EB4C3157167BA99D00E31109 /* HomeViewController.h */, + EB4C3158167BA99D00E31109 /* HomeViewController.m */, + EB4C3159167BA99E00E31109 /* HomeViewController.xib */, + ); + path = Calculator; + sourceTree = ""; + }; + EB4C30E4167B9E3A00E31109 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EB4C30E5167B9E3A00E31109 /* Calculator-Info.plist */, + EB4C30E6167B9E3A00E31109 /* InfoPlist.strings */, + EB4C30E9167B9E3A00E31109 /* main.m */, + EB4C30EB167B9E3A00E31109 /* Calculator-Prefix.pch */, + EB4C30EF167B9E3A00E31109 /* Default.png */, + EB4C30F1167B9E3A00E31109 /* Default@2x.png */, + EB4C30F3167B9E3A00E31109 /* Default-568h@2x.png */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + EB4C3143167BA79700E31109 /* Acceptance Tests */ = { + isa = PBXGroup; + children = ( + EB4C3144167BA79700E31109 /* Supporting Files */, + EB4C315F167BAE6100E31109 /* BasicCalculatorTests.m */, + ); + path = "Acceptance Tests"; + sourceTree = ""; + }; + EB4C3144167BA79700E31109 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EB4C3145167BA79700E31109 /* Acceptance Tests-Info.plist */, + EB4C3146167BA79700E31109 /* InfoPlist.strings */, + EB4C314C167BA79700E31109 /* Acceptance Tests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + EB4C30D8167B9E3A00E31109 /* Calculator */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB4C3112167B9E3A00E31109 /* Build configuration list for PBXNativeTarget "Calculator" */; + buildPhases = ( + EB4C30D5167B9E3A00E31109 /* Sources */, + EB4C30D6167B9E3A00E31109 /* Frameworks */, + EB4C30D7167B9E3A00E31109 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Calculator; + productName = Calculator; + productReference = EB4C30D9167B9E3A00E31109 /* Calculator.app */; + productType = "com.apple.product-type.application"; + }; + EB4C313E167BA79700E31109 /* Acceptance Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB4C314D167BA79700E31109 /* Build configuration list for PBXNativeTarget "Acceptance Tests" */; + buildPhases = ( + EB4C313A167BA79700E31109 /* Sources */, + EB4C313B167BA79700E31109 /* Frameworks */, + EB4C313C167BA79700E31109 /* Resources */, + EB4C313D167BA79700E31109 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + A88930071684F0B300FC7C63 /* PBXTargetDependency */, + EB4C3162167BAEDE00E31109 /* PBXTargetDependency */, + ); + name = "Acceptance Tests"; + productName = "Acceptance Tests"; + productReference = EB4C313F167BA79700E31109 /* Acceptance Tests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + EB4C30D0167B9E3A00E31109 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = "SSK Development"; + }; + buildConfigurationList = EB4C30D3167B9E3A00E31109 /* Build configuration list for PBXProject "Calculator" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = EB4C30CE167B9E3A00E31109; + productRefGroup = EB4C30DA167B9E3A00E31109 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = A8892FF81684F0A400FC7C63 /* Products */; + ProjectRef = A8892FF71684F0A400FC7C63 /* KIF.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + EB4C30D8167B9E3A00E31109 /* Calculator */, + EB4C313E167BA79700E31109 /* Acceptance Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + A88930001684F0A400FC7C63 /* libKIF.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libKIF.a; + remoteRef = A8892FFF1684F0A400FC7C63 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + EB2A8A881781D68600C6299F /* Test Host.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "Test Host.app"; + remoteRef = EB2A8A871781D68600C6299F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + EB2A8A8A1781D68600C6299F /* KIF Tests.octest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "KIF Tests.octest"; + remoteRef = EB2A8A891781D68600C6299F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + EB4C30D7167B9E3A00E31109 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB4C30E8167B9E3A00E31109 /* InfoPlist.strings in Resources */, + EB4C30F0167B9E3A00E31109 /* Default.png in Resources */, + EB4C30F2167B9E3A00E31109 /* Default@2x.png in Resources */, + EB4C30F4167B9E3A00E31109 /* Default-568h@2x.png in Resources */, + EB4C30FA167B9E3A00E31109 /* BasicCalculatorViewController.xib in Resources */, + EB4C3155167BA89B00E31109 /* AboutViewController.xib in Resources */, + EB4C315C167BA99E00E31109 /* HomeViewController.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB4C313C167BA79700E31109 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB4C3148167BA79700E31109 /* InfoPlist.strings in Resources */, + EB4C3156167BA89B00E31109 /* AboutViewController.xib in Resources */, + EB4C315D167BA99E00E31109 /* HomeViewController.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + EB4C313D167BA79700E31109 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + EB4C30D5167B9E3A00E31109 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB4C30EA167B9E3A00E31109 /* main.m in Sources */, + EB4C30EE167B9E3A00E31109 /* AppDelegate.m in Sources */, + EB4C30F7167B9E3A00E31109 /* BasicCalculatorViewController.m in Sources */, + EB4C3153167BA89B00E31109 /* AboutViewController.m in Sources */, + EB4C315A167BA99E00E31109 /* HomeViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB4C313A167BA79700E31109 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB4C3160167BAE6100E31109 /* BasicCalculatorTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + A88930071684F0B300FC7C63 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = KIFTestCase; + targetProxy = A88930061684F0B300FC7C63 /* PBXContainerItemProxy */; + }; + EB4C3162167BAEDE00E31109 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EB4C30D8167B9E3A00E31109 /* Calculator */; + targetProxy = EB4C3161167BAEDE00E31109 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + EB4C30E6167B9E3A00E31109 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + EB4C30E7167B9E3A00E31109 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + EB4C30F8167B9E3A00E31109 /* BasicCalculatorViewController.xib */ = { + isa = PBXVariantGroup; + children = ( + EB4C30F9167B9E3A00E31109 /* en */, + ); + name = BasicCalculatorViewController.xib; + sourceTree = ""; + }; + EB4C3146167BA79700E31109 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + EB4C3147167BA79700E31109 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + EB4C3110167B9E3A00E31109 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + EB4C3111167B9E3A00E31109 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + EB4C3113167B9E3A00E31109 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Calculator/Calculator-Prefix.pch"; + INFOPLIST_FILE = "Calculator/Calculator-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + EB4C3114167B9E3A00E31109 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Calculator/Calculator-Prefix.pch"; + INFOPLIST_FILE = "Calculator/Calculator-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + EB4C314E167BA79700E31109 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Calculator.app/Calculator"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Acceptance Tests/Acceptance Tests-Prefix.pch"; + INFOPLIST_FILE = "Acceptance Tests/Acceptance Tests-Info.plist"; + OTHER_LDFLAGS = ( + "${inherit}", + "-all_load", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + EB4C314F167BA79700E31109 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Calculator.app/Calculator"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Acceptance Tests/Acceptance Tests-Prefix.pch"; + INFOPLIST_FILE = "Acceptance Tests/Acceptance Tests-Info.plist"; + OTHER_LDFLAGS = ( + "${inherit}", + "-all_load", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + EB4C30D3167B9E3A00E31109 /* Build configuration list for PBXProject "Calculator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB4C3110167B9E3A00E31109 /* Debug */, + EB4C3111167B9E3A00E31109 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB4C3112167B9E3A00E31109 /* Build configuration list for PBXNativeTarget "Calculator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB4C3113167B9E3A00E31109 /* Debug */, + EB4C3114167B9E3A00E31109 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB4C314D167BA79700E31109 /* Build configuration list for PBXNativeTarget "Acceptance Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB4C314E167BA79700E31109 /* Debug */, + EB4C314F167BA79700E31109 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = EB4C30D0167B9E3A00E31109 /* Project object */; +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator.xcodeproj/xcshareddata/xcschemes/Calculator.xcscheme b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator.xcodeproj/xcshareddata/xcschemes/Calculator.xcscheme new file mode 100755 index 000000000..5d4304913 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator.xcodeproj/xcshareddata/xcschemes/Calculator.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.h b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.h new file mode 100755 index 000000000..ee2016fe2 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.h @@ -0,0 +1,14 @@ +// +// AboutViewController.h +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +@interface AboutViewController : UIViewController + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.m new file mode 100755 index 000000000..71069c0ba --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.m @@ -0,0 +1,27 @@ +// +// AboutViewController.m +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "AboutViewController.h" + +@interface AboutViewController () + +@end + +@implementation AboutViewController + +- (id)init +{ + self = [super initWithNibName:@"AboutViewController" bundle:nil]; + if (self) { + self.title = @"About"; + } + return self; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.xib b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.xib new file mode 100755 index 000000000..0b120b8d1 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AboutViewController.xib @@ -0,0 +1,169 @@ + + + + 1536 + 11G63b + 2843 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1929 + + + IBProxyObject + IBUILabel + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 290 + {{20, 20}, {280, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Just a basic calculator + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 17 + + + Helvetica + 17 + 16 + + NO + + + {{0, 20}, {320, 548}} + + + + 3 + MQA + + 2 + + + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + + + 0 + + + + + + 1 + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + AboutViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 10 + + + 0 + IBCocoaTouchFramework + YES + 3 + 1929 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AppDelegate.h b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AppDelegate.h new file mode 100755 index 000000000..95e596664 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AppDelegate.h @@ -0,0 +1,18 @@ +// +// AppDelegate.h +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +@class ViewController; + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AppDelegate.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AppDelegate.m new file mode 100755 index 000000000..73d52261e --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/AppDelegate.m @@ -0,0 +1,73 @@ +// +// AppDelegate.m +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "AppDelegate.h" +#import "HomeViewController.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + // Override point for customization after application launch. + + UIViewController *homeController = [[HomeViewController alloc] init]; + UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:homeController]; + navController.navigationBar.translucent = NO; + self.window.rootViewController = navController; + [self.window makeKeyAndVisible]; + +#if DEBUG +#import + // TODO: Document the following or remove. The purpose is to enable testing from the command line pre-Xcode5. + NSLog(@"Did finish launching, environment is %@", [[NSProcessInfo processInfo] environment]); + NSString *bundlePath = [[NSProcessInfo processInfo] environment][@"XCInjectBundle"]; + if (bundlePath) { + BOOL isDirectory = NO; + if ([[NSFileManager defaultManager] fileExistsAtPath:bundlePath isDirectory:&isDirectory] && isDirectory) { + NSString *basename = [[bundlePath lastPathComponent] stringByDeletingPathExtension]; + bundlePath = [bundlePath stringByAppendingPathComponent:basename]; + } + NSLog(@"Loading %@", bundlePath); + void *loadedBundle = dlopen([bundlePath fileSystemRepresentation], RTLD_NOW); + assert(loadedBundle); + } +#endif + + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/BasicCalculatorViewController.h b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/BasicCalculatorViewController.h new file mode 100755 index 000000000..557db0b0f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/BasicCalculatorViewController.h @@ -0,0 +1,16 @@ +// +// ViewController.h +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +@interface BasicCalculatorViewController : UIViewController + +- (IBAction)recalculate; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/BasicCalculatorViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/BasicCalculatorViewController.m new file mode 100755 index 000000000..f2e99b594 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/BasicCalculatorViewController.m @@ -0,0 +1,77 @@ +// +// ViewController.m +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "BasicCalculatorViewController.h" + +typedef NS_ENUM(NSInteger, CalculatorOperation) { + Add, + Subtract, + Multiply, + Divide +}; + +@interface BasicCalculatorViewController () + +@property (weak, nonatomic) IBOutlet UITextField *input1; +@property (weak, nonatomic) IBOutlet UITextField *input2; +@property (weak, nonatomic) IBOutlet UISegmentedControl *operationInput; +@property (weak, nonatomic) IBOutlet UILabel *output; + +@end + +@implementation BasicCalculatorViewController + +- (id)init +{ + self = [super initWithNibName:@"BasicCalculatorViewController" bundle:nil]; + if (self) { + self.title = @"Basic Calculator"; + } + return self; +} + +- (void)setAccessibilityLabel:(NSString *)label forSegment:(NSInteger)segment +{ + UIView *view = (self.operationInput.subviews)[self.operationInput.subviews.count - segment - 1]; + view.accessibilityLabel = label; +} + +- (void)viewDidLoad +{ + [self setAccessibilityLabel:@"Add" forSegment:Add]; + [self setAccessibilityLabel:@"Subtract" forSegment:Subtract]; + [self setAccessibilityLabel:@"Multiply" forSegment:Multiply]; + [self setAccessibilityLabel:@"Divide" forSegment:Divide]; +} + +- (IBAction)recalculate +{ + double value1 = self.input1.text.doubleValue; + double value2 = self.input2.text.doubleValue; + double output; + + switch ((CalculatorOperation)self.operationInput.selectedSegmentIndex) { + case Add: + output = value1 + value2; + break; + case Subtract: + output = value1 - value2; + break; + case Multiply: + output = value1 * value2; + break; + case Divide: + output = value1 / value2; + break; + } + + self.output.text = [NSString stringWithFormat:@"%.8f", output]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Calculator-Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Calculator-Info.plist new file mode 100755 index 000000000..01092a502 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Calculator-Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.square.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Calculator-Prefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Calculator-Prefix.pch new file mode 100755 index 000000000..c1d40d816 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Calculator-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'Calculator' target in the 'Calculator' project +// + +#import + +#ifndef __IPHONE_4_0 +#warning "This project uses features only available in iOS SDK 4.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Default-568h@2x.png b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Default-568h@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Default.png b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/Default.png new file mode 100755 index 0000000000000000000000000000000000000000..4c8ca6f693f96d511e9113c0eb59eec552354e42 GIT binary patch literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.h b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.h new file mode 100755 index 000000000..89c2f0022 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.h @@ -0,0 +1,14 @@ +// +// HomeViewController.h +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +@interface HomeViewController : UIViewController + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.m new file mode 100755 index 000000000..705b2b817 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.m @@ -0,0 +1,39 @@ +// +// HomeViewController.m +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "HomeViewController.h" +#import "AboutViewController.h" +#import "BasicCalculatorViewController.h" + +@interface HomeViewController () + +@end + +@implementation HomeViewController + +- (id)init +{ + self = [super initWithNibName:@"HomeViewController" bundle:nil]; + if (self) { + self.title = @"Home"; + } + return self; +} + +- (IBAction)showBasicCalculator +{ + [self.navigationController pushViewController:[[BasicCalculatorViewController alloc] init] animated:YES]; +} + +- (IBAction)showAbout +{ + [self.navigationController pushViewController:[[AboutViewController alloc] init] animated:YES]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.xib b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.xib new file mode 100755 index 000000000..4158afc3a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/HomeViewController.xib @@ -0,0 +1,263 @@ + + + + 1536 + 11G63b + 2843 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1929 + + + IBProxyObject + IBUIButton + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 290 + {{20, 20}, {280, 44}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Basic Calculator + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 290 + {{20, 71}, {280, 44}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + 1 + About + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + 290 + {{20, 122}, {280, 44}} + + + + _NS:9 + NO + IBCocoaTouchFramework + NO + 0 + 0 + 1 + More coming soon! + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + {{0, 20}, {320, 548}} + + + + + 3 + MQA + + 2 + + + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + showBasicCalculator + + + 7 + + 12 + + + + showAbout + + + 7 + + 13 + + + + + + 0 + + + + + + 1 + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + 7 + + + + + 11 + + + + + + + HomeViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 13 + + + + + HomeViewController + UIViewController + + IBProjectSource + ./Classes/HomeViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 1929 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/en.lproj/BasicCalculatorViewController.xib b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/en.lproj/BasicCalculatorViewController.xib new file mode 100755 index 000000000..2589cd66b --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/en.lproj/BasicCalculatorViewController.xib @@ -0,0 +1,433 @@ + + + + 1536 + 11G63b + 2843 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1929 + + + IBProxyObject + IBUILabel + IBUISegmentedControl + IBUITextField + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {{20, 59}, {106, 30}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 2 + 4 + 0 + + + + – + × + ÷ + + + + + + + + + + + + + + + {0, 0} + {0, 0} + {0, 0} + {0, 0} + + + + + + + + + + + 290 + {{134, 20}, {166, 30}} + + + + _NS:9 + NO + YES + + First Number + + IBCocoaTouchFramework + 0 + 0 + 3 + + 3 + MAA + + 2 + + + 2 + YES + 17 + + 1 + 8 + 9 + IBCocoaTouchFramework + + + 1 + 14 + + + Helvetica + 14 + 16 + + + + + 290 + {{134, 58}, {166, 30}} + + + + _NS:9 + NO + YES + + Second Number + + IBCocoaTouchFramework + 0 + 0 + 3 + + 3 + MAA + + + 2 + YES + 17 + + 1 + 8 + 9 + IBCocoaTouchFramework + + + + + + + 290 + {{20, 105}, {273, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + 0 + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 2 + + + NO + + + + 290 + {{134, 96}, {166, 1}} + + + + _NS:9 + + 3 + MAA + + IBCocoaTouchFramework + + + {{0, 20}, {320, 548}} + + + + + 3 + MQA + + NO + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 7 + + + + input1 + + + + 28 + + + + input2 + + + + 29 + + + + operationInput + + + + 30 + + + + output + + + + 31 + + + + recalculate + + + 13 + + 35 + + + + recalculate + + + 18 + + 32 + + + + recalculate + + + 18 + + 33 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 6 + + + + + + + + + + + + 8 + + + + + + 13 + + + + + + 17 + + + + + 26 + + + + + 27 + + + + + + + BasicCalculatorViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 35 + + + + + BasicCalculatorViewController + UIViewController + + recalculate + id + + + recalculate + + recalculate + id + + + + UITextField + UITextField + UISegmentedControl + UILabel + + + + input1 + UITextField + + + input2 + UITextField + + + operationInput + UISegmentedControl + + + output + UILabel + + + + IBProjectSource + ./Classes/BasicCalculatorViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 1929 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/en.lproj/InfoPlist.strings b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/en.lproj/InfoPlist.strings new file mode 100755 index 000000000..477b28ff8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/main.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/main.m new file mode 100755 index 000000000..7c6302c0f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Calculator/Calculator/main.m @@ -0,0 +1,20 @@ +// +// main.m +// Calculator +// +// Created by Brian Nickel on 12/14/12. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift.xcodeproj/project.pbxproj new file mode 100755 index 000000000..e08b71a66 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift.xcodeproj/project.pbxproj @@ -0,0 +1,556 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + A88CD9831A019AFF0064F706 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A88CD9821A019AFF0064F706 /* AppDelegate.swift */; }; + A88CD9851A019AFF0064F706 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A88CD9841A019AFF0064F706 /* MasterViewController.swift */; }; + A88CD98A1A019AFF0064F706 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A88CD9881A019AFF0064F706 /* Main.storyboard */; }; + A88CD98C1A019AFF0064F706 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A88CD98B1A019AFF0064F706 /* Images.xcassets */; }; + A88CD98F1A019AFF0064F706 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = A88CD98D1A019AFF0064F706 /* LaunchScreen.xib */; }; + A88CD99B1A019AFF0064F706 /* Testable_SwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A88CD99A1A019AFF0064F706 /* Testable_SwiftTests.swift */; }; + A88CD9B91A019E430064F706 /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A88CD9AE1A019D520064F706 /* libKIF.a */; }; + A88CD9BC1A019F0B0064F706 /* SimpleObjCTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A88CD9BB1A019F0B0064F706 /* SimpleObjCTest.m */; }; + A88CD9BE1A019F300064F706 /* SimpleSwiftTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A88CD9BD1A019F300064F706 /* SimpleSwiftTest.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + A88CD9951A019AFF0064F706 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A88CD9751A019AFF0064F706 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A88CD97C1A019AFF0064F706; + remoteInfo = "Testable Swift"; + }; + A88CD9AD1A019D520064F706 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A88CD9A41A019D510064F706 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EABD46AA1857A0C700A5F081; + remoteInfo = KIF; + }; + A88CD9AF1A019D520064F706 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A88CD9A41A019D510064F706 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EB72047C1680DDAD00278DA2; + remoteInfo = "KIF-OCUnit"; + }; + A88CD9B11A019D520064F706 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A88CD9A41A019D510064F706 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EB60ECC1177F8C83005A041A; + remoteInfo = "Test Host"; + }; + A88CD9B31A019D520064F706 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A88CD9A41A019D510064F706 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EABD46CD1857A0F300A5F081; + remoteInfo = "KIF Tests"; + }; + A88CD9B51A019D520064F706 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A88CD9A41A019D510064F706 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EB60ECEB177F8DB3005A041A; + remoteInfo = "KIF Tests-OCUnit"; + }; + A88CD9B71A019E2B0064F706 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A88CD9A41A019D510064F706 /* KIF.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EABD46791857A0C700A5F081; + remoteInfo = KIF; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + A88CD97D1A019AFF0064F706 /* Testable Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Testable Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + A88CD9811A019AFF0064F706 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A88CD9821A019AFF0064F706 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + A88CD9841A019AFF0064F706 /* MasterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = ""; }; + A88CD9891A019AFF0064F706 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + A88CD98B1A019AFF0064F706 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + A88CD98E1A019AFF0064F706 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + A88CD9941A019AFF0064F706 /* Testable SwiftTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Testable SwiftTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + A88CD9991A019AFF0064F706 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A88CD99A1A019AFF0064F706 /* Testable_SwiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Testable_SwiftTests.swift; sourceTree = ""; }; + A88CD9A41A019D510064F706 /* KIF.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = KIF.xcodeproj; path = ../../../../KIF.xcodeproj; sourceTree = ""; }; + A88CD9BA1A019F0B0064F706 /* Testable SwiftTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Testable SwiftTests-Bridging-Header.h"; sourceTree = ""; }; + A88CD9BB1A019F0B0064F706 /* SimpleObjCTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleObjCTest.m; sourceTree = ""; }; + A88CD9BD1A019F300064F706 /* SimpleSwiftTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleSwiftTest.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + A88CD97A1A019AFF0064F706 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A88CD9911A019AFF0064F706 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A88CD9B91A019E430064F706 /* libKIF.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A88CD9741A019AFF0064F706 = { + isa = PBXGroup; + children = ( + A88CD97F1A019AFF0064F706 /* Testable Swift */, + A88CD9971A019AFF0064F706 /* Testable SwiftTests */, + A88CD97E1A019AFF0064F706 /* Products */, + ); + sourceTree = ""; + }; + A88CD97E1A019AFF0064F706 /* Products */ = { + isa = PBXGroup; + children = ( + A88CD97D1A019AFF0064F706 /* Testable Swift.app */, + A88CD9941A019AFF0064F706 /* Testable SwiftTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + A88CD97F1A019AFF0064F706 /* Testable Swift */ = { + isa = PBXGroup; + children = ( + A88CD9821A019AFF0064F706 /* AppDelegate.swift */, + A88CD9841A019AFF0064F706 /* MasterViewController.swift */, + A88CD9881A019AFF0064F706 /* Main.storyboard */, + A88CD98B1A019AFF0064F706 /* Images.xcassets */, + A88CD98D1A019AFF0064F706 /* LaunchScreen.xib */, + A88CD9801A019AFF0064F706 /* Supporting Files */, + ); + path = "Testable Swift"; + sourceTree = ""; + }; + A88CD9801A019AFF0064F706 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + A88CD9811A019AFF0064F706 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + A88CD9971A019AFF0064F706 /* Testable SwiftTests */ = { + isa = PBXGroup; + children = ( + A88CD9A41A019D510064F706 /* KIF.xcodeproj */, + A88CD99A1A019AFF0064F706 /* Testable_SwiftTests.swift */, + A88CD9981A019AFF0064F706 /* Supporting Files */, + A88CD9BB1A019F0B0064F706 /* SimpleObjCTest.m */, + A88CD9BD1A019F300064F706 /* SimpleSwiftTest.swift */, + A88CD9BA1A019F0B0064F706 /* Testable SwiftTests-Bridging-Header.h */, + ); + path = "Testable SwiftTests"; + sourceTree = ""; + }; + A88CD9981A019AFF0064F706 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + A88CD9991A019AFF0064F706 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + A88CD9A51A019D510064F706 /* Products */ = { + isa = PBXGroup; + children = ( + A88CD9AE1A019D520064F706 /* libKIF.a */, + A88CD9B01A019D520064F706 /* libKIF-OCUnit.a */, + A88CD9B21A019D520064F706 /* Test Host.app */, + A88CD9B41A019D520064F706 /* KIF Tests - XCTest.xctest */, + A88CD9B61A019D520064F706 /* KIF Tests-OCUnit.octest */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + A88CD97C1A019AFF0064F706 /* Testable Swift */ = { + isa = PBXNativeTarget; + buildConfigurationList = A88CD99E1A019AFF0064F706 /* Build configuration list for PBXNativeTarget "Testable Swift" */; + buildPhases = ( + A88CD9791A019AFF0064F706 /* Sources */, + A88CD97A1A019AFF0064F706 /* Frameworks */, + A88CD97B1A019AFF0064F706 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Testable Swift"; + productName = "Testable Swift"; + productReference = A88CD97D1A019AFF0064F706 /* Testable Swift.app */; + productType = "com.apple.product-type.application"; + }; + A88CD9931A019AFF0064F706 /* Testable SwiftTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = A88CD9A11A019AFF0064F706 /* Build configuration list for PBXNativeTarget "Testable SwiftTests" */; + buildPhases = ( + A88CD9901A019AFF0064F706 /* Sources */, + A88CD9911A019AFF0064F706 /* Frameworks */, + A88CD9921A019AFF0064F706 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + A88CD9B81A019E2B0064F706 /* PBXTargetDependency */, + A88CD9961A019AFF0064F706 /* PBXTargetDependency */, + ); + name = "Testable SwiftTests"; + productName = "Testable SwiftTests"; + productReference = A88CD9941A019AFF0064F706 /* Testable SwiftTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + A88CD9751A019AFF0064F706 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + TargetAttributes = { + A88CD97C1A019AFF0064F706 = { + CreatedOnToolsVersion = 6.1; + }; + A88CD9931A019AFF0064F706 = { + CreatedOnToolsVersion = 6.1; + TestTargetID = A88CD97C1A019AFF0064F706; + }; + }; + }; + buildConfigurationList = A88CD9781A019AFF0064F706 /* Build configuration list for PBXProject "Testable Swift" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = A88CD9741A019AFF0064F706; + productRefGroup = A88CD97E1A019AFF0064F706 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = A88CD9A51A019D510064F706 /* Products */; + ProjectRef = A88CD9A41A019D510064F706 /* KIF.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + A88CD97C1A019AFF0064F706 /* Testable Swift */, + A88CD9931A019AFF0064F706 /* Testable SwiftTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + A88CD9AE1A019D520064F706 /* libKIF.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libKIF.a; + remoteRef = A88CD9AD1A019D520064F706 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + A88CD9B01A019D520064F706 /* libKIF-OCUnit.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libKIF-OCUnit.a"; + remoteRef = A88CD9AF1A019D520064F706 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + A88CD9B21A019D520064F706 /* Test Host.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = "Test Host.app"; + remoteRef = A88CD9B11A019D520064F706 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + A88CD9B41A019D520064F706 /* KIF Tests - XCTest.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "KIF Tests - XCTest.xctest"; + remoteRef = A88CD9B31A019D520064F706 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + A88CD9B61A019D520064F706 /* KIF Tests-OCUnit.octest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "KIF Tests-OCUnit.octest"; + remoteRef = A88CD9B51A019D520064F706 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + A88CD97B1A019AFF0064F706 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A88CD98A1A019AFF0064F706 /* Main.storyboard in Resources */, + A88CD98F1A019AFF0064F706 /* LaunchScreen.xib in Resources */, + A88CD98C1A019AFF0064F706 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A88CD9921A019AFF0064F706 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + A88CD9791A019AFF0064F706 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A88CD9851A019AFF0064F706 /* MasterViewController.swift in Sources */, + A88CD9831A019AFF0064F706 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A88CD9901A019AFF0064F706 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A88CD99B1A019AFF0064F706 /* Testable_SwiftTests.swift in Sources */, + A88CD9BE1A019F300064F706 /* SimpleSwiftTest.swift in Sources */, + A88CD9BC1A019F0B0064F706 /* SimpleObjCTest.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + A88CD9961A019AFF0064F706 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A88CD97C1A019AFF0064F706 /* Testable Swift */; + targetProxy = A88CD9951A019AFF0064F706 /* PBXContainerItemProxy */; + }; + A88CD9B81A019E2B0064F706 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = KIF; + targetProxy = A88CD9B71A019E2B0064F706 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + A88CD9881A019AFF0064F706 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + A88CD9891A019AFF0064F706 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + A88CD98D1A019AFF0064F706 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + A88CD98E1A019AFF0064F706 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + A88CD99C1A019AFF0064F706 /* Debug */ = { + 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; + 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)", + ); + 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.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + A88CD99D1A019AFF0064F706 /* Release */ = { + 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 = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + A88CD99F1A019AFF0064F706 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "Testable Swift/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + A88CD9A01A019AFF0064F706 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "Testable Swift/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + A88CD9A21A019AFF0064F706 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ENABLE_MODULES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = "Testable SwiftTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-ObjC", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Testable SwiftTests/Testable SwiftTests-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Testable Swift.app/Testable Swift"; + }; + name = Debug; + }; + A88CD9A31A019AFF0064F706 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ENABLE_MODULES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = "Testable SwiftTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-ObjC", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Testable SwiftTests/Testable SwiftTests-Bridging-Header.h"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Testable Swift.app/Testable Swift"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A88CD9781A019AFF0064F706 /* Build configuration list for PBXProject "Testable Swift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A88CD99C1A019AFF0064F706 /* Debug */, + A88CD99D1A019AFF0064F706 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A88CD99E1A019AFF0064F706 /* Build configuration list for PBXNativeTarget "Testable Swift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A88CD99F1A019AFF0064F706 /* Debug */, + A88CD9A01A019AFF0064F706 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A88CD9A11A019AFF0064F706 /* Build configuration list for PBXNativeTarget "Testable SwiftTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A88CD9A21A019AFF0064F706 /* Debug */, + A88CD9A31A019AFF0064F706 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = A88CD9751A019AFF0064F706 /* Project object */; +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift.xcodeproj/xcshareddata/xcschemes/Testable Swift.xcscheme b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift.xcodeproj/xcshareddata/xcschemes/Testable Swift.xcscheme new file mode 100755 index 000000000..bee04e6e2 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift.xcodeproj/xcshareddata/xcschemes/Testable Swift.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/AppDelegate.swift b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/AppDelegate.swift new file mode 100755 index 000000000..23992badf --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/AppDelegate.swift @@ -0,0 +1,15 @@ +// +// AppDelegate.swift +// Testable Swift +// +// Created by Jim Puls on 10/29/14. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + var window: UIWindow? +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Base.lproj/LaunchScreen.xib b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Base.lproj/LaunchScreen.xib new file mode 100755 index 000000000..5271f5e02 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Base.lproj/LaunchScreen.xib @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Base.lproj/Main.storyboard b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Base.lproj/Main.storyboard new file mode 100755 index 000000000..b0dd79bcd --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Base.lproj/Main.storyboard @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 000000000..118c98f74 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Info.plist new file mode 100755 index 000000000..3eb326eef --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/Info.plist @@ -0,0 +1,50 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.squareup.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarTintParameters + + UINavigationBar + + Style + UIBarStyleDefault + Translucent + + + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/MasterViewController.swift b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/MasterViewController.swift new file mode 100755 index 000000000..888a97706 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable Swift/MasterViewController.swift @@ -0,0 +1,19 @@ +// +// MasterViewController.swift +// Testable Swift +// +// Created by Jim Puls on 10/29/14. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +import UIKit + +class MasterViewController: UITableViewController { + override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { + let cell = tableView.cellForRowAtIndexPath(indexPath) + if let text = cell?.textLabel?.text? { + navigationItem.title = "Selected: " + text + } + } +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Info.plist new file mode 100755 index 000000000..c08e01bc9 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.squareup.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/SimpleObjCTest.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/SimpleObjCTest.m new file mode 100755 index 000000000..560e3f6d9 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/SimpleObjCTest.m @@ -0,0 +1,24 @@ +// +// SimpleObjCTest.m +// Testable Swift +// +// Created by Jim Puls on 10/29/14. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import +#import + + +@interface SimpleObjCTest : KIFTestCase +@end + +@implementation SimpleObjCTest + +- (void)testRed { + [tester tapViewWithAccessibilityLabel:@"Red"]; + [tester waitForViewWithAccessibilityLabel:@"Selected: Red"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/SimpleSwiftTest.swift b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/SimpleSwiftTest.swift new file mode 100755 index 000000000..f0b1402ba --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/SimpleSwiftTest.swift @@ -0,0 +1,29 @@ +// +// SimpleSwiftTest.swift +// Testable Swift +// +// Created by Jim Puls on 10/29/14. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +import UIKit +import XCTest + + +extension XCTestCase { + func tester(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFUITestActor { + return KIFUITestActor(inFile: file, atLine: line, delegate: self) + } + + func system(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFSystemTestActor { + return KIFSystemTestActor(inFile: file, atLine: line, delegate: self) + } +} + +class SimpleSwiftTest: KIFTestCase { + func testGreen() { + tester().tapViewWithAccessibilityLabel("Green") + tester().waitForViewWithAccessibilityLabel("Selected: Green") + } +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Testable SwiftTests-Bridging-Header.h b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Testable SwiftTests-Bridging-Header.h new file mode 100755 index 000000000..12c223598 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Testable SwiftTests-Bridging-Header.h @@ -0,0 +1,5 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#import diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Testable_SwiftTests.swift b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Testable_SwiftTests.swift new file mode 100755 index 000000000..5ac78e4f8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable Swift/Testable SwiftTests/Testable_SwiftTests.swift @@ -0,0 +1,37 @@ +// +// Testable_SwiftTests.swift +// Testable SwiftTests +// +// Created by Jim Puls on 10/29/14. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +import UIKit +import XCTest + +class Testable_SwiftTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + XCTAssert(true, "Pass") + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measureBlock() { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/Acceptance Tests-Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/Acceptance Tests-Info.plist new file mode 100755 index 000000000..30ddc97b8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/Acceptance Tests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.square.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/Acceptance Tests-Prefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/Acceptance Tests-Prefix.pch new file mode 100755 index 000000000..4f33e4cb5 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/Acceptance Tests-Prefix.pch @@ -0,0 +1,8 @@ +// +// Prefix header for all source files of the 'Acceptance Tests' target in the 'Acceptance Tests' project +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/IntegrationTestCases.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/IntegrationTestCases.m new file mode 100755 index 000000000..1f869dee2 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/IntegrationTestCases.m @@ -0,0 +1,39 @@ +// +// IntegrationTestCases.m +// Integration Tests with KIFTestCase +// +// Created by Brian Nickel on 12/18/12. +// +// + +#import +#import "KIFUITestActor+EXAddition.h" + +@interface IntegrationTestCases : KIFTestCase + +@end + +@implementation IntegrationTestCases + +- (void)testThatUserCanSuccessfullyLogIn +{ + [tester reset]; + [tester goToLoginPage]; + [tester enterText:@"user@example.com" intoViewWithAccessibilityLabel:@"Login User Name"]; + [tester enterText:@"thisismypassword" intoViewWithAccessibilityLabel:@"Login Password"]; + [tester tapViewWithAccessibilityLabel:@"Log In"]; + + // Verify that the login succeeded + [tester waitForTappableViewWithAccessibilityLabel:@"Welcome"]; +} + +- (void)testSelectingDifferentColors +{ + [tester tapViewWithAccessibilityLabel:@"Purple"]; + [tester tapViewWithAccessibilityLabel:@"Blue"]; + [tester tapViewWithAccessibilityLabel:@"Red"]; + [tester waitForTimeInterval:5.0]; + [tester waitForViewWithAccessibilityLabel:@"Selected: Red"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/KIFUITestActor+EXAddition.h b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/KIFUITestActor+EXAddition.h new file mode 100755 index 000000000..421fe5a8e --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/KIFUITestActor+EXAddition.h @@ -0,0 +1,16 @@ +// +// KIFTester+EXAddition.h +// Testable +// +// Created by Brian Nickel on 12/18/12. +// +// + +#import + +@interface KIFUITestActor (EXAddition) + +- (void)reset; +- (void)goToLoginPage; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/KIFUITestActor+EXAddition.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/KIFUITestActor+EXAddition.m new file mode 100755 index 000000000..94af09502 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/KIFUITestActor+EXAddition.m @@ -0,0 +1,37 @@ +// +// KIFTester+EXAddition.m +// Testable +// +// Created by Brian Nickel on 12/18/12. +// +// + +#import "KIFUITestActor+EXAddition.h" + +@implementation KIFUITestActor (EXAddition) + +- (void)reset +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + BOOL successfulReset = YES; + + // Do the actual reset for your app. Set successfulReset = NO if it fails. + + KIFTestCondition(successfulReset, error, @"Failed to reset some part of the application."); + + return KIFTestStepResultSuccess; + }]; +} + +#pragma mark - Step Collections + +- (void)goToLoginPage +{ + // Dismiss the welcome message + [self tapViewWithAccessibilityLabel:@"That's awesome!"]; + + // Tap the "I already have an account" button + [self tapViewWithAccessibilityLabel:@"I already have an account."]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/en.lproj/InfoPlist.strings b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/en.lproj/InfoPlist.strings new file mode 100755 index 000000000..477b28ff8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Acceptance Tests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Default-568h@2x.png b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Default-568h@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcodeproj/project.pbxproj new file mode 100755 index 000000000..19a4383c0 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcodeproj/project.pbxproj @@ -0,0 +1,491 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 4440B32C17F5692A00253D51 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4440B32B17F5692A00253D51 /* Default-568h@2x.png */; }; + AAB073AD139861C0008AF393 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB073AC139861C0008AF393 /* UIKit.framework */; }; + AAB073AF139861C0008AF393 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB073AE139861C0008AF393 /* Foundation.framework */; }; + AAB073B1139861C0008AF393 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB073B0139861C0008AF393 /* CoreGraphics.framework */; }; + AAB073B7139861C0008AF393 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = AAB073B5139861C0008AF393 /* InfoPlist.strings */; }; + AAB073BA139861C0008AF393 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB073B9139861C0008AF393 /* main.m */; }; + AAB073BD139861C0008AF393 /* TestableAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB073BC139861C0008AF393 /* TestableAppDelegate.m */; }; + AAB073C0139861C0008AF393 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = AAB073BE139861C0008AF393 /* MainWindow.xib */; }; + AAB073C3139861C0008AF393 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB073C2139861C0008AF393 /* RootViewController.m */; }; + AAB073C6139861C0008AF393 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AAB073C4139861C0008AF393 /* RootViewController.xib */; }; + EB47EFB51781DF6D006BBFAC /* IntegrationTestCases.m in Sources */ = {isa = PBXBuildFile; fileRef = EB47EFB21781DF6D006BBFAC /* IntegrationTestCases.m */; }; + EB47EFB61781DF6D006BBFAC /* KIFUITestActor+EXAddition.m in Sources */ = {isa = PBXBuildFile; fileRef = EB47EFB41781DF6D006BBFAC /* KIFUITestActor+EXAddition.m */; }; + EB9DB7331781DBD40087B6FD /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB72049D1680E2EE00278DA2 /* SenTestingKit.framework */; }; + EB9DB7341781DBD40087B6FD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB073AC139861C0008AF393 /* UIKit.framework */; }; + EB9DB7351781DBD40087B6FD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB073AE139861C0008AF393 /* Foundation.framework */; }; + EB9DB73B1781DBD40087B6FD /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EB9DB7391781DBD40087B6FD /* InfoPlist.strings */; }; + EB9DB7441781DDBA0087B6FD /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EB9DB7431781DDBA0087B6FD /* libKIF.a */; }; + EB9DB7451781DDC70087B6FD /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB073B0139861C0008AF393 /* CoreGraphics.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + EB9DB7461781DE100087B6FD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AAB0739F139861C0008AF393 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AAB073A7139861C0008AF393; + remoteInfo = Testable; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 4440B32B17F5692A00253D51 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + AAB073A8139861C0008AF393 /* Testable.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Testable.app; sourceTree = BUILT_PRODUCTS_DIR; }; + AAB073AC139861C0008AF393 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + AAB073AE139861C0008AF393 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + AAB073B0139861C0008AF393 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + AAB073B4139861C0008AF393 /* Testable-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Testable-Info.plist"; sourceTree = ""; }; + AAB073B6139861C0008AF393 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + AAB073B8139861C0008AF393 /* Testable-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Testable-Prefix.pch"; sourceTree = ""; }; + AAB073B9139861C0008AF393 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + AAB073BB139861C0008AF393 /* TestableAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestableAppDelegate.h; sourceTree = ""; }; + AAB073BC139861C0008AF393 /* TestableAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestableAppDelegate.m; sourceTree = ""; }; + AAB073BF139861C0008AF393 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; + AAB073C1139861C0008AF393 /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; + AAB073C2139861C0008AF393 /* RootViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; + AAB073C5139861C0008AF393 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/RootViewController.xib; sourceTree = ""; }; + EB47EFB21781DF6D006BBFAC /* IntegrationTestCases.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IntegrationTestCases.m; sourceTree = ""; }; + EB47EFB31781DF6D006BBFAC /* KIFUITestActor+EXAddition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KIFUITestActor+EXAddition.h"; sourceTree = ""; }; + EB47EFB41781DF6D006BBFAC /* KIFUITestActor+EXAddition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KIFUITestActor+EXAddition.m"; sourceTree = ""; }; + EB72049D1680E2EE00278DA2 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + EB9DB7321781DBD40087B6FD /* Acceptance Tests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Acceptance Tests.octest"; sourceTree = BUILT_PRODUCTS_DIR; }; + EB9DB7381781DBD40087B6FD /* Acceptance Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Acceptance Tests-Info.plist"; sourceTree = ""; }; + EB9DB73A1781DBD40087B6FD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + EB9DB73F1781DBD40087B6FD /* Acceptance Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Acceptance Tests-Prefix.pch"; sourceTree = ""; }; + EB9DB7431781DDBA0087B6FD /* libKIF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libKIF.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + AAB073A5139861C0008AF393 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AAB073AD139861C0008AF393 /* UIKit.framework in Frameworks */, + AAB073AF139861C0008AF393 /* Foundation.framework in Frameworks */, + AAB073B1139861C0008AF393 /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB9DB72E1781DBD40087B6FD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EB9DB7441781DDBA0087B6FD /* libKIF.a in Frameworks */, + EB9DB7451781DDC70087B6FD /* CoreGraphics.framework in Frameworks */, + EB9DB7331781DBD40087B6FD /* SenTestingKit.framework in Frameworks */, + EB9DB7341781DBD40087B6FD /* UIKit.framework in Frameworks */, + EB9DB7351781DBD40087B6FD /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + AAB0739D139861C0008AF393 = { + isa = PBXGroup; + children = ( + 4440B32B17F5692A00253D51 /* Default-568h@2x.png */, + AAB073B2139861C0008AF393 /* Testable */, + EB9DB7361781DBD40087B6FD /* Acceptance Tests */, + AAB073AB139861C0008AF393 /* Frameworks */, + AAB073A9139861C0008AF393 /* Products */, + ); + sourceTree = ""; + }; + AAB073A9139861C0008AF393 /* Products */ = { + isa = PBXGroup; + children = ( + AAB073A8139861C0008AF393 /* Testable.app */, + EB9DB7321781DBD40087B6FD /* Acceptance Tests.octest */, + ); + name = Products; + sourceTree = ""; + }; + AAB073AB139861C0008AF393 /* Frameworks */ = { + isa = PBXGroup; + children = ( + EB9DB7431781DDBA0087B6FD /* libKIF.a */, + AAB073AC139861C0008AF393 /* UIKit.framework */, + AAB073AE139861C0008AF393 /* Foundation.framework */, + AAB073B0139861C0008AF393 /* CoreGraphics.framework */, + EB72049D1680E2EE00278DA2 /* SenTestingKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + AAB073B2139861C0008AF393 /* Testable */ = { + isa = PBXGroup; + children = ( + AAB073BB139861C0008AF393 /* TestableAppDelegate.h */, + AAB073BC139861C0008AF393 /* TestableAppDelegate.m */, + AAB073BE139861C0008AF393 /* MainWindow.xib */, + AAB073C1139861C0008AF393 /* RootViewController.h */, + AAB073C2139861C0008AF393 /* RootViewController.m */, + AAB073C4139861C0008AF393 /* RootViewController.xib */, + AAB073B3139861C0008AF393 /* Supporting Files */, + ); + path = Testable; + sourceTree = ""; + }; + AAB073B3139861C0008AF393 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + AAB073B4139861C0008AF393 /* Testable-Info.plist */, + AAB073B5139861C0008AF393 /* InfoPlist.strings */, + AAB073B8139861C0008AF393 /* Testable-Prefix.pch */, + AAB073B9139861C0008AF393 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + EB9DB7361781DBD40087B6FD /* Acceptance Tests */ = { + isa = PBXGroup; + children = ( + EB47EFB21781DF6D006BBFAC /* IntegrationTestCases.m */, + EB47EFB31781DF6D006BBFAC /* KIFUITestActor+EXAddition.h */, + EB47EFB41781DF6D006BBFAC /* KIFUITestActor+EXAddition.m */, + EB9DB7371781DBD40087B6FD /* Supporting Files */, + ); + path = "Acceptance Tests"; + sourceTree = ""; + }; + EB9DB7371781DBD40087B6FD /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EB9DB7381781DBD40087B6FD /* Acceptance Tests-Info.plist */, + EB9DB7391781DBD40087B6FD /* InfoPlist.strings */, + EB9DB73F1781DBD40087B6FD /* Acceptance Tests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + AAB073A7139861C0008AF393 /* Testable */ = { + isa = PBXNativeTarget; + buildConfigurationList = AAB073C9139861C0008AF393 /* Build configuration list for PBXNativeTarget "Testable" */; + buildPhases = ( + AAB073A4139861C0008AF393 /* Sources */, + AAB073A5139861C0008AF393 /* Frameworks */, + AAB073A6139861C0008AF393 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Testable; + productName = Testable; + productReference = AAB073A8139861C0008AF393 /* Testable.app */; + productType = "com.apple.product-type.application"; + }; + EB9DB7311781DBD40087B6FD /* Acceptance Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB9DB7421781DBD40087B6FD /* Build configuration list for PBXNativeTarget "Acceptance Tests" */; + buildPhases = ( + EB9DB72D1781DBD40087B6FD /* Sources */, + EB9DB72E1781DBD40087B6FD /* Frameworks */, + EB9DB72F1781DBD40087B6FD /* Resources */, + EB9DB7301781DBD40087B6FD /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + EB9DB7471781DE100087B6FD /* PBXTargetDependency */, + ); + name = "Acceptance Tests"; + productName = "Acceptance Tests"; + productReference = EB9DB7321781DBD40087B6FD /* Acceptance Tests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + AAB0739F139861C0008AF393 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0500; + }; + buildConfigurationList = AAB073A2139861C0008AF393 /* Build configuration list for PBXProject "Testable" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = AAB0739D139861C0008AF393; + productRefGroup = AAB073A9139861C0008AF393 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + AAB073A7139861C0008AF393 /* Testable */, + EB9DB7311781DBD40087B6FD /* Acceptance Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + AAB073A6139861C0008AF393 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AAB073B7139861C0008AF393 /* InfoPlist.strings in Resources */, + 4440B32C17F5692A00253D51 /* Default-568h@2x.png in Resources */, + AAB073C0139861C0008AF393 /* MainWindow.xib in Resources */, + AAB073C6139861C0008AF393 /* RootViewController.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB9DB72F1781DBD40087B6FD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB9DB73B1781DBD40087B6FD /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + EB9DB7301781DBD40087B6FD /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + AAB073A4139861C0008AF393 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AAB073BA139861C0008AF393 /* main.m in Sources */, + AAB073BD139861C0008AF393 /* TestableAppDelegate.m in Sources */, + AAB073C3139861C0008AF393 /* RootViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB9DB72D1781DBD40087B6FD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB47EFB51781DF6D006BBFAC /* IntegrationTestCases.m in Sources */, + EB47EFB61781DF6D006BBFAC /* KIFUITestActor+EXAddition.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + EB9DB7471781DE100087B6FD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = AAB073A7139861C0008AF393 /* Testable */; + targetProxy = EB9DB7461781DE100087B6FD /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + AAB073B5139861C0008AF393 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + AAB073B6139861C0008AF393 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + AAB073BE139861C0008AF393 /* MainWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + AAB073BF139861C0008AF393 /* en */, + ); + name = MainWindow.xib; + sourceTree = ""; + }; + AAB073C4139861C0008AF393 /* RootViewController.xib */ = { + isa = PBXVariantGroup; + children = ( + AAB073C5139861C0008AF393 /* en */, + ); + name = RootViewController.xib; + sourceTree = ""; + }; + EB9DB7391781DBD40087B6FD /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + EB9DB73A1781DBD40087B6FD /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + AAB073C7139861C0008AF393 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + AAB073C8139861C0008AF393 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + }; + name = Release; + }; + AAB073CA139861C0008AF393 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Testable/Testable-Prefix.pch"; + INFOPLIST_FILE = "Testable/Testable-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + AAB073CB139861C0008AF393 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Testable/Testable-Prefix.pch"; + INFOPLIST_FILE = "Testable/Testable-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + EB9DB7401781DBD40087B6FD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Testable.app/Testable"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = "$(SDKROOT)/Developer/Library/Frameworks"; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Acceptance Tests/Acceptance Tests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_UNINITIALIZED_AUTOS = YES; + INFOPLIST_FILE = "Acceptance Tests/Acceptance Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + EB9DB7411781DBD40087B6FD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Testable.app/Testable"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + FRAMEWORK_SEARCH_PATHS = "$(SDKROOT)/Developer/Library/Frameworks"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Acceptance Tests/Acceptance Tests-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + INFOPLIST_FILE = "Acceptance Tests/Acceptance Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + AAB073A2139861C0008AF393 /* Build configuration list for PBXProject "Testable" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AAB073C7139861C0008AF393 /* Debug */, + AAB073C8139861C0008AF393 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AAB073C9139861C0008AF393 /* Build configuration list for PBXNativeTarget "Testable" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AAB073CA139861C0008AF393 /* Debug */, + AAB073CB139861C0008AF393 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB9DB7421781DBD40087B6FD /* Build configuration list for PBXNativeTarget "Acceptance Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB9DB7401781DBD40087B6FD /* Debug */, + EB9DB7411781DBD40087B6FD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = AAB0739F139861C0008AF393 /* Project object */; +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcodeproj/xcshareddata/xcschemes/Testable.xcscheme b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcodeproj/xcshareddata/xcschemes/Testable.xcscheme new file mode 100755 index 000000000..1d22b4baa --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcodeproj/xcshareddata/xcschemes/Testable.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcworkspace/contents.xcworkspacedata b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcworkspace/contents.xcworkspacedata new file mode 100755 index 000000000..35cb0b146 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/RootViewController.h b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/RootViewController.h new file mode 100755 index 000000000..1ba4f0215 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/RootViewController.h @@ -0,0 +1,18 @@ +// +// RootViewController.h +// Testable +// +// Created by Eric Firestone on 6/2/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +@interface RootViewController : UITableViewController { + NSArray *titles; +} + +@property (nonatomic, strong) NSArray *titles; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/RootViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/RootViewController.m new file mode 100755 index 000000000..67f3abb55 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/RootViewController.m @@ -0,0 +1,55 @@ +// +// RootViewController.m +// Testable +// +// Created by Eric Firestone on 6/2/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "RootViewController.h" + +@implementation RootViewController + +@synthesize titles; + +- (void)viewDidLoad +{ + self.tableView.delegate = self; + self.titles = [NSArray arrayWithObjects:@"Red", @"Green", @"Blue", @"Purple", nil]; + + [super viewDidLoad]; +} + +// Customize the number of sections in the table view. +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return self.titles.count; +} + +// Customize the appearance of table view cells. +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + static NSString *CellIdentifier = @"Cell"; + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell == nil) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; + } + + cell.textLabel.text = [self.titles objectAtIndex:indexPath.row]; + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + self.navigationController.navigationBar.topItem.title = [NSString stringWithFormat:@"Selected: %@", [self.titles objectAtIndex:indexPath.row]]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/Testable-Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/Testable-Info.plist new file mode 100755 index 000000000..027e35aa6 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/Testable-Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.squareup.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + NSMainNibFile + MainWindow + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/Testable-Prefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/Testable-Prefix.pch new file mode 100755 index 000000000..183f8282a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/Testable-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'Testable' target in the 'Testable' project +// + +#import + +#ifndef __IPHONE_3_0 +#warning "This project uses features only available in iPhone SDK 3.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/TestableAppDelegate.h b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/TestableAppDelegate.h new file mode 100755 index 000000000..4bea315ec --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/TestableAppDelegate.h @@ -0,0 +1,19 @@ +// +// TestableAppDelegate.h +// Testable +// +// Created by Eric Firestone on 6/2/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +@interface TestableAppDelegate : NSObject { + +} + +@property (nonatomic, strong) IBOutlet UIWindow *window; +@property (nonatomic, strong) IBOutlet UINavigationController *navigationController; + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/TestableAppDelegate.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/TestableAppDelegate.m new file mode 100755 index 000000000..54f8ab136 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/TestableAppDelegate.m @@ -0,0 +1,41 @@ +// +// TestableAppDelegate.m +// Testable +// +// Created by Eric Firestone on 6/2/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import "TestableAppDelegate.h" + +#if RUN_KIF_TESTS +#import "EXTestController.h" +#endif + +@implementation TestableAppDelegate + + +@synthesize window=_window; + +@synthesize navigationController=_navigationController; + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + // Override point for customization after application launch. + // Add the navigation controller's view to the window and display. + self.window.rootViewController = self.navigationController; + [self.window makeKeyAndVisible]; + +#if RUN_KIF_TESTS + [[EXTestController sharedInstance] startTestingWithCompletionBlock:^{ + // Exit after the tests complete. When running on CI, this lets you check the return value for pass/fail. + exit([[EXTestController sharedInstance] failureCount]); + }]; +#endif + + return YES; +} + + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/InfoPlist.strings b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/InfoPlist.strings new file mode 100755 index 000000000..477b28ff8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/MainWindow.xib b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/MainWindow.xib new file mode 100755 index 000000000..ebc21510b --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/MainWindow.xib @@ -0,0 +1,542 @@ + + + + 1024 + 10D571 + 786 + 1038.29 + 460.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 112 + + + YES + + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + IBCocoaTouchFramework + + + + 1316 + + {320, 480} + + 1 + MSAxIDEAA + + NO + NO + + IBCocoaTouchFramework + YES + + + + + 1 + + IBCocoaTouchFramework + NO + + + 256 + {0, 0} + NO + YES + YES + IBCocoaTouchFramework + + + YES + + + + IBCocoaTouchFramework + + + RootViewController + + + 1 + + IBCocoaTouchFramework + NO + + + + + + + YES + + + delegate + + + + 4 + + + + window + + + + 5 + + + + navigationController + + + + 15 + + + + + YES + + 0 + + + + + + 2 + + + YES + + + + + -1 + + + File's Owner + + + 3 + + + + + -2 + + + + + 9 + + + YES + + + + + + + 11 + + + + + 13 + + + YES + + + + + + 14 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 11.IBPluginDependency + 13.CustomClassName + 13.IBPluginDependency + 2.IBAttributePlaceholdersKey + 2.IBEditorWindowLastContentRect + 2.IBPluginDependency + 3.CustomClassName + 3.IBPluginDependency + 9.IBEditorWindowLastContentRect + 9.IBPluginDependency + + + YES + UIApplication + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + RootViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + YES + + + YES + + + {{673, 376}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + TestableAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + {{186, 376}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 16 + + + + YES + + RootViewController + UITableViewController + + IBProjectSource + RootViewController.h + + + + UIWindow + UIView + + IBUserSource + + + + + TestableAppDelegate + NSObject + + YES + + YES + navigationController + window + + + YES + UINavigationController + UIWindow + + + + YES + + YES + navigationController + window + + + YES + + navigationController + UINavigationController + + + window + UIWindow + + + + + IBProjectSource + TestableAppDelegate.h + + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIApplication + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIApplication.h + + + + UIBarButtonItem + UIBarItem + + IBFrameworkSource + UIKit.framework/Headers/UIBarButtonItem.h + + + + UIBarItem + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIBarItem.h + + + + UINavigationBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UINavigationBar.h + + + + UINavigationController + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UINavigationController.h + + + + UINavigationItem + NSObject + + + + UIResponder + NSObject + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UITableViewController + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITableViewController.h + + + + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UIPopoverController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UISplitViewController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITabBarController.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + UIWindow + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIWindow.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + Testable.xcodeproj + 3 + 112 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/RootViewController.xib b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/RootViewController.xib new file mode 100755 index 000000000..855c7ab10 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/en.lproj/RootViewController.xib @@ -0,0 +1,384 @@ + + + + 784 + 10D541 + 760 + 1038.29 + 460.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 81 + + + YES + + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + {320, 247} + + + 3 + MQA + + NO + YES + NO + IBCocoaTouchFramework + NO + 1 + 0 + YES + 44 + 22 + 22 + + + + + YES + + + view + + + + 3 + + + + dataSource + + + + 4 + + + + delegate + + + + 5 + + + + + YES + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 2.IBEditorWindowLastContentRect + 2.IBPluginDependency + + + YES + RootViewController + UIResponder + {{144, 609}, {320, 247}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 5 + + + + YES + + RootViewController + UITableViewController + + IBProjectSource + RootViewController.h + + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSNetServices.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPort.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSStream.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSXMLParser.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIResponder + NSObject + + + + UIScrollView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIScrollView.h + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UITableView + UIScrollView + + IBFrameworkSource + UIKit.framework/Headers/UITableView.h + + + + UITableViewController + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITableViewController.h + + + + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UINavigationController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITabBarController.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + Testable.xcodeproj + 3 + 81 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/main.m b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/main.m new file mode 100755 index 000000000..9afceed6a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Examples/Testable/Testable/main.m @@ -0,0 +1,19 @@ +// +// main.m +// Testable +// +// Created by Eric Firestone on 6/2/11. +// Licensed to Square, Inc. under one or more contributor license agreements. +// See the LICENSE file distributed with this work for the terms under +// which Square, Inc. licenses this file to you. + +#import + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + int retVal = UIApplicationMain(argc, argv, nil, nil); + return retVal; + } +} + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add Category Linker Flags.png b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add Category Linker Flags.png new file mode 100755 index 0000000000000000000000000000000000000000..3bdc581d7655e37d6189f74cd0928f836500167c GIT binary patch literal 429491 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 {OnZd+qXn(v9pdF>f#j9-D4Pho9mno-mbxt4q z!0Rh_ddM$B>L)?#rIbuI)SS9Le^>rAZ@;#=96|zAGKdHRu5WMQXiM5UT}D5qGJ6u9 z7(!rCt+JaLSSW6|GW=9KCw)vD949WW#(5eOJ4!*9TPMpPvw9bj>24kUB#fBjL>H}K znLf`@FT%q5vN)q4pW00^>&;U2DEisug?hIOR>2!x|j4+d(Oik=jSPR2;@8RZdPh0LUhu>PIdkL)LSvVUO4vmejZW(OXA2dDjY z6&dRQVOI|ATbh}J%9|sbZ z%$31~#%VK6TN4Q2BT8WLL`vSp0@dKinwJtGEae3rJi6zk7Gr!imd^*4myQS#RSkNw zFgT-ceC+diZhvT{aGik#i;Sn7H<>d(6!`rf(j+@)Y?-R@Mjy>qos^VcIIGfsMf@Scnsem(7K<9P&2cd7(YUXY)Ai*f^g%JBideNytyskp&>eyrIdztCs-)grxL>ryG&5BMxR z8^6E`7-&S|ePp*8Zm6V1eFDz7Z9s04@8cdDq`VS;vH9|tAsCyJ4sBL|Yo>5xp7}-3 z7vZrv{K>6A{uhbcz9)=MPY>ty1IytDU-GmpvWZ2PaDCT%H(Ez*r?VnST)wG&HPD;P zo3oyK?rc;?bnJSy9DjKvGW6gn$E&!1*evaD?ej4J#qHBEadv+bgK>Rv;kYNCYbd_Y z;}5eSFzk55w`?n~A~{Uj{v%i}+hA7w5=aR9edLL*&B0AIN(j*|_xX&Xf~9?F#5QW+ zIQ3AuO(*E2E~5}DJ@8YF0~~LCSfEa`*=T2J`RUnURc1ARsOHv>*ZE^4sC{y&nB7Qc zF??-$X&@C^NFx_0bEE&T+k6#A9y~UF%8a6#7;7mi2T5ozDyu!b2)A>H;xNsqBY-^! zZF}@Q#TBH6JPmc)W42G_ZA4Jzx)(ZrW7H#-WRn$~-ZR-BbY+f8zZGQt=14JE{Wl(5 z$Ft8;=&QjeV$>G*_q>4cgMbK#|4@PLb9{JYa}KqG8ic3aT|r*W)Pq$%R&VLKwT$?n z7falsX~%{_kZb-yL60DTi~Mx9tD*|;&j-ut?7CVSF|9-`77rRVw~{1I-sHE zS`-Uk-JK@3^2Guv)42POvb-`o$KeKt!-RF8uXo}NpYJ_@OH0f7dJ^BJJD4-L4*70X z_fsJiBnIi8Rn;bHZZPP_=2eZb45nPi7k4$9487Km_|%!M*cX91s68V+Rp;)(%QEn| zLUfv@<}TdZBc1nYp3j?@UC$3L`5)TRnA6#UowQ#d0_taV;;wq18J;$5J#I`TL|S0Z zegkV`t4Ge*Na}ep^_0?RN!LUaEx(hN*jd}3@dp>3nLOAfZP%{U=MHiAB}GLog|FSQ z0aP-IA%H7{vh|PT+V7hraUXHKtidlcm*@B$D;5V+RH#=xi$5T~SkWw}lz2Xl8zXh??^Cx2JnShy+qbQ7VsD%M7d=rZilM zAC75_R5WC0mqku}oamK4r}Ke<_|!#xGpcztTwq@A)N4zmDpOXgnnMLKYFllnh^f_L z+*Z*1-fOIV?JDMg$@4igIj5#M1wxVM4=)?`;9Fwo^4o%MlF_WVeqg+VE>_n>DKu;# z1Ai6{hMZSZQ!~!LJh!3BIl89y$_0}-{4!{HTFo4ATjjiK08ln2&ER))u7{Xf$maG%rI^`X<-LswDFsGq%J-RH{6~*y6AEz!ol4WL6$}QDH^H-7E zaxD+`oXCF*wfVf==nJ#|qUP{GVtbu-0H&${6!TZu10+}c(RY&b0%G8QfmSwva9czK z81JG`=CKTfV9(mdJ*vIh(JzP?9vmr^VWs7JB;laQmH}&yPJJSE<+xV7xYrV&#>-t( z!$L>9dt0M{-fx7mdbw5{8e@IRQ^|Jh6UQ+)Sbhn&*2IV51I7P?;;+&IQ~gwG5LntG zPV;ybuh+%$asWi|-~Z3<@ALxkkA47TeGl1&A&`-i^Nr&Afaq|2m{}&%T!NXFY2G?6{cmcFN8+(lgZR(*6pgM@8}q^Bl&?zao^@!?YRuqiwQ=gvc1? z;Oyq~_!Ve}fy>d*;e*vu^BNn0+BI{hW>q3S+pmLZ(?gd!0Z>hF;Z7ymo)d63OZQ%T ztGvvn`+0(0?vQX>@4xi@ZK~0%X%W(TfjPEd{n%jo%gU5;p=QwG*F08)GP#WgPZ^bB1NqWeYokiX}| zzC6(IBB#uej-~GEYbCdtkl(HE##x(n|47dtSoW>aAL&Nym>tqkTPy^IQb7nRfc~%K ziFX^Ar&}WMwqbp)K=1J?Ou`^@EGhDqFrPBOfBqkFKb;%GnGSw3%V9(e1PBfU7MsPp zF9>dL7Xi&|4L#65&^f#*zfXXSM9QYH{P!yC%u4pf_uQBo=Q05j1KJt#;9wC7-j7als>PPV1YLoIl*w+0akoIWmQ>5V1ir(loLSXb~(AQsskZGZXSXT zkFusxWa}Ush`=CWsD1z|dyHK=olA_9u!K?m<5dW$-jX27_tVlI|3)_5*P$VSyqa1F z_9t8(6BKp9T)V2w5#O=w)Z?Hp-bC z!5M3?eJd?+VD^!`9yTZlmG`y;+;|I$IXnXKmlQ-$9#}EvO zxP7M$?AtIG-tfXitxsaYVtn~K3vH(5<3)^kLMD(ED+qq|Tqh!-IT#Ro1idV5Txx58 z*|piA{rDdx{XwP@NA@rxL>{A|3$b#kPVjDU*ut7r@Q7*No!?)LkJgi-dI`a8a{gAE}DWLd2Yq#E?5Xm9Zo#m;sUlcEiyKddoO1M*w z%~5YOiJMJK+4P@?;qw^f&3u;&7@|ag0Z9AUIY83E@1UQgQy`Ty|smO*u9TeonN;1Jy1-QC@SJ8UE* zxNY2>5Zv9}g1ftI9D=*M2Y0x;PoLBG?e9JJtKtt-K^6O1&s<}UIp!Dz7}^k@dL-t_ z_}R?bzFM-wg%9iK!NA}Nh2+frTFi;bEp2d7bwj2qRz<_Pr~1OzPEwg(aK;C_Ixu!t%$wFuZ?`%ZweoI9NxWu)EwxUX3k7~dEfqoBb=^j z?3i`-!i{0u^Zs&$C2;0!qjovAfwj|PCCCoUxxEE{L|A2dFrD2c@b;bPMxomZ0yJ<`Gc zj)V&7>mjVnVOA*E0TX)7Xt%5+X_L0~f6@>C>KQjf{m59|Wd%JuoxFwxD|FY@e9nfn z1Wc*9C%2=c00ztd{*5zqh{yRd?=0-lV??s<6&#=TU891+LW}pJy(78ypD9z=baC@}mB| zgCMp1PB2E!mh?rH)!vXSiE#!Xa3Yiv`erp+<9cEw!-`6#Da4H%A0od?M=tfXf7ltM zH)?mm8Bpy?iW=fGyHc2E=w*CLk}PlaqyH-fr?s0n4Wpx3#x!Z9Kfb6~S)<;4gEf^; zPA~YL4-KWRkvHJM611ZXLJ|sVlg3LO!OMKuc8#}NV?W2mr7zblif!3P#g${u6x?U~ zp`i6`|1eGS6RfK_yvxCoCBUGaXhs!eB_RNenCJOE->j%>ghcdy$&!#Z0Th1~9g_wB zAEPRChZwj|A`{catcamJmv0;wV-`&K;Qr2x$p0yBO*{D@i@J6aGX z(Wx3f`F{HS%WB#*+CPApIp>Ec3O$Y|HoaL(7(<%>Qf#;)vRFg;kG76sI$s0El>7P`t0($M@$m7YvQ%Dz&MC zgcfOqE!xWD;MII~%xvKJz#Vh)_UM_$;?v{1;{e-55bvVa@(KNG4 zY}ZF-MNUnTg4*{lhZA4b>fSG?*yfGFwtOh1oiEc?m5)urKW+ygo1?G7c@b(%XOO&{ zHzHHCG=q%z*HXsc7LXD$1^j&lWf;i1mF0-+Hx2E&G5fp&$X`@(OVbs~)Xi7pBf<6iduLe2B=8Vh| zB+t99uFXT*lV0_rx;x4BAS3+bO{~6r7aRH;N8L8p%X{lAgTGVuqoAxqx_2{OKL*xy`1Weeq? z?2SkEyNl}!2(N&oS2|^KHT!*fDqU80It~tHavl2zQBnW2j8FiB7MofxH8A70nWi`C zs;7XNX(W2yVxLmr%(8r~0ZnQ3^fS!}pb_Ibs~LGIIqDazPLseB^(kWwwG1bFVDy$c z!}6nNgi^S3WN~C>n9|$R&naKx3ooB;&LX^$uBSh2<+yH?l&abIVoh zO^ltq(A3Y%S)?((ljqaSXjdcU&FlZ! zRl>k>NUCqMo-}8UwIgy?o{o9jaC30D5zO1)nIxrpr?1Es^QJnlt|mABb%MHE0{q^` z0vyd0&`L;t(Lp{?4Q=$UU|CYo1+er3Dw=7&V>X>wjIEjhSYn$pj7J@aw0DlDVaBv z2Jy-T?)ZWRIpf_&vp-X>M~}7!ds=`w8m`p>Jtyo!uW~gYzW9W=pykA_&Q{JICCM@~oeF`^n(bkT@18t2?1Op!*ltgE`HXT?p zad?YsQ9em0uhvTzA3;(m(kVh^%Ll!iQG4y1dE>FS%UiHd0W9<#Zs2>9lLb2aNDPUc z3(8OC#X!bmu|isLk4TYhnYVQLp6a(6p7#8H*j*N`Q)W@wpqjJ8B{(Hh)W4p%`5^3X zmjfVeJFxX{ChSiH`akigIsS)n!O^-X?m1h_h(mx#)&#y*wF;}0KsMa5B?_YK!H zt4n;;j9fbF;pCY$J!fJ#{!;-+|EvJP)RJO+p0JQ=Nd;Sd!GE?Zd`%(eKNR4eHW9P3!gb~?97-_EgVRIv#@FvDi^gShjZ z(CEWgG%Yz<8F@5lJ+Bs*m+f3?6)nJzwG*M987-w?#c+3G*LFMdMqy_Sxz*)k#dfb4 z`q4xHDN8lFhZ4mw8wp4tr-6EVTiuoxdB9o0#o`(l4i;8a+e|-UnR6h~eYnt=!xC{~ zrZ(|JuY3J1(E6d~W7hsZ)jf;c4Ew0#ZBFeSI)7fku~ z%Vf8!^{uzk=R$0h?e%_#sgJ@vWWwd&x21N*qq9W!Z=q|f*Hi^0gXzer)&o+zyiv4} zSrv=$Vsub=!eI%P>yg5AhGymomm;e=OMjsE@Yw&l7JY2IZDZv%x&cHe7X9VzBX z8UY~3YCTNMVn7k7*~VtIoF4e^p5cPnzvw;j;cX`#7Sf+RNTljZ$G_SICZS46N0v)) zqRtVw&^bQkD|F~*?N&LmF?6fW*jfuHKUxh@QFZ+Oa=$SO=c(B)NWA;j` zql^B8(kWME+%)1-G7Jy9zA;lhu-z>1_Weeig-u2(Z+0&pyDaVUC6NxDtNwXGpF>=O zZTX>qt>*Mvz0+!@9szM&2G6zde(8w2SKG^b6UiDZy=tG+=L2Q%J*!Stm?q7dwmz2q zEI6--?hBrr=fA1X;CaNN;Puj@&`3O7ZU`97xlcsStKH-(f9iVwx|eLQU8jWgjW8RX z?j)%r0{_U(W2w_%GMw>Mh~CpXy~Yelb(zA2l~)u=6+0LzC)IQZaK?yXjhqNhPJz!VF`uUB#`q7^ zfNwVBWl0rs<%ZW0ecCA;o%m+EczlAb@SH3p;Ja{OVtq&1Zyve zmX@j3c=#uFBX%*@d#(~>>6@I`%Aa0c;kx^`q(DrBs~TkVCr%CV+C4?py9HdzfCU58MlG+~dfr-!eY z9l1BYJq&A-8SBr_clUomF=zdtA>Gx7WRRh#YfD|@bN~4Uj|@^w*G=NT!P9()7YskazEC&E8kOCU z7BN7&u;5rpPo>P+3ab{DFhD`i)c#BwU+&f>mPC7nX*RLVT6yd8$6RC@L&yuQ{$1{n zc3Op@!=;}>=n)r6Nzlu>=i3jXk;S|fWlxMsg%-o!ddAzaAGxod4vbjc;Hmm4_2_Yyw`hvW5u4_JERj-J8cr1mGYQVMNX4%|K;!UDY?^`!r1-_jGmJT&k;dBYzea{8sX@%V>)Em#+x1)7b+L5}q%) zHO>qzp|FQJ#1{^dp+}pp1^4?j5ySTmZ;c--*O{= zIzpSz{N@V$mOJK0orl@Ln~Jd@|Ff#XL^bI=+KMTcw3X1-YH<-q1h*vu!h7+Av-z4v zz@DAu_9GtIwCYn%fcDLuAdYYj_BQ!PWqtj~owlxC1T~xfbl%p-ilzuj3?+1w=(pqu zk~Zfd_iOid2XSKgwt8Z`va8Fv6{Ve4GoEYBnZ5Ozg^$_oLArx?;*cXXm%_GRPtUGD z<(D)wmbEnn6e4dfKl^dNJ#!UM^C^3HA*{REVPL$TXzD13#X4J!Ros&~-?0Iud!=hZ z5X7&TO-hHszn9spUk<#CUtd1;y)!=SeR^#_xT3WGV9DKIrRfz~wgXK{!3ReRmsNmh zu>UqPxXSynWb*KGga6J9_Vxb4Zan7vCr>RF^E(~>#q-G_!x5B}$##^qYE6Q+%}G`Z zQWxwyz0Wf^Od5?)7Prb}Gji}EN6%VMYO{4~tzNT=SU%4KmymfU3dX~zCtq01!;EZj zPSa>X3*izCSp}DMedueEE125mp@-#|CGHC%Wa6V6#|_6XR*=k=36Qjsm{Rt|u@!jb ziYohg#bxAs#ADp=aa{7PGmGR*dp1>rkz~bbr&C&EFGuUnm~4pdKB}v(G6i{`g^Uin1w~nHn;;d#f96(M8A@O_KN*~1F zMnrC8`LkTl<iW&9Q>h+Uy*C7an4W-!R-1H?Dri zS_N&RE`)SNIyWbuo;RrY?q3^_3yx(eH=d8fu%sYWvDq{E+{Ys(^E8j{X}A9tLY$HL z!t1vC6b>}Nd(Qfyf@aTdI9O$ zf)~D#_uxB0(O{C|)6k<>J9R53v5-a<_gHvQ9Os^?CDe+emW>bH8HR<*6%LDUmHIGC zptmmhZbosQhtF!(Po5%~jGDdh&E){Ir1@YO3uV6?UDg1_obp4VXX9q|Qsd0mn~2|U zUkPwhzDL-Q^7u%+awdE|Yt%E2I5TZb`gbSuUuz1O>_;&aLFh))06(N^$?k>c5J2T} zsi}17ctZ=28-!cQ(<2J*W|PiJJzdj{KPDY&o2@hg(>}%5g3aJK95fyKX(fAAIomXV zCZm_7jcJ+{J#<<-s{i6mL||zgl1eLbXj)L3%7-%iI|b#o5#=eEp#1AX|FBi!F}=Zg zxw*^E(qzM`%8d$9+X5?5)#)8Df!s3f7*xuasJ#+&bnR;-_m7~EP_6PwKvjm~>#IU+ zjkXrKfqeix`XL}%&O5+EX|`3!-~+$$*Yo-Ohr_~W8r#_DI6lg<( zE>aIU$!)w1NuzwckmDjwwMTe%q~8Pd-|vxZY5;o2{hrmvJFI`As}eOrc~3X|w?278 zHFg$;k9ETCNaXV03M6N;;)p2GG(&|}<*^t?qp8?z-iS}%O;L+<<^}AJ^%$PJBvTGq z&1N$F4kh#o4DV_hiv)Nc#BS)aPIga@3SS7_ZnLbLiqhiq_D&9ok=sJ8ApAeO9s1sH z&%L+KRoGe)N_3Krl#_$h7h z|9ic3qAC}_IG*Y1O8u*AGRK3s{bD%BHd+Ck*I;u5Qk$V+o!IHCsRi`*iX|i@eBJE! zpQrV{10(|%le|;B(+&T;~4 zzo(>$Nl&KBXKDp=hb!jGOUrvZHP~6IT`4})SHLOYc@Y;@qHz3LBg$kt=APyXV$vrn zCUvx+=uPCRJY8Z&Z=8J#oLz11K*QZJkS@r_MT>D*J(Sp*${%8`l7d7X7&-nP8B5FN=a|sCtw7kDeIrSOVm`jXPr z#3d-HvLIU$0J9rIgWA*P{6>b-2^wtwo2!4Cf6e!aN4_=h6dpWGICTx%;=voe8Z~X zN4Xh6UTwD}28^btmvh$2oT=S;$i)Rul@#^MXd@OVp+GRKB*zYykI2)FVN*bLbp7nTy3<^tF>ms{6 zO!2jJvtrtEVnC1IyKff^e5I1(47B~HC*&jGNs`(o(jBgJ!H_#dLsxpKmS#ZX3 z9Camto1z)jSut}UFHV^CK(>jqPWJ-`f1@g8SI&p?PcI4ep?rR@+G`$Uxp0^(xiPR5 z&XK=@8E~_#Z#i>o8n9QWP8!$M8St%^U83cT#RNFgQa7$^6wnA;Ut50b)E~WnTO7AF z&+V+cgfs~a6H9<_^zH%cFNU-^1TJ+DBYQKSxT`*&6=#2DGe!uiILM<-er+^O(TWOV7PgP z4PoFrc}8K#9-6DrU*J-kRYxSn?wVmHNR+CKVtx-c9c4%ViCUxb>1P#k!AICnKoUcZ z9L1qh$~X8|6DY`es~vwQ@xtUk$c#BHS5Rv|*~%Rf&2YL2^vekLpNUMDltZIt^5F^< z@L{7Ka=D=aVIH9!Xdd{3sCI;v#`-?>J?HKJf^K(uSJO6Qu)O=Y;ATzf&Qz&k_`kFq z|D107U!(ia+~&MHJzf&;K_?I_g}xRBNy?M^ur#x$Jy}?L?|rsjX;|QtJeD+CmKw7B z3Ch*?R1U+@OAy(m<8(LrbmfT9BkXw|^9z@CiwgXaP&zbTOaoK;3$6838p`cUcTw(8 zU|CDBGr=kiN5QwGOvWiw$kTQDF}60Y(S+4XAkj{_=Iu>)WnP{bxe?fNkyJpSeQvXk z@tMc%caGFZSXkJ!C6!glZAvIML3qm~->Q}aW?5W`{a&~glO}Pi`WG<%+td>kd98Rx zWsXN$?fn~yq;oN1gX-DGB4MtB07bj#vddxW$((o2Xsc1c%}u_xF<{Z#);rQb zNv7t14~RJ;Mb1H!zaJ~f9$vipU%wWJFOx*z3&Pr)J>dI^TO}I~Ou!eI=m*;i-XNAK zNN;pX>1zkM^l5NMiDwXR%@OE?`<5?;BH?O%y&7Wj(SA_2$NKuXA=LA2gxzx>nmS)D zeIgNESNIu6H~ernAL}xpmeoR;y)5@p_<7|$FQkvWuAbhedx)vR7iG&R5s20{q2&05 z=FJD=U77LCp6GEvkG`nco^i32AlsUxe#K)wEnE`xAI$B44GD35zs3kqwK~&b z3+`$a1-)ue02h=sJP->TGEs<2v*>j?IPz}#S&?&lihsv6{6t3yVHqb$$zn{A4L~2f zzo4GRjKPbScVdiI5sy960Ww4QOF;s^$gdb#L7-`Fl$4ZdNRc2_s-atRl3$gZm|OtuZn;KdUMB|U7)9{9o=y;0YQ zJdg!I28TUF*La-qoeF1!8$mt(B=ylzU53^3ncI_5x_N}H@MaLn`zJ+cj`^qHv!~Ph zS;wR-!sGrt^7Pbt?)K+(XI3!(g~1kS-G%YDo)K48Z#{e&@m-$#vH|UOT5K7D?-or_ z0qM1BQIkZYAVhdd$8$VuAEyFu9L88aktamk*INzIp93y~&R^9hWD zGQvD2{7C{qE3oejI*#D6#vIJ=8=&iVfp6o^5(HO9HXA3UpfGpt9%q0tqsY?Lk@<+p zW0LP?>56Hy-h{r|>^Usp{CWp|#w=iG0T!^w|6BVG$X6-su;XDoFtfa&kUp6{32Xd! zH^w83Vt#bL!8pgAKZ~VXNBqnc%l07bVJ)+YK$pnlQ;TMw>74f?S-~4BinxLT!FB6l z86*GOq>!`0h%336dqgY5%{HsF2!#hSp%_0EG%1^Mv;m-@$fY8;!pdTNx436tFZ!KB z#7?y3_k%8rrcDxHrPQ{vr2@$%cUcd7Vp?1Az~r4BU*_iIT5(x*71$lyyfZZc6BRYr zWQ6Vc04I%H9ss9p-8aCXC3NOR>s?6R0LBU#b+9ZDvavZ6{bc2xx7_LbW~wf4$J`f} z0<$P$^X_h{Cg6-Sh=vPCir0uBwbZQ0UT!OS(00p;0vxQ=ambVm@S8|(=n;;$g$F{# z1o5q33PwcB_o!>L&$Vd(^CE=wH$`dQjgzZCgMUC+pT~G3=oa!yjA3z2nkzr0mAU-7 zmawztnv7FK&tl{SkA|eV1L8tSzvAi$f4-p3PG#P5K^DV8!KzS7#Pdn>kyq6Z;Xd!m z9^&X;t!c`(7fZq)HLrJq3hY#j>2i1)E6yHHngnu7*4s0&vHLU9f9c_FQDYr8TV|y0 z1U!TVr_VUU3uZLd><9__-8Y=OeDMJX=^B+AxVmSN?$NgjGR<~iSit>9lD&cdfzdtW zqN=jX!^~=m`aVnI6Kd@#%{wP0)N=HPw6Mb1A%fe2?)#HtivnE(YEQpfeW z!$-EI6VZEp5 z2Klt>A&h4%5Mg|;4pHt}_*LXM)yv6mWu>fp@I!5dmlCHZ_Zuv-h4iFNyT9!Mn(sPx zIp2P#WxAEk%57qXl~1SEU!4MD`dkWY@q5WQI1RVja*hrX2F5D2$&Fv!XMM1r);UE9 zX|Pa6L$8dpI;zFiri`_6{Arc@@9se_2KJ|KPD_z*f;U#-AiTm6EsX32vA&68&+NSI zPo|W>Q86fgO;QnCYSEq>|L;hD>B|3JDfkzrHPa{^&rlvyIC8jlwZeWVd>sqhN>~d{jz|wc9_tntPGcZfinuz+WK#9BpNW+vt5wC@YV^*M6(J z+?y6R1@`Ljomih!_9ry3rEo}b&+^y>K0|vhv9!Rn&Kz!`>nt2*d8Wh-2(sDzuu_kLl~`8yxdGNF++cNH;@`uNuW&F!H#{h`aS>`YMJM)jMFL$k2+;=o3!W6ya>z43UYvk6cAH9rAY zHp|*4g5i>(!?jPbAm{D_Uo(3i57&zyDIrO3vwe0R5Lzx5aGI&d=~h-Nm6L2#My!vq zO_*bolY@s-`I9)yFYZ3K$8&hJ^g=>Jxw*M`w4;2agCO?0c0@68z3f%l3xwc|Ro2G;+B zdC%~M3_>Q30-ML08$2``yHGjSRCEr6^>iGg>v~;-I6L zxg0YLg4O!5uC-wWq#+TZ5@KRXPDh7F?qZwYi$qVLZKWUT%e;gqbhB@Ao zQ(sU3?~x>^T*N(eu&aKLeQRD(Oh{Ifs=1QIsUwZA1>MC@! zpsMf*l|7DpyTqV>Jzmlq84WMNhxn9!rB|-sgwQ~W^n;IVijk90f14pCH4?bIx5tN; zVZlhoG=cvSAHU9gI3n6U1QsATCYJAQK4AD$z>=$vDDUdKIFB0zvWAnQxER@y&Sw$$ zOfC9_lA!I1k6UP{!8G5C9#90$N9ieXGqY0^50|QflOqQu#+|IIocYr?X>JrRCS&U( zri=B}Jde`0L&Rei83`?bE7H?Ue6fEQ%rkfhU*bjX!i8m4ev-5+lVYV)O7+C7e%96t z9-A0bf)1yv*wh$IqRfye2=_&CuM(q2%EMXq^*((g1-Ltm!$~xLD(XBsW-X;pqCem; z)dbff4uK<4g~Nh+IX$0o%VnbMJh(=71gsYwqX+S5+cYrdycWzEofC3p>xwT$<_q;y z&fSM}QJzW4+5>ouarh0`=xBeSptfk1c!Z#IHRtvFwiz(cw3mPTJ%1NtX!pHX-lnF*kA$C%zUGZDhdOspz< zdNk5GYBM@1U|!9kZyptqJIOBonCFDvf$`?I0CXImlq!oZjJr~}Qn*OoS7yfI5N_S> zu0lm~w4?m0^bMb7Py;#wfsPvx90zN0qE27hGU)?3lR?e$uefh!TuI5-48J0eivVv)fw|x zW(-B%+rOE0Qxh7q=PW)TkGNJkeT>|CY!U**{$pJAH%a-sgRI-28Jt*9_yA5X(8YjR zsjlc6Xfnl!^&3K<77e=_vu<#{6p(MRDB?2Cq(1TQ+Udi#nH|y%PI`kDtjl&Tvrdg% zpQ}kADx6<(8nz)_#zN@*nVzOckrrLDrg0b9o23RJxx4Bg2 z5nwj?r5cJjolOv^FA%()4Mg|lTL1Eh=EGGP>|if-Tv4?eBEQ_rYIP3H;Oq30OM1Lg zGGwATGGHKSu$RSTHuKA+f~V)Fw}-k|pO_z()n4o4&DKStsUu$SgItqh*uq-zoF?$_ z8(^EH?8wPRA-|)5^4StYue&6lFLg!o;x|bPH9xA*t!UT7-0u~7#$3;!>wd2%A={sj zNM6$q@-I!L^c4G!sJS7AUzR89V_|t+auq4@)E&TZ;@cbbvyf$&d{bC*h^S}UXjMGE z(BVTC9=>}^AIi8wd%G-tj+tj;${a@|`+NQl);EO>{ZcpXbkd+AF% z!VHAsX?4uDNbk|U899vFg$!oZ$`=jEBm96G)Ep)FE5#E9Gx$nnofC;r9=DPXK9xt} zDGD5qbt+GZ=l?kxFfNzR)Wu-r>_{3aq_}DW%z)t(1op=S<_|8`9O`IATpUWH%by)_ zx?uoCi6mxgMb_3W^T)-Ri5y)9Hp4whsPqgZ6qewu-))-qna!?6DI(;kKO_)khRH=Q z!L~NSp12+y!w+|`=DC_l{1ytSPc#?~{kYgGQ4#ja6GI%_Nl5N2n7$Cw92H_QRv2M` zNkda9;YB_2+av+Bth$SJeJWBMe3xuAtbUMv=!YXwriIb9UpD2mlINNOV9uz+M; zCW>j~jo=VETpXAry15q1Cu%;7r^kOY@jKD0w;PX~1J8=R96z5sqE7Qmp44#7Zuh@c zEP7{5d|8K6FQBwqnkI{XG8Fkr?awphCdOLBRTqE^}+NMik*lWh+<)_xo0ygfb`R5)piMJ!x zJ5y0I{WQq_ZE8g(4Aak62k$Z4+_5#awVO!3aOVUY=v@GhA)ptP4hSo1iYiV~KQng0 zY8cU&j!n}v38t}XgBRY`M*XqN3raJfu&ZTR0hCtz$0H+&QO&~5s7+tMjMIBn`+MYq z#DuuPx1gTer=$98lDQ~bNq6jhy)+9lBNH-y{!#BQp?t2o``(MC)bca?u;E-q9X5aCs=WQ?tznDHA<;26>)gKu_Iw0YY3VHq9i9OkMEa zVu$pExD{Drru>ipe1;` zG9yW<+{v6=9CjNNRWzfJhddcRy^}I0G+J^BJ|Z}sdq{X$rBuTbsh-aGWf`$#o*$50 zt>>8)_Q&gEZ-Oh!&Hk~Yn%J!e`95EjVKFEv{NV5){9y~EQ-pvV*-xhlo){mc?g}>a z4k4Ku;lgEmyZr?b19x~-^v>=~{5G!?UgOXuu(r{bz$BQH6i;AIB>Emr5UkF}wgK}# zYKL%@vhlMP#pJ3Sq{EDYlI{K}GUT<=II&0)5Psa?bf=HCnp&Z%k+b-LL~txbgf|Qc z9ce6A#=aP!)$+#L*peuzw6PQ*rOMng*i3teRh3$sdbEI$oh9O04nZn&yo65+2bb`T z2gA8IV$9s1G(_%LN|!wf6a#T2V@RaC2Y0&EiCWgF6D{s8`IDnbo5 zPmS{gu(H}jBo8VD2h_kV*Cw!QIG?Wq+8ic82$KVjSE~dc2Mr^YZs%HCY=P+}mhy87 zk+g&*f>rE2;=j!&7yP2{si=4x?!G3wG|rc359%dE0zkmBEbu&nkiYF(c7AM9b+W8s z#PEOW#{Mtu;D7N6V!|ykK0e?3a#Zd2Y&uT<%~s^mM8J1#m@sm!vePjE}E6D`$u2BfTOc zkko}}q*ggyD>tt1j))u?BE|{)I5gmH&MKv1O4lLZQ_O#0q$(^ZK9k$v3o;IXy|uo3 zZLW!6bK~U9-r5^ePt~q=pe@2rZ4Gl}9LU67TE_Cv_UXW$2}ZhQ1@dAE^I&mz{LF5a zAJM$yG@-XTVk`ZHuBDtr*RI&#V7Ac*8l-anT4OS-`}C6PXg?rHcp0d`!Ko`e)7Z9~ z3$woBXJ$)iX`QMa&``A&t-@YU4+S;G%#J#?ebi*)$H#mTb~%#V-h$BS8%piEXi<1!kZ@^UJuj9d4E5 zsQj272QGr`S@Fqm*?+)2Q`4jXGL=+s+2H6-0HSJFbDTT^$tq zF>{+trm1(4P1ztmEZM5#?9M7{g45>EqNaHn3qLvIU~@49wJ^+T%-YD3x_~52`+$zg z1WRlM+XW~9TcndX{beSy=G$^inB1IGen4q2T5a*xh>m)4LQa|tN$Kx{I6iXd1dRNV z&joQLoR$?IQ8HK2BdHyR79bMTT}AU6fw|}dErSibhN|d?F0nhsE1-w0hn_|C9j~L6 zp}G0_O?79?E98s9G2>QW*Yb16uhjV}pJ0HDMZfgGD@-Yd3)`IN;);F#FGL$H5QC2K zF=+`REAjlBImqHAxVV+L?n16`-^rucj0PxkbpfnV#DXD4fr&iLp7ewXjOEhAPDcr_ z(m$1y*D9H+lc=Mz7Mk%KGj)5V8Y+xd&GJ;ey#-54OO=(C{g#(?5b?QA%gL9!e0|Hm zbm)Zp*8wD@q%2n`b=Xbp#{|~(k{AkI=dsDq;lV5;Kvbk78#n%P+@JYFLR{H0L3Z4w zuwv=>PAM?4%(s7*=S0V()E1n<+}7JU#^u6y&`>UE;GVf4GqnBxcv;y)M69hDq$2SG zHOe$Oc@a*kZAM4X5W{igC75nkfQ?N3VVKb9a*j!%Eo#yyHkpIfOPlP1T=!ji#tcM= z7i>{3X`^IFlkl}0KehooDA+`mz^a8Bn1eR5?E2ep7{hs9D0Xj8gGYy3Paskxt#>E* z?jH=ho940cGNP5DS<`KhFywSXpGSN9>0w=eH6m@PFo{i%bhU5SK0bFgh5GH>Eg0=i zR$H40#epU%GAZ4*`t-FQ>Mnvs*v~qA!J>EqJH4*5%WI2N?W-p&vV%P|2 z2RhL9QSvs`^j4hUJ%ZQoLrBlc_@b@n!WVVI)`(|PAOmlDj2m`%S88}}d@BxgaP=Zd zgUN;#H9Q3l+ZwPGM@P=O2t3hE=EY!q9*`7x7fs|h=)B`QvzjUHs ziFR6>wT2H4W|Y7-x^z^Kol#v3&!2p_OM+JlmgceAD{+FjT5Fc>>%(Gh=i08FY*VAZ zZHO(WDL*1b_5L`j+L{sfw4bY^|9y_1y@M<+a=gjZlgDe$D2IQx9&2QW`NvSK= ztJ9sCkyh&E zzIInMvP#YpdNg}Rd_Dc7s%Ms<3(<)`xg+mqPA9L-~N@@ zD9k{|6D3%$zi)47LMZI^K^%m5waBIR*r9ACq_l5%Ue?&s*w|8qM2}lmUylKfALVWn zE<2mbmp0lPNnFkVGY&T-CbVctWQH|pRpPfAx^wgPZ9=03U^=YZJ>U=Y^punV+qmP% zIKXVFfBm1bv#<9{7O-rptXLDnGgYjy)=X%51Mo6ZsTs+kO11X*% z_=8o@Mqn)n4LyC`r-&xjubK0Sj1oClCaIBKwh!o3w1)C_!Y^61${iy8)JzjshP&9A z-LbDQmuuV?-=Je_>c#r$SD2Ab`xfMD4O-XecU0^g3{WV;X+(AHs$P(8HzYz|DGklEYB<5k%>x zsW#FdaS~FkSvMu=rdH>edDpk0Cgq16apK2DfU&zHv5xwr@$TwoJAs&I$f;6GERoc@ zFK?+&wI+MRv^)`GY;}k6fsxGE#BkY&`)MpDG1WYtZA!tal-MPbhEC7teLTImOD(Mz}Em)g$y zMhQnjgX%XuJ*2Sk^Gzp?M~hq-qTk&v8}lMuC?Cy;>C6g~hId_?rfG94TtRgBb_oux+#HGNPO6Y~`t z$qNaueo>DO+gMy5dww8&uM}8W0X#1QD<3V>#U>&&zI=J>h^v`h21Vi*$JX*#VaL}J z+yKZ^DiJ0UOsGssxT*%1HQDYgY|1**wA+Zv88FftdpE4B zY@spulUf8OMgSA^9@V_(S)=Lk9oJTy0buVHZf`TYFN_*kA)CKYoJh8Dh-n2q@;fW>3ZVw8clN%gmbTk>{CA;RI_KAPnSAnRRf5qpPAj{cLvSJ$<@YRvG){sOUC~K3gVu)NvK1A1FQ)?1!xjt@{9tKoz+=SN*iw#`sofj z0fWn0of_cdJs}m{4Wp2`;1h0T+o40uiq=CFAC$6+fw?bU z+!1DBHQaOoD&;q0F@R$q6#h|GifyRucCr(R#}Ue=%GzOtfc4@?Or=oKtIK>mRyAm< zw-vxqIH^_bA`~aJc9A7OkB=OI7v$p&o$p(`gX4>d+ToSJ#weZ~-J=;ks-mF)GNTj6 ztgzMbsGU44Eo~*6PO>pGFQHcb@KqMf}k#R!3V;}z%pC|Ng?=8@ijhnJC-;ZT#;S_y%Ad`W>kkE+7ZB<9;|v1rxD zWDulevJ)52C^)_Qs5iiA+Q_|q5vDzPdw@Xe{vY)KcFy} z4P#IU&%**VLqQ^6U}BFvib<##esMsnV^8yPZrhT8QhNLO-{v#Ild6_dyI}C|Sz}A_ zgV3Rm8wE&c5Nk43V>L6vJ2>=IzJ#_0A=zbrB0Er_+D4Z~-hz#7P(PX_C)AHar$tYx zESWC`G1o7jUu3YdfOUj(2ReiiWTC1y-YjqUZZciGC zxF@T_vtAxhQ&STX67s9o1U!UxHyPW8VzD2Q@2+hGNPp`CGQGuAlykKfwu4&-u-&WQ z1>Qq7TICpNDL(?Gkv>xqK0?JLBwb;dC6O|)&Av{)p=H0jYfmQ4F zk74rPDxb}Al9QgD7q|1Ew(xNFh29y^p9kRmmO9~ zP}+B;`|-hodY&eqM;#95!tw_<#;^B+{OwY`D zsK-~WJ%=^iO1nghp%~?C-vMAqqiPfPPRFI~zhqS=&Z5Tp3ly_C(x7r+x4T^Kw->~_L5^*&|bnKld@?T zeMGHP+zyfA%O7P5Yn(8Rz&lX^sD`Wtc*b5V3kssG&3Ka0l45-meRA&KC8f22Ece|J zFa%SC3&+2z%w8|@qu5gCW@mHC%Mm4Sn)(67OdU6>j3)`6Nq2LGdD_VdOpEmv=yw+z z(GL%964KJ-0s?xY85JRb`7=a!Ow+u?mI_UCYBi&OsdjjS|A;S}?b)T4^iu`432j7H ze|pdF+gUwGdp;&6A<}YXEUkDa-dVaZ4FlfrcK8cmo zGl%_^?fh*WNuB5!LF{9=%E8O~X(pVP`rOjHZ;ZDA3EU4(3KC^lnSK&Fv>Yrtyz=c2 z7=`sR70ipv$8rXRRm)AwTsqd$i4d?z~Y z$5vD2#d_2BTwhjs4+IW)SMG!ClQsm3;VbsCFORO^A%}Tak8iEZNFEDCpR;on#9XhB z@(NkEeLnj^%KVQnJVJ=ulZBfbC$Jb58?>wrSYq-?^MmQ=*Z#Q}7&yb&5OIOdy_?ZO zq6e!Y4}3<3k74H4qlJDQ3_&z6EVtitYVWW>JICF`WwN+{@$Hdk{{tfqEniRYM87#D z{aSk#67kfGNNI7eXpqGK5)eOI0nSYJeI1^1sp)o+})5cI~UH8>s%Ndt{bDrJ_O5)mUc!wWj4f(wTh=SEd^3xo4)A4(7#^F^|5 zyO{9iE8bG#d6eJv5ePXS(V}p7eh-5&B-KoH~J$xd?O-~x0^M-WnTJnS=SbGl9CeP zef;SNk7E@E%&aHublM)#E!I&pR7E&pn=rfvj666N$&j6664&2r#PB;G<@djsH>&iX z`5*PZe6IyiJbH^rIc^?1nESY+U&MOf1W7keoIUY#=k2yd&}_f<^T?Z z_A_HlnH{=H?uMW3uloptB(ki=OC3B=-Ujx^M4|Ex6U$c*Ves4&W&V;rpzzR20F-6u zC^6GHF=vGa1N5J~db_*Vk}b-ZprqYXds1n~r_fb2iABH0Z#12>ej+g|7E{yH(-Y~U z1BZ^=@JK=3YU-xB4mE5Zb1E%NCm9x`5U2&15a^i-UhX+vit4Jl4p-Sd-g8GqC9!qV zGr$j$KtNd;T!WGV>s?!X%;ap*q4(LQT3y|gGOMUP@BGu^w6VH2-IMo#h-f|ZT)-eLY8YAR(`mY1jX+VdWx z2T`0~Oc=#JeuRHswdE^yy@{0l>lp_)4jpR&Ur(2vhrw8TsOmkxR;}jupAl2L>zWQ# zrOkuCli1#bWvnNato86rjR%m*(EBG`58ZrdEeXNCt=XML@JpETK1ow~IIo^t9Pg{l z=id0YGS_2nkD0#qM=qO&lo)35#ATG8bnmP-CIP9hiP0<#eP1 z;$nTHM@|{T*xQ93Cf4&S?(S&|mLt~Ym$=*TIwRw`40J;fD!aS`VHn~G$?CW3ZVJCFODgH3&cBJ%pIPR*fmEVyMvUdG z?kyB-$|95H1mdp*J-vk!Ql*ff{2FE*!(eZ@ilVn&gYVz##20jHjyK=3bmZ9+D-=nC zu?$BuPsB`tnJa4UY_6pp-Xe-X>5@~@q7lTdM6eKea+9)6!;yC$hu5NdaF6TGSTcuG zZPF%I&A>}?0DRa7elb8DBPPb_y*c_~?u55M?qfkLX1?+U9|Rvs=j-C7vNgHZspuV$So9CZ)0Z zm1IOQ51EnyEn*|hK~!g42C8h~cL$a-31@j=i)C$cRL$HG&v2`yVkz@Oi~ZN(XkYhF zJ1X>qs!d(0%FNv86q4NdN&|wX=&19r-fo!&OeZ|OL6P4EMWhfTS%>`FJSCP1iy}u@ zkA%xQq*_6fAx***j*r z!!Mq`_dCcRiKdcMN4UbWz6{j_I1FK35>We4(@yDxE?&H^iA)yvvN;`#c7@tW?Wk^D zJ_fHK@L14;wezS}%%@~K*;FZuRQ zoy2EAk=ZtMqn%TyHRDwF2vD0jYG61JW0CN6I^PuEDEM$i?xUpip3`aHFqmA)FhTOU z`xl@FejJ3O`S5Gy!2Dv{Eze!cKubf?B*Uxu`n*&9ewtawsQGPyS=%cN5DTkkU=~lK zX4ln2V#{-0vD|}>(vxVG$sl>AzY(~opLxTpdIwY@hg#pO8#>9G?1g&piK%i#~K}bY6{U&KDh5PCNN2xynb04G@Nyi*12xtiX zRa6$L41)j?+L@-bwVWYkx0~l8)H17qd>XEA-yhZuNR=(S%!Kee_QBX1fvZNfQ*i>` zY33}mD?ii;s|LXaTl{)mhcVeZa&4sL?xk++s&oa z?nG8SI*h^(inYu}*B>A6lSy}hto_xs^1P9s6wj^NdKahM5;F{I|FQUo_p+pXO16w&QD8g2KUkQV22y<hL6V?5p!*An24&Cqrfq-e+?jJiZ6ytnwj=dzQY!1pwW7?Mr&(d z^yhv-d2=(@M%6u!*FBb~MVc8;?Z0^c9}=Lc37H*YO8@CizkC5d$#ZyIaSqJx0}}Q} z!_CXRpS>-Q=YuEQx2so-B&ObDk z4ukjpb}K7vHJIGmDIQ)h24xhMEa1j2cmcpB2y4nUNVe>`&+G24(qq9o+H@Odh@+W`J-_-KU!U#$K(D9id0(tma(7ee{`SPn>y_!kJH=iT zqS+3witQb)zZi534~9;&er&cUj#@Ff)4BdFSZY!0H=!!4sv=mv=T70%@5M4+;$g~> z^%5!FKI8~Q#=%C0e2QdH5{yURBt22$ATiiL$r<@%*(F|j<)5RZU-XvfWA+)S4kf3= z%gjia%2p|Ou}ENjR+LC4GLl&l`+O@g_1ssii?T<|14SDj%?vLhk>m4QNu|CLxHD>7 zqFJ3Q#Q0Vd(xM_SGtBHZ=h6H7xrh3J zhzB&l%ttlTeW*#?s?iy*NSiuu3!%aN_{F1UD{+B+y@hylC1vF`M>q5@km_OSMe5Z` zsB;p}if*~6s%q4H{^|pxI`&34H)uZnz@WB_LP&*qT3V|3aY>5`rEb|rjR$m`w#P!r zXmqT_<=tX}H<9(QA$ryU@=i{$Jh!W8#a^TY^;wwft^J*)h__d@7N-|Vrs$bI`2>Is z%()%2P|hHZ+YIR2Cn>$yOZHE5#;CgBR5lNudBEej@8ISn1zr~_O5Jn*rl0dq3z+30zrI1d zAD_sTWU`zspR0tv`Vq<5Dkn}onQ*f|VFWx-N?B^sn$eJw;a3i8n2IpS2?z*q_33}u zoi4=Z!@TL?P?em*Qey# zqD`uJ9yWZJN2WonZJ(X8?ouCYKpSyNmWpmU+&u*~huoKx!W~PBzZmj=J^ZT3GXs>I zu4Z^z?X47_0BSn>Rd!c%5B=XLBM2D=<=LF1f3UuI+>b(tFQoGMJfZFIe(A*fCZ2AA zIwA5)Zd(^fGTe#6E zT#pV7AVndyaC(oPBbDtMAS6VhIu?hw5N5SQ?khc^U6)C1MUwi{>z&K%L6<4i5-B`$k_9rYUVFZ zBLvkftbCoj$4cLirR6G(amwKsa5MZRzx$Y>Vch3?n%O!~*|mg%nRJ3R%E<7~Kw779Fn46QW)Yh!tg^Iu>@q1IXye zdlbM^zRJ!K2n3-7m6VnR_4<0iYG0U>z=o1XDk4bUyMIIZWa7KaaB|&1OUS|-t%Ka8MGH!f`it_!oTD29n_c9x*I4_p& zRRhLra2jr3cu=|NmGR7M*_Yso^0}ovFD)?qypra}`mrZszg_@npCMqbkGGC?%;y~A zZv9qVXA zi!C7+lac8eI|wA*I^~kkAD2WTVq2dFB%Y_`L2HqPNvIPQAAtXb} z;xNP@<+B7@vfd9z?W@oy6XZle&6?v=*;Nz``4C9d=gxzRDSz)ND53kbU3l`9Q*%nC zsEol^GR%3xtmG|fDJ|8+rT1!bE5TBAm*cQv5*EjWfy+X>AC~K(q-RpG6yZiI?!A6* z2i{O4dH0rLtp#=&jxD@%6P-8~Q#L)%oshpW?ytZ-TrI>}0S=@Srs5cW)+#_re4nyt zX(f?E?toy%T5URSEO6H_MN*3Jm(j;YyjL>Kj+EyPGiH>aX1T~9rRE!b_Ml^q>Bc?Ll%G<(7?#S9Aufq<*Nu4Lm^f9{veVuOLpx-*(O9rYd} z!9=f&@#n^r?y|P~QPzK%<#l=#;B;|A@ zkef=Y2B)|#j$~)WM=+M9{V;>a_Ym?^$9uAgsg!q3-Ksyewf#1_HBR}b&EMlMhMF9Y zwV00_3kGdD$9e@cS{RFOyFZ}RVIAy@GP;Zc>(FI)8=g6^Pdt6#UY`K3J2qT*RHkv> z@C4$EZq0U(4l;e1e>Z}!)7Yh&AaW%7goFm+=Ld^%B@h zjq%0MoZ2p!pRx;(h|Z0q3l9k?90oeSAg3RNOr~fQL7E}_4|{4me=6#5$x8Ka=X#YW zr^IL#HI-tJm`T2zJ*Qz;I;#t%EBdNEAIS2_GVGuM=M-b3vXcrxfXF5-d98wcm6A3! zD^RJ)J-)yaV05p}x+HpM8WX>t^YG?PvH{h&N-hlh75hNj^Bx+4_-+s_$kO7#9s!rF z(Ez}2sN|F6SyQ^Cm3jxVIa}!zDlz2tqW5r*EIz9_yt}nyL?<7UqMniIY5N6?B4Fd8 z2#h+rT(>#viBpO@dSH8wHM&Q5Jo-!$inEC`%9ux+*L;hDWW5`iPiL3NvZ!VRywlM? z=3R2&c9}uG(L~X*J0Z;IZn7~J!1t}+FMgdkR>d}nCNF^L6c<28L<19}rx#p)t$~6X zfHIMd#EcMzAQ-GLEN+g!48i;BLUPvL65~3Q?odpd8W~Nm`s{z|vKJVJQ>bZ<_ z3WLW^V^rmg6E%PQ&pjbiv51U=ed5HIeh;%9WK0Y=13ZAQK`49;)v%E9poNhMd%Rq! zEY@6wQLM$mBZcPR`;%kK+~#{jmK2S-N7n2WglQ8Kb>CblWtzeQWg2V&`YO}lszWEE zYs_)wfZ)0~E!c`l`9Sd8Ww}q)sZ8?9p0k+DJ{}ugvQ+X3u0YSMF5%VSvIms51_vhZ zadua(wpkb2El@ffphYfdtrHAAn*C}b#)&^q8ZhIR9mn!kRfEp_5U%@Yl2swpOP&0cu`IWk-!=mPkRb_gTs^+U}C>y5})>h+i0Z^{!BmuU~f> zv0iF1$N<)uaMXqZmE)#oAeMwg|lIaasL3973}`5#-mn+4G^o=4Mns z2=5+TK}Dh5Nc>B*EI_Vgbgn<(xhJL5ytc@lPO~uF-rH=sfYCxD4Jv}je@a;99e+|V6ljx&uCapr8xy94~ zA^(vy=zAnSib5Dnp;SOd>}7xQugqJ&Vj&~rX}^>)kU?UZ>n1*^UU`3qp|5CE6G9Iq z_^JgVils1AX9(cB*YZoSE#on2u9gWtY9RL~koS?1>$2?z>;z+AEw#U#EMKtdzd}cu zGLYA!T{StCb4S-;=+6LNW6)$r>JK8q2RZ!Bw|N>qHmwlTlT#pmz5qk3uu?+3BGbNZ zwxfFCAkab5Ba^5&cj-)|c?Ap;>FqiRqM+ga%mmP^frqF7TIty5LIL$G?%oBof+;~} z6ygt{moHc67cY8zB&+jRD^*XrhBH%Xq+`i5R}sfoD>&pVWZKWj{_q%h5QF21VIw2^ zkSHv({plO^@dS&@anveV;nn~;&gNN($!%({&sAwSOu%sxw`5s>d-7=Z^pj|t$l3Ur zYTf?It>v&e-LF$b&%$d;vyEP#PI`Op7W;SJNdz`HcYnhc|Lki-FrTBNBdI!Kg1`$t z99x7f7_DvjR(m%99JW?5@^GZ{P{UW*-Ps9>j!w>Ja~*x@BSrK5Bqvgb&!sCD?NdmR zhlD#Bd|va{N?Dw( z1lYzHlh~rcQr6AP0I&+H(7*sEOt4Al?kGW?aafY%{bzdLB>OF(2uo28sh)NlY#%AP|hsUbr{pDT8YbB?`h;v}MW z3{IB6vd_`HnF)WUHh#P#FIiRy6>MTP__48}*|P0<8&Nz2`9G}m7n4=B5Tv@Q(Ml6z zN{dzkFr)R56)^1#wD60+*84a2pAMFaI|fyHcac8x!;$;X0c)F|*Yox|t*w?dS2iD= zp(8_}7+@isxYht)%R02sP6X^F>^q-B=9M+o%!-O0pEe^hb7d78P<65M--p^{nud@? z#|Ib2oeosf#sE=O3R&r^;Sl7$l$m#KQ*M~)u%r=a%qc0ANyezxMDn-ciY6-h+`%kA zR%Z5mbZ)&NOCMkv*7_`j9k6TtRrjjHhx-m9w8c>qkYBe(_|8kgfUfD4<;=Ap%RH~o z#R-dL)=?u#f912+Gn|s^u#@|P`Qoq9sI#+Pwb`T{(okh3aj)*6lcMaU;h0TSEWGk8S$DU&X($-Xa=ZTn1_6#MKR`)INt~G${YXN% zMxhreIRRBUiG=P#+DI<*VK_H59R0m%XqA#$NSzV`4wC_1P3C~a&Ba$#b86yv91U`G z;DJK!kB#R+a#wdE1DNNt6M8BJ5TBbk1Z(ph)xEUmxcYqB?Ut-Nj!|2E@#&xrdD8W} zk#qxPv+7+J+HbVA?qZdaJgWUucH(q5SD4ZTCe;Qz_F z(Z1MQ5_aYA6`rtV%(O=)qesv4Q5-L*!v}^9TK(#D%yaHF+`#5=nT3y$O20K5y>&_% z+u$NWaGsiVbc(qqRCZ1d(`93p+!wkT-X;gl>`-@d8{)0t4rN=;Qd0OWMh)iA3=lwb zP#JhfA@hw{0dy2e_%bCm*owHepM_n@Q#}=dKvaH7d>hmG$rPoFdO^ULe8awaW7QBU z*3_1gWD1Y&m`at;`nw9(AIzFeXB=kB5pS(qQQzI#dYX6BUBcPJ_j+FjxqP@gF>_V( zWE*L~Y}qW5ZS)L>DM-Ip&}{2^&4zHwkZ4o1RK zLTL4cwv2Pf`do`IWf$#hVuPGIL%*iPEdNsGVm+-(q?Vk$op{0`QW=i(e-KGouS&M6 zerc!v=V!h_GH^r+ajE6l1XI^70hcqc?w5*=*Orxj+6y;tl?$~V3 z3kBGRid^M|TFa^BvN6{u zH~*lvBC?2E`t7!JALUK@(W@S$#PBP4B57qu%n&`|bF!jdbd$#9AvnJRul( z^q8Xk6}$Q04?j*A(;vXPFbpl~rX|sZqXrk9>6cj}$@mcDk*BSf6g9R2brwzBGd#{3 zVbmE>!!s`7jgOu+ZVQK3pMXvtg7!@ynunqp8i2_xGP?z|}b88qfT9WjuU?`Z6lHjxLX|;ze+Hc? z2I*@h`Y*IOS~n^iG(Y0ua&u$fvw3NJ(H7h$W*$;(Hsn-|Dr%D{b29D3KEJ<4Z;Ra! zm6uZwg^OVnmWV5yrON$SY~Z=KLC4{jLn(vpB_L>kydv_%F&FFNv!|$a+&-R@kBm&< z8~W2bI4bJn&bYn+m;OfrGiNuW_P;NeCh#tj$^w+1!#mOtFlNg@zapw^c| zSra&1K%)=gachTvI|6d$}6qwnA5DwaywI4IjmnVVG*K) zMH}|hzRMQ3Ba=BI6wc+A)ktXYB?gyo7O8M{s+uEO%{vv$$T^byA508R8UY8EjOJRZ zrMDVO=AGsitWO3%{+se8$!z^Gv$9^S37^z_w474=;9ggg$O)}Rzpbp(5wY)+j%f;8 zQDJ4cX)YwHlvP<-qe;RJSAwbsuuzQNdM_XSm|JJAWma7mzX3NqDFLN6WzU=?#+Dm3 zuw<1NWd81y?FrCOa~sF*d+YB!jrFe_h(EbkiTR3*f7b%|4+}ff4sA@o=u@e}!=C1y z1w{Nv&5@Kr#Y@GO*^f514p)N$m`>12%pGv%-O|ud@NTrR;u-D%L+MowKzaw#Qu6Nr zz$~I_+Z}$jNFhX4QKf{xVrc|hNGaVJus22YlTiFx4ks0{vYHzCBN;;casFWu2&Wi0 zTbvs;^7OiMEN_sVIq+HPd^-}xWs{nqBX-$ z)v9N}2)|-6{&;w3c9xM57mg+jOl6}GN#>8Vxfhs1GAo3QJkVvS z^|MFHKZ0d0)`UCy31LV_U1ex|_MrDdr=<5`5g8Z1$yjX(2?oDnxo05htbQJGlEhoH zak_K6*165JET(7!zm(*;jMnRahPb2L+c`1ObpAB>Z#wE9!x<66N0ILCK>WrvO-fa{ z98+>fs&_U?t#TGmN+KnYxmV!w>fA!=^P2i^l8a?Bp^jx229^vnG!~U+5X_{{}U|=u@edB03)DMnXpRWj|2Xj!ol9+FnR8u z^{w~J>bTHq5!chUdjGSDWMiH%ebg7e31c+udGOX=hOpD35kE5bB;smdqMENQ=o(D; zBEY3rPr4(QMCFd5AhQ>;JwS#+llO%pP>=$K!IhAf3o&8ea?Q`>st=~owbnKD8o9O$ zsAvRYRKeAJ(?Zdm|K%x|W49%obghMy5Kyzc0cw$X6~TYuFx>^gO`V0mj1-g-MxS_2=> zda6LWL7!mJ2or;mpchWN2-06S+ls?ZI{E9~x5(;-)-;yXwKDt5mvv)!eWmo7 ze;0G66~k(Z{00%*zk2e$(3{Inhe4NyMK1Wa6`PDaRMBZxs?xuz zpP$|qgVxiLu|G}UBocI%zwp8_{d_T$rc7w?p$F58z1ruF(^mGStrj z-SYs7h3N0kyOhoFwG7=w^VX5YjPSo%H6rydJbbDJbZ^Zc1Q5aI_Rvp|ig|4RZk#q6Me&OLt7F8UHJT%ZzAofjz3tFa& zEH!(WY>C3Yq3WLa`2jb@ah50XSr3j#LN+cxv0KzgASN*RNSwcRR}KC4u%FPNZ_=c+ z^`oLl-jH!#(l-jdbos+o2PqXwj2AMDf>Q4)P<(IYz7VTYK|Fdcy&H_B!Y2P%u({|5 zZDYxo3(l(`80~4REizU2tA7r3baTwVAeM(K*Jcj9n+Y%7Pv6rAHal<9b@)_P#n8`; zWdFo8LP-|&{gHzhxI8-mOwr)f7N->twvA&n~lYgDAp9w_atjLT6s-<(+^!y~o?LdJ9vwqv`64c7}SZb=U9= zSIovaS?Rb>kewxIcMIM!woGieOFJ}&IP7& zGI3(@=beOVC{>|$tBFU8W+?WhEZGJSPh~Pr!o6@IGD15eY2&N{?eMhb|vC9#ai<%A74x zTpSK@Ly1Np>#VEo`RDZ2vSPE?{E|^ykaM4~DVx5H2V4JfINYRG?}}pO z!hhhqKihI|8(2kDVz3r>fZCkf_o2 zp&>Os8P>?Y8)q%ePEjt( z-_12BlQAygCHgP;a1e0kv~)>CYSOtKNn4Km1X*a|N3-5Dgv&@yzG1iL?f3>V8JsWs z;Z;Yed$#CO>J_kY{g#lgdPU~ZYx*D>ANwkO)^8`n6aE@_sCrLgOb=K{2{t4BrfG1p zQVtasZ&Ow=)9%l_cvUqn=D1OP&whF}!4?hlYG(;#aFlI(BgeSfqA>A_qxORbQ0Rk3 zRB3=pj!$*M>*C*%MIYh|b^z+WBNn&dfYdbR^BQ#iChtpU#IHv<^RYV8Jla+Da!IT%_ zR8w=PI9o}bWed>o@sZ1jQwU_Pk>uz2wl7DGX#Ca&NZ>T3rGa1?XV zGT3lHY>kP@7DG&k2H>#0UJ6aP@xzRC>A>NzYf!coDdD^LHf(}hXoOp8AI4c+=Lt{v zk49<5A~rWi;=Y_)1y95ZXB$T>-F-^1@ZkYqhn;vhK$y5XbY`kK3A#wlBQYJ zx=)O_j67O?560nkPq+L6PQ(upCKZlBt+;%;t_YB6&~lP16?&yn*yO${>#x2CfCQZF znCx3e1%14_zRTL+{6->hm>_geN~=qS;Y#;CKqV>;S5EnaFC4rV^Jl6Jq(_CVdpw6} z&nw5N{9kH64P_F)_>ZY?)6om}b|pvfcz?G+T*Yvo`lv7Mprs}AkWNifCOK?p`X?yl zMrp05rGjT9<}4FFFYb*XnLia!6@`^9J!(rMSLKH@ zo@2Ow;RdSw&xbHA{gUb-9bLy?LIzyDS)j9?Fg1~d=@RnU6_1aca{-3#)2C$NaXGk6 z&X!@d<_p`bPQ?m*dW)U!I^}O!($lIYO^;m$z3MAO3*t&4qD;WSXH>)kOqU3OZ1p-k zo!hHkR0xZ&Fg2+u6|PP=dD=7mSPKn4K#g$pS^NzjH(G`4;j{Bv&rp@+Qf$DGW*qNh zsSY3Bq7zmo(V!Pd^4o3Y+kPuTeMW2?7F+a*r)t$A?+DoUkro8B=S z`vw>^w)b&r1L|kwp?QcOrY&9OFNP^RfJT1=(3Ba<98G!3xXls%M(|g~&FewTFgdE3 zS_Dc~MjuIrkjc0)T!WL_5E%cGXthX#Srb@bwgI^6sMXg=DrY?R1j+DR98yj#zspG4 z@<(4Za!MJARH|{Vsa>EytV@*8mttZ_6$EiK{%Oi}wJ#g_G{Vv35dkZ@Ky*DCvo0kR zgN7&_1o6YD{u_XPJaIOs@8MCv?qu(QXWJ?B;!V4$#$*u=JQE@+Cmk6H+&;iIUGw=z zR=Ft3!ucG{Pg#FJTOy4pS~AO=D$IRUYWM(}Y}joPmfNqnZ~+uU;lZ-DJIkCc^vEHd zNVMrjwCFJt_PkUcKMu*d#)vWnm`3NwA8*iE4o@N6ylh%WTv)39;iLUUhOtGM-2%1c z2lEPnvgu_q)xTh=|9SXbND@Ip)TF+vzp26;V{wRQ(W1#)O0te4ZG6`Ql~axC<9Sw< zJV?FZPuSZ-%EN=vrr}*6@^Hza#wwp+y&M4j4I>FS$?Q0BUwr;EUJwbX9;ll~?}M10 zwnN_+8pBxfarnBV(DeovBxAI)nsjzi!j$ye9gXI@Ahtad){vlLM)65x!bh{g4moB@ z&&o-4(>S|7Y%`F|>Q=3mohRj~$YXE2{*3aq806UhP4jEF3rnx zSj8fYM&%=}%=4kPx(PLK`LBcOEGtThadjlMKq%c!c3oMV{REL}aCQE)V+#~L9|Plp zSiL~y*TwY5TvW4-xDdoVQFqQBmA_rQu|C*Iidyr{!Pe?Q1OF1q!HlYx@Z7(QT0VH9 zav0i~C!BLMk3{*x0XxSVm)o0caaY#CmM7Q?Og+_9z`Nrx@u*z=@gcktPg9s!RMav|cNP`&s3deI6<5zlOeEWW?jD%W}=LRu)x`FPRV5m^I`<^C{CrGCXz zc@d{t@am+s0f#$Jdk2-J&`C*YzFW*hJ86`0NRt?_b=&gkot|5Ps=9Xn=+Z;`d~R6| zd`q)=VNa&X+mjq@3%k;vhc*u}T@Z9$H+*T!jq<* zAFTu)i4Gz!Fky?s8k_zMwI^?f6AZHEj+waNxgC9?Wi6<>lL!rmQRd`~7q7GPhQ|0d zhN7pwwfSTsrybdsNMv(x2MX%VG;mZc-H1;RCF!F*PpE2k_Dh)=JWbwsBSJEHu|0X2 z74Uc8GYgS3sfyEGitJi(N_W=xME(;O`-hTng{?lw5>l;!1uDca=^=|CwL!2g*>b!0 zK+i0S*~)Tl%zpKY;toHn!bmzQjK!veG1hmU-l)H!s0*h3u7ycEG4-BK!{_t#&^?Q> zksARU`_`zM>-vurBHs17T$sg{)6aMhBqI2r+&@Y)fLoxvw@epd*C=K+W&@g~?`$S&rLN_s2`18||y^U!bTBU>$RD`y2G# z_V1olU^|$a$P-J@J|UwV<(zR1mjx*Lr3LAo&+_nyIAxcYzxU2U2`-0H%0~GVdvOZE zK9)}*zr$|{qUVgqNDqJ}o$R$_{;k58-65~gb*8rS52qr$6EIEv-WzHWmE*<#O@+Tb zE-?G4bNY3~MD-;&MWx~ft}JBGz@v(c@b0s(w+Qj}LD>qPnZ5;!6I9@?k7 zDvqX@Na-}9d?^TAq!*95B?w4&wKPOzkUu_(KA*3ES76bX4J&<;&CAvHqp zGouo&Ep{f_)~+mTLXYcD-ffJDY^qQvbn6P%QkB86>S`T3u^e|kGb#^e#k9tv1tHyA zpKVFw{w?d^kTn}*Y05(2zu~dJXEr}$v36cayAYCs&|v=TcTCDwpOGR%_`@%m?x!hw zDxJV5f|{w9AwTu$G;&H+<37CwFKrT#2oh_qDn@wz@uQMeF+AXlw5w|z=YX8THrD0! zefFT`>dORsJ}s#E%N7M8DP#4fRW-VmN<#9ULN{`Dw|(|nIxqB$&E&K4j&GmUV^Z|T ze!vA3ef>1W(kpBMFV&H`Y}{A4K76vil{?3NEN21o&-s8UiOIm)rJ7AAXnxKST45>Q zaqanlcz%9v+uXMq7sm>-O#^p&tfM31d~C5iI7?rhmBNSTyji}`JV8n7lViid38%w*^`)+YI&3(|9=PcQ%2&-Z)92}nwFNAXg#09-Yq||8h7j$9fsxZ zAE0f4$v{e$<7WjgMR?y2+6=7X_6cZ*RRi>TH$xxpK^@W z2p%P`)Y25ItIM2SYJcNP(R>c1?J#P?N0Iitf4cBOePgEk;ziY44qMJ}T@WOP%6A5l z{-o$hu3&%rP8)aUT<--QFP5nXW(>lx6)C)sNMqG}oHT<*ov($TdWhxmRZMfcyv>Y- z^4EuNS!FwT-E#SSQmTqe<6#{=tk!BrkgwZwILgr|MiN7_maNvvW~!OQa5+%gaOktC zY47e1NO81e8vAMAU2+X9fY5ptVOMH-)dD%SxKR{sutT9VnylevB|5wI+5}`l zFd&hPAq!;1oG6&pGHgF)udjg`$RFe&vjV(e=UX* zvTc3zoNKXaEL)~8AY{L!qNn##wtuliqP-&k9uZD4Pl_1vA4Y@U1s~C84Q~ksYI^!3 zuJ9h>WO~1B!P(O-pK^;8Jv?^z_xZA~&-!08=}*Ft_0G1&nAg6lXZmAr@MShOHuik1 z9!@W=Y*h*>Dxy)*0y=?Lnro}6nau(kva=zDg@tdQA5NIuFL!YqSi4TARCKV9!6iw` zMC&BpFI)1kxLrTYwNM;@Fp@Onj47j+~oMyLv+CAG~XN+YF65 zet3~!vW6ya2z@=$6<$#rtbysSh?nuV@_%(OUHXYi)BA2~M~IY}`H}!zH(#^c9vqO> zcBJWUf*UJ5r&-9|-&f$7XAsUQv7)(gqUJSH5x<%eUr=hPt#nBNwa(``JgClZ(}F-5 zpw{$kw+sU2zhcS%?YN~tjtRchV!Fuua z!`gW`t#EV=2K3y4t*KI|C{*dZyOvUuPH=Gf5R57@C-StgmM@2zm=JRbVA8?4;oZ2^ zh$orLnsNzSr-5Eybn6vfiuIotjWxp*1WW!~Lg1e-Ux?IS7sm=<$+U0aAC2$5#EJmn zMhv{=KWnhY<$(@o{XXY7SLw+c>$Roo2L9uG6JiJw?2416+hV>RFYq$oFLcl7|8*Sx z<03NzB#nTgSL6+R*OY;X;9jkLLfbozmgqealmf0+2pcPg=(!HNLFv7OO{$)-YJiO3 zA4|yz^%PVEjQFqJ*b&MsFF#GauX>?X!LLpY;d63wLd3MH+9@hwoZ<)bD*#}md0kn% z*9>Oa?(S|XYU)BJot#hA;+=6JdhDK@2>2t&^2Ot&E!2!u<+RpqTNt;!&ioRNipwxF zFVfw1M0~%LIBfJT|JUaH$Hj@|XyFzq*%oP#$#RnZde zGoLC#@95}g&Np}wNBs+}Zx_j|DIFsD@2vYDB>T_Pb`E4+@HSt*y=5=k^1ppHk;?&BuiUUO+&Sd86Ndh>kgGrG)Uxl5Kfigi2*W1lhN>~`6R`m! zy25W3d}ZNpu^Ia(ShPxlvMTxw6P7vur3L&i1IRC4WVLUelF96Tz}@PzQ-@{q%{nvL z+nK?ox^D(-&+Oi)$|SE3Y~J%L``fUo|Ar*Nzn+Zgx0J!q-jovAz*fVE*Gb)He^IYW zz9V0vR)<0kBe?zw#V|m#B!uJLi+=Dxf^+p-Jvz{TI}?A{p0A1s8F}(YO;q?0?CvUk zG!194uv(rjt;x9K_xHl^GzTbo!j`~-`|2Ej0 zh1ch`H##rO#bjO;#oCI;Nqec5Cp#-I)gsEDu0^-s5v|g7z*?j(vn~1^G<~A`dDlL` z^oI;!Up(R!wAxNjRLjd@{C&ede`d30s^@OW#unWgP=k)(C*&8Tb-pQst{!pn(JWaklEhYJriK3?bdqy zDnN?7z%U(ryP3`>0YrK~C^_AJikt+^ZfDDel*SoB^ovNSIz+Td6+fjIl`;~q{fs0@ zXI)rWNKzx!`T}dbq_6%?6e*`%2_y4yp*o?Wx!b5RL;t~haf2NnX|7HJHFsdPxCv24 zt!h32#A;V{qE%szwn9*`X6}+MKAd$671*~NkXFS``1YDm&`65X(MF|rxkL|dLML}X zqCs$N?G0~n2=*V6F@J`1^4y#~ydFUOFYNdVR+9wM37>fP-9;F-j^x7ik8kzd7sQ*c zEO|1C5jWbYfrf-6jEpK(>X(S=%`T7x>PiM=L)zB_c@a|Ahss3HKRxeg>kyjLFBp2R zBJ8dTqs4SS*%11xZNr8$G|_yQx&5^4{>*=QIc>z^C{2)4`68rGpXU2IV>sihG`TgB zMnY?7sRH7G7yNNc7A~HLirz?5ir+3RlbaM*rM6b6L7)d#&!P)scHDBID;LgI`-QC^YUEj*SJ96&c z@4fSHjycwvU0q$))n8S2&VAJeo_hiF3}->br;Z4~GJB_x7W^Yvi)fU&U_-qwovBRL zoX2Ab!Tj%$pLFMvU1lw#8+6W3EcuJ3h;6BgJS^Z@(1ZBd7H@(N7Ktm?mwHtnL8>2S z-IRBz7_PSu5O>B6>Rb?Nk1R<&T2RGVliq{5hPOSj+B*#?SFCo%B4~A#7n>q|19jCt ze@dukPBi5C9r^Lu5s%ihTll&CiyZ@&wz`7bIz_7n54UcKT1HN=mM;5fvM?wL8$!s^ zj3f(9M1FfFg`YBN5K6L^(l1a8i2cEq3Uj+D51K}I|eh218yaH zukS`T2e)AtT`zmS8`2h?`>W3BkK4(MGiuv?Y>-1boCIkN8Z zn?aFjajS(+Wsra{_^9|Iju`EwgpDhRvi^62>bgbrdzo@~$7u04<>-0| z8+$CMmR$$pEp`eDIw$)=&K>04vU+=W1K}3k?K`}cVfwIw{=mB)n%w{|Sr+k84>qF; zOW}(shDFpJn_MAFvG4^KUdt>D)9{VA;ZEG0$~rp7?$L(}0ZM5j?MMsK&(rNJO-}{l zAzO*n(_f(amfibkx=lG>$-V6^h(X8sWd{-wK!CTC^4xsm{1--h3yZJr27;pY#VPH> zP4x>{)JGWx^ zTu`~i_0@m578<7Ksz`4IO_|3GxhRtUVIn1-WiZ4~q0;QNM-t@H4PCT}C+$6)| zgh2PO_Zdp*p4o_p$MeOZNN%mEzh*e>HVsV(B}*l+pAr@%RV?D*_`^V7-1F*6+ajS3<=&1iYNSz>Jz$PY;QJ zAb9rH*G&h;L8X#S1so6WW+jaO!*3ZyaEp82w{k#X_>bd4l^bU4X_8_0ksv zYu-cM3FpW9KQcSp#^#sQd!FIPVT!wmkRo)zK*p)a)NHT$&<#bxd$bH;n?oEs1p=Ze zG52bgXd%%HDv^OF9++fbJBcT#iQW@WB3lI#u^~C}G9cU-8H#-^hVSJx^_}DhW>)E7 z0=8TGMRXa`Da@t7N9R28RTM;2(3V!juK`WMZw~zXZkEF;H8l`1(BQXh)&pEN@kil0 z)OD$+m=KpH9y&rW6ut=b1e?L;-Y?oTPzRV zuCU)ptEj?!>2yLAh@VB)%iqNK!qY*q>c2FIhP&`c6XK;TL%C~_SoZLs9;uM9H+tQq z*f)6X={Y*(sGU27{sd;vEU&$8cg|^EX0L6`3yxw{)~Q_Jrj1+D?EcLxwO#VS9I1Wq zY$_AEWy!-GyS_45pjNY{Q03UCcbJ9RHW={TExf%6Rj&>T@GDpcCaz|EABQ|^7KwhV z#UC*l3E66d*8PFJSMh*SVodVJ?Ae^rtjzlJkY_q>w(W<85_Rt-p$SAI!PIeKC(TOF z;E%b3^6$n_c+>zeWS?>kpaqpzp(_EV11z&N! zbJ9=f_#)4d?zj8FlGS-~%ss)!PVDn8@lT^Aa%!t(0gc}?hoF@4kEVIl>0E=43 zCbJ*`Tb>16FW49L;S2ImTRe?j#`|}@^Fh_ct;t5I9h?{C+TAnfTgG$5;|wnobGsa$ z>rIsFpb+}9<%G9kxo&Su8Olr1UJlHsvmo{U*u~TM@);mCuQV-?;hrx#()&H2>btns znT>rkp)*2trQqddgSTwUrE1|jUi(nv(YsLE>~N7?A{ijBB*J?OxqIDl>%1qck4Y`eUgPy#ap}>D)IZ>dk0E#J%UIeZ8I0$Iw-@ z&6SlTA2hV|r}hos{|(0YEG9n2FlIiua*DeSsj~iVi`J~xQySa#de?vX2wtx@FP|A= zkI@{v0MALcqX2mK@sBc1YkWmjv62{-iu97YIST6$FU;`fD~%`-3dP^6pH7B&8r*8Y z?TQJ!GFHn_A)u9)<4%kKDGwWdYcnjI-m1^gsi(}?{!@U+LN#6_rb0kAft78IM(?-5 z1)gz#?ZL!~MlR5MRN{T93nhHJKD~WCv@bEspaPhJ6_?>pSg4e4A-TH4CBbYKWN936n7G6Jq{W; zq4l$@^#INo6{$UH7I8%h;^NtFJh{4*$4zEhRw@GlgDZ7M&JP&7^Hn~8*rpP1GHhja zM$5!&r@@+Lk-@%YGFv)8T34cZ2e7}wZ@R2gp>|2YG9lGZD7(L%g>TMwDK8U!AMOGD z5HX%v%piStU3FVhyB*)a>k56bJ=DQ#Navl*w=0I{somtk(+Ew)Lcnw=+P59~)kdQp z`|8`0S(%|*U^JPmf|Xp6!TVl;kDrmh7x#CEvrI>;D&V*Ehu5g#M?yISwp~KKq%}2o z2Nw)J^t>>ncJcGe_@GKs+dI6!Lz{m0`ncM3uQt1?a1!qdrgp({a>?yNs&we7_&R*b z{dDd4SaDvF6`(QWpQdM7Zt*2wt(@lF?z?PqeOa*}hPO~Y&m|XZMux+!r&;l76K3&t zC3f7+BkUgs;|@%Znh5;5uVR^mC_eRYtLmkpednXr=nVx$O@H5{7+}bKJZTgDFWUbimoFFkeFtUiQ&cs~L$LMf0LOb))=a>&8SX;^-hrcd1qY?t z#Fnr{joivc_cBd;c9tY{_$}`po3aajs4jc!_O`1${%4E@v23q*NU{z+DFNSZqUk`u z{5Rlh3>vJuB8xNO!pufk39>WJQX!6_8EdB!X(z^e6W1~9QNfz2ta*uh~ zqUA3&g>Bh%;sJa4_PAhi26#`FhSoGa>$FR(Q@*cQ6mg?R)1M?wDG~pTfqH2uUP$x0+L=NRpAwi$I{6a72KfrtScc7Z3 zijuKxa;KSogU?GV?%R>|tOvP35A#A5i(z#Na(2N06!!`haOLxn3V-^9G(aJyqxyZx zxxx{oFyKrzVv!)jpsE-D2}&_bpFaqRN;NeMsU)68KtPe}X4Lwr*1~-}*v9|2RJ6+R zfjI_&bgr) zlD)uK^|fhzNAUFM$U<;G9nF%#FBa6f?B%)5y8QCZtI`35T! z8_Zb#Ou`T8n>0>O4d>+^ZFTo$y1uW;E~rG(IBvSqF@TmT_}xI7?q!WX`5&@Da2P{Zh#&_&m9nl8|1WnK3O*yHmg} zqKFn}*AL5ss`+6SrS?P-sVGb6K6oy3k!7U2v#(XUiex{D!IJ>6Sl#H794zUIE5-ep z;NB%m+@%9DyiE^FO3#@tJMXNp**xPTE*IA@;v%Y7+nLX05lL~)-h(A)8^HOJHrZQB$>{BHFx^Ko+)MvLe@nixYE22WTlUK7Sy_T5Bn&bz@Aj=@ ziqgSA!xBy36QX+S_I)ri_7qeb&&L&6|t2 zdxJr49_sakS%?El`WBSKIRJ{-lQ6buNcBdNRh*}GS=k=?85@(;#+U5hf zRew@{Py$~yR$(+EA=74aR)9iBDWP$nAr~YY_xwS|wMExiv}atrKQlX6!$nIxYI#Ug zmWNVfKC65_CtI|q`I>tqA!cg4(n(K4HF2(?o?6BMeq0)we!u>zW@H@eSODl_Vsjm>s(unHz|rk*y3O`HofL(B)9`^`f5 z9J$}$tJLCq^FdaxtbNfGTKL4+MZ>ISvV;TbU`p+)k7$w`U3~#})AB2Z;k>s`5u86K z3^by67!ii*>%zaZ{D)ur%QyT($N%$f3Sp~P(I-BAv_HP}UpJJnx^-MnEx{7&#C;&46HMut^JB{j)DL!|NB?g0?@!F zwmW|Nbe!V98Ew4*{joyT#Zoo#Ok;jVQ`W;|o9ak8>9sh=^mX>l_O{`Zaw1V7uu&Hj z0>X`XSkHfa)r;SYNgs>8_K)xVS0a{9@?*sV@CW`)X@1l8&u`H~(Gw1MwQ2lUV*CfG zcu3lOiXxZFvA;d`Z}s{YHvSyhi=S|`Y~;TfPTk3yX{(Fva}J32FyErbN)5x?!A9{= zqyDqCH6}zXBsOi-<`nu?ZoLYy9)zPF@AAysqI!tX&~(YAs zt*#d@zKt@zlqoZt~pv)t>To8=oIQCu_5Vz>s1ba*m;flexZVEI?|X zPuNAg@BNNm(5dytF=MzwBDkjw(>ffg*Eamn6aWlSS<>1bIC;JZpkmwJ_+T;<)=G9I zB>d*^>O72fU%Q#rF!~S2^q;i-u{J**RS_|n4@^QP*TZ<|S{MB3oVRFKj^A_#NhJF8 z2~4HGi>!Fwd{8!p?cR65K_-ZYUC3mSNR5C}l9<3keSB6xO*2v4M}X=n23~!@uKfyP zw^Y-wy6aHYwZ0bxD-fh33TZ~6O<8sz6#lUy3!H4-VbNx86yx|0>9bb?8IG9JD206x z`u~t>sp<_<_Ot-Tc79K*l5T%tNE+r0;WKGcjxE&`4o9}XsMMxMZ)DpjUT}xH>?%h| zK?eUa9OeADAfUly9*P~DB`RnAc!E>*+@wb=Lh|PP#V?XK0apB!aB%oJP=2tCS$C&j z{V*mmxDirCB`Uou2#e8SsRYxmHcun5ic0#i=l323*ck`rG`ITLGjvwqAN=*o=i_4^ zgZ$YGVCosPQO#rd#-Cr;H%_xdSZ}>46KSri1tgDp+3$O%17<8E9Lk0|6H2^eBM$j~ z>^fL2B@+elcsLJ>Ji4Cvn9L>i8DS1Z*R4#u2s-c%?UzT4&wg*YZfET~?a!*t$6(U> z>O)200rLnD@SnV{N+JUSVVV1En8=y6U#e-|7Mcl8mccLMu;QknZ277IPAWKHB|bw% ziHJD0LnX7xJi@aq+^hxPy9$Q7fb+VW5_3FR+9_tNjx<;=r{Uj-wUSKq1oE&+Hy&Bw za<9N393NW-msUvDbY)8gH! zB(#zMSXWoN+a=;~#QG9*rY$9rit4C%P)sL2iQ!g%i2aOGdeT$S$-Qow!#~!pHI(#p zYdQO4n%bsFoLrfy6AvSWBcbufO4%wS6c)TZ(EBCdkhyLzD9AUq=Do-o0NOeKag1+| zyK+=2$uZ6c%$&{0bI0Wd0feQW5L&DcyapIwKbXQqZi-0EA-TbCL%pCfY{S3SpYjZf z+sP7`{OUd-DD6*R(csV=jG)d!!>T`^;-j_A<@?og`X$zF3C$?!bnKk{{9<&?Et9H# zCfi|pV=2yv|Gt{koo+Y8tLUk4A~HV4YWJ$xxtR*Ie7~i0oZYU|Znwu!!}~&(FLndU z)?60r?2yOQ*|Fh{>8J-P!53&K_-c>?(zsys;2VQvk-o}1b%xy(9(S%X0^~DLqe-hl zP&~Y>5JpMj1^d}Q*FI!@hQ|!riyHg_n4BQa+Dr8(-?)9D>GlnlWK)tuxMa|BqyI=n zygbCC&Z*FdcK15lbu~Jc+nJB}`Do7{X#>4&DrDm%c&^S-w8GBCvJI1o9ggW6M4$sk z_*zvq&SnCjQoX0TC2a9X_j^eeMI?7!Ho%1J_S0{BV9gCa=waB1|D>Jt$3p&mtdt>q zOR7j0sVgo}q(&G5c6aA^^%<%Bo8DN>cYG#J#M#R&@6UrNRQsrHP*Sz8^+AY`#N-47 zLJ1W1mdqYLJ+VJp9;>sn>Gpl4sOKUaFu?Mz4qH`U5ZTcrehbwfWA3(ajOH*DIRIhZ zGJ?ydVF;`s9WUW##k*cKP?jr)kqW&q3ImkvSvln?xZx9X9JuVl`t@#p)GO{x`YIMdScZeT?wpbXa%q+7R_plT& z{$-_O{N=R-Hm~@yA20uY^n7i8dzCh= zliWipd!Sh=+}2N^*Z<{n-S@6S-qt}S*{9-3DlO>%>@()~og|oTRAxOWux&^g8Y`*| z_ne=%&E6(hLpMQ&nk(Jmlt$dSPfN=M9+eJv75U1((#9G`sfbi=fzRYV?!mEYJUny2 zFlO^7F{OyzZ1OYr%qcne`e`9m&D$X%Q>~QJoK%yF%KMhqD{{Z4XBvh9@~`l%QiM>O z4>>j2dX{EalzKSSKP?fo)T(V5qA5@Z+UDLP?kJhc=1P3f@9MBcl0T$!J6*Z?baiF< zOOrCVDRZpu#zSClz1E;BSuF44V<(2GlV!(-T^ip90)zV^yDiSh8l6(yUWc;F_vCP) zJ%?#euvZxHx_5;OTbB&sJmDrzm#7bxa+VHrr^*b!!%4meaLkA)9@g0Jzk=DHoVBO& z&LJPe8+jE!YAoTgR-;_WLjco7Eo|@rp9ztFTrt3gmseEO8mFa!j0T=zbdtKe-~^@n zeTmA<*m||yz@KqD%E)Fq6@to@8)Bcg5cMyvU2Azr4u1UA zHu4#_nYQmCd`Z|EDInnR!s0(7R4BTxTE9j9l#8Mh8F>tGej6TmCeF%-cn^mirekP^ zAA~@T2M++3N}s2DpI-h5#Zw4@e2nLBd_#157&+&Tj*aD?Kxfg_yv#(enaB@!=e&n- z0bsUEcH;K9uHg@Y5fc5xtS@9=qYE!o^Tjdq6bN{@N&3VwD`H$O91fJp%e~Pys^V6nPGUwIk*Z#uKt3&_S&c&Q#su1az8#Wnq}!v(GvoQ(8n{2n%f& zf}vo7`O0z4N%r5V1>6SE3kp8IdI0u@?+u-d#n9P$lo#yk1|~-e?6``~08ltg1YJ|I zvmdCEGQnB$k7xBiW^j+ka*}CUzCactP(ts|2qd9XJrQJFX;~EZz!ojZ?Zwtm!NWJP z$X!yw%6S%+%u!&Qy!8~X6(m{@XH4JKnSWfQfUb3->e-(UB))EK{LtID$P82i2wLn;CE3*(`?O=N!83V5t!P$q1y6 z(I+xCp(3#Sg5mN-w3jxac>ZPb(Sf_Xf|MkOD8*+1P}n{(uPG{zdryv9G~rQ81_h-B zJwv2VE(8ytF2i@dF_d1Q(`Xqz}Ld%3HkO7`N=^Vx6sJDUg|9S(N5`=YoYifD8|I4p6%B24Ws>GOzeX{vKhM(KT-#sJ?%g36S`*^wW9_li&-+{*#E<8}+3c5)E*x z#@Zo~*0AvVh2$dIHB6oO(}H}_(Ec)`HVz(*y)@>oAr?A!uI1Sk)k|Tp>Lxa{D0E=Y zWs^ed>Ps^BZeIa2CWiLydJoEK)TMfAPulgU*zf&p>FJ1Dy{TcdM18vOg|xGvC=u0f zh4O2S>E6KtI4zE>06r2}%_o>X zp@6%+$Ju#j&wCk?iXRJDYXY7)g1RB)#(RTlg;!m=w)uU34BktTl1Yp#v50_8F%k)Vg=?Iyv3!BN*kdQG`_}Ewk{oy;x1g^@{5-xY8>ek8N5NS9X=Yk$AeR zkh@6$fnK%z;eF!1na+sfypy7(Y+QGgUj(o#{K$r>4$&L&((k$}*iGss7PP9NZnicK zZK-I5j!LVhCK={#&v|$S;Espf(;wX6%@fnWldz}sQfiQ@4j7S&WAfg4F>Amig6f)b2YuX~u-*+@vNZWwx-3{Da=%p^I+BhJj|$^h zTydGzkfB=1Or3FF%hF0$N2o>emaW?xZO>9X49X zdPgtlS$Zpdv*`S>*L~rr{zd(&!0pIdx?^|q&7)fhcG;d$$=ud<@rwU_VfJi&6{6As zRoOcMcfSimonVeo)%6XjLOkkrzm#L9fQ)TIk6huCEq(6Uea1*lJr>E+p1ChZ%aP3p zhhNckvpoqSdR9BDU#uE=f;H#A;jyjQqxr5sc)cIKx|p;HntSv(@AjC`tc*5ZIemvt zrxDT>%&kSId)5y+kGgn214Kk`?IdQ+LD8CiQ&z3{mi z0=5>7X#P!b8`!D!^a#VvUe6idIOZbyoOq#7M%skbGEY~n1*6t5paL}CC9{W@teSJ;mYhGsky8ln_t=O^tu-x) zPwH{TT38aj6{VYE=EORvA+*y?)^yQtm**;m=uGBvQA{hA7$MxYg+g9WVx-WH<-qx7 z(f0|JE@=-Ps)E8ZU$!&RXXBupL81b_l91Vs*>UqN5%pb*+f3Q}ltQ$RAP&9*^zQ4% zokAjs>H-4GEXRtU^Mp?VZ0Gfn@D57Rt|waBJK2;r)9gc?4wbX6sS&K2mGTdjPP%28 zrA?Q+-{|MUPq zHr#5`gZJQ3VkTH)W+tXF82dz>lmg!5lws5R*(Cvg_43(!!nOx=L$*vf6m`(;i0)oC zd%UloTPwKH2Qd>i%SY?U&d+%}`vlBA-S@W6od9vhwGQ1S4uE8)86WcTNG%L= z=g{CpClI^OU_>=kAP2;m1~%(00t^OqXS;7|sXF!N%qxUzNweeCClgf)l)rX?q@WZq z&tGL7zU6D`;rBfG+-nzE#NPIa&J7>Bqj;8%w^s?Oo@$dW=cE?R1$$zS z<3s3KR~{I_>!rqCS0$MGK<2I|7^O0}aC?goxTD&odVmXTv6Ty}vpK=!H|SpF-O<%FHii-e7+r3 z^kzi8QznPg)yxScE7h|Nxi@+zcAvdI4D9JLz$&;zH0gI^1zmQ@7th$zsEIj=Bj+t7&5Ocbdb&2M{9H;BU2Y z@Czp7F(rbq6OWQkp-GeM6t_i!UfoBhbO5;BtPj_PnqpT^t&?ZMg5I3vli;MLQI*^} z)Hh#d#8y=->-A770d2;eb-B+|)sRS#;|ewh7L!Z$DAE8{P^EiXG8lPJo6UY1HW#>h z0cQ}mFNHNg=E0f;bFFP>OsP0?wUx4wUM9^>BJ19*X1D^qqr0bv5W#vx_u2=Lo(^D_1#{u7Cf}IrA((94trb*e z49lRpy84or3@n&@1w#G$&_7-;`vwo{LgIR3c6O(FCC%e~EA@|9t2qO7NWrrwsmo|` z3{GS|1l)j^4WG9xwDZja(%o$n?`&iQllW5&59Y?PRJ+?j@RnVJ<_ii$%PFZ};%Bf@ z-YcGGE74HZ9jHZizNB_BQPU?g%;U%DSEwi4KHVg~Y=@Y>GV{Cu)3uF-7nlR_tbp=0 z=jWY@v6?fc#|{qOfEVtkmo$lp#Sobf!)9-7w8@tTW}Ual`~PMo#9 zY~UrUkedJS6a%s21 z2?K2S)eV&aWdn1UZ*5))a6TkihOvjlcRW;y=)9E*s3Ngg_L@Gwv*SS|+K*g7MQq+q*^d)GEaXpe7u5o`+`ThLxYruTk$nFR0#X^ImTmcT>RX5rYmo5+K2*;@j>xOWf z`tSLNY;UKYCEve1|?VO=$yBS&4tcbnH$vskB?$2eF%+GC}{B52E=H|g`Pq<*mSK7hn7 zcIK*eEr08r9Sf*KtiWb;hrMo=%Q)bze!py1NholGQ4-3e_9LhL`}L1U`wTvC*_<5R z%9WQmt2 z+P?3;BhK4YB!KWP-#xolU>`koC zs3BG(9=K%Uti9sL)6wRw!&XgRqUZ9;I<+rz)NIdgXwlGRre!nFInD`si!3_u_?BBM zoM|u5msr7-Cjsf(H=ly~d3&x|wYnTj4T;a5`t+tI=|eo=EoCBG0EnT&p%1Wb8#DRkGhh72K@8OGQ{nvagu(UK-v?m7ju@r9 z$pMLh;rU;=D%x#~gYiRRs`ViipOvXojBerDo;&s@1vJST1iqleO(it+2f?RrX9waB zJd3&)%_w14EFGEoWgpX{pYRmT-{3PweV4&ffNzjgrKKfM1U!D4DBrs;H&-nSXWpVv zrs+Ou0^&C2i4?PfFB75rIIVWFT?uJ8~&G$&( z=Z;i+Q?67ZY??KWu`%P9Xv&uC9T398ZZbIA-t6%bh{cW@pBFAiH*O8fDZz7i6yT%j zWX5?<(dGDAeyz23EY(|nN;&C{x;hoG3h1I@aH||3Iy=i10#Dy{p8L?~xi0#Cn@T1D z3nr&S-=KTib-ZdPsj`q3{R8)PVjo+VlQ*{HBE$irlz+*Q=0KIx(bJsm0@sftYuemYFtXdvD zR~YGBWXx&0Q>~P%rY=eBrCe9}z^gJBH~Pbc_^_}qnzhiiGx_oH<{ zemF%5GqnsaWVKNfaq!;H%+6CYw+*23Be$tRLld7MV3 zIb@yu@CL(_u5E5H#1N34p1r~cySs71i>%91Vq|-2p*0k636gm%66-w0NgKcm55>=S zLH6GNl0S_efS%De&C0)tQQGYai5rK#hU)U+3lI@t=k`{pR3!epq|KJF$ z#^Piq9g_WTYYrqZg?uz?2sbJ`yAO{!=O8H&>^z%3I;MHFkA%}y{7+0pcO6E(D`u*m+OSoSP;{0E(w4bKZW99A&t;CojWuF<|=OXB8tlC^PNwT z55^kh2-$Q2331=$09~m*&Mv|^jQWz;AWCczh4~6(ErMTwH<4MZpc8Skk0}K9r7j~x z+2Ki!Zve7_vTRC5_!@Cnqry9VE2QZRx!$1d;jj#M1gOZaCOFb?sZ|r5+{ur0I^s2$ zd(}m$R`;oBeNi$DceKjwc#0_z#o=OH{ zF>pU~+J%7k28={CJo-hm-kD@(>L%`0bCq5?;Y|SwSmPgb<_)hj>*)nKjh>hLO_VZP z!5=^0yvxG8XRE9+YiiV)&}!TJ7TOy@Jix_L_yfQ?6O;}6ls4aEuqTtyr?Y?bv?xnM zRN_(hsnS-GSe;$NO;?m}#=DW#{F-jdU~?0UVPouC%pkVxYr=puz^!SISt6kZ)WC?9 zsE__Jov@g9zClEQ2DjQ=Pe@D^BDM&yu{-CA6v8}QnNxkORM=VF8J2QjS1B;#CI)e6 zuoIc0A0H&nfs^QEaD}FvMna>RXL--9-|@x`i^afffYKCLsjR5ZRT9UQnqsCsaWK7K zPHZ$JT+}Nq<-B-$}-*{Nzg5C zdu>dxLvm6VLE=-rgBa%ui_zCBq3`V3pNq99*+WCcCn?)1$v2&B@Dz^(kLq(_gBj}$ zPI<~|=S_zevdU&E3OCQ3a~9k^U2A$#|FJ%=Uf0*~g@4*jZE>iK9yv@lN<6ErazFa4 zwjAn`?Ovg$WuofgxtvYNR`Jr|k*?PJFzCjKHHGtG? z((BTy$#n+~iX{T05vq+tEbqMC-UH5xI9}M9&F9Npl0hK0@-wgjqh`}SGb+u{E$xvR zU4Cl}mC~i2i5BPIP(OB!`M6krhX7Ay-sf9AuE*03O^a%>wN`I1+v|tphEkfY__*Jp zO*)!40?#equ+5ByQ`NVMtqE?o>p@iZuwbPWXVEA=abA0t;5a$=7UJcqxMbRKaGYI1 z?<3yB&VFTuhS#?XF^&@e!hi7V2RVE@FyO?N>d5OHExOaj?+^pVCeqrCCxFSQe{uu( zd*kp{nj^|i#(!tW|Ksf{O{*8R6-v&pIsSIdKkfd%4;c3fhxXKb@ShO1e}U4~^04Um@_%(d?!95~up@CdNZf#+$Fd zor^PRne@z4D~|(!q_VQI9`uaEs&Knr@;N)#8rgB>{0CotltD3STmRqW`{x+atKH}U zRp3PIv`|Ri+^>)XuSE?=f^e7l&1P()Wz)V1rhOMmqn+WDQE_;Bu&3!6ss2fGdg~B5 z5N@7y6lB-<>ubLS_s{iP#d&KzlG1b*bt1HWy$qt6*>HPBhKjDJH>Q(2!>;U_p}qX- zve<4_WMFumV43}M7Wlf;#Rfe&U-UzjOP$+s2;a5ScWa|)(X?T$&IQilb=EY^Ga25f zKf(n|d7z#w=_#DKUt z4m4T8Xp<9Y>CCj!x|BZfmZl_A9?YBSrja*gTt$zkS-ryKcSr2UCu=$?Y#LQ zA~{hrx&`X|JCvH`*0V4W8pP$tTWc zo<{ENHh21@ysCA-QQGp|E>)wAJT!iT5_J{kfg&Wr9|KwH|5&zOrEvG(C1n3DOss%b zIl1qnN+ByM?)WbrWm{M|VYo%zS}oD%;5z4|29*3x^@VIC$f=357e>CV*i>KxEj6R_h4wx1D9iWQP?EHF=+kP^B?M#1Q=n zmc@&UfM2WvY6#-$H(%Cn2VJ`VFSi!KK^cg6ls~c8o|x4zHN!98m%*<*c!1xpn6z=% ze)Ys;Vp;i8M6qFQm3(!V?RA{^j{1B7fX^G~AHLR3_Q0HyCZoAa9o(u$}0hQ4t>NKQyLw#!6ue zoe^@KPZr;1C`R5NM}J}tUZvrFLI;2S5psylSx_ZRnzsw@cLeC2Bn&i?OYh?n!T!j! z{3Yt%R*8K718Th0TJEa)KAyYj%nA%4i6>@nUD_?Yox`_HW;W4?a+m zcl##V9}7#^t_z-V&YHi#@XR{FQjDa4-Cz4U+&W9R_ChR7lFIG)_3N5bas+9T;CEh< zx|}7Naop|;_}+^583okCAI-=g_rR}JWtKr1Q255p-osbve%?nNtdwl4t^J4+3~{(p z{o24GGyr>=rQ*QCf-zn(s(#Auut<0j&NMuA*S{G_8w=S;P4RklT2ohqeUwSz>EiwK4Zhww+NLF&@2Qdhx*J#r{Y3-O z?Z!&T&eiw*PlUu%1f$u?G=D-SS#w*N?;Q?@0taONz#RO&u=TR515M(QJT<-Hy-z;8fFB@oF?P-o{Iog6y**e_A*Z@|2k zxn&nYR1Hwz8Tm&YX#%MkhShjn000%qMUtEq<1{wN6ei%YGn!ap#*1mZz7Z~#jiKKRWY zvo?C6Ua>Htl_1x_!}hs?0v=Z-gl;jlN>G&hn~o=vB>{^|_!VhR_{OUuBFuqAKeP*r zT0Lu2>=v$&Q1NZz776SKyz1MR&as@SkMwt;!Hm3r`U_zF0^1EF`U)9X23l*eM1I@HXmZT4zRa|Hd+s@~=5t+rfbA_IY-$eTrHo-`O)= ze0WezKMrb?*RH*dD=h6ZSIY5d1CdsIXWs2HqEfX_mpQAW`X;xKZouLS{y1Z}-yjts zj&9@su=mzcQFdL}xF9MLA|RcLfV6ajh=8=@&>-F2Fd!lzE#2KM-Q77f4Bg!|Ffj1V zQ?I`I{C?|u|Nj$I2LRXkbc%U)B3xU!=t-{LFazG`I(1bBXmE6H>u=&jYGl$fWX zJDQOMf45haoT^&!JsFJ6c!;OEY02OX*?9&gh%LW-6#D}7Fv`!s(*vQv2xE+w z`v;SEe5|RL*H77~{&Q&|_p8}TM{?ojq8-58KTE+b4 z^D{RWP3A9dE@^)|LdcE;@%5P`8#|&95c=`*>&NfTw_PpZdw#<1GdTDU14T@85u(<` zj#SydSs!xA<=n?ZBQs92GQRgNr;Q#Lvh*zHepENz(fU-(TH5&@Cvv-Ar?Z154|vHs zRm**nY66oMItFJ*Q}_uAD-67PiH^-`wo((>`UD;(DRGF0x38{B z5C?Azwi0#7$~ZtiL1>HfLt^0AkT^qS13P=|!;85w45H7a6}D-yiKmkKUq2P{h1u_& zmUI9BZ=(OA{(2$RW$+NQzew5H&V73Gk%F$HO+M{G~WsfB;r}QB=aO;x#FbIIIYe;{!S@22O zu;(*2ub^c|Y-uaLIgZ6X_hEr3Wuq0ouRpwuC90Tc#!UzM$%V&u9?^*f%re7#_RLG)q?W^kEPr~v4mii;mQ5KQ+if)!&`m?>bPwo15U@LlXtEd0Q1P2sC|!dL2TVkbBEpWu{q z#(q@^N?{XsMu~Yxr<>9Ct+qfj)m9Y3_cnn9_=KUcDeDqIt(i?0-mI>`GquIb0Sj*AIsSrj*~hb3W979IvkaLQqi z9LBy1%(2!(Vm5ES8HXvrjm@+Nd7U)sAP!Ub=?Dc*0V@9?L8^OEjVxbbW!(&qa!!qt zmejsi?zD5`{<{KQe!XL=uPX0c3g#}-jmNC-Vi?}Jf3d&2yLUZnJYBU}Q)%>WUxz5! zuJX&2`sPBr)o}%4e!vcA7<;i+A?a~{yTeY6)``3i`sS|On$6JZQD{A54-h42XUsI^ zR<8`}%bYdz#qE|VX6R2DuceAtv?ojBN59UH-?I`+Mg)@$^3#1j0q(ryyv9A0Bbz-j z!!J0fClln)%~0g!3r)LN29mHsJAIUjX}#Y@0^N9Y{ay+u+!vQHZ&KXt+te#@UPpsd zZ@-X+N4}UDi^qP>x7{mzw88odcGj(pMmIfdT|hFY8MjoCrAT-0YCqsSY|eLJB~d=_|BP`wNXU;5=4iND&g zmLK=g^&d$%=3fs8?8rM}`o^Wl$Bz%qmg|tD6xVz;)3Hk<|C5Gm_0<@g;XsuKr&qQA z{6I~?d>9`uJEy-~8lhA-xnQ#TPd;wdn`Wx;BxQi=twskmgU|94lH^5a9Tn zhn|NS)#gJt32tJJyXl1w{Kuer`O7K`m0woHochO9mRk-cJujj>KFm8SLSr;{#&lAE z&}FAbE4{N>w;Xx}jpyJ-zWPqRA6bLf0Uf+DaNuS!&HCfw->Jl>MMNPgOfDHQ$^}^6$`2I)R~(${$t|HbwN^)M{gQZs;+d;tgfOZ zeR@=R$=M>p96+nttz`OD@ehV=zuP2j);BQVQ3y^Rtb9K3x$ix;@;O_zt*3J-*@+Bv z;nCx4vl}0sM2h&7L2jZ=VvRYNb|smEdKN9&DU`dcz(Mt9jB~)mbq@T19+q*p=T^8? zUrjm+2@bzrHDa!_^dOEod$us!_>R9y4{UgPFO{-hR!{Z9K8O_8?|tBA;Un(pGII{y z@q4Mm9~F)hIrgz^zi&jveVq(=7t(%OFm6o^q9i`oaydZKJ)!G-1+M8}7?vDp^|@I` z4TEp~Df*QX%e#y3d9;?j_RdH-RrzYrx%xM5W*I@8xYszc1ww+2 zy@eYr_+B8GvT5&KcL3A5p{gZ)n?uPrS$*7QPeMxiyIv0}YIKheOuV=!{n(`cZoVEm z>MlSBKXxqb(E7Z^qt5~?${#p2{(fEllHy2P zT~@DkcJo+u9_NeLc}K@F?8y7@th?eEXziwWk8o$_c&b{ky***a9WdpL*{tG0c*o<3 z+7%QW-tTEuSfRL#OX`3NAgHDbXECh`QV_R!cN%*jdQAn;`ObTl^fjxqGy+ zOMSfOH)^gn_tUUy5=WdVp=cJ@TT%Jx>fcSyv^NA5z5Wf4tlGQ6r7Wj(^NO z#b1`6m)oP^^9l?OHZ9fp@+d`2`#kqgCg%vSDITX;#>$18xf+ybs!>j5VBXQ*-r$LY z$cP5Jub6YP^I1&(S+T*7# z*vR7Y@=E~aW9>J~6J!~6CtOc}6&Rj(*D}u-KvN8I(M-`=1KmUH1}czonnWaLWge==wIgCBaxYGyO#!6)W_&&EH9NrB~@L&lLF=xSf=W z#jkec@>Fz>>I0)xMYB%pZ?9kKinKsux9)xUdUD4#@n!7Ad_|#{QnH`toI%wfyS4RJbnk)s@DGshSWj?JNRXk3o+w{C_NFk-g)(DZuDAxLX~6t*lT&0W)SAmd|tq>s=FEwWKfehx!MeUGk=q4!p2KC`ffNV_Nl~^;qNt{ zJI@BD&h6-^0|0l=xJz(!2R@_gUezHrs`tSQeR^20PkkJ?T-61GV#_s1dzNL*-o1&Q zVpAqHn00XmyNeS^+H1_xNx@m2m-kZE;hau%{&nL74`=t07nxtae0|D1<#=^sfCjx- z)qTihQm%7`gh?62lwD67AK0AK)3Wz*13_91eF&SEx%xeK*?iIxj=R#XUZL6*N8>fW za*;BuYXYn8vJnOj^4tPH_eB=)3Fc%Qvy`TUf>0brl5wOfWEi~XU_#g(|w`EHZk;<=K8TM!<8rGdF zq!Da2wUKV9ey9lG?FeuW+mZUv{_Sd1askXI@4I*x`yNib(^Ws&sdqL9+n1=8tVNvQ zQ7^bSlzMQjwk|`PsuU_J@!7%R3lJ&c2adFZ@99XYYAPKHpYSgXhJ?}*<8#i~C6|~M z4!Yy2gH(>DSE6G1XVwr*OU0UGs}8v@G*fIh)c7`w&Ref<@_~oXS!oEPX1?ii zSFtlp%j`sKih;Yls{3j zyvD)J?~g$b-Y#0(=g_8Lrll0wmcAt}q(9rYfv(y%PCXY&f^k~6*_7=VgW5KPNkh>6 zzMF@TNn-TzS1dIV^pSk1I^vvG$Z%3$1UK8}*WAJ|ajKp+i4_`6IlaZs{un$nShmh_ zb51x30cMfaJR#EEHHYy_kH%%CS5Jy%h~jcx5L}V&ZN?pcFqK0};OU z-LK4CyQH-<7g?V|2CN{8M69+ce_=Pn(huUlFYlL6m+jKqYF|GCd1Q*&JB{6zssAT| z{De5A2H%}vN-c5!_cBUx^_wl@OeXoaG6DY(;Ly_nGFAJ^yXUlsIZ>8R;S`MD*W zwVU&|P}12TD&s{5f~ym)ImUJFvODo#fI=wPBfJI(+Ii-*i~!b)g_~!zcv1m4TC?xS zWzajGb`%K3Dy8e3yLW)X4X?tg(B=f&Ue>(l1|O7&>zZ&fe0VhvMOv6q2qE;lue9#t zY?F_3>#HYDf)D#prxrufD;M{QOVQ_{3*QrBS`~kL2NI#(^utsOr%w+|==NL%V?d?4 zU4dpcx$@4v6i(^cCr>Avxb9OJuIJ+_PXlgRHj%8hm5C+~xSvBXWU@Sk&DFpzu}O2b z7_&T+EwPV|#c``N$@)LhywgTo63Ydgv<`O`NwZ^=3`KCBlUFc&dgfPKqU``S=Y$pA zR6pfXmh@gjw|0X>W@md0KPJH6Na@l;T;sYuW=VOXu5joWdTg~dQs&e2hFXP={`&70 zB8>7;;^qyq@tJI`VxE6<>bSpVqp3!SlJ{rc4HRc=((oZvB&bpB9^c{`Ui)P zbeohis~zWBtK)S$zh3wQ<5Ly*J~Zp|-`6So1DQ4gHz^j^u40Yu1o4f&*6*4Sq;jO> zxT=+wR6P^-Is|#Sk>jaG|b;GdY zt&T2LoIjNZ-wQ&aIcQfI_R;7+I&KMO{GevaLIMpI$R+xI2Pf7&Y%tzq`Aykxu<)J5 z(osevI{XL##)#1q03D!A{B9u!49i^QBU5|!-b(FXt4>6v}`zLP~5lsEwqV*cqQ*Cx1sJtD(Ej!((0ql;5<&hcn@5LG^SfE)P z(v=3%LGGsO$#V0Dco*-;c%KT{y(jmw7qVmac6?nxS}^V-p1~07_|lW_mM3;WbX0q* z(R*QzkvVC$#+qt~a6forC}^dxCQ_zAfq6_ZB4s+EZ9nLnY5bN%t8-7lOH&HzEPu9e zSFGpDxy?o?*!DqsV z+NZcGm|<|`9f(hSqB6E=3?gWz?O*xoDp_&5ByOQHY{y=m=%;Kd8G5oHWTA=gLUye| zQ3yF|=k~q~K|6LMwdlpJJ}f=_P;)c9@NqM4+Ddq+eQ^rcZ?;hC!c(ne2dXQFB9Bb| z=^kQ?rp_FfKgPp``#=9sK%Qt^c(#nRq#_Ln+W7&|szPr2I_vQgHk(La?az_*fi)*3 zy6X?c2maU z7Miq6;9W`qe>MgA@bol(J|z?Au`8jMgqRtQAyLi6n5M+Z%bvYYIY9%8=oMST*1n?? zBgL#qn*$*R{u0OfuO=#ZqeFC3g>z(@b7UwbH-~7M*KrNzqG><|T0_*sj&E~@2rDD$ z*Y#ZoqC+)z_Bf_`Nht~1F6yHCUX?|spTtGQU7*#lM9lK(Y;-grNW4CL`W{`0~pRi4; z`;vdW^r7?}?+}vxP??NW?cQSOdoeK{8=vM)ih1CU@I3^ir(4=fE1e4o8{94jJLd% zUshwj`Qu;x@yqwc(Mdm(UjQhUS?^WoIW6zUwl9=ar!`mZ#sZVNQB>Ykz!^!bKE{IwuIU3rL%mLg#ZAGe3>#i zo_^#RQ@QJ$6JQrE^)!~`!Q@D0GwK7qIISz(ouTJL8QlZ^u!li6-^2O(1~^id#}mJ0 zo}C@3T$8H#Y0W6G>d*<3n0?-EK84|bKN-@4Z?&MZY(1)fGr2?f~Pgv zva$*;-kNL&7vJu~_pba)#eY8I$1l-$I_CS2U%wE}#`^uf4jPL75McjS!eEdA!=cHv zbM*bwXx8`uO%Hx%>iOCR%b|Hsz8B4l1eS5i{A`1@OF_RW_Ybjg@W{z`10u%AfA5pE z31XaG^!5r^m&Em)ljpcza0`+nySo~i6_lu2SG}dRo~e~0crHb=Q0RT-8IEN&YSdU; zCquxvpS42syTJFnF!5>xJhO;wL}}msGpK%aw)op8YK1Ew)JRXCcp}t6XBNAt6mDEs z_@4OxZGu0)QT)hDRujWpKj@d?^8fd-CF&`>s}irq9{%3de}>zy-`BuHG*@-jlw$S% zMdBJYL^AiI)(O*i#~<<)V|xYSFpkG?P@FTia+gDaU{;FvxUd`1;!ZlNi=1+Hg zX>^KAaoo86b_FhG>vWqlst@|>97iXwZmv$l%*=cWZC1NXRyzDk2W^6X7LE}vobAVN zzi8lJtnx!bUy3(xCauq$asPc_|MfVi5AK?Z=zAXU;Yo0y(UILEc4Ci zF8}}T@Q<$l-TEX+-Wo;qyUz5K$fwh??+PbS@3e~uL$1zmuMNqo=UyB}f@z_i0ZR6V zQdwGJ&4?B36WcKiM)vLK)djiEA@YxyOEio8&fMGO=DE%b)V`%~f2D@L!ZHWIKw86x zk=Z2z6>s7)=J|)y=Rxe-5kvwb=qbrXD{XTE4@Eity{~AZIu&;>xnh|=Jp4uHUb||k z87|clje&~TVy%nAsXO_V8zHjwH?xX-7O&I9ZDKZ=>C)Lx1%`u?-@295wS~8WksNX9U%x<_QRHOy78>H%9!YLZOQJ z3<|(y`g-kMkx15rV}Ss>G7w(5R;<+XK!{VrM*KcCp^(Bi8!&fksD z^8WF6gXQ<)@)*B%6d;tEVNx(U*Q)ZsAb(CZ19%O|Gc?MQKuMIDFb?CCR>!F1C4j%9 zbJcWP*`Tq$aoTsC6jKT7I97Fp(MS;MN=~lmw)0?N<5&W>EHDb@C0%Qz>p8euRg@pF z&m8wpO6L3fJ;Zf}SUYUNn6#Z#Vjx7Xt+ikMmkaq@Uh69)4Nb&B}uP-WL(v;g@Xcy2tt!*fKj7_lqMV!*)jA4d9 z%ekD8i0IsX`;2ba7DpYG?M|cMhM)Jljb0LutDz11TSWiW{q@lUd_k0E1PZqI`9lBV z$Cj$e7Jjim0#aB0n^RVz7qicz_s@3oR!nSs!&6Ng^ZqSOlI;j`E*b0+tK0ADd@XQR)zwZ2krmq(9`qqVoYIlfj4D=$sT{g_JXAWQZ2VZ*&QRZY{5Z~!^lkTx(8wO_~8EMsx z&z$&r7~#I@Z#2sub$gN)T8wnQOJ?&i_E%3c2-mNJEgAR$U;hnYZF>XL&}5=eWfE7u)2(r1%7!MiqBdrKE)axeY&B83 z*i>*JJAlo(m`|f%r|-ajfxqK6V$gNm+U>};Hk;$XqXR@JJk*rk45?CXgxp?3$7(Gp zWopE$-FYOz+ZpbQ{VK%8KO)>eUe9Y+;}cF<@hRS?~uvX+{KlSk$4 z?Xq*L%1G(DzzsyrLVJ>aJ|7p`NuQ*3a$Z78Tuv=OHrTQ7{iV#MRX^*U0u7CcL~Ty~ zRKECN{gkn*ZUB|^x#`6oI4#u4HafhUVf^BLvBe=`@JZH7I!ZIkm!HfnM)WDEbGDi- zEgU&>q8oSjc~19uPT9EWM8?R#nb^yhQKai)C+RMBrP~T+2iKch;c}V`pfBBbJ|4ub|xlel3)s3n82+?J1dfn zl_~T_(W2ovNveCXa8;Sn-XH~4go>Q5LOtf8?c1bkXB8W6;1@X6;`}B>@IP%kP z?55eDLw=1)uaUgQs2v6vwW{pGSRT2vDFix3gR?@m*S4+SN#v;dQ@dxzo_o8J&3hg7 z0Rq6f`@`8jCyZ)Y?~$d2yigj3PT6Ubc*W@;GeWAp)uvT;bQ|s*6)4JFZun$%b=AYP?=D=BT8!;D*i zxI1sLXZ6Li0c4C9KJdxhET+sL*gl|*i?JY0 z%J1xNUqPqyD2#SSu!dC;jeDI#Ob$ka!z`Uq-NU#wl+uyIvo{-n847Fl_={Qd}Qor-n|lmgG;WU1=?y&*O2 z+P5|mkGWm@-X$gSD-qRJTi($)I3+6$vhc3u7s)J)TGxa~&^p|hSMNZ^ci%%)_h)q< zgtXLvn7- zeFw)%Uf3Ck&B+I*j9VCeCzTU2emD{qn8Z_KQM)^mEXfZ}Gbp|;&U6u6Mel|MIbF#l z?KI%KYV(9ny&{aJ#8KQE-9Dh0(Obw0G$J%;7C+%6b}YKYRh(C&R*}k|bK+y`J~s>j zkuKu77)~^JekIE^T-fniK(zuhjf3a&fH)V|S|3cHb9v=Po|y3^Oa6e$Nm9q&Xz!f{ z=Xc82c)YSE>TxisbJ;UdSsuJ+;{TFbdX2nTMvo8PSg|b-}P?1KPXMsY!)R-F2A3Pg|#N$ z{}oA}Qu^%G^Imw6d7HcEwR65~)PTd&q!(w)x9m>otXQL8U`p5akz?WxDp@&OslBZL z9@?zbmvPJlkI!A7G4QHv>{rWngR71>%CQvv9GPmx0{4m#fV&sl!@et|LZa=Y^*D11 z%|fUfQVNc)`R29n1y?ESWN!TW_NVhEvb4j>p^-)#Fx$5|$`(+AJ35xmit8P_J5$c} zvD?k$@e0M9$(QSb(EIzg>1ittTj8g)XE(lnQ6`*Gk#;GhffWjA7P2^W^9bTec~(}X z!dvoPVo5U)GuX^gpGv<|(s)^0;(IGTZl4*#$1e*<7XWU}KyMc&tnl#2Nch^{oVTX0 z;*i;eR93!*tk2SfJPjO# zP3pXYQLf+@{~Z9~);W4$8P8R7cPcbQGp)F>IP9BC51 zf){IwbM=c7>7k6D{jK?W$4NO8sW8Vw^?9 z!v<1Si-S2oF^AOKF9Ogt?CV}4c#gta*V&ZMdlQlzi>*34u%^}L_L0=C(n=|5DGt9k zUu{omqB+`lehOH(dq4o4i*&b`F7Kx8`nSyXwJ6fcT{?#-k1Xe}zOF{=0hT76z5{UW ziRF&^%W0U++C~v4rP!#jW%XsBVcztu24n3V+k%#lraqOq$<&gOtw`??Ko}vO(rGmZ3 zEF-#2y^ZbBZNf*p-SsdvosAL*=B%YXaZ{WprY5lOTxaUhVO=q!-e_DzY-)~xx;-!^ zUm{Qne||Vb(v?X!;b_flwn;)d-sn*wyJEs8Q94>i_h*;1XC3j~?4I$w_ye{51pgLv zE8weS_8G%3x4#a`*T`O(;tRv@?e(+w0(P{wdF=vLky?=k^Ti$;7O)kxr9QctR!!>3 znL{(;twkUtBHQ$6>9teFv@K35e>_y`XjuL^jPID%y04QP?^2Oty^4#oO?7h!D2lxz z+H!W)qtvuKQD+gly*`?SGB`1Jn44?om)*JA{8rD(?RZfbRR{fHcDB2p3?GMr4es0B z>*LV+)rHecqwc{&!P7pOs*+5pYU!;EvCW}v);Qq&-fG-)eIq=^vCbi@t>M7CH0}Mn zs2#0bdGB))7BS($nPDTzRRV@Mu-R3q_4C``CK-GR1`)#7%c6sd!SOf@!67T z%;#YN-q2|+m!3sy6%yGYe{eR4cACa0?8PGe;k^PqA3DcAH`H5Eb?KzWP{zvYM+1|V zc@n{R1LN0Ta$)7`OP;3U9(8JCYKp6~#!y8DtIih=Rw_>)r`DJ0VQg)xPtI`QoTS_q z3q(AP1Q)%weHn|~RGqAv4VEm5G0R9c)5xMed4z%((1Zsp3UDl|r5P2S>$qHK1++pI zi0zM5=6L)fRZ|TTs`6hCeW>S|!Fk;poVRUb`6Ms+(x(Wz$U9pUIm;3$c(**f>7P?Y zJM8fm{jN!?>EtNJ=@hjj;ZvdWV(8_0c;GJ~<&Tfn4oGv&<623i!?eHV3&7MoN+z->7Z+h9n+j_Fn2zNLC^h)Mu%ksQn!I`pNr7dOwU`1n-~^{D+CaOPMVczOCI->W!rRy zLQGUWY*JC7HRG{Mo@<=8yNiHTf-Xrh92vRVT8jj%o!=r1`g?e;PRTI-rFlJxr9@Sq z@cTbpfR~x{lET!?C;Z>44^x4kjAlF)EPN_CQyt7BIStaPrZ@{S=yEgX#2gw7T`r@q z4^Pw>Y##JETizw2yoJDAPsplv--*T4qU6KgHIgdFb z59|mTMr9R0Vc*xv5KoIrEetnMD|_87@dcwiBB^|KSrVNozp_%vBJDy7e+Wi(@0DV{ zsNGm}ZgK6Pd9|@C7FuqtWrT!qt4g@jd806D*Qn~1wuQW%LPY$E$CJF;%J%JLQ8==V~q~faA7OeZ<-W`tOS^!Ml~`Esx>$aXB=d@+t~7 zJ3ygB+hHLSA5*O3nLG8xv8&WqNSZ-hJ`_rAR88oU+&>iZA{`*Id>zfd&0ezAxq-dG ztFvIo+92+P2lmz|811eu$SP`YxSn*PO^t?-q;ja_6&Qc-w1vuM0!FE2C zF8?0pa9IF9;E@5$myjFOds@NlXj5p-Ow;%QG^IEV@L)*dRHE_smynWCSV&irp|LQz zX|kO+v!j+Bwz!zzIe8%+&n7M+$cHt=>>yCz|Cqc$K8#bc*MBuKHui;;oQrW5Re5$q zev>ACUUTz1NVm)uz*}N-qcS}Ab7s(hfhM9rn(!uPXH z;Y}E^TMEgODr2$Qa=uAD+8%pZnLPzkphGEZH~P%QTRU^Fg{ke+^Bcy^I6{VGUL_M6 zn!b1*S+i^Z0_aVf6`asJQNJOhobKX;9l^@xlvmlg+Cw@5NjGZrSp+JFRf8H5RB7M_ zlJEtrU(nh#^;OcMF*#43E@-gIAtM^{S;R8f-0LL8Ir8=Ms%A7!`z z+~ti*&pVBtIcx@m&I=kK7s);QF`53;S~7*lQ-{hm6TJUi`pZ~en3(UCj(tT*isrMi zs2S<1w6y*E+%KfdlQfi9R!vKz*B_G@u4j{oRWc5>8>pKq)ptH2m$2#c1977!kLGo0 z(w2L_pL1$#LfPl_m^3$t-5H9;vOR}fSLe1&fOstfEa#%t8-%DKhe5m{pVy;KQWlDC zVrktto;E_yj84<>?q|Y}$(baj4DZQ7Kbd&D#SB=AlGzPSv_Nia<7>| z8V`va7`xg*gO#IO)4IC-_tLH}pt$TXbDUS!RWjdyl7u$pa_=tI(Uw##kHNt5 zK?y7*(+tccYqDu-R8dSNHL9))%+Zp!8M?QB?jA(;BneaPhpC*EnKoy(4 zAM$gWqhbA+blVyQ#7>csp`-8<9wEvW5x3SCg;%OWGTnP>MM z^2%p5sNEv-A0Tm*oETsCK96RJUH z?Rz!3aCrJOsphkv&DIuIhRm)c-^b5<$%-!YZ=U?6OekiJ^RaG8y-f18c~(;Bc?%qV zdNHLuQ~Nj0ljcrmVUb7l`VRGEkaKbTJ_g@#!C;y`@gI=y&1uTr%?HwqA81O;J;aj6 z3$@&iAOhBhufTWvkFlxfnJGgOKzl*G5WSKQwl=tOE>>kQHYFGj3fe3JTY6yP%>$hv0x zXY~cCFAn$(?ucA1D!z5JEYYFg^~xMStGTkFvolZw#l=Qp^7Ca6SvSa-j}Lw2V5Oxa zD$v9D8xQ8Jg5$xegEYNJSYSCIi8QqS!|Ukh5Qg!j<81cl;@feKSI&@seN#NU2gpWcoo;c zOG|*n#D~A%^fFUviO9QYd(hYH>(?{lT$QljKrGUrOAYj$#P`7If zoGF2d$M{9ypdw;3(YrNO;O0mecs3%|I79JMZiaxAj#&5&r;^;~U$W|7%LD)X37RCl zgznqf-TqVc{Lh}AFcP~7d>;nu{mZL;F?87nU ztJ6)2sYw*o)vn;N4u5RDgjK?yHKG9*?*AdH|1+}s=@UKP!+$Hx{jA%cN4E|aB9cD3 zSg6teFhCJv-h8H${vD0(`ub)!t)7va;*miVcR$6!N* zc=lW_>DZgqC4rx&%8#*WgCsg48*k$(hWp#?4ou|S;~9heBUIn_z@8NkUw8%!|H=S}BO-5X@z?S+CYS9bYX(ydaTOdcREc zJoX{;vw(l~DNpI1UMraI0e?rgbjBY$+e4-#Gks0R${$u%z}L)Y$w_=yCz8cMwCp4$ zik8Kdq;hA*R#y(M@ca8*wj>qOIYp&+U~*&FITZe@<$L-8SV;py$zr-}GS@WX!WO`9 zNyIYDW0YcI3y4w96aePRhtF!*S<7^1b4eAXK(+r$t$7mAuXZfM&zgj^oUgA!R zdalo&^gyL0>ruw$F;z)iuT*!n&T{#kn->u(WH<7 z3+Bm5u-_zCPOU@XCzg*;2;eL@CS{GEJtQ8r)2sb{SSqov!eT*>;nno-(WDnHktPcX z#;?xQ`W%T*!LYY53na{LcwyKv;T+iqj~opg=KXUkfHa8;iIr(tCPdFoJV}8CUAk_TymUJiK(-PvFQWjv98#B@qFttai$anuY71( zU^~d~W=+im^pzi7zr&_pNPS$rP)x%e7m!DD7JHi0SSfPYa82!y5cIhEwl;es({BgE zKK7Qv(8Gg~5dY%Q<}3Ng=;(A$-kJRS38ZqiGcVT% zlM2c<7f_TICQgFnjV{9GQqZZ4vc!tLMLsVkgONOfr&15adRR(+(fKD*f|x>ah0_6d7!z!=!$fl= zgJQ~V4eRM=wU9!&DqNhk z74ehO`*qU(VX-M+c+ND{#m9p3-$wJ=m1)sKOi27%=-P<$SR-7^vy?G&x$%y1J)sC4 zm{wrg2oX>GE zRt&a8*Y{>zk`ZVNzuC^&F(rZX1dJat1=G|S=75mNdUfFCyp+Ts*UV0GO#a@ zN{4bVTJRn73_IwSH1XuUBK~58V$SWXCW~w68~8B3;xAyckns9*Pa;%Fi%r#RXEuF; zDg-0POd^Wi#M1ad)z;wi%q}q_OJv#FfGX3$7)=;Q`Q9ncyUm$~#=yq@@jVolhR9mW z`FaVLz$wug_)#|;=}eKzm)WLn<=4Rh&nW*5F8K5&1@5iR#oN*UTiI|_w7Mk|e7g5! za;s8LX83)ARz>v-`X){Q3!Mp$4@H^c^=N6&rv>Olzat#-?5Vg&L*0r=Q1&@(=yy0$ z{1Zn^hEnYCRcaeJZYvzdHts^XqXCmWo;R6VH)Jk05-ybncjB6S@?`mtfe}Jp6)Aow z?q=(UXcF3I5^nufTWes;i9>J(1s*8Zu#&$gUQOiHfTNq+tz|NaGgVRXal!Qp{FI=b zg2w(N!L#GD1G!X#>J#eg7p)HUH%65&7r{*|xpkFU`DJ7Ua2!%!+iK%%?-&@yt;v2! zHok&lzB3~6Csw+rZF2M>QTfoGl5}QyB0#&$w<%6NxeIjJH~ZEtRB@%c6ElKR39N8t|q}g>!?$2L1pli^`5{-&r*S>o%)=!sL&!`r&6} z(#tt!1}n}(q}?iCHx@0XlvXpK5zAGQ1h1((eUN30#RbQY5RNqyFXEJ(6nx|CIj(Wt z5RXg!R7tWnE^-lIC@_)Cm$_n6oSSz6Q)}iRo~Ur25@(35r5T@8sB|2bi@Inc zq#iC#mCxDXG;U2a>64KSo))3qW*YgBr9`J}GLb(GQY(Uvs1q7P+7+yL=t`B0ui9DH zU5TRZhNldggI!@sA=XU3{8QL$&uL~P3~w`Lstjt~DFqCGH`fUFd!QLh|F(8&Ij0`J zo*LN&eZu@Tg1_c?Ft7vAX0ds%WH{9rKO^eE5SPu`3?_RrOrw$u%JTJNU$-=)WKhWc z7^-!slFj|tDsN$-t>m(Qtjz~rx$-`+w0Mtvr}z}je(Nj_ayH~2;krM?TWKE!d((G$ z>BZf|041|~o2Cg=fu0pT%0Liu%&1#s#QvtV9&^{DZWvsARaQSIMzU9=7dc0Zu7%*#nDwD5`JL3;+z2hX=;z!QJXLG*a%c7l0b?FkYOG1&nd zxwoHFPx=*(tMf$G^V9NgjN;N9RcTE-YKH6+?|V#p1-7;`}Iqm#*RET$?*+7$u?K)J#jdJt!u_F!x9Y{!KwU`iP!(IFP3Z{ zOU1rkwpEgD{3!rvuzSU(FqNnY8sq=AbnvDBmKi5vc+Fu(kQ)!M@B8wS#LW4*VxZMB zf7nuXCe3nGMZOe%Kb_SBHnXMLr9FNX<1IEYyZQgw-);8GV+L80)g$l8|eSG=>aHsA)6Xs4Hbp z_xov$#mH-+FWMEQQ&yVowgr(Eh+OqW(=ky4#+t2jZjbgf7%JnpcfTSjpDQhyZr~Z~ zHaOFlV=fpCqNqCB&rIwsWmRfc$*5bp!1oG^&n@${1sb_|Ir0$-BKHC0;TxN%xv$J| z1F6bO5@IIVfqWI8%BGcPFf8P|_Wloh-x=2AwzR!Puz=VQL6D+|2uP7C9YK0;p@WLF zKxm;?0TD%tO7FdfB=p`C0qHdaLKUSYbO^nC!QI?|=RN2Adav(#|0Q{n=UJIGGi&C) zXVzLVbM#hfHJxVMDC~8Z&OAsemyk={a7}yl5GgaLQ}QjPX1UaVjiz=x+*3n0Gl#;B z`yokPS^ls)x^%WJL5l8Fuu#mmlgg@o^FGWX8y?*vI-)Dy`M2MN38~%fZ+ZEAtJr1l zOf?PKIeK9sze44MiHC7HW04BC$TowE)p<6eNdpPyu3h&#lRZo` zu>MBh?huI@>c|?hOp1CR3-^b1eqbo#ChvOFcm@hz%5Dj0&)Ir&u~a1I6Lo8d{w>0o zlS)R(L-7(RLaQ@+f3l_D7n;l0rK7It?6p*wWx+05&jVIS72arHVX^=`DyyoMM6Bb9 zN^Fz?x(Ua)z2w#&%d2Ug>NE&;HF(orDcHQl?k8~tcaSZW(@y=5bERr*T;EPz^@ zKE@%_q9N-Gp*TXPw%mY9U!U+yJE0iEMRSGa?_GrQ$xWU6GDdf~=pBOhVV@|e9k9^^gn=L9Qr7B>DG=b=e{q-kv-lWqLxw~+l?DA|G1zQpSzG2jr>GCTrcA)b!(It;} z07J>w8aS{2xfg(GGLEsU54xkEHj7@`qy)4fJ}5WO1g0}>2N2YIfC zo4I+s#nb<&tn0mg9W=5;Qc0R9EYghCx22dqTHO2tQxl~*4ERooAFD$*lAv|#C)3x* zqW852VHOP0P&ei{Y>K==a}_nj%*EToidc_6D!U3M847Pw)ETIKtO@xTPJTdLw zQc0hJIE7R30LkrPp*BJyO(Dwjk1ez+wL;s0%8cgPF`5-6QthQ9{K-uYhGZi&0$*#b4)(35;61mm%xgcN=jIVJ#OF3Qr{dgoqUPW2q$A?rpG~d z^i1^ikQFAcEE*ioMOR3b7=2&L)cLeLB7QaAsaRGbw70D?D(idLg?57~Ce>o(=NM>I zY_dZ8SAf4TlG+0VO4m<}?sQQL{}4wGWTrRDiFmcn99Gp@n?C#5NMcy#?-1?pR~PQ% z7|J@yuw&txI?DzMWqyO4)j!TaYq{zGC#jAZvQJQvDg*JyJ%q ztH$BQ{HPhrF%u3e+fR8{9a=%_r@xITeU{rWgF1PKjcRiU1y(YT{|3UA#fL#MSrY*5 z6_e-(TyUlE;mLJi2hz@=-K!uc^3De#QS=bK1g_%?0{42iJWLTy3Blz2a_U zuj0&{MnlP-t9iYT0doiTUL(PY3HSrNZ_i+ClXiIyYnrU1)dPYXSW)xoedUgY0s#N0 zgQ1J!*2g#~ZJG1r#AMSHAJWSN9c3n*DCD%DXCLnw`ti@K1qrVUrV z|Ikx*rI6qEn@vs4)$jhMB0a=Z^$b-@O>yT6_zD zLPJwB4V$$88{TQ9QdN(Xl%<_i1poWRt0sI(DZ z>C+7%A%`3>Tp+Tdj~-UG#8pVWM+C=|9Ejt9KMFZqJo4Z{+EWLPkN8~1uco<7fc_fu z#vTuw@g)ZzXg#n_?I|owRS2omV{lOoHy8f1FZG`;|AJV~zNn8<5P@FFHb6YKOE9;j(qC--aHpi6JcYZ@7%zTW!hy$=oD zNcKq|TwWxDYxZwm?@tOM@U}NTDQpzd;&eB=3S|#TmX&MIY*NY73F>4~a}AMaZA|zL zEVMoqNPRS$z}*-LJ47=UhB-KnCfJvyzw{SSk!kGWBA{5L(#$1LEpk@G<9<+QSFYP4 zqM8%@IfM@R#p08mAstCG`_B;iALM&JTb*^Vk=Ml=r;b_P1=@Gfv2cQ^dfRy-b|iBD zCa2i3=ZiimB60^7IlbFIK_JJ1i9cm#B!TND%jZyABRLXz{foDf)xYUp58h@>@jY@| zBkghDOTy%>BbkeTUojHJb>zOScAfoRjyocGOY71@bBz1fPkvoZ@s2BTV0Q98e;UuM z5aI1CO}FQNduiGiqUt!VDCK(EaZ&wpY~D}L=ZW>_Z8{&#IlT7?tZKHV_K9qMs(J8! zN~i_VX`udtH`W-{*=i|w1bi%j#TPjUd+ob_N9o+M7%sDod1(9060G;LKH$zGAT7`% zzjM^2jxH*{&+U%^dw)Ib9k?l!Ao0_Ozx*qIT+qWU@8#^$f4hmFCG@9C|MRo@E3~v0 z4_yUMs&@Nx+W(%O-(QvCg0KId+8w2B(q)dxtd9JOnNX1?u~g?w;{k_mgI{^I8JLpcKb=!iI& zBe((bz$Qc1YKTp4hMklzh|)@q19$BydI?yM>EaVJyi*8`&7z`@uE1hNeRtLTWOeUU z5zX$2bjM=jn89j|@_bx7Bu#%Q8B4@i*a~R*(#?0I&f=ss4M1h@i~Hf{-`O^Z6;lmB zNBoD626Y*WchJ(HGN^t?1{tM<^=y$l<6tCT7;{qwRA2k*fSTtT#dm)d3F?Gs&b zF7nn2+t$s8kc9HYGD36Y?ibypt8h-;e2??@Y%EOR`x{ZopC7xy)VTVhgF!(S$2~aC zFTm0cOAJ(FOOARy@>@R$Fd*UC=X)9H`hK$uuX8U}@8&wNx%N>DX8VJ|sWXo;X>u#`^Rij7=Ne`^KlnuR>xKlcZ}E{T!h3_IyR*RAr$6S7LUfs6G{tZ@pySzT<)z$=a+) zV%pr=3?*k&hFjRyK#r-6KZ8-hf;^`+;8T~uE69p4v6Xb#2_-6*abX!Qi$OYEXy`g> z(&QRHc&^9KH8f)th%gtkzrAr!M^Vi=?`abHEgX_vukN%bXj&02^ybqD=R_;YEB;`- z&PI%h2wi(Zx}?cS-x-Dl^=7x+ghp}kUR$Ckof#i=O=sZAe#qC^M^)3oo6iq*(*%C7 z28A`&%7&@|qAe0B1U4QI9r8&=^g1daUJ92_kQUT*v8AWt9n;Sw`qeuif> zkEe7EpaxF0j&Q9ZOu0`13kp#Fc(B9m8_Wj3w>|dlB)6`?^;`?}Jrd5duq|MX(&>%h ztAFSyu2l~_ol9%?b6pdR1-H3^Zv9iPqk62zhDS|eW(<9A9Q?|)+L%q*SifffS-iuC zjs40n>k^(dKUfYHP1!9*WnG=Jw5?@8>VAt^UF^-b`so-|V+o)9Pud-0ORh4ECL`%f z%lpl~9nh#%Z3h9OI|PS35hZcs%Jr zI$VdfaN>ETf=dUI?fV!S#+<3)8J7kAd`&|K0wWNgv+Frr)3m-?k@KL@S6K_586>Em z;`sty)+;IzLesE4CyzbY&@eCEY{@qFN`+7UA$fMYV~TsQOuDtC^l^*S)X>YP&;WcR zmq{G|)WW6Cf=JuNR-_HySgfLdkKR@s&^5@oaCgb#T9uN=rI!LnCG;cukj8($eEpws z$T?beNrJoW38ouWl5i^Ur&p-8lxota%hlx{v}GXoZoW@PMFvYqZui3tN_rc%#Y||J zMM>{#25AeSe~>s$9S)-fhFOJ`YCBAG>={0?@#wj}!NS_S#Pc~;pzNHvex?m7B(9k* z2QHFQ*tC(|)?s+a23;MUW$$TfjnAv^6l-^GmsMuybcA?zQd5;XOL9X%ML6!s?3?|) zt^(byP>=WHCHnh?Iv*BM!WZH?5=fA#ydjbCeU% z+gG~Sc(s{Bqw94BF~8Gd)Zd0(fL@=s`UFf4nuUW4KsyfW6IbR3)!=V&)uNzsq0D{K zZGTh6wPp3OLGDgrC^rUa)*ds^DGMD`H|@Vy8D_LrqZG+Ok#N%LUdDrCmMVCr!&Qz1 z^?GOVWI|VNd-D{-6E1|5wZlh}<2Qcimfro%E%A$`^V?^!R!znqa!XD|LdiB8VKPDb^1)M)===VzFfvAWvbdtEq+ zJcG5MbZa$x{rfFaB@CS%bc{9jNyT?d77ks09jW#nA)rIJHE1)tn)KP5>mAMNr6g|C zOsV6HRQXO1a{r*fVt%K%`frfOvu?mk0gG%xCp&mU`MO2u& zu4Pa6dgyVhM~9dG#5bYmzU6xsHhtddTRc~GeA@_I4+zz{hqYV=XT^)EmDmgkUdhXtEo_27<-kbfYU#zn0pS;ZtG+I??s4|TCcfQE)&JVtb zS_8zTRAYTRsQ@Hj>5Zdc`K{#(|imdCy$d znI6hSLV<13J=Gp#^TojS2La@KN?CY>)A-(d-aY5LlDubfnOFiW^#?jhQojQ>-fibE zFP54c?{PHr-c*+WfTIojj7%~=r<#aPe6K0TPQ_por=~!qWqir-NQ+5!}N6$(dQR8m~@f@TemYsTX{el$%U4Y5GX9zk-+D?tU?I5 zSHnu3Uan+ztzW7=K#QU88D2rI0s%x$t|%)>g{XjSZ#trl?Rslwu?ayTaDK2-3uV-a zi16F9x^=_MQ}}A2Mga^ETf=FX4YT5^wu%@nKuTcdwNk~c?eB@ymL4!3$i1J4}U4(xD!QBgZ_HZ9M&11;@C4UVOdqI%vhWs(u_TsL9_;_m&{oAid=VRx9X2o;!+ zzGU0I+t)OT2cMxvGU;@u)XSv@YNkNWbcR*7O9u3JCoS$Ry}$&=&;3lJxQ;EdnO0S% z?-K^^3XKW5tgpZ1)0rQ8#ycJfw=YEb_r^6r(n&{^i6QP1I;1hop&R3UkNR~|7@qm$ zUlUBGn*3VFn*JG{u{%pa;EIFe6T<-h;A)o&p?%n^>V%588WUfurd-4yENjW)7#Bj#8zjZ)+D^gGUj|WisI3MVSPCci_wzVt&(j}r zAvP~m>I2Gk3bGYJr!b1j-s>hHCN}P5oqm<1v#T89*&p}$hI(?RrcAiGxf}Lw0)YT2 zo4jJ;{5T5%;m#s@R4MABGZ9FCK=5FBBB!Q!t0LM%a7NE zVq-CgZbbT%Jh}NlsUCx5Jkx_~3`;G;*{s~{mdH23UAcbKQ}3Hips*#C_3!n2ur6b= z%H7P?O=120j$XW@3XId|I_zy6Er8|d4LpK`jmMCFNx(`V2dXN(03{fdj0t9xP{8a< z3sW@Gf|Mom`;(6RA*906u!#sD{r2K>g&6fTI>$i3SEs~q5)OcdL0WFu^B~H|tgs94 z7KoUIYqMrKz;D*qY>;a%_j_NSZGM#jd}Za3Hkl5e!FD7#G_F@pkI2 zL{->qys>%Go8C7Q%~LD2q}R{`&w+RGF^sl>cc$f~bvLtE6ElmxKc~NYm)YnK9%lrk zm7F`POZRGFpWE_2;yagxRioc@qrpu%T+M=kZE&U87%oL!(>I%O8eZi|S?ukq{6uoZ zu77`f;T}#fFCJez3T-{H|G}4>S#o}h^_$y-Fe)&|(A<#L?w&JvB>d)$;y?&E_*#gJ zv#X_?*+?6%=c*)ZOK-BOn?t4?)#aip!2Bte>=mIOSv!YJB9p}~s`~yI)>1^KlcnXY z;E+;z7gWsnZe{D*g44``vs3iwtaGVQ{t*4$@93Sgr306Cif3jG*I`+maaxO(9!9Z7 z8X4B^x1l`2(f{TxcZJ-E@lt~z=K%jUGufhn zWx|eYQW4neo~e^IGu2`RTrhL@NeAGvUX|VQiqUEuMugKro-464LBPo>l@I(^jEu@R zl9Eo&&Aspg-|)V2+04@N0^%98=JNv|ypJzXN=}T;p-C^a(M)ul+!X3uKJ9v)8U+0O z*W{&@yDW91!eUs(srW1SQP|NztMoMEdx#b5(VT0Gs^HGd#txwv^Y!vMj!wszm5-vz zGB>(SrJxLpy;<=T{I3pSLmOiPR)eYm$fG~2{>MN05xuuyp4St=!L$3jTgo-z7tgep z^iI*(TGwo4P&TdA=AaMsI?nFGQR7t(BtK zpT1$V9d;MyqOmvy#?Zu1w>Rk&jqn@Vc;s4OjKXbK6ga{hS8~BsAsQVmr57>U(>5!) zn3|sajR_&lcRo`meMN(+)hDeDZV_XG-*Vm^58NW9aQh^#wJilGCk*%{vnsts>O&Ly z`j(=MUO>llEq4HH*Dws+B=5qXCvY*{RiBV{!@wu^x*S#epTJw( zq~V}e{L9%V)HINT@kVHd^o1#Pz@BZ`#EU6&kz zRKp_T6?{@#M#gVHwaz?3oM@tfVYsE4j$TIS_|-b{tJ2ck-dbS0M&*#%<2}xY`e-En zf`zE5QLwx9AhBA&8=g|JBeE~?;c~>wm-@742nPFThfZhFo`Ot>-Amae$m!~@GlEP6 z6v-x@C6h&52Vt+QF)}@(L0;v(PkK3B6!Q9vgy?PBJA|Kqlc9ZpznK{AHf^$Sy+DlB zeF{r46~}2ByD>~_;2G!pmmGctOaEmoS8!dW0Q{;u8L$8S-@Lz77vcAQIU$PvpYC4t zCE?sqDVvySN73KcgGmc8Dx-_6_rJ8Wf@^^xrr=WU%}_Y)PZ#pDc>aq$41u^s z5TLMT_R|P{zTOW8hEC3f#y6ym@$p2|`|4NA-$KagT`}M{swtxRO zeY&`9Fwpamr_WAQ$-n%@&sQ&-ObB?n_Q7{MDPEr1`IZ@|U6^f8b9{?5`y z?SasTj8?s$Vk_mt*y^e2{BR*`p$JjO2!=@o-&|%cTv3d65OUwl3wZms7(A`0?|{&F z+LYT8k(6eeQ6x=-0^4|3Se8?NxlOTg+ESuY!-X8ot)@Ze^{!|7^PB z^WTrSEncU+)gq*e3$z>npX^%Va3GKSI8aM*REM-xCNexcJ1TtMr!EVl<1ke8BGwjO3}c3*R371rQ7>*^(`DQaVbP>2X8!k z7UkpZ4e`S~;2UJnKH;7C@Er5Zrxe|A{h+ZYqmeYgX3a`cl9Ehvdi$9aa0e!*H_=>aC+;+ZC2~(b3r~x+Q%xH!AFBQ;Ld;jMkU8EH0V1 z(2$+QZ8+w!11+vcW=>!dbksBAT zgzoH|R+lw#-lnUto}g_2t7KYV{LPdns$Qr^o^uANI>@WyD!#5)S z?&v;9ziX*C3Rk2BalAQ8@TaQ&0W)~hdcS;$zt`loE2ZpWOmyY~IV~h4AcV@*^VLC% z*7<5F^TtJ*ZW^xxU44;Uh}Y`g+qK=ZV>^-W1u{gNtbDoLwQ^n=vP)N2I-JX?UEY#f zdupI;8&0_EQ-^AZb03le$oRG#6~d2b`7ulsdk}5)U6_+o>WC$cmz`h3AeAV2EW2tv zc5=8fNM9Ql3r(qn!7XcL>DG`8i#@ZW1&_ofXC|gSp^U4-tBCDgNPG|dyt@m7N?57* z;E*Hm;G?*zJqf)7I)zgS{*X5J-lE&&)HGz=Uyw?@D2B@%7QuqL$Cw>%D5|0@^Iq1S z87z^l%~|--Q2Tv}6)KBrj7nX#mdM`3XU8Josz)i75;XLlfs>Lm9)KR0y+B_KoRa5V zD}Hb4mso(PYWL|I;4ehW6$!Zm8hv@BqtMkXAC4*~P7<=Bm z*wX0F{H(S6t`spV&##TtDc~?7ors1k$Mx^DkA%Z%2-hil?*eboz^_wvbj_ZJ zO*18)`bEm0mGNRHwgc$+i1U~#o@2O7MFmY3_Xl>TNPNwCdA}5;1qyM&-%H$cYH4Q1 zb)vLb$AJfx9KI6vsINOBu#``k3wy04d*dUigWJTNMg4^ z#nF}F9SWyc2Oy0}zV;oD@9UM=#*E)ctRqL@Q91sLl;4OZh{)gkV(nB{N!lG6Wa3HV zKk8u4sVgRdr#lKd<}442b3YXeV{!}Uw!bcD>g`8c-QZInVIxmxW~){9=$uVX>-EQU zZ`F(Qw(3G-rADC+$&0|Tib!lLvm<8E_|lhBQT6WW3a9VzwN7@>+{7Nl;b7CvVY{Gq zU|w)&+2wQrj}XL`WRKE~%)O_-;gb3A>3v=H3X26@tWR_&($%q#)Z8zQ=*$KlHB3xi)ZizS8{6WmEXT534G^+<2J5CGVt4pg?L zhm)mXN>0%4lVc&_Lz@dXgGR|xCqshm{o@EU)9{bDhdx169r+y9&JX1nTU7 zGH==+vw`I`%2Rpkj)NxMo~-1UoM1u{pVM3LCJ7THN)` z=Qm&nIE@Nuq`L7sA@pID)O%f#W7`HecLHd7THDu4WZ3hzQ!tl#@A}xb{6PonN-^Z# z6%u2-gmq}Y(5a7FBmO}>pDCNrVjK2FItSbbp@bC{FlOtjN2zS*YzEhAnE2w8YPYj^;nkOsuT!~q5eo}5&owg30ch~Sht;J{QE}Ubx_N?hq7-Xrf(I&IEfwoQZ zPUI&RS~l_5KDlqfooi}XGK!$97~KojY)90t?(#GI0!c(%JGVa_kC=OHa?IsjHlV$A z>k$sn>&wxAeA47_%H;=)r<9s@xUcEL>u1yza z>7f)-9?^)77gkbIShFn8d~ejZ^D)2TKwl|wXVgO?QHd(Wz{Dk6JbmF*2hw9hL7h#& z2-dOAHX9_$Oucq7TsA9|s1!5;4M?);ebSKkV>6Rp@(;mUFrTTWNQ z+-5seTp6?a^x37eM{(OQfn95_P#~31dfVQEcq^Prne(h&Sfj=;xE5)VG+;8J@Qw)W zIku8)REeT0B<;?K>loGc`p4SAZ+l6Kz~<7&3uLnY2zCFA=DdMKOB%Yxvt~!ZSWyK2 zHWrh~R3VD4nc1dQiw(-eJ`W?;@_>M~W&w!))+5>44$45|a7hP5HPQ6UH*C3M ze9v9|7T<6^=+#&0Zoc_~ex?UfUd?3h=ryj~3N& z^>scY-J(^@^KX=wW`W?l_5z0WXD%YRd6m=_!5_qQwz=>8Li@t6CcQ93u$1Vajh*u7fqVLvl;B3a8r~ZPQQ*uol zzaA=lUbAK`-L$w5en&6kaboROAoXryWN~jT#)jCZMM@vVlGSz*A1qrLpSpf(Os9yy zFi|pYR{fj@2svqAOZkRHcWcr@Ahe4`qjc0EQ!>s7$~SeBd&Ab1&Ss3ind>Z&ig`z`8etQ!1q@@WykW{ai8kr#9exP*#L!on|Zo?JIfA&Xi@m zJK_a!{<))vcg+18@)J|xf(CYAc|S3He?XS|ZD;_YuEn+wA4LySzoiUPLp&G!{jtKH zUH(GN>@ASJgXfpD)V;#dhH?ux8j8`n(czD61(nrA`y!*N^7M^PAp7Y2xKa% z+2dKgykpjIzNTNlftl2F38KHltn14u&wn`KT%qam4Wzb0l4}>cU%yVfQ zBluPdk>+FjH^Dkk@Y+-k)!lQgUN^D<(}7)CqnBnkFuPJ_PtU#ptzYLso`%;NmF$3# z4|K0CFt32(k@u6M%cC<%*(!bWE6^PWTh{uB*1~!H!6`Cs=Lxk1MX|I?I+avssDg&+ zV}(^5n;&EC8U&#Gt6C$=s==9n#aL_zLsN51_wqxX_-^e?1`U%U)DrIa507Nowsa0U zz~-*;PLWIK;M4D1{nn-zsU0Bwih>vxsEc<3oGjBExhgg?k2HCwzUfwPr_oHSWp%%06v)t7f_)N&0AbelVXjXlu?e zn|RFcwT{3P{w}k7w5`8Y6{9|{;%<4PKBocAR5UFdAcJ;lCLh_zG+#%X?z4P385kB- zI7Hkte2R_+(@7L~dpjG*NJCHa(xM)O&<9UD=qr&tEjfLvDlR&Gw(=G4=9k?jlZ+O# z=_Z=99i!m2D5uF>kJkO9#6YdIuO0&TM5fiCU}!?xQxb=oYCSb6tR*XG?Tqof+Xin1 z{F^m5dN>2MI||-jtsEuIb@v7AL;PWM)~Xw|yDg=YUmK?v`(LN)BRVX{Huf^wJ#`s_ zsRh(w4TbKh@k@^j(K}(yxi_Z-?6~G*lJ6oPU8<^5jx1Uq$x^*tz9FhMrcD5<%?R2p z?^&dRcPOj_o2&RdGY+~_#lyEVI8L1Ub1$!F?Utq_52*zlgGCURUk3;G=RK{TivU!h zq|`M>N|#DeT>H1?bLAP@rDn6U#jCiDxTlgCil+h$XA>2N_F{|eqe<$%U2{axWCp*R zmV4<~F%xjnwZ2#f(c^Myi{K?6G}q#zr-e4u#Kd3BDet}g7yV`#UQD_ab>$4X9OA8J z_k8x}hG2GuQ+xYPAC;%T%LlAWF=xioe-WVN(Bim9jk=U$d}}ddS2@^J+f*TBfKzG) zK~H2qJ@bgv9`PvEYcKCQTaBD)#eoYzj7_M*(%Y*1Q?>pR7v2&7ktEZxxXec|t@uZ! zg4u5H86AV>NOTUSw<#x;jSaL3jEuMF?%s=IK@13;)!YO4_FzN&E@4`%Om4uEQhi~y zPQei({EaW2T|x$~qvvu^1;$3x!5%@t2?*}Uw%rAQuv)kyVmaUB1J{INdzo;b0GAfR zvjacKZ3Wb>NOQ%}?bB##COW)!Bt4CNF>OV*@93iTN6ILd^oWIBy(A<6?N>pjHPu1G zJUJ#2`E@+Bj2w{&TOArkLgCz4(F@k8P_?gTn3bH)H{Fxx?h77igRzY4?=e)~})V zq$C=$9aJIPJ}sZH^QI&k>q8$d8bN+oFSeFD~AJ6e9$w80OusMDAcK^AB!uQa4ZjJ<@6F|ynnwh zLm}24p`l3-q#f?#fDx2)Hn90fpkXfg_sMnMM(1*Mid$gal}?LBeYu;Cp?4MT#!~3E znX`CXvp8GtC9mf3L9L;=m@7#0Noa4*x3Ji>c*mApi>%%p({NpXL_c2~2Qv*Tl{1?< z4$v&G*s*I7(`VLYQy((&BBLxI^*g>!ix8wdL!j60fB{CXD(&{J9}WUkNwHUreOx}Y zX=_SZ76LN7kUe@1+{#o~U5~_j64Cdvmy&G|@it*G^mhhK9o&+rPB#CWy1!`l{B>nT z(sdj@m_zWm;@4j}f>Ge!-p4_gn>SCS{(iyO730nt0kAykAwGHFC*Df5>EV6rKlcI< zy`Fe11^X#3Iy(BKh{L}{FI{m`srS(@|M>@TI}36CV*JNu@$h?nA8>SPF}}a5;0R$2xp(%z zNEA-I)#Y~$rbos8^T3b(nJjvo`UB5@usV9-*Z<=X>)*WapGfz=GMN9|NK$~=G{OU)3fmCt;gKKxRbV;W%+7LD~dp_KBihJEGC{~G-hewGg!d0 zdJ;jZS4TszKgEhZTm#4} zLvu*yM%La4kCYn%Q7XP?9ak3@Z4&z3m&z|ju?nnHuaYO%mbaQ@lDgq8XX{Q;H`=THF|j2L#%()+v6}lKn;ctJ(WhK_`uY7$y2*7K$U64` zYu?ka4b00%6+(35ZZEviBFiI?9iK7gv)I~>5*TAC_@)RHgi5NQ%fsLIe2xNLiF2!~Vg zd{kGM=!1FaHk|2WW?||6$g%jM;cQWDT3<;BH>sSgeEkH?r2Mq#N6&DbQln==LliuL z8bc-X#y|pML)B*>J96lNR$;@_W&_aHlmL|#dFrbmifm&{iL50WwcSPCjg>R^wsV@q zj6dSEOT7#1g+V8vZ(_@-**htQxOmJ2H7!1zXu~)r8;aYDS_2Yif3)tV?))|OQ>p+h zwXCjmfY46P^a3%;`dP%q1zr_Zz<4M)Y_4m}&`TitDAfWTDSI$>P(0q&wX0%U^ zxl{m}CO+so8EqLFf<*8dWNjoGTEYV-)dy-ONZa+FE@TAu1d-v+L&^rVMD0Wnwh?O6 zS#76RIFqd~wd<#v8XOGdWT}wx^a;F05`g>$GB(Zym1oI`KGDeLfjaBT71+hy@<4V} zyFqM5_~$Q@w`zLh|8s`^^5e=;8u*aRzU;ypln4K{4grIRLTqz8bD?3S5z%wN3?woc~czY9^DE)26Qp|L+} z=3)ZY(v}-tB{0I?^o)PCv6lNvqrk$K!%!PI)@o4kxLm)H$$W`8Mo=BK(qUL^UwM82 zIIKouMV{Lz)uv_A0A=MJvn&zXRqZr(p6bE&oUi!a)@WkTt>L_BmafMyN#T*~*Z zQW0KV)03M+4{F^X#eeQl(0XZcyG)QAVrv>yv453*aEKxT*xFKB>>OVRj41R@83{D} z#bV*jPxcVnA@$_9W0sqx=KTt)y0&^=6JinD==tp?(-+P4R}MPc{g`dcaAwg`dpJsC zB1bh(=AZ-*($@X73tNLbQ;KG&B(qVmY=Ba>SQk@zJ?p7_;4_NGdoY(cjfTfhC9?Aw z-*SJ{TG!DdrerEHuc~q)MP%ihlUO)P-8al`?PcGEgSHR)$O4TKK$NfqBS`R+e!~vY z_uS&*$wIcO_|KRg415Wf?@QcepG)B)E{MQP{A%4(eDNFe^Z4KFUmZ1|Jcrzuc}N@T`lu~7CaekV~SsHcVaIPuEgdWV%C$7M=bOG){& zf4R`#ykl^UM;c&p*Q0+oY4jXdV36jHqR{;6ZB9si`q?52j4O-bO1`{wIG-b?+L)4S zG9W>1N^a?M%++wY#(s1S-Y9@eEGRGs(%b(aNCdZ@Ho5E}A zhU+RE-ik_IQeJQ}3Cd3J^p;=7v4K3prT8X@+_I@tR6Ccz6L!WmW-PUQpBuS1T0?(j zu)&d{WpJGkB%K8=fv4|B%98 ze(^=!^3{j)&cvS|9=oo*gO|^u7+LI==#cBSK{t=Rgi;t*UO?+pzb=_E zh7N{7PSew)Vk;k6*W^jRG(tp0T|A~vKjOEf7~CoKS_%(ij^c01BKXe`im8&-ByXBeS|x?>{=k%4`UbI5QbSx0NFKx;*;^|q_IFC&^?OpO)uOt$3`gBheMEg*aI+MazE zPj!K7rMXs8NMsc(1TsK?I2z0SVV>RCE&{sKbq z<0iocVA$hfPR;_qmM2``qcSR>4bkWeA z+Y&Cvrl4YENMqsw)f&@Z%u<=e#=8t4>s&o~p=E5fsi4~T6}Ej6=*x>OfFDpzhCtjvIy1e76i|}J&UO?VY3Fe-5+W>mmW9Zd4%sv~jlY6~A8Y4p%qB%bQp}I26&|Ql-7TYyL>4vc}&%Q{-m(rVJG(XMy z#kJR}l|{fkijQf(7&ww)P%_6D!F zlGc1=zxYQb<|Q{hzgOtR#1;jn97~*eeQb9QU1uIZP4f99MOVIO2@(D zlYemdt3D`hz8x@fKW#(x>o5PF0NW5A9*RX+ZAndf?En8lVyE!Yhvn`S*mS2~%+jBk z=1(_x=!cs)em?`AkpJKhIWXgZs*&v;fnWIbqlg1e1UN0je;zN!7Ay6uY58eTe|e|F zQa&q>S*m|u1d6wCD1u^gWP9o{7xDLEc;uDn$YEAgTC)~>6Gi{Mlw&UF5_J|+d&6IJp*ShBiil1%7b1W5Mh@>(<$7xW{BH0wVf z*ZN=SIxTMJ=Pv<8yp8VvzW9+oo`z}|r;u}@&-gIP;`c90n$sje0+a%3)jgOLqeBpI|Ox(3}dnXRgxE;x z+~;#Qdz!$F76Ge-YSfyZApG|EJ@wifD9yqGA6!H4mYs21Z0b-ObQbQJ?%!m833lxx z{TO`L7i0R#eG1NVN}GGHjm#_cY*R?&Y7EnNndqELWSu?Z>)ga1_xq&SYO);sOp0jI zN6mSGHg+zFxY3gelOH<<`A~Or4!hPgin5ND6N?I6eQnj3Oj!6v)1DNlhTS~J72p)q zTcFaesmauOkuq?SqFJ${qQswqt-X7%9(8s!V4&)t^D&FZRBEcmY+_L^t}fvzr2jix z&x_9#?ANWj78{k83B22DX83Dy(4k8Qg?wbjN&2{tm$_xyd~Ct1Yi3mLHTF?d3=f^p zwi`Pbdl8DvTxXd9WnkiD@CSbrzChmIWMQ6eK7F? zou+d1pne3d9DX47!_{vS^2qX*ZOhd4=m)7JD2Q9<0&srB1^Rr^(PLkt&uzmXoz~5X=Tm+lU_W+nf^(v>)23oXOfuxP6Wvyljw48T+`I8hYTK zI>J+t?P99$#>AKJzEk_+Zc|6bNK(@Qm&&Bj{jNq{8s(6p8#N`Zk=Dvz_k1TenzO<} zus66D`MpYq1r#IZS~X?fv{k<5OguHlUh_CSvDdYB2)rgfO1(3kZ7ycPZ9S+O|6!;y zp%p1~5_sy(L>T5(sL}9B{TQ_E{e|R9Ok_q)Da(eu;Ji6#Yj3uqP%4I_I)uYbp=Kd} zLx;IH6W-pFW?{NX@Tx4)`O{p3D>|Xo;}L@&=0J0qQO#Y$L|9lKKElJCBt92cFeb}G?(}P>iJDUYcu?MAW`0VGxCuy zZ1~bHLrzf?ilPxRjp=4RbM~Y#k*t!tZg~hBk{8os&5gW?T?0i!c%!iz3=)N$oc5j4 z@MyR;LWDVd^#KXeAB2P}Q6hC}Q?0&HPd42VpPhl;YgC zh1``{9~xsns>TW(dzvi^p#*;Mj*y55cps8J6ww4zCrJEsKRx;d-y-ftFU{)(%yFB_ z=P5T3HEy-UKh{V9?^#?j6B|gxaIxsE1~w8e?Y2GK1D_O{WyOeYTJPudUn)Mf?2O|R zaRmskA52N{qLqbP+ZfSTFHc{koG-85FE`9yOmmrZ5KrUC2vUAZNz%vlfL*jn&E?hk zMnd5Nu59bf@n_b}xfX6S!*D__SS4?sS*O&tcI+(}Y5Z=iiLtzzY@<^P(|%|N=SMb> zo1qy~*xBdR>mOZlJLj}n6@l7;wT;nlkvUzsZSv{nN0!)XX``}5l&}Ow#<8?;Rv0Z? zt)e_``-xZECijsOar6~c)zeh!{d{?B0@ew9?BuN%Y567DBQn_*(N9K$IWsP(H>#P( zY`w*BaXGx`5E9U?Ux;Q7kzSfPaGfxvaMqPvBCfn6*W05SR?RL4ZVInmMY{u-Ce@7_;gYRC6tzjBw|SS;ohG39lebyZ)3P;9nWoZIVC51P&MqgJ*n z3ZD%$R3afat+ZhgTmA)~dn+9Oc~1s#s%`Csm^BZ#exa!nFXrYJO(*LXN>@3HY;oyQ zqpU(A)DOjMCGqi=*Za>lzv#d0Ua>9iUJuiMMY)dyGrBmXK)x2+q zjm&|ZrFUC#i+vFlqV!wLr8#d(YSWc!Ao1n`a&M;rx!NaZ!Jg3YS*i&+H zr|d^(1bhW?ZB92zgOKmSSb^OSb*d#5`e_XGGV~S;1$vnVH}yo>0XZfehFN|}O1u_E z;WVp_N?mSlZ6&V#DzS;AN+Ij;h|b!5XEjmwi1YW|c5T}egg08!}>ZP9UdxdD9z6#T7*#WHb%}lIL+@x zT#j`9(ZuP?PA|2dAoz#G_liT*(3Hvk{A}6mn)`asYy@n_D0mxh50fD^U$_Ytqt`2> zWW~iZ=44j~D$O}%6WVmVmnG1$?W_NwXn4Xx;zMKsk>o}a-FpWr*6{ymL-!%&Lk?>9 z(K>}~j7Dv&CT)j($c#kzsrvQ`4!;lTrB4LdS&mG>EiojiMRKB+gs}j%1D-uw?Tq?L z?lXG%e#mL@R(&;z&#Q= zs5WQA6X69nwzBRO7c<)FX7S`VO4ti%8zaldEr*A6R=LIu_T*W*;&j^!D(8f`zPv~s ztn;<8n*jhcWoTl7f#p8&?qp5}f02j9VtJ)`krzTwb0tYZvpdgP>-B_7;bfhD zAg)kSo{$REu@xSPB8PO4=p42asBFj=fA(1u%Y>LG(d|_ilZF-(PzzOGH3KmM1##4_ zPFbS#Fz10H{}knZ`oC&RJB@esD3<(3#P>_mY+gDxZT}U`@o8mTU+cGvEFNi| zBkfN`%4@qua*mkj80kIxG69ExD7jpASgA3iXyThXu_q0ZGYuyDtqIQoSGw{N#+}}t zI!s(RBdJbljfIHDxr^i}OZiA#_qZOV+kov7DG1$o3GGCbB{)ww&%4Um)E9EaO6)bAi5tafN-CuUl)AnZO~hICxnu_J2R4Z+|mpF zXiZ$J>wU;-R@KxX`&Df_tsMB!cB#*Zo3@3*PSIH+_|2l>rjfi&8bN@v)v;i+AI6GYoiL*0-j&@)oxN|(T@-0HnTLufYSvSH1$)Y!}R z6JIWCQd-adSdwf!zq-VRe@*k#d!m`9h+4#Fg`z1L+NmTI-}MjJcI8$Z$r&1nl$=82 zc|-h!3qrbvVf=auDwlF12Htk5Vw)aOV#j62rS;hVjdmN*dGb$kZ^a$(*Z;=(j?nEr zG+#YvB^j!JI!6>S`aC%J()}!RvBjdoOlR7S^b8>akTmD7jjHfk*L{Cq@2pNj&ZKQE zU9^$g=9yY``6^Q{_^4LxccJmA*O8W_P?>^t$CAZPc=NXC$oF(jf^rurZ_x$*Cfjb)VRPc z(TKQvJ^oXKvm;!ZC)F-b`luoAN&|a;HJjn3D|`D6J=J?IJheus;K+RV`HoHn+k&F~ z9*gW=K_E}}kYU`NMT1j7l09$2t> zrcFJSnpequ8N0mHb=PAZWF(y_VEJc0==jicXvNy9S-qf2sB6TkYkBPK(BYcZex_~NLv;}5{>H~xJH4sSGWx2|0qQF$p8{5TdlvBWeDRQ-lZVrM9t9eD zm5}3);jfxcPc6RH<6>nji8DVfcOSrjEZe39;?@=&osk80wU+CoZKw)=`CYW$B_$Y? z=u&<=-EiwAn!WQ}Uiz1=_K1@Lx+WTX6>kdb)H-)t7k&NL%OuxZ1;JRRFn8*kQ~0(p z*p8u0W#6nW5TLVTLh$?i;_Ro9jC=Gd$*$|UK9miVwQxhYEKilb%Tn*ELwbk0BiGF< zUEP@wXt!PhLqVY^$Zu_;;VBk@&R$$HDM~yOx3Zi`2PWHxvnVJ`kauP{EQuCih(8{r za993c=u){cN-BqS>oISpUtEwLIUaFM;Zv#%0EcM#gP(t3ra460{bCvy4P}xpqC3kj z`P{*wz^LM7W(0@qYDI8M4;PBH(fp^^@uM?F6}l|wxb@*IW7b+^7aEGkt`=e36V_hg zYl40CDh-b z*avldRwy)9i-@W1MTOClw%9v4kNaWq#qxM$PL&mjQ}Ng48MUXE=Ev|6yt(1xwD?#Z^UTeV1SNsggw>T%AKnBslu;~S^D#;YiQ`|v6S5E;$Lr`<9_l{>G|^*3k!?k0z+|_ z{fIgkUGepcEaCpi3P4pczk4N5_u$)7#M4Dz?ihoLdy(0i&K3~4+jGipPc&4XrmA7` zox=&L3syZfdRtwCcil%5J2AE0PS%2&sd)`r{Rt9&&siyM_V3@-Y^z@JT5?;kmS1}w zLPg$r9&pr9T%w}Ld0jg^|adv#vad-qm~S8La)xcX*2 z(lZBpUP$_vY;j=!E8wfJvD#OII_UZ}y~7bWosWdEgqEL#scVrt-S@{qVVD?;-c7al zIbo%7ZSMzlt3>YJv!AQiEq4P)dS+*9OWZT_GFo)lTCVpwG{B1A92v9a!OKlh-IDI) zNN-fD7 z&L?c8kF6%ZW)9nHjR%eny^oC455aR>rZKjc6P8Jmx{E&ogOp*q5Ot;>?HpukWCZ^B zqr~4yfso>Qs#Essl=pr}IbC+>`}b?iLq?Sj{DRfDWRnghLs;j|(NXC_x+}qY=jWON z8Df)@L5B_KYz@{!_1ssz2dwQIE6QsIU-0!Iou~D;3zaIMaf97gw?}KI*2SK$seWlt z#=khNe7N($Al%2IP|s@jHgKiWLGj9YOKYRtmFB51Mg#dj)P2>Gr*9%UZSudxoWo!K z6y;-A`=};ez#X4$vsdt%yC^b^xan+tj-ScCv$K1XNxeMzu`V*p66*RTtb9ah*HxoA zMSY#Qv3JfHFb z=pkn6=*b0zPQZDwLE(~OFI+nxqp+h(Szi~k-!QtC|E$-(pq!l4FJ;^D>0CJUsOg;m z^K#a{=WQp;g`x=G6LuLUb`DvVJ6s^k7lIe=4(gJmD8v57j3g$6mag?PjsmOk2uHl zJA!|l6n6jS(39kwf1-L?a9zsiHpVDFz-#J-yS_)hI^3T0MXS*^)`sp8dSAe&SpRI%~z`Cq@MSx>+L=zZhVPW;oS^-l{PODO)b`F-&XT0n$s^RU2m`0$<*1mL&*Ht(Sp9rXunx&Pj~(smC8 z>mZ-l=yWGKs!)_C3_N7i?sZz1loES+eV}MU@yn=DQFj4nF7NG;%0REk*aWwkNt1;o z)-Lp2sXXU1<)2(Eyc!Mqg;q)B&pyf5z@MA@vh)be8dvCITTXKiy|MAMIFq+wc|2a$ zn3Z;tB`H=MwDhP`{WNZhYv;^+T%SuFv0Tl<an_MvFaZU%MrO_`;wVz)Kog<)7!MY_OQb?d+DoYR-jdy;Wg zxZGIdnLG};KMSxCjwd*1x+V9@I!*?1S zvsCHzvCP>sZX_9&=_Qx@RnpvdRvwM9y1@r9D-V5ULAD|mXS&t3ofFe~o`U9s#}A%< zni~=NY4&2QL+?Wwi#elYVz7Zi!9}L?@uOz3{=>D@f|fiOQAls&k-%1oyID3#0f}ry z8e-I*7o2J=>;0}$2);=AmtHvbnvF(w@3>u#oosxc;=z1D{5G+)B`p_5$MBPWqeQv* z%Fn5?vS?1){n)u{(iy7Z-Fgq)H{*+PBW`NHS1NhEC(g{yE{L@a`{$(8|5La9A(nvJ z9~_RNAP^G4{95I_UJs+4X~1jPaE1GW_6Pb;LXCf_9pC*%V*MDgp7fwQKr9lWWM}u4 z7Q48i?GD5!`&jYW4xxTp^bF`9AYGmN{Sg7tKy%tOtTL_NlW(nUDv~GOZ_5V(5Gz z8w2`4-)tuYMUO}%%6e{QP*P~E4WEXx+;(fbYWqbklGA=7$GuSDP?<^oc|IiwyH=iWqqQi=ci{g@#D& z@~872`DVK~ywhG21J}#;UXB~=tSro(vQ_?YQ?9~;hmSa-@478NN&N^_{Z6{^WMgvO#%TSN|uc{{3ev zN&Il3yw`eeDo-ze%rYvodZ%DWekVWERvM0DzVV|Qk0coV#jxB4;`Q|DN65xxA+1l( zsGzz*fbp3-EMI_AhkcW9rFO$KLIcxv%Q5py$)o38Kk8uK^_(cZ#3yF=UMjf!tuo|k z@)2;;=Y+~&yxY++dG*!d$ zZZ7f6V|uoH@}-HF@S_Xok6t(*@bSj0^_rzP$y#g?T-8Py7xn0f$3e{@m5l4)OBY(8 z?U9ZMMXG1Al#|(tumP38F)k0HwMWHwi}%HxsB%QmTB3B@Dp=BN+U*JXKU}$wt0*0N z@PA#WFZ3(v-FU1{ck~>E5%uJ0JwL&XFv{e=uZ$V588bR(U#b$yGG?ntHcTFsb^flW z!<20A*_|qdiW4%lh*YFj7aCU;-Tl6Y1sv6wPfJq9j6JpM3lJ zs&b6O*602;!g&R#6e-ha!$IDcBYkD*HRhtd%q~Mn?LsSwhfuxnq`*@_M9H zhCmZcl~a{#uS~mWcQy~*%_shJG@XG^lJl~DeCI!xG#!}`0_=UEnjYUzRFZLjco4`X zSEt2g?c`KE!zGO%O!_!_e7$*{?)U3P0KIa^TJ8D9DQGYimn&RIPG2d`@mwJWvK$ckmCqDA**4mIRp$XRy$lE(fLU8AU2=f0@Bj^Gv^}M1C|2?{)v| z^-}St6pvoGqDki|p3-cfldAm}B_ueQ&!Tnm?AdGWti z@~-SrsOF6mUqzqn(YiFX^BArq+V&*r=27rf2-DS|G}{zs)ogH#2;I#O%G1hRq$gUz z-+o`wn@`w}j*keK?0TI_WtyMkTI^pmEiu;#fgVx_WbpV6>}&dSCCcYyZjEbI{zrH} zrO2HTAjFV$BG!NCYVSRvwE*gPe(+ob?iu54%Jx@aTtm+0T6tgZwYE+&n<}GAX1fQ1 zJn^jW_!*YVoN1k(!j1|tTD~Y*jnMUop^cvkE_-GAz4boW%nwN&Y1yt`_j9VEY{w%i zSj{|}AnW6XXbTz%DZ5yOG@Pqo9nF+Dj=;Tg#!V@`|MjcFoatyPCJ7z6PJ1xH|Bw*E zXgQP5eg1Hy*v}dOS^HxkLBY4y_h62zst>v-9ylr8uEgpMT>?z;k6iN@cb4?QuZd|r ziRb%&Hr)TSRDbWqW;G?Cp)}M1J7%bCz}ydA&J0l>qxpe5;|qDnAkO8W)=3!tf&6+{ zYY^OQ;dc5QXlHemc?s5Dt#CNLgD-UQ?c$^mvnt&&dKkEq)5=i}g_aLs>gGL364@H$HCshcbyqB~Pk~%8;Wng+-)v^W(Co6q#^ik8!u((V%j%uM%Hl(= zcKg5g=lOuyV{Rb@vjwUGLrlQz3Foe*u;H2{i*&GY)mVOUy?wM1-=6;$gUG-+`p!Kp zD&E^^s&c}nJLRdX@%YSXAmDrP^%jmVKY#};vap=iMx%WAkeiG6(C&)EY|FcBxScME zIYff1toR;_KBEz3Sxr&haUzadHeT+b&A+4pBt`WAMG=Pv%}p>w&E>zfFYB17!Ct3e z@#yDA(QB^h{1YdtO>9u4{O_h?HuUSfCul_NlpalUluAkFIxPBF-D zEddD2Ob;*oi^NV`f3=kA!6JKn`2In(qk>OU6ex$0|i;aJ`9<~92E83}#Y zj&RZ&`(anz=4xSyAKJZ_DC25lN+R;Eb;v^t^f8%xjNY-a3BtO_@ZSiA4swP z5HDZTo{_=$f9qF&YT4=f6EqETdwd0wM=;H|#~FfrNh1*-zpqcgHS}F*)&fa+KN{^b z>>Bt}dm=pAw(Dnnrh%NIi~FMwSL$r;Og8{L);}8=1WV9f=d{$bPd^tzY2s9h$D~(K z!+He!4lsF8E1H{9d@nRj5LahM{n!vu;kw!Pn0mFd&OSJ~nGHYBxptfX@AvxKcKxqG zyFgd_@yW5%CT!o|2Yy|ej`rWu6`$7aD}PXoPjWJeh7RN^+T1OiB8EFbvw(fi8mN24 zwn4OWQ8de4>A7VAsKkv1%j#!w*&I@5i`mUIBqR!A|Ix{Zd{27POGk!3rz>6fzt%3m z`C-O(Q-Jf4NA!lxK+Y{IO;FAj23hG_DB9itgm6F%{FA*Io3VWhekso$WZ0do zE2aAROcOaEn@#Pbti7^hIn2^t+Do$J0rb*Z|M6T*VyI25fcKPvlcMLe7sh8Z6GD=) zMHe{lIo>O-uUOB;H;){4QTN_y;_o!D(F{3_Z1xC(W(5??g{eq_!#0;q2$sg=ak!*y zhZCj)taG}~s7!|h^tZF~={c9``X=>Y>{4+03+-IWz8VNO5y(2~ln(oDkEpE(jRGEf zz_TBa^-nK=e~%%zPlbJ~y1XM&q15)0NzvJ&WZASL0XRKarqh7mE4Jp_Rq?Vd@P>}+ zzibwW%F#|YWBZP-1RG}t2ss1*EMHtX^D`W=UJ?;pnPJ*(`Np|tMss`uXRUtP3FN`* zeMZZHkdy(Vkyp39ku&o~yNsQeez`Q8o3A|Y-0F{Iv;t4mjvOfI$rl}!FD(g)JNZ`0 z_5A4e4%UH~4T^3SF6Dz1mZ}`jd6H&YKiI2bA7?^-aHyn5h)c(Kb&1?25OG%5^Oe#U zugAD{rY+%C#aTvUm97+=1)$7rH!5{G*H1fr~2SgQyo@3o%ZP=`lY zo~xtMc`A4FKz6wE*FHse(Z5#ycAUdW&O35q$H^(dcmGo5?09tH$cVc<94*_6^*PIW z;M5eW!Ti5Q>*pt5m;!2h%7&MuvrsDZhFR?m=+wR0p6ecKrR{MilFgu7D#-vRN7Y58 zlR%xfKbO#>(>r@7cG49_Ue$_M=a{Gr7_(T4H^X(1W3Oxy$ZFQHf zVUZ8q{$=em5>HmZU}K9t$>1LuL}{dNL6MpoZQp0o0`2~5$9NyhfbR#X`E@O6 zPftk+Y|LTq#!p&%P~Ne(*#m8){9w%rkTo|9eBmmbjMe~;oG^KMXIY$ZSh9qlu-HjH zFpYWVD-}h33Cb>x+ZP9Hk~CE50C8ha18tDC4kLLZzCj?|Y^&PXOfno-AgQRzypg;( zvF((YI0*hmhbDQlL*dc%@MqkDGw}mKH?5? z0OLm+^^)C_?u$3X43+0@-V==pqAi(detEg;Lk{muJ|wLfOK?lRyZQbZVB%YVTdH&0 zRY>pHk^!a^4B7lMP=jfC^G5Ks`A;^V^j|t0f5H5@0O?a4=_vnX2zu zheM`?hxMnnizQ4)|9t0r3CNZDQd5Cl{}Kc9Uuo7qDbcSRrReilP_DvrdlW&r6%_=V zDAwIXldEA`U`%m5M82$7QrJ>FGQqC>nr~P=37wDMpNqusYiNCaOMjw#^CYXcJHaj9 zyDve8n^E7|vgAE5_ARaBC}6{K=M&{aAiy*8M4)ANBrj^rP!Lry$H;)HsGt8Q>byVw zojX!!qI4%#->kHq)2Ex(53Hirgw5OC!z13C%em!(`^r~dniC0sWZv0b0~y~nD~}sB zrqglw_IZ9>9)KfiieLb60#BP2U|Y(@7!!7{N>RYnM0=Y#Z{kt@Bb^)r&|s0RZLU1I zTd>jzxmEeHx8mNB+DZ@fqJGsCBdr9{FLuqvE>|qCY zB%00vwyz{(B)NTG+F20K83Lv}JIp4xL74b!zS|*@rCuF7V!M~A7DMj4SDuZ_HpiJ! zJs=~g`D>l?j+X3co^25HSIOnrryta`wd3pSbMv9EXz1%Bzd=LSab$OBNk+p}+JKfTjFaLQA5WcA9 zD;sU6-W3W6pOWq3)l9OoJuqD%@4s)PqodT|J!vu{TJ_5; z*lTW<4Z>u{_UFk8zIncc8ZDpQoE`As?pUQLk=*m1t3kBiV@VahesBrA+C7GBI8V_k z3p#@VH;rdGtRBrpo3eYHn>W(y^M~d0y+Eu;?iIkJ2J$np;pF17uN_`FyfTXH(9z6} z-f}ScoUIJZy2#Xx5MJrBU=4YO^-;z{sqLt-cb9U|Ysal%{fnFuBU*BYygvLcjp2md zg+B0xCA=RU4HxB-aE(eOjrc^p;6aobd~hl*gi}BerEO>r&cA^L{bo!Y{O#xxMjl&5 z4yKTbmQZL-p!`SSko zimA0<`I2x+kY~Nf#~*PevZwno}stswJyL=fC`rbu690}@pK zu?t`wzN^nFNskgpvxxoMM(JEkkoT$dT@+6*ot!iyFZok#F))z+2r9scwo7&&INhc} zV`5qv8=$EiRVS7TWKrF0vL5G%eN{vR4@DF?>0R1m=9Wqn>wl-yH4}=lJ88W;8Iiq7T>!)lJ^OCe3bI9sOqDv_0v2%Z8_W1r?RNCz&E;q{oJurTI0)ZhC@tE^Q$z^W8j(o0>)-E8BtvZtggZ6JibS#7B5-EJIPzPP;z(+m0M! zUS`c-U2>F}G%8fWYMH!al)qdT(qQKquF4Jim%GA)nQo= z3o@dCWUSuyG%x!0$jO3g+yxBm&<;+Rl&D1blutkmr(!yT1=orBk0-eWFwGBOheYpe=%q6MfW$aEZxG%wLOP-ZF8RRPg!jYLyER7O3 z@VJJ=l33PsPU7ir4TA~;vWM5;PS%IJ;S;Z%)m%LCS2|L&wJLTH-mnS3J~kh}@2~ZM zTkHg5vJ3R%i?Xa1&L|pvXrD6}v5NI9d zgOUSJ6f0U#ZkdHo4dj_5h`K?202`&P`nwZidA`l5z={MK#BDt}RLt3D0dvtDGX2n(Wjbzhgp(E`1H1si?@IKCep;-KA^R#5hgQRchK*^tuy zGxAuNmKoGVCD34|;Y#=Ye}hpOI6X5`X#g-q*>H;3>#;^FJyfJ|dL$>t(BEXJ`7$HQ z;+>gG3;JK5tSGMQbF7)34+zLXO2Vf}mt&R2Hy(9L7=sjRqNiXriW94W{{wq0ib z)JW*sxD^ zFS`xTi)=yrv%6`^U9kE-yS3q)FH+aSdEj6C$ot%5URWyhBSjggZM-Lfl-c(oMb&n# zkq^{Eth7sj29858J@JO^W#<6)eIVtAyeO}zzYR9t-bMKqY)v*x>Kt3vj z(5fP6dL}t@1avhXKZ;PW!J>+*<{|*Si@m8JaoW5)TA{4s`QbWzgO*}q)>>JC6*PVm zveu_o!;gk(ubetBzgYbpx9sOMBDKIT4{HTxRmZhnDR%+6X&Dx%UO|V z5r3ivfVw{io~-kNv|LbQB>CFX0Ln_cAzq&!AwQs|{3J_5&UufvK~ZG2XUFnQm5lQN zisZmPm2I0b{US3veaJ1~M&%4YCTjfNSFky?yz1s84OoK^uF7AZ zk~JL0KX5=8ZHUEm(-p$!HAtO!SVe&h66YnsQ>>z_>lHwzdyc*e?mVot#4 z-du{(1K`HUs5oOs&n`)x!;OjENgs;wHR$&nm4QgK1fI(@el(1K2j{S&@9=ZD zXjW4vf>}%T=f81#CpxwUwy8cuk=cLT8690pXeQ$~=ES|_rvt&EUJWMIxDzx&~5LNrXuRgWxS`H>*~2!ACeS_P1Y z>{I)y-4kvNs&i>C zr`}ekE3`bwxHhn3ZLGX}@G=d|xZ-h4c5SGf@_FRQ>lHPEcCo=e&W!`OzuU+GJE7hk zb@VeWC>&KZ@sFNx1#P^XOr_C(O}Z z3Gc;`RN+g5cmR)566P!_NtYMuu*=sPHzL$psGWO^UnA)yY zF&6>~fZYbH)nq9;oat?j={@1Is0fKWQAUc6#u|!k zy!8`*4%tvZ^Ty`{R$^`=#D|2}+1ZrM+TV9M%%l(@v$+xFQV7JTaBmV;-SUE?v_1a0 zu}j-m$o(0QMEm)t#n{IU5j#-;JcbMEn@Z`T6_A<<6HZk{W*C%j;lwMuZ3EY2Ts7g% ze1wtFKLWchdM(iKNAcpA{(ltnK}P8*MnYKUD*_jDZP1hed+bnnZ;t1u@)NlNGR(lc zc9b%F=ld2F`FFKxz;-Ab16|Ck!ut`d*AU2lpX)B)jYV>|k%(4SjZH^vZP#PzE! zU3R%8e=p93fC{)pHZgg5(CztexOu<;_vXD$=NF{XOc#}hq2EKkFzq1F;iWWQ0;Iu#D$06nKyD6$SxRRYtDQ9oXTdT3N zGq#Z86MtMiH#`QErG@S4$cx7K<5F_E3gFH@JIFy4Psd%PQMvBYm}ZxDX_s~?bB`}Y zzmGuX(`uB-9d)AimRUWq)xE=nufi{h4%ymW5=}W7 zEe$s`Ann<{mUa|i&|6_cP*e|~NM1(SWhTG4ia|DhED@acqFDYQH8i?d^|5z>=}VNE zWwXMESa7b2i|G0DS&@n#Q$J0R?YFNHMs1mS5m?sZz$Izqb6|uueN2i)r95IsM3n8;=A~=BTq6Nd8=VPG2`YMMowul%ME5 z`KJ#|%|6u@5#K%kVq!DM8bVH5Dirj(C{{NHqjH6nMOxfo@jkmOk%4+`M*rjHNgqmSlE!45P0-jX=O0$ST4^D- z8!3o6-05(3pINuqy8nj@>gy-3BKI4yA}ym=EyPHtCG?|CT3vXVI%>ax^Xsdvt#u&H z43$4){;LLZBjlO|t*f@M?-jX92DP>xoxC&P^K@5AmempwBL;c2|E?TSzH8gKNnn>9;)?`x}{fc5L$~7q#il&%E*%NcH;U z^G6xWBGC$cSY1a9)Y@|9oFVsCOLz;XS23smiPab{*!xhWm?I%2X8v<~O|FFl4l;iw z8LDAQ+kDWK!=8@dpMa)%wi+R%z!_qrb+LHg6jB z^z31HILv*%y)2~UU@wit9$4((*%GiJo#JL?Y-j#QO;5}Op(U`gEDL(b2Sm)GM=Iwg zLmgBRu5UQ}9snm>{FbgS%y%K2Jbz`DstD8_v1Y>@-k`bNxDIYPG! z3g0velX+ok12i*e!j*QaNG=tC9NJww_Jl3d8(v@Hh@Ws^uavi@g%@(M;)exT@D8^J zx-9dHLx;5#uLNQACMW;ZY0^wEJgY{~v92%8XSFhbgK6oCoH;p@K3?nyaoGnD=z=Xq>;pUD1!4$&^9x$}+Z^^m9M#F7;rDwKH(@csr? z^zR{oSk>a8aAAbl!-Ju9nT>kFs!~Y3MHd@|? zFgl>d1qQcQo;`>cU4w(@fBM*fKLX}a{XeS8FqB#OI|l6vZNKek$n?Edo8^t_xrk?7 z%z{zcRj{PEMq1na0zRTZzGZ|=8?Sbn!|mI*z02Wt>6#qSij&j8gB{RmXH*T1FbZ>P zZ}Qq%)OGuuo93MtgLw5~D>L`KtVmjBlmX9i@;g>zkw5^(B&vo0wGp*$GuNQ7LluX_EJY!7SLFq^*YL4GvDu*mO9b z7uCbfo$sKVS3AjqR)_q$xo1F3%lpNQ3-G@9c4DuSybrj8|IFFRq_E$(`8wVE4`;%d z$CNM1%yZ_rajl!3yvV)!-)n+wZbb)UFH5Zq<{LZ1g4r!Xp zV_w=G`82LB$KhKO{h?9ALy?8QtjVyd`P8IucJYVS)Y8pEOQ8eB+GSBaFg(BZ2S z_9sYMRTf7h*nRjh@BD5|P?OLP1l)qQoi8AAHd8$&`Oiw}$%g4V72S(6+lGNE}p#mt^5HYvTBa3T}HnFV8VA$$Kun zziLsRbIYXbYoM!G%81?s{t=u-Fg0_PH2O%bO-fEqK+y-ZJ>HkMO)Q2=>He~WN^=(* zCyGTs#KJzfP6sf=ZD)XfY2#0w43nqpF!$4T(cN$TpsZuZ`YvS+c)crD#bprxQr*AY zFRz);zS?g{?XY0daLYglR~I`^V!g7u`Dtp0Hm}l=+`^|oV+d%gd8-^dNA7{t8BiV~@~~;-;eqibf#l#l{^37$ZrGbbKDsXfaiHP3|bzE$69Z zxX@iOm!olxZWCEe@H8$*i%oBeq1PqdyMF|58oN%Yll>5EMqCXi4>-lR@Q-#vY~L<4g~-2x zSFQ7*<(nk2&dv5%-uhm%0ViF)-6uYXJ4}Pj!U; zq8a}RL-S6)G7r7uFw0P}$#i{lZ#sk{$Nw>lOVsWE*ig%WM%pQ*DF2Ig= z2sfI^S17k=J$=^dY`gfUw10Bhe{Rk`$Y|A)-k}3z255cG`X^3!tCV&AWJuY4O!`o} zg)DT}=M)Ex;b}K`3qvEp(>SA~m)~4te|vMwpvJ67g7q{!{ zu2*-Wd{-<*(3&Dl4xa>%91M8UsoHBJv_FDW&N(s>dVvS6z=PcY8b@7Wrpb-r*C#;r_4S6gNsV+fQ!^^e#@c3yj>pDo~eVLh$+g%6h)f`BoF(((fGcr{2NN~lRmE+ z--vNS$k#ITum2-|+6^u4rcw@;GoT%l!CJ}Q-PGwoCUvh5V)8__*JMH6Xu}Uj+d4n>{zcX7Zx4%rdqrn7vSsuLfr43(ye}Z7ms8ILPCmJEW zcR*wMk|Sv}(1Y-GLhY2oW(Ga{ocwNoJp-R0QD2aO`{{p-+}g#_k{8M=vn;|U(h!kn z`aeS`?uXN~(_un5Nf5Fi34&XpjjJ+i{r$~vikckrlqx7uWPnXCZL+v8T3pZ1&TcjH z-5VLyXYEZ83%v2ynTB7+hWFMcjclwKGk#V+q7|md0wY@zQEMvl zNbazvw$~GX&WrJTU5k?A<%>kl2fPq!`Np;z#1!iDrzAye1$%|bcQRsSx7DgU#J9Tc zTzXYKXWQWFN@Pa~P>8QbUjuBU{r^ia`lUZ+|>ggILwDCr2 zhkL-oJ+TgR7KP;g-#Ps+FVam+Oc)BetDI(3Diu*% zF~m#=AuA-zf!wxK4x^lfNpdKMX&frdj0!^x<2(qH!^~hXn3I_?JXd>fZTIurz2|=Z zfBK`>^_rS%zTeOB{ds>r*Y~oBIe0^lbqU{4JcfI85`2#68*QX^#s;Niwv^YBsN#>KPg=8e`eQn6zptUY9rW?Jw`m%X z6%rB#9JH>bi+`9(Yw6saziQQ_!v+FuK$@Ds;?4b{!5&7yIs%9_CrfB^Ros;j6-C<0 zN0nU|+zu#iW9I~~gVPK45LHTXI=GFK1SiSvO6BRZtomBCAN^O3^z&%_e+uVM)CznU zp$CY`5)c#IW8!WuWHxQ((gP#Sg&w5=Lq+9Ywch*P+A|#^S^J6bIHjdDRZzy>FaEeK z`moW!!=y`IMIA#>24|S;5_2$@ri^((0(V(#B^^bipQ%a7p79mlp-C-Fsfwe32@LPz zMz$!dE}ng(@dEj<0rfto+Ln=Uvd(oSYj;Jeh^`axroN)v%h>s1&z&-V*r|t&MSts&Q@6~o{ zdMScErZz*5nomwd#??a>(=2eWp5-JC$hRL9`^63B&bVv%R-4XPUGA`ew)zPMK2l0cFQ3BTrp?*6D{## zG|aICZ=u9neDhPlQ*tLg*g^>86LyQ{|7?9&s zpjp&e)rC}i#}e5xJuWNei0iOk_6#j08JBe4TYYg>yq0k2T2_QU*ntyx6m*U9OsX#F zO}V*yJ)ko}Z_Tx&@H>PyVWoo!Cw1coMZ$ip7@pTHQJ?saX!*a@@su2-X6|%2N2hJ)75?i1J!|{pOPGuZ6u=l?I%)N}>mHy^;>(zTM z?(kQsY4dRcue-uDmxV;Q%ie(~E^gTrj<#n6hzt@GL0yzyHkyF3Z?eiAEW;g@DQU`^ zC0EN7rsAVS`X}yXIq}bR*iOjco@ToqMAZi#%~v)_#wI~lnqz*m8#;XZm#--3zjGh8 zuoY-7DLoTrbx*TR_Kga9;d(4L!GO-*Mp2mWyg}JU=q_{8TxVA0^=D zpJJW&V2ah$vR6kVV;*sv7X!NA*diL#B^}r70{!~q9mqv6$Gxch%sx2;MIIT_5A06M2t;c#1cTjr~Hf-E6|KO2bWa<}Q3OK2L zf$d}19a<4Ocik4p4H^TKKXnAL+rg@amJhbtL3zzRZteyj3Er^}XK9XU{2mh{4jWR? zFofECV26UDie7_UW1>uu`*A3J1p!}7dMvG1!<5&Wf$}vIyn+Y=cX)=ybku+sJan^W5_{Db9)4iUl#Y^MON6!o)AcpWelXiLb9oF&L07i zxbW2B2e1{{$IMu68l&-3RvHIrhKrc{f^5Dlek;X+_V)Sy2I+b?v#wh53&J?~ z(n>*0LqIAgaC|FpuI}p6HDq|r?i>UOIrrU16jEcZ%_BC28d3KHO*Pu!m6Lw?ov_9i zn$W2u=GP_@XZ_zs)u)#lF65gB_G;PD(3IX-)YDU}BL{T&Z&{n)EqPV)^E0F8PVYpy zcVEc_7ux8{GmSkf(6m9Ws^sdZg(*2)c>+W|0+KvKozgHKzAt{K{+YZ4rfDs{314Ct z!)(Tz%Lq}lY@3PEAwc)=U$M+>l-DWz^G{TwSK72;)`sad?PvK;!k?%doUGM+vA*_+ z&4iDu2?l-N))EIriiwyfBO8ZE`+m?Un8u>%WWsmedHIC75w}$etc* zWZloD!Nvx_l!ACIp9vpQ&J61jJ4s-*Ji?u@ejsQ^cT0^V{^7zBiYn)An2TO{nrcF$ zK-a7qd+N_o;lES-r(7CwLi?8JRjr69bEq})CFk3iCf+rOLQ*O4SvP%bRSMh_iVn*a zW8(fw2NbPa46S#Yc-wXOs1KauftYnS{K^!7&5MlrN9H4pR8}Xv7{@YI?h&FuH(bG7 zH%-)m6Xw1r_55;H9|VIMV|oMq-i!|ZkDm_%x>HBah@ zv&v-WJ0Ek!_dd_FFT$e#iu3NZOqvm$T z2K?qfTS>qGLFkH5T!Q@;kr=Lwr#2KsZ7}2$vJPHJp9$p6t0`+E7namq-#wv5-jdhby?uP^L+Fg+`zUUtnUF7lHb@irJktrv*hA zwC0VXa-Ke&eVZH*6;bo1E$^6LPn+s#3h7uJKDOQ!a}*>!T&fU6`IxWt-b`Zkc1(e0 z0o=a{MwP-=zF#8rzo5{?{V;ejG{f>s#Qp~au;unQj92W?j%$)y5uhI>7bT*oNRhJfW4N*9Z|4wpjPg|Ov;YPjO(bOOfc9AA?OoE=No-Wcl)I6BdgJbJ87m-*%4k-O{P;Mf932U3TtS6J4bn9jUonn6v! zfMnF@_hz6Gs7}}B{IRTfb?cGG2_k~BTTwpa1J%WkGM>Ng6lkZ)PEdK8rMYk2GYg7l z(f&dRUJi%W}@|_$#;k`{)`iv6&dre*b1VIV#+~#}YiCS`z=;556 zgKsh3B7AD=C8`CL2csm`koR!uUDvZ+H3Ehiyc_wU72} z`rWvE4`wfBi4;O+D4jCb_MQ-7KJuDBz(vL#UwEz)QQs^rf=lnSZj)SthS)(}9eG7{ z4Ng7C?;+(6u$v@lR_`;2W;pDYwTE0n-)B4_p`lT^MCB?`AXu_FXRU0CIXdg2pMtc0 zm-4b#XYUYyiLf8=?>$0ABo)zR-@I|_he(-P&eNKqhcb(_3gv*>O#uSqyX_vDA`1{G z2S>gR@{^MJ4d}bM;?0qIr8@I3LNwZRpIMNWJgDuh zrpTy`(vYB`d}94jXz2YfLj_&H7Gv-?a=V|3+iR{;+2`{4m~pEF;;uT3O+nO6ScBy3 z9nbGavs)J15M8V{KS|q8U<$N!_?re5DqxN5CpKwJ<-qu@Ja=(l&9J+{+AH5Kom~7^ zW(5`-nh9Q!1&$G`egh~=WwPNf+PnO6L8DEq-OHm_(Poi(_vyPP-R*=0fg3!gnf^esg7K*t3!#ocE-g;jBx2 ziLtI-$(DupL*!ljbyrk7ukT_+-h@rlT4fI`YPjorkfy~ov7n)+!FfV?FzYfE#zx)=Y*ldn| z+mQ4sJe4Comw$z}qeHZgCrfh;z1y%jKI-OWBI5Z=eoh*XNV=I7P);_tbfZb&5mjGP zsDH84Uvzz#xoQ?}#`vJj(9Lf#s_JAjYV&FAdYgx;*zU$JCm8IXU$uzi5e9W*8|E!Q zzNe?GGCOd$p{H4$!qS2n9@-q>5(EV=_Z8=J8?twg-HE&y6Z$@j->#I)SgF5{6}q*G z_Ptwq15teBHXCiz2}Gxm7d`PdRh?E&zva`~z(G_vblBZsAnNrdw!=i>T?gO0-!^1DbUJ%#S+A z`%79|9vxorM2GZykGP!4iiKd5f<77Ru1@q2X!6CxD3ssMojz;1P9gmr>;bapv8A^7 z_~iA2daTkKb3bFZk6W%9q&y5eDcOy=WgPrndz}1%wso2qHkF{$DS5FE+)5mNxP*-IQ5Jl`GJjELUl#)r zCxE!4a$OV8LlZ|{1b0?b_66YCA6rwFm6u)7 zQ<1z@UPS*S&}WGFr=0DU&_&MZ$U>z;q_@c@|pg*<_t zBi`(D?GCi)7jYByKQ}oz1QB5CaX|5X&sn!Ujgw37qe+iKJo3fk?86(U$`ypdX61{w z4I33P<(;koAA#EtrkAw|sm6oWT@^i({Y&5E=%Xb^=5;~wgj1|Z{HE&ND~jmgzH$3g zVAlCNo_yfgQ82(H{6KrK$s!h8rf{WK0g8(@y2cW#1#~Xn^(QENVyhn@cIr%BQhr2l z=I|j9Rc?wrFz)u?upu`(id)vX8rO^B&PvsLVP2IN{j1`?`34$(>e!JB%&SYZ7oNqk z`QQt8{<4#CkkivWJfY<&3i z);C8rQFT`wGa@gNcO`Q$ZIz{ysT>YMb$I#e8t7|ulSQo}icHGj4`&R4OkdGr>&wuDp$dL;ztv}U zMy+|(q?qmb0PbK+fQ{#zxyR1ikXacI7h#Aszh+|4%WZ78uFjp_m8Aji)VvpeRJk^` z!1P7XGE!*`M>Azd-xIyHr57)mKMw-P#ZB*O6W$`~qQ_k@>C-6v{4F5w7mJ&{qGay| zesy6eQ^wuQ`{M~2fTwp!VOI^X2f(dnO{aMdDZ4`L`1SufLmF#Smb0xNBaW`}4#j42 z>26xfP?9K$a5Spv*g#q9I~30PElsz|lH5AVfau-V^>#UwfR?=5LcY~|h^pw@RkpecA2|)sBVrRt>ZqGOj;0(~cCE+oew{-o#%LpL z24m)vYE||$-lnis7u{aEkFRw|C0ZPR34eQu$m&g-tgzjS z2_ctj4p+X{+iTto5;iqmwEi6N{tjXSxaCB`;l13b{7jS)GH+VD=5vsJGrO^1%wV=? z0H()x?}H}i8)Ru?sGMy-e2_k`aD(*fs*DcB54&cH^2Mp6qhaPi0#lPYls+6Ng1Y^D z^Q=ZmUO(aqZ?a<~yJo`&Hsyxoej_YSbVS*AM5w=T)U+kV4kW1r%cj`A67+8&N+35V zYX6DNl(fGx&p+XeHnUZWQ8xr8hN!&v$mtyD7eJzA@%Z7l8DFg!evA@8R7PG+AY$KI zK045%+EW%z<)Z2(`mLJTEn9?n8Z1KA+}Q)>d{lKo98tf5@=l|4c9k^yahqm|j^0bG z=t#pz-@GeS6$w)YsmR(ez@Z8CKJorBI%{bY0wJgi=PMg)pI~qHT>=^yZkhq;;#Z{BMep32 z5^q$&=SSuL3DX|CJho<*w=!&Ke}Jiv&S%e$Xy5gQvGQk#CEVH3jPLn}#n{~AWNRky z=c;@(D6ZxwC(Tx35(f;*-NeuolU%%QC+4?;oLx>+wXpQHoJp5JJd(fVfo7~({P9%5 z;&&iOAB}U|rR>fDJ5>rXGcQNk)hTSvefDuG`;A8oKeXNzh;&u zbnWYNIF58@*13j4K{TL)Ti1QoHlgu*1;RU%E{P;Hc8eYb9X6$Ok*erZy6Ey7HBWg% zG<)|Y3m`VV-(ECl>{W%ILpp|OFCj&RSGWTMCo~(IAn3QN%)S*YHb-zRGdn=vL-l5+ z1CI`}k6`ODN~qeX+Ync19l#H7YfVzc|AH0AFCmFF1v4BHyqug)M9xIQ<&CrK?^!cz z5Kp-2T&4L%LnEv1hiPVgo;1}F+_cUICz5*_h?=YgHGZ2%n4U`WI$o_hLx*}h7HAt> zd`SXZi3l%-8i=h#$15ahcR;esGf07wvya%l`lPR3{#_dT>BMU^e>09AKRk2=XrM{gP0fyif+Ic$f_CE-80_>>lBcg)<(qepo zrWorZp55aB8`AB<#L^wCHUpgF6$C5vk#VAfF;u0qRx?|paL;6+C;ka4dH#e{$$>bF zT(|twL?onaetu;8W!8C>SSflOW@c}rM3Rbto ziD8a!WuKPUM<7^l6T+*8EJ4k**CoJw91xK&7j3*N>w}M_NB7jvA4O=tq{U9~Z*QQF zVc@j;Vxk^I#SKBZ?Dkd&3`jIbfOM%M5;|k498Ix0qqx}EOp6YTeiBNxO#mLq=rO08 z_pfxQRIonv&Fj-)5kMK)oDDuR9}-iWr*!XjV26Ex(FgW6mM>nab_0%rD~%S+MSDI0 zsz6V)(au&1=OhQQvw=>Tf4|KS%*fx6DJ%27!DLA)0gbI=XIX$EEL)RWm2DEAaiEwKqj^0-*ea!A7$5jHY zz-UrOz{lmsiN?RA7`iC;PciI=!dY!X%)9jcDL1W4ZGjP-i|HVa{s`GaqjAOVZ)g&x zneL1moW1c!o<7SxRka_g3KSehuV{j>I-YCeTUT7EAwM6BBAxV2-Pof%==)}rX8v(+ zo_jaY2XF2Fw$kZ!@^!J1DiI;K$_T9snHNSH^>G_3KU*h=F^#yDk={WLY!p5E} zeO~(9{H$GXe;|~<7TM=`c5h2o6|tk45+k5#K@7MtYs>1`+7DDX$!rW9{3|E0)Efh@ zooF$OzqrTR>{O`5K?mcQ+Yi}~K{u^!dE0U9qe?2*@UkwRUb+*3ME` zI2ukBl9A)+b&u_f0LosaKU9CrO+4gIyG3iLg%!maCsMOD5{?JB2AyI1+=&W%C0Ce&wWHVkG`dmH#5aKJZ?fSLJsVT1Nfa>7K`b&`)HYf&?0CQ^jpr1)TTY8Y+Fa?m$ zo)ZMvlzL-x)A4o5w4CW&I%XeAD{fQ2JNFHZxNz9RzxZKR(wK_*5e{G`+NRV(PDr z)x)(K>znT9)?3{+Ht#jp-TN}wj_mpchRDCzpRwvby2p8XDU?(;0s#2t(oWYQTS($- z_$Nh_)UgB0Zh*8<3*%AXE-yB--g}tWEV?fyVNHClS^$27u}M{>lui|8IRt5K@kx#- z`epYmr}rFgjdJenl>vUPY-Im3S?k)@74HWd#+8iR-3jd3FA^mQH((}%^3MKqc z&uoD%2QbA$ifa}DnF-rLZ%f(bR+$Yh63nG$CEJDp!x`6OWhRDghL$$D;AXVQ@DsyR+|9 z7W9|(II=mWOK~ax9>x;Xbqg)Q8QxP3r{sg-?0YtryuAP z9@lf~)p_~z#QMUNKOUj`AGfmQ!Qp=PSW<=|-qI169L6}j#4;yh=sVmhfc4HsPGhpq zP_h~Hg^aVx99MvpeK1h-aLbt8CHo1epb_8fz%h(x4jX>B^~2$LDx95=$aK>?QyP`x zvd?u$VJkaAIT|??L*3)4L{>sHhos{lzNYPc!t1|3wnK+XD|0g(&@IZvZSdbWpX+=< zqUmMWEwth2d?_Kmwv>Ok?mGIo(Q~j{2<|uC3kKGo)C)jE?UDyb$W!ic&`bi;syQ39 zp;>gYvpFp?a6&Pc8v#q7<^aQU(e;?$v?hZfyz5H$FLYL)JOiK+Fm>*xwn?DHJyomm zNDbcYN@xRz$|Ii^z_6z=RQw4^`V*v`rYmgh?8_!|pczo+N}Vh1KqGXW<7-RACVtozJRH=sa5Z2ozYIV57J>a>k+A=)2DB+?rfl| zN-j5`U4W@W6CNz=Cfg?9VzUirtrQdWE$wokL^bV+Q5gQ1u4Y?Lk#TMSY*ke;1a5p2g9I+R}3OIDRE z_7Ss^*luvzb5G5HcTBgW$#JI7yCJtGP2J$ek&TqMJE8Z6T2UiykzzQuTi+%vDPfZv zWT%Qy1pP!w>H<}HDmRzLTYAtHT0BtpD-a4}x!-Bf(_Wr!PD*OXNaaIZ{TH53XZG02 zV{N`pQw6sVKcH0=P9w^LKg|tGo>yQrf=)Xb1U029>ryEbI+%bGlIN!?^>qM5#4 z@YmN@FRVxk+m)4s16YMWC<}ekuOJ?YZ<1B0X9|3_kP$^FT5=%3a4@LoOu|%xiU^W+ z{^^~{?4sO*Q-(Wk8icuTfAe%*bKPP#xV$zDs@bV4&^Nc01pZ!m*I)m{pW_$>2Ih$| z*x%PK=e#fT&)Xlxw&sEq+ufHVJI z%?t0-zop$uuAm=ImN!xOAA$zvmvIm51HL;BAgDUm<7gmK8JT{{K1e+qgyBQOfykTI z6m&uD>F9Pu>(9$;F`+NHxbB9A`{To8Li!G4f{Dbt*b`UPcw%egyW{K6lI}RQ;UB`G z=C;^+5|%zH68VqA?snp|%L3Mq{vf>_)~~fE)R_ROgz%XQ5Ldv1D z>*;7*$Q`15X@7|-`=M)olC6b+!7AVp#XzF-JGsc&CAb? z{!vqzO(v4#$Y)jFA2|cFuiN)<;|CD5=!t+iHE-J!f;a~$S~vX!6AujIYfHNz!Fqrv zZitFDd+|BgTTIY4QJz;6PE4d-nJ_zVX9ICNzNB@!Il_D|#o&Mr7@UkKzfZ1$EWJMOnGq>VIhK_D(DOC|7_ zO#=OzJ-Mq(SDX8Wt$ELBoIe-@JW#5KB|9=d>h8Ye1#znkg$kRRbvIyTmPr>?fk#hz zwR9=!C&xCmxNG>hJ~aOSv_6$JbiTybX9amc*gJsDDWslk|Y(UBO8L! zIbOzsSx>=Xy_X>e>i|B%qyF81zArtnch{^TgL*uyK9lXFe171;?icGe%7YKol%wg4p*=+=REuaZv5>?)y)r2 z0RYsEd>yyH;X~5+r&)X15Pw}t9XwQbz!Y556H*MGEJD_mjtuvu*>0w|%jwkoC*oPF z{f5@JC(5G^5-Pr%Uks3{|HjKk7S^r=%5h;j}Yq6vzg;GdHqCA$G2^S%3)gj93DcwuL#4OOrr zO>%Fzo<5?TboSC22xoWnO#YYl(EpGKfCj^Yv59*w-LYILl(31XI(OR`5bID>V4IRV zP>SCUIzH`<%)SE*EQdA1VxYjVd~cX|3s;2H(_!%p9guq~959>>TNPJ2eDmPo&I?_j zW*!tT1!fDnr3E^NZ+-LaidAcV-1ZL_ zxNT>bq#*;KJ{0u~Jq=M~ix^UW=FP3enEQ~e!s znW9nYjIx$_gp(>RVZ7(g6;atD-BCy1x{>rO2!&aZqU$qCKBU7OQ5E=~nNw>p#MTpE zvkcdBx-HN6z{f^`*HsDZoxmSzlN5Ycj7)7Y;GqnQo%X^h^HOw1*4`RWEOyMz#))UB zWe2DAjPZE>MF|Za4Wz0>s~Y06?!2T75Y&mld9<;nK$kPP@t@@TMf7eF-L?C2B#vYi zE7QVy9t^sV!yCA2_6Xm7yokt>?g{i~6h33l!=NRCW*+l3k;YD`ynzdIZ_(|K6S3+B z`qGJH^;g1+JsMRtlA8D=zsae$DQV*3^rR4nM}Ri?*Tk|vZYOXxsDz(ciktU`>WqZy zfh@yVNMWRAi>>(F88QvfR*C+9wTMqEp0$nW4v)e;^UGYB8k-VClBPMqH;%sE72E$> zH5xc%S#y1~&)yW*x#+6bc_F?|(G}j!L+;Mg&u!TNP>bi`~K?=3En3VkGsDa+gsI67~=9Qj3PtPs~!fQ+XO8023x*b3$# zMFy2bk6%idC_+vpf1lfLPCS^gjc9@noYuI!MCB|!IdL((CcJs;zE2}IOG7_T2 z>wUUUKoJJ6%%Hryj06TQ6DRVHtCs{Ie%{l)rhH|<`=n9a~;f^%)3`^p?E z9nnAO@<>uM`>k}>iOoAS>CS|6I5R|CCuZ9IgIgD~@@^8{?u>30OBCR~+`tI$h$woa zt}#2oyj1B(j42*qSBQ-u76X7^RZuGWfrmC3P5J5ktxUv4PB;rg_r$k^yhBjRqk5Km zvQ8MvGq~6Gj|JR8`z6%kHSRfQT|_jkZay8IF?2F4{DxV2@J{pe1TF;MGD`AqiVbsT zoRhULI&;(q8Rjg^XhaeJ7RlnsAI@tx!|U%cV)zv10p4kc%9Zf90`JyHth`|^VRB-< zgIS#j>H?#cOo9jF=^vui<*jQ?MD;Snw8x6x$0&H2gacebR}?yZ)vQSeTX4@uv$-J$ zU3jpb$FRm-z|mU<=-$8T$(rE6d8Rb@KD;z_E;GvQX0hRie0zFR_lWy7CKOK!K$nZC zM85v3$rF_a5Y@H>eltDfI6VC2$T@>1OXo1i0Uey5wLG(1Lse8azHX4-*+irG1OZ;2 zuhYWi`GZx1{4<}m_{6m~qtrL21bWQ)816|969*D^gog_Q!Y|4+LkF*#RSy-|9$LP) ze7lH$*g(M>X{cN2=)0LSNMk+OS28y;FI8)(D2Lr+R}k!`)9K97fa&%DN2sei<1Wn! zyLkLmU>x;PA9l-s%PW6a-bd~0d5t4qf)0k3w@a0b7?S#1jZ{$?y16=t7bU+ zlJ0pbdki3adkXC@wFcSBl^D9_O?%`o20Wx;#Xvg@3I^rBN@3vRc;do9drmXB*wCDD zp8DPgMQBW-_b(PqFrRp^1uq3Nz^PL4H`NEyruCouFn#6@*bULM_Tt}vN{`inz#|f+ z`v$Rqgpc{|RWY`gFOuq2ahkW%(&&X=z@84=WI=I{u$`A$xD3OY=^SdVv>(hsjrkA~ zed^tYGU=B@^KmO3A}U9(w_0P*odG-}g)k3=Tmnqby@W{f;muuhhI$4KT*{$pRN`As z0oEjv++Rre?@1p}&cf=5oT$qltXOYHG2qadmE4w=z-r2bY1+iao+O~dpcUX=MC1yJ zx=%2Mh}}T)IjA|EbC7*wN>%BK_S5!k9FWNh1<$*g1hiQ?qp&5g*uSsFKE->KUf3M? zEbImd;#uO34`|(uoAmTfc0gzH3##la^-s{23EVX$l2`QwlaAB#g0z*2CnX z0-Kyd5yCyZ3h7TiGH=;@|2ZgL);O0BYCJt|pb&7vuz2w_v1ob_ky-sDyrs%1->&n1 zZV1<&Ggz3SB`-X#%F@2h`q(lx0Cxt$I1RuqL$bJmIL(RZM(Nn-0sCsddgNT9sTA=3 zmyBXwIPhNDnSlu5G=yLZn#kTl^0cG@lWLaRhysY-^3i=Nj zkP8L|;TJla=pzP%QV%BC9u>TgBo1ilr?)+Kh_&SQ5F5km1zVM_8=rG#YOu4hQ)JX75gSZ!Lo{#4in$SD2HQ zRN57LX!krnGsiD17Bwx(jL-AzWwiFR%H^rCIJs5`+ms54KhH5WcxB%SM95FuN|F|O zCol_w|Ge!&66)@PJ)9A`P4{rH#>2E}gXbKkPo<+C81L6&{OkGFv}xx@Iw$0Yg(+1dq>-n`P(fZYfPBx>fiNu~PgR?k<7o|Z$xXeJ zm_pl1Zovo4UJ4 zr{<-EWyoA;%qWdQ$<@Y3#|SM2PY)K~+p)4Qq__mQ8I)Atp5<*gCv2`<&uzJvJ~U8} zHjzLVQpz|2WJVKY_!DHf%pOkbgXdJi$$wy+Py}kJG>>S0Ab(1~3SUgv;M1KKve*PU zW>(YMmGO+mh8w~$cM65sV0pRk_F(Z)T>}ln!0wo(qk>*Q26SOJQqiB*Ykg*Z(3w7IEZyfLy;sQ$%6*yfXol8`7yKkYKE{2Y0Wm5& z5dP<`x(S1_&PRoUsd~%GH1u<^gmLJT>iq=UTL1h(;QX7aK|&V7w-}CT%0>7L=>q4( zUK?b@)Bv#|+&Si-E7Cs|5n=kBV^pMvaKC9V5c0Tp=}7h1ZkBewBT>btTR4(4U=8ga ztLYhbmz)e}8fRPqsBZ8Rupg3Clc7yd^vZi>1D2 zbJfgUluffNl;!zkyrS9g3+e+1wRNIf<9#=)%k}+hl^U%cN7Escud+eqImY+{1j>gQ z1Tqfmk0?4kfN6BkWmr!aWVxg zdH%O>FhW%4j zc2|pD_WNB3|AmqMN{ig#mU|HTs3#+l%k*Gbo^kS&9QWl`725i(GnTjU!7V53s5j9)QUNQx>1if7UDG4MPZ@!N{51s8RehY9urkg~PL>4Gc>2*0Cf=ih zVJ$286ajA51@rGJ=Xd+CGz6>@%W2S1UthCo8{ZN&d0XE$s~1rgb zZsq4?Po(RT@ANo62=-lLCfn9LBh#2TWRP!PW=fw74l=_WEjAqCZDHDTozFT~w-eLUpx~M`!+f8t#c&5TW&iq!bS;P{ zE5;is9;_Ucbx6krX7gkZ$#F(ckR{g6&tKk-4}XNLFjX2T;-@~F?w)F$o=F*U#j~x$ zUhe8<*0fiJPTR+rGxs-dlA3h{-n7A&q*#G2f|s8xF@F8xlyr(czol|B(^X~m#WnJ+=mp|3d;6nqc$pxl%0N6c01ySq zf7~k15(5-Eg#vxQ8>HvltAn|VI*SMu%1Y;9|;XUly3TmRwoYi z(+Z!<*nQ&ZR=OuNluPHpBIIayMrGly#ol#^Whg|N`FYdl#tAh6zl~@Ju=e{e1(!ov zm=-~T(v|Ok*Joae<2$7pJjWoReOO@#OGXvO8QS6PMTkKxQl2Vjn^zPnpzVs|__$1i z^M{^?BB3J9X+xmUTuj7RLvmI+EMGARxbAtg)q1eNBhl8@;JNW5WuVwEhz9Z?wHa@U z9FxV!N9VNlz5csBD;loJ3TCcBNx7!TI{JP`-N|{*17qEqURfgP)*Yo?&DT?>OUz>I8l zeg-knVa1hL3JoShy_PmED>{5XHo4N!Qc7$6;BctZ$G+v9G)>@X&d(%y&@ad(Zq^X( zFSD~Vv`8LoYS*Ac!cadIsT;&h+5e#?LsTIG-q6Nul7Xg42mD^%%=;~G7pBo52%tL= z_q!#|fjns8r~wM@Yz2`Q$`&q01Z(sdm(5HLq)7lE5KHZ9>7okna|2#_b~OmbiK&cg zcpq@U+{C~k_0yH}o8yG=%tM#V&mTIU0L|#D>h53IZ7*ra7y=@|kR$N^c6sEe!FM-7 z9mXAg?yc9Rtp}~oAbrY$=I+>YXsyv=5~m#^Kn^8KyOx{ZsgF-ans`d^RMHdS{VbQ7 z4pUa0fI2YlKPD*&!cKLo%e6e;6yROR!Riz@a#d)Q$z*(>$4 zm7~USB?J?{+@iH4yhIc{%Y*0ErmRs9cZXfdOx&+(+aOxa+R+K z?wTpH-oSGDBr(4`1<^dY)Fd_!T8>q4nL*|maMUxaP5dgLm_8>QmLl{uSx}^MSK;Yy_H#S*rBx(hA zDBQdO7yHjlo)-=VE%Rm5NE?h?GfG-vYYr>(3AdE0rv+cJK{i;j>qY)I!}yz>xsIOY zSYNRp^!EUI*))uO63-(l1hRS4Fpf1gxFr@lN0qdXHVT|Mntg@F^5vfKrdnxo3MTsF%dY}F zWaIiM(kGkneI~tKs~2oO8YgHKhKLsDN6o5nrHu33aHcVC(hni$*4J%5`Y1R4q*smO zU8@PE*_wHZ&i<(E$A$a7&d&U!sYWPLAvo96oc>HVo zkDf|xi{_k*z!V3!1UjME-{&KYMmMCFp@4_t3l&Ze2?na^gMEIU_@O8y-Gl^blo#&5 zT~VWbogVQx6L?8O(vT1UlZdwJp3FgpunGZH=aqQYcn|7I;O&7ztuS_f8R~xu>>o3u zFeNbQ{j7;~&fUR$A){jEDk6oYffUnghPVk)YO`R&2l1Mx(uOw*RP;UDQKn-cK<<`uas`gVm#k;wV6qq@iUdvjlN;0?N(!EGLKi(WRiy|j(O{UYH7`4+Y+ z?t8Q0w)Ty}cn-wZTs)+yf3v`2$>hdh0?o-tC_T{9cwCrws=TA8wxLJAl6ab-U>WdY)cm2!l>?eItQ6-uft;Xf3yieFwZnJT?KcVQ#< z<4+9t1X4=#Rl{BXouZBaZ@AveP6KzMLPt^l<72T4Nx3BK5BGnR7q~t}h_i3D7j18c ze5dry;3)daCNAr4y8J}?O$1~8^);LbZhtmTft=WsOw9kEe(s~fck1tu3s%8x>|t;L z0m3c*R!e?6>&Jxy-zvO-PTe-?<+*^12+mx>|Ms>0|NdIihoJcUpTt=xt`IeptF!&T zOA`sm%nl^hV8hra;hum+iaoYWHw)^<kq*xtqDUEsc^(J1V>7e z>oXDD4cBKUtB2V0okn-dtc3|1(K_bhe#kF!^>=pt^^ed0wS%wo@o@|8cDwPnj1FV- zGWkC!QZ%|ISPGt*#$A=TO7 z9Ilp?JTCp=ty){Md{2;f8+q7NPTBqce_gIk$+vU)q4fWq|0ArvTT({FKi{6S{0RRI Q@aNQVn`0$MFaPWR0lIwNA^-pY literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add Header Search Paths.png b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Add Header Search Paths.png new file mode 100755 index 0000000000000000000000000000000000000000..9a5f1685285edb8638512b30193db2a136954e69 GIT binary patch literal 106453 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

@*QBwiivaTXm;XHch=lTG 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 lVxw# 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%0DW@@>h+D?qvs-FY$)dL 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ðk^l=c}w<<&noU#gpC$gHi6)F1?6a_ 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Б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�W+V^R_`j0>M*LlC5bPvF1N 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�StaDZp=RUzZ0exwf8EfVet4)K3o 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ℑ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

D_kXHZ!)>#K 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 E0J1|QCjbBd literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Create Workspace.png b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Create Workspace.png new file mode 100755 index 0000000000000000000000000000000000000000..a729d87981bf329093709eb4a632501f5bf4c161 GIT binary patch literal 137294 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

Z-p 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 z zt)(GGR)T><6%>;GIkb2)jMf_KW99_snqP#VX48p+Di&b!p}uVotPrTR-maZ?&ca(- zLKE8hcV64SbbX>X>4Q$ko#hco8Z}Z}7Kgjd*n;x zDbmK4p1791YTNfl30L4U9fmX_`EEFCZ!IoC-u-Aa1%GY+C56-AoP`Qaq%mf;ZJy}6 z`}p@XalcQiRJAt^5F+uFE^yn1>wUxWD0If-4L{0h)EEIIxi?>ncf!0+XPyfwvUkjF zfpI(CN*sK z&4zJsPI`vyu}|hs`mUIB8BD`=Rl+l46GY4kDKKJ8qN1|oz_GXRh3`GDRV(JP*R0`o zyf02w%h3aBXS*HUXI(AkRxdQ+)zO#?N_fa=m?wYG6jRq`_K^z0*!JG{#_<)7;uKcR zmKJ^bv53}oV`zJ~G5nIfX3`-IsoSHU+iNTA5J@2Lh$Ao1c|a1(dQs`K%=a7jPOh>= zeAS(wGa8#`qjF;-;K4zq+CuN7ASS0Gvd*-H(3_VS#1?rS7`ho06vRUK5yK|}m@ozG zE`h&n&fLxR0T}`LMoSQ~uOOu@K*_8}teZ3;C#9j@r%N0O-@Ah}vd+a`X?&tx8A_M) zJYwlLDo<*%L!Vw)Z|GBe_Ev0c`UwJ7RlR!2NYjO10JTHfypvJ)1e=xc2!}@tK9%R4 zI@wg>OC9y_m2vR59fLNOla4bV`|7ySJK?ag)oN>^&=m+Qn0js=rmSx}373Z?0RvRh z$4ylx`+47by&ksZp3j|&Ne|g8>_=|$xO}^Uu;8(^+1v|MjT2h0O$-gU!chqy5;cR_ z)GNO2%d-_bVpG!cINSAdx#$9JujURBnn0gl#ejbGXkY*g}4(-F1q4F2Jg7RL^=m_aw0ZyGir@^1$DzX3uOt3#XPnZPSbP zP^?h<{FUeamWp8igVxgZ!R1LZPxPD$&e431a zJMC2=8H`?%W>=nXIcG63pLcpY*u(YG@z!ecRZ=gatL5;!Rab{!Dv@;tR?q#0UxCI!nYWv55rV9OIQdYHXZmM)Q09)IQ>7;@K}s?yRg<9a}x1 z_G@i2!KCjRi76il%=Fb>koNV#;iQpwu`k-^AV*&9kJln^>IbZVkLsyZAl%O-5b%8r zZRDop)AlHU0$bH=H`_{rb>>TX=+lEqM}%Q+|I9^!3qh!-pCxD)Lx5(}syj8jzEfAC zUB45GFusvQhqL&D%BXbk@k@#po^D{sbZ0~oRZsrOc8NygXCCd}=_fto^Gndf<(E7! z&a$0dk}B=0j&xS`19;WxVmua=#*h-Xd&*a%lSzhDW4p*7nF#alyIar z)48ip`GlZ{pj)V)*GHLUHlICHpUvJ34#kI;O5I;+Ym2BpNhQuJoO||C+>i++f2D0r z{91{HRh|M+N%go{gptysepa7}y5t<%PG5XF;7D&dT~V&Ra(zySnuGPOmy{mUJt@AYYTPT0)SYERn%sAjL*GJzZY?H| zNThSSFVvXsPK9DHOyo)IO*<4f)jNwS%F7Fl`CfOA54yp=uyXt~(T;iBz)#@&e0s>n zMkGcfo&qsBsE;G~GphF%)M-3!=Ua#9@e=8FHicKj%+ysq2YS?7L#ZVkit8lWc$q!P zWW6+>O)u2MreJ=2zUqY3$HdB)eE8L&>%PYKy`$h~9XGuA)`aARJesD5&0>^mS#v`5 z31x};px!h>7}pY%jj4PdcMP`tDys!pa!KgFu>jlc@ZVWo`AQK)qm8*pEeBr=&cbME zRckJbZy7x66{c3%b$dE-=1#Q{gARn|q33Oe4rhY}t*lfcKcreoAu$a|G#|U(&{AsE zS-n(DiYCIZa*&7-yVtyYkxilJs4S-|mOmo^qp^H2Cz%kkdOwX8SFI7{v_Ra)FrMa06#Vqfo zbtt=x1PVClsd8RCagix*R(*TlD-D9^AdqR&YU|GxH0fJmyK2jwb#dUSr8>_Bf}X8P zBaSY!Z8etUlh!g-60noNIT%$dhOHXu#|DnyC`GCH&O1S98BRy_z7KB_`n>jxE|=zd zH|pthR*ase{iraYtu^wLPNFBfP>N<#YL7t#>WL3>AP-wvS?T!%1dFZ?0#H&(P~TI* zdGJjYlOF5(iWMs~w?YRgZ6bb*R#5MvOpgB}jRL`k5^|(hulI`~U`T%+3kL)R_S6{u z(%Uxi)$O|{zz7=52T(IZxtBtbopOXSbVS$rgEv=Kv(Z=|Lna}TW| z_+`DCIZPEt7>>Z=HVNIk4`ZQd*qR?66dD%y zjJg`oZ!@rd|^Ivkq)gL-X^2$8B`JfK8>!sXyUFRNh>6AW^QPRdKm3*Dv0M>>~>qs?-Y5U@NOC zy+3C&2x*4&K=DxZCC`5N!*Mje(C}ci=*0!)_9scFd^|U&dD;Y`wcX^_+zvUDsYA{~ zvik3V^UYMr+56=c>e{6-L89f1gXoCa+ltJylKsFolEOG>D&9(L)4X194>2=;Uat&LRxcV9ZJjb+fHOA-_h zE{Z)8$sSu}*FUK{c#v!mN9%c?-6pz6n?s#KUlA|jVm_`fDh?E*(od`WI`Qf$SzXj5AY4LOuvGrSn)0kNRkOmZ%#d`dj@m!|b-G-#Xq9r-c7+Xy2a=#G|$+{$t>gYV#v-$6p9 zRGcP$$~Wgo`H6c1``UKXDcZVnf?4E>EtonN19(MQMP0e>s?%w-s!IBq^1z74FuWaK zDw(LLimNs99$>wfmX?5KM*Cj4mHlsEbs$qy(`&B2A$$8P_lIjgO)X{PFM-_Vg?2|k2l|dozS`6@4x%|>zRUblgtAH-FQwr-UUQFidBlW zf-%Pe1r+c)1qEXd;rbwmXj9B(W=goQfU78XCDXYq`OqOE(+fiE74O$2Yla#b2m&K5 zWQ{UaD4&mTgUekZtSGJ)rc#K`Z2(SsT&kR)hPpul9SH&*>E(&s;p;UD_JXT-J(3UI zabr4)NAZ~L=jR8+Kd)2RY%8*+T$@UgGJ%?hWhbzwohScMBb^_(h!;3mFv!RZfReJx zYJ)qYqoSI4jRssNcH`votRJsF6Tzt4s%eij27}Qg5_WUcADqRob1LRuB)OV@*{-Wf zYDN-MhWc#^(g-3_QrFO2g~ZU{^xnV-$nB>m5|OA4Bh!y1ngyVcVglQptk%x7bU3LIoY=lkn&|G7G1 z!4k?J1jNT6-#k0Ms}TP0xMLUKIq?dq&A{zBls#^! z?+j4=?@eB?Wnz%%sWe+r0xog^^oe01m9YPrGdr2iPGb%NfoTMFu}) zi$~cw3wI^M)K&a1Re|K)P4Q~l(+aawiTf(b(bFaH_f2#JnHy$%8$cmUQWn(TH;_z( zd9OkpoB@U50lc-@{op_=C5^!Pa(6tpyylxrt*`u zmUSIwe-oBiC)#WONr4CltzY(zld7GcUV`|q4YiK*GBXOf` z6fN~SjrwatJD9+AqBb<-e#%Mv@@b?F&(?X{iu%^hhDQG(?yGcoC6qW+L0o~uMjQXH zFB5i0bP+-Sv#_;~pr5jf)D^;N&;#|BR;F-a)XA1xH8w=BgNd|`L(`ug1N z7K^NC9perJni$wQ#;J>elXAiXHH~mE@l~S;X_ag(iE6`N#7QhOZcCJV1VMm=TGfUwtwtJ^jg+crzlc>~#N2fBlJ zt1*Y0C;0G{^cG;b>RKxD#7ZZumv?7fVd6pyfJ3`7n+u+P_?P^4JJVZ#;ZNT`WmTI= zp9zjEG!*MxG@*_QVx=XqJII^HM^O{rFS%t@oRYB!tNf~VH>F&pXXa`qx9Kd~BmK58TMV{02l7hHcUz7V*Bz1^|Y_K5;&Pr8*NMKZM_l_l> zsqHi(t4VBRrPxATEaa>@Wj=Q$xwLGtyGWY_-$X&sN}>Nq#+JWx}nT#g-a2-u4dNu1rWiM+ihSZU}V4QI8+ z(RxH5MJKfv8+Zd-!cOA8y4v-Sj~uzPeLd0=tZDoz22C2~t; zh8(lZH$y)4xkQhWKoJcOe#jMHQy4^A$P>!)zzYT{q9d>{BtTF#*>6CtRsJcx%WZu! zD~gu-I(J@$P^_&`c}35-MWIS}FY7$0IDS}cNSj;UMw+nRpgSvnr2TfIO5g{}4tj-N z@ywIKH>u}>Fh5AGVKi}uek+QA@q855{lct6)QA-X9$ipO-6{q~&pAhnaR1cy7*bB2B)t0u#IsB2A{Z*PSw z9ZsT6>Fn*vtQ;1tgcc2SS5qxMlJ&$X3y;UW$5e&XcKKbXQF+(lZLfNFLHd;Yfjmr^ z*J9=Pz_yA(>^$z6k_j%24gv(pchJgt8w}pvJx|yDOP>&2|RUgIYI5MqC@SB z62A4fjz%zY@PYwT-tZjz%P%M$eh>LH$~zTZQ(+4KC*Grz5g5d7nqsTBoJR2qJch2(IOB14Wx%$n1x%@+* z4DlswfHT>UGRJZ^03xwiYO9k_s!b8F(Lzx7a*9WxCl~NNsNjT)TRi6X<7&~18cEeQ zac$*D3~85L=dC%cg`G^aJ>sr{=y?3_b~;@u2SjwWv_M1dcg2WEQbV|)BhTd+dofQ- zxrI{Xpza3>oI2_V88c=|yf~e*Ib0s2bM4Vf9LIi|IB*e@VGBUcqnsVu2ZhXoce+r) zt7@4a;LAkezyX_S+|D}o*Cj1X^Ay=+=n8f8btv1AK)DN#ECV}MHcDb)7WIPf)=;mI z3NC_A2d#iR?^scSM8+#RNG37+!2U@@FyIDnsnOtkLW$H}aJ;U5(9A6Sh*n@DXVG7+ z>U`A$Slq?=kSig;)Db>xkB2YtQMoP-L$cS^p~EYg{) z+oYE|>9XzYEy3q?-KPhl_1O4Ta_%a3Q|34g2b5qbTq-Ks<$A-FIp?1qE`2xe;rNrY z*zI`Fxo$%7xQI1645lMSHQooTC&7}iF<8xtjl*My4(1kX(G-7Hii=m?E43d(nUQ`r zh2zbkRaMr~FQQnjH=s1h;rdMTMP3MN8XgOjc0X|pw0_BUR5Lq(e7hM_?Z_r1(kP0;2BSt>_OMVHqa18wgy{K7IGExkV`sAq~S$OiPWgGv9ni!_X~AD}l*P$|ap+ zq48Ofb^{IDi7DG)IA{GV8r|aOz&taHD5mtjonz1Ue)Pa7CW`Ery}H3@*{revQC9Np#F=4L>Iv~y=x z;80Yr&IM#hpl+h-FOsj@p=tNQ&SRx?xI2=Vt#+PVN|@B1+b2v(8mz`7Ooa?ZA0x0@ z$!Xb)7p+R|K=RtGbCQZ*toC!9d#Gqm9;+q&cxXH? zekz^f4c-#d(fl%(WT*xW%Iq3Rs##cUjpoSBbimuE!R!31{XCgmoUevfWM(*=aXt!XXu1y|X^TR?D zWY$EA@kS+xGAH9lnX0Q~Szg&xqkKV?L36k%I33XDSPKE?1{Q6(*ckc>vg`c9N|O%M^?)Z%loxl_{8hdgJn}dt z#T0(3Lj|K^HvG$n2gW4SO?k;G5ndlf3&jegN+io^ly8e-U*+p3VOm#|qLrpg7&|1| zVg2my3ksALm&D{A#9dLw8E29F{1ym{NeZ{ro-Olj7tJ9**em=n1*)=Ik{!>sqV}9% z1I5Bo13*#CDvrOgUKyhh_P2or3p$N7Ew$uG&MuNvhO_%JV!w#-cr!7#`<1G0nik+|LOO~0z!}he=Vl$xZ=F?bhBDsR(4$!E-Wnk zvMbEf1jKoOZ7MnQ=C%gofpuffdeOC~W@lYXWL+^oz{BG)o6iLz5}jsQyACwxd^~}r z5tH1#VP}xAzdrP?suo2f`m=&lL9lp$=KY?u=Lh{M6Gpvtblgw$mpa;~ z=27cIi46HtsSCiaM(NL&`JnIKJMoh6IvteOTLQrwU}t%tk2^zf?3A~;E*S(C#mka} zgv6@tZac#BQNJ+xNNr^2d}WND7?uW>V{<=UIv!|Ciw^|3auim5dbRy-$v|&~bGd?Z zHP}<70FV3ghMG<;olxCmV25-F7 zrv1eoer&BZ(@z3Z4b!3TEP%RH?x-E*4s}q>M+#~y1pVC~^OCm%iJY9AE>R*gGqXb2 z*Vp&#H?NF47MG7;t*|ai(y&nhBrqi|Dvi_mJTm~d$>oYt=92pR^>1$oUVnJJXJ8+! zVFpr)6WAm2NdGwhRGT~DsaHM$C8hXhd|u>&;$q)BR5Y~r(F*TPqpoAV_~)a8J!aDh z8Jd`wctxdQ5Z6FdOE2uoA&=H98d80N1D_j^ffsX7T_J&RvNHJ`^=IIvng;zdS_sc^ zGgRUt8>TFnjh@yIzKE}E0;K>}A&kgJ4XRXVhv0BKcM3va3bpb1y=%=l66aV!9W*uS z*uj-ohI^nH%%uYMsQssGx_GWa5a7;RyzV?%*)!t$ajmA-4G!6{1@arF01g5=mzB_< zTq;NVSyVS%OmZqe$=H8mAePDmo%wU9{%DPfG1VBPL`GWbmZn_jjXxTZsfpG$08LCwLr^RQsq1x6e=>{>ON$XP)|P4$ z6iFf#!>d~o6knG#1>YP0IA-8@b{PFH$U{v(JxM2sW3_2H9;1HoXEgo(^(HA^z<(pj zaatNyOcJL8bG^;XD5VB!kP)Qp7Fu0z(zslks3XYY?mzi*eYk2W+2{g0pWiFsx)0!a zT#r@OV)J}%Nlnu5e7XWwk$(dEA}o!aYZDZtTkRZkTyOjzYWC+{eHpPaRhNp-9b(f9 zzKWV~OLXtM(!zP4HH_MU!n-DVsj=eWObz+NpH!C{SPs!w!lJlbts?#T z`TaZP28qJkO@LXZDNm=F0~*fClj22HdVk+i6&oZi0=ip_BkTo=Th-!V5p-%h;iNKXW#hwIlxRC zd)@Zb%#4trp!>xz%aQFgN+CSJuxDIJfo(Y?gAL=bTuV*Or5lz-B{l#LCHY3zhv-SU z{T`Ja7Xzb^MxXAJ^+(Eu3DSjdj-mt$)9c?^f&s^{t_JM#Li_Ka)p}D9cV#p!vacU= zS&3V){9NPwE&MtmjpGy*71tNhH*V2BV4)~c5XxYwiu7QEJtyk4A_$C&nsPz@r>s1jJF`Oz@D4q&5l-csjTfE`^cXOt1?`nt@#~XSyy7j7hsD(_A}7lF^qHG0 zI5|(GiZ38DWN|Y38_zvK$O#Ia?J&+uw1*0AT+wN=60|y!At_vA&gad3u&s%2=kM4i zxI%eE=-e12L}ZAxN@DwMFRgiuLiH)HTBV+!nyk>2Mlsa4X`R?D_4v)cu8b%!A!FrKGr)O@rHX3|>}-=m3olPv}n>``-){ zVxr%td)!kfsYQJH%;%y0RZDImR|D-04?oohTYyZ)tRL6D`!wURKu%p<<7bG>T=Wxc zK^n`imF%G0^Qo9iSVPpWlIL(-81D*qi(^uNth2Mn|6 z1cm~sWU0soi?hn;hIXmNM&A~M*XD3Hf>v~=F}x`m8Lr?8@ew5eT8qG_G=ii2u&yEr zfhkJ*2~`>@ zFVJhU-ckd`rT3=Ui)PNMgF>QAgGIqD3bv($MQ{shN`^}=d!oiU*;;b-4lS+L_E0sx zU3><4>Xl{p^TVQs&Ot!!@uz-Y`o00?tGy* zxGdBkX7V~gl6m4<2s}E@ApY?4yiUBR(M*>q%Sctw0Q4wd5wu=QOn*?HG(H=aO>IR~ zX+d_Zj{q%RZT)5QjKJUR1Av28OR3zRt3g|5KC z!4b1xU<;!oVoemw(Q)b7q=m^%ONlB+;N~MkoCW?J&;y-`%T6d7mOsS14OEUTCoFyptX&Q)PzH#RkUfHyNM?r3mt5!Q z06Jgmfx5*tgd3OO?3CT`>;v!9Kkl54T5wL&J2tbZrn>y)IDd3OU^nJcjmGoytwGiY zXe;IYI&!7MC=ji7Heg2-?WcX^j^~q?=M!Ly=Dn)mQPj0?*K{m;N{LrB$dUk`46-)b zi#bUaCOb5A5hyB4iss7vG%yb1S98Ix(Ic-5_~Wvkx)$T@3J40-T?s5DJ5_i+1{28J zZJ;IBDx-1ua(QLm8FfV9DUl07GAEA23MyXppPyLJE z+!ZIqsu+@F7h6?f+1I7Y^dCdzlpOSxI*b=8{3GP^ZGh16$49qYVMI3THC}sr`v-an z8&uHjaj2i8JTII>GORh0q|wF1t`XP?IdJBe7r3p3(0>>e=uZs-Nei_WBWMt9i&Y80 zrFAuAm?;Gy6lh5*;WJ37cp^_c9h5=_X@a)f7nDC@l zNes;@%^SdAnHtXr{jd4S0EscQW&DnK} z3c43`nXvWByY;yJ?q?gl-tQpO*lhd6qE{ccS(GTsngnc3rW7YMr~()@x}t@*n!$~UU=XuW7PJ!rt`13+!Ar1sno9D|j zu<-nAu~jA}CbQ*S@%SPeWx+8*0YL$Qp@h%x!iqka5S5t?;<7C`OgA)}W)PHGuJH30 z$6nargd^K(efVd>kzPEA8KP#cjKIoS+4uMNWa)0-I=n#Z#G8n37OmRdfi@y zzg13R=SvC-2{j2MaeR;TzffSaIpO3Nd(}R?J4iBS4{Y4(Q=fp9x<7@ArF^fFBpHtBdskY$ zSgHTJctFlk0XdZ+cImO3GZh3_ivI%w6{>_G{{7SF`O>^N;czOGl*%;{98_<5m? z6WHRnLbn^6Nz`J{004bU4(gU}yEd2@;Sgo^<}_|d;gyvgCyL;lSb-WG9DG0*=j|yP z|Kj_e>v~R~!}0j?oTxIFYk!PvB&5u^aPriR^|+ol#`$2L4%Kg_q%;F84mz&%urwlvO}UhakQeQRjx^>jOk0Q! z2ct;%3bttDTLaad^q0q-gwA^Td0;?JPk(NjwKhLKM)1r09x%0#Nk1%mR8@OML+ye z1hh%K+}Vt(G5XES_(vUtilH|ux-)W&6}t4ssFcexXj-f}h>3e#OXTLV!@|N;Tt8eL zYFF+PGp=B%dF5p0uAj4NE&uKi;)!RG_I`WCxun+8T#ucBQXuC6Hl0p7Q|?B}-BD3n z$Da>Ykt9J6h=7$Be_xFAt(Q*aaz!)3oAK{Dhk=8u(_GPS%_$JjJ1sqD^Q=b_DnS45^z4D-c!E`2hrf1~<8` zN#?e=GXI&?+uZO-5KxAKT=8(&i-0cOKWY;2?=v4h)PenDF6|-EgY$;HV1n9ijYuw1 zNwnqF5#1}Ho-BD(bp615)`(+d$6C%HO^aQ{z{-1le|Wu+=}<>mYQ9h1Ert|p3}vrd z2X|VZR)yp?DW?>&c1POeY@rtQP1yTSUC}6O)-LIKO73h^CppTp{qCUhEp#gDtZ18B z0XWPB*!tOSqiP<~4fZ36cBj5W`_0v_-cX$!^ETBn956ccY8E_J=N9WL3+D^ccFO=s zvjxW4$jY{*VSQBn{LJrM6o>-1olc?*kU2QIDYwu3CT6&@iL7)aG_O9JFPjcrrUK&&mas?$;Ba4|To>5zsa*FAORSVVT!`qWZ>(w-AxN^Va}_ zcVt-=&_8A;(?~*hjnO^?2<}6VxaK`I%sKyA)HqxZ;Z}L%w|VUX&_BCQJuu9SRS%|t z+d^CSpOO@IK~i+}dza`R?Wiw9O9oNF{-*iAAa!6xn|*C(Qo`0?U{D@vGTyC+(9Z*i zExTo8o&T<*FrMfy>G|-bdOjh&-cGSM0uIOX?idoyh%C4V0xKfjjr$92TVqVS+e#61 zGn{!ULstpIkd`Y-fcvouK~?&^;b(P;0B%-~-ja6X^*#XtG;`{u`^PD$)$gXvY4a6! zD~&eA5qPv3O7RSLcW%{mo;A8sD?MSre2MfIk6^96_(NL4*y6q%&$FL(=fUTzBPpZ; zsl7u*Dr}@&ZofcLMw@DOSLM6M%CbqN5 z2J6d2EUv-oA?1EB7@3WDmGF}dO5^gd+gG%;TI-ha$k*s>Ri}G}!`B|5RhVx~oc4zaG2S~B$Ac~#c5XuBh{xuHq*B2g_A5Gt<(rNb%u6EbZJ~c0x?78dZn2B$A zm%Q)ER{JK#GK|OO5%ww3P5Rs->%K@Skgogi^hXBk@8IxsD`uY}DR%%8|BoCUD42M6 z8FvThNl(WbolVL7Z}LL@CnYk`e)HgE<4sDgN`=PGVZ{kiX?JTirqU-1inl+ZD26$> z)dPw*Z6vVCmlw|+c&z}QG+F9i1)3FLghAg;Sna4=Vig(qb7N~RP2ss%EoSz8e7X?# zhx6-xuRxhL_|ev}Kr{-{`Mp`Hx7?sA!D=sBOAQo!)XR!$zG<sHWbeh6K*3kEJfM5vli zBxRpiiMSbjEUAnfYa=Od)l_wkN3L5&P6dM(dw%IzDv7-DyLToUVogmP zSrE%1CTW=ILCg6|8Od~igg1=!s__-HC=}fpV_cGd-cI(nGyi!5dcuUZV;$_pB@nqU zPm+$r=rqeJYWnnXCl8VrYI0xks|IOXQX*pOjr0{`EA!s1^If6}p0t%qjLgOy`zkZp z=)6>_%%`+Bx1GpDihbf7i_Q`0c6Zc~(bvClguAKz^6Tx);T8jdUmJ^5N{<9ss;xI2 z=F17`%?{)^YnM=|B!bxDgB$rQ@I1{W4${qA(GAfu2alOBaS__9G8X3Dh@}X5ssF%+<<5`Mj8)218k&p z%3**TGX$0J&680SA0;;lkG`Ob97-_LjWUnfuckv->D->)u*dEl6>I|jrO5zhc$FkL z#Ei>m$>8;4*e|LrKiHT7+#al5*)N|~J+PTrK(gpVliCP5*jNk=9#79accZB%7v6n| zX9-thu(C@bu)N)E_e5M;m-HFv#Y&g?nMbX5y6=tRI}&+*Scm#nl{tLqw^n>fHX|+79?PTU%gZ`lps?k4diTUncYi zTV~^M9ES9X-=)fdZ9FKh1i)uPlEQ?h>IY78+d5^@2}TnOi;L6;z{&jR+lZGt5(RasZN?|x9-T9M`R1pR#$FUmBA~0s?W0r z7uc&>(Eqx=y%Bo*;?%}TJ08ks!K)?!t$w5Xwc0XNm8xXVd{OD0kAK}D(6jde78Vu= z0m8%glYs&F`S|SEais8%458=74eGwnYI|z-Gi21<{^RQ0O#&H$T*TVEx(}D2>m7@_ z(ow7Nw04v${A%x#^_`n}W-M>ne?RIywepytVC|P|hekYS&&%{(ox+8p{*O0#i~{s_z~qO6 zSbt$C+G>+L-(y}C-sD#7w%n*9812T5;o2Lt$5mf%n&G4(6?azdEGwq8I#&=1 z%k^bIKH2U7HE9VRJ7nyl{)KmRKTI6#Je}1Z^QS#`e?t_M9LFYVX5x?eAe+KiLx#y8 z{Tp*V0)-a`x1A7Xqa1ksME@bg7%J$T){oDXb1Zo1FTQu>*gug-Jm<<<7&887RGfb_ zs$Uwak-93>rNO>mcZ@mfC-rm`N(K_z%Lf_^&z9^VAc}S3J1JmCn$VU|}-6f^W>()Qi1y5I)koxYt*AF*(?}(aF5!ax1 zxN+|@kf&tGyw|&_xne-x@sJzd@$eL0uZaANNR+Al>-v&*fXl*wg!!43~TkawG3g<{5o}-jijZ3ykd96-!+i+dYN%e@@*u_x4)an`<;Q2n+#t~ zsvsN0tcKU~b22Gx08fY4$F-wsmjC)!;SJs+GmV-dLD0$&1k3M6Z2mK(yvZ*hxORz2 zdBd=}uF88smI=RynFZKvx;A5+*! z4{mny*L!7A^mpio-t2vI;Xn_ITnOIH7b`FhMI7P~S>dIiC*i7l>*A(;O16PWC&!XI z^4O%NH!5M%tIv#sBBQ@Q^)BvN2af?<>c9^0X+93x{1|+w$P4d!?T(3-^17l>qT!Wh zVmrmb&-#wlJ>Mb;xWz&@xil{m2^UXI2bJRR%g{pz%HD}uqn)ok1eH{>)lFH(@7Q2D z#@#N2e&c^V-&rKSslPIYtL^Mg$i$2HqX($(?-L7PawF1J8|d#!6XNCyn9Y{4_TW@0 z+TkXV9*W;_!V@(@LIyAMNr!%nSs~M@!`XFlxcI5Qz7az9{#Hz6ux3FOL4pVkiP)|S zE9>k0`^t!+Pf1Dfe7%e=@!6?`j6a2i6L{?OFNfeomVZCZS$AdMPn|LvqO@FiLfC|bl*$xl; zs$j2mM*gc{_qA7%8Pg*vShQ;m4$u+s!K^&Y*GRa*^r~o;-c@wjZb$%jm+Z^o#^CWkX=`n#m+miVKj)u{w3F;SIRiZrr zg7112JVYb^Kfi#-qHj>-7JYq#D-&pz^lneUE3)~z{KSkfx_!J~Cfc#hFaJY$X-))j zUi2t8p8{eK|Jf%%JT1(aG%ohW@Lwn5^ECQmp{*{YH@n)F;Ql+|5KzGM$oh?c_-~UE z?a}~(T$=m_VfqC>eDxf(leE_r__56FQ~&$8D>Y~q$Yvq9@QZ`vZ$E8eATD;NX>Hwy zvRzKV<}ejUs&?BSrAg+16fu{aMR{r|KV313xNrC2zF?fV7@|_uiz9a z3_h5k?8?cfiFO?8%Y=Ui+#CloN`BF+m@D^pC4v18gtEE9C<`ER@JNGsO8}gg0bNGJ ziuu`tRxNrj0#t2=mPISridPEG>RZ2@RozN*r_UtizzUqd^~=|E823~h=~enrKW!@T zQ^Ucaey`@0q~se9G@K9*@(~DJ&Jl-Ak>aSNmK>5mBRx70PQ+A+)Wj^N*RD4^_|(7$ z5H~QfgBX*nBxSXl&4y^m2N-=!xF)#Y6!Od#X~5xZSu4R!qgSQTqA|}L(2Dz`*FCc< zcJBjJj0=^2jokd4-okRB!GpwkU0QAmWJ7k^C;68@+p%Dk3Fgx%zxmwhv<;$?nruK% z$eaIvbP9(LrHUz0ts&69KY`if6l||`*}#oMVZiN1?vcNp6;{F2a}qMNd0c7^$?o?rq#4Qh zTpE@h^JIN{PWesY+n?Vz(XEj_ZokP$KKo=p9G3(ZBqY3TIazEajcZ;HO9;GfGI{?- z(Wccy$oy_M_az?x^KPYnqt5J6um}nJy|J6M=rwYHHs;z3<{aw_4&kcY3jS3c*dpys zFjM%q7KHD{i+dyS+gORpFsv4`A8_&i7YmSGi2B*U;F$X7NLAEDQY{G+ij;;ak*D|4 z$-M&Ax7*$MMy|WyU}BZxJ@9h0@0H|lb%@|sO3=#<G*KS|$1HjmZ2vtY!=)^~}uZa!fp zOc%c0_TZgbeLCmyRe$o3a6XQ~VRaQn=y%m^n?H?#tlP&R>by4lhrt=<{8HD^XjGD- z$foL4K|IRx(*6FhbmnaDI$btqMV;Eq>;0LJtzD(mzLk4|g2Z8sQO1jHOE_*5+YRY_?aTo8hU+SlPq{ z?+77K!?V-hnQxt@-V6mve6q8@YKDZ?elWk!knEbx(Et)g{E$?n5LMQ>C#HH-?Ws2B zYc}2`?U9Yp_y}J_p{{@b8i8Z$EAV`St=T6Z!Y}E_d%OA(?C8o8n3YL6w@Mw+2NJyVx8jf@n1V^Y1*+ja2J|5Ocim`*aY-jE$f);N<-XocC& zh8Tq6!Q09y=5d9ALF7W(56w3t#2L}V(-;j_EG|*%c5)$srH@EUog`&~8nT0^% zci1l_-CY*6bn#bT2*R;1Yzv(imu8>-BGluU{5ryMv^MH$n;MzcLqs(+~J* zJ<_qJ@6vyNN&&)PCSTru`LE^$G*>!^j1plY(Of-ZEbl6tS?G)vBwNx2yO0n>g^vVkT1E+tvj6wvGbb`11c;=?FIe@YQ~ez~{2fQB+aHa}Qu zsy}kZG-lOSq*_r@S5w<&Do;4~yvoYmT9yRSRywpf9m&mAeV(yZZ7{~IRs6)uKRppx zF8gzKx94Wf_8Q-JX=12lIA9!quu@|lbpyE({{SWx^c(!pXbG26kJ35`$`(wZm;zWO zurf2<2eOrdlGHElX+jhzLT2j4yaYbPk_aC*pUJgoAJLqRFR|(-rpXimp%sERJ`b}# zK`LPZtI8VR}^@I2%B@ogQPLCm>_x#{92NQ&+yHFTidm%291ysCp0O2{Q8oV>K|wGGyI_ zk6%cGI$SPxRV)qqz+`3OHkesip99FsOG`_?e3`}+Qw3_BDJ!FY3I<@B`F8?ci`;y1 zg^-~%wu7WY!L@*$A^L;w6S{eu6SX8vl?LdS4VRVz5SpqPN7S29N$ z%r?&bRtrmOxBKrF&jNBrm9>ZlP3Gvnx!jvYf-0F=jd!M$8NI|Mg^wP7GZ_b?NMJ0O zz&oLv*!dA&HV6CDXAMPy-731(8P^bC7@Dac8gx+GFN?Ow{@j1_*hhakegYgY%4%v| z`vLK&*^I0xwL%s2nZw^c;J)Mk5nozejdD2g#!BZ41ur&b3t`}Bkyo<7nX~lD0SMdc zF}0-wm5CdgB^Ine^cb&;nkSQ`0gp!?g8kY%l|_@qAncxHGJ^RK0GwE(Fr?QwZxC1s zAPBpf5IufJ+bBkADF+o36{vmtpt8)RU9g?GA@rp=8)U?0qr2q_361T=^*4%AQdJf5 zvsjCN_s91GQ`m4p-U`~fd`l#Bk`_YW5sC+Y-;ikZOL*0Ni045;K!95QJkjt_egiVq zm8-nWh5f&FDGytGB1=e~f90Csi#0M^f7CWhvr`vthI1SEStAGs2?7idS%HeiM9(s( z9TdzSKzuRYYonuGDNJnqoS!D%`4tovB#}elm-C&{qjtyy>~$V}QQGfPZM&7~3Ct2h z&Q@H>o<0e))CD`-)gSTf2?Z)3>^-?Z(c< z97xlLw6_(dg#^h*c|q>lO&eL~8o`-ulI=`jjn+O$&J_enulI#x6foDF_u7v;-6RT0 zQQ|5+M4n8h>tFk4;6WIQD-vcQ=#Qe(6Zk{NUkSK8XZr{Ak2 zoWB=MJGjOJ-DE`c*+aW~#rjqu{NAj@nzc0-S*;G?%Det{g z&*V~UQnbQzIT(g?<*91bCR6@d&fJvzXI-+~F6Qd_Cmzg%ElmhpIq&q@?wh2`DS%J+ zJdN*BljpG8uk^P0^{U`^rCy^h2gilh&w|pfTq!6jJ+47FlSI2qrbT6%OZfeDh zbDn>~Apv{n4jlAebM=wJ2V3IuMSV3#38d%^2VO7NO((Tn2{N6;5$A*D1PHf@Dtk&($BpBo!{E7aLpTLgqddFU&=d;k7Z@#L=$ zb7w{pqi4gv@_dlTv^Mk!pRgq_Us6MZDeHa^pi3-VI!NQG6#i@H}DNJ>5m2*~|lWn&}pmj_C^ zlsPb~OG%Ya5d~*>y-b-J%CW{%$@c*5@`72KEwuAmDds~W2;~SglyjKu2^vv+lwabh z7;k-U#Or^-|GfsiJjg(j!zQfftM3g?4HHTxAc+%amsX(7Y_1&e+#}DhcD1_|SA&(0 zIump0j^w;HxQM&!VqmJyl=OOuq$MagA#rfzw)CaR^tvu&B;l_|#Wq@CpN`svU6hlO z%+?}ado|jN_yT{6LN%oGHbGFkb3Y-8@*A>X-Y-;;Ug=RM_yQ6GotLwJ1%o~6eJW{? zrzhjOQ7G?B*vfqhwb56IC1SfD*kt`^ztZY}n0J+Pw8FteQc&vtRJmkgk@!<-oFl5~ z?z^j{j%mfC{^+6b^sI>b(ehUC^1!4LqF&zj`(qxWETJENP|ywuSmv%mIrEryxP&5% zyb?h?vnOE7yro#slc>HG=)qa2uu1B*(2OWS{hg#(2%r@BT)mABSK zWux{dC%hu4$9)ul#>nElj-7UHFna% z#^X$3HK-`r(cuhE=B@cUZt^deHTOvJOZGF;ONcKkZy`}_b+uwzR%rkAbh#P|(?_sxIqb~^tdcDz*RLqYHJslnrl?-Zo5rJM zO{NHbOWk8gCcVY4*yD596s^i|5Tb8>RGxH?chy~peOg<37p0@79JUI}j~#r)5wyh0 zx^J-QI$lLPvUX;90*%!@twBOsnIb9!qjb*^oAne;=P@Hh%*lxjMOmqv-iZgdpzJQD zazyPEl_VN#*4jaYav5_}94<>lS_ zYRIgJ4JU%ZI#k3)&vel;EFigHDK9KUu3Zw&?>#)hn_L(L)*kPH!iB4FJ$OJm-~!Ti zY*9F{Wm?cP$3J7a6CQ&ABIVWg_3ByCjM0I0FuqNTOb+J6)A=*mzDVd7MPT{kT zr4uhjKWxe_*lscq|9LK-M{5+!&h}44EJ5sL87F> z1Ov*M!>O8CS~2<~(OD!e#=qt6)mR;IgxUjD1OmCICiH4ubc={e3{^*FxAK znIX9E1XU`Z%3YDQIJkRqtPPc<8*9B*FpHQ;cvlGf1*Qnmu51(Zi@bpf_l&%2a6x_O zwBjdWATiW@b)OnqB>$J(Ws`jBumCxM^QI$LZ5J=S5;90sRJ~%#nswWlyeU`F0fU2f zYx}%$G?T3*21GTKodI=vN8iApIv%zOHMdB{va0IMlgE59^GhP9XI!p5%8wV?df!_? z!c|0~0S!?Akj#M~9IE8J9G!)x+2p>Go-!+4*eWqWpMy&;X*1sRmW?{chQESv4Ot-U z1M6J5Udj!vh?H-In1G-k9Gsm%gnypbA84PUtk z8n%76+g|Alm^%OM0A+SR`ZS}cNRc`_w|NAM+)IF{gJ!-|XmVl>yTJ8FPXfQbe9imJ$Uw5Ui+2Xkoe(q_IQBtT0(+*z7 zEm-}?!@wZlBI3C}SFO5jT&q!Ktr#No3J-Xu3AoDCA``XM?3ubnz28~3?|fLT4GSAz zi-WDFfV10_62ADzDYG|%+4|%y*@I!%V~QEIJya0oD+|SS>q(Fj3kdin+6-# zucoGp%spiA!XW8%ePJW$i0Jw^I)d^CgUO&%_>O=!j(5!O-Yzn}ryt&r@UWAVCvXx2 z`|P_5vDD(>qJr@#%L?5*utW589b%q4s7#o+;vdrX+RJwk=%c}nCA5a^El5R)UK*e7 zPnOZPTeENSAqpjIO>4qR_lwwQvp&d-=n!Rd7RVcX5K;*Jra$#x5t)}gC z1L_Vza;$5BsSGv_Ix2zv!IVmFgu?x|17SSG1(PdNDZC|#D)B!5C=Vn*AhFysKzMg` zF?DicyIeBpd855lfLoy?f3LO%+_4aF*q+f30G2_#LhY52X)Ud9 zP*}<_#d=q%lF?YOpILQ}O89fG7C6S~X zdB~L@MCBUmFI!wrIl6>I=VfP0DJa5XQMb6a?#If^5D;d2vknQP~gchO)r`&5o@ z7=89ar2LlACW{eqz4~&(TRc|g;lkqd(i(;ST)3+j{>*FM$J%lG<*PuDO_DQd9ej%O zrIhOBp69#poQ(_=ifB0&qKnnAJq3s5GcGP}fKaDU+JU%bc}yF_#`mJz;GE;HTd5bZ ze-}A0iOykT*x+n^IVysLp&En*Go5nk_G;`x0?#UPZX z_63)s$b>y7@#}F?QKCl5ewPp{zU(t|lU4epNT*<1HeXQ7Gt75nSJz8tBD3*T@-+Ch z1GZT8oHUub8=~$WIcBtWQ!r$~+FF{3G`q~ejD8X}!pFV0<)~H+3yC3I^L`xYv=cdo z3uVjpqVCJgs8e0DFuLo@v&u!SuQ$@ex4L!P?PaB31zie?bsYM~YCo@jmafWNC*w_y zWC*$j^#khe;@02*lv^wCt&g~PYv7{o=+Nx!B1sb$E0y{A$j}JbNME}KB)P21nq^rH^q?s zg*3(sJP;8Y8XLjZGDwp+sEeWD=;*kBsJ^sUqG=wNrTJCK6a;x}peq(Ur+ELb2c-o< z_pAdgi~tsf@v+t;?0D+Wu-w5rX+Bf#is_FSROX36H}3B^11JDK;>r9+kAdX#{gzSn zXb4t_YavBM1hH4~paG+s9=%8x0Rv_!I2Srs_xp#2x^#G*S2pCa^#&8D zpVI(b`arf6@bZXR0*)Sl^OFoxbhJjAxINK@AE*^7{cgS6d}Jt@!6KX7b)p?6Kn2bM zBL?3Jvk|(Df=^L&K}ER(zuwC1>+Tq4mNsLM-ccvv#r%!C)vRI0`8tPM#4%&L>RXZL^bV87 z^4UOW{g8lH1Oj^SOM6=fE~-DOcnY@pz9;NgL0C7R^giRWJ-CGTH~kDw*SKNCcjb3- zW74}-!lT~Lh`cWym@BI86LR#;{%jQyJCWz@PVv`+uTcZ41Pns~RgjeQf;S~4R3*WO zB{3W>7EbAC4Cohaf+jJ~XEMhE%oU+MxXbtw zz~udP{}}A5 z%?D9mPOw&vK^S8LWZPCexOPG-cF8si^Dj9wKvvl2ZV@BHNHoFq;*X&9MwP!_{3df?{W4TGU9o!GAI!+gH5L?%>C{Un7=?NB8+o6~O5@sbz6m zXe3NnG_ds|dyZgNfBEvQclgThlpp_~m)Rk+tpqbSNziS3S>u zk7PO8uV*hMwxc*wmy0ueAS#iMOLjweLr_Iah?s+8mfW7IdkEHY;rq`awgUH8VfhBd zSH)c3ZIj%pqr>$lFF33#n;*bwoGrh|w}1Tw@GXbzdem~||NFiLO-McQWuU-VUp@d= zs6}pZ`8T?t>MLmRGN-7vpFy?`6A7*n{@2FyKgK>l_#cOFWSOTQ{MQ#93j(w1NM--} zhtjjHCF$DS^Rt{+k*-~ec+LSef7`hoYjxGCKU)3*%8#e`}ci-ZQiiK z_q8v(Tmlp==xsXCv}M~a z!~iHnDLJ{;vk{*Byu4<0mol-xxOOy<&2!K}l0dk3;_a$67;szu)nK==^7MFBR8$lj z8@sx?3S@819|xq84?q#>>FELJULJpPLzr1uo}Ml%AsWL;EnGfBOG?ZkbglP-_!Cn# ziHY^l!MtVm4FGDdtuj+p`uayh;rOlCZM)!2;n;~J<-a2Z7eVy*=U-)nOCts)_w$2^ zqa%SGkk&qZtZG~?pW5?w`=~QhWiMBJJM%@ezO`}b=<>_%E`ZqU(hA>*_`)EAk_tfV zf`E#fnyM49c2R_app?7?6OSR31@5_ngZ@p_4~iAnN$GVzmaI8Tfn+W~zlprB*8m#k z)^I8s8rlcR0Yfsd*Ota~QD8PJ3lNsWI1jg5;k<>3D5O|QQ%coRN5rdBB>ifJc|E}mzzAVZ6Mvtyg*jeSdvxw1$W%uTCW{2hnP4?vtN75V5*8DLiHRu%hd%=_9Dj>P;TC?9 zw@g`S_3~hgsZvw3Pa*kd-z#Mi&CV;}&O zx&ZaKI!qK)Xh?T8kTm;J#QfEQdM2HwagaDNe0Mhi=Xv)%?}Vr~pq2@vVRvF2=E@DQ zq>QFx#0|N}d=C`A^x8y;^+k68E@B!n)jsO$T(jaqbgM4>EUMY3LNRTCStXMJBBXhX zRv&INm2BEXOFqZO`W6-<*4s=)zIH5BKmdY$-~E^3VA!26c6BVw6e8I1yN!*FHh|=} z(HGNoF@-0Jd_JRT0}1dAdzAt;wliG_JwMhRD_8Zu|7U^4`~;o|4el+QmZ+4AKa1q- zkbped?@pD%Bo89yPNATTy)hONLoq6{TKJB{f6w?ZUSxu>kMjIj@k5k|Ng0CPA)g%&y!(!YUiLx)XEH%Y=dxfm9$5>|Gw_h5xijI6il3DVW@%XX)<7)Zv zJL_#WSL?Lv|5||s@;0Dg?$Xm)f${2Lg$e`+5nJ4q83o6&`+O{GYcMf%v^=s6sp^cb z(MKfGaE(!OCM_(m{D^OH?rk$Pf}TOw^yQ09oq6_wj-Aa_81228npIqd#6NvZgBkXs zqMrJR6t0TKt4ap8NfH}>e(&F4Hn|=-U0z=T>%JXb7@9%q%x$N-e(8MLbY3}JC?Cac zhBUfpeeGSoj53W$O;aX}*JV2UT}$(fb5N9d{Zi|5Kc3@$8tjft zuiyW5)v*Yxtr4Wa1+~o1PtNPLT~?e-{z!&sC#TktdoV=k`Y@M9x9~W}vRjTt;_%Lp z{%%jCYc5L-p=$bK+Chy%Ol~DPE6Z^<_e8#uqjCAGtAa1IuPEL;8q3cJ{|Hb2 za1bzt`y5jRl%nIU(DwRrV_dtl`9w}Ks2H}b(Hrw8D+BkyLaR?>cVQ}B+#OF%$Blt= z({2J34jW(_VJaIV9f4jkv}o>l{;GQRj<|E>$3qy>NZIcZw6XBzLgFm2BluIs8KAcB z_;p}X>tRy040xHfQZ+Gg#rBJC7!DmDGc4aC(X)0M=#Q|t_c=zJ;c4qd7``Y)WKdFM zLkRp}aGOOI8C=5@>ei1Wv2A+~kil`y*Qb15MZ=m=3coeWTYF}AMl)FF>mttuJ5|(m zvFXU@BBZ?3_bG2Yk}q*xe`b|rslCBl)V$7P?)e_h$Pyjue0>zltR17kO^MDf2{p21Csy-9sK>$$9iyr?8kg zSu9k1Bd%}klLoJ{2j4ROZ~7`x=Dyxa^#6t?a=j1x<+Q}SKn9j5rrXsRv$4KT^K&^C zN9%^`#x-u)q=qt?g>nTW$Y?21ZE322paEryT(2uOu`n0Ft)6~MIxIF;jRl0Dl5)m8CzYSG8v zRlIuoQ4Z~N*RY^Icj8!J_#T;=}R1JNj) zdlfa7{H9J7VCjH5%27r6!@ZlDKrnfBOw&r%_yK{#wM@m9`mdJt4-gniqN|2Q=XW5& zcce~)nL+}KF2Qchy8!3aB!7|Oe&%Gz;mQYt|C42ZO=0tBkTyFV2Lx)r|HyQa95I-{ zq(*6rx4wyCe+@?9Y&`3MpU5x(UndQ;fBv8I{GxT(UJOEN{|foPLwIRkK^Q_vT8h(7 zM;PJbKXU4&IiUUHs5{(_zQO<7inxGfqK~bP`A!0wB46@Ts-mH6ov3P*apoxx&|s8%34yd?M^tR_zk5;G1ltu|XdgnYyt=5>vc`HbMzC6$x3}s}TBXY_M!Q9FiPBxF|{3_4f z(&93nZsh2C5URW1VL-4SU~6JxVCX@Dm!*KY!jOXb52jr=W+CCn z4q9{8I)5maxB^kM_|&8eb%{Cbet0HEXAiz zz0xTRr_fM|r{EXM{eIkc@y9k4FAjUDm$7vM3@_sQ?stl63~_COI+K=efXTgx9P8>O z31O~}i0DwrT};d_uH0sYFD@?bv#g3>KBhN( z0BSii+crM{%$2E>0|2C0B=&f&a0q~=a0(BKs=_g%DMRRD+lshf?uWJC07wbo`g!kt z@A@7ufumJ{LV}{KQSt`$_h~S(>vhI^w{Hf0(H-#&Aq|+DleicKPBwI9W~t+SV8Sw9 zp)rjUW=NM71%5gV3i8d%5KjW7)&qa?X~Tz!zXXZ%Pv4MSj^z%A9*3?tA3$V}+R$?Q zsBEeQv^A8t9?aMAx}X06z@#SU1LbB+4(1lDVQ4(iNS^k-4^rvuR*ZISCZmLrL$Vx8 zZw(4fmkhAAJ*ju91nB-uqi2nMzlXi?Zl@6<(iIh%o=4>B`Q`oXitd2TFtnc2O224~R#= zM4@A10+~zO$xcpST239#?5k%~)L<$NforQAiW@`QXB`Cv5EsgK?}i7>uyvkRX16mO zMt~fv2tLXq7{(?hHcO2cfYCfMG!$?QPv4*mWGtepnOr&q!7B7&b*|D$XIqE)&}G}rH1Us(k+pAPa?#HEcJS5* zbNq|vW_72moZLkoH-m*#C zpwxH(Y1D*(xfE2sea1;Xiw}lq!ZK`c#PE9qcbD_V)sU;Oi-==Rqx_uqO|2jH&L=MS(StGq7~T z%uI+C_qe0N`r2--zbUz`hAo+QaCp!SQL%+>1Us%MyH8QQCip& z*u=OP6N$ZR%)?glEv2=&-O?55)D@X=BFu8X(NtkPN_n`jY{r5@ikmSkpOim~j>dC8 zZs}k)G5V1@|CmatOu5&Ig`7G;oO@nWEQy012nGbWs@h(yUTBV7tWz=N7knkZ*vQ3; zA2j$$?s|H5Hm$|O=%bg*!cBuaE(OnjKhEW_1tbSMc+LT6F6SDE$8LEIu`Q6Z?0ab zKQJ(WVUCT3wXIe}PxDohc7=nQ8ulmkU3V$H$R^#-Fu9vaof9HHPi&i|4(epDj=_10 zsus+Yc1h9B!nZr&ZDptAZRn&49UjKkqu~VPXpV_h!JgOo>NxMxeGTAXPfkdY%MEwk z$aTad6_tbKy8#~~uZCrwnv5m4>>rJD3T)UNZO=vn<&eq3E zm?JtN_P3i&1Z%-4;mD<=LiMr7<+nj1u8aDz2|71r3>XQw76jbH)UfW_xw+{1p6mJP za0h;uW4{kTh4%%fAg=TsF(@Unc=BCEuC{)9u->z{7G9erhtn_+Z9M=|rG!EOi|J0D?*>B9tA7Q6+Rn`;>28%JTNB=0D1PaWEbgCK zDH{yoZv@2ul#---;VCzqFOoIb_Y*|3Uo>Up$4FL2*e0T);&rB*z0nBPE*-N^DO~ou z9>L=-9ldq+NIh^<&A)Fx^zlEC;CeaT#VwG|AT=V5PuCIT>F9i=bGsgQp^Qwg!!zhn<2Mty)SS;H*y=-_yQ;Ydk#rvFB zSOLSLz>^EP&InLvu4O|CM!&sai<_4%_GY0apn50$G^?>eZcLWN^wMCm0~>mFmE6=I zA!+&6So?F!5PT#|VYJP@9UDAQg@(ppHie(rpAloyaxw)V4W`?)x~+G^{tzv!faKo* zTr+(#w}r{tw?{rt3n*LdiIO`0+(iY>Kk7OWUj`MF z(QZ()FZO1KkSR0*`AVrvU0s`wJK>FpYqm~pnoqa)Zil`sv zhpX{b;dj|L347wL!nGD1ZJ(^_@F>hB=Me!iY1DSZ~G;0+Q^8BfZ zj#yy*Dp4~!X(8Pvdu8JfGXf)!9p6!di?+p(-G{}}6m3Bx;-2r1|% zx5OG1%LHL8!>CAZ%5QXx#X|seZv$o-DzwG@!aqdKIPXyg?EbUhd1Z#QKx*tNQ#`Yx zQ<)BP_=<9|{!Jlyp)F=dWDqC-If_D^>LrE#snTxY=H(?oyUhx=q|hRNU?La?EUHW% zmpn{}PDDITTjCk0&{70PzV1=-59Bwo;NBS3^qrTOuBr*6-JqNBMuT`dHQPm~VrDd> zVsK6@3yYpvbf5N-=R|o+nO2SC=XD_lk=2C zyMH%2AB5`|i7Mg*8j~nwGJoKJ3H5VMysi^#6Ddvfl$YB&89p0k8SOX0Gd#u)a9OIb z)JFSaS=@YoiYh=?8o603la|~TiOT3gya7V!7yO1G+?1*a1)V`CMV&4{TFkxOTULV! zdeHPX2g5gjisBj?0o(UOi)ajT6o0I`%GOYf(IPe^I_ZYbl;=%H*qhsJkyMuYDXO15 znelX45t$~okwiSVMS>(jCq5~QjhSfY(F{aOEasbeA2|@4p8Q1bOx}$0dkxxRZ5x_2 zMP_XJH2wxQJ-;OW0(JS($fU{GU}`g1zRkiUrCd7;Tl6Mw@5y4uK9z~2nIfn&%n2ot zXX`*wo4nns5|Qdz;JveqBizaO_}A^Q7y`6RAx}rv{TnD>BnsGSQ>%#r$?K>9B;;_@ zJS}ecIc5%lf{b+fi2%e1|tPs78*v{lWgK()l=H;y>sA2&KPMf1yG z?s)a|e7UDt)aOE!GCMs9h>69-@fd#PS@UD;9v?Oxb)vq-V+Ob-=N}5oWFb=di-ZwA z3BTW`-bm0|t~P+iWYr}7mdC?31}*R98iqVVh04r{2*u}ZxcfH!(P|--7n3HgGo*LL zqC$Ga%VH1>7 z)UeEg*B~;|bTEqbzIL5kn=6d`!eh1GqOJ3<@Alrm(^Wi?*dM&YtqL))8E+1tzJN=4 zh9VsZ3g?6^$tUoaIUhI%1_kcsihMaD^`Ll){1i*M0w?raSYha@!Y}!E-w~~Ib%$bx z`^_4dJP=?Bop%qkcRJ=8M58~zDS2HyCz^$lQBVk?5!)%h864z5YC>NGQ#)+=Ndb2L+aXjyTtrKzS%hCVr z*$0ADKiuZKGF$?OQVhL!&5rBB_+hgekLqwKi>j0#iU(18@HhaDUmodll>_{d==(RU zy~g1b^7m??bZ6qSg6hUJY6Ty=No&n==eQ2ue}m)G31cWTsP}A0pP=n2iUDSFG9PfY z`f-3*G3oGIFLK`IW5xz}h3}X}!taw%P!!=>E!hvzO_!)l(_A0MRghMJ4VkGF{<=AM zq;kDSJ#eBGKA|0CsAitnfA1}NL$0yAZZ|75E}zIx6SkWQ{zygDK)v}pv^4#*ryb1) zxoAq(!yh58vx6aFnlzX{(lXQ=_6zsQz22R+kltj!B5>x=pi4wQ`}^k_?8x*Bm1=(| z>X2)c4$DV~A{60PAE7$m2iNPJNEK$oVIj9s^=s0sD+k*iI4Yb|kDPMSy_XvKWs)7` zl&9WU3`7Wd**_@;$+sBlf-_?5%Lk5^27?WH9+a(x~? zeKzg{OS7W8xq+FRU>N+`n>0o+OdoVeUwQC4jJEceT;1Z%(qBsf8 z{FKD5Ph9tMtcGiS!C;#M$$W)DI#ec;;#YjMzr{nbkJtyG7rqMx9SGykvDKa}$V%AM65cQg+Hgqh!>E)ngj~45Dl0uf(dx)7dVJtr zKT_$~_R;kMOTL9+mhWHDt>U}W_3J!YcijmV^eFkkyXrtQhc9`X1I^5wz#pz|R=?s5 zKJN-$Y6;pF!%tHsVI^??rC=uf;UpjYSn5O@#Xrt<7BpV}n0P2dH}Y#z8Oh4GZ@J93 z21&@8ab5Bu`H_hcr*(9^q2*@XmS2$t4AEgPeS5m+z+eUK-qWe$)+~Ty)39_mW{7no zvEDm>Jc{0o*4;)LTLC)kA_@Kn3BL>|e=>JiZ@ zahIYLd6%nL1eVQ>Kf#Irp`l`nK6DRcxuz3TGXUxdgQ5s>!6qkMu~ZJ8HI|U#54-e- znjag4Oh`kt*8EnLKo829n(l&|WCm`y-9iqN(wH9z-< zqYwvG@yTf~5fo8sKm*YVPVomWp}dfT2F32Gf+)Td=;@&BS4pY(`XZ9(i{Lbw%q|F- zCLL8EL@=4fLUWT7M^B3&nF*&d12qsU!V$=zQ&N;FLTDKjnS@wx2f<*fCq7Idn9+(? zF)#}qOuERMddiHXd;2SfSTBWe$b=0bBV@{iyr5wyJqpWGA0D#_(F3;|eUb8!2ah~L z5;920=z%d*36o-FD?kZvLz`_u2&yCR)k3Hw1q$Oa2?2gv0003jNkl_*`8z;ZJVvjQz6SMO;wko1YIkVY&gp5C=#%nP|Gf%2x_5J$V7p8M8D*jM;V+* z1cW^cY6(rdmiKH}= zQhdr(AYWE0`OQ&~y--C^Lr8-VQ*-Dkn-G08yNhBdBl6$_r6siM+`H7yuAhMXM$e z%%Y+=5#3SSfC!rw$O>jOinT{L0zTXu^K)|t_U|vMFg0uhzWL^x;lqbFY#pf`5omk} z;8qEx)e#w)Kop*UnQ+He2?XR(grtb_6vzJu3@C-5SC{xm00000NkvXXu0mjf(cj(8 literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Duplicate Target Confirmation.png b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Duplicate Target Confirmation.png new file mode 100755 index 0000000000000000000000000000000000000000..ec1380d3121ed28f01b309dcf7ab05538b164b2c GIT binary patch literal 59057 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�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%0DXwyE_?SP*NInO%H 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
Jm$o@oe14^r3gnadS>%v;^ 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 VrDWGxh%devF{4KxWAx~1 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
^BI@w&W{Bh@Eq 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

(#1|psW9Yj&kMH-!Bg@J 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 HhVTAA;n~=6 literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Simple App.png b/examples/InterstitialUnifiedDemand/KIF-master/Documentation/Images/Simple App.png new file mode 100755 index 0000000000000000000000000000000000000000..debab50a10c1e7694142162181ba8a0ba9830aec GIT binary patch literal 313691 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 +#import "KIFUITestActor-IdentifierTests.h" +#import "UIAccessibilityElement-KIFAdditions.h" +#import "NSError-KIFAdditions.h" +#import "UIWindow-KIFAdditions.h" + +@implementation KIFUITestActor (IdentifierTests) + +- (UIView *)waitForViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + return [self waitForViewWithAccessibilityIdentifier:accessibilityIdentifier tappable:NO]; +} + +- (UIView *)waitForTappableViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + return [self waitForViewWithAccessibilityIdentifier:accessibilityIdentifier tappable:YES]; +} + +- (void)tapViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + @autoreleasepool { + UIView *view = nil; + UIAccessibilityElement *element = nil; + [self waitForAccessibilityElement:&element view:&view withIdentifier:accessibilityIdentifier tappable:YES]; + [self tapAccessibilityElement:element inView:view]; + } +} + +- (void)waitForAbsenceOfViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + // If the app is ignoring interaction events, then wait before doing our analysis + KIFTestWaitCondition(![[UIApplication sharedApplication] isIgnoringInteractionEvents], error, @"Application is ignoring interaction events."); + + // If the element can't be found, then we're done + + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"accessibilityIdentifier = %@", accessibilityIdentifier]; + UIAccessibilityElement *element = nil; + + if (![UIAccessibilityElement accessibilityElement:&element view:NULL withElementMatchingPredicate:predicate tappable:NO error:NULL]) { + return KIFTestStepResultSuccess; + } + + UIView *view = [UIAccessibilityElement viewContainingAccessibilityElement:element]; + + // If we found an element, but it's not associated with a view, then something's wrong. Wait it out and try again. + KIFTestWaitCondition(view, error, @"Cannot find view containing accessibility element with the identifier \"%@\"", accessibilityIdentifier); + + // Hidden views count as absent + KIFTestWaitCondition([view isHidden] || [view superview] == nil, error, @"Accessibility element with identifier \"%@\" is visible and not hidden.", accessibilityIdentifier); + + return KIFTestStepResultSuccess; + }]; +} + +- (UIView *)waitForViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier tappable:(BOOL)mustBeTappable +{ + UIView *view = nil; + @autoreleasepool { + [self waitForAccessibilityElement:NULL view:&view withIdentifier:accessibilityIdentifier tappable:mustBeTappable]; + } + + return view; +} + +- (void)longPressViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier duration:(NSTimeInterval)duration +{ + @autoreleasepool { + UIView *view = nil; + UIAccessibilityElement *element = nil; + [self waitForAccessibilityElement:&element view:&view withIdentifier:accessibilityIdentifier tappable:YES]; + [self longPressAccessibilityElement:element inView:view duration:duration]; + } +} + +- (void)enterText:(NSString *)text intoViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + return [self enterText:text intoViewWithAccessibilityIdentifier:accessibilityIdentifier expectedResult:nil]; + +} + +- (void)enterText:(NSString *)text intoViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier expectedResult:(NSString *)expectedResult +{ + UIView *view = nil; + UIAccessibilityElement *element = nil; + + [self waitForAccessibilityElement:&element view:&view withIdentifier:accessibilityIdentifier tappable:YES]; + [self tapAccessibilityElement:element inView:view]; + [self waitForTimeInterval:0.25]; + [self enterTextIntoCurrentFirstResponder:text fallbackView:view]; + [self expectView:view toContainText:expectedResult ?: text]; +} + +- (void)clearTextFromViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + UIView *view = nil; + UIAccessibilityElement *element = nil; + + [self waitForAccessibilityElement:&element view:&view withIdentifier:accessibilityIdentifier tappable:YES]; + [self clearTextFromElement:element inView:view]; +} + +- (void)clearTextFromAndThenEnterText:(NSString *)text intoViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + [self clearTextFromViewWithAccessibilityIdentifier:accessibilityIdentifier]; + [self enterText:text intoViewWithAccessibilityIdentifier:accessibilityIdentifier]; +} + +- (void)clearTextFromAndThenEnterText:(NSString *)text intoViewWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier expectedResult:(NSString *)expectedResult +{ + [self clearTextFromViewWithAccessibilityIdentifier:accessibilityIdentifier]; + [self enterText:text intoViewWithAccessibilityIdentifier:accessibilityIdentifier expectedResult:expectedResult]; +} + +- (void)setOn:(BOOL)switchIsOn forSwitchWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + UIView *view = nil; + UIAccessibilityElement *element = nil; + + [self waitForAccessibilityElement:&element view:&view withIdentifier:accessibilityIdentifier tappable:YES]; + + if (![view isKindOfClass:[UISwitch class]]) { + [self failWithError:[NSError KIFErrorWithFormat:@"View with accessibility identifier \"%@\" is a %@, not a UISwitch", accessibilityIdentifier, NSStringFromClass([view class])] stopTest:YES]; + } + + UISwitch *switchView = (UISwitch *)view; + + // No need to switch it if it's already in the correct position + if (switchView.isOn == switchIsOn) { + return; + } + + [self tapAccessibilityElement:element inView:view]; + + // If we succeeded, stop the test. + if (switchView.isOn == switchIsOn) { + return; + } + + NSLog(@"Faking turning switch %@ with accessibility identifier %@", switchIsOn ? @"ON" : @"OFF", accessibilityIdentifier); + [switchView setOn:switchIsOn animated:YES]; + [switchView sendActionsForControlEvents:UIControlEventValueChanged]; + [self waitForTimeInterval:0.5]; + + // We gave it our best shot. Fail the test. + if (switchView.isOn != switchIsOn) { + [self failWithError:[NSError KIFErrorWithFormat:@"Failed to toggle switch to \"%@\"; instead, it was \"%@\"", switchIsOn ? @"ON" : @"OFF", switchView.on ? @"ON" : @"OFF"] stopTest:YES]; + } + +} + +- (void)setValue:(float)value forSliderWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + UISlider *slider = nil; + UIAccessibilityElement *element = nil; + [self waitForAccessibilityElement:&element view:&slider withIdentifier:accessibilityIdentifier tappable:YES]; + + if (![slider isKindOfClass:[UISlider class]]) { + [self failWithError:[NSError KIFErrorWithFormat:@"View with accessibility identifier \"%@\" is a %@, not a UISlider", accessibilityIdentifier, NSStringFromClass([slider class])] stopTest:YES]; + } + [self setValue:value forSlider:slider]; +} + +- (void)waitForFirstResponderWithAccessibilityIdentifier:(NSString *)accessibilityIdentifier +{ + [self runBlock:^KIFTestStepResult(NSError **error) { + UIResponder *firstResponder = [[[UIApplication sharedApplication] keyWindow] firstResponder]; + if ([firstResponder isKindOfClass:NSClassFromString(@"UISearchBarTextField")]) { + do { + firstResponder = [(UIView *)firstResponder superview]; + } while (firstResponder && ![firstResponder isKindOfClass:[UISearchBar class]]); + } + UIResponder* firstResponderIdentification = nil; + if ([firstResponder conformsToProtocol:@protocol(UIAccessibilityIdentification)]) + { + firstResponderIdentification = (UIResponder*)firstResponder; + } + else + { + [self failWithError:[NSError KIFErrorWithFormat:@"First responder does not conform to UIAccessibilityIdentification %@", NSStringFromClass([firstResponder class])] stopTest:YES]; + + } + KIFTestWaitCondition([[firstResponderIdentification accessibilityIdentifier] isEqualToString:accessibilityIdentifier], + error, @"Expected accessibility identifier for first responder to be '%@', got '%@'", + accessibilityIdentifier, [firstResponderIdentification accessibilityIdentifier]); + + return KIFTestStepResultSuccess; + }]; +} + +- (BOOL) tryFindingViewWithAccessibilityIdentifier:(NSString *) accessibilityIdentifier +{ + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"accessibilityIdentifier = %@", accessibilityIdentifier]; + return [UIAccessibilityElement accessibilityElement:nil view:nil withElementMatchingPredicate:predicate tappable:NO error:nil]; +} + +- (void)swipeViewWithAccessibilityIdentifier:(NSString *)identifier inDirection:(KIFSwipeDirection)direction +{ + UIView *viewToSwipe = nil; + UIAccessibilityElement *element = nil; + + [self waitForAccessibilityElement: &element view:&viewToSwipe withIdentifier:identifier tappable:NO]; + + [self swipeAccessibilityElement:element inView:viewToSwipe inDirection:direction]; +} + +-(void) tapStepperWithAccessibilityIdentifier: (NSString *)accessibilityIdentifier increment: (KIFStepperDirection) stepperDirection +{ + @autoreleasepool { + UIView *view = nil; + UIAccessibilityElement *element = nil; + [self waitForAccessibilityElement:&element view:&view withIdentifier:accessibilityIdentifier tappable:YES]; + [self tapStepperWithAccessibilityElement:element increment:stepperDirection inView:view]; + } +} +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/AccessibilityIdentifierTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/AccessibilityIdentifierTests.m new file mode 100755 index 000000000..100bd6e4d --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/AccessibilityIdentifierTests.m @@ -0,0 +1,127 @@ +// +// AccessibilityIdentifierTests.m +// KIF +// +// Created by Brian Nickel on 11/6/14. +// +// + +#import +#import +#import + +@interface AccessibilityIdentifierTests : KIFTestCase +@end + +@implementation AccessibilityIdentifierTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Tapping"]; +} + +- (void)testWaitingForViewWithAccessibilityIdentifier +{ + // Since the tap has occurred in setup, we just need to wait for the result. + [tester waitForViewWithAccessibilityIdentifier:@"X_BUTTON"]; + KIFExpectFailure([[tester usingTimeout:0.5] waitForViewWithAccessibilityIdentifier:@"NOT_X_BUTTON"]); +} + +- (void)testTappingViewWithAccessibilityIdentifier +{ + [tester tapViewWithAccessibilityIdentifier:@"X_BUTTON"]; + [tester waitForViewWithAccessibilityLabel:@"X" traits:UIAccessibilityTraitButton | UIAccessibilityTraitSelected]; + KIFExpectFailure([[tester usingTimeout:0.5] tapViewWithAccessibilityIdentifier:@"NOT_X_BUTTON"]); +} + +- (void)testWaitingForAbscenceOfViewWithAccessibilityIdentifier +{ + // Since the tap has occurred in setup, we just need to wait for the result. + [tester waitForViewWithAccessibilityIdentifier:@"X_BUTTON"]; + [tester waitForAbsenceOfViewWithAccessibilityIdentifier:@"NOT_X_BUTTON"]; + KIFExpectFailure([[tester usingTimeout:0.5] waitForAbsenceOfViewWithAccessibilityIdentifier:@"X_BUTTON"]); + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; + [tester waitForAbsenceOfViewWithAccessibilityIdentifier:@"X_BUTTON"]; + [tester tapViewWithAccessibilityLabel:@"Tapping"]; +} + +- (void)testLongPressingViewWithAccessibilityIdentifier +{ + [tester longPressViewWithAccessibilityIdentifier:@"idGreeting" duration:2]; + [tester tapViewWithAccessibilityLabel:@"Select All"]; +} + +- (void)testEnteringTextIntoViewWithAccessibilityIdentifier +{ + [tester longPressViewWithAccessibilityIdentifier:@"idGreeting" duration:2]; + [tester tapViewWithAccessibilityLabel:@"Select All"]; + [tester tapViewWithAccessibilityLabel:@"Cut"]; + [tester enterText:@"Yo" intoViewWithAccessibilityIdentifier:@"idGreeting"]; +} + +- (void)testEnteringTextIntoViewWithAccessibilityIdentifierExpectingResults +{ + [tester enterText:@", world" intoViewWithAccessibilityIdentifier:@"idGreeting" expectedResult:@"Hello, world"]; + [tester waitForViewWithAccessibilityLabel:@"Greeting" value:@"Hello, world" traits:UIAccessibilityTraitNone]; +} + +- (void)testClearingAndEnteringTextIntoViewWithAccessibilityLabel +{ + [tester clearTextFromAndThenEnterText:@"Yo" intoViewWithAccessibilityIdentifier:@"idGreeting"]; +} + +- (void)testTryFindingViewWithAccessibilityIdentifier +{ + if (![tester tryFindingViewWithAccessibilityIdentifier:@"idGreeting"]) + { + [tester fail]; + } + + if ([tester tryFindingViewWithAccessibilityIdentifier:@"idDoesNotExist"]) + { + [tester fail]; + } +} + +- (void) testTappingStepperIncrement +{ + UILabel *uiLabel = (UILabel *)[tester waitForViewWithAccessibilityIdentifier:@"tapViewController.stepperValue"]; + NSInteger originalValue = [[uiLabel text] integerValue]; + + [tester tapStepperWithAccessibilityIdentifier:@"tapViewController.stepper" increment:(KIFStepperDirectionIncrement)]; + + [tester waitForTimeInterval:0.5f]; + uiLabel = (UILabel *)[tester waitForViewWithAccessibilityIdentifier:@"tapViewController.stepperValue"]; + NSInteger newValue = [[uiLabel text] integerValue]; + if (! newValue == (originalValue + 1)) + { + NSException *exception = [NSException exceptionWithName:@"Unexpected test failure" + reason:[NSString stringWithFormat: @"newValue was expected to be +1 of originalValue. Original Value was %ld while newValue is %ld", (long)originalValue, (long)newValue] userInfo:nil]; + [tester failWithException: exception stopTest: NO]; + } +} + +- (void) testTappingStepperDecrement +{ + UILabel *uiLabel = (UILabel *)[tester waitForViewWithAccessibilityIdentifier:@"tapViewController.stepperValue"]; + NSInteger originalValue = [[uiLabel text] integerValue]; + + [tester tapStepperWithAccessibilityIdentifier:@"tapViewController.stepper" increment:(KIFStepperDirectionDecrement)]; + + [tester waitForTimeInterval:0.5f]; + uiLabel = (UILabel *)[tester waitForViewWithAccessibilityIdentifier:@"tapViewController.stepperValue"]; + NSInteger newValue = [[uiLabel text] integerValue]; + if (! newValue == (originalValue -1)) + { + NSException *exception = [NSException exceptionWithName:@"Unexpected test failure" + reason:[NSString stringWithFormat: @"newValue was expected to be -1 of originalValue. Original Value was %ld while newValue is %ld", (long)originalValue, (long)newValue] userInfo:nil]; + [tester failWithException: exception stopTest: NO]; + } +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/BackgroundTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/BackgroundTests.m new file mode 100755 index 000000000..ccbbaccc0 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/BackgroundTests.m @@ -0,0 +1,31 @@ +// +// BackgroundTests.m +// KIF +// +// Created by Jordan Zucker on 5/18/15. +// +// + +#import + +@interface BackgroundTests : KIFTestCase + +@end + +@implementation BackgroundTests + +- (void)beforeEach { + [tester tapViewWithAccessibilityLabel:@"Background"]; +} + +- (void)afterEach { + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testBackgroundApp { + [tester waitForViewWithAccessibilityLabel:@"Start"]; + [tester deactivateAppForDuration:5]; + [tester waitForViewWithAccessibilityLabel:@"Back"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CascadingFailureTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CascadingFailureTests.m new file mode 100755 index 000000000..a0f12d6b4 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CascadingFailureTests.m @@ -0,0 +1,46 @@ +// +// CascadingFailureTests.m +// Test Suite +// +// Created by Brian Nickel on 8/4/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import +#import "KIFTestStepValidation.h" + +@interface KIFSystemTestActor (CascadingFailureTests) +- (void)failA; +@end + +@implementation KIFSystemTestActor (CascadingFailureTests) + +- (void)failA +{ + [system failB]; +} + +- (void)failB +{ + [system failC]; +} + +- (void)failC +{ + [system fail]; +} + +@end + +@interface CascadingFailureTests : KIFTestCase +@end + +@implementation CascadingFailureTests + +- (void)testCascadingFailure +{ + KIFExpectFailure([system failA]); + KIFExpectFailureWithCount([system failA], 4); +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CollectionViewTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CollectionViewTests.m new file mode 100755 index 000000000..3b2f8b8cb --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CollectionViewTests.m @@ -0,0 +1,63 @@ +// +// CollectionViewTests.m +// Test Suite +// +// Created by Tony Mann on 7/31/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import +#import "KIFTestStepValidation.h" + +@interface CollectionViewTests : KIFTestCase +@end + +@implementation CollectionViewTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"CollectionViews"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testTappingItems +{ + [tester tapItemAtIndexPath:[NSIndexPath indexPathForItem:199 inSection:0] inCollectionViewWithAccessibilityIdentifier:@"CollectionView Tests CollectionView"]; + [tester waitForViewWithAccessibilityLabel:@"Last Cell" traits:UIAccessibilityTraitSelected]; + [tester tapItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] inCollectionViewWithAccessibilityIdentifier:@"CollectionView Tests CollectionView"]; + [tester waitForViewWithAccessibilityLabel:@"First Cell" traits:UIAccessibilityTraitSelected]; +} + +- (void)testTappingLastItemAndSection +{ + [tester tapItemAtIndexPath:[NSIndexPath indexPathForItem:-1 inSection:-1] inCollectionViewWithAccessibilityIdentifier:@"CollectionView Tests CollectionView"]; + [tester waitForViewWithAccessibilityLabel:@"Last Cell" traits:UIAccessibilityTraitSelected]; +} + +- (void)testOutOfBounds +{ + KIFExpectFailure([[tester usingTimeout:1] tapItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:99] inCollectionViewWithAccessibilityIdentifier:@"CollectionView Tests CollectionView"]); +} + +- (void)testUnknownCollectionView +{ + KIFExpectFailure([[tester usingTimeout:1] tapItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] inCollectionViewWithAccessibilityIdentifier:@"Unknown CollectionView"]); +} + +- (void)testTappingItemsByLabel +{ + // Tap the first item, which is already visible + [tester tapViewWithAccessibilityLabel:@"First Cell"]; + + // Tap the last item, which will need to be scrolled up + [tester tapViewWithAccessibilityLabel:@"Last Cell"]; + + // Tap the first item, which will need to be scrolled down + [tester tapViewWithAccessibilityLabel:@"First Cell"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CompositionTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CompositionTests.m new file mode 100755 index 000000000..e00d4dd8a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/CompositionTests.m @@ -0,0 +1,86 @@ +// +// CompositionTests.m +// Test Suite +// +// Created by Brian Nickel on 7/31/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import +#import "UIApplication-KIFAdditions.h" +#import "UIAccessibilityElement-KIFAdditions.h" + +@interface KIFUITestActor (Composition) + +- (void)tapViewIfNotSelected:(NSString *)label; +- (void)tapViewWithAccessibilityHint:(NSString *)hint; + +@end + +@implementation KIFUITestActor (Composition) + +- (void)tapViewIfNotSelected:(NSString *)label +{ + UIAccessibilityElement *element; + UIView *view; + [self waitForAccessibilityElement:&element view:&view withLabel:label value:nil traits:UIAccessibilityTraitNone tappable:YES]; + + if ((element.accessibilityTraits & UIAccessibilityTraitSelected) == UIAccessibilityTraitNone) { + [self tapAccessibilityElement:element inView:view]; + } +} + +- (void)tapViewWithAccessibilityHint:(NSString *)hint +{ + __block UIAccessibilityElement *element; + __block UIView *view; + + [self runBlock:^KIFTestStepResult(NSError *__autoreleasing *error) { + + element = [[UIApplication sharedApplication] accessibilityElementMatchingBlock:^BOOL(UIAccessibilityElement *element) { + return [element.accessibilityHint isEqualToString:hint]; + }]; + + KIFTestWaitCondition(element, error, @"Could not find element with hint: %@", hint); + + view = [UIAccessibilityElement viewContainingAccessibilityElement:element tappable:YES error:error]; + return view ? KIFTestStepResultSuccess : KIFTestStepResultWait; + }]; + + [self tapAccessibilityElement:element inView:view]; +} + +@end + +@interface CompositionTests : KIFTestCase +@end + +@implementation CompositionTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Show/Hide"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testTappingViewWithHint +{ + [tester tapViewWithAccessibilityHint:@"A button for A"]; + [tester waitForViewWithAccessibilityLabel:@"A" traits:UIAccessibilityTraitSelected]; +} + +- (void)testTappingOnlyIfNotSelected +{ + [tester tapViewIfNotSelected:@"A"]; + [tester waitForViewWithAccessibilityLabel:@"A" traits:UIAccessibilityTraitSelected]; + + // This should not deselect the element. + [tester tapViewIfNotSelected:@"A"]; + [tester waitForViewWithAccessibilityLabel:@"A" traits:UIAccessibilityTraitSelected]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ExistTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ExistTests.m new file mode 100755 index 000000000..a86680af9 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ExistTests.m @@ -0,0 +1,33 @@ +// +// ExistTests.m +// KIF +// +// Created by Jeroen Leenarts on 11-07-14. +// +// + +#import + +@interface ExistTests : KIFTestCase + +@end + +@implementation ExistTests + +- (void)testExistsViewWithAccessibilityLabel +{ + if ([tester tryFindingTappableViewWithAccessibilityLabel:@"Tapping" error:NULL] && ![tester tryFindingTappableViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton error:NULL]) { + [tester tapViewWithAccessibilityLabel:@"Tapping"]; + } else { + [tester fail]; + } + + if ([tester tryFindingTappableViewWithAccessibilityLabel:@"Test Suite" error:NULL] && ![tester tryFindingTappableViewWithAccessibilityLabel:@"Tapping" error:NULL]) { + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; + } else { + [tester fail]; + } +} + + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/GestureTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/GestureTests.m new file mode 100755 index 000000000..769100f57 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/GestureTests.m @@ -0,0 +1,206 @@ +// +// GestureTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import +#import +#import +#import + +#define kPanMeAccessibilityString @"Pan Me" +#define kVelocityValueLabelAccessibilityString @"velocityValueLabel" + +#define kPanLeftRegex @"^X:-[0-9\\.]+ Y:0.00$" +#define kPanUpRegex @"^X:0.00 Y:-[0-9\\.]+$" +#define kPanRightRegex @"^X:[0-9\\.]+ Y:0.00$" +#define kPanDownRegex @"^X:0.00 Y:[0-9\\.]+$" +#define KPanNoVelocityValue @"^X:0.00 Y:0.00$" + +@interface GestureTests : KIFTestCase +@end + +@implementation GestureTests + +- (void)beforeAll +{ + [tester tapViewWithAccessibilityLabel:@"Gestures"]; +} + +- (void)afterAll +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testSwipingLeft +{ + [tester swipeViewWithAccessibilityLabel:@"Swipe Me" inDirection:KIFSwipeDirectionLeft]; + [tester waitForViewWithAccessibilityLabel:@"Left"]; +} + +- (void)testSwipingRight +{ + [tester swipeViewWithAccessibilityLabel:@"Swipe Me" inDirection:KIFSwipeDirectionRight]; + [tester waitForViewWithAccessibilityLabel:@"Right"]; +} + +- (void)testSwipingUp +{ + [tester swipeViewWithAccessibilityLabel:@"Swipe Me" inDirection:KIFSwipeDirectionUp]; + [tester waitForViewWithAccessibilityLabel:@"Up"]; +} + +- (void)testSwipingDown +{ + [tester swipeViewWithAccessibilityLabel:@"Swipe Me" inDirection:KIFSwipeDirectionDown]; + [tester waitForViewWithAccessibilityLabel:@"Down"]; +} + +- (void)testPanningLeft +{ + NSString* regexPattern = kPanLeftRegex; + NSPredicate *resultTestPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexPattern]; + NSPredicate *noVelocityPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", KPanNoVelocityValue]; + + UIView* velocityResultView = [tester waitForViewWithAccessibilityLabel:kVelocityValueLabelAccessibilityString]; + XCTAssertTrue([velocityResultView isKindOfClass:[UILabel class]], @"Found view is not a UILabel instance!"); + UILabel* velocityLabel = (UILabel*)velocityResultView; + + UIView* panLabel = [tester waitForTappableViewWithAccessibilityLabel:kPanMeAccessibilityString]; + CGPoint centerInView = CGPointMake(panLabel.frame.size.width / 2.0, panLabel.frame.size.height / 2.0); + + [panLabel dragFromPoint:centerInView toPoint:CGPointMake(centerInView.x - 30, centerInView.y)]; + XCTAssertFalse([noVelocityPredicate evaluateWithObject:velocityLabel.text], @"No valocity value found!"); + XCTAssertTrue([resultTestPredicate evaluateWithObject:velocityLabel.text], @"The result doesn`t match the %@ regex pattern", regexPattern); +} + +- (void)testPanningRight +{ + NSString* regexPattern = kPanRightRegex; + NSPredicate *resultTestPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexPattern]; + NSPredicate *noVelocityPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", KPanNoVelocityValue]; + + UIView* velocityResultView = [tester waitForViewWithAccessibilityLabel:kVelocityValueLabelAccessibilityString]; + XCTAssertTrue([velocityResultView isKindOfClass:[UILabel class]], @"Found view is not a UILabel instance!"); + UILabel* velocityLabel = (UILabel*)velocityResultView; + + UIView* panLabel = [tester waitForTappableViewWithAccessibilityLabel:kPanMeAccessibilityString]; + CGPoint centerInView = CGPointMake(panLabel.frame.size.width / 2.0, panLabel.frame.size.height / 2.0); + + [panLabel dragFromPoint:centerInView toPoint:CGPointMake(centerInView.x + 30, centerInView.y)]; + XCTAssertFalse([noVelocityPredicate evaluateWithObject:velocityLabel.text], @"No valocity value found!"); + XCTAssertTrue([resultTestPredicate evaluateWithObject:velocityLabel.text], @"The result doesn`t match the %@ regex pattern", regexPattern); +} + +- (void)testPanningUp +{ + NSString* regexPattern = kPanUpRegex; + NSPredicate *resultTestPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexPattern]; + NSPredicate *noVelocityPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", KPanNoVelocityValue]; + + UIView* velocityResultView = [tester waitForViewWithAccessibilityLabel:kVelocityValueLabelAccessibilityString]; + XCTAssertTrue([velocityResultView isKindOfClass:[UILabel class]], @"Found view is not a UILabel instance!"); + UILabel* velocityLabel = (UILabel*)velocityResultView; + + UIView* panLabel = [tester waitForTappableViewWithAccessibilityLabel:kPanMeAccessibilityString]; + CGPoint centerInView = CGPointMake(panLabel.frame.size.width / 2.0, panLabel.frame.size.height / 2.0); + + [panLabel dragFromPoint:centerInView toPoint:CGPointMake(centerInView.x, centerInView.y - 30)]; + XCTAssertFalse([noVelocityPredicate evaluateWithObject:velocityLabel.text], @"No valocity value found!"); + XCTAssertTrue([resultTestPredicate evaluateWithObject:velocityLabel.text], @"The result doesn`t match the %@ regex pattern", regexPattern); +} + + +- (void)testPanningDown +{ + NSString* regexPattern = kPanDownRegex; + NSPredicate *resultTestPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexPattern]; + NSPredicate *noVelocityPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", KPanNoVelocityValue]; + + UIView* velocityResultView = [tester waitForViewWithAccessibilityLabel:kVelocityValueLabelAccessibilityString]; + XCTAssertTrue([velocityResultView isKindOfClass:[UILabel class]], @"Found view is not a UILabel instance!"); + UILabel* velocityLabel = (UILabel*)velocityResultView; + + UIView* panLabel = [tester waitForTappableViewWithAccessibilityLabel:kPanMeAccessibilityString]; + CGPoint centerInView = CGPointMake(panLabel.frame.size.width / 2.0, panLabel.frame.size.height / 2.0); + + [panLabel dragFromPoint:centerInView toPoint:CGPointMake(centerInView.x, centerInView.y + 30)]; + XCTAssertFalse([noVelocityPredicate evaluateWithObject:velocityLabel.text], @"No valocity value found!"); + XCTAssertTrue([resultTestPredicate evaluateWithObject:velocityLabel.text], @"The result doesn`t match the %@ regex pattern", regexPattern); +} + +- (void)testMissingSwipeableElement +{ + KIFExpectFailure([[tester usingTimeout:0.25] swipeViewWithAccessibilityLabel:@"Unknown" inDirection:KIFSwipeDirectionDown]); +} + +- (void)testSwipingLeftWithTraits +{ + [tester swipeViewWithAccessibilityLabel:@"Swipe Me" value:nil traits:UIAccessibilityTraitStaticText inDirection:KIFSwipeDirectionLeft]; + [tester waitForViewWithAccessibilityLabel:@"Left"]; +} + +- (void)testSwipingRightWithTraits +{ + [tester swipeViewWithAccessibilityLabel:@"Swipe Me" value:nil traits:UIAccessibilityTraitStaticText inDirection:KIFSwipeDirectionRight]; + [tester waitForViewWithAccessibilityLabel:@"Right"]; +} + +- (void)testSwipingUpWithTraits +{ + [tester swipeViewWithAccessibilityLabel:@"Swipe Me" value:nil traits:UIAccessibilityTraitStaticText inDirection:KIFSwipeDirectionUp]; + [tester waitForViewWithAccessibilityLabel:@"Up"]; +} + +- (void)testSwipingDownWithTraits +{ + [tester swipeViewWithAccessibilityLabel:@"Swipe Me" value:nil traits:UIAccessibilityTraitStaticText inDirection:KIFSwipeDirectionDown]; + [tester waitForViewWithAccessibilityLabel:@"Down"]; +} + +- (void)testMissingSwipeableElementWithTraits +{ + KIFExpectFailure([[tester usingTimeout:0.25] swipeViewWithAccessibilityLabel:@"Unknown" value:nil traits:UIAccessibilityTraitStaticText inDirection:KIFSwipeDirectionDown]); +} + +- (void)testSwipingLeftWithIdentifier +{ + [tester swipeViewWithAccessibilityIdentifier:@"gestures.swipeMe" inDirection:KIFSwipeDirectionLeft]; + [tester waitForViewWithAccessibilityLabel:@"Left"]; +} + +- (void)testSwipingRightWithIdentifier +{ + [tester swipeViewWithAccessibilityIdentifier:@"gestures.swipeMe" inDirection:KIFSwipeDirectionRight]; + [tester waitForViewWithAccessibilityLabel:@"Right"]; +} + +- (void)testSwipingUpWithIdentifier +{ + [tester swipeViewWithAccessibilityIdentifier:@"gestures.swipeMe" inDirection:KIFSwipeDirectionUp]; + [tester waitForViewWithAccessibilityLabel:@"Up"]; +} + +- (void)testSwipingDownWithIdentifier +{ + [tester swipeViewWithAccessibilityIdentifier:@"gestures.swipeMe" inDirection:KIFSwipeDirectionDown]; + [tester waitForViewWithAccessibilityLabel:@"Down"]; +} + +- (void)testScrolling +{ + [tester scrollViewWithAccessibilityIdentifier:@"Scroll View" byFractionOfSizeHorizontal:-0.9 vertical:-0.9]; + [tester waitForTappableViewWithAccessibilityLabel:@"Bottom Right"]; + [tester scrollViewWithAccessibilityIdentifier:@"Scroll View" byFractionOfSizeHorizontal:0.9 vertical:0.9]; + [tester waitForTappableViewWithAccessibilityLabel:@"Top Left"]; +} + +- (void)testMissingScrollableElement +{ + KIFExpectFailure([[tester usingTimeout:0.25] scrollViewWithAccessibilityIdentifier:@"Unknown" byFractionOfSizeHorizontal:0.5 vertical:0.5]); +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF Tests-Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF Tests-Info.plist new file mode 100755 index 000000000..169b6f710 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF Tests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF Tests-Prefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF Tests-Prefix.pch new file mode 100755 index 000000000..755f50c2f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF Tests-Prefix.pch @@ -0,0 +1,8 @@ +// +// Prefix header for all source files of the 'KIF Tests' target in the 'KIF Tests' project +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF XCTests-Prefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF XCTests-Prefix.pch new file mode 100755 index 000000000..f84e4f10a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/KIF XCTests-Prefix.pch @@ -0,0 +1,9 @@ +// +// Prefix header for all source files of the 'KIF Tests' target in the 'KIF Tests' project +// + +#ifdef __OBJC__ + #import + #import + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/LandscapeTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/LandscapeTests.m new file mode 100755 index 000000000..c4e778ddf --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/LandscapeTests.m @@ -0,0 +1,40 @@ +// +// LandscapeTests.m +// KIF +// +// Created by Brian Nickel on 9/11/13. +// +// + +#import + +@interface LandscapeTests : KIFTestCase +@end + +@implementation LandscapeTests + +- (void)beforeAll +{ + [system simulateDeviceRotationToOrientation:UIDeviceOrientationLandscapeLeft]; + [tester scrollViewWithAccessibilityIdentifier:@"Test Suite TableView" byFractionOfSizeHorizontal:0 vertical:-0.2]; +} + +- (void)afterAll +{ + [system simulateDeviceRotationToOrientation:UIDeviceOrientationPortrait]; + [tester waitForTimeInterval:0.5]; +} + +- (void)beforeEach +{ + [tester waitForTimeInterval:0.25]; +} + +- (void)testThatAlertViewsCanBeTappedInLandscape +{ + [tester tapViewWithAccessibilityLabel:@"UIAlertView"]; + [tester tapViewWithAccessibilityLabel:@"Continue"]; + [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Message"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/LongPressTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/LongPressTests.m new file mode 100755 index 000000000..1aa06951e --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/LongPressTests.m @@ -0,0 +1,45 @@ +// +// LongPressTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface LongPressTests : KIFTestCase +@end + +@implementation LongPressTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Tapping"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + + +- (void)testLongPressingViewWithAccessibilityLabel +{ + [tester longPressViewWithAccessibilityLabel:@"Greeting" duration:2]; + [tester tapViewWithAccessibilityLabel:@"Select All"]; +} + +- (void)testLongPressingViewViewWithTraits +{ + [tester longPressViewWithAccessibilityLabel:@"Greeting" value:@"Hello" duration:2]; + [tester tapViewWithAccessibilityLabel:@"Select All"]; +} + +- (void)testLongPressingViewViewWithValue +{ + [tester longPressViewWithAccessibilityLabel:@"Greeting" value:@"Hello" traits:UIAccessibilityTraitUpdatesFrequently duration:2]; + [tester tapViewWithAccessibilityLabel:@"Select All"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ModalViewTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ModalViewTests.m new file mode 100755 index 000000000..4d8f68f4b --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ModalViewTests.m @@ -0,0 +1,63 @@ +// +// ModalViewTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface ModalViewTests : KIFTestCase +@end + +@implementation ModalViewTests + +- (void)beforeEach +{ + [tester waitForTimeInterval:0.25]; +} + +- (void)testInteractionWithAnAlertView +{ + [tester tapViewWithAccessibilityLabel:@"UIAlertView"]; + [tester waitForViewWithAccessibilityLabel:@"Alert View"]; + [tester waitForViewWithAccessibilityLabel:@"Message"]; + [tester waitForTappableViewWithAccessibilityLabel:@"Cancel"]; + [tester waitForTappableViewWithAccessibilityLabel:@"Continue"]; + [tester tapViewWithAccessibilityLabel:@"Continue"]; + [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Message"]; +} + +- (void)testInteractionWithAnActionSheet +{ + [tester tapViewWithAccessibilityLabel:@"UIActionSheet"]; + [tester waitForViewWithAccessibilityLabel:@"Action Sheet"]; + [tester waitForTappableViewWithAccessibilityLabel:@"Destroy"]; + [tester waitForTappableViewWithAccessibilityLabel:@"A"]; + [tester waitForTappableViewWithAccessibilityLabel:@"B"]; + + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { + [tester dismissPopover]; + } else { + [tester tapViewWithAccessibilityLabel:@"Cancel"]; + [tester waitForViewWithAccessibilityLabel:@"Alert View"]; + [tester tapViewWithAccessibilityLabel:@"Continue"]; + [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Alert View"]; + } +} + +- (void)testInteractionWithAnActivityViewController +{ + if (!NSClassFromString(@"UIActivityViewController")) { + return; + } + + [tester tapViewWithAccessibilityLabel:@"UIActivityViewController"]; + [tester waitForTappableViewWithAccessibilityLabel:@"Copy"]; + [tester waitForTappableViewWithAccessibilityLabel:@"Mail"]; + [tester waitForTappableViewWithAccessibilityLabel:@"Cancel"]; + [tester tapViewWithAccessibilityLabel:@"Cancel"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/MultiFingerTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/MultiFingerTests.m new file mode 100755 index 000000000..9f8660af9 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/MultiFingerTests.m @@ -0,0 +1,149 @@ +// +// MultiFingerTests.m +// KIF +// +// Created by Ying Quan Tan on 7/30/14. +// +// + +#import +#import "KIFTestStepValidation.h" +#import + +@interface MultiFingerTests : KIFTestCase +@property (nonatomic, readwrite) BOOL twoFingerTapSuccess; +@property (nonatomic, readwrite) BOOL twoFingerPanSuccess; +@property (nonatomic, readwrite) BOOL zoomSuccess; +@property (nonatomic, readwrite) double latestRotation; +@end + +@implementation MultiFingerTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"ScrollViews"]; + + // reset scroll view + UIScrollView *scrollView = (UIScrollView *)[tester waitForViewWithAccessibilityLabel:@"Scroll View"]; + scrollView.contentOffset = CGPointZero; + + self.twoFingerTapSuccess = NO; + self.twoFingerPanSuccess = NO; + self.zoomSuccess = NO; + self.latestRotation = 0; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; + self.twoFingerTapSuccess = NO; + self.twoFingerPanSuccess = NO; + self.zoomSuccess = NO; + self.latestRotation = 0; +} + +- (void)testTwoFingerTap { + UIScrollView *scrollView = (UIScrollView *)[tester waitForViewWithAccessibilityLabel:@"Scroll View"]; + UITapGestureRecognizer *twoFingerTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self + action:@selector(twoFingerTapped)]; + twoFingerTapRecognizer.numberOfTouchesRequired = 2; + [scrollView addGestureRecognizer:twoFingerTapRecognizer]; + + [scrollView twoFingerTapAtPoint:CGPointMake(CGRectGetMidX(scrollView.bounds), CGRectGetMidY(scrollView.bounds))]; + + __KIFAssertEqual(self.twoFingerTapSuccess, YES); + [scrollView removeGestureRecognizer:twoFingerTapRecognizer]; +} + +- (void)twoFingerTapped { + self.twoFingerTapSuccess = YES; +} + +- (void)testTwoFingerPan +{ + CGFloat offset = 50.0; + + UIScrollView *scrollView = (UIScrollView *)[tester waitForViewWithAccessibilityLabel:@"Scroll View"]; + UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPanned:)]; + panGestureRecognizer.minimumNumberOfTouches = 2; + [scrollView addGestureRecognizer:panGestureRecognizer]; + + CGPoint startPoint = CGPointMake(CGRectGetMidX(scrollView.bounds), CGRectGetMidY(scrollView.bounds)); + CGPoint endPoint = CGPointMake(startPoint.x, startPoint.y + offset); + [scrollView twoFingerPanFromPoint:startPoint toPoint:endPoint steps:10]; + + __KIFAssertEqual(self.twoFingerPanSuccess, YES); + [scrollView removeGestureRecognizer:panGestureRecognizer]; +} + +- (void)twoFingerPanned:(UIGestureRecognizer*) gr{ + + if (gr.state == UIGestureRecognizerStateEnded) { + self.twoFingerPanSuccess = YES; + } + +} + +- (void)testZoom { + CGFloat distance = 50.0; + + UIScrollView *scrollView = (UIScrollView *)[tester waitForViewWithAccessibilityLabel:@"Scroll View"]; + UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self + action:@selector(zoomed:)]; + + [scrollView addGestureRecognizer:pinchRecognizer]; + + CGPoint startPoint = CGPointMake(CGRectGetMidX(scrollView.bounds), CGRectGetMidY(scrollView.bounds)); + [scrollView zoomAtPoint:startPoint distance:distance steps:10]; + + __KIFAssertEqual(self.zoomSuccess, YES); + [scrollView removeGestureRecognizer:pinchRecognizer]; +} + +- (void)zoomed:(UIPinchGestureRecognizer *)pinchRecognizer { + + if (pinchRecognizer.state == UIGestureRecognizerStateChanged) + { + if (pinchRecognizer.scale > 1) + { + self.zoomSuccess = YES; + } + } + +} + +- (void)testRotate { + UIScrollView *scrollView = (UIScrollView *)[tester waitForViewWithAccessibilityLabel:@"Scroll View"]; + UIRotationGestureRecognizer *rotateRecognizer = + [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotated:)]; + + [scrollView addGestureRecognizer:rotateRecognizer]; + + [self assertThatLatestRotationIsWithinThreshold:45]; + [self assertThatLatestRotationIsWithinThreshold:90]; + [self assertThatLatestRotationIsWithinThreshold:180]; + [self assertThatLatestRotationIsWithinThreshold:270]; + [self assertThatLatestRotationIsWithinThreshold:360]; + + [scrollView removeGestureRecognizer:rotateRecognizer]; +} + +- (void)assertThatLatestRotationIsWithinThreshold:(double)targetRotationInDegrees { + UIScrollView *scrollView = (UIScrollView *)[tester waitForViewWithAccessibilityLabel:@"Scroll View"]; + CGPoint startPoint = CGPointMake(CGRectGetMidX(scrollView.bounds), CGRectGetMidY(scrollView.bounds)); + [scrollView twoFingerRotateAtPoint:startPoint angle:targetRotationInDegrees]; + + // check we have rotated to within some small threshold of the target rotation amount + // 0.2 radians is ~12 degrees + BOOL withinThreshold = (self.latestRotation - KIFDegreesToRadians(targetRotationInDegrees)) < 0.2; + __KIFAssertEqual(withinThreshold, YES); +} + +- (void)rotated:(UIRotationGestureRecognizer *)recognizer { + if (recognizer.state == UIGestureRecognizerStateEnded) + { + self.latestRotation = recognizer.rotation; + } +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/PickerTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/PickerTests.m new file mode 100755 index 000000000..62921a94f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/PickerTests.m @@ -0,0 +1,81 @@ +#import + +@interface PickerTests : KIFTestCase +@end + +@implementation PickerTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Pickers"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testSelectingDateInPast +{ + [tester tapViewWithAccessibilityLabel:@"Date Selection"]; + NSArray *date = @[@"June", @"17", @"1965"]; + // If the UIDatePicker LocaleIdentifier would be de_DE then the date to set + // would look like this: NSArray *date = @[@"17.", @"Juni", @"1965" + [tester selectDatePickerValue:date]; + [tester waitForViewWithAccessibilityLabel:@"Date Selection" value:@"Jun 17, 1965" traits:UIAccessibilityTraitNone]; +} + +- (void)testSelectingDateInFuture +{ + [tester tapViewWithAccessibilityLabel:@"Date Selection"]; + NSArray *date = @[@"December", @"31", @"2030"]; + [tester selectDatePickerValue:date]; + [tester waitForViewWithAccessibilityLabel:@"Date Selection" value:@"Dec 31, 2030" traits:UIAccessibilityTraitNone]; +} + +- (void)testSelectingDateTime +{ + [tester tapViewWithAccessibilityLabel:@"Date Time Selection"]; + NSArray *dateTime = @[@"Jun 17", @"6", @"43", @"AM"]; + [tester selectDatePickerValue:dateTime]; + [tester waitForViewWithAccessibilityLabel:@"Date Time Selection" value:@"Jun 17, 06:43 AM" traits:UIAccessibilityTraitNone]; +} + +- (void)testSelectingTime +{ + [tester tapViewWithAccessibilityLabel:@"Time Selection"]; + NSArray *time = @[@"7", @"44", @"AM"]; + [tester selectDatePickerValue:time]; + [tester waitForViewWithAccessibilityLabel:@"Time Selection" value:@"7:44 AM" traits:UIAccessibilityTraitNone]; +} + +- (void)testSelectingCountdown +{ + [tester tapViewWithAccessibilityLabel:@"Countdown Selection"]; + NSArray *countdown = @[@"4", @"10"]; + [tester selectDatePickerValue:countdown]; + [tester waitForViewWithAccessibilityLabel:@"Countdown Selection" value:@"15000.000000" traits:UIAccessibilityTraitNone]; +} + +- (void)testSelectingAPickerRow +{ + [tester selectPickerViewRowWithTitle:@"Charlie"]; + + NSOperatingSystemVersion iOS8 = {8, 0, 0}; + if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)] && [[NSProcessInfo new] isOperatingSystemAtLeastVersion:iOS8]) { + [tester waitForViewWithAccessibilityLabel:@"Call Sign" value:@"Charlie" traits:UIAccessibilityTraitNone]; + } else { + [tester waitForViewWithAccessibilityLabel:@"Call Sign" value:@"Charlie. 3 of 3" traits:UIAccessibilityTraitNone]; + } +} + +- (void)testSelectingRowInComponent +{ + [tester tapViewWithAccessibilityLabel:@"Date Selection"]; + NSArray *date = @[@"December", @"31", @"2030"]; + [tester selectDatePickerValue:date]; + [tester selectPickerViewRowWithTitle:@"17" inComponent:1]; + [tester waitForViewWithAccessibilityLabel:@"Date Selection" value:@"Dec 17, 2030" traits:UIAccessibilityTraitNone]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ScrollViewTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ScrollViewTests.m new file mode 100755 index 000000000..94a51014a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/ScrollViewTests.m @@ -0,0 +1,40 @@ +// +// ScrollViewTests.m +// Test Suite +// +// Created by Hilton Campbell on 2/20/14. +// +// + +#import +#import "KIFTestStepValidation.h" + +@interface ScrollViewTests : KIFTestCase +@end + +@implementation ScrollViewTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"ScrollViews"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testScrollingToTapOffscreenViews +{ + [tester tapViewWithAccessibilityLabel:@"Down"]; + [tester tapViewWithAccessibilityLabel:@"Up"]; + [tester tapViewWithAccessibilityLabel:@"Right"]; + [tester tapViewWithAccessibilityLabel:@"Left"]; +} + +- (void)testScrollingToTapOffscreenTextView +{ + [tester tapViewWithAccessibilityLabel:@"TextView"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SearchFieldTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SearchFieldTests.m new file mode 100755 index 000000000..6a5174c0d --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SearchFieldTests.m @@ -0,0 +1,35 @@ +// +// SearchFieldTests.m +// KIF +// +// Created by Brian Nickel on 9/13/13. +// +// + +#import +#import + +@interface SearchFieldTests : KIFTestCase +@end + +@implementation SearchFieldTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"TableViews"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testWaitingForSearchFieldToBecomeFirstResponder +{ + [tester tapViewWithAccessibilityLabel:nil traits:UIAccessibilityTraitSearchField]; + [tester waitForFirstResponderWithAccessibilityLabel:nil traits:UIAccessibilityTraitSearchField]; + [tester enterTextIntoCurrentFirstResponder:@"text"]; + [tester waitForViewWithAccessibilityLabel:nil value:@"text" traits:UIAccessibilityTraitSearchField]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SpecificControlTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SpecificControlTests.m new file mode 100755 index 000000000..2cde0456f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SpecificControlTests.m @@ -0,0 +1,60 @@ +// +// SpecificControlTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface SpecificControlTests : KIFTestCase +@end + +@implementation SpecificControlTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Tapping"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testTogglingASwitch +{ + [tester waitForViewWithAccessibilityLabel:@"Happy" value:@"1" traits:UIAccessibilityTraitNone]; + [tester setOn:NO forSwitchWithAccessibilityLabel:@"Happy"]; + [tester waitForViewWithAccessibilityLabel:@"Happy" value:@"0" traits:UIAccessibilityTraitNone]; + [tester setOn:YES forSwitchWithAccessibilityLabel:@"Happy"]; + [tester waitForViewWithAccessibilityLabel:@"Happy" value:@"1" traits:UIAccessibilityTraitNone]; +} + +- (void)testMovingASlider +{ + [tester waitForTimeInterval:1]; + [tester setValue:3 forSliderWithAccessibilityLabel:@"Slider"]; + [tester waitForViewWithAccessibilityLabel:@"Slider" value:@"3" traits:UIAccessibilityTraitNone]; + [tester setValue:0 forSliderWithAccessibilityLabel:@"Slider"]; + [tester waitForViewWithAccessibilityLabel:@"Slider" value:@"0" traits:UIAccessibilityTraitNone]; + [tester setValue:5 forSliderWithAccessibilityLabel:@"Slider"]; + [tester waitForViewWithAccessibilityLabel:@"Slider" value:@"5" traits:UIAccessibilityTraitNone]; +} + +- (void)testPickingAPhoto { + [tester tapViewWithAccessibilityLabel:@"Photos"]; + [tester acknowledgeSystemAlert]; + [tester waitForTimeInterval:0.5f]; // Wait for view to stabilize + + NSOperatingSystemVersion iOS8 = {8, 0, 0}; + if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)] && [[NSProcessInfo new] isOperatingSystemAtLeastVersion:iOS8]) { + [tester choosePhotoInAlbum:@"Camera Roll" atRow:1 column:2]; + } else { + [tester choosePhotoInAlbum:@"Saved Photos" atRow:1 column:2]; + } + [tester waitForViewWithAccessibilityLabel:@"UIImage"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SystemAlertTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SystemAlertTests.m new file mode 100755 index 000000000..74784dc65 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SystemAlertTests.m @@ -0,0 +1,40 @@ +// +// SystemAlertTests.m +// KIF +// +// Created by Joe Masilotti on 12/1/14. +// +// + +#import + +@interface SystemAlertTests : KIFTestCase + +@end + +@implementation SystemAlertTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"System Alerts"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testAuthorizingLocationServicesAndNotificationsScheduling { + [tester tapViewWithAccessibilityLabel:@"Location Services and Notifications"]; + XCTAssertTrue([tester acknowledgeSystemAlert]); + XCTAssertTrue([tester acknowledgeSystemAlert]); + XCTAssertFalse([tester acknowledgeSystemAlert]); +} + +- (void)testAuthorizingPhotosAccess { + [tester tapViewWithAccessibilityLabel:@"Photos"]; + [tester acknowledgeSystemAlert]; + [tester tapViewWithAccessibilityLabel:@"Cancel"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SystemTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SystemTests.m new file mode 100755 index 000000000..4f2d0d02d --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/SystemTests.m @@ -0,0 +1,106 @@ +// +// SystemTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +#define KIFAssertEqual XCTAssertEqual +#define KIFAssertEqualObjects XCTAssertEqualObjects +#define KIFAssertTrue XCTAssertTrue +#define KIFAssertFalse XCTAssertFalse + +@interface SystemTests : XCTestCase + +@end + +@implementation SystemTests + +- (void)testWaitingForTimeInterval +{ + NSTimeInterval startTime = [NSDate timeIntervalSinceReferenceDate]; + [tester waitForTimeInterval:1.2]; + NSTimeInterval elapsed = [NSDate timeIntervalSinceReferenceDate] - startTime; + KIFAssertTrue(elapsed > 1.2, @"Waiting should take the alotted time."); + KIFAssertTrue(elapsed < 1.3, @"Waiting should not take too long."); +} + +- (void)testWaitingForNotification +{ + static NSString *const Name = @"Notification"; + id obj = [[NSObject alloc] init]; + + double delayInSeconds = 1.0; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); + dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ + [[NSNotificationCenter defaultCenter] postNotificationName:Name object:obj userInfo:@{@"A": @"B"}]; + }); + + NSNotification *notification = [system waitForNotificationName:Name object:obj]; + KIFAssertEqualObjects(@"B", [notification.userInfo objectForKey:@"A"], @"Expected notification to match user data."); +} + +- (void)testWaitingForNotificationWhileDoingOtherThings +{ + static NSString *const Name = @"Notification"; + id obj = [[NSObject alloc] init]; + + NSNotification *notification = [system waitForNotificationName:Name object:obj whileExecutingBlock:^{ + [[NSNotificationCenter defaultCenter] postNotificationName:Name object:obj userInfo:@{@"A": @"B"}]; + }]; + + KIFAssertEqualObjects(@"B", [notification.userInfo objectForKey:@"A"], @"Expected notification to match user data."); +} + +- (void)testMemoryWarningSimulator +{ + [system waitForNotificationName:UIApplicationDidReceiveMemoryWarningNotification object:[UIApplication sharedApplication] whileExecutingBlock:^{ + [system simulateMemoryWarning]; + }]; +} + +- (void)testMockingOpenURL +{ + __block BOOL openURLReturnValue; + __block BOOL canOpenURLReturnValue; + [system waitForApplicationToOpenURL:@"test123://" whileExecutingBlock:^{ + NSURL *uninstalledAppURL = [NSURL URLWithString:@"test123://"]; + openURLReturnValue = [[UIApplication sharedApplication] canOpenURL:uninstalledAppURL]; + canOpenURLReturnValue = [[UIApplication sharedApplication] openURL:uninstalledAppURL]; + } returning:NO]; + KIFAssertEqual(NO, openURLReturnValue, @"openURL: should have returned NO"); + KIFAssertEqual(NO, canOpenURLReturnValue, @"openURL: should have returned NO"); + + [system waitForApplicationToOpenURL:@"test123://" whileExecutingBlock:^{ + NSURL *installedAppURL = [NSURL URLWithString:@"test123://"]; + openURLReturnValue = [[UIApplication sharedApplication] canOpenURL:installedAppURL]; + canOpenURLReturnValue = [[UIApplication sharedApplication] openURL:installedAppURL]; + } returning:YES]; + KIFAssertEqual(YES, openURLReturnValue, @"openURL: should have returned YES"); + KIFAssertEqual(YES, canOpenURLReturnValue, @"openURL: should have returned YES"); + + [system waitForApplicationToOpenURLWithScheme:@"test123" whileExecutingBlock:^{ + NSURL *installedAppURL = [NSURL URLWithString:@"test123://some/path?query"]; + openURLReturnValue = [[UIApplication sharedApplication] canOpenURL:installedAppURL]; + canOpenURLReturnValue = [[UIApplication sharedApplication] openURL:installedAppURL]; + } returning:YES]; + KIFAssertEqual(YES, openURLReturnValue, @"openURL: should have returned YES"); + KIFAssertEqual(YES, canOpenURLReturnValue, @"openURL: should have returned YES"); + + [system waitForApplicationToOpenAnyURLWhileExecutingBlock:^{ + NSURL *someURL = [NSURL URLWithString:@"423543523454://"]; + openURLReturnValue = [[UIApplication sharedApplication] canOpenURL:someURL]; + canOpenURLReturnValue = [[UIApplication sharedApplication] openURL:someURL]; + } returning:YES]; + KIFAssertEqual(YES, openURLReturnValue, @"openURL: should have returned YES"); + KIFAssertEqual(YES, canOpenURLReturnValue, @"openURL: should have returned YES"); + + NSURL *fakeURL = [NSURL URLWithString:@"this-is-a-fake-url://"]; + KIFAssertFalse([[UIApplication sharedApplication] canOpenURL:fakeURL], @"Should no longer be mocking, reject bad URL."); + KIFAssertFalse([[UIApplication sharedApplication] openURL:fakeURL], @"Should no longer be mocking, reject bad URL."); +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TableViewTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TableViewTests.m new file mode 100755 index 000000000..dbc5413c1 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TableViewTests.m @@ -0,0 +1,174 @@ +// +// TableViewTests.m +// Test Suite +// +// Created by Brian Nickel on 7/31/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import +#import "KIFTestStepValidation.h" +#import "UIApplication-KIFAdditions.h" + +@interface TableViewTests : KIFTestCase +@end + +@implementation TableViewTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"TableViews"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +//TODO: Fail on iOS 9 (UITableViewCell accessibilityTraits is incorrect when selected) +- (void)testTappingRows +{ + [tester tapRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:2] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"]; + [tester waitForViewWithAccessibilityLabel:@"Last Cell" traits:UIAccessibilityTraitSelected]; + [tester tapRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"]; + [tester waitForViewWithAccessibilityLabel:@"First Cell" traits:UIAccessibilityTraitSelected]; +} + +//TODO: Fail on iOS 9 (UITableViewCell accessibilityTraits is incorrect when selected) +- (void)testTappingLastRowAndSection +{ + [tester tapRowAtIndexPath:[NSIndexPath indexPathForRow:-1 inSection:-1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"]; + [tester waitForViewWithAccessibilityLabel:@"Last Cell" traits:UIAccessibilityTraitSelected]; +} + +- (void)testOutOfBounds +{ + KIFExpectFailure([[tester usingTimeout:1] tapRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:99] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"]); +} + +- (void)testUnknownTable +{ + KIFExpectFailure([[tester usingTimeout:1] tapRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] inTableViewWithAccessibilityIdentifier:@"Unknown Table"]); +} + +- (void)testScrollingToTop +{ + [tester tapRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:2] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"]; + [tester tapStatusBar]; + + UITableView *tableView; + [tester waitForAccessibilityElement:NULL view:&tableView withIdentifier:@"TableView Tests Table" tappable:NO]; + [tester runBlock:^KIFTestStepResult(NSError *__autoreleasing *error) { + KIFTestWaitCondition(tableView.contentOffset.y == - tableView.contentInset.top, error, @"Waited for scroll view to scroll to top, but it ended at %@", NSStringFromCGPoint(tableView.contentOffset)); + return KIFTestStepResultSuccess; + }]; +} + +- (void)testTappingRowsByLabel +{ + // Tap the first row, which is already visible + [tester tapViewWithAccessibilityLabel:@"First Cell"]; + + // Tap the last row, which will need to be scrolled up + [tester tapViewWithAccessibilityLabel:@"Last Cell"]; + + // Tap the first row, which will need to be scrolled down + [tester tapViewWithAccessibilityLabel:@"First Cell"]; +} + +- (void)testMoveRowDown +{ + [tester tapViewWithAccessibilityLabel:@"Edit"]; + + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 0", @""); + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:4 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 4", @""); + + [tester moveRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] toIndexPath:[NSIndexPath indexPathForRow:4 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"]; + + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 1", @""); + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:4 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 0", @""); + + [tester tapViewWithAccessibilityLabel:@"Done"]; +} + +- (void)testMoveRowUp +{ + [tester tapViewWithAccessibilityLabel:@"Edit"]; + + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 0", @""); + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:4 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 4", @""); + + [tester moveRowAtIndexPath:[NSIndexPath indexPathForRow:4 inSection:1] toIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"]; + + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 4", @""); + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:4 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 3", @""); + + [tester tapViewWithAccessibilityLabel:@"Done"]; +} + +- (void)testMoveRowUpUsingNegativeRowIndexes +{ + [tester tapViewWithAccessibilityLabel:@"Edit"]; + + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:-3 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 35", @""); + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:-1 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 37", @""); + + [tester moveRowAtIndexPath:[NSIndexPath indexPathForRow:-1 inSection:1] toIndexPath:[NSIndexPath indexPathForRow:-3 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"]; + + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:-3 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 37", @""); + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:-1 inSection:1] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Cell 36", @""); + + [tester tapViewWithAccessibilityLabel:@"Done"]; +} + +- (void)testTogglingSwitch +{ + [tester setOn:NO forSwitchWithAccessibilityLabel:@"Table View Switch"]; + [tester setOn:YES forSwitchWithAccessibilityLabel:@"Table View Switch"]; +} + +- (void)testButtonAbsentAfterRemoveFromSuperview +{ + UIView *view = [tester waitForViewWithAccessibilityLabel:@"Button"]; + + [view removeFromSuperview]; + [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Button"]; +} + +- (void)testButtonAbsentAfterSetHidden +{ + UIView *view = [tester waitForViewWithAccessibilityLabel:@"Button"]; + + [view setHidden:YES]; + [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Button"]; + + [view setHidden:NO]; + [tester waitForViewWithAccessibilityLabel:@"Button"]; +} + +- (void)testEnteringTextIntoATextFieldInATableCell +{ + [tester enterText:@"Test-Driven Development" intoViewWithAccessibilityLabel:@"TextField"]; +} + +// Delete first and last rows in table view +- (void)testSwipingRows { + + UITableView *tableView; + [tester waitForAccessibilityElement:NULL view:&tableView withIdentifier:@"TableView Tests Table" tappable:NO]; + + // First row + [tester swipeRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] inTableView:tableView inDirection:KIFSwipeDirectionLeft]; + [tester tapViewWithAccessibilityLabel:@"Delete"]; + + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Deleted", @""); + + // Last row + [tester swipeRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:2] inTableView:tableView inDirection:KIFSwipeDirectionLeft]; + [tester tapViewWithAccessibilityLabel:@"Delete"]; + + __KIFAssertEqualObjects([tester waitForCellAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:2] inTableViewWithAccessibilityIdentifier:@"TableView Tests Table"].textLabel.text, @"Deleted", @""); + +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TappingTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TappingTests.m new file mode 100755 index 000000000..64e3912f6 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TappingTests.m @@ -0,0 +1,103 @@ +// +// TappingTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface TappingTests : KIFTestCase +@end + +@implementation TappingTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Tapping"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testTappingViewWithAccessibilityLabel +{ + // Since the tap has occurred in setup, we just need to wait for the result. + [tester waitForViewWithAccessibilityLabel:@"TapView"]; +} + +- (void)testTappingViewWithTraits +{ + [tester tapViewWithAccessibilityLabel:@"X" traits:UIAccessibilityTraitButton]; + [tester waitForViewWithAccessibilityLabel:@"X" traits:UIAccessibilityTraitButton | UIAccessibilityTraitSelected]; +} + +- (void)testTappingViewWithValue +{ + [tester tapViewWithAccessibilityLabel:@"Greeting" value:@"Hello" traits:UIAccessibilityTraitNone]; + [tester waitForFirstResponderWithAccessibilityLabel:@"Greeting"]; +} + +- (void)testTappingViewWithScreenAtPoint +{ + [tester waitForTimeInterval:0.75]; + [tester tapScreenAtPoint:CGPointMake(15, 200)]; + [tester waitForViewWithAccessibilityLabel:@"X" traits:UIAccessibilityTraitSelected]; +} + +- (void)testTappingViewPartiallyOffscreenAndWithinScrollView +{ + [tester tapViewWithAccessibilityLabel:@"Slightly Offscreen Button"]; +} + +- (void)testTappingViewWithTapGestureRecognizer +{ + [tester tapViewWithAccessibilityLabel:@"Label with Tap Gesture Recognizer"]; +} + +- (void)testTappingLabelWithLineBreaks +{ + [tester tapViewWithAccessibilityLabel:@"Label with\nLine Break\n\n"]; + [tester tapViewWithAccessibilityLabel:@"A\nB\nC\n\n"]; +} + +- (void) testTappingStepperIncrement +{ + UILabel *uiLabel = (UILabel *)[tester waitForViewWithAccessibilityLabel: @"stepperValue"]; + NSInteger originalValue = [[uiLabel text] integerValue]; + + [tester tapStepperWithAccessibilityLabel:@"theStepper" increment:(KIFStepperDirectionIncrement)]; + + [tester waitForTimeInterval:0.5f]; + uiLabel = (UILabel *)[tester waitForViewWithAccessibilityLabel: @"stepperValue"]; + NSInteger newValue = [[uiLabel text] integerValue]; + if (! newValue == (originalValue + 1)) + { + NSException *exception = [NSException exceptionWithName:@"Unexpected test failure" + reason:[NSString stringWithFormat: @"newValue was expected to be +1 of originalValue. Original Value was %ld while newValue is %ld", (long)originalValue, (long)newValue] userInfo:nil]; + [tester failWithException: exception stopTest: NO]; + } +} + +- (void) testTappingStepperDecrement +{ + UILabel *uiLabel = (UILabel *)[tester waitForViewWithAccessibilityLabel: @"stepperValue"]; + NSInteger originalValue = [[uiLabel text] integerValue]; + + [tester tapStepperWithAccessibilityLabel:@"theStepper" increment:(KIFStepperDirectionDecrement)]; + + [tester waitForTimeInterval:0.5f]; + uiLabel = (UILabel *)[tester waitForViewWithAccessibilityLabel: @"stepperValue"]; + NSInteger newValue = [[uiLabel text] integerValue]; + if (! newValue == (originalValue -1)) + { + NSException *exception = [NSException exceptionWithName:@"Unexpected test failure" + reason:[NSString stringWithFormat: @"newValue was expected to be -1 of originalValue. Original Value was %ld while newValue is %ld", (long)originalValue, (long)newValue] userInfo:nil]; + [tester failWithException: exception stopTest: NO]; + } +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TypingTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TypingTests.m new file mode 100755 index 000000000..85c2ed5e5 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/TypingTests.m @@ -0,0 +1,105 @@ +// +// TypingTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import +#import "KIFTestStepValidation.h" + +@interface TypingTests : KIFTestCase +@end + +@implementation TypingTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Tapping"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testWaitingForFirstResponder +{ + [tester tapViewWithAccessibilityLabel:@"Greeting" value:@"Hello" traits:UIAccessibilityTraitNone]; + [tester waitForFirstResponderWithAccessibilityLabel:@"Greeting"]; +} + +- (void)testMissingFirstResponder +{ + KIFExpectFailure([[tester usingTimeout:1] waitForFirstResponderWithAccessibilityLabel:@"Greeting"]); +} + +- (void)testEnteringTextIntoFirstResponder +{ + [tester longPressViewWithAccessibilityLabel:@"Greeting" value:@"Hello" duration:2]; + [tester tapViewWithAccessibilityLabel:@"Select All"]; + [tester enterTextIntoCurrentFirstResponder:@"Yo"]; + [tester waitForViewWithAccessibilityLabel:@"Greeting" value:@"Yo" traits:UIAccessibilityTraitNone]; +} + +- (void)testFailingToEnterTextIntoFirstResponder +{ + KIFExpectFailure([[tester usingTimeout:1] enterTextIntoCurrentFirstResponder:@"Yo"]); +} + +- (void)testEnteringTextIntoViewWithAccessibilityLabel +{ + [tester longPressViewWithAccessibilityLabel:@"Greeting" value:@"Hello" duration:2]; + [tester tapViewWithAccessibilityLabel:@"Select All"]; + [tester tapViewWithAccessibilityLabel:@"Cut"]; + [tester enterText:@"Yo" intoViewWithAccessibilityLabel:@"Greeting"]; + [tester waitForViewWithAccessibilityLabel:@"Greeting" value:@"Yo" traits:UIAccessibilityTraitNone]; +} + +- (void)testEnteringTextIntoViewWithAccessibilityLabelExpectingResults +{ + [tester enterText:@", world" intoViewWithAccessibilityLabel:@"Greeting" traits:UIAccessibilityTraitNone expectedResult:@"Hello, world"]; + [tester waitForViewWithAccessibilityLabel:@"Greeting" value:@"Hello, world" traits:UIAccessibilityTraitNone]; +} + +- (void)testClearingAndEnteringTextIntoViewWithAccessibilityLabel +{ + [tester clearTextFromAndThenEnterText:@"Yo" intoViewWithAccessibilityLabel:@"Greeting"]; +} + +- (void)testEnteringReturnCharacterIntoViewWithAccessibilityLabel +{ + [tester enterText:@"Hello\n" intoViewWithAccessibilityLabel:@"Other Text"]; + [tester waitForFirstResponderWithAccessibilityLabel:@"Greeting"]; + [tester enterText:@", world\n" intoViewWithAccessibilityLabel:@"Greeting" traits:UIAccessibilityTraitNone expectedResult:@"Hello, world"]; +} + +- (void)testEnteringEmojiCharactersIntoViewWithAccessibilityLabel +{ + NSString *text = @" 😓He😤ll👿o"; + [tester clearTextFromAndThenEnterText:text intoViewWithAccessibilityLabel:@"Greeting"]; + UITextField * tf = (UITextField*)[tester waitForViewWithAccessibilityLabel:@"Greeting"]; + XCTAssertTrue([tf.text isEqualToString:text]); +} + +- (void)testClearingALongTextField +{ + [tester clearTextFromAndThenEnterText:@"A man, a plan, a canal, Panama. Able was I, ere I saw Elba." intoViewWithAccessibilityLabel:@"Greeting"]; + [tester clearTextFromViewWithAccessibilityLabel:@"Greeting"]; +} + +- (void)testThatClearingTextHitsTheDelegate +{ + [tester enterText:@"hello" intoViewWithAccessibilityLabel:@"Other Text"]; + [tester clearTextFromViewWithAccessibilityLabel:@"Other Text"]; + [tester waitForViewWithAccessibilityLabel:@"Greeting" value:@"Deleted something." traits:UIAccessibilityTraitNone]; +} + +- (void)testThatBackspaceDeletesOneCharacter +{ + [tester enterText:@"hi\bello" intoViewWithAccessibilityLabel:@"Other Text" traits:UIAccessibilityTraitNone expectedResult:@"hello"]; + [tester waitForViewWithAccessibilityLabel:@"Greeting" value:@"Deleted something." traits:UIAccessibilityTraitNone]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForAbscenceTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForAbscenceTests.m new file mode 100755 index 000000000..d1489df18 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForAbscenceTests.m @@ -0,0 +1,41 @@ +// +// WaitForAbscenceTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface WaitForAbscenceTests : KIFTestCase +@end + +@implementation WaitForAbscenceTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Tapping"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testWaitingForAbsenceOfViewWithAccessibilityLabel +{ + [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Tapping"]; +} + +- (void)testWaitingForAbsenceOfViewWithTraits +{ + [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Tapping" traits:UIAccessibilityTraitStaticText]; +} + +- (void)testWaitingForAbsenceOfViewWithValue +{ + [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Switch 1" value:@"1" traits:UIAccessibilityTraitNone]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForAnimationTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForAnimationTests.m new file mode 100755 index 000000000..df9192154 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForAnimationTests.m @@ -0,0 +1,31 @@ +// +// WaitForAnimationTests.m +// KIF +// +// Created by Hendrik von Prince on 11.11.14. +// +// + +#import + +@interface WaitForAnimationTests : KIFTestCase + +@end + +@implementation WaitForAnimationTests + +- (void)beforeEach { + [tester tapViewWithAccessibilityLabel:@"Tapping"]; + [tester tapViewWithAccessibilityLabel:@"Animations"]; +} + +- (void)afterEach { + [tester tapViewWithAccessibilityLabel:@"Back"]; + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testWaitForFinishingAnimation { + [tester waitForViewWithAccessibilityLabel:@"Label"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForTappableViewTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForTappableViewTests.m new file mode 100755 index 000000000..86a260db3 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForTappableViewTests.m @@ -0,0 +1,43 @@ +// +// WaitForTappableViewTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface WaitForTappableViewTests : KIFTestCase +@end + +@implementation WaitForTappableViewTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"Show/Hide"]; + [tester tapViewWithAccessibilityLabel:@"Cover/Uncover"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + + +- (void)testWaitingForTappableViewWithAccessibilityLabel +{ + [tester waitForTappableViewWithAccessibilityLabel:@"B"]; +} + +- (void)testWaitingForViewWithTraits +{ + [tester waitForTappableViewWithAccessibilityLabel:@"B" traits:UIAccessibilityTraitButton]; +} + +- (void)testWaitingForViewWithValue +{ + [tester waitForTappableViewWithAccessibilityLabel:@"B" value:@"BB" traits:UIAccessibilityTraitButton]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForViewTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForViewTests.m new file mode 100755 index 000000000..ea7120001 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WaitForViewTests.m @@ -0,0 +1,31 @@ +// +// WaitForViewTests.m +// Test Suite +// +// Created by Brian Nickel on 6/28/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface WaitForViewTests : KIFTestCase +@end + +@implementation WaitForViewTests + +- (void)testWaitingForViewWithAccessibilityLabel +{ + [tester waitForViewWithAccessibilityLabel:@"Test Suite"]; +} + +- (void)testWaitingForViewWithTraits +{ + [tester waitForViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitStaticText]; +} + +- (void)testWaitingForViewWithValue +{ + [tester waitForViewWithAccessibilityLabel:@"Switch 1" value:@"1" traits:UIAccessibilityTraitNone]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WebViewTests.m b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WebViewTests.m new file mode 100755 index 000000000..e2b4a7598 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/WebViewTests.m @@ -0,0 +1,43 @@ +// +// WebViewTests.m +// KIF +// +// Created by Joe Masilotti on 11/19/14. +// +// + +#import +#import +#import + +@interface WebViewTests : KIFTestCase +@end + +@implementation WebViewTests + +- (void)beforeEach +{ + [tester tapViewWithAccessibilityLabel:@"WebViews"]; +} + +- (void)afterEach +{ + [tester tapViewWithAccessibilityLabel:@"Test Suite" traits:UIAccessibilityTraitButton]; +} + +- (void)testTappingLinks { + [tester tapViewWithAccessibilityLabel:@"A link"]; + [tester waitForViewWithAccessibilityLabel:@"Page 2"]; +} + +- (void)testScrolling { + // Off screen, the web view will need to be scrolled down + [tester waitForViewWithAccessibilityLabel:@"Footer"]; +} + +- (void)testEnteringText { + [tester tapViewWithAccessibilityLabel:@"Input Label"]; + [tester enterTextIntoCurrentFirstResponder:@"Keyboard text"]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/en.lproj/InfoPlist.strings b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/en.lproj/InfoPlist.strings new file mode 100755 index 000000000..477b28ff8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF Tests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF XCTests-Prefix.gcda b/examples/InterstitialUnifiedDemand/KIF-master/KIF XCTests-Prefix.gcda new file mode 100755 index 0000000000000000000000000000000000000000..02c8fab5b4c01adee63cd6deeeca80280b2e0928 GIT binary patch literal 336 zcmYdHNlw=?GB9a6bMz1c0|O%$kN|;Affq&DfwXRPcxqBuW@>pzYH>-iLQ-m4eo?Ax zVsb_-0|O9&09X$rkm2-@6PupIw35^!s1^o@P6kFEpn4`Cez!WDpA$%<*;4|vEhMp^ zATuxBCo?a*7;F`g69QDq$PFZzf%xcZ<-;7<^#&&w<>%x8HGnjNoDZbHcCr8&cH&Bl waM "https://github.com/kif-framework/KIF.git", :tag => "v3.3.0" } + s.platform = :ios, '5.1' + s.frameworks = 'CoreGraphics', 'IOKit', 'XCTest' + s.default_subspec = 'Core' + s.requires_arc = true + s.prefix_header_contents = '#import ' + + s.subspec 'Core' do |core| + core.source_files = 'Classes', 'Additions' + core.public_header_files = 'Classes/**/*.h', 'Additions/**/*-KIFAdditions.h', 'Additions/UIView-Debugging.h' + core.xcconfig = { 'FRAMEWORK_SEARCH_PATHS' => '$(PLATFORM_DIR)/Developer/Library/Frameworks' } + core.requires_arc = true + end + + s.subspec 'IdentifierTests' do |kiaf| + kiaf.dependency 'KIF/Core' + kiaf.source_files = 'IdentifierTests' + kiaf.public_header_files = 'IdentifierTests/**/*.h' + kiaf.requires_arc = true + end +end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/project.pbxproj new file mode 100755 index 000000000..df430d46a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/project.pbxproj @@ -0,0 +1,1627 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0E27A9EE1B45B53D00A6DE6E /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9AD81F91AA180B900B369FD /* IOKit.framework */; }; + 0EAA1C131B4B371700FFB2FB /* IOHIDEvent+KIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EAA1C111B4B371700FFB2FB /* IOHIDEvent+KIF.h */; }; + 0EAA1C141B4B371700FFB2FB /* IOHIDEvent+KIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EAA1C121B4B371700FFB2FB /* IOHIDEvent+KIF.m */; }; + 0EAA1C171B4B372700FFB2FB /* IOHIDEvent+KIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EAA1C111B4B371700FFB2FB /* IOHIDEvent+KIF.h */; }; + 0EAA1C181B4B372700FFB2FB /* IOHIDEvent+KIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EAA1C121B4B371700FFB2FB /* IOHIDEvent+KIF.m */; }; + 2CDEE1CB181DBED200DF6E63 /* PickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CDEE1CA181DBED200DF6E63 /* PickerController.m */; }; + 2EE12710198991920031D347 /* MultiFingerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EE1270F198991920031D347 /* MultiFingerTests.m */; }; + 3812FB611A1212A700335733 /* AnimationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3812FB601A1212A700335733 /* AnimationViewController.m */; }; + 3812FB631A12188700335733 /* WaitForAnimationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3812FB621A12188700335733 /* WaitForAnimationTests.m */; }; + 3ADD25CC71BF27D675768787 /* UIView-Debugging.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ADD26484C6C438B71DC15C5 /* UIView-Debugging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A48107B19708CAB0003A32E /* ExistTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A48107A19708CAB0003A32E /* ExistTests.m */; }; + 4D2FD4EE1AF5936700E61192 /* UIView-Debugging.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ADD2160096BE41C780FBD95 /* UIView-Debugging.m */; }; + 5C877DD01B057E13006A3AC6 /* KIFUITestActor-IdentifierTests.h in Headers */ = {isa = PBXBuildFile; fileRef = EB1A44D31A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5C877DD11B0A8B8F006A3AC6 /* UIView-Debugging.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ADD26484C6C438B71DC15C5 /* UIView-Debugging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5C877DD21B0A8B93006A3AC6 /* UIView-Debugging.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ADD2160096BE41C780FBD95 /* UIView-Debugging.m */; }; + 84D293AD1A2C84F700C10944 /* SystemAlertViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D293AC1A2C84F700C10944 /* SystemAlertViewController.m */; }; + 84D293AF1A2C867300C10944 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D293AE1A2C867300C10944 /* CoreLocation.framework */; }; + 84D293B11A2C891700C10944 /* SystemAlertTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D293B01A2C891700C10944 /* SystemAlertTests.m */; }; + 84D293B81A2C8DF700C10944 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D293B71A2C8DF700C10944 /* AddressBookUI.framework */; }; + 84D293BB1A2CC30B00C10944 /* UIAutomationHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D293B91A2CC30B00C10944 /* UIAutomationHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D293BD1A2CC30B00C10944 /* UIAutomationHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D293BA1A2CC30B00C10944 /* UIAutomationHelper.m */; }; + 97E8A5CF1B0A62F700124E3B /* BackgroundViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E8A5CE1B0A62F700124E3B /* BackgroundViewController.m */; }; + 97E8A5D11B0A63D100124E3B /* BackgroundTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E8A5D01B0A63D100124E3B /* BackgroundTests.m */; }; + 9CC881A91AD4CE39002CD34C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB072B413971AEA008AF393 /* UIKit.framework */; }; + 9CC881AA1AD4CE45002CD34C /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9AD81F91AA180B900B369FD /* IOKit.framework */; }; + 9CC881AB1AD4CE47002CD34C /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EABD46AB1857A0EB00A5F081 /* XCTest.framework */; }; + 9CC881AC1AD4CE4B002CD34C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB0726B139719AC008AF393 /* Foundation.framework */; }; + 9CC881AD1AD4CE50002CD34C /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9CC881A21AD4CAAC002CD34C /* CoreFoundation.framework */; }; + 9CC967401AD4B1B600576D13 /* KIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC9673F1AD4B1B600576D13 /* KIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967561AD4B1F100576D13 /* LoadableCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 39160B1013D1E6BB00311E38 /* LoadableCategory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967571AD4B1F100576D13 /* CGGeometry-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729413971AB2008AF393 /* CGGeometry-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967591AD4B1F100576D13 /* NSFileManager-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CDFD8E84139728B4008D299F /* NSFileManager-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9675B1AD4B1F100576D13 /* UIAccessibilityElement-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729613971AB2008AF393 /* UIAccessibilityElement-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9675D1AD4B1F100576D13 /* UIApplication-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729813971AB2008AF393 /* UIApplication-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9675F1AD4B1F100576D13 /* UIScrollView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729A13971AB2008AF393 /* UIScrollView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967611AD4B1F100576D13 /* UITouch-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729C13971AB2008AF393 /* UITouch-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967631AD4B1F100576D13 /* UIView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB072A013971AB2008AF393 /* UIView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967651AD4B1F100576D13 /* UIWindow-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB072A213971AB2008AF393 /* UIWindow-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967671AD4B1F100576D13 /* UITableView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D927B9DD18F9E46400DAD036 /* UITableView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967691AD4B1F100576D13 /* NSBundle-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EBAE487A17A45A8E0005EE19 /* NSBundle-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9676B1AD4B1F100576D13 /* NSError-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EBAE487F17A460E50005EE19 /* NSError-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9676D1AD4B1F100576D13 /* XCTestCase-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EABD46751857A07600A5F081 /* XCTestCase-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9676F1AD4B1F100576D13 /* NSException-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EAC809681864F19C000E819F /* NSException-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967711AD4B1F100576D13 /* UIEvent+KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E977D1051AA4062B005645BF /* UIEvent+KIFAdditions.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9CC967731AD4B1FF00576D13 /* KIFSystemTestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4C3130167BA3AC00E31109 /* KIFSystemTestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967751AD4B1FF00576D13 /* KIFUITestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4C3132167BA3AC00E31109 /* KIFUITestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967771AD4B1FF00576D13 /* KIFUITestActor-ConditionalTests.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2526461981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9677A1AD4B20700576D13 /* KIFTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4C3127167BA37B00E31109 /* KIFTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9677C1AD4B20700576D13 /* KIFTestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4C3123167BA37B00E31109 /* KIFTestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC9677F1AD4B20700576D13 /* KIFTypist.h in Headers */ = {isa = PBXBuildFile; fileRef = C194255615D83DE9004FC314 /* KIFTypist.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967811AD4B20700576D13 /* KIFTestStepValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = EBAE488517A4E5C30005EE19 /* KIFTestStepValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CC967841AD4B20700576D13 /* UIAutomationHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D293B91A2CC30B00C10944 /* UIAutomationHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9CC967BE1AD4B55E00576D13 /* KIF-XCTestPrefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = EABD46D31857BE8600A5F081 /* KIF-XCTestPrefix.pch */; }; + 9CC967BF1AD4B58C00576D13 /* CGGeometry-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729513971AB2008AF393 /* CGGeometry-KIFAdditions.m */; }; + 9CC967C01AD4B58C00576D13 /* NSFileManager-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CDFD8E85139728B4008D299F /* NSFileManager-KIFAdditions.m */; }; + 9CC967C11AD4B58C00576D13 /* UIAccessibilityElement-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729713971AB2008AF393 /* UIAccessibilityElement-KIFAdditions.m */; }; + 9CC967C21AD4B58C00576D13 /* UIApplication-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729913971AB2008AF393 /* UIApplication-KIFAdditions.m */; }; + 9CC967C31AD4B58C00576D13 /* UIScrollView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729B13971AB2008AF393 /* UIScrollView-KIFAdditions.m */; }; + 9CC967C41AD4B58C00576D13 /* UITouch-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729D13971AB2008AF393 /* UITouch-KIFAdditions.m */; }; + 9CC967C51AD4B58C00576D13 /* UIView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB072A113971AB2008AF393 /* UIView-KIFAdditions.m */; }; + 9CC967C61AD4B58C00576D13 /* UIWindow-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB072A313971AB2008AF393 /* UIWindow-KIFAdditions.m */; }; + 9CC967C71AD4B58C00576D13 /* UITableView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D927B9DE18F9E46400DAD036 /* UITableView-KIFAdditions.m */; }; + 9CC967C81AD4B58C00576D13 /* NSBundle-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EBAE487B17A45A8E0005EE19 /* NSBundle-KIFAdditions.m */; }; + 9CC967C91AD4B58C00576D13 /* NSError-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EBAE488017A460E50005EE19 /* NSError-KIFAdditions.m */; }; + 9CC967CA1AD4B58C00576D13 /* XCTestCase-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EABD46761857A07600A5F081 /* XCTestCase-KIFAdditions.m */; }; + 9CC967CB1AD4B58C00576D13 /* NSException-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EAC809691864F19C000E819F /* NSException-KIFAdditions.m */; }; + 9CC967CC1AD4B58C00576D13 /* UIEvent+KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E977D1061AA4062B005645BF /* UIEvent+KIFAdditions.m */; }; + 9CC967CD1AD4B59A00576D13 /* KIFSystemTestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3131167BA3AC00E31109 /* KIFSystemTestActor.m */; }; + 9CC967CE1AD4B59A00576D13 /* KIFUITestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3133167BA3AC00E31109 /* KIFUITestActor.m */; }; + 9CC967CF1AD4B59A00576D13 /* KIFUITestActor-ConditionalTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB2526471981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.m */; }; + 9CC967D01AD4B5B900576D13 /* KIFTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3128167BA37B00E31109 /* KIFTestCase.m */; }; + 9CC967D11AD4B5B900576D13 /* KIFTestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3124167BA37B00E31109 /* KIFTestActor.m */; }; + 9CC967D21AD4B5B900576D13 /* KIFTypist.m in Sources */ = {isa = PBXBuildFile; fileRef = C194255715D83DE9004FC314 /* KIFTypist.m */; }; + 9CC967D31AD4B5B900576D13 /* KIFTestStepValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = EBAE488617A4E5C30005EE19 /* KIFTestStepValidation.m */; }; + 9CC967D41AD4B5B900576D13 /* UIAutomationHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D293BA1A2CC30B00C10944 /* UIAutomationHelper.m */; }; + 9CC967D51AD4B5B900576D13 /* KIFUITestActor-IdentifierTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1A44D41A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.m */; }; + AE62FCD01A1D20E5002B10DA /* WebViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = AE62FCCF1A1D20E5002B10DA /* WebViewTests.m */; }; + AE62FCD61A1D2447002B10DA /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AE62FCD51A1D2447002B10DA /* WebViewController.m */; }; + AE62FCD81A1D2667002B10DA /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = AE62FCD71A1D2667002B10DA /* index.html */; }; + AE62FCDA1A1D26BB002B10DA /* page2.html in Resources */ = {isa = PBXBuildFile; fileRef = AE62FCD91A1D26BB002B10DA /* page2.html */; }; + BD6A1CA11BCE8DD000EF07D2 /* KIFAccessibilityEnabler.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6A1C9F1BCE8DD000EF07D2 /* KIFAccessibilityEnabler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD6A1CA21BCE8DD000EF07D2 /* KIFAccessibilityEnabler.h in Headers */ = {isa = PBXBuildFile; fileRef = BD6A1C9F1BCE8DD000EF07D2 /* KIFAccessibilityEnabler.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BD6A1CA31BCE8DD000EF07D2 /* KIFAccessibilityEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6A1CA01BCE8DD000EF07D2 /* KIFAccessibilityEnabler.m */; settings = {ASSET_TAGS = (); }; }; + BD6A1CA41BCE8DD000EF07D2 /* KIFAccessibilityEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6A1CA01BCE8DD000EF07D2 /* KIFAccessibilityEnabler.m */; settings = {ASSET_TAGS = (); }; }; + D927B9DC18F9DF2D00DAD036 /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D927B9DB18F9DF2D00DAD036 /* TableViewController.m */; }; + D927B9DF18F9E46400DAD036 /* UITableView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D927B9DD18F9E46400DAD036 /* UITableView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D927B9E018F9E46400DAD036 /* UITableView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D927B9DE18F9E46400DAD036 /* UITableView-KIFAdditions.m */; }; + D9EA274118F05A6000D87E57 /* ScrollViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EA274018F05A6000D87E57 /* ScrollViewTests.m */; }; + D9EA274318F05A6700D87E57 /* ScrollViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EA274218F05A6700D87E57 /* ScrollViewController.m */; }; + E977D1071AA4062B005645BF /* UIEvent+KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E977D1051AA4062B005645BF /* UIEvent+KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E977D1081AA4062B005645BF /* UIEvent+KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E977D1061AA4062B005645BF /* UIEvent+KIFAdditions.m */; }; + E9F646F81AA3BABA00C37EA3 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9AD81F91AA180B900B369FD /* IOKit.framework */; }; + EA0F254A1829839E006FF825 /* CollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0F25491829839E006FF825 /* CollectionViewController.m */; }; + EA4655881905B92500B2C60E /* PickerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CED883D181F5EE1005ABD20 /* PickerTests.m */; }; + EA47DA2818EDFD6F0034D2F5 /* CollectionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0F2546182979BE006FF825 /* CollectionViewTests.m */; }; + EABD467B1857A0C700A5F081 /* CGGeometry-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729513971AB2008AF393 /* CGGeometry-KIFAdditions.m */; }; + EABD467C1857A0C700A5F081 /* UIAccessibilityElement-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729713971AB2008AF393 /* UIAccessibilityElement-KIFAdditions.m */; }; + EABD467D1857A0C700A5F081 /* UIApplication-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729913971AB2008AF393 /* UIApplication-KIFAdditions.m */; }; + EABD467E1857A0C700A5F081 /* UIScrollView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729B13971AB2008AF393 /* UIScrollView-KIFAdditions.m */; }; + EABD467F1857A0C700A5F081 /* UITouch-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB0729D13971AB2008AF393 /* UITouch-KIFAdditions.m */; }; + EABD46801857A0C700A5F081 /* UIView-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB072A113971AB2008AF393 /* UIView-KIFAdditions.m */; }; + EABD46811857A0C700A5F081 /* UIWindow-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB072A313971AB2008AF393 /* UIWindow-KIFAdditions.m */; }; + EABD46821857A0C700A5F081 /* NSFileManager-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CDFD8E85139728B4008D299F /* NSFileManager-KIFAdditions.m */; }; + EABD46831857A0C700A5F081 /* KIFTypist.m in Sources */ = {isa = PBXBuildFile; fileRef = C194255715D83DE9004FC314 /* KIFTypist.m */; }; + EABD46841857A0C700A5F081 /* KIFTestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3124167BA37B00E31109 /* KIFTestActor.m */; }; + EABD46851857A0C700A5F081 /* KIFTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3128167BA37B00E31109 /* KIFTestCase.m */; }; + EABD46861857A0C700A5F081 /* XCTestCase-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EABD46761857A07600A5F081 /* XCTestCase-KIFAdditions.m */; }; + EABD46871857A0C700A5F081 /* KIFSystemTestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3131167BA3AC00E31109 /* KIFSystemTestActor.m */; }; + EABD46881857A0C700A5F081 /* KIFUITestActor.m in Sources */ = {isa = PBXBuildFile; fileRef = EB4C3133167BA3AC00E31109 /* KIFUITestActor.m */; }; + EABD46891857A0C700A5F081 /* NSBundle-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EBAE487B17A45A8E0005EE19 /* NSBundle-KIFAdditions.m */; }; + EABD468A1857A0C700A5F081 /* NSError-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EBAE488017A460E50005EE19 /* NSError-KIFAdditions.m */; }; + EABD468B1857A0C700A5F081 /* KIFTestStepValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = EBAE488617A4E5C30005EE19 /* KIFTestStepValidation.m */; }; + EABD468E1857A0C700A5F081 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB0726B139719AC008AF393 /* Foundation.framework */; }; + EABD468F1857A0C700A5F081 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB072B413971AEA008AF393 /* UIKit.framework */; }; + EABD46911857A0C700A5F081 /* KIF.h in Headers */ = {isa = PBXBuildFile; fileRef = A88930111685098E00FC7C63 /* KIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46921857A0C700A5F081 /* CGGeometry-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729413971AB2008AF393 /* CGGeometry-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46931857A0C700A5F081 /* UIAccessibilityElement-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729613971AB2008AF393 /* UIAccessibilityElement-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46941857A0C700A5F081 /* UIApplication-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729813971AB2008AF393 /* UIApplication-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46951857A0C700A5F081 /* UIScrollView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729A13971AB2008AF393 /* UIScrollView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46961857A0C700A5F081 /* XCTestCase-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EABD46751857A07600A5F081 /* XCTestCase-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46971857A0C700A5F081 /* UITouch-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB0729C13971AB2008AF393 /* UITouch-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46981857A0C700A5F081 /* UIView-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB072A013971AB2008AF393 /* UIView-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46991857A0C700A5F081 /* UIWindow-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB072A213971AB2008AF393 /* UIWindow-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD469A1857A0C700A5F081 /* NSFileManager-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CDFD8E84139728B4008D299F /* NSFileManager-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD469B1857A0C700A5F081 /* LoadableCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 39160B1013D1E6BB00311E38 /* LoadableCategory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD469C1857A0C700A5F081 /* KIFTypist.h in Headers */ = {isa = PBXBuildFile; fileRef = C194255615D83DE9004FC314 /* KIFTypist.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD469D1857A0C700A5F081 /* KIFTestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4C3123167BA37B00E31109 /* KIFTestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD469E1857A0C700A5F081 /* KIFTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4C3127167BA37B00E31109 /* KIFTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD469F1857A0C700A5F081 /* KIFSystemTestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4C3130167BA3AC00E31109 /* KIFSystemTestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46A01857A0C700A5F081 /* KIFUITestActor.h in Headers */ = {isa = PBXBuildFile; fileRef = EB4C3132167BA3AC00E31109 /* KIFUITestActor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46A11857A0C700A5F081 /* NSBundle-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EBAE487A17A45A8E0005EE19 /* NSBundle-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46A21857A0C700A5F081 /* NSError-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EBAE487F17A460E50005EE19 /* NSError-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46A31857A0C700A5F081 /* KIFTestStepValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = EBAE488517A4E5C30005EE19 /* KIFTestStepValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABD46B11857A0F300A5F081 /* SearchFieldTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB09000F17E3696A00AA15B1 /* SearchFieldTests.m */; }; + EABD46B21857A0F300A5F081 /* CascadingFailureTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB22B5AF17AF52640090B848 /* CascadingFailureTests.m */; }; + EABD46B31857A0F300A5F081 /* CompositionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB02523D17AA109400A7D13A /* CompositionTests.m */; }; + EABD46B41857A0F300A5F081 /* LongPressTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED07177F90BA005A041A /* LongPressTests.m */; }; + EABD46B51857A0F300A5F081 /* ModalViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED08177F90BA005A041A /* ModalViewTests.m */; }; + EABD46B61857A0F300A5F081 /* SpecificControlTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED09177F90BA005A041A /* SpecificControlTests.m */; }; + EABD46B71857A0F300A5F081 /* SystemTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED0A177F90BA005A041A /* SystemTests.m */; }; + EABD46B81857A0F300A5F081 /* TappingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED0B177F90BA005A041A /* TappingTests.m */; }; + EABD46B91857A0F300A5F081 /* TypingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED0C177F90BA005A041A /* TypingTests.m */; }; + EABD46BA1857A0F300A5F081 /* WaitForAbscenceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED0D177F90BA005A041A /* WaitForAbscenceTests.m */; }; + EABD46BB1857A0F300A5F081 /* WaitForTappableViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED0E177F90BA005A041A /* WaitForTappableViewTests.m */; }; + EABD46BC1857A0F300A5F081 /* WaitForViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED0F177F90BA005A041A /* WaitForViewTests.m */; }; + EABD46BD1857A0F300A5F081 /* LandscapeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB9FC00417E144B700138266 /* LandscapeTests.m */; }; + EABD46BE1857A0F300A5F081 /* TableViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB3F654417AA0B8400469D18 /* TableViewTests.m */; }; + EABD46BF1857A0F300A5F081 /* GestureTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ED19177F90C2005A041A /* GestureTests.m */; }; + EABD46C31857A0F300A5F081 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB072B413971AEA008AF393 /* UIKit.framework */; }; + EABD46C41857A0F300A5F081 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB0726B139719AC008AF393 /* Foundation.framework */; }; + EABD46C51857A0F300A5F081 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB60ECC4177F8C83005A041A /* CoreGraphics.framework */; }; + EABD46C71857A0F300A5F081 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EB60ECF2177F8DB3005A041A /* InfoPlist.strings */; }; + EABD46CF1857A15400A5F081 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EABD46AB1857A0EB00A5F081 /* XCTest.framework */; }; + EABD46D21857A24E00A5F081 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EABD46AB1857A0EB00A5F081 /* XCTest.framework */; }; + EABD46D61858C8ED00A5F081 /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EABD46AA1857A0C700A5F081 /* libKIF.a */; }; + EAC8096A1864F19C000E819F /* NSException-KIFAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EAC809681864F19C000E819F /* NSException-KIFAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EAC8096B1864F19C000E819F /* NSException-KIFAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = EAC809691864F19C000E819F /* NSException-KIFAdditions.m */; }; + EB1A44D51A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.h in Headers */ = {isa = PBXBuildFile; fileRef = EB1A44D31A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB1A44D61A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1A44D41A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.m */; }; + EB1A44DA1A0C33AD004A3F61 /* AccessibilityIdentifierTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB1A44D91A0C33AD004A3F61 /* AccessibilityIdentifierTests.m */; }; + EB2526481981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.h in Headers */ = {isa = PBXBuildFile; fileRef = EB2526461981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB2526491981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EB2526471981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.m */; }; + EB60ECC2177F8C83005A041A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB072B413971AEA008AF393 /* UIKit.framework */; }; + EB60ECC3177F8C83005A041A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAB0726B139719AC008AF393 /* Foundation.framework */; }; + EB60ECC5177F8C83005A041A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB60ECC4177F8C83005A041A /* CoreGraphics.framework */; }; + EB60ECCB177F8C84005A041A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EB60ECC9177F8C83005A041A /* InfoPlist.strings */; }; + EB60ECCD177F8C84005A041A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ECCC177F8C84005A041A /* main.m */; }; + EB60ECD3177F8C84005A041A /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = EB60ECD2177F8C84005A041A /* Default.png */; }; + EB60ECD5177F8C84005A041A /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB60ECD4177F8C84005A041A /* Default@2x.png */; }; + EB60ECD7177F8C84005A041A /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB60ECD6177F8C84005A041A /* Default-568h@2x.png */; }; + EB60ED00177F9032005A041A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ECFC177F9031005A041A /* AppDelegate.m */; }; + EB60ED01177F9032005A041A /* ShowHideViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ECFD177F9031005A041A /* ShowHideViewController.m */; }; + EB60ED02177F9032005A041A /* TapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ECFE177F9032005A041A /* TapViewController.m */; }; + EB60ED03177F9032005A041A /* TestSuiteViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EB60ECFF177F9032005A041A /* TestSuiteViewController.m */; }; + EB60ED06177F9041005A041A /* MainStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EB60ED04177F9041005A041A /* MainStoryboard.storyboard */; }; + EB9FB42717A5BACB00DDF160 /* GestureViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EB9FB42617A5BACB00DDF160 /* GestureViewController.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + EABD46AF1857A0F300A5F081 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AAB0725F139719AC008AF393 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EB60ECC0177F8C83005A041A; + remoteInfo = "Test Host"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0EAA1C111B4B371700FFB2FB /* IOHIDEvent+KIF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IOHIDEvent+KIF.h"; sourceTree = ""; }; + 0EAA1C121B4B371700FFB2FB /* IOHIDEvent+KIF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IOHIDEvent+KIF.m"; sourceTree = ""; }; + 2CDEE1CA181DBED200DF6E63 /* PickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PickerController.m; sourceTree = ""; }; + 2CED883D181F5EE1005ABD20 /* PickerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PickerTests.m; sourceTree = ""; }; + 2EE1270F198991920031D347 /* MultiFingerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultiFingerTests.m; sourceTree = ""; }; + 3812FB601A1212A700335733 /* AnimationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnimationViewController.m; sourceTree = ""; }; + 3812FB621A12188700335733 /* WaitForAnimationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WaitForAnimationTests.m; sourceTree = ""; }; + 39160B1013D1E6BB00311E38 /* LoadableCategory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoadableCategory.h; sourceTree = ""; }; + 3ADD2160096BE41C780FBD95 /* UIView-Debugging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView-Debugging.m"; sourceTree = ""; }; + 3ADD26484C6C438B71DC15C5 /* UIView-Debugging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView-Debugging.h"; sourceTree = ""; }; + 4A48107A19708CAB0003A32E /* ExistTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExistTests.m; sourceTree = ""; }; + 84D293AC1A2C84F700C10944 /* SystemAlertViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SystemAlertViewController.m; sourceTree = ""; }; + 84D293AE1A2C867300C10944 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; + 84D293B01A2C891700C10944 /* SystemAlertTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SystemAlertTests.m; sourceTree = ""; }; + 84D293B71A2C8DF700C10944 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; }; + 84D293B91A2CC30B00C10944 /* UIAutomationHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIAutomationHelper.h; sourceTree = ""; }; + 84D293BA1A2CC30B00C10944 /* UIAutomationHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAutomationHelper.m; sourceTree = ""; }; + 97E8A5CE1B0A62F700124E3B /* BackgroundViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BackgroundViewController.m; sourceTree = ""; }; + 97E8A5D01B0A63D100124E3B /* BackgroundTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BackgroundTests.m; sourceTree = ""; }; + 9CC881A21AD4CAAC002CD34C /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; + 9CC9673B1AD4B1B600576D13 /* KIF.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = KIF.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9CC9673E1AD4B1B600576D13 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9CC9673F1AD4B1B600576D13 /* KIF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KIF.h; sourceTree = ""; }; + A88930111685098E00FC7C63 /* KIF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = KIF.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + AAB0726B139719AC008AF393 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + AAB0728113971A63008AF393 /* KIF-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "KIF-Prefix.pch"; path = "Classes/KIF-Prefix.pch"; sourceTree = SOURCE_ROOT; }; + AAB0728513971A98008AF393 /* KIF-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KIF-Prefix.pch"; sourceTree = ""; }; + AAB0729413971AB2008AF393 /* CGGeometry-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CGGeometry-KIFAdditions.h"; sourceTree = ""; }; + AAB0729513971AB2008AF393 /* CGGeometry-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CGGeometry-KIFAdditions.m"; sourceTree = ""; }; + AAB0729613971AB2008AF393 /* UIAccessibilityElement-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIAccessibilityElement-KIFAdditions.h"; sourceTree = ""; }; + AAB0729713971AB2008AF393 /* UIAccessibilityElement-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIAccessibilityElement-KIFAdditions.m"; sourceTree = ""; }; + AAB0729813971AB2008AF393 /* UIApplication-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIApplication-KIFAdditions.h"; sourceTree = ""; }; + AAB0729913971AB2008AF393 /* UIApplication-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIApplication-KIFAdditions.m"; sourceTree = ""; }; + AAB0729A13971AB2008AF393 /* UIScrollView-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView-KIFAdditions.h"; sourceTree = ""; }; + AAB0729B13971AB2008AF393 /* UIScrollView-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView-KIFAdditions.m"; sourceTree = ""; }; + AAB0729C13971AB2008AF393 /* UITouch-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITouch-KIFAdditions.h"; sourceTree = ""; }; + AAB0729D13971AB2008AF393 /* UITouch-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITouch-KIFAdditions.m"; sourceTree = ""; }; + AAB072A013971AB2008AF393 /* UIView-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView-KIFAdditions.h"; sourceTree = ""; }; + AAB072A113971AB2008AF393 /* UIView-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView-KIFAdditions.m"; sourceTree = ""; }; + AAB072A213971AB2008AF393 /* UIWindow-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIWindow-KIFAdditions.h"; sourceTree = ""; }; + AAB072A313971AB2008AF393 /* UIWindow-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWindow-KIFAdditions.m"; sourceTree = ""; }; + AAB072B413971AEA008AF393 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + AE62FCCF1A1D20E5002B10DA /* WebViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewTests.m; sourceTree = ""; }; + AE62FCD51A1D2447002B10DA /* WebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewController.m; sourceTree = ""; }; + AE62FCD71A1D2667002B10DA /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + AE62FCD91A1D26BB002B10DA /* page2.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = page2.html; sourceTree = ""; }; + BD6A1C9F1BCE8DD000EF07D2 /* KIFAccessibilityEnabler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KIFAccessibilityEnabler.h; sourceTree = ""; }; + BD6A1CA01BCE8DD000EF07D2 /* KIFAccessibilityEnabler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KIFAccessibilityEnabler.m; sourceTree = ""; }; + C194255615D83DE9004FC314 /* KIFTypist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KIFTypist.h; sourceTree = ""; }; + C194255715D83DE9004FC314 /* KIFTypist.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KIFTypist.m; sourceTree = ""; }; + CDFD8E84139728B4008D299F /* NSFileManager-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSFileManager-KIFAdditions.h"; sourceTree = ""; }; + CDFD8E85139728B4008D299F /* NSFileManager-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSFileManager-KIFAdditions.m"; sourceTree = ""; }; + D927B9DB18F9DF2D00DAD036 /* TableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewController.m; sourceTree = ""; }; + D927B9DD18F9E46400DAD036 /* UITableView-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableView-KIFAdditions.h"; sourceTree = ""; }; + D927B9DE18F9E46400DAD036 /* UITableView-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITableView-KIFAdditions.m"; sourceTree = ""; }; + D9EA274018F05A6000D87E57 /* ScrollViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScrollViewTests.m; sourceTree = ""; }; + D9EA274218F05A6700D87E57 /* ScrollViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScrollViewController.m; sourceTree = ""; }; + E977D1051AA4062B005645BF /* UIEvent+KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIEvent+KIFAdditions.h"; sourceTree = ""; }; + E977D1061AA4062B005645BF /* UIEvent+KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIEvent+KIFAdditions.m"; sourceTree = ""; }; + E9AD81F91AA180B900B369FD /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/IOKit.framework; sourceTree = DEVELOPER_DIR; }; + EA0F2546182979BE006FF825 /* CollectionViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionViewTests.m; sourceTree = ""; }; + EA0F25491829839E006FF825 /* CollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionViewController.m; sourceTree = ""; }; + EABD46751857A07600A5F081 /* XCTestCase-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "XCTestCase-KIFAdditions.h"; sourceTree = ""; }; + EABD46761857A07600A5F081 /* XCTestCase-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "XCTestCase-KIFAdditions.m"; sourceTree = ""; }; + EABD46AA1857A0C700A5F081 /* libKIF.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libKIF.a; sourceTree = BUILT_PRODUCTS_DIR; }; + EABD46AB1857A0EB00A5F081 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + EABD46CD1857A0F300A5F081 /* KIF Tests - XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "KIF Tests - XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + EABD46D01857A18900A5F081 /* KIF XCTests-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KIF XCTests-Prefix.pch"; sourceTree = ""; }; + EABD46D31857BE8600A5F081 /* KIF-XCTestPrefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KIF-XCTestPrefix.pch"; sourceTree = ""; }; + EAC809681864F19C000E819F /* NSException-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSException-KIFAdditions.h"; sourceTree = ""; }; + EAC809691864F19C000E819F /* NSException-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSException-KIFAdditions.m"; sourceTree = ""; }; + EB02523D17AA109400A7D13A /* CompositionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CompositionTests.m; sourceTree = ""; }; + EB09000F17E3696A00AA15B1 /* SearchFieldTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchFieldTests.m; sourceTree = ""; }; + EB1A44D31A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "KIFUITestActor-IdentifierTests.h"; path = "IdentifierTests/KIFUITestActor-IdentifierTests.h"; sourceTree = ""; }; + EB1A44D41A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "KIFUITestActor-IdentifierTests.m"; path = "IdentifierTests/KIFUITestActor-IdentifierTests.m"; sourceTree = ""; }; + EB1A44D91A0C33AD004A3F61 /* AccessibilityIdentifierTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AccessibilityIdentifierTests.m; sourceTree = ""; }; + EB22B5AF17AF52640090B848 /* CascadingFailureTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CascadingFailureTests.m; sourceTree = ""; }; + EB2526461981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KIFUITestActor-ConditionalTests.h"; sourceTree = ""; }; + EB2526471981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KIFUITestActor-ConditionalTests.m"; sourceTree = ""; }; + EB3F654417AA0B8400469D18 /* TableViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewTests.m; sourceTree = ""; }; + EB4C3123167BA37B00E31109 /* KIFTestActor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KIFTestActor.h; sourceTree = ""; }; + EB4C3124167BA37B00E31109 /* KIFTestActor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = KIFTestActor.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + EB4C3127167BA37B00E31109 /* KIFTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = KIFTestCase.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + EB4C3128167BA37B00E31109 /* KIFTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = KIFTestCase.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + EB4C3130167BA3AC00E31109 /* KIFSystemTestActor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KIFSystemTestActor.h; sourceTree = ""; }; + EB4C3131167BA3AC00E31109 /* KIFSystemTestActor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KIFSystemTestActor.m; sourceTree = ""; }; + EB4C3132167BA3AC00E31109 /* KIFUITestActor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KIFUITestActor.h; sourceTree = ""; }; + EB4C3133167BA3AC00E31109 /* KIFUITestActor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KIFUITestActor.m; sourceTree = ""; }; + EB4C3138167BA3D200E31109 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + EB60ECC1177F8C83005A041A /* Test Host.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Test Host.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + EB60ECC4177F8C83005A041A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + EB60ECC8177F8C83005A041A /* Test Host-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Test Host-Info.plist"; sourceTree = ""; }; + EB60ECCA177F8C83005A041A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + EB60ECCC177F8C84005A041A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + EB60ECCE177F8C84005A041A /* Test Host-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Test Host-Prefix.pch"; sourceTree = ""; }; + EB60ECD2177F8C84005A041A /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + EB60ECD4177F8C84005A041A /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + EB60ECD6177F8C84005A041A /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + EB60ECF1177F8DB3005A041A /* KIF Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "KIF Tests-Info.plist"; sourceTree = ""; }; + EB60ECF3177F8DB3005A041A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + EB60ECF8177F8DB3005A041A /* KIF Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "KIF Tests-Prefix.pch"; sourceTree = ""; }; + EB60ECFC177F9031005A041A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + EB60ECFD177F9031005A041A /* ShowHideViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShowHideViewController.m; sourceTree = ""; }; + EB60ECFE177F9032005A041A /* TapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TapViewController.m; sourceTree = ""; }; + EB60ECFF177F9032005A041A /* TestSuiteViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestSuiteViewController.m; sourceTree = ""; }; + EB60ED05177F9041005A041A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard.storyboard; sourceTree = ""; }; + EB60ED07177F90BA005A041A /* LongPressTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LongPressTests.m; sourceTree = ""; }; + EB60ED08177F90BA005A041A /* ModalViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModalViewTests.m; sourceTree = ""; }; + EB60ED09177F90BA005A041A /* SpecificControlTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpecificControlTests.m; sourceTree = ""; }; + EB60ED0A177F90BA005A041A /* SystemTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = SystemTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + EB60ED0B177F90BA005A041A /* TappingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TappingTests.m; sourceTree = ""; }; + EB60ED0C177F90BA005A041A /* TypingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TypingTests.m; sourceTree = ""; }; + EB60ED0D177F90BA005A041A /* WaitForAbscenceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WaitForAbscenceTests.m; sourceTree = ""; }; + EB60ED0E177F90BA005A041A /* WaitForTappableViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WaitForTappableViewTests.m; sourceTree = ""; }; + EB60ED0F177F90BA005A041A /* WaitForViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WaitForViewTests.m; sourceTree = ""; }; + EB60ED19177F90C2005A041A /* GestureTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GestureTests.m; sourceTree = ""; }; + EB9FB42617A5BACB00DDF160 /* GestureViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GestureViewController.m; sourceTree = ""; }; + EB9FC00417E144B700138266 /* LandscapeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LandscapeTests.m; sourceTree = ""; }; + EBAE487A17A45A8E0005EE19 /* NSBundle-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle-KIFAdditions.h"; sourceTree = ""; }; + EBAE487B17A45A8E0005EE19 /* NSBundle-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle-KIFAdditions.m"; sourceTree = ""; }; + EBAE487F17A460E50005EE19 /* NSError-KIFAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError-KIFAdditions.h"; sourceTree = ""; }; + EBAE488017A460E50005EE19 /* NSError-KIFAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError-KIFAdditions.m"; sourceTree = ""; }; + EBAE488517A4E5C30005EE19 /* KIFTestStepValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = KIFTestStepValidation.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + EBAE488617A4E5C30005EE19 /* KIFTestStepValidation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KIFTestStepValidation.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9CC967371AD4B1B600576D13 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9CC881A91AD4CE39002CD34C /* UIKit.framework in Frameworks */, + 9CC881AC1AD4CE4B002CD34C /* Foundation.framework in Frameworks */, + 9CC881AA1AD4CE45002CD34C /* IOKit.framework in Frameworks */, + 9CC881AD1AD4CE50002CD34C /* CoreFoundation.framework in Frameworks */, + 9CC881AB1AD4CE47002CD34C /* XCTest.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EABD468C1857A0C700A5F081 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EABD46D21857A24E00A5F081 /* XCTest.framework in Frameworks */, + EABD468E1857A0C700A5F081 /* Foundation.framework in Frameworks */, + EABD468F1857A0C700A5F081 /* UIKit.framework in Frameworks */, + 0E27A9EE1B45B53D00A6DE6E /* IOKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EABD46C01857A0F300A5F081 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EABD46D61858C8ED00A5F081 /* libKIF.a in Frameworks */, + EABD46CF1857A15400A5F081 /* XCTest.framework in Frameworks */, + EABD46C31857A0F300A5F081 /* UIKit.framework in Frameworks */, + EABD46C41857A0F300A5F081 /* Foundation.framework in Frameworks */, + EABD46C51857A0F300A5F081 /* CoreGraphics.framework in Frameworks */, + E9F646F81AA3BABA00C37EA3 /* IOKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB60ECBE177F8C83005A041A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EB60ECC2177F8C83005A041A /* UIKit.framework in Frameworks */, + EB60ECC3177F8C83005A041A /* Foundation.framework in Frameworks */, + EB60ECC5177F8C83005A041A /* CoreGraphics.framework in Frameworks */, + 84D293AF1A2C867300C10944 /* CoreLocation.framework in Frameworks */, + 84D293B81A2C8DF700C10944 /* AddressBookUI.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9CC9673C1AD4B1B600576D13 /* KIF Framework */ = { + isa = PBXGroup; + children = ( + 9CC9673F1AD4B1B600576D13 /* KIF.h */, + 9CC9673D1AD4B1B600576D13 /* Supporting Files */, + ); + name = "KIF Framework"; + path = KIFFramework; + sourceTree = ""; + }; + 9CC9673D1AD4B1B600576D13 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 9CC9673E1AD4B1B600576D13 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + AAB0725D139719AC008AF393 = { + isa = PBXGroup; + children = ( + EB60ECBC177F8C51005A041A /* KIF */, + EB60ECC6177F8C83005A041A /* Test Host */, + EB60ECEF177F8DB3005A041A /* KIF Tests */, + 9CC9673C1AD4B1B600576D13 /* KIF Framework */, + AAB0726A139719AC008AF393 /* Frameworks */, + AAB07269139719AC008AF393 /* Products */, + ); + sourceTree = ""; + }; + AAB07269139719AC008AF393 /* Products */ = { + isa = PBXGroup; + children = ( + EB60ECC1177F8C83005A041A /* Test Host.app */, + EABD46AA1857A0C700A5F081 /* libKIF.a */, + EABD46CD1857A0F300A5F081 /* KIF Tests - XCTest.xctest */, + 9CC9673B1AD4B1B600576D13 /* KIF.framework */, + ); + name = Products; + sourceTree = ""; + }; + AAB0726A139719AC008AF393 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9CC881A21AD4CAAC002CD34C /* CoreFoundation.framework */, + E9AD81F91AA180B900B369FD /* IOKit.framework */, + 84D293B71A2C8DF700C10944 /* AddressBookUI.framework */, + 84D293AE1A2C867300C10944 /* CoreLocation.framework */, + EABD46AB1857A0EB00A5F081 /* XCTest.framework */, + EB4C3138167BA3D200E31109 /* SenTestingKit.framework */, + AAB072B413971AEA008AF393 /* UIKit.framework */, + AAB0726B139719AC008AF393 /* Foundation.framework */, + EB60ECC4177F8C83005A041A /* CoreGraphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + AAB0726E139719AC008AF393 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + AAB0728113971A63008AF393 /* KIF-Prefix.pch */, + ); + name = "Supporting Files"; + path = KIF; + sourceTree = ""; + }; + AAB0728413971A98008AF393 /* Classes */ = { + isa = PBXGroup; + children = ( + EB4C312F167BA39200E31109 /* Actors */, + A88930111685098E00FC7C63 /* KIF.h */, + EB4C3127167BA37B00E31109 /* KIFTestCase.h */, + EB4C3128167BA37B00E31109 /* KIFTestCase.m */, + EB4C3123167BA37B00E31109 /* KIFTestActor.h */, + EB4C3124167BA37B00E31109 /* KIFTestActor.m */, + AAB0728513971A98008AF393 /* KIF-Prefix.pch */, + C194255615D83DE9004FC314 /* KIFTypist.h */, + C194255715D83DE9004FC314 /* KIFTypist.m */, + EBAE488517A4E5C30005EE19 /* KIFTestStepValidation.h */, + EBAE488617A4E5C30005EE19 /* KIFTestStepValidation.m */, + EABD46D31857BE8600A5F081 /* KIF-XCTestPrefix.pch */, + 84D293B91A2CC30B00C10944 /* UIAutomationHelper.h */, + 84D293BA1A2CC30B00C10944 /* UIAutomationHelper.m */, + BD6A1C9F1BCE8DD000EF07D2 /* KIFAccessibilityEnabler.h */, + BD6A1CA01BCE8DD000EF07D2 /* KIFAccessibilityEnabler.m */, + 0EAA1C111B4B371700FFB2FB /* IOHIDEvent+KIF.h */, + 0EAA1C121B4B371700FFB2FB /* IOHIDEvent+KIF.m */, + ); + path = Classes; + sourceTree = ""; + }; + AAB0729313971AB2008AF393 /* Additions */ = { + isa = PBXGroup; + children = ( + 39160B1013D1E6BB00311E38 /* LoadableCategory.h */, + AAB0729413971AB2008AF393 /* CGGeometry-KIFAdditions.h */, + AAB0729513971AB2008AF393 /* CGGeometry-KIFAdditions.m */, + CDFD8E84139728B4008D299F /* NSFileManager-KIFAdditions.h */, + CDFD8E85139728B4008D299F /* NSFileManager-KIFAdditions.m */, + AAB0729613971AB2008AF393 /* UIAccessibilityElement-KIFAdditions.h */, + AAB0729713971AB2008AF393 /* UIAccessibilityElement-KIFAdditions.m */, + AAB0729813971AB2008AF393 /* UIApplication-KIFAdditions.h */, + AAB0729913971AB2008AF393 /* UIApplication-KIFAdditions.m */, + AAB0729A13971AB2008AF393 /* UIScrollView-KIFAdditions.h */, + AAB0729B13971AB2008AF393 /* UIScrollView-KIFAdditions.m */, + AAB0729C13971AB2008AF393 /* UITouch-KIFAdditions.h */, + AAB0729D13971AB2008AF393 /* UITouch-KIFAdditions.m */, + AAB072A013971AB2008AF393 /* UIView-KIFAdditions.h */, + AAB072A113971AB2008AF393 /* UIView-KIFAdditions.m */, + AAB072A213971AB2008AF393 /* UIWindow-KIFAdditions.h */, + AAB072A313971AB2008AF393 /* UIWindow-KIFAdditions.m */, + D927B9DD18F9E46400DAD036 /* UITableView-KIFAdditions.h */, + D927B9DE18F9E46400DAD036 /* UITableView-KIFAdditions.m */, + EBAE487A17A45A8E0005EE19 /* NSBundle-KIFAdditions.h */, + EBAE487B17A45A8E0005EE19 /* NSBundle-KIFAdditions.m */, + EBAE487F17A460E50005EE19 /* NSError-KIFAdditions.h */, + EBAE488017A460E50005EE19 /* NSError-KIFAdditions.m */, + EABD46751857A07600A5F081 /* XCTestCase-KIFAdditions.h */, + EABD46761857A07600A5F081 /* XCTestCase-KIFAdditions.m */, + EAC809681864F19C000E819F /* NSException-KIFAdditions.h */, + EAC809691864F19C000E819F /* NSException-KIFAdditions.m */, + E977D1051AA4062B005645BF /* UIEvent+KIFAdditions.h */, + E977D1061AA4062B005645BF /* UIEvent+KIFAdditions.m */, + 3ADD2160096BE41C780FBD95 /* UIView-Debugging.m */, + 3ADD26484C6C438B71DC15C5 /* UIView-Debugging.h */, + ); + path = Additions; + sourceTree = ""; + }; + EB1A44D21A0C3222004A3F61 /* Identifier Tests */ = { + isa = PBXGroup; + children = ( + EB1A44D31A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.h */, + EB1A44D41A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.m */, + ); + name = "Identifier Tests"; + sourceTree = ""; + }; + EB4C312F167BA39200E31109 /* Actors */ = { + isa = PBXGroup; + children = ( + EB4C3130167BA3AC00E31109 /* KIFSystemTestActor.h */, + EB4C3131167BA3AC00E31109 /* KIFSystemTestActor.m */, + EB4C3132167BA3AC00E31109 /* KIFUITestActor.h */, + EB4C3133167BA3AC00E31109 /* KIFUITestActor.m */, + EB2526461981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.h */, + EB2526471981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.m */, + ); + name = Actors; + sourceTree = ""; + }; + EB60ECBC177F8C51005A041A /* KIF */ = { + isa = PBXGroup; + children = ( + AAB0729313971AB2008AF393 /* Additions */, + AAB0728413971A98008AF393 /* Classes */, + EB1A44D21A0C3222004A3F61 /* Identifier Tests */, + AAB0726E139719AC008AF393 /* Supporting Files */, + ); + name = KIF; + sourceTree = ""; + }; + EB60ECC6177F8C83005A041A /* Test Host */ = { + isa = PBXGroup; + children = ( + 3812FB601A1212A700335733 /* AnimationViewController.m */, + 2CDEE1CA181DBED200DF6E63 /* PickerController.m */, + EB60ED04177F9041005A041A /* MainStoryboard.storyboard */, + EB60ECFC177F9031005A041A /* AppDelegate.m */, + EB60ECFD177F9031005A041A /* ShowHideViewController.m */, + EB9FB42617A5BACB00DDF160 /* GestureViewController.m */, + EB60ECFE177F9032005A041A /* TapViewController.m */, + EB60ECFF177F9032005A041A /* TestSuiteViewController.m */, + EA0F25491829839E006FF825 /* CollectionViewController.m */, + D9EA274218F05A6700D87E57 /* ScrollViewController.m */, + D927B9DB18F9DF2D00DAD036 /* TableViewController.m */, + AE62FCD51A1D2447002B10DA /* WebViewController.m */, + 84D293AC1A2C84F700C10944 /* SystemAlertViewController.m */, + 97E8A5CE1B0A62F700124E3B /* BackgroundViewController.m */, + EB60ECC7177F8C83005A041A /* Supporting Files */, + ); + path = "Test Host"; + sourceTree = ""; + }; + EB60ECC7177F8C83005A041A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EB60ECC8177F8C83005A041A /* Test Host-Info.plist */, + EB60ECC9177F8C83005A041A /* InfoPlist.strings */, + EB60ECCC177F8C84005A041A /* main.m */, + EB60ECCE177F8C84005A041A /* Test Host-Prefix.pch */, + EB60ECD2177F8C84005A041A /* Default.png */, + EB60ECD4177F8C84005A041A /* Default@2x.png */, + EB60ECD6177F8C84005A041A /* Default-568h@2x.png */, + AE62FCD71A1D2667002B10DA /* index.html */, + AE62FCD91A1D26BB002B10DA /* page2.html */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + EB60ECEF177F8DB3005A041A /* KIF Tests */ = { + isa = PBXGroup; + children = ( + 2CED883D181F5EE1005ABD20 /* PickerTests.m */, + EB60ED19177F90C2005A041A /* GestureTests.m */, + 3812FB621A12188700335733 /* WaitForAnimationTests.m */, + EB60ED07177F90BA005A041A /* LongPressTests.m */, + EB60ED08177F90BA005A041A /* ModalViewTests.m */, + EB60ED09177F90BA005A041A /* SpecificControlTests.m */, + EB60ED0A177F90BA005A041A /* SystemTests.m */, + EB60ED0B177F90BA005A041A /* TappingTests.m */, + EB3F654417AA0B8400469D18 /* TableViewTests.m */, + EA0F2546182979BE006FF825 /* CollectionViewTests.m */, + D9EA274018F05A6000D87E57 /* ScrollViewTests.m */, + EB02523D17AA109400A7D13A /* CompositionTests.m */, + EB60ED0C177F90BA005A041A /* TypingTests.m */, + EB60ED0D177F90BA005A041A /* WaitForAbscenceTests.m */, + 4A48107A19708CAB0003A32E /* ExistTests.m */, + EB60ED0E177F90BA005A041A /* WaitForTappableViewTests.m */, + EB60ED0F177F90BA005A041A /* WaitForViewTests.m */, + EB22B5AF17AF52640090B848 /* CascadingFailureTests.m */, + EB9FC00417E144B700138266 /* LandscapeTests.m */, + EB09000F17E3696A00AA15B1 /* SearchFieldTests.m */, + 2EE1270F198991920031D347 /* MultiFingerTests.m */, + EB1A44D91A0C33AD004A3F61 /* AccessibilityIdentifierTests.m */, + AE62FCCF1A1D20E5002B10DA /* WebViewTests.m */, + 84D293B01A2C891700C10944 /* SystemAlertTests.m */, + 97E8A5D01B0A63D100124E3B /* BackgroundTests.m */, + EB60ECF0177F8DB3005A041A /* Supporting Files */, + ); + path = "KIF Tests"; + sourceTree = ""; + }; + EB60ECF0177F8DB3005A041A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EABD46D01857A18900A5F081 /* KIF XCTests-Prefix.pch */, + EB60ECF1177F8DB3005A041A /* KIF Tests-Info.plist */, + EB60ECF2177F8DB3005A041A /* InfoPlist.strings */, + EB60ECF8177F8DB3005A041A /* KIF Tests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 9CC967381AD4B1B600576D13 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9CC967401AD4B1B600576D13 /* KIF.h in Headers */, + 9CC967561AD4B1F100576D13 /* LoadableCategory.h in Headers */, + 9CC967571AD4B1F100576D13 /* CGGeometry-KIFAdditions.h in Headers */, + 9CC967591AD4B1F100576D13 /* NSFileManager-KIFAdditions.h in Headers */, + 9CC9675B1AD4B1F100576D13 /* UIAccessibilityElement-KIFAdditions.h in Headers */, + 0EAA1C171B4B372700FFB2FB /* IOHIDEvent+KIF.h in Headers */, + BD6A1CA21BCE8DD000EF07D2 /* KIFAccessibilityEnabler.h in Headers */, + 9CC9675D1AD4B1F100576D13 /* UIApplication-KIFAdditions.h in Headers */, + 9CC9675F1AD4B1F100576D13 /* UIScrollView-KIFAdditions.h in Headers */, + 9CC967731AD4B1FF00576D13 /* KIFSystemTestActor.h in Headers */, + 9CC9677A1AD4B20700576D13 /* KIFTestCase.h in Headers */, + 5C877DD01B057E13006A3AC6 /* KIFUITestActor-IdentifierTests.h in Headers */, + 9CC9677C1AD4B20700576D13 /* KIFTestActor.h in Headers */, + 9CC9677F1AD4B20700576D13 /* KIFTypist.h in Headers */, + 9CC967811AD4B20700576D13 /* KIFTestStepValidation.h in Headers */, + 9CC967751AD4B1FF00576D13 /* KIFUITestActor.h in Headers */, + 9CC967771AD4B1FF00576D13 /* KIFUITestActor-ConditionalTests.h in Headers */, + 9CC967611AD4B1F100576D13 /* UITouch-KIFAdditions.h in Headers */, + 9CC967631AD4B1F100576D13 /* UIView-KIFAdditions.h in Headers */, + 9CC967651AD4B1F100576D13 /* UIWindow-KIFAdditions.h in Headers */, + 9CC967671AD4B1F100576D13 /* UITableView-KIFAdditions.h in Headers */, + 9CC967691AD4B1F100576D13 /* NSBundle-KIFAdditions.h in Headers */, + 5C877DD11B0A8B8F006A3AC6 /* UIView-Debugging.h in Headers */, + 9CC9676B1AD4B1F100576D13 /* NSError-KIFAdditions.h in Headers */, + 9CC9676D1AD4B1F100576D13 /* XCTestCase-KIFAdditions.h in Headers */, + 9CC9676F1AD4B1F100576D13 /* NSException-KIFAdditions.h in Headers */, + 9CC967711AD4B1F100576D13 /* UIEvent+KIFAdditions.h in Headers */, + 9CC967841AD4B20700576D13 /* UIAutomationHelper.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EABD46901857A0C700A5F081 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EB1A44D51A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.h in Headers */, + EABD46911857A0C700A5F081 /* KIF.h in Headers */, + D927B9DF18F9E46400DAD036 /* UITableView-KIFAdditions.h in Headers */, + EABD46921857A0C700A5F081 /* CGGeometry-KIFAdditions.h in Headers */, + EABD46931857A0C700A5F081 /* UIAccessibilityElement-KIFAdditions.h in Headers */, + 9CC967BE1AD4B55E00576D13 /* KIF-XCTestPrefix.pch in Headers */, + EABD46941857A0C700A5F081 /* UIApplication-KIFAdditions.h in Headers */, + EABD46951857A0C700A5F081 /* UIScrollView-KIFAdditions.h in Headers */, + EABD46971857A0C700A5F081 /* UITouch-KIFAdditions.h in Headers */, + EABD46981857A0C700A5F081 /* UIView-KIFAdditions.h in Headers */, + EABD46991857A0C700A5F081 /* UIWindow-KIFAdditions.h in Headers */, + EABD469A1857A0C700A5F081 /* NSFileManager-KIFAdditions.h in Headers */, + 0EAA1C131B4B371700FFB2FB /* IOHIDEvent+KIF.h in Headers */, + EABD469B1857A0C700A5F081 /* LoadableCategory.h in Headers */, + EABD469C1857A0C700A5F081 /* KIFTypist.h in Headers */, + EABD469D1857A0C700A5F081 /* KIFTestActor.h in Headers */, + EABD469E1857A0C700A5F081 /* KIFTestCase.h in Headers */, + EABD469F1857A0C700A5F081 /* KIFSystemTestActor.h in Headers */, + EABD46A01857A0C700A5F081 /* KIFUITestActor.h in Headers */, + EABD46A11857A0C700A5F081 /* NSBundle-KIFAdditions.h in Headers */, + EAC8096A1864F19C000E819F /* NSException-KIFAdditions.h in Headers */, + EABD46961857A0C700A5F081 /* XCTestCase-KIFAdditions.h in Headers */, + 84D293BB1A2CC30B00C10944 /* UIAutomationHelper.h in Headers */, + E977D1071AA4062B005645BF /* UIEvent+KIFAdditions.h in Headers */, + BD6A1CA11BCE8DD000EF07D2 /* KIFAccessibilityEnabler.h in Headers */, + EABD46A21857A0C700A5F081 /* NSError-KIFAdditions.h in Headers */, + EABD46A31857A0C700A5F081 /* KIFTestStepValidation.h in Headers */, + 3ADD25CC71BF27D675768787 /* UIView-Debugging.h in Headers */, + EB2526481981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXLegacyTarget section */ + A88930091685088F00FC7C63 /* KIF Documentation */ = { + isa = PBXLegacyTarget; + buildArgumentsString = "--exit-threshold 2 --logformat xcode --output /tmp/kif-docs --project-name KIF --project-version 2.0 --project-company \"Square, Inc.\" --company-id com.squareup --no-repeat-first-par --no-search-undocumented-doc Classes/ Additions/"; + buildConfigurationList = A889300A1685088F00FC7C63 /* Build configuration list for PBXLegacyTarget "KIF Documentation" */; + buildPhases = ( + ); + buildToolPath = /usr/local/bin/appledoc; + buildWorkingDirectory = ""; + dependencies = ( + ); + name = "KIF Documentation"; + passBuildSettingsInEnvironment = 1; + productName = "KIF Documentation"; + }; +/* End PBXLegacyTarget section */ + +/* Begin PBXNativeTarget section */ + 9CC9673A1AD4B1B600576D13 /* KIFFramework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9CC967541AD4B1B600576D13 /* Build configuration list for PBXNativeTarget "KIFFramework" */; + buildPhases = ( + 9CC967361AD4B1B600576D13 /* Sources */, + 9CC967371AD4B1B600576D13 /* Frameworks */, + 9CC967381AD4B1B600576D13 /* Headers */, + 9CC967391AD4B1B600576D13 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = KIFFramework; + productName = KIFFramework; + productReference = 9CC9673B1AD4B1B600576D13 /* KIF.framework */; + productType = "com.apple.product-type.framework"; + }; + EABD46791857A0C700A5F081 /* KIF */ = { + isa = PBXNativeTarget; + buildConfigurationList = EABD46A61857A0C700A5F081 /* Build configuration list for PBXNativeTarget "KIF" */; + buildPhases = ( + EABD467A1857A0C700A5F081 /* Sources */, + EABD468C1857A0C700A5F081 /* Frameworks */, + EABD46901857A0C700A5F081 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = KIF; + productName = KIFTestCase; + productReference = EABD46AA1857A0C700A5F081 /* libKIF.a */; + productType = "com.apple.product-type.library.static"; + }; + EABD46AD1857A0F300A5F081 /* KIF Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EABD46C91857A0F300A5F081 /* Build configuration list for PBXNativeTarget "KIF Tests" */; + buildPhases = ( + EABD46B01857A0F300A5F081 /* Sources */, + EABD46C01857A0F300A5F081 /* Frameworks */, + EABD46C61857A0F300A5F081 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + EABD46AE1857A0F300A5F081 /* PBXTargetDependency */, + ); + name = "KIF Tests"; + productName = "KIF Tests"; + productReference = EABD46CD1857A0F300A5F081 /* KIF Tests - XCTest.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + EB60ECC0177F8C83005A041A /* Test Host */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB60ECD8177F8C84005A041A /* Build configuration list for PBXNativeTarget "Test Host" */; + buildPhases = ( + EB60ECBD177F8C83005A041A /* Sources */, + EB60ECBE177F8C83005A041A /* Frameworks */, + EB60ECBF177F8C83005A041A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Test Host"; + productName = "Test Host"; + productReference = EB60ECC1177F8C83005A041A /* Test Host.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + AAB0725F139719AC008AF393 /* Project object */ = { + isa = PBXProject; + attributes = { + LastTestingUpgradeCheck = 0510; + LastUpgradeCheck = 0700; + TargetAttributes = { + 9CC9673A1AD4B1B600576D13 = { + CreatedOnToolsVersion = 6.2; + }; + }; + }; + buildConfigurationList = AAB07262139719AC008AF393 /* Build configuration list for PBXProject "KIF" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = AAB0725D139719AC008AF393; + productRefGroup = AAB07269139719AC008AF393 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EABD46791857A0C700A5F081 /* KIF */, + A88930091685088F00FC7C63 /* KIF Documentation */, + EB60ECC0177F8C83005A041A /* Test Host */, + EABD46AD1857A0F300A5F081 /* KIF Tests */, + 9CC9673A1AD4B1B600576D13 /* KIFFramework */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9CC967391AD4B1B600576D13 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EABD46C61857A0F300A5F081 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EABD46C71857A0F300A5F081 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB60ECBF177F8C83005A041A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB60ECCB177F8C84005A041A /* InfoPlist.strings in Resources */, + EB60ECD3177F8C84005A041A /* Default.png in Resources */, + EB60ECD5177F8C84005A041A /* Default@2x.png in Resources */, + AE62FCD81A1D2667002B10DA /* index.html in Resources */, + EB60ECD7177F8C84005A041A /* Default-568h@2x.png in Resources */, + EB60ED06177F9041005A041A /* MainStoryboard.storyboard in Resources */, + AE62FCDA1A1D26BB002B10DA /* page2.html in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9CC967361AD4B1B600576D13 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9CC967D01AD4B5B900576D13 /* KIFTestCase.m in Sources */, + 0EAA1C181B4B372700FFB2FB /* IOHIDEvent+KIF.m in Sources */, + 9CC967D11AD4B5B900576D13 /* KIFTestActor.m in Sources */, + 9CC967D21AD4B5B900576D13 /* KIFTypist.m in Sources */, + 9CC967D31AD4B5B900576D13 /* KIFTestStepValidation.m in Sources */, + 9CC967D41AD4B5B900576D13 /* UIAutomationHelper.m in Sources */, + 9CC967D51AD4B5B900576D13 /* KIFUITestActor-IdentifierTests.m in Sources */, + 9CC967CD1AD4B59A00576D13 /* KIFSystemTestActor.m in Sources */, + 9CC967CE1AD4B59A00576D13 /* KIFUITestActor.m in Sources */, + 9CC967CF1AD4B59A00576D13 /* KIFUITestActor-ConditionalTests.m in Sources */, + 9CC967BF1AD4B58C00576D13 /* CGGeometry-KIFAdditions.m in Sources */, + 9CC967C01AD4B58C00576D13 /* NSFileManager-KIFAdditions.m in Sources */, + 9CC967C11AD4B58C00576D13 /* UIAccessibilityElement-KIFAdditions.m in Sources */, + 9CC967C21AD4B58C00576D13 /* UIApplication-KIFAdditions.m in Sources */, + 9CC967C31AD4B58C00576D13 /* UIScrollView-KIFAdditions.m in Sources */, + 9CC967C41AD4B58C00576D13 /* UITouch-KIFAdditions.m in Sources */, + 9CC967C51AD4B58C00576D13 /* UIView-KIFAdditions.m in Sources */, + 9CC967C61AD4B58C00576D13 /* UIWindow-KIFAdditions.m in Sources */, + 9CC967C71AD4B58C00576D13 /* UITableView-KIFAdditions.m in Sources */, + 9CC967C81AD4B58C00576D13 /* NSBundle-KIFAdditions.m in Sources */, + 9CC967C91AD4B58C00576D13 /* NSError-KIFAdditions.m in Sources */, + 9CC967CA1AD4B58C00576D13 /* XCTestCase-KIFAdditions.m in Sources */, + 9CC967CB1AD4B58C00576D13 /* NSException-KIFAdditions.m in Sources */, + 9CC967CC1AD4B58C00576D13 /* UIEvent+KIFAdditions.m in Sources */, + 5C877DD21B0A8B93006A3AC6 /* UIView-Debugging.m in Sources */, + BD6A1CA41BCE8DD000EF07D2 /* KIFAccessibilityEnabler.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EABD467A1857A0C700A5F081 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EABD467B1857A0C700A5F081 /* CGGeometry-KIFAdditions.m in Sources */, + 0EAA1C141B4B371700FFB2FB /* IOHIDEvent+KIF.m in Sources */, + EABD467C1857A0C700A5F081 /* UIAccessibilityElement-KIFAdditions.m in Sources */, + 84D293BD1A2CC30B00C10944 /* UIAutomationHelper.m in Sources */, + EABD467D1857A0C700A5F081 /* UIApplication-KIFAdditions.m in Sources */, + EABD467E1857A0C700A5F081 /* UIScrollView-KIFAdditions.m in Sources */, + EABD467F1857A0C700A5F081 /* UITouch-KIFAdditions.m in Sources */, + EABD46801857A0C700A5F081 /* UIView-KIFAdditions.m in Sources */, + EABD46811857A0C700A5F081 /* UIWindow-KIFAdditions.m in Sources */, + EABD46821857A0C700A5F081 /* NSFileManager-KIFAdditions.m in Sources */, + D927B9E018F9E46400DAD036 /* UITableView-KIFAdditions.m in Sources */, + EABD46831857A0C700A5F081 /* KIFTypist.m in Sources */, + EABD46841857A0C700A5F081 /* KIFTestActor.m in Sources */, + EABD46851857A0C700A5F081 /* KIFTestCase.m in Sources */, + EABD46861857A0C700A5F081 /* XCTestCase-KIFAdditions.m in Sources */, + EB1A44D61A0C3268004A3F61 /* KIFUITestActor-IdentifierTests.m in Sources */, + EB2526491981BF7A00DBC747 /* KIFUITestActor-ConditionalTests.m in Sources */, + E977D1081AA4062B005645BF /* UIEvent+KIFAdditions.m in Sources */, + EABD46871857A0C700A5F081 /* KIFSystemTestActor.m in Sources */, + EAC8096B1864F19C000E819F /* NSException-KIFAdditions.m in Sources */, + EABD46881857A0C700A5F081 /* KIFUITestActor.m in Sources */, + EABD46891857A0C700A5F081 /* NSBundle-KIFAdditions.m in Sources */, + EABD468A1857A0C700A5F081 /* NSError-KIFAdditions.m in Sources */, + EABD468B1857A0C700A5F081 /* KIFTestStepValidation.m in Sources */, + 4D2FD4EE1AF5936700E61192 /* UIView-Debugging.m in Sources */, + BD6A1CA31BCE8DD000EF07D2 /* KIFAccessibilityEnabler.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EABD46B01857A0F300A5F081 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EABD46B11857A0F300A5F081 /* SearchFieldTests.m in Sources */, + EABD46B21857A0F300A5F081 /* CascadingFailureTests.m in Sources */, + EABD46B31857A0F300A5F081 /* CompositionTests.m in Sources */, + 4A48107B19708CAB0003A32E /* ExistTests.m in Sources */, + EA4655881905B92500B2C60E /* PickerTests.m in Sources */, + 3812FB631A12188700335733 /* WaitForAnimationTests.m in Sources */, + EB1A44DA1A0C33AD004A3F61 /* AccessibilityIdentifierTests.m in Sources */, + EABD46B41857A0F300A5F081 /* LongPressTests.m in Sources */, + EABD46B51857A0F300A5F081 /* ModalViewTests.m in Sources */, + EABD46B61857A0F300A5F081 /* SpecificControlTests.m in Sources */, + EABD46B71857A0F300A5F081 /* SystemTests.m in Sources */, + EABD46B81857A0F300A5F081 /* TappingTests.m in Sources */, + EABD46B91857A0F300A5F081 /* TypingTests.m in Sources */, + EABD46BA1857A0F300A5F081 /* WaitForAbscenceTests.m in Sources */, + EA47DA2818EDFD6F0034D2F5 /* CollectionViewTests.m in Sources */, + EABD46BB1857A0F300A5F081 /* WaitForTappableViewTests.m in Sources */, + EABD46BC1857A0F300A5F081 /* WaitForViewTests.m in Sources */, + 97E8A5D11B0A63D100124E3B /* BackgroundTests.m in Sources */, + EABD46BD1857A0F300A5F081 /* LandscapeTests.m in Sources */, + EABD46BE1857A0F300A5F081 /* TableViewTests.m in Sources */, + EABD46BF1857A0F300A5F081 /* GestureTests.m in Sources */, + 2EE12710198991920031D347 /* MultiFingerTests.m in Sources */, + D9EA274118F05A6000D87E57 /* ScrollViewTests.m in Sources */, + AE62FCD01A1D20E5002B10DA /* WebViewTests.m in Sources */, + 84D293B11A2C891700C10944 /* SystemAlertTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB60ECBD177F8C83005A041A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97E8A5CF1B0A62F700124E3B /* BackgroundViewController.m in Sources */, + EB9FB42717A5BACB00DDF160 /* GestureViewController.m in Sources */, + EA0F254A1829839E006FF825 /* CollectionViewController.m in Sources */, + 84D293AD1A2C84F700C10944 /* SystemAlertViewController.m in Sources */, + AE62FCD61A1D2447002B10DA /* WebViewController.m in Sources */, + EB60ECCD177F8C84005A041A /* main.m in Sources */, + EB60ED00177F9032005A041A /* AppDelegate.m in Sources */, + D927B9DC18F9DF2D00DAD036 /* TableViewController.m in Sources */, + EB60ED01177F9032005A041A /* ShowHideViewController.m in Sources */, + EB60ED02177F9032005A041A /* TapViewController.m in Sources */, + 2CDEE1CB181DBED200DF6E63 /* PickerController.m in Sources */, + EB60ED03177F9032005A041A /* TestSuiteViewController.m in Sources */, + D9EA274318F05A6700D87E57 /* ScrollViewController.m in Sources */, + 3812FB611A1212A700335733 /* AnimationViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + EABD46AE1857A0F300A5F081 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EB60ECC0177F8C83005A041A /* Test Host */; + targetProxy = EABD46AF1857A0F300A5F081 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + EB60ECC9177F8C83005A041A /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + EB60ECCA177F8C83005A041A /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + EB60ECF2177F8DB3005A041A /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + EB60ECF3177F8DB3005A041A /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + EB60ED04177F9041005A041A /* MainStoryboard.storyboard */ = { + isa = PBXVariantGroup; + children = ( + EB60ED05177F9041005A041A /* en */, + ); + name = MainStoryboard.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9CC9674E1AD4B1B600576D13 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = 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; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREFIX_HEADER = "Classes/KIF-XCTestPrefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + 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; + INFOPLIST_FILE = KIFFramework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = KIF; + PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 9CC9674F1AD4B1B600576D13 /* Coverage */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = 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; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + GCC_PREFIX_HEADER = "Classes/KIF-XCTestPrefix.pch"; + 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; + INFOPLIST_FILE = KIFFramework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = KIF; + PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Coverage; + }; + 9CC967501AD4B1B600576D13 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = 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; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + ); + GCC_PREFIX_HEADER = "Classes/KIF-XCTestPrefix.pch"; + 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; + INFOPLIST_FILE = KIFFramework/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = KIF; + PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + A889300B1685088F00FC7C63 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUGGING_SYMBOLS = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + }; + name = Debug; + }; + A889300C1685088F00FC7C63 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + }; + name = Release; + }; + AAB07270139719AC008AF393 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREFIX_HEADER = "Classes/KIF-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_TREAT_WARNINGS_AS_ERRORS = YES; + GCC_VERSION = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; + ONLY_ACTIVE_ARCH = YES; + PUBLIC_HEADERS_FOLDER_PATH = "include/$(PRODUCT_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + AAB07271139719AC008AF393 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREFIX_HEADER = "Classes/KIF-Prefix.pch"; + GCC_TREAT_WARNINGS_AS_ERRORS = YES; + GCC_VERSION = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; + PUBLIC_HEADERS_FOLDER_PATH = "include/$(PRODUCT_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + EABD46A71857A0C700A5F081 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_ARC = YES; + DSTROOT = /tmp/KIF.dst; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks"; + GCC_PREFIX_HEADER = "Classes/KIF-XCTestPrefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + HEADER_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = KIF; + }; + name = Debug; + }; + EABD46A81857A0C700A5F081 /* Coverage */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_ARC = YES; + DSTROOT = /tmp/KIF.dst; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks"; + GCC_PREFIX_HEADER = "Classes/KIF-XCTestPrefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + HEADER_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = KIF; + }; + name = Coverage; + }; + EABD46A91857A0C700A5F081 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ENABLE_OBJC_ARC = YES; + DSTROOT = /tmp/KIF.dst; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks"; + GCC_PREFIX_HEADER = "Classes/KIF-XCTestPrefix.pch"; + HEADER_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = KIF; + }; + name = Release; + }; + EABD46CA1857A0F300A5F081 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Test Host.app/Test Host"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_FRAMEWORKS_DIR)"; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "KIF Tests/KIF XCTests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_UNINITIALIZED_AUTOS = YES; + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "KIF Tests/KIF Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "KIF Tests - XCTest"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = xctest; + }; + name = Debug; + }; + EABD46CB1857A0F300A5F081 /* Coverage */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Test Host.app/Test Host"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_FRAMEWORKS_DIR)"; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "KIF Tests/KIF XCTests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_UNINITIALIZED_AUTOS = YES; + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "KIF Tests/KIF Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "KIF Tests - XCTest"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = xctest; + }; + name = Coverage; + }; + EABD46CC1857A0F300A5F081 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Test Host.app/Test Host"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_FRAMEWORKS_DIR)"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "KIF Tests/KIF XCTests-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "KIF Tests/KIF Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "KIF Tests - XCTest"; + TEST_HOST = "$(BUNDLE_LOADER)"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = xctest; + }; + name = Release; + }; + EB60ECD9177F8C84005A041A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_BITCODE = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Test Host/Test Host-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_UNINITIALIZED_AUTOS = YES; + INFOPLIST_FILE = "Test Host/Test Host-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + EB60ECDA177F8C84005A041A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_BITCODE = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Test Host/Test Host-Prefix.pch"; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + INFOPLIST_FILE = "Test Host/Test Host-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + EBAE48FF17A5B1380005EE19 /* Coverage */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREFIX_HEADER = "Classes/KIF-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_TREAT_WARNINGS_AS_ERRORS = YES; + GCC_VERSION = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; + PUBLIC_HEADERS_FOLDER_PATH = "include/$(PRODUCT_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Coverage; + }; + EBAE490117A5B1380005EE19 /* Coverage */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUGGING_SYMBOLS = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + }; + name = Coverage; + }; + EBAE490217A5B1380005EE19 /* Coverage */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_BITCODE = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Test Host/Test Host-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_UNINITIALIZED_AUTOS = YES; + INFOPLIST_FILE = "Test Host/Test Host-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.square.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = app; + }; + name = Coverage; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9CC967541AD4B1B600576D13 /* Build configuration list for PBXNativeTarget "KIFFramework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9CC9674E1AD4B1B600576D13 /* Debug */, + 9CC9674F1AD4B1B600576D13 /* Coverage */, + 9CC967501AD4B1B600576D13 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A889300A1685088F00FC7C63 /* Build configuration list for PBXLegacyTarget "KIF Documentation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A889300B1685088F00FC7C63 /* Debug */, + EBAE490117A5B1380005EE19 /* Coverage */, + A889300C1685088F00FC7C63 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AAB07262139719AC008AF393 /* Build configuration list for PBXProject "KIF" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AAB07270139719AC008AF393 /* Debug */, + EBAE48FF17A5B1380005EE19 /* Coverage */, + AAB07271139719AC008AF393 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EABD46A61857A0C700A5F081 /* Build configuration list for PBXNativeTarget "KIF" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EABD46A71857A0C700A5F081 /* Debug */, + EABD46A81857A0C700A5F081 /* Coverage */, + EABD46A91857A0C700A5F081 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EABD46C91857A0F300A5F081 /* Build configuration list for PBXNativeTarget "KIF Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EABD46CA1857A0F300A5F081 /* Debug */, + EABD46CB1857A0F300A5F081 /* Coverage */, + EABD46CC1857A0F300A5F081 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB60ECD8177F8C84005A041A /* Build configuration list for PBXNativeTarget "Test Host" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB60ECD9177F8C84005A041A /* Debug */, + EBAE490217A5B1380005EE19 /* Coverage */, + EB60ECDA177F8C84005A041A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = AAB0725F139719AC008AF393 /* Project object */; +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIF Documentation.xcscheme b/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIF Documentation.xcscheme new file mode 100755 index 000000000..f2b61e31f --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIF Documentation.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIF.xcscheme b/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIF.xcscheme new file mode 100755 index 000000000..04bc9ea04 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIF.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIFFramework.xcscheme b/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIFFramework.xcscheme new file mode 100755 index 000000000..9c3794aa4 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIF.xcodeproj/xcshareddata/xcschemes/KIFFramework.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIFFramework/Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/KIFFramework/Info.plist new file mode 100755 index 000000000..d3de8eefb --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIFFramework/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/KIFFramework/KIF.h b/examples/InterstitialUnifiedDemand/KIF-master/KIFFramework/KIF.h new file mode 100755 index 000000000..ce3bc0300 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/KIFFramework/KIF.h @@ -0,0 +1,42 @@ +// +// KIF.h +// KIF +// +// Created by Shane Zatezalo on 4/7/15. +// Copyright (c) 2015 Lottadot LLC. All rights reserved. +// + +#import +#import +#import + +//! Project version number for KIF. +FOUNDATION_EXPORT double KIFVersionNumber; + +//! Project version string for KIF. +FOUNDATION_EXPORT const unsigned char KIFVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/KIF-master/LICENSE b/examples/InterstitialUnifiedDemand/KIF-master/LICENSE new file mode 100755 index 000000000..3eaf7fae8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/LICENSE @@ -0,0 +1,15 @@ +KIF +Copyright 2011 Square, Inc. +A full list of contributors is available at https://github.com/square/KIF/contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/KIF-master/README.md b/examples/InterstitialUnifiedDemand/KIF-master/README.md new file mode 100755 index 000000000..abc13db86 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/README.md @@ -0,0 +1,316 @@ +[![Build Status](https://travis-ci.org/kif-framework/KIF.svg?branch=master)](https://travis-ci.org/kif-framework/KIF) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![CocoaPod Version](https://img.shields.io/cocoapods/v/KIF.svg?style=flat)](https://cocoapods.org) + +KIF iOS Integration Testing Framework +===================================== + +KIF, which stands for Keep It Functional, is an iOS integration test framework. It allows for easy automation of iOS apps by leveraging the accessibility attributes that the OS makes available for those with visual disabilities. + +KIF builds and performs the tests using a standard `XCTest` testing target. Testing is conducted synchronously in the main thread (running the run loop to force the passage of time) allowing for more complex logic and composition. This also allows KIF to take advantage of the Xcode 5 Test Navigator, command line build tools, and Bot test reports. [Find out more about Xcode 5 features.](https://developer.apple.com/technologies/tools/whats-new.html) + +**KIF uses undocumented Apple APIs.** This is true of most iOS testing frameworks, and is safe for testing purposes, but it's important that KIF does not make it into production code, as it will get your app submission denied by Apple. Follow the instructions below to ensure that KIF is configured correctly for your project. + +**Note:** KIF 2.0 is not API compatible with KIF 1.0 and uses a different test execution mechanism. KIF 1.0 can be found in the [Releases](https://github.com/kif-framework/KIF/releases/) section or on [CocoaPods](http://cocoapods.org). + +Features +-------- + +#### Minimizes Indirection +All of the tests for KIF are written in Objective C. This allows for maximum integration with your code while minimizing the number of layers you have to build. + +#### Easy Configuration +KIF integrates directly into your Xcode project, so there's no need to run an additional web server or install any additional packages. + +#### Wide OS coverage +KIF's test suite has been run against iOS 5.1 and above (including iOS 8), though lower versions will likely work. + +#### Test Like a User +KIF attempts to imitate actual user input. Automation is done using tap events wherever possible. + +#### Automatic Integration with Xcode 5 Testing Tools +Xcode 5 introduces [new testing and continuous integration tools](https://developer.apple.com/technologies/tools/whats-new.html) built on the same testing platform as KIF. You can easily run a single KIF test with the Test Navigator or kick off nightly acceptance tests with Bots. + +See KIF in Action +----------------- + +KIF uses techniques described below to validate its internal functionality. You can see a test suite that exercises its entire functionality by simply building and testing the KIF scheme with ⌘U. Look at the tests in the "KIF Tests" group for ideas on how to build your own tests. + +Installation (with CocoaPods) +----------------------------- + +[CocoaPods](http://cocoapods.org) are the easiest way to get set up with KIF. + +The first thing you will want to do is set up a test target you will be using for KIF. You may already have one named *MyApplication*_Tests if you selected to automatically create unit tests. If you did, you can keep using it if you aren't using it for unit tests. Otherwise, follow these directions to create a new one. + +Select your project in Xcode and click on "Add Target" in the bottom left corner of the editor. Select iOS -> Test -> iOS Unit Testing Bundle. Give it a product name like "Acceptance Tests", "UI Tests", or something that indicates the intent of your testing process. + +The testing target will add a header and implementation file, likely "Acceptance_Tests.m/h" to match your target name. Delete those. + +Once your test target set up, add the following to your Podfile file. Use your target's name as appropriate. + +```Ruby +target 'Acceptance Tests', :exclusive => true do + pod 'KIF', '~> 3.0', :configurations => ['Debug'] +end +``` + +The `:exclusive => true` option will prevent Cocoapods from including dependencies from your main target in your test target causing double-linking issues when you test link against the app. + +After running `pod install` complete the tasks in [**Final Test Target Configurations**](#final-test-target-configurations) below for the final details on getting your tests to run. + +Note: if you are using KIF with OCUnit, you need to use the OCUnit version of KIF as follows: + +```Ruby +target 'Acceptance Tests', :exclusive => true do + pod 'KIF/OCUnit', '~> 3.0' +end +``` + +Installation (from GitHub) +-------------------------- + +To install KIF, you'll need to link the libKIF static library directly into your application. Download the source from the [kif-framework/KIF](https://github.com/kif-framework/KIF/) and follow the instructions below. The screenshots are from Xcode 6 on Yosemite, but the instructions should be the same for Xcode 5 or later on any OS version. + +We'll be using a simple project as an example, and you can find it in `Documentation/Examples/Testable Swift` in this repository. + +![Simple App](https://github.com/kif-framework/KIF/raw/master/Documentation/Images/Simple App.png) + + +### Add KIF to your project files +The first step is to add the KIF project into the ./Frameworks/KIF subdirectory of your existing app. If your project uses Git for version control, you can use submodules to make updating in the future easier: + +``` +cd /path/to/MyApplicationSource +mkdir Frameworks +git submodule add https://github.com/kif-framework/KIF.git Frameworks/KIF +``` + +If you're not using Git, simply download the source and copy it into the `./Frameworks/KIF` directory. + +### Add KIF to Your Workspace +Let your project know about KIF by adding the KIF project into a workspace along with your main project. Find the `KIF.xcodeproj` file in Finder and drag it into the Project Navigator (⌘1). + +![Added KIF to the project](https://github.com/kif-framework/KIF/raw/master/Documentation/Images/Added KIF to Project.png) + + +### Create a Testing Target +You'll need to create a test target for your app. You may already have one named *MyApplication*Tests if you selected to automatically create unit tests when you created the project. If you did, you can keep using it if you aren't using it for unit tests. Otherwise, follow these directions to create a new one. + +Select your project in Xcode and click on "Add Target" in the bottom left corner of the editor. Select iOS -> Test -> iOS Unit Testing Bundle. Give it a product name like "Acceptance Tests", "UI Tests", or something that indicates the intent of your testing process. + +The testing target will add a header and implementation file, likely "Acceptance_Tests.m/h" to match your target name. Delete those. + +### Configure the Testing Target +Now that you have a target for your tests, add the tests to that target. With the project settings still selected in the Project Navigator, and the new integration tests target selected in the project settings, select the "Build Phases" tab. Under the "Link Binary With Libraries" section, hit the "+" button. In the sheet that appears, select "libKIF.a" and click "Add". Repeat the process for CoreGraphics.framework. + +KIF requires the IOKit.framework, but it is not located with the other system frameworks. To link to it, add "-framework IOKit" to the "Other Linker Flags" build setting. + +![Add libKIF library screen shot](https://github.com/kif-framework/KIF/raw/master/Documentation/Images/Add Library.png) + +![Add libKIF library screen shot](https://github.com/kif-framework/KIF/raw/master/Documentation/Images/Add Library Sheet.png) + +KIF takes advantage of Objective C's ability to add categories on an object, but this isn't enabled for static libraries by default. To enable this, add the `-ObjC` flag to the "Other Linker Flags" build setting on your test bundle target as shown below. + +![Add category linker flags screen shot](https://github.com/kif-framework/KIF/raw/master/Documentation/Images/Add Category Linker Flags.png) + +Read **Final Test Target Configurations** below for the final details on getting your tests to run. + +Final Test Target Configurations +-------------------------------- + +You need your tests to run hosted in your application. **Xcode does this for you by default** when creating a new testing bundle target, but if you're migrating an older bundle, follow the steps below. + +First add your application by selecting "Build Phases", expanding the "Target Dependencies" section, clicking on the "+" button, and in the new sheet that appears selecting your application target and clicking "Add". + +Next, configure your bundle loader. In "Build Settings", expand "Linking" and edit "Bundle Loader" to be `$(BUILT_PRODUCTS_DIR)/MyApplication.app/MyApplication` where *MyApplication* is the name of your app. Expand the "Testing" section and edit "Test Host" to be `$(BUNDLE_LOADER)`. Also make sure that "Wrapper Extension" is set to "xctest". + +The last step is to configure your unit tests to run when you trigger a test (⌘U). Click on your scheme name and select "Edit Scheme…". Click on "Test" in the sidebar followed by the "+" in the bottom left corner. Select your testing target and click "OK". + +## Example test cases +With your project configured to use KIF, it's time to start writing tests. There are two main classes used in KIF testing: the test case (`KIFTestCase`, subclass of `XCTestCase`) and the UI test actor (`KIFUITestActor`). The XCTest test runner loads the test case classes and executes their test. Inside these tests, the tester performs the UI operations which generally imitate a user interaction. Three of the most common tester actions are "tap this view," "enter text into this view," and "wait for this view." These steps are included as factory methods on `KIFUITestActor` in the base KIF implementation. + +KIF relies on the built-in accessibility of iOS to perform its test steps. As such, it's important that your app is fully accessible. This is also a great way to ensure that your app is usable by everyone. Giving your views reasonable labels is usually a good place to start when making your application accessible. More details are available in [Apple's Documentation](http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iPhoneAccessibility/Making_Application_Accessible/Making_Application_Accessible.html#//apple_ref/doc/uid/TP40008785-CH102-SW5). + +The first step is to create a test class to test some functionality. In our case, we will create a login test (`LoginTests`). Create a new class that inherits from KIFTestCase. You may have to update the import to point to ``. The test method name provides a unique identifier. Your `KIFTestCase` subclass should look something like this: + +*LoginTestCase.h* + +```objective-c +#import + +@interface LoginTests : KIFTestCase +@end +``` + +*LoginTestCase.m* + +```objective-c +#import "LoginTests.h" +#import "KIFUITestActor+EXAdditions.h" + +@implementation LoginTests + +- (void)beforeEach +{ + [tester navigateToLoginPage]; +} + +- (void)afterEach +{ + [tester returnToLoggedOutHomeScreen]; +} + +- (void)testSuccessfulLogin +{ + [tester enterText:@"user@example.com" intoViewWithAccessibilityLabel:@"Login User Name"]; + [tester enterText:@"thisismypassword" intoViewWithAccessibilityLabel:@"Login Password"]; + [tester tapViewWithAccessibilityLabel:@"Log In"]; + + // Verify that the login succeeded + [tester waitForTappableViewWithAccessibilityLabel:@"Welcome"]; +} + +@end +``` + +Most of the tester actions in the test are already defined by the KIF framework, but `-navigateToLoginPage` and `-returnToLoggedOutHomeScreen` are not. These are examples of custom actions which are specific to your application. Adding such steps is easy, and is done using a factory method in a category of `KIFUITestActor`, similar to how we added the scenario. + +*KIFUITestActor+EXAdditions.h* + +```objective-c +#import + +@interface KIFUITestActor (EXAdditions) + +- (void)navigateToLoginPage; +- (void)returnToLoggedOutHomeScreen; + +@end +``` + +*KIFUITestActor+EXAdditions.m* + +```objective-c +#import "KIFUITestActor+EXAdditions.h" + +@implementation KIFUITestActor (EXAdditions) + +- (void)navigateToLoginPage +{ + [self tapViewWithAccessibilityLabel:@"Login/Sign Up"]; + [self tapViewWithAccessibilityLabel:@"Skip this ad"]; +} + +- (void)returnToLoggedOutHomeScreen +{ + [self tapViewWithAccessibilityLabel:@"Logout"]; + [self tapViewWithAccessibilityLabel:@"Logout"]; // Dismiss alert. +} + +@end +``` + +Everything should now be configured. When you run the integration tests using the test button, ⌘U, or the Xcode 5 Test Navigator (⌘5). + +Use with other testing frameworks +--------------------------------- + +`KIFTestCase` is not necessary for running KIF tests. Tests can run directly in `XCTestCase` or any subclass. The basic requirement is that when you call `tester` or `system`, `self` must be an instance of `XCTestCase`. + +For example, the following [Specta](https://github.com/specta/specta) test works without any changes to KIF or Specta: + +```objective-c +#import +#import + +SpecBegin(App) + +describe(@"Tab controller", ^{ + + it(@"should show second view when I tap on the second tab", ^{ + [tester tapViewWithAccessibilityLabel:@"Second" traits:UIAccessibilityTraitButton]; + [tester waitForViewWithAccessibilityLabel:@"Second View"]; + }); + +}); + +SpecEnd +``` + +If you want to use KIF with a test runner that does not subclass `XCTestCase`, your runner class just needs to implement the `KIFTestActorDelegate` protocol which contains two required methods. + + - (void)failWithException:(NSException *)exception stopTest:(BOOL)stop; + - (void)failWithExceptions:(NSArray *)exceptions stopTest:(BOOL)stop; + +In the first case, the test runner should log the exception and halt the test execution if `stop` is `YES`. In the second, the runner should log all the exceptions and halt the test execution if `stop` is `YES`. The exceptions take advantage of KIF's extensions to `NSException` that include the `lineNumber` and `filename` in the exception's `userData` to record the error's origin. + +## Use with Swift + +Since it's easy to combine Swift and Objective-C code in a single project, KIF is fully capable of testing apps written in both Objective-C and Swift. + +If you want to write your test cases in Swift, you'll need to keep two things in mind. + +1. Your test bundle's bridging header will need to `#import `, since KIF is a static library and not a header. +2. The `tester` and `system` keywords are C preprocessor macros which aren't available in Swift. You can easily write a small extension to `XCTestCase` or any other class to access them: + +```swift +import KIF + +extension XCTestCase { + func tester(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFUITestActor { + return KIFUITestActor(inFile: file, atLine: line, delegate: self) + } + + func system(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFSystemTestActor { + return KIFSystemTestActor(inFile: file, atLine: line, delegate: self) + } +} + +extension KIFTestActor { + func tester(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFUITestActor { + return KIFUITestActor(inFile: file, atLine: line, delegate: self) + } + + func system(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFSystemTestActor { + return KIFSystemTestActor(inFile: file, atLine: line, delegate: self) + } +} +``` + + +Troubleshooting +--------------- + +### Simulator launches but app doesn't appear, steps time out after 10 seconds + +This issue occurs when XCTest does not have a valid test host. Reread the instructions above with regards to the "Bundle Loader" and "Test Host" settings. You may have missed something. + +### Step fails because a view cannot be found + +If KIF is failing to find a view, the most likely cause is that the view doesn't have its accessibility label set. If the view is defined in a xib, then the label can be set using the inspector. If it's created programmatically, simply set the accessibilityLabel attribute to the desired label. + +If the label is definitely set correctly, take a closer look at the error given by KIF. This error should tell you more specifically why the view was not accessible. If you are using `-waitForTappableViewWithAccessibilityLabel:`, then make sure the view is actually tappable. For items such as labels which cannot become the first responder, you may need to use `-waitForViewWithAccessibilityLabel:` instead. + +### Unrecognized selector when first trying to run + +If the first time you try to run KIF you get the following error: + + 2011-06-13 13:54:53.295 Testable (Integration Tests)[12385:207] -[NSFileManager createUserDirectory:]: unrecognized selector sent to instance 0x4e02830 + 2011-06-13 13:54:53.298 Testable (Integration Tests)[12385:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSFileManager createUserDirectory:]: unrecognized selector sent to instance 0x4e02830' + +or if you get another "unrecognized selector" error inside the KIF code, make sure that you've properly set the -ObjC flag as described above. Without this flag your app can't access the category methods that are necessary for KIF to work properly. + +Continuous Integration +---------------------- + +A continuous integration (CI) process is highly recommended and is extremely useful in ensuring that your application stays functional. The easiest way to do this will be with Xcode 5, either using Bots, or Jenkins or another tool that uses xcodebuild. For tools using xcodebuild, review the manpage for instructions on using test destinations. + +Contributing +------------ + +We're glad you're interested in KIF, and we'd love to see where you take it. + +Any contributors to the master KIF repository must sign the [Individual Contributor License Agreement (CLA)](https://spreadsheets.google.com/spreadsheet/viewform?formkey=dDViT2xzUHAwRkI3X3k5Z0lQM091OGc6MQ&ndplr=1). It's a short form that covers our bases and makes sure you're eligible to contribute. + +When you have a change you'd like to see in the master repository, [send a pull request](https://github.com/kif-framework/KIF/pulls). Before we merge your request, we'll make sure you're in the list of people who have signed a CLA. + +Thanks, and happy testing! diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/AnimationViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/AnimationViewController.m new file mode 100755 index 000000000..d8f6caeaa --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/AnimationViewController.m @@ -0,0 +1,25 @@ +// +// AnimationViewController.m +// KIF +// +// Created by Hendrik von Prince on 11.11.14. +// +// + +#import + +@interface AnimationViewController : UIViewController +@property (strong, nonatomic) IBOutlet UILabel *testLabel; +@end + +@implementation AnimationViewController + +-(void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + + // simulate a time-consuming calculation + sleep(2); + self.testLabel.hidden = NO; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/AppDelegate.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/AppDelegate.m new file mode 100755 index 000000000..07fdfbd6c --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/AppDelegate.m @@ -0,0 +1,22 @@ +// +// AppDelegate.m +// Test Suite +// +// Created by Brian Nickel on 6/25/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder +@property (strong, nonatomic) UIWindow *window; +@end + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + return YES; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/BackgroundViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/BackgroundViewController.m new file mode 100755 index 000000000..a0ef91a71 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/BackgroundViewController.m @@ -0,0 +1,33 @@ +// +// BackgroundViewController.m +// KIF +// +// Created by Jordan Zucker on 5/18/15. +// +// + +@interface BackgroundViewController : UIViewController +@property (nonatomic, weak) IBOutlet UILabel *label; +@end + +@implementation BackgroundViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleApplicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; + self.label.isAccessibilityElement = YES; + self.label.text = @"Start"; + self.label.accessibilityLabel = self.label.text; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void)handleApplicationDidEnterBackground:(NSNotification *)notification { + self.label.text = @"Back"; + self.label.accessibilityLabel = self.label.text; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/CollectionViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/CollectionViewController.m new file mode 100755 index 000000000..66f3bcaaf --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/CollectionViewController.m @@ -0,0 +1,58 @@ +// +// CollectionViewController.m +// Test Suite +// +// Created by Tony Mann on 11/5/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +@interface CollectionViewCell : UICollectionViewCell +@property (strong, nonatomic) IBOutlet UILabel *label; +@end + +@implementation CollectionViewCell +@end + +@interface CollectionViewController : UICollectionViewController +@end + +@implementation CollectionViewController + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"CollectionViewCell"]; + } + return self; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section +{ + return 200; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath +{ + CollectionViewCell *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionViewCell" forIndexPath:indexPath]; + + if (indexPath.item == 0) { + cell.accessibilityLabel = @"First Cell"; + cell.label.text = @"First"; + } else if (indexPath.item == [collectionView numberOfItemsInSection:indexPath.section] - 1) { + cell.accessibilityLabel = @"Last Cell"; + cell.label.text = @"Last"; + } else { + cell.accessibilityLabel = @"Filler"; + cell.label.text = @"Filler"; + } + + return cell; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Default-568h@2x.png b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Default-568h@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Default.png b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Default.png new file mode 100755 index 0000000000000000000000000000000000000000..4c8ca6f693f96d511e9113c0eb59eec552354e42 GIT binary patch literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 literal 0 HcmV?d00001 diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/GestureViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/GestureViewController.m new file mode 100755 index 000000000..a41f701ab --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/GestureViewController.m @@ -0,0 +1,59 @@ +// +// GestureViewController.m +// KIF +// +// Created by Brian Nickel on 7/28/13. +// +// + +#import + +@interface GestureViewController : UIViewController +@property (weak, nonatomic) IBOutlet UILabel *lastSwipeDescriptionLabel; +@property (weak, nonatomic) IBOutlet UILabel *lastVelocityVeluesLabel; +@property (weak, nonatomic) IBOutlet UILabel *bottomRightLabel; +@property (weak, nonatomic) IBOutlet UIScrollView *scrollView; +@property (weak, nonatomic) IBOutlet UILabel *panAreaLabel; + +@end + +@implementation GestureViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + self.scrollView.contentSize = CGRectUnion(self.scrollView.bounds, self.bottomRightLabel.frame).size; +} + +- (IBAction)swipedUp:(id)sender +{ + self.lastSwipeDescriptionLabel.text = @"Up"; +} + +- (IBAction)swipedDown:(id)sender +{ + self.lastSwipeDescriptionLabel.text = @"Down"; +} + +- (IBAction)swipedLeft:(id)sender +{ + self.lastSwipeDescriptionLabel.text = @"Left"; +} + +- (IBAction)swipedRight:(id)sender +{ + self.lastSwipeDescriptionLabel.text = @"Right"; +} + +- (IBAction)hadlePanGestureRecognizer:(UIPanGestureRecognizer *)sender +{ + self.lastVelocityVeluesLabel.text = [self formattedVelocityValues:[sender velocityInView:self.panAreaLabel]]; +} + +- (NSString*)formattedVelocityValues:(CGPoint)velocity +{ + return [NSString stringWithFormat:@"X:%.2f Y:%.2f", velocity.x, velocity.y]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/PickerController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/PickerController.m new file mode 100755 index 000000000..f468adca2 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/PickerController.m @@ -0,0 +1,141 @@ + +@interface PickerController : UIViewController + +@property (weak, nonatomic, readonly) IBOutlet UITextField *dateSelectionTextField; +@property (weak, nonatomic, readonly) IBOutlet UITextField *dateTimeSelectionTextField; +@property (weak, nonatomic, readonly) IBOutlet UITextField *timeSelectionTextField; +@property (weak, nonatomic, readonly) IBOutlet UITextField *countdownSelectionTextField; +@property (strong, nonatomic) UIDatePicker *datePicker; +@property (strong, nonatomic) UIDatePicker *dateTimePicker; +@property (strong, nonatomic) UIDatePicker *timePicker; +@property (strong, nonatomic) UIDatePicker *countdownPicker; +@property (strong, nonatomic) IBOutlet UIPickerView *phoneticPickerView; + +@end + +@implementation PickerController + +@synthesize datePicker; +@synthesize dateTimePicker; +@synthesize countdownPicker; +@synthesize timePicker; +@synthesize dateSelectionTextField; +@synthesize dateTimeSelectionTextField; +@synthesize timeSelectionTextField; +@synthesize countdownSelectionTextField; +@synthesize phoneticPickerView; + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(30, 215, 260, 35)]; + datePicker.datePickerMode = UIDatePickerModeDate; + datePicker.hidden = NO; + [datePicker addTarget:self action:@selector(datePickerChanged:) + forControlEvents:UIControlEventValueChanged]; + [datePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; + + dateSelectionTextField.placeholder = NSLocalizedString(@"Date Selection", nil); + dateSelectionTextField.returnKeyType = UIReturnKeyDone; + dateSelectionTextField.inputView = datePicker; + dateSelectionTextField.accessibilityLabel = @"Date Selection"; + + dateTimePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(30, 215, 260, 35)]; + dateTimePicker.datePickerMode = UIDatePickerModeDateAndTime; + [dateTimePicker addTarget:self action:@selector(dateTimePickerChanged:) + forControlEvents:UIControlEventValueChanged]; + [dateTimePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; + + dateTimeSelectionTextField.placeholder = NSLocalizedString(@"Date Time Selection", nil); + dateTimeSelectionTextField.returnKeyType = UIReturnKeyDone; + dateTimeSelectionTextField.inputView = dateTimePicker; + dateTimeSelectionTextField.accessibilityLabel = @"Date Time Selection"; + + timePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(30, 215, 260, 35)]; + timePicker.datePickerMode = UIDatePickerModeTime; + [timePicker addTarget:self action:@selector(timePickerChanged:) + forControlEvents:UIControlEventValueChanged]; + [timePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; + + timeSelectionTextField.placeholder = NSLocalizedString(@"Time Selection", nil); + timeSelectionTextField.returnKeyType = UIReturnKeyDone; + timeSelectionTextField.inputView = timePicker; + timeSelectionTextField.accessibilityLabel = @"Time Selection"; + + countdownPicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(30, 215, 260, 35)]; + countdownPicker.datePickerMode = UIDatePickerModeCountDownTimer; + [countdownPicker addTarget:self action:@selector(countdownPickerChanged:) + forControlEvents:UIControlEventValueChanged]; + [countdownPicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; + + countdownSelectionTextField.placeholder = NSLocalizedString(@"Countdown Selection", nil); + countdownSelectionTextField.returnKeyType = UIReturnKeyDone; + countdownSelectionTextField.inputView = countdownPicker; + countdownSelectionTextField.accessibilityLabel = @"Countdown Selection"; + +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (void)datePickerChanged:(id)sender { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + dateFormatter.dateStyle = NSDateFormatterMediumStyle; + NSString *string = [NSString stringWithFormat:@"%@", + [dateFormatter stringFromDate:datePicker.date]]; + self.dateSelectionTextField.text = string; +} + +- (void)dateTimePickerChanged:(id)sender { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"MMM d, hh:mm aa"]; + NSString *string = [NSString stringWithFormat:@"%@", + [dateFormatter stringFromDate:dateTimePicker.date]]; + self.dateTimeSelectionTextField.text = string; +} + +- (void)timePickerChanged:(id)sender { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"h:mm a"]; + NSString *string = [dateFormatter stringFromDate:self.timePicker.date]; + self.timeSelectionTextField.text = string; +} + +- (void)countdownPickerChanged:(id)sender { + self.countdownSelectionTextField.text = [NSString stringWithFormat:@"%f", self.countdownPicker.countDownDuration]; +} + +- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView +{ + return 1; +} + +- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component +{ + return 3; +} + +- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component +{ + return [@[@"Alpha", @"Bravo", @"Charlie"] objectAtIndex:row]; +} + +- (NSString *)pickerView:(UIPickerView *)pickerView accessibilityLabelForComponent:(NSInteger)component +{ + return @"Call Sign"; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/ScrollViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/ScrollViewController.m new file mode 100755 index 000000000..926e75517 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/ScrollViewController.m @@ -0,0 +1,68 @@ +// +// ScrollViewController.m +// KIF +// +// Created by Hilton Campbell on 2/20/14. +// +// + +#import + +@interface ScrollViewController : UIViewController +@property (weak, nonatomic) IBOutlet UIScrollView *scrollView; +@end + +@implementation ScrollViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + self.scrollView.accessibilityLabel = @"Scroll View"; + self.scrollView.contentSize = CGSizeMake(2000, 2000); + self.scrollView.delegate = self; + + UIButton *bottomButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [bottomButton setTitle:@"Down" forState:UIControlStateNormal]; + bottomButton.backgroundColor = [UIColor greenColor]; + bottomButton.frame = CGRectMake(1000, 1500, 100, 50); + [self.scrollView addSubview:bottomButton]; + + UIButton *upButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [upButton setTitle:@"Up" forState:UIControlStateNormal]; + upButton.backgroundColor = [UIColor greenColor]; + upButton.frame = CGRectMake(1000, 500, 100, 50); + [self.scrollView addSubview:upButton]; + + UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [rightButton setTitle:@"Right" forState:UIControlStateNormal]; + rightButton.backgroundColor = [UIColor greenColor]; + rightButton.frame = CGRectMake(1500, 1000, 100, 50); + [self.scrollView addSubview:rightButton]; + + UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [leftButton setTitle:@"Left" forState:UIControlStateNormal]; + leftButton.backgroundColor = [UIColor greenColor]; + leftButton.frame = CGRectMake(500, 1000, 100, 50); + [self.scrollView addSubview:leftButton]; + + UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(1500, 1500, 100, 100)]; + textView.backgroundColor = [UIColor redColor]; + textView.accessibilityLabel = @"TextView"; + [self.scrollView addSubview:textView]; +} + +#pragma mark UIScrollViewDelegate Methods + +- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView +{ + return scrollView; +} + +- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale +{ + // do nothing +} + + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/ShowHideViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/ShowHideViewController.m new file mode 100755 index 000000000..b8565c7c7 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/ShowHideViewController.m @@ -0,0 +1,52 @@ +// +// ShowHideViewController.m +// Test Suite +// +// Created by Brian K Nickel on 6/26/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface ShowHideViewController : UIViewController +@property (weak, nonatomic) IBOutlet UIButton *aButton; +@property (weak, nonatomic) IBOutlet UIButton *bButton; +@property (weak, nonatomic) IBOutlet UIView *obscuringView; +@property (weak, nonatomic) IBOutlet UILabel *contentLabel; +@end + +@implementation ShowHideViewController + +- (IBAction)coverUncoverClicked +{ + CGPoint aCenter = self.aButton.center; + CGPoint bCenter = self.bButton.center; + CGPoint center = self.obscuringView.center; + + [UIView animateWithDuration:2 animations:^{ + self.obscuringView.center = (ABS(center.y - aCenter.y) < ABS(center.y - bCenter.y)) ? bCenter : aCenter; + }]; +} + +- (IBAction)delayedButtonClicked +{ + double delayInSeconds = 2.0; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); + dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ + self.contentLabel.hidden = !self.contentLabel.hidden; + [[NSNotificationCenter defaultCenter] postNotificationName:@"DelayedShowHide" object:[UIApplication sharedApplication]]; + }); +} + +- (IBAction)instantButtonClicked +{ + self.contentLabel.hidden = !self.contentLabel.hidden; + [[NSNotificationCenter defaultCenter] postNotificationName:@"InstantShowHide" object:[UIApplication sharedApplication]]; +} + +- (IBAction)toggleSelection:(UIButton *)sender +{ + sender.selected = !sender.selected; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/SystemAlertViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/SystemAlertViewController.m new file mode 100755 index 000000000..02b785fde --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/SystemAlertViewController.m @@ -0,0 +1,47 @@ +// +// SystemAlertViewController.m +// KIF +// +// Created by Joe Masilotti on 12/1/14. +// +// + +#import +#import + +@interface SystemAlertViewController : UIViewController +@property (nonatomic, strong) CLLocationManager *locationManager; +@end + +@implementation SystemAlertViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.locationManager = [[CLLocationManager alloc] init]; +} + +- (IBAction)requestLocationServicesAccess { + if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { + [self.locationManager requestWhenInUseAuthorization]; + } + [self.locationManager startUpdatingLocation]; +} + +- (IBAction)requestPhotosAccess { + UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; + [self presentViewController:imagePickerController animated:YES completion:nil]; +} + +- (IBAction)requestNotificationScheduling { + if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { + UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert categories:nil]; + [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; + } +} + +- (IBAction)requestLocationServicesAndNotificicationsSchedulingAccesses { + [self requestLocationServicesAccess]; + [self requestNotificationScheduling]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TableViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TableViewController.m new file mode 100755 index 000000000..5b7104854 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TableViewController.m @@ -0,0 +1,55 @@ +// +// TableViewController.m +// KIF +// +// Created by Hilton Campbell on 4/12/14. +// +// + +@interface TableViewController : UITableViewController + +@end + +@implementation TableViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + self.navigationItem.rightBarButtonItem = self.editButtonItem; +} + +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath +{ + // Do nothing, this method is needed to activate reordering in edit mode +} + +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + + return YES; + +} + +- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { + + return UITableViewCellEditingStyleDelete; + +} + +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Since the table view uses static cells, it is not possible to remove the row, + // so let's just change the label to have something to check in unit tests + UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; + cell.textLabel.text = @"Deleted"; + [self.tableView setEditing:NO animated:YES]; + + // NOTE: These don't work very well + // [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; + // [self.tableView reloadData]; + } + +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TapViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TapViewController.m new file mode 100755 index 000000000..7ffbab72c --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TapViewController.m @@ -0,0 +1,103 @@ +// +// TapViewController.m +// Test Suite +// +// Created by Brian Nickel on 6/26/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface TapViewController : UIViewController +@property (weak, nonatomic) IBOutlet UISlider *slider; +@property (weak, nonatomic) IBOutlet UILabel *lineBreakLabel; +@property (weak, nonatomic) IBOutlet UILabel *memoryWarningLabel; +@property (weak, nonatomic) IBOutlet UILabel *selectedPhotoClass; +@property (weak, nonatomic) IBOutlet UITextField *otherTextField; +@property (weak, nonatomic) IBOutlet UITextField *greetingTextField; +@property (weak, nonatomic) IBOutlet UIStepper *stepper; +@property (weak, nonatomic) IBOutlet UILabel *stepperValueLabel; +@end + +@implementation TapViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(memoryWarningNotification:) name:UIApplicationDidReceiveMemoryWarningNotification object:[UIApplication sharedApplication]]; + self.lineBreakLabel.accessibilityLabel = @"A\nB\nC\n\n"; + self.stepper.isAccessibilityElement = YES; + self.stepper.accessibilityLabel = @"theStepper"; +} + +- (void)memoryWarningNotification:(NSNotification *)notification +{ + self.memoryWarningLabel.hidden = NO; +} + +- (IBAction)hideMemoryWarning +{ + self.memoryWarningLabel.hidden = YES; +} + +- (IBAction)toggleSelected:(UIButton *)sender +{ + sender.selected = !sender.selected; + self.slider.value = self.slider.value + 1; + double delayInSeconds = 3.0; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); + dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ + self.slider.value = self.slider.value - 1; + }); +} + +- (IBAction)sliderValueChanged:(UISlider *)sender +{ + sender.accessibilityValue = [NSString stringWithFormat:@"%d", (int)roundf(sender.value)]; +} + +- (IBAction)pickPhoto:(id)sender +{ + UIImagePickerController *controller = [[UIImagePickerController alloc] init]; + controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; + controller.delegate = self; + [self presentViewController:controller animated:YES completion:nil]; +} + +- (IBAction)stepperValueChanged:(UIStepper *)sender forEvent:(UIEvent *)event +{ + self.stepperValueLabel.text = [NSString stringWithFormat:@"%ld", (long)sender.value]; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (BOOL)textFieldShouldReturn:(UITextField *)textField +{ + [textField resignFirstResponder]; + + if (textField == self.otherTextField) { + [self.greetingTextField becomeFirstResponder]; + } + return NO; +} + +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string +{ + if (textField == self.otherTextField && range.length != 0) { + self.greetingTextField.text = @"Deleted something."; + } + + return YES; +} + +#pragma mark - + +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { + self.selectedPhotoClass.text = NSStringFromClass([info[UIImagePickerControllerOriginalImage] class]); + [self dismissViewControllerAnimated:YES completion:nil]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Test Host-Info.plist b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Test Host-Info.plist new file mode 100755 index 000000000..a9d00c725 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Test Host-Info.plist @@ -0,0 +1,42 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + NSLocationWhenInUseUsageDescription + To test system alert views. + UIMainStoryboardFile + MainStoryboard + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Test Host-Prefix.pch b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Test Host-Prefix.pch new file mode 100755 index 000000000..5e01c4e6b --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/Test Host-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'Test Host' target in the 'Test Host' project +// + +#import + +#ifndef __IPHONE_3_0 +#warning "This project uses features only available in iOS SDK 3.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TestSuiteViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TestSuiteViewController.m new file mode 100755 index 000000000..2e12873bc --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/TestSuiteViewController.m @@ -0,0 +1,59 @@ +// +// TestSuiteViewController.m +// Test Suite +// +// Created by Brian K Nickel on 6/26/13. +// Copyright (c) 2013 Brian Nickel. All rights reserved. +// + +#import + +@interface TestSuiteViewController : UITableViewController +@end + +@implementation TestSuiteViewController + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (indexPath.section != 1) { + return; + } + + switch (indexPath.row) { + case 0: + { + [[[UIAlertView alloc] initWithTitle:@"Alert View" message:@"Message" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Continue", nil] show]; + break; + } + + case 1: + { + break; + } + + case 2: + { + [[[UIActionSheet alloc] initWithTitle:@"Action Sheet" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Destroy" otherButtonTitles:@"A", @"B", nil] showInView:tableView]; + break; + } + + case 3: + { + Class AVCClass = NSClassFromString(@"UIActivityViewController"); + if (AVCClass) { + UIActivityViewController *controller = [[AVCClass alloc] initWithActivityItems:@[@"Hello World"] applicationActivities:nil]; + [self presentViewController:controller animated:YES completion:nil]; + } + break; + } + } +} + +#pragma mark - UIActionSheetDelegate + +- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex +{ + [[[UIAlertView alloc] initWithTitle:@"Alert View" message:@"Message" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Continue", nil] show]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/WebViewController.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/WebViewController.m new file mode 100755 index 000000000..0eadcf4d5 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/WebViewController.m @@ -0,0 +1,23 @@ +// +// WebViewController.m +// KIF +// +// Created by Joe Masilotti on 11/19/14. +// +// + +@interface WebViewController : UIViewController +@property (weak, nonatomic) IBOutlet UIWebView *webView; +@end + +@implementation WebViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + NSURL *url = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"]; + [self.webView loadRequest:[NSURLRequest requestWithURL:url]]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/en.lproj/InfoPlist.strings b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/en.lproj/InfoPlist.strings new file mode 100755 index 000000000..477b28ff8 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/en.lproj/MainStoryboard.storyboard b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/en.lproj/MainStoryboard.storyboard new file mode 100755 index 000000000..969ba78ef --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/en.lproj/MainStoryboard.storyboard @@ -0,0 +1,1804 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/index.html b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/index.html new file mode 100755 index 000000000..7e8ffb232 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/index.html @@ -0,0 +1,14 @@ + + +

Testing with KIF

+

Page 1

+
A link + +
+ + + +
















+ Footer + + diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/main.m b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/main.m new file mode 100755 index 000000000..49dde022d --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/main.m @@ -0,0 +1,16 @@ +// +// main.m +// Test Host +// +// Created by Brian Nickel on 6/29/13. +// +// + +#import + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, @"AppDelegate"); + } +} diff --git a/examples/InterstitialUnifiedDemand/KIF-master/Test Host/page2.html b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/page2.html new file mode 100755 index 000000000..37ba0a45a --- /dev/null +++ b/examples/InterstitialUnifiedDemand/KIF-master/Test Host/page2.html @@ -0,0 +1,6 @@ + + +

Testing with KIF

+

Page 2

+ + diff --git a/sdk/internal/ANCircularAnimationView.m b/sdk/internal/ANCircularAnimationView.m index cd9d7afdc..0f06ecec2 100644 --- a/sdk/internal/ANCircularAnimationView.m +++ b/sdk/internal/ANCircularAnimationView.m @@ -123,6 +123,7 @@ - (void) createCountdownLabel{ [self.countdownlabel setTextAlignment:NSTextAlignmentCenter]; UIView *countdownLabelView = self.countdownlabel; + countdownLabelView.accessibilityLabel = @"countdown label"; [self addSubview:countdownLabelView]; [self bringSubviewToFront:countdownLabelView]; @@ -163,6 +164,8 @@ - (void) drawCloseButton{ [self.layer addSublayer:line1]; [self.layer addSublayer:line2]; + self.accessibilityLabel = @"close button"; + } - (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 6204e9574..8a433e322 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -129,6 +129,8 @@ - (void)setupPlayer { [self.playerView setVideoFillMode:AVLayerVideoGravityResizeAspect]; self.playerView.translatesAutoresizingMaskIntoConstraints = NO; + self.playerView.accessibilityLabel = @"player"; + [self.view addSubview:self.playerView]; [self.playerView an_constrainToSizeOfSuperview]; diff --git a/sdk/internal/ANVolumeButtonView.m b/sdk/internal/ANVolumeButtonView.m index 164235d68..d78e8cc12 100644 --- a/sdk/internal/ANVolumeButtonView.m +++ b/sdk/internal/ANVolumeButtonView.m @@ -52,6 +52,7 @@ - (void)addVolumeButton { [self.volumeButton setAlpha:0.7]; [self setBackgroundColor:[UIColor clearColor]]; + self.volumeButton.accessibilityLabel = @"volume button"; } - (void)handleVolumeButton { From 73a4e451be5f528764ad15f1df781abed2918fd5 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Mon, 30 Nov 2015 16:41:29 +0530 Subject: [PATCH 33/92] MS1829-updated for clicks and open in native browser Test case for OpenInInAppBrowser Test Case for OpenInNativeBrowser --- .../OpenInBrowser/OpenInInAppBrowser.h | 13 +++ .../OpenInBrowser/OpenInInAppBrowser.m | 84 +++++++++++++++++++ .../OpenInBrowser/OpenInNativeBrowser.h | 13 +++ .../OpenInBrowser/OpenInNativeBrowser.m | 84 +++++++++++++++++++ 4 files changed, 194 insertions(+) create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.h new file mode 100644 index 000000000..b08174bc1 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.h @@ -0,0 +1,13 @@ +// +// OpenInInAppBrowser.h +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/30/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import + +@interface OpenInInAppBrowser : KIFTestCase + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m new file mode 100644 index 000000000..c66064219 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m @@ -0,0 +1,84 @@ +// +// CountdownTimerTest.m +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/30/15. +// Copyright © 2015 AppNexus. All rights reserved. +// +#define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] +#define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] + +#import "OpenInInAppBrowser.h" +#import +#import "ANInterstitialAd.h" + +@interface OpenInInAppBrowser(){ + ANInterstitialAd *interstitialAdView; +} + +@property (nonatomic, strong) XCTestExpectation *expectation; +@property (nonatomic) int tapsRequired; + +@end + +@implementation OpenInInAppBrowser + +- (void)setUp{ + UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + + for (UIView *subView in view.subviews) { + if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { + break; + } + } + + int breakCounter = 10; + + while (interstitial && breakCounter--) { + [self performClickOnInterstitial]; + [tester waitForTimeInterval:2.0]; + } + + [self setupDelegatesForVideo]; + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + if (!player) { + NSLog(@"Test: Not able to load the video."); + } + } +} + +- (void) test1OpenClickInInAppBrowser{ + + interstitialAdView.opensInNativeBrowser = NO; + + [tester tapViewWithAccessibilityLabel:@"player"]; + + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { + XCTAssertFalse(error, @"Click opened in native browser. failed case."); + }]; +} + +-(void) setupDelegatesForVideo{ + + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + if (controller) { + SEL aSelector = NSSelectorFromString(@"interstitialAd"); + interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.delegate = self; + interstitialAdView.videoAdDelegate = self; + } +} + +- (void) performClickOnInterstitial{ + if (interstitial) { + [tester tapViewWithAccessibilityLabel:@"interstitial"]; + } +} + +- (void)adWillLeaveApplication:(id)ad{ + [self.expectation fulfill]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.h new file mode 100644 index 000000000..e81e42a4d --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.h @@ -0,0 +1,13 @@ +// +// OpenInNativeBrowser.h +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/30/15. +// Copyright © 2015 AppNexus. All rights reserved. +// + +#import + +@interface OpenInNativeBrowser : KIFTestCase + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m new file mode 100644 index 000000000..092d78064 --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m @@ -0,0 +1,84 @@ +// +// CountdownTimerTest.m +// InterstitialUnifiedDemand +// +// Created by Chandrachud Patil on 11/30/15. +// Copyright © 2015 AppNexus. All rights reserved. +// +#define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] +#define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] + +#import "OpenInNativeBrowser.h" +#import +#import "ANInterstitialAd.h" + +@interface OpenInNativeBrowser(){ + ANInterstitialAd *interstitialAdView; +} + +@property (nonatomic, strong) XCTestExpectation *expectation; +@property (nonatomic) int tapsRequired; + +@end + +@implementation OpenInNativeBrowser + +- (void)setUp{ + UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + + for (UIView *subView in view.subviews) { + if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { + break; + } + } + + int breakCounter = 10; + + while (interstitial && breakCounter--) { + [self performClickOnInterstitial]; + [tester waitForTimeInterval:2.0]; + } + + [self setupDelegatesForVideo]; + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + if (!player) { + NSLog(@"Test: Not able to load the video."); + } + } +} + +- (void) test1OpenClickInNativeBrowser{ + + interstitialAdView.opensInNativeBrowser = YES; + + [tester tapViewWithAccessibilityLabel:@"player"]; + + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { + XCTAssertTrue(error, @"Click opened in In-App browser. failed case."); + }]; +} + +-(void) setupDelegatesForVideo{ + + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + if (controller) { + SEL aSelector = NSSelectorFromString(@"interstitialAd"); + interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.delegate = self; + interstitialAdView.videoAdDelegate = self; + } +} + +- (void) performClickOnInterstitial{ + if (interstitial) { + [tester tapViewWithAccessibilityLabel:@"interstitial"]; + } +} + +- (void)adWillLeaveApplication:(id)ad{ + [self.expectation fulfill]; +} + +@end From 5fac338cf71a25a844d017f51b7f47d661d68956 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Tue, 1 Dec 2015 11:40:26 +0530 Subject: [PATCH 34/92] Updated with Copyright Info --- .../project.pbxproj | 22 +++- .../DisplayVideoAd/DisplayVideoAd.h | 23 ++-- .../DisplayVideoAd/DisplayVideoAd.m | 23 ++-- .../OpenInBrowser/OpenInInAppBrowser.h | 23 ++-- .../OpenInBrowser/OpenInInAppBrowser.m | 24 ++-- .../OpenInBrowser/OpenInNativeBrowser.h | 23 ++-- .../OpenInBrowser/OpenInNativeBrowser.m | 24 ++-- .../VideoClicks/CloseVideoTest.h | 23 ++-- .../VideoClicks/CloseVideoTest.m | 24 ++-- .../VideoClicks/PlayerClickTest.h | 23 ++-- .../VideoClicks/PlayerClickTest.m | 24 ++-- .../VideoClicks/VolumeClickTest.h | 23 ++-- .../VideoClicks/VolumeClickTest.m | 24 ++-- tests/NewTestApp.xcodeproj/project.pbxproj | 113 ++++++++++++++++++ .../xcschemes/NewTestApp.xcscheme | 20 ++++ tests/NewTestApp/Base.lproj/Main.storyboard | 6 +- 16 files changed, 355 insertions(+), 87 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj index 0eb85505e..e80535536 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj @@ -24,6 +24,8 @@ EFDD763B1C047BED0073ACC4 /* VolumeClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763A1C047BED0073ACC4 /* VolumeClickTest.m */; settings = {ASSET_TAGS = (); }; }; EFDD763E1C047D9B0073ACC4 /* PlayerClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763D1C047D9B0073ACC4 /* PlayerClickTest.m */; settings = {ASSET_TAGS = (); }; }; EFDD76411C047E7A0073ACC4 /* CloseVideoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD76401C047E7A0073ACC4 /* CloseVideoTest.m */; settings = {ASSET_TAGS = (); }; }; + EFF21EC71C0C60F100766443 /* OpenInInAppBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = EFF21EC61C0C60F100766443 /* OpenInInAppBrowser.m */; settings = {ASSET_TAGS = (); }; }; + EFF21ECA1C0C614400766443 /* OpenInNativeBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = EFF21EC91C0C614400766443 /* OpenInNativeBrowser.m */; settings = {ASSET_TAGS = (); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -208,6 +210,10 @@ EFDD763D1C047D9B0073ACC4 /* PlayerClickTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PlayerClickTest.m; path = VideoClicks/PlayerClickTest.m; sourceTree = ""; }; EFDD763F1C047E7A0073ACC4 /* CloseVideoTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CloseVideoTest.h; path = VideoClicks/CloseVideoTest.h; sourceTree = ""; }; EFDD76401C047E7A0073ACC4 /* CloseVideoTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CloseVideoTest.m; path = VideoClicks/CloseVideoTest.m; sourceTree = ""; }; + EFF21EC51C0C60F100766443 /* OpenInInAppBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenInInAppBrowser.h; path = OpenInBrowser/OpenInInAppBrowser.h; sourceTree = ""; }; + EFF21EC61C0C60F100766443 /* OpenInInAppBrowser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OpenInInAppBrowser.m; path = OpenInBrowser/OpenInInAppBrowser.m; sourceTree = ""; }; + EFF21EC81C0C614400766443 /* OpenInNativeBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenInNativeBrowser.h; path = OpenInBrowser/OpenInNativeBrowser.h; sourceTree = ""; }; + EFF21EC91C0C614400766443 /* OpenInNativeBrowser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OpenInNativeBrowser.m; path = OpenInBrowser/OpenInNativeBrowser.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -245,6 +251,7 @@ 4960078D1BFED9B100B50A1F /* InterstitialUnifiedDemandTests */ = { isa = PBXGroup; children = ( + EFF21EAB1C0C5B0F00766443 /* OpenClickInBrowser */, 496007901BFED9B100B50A1F /* Info.plist */, EFDD76351C0478BC0073ACC4 /* VideoClicks */, 4960079C1BFEDAFE00B50A1F /* DisplayVideoAd */, @@ -336,6 +343,17 @@ name = VideoClicks; sourceTree = ""; }; + EFF21EAB1C0C5B0F00766443 /* OpenClickInBrowser */ = { + isa = PBXGroup; + children = ( + EFF21EC51C0C60F100766443 /* OpenInInAppBrowser.h */, + EFF21EC61C0C60F100766443 /* OpenInInAppBrowser.m */, + EFF21EC81C0C614400766443 /* OpenInNativeBrowser.h */, + EFF21EC91C0C614400766443 /* OpenInNativeBrowser.m */, + ); + name = OpenClickInBrowser; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -381,7 +399,7 @@ isa = PBXProject; attributes = { LastUpgradeCheck = 0700; - ORGANIZATIONNAME = AppNexus; + ORGANIZATIONNAME = "APPNEXUS INC"; TargetAttributes = { 4960078B1BFED9B100B50A1F = { CreatedOnToolsVersion = 7.0; @@ -602,10 +620,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + EFF21ECA1C0C614400766443 /* OpenInNativeBrowser.m in Sources */, EFDD76411C047E7A0073ACC4 /* CloseVideoTest.m in Sources */, EFDD763B1C047BED0073ACC4 /* VolumeClickTest.m in Sources */, 4960079B1BFEDAF400B50A1F /* DisplayVideoAd.m in Sources */, EFDD763E1C047D9B0073ACC4 /* PlayerClickTest.m in Sources */, + EFF21EC71C0C60F100766443 /* OpenInInAppBrowser.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.h index 91ed6a7f9..3bb93be01 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.h +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.h @@ -1,10 +1,19 @@ -// -// DisplayVideoAd.h -// InterstitialUnifiedDemand -// -// Created by Deepak.Badiger on 20/11/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ #import diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m index 3162d0fb8..fb09db93a 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m @@ -1,10 +1,19 @@ -// -// DisplayVideoAd.m -// InterstitialUnifiedDemand -// -// Created by Deepak.Badiger on 20/11/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ #define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] #define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.h index b08174bc1..524879643 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.h +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.h @@ -1,10 +1,19 @@ -// -// OpenInInAppBrowser.h -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/30/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ #import diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m index c66064219..4b3e76fad 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m @@ -1,10 +1,20 @@ -// -// CountdownTimerTest.m -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/30/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + #define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] #define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.h index e81e42a4d..353ecb6ca 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.h +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.h @@ -1,10 +1,19 @@ -// -// OpenInNativeBrowser.h -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/30/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ #import diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m index 092d78064..577d55a97 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m @@ -1,10 +1,20 @@ -// -// CountdownTimerTest.m -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/30/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + #define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] #define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.h index 4da4527d4..e73c86bb0 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.h +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.h @@ -1,10 +1,19 @@ -// -// CloseVideoTest.h -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/24/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ #import diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m index ba54c80d6..b29c8ba20 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m @@ -1,10 +1,20 @@ -// -// CloseVideoTest.m -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/24/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + #define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] #define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.h index c70c67a2f..e72a0e2b7 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.h +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.h @@ -1,10 +1,19 @@ -// -// PlayerClickTest.h -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/24/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ #import diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m index b49fcabf4..97a809b54 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m @@ -1,10 +1,20 @@ -// -// PlayerClickTest.m -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/24/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + #define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] #define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.h index 937dd4199..fc8876c28 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.h +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.h @@ -1,10 +1,19 @@ -// -// VolumeClickTest.h -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/24/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ #import diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m index ff549874f..d1690cf24 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m @@ -1,10 +1,20 @@ -// -// VolumeClickTest.m -// InterstitialUnifiedDemand -// -// Created by Chandrachud Patil on 11/24/15. -// Copyright © 2015 AppNexus. All rights reserved. -// +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + #define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] #define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] diff --git a/tests/NewTestApp.xcodeproj/project.pbxproj b/tests/NewTestApp.xcodeproj/project.pbxproj index 990a44921..c1d883977 100644 --- a/tests/NewTestApp.xcodeproj/project.pbxproj +++ b/tests/NewTestApp.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 4956B69A1BFDA49700E0C0EB /* InterstitialUnifiedDemand.m in Sources */ = {isa = PBXBuildFile; fileRef = 4956B6991BFDA49700E0C0EB /* InterstitialUnifiedDemand.m */; }; 8A0AA45519DB2CB4005EC52C /* ANAdFetcher+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009FD19DB1E150090EBED /* ANAdFetcher+ANTest.m */; }; 8A0AA45619DB2CB4005EC52C /* ANAdView+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009FF19DB1E150090EBED /* ANAdView+ANTest.m */; }; 8A0AA45719DB2CB4005EC52C /* ANAdWebViewController+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0119DB1E150090EBED /* ANAdWebViewController+ANTest.m */; }; @@ -210,6 +211,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 4956B69C1BFDA49700E0C0EB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AD01825199932F9007874BA /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8AD0182C199932F9007874BA; + remoteInfo = NewTestApp; + }; 8A1482761AD344B70046F1B9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; @@ -514,6 +522,9 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 4956B6971BFDA49700E0C0EB /* InterstitialUnifiedDemand.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = InterstitialUnifiedDemand.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 4956B6991BFDA49700E0C0EB /* InterstitialUnifiedDemand.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterstitialUnifiedDemand.m; sourceTree = ""; }; + 4956B69B1BFDA49700E0C0EB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8A0AA46319DB30A2005EC52C /* ANAdResponseTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdResponseTestCase.m; sourceTree = ""; }; 8A0AA46419DB30A2005EC52C /* ANAdViewMRAIDCreativeTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdViewMRAIDCreativeTestCase.m; sourceTree = ""; }; 8A0AA46519DB30A2005EC52C /* ANBannerAdViewTransitionsTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANBannerAdViewTransitionsTestCase.m; sourceTree = ""; }; @@ -756,6 +767,13 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 4956B6941BFDA49700E0C0EB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8A549E961A706BA6009F797A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -852,6 +870,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 4956B6981BFDA49700E0C0EB /* InterstitialUnifiedDemand */ = { + isa = PBXGroup; + children = ( + 4956B6991BFDA49700E0C0EB /* InterstitialUnifiedDemand.m */, + 4956B69B1BFDA49700E0C0EB /* Info.plist */, + ); + path = InterstitialUnifiedDemand; + sourceTree = ""; + }; 8A0AA46219DB30A2005EC52C /* Tests */ = { isa = PBXGroup; children = ( @@ -1271,6 +1298,7 @@ children = ( 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */, 8AB5324A19F0464B00CA4427 /* KIF.xcodeproj */, + 4956B6981BFDA49700E0C0EB /* InterstitialUnifiedDemand */, 8A65BE8A19A4FCDF00A72571 /* Frameworks */, 8AA009B719DB1B1F0090EBED /* MediationAdapterApp */, 8AA009DE19DB1CEC0090EBED /* MediationAdapterAppTests */, @@ -1296,6 +1324,7 @@ 8AB387A519DB0CA8006F9E15 /* OriginalUnitTestApp.app */, 8AB387BD19DB0CA8006F9E15 /* OriginalUnitTestAppTests.xctest */, 8A549E991A706BA6009F797A /* NativeUnitTests.xctest */, + 4956B6971BFDA49700E0C0EB /* InterstitialUnifiedDemand.xctest */, ); name = Products; sourceTree = ""; @@ -1370,6 +1399,24 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 4956B6961BFDA49700E0C0EB /* InterstitialUnifiedDemand */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4956B69E1BFDA49800E0C0EB /* Build configuration list for PBXNativeTarget "InterstitialUnifiedDemand" */; + buildPhases = ( + 4956B6931BFDA49700E0C0EB /* Sources */, + 4956B6941BFDA49700E0C0EB /* Frameworks */, + 4956B6951BFDA49700E0C0EB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 4956B69D1BFDA49700E0C0EB /* PBXTargetDependency */, + ); + name = InterstitialUnifiedDemand; + productName = InterstitialUnifiedDemand; + productReference = 4956B6971BFDA49700E0C0EB /* InterstitialUnifiedDemand.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; 8A549E981A706BA6009F797A /* NativeUnitTests */ = { isa = PBXNativeTarget; buildConfigurationList = 8A549EAC1A706BA6009F797A /* Build configuration list for PBXNativeTarget "NativeUnitTests" */; @@ -1518,6 +1565,11 @@ LastUpgradeCheck = 0700; ORGANIZATIONNAME = AppNexus; TargetAttributes = { + 4956B6961BFDA49700E0C0EB = { + CreatedOnToolsVersion = 7.0; + DevelopmentTeam = TBFU6QDZMS; + TestTargetID = 8AD0182C199932F9007874BA; + }; 8A549E981A706BA6009F797A = { CreatedOnToolsVersion = 6.2; TestTargetID = 8A9F94BF19D1C37700AB739F; @@ -1578,6 +1630,7 @@ 8A549E981A706BA6009F797A /* NativeUnitTests */, 8AB387A419DB0CA8006F9E15 /* OriginalUnitTestApp */, 8AB387BC19DB0CA8006F9E15 /* OriginalUnitTestAppTests */, + 4956B6961BFDA49700E0C0EB /* InterstitialUnifiedDemand */, ); }; /* End PBXProject section */ @@ -1747,6 +1800,13 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ + 4956B6951BFDA49700E0C0EB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8A549E971A706BA6009F797A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1867,6 +1927,14 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 4956B6931BFDA49700E0C0EB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4956B69A1BFDA49700E0C0EB /* InterstitialUnifiedDemand.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8A549E951A706BA6009F797A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2007,6 +2075,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 4956B69D1BFDA49700E0C0EB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8AD0182C199932F9007874BA /* NewTestApp */; + targetProxy = 4956B69C1BFDA49700E0C0EB /* PBXContainerItemProxy */; + }; 8A4B96CC1ACDEE0B00FFEB2A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ANSDKInMobiAdapter; @@ -2145,6 +2218,37 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 4956B69F1BFDA49800E0C0EB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = InterstitialUnifiedDemand/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.appNexus.InterstitialUnifiedDemand; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_TARGET_NAME = NewTestApp; + USES_XCTRUNNER = YES; + }; + name = Debug; + }; + 4956B6A01BFDA49800E0C0EB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = InterstitialUnifiedDemand/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.appNexus.InterstitialUnifiedDemand; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_TARGET_NAME = NewTestApp; + USES_XCTRUNNER = YES; + }; + name = Release; + }; 8A549EA11A706BA6009F797A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2548,6 +2652,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 4956B69E1BFDA49800E0C0EB /* Build configuration list for PBXNativeTarget "InterstitialUnifiedDemand" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4956B69F1BFDA49800E0C0EB /* Debug */, + 4956B6A01BFDA49800E0C0EB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 8A549EAC1A706BA6009F797A /* Build configuration list for PBXNativeTarget "NativeUnitTests" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/NewTestApp.xcscheme b/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/NewTestApp.xcscheme index b58bc50ef..d203d6d0e 100644 --- a/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/NewTestApp.xcscheme +++ b/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/NewTestApp.xcscheme @@ -52,6 +52,26 @@ ReferencedContainer = "container:NewTestApp.xcodeproj"> + + + + + + + + - + - + + @@ -15,6 +16,7 @@ + From 80aa63d1ac318cefbfbc2caaa397467454df6842 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Tue, 1 Dec 2015 16:12:27 +0530 Subject: [PATCH 35/92] implement landingPageLoadsInBackground for delayLoading of Browser --- sdk/internal/ANVideoPlayerViewController.m | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 6204e9574..1355dbfd1 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -116,6 +116,16 @@ - (BOOL)prefersStatusBarHidden { return YES; } +- (BOOL) landingPageLoadsInBackground{ + BOOL returnVal = NO; + + if ([self.delegate respondsToSelector:@selector(landingPageLoadsInBackground)]) { + returnVal = [self.delegate landingPageLoadsInBackground]; + } + + return returnVal; +} + #pragma mark - Setup - (void)setupPlayer { @@ -354,10 +364,12 @@ - (void)handleSingleTapOnPlayerViewWithGestureRecognizer:(UITapGestureRecognizer - (void)openClickInBrowserWithURL:(NSURL *)url { + BOOL canLandingPageLoadInBackground = [self landingPageLoadsInBackground]; + if (!self.openClicksInNativeBrowser) { _browserController = [[ANBrowserViewController alloc] initWithURL:url delegate:self - delayPresentationForLoad:NO]; + delayPresentationForLoad:canLandingPageLoadInBackground]; if (!self.browserController) { ANLogDebug(@"Failed to initialize the browser."); } From 2986956835cc190ee9d26d464c4f772dea005ce1 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Wed, 2 Dec 2015 15:20:09 +0530 Subject: [PATCH 36/92] Updated test for clicks Modified for clicks added adWillLeaveApplication delegate for notifying app while opening in native browsers. --- .../ViewController.m | 6 +++- .../OpenInBrowser/OpenInInAppBrowser.m | 33 +++++++++++-------- .../OpenInBrowser/OpenInNativeBrowser.m | 23 +++++++------ .../VideoClicks/CloseVideoTest.m | 2 +- sdk/internal/ANVideoPlayerViewController.m | 5 +++ 5 files changed, 42 insertions(+), 27 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m index 20426e4fc..7dcfb7f44 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m @@ -26,7 +26,7 @@ - (void)viewDidLoad { // HTML Placement // self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"2140061"]; self.interstitialAd.closeDelay = 5.0; - self.interstitialAd.opensInNativeBrowser = YES; + self.interstitialAd.opensInNativeBrowser = NO; self.interstitialAd.shouldServePublicServiceAnnouncements = YES; self.interstitialAd.delegate = self; self.interstitialAd.videoAdDelegate = self; @@ -113,4 +113,8 @@ - (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ + NSLog(@"App: ad will leave application."); +} + @end \ No newline at end of file diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m index 4b3e76fad..56b034aac 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m @@ -24,25 +24,21 @@ @interface OpenInInAppBrowser(){ ANInterstitialAd *interstitialAdView; + BOOL isDelegateFired; } @property (nonatomic, strong) XCTestExpectation *expectation; -@property (nonatomic) int tapsRequired; @end @implementation OpenInInAppBrowser - (void)setUp{ - UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; - for (UIView *subView in view.subviews) { - if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { - break; - } - } + isDelegateFired = NO; + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; - int breakCounter = 10; + int breakCounter = 5; while (interstitial && breakCounter--) { [self performClickOnInterstitial]; @@ -58,16 +54,20 @@ - (void)setUp{ } } +static dispatch_semaphore_t waitForDelegateToFire; + - (void) test1OpenClickInInAppBrowser{ - interstitialAdView.opensInNativeBrowser = NO; + waitForDelegateToFire = dispatch_semaphore_create(0); + + [self performSelector:@selector(notifySemaphoreForRelease) withObject:nil afterDelay:5.0]; [tester tapViewWithAccessibilityLabel:@"player"]; - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; - [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - XCTAssertFalse(error, @"Click opened in native browser. failed case."); - }]; + dispatch_semaphore_wait(waitForDelegateToFire, dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC)); + + XCTAssertFalse(isDelegateFired, @"Click opened in Native Browser. failed case."); + } -(void) setupDelegatesForVideo{ @@ -76,6 +76,7 @@ -(void) setupDelegatesForVideo{ if (controller) { SEL aSelector = NSSelectorFromString(@"interstitialAd"); interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.opensInNativeBrowser = NO; interstitialAdView.delegate = self; interstitialAdView.videoAdDelegate = self; } @@ -88,7 +89,13 @@ - (void) performClickOnInterstitial{ } - (void)adWillLeaveApplication:(id)ad{ + NSLog(@"Test: ad will leave application."); + isDelegateFired = YES; [self.expectation fulfill]; } +- (void) notifySemaphoreForRelease{ + dispatch_semaphore_signal(waitForDelegateToFire); +} + @end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m index 577d55a97..93b77dfcb 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m @@ -24,25 +24,21 @@ @interface OpenInNativeBrowser(){ ANInterstitialAd *interstitialAdView; + BOOL isDelegateFired; } @property (nonatomic, strong) XCTestExpectation *expectation; -@property (nonatomic) int tapsRequired; @end @implementation OpenInNativeBrowser - (void)setUp{ - UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; - for (UIView *subView in view.subviews) { - if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { - break; - } - } + isDelegateFired = NO; + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; - int breakCounter = 10; + int breakCounter = 5; while (interstitial && breakCounter--) { [self performClickOnInterstitial]; @@ -60,14 +56,15 @@ - (void)setUp{ - (void) test1OpenClickInNativeBrowser{ - interstitialAdView.opensInNativeBrowser = YES; + self.expectation = [self expectationWithDescription:@"Waiting for delegates to fire."]; [tester tapViewWithAccessibilityLabel:@"player"]; - - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - XCTAssertTrue(error, @"Click opened in In-App browser. failed case."); + NSLog(@"isDelegateFired: %i", isDelegateFired); + XCTAssertTrue(isDelegateFired, @"Click opened in In-App Browser."); }]; + } -(void) setupDelegatesForVideo{ @@ -88,6 +85,8 @@ - (void) performClickOnInterstitial{ } - (void)adWillLeaveApplication:(id)ad{ + NSLog(@"Test: ad will leave application"); + isDelegateFired = YES; [self.expectation fulfill]; } diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m index b29c8ba20..aee4d8122 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m @@ -61,7 +61,7 @@ - (void)setUp{ - (void) test1ClickOnClose{ [tester waitForViewWithAccessibilityLabel:@"close button"]; - [tester waitForTimeInterval:10.0]; + [tester waitForTimeInterval:15.0]; [tester tapViewWithAccessibilityLabel:@"close button"]; self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 8a433e322..029298132 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -364,6 +364,11 @@ - (void)openClickInBrowserWithURL:(NSURL *)url { ANLogDebug(@"Failed to initialize the browser."); } } else{ + if ([self.delegate conformsToProtocol:@protocol(ANAdViewInternalDelegate)]) { + if([self.delegate respondsToSelector:@selector(adWillLeaveApplication)]){ + [self.delegate adWillLeaveApplication]; + } + } [self pause]; [[UIApplication sharedApplication] openURL:url]; } From 81e86c940b5e99e4e1c3b694e8af79ba6c4f4f4d Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 4 Dec 2015 16:00:36 -0500 Subject: [PATCH 37/92] MS-1837 Added namespaces in ANGlobal.h --- .../project.pbxproj | 2 -- sdk/VastDataModel/ANInLine.m | 8 ++++---- sdk/VastDataModel/ANWrapper.m | 2 +- sdk/VastDataModel/Inline/ANAdSystem.m | 2 +- sdk/VastDataModel/Inline/ANImpression.m | 2 +- sdk/VastDataModel/Inline/Creatives/ANLinear.m | 4 ++-- .../Inline/Creatives/ANStaticResource.m | 2 +- sdk/VastDataModel/Inline/Creatives/ANTracking.m | 2 +- .../Inline/Creatives/CompanionAds/AnCompanion.m | 10 +++++----- .../Inline/Creatives/Linear/ANVideoClicks.m | 4 ++-- .../Creatives/Linear/MediaFiles/ANMediaFile.m | 2 +- .../Creatives/Linear/VideoClicks/ANCustomClick.m | 2 +- .../Inline/Creatives/NonLinearAds/ANNonLinear.m | 8 ++++---- sdk/internal/ANGlobal.h | 13 ++++++------- 14 files changed, 30 insertions(+), 33 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj index 51a7b440f..211200e3b 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj @@ -11,7 +11,6 @@ 8A00B20D1BF1634000818A2A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2021BF1633F00818A2A /* Assets.xcassets */; }; 8A00B20E1BF1634000818A2A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2031BF1633F00818A2A /* LaunchScreen.storyboard */; }; 8A00B20F1BF1634000818A2A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2051BF1634000818A2A /* Main.storyboard */; }; - 8A00B2101BF1634000818A2A /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2071BF1634000818A2A /* Info.plist */; }; 8A00B2111BF1634000818A2A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B2081BF1634000818A2A /* main.m */; }; 8A00B2121BF1634000818A2A /* nqr@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2091BF1634000818A2A /* nqr@2x.png */; }; 8A00B2131BF1634000818A2A /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B20B1BF1634000818A2A /* ViewController.m */; }; @@ -415,7 +414,6 @@ 8A00B20E1BF1634000818A2A /* LaunchScreen.storyboard in Resources */, 8A00B20D1BF1634000818A2A /* Assets.xcassets in Resources */, 8A0D45491BF1618D0097D925 /* ANSDKResources.bundle in Resources */, - 8A00B2101BF1634000818A2A /* Info.plist in Resources */, 8A00B2121BF1634000818A2A /* nqr@2x.png in Resources */, 8A00B20F1BF1634000818A2A /* Main.storyboard in Resources */, ); diff --git a/sdk/VastDataModel/ANInLine.m b/sdk/VastDataModel/ANInLine.m index d73598e0d..4b32192fc 100644 --- a/sdk/VastDataModel/ANInLine.m +++ b/sdk/VastDataModel/ANInLine.m @@ -32,22 +32,22 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ ANXMLElement *adTitleElement = [ANXML childElementNamed:@"AdTitle" parentElement:element]; if (adTitleElement) { - self.adTitle = String(adTitleElement->text); + self.adTitle = ANString(adTitleElement->text); } ANXMLElement *descElement = [ANXML childElementNamed:@"Description" parentElement:element]; if (descElement) { - self.adDescription = String(descElement->text); + self.adDescription = ANString(descElement->text); } ANXMLElement *surveyElement = [ANXML childElementNamed:@"Survey" parentElement:element]; if (surveyElement) { - self.adSurvey = String(surveyElement->text); + self.adSurvey = ANString(surveyElement->text); } ANXMLElement *errorElement = [ANXML childElementNamed:@"Error" parentElement:element]; if (errorElement) { - self.adError = String(errorElement->text); + self.adError = ANString(errorElement->text); } ANXMLElement *impressionElement = [ANXML childElementNamed:@"Impression" parentElement:element]; diff --git a/sdk/VastDataModel/ANWrapper.m b/sdk/VastDataModel/ANWrapper.m index 436416bb6..de38dc002 100644 --- a/sdk/VastDataModel/ANWrapper.m +++ b/sdk/VastDataModel/ANWrapper.m @@ -27,7 +27,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ if (self) { ANXMLElement *vastAdTagURIElement = [ANXML childElementNamed:@"VASTAdTagURI" parentElement:element]; if (vastAdTagURIElement) { - self.vastAdTagURI = String(vastAdTagURIElement->text); + self.vastAdTagURI = ANString(vastAdTagURIElement->text); } } diff --git a/sdk/VastDataModel/Inline/ANAdSystem.m b/sdk/VastDataModel/Inline/ANAdSystem.m index b91706b01..99823f924 100644 --- a/sdk/VastDataModel/Inline/ANAdSystem.m +++ b/sdk/VastDataModel/Inline/ANAdSystem.m @@ -25,7 +25,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ self = [super init]; if (self) { - self.value = String(element->text); + self.value = ANString(element->text); self.version = [ANXML valueOfAttributeNamed:@"version" forElement:element]; } diff --git a/sdk/VastDataModel/Inline/ANImpression.m b/sdk/VastDataModel/Inline/ANImpression.m index 973823517..1949a5cc0 100644 --- a/sdk/VastDataModel/Inline/ANImpression.m +++ b/sdk/VastDataModel/Inline/ANImpression.m @@ -25,7 +25,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ self = [super init]; if (self) { - self.value = String(element->text); + self.value = ANString(element->text); self.impressionId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; } diff --git a/sdk/VastDataModel/Inline/Creatives/ANLinear.m b/sdk/VastDataModel/Inline/Creatives/ANLinear.m index 85d9ec124..c168d3b15 100644 --- a/sdk/VastDataModel/Inline/Creatives/ANLinear.m +++ b/sdk/VastDataModel/Inline/Creatives/ANLinear.m @@ -31,7 +31,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ ANXMLElement *durationElement = [ANXML childElementNamed:@"Duration" parentElement:element]; if (durationElement) { - self.duration = String(durationElement->text); + self.duration = ANString(durationElement->text); } ANXMLElement *trackingElements = [ANXML childElementNamed:@"TrackingEvents" parentElement:element]; @@ -49,7 +49,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ ANXMLElement *paramElement = [ANXML childElementNamed:@"AdParameters" parentElement:element]; if (paramElement) { - NSString *adParam = String(paramElement->text); + NSString *adParam = ANString(paramElement->text); if (adParam) { self.adParameters = adParam; } diff --git a/sdk/VastDataModel/Inline/Creatives/ANStaticResource.m b/sdk/VastDataModel/Inline/Creatives/ANStaticResource.m index 8b263dd62..6f3946c21 100644 --- a/sdk/VastDataModel/Inline/Creatives/ANStaticResource.m +++ b/sdk/VastDataModel/Inline/Creatives/ANStaticResource.m @@ -25,7 +25,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ self = [super init]; if (self) { - self.staticResourceURI = String(element->text); + self.staticResourceURI = ANString(element->text); self.creativeType = [ANXML valueOfAttributeNamed:@"CreativeType" forElement:element]; } diff --git a/sdk/VastDataModel/Inline/Creatives/ANTracking.m b/sdk/VastDataModel/Inline/Creatives/ANTracking.m index 1fd074244..eda6aeca2 100644 --- a/sdk/VastDataModel/Inline/Creatives/ANTracking.m +++ b/sdk/VastDataModel/Inline/Creatives/ANTracking.m @@ -24,7 +24,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ self = [super init]; if (self) { - NSString *trackingURI = String(element->text); + NSString *trackingURI = ANString(element->text); if (trackingURI) { self.trackingURI = trackingURI; } diff --git a/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.m b/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.m index 7daad53fb..18ffacb35 100644 --- a/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.m +++ b/sdk/VastDataModel/Inline/Creatives/CompanionAds/AnCompanion.m @@ -38,12 +38,12 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ ANXMLElement *iFrameResourceElement = [ANXML childElementNamed:@"IFrameResource" parentElement:element]; if (iFrameResourceElement) { - self.iFrameResource = String(iFrameResourceElement->text); + self.iFrameResource = ANString(iFrameResourceElement->text); } ANXMLElement *htmlResourceElement = [ANXML childElementNamed:@"HTMLResource" parentElement:element]; if (htmlResourceElement) { - self.htmlResource = String(htmlResourceElement->text); + self.htmlResource = ANString(htmlResourceElement->text); } ANXMLElement *trackingElements = [ANXML childElementNamed:@"TrackingEvents" parentElement:element]; @@ -61,17 +61,17 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ ANXMLElement *companionClickThroughElement = [ANXML childElementNamed:@"CompanionClickThrough" parentElement:element]; if (companionClickThroughElement) { - self.clickThroughURI = String(companionClickThroughElement->text); + self.clickThroughURI = ANString(companionClickThroughElement->text); } ANXMLElement *altTextElement = [ANXML childElementNamed:@"AltText" parentElement:element]; if (altTextElement) { - self.altText = String(altTextElement->text); + self.altText = ANString(altTextElement->text); } ANXMLElement *adParametersElement = [ANXML childElementNamed:@"AdParameters" parentElement:element]; if (adParametersElement) { - self.adParameters = String(adParametersElement->text); + self.adParameters = ANString(adParametersElement->text); } } diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.m b/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.m index c8cef0a55..622adc7d2 100644 --- a/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.m +++ b/sdk/VastDataModel/Inline/Creatives/Linear/ANVideoClicks.m @@ -27,12 +27,12 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ if (self) { ANXMLElement *clickThrough = [ANXML childElementNamed:@"ClickThrough" parentElement:element]; if (clickThrough) { - self.clickThrough = String(clickThrough->text); + self.clickThrough = ANString(clickThrough->text); } ANXMLElement *clickTracking = [ANXML childElementNamed:@"ClickTracking" parentElement:element]; if (clickTracking) { - self.clickTracking = String(clickTracking->text); + self.clickTracking = ANString(clickTracking->text); } ANXMLElement *customClick = [ANXML childElementNamed:@"CustomClick" parentElement:element]; diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.m b/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.m index d6b98c834..4e0071738 100644 --- a/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.m +++ b/sdk/VastDataModel/Inline/Creatives/Linear/MediaFiles/ANMediaFile.m @@ -25,7 +25,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ self = [super init]; if (self) { - self.fileURI = String(element->text); + self.fileURI = ANString(element->text); self.fileId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; self.deliveryMethod = [ANXML valueOfAttributeNamed:@"delivery" forElement:element]; self.fileType = [ANXML valueOfAttributeNamed:@"type" forElement:element]; diff --git a/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.m b/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.m index 4c82b6ba0..8e5bef595 100644 --- a/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.m +++ b/sdk/VastDataModel/Inline/Creatives/Linear/VideoClicks/ANCustomClick.m @@ -26,7 +26,7 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ self = [super init]; if (self) { - self.customClickURI = String(element->text); + self.customClickURI = ANString(element->text); NSString *customClickId = [ANXML valueOfAttributeNamed:@"id" forElement:element]; if (customClickId) { diff --git a/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.m b/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.m index 727ce2aff..84756b7f1 100644 --- a/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.m +++ b/sdk/VastDataModel/Inline/Creatives/NonLinearAds/ANNonLinear.m @@ -41,22 +41,22 @@ - (instancetype)initWithXMLElement:(ANXMLElement *)element{ ANXMLElement *iFrameResourceElement = [ANXML childElementNamed:@"IFrameResource" parentElement:element]; if (iFrameResourceElement) { - self.iFrameResource = String(iFrameResourceElement->text); + self.iFrameResource = ANString(iFrameResourceElement->text); } ANXMLElement *htmlResourceElement = [ANXML childElementNamed:@"HTMLResource" parentElement:element]; if (htmlResourceElement) { - self.htmlResource = String(htmlResourceElement->text); + self.htmlResource = ANString(htmlResourceElement->text); } ANXMLElement *clickThroughElement = [ANXML nextSiblingNamed:@"ClickThrough" searchFromElement:element]; if (clickThroughElement) { - self.clickThroughURI = String(clickThroughElement->text); + self.clickThroughURI = ANString(clickThroughElement->text); } ANXMLElement *adParametersElement = [ANXML nextSiblingNamed:@"AdParameters" searchFromElement:element]; if (adParametersElement) { - self.adParameters = String(adParametersElement->text); + self.adParameters = ANString(adParametersElement->text); } } diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index 9f2c9c22e..359606229 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -17,12 +17,11 @@ #import //Version Check -#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) -#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) -#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) -#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) -#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) - +#define AN_SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) +#define AN_SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) +#define AN_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) +#define AN_SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) +#define AN_SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) // Production #define AN_BASE_URL @"http://mediation.adnxs.com/" @@ -50,7 +49,7 @@ #define APPNEXUS_LEADERBOARD_SIZE CGSizeMake(728, 90) #define APPNEXUS_WIDE_SKYSCRAPER_SIZE CGSizeMake(160, 600) -#define String(charValue) [NSString stringWithCString:charValue encoding:NSUTF8StringEncoding]; +#define ANString(charValue) [NSString stringWithCString:charValue encoding:NSUTF8StringEncoding]; #pragma mark Constants From 8af9742a38f10e262cdc16576434727c090d6945 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Mon, 7 Dec 2015 19:38:56 +0530 Subject: [PATCH 38/92] Updated test cases --- .../project.pbxproj | 6 + .../DisplayVideoAd/DisplayVideoAd.m | 119 ++++----------- .../DisplayVideoAd/PlayerDelegateTests.h | 22 +++ .../DisplayVideoAd/PlayerDelegateTests.m | 137 ++++++++++++++++++ .../OpenInBrowser/OpenInInAppBrowser.m | 6 +- .../OpenInBrowser/OpenInNativeBrowser.m | 7 +- .../VideoClicks/CloseVideoTest.m | 24 +-- .../VideoClicks/PlayerClickTest.m | 21 +-- .../VideoClicks/VolumeClickTest.m | 86 +++++++---- 9 files changed, 262 insertions(+), 166 deletions(-) create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.h create mode 100644 examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj index e80535536..3187b3a78 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj @@ -20,6 +20,7 @@ 8A00B2131BF1634000818A2A /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B20B1BF1634000818A2A /* ViewController.m */; }; 8A0D45481BF161870097D925 /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A0D45271BF1615D0097D925 /* libANSDK.a */; }; 8A0D45491BF1618D0097D925 /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A0D45291BF1615D0097D925 /* ANSDKResources.bundle */; }; + EF8E4FDA1C101C8600FD711C /* PlayerDelegateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EF8E4FD91C101C8600FD711C /* PlayerDelegateTests.m */; settings = {ASSET_TAGS = (); }; }; EFAA6F9E1C04270700C3C83B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFAA6F9D1C04270700C3C83B /* CoreGraphics.framework */; }; EFDD763B1C047BED0073ACC4 /* VolumeClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763A1C047BED0073ACC4 /* VolumeClickTest.m */; settings = {ASSET_TAGS = (); }; }; EFDD763E1C047D9B0073ACC4 /* PlayerClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763D1C047D9B0073ACC4 /* PlayerClickTest.m */; settings = {ASSET_TAGS = (); }; }; @@ -203,6 +204,8 @@ 8A00B20B1BF1634000818A2A /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 8A0D45121BF1615D0097D925 /* ANSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ANSDK.xcodeproj; path = ../../BinaryProjects/ANSDK.xcodeproj; sourceTree = ""; }; 8A87BEE11BD941E900281EA9 /* InterstitialUnifiedDemand.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = InterstitialUnifiedDemand.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EF8E4FD81C101C8600FD711C /* PlayerDelegateTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlayerDelegateTests.h; path = DisplayVideoAd/PlayerDelegateTests.h; sourceTree = ""; }; + EF8E4FD91C101C8600FD711C /* PlayerDelegateTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PlayerDelegateTests.m; path = DisplayVideoAd/PlayerDelegateTests.m; sourceTree = ""; }; EFAA6F9D1C04270700C3C83B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; EFDD76391C047BED0073ACC4 /* VolumeClickTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VolumeClickTest.h; path = VideoClicks/VolumeClickTest.h; sourceTree = ""; }; EFDD763A1C047BED0073ACC4 /* VolumeClickTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VolumeClickTest.m; path = VideoClicks/VolumeClickTest.m; sourceTree = ""; }; @@ -264,6 +267,8 @@ children = ( 496007991BFEDAF400B50A1F /* DisplayVideoAd.h */, 4960079A1BFEDAF400B50A1F /* DisplayVideoAd.m */, + EF8E4FD81C101C8600FD711C /* PlayerDelegateTests.h */, + EF8E4FD91C101C8600FD711C /* PlayerDelegateTests.m */, ); name = DisplayVideoAd; sourceTree = ""; @@ -623,6 +628,7 @@ EFF21ECA1C0C614400766443 /* OpenInNativeBrowser.m in Sources */, EFDD76411C047E7A0073ACC4 /* CloseVideoTest.m in Sources */, EFDD763B1C047BED0073ACC4 /* VolumeClickTest.m in Sources */, + EF8E4FDA1C101C8600FD711C /* PlayerDelegateTests.m in Sources */, 4960079B1BFEDAF400B50A1F /* DisplayVideoAd.m in Sources */, EFDD763E1C047D9B0073ACC4 /* PlayerClickTest.m in Sources */, EFF21EC71C0C60F100766443 /* OpenInInAppBrowser.m in Sources */, diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m index fb09db93a..a1424ad59 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m @@ -26,33 +26,22 @@ @interface DisplayVideoAd(){ ANInterstitialAd *interstitialAdView; } -@property (nonatomic, strong) XCTestExpectation *expectation; -@property (nonatomic) int tapsRequired; - @end @implementation DisplayVideoAd -- (void) test1DisplayAd{ - - self.tapsRequired = 2; - - UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; +- (void) test1SetUp{ - for (UIView *subView in view.subviews) { - if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { - break; - } - } - - int breakCounter = 10; + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + [self setupDelegatesForVideo]; + + int breakCounter = 5; while (interstitial && breakCounter--) { [self performClickOnInterstitial]; [tester waitForTimeInterval:2.0]; } - [self setupDelegatesForVideo]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { @@ -60,43 +49,34 @@ - (void) test1DisplayAd{ } } - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; - [self waitForExpectationsWithTimeout:100.0 handler:^(NSError * _Nullable error) { - if (error) { - NSLog(@"%@", error.description); - } - }]; - + XCTAssertNil(interstitial, @"Could not load video."); } - (void) test3ExistenceOfCloseCountDownTimerAtTopRight{ - if (!interstitial) { - [tester waitForViewWithAccessibilityLabel:@"player"]; - UIView *circularView = [tester waitForViewWithAccessibilityLabel:@"close button"]; - CGRect superViewFrame = circularView.superview.frame; - CGRect testFrame = CGRectMake(superViewFrame.size.width - 75, superViewFrame.origin.y, 50, 75); - XCTAssertTrue(CGRectContainsPoint(testFrame, circularView.frame.origin)); - } + XCTAssertNil(interstitial, @"Video could not be loaded."); + [tester waitForViewWithAccessibilityLabel:@"player"]; + UIView *circularView = [tester waitForViewWithAccessibilityLabel:@"close button"]; + CGRect superViewFrame = circularView.superview.frame; + CGRect testFrame = CGRectMake(superViewFrame.size.width - 75, superViewFrame.origin.y, 50, 75); + XCTAssertTrue(CGRectContainsPoint(testFrame, circularView.frame.origin)); } - (void) test2ExistenceOfVolumeView{ - if (!interstitial) { - [tester waitForViewWithAccessibilityLabel:@"player"]; - [tester waitForViewWithAccessibilityLabel:@"volume button"]; - } + XCTAssertNil(interstitial, @"Video could not be loaded."); + [tester waitForViewWithAccessibilityLabel:@"player"]; + [tester waitForViewWithAccessibilityLabel:@"volume button"]; } - (void) test4ExistenceOfVolumeButtonAtBottomRight{ - if (!interstitial) { - [tester waitForViewWithAccessibilityLabel:@"player"]; - UIView *volumeView = [tester waitForViewWithAccessibilityLabel:@"volume button"]; - CGRect superViewFrame = volumeView.superview.superview.frame; - CGRect testFrame = CGRectMake(superViewFrame.size.width - 75, superViewFrame.size.height-75, 50, 50); - - CGPoint point = [volumeView convertPoint:volumeView.superview.center toView:volumeView.superview]; - - XCTAssertTrue(CGRectContainsPoint(testFrame, point)); - } + XCTAssertNil(interstitial, @"Video could not be loaded."); + [tester waitForViewWithAccessibilityLabel:@"player"]; + UIView *volumeView = [tester waitForViewWithAccessibilityLabel:@"volume button"]; + CGRect superViewFrame = volumeView.superview.superview.frame; + CGRect testFrame = CGRectMake(superViewFrame.size.width - 75, superViewFrame.size.height-75, 50, 50); + + CGPoint point = [volumeView convertPoint:volumeView.superview.center toView:volumeView.superview]; + + XCTAssertTrue(CGRectContainsPoint(testFrame, point)); } -(void) setupDelegatesForVideo{ @@ -107,7 +87,6 @@ -(void) setupDelegatesForVideo{ interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; interstitialAdView.delegate = self; interstitialAdView.videoAdDelegate = self; - } } @@ -117,58 +96,12 @@ - (void) performClickOnInterstitial{ } } -- (void) performClickOnPlayer{ - [tester waitForViewWithAccessibilityLabel:@"countdown label"]; - [tester tapViewWithAccessibilityLabel:@"player"]; -} - - (void)adDidReceiveAd:(id)ad{ - self.tapsRequired--; NSLog(@"Test: ad received ad."); } -- (void)adStartedPlayingVideo:(id)ad{ - NSLog(@"Test: video ad started playing video."); - XCTAssertTrue(YES, @"Test: Ad Started Playing Delegate Fired"); -} - -- (void)adPausedVideo:(id)ad{ - NSLog(@"Test: video ad paused video."); - XCTAssertTrue(YES, @"Test: Ad Started Paused video."); -} - -- (void)adMuted:(BOOL)isMuted withAd:(id)ad{ - NSLog(@"Test: Ad Muted: %i", isMuted); - XCTAssertTrue(YES, @"Test: Ad %@", isMuted?@"Muted":@"Unmuted"); -} - -- (void)adSkippedVideo:(id)ad{ - NSLog(@"Test: video ad skipped video."); - XCTAssertTrue(YES, @"Test: Ad skipped video delegate fired."); -} - -- (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ - switch (videoEvent) { - case ANVideoEventQuartileFirst: - XCTAssertTrue(YES, @"Test: Video Quartile Event First"); - break; - case ANVideoEventQuartileMidPoint: - XCTAssertTrue(YES, @"Test: Video Quartile Event Midpoint"); - break; - case ANVideoEventQuartileThird: - XCTAssertTrue(YES, @"Test: Video Quartile Event Third"); - break; - case ANVideoEventCreativeView: - XCTAssertTrue(YES, @"Test: Video Quartile Event Creative View"); - break; - default: - break; - } -} - -- (void)adFinishedPlayingCompleteVideo:(id)ad{ - NSLog(@"Test: Video finished playing complete video."); - [self.expectation fulfill]; +- (void)ad:(id)ad requestFailedWithError:(NSError *)error{ + NSLog(@"Test: request failed with error."); } @end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.h b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.h new file mode 100644 index 000000000..eb3b46c5b --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.h @@ -0,0 +1,22 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + +#import + +@interface PlayerDelegateTests : KIFTestCase + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m new file mode 100644 index 000000000..2699226cc --- /dev/null +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m @@ -0,0 +1,137 @@ +/* Copyright 2015 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + + See the License for the specific language governing permissions and + limitations under the License. + + */ +#define interstitial [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"interstitial"] +#define player [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:@"player"] + +#import "PlayerDelegateTests.h" +#import +#import "ANInterstitialAd.h" + +@interface PlayerDelegateTests(){ + ANInterstitialAd *interstitialAdView; + BOOL isAdStartedPlayingVideo; + BOOL isFirstQuartileDone; + BOOL isMidPointQuartileDone; + BOOL isthirdQuartileDone; + BOOL isCreativeViewDone; + BOOL isPlayingCompelete; +} + +@property (nonatomic, strong) XCTestExpectation *expectation; + +@end + +@implementation PlayerDelegateTests + +- (void)setUp{ + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + [self setupDelegatesForVideo]; + + int breakCounter = 5; + + while (interstitial && breakCounter--) { + [self performClickOnInterstitial]; + [tester waitForTimeInterval:2.0]; + } + + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; + if (!interstitial) { + [tester waitForViewWithAccessibilityLabel:@"player"]; + if (!player) { + NSLog(@"Test: Not able to load the video."); + } + } + +} + +- (void)tearDown{ + interstitialAdView.delegate = nil; + interstitialAdView.videoAdDelegate = nil; + interstitialAdView = nil; + isAdStartedPlayingVideo = NO; + isCreativeViewDone = NO; + isFirstQuartileDone = NO; + isMidPointQuartileDone = NO; + isthirdQuartileDone = NO; + isPlayingCompelete = NO; + self.expectation = nil; +} + +- (void) test1PlayerRelatedDelegates{ + + [self waitForExpectationsWithTimeout:100.0 handler:^(NSError * _Nullable error) { + if (error) { + NSLog(@"%@", error.description); + } + }]; + + XCTAssertTrue(isAdStartedPlayingVideo, @"Ad failed to start video."); + XCTAssertTrue(isFirstQuartileDone, @"Ad did not play till first quartile."); + XCTAssertTrue(isMidPointQuartileDone, @"Ad did not play till mid point quartile."); + XCTAssertTrue(isthirdQuartileDone, @"Ad did not play till third quartile."); + XCTAssertTrue(isPlayingCompelete, @"Ad did not finish playing video till the end."); +} + +-(void) setupDelegatesForVideo{ + + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + if (controller) { + SEL aSelector = NSSelectorFromString(@"interstitialAd"); + interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.delegate = self; + interstitialAdView.videoAdDelegate = self; + } +} + +- (void) performClickOnInterstitial{ + if (interstitial) { + [tester tapViewWithAccessibilityLabel:@"interstitial"]; + } +} + +- (void)adDidReceiveAd:(id)ad{ + NSLog(@"Test: ad received ad."); +} + +- (void)adStartedPlayingVideo:(id)ad{ + NSLog(@"Test: video ad started playing video."); + isAdStartedPlayingVideo = YES; +} + +- (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ + switch (videoEvent) { + case ANVideoEventQuartileFirst: + isFirstQuartileDone = YES; + break; + case ANVideoEventQuartileMidPoint: + isMidPointQuartileDone = YES; + break; + case ANVideoEventQuartileThird: + isthirdQuartileDone = YES; + break; + default: + break; + } +} + +- (void)adFinishedPlayingCompleteVideo:(id)ad{ + NSLog(@"Test: Video finished playing complete video."); + isPlayingCompelete = YES; + [self.expectation fulfill]; +} + +@end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m index 56b034aac..0a608802e 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m @@ -27,8 +27,6 @@ @interface OpenInInAppBrowser(){ BOOL isDelegateFired; } -@property (nonatomic, strong) XCTestExpectation *expectation; - @end @implementation OpenInInAppBrowser @@ -38,6 +36,8 @@ - (void)setUp{ isDelegateFired = NO; [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + [self setupDelegatesForVideo]; + int breakCounter = 5; while (interstitial && breakCounter--) { @@ -45,7 +45,6 @@ - (void)setUp{ [tester waitForTimeInterval:2.0]; } - [self setupDelegatesForVideo]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { @@ -91,7 +90,6 @@ - (void) performClickOnInterstitial{ - (void)adWillLeaveApplication:(id)ad{ NSLog(@"Test: ad will leave application."); isDelegateFired = YES; - [self.expectation fulfill]; } - (void) notifySemaphoreForRelease{ diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m index 93b77dfcb..0e0265cf6 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m @@ -37,7 +37,8 @@ - (void)setUp{ isDelegateFired = NO; [tester waitForViewWithAccessibilityLabel:@"interstitial"]; - + [self setupDelegatesForVideo]; + int breakCounter = 5; while (interstitial && breakCounter--) { @@ -45,7 +46,7 @@ - (void)setUp{ [tester waitForTimeInterval:2.0]; } - [self setupDelegatesForVideo]; + self.expectation = [self expectationWithDescription:@"Waiting for delegates to fire."]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { @@ -56,8 +57,6 @@ - (void)setUp{ - (void) test1OpenClickInNativeBrowser{ - self.expectation = [self expectationWithDescription:@"Waiting for delegates to fire."]; - [tester tapViewWithAccessibilityLabel:@"player"]; [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m index aee4d8122..9073a6419 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m @@ -27,21 +27,15 @@ @interface CloseVideoTest(){ } @property (nonatomic, strong) XCTestExpectation *expectation; -@property (nonatomic) int tapsRequired; @end @implementation CloseVideoTest - (void)setUp{ - UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; - - for (UIView *subView in view.subviews) { - if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { - break; - } - } - + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + [self setupDelegatesForVideo]; + int breakCounter = 10; while (interstitial && breakCounter--) { @@ -49,7 +43,7 @@ - (void)setUp{ [tester waitForTimeInterval:2.0]; } - [self setupDelegatesForVideo]; + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { @@ -64,11 +58,8 @@ - (void) test1ClickOnClose{ [tester waitForTimeInterval:15.0]; [tester tapViewWithAccessibilityLabel:@"close button"]; - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - if (error) { - NSLog(@"%@", error.description); - } + XCTAssertNil(error.description, @"Click on close of video failed."); }]; } @@ -93,7 +84,7 @@ - (void) performClickOnInterstitial{ - (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ switch (videoEvent) { case ANVideoEventCloseLinear: - XCTAssertTrue(YES, @"Test: Video Quartile Event Close"); + NSLog(@"Test: Closing video."); [self.expectation fulfill]; break; default: @@ -103,17 +94,14 @@ - (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ NSLog(@"Test: Ad Skipped Video."); - XCTAssertTrue(YES, @"Test: adSkippedVideo delegate fired."); } - (void)adWillClose:(id)ad{ NSLog(@"Test: Ad will close now."); - XCTAssertTrue(YES, @"Test: adWillClose delegate fired."); } - (void)adDidClose:(id)ad{ NSLog(@"Test: Ad Did close now."); - XCTAssertTrue(YES, @"Test: adDidClose delegate fired."); [self.expectation fulfill]; } diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m index 97a809b54..4c7928dc2 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m @@ -27,29 +27,23 @@ @interface PlayerClickTest(){ } @property (nonatomic, strong) XCTestExpectation *expectation; -@property (nonatomic) int tapsRequired; @end @implementation PlayerClickTest - (void)setUp{ - UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; - - for (UIView *subView in view.subviews) { - if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { - break; - } - } + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + [self setupDelegatesForVideo]; - int breakCounter = 10; + int breakCounter = 5; while (interstitial && breakCounter--) { [self performClickOnInterstitial]; [tester waitForTimeInterval:2.0]; } - [self setupDelegatesForVideo]; + self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { @@ -63,11 +57,8 @@ - (void) test1ClickOnPlayer{ [tester waitForViewWithAccessibilityLabel:@"close button"]; [tester tapViewWithAccessibilityLabel:@"player"]; - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - if (error) { - NSLog(@"%@", error.description); - } + XCTAssertNil(error.description, @"Click failed on player."); }]; } @@ -91,12 +82,10 @@ - (void) performClickOnInterstitial{ -(void)adPausedVideo:(id)ad{ NSLog(@"Test: Ad was paused."); - XCTAssertTrue(YES, @"Test: adPausedVideo delegate fired."); } - (void)adWasClicked:(id)ad{ NSLog(@"Test: Ad was clicked."); - XCTAssertTrue(YES, @"Test: adWasClicked delegate fired."); [self.expectation fulfill]; } diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m index d1690cf24..86e74e2e3 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m @@ -26,64 +26,80 @@ @interface VolumeClickTest(){ ANInterstitialAd *interstitialAdView; } -@property (nonatomic, strong) XCTestExpectation *expectation; -@property (nonatomic) int tapsRequired; +@property (nonatomic, assign) BOOL isVolumeButtonClicked; @end @implementation VolumeClickTest +static dispatch_semaphore_t waitForVolumeButtonToBeClicked; + - (void)setUp{ - UIView *view = [tester waitForViewWithAccessibilityLabel:@"interstitial"]; - - for (UIView *subView in view.subviews) { - if ([subView isKindOfClass:NSClassFromString(@"ANInterstitialAd")]) { - break; - } - } + [super setUp]; - int breakCounter = 10; + self.isVolumeButtonClicked = NO; +} + +- (void)tearDown{ + [super tearDown]; +} + +- (void)test1PrepareForVolumeTesting{ + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; + [self setupDelegatesForVideo]; + + int breakCounter = 5; while (interstitial && breakCounter--) { [self performClickOnInterstitial]; [tester waitForTimeInterval:2.0]; } - [self setupDelegatesForVideo]; + if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { NSLog(@"Test: Not able to load the video."); } } + + XCTAssertNil(interstitial, @"Failed to load video."); } -- (void) test1UnmuteVolume{ +- (void) test2UnmuteVolume{ - [tester tapViewWithAccessibilityLabel:@"volume button"]; + XCTAssertNil(interstitial, @"Failed to load video."); + + waitForVolumeButtonToBeClicked = dispatch_semaphore_create(0); - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; - [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - if (error) { - NSLog(@"%@", error.description); - } - }]; + [self performSelector:@selector(tapOnvolumeButton) withObject:nil afterDelay:2.0]; + + dispatch_semaphore_wait(waitForVolumeButtonToBeClicked, dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC)); + XCTAssertTrue(self.isVolumeButtonClicked, @"failed"); } -- (void) test2MuteVolume{ - +- (void) tapOnvolumeButton{ [tester tapViewWithAccessibilityLabel:@"volume button"]; - - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; - [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - if (error) { - NSLog(@"%@", error.description); - } - }]; - } +//- (void) test3MuteVolume{ +// +// XCTAssertNil(interstitial, @"Failed to load video."); +// +// self.isDelegateFired = NO; +// +// self.muteExpectation = [self expectationWithDescription:@"Waiting for muting the volume."]; +// +// [tester tapViewWithAccessibilityLabel:@"volume button"]; +// +// [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { +// NSLog(@"isDelegateFired: %i", self.isDelegateFired); +// XCTAssertTrue(self.isDelegateFired, @"Failed to mute the player volume."); +// }]; +// +//} + -(void) setupDelegatesForVideo{ UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; @@ -103,8 +119,16 @@ - (void) performClickOnInterstitial{ - (void)adMuted:(BOOL)isMuted withAd:(id)ad{ NSLog(@"Test: Ad was %@", isMuted?@"Muted":@"Unmuted"); - XCTAssertTrue(YES, @"AsMuted delegate fired."); - [self.expectation fulfill]; + self.isVolumeButtonClicked = YES; + dispatch_semaphore_signal(waitForVolumeButtonToBeClicked); +} + +- (void)adDidReceiveAd:(id)ad{ + NSLog(@"Test: ad receive ad"); +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error{ + NSLog(@"Test: request failed with error."); } @end From c3fcd4d657104d19a9ce0f4b4fbcbced401fe581 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Tue, 8 Dec 2015 20:26:39 +0530 Subject: [PATCH 39/92] Updated test cases All possible Test cases verified. --- .../DisplayVideoAd/PlayerDelegateTests.m | 56 ++++++++++-------- .../OpenInBrowser/OpenInInAppBrowser.m | 26 ++++++++- .../OpenInBrowser/OpenInNativeBrowser.m | 46 +++++++++++---- .../VideoClicks/CloseVideoTest.m | 58 ++++++++++++------- .../VideoClicks/PlayerClickTest.m | 42 +++++++++++--- .../VideoClicks/VolumeClickTest.m | 44 +++++++------- sdk/internal/ANVideoPlayerViewController.m | 6 +- 7 files changed, 183 insertions(+), 95 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m index 2699226cc..68a70f081 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m @@ -23,21 +23,23 @@ @interface PlayerDelegateTests(){ ANInterstitialAd *interstitialAdView; - BOOL isAdStartedPlayingVideo; - BOOL isFirstQuartileDone; - BOOL isMidPointQuartileDone; - BOOL isthirdQuartileDone; - BOOL isCreativeViewDone; - BOOL isPlayingCompelete; } - -@property (nonatomic, strong) XCTestExpectation *expectation; - @end @implementation PlayerDelegateTests -- (void)setUp{ +static BOOL isAdStartedPlayingVideo; +static BOOL isFirstQuartileDone; +static BOOL isMidPointQuartileDone; +static BOOL isthirdQuartileDone; +static BOOL isCreativeViewDone; +static BOOL isPlayingCompelete; + +-(void)setUp{ + [super setUp]; +} + +- (void)test1PrepareForDisplay{ [tester waitForViewWithAccessibilityLabel:@"interstitial"]; [self setupDelegatesForVideo]; @@ -48,7 +50,6 @@ - (void)setUp{ [tester waitForTimeInterval:2.0]; } - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { @@ -56,29 +57,29 @@ - (void)setUp{ } } + XCTAssertNil(interstitial, @"Failed to load video"); + } - (void)tearDown{ - interstitialAdView.delegate = nil; - interstitialAdView.videoAdDelegate = nil; - interstitialAdView = nil; isAdStartedPlayingVideo = NO; isCreativeViewDone = NO; isFirstQuartileDone = NO; isMidPointQuartileDone = NO; isthirdQuartileDone = NO; isPlayingCompelete = NO; - self.expectation = nil; } -- (void) test1PlayerRelatedDelegates{ - - [self waitForExpectationsWithTimeout:100.0 handler:^(NSError * _Nullable error) { - if (error) { - NSLog(@"%@", error.description); - } - }]; +static dispatch_semaphore_t waitForPlayerDelegatesToFire; +- (void) test2PlayerRelatedDelegates{ + + XCTAssertNil(interstitial, @"Failed to load video"); + + waitForPlayerDelegatesToFire = dispatch_semaphore_create(0); + + dispatch_semaphore_wait(waitForPlayerDelegatesToFire, dispatch_time(DISPATCH_TIME_NOW, 100*NSEC_PER_SEC)); + XCTAssertTrue(isAdStartedPlayingVideo, @"Ad failed to start video."); XCTAssertTrue(isFirstQuartileDone, @"Ad did not play till first quartile."); XCTAssertTrue(isMidPointQuartileDone, @"Ad did not play till mid point quartile."); @@ -104,7 +105,11 @@ - (void) performClickOnInterstitial{ } - (void)adDidReceiveAd:(id)ad{ - NSLog(@"Test: ad received ad."); + NSLog(@"Test: ad receive ad"); +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error{ + NSLog(@"Test: request failed with error."); } - (void)adStartedPlayingVideo:(id)ad{ @@ -115,12 +120,15 @@ - (void)adStartedPlayingVideo:(id)ad{ - (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ switch (videoEvent) { case ANVideoEventQuartileFirst: + NSLog(@"Test: First Quartile"); isFirstQuartileDone = YES; break; case ANVideoEventQuartileMidPoint: + NSLog(@"Test: Mid Point"); isMidPointQuartileDone = YES; break; case ANVideoEventQuartileThird: + NSLog(@"Test: Third Quartile"); isthirdQuartileDone = YES; break; default: @@ -131,7 +139,7 @@ - (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ NSLog(@"Test: Video finished playing complete video."); isPlayingCompelete = YES; - [self.expectation fulfill]; + dispatch_semaphore_signal(waitForPlayerDelegatesToFire); } @end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m index 0a608802e..5d195ae25 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m @@ -24,16 +24,26 @@ @interface OpenInInAppBrowser(){ ANInterstitialAd *interstitialAdView; - BOOL isDelegateFired; } @end @implementation OpenInInAppBrowser +static BOOL isDelegateFired; + - (void)setUp{ + [super setUp]; isDelegateFired = NO; +} + +- (void)tearDown{ + [super tearDown]; +} + +- (void)test1PrepareForDisplay{ + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; [self setupDelegatesForVideo]; @@ -51,12 +61,16 @@ - (void)setUp{ NSLog(@"Test: Not able to load the video."); } } + + XCTAssertNil(interstitial, @"Failed ot load video."); } static dispatch_semaphore_t waitForDelegateToFire; - (void) test1OpenClickInInAppBrowser{ + XCTAssertNil(interstitial, @"Failed to load video."); + waitForDelegateToFire = dispatch_semaphore_create(0); [self performSelector:@selector(notifySemaphoreForRelease) withObject:nil afterDelay:5.0]; @@ -64,7 +78,7 @@ - (void) test1OpenClickInInAppBrowser{ [tester tapViewWithAccessibilityLabel:@"player"]; dispatch_semaphore_wait(waitForDelegateToFire, dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC)); - + XCTAssertFalse(isDelegateFired, @"Click opened in Native Browser. failed case."); } @@ -96,4 +110,12 @@ - (void) notifySemaphoreForRelease{ dispatch_semaphore_signal(waitForDelegateToFire); } +- (void)adDidReceiveAd:(id)ad{ + NSLog(@"Test: ad receive ad"); +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error{ + NSLog(@"Test: request failed with error."); +} + @end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m index 0e0265cf6..6421d7d6a 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m @@ -24,18 +24,26 @@ @interface OpenInNativeBrowser(){ ANInterstitialAd *interstitialAdView; - BOOL isDelegateFired; } -@property (nonatomic, strong) XCTestExpectation *expectation; - @end @implementation OpenInNativeBrowser +static BOOL isDelegateFired; + - (void)setUp{ + [super setUp]; isDelegateFired = NO; +} + +-(void)tearDown{ + [super tearDown]; +} + +- (void)test1PrepareForDisplay{ + [tester waitForViewWithAccessibilityLabel:@"interstitial"]; [self setupDelegatesForVideo]; @@ -46,23 +54,29 @@ - (void)setUp{ [tester waitForTimeInterval:2.0]; } - self.expectation = [self expectationWithDescription:@"Waiting for delegates to fire."]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { NSLog(@"Test: Not able to load the video."); } } + + XCTAssertNil(interstitial, @"Failed to load video."); } -- (void) test1OpenClickInNativeBrowser{ +static dispatch_semaphore_t waitForDelegateTobeFired; + +- (void) test2OpenClickInNativeBrowser{ - [tester tapViewWithAccessibilityLabel:@"player"]; + XCTAssertNil(interstitial, @"Failed to load video."); - [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - NSLog(@"isDelegateFired: %i", isDelegateFired); - XCTAssertTrue(isDelegateFired, @"Click opened in In-App Browser."); - }]; + waitForDelegateTobeFired = dispatch_semaphore_create(0); + + [tester tapViewWithAccessibilityLabel:@"player"]; + + dispatch_semaphore_wait(waitForDelegateTobeFired, dispatch_time(DISPATCH_TIME_NOW, 10*NSEC_PER_SEC)); + + XCTAssertTrue(isDelegateFired, @"Failed."); } @@ -72,6 +86,7 @@ -(void) setupDelegatesForVideo{ if (controller) { SEL aSelector = NSSelectorFromString(@"interstitialAd"); interstitialAdView = (ANInterstitialAd *)[controller performSelector:aSelector]; + interstitialAdView.opensInNativeBrowser = YES; interstitialAdView.delegate = self; interstitialAdView.videoAdDelegate = self; } @@ -86,7 +101,16 @@ - (void) performClickOnInterstitial{ - (void)adWillLeaveApplication:(id)ad{ NSLog(@"Test: ad will leave application"); isDelegateFired = YES; - [self.expectation fulfill]; + dispatch_semaphore_signal(waitForDelegateTobeFired); } +- (void)adDidReceiveAd:(id)ad{ + NSLog(@"Test: ad receive ad"); +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error{ + NSLog(@"Test: request failed with error."); +} + + @end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m index 9073a6419..b4f702936 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m @@ -26,41 +26,59 @@ @interface CloseVideoTest(){ ANInterstitialAd *interstitialAdView; } -@property (nonatomic, strong) XCTestExpectation *expectation; - @end @implementation CloseVideoTest +static BOOL isCloseButtonClicked; + - (void)setUp{ + [super setUp]; + isCloseButtonClicked = NO; +} + +- (void)tearDown{ + [super tearDown]; +} + +- (void)test1PrepareForDisplay{ [tester waitForViewWithAccessibilityLabel:@"interstitial"]; [self setupDelegatesForVideo]; - int breakCounter = 10; + int breakCounter = 5; while (interstitial && breakCounter--) { [self performClickOnInterstitial]; [tester waitForTimeInterval:2.0]; } - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { NSLog(@"Test: Not able to load the video."); } } + + XCTAssertNil(interstitial, @"Failed to load video"); } -- (void) test1ClickOnClose{ +static dispatch_semaphore_t waitForCloseButtonToBeClicked; + +- (void) test2ClickOnClose{ + + XCTAssertNil(interstitial, @"Failed to load video"); + + waitForCloseButtonToBeClicked = dispatch_semaphore_create(0); - [tester waitForViewWithAccessibilityLabel:@"close button"]; +// [tester waitForViewWithAccessibilityLabel:@"close button"]; [tester waitForTimeInterval:15.0]; [tester tapViewWithAccessibilityLabel:@"close button"]; - [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - XCTAssertNil(error.description, @"Click on close of video failed."); - }]; + dispatch_semaphore_wait(waitForCloseButtonToBeClicked, dispatch_time(DISPATCH_TIME_NOW,10*NSEC_PER_SEC)); + + NSLog(@"isCloseButtonClicked: %@", isCloseButtonClicked?@"YES":@"NO"); + + XCTAssertTrue(isCloseButtonClicked, @"Failed."); } @@ -81,17 +99,6 @@ - (void) performClickOnInterstitial{ } } -- (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ - switch (videoEvent) { - case ANVideoEventCloseLinear: - NSLog(@"Test: Closing video."); - [self.expectation fulfill]; - break; - default: - break; - } -} - - (void)adSkippedVideo:(id)ad{ NSLog(@"Test: Ad Skipped Video."); } @@ -102,7 +109,16 @@ - (void)adWillClose:(id)ad{ - (void)adDidClose:(id)ad{ NSLog(@"Test: Ad Did close now."); - [self.expectation fulfill]; + isCloseButtonClicked = YES; + dispatch_semaphore_signal(waitForCloseButtonToBeClicked); +} + +- (void)adDidReceiveAd:(id)ad{ + NSLog(@"Test: ad receive ad"); +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error{ + NSLog(@"Test: request failed with error."); } @end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m index 4c7928dc2..ac69264fb 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m @@ -26,13 +26,23 @@ @interface PlayerClickTest(){ ANInterstitialAd *interstitialAdView; } -@property (nonatomic, strong) XCTestExpectation *expectation; - @end @implementation PlayerClickTest +static BOOL isPlayerClicked; + - (void)setUp{ + [super setUp]; + + isPlayerClicked = NO; +} + +-(void)tearDown{ + [super tearDown]; +} + +- (void)test1PrepareForDisplay{ [tester waitForViewWithAccessibilityLabel:@"interstitial"]; [self setupDelegatesForVideo]; @@ -43,23 +53,29 @@ - (void)setUp{ [tester waitForTimeInterval:2.0]; } - self.expectation = [self expectationWithDescription:@"Waiting for delegates to be fired."]; if (!interstitial) { [tester waitForViewWithAccessibilityLabel:@"player"]; if (!player) { NSLog(@"Test: Not able to load the video."); } } + + XCTAssertNil(interstitial, @"Failed to load video."); } -- (void) test1ClickOnPlayer{ +static dispatch_semaphore_t waitForPlayerToBeClicked; + +- (void) test2ClickOnPlayer{ - [tester waitForViewWithAccessibilityLabel:@"close button"]; + XCTAssertNil(interstitial, @"Failed to load video."); + + waitForPlayerToBeClicked = dispatch_semaphore_create(0); + [tester tapViewWithAccessibilityLabel:@"player"]; - [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { - XCTAssertNil(error.description, @"Click failed on player."); - }]; + dispatch_semaphore_wait(waitForPlayerToBeClicked, dispatch_time(DISPATCH_TIME_NOW, 10*NSEC_PER_SEC)); + + XCTAssertTrue(isPlayerClicked, @"Failed."); } @@ -86,8 +102,16 @@ -(void)adPausedVideo:(id)ad{ - (void)adWasClicked:(id)ad{ NSLog(@"Test: Ad was clicked."); - [self.expectation fulfill]; + isPlayerClicked = YES; + dispatch_semaphore_signal(waitForPlayerToBeClicked); } +- (void)adDidReceiveAd:(id)ad{ + NSLog(@"Test: ad receive ad"); +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error{ + NSLog(@"Test: request failed with error."); +} @end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m index 86e74e2e3..0952f170d 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m @@ -26,18 +26,17 @@ @interface VolumeClickTest(){ ANInterstitialAd *interstitialAdView; } -@property (nonatomic, assign) BOOL isVolumeButtonClicked; - @end @implementation VolumeClickTest static dispatch_semaphore_t waitForVolumeButtonToBeClicked; +static BOOL isVolumeButtonClicked; - (void)setUp{ [super setUp]; - self.isVolumeButtonClicked = NO; + isVolumeButtonClicked = NO; } - (void)tearDown{ @@ -52,7 +51,7 @@ - (void)test1PrepareForVolumeTesting{ while (interstitial && breakCounter--) { [self performClickOnInterstitial]; - [tester waitForTimeInterval:2.0]; + [tester waitForTimeInterval:3.0]; } @@ -72,33 +71,30 @@ - (void) test2UnmuteVolume{ waitForVolumeButtonToBeClicked = dispatch_semaphore_create(0); - [self performSelector:@selector(tapOnvolumeButton) withObject:nil afterDelay:2.0]; + [self tapOnVolumeButton]; dispatch_semaphore_wait(waitForVolumeButtonToBeClicked, dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC)); - XCTAssertTrue(self.isVolumeButtonClicked, @"failed"); + XCTAssertTrue(isVolumeButtonClicked, @"failed"); } -- (void) tapOnvolumeButton{ +- (void) tapOnVolumeButton{ [tester tapViewWithAccessibilityLabel:@"volume button"]; } -//- (void) test3MuteVolume{ -// -// XCTAssertNil(interstitial, @"Failed to load video."); -// -// self.isDelegateFired = NO; -// -// self.muteExpectation = [self expectationWithDescription:@"Waiting for muting the volume."]; -// -// [tester tapViewWithAccessibilityLabel:@"volume button"]; -// -// [self waitForExpectationsWithTimeout:10.0 handler:^(NSError * _Nullable error) { -// NSLog(@"isDelegateFired: %i", self.isDelegateFired); -// XCTAssertTrue(self.isDelegateFired, @"Failed to mute the player volume."); -// }]; -// -//} +- (void) test3MuteVolume{ + + XCTAssertNil(interstitial, @"Failed to load video."); + + waitForVolumeButtonToBeClicked = dispatch_semaphore_create(1); + + [self tapOnVolumeButton]; + + dispatch_semaphore_wait(waitForVolumeButtonToBeClicked, dispatch_time(DISPATCH_TIME_NOW, 10*NSEC_PER_SEC)); + + XCTAssertTrue(isVolumeButtonClicked, @"failed."); + +} -(void) setupDelegatesForVideo{ @@ -119,7 +115,7 @@ - (void) performClickOnInterstitial{ - (void)adMuted:(BOOL)isMuted withAd:(id)ad{ NSLog(@"Test: Ad was %@", isMuted?@"Muted":@"Unmuted"); - self.isVolumeButtonClicked = YES; + isVolumeButtonClicked = YES; dispatch_semaphore_signal(waitForVolumeButtonToBeClicked); } diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 029298132..955d7d85d 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -364,10 +364,8 @@ - (void)openClickInBrowserWithURL:(NSURL *)url { ANLogDebug(@"Failed to initialize the browser."); } } else{ - if ([self.delegate conformsToProtocol:@protocol(ANAdViewInternalDelegate)]) { - if([self.delegate respondsToSelector:@selector(adWillLeaveApplication)]){ - [self.delegate adWillLeaveApplication]; - } + if([self.delegate respondsToSelector:@selector(adWillLeaveApplication)]){ + [self.delegate adWillLeaveApplication]; } [self pause]; [[UIApplication sharedApplication] openURL:url]; From 33a9c3eec1ce99a22128ad9c76ac3e915b788d7a Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Fri, 11 Dec 2015 18:04:17 +0530 Subject: [PATCH 40/92] Updated test cases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Had to make expectation as static else the expectation isn’t firing. removed semaphore implementation as it was not allowing the delegates to fire sometimes, or rather i would say hanging sometimes in case of testing player delegates. --- .../DisplayVideoAd/DisplayVideoAd.m | 30 ++++++++---- .../DisplayVideoAd/PlayerDelegateTests.m | 48 +++++++++++-------- .../OpenInBrowser/OpenInInAppBrowser.m | 39 +++++++++------ .../OpenInBrowser/OpenInNativeBrowser.m | 35 ++++++++------ .../VideoClicks/CloseVideoTest.m | 39 ++++++++------- .../VideoClicks/PlayerClickTest.m | 37 ++++++++------ .../VideoClicks/VolumeClickTest.m | 46 +++++++++++------- 7 files changed, 170 insertions(+), 104 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m index a1424ad59..fec653842 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m @@ -22,14 +22,30 @@ #import #import "ANInterstitialAd.h" -@interface DisplayVideoAd(){ - ANInterstitialAd *interstitialAdView; -} - +@interface DisplayVideoAd() @end @implementation DisplayVideoAd +static ANInterstitialAd *interstitialAdView; + ++ (void)setUp{ + [super setUp]; +} + ++ (void)tearDown{ + [super tearDown]; + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + UIViewController *visibleViewController = controller.navigationController.visibleViewController; + while (visibleViewController) { + [visibleViewController dismissViewControllerAnimated:YES completion:nil]; + visibleViewController = controller.navigationController.visibleViewController; + } + interstitialAdView.delegate = nil; + interstitialAdView.videoAdDelegate = nil; + interstitialAdView = nil; +} + - (void) test1SetUp{ [tester waitForViewWithAccessibilityLabel:@"interstitial"]; @@ -54,11 +70,10 @@ - (void) test1SetUp{ - (void) test3ExistenceOfCloseCountDownTimerAtTopRight{ XCTAssertNil(interstitial, @"Video could not be loaded."); - [tester waitForViewWithAccessibilityLabel:@"player"]; UIView *circularView = [tester waitForViewWithAccessibilityLabel:@"close button"]; CGRect superViewFrame = circularView.superview.frame; CGRect testFrame = CGRectMake(superViewFrame.size.width - 75, superViewFrame.origin.y, 50, 75); - XCTAssertTrue(CGRectContainsPoint(testFrame, circularView.frame.origin)); + XCTAssertTrue(CGRectContainsPoint(testFrame, circularView.frame.origin), @"Countdown timer not found at top right position."); } - (void) test2ExistenceOfVolumeView{ @@ -69,14 +84,13 @@ - (void) test2ExistenceOfVolumeView{ - (void) test4ExistenceOfVolumeButtonAtBottomRight{ XCTAssertNil(interstitial, @"Video could not be loaded."); - [tester waitForViewWithAccessibilityLabel:@"player"]; UIView *volumeView = [tester waitForViewWithAccessibilityLabel:@"volume button"]; CGRect superViewFrame = volumeView.superview.superview.frame; CGRect testFrame = CGRectMake(superViewFrame.size.width - 75, superViewFrame.size.height-75, 50, 50); CGPoint point = [volumeView convertPoint:volumeView.superview.center toView:volumeView.superview]; - XCTAssertTrue(CGRectContainsPoint(testFrame, point)); + XCTAssertTrue(CGRectContainsPoint(testFrame, point), @"Volume button not found at bottom right position."); } -(void) setupDelegatesForVideo{ diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m index 68a70f081..24535017b 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m @@ -21,9 +21,7 @@ #import #import "ANInterstitialAd.h" -@interface PlayerDelegateTests(){ - ANInterstitialAd *interstitialAdView; -} +@interface PlayerDelegateTests() @end @implementation PlayerDelegateTests @@ -35,10 +33,33 @@ @implementation PlayerDelegateTests static BOOL isCreativeViewDone; static BOOL isPlayingCompelete; --(void)setUp{ +static ANInterstitialAd *interstitialAdView; +static XCTestExpectation *expectation; + ++ (void)setUp{ [super setUp]; } ++ (void)tearDown{ + [super tearDown]; + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + UIViewController *visibleViewController = controller.navigationController.visibleViewController; + while (visibleViewController) { + [visibleViewController dismissViewControllerAnimated:YES completion:nil]; + visibleViewController = controller.navigationController.visibleViewController; + } + interstitialAdView.delegate = nil; + interstitialAdView.videoAdDelegate = nil; + interstitialAdView = nil; + isAdStartedPlayingVideo = NO; + isCreativeViewDone = NO; + isFirstQuartileDone = NO; + isMidPointQuartileDone = NO; + isthirdQuartileDone = NO; + isPlayingCompelete = NO; + expectation = nil; +} + - (void)test1PrepareForDisplay{ [tester waitForViewWithAccessibilityLabel:@"interstitial"]; [self setupDelegatesForVideo]; @@ -61,24 +82,13 @@ - (void)test1PrepareForDisplay{ } -- (void)tearDown{ - isAdStartedPlayingVideo = NO; - isCreativeViewDone = NO; - isFirstQuartileDone = NO; - isMidPointQuartileDone = NO; - isthirdQuartileDone = NO; - isPlayingCompelete = NO; -} - -static dispatch_semaphore_t waitForPlayerDelegatesToFire; - - (void) test2PlayerRelatedDelegates{ + XCTAssertNil(interstitial, @"Failed to load video"); - waitForPlayerDelegatesToFire = dispatch_semaphore_create(0); - - dispatch_semaphore_wait(waitForPlayerDelegatesToFire, dispatch_time(DISPATCH_TIME_NOW, 100*NSEC_PER_SEC)); + expectation = [self expectationWithDescription:@"wait for all delegates to fire"]; + [self waitForExpectationsWithTimeout:100.0 handler:nil]; XCTAssertTrue(isAdStartedPlayingVideo, @"Ad failed to start video."); XCTAssertTrue(isFirstQuartileDone, @"Ad did not play till first quartile."); @@ -139,7 +149,7 @@ - (void)adFinishedQuartileEvent:(ANVideoEvent)videoEvent withAd:(id)ad{ NSLog(@"Test: Video finished playing complete video."); isPlayingCompelete = YES; - dispatch_semaphore_signal(waitForPlayerDelegatesToFire); + [expectation fulfill]; } @end diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m index 5d195ae25..9d0d3d02b 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m @@ -22,24 +22,33 @@ #import #import "ANInterstitialAd.h" -@interface OpenInInAppBrowser(){ - ANInterstitialAd *interstitialAdView; -} - +@interface OpenInInAppBrowser() @end @implementation OpenInInAppBrowser static BOOL isDelegateFired; -- (void)setUp{ +static ANInterstitialAd *interstitialAdView; +static XCTestExpectation *expectation; + ++ (void)setUp{ [super setUp]; - isDelegateFired = NO; } - (void)tearDown{ [super tearDown]; + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + UIViewController *visibleViewController = controller.navigationController.visibleViewController; + while (visibleViewController) { + [visibleViewController dismissViewControllerAnimated:YES completion:nil]; + visibleViewController = controller.navigationController.visibleViewController; + } + interstitialAdView.delegate = nil; + interstitialAdView.videoAdDelegate = nil; + interstitialAdView = nil; + expectation = nil; } - (void)test1PrepareForDisplay{ @@ -65,19 +74,17 @@ - (void)test1PrepareForDisplay{ XCTAssertNil(interstitial, @"Failed ot load video."); } -static dispatch_semaphore_t waitForDelegateToFire; - -- (void) test1OpenClickInInAppBrowser{ +- (void) test2OpenClickInInAppBrowser{ XCTAssertNil(interstitial, @"Failed to load video."); - waitForDelegateToFire = dispatch_semaphore_create(0); - - [self performSelector:@selector(notifySemaphoreForRelease) withObject:nil afterDelay:5.0]; + expectation = [self expectationWithDescription:@"Waiting for player to be clicked."]; + [tester waitForViewWithAccessibilityLabel:@"player"]; [tester tapViewWithAccessibilityLabel:@"player"]; - dispatch_semaphore_wait(waitForDelegateToFire, dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC)); + [self performSelector:@selector(notifyExpectation) withObject:nil afterDelay:3.0]; + [self waitForExpectationsWithTimeout:6.0 handler:nil]; XCTAssertFalse(isDelegateFired, @"Click opened in Native Browser. failed case."); @@ -106,8 +113,10 @@ - (void)adWillLeaveApplication:(id)ad{ isDelegateFired = YES; } -- (void) notifySemaphoreForRelease{ - dispatch_semaphore_signal(waitForDelegateToFire); +- (void) notifyExpectation{ + if (!isDelegateFired) { + [expectation fulfill]; + } } - (void)adDidReceiveAd:(id)ad{ diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m index 6421d7d6a..c155b71b3 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m @@ -22,24 +22,33 @@ #import #import "ANInterstitialAd.h" -@interface OpenInNativeBrowser(){ - ANInterstitialAd *interstitialAdView; -} - +@interface OpenInNativeBrowser() @end @implementation OpenInNativeBrowser static BOOL isDelegateFired; -- (void)setUp{ +static ANInterstitialAd *interstitialAdView; +static XCTestExpectation *expectation; + ++ (void)setUp{ [super setUp]; - isDelegateFired = NO; } --(void)tearDown{ ++ (void)tearDown{ [super tearDown]; + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + UIViewController *visibleViewController = controller.navigationController.visibleViewController; + while (visibleViewController) { + [visibleViewController dismissViewControllerAnimated:YES completion:nil]; + visibleViewController = controller.navigationController.visibleViewController; + } + interstitialAdView.delegate = nil; + interstitialAdView.videoAdDelegate = nil; + interstitialAdView = nil; + expectation = nil; } - (void)test1PrepareForDisplay{ @@ -64,18 +73,16 @@ - (void)test1PrepareForDisplay{ XCTAssertNil(interstitial, @"Failed to load video."); } -static dispatch_semaphore_t waitForDelegateTobeFired; - - (void) test2OpenClickInNativeBrowser{ XCTAssertNil(interstitial, @"Failed to load video."); - - waitForDelegateTobeFired = dispatch_semaphore_create(0); + + expectation = [self expectationWithDescription:@"Waiting for player to be clicked."]; [tester tapViewWithAccessibilityLabel:@"player"]; - dispatch_semaphore_wait(waitForDelegateTobeFired, dispatch_time(DISPATCH_TIME_NOW, 10*NSEC_PER_SEC)); - + [self waitForExpectationsWithTimeout:5.0 handler:nil]; + XCTAssertTrue(isDelegateFired, @"Failed."); } @@ -101,7 +108,7 @@ - (void) performClickOnInterstitial{ - (void)adWillLeaveApplication:(id)ad{ NSLog(@"Test: ad will leave application"); isDelegateFired = YES; - dispatch_semaphore_signal(waitForDelegateTobeFired); + [expectation fulfill]; } - (void)adDidReceiveAd:(id)ad{ diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m index b4f702936..ebb504037 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m @@ -22,23 +22,33 @@ #import #import "ANInterstitialAd.h" -@interface CloseVideoTest(){ - ANInterstitialAd *interstitialAdView; -} +@interface CloseVideoTest() @end @implementation CloseVideoTest static BOOL isCloseButtonClicked; +static ANInterstitialAd *interstitialAdView; +static XCTestExpectation *expectation; -- (void)setUp{ ++ (void)setUp{ [super setUp]; isCloseButtonClicked = NO; } -- (void)tearDown{ ++ (void)tearDown{ [super tearDown]; + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + UIViewController *visibleViewController = controller.navigationController.visibleViewController; + while (visibleViewController) { + [visibleViewController dismissViewControllerAnimated:YES completion:nil]; + visibleViewController = controller.navigationController.visibleViewController; + } + interstitialAdView.delegate = nil; + interstitialAdView.videoAdDelegate = nil; + interstitialAdView = nil; + expectation = nil; } - (void)test1PrepareForDisplay{ @@ -62,22 +72,17 @@ - (void)test1PrepareForDisplay{ XCTAssertNil(interstitial, @"Failed to load video"); } -static dispatch_semaphore_t waitForCloseButtonToBeClicked; - - (void) test2ClickOnClose{ XCTAssertNil(interstitial, @"Failed to load video"); - - waitForCloseButtonToBeClicked = dispatch_semaphore_create(0); -// [tester waitForViewWithAccessibilityLabel:@"close button"]; - [tester waitForTimeInterval:15.0]; + expectation = [self expectationWithDescription:@"Waiting for Close button to be clicked."]; + + [tester waitForViewWithAccessibilityLabel:@"close button"]; [tester tapViewWithAccessibilityLabel:@"close button"]; - - dispatch_semaphore_wait(waitForCloseButtonToBeClicked, dispatch_time(DISPATCH_TIME_NOW,10*NSEC_PER_SEC)); - - NSLog(@"isCloseButtonClicked: %@", isCloseButtonClicked?@"YES":@"NO"); - + + [self waitForExpectationsWithTimeout:5.0 handler:nil]; + XCTAssertTrue(isCloseButtonClicked, @"Failed."); } @@ -110,7 +115,7 @@ - (void)adWillClose:(id)ad{ - (void)adDidClose:(id)ad{ NSLog(@"Test: Ad Did close now."); isCloseButtonClicked = YES; - dispatch_semaphore_signal(waitForCloseButtonToBeClicked); + [expectation fulfill]; } - (void)adDidReceiveAd:(id)ad{ diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m index ac69264fb..251c1776d 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m @@ -22,24 +22,33 @@ #import #import "ANInterstitialAd.h" -@interface PlayerClickTest(){ - ANInterstitialAd *interstitialAdView; -} - +@interface PlayerClickTest() @end @implementation PlayerClickTest static BOOL isPlayerClicked; -- (void)setUp{ +static ANInterstitialAd *interstitialAdView; +static XCTestExpectation *expectation; + ++ (void)setUp{ [super setUp]; - isPlayerClicked = NO; } --(void)tearDown{ ++ (void)tearDown{ [super tearDown]; + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + UIViewController *visibleViewController = controller.navigationController.visibleViewController; + while (visibleViewController) { + [visibleViewController dismissViewControllerAnimated:YES completion:nil]; + visibleViewController = controller.navigationController.visibleViewController; + } + interstitialAdView.delegate = nil; + interstitialAdView.videoAdDelegate = nil; + interstitialAdView = nil; + expectation = nil; } - (void)test1PrepareForDisplay{ @@ -63,19 +72,17 @@ - (void)test1PrepareForDisplay{ XCTAssertNil(interstitial, @"Failed to load video."); } -static dispatch_semaphore_t waitForPlayerToBeClicked; - - (void) test2ClickOnPlayer{ XCTAssertNil(interstitial, @"Failed to load video."); - waitForPlayerToBeClicked = dispatch_semaphore_create(0); - + expectation = [self expectationWithDescription:@"Waiting for player to be clicked."]; + [tester tapViewWithAccessibilityLabel:@"player"]; - dispatch_semaphore_wait(waitForPlayerToBeClicked, dispatch_time(DISPATCH_TIME_NOW, 10*NSEC_PER_SEC)); - - XCTAssertTrue(isPlayerClicked, @"Failed."); + [self waitForExpectationsWithTimeout:5.0 handler:nil]; + + XCTAssertTrue(isPlayerClicked, @"Failed to perform click on video."); } @@ -103,7 +110,7 @@ -(void)adPausedVideo:(id)ad{ - (void)adWasClicked:(id)ad{ NSLog(@"Test: Ad was clicked."); isPlayerClicked = YES; - dispatch_semaphore_signal(waitForPlayerToBeClicked); + [expectation fulfill]; } - (void)adDidReceiveAd:(id)ad{ diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m index 0952f170d..93dfd2a74 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m @@ -22,25 +22,38 @@ #import #import "ANInterstitialAd.h" -@interface VolumeClickTest(){ - ANInterstitialAd *interstitialAdView; -} - +@interface VolumeClickTest() @end @implementation VolumeClickTest -static dispatch_semaphore_t waitForVolumeButtonToBeClicked; static BOOL isVolumeButtonClicked; -- (void)setUp{ +static ANInterstitialAd *interstitialAdView; +static XCTestExpectation *expectation; + ++ (void)setUp{ [super setUp]; - isVolumeButtonClicked = NO; } ++ (void)tearDown{ + [super tearDown]; + UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; + UIViewController *visibleViewController = controller.navigationController.visibleViewController; + while (visibleViewController) { + [visibleViewController dismissViewControllerAnimated:YES completion:nil]; + visibleViewController = controller.navigationController.visibleViewController; + } + interstitialAdView.delegate = nil; + interstitialAdView.videoAdDelegate = nil; + interstitialAdView = nil; +} + - (void)tearDown{ [super tearDown]; + isVolumeButtonClicked = NO; + expectation = nil; } - (void)test1PrepareForVolumeTesting{ @@ -68,14 +81,15 @@ - (void)test1PrepareForVolumeTesting{ - (void) test2UnmuteVolume{ XCTAssertNil(interstitial, @"Failed to load video."); - - waitForVolumeButtonToBeClicked = dispatch_semaphore_create(0); + + expectation = [self expectationWithDescription:@"Waiting to unmute volume."]; + [tester waitForViewWithAccessibilityLabel:@"player"]; [self tapOnVolumeButton]; - - dispatch_semaphore_wait(waitForVolumeButtonToBeClicked, dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC)); - XCTAssertTrue(isVolumeButtonClicked, @"failed"); + [self waitForExpectationsWithTimeout:5.0 handler:nil]; + + XCTAssertTrue(isVolumeButtonClicked, @"failed to unmute volume."); } - (void) tapOnVolumeButton{ @@ -86,13 +100,13 @@ - (void) test3MuteVolume{ XCTAssertNil(interstitial, @"Failed to load video."); - waitForVolumeButtonToBeClicked = dispatch_semaphore_create(1); + expectation = [self expectationWithDescription:@"Waiting to mute volume."]; [self tapOnVolumeButton]; - dispatch_semaphore_wait(waitForVolumeButtonToBeClicked, dispatch_time(DISPATCH_TIME_NOW, 10*NSEC_PER_SEC)); + [self waitForExpectationsWithTimeout:5.0 handler:nil]; - XCTAssertTrue(isVolumeButtonClicked, @"failed."); + XCTAssertTrue(isVolumeButtonClicked, @"failed to mute volume."); } @@ -116,7 +130,7 @@ - (void) performClickOnInterstitial{ - (void)adMuted:(BOOL)isMuted withAd:(id)ad{ NSLog(@"Test: Ad was %@", isMuted?@"Muted":@"Unmuted"); isVolumeButtonClicked = YES; - dispatch_semaphore_signal(waitForVolumeButtonToBeClicked); + [expectation fulfill]; } - (void)adDidReceiveAd:(id)ad{ From 112b9b35a69a5eb3a9394ee1925a80b9ce5ae5fc Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 11 Dec 2015 13:59:05 -0500 Subject: [PATCH 41/92] MS-1829 Properly dismiss presented interstitial view controllers --- .../DisplayVideoAd/DisplayVideoAd.m | 6 +----- .../DisplayVideoAd/PlayerDelegateTests.m | 6 +----- .../OpenInBrowser/OpenInInAppBrowser.m | 8 ++------ .../VideoClicks/CloseVideoTest.m | 6 +----- .../VideoClicks/PlayerClickTest.m | 7 ++----- .../VideoClicks/VolumeClickTest.m | 6 +----- 6 files changed, 8 insertions(+), 31 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m index fec653842..eecbf370e 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/DisplayVideoAd.m @@ -36,11 +36,7 @@ + (void)setUp{ + (void)tearDown{ [super tearDown]; UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; - UIViewController *visibleViewController = controller.navigationController.visibleViewController; - while (visibleViewController) { - [visibleViewController dismissViewControllerAnimated:YES completion:nil]; - visibleViewController = controller.navigationController.visibleViewController; - } + [controller dismissViewControllerAnimated:NO completion:nil]; interstitialAdView.delegate = nil; interstitialAdView.videoAdDelegate = nil; interstitialAdView = nil; diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m index 24535017b..2fd54622d 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/DisplayVideoAd/PlayerDelegateTests.m @@ -43,11 +43,7 @@ + (void)setUp{ + (void)tearDown{ [super tearDown]; UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; - UIViewController *visibleViewController = controller.navigationController.visibleViewController; - while (visibleViewController) { - [visibleViewController dismissViewControllerAnimated:YES completion:nil]; - visibleViewController = controller.navigationController.visibleViewController; - } + [controller dismissViewControllerAnimated:NO completion:nil]; interstitialAdView.delegate = nil; interstitialAdView.videoAdDelegate = nil; interstitialAdView = nil; diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m index 9d0d3d02b..158e800fe 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInInAppBrowser.m @@ -37,14 +37,10 @@ + (void)setUp{ isDelegateFired = NO; } -- (void)tearDown{ ++ (void)tearDown{ [super tearDown]; UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; - UIViewController *visibleViewController = controller.navigationController.visibleViewController; - while (visibleViewController) { - [visibleViewController dismissViewControllerAnimated:YES completion:nil]; - visibleViewController = controller.navigationController.visibleViewController; - } + [controller dismissViewControllerAnimated:NO completion:nil]; interstitialAdView.delegate = nil; interstitialAdView.videoAdDelegate = nil; interstitialAdView = nil; diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m index ebb504037..37d8cae0e 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/CloseVideoTest.m @@ -40,11 +40,7 @@ + (void)setUp{ + (void)tearDown{ [super tearDown]; UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; - UIViewController *visibleViewController = controller.navigationController.visibleViewController; - while (visibleViewController) { - [visibleViewController dismissViewControllerAnimated:YES completion:nil]; - visibleViewController = controller.navigationController.visibleViewController; - } + [controller dismissViewControllerAnimated:NO completion:nil]; interstitialAdView.delegate = nil; interstitialAdView.videoAdDelegate = nil; interstitialAdView = nil; diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m index 251c1776d..0a2d6bae4 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/PlayerClickTest.m @@ -40,11 +40,8 @@ + (void)setUp{ + (void)tearDown{ [super tearDown]; UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; - UIViewController *visibleViewController = controller.navigationController.visibleViewController; - while (visibleViewController) { - [visibleViewController dismissViewControllerAnimated:YES completion:nil]; - visibleViewController = controller.navigationController.visibleViewController; - } + [controller dismissViewControllerAnimated:NO completion:nil]; + interstitialAdView.delegate = nil; interstitialAdView.videoAdDelegate = nil; interstitialAdView = nil; diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m index 93dfd2a74..1900cd068 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/VideoClicks/VolumeClickTest.m @@ -40,11 +40,7 @@ + (void)setUp{ + (void)tearDown{ [super tearDown]; UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; - UIViewController *visibleViewController = controller.navigationController.visibleViewController; - while (visibleViewController) { - [visibleViewController dismissViewControllerAnimated:YES completion:nil]; - visibleViewController = controller.navigationController.visibleViewController; - } + [controller dismissViewControllerAnimated:NO completion:nil]; interstitialAdView.delegate = nil; interstitialAdView.videoAdDelegate = nil; interstitialAdView = nil; From 4725c5e49cd20398f89a1011c3b8dcca97ce6be9 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 11 Dec 2015 14:00:16 -0500 Subject: [PATCH 42/92] MS-1829 Properly dismiss presented interstitial view controllers --- .../OpenInBrowser/OpenInNativeBrowser.m | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m index c155b71b3..5ab86b00c 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m @@ -40,11 +40,7 @@ + (void)setUp{ + (void)tearDown{ [super tearDown]; UIViewController *controller = [[[UIApplication sharedApplication] keyWindow] rootViewController]; - UIViewController *visibleViewController = controller.navigationController.visibleViewController; - while (visibleViewController) { - [visibleViewController dismissViewControllerAnimated:YES completion:nil]; - visibleViewController = controller.navigationController.visibleViewController; - } + [controller dismissViewControllerAnimated:NO completion:nil]; interstitialAdView.delegate = nil; interstitialAdView.videoAdDelegate = nil; interstitialAdView = nil; From 48ae75490404a2a94e8b93164d5281b945bfa78d Mon Sep 17 00:00:00 2001 From: rpagaria Date: Fri, 11 Dec 2015 17:16:54 -0500 Subject: [PATCH 43/92] MemberId and Inventory code handled for UT Ad request --- sdk/internal/ANUniversalTagRequestBuilder.m | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sdk/internal/ANUniversalTagRequestBuilder.m b/sdk/internal/ANUniversalTagRequestBuilder.m index a5c506b9a..6091711a2 100644 --- a/sdk/internal/ANUniversalTagRequestBuilder.m +++ b/sdk/internal/ANUniversalTagRequestBuilder.m @@ -72,7 +72,7 @@ - (NSURLRequest *)request { - (NSDictionary *)requestBody { NSMutableDictionary *requestDict = [[NSMutableDictionary alloc] init]; - NSDictionary *tags = [self tag]; + NSDictionary *tags = [self tag:requestDict]; if (tags) { requestDict[@"tags"] = @[tags]; } @@ -113,12 +113,19 @@ - (NSArray *)keywords { return [kvSegmentsArray copy]; } -- (NSDictionary *)tag { +- (NSDictionary *)tag:(NSMutableDictionary *) requestDict { NSMutableDictionary *tagDict = [[NSMutableDictionary alloc] init]; NSInteger placementId = [[self.adFetcherDelegate placementId] integerValue]; - if (placementId > 0) { + + NSString *invCode = [self.adFetcherDelegate inventoryCode]; + NSInteger memberId = [self.adFetcherDelegate memberId]; + if(invCode && memberId>0){ + tagDict[@"code"] = invCode; + requestDict[@"member_id"] = @(memberId); + }else { tagDict[@"id"] = @(placementId); } + if ([self.adFetcherDelegate conformsToProtocol:@protocol(ANInterstitialAdFetcherDelegate)]) { id interstitialDelegate = (id)self.adFetcherDelegate; NSMutableSet *allowedSizes = [interstitialDelegate allowedAdSizes]; From 23d9e06bddd42239c10fab164c0813a164de95c9 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 8 Jan 2016 15:34:12 -0500 Subject: [PATCH 44/92] MS-1746 Implemented CSM for /ut/v2 --- .../ViewController.m | 1 + sdk/VastDataModel/ANVast.h | 1 + sdk/VastDataModel/ANVast.m | 12 +- sdk/internal/ANInterstitialAdFetcher.h | 7 +- sdk/internal/ANInterstitialAdFetcher.m | 126 +++++++++++- sdk/internal/ANMediatedAd.h | 2 + sdk/internal/ANStandardAd.h | 2 + sdk/internal/ANUniversalTagAdServerResponse.h | 3 + sdk/internal/ANUniversalTagAdServerResponse.m | 194 +++++++++++++----- sdk/internal/ANVideoPlayerViewController.m | 4 - 10 files changed, 283 insertions(+), 69 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m index 7dcfb7f44..d96204a8d 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m @@ -47,6 +47,7 @@ - (IBAction)onTap:(UITapGestureRecognizer *)sender { } - (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; NSLog(@"view did appear"); } diff --git a/sdk/VastDataModel/ANVast.h b/sdk/VastDataModel/ANVast.h index a42ef9503..0359f3ebb 100644 --- a/sdk/VastDataModel/ANVast.h +++ b/sdk/VastDataModel/ANVast.h @@ -31,5 +31,6 @@ @property (nonatomic, readonly) NSURL *mediaFileURL; @property (nonatomic, readwrite) NSString *notifyUrlString; +@property (nonatomic, readwrite) NSArray *impressionUrls; @end \ No newline at end of file diff --git a/sdk/VastDataModel/ANVast.m b/sdk/VastDataModel/ANVast.m index 68f687e13..002afd92b 100644 --- a/sdk/VastDataModel/ANVast.m +++ b/sdk/VastDataModel/ANVast.m @@ -59,23 +59,24 @@ - (instancetype)initWithContent:(NSString *)vast { return self; } -- (void)parseVastResponse:(NSString *)response +- (BOOL)parseVastResponse:(NSString *)response error:(NSError **)error { ANXML *xml = [ANXML newANXMLWithXMLString:response error:error]; - if (!*error) { + BOOL errorOcurred = (*error != nil); + if (!errorOcurred) { waitForVastParsingCompletion = dispatch_semaphore_create(0); releaseCounter = 0; [self parseRootElement:xml.rootXMLElement]; dispatch_semaphore_wait(waitForVastParsingCompletion, dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC)); } + return errorOcurred; } static dispatch_semaphore_t waitForVastParsingCompletion; static int releaseCounter; -- (void)parseResponseWithURL:(NSURL *)xmlURL - error:(NSError **)error { +- (void)parseResponseWithURL:(NSURL *)xmlURL { [ANXML newANXMLWithURL:xmlURL success:^(ANXML *tbxml) { [self parseRootElement:tbxml.rootXMLElement]; @@ -138,9 +139,8 @@ - (void) parseRootElement:(ANXMLElement *)rootElement{ if (!isVastTagURIAlreadyExists) { [self.anWrappers addObject:wrapper]; NSURL *vastURL = [NSURL URLWithString:wrapper.vastAdTagURI]; - NSError *error; releaseCounter++; - [self parseResponseWithURL:vastURL error:&error]; + [self parseResponseWithURL:vastURL]; } } } diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index bd31a4167..5ec4698b5 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -18,7 +18,7 @@ @protocol ANInterstitialAdFetcherDelegate; -#define kANANInterstitialAdFetcherUseUTV2 0 +#define kANANInterstitialAdFetcherUseUTV2 1 #if kANANInterstitialAdFetcherUseUTV2 static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2video"; @@ -30,6 +30,11 @@ static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http: - (instancetype)initWithDelegate:(id)delegate; - (void)stopAdLoad; +- (void)fireResultCB:(NSString *)resultCBString + reason:(ANAdResponseCode)reason + adObject:(id)adObject + auctionID:(NSString *)auctionID; +- (NSTimeInterval)getTotalLatency:(NSTimeInterval)stopTime; @end diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 77a5694b2..12908d092 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -20,6 +20,8 @@ #import "ANMRAIDContainerView.h" #import "ANUniversalTagRequestBuilder.h" #import "ANUniversalTagAdServerResponse.h" +#import "ANMediatedAd.h" +#import "ANMediationAdViewController.h" @interface ANInterstitialAdFetcher () @@ -30,6 +32,10 @@ @interface ANInterstitialAdFetcher () 0; + + if (numberOfAdsLeft == 0) { + ANLogWarn(@"response_no_ads"); + [self finishRequestWithError:ANError(@"response_no_ads", ANAdResponseUnableToFill)]; + return; + } + + // stop waterfall if delegate reference (adview) was lost + if (!self.delegate) { + return; + } + + id nextAd = [self.ads firstObject]; + [self.ads removeObjectAtIndex:0]; + if ([nextAd isKindOfClass:[ANMediatedAd class]]) { + [self handleMediatedAd:nextAd]; + } else if ([nextAd isKindOfClass:[ANVideoAd class]]) { + [self handleVideoAd:nextAd]; + } else if ([nextAd isKindOfClass:[ANStandardAd class]]) { + [self handleStandardAd:nextAd]; + } else { + ANLogError(@"Implementation error: Unknown ad in ads waterfall"); + } +} + #pragma mark - Standard Ads - (void)handleStandardAd:(ANStandardAd *)standardAd { @@ -117,6 +150,59 @@ - (void)didCompleteFirstLoadFromWebViewController:(ANAdWebViewController *)contr [self processFinalResponse:response]; } +#pragma mark - VAST Ads + +- (void)handleVideoAd:(ANVideoAd *)vastAd { + NSString *notifyUrlString = vastAd.vastDataModel.notifyUrlString; + if (notifyUrlString.length > 0) { + ANLogDebug(@"(notify_url, %@)", notifyUrlString); + [self fireAndIgnoreResultCB:[NSURL URLWithString:notifyUrlString]]; + } + ANAdFetcherResponse *adFetcherResponse = [ANAdFetcherResponse responseWithAdObject:vastAd]; + [self processFinalResponse:adFetcherResponse]; +} + +#pragma mark - Mediated Ads + +- (void)handleMediatedAd:(ANMediatedAd *)mediatedAd { + [self clearMediationController]; + // Casting ANInterstitialAdFetcher to ANAdFetcher is intentional, even if they have no relation. + // This class implements the necessary methods from ANAdFether in order to avoid any issues. + self.mediationController = [ANMediationAdViewController initMediatedAd:mediatedAd + withFetcher:(ANAdFetcher *)self + adViewDelegate:self.delegate]; +} + +- (void)clearMediationController { + self.mediationController = nil; +} + +- (void)fireAndIgnoreResultCB:(NSURL *)url { + // just fire resultCB asnychronously and ignore result + [NSURLConnection sendAsynchronousRequest:ANBasicRequestWithURL(url) + queue:[NSOperationQueue mainQueue] + completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { + + }]; +} + +- (void)fireResultCB:(NSString *)resultCBString + reason:(ANAdResponseCode)reason + adObject:(id)adObject + auctionID:(NSString *)auctionID { + NSURL *resultURL = [NSURL URLWithString:resultCBString]; + if ([resultCBString length] > 0) { + [self fireAndIgnoreResultCB:resultURL]; + } + if (reason == ANAdResponseSuccessful) { + ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:adObject]; + response.auctionID = auctionID; + [self processFinalResponse:response]; + } else { + [self continueWaterfall]; + } +} + #pragma mark - NSURLConnectionDataDelegate - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { @@ -153,7 +239,7 @@ - (void)connectionDidFinishLoading:(NSURLConnection *)connection { encoding:NSUTF8StringEncoding]; ANPostNotifications(kANAdFetcherDidReceiveResponseNotification, self, @{kANAdFetcherAdResponseKey: (responseString ? responseString : @"")}); - [self processAdResponse:adResponse]; + [self processAdServerResponse:adResponse]; } } @@ -166,4 +252,24 @@ - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)err } } +#pragma mark Total Latency Measurement + +/** + * Mark the beginning of an ad request for latency recording + */ +- (void)markLatencyStart { + self.totalLatencyStart = [NSDate timeIntervalSinceReferenceDate]; +} + +/** + * Returns the time difference since ad request start + */ +- (NSTimeInterval)getTotalLatency:(NSTimeInterval)stopTime { + if ((self.totalLatencyStart > 0) && (stopTime > 0)) { + return (stopTime - self.totalLatencyStart); + } + // return -1 if invalid parameters + return -1; +} + @end \ No newline at end of file diff --git a/sdk/internal/ANMediatedAd.h b/sdk/internal/ANMediatedAd.h index 5cb174cbc..bbd2696f8 100644 --- a/sdk/internal/ANMediatedAd.h +++ b/sdk/internal/ANMediatedAd.h @@ -25,4 +25,6 @@ @property (nonatomic, readwrite, strong) NSString *resultCB; @property (nonatomic, readwrite, strong) NSString *auctionInfo; +@property (nonatomic, readwrite, strong) NSArray *impressionUrls; + @end diff --git a/sdk/internal/ANStandardAd.h b/sdk/internal/ANStandardAd.h index 79283ec46..44eb39b24 100644 --- a/sdk/internal/ANStandardAd.h +++ b/sdk/internal/ANStandardAd.h @@ -24,4 +24,6 @@ @property (nonatomic, readwrite, assign, getter=isMraid) BOOL mraid; +@property (nonatomic, readwrite, strong) NSArray *impressionUrls; + @end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagAdServerResponse.h b/sdk/internal/ANUniversalTagAdServerResponse.h index ed275455a..1e4094f1f 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.h +++ b/sdk/internal/ANUniversalTagAdServerResponse.h @@ -28,5 +28,8 @@ @property (nonatomic, readonly, strong) NSMutableArray *standardAds; @property (nonatomic, readonly, strong) ANVideoAd *videoAd; @property (nonatomic, readonly, strong) NSMutableArray *videoAds; +@property (nonatomic, readonly, strong) NSMutableArray *mediatedAds; + +@property (nonatomic, readonly, strong) NSMutableArray *ads; @end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index da126ae42..7c3a6c287 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -16,6 +16,7 @@ #import "ANUniversalTagAdServerResponse.h" #import "ANLogging.h" #import "ANInterstitialAdFetcher.h" +#import "ANMediatedAd.h" static NSString *const kANUniversalTagAdServerResponseKeyNoBid = @"nobid"; static NSString *const kANUniversalTagAdServerResponseKeyTags = @"tags"; @@ -36,6 +37,20 @@ static NSString *const kANUniversalTagAdServerResponseMraidJSFilename = @"mraid.js"; +// Mediated +static NSString *const kANUniversalTagAdServerResponseValueIOS = @"ios"; +static NSString *const kANUniversalTagAdServerResponseKeyHandler = @"handler"; +static NSString *const kANUniversalTagAdServerResponseKeyClass = @"class"; +static NSString *const kANUniversalTagAdServerResponseKeyId = @"id"; +static NSString *const kANUniversalTagAdServerResponseKeyParam = @"param"; +static NSString *const kANUniversalTagAdServerResponseKeyResultCB = @"response_url"; + + +// Standard +static NSString *const kANUniversalTagAdServerResponseKeyType = @"type"; +static NSString *const kANUniversalTagAdServerResponseKeyWidth = @"width"; +static NSString *const kANUniversalTagAdServerResponseKeyHeight = @"height"; + @interface ANUniversalTagAdServerResponse () @property (nonatomic, readwrite, assign) BOOL containsAds; @@ -43,6 +58,9 @@ @interface ANUniversalTagAdServerResponse () @property (nonatomic, readwrite, strong) NSMutableArray *standardAds; @property (nonatomic, readwrite, strong) ANVideoAd *videoAd; @property (nonatomic, readwrite, strong) NSMutableArray *videoAds; +@property (nonatomic, readwrite, strong) NSMutableArray *mediatedAds; + +@property (nonatomic, readwrite, strong) NSMutableArray *ads; @end @@ -74,11 +92,11 @@ - (void)processResponseData:(NSData *)data { } NSDictionary *adObject = [[self class] adObjectFromTag:tag]; if (adObject) { - ANStandardAd *standardAd = [[self class] standardAdFromAdObject:adObject]; + ANStandardAd *standardAd = [[self class] standardAdFromRTBObject:adObject]; if (standardAd) { [self.standardAds addObject:standardAd]; } - ANVideoAd *videoAd = [[self class] videoAdFromAdObject:adObject]; + ANVideoAd *videoAd = [[self class] videoAdFromRTBObject:adObject]; if (videoAd) { videoAd.vastDataModel.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; [self.videoAds addObject:videoAd]; @@ -113,40 +131,6 @@ + (NSDictionary *)adObjectFromTag:(NSDictionary *)tag { return nil; } -+ (ANStandardAd *)standardAdFromAdObject:(NSDictionary *)adObject { - if ([adObject[kANUniversalTagAdServerResponseKeyBanner] isKindOfClass:[NSDictionary class]]) { - NSDictionary *banner = adObject[kANUniversalTagAdServerResponseKeyBanner]; - ANStandardAd *standardAd = [[ANStandardAd alloc] init]; - standardAd.width = [banner[kANUniversalTagAdServerResponseBannerKeyWidth] description]; - standardAd.height = [banner[kANUniversalTagAdServerResponseBannerKeyHeight] description]; - standardAd.content = [banner[kANUniversalTagAdServerResponseBannerKeyContent] description]; - if (!standardAd.content || [standardAd.content length] == 0) { - ANLogError(@"blank_ad"); - return nil; - } - NSRange mraidJSRange = [standardAd.content rangeOfString:kANUniversalTagAdServerResponseMraidJSFilename]; - if (mraidJSRange.location != NSNotFound) { - standardAd.mraid = YES; - } - return standardAd; - } - return nil; -} - -+ (ANVideoAd *)videoAdFromAdObject:(NSDictionary *)adObject { - if ([adObject[kANUniversalTagAdServerResponseKeyVideo] isKindOfClass:[NSDictionary class]]) { - NSDictionary *video = adObject[kANUniversalTagAdServerResponseKeyVideo]; - ANVideoAd *videoAd = [[ANVideoAd alloc] init]; - videoAd.content = [video[kANUniversalTagAdServerResponseVideoKeyContent] description]; - videoAd.vastDataModel = [[ANVast alloc] initWithContent:videoAd.content]; - if (!videoAd.vastDataModel) { - ANLogDebug(@"Invalid VAST content, unable to use"); - return nil; - } - return videoAd; - } - return nil; -} #pragma mark - Universal Tag V2 Support @@ -164,26 +148,36 @@ - (void)processV2ResponseData:(NSData *)data { if (![adObject isKindOfClass:[NSDictionary class]]) { continue; } + // need trackers NSDictionary *rtbObject = [[self class] rtbObjectFromAdObject:adObject]; - if (!rtbObject) { - return; + if (rtbObject) { + ANStandardAd *standardAd = [[self class] standardAdFromRTBObject:rtbObject]; + if (standardAd) { + [self.ads addObject:standardAd]; + } + ANVideoAd *videoAd = [[self class] videoAdFromRTBObject:rtbObject]; + if (videoAd) { + videoAd.vastDataModel.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; + [self.ads addObject:videoAd]; + } } - ANStandardAd *standardAd = [[self class] standardAdFromAdObject:rtbObject]; - if (standardAd) { - [self.standardAds addObject:standardAd]; + NSDictionary *csmObject = [[self class] csmObjectFromAdObject:adObject]; + if (csmObject) { + ANMediatedAd *mediatedAd = [[self class] mediatedAdFromCSMObject:csmObject]; + if (mediatedAd) { + [self.ads addObject:mediatedAd]; + } } - ANVideoAd *videoAd = [[self class] videoAdFromAdObject:rtbObject]; - if (videoAd) { - videoAd.vastDataModel.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; - [self.videoAds addObject:videoAd]; + NSDictionary *ssmObject = [[self class] ssmObjectFromAdObject:adObject]; + if (ssmObject) { + // add ssm object to mediated array + // add notify url to ssm vast mediated object } } } } } - self.standardAd = [self.standardAds firstObject]; - self.videoAd = [self.videoAds firstObject]; - if (self.standardAd || self.videoAd) { + if (self.ads.count > 0) { self.containsAds = YES; } } @@ -202,6 +196,100 @@ + (NSDictionary *)rtbObjectFromAdObject:(NSDictionary *)adObject { return nil; } ++ (NSDictionary *)csmObjectFromAdObject:(NSDictionary *)adObject { + if ([adObject[@"csm"] isKindOfClass:[NSDictionary class]]) { + return adObject[@"csm"]; + } + return nil; +} + ++ (NSDictionary *)ssmObjectFromAdObject:(NSDictionary *)adObject { + if ([adObject[@"ssm"] isKindOfClass:[NSDictionary class]]) { + return adObject[@"ssm"]; + } + return nil; +} + ++ (ANStandardAd *)standardAdFromRTBObject:(NSDictionary *)rtbObject { + if ([rtbObject[kANUniversalTagAdServerResponseKeyBanner] isKindOfClass:[NSDictionary class]]) { + NSDictionary *banner = rtbObject[kANUniversalTagAdServerResponseKeyBanner]; + ANStandardAd *standardAd = [[ANStandardAd alloc] init]; + standardAd.width = [banner[kANUniversalTagAdServerResponseBannerKeyWidth] description]; + standardAd.height = [banner[kANUniversalTagAdServerResponseBannerKeyHeight] description]; + standardAd.content = [banner[kANUniversalTagAdServerResponseBannerKeyContent] description]; + standardAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:rtbObject]; + if (!standardAd.content || [standardAd.content length] == 0) { + ANLogError(@"blank_ad"); + return nil; + } + NSRange mraidJSRange = [standardAd.content rangeOfString:kANUniversalTagAdServerResponseMraidJSFilename]; + if (mraidJSRange.location != NSNotFound) { + standardAd.mraid = YES; + } + return standardAd; + } + return nil; +} + ++ (ANVideoAd *)videoAdFromRTBObject:(NSDictionary *)rtbObject { + if ([rtbObject[kANUniversalTagAdServerResponseKeyVideo] isKindOfClass:[NSDictionary class]]) { + NSDictionary *video = rtbObject[kANUniversalTagAdServerResponseKeyVideo]; + ANVideoAd *videoAd = [[ANVideoAd alloc] init]; + videoAd.content = [video[kANUniversalTagAdServerResponseVideoKeyContent] description]; + videoAd.vastDataModel = [[ANVast alloc] initWithContent:videoAd.content]; + if (!videoAd.vastDataModel) { + ANLogDebug(@"Invalid VAST content, unable to use"); + return nil; + } + videoAd.vastDataModel.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:rtbObject]; + return videoAd; + } + return nil; +} + ++ (ANMediatedAd *)mediatedAdFromCSMObject:(NSDictionary *)csmObject { + if ([csmObject[kANUniversalTagAdServerResponseKeyHandler] isKindOfClass:[NSArray class]]) { + ANMediatedAd *mediatedAd; + NSArray *handlerArray = (NSArray *)csmObject[kANUniversalTagAdServerResponseKeyHandler]; + for (id handlerObject in handlerArray) { + if ([handlerObject isKindOfClass:[NSDictionary class]]) { + NSDictionary *handlerDict = (NSDictionary *)handlerObject; + NSString *type = [handlerDict[kANUniversalTagAdServerResponseKeyType] description]; + if ([type.lowercaseString isEqualToString:kANUniversalTagAdServerResponseValueIOS]) { + NSString *className = [handlerDict[kANUniversalTagAdServerResponseKeyClass] description]; + if ([className length] == 0) { + return nil; + } + mediatedAd = [[ANMediatedAd alloc] init]; + mediatedAd.className = className; + mediatedAd.param = [handlerDict[kANUniversalTagAdServerResponseKeyParam] description]; + mediatedAd.width = [handlerDict[kANUniversalTagAdServerResponseKeyWidth] description]; + mediatedAd.height = [handlerDict[kANUniversalTagAdServerResponseKeyHeight] description]; + mediatedAd.adId = [handlerDict[kANUniversalTagAdServerResponseKeyId] description]; + break; + } + } + } + mediatedAd.resultCB = [csmObject[kANUniversalTagAdServerResponseKeyResultCB] description]; + mediatedAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:csmObject]; + return mediatedAd; + } + return nil; +} + ++ (NSArray *)impressionUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + if ([contentSourceObject[@"trackers"] isKindOfClass:[NSArray class]]) { + NSArray *trackers = contentSourceObject[@"trackers"]; + if ([[trackers firstObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *trackerDict = [trackers firstObject]; + if ([trackerDict[@"impression_urls"] isKindOfClass:[NSArray class]]) { + return trackerDict[@"impression_urls"]; + } + } + } + return nil; +} + #pragma mark - Helper Methods - (NSMutableArray *)standardAds { @@ -214,6 +302,16 @@ - (NSMutableArray *)videoAds { return _videoAds; } +- (NSMutableArray *)mediatedAds { + if (!_mediatedAds) _mediatedAds = [[NSMutableArray alloc] init]; + return _mediatedAds; +} + +- (NSMutableArray *)ads { + if (!_ads) _ads = [[NSMutableArray alloc] init]; + return _ads; +} + + (NSDictionary *)jsonResponseFromData:(NSData *)data { NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 1c2f47dbc..9c45a715f 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -204,10 +204,6 @@ - (void)updateEventsWithSeconds:(float)seconds { ANLogDebug(@"(impression, %@)", impression.value); [self fireImpressionWithURL:impression.value]; } - if (self.vastDataModel.notifyUrlString) { - ANLogDebug(@"(impression, %@)", self.vastDataModel.notifyUrlString); - [self fireImpressionWithURL:self.vastDataModel.notifyUrlString]; - } } [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; } From 09b3970d4a448be15172a0a32ad1dea3aa3703be Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 8 Jan 2016 15:56:50 -0500 Subject: [PATCH 45/92] MS-1746 Fire UT impression urls for vast ads --- sdk/internal/ANVideoPlayerViewController.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 9c45a715f..8267b5110 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -201,9 +201,13 @@ - (void)updateEventsWithSeconds:(float)seconds { if (!isImpressionFired) { isImpressionFired = YES; for (ANImpression *impression in self.vastDataModel.anInLine.impressions) { - ANLogDebug(@"(impression, %@)", impression.value); + ANLogDebug(@"(VAST impression, %@)", impression.value); [self fireImpressionWithURL:impression.value]; } + for (NSString *impressionUrlString in self.vastDataModel.impressionUrls) { + ANLogDebug(@"(UT impression, %@)", impressionUrlString); + [self fireImpressionWithURL:impressionUrlString]; + } } [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; } From d57ce35d6bea272e6f61d86261d419e8b4b55cb5 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 11:32:03 -0500 Subject: [PATCH 46/92] MS-1746 Interstitial Behavior Changes To Support Interstitial Unified Demand --- sdk/internal/ANGlobal.m | 2 +- sdk/internal/ANInterstitialAd.m | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/sdk/internal/ANGlobal.m b/sdk/internal/ANGlobal.m index 2a71b351f..358deb1a3 100644 --- a/sdk/internal/ANGlobal.m +++ b/sdk/internal/ANGlobal.m @@ -245,7 +245,7 @@ CGRect ANPortraitScreenBounds() { } BOOL ANCanPresentFromViewController(UIViewController *viewController) { - return viewController.view.window != nil ? YES : NO; + return viewController.view.window != nil && viewController.presentedViewController == nil ? YES : NO; } @implementation ANGlobal diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index 039dcba3a..80589146b 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -66,8 +66,6 @@ @implementation ANInterstitialAd - (void)initialize { [super initialize]; - _controller = [[ANInterstitialAdViewController alloc] init]; - _controller.delegate = self; _precachedAdObjects = [NSMutableArray array]; _allowedAdSizes = [self getDefaultAllowedAdSizes]; _closeDelay = kANInterstitialDefaultCloseButtonDelay; @@ -149,10 +147,22 @@ - (void)interstitialAdFetcher:(ANInterstitialAdFetcher *)fetcher else { [self adRequestFailedWithError:response.error]; } - } - (void)displayAdFromViewController:(UIViewController *)controller { + BOOL displayError = NO; + if (!controller) { + ANLogError(@"Cannot present interstitial on a nil controller"); + displayError = YES; + } + if (!ANCanPresentFromViewController(controller)) { + ANLogError(@"View controller already presenting another controller modally, or view controller view not attached to window - could not present interstitial"); + displayError = YES; + } + if (displayError) { + [self adFailedToDisplay]; + return; + } id adToShow = nil; NSString *auctionID = nil; @@ -184,6 +194,8 @@ - (void)displayAdFromViewController:(UIViewController *)controller { } if ([adToShow isKindOfClass:[UIView class]]) { + self.controller = [[ANInterstitialAdViewController alloc] init]; + self.controller.delegate = self; if (!self.controller) { ANLogError(@"Could not present interstitial because of a nil interstitial controller. This happens because of ANSDK resources missing from the app bundle."); [self adFailedToDisplay]; From bd5e63e8aa15839ce2708f45fe569c938b377705 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 12:13:38 -0500 Subject: [PATCH 47/92] MS-1746 Track impressions for html rtb ads --- sdk/internal/ANAdFetcherResponse.h | 2 + sdk/internal/ANInterstitialAd.m | 6 +++ sdk/internal/ANInterstitialAdFetcher.h | 5 +- sdk/internal/ANInterstitialAdFetcher.m | 13 ++++- sdk/internal/ANInterstitialAdViewController.h | 2 + sdk/internal/ANInterstitialAdViewController.m | 52 +++++++++++++++++++ sdk/internal/ANStandardAd.h | 2 +- 7 files changed, 77 insertions(+), 5 deletions(-) diff --git a/sdk/internal/ANAdFetcherResponse.h b/sdk/internal/ANAdFetcherResponse.h index 2970d14ff..f2b53ed7a 100644 --- a/sdk/internal/ANAdFetcherResponse.h +++ b/sdk/internal/ANAdFetcherResponse.h @@ -29,4 +29,6 @@ @property (nonatomic, readwrite, strong) NSString *auctionID; +@property (nonatomic, readwrite, strong) NSArray *impressionUrls; // Array of impression url strings + @end \ No newline at end of file diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index 80589146b..0aadc90ed 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -139,6 +139,9 @@ - (void)interstitialAdFetcher:(ANInterstitialAdFetcher *)fetcher if (response.auctionID) { adViewWithDateLoaded[kANInterstitialAdViewAuctionInfoKey] = response.auctionID; } + if (response.impressionUrls) { + adViewWithDateLoaded[@"impressionUrls"] = response.impressionUrls; + } [self.precachedAdObjects addObject:adViewWithDateLoaded]; ANLogDebug(@"Stored ad %@ in precached ad views", adViewWithDateLoaded); @@ -165,6 +168,7 @@ - (void)displayAdFromViewController:(UIViewController *)controller { } id adToShow = nil; NSString *auctionID = nil; + NSArray *impressionUrls = nil; self.controller.orientationProperties = nil; self.controller.useCustomClose = NO; @@ -185,6 +189,7 @@ - (void)displayAdFromViewController:(UIViewController *)controller { // If ad is still valid, save a reference to it. We'll use it later adToShow = adDict[kANInterstitialAdViewKey]; auctionID = adDict[kANInterstitialAdViewAuctionInfoKey]; + impressionUrls = adDict[@"impressionUrls"]; [self.precachedAdObjects removeObjectAtIndex:0]; break; } @@ -195,6 +200,7 @@ - (void)displayAdFromViewController:(UIViewController *)controller { if ([adToShow isKindOfClass:[UIView class]]) { self.controller = [[ANInterstitialAdViewController alloc] init]; + self.controller.impressionUrls = impressionUrls; self.controller.delegate = self; if (!self.controller) { ANLogError(@"Could not present interstitial because of a nil interstitial controller. This happens because of ANSDK resources missing from the app bundle."); diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index 5ec4698b5..e0363f5d9 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -21,9 +21,10 @@ #define kANANInterstitialAdFetcherUseUTV2 1 #if kANANInterstitialAdFetcherUseUTV2 -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2video"; +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; +//static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2html"; #else -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://ib.adnxs.com/ut/v1"; +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v1"; #endif @interface ANInterstitialAdFetcher : NSObject diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 12908d092..3176f6d20 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -36,6 +36,8 @@ @interface ANInterstitialAdFetcher () @property (nonatomic, readwrite, strong) NSTimer *progressTimer; @@ -31,6 +32,12 @@ @interface ANInterstitialAdViewController () @property (nonatomic, readwrite, assign) UIInterfaceOrientation orientation; @property (nonatomic, readwrite, assign, getter=isDismissing) BOOL dismissing; @property (nonatomic, strong) ANCircularAnimationView *circularAnimationView; + +@property (nonatomic, readwrite, assign) NSUInteger viewabilityValue; +@property (nonatomic, readwrite, assign) NSUInteger targetViewabilityValue; +@property (nonatomic, readwrite, strong) NSTimer *viewabilityTimer; +@property (nonatomic, readwrite, assign) BOOL impressionHasBeenTracked; + @end @implementation ANInterstitialAdViewController @@ -96,6 +103,7 @@ - (void)viewWillAppear:(BOOL)animated { - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if (!self.viewed && ([self.delegate closeDelayForController] > 0.0)) { + [self setupViewabilityTracker]; [self startCountdownTimer]; self.viewed = YES; } else { @@ -279,5 +287,49 @@ - (void)closeButtonClicked{ [self.delegate interstitialAdViewControllerShouldDismiss:self]; } +#pragma mark - Impression Tracking + +- (void)setupViewabilityTracker { + __weak ANInterstitialAdViewController *weakSelf = self; + NSInteger requiredAmountOfSimultaneousViewableEvents = lround(kAppNexusNativeAdIABShouldBeViewableForTrackingDuration + / kAppNexusNativeAdCheckViewabilityForTrackingFrequency) + 1; + self.targetViewabilityValue = lround(pow(2, requiredAmountOfSimultaneousViewableEvents) - 1); + self.viewabilityTimer = [NSTimer an_scheduledTimerWithTimeInterval:kAppNexusNativeAdCheckViewabilityForTrackingFrequency + block:^ { + ANInterstitialAdViewController *strongSelf = weakSelf; + [strongSelf checkViewability]; + } + repeats:YES]; +} + +- (void)checkViewability { + self.viewabilityValue = (self.viewabilityValue << 1 | [self.view an_isAtLeastHalfViewable]) & self.targetViewabilityValue; + BOOL isIABViewable = (self.viewabilityValue == self.targetViewabilityValue); + if (isIABViewable) { + [self trackImpression]; + } +} + +- (void)trackImpression { + if (!self.impressionHasBeenTracked) { + ANLogDebug(@"Firing impression trackers"); + [self fireImpTrackers]; + [self.viewabilityTimer invalidate]; + self.impressionHasBeenTracked = YES; + } +} + +- (void)fireImpTrackers { + if (self.impressionUrls) { + NSMutableArray *impressionURLArray = [[NSMutableArray alloc] init]; + [self.impressionUrls enumerateObjectsUsingBlock:^(NSString *urlString, NSUInteger idx, BOOL *stop) { + NSURL *URL = [NSURL URLWithString:urlString]; + if (URL) { + [impressionURLArray addObject:URL]; + } + }]; + [ANNativeImpressionTrackerManager fireImpressionTrackerURLArray:impressionURLArray]; + } +} @end \ No newline at end of file diff --git a/sdk/internal/ANStandardAd.h b/sdk/internal/ANStandardAd.h index 44eb39b24..b2636b9aa 100644 --- a/sdk/internal/ANStandardAd.h +++ b/sdk/internal/ANStandardAd.h @@ -24,6 +24,6 @@ @property (nonatomic, readwrite, assign, getter=isMraid) BOOL mraid; -@property (nonatomic, readwrite, strong) NSArray *impressionUrls; +@property (nonatomic, readwrite, strong) NSArray *impressionUrls; // Array of impression url strings @end \ No newline at end of file From d862913671d8aaa08b299ab671972fc370620b52 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 12:28:39 -0500 Subject: [PATCH 48/92] MS-1746 Fire impression trackers for mediated interstitials --- .../InterstitialUnifiedDemand/ViewController.m | 4 ++-- sdk/internal/ANInterstitialAd.m | 15 +++++++++++++++ sdk/internal/ANInterstitialAdFetcher.h | 3 ++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m index d96204a8d..742ba2b38 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m @@ -22,9 +22,9 @@ - (void)viewDidLoad { [super viewDidLoad]; [ANLogManager setANLogLevel:ANLogLevelOff]; // VAST Placement - self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"5778861"]; +// self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"5778861"]; // HTML Placement -// self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"2140061"]; + self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"2140061"]; self.interstitialAd.closeDelay = 5.0; self.interstitialAd.opensInNativeBrowser = NO; self.interstitialAd.shouldServePublicServiceAnnouncements = YES; diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index 0aadc90ed..d51e6d6f9 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -28,6 +28,7 @@ #import "ANBrowserViewController.h" #import "ANVideoPlayerViewController.h" #import "ANVideoAd.h" +#import "ANNativeImpressionTrackerManager.h" static NSTimeInterval const kANInterstitialAdTimeout = 270.0; @@ -238,6 +239,9 @@ - (void)displayAdFromViewController:(UIViewController *)controller { [ANPBBuffer captureDelayedImage:controller.presentedViewController.view forAuctionID:auctionID]; } + if (impressionUrls) { + [self fireMediatedImpressionTrackers:impressionUrls]; + } } else if([adToShow isKindOfClass:[ANVideoAd class]]){ ANVideoAd *videoAd = (ANVideoAd *)adToShow; @@ -258,6 +262,17 @@ - (void)displayAdFromViewController:(UIViewController *)controller { } } +- (void)fireMediatedImpressionTrackers:(NSArray *)impressionUrls { + NSMutableArray *impressionURLArray = [[NSMutableArray alloc] init]; + [impressionUrls enumerateObjectsUsingBlock:^(NSString *urlString, NSUInteger idx, BOOL *stop) { + NSURL *URL = [NSURL URLWithString:urlString]; + if (URL) { + [impressionURLArray addObject:URL]; + } + }]; + [ANNativeImpressionTrackerManager fireImpressionTrackerURLArray:impressionURLArray]; +} + - (NSMutableSet *)getDefaultAllowedAdSizes { NSMutableSet *defaultAllowedSizes = [NSMutableSet set]; diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index e0363f5d9..c6384fcb1 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -21,8 +21,9 @@ #define kANANInterstitialAdFetcherUseUTV2 1 #if kANANInterstitialAdFetcherUseUTV2 -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; +//static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; //static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2html"; +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2csminterstitial"; #else static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v1"; #endif From 77fd694571857a7dc9b00018c146d02daf553dcc Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 15:14:29 -0500 Subject: [PATCH 49/92] MS-1746 Implemented server-side mediation --- .../ANSDK.xcodeproj/project.pbxproj | 44 +++-- sdk/internal/ANInterstitialAdFetcher.h | 2 +- sdk/internal/ANInterstitialAdFetcher.m | 46 +++++- sdk/internal/ANSSMContentFetcher.h | 32 ++++ sdk/internal/ANSSMContentFetcher.m | 104 ++++++++++++ sdk/internal/ANSSMStandardAd.h | 26 +++ sdk/internal/ANSSMStandardAd.m | 20 +++ sdk/internal/ANSSMVideoAd.h | 35 ++++ sdk/internal/ANSSMVideoAd.m | 20 +++ sdk/internal/ANUniversalTagAdServerResponse.m | 151 +++++++++++++++++- 10 files changed, 447 insertions(+), 33 deletions(-) create mode 100644 sdk/internal/ANSSMContentFetcher.h create mode 100644 sdk/internal/ANSSMContentFetcher.m create mode 100644 sdk/internal/ANSSMStandardAd.h create mode 100644 sdk/internal/ANSSMStandardAd.m create mode 100644 sdk/internal/ANSSMVideoAd.h create mode 100644 sdk/internal/ANSSMVideoAd.m diff --git a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj index f6004f415..70750f532 100644 --- a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj +++ b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj @@ -206,6 +206,9 @@ 8AE2D86719CC9B3A00001B70 /* ANGADCustomInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86519CC9B3A00001B70 /* ANGADCustomInterstitialAd.m */; }; 8AE2D86F19CC9B7300001B70 /* ANMoPubMediationBanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86C19CC9B7300001B70 /* ANMoPubMediationBanner.m */; }; 8AE2D87019CC9B7300001B70 /* ANMoPubMediationInterstitial.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86E19CC9B7300001B70 /* ANMoPubMediationInterstitial.m */; }; + 8AE3E1561C441F8E004AA151 /* ANSSMStandardAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE3E1551C441F8E004AA151 /* ANSSMStandardAd.m */; }; + 8AE3E1591C441FA6004AA151 /* ANSSMVideoAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE3E1581C441FA6004AA151 /* ANSSMVideoAd.m */; }; + 8AE3E15C1C443AA4004AA151 /* ANSSMContentFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE3E15B1C443AA4004AA151 /* ANSSMContentFetcher.m */; }; 8AE5E11E1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AE5E11C1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8AE7AD9E1A7AC4E5009E2F2F /* EventKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AE7AD9D1A7AC4E5009E2F2F /* EventKitUI.framework */; }; 8AF366BD19D492F30097019F /* ANSDKResources.bundle in Copy Files */ = {isa = PBXBuildFile; fileRef = EC48177B1845046A0066BBFE /* ANSDKResources.bundle */; }; @@ -871,28 +874,6 @@ 8ABC3FF31BE91B530099501F /* mute-on@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mute-on@3x.png"; sourceTree = ""; }; 8ABC3FFA1BE91D910099501F /* ANVast+ANCategory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANVast+ANCategory.h"; sourceTree = ""; }; 8ABC3FFB1BE91D910099501F /* ANVast+ANCategory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ANVast+ANCategory.m"; sourceTree = ""; }; - 8AC65F371A40DE63006BCF39 /* ANMRAIDCalendarManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDCalendarManager.h; sourceTree = ""; }; - 8AC65F381A40DE63006BCF39 /* ANMRAIDCalendarManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDCalendarManager.m; sourceTree = ""; }; - 8AC65F391A40DE63006BCF39 /* ANMRAIDContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDContainerView.h; sourceTree = ""; }; - 8AC65F3A1A40DE63006BCF39 /* ANMRAIDContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDContainerView.m; sourceTree = ""; }; - 8AC65F3B1A40DE63006BCF39 /* ANMRAIDExpandProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDExpandProperties.h; sourceTree = ""; }; - 8AC65F3C1A40DE63006BCF39 /* ANMRAIDExpandProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDExpandProperties.m; sourceTree = ""; }; - 8AC65F3D1A40DE63006BCF39 /* ANMRAIDExpandViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDExpandViewController.h; sourceTree = ""; }; - 8AC65F3E1A40DE63006BCF39 /* ANMRAIDExpandViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDExpandViewController.m; sourceTree = ""; }; - 8AC65F3F1A40DE63006BCF39 /* ANMRAIDJavascriptUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDJavascriptUtil.h; sourceTree = ""; }; - 8AC65F401A40DE63006BCF39 /* ANMRAIDJavascriptUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDJavascriptUtil.m; sourceTree = ""; }; - 8AC65F411A40DE63006BCF39 /* ANMRAIDOrientationProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDOrientationProperties.h; sourceTree = ""; }; - 8AC65F421A40DE63006BCF39 /* ANMRAIDOrientationProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDOrientationProperties.m; sourceTree = ""; }; - 8AC65F431A40DE63006BCF39 /* ANMRAIDResizeProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeProperties.h; sourceTree = ""; }; - 8AC65F441A40DE63006BCF39 /* ANMRAIDResizeProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeProperties.m; sourceTree = ""; }; - 8AC65F451A40DE63006BCF39 /* ANMRAIDResizeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeView.h; sourceTree = ""; }; - 8AC65F461A40DE63006BCF39 /* ANMRAIDResizeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeView.m; sourceTree = ""; }; - 8AC65F471A40DE63006BCF39 /* ANMRAIDResizeViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDResizeViewManager.h; sourceTree = ""; }; - 8AC65F481A40DE63006BCF39 /* ANMRAIDResizeViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDResizeViewManager.m; sourceTree = ""; }; - 8AC65F491A40DE63006BCF39 /* ANMRAIDUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDUtil.h; sourceTree = ""; }; - 8AC65F4A1A40DE63006BCF39 /* ANMRAIDUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDUtil.m; sourceTree = ""; }; - 8AC7C5361A3B5CEF00AA5548 /* ANAdWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdWebViewController.h; sourceTree = ""; }; - 8AC7C5371A3B5CEF00AA5548 /* ANAdWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdWebViewController.m; sourceTree = ""; }; 8AD5154019D214CA002E53D6 /* libANSDKAmazonAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKAmazonAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; 8AD5155519D216E6002E53D6 /* ANAdAdapterBannerAmazon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerAmazon.h; sourceTree = ""; }; 8AD5155619D216E6002E53D6 /* ANAdAdapterBannerAmazon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerAmazon.m; sourceTree = ""; }; @@ -958,6 +939,12 @@ 8AE2D86C19CC9B7300001B70 /* ANMoPubMediationBanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANMoPubMediationBanner.m; path = ../mediation/mediating/MoPub/ANMoPubMediationBanner.m; sourceTree = ""; }; 8AE2D86D19CC9B7300001B70 /* ANMoPubMediationInterstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANMoPubMediationInterstitial.h; path = ../mediation/mediating/MoPub/ANMoPubMediationInterstitial.h; sourceTree = ""; }; 8AE2D86E19CC9B7300001B70 /* ANMoPubMediationInterstitial.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANMoPubMediationInterstitial.m; path = ../mediation/mediating/MoPub/ANMoPubMediationInterstitial.m; sourceTree = ""; }; + 8AE3E1541C441F8E004AA151 /* ANSSMStandardAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANSSMStandardAd.h; sourceTree = ""; }; + 8AE3E1551C441F8E004AA151 /* ANSSMStandardAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANSSMStandardAd.m; sourceTree = ""; }; + 8AE3E1571C441FA6004AA151 /* ANSSMVideoAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANSSMVideoAd.h; sourceTree = ""; }; + 8AE3E1581C441FA6004AA151 /* ANSSMVideoAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANSSMVideoAd.m; sourceTree = ""; }; + 8AE3E15A1C443AA4004AA151 /* ANSSMContentFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANSSMContentFetcher.h; sourceTree = ""; }; + 8AE3E15B1C443AA4004AA151 /* ANSSMContentFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANSSMContentFetcher.m; sourceTree = ""; }; 8AE5E11C1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANAdView+PrivateMethods.h"; sourceTree = ""; }; 8AE7AD9D1A7AC4E5009E2F2F /* EventKitUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKitUI.framework; path = System/Library/Frameworks/EventKitUI.framework; sourceTree = SDKROOT; }; 8AE879FE1BDAD044001053D2 /* IMBanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IMBanner.h; sourceTree = ""; }; @@ -1282,6 +1269,12 @@ 8A73F9DC1BD6B34D00D18188 /* ANPlayerView.m */, 8A73F9DD1BD6B34D00D18188 /* ANReachability.h */, 8A73F9DE1BD6B34D00D18188 /* ANReachability.m */, + 8AE3E15A1C443AA4004AA151 /* ANSSMContentFetcher.h */, + 8AE3E15B1C443AA4004AA151 /* ANSSMContentFetcher.m */, + 8AE3E1541C441F8E004AA151 /* ANSSMStandardAd.h */, + 8AE3E1551C441F8E004AA151 /* ANSSMStandardAd.m */, + 8AE3E1571C441FA6004AA151 /* ANSSMVideoAd.h */, + 8AE3E1581C441FA6004AA151 /* ANSSMVideoAd.m */, 8A73F9DF1BD6B34D00D18188 /* ANStandardAd.h */, 8A73F9E01BD6B34D00D18188 /* ANStandardAd.m */, 8A73F9E11BD6B34D00D18188 /* ANTargetingParameters.m */, @@ -1424,8 +1417,8 @@ 8A73FA241BD6B34D00D18188 /* ANNonLinear.m */, ); path = NonLinearAds; - sourceTree = ""; - }; + sourceTree = ""; + }; 8A893ED31BFBD713007AC313 /* MoPubSDK */ = { isa = PBXGroup; children = ( @@ -2837,7 +2830,9 @@ 8A82FDF61A30F36C00A267A0 /* ANNativeImpressionTrackerManager.m in Sources */, 8A73FA5C1BD6B34E00D18188 /* ANWrapper.m in Sources */, 8A73FA331BD6B34E00D18188 /* ANAdRequestUrl.m in Sources */, + 8AE3E1591C441FA6004AA151 /* ANSSMVideoAd.m in Sources */, 8A73FA351BD6B34E00D18188 /* ANAdView.m in Sources */, + 8AE3E15C1C443AA4004AA151 /* ANSSMContentFetcher.m in Sources */, 8A87BF4B1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m in Sources */, 8A73FA421BD6B34E00D18188 /* ANMediatedAd.m in Sources */, 8A6385E31A14336000280054 /* ANNativeAdRequestUrlBuilder.m in Sources */, @@ -2845,6 +2840,7 @@ 8A73FA4E1BD6B34E00D18188 /* ANVolumeButtonView.m in Sources */, 8A73FA3E1BD6B34E00D18188 /* ANInterstitialAdViewController.m in Sources */, 8A73FA371BD6B34E00D18188 /* ANANJAMImplementation.m in Sources */, + 8AE3E1561C441F8E004AA151 /* ANSSMStandardAd.m in Sources */, 8A73FA521BD6B34E00D18188 /* ANMRAIDExpandViewController.m in Sources */, 8A73FA391BD6B34E00D18188 /* ANBrowserViewController.m in Sources */, 8A73FA601BD6B34E00D18188 /* ANLinear.m in Sources */, diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index c6384fcb1..855c32dc9 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -23,7 +23,7 @@ #if kANANInterstitialAdFetcherUseUTV2 //static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; //static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2html"; -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2csminterstitial"; +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2ssmbanner"; #else static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v1"; #endif diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 3176f6d20..ee8b720d5 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -22,8 +22,12 @@ #import "ANUniversalTagAdServerResponse.h" #import "ANMediatedAd.h" #import "ANMediationAdViewController.h" +#import "ANSSMStandardAd.h" +#import "ANSSMVideoAd.h" +#import "ANSSMContentFetcher.h" -@interface ANInterstitialAdFetcher () +@interface ANInterstitialAdFetcher () @property (nonatomic, readwrite, weak) id delegate; @@ -38,6 +42,9 @@ @interface ANInterstitialAdFetcher () + +@protocol ANSSMContentFetcherDelegate; + +@interface ANSSMContentFetcher : NSObject + +- (instancetype)initWithUrlString:(NSString *)urlString + delegate:(id)delegate; + +@end + +@protocol ANSSMContentFetcherDelegate + +- (void)contentFetcher:(ANSSMContentFetcher *)fetcher didLoadContent:(NSString *)content; +- (void)contentFetcherFailedToLoadContent:(ANSSMContentFetcher *)fetcher; + +@end \ No newline at end of file diff --git a/sdk/internal/ANSSMContentFetcher.m b/sdk/internal/ANSSMContentFetcher.m new file mode 100644 index 000000000..d36357361 --- /dev/null +++ b/sdk/internal/ANSSMContentFetcher.m @@ -0,0 +1,104 @@ +/* Copyright 2016 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANSSMContentFetcher.h" +#import "ANGlobal.h" +#import "ANLogging.h" +#import "ANAdConstants.h" + +@interface ANSSMContentFetcher () + +@property (nonatomic, readwrite, strong) NSURLConnection *connection; +@property (nonatomic, readwrite, strong) NSMutableData *data; + +@property (nonatomic, readwrite, weak) id delegate; + +@end + +@implementation ANSSMContentFetcher + +- (instancetype)initWithUrlString:(NSString *)urlString + delegate:(id)delegate { + if (self = [super init]) { + self.delegate = delegate; + [self requestContentWithUrlString:urlString]; + } + return self; +} + +- (void)requestContentWithUrlString:(NSString *)urlString { + NSURLRequest *request = ANBasicRequestWithURL([NSURL URLWithString:urlString]); + self.connection = [NSURLConnection connectionWithRequest:request + delegate:self]; + if (!self.connection) { + ANLogDebug(@"Invalid connection for server-side mediation request"); + [self.delegate contentFetcherFailedToLoadContent:self]; + } else { + ANLogDebug(@"Starting server-side mediation request: %@", request); + } +} + +#pragma mark - NSURLConnectionDataDelegate + +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { + if (connection == self.connection) { + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; + NSInteger status = [httpResponse statusCode]; + + if (status >= 400) { + [connection cancel]; + NSError *statusError = ANError(@"connection_failed %ld", ANAdResponseNetworkError, (long)status); + [self connection:connection didFailWithError:statusError]; + return; + } + } + + self.data = [NSMutableData data]; + ANLogDebug(@"Received server-side mediation response: %@", response); + } else { + ANLogDebug(@"Received server-side mediation response from unknown"); + } +} + +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d { + if (connection == self.connection) { + [self.data appendData:d]; + } +} + +- (void)connectionDidFinishLoading:(NSURLConnection *)connection { + if (connection == self.connection) { + NSString *content = [[NSString alloc] initWithData:self.data + encoding:NSUTF8StringEncoding]; + if (content.length > 0) { + ANLogDebug(@"Received server-side mediation content: %@", content); + [self.delegate contentFetcher:self didLoadContent:content]; + } else { + ANLogDebug(@"Failed to receive server-side mediation content"); + [self.delegate contentFetcherFailedToLoadContent:self]; + } + } +} + +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { + if (connection == self.connection) { + ANLogDebug(@"Failed to receive server-side mediation content"); + [self.delegate contentFetcherFailedToLoadContent:self]; + } +} + + +@end \ No newline at end of file diff --git a/sdk/internal/ANSSMStandardAd.h b/sdk/internal/ANSSMStandardAd.h new file mode 100644 index 000000000..f9ada4d81 --- /dev/null +++ b/sdk/internal/ANSSMStandardAd.h @@ -0,0 +1,26 @@ +/* Copyright 2016 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface ANSSMStandardAd : NSObject + +@property (nonatomic, readwrite, strong) NSString *urlString; +@property (nonatomic, readwrite, strong) NSString *height; +@property (nonatomic, readwrite, strong) NSString *width; + +@property (nonatomic, readwrite, strong) NSArray *impressionUrls; // Array of impression url strings + +@end \ No newline at end of file diff --git a/sdk/internal/ANSSMStandardAd.m b/sdk/internal/ANSSMStandardAd.m new file mode 100644 index 000000000..8b6f2aaa0 --- /dev/null +++ b/sdk/internal/ANSSMStandardAd.m @@ -0,0 +1,20 @@ +/* Copyright 2016 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANSSMStandardAd.h" + +@implementation ANSSMStandardAd + +@end diff --git a/sdk/internal/ANSSMVideoAd.h b/sdk/internal/ANSSMVideoAd.h new file mode 100644 index 000000000..7588b044a --- /dev/null +++ b/sdk/internal/ANSSMVideoAd.h @@ -0,0 +1,35 @@ +/* Copyright 2016 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface ANSSMVideoAd : NSObject + +@property (nonatomic, readwrite, strong) NSString *urlString; + +@property (nonatomic, readwrite, strong) NSString *notifyUrlString; + +@property (nonatomic, readwrite, strong) NSArray *impressionUrls; // Array of impression url strings +@property (nonatomic, readwrite, strong) NSArray *errorUrls; +@property (nonatomic, readwrite, strong) NSArray *videoClickUrls; + +@property (nonatomic, readwrite, strong) NSArray *videoEventStartUrls; +@property (nonatomic, readwrite, strong) NSArray *videoEventSkipUrls; +@property (nonatomic, readwrite, strong) NSArray *videoEventFirstQuartileUrls; +@property (nonatomic, readwrite, strong) NSArray *videoEventMidpointUrls; +@property (nonatomic, readwrite, strong) NSArray *videoEventThirdQuartileUrls; +@property (nonatomic, readwrite, strong) NSArray *videoEventCompleteUrls; + +@end \ No newline at end of file diff --git a/sdk/internal/ANSSMVideoAd.m b/sdk/internal/ANSSMVideoAd.m new file mode 100644 index 000000000..84659cdc2 --- /dev/null +++ b/sdk/internal/ANSSMVideoAd.m @@ -0,0 +1,20 @@ +/* Copyright 2016 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANSSMVideoAd.h" + +@implementation ANSSMVideoAd + +@end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 7c3a6c287..96b9aab3f 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -17,6 +17,8 @@ #import "ANLogging.h" #import "ANInterstitialAdFetcher.h" #import "ANMediatedAd.h" +#import "ANSSMStandardAd.h" +#import "ANSSMVideoAd.h" static NSString *const kANUniversalTagAdServerResponseKeyNoBid = @"nobid"; static NSString *const kANUniversalTagAdServerResponseKeyTags = @"tags"; @@ -170,8 +172,18 @@ - (void)processV2ResponseData:(NSData *)data { } NSDictionary *ssmObject = [[self class] ssmObjectFromAdObject:adObject]; if (ssmObject) { - // add ssm object to mediated array - // add notify url to ssm vast mediated object + if ([adObject[@"ad_type"] isEqualToString:@"banner"]) { + ANSSMStandardAd *standardAd = [[self class] standardSSMAdFromSSMObject:ssmObject]; + if (standardAd) { + [self.ads addObject:standardAd]; + } + } else if ([adObject[@"ad_type"] isEqualToString:@"video"]) { + ANSSMVideoAd *videoAd = [[self class] videoSSMAdFromSSMObject:ssmObject]; + if (videoAd) { + videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; + [self.ads addObject:videoAd]; + } + } } } } @@ -277,19 +289,144 @@ + (ANMediatedAd *)mediatedAdFromCSMObject:(NSDictionary *)csmObject { return nil; } -+ (NSArray *)impressionUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { ++ (ANSSMStandardAd *)standardSSMAdFromSSMObject:(NSDictionary *)ssmObject { + if ([ssmObject[kANUniversalTagAdServerResponseKeyHandler] isKindOfClass:[NSArray class]]) { + NSArray *handlerArray = (NSArray *)ssmObject[kANUniversalTagAdServerResponseKeyHandler]; + if ([[handlerArray firstObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *handlerDict = (NSDictionary *)[handlerArray firstObject]; + ANSSMStandardAd *standardAd = [[ANSSMStandardAd alloc] init]; + standardAd.urlString = handlerDict[@"url"]; + standardAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; + if ([ssmObject[kANUniversalTagAdServerResponseKeyBanner] isKindOfClass:[NSDictionary class]]) { + NSDictionary *banner = ssmObject[kANUniversalTagAdServerResponseKeyBanner]; + standardAd.width = [banner[kANUniversalTagAdServerResponseBannerKeyWidth] description]; + standardAd.height = [banner[kANUniversalTagAdServerResponseBannerKeyHeight] description]; + } + return standardAd; + } + } + return nil; +} + ++ (ANSSMVideoAd *)videoSSMAdFromSSMObject:(NSDictionary *)ssmObject { + if ([ssmObject[kANUniversalTagAdServerResponseKeyHandler] isKindOfClass:[NSArray class]]) { + NSArray *handlerArray = (NSArray *)ssmObject[kANUniversalTagAdServerResponseKeyHandler]; + if ([[handlerArray firstObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *handlerDict = (NSDictionary *)[handlerArray firstObject]; + ANSSMVideoAd *videoAd = [[ANSSMVideoAd alloc] init]; + videoAd.urlString = handlerDict[@"url"]; + videoAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; + videoAd.errorUrls = [[self class] errorUrlsFromContentSourceObject:ssmObject]; + videoAd.videoClickUrls = [[self class] videoClickUrlsFromContentSourceObject:ssmObject]; + videoAd.videoEventStartUrls = [[self class] videoStartUrlsFromContentSourceObject:ssmObject]; + videoAd.videoEventSkipUrls = [[self class] videoSkipUrlsFromContentSourceObject:ssmObject]; + videoAd.videoEventFirstQuartileUrls = [[self class] videoFirstQuartileUrlsFromContentSourceObject:ssmObject]; + videoAd.videoEventMidpointUrls = [[self class] videoMidpointUrlsFromContentSourceObject:ssmObject]; + videoAd.videoEventThirdQuartileUrls = [[self class] videoThirdQuartileUrlsFromContentSourceObject:ssmObject]; + videoAd.videoEventCompleteUrls = [[self class] videoCompleteUrlsFromContentSourceObject:ssmObject]; + return videoAd; + } + } + return nil; +} + +#pragma mark - Trackers + ++ (NSDictionary *)trackerDictFromContentSourceObject:(NSDictionary *)contentSourceObject { if ([contentSourceObject[@"trackers"] isKindOfClass:[NSArray class]]) { NSArray *trackers = contentSourceObject[@"trackers"]; if ([[trackers firstObject] isKindOfClass:[NSDictionary class]]) { - NSDictionary *trackerDict = [trackers firstObject]; - if ([trackerDict[@"impression_urls"] isKindOfClass:[NSArray class]]) { - return trackerDict[@"impression_urls"]; - } + return [trackers firstObject]; } } return nil; } ++ (NSDictionary *)videoEventsDictFromTrackerDict:(NSDictionary *)trackerDict { + if ([trackerDict[@"video_events"] isKindOfClass:[NSDictionary class]]) { + return trackerDict[@"video_events"]; + } + return nil; +} + ++ (NSArray *)impressionUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + if ([trackerDict[@"impression_urls"] isKindOfClass:[NSArray class]]) { + return trackerDict[@"impression_urls"]; + } + return nil; +} + ++ (NSArray *)errorUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + if ([trackerDict[@"error_urls"] isKindOfClass:[NSArray class]]) { + return trackerDict[@"error_urls"]; + } + return nil; +} + ++ (NSArray *)videoClickUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + if ([trackerDict[@"video_click_urls"] isKindOfClass:[NSArray class]]) { + return trackerDict[@"video_click_urls"]; + } + return nil; +} + ++ (NSArray *)videoStartUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; + if ([videoEventsDict[@"start"] isKindOfClass:[NSArray class]]) { + return videoEventsDict[@"start"]; + } + return nil; +} + ++ (NSArray *)videoSkipUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; + if ([videoEventsDict[@"skip"] isKindOfClass:[NSArray class]]) { + return videoEventsDict[@"skip"]; + } + return nil; +} + ++ (NSArray *)videoFirstQuartileUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; + if ([videoEventsDict[@"firstQuartile"] isKindOfClass:[NSArray class]]) { + return videoEventsDict[@"firstQuartile"]; + } + return nil; +} + ++ (NSArray *)videoMidpointUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; + if ([videoEventsDict[@"midpoint"] isKindOfClass:[NSArray class]]) { + return videoEventsDict[@"midpoint"]; + } + return nil; +} + ++ (NSArray *)videoThirdQuartileUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; + if ([videoEventsDict[@"thirdQuartile"] isKindOfClass:[NSArray class]]) { + return videoEventsDict[@"thirdQuartile"]; + } + return nil; +} + ++ (NSArray *)videoCompleteUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { + NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; + NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; + if ([videoEventsDict[@"complete"] isKindOfClass:[NSArray class]]) { + return videoEventsDict[@"complete"]; + } + return nil; +} + #pragma mark - Helper Methods - (NSMutableArray *)standardAds { From 51aeb16939cf82163706d237a625954bda478eff Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 15:38:43 -0500 Subject: [PATCH 50/92] MS-1746 Restrict response parsing to first tag in tags array, fire no_ad_url --- sdk/internal/ANInterstitialAdFetcher.h | 2 +- sdk/internal/ANInterstitialAdFetcher.m | 8 ++ sdk/internal/ANUniversalTagAdServerResponse.h | 2 + sdk/internal/ANUniversalTagAdServerResponse.m | 75 ++++++++++--------- 4 files changed, 49 insertions(+), 38 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index 855c32dc9..5ccac341d 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -23,7 +23,7 @@ #if kANANInterstitialAdFetcherUseUTV2 //static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; //static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2html"; -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2ssmbanner"; +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2csmnobid"; #else static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v1"; #endif diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index ee8b720d5..a1fe07ba2 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -37,6 +37,7 @@ @interface ANInterstitialAdFetcher () Date: Mon, 11 Jan 2016 17:09:26 -0500 Subject: [PATCH 51/92] MS-1746 Load video ad in background, pass trackers from video ssm ad to video ad and fire them --- sdk/VastDataModel/ANVast.h | 5 ++- sdk/internal/ANInterstitialAdFetcher.h | 4 +- sdk/internal/ANInterstitialAdFetcher.m | 28 +++++++++--- sdk/internal/ANSSMVideoAd.h | 11 +---- sdk/internal/ANUniversalTagAdServerResponse.m | 43 +++++++++++++------ sdk/internal/ANVast+ANCategory.m | 1 + sdk/internal/ANVideoAd.h | 9 +++- sdk/internal/ANVideoPlayerViewController.m | 27 ++++++++---- 8 files changed, 86 insertions(+), 42 deletions(-) diff --git a/sdk/VastDataModel/ANVast.h b/sdk/VastDataModel/ANVast.h index 0359f3ebb..c834c6320 100644 --- a/sdk/VastDataModel/ANVast.h +++ b/sdk/VastDataModel/ANVast.h @@ -20,6 +20,8 @@ #import "ANInLine.h" #import "ANWrapper.h" +@class ANVideoAd; + @interface ANVast : NSObject - (instancetype)initWithContent:(NSString *)vast; @@ -30,7 +32,6 @@ @property (nonatomic, readonly) NSMutableArray *anWrappers; @property (nonatomic, readonly) NSURL *mediaFileURL; -@property (nonatomic, readwrite) NSString *notifyUrlString; -@property (nonatomic, readwrite) NSArray *impressionUrls; +@property (nonatomic, readwrite, weak) ANVideoAd *videoAd; @end \ No newline at end of file diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index 5ccac341d..604e51d97 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -21,9 +21,9 @@ #define kANANInterstitialAdFetcherUseUTV2 1 #if kANANInterstitialAdFetcherUseUTV2 -//static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; //static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2html"; -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2csmnobid"; +//static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2csmnobid"; #else static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v1"; #endif diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index a1fe07ba2..98571bc36 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -184,14 +184,26 @@ - (void)didCompleteFirstLoadFromWebViewController:(ANAdWebViewController *)contr #pragma mark - VAST Ads -- (void)handleVideoAd:(ANVideoAd *)vastAd { - NSString *notifyUrlString = vastAd.vastDataModel.notifyUrlString; +- (void)handleVideoAd:(ANVideoAd *)videoAd { + NSString *notifyUrlString = videoAd.notifyUrlString; if (notifyUrlString.length > 0) { ANLogDebug(@"(notify_url, %@)", notifyUrlString); [self fireAndIgnoreResultCB:[NSURL URLWithString:notifyUrlString]]; } - ANAdFetcherResponse *adFetcherResponse = [ANAdFetcherResponse responseWithAdObject:vastAd]; - [self processFinalResponse:adFetcherResponse]; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + ANVast *vastDataModel = [[ANVast alloc] initWithContent:videoAd.content]; + vastDataModel.videoAd = videoAd; + dispatch_async(dispatch_get_main_queue(), ^{ + if (!vastDataModel) { + ANLogDebug(@"Invalid VAST content, unable to use"); + [self continueWaterfall]; + } else { + ANAdFetcherResponse *adFetcherResponse = [ANAdFetcherResponse responseWithAdObject:videoAd]; + [self processFinalResponse:adFetcherResponse]; + } + }); + + }); } #pragma mark - Mediated Ads @@ -318,10 +330,14 @@ - (void)contentFetcher:(ANSSMContentFetcher *)fetcher didLoadContent:(NSString * [self.ads insertObject:standardAd atIndex:0]; [self continueWaterfall]; } else if ([self.currentSSMAd isKindOfClass:[ANSSMVideoAd class]]) { -// ANSSMVideoAd *ssmAd = (ANSSMVideoAd *)self.currentSSMAd; + ANSSMVideoAd *ssmAd = (ANSSMVideoAd *)self.currentSSMAd; ANVideoAd *videoAd = [[ANVideoAd alloc] init]; videoAd.content = content; - // TODO: Add tracking urls to workflow. + videoAd.impressionUrls = ssmAd.impressionUrls; + videoAd.notifyUrlString = ssmAd.notifyUrlString; + videoAd.errorUrls = ssmAd.errorUrls; + videoAd.videoEventTrackers = ssmAd.videoEventTrackers; + videoAd.videoClickUrls = ssmAd.videoClickUrls; [self.ads insertObject:videoAd atIndex:0]; [self continueWaterfall]; } else { diff --git a/sdk/internal/ANSSMVideoAd.h b/sdk/internal/ANSSMVideoAd.h index 7588b044a..caaf4642c 100644 --- a/sdk/internal/ANSSMVideoAd.h +++ b/sdk/internal/ANSSMVideoAd.h @@ -18,18 +18,11 @@ @interface ANSSMVideoAd : NSObject @property (nonatomic, readwrite, strong) NSString *urlString; - @property (nonatomic, readwrite, strong) NSString *notifyUrlString; - @property (nonatomic, readwrite, strong) NSArray *impressionUrls; // Array of impression url strings + +@property (nonatomic, readwrite, strong) NSDictionary *videoEventTrackers; @property (nonatomic, readwrite, strong) NSArray *errorUrls; @property (nonatomic, readwrite, strong) NSArray *videoClickUrls; -@property (nonatomic, readwrite, strong) NSArray *videoEventStartUrls; -@property (nonatomic, readwrite, strong) NSArray *videoEventSkipUrls; -@property (nonatomic, readwrite, strong) NSArray *videoEventFirstQuartileUrls; -@property (nonatomic, readwrite, strong) NSArray *videoEventMidpointUrls; -@property (nonatomic, readwrite, strong) NSArray *videoEventThirdQuartileUrls; -@property (nonatomic, readwrite, strong) NSArray *videoEventCompleteUrls; - @end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index f81a948d9..da586418c 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -101,7 +101,7 @@ - (void)processResponseData:(NSData *)data { } ANVideoAd *videoAd = [[self class] videoAdFromRTBObject:adObject]; if (videoAd) { - videoAd.vastDataModel.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; + videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; [self.videoAds addObject:videoAd]; } } @@ -161,7 +161,7 @@ - (void)processV2ResponseData:(NSData *)data { } ANVideoAd *videoAd = [[self class] videoAdFromRTBObject:rtbObject]; if (videoAd) { - videoAd.vastDataModel.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; + videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; [self.ads addObject:videoAd]; } } @@ -249,12 +249,7 @@ + (ANVideoAd *)videoAdFromRTBObject:(NSDictionary *)rtbObject { NSDictionary *video = rtbObject[kANUniversalTagAdServerResponseKeyVideo]; ANVideoAd *videoAd = [[ANVideoAd alloc] init]; videoAd.content = [video[kANUniversalTagAdServerResponseVideoKeyContent] description]; - videoAd.vastDataModel = [[ANVast alloc] initWithContent:videoAd.content]; - if (!videoAd.vastDataModel) { - ANLogDebug(@"Invalid VAST content, unable to use"); - return nil; - } - videoAd.vastDataModel.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:rtbObject]; + videoAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:rtbObject]; return videoAd; } return nil; @@ -319,12 +314,32 @@ + (ANSSMVideoAd *)videoSSMAdFromSSMObject:(NSDictionary *)ssmObject { videoAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; videoAd.errorUrls = [[self class] errorUrlsFromContentSourceObject:ssmObject]; videoAd.videoClickUrls = [[self class] videoClickUrlsFromContentSourceObject:ssmObject]; - videoAd.videoEventStartUrls = [[self class] videoStartUrlsFromContentSourceObject:ssmObject]; - videoAd.videoEventSkipUrls = [[self class] videoSkipUrlsFromContentSourceObject:ssmObject]; - videoAd.videoEventFirstQuartileUrls = [[self class] videoFirstQuartileUrlsFromContentSourceObject:ssmObject]; - videoAd.videoEventMidpointUrls = [[self class] videoMidpointUrlsFromContentSourceObject:ssmObject]; - videoAd.videoEventThirdQuartileUrls = [[self class] videoThirdQuartileUrlsFromContentSourceObject:ssmObject]; - videoAd.videoEventCompleteUrls = [[self class] videoCompleteUrlsFromContentSourceObject:ssmObject]; + NSMutableDictionary *videoEventTrackers = [[NSMutableDictionary alloc] init]; + NSArray *startTrackers = [[self class] videoStartUrlsFromContentSourceObject:ssmObject]; + if (startTrackers) { + videoEventTrackers[@(ANVideoEventStart)] = startTrackers; + } + NSArray *skipTrackers = [[self class] videoSkipUrlsFromContentSourceObject:ssmObject]; + if (skipTrackers) { + videoEventTrackers[@(ANVideoEventSkip)] = skipTrackers; + } + NSArray *firstQuartileTrackers = [[self class] videoFirstQuartileUrlsFromContentSourceObject:ssmObject]; + if (firstQuartileTrackers) { + videoEventTrackers[@(ANVideoEventQuartileFirst)] = firstQuartileTrackers; + } + NSArray *midpointTrackers = [[self class] videoMidpointUrlsFromContentSourceObject:ssmObject]; + if (midpointTrackers) { + videoEventTrackers[@(ANVideoEventQuartileMidPoint)] = midpointTrackers; + } + NSArray *thirdQuartileTrackers = [[self class] videoThirdQuartileUrlsFromContentSourceObject:ssmObject]; + if (thirdQuartileTrackers) { + videoEventTrackers[@(ANVideoEventQuartileThird)] = thirdQuartileTrackers; + } + NSArray *videoCompleteTrackers = [[self class] videoCompleteUrlsFromContentSourceObject:ssmObject]; + if (videoCompleteTrackers) { + videoEventTrackers[@(ANVideoEventQuartileComplete)] = videoCompleteTrackers; + } + videoAd.videoEventTrackers = [videoEventTrackers copy]; return videoAd; } } diff --git a/sdk/internal/ANVast+ANCategory.m b/sdk/internal/ANVast+ANCategory.m index 69d4c8fb5..5cea10eac 100644 --- a/sdk/internal/ANVast+ANCategory.m +++ b/sdk/internal/ANVast+ANCategory.m @@ -82,6 +82,7 @@ - (NSArray *)clickTrackingURL { } - (NSArray *)trackingArrayForEvent:(ANVideoEvent)event { + // TODO: Parse CSM/SSM VAST trackers from here __block NSArray *creatives = @[]; if (self.anInLine.creatives) { creatives = [creatives arrayByAddingObjectsFromArray:self.anInLine.creatives]; diff --git a/sdk/internal/ANVideoAd.h b/sdk/internal/ANVideoAd.h index 62789e165..db7fa8e04 100644 --- a/sdk/internal/ANVideoAd.h +++ b/sdk/internal/ANVideoAd.h @@ -18,7 +18,14 @@ @interface ANVideoAd : NSObject -@property (nonatomic, readwrite, strong) NSString *content; +@property (nonatomic, readwrite) NSString *content; +@property (nonatomic, readwrite) NSString *notifyUrlString; +@property (nonatomic, readwrite) NSArray *impressionUrls; + +@property (nonatomic, readwrite, strong) NSDictionary *videoEventTrackers; +@property (nonatomic, readwrite, strong) NSArray *errorUrls; +@property (nonatomic, readwrite, strong) NSArray *videoClickUrls; + @property (nonatomic, readwrite, strong) ANVast *vastDataModel; @end \ No newline at end of file diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 8267b5110..8d653bdc8 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -31,6 +31,7 @@ #import "ANVASTUtil.h" #import "ANVAST+ANCategory.h" #import "UIView+ANCategory.h" +#import "ANVideoAd.h" static float const kANVideoPlayerViewControllerVolumeMuteOnValue = 0.0; static float const kANVideoPlayerViewControllerVolumeMuteOffValue = 1.0; @@ -200,14 +201,7 @@ - (void)updateEventsWithSeconds:(float)seconds { if (self.playerView.player.rate > 0 && !self.playerView.player.error) { if (!isImpressionFired) { isImpressionFired = YES; - for (ANImpression *impression in self.vastDataModel.anInLine.impressions) { - ANLogDebug(@"(VAST impression, %@)", impression.value); - [self fireImpressionWithURL:impression.value]; - } - for (NSString *impressionUrlString in self.vastDataModel.impressionUrls) { - ANLogDebug(@"(UT impression, %@)", impressionUrlString); - [self fireImpressionWithURL:impressionUrlString]; - } + [self fireImpressionTracking]; } [self.circularAnimationView performCircularAnimationWithStartTime:[NSDate date]]; } @@ -305,14 +299,31 @@ - (void)closeButtonClicked { - (void)fireTrackingEventWithEvent:(ANVideoEvent)event { NSArray *trackingArray = [self.vastDataModel trackingArrayForEvent:event]; + if (self.videoAd.videoEventTrackers[@(event)]) { + trackingArray = [trackingArray arrayByAddingObjectsFromArray:self.videoAd.videoEventTrackers[@(event)]]; + } [trackingArray enumerateObjectsUsingBlock:^(ANTracking *tracking, NSUInteger idx, BOOL *stop) { ANLogDebug(@"(%@, %@)", [ANVASTUtil eventStringForVideoEvent:event], tracking.trackingURI); [self fireImpressionWithURL:tracking.trackingURI]; }]; } +- (void)fireImpressionTracking { + for (ANImpression *impression in self.vastDataModel.anInLine.impressions) { + ANLogDebug(@"(VAST impression, %@)", impression.value); + [self fireImpressionWithURL:impression.value]; + } + for (NSString *impressionUrlString in self.vastDataModel.videoAd.impressionUrls) { + ANLogDebug(@"(UT impression, %@)", impressionUrlString); + [self fireImpressionWithURL:impressionUrlString]; + } +} + - (void)fireClickTracking { NSArray *trackingArray = self.vastDataModel.clickTrackingURL; + if (self.videoAd.videoClickUrls) { + [trackingArray arrayByAddingObjectsFromArray:self.videoAd.videoClickUrls]; + } [trackingArray enumerateObjectsUsingBlock:^(NSString *clickTrackingURL, NSUInteger idx, BOOL *stop) { ANLogDebug(@"(click, %@)", clickTrackingURL); [self fireImpressionWithURL:clickTrackingURL]; From 592a4cf29f924d22cc5c301d7fbb8f80ecb754a8 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 17:52:02 -0500 Subject: [PATCH 52/92] MS-1746 fix video parsing in background --- .../InterstitialUnifiedDemand/ViewController.m | 4 ++-- sdk/VastDataModel/ANVast.m | 9 +++++---- sdk/internal/ANInterstitialAdFetcher.m | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m index 742ba2b38..d96204a8d 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m @@ -22,9 +22,9 @@ - (void)viewDidLoad { [super viewDidLoad]; [ANLogManager setANLogLevel:ANLogLevelOff]; // VAST Placement -// self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"5778861"]; + self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"5778861"]; // HTML Placement - self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"2140061"]; +// self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"2140061"]; self.interstitialAd.closeDelay = 5.0; self.interstitialAd.opensInNativeBrowser = NO; self.interstitialAd.shouldServePublicServiceAnnouncements = YES; diff --git a/sdk/VastDataModel/ANVast.m b/sdk/VastDataModel/ANVast.m index 002afd92b..ae8671649 100644 --- a/sdk/VastDataModel/ANVast.m +++ b/sdk/VastDataModel/ANVast.m @@ -36,6 +36,10 @@ @interface ANVast () @end @implementation ANVast +{ + dispatch_semaphore_t waitForVastParsingCompletion; + int releaseCounter; +} - (instancetype)initWithContent:(NSString *)vast { if (self = [super init]) { @@ -68,14 +72,11 @@ - (BOOL)parseVastResponse:(NSString *)response waitForVastParsingCompletion = dispatch_semaphore_create(0); releaseCounter = 0; [self parseRootElement:xml.rootXMLElement]; - dispatch_semaphore_wait(waitForVastParsingCompletion, dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC)); + dispatch_semaphore_wait(waitForVastParsingCompletion, DISPATCH_TIME_FOREVER); } return errorOcurred; } -static dispatch_semaphore_t waitForVastParsingCompletion; -static int releaseCounter; - - (void)parseResponseWithURL:(NSURL *)xmlURL { [ANXML newANXMLWithURL:xmlURL success:^(ANXML *tbxml) { diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 98571bc36..09ebba0f7 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -193,6 +193,7 @@ - (void)handleVideoAd:(ANVideoAd *)videoAd { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ ANVast *vastDataModel = [[ANVast alloc] initWithContent:videoAd.content]; vastDataModel.videoAd = videoAd; + videoAd.vastDataModel = vastDataModel; dispatch_async(dispatch_get_main_queue(), ^{ if (!vastDataModel) { ANLogDebug(@"Invalid VAST content, unable to use"); @@ -202,7 +203,6 @@ - (void)handleVideoAd:(ANVideoAd *)videoAd { [self processFinalResponse:adFetcherResponse]; } }); - }); } From 4c07f9a3409eef914390e31c0fae3c81da514e4c Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 17:56:04 -0500 Subject: [PATCH 53/92] MS-1746 Set timeout for parsing VAST ad --- sdk/VastDataModel/ANVast.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sdk/VastDataModel/ANVast.m b/sdk/VastDataModel/ANVast.m index ae8671649..955b97833 100644 --- a/sdk/VastDataModel/ANVast.m +++ b/sdk/VastDataModel/ANVast.m @@ -72,7 +72,13 @@ - (BOOL)parseVastResponse:(NSString *)response waitForVastParsingCompletion = dispatch_semaphore_create(0); releaseCounter = 0; [self parseRootElement:xml.rootXMLElement]; - dispatch_semaphore_wait(waitForVastParsingCompletion, DISPATCH_TIME_FOREVER); + long result = dispatch_semaphore_wait(waitForVastParsingCompletion, dispatch_time(DISPATCH_TIME_NOW, + kAppNexusMediationNetworkTimeoutInterval * NSEC_PER_SEC)); + if (result != 0) { + ANLogDebug(@"Timeout reached while parsing VAST"); + errorOcurred = YES; + *error = ANError(@"Timeout reached while parsing VAST", ANAdResponseNetworkError); + } } return errorOcurred; } From 6b169fa6a44bc39e670df769a3c320994c8bb63b Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 18:05:21 -0500 Subject: [PATCH 54/92] MS-1746 Ignore web CSM & video CSM --- sdk/internal/ANUniversalTagAdServerResponse.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index da586418c..9eac650a5 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -168,7 +168,8 @@ - (void)processV2ResponseData:(NSData *)data { NSDictionary *csmObject = [[self class] csmObjectFromAdObject:adObject]; if (csmObject) { ANMediatedAd *mediatedAd = [[self class] mediatedAdFromCSMObject:csmObject]; - if (mediatedAd) { + // Ignore non-supported CSM (e.g. web CSM, video CSM) + if (mediatedAd && mediatedAd.className.length > 0) { [self.ads addObject:mediatedAd]; } } From fdff4845fbe0ed7430e2ed172b2495bca72f494d Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 18:28:03 -0500 Subject: [PATCH 55/92] MS-1746 Remove /ut/v2 support --- sdk/internal/ANInterstitialAdFetcher.h | 8 --- sdk/internal/ANUniversalTagAdServerResponse.m | 67 ++++--------------- 2 files changed, 13 insertions(+), 62 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index 604e51d97..ab9bcd87e 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -18,15 +18,7 @@ @protocol ANInterstitialAdFetcherDelegate; -#define kANANInterstitialAdFetcherUseUTV2 1 - -#if kANANInterstitialAdFetcherUseUTV2 static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; -//static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2html"; -//static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2csmnobid"; -#else -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v1"; -#endif @interface ANInterstitialAdFetcher : NSObject diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 9eac650a5..1d36d1654 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -72,11 +72,7 @@ @implementation ANUniversalTagAdServerResponse - (instancetype)initWithAdServerData:(NSData *)data { self = [super init]; if (self) { - #if kANANInterstitialAdFetcherUseUTV2 [self processV2ResponseData:data]; - #else - [self processResponseData:data]; - #endif } return self; } @@ -85,56 +81,6 @@ + (ANUniversalTagAdServerResponse *)responseWithData:(NSData *)data { return [[ANUniversalTagAdServerResponse alloc] initWithAdServerData:data]; } -- (void)processResponseData:(NSData *)data { - NSDictionary *jsonResponse = [[self class] jsonResponseFromData:data]; - if (jsonResponse) { - NSArray *tags = [[self class] tagsFromJSONResponse:jsonResponse]; - for (NSDictionary *tag in tags) { - if ([[self class] isNoBidTag:tag]) { - continue; - } - NSDictionary *adObject = [[self class] adObjectFromTag:tag]; - if (adObject) { - ANStandardAd *standardAd = [[self class] standardAdFromRTBObject:adObject]; - if (standardAd) { - [self.standardAds addObject:standardAd]; - } - ANVideoAd *videoAd = [[self class] videoAdFromRTBObject:adObject]; - if (videoAd) { - videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; - [self.videoAds addObject:videoAd]; - } - } - } - } - self.standardAd = [self.standardAds firstObject]; - self.videoAd = [self.videoAds firstObject]; - if (self.standardAd || self.videoAd) { - self.containsAds = YES; - } -} - -+ (BOOL)isNoBidTag:(NSDictionary *)tag { - if (tag[kANUniversalTagAdServerResponseKeyNoBid]) { - BOOL noBid = [tag[kANUniversalTagAdServerResponseKeyNoBid] boolValue]; - return noBid; - } - return NO; -} - -+ (NSArray *)tagsFromJSONResponse:(NSDictionary *)jsonResponse { - return [[self class] validDictionaryArrayForKey:kANUniversalTagAdServerResponseKeyTags - inJSONResponse:jsonResponse]; -} - -+ (NSDictionary *)adObjectFromTag:(NSDictionary *)tag { - if ([tag[kANUniversalTagAdServerResponseKeyAd] isKindOfClass:[NSDictionary class]]) { - return tag[kANUniversalTagAdServerResponseKeyAd]; - } - return nil; -} - - #pragma mark - Universal Tag V2 Support - (void)processV2ResponseData:(NSData *)data { @@ -196,6 +142,19 @@ - (void)processV2ResponseData:(NSData *)data { } } ++ (NSArray *)tagsFromJSONResponse:(NSDictionary *)jsonResponse { + return [[self class] validDictionaryArrayForKey:kANUniversalTagAdServerResponseKeyTags + inJSONResponse:jsonResponse]; +} + ++ (BOOL)isNoBidTag:(NSDictionary *)tag { + if (tag[kANUniversalTagAdServerResponseKeyNoBid]) { + BOOL noBid = [tag[kANUniversalTagAdServerResponseKeyNoBid] boolValue]; + return noBid; + } + return NO; +} + + (NSArray *)adsArrayFromTag:(NSDictionary *)tag { if ([tag[kANUniversalTagAdServerResponseKeyAds] isKindOfClass:[NSArray class]]) { return tag[kANUniversalTagAdServerResponseKeyAds]; From aeb3c3c4940e99b01dc2a460eb805173ebd7a297 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 18:50:49 -0500 Subject: [PATCH 56/92] MS-1746 Fixed constants --- sdk/internal/ANInterstitialAdFetcher.m | 4 + sdk/internal/ANUniversalTagAdServerResponse.h | 2 + sdk/internal/ANUniversalTagAdServerResponse.m | 150 ++++++++++-------- 3 files changed, 94 insertions(+), 62 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 09ebba0f7..985edf8fc 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -327,6 +327,10 @@ - (void)contentFetcher:(ANSSMContentFetcher *)fetcher didLoadContent:(NSString * standardAd.width = ssmAd.width; standardAd.height = ssmAd.height; standardAd.impressionUrls = ssmAd.impressionUrls; + NSRange mraidJSRange = [standardAd.content rangeOfString:kANUniversalTagAdServerResponseMraidJSFilename]; + if (mraidJSRange.location != NSNotFound) { + standardAd.mraid = YES; + } [self.ads insertObject:standardAd atIndex:0]; [self continueWaterfall]; } else if ([self.currentSSMAd isKindOfClass:[ANSSMVideoAd class]]) { diff --git a/sdk/internal/ANUniversalTagAdServerResponse.h b/sdk/internal/ANUniversalTagAdServerResponse.h index 267f3e736..43a292f43 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.h +++ b/sdk/internal/ANUniversalTagAdServerResponse.h @@ -17,6 +17,8 @@ #import "ANStandardAd.h" #import "ANVideoAd.h" +static NSString *const kANUniversalTagAdServerResponseMraidJSFilename; + @interface ANUniversalTagAdServerResponse : NSObject + (ANUniversalTagAdServerResponse *)responseWithData:(NSData *)data; diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 1d36d1654..2243486d1 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -22,37 +22,61 @@ static NSString *const kANUniversalTagAdServerResponseKeyNoBid = @"nobid"; static NSString *const kANUniversalTagAdServerResponseKeyTags = @"tags"; -static NSString *const kANUniversalTagAdServerResponseKeyAd = @"ad"; -static NSString *const kANUniversalTagAdServerResponseKeyAds = @"ads"; -static NSString *const kANUniversalTagAdServerResponseKeyNotifyUrl = @"notify_url"; +static NSString *const kANUniversalTagAdServerResponseKeyTagNoAdUrl = @"no_ad_url"; +static NSString *const kANUniversalTagAdServerResponseKeyTagAds = @"ads"; -static NSString *const kANUniversalTagAdServerResponseKeyRTBObject = @"rtb"; +static NSString *const kANUniversalTagAdServerResponseKeyAdsAdType = @"ad_type"; +static NSString *const kANUniversalTagAdServerResponseKeyAdsCSMObject = @"csm"; +static NSString *const kANUniversalTagAdServerResponseKeyAdsSSMObject = @"ssm"; +static NSString *const kANUniversalTagAdServerResponseKeyAdsRTBObject = @"rtb"; +static NSString *const kANUniversalTagAdServerResponseKeyAdsNotifyUrl = @"notify_url"; -static NSString *const kANUniversalTagAdServerResponseKeyVideo = @"video"; -static NSString *const kANUniversalTagAdServerResponseVideoKeyContent = @"content"; +static NSString *const kANUniversalTagAdServerResponseValueAdTypeBanner = @"banner"; +static NSString *const kANUniversalTagAdServerResponseValueAdTypeVideo = @"video"; -static NSString *const kANUniversalTagAdServerResponseKeyBanner = @"banner"; -static NSString *const kANUniversalTagAdServerResponseBannerKeyWidth = @"width"; -static NSString *const kANUniversalTagAdServerResponseBannerKeyHeight = @"height"; -static NSString *const kANUniversalTagAdServerResponseBannerKeyContent = @"content"; +static NSString *const kANUniversalTagAdServerResponseKeyVideoObject = @"video"; +static NSString *const kANUniversalTagAdServerResponseKeyVideoContent = @"content"; + +static NSString *const kANUniversalTagAdServerResponseKeyBannerObject = @"banner"; +static NSString *const kANUniversalTagAdServerResponseKeyBannerWidth = @"width"; +static NSString *const kANUniversalTagAdServerResponseKeyBannerHeight = @"height"; +static NSString *const kANUniversalTagAdServerResponseKeyBannerContent = @"content"; static NSString *const kANUniversalTagAdServerResponseMraidJSFilename = @"mraid.js"; -// Mediated +// SSM + +static NSString *const kANUniversalTagAdServerResponseKeySSMHandlerUrl = @"url"; + + +// CSM static NSString *const kANUniversalTagAdServerResponseValueIOS = @"ios"; static NSString *const kANUniversalTagAdServerResponseKeyHandler = @"handler"; static NSString *const kANUniversalTagAdServerResponseKeyClass = @"class"; static NSString *const kANUniversalTagAdServerResponseKeyId = @"id"; static NSString *const kANUniversalTagAdServerResponseKeyParam = @"param"; static NSString *const kANUniversalTagAdServerResponseKeyResultCB = @"response_url"; - - -// Standard static NSString *const kANUniversalTagAdServerResponseKeyType = @"type"; static NSString *const kANUniversalTagAdServerResponseKeyWidth = @"width"; static NSString *const kANUniversalTagAdServerResponseKeyHeight = @"height"; +// Trackers +static NSString *const kANUniversalTagAdServerResponseKeyTrackers = @"trackers"; + +static NSString *const kANUniversalTagAdServerResponseKeyTrackersImpressionUrls = @"impression_urls"; +static NSString *const kANUniversalTagAdServerResponseKeyTrackersErrorUrls = @"error_urls"; +static NSString *const kANUniversalTagAdServerResponseKeyTrackersVideoClickUrls = @"video_click_urls"; +static NSString *const kANUniversalTagAdServerResponseKeyTrackersVideoEvents = @"video_events"; + +static NSString *const kANUniversalTagAdServerResponseKeyVideoEventsStartUrls = @"start"; +static NSString *const kANUniversalTagAdServerResponseKeyVideoEventsSkipUrls = @"skip"; +static NSString *const kANUniversalTagAdServerResponseKeyVideoEventsFirstQuartileUrls = @"firstQuartile"; +static NSString *const kANUniversalTagAdServerResponseKeyVideoEventsMidpointUrls = @"midpoint"; +static NSString *const kANUniversalTagAdServerResponseKeyVideoEventsThirdQuartileUrls = @"thirdQuartile"; +static NSString *const kANUniversalTagAdServerResponseKeyVideoEventsCompleteUrls = @"complete"; + + @interface ANUniversalTagAdServerResponse () @property (nonatomic, readwrite, assign) BOOL containsAds; @@ -107,7 +131,7 @@ - (void)processV2ResponseData:(NSData *)data { } ANVideoAd *videoAd = [[self class] videoAdFromRTBObject:rtbObject]; if (videoAd) { - videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; + videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyAdsNotifyUrl] description]; [self.ads addObject:videoAd]; } } @@ -121,15 +145,17 @@ - (void)processV2ResponseData:(NSData *)data { } NSDictionary *ssmObject = [[self class] ssmObjectFromAdObject:adObject]; if (ssmObject) { - if ([adObject[@"ad_type"] isEqualToString:@"banner"]) { + if ([adObject[kANUniversalTagAdServerResponseKeyAdsAdType] + isEqualToString:kANUniversalTagAdServerResponseValueAdTypeBanner]) { ANSSMStandardAd *standardAd = [[self class] standardSSMAdFromSSMObject:ssmObject]; if (standardAd) { [self.ads addObject:standardAd]; } - } else if ([adObject[@"ad_type"] isEqualToString:@"video"]) { + } else if ([adObject[kANUniversalTagAdServerResponseKeyAdsAdType] + isEqualToString:kANUniversalTagAdServerResponseValueAdTypeVideo]) { ANSSMVideoAd *videoAd = [[self class] videoSSMAdFromSSMObject:ssmObject]; if (videoAd) { - videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyNotifyUrl] description]; + videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyAdsNotifyUrl] description]; [self.ads addObject:videoAd]; } } @@ -156,40 +182,40 @@ + (BOOL)isNoBidTag:(NSDictionary *)tag { } + (NSArray *)adsArrayFromTag:(NSDictionary *)tag { - if ([tag[kANUniversalTagAdServerResponseKeyAds] isKindOfClass:[NSArray class]]) { - return tag[kANUniversalTagAdServerResponseKeyAds]; + if ([tag[kANUniversalTagAdServerResponseKeyTagAds] isKindOfClass:[NSArray class]]) { + return tag[kANUniversalTagAdServerResponseKeyTagAds]; } return nil; } + (NSDictionary *)rtbObjectFromAdObject:(NSDictionary *)adObject { - if ([adObject[kANUniversalTagAdServerResponseKeyRTBObject] isKindOfClass:[NSDictionary class]]) { - return adObject[kANUniversalTagAdServerResponseKeyRTBObject]; + if ([adObject[kANUniversalTagAdServerResponseKeyAdsRTBObject] isKindOfClass:[NSDictionary class]]) { + return adObject[kANUniversalTagAdServerResponseKeyAdsRTBObject]; } return nil; } + (NSDictionary *)csmObjectFromAdObject:(NSDictionary *)adObject { - if ([adObject[@"csm"] isKindOfClass:[NSDictionary class]]) { - return adObject[@"csm"]; + if ([adObject[kANUniversalTagAdServerResponseKeyAdsCSMObject] isKindOfClass:[NSDictionary class]]) { + return adObject[kANUniversalTagAdServerResponseKeyAdsCSMObject]; } return nil; } + (NSDictionary *)ssmObjectFromAdObject:(NSDictionary *)adObject { - if ([adObject[@"ssm"] isKindOfClass:[NSDictionary class]]) { - return adObject[@"ssm"]; + if ([adObject[kANUniversalTagAdServerResponseKeyAdsSSMObject] isKindOfClass:[NSDictionary class]]) { + return adObject[kANUniversalTagAdServerResponseKeyAdsSSMObject]; } return nil; } + (ANStandardAd *)standardAdFromRTBObject:(NSDictionary *)rtbObject { - if ([rtbObject[kANUniversalTagAdServerResponseKeyBanner] isKindOfClass:[NSDictionary class]]) { - NSDictionary *banner = rtbObject[kANUniversalTagAdServerResponseKeyBanner]; + if ([rtbObject[kANUniversalTagAdServerResponseKeyBannerObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *banner = rtbObject[kANUniversalTagAdServerResponseKeyBannerObject]; ANStandardAd *standardAd = [[ANStandardAd alloc] init]; - standardAd.width = [banner[kANUniversalTagAdServerResponseBannerKeyWidth] description]; - standardAd.height = [banner[kANUniversalTagAdServerResponseBannerKeyHeight] description]; - standardAd.content = [banner[kANUniversalTagAdServerResponseBannerKeyContent] description]; + standardAd.width = [banner[kANUniversalTagAdServerResponseKeyBannerWidth] description]; + standardAd.height = [banner[kANUniversalTagAdServerResponseKeyBannerHeight] description]; + standardAd.content = [banner[kANUniversalTagAdServerResponseKeyBannerContent] description]; standardAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:rtbObject]; if (!standardAd.content || [standardAd.content length] == 0) { ANLogError(@"blank_ad"); @@ -205,10 +231,10 @@ + (ANStandardAd *)standardAdFromRTBObject:(NSDictionary *)rtbObject { } + (ANVideoAd *)videoAdFromRTBObject:(NSDictionary *)rtbObject { - if ([rtbObject[kANUniversalTagAdServerResponseKeyVideo] isKindOfClass:[NSDictionary class]]) { - NSDictionary *video = rtbObject[kANUniversalTagAdServerResponseKeyVideo]; + if ([rtbObject[kANUniversalTagAdServerResponseKeyVideoObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *video = rtbObject[kANUniversalTagAdServerResponseKeyVideoObject]; ANVideoAd *videoAd = [[ANVideoAd alloc] init]; - videoAd.content = [video[kANUniversalTagAdServerResponseVideoKeyContent] description]; + videoAd.content = [video[kANUniversalTagAdServerResponseKeyVideoContent] description]; videoAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:rtbObject]; return videoAd; } @@ -251,12 +277,12 @@ + (ANSSMStandardAd *)standardSSMAdFromSSMObject:(NSDictionary *)ssmObject { if ([[handlerArray firstObject] isKindOfClass:[NSDictionary class]]) { NSDictionary *handlerDict = (NSDictionary *)[handlerArray firstObject]; ANSSMStandardAd *standardAd = [[ANSSMStandardAd alloc] init]; - standardAd.urlString = handlerDict[@"url"]; + standardAd.urlString = handlerDict[kANUniversalTagAdServerResponseKeySSMHandlerUrl]; standardAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; - if ([ssmObject[kANUniversalTagAdServerResponseKeyBanner] isKindOfClass:[NSDictionary class]]) { - NSDictionary *banner = ssmObject[kANUniversalTagAdServerResponseKeyBanner]; - standardAd.width = [banner[kANUniversalTagAdServerResponseBannerKeyWidth] description]; - standardAd.height = [banner[kANUniversalTagAdServerResponseBannerKeyHeight] description]; + if ([ssmObject[kANUniversalTagAdServerResponseKeyBannerObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *banner = ssmObject[kANUniversalTagAdServerResponseKeyBannerObject]; + standardAd.width = [banner[kANUniversalTagAdServerResponseKeyBannerWidth] description]; + standardAd.height = [banner[kANUniversalTagAdServerResponseKeyBannerHeight] description]; } return standardAd; } @@ -270,7 +296,7 @@ + (ANSSMVideoAd *)videoSSMAdFromSSMObject:(NSDictionary *)ssmObject { if ([[handlerArray firstObject] isKindOfClass:[NSDictionary class]]) { NSDictionary *handlerDict = (NSDictionary *)[handlerArray firstObject]; ANSSMVideoAd *videoAd = [[ANSSMVideoAd alloc] init]; - videoAd.urlString = handlerDict[@"url"]; + videoAd.urlString = handlerDict[kANUniversalTagAdServerResponseKeySSMHandlerUrl]; videoAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; videoAd.errorUrls = [[self class] errorUrlsFromContentSourceObject:ssmObject]; videoAd.videoClickUrls = [[self class] videoClickUrlsFromContentSourceObject:ssmObject]; @@ -309,8 +335,8 @@ + (ANSSMVideoAd *)videoSSMAdFromSSMObject:(NSDictionary *)ssmObject { #pragma mark - Trackers + (NSDictionary *)trackerDictFromContentSourceObject:(NSDictionary *)contentSourceObject { - if ([contentSourceObject[@"trackers"] isKindOfClass:[NSArray class]]) { - NSArray *trackers = contentSourceObject[@"trackers"]; + if ([contentSourceObject[kANUniversalTagAdServerResponseKeyTrackers] isKindOfClass:[NSArray class]]) { + NSArray *trackers = contentSourceObject[kANUniversalTagAdServerResponseKeyTrackers]; if ([[trackers firstObject] isKindOfClass:[NSDictionary class]]) { return [trackers firstObject]; } @@ -319,32 +345,32 @@ + (NSDictionary *)trackerDictFromContentSourceObject:(NSDictionary *)contentSour } + (NSDictionary *)videoEventsDictFromTrackerDict:(NSDictionary *)trackerDict { - if ([trackerDict[@"video_events"] isKindOfClass:[NSDictionary class]]) { - return trackerDict[@"video_events"]; + if ([trackerDict[kANUniversalTagAdServerResponseKeyTrackersVideoEvents] isKindOfClass:[NSDictionary class]]) { + return trackerDict[kANUniversalTagAdServerResponseKeyTrackersVideoEvents]; } return nil; } + (NSArray *)impressionUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; - if ([trackerDict[@"impression_urls"] isKindOfClass:[NSArray class]]) { - return trackerDict[@"impression_urls"]; + if ([trackerDict[kANUniversalTagAdServerResponseKeyTrackersImpressionUrls] isKindOfClass:[NSArray class]]) { + return trackerDict[kANUniversalTagAdServerResponseKeyTrackersImpressionUrls]; } return nil; } + (NSArray *)errorUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; - if ([trackerDict[@"error_urls"] isKindOfClass:[NSArray class]]) { - return trackerDict[@"error_urls"]; + if ([trackerDict[kANUniversalTagAdServerResponseKeyTrackersErrorUrls] isKindOfClass:[NSArray class]]) { + return trackerDict[kANUniversalTagAdServerResponseKeyTrackersErrorUrls]; } return nil; } + (NSArray *)videoClickUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; - if ([trackerDict[@"video_click_urls"] isKindOfClass:[NSArray class]]) { - return trackerDict[@"video_click_urls"]; + if ([trackerDict[kANUniversalTagAdServerResponseKeyTrackersVideoClickUrls] isKindOfClass:[NSArray class]]) { + return trackerDict[kANUniversalTagAdServerResponseKeyTrackersVideoClickUrls]; } return nil; } @@ -352,8 +378,8 @@ + (NSArray *)videoClickUrlsFromContentSourceObject:(NSDictionary *)contentSource + (NSArray *)videoStartUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; - if ([videoEventsDict[@"start"] isKindOfClass:[NSArray class]]) { - return videoEventsDict[@"start"]; + if ([videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsStartUrls] isKindOfClass:[NSArray class]]) { + return videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsStartUrls]; } return nil; } @@ -361,8 +387,8 @@ + (NSArray *)videoStartUrlsFromContentSourceObject:(NSDictionary *)contentSource + (NSArray *)videoSkipUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; - if ([videoEventsDict[@"skip"] isKindOfClass:[NSArray class]]) { - return videoEventsDict[@"skip"]; + if ([videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsSkipUrls] isKindOfClass:[NSArray class]]) { + return videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsSkipUrls]; } return nil; } @@ -370,8 +396,8 @@ + (NSArray *)videoSkipUrlsFromContentSourceObject:(NSDictionary *)contentSourceO + (NSArray *)videoFirstQuartileUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; - if ([videoEventsDict[@"firstQuartile"] isKindOfClass:[NSArray class]]) { - return videoEventsDict[@"firstQuartile"]; + if ([videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsFirstQuartileUrls] isKindOfClass:[NSArray class]]) { + return videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsFirstQuartileUrls]; } return nil; } @@ -379,8 +405,8 @@ + (NSArray *)videoFirstQuartileUrlsFromContentSourceObject:(NSDictionary *)conte + (NSArray *)videoMidpointUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; - if ([videoEventsDict[@"midpoint"] isKindOfClass:[NSArray class]]) { - return videoEventsDict[@"midpoint"]; + if ([videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsMidpointUrls] isKindOfClass:[NSArray class]]) { + return videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsMidpointUrls]; } return nil; } @@ -388,8 +414,8 @@ + (NSArray *)videoMidpointUrlsFromContentSourceObject:(NSDictionary *)contentSou + (NSArray *)videoThirdQuartileUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; - if ([videoEventsDict[@"thirdQuartile"] isKindOfClass:[NSArray class]]) { - return videoEventsDict[@"thirdQuartile"]; + if ([videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsThirdQuartileUrls] isKindOfClass:[NSArray class]]) { + return videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsThirdQuartileUrls]; } return nil; } @@ -397,8 +423,8 @@ + (NSArray *)videoThirdQuartileUrlsFromContentSourceObject:(NSDictionary *)conte + (NSArray *)videoCompleteUrlsFromContentSourceObject:(NSDictionary *)contentSourceObject { NSDictionary *trackerDict = [[self class] trackerDictFromContentSourceObject:contentSourceObject]; NSDictionary *videoEventsDict = [[self class] videoEventsDictFromTrackerDict:trackerDict]; - if ([videoEventsDict[@"complete"] isKindOfClass:[NSArray class]]) { - return videoEventsDict[@"complete"]; + if ([videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsCompleteUrls] isKindOfClass:[NSArray class]]) { + return videoEventsDict[kANUniversalTagAdServerResponseKeyVideoEventsCompleteUrls]; } return nil; } From 895544407d0ea76b4266de053b23b94f235a92bb Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Mon, 11 Jan 2016 19:00:35 -0500 Subject: [PATCH 57/92] MS-1746 Minor fixes --- sdk/internal/ANInterstitialAdFetcher.h | 1 + sdk/internal/ANUniversalTagAdServerResponse.h | 2 -- sdk/internal/ANUniversalTagAdServerResponse.m | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index ab9bcd87e..3bc930fcf 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -19,6 +19,7 @@ @protocol ANInterstitialAdFetcherDelegate; static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; +extern NSString *const kANUniversalTagAdServerResponseMraidJSFilename; @interface ANInterstitialAdFetcher : NSObject diff --git a/sdk/internal/ANUniversalTagAdServerResponse.h b/sdk/internal/ANUniversalTagAdServerResponse.h index 43a292f43..267f3e736 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.h +++ b/sdk/internal/ANUniversalTagAdServerResponse.h @@ -17,8 +17,6 @@ #import "ANStandardAd.h" #import "ANVideoAd.h" -static NSString *const kANUniversalTagAdServerResponseMraidJSFilename; - @interface ANUniversalTagAdServerResponse : NSObject + (ANUniversalTagAdServerResponse *)responseWithData:(NSData *)data; diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 2243486d1..258d07730 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -43,7 +43,7 @@ static NSString *const kANUniversalTagAdServerResponseKeyBannerHeight = @"height"; static NSString *const kANUniversalTagAdServerResponseKeyBannerContent = @"content"; -static NSString *const kANUniversalTagAdServerResponseMraidJSFilename = @"mraid.js"; +NSString *const kANUniversalTagAdServerResponseMraidJSFilename = @"mraid.js"; // SSM From 6aa4e749c51704122d53460c6c60b82df5d5cfcd Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 11:34:16 -0500 Subject: [PATCH 58/92] MS-1746 Simplify SSM support --- .../ANSDK.xcodeproj/project.pbxproj | 6 - sdk/internal/ANInterstitialAdFetcher.h | 2 +- sdk/internal/ANInterstitialAdFetcher.m | 104 +++++++++--------- sdk/internal/ANSSMContentFetcher.h | 32 ------ sdk/internal/ANSSMContentFetcher.m | 104 ------------------ 5 files changed, 56 insertions(+), 192 deletions(-) delete mode 100644 sdk/internal/ANSSMContentFetcher.h delete mode 100644 sdk/internal/ANSSMContentFetcher.m diff --git a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj index 70750f532..8b84ef793 100644 --- a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj +++ b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj @@ -208,7 +208,6 @@ 8AE2D87019CC9B7300001B70 /* ANMoPubMediationInterstitial.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86E19CC9B7300001B70 /* ANMoPubMediationInterstitial.m */; }; 8AE3E1561C441F8E004AA151 /* ANSSMStandardAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE3E1551C441F8E004AA151 /* ANSSMStandardAd.m */; }; 8AE3E1591C441FA6004AA151 /* ANSSMVideoAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE3E1581C441FA6004AA151 /* ANSSMVideoAd.m */; }; - 8AE3E15C1C443AA4004AA151 /* ANSSMContentFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE3E15B1C443AA4004AA151 /* ANSSMContentFetcher.m */; }; 8AE5E11E1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AE5E11C1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8AE7AD9E1A7AC4E5009E2F2F /* EventKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AE7AD9D1A7AC4E5009E2F2F /* EventKitUI.framework */; }; 8AF366BD19D492F30097019F /* ANSDKResources.bundle in Copy Files */ = {isa = PBXBuildFile; fileRef = EC48177B1845046A0066BBFE /* ANSDKResources.bundle */; }; @@ -943,8 +942,6 @@ 8AE3E1551C441F8E004AA151 /* ANSSMStandardAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANSSMStandardAd.m; sourceTree = ""; }; 8AE3E1571C441FA6004AA151 /* ANSSMVideoAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANSSMVideoAd.h; sourceTree = ""; }; 8AE3E1581C441FA6004AA151 /* ANSSMVideoAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANSSMVideoAd.m; sourceTree = ""; }; - 8AE3E15A1C443AA4004AA151 /* ANSSMContentFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANSSMContentFetcher.h; sourceTree = ""; }; - 8AE3E15B1C443AA4004AA151 /* ANSSMContentFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANSSMContentFetcher.m; sourceTree = ""; }; 8AE5E11C1A2FDC7700FDE858 /* ANAdView+PrivateMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANAdView+PrivateMethods.h"; sourceTree = ""; }; 8AE7AD9D1A7AC4E5009E2F2F /* EventKitUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKitUI.framework; path = System/Library/Frameworks/EventKitUI.framework; sourceTree = SDKROOT; }; 8AE879FE1BDAD044001053D2 /* IMBanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IMBanner.h; sourceTree = ""; }; @@ -1269,8 +1266,6 @@ 8A73F9DC1BD6B34D00D18188 /* ANPlayerView.m */, 8A73F9DD1BD6B34D00D18188 /* ANReachability.h */, 8A73F9DE1BD6B34D00D18188 /* ANReachability.m */, - 8AE3E15A1C443AA4004AA151 /* ANSSMContentFetcher.h */, - 8AE3E15B1C443AA4004AA151 /* ANSSMContentFetcher.m */, 8AE3E1541C441F8E004AA151 /* ANSSMStandardAd.h */, 8AE3E1551C441F8E004AA151 /* ANSSMStandardAd.m */, 8AE3E1571C441FA6004AA151 /* ANSSMVideoAd.h */, @@ -2832,7 +2827,6 @@ 8A73FA331BD6B34E00D18188 /* ANAdRequestUrl.m in Sources */, 8AE3E1591C441FA6004AA151 /* ANSSMVideoAd.m in Sources */, 8A73FA351BD6B34E00D18188 /* ANAdView.m in Sources */, - 8AE3E15C1C443AA4004AA151 /* ANSSMContentFetcher.m in Sources */, 8A87BF4B1BD9471600281EA9 /* ANUniversalTagAdServerResponse.m in Sources */, 8A73FA421BD6B34E00D18188 /* ANMediatedAd.m in Sources */, 8A6385E31A14336000280054 /* ANNativeAdRequestUrlBuilder.m in Sources */, diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index 3bc930fcf..73c324bd7 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -18,7 +18,7 @@ @protocol ANInterstitialAdFetcherDelegate; -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2ssmbanner"; extern NSString *const kANUniversalTagAdServerResponseMraidJSFilename; @interface ANInterstitialAdFetcher : NSObject diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 985edf8fc..e06e92837 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -24,10 +24,8 @@ #import "ANMediationAdViewController.h" #import "ANSSMStandardAd.h" #import "ANSSMVideoAd.h" -#import "ANSSMContentFetcher.h" -@interface ANInterstitialAdFetcher () +@interface ANInterstitialAdFetcher () @property (nonatomic, readwrite, weak) id delegate; @@ -43,9 +41,6 @@ @interface ANInterstitialAdFetcher () 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + ANVideoAd *videoAd = [[ANVideoAd alloc] init]; + videoAd.content = content; + videoAd.notifyUrlString = ssmVideoAd.notifyUrlString; + videoAd.impressionUrls = ssmVideoAd.impressionUrls; + videoAd.errorUrls = ssmVideoAd.errorUrls; + videoAd.videoClickUrls = ssmVideoAd.videoClickUrls; + videoAd.videoEventTrackers = ssmVideoAd.videoEventTrackers; + [self.ads insertObject:videoAd atIndex:0]; + [self continueWaterfall]; + }); + } + }); +} + +- (void)handleSSMStandardAd:(ANSSMStandardAd *)ssmStandardAd { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSURL *URL = [NSURL URLWithString:ssmStandardAd.urlString]; + NSURLRequest *request = ANBasicRequestWithURL(URL); + NSData *data = [NSURLConnection sendSynchronousRequest:request + returningResponse:nil + error:nil]; + NSString *content = [[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding]; + if (content && content.length > 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + ANStandardAd *standardAd = [[ANStandardAd alloc] init]; + standardAd.content = content; + standardAd.width = ssmStandardAd.width; + standardAd.height = ssmStandardAd.height; + standardAd.impressionUrls = ssmStandardAd.impressionUrls; + NSRange mraidJSRange = [standardAd.content rangeOfString:kANUniversalTagAdServerResponseMraidJSFilename]; + if (mraidJSRange.location != NSNotFound) { + standardAd.mraid = YES; + } + [self.ads insertObject:standardAd atIndex:0]; + [self continueWaterfall]; + }); + } + }); +} + #pragma mark - Standard Ads - (void)handleStandardAd:(ANStandardAd *)standardAd { @@ -317,40 +359,4 @@ - (NSTimeInterval)getTotalLatency:(NSTimeInterval)stopTime { return -1; } -#pragma mark - ANSSMContentFetcherDelegate - -- (void)contentFetcher:(ANSSMContentFetcher *)fetcher didLoadContent:(NSString *)content { - if ([self.currentSSMAd isKindOfClass:[ANSSMStandardAd class]]) { - ANSSMStandardAd *ssmAd = (ANSSMStandardAd *)self.currentSSMAd; - ANStandardAd *standardAd = [[ANStandardAd alloc] init]; - standardAd.content = content; - standardAd.width = ssmAd.width; - standardAd.height = ssmAd.height; - standardAd.impressionUrls = ssmAd.impressionUrls; - NSRange mraidJSRange = [standardAd.content rangeOfString:kANUniversalTagAdServerResponseMraidJSFilename]; - if (mraidJSRange.location != NSNotFound) { - standardAd.mraid = YES; - } - [self.ads insertObject:standardAd atIndex:0]; - [self continueWaterfall]; - } else if ([self.currentSSMAd isKindOfClass:[ANSSMVideoAd class]]) { - ANSSMVideoAd *ssmAd = (ANSSMVideoAd *)self.currentSSMAd; - ANVideoAd *videoAd = [[ANVideoAd alloc] init]; - videoAd.content = content; - videoAd.impressionUrls = ssmAd.impressionUrls; - videoAd.notifyUrlString = ssmAd.notifyUrlString; - videoAd.errorUrls = ssmAd.errorUrls; - videoAd.videoEventTrackers = ssmAd.videoEventTrackers; - videoAd.videoClickUrls = ssmAd.videoClickUrls; - [self.ads insertObject:videoAd atIndex:0]; - [self continueWaterfall]; - } else { - [self contentFetcherFailedToLoadContent:fetcher]; - } -} - -- (void)contentFetcherFailedToLoadContent:(ANSSMContentFetcher *)fetcher { - [self continueWaterfall]; -} - @end \ No newline at end of file diff --git a/sdk/internal/ANSSMContentFetcher.h b/sdk/internal/ANSSMContentFetcher.h deleted file mode 100644 index 595ba76fa..000000000 --- a/sdk/internal/ANSSMContentFetcher.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright 2016 APPNEXUS INC - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -#import - -@protocol ANSSMContentFetcherDelegate; - -@interface ANSSMContentFetcher : NSObject - -- (instancetype)initWithUrlString:(NSString *)urlString - delegate:(id)delegate; - -@end - -@protocol ANSSMContentFetcherDelegate - -- (void)contentFetcher:(ANSSMContentFetcher *)fetcher didLoadContent:(NSString *)content; -- (void)contentFetcherFailedToLoadContent:(ANSSMContentFetcher *)fetcher; - -@end \ No newline at end of file diff --git a/sdk/internal/ANSSMContentFetcher.m b/sdk/internal/ANSSMContentFetcher.m deleted file mode 100644 index d36357361..000000000 --- a/sdk/internal/ANSSMContentFetcher.m +++ /dev/null @@ -1,104 +0,0 @@ -/* Copyright 2016 APPNEXUS INC - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -#import "ANSSMContentFetcher.h" -#import "ANGlobal.h" -#import "ANLogging.h" -#import "ANAdConstants.h" - -@interface ANSSMContentFetcher () - -@property (nonatomic, readwrite, strong) NSURLConnection *connection; -@property (nonatomic, readwrite, strong) NSMutableData *data; - -@property (nonatomic, readwrite, weak) id delegate; - -@end - -@implementation ANSSMContentFetcher - -- (instancetype)initWithUrlString:(NSString *)urlString - delegate:(id)delegate { - if (self = [super init]) { - self.delegate = delegate; - [self requestContentWithUrlString:urlString]; - } - return self; -} - -- (void)requestContentWithUrlString:(NSString *)urlString { - NSURLRequest *request = ANBasicRequestWithURL([NSURL URLWithString:urlString]); - self.connection = [NSURLConnection connectionWithRequest:request - delegate:self]; - if (!self.connection) { - ANLogDebug(@"Invalid connection for server-side mediation request"); - [self.delegate contentFetcherFailedToLoadContent:self]; - } else { - ANLogDebug(@"Starting server-side mediation request: %@", request); - } -} - -#pragma mark - NSURLConnectionDataDelegate - -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { - if (connection == self.connection) { - if ([response isKindOfClass:[NSHTTPURLResponse class]]) { - NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; - NSInteger status = [httpResponse statusCode]; - - if (status >= 400) { - [connection cancel]; - NSError *statusError = ANError(@"connection_failed %ld", ANAdResponseNetworkError, (long)status); - [self connection:connection didFailWithError:statusError]; - return; - } - } - - self.data = [NSMutableData data]; - ANLogDebug(@"Received server-side mediation response: %@", response); - } else { - ANLogDebug(@"Received server-side mediation response from unknown"); - } -} - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d { - if (connection == self.connection) { - [self.data appendData:d]; - } -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection { - if (connection == self.connection) { - NSString *content = [[NSString alloc] initWithData:self.data - encoding:NSUTF8StringEncoding]; - if (content.length > 0) { - ANLogDebug(@"Received server-side mediation content: %@", content); - [self.delegate contentFetcher:self didLoadContent:content]; - } else { - ANLogDebug(@"Failed to receive server-side mediation content"); - [self.delegate contentFetcherFailedToLoadContent:self]; - } - } -} - -- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { - if (connection == self.connection) { - ANLogDebug(@"Failed to receive server-side mediation content"); - [self.delegate contentFetcherFailedToLoadContent:self]; - } -} - - -@end \ No newline at end of file From 84f7050fce1ffcb62e143d4ca3d11e2cd44e3f36 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 11:44:08 -0500 Subject: [PATCH 59/92] MS-1746 Remove mediatedAds array in UT response --- sdk/internal/ANUniversalTagAdServerResponse.h | 2 -- sdk/internal/ANUniversalTagAdServerResponse.m | 6 ------ 2 files changed, 8 deletions(-) diff --git a/sdk/internal/ANUniversalTagAdServerResponse.h b/sdk/internal/ANUniversalTagAdServerResponse.h index 267f3e736..74f7cc3d8 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.h +++ b/sdk/internal/ANUniversalTagAdServerResponse.h @@ -28,10 +28,8 @@ @property (nonatomic, readonly, strong) NSMutableArray *standardAds; @property (nonatomic, readonly, strong) ANVideoAd *videoAd; @property (nonatomic, readonly, strong) NSMutableArray *videoAds; -@property (nonatomic, readonly, strong) NSMutableArray *mediatedAds; @property (nonatomic, readonly, strong) NSMutableArray *ads; - @property (nonatomic, readonly, strong) NSString *noAdUrlString; @end \ No newline at end of file diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 258d07730..722660265 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -84,7 +84,6 @@ @interface ANUniversalTagAdServerResponse () @property (nonatomic, readwrite, strong) NSMutableArray *standardAds; @property (nonatomic, readwrite, strong) ANVideoAd *videoAd; @property (nonatomic, readwrite, strong) NSMutableArray *videoAds; -@property (nonatomic, readwrite, strong) NSMutableArray *mediatedAds; @property (nonatomic, readwrite, strong) NSMutableArray *ads; @property (nonatomic, readwrite, strong) NSString *noAdUrlString; @@ -441,11 +440,6 @@ - (NSMutableArray *)videoAds { return _videoAds; } -- (NSMutableArray *)mediatedAds { - if (!_mediatedAds) _mediatedAds = [[NSMutableArray alloc] init]; - return _mediatedAds; -} - - (NSMutableArray *)ads { if (!_ads) _ads = [[NSMutableArray alloc] init]; return _ads; From 391211cf9089cb970d98f42eb3efd45d87baeece Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 11:46:06 -0500 Subject: [PATCH 60/92] MS-1746 Removed TODO for implemented feature --- sdk/internal/ANVast+ANCategory.m | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/internal/ANVast+ANCategory.m b/sdk/internal/ANVast+ANCategory.m index 5cea10eac..69d4c8fb5 100644 --- a/sdk/internal/ANVast+ANCategory.m +++ b/sdk/internal/ANVast+ANCategory.m @@ -82,7 +82,6 @@ - (NSArray *)clickTrackingURL { } - (NSArray *)trackingArrayForEvent:(ANVideoEvent)event { - // TODO: Parse CSM/SSM VAST trackers from here __block NSArray *creatives = @[]; if (self.anInLine.creatives) { creatives = [creatives arrayByAddingObjectsFromArray:self.anInLine.creatives]; From 65994f67977462ae84b5c4996283f83f89c2e281 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 11:51:41 -0500 Subject: [PATCH 61/92] MS-1746 Minor change --- sdk/internal/ANInterstitialAd.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index d51e6d6f9..e572c19e4 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -43,6 +43,7 @@ NSString *const kANInterstitialAdViewKey = @"kANInterstitialAdViewKey"; NSString *const kANInterstitialAdViewDateLoadedKey = @"kANInterstitialAdViewDateLoadedKey"; NSString *const kANInterstitialAdViewAuctionInfoKey = @"kANInterstitialAdViewAuctionInfoKey"; +NSString *const kANInterstitialAdViewImpressionUrlsKey = @"kANInterstitialAdViewImpressionUrlsKey"; @interface ANInterstitialAd () @@ -141,7 +142,7 @@ - (void)interstitialAdFetcher:(ANInterstitialAdFetcher *)fetcher adViewWithDateLoaded[kANInterstitialAdViewAuctionInfoKey] = response.auctionID; } if (response.impressionUrls) { - adViewWithDateLoaded[@"impressionUrls"] = response.impressionUrls; + adViewWithDateLoaded[kANInterstitialAdViewImpressionUrlsKey] = response.impressionUrls; } [self.precachedAdObjects addObject:adViewWithDateLoaded]; ANLogDebug(@"Stored ad %@ in precached ad views", adViewWithDateLoaded); @@ -190,7 +191,7 @@ - (void)displayAdFromViewController:(UIViewController *)controller { // If ad is still valid, save a reference to it. We'll use it later adToShow = adDict[kANInterstitialAdViewKey]; auctionID = adDict[kANInterstitialAdViewAuctionInfoKey]; - impressionUrls = adDict[@"impressionUrls"]; + impressionUrls = adDict[kANInterstitialAdViewImpressionUrlsKey]; [self.precachedAdObjects removeObjectAtIndex:0]; break; } From f3b842be5d4565e456f148d66fdde08588b429ca Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 11:57:50 -0500 Subject: [PATCH 62/92] MS-1746 Minor change --- sdk/internal/ANInterstitialAdFetcher.h | 2 +- sdk/internal/ANInterstitialAdFetcher.m | 84 +++++++++++++------------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index 73c324bd7..3bc930fcf 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -18,7 +18,7 @@ @protocol ANInterstitialAdFetcherDelegate; -static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://rlissack.adnxs.net:8080/jtest/utv2ssmbanner"; +static NSString *const kANInterstitialAdFetcherDefaultRequestUrlString = @"http://mediation.adnxs.com/ut/v2"; extern NSString *const kANUniversalTagAdServerResponseMraidJSFilename; @interface ANInterstitialAdFetcher : NSObject diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index e06e92837..c25cfc26a 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -153,29 +153,23 @@ - (void)continueWaterfall { } } -- (void)handleSSMVideoAd:(ANSSMVideoAd *)ssmVideoAd { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - NSURL *URL = [NSURL URLWithString:ssmVideoAd.urlString]; - NSURLRequest *request = ANBasicRequestWithURL(URL); - NSData *data = [NSURLConnection sendSynchronousRequest:request - returningResponse:nil - error:nil]; - NSString *content = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; - if (content && content.length > 0) { - dispatch_async(dispatch_get_main_queue(), ^{ - ANVideoAd *videoAd = [[ANVideoAd alloc] init]; - videoAd.content = content; - videoAd.notifyUrlString = ssmVideoAd.notifyUrlString; - videoAd.impressionUrls = ssmVideoAd.impressionUrls; - videoAd.errorUrls = ssmVideoAd.errorUrls; - videoAd.videoClickUrls = ssmVideoAd.videoClickUrls; - videoAd.videoEventTrackers = ssmVideoAd.videoEventTrackers; - [self.ads insertObject:videoAd atIndex:0]; - [self continueWaterfall]; - }); - } - }); +#pragma mark - Standard Ads + +- (void)handleStandardAd:(ANStandardAd *)standardAd { + CGSize receivedSize = CGSizeMake([standardAd.width floatValue], [standardAd.height floatValue]); + + // Setting the base URL to /ut will result in mraid.js not loading properly from the server + // which will cause rendering issues for certain MRAID creatives. + self.standardAdView = [[ANMRAIDContainerView alloc] initWithSize:receivedSize + HTML:standardAd.content + webViewBaseURL:[NSURL URLWithString:AN_BASE_URL]]; + self.standardAdView.webViewController.loadingDelegate = self; +} + +- (void)didCompleteFirstLoadFromWebViewController:(ANAdWebViewController *)controller { + ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.standardAdView]; + response.impressionUrls = self.impressionUrls; + [self processFinalResponse:response]; } - (void)handleSSMStandardAd:(ANSSMStandardAd *)ssmStandardAd { @@ -205,25 +199,6 @@ - (void)handleSSMStandardAd:(ANSSMStandardAd *)ssmStandardAd { }); } -#pragma mark - Standard Ads - -- (void)handleStandardAd:(ANStandardAd *)standardAd { - CGSize receivedSize = CGSizeMake([standardAd.width floatValue], [standardAd.height floatValue]); - - // Setting the base URL to /ut will result in mraid.js not loading properly from the server - // which will cause rendering issues for certain MRAID creatives. - self.standardAdView = [[ANMRAIDContainerView alloc] initWithSize:receivedSize - HTML:standardAd.content - webViewBaseURL:[NSURL URLWithString:AN_BASE_URL]]; - self.standardAdView.webViewController.loadingDelegate = self; -} - -- (void)didCompleteFirstLoadFromWebViewController:(ANAdWebViewController *)controller { - ANAdFetcherResponse *response = [ANAdFetcherResponse responseWithAdObject:self.standardAdView]; - response.impressionUrls = self.impressionUrls; - [self processFinalResponse:response]; -} - #pragma mark - VAST Ads - (void)handleVideoAd:(ANVideoAd *)videoAd { @@ -248,6 +223,31 @@ - (void)handleVideoAd:(ANVideoAd *)videoAd { }); } +- (void)handleSSMVideoAd:(ANSSMVideoAd *)ssmVideoAd { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSURL *URL = [NSURL URLWithString:ssmVideoAd.urlString]; + NSURLRequest *request = ANBasicRequestWithURL(URL); + NSData *data = [NSURLConnection sendSynchronousRequest:request + returningResponse:nil + error:nil]; + NSString *content = [[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding]; + if (content && content.length > 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + ANVideoAd *videoAd = [[ANVideoAd alloc] init]; + videoAd.content = content; + videoAd.notifyUrlString = ssmVideoAd.notifyUrlString; + videoAd.impressionUrls = ssmVideoAd.impressionUrls; + videoAd.errorUrls = ssmVideoAd.errorUrls; + videoAd.videoClickUrls = ssmVideoAd.videoClickUrls; + videoAd.videoEventTrackers = ssmVideoAd.videoEventTrackers; + [self.ads insertObject:videoAd atIndex:0]; + [self continueWaterfall]; + }); + } + }); +} + #pragma mark - Mediated Ads - (void)handleMediatedAd:(ANMediatedAd *)mediatedAd { From 2f1498934392e3a35dd388441e21c4bf72c38b79 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 12:00:05 -0500 Subject: [PATCH 63/92] MS-1746 Simplified /ut response public api --- sdk/internal/ANUniversalTagAdServerResponse.h | 6 ------ sdk/internal/ANUniversalTagAdServerResponse.m | 19 ------------------- 2 files changed, 25 deletions(-) diff --git a/sdk/internal/ANUniversalTagAdServerResponse.h b/sdk/internal/ANUniversalTagAdServerResponse.h index 74f7cc3d8..499db4612 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.h +++ b/sdk/internal/ANUniversalTagAdServerResponse.h @@ -23,12 +23,6 @@ - (instancetype)initWithAdServerData:(NSData *)data; -@property (nonatomic, readonly, assign) BOOL containsAds; -@property (nonatomic, readonly, strong) ANStandardAd *standardAd; -@property (nonatomic, readonly, strong) NSMutableArray *standardAds; -@property (nonatomic, readonly, strong) ANVideoAd *videoAd; -@property (nonatomic, readonly, strong) NSMutableArray *videoAds; - @property (nonatomic, readonly, strong) NSMutableArray *ads; @property (nonatomic, readonly, strong) NSString *noAdUrlString; diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 722660265..6d1e8bf22 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -79,12 +79,6 @@ @interface ANUniversalTagAdServerResponse () -@property (nonatomic, readwrite, assign) BOOL containsAds; -@property (nonatomic, readwrite, strong) ANStandardAd *standardAd; -@property (nonatomic, readwrite, strong) NSMutableArray *standardAds; -@property (nonatomic, readwrite, strong) ANVideoAd *videoAd; -@property (nonatomic, readwrite, strong) NSMutableArray *videoAds; - @property (nonatomic, readwrite, strong) NSMutableArray *ads; @property (nonatomic, readwrite, strong) NSString *noAdUrlString; @@ -162,9 +156,6 @@ - (void)processV2ResponseData:(NSData *)data { } } } - if (self.ads.count > 0) { - self.containsAds = YES; - } } + (NSArray *)tagsFromJSONResponse:(NSDictionary *)jsonResponse { @@ -430,16 +421,6 @@ + (NSArray *)videoCompleteUrlsFromContentSourceObject:(NSDictionary *)contentSou #pragma mark - Helper Methods -- (NSMutableArray *)standardAds { - if (!_standardAds) _standardAds = [[NSMutableArray alloc] init]; - return _standardAds; -} - -- (NSMutableArray *)videoAds { - if (!_videoAds) _videoAds = [[NSMutableArray alloc] init]; - return _videoAds; -} - - (NSMutableArray *)ads { if (!_ads) _ads = [[NSMutableArray alloc] init]; return _ads; From e86e7b8638c9cc721617084f48726c91f4ca5b30 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 12:10:37 -0500 Subject: [PATCH 64/92] MS-1746 Initialize video playback controller with video ad --- sdk/VastDataModel/ANVast.h | 2 -- sdk/internal/ANInterstitialAd.m | 5 +---- sdk/internal/ANInterstitialAdFetcher.m | 1 - sdk/internal/ANVideoPlayerViewController.h | 3 +-- sdk/internal/ANVideoPlayerViewController.m | 18 +++++++++--------- 5 files changed, 11 insertions(+), 18 deletions(-) diff --git a/sdk/VastDataModel/ANVast.h b/sdk/VastDataModel/ANVast.h index c834c6320..e4e814241 100644 --- a/sdk/VastDataModel/ANVast.h +++ b/sdk/VastDataModel/ANVast.h @@ -32,6 +32,4 @@ @property (nonatomic, readonly) NSMutableArray *anWrappers; @property (nonatomic, readonly) NSURL *mediaFileURL; -@property (nonatomic, readwrite, weak) ANVideoAd *videoAd; - @end \ No newline at end of file diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index e572c19e4..529d9c425 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -53,7 +53,6 @@ @interface ANInterstitialAd () delegate; @property (nonatomic, strong) ANVideoAd *videoAd; -- (instancetype)initWithVastDataModel:(ANVast *)vastDataModel; +- (instancetype)initWithVideoAd:(ANVideoAd *)videoAd; - (void)play; - (void)pause; diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 8d653bdc8..ebbd8088a 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -62,13 +62,13 @@ @interface ANVideoPlayerViewController () Date: Tue, 12 Jan 2016 12:18:45 -0500 Subject: [PATCH 65/92] MS-1746 Fix case where SSM request returns empty content --- sdk/internal/ANInterstitialAdFetcher.m | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index d729e132f..46a69db33 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -181,8 +181,8 @@ - (void)handleSSMStandardAd:(ANSSMStandardAd *)ssmStandardAd { error:nil]; NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - if (content && content.length > 0) { - dispatch_async(dispatch_get_main_queue(), ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (content && content.length > 0) { ANStandardAd *standardAd = [[ANStandardAd alloc] init]; standardAd.content = content; standardAd.width = ssmStandardAd.width; @@ -193,9 +193,10 @@ - (void)handleSSMStandardAd:(ANSSMStandardAd *)ssmStandardAd { standardAd.mraid = YES; } [self.ads insertObject:standardAd atIndex:0]; - [self continueWaterfall]; - }); - } + } + [self continueWaterfall]; + }); + }); } @@ -209,12 +210,12 @@ - (void)handleVideoAd:(ANVideoAd *)videoAd { } dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ ANVast *vastDataModel = [[ANVast alloc] initWithContent:videoAd.content]; - videoAd.vastDataModel = vastDataModel; dispatch_async(dispatch_get_main_queue(), ^{ if (!vastDataModel) { ANLogDebug(@"Invalid VAST content, unable to use"); [self continueWaterfall]; } else { + videoAd.vastDataModel = vastDataModel; ANAdFetcherResponse *adFetcherResponse = [ANAdFetcherResponse responseWithAdObject:videoAd]; [self processFinalResponse:adFetcherResponse]; } @@ -231,8 +232,8 @@ - (void)handleSSMVideoAd:(ANSSMVideoAd *)ssmVideoAd { error:nil]; NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - if (content && content.length > 0) { - dispatch_async(dispatch_get_main_queue(), ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (content && content.length > 0) { ANVideoAd *videoAd = [[ANVideoAd alloc] init]; videoAd.content = content; videoAd.notifyUrlString = ssmVideoAd.notifyUrlString; @@ -241,9 +242,10 @@ - (void)handleSSMVideoAd:(ANSSMVideoAd *)ssmVideoAd { videoAd.videoClickUrls = ssmVideoAd.videoClickUrls; videoAd.videoEventTrackers = ssmVideoAd.videoEventTrackers; [self.ads insertObject:videoAd atIndex:0]; - [self continueWaterfall]; - }); - } + } + [self continueWaterfall]; + }); + }); } From 52248cd74d9bcde9cf5974bc3b95a9d86d039360 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 12:23:03 -0500 Subject: [PATCH 66/92] MS-1746 Minor changes --- sdk/internal/ANInterstitialAdFetcher.m | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 46a69db33..c03c2b2f4 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -114,9 +114,14 @@ - (void)processFinalResponse:(ANAdFetcherResponse *)response { } - (void)continueWaterfall { - BOOL numberOfAdsLeft = self.ads.count > 0; + // stop waterfall if delegate reference (adview) was lost + if (!self.delegate) { + return; + } + + BOOL adsLeft = self.ads.count > 0; - if (numberOfAdsLeft == 0) { + if (!adsLeft) { ANLogWarn(@"response_no_ads"); if (self.noAdUrl) { ANLogDebug(@"(no_ad_url, %@)", self.noAdUrl); @@ -126,24 +131,15 @@ - (void)continueWaterfall { return; } - // stop waterfall if delegate reference (adview) was lost - if (!self.delegate) { - return; - } - id nextAd = [self.ads firstObject]; [self.ads removeObjectAtIndex:0]; self.impressionUrls = nil; if ([nextAd isKindOfClass:[ANMediatedAd class]]) { - ANMediatedAd *mediatedAd = (ANMediatedAd *)nextAd; - self.impressionUrls = mediatedAd.impressionUrls; - [self handleMediatedAd:mediatedAd]; + [self handleMediatedAd:nextAd]; } else if ([nextAd isKindOfClass:[ANVideoAd class]]) { [self handleVideoAd:nextAd]; } else if ([nextAd isKindOfClass:[ANStandardAd class]]) { - ANStandardAd *standardAd = (ANStandardAd *)nextAd; - self.impressionUrls = standardAd.impressionUrls; - [self handleStandardAd:standardAd]; + [self handleStandardAd:nextAd]; } else if ([nextAd isKindOfClass:[ANSSMVideoAd class]]) { [self handleSSMVideoAd:nextAd]; } else if ([nextAd isKindOfClass:[ANSSMStandardAd class]]) { @@ -156,6 +152,8 @@ - (void)continueWaterfall { #pragma mark - Standard Ads - (void)handleStandardAd:(ANStandardAd *)standardAd { + self.impressionUrls = standardAd.impressionUrls; + CGSize receivedSize = CGSizeMake([standardAd.width floatValue], [standardAd.height floatValue]); // Setting the base URL to /ut will result in mraid.js not loading properly from the server @@ -253,6 +251,7 @@ - (void)handleSSMVideoAd:(ANSSMVideoAd *)ssmVideoAd { - (void)handleMediatedAd:(ANMediatedAd *)mediatedAd { [self clearMediationController]; + self.impressionUrls = mediatedAd.impressionUrls; // Casting ANInterstitialAdFetcher to ANAdFetcher is intentional, even if they have no relation. // This class implements the necessary methods from ANAdFether in order to avoid any issues. self.mediationController = [ANMediationAdViewController initMediatedAd:mediatedAd From 72c27ba1a135f97d7d38cb6ec9df9aa903f6666d Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 12:27:00 -0500 Subject: [PATCH 67/92] MS-1746 Minor change --- sdk/internal/ANInterstitialAdFetcher.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index c03c2b2f4..a0d3b1dee 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -88,9 +88,9 @@ - (void)stopAdLoad { #pragma mark - Ad Response - (void)processAdServerResponse:(ANUniversalTagAdServerResponse *)response { - BOOL numberOfAds = response.ads != nil ? response.ads.count : 0; + BOOL containsAds = response.ads != nil && response.ads.count > 0; - if (numberOfAds == 0) { + if (!containsAds) { ANLogWarn(@"response_no_ads"); [self finishRequestWithError:ANError(@"response_no_ads", ANAdResponseUnableToFill)]; return; From 5309bff947022015208a77e14b3381157130a927 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 12:35:17 -0500 Subject: [PATCH 68/92] MS-1746 Fire impression trackers even when close delay is 0 --- sdk/internal/ANInterstitialAdViewController.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/internal/ANInterstitialAdViewController.m b/sdk/internal/ANInterstitialAdViewController.m index e7fc60549..0282017be 100644 --- a/sdk/internal/ANInterstitialAdViewController.m +++ b/sdk/internal/ANInterstitialAdViewController.m @@ -102,13 +102,15 @@ - (void)viewWillAppear:(BOOL)animated { - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - if (!self.viewed && ([self.delegate closeDelayForController] > 0.0)) { + if (!self.viewed) { [self setupViewabilityTracker]; + } + if (!self.viewed && ([self.delegate closeDelayForController] > 0.0)) { [self startCountdownTimer]; - self.viewed = YES; } else { [self stopCountdownTimer]; } + self.viewed = YES; } - (void)viewWillDisappear:(BOOL)animated { From f07614643df85ae3886ac6047439d7dda24a6526 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 14:52:20 -0500 Subject: [PATCH 69/92] MS-1746 Simplified SSM Object Parsing --- sdk/internal/ANUniversalTagAdServerResponse.m | 122 +++++++++--------- 1 file changed, 59 insertions(+), 63 deletions(-) diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 6d1e8bf22..6fd7bd69d 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -32,9 +32,6 @@ static NSString *const kANUniversalTagAdServerResponseKeyAdsRTBObject = @"rtb"; static NSString *const kANUniversalTagAdServerResponseKeyAdsNotifyUrl = @"notify_url"; -static NSString *const kANUniversalTagAdServerResponseValueAdTypeBanner = @"banner"; -static NSString *const kANUniversalTagAdServerResponseValueAdTypeVideo = @"video"; - static NSString *const kANUniversalTagAdServerResponseKeyVideoObject = @"video"; static NSString *const kANUniversalTagAdServerResponseKeyVideoContent = @"content"; @@ -138,19 +135,14 @@ - (void)processV2ResponseData:(NSData *)data { } NSDictionary *ssmObject = [[self class] ssmObjectFromAdObject:adObject]; if (ssmObject) { - if ([adObject[kANUniversalTagAdServerResponseKeyAdsAdType] - isEqualToString:kANUniversalTagAdServerResponseValueAdTypeBanner]) { - ANSSMStandardAd *standardAd = [[self class] standardSSMAdFromSSMObject:ssmObject]; - if (standardAd) { - [self.ads addObject:standardAd]; - } - } else if ([adObject[kANUniversalTagAdServerResponseKeyAdsAdType] - isEqualToString:kANUniversalTagAdServerResponseValueAdTypeVideo]) { - ANSSMVideoAd *videoAd = [[self class] videoSSMAdFromSSMObject:ssmObject]; - if (videoAd) { - videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyAdsNotifyUrl] description]; - [self.ads addObject:videoAd]; - } + ANSSMStandardAd *standardAd = [[self class] standardSSMAdFromSSMObject:ssmObject]; + if (standardAd) { + [self.ads addObject:standardAd]; + } + ANSSMVideoAd *videoAd = [[self class] videoSSMAdFromSSMObject:ssmObject]; + if (videoAd) { + videoAd.notifyUrlString = [adObject[kANUniversalTagAdServerResponseKeyAdsNotifyUrl] description]; + [self.ads addObject:videoAd]; } } } @@ -262,61 +254,65 @@ + (ANMediatedAd *)mediatedAdFromCSMObject:(NSDictionary *)csmObject { } + (ANSSMStandardAd *)standardSSMAdFromSSMObject:(NSDictionary *)ssmObject { - if ([ssmObject[kANUniversalTagAdServerResponseKeyHandler] isKindOfClass:[NSArray class]]) { - NSArray *handlerArray = (NSArray *)ssmObject[kANUniversalTagAdServerResponseKeyHandler]; - if ([[handlerArray firstObject] isKindOfClass:[NSDictionary class]]) { - NSDictionary *handlerDict = (NSDictionary *)[handlerArray firstObject]; - ANSSMStandardAd *standardAd = [[ANSSMStandardAd alloc] init]; - standardAd.urlString = handlerDict[kANUniversalTagAdServerResponseKeySSMHandlerUrl]; - standardAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; - if ([ssmObject[kANUniversalTagAdServerResponseKeyBannerObject] isKindOfClass:[NSDictionary class]]) { - NSDictionary *banner = ssmObject[kANUniversalTagAdServerResponseKeyBannerObject]; - standardAd.width = [banner[kANUniversalTagAdServerResponseKeyBannerWidth] description]; - standardAd.height = [banner[kANUniversalTagAdServerResponseKeyBannerHeight] description]; + if ([ssmObject[kANUniversalTagAdServerResponseKeyBannerObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *banner = ssmObject[kANUniversalTagAdServerResponseKeyBannerObject]; + if ([ssmObject[kANUniversalTagAdServerResponseKeyHandler] isKindOfClass:[NSArray class]]) { + NSArray *handlerArray = (NSArray *)ssmObject[kANUniversalTagAdServerResponseKeyHandler]; + if ([[handlerArray firstObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *handlerDict = (NSDictionary *)[handlerArray firstObject]; + ANSSMStandardAd *standardAd = [[ANSSMStandardAd alloc] init]; + standardAd.urlString = handlerDict[kANUniversalTagAdServerResponseKeySSMHandlerUrl]; + standardAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; + if ([ssmObject[kANUniversalTagAdServerResponseKeyBannerObject] isKindOfClass:[NSDictionary class]]) { + standardAd.width = [banner[kANUniversalTagAdServerResponseKeyBannerWidth] description]; + standardAd.height = [banner[kANUniversalTagAdServerResponseKeyBannerHeight] description]; + } + return standardAd; } - return standardAd; } } return nil; } + (ANSSMVideoAd *)videoSSMAdFromSSMObject:(NSDictionary *)ssmObject { - if ([ssmObject[kANUniversalTagAdServerResponseKeyHandler] isKindOfClass:[NSArray class]]) { - NSArray *handlerArray = (NSArray *)ssmObject[kANUniversalTagAdServerResponseKeyHandler]; - if ([[handlerArray firstObject] isKindOfClass:[NSDictionary class]]) { - NSDictionary *handlerDict = (NSDictionary *)[handlerArray firstObject]; - ANSSMVideoAd *videoAd = [[ANSSMVideoAd alloc] init]; - videoAd.urlString = handlerDict[kANUniversalTagAdServerResponseKeySSMHandlerUrl]; - videoAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; - videoAd.errorUrls = [[self class] errorUrlsFromContentSourceObject:ssmObject]; - videoAd.videoClickUrls = [[self class] videoClickUrlsFromContentSourceObject:ssmObject]; - NSMutableDictionary *videoEventTrackers = [[NSMutableDictionary alloc] init]; - NSArray *startTrackers = [[self class] videoStartUrlsFromContentSourceObject:ssmObject]; - if (startTrackers) { - videoEventTrackers[@(ANVideoEventStart)] = startTrackers; - } - NSArray *skipTrackers = [[self class] videoSkipUrlsFromContentSourceObject:ssmObject]; - if (skipTrackers) { - videoEventTrackers[@(ANVideoEventSkip)] = skipTrackers; - } - NSArray *firstQuartileTrackers = [[self class] videoFirstQuartileUrlsFromContentSourceObject:ssmObject]; - if (firstQuartileTrackers) { - videoEventTrackers[@(ANVideoEventQuartileFirst)] = firstQuartileTrackers; - } - NSArray *midpointTrackers = [[self class] videoMidpointUrlsFromContentSourceObject:ssmObject]; - if (midpointTrackers) { - videoEventTrackers[@(ANVideoEventQuartileMidPoint)] = midpointTrackers; - } - NSArray *thirdQuartileTrackers = [[self class] videoThirdQuartileUrlsFromContentSourceObject:ssmObject]; - if (thirdQuartileTrackers) { - videoEventTrackers[@(ANVideoEventQuartileThird)] = thirdQuartileTrackers; - } - NSArray *videoCompleteTrackers = [[self class] videoCompleteUrlsFromContentSourceObject:ssmObject]; - if (videoCompleteTrackers) { - videoEventTrackers[@(ANVideoEventQuartileComplete)] = videoCompleteTrackers; + if ([ssmObject[kANUniversalTagAdServerResponseKeyVideoObject] isKindOfClass:[NSDictionary class]]) { + if ([ssmObject[kANUniversalTagAdServerResponseKeyHandler] isKindOfClass:[NSArray class]]) { + NSArray *handlerArray = (NSArray *)ssmObject[kANUniversalTagAdServerResponseKeyHandler]; + if ([[handlerArray firstObject] isKindOfClass:[NSDictionary class]]) { + NSDictionary *handlerDict = (NSDictionary *)[handlerArray firstObject]; + ANSSMVideoAd *videoAd = [[ANSSMVideoAd alloc] init]; + videoAd.urlString = handlerDict[kANUniversalTagAdServerResponseKeySSMHandlerUrl]; + videoAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; + videoAd.errorUrls = [[self class] errorUrlsFromContentSourceObject:ssmObject]; + videoAd.videoClickUrls = [[self class] videoClickUrlsFromContentSourceObject:ssmObject]; + NSMutableDictionary *videoEventTrackers = [[NSMutableDictionary alloc] init]; + NSArray *startTrackers = [[self class] videoStartUrlsFromContentSourceObject:ssmObject]; + if (startTrackers) { + videoEventTrackers[@(ANVideoEventStart)] = startTrackers; + } + NSArray *skipTrackers = [[self class] videoSkipUrlsFromContentSourceObject:ssmObject]; + if (skipTrackers) { + videoEventTrackers[@(ANVideoEventSkip)] = skipTrackers; + } + NSArray *firstQuartileTrackers = [[self class] videoFirstQuartileUrlsFromContentSourceObject:ssmObject]; + if (firstQuartileTrackers) { + videoEventTrackers[@(ANVideoEventQuartileFirst)] = firstQuartileTrackers; + } + NSArray *midpointTrackers = [[self class] videoMidpointUrlsFromContentSourceObject:ssmObject]; + if (midpointTrackers) { + videoEventTrackers[@(ANVideoEventQuartileMidPoint)] = midpointTrackers; + } + NSArray *thirdQuartileTrackers = [[self class] videoThirdQuartileUrlsFromContentSourceObject:ssmObject]; + if (thirdQuartileTrackers) { + videoEventTrackers[@(ANVideoEventQuartileThird)] = thirdQuartileTrackers; + } + NSArray *videoCompleteTrackers = [[self class] videoCompleteUrlsFromContentSourceObject:ssmObject]; + if (videoCompleteTrackers) { + videoEventTrackers[@(ANVideoEventQuartileComplete)] = videoCompleteTrackers; + } + videoAd.videoEventTrackers = [videoEventTrackers copy]; + return videoAd; } - videoAd.videoEventTrackers = [videoEventTrackers copy]; - return videoAd; } } return nil; From 358666a7f6024051a727034bd24f8762d63cee3f Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 14:54:51 -0500 Subject: [PATCH 70/92] MS-1746 Minor simplification --- sdk/internal/ANUniversalTagAdServerResponse.m | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index 6fd7bd69d..abafaa967 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -263,10 +263,8 @@ + (ANSSMStandardAd *)standardSSMAdFromSSMObject:(NSDictionary *)ssmObject { ANSSMStandardAd *standardAd = [[ANSSMStandardAd alloc] init]; standardAd.urlString = handlerDict[kANUniversalTagAdServerResponseKeySSMHandlerUrl]; standardAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:ssmObject]; - if ([ssmObject[kANUniversalTagAdServerResponseKeyBannerObject] isKindOfClass:[NSDictionary class]]) { - standardAd.width = [banner[kANUniversalTagAdServerResponseKeyBannerWidth] description]; - standardAd.height = [banner[kANUniversalTagAdServerResponseKeyBannerHeight] description]; - } + standardAd.width = [banner[kANUniversalTagAdServerResponseKeyBannerWidth] description]; + standardAd.height = [banner[kANUniversalTagAdServerResponseKeyBannerHeight] description]; return standardAd; } } From 8a20393eb19959d43a7bda5fc871957a019815d8 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 14:58:38 -0500 Subject: [PATCH 71/92] MS-1746 Minor simplification --- sdk/VastDataModel/ANVast.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/sdk/VastDataModel/ANVast.h b/sdk/VastDataModel/ANVast.h index e4e814241..e53862677 100644 --- a/sdk/VastDataModel/ANVast.h +++ b/sdk/VastDataModel/ANVast.h @@ -20,8 +20,6 @@ #import "ANInLine.h" #import "ANWrapper.h" -@class ANVideoAd; - @interface ANVast : NSObject - (instancetype)initWithContent:(NSString *)vast; From 71efbff54bb0583cf353f9c0da93239cd9c87d9b Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 15:24:57 -0500 Subject: [PATCH 72/92] MS-1746 Close interstitial automatically on player error --- sdk/internal/ANVideoPlayerViewController.m | 31 +++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index ebbd8088a..20220204b 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -49,6 +49,7 @@ @interface ANVideoPlayerViewController () Date: Tue, 12 Jan 2016 16:18:25 -0500 Subject: [PATCH 73/92] MS-1746 Improvements based on SSM VAST testing: * Handle failure ssm case more gracefully * Prevent vast parser from parsing through non-linear creatives * Fire /ut video event trackers properly * Fire /ut click trackers properly --- sdk/VastDataModel/ANVast.m | 5 ++- sdk/internal/ANInterstitialAdFetcher.m | 49 ++++++++++++++-------- sdk/internal/ANVideoPlayerViewController.m | 14 +++++-- 3 files changed, 46 insertions(+), 22 deletions(-) diff --git a/sdk/VastDataModel/ANVast.m b/sdk/VastDataModel/ANVast.m index 955b97833..20b483434 100644 --- a/sdk/VastDataModel/ANVast.m +++ b/sdk/VastDataModel/ANVast.m @@ -169,7 +169,10 @@ - (NSURL *)optimalMediaFileURL { ANInLine *inLine = (self.anInLine)?self.anInLine:[self.anWrappers lastObject]; //last object will be the valid inline element NSString *fileURI = @""; for (ANCreative *creative in inLine.creatives) { - + // SDK only supports linear + if (!creative.anLinear) { + continue; + } //Sort array on bitRate = Ascending NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"bitRate" ascending:YES]; NSArray *mediaFiles = [creative.anLinear.mediaFiles sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index a0d3b1dee..333e0ae63 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -172,15 +172,9 @@ - (void)didCompleteFirstLoadFromWebViewController:(ANAdWebViewController *)contr - (void)handleSSMStandardAd:(ANSSMStandardAd *)ssmStandardAd { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - NSURL *URL = [NSURL URLWithString:ssmStandardAd.urlString]; - NSURLRequest *request = ANBasicRequestWithURL(URL); - NSData *data = [NSURLConnection sendSynchronousRequest:request - returningResponse:nil - error:nil]; - NSString *content = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; + NSString *content = [self contentForUrlString:ssmStandardAd.urlString]; dispatch_async(dispatch_get_main_queue(), ^{ - if (content && content.length > 0) { + if (content) { ANStandardAd *standardAd = [[ANStandardAd alloc] init]; standardAd.content = content; standardAd.width = ssmStandardAd.width; @@ -194,7 +188,6 @@ - (void)handleSSMStandardAd:(ANSSMStandardAd *)ssmStandardAd { } [self continueWaterfall]; }); - }); } @@ -223,15 +216,9 @@ - (void)handleVideoAd:(ANVideoAd *)videoAd { - (void)handleSSMVideoAd:(ANSSMVideoAd *)ssmVideoAd { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - NSURL *URL = [NSURL URLWithString:ssmVideoAd.urlString]; - NSURLRequest *request = ANBasicRequestWithURL(URL); - NSData *data = [NSURLConnection sendSynchronousRequest:request - returningResponse:nil - error:nil]; - NSString *content = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; + NSString *content = [self contentForUrlString:ssmVideoAd.urlString]; dispatch_async(dispatch_get_main_queue(), ^{ - if (content && content.length > 0) { + if (content) { ANVideoAd *videoAd = [[ANVideoAd alloc] init]; videoAd.content = content; videoAd.notifyUrlString = ssmVideoAd.notifyUrlString; @@ -359,4 +346,32 @@ - (NSTimeInterval)getTotalLatency:(NSTimeInterval)stopTime { return -1; } +#pragma mark - Helper + +- (NSString *)contentForUrlString:(NSString *)urlString { + NSURL *URL = [NSURL URLWithString:urlString]; + NSURLRequest *request = ANBasicRequestWithURL(URL); + NSURLResponse *response; + NSError *error; + NSData *data = [NSURLConnection sendSynchronousRequest:request + returningResponse:&response + error:&error]; + if (error) { + return nil; + } + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; + NSInteger status = [httpResponse statusCode]; + if (status >= 400) { + return nil; + } + } + NSString *content = [[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding]; + if (content.length > 0) { + return content; + } + return nil; +} + @end \ No newline at end of file diff --git a/sdk/internal/ANVideoPlayerViewController.m b/sdk/internal/ANVideoPlayerViewController.m index 20220204b..adb5c79a7 100644 --- a/sdk/internal/ANVideoPlayerViewController.m +++ b/sdk/internal/ANVideoPlayerViewController.m @@ -327,13 +327,15 @@ - (void)closeButtonClicked { - (void)fireTrackingEventWithEvent:(ANVideoEvent)event { NSArray *trackingArray = [self.videoAd.vastDataModel trackingArrayForEvent:event]; - if (self.videoAd.videoEventTrackers[@(event)]) { - trackingArray = [trackingArray arrayByAddingObjectsFromArray:self.videoAd.videoEventTrackers[@(event)]]; - } [trackingArray enumerateObjectsUsingBlock:^(ANTracking *tracking, NSUInteger idx, BOOL *stop) { ANLogDebug(@"(%@, %@)", [ANVASTUtil eventStringForVideoEvent:event], tracking.trackingURI); [self fireImpressionWithURL:tracking.trackingURI]; }]; + NSArray *videoEventTrackers = self.videoAd.videoEventTrackers[@(event)]; + [videoEventTrackers enumerateObjectsUsingBlock:^(NSString *urlString, NSUInteger idx, BOOL *stop) { + ANLogDebug(@"(%@, %@)", [ANVASTUtil eventStringForVideoEvent:event], urlString); + [self fireImpressionWithURL:urlString]; + }]; } - (void)fireImpressionTracking { @@ -350,7 +352,11 @@ - (void)fireImpressionTracking { - (void)fireClickTracking { NSArray *trackingArray = self.videoAd.vastDataModel.clickTrackingURL; if (self.videoAd.videoClickUrls) { - [trackingArray arrayByAddingObjectsFromArray:self.videoAd.videoClickUrls]; + if (trackingArray) { + [trackingArray arrayByAddingObjectsFromArray:self.videoAd.videoClickUrls]; + } else { + trackingArray = self.videoAd.videoClickUrls; + } } [trackingArray enumerateObjectsUsingBlock:^(NSString *clickTrackingURL, NSUInteger idx, BOOL *stop) { ANLogDebug(@"(click, %@)", clickTrackingURL); From c7b1a2d88d1d9bbb7025309aa41f96d4813d5cc1 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 17:30:29 -0500 Subject: [PATCH 74/92] MS-1746 Comment out native browser click-through test --- .../project.pbxproj | 16 +++++------ .../OpenInBrowser/OpenInNativeBrowser.m | 27 ++++++++++--------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj index 7ef2fa9f8..aaa5183fb 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj @@ -8,7 +8,7 @@ /* Begin PBXBuildFile section */ 496007961BFEDA0D00B50A1F /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 496007801BFED7AB00B50A1F /* libKIF.a */; }; - 4960079B1BFEDAF400B50A1F /* DisplayVideoAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 4960079A1BFEDAF400B50A1F /* DisplayVideoAd.m */; settings = {ASSET_TAGS = (); }; }; + 4960079B1BFEDAF400B50A1F /* DisplayVideoAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 4960079A1BFEDAF400B50A1F /* DisplayVideoAd.m */; }; 496007A01BFF2A6E00B50A1F /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A0D45291BF1615D0097D925 /* ANSDKResources.bundle */; }; 8A00B20C1BF1634000818A2A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B2011BF1633F00818A2A /* AppDelegate.m */; }; 8A00B20D1BF1634000818A2A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8A00B2021BF1633F00818A2A /* Assets.xcassets */; }; @@ -19,13 +19,13 @@ 8A00B2131BF1634000818A2A /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A00B20B1BF1634000818A2A /* ViewController.m */; }; 8A0D45481BF161870097D925 /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A0D45271BF1615D0097D925 /* libANSDK.a */; }; 8A0D45491BF1618D0097D925 /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A0D45291BF1615D0097D925 /* ANSDKResources.bundle */; }; - EF8E4FDA1C101C8600FD711C /* PlayerDelegateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EF8E4FD91C101C8600FD711C /* PlayerDelegateTests.m */; settings = {ASSET_TAGS = (); }; }; + EF8E4FDA1C101C8600FD711C /* PlayerDelegateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EF8E4FD91C101C8600FD711C /* PlayerDelegateTests.m */; }; EFAA6F9E1C04270700C3C83B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFAA6F9D1C04270700C3C83B /* CoreGraphics.framework */; }; - EFDD763B1C047BED0073ACC4 /* VolumeClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763A1C047BED0073ACC4 /* VolumeClickTest.m */; settings = {ASSET_TAGS = (); }; }; - EFDD763E1C047D9B0073ACC4 /* PlayerClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763D1C047D9B0073ACC4 /* PlayerClickTest.m */; settings = {ASSET_TAGS = (); }; }; - EFDD76411C047E7A0073ACC4 /* CloseVideoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD76401C047E7A0073ACC4 /* CloseVideoTest.m */; settings = {ASSET_TAGS = (); }; }; - EFF21EC71C0C60F100766443 /* OpenInInAppBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = EFF21EC61C0C60F100766443 /* OpenInInAppBrowser.m */; settings = {ASSET_TAGS = (); }; }; - EFF21ECA1C0C614400766443 /* OpenInNativeBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = EFF21EC91C0C614400766443 /* OpenInNativeBrowser.m */; settings = {ASSET_TAGS = (); }; }; + EFDD763B1C047BED0073ACC4 /* VolumeClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763A1C047BED0073ACC4 /* VolumeClickTest.m */; }; + EFDD763E1C047D9B0073ACC4 /* PlayerClickTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD763D1C047D9B0073ACC4 /* PlayerClickTest.m */; }; + EFDD76411C047E7A0073ACC4 /* CloseVideoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EFDD76401C047E7A0073ACC4 /* CloseVideoTest.m */; }; + EFF21EC71C0C60F100766443 /* OpenInInAppBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = EFF21EC61C0C60F100766443 /* OpenInInAppBrowser.m */; }; + EFF21ECA1C0C614400766443 /* OpenInNativeBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = EFF21EC91C0C614400766443 /* OpenInNativeBrowser.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -412,7 +412,7 @@ }; 8A87BEE01BD941E900281EA9 = { CreatedOnToolsVersion = 7.0; - DevelopmentTeam = TBFU6QDZMS; + DevelopmentTeam = HR94J6TSB3; }; }; }; diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m index 5ab86b00c..1d943e101 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemandTests/OpenInBrowser/OpenInNativeBrowser.m @@ -69,19 +69,20 @@ - (void)test1PrepareForDisplay{ XCTAssertNil(interstitial, @"Failed to load video."); } -- (void) test2OpenClickInNativeBrowser{ - - XCTAssertNil(interstitial, @"Failed to load video."); - - expectation = [self expectationWithDescription:@"Waiting for player to be clicked."]; - - [tester tapViewWithAccessibilityLabel:@"player"]; - - [self waitForExpectationsWithTimeout:5.0 handler:nil]; - - XCTAssertTrue(isDelegateFired, @"Failed."); - -} +// TODO: Find a new way to test click-through to the in-app browser +//- (void) test2OpenClickInNativeBrowser{ +// +// XCTAssertNil(interstitial, @"Failed to load video."); +// +// expectation = [self expectationWithDescription:@"Waiting for player to be clicked."]; +// +// [tester tapViewWithAccessibilityLabel:@"player"]; +// +// [self waitForExpectationsWithTimeout:5.0 handler:nil]; +// +// XCTAssertTrue(isDelegateFired, @"Failed."); +// +//} -(void) setupDelegatesForVideo{ From 957bfea54b9bc8f34bf5a053ba75528531a78147 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 18:14:30 -0500 Subject: [PATCH 75/92] MS-1746 Pass screen size in /ut request, removed unused methods in ANInterstitialAd --- .../ViewController.m | 2 +- sdk/internal/ANInterstitialAd.m | 59 +------------------ sdk/internal/ANInterstitialAdFetcher.h | 1 + sdk/internal/ANInterstitialAdFetcher.m | 2 +- sdk/internal/ANUniversalTagRequestBuilder.m | 2 + 5 files changed, 6 insertions(+), 60 deletions(-) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m index d96204a8d..3fe19283e 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand/ViewController.m @@ -20,7 +20,7 @@ @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; - [ANLogManager setANLogLevel:ANLogLevelOff]; + [ANLogManager setANLogLevel:ANLogLevelAll]; // VAST Placement self.interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"5778861"]; // HTML Placement diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index 529d9c425..9ec92e745 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -340,64 +340,7 @@ - (void)setCloseDelay:(NSTimeInterval)closeDelay { #pragma mark extraParameters methods -- (NSString *)sizeParameter { - return [NSString stringWithFormat:@"&size=%ldx%ld", - (long)self.frame.size.width, - (long)self.frame.size.height]; -} - -- (NSString *)promoSizesParameter { - NSString *promoSizesParameter = @"&promo_sizes="; - NSMutableArray *sizesStringsArray = [NSMutableArray arrayWithCapacity:[self.allowedAdSizes count]]; - - for (id sizeValue in self.allowedAdSizes) { - if ([sizeValue isKindOfClass:[NSValue class]]) { - CGSize size = [sizeValue CGSizeValue]; - NSString *param = [NSString stringWithFormat:@"%ldx%ld", (long)size.width, (long)size.height]; - - [sizesStringsArray addObject:param]; - } - } - - promoSizesParameter = [promoSizesParameter stringByAppendingString:[sizesStringsArray componentsJoinedByString:@","]]; - - return promoSizesParameter; -} - -- (NSString *)orientationParameter { - NSString *orientation = UIInterfaceOrientationIsLandscape(self.controller.orientation) ? @"h" : @"v"; - return [NSString stringWithFormat:@"&orientation=%@", orientation]; -} - -#pragma mark ANAdFetcherDelegate - -- (NSArray *)extraParameters { - return @[[self sizeParameter], - [self promoSizesParameter], - [self orientationParameter]]; -} - -- (void)adFetcher:(ANAdFetcher *)fetcher didFinishRequestWithResponse:(ANAdFetcherResponse *)response { - if ([response isSuccessful]) { - NSMutableDictionary *adViewWithDateLoaded = [NSMutableDictionary dictionaryWithObjectsAndKeys: - response.adObject, kANInterstitialAdViewKey, - [NSDate date], kANInterstitialAdViewDateLoadedKey, - nil]; - // cannot insert nil objects - if (response.auctionID) { - adViewWithDateLoaded[kANInterstitialAdViewAuctionInfoKey] = response.auctionID; - } - [self.precachedAdObjects addObject:adViewWithDateLoaded]; - ANLogDebug(@"Stored ad %@ in precached ad views", adViewWithDateLoaded); - - [self adDidReceiveAd]; - } - else { - [self adRequestFailedWithError:response.error]; - } -} - -- (CGSize)requestedSizeForAdFetcher:(ANAdFetcher *)fetcher { +- (CGSize)screenSize { return self.frame.size; } diff --git a/sdk/internal/ANInterstitialAdFetcher.h b/sdk/internal/ANInterstitialAdFetcher.h index 3bc930fcf..28563714a 100644 --- a/sdk/internal/ANInterstitialAdFetcher.h +++ b/sdk/internal/ANInterstitialAdFetcher.h @@ -36,6 +36,7 @@ extern NSString *const kANUniversalTagAdServerResponseMraidJSFilename; @protocol ANInterstitialAdFetcherDelegate - (NSMutableSet *)allowedAdSizes; +- (CGSize)screenSize; @optional diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 333e0ae63..4bbc27f23 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -56,7 +56,7 @@ - (instancetype)initWithDelegate:(id)delegate { } - (void)sendDelegateFinishedResponse:(ANAdFetcherResponse *)response { - if ([self.delegate respondsToSelector:@selector(adFetcher:didFinishRequestWithResponse:)]) { + if ([self.delegate respondsToSelector:@selector(interstitialAdFetcher:didFinishRequestWithResponse:)]) { [self.delegate interstitialAdFetcher:self didFinishRequestWithResponse:response]; } } diff --git a/sdk/internal/ANUniversalTagRequestBuilder.m b/sdk/internal/ANUniversalTagRequestBuilder.m index 6091711a2..1875d8d4e 100644 --- a/sdk/internal/ANUniversalTagRequestBuilder.m +++ b/sdk/internal/ANUniversalTagRequestBuilder.m @@ -137,6 +137,8 @@ - (NSDictionary *)tag:(NSMutableDictionary *) requestDict { @"height":@(size.height)}]; } } + [sizeObjectArray addObject:@{@"width":@([interstitialDelegate screenSize].width), + @"height":@([interstitialDelegate screenSize].height)}]; tagDict[@"sizes"] = sizeObjectArray; } tagDict[@"ad_types"] = @[@"banner", @"video"]; From 75a268d1d3c02f0d3278863fb76e798a0941751f Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 18:55:31 -0500 Subject: [PATCH 76/92] MS-1898 Fix issue with loading /ut with inventory code, member id; Fixed placement id & member id, inventory code unit tests --- sdk/internal/ANInterstitialAd.m | 4 +- .../Tests/ANPublicAPITestCase.m | 45 ++++++++++++++----- .../ANAdAdapterBannerAdMob+ANTest.m | 2 +- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index 9ec92e745..0c4042292 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -109,7 +109,9 @@ - (void)loadAd { // Do not call superclass, use ANInterstitialAdFetcher instead NSString *errorString; - if ([self.placementId length] < 1) { + BOOL placementIdValid = [self.placementId length] >= 1; + BOOL inventoryCodeValid = ([self memberId] >=1 ) && [self inventoryCode]; + if (!placementIdValid && !inventoryCodeValid) { errorString = ANErrorString(@"no_placement_id"); } diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index b5dabcc0b..8d23d03b9 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -133,9 +133,17 @@ - (void)testSetPlacementOnlyOnInterstitial { }]; self.requestExpectation = nil; - NSString *requestPath = [[self.request URL] absoluteString]; - XCTAssertEqual(@"1", [self.interstitial placementId]); - XCTAssertTrue([requestPath containsString:@"?id=1"]); + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + XCTAssertNil(postData[@"member_id"]); + NSArray *tags = postData[@"tags"]; + XCTAssertNotNil(tags); + NSDictionary *tag = [tags firstObject]; + XCTAssertNotNil(tag); + XCTAssertEqualObjects(tag[@"id"], @(1)); + XCTAssertNil(tag[@"code"]); } - (void)testSetInventoryCodeAndMemberIDOnInterstitial { @@ -149,10 +157,17 @@ - (void)testSetInventoryCodeAndMemberIDOnInterstitial { }]; self.requestExpectation = nil; - NSString *requestPath = [[self.request URL] absoluteString]; - XCTAssertEqual(@"test", [self.interstitial inventoryCode]); - XCTAssertEqual(2, [self.interstitial memberId]); - XCTAssertTrue([requestPath containsString:@"?member=2&inv_code=test"]); + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + XCTAssertEqualObjects(postData[@"member_id"], @(2)); + NSArray *tags = postData[@"tags"]; + XCTAssertNotNil(tags); + NSDictionary *tag = [tags firstObject]; + XCTAssertNotNil(tag); + XCTAssertEqualObjects(tag[@"code"], @"test"); + XCTAssertNil(tag[@"id"]); } - (void)testSetBothInventoryCodeAndPlacementIdOnInterstitial { @@ -166,11 +181,17 @@ - (void)testSetBothInventoryCodeAndPlacementIdOnInterstitial { }]; self.requestExpectation = nil; - NSString *requestPath = [[self.request URL] absoluteString]; - XCTAssertEqual(@"1", [self.interstitial placementId]); - XCTAssertEqual(@"test", [self.interstitial inventoryCode]); - XCTAssertEqual(2, [self.interstitial memberId]); - XCTAssertTrue([requestPath containsString:@"?member=2&inv_code=test"]); + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + XCTAssertEqualObjects(postData[@"member_id"], @(2)); + NSArray *tags = postData[@"tags"]; + XCTAssertNotNil(tags); + NSDictionary *tag = [tags firstObject]; + XCTAssertNotNil(tag); + XCTAssertEqualObjects(tag[@"code"], @"test"); + XCTAssertNil(tag[@"id"]); } - (void)stubRequestWithResponse:(NSString *)responseName { diff --git a/tests/Shared/Categories/ANAdAdapterBannerAdMob+ANTest.m b/tests/Shared/Categories/ANAdAdapterBannerAdMob+ANTest.m index f3e9e44df..9010f1e1d 100644 --- a/tests/Shared/Categories/ANAdAdapterBannerAdMob+ANTest.m +++ b/tests/Shared/Categories/ANAdAdapterBannerAdMob+ANTest.m @@ -31,7 +31,7 @@ + (void)load { - (GADRequest *)test_createRequestFromTargetingParameters:(ANTargetingParameters *)targetingParameters { GADRequest *request = [self test_createRequestFromTargetingParameters:targetingParameters]; - //request.testDevices = @[ GAD_SIMULATOR_ID ]; //(Automatic in Google SDK Version 7.0.0) + request.testDevices = @[ kGADSimulatorID ]; return request; } From e95a2d6da492e593d6b8f20d4524435be1570a56 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 12 Jan 2016 19:15:32 -0500 Subject: [PATCH 77/92] MS-1898 Fixed testSuccessfulInterstitialDidLoad --- tests/NewTestApp.xcodeproj/project.pbxproj | 4 +++ tests/OriginalUnitTestAppTests/BasicTests.m | 3 +- .../TestUtils/ANBaseTestCase.h | 1 + .../TestUtils/ANBaseTestCase.m | 9 ++++++ .../TestUtils/ANTestResponses.h | 1 + .../TestUtils/ANTestResponses.m | 9 ++++++ tests/Shared/Responses/UTv2RTBHTML.json | 29 +++++++++++++++++++ 7 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 tests/Shared/Responses/UTv2RTBHTML.json diff --git a/tests/NewTestApp.xcodeproj/project.pbxproj b/tests/NewTestApp.xcodeproj/project.pbxproj index c764050fe..ed105ebcc 100644 --- a/tests/NewTestApp.xcodeproj/project.pbxproj +++ b/tests/NewTestApp.xcodeproj/project.pbxproj @@ -218,6 +218,7 @@ 8AE7AD981A7AB348009E2F2F /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AB5325719F0464B00CA4427 /* libKIF.a */; }; 8AE7AD9C1A7AC372009E2F2F /* appnexus_standard_response_store_url.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AE7AD9B1A7AC372009E2F2F /* appnexus_standard_response_store_url.json */; }; 8AF3659419D479130097019F /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AF3659319D479130097019F /* AdSupport.framework */; }; + 8AF480321C45CDF60075D2BA /* UTv2RTBHTML.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AF480231C45CBDC0075D2BA /* UTv2RTBHTML.json */; }; F50D81421BFC4945008D74DB /* ANPublicAPITestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = F50D81411BFC4945008D74DB /* ANPublicAPITestCase.m */; }; F50D81661BFCDC77008D74DB /* ANHTTPStubbingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009A719DB18AE0090EBED /* ANHTTPStubbingManager.m */; }; F50D81671BFCDC77008D74DB /* ANHTTPStubURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009A919DB18AE0090EBED /* ANHTTPStubURLProtocol.m */; }; @@ -793,6 +794,7 @@ 8AF3658319D474650097019F /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; 8AF3658519D4746E0097019F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 8AF3659319D479130097019F /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; + 8AF480231C45CBDC0075D2BA /* UTv2RTBHTML.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = UTv2RTBHTML.json; sourceTree = ""; }; 8AFE8BFF1B97B934007BAD27 /* Tests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = ""; }; F50D81411BFC4945008D74DB /* ANPublicAPITestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANPublicAPITestCase.m; sourceTree = ""; }; /* End PBXFileReference section */ @@ -1323,6 +1325,7 @@ 8AA00A2019DB1E150090EBED /* SuccessfulMediationResponse.json */, 8AA00A2119DB1E150090EBED /* SuccessfulMRAIDListenerResponse.json */, 8AA00A2219DB1E150090EBED /* SuccessfulMRAIDResponse.json */, + 8AF480231C45CBDC0075D2BA /* UTv2RTBHTML.json */, ); path = Responses; sourceTree = ""; @@ -1952,6 +1955,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8AF480321C45CDF60075D2BA /* UTv2RTBHTML.json in Resources */, 8AA0098A19DB16CD0090EBED /* InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/tests/OriginalUnitTestAppTests/BasicTests.m b/tests/OriginalUnitTestAppTests/BasicTests.m index 7ba755afd..c0f63791d 100644 --- a/tests/OriginalUnitTestAppTests/BasicTests.m +++ b/tests/OriginalUnitTestAppTests/BasicTests.m @@ -95,8 +95,7 @@ - (void)testBannerBlankResponseDidFail { } - (void)testSuccessfulInterstitialDidLoad { - // response format for interstitials and banners is the same - [self stubWithBody:[ANTestResponses successfulBanner]]; + [self stubUTv2WithBody:[ANTestResponses successfulBannerUTv2]]; [self fetchInterstitialAd]; [self waitForLoad]; diff --git a/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.h b/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.h index 446198d22..92b7df8a9 100644 --- a/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.h +++ b/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.h @@ -38,6 +38,7 @@ @property (nonatomic, assign) BOOL adFailedToDisplayCalled; - (void)clearTest; +- (void)stubUTv2WithBody:(NSString *)body; - (void)stubWithBody:(NSString *)body; - (void)stubResultCBResponses:(NSString *)body; - (void)stubResultCBForErrorCode; diff --git a/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.m b/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.m index a2b5d5ef9..71f997b14 100644 --- a/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.m +++ b/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.m @@ -18,6 +18,7 @@ #import "ANURLConnectionStub.h" #import "ANHTTPStubURLProtocol.h" #import "ANHTTPStubbingManager.h" +#import "ANInterstitialAdFetcher.h" @interface ANBaseTestCase () @@ -69,6 +70,14 @@ - (void)stubWithBody:(NSString *)body { [[ANHTTPStubbingManager sharedStubbingManager] addStub:anBaseURLStub]; } +- (void)stubUTv2WithBody:(NSString *)body { + ANURLConnectionStub *testURLStub = [[ANURLConnectionStub alloc] init]; + testURLStub.requestURLRegexPatternString = kANInterstitialAdFetcherDefaultRequestUrlString; + testURLStub.responseCode = 200; + testURLStub.responseBody = body; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:testURLStub]; +} + - (void)stubResultCBResponses:(NSString *)body { ANURLConnectionStub *anBaseURLStub = [[ANURLConnectionStub alloc] init]; anBaseURLStub.requestURLRegexPatternString = [NSString stringWithFormat:@"^%@.*", OK_RESULT_CB_URL]; diff --git a/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.h b/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.h index 6bf88cb24..c1e406683 100644 --- a/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.h +++ b/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.h @@ -20,6 +20,7 @@ static NSString *const OK_RESULT_CB_URL = @"http://result"; // use these functions + (NSString *)successfulBanner; ++ (NSString *)successfulBannerUTv2; + (NSString *)blankContentBanner; + (NSString *)mediationSuccessfulBanner; + (NSString *)mediationNoAdsBanner; diff --git a/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.m b/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.m index 66ad6c0c0..e4cb16755 100644 --- a/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.m +++ b/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.m @@ -36,6 +36,15 @@ + (NSString *)successfulBanner { return [ANTestResponses createAdsResponse:@"banner" withWidth:320 withHeight:50 withContent:@"HelloWorld"]; } ++ (NSString *)successfulBannerUTv2 { + NSBundle *currentBundle = [NSBundle bundleForClass:[self class]]; + NSString *baseResponse = [NSString stringWithContentsOfFile:[currentBundle pathForResource:@"UTv2RTBHTML" + ofType:@"json"] + encoding:NSUTF8StringEncoding + error:nil]; + return baseResponse; +} + + (NSString *)blankContentBanner { return [ANTestResponses createAdsResponse:@"banner" withWidth:320 withHeight:50 withContent:@""]; } diff --git a/tests/Shared/Responses/UTv2RTBHTML.json b/tests/Shared/Responses/UTv2RTBHTML.json new file mode 100644 index 000000000..ef1e4a056 --- /dev/null +++ b/tests/Shared/Responses/UTv2RTBHTML.json @@ -0,0 +1,29 @@ +{ + "version":"0.0.2", + "tags":[ + { + "uuid":"null", + "auction_id":"4005765276550092434", + "ut_url":"http://nym1.ib.adnxs.com/ut/notify?e=wqT_3QKOAqgFAQAAAgDWAAUI05nqsQUQkq3z0rrJ1cs3GPCmvcm7ioC6ESABKi0JAAAABQIAEQUGDAAAABkBBRAAAPA_IQkJCAAAKREJ8Lkwnc-CATi-B0DlAUgCUNf46QRYtbEKYABokUB4AIABAZIBA1VTRJgBwAKgAeADqAEBsAEAuAEBwAEByAEA0AEA2AEA4AEA8AEA2ALoB-ACocEJgAMAiAMBkAMAmAMXoAMAqgMAsAMAuAMAwAOsAsgDANIDKAgAEiRhNjVjMTExYy1kMjI4LTQ2OTctODAxZC0wYTMyODI1OGEwYzbYAwDgAwDoAwDwAwD4AwCABACSBAYvdXQvdjGYBAA.&s=298ad88d05422192c2a75eadce277200ddcc7b0f", + "tag_id":2140061, + "ads":[ + { + "content_source":"rtb", + "ad_type":"banner", + "buyer_member_id":229, + "creative_id":10124375, + "media_type_id":1, + "media_subtype_id":1, + "notify_url":"http://nym1.ib.adnxs.com/it?e=wqT_3QKOAqgFAQAAAgDWAAUI05nqsQUQkq3z0rrJ1cs3GPCmvcm7ioC6ESABKi0JAAAABQIAEQUGDAAAABkBBRAAAPA_IQkJCAAAKREJ8Lkwnc-CATi-B0DlAUgCUNf46QRYtbEKYABokUB4AIABAZIBA1VTRJgBwAKgAeADqAEBsAEAuAEBwAEByAEA0AEA2AEA4AEA8AEA2ALoB-ACocEJgAMAiAMBkAMAmAMXoAMAqgMAsAMAuAMAwAOsAsgDANIDKAgAEiRhNjVjMTExYy1kMjI4LTQ2OTctODAxZC0wYTMyODI1OGEwYzbYAwDgAwDoAwDwAwD4AwCABACSBAYvdXQvdjGYBAA.&s=298ad88d05422192c2a75eadce277200ddcc7b0f", + "rtb":{ + "banner":{ + "width":320, + "height":480, + "content":"HelloWorld" + } + } + } + ] + } + ] +} \ No newline at end of file From 6211e8783779613586c3ea301406a4d31208ad6b Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Wed, 13 Jan 2016 16:58:50 -0500 Subject: [PATCH 78/92] MS-1898 Do not parse impression urls from RTB VAST /ut object --- sdk/internal/ANUniversalTagAdServerResponse.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/internal/ANUniversalTagAdServerResponse.m b/sdk/internal/ANUniversalTagAdServerResponse.m index abafaa967..006f9fbfe 100644 --- a/sdk/internal/ANUniversalTagAdServerResponse.m +++ b/sdk/internal/ANUniversalTagAdServerResponse.m @@ -106,7 +106,7 @@ - (void)processV2ResponseData:(NSData *)data { return; } // Only the first tag is supported today - self.noAdUrlString = firstTag[@"no_ad_url"]; + self.noAdUrlString = firstTag[kANUniversalTagAdServerResponseKeyTagNoAdUrl]; NSArray *adsArray = [[self class] adsArrayFromTag:firstTag]; if (adsArray) { for (id adObject in adsArray) { @@ -217,7 +217,6 @@ + (ANVideoAd *)videoAdFromRTBObject:(NSDictionary *)rtbObject { NSDictionary *video = rtbObject[kANUniversalTagAdServerResponseKeyVideoObject]; ANVideoAd *videoAd = [[ANVideoAd alloc] init]; videoAd.content = [video[kANUniversalTagAdServerResponseKeyVideoContent] description]; - videoAd.impressionUrls = [[self class] impressionUrlsFromContentSourceObject:rtbObject]; return videoAd; } return nil; From 3044084b0512b3786a54a6507a88797c6959ae4c Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Thu, 14 Jan 2016 12:27:31 -0500 Subject: [PATCH 79/92] MS-2042 Pass allowed_media_types in request, disallow 1x1 HTML ads from displaying --- sdk/internal/ANInterstitialAdFetcher.m | 4 ++++ sdk/internal/ANUniversalTagRequestBuilder.m | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sdk/internal/ANInterstitialAdFetcher.m b/sdk/internal/ANInterstitialAdFetcher.m index 4bbc27f23..28d06cd66 100644 --- a/sdk/internal/ANInterstitialAdFetcher.m +++ b/sdk/internal/ANInterstitialAdFetcher.m @@ -152,6 +152,10 @@ - (void)continueWaterfall { #pragma mark - Standard Ads - (void)handleStandardAd:(ANStandardAd *)standardAd { + if ([standardAd.width isEqualToString:@"1"] && [standardAd.height isEqualToString:@"1"]) { + ANLogDebug(@"Server returned 1x1 HTML ad, not supported by SDK"); + [self continueWaterfall]; + } self.impressionUrls = standardAd.impressionUrls; CGSize receivedSize = CGSizeMake([standardAd.width floatValue], [standardAd.height floatValue]); diff --git a/sdk/internal/ANUniversalTagRequestBuilder.m b/sdk/internal/ANUniversalTagRequestBuilder.m index 1875d8d4e..9f448096e 100644 --- a/sdk/internal/ANUniversalTagRequestBuilder.m +++ b/sdk/internal/ANUniversalTagRequestBuilder.m @@ -128,7 +128,9 @@ - (NSDictionary *)tag:(NSMutableDictionary *) requestDict { if ([self.adFetcherDelegate conformsToProtocol:@protocol(ANInterstitialAdFetcherDelegate)]) { id interstitialDelegate = (id)self.adFetcherDelegate; - NSMutableSet *allowedSizes = [interstitialDelegate allowedAdSizes]; + NSMutableSet *allowedSizes = [[interstitialDelegate allowedAdSizes] mutableCopy]; + [allowedSizes addObject:[NSValue valueWithCGSize:interstitialDelegate.screenSize]]; + [allowedSizes addObject:[NSValue valueWithCGSize:CGSizeMake(1, 1)]]; NSMutableArray *sizeObjectArray = [[NSMutableArray alloc] init]; for (id sizeValue in allowedSizes) { if ([sizeValue isKindOfClass:[NSValue class]]) { @@ -137,11 +139,9 @@ - (NSDictionary *)tag:(NSMutableDictionary *) requestDict { @"height":@(size.height)}]; } } - [sizeObjectArray addObject:@{@"width":@([interstitialDelegate screenSize].width), - @"height":@([interstitialDelegate screenSize].height)}]; tagDict[@"sizes"] = sizeObjectArray; } - tagDict[@"ad_types"] = @[@"banner", @"video"]; + tagDict[@"allowed_media_types"] = @[@(1),@(3),@(5)]; tagDict[@"disable_psa"] = @(![self.adFetcherDelegate shouldServePublicServiceAnnouncements]); return [tagDict copy]; } From 1836538701011229bc2e2e48338237dfd8abb5d4 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Thu, 14 Jan 2016 22:47:15 -0500 Subject: [PATCH 80/92] MS-1898 Added placeholder methods for tests --- tests/NewTestApp.xcodeproj/project.pbxproj | 2 + .../Tests/ANPublicAPITestCase.m | 122 ++++++++++++++++-- 2 files changed, 110 insertions(+), 14 deletions(-) diff --git a/tests/NewTestApp.xcodeproj/project.pbxproj b/tests/NewTestApp.xcodeproj/project.pbxproj index ed105ebcc..1bed9c33d 100644 --- a/tests/NewTestApp.xcodeproj/project.pbxproj +++ b/tests/NewTestApp.xcodeproj/project.pbxproj @@ -46,6 +46,7 @@ 8A370A0E1B697A42002B05C6 /* libFlurry.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A370A0D1B697A42002B05C6 /* libFlurry.a */; }; 8A370A101B697A4B002B05C6 /* libFlurryAds.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A370A0F1B697A4B002B05C6 /* libFlurryAds.a */; }; 8A370A121B697B0E002B05C6 /* vg_privacy.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A370A111B697B0E002B05C6 /* vg_privacy.png */; }; + 8A38B08A1C481D24004D90A1 /* UTv2RTBHTML.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AF480231C45CBDC0075D2BA /* UTv2RTBHTML.json */; }; 8A3B37AF19D62A4E00CE24A5 /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A5D27CA199AB26B00F2A516 /* iAd.framework */; }; 8A3C13CB19EF2F1700CB1502 /* MediationAdaptersTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3C13B119EF2CB000CB1502 /* MediationAdaptersTestCase.m */; }; 8A4018051A9500A300D56208 /* GoogleMobileAds.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A4018041A9500A300D56208 /* GoogleMobileAds.framework */; }; @@ -1976,6 +1977,7 @@ buildActionMask = 2147483647; files = ( 8AA00A4C19DB2AA60090EBED /* SuccessfulMediationResponse.json in Resources */, + 8A38B08A1C481D24004D90A1 /* UTv2RTBHTML.json in Resources */, F50D81761BFCE0F8008D74DB /* appnexus_standard_response.json in Resources */, 8AA00A4D19DB2AA60090EBED /* SuccessfulMRAIDListenerResponse.json in Resources */, 8AA00A4E19DB2AA60090EBED /* SuccessfulMRAIDResponse.json in Resources */, diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index 8d23d03b9..403aea1f0 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -21,6 +21,8 @@ #import "ANURLConnectionStub.h" #import "ANHTTPStubbingManager.h" #import "XCTestCase+ANCategory.h" +#import "ANInterstitialAdFetcher.h" +#import "ANGlobal.h" @interface ANPublicAPITestCase : XCTestCase @@ -64,6 +66,34 @@ - (void)requestLoaded:(NSNotification *)notification { } } +- (void)stubRequestWithResponse:(NSString *)responseName { + NSBundle *currentBundle = [NSBundle bundleForClass:[self class]]; + NSString *baseResponse = [NSString stringWithContentsOfFile:[currentBundle pathForResource:responseName + ofType:@"json"] + encoding:NSUTF8StringEncoding + error:nil]; + ANURLConnectionStub *requestStub = [[ANURLConnectionStub alloc] init]; + requestStub.requestURLRegexPatternString = @"http://mediation.adnxs.com/mob\\?.*"; + requestStub.responseCode = 200; + requestStub.responseBody = baseResponse; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:requestStub]; +} + +- (void)stubUTv2RequestWithResponse:(NSString *)responseName { + NSBundle *currentBundle = [NSBundle bundleForClass:[self class]]; + NSString *baseResponse = [NSString stringWithContentsOfFile:[currentBundle pathForResource:responseName + ofType:@"json"] + encoding:NSUTF8StringEncoding + error:nil]; + ANURLConnectionStub *requestStub = [[ANURLConnectionStub alloc] init]; + requestStub.requestURLRegexPatternString = kANInterstitialAdFetcherDefaultRequestUrlString; + requestStub.responseCode = 200; + requestStub.responseBody = baseResponse; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:requestStub]; +} + +#pragma mark - Banner + - (void)testSetPlacementOnlyOnBanner { [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.requestExpectation = [self expectationWithDescription:@"request"]; @@ -123,8 +153,10 @@ - (void)testSetBothInventoryCodeAndPlacementIdOnBanner { XCTAssertTrue([requestPath containsString:@"?member=2&inv_code=test"]); } +#pragma mark - Interstitial + - (void)testSetPlacementOnlyOnInterstitial { - [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + [self stubUTv2RequestWithResponse:@"UTv2RTBHTML"]; self.requestExpectation = [self expectationWithDescription:@"request"]; self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; [self.interstitial loadAd]; @@ -147,7 +179,7 @@ - (void)testSetPlacementOnlyOnInterstitial { } - (void)testSetInventoryCodeAndMemberIDOnInterstitial { - [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + [self stubUTv2RequestWithResponse:@"UTv2RTBHTML"]; self.requestExpectation = [self expectationWithDescription:@"request"]; self.interstitial = [[ANInterstitialAd alloc] initWithMemberId:2 inventoryCode:@"test"]; @@ -171,8 +203,8 @@ - (void)testSetInventoryCodeAndMemberIDOnInterstitial { } - (void)testSetBothInventoryCodeAndPlacementIdOnInterstitial { + [self stubUTv2RequestWithResponse:@"UTv2RTBHTML"]; self.requestExpectation = [self expectationWithDescription:@"request"]; - [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; [self.interstitial setInventoryCode:@"test" memberId:2]; [self.interstitial loadAd]; @@ -194,18 +226,80 @@ - (void)testSetBothInventoryCodeAndPlacementIdOnInterstitial { XCTAssertNil(tag[@"id"]); } -- (void)stubRequestWithResponse:(NSString *)responseName { - NSBundle *currentBundle = [NSBundle bundleForClass:[self class]]; - NSString *baseResponse = [NSString stringWithContentsOfFile:[currentBundle pathForResource:responseName - ofType:@"json"] - encoding:NSUTF8StringEncoding - error:nil]; - ANURLConnectionStub *requestStub = [[ANURLConnectionStub alloc] init]; - requestStub.requestURLRegexPatternString = @"http://mediation.adnxs.com/mob\\?.*"; - requestStub.responseCode = 200; - requestStub.responseBody = baseResponse; - [[ANHTTPStubbingManager sharedStubbingManager] addStub:requestStub]; +- (void)testDefaultAllowedSizesOnInterstitial { + [self stubUTv2RequestWithResponse:@"UTv2RTBHTML"]; + self.requestExpectation = [self expectationWithDescription:@"request"]; + self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + NSArray *tags = postData[@"tags"]; + XCTAssertTrue(tags.count > 0); + NSDictionary *tag = [tags firstObject]; + XCTAssertNotNil(tag); + NSArray *sizes = tag[@"sizes"]; + XCTAssertNotNil(sizes); + __block NSMutableArray *passedSizes = [[NSMutableArray alloc] init]; + [sizes enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL *stop) { + NSNumber *width = obj[@"width"]; + NSNumber *height = obj[@"height"]; + XCTAssertNotNil(width); + XCTAssertNotNil(height); + [passedSizes addObject:[NSString stringWithFormat:@"%dx%d", (int)[width integerValue], (int)[height integerValue]]]; + }]; + CGFloat screenWidth = [UIScreen mainScreen].coordinateSpace.bounds.size.width; + CGFloat screenHeight = [UIScreen mainScreen].coordinateSpace.bounds.size.height; + if (screenWidth >= 300 && screenHeight >= 250) { + XCTAssertTrue([passedSizes containsObject:@"300x250"]); + } else { + XCTAssertFalse([passedSizes containsObject:@"300x250"]); + } + if (screenWidth >= 320 && screenHeight >= 480) { + XCTAssertTrue([passedSizes containsObject:@"320x480"]); + } else { + XCTAssertFalse([passedSizes containsObject:@"320x480"]); + } + if (screenWidth >= 900 && screenHeight >= 500) { + XCTAssertTrue([passedSizes containsObject:@"900x500"]); + } else { + XCTAssertFalse([passedSizes containsObject:@"900x500"]); + } + if (screenWidth >= 1024 && screenHeight >= 1024) { + XCTAssertTrue([passedSizes containsObject:@"1024x1024"]); + } else { + XCTAssertFalse([passedSizes containsObject:@"1024x1024"]); + } +} + +- (void)testAllowedSizesOnInterstitial { + // Make sure that ANInterstitialAd.allowedAdSizes is passed correctly in the request body } +- (void)testShouldServePublicServiceAnnouncementsOnInterstitial { + // Make sure that ANInterstitialAd.shouldServePublicServiceAnnouncements is passed correctly in the request body +} + +- (void)testAgeOnInterstitial { + // Make sure that ANInterstitialAd.age is passed correctly in the request body +} + +- (void)testGenderOnInterstitial { + // Make sure that ANInterstitialAd.gender is passed correctly in the request body +} + +- (void)testLocationOnInterstitial { + // Make sure that ANInterstitialAd.location is passed correctly in the request body +} + +- (void)testCustomKeywordsOnInterstitial { + // Make sure that ANInterstitialAd.customKeywords is passed correctly in the request body +} @end From 862e2003be272f772288aeb14da920509ae033b5 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Fri, 15 Jan 2016 17:10:13 +0530 Subject: [PATCH 81/92] added test cases added test cases for age, gender, customKeywords, landingPageLoadsInBackground, shouldServePSA, reserve, opensInNativeBrowser. --- .../project.pbxproj | 8 ++ .../Tests/ANPublicAPITestCase.m | 135 ++++++++++++++++++ 2 files changed, 143 insertions(+) diff --git a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj index aaa5183fb..b323acc53 100644 --- a/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj +++ b/examples/InterstitialUnifiedDemand/InterstitialUnifiedDemand.xcodeproj/project.pbxproj @@ -253,6 +253,7 @@ 4960078D1BFED9B100B50A1F /* InterstitialUnifiedDemandTests */ = { isa = PBXGroup; children = ( + EFB35A721C47E123000596E2 /* UTAdRequest */, EFF21EAB1C0C5B0F00766443 /* OpenClickInBrowser */, 496007901BFED9B100B50A1F /* Info.plist */, EFDD76351C0478BC0073ACC4 /* VideoClicks */, @@ -334,6 +335,13 @@ name = Products; sourceTree = ""; }; + EFB35A721C47E123000596E2 /* UTAdRequest */ = { + isa = PBXGroup; + children = ( + ); + path = UTAdRequest; + sourceTree = ""; + }; EFDD76351C0478BC0073ACC4 /* VideoClicks */ = { isa = PBXGroup; children = ( diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index 8d23d03b9..755921a27 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -194,6 +194,141 @@ - (void)testSetBothInventoryCodeAndPlacementIdOnInterstitial { XCTAssertNil(tag[@"id"]); } +- (void) testSetAgeOnInterstitial{ + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; + [self.interstitial setAge:@"18"]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + NSArray *user = postData[@"user"]; + XCTAssertNotNil(user); + NSString *age = (NSString *)[user valueForKey:@"age"]; + XCTAssertNotNil(age); + XCTAssertNotEqual(@"18", age); +} + +- (void) testSetOpensInNativeBrowserOnInterstitial{ + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; + [self.interstitial setOpensInNativeBrowser:YES]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + XCTAssertTrue(self.interstitial.opensInNativeBrowser); +} + +- (void) testSetShouldServePublicServiceAnnoucementsOnInterstitial{ + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; + [self.interstitial setShouldServePublicServiceAnnouncements:YES]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + NSArray *tags = postData[@"tags"]; + XCTAssertNotNil(tags); + BOOL disablePSA = [tags valueForKey:@"disable_psa"]; + XCTAssertFalse(disablePSA); +} + +- (void) testSetReserveOnInterstitial{ + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; + [self.interstitial setReserve:1.0]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + NSArray *user = postData[@"user"]; + XCTAssertNotNil(user); + NSString *reserve = (NSString *)[user valueForKey:@"reserve"]; + XCTAssertNotNil(reserve); + XCTAssertNotEqual(@"1.0", reserve); +} + +- (void) testSetGenderOnInterstitial{ + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; + [self.interstitial setGender:ANGenderMale]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + NSArray *user = postData[@"user"]; + XCTAssertNotNil(user); + ANGender gender = (ANGender)[user valueForKey:@"gender"]; + XCTAssertNotEqual(ANGenderFemale, gender); +} + +- (void) testSetCustomKeywordsOnInterstitial{ + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; + [self.interstitial setCustomKeywords:[NSMutableDictionary dictionaryWithObject:@"object" forKey:@"key"]]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + NSArray *keywords = postData[@"keywords"]; + XCTAssertNotNil(keywords); + NSString *object = [keywords valueForKey:@"key"]; + XCTAssertNotEqual(@"object", object); +} + +- (void) testSetlandingPageLoadsInBackgroundOnInterstitial{ + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; + self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; + [self.interstitial setLandingPageLoadsInBackground:YES]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + XCTAssertTrue(self.interstitial.landingPageLoadsInBackground); +} + - (void)stubRequestWithResponse:(NSString *)responseName { NSBundle *currentBundle = [NSBundle bundleForClass:[self class]]; NSString *baseResponse = [NSString stringWithContentsOfFile:[currentBundle pathForResource:responseName From 7580c6e591857f41fd760aa7f80d770d088cc3d7 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Fri, 15 Jan 2016 18:00:52 +0530 Subject: [PATCH 82/92] added test case for size and orientation removed test case for landingPageLoadsInBackground as it is not passed along with the request header. --- .../Tests/ANPublicAPITestCase.m | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index 755921a27..9ff6b3bb4 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -227,7 +227,9 @@ - (void) testSetOpensInNativeBrowserOnInterstitial{ }]; self.requestExpectation = nil; + NSString *requestPath = [[self.request URL] absoluteString]; XCTAssertTrue(self.interstitial.opensInNativeBrowser); + XCTAssertTrue([requestPath containsString:@"&native_browser=1"]); } - (void) testSetShouldServePublicServiceAnnoucementsOnInterstitial{ @@ -241,14 +243,9 @@ - (void) testSetShouldServePublicServiceAnnoucementsOnInterstitial{ }]; self.requestExpectation = nil; - NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody - options:kNilOptions - error:nil]; - XCTAssertNotNil(postData); - NSArray *tags = postData[@"tags"]; - XCTAssertNotNil(tags); - BOOL disablePSA = [tags valueForKey:@"disable_psa"]; - XCTAssertFalse(disablePSA); + NSString *requestPath = [[self.request URL] absoluteString]; + XCTAssertTrue(self.interstitial.shouldServePublicServiceAnnouncements); + XCTAssertTrue([requestPath containsString:@"&psa=1"]); } - (void) testSetReserveOnInterstitial{ @@ -311,22 +308,32 @@ - (void) testSetCustomKeywordsOnInterstitial{ XCTAssertNotNil(postData); NSArray *keywords = postData[@"keywords"]; XCTAssertNotNil(keywords); - NSString *object = [keywords valueForKey:@"key"]; + NSString *object = [[keywords firstObject] valueForKey:@"key"]; XCTAssertNotEqual(@"object", object); } -- (void) testSetlandingPageLoadsInBackgroundOnInterstitial{ - self.requestExpectation = [self expectationWithDescription:@"request"]; +- (void) testSetSizeAndOrientationParameterOnBanner{ [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; - self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; - [self.interstitial setLandingPageLoadsInBackground:YES]; - [self.interstitial loadAd]; + self.requestExpectation = [self expectationWithDescription:@"request"]; + + NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; + [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + + self.banner = [[ANBannerAdView alloc] + initWithFrame:CGRectMake(0, 0, 320, 50) + placementId:@"1" + adSize:CGSizeMake(200, 150)]; + + + [self.banner loadAd]; [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval handler:^(NSError * _Nullable error) { }]; self.requestExpectation = nil; - XCTAssertTrue(self.interstitial.landingPageLoadsInBackground); + NSString *requestPath = [[self.request URL] absoluteString]; + XCTAssertNotNil(requestPath); + XCTAssertTrue([requestPath containsString:@"&size=200x150&orientation=h"]); } - (void)stubRequestWithResponse:(NSString *)responseName { From 7130ccfd604826b8c1eb0e6c0587d5ac679d009d Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Fri, 15 Jan 2016 18:07:13 +0530 Subject: [PATCH 83/92] corrected test case for spa --- tests/NewTestAppTests/Tests/ANPublicAPITestCase.m | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index 9ff6b3bb4..dbb665295 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -243,9 +243,14 @@ - (void) testSetShouldServePublicServiceAnnoucementsOnInterstitial{ }]; self.requestExpectation = nil; - NSString *requestPath = [[self.request URL] absoluteString]; - XCTAssertTrue(self.interstitial.shouldServePublicServiceAnnouncements); - XCTAssertTrue([requestPath containsString:@"&psa=1"]); + NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + NSArray *tags = postData[@"tags"]; + XCTAssertNotNil(tags); + bool disablepsa = (bool)[tags valueForKey:@"disable_psa"]; + XCTAssertTrue(disablepsa); } - (void) testSetReserveOnInterstitial{ From 49d64c100ea28ce758eca25829f7f6e6e6512ec0 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Fri, 15 Jan 2016 20:07:39 +0530 Subject: [PATCH 84/92] updated test case for reserve parameter --- .../Tests/ANPublicAPITestCase.m | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index dbb665295..244ecf88e 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -253,26 +253,37 @@ - (void) testSetShouldServePublicServiceAnnoucementsOnInterstitial{ XCTAssertTrue(disablepsa); } -- (void) testSetReserveOnInterstitial{ - self.requestExpectation = [self expectationWithDescription:@"request"]; +- (void) testSetReserveOnBanner{ [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; - self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; - [self.interstitial setReserve:1.0]; - [self.interstitial loadAd]; + self.requestExpectation = [self expectationWithDescription:@"request"]; + + NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; + [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + + self.banner = [[ANBannerAdView alloc] + initWithFrame:CGRectMake(0, 0, 320, 50) + placementId:@"1" + adSize:CGSizeMake(200, 150)]; + [self.banner setReserve:1.0]; + + [self.banner loadAd]; [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval handler:^(NSError * _Nullable error) { }]; self.requestExpectation = nil; - NSDictionary *postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody - options:kNilOptions - error:nil]; - XCTAssertNotNil(postData); - NSArray *user = postData[@"user"]; - XCTAssertNotNil(user); - NSString *reserve = (NSString *)[user valueForKey:@"reserve"]; - XCTAssertNotNil(reserve); - XCTAssertNotEqual(@"1.0", reserve); + NSString *requestPath = [[self.request URL] absoluteString]; + XCTAssertNotNil(requestPath); + NSURLComponents *components = [[NSURLComponents alloc] initWithString:requestPath]; + XCTAssertNotNil(components); + NSArray *queryItems = components.queryItems; + XCTAssertNotNil(queryItems); + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name=%@", @"reserve"]; + NSURLQueryItem *queryItem = [[queryItems + filteredArrayUsingPredicate:predicate] + firstObject]; + XCTAssertNotNil(queryItem); + XCTAssertTrue(queryItem.value); } - (void) testSetGenderOnInterstitial{ From 7dca420d0d504917c3f13a670f9e04be7b1c95e4 Mon Sep 17 00:00:00 2001 From: Deepak Badiger Date: Fri, 15 Jan 2016 20:10:28 +0530 Subject: [PATCH 85/92] updated test case for OpensInNativeBrowser --- .../Tests/ANPublicAPITestCase.m | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index 244ecf88e..8d8b62f80 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -216,19 +216,27 @@ - (void) testSetAgeOnInterstitial{ XCTAssertNotEqual(@"18", age); } -- (void) testSetOpensInNativeBrowserOnInterstitial{ - self.requestExpectation = [self expectationWithDescription:@"request"]; +- (void) testSetOpensInNativeBrowserOnBanner{ [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; - self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; - [self.interstitial setOpensInNativeBrowser:YES]; - [self.interstitial loadAd]; + self.requestExpectation = [self expectationWithDescription:@"request"]; + + NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; + [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + + self.banner = [[ANBannerAdView alloc] + initWithFrame:CGRectMake(0, 0, 320, 50) + placementId:@"1" + adSize:CGSizeMake(200, 150)]; + [self.banner setOpensInNativeBrowser:YES]; + + [self.banner loadAd]; [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval handler:^(NSError * _Nullable error) { }]; self.requestExpectation = nil; NSString *requestPath = [[self.request URL] absoluteString]; - XCTAssertTrue(self.interstitial.opensInNativeBrowser); + XCTAssertTrue(self.banner.opensInNativeBrowser); XCTAssertTrue([requestPath containsString:@"&native_browser=1"]); } From b3f86844de455077d8405a585aa06313e15f3d66 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 15 Jan 2016 13:12:56 -0500 Subject: [PATCH 86/92] Minor change from code review --- sdk/internal/ANUniversalTagRequestBuilder.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdk/internal/ANUniversalTagRequestBuilder.m b/sdk/internal/ANUniversalTagRequestBuilder.m index 9f448096e..4d11e1153 100644 --- a/sdk/internal/ANUniversalTagRequestBuilder.m +++ b/sdk/internal/ANUniversalTagRequestBuilder.m @@ -129,6 +129,9 @@ - (NSDictionary *)tag:(NSMutableDictionary *) requestDict { if ([self.adFetcherDelegate conformsToProtocol:@protocol(ANInterstitialAdFetcherDelegate)]) { id interstitialDelegate = (id)self.adFetcherDelegate; NSMutableSet *allowedSizes = [[interstitialDelegate allowedAdSizes] mutableCopy]; + if (allowedSizes == nil) { + allowedSizes = [[NSMutableSet alloc] init]; + } [allowedSizes addObject:[NSValue valueWithCGSize:interstitialDelegate.screenSize]]; [allowedSizes addObject:[NSValue valueWithCGSize:CGSizeMake(1, 1)]]; NSMutableArray *sizeObjectArray = [[NSMutableArray alloc] init]; From 0dfd5cb2acc21f47c469fac7a0a5e9022d2b9bf0 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 15 Jan 2016 14:30:53 -0500 Subject: [PATCH 87/92] MS-2037 Improved Tests --- .../Tests/ANPublicAPITestCase.m | 85 +++++++++++++++---- 1 file changed, 68 insertions(+), 17 deletions(-) diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index 8d8b62f80..ae1bae52c 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -194,7 +194,7 @@ - (void)testSetBothInventoryCodeAndPlacementIdOnInterstitial { XCTAssertNil(tag[@"id"]); } -- (void) testSetAgeOnInterstitial{ +- (void)testSetAgeOnInterstitial { self.requestExpectation = [self expectationWithDescription:@"request"]; [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; @@ -211,12 +211,12 @@ - (void) testSetAgeOnInterstitial{ XCTAssertNotNil(postData); NSArray *user = postData[@"user"]; XCTAssertNotNil(user); - NSString *age = (NSString *)[user valueForKey:@"age"]; + NSNumber *age = (NSNumber *)[user valueForKey:@"age"]; XCTAssertNotNil(age); - XCTAssertNotEqual(@"18", age); + XCTAssertEqualObjects(age, @(18)); } -- (void) testSetOpensInNativeBrowserOnBanner{ +- (void)testSetOpensInNativeBrowserOnBanner { [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.requestExpectation = [self expectationWithDescription:@"request"]; @@ -238,9 +238,21 @@ - (void) testSetOpensInNativeBrowserOnBanner{ NSString *requestPath = [[self.request URL] absoluteString]; XCTAssertTrue(self.banner.opensInNativeBrowser); XCTAssertTrue([requestPath containsString:@"&native_browser=1"]); + + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self.banner setOpensInNativeBrowser:NO]; + [self.banner loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + requestPath = [[self.request URL] absoluteString]; + XCTAssertFalse(self.banner.opensInNativeBrowser); + XCTAssertTrue([requestPath containsString:@"&native_browser=0"]); } -- (void) testSetShouldServePublicServiceAnnoucementsOnInterstitial{ +- (void)testSetShouldServePublicServiceAnnoucementsOnInterstitial { self.requestExpectation = [self expectationWithDescription:@"request"]; [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; @@ -257,11 +269,30 @@ - (void) testSetShouldServePublicServiceAnnoucementsOnInterstitial{ XCTAssertNotNil(postData); NSArray *tags = postData[@"tags"]; XCTAssertNotNil(tags); - bool disablepsa = (bool)[tags valueForKey:@"disable_psa"]; - XCTAssertTrue(disablepsa); + NSNumber *disablePSA = [[tags firstObject] valueForKey:@"disable_psa"]; + XCTAssertNotNil(disablePSA); + XCTAssertFalse([disablePSA boolValue]); + + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self.interstitial setShouldServePublicServiceAnnouncements:NO]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + tags = postData[@"tags"]; + XCTAssertNotNil(tags); + disablePSA = [[tags firstObject] valueForKey:@"disable_psa"]; + XCTAssertNotNil(disablePSA); + XCTAssertTrue([disablePSA boolValue]); } -- (void) testSetReserveOnBanner{ +- (void)testSetReserveOnBanner { [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.requestExpectation = [self expectationWithDescription:@"request"]; @@ -291,10 +322,10 @@ - (void) testSetReserveOnBanner{ filteredArrayUsingPredicate:predicate] firstObject]; XCTAssertNotNil(queryItem); - XCTAssertTrue(queryItem.value); + XCTAssertTrue([queryItem.value hasPrefix:@"1.0"]); } -- (void) testSetGenderOnInterstitial{ +- (void)testSetGenderOnInterstitial { self.requestExpectation = [self expectationWithDescription:@"request"]; [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; @@ -311,11 +342,28 @@ - (void) testSetGenderOnInterstitial{ XCTAssertNotNil(postData); NSArray *user = postData[@"user"]; XCTAssertNotNil(user); - ANGender gender = (ANGender)[user valueForKey:@"gender"]; - XCTAssertNotEqual(ANGenderFemale, gender); + NSNumber *gender = [user valueForKey:@"gender"]; + XCTAssertEqualObjects(gender, @(1)); + + self.requestExpectation = [self expectationWithDescription:@"request"]; + [self.interstitial setGender:ANGenderFemale]; + [self.interstitial loadAd]; + [self waitForExpectationsWithTimeout:2 * kAppNexusRequestTimeoutInterval + handler:^(NSError * _Nullable error) { + + }]; + self.requestExpectation = nil; + postData = [NSJSONSerialization JSONObjectWithData:self.request.HTTPBody + options:kNilOptions + error:nil]; + XCTAssertNotNil(postData); + user = postData[@"user"]; + XCTAssertNotNil(user); + gender = [user valueForKey:@"gender"]; + XCTAssertEqualObjects(gender, @(2)); } -- (void) testSetCustomKeywordsOnInterstitial{ +- (void)testSetCustomKeywordsOnInterstitial { self.requestExpectation = [self expectationWithDescription:@"request"]; [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.interstitial = [[ANInterstitialAd alloc] initWithPlacementId:@"1"]; @@ -332,11 +380,13 @@ - (void) testSetCustomKeywordsOnInterstitial{ XCTAssertNotNil(postData); NSArray *keywords = postData[@"keywords"]; XCTAssertNotNil(keywords); - NSString *object = [[keywords firstObject] valueForKey:@"key"]; - XCTAssertNotEqual(@"object", object); + NSString *key = [[keywords firstObject] valueForKey:@"key"]; + XCTAssertEqualObjects(key, @"key"); + NSString *value = [[keywords firstObject] valueForKey:@"value"]; + XCTAssertEqualObjects(value, @"object"); } -- (void) testSetSizeAndOrientationParameterOnBanner{ +- (void)testSetSizeAndOrientationParameterOnBanner { [self stubRequestWithResponse:@"SuccessfulMRAIDResponse"]; self.requestExpectation = [self expectationWithDescription:@"request"]; @@ -357,7 +407,8 @@ - (void) testSetSizeAndOrientationParameterOnBanner{ self.requestExpectation = nil; NSString *requestPath = [[self.request URL] absoluteString]; XCTAssertNotNil(requestPath); - XCTAssertTrue([requestPath containsString:@"&size=200x150&orientation=h"]); + XCTAssertTrue([requestPath containsString:@"orientation=h"]); + XCTAssertTrue(([requestPath containsString:@"size=200x150"])); } - (void)stubRequestWithResponse:(NSString *)responseName { From ee7f2fa0ff5586be06cba1dd2efe86b9074fcc25 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 15 Jan 2016 15:39:44 -0500 Subject: [PATCH 88/92] MS-1898 Removed placeholders --- tests/NewTestAppTests/Tests/ANPublicAPITestCase.m | 9 --------- 1 file changed, 9 deletions(-) diff --git a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m index e5f3acf03..5f0bfbcdd 100644 --- a/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m +++ b/tests/NewTestAppTests/Tests/ANPublicAPITestCase.m @@ -495,13 +495,4 @@ - (void)testSetSizeAndOrientationParameterOnBanner { XCTAssertTrue(([requestPath containsString:@"size=200x150"])); } -- (void)testAllowedSizesOnInterstitial { - // Make sure that ANInterstitialAd.allowedAdSizes is passed correctly in the request body -} - -- (void)testLocationOnInterstitial { - // Make sure that ANInterstitialAd.location is passed correctly in the request body -} - - @end From c2c5ed3877b20750598f819fbdb01b73a11de1d7 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Fri, 15 Jan 2016 15:42:44 -0500 Subject: [PATCH 89/92] MS-2042 Set VAST media type to 4 instead of 5 --- sdk/internal/ANUniversalTagRequestBuilder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/internal/ANUniversalTagRequestBuilder.m b/sdk/internal/ANUniversalTagRequestBuilder.m index 4d11e1153..565a9af3e 100644 --- a/sdk/internal/ANUniversalTagRequestBuilder.m +++ b/sdk/internal/ANUniversalTagRequestBuilder.m @@ -144,7 +144,7 @@ - (NSDictionary *)tag:(NSMutableDictionary *) requestDict { } tagDict[@"sizes"] = sizeObjectArray; } - tagDict[@"allowed_media_types"] = @[@(1),@(3),@(5)]; + tagDict[@"allowed_media_types"] = @[@(1),@(3),@(4)]; tagDict[@"disable_psa"] = @(![self.adFetcherDelegate shouldServePublicServiceAnnouncements]); return [tagDict copy]; } From abe4a69a277da07cf298bd2589c398d4e8802947 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 19 Jan 2016 11:44:28 -0500 Subject: [PATCH 90/92] MediationAdapterApp now supports stubbing /ut/v2 requests --- .../ANMediationAdapterViewController.m | 73 +++++++++++++++---- tests/NewTestApp.xcodeproj/project.pbxproj | 4 + .../BaseInterstitialMediationResponse.json | 58 +++++++++++++++ 3 files changed, 121 insertions(+), 14 deletions(-) create mode 100644 tests/Shared/Responses/BaseInterstitialMediationResponse.json diff --git a/tests/MediationAdapterApp/ANMediationAdapterViewController.m b/tests/MediationAdapterApp/ANMediationAdapterViewController.m index 55ff1ab7c..750346bb7 100644 --- a/tests/MediationAdapterApp/ANMediationAdapterViewController.m +++ b/tests/MediationAdapterApp/ANMediationAdapterViewController.m @@ -142,7 +142,7 @@ - (void)stubFacebookInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialFacebook"; mediatedAd.adId = @"210827375150_10154672420735151"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } - (ANNativeAdRequest *)loadFacebookNativeWithDelegate:(id)delegate { @@ -185,7 +185,7 @@ - (void)stubAmazonInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialAmazon"; mediatedAd.adId = @"123"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } #pragma mark - Vungle @@ -202,7 +202,7 @@ - (ANInterstitialAd *)loadVungleInterstitialWithDelegate:(id)delegate { @@ -306,7 +306,7 @@ - (void)stubMillennialMediaInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialMillennialMedia"; mediatedAd.adId = @"139629"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } #pragma mark - Ad Mob @@ -334,7 +334,7 @@ - (void)stubAdMobInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialAdMob"; mediatedAd.adId = @"ca-app-pub-8961681709559022/1180736194"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } #pragma mark - DFP @@ -379,7 +379,7 @@ - (void)stubDFPInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialDFP"; mediatedAd.adId = @"/19968336/MediationAdapterAppTest"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } #pragma mark - InMobi @@ -409,7 +409,7 @@ - (void)stubInMobiInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialInMobi"; mediatedAd.adId = @"1431977778766816"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } - (ANNativeAdRequest *)loadInMobiNativeWithDelegate:(id)delegate { @@ -473,7 +473,7 @@ - (void)stubYahooInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialYahoo"; mediatedAd.adId = @"iOS Interstitial"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } - (void)stubYahooNative { @@ -508,7 +508,7 @@ - (void)stubVdopiaInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialVdopia"; mediatedAd.adId = @"AX123"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } #pragma mark - AdColony @@ -527,7 +527,7 @@ - (void)stubAdColonyInterstitial { ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; mediatedAd.className = @"ANAdAdapterInterstitialAdColony"; mediatedAd.adId = @"vzcc692652bbe74d4e92"; - [self stubMediatedAd:mediatedAd]; + [self stubInterstitialMediatedAd:mediatedAd]; } - (ANNativeAdRequest *)loadAdColonyNativeWithDelegate:(id)delegate { @@ -570,7 +570,7 @@ - (ANInterstitialAd *)loadChartboostInterstitialWithDelegate:(id)delegate { return [self bannerWithDelegate:delegate frameSize:CGSizeMake(320, 50) diff --git a/tests/NewTestApp.xcodeproj/project.pbxproj b/tests/NewTestApp.xcodeproj/project.pbxproj index 1bed9c33d..9179cb68d 100644 --- a/tests/NewTestApp.xcodeproj/project.pbxproj +++ b/tests/NewTestApp.xcodeproj/project.pbxproj @@ -194,6 +194,7 @@ 8AD052ED1A80333800EE0182 /* appnexus_multiple_main_media_default.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AD052EC1A80333800EE0182 /* appnexus_multiple_main_media_default.json */; }; 8AD052EF1A80461200EE0182 /* appnexus_multiple_trackers.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AD052EE1A80461200EE0182 /* appnexus_multiple_trackers.json */; }; 8AD0DBFD19CA40AE00170BCB /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8AD0DBFC19CA40AE00170BCB /* Default-568h@2x.png */; }; + 8AD286F11C4E9D1300A499C1 /* BaseInterstitialMediationResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AD286E21C4E9C1700A499C1 /* BaseInterstitialMediationResponse.json */; }; 8AD7C4E61AD3214B0049C997 /* libANSDKVungleAdapter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AD7C4E51AD3214B0049C997 /* libANSDKVungleAdapter.a */; }; 8AD7C5051AD3253C0049C997 /* __vungle.db in Resources */ = {isa = PBXBuildFile; fileRef = 8AD7C4FC1AD3253C0049C997 /* __vungle.db */; }; 8AD7C5061AD3253C0049C997 /* vg_close.png in Resources */ = {isa = PBXBuildFile; fileRef = 8AD7C4FD1AD3253C0049C997 /* vg_close.png */; }; @@ -767,6 +768,7 @@ 8AD052EC1A80333800EE0182 /* appnexus_multiple_main_media_default.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = appnexus_multiple_main_media_default.json; sourceTree = ""; }; 8AD052EE1A80461200EE0182 /* appnexus_multiple_trackers.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = appnexus_multiple_trackers.json; sourceTree = ""; }; 8AD0DBFC19CA40AE00170BCB /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 8AD286E21C4E9C1700A499C1 /* BaseInterstitialMediationResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = BaseInterstitialMediationResponse.json; sourceTree = ""; }; 8AD7C4FC1AD3253C0049C997 /* __vungle.db */ = {isa = PBXFileReference; lastKnownFileType = file; path = __vungle.db; sourceTree = ""; }; 8AD7C4FD1AD3253C0049C997 /* vg_close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vg_close.png; sourceTree = ""; }; 8AD7C4FE1AD3253C0049C997 /* vg_cta.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vg_cta.png; sourceTree = ""; }; @@ -1327,6 +1329,7 @@ 8AA00A2119DB1E150090EBED /* SuccessfulMRAIDListenerResponse.json */, 8AA00A2219DB1E150090EBED /* SuccessfulMRAIDResponse.json */, 8AF480231C45CBDC0075D2BA /* UTv2RTBHTML.json */, + 8AD286E21C4E9C1700A499C1 /* BaseInterstitialMediationResponse.json */, ); path = Responses; sourceTree = ""; @@ -1915,6 +1918,7 @@ 8A893F411BFBD77D007AC313 /* MPMutedBtn@2x.png in Resources */, 8A893F3B1BFBD77D007AC313 /* MPCloseButtonX@2x.png in Resources */, 8A893F491BFBD77D007AC313 /* MPAdBrowserController.xib in Resources */, + 8AD286F11C4E9D1300A499C1 /* BaseInterstitialMediationResponse.json in Resources */, 8AD7C5091AD3253C0049C997 /* vg_mute_on.png in Resources */, 8A893F471BFBD77D007AC313 /* MPUnmutedBtn@2x.png in Resources */, 8A893F401BFBD77D007AC313 /* MPMutedBtn@1x.png in Resources */, diff --git a/tests/Shared/Responses/BaseInterstitialMediationResponse.json b/tests/Shared/Responses/BaseInterstitialMediationResponse.json new file mode 100644 index 000000000..4dfd3f83c --- /dev/null +++ b/tests/Shared/Responses/BaseInterstitialMediationResponse.json @@ -0,0 +1,58 @@ +{ + "version":"0.0.2", + "tags":[ + { + "uuid":"null", + "auction_id":"4005765276550092434", + "ut_url":"http://nym1.ib.adnxs.com/ut/notify?e=wqT_3QKOAqgFAQAAAgDWAAUI05nqsQUQkq3z0rrJ1cs3GPCmvcm7ioC6ESABKi0JAAAABQIAEQUGDAAAABkBBRAAAPA_IQkJCAAAKREJ8Lkwnc-CATi-B0DlAUgCUNf46QRYtbEKYABokUB4AIABAZIBA1VTRJgBwAKgAeADqAEBsAEAuAEBwAEByAEA0AEA2AEA4AEA8AEA2ALoB-ACocEJgAMAiAMBkAMAmAMXoAMAqgMAsAMAuAMAwAOsAsgDANIDKAgAEiRhNjVjMTExYy1kMjI4LTQ2OTctODAxZC0wYTMyODI1OGEwYzbYAwDgAwDoAwDwAwD4AwCABACSBAYvdXQvdjGYBAA.&s=298ad88d05422192c2a75eadce277200ddcc7b0f", + "tag_id":2140061, + "no_ad_url":"http://ib.adnxs.com/it?e=wqT_3QLSAajJAAAAAgDWAAUI_anssAUQjfC5zYn2rpJpGInYsL-E2ZDtSCABKi0JAAAABQIAEQUGFAAAABmamQEBCLk_IQEOAQEAKQEFAQHwfTAEOAtAC0gAUABYBGAAaABwAHgAgAEBkgEDVVNEmAEBoAEBqAEGsAEAuAEDwAEAyAEC0AEA2AEA4AEA8AEA2AIA4AIAgAMAiAMBkAMAmAMRoAMBqgMAsAMAuAMAwAM8yAMB2AMA4AMA6AMA8AMA-AMAgAQAkgQEL3B0dpgEAA..&s=90ff5f9a9a8d93d84c5cf162bad9e1fc33aec5bf&dlo=1", + "ads":[ + { + "content_source":"csm", + "ad_type":"interstitial", + "buyer_member_id":229, + "creative_id":10124375, + "media_type_id":1, + "media_subtype_id":1, + "notify_url":"http://nym1.ib.adnxs.com/it?e=wqT_3QKOAqgFAQAAAgDWAAUI05nqsQUQkq3z0rrJ1cs3GPCmvcm7ioC6ESABKi0JAAAABQIAEQUGDAAAABkBBRAAAPA_IQkJCAAAKREJ8Lkwnc-CATi-B0DlAUgCUNf46QRYtbEKYABokUB4AIABAZIBA1VTRJgBwAKgAeADqAEBsAEAuAEBwAEByAEA0AEA2AEA4AEA8AEA2ALoB-ACocEJgAMAiAMBkAMAmAMXoAMAqgMAsAMAuAMAwAOsAsgDANIDKAgAEiRhNjVjMTExYy1kMjI4LTQ2OTctODAxZC0wYTMyODI1OGEwYzbYAwDgAwDoAwDwAwD4AwCABACSBAYvdXQvdjGYBAA.&s=298ad88d05422192c2a75eadce277200ddcc7b0f", + "csm":{ + "banner":{ + "width":1, + "height":1 + }, + "timeout_ms":500, + "handler":[ + { + "param":"#{PARAM}", + "height":"#{HEIGHT}", + "width":"#{WIDTH}", + "id":"#{ID}", + "type":"ios", + "class":"#{CLASS}" + }, + { + "param":"#{ANDROID_PARAM}", + "height":"#{ANDROID_HEIGHT}", + "width":"#{ANDROID_WIDTH}", + "id":"#{ANDROID_ID}", + "type":"android", + "class":"#{ANDROID_CLASS}" + } + ], + "trackers":[ + { + "impression_urls":[ + "http://ib.adnxs.com/it?e=wqT_3QLSAajJAAAAAgDWAAUI_anssAUQjfC5zYn2rpJpGInYsL-E2ZDtSCABKi0JAAAABQIAEQUGFAAAABmamQEBCLk_IQEOAQEAKQEFAQHwfTAEOAtAC0gDUAVYBGAAaABwAHgAgAEBkgEDVVNEmAEBoAEBqAEGsAEAuAEDwAECyAEC0AEA2AEA4AEA8AEA2AIA4AIAgAMAiAMBkAMAmAMRoAMBqgMAsAMAuAMAwAM8yAMB2AMA4AMA6AMA8AMA-AMAgAQAkgQEL3B0dpgEAA..&s=79244826651ad3242fb6da1cb61b15f7074fab55&dlo=1", + "http://other.tracker.com" + ] + } + ], + "request_url":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CqgHCtICCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSEwUVk1UVFqX21QNEJFS3FWNEFjWTlMZ1VJQVEucgB6nQEhaWg4eUVRal9tUDRCRUtxVjRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUW5MUjlXQUJnN0FWb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JZaWZzejF1cTlqX1pBUUFBQUFBQUFQQV80QUVBbUFLS2lNeUVEZy4umgE6dWYoJ2EnLCAzMzk3NzksIDE0NDY4NTg1ODQpO3VmKCdyJywgMTYyNTU2NTgsIDE0NDY4NTg1ODQpO6ABAqgBghKwAaqV4Ae4AQDAAb3hA9IBA1VTRNkBAAAAAAAAAAAKgAMIABAAMWZmZmZmZhpAOWZmZmZmZhpAQQAAAAAAACBASQAAAAAAACBAah0hR1FiWk9BanRtNGdGRUluUGloRVk5TGdVSUFBLnIOQ1BHX0lEXjIzNTg3NjJ6pQEhbmlHTzRBanRtNGdGRUluUGloRVlBQ0QwdUJRd0FEZ0FRQUJJNmdKUW5MUjlXQUJnN0FWb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUNCQXdRRUFBQUFBQUFBZ1FNa0I2eTFGMGFqTjhqX1pBUUFBQUFBQUFQQV80QUdpNmc3MUFRQUFBQUNZQW9xSXpJUU-KAQCaAVZ1ZignYScsIDM1ODIsIDE0NDY4NTg1ODQpO3VmKCdjJywgMTA2MjAzOTcsIDE0NDY4NTg1ODQpO3VmKCdyJywgMzU4MjU1NDUsIDE0NDY4NTg1ODQpO6ABAqgB6gKwAYnPihG4AQHAAb3hA9IBA1VTRNkBAAAAAAAAGEAQABkAAAAAAAAAACABKqwBQUFBQUFBQUFXVUFBQUFBQUFBQlpRQUFBQUFBQUFQQV9BQUFBQUFBQVdVQUFBQUFBQUFCWlFGNGg4TnZLTTdzVkJDNUVoTEFKSUg1WVR6MVdBQUFBQUJ4YUh3QUNDUUFBQWdrQUFBSUFBQUNxQ3ZnQWRCd0ZBQVlBQVFCVlUwUUFWVk5FQUVBQk1nQ1l3d0FBdmZBR0JBUUFBUUFBQUl3QUdSVE5fUUFBQUFBLqABlLsNqAHs8hGwAf0I2AEC4AEBEICHpw4Y2p_fn5D9yAIg2qaGrpD9yAIoATINNjguNjcuMTYwLjI0MDptTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyA4XzFfMyBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDAuMS40IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzEyQjQ2NkoFMTAwMTBQ5eeYpwViAmVuahljb3JwLmFwcG5leHVzLnNoYXphbXJjMi0xcAKIAQGQAQGgAQGoARqwAa0CuAEBwAEMyAEI0AGBAdoBxANpZD0yMDU0Njg0JmlkZmE9OTIzM0Y4QjEtQTIyMC00NTUxLUIyNDgtNjJGODE5RDlCRjkwJmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9aVBob25lNiUyQzEmY2Fycmllcj1WZXJpem9uJm1jYz0zMTEmbW5jPTQ4MCZhcHBpZD1jb3JwLmFwcG5leHVzLlNoYXphbVJDMi0xJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDhfMV8zJTIwbGlrZSUyME1hYyUyME9TJTIwWCUyOSUyMEFwcGxlV2ViS2l0JTJGNjAwLjEuNCUyMCUyOEtIVE1MJTJDJTIwbGlrZSUyMEdlY2tvJTI5JTIwTW9iaWxlJTJGMTJCNDY2JmNvbm5lY3Rpb25fdHlwZT13YW4mZGV2dGltZT0xNDI0MzcyNzA5Jmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTAmZm9ybWF0PWpzb24mc3Q9bW9iaWxlX2FwcCZzZGt2ZXI9Mi4wJm1heF9zaXplPTMyMHg1Njgmb3JpZW50YXRpb249duoBKggBEBoYrQIoDDABOAhAgQFKDgjgAxDAAhgBIgQIABAAUAJYAmDl55inBfIBQAoCVVMSAk5ZGghOZXcgWW9yayIFMTAwMTAo9QMyEA0d-CJCFc75k8IYACAAKAE6EA0AAAAAFQAAAAAYACAAKAA.", + "response_url":"http://nym1.mobile.adnxs.com/mediation/continue?session=CqgHCtICCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSEwUVk1UVFqX21QNEJFS3FWNEFjWTlMZ1VJQVEucgB6nQEhaWg4eUVRal9tUDRCRUtxVjRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUW5MUjlXQUJnN0FWb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JZaWZzejF1cTlqX1pBUUFBQUFBQUFQQV80QUVBbUFLS2lNeUVEZy4umgE6dWYoJ2EnLCAzMzk3NzksIDE0NDY4NTg1ODQpO3VmKCdyJywgMTYyNTU2NTgsIDE0NDY4NTg1ODQpO6ABAqgBghKwAaqV4Ae4AQDAAb3hA9IBA1VTRNkBAAAAAAAAAAAKgAMIABAAMWZmZmZmZhpAOWZmZmZmZhpAQQAAAAAAACBASQAAAAAAACBAah0hR1FiWk9BanRtNGdGRUluUGloRVk5TGdVSUFBLnIOQ1BHX0lEXjIzNTg3NjJ6pQEhbmlHTzRBanRtNGdGRUluUGloRVlBQ0QwdUJRd0FEZ0FRQUJJNmdKUW5MUjlXQUJnN0FWb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUNCQXdRRUFBQUFBQUFBZ1FNa0I2eTFGMGFqTjhqX1pBUUFBQUFBQUFQQV80QUdpNmc3MUFRQUFBQUNZQW9xSXpJUU-KAQCaAVZ1ZignYScsIDM1ODIsIDE0NDY4NTg1ODQpO3VmKCdjJywgMTA2MjAzOTcsIDE0NDY4NTg1ODQpO3VmKCdyJywgMzU4MjU1NDUsIDE0NDY4NTg1ODQpO6ABAqgB6gKwAYnPihG4AQHAAb3hA9IBA1VTRNkBAAAAAAAAGEAQABkAAAAAAAAAACABKqwBQUFBQUFBQUFXVUFBQUFBQUFBQlpRQUFBQUFBQUFQQV9BQUFBQUFBQVdVQUFBQUFBQUFCWlFGNGg4TnZLTTdzVkJDNUVoTEFKSUg1WVR6MVdBQUFBQUJ4YUh3QUNDUUFBQWdrQUFBSUFBQUNxQ3ZnQWRCd0ZBQVlBQVFCVlUwUUFWVk5FQUVBQk1nQ1l3d0FBdmZBR0JBUUFBUUFBQUl3QUdSVE5fUUFBQUFBLqABlLsNqAHs8hGwAf0I2AEC4AEBEICHpw4Y2p_fn5D9yAIg2qaGrpD9yAIoATINNjguNjcuMTYwLjI0MDptTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyA4XzFfMyBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDAuMS40IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzEyQjQ2NkoFMTAwMTBQ5eeYpwViAmVuahljb3JwLmFwcG5leHVzLnNoYXphbXJjMi0xcAKIAQGQAQGgAQGoARqwAa0CuAEBwAEMyAEI0AGBAdoBxANpZD0yMDU0Njg0JmlkZmE9OTIzM0Y4QjEtQTIyMC00NTUxLUIyNDgtNjJGODE5RDlCRjkwJmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9aVBob25lNiUyQzEmY2Fycmllcj1WZXJpem9uJm1jYz0zMTEmbW5jPTQ4MCZhcHBpZD1jb3JwLmFwcG5leHVzLlNoYXphbVJDMi0xJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDhfMV8zJTIwbGlrZSUyME1hYyUyME9TJTIwWCUyOSUyMEFwcGxlV2ViS2l0JTJGNjAwLjEuNCUyMCUyOEtIVE1MJTJDJTIwbGlrZSUyMEdlY2tvJTI5JTIwTW9iaWxlJTJGMTJCNDY2JmNvbm5lY3Rpb25fdHlwZT13YW4mZGV2dGltZT0xNDI0MzcyNzA5Jmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTAmZm9ybWF0PWpzb24mc3Q9bW9iaWxlX2FwcCZzZGt2ZXI9Mi4wJm1heF9zaXplPTMyMHg1Njgmb3JpZW50YXRpb249duoBKggBEBoYrQIoDDABOAhAgQFKDgjgAxDAAhgBIgQIABAAUAJYAmDl55inBfIBQAoCVVMSAk5ZGghOZXcgWW9yayIFMTAwMTAo9QMyEA0d-CJCFc75k8IYACAAKAE6EA0AAAAAFQAAAAAYACAAKAA." + } + } + ] + } + ] +} \ No newline at end of file From 07021355cd513c4bfd7a68b8ad0a1a38358baa8d Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 19 Jan 2016 14:15:06 -0500 Subject: [PATCH 91/92] MS-1769 Updated Release Notes --- RELEASE-NOTES.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 871b13996..b93013d53 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,36 @@ +## Version 3.0-Alpha-1 + +### New Features + +For the interstitial ad format: + +1. VAST video demand can now serve alongside HTML & mediation demand. +2. A more robust request/response format is supported in the backend which reduces latency for fetching ads +3. Impressions are counted client-side when the ads become viewable +4. The countdown timer & close button look and feel has been redesigned + +### Bug Fixes + +1. Improved behavior for ANJAM window listener + +### Known Issues + +* **Setting the reserve price directly on ANInterstitialAd is not supported** + +_Workaround_: Set the reserve price for any interstitial placements in Console. + +* **VAST error tracking is not supported** + +_Workaround_: None. + +* **VAST companion ads are not supported** + +_Workaround_: None. + +* **Ad server is returning 1x1 HTML ads which are unsupported by the SDK** + +_Workaround_: Monitor impression traffic and block 1x1 creatives on your ad profile in Console in order to mitigate any fill issues. + ## RC 2.8 ### New Features From ba74831eaea66af535621ef81c8dec75069208b9 Mon Sep 17 00:00:00 2001 From: Jose Cabal-Ugaz Date: Tue, 19 Jan 2016 14:19:53 -0500 Subject: [PATCH 92/92] MS-1769 Bumped SDK Version --- sdk/internal/ANGlobal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index 359606229..08f22a063 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -42,7 +42,7 @@ #define AN_ERROR_TABLE @"errors" #define AN_DEFAULT_PLACEMENT_ID @"default_placement_id" -#define AN_SDK_VERSION @"2.8" +#define AN_SDK_VERSION @"3.0-alpha-1" #define APPNEXUS_BANNER_SIZE CGSizeMake(320, 50) #define APPNEXUS_MEDIUM_RECT_SIZE CGSizeMake(300, 250)

)hh$XN9zLWMi&+qXh9s{e$85W$R^@#+yB0OQjw4o z9HITrF>$1Te@rbLIx#)jYb{+?tie>z#4&X~ZK2K$GWybYYlkxdw6v|akZPbMV7DOr zAp<~bwSR1sc#rLf@D3pv!LRkS<*3b;g6=|UfA)umlnBkI&MnQ{_^M3CqnH94Tx{;)tA)4k~OvrCT>6e^K?LbQqJZKCM zXGTIwiwAKv<8LDR8xi4GOB&Pp>UFHkP2l%3sL&|(v1dFRd)I80id3{5;7m{`pc%Y8 z?GS2?5%^Py;!>P`f!KWXSBT+;pn&%ZEuuIIMi(W&{57M+8K|OZw{%giUZu|<_b%&eeKGK^*M&)8Q@=Wu|?m#sIxeS=~d@5S! zWG;4p*?VJ`ycr-SeZGdmQ+4!PLBd>B+e=oQd_6X@HO^Kru(tiGi(W0Y>mZM(>et$B zwdJGGMR`~US(fm^z#NDdnQ$WO``_x%!}51TXCbx3{~u*v85L)?Z5s$q0>RxacyPA_ zcXtWy?(V@Y!QI`Z2=0ZuySr=QJi5<4-RX0>-+T8D;~PcQ7*%Vpy=1Pr=Z;VR$K-FL zhVomh-rBOXbVv9BDeGmtP`EJkc8vt%!v{hng4|NrYUwZCD#RTZl+*W~rPiP41*6Hl zgOOVzF60_=WORxSKy058i>jmMP*DW}q#Z|lmDzV7iN`XfWV(sbuozc8XNA@;&lPN) zJrq(OuSFyY7-08-oaEunUE3e~;cL02e_{M>BeSP@qjJ405=2;8`N_MZnrRw7YEt=G zUh7+>Xm1qPsyMlhw}re>%#4F=MK4@cw%EqBzI0bq_hAj`!y@iH-GoN$nspLSsoB;y zNBW@Nv{cvNY;nIzy2NJ}GoBi(NSmrT!9g@$r! z5@ouBXtVPb3#(65rZ?NQLN8H}M@oYY+WDf;C_;L^i05|n5I%;s?xr76Sxi#N?TG8j z(uJDzQ$-x{^O-XXm{? z#y1eIMR*900~ti^7e~(O+klhxf=zYR;(zi*+UR{zpxKBBHN7l{_`u1;23`zbT(zR< z+`rRv_obSh1n0A?GHZBy|B%$}YS?C_D&?8siSKL#Fsj!m%at%nyA}h#=g4-mmYzs*kGWD@ zuh^5%!z!fep8FcSQE*zIe#UXh8sl&`#V3RBz|@|-gz2~+ZTeP2w>ZEE8g^t zRk|}&X5lT1-fNP%+XaX>=}dfMSWf5f$l@EQV%?vs0}&$N_IHYn7YMOR^Me+fNXnhs z$y)g6(*OO9)-Fh+oxj!y`o+<|S8S?$P_QpEZ|RfZ1Xo+w=$nGti#SU2?rnV7O?fT(LS~?a;d= zKZU&2uR>%e(|&@K(33{_(T?wVjHdQcx0}s=6yb>1LDOO@?87xSAssoKfN}s$ka-B& zF`CQcsCHyB0Fuab3H4p#jP{mld*qV{-bk?l{by}yBntsunD;l2O3k^S2wa7nAOZvX z9~;f(w0T31U$egmq2fX{6M*>3O!0}Zs0&XwAov`W5)Ff>tx)jsC>RFOzl9K5!}&F3SppF5?9Kg_mbkIQxJj47wT-isR( zcFl0y0DZQ3uT|~j4KZ67C``NYK{s53##6&<9zJl2??IuqE2v1<~n< zH$cy^xg~tM))3{`i!-IczV^O$SJ?aIPNc79omHy!tRCLmyI>c1rF3~R?<}fOK!f`G zygq)nm1tB_h}%5rZTycCmcrcDT2xe|^(vs<(%e6vkW63!8Q{|e|*d*1=DTGH(PJ*yEm+vu0y7zRd9LCy&82X!V}>tOAquUp(!1Lt3&V@-IF4NJn3e@KLGRQBc}cDz zO4-jKlOOetsDobRLgopuGQE=wmme_<>3=jI3DJ-Z%y;fTmBE;~rtD;& zTq8>KUaGQGK|Oo)eqw7=9a6ib#C~LdU(cO0L*TnF8W5{%2 z_ThZa5lLNVKc>#bYR)rphoNEtM4fmEBBBGWxET$stCcj%L~b=aUs*rdj2fV!Ny{IZ z9L?S0W)HgSA1ePY5%OPipWnbJUur*}-GU00Za{-7EO1D~+_%zJr11(FG)vu#k zALqAS7pv60FNo|~v@Oj{obp6kyR=lC9g+0O`gn(8dEIlD9zy192hLjy-^om_4#f4@ zNXi6ZQoF+4d}Ns6;3S?(4*EN8_P>zGpMtQm(T*W2>~tyrPNx4Jag4C}qKJswY{+6o z9#d77=g5yNImtIw1JH=f2PtvoW_J|&9`6JL6RPC^10r|Hn}rN%yRxr|cQp3MQ0?|= zSaF%=ZdA08Bql}>)p0Z98)o_C*~zTCRuB?V|D&yE*`7$(s&>fH{|w!6m;6-jHOwe5 z+A8DUetNML(K$#IFqy0c>-?;)*M4Tq@UWaWcR)90husl|FgQ+)6x@tUy1O?kPI+sw zDPW=9f?2|bp|?4qQby8Uu=2zW;DohE#e;6GhDh3Zt~T)grurU>er>)%gLd*q)5@1o z*!*@1Ecltn(9Y=+o}FZdJ+V?AWwW~mjBnh07^@Yleih$9JyXrxxO0u|>brlA^kD*) zo|IZ<9HR)i*icTRSdU1}rXxv2Vq9;TNTpxxR8F*NQQ@s;4J zC{?RyB{l&r*G2}GPw(Eo+x35t!b%-9kr!*{Q?Z-|wNYxEG+nx(eA>m~7#RDBsMEqY zW+UC3zue%a7TNiDYYj3LQ7Qh`5AQ9wZlp_jNuXNam#oudO^kU3YZ0jp#KoFa){`ls zis%yVO|4zT6dU*i+Vi{# z$ymX?Xm_epfAYi}?sf?6DQjJE!o6%6aN4|nj`^6}3Q!GUjpwk&B&Gz~QS@;BCBOVR zUT8;?d?jd8-|pBS{#m8`3;UEM0^{S0r2-3v%Qb*fsFr}C*rcL;@bu0bdfB$;*56YC zF0C$yiYhVj_J^`FUtj0-vCYygvNwS2AN8wR4_|q(n?28XG<+G@3@)D>DTTQlR1mm{ zuf)?E(WzI{3GMK9V||5+UfL`9Rzq&YGpCFBj4GCPENl=4szev>5gjZ`MFiyEvYw>+ zMXloLhw~uX$DiCJQrw*1iF)p#2Mo|E^cOT9SvTr?n=0&TY-GgQ8yyH=a2hYSjh86l zm6Y$OHyZfK=|m>1ELvQ1V8pJO0Sn!2EGIDq10LR9JO&5}X4mPWVj{z}t;q&JB{)N+ z>+TT*5WdI?3Tx-F1wa$huw!QF3Pi7&mWzedDUY=S*;&1=r6NvtcPcW}F3zDXV<^{^QOPg>1E>goA zo@3p%q7vVNHyF-y)6|kSQ?cXe*s8nW&ARiP$3_h9@bzG2mCch3h=X`~QB`!yp@ZR! zh3~c#Sdi0(0B(bODgP=(#ZJy_yY!&SrSEec&S9bU_p=V)OPR0J#Y(cXN%DrrBg_a7 zVz2BGuT`1Rl4|+Cp4I=II`nt~VZq9UuscTvCy#`%6Fk>t6_k)Dv|T>A+8Zg4_8LJF~v&$#&w>fZ(yi1)4v%o%onX#sFfabGx__`e=an~h3H(KL)t!jPZH3DDR5Wincv*OlUG1tP z=GjctN-ulLOgGZcI$ajT(Qhp$aa{*jzws0BpP~@=j>hwE*jy%TT6i`oa0hD4$Kzks zUSchYx5Ug2IA)dD_`Zg?!d<{|1BEtFxmRd`HOqN<-FeFUp-3(RDNkEPAa~p!1;o-V zG~*3$@bKq)rXzBz92rJ1ar!n+)%B_s{tC!{hlv%Pa3js|w}f$qi)^J7uW&((xY0 zq!h0yV2D(bA0?%@Se!5Y1jzK}RrQ6HST`?ILqe-?m-{r8K@5L`B}Il*KAk1dQABpl zZY95!(3<-i|C$pKkBg0ez(awI74_v=LPlb2uTuXX4v~%Ufhiam?raa6+@!d=I$2Qo z+Domy(~;nrowVit?>a*wuw8&d`(#aSbefI}IS5)rsz>6*1>vs}E-=4IxMcs2gv$$) zQBo&1Qt`XykzkW824|?1R}GgF+-0#-hHOj$QdY}@AQ#n=Z};a~TS|NgBPG6qgQ208 zk&9E)^pJ_#en(GSl@=$Y+-H6#^(I?iX(SeWPE?dUtxxR9ove>pz+<9hv@~-%nZ$B) zZJa4W79BiGjY}9y)c6LfmDztIF<=X1ypk9as4F>43&Z2R8_@4^IEkjPAw`eyPaPwq z$#=67gXyGj<+@TS&aV5rc595*>Ry_Iw)gXW`sP0mY{RxJIp{m>$rZ(diZ=A>1-MIC zy?eppOi3Pyh9|podJ5d&uVP3bcg41fYK6?tj9$>^u9pjvwF*+Kgk+A|=jQiCwOYWK z?t!|CR4w#3=h`Oth2FCxt9(P4Y_A$DCyWgC;tHuhaSy%wg$fWxz-umClUL%C<;)X9 z>Xjp2CHe$4mj8jS+kPs*A5x~+c(;>Mx8#upGf3L;2qHXN_&m%m)W4wF8 z!X`_c7_HB4?@Hf%**qV9bR!q(H~r@Hg!u){LNwF{o^xwyOTQ+kateds zsQ`6e1aUpl8q?}jVR<2pQ}FnAl@+?Wg=Vyya&dp#i_Chf1i&`RM5VqebT?KfT1icH z8`7f0*|fQg-Xjk6n9&gT(9ctKbC@zh@G|xH$vH1NyIDe4HVz)lO36%>rp^GEYTOM9 z6$+7Ia_A1FSUZ_CHHfX@Hg0+xTtA}0iZPnF-R&T=D!rUqsSfQ&nWX17Z!7x2&LJ-S zPs#yiM&d^qeuo>$S(XpVb8Ih8;Ve-%Oz%e&(i6Gg#1L6o!`PSq#+b0?ezY`j*v@IWg8z3D+K*6G>5hQ-_kqw9DuG{1^Q=`ayq0$jOv4#l4l8wD>QAib*W9`r?nBwi*rRH6 zvSbA)5>slLcOF6S@DTvzxW)j7n7y2#UmxdEkPs$5M)wkxksSrwO|D7`o+tL}m94muG!H|3IM7h0#H zt?S?uq~QrdwI-RrJdY9No0ydKXfvldfR4@X7K_Jxf&96|ECLUQ)LOkx0}&mX(0UTRY*X69YV%<2xTnGZ$~qfIs@bW|qTR%%MUx!88;>!rEZDyFx|DM`IHH7EY+I)`j}Z4V ztjE}lW#9)MWJD`Ch4pIkBMr@ohnx#{(>W^8cRCyuK*nR1jNUq*FYJ*DLa@(yf@+YI zkD4oZz`BecQI<(~_}nOm;&WIe9zP)MyF4F|lZr0^#4c!tx(1YZ&LZ*~uzhY-bzHe> zg+fc6S-sjZUR8a}T+x+c>$NQpRhud?cCofEGLEx1XS4)U?1&51-nvmr{@BDIIP^es znp%ov^%o)}FFC%QMT}<4spv%t(O#PW<=pIFRyo#(vXU`S#i*RzmQEquQM$^$QXIK( zkK{xgL4fJMW9eXwkJJ+bZjk}8IwirVAiVEG!|PvRyYaJ?_6{@J3ks71sO(b%G& z-9(KTUv`%m?Tr~>VFRAI9vYVHM|qCDPP@t0`#IP)Hu7PEWkdz_^iPopaH3X7tVOEF zyQaLoeC1&Y&7vnHST83hJtq?~$LI?SFZPU@t+dp|iWmGg#&!9VS4{eOT+S!c+<4nF z+yPeSvEQH$k3E|=JtN_JZGjNWE2QEWaDTox}aRt+_Y&t*yj)BWSsquQ!} z9$Yp6)>jdW30cJYwZ<4(McrFRy56B-nQI$OS9y7!stt|#`S{EXzqJl5bXI@L$m&>E zvK~0l&&!jB&94!hR4Q{!CF?p53aU7V1r~ERzPB&Hl(XmsVfLm<_)oPWQ{~B%r+YEw zh9=3nFpL7c448NZ5%9gcMuWifJ`SRkd=Z=y)w<>c(a* zN~=SA2oy{uzU4aapa$jiy40CPi|cza z`4LLa_>xVl!;xqDTAi5x{d%1YTV`b^rTtKk^JO}-@)!9p;T_8)v?V@Dc+>TQ8>K_b zAKKJoeACpps@Qrz#>9<0vyelV0SLpyAYSf2oaT3bNQQXy zuO526LpBBEn%~}!YLhxNGS3Dn-RSdp#J$^2j(VC#qEWDw)u~qWr1vCu7vw+o6kB8zN_)Z7J&VK9tAH3~0}*2_J&R`GPi)tD#Z3|Mnrd zEz7eI)X}8Pg^-v9Uctz)pKO(=s5NOe$Yh&Q+eF{~WIE`jV`(F`Qwlw<7D+|7A z(B!!RlHL6Y;zsA*Ju$JWq;riKlX)H}{LD@|jWSff!hOBFS*q7gKNE~c!~L6NLvF^F zG4|{}=2A__ZhDg3rnKf9UWEae+9kfAGe>dmI{nvs+7)M=ZLjx`RQO|(2TV*a*HwGA zAWcejzh{LNkw^5kaYMbUM zu?!`-8TC;(5zs2byYXI_XOnT~*ecIdh+Uc|d?Ciu%)%R&^)(q6ujYo`Waowc{U2we z_4!0<)S+i9(V7n_=^Z1d==vKrXeTJ_c~Ra_CEib9^$ww+q7SQ<+{&X#dROKRaoqU! z3AE9U1y`u*WSs9sy**f0+_k_59~Blbho0Oh@DC=JULrLSXYbPz%lSg;I_D^MzK%Yi z#O&3>sXfGue!UEx$3$5>|2|2fcMfv5kr@?~P(fg}Fu5WyqXZcEe_qrdn7|UPk<5__ zZ;i_--m#p4dvEX{VQx0n=+<`fVh`Vbe(2)G%aQ@*{9@-nox?UGT(){GU^CQyK+B*=0Kkh%#jAn5C z6H4pT#2i5OhE%X(>*MHg^o-W0@gw~!Ob63UVsg(P*r0g=fbI;6zNfW`O8?In>(lkM zB`zduS5WW8l@lu1Y09L;;wmHFXrhjAwc~ma7hKD9QqCW1{Y&;J5N-EP`D{OTFfjbU zt*~YQ=i;sI@|ZIPh)O4sv4SXfx(f8doOBv=F_C4?O(w@P^9q0t0#yqyRET9W%6?>C?_qdB8JQ|J=$pIje za013%4||{s{*{w7){g5}XYkKPxK6q231VebPQg#!XgDPq&eRN~1SJa^8s_b)Zx5R@ zRg6&itTa1urhTNL>7FUmU~t$QbMub8KeAbFbX0fNYH}(YwHj?~<-OCV&voDiR|zD0 z_r;SLx9;uJuZRPUFIG z7rjr~0zpu)n}|Wcv&2wr=H95vEFmMT1sXB?UG--bQzBdjTayWP*m0x@LRp+?<%I^r z!{(zSa0n5|F4w8ZZov>%`Rie0#>D|AuNTa5OvC|sv3&&Q|*#w*D~!y zSIhKa#zVF3;oJj;UlLWS2iQv{b)8g}c=3{?@!?G1g|m3w;~l*n>frkKFHfYx;Ka2x zzq@5=zFkd)ewv|ZMwOChT!uqIs4dA-elG}B) z?wqG*NH+5s0-atvT;MG<5jkuAGbf9i{L9aRXI;d&i?@dwdj$3J4xJk+0{K(#ZmE` z0WV88Dl^$K$5v1(+V_$Ifxqh^{;#t1b$83^fcyGY4f)Wpe8Y-0OfLf+m?InofltG_ zkjNC5blAbAX0}(fJ%^@oIcM*Z@r>t)AhP=%g7gdga=#|*QK5wyCS*XApy4ZOlQ}vS zn&TYF#hH}qbtPjt+a1x<672Rnd9y*fz^-J?_V*K&k z50sKkZJItHuO$+VZw^2$HpI_~H+0hL5bUVG6x~W-cO^|y=vnVWm|y%Xi#9+Y7RRFJ zgHl=uLach*)zbXs8s-XCYCOe(Q@0}9q(7?l|BAv8$n46W;;}poq4blCYq(`IXma>H z;ijw&Bt1vMJ<}Ax&Cp7eR!cj9QaE+fuSjd|)Z%54r47KsX0TW#j$K_YWNeKvq`*$X zBCgbe>_x#i0j`o!zOpnq?|@^gbO6t(h~8MKD+|1lv}lf6Uyf$9E8^5d{DA*fkPab=iPiP9 z_zmrdCG)wa#3+?Dl#%Ppw-ct^-E7adZDntHoJTSw*PWi!E)UQ8PC|2pk3ISt)g^z) zRlh#6??Ng@D`oOi*9^S_a_$n{`WVN)d0RbFIBR<%v(pzt;^IC2ASx!-VfdE*i-o4; zjd|gGUgcECo(=SoE)k4lW35p2RI%CuYk(Qomup0U3-~80atYdevU3fX_jTsiQ#`ab zgTbv60E$>|VtGeJi+I3&JhO9ymU;`}9m|s)R!(y>vRPC2LY@OR=+rw$r1msH!_byB zzV+&jFkg%6;Z8qWE3mLlORI@)v_qXp7s&Us4mKu@eApYn1x*ke^{0(ShK)?e>++lfGmjCr}oHSOU~Dd#ccY1w1_a(*YWY*^81 za23f_SF$qW_Ptc}Pow|4G5kHhqM&~AFH>ZjY4)z4aew{GqpgtH3h6;2c+lj0BjRfY z;dC_TyL^Gjm5{5IZK;omYxii*SmZ;6#-67<02g=sAuSF$fK04xVB4mzE>$TrP7A#3 zs2Va$i}#wUU3|N)#zJQgAod|XmZJ`>#-dt29ztKN;XvZL!rH!&PcnFk+f9)ea1c$U zIT5tlrUNNNrZ;!0)1CV&kt2*=sXt7R&ln682~GFzOFS_ZOcZL zTq{xmc;7;zf~vbquf{G*_##e1$;b;^gh4*tyqvKZ;?LzRG~-J$LHv58opjxACIab1 zjY#5f;325#9i(d>3|yG7qTuw40lP$~tm;l$NqtuO;GGnpbje=z;rMYa7_-(QEmXLw z^|VRxo?Skl?=66!v*S^3o|X|tZhW10dHWFn4{eW_lbH)%T=6X;B}eH83gW>fRshB? z&WP^|zgQQ@nJDe=Gwi!nyCPb?IY#teVch+z8JrkfT`Zy2wgA zs|NG;1 z3$vJ6WY(y$Tj;Rl_Bid&k}Td?j5aJs@#x?dVv6-!7&?7twosT2sZ7~|V!h&e=@fXu zRH(`hE0wx7@A82$OlmX_GI%-D?PAGkdkM*?Zf#fadPS}{#kKgx z3cp6bF9zmFCPycjT2plg>Jh#b%vW38Y~`q_m+>{hOU{#h27kewT*`dUDn2v zc(1R+;Eq;{cJ)4A*Idigms-SGq6Vlczp+1lfMWwRy`!&SFxLQn&mMhd#V)j|AJ3dMJ$Y}fMwodjBj`}y5i#-nfT_0!M z0&a=0@9|>2{!Qxqt2;!t*zfKg|Y=h3nQ;&z7ZQJ(7IG-;=4n><@n0tk!Pc zM)JrohKTGJSGi38xq{N}_)b4t$5w_u^S<)JUm2umlgJ4{e}|uY1V^q^55Qs`aMn&CYW`K^4j|cV z5zero)>08p&zAksJ;iw?Y_;PXi6i{?%M8|vzr*VO5(56PEWalV1Pn@1l+`>mWTXtg zrT*>lfpwMbq_8II9%F4o<}d?S@sx7gcN0n#vMD+jsyXqpi)R+&3MWd2k39fBNGh&+^la%dBGG-f z=i}lNtM6Jc4Ug^IOYmp58Yk+@1Y1cE<8ANiLgOr>gYJ3#(kp z4(3ajSMaLr)(}%r!8+xO{;PF|Z>|Zlfn{{@e1_mvS-~OUg0<((BWJ3)gLrjWx(1S@ zok~-wxtWDKiDyTW7VM8IN8c+e-$G0H{4_bnfB6;t{CkW3@oIsD513kkMEWMa0>34b z>Y@SE*P=JnaZ|<0R7G#7n2PwR59_F$MaSY5{OT1O8m(XNBX%#AEUPvA@h0=)LR^hQ zLI+J^xTJallV7P+X<;41$Ivo1a-MpnJz80J<}**m^ShHe2>k|X!?3P*`ULIcOboSY zY?y-By0I@2O(rvN-7K3L%?JXfbf{v$>EH~mzo}QPxwUEWZ1OBB;1{a z3gF$>w|gY6poHHfSetAA(mMSL$o(Dir$F8AQ>t({JRV83X2U-AT6pJPi+&L`>0>ZE ztf!{Zgns1s4-P2m{F)yJ;|1SRj zjX7RRr!{7nPlSienf86{;FOeU9!=D?x>n?Vj`v{ z*M_>L^Rc5N0#N>=nGy{eI~ly1sju=uDS8(iY?Zko0?D2@?dQCWnp#4d5P5mWp)_cv zwfN!!zw#+Ht&&Vyrljp+YsV>;xCCX`uwruzbkfkSw2;?eKUe=mG307iS};vb@O;$I z^yTj>;JXvZw6c6TE6YNzs=>jQ= zYT()@oG4>gK9k0aqEAc!s1*$lWCfI|eu^(My)FCfr}Q;JgStk-+enLrsK&ai?BIx* zR6`b*6H#JTWF$4*HOW=U=={)ql7U2m-fEd!d5~FjA2J8+B&8KX$jeqUPNaVAx;I{B ze-Qf(;3>gV>7*hVWENK)OkNga5!-q{O22l6bGS#3<#M(>dNywyc7E9Lro^P@TW4eN zY<>gESnC(6WHvYOrl}@nTRS^uljKl2#5UjE2kufISl?+d893CfxT zvoVU6g`;6-EB8#O^vic>6ie!L*Lo?w&?SUEj{kt0l6O>Er7BWtkXC8@ZTjLwUROJx|9N(0^_uM-A762oXF$+;4LPrWkg+LJfb-Vj7<1USdCFc z*UuLa7y{a0wOV!K?DKm9{f$Cf;gogEg_^*Emc_DB=)tzG1U{>t@-%lj@+C@7C>%#^ zU>V|Ycl@f|ngi!L4Q1yyL+cGPl1Q4e7op&bRz{h&q5p+Z6)3-I1@9@9#Nah5XBy1$0RQ(nH}SfF$P${T%uc~oQeY%UnD!qnUeSmBUxX@0@D-B?1vYXKPDIG5 zn}CFyR@C~(lX#Sc^iLnO0wJUWO*>ShYp^uQ7T=4@#=~XGi&Vnpe$Q2Ike_8up;9>} zr5hrrHpO~4Na}divqksFWBh(JAw8|oPeyG!P0nJuI9!M>mvRu#`HJ!oJVy_7{{yRYJ*UtXWO>46NVTPe5 ze|crLC?a(YzI;hvqfJ0k?No{#e)nzB*n=OJMt z;l5oK;)T4PW@6vbd|E6#+0qsgBeJ`MlU0}VU0X9@wn9e?0u(11axnN>2 zZq4G!{bC|dVjN(pAt)j;NPoe(CDJ0WpqsGT&2o8A>J>BFtn7NJ9+NV=Gfz{KuCyXq zjF0l`wvZO&f0ix+MBNJ^)bS)pAY6BOpsi<)?5um^6-rAv4!hTJ3|6Mw4&Of;&X_ZK za~qqdBwsv(rs~Aayr%P#Pt+Et0O@rR6!hjW403B*aKEK@3YM?rTm>+9Qc7Q651v-Z zM5Wjjzo3fAQ|ra4^qHw$L^$So6cw@)Ix0K*<5?-PUt5O`-x8wP=hfGF)zGX4Xwc_5 z-eeKisw_{%J}yit)(x~Q0OH(Y-lNp*HB)&ist{U!&fbV26)F2sTNN0PV=M3Sy2XZ- zP9R0ZKg8qKiTCbF3=?IEU8+0wi2pCjF^AvEF^9qoYyBBi0|i9%^K;mVFr4?<({S$u z>_pq;f=k;8U1_Sk;N zFl)HXNfENXRWM#zM5~0qw3-p)sQO*}ymVX%pqM@-wuE(O9tk-lKv};ouSAK5{QrMz zzi#-%*It{E%!QX4($C*NW}=)AIaxbAG!%{&=FosQ7;ZvdpVj0;L7L2t>QTzC9%=le zy_di^W@y`*LVNt(%6*4zAk{Kd(Q6s<(#2w z$=sZ(prBx8b@fFocZ+(Q1f*e6)qjB6T5I$Bqk2#GY1Q`@SlQXx9;%_Cp&!uEzkwHZ z`OpwxYyV#oW;@5n*RsR@EH7Op%HRhrG@jEjdqsK*qQsw3j^CF_lHU@=>-8$kjiMqM z$kh2Q${$sB+XFrz)qem#|Mg+^1PIJ%N4gd%Uie>k+bbVN;p5p3--;k`;GM;CBV?1) zu`nbXTfl$(jiOpJ;^>Mk z1!G=CY%gEOx84VWOE4`F*0u90XTA3mXLo(N$kBOARArt*Jnec7kM zh1}T)NtONV;SdD^_fVg!cXOpX-et(^7gudAB9u4TC%ng2ba!#Tn{OL@K-i z&v%Q?87_WR!jG$yd$T{0ptPp;EIdBD~f&ItHr$N%dQ=C{z` zLqn7M2dML}AL{GZlCtKY)QRq7Mmv>gcC-Lxu>JHCld0Nc_jYG6W34|1gK)(9L2y;w zxG#<@m}<)DpiQb?#If^mwNwyRZ>-7}3*GtKTxzE&?#hinulj=G<7R&lQd#*FoXtPY zonDcrgO4@`-V++Vu+{$s?Wf}VdZ^`5(F{aZSBG*+^Dp*}ndlGCmgBJGV>c=HA9v5b zcnDP_KZCb=eZuezl7?g?=(^Cc>Uw`%Tbb;m^*U`pfwo5=Y0CxgK&mpC%jHmKV~7vD zFkhz|=_zl4w!J+=QiOoc5wQ3|N>(rIAQdLtuNv{bsHL(J zyu2A1_S?i{$B{*Be88LaahQ6Dw|KL+!Wq5X{phh6fa8xTsKshfqChw`4z-k+I-PW# zVnHCQkR7zE*C6h2d>&-r$1)odZgQyg3ElJcw7F*8*LjQ+|0y8e@?($jZY0goC}n(p z$AmE{GB)7zB@oF-<-Q>s6%sP95;BN{lU(zrfktR1KjQZI!`R8h2@LhHKMF#3FYp$? zRGw-%w=KBk!mrhZw-yN2rPf@jH-$Cg{K zWv4q_2$F08aCy#LVqU@CvS{}dule_Pi37XLV6+MfF_>6yRua9QebeRu`g~Lad97E| zfXzT9-h$^*ecpy@+CC*~)dk?-!zE6>EY0$Tm4Afup=kl*f#);vDU(i%%w0HXE&oBF zn9_Ya!-{eC`I0(?@AF4W!SbOFBI{*JUHkJYFupop_3H4y#*#mLvOtn>FE*mv_YY9_ zfBv&piu`e|4N14!Gjmc6>#VS_P;jlwkg|Tq^H62B0$U+MD`kuGdq`5v)pivy5-Wi2 zDd_9Z@w2$VLvSZshnIR62Yv|k+G8L5gqz;&{nyKd@_5FG@+dhYpW#^vimm`ZGK)@k z9`R!$zK>-|IA0|+CLr!booI1p+FFQk*PIz!Ye}5!299RxTj)DTPCm48xA1Y+D?RZA zSqizmn4Nq{Ap|?{B6g3-%czJZ?YIU)Chh2B%^Zcc} zGXOG$+tE9*;K5;ULE=({w`HP{gr$K9Y6(PVN4=ch$idg_OHTWJ?AFJM`;E;x8;yzo;k(yTrLClV9eE+Ud`OD=Gi4pcV81WYmWx>t!AvqwAjdD`op!_kzX!U+9w^qIpxt-f-1WT z(3`s@(~LmeJ#$_zIp3q^q#%V*=fu9UI zy)%Ir+DQ%nBm2ZUM<*%4JfS3)-o`eKNB}2t=Z8205k#$1q)jHhr&Hjnncw0EAN`C1-+BEY8_k} zUKyH=VP{(uT%J&{Ea+e5hG+AKGb}3}CPmi?;ri~lx6%0nOquh<%-Y#2oWVyWz z5(qAam3JZ!nnZ9S3O3sE7`N``xtXC_-s1xAO%u=C{CT!#B!$GL`RNWl<0?*#?cy;G zzKEX9wws?!@=;&RUoaZ1&qyq+S2r0STzf3}7O_S28b1tNxnC4eThpGHtia3QoQm-l z#*aFpC;4i4`$AY2gICEhw(E=%o`1T*r*nF< zpYNfOPr+~8eI;XP-Wbu>Hy6C|W$~=jgv7$EpKC5tIrRH<5o_7=j0qo9hV>{A82-*; zN!4$7Q2Pc#ZTQZm#Q5EAdDPfxN5lQ~S;5(4D@mU!vE>EgM$5kb^+jm`!~Ssw5^8ej zJ|yH^ldEq*1*HUA*4mi>jpxVXpFogg?h4c9dH?9c)?EVOm-H9o!Alu}J5*MJGB3j% zSecfH=|k4_l8~0|B)F=hy8Zj3@4cIsv;z*X@qJu zUfiAF?s{=|cYinC(=*-7^sIS5-&*hAU1!0O+GV@y`)WU1%gkNf*7d6?i%sXMmKnr7 z;drD)##uOHnw}SywB*`bIHyfHZ=1)5Ybuh?%rPg06s(m!!et-nf}rc;5$eYRt+NT8ORBcm3ck&5P( z+gdYN35;=IZ1Oe~%<0{Mmc&-ovkmcd_|Tme32a)Vq+D$7U5A4fQRmZ-Bh4l`9Qdz6UDDH+#=)6Cy;#>kaTevh*{ zI2UCcc6>IzEBgu#N zU|i*dfkA;hc4BoG$C_CA$A*b?h94~Ivtzg-sBsj-(sr;eo@xzO{Y%6-XVkkFHg6vi z2NKw>OWSNq4UFwS4Bo*Yz*!s@;LjYvJ}jb~T+^VJ&Xq3iGw-Qn4F}v<8`j4<;y%Ho z?JYVTAC4W%Z<%!&cDpw2?v-@AYjv5~KGJJlAw0K7NQ81+Pa5jYjZ<`A+HkOVW^JdE z$!@y492q6_#(&x9zX}_ot)Eizrow&ep+Wt@+jrkh_5AzaWiOI#&ty$`mLG8b4In=3 z1eP=u`dE>)GOVs|G)D+WRXuLW9s+YK|%9jY-`|%V|Yh(aeI}9uWqImfa+Vl z<8{YEt-o%6=*;T4Xk+GtU-QWs^1inS-UEp`!Ws4Y|d~FORONiZ(wI$wS_x{N}v5|p7Em~26#II<# z^{nx(h>f-Ss{!(s>tk5{X^?_Y1Ka)F;z=H=F>Qr)G{kfi&d3H|=*HHcZ(*-5v2vhf zaBp`R2gljJbW;<5zIT*=tiA<d{uwVJZ2RfTFvRFVcM7(e-1*sx zo8x2!;$}v(L~tb59t19|u;N_$64n< z;=0S@AZa{hK*IPq*;+X__cy}sLIKX>#L&EHhc>;e{2?Q*O){-4C0OpsHZjL4Do zFG-WAF*C{yB#(6_5p7Y}Dgj5^4I!G>OQthKkKcn4)tQ)Kd3nXHcpEMVsmPr1=EwE# z&^WOVBD;hbbKW8PyRq_k>sm83Hd8Q< zWEarMuIclR!B1I=SWljqlT}A)^p&3b^-pOcF14L21?3B)ia9d3S*dN5_GqkgKKz_4 zTU<^kA#jYG`rZt@(ztYdH7;(B3g}xj8on$-j%`<#+|z|ucvfsB?ab5!rUu=TPR4SS zHEspVqAiZlz<@ofb>lQg-P4kd?5)(Pt%n{eMxC12QnlcA;fqrKW{H*S-Q^`0PTM^* z4*DJK!~G$ZVUEA9(m%J_!=JqGZi6-wuH=#tUj9jP8PE9*YE?Zs{*{(HS{|aVajN_| zpT1}-XW%=8cKHr$(N{sL%iU5?hhNY=etw?LBv95a>eTOf^Xx#led4h(r)zZyeOzN- z!AsOHx-ffTKV)ig_+(R3<0EB`XLB1}KkJ|=nf>0I1mm3tbXR~yH;bmn_ZY0-y54l_ zJ`8cKKGHUWO64fm7h(cZa;6*%rI0L^59k9egFM}N`0IA7h*RnR~*-8sT z<$JuM0%zE?f<&xIrDQI*cgV!W_yVGrQ92}~Sem94Q@Ypt7Ll)N3Mx?JRQk*@Js1=m zu}3M;`hGrUX9(a8tN1pLTncydJu-R@oLI!dlkU&WRW^XwRN8$ql3j~}P7pnApV_*n zcF0c5+D$mF3f+tt$kx3RAWn}`7Q@E^YyZwDT|fXgdzVMH7xf8mMg<-ynfgVG=&gM) zyqpRX=`Rsx(mRx$!^`kQy~=@6zA^b$`&3&>_yUPPX}Tx@U;S(gTI9-N_-XnVW31$( zwXcsB^T{2vdMjY#2K0XvKV}C@76j2mqFzFr)a?A{Jpe`;fNUx@(WS zR)nYg4J*s6hEQ(YTf52o`h*;K*>sSxvqqR|je78NM+Ba{&6S>pE9>+tT3SYn@Sj3l zY3fnuTy3Sjtv(%%Vz0CJTOS|O7iA)<&bWo`dg25-$|v`qIi5Uv&s+Ne(Dl0aNf4Y~ zG3IF;C4`f$(+D~^5aLK%2ZjT733L1kRpU;RQj#rC8M%7}jyfI@k1b~X*4mRuuBF#gLByG-|zLh@~kV?CPbef z(H+UQ1{~ZdLw}0wvF3h- zo^Mn--P8h%>y&h-3sZ5=*+)Hi8R>Vx+~K65CMG z7M)>%eU&z-`f{96TD3J-Gch3xmjL2W37D}6_ zP30!a)vVh}N=e>T{$~ns&uoy2-RDM z@2o$Ep_;eDVdN5Bwv%u?c%w&VF24&Cn&+BX3sux$Rx#9>_Xc-9F;Zi<`=$`fv@Qr3 zR9H1?*`41m;oIMs2Hv<*$;T&J!otB{qt<gH2U8E(6MrOMPv8Th#+P z2V-^uc0nRKmYvjT#MoF(bI!#hS4EUm1ioafJSV`9dQ@8U+d1bF zP;Kq{!Lma|V2rzok;y|{sStoVqYwFkbRVuFgdiPe2Aft2ZJ^)e`8|s7w{Mu8ogtmI z&hijjdvwWpdwp&nMhKYnd@^afi@SXdC9wTrM%;gqfPyY!~UipRA#I$Z&8k`&$p;>vh+q_wOAh9(gddZ=^q^ zRd`}9OCY7HEk4d8HJDfAWOQ2GEL3V>I!^_V7T6c~=%b~6s92A;+nn)kh?TEB@b*+;hpr-5NpqVXRrC#pnDt{5x z0hPiR!X#*WJKbmO-rhV+#6IE`WGuy*`KvjzSLo@e+C`NSTr%tJ*Y^=u8&)q|88D^^ z?Fo*t))7Y3)h03-zBLJx4iD=JX}mNii@ZWDsiy;~2!ijq(YS*GW*67Ybg=B5SgfN_ zif?S`*3ybFhSo#K5ir)nc9ZdwA{YM?#V^KhyQS&?I_Dc=+zHMk0r;Ic;KawxD32(` zG~JkS`Z_}tPSaai_a%%bckTw$pU%qhB$~uOK3)$UgrIp|suv74N%x$u^enewI!j#2 z=hV<7FMBds7;WE&?az`H$^NzB^9O8pB^%nwQ^!T7!7%SdIe^@X1}6U%Wq=#mE-VhM z{WyL#xoI)FUFPeC=P>QStDx6K>~6s=Ss{lDBwo6^*W?wXYpWwQtC!E%s?`*rv6olDWI3wghgB#dxp7;aAz^C)-IqN1u( zN$txksGY^$MlxL~BUiCotJmWnFXuaVq-E@Jm(eE>)jvMUrFd6wFnkKF0vBq-PC^TN z`+5g~)8WqZi*d^1d`B+lv~@SN>SPnD-<=r!K%akJsZ z0bGMtcDZ@Rfk>c6pL8laVR55Y=3LJXeQG+tBoy())16`2=D;t?u_+0gx;y7#7bhnQ z=g{667jXw4$Dy2%d+~#Pg5!R>s^;V5HW%%SfIS)KRm6(TUHpV|Jd_s9X4&jlyAjXm z$QA3>^8Ry0(X(Ib-TSo1-{OAT9PP^eM9;cwD)35LwwdSpVE{1G)1P#`Z&NcZf6Fs7 z6_apjYOBC&<-G?*c}>e$Iwg5TyjfS4oxK6Y#`v$2bkpP2d}2EYIU@oGJ1NqJtEEa; zIp_icvq(Y6DJZy<$S*Z9pYI*m)K}TWIR1s7%RY1}r>IeDk;1GuQ=%?;IchlRl=e`L zA;XU6UDS@9yM8NC(2!uV%v8YrKvYv@(<;wqzh9Y5%k*Srn{|&8i*i%10`GCpV%@xI|?70UB~) zF*n`LnK9F2GD#x)4Z8#dcCO`nE|(r>h-C@Al4^5ThSY)@UDv(7*r>TTo1B85H(Kj? z*0)Z39+F*vsaitKjSI+g{>boi=oLrD$B+Srw!c;GS)srU_m_Xf(Wrl~F`p-5XMYcW zdoL^{72z;@=pd;PGq+KTFz8BYsX?W34&+Gsjr=S!rJMPyi{xD?OK_j3uXM3E{GJSd zx`9kca}JBERcNiBcWVYa9o^7kx`0In#qDT%R9imdkboJ9u%~{dzm{(t>BH*iG2BnS7WF1Q`97S z9jkR~ZtAqeiIf?B=6%Y|#4CCje>Z@oC6dlGdq$Y;kG-RQwZZ!$*zPEj`7gOx^I!I$ z^0r3qJaX3)?X5l`gUF{{I(s+HoF%6pLnj-9S;HI+cYTy!G(+;_)6HgPxPB^GiYLb7tU3SuaY(GQw<>q(RsmJJ@_|SvA(~b7n)TERaCbEFS$69; z6I((3)oMW{u!Vkccf%Ynw;rP(_AdNHQ?$yrq^+7aig9~0epP<2NYgo7}cz^33G(frF9uFYH-r#SD?WCzmNH zB#3>~epV@)3GQ61Nxf%yC#4eU9KB@Rrv$$A9{s*CR6y3&+Td2%|BmScTEwQ8@{X~_ zwV3<0;x$$o)NgB(>;>xdOS}pff3Y!49stjQ5{&0`#P>O<4i7tn)WQL^ZeQ(Qb-(EAI_?YDR#Rm?;Bl`@?4A3CS7WznyK;r6g%+$Me~I2cw+gXWsA-K~}>I~*X);9^Am*%7+x2yB9H0qLD|L{<}W1 zJb!}Mw;J`)t5Nig&!n%5cm&lCe|m0zobkyTbUs$DhJIFo60pbgDR=*Iv9`u}^N^)K zn@R>(luc)cYr{DnwSh6&?|@s$tvHMjAO2ZXk(@hqSf5C^juQB zx?weSw^v|vo`*y7We{mJDq)=j?WZxFa)1&`4LUi^tvIHU9TWbD6+3*;uyz(Ge)Gk@4y2)niYK2~W- zs}>RM)r)wH{_QFr^&Mu^nmdsq>ihmFJj)=mZ4Sx-En|u|15f8j4lX+7IDy}7(gFGJ zT%@t4-7k<5mmDCXe8Lws1*L<=ELVn*)VJ!i9R~K4*>3DoA$75+r@Fsa)Wrg_b4J<{ zYH{)15QD5)E-C=in+1cv`+5QNGeQrG^45x!WIKa7ZV29j^|u!8Hxd6km$OX0z* z7S$H$P^({+8ScF=?vP0M+MQ8>(5O0^ogN#dsd zYqKjzU8Y@jOvRjP28CtHp0Lt5o!bx9P&yPOTyF!}96V#mixM?`$X>m((my_f)a|nW z(i7N1afj1?UgolUujHvjx&7$luHRe;sFOb@X!;$s<_+lsj`p{BftMd-#RW5q!oKFn z@=hqpzs2MiBUs zPp(`|h2sZg4zWK-n)=OQq<*jvcg4*oxi9v_NtO=a~ga-FUW@M`YOwf4;L;*I$+ z*oN_d;x3W1>$L7zvO6Y+1&PXSw*{8omV)1%zRtEOT}x8Ed-~fhkk2CT<+r%vGP|=z z0hFtI54qpJRm}5WCKNaBJ4VJ^SR}apSg$zTlzXsGHUM zT~YtOR%@!3TWe&MNK$LE9D70G!Unf57Ehblh8 z9KK!|o);o+mQ<_~F$ts-ZLY}VRJt7FaBD7NmXwn`*JJtZ6}7jBeE31wfPCQ*AP)zTK3i1*%}OXKn*%LjQ4BLr$ecje%Oj~`^A|Xi+%0lAzIbz z49lWP%0uPf0hRVBE3nG;=Q`&9{muT6CTkC5``Y^swIRJn!{zt$$giEgDB^`BcEP^^ z_tTp@Z1I+n5f_!l)f440rHhR=umozsbi+O7 zw;!vs+J5V_t(ivDBTK1@)=iRm?uAsx`jyrWZ`d1F^dD&%3JNF!1>Kf2y>zL6v`797 z4h1>dLvZ@yv7C%kM158I=VHs^?${vl**KHpdcKITO_|IPiy1E_6gV_Lw>kskF3|^A_=43H1_(a`aawhwY zzn$pC5*+*(c!Hdo?9#Nn5_uykJ1~3wYCv|h&KbnfQQVin?Jg8N){3c(AN8Csy&*O^R$%) z7Q?syo2I9?)e|8GIW+tCuJTzgA)!Xc5DTmoepPo65b7qN$-VQ+she!UBom%O^|er3 z^0KJl)Ux(_>rf4q2`S$t;J+jP!-9W4nXk?#`yU& z6m9y^#)H5x?_BM0eqao7y`^c|18|^!N88qM>av`etSlee?6n;Mt=i z7zptHZ#TArhqW4L2Z8m^B43Ck8QweST0%fX1g4_0(j8tt_vp{_oL;=duXy2Jv|bqi=FU%%^{st8_$CE zHty8)Hr#)+pZ@}mkMwG+K)!Wt?JRx9J!V{+DO$6>|JHN5&CMAqH5Y4jXxqni{YWd9 z0-c0iyX?lfHJI#Q;^%o&*z>HUIaPG}t6rnLjDfCDmxN>-F7XM6>h?CIB?aBSvZ@KEoFS;T zJQK((@A`92dRwx0t(+|B%w`YqcTkSy3j17aPTvhIgDTsaOMdETa1l0}qJa{7@?^k% z;-qq|pDH+T)WS;Z8g;AvVfH4TnK9u<8o|#r^C4%W5q5M2a7N~ z^7>2MC$wrj=*p1#(qe5^V2n&6)Dt)&1E|GjV@m)Q6$7B5jfsKEl1Z+!>cKL@)P)4Q zI9tIFm3lqnL{XIwG=7c#=|r%By&jh~_0QXE^PG-gG=ZufBlmbmY$H!@!x=~qw;bnX z)psO1!=tPc`tVD8sT>U$!Ox8NMGhE22k`MXJIC|@S655H1cyY(rWVz_0$S!jvrhgb zeeW7{kbSELS8%@2wN^y$AM(Pd=RLKAn|pX=pVttl*fdgNNb<3Y)7A!>Y48F&A{`x7_8%?)TfF~B}YJL7BZ~hp>F=!MKHx;)G zm~ILQNE z0HxnM^FpBPtXYaIMS6f_AD8~}7-#8K0h@3K;h?K5LU)vW?0QztJ)MWaeEn z5+K5SMJPG9AOkd7usO{LCV?a^WGuc$yW8=ty6}$2*2pmJE-RQakpN)b`~q+%Zml zb18!mTAnO9=m^@YUmdGZTiG2OR9keXorZ6F1X$I>;vl?ugFlI%`qw7uZJAQ^UuECs zMD3rezS=4jD#LMOiaox9N*4Kfl}KN0PBYu9+`PNIh^)fYGqNc;v0vvwmi-syff(Q$eGZ}wTHPVRShC-A6>#qZ&+5ANR%MaTOy!?^dvV68llr-H0o&cN({(=DFy#K*!qFz? zhIZu~A~NnFy-@91)5|%||Io!YEHo(=Ztg7g3dWb~&x#L8i4g1s`0{pdAG;})S=ATX z|HJ_(zPn{QQxRHCbsz11Z!;Udt#$X#-WkyMLnwW@jJ|iAvW3$#*bs$iRBwrxKJYj( zu)K6X>4`0vDS0;N{&P2Bxhcoeg51F%qN03bEJ33rWYh$0NAF4_>D47?u?8UUn#_b@KAmt&NiB|MYRj1^2a*Z6s{75+b%_nq6T?|+ zcbp!{9NU`pVQ!q?mEN#+l93RVtcNPeuI)ALrhG=s+g#?V+;uFp*?%VxxJ`dFx4DO7 zo64(VMkehEID6=4Zp~|Av3_Pkd2>F!Qd5SRZTPOES{F}PBXn?Y};ZZTM~cuF@zv#cRI&;Fu?N(lE8P4$AsRd zYzb{AZ z$@agH;+Mj0U@uZFRu(9n8U`is2SiMCt>m9;>>nwW*oZT`@>uydu~0&;%2&lxD?&a} z?UUPAJLn~Cas6@wnqiBYL*DPXet1(5%dS|8bZi{x<(LeE`gn1|ucSHQj}=wJE-Lb4 zvT9!I{3PBqGE_n9O}r-ce-|G(*F7EB*E={U^>(W%R5&fZWXk4IY9{*og%Y9ZP}M1> z%QY2U;y^EtKfBpjn+=ECBk9e$+lUtS%rthZsrdcX_+?%BJe`=TQ3x!Sj@n%$<2rpd zoCh9v+6gB)mErKGrsC?j94X`%*Vl)uLpNOR_2XR05yYl9ng!OLr@0j5F))&E}J$WuxP`V8WC3;%hDE z$SKUAW;c|heVzCG6;7og7*zO@i#7?`c+m@Q=2V92i)=!fH@ZsXsY34sO>Lx06Z$)w zi>8iQR|rGuKYgW`8Q=au#k5`U>ENkLyQ_(;v_qWMM7P%k2C9A}Ye0D+ane1o=|7X> z(!D@saP(z}ml|M)g|*8>yXZ+j1ex~;(C+|N(} z01)r*9riL0x%YyC?htO6zl_`M(!EJJ;8{qBEI9BCx-I6}K3u_``Kj{COPEn(tt?r; z6W$*W`#gvsf=zPyo4ZPZuz{Oz#h$rRofcCe{9)UEEgQc@G8~hK{!mhYY1*R-RfL~2 zH)^`WlnG!-A$TFj({~A&Qv&-%*+#Zt^f;E2X3nI;Eo~ z-}U(<41L4jy>#u=^I_#+Ft5nWEyfjkUXl7Detm%D399kpRjEQ4=zzb*^gRMGIBQ}A0ub(V8;WyQls;k8Y z`>@`<(Oc=L<__kVvKrcVam6mP*YpF1oZPRKI_ktu?*yk=2plq>Y7_&*+Qr|}iHIr= z3Z`eiGr-QejN~>ay_%omp}%zpk^Hy!tZ$D2U4-T4SsXZUn>Q8-?>AykCyhvyJ4<6! zZWpRnS-BTDQm}wAS???HaRVtVEv1m7D)X|OrilZqZ=6x}!T-8@`e(8-Tm#DIhObbx zp8u2*{Q5a8@9p(!R-eFM4Odu`u!qnGziML1%E2=m0IWnEF|sC>T(F1ZtEvluhv<1v z_1yGu#Gu=iJyHLt=*S)_hZ_QNxfxN&D+&^p;ZJH zcQ5+5PD=B>E1DKcY*7r(qD{}xnJo*J{yUek#H)RT()MKoQ_cluT*l{kza59Q+kQ5G zvegn6g*9VpuAP0dyhgy;N%-iTfE*&3eC>DEliO+pNRr{hsBu+YQ$dW^^`d zAA45iB^Fq?+b3KW1jO~IbwtDGzE+`JGYLHJy?_hXL)@ve)Lrhi+N_C?v$5vVpRS*` zjDLDmmT7fp=Zt#=p-lGQfODfK%at4od$y0eQ7hjfI{TSu@XuMe6;n&t@7q7dEGTfZ z*kWjKq|Butep`=sAJNj2RNRico#Zfcvt?)>Ir8*L=HGaMwEpK>FF@WDQL!K{yoN&IPHpNXSXGcF#EVa3 zV_;mQ8$|cRLxeYPdw5Fb2#+(W;G;b~KB8&JF!m5Iv5n`s8@{66JM4sSS71X}r za+maAq&?s|KA1GEnilFb40cAFHYOc;r_*p|w02|Ubk=S3VPD5A40=>gHI^IP+PKwk zh#sni*}L|SN}KBUZ9(+Q=T$`l`;~8%vNO;u=kr6D*zQT2qNzK2&&r9m(`BA|r{#g@ z8FQGCB^HWCN43?*VJwp7`D?n&uQjL8<|?ZLD3_8wA5YnlPPRV&q$3|Qp8EmP!+t4?)~F!$ z^H^1e3Dr_sZUEw@?wOZG=tW{UmTj%p!z5wo#(e~!mHceg-xOq7-=-$e^Mj znjhq$!<6R$vuAIklUZIE=ZaRuT)k<^oOyRjXhf?hbhc__e(&v#q_VI4aJe}pYpi~s*`q^IYq|a?AHLS7X-^-w@^>}- zVG8fq=jr?8_gruOZN6BZXu7B!Y=fo@m}q*#YlR5(yh;m+&!`yqeDO+|TR;G7c~Zvg zh?IpcIfUiLw7&%y>lTS;`Fn-pMIXWEnyiBzq-a$ltHqnEZq)akQ++CL901kW#!EEt zfJ8sPC5EPKYEK7r4-Y3qnrZMaO{nxy51m^^;&|q#vUbHw{JOl%V9*li`e$8Oz~NbH znbN5PLn@$SFx1(SV7hHik%Le~;&rBrNmo$!R(_n7N9rEtdx?W~4q{Bvnk3)2T+22< z!0XSS*+LZqrdzxxr9Evx8EKH~>r3HMyvNbcM|35v_JxecpEUIi#QDtP=UFnB49($? zQL2yGkO-XS;2d8uYP>@C2u?HYUd_`t`LuGvRqzEq+S`9Z@aZ*bGxNKm?ILGKJ-AWT zjsh;0tc(w|QKtt<2rG@ko~3}%%ZJ$lOxXu|n$=W4@k06^f8Cz`!JR&Usp=|?8d=(z zV|*Fml9|DvXGq;8?gCA+`5Mb)XUDQ*G zdAA*9-ltXc%G!2(>{a8?cZfIeZ4Tq!CKHru4vqNW9ReaF9|X-0t>kpa?k!DN5VRjh zB-2GBj3!V!&_-!q%^Pq9nx;h;DGaqez)7z66)n`1oFmKIRp`|Ur^j_T@a>xtdH_|u zy&*Uh{eiVdRK;Qw_@I5X1hla8M(GpMCR{7u8_(;u1ojD6&PcXg@}`gmCz^v(1KM@8qs@{ER8%O4d*O>nG|`!T=m=e4Ghr&jHs z-lDX&bC;5LE^4GEnD)swp&W1IN$&qtQjV|Pr4HFeGyP=3{nV`V=BqN|;Fr(t7+6j> z#n)EiWFz_YKwVOu#=chqJ?zV?PDre=ei)su+}Ko#q227HTPDb_Kd5%rYIExadk?oE zfX2Eq0AhK4GB4siQbJbK#%&o@jPG=SX7z);a+R4^SKrUqU~_wW5IWG-f< zb9SPGf45~#Kr-4>Trf0%JovY+?XUrBi2X zMKc`@mQbmaKF$o94N&f%9R53gR7> zCaqU=Mn&PrFet&~MzSEZRv=C>Gz{AH#w0wIAoNBb9gdH*LeSun@!NJrp1<4Lh%TDR zE#>ySgUzMzrsa{rSO!nK*ef<))(;yQI%nufJ3T5cHCnXe*UNX3Xu;75OMBd5>v11Q zrb-Uo$vRqfqSPfcUM{N zlPfP5eFHRZ0!^ob~X@t=5u>iGHwe!8O^p-=}C zyAq892P|bSS!1?yYsW4O(P@q`N(ag8*MgnY@2`GdP&k=yX5WZ%c=`TKlR}=`^MIudpC|DB69C z-!@D3?Dr^a8hyWh&%Am&2GI%RYr$6(^O%K3b#?2cdvM=nmYd(}!t6ioNZz*IjlQn# z{;0f+nJ~i8P19#EPuetgWyEeS;3k48JKZ!xzqh8wraERkT^Yk<#04MU- zx)TmJ;*a+O^Sld3j>sbkoB}*Cv4M}#BLxQ5!R!x+ixwF(soZJ9U#LC>)ShgX$aIy| zWTKjKyWl}oUK+wC=Z`7AH#Mdej{_Yh9Q?W3ux_=>y6*a!nortqwp9i)O&(|II}2VT z%HDj6cR55OJNEh8pAo95R!hM}eKR@40&e?!8|p4YoHWjoYTTXr@`ck}EOA0fO-Qz* z>st@)k&jE@>-WMI>U9NhshU3)8UM2%_X00QjA&Ka{?kzw|7eY$phkEro#hG1^2FHC z`T(NVI;VXY$c0}^2HAwB66JSrmhxspeV=k%%j()w`8r>La2Wj<^om-!XP!_oEAbN0 z!ZBS+f0n6b*){nIsfm8ifs>r<&9mCWkEkWjcGO}Cc)V7RS48c6NOJ|)-A_wcpVpUl zcAgXR%oaaPurxisa?zZG$;imqS=gp*+QaJD)KG^kVGH*fp3y2n`dEb!zHG&&LrmO> z*`U?AsG=1~&UKjdEO?9#$+ZhQzvXdEam~k3YEl4y6e{rc zKwNcZf!oQQwHMp*mu_|7n$TOlZ=aQGDz69hT}6u_eIwzEY{C!S5NS0l?(UIX{vM3N zPW0&`ILzXk)r2`9tj@?Y){LEldQQ=P`dBxmRmI&2uZRj2PyePO)(m2f5CU?Md_69; zyM@J6QZrMl>e=Jd#$umJ3RK7iii;dCnuMU*6c{MD^oJshn3_BM|u{(huu520E}UP0FWXb_OuqHQ~vg+ldI5TUpGE_5!fGZYGJbeSggFvp|2{Glbk* ztr6M5*u;OI?4XkpzumyG^B*RUUbA~A|E9J3+Q015Rzo{>^FUk#{Kl^6Xx}qO6yGNX5ONO z;`pY$yE|uLVPTo;wM7W-=Nds>jtRe7v$;&WxmM3-#>Gpvsbxja_aV_2>t*v|s{(hD zf}x>ueQ}x#OH`JZO*uh{-n7eLQhTx?1PsVEknk+nNbC~0Labi>aVUy zNaZ@D1q9oY*;^GyGegzX1GTyC(!$kj{_II`-h``xVWH@%vq2(GNddLiJI26xeb=1L zY9qt)^>5IG-$Ta$i`&`D_w280JrZ%!%vAAP>r+z=_EcLx_3y*Da9*?Lx(S=3^>;mm zpqI<9z?^0^o_X}1!P&D`v|?VhS#{b6SzFxC$R*`PY?sLgT{oitT=mW`u^}k2t=f@& zmmO5TKXF2y70!=t1ZWvV*_60lj6B>4SSqdMy5vxvR&7~&&HX#zPaJA^hMSC5qY0DK z_39tJy_MtR(q#1DuDV!bk2O!KOAhDaWl@1gjpxaU!L&0KZaucY>`z(Iz)lVOdjuXi z*P=xm=DR37iHV-OG9D%+uU#$m6Dfivfqfy2_?u}_P!wP!>_wB(T1L4>J4Kx;@#dgcQZCYDa- z!WFM3#YVi<#?_7Sv|g8W-QpXnUIbnVHWr5N@5yhKsFyT{c2JAgU|?@|0doi^LQ8e6 z_IoCM&c{`;ER9`4r?>jXKcNJdAt!M7`u*YHbSv8nH>Om)}{AVc1%DZ1J!gsutFFSGzo_?X;M^c|DDuk*hb z9R5|H@V4du1tRITT_OLAPXOWBY{7S1Q^T*`z^AvgXaL-D0u)k~wApdsb4rI{VDf5- zYb5@&JNf-8tN5=&B*e?iV*eUG+HPq^vlJzJf4q6Q<@>7?THfBY9Dh4DuORvFfA?=6 z=lxa&^hFpOy4%_RE6VNndw5R}g2t#!Wb`xtU;f|!f8Yz%`R7Xhf06#JWd2`L8bmAh z_xedMEzL?B=2s!L>3%OQT4aW0vQdnyP4jW=+sSm^A!1MDpKCK=aq|T@Pc) z=<}E426RXbms?WM&{lkfA~etmG>%xj_V!Gm`MA;){UG?7pZ|Zm@yXj?fWp?cfPRV> zz(rPUa0Jd9L=#g}X&IR{oBmG;J-&Z+PA?oR;V-!9+f@qNuovGh;oElq?1W#WP}+X9 z*l4xV#tYDBZWzr9vz}4Z?BR z1BEN`iRe!8aVn>`t9Fn_FRo~Hd!#E_UCZg;s+)g$(00tPHd0Yf*UuNt1=dP%dB6Q~ z%Q<2r3@4mZW5PhOcVn+t0+xjo!GzP=lUj{=dT0s)C1AWC1vnobAJtyZjjnj*sK092 zNAb=IFj*nndvH*LXg~--+Qj)f_r0ARNBPq9pjMDje^M1%66auC$d(1J$5CggDU@~W zh{R|8_4=0d?vT9k!~@D3=CvRCpRFs@UDaIoA?;w0Ux!fw?jLLqC{c`MtEv>P_E?>v zMY(QY_u!BrrP{!KP;-{fqVB8E46b-n%md8FrrXH83XL^q&Vt+4I@;eDYgT$lyH%=g z{6gZ`)+y{6uDvL!oxIiUd|27GO0B8emkSZNyLj<=)7JOn-wqrm2L-jY;J*UDLEcUS zN)7S{NO zYA9sfZ&Vkadu21r-vKa_NWm*UmVqA2z39PhqX!f>Q89Hj&1VZyJo;fCgqM0(*yjb% zRpt8m?S4ba%P=mCJ;w{sy)|l;`Rdu@nlU(~a_}Kl8an3LggG1zPcs#OUv1?k8F)^(r{t$hDsCLYdyt+(J&j zAw_mSWS5)h1KBIw#dDK1728iZ?M*C~S|645*|=015Fp5M@8nvkVQ-;oCK7`L(uIA6 zIb~Fm3Gn!RmiRx9;0+$K^?+BsW!O&cuinSOsTQVRFUX62Rc;s{W+6>C^%Fn#{ZFNJ z&u0uZv>6y;nq50eU)@CoSV$;G1rs6Ahg4TMEBwdfa#7RUpnjd4^Y&`YcI{6F^6O_J zdOk-L?&a0%8z>g_l44u^Ul0n2ihfTuFXP*itoWze(vyWy3}T@9y}*o2-u3W!3&PXW z;`>P=@Lg$_y1CuM%3@VZJNVpJU5BO*dv zYr%}!DXr6@y~5?90m2E$@hN71=nAsAgH_Hw>YNVabjju4t7p-TMxJLvKj`aO{r;Ym z;-gU23^5X69>te}inaJz3x;1XEGrPY>YDq2$6diM3A94F?oVSAu8`{ZR&>D2%`JiHo!&kbj>d(o9U1XP~@AILa z++;5A8V+l@!Azf)w40r$H#jL$5D;{d{#fMMJLECMICaZ&9fO$OMH)AKi8$s`gTHFr zVC}ZJnr6xh(Xvtj`)UlkwSxY|ch&C_uV$~T9}RdRPk2~)B7V4S zotbk!E7N4c=#aCozdjBh4bv&7ts4~#NIb1KO(<#L9wT9>#n{;BE9Q@&l_D-!@Tp`+ zS#9QkOJkJis$`knNO$7_VsVbSeRevmXhP~*0}e$cFQIi2r-vINjl$tL5Zy9zlq&7g zFMe|%auyYMCwASTg?3i+(j|^c!yAN{Fs3{rdGIzU0qfc7szmpF?CwTIT^>29C{Vf; zMnls+df(OST&4x5v}uQoQYUR}XqAX{V!J0RjtStx{1?TwA;OpR2gb$d#^7f9FVbxH z@1z-qgAailI}+n@K{iU9W5cc#USnK!l^OX1i@#8xR)VIsN!E@@zM6L>vU60f8;9i(l*>L)6 zuH%=dGfEZc=zY*tBiz-FdAK2xMk81bLF0FQ(6b~Ymjq8jJO*;)%PLA7EiuVuwN=r{ zqg&3=2iH?s33^9t2&uRW${ng>aCO*-bz4BGg!A3u{$BsdI=pKjH(;%zq+)jG$RI6} zhv_s>_gT!tJDU#!MyH+~Ul&_F{N`vI-`+N%<8DakcmS>qF-M3$y>XkB_g2|YfuFho zrK%>`L3JC?x*wojqJnn|nAvKC>^RnL(HioAHDnBD9jv)ZJD*gw)_lQn*ZIPLg~!0| zC0}#+I-kZU8_kZ>dVb9HWFa@7j^)4gMc&$>=?TUoz}WtE!2b*<1+fbm%fzqOp<{Qa z@pt9zwVQ{EQz@Db{#?Omr|VyU-sujqxG-F+rz}G5z=N%kW7QjP zu=sDOI{!1+mKi9uk$#jKSj;vqtF)hsqIc$IUcC z+2ia@ABBU3IonGqk&Ui>>h2 z8dkG+J-VmeRt&p6V;nTzC4sA1BM873-G=iq36e~orWKrjLs;-f7IvAQwmylcT4@YF z(`u;SE^-WZjoTrvGAKffv!>&PzXLp2rf|5KzCvP_11@u*(@C+Gp}G-Fzu<3K5sd1I z1f3AVJeF)b|Fv4N_Q#?1j5FZ=Ex^Z478HDQ#46WKO35he#?@UVzhG|5)g+*xa;zR^ zT3sJcb*7one6wHmGUJG6@K$Nkjraq=x>&d{xLDoY@IzY;r{u|t z?0L&jNpI^@G!!N+M*1w&jEy!9suyXp#m0*8{b3gn9A;LVAJL8)02xHip@MK0iYO#v zM%_s+M1m!H$z_x|s~Nc((8~7>l@K>1=v&}iF$2+czhtCgzvyxJhvQchY{c+`&h$Ex zaS`hv@Z{d?!%2N}iu)n0C*W)zLykR~z z?@n9sTaH1OJtw4>F<6C^a439aIyVSPnID6me#8hew6ixk0{TS@K(-3G5liaD@QNDl z6?bhP24b#l7cuCzGEW4I@{{0qpzYiy7c~)_h)@QGCN1v*EZ4+PH_cguZ^*qkuK(;w z{TXK6F~0I}9w(1n>M_6PfTLhw0s=4*1P&p}fCD*4DQHvfH7{%OQ-7o@mv%<*Mr0zS z_6KQ|*m(AKvV|$x)0*ajo#6?UK6Fd=Ye{$^<9U|Yw+WdGc%eg8)gLHi2?~DA0vKBD z4ucqF*ln(xa=UU!MeBFx8o>0oXTCZ)|3WO1V z*YIu-vp@&C#9?}7W+Tu3bEPtYu>Ok-D0>RM`B~r_vrY02EqDv~^AdS8D~qvXn54%? zZTGP2fvL^xEwcn(x6M`sjh+tcg+X~i>uJVPog4OePml;tTkpcM@m^ug#rFS(rkeFL zVpN)~zfH(|xfych*5u#w^!(-^H^5WnR8y<0$03$mvWQvR!*jVo=aL0zYYLsnyD;uB z^pAGEe-`WH1H6Q?EO&)_{D}bV(M>5m+dwoLN*BzA#x% z8vx=f=0l46f?XkD8WL=;R(AOM5@WbEwR1n`x+0jdV)H)FCe0#>)F<4L0(>aqTYqA$ z+}~=^kJ+o6400Ftg10Pf^b#;r0x@dEGE>VsnJUxlIS)aaEJO8{Pn~}dP^MIdH$cx} zjY_c7<@liH(>5hqL|lIKSp%l@)M)?x5}!^@3`LM-TynzG8qSqX!3%!lOe@={yzxdc zk%e6XTiJfeK9grif%p?LNE*_feHq;0zmzrY^bx9`>Q=C8u}x+F9(k;NMcYG9`+Aa~ z)Q(NjL>Ngz&*+3vC{Pb5}5$0(5vb0${+7|gaE2`>4#H-JtEE8iT2ww2{ zA9?U3&TazU@ir_aCAw*HK^Bb%CkMsd**zcWw5v*v7;rHz3wCRufiZUYO}!4I0goNnf+g5E1D%INK~ z?cmv55V~}!;|otPoY@?3fwUWCb9H=}PV`ze9+@?S`^^LV7529aXEJ!l9gS0C{2m#s zJz+=rDItTLw6z2ATotHPh~O`%Q%O2| zK)Q1S-xLJincG4^BcCm;*sL~IXf4`ojjmU&2h@I5d^sStFI`s+xls!&M1G(IBtbCA ztAts=hKn$b=L1DGTJzpqNBF^-y(2Qay%?)mAs^?@jTQDN+cOwrihy%9%@5+8Senq2Y&r!AsG1Kq(OW2Es;5a(G;cm|+^a z13MhVH--)N(_kx>4ct4h)l!YHX;xU-Sfa^_Z!D3o+rJNpAld*9b*LM1<7-a;XD4gA*gss91>v?U89 zTj|mDJfNcY#)&ZyK5;>aj&=lp@$-(_j#ca~xC`~Ab9(?-;udT(l@o5n%Bv67P*ZoQ z{SUmPcKjLo-F^X(HRgHnLpZ^V7ag!YbvVKH<7xnoNMAP@$Ecf_xR_yoxC^&LVZcs7{2tz(*tJ^kg>I=+c)1!!_bNw2%Oz`~eu0+X5hb$Z<_LLE0uZ&b>AgG zjiyTN#$E5z`J8QRZzLhzMGo7@jU+Q}& zB|-=Z!}irA|Fy?G4MeHbE$gQtG8J~b`4VIoZ8w6Phv3YQQT+_elD z&x%c-dzaP!7mD-|;ungP6V1UZOq2AAA~iRCNl>$fubhruOQ|F7;37{Pm`}``M19)n zFk;tVhroI4Zj-aC7Hbe_wIxr-cS=%w?7!U%8$iMLGf))Q3Uo=Z5soX<0j}eCCteaT zrm<>UTA_P8CKgUrQ{iv<{KCM67m{gy&_{lK5@Z6R+ zY=z%y((L_03<8>I-f8yj@!&LdKT~@aD}!jM-c7~l*ZFFpf+F4Fcdc6G-<%JE-SVn_ zdYR%zOiyL&3_tdtoSrX@92Cn)Fkvbe#!6P#oUaqFV7tgDullEA_pPVTVy(*sCVq$I zFX2iBa1ymBA{7cj_aYq~94#|J3fs7Kx-peg>Lwr?pR-20?6cq2Z}Hhbqef1TXFC>de4@PZ z9yV(%@1&4r=IQzEF7g^R@F$pak% z*gtc%ZZnvBKBc%nzYz%tB&$-4fvui^$l~=NdKS2hE!#Gd8RbDCInI`WMM4tYJDkrWjT=2yl-O!Q`Q#a4U4>LXO=%G z6R!|g5XxnZ_|cDpSij>f(_8Jq$g*GoK=>m&@9KWgJOHgFX-3DV2g#pWzi%v> z$f*Io-R=1tj5oX^Wv`QFr{k_A>U>Ntls0A9!Ny4jQWO^naVxkY4mBT=?s0heIwiSs zqc$+CB-HXAD(*h{RStF6gIRKzhdqm2sEaJ>hZl2tQcihT+=?fIVCi>_dQmen_C}LK^;huDOHr8AHTWJ=b65?Co?wBN z>+VrEwpYw$2HD>rT2u%$5v)TRb&V8LLzXGk-yU|+} zjsKy&?}?5IQh-Gj_`I;_4MvvnP%*k1f~zqgenJ>*$C92OQ7%knu{aEdfMu)j)iE2! zXfrrz46j59_xjs+mcv6gF%k)$2HhOzySmeGPD$@h{P~AgKlfKzTW(BZ&$H|qokF&* zdicP(#PRJtuSve#efmtDambjj~qQbS!0SBVkIy6LD4Zlp+Gv zX6S9J;CXT1c;2{jZ*%zgRNO4XPp#dx)pE}CX9GOen6&FgaW2#O(N8Bq)S$Aw`@PuM z{1x{r4BrUC8t6169ObyoTqk0(p{as&?)$Ny9YJwEleT^lCqC*2+@@{5B;7> z-e`p5V>n?BPX`{A5U(s`^LHjg-Xz!aRm=1J&8}3pg*b|0VjHDe%2>F0oYbWiYK+(^ z6qJ4IB@Vdf>}GND+N(4;Soqn8v(%>X24^%Zf~}Z$8K*xPQ}Xk+H%DFK8@De19BXIS z3a3`Bwl4^{{h4;nkr4**C|71I;&kY@((;%kE0kE5Eya@tzL8XfZv?|pQ*v)k;D?l= zS}M{oBP{4j)LD_B7{C6(XNp@R8g(bG9n~>+W#g;oaCl zCGhn2`}Ilc^!)dKPlS9;Ghg$_U0X~|0UX^$v*Oe`-rHB%D2G{hZ%O_U+0G110bd1@EBR47(5K0pF)#h(h0?6tG`YVoX`7Dtp`t-++!_u)Tt!1r`^tuNg7 z*8=>|C3g-gebw@>qbzLBZf{j(0I+jEUMaJTyIGhAukl+4kd;e#Na$(kt46TI6Ru?G zhQ$Yp_-0NYTFwP*zOmHaLlxM$8^aSANl`&1E-~4p02^ugsKv0ElnMj7x6e%S;8h=T zjW>3(XtE<^i$aFJfFR%?8W66xhUdMY<@s}T7*tp+}wU!22o{z^6l5Ntr@T3bH!2g?d z$?O5&7>kVzmGJ1MNk~n==Ni&&togwL zpX|zza0CdHQ^e~)s5_K&h%;MmxraZ{{LjYHQzsO-FltKS%b}yl1OIG$rP;f%?`07` z64e5FtD9>Q@80!a3h|N|y!Qc3=iEode=e(hU$=hgq*w3iGqsIIrg8Rix8#ihrTIAe ze*E3{Uug|9+?=T0=d`Co#^XXvv@`Dw;v~qx0Frha|LcH|kUB`xcOvDi=EC#qU0js$ zlVOtkL9mnA;xmJ+1Pm4JpU2}xV^QGEBauP!XIP3xHG^%22tsz1A@A#m`d<9=$hi8l zr}h(30nBCEP5nGto>JCqpQ^F35hjK59-_i!xq~)xFgJ*YLRdmxHbpc$@>vGIa-eN7 z_TjuG0177XvdrRPcA`^W09B?DN(!ldYW&!cmzC;x?_!R*%z`Yhf5H&roLit=YC}6n z?V!pFNKLo#YFwo?j2a1ngANRA0D^X0acN6Rpe6d$&{V4EKU z1+JjTmej_lp@wS=Bv0r&Hi$zURbHHxUxqv*g*A_h@{gD!RHkTr@bTZGhep7$=&VxR znp%|52+NPN%#rhuQ_NIPq`1xw4Mt>VYm_t7t=5rLqa21%-zF3{>`pD+i5|8#19sf% zrZ2x)YiyO6R($+CAg?rJdy>EM*$Z_dKNkmc&m+BWk zwcF@LzxQp>(Q?~sJiT5#M+a!pj_gUxT;O?;(^MA%8LW3ar7Je^&c141`_F- z7&^A1uf*EzW|i*W7(p`xKMN2bxxxq6fG5U3vTebpGzjXD$nz#zE0zQ&$z{oJlwx&r zRTuDh)>?0@gc$GBD6u#yv*nVO4Q(|2)}SXrm%L(W@y5DiPhf}A=-mf@1FK+%vvD$z zM1`8Q`Bjv&8i-Z3G~I$9oY`(EJcLHeKTk6vkuCP{M0F(~df!HVUxg(|bf_6f`i8H9 z0IauT?@B|i8s0XMH=st@;H-iEod+>&PsyJ&IRyhG>Rv{(WZ-}>2qI(icu z4O1JDs;gFE^ql+EK zysNzLhtAHfZ4XL@X8@tWi}{8&VCWH=&IJG$LZ0bCsUS9}-0IsoLRV>Jn7-JQZ$!%F zO=2^Mr&szkedJ(aX7I${3a}WnetN1FyZoZEma@cK--e#{U_xeT7uM&T80?_BHguiN z0Y>OX|D8J;whRgSe|J$F3alHwMv6CR2*u40BeClws9|XWa3#bsm}0w!ulkLx%H+@?hnW zfMn%r`7RWRmX*Dhs_`_qZs}Z=5ghuiY-w#pvCwHsF=bRI6WW}eAHtZ23(+y~J}7T^o9>Es7`4?rHvyIlGW zP&w|R9q8YDU88Bcn&B@2ZxjVp>|3RjBgr38IvByLuC6n~E|D#`L-(v94UfByA`<|a zWV>keJ6RP5#(Xh=dp0_j^-=kdX?#{UZ`M`yihVl#FA2lF?tB}?!gw}KZq!q9Rjl-B z%NO!Vt*H??YNL`55-BPU~;oMd~nkm{kyO5>uXhw`@olc%o!=#TE? zV%JXUaYM258KSA%@-M8e|O+Wo+Q^PV`jTe%;co zJkf>+sg@_x-X;BrcEl-$h+vjE({Sf?hW_XB^JVf{Y80`Sn`cekR{V^yQtS>N^0+mD zyaAI^&4qMU8Sh`@)*3cx=F9yaHVdZAKXk_z6iA*qGsvFW!KP+s>F6M!I7>+rIUG??`W9wzaQgR#mJU)Wgq6TcK2TwoNm04Og5(ew+? z*G(4J{x^=Hhi@8ElFIC;;6+FqzF2ww9It20Nx`Z#>}st6fINc{uL?01^FvV#;|Lv6 z44}%!)%*7-XWgsxn_zi03Sfvr-(>n3QtAn2^2fUOZ3Ywgg$d$ZqC5rJLlv7!r1Of8{<|X4& zHPy0KrQQ*XTuxK2-w62@X|YP0ZOD} zll1D#g%L&6dO{T|9WDfXW6cd%R61^HEIMvD_wCArBTn#y*9gR*^T*q`d1rz{Y@e_t z1^Eh3l(15NK9#JAu|HB7(fEw#~>i@&`j^JgwLO0rjG0 z@(bd<_wMf>Q;kOATLIa<=C0lc1mIB|2E0M}#kMXZ>ss_$)jDuQylQfYj*~0mpob(h zAcaa-GP4b}!8TEb!DFZPs!u5U>#$3H6y4q2^&P}hf$xoKbss&#`5{bxv7&aP2(L7C zs*eZ($=|(`-*@sKIi@JT0mFF+D?wN8)s51sgV3vR zc!f774rx@R2~Qcu%ZDSmL#e~@X1(D{3XlDsA6J|Qs7Q{`_^CZbggGA1mka>echiYf zH+McJI}_>_YasrS0=+v-O?y(5Sz_HreghUcZXOMT9Iu3?lQdxnaFwk+EOs!hge2H#jNj;pf?rK>x-MQd~6s}LIF#nu`40u=Wpcn-7c)HJpF zoxd5yo9Q^R3A#B;kyNV%w-CLm8bDh+vURJwnB8jh9)1b5*nFwV97GST(F5BLgqnTR zH_)qJ_!RQmoV#-od&5;#HoiGQk>$PBbdDqK@H&);p7iQwz)3n-vQZG>%MwYE-N@7z zV~)4tV5Y_NifQc|1V4`_qCra7iA)#Xn1lyN6LpAU0EvwnW6UUxhYnE7K7^x^hD zomQhA_B1J}$}0)W#1Nzvdu<1n{P z)FBK?(1|<(!-Ay#sNp=Nq>@#2ffEt;R=+QjM}%5MQJjnMm~c~}eS#E=P$Wz%l9p`2 zf%3#>z>tB7fqwoX@fSQ7}@-6 zyoZkg7|a%y-~l@~-}CdDv+oZ33eh*tNh`LsUGh=S;Ct5zoP}IW!>XUE&IV$y!b6-c zS+|72a&#T5td?d^Vt246uhQ7MKQFJb^fh%)j5=`&*#>&_HW82lUgN7jP_#y(j=n>{ z*;(*5_N1Pg1}$wSB4wxAgaS+?6)6-l(Q_Bcn%@@THkA`lHYU36-;#H?2Oj8U9B6-^Ke#wC|yWNU0W}0#KQ`k z=DVk>j5|V^8}{Pa{eD+e#;8+|R8epBbvql{CmOW4pK7rN%Mux_9zbZmGTAb|9R0sq zvUV$fNI^DxITCRF-8}!jW9SP$0+%`}hgcU#t*y4|#1U~7m&5OEj55)u(1uH{Oh zQogvZvt7L$?6McI*8750*h-|o{!wEU%kh}uYk0&~XkIa+nhkIHzS-Q&Juv6b z+AYnt2;3achd(_Bayg1vVH82Fs+GWlYz7EoBU=fDo7~E|b_kThnSb0|AO0Yo9nhn9 z6Up108P2&=<25v|l3$ia--`<2vPF}Z$W#1ja7lqPrpc*8EJZOhn!Z_uWawJp+AShN z-YQ8z>rx&tr~X|UWpz~))T^4p+onj+de?gV_5`uk!M3cGU#gU2H~wH+gKjeUW+{1> z;nx@3%@8#7c`NYKq!aD8e$zjU7pGs<2T)DoqL74*=)&Gi*iy~Hpp-#Q2OSmgqkAdM zUSA^$zNlb4*3P7u7sreg^Fw3X z&_B5E9Bx`3u`xK11?7um(qG~1RA9eO2&k599Ts&~(KUp6$6Y633GtP@GddNN`7ge9sCK|5x0)gmxz2 z64V*}D-8Ju+WlvtxfT=kT+Q@Iu9g?0C9ojW`h2)UjjYV5k3*3;o(4Q0NgSIX;oWOT zOur}S+JjHC_PFopb^hLHYUFv(&F1J+`{>@v=ayxVO%ALRx_Ge79(Az!zOM+ySQvw4 zZ6Qx%&#lN;8WM_nLsd{xn){abW6myC^bNXaUAZ6~S`ezDHUlUr5_xYyIlLIK&jasu zJsMHkM+?r&ccaQ1Br#&IT3`>O9qZ zp$y8f<_@>Pc|O?%G?JciDCgOXAf{0Du&k(CiRNL+TXL++r|Ee*EWg4u=@M!Bks_~b z(J~jG^4EU08~wv>quyaozVpm+ z5Y2n|MkPB|4US>|Ii`_2jNO)kU$cdzikt?Z?>MEoEV08LN-VVe!KGXG5t8b$v1QDfp1J})MMq@b5x%wi}*C< zhlu7i&6{)8l&(nMfOxpqQTY-%Ki)Y`^@@(0NIjq85zx~sp0vI5;l%Rd#&FX(4gcUQ zYE`y5-mM}00Ipe?b;!V%WeY}L$GB8dW-`s3)xaS^)SASwV<+SVeG|q?u++MshC4Vj zUmQM8I{(C5lH><^)(2CmSc*WmmvwGZyWbCaNCiF?b7_11&|nv) z7BxL*oLRo)ncVVB=&Ngx@u&!^Ji7d8V7UU+ZXmiTl< zal*X`szLdFG$g;akPB@hK4(ew<0!l*BR_v+mG<357YVSnqG@cSn04f`;48SH4E3yS;d)Zkv>2g_7ZAF)2EU*Fbl0O9qnlH?281@!;@ z>laF7ng`SpC^D!R!viL2eJ=05I|C>_;rHeU4oRPQ(0!mPTug5m>6?M&L~6w(?3wY2 zbB7EDDMaf`if3Q}VAJJMD)tvUQFGYs=@87m0zGVn`&=h^f#qG%6Hd%0dvUoa2Ok!b zH}R|&g+O3LeqgY+!tA+wKWv0rx{a)Eecq`icmV}yI9r(R}^7$4=%t=$c-jUj0|YCYPEbpna5*;)gmO#e&-dI8sU0V7$sOsg z>rr1TxXaN&0o25tbhYoTCLLhKkWV7@>zvrr*(pHTtn5`I4hwiv9-lbb*lWmLt zDUtAV$x>ZI;~}2w@_!qx6LJ1(GQ(oDs5 zHSf?d_tl}qxh`Q?SXk7zZ~j+Tjuk9S`9LIm4(iGMInZX$dxp`!P3OT@T2pv-xmap& zh>nT*dUj@~)^nls^71m+M+RM&S$+dMXQQ4}?r za2r-kq>$*Ev^HpnDWJ@`}h@l<(VfFlFi*d*C%NxMV3c+wdNaQf;hgxHwhgKx0QM})-)y^ZJALqHNQOm{1< zQ(kldA!n@4%d|*weKG|kHt{hNpzWH;&pxLedw~f5<&d;KfN!j(%ZALKpk|<-M@LUw zB-|q((@(aRmkgFL>Yg4-nX=@v<~O99rr&GGW{k`)NVUnQuuB+;3K*1{s3Kp5q99Fsrml}?ZnR6g zc3o=6MkxKKVtbvk7-|8fn=hj`t#c87=16{*sLgEOi2N}~^>5cu8GYMJDq6xuQf{+LOA+<;^=;T*(T1QA6XEE> zE?;_1yuWg^f4);@yD@b;0|HZ5@Sx^zbI$Erp;Be2h`jIgW8-5t`q#;Ah?A&>j0peM z+WGsNyh;@gY5UR{X`jd@-u`w;B{Ln8|FzrNuMr)XntD9f*=Sf&8gbxmIvHz;b0z-ra*Jd# zs_qX_Ac5w!T;@vo9mUGj9edQv=td8nt6m>&r(!iY5pd1NG7|Uszd*0dB!JVuZR0wklBxFkOmV8!7KNh_pE16 z&Mq%yl)ccB5BTwEt=mudRYpOj*Xq%Z1H22b*lT9(FrJBOEuG55g8h;7{A{+Kf61WQ zG4`l;^#m6{!AiAHakTpME}Iv;?`rU7L)z7NN{v1q*W7lU11+k?r>DeqE0Fk#b~;^G zZSJ%Rwx5>29^8=FOJ&KDHhzUw1k$L1w*=};zTWoU(X)jG#cYlUWoese_-b>utxrwg zqw6~YJ zo(T)TdOiLuiY&*1X6J(8a95}rD-HJCGwG`m5i_*5HQV4wsBp_ul%io%pDY@`DA2w!^-$eO~zUzQ;1!CcY@s*^_U(d zZX683v{+N34DzFnXBmtkg~?jn>WyGmZ%Z-aPE+EJcf*M2Pa+`fhuOOGFW=Vxty24s zO`rvQy+hrIlL5ag@^|yUMutkg)P@x24D;mK$1uH!xSjarC>h!a(<(J^Rx~y4{%-9Q z;cTPQQp=CcTg4HVA3E`!s^?%2aGQsDFWq^E(n7;Zw(enQw)zP%cXethM+R@@?ugA1 zxnif!d=;cY^sJ?x;8!bm9i$1_c>tT$MKVS3useyR;t zs|g>w&GwKM;p*nRn_GS^8@O;=L5UCC-7s(t-w zak5h7_>cbxkC4pQVq5&QSb1`#+a(e^vo8ux@PkMt;_dlNSnnQ~sK0DKSJ@+diHIksr$?QR zpa{ke3cfuOImyDF6-wZFkDYQhJ zfquy+pTENCOxUyjjpFS49XUO(S`qd<7p}EoHxE|kDp1n_lxNIvG}_Z)IHxFDVE5o! zL|1nKDU(*!ft+%oC4-5XQ`%{)^Tmp()^<5Ktha2Oy~nF*FYEaOm(B+K6N z*gZ}cab#rd!PD(G*zK;X8TNdIF0IIm%mkg-LU@u@R#x<_a zHRn^i#;G;jYTfk5u)<14n5Qx0zHtA=x=mI1`aC<2{RR5{@{?-{nAE)WP#hpHJ>$Ht z-2x#<{kxYr>HD2(kLTitIKx4Z<(E0x(w;4vgA27Bu@zuM3pBZ~<=rhV{!-%^ibQYO zrowdd(Jg2v3eUix+>zP?*~Ajp(0f_5bjOI1uj%T+eAC|Ah<+j0xnso3R)t^tL#>G8 zo}6dBRf0zW8MVp7=C~QbD&oGaNmD{7UElt(Yo#y1l;~{tcQF$K%qR@=W3JD^Rbuu zePc1ZJ0hMh%VZrcA$P<}NE@&jOFBj)M^pBC{&sI3GwnmQh?SYGXYG23yejm@{-uw{ zy2KNmB5&UmQ9sVR3`3M^N%IKHjPwZM$C)*j^I?tTqs1EQh^Q=|j+IGdRUeImKHP)v z7IY5^s{-??7+O3RNJsQD2ScxO$R1XDdRszs7B0VOa}kQOurR9dvfaC(!AKdSBLBpr zAxM5Nc2prC3L*-oS(rYV|9r~kVNti`OuNWVEWCXikSM%KIdV37@NBdFAF!)`#eVI9 zubM40fpWWvzr`JlU|^=A{PbjGG$d0No>pXp3+?%@!qq+MoI8HSD@I)Ye1#|Q*u6b;M*ZM8rzUo; z*6tknmbANAxI|#Gj&4}QJy`5ydoWIInYw;QUV~1DIPB!MC2ZMUwy5ZnaskyBtj%c6 z@-AYNqbbRr25^|$!UVLB2lG$UG%DZ|!mi-q=1Q5LG<^>u>m2)pzfF%TOit(_)_Abm zc(3W&fU&VgS@MD%5(TM;dMI#p-ZS(m$Z<+YJ}1TFmXu;Uvm1_Q;3d^xfVrBf*=34Ded#buZ`TiQC-}kqbzE zRJuKkdU=w{30oP~Uj>|dHLm5Uf2cgL=$BX1_~dj;Rv++?MW+mmi9-w@VyJ zE>KEa?H3UsfCk={nh8|H4b`CQF;@B5L*2{+9L|mnYV3xWy?~f)7C(q&=yM`VJ9%dNZKkC0a25>Q(;c4gCI z>QBM4czY%V{Lo{l=hFK9S$Dkw?7Oi+FPr6nntgzHb!rh?d?OTfQXQR?*Nw_MnEQw5 zd-11dSqx_HC)bKGVs8PW%Q|e_&A8*_2tTI1EHd20muI3_#xbFpcm*q+I~Q{1o#UpA z&PMQA3vK?5N+3U}GqX}xf|fd~vCTIw1G3sDygGWrZRX2Emt5PbnX@LnbG1Z+@~`2Hxs7MM%wc{!`*52u*n0dl2sF&z0O;-XYSr0z~kOC?iEYn^{p%oNQGdk45-+ zcK+K8^8>;5S=)reOiky1r1uHUzSHnc!lf(Z2~Xn*&-M?Y)ej&Z#-qqsQ68)fHwJ~R z{nab~Ry$>-T}LB}yNcGjeulll)fivh@LBNKcq#0~y9V&K;YG}d(KA9v@|&fuT^}E$ ziq?nX+1+Coou2%hyk0}yoAV~IhfOD9{WB+!MPw?7;U!4eL ze%mc9dbUVNJWk&#dN}FrQkhc&LK{Ja+=THX)<(tmsiP_TNfvt%RmevG^oCD-Atdlw z53QHNeXLtPJ(xJ5@IF%76MnfIne&8(H;YQlTvN!z((mI;lpZ7uH2KMavqerniAX>Y z882D=!ZFF%a=8ieip$<0C-xW zy2S2=q?rhHgzY`zhz(8|)Z2Xhhn?yA7RBlZ#sf^ZUp2Ll$@Z|f`D_}Y9qN3(u2 zEpnMRuZj^e1RqYilaUJS*6LxO>^{g}e-K}JhPmU>#|G1GBlvDG(#T3M;?hp`FeR|U zP&_)2UR)MIq0+Y>g&NYi3B^ULqD#vN=)T6)Xriz++;3&Allg!=2@zYx!XUX=`=eP~ ze}fCriVi&7lPDDDy8ra-wRY*@MdWd1UTv9MuDk8{R?jrP(HTWdO3b}PuVN+nx&dX( z9E`aqkV0qM^jkEC_gjs{C7&r2ptRp$G+@b)D$Yg{lwqYJ(clO&bu!1_j;Vl#P5EzwIWE?ac0U zM$q(Nsd|>K*-{l4gLt6QP@G)>(~ zETH~v{c?ANlV4J$ zRM3y#${EW!%`t>Od;FBqdb^xPeNOSjS1a)3k^Wvv@qAD~SN?1Nmx9u6Z?r<1Ar)upM+CA9=d@A{LAXHj-pRUhS!q7Bt9tricseAq+j9Y?~C3;vi5A6hTT=l z1@n90TE7Mk6G7PPXSgz{=J_7?R^Xa;o){t_| z&+#ewD{}rH{yrjRR zD%(HmaM#pwkE`zghqbqiifdaIwi5!uEx227cXvy0cPEWC?oNON3mPQ2ySq#9;1IlV zcXxj~`<(2(Pxi^Z-yP%o(__%A?y-8-Tvauzo~oK&gL`cG@Us`dyP1FJa~(d2q0H#f z)yC*@$b6syRN*H-TQ$)%YXJZWY67ZR)XA$DJ zYgxyqXv)6iX~v?$6d+5T;)^dqcQ5t#EcRn*#QUi2Bst0;ju4EmM4Xa@j^Na0UWr?m zUVnhZX%catcG$Qk8Ff-rFVMO-5h@KiKP)TlVg01*pBMH`EN@+H+xDSmhSLhgy9}zf z!6I3_kZ^z42$LOX4|1t_pj{HNe-dnjQyyo^m6oiwn0;QdhO`>T+uP8;%Szru;1o8) zP!*DuU5z7Bvdd|uaE531#g!6JzS?}`&<&m$G8x;$MHiv5YDp+Pd8@Jf3J$A0|uf?22cS=EyL*UV(jq$sv>9Ppi z#Oib@mVF}rKg2m)_Z}hJK7<}tK1Ic!T`oA*4WfGri0OfPd2f&X7%NW2zc2K0-0O~w zTYe0|UY#9Bjl8qroj%JPMyQ>0!jakmVRS{!Y1C)4t%8yTn?a7FVF!2T34oO11^PO_e^hmU>(NiXK&JEFj#Kd+dP)kL z_%MEqeC%JG=h>BZ|D&w?<^;?9M_KoGxsxbGO(`uEbn)$^&k@Ps?$gu4kOX}ONDpM{ zyHRWX9IE($rZ1~F^qZ7cs|04#)g(r^J>a_Ti(qS%FgzRZOhw&--s^}~@dWCbzVFSn zgm07w78|PIC1mf5J@CW;8v$sf!dK_sg4^oQ?uLkO@o-CLS-T#uh}9&`B9lBM z_!u8myxO?!I&{JoOh;=yW)5-#lmtg(W~67M#~RgCiE;y(9>bmcEySg&qQ$9V2C~fq z#|tjQ$d`<7dhqubs+Q=51LKiZ&npm4O^y_LceBcfB)gB^B(a|fx>yDxR|Qv zw!voQ5o^MQ+D^xYjoqsas-_urty*1_!1FZ^WdL>G*Dj=QY$H@B4CkjBilvKb3+8rc zAXKjh(Rcy52k&-da6#{dJL|RgvTw zErrtX*Zz58Ei{6pgacKBB&QHv94=vh%#~QOM>rts{ZWJ+Rwi0H|E{!%i4aArQpccECb)dyQgJ)vFpl0d;_2*6s3(ksjrcA*{Pnky>`^2 z+}8NKA__Igast8Y&|}i<{;`Eu~~tpT|V9D6FEfBORvz0%8jXy<8@eW>PASviJ1>qz2D<(-EuQP`Xzbz9^y;t z`=D4q)%(}xF5TtH(@9jrLmX;`?)#4+-(izo%-}0mbyZ6;0d)xpcMG9u3qFpeuvBbD zV}(xEgi-`2#5bBXqI$l{-WN8FDGVl#07ghV;60U3x$YfPG$)wDwT|sl=7x1j618Ry zwL6VSl@IktM6DRHN?>1nXY+hISPBDn#fbXIYK6HXp@|zr?A1>J_c|1`(~C5+hkJ&% z(=m~zzS?GKT2?8L(W7~jAdU$)saK_3GYEACNcd{wJ*;jDdVZvCQ?5gtIE!)EeIuja zKo~9Ytf9doSh+ZP)A>5yN2s2IlW0yD_b5+N^DgSh;EeO>{H9rnRlg%KML$EE>}b2U z_Js{+E^Ds7$Mn_5GzOK4B&Q{c9E(^DU_DCsAP zPG$Z~WBfFde`r--cnXE?vP2+zTH>XmF26n?)opW+HRs|Klsx1F08Kloy173jCIe8C z%iLQ}`OnUQH*-oiNi%UdIXO1LtbdyVAusr#q6jWNremj4pnaZauFc$%k!mV1Q2iKn zfsYhuM?ZdBlNx6VE>~V3a0CFz|6*0V@;{w68+N_~=n?QbH&bo7v{KY8N9aaPTte<+ zJTE1=NDI;7KBUgk@g5Vkt2WX<@Z1RAeeUbLud&y)Jne0Nq}|5iqAO11uDYS4>*bJ8 ztfT6)>8?6yhc~e%Qq9;W=;xN@ZBmGH%_!6#~i`Gu-o~mr7zZE~v*6he|=0ykUG@Zok!nkW~rI%ID_||q& z3V7lJW%r#6u5h^uW~VjqwHmN!^I;tHE!sYQ%RU#3?w``_PTf>RKO}Btg^|hktY})J zGyN+tv_)fE@W|_SINt!C_bv>c^gcUQWsoDKJs!riJu&oU&jfPC$v5xH>fB<`C;%CrA?V*YxL z6neo~%|c@Z=U-IYawRH?AoFdollu$N4I*%V8N%l%r%I21%z}8sRb$_hsI)ouaYTB| zSM0m+ z_u?y^Tj`9GK1zkNXJ`bQ@0FQJ0B&&6wSl-u18Q1^?SXK?b3D^VgA{4W;%?^otG z2n}7O_{hZ0p~@w|4Fp}A&x)3 zN`dIdhDBDr{6DU#PSlU|Jt+~dP2&GjfAhzMewOn5^PYZ@-oGv=eFOfS zZd61Hr|fU#{9nInA`pzA?TW^F{nFL`f0MrY4|J{cTkmkvZ-T48Bys+{tKA=?R4y|5 z1%8dV{@2_4b9sDee+(>92M;Wf{YlOL*M<0}=DGMWu;f+&koKF+@ta@z72`+29PMev zS?>SwPH$1lrzG?KxkpRs{$$@8cBCY8=7zK%CW-ioZWq#+&5nudSbi66`Pa%YaQ+an zwS3IgFObYK1dNQQ6RG#T9buRLb) z%x@)KuN2BMoThq*@+SW;n<*dK7y0qxd7LS| zq};Ic{@fLOWo2a{KA=My4FwPH({M_eq?8ox`QaqqRYXf$|1I5bWb&^)rBnFh;ZjM% z-}+^*FZ0225g;Ycx8d`)4Lai4Z4{c#b8c#eK8+8+yqbGe>P0qIGJhsA1$*MK+S+8@ zNg1s#+?y%b^aFdN{{Ihq3-|+jqri?jX$L{xAJ1)*F3(iC-U&nFa!5-!D*YRK+v0c| z*a<5giSg9L0nvN;<*R)4%>fFumSZ^TMY7aFv>VvFxp^_8J@)MF!;-M8r+S^hu;U8X z30kha{=dLCr|yG?xkh$7o^UeYE$8)yBX@`L?aCBhsXeVrldalnV1hnzp4fUouEBK) z=d#%)AKh@Dq=ACNJWDfHCjX(LjgRAi5#5aIn+7`MHy!!B)*?(H8tAFE%i@&+{;#nO=@NvFQ63L*U<0YQm`@7H})&0;baI7Q0ToB=XL zY_-0zhwwh@qAM}MeTDplmC{KsAuZWweSg6D6bPo?PRQ3EuHVH9t6r{#x!y38Sc9~s zgr*)b%2vm)D#h1S=nk&v8^s%Lr=Yn{AJAW)yQ#Ew#Zv<#sja8=%AtJF9{>Zjb%3Dv zbTuVw=io*ji#}0|S~_WVJ|%ty`%p#9_l2#y4`yT%OOFaAw@eiMUEHwynzxmw*4YA0 zU{$vDy07P78p-z-ZKlP8bKjX)L{!wULZhn<@X$qsdfnvpE;Y3*@1iO>A$4kGbGDyv zq*FcBl;H29wkArxUQFxj*AY~5!X^8IRr2uj2-#osmCi6kH*_sAlhXZ+h9f%5hkP?h zy_UsN!qwNkF~*X4=cQw=a=qR%KHA7VpJn5gqdzu{xw%%3Exww1ZcHfG_4#ds&|#p) z*+3_@XUz~5CnZuzA`p^?|3SeA^3zi*rWvqMHCXI@LuH&m`6<87xKFa;X~%TZ$(`>s z_O!)n{9H}dId(4JT`|lAgx)qsp<262n`hf-{MzVJODLgT*yvWHg!RMO>OIW%k;J>m zGS0R8LEo%D75|@xkIf-GL&w$&;D{ry%{9jm5q4L!gIkTJLwA!dG1{NrrhV6 zPh(X!xcNWG zxT=8Z8dIhz+9k_Qo4eQ87j%Zxt3*%QzDi>0RxkMXWzavReM>T{@$0&`aKOKFYtiDr zAiv-1rbIn#p%S%fG}ir7o!V-`za}RqAt#4gSy?I9D(UIhu&<#zlhU+TrG3!Shn3bF z5N(?paZkOW8^0yl`(?&Osg5t`q35dKX*J~+%U8b&DHoDXr5z6i0ASQKyW9|^t?PX_ zWy+gOX7&1mqXJLPEsQ0SRVoTOfKnH*!(SMud^S5`uoJ$te5tk~!5PMrO@=mN6!I5fPJYn+<2wK|tqqI*<4HylBiP9g6lqX$}F-8W*!3ss2gB(*Gb7{Xe+cGurflW7nk{W@bY8mcYR@}w%d*ZRgwGw(mYssLn* zvSB>=D%z&e&~+5RQTmaQqR_ph z6A$H;f6?b?RJ_7CHzyhvIYN+snhTMbctbwpt(5uPtCduES#J4^<7?_`sQk60yQnLz z0`P?FhJ*nHtq*G*Bwrc7HpwjBA=w>KZnV6}U>*WvgNu1yVf+g(rx~ibHM;3&QNy?2 zj3k{+2K`6hmcN^>uQ?3qkLJBO-dM?kzdD{14MHozsF4`v!hb+;nH|rUh?=OElAX)+ zRom=kxSeH@?t(34QZpGM*e%`>Ic{@f<7jodm|EKIbqG@7)P+l{o>eaOCW<=O*}K_M zc`%p&8-6fwu(qeg*@1ZncJMt?U4rTdCrCZ7!VbiN%ybklnVDZid37LhZ=Lrrn}OWZ zD-M=dah8-_pNmaT>_sKdptKM^K=cy0 z3lS*PZz!`_zlx|QIa&z>DBD^^zsqU!^}oy93L`*STGsL;hiIMhyvHUL*R0d46s)1k zP^6+5o;43GqQr+vI@v8|2?8!B)*7cbnxxE` zJx};DW7wKl>-|0Koh;z{iayx~(deF_yNf(3`vs&ac@M>wE0u@EyG&qjToCNg*BC&P zj`4sBBL4zjfjXdRlSGtHnHzfN3XG<;7BWZt&ULRx_;H-T5l~rt^`BDpZA7tETkj-| z(}9Dj!6iz16Ub3cofc$fhna?Q6I?+;$I%RmC??zM=aAAaA)3u|L-?ViC?tpd7^~BB zRYDJwAbq6qLi=S@5>47pnZ0S8>z$(A@5~OgEVb)h1GRC$>|ol?9EJ&LizwNZ{Q(Wz z4Dub8j2NCVpjbub!I1p$5PPqxbx>tGIYdS6+bO(x5QFLjpJslb$4#k%qSkiP*BCtX z0=>{ZZ-Vb>X#g6J!&jQ}MJ`HlZntF2sCFSqwT-5;Q#12e(J`$}z7v_d>py0$Jand*LA3pX?J% zuXRItOxzl&mU29FsYUl!pd`r%J6?(=MdrjlTOz*0nyxgwT*db+>Mjn$S?HblZr8ns zv%09ydZ>$FnYj0g&waq@`T^nUStY9*t}+vONbN}1`@I0X=PqT8pkOR$ir+J1&*8vU z5A19tr!gFb{ihtia>Jk#m57}PL&G_%;-(psdbxTeoN`w_pod%XhGm^rU9ch9FqB^Y ziy^cux+1${iy#4;%CwzG+Sfxq`tT6_^;iXAU6+2|YV+qn{`Xt(_of>Hb=DoA^KLS& z;Rzh+1vNPq8}<0x{gO9Grx#=nFy7av?5~lNmUlT1p3l2m#q8Z8P&X(|13!M8c^Y@z zHdJ67TnOke4rIQn1HtL3o}-TMJYP@a3&pvW(l20K0pnA)*P{^G9LFs!tMOk1x)TxS zju*%lVldJ$Tk@b%$W4rPF3DyR+3~8XYFEF>!!s%2T?s9Y(U?Sr_%J-d=4fhu1AUG# zM^4&G3W-n;E^A6+f!&%Jtyy3YV(d` zegt;vvH0z1UE=0*1B`bX`Hb}f>&irH?P5Q%C+PwxYrXPH9OFV(_@iUA08OnOLS6vo zig3_5(PiNk$>!}^W*gqfYD!aD7YO2La{N4Fp6^0tyun~VeH&yR!%-(@SV@HJbT!lS zT_x>zbrK58r)b9)a~lIk3~rLY9^(`|o)=*_2Wl8fSzl2Ip4#5x5H+oJJigJaHYQ1( zCbds}lobs6SQJB6=)l7=`C8AzCQ5rWwvGIGTViBx9794lJG8E^{^kLkq-p$%uJ zfdJd>wv>(NW$uIh+=^Nh`$O4>j8bHD$|cpK5Uc z+HKmoaev@a3i9{^0^aIFX!?SBPc{gxwNZ8pnI06FLtes7dVW7Bw3r06)YQ#NFv5wK4{dcFe!C(E)sDGnW=(G$e9lmQU zTm!I6dn`Abu*WVP41SH?+$P+TnA1 zLUse9>IFoBRqIxC3tJ!t`Az5h$ptM#j>qU6D{ZsIQYJh6m$it~yVn96AvMX1Pumz| zOu&wE=!#XL$s(GY!|vogI0V+MROS+TzKtq9P?2lByq|WIj{>lnT5XGlp1!+_1Pn&G z;kz{muK0Y~Tv-qd>x!JNf#F2m##qi1ugBrfHavg-dQFM~A}J@RCU;`3u*-~ogQq~7 zy|GmOv9eoZvas5Ww-S@Sr`cxHJgr+JAvz*J>*8kbike#R$?UvITH6XJg=s%P5LuMv zl}5gm7^41o6LJl=E~gpHhblz%2ilYZMw^-{bu-58@OfizGgpJC-^f=`dnL889e5F? zjzhFb!ATE_TYv)d8on1(Hj+LDJh4{x4BnvlYpXmF;>7-rdwK@NKMKh5GDWP*XI=<7s2EcA|{b+&x3qR0OunQq39ZiyL!IxuusIr*EM;*aG$3eHOGd+ zOTk2*5RSDM{H||`CD{t2Yb~OuXBw`LixBIbl4nZgdHr5_tTc!%11c28Cm7XMhfu9h zl$ue;^9nG&6Mhq7^%*gE-BQCB(e+*TNu-Vfvzq_*g*zX=^g4a}*C-pqkxEKbZ7XdD z!HXohy=hHYiBtUURsEokM9uzh)4V>C&qB0ME2^e{k(`f5+mP5B$H0(iEc~D^6sgE| z5zNaxSzjnH_5)e+PNGRYM=$R4LVQ~>SD_G001P}Q*_nCp83_?8vngjj8VN#P{4f$b zC)HKHXz?r|P5+r+b$8RNwIrOP0=ICj-0m!T%?eC$c_)AF*lG;k+7hGik9n_y;OI-{X!Qq43&i5$b z2F8PShCE$&#e3Yk99-E=5K|Lg>%p7|@Ch_@T3Xz{=LG2o69g}1VA7go?*j`FZ+K{p+dc^qk9QcyvxrnqLcF>jke!HlyQ5Ytc za;CwWBN;Yu+u^A_+ioWa$#G$1cgWnRk)^S?HA02&c35zXaq4dRRnCpkT%Qzerm?Oz zaX)e6b7Z9MfmOHReyxy|UT*~oE(-%_kH5sGU<%=VN-2R_w8l7m3ymr0 zC|&q<^Jz%JqQm?e`dWBO84R%Z$V2M%MYO#c;G*}5at?_I?N|DqnTgQ8^OGO+hW_sSyO%dG6JtCDtMAM~Xhc2_)rvf&BgPuq3J-Al5&(Ksbd>!B z@?{!DFa;!*oxnXa*t9yk{%#prei7UaW`pa26$}qS8H=aNrkPrg6F2a(#8}L_-uTm% zy}ZnIxSw7q{rQXrgeHG)N)JxdU?V&`$5?eyo?flVe z(tuu*_{A0od5o}LqrpPU*;i@l9l@d#1M;& zJ3Sd6zOCUKct$&3gYdmF2qWRPmgnQryd%T|@5@dS&<+uJ9>m1SxEjZ4Dth@!8Dw~QTt+;%4DL(x10AXJ{4;4~ThDqq@8MCIQG_kW=5=Kr)@ z6%Ea~R?>Ta%QKw5aU<#|j+8F`ci502-6WxJ$7~|3^F3mZo?;RDe=R-{= zpS$M4&-1Y_S^YPn0OSY!xXhS-EbSlt4Al1w| z#OqsoA)@tWS7LgweVD#T5zGnzz%7RZ=pPSt>#>VKkI~dt2F-UgKF;lf@(7 z5?*%p-gK$=O^J}T?)Bs)ss3dAFDd80vQ6LwNa+%jUI1tBuhsuTzKs~*5d`HSX|E5Q z+FX^wD72EBFqNwlBNhZ9SBwNE35J@Gr)$5xFd5R_!Zdhi9uopBQSavpK5^JUs*mYM z$H;-0NK}!wh+;z3y|42s;Kqw7dps<4u^}piv+Tf3eh>UobGXVh`Y36KY9}tX^+cEz zrbRX&Q&9x(0>r8$Z3#15o-t(@sg1TF0xP9;!OS9KyjvsDa!zz#zJGK}K3YB>tERMg zb!dvn=GX7H{ur0r$(TvPgRN{AdlOjGGbdTQLKK1EG|90U9iT3t9bA^SyF6POunO9S=5-Fqpc1aLt!4E+}`G zR~G*Of*AS|IdaALNpJep-fkrOICr8FqBg@VNqq*i5D-pHf4=_WIh?z=KurTBPqOC)YQ~4 z$jE`J_jkQZOZqn&beLrHXZKzDMB9KLJ!SO%>M2v)yXFZKV|T4|vD#Rq|We3!|*n=J)0ewHC@nkDX+G_+^!Yx|O@;zwFVd|#xqt2T~%|F`- zd=;k$Cv!jDp4i&|>5=?9tD62tQ}^O=JZze$?f$jnYkwa%>L;BynlM7IleHT3WU0@# zJGOGRzmhyoNrw;o$E+Lm7$I?H?^m>NpJqr^C>%|g zBQzq9@O@j(=9r?yv$(0QddyUo5@?e?2PetBm-i7^lQ-p|e+9ahS6nO2wWz zfoiIX4dIn3a(OIj(G;?~`I656k&8}WJvWchfJ)iR4k&;v@Y;KxCwunB>cb-Rn0Pn?z#meaa}GT1c6SNfLX+X-HH7)(W24I$7YG_HD%YMY;07r;z98DqB#r-+9Obkd$~adh?8(|^f#rN@k4MKeOb})C<4&hqlw%f57_U$WAI_d08m}4n-i?BnNiQByu zpjc6HJeDHhH1SO;RE45dP-kS&taQGpv9+@8l1~?qi9((^3PA*5_sSbt;ihI~-Za2k zD&qK%sQ2NspXZ5}K3yx~LH`{FChEudpxq^h@df6;Se9lmPO~B2f$*!-9tlCOtVKg) z@%Ied@^{SquW{lIPHxg^0cEj=0wJ9+4Od}Ev-b(n~pkOi&JLmp1-wRRDGuX={feom4$MFWThoz z>;1dnO4SU#&vh0Qk1cR8KvwLm#@@ZzZ`y4zpQa9lbE2{+J4Q=Ko;k{fkFgHhGIS#A zd;3`#En2-?3aHmzGSZau{oVs2MSSZO9dq6;E6x0Lr>nQ7nWYpdP>p58Z~Rf}(rBzX zXGVFMUsQX|xgKDk-W3mu*(m9ugm>r)tL;2^VO0LEhb6zNoTTK&jGnj%VXkV^P&~XA zE_P>lb*>uijyI8Iu&{#ykB-_dy-=+U$@E)dooPyrk(xzDtV}fz2BZ` zZE4k8tXv+nJ@%$@a**5RLFq)NB?Zu1+mm9aEkU_WV!r`hb<&rNm`M!vq7lk)r*eo8 zQq7U@l(uW#EAS&8Qp09$j@G;*-fiuLtGtD!YPhWa6W$VSL?)C(=)or#;}0TqPw#Lq zsisfrz4i^nZ~y=e)(138Okd|y%?QHDNe%I0j-&Hg0ZMK}k4Lq8(;gaQVBd$-x-6d} zsu_3}v?Z8{kE(i<@!dO4ipK5tktkGghBj{8w>&jP8qgeK`(%2;p^4}^^^Q7 zieakEeW3NrC1HC$BNm(9j$c2kD2&n`DgD$xZXZm2F_XfMaRzQ6Y6PJ5;tFDl9vUz) zSj_coxy2c|ZLS?kGK4fvz}qOf!F7;n*QjMmnvqiEr-8R;I;+ajI*y6cti)3m)ZfMo z1)w=hL{y3 zD-%rEg6pY-qiu5FxaNpsd!iQ~ceav2y{}O~?y>j4qN#8mRxdT6i~f?lTB^Ea;E}OIGSN?iBKry# z=+a084Of%Rhe7zB_I?lL5+lBcN-$La9a9_^Zk;TLUxmekT-t^MjbJ5gT9RJ{C_7BS zuj0KYU9t%{t5>v&a}*qOK|Ax2+hM96O1jXcz3flxwmb-N+mAOa zE?SIUea=g!K$bCJaBfA!SZj=?J%Mo_YLm+tc;znVt{qWDj_J?J+U;yN$9z$wDy5+D zNuVz4YO>u3zVlg5CBF}U+`1Vmz0pEOQUHR)9K~+p+nc6ogQ-_evDwW>SVlJeR5}MC z{-@Z*y8}Jcx}yb7%`>F(@#vP_%|jr9pviJ;g6{+s_8y!SHS?E~Mm2?2nZ@>4aqsHd z4+><(@|-QT>bo?&s0zDfvFDpg8lCjq1S+uxI|4+FsEhjfH7ec9G%kulFgh*6#&WbN zyL!bleCweba3>1+tYGPYd@m8?J10S@9yfxY?xtRRp0}2UwDW43IF{dWqjj%QQtzbU ztt2=zDOKpdEY=9{f7?0QRc-WTEUcF=)HC7(eJh@K^ej}<7w=#UkFHnJMw5kel8&O~ zGl}y1Dm!Pk4wyCy!?*kv{6ORE2a9yqs|i@J>v^a?5Yv!KGm+L}`h~+0p9!)+eV``4 zU;G%vwvxkm@lJHBy)IL^xiKIXpR@tZvR0u;qr^$rLma)N8)`y9j7!v^int> z%BRxaK6Z;BHZH2ff%}~ibhx6 z>X@QVB~8?J-tn*d5R`sWVgbz&X~owzA41t7@~=4vGsV$IvA^>((N|jyJFk)6;|L6N zJ>3lgO6DKVOuh+V34MF`-qJ;0OKcVg$0Q~Pfs%`{*0s25x2U?a=_(-2O%5d#5K(nC zmOaLxbx=Fnf>r3aoq*-mt}%?7Xxr0eaAaFGg4|P?&?*1)W;`ZoaYIG2_*4>l+8*fk zu|dij)OzA&Go))tyM(!4G{1f@z^_O)&n4n?n`*tmlVfUo9k7`=)^A^>+QK-7I9J?c`KQF~AVMQCBt>5SeiOi)zx92- z#_lx8Jk*5AEw|-!^2x-aoh>IfH&Hkp$;@ZS`(U<4a&E~-(#Gae0-vRw!y8}v;1aoc zEd4v1;rHXsi-eMIkwz)WcZpMO?HqPcT0_U3I+pD(Ks7@^e^}>4t}YvKW%8S~yu$4b z``9F-K;#-$*Vk9?Vnbadx$S{`2Db+(j9Nu0d(%KuUF8&1G+W0}L8pT|7Jqu`EDH}N zp6@uO@(9WIMoO*2w`NiOU%n(2YfUDgW*aG=P!6*h`+OWXR6RJ6=%wL$YrNo_+5x4) z^!N^=_*hck-eocX^r~bo_u^<@MYrV$hxxe*bjo`=?X$aB6Hv#=5N)`PWR-Gl^9nns zVFs6}GL3yRL*u0ut3#HD>_JQ2(N_W0gL{QojJ;~>Xcq#JD?R0f2A+f0F4fe6jQ0B| zy`yqH@%r210yn%v-wA9=sI!dKxOq;xglVeC@~!5I7cTP5-@HqsN%mlq?pBsCcQ8*# zu&}GT+(ySpjBE+pIK(p?y{=ev{Fu^~r`;r{3QQf%WS8|K;8}oV!F)-gJ{I1^cs=(I7D3#TFaugCp4B#2r_NR79hD*V4c>VN2f7G;C4 zu$?gp={r&1NLre9kKE5%kR6v5T3B@rrKCct5JCd|t^DHi^I3+>-kcQZy){kv#5gY{ zCuZ*ai~=nwI?ls#oJxRMGGP`nrTXcCK6jgn@t8bU!Eb0jip;1#@eFE-@ZfvM#sC`r zBp)sNY7u5W6I+MInUc4{gtw}7+2oAL8O^4}x!s9F$IZ|;T#fkpB^-Y?(&<4OEF{k} zzoh*JmlDm4DQzNaz^d~HX-7x?#n}?-SIpx=t(77+%}uIzz)nuhZJD=~7+5o#cuBrX ze#F%Z{1rt6)woKQx%6z$H5IMKHy18&Key>xBP><$n16o@0zy>QCOp+9ek<V`FPi1&C7Tg@P$<66`tKRkabbNRjpfshSdwyc{uyF*iHnEEBpKjS~wv`cd?4OIMMGJGi%%z#`9RKf)urUaML6#MUI z%_WX1m#$~NemQsczKAZC^5`$tLF^Ahj;UM~4uSaD3!ureuxvzCqHuN1Z+>COC&15V z@V)$j)EK7Ur_bFqvuNv>2%iP#jOJlwQySc08TE9=82a99H_JcO``A@QP1r*tP7*sD z5x8{N73$UL>WXKe12%2+!Z>fc zZ?uP9DEJMqRGmAgW zh65B$t)-vSUkcZw)RL(;q3EcclknBHc~w+&SB9E%1BqL}q^oFC)@C4%Xg!9*vCt$< zP@tW}2~=067FCSD5g(rmx)s$+pz$j23>{(T69_6Qr7+6~Cqi!%Y=4`0+cF>*%q7sO z?=+_xHNh>Nr_ZI0wpyWLnhRB25H&Y)0QHu-WQy=Rzpe;4)>EhC8OfCSHezKEtRLI z?3XbG!vku1O*Vo3QcoG`1M_C}E(0{OLTZ^;!gGlt)IZz_@Rr_AgV?;neDk;E{)Y&J ze6YCG#)r8JG=)NUT`Y#0^qADP)#s~TvP1EgXy4@S8f^=>t^u4(46@$5=2tNe4+vxF zw3>Yqm&RxjjU^tNWV*$MfyPwj}-KIvuosY#E(BV}1#JRP=FL>zA zf`&B+Y#@r0tAQ!7I`#yTp)`(_aDh!(3X|4evSn74)AX|9YYPVSSLugsc@7aohqCfq zVq5yIl^$BGYSTsXkD_|R*5`XygpVsv1GlT?buyJ(l6V?{F8BNglkE^c z6~-G1unuRzIYs@q6ZiA|zx|nh1P_^|dob4jWogovhZUsKg7e&BOM>2G+s^6=Dl<@J zt!yiFdSXQ{Mn<&&Q?N#g_mV*2z?Y`wtY6tZv--t~2I6PIPjk>4do>&+L&ul9(JJPjmV3)Q_Ao?Cev7d)O8^1?;2y-}9OTdk|?99W^0KOL^qA9y+s zS_En3@UVVW_3|pIZN2bIrFZbp`YsXSA^d{%sGxUcl2Qxr<1)8C~b9P&wtvX zU07HXeqpknRpM^gSEXkw8z+aq5@2035n#Q5HSeM7enWJ`w&205!}?T6<9Xx+@aHka zz+sViBzH+-d(#QOKut{cv6G!`ez;l@cPmV4!_?)DpI|2Oefx^(-da}GyfUvcR-?;W z`WRWursZUGM3P7C?t6!ksp-jGe-}L@3C01Q4C-g&HiFXseh!4v*`Gg+9F@cx3;qvI z74ax7)P3LSD|Ugi84?qkX8YN_bH6%VGA_#5llsBi@sfba3LU+v4(eokGP0QQO%(r9P2#U$8$3^CbGJnNCV zL1Q}`ygJ`5;)r}*=;Y(m(Y#8_bK?i^=!xf_a&Hd124v>m^i1Pk)8#)&1Q%cDV94`l zW7t7CT=ad06+ZkR?=5k(aP^@!F(j*LYCE_a=;zfQk|1&DS8xD>Js{X!oiz`XERp)c zUr4c$K2?t~7w7VH{DD<=fx-AD(ycppezl67M3AG-c%0gYHq z_0r{`ulZFj$e#baNk-RcXcpE5Iw2#ym3Tz|ZDrY-8Wgyd$s~mjdYNz*MwgB_9J_^C zVy%^fN18UHnqe(UJbjI( zq4_Fg@_JKQa8uvt@J~e%2!E54#5W7spojlKWsQDD^H~T9SY`RL12sRAm6>UI*=_ndP-(&ss+j<2a7E|GiNLATc2A-cHwPRuhisGj88` z|Le5QQS;tjc~xs2UYV4<)QnZ(#c*3e8Eun?y)8C?s~KeRva5sFaI=DgfFZ;}^F*BU zH2{s?0Y2QR%HQESN6U^w_-$I#ap;F0{}5@%6R5mfjD+px(Uz@s3MT0=E@3Zcm-tTV z)Yu|16^p!BdM=OVx5xgVNvXl*~g9_+es{r_!m<5VhDp#nU2cf zP1t00uR*jnNdfD7XlZRS$`X`~rigC7Ui!KP_rTrdNgA%E8ps!^44QzyRn%Y_9M0{?tknL|iYn@oJ-Y^JeZ+KI-y_j*^hi^?1wV zt;kQ;_q zs*_UL5d~27QjifezwH6ws-66K%vG5Q#aPw<#vk$!HM+!dE=NQt4!;` z7&l&*L+0pZaW>m{f{pw|d=Cx8+|=Sw1m$T${tH25?kv*{O#O6PLFPi~GTjAVFB5lO z2Z4k$z!ohfEyZ=V^oWUH|KQE8OucM&tHcG)O~1{7r*pp~>&G?2v#XAYbGnW7tq*=q zJRmOChm}^ZLVn9#8Cg!JP1-E_1&(QpC4uqV{UD3MOg6Sev_@*4J$Yz zti{V|-bw_b@$c^Y0!>!YOB^mmHzRSEAEj$+bgttK_!-m$XFB2jN1Yl0S@{yd*00*q zR?W3m1dmubeoxML+g1!|TNP~^KzTks%6eW_C8r)hBy3#C(N;MR+f&&jiRtv}56^Op_x z^`^Bg?m?CxuPsqDp99`@X3Fxo8CASQ4BCBgdYbTPLT+F&@8)rGJ$shqEiKXeH!omY z5(4twMb;--^}oFd4)P$u$G0a8#q8WJ`y;>0OFPf2l2J(`kR@J_JBdsw@$-WKn3&Lz zPo_N=7(-nr`FU!AAs(HBBu%t^q&v9YBcmx|u_{~0aVk52<1u`aDJ~vsTy{uP@Qxh# zf9$L045?Bi63V^e+9=W->iS5)a$0pmpsi5I5lzZ&{ zclLJa;9lUH<*uHVuidn_xl-H3aAog+>ukScE4h{D_uEBapBYC6uF$+z6Z;iUKZuyz zT^<51DH$)B+d1GNu&n;lCHa?$JGW9mAOc&MfdCIw7kYsATP%R5wHJ6&gPhlGJcp?a z``H?+vhlCb@_kpH(JEigB@n3t}}GN@!L-{2ykp3^=(9C_BeEzM_A>3aO@Ie+ZwX`NZatm!eaNU>M*9WAi zK~UQ&jV~Xvk@LsDW!7sv`5&Rew~5cKNt!t@K#J=58{=2{7}t01Nl8iT1Rw_hI$>#P zY0&IdeY7=|jV3;_gRk~6&~R*)nV_c*8}^WNhm|nljc(q<0d|Hma|k`iv+)e}kt)WF333wPsety6~N>95D^ckK{6 zbGP^`-fOTpVADSLn$HrgTIG5?SBf&yCYf={^`PGnSfp{YECr8C7HyWGV>IEDCL3-) zORiY`J3A)E3rH}Gtl+!=|49|M&vTX&EYa_`ZUmE&k#TZ!YpJS6*4R%i5xih<>3z`C z-|q+=eMi#&H2#`(_(rj%8rT)(SPa4>`t7&zm;JY7@-Hc;mjM(pl36J4{F0C<()Q}{ z+pT0h6(>R$?0OR)OqZL79PP{%78P-`w;IdOzgKG%Zpl`eIa(_d6=CQ!BZ8BgPame$`@j(^bLKqoK~ z%k|P}`@!}oK}pk2TjU3rWG67Q zpd4y^KJW8LNrL1dOK}~K0_Y)Dz9W4dF6D2~+Om_nif0mmI&76f3HM<c!ibl~~Xs1`9@srQ>Oy*@1bF|xBa=8d9;2I;}O71B7QQ9WNJA1fTYZ`hh` zDf1z+xT*XY)v%Gw)Nu%1SSw-2N*VJvcQ=?@E!_P#YLMx43GlVTB`nQ2CIm1`UQGdH zZI_8Hr-){3uE6*AtISbXtw7%5<+gii1}h8#FE*}_O;;-y3QdQ{HLQTxY`R!B51Q4Y z+!g6(tH0?hzHsGs;%O4GmmhE*p1eY7v_cduw|P|WIpAZ+is|(?&$aE$G&WdGf8vkq zBosqe6*nyQ20H5V505WHC6#n%$8I!GInMY)y($e$BBVA8O(t|zMHCRImA;d_WO%7_ zKQ?`*?v!PkZX=IJXulV7;GcU!`~)VaV>{I7z{2+-oW@@8n{lI^8T>-@jaeY=~uZQyvQryVB+pQ3r z<#9|^CeMi#xk0aWUygpA@Gm802NG`6;tao~#(9j@!AQvb<(`T+e_6GEs=Dr3w6PhN z2R$Ech!cu23XCB?*v~P5{W~Yz=JSi{D8n1p;0;3%-vWE9S|Sr$L&- z0;@%uX~hwCJN#h)^9{JM2zpFsH-o=Q-XBR0!+Uw_A0Js)>FP7+-Kovp+Pj z4*g#_!0(vyuP3w$GX@llO1XfR`qj4>1fofilQ3`qvHYlVH>@2$+FD_r4F^`4#J>o znnBB5>te@?SGS{bZ5BQT_K~l@DVATpegJzn2DTLu?l%BGEA}X%wYtMtUPPMwi0Yhp z{T4>)(reZj-f;#y_y3rS=X$wy#jC_JrNEpNlo>=<-Im&ei2WVo@BC$|rTtHrnHb&y z7Y8zu5lpiVPSQxFM`Tc&OuJz%)dmL#DePz5{AWP55G2xz9a^H0{Y+a|7x381z`?e? zE?t!C;_&b=i?3q;gd?7})O3)>&)yq}Yp=Zr#N?D|om#!s*u~jirSUMCvvIiIx(?=V z_gqef#XbGt&=kW2hS0B#J9*tQ6e<~x=eGw+N8fhU=!(R({2_fWc>hZn4x|G)G;9(b9P^a>BieLsbxI0yjM{2wb+9|CMd$pvdZ{VrzxN18 zwHS*jM)`!y<+O3tt*vRJ4}x*A3aYKz{7@6KQXRWHF*ZG%IxK2cXJl{kdIq%ngU?4< zX|o))Rijc9(XF9``r1|XXU>~;tpfkD&Oc{@ty{NBNC( z0Rb$+CRpNbiGykq!AWtNRLRaAT80vKnUp2fp?JPm#L@pYkWe|ZE~{=iy148gBnjk* z@t$xx^~fru5B)6*|Lw_`8<1h@APojwg*w0soO~XKlulT~#~sGevonK0PkR=;h4WjT z&)UxII53-89Rw=17T9RoTG!On?7K3|VQX#ua(uf6pna_+Ks9%X(|!0?rN$k0!}zy< zuWzuCV0dK2TQ|tYA?oH!EZb0a%9G`DQ=ikh^U(tEe}VJ2+b-!hFN+N+{w2TXE!Mxx zR)DmnWey)de_TuqaBOisJlJvq{jBWtTE*$MZ1(ex)f1KSlX8w{Cib*7zrC|pd>cnz z>Tu;PSv#-l3oI6g8xV!%-yi?Ktum9H1b}a-HQcHq{11C*&@%o0{u(DIr-q41I-oeI z*DAK&>tU?*-RGEYb2T|C)K|<1y;JDgS7;424yN1QC54rrJ0C_X1YD~?4pisn;R?oI zmi&Jn8|(v|up9sVF_!=Qe>k5?W3MqY7h;Xx08 zx;-7K@RY#d<^nv|GDEVqHbhDdjVdoMe|E&mi16LHX+M73`-7%NDs{$gpT*>PQ#XAF z(4>^ayT2{xnQlG_u_a$$Xb%Dx6byZS9Fm&J-SY8g{~7{+p1S4;GTqy&Y-wd>*A{@+ z)7!I!5V*iR_zX|dNsMy>61DkxV5A59*vkg~yt!Ij#SqK_wt2Fcx#L@Ayo48gCS$Y9aAB~tEaltja)`bBlZ(N}*zSE5!rGMC5TVaYR zHIEdPr=_KJC=PVKbl@4-&>#krFoSZT5W61pEGH)?;hDp*(uWLN8oKP#?907 zR{eYmP6PY^+#!*L1;@;((tg`Rj;}xTnh(b})EhVH_^Q}BdAvbh_U74+iLTO2Ts@2M z=EuqO=g5P88W2!~ajjnG!ZkmxPuhqQx27r;2rrTfSp4{Sb*x?H(t#TuU8czEU#75X z^RBDfzIrRJQ$+Va0cB1He4qKMzJk((4UPd#y70r9>UuGu!e>*oJELyy7V7*il`*~c z?rc*`LP3@wm$Hdz6K#H$^4=BQ;1jmnBeKhA_hJC|OVV@8Dgih8ICEVVfDvYmxy^)2 zSBm@i?$dY0`EIuB&0f7!W!y$?G^<(NmDKrhopi=gp&P^122;T{AMqTXT1%*H3%qMZ zT9sT@?p4w83Z;A-XNK>ZY5}~yVNO7*S)DuH@reP*<-YE0R4spD((26H)1n*b;aR$D zQoE#zmEa`{IreAS^y+HK03OVXdW3z07P)i zrcm)Q6xhxFTe+&KIWc&Ff&lsMLWVGUiO&NZqp>g`=nh@bvY&Cqowod zw(4Pckatl4Nt=s2nr}k1qewhq2EC{ZvIZ8@+id3lD)5{XU1Fvs#scVZRIVfpx0)2l$OFXXncqVCVkMH4yN0uQZ$xaC;~zDfLmwYC%Ragg_!E%g zJGIZFxL)4L$P+qVU0A$Am3)C7b>RNyl|8?`dgN30syiuL@pG`q^zRj=q5{TFyTc(R z)y){*>tzD=8={=| z*50%ZPkDj3$I`#8bMm>}bj$1qSHu}qdqxcts||{3%7d4SL&0X-VP2SZ*x^?&p98cN z+Du>Hwf=KNbs}8Ne|i-3Wot5QG~J=Jl{kE{TuxIkCqGj{L9^x}zQn4;Xkd-YC42>q zg|!ylEU*y@952yaH3b)*c<3LN=cmOAOU-u4rSjN0@xJq*anEQ7%-39JTX}M~f9Si5 zqCk-*lj64BT6B|w{gp_d6iPWR+6`=9*~ChSj&ANDEU)%ne0t387%D+^Htu9`_Tmeh z(&m)j(5VuuUrJ1GS>o-@(C|2OzrN9RtdE>XJF0OVkLP4M*0k{( zmmu9ClkjX2S?-&!n~Z~@hSMNet|j(!3iafzPMaYxYjXSqW?U?|}jrQ;j7VU33W&C*akiRd$>J7;~QGxJEa?51{; z-;~>L3UR-dUKzS)ZDr692?x_gkCh{b`O&wWEjxE@J-|kLN-E8FglG!YW0VxNH2C!2 z_1PK~i?60<@A7ci#nahqwHB9xybA6KmfA7C7XNWoC;70JrI^gt>?|i(JH!{)ozE_y z?jSN}^~RJ8G9;vDXWT2@Iz;bi5fAeReG@+}r=^F+=-yH$h)JusZ<}}Tz{Gu&yU`JT zddS!;u$`t&{|vDF&b^y&pRon>gdba?2C26DAYntoB!f>V(o_^z*xRLkDDDM13UQ?u*|A#W!F zN?KR3>=yCkj|I-7lILd>|3#QZrR3VL?f#QXDlQSW%h2#snP1R;?ZmKV=>ht9+S6c> zsu2~u>4pr8vPCXregxq`B=0N`(a_1+a%~H`%HikIy zh{18xWMt5MSo5&pL4?6`?8m{Wqhyea&{#t^sk&{#W2>lLd(_NJpKKB%e%;pkxb5=o zT2I0e{f5i9(y@?#=^^$M-tQ@O(ydnW8dDQ*SAO07k3m)7NXeF+=6n@5kcH>hDkXw2 zFZI=7k?HsRM&M^7`2|5`l@rBU8zrT^PPT4~^b$G^db+W1gUYvd>?2b7G(C!6s|u?) za{3{vp}P9Bcb|V|F3OcrPQGeJb|#N)m$Wv?p$*kfzj|Wk?b2HpO}QJz4LewM*XFC$ zY*p30f-vY3>L4B+WUh1&Em=WJd&{k$p^UBf`u&if;wUtqgzE_{zxHP`y4l*pGQZk( zS?VN#=Z}*4R1%{{YE`Qm+i3)HjwU9imc?fmc&qqXyBi6&P0D&eR$piD-dL@c$o%DJsjuu-K=q1`^*}(xignr zL4{b4OVdq!rf5(o0`A!tu0G13J6yzwS^iwLJ^sLMGb{`5@bAfQdyy9KE!`JsBUB$q|=0X zu~c)9G-C}vGY!xeB!d;Vi{giEIo;aCU9tUX;930wYZWceAO$dUiDT`qpg7mTi}hR0 zh($lxk3g1C!M)L^x5fozb+bD28!C+K##@Sc=3mu!MU1UmrKbO^%Lj9EX*=Nm7~Utc zOLS1~Q;loc1JC<-x2j@ibCUJiKtq&|VgPKb@jZ3Tqc1xLQU(I5t*`UrU`__nj;DuX zUcZ9hsT#UV9SdupwvGt$9hGZq=Irkuazd-dPMV&{2NT`AVg0MjOofwim7q&tS2=={ z%e|*_Ja>hRf1p!9dzX8{t`ws=(+7)Faqwl+)h-&_5Zoo|TDeO9d5=;}XRi!DFFoF` zYS(jKL&et$6eL`nK})a1!QuETnt=nt*0^4Z7-h`+@@1oG@yH{ZPP?Jy882i01Q~k{ zCzr5xrAwAUU153IPWBu7{-rp-K(AzGb)G``aH1(QDSd-F<1&6?@-DpAw(2x} zcRg4ft#f>`Q}MIG6RDNPgg@p3f*1;VA!|K|<=CJH+d>5KNlTuZ2gRQJuH8+R{pC^E zU$=eDS9zxWu!qTwrjOM#jHk+ey+~^u>}zlwf;3nfzDy}rP5%D!5NIn z?oo0xnrreFp%enCblcLRNa?o%U9)}nzRtt^Ekr$rKf9H2s4cWPVO-1yc zwy01|p~-Z0p3FeJ{Ndm|x{VdqN;8EkE^iVZ9l9MIPa-1^YPK_*w}fsM4qZ*KjHz5K zLFw;Y^}{L5zx+vfy1*qx0|5oY(GO?DQg(O6_lsA;(a+8jwAW+n{J1g9!F4>!E7kcN z*6aIIdE(pYu9%hm5Fz~sSQ72zfFfCF&V&~CP&nL)?2X@&c=IE;qv~l#tznJ4QmgP| zVX3tcGS>XX9nX1d?LCx1?*q^qDN3=!6>2rx^4G7e_6S`B`w1*W7u6eeZ3<~=Hxs`u zD@T9F(^xeBw#jvKcGhf$diK8Va)x(10q0xHhEcN)G}+6B;tqAm0LcHe->%wmx0$UC z{C&VV-j7sx)-$_5qMlP*Y_^D-4lsn$2$E52L%9(bbS~F`?My*Mm>a4&j540b|L0Z8 z@Hml|!Xl=Kpk!3XH80QZ1gh^AIXMu2p%S5ipD96K_qa$hy2W+ZNMS~W7Ug=XJcZP@ zJEFUrf!ZE6p(JG_8tmyX83y0iIqk{{)Nb<9eC@icQm7F&)JX7h;xU^Qgk-WD)mNig zLd?y=W^H}+)Y03+!FF&)wJi3aH`q%>TrlhFvukO4QTZkgpXc%-qO9ljqgS&VlBBL) zk+_#N;4hXH)$FS`hRN5<#pLUgBU&rF5LeW^izBja!ub`Gn^#v?prmBmj5mAd`EgxC zgH9WH+5W}S(;Nw<*K_f3h`R%6J{gd69C>*E6KgK<%oN6joZ~Bf{!Z5}SU3YT{bRks zCKbBy&I>#$d#58O4LLUZ^1jZ89Us#I#fg^eYCGNaZaMhaL!-MT_}azC+Lfk7pEh?! zhZB?z`^D|5H#*n_v0|mcUysda;>?lmIJfrF_!S^z@cA;4e+Jc-dOE9nf@~(r) zi}1dmhK{#{ty&np_n%6f{xVPY);KnNjn(rI-HZfn)@#>*cGp&N5Vksl8FR=v&E2<` zC)T289=Gc)uddCrg9Oq$UB|*25RsxXQ)C{XLQuR8;Y^>dGV@!HNLm-i;k4G{>YWCA zANU{kXIa}Et9qqAFYz_yn7&xQzD~FuRzKS^ndx$8@~chW)Pd0I)uaaZF^Jbf|7P;W zY?<;VrLToxocc^g_gDig_lydwyj~iGz5FL>9*WhYK8yms{X8QP9z5h}Ifd!4&zz`9 zu+$@+W@>v2bEhpXTYTr!9I{8weRvSN?^R`${Z&mMhxJ68xmulY8rjB&z zK_F0&qR-dRdDP)l#U;Z2H}gj<{qskxdN)&)vJE^kpP8#FP83|64RZ|2`+7A^V%|wX zO@BP4ttp?Dq1VJaPsPMPsiG{Zd42urUwR8*aLs~>?U{kHMf35SqtCgNAIC!Ou^HnY z83eYlsvp&&-aN=)^Iu;YysJluJfMC-kk$+jr0%tN)~D&VZr&hHbHTD=$M?jfFO_dN z$qcxzP)%;+MM{(0XWqgTCSL7zUecYbeC*JwCy04IO%~EEYJ^P>oza)6+Sx+6+T_y4 zAUHvXp)nvnx-$8i?WW>|YKRz=%yCs5#xoRC9oaryK_@_hX(!`f!si>)JmcE;j zLHNHJ+<8*DDwWFw5}e!exOn}td@}DrU&67U@_0N?T%d!>lz9Wo4d&WW`C zjjE=0&iW0M0Wz#GsFM3W2s1%osKWKGW`B;g0a0Jwu!#bV^uqJ(dVZKTCFZ^<`cokO zcqt;Fz5QgxLx{0(zc_b@$O`?)!}r7oR{2%ZZDjwlK!-9{<66Tj8MWb{>f^X0iI|K7 z;xGZKq=9CvKN7=^YFSR%nFW_2H`6;aeZe+^g)e4uHPsZ!_RVMfU7mjD$i4_b zoOsE+UN%+@Y{Cq8h1Z~rp&N1Prk}~smnVj%mcO|%^tr*j#3w|%t7{`zaEcOxj|t3z zDo$UpLJ){b*-Y`XlUY^c4cr0+P^;lqFHl%TxgaA(bnhii7UgDzttOXdG#?!MdI`R` zpW9c8ihiuoU5qXHB)ca`IO5vXMC-@Xmmru@#Z4oVBMWVLVE{+Zk5~Dl<3EjlENjZp zuS5mqijGs>pfxzbYd zX&uZ`w#?L~pL@1E5x^~$f!1fWNa`0IF`Q}?(bY2qWpl{30qyJQm&*$-kDt}(cBq~( zWk&mrt^@ExCzd?1=;7eBY|ucXcI~`Z%qnR5w6dqTM#FC0!TKAm7)CkWUJ6FkmGMXM z+Vwf{U9r9-euc^xD}|ljY#w9qhnR3*_PilFs%|1PIhBP7y37^A)kG0`aSaVM-#+?n zRo%LBZca)msw#MyzW+Xh@cX;P_p`WE?wi>&RYVDA+pW}1?8PN)RL>_hJjhM$Mj@z` zEs_(qtj+u+04*)eW9L>8UTIRsZVi+7!e?G6^#6gwrn7qS9qP58QuTLA6D7_??HBMF zsPpgnDv~}9VVZBz$uUg94=4JAVf89 zPEWFmGiAh_=JdfUycWzRC*OA}*njI?)5|FUN7-ymS07G0>wx9&%E8nWhju}>^GWTi z1LFO#mJiY>XrCjqMwVl)-(Y6##vfv=-?mgDxiB<89C^U5pM88NPnRQy z1A)s7x%6FCb4?hM(J&YpEB9#O2`R-#w=W%{On=$cGo~>Qf~B>1AO1qA7mzia3@bgJ z*(-$HdNGn%){DM_z>twkS(1Q9{J%WzksN3$zNZB9a z>9JDD3I6lr@t>a->a=E(3F_J??#F!B(kV`BNBoKrbTe8i11AP839)CuqumMKj9D8} zv@<*C9lbW9Fq|b(mOqr?Pu5lD8UBV|2m9m`^XuCVF60M*!uB(j{iT{9`V%HXs@;sy*w*g8!fG@H2pGl~yXEfk%ZZ=So3Xqqt+KmfN_ATLA?54Uxf>OTOC&hS zVm8mmyEI(%uU7!T7vxt<_MCe^6hXLzwXEAkB>e->BVmwvniLWgt#sLH_A}JC@cWf- z6j%qBC{b!GbqrIHZ;Q#sgoI_*qQV^RVWciwtXL0=iW*BgSWvYX8vhr zwD74#(yi2InLu&3N@E)g>@YZv7i+&{w z-{|o6r?a@xUoRgc#y_T`u4%{RDRxLt*}kAmD5_cuZPsIDkl6kFEB1YHTEba_lC&=A z+YGDW)d^kYx$DP?c& z__Jrg`sl{;YHq2NMeyT)VtW0P_~)d_bQ?F_m*u>dv?(63HBv5KU~i_BMKGqSO2$y- zdri_)k$c)HQHxvyN+Wvwa|Ev8VoTwmxcG zMS0w!)7r9UmGG}{ce80>3a4`al{~f(L9yykfm0z|cu!gd+zCny0*+ZQ!vj)FWUFt{ zs%=c)>Y;9_SI=V%Bs5L)7}0afG9x8TMGB3 z$*|K?|HNVf6M_yWSDzwlX?cbL1^!0bz0r8effTx{yPi#>?8MDQ0&j zA_4q9DqG2!ehT1VTQsHh(dk^7G}JhCD`~a1K%N|XERG2lSRUbYUMdG4u7)|97SmFy zOPy>t)tPcrJ}Vl&O1LAGcF&JTC0mXDng!PLLz?ToXVXP;wS6OLaM)(QIJRhRo<9lZ z`A6ZZC)o?vA|igVSh5~x`B1(_^dV7>n5PN~?X2KLD|pQetFeXAM5L>bA*Z|}ye4PI z{kiQ%eIG!&=J^BP=Z33Hb>(a*>8orz3Y2@R_BEvwqosbO$5oJF-U2=*E~Rb_|ZLfqDF1F(P2XPMd+r;Nk)$wOUdaoaL= z;tp=iAiaA%pTk?nV$_+xWn^3Hi0a{`0zHnq3Ek^672w4V3h@$WlrkAPbS*lM zEJKqDnC?AgyrEvclz===*u6^RHyDl`w(P$V;YT*t$c^cxPJQ-mOJAqAQCo@Ac1e|n z2b<#PZQp#$L(o>YLo%oS;*alfO6kw#UG$Of89gmNcuHjDL< zlNd%|wjc7+2!R_+Lyh>YHJZs5t5R6MJ>PZ*$P`rD_vd z=Z{?4+~`V1M2f_+v&t``9WlNExcXzSMR0TMAse#uicn6z=hOlh`vu69qwD^bpVf^5 z#HzJ}sYV3XMGUp*`cLIt&!^~x7!t>eQ_e8-j1u)Hq+N-b^oZ$49) zAW=-hc0>cJ5VoG1aZkra{~c!!fYp_Nj#oieg$adEsNTkplwwRMM#t*>0{g{LY&<3= z;Lx7S#m4or@OzlVRf$S2S6P(qKr=d_p+BmdPm`IaX}eO)W~a8=di`>owpM;cmJwHi zRF)@5(vaH6Gmu~DlXtwn*FjfCjIfB@$OjesVLT_h!#BGdA+1JV91jsJDzJ1gDjXthJ&tUFr_J%v+8KI1OpQr=9`6 zK(X4|1nvU$+RjUstHKan-khCxNs20PY>5IBM-u&QN@ z!7J!2Wc@R4J^KS(=dhtMSNrnuU?7Ay{YFu372o<2gw_8`A(@A*=Lt-3#z)_8r%7rv zw*o$EylPlwwUeG_iFiE%NpyfW8$fI(PmpkliS>v4oN+1lfUym2kykhu-3msHRIu2ff)kG^jIe zsdSrr8z$(GNWy%H(4MfvOxLXE?Kh&_5M_syn^4ab#?t~_nMv19gn+;MGy6V=>Hc0p zBF63aMF#|3U$}%_OWw-$K6_qiVR>Ck6*&Appbo@~Imk}fNx0Xd(XU)~RDT_D>fptw zAOA`hD~o{oxj(t9Vr6tfwJw9upPAGHpMaYAUi*b)JjTd)K;3gN$dz}uR+lrpXUDL`{t>jV_Mbc)KuaPzbHs1yWNT>j3i#w+ z-w=b5=xJu&J(yP!o@&hl#8NnP&ymauzp!b9p|Wr6ba0DadyJRmp*oVF!W86a#+@ zlGPhJOiKkx${mahwNS8gHZR}Gf4X|}l|r9$yh%$d_AWPXYBIR}>Z|Pdq6$r}1_wun zlVdQEht@Mnd)M*xz9>{{)c9ryZwi|2B^T?btZ4Qxwx2wwOp7+i>0D8}8`T{t6}+~Q zwepMbe;o(()NIGBYdsE1N*~XR*aVbg>`~7#nyGPo&i$cl$KOM=-0$i(-zu&H~aN5GnUsDzyUYC!<1tka@*y0bCYyLHx7HiP zi+$X3Lc_x1qNi?rADn}I@gwj`X&X9j`XK0>ZWEVsh&h^@w##UBb6W*vM2-zUSk@X1 zhBcBm?8BE};uS3M*jm$Xiy%j60{!j#>M`gXVWY9h1a z>}Qsho9vtr46i|6@J3?qJ{SrB`lm`o{ajh$;NejzC@ARXy8eM+Q)r;26z%Ii2d$ZC zhaM&PnY^}{KwCi0#kt`DC;ThIy?eXK6L|27)|+NnEk{4guloPGp1`07v1#jIqdK)U zThpYnxcqen{X^xMPz`Q(}> z9nxC2*K%KFRtRM|e1S~#d2H~VyMysA(|i|+t`6OWhpKhAFh}uD8AM8`VLno(>e^Wv zPD3>^45q0^r?T=4IayhaFRB<)ej=a}EUsE_s(GE#KZm6DagYRQQtCgx5a`Ff@Nh(x zCNFSxEP8aB|3L?Vbp(IuA-rK4!2^VT{rpNE80LY)tTL)Y?%3lf&i~&K{WIz#-_@nrzsx*=C zZzSIy%$P7oQfDmR{6$)^6~?$zJm@;No#SNx%jrU;3{H{l&&mI1JmC`+6>S59WLrDC zxVSh%Qv6F*nr$r}Ti!of5`c57k46ClDL;j_UJ*wAgpbZg)!T%)i6q}n>Z+v-Husyn z_GvcyQynK-hWV&rMw(xk0CHNS_RP^Mb^w8S$ug*byOFgr04>XqyDWWfa1$TE1q0p3 zU@&-iuZsyf(Wr!_SaZfh&6n@qMwtM`TWMziT={9HtcyzIPXOUf@`4d5JN{VPrJ*!t zdRRzWO_|LL$r2SPwY30C&Xg$U<4USzZ)Q0%x8V;#2O4VEZri}p#MM(q`qhiHS$ z6*@varwXq0LAtG`@)%M#?H#3nDpKpIozpIvchs+weo7pK0KnlV_kfz3Gu_c|!8v>C z>F$2!pi&GpKnwz}bq8J>?z=mQpa5QLKn)Xo~{C%Pj9!7ML;JSxK(1$bSYCcWSO1G)+DFrWzFA?`U89zm+$2`s9wMVO&Y+FEo0=q938hQ4jcD?L*Dd4S*k6uDOG0Kto-%%ZxV z%FnHx^&13y=h_?bZYkf_L7S}StKzd__s^_Q%<=)CM6XB&0*pYFqqR}y6)+26FPEZ zbF+^+dR{nM{q`V;aLbUHRSuA1eSQ6&zP>RM_SDSNQy-Yb2uOcT7@y%9z(5vT-?c=> zqleXqWmc<|g5%?2g9@foy!Bqyh8v1aX6E!Z5`hV3v%ytBx1SST%+&6^=Lpcq|Z(qZ{2r)RcWw5 zJs=Zxl1}B*2|r113**LBTxn)`K&ogcgwEll17-1#!t#2Hlyma(#M||O>qt3ftuZWT zRMKdwFWkDTFLW0Y8QUT74t?mD2{pbA0J(MV9`%cPEy1f!(0aU>(-HCA;>fB7_W3A= zb>c4EeP6&=Py*hW%{t(T`_fF^%ahWSZ&bWiaZ>IbYPlID;4Mx>>56{clf0{tL z74QIsP!lh)bL~z4=_>%%>Z~GqD zMaZWmIB441f;BWWMh6EMie?<7c$*v{lMX3cUdJo2cM0xuYBk)yD_NNyBwzCK5G6z- z(~LYo3!nsYe^BI{mi||E@IQ~OshlBQQ%Y_+{G-DeC*}a$5s8+L4ktgqCUD(KsO%r@ z)_Oo!9wCJ3HUz3Fa7)KN9eOE+DdqY~NBp0F)_;9B(~2b3xraldP^KzZmlS9LEN$@- zINv&q`;y-WBmec}_35nF@Jpc#?nPGr{6?k{a5p~9=d7$hR{ji$`)F@NBHyn>#RH9v z*DAhly2o-gI%vLj<@P@)oV2VP!nC|(+{D$TLI1P+TK*69^U=HE`6owZ&r{qwr>bcA zfYy+M6eSe}93!{(05BzoiApk$alF$S1O5>tT$V%MFRKFgQY2tH2^HoksLiJpMAgv< zBQEpTM9(HlwUbf8oyY~S+N3Q_Yc2_KSN}9tr`WAIP_MDBFAU2tvzPHv$~5RP^W^hb z^-oWEFDp~L`G9Xt^Ib(yPL7IoBoyT2FD!M(Z}_K}i*Re0i57VD4~iSwnL0UO&g5&# zm+n7%w2;+z=dDF*tepBlFCNDeetoOJ^H&2a8gV5WFPwK)uTFfCyI z`$9x`j`!5$eVqSR;%RGr9FJTvhvWWp&e;t6mgXb4gCzmbt%ZfLr55?Eb9YcAcVjEx zW6^Jjai+b*d_NbMqjS`P2ZwCqM$AlKL!BId&L(T_9plW+T-Je)5q^5=5n8*D+Es=7 zNkAJnKK+kmxu|-a(V}SSb+S;6BH1Oe>Yap*_vf9VIq7%*kWq~H7cJe;h-Te!-1>Xq z7{!A0xNTG9LqeS8x?Icm{MIh$2&=eu^Ss$wL6&d=!kh<$|NgdM6=^(nGkXA)?`tBe**Uu8sicv_bg?&dpqHp`@|%7C)S1W#1$gCehg~ z&DOE`;>Zbwv}rm%ruNAx;=?Y?h`vj2tFhCe-zL?(BnOu}frr-sULu>uA9CPO!-et} z-PQ6wC)w9c=ET@5Ni(GFUvc^NGARHzWEXXBgmNu*% zQoyzsCj&E$AUMeVegcQ_dM*vqQGs90qD6GkT%}DFqAwSu;XzENnWC?jWLV+pzAxszlsD z4m;vE{mDL~Z0Df$F0h|arU@e#75J)ftLHGnpdoLcIA7JIZobDp{s041md*Kp-W zx-ek={g03|vsb;amQLg_R<~iEVyfBO13qn6s&dt2B}mUVq`Zmvs)d{{5>7EVP*md4 zylD*AOBei$$br>2e?hCmDY|wF`+U1bk-y?lj40E112mn*K)OVN?<1WF-!w=u;?qB+ zox3fti2ExIu6BqK9}l{kAh`2#Oj}ol`B*UJ^x@yCx=eBmz2wy3##OHr7oV|CQz z0Lr=L2K)IRpQs`MbXX-=1XmihNY?sDL6Qew5|RBK!Xl#+DYwgo#<@y@^doIjTV16F z1{~(Y0CRbTYLL#O;h^BM(QiSAUmJv?mRDXCXcrxQl1&c60Q4M-(zu+N3IxqAR~^A~d>f{u7~vory@suJOG|By+sk4oql#Go2CEf}n(# zd~n$DW;`z)%z!D}bNSnkozXLh@L*MTLWX_Cw|-a0DcqHz)44yS*sM@c!dEL zP{ps}5_H@|TB@*NwnXC6g}*4!77JJq>6wF6gh)+&>8sOyJnoL!0f(X}bd4`ZiP*jK z8k`R}tKjoA2)(=(5$yA^;07cLdPwwc+-1IawXszA$r4`CB%+d7e z8sMRQHug*JrMfe${`N(&gr~c265WbM0V140h|6w7p^fs&OEhN7>+&?9cHfOSZo&1Hu z#x*XoD>T7}dxU^TPytY+;*vQonP|8vpoxRe^F)r!M017ZwPp?r^mV(IfnP`^0}kPybBQiRqvPXotJe*g@R+_kH%hAY$NbIe<;$@c z74`pzvTqMa@@)TKr`6V`Yc(s69agR^%@vyGw%*m2l^s0+(xhcdXiBK4V6JzyGO?{Z zRs8k_U-o{9(bPnxu5&`T%YT6UH5e} zx092R8e}OUbTHOWq32{RJ19Z9bqh?2hXUWY-GZ{S;8pudvAyeNc>PQO%dnA^h3%=% zSohjR*Ksapa)we{qOsH*zQLl<31o~1nDqtESD4k_K56bDdxd`Y=8n}a@2PC_YmU@- zOEWPDH;jaYEP$7?{RZ9s;>3;ui~nH}`%jw%^HIh)-F@We`FXo6$)PBSEo=XEbx%7g zjy1+ALYAD5lv`=c9fvc;963n0I}|-`?{K^WBSr1PdBe2{ z{eXEX^c||+8H4%AtR?&7(UF7JsINF-lFXmgL1K)DuLW{gKMN)Yc77W1b!e{JT4cxi;ny^17#`uc2&#L)gk!jF3Kjx^~Nnu?Mv`A7r zpB8DQfh%i5_loB!hHy`^T@IqVB|Oc;Y!eV{5d86b)d*oAHS35pkS+$mflKOXzKUk?J_r z%s|QbB0nj(w->jvHsEO>KY7%$33Yrht5f4ovX_KlPK|QSQbQMI94P++k5#8jK9g|P#eH~k1Z-B-HB zn)$GjF0x?0uU_zNotJm`{@1Q)na`1qS|p9zGQS>5MnRBjWQc|AYt- zVSyXX`D1?BuFKw9OI7x=AP$n0VH%>fMn}r4Ix1O;gb47Oo_+d-0i3yf`E_JjdFaSs ztq+alcY*(Dvd{iNTiIWtu>D|7>_6lAYApdQ9XFa9dCnffja9-^^{2LrnD*gcGY+^5 zPpNC7%dY-VQ)yxln2qqyzlme*fk^?=L;<9Bqu+&$;DFx>*Ydx=I8(h)Y&5QUf&mvd zV@VW#+G6o(!I{00)B}4GRqC2yKZOOn>ls&RaX{bX12b8hm1Tue!mHuGS&9~o0k z>c$1mEnGChPZNg&N z_N#}{`x+Nc2warl+{~z41u&a)rxUw7c~a}L*GKGZssc+*#3pCsTMe*>Nq2kxwoK2AaHgW5UqUL-Du7r=Nd4J<<)hAEnXzP;KLv7v(mTJ`=w+K(4 zyCr{`z43+K8Z=566MmNrGYsU`k=caR$Op6RJbskdbCxrApt#m z^XnV;CbDD1#Q8jbZ|X0h5Cr|%rE4emOS(Sefz%d*2eEu+iraLTz-G(W^(y!FH=Wf zFcMRR{$5@<^J}@_TEgKq@}!w#vrd|1b5>ckbXYGMp24|+sA2YC+T^On;Qz+6e{u<2 zbniU<8wcJ<255Ua)W0UvE1I$eBa=3i%; z?}9RF9T7r^wzhf=OaJGmWrqR2+=#mUdY0d~Y!Gp-fLAJ3TanN#-;UWJ1WM)Qcl&p@sWiglj%@a|r4y)?D?Bhhq!(pMr{5>xgVphXf?S4VHf`=li zJQY&W8Rd=XvY?zfmNJiMK01PM29(Q z!n-GB&d#7#&XWF~;H^`%pm_zDqva!+7wXn8c(zG+V_NaB;RY;zh{hF5CMINAC~_#d z6W_Pq-I{Nlw+$(Ek2i;8gOdlgco`o1WM>4$g^o#N;_0Cw%f`SgzmuIQ1J}lz9BSRQ z_wUS^Z?eS|7S)$F8KJ6dETcEh4&mqJS_Zr0#*V7W^9?7)B!cV+7B0=^YRC*Yd2_z} zje5(*mgKv>pR|X~GGu*S^R!gKwum@kV&e+BADmFzSH8&po}PQ^lj!Lr!{s?!cM`2b z^Y9ao8xn6wRC$^a#X`~G&i_n{%Mdn`yckyb%!eu1)!?~oxT!7Snkwdz0~i?^JI=~b}MCF z?`5i)1{)j#oafou7UyoSokn-Zj!QYt)6kl;AELAmTsMprI@g4bHTZ)y4D+62ZJtD( zHy-j`zEhDG)B&un_NMaJ8pWF+y2)V{@4wC7(F=ur+k|E-QeziR-Aehn;lLh@PSCpe zeSFw^FCw10;18aIrx##hiq#{Hc9bo;LuK%)=iDBJszmiWbmcX#gJ7wm$3rfHSMZnl zefgvRfmytZ8y+s?B$d?@sN?6(d+kd$m~T`M^K#vsA5W)MQD6h|BgT|a-TDu~y{016 z>pfTVPciDiA-ij9gZI>irGRU*7q?J0wO!v}ST21n{LRGKS#y22omPFmaB9`qUVcyY zw#n}UazsDozCtqbs*^yAZn(b4%K9m2rZze^VTFPw3bKgU@B6k30t?63E*y^=soH1u ztp13dYH94#_Jv$&s#mwAN8Ftkcrw=8(6EQX94I+9J!Rm6{*77SFb^88>2AeE=GAy* zO-!4*!>mf47vFIJlM<1kfZ1I5U)Lf314;7yL>6w4%E?;2leoo!^}J_IqQoelW1f#Z zmC?oFC{PcpTZ8|ao>F&mmeqqtw)`4!xY9k_&2!!|*?{yX0T*Sy!0Bt;)Mx)qnEYy% zI$omh{#~hNxF54;SB_nNxnApf7PuS6Te%grhM|VLsz>C#IqlE&Ja)za*m|MdZSq@U?`oUS zaAtqu0hc$Fk2hb@C;s8H5`)vleT1wvVh@n`8=Qx%x;K|sOJFgSEPd8a!t)15dssF4 zwfPGoRooZQcY@5)4SYA*mw^a3f~LE=?cimfD=l|P4vBqDTz$8mB}3Zi{W0~#NFJA~ zSX@RQSX^0Fdz{?8^o2xFCtQ%AYt7H=d{&Au3NPp?dpPKI z$sMYYbazHIZM^Jr_d=rNVNr;Ow)ZmkMyjW)OQpKrfk0(QiEde`psn_0AJc*AMKklZ ze_!_?crZD7*m3{ovut!%Mc03$rupQ%c1?06lY3O-zZ7M|-C`ih#A$uDX~L5^+`O82 z`zirV1Q$P3$e`ijo|8{aolQNTA5pbzH{D|rWdI;@+!J)La*Eds)tu;deg7n!?)iZ|cu`Q2m6?xyMPs4lDsqKgw%bqf;4Z`hz& z(*~u_6z|3v7{G|HRmDE|l84{h{|iup=SzA#H@ev=_wmNr(9y^Ut)C73#19_#baQQO z*vyG6RJNDyhF93IZUkO`&p+VX`Se4jE?K2>;DO#KA{MVnQab6diLF6dr4YIf>?I~m zJR!XFW+#eHdoFJ}MG{!PB!MPaAD@WyQMo6o$HF6@1qff@())1qa{ zYhP=Bq4y+sYk79o0M05MHhJBY#_g@iBJ85#PV@B2O%OHNJgnn;CRvAt~s&G1IViN|ZI9-PreWj&K z+|j7Yfnk1UR~0$Wdp`A4=<%pg) zH~<}97xGOf54Alov0IZV>RuWK_gsm(9z+y^W2(D%VQ@WDdS(7x$@G-QN8R9$`v!j? zUHGVvhT(3Jx+$wwf83dG9sA_#TGC>W!=>w}Qo_Wqid38FNL5JULXF&w`=v5*sVygO=S<7S6apUOwJ$o^|- zp6k5xx2XZ~b29Z9->2%t@b?I7pPsc?d+si9UYm;_g8$ki^i6d2%_ubqGz>|mhS-Z9 zPuMj1@vB{nwKWobjjXGJrT?+Z9p7S6q*) z)s(~?$@H-7x8@?|~oa7{)2y&n5Srae(Y9rpNJ@H6XEUMHr7`GWs1~xc7VmjS| zTh@enR+k=TYUO(Bsc0#$Nuc@tDiki&eyph7*oi#M;E& z^UWt5jxYAjuU_Op>5so}`DYPACG5$AUshj!vJpfF-yO)m?b54USb~54^qfP$J#g`i z&zHZVFn?c$bzd%MR#|>1hptbYz4g-J`LvsWT`?)H0+&NpUWA0(1EBJEC!*`+AS12~ z=$`HL>X@u@n}V0eNV*#`bQk)gxJPf*OD3D0Muzee#=eUw6&v9rqb+WaMEdLJe=4z+ zyPwoAb@tl7Iq}ECQ+NhJ0;?ML@M3WneT4(mm#UxA z<5N)fcI`i&&VT$qs}F#iHyEiq2RxZz;r^eE+;$VQ&SvVVjjw^}CVAePKXs=ncgU|+ zC*V!CH+0}Xu2K4W?G#T<)?S^G>=W(5RJ!m-vsmXuh5xp|(MvPcE85Cb-tVdW%TMJO zBuB0&o%}TgH?nSOWDlke)m*bAf13>1l*8 zB7C=M5+d|1>T2@WARb_WydcT=#_Lq8=>L;mp~g0@fAp&$?8 z!>!C)zb{+8Gj$7Msxc$G$_o>t0DiF8TeD2hG(t@L^Nd7oMgwKTMTK3VH$;r3F$h!B zhRJ4VR*|AP8)-EDBiy-D1C*(ff%AqB4keGB-;Zkr%dMIp%DFrZ_oQkyxe9XC@E>0y zEzimmGaODndM#qVXexrFTG(@gYteTFtA&i;E4b8F_ArgLE7eC#X zH+=xontu_(&c+{h&iU;)pxBq^1aOE}rLLC>pwBK-Pc8En%`tUvNstZmck8s-!nT6= zi})HqaPlo5=!6w4NI*v|bKg0tgWqUa?AoZ2 z;-b8Po6Ic*h=VtM*sclBMtb+PJzTxhVdHbI5j5(5TX!aYVlWi!4QR=UH^4BG#9E3r zVp@`z{nC3qCO7diMaTYE+vdCf$;i`tmpO4`4YoTI-GTL8B+N1UOXuyG zQ*A7>vimZn!-*H50gpFXx3}u7?BlC$zeign{!Z5jl>|+dtwpTS8T$Fu2G%UMYBai{ zBSLWEp?!7{?M@*X1T^Z~lXqrWO+BLQZnHgw?^&FG+*7U3&$9eTjPD!XfpGo25cu2u zXmJuXRI_h$M4*U8llOJRAjV!o)`oJBR2zGCBh{(MC*OK#Kj3t2STVXHg>Jv_-)8#w z?Cm__M;;lUI=l3GMg|S0Qg^^2iggN|-9q(mqN%Vt^3qdT*vUE0y;EAxpc|+N)K#}w z!(EvbIByOodmNHA-zMP}Lvb(WJ56{49rRpWCA};8e`PYIt46?jqCK?rwg$1Ec1lw#F|ui^ zzK3^&#RrSlqKpMjH_94b%1Se#+ACd){j(RqYk1sLzRh#>uN=JdK0}L3ASTPDpyncN zZ|KlZDI~q^QSR6u&8qo3P@*!#!OcyZ?fW{bhMB0_%5&CnH?>-fSH5=nowG)I6cTg_ znPg-}e|#C!jg$XGfZ7W0Gtg=z$1s>Y>^gz@Qvpc+V&s?9grm1NT7^$N<`bM$X0-oZ z;L5ze2QaTZ{SmXItj#NFa__>fom}feczl7JBu*-GB*2Qy$Jo_5rCH5B2RVk!gIHce0_@qz+zTw zk&h$v|&FA47~g{@y3WGW;?D8o%mLS`*mfu4Jvn~2A13bx0|}6yL(l=gnJ2c zs1zlP4=4YjxjJ`ZSS&V%+Tp`hN|p@7Hjfgf6A882hpB|N7f}M&S<-3g9(#+S8z{Ba z#A^F8vXLAj#K%K@NY#!^g%s`0&$R^6KS@^J{OZ$(I0 zGH`jozFvm!CxLQ7sCW_fh$Cui7=7u`EO6@8)UUNlW9Mh?WgpMS?z(3;xWxyvL0nH+ z*Jg{1T$XHO_jWfc^gZ(I?uPu-tMg7=gdAf`!{lULQdz+0c#p`MTv9w#+TWzW9lCdT z-L*4^rbngIREAmz&DJYxYhPfF&D67Vmnq~m-H}qaETh#H`cT)C5|uTY^gq0pLbr$t z<{Z5T@S*P4g$e3X1bocapERUcA+YrvJ>PI$6_KbHb3sXDw$0>|`QSRX9;cq|QvuWc zozY*I&1`(|Z-6e-~neg>b=~fVhV!(*r4^!J00<*MH&h1A(jg zn%Ijqew0YQhvtxo7x*0LL&t?{?5|P~qniBbXI{>nJTKwobBP`poo-Y)aNji7L zzJDkxx9Q%kFJ9(2yzQ@@@wKD}jxGIVDAoSt)TCCX79r$*7@~dCk28_`HO6e(X@o&I z1kWH(ws6cbr0bfX2Rf^TjM9E*h+?6;VzMJw;fdA^Gzq%Tyeda~FKNx<%CSbfY*A1= z>EY8wKx0|vvn{c3JOm}OpGy3deej1h|GW;{gOljaraIo$J6wx+eR+3?P>b~9?^cjH zlFC9I!w_v9Ofvo=^{fz>B)R5SXk=2ZTg=|Pk-@9wc2mE*8&%(13A3jn%7Ip#;8RB| zTGS5eTtPK%fXUH4XE>H~U4j1Toye|y3-l+g`E;4$#DisuHu8RG#eW>`jgX>NlujLK zttK3~6E5y3fI){w{PLHh9B#$%yU*V}zt~pTJ^MZIFh?HFos`IG;*BcxaXr#YwJ7$U zMR!Y%J1%PMJ5Lp3PU)&!d9!t=%8aU&ZZrFBXu09~Hcz_)u0B1Sfkwu$4kzUebZ!Te zuJyJ-{4^&3I=U*n-a|*o?6K~Q5j$tN&;BL}9QW(fV@zm>Q|Fn5eENbEWtP^lr~mMo z5?4oFHt4~aJVbix^FJ0;1NaCJit8_Excdu6&fD0`YF{wBX~Q)yZ`X^!C=DeK^Bv!& zh#mQEZo=C8B)XMetX>ACo+DLqUK32MAT9rm&fyaQzU?dU(~d^bB|@dNDJIrcWbnEL>F<}r0-en!1+C7&3%Pzp?}&FG2_`u!9}kUro|!&9k3bCefe53igg|0I4m>HPar{e=tSaRIi^Fegpf z3bBnSK4gKUMC{(GA8T^(svTwjQQL5N`RaYEZz1JGSvoX4)Y^bZb>e&K2Yb2G6}3Y{ zmz_&Ns_6&rr)@7raq;t$6U{(%pN0Q2-2~bHDDj3`5=K^k+M<{;Cd+)h45w6VXBHJ? za}eby5xGGW_ua^y1-l)tA@)B50lWe+&18UJX6^KzT*5cU-Uby=`;*a9qN_zuQ^Nq)`~rR6I< zF^}kgqC(JAdaOu?cB%JPU%t@##yt}IM+0?P54J8E5! zIoxW-kN-ljt}y=DjsCqJlP&l7;g$~?Rm)ay`gU8y^IExwGBnT7U(Ov}n(ADH@aW2M zE3$dHwv$MowlgpxM!Ce8y||1x_`nv4PMhrM-Z}rH&lRN}rcg{;4=;#{W4hS>^~^(WI)Rkix6 zopQ!H;mo3+w>_)z(c2FswOYiqKK=wT+Wa$;I@HAJz^PH1eNbl#o`>)H0feMWk#0ek zNX(FGA8vVxY>+LYcxf1XgA}jnikaS#|F$JCGhQ=};K+CLrlyqBQ~Bh|o(riFClDcD z_XPapB|zjIeEvSKmRYDdJ9UuCix)sm>{)~R4QWb_jVLzbX*5hlkP;v{5Kb|pRvOazRvGLzpvvkOUz0r-V4fA#R5LY zeZo?S%!-8BX{1cvxC5l9**>hh=h^QZV{z``g$NXgL&h`DZijcQa#bOg-8CZq!T z)1N~BE#~a$N&d7uu2RF&)RgKkxi2@m+Mi|v9@W_!9uY4V(?`giZ#GSM^?rr>p9rB5 zhT8ntp7Tfx{_s8jtJfz^UmgfXi`p6fO1+SM2vIT=$YG?RrAgOAZEi=WkeLU_OIodw zo%jmE`>EoNN@Cb9ESd^aMwX>gujBDyS4B~^cXseX%jQJ;g(nP&pU2%}iw;{L;+i-$n-68Bvi|+$JQYuX9I3FAI*1-0LSn)n}3Yo5B7IRONK`@R~wL zc?X^8uQ0E`h5MlqJd{asGRA&92L5bg5a$Te`q;xPxI*1WI#dG6u)Tg4xH9kX+wn?Z(I=(b=wgam2u8kqw;NGY0>6RU>qm|@{B#pqFejk($AS9h`NwuquPZo^4qafY3ypav zqcc^HDpi(T-H^kok1MLCv%Ak=sOnDt%SdxKC7~>`SrL~5?ZfOw!h;eqceEbzF;J+j z_TWPb;@25#0>pF%_3Rr3wg1fF-kY8L`96J6j9=F!SXm1GYHSWD6Gxz%tCZ?3;mIy? zU(Bg`9ruAOMwHg^$ekk9t%O8|cc0;q*O3%iE735%YL}y2_*)<7i`-OZ^DB9~vy0MZ zJ@>p}$_?#%U)`w;v=tpsBOBsuf?AP$Of~vrIY>Qn+$YSh{h^k7kH3Zx-5IiAwu>Kgd8Z&t?}(-4peh?J_ zRxQ}<(@erxbDSm)7kN8!yrs)9Bxv8MdTsVETqThMx=pinovA7e88wK5LmV>{dUj+u z)Qhr6!HgqR*pEtN8TqsXj9kFS$`w2PuQuBBlDmGUx^VJ?`R^|99uw8y)Y$zO|eH^?O;-bXO ztm1#$3R|!tyDn3i6hk`Pm=-*i9I5H*5Fslf^N@Iw{64c&RJlau87%hAmgY&Z9?^%C z?U-PNIgL3swF@T-=T#;UrD3Xs`ctMH2-uJi%v#dg=aPNHyO!f2hwM_pl{tPYkB&f5 zF?J6zbkL($Ee^Aa5ND{i2T}x(B2*$=^>4DsD^76>KAWb*irUh`qRLQ%Inb+>O8OGa zUi4t8uOG4M*yi}iy_WHNPpAUPG46CKB5*a2Yw)MA>^YrAr@~73BKK4cSsH1n=kYs; z3|S_MI}S^ZT7fD&2MRC8JML{}*z-~hWN6i161iG->{NRU<+G4bxWtYvi0M=XlaP5* z1CA)Q&KN+JZSj)P@{~$i(fKstNSsRshipeHN%8BBZ+`er4oEPs5HG3TLRoSdLF7aZ zasoMB=}|<+S~`{D3MVosROE0KHYE^27PMo-tuTtfiVK{kNPa513^*qB7Kvs6YA38` z$T<8M64{M5) zG`VoZ9sY6_l;41?e{pg2=vHSTQ)!5YwGIRopt5MY6ra33c6c3199ceB*KKQ)m8zyX zByY7>TVX8ZTg}8Bgkm0L4=>cRb{94h0bYfjti~6r&^jtJ#hJ-?c^BK#uzX(n=(cpi zCmkl7kNO^<>LUkZNEV7Vk$~(2xmicZ*9)O6#IH_#O0$pnd?tAK_`%2!ry=TZ_s>zMEx%Xw5PR>*D;|%=gA;_ug}$QOQ_wROC>* zgTPHmKXh=hDuIU1F#WvGSM4H;4Bgn*BZ%=4#3c@Mw8QfFxIrN{OdQ;pHqq*fC=r;W zGlb_wE!s%?KQqs-vFsl{nSFPpSyNXf3~Ng3aWvCMsoK%#W_1|Si|3%m;4MqLGo*~e zL5^^0is67g<+8$d;oebFw3Vp7W=~|5cj0|V?#&bip}*s>+a<`*!fQ)it?SN9uj7?> zRc!+o6cIa^wH&SI(L+@`M4cV5&=^)?!di_tcntZ^qXEHzMO$hk44L_~h|6T`*=1PL z_E$UK{$Z$pqBRI-Z{jIc;CM=V5j(ONu^6-G1QL;M&hZaDfsscku)*+)IKzPrGWS{% z79B1g@Q&mTWhrxHCPQ);b4p)*QrU0@+{@qdWUJ7D^dztX4JoKZdLF+51>0rZIa0Dq zBV#YgeyH{oV=n`2?c#xbZ;oct$P`$suiT{|P99w93PY^bsLBq@R0u;ESP{7050R@tcD3MIdATQUjcla&eR1`_u%fS^ zwdmmvw%^lj=|LxKZk=~Hx-Q5fS@F?O#_&@}4o303oh0I;MfgM6ltFV;&r@5GmJrCH zkullIUpNKK1G`lnJ-lMIXPdI>P99~Y%KhBGRYAO(-ouMBWq1|c1sxes4;zf>gMmHP zuD-3zwY(UK3vKFveGrl3B=g1#1{#NsotjiaG?85Y7zdJ{MXU8L8gdBjEetq2C*W)1 z{2yfVTCw@Sj)&F|kzUGHmkJjfPDyB0!h!~LF^|!i9%gkAUA-%QB#vr7f%Kd}rs#MK zu6Agd!=oU&RLih^m-*d)?Ns;*nOIkVE69{{V1srxoPw!KnJ91c#bTv{^7=+)1 z99rtiPevDeiqgZX&w>*{;8J?&+U`~?NH+o_vy*2zc959-ws<%gdfe8p2I`vc_=OVI zIh`_8?il1?mxvB`)MBzfTUwhDmaE2hx>`fQQp>UwZAGBxUkP@fP)$CnB(auIQu;kh z1c&2@+~#^^0oLJI|G((?uN)TGz8Thi#^E~}*W%L{5>&zgjyNCgC~sr4~sVH#&9E=$9&#};<&g(Q<-G>_U{a*cd_@6{m)5ZirQqmG*w}*D<|=zS z&oorExn5m;jx5xy7u@MfNPUz;Z{LFH2`uNOqOj_U0Z*>4^@D-9C#2>NoNY=*4M_V5 zl&XNa3{$I|8lAt57U?itrOtw&Va_6sN7_Jjs=JRg6Qzg`YIbwFBQR&~(swproW{Ei zyG$Ltwd!5gPx%MqHGW=O5G8yNF%Ept83Vo0m&2iwhUBg(hJtu~R9PFdkPa^0$tJ+O z*aE&EIYnC;eX-OALsc@D8J$#gAFTYqkgv^y3w54PzWn&6s2{o=3x}Y!%VH#?2@5@L zx&XFLhV4lhqLm8yJ?6CS_Iyna9Sh44X{Ox0=#ESE5Oee>CfUWV5zO6~eEFR0~EQCmz| zVG0C}mnZn7SS6FB;qZK@9Iz$|q5lFV4d4U$d?Y6r5B1_FOC9y2Q%G`EABxnNRQ6HP z(g*X;N9~oe5<>S9>p_&6ccYqIY0I%pMSUTQEISCxFtx2$F9G}G1#CO85l^{DMZ~c% zXe4Lpbv1^IbXb#t>pb_WXUXef{{2(?-lWN?*r6butS`Y@;pt+=8Lr~0iKd}Q^k6)? zKDbl5ESWZ3D)>y%1LGjMNB@Xmx#Y|5$0G2&_;6yprHZPYY@tV_uqIpd8~*LqL}7SxJch%(8OxgRDf-~<3{=;8Yl_jv2HG6p zM7fj5)kX?>hh*p=7?_lPhZv04(sAffst8r(gH3p7aug^1@zM9WR7w^Wepy_(RK7$p zU}uxRoyH8_EnSwXsL#={Kzj}}pf^suQNu1R%fH#-pjVZBYxiTjcfk_q#(l2PedXuK zxB}Ro4Z=#LZ~VZ3n@Erz<(RH7h=gun*Z9@%LNtQFm#c5lk%7qq?@UW)dNd>8S7 zz2qj2QZ+$(v7Neq4I8=r(<)hUZpN6YXiTA%l*rEzmU zLZWSFvn;{zbCVs_C^preEM>T)E7C-Lu_v52XUHru7Rnp`mhl@!Y$s74gX*O55TSXL z`q(bhqbb@|iun!a5`z(%o6AdiDi2%E7GYZAaSsR1VJJ`@N~{!*bOhO>JT{ZRK@ppX zM)l&wWh9neo@k(C&AZ@C-KvEj;Y_Pb>0qIgBb(LgTxA%b9O}U1mdNewNS5dUwK8a3 zkw0t9vQHcw8QytDzBM01Y&BWZ?sAKD$aCncG!_o6wY2$?NGo6=A?V_@>^449U!N0< z>oh}U=Sx`>X^;caDw&3}ag@hVp5};iV*b(~?3L~P#o3n;>n?3~gVPFNL~II@Oi?E6 zftH+iRIA!SN8WWZs+jJdXQS}OT+#G(9M~YbPt}L1I$4>Z9|s*91(T*ReV;DAJ>J9K z{uR!hvb5|}{xYDvYJ?fdv;nymR0P8em2~##`o3M%ts$j4`pHtgF+wV!BEt-W1N!v= zt{Gx~3rqnPnfFeTWz!ce6P`Fp`8XHVB##wsmFaZAi5Jiv3KPm240LLzy9nYUtL|aC z6V=&QlU-7gHOM?04%J4KV(^zvxr-B&?s@VW`R$1>tsi`LZ~D#TRlr>mSDmX~__CH+dzeAh14x z!BbgApbjITVmiCJrz0bOr)Ik!M`tth-#a5ph-!b*$+$LNq25ueCl7=Ch4UghLrx2==2Frkom|QJ6GH0?8&=6O{g!_0+wF1D?WIbp5G*kcy5X zW`teQ2r_H}<#Du8TyQnrM$RD&O@VWBRhHQGMQtD=5qXiY z0k?GVR%cnTm*{?u4mYSfKt7bM!0dt9io(j8FitzOrOOlp99T}iXrq8Z$ci3R7e2lR zlMh;ckG0vFb*wmxQ2^4GWuXcbpVvpXTZ#g8H2dx4@WoOp4@YB0k?owWwv2A1q;Vok zqRN9HiKm12Kx-pxBJ)t7fFMoTh$EDtKvCtRcT(l7=1%6tbL0ET8yR={b}88HcYr@3 zO_(96lC)&(0Ea5;zc9L$NCUKfZSsGyu*ITA!&Y0+;v3zJ`ZlIOK?^ip1r_sj)Z&+(nQ!Ae|(e_jTBJNl+Dn z6Mog~`vhA2MSh2~vyiRU%jyH)$-{3*-X_-f;z8QUucV2(QtA%{a}V|KxmZu|vln93 z-YyhH4x71!2oh$c`(b|MRFsPiR4oPE!%-wqmMWX#hdNwE6*MHNl}?CAs4_jO4!>2f z?c{coKib+d!YqNW19C2CP-j2XO8sudMPy18AoPIjAYm2{xBFJl#2k&&`AgB~Gr zO9vVdwSrc&+msd@92qoF!s1ADbGdV=gD~Ex@XC9!;sMp9|5A*LHD@%)v0G>pD53Mx z*%|6>>6hkqV_ORBK%5sbd7zomE(6F#8?d8z>xnc+aspy6gjvm#JsVRx+UOw|%$~eN zZI}Iyo+*bNia0n1W1m_zd@T?Wm!42x9aWI!e$Me-C}h(Ymn5t6`<90Zvp|=We)EdH z;7$YG_x(m%A2K0}AhPV!jdkRc{S~91Km4T$1G9ljBvkik_X-dsCmXUD)IwBv8MJch zOPdGg7mAk_D=+QwOTjSIo|dA@wut27ZvBB2`xGPsxI12-E;9xJNsbEjae5Fx&{*sw zHzc4HeQGf~h@%YUkML`2z@C_FVMRmx(i7y`vLe_{sP(P@XoYffP4 zoxCx}3=ZB!ptyjF*kR8O24`fcU{WE(I-?^i>rr(<^2U2f8)}x(&V7HjO~~@cqh!^b zFl?w2qybn^(16iJ9CblI#x&>PcpN8DTy9n@4EU^3t;(Y+it6NvyjUtpYob}l6FK2% zC1^7B@0#3;zm~25{z`i(L=lL5p(Gk}J4P6S^0}jrDjm#JaKi!e9a8~T5Jn{X%Oj0y zZXCJ~+c$b_yhp>DtZ&qHUxJ)#6Dp6~Z~S5Fr2@`py<6rZm@=T6WmhagHGytx3ec!e zAMTB-AN#79>S$94alf6Q$?x9t2g2RgJqe z!zH%w#9-X#g>@_PCZ_PHm_Ba?AYCt3Oy>aZv!>BUvEOb02}mSw;(`m=e>lF=&o8Ug zzq%)|Aoe0d>0(_9I&A?B(q7JF!%@*(@uSY$mJhkSQ5XK-` zZ4sq0)mwH_6YAsSVMua59j)KqY8FxDQyfGk$FB1Wlqf1U3f?WH(KUC{lPS)U$B;S_ zT>LI*>U-j-6r6PxnA8|T7JW<6MxmJ|D2Fd4S7O4D2-LF+;1A>_7;@YCbO*}ySZFP3 zZ(atf0%@6#EYYW`KM3gfwto}5f`xaxd+A3h`zA`{T1>`)D_v{cbfM_^EyCQ=C+6h=@=`B z{U6Po+<*=ZzgW+jG`awKB$4AnU8_-5ALyp8Bq_a)62ppeoyR?qZK=0KR8T}${e#=J zRo^OICJd{v^*I3icbveGq8tmU6E`yLHQw>3xX1bm_>1JO5;KcmQ)v*q7jzFPEDA5F z+``c`Vyt3Hs~z-lFfkj_A=_OQEsmSfeD6nsIb4^w=94ex~t3Wv#-{{8_ zEU3o~J@QUuO1lQn3`RqUK+q5!S48**1uFc*rRI&a6sf!DPW>*ef7Q>1{Tg@vnN_W2 z@XbXa$I=9ebpKu1(K&E#4QGpeeH6OvJYH1a-a-gXx$Y?PX=S_63}n~7Q;)v~iT#=- z7#5I>+f7KRe{Eg-&%krbe)e|L+ouE>FA;JjUc`HpF59~}855?{1ssG!Nh)KOVW}Ph zp|U__O~L4;%rI$R4ci})nB{^;IUxyO`zpDf;2$=6>j9_jiHCCi_bg9||rH>{J1S zihN!Q1}pRBXCTcpf*DT2`z%H9h6(*xK_K^GU#INZBPEYfvn4*VHzC}?w?(m}{qfb@ zjV|0->BjGeA|tymu~1#R8VxKuiH-_tu4f^xll}V%dCsZy@pBKUWPM*2D3xi15Yu`_ zyBjrv`?^Z9oXN%hrC;1X2mJo?X4N|6iC6Mv3^=AEYzg0w`0?^8AxQ`b0D8ANuT>zF zfzEAa8Z$jmTbAnKDtJ*=LVafoOLze@)?o(;O7nRzworEFJHjGqrShj%b8@Ny6bN-i z3r_X90|L|K#dasUsPSoI1(^yYhy@bt^aNiC=9#~0ET=ME7ssP}WAIo3qp*z)*@dew zgjb}$Ux-O9&T#2wRgr3W{ z#z9X+kS)lV1I$}1>?1(&7v(h7R-ygj#O0<(KS=DDV~-2B&Iqc`GUsA)p_INz1T^p- zW*5U!WoT>MiIMh!WNH&$RLRu_ut%>J1{7_P@JkG`Qoxeoa{thc^0Rc@&~;VuJ5k^L z^Ndh^Sdwm64o94 zJP75@ZhCIFa9(S)e<841cb)&xJ8FzNYQ=Bd#N#@4 z$3gO_rx>_^1iutfgPMlvNq8r!TlU*&Nqh`cb&)(2H(djo&;99M^6Ei;A`=5a`*B-f zel?nagVK%zZhJQH8bCYQ3{61eM*N9~o-4iEJuSC<9L}B0$|A>S$VB&}_E;l@?wpJzt;IF6#D(wm?!5jc!hR6fUfDoC5liR(Cksh2vc6 zR4ezFY$Z!*dz%I0D!ex)ENqv`G8@YhEiZuI0hz2X=A>XBe53d{z)q-9dux}eRQL6q zY8~@ROm*o{$zh&f5GZ5oZWQtlGmRxEvNm=#YXJL=9wf?@W7Gc*L< zz!hcb!$2}dp$>hgWWzOhowB?NP3dfIYb!21)fa1x+WRu#VJMw=m<<&WNY-V!;36t) zm&R|m-_Rs?fUC?~jHDUdol{Yw{aqU{=Q=~iI}W>FTJyP${e>ehn642Tordk?g;qZ0 z$F}qj#QVS@NLkp_Cp5tq-5}cwZ}t0s?Ol6V(&yXnwAcD|t+u&-ZO%jGw(_O)*TDlG zpskWxrArI)1Y71I@lcSVATZZ{bDeZ957QJ|W~K<_0SysobE&Cd9)NiOS_-Hrq=3jl ze80A9Z`<|OOMkq7zFwEt<4$-RjW-M~%7IZ$9T@Qf^ zhkYDOVuz2Yz!X(mT!M~06ITRkZ8S!4DfUY7oVNMgjwJ?z>MQ^{9CH(A-U^wb{%5uX zH(cl;1bd+g6ZVPOL!#}%IpC%?D(Wa#msO2M0^zB3hysi6o`_1KDbs_hQr~<{uKYPZ zWu$g$!!j+y=} zr`{t@ws2jrmif6Qr6PPT|j~))74~7CoRuj;Mf#!@l%Fheih7z`3X{Z^E ztlA-IIu83=htgLvfuT3Pb?%&~P5~}3JoiZm@7?}TKdDGG(7-Q6w8RG2#)?Q3My)$k zrij-P+!Pszik);MY5T(smbt*Y*X_8>~Yh5SL?0UljVGnnKI&-;rIbb*U_HVC7)6B`ttPmbZ z5gGA;IFb53NSf*)&oGi4)=v}OY&yq{-ZxzAnUL_U6qjc@0R6rqOSk!_Mmu$9A;z=z zq`f&Ex)U)8tZoIk?j(f3la;jF?V)xAxG?AT(4Ud_fh*k98gf}EJ&dg^(xfM&H87{w z0Uql1Cx%|hI-&?@`Ur}uNIME_D4wfwi5|*oXYByC2>lrs{Q2R!xi;qebVgbz%0!QsY^9`WmZ7G*k z+?#mDM|I(&SFBq7)~3B*EnEJIKb|FL_VUgtfsXTcNWHT7X=E8Z(yf^#<<_Cr7HItiw$x<(Qm`Aw6U8g7BP3Tq@C z@9)g7#f(fM6smJXlz@SqfGkWFBN|*>_>ZvVo-xD#^)!|4cb=>#Z>Ek63|{oeHFApc z)1o4P>qojo`NH#m7g&2R`FJR|91|&cG_wnyjfG$W%%AiqDlIj4MwAIeu=vMU8uw4T z&sRQ}$rIlxf&H_I`yf;lFjNKL>(dcH&pyij)fU`_y*8V0b2DN>&yl zK@Hq>JF8q?Qjb2M$VtGn;4RtL)UK?$Sg&L`BARB>Egwtc3Qom9eCet!23qmEhj|zV zqeE6!9!bAEFgDbiiYV)Kz}V93$;1lwI>mm|)jvegMhcmrQFs!lK#I#2i{a{nH6@|h zT71m*YyBR@RPS);cYH!hxZgLN`MdBW^C%{Z;Amr$^JO z_bzBgjn*j=!gPB`$^c?LuGSaY?18170~Js-xhyOOCj1g1goh)oTCAT0U!rQX#i`C(a z^;2vJA*s#Yy6aAW&e}A$r+UpxlR9sQ2WHtam)=ABKRNy)tMdV-HfiB%yw0dznAxD7T;%$HiY4KZWCOc4QVG<9|j!5z!uK=#2!j+w!#2>@N@x zo%#qVQZU2Cb#zBDx<}DC3x*r`GadR4RNfwCM@t83;H3_J;Zy)~JTl7{AudMmg=0rS z8!rhx%gwvQA8h@1Ntbw6qpw=O&8$o4ObbKhxEiYNScMBJOOY8wC>uoJ)TMTHeIE-P zTijf>48X&O$0K@Dga0P?WjUO|d(eAv zPi}g7FT@Hclo@Lug0u*$y3n>rzn znDM=!Anj@Do_46zeAq{&Q+bR!m_S%-A`R4^xM9v#&_sE9+DxJg4O|(`13HCo=C505 zm<0|T5mfrs{Lw+nv7{o^HI=oz`S=ZTdGoHq$v6WmZY-mM=`)Man+&92!or*%rxaQ>oda4xue0*@ADtK z+F@cnIhM~_=uQ$;DfAtTZG%vJy5}sL~m9Rw{=lLA-gq|Qn`4AgB!55<&x!)rB3H}B( zzstzDPioDq(QUb9hmBoAN75d6&j%7zE|n9A9?P*DJjw}DdtUCruwa}r#~fsjActO_ zZL{Qm=VW;wd|=(o^FrqTP6Vw=1v4PVewe;xhWfE=n;rhfEjvs& z(G?5xPnFEH%h_ZdEo^_8L6YyX3(TRU(gQRa@MC*yS zs-uJ1Ia51%vv^H?8Wl$gMG}Zz#rTZVL6X)0n}B|n_8|A-?p$zrG1A>3MJTMTlvFnP z42M!b<}KipvvU+<#l0hu_7kC^?6zKgU_g+Z@(k7S+4_6hXGa>uHOYAzdH9SkT-HS4 z(W^8$-BpBcbp*QRS3J{=Le@KDT3P}V1OtUwh64lAdcyp;&{lkWnAzlV@=VLO!hi#l z&*O6`>ih^YJh`5d3#JuYiYKjLNbz-aAaKHWJ2=cdKjY!j@tH^5h0kN3D|2w_AU_+N z>+DJuSzPsJf{ZHt4)knVg;x(4%OP-f6FhC|P_p4W=V~xJh{CHwHZ&rdT&0u8+Toh( z4>w@Li9k+f6kHh#e@@YKY{(#7gz zu`-g|h*w0an!{z2y;q_J*-dwRZ24t=Pp0YdW5EJrE_)y+A)E!@9uN(%6Q?ThE@ii~ z)-RFv!6Us$fK{pDOPl9h)nymPPb*1qJU;;j++N!td;f~=^1$u&`Xf=+#}NT|j<)0= zw;>-R?=p=6jK_3fN?xJ#H^?*H^-boP#p2{sAW3%bv-6r=4^CLjt z&yoVXC1s_uNw>hihgzZGVdkNr|35c zYDmB*;7@yp;1cz39So-EE=1nP@Ydunn0JR8yhl?2Xh3arwT+BHnbO~Hb~xX{0({Vt zoknf%J&8tQ5*`98kLhiYt^>1GcP#ojxF}<6et7-qio!bl-Z(h4)8!FUG4i%*utB6= z0wuko8?#8UltBXnI-4;-DuT)F^J@sd%{b!!Rt{g144ENM)?~$GPi^*%JC6HMT-<;8 zqfxje`((0UD>=!moa533)VDQ_Y1FXb@_CV(AzM8o!13d|WMr1N91D0d?U57s)?Tt@Xy8yt|*w&jGj(zwi^1hOz zWCCvw2b{Jqg;GC|=ZxX8;WO~@x&$aE-{gQe{@@39FoEul{Y`}|9g&Oq{(jG&+J8^$GD>uXXRvZx%#ifgs=`_H&H0!BX zM$ey;ACNLjvl8Ki1FE>xxY=?R3_G#onj&!4c(lhf)|?SV>(R!FsV0Fas+0W7V$7GM zo1i6}%@)BX13k+lG4IP^tih3kknro1eJPD)h!cxF^;&Z&qbFll$`IGC_*2d+CO@*{ z+1pv+zT4sq++ENRKPvb-50m_~RNuqc6pm|v^q7lPTb(*O#}SUn;67}Opk{8ucp5r9 zT4b=FE)}2TASL8f=%lUk@W5kjjq|fGrf(nAcWa0@H672@QKp$S9E>H8_zk5uvxdCO z34Gta)V}J5uzPmmOsr>|HY`!JRV-H}5Ge>GPPfhczAZ3XzM{MMWDBqCRaP z2WZe5=)&2qd^2>25QA*+3fWk7$OUuTJtWjxagrwUY?`X~h14sB%mG_w%S3HR6MtE{ zTSXUK8-OMBdB0P2Wne!+uGuxTTdY*|rl(uS@iCg-=1Q#W>^6C4oX-#;71;oJE-|Pf zndwE&11)GvdQ)+{-f)|n6<7_)*CMUiF0+BX*q|NYUgPFd#!z!VnG z=m!a@sC1;NxgJ5~y=Now-`e!d4}kSK$7!ao=8Rr1u50Gut-%uV=qEq2DHGkkFeP0O zK?`(ZItbfekF4{9ii(uBt~<|G+YAm3ob_0uPn@i}aze7$D8Ih~}zpO8uMPi^C}VRdBc zJ!PV-T&tlVNNZqXcf$TQ9L;{PtFbr*x(ut-PM=gA$-(jYE~7ulKMnh6GvvEr23%a3RSCwWepO8(*F}#PmDp)B0$FtdSQkH^_1Omck z`~*>zN;$iDxW}|Aguapz$G8v`1I=9It*srz}JczRU`U1Va9)TZbn-B1A0^eYl$mW_+5JxRNj+Y<- znUKA^O>gtC)8o#<*GZ5x<(Fk35%*Rcejh?#%2~kC{D#F9=~+miH!IE|k~w#R*x#NO zqmj6nw@#-T>Qy$iq_{sjl$A;!QJvs0CO#o{}$t8~G z0mS=z&3Fmb+`}!yF`&b;q;$I&YoTe)$GGX=>8Vx(%PD<`G{k<_HWj68d)Bb>6Wp|t zo*JmJtRcKNtr3;1{1;JO`P&F5hb>m|GSd|H21l}Q{>$U}1=)Slv?#0<$k5^sDCOd$Aok$2_riNdlO97y7|hf-5PQJD>&c_#G3cd34*>_ zImfii=`z^r3;9`XKX>2sAKaND_?xdmChX_iR(?|U>`2+Y_V$ISv-jl|knzLT;31XK z8;i1|8^R(k+0cW&@$71)!)P#O;Wh`UZ45e}`u*4{q^CY~2Q*c-ffr$`GVJ~8LG&t! zes6!J+Pu>PlJx7BB@2wv{-aRhqFHt~`!(EA`=HY0v`M#+BNOn$vQp?P7rlm42o#mH zMPPIEgQkCE4F6mKd>od6TQ?ZF=s@~;ej{bZ-AF;z*xA z*j$svJ8wsHwtnq9td;uy>ld4jS(fQxe|DLw6?yk!fXm!3zQcNFztxL|0@0Hp=+fl0BeZ!`}G~QROa1Ghcg|{**9%9`TG#&(;6Skn4b*_VUrQrMB=~X)c?z}to_uYXwoS#eWosH^RbU>oVFK_5llH8$CMOF`xav!n%t;XIjhzhm;aEMB>mI9{8!)oME;35A;P4eKc1A!w)d^8V4nrCsXe9^ z+>-g;Z__Do^B&&Y?>6V*vf)-y&%0;@7V@28l*(4$WN3SaiK7{i)|x(R_Q68AAQY8w zk3-wnk^7ZGxY683|~Hgbw{)8hK^CVS{H3$CHFs;57@1GILr_T)lir%jNt_ zktHt0UL@>7rok#E4CqwrcEt0JS=>AyVO`946Nj_0&uQzm{brjq9dw2hj zUo;1)vrMHE^J`xJ_!X%c;>^Y;$fPAQG?O@YQBpIrBl)7!diA}OirpQ>zC)|sF#iXm z&jBy)zq&zug3n6!Gvi+EOYtS&dlRJJ&1)$`zTbYDK;-w`W8yjG12({e?@o`{@j_m$ ze3;vN!RWw6x+ZrHaxdR@B-APZpN>V|`}4?yvN9@g$;FSoEuhmeMq-uM%Kc4uO))t( zvb{?-PiEBF8du z;>%A&(qyDH@^;Uq|^5vc#k8Vgs>XK4Ipm-It}-6g8Zm`P_5*Ib;c{X02f0 zuMsr3ITe?k^ylP_-_vYDD~*^GN7#G+6D#Sd$tmnq?$wdkQ3-zHAuv>OVNSCD<2xJT z^{A6l2md#&C$E1Cgc3Y1SAJvcL>Gw1vgkXzzDgo@Hm^Vp>X`M&xZ%bT-ZSAU0=a?5 zmWwYNay)4JhnBa>8!u~XE%Np0b2{E;vL%^_rzSMCvUjNQv}f3im+sEJr}}fVlj*U1 zC;>llTmWs~$FlYJx88BE<3D>xKXVWA!So$p2|+}s=3CN??}lzSOm1W^-EJaYS77wJ zal2E3|1;BF!f#K!+a1jl0DxK`Bi_>SXnF^JWcx;RsGsPKrdSNov;CO(DZb*nKRyb z5GJT?wHJMtZx*LF%Y&_~9sys>}vZ2e?l4?)DJyQOuLjt$bPJtVF zW{M)`Q@}I&r`b=ulh2eG`}VC(Yk6jKvy>#(bBXkAng`5MJvrkyspsDh<#}$vHqJNJH-TmHx(_FrCcP%f zCx4dFmxVfVIvzRJIC@SFOsbb+p7VzbFh?f#8^B%+H1(edy$t+#Ot289`_PfqOT({9 zT611CyV$J4tUOo_n|xdQrv|f}6;uJ*15`5^H}TB){dh1tV_o+rJU){(s1H? zy4DP`uWmc!%49p{tXAOsXoTU!z@9pp!mwT zO8-hl(<_fUFPNLe#!*mo|D%Nzpf*D*ssAE>-R3ZkeNHsF%q2 zWxk3fkWrI2NmsKeNkl%>p%9|pe$>X_BpgOdPEpIVrdi@&!d~yrDK6}{)l+)>7e(c+l;OrqJr|H_7Rq zc4ircVqBh6rL)m>vvu*$9we{R^u5r zsGGy}1tC2gv{2?hOmsmUoE|^C{>#v%qiO%i%v7VJm6Eywhgw)~Bnv_`zkoTI}Q$ms(R85)dJ3KECjS_?r58}nmV1Ap?7`Ve7$xL;f8gp zf%^TG8m*_Tu4uv;ZG8(9%@$CTXvpq3u;v^d?0#A3*zx-^32T1;?)^hO1wDwKn657U zgm@E#7EGys%$VU`a!|dy98L?%kZSl0Phwt*Jn3WXV8sR;*!PX5Sq=3%#?jF)27e6B zYr0>WsV{1ftG9?q7#Z3N0rPnUHi7%;!8vGlxn>T`MHj_|=$)Ie$X><2Bt?8YS;1%D9 zMGdbPJ`<+iE%1@evDq2nLX=md-SMnb`!uf!X-hCtVJ5aRQ$W-e^J`-h+6~2A`20re z`|j`FTQv2EcdI&SAH$B_F(T!>v^lDRoAoYelL8qbGSLBE#{%nnF>K8m(#Jd@DuG64 zZ;lNoJrV0_*h_47$eXMD-A{kI|HzK!4urUbIGpXDn45((koJ%sLCK-C{?N17p3IxB z=taoA*Y~9SKp2-3;NG2B(p1K583-`?{LtBN$Zl-Cme1Clwj(?UDw-tx{Hb-!%orH& zHdjUx{&&<(yb_oK(pn9fS!Tgl(GBw+uS$X2{9{<5-vL(d(<`!T3P>;D! z#}DM(kq^alv=cQ`RCS5Y26IzUFVtz_4MiAf&T07-_L2|=kVVnxp@A^v~UyT`+J2?fR~@|zxu{CmHc~F{H=qZjkAHg z1Hi_`6E}wRb0K~q$$vHY$EE)s@_#fn{O_g$g3tN?XVd?2=|7rE^8KB{|CrLh*Xv(r zaSJ9*B+2(*i!V*&p3-W9hbN1tEdNr+@5XjE;rqwB*;gTg$>;Y8MWYB=9^XK^-4J_3 z_WFV8gGX+Yw@j;a-EHRQJNznYIhQ`=RaQJ+V2i%X`SmHgs8Z7~S!F^POTzgV7SF>g zVEHcz3dRsPq`TD99{}hfnq%kAMm9#@+va`2W}8{|yKd zo_&CD$665M%SGa?_mIKUor$i8xQSTVN|!W&dmkvDz27K!?K?+?66swgLws|-f4vT5 z-;ohAk<-ba2m!*$!tzugymFAcT`0?63P!KZBICewREOH;LSl_L?^`@r7 z_#NBm>uYaTILnPNBRP*omsZWYUJ#q-I$AT0ayA;Z^w&21d%F0M_2El7uj>Vcd^peD z?Y9*n_}6C+rZLAoE4(KfPCK$k#!fq;0VLO_8_s9%Wy`fJLroYghM9KXrwrERYJJS3 zzUKbp=#6@XfXrU_^uEHzc$-8daJ=n2Jm=-LY43wA)B6|YG)J#0NF#$SWpDeZVg>pn z-v54bZN`+1A(zdXWRbXkV`ORf?osE`ZfF5RwRuuW!tHCW0<{v}gArMV!P=f+nl7mi z8`f@1Kc%F64GQgED_;`?-`$?PUt-7RgzEf`@3%o56KgjU|soqO>#{YB#Tbi~coGlL)BC;+bOfEN4`JVBoOO5WWdr zZ^kvd`+7-0hMb6S=W+)Wwolo)PQIgfqKx@t^ud(tux3n(|50P9*6oytYcBOYQG7W~ zrU@d%1QF1=#q)-{Dzdd;HeERIN^(zcvv`+J^_mdEBQT1WEx#L`0nHs;=qM6@{-C>H zk$!NXjOKjuGf<_Yn1k?|cz*xg?diy8%Y57IWk^jZs#?>Ao?QnFw72yUw; z2pOO$ndh9b98<&L#mw~_aczb(LM@E3E>$NCO1b0FK=lsql41M=QB9p$2fQ7Kz`nA&_ss;$gc}PoUSw^w@)c4$w5zy`_N8>&Ie~mPc__oN?X@y z{k95%veCa|B?YhpRyS&y*Dd&LUzeOSvSqmleYa+(17<5h^FqCo?;zPlA>KTKS+}@C z8_*cXMg||0g&_Kd)E7W8ni+X*W2QF259PQhRYYK_OQm%9T9HSW?;4CN&AkU1EAv2| z@SO_8;Fwt&M1{US*0ETJu`l$RwkZ3~?}2>^KRe8)w!RRW-2kmu9C_D}2?74n^jrcX7r{}YB#|FCHgK!APEZ2hvzh_EcPn^qI5#D2aq6UQsbF~`Ijy^~!1lKFB zy{k`$xZ*}|`Iw~O>Y9eOvEU-6yJY$`mey#vSxa;F)*+XJ^tz@iD~>HMA z=)6(Vm&cd-*c4}SN$oaTJ}>TC&_ZJk>-EcHJ1ZGwUO1sO=FI9UNkM35y~{)5>*3px znSbrmbD&@C!jKV~#0O|m+CZAh;Ex+)>~c~kxP(}Vwi#$xuNxEFS%xD0ZUjFTDKosU z*E)HaDt_%r6fpA}e9Y#CgS&g)O=1EI(~h9A^)LlUDnuhag>JwyO#xs`iPmw-AH`g} z)CaV-2iM>>o6;%X>)NIte*Z%NVUS~kF#xMDO&lNQh`0|Zh!QQ!76SHH{CZ3AUC6Q3 z5l{?2o17>wio0L$i0URCtJv;B+cqq0V_}XGH8-!h-z97xY^i3fCp#R`I@(nk;_%+d zse@icFb10K0mBhbC1X00^z{Rkd`M}UPZ`+Q0jdH+eJ?9g_miD6lBrL9RMm(r5K+Fq zfw&P)7}sl;V;#5jjf%(igX49LH84)4D1=6xvyOzrnU-hzH&z#iuA>RKLLnv-+$OWZ zi3U}H>VJ*tB>~5-Z{yMgwU3TviBAepn$?tUa@uj3ck$L>ND2A;)N2 z->5MMiE@zG{8~{DWubEzr=8Vm(9xS z!PPDqeo%DrrW~tHc(h;P1B51kE_JHBAV@HUgtSZL?BNs_zLZI-__Y_CYgj+)|CAZD}*6F_!%lHQu{fmm%&>7c8Y}yuf;W z<&}{so3@hW=v)X+E;3<;*;f@gR3&-rF+T%i{h;+I3?vuASPE+>YbwmaR`&Qj^BzkX z%zHyA;>A>0vr5{eGH@oI3VAS9E@B3dDF?&{T$9W`EWi0W`Z2>1QC?t{QEQme|06sO zD&%t^V5B^2v~|*gOq)C`&Khj_-I&K;m;=O(3>SA8NafPzHNT_U{Ji1!`OVradh;PZ zE}mV~Cm6SL*ioe1bwiC2ae`X1-#U)WfKv~oK@_L=2joAVh(pr^kIt zeaZ)%UVl)PIx~qKRM|@5GLF9(v89e@WG~zgniaCq5y3$XeYWqAmU{FgR&C&VeiY}< z-MMMMp8-DE0NYHif|^y*Fx7_2=M<@cXL~AA z=SHRIdgOQtmu`_xj*pjC`xyK@m>#HF_{rvH6AaFp0@ME_WYf0%cRPX&RZU%)V{GaU znPUK*x37u*uSWQTPd}FyGNw+bX+uoX`OV$20rOSGuBCnkJz#|=9E0l)hMXNbIgN=$ zZ<>ADz;5YNE(UCXwj9X#(KqL2J@WL4@~Tw0nsK{Hv(bL?7N^>)io_jJIJT#Gai+a# zET#ClvbU+nBNb$+Z1Y81>LIcWw{_2W#*YL_c^$3^n;UoU-T%P-NhB4n@^>7q(}8h~ zm2%!=#7c1XPGc!wWxZpVVIka$RW%wiwpRZ6RkP22;n@|qJ}6{xtR`TVXWsEsGx(`l zsiI7IO*%xq)T3~}{#*q~1=BvedrY?)oV51;iC_d zUclbH_G9AE5UTjj%Fb>*2?+zq9P}~AO9oBq>d&97GG3iLn9gq4X`IEj%vXKcC^2X$ z*Q$@(f8 zf1;f_JN6+_*fJ4DN$XkhsbzcE{9RhEG~P974a*9`st_#d_;PMt`uH362(b&8pP!!^ zAAcBCv(@Ixe_gKpJFB<1Zba3Ji;FvVMLswhkt4+pY)ZF#&U;Tw{eA;*lZmQ*q(T@U zjigZJv*S|>hCk<|3fBS>!3tyT0DOSf(gA->jj|u1Z`o0ox_=*2%cgdS813Bzd_Lsg z1IM_AoFmwt^>{cchZ%&reH~-DrU~KbrzHG+n4$XlgQ(g#@vRci>?5nFy1IUB0DfRM zfl~LFZUcjVyK15H`SU#+Veb`@AD9aCCx}yYBCMA!qqXrT-$)R7QgSGVU zcJ3K(;N3My4mpLH=R6UZngSa?u(EM4cz5%ft`wI`5{i`N1qnJx7hn@^cL__(Vhacf z8=kq(N5bM>)p*&2V-5<>uXsTEoQnuv{i2SBpo+2my|X>sqjjV8p}eH3gS55bdZkbg zWci>zw4f!mpuD2XYgJtWU4L^CyW`u@+wJQmgMa-+dM`^%zOlJklkEd{m>Vlpoxc}O z%Hx|kl3GoZx}mBAHSo^`jmSSy_9oONv)3avG~69g*~ZCasTGf-Xrx`@4nTgKA}46S zUooCW@V8C775DX1X1G*C@_Qksv5!p)@t!if_We$;f5fV&Xb0mwToT}6K)W%Rmd(qH1P zO=W$9k*FkWof_diz1d)p|91hN6>{<9m;o}jyz3hpV)>>V#{O3jh>^{uWZ9uFHv&e9 zNS9V>Xnf4y?|xM(ImrPs|Fx5#;!62auZG^7XIsU`rMdRs1L|iM1?;s1&-0Zd<)yA2 zPvLa>Z{{W8C&8P6C71%C++EP#a}|wDy$WXzgmjh3e6>lT&8qh*O4)hEhPHNr`(p*S zsL19Lhi!++tk!Awe$v=@LFt<|ld%>JRZeqf3FT{Rb{reo)8l{RW%+#0^9Q%aQaBHO zZqxR8EO|_&5Cl_Au6i#0$Z2uCan3^?hI!F?AB0H%_e^`oS5WXgKcg*-39mH0z0dn< zf@{Wfe*wr}LQwEzZ-uOijRR5{7mmcXq_xLs5KqSxrmFCPK&<9A;nviS47C>@^j+*y zx%4?Z49v6wBzf8^gL}ruDtlq62;2St)ow<-pAJ7M-1RR+mFZWiYo%MFPY<=cgVOz4 zrKQ^681tG{aZG1+%IWFJj>9?hD|Ldk%(OCmd?cY`n5Nk3_V~u-C*>T&T;jK`KTF3a zZ%4vkFz?$Ur=fOS;PWQ9@_>Fo+nZ7hi-d}HWFtsp@XDAIx4$aeVK%DWFif$|{G0vT z+6hR~Fm4eRRpainAQFB{kH=D%#PwJ6SP=qi^x^$11)mu zxZOn%uPN>5tPRLiON-X1JN)O7=vlykzfk>9qLA@V|CDeo(*b+_1>({bcj1kLN2CYi zmE|V(%%x^ELWOoTE7+(>fRf+T=;#CNVS-rjg`aV&57^t+*Dm_zklWDV`ybQ< zv`X($);BH2AN_+p-bIqxPn?H6`4}@;lK9;%|Nx77td{ zXYnn1!H$Yhnn3Y2(mub%9_UV;lKZ8xi%U|<;t+6 zfqDDN*3~&}C2}fpTo>}b>j0LD!PMV_QN~0dqvXC;5(r5x;uLE{EWDZg3%N~HEcGPq zl1Ua*R!rTKJNSd@?++ShkIAtA%;^X*e&AkY6Iz@a&F^ITetz8fRXuZ1mI;R9Sl1NX z);!~PD))*i@_}RplnNrl|7YT}4pRP62Kr|e3>CS)Sx3Op@ z;b{yVKt>#`+N`2D>54w>`I!Ytantq0q-v*&lnM}%*+2R)ny<**!+FD4)Iwludz)Lc zEQm5oRq&&ygS2#GaWUKe9II~^!CfI@93pIIA0GZwlKqV{19C^ijo)aXl;0okVhUo= zwrmNLn3RK(*<&GWIopSdp?sn<>djYY16(_|p6)e8KY|@>az31jsp>sgIaNlfa8V|0 zf3krgBW#SHOH(t{66kgqy)vRh!a34%Qy4U2s+UNUwyS8 z5MmViCiH=u+QuT^i_cg_lvu%V#@;rG+*0{*q+4V9@z|ejW6E_iN|A6jAcXcGYH}ol zz>jJq;~Y#AI9N0BIq;LTaFQ(Lx-6v#ZS!FLtq&E1_r}D?9A77`z~AJWaWV{#2T;GF zla|V%G}mt~sMp%;c0NCJ<3Mz8M<7+Y>#8*ef-TMRZy7ecQkje7d>DgyhSM)R3(jqC zni%4Hr=eh#FSDI*=@cTOFqn&LktS|y9|>?Z{zxHD8_{X0mMHaV72W+9E+&@y8fxII%N z%$P~Ch)4T4iNI*{f<8&&ee6FgSM^LExEI*!mu$z8;$%zMK$!`n-sfjLm|hV8+`4hz zCv!gJ3Jb9xeTpMqK#G|EzICRUXA!#N>eAzcBqb6sVmZ~H+uE;SoCn|rawrrRiB(kK&iP(rlvX}o(9qfK@ul&)>^M7;1U&4?6c zFLlqtj9Ne41IN~{5PN=eW?#%X`M5#4Z5C)@t%THPSryLR=(|D9WPI9=Qoms0yn){a zJ+Q2d_&hI{X6kPXKY}MVDYu=t++7y0C?Mzi=i5~s z*jRetiZV$dSSI=~VrQj01`scGRBd#nR{;M_-UUwGi#w?iQEPf{PTB=E}}v6T3{ zb6*1A)YQ}m-7pQ`4Y>+TX6Itit2A*qn-AQD`kW#`2)e}+1&Pa()xX|*FRwxZpWF(# z7i0d}pfB-dT3$s_Q_fLTX&#B!D{c}$sxT?w^JFDwWHwWi5Z{QF7~^nRuysTT)7u*# zZs#iEM4Py&i9S@lE2e7VyuFSsL?xB|;gqhFt003$UFGvVGI-4TWXoSdJL0Jc<|3*k z7iCG?Ak8!Is5j!qMFu%~{Q(9L1Icakn&--!pXz@Ma@0>O`R%0Jar^E{r3G$l!oUVD z&EBZ}uWV|y5PF|_2=urHa+9_4rVrlinJh@)10><-Ka)5eBu82NKQWBjpA~e{?NTso>#K#X5e*mFvggGV*a0% zR_j+^(NU^{l$U)K^Ms5(A+5;Y?V=A`V}+8s&%+dsK#&ZOEOMxh!}p~Q-y-aC zfzAUd9GdV9VW;g;MaBk+-L`RtfQ@fTDc;BPz6e9RY#Z%jb&|mcz62M0-{Qf~ex0qc z$v6Z|=e|w=xONx?3Qzl5;fs?pTy-rG?R!a2xA06p*MS;IYEO<;R!Pj{v>5rH*S(0p z2rhY7Y8*rLuDe_R`Rc){JNW!<#hV(hN#cXC3bs_uj8}7d(!y7+rES$Fs@)NJOsW!P z2JC4doNp<&{_7Ec27lT_t|*_X5Rc0tNTSwrjIE&^(6NB4V31nwiv_g^1=;N!8q%Qm6tV1qJSClS6@ZgiVVRTPwBRsOy%K2BA zyNlQlRh8Lt`57aMB0+KeqNj&03_IMk23;7 zF?V`?=VU=Qc%j3-NAM&PsiRkRjbM029j5uglnwJ6csYYpV<~g5JU&=>$Z1cVo}~A6 z=s(mIE~x0Eq&6N)`L1oM;g7Za7;YTbzXWMo%PUU*wT3q6!f8l)L7`}ibpI9;ErtdF- z-WjWSDO-?PfCI~t*1YGC*d0y1&tDc+Rl~e@n%5Ns-`S@ZvU5$%EmZ`F^)J;kG#I_m zzf(ghMDpPgL7uUaxmdUNk$vgX>gDJC(}9D%>WZ~_#A4cl@S^zd_Fi$@b^*N?h)J&8t5D#2`mUkNnNp^- z@3cK_4Sq*^u#ea0YR!BFL=)jE*f*eRzWwM%>*|Noqi=@0HI3UQ=DTvUxZrB)kpFNk zSwn&Ja6iQx?oj+%yL!?#6;5V<@57y|eX4aaw@>teXRYX#;o!bFNw?&|4kTq@vqTyl zO;0?dE5fw{D)s04&A)zh8o2cXGr#YXTGu^8Al>j!wyA zWy~#yVyBhLKU-(9B3|nit*wLpJn`_;Kpk(2h<7|{+U&yyv?NSm`%VKu; zWM8tFLX@?Hbb!t~r<5mFjyzoCLlawd=g}|Sn*jO>arXv$uCl`27R7)L{XYsqvq3mZ%yvyBmL-p^KNM+vp3r#?8yCXUW^}WBEL~5nvOvB1FZAJ7y(B>n zUjzFZrcF^U{`qrMCcQn5B?1Hg$Hx5CN;XPwx_b_QcWw#*5SvOBxnTPltTltz@oFhx0cx{2%DJ z!e^@3ZVYV(w?LuL#1SpVFZN$8acR;~VctQ!*Bum=a_Qf3qpIZN_QpZ6hR1bNBJINxX($y0yXXvbwvgvCboQ4hso8p&eflw>u53OL!IsjJ(Q&)( z_@jXXT_b_C-MC9$EqedHB$C;)-jEB$+`-y-S*X0>pqmuQVhBg2v_sI>8^*_J8<|1vH;o1kdTg|9Zo&^V}cC zd9Av>S`tDWEQP(}D&XRN;{SlMcEA@C*OuuLmC7l9@9SQ#03W(qy>Vc0a@j z4b!hJ7aW~T{i+J7y$_A48jPv&akCUy&*s`ngQL-?(6nWZTX}8mYHr@F%`N0!{d!Z& zTgd6xmKCLOo%ValWUz*+MLcJh$ttRSQ^QG3Q^FQ&rx&+Ev=MFooWiu9GTQ@ zZ+%DFM_0z>G!3W*nxAQj@;6n{2X5E+Tv5+02E* zB6}b%M5?YEMSi*>E1_nGPRS@2)q=>B^4#QoEeMtr7G3&jsL z(RrQ2lbq+>KyCr6aC-Ny2S=$@LC@e2Zb&KhG`;WKs1L3R6`hfwq|sX)c7puq+L+{N zWah9%|DrfzT?`kp0;tS`Y6de!`C8hcmzb*fO4sw_o!fy$yH2{OXitAgl? zjxOa*O}CIfDkltJ+lTG~hZk_w%-PO6jLxopKk2p~=AMM{7}ge)h?&L+QH&Tbp6LbR z3QG)9h>PhEEQrUbzQjJ;lBOk&qP2IcY5XAUEV&+NxrDkrESBM!l7C`4Y#fMg(Em0h zM=GV$$BcjDu8soJG{OcDf0dh=!*4-tUvd6^2wD1O>Sf*I4cB|Pnh<|I;fDYEamN*~ zJ~5-HdW=*<$9&<(vlm(?lU2bsc3JM>SVRXl6No7{Z$MRbEa-$U*=C_L+u!cODEZ7D zt64R<%(tW|JdD+_=dR~l>ozb;nQU6#Rl56IqLUndQ1v_N)kXg@Xsae3SFWh%m-);# zso(wz-sU%3;!)AA!KEkii;;Zqw-?`doBhvFo&^{`-{*4=3nQ($;?u&d(%3yq=qwZM=wE4C63J_)E@p3+`H_&LFA#9?QlBGmV)q=L>(e?DpmF-~h&4jeLZ z@+2iQ44XT%t5~mz0gQc)a-rnj4KXz3ni55xrct;9warcEl@V(7lS650a0E`x?tgML zl5W^EJpZk|wWt&E&YHn+rty`z0lF98!J797;e+Dsxed#Z-kfJk*dBAh*#S&YselV=LjbO>sq3L&04k_XLzG*H#8<{R!G zdDcZ?NX5nnlQd`s9LOZ=IV{Ayyq76(g6h_CK->xq?i!Mi<5J-C|}6A z4_zy2TMTlrHtKT>ByDXFk@!6`4QD2mvVX{`JDfkZT50ynZa4>!ojn9FCOg!U%X>}e zen=eJ#f7Sp@Gvb2Z9nGd)F>!8_ zmu=Mgn0&3>qV_BDn;>HHFUo$8Zv*lr0T2+oBz(vHdsQ3iD=JGJgsTnlsj;W6AnOTA+@{4t0`WtCoj?-vCbw_d zZa)YU|7aac%K&lez~rHn%v=BpoM<4(LkIj)M9Shd_%`9YVaPNVw+hi+xg8fsK6FDB z5RKfF#}d5b)66_|W)x#U`quU)P_z zeiP%ht`#%zE5Mk$@oX{|yKU#wOYbYs=&S2m=r?HVpZm5gVomm|@Lg+nUgbB>s#eYd zjkU>&NCI4$Tn)%QOWR4ek{4csy%=AhisPU1c3kW$=~UW1fg<`it!uD`m}g*mz5(&$ zIZtNIDXR8Ax6WsJr759}Do)JYqBHl%5!0$c$Br^t1N_^bQY%qdrP;SU-r6Fg6W!tG zM^5Ya$V1x&3;DzHZ`61=oW88P^w?^z%5NgIFrq#_#no$vK^C)$-{bkG9!B~o@jOw( zYS~2Nij%$LKQR22Xu@e&H&_30MG$?*J%moi)#*OQ+|0WWE!0V(aO!ZBr|Bh3H&1^K zKVGlfjYHXb(L`R3ruJjz3dQJZ8-C2zljd#`PeX#vZ~>Ljx@n+3LEPPS33u^uw3wu?I z{8Kb#l36}m4o3s|=2nQ^$9IEGbA?!#UQU(Th4c=Ip+^Ass?5&5X8UaHvCfV%UIpa? z=I0#pdp~D6tB!y*vZSj;)<$a5l>d~S_B@`zdOZw zT_JzVk?DlRv#G{Bsy8=@tgG`rX!&;}^+xjBzt=W@$Kd%(V01d&!mPYU*ssj4$Zv$H zOy0IQH@F46Le)`?bDG$rGJPngSw$WOmkN8X_1Xdu8f=kJtzilB5sh^jJBqN0npSx4 z*^;}6tL%x$elGlQ6ARA!@TqmDg)89xcysZM+iJagxXb`XpY`?!TEaih+RWcSmxXj; z=Zi~Ko-IwiPrnQwJLm?rA3jTd`_inEMNf&2MGHi&8k*gKQzw9-EU_Ktw87E3l-nx{ z2RX;`yRTU_cCOy7;ND{LW9bno2~s}3VVcP`F0nc|H6<`mtk*W7sMa!M>OHADbyovM;hR82*7xOm&N{$* zcW4e#*Y5k(Omb!X0uQ+6-%D~PzdJh@Xjph$Y@>g*S6BCtQ}^S*RW@+r8=~Eg$5xTC z6SzvZ$nN)a`XF`-1}n<(yts36CZWuj;IOTj$31w)v^VO50O~nvV-`fu^ zJN^Qu>g42=a8S3U{9*oK9ZB6+J-BuZN9xh9sQV9vyoqMtHpxThk+o@H3Yj(5LY( z=kt`E12RZHN;Iv8c3- zXq#J|+V-lx&SwgYA+YbNKGHR!ip#i`1MyQ>o_nsxNmfpKXrnOKOzZ4$dEgV8!35v; z@^?_+B7(HhJF^F#-MC;yx)_iQ#S|pxsb_CXR$c&Me#Y&7pU~JJH+_0ZM1|Vw$QgfS z2*X_3_Ik>ScvC=M2mwP#XsfiEySag5bf<_Y^qs3lrUVt@>0T;#dV-2;Z6Ha!(gdxjHGf282=L_71u_@u9dgwraRRQTogy@aW*mzP#hWA#iVt3ouwq z0dclMRvswEW|OJ?6jnEDB!3l8*ESN9^hbswvjwJ#zM~&f{?=-8fGXdQSL+KhIbUYP z#0#?}JSzJ`OZ0VQ8?NfoYkJ1X~xVP}A{J$pNaaY@W7%p?U7e87i zxqr$LiY!%SeB5_lEdMPv^2aNLvODm^bM!UUYr|!4er~P@WtWu+vK0nopvB9h#!npP zF{#Y-_+;!FU(qzaruN1zfXm6gHL37j(WcE++PmgT^I!ey#gQHO)w+PjURv!(-+zvERFmHdV0?P}YSYo<3nDZQd z4enVie}szeG6)DB?bY5d;uzk{*f(J8^4A18Z($q$zFo>$E?&k(7xqp5tJ^D<9L3lf ztq=y0JRbOa+1msKRHGVC7>*r+Y0?fHj5tr)E{rZ0`FYeNE6V*0*c_k+8Dn=Oy3TVP zLM~SQiWJU2Pd2P_NMu1skpmPkjpQBJNny**YA}sUoQ7(hGnZu7C(13d;lW(jan{yS zy!mP5@=Yrb$&L3rg|rRRtP$=M?htFw!a9JUEob3YLg2DbCM5d+w(`3-I>!kU57!SFaHC$~d@&%k_NgmmNDi}aLW+S54>%mL2n z56!)soKo7}#d=K_Z4mvw+=Hou+C%9Azev>#?wHRy(KWVk5X`59-*H`ZX_Q%Xs+uXC zw~ceHV-rUJ)@|qj-8>yNRN{kEl766uMSmy{wjp!OtvLOtGre_ow3oq&@w`f-U}1vM z#HSS41AKj%d$o79{VP7$FEe0VT*Rdg+5+FYsw5dc1npAKGw#OpC;w8sLNDgQ+`pU- zR)q|zOZppAT}>~Z=m!pOUOlEn$EXmxSCt*oBMaa zzv$m-_urK|hDRpej88XfD+0tGLF~K#~u+${P`MsXNCjfah~mqv7xth4MsAY zI@o&cy1(r0i^{$D2K{Yi3^@F9aR@lg8n{vmY}0iSYo#qbD=9TQY&~8G1WZ*Jj>g!L zwDcCg&~aUR@H$lGY+x5xGX6h2TxC>~f7li&X(glt1PP@}KsuzQk#0m9q!}$K(o)jh zB{gbv3equPFq%=LVZa!?`@iSB?>RgBvJcOm^PK1YUH4VdIFs8i)|+P4W5lHaNqIO& zf~K1dHe-cxH~(xU$xOwd=+`f+bnHw<=bycWnoh6Xsalwu-&slB;V3|8hB87}gt5Gf zJ6pmZNEdM0o1|DUl@;n*Hg`TqX&#G1{{DA4rKMu~;bQ%}DavVt2?o```yYq5J>8Ko(<-Zt z(M!O2S<=cdHx(!gwrB7J?YG0iK*s}z@Q-g-n7+DfTQA3}QXU5z7B=As<|48gMqKl{3r`EZ!bmkqh)fFFAxN*NVbU zi_cMUY&=fwl4Df`RHYg2P1EozMEeKphu^9PtN4f)As_kufYWVn+-eLC?@r3#ao|}+ ztjt_>q{49LG5Gu$q6^WVsa{w8Z`fuDB1pP$c|QK(QL^$uQ&bFZdA= z?3$dHk_d!1flrHt1hM~w<`Qkm%pUET6`_W-eT$zdtF_4s&`n(A7|TCw4!w?xuefQf2W1}S z7VVQ>-EZfG^-C(vF`k&W9|Id&qP}JQkh9=@w(Tcmj3i5MqtrsJZMDGNx^z4yezwm7 zk@}p7O}^XOI4=fBTSF($hriJ+=S(vyNKU>qN}Ge_bJyce( z(@qod;MVHH+`8vo!S8@@zr3PupG$iCy3Xr{|L&LJ^wWv6Zx%Ej3fMPIz{FHqa1*?&pg7(ko%U8hGi~ID1L!}W55vswPoBX5jno(DUSaShRPZAj{pm$D7VOA*=B8VdsOG zr>(HfMv72}ms=g3fOU9{_X$th>bVasq_cNiueHp}%d2DUdU}pLr)ptwElu1t7<8*H zh6-d*x*86gyW-m_8f@kJtM3Zl+UD{c>}Zi%-r0%3&hjtLC+bh0R+Tr*5d>5^OL-Ma z-2N*p?@^q*Yo$BDA@_lLDHQa{Q<{H;1#V>b-PJaJUD|D~S_za7{@t>~H{7)lbTyW@ zToAR>sa~;u=XFa-J^TupDchM&_bp!{V6AguOM9W#)Ya8*7S9{*70kVj5WN=2=^1vN zFRqw%T2480;pJLu5zg~%K%FhGK_rnb9Hnom_G9jEee@OT^@G-HgzEjPP$bfTCw<~8lZK;gjylkX z++7_Oi7(B@uoKOp)^VkN1U+7AJd*DWK2DFZ;}I}dW=jV8&AB#Lcry#mjr|dnnf+(? z+9b@ECO;L7Tk@a9rD-zgx^Y^yUeH_60)aXSmO8&Y1-5i@x#fSBeT!Gxmrv=kY}Qr- zCbvNIN{$3en|>P+lnRG+0XrP<0WuBFZTozKYL=I$VZo#+75A~!0!(~Auw1&j*hl*# zf=C5Mto47F_3EL%wq3N(V;hRrvP5c62_{)ib(L4udqj3W(nf=? z(K~Xvam_b%{dQD|ufD&!DpkIRD$LU)vBX2Kk0~eEuaqRr*F5lQJ}F8#k6!B9L88nn z@Cw%XQO+LQko1%9_e>nttCk-h8y_Bc(H1H@|G@74l2YP%@3(dxD1pp{tIbt};^Cb? z8~K<0%wlh53%sz>Kgmx%6|zOY_GCCM$P^_7WP2?bM)()Blz1~+O?Rr%6Zd=TDuliW zeD-GmKzSuo$cJ|#SYC*#a3&4|1sxdGx=WT%F2|F!C%jULP-xMwMrUF1bWf?vQ{lm3|I3jb1&&i*YU{Yx&RF9a_+|Dctlz${yy`6OJ<=#4&P-YCZ_ zwCdpIfjJZSfyF`UAh$MU3}As=30-kL7Nk<(N8*mW{!@FL~~8G+I^3rAUlMu(`!nyFG9 zGgEIkBC*JJ#}B`OeV@{X5pAqze0|o6h^3&kPCYD<9MYug^g+vjzhL8E3CuW4g7&TZ zieUvtcSmTgO}&$>T9LN-vTml`ZR2wgxvq6-Tp;Y#iDC&v2JlSqw{(`H2AeXAsuy2H z{LGej%5K=?#bFS&1_>DLA!RTxeMh!X(G+0N@@})244`w#2F1gu6=I%OQ;C7_d}jT} zK}m8ENGmzcg9aLsHNR}O8C8YL+8 zc36Pe2R|B5#0SEHUBV2*C~&(FsO$8Om&?TJQ;oZ2Ye33XaDN=J-)#+s3{l@-wODC_dRb780JPo9u-JME7=8lrC+9+>Akz_s2Xjf{h?S9x|cg6gzi z6IP#7n2Nc$EVFC1mF2V^c-5hmlN?hg7#%QSbHi)UsR^~$E_Rd@Mc>rD8jvO74r@+h z@DuLXB|-JQP(y*y;w$*U6ZXa%Hr}#`A`!RpF?}S+S^ky5>lG^Kek*U$O|i32JrGiHys#Wx z6PKaXyzB&XtyJ%jJ@3oMUv&!Q#29p2V$4JUAhn=!vbd=Vm;^M<`i89G)k7~d|Dqjk&n$5vJzO`e9UKu;NjB9Y+^T#Qeu?Cb2ySe7z{3nAlfoS#vd>X;}6! zn$=YLQ+)WN_MN1XFS~0lsgv?0D^wCaFRb+o4e&~SMxc?q1nqvCTDRtnZnZ=n_hh7` zQh1dNCf=3jI1;T)&_rAGJ73v28ji-KfX;6GNB?CAywUh@CoSKHgN-L3%Oi`%>2v_% z%f2rFD4+$oDE-uME&kEU)FyDMtR(VyrNUxmk&9D-EAUNn?up=}pyFTdNGG#qaP2-1IZV zA19C!9lZJ+I6r^!Jy+vW*jKxJ+fac?7C^PoXy;3G>fQOGxH+lpfuYvZx6!Qg zxTb658e8@g5Y@&@2J(?Z^SwdAYK{amd{VQ)F!8SkhMH#Da&^gP?$zj+bP3*edv+8k z;@CCQt-c_yW(>*UeI;cqA6;90Q0~$gWwgeo*^ObXe2fZc^l-V}0)4)Nbq0=RxmM)+ z7@{BDNfFaIH0zRZ6OFIk{L!lwegjL^IJs=SuEZV1@}x@a=R<(eh4+v-PX`|+BKWd; zSt;T3rgVsOGnRuy!pwpXDn>n_D~P=|(K~}D=TX?K%p{km&V6vRAkMeVH`koRIaTEX zu#={IJvwi15Oh?5b_AE&za?rFv>9#wJgV?p-+ra#@Nh7FG@N;bV zf4`8yPq7>r|Ln)RF8`FuapiEmYp-dCX94e^s!lunY=x}|CjaXN*JbFV2qfdAp{&-( zPNO!<0X|mSOqqAzRugoo2t4mqg%2XRf%6D+tEdS$P)y8Y;$l?5dqBMi-eH?-#Utq( z-FY)*1Dr`UZC+Qr?n9+75s;WTcYnfvdo<36V_GArkAMkzMx0q@;DX4SYu>si}w30r7WgGoeu+&kd!n|hi`n2@Llqh!`IX(u=$Y>=YbN470 z0#SXgFDp$29({yd)0HDcJC3}HSHI;@)-)}-245V?EsNse%MuZ!svGc?5kcq6=O>k`>$X{_UtQ=_{9aQ?>e1^30$h$12I5 zE?2s1V8Y{}x9h5Vt=`q_Th}dPKIEizp1b3w(26zE>8>w=;0YEq9@s;Fu2k(jUnp7T&GZacB7r%F(MPgLTm zvP`G|phDC9eQP@F2*EF`&zTEKnBJrn_OA_`Ji8qKXwDk3L^p!U*||r4#bFYQyguJ1 zr~G2is}F9~HrG`7#<+X_uOuHn-HwCRoJW!F!-s8}-b8;4ep{scI33b~6WN~!D*W63 zTfEp_YGmy5GE!PE>)ngITDS9cR##z~SiR@QYKFQhPCAYZXn@P&kjyI+%RG8H+}-6% z(SbH<%rSpED_ENR-yy4CZ_^BGss*rRe+!MS8%U5GAV6T=j ze@*6<1@}#bnZ6AvFO3ITn0hbSXo;PN7I-rcq)vUz?Yw`O@{TNQ6qpome7%>HsA9IG ztAJqO5nn(J#+c2AfP^X}u<6)H7aZ=)ozov`RnM0xDZC#A+a=aqIJmt~^K1Xm{+LIa z=#X(3a zvY%P7wdzkwbg^}&0^#-{N`UY*bCZ}guxS-yDf)FK?TOKQs_*%|`3|7Ek9z0#QW-x; zcGb@Qi^Qnh_ng5=%ao}uPb(VRD=@_J;R5BqJCk8_a|rlxG2iK66hhappq zxmd=cd0Utj=Rsxb^2TTF|4rKcXH61UIzAUB*3Kv%s=}XbYPa1IMX728xKuHt@g|O1 zs~8`u|ErF8tKLH}brq|_zSm~PApG~RGFR(YXv>B(YpRy%QX!8=LfO0=Cxwe# zCp^meJ%24p5Na*aL723ZJk5}}G;OW&55tbC&eNx1veIE@4`syLxV`M=X_Zyt44}Xo zeHw(&J%9DdEW2rGeNySC68KkbNvWT|qAN=Ie_@HM85yv~QbJn)eEQEBV`Dd5_PHb0 zNnZG^@Q>*qHjB5MTZUH>W0DcTNY%#~C)<${iml}#g>XSm)l~bB3{kSQB~+z2137ov?>=KL(Jxk>FMjwJ_78n|swR@MNy2HkUM;dJI+BQUu{-8cQYYj zlfiSPZTms~9-X(|D-G7?s!nSo2Y$jM`?{{&)dpu)8}`1dqCTKj%GVbs84Rf7?vo(@ zn|&K0Np|~daQEsQB}W(4EcB%2km5vi*rjblMQj?N;WuWyX6YjVsO$8O;?vsk=sF$L zrEmG!oU;3h>vQSvRliczsUi<~D8+pn84%Vf;QPJkeEYMqOc*F~ z?R4Siogqp3zkR3Dzxz>t9vw@?fo{t1&9`E5eWkKwkI|3Hd>- z-nc~#Nc7J`LTe$S3w?RwMfRGym{3yP5xJjvU%AE~#tLI8M_GvQRZp3FRXSx$U`+$> z>-^@c3cEX)%cuF~X;+`El6Sf!-Y*!ts(I1h!l{ou+GpSh6nAs=b@nxr>eXLdygvgb zI=pt&X2^gK=96Ii(h@AgbI-S~>SjH(*BVa=qIm>MewQj#zYn)sziFa42>U2ZsVptC}mj+29T{> z&7mI)Mm-5BWt2|)ttS_{rEk%jW2lpjBf2m-G+Z3ND|@qD@lYhufZd+vCE(Kq6IUvt z08OFBn@8le?-%svZ|P4G*osVl&D2zb*dLX?^FVtb6=eee0ka+{SVpj1e-}^s;);`# z_k*K%9{gtN$WPEc&#wI?C5DQ>93|nNe%urt4z*I}BWMpoSM%v?O2eJVdZuG-^l{XG zbWqJA`En4gAgVccweK*o7B{m{^Qn2xh2<%Ps`LdqY5ogu8z@S$r}1ECd}6>3ZOhku zM>#+ceg13bU{pZ>*Oct0H-Etz{Rx=704|%sd@|Cs?m+=2_S2JfNE`E|&Xqf}F7=;x z&DV|4D^%0*4is}=jyOV_!4yDyH&v^9Dg+wWwxLbZcSR#dILS4Dd`$|Ta2o$rp;00Sgouoc z;?XRFD|oeM)!ZS-d0iVY7<$JBc^~;-j7bmSUQyJK!8sH6Gwa*x0s+SotCOlUiBo&h zZJpbiT;<_^aD=ZU1rTJUw9Z1Fe)xle5u7_IO79y!QuRTYa~fRYX;p zlPU6(|9C9ix&Kbh`&6qjO8;iv1nO|fzZmoPnOkmpiZIdDzNyl5@b-!#M_y zJ0scSi>DzHEq+NmtdoC)*hFUpf0(+^574t2U8KW4`2XW>c}KCs;5nms6mufg3-lCC zH6UL$ePmXlwekN4ft0F^#KgPfwM4;1O&9`)b-}4iGjNlTwy9Z3KBI%YH?U7l5tHZw zclF|#0;GoB*q}!nAMm{X{>jl~ZQB|Y*(EzK`!Tc*qhMUM$^>{UZzj@;Y7 ze&7A;&x$Df$r2kQ2cta+@-Dc0_{FsI*p*xsuX}soj^bJardizt5E8?~*|INol%nZl z$9ij@FSw(+*W2$}!+@3CLc(zQYp=R-;-|RdU$Io2ge#Uj@kaaSW@h=IbUO30MeQBt z%A^q`Oh_hFHSl~Ei=wK`Gn)A)UJ@wk1z_wQ#dfr;j`Dscql~WhX|CBoPxot8c1n%e zIdM`wU$+QQrP7yD3<)WCig?|K<1dnPO=glWRs|UHfz%b>4FTtxt?Qu#Om)Vj6H1GW z8phDB7QXB>((v%G+zp_kv~C|8pk%7ihQ`gzpnJI$bUPvt35xVhaCI|2574gD9RE;* z;i)#r;_5_dyT3SJ&&`-0-+W5N1wQGOEUQ|2aEEMPa7dJ0W!D}W?_Ev!gUEC`6G=Lu z71>zW4*>|c5X2n{0wf8u;nfKmympmr2k!groKRoDCKJRB?C(Y#!orU>Iu&Kdc=t{i z)v~A}9S+L75clP+rKfXs28pMpGMk2vu@(N&*IxDc{@I}W@=0h|@hB@m`d5hXJHhtO zV#y|z%;Up$n938Ke_KV}#H!!mVaMb6NO()0#`4z+Kj_%^$?Dy9HrK*sFirlf8~3Ca z{&}H@!(6%2+Y>mtU2WF;oqy`~{zHCVsJO-cGRySt(Ng0ZE#nWy%jyx#bp@8~JY|A- zHO!eafu_0Dg79LJ_DV(d_AjH6JkYI^~NQWYMM?#E@5)a)wSrQbeZgAJ{o zhe$JFNNlM{lXeQv`b%|65)9?v--NR(+8~EGK=p!GflFUa4~p;tEy`@aq2dhxAyXv> zbd*Tp9Hw42a+Bmybl$&z{lszYhj1GG!Jxh(SFJ!^0oR^Rj;-aZs52!K)E+v-;63Dohy}+N30l(R6L8E`04-~ zl3Nxu=ixM07Uw*4zAc#?v!ZU^&1_ugE4qZ{BDyYC0jEC-NAYkgkSYo> z<->TZ-sT5?ft>TC%R_A#8?|Mt4B59B2Yve|S)AaI(c6Zg3gWhk{Nf*6r-sj| z-gEQ(09bD69a7C(RtdQPhjUveq1XE#ChngZBSuJ(fbb=Ft!)p?XBS_m=Qb7|Cqe}I7I_bpASqXvgM*kZ2K zVV)3=4_Su;29wo)mk3;N%KjE*vvH+&FW@x_we2XtJ|DWVL23Mv0b^dZEiaA*;ciy= zcN2D*Y(XP1xs>BNcHVsYkV5)@t;jvRFet3IW&KyAqw%E z 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