Card.smali
.class public Lcom/stripe/android/model/Card;
.super Ljava/lang/Object;
.source "Card.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/stripe/android/model/Card$Builder;,
Lcom/stripe/android/model/Card$FundingType;,
Lcom/stripe/android/model/Card$CardBrand;
}
.end annotation
# static fields
.field public static final AMERICAN_EXPRESS:Ljava/lang/String; = "American Express"
.field public static final DINERS_CLUB:Ljava/lang/String; = "Diners Club"
.field public static final DISCOVER:Ljava/lang/String; = "Discover"
.field public static final FUNDING_CREDIT:Ljava/lang/String; = "credit"
.field public static final FUNDING_DEBIT:Ljava/lang/String; = "debit"
.field public static final FUNDING_PREPAID:Ljava/lang/String; = "prepaid"
.field public static final FUNDING_UNKNOWN:Ljava/lang/String; = "unknown"
.field public static final JCB:Ljava/lang/String; = "JCB"
.field public static final MASTERCARD:Ljava/lang/String; = "MasterCard"
.field public static final MAX_LENGTH_AMERICAN_EXPRESS:I = 0xf
.field public static final MAX_LENGTH_DINERS_CLUB:I = 0xe
.field public static final MAX_LENGTH_STANDARD:I = 0x10
.field public static final PREFIXES_AMERICAN_EXPRESS:[Ljava/lang/String;
.field public static final PREFIXES_DINERS_CLUB:[Ljava/lang/String;
.field public static final PREFIXES_DISCOVER:[Ljava/lang/String;
.field public static final PREFIXES_JCB:[Ljava/lang/String;
.field public static final PREFIXES_MASTERCARD:[Ljava/lang/String;
.field public static final PREFIXES_VISA:[Ljava/lang/String;
.field public static final UNKNOWN:Ljava/lang/String; = "Unknown"
.field public static final VISA:Ljava/lang/String; = "Visa"
# instance fields
.field private addressCity:Ljava/lang/String;
.field private addressCountry:Ljava/lang/String;
.field private addressLine1:Ljava/lang/String;
.field private addressLine2:Ljava/lang/String;
.field private addressState:Ljava/lang/String;
.field private addressZip:Ljava/lang/String;
.field private brand:Ljava/lang/String;
.field private country:Ljava/lang/String;
.field private currency:Ljava/lang/String;
.field private cvc:Ljava/lang/String;
.field private expMonth:Ljava/lang/Integer;
.field private expYear:Ljava/lang/Integer;
.field private fingerprint:Ljava/lang/String;
.field private funding:Ljava/lang/String;
.field private last4:Ljava/lang/String;
.field private name:Ljava/lang/String;
.field private number:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 30
.line 53
const-string v0, "34"
const-string v1, "37"
filled-new-array {v0, v1}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/stripe/android/model/Card;->PREFIXES_AMERICAN_EXPRESS:[Ljava/lang/String;
.line 54
const-string v0, "60"
const-string v1, "62"
const-string v2, "64"
const-string v3, "65"
filled-new-array {v0, v1, v2, v3}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/stripe/android/model/Card;->PREFIXES_DISCOVER:[Ljava/lang/String;
.line 55
const-string v0, "35"
filled-new-array {v0}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/stripe/android/model/Card;->PREFIXES_JCB:[Ljava/lang/String;
.line 56
const-string v1, "300"
const-string v2, "301"
const-string v3, "302"
const-string v4, "303"
const-string v5, "304"
const-string v6, "305"
const-string v7, "309"
const-string v8, "36"
const-string v9, "38"
const-string v10, "39"
filled-new-array/range {v1 .. v10}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/stripe/android/model/Card;->PREFIXES_DINERS_CLUB:[Ljava/lang/String;
.line 57
const-string v0, "4"
filled-new-array {v0}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/stripe/android/model/Card;->PREFIXES_VISA:[Ljava/lang/String;
.line 58
const-string v1, "2221"
const-string v2, "2222"
const-string v3, "2223"
const-string v4, "2224"
const-string v5, "2225"
const-string v6, "2226"
const-string v7, "2227"
const-string v8, "2228"
const-string v9, "2229"
const-string v10, "223"
const-string v11, "224"
const-string v12, "225"
const-string v13, "226"
const-string v14, "227"
const-string v15, "228"
const-string v16, "229"
const-string v17, "23"
const-string v18, "24"
const-string v19, "25"
const-string v20, "26"
const-string v21, "270"
const-string v22, "271"
const-string v23, "2720"
const-string v24, "50"
const-string v25, "51"
const-string v26, "52"
const-string v27, "53"
const-string v28, "54"
const-string v29, "55"
filled-new-array/range {v1 .. v29}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/stripe/android/model/Card;->PREFIXES_MASTERCARD:[Ljava/lang/String;
return-void
.end method
.method private constructor <init>(Lcom/stripe/android/model/Card$Builder;)V
.registers 3
.param p1, "builder" # Lcom/stripe/android/model/Card$Builder;
.line 707
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 708
# getter for: Lcom/stripe/android/model/Card$Builder;->number:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$100(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Lcom/stripe/android/model/Card;->normalizeCardNumber(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
.line 709
# getter for: Lcom/stripe/android/model/Card$Builder;->expMonth:Ljava/lang/Integer;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$200(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/Integer;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->expMonth:Ljava/lang/Integer;
.line 710
# getter for: Lcom/stripe/android/model/Card$Builder;->expYear:Ljava/lang/Integer;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$300(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/Integer;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->expYear:Ljava/lang/Integer;
.line 711
# getter for: Lcom/stripe/android/model/Card$Builder;->cvc:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$400(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->cvc:Ljava/lang/String;
.line 712
# getter for: Lcom/stripe/android/model/Card$Builder;->name:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$500(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->name:Ljava/lang/String;
.line 713
# getter for: Lcom/stripe/android/model/Card$Builder;->addressLine1:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$600(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->addressLine1:Ljava/lang/String;
.line 714
# getter for: Lcom/stripe/android/model/Card$Builder;->addressLine2:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$700(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->addressLine2:Ljava/lang/String;
.line 715
# getter for: Lcom/stripe/android/model/Card$Builder;->addressCity:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$800(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->addressCity:Ljava/lang/String;
.line 716
# getter for: Lcom/stripe/android/model/Card$Builder;->addressState:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$900(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->addressState:Ljava/lang/String;
.line 717
# getter for: Lcom/stripe/android/model/Card$Builder;->addressZip:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1000(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->addressZip:Ljava/lang/String;
.line 718
# getter for: Lcom/stripe/android/model/Card$Builder;->addressCountry:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1100(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->addressCountry:Ljava/lang/String;
.line 719
# getter for: Lcom/stripe/android/model/Card$Builder;->last4:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1200(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
if-nez v0, :cond_7c
.line 720
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->getLast4()Ljava/lang/String;
move-result-object v0
goto :goto_80
.line 721
:cond_7c
# getter for: Lcom/stripe/android/model/Card$Builder;->last4:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1200(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
:goto_80
iput-object v0, p0, Lcom/stripe/android/model/Card;->last4:Ljava/lang/String;
.line 722
# getter for: Lcom/stripe/android/model/Card$Builder;->brand:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1300(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->asCardBrand(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
if-nez v0, :cond_91
.line 723
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->getBrand()Ljava/lang/String;
move-result-object v0
goto :goto_95
.line 724
:cond_91
# getter for: Lcom/stripe/android/model/Card$Builder;->brand:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1300(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
:goto_95
iput-object v0, p0, Lcom/stripe/android/model/Card;->brand:Ljava/lang/String;
.line 725
# getter for: Lcom/stripe/android/model/Card$Builder;->fingerprint:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1400(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->fingerprint:Ljava/lang/String;
.line 726
# getter for: Lcom/stripe/android/model/Card$Builder;->funding:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1500(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->asFundingType(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->funding:Ljava/lang/String;
.line 727
# getter for: Lcom/stripe/android/model/Card$Builder;->country:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1600(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->country:Ljava/lang/String;
.line 728
# getter for: Lcom/stripe/android/model/Card$Builder;->currency:Ljava/lang/String;
invoke-static {p1}, Lcom/stripe/android/model/Card$Builder;->access$1700(Lcom/stripe/android/model/Card$Builder;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->currency:Ljava/lang/String;
.line 729
return-void
.end method
.method synthetic constructor <init>(Lcom/stripe/android/model/Card$Builder;Lcom/stripe/android/model/Card$1;)V
.registers 3
.param p1, "x0" # Lcom/stripe/android/model/Card$Builder;
.param p2, "x1" # Lcom/stripe/android/model/Card$1;
.line 18
invoke-direct {p0, p1}, Lcom/stripe/android/model/Card;-><init>(Lcom/stripe/android/model/Card$Builder;)V
return-void
.end method
.method public constructor <init>(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;)V
.registers 23
.param p1, "number" # Ljava/lang/String;
.param p2, "expMonth" # Ljava/lang/Integer;
.param p3, "expYear" # Ljava/lang/Integer;
.param p4, "cvc" # Ljava/lang/String;
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p2
move-object/from16 v3, p3
move-object/from16 v4, p4
.line 324
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, 0x0
const/4 v8, 0x0
const/4 v9, 0x0
const/4 v10, 0x0
const/4 v11, 0x0
const/4 v12, 0x0
const/4 v13, 0x0
const/4 v14, 0x0
const/4 v15, 0x0
const/16 v16, 0x0
const/16 v17, 0x0
invoke-direct/range {v0 .. v17}, Lcom/stripe/android/model/Card;-><init>(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.line 342
return-void
.end method
.method public constructor <init>(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.registers 31
.param p1, "number" # Ljava/lang/String;
.param p2, "expMonth" # Ljava/lang/Integer;
.param p3, "expYear" # Ljava/lang/Integer;
.param p4, "cvc" # Ljava/lang/String;
.param p5, "name" # Ljava/lang/String;
.param p6, "addressLine1" # Ljava/lang/String;
.param p7, "addressLine2" # Ljava/lang/String;
.param p8, "addressCity" # Ljava/lang/String;
.param p9, "addressState" # Ljava/lang/String;
.param p10, "addressZip" # Ljava/lang/String;
.param p11, "addressCountry" # Ljava/lang/String;
.param p12, "currency" # Ljava/lang/String;
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p2
move-object/from16 v3, p3
move-object/from16 v4, p4
move-object/from16 v5, p5
move-object/from16 v6, p6
move-object/from16 v7, p7
move-object/from16 v8, p8
move-object/from16 v9, p9
move-object/from16 v10, p10
move-object/from16 v11, p11
move-object/from16 v17, p12
.line 291
const/4 v12, 0x0
const/4 v13, 0x0
const/4 v14, 0x0
const/4 v15, 0x0
const/16 v16, 0x0
invoke-direct/range {v0 .. v17}, Lcom/stripe/android/model/Card;-><init>(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.line 309
return-void
.end method
.method public constructor <init>(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.registers 22
.param p1, "number" # Ljava/lang/String;
.param p2, "expMonth" # Ljava/lang/Integer;
.param p3, "expYear" # Ljava/lang/Integer;
.param p4, "cvc" # Ljava/lang/String;
.param p5, "name" # Ljava/lang/String;
.param p6, "addressLine1" # Ljava/lang/String;
.param p7, "addressLine2" # Ljava/lang/String;
.param p8, "addressCity" # Ljava/lang/String;
.param p9, "addressState" # Ljava/lang/String;
.param p10, "addressZip" # Ljava/lang/String;
.param p11, "addressCountry" # Ljava/lang/String;
.param p12, "brand" # Ljava/lang/String;
.param p13, "last4" # Ljava/lang/String;
.param p14, "fingerprint" # Ljava/lang/String;
.param p15, "funding" # Ljava/lang/String;
.param p16, "country" # Ljava/lang/String;
.param p17, "currency" # Ljava/lang/String;
.line 242
move-object v0, p0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 243
invoke-direct {p0, p1}, Lcom/stripe/android/model/Card;->normalizeCardNumber(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
iput-object v1, v0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
.line 244
move-object v1, p2
iput-object v1, v0, Lcom/stripe/android/model/Card;->expMonth:Ljava/lang/Integer;
.line 245
move-object v2, p3
iput-object v2, v0, Lcom/stripe/android/model/Card;->expYear:Ljava/lang/Integer;
.line 246
invoke-static {p4}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->cvc:Ljava/lang/String;
.line 247
invoke-static {p5}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->name:Ljava/lang/String;
.line 248
invoke-static {p6}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->addressLine1:Ljava/lang/String;
.line 249
invoke-static {p7}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->addressLine2:Ljava/lang/String;
.line 250
invoke-static {p8}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->addressCity:Ljava/lang/String;
.line 251
invoke-static {p9}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->addressState:Ljava/lang/String;
.line 252
invoke-static {p10}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->addressZip:Ljava/lang/String;
.line 253
invoke-static {p11}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->addressCountry:Ljava/lang/String;
.line 254
invoke-static/range {p12 .. p12}, Lcom/stripe/android/util/StripeTextUtils;->asCardBrand(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
if-nez v3, :cond_4f
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->getBrand()Ljava/lang/String;
move-result-object v3
goto :goto_51
:cond_4f
move-object/from16 v3, p12
:goto_51
iput-object v3, v0, Lcom/stripe/android/model/Card;->brand:Ljava/lang/String;
.line 255
invoke-static/range {p13 .. p13}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
if-nez v3, :cond_5e
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->getLast4()Ljava/lang/String;
move-result-object v3
goto :goto_60
:cond_5e
move-object/from16 v3, p13
:goto_60
iput-object v3, v0, Lcom/stripe/android/model/Card;->last4:Ljava/lang/String;
.line 256
invoke-static/range {p14 .. p14}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->fingerprint:Ljava/lang/String;
.line 257
invoke-static/range {p15 .. p15}, Lcom/stripe/android/util/StripeTextUtils;->asFundingType(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->funding:Ljava/lang/String;
.line 258
invoke-static/range {p16 .. p16}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->country:Ljava/lang/String;
.line 259
invoke-static/range {p17 .. p17}, Lcom/stripe/android/util/StripeTextUtils;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
iput-object v3, v0, Lcom/stripe/android/model/Card;->currency:Ljava/lang/String;
.line 260
return-void
.end method
.method private isValidLuhnNumber(Ljava/lang/String;)Z
.registers 10
.param p1, "number" # Ljava/lang/String;
.line 732
const/4 v0, 0x1
.line 733
.local v0, "isOdd":Z
const/4 v1, 0x0
.line 735
.local v1, "sum":I
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v2
const/4 v3, 0x1
sub-int/2addr v2, v3
.local v2, "index":I
:goto_8
const/4 v4, 0x0
if-ltz v2, :cond_3d
.line 736
invoke-virtual {p1, v2}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 737
.local v5, "c":C
invoke-static {v5}, Ljava/lang/Character;->isDigit(C)Z
move-result v6
if-nez v6, :cond_16
.line 738
return v4
.line 740
:cond_16
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, ""
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
invoke-static {v6}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v6
.line 741
.local v6, "digitInteger":I
if-nez v0, :cond_2e
const/4 v4, 0x1
:cond_2e
move v0, v4
.line 743
if-eqz v0, :cond_33
.line 744
mul-int/lit8 v6, v6, 0x2
.line 747
:cond_33
const/16 v4, 0x9
if-le v6, v4, :cond_39
.line 748
add-int/lit8 v6, v6, -0x9
.line 751
:cond_39
add-int/2addr v1, v6
.line 735
.end local v5 # "c":C
.end local v6 # "digitInteger":I
add-int/lit8 v2, v2, -0x1
goto :goto_8
.line 754
.end local v2 # "index":I
:cond_3d
rem-int/lit8 v2, v1, 0xa
if-nez v2, :cond_42
goto :goto_43
:cond_42
const/4 v3, 0x0
:goto_43
return v3
.end method
.method private normalizeCardNumber(Ljava/lang/String;)Ljava/lang/String;
.registers 5
.param p1, "number" # Ljava/lang/String;
.line 758
if-nez p1, :cond_4
.line 759
const/4 v0, 0x0
return-object v0
.line 761
:cond_4
invoke-virtual {p1}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v0
const-string v1, "\\s+|-"
const-string v2, ""
invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
# virtual methods
.method public getAddressCity()Ljava/lang/String;
.registers 2
.line 553
iget-object v0, p0, Lcom/stripe/android/model/Card;->addressCity:Ljava/lang/String;
return-object v0
.end method
.method public getAddressCountry()Ljava/lang/String;
.registers 2
.line 598
iget-object v0, p0, Lcom/stripe/android/model/Card;->addressCountry:Ljava/lang/String;
return-object v0
.end method
.method public getAddressLine1()Ljava/lang/String;
.registers 2
.line 523
iget-object v0, p0, Lcom/stripe/android/model/Card;->addressLine1:Ljava/lang/String;
return-object v0
.end method
.method public getAddressLine2()Ljava/lang/String;
.registers 2
.line 538
iget-object v0, p0, Lcom/stripe/android/model/Card;->addressLine2:Ljava/lang/String;
return-object v0
.end method
.method public getAddressState()Ljava/lang/String;
.registers 2
.line 583
iget-object v0, p0, Lcom/stripe/android/model/Card;->addressState:Ljava/lang/String;
return-object v0
.end method
.method public getAddressZip()Ljava/lang/String;
.registers 2
.line 568
iget-object v0, p0, Lcom/stripe/android/model/Card;->addressZip:Ljava/lang/String;
return-object v0
.end method
.method public getBrand()Ljava/lang/String;
.registers 3
.line 661
iget-object v0, p0, Lcom/stripe/android/model/Card;->brand:Ljava/lang/String;
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->isBlank(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_62
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->isBlank(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_62
.line 663
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
sget-object v1, Lcom/stripe/android/model/Card;->PREFIXES_AMERICAN_EXPRESS:[Ljava/lang/String;
invoke-static {v0, v1}, Lcom/stripe/android/util/StripeTextUtils;->hasAnyPrefix(Ljava/lang/String;[Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_1d
.line 664
const-string v0, "American Express"
.local v0, "evaluatedType":Ljava/lang/String;
goto :goto_60
.line 665
.end local v0 # "evaluatedType":Ljava/lang/String;
:cond_1d
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
sget-object v1, Lcom/stripe/android/model/Card;->PREFIXES_DISCOVER:[Ljava/lang/String;
invoke-static {v0, v1}, Lcom/stripe/android/util/StripeTextUtils;->hasAnyPrefix(Ljava/lang/String;[Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_2a
.line 666
const-string v0, "Discover"
.restart local v0 # "evaluatedType":Ljava/lang/String;
goto :goto_60
.line 667
.end local v0 # "evaluatedType":Ljava/lang/String;
:cond_2a
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
sget-object v1, Lcom/stripe/android/model/Card;->PREFIXES_JCB:[Ljava/lang/String;
invoke-static {v0, v1}, Lcom/stripe/android/util/StripeTextUtils;->hasAnyPrefix(Ljava/lang/String;[Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_37
.line 668
const-string v0, "JCB"
.restart local v0 # "evaluatedType":Ljava/lang/String;
goto :goto_60
.line 669
.end local v0 # "evaluatedType":Ljava/lang/String;
:cond_37
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
sget-object v1, Lcom/stripe/android/model/Card;->PREFIXES_DINERS_CLUB:[Ljava/lang/String;
invoke-static {v0, v1}, Lcom/stripe/android/util/StripeTextUtils;->hasAnyPrefix(Ljava/lang/String;[Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_44
.line 670
const-string v0, "Diners Club"
.restart local v0 # "evaluatedType":Ljava/lang/String;
goto :goto_60
.line 671
.end local v0 # "evaluatedType":Ljava/lang/String;
:cond_44
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
sget-object v1, Lcom/stripe/android/model/Card;->PREFIXES_VISA:[Ljava/lang/String;
invoke-static {v0, v1}, Lcom/stripe/android/util/StripeTextUtils;->hasAnyPrefix(Ljava/lang/String;[Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_51
.line 672
const-string v0, "Visa"
.restart local v0 # "evaluatedType":Ljava/lang/String;
goto :goto_60
.line 673
.end local v0 # "evaluatedType":Ljava/lang/String;
:cond_51
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
sget-object v1, Lcom/stripe/android/model/Card;->PREFIXES_MASTERCARD:[Ljava/lang/String;
invoke-static {v0, v1}, Lcom/stripe/android/util/StripeTextUtils;->hasAnyPrefix(Ljava/lang/String;[Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_5e
.line 674
const-string v0, "MasterCard"
.restart local v0 # "evaluatedType":Ljava/lang/String;
goto :goto_60
.line 676
.end local v0 # "evaluatedType":Ljava/lang/String;
:cond_5e
const-string v0, "Unknown"
.line 678
.restart local v0 # "evaluatedType":Ljava/lang/String;
:goto_60
iput-object v0, p0, Lcom/stripe/android/model/Card;->brand:Ljava/lang/String;
.line 681
.end local v0 # "evaluatedType":Ljava/lang/String;
:cond_62
iget-object v0, p0, Lcom/stripe/android/model/Card;->brand:Ljava/lang/String;
return-object v0
.end method
.method public getCVC()Ljava/lang/String;
.registers 2
.line 461
iget-object v0, p0, Lcom/stripe/android/model/Card;->cvc:Ljava/lang/String;
return-object v0
.end method
.method public getCountry()Ljava/lang/String;
.registers 2
.line 704
iget-object v0, p0, Lcom/stripe/android/model/Card;->country:Ljava/lang/String;
return-object v0
.end method
.method public getCurrency()Ljava/lang/String;
.registers 2
.line 613
iget-object v0, p0, Lcom/stripe/android/model/Card;->currency:Ljava/lang/String;
return-object v0
.end method
.method public getExpMonth()Ljava/lang/Integer;
.registers 2
.line 478
iget-object v0, p0, Lcom/stripe/android/model/Card;->expMonth:Ljava/lang/Integer;
return-object v0
.end method
.method public getExpYear()Ljava/lang/Integer;
.registers 2
.line 493
iget-object v0, p0, Lcom/stripe/android/model/Card;->expYear:Ljava/lang/Integer;
return-object v0
.end method
.method public getFingerprint()Ljava/lang/String;
.registers 2
.line 688
iget-object v0, p0, Lcom/stripe/android/model/Card;->fingerprint:Ljava/lang/String;
return-object v0
.end method
.method public getFunding()Ljava/lang/String;
.registers 2
.line 697
iget-object v0, p0, Lcom/stripe/android/model/Card;->funding:Ljava/lang/String;
return-object v0
.end method
.method public getLast4()Ljava/lang/String;
.registers 4
.line 629
iget-object v0, p0, Lcom/stripe/android/model/Card;->last4:Ljava/lang/String;
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->isBlank(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_b
.line 630
iget-object v0, p0, Lcom/stripe/android/model/Card;->last4:Ljava/lang/String;
return-object v0
.line 633
:cond_b
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
if-eqz v0, :cond_2a
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v0
const/4 v1, 0x4
if-le v0, v1, :cond_2a
.line 634
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v2
sub-int/2addr v2, v1
iget-object v1, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v1
invoke-virtual {v0, v2, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/stripe/android/model/Card;->last4:Ljava/lang/String;
.line 635
return-object v0
.line 638
:cond_2a
const/4 v0, 0x0
return-object v0
.end method
.method public getName()Ljava/lang/String;
.registers 2
.line 508
iget-object v0, p0, Lcom/stripe/android/model/Card;->name:Ljava/lang/String;
return-object v0
.end method
.method public getNumber()Ljava/lang/String;
.registers 2
.line 441
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
return-object v0
.end method
.method public getType()Ljava/lang/String;
.registers 2
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 650
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->getBrand()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public setAddressCity(Ljava/lang/String;)V
.registers 2
.param p1, "addressCity" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 561
iput-object p1, p0, Lcom/stripe/android/model/Card;->addressCity:Ljava/lang/String;
.line 562
return-void
.end method
.method public setAddressCountry(Ljava/lang/String;)V
.registers 2
.param p1, "addressCountry" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 606
iput-object p1, p0, Lcom/stripe/android/model/Card;->addressCountry:Ljava/lang/String;
.line 607
return-void
.end method
.method public setAddressLine1(Ljava/lang/String;)V
.registers 2
.param p1, "addressLine1" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 531
iput-object p1, p0, Lcom/stripe/android/model/Card;->addressLine1:Ljava/lang/String;
.line 532
return-void
.end method
.method public setAddressLine2(Ljava/lang/String;)V
.registers 2
.param p1, "addressLine2" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 546
iput-object p1, p0, Lcom/stripe/android/model/Card;->addressLine2:Ljava/lang/String;
.line 547
return-void
.end method
.method public setAddressState(Ljava/lang/String;)V
.registers 2
.param p1, "addressState" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 591
iput-object p1, p0, Lcom/stripe/android/model/Card;->addressState:Ljava/lang/String;
.line 592
return-void
.end method
.method public setAddressZip(Ljava/lang/String;)V
.registers 2
.param p1, "addressZip" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 576
iput-object p1, p0, Lcom/stripe/android/model/Card;->addressZip:Ljava/lang/String;
.line 577
return-void
.end method
.method public setCVC(Ljava/lang/String;)V
.registers 2
.param p1, "cvc" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 469
iput-object p1, p0, Lcom/stripe/android/model/Card;->cvc:Ljava/lang/String;
.line 470
return-void
.end method
.method public setCurrency(Ljava/lang/String;)V
.registers 2
.param p1, "currency" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 621
iput-object p1, p0, Lcom/stripe/android/model/Card;->currency:Ljava/lang/String;
.line 622
return-void
.end method
.method public setExpMonth(Ljava/lang/Integer;)V
.registers 2
.param p1, "expMonth" # Ljava/lang/Integer;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 486
iput-object p1, p0, Lcom/stripe/android/model/Card;->expMonth:Ljava/lang/Integer;
.line 487
return-void
.end method
.method public setExpYear(Ljava/lang/Integer;)V
.registers 2
.param p1, "expYear" # Ljava/lang/Integer;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 501
iput-object p1, p0, Lcom/stripe/android/model/Card;->expYear:Ljava/lang/Integer;
.line 502
return-void
.end method
.method public setName(Ljava/lang/String;)V
.registers 2
.param p1, "name" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 516
iput-object p1, p0, Lcom/stripe/android/model/Card;->name:Ljava/lang/String;
.line 517
return-void
.end method
.method public setNumber(Ljava/lang/String;)V
.registers 3
.param p1, "number" # Ljava/lang/String;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 452
iput-object p1, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
.line 453
const/4 v0, 0x0
iput-object v0, p0, Lcom/stripe/android/model/Card;->brand:Ljava/lang/String;
.line 454
iput-object v0, p0, Lcom/stripe/android/model/Card;->last4:Ljava/lang/String;
.line 455
return-void
.end method
.method public validateCVC()Z
.registers 8
.line 406
iget-object v0, p0, Lcom/stripe/android/model/Card;->cvc:Ljava/lang/String;
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->isBlank(Ljava/lang/String;)Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_a
.line 407
return v1
.line 409
:cond_a
iget-object v0, p0, Lcom/stripe/android/model/Card;->cvc:Ljava/lang/String;
invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v0
.line 410
.local v0, "cvcValue":Ljava/lang/String;
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->getBrand()Ljava/lang/String;
move-result-object v2
.line 411
.local v2, "updatedType":Ljava/lang/String;
const/4 v3, 0x1
const/4 v4, 0x4
const/4 v5, 0x3
if-nez v2, :cond_25
.line 412
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v6
if-lt v6, v5, :cond_25
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v6
if-le v6, v4, :cond_3a
:cond_25
nop
.line 413
const-string v6, "American Express"
invoke-virtual {v6, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_34
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v6
if-eq v6, v4, :cond_3a
.line 414
:cond_34
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v4
if-ne v4, v5, :cond_3c
:cond_3a
const/4 v4, 0x1
goto :goto_3d
:cond_3c
const/4 v4, 0x0
.line 416
.local v4, "validLength":Z
:goto_3d
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->isWholePositiveNumber(Ljava/lang/String;)Z
move-result v5
if-eqz v5, :cond_46
if-eqz v4, :cond_46
const/4 v1, 0x1
:cond_46
return v1
.end method
.method public validateCard()Z
.registers 4
.line 350
iget-object v0, p0, Lcom/stripe/android/model/Card;->cvc:Ljava/lang/String;
const/4 v1, 0x1
const/4 v2, 0x0
if-nez v0, :cond_15
.line 351
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->validateNumber()Z
move-result v0
if-eqz v0, :cond_13
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->validateExpiryDate()Z
move-result v0
if-eqz v0, :cond_13
goto :goto_14
:cond_13
const/4 v1, 0x0
:goto_14
return v1
.line 353
:cond_15
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->validateNumber()Z
move-result v0
if-eqz v0, :cond_28
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->validateExpiryDate()Z
move-result v0
if-eqz v0, :cond_28
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->validateCVC()Z
move-result v0
if-eqz v0, :cond_28
goto :goto_29
:cond_28
const/4 v1, 0x0
:goto_29
return v1
.end method
.method public validateExpMonth()Z
.registers 4
.line 425
iget-object v0, p0, Lcom/stripe/android/model/Card;->expMonth:Ljava/lang/Integer;
const/4 v1, 0x1
if-eqz v0, :cond_16
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
if-lt v0, v1, :cond_16
iget-object v0, p0, Lcom/stripe/android/model/Card;->expMonth:Ljava/lang/Integer;
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
const/16 v2, 0xc
if-gt v0, v2, :cond_16
goto :goto_17
:cond_16
const/4 v1, 0x0
:goto_17
return v1
.end method
.method public validateExpYear()Z
.registers 2
.line 434
iget-object v0, p0, Lcom/stripe/android/model/Card;->expYear:Ljava/lang/Integer;
if-eqz v0, :cond_10
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
invoke-static {v0}, Lcom/stripe/android/util/DateUtils;->hasYearPassed(I)Z
move-result v0
if-nez v0, :cond_10
const/4 v0, 0x1
goto :goto_11
:cond_10
const/4 v0, 0x0
:goto_11
return v0
.end method
.method public validateExpiryDate()Z
.registers 3
.line 391
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->validateExpMonth()Z
move-result v0
const/4 v1, 0x0
if-nez v0, :cond_8
.line 392
return v1
.line 394
:cond_8
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->validateExpYear()Z
move-result v0
if-nez v0, :cond_f
.line 395
return v1
.line 397
:cond_f
iget-object v0, p0, Lcom/stripe/android/model/Card;->expYear:Ljava/lang/Integer;
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
iget-object v1, p0, Lcom/stripe/android/model/Card;->expMonth:Ljava/lang/Integer;
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v1
invoke-static {v0, v1}, Lcom/stripe/android/util/DateUtils;->hasMonthPassed(II)Z
move-result v0
xor-int/lit8 v0, v0, 0x1
return v0
.end method
.method public validateNumber()Z
.registers 7
.line 363
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->isBlank(Ljava/lang/String;)Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_a
.line 364
return v1
.line 367
:cond_a
iget-object v0, p0, Lcom/stripe/android/model/Card;->number:Ljava/lang/String;
invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v0
const-string v2, "\\s+|-"
const-string v3, ""
invoke-virtual {v0, v2, v3}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 368
.local v0, "rawNumber":Ljava/lang/String;
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->isBlank(Ljava/lang/String;)Z
move-result v2
if-nez v2, :cond_5e
.line 369
invoke-static {v0}, Lcom/stripe/android/util/StripeTextUtils;->isWholePositiveNumber(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_5e
.line 370
invoke-direct {p0, v0}, Lcom/stripe/android/model/Card;->isValidLuhnNumber(Ljava/lang/String;)Z
move-result v2
if-nez v2, :cond_2b
goto :goto_5e
.line 374
:cond_2b
invoke-virtual {p0}, Lcom/stripe/android/model/Card;->getBrand()Ljava/lang/String;
move-result-object v2
.line 375
.local v2, "updatedType":Ljava/lang/String;
const-string v3, "American Express"
invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
const/4 v4, 0x1
if-eqz v3, :cond_42
.line 376
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v3
const/16 v5, 0xf
if-ne v3, v5, :cond_41
const/4 v1, 0x1
:cond_41
return v1
.line 377
:cond_42
const-string v3, "Diners Club"
invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_54
.line 378
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v3
const/16 v5, 0xe
if-ne v3, v5, :cond_53
const/4 v1, 0x1
:cond_53
return v1
.line 380
:cond_54
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v3
const/16 v5, 0x10
if-ne v3, v5, :cond_5d
const/4 v1, 0x1
:cond_5d
return v1
.line 371
.end local v2 # "updatedType":Ljava/lang/String;
:cond_5e
:goto_5e
return v1
.end method