func maxDuration(ofEffectAnimation anim: CAAnimation, sublayersCount : NSInteger) -> CFTimeInterval{
var maxDuration : CGFloat = 0
if let groupAnim = anim as? CAAnimationGroup{
for subAnim in groupAnim.animations! as [CAAnimation]{

var delay : CGFloat = 0
if let instDelay = (subAnim.value(forKey: "instanceDelay") as? NSNumber)?.floatValue{
delay = CGFloat(instDelay) * CGFloat(sublayersCount - 1);
}
var repeatCountDuration : CGFloat = 0;
if subAnim.repeatCount > 1 {
repeatCountDuration = CGFloat(subAnim.duration) * CGFloat(subAnim.repeatCount-1);
}
var duration : CGFloat = 0;

duration = CGFloat(subAnim.beginTime) + (subAnim.autoreverses ? CGFloat(subAnim.duration) : CGFloat(0)) + delay + CGFloat(subAnim.duration) + CGFloat(repeatCountDuration);
maxDuration = max(duration, maxDuration);
}
}

if maxDuration.isInfinite {
maxDuration = 1000
}

return CFTimeInterval(maxDuration);
}
