func DeepCopy(o interface{}) (r interface{}) {
	if o == nil {
		return nil
	}
	src := reflect.ValueOf(o)
	dst := reflect.New(src.Type()).Elem()
	deepCopy(src, dst)
	return dst.Interface()
}
func DeepCopy(o interface{}) (r interface{}) {
	if o == nil {
		return nil
	}
	src := reflect.ValueOf(o)
	dst := reflect.New(src.Type()).Elem()
	deepCopy(src, dst)
	return dst.Interface()
}
func DeepCopy ( o interface { } ) ( r interface { } ) { if o == nil { return nil } src := reflect . ValueOf ( o ) dst := reflect . New ( src . Type ( ) ) . Elem ( ) deepCopy ( src , dst ) return dst . Interface ( ) }
//----------------------------------------
// DeepCopy
// Deeply copies an object.
// If anything implements `.DeepCopy() <any>` along the way,
// the result of that function will be used.
// Otherwise, if it implements `.MarshalAmino() (<any>, error)` and
// `.UnmarshalAmino(<any>) error`, the pair will be used to copy.
// If .MarshalAmino() or .UnmarshalAmino() returns an error, this
// function will panic.
---------------------------------------- DeepCopy Deeply copies an object . If anything implements . DeepCopy () <any > along the way the result of that function will be used . Otherwise if it implements . MarshalAmino () ( <any > error ) and . UnmarshalAmino ( <any > ) error the pair will be used to copy . If . MarshalAmino () or . UnmarshalAmino () returns an error this function will panic .