// Path: richtext/src/main/java/com/zzhoujay/richtext/ext/MD5.java
// public class MD5 {
// 
//     public static String generate(String source) {
//         try {
//             MessageDigest messageDigest = MessageDigest.getInstance("MD5");
//             messageDigest.update(source.getBytes());
//             return new BigInteger(1, messageDigest.digest()).toString(16);
//         } catch (NoSuchAlgorithmException e) {
//             e.printStackTrace();
//         }
//         return source;
//     }
// 
// }


import android.graphics.Color;
import androidx.annotation.ColorInt;
import androidx.annotation.IntDef;
import com.zzhoujay.richtext.exceptions.ResetImageSourceException;
import com.zzhoujay.richtext.ext.MD5;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
            height = WRAP_CONTENT;
            scaleType = ScaleType.FIT_AUTO;
        } else {
            scaleType = config.scaleType;
            width = config.width;
            height = config.height;
        }
        this.show = !config.noImage;
        setShowBorder(config.borderHolder.showBorder);
        setBorderColor(config.borderHolder.borderColor);
        setBorderSize(config.borderHolder.borderSize);
        setBorderRadius(config.borderHolder.radius);
        configHashCode = config.hashCode();
        generateKey();
    }

    private ImageHolder(String source, int position) {
        this.source = source;
        this.position = position;
        width = WRAP_CONTENT;
        height = WRAP_CONTENT;
        scaleType = ScaleType.NONE;
        autoPlay = false;
        show = true;
        this.isGif = false;
        this.borderHolder = new BorderHolder();
        generateKey();
    }

    private void generateKey() {
// Path: richtext/src/main/java/com/zzhoujay/richtext/ext/MD5.java
// public class MD5 {
// 
//     public static String generate(String source) {
//         try {
//             MessageDigest messageDigest = MessageDigest.getInstance("MD5");
//             messageDigest.update(source.getBytes());
//             return new BigInteger(1, messageDigest.digest()).toString(16);
//         } catch (NoSuchAlgorithmException e) {
//             e.printStackTrace();
//         }
//         return source;
//     }
// 
// }


// Path: richtext/src/main/java/com/zzhoujay/richtext/ImageHolder.java
import android.graphics.Color;
import androidx.annotation.ColorInt;
import androidx.annotation.IntDef;
import com.zzhoujay.richtext.exceptions.ResetImageSourceException;
import com.zzhoujay.richtext.ext.MD5;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

            height = WRAP_CONTENT;
            scaleType = ScaleType.FIT_AUTO;
        } else {
            scaleType = config.scaleType;
            width = config.width;
            height = config.height;
        }
        this.show = !config.noImage;
        setShowBorder(config.borderHolder.showBorder);
        setBorderColor(config.borderHolder.borderColor);
        setBorderSize(config.borderHolder.borderSize);
        setBorderRadius(config.borderHolder.radius);
        configHashCode = config.hashCode();
        generateKey();
    }

    private ImageHolder(String source, int position) {
        this.source = source;
        this.position = position;
        width = WRAP_CONTENT;
        height = WRAP_CONTENT;
        scaleType = ScaleType.NONE;
        autoPlay = false;
        show = true;
        this.isGif = false;
        this.borderHolder = new BorderHolder();
        generateKey();
    }

    private void generateKey() {
        this.key = MD5.generate(source);