ISO8601Utils.smali 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083
  1. .class public Lcom/google/gson/internal/bind/util/ISO8601Utils;
  2. .super Ljava/lang/Object;
  3. .source ""
  4. # static fields
  5. .field private static final TIMEZONE_UTC:Ljava/util/TimeZone;
  6. .field private static final UTC_ID:Ljava/lang/String; = "UTC"
  7. # direct methods
  8. .method static constructor <clinit>()V
  9. .locals 1
  10. const-string v0, "UTC"
  11. invoke-static {v0}, Ljava/util/TimeZone;->getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;
  12. move-result-object v0
  13. sput-object v0, Lcom/google/gson/internal/bind/util/ISO8601Utils;->TIMEZONE_UTC:Ljava/util/TimeZone;
  14. return-void
  15. .end method
  16. .method public constructor <init>()V
  17. .locals 0
  18. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  19. return-void
  20. .end method
  21. .method private static checkOffset(Ljava/lang/String;IC)Z
  22. .locals 1
  23. invoke-virtual {p0}, Ljava/lang/String;->length()I
  24. move-result v0
  25. if-ge p1, v0, :cond_0
  26. invoke-virtual {p0, p1}, Ljava/lang/String;->charAt(I)C
  27. move-result p0
  28. if-ne p0, p2, :cond_0
  29. const/4 p0, 0x1
  30. goto :goto_0
  31. :cond_0
  32. const/4 p0, 0x0
  33. :goto_0
  34. return p0
  35. .end method
  36. .method public static format(Ljava/util/Date;)Ljava/lang/String;
  37. .locals 2
  38. sget-object v0, Lcom/google/gson/internal/bind/util/ISO8601Utils;->TIMEZONE_UTC:Ljava/util/TimeZone;
  39. const/4 v1, 0x0
  40. invoke-static {p0, v1, v0}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->format(Ljava/util/Date;ZLjava/util/TimeZone;)Ljava/lang/String;
  41. move-result-object p0
  42. return-object p0
  43. .end method
  44. .method public static format(Ljava/util/Date;Z)Ljava/lang/String;
  45. .locals 1
  46. sget-object v0, Lcom/google/gson/internal/bind/util/ISO8601Utils;->TIMEZONE_UTC:Ljava/util/TimeZone;
  47. invoke-static {p0, p1, v0}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->format(Ljava/util/Date;ZLjava/util/TimeZone;)Ljava/lang/String;
  48. move-result-object p0
  49. return-object p0
  50. .end method
  51. .method public static format(Ljava/util/Date;ZLjava/util/TimeZone;)Ljava/lang/String;
  52. .locals 6
  53. new-instance v0, Ljava/util/GregorianCalendar;
  54. sget-object v1, Ljava/util/Locale;->US:Ljava/util/Locale;
  55. invoke-direct {v0, p2, v1}, Ljava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;Ljava/util/Locale;)V
  56. invoke-virtual {v0, p0}, Ljava/util/Calendar;->setTime(Ljava/util/Date;)V
  57. const/4 p0, 0x4
  58. if-eqz p1, :cond_0
  59. const/4 v1, 0x4
  60. goto :goto_0
  61. :cond_0
  62. const/4 v1, 0x0
  63. :goto_0
  64. const/16 v2, 0x13
  65. add-int/2addr v2, v1
  66. invoke-virtual {p2}, Ljava/util/TimeZone;->getRawOffset()I
  67. move-result v1
  68. const/4 v3, 0x1
  69. if-nez v1, :cond_1
  70. const/4 v1, 0x1
  71. goto :goto_1
  72. :cond_1
  73. const/4 v1, 0x6
  74. :goto_1
  75. add-int/2addr v2, v1
  76. new-instance v1, Ljava/lang/StringBuilder;
  77. invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(I)V
  78. invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I
  79. move-result v2
  80. invoke-static {v1, v2, p0}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  81. const/16 p0, 0x2d
  82. invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  83. const/4 v2, 0x2
  84. invoke-virtual {v0, v2}, Ljava/util/Calendar;->get(I)I
  85. move-result v4
  86. add-int/2addr v4, v3
  87. invoke-static {v1, v4, v2}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  88. invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  89. const/4 v3, 0x5
  90. invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I
  91. move-result v3
  92. invoke-static {v1, v3, v2}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  93. const/16 v3, 0x54
  94. invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  95. const/16 v3, 0xb
  96. invoke-virtual {v0, v3}, Ljava/util/Calendar;->get(I)I
  97. move-result v3
  98. invoke-static {v1, v3, v2}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  99. const/16 v3, 0x3a
  100. invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  101. const/16 v4, 0xc
  102. invoke-virtual {v0, v4}, Ljava/util/Calendar;->get(I)I
  103. move-result v4
  104. invoke-static {v1, v4, v2}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  105. invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  106. const/16 v4, 0xd
  107. invoke-virtual {v0, v4}, Ljava/util/Calendar;->get(I)I
  108. move-result v4
  109. invoke-static {v1, v4, v2}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  110. if-eqz p1, :cond_2
  111. const/16 p1, 0x2e
  112. invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  113. const/16 p1, 0xe
  114. invoke-virtual {v0, p1}, Ljava/util/Calendar;->get(I)I
  115. move-result p1
  116. const/4 v4, 0x3
  117. invoke-static {v1, p1, v4}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  118. :cond_2
  119. invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J
  120. move-result-wide v4
  121. invoke-virtual {p2, v4, v5}, Ljava/util/TimeZone;->getOffset(J)I
  122. move-result p1
  123. if-eqz p1, :cond_4
  124. const p2, 0xea60
  125. div-int p2, p1, p2
  126. div-int/lit8 v0, p2, 0x3c
  127. invoke-static {v0}, Ljava/lang/Math;->abs(I)I
  128. move-result v0
  129. rem-int/lit8 p2, p2, 0x3c
  130. invoke-static {p2}, Ljava/lang/Math;->abs(I)I
  131. move-result p2
  132. if-gez p1, :cond_3
  133. goto :goto_2
  134. :cond_3
  135. const/16 p0, 0x2b
  136. :goto_2
  137. invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  138. invoke-static {v1, v0, v2}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  139. invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  140. invoke-static {v1, p2, v2}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->padInt(Ljava/lang/StringBuilder;II)V
  141. goto :goto_3
  142. :cond_4
  143. const/16 p0, 0x5a
  144. invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  145. :goto_3
  146. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  147. move-result-object p0
  148. return-object p0
  149. .end method
  150. .method private static indexOfNonDigit(Ljava/lang/String;I)I
  151. .locals 2
  152. :goto_0
  153. invoke-virtual {p0}, Ljava/lang/String;->length()I
  154. move-result v0
  155. if-ge p1, v0, :cond_2
  156. invoke-virtual {p0, p1}, Ljava/lang/String;->charAt(I)C
  157. move-result v0
  158. const/16 v1, 0x30
  159. if-lt v0, v1, :cond_1
  160. const/16 v1, 0x39
  161. if-le v0, v1, :cond_0
  162. goto :goto_1
  163. :cond_0
  164. add-int/lit8 p1, p1, 0x1
  165. goto :goto_0
  166. :cond_1
  167. :goto_1
  168. return p1
  169. :cond_2
  170. invoke-virtual {p0}, Ljava/lang/String;->length()I
  171. move-result p0
  172. return p0
  173. .end method
  174. .method private static padInt(Ljava/lang/StringBuilder;II)V
  175. .locals 1
  176. invoke-static {p1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
  177. move-result-object p1
  178. invoke-virtual {p1}, Ljava/lang/String;->length()I
  179. move-result v0
  180. sub-int/2addr p2, v0
  181. :goto_0
  182. if-lez p2, :cond_0
  183. const/16 v0, 0x30
  184. invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  185. add-int/lit8 p2, p2, -0x1
  186. goto :goto_0
  187. :cond_0
  188. invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  189. return-void
  190. .end method
  191. .method public static parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;
  192. .locals 18
  193. .annotation system Ldalvik/annotation/Throws;
  194. value = {
  195. Ljava/text/ParseException;
  196. }
  197. .end annotation
  198. move-object/from16 v1, p0
  199. move-object/from16 v2, p1
  200. const-string v3, "\'"
  201. :try_start_0
  202. invoke-virtual/range {p1 .. p1}, Ljava/text/ParsePosition;->getIndex()I
  203. move-result v0
  204. add-int/lit8 v4, v0, 0x4
  205. invoke-static {v1, v0, v4}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->parseInt(Ljava/lang/String;II)I
  206. move-result v0
  207. const/16 v5, 0x2d
  208. invoke-static {v1, v4, v5}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->checkOffset(Ljava/lang/String;IC)Z
  209. move-result v6
  210. if-eqz v6, :cond_0
  211. add-int/lit8 v4, v4, 0x1
  212. :cond_0
  213. add-int/lit8 v6, v4, 0x2
  214. invoke-static {v1, v4, v6}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->parseInt(Ljava/lang/String;II)I
  215. move-result v4
  216. invoke-static {v1, v6, v5}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->checkOffset(Ljava/lang/String;IC)Z
  217. move-result v7
  218. if-eqz v7, :cond_1
  219. add-int/lit8 v6, v6, 0x1
  220. :cond_1
  221. add-int/lit8 v7, v6, 0x2
  222. invoke-static {v1, v6, v7}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->parseInt(Ljava/lang/String;II)I
  223. move-result v6
  224. const/16 v8, 0x54
  225. invoke-static {v1, v7, v8}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->checkOffset(Ljava/lang/String;IC)Z
  226. move-result v8
  227. const/4 v9, 0x1
  228. if-nez v8, :cond_2
  229. invoke-virtual/range {p0 .. p0}, Ljava/lang/String;->length()I
  230. move-result v10
  231. if-gt v10, v7, :cond_2
  232. new-instance v5, Ljava/util/GregorianCalendar;
  233. sub-int/2addr v4, v9
  234. invoke-direct {v5, v0, v4, v6}, Ljava/util/GregorianCalendar;-><init>(III)V
  235. invoke-virtual {v2, v7}, Ljava/text/ParsePosition;->setIndex(I)V
  236. invoke-virtual {v5}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
  237. move-result-object v0
  238. return-object v0
  239. :cond_2
  240. const/16 v10, 0x2b
  241. const/16 v11, 0x5a
  242. const/4 v13, 0x2
  243. if-eqz v8, :cond_a
  244. add-int/lit8 v7, v7, 0x1
  245. add-int/lit8 v8, v7, 0x2
  246. invoke-static {v1, v7, v8}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->parseInt(Ljava/lang/String;II)I
  247. move-result v7
  248. const/16 v14, 0x3a
  249. invoke-static {v1, v8, v14}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->checkOffset(Ljava/lang/String;IC)Z
  250. move-result v15
  251. if-eqz v15, :cond_3
  252. add-int/lit8 v8, v8, 0x1
  253. :cond_3
  254. add-int/lit8 v15, v8, 0x2
  255. invoke-static {v1, v8, v15}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->parseInt(Ljava/lang/String;II)I
  256. move-result v8
  257. invoke-static {v1, v15, v14}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->checkOffset(Ljava/lang/String;IC)Z
  258. move-result v14
  259. if-eqz v14, :cond_4
  260. add-int/lit8 v15, v15, 0x1
  261. :cond_4
  262. invoke-virtual/range {p0 .. p0}, Ljava/lang/String;->length()I
  263. move-result v14
  264. if-le v14, v15, :cond_9
  265. invoke-virtual {v1, v15}, Ljava/lang/String;->charAt(I)C
  266. move-result v14
  267. if-eq v14, v11, :cond_9
  268. if-eq v14, v10, :cond_9
  269. if-eq v14, v5, :cond_9
  270. add-int/lit8 v14, v15, 0x2
  271. invoke-static {v1, v15, v14}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->parseInt(Ljava/lang/String;II)I
  272. move-result v15
  273. const/16 v12, 0x3b
  274. if-le v15, v12, :cond_5
  275. const/16 v12, 0x3f
  276. if-ge v15, v12, :cond_5
  277. const/16 v12, 0x3b
  278. goto :goto_0
  279. :cond_5
  280. move v12, v15
  281. :goto_0
  282. const/16 v15, 0x2e
  283. invoke-static {v1, v14, v15}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->checkOffset(Ljava/lang/String;IC)Z
  284. move-result v15
  285. if-eqz v15, :cond_8
  286. add-int/lit8 v14, v14, 0x1
  287. add-int/lit8 v15, v14, 0x1
  288. invoke-static {v1, v15}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->indexOfNonDigit(Ljava/lang/String;I)I
  289. move-result v15
  290. add-int/lit8 v5, v14, 0x3
  291. invoke-static {v15, v5}, Ljava/lang/Math;->min(II)I
  292. move-result v5
  293. invoke-static {v1, v14, v5}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->parseInt(Ljava/lang/String;II)I
  294. move-result v17
  295. sub-int/2addr v5, v14
  296. if-eq v5, v9, :cond_7
  297. if-eq v5, v13, :cond_6
  298. goto :goto_1
  299. :cond_6
  300. mul-int/lit8 v17, v17, 0xa
  301. goto :goto_1
  302. :cond_7
  303. mul-int/lit8 v17, v17, 0x64
  304. :goto_1
  305. move/from16 v5, v17
  306. goto :goto_3
  307. :cond_8
  308. move v15, v14
  309. const/4 v5, 0x0
  310. goto :goto_3
  311. :cond_9
  312. const/4 v5, 0x0
  313. goto :goto_2
  314. :cond_a
  315. move v15, v7
  316. const/4 v5, 0x0
  317. const/4 v7, 0x0
  318. const/4 v8, 0x0
  319. :goto_2
  320. const/4 v12, 0x0
  321. :goto_3
  322. invoke-virtual/range {p0 .. p0}, Ljava/lang/String;->length()I
  323. move-result v14
  324. if-le v14, v15, :cond_13
  325. invoke-virtual {v1, v15}, Ljava/lang/String;->charAt(I)C
  326. move-result v14
  327. const/4 v13, 0x5
  328. if-ne v14, v11, :cond_b
  329. sget-object v10, Lcom/google/gson/internal/bind/util/ISO8601Utils;->TIMEZONE_UTC:Ljava/util/TimeZone;
  330. add-int/2addr v15, v9
  331. goto/16 :goto_8
  332. :cond_b
  333. if-eq v14, v10, :cond_d
  334. const/16 v10, 0x2d
  335. if-ne v14, v10, :cond_c
  336. goto :goto_4
  337. :cond_c
  338. new-instance v0, Ljava/lang/IndexOutOfBoundsException;
  339. new-instance v4, Ljava/lang/StringBuilder;
  340. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  341. const-string v5, "Invalid time zone indicator \'"
  342. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  343. invoke-virtual {v4, v14}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  344. invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  345. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  346. move-result-object v4
  347. invoke-direct {v0, v4}, Ljava/lang/IndexOutOfBoundsException;-><init>(Ljava/lang/String;)V
  348. throw v0
  349. :cond_d
  350. :goto_4
  351. invoke-virtual {v1, v15}, Ljava/lang/String;->substring(I)Ljava/lang/String;
  352. move-result-object v10
  353. invoke-virtual {v10}, Ljava/lang/String;->length()I
  354. move-result v11
  355. if-lt v11, v13, :cond_e
  356. goto :goto_5
  357. :cond_e
  358. new-instance v11, Ljava/lang/StringBuilder;
  359. invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
  360. invoke-virtual {v11, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  361. const-string v10, "00"
  362. invoke-virtual {v11, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  363. invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  364. move-result-object v10
  365. :goto_5
  366. invoke-virtual {v10}, Ljava/lang/String;->length()I
  367. move-result v11
  368. add-int/2addr v15, v11
  369. const-string v11, "+0000"
  370. invoke-virtual {v11, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  371. move-result v11
  372. if-nez v11, :cond_12
  373. const-string v11, "+00:00"
  374. invoke-virtual {v11, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  375. move-result v11
  376. if-eqz v11, :cond_f
  377. goto :goto_7
  378. :cond_f
  379. new-instance v11, Ljava/lang/StringBuilder;
  380. invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
  381. const-string v14, "GMT"
  382. invoke-virtual {v11, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  383. invoke-virtual {v11, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  384. invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  385. move-result-object v10
  386. invoke-static {v10}, Ljava/util/TimeZone;->getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;
  387. move-result-object v11
  388. invoke-virtual {v11}, Ljava/util/TimeZone;->getID()Ljava/lang/String;
  389. move-result-object v14
  390. invoke-virtual {v14, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  391. move-result v16
  392. if-nez v16, :cond_11
  393. const-string v13, ":"
  394. const-string v9, ""
  395. invoke-virtual {v14, v13, v9}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
  396. move-result-object v9
  397. invoke-virtual {v9, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  398. move-result v9
  399. if-eqz v9, :cond_10
  400. goto :goto_6
  401. :cond_10
  402. new-instance v0, Ljava/lang/IndexOutOfBoundsException;
  403. new-instance v4, Ljava/lang/StringBuilder;
  404. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  405. const-string v5, "Mismatching time zone indicator: "
  406. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  407. invoke-virtual {v4, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  408. const-string v5, " given, resolves to "
  409. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  410. invoke-virtual {v11}, Ljava/util/TimeZone;->getID()Ljava/lang/String;
  411. move-result-object v5
  412. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  413. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  414. move-result-object v4
  415. invoke-direct {v0, v4}, Ljava/lang/IndexOutOfBoundsException;-><init>(Ljava/lang/String;)V
  416. throw v0
  417. :cond_11
  418. :goto_6
  419. move-object v10, v11
  420. goto :goto_8
  421. :cond_12
  422. :goto_7
  423. sget-object v9, Lcom/google/gson/internal/bind/util/ISO8601Utils;->TIMEZONE_UTC:Ljava/util/TimeZone;
  424. move-object v10, v9
  425. :goto_8
  426. new-instance v9, Ljava/util/GregorianCalendar;
  427. invoke-direct {v9, v10}, Ljava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;)V
  428. const/4 v10, 0x0
  429. invoke-virtual {v9, v10}, Ljava/util/Calendar;->setLenient(Z)V
  430. const/4 v10, 0x1
  431. invoke-virtual {v9, v10, v0}, Ljava/util/Calendar;->set(II)V
  432. sub-int/2addr v4, v10
  433. const/4 v0, 0x2
  434. invoke-virtual {v9, v0, v4}, Ljava/util/Calendar;->set(II)V
  435. const/4 v0, 0x5
  436. invoke-virtual {v9, v0, v6}, Ljava/util/Calendar;->set(II)V
  437. const/16 v0, 0xb
  438. invoke-virtual {v9, v0, v7}, Ljava/util/Calendar;->set(II)V
  439. const/16 v0, 0xc
  440. invoke-virtual {v9, v0, v8}, Ljava/util/Calendar;->set(II)V
  441. const/16 v0, 0xd
  442. invoke-virtual {v9, v0, v12}, Ljava/util/Calendar;->set(II)V
  443. const/16 v0, 0xe
  444. invoke-virtual {v9, v0, v5}, Ljava/util/Calendar;->set(II)V
  445. invoke-virtual {v2, v15}, Ljava/text/ParsePosition;->setIndex(I)V
  446. invoke-virtual {v9}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
  447. move-result-object v0
  448. return-object v0
  449. :cond_13
  450. new-instance v0, Ljava/lang/IllegalArgumentException;
  451. const-string v4, "No time zone indicator"
  452. invoke-direct {v0, v4}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  453. throw v0
  454. :try_end_0
  455. .catch Ljava/lang/IndexOutOfBoundsException; {:try_start_0 .. :try_end_0} :catch_2
  456. .catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_0} :catch_1
  457. .catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_0} :catch_0
  458. :catch_0
  459. move-exception v0
  460. goto :goto_9
  461. :catch_1
  462. move-exception v0
  463. goto :goto_9
  464. :catch_2
  465. move-exception v0
  466. :goto_9
  467. if-nez v1, :cond_14
  468. const/4 v1, 0x0
  469. goto :goto_a
  470. :cond_14
  471. new-instance v4, Ljava/lang/StringBuilder;
  472. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  473. const/16 v5, 0x22
  474. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  475. invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  476. invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  477. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  478. move-result-object v1
  479. :goto_a
  480. invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
  481. move-result-object v3
  482. if-eqz v3, :cond_15
  483. invoke-virtual {v3}, Ljava/lang/String;->isEmpty()Z
  484. move-result v4
  485. if-eqz v4, :cond_16
  486. :cond_15
  487. new-instance v3, Ljava/lang/StringBuilder;
  488. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  489. const-string v4, "("
  490. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  491. invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
  492. move-result-object v4
  493. invoke-virtual {v4}, Ljava/lang/Class;->getName()Ljava/lang/String;
  494. move-result-object v4
  495. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  496. const-string v4, ")"
  497. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  498. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  499. move-result-object v3
  500. :cond_16
  501. new-instance v4, Ljava/text/ParseException;
  502. new-instance v5, Ljava/lang/StringBuilder;
  503. invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
  504. const-string v6, "Failed to parse date ["
  505. invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  506. invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  507. const-string v1, "]: "
  508. invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  509. invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  510. invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  511. move-result-object v1
  512. invoke-virtual/range {p1 .. p1}, Ljava/text/ParsePosition;->getIndex()I
  513. move-result v2
  514. invoke-direct {v4, v1, v2}, Ljava/text/ParseException;-><init>(Ljava/lang/String;I)V
  515. invoke-virtual {v4, v0}, Ljava/text/ParseException;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;
  516. throw v4
  517. .end method
  518. .method private static parseInt(Ljava/lang/String;II)I
  519. .locals 5
  520. .annotation system Ldalvik/annotation/Throws;
  521. value = {
  522. Ljava/lang/NumberFormatException;
  523. }
  524. .end annotation
  525. if-ltz p1, :cond_4
  526. invoke-virtual {p0}, Ljava/lang/String;->length()I
  527. move-result v0
  528. if-gt p2, v0, :cond_4
  529. if-gt p1, p2, :cond_4
  530. const/4 v0, 0x0
  531. const-string v1, "Invalid number: "
  532. const/16 v2, 0xa
  533. if-ge p1, p2, :cond_1
  534. add-int/lit8 v0, p1, 0x1
  535. invoke-virtual {p0, p1}, Ljava/lang/String;->charAt(I)C
  536. move-result v3
  537. invoke-static {v3, v2}, Ljava/lang/Character;->digit(CI)I
  538. move-result v3
  539. if-ltz v3, :cond_0
  540. neg-int v3, v3
  541. goto :goto_0
  542. :cond_0
  543. new-instance v0, Ljava/lang/NumberFormatException;
  544. new-instance v2, Ljava/lang/StringBuilder;
  545. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  546. invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  547. invoke-virtual {p0, p1, p2}, Ljava/lang/String;->substring(II)Ljava/lang/String;
  548. move-result-object p0
  549. invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  550. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  551. move-result-object p0
  552. invoke-direct {v0, p0}, Ljava/lang/NumberFormatException;-><init>(Ljava/lang/String;)V
  553. throw v0
  554. :cond_1
  555. move v0, p1
  556. const/4 v3, 0x0
  557. :goto_0
  558. if-ge v0, p2, :cond_3
  559. add-int/lit8 v4, v0, 0x1
  560. invoke-virtual {p0, v0}, Ljava/lang/String;->charAt(I)C
  561. move-result v0
  562. invoke-static {v0, v2}, Ljava/lang/Character;->digit(CI)I
  563. move-result v0
  564. if-ltz v0, :cond_2
  565. mul-int/lit8 v3, v3, 0xa
  566. sub-int/2addr v3, v0
  567. move v0, v4
  568. goto :goto_0
  569. :cond_2
  570. new-instance v0, Ljava/lang/NumberFormatException;
  571. new-instance v2, Ljava/lang/StringBuilder;
  572. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  573. invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  574. invoke-virtual {p0, p1, p2}, Ljava/lang/String;->substring(II)Ljava/lang/String;
  575. move-result-object p0
  576. invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  577. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  578. move-result-object p0
  579. invoke-direct {v0, p0}, Ljava/lang/NumberFormatException;-><init>(Ljava/lang/String;)V
  580. throw v0
  581. :cond_3
  582. neg-int p0, v3
  583. return p0
  584. :cond_4
  585. new-instance p1, Ljava/lang/NumberFormatException;
  586. invoke-direct {p1, p0}, Ljava/lang/NumberFormatException;-><init>(Ljava/lang/String;)V
  587. goto :goto_2
  588. :goto_1
  589. throw p1
  590. :goto_2
  591. goto :goto_1
  592. .end method