code: def split_bezier(bpoints, t):
      
      def split_bezier_recursion(bpoints_left_, bpoints_right_, bpoints_, t_):
          if len(bpoints_) == 1:
              bpoints_left_.append(bpoints_[0])
              bpoints_right_.append(bpoints_[0])
          else:
              new_points = [None]*(len(bpoints_) - 1)
              bpoints_left_.append(bpoints_[0])
              bpoints_right_.append(bpoints_[-1])
              for i in range(len(bpoints_) - 1):
                  new_points[i] = (1 - t_)*bpoints_[i] + t_*bpoints_[i + 1]
              bpoints_left_, bpoints_right_ = split_bezier_recursion(
                  bpoints_left_, bpoints_right_, new_points, t_)
          return bpoints_left_, bpoints_right_
  
      bpoints_left = []
      bpoints_right = []
      bpoints_left, bpoints_right = \
          split_bezier_recursion(bpoints_left, bpoints_right, bpoints, t)
      bpoints_right.reverse()
      return bpoints_left, bpoints_right
docs: Uses deCasteljau's recursion to split the Bezier curve at t into two
      Bezier curves of the same order.