From 9abc1969ea8bf3e8960a8cf09f4b46859ab77c4e Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Sat, 8 Feb 2020 00:32:28 +0530 Subject: [PATCH 01/24] Add base files, bank constants & ifsc json file loader. --- src/go/Bank.go | 1426 ++++++++++++++++++++++++++++++++++++++++++++++ src/go/Client.go | 1 + src/go/Entity.go | 1 + src/go/IFSC.go | 66 +++ 4 files changed, 1494 insertions(+) create mode 100644 src/go/Bank.go create mode 100644 src/go/Client.go create mode 100644 src/go/Entity.go create mode 100644 src/go/IFSC.go diff --git a/src/go/Bank.go b/src/go/Bank.go new file mode 100644 index 00000000..818efc70 --- /dev/null +++ b/src/go/Bank.go @@ -0,0 +1,1426 @@ +package main + +const ( + AACX = "AACX" + ABBL = "ABBL" + ABCX = "ABCX" + ABDX = "ABDX" + ABEX = "ABEX" + ABHY = "ABHY" + ABNA = "ABNA" + ABPB = "ABPB" + ABSB = "ABSB" + ABUX = "ABUX" + ACAX = "ACAX" + ACBX = "ACBX" + ACCX = "ACCX" + ACKX = "ACKX" + ACOX = "ACOX" + ACUB = "ACUB" + ACUX = "ACUX" + ADBX = "ADBX" + ADCB = "ADCB" + ADCC = "ADCC" + ADCX = "ADCX" + ADDX = "ADDX" + AGCX = "AGCX" + AGDX = "AGDX" + AGRX = "AGRX" + AGSX = "AGSX" + AGUX = "AGUX" + AGVX = "AGVX" + AHMX = "AHMX" + AHUX = "AHUX" + AIRP = "AIRP" + AJAR = "AJAR" + AJHC = "AJHC" + AJKB = "AJKB" + AJMX = "AJMX" + AJNX = "AJNX" + AJPX = "AJPX" + AJSX = "AJSX" + AJUX = "AJUX" + AKJB = "AKJB" + AKMX = "AKMX" + AKOX = "AKOX" + ALAX = "ALAX" + ALIX = "ALIX" + ALLA = "ALLA" + ALLX = "ALLX" + ALWX = "ALWX" + AMAX = "AMAX" + AMBX = "AMBX" + AMCB = "AMCB" + AMCX = "AMCX" + AMDN = "AMDN" + AMMX = "AMMX" + AMNX = "AMNX" + AMRX = "AMRX" + AMSB = "AMSB" + AMSX = "AMSX" + ANBX = "ANBX" + ANDB = "ANDB" + ANDX = "ANDX" + ANMX = "ANMX" + ANSX = "ANSX" + ANUX = "ANUX" + ANZB = "ANZB" + APBL = "APBL" + APCX = "APCX" + APGB = "APGB" + APGV = "APGV" + APGX = "APGX" + APJX = "APJX" + APMC = "APMC" + APMX = "APMX" + APNX = "APNX" + APRX = "APRX" + APSX = "APSX" + ARCX = "ARCX" + ARMX = "ARMX" + ARYX = "ARYX" + ASBL = "ASBL" + ASBX = "ASBX" + ASHX = "ASHX" + ASKX = "ASKX" + ASNX = "ASNX" + ASOX = "ASOX" + ASSX = "ASSX" + AUBL = "AUBL" + AUBX = "AUBX" + AUCB = "AUCB" + AUCX = "AUCX" + AUGX = "AUGX" + AURX = "AURX" + AVDX = "AVDX" + AWCX = "AWCX" + AWUX = "AWUX" + AZAX = "AZAX" + AZPX = "AZPX" + AZSX = "AZSX" + AZUX = "AZUX" + BACB = "BACB" + BACX = "BACX" + BADX = "BADX" + BALX = "BALX" + BANX = "BANX" + BARA = "BARA" + BARB = "BARB" + BARC = "BARC" + BARX = "BARX" + BASX = "BASX" + BAUX = "BAUX" + BAVX = "BAVX" + BBKM = "BBKM" + BBLX = "BBLX" + BBRX = "BBRX" + BBSX = "BBSX" + BBUX = "BBUX" + BBVX = "BBVX" + BCBM = "BCBM" + BCBX = "BCBX" + BCCB = "BCCB" + BCCX = "BCCX" + BCEX = "BCEX" + BCEY = "BCEY" + BCOX = "BCOX" + BCUB = "BCUB" + BCUX = "BCUX" + BDBL = "BDBL" + BDBX = "BDBX" + BDCX = "BDCX" + BDDX = "BDDX" + BDIX = "BDIX" + BDNX = "BDNX" + BDOX = "BDOX" + BDUX = "BDUX" + BEDX = "BEDX" + BELX = "BELX" + BFUX = "BFUX" + BGBX = "BGBX" + BGCX = "BGCX" + BGGX = "BGGX" + BGUX = "BGUX" + BGVX = "BGVX" + BHAX = "BHAX" + BHBX = "BHBX" + BHCX = "BHCX" + BHDX = "BHDX" + BHEX = "BHEX" + BHGX = "BHGX" + BHIX = "BHIX" + BHJX = "BHJX" + BHMX = "BHMX" + BHOX = "BHOX" + BHRX = "BHRX" + BHSX = "BHSX" + BHTX = "BHTX" + BHUX = "BHUX" + BHWX = "BHWX" + BJUX = "BJUX" + BKCX = "BKCX" + BKDN = "BKDN" + BKDX = "BKDX" + BKID = "BKID" + BKSX = "BKSX" + BLGX = "BLGX" + BMBL = "BMBL" + BMCB = "BMCB" + BMCX = "BMCX" + BMPX = "BMPX" + BMSX = "BMSX" + BNBX = "BNBX" + BNCX = "BNCX" + BNPA = "BNPA" + BNSB = "BNSB" + BNSX = "BNSX" + BODX = "BODX" + BOFA = "BOFA" + BORX = "BORX" + BOTM = "BOTM" + BOTX = "BOTX" + BPCX = "BPCX" + BPSX = "BPSX" + BRCX = "BRCX" + BRDX = "BRDX" + BRGX = "BRGX" + BRMX = "BRMX" + BRSX = "BRSX" + BRUX = "BRUX" + BSBX = "BSBX" + BSCX = "BSCX" + BTCX = "BTCX" + BTUX = "BTUX" + BUBX = "BUBX" + BUCL = "BUCL" + BUCX = "BUCX" + BUGX = "BUGX" + BUNX = "BUNX" + BURX = "BURX" + BUSX = "BUSX" + BUZX = "BUZX" + BVNX = "BVNX" + BVSX = "BVSX" + BWCX = "BWCX" + CALX = "CALX" + CBHX = "CBHX" + CBIN = "CBIN" + CCBL = "CCBL" + CCBX = "CCBX" + CCCX = "CCCX" + CCMX = "CCMX" + CCOB = "CCOB" + CCUX = "CCUX" + CDCX = "CDCX" + CEBX = "CEBX" + CGBX = "CGBX" + CGGX = "CGGX" + CHAS = "CHAS" + CHAX = "CHAX" + CHBX = "CHBX" + CHCX = "CHCX" + CHDX = "CHDX" + CHIX = "CHIX" + CHKX = "CHKX" + CHPX = "CHPX" + CHRX = "CHRX" + CHSX = "CHSX" + CHTX = "CHTX" + CIDX = "CIDX" + CITI = "CITI" + CITX = "CITX" + CIUB = "CIUB" + CJAX = "CJAX" + CJMX = "CJMX" + CLBL = "CLBL" + CMCB = "CMCB" + CMCX = "CMCX" + CMDX = "CMDX" + CMLX = "CMLX" + CMPX = "CMPX" + CNRB = "CNRB" + CNSX = "CNSX" + COCX = "COCX" + COLX = "COLX" + COMX = "COMX" + CONX = "CONX" + CORP = "CORP" + COSB = "COSB" + CPDX = "CPDX" + CPSN = "CPSN" + CRBX = "CRBX" + CRES = "CRES" + CRLY = "CRLY" + CRSX = "CRSX" + CRUB = "CRUB" + CSBK = "CSBK" + CSBX = "CSBX" + CTBA = "CTBA" + CTBX = "CTBX" + CTCB = "CTCB" + CTOX = "CTOX" + CTUX = "CTUX" + CUBX = "CUBX" + CUCX = "CUCX" + CURX = "CURX" + CZCX = "CZCX" + CZUX = "CZUX" + DAAX = "DAAX" + DAHX = "DAHX" + DAUX = "DAUX" + DBAX = "DBAX" + DBSS = "DBSS" + DCBL = "DCBL" + DCBX = "DCBX" + DCCX = "DCCX" + DCDX = "DCDX" + DCEX = "DCEX" + DCKX = "DCKX" + DCMX = "DCMX" + DCNX = "DCNX" + DCPX = "DCPX" + DCSX = "DCSX" + DCTX = "DCTX" + DCUX = "DCUX" + DDBX = "DDBX" + DDCX = "DDCX" + DDDX = "DDDX" + DDHX = "DDHX" + DEGX = "DEGX" + DENS = "DENS" + DEOB = "DEOB" + DEOX = "DEOX" + DEUT = "DEUT" + DEUX = "DEUX" + DEVX = "DEVX" + DGBX = "DGBX" + DHBX = "DHBX" + DHKX = "DHKX" + DHUX = "DHUX" + DIBX = "DIBX" + DICG = "DICG" + DICX = "DICX" + DIUX = "DIUX" + DJCX = "DJCX" + DKCL = "DKCL" + DKSX = "DKSX" + DLSC = "DLSC" + DLXB = "DLXB" + DMCB = "DMCB" + DMCX = "DMCX" + DMKB = "DMKB" + DMKJ = "DMKJ" + DNSB = "DNSB" + DNSX = "DNSX" + DOBX = "DOBX" + DOHB = "DOHB" + DRGX = "DRGX" + DSBX = "DSBX" + DSCB = "DSCB" + DSHX = "DSHX" + DSPX = "DSPX" + DSUX = "DSUX" + DTCX = "DTCX" + DTPX = "DTPX" + DUCX = "DUCX" + DUMX = "DUMX" + DUNX = "DUNX" + DURG = "DURG" + DVDX = "DVDX" + DYPX = "DYPX" + EBIL = "EBIL" + ECBL = "ECBL" + EDBX = "EDBX" + EDCX = "EDCX" + EDSX = "EDSX" + EIBI = "EIBI" + ESAF = "ESAF" + ESFB = "ESFB" + ESMF = "ESMF" + ETCX = "ETCX" + ETDX = "ETDX" + EUCX = "EUCX" + EWCX = "EWCX" + FCBX = "FCBX" + FCCX = "FCCX" + FCOX = "FCOX" + FDFX = "FDFX" + FDRL = "FDRL" + FEKX = "FEKX" + FGCB = "FGCB" + FINO = "FINO" + FINF = "FINF" + FINX = "FINX" + FIRN = "FIRN" + FIRX = "FIRX" + FMCX = "FMCX" + FRIX = "FRIX" + FSCX = "FSCX" + FSFB = "FSFB" + FZCX = "FZCX" + FZSX = "FZSX" + GACX = "GACX" + GADX = "GADX" + GANX = "GANX" + GBCB = "GBCB" + GCBX = "GCBX" + GCCX = "GCCX" + GCUL = "GCUL" + GCUX = "GCUX" + GDCB = "GDCB" + GDCX = "GDCX" + GDDX = "GDDX" + GDUX = "GDUX" + GGBK = "GGBK" + GGCX = "GGCX" + GHPX = "GHPX" + GKNX = "GKNX" + GMBX = "GMBX" + GMCX = "GMCX" + GMUX = "GMUX" + GNCX = "GNCX" + GNSX = "GNSX" + GODX = "GODX" + GOSX = "GOSX" + GPCX = "GPCX" + GPOX = "GPOX" + GRAX = "GRAX" + GSBL = "GSBL" + GSBX = "GSBX" + GSCB = "GSCB" + GSCX = "GSCX" + GSSX = "GSSX" + GTCX = "GTCX" + GUBX = "GUBX" + GUCX = "GUCX" + GUNX = "GUNX" + GUOX = "GUOX" + HAMX = "HAMX" + HANX = "HANX" + HARC = "HARC" + HCBL = "HCBL" + HCBX = "HCBX" + HCCX = "HCCX" + HCLX = "HCLX" + HDCX = "HDCX" + HDFC = "HDFC" + HGBX = "HGBX" + HINX = "HINX" + HISX = "HISX" + HMBX = "HMBX" + HMNX = "HMNX" + HOCX = "HOCX" + HOOX = "HOOX" + HPCX = "HPCX" + HPSC = "HPSC" + HPSX = "HPSX" + HSBC = "HSBC" + HSBX = "HSBX" + HSCX = "HSCX" + HSDX = "HSDX" + HSSX = "HSSX" + HUBX = "HUBX" + HUCX = "HUCX" + HUTX = "HUTX" + HVBK = "HVBK" + IBBK = "IBBK" + IBKL = "IBKL" + IBKO = "IBKO" + ICBK = "ICBK" + ICBL = "ICBL" + ICHX = "ICHX" + ICIC = "ICIC" + ICMX = "ICMX" + IDFB = "IDFB" + IDIB = "IDIB" + IDUK = "IDUK" + IDUX = "IDUX" + ILCB = "ILCB" + IMPX = "IMPX" + INCX = "INCX" + INDB = "INDB" + INDX = "INDX" + IOBA = "IOBA" + IPCX = "IPCX" + IPOS = "IPOS" + IPPB = "IPPB" + IPSX = "IPSX" + ISBX = "ISBX" + ISMX = "ISMX" + ITBL = "ITBL" + ITCX = "ITCX" + ITDX = "ITDX" + IUCB = "IUCB" + IUCX = "IUCX" + JACX = "JACX" + JAKA = "JAKA" + JALX = "JALX" + JAMX = "JAMX" + JANA = "JANA" + JANX = "JANX" + JASB = "JASB" + JASX = "JASX" + JAUX = "JAUX" + JBHX = "JBHX" + JBIX = "JBIX" + JBMX = "JBMX" + JCBX = "JCBX" + JCCB = "JCCB" + JCCX = "JCCX" + JCDX = "JCDX" + JCHX = "JCHX" + JCPX = "JCPX" + JCUX = "JCUX" + JDCX = "JDCX" + JDEX = "JDEX" + JGBX = "JGBX" + JGCX = "JGCX" + JGWX = "JGWX" + JHAX = "JHAX" + JHSX = "JHSX" + JHUX = "JHUX" + JIBX = "JIBX" + JICX = "JICX" + JIDX = "JIDX" + JIGX = "JIGX" + JIKX = "JIKX" + JIMX = "JIMX" + JINX = "JINX" + JIOP = "JIOP" + JIOX = "JIOX" + JIRX = "JIRX" + JISX = "JISX" + JIVX = "JIVX" + JJCX = "JJCX" + JJHX = "JJHX" + JJSB = "JJSB" + JKAX = "JKAX" + JKCX = "JKCX" + JKDX = "JKDX" + JKEX = "JKEX" + JKHX = "JKHX" + JKMX = "JKMX" + JKRX = "JKRX" + JKSX = "JKSX" + JLCX = "JLCX" + JLDX = "JLDX" + JLNX = "JLNX" + JLSX = "JLSX" + JLWX = "JLWX" + JMAX = "JMAX" + JMBX = "JMBX" + JMCX = "JMCX" + JMDX = "JMDX" + JMHX = "JMHX" + JMMX = "JMMX" + JMOX = "JMOX" + JMPX = "JMPX" + JMSX = "JMSX" + JMYX = "JMYX" + JNAX = "JNAX" + JNDX = "JNDX" + JNSX = "JNSX" + JODX = "JODX" + JONX = "JONX" + JOWX = "JOWX" + JPAX = "JPAX" + JPCB = "JPCB" + JPCX = "JPCX" + JRAX = "JRAX" + JRKX = "JRKX" + JRNX = "JRNX" + JRSX = "JRSX" + JSAB = "JSAB" + JSAX = "JSAX" + JSBL = "JSBL" + JSBP = "JSBP" + JSBX = "JSBX" + JSCX = "JSCX" + JSDX = "JSDX" + JSEX = "JSEX" + JSFB = "JSFB" + JSHX = "JSHX" + JSKX = "JSKX" + JSMX = "JSMX" + JSOX = "JSOX" + JSRX = "JSRX" + JSTX = "JSTX" + JSVX = "JSVX" + JSWX = "JSWX" + JTIX = "JTIX" + JTSX = "JTSX" + JUCX = "JUCX" + JUSX = "JUSX" + JVCX = "JVCX" + KAAX = "KAAX" + KACE = "KACE" + KACX = "KACX" + KADX = "KADX" + KAGX = "KAGX" + KAIJ = "KAIJ" + KALX = "KALX" + KAMX = "KAMX" + KANG = "KANG" + KANX = "KANX" + KARB = "KARB" + KARX = "KARX" + KASX = "KASX" + KATX = "KATX" + KAYX = "KAYX" + KBCX = "KBCX" + KBNX = "KBNX" + KBSX = "KBSX" + KCBL = "KCBL" + KCBX = "KCBX" + KCCB = "KCCB" + KCCX = "KCCX" + KCDX = "KCDX" + KCEX = "KCEX" + KCOB = "KCOB" + KCUB = "KCUB" + KCUX = "KCUX" + KDBX = "KDBX" + KDCB = "KDCB" + KDCX = "KDCX" + KDIX = "KDIX" + KDNX = "KDNX" + KDUX = "KDUX" + KEMX = "KEMX" + KESX = "KESX" + KGBX = "KGBX" + KGDX = "KGDX" + KGRB = "KGRB" + KGSX = "KGSX" + KHAX = "KHAX" + KHCX = "KHCX" + KHDX = "KHDX" + KHNX = "KHNX" + KHUX = "KHUX" + KICX = "KICX" + KJSB = "KJSB" + KJSX = "KJSX" + KKBK = "KKBK" + KKMX = "KKMX" + KKSX = "KKSX" + KLGB = "KLGB" + KLMX = "KLMX" + KMCB = "KMCB" + KMCX = "KMCX" + KMNX = "KMNX" + KMSX = "KMSX" + KNBX = "KNBX" + KNCX = "KNCX" + KNNX = "KNNX" + KNPX = "KNPX" + KNSB = "KNSB" + KNSX = "KNSX" + KOBX = "KOBX" + KOCX = "KOCX" + KODX = "KODX" + KOEX = "KOEX" + KOLH = "KOLH" + KOSX = "KOSX" + KOTX = "KOTX" + KOYX = "KOYX" + KPCX = "KPCX" + KRCX = "KRCX" + KRDX = "KRDX" + KRIX = "KRIX" + KRMX = "KRMX" + KRNX = "KRNX" + KRTH = "KRTH" + KRTX = "KRTX" + KSBK = "KSBK" + KSBX = "KSBX" + KSCB = "KSCB" + KSCX = "KSCX" + KSMX = "KSMX" + KSNX = "KSNX" + KSTX = "KSTX" + KSUX = "KSUX" + KTBX = "KTBX" + KTCX = "KTCX" + KTDX = "KTDX" + KTTX = "KTTX" + KUBX = "KUBX" + KUCB = "KUCB" + KUCX = "KUCX" + KUKX = "KUKX" + KULX = "KULX" + KUMX = "KUMX" + KUNS = "KUNS" + KURX = "KURX" + KVBL = "KVBL" + KVCX = "KVCX" + KVGB = "KVGB" + KYDX = "KYDX" + LACX = "LACX" + LATX = "LATX" + LAVB = "LAVB" + LBMX = "LBMX" + LCBX = "LCBX" + LCCX = "LCCX" + LDCX = "LDCX" + LDPX = "LDPX" + LDRX = "LDRX" + LECX = "LECX" + LICB = "LICB" + LKBL = "LKBL" + LKCX = "LKCX" + LKHX = "LKHX" + LKMX = "LKMX" + LMNX = "LMNX" + LNSX = "LNSX" + LOKX = "LOKX" + LONX = "LONX" + LUCX = "LUCX" + LULX = "LULX" + MABL = "MABL" + MACX = "MACX" + MADX = "MADX" + MAGX = "MAGX" + MAHB = "MAHB" + MAHG = "MAHG" + MAHX = "MAHX" + MAJX = "MAJX" + MAKX = "MAKX" + MALX = "MALX" + MAMX = "MAMX" + MANX = "MANX" + MAPX = "MAPX" + MASX = "MASX" + MAUX = "MAUX" + MAVX = "MAVX" + MAYX = "MAYX" + MBCX = "MBCX" + MBGX = "MBGX" + MBLX = "MBLX" + MCAX = "MCAX" + MCBL = "MCBL" + MCBX = "MCBX" + MCCX = "MCCX" + MCDX = "MCDX" + MCLX = "MCLX" + MCOX = "MCOX" + MCSX = "MCSX" + MCUX = "MCUX" + MDCB = "MDCB" + MDCX = "MDCX" + MDEX = "MDEX" + MDGX = "MDGX" + MDIX = "MDIX" + MDMX = "MDMX" + MDPX = "MDPX" + MEDX = "MEDX" + MERX = "MERX" + MEUX = "MEUX" + MFCX = "MFCX" + MFUX = "MFUX" + MGBX = "MGBX" + MGCB = "MGCB" + MGCX = "MGCX" + MGDX = "MGDX" + MGRB = "MGRB" + MGSX = "MGSX" + MGUX = "MGUX" + MHCB = "MHCB" + MHCX = "MHCX" + MHEX = "MHEX" + MHLX = "MHLX" + MHMX = "MHMX" + MHNX = "MHNX" + MHSX = "MHSX" + MHUX = "MHUX" + MIZX = "MIZX" + MJCX = "MJCX" + MKPB = "MKPB" + MKUX = "MKUX" + MKYX = "MKYX" + MLDX = "MLDX" + MMCX = "MMCX" + MMMX = "MMMX" + MNBX = "MNBX" + MNCX = "MNCX" + MNSX = "MNSX" + MOGX = "MOGX" + MOUX = "MOUX" + MPCX = "MPCX" + MPDX = "MPDX" + MPRX = "MPRX" + MRBX = "MRBX" + MRTX = "MRTX" + MSAX = "MSAX" + MSBL = "MSBL" + MSBX = "MSBX" + MSCI = "MSCI" + MSCX = "MSCX" + MSHQ = "MSHQ" + MSLM = "MSLM" + MSNU = "MSNU" + MSNX = "MSNX" + MSOX = "MSOX" + MSSX = "MSSX" + MUBL = "MUBL" + MUBX = "MUBX" + MUCX = "MUCX" + MUDX = "MUDX" + MUNX = "MUNX" + MUPX = "MUPX" + MURX = "MURX" + MUSX = "MUSX" + MVCB = "MVCB" + MVCX = "MVCX" + MVIX = "MVIX" + MYAX = "MYAX" + MYSX = "MYSX" + MZCX = "MZCX" + MZRX = "MZRX" + NABX = "NABX" + NACX = "NACX" + NAGX = "NAGX" + NAIX = "NAIX" + NALX = "NALX" + NANX = "NANX" + NASX = "NASX" + NATA = "NATA" + NAUX = "NAUX" + NAVX = "NAVX" + NAWX = "NAWX" + NBAD = "NBAD" + NBBX = "NBBX" + NBCX = "NBCX" + NBMX = "NBMX" + NBRD = "NBRD" + NCBL = "NCBL" + NCBX = "NCBX" + NCCX = "NCCX" + NCOX = "NCOX" + NCUB = "NCUB" + NCUX = "NCUX" + NDCB = "NDCB" + NDCX = "NDCX" + NDDX = "NDDX" + NDGX = "NDGX" + NDIX = "NDIX" + NESF = "NESF" + NEYX = "NEYX" + NGBX = "NGBX" + NGKX = "NGKX" + NGNX = "NGNX" + NGRX = "NGRX" + NGSB = "NGSB" + NGSX = "NGSX" + NICB = "NICB" + NIDX = "NIDX" + NILX = "NILX" + NIRX = "NIRX" + NIUX = "NIUX" + NJBK = "NJBK" + NJCX = "NJCX" + NJGX = "NJGX" + NJMX = "NJMX" + NJSX = "NJSX" + NKGS = "NKGS" + NLGX = "NLGX" + NLUX = "NLUX" + NMCB = "NMCB" + NMCX = "NMCX" + NMGB = "NMGB" + NNCX = "NNCX" + NNSB = "NNSB" + NNSX = "NNSX" + NOBX = "NOBX" + NOIX = "NOIX" + NOSC = "NOSC" + NPCX = "NPCX" + NPKX = "NPKX" + NRDX = "NRDX" + NSBB = "NSBB" + NSBX = "NSBX" + NSCX = "NSCX" + NSGX = "NSGX" + NSIX = "NSIX" + NSJX = "NSJX" + NSMX = "NSMX" + NSPB = "NSPB" + NSPX = "NSPX" + NSRX = "NSRX" + NTBL = "NTBL" + NUBX = "NUBX" + NUCB = "NUCB" + NUCX = "NUCX" + NVCX = "NVCX" + NVNM = "NVNM" + NVSX = "NVSX" + NWCX = "NWCX" + ODCX = "ODCX" + ODGB = "ODGB" + OIBA = "OIBA" + OMCX = "OMCX" + ONSX = "ONSX" + ORBC = "ORBC" + ORCB = "ORCB" + OSMX = "OSMX" + PABX = "PABX" + PACX = "PACX" + PADX = "PADX" + PALX = "PALX" + PANX = "PANX" + PARX = "PARX" + PASX = "PASX" + PATX = "PATX" + PAYX = "PAYX" + PBGX = "PBGX" + PCBL = "PCBL" + PCBX = "PCBX" + PCCB = "PCCB" + PCCX = "PCCX" + PCLX = "PCLX" + PCMX = "PCMX" + PCOX = "PCOX" + PCPX = "PCPX" + PCSX = "PCSX" + PCTX = "PCTX" + PCUX = "PCUX" + PDBX = "PDBX" + PDCX = "PDCX" + PDNX = "PDNX" + PDSX = "PDSX" + PDUX = "PDUX" + PGBX = "PGBX" + PGCX = "PGCX" + PGRX = "PGRX" + PGTX = "PGTX" + PITX = "PITX" + PJSB = "PJSB" + PKBX = "PKBX" + PKDX = "PKDX" + PKGB = "PKGB" + PLOX = "PLOX" + PLUX = "PLUX" + PMCB = "PMCB" + PMCX = "PMCX" + PMEC = "PMEC" + PMNX = "PMNX" + PNCX = "PNCX" + PNMX = "PNMX" + PNPX = "PNPX" + PNSX = "PNSX" + PPBX = "PPBX" + PPCX = "PPCX" + PRCX = "PRCX" + PREX = "PREX" + PROX = "PROX" + PRPX = "PRPX" + PRSX = "PRSX" + PRTH = "PRTH" + PSBX = "PSBX" + PSCX = "PSCX" + PSIB = "PSIB" + PSRX = "PSRX" + PSSX = "PSSX" + PTCX = "PTCX" + PTNX = "PTNX" + PTSX = "PTSX" + PUBX = "PUBX" + PUCB = "PUCB" + PUCX = "PUCX" + PUDX = "PUDX" + PUGX = "PUGX" + PUNB = "PUNB" + PUNX = "PUNX" + PURX = "PURX" + PUSD = "PUSD" + PUSX = "PUSX" + PUUX = "PUUX" + PVAX = "PVAX" + PVCX = "PVCX" + PVVX = "PVVX" + PWUX = "PWUX" + PYCX = "PYCX" + PYTM = "PYTM" + QNBA = "QNBA" + QUCX = "QUCX" + RABO = "RABO" + RACX = "RACX" + RAEX = "RAEX" + RAJX = "RAJX" + RAKX = "RAKX" + RAMX = "RAMX" + RANX = "RANX" + RATN = "RATN" + RAUX = "RAUX" + RBBX = "RBBX" + RBCX = "RBCX" + RBIS = "RBIS" + RBIH = "RBIH" + RCBX = "RCBX" + RCCX = "RCCX" + RCDX = "RCDX" + RCMX = "RCMX" + RCUX = "RCUX" + RDCX = "RDCX" + RDNX = "RDNX" + REBX = "REBX" + RECX = "RECX" + REWX = "REWX" + RGCX = "RGCX" + RGSX = "RGSX" + RHMX = "RHMX" + RJCX = "RJCX" + RJJX = "RJJX" + RJNX = "RJNX" + RJTX = "RJTX" + RKCX = "RKCX" + RLUX = "RLUX" + RMGB = "RMGB" + RNBX = "RNBX" + RNDX = "RNDX" + RNGX = "RNGX" + RNSB = "RNSB" + RNSX = "RNSX" + ROCX = "ROCX" + ROHX = "ROHX" + RPUX = "RPUX" + RRBP = "RRBP" + RRSX = "RRSX" + RSBL = "RSBL" + RSBX = "RSBX" + RSCB = "RSCB" + RSSX = "RSSX" + RSUX = "RSUX" + RSVX = "RSVX" + RUCX = "RUCX" + RUKX = "RUKX" + RUMX = "RUMX" + RZSX = "RZSX" + SABR = "SABR" + SABX = "SABX" + SACB = "SACB" + SACX = "SACX" + SADX = "SADX" + SAGX = "SAGX" + SAHE = "SAHE" + SAHX = "SAHX" + SAIX = "SAIX" + SALX = "SALX" + SAMX = "SAMX" + SANT = "SANT" + SANX = "SANX" + SAPX = "SAPX" + SARX = "SARX" + SASA = "SASA" + SASX = "SASX" + SATX = "SATX" + SAUX = "SAUX" + SAVX = "SAVX" + SAWX = "SAWX" + SBBJ = "SBBJ" + SBCX = "SBCX" + SBHY = "SBHY" + SBIN = "SBIN" + SBKX = "SBKX" + SBLD = "SBLD" + SBLS = "SBLS" + SBLX = "SBLX" + SBMX = "SBMX" + SBMY = "SBMY" + SBNX = "SBNX" + SBPX = "SBPX" + SBSX = "SBSX" + SBTR = "SBTR" + SBUJ = "SBUJ" + SBUX = "SBUX" + SCBL = "SCBL" + SCBX = "SCBX" + SCCX = "SCCX" + SCDX = "SCDX" + SCIX = "SCIX" + SCNX = "SCNX" + SCOB = "SCOB" + SCOX = "SCOX" + SCPX = "SCPX" + SCSX = "SCSX" + SCUX = "SCUX" + SDBX = "SDBX" + SDCB = "SDCB" + SDCE = "SDCE" + SDCX = "SDCX" + SDHX = "SDHX" + SDSX = "SDSX" + SDTX = "SDTX" + SDUX = "SDUX" + SEMX = "SEMX" + SENX = "SENX" + SEUX = "SEUX" + SEWX = "SEWX" + SGCX = "SGCX" + SGLX = "SGLX" + SGSX = "SGSX" + SGUX = "SGUX" + SHAX = "SHAX" + SHBK = "SHBK" + SHBX = "SHBX" + SHCX = "SHCX" + SHEX = "SHEX" + SHGX = "SHGX" + SHIX = "SHIX" + SHKX = "SHKX" + SHMX = "SHMX" + SHNX = "SHNX" + SHOX = "SHOX" + SHRX = "SHRX" + SHSX = "SHSX" + SHUX = "SHUX" + SIBL = "SIBL" + SIBX = "SIBX" + SICX = "SICX" + SIDB = "SIDB" + SIDC = "SIDC" + SIDX = "SIDX" + SIGX = "SIGX" + SIHX = "SIHX" + SIKX = "SIKX" + SINX = "SINX" + SIRX = "SIRX" + SISX = "SISX" + SITX = "SITX" + SIWX = "SIWX" + SJGX = "SJGX" + SJSB = "SJSB" + SJSX = "SJSX" + SKCX = "SKCX" + SKKX = "SKKX" + SKNX = "SKNX" + SKSB = "SKSB" + SKUX = "SKUX" + SLAX = "SLAX" + SLCX = "SLCX" + SMBC = "SMBC" + SMBX = "SMBX" + SMCB = "SMCB" + SMCX = "SMCX" + SMEX = "SMEX" + SMMX = "SMMX" + SMNX = "SMNX" + SMPX = "SMPX" + SMSX = "SMSX" + SMTX = "SMTX" + SMUX = "SMUX" + SMVC = "SMVC" + SMWX = "SMWX" + SNAX = "SNAX" + SNBK = "SNBK" + SNBX = "SNBX" + SNCX = "SNCX" + SNDX = "SNDX" + SNGX = "SNGX" + SNKX = "SNKX" + SNLX = "SNLX" + SNPX = "SNPX" + SNSV = "SNSV" + SNSX = "SNSX" + SOBX = "SOBX" + SOGE = "SOGE" + SOLX = "SOLX" + SONX = "SONX" + SPBX = "SPBX" + SPCB = "SPCB" + SPCX = "SPCX" + SPNX = "SPNX" + SPSX = "SPSX" + SPTX = "SPTX" + SRCB = "SRCB" + SRCX = "SRCX" + SREX = "SREX" + SRGX = "SRGX" + SRHX = "SRHX" + SRSX = "SRSX" + SSBL = "SSBL" + SSBX = "SSBX" + SSDX = "SSDX" + SSHX = "SSHX" + SSKX = "SSKX" + SSLX = "SSLX" + SSNX = "SSNX" + SSOX = "SSOX" + SSSX = "SSSX" + SSWX = "SSWX" + STBP = "STBP" + STCB = "STCB" + STCX = "STCX" + STDX = "STDX" + STRX = "STRX" + SUBX = "SUBX" + SUCX = "SUCX" + SUDX = "SUDX" + SULX = "SULX" + SUMX = "SUMX" + SUNB = "SUNB" + SURX = "SURX" + SURY = "SURY" + SUSX = "SUSX" + SUTB = "SUTB" + SUVX = "SUVX" + SVAX = "SVAX" + SVBL = "SVBL" + SVCB = "SVCB" + SVCX = "SVCX" + SVGX = "SVGX" + SVNX = "SVNX" + SVOX = "SVOX" + SVRX = "SVRX" + SVSH = "SVSH" + SVSX = "SVSX" + SWMX = "SWMX" + SWSX = "SWSX" + SYNB = "SYNB" + TACX = "TACX" + TADX = "TADX" + TAMX = "TAMX" + TAPX = "TAPX" + TASX = "TASX" + TBCX = "TBCX" + TBDX = "TBDX" + TBHX = "TBHX" + TBMX = "TBMX" + TBPX = "TBPX" + TBSB = "TBSB" + TBSX = "TBSX" + TBTX = "TBTX" + TBUX = "TBUX" + TCBX = "TCBX" + TCCX = "TCCX" + TCHX = "TCHX" + TCPX = "TCPX" + TCUB = "TCUB" + TCUX = "TCUX" + TDBX = "TDBX" + TDCB = "TDCB" + TDCX = "TDCX" + TDIX = "TDIX" + TDMX = "TDMX" + TDPX = "TDPX" + TDSX = "TDSX" + TECX = "TECX" + TEHX = "TEHX" + TEMX = "TEMX" + TESX = "TESX" + TETX = "TETX" + TFCX = "TFCX" + TGBX = "TGBX" + TGCG = "TGCG" + TGCX = "TGCX" + TGDX = "TGDX" + TGMB = "TGMB" + TGNX = "TGNX" + TGUX = "TGUX" + THCX = "THCX" + THOX = "THOX" + THRS = "THRS" + THRX = "THRX" + THWX = "THWX" + TIDX = "TIDX" + TIRX = "TIRX" + TJAX = "TJAX" + TJBX = "TJBX" + TJCX = "TJCX" + TJDX = "TJDX" + TJMX = "TJMX" + TJNX = "TJNX" + TJSB = "TJSB" + TKAX = "TKAX" + TKCX = "TKCX" + TKDX = "TKDX" + TKTX = "TKTX" + TKUX = "TKUX" + TLPX = "TLPX" + TMAX = "TMAX" + TMBL = "TMBL" + TMBX = "TMBX" + TMCX = "TMCX" + TMNX = "TMNX" + TMPX = "TMPX" + TMSC = "TMSC" + TMSX = "TMSX" + TMTX = "TMTX" + TMUX = "TMUX" + TNBX = "TNBX" + TNCX = "TNCX" + TNDC = "TNDC" + TNEX = "TNEX" + TNHX = "TNHX" + TNIX = "TNIX" + TNKX = "TNKX" + TNMX = "TNMX" + TNSC = "TNSC" + TNUX = "TNUX" + TOCX = "TOCX" + TPCX = "TPCX" + TPDX = "TPDX" + TPSX = "TPSX" + TPUX = "TPUX" + TRAX = "TRAX" + TRDX = "TRDX" + TSAB = "TSAB" + TSAX = "TSAX" + TSBX = "TSBX" + TSCX = "TSCX" + TSDX = "TSDX" + TSIX = "TSIX" + TSMX = "TSMX" + TSNX = "TSNX" + TSPX = "TSPX" + TSSB = "TSSB" + TSSX = "TSSX" + TSUX = "TSUX" + TTBX = "TTBX" + TTCB = "TTCB" + TTCX = "TTCX" + TTGX = "TTGX" + TTLX = "TTLX" + TTUX = "TTUX" + TUBX = "TUBX" + TUCL = "TUCL" + TUCX = "TUCX" + TUDX = "TUDX" + TUMX = "TUMX" + TUNX = "TUNX" + TUOX = "TUOX" + TUPX = "TUPX" + TURX = "TURX" + TVBX = "TVBX" + TVDX = "TVDX" + TVPX = "TVPX" + TVUX = "TVUX" + TYCX = "TYCX" + UBBX = "UBBX" + UBGX = "UBGX" + UBIN = "UBIN" + UCBA = "UCBA" + UCBS = "UCBS" + UCBX = "UCBX" + UCCX = "UCCX" + UCDX = "UCDX" + UCUX = "UCUX" + UGBX = "UGBX" + UICX = "UICX" + UJSX = "UJSX" + UJVN = "UJVN" + UKGX = "UKGX" + UMAX = "UMAX" + UMCX = "UMCX" + UMSX = "UMSX" + UMUX = "UMUX" + UNAX = "UNAX" + UNIX = "UNIX" + UNMX = "UNMX" + UNSX = "UNSX" + UOVB = "UOVB" + UPCB = "UPCB" + UPCX = "UPCX" + URBN = "URBN" + URCX = "URCX" + URDX = "URDX" + URMX = "URMX" + UROX = "UROX" + USFB = "USFB" + USNX = "USNX" + UTBI = "UTBI" + UTBX = "UTBX" + UTCX = "UTCX" + UTGX = "UTGX" + UTIB = "UTIB" + UTKS = "UTKS" + UTKX = "UTKX" + UTZX = "UTZX" + UUCX = "UUCX" + VADX = "VADX" + VAIX = "VAIX" + VANX = "VANX" + VARA = "VARA" + VASJ = "VASJ" + VASX = "VASX" + VAUX = "VAUX" + VCAX = "VCAX" + VCBX = "VCBX" + VCCX = "VCCX" + VCNB = "VCNB" + VCOB = "VCOB" + VCOX = "VCOX" + VDCX = "VDCX" + VDYX = "VDYX" + VEDX = "VEDX" + VERX = "VERX" + VGBX = "VGBX" + VHDX = "VHDX" + VICX = "VICX" + VIDX = "VIDX" + VIJB = "VIJB" + VIJX = "VIJX" + VIKX = "VIKX" + VIMX = "VIMX" + VIRX = "VIRX" + VISX = "VISX" + VJSX = "VJSX" + VKCX = "VKCX" + VKSX = "VKSX" + VMCX = "VMCX" + VMMX = "VMMX" + VMUX = "VMUX" + VNSX = "VNSX" + VRDX = "VRDX" + VSBL = "VSBL" + VSBX = "VSBX" + VSCX = "VSCX" + VSSX = "VSSX" + VSVX = "VSVX" + VUCX = "VUCX" + VVCX = "VVCX" + VVSB = "VVSB" + VYAX = "VYAX" + VYPX = "VYPX" + VYSA = "VYSA" + WACX = "WACX" + WAIX = "WAIX" + WARX = "WARX" + WAUX = "WAUX" + WBSC = "WBSC" + WCBX = "WCBX" + WDCX = "WDCX" + WKGX = "WKGX" + WNBX = "WNBX" + WPAC = "WPAC" + WRCX = "WRCX" + WUCX = "WUCX" + WZUX = "WZUX" + XJKG = "XJKG" + YADX = "YADX" + YAVX = "YAVX" + YCBX = "YCBX" + YDCX = "YDCX" + YESB = "YESB" + YLNX = "YLNX" + YMSX = "YMSX" + YNCX = "YNCX" + YNSX = "YNSX" + ZBBX = "ZBBX" + ZBSX = "ZBSX" + ZCBL = "ZCBL" + ZIBX = "ZIBX" + ZILX = "ZILX" + ZIMX = "ZIMX" + ZISX = "ZISX" + ZLLX = "ZLLX" + ZRNB = "ZRNB" + ZMMX = "ZMMX" + ZSAX = "ZSAX" + ZSBL = "ZSBL" + ZSBX = "ZSBX" + ZSGX = "ZSGX" + ZSHX = "ZSHX" + ZSJX = "ZSJX" + ZSKX = "ZSKX" + ZSLX = "ZSLX" + ZSMX = "ZSMX" +) diff --git a/src/go/Client.go b/src/go/Client.go new file mode 100644 index 00000000..06ab7d0f --- /dev/null +++ b/src/go/Client.go @@ -0,0 +1 @@ +package main diff --git a/src/go/Entity.go b/src/go/Entity.go new file mode 100644 index 00000000..06ab7d0f --- /dev/null +++ b/src/go/Entity.go @@ -0,0 +1 @@ +package main diff --git a/src/go/IFSC.go b/src/go/IFSC.go new file mode 100644 index 00000000..21b34114 --- /dev/null +++ b/src/go/IFSC.go @@ -0,0 +1,66 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "strconv" +) + +var ifsc map[string][]Data +var bankNames map[string]string +var sublet map[string]string +var customSublets map[string]string + +type Data struct { + Value string +} + +func (d Data) MarshalJSON() ([]byte, error) { + return json.Marshal(d.Value) +} + +func (d *Data) UnmarshalJSON(input []byte) error { + var value int + if err := json.Unmarshal(input, &value); err != nil { + var value string + if err := json.Unmarshal(input, &value); err != nil { + return err + } + d.Value = value + } + d.Value = strconv.Itoa(value) + return nil +} + +func main() { + if err := loadFile("../IFSC.json", &ifsc); err != nil { + fmt.Println("there is some error in IFSC.json file: ", err) + } + if err := loadFile("../sublet.json", &sublet); err != nil { + fmt.Println("there is some error in sublet.json file: ", err) + } + if err := loadFile("../custom-sublets.json", &customSublets); err != nil { + fmt.Println("there is some error in custom-sublets.json file: ", err) + } + if err := loadFile("../banknames.json", &bankNames); err != nil { + fmt.Println("there is some error in banknames.json file: ", err) + } +} + +func loadFile(fileName string, result interface{}) error { + basePath, err := os.Getwd() + if err != nil { + return err + } + completePath := fmt.Sprintf("%s/%s", basePath, fileName) + bytes, err := ioutil.ReadFile(completePath) + if err != nil { + return err + } + if err := json.Unmarshal(bytes, &result); err != nil { + return err + } + return nil +} From 4fbee511311c6b625cd95e1f77a92bbdd4bee216 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Sun, 14 Jun 2020 02:09:43 +0530 Subject: [PATCH 02/24] add bank,client &ifsc go files. --- src/go/Bank.go | 2886 +++++++++++++++++++++++----------------------- src/go/Client.go | 64 +- src/go/Entity.go | 1 - src/go/IFSC.go | 49 +- src/go/Makefile | 3 + src/go/go.mod | 3 + src/go/go.sum | 11 + 7 files changed, 1579 insertions(+), 1438 deletions(-) delete mode 100644 src/go/Entity.go create mode 100644 src/go/Makefile create mode 100644 src/go/go.mod create mode 100644 src/go/go.sum diff --git a/src/go/Bank.go b/src/go/Bank.go index 818efc70..f1641cc5 100644 --- a/src/go/Bank.go +++ b/src/go/Bank.go @@ -1,1426 +1,1464 @@ -package main +package ifsc -const ( - AACX = "AACX" - ABBL = "ABBL" - ABCX = "ABCX" - ABDX = "ABDX" - ABEX = "ABEX" - ABHY = "ABHY" - ABNA = "ABNA" - ABPB = "ABPB" - ABSB = "ABSB" - ABUX = "ABUX" - ACAX = "ACAX" - ACBX = "ACBX" - ACCX = "ACCX" - ACKX = "ACKX" - ACOX = "ACOX" - ACUB = "ACUB" - ACUX = "ACUX" - ADBX = "ADBX" - ADCB = "ADCB" - ADCC = "ADCC" - ADCX = "ADCX" - ADDX = "ADDX" - AGCX = "AGCX" - AGDX = "AGDX" - AGRX = "AGRX" - AGSX = "AGSX" - AGUX = "AGUX" - AGVX = "AGVX" - AHMX = "AHMX" - AHUX = "AHUX" - AIRP = "AIRP" - AJAR = "AJAR" - AJHC = "AJHC" - AJKB = "AJKB" - AJMX = "AJMX" - AJNX = "AJNX" - AJPX = "AJPX" - AJSX = "AJSX" - AJUX = "AJUX" - AKJB = "AKJB" - AKMX = "AKMX" - AKOX = "AKOX" - ALAX = "ALAX" - ALIX = "ALIX" - ALLA = "ALLA" - ALLX = "ALLX" - ALWX = "ALWX" - AMAX = "AMAX" - AMBX = "AMBX" - AMCB = "AMCB" - AMCX = "AMCX" - AMDN = "AMDN" - AMMX = "AMMX" - AMNX = "AMNX" - AMRX = "AMRX" - AMSB = "AMSB" - AMSX = "AMSX" - ANBX = "ANBX" - ANDB = "ANDB" - ANDX = "ANDX" - ANMX = "ANMX" - ANSX = "ANSX" - ANUX = "ANUX" - ANZB = "ANZB" - APBL = "APBL" - APCX = "APCX" - APGB = "APGB" - APGV = "APGV" - APGX = "APGX" - APJX = "APJX" - APMC = "APMC" - APMX = "APMX" - APNX = "APNX" - APRX = "APRX" - APSX = "APSX" - ARCX = "ARCX" - ARMX = "ARMX" - ARYX = "ARYX" - ASBL = "ASBL" - ASBX = "ASBX" - ASHX = "ASHX" - ASKX = "ASKX" - ASNX = "ASNX" - ASOX = "ASOX" - ASSX = "ASSX" - AUBL = "AUBL" - AUBX = "AUBX" - AUCB = "AUCB" - AUCX = "AUCX" - AUGX = "AUGX" - AURX = "AURX" - AVDX = "AVDX" - AWCX = "AWCX" - AWUX = "AWUX" - AZAX = "AZAX" - AZPX = "AZPX" - AZSX = "AZSX" - AZUX = "AZUX" - BACB = "BACB" - BACX = "BACX" - BADX = "BADX" - BALX = "BALX" - BANX = "BANX" - BARA = "BARA" - BARB = "BARB" - BARC = "BARC" - BARX = "BARX" - BASX = "BASX" - BAUX = "BAUX" - BAVX = "BAVX" - BBKM = "BBKM" - BBLX = "BBLX" - BBRX = "BBRX" - BBSX = "BBSX" - BBUX = "BBUX" - BBVX = "BBVX" - BCBM = "BCBM" - BCBX = "BCBX" - BCCB = "BCCB" - BCCX = "BCCX" - BCEX = "BCEX" - BCEY = "BCEY" - BCOX = "BCOX" - BCUB = "BCUB" - BCUX = "BCUX" - BDBL = "BDBL" - BDBX = "BDBX" - BDCX = "BDCX" - BDDX = "BDDX" - BDIX = "BDIX" - BDNX = "BDNX" - BDOX = "BDOX" - BDUX = "BDUX" - BEDX = "BEDX" - BELX = "BELX" - BFUX = "BFUX" - BGBX = "BGBX" - BGCX = "BGCX" - BGGX = "BGGX" - BGUX = "BGUX" - BGVX = "BGVX" - BHAX = "BHAX" - BHBX = "BHBX" - BHCX = "BHCX" - BHDX = "BHDX" - BHEX = "BHEX" - BHGX = "BHGX" - BHIX = "BHIX" - BHJX = "BHJX" - BHMX = "BHMX" - BHOX = "BHOX" - BHRX = "BHRX" - BHSX = "BHSX" - BHTX = "BHTX" - BHUX = "BHUX" - BHWX = "BHWX" - BJUX = "BJUX" - BKCX = "BKCX" - BKDN = "BKDN" - BKDX = "BKDX" - BKID = "BKID" - BKSX = "BKSX" - BLGX = "BLGX" - BMBL = "BMBL" - BMCB = "BMCB" - BMCX = "BMCX" - BMPX = "BMPX" - BMSX = "BMSX" - BNBX = "BNBX" - BNCX = "BNCX" - BNPA = "BNPA" - BNSB = "BNSB" - BNSX = "BNSX" - BODX = "BODX" - BOFA = "BOFA" - BORX = "BORX" - BOTM = "BOTM" - BOTX = "BOTX" - BPCX = "BPCX" - BPSX = "BPSX" - BRCX = "BRCX" - BRDX = "BRDX" - BRGX = "BRGX" - BRMX = "BRMX" - BRSX = "BRSX" - BRUX = "BRUX" - BSBX = "BSBX" - BSCX = "BSCX" - BTCX = "BTCX" - BTUX = "BTUX" - BUBX = "BUBX" - BUCL = "BUCL" - BUCX = "BUCX" - BUGX = "BUGX" - BUNX = "BUNX" - BURX = "BURX" - BUSX = "BUSX" - BUZX = "BUZX" - BVNX = "BVNX" - BVSX = "BVSX" - BWCX = "BWCX" - CALX = "CALX" - CBHX = "CBHX" - CBIN = "CBIN" - CCBL = "CCBL" - CCBX = "CCBX" - CCCX = "CCCX" - CCMX = "CCMX" - CCOB = "CCOB" - CCUX = "CCUX" - CDCX = "CDCX" - CEBX = "CEBX" - CGBX = "CGBX" - CGGX = "CGGX" - CHAS = "CHAS" - CHAX = "CHAX" - CHBX = "CHBX" - CHCX = "CHCX" - CHDX = "CHDX" - CHIX = "CHIX" - CHKX = "CHKX" - CHPX = "CHPX" - CHRX = "CHRX" - CHSX = "CHSX" - CHTX = "CHTX" - CIDX = "CIDX" - CITI = "CITI" - CITX = "CITX" - CIUB = "CIUB" - CJAX = "CJAX" - CJMX = "CJMX" - CLBL = "CLBL" - CMCB = "CMCB" - CMCX = "CMCX" - CMDX = "CMDX" - CMLX = "CMLX" - CMPX = "CMPX" - CNRB = "CNRB" - CNSX = "CNSX" - COCX = "COCX" - COLX = "COLX" - COMX = "COMX" - CONX = "CONX" - CORP = "CORP" - COSB = "COSB" - CPDX = "CPDX" - CPSN = "CPSN" - CRBX = "CRBX" - CRES = "CRES" - CRLY = "CRLY" - CRSX = "CRSX" - CRUB = "CRUB" - CSBK = "CSBK" - CSBX = "CSBX" - CTBA = "CTBA" - CTBX = "CTBX" - CTCB = "CTCB" - CTOX = "CTOX" - CTUX = "CTUX" - CUBX = "CUBX" - CUCX = "CUCX" - CURX = "CURX" - CZCX = "CZCX" - CZUX = "CZUX" - DAAX = "DAAX" - DAHX = "DAHX" - DAUX = "DAUX" - DBAX = "DBAX" - DBSS = "DBSS" - DCBL = "DCBL" - DCBX = "DCBX" - DCCX = "DCCX" - DCDX = "DCDX" - DCEX = "DCEX" - DCKX = "DCKX" - DCMX = "DCMX" - DCNX = "DCNX" - DCPX = "DCPX" - DCSX = "DCSX" - DCTX = "DCTX" - DCUX = "DCUX" - DDBX = "DDBX" - DDCX = "DDCX" - DDDX = "DDDX" - DDHX = "DDHX" - DEGX = "DEGX" - DENS = "DENS" - DEOB = "DEOB" - DEOX = "DEOX" - DEUT = "DEUT" - DEUX = "DEUX" - DEVX = "DEVX" - DGBX = "DGBX" - DHBX = "DHBX" - DHKX = "DHKX" - DHUX = "DHUX" - DIBX = "DIBX" - DICG = "DICG" - DICX = "DICX" - DIUX = "DIUX" - DJCX = "DJCX" - DKCL = "DKCL" - DKSX = "DKSX" - DLSC = "DLSC" - DLXB = "DLXB" - DMCB = "DMCB" - DMCX = "DMCX" - DMKB = "DMKB" - DMKJ = "DMKJ" - DNSB = "DNSB" - DNSX = "DNSX" - DOBX = "DOBX" - DOHB = "DOHB" - DRGX = "DRGX" - DSBX = "DSBX" - DSCB = "DSCB" - DSHX = "DSHX" - DSPX = "DSPX" - DSUX = "DSUX" - DTCX = "DTCX" - DTPX = "DTPX" - DUCX = "DUCX" - DUMX = "DUMX" - DUNX = "DUNX" - DURG = "DURG" - DVDX = "DVDX" - DYPX = "DYPX" - EBIL = "EBIL" - ECBL = "ECBL" - EDBX = "EDBX" - EDCX = "EDCX" - EDSX = "EDSX" - EIBI = "EIBI" - ESAF = "ESAF" - ESFB = "ESFB" - ESMF = "ESMF" - ETCX = "ETCX" - ETDX = "ETDX" - EUCX = "EUCX" - EWCX = "EWCX" - FCBX = "FCBX" - FCCX = "FCCX" - FCOX = "FCOX" - FDFX = "FDFX" - FDRL = "FDRL" - FEKX = "FEKX" - FGCB = "FGCB" - FINO = "FINO" - FINF = "FINF" - FINX = "FINX" - FIRN = "FIRN" - FIRX = "FIRX" - FMCX = "FMCX" - FRIX = "FRIX" - FSCX = "FSCX" - FSFB = "FSFB" - FZCX = "FZCX" - FZSX = "FZSX" - GACX = "GACX" - GADX = "GADX" - GANX = "GANX" - GBCB = "GBCB" - GCBX = "GCBX" - GCCX = "GCCX" - GCUL = "GCUL" - GCUX = "GCUX" - GDCB = "GDCB" - GDCX = "GDCX" - GDDX = "GDDX" - GDUX = "GDUX" - GGBK = "GGBK" - GGCX = "GGCX" - GHPX = "GHPX" - GKNX = "GKNX" - GMBX = "GMBX" - GMCX = "GMCX" - GMUX = "GMUX" - GNCX = "GNCX" - GNSX = "GNSX" - GODX = "GODX" - GOSX = "GOSX" - GPCX = "GPCX" - GPOX = "GPOX" - GRAX = "GRAX" - GSBL = "GSBL" - GSBX = "GSBX" - GSCB = "GSCB" - GSCX = "GSCX" - GSSX = "GSSX" - GTCX = "GTCX" - GUBX = "GUBX" - GUCX = "GUCX" - GUNX = "GUNX" - GUOX = "GUOX" - HAMX = "HAMX" - HANX = "HANX" - HARC = "HARC" - HCBL = "HCBL" - HCBX = "HCBX" - HCCX = "HCCX" - HCLX = "HCLX" - HDCX = "HDCX" - HDFC = "HDFC" - HGBX = "HGBX" - HINX = "HINX" - HISX = "HISX" - HMBX = "HMBX" - HMNX = "HMNX" - HOCX = "HOCX" - HOOX = "HOOX" - HPCX = "HPCX" - HPSC = "HPSC" - HPSX = "HPSX" - HSBC = "HSBC" - HSBX = "HSBX" - HSCX = "HSCX" - HSDX = "HSDX" - HSSX = "HSSX" - HUBX = "HUBX" - HUCX = "HUCX" - HUTX = "HUTX" - HVBK = "HVBK" - IBBK = "IBBK" - IBKL = "IBKL" - IBKO = "IBKO" - ICBK = "ICBK" - ICBL = "ICBL" - ICHX = "ICHX" - ICIC = "ICIC" - ICMX = "ICMX" - IDFB = "IDFB" - IDIB = "IDIB" - IDUK = "IDUK" - IDUX = "IDUX" - ILCB = "ILCB" - IMPX = "IMPX" - INCX = "INCX" - INDB = "INDB" - INDX = "INDX" - IOBA = "IOBA" - IPCX = "IPCX" - IPOS = "IPOS" - IPPB = "IPPB" - IPSX = "IPSX" - ISBX = "ISBX" - ISMX = "ISMX" - ITBL = "ITBL" - ITCX = "ITCX" - ITDX = "ITDX" - IUCB = "IUCB" - IUCX = "IUCX" - JACX = "JACX" - JAKA = "JAKA" - JALX = "JALX" - JAMX = "JAMX" - JANA = "JANA" - JANX = "JANX" - JASB = "JASB" - JASX = "JASX" - JAUX = "JAUX" - JBHX = "JBHX" - JBIX = "JBIX" - JBMX = "JBMX" - JCBX = "JCBX" - JCCB = "JCCB" - JCCX = "JCCX" - JCDX = "JCDX" - JCHX = "JCHX" - JCPX = "JCPX" - JCUX = "JCUX" - JDCX = "JDCX" - JDEX = "JDEX" - JGBX = "JGBX" - JGCX = "JGCX" - JGWX = "JGWX" - JHAX = "JHAX" - JHSX = "JHSX" - JHUX = "JHUX" - JIBX = "JIBX" - JICX = "JICX" - JIDX = "JIDX" - JIGX = "JIGX" - JIKX = "JIKX" - JIMX = "JIMX" - JINX = "JINX" - JIOP = "JIOP" - JIOX = "JIOX" - JIRX = "JIRX" - JISX = "JISX" - JIVX = "JIVX" - JJCX = "JJCX" - JJHX = "JJHX" - JJSB = "JJSB" - JKAX = "JKAX" - JKCX = "JKCX" - JKDX = "JKDX" - JKEX = "JKEX" - JKHX = "JKHX" - JKMX = "JKMX" - JKRX = "JKRX" - JKSX = "JKSX" - JLCX = "JLCX" - JLDX = "JLDX" - JLNX = "JLNX" - JLSX = "JLSX" - JLWX = "JLWX" - JMAX = "JMAX" - JMBX = "JMBX" - JMCX = "JMCX" - JMDX = "JMDX" - JMHX = "JMHX" - JMMX = "JMMX" - JMOX = "JMOX" - JMPX = "JMPX" - JMSX = "JMSX" - JMYX = "JMYX" - JNAX = "JNAX" - JNDX = "JNDX" - JNSX = "JNSX" - JODX = "JODX" - JONX = "JONX" - JOWX = "JOWX" - JPAX = "JPAX" - JPCB = "JPCB" - JPCX = "JPCX" - JRAX = "JRAX" - JRKX = "JRKX" - JRNX = "JRNX" - JRSX = "JRSX" - JSAB = "JSAB" - JSAX = "JSAX" - JSBL = "JSBL" - JSBP = "JSBP" - JSBX = "JSBX" - JSCX = "JSCX" - JSDX = "JSDX" - JSEX = "JSEX" - JSFB = "JSFB" - JSHX = "JSHX" - JSKX = "JSKX" - JSMX = "JSMX" - JSOX = "JSOX" - JSRX = "JSRX" - JSTX = "JSTX" - JSVX = "JSVX" - JSWX = "JSWX" - JTIX = "JTIX" - JTSX = "JTSX" - JUCX = "JUCX" - JUSX = "JUSX" - JVCX = "JVCX" - KAAX = "KAAX" - KACE = "KACE" - KACX = "KACX" - KADX = "KADX" - KAGX = "KAGX" - KAIJ = "KAIJ" - KALX = "KALX" - KAMX = "KAMX" - KANG = "KANG" - KANX = "KANX" - KARB = "KARB" - KARX = "KARX" - KASX = "KASX" - KATX = "KATX" - KAYX = "KAYX" - KBCX = "KBCX" - KBNX = "KBNX" - KBSX = "KBSX" - KCBL = "KCBL" - KCBX = "KCBX" - KCCB = "KCCB" - KCCX = "KCCX" - KCDX = "KCDX" - KCEX = "KCEX" - KCOB = "KCOB" - KCUB = "KCUB" - KCUX = "KCUX" - KDBX = "KDBX" - KDCB = "KDCB" - KDCX = "KDCX" - KDIX = "KDIX" - KDNX = "KDNX" - KDUX = "KDUX" - KEMX = "KEMX" - KESX = "KESX" - KGBX = "KGBX" - KGDX = "KGDX" - KGRB = "KGRB" - KGSX = "KGSX" - KHAX = "KHAX" - KHCX = "KHCX" - KHDX = "KHDX" - KHNX = "KHNX" - KHUX = "KHUX" - KICX = "KICX" - KJSB = "KJSB" - KJSX = "KJSX" - KKBK = "KKBK" - KKMX = "KKMX" - KKSX = "KKSX" - KLGB = "KLGB" - KLMX = "KLMX" - KMCB = "KMCB" - KMCX = "KMCX" - KMNX = "KMNX" - KMSX = "KMSX" - KNBX = "KNBX" - KNCX = "KNCX" - KNNX = "KNNX" - KNPX = "KNPX" - KNSB = "KNSB" - KNSX = "KNSX" - KOBX = "KOBX" - KOCX = "KOCX" - KODX = "KODX" - KOEX = "KOEX" - KOLH = "KOLH" - KOSX = "KOSX" - KOTX = "KOTX" - KOYX = "KOYX" - KPCX = "KPCX" - KRCX = "KRCX" - KRDX = "KRDX" - KRIX = "KRIX" - KRMX = "KRMX" - KRNX = "KRNX" - KRTH = "KRTH" - KRTX = "KRTX" - KSBK = "KSBK" - KSBX = "KSBX" - KSCB = "KSCB" - KSCX = "KSCX" - KSMX = "KSMX" - KSNX = "KSNX" - KSTX = "KSTX" - KSUX = "KSUX" - KTBX = "KTBX" - KTCX = "KTCX" - KTDX = "KTDX" - KTTX = "KTTX" - KUBX = "KUBX" - KUCB = "KUCB" - KUCX = "KUCX" - KUKX = "KUKX" - KULX = "KULX" - KUMX = "KUMX" - KUNS = "KUNS" - KURX = "KURX" - KVBL = "KVBL" - KVCX = "KVCX" - KVGB = "KVGB" - KYDX = "KYDX" - LACX = "LACX" - LATX = "LATX" - LAVB = "LAVB" - LBMX = "LBMX" - LCBX = "LCBX" - LCCX = "LCCX" - LDCX = "LDCX" - LDPX = "LDPX" - LDRX = "LDRX" - LECX = "LECX" - LICB = "LICB" - LKBL = "LKBL" - LKCX = "LKCX" - LKHX = "LKHX" - LKMX = "LKMX" - LMNX = "LMNX" - LNSX = "LNSX" - LOKX = "LOKX" - LONX = "LONX" - LUCX = "LUCX" - LULX = "LULX" - MABL = "MABL" - MACX = "MACX" - MADX = "MADX" - MAGX = "MAGX" - MAHB = "MAHB" - MAHG = "MAHG" - MAHX = "MAHX" - MAJX = "MAJX" - MAKX = "MAKX" - MALX = "MALX" - MAMX = "MAMX" - MANX = "MANX" - MAPX = "MAPX" - MASX = "MASX" - MAUX = "MAUX" - MAVX = "MAVX" - MAYX = "MAYX" - MBCX = "MBCX" - MBGX = "MBGX" - MBLX = "MBLX" - MCAX = "MCAX" - MCBL = "MCBL" - MCBX = "MCBX" - MCCX = "MCCX" - MCDX = "MCDX" - MCLX = "MCLX" - MCOX = "MCOX" - MCSX = "MCSX" - MCUX = "MCUX" - MDCB = "MDCB" - MDCX = "MDCX" - MDEX = "MDEX" - MDGX = "MDGX" - MDIX = "MDIX" - MDMX = "MDMX" - MDPX = "MDPX" - MEDX = "MEDX" - MERX = "MERX" - MEUX = "MEUX" - MFCX = "MFCX" - MFUX = "MFUX" - MGBX = "MGBX" - MGCB = "MGCB" - MGCX = "MGCX" - MGDX = "MGDX" - MGRB = "MGRB" - MGSX = "MGSX" - MGUX = "MGUX" - MHCB = "MHCB" - MHCX = "MHCX" - MHEX = "MHEX" - MHLX = "MHLX" - MHMX = "MHMX" - MHNX = "MHNX" - MHSX = "MHSX" - MHUX = "MHUX" - MIZX = "MIZX" - MJCX = "MJCX" - MKPB = "MKPB" - MKUX = "MKUX" - MKYX = "MKYX" - MLDX = "MLDX" - MMCX = "MMCX" - MMMX = "MMMX" - MNBX = "MNBX" - MNCX = "MNCX" - MNSX = "MNSX" - MOGX = "MOGX" - MOUX = "MOUX" - MPCX = "MPCX" - MPDX = "MPDX" - MPRX = "MPRX" - MRBX = "MRBX" - MRTX = "MRTX" - MSAX = "MSAX" - MSBL = "MSBL" - MSBX = "MSBX" - MSCI = "MSCI" - MSCX = "MSCX" - MSHQ = "MSHQ" - MSLM = "MSLM" - MSNU = "MSNU" - MSNX = "MSNX" - MSOX = "MSOX" - MSSX = "MSSX" - MUBL = "MUBL" - MUBX = "MUBX" - MUCX = "MUCX" - MUDX = "MUDX" - MUNX = "MUNX" - MUPX = "MUPX" - MURX = "MURX" - MUSX = "MUSX" - MVCB = "MVCB" - MVCX = "MVCX" - MVIX = "MVIX" - MYAX = "MYAX" - MYSX = "MYSX" - MZCX = "MZCX" - MZRX = "MZRX" - NABX = "NABX" - NACX = "NACX" - NAGX = "NAGX" - NAIX = "NAIX" - NALX = "NALX" - NANX = "NANX" - NASX = "NASX" - NATA = "NATA" - NAUX = "NAUX" - NAVX = "NAVX" - NAWX = "NAWX" - NBAD = "NBAD" - NBBX = "NBBX" - NBCX = "NBCX" - NBMX = "NBMX" - NBRD = "NBRD" - NCBL = "NCBL" - NCBX = "NCBX" - NCCX = "NCCX" - NCOX = "NCOX" - NCUB = "NCUB" - NCUX = "NCUX" - NDCB = "NDCB" - NDCX = "NDCX" - NDDX = "NDDX" - NDGX = "NDGX" - NDIX = "NDIX" - NESF = "NESF" - NEYX = "NEYX" - NGBX = "NGBX" - NGKX = "NGKX" - NGNX = "NGNX" - NGRX = "NGRX" - NGSB = "NGSB" - NGSX = "NGSX" - NICB = "NICB" - NIDX = "NIDX" - NILX = "NILX" - NIRX = "NIRX" - NIUX = "NIUX" - NJBK = "NJBK" - NJCX = "NJCX" - NJGX = "NJGX" - NJMX = "NJMX" - NJSX = "NJSX" - NKGS = "NKGS" - NLGX = "NLGX" - NLUX = "NLUX" - NMCB = "NMCB" - NMCX = "NMCX" - NMGB = "NMGB" - NNCX = "NNCX" - NNSB = "NNSB" - NNSX = "NNSX" - NOBX = "NOBX" - NOIX = "NOIX" - NOSC = "NOSC" - NPCX = "NPCX" - NPKX = "NPKX" - NRDX = "NRDX" - NSBB = "NSBB" - NSBX = "NSBX" - NSCX = "NSCX" - NSGX = "NSGX" - NSIX = "NSIX" - NSJX = "NSJX" - NSMX = "NSMX" - NSPB = "NSPB" - NSPX = "NSPX" - NSRX = "NSRX" - NTBL = "NTBL" - NUBX = "NUBX" - NUCB = "NUCB" - NUCX = "NUCX" - NVCX = "NVCX" - NVNM = "NVNM" - NVSX = "NVSX" - NWCX = "NWCX" - ODCX = "ODCX" - ODGB = "ODGB" - OIBA = "OIBA" - OMCX = "OMCX" - ONSX = "ONSX" - ORBC = "ORBC" - ORCB = "ORCB" - OSMX = "OSMX" - PABX = "PABX" - PACX = "PACX" - PADX = "PADX" - PALX = "PALX" - PANX = "PANX" - PARX = "PARX" - PASX = "PASX" - PATX = "PATX" - PAYX = "PAYX" - PBGX = "PBGX" - PCBL = "PCBL" - PCBX = "PCBX" - PCCB = "PCCB" - PCCX = "PCCX" - PCLX = "PCLX" - PCMX = "PCMX" - PCOX = "PCOX" - PCPX = "PCPX" - PCSX = "PCSX" - PCTX = "PCTX" - PCUX = "PCUX" - PDBX = "PDBX" - PDCX = "PDCX" - PDNX = "PDNX" - PDSX = "PDSX" - PDUX = "PDUX" - PGBX = "PGBX" - PGCX = "PGCX" - PGRX = "PGRX" - PGTX = "PGTX" - PITX = "PITX" - PJSB = "PJSB" - PKBX = "PKBX" - PKDX = "PKDX" - PKGB = "PKGB" - PLOX = "PLOX" - PLUX = "PLUX" - PMCB = "PMCB" - PMCX = "PMCX" - PMEC = "PMEC" - PMNX = "PMNX" - PNCX = "PNCX" - PNMX = "PNMX" - PNPX = "PNPX" - PNSX = "PNSX" - PPBX = "PPBX" - PPCX = "PPCX" - PRCX = "PRCX" - PREX = "PREX" - PROX = "PROX" - PRPX = "PRPX" - PRSX = "PRSX" - PRTH = "PRTH" - PSBX = "PSBX" - PSCX = "PSCX" - PSIB = "PSIB" - PSRX = "PSRX" - PSSX = "PSSX" - PTCX = "PTCX" - PTNX = "PTNX" - PTSX = "PTSX" - PUBX = "PUBX" - PUCB = "PUCB" - PUCX = "PUCX" - PUDX = "PUDX" - PUGX = "PUGX" - PUNB = "PUNB" - PUNX = "PUNX" - PURX = "PURX" - PUSD = "PUSD" - PUSX = "PUSX" - PUUX = "PUUX" - PVAX = "PVAX" - PVCX = "PVCX" - PVVX = "PVVX" - PWUX = "PWUX" - PYCX = "PYCX" - PYTM = "PYTM" - QNBA = "QNBA" - QUCX = "QUCX" - RABO = "RABO" - RACX = "RACX" - RAEX = "RAEX" - RAJX = "RAJX" - RAKX = "RAKX" - RAMX = "RAMX" - RANX = "RANX" - RATN = "RATN" - RAUX = "RAUX" - RBBX = "RBBX" - RBCX = "RBCX" - RBIS = "RBIS" - RBIH = "RBIH" - RCBX = "RCBX" - RCCX = "RCCX" - RCDX = "RCDX" - RCMX = "RCMX" - RCUX = "RCUX" - RDCX = "RDCX" - RDNX = "RDNX" - REBX = "REBX" - RECX = "RECX" - REWX = "REWX" - RGCX = "RGCX" - RGSX = "RGSX" - RHMX = "RHMX" - RJCX = "RJCX" - RJJX = "RJJX" - RJNX = "RJNX" - RJTX = "RJTX" - RKCX = "RKCX" - RLUX = "RLUX" - RMGB = "RMGB" - RNBX = "RNBX" - RNDX = "RNDX" - RNGX = "RNGX" - RNSB = "RNSB" - RNSX = "RNSX" - ROCX = "ROCX" - ROHX = "ROHX" - RPUX = "RPUX" - RRBP = "RRBP" - RRSX = "RRSX" - RSBL = "RSBL" - RSBX = "RSBX" - RSCB = "RSCB" - RSSX = "RSSX" - RSUX = "RSUX" - RSVX = "RSVX" - RUCX = "RUCX" - RUKX = "RUKX" - RUMX = "RUMX" - RZSX = "RZSX" - SABR = "SABR" - SABX = "SABX" - SACB = "SACB" - SACX = "SACX" - SADX = "SADX" - SAGX = "SAGX" - SAHE = "SAHE" - SAHX = "SAHX" - SAIX = "SAIX" - SALX = "SALX" - SAMX = "SAMX" - SANT = "SANT" - SANX = "SANX" - SAPX = "SAPX" - SARX = "SARX" - SASA = "SASA" - SASX = "SASX" - SATX = "SATX" - SAUX = "SAUX" - SAVX = "SAVX" - SAWX = "SAWX" - SBBJ = "SBBJ" - SBCX = "SBCX" - SBHY = "SBHY" - SBIN = "SBIN" - SBKX = "SBKX" - SBLD = "SBLD" - SBLS = "SBLS" - SBLX = "SBLX" - SBMX = "SBMX" - SBMY = "SBMY" - SBNX = "SBNX" - SBPX = "SBPX" - SBSX = "SBSX" - SBTR = "SBTR" - SBUJ = "SBUJ" - SBUX = "SBUX" - SCBL = "SCBL" - SCBX = "SCBX" - SCCX = "SCCX" - SCDX = "SCDX" - SCIX = "SCIX" - SCNX = "SCNX" - SCOB = "SCOB" - SCOX = "SCOX" - SCPX = "SCPX" - SCSX = "SCSX" - SCUX = "SCUX" - SDBX = "SDBX" - SDCB = "SDCB" - SDCE = "SDCE" - SDCX = "SDCX" - SDHX = "SDHX" - SDSX = "SDSX" - SDTX = "SDTX" - SDUX = "SDUX" - SEMX = "SEMX" - SENX = "SENX" - SEUX = "SEUX" - SEWX = "SEWX" - SGCX = "SGCX" - SGLX = "SGLX" - SGSX = "SGSX" - SGUX = "SGUX" - SHAX = "SHAX" - SHBK = "SHBK" - SHBX = "SHBX" - SHCX = "SHCX" - SHEX = "SHEX" - SHGX = "SHGX" - SHIX = "SHIX" - SHKX = "SHKX" - SHMX = "SHMX" - SHNX = "SHNX" - SHOX = "SHOX" - SHRX = "SHRX" - SHSX = "SHSX" - SHUX = "SHUX" - SIBL = "SIBL" - SIBX = "SIBX" - SICX = "SICX" - SIDB = "SIDB" - SIDC = "SIDC" - SIDX = "SIDX" - SIGX = "SIGX" - SIHX = "SIHX" - SIKX = "SIKX" - SINX = "SINX" - SIRX = "SIRX" - SISX = "SISX" - SITX = "SITX" - SIWX = "SIWX" - SJGX = "SJGX" - SJSB = "SJSB" - SJSX = "SJSX" - SKCX = "SKCX" - SKKX = "SKKX" - SKNX = "SKNX" - SKSB = "SKSB" - SKUX = "SKUX" - SLAX = "SLAX" - SLCX = "SLCX" - SMBC = "SMBC" - SMBX = "SMBX" - SMCB = "SMCB" - SMCX = "SMCX" - SMEX = "SMEX" - SMMX = "SMMX" - SMNX = "SMNX" - SMPX = "SMPX" - SMSX = "SMSX" - SMTX = "SMTX" - SMUX = "SMUX" - SMVC = "SMVC" - SMWX = "SMWX" - SNAX = "SNAX" - SNBK = "SNBK" - SNBX = "SNBX" - SNCX = "SNCX" - SNDX = "SNDX" - SNGX = "SNGX" - SNKX = "SNKX" - SNLX = "SNLX" - SNPX = "SNPX" - SNSV = "SNSV" - SNSX = "SNSX" - SOBX = "SOBX" - SOGE = "SOGE" - SOLX = "SOLX" - SONX = "SONX" - SPBX = "SPBX" - SPCB = "SPCB" - SPCX = "SPCX" - SPNX = "SPNX" - SPSX = "SPSX" - SPTX = "SPTX" - SRCB = "SRCB" - SRCX = "SRCX" - SREX = "SREX" - SRGX = "SRGX" - SRHX = "SRHX" - SRSX = "SRSX" - SSBL = "SSBL" - SSBX = "SSBX" - SSDX = "SSDX" - SSHX = "SSHX" - SSKX = "SSKX" - SSLX = "SSLX" - SSNX = "SSNX" - SSOX = "SSOX" - SSSX = "SSSX" - SSWX = "SSWX" - STBP = "STBP" - STCB = "STCB" - STCX = "STCX" - STDX = "STDX" - STRX = "STRX" - SUBX = "SUBX" - SUCX = "SUCX" - SUDX = "SUDX" - SULX = "SULX" - SUMX = "SUMX" - SUNB = "SUNB" - SURX = "SURX" - SURY = "SURY" - SUSX = "SUSX" - SUTB = "SUTB" - SUVX = "SUVX" - SVAX = "SVAX" - SVBL = "SVBL" - SVCB = "SVCB" - SVCX = "SVCX" - SVGX = "SVGX" - SVNX = "SVNX" - SVOX = "SVOX" - SVRX = "SVRX" - SVSH = "SVSH" - SVSX = "SVSX" - SWMX = "SWMX" - SWSX = "SWSX" - SYNB = "SYNB" - TACX = "TACX" - TADX = "TADX" - TAMX = "TAMX" - TAPX = "TAPX" - TASX = "TASX" - TBCX = "TBCX" - TBDX = "TBDX" - TBHX = "TBHX" - TBMX = "TBMX" - TBPX = "TBPX" - TBSB = "TBSB" - TBSX = "TBSX" - TBTX = "TBTX" - TBUX = "TBUX" - TCBX = "TCBX" - TCCX = "TCCX" - TCHX = "TCHX" - TCPX = "TCPX" - TCUB = "TCUB" - TCUX = "TCUX" - TDBX = "TDBX" - TDCB = "TDCB" - TDCX = "TDCX" - TDIX = "TDIX" - TDMX = "TDMX" - TDPX = "TDPX" - TDSX = "TDSX" - TECX = "TECX" - TEHX = "TEHX" - TEMX = "TEMX" - TESX = "TESX" - TETX = "TETX" - TFCX = "TFCX" - TGBX = "TGBX" - TGCG = "TGCG" - TGCX = "TGCX" - TGDX = "TGDX" - TGMB = "TGMB" - TGNX = "TGNX" - TGUX = "TGUX" - THCX = "THCX" - THOX = "THOX" - THRS = "THRS" - THRX = "THRX" - THWX = "THWX" - TIDX = "TIDX" - TIRX = "TIRX" - TJAX = "TJAX" - TJBX = "TJBX" - TJCX = "TJCX" - TJDX = "TJDX" - TJMX = "TJMX" - TJNX = "TJNX" - TJSB = "TJSB" - TKAX = "TKAX" - TKCX = "TKCX" - TKDX = "TKDX" - TKTX = "TKTX" - TKUX = "TKUX" - TLPX = "TLPX" - TMAX = "TMAX" - TMBL = "TMBL" - TMBX = "TMBX" - TMCX = "TMCX" - TMNX = "TMNX" - TMPX = "TMPX" - TMSC = "TMSC" - TMSX = "TMSX" - TMTX = "TMTX" - TMUX = "TMUX" - TNBX = "TNBX" - TNCX = "TNCX" - TNDC = "TNDC" - TNEX = "TNEX" - TNHX = "TNHX" - TNIX = "TNIX" - TNKX = "TNKX" - TNMX = "TNMX" - TNSC = "TNSC" - TNUX = "TNUX" - TOCX = "TOCX" - TPCX = "TPCX" - TPDX = "TPDX" - TPSX = "TPSX" - TPUX = "TPUX" - TRAX = "TRAX" - TRDX = "TRDX" - TSAB = "TSAB" - TSAX = "TSAX" - TSBX = "TSBX" - TSCX = "TSCX" - TSDX = "TSDX" - TSIX = "TSIX" - TSMX = "TSMX" - TSNX = "TSNX" - TSPX = "TSPX" - TSSB = "TSSB" - TSSX = "TSSX" - TSUX = "TSUX" - TTBX = "TTBX" - TTCB = "TTCB" - TTCX = "TTCX" - TTGX = "TTGX" - TTLX = "TTLX" - TTUX = "TTUX" - TUBX = "TUBX" - TUCL = "TUCL" - TUCX = "TUCX" - TUDX = "TUDX" - TUMX = "TUMX" - TUNX = "TUNX" - TUOX = "TUOX" - TUPX = "TUPX" - TURX = "TURX" - TVBX = "TVBX" - TVDX = "TVDX" - TVPX = "TVPX" - TVUX = "TVUX" - TYCX = "TYCX" - UBBX = "UBBX" - UBGX = "UBGX" - UBIN = "UBIN" - UCBA = "UCBA" - UCBS = "UCBS" - UCBX = "UCBX" - UCCX = "UCCX" - UCDX = "UCDX" - UCUX = "UCUX" - UGBX = "UGBX" - UICX = "UICX" - UJSX = "UJSX" - UJVN = "UJVN" - UKGX = "UKGX" - UMAX = "UMAX" - UMCX = "UMCX" - UMSX = "UMSX" - UMUX = "UMUX" - UNAX = "UNAX" - UNIX = "UNIX" - UNMX = "UNMX" - UNSX = "UNSX" - UOVB = "UOVB" - UPCB = "UPCB" - UPCX = "UPCX" - URBN = "URBN" - URCX = "URCX" - URDX = "URDX" - URMX = "URMX" - UROX = "UROX" - USFB = "USFB" - USNX = "USNX" - UTBI = "UTBI" - UTBX = "UTBX" - UTCX = "UTCX" - UTGX = "UTGX" - UTIB = "UTIB" - UTKS = "UTKS" - UTKX = "UTKX" - UTZX = "UTZX" - UUCX = "UUCX" - VADX = "VADX" - VAIX = "VAIX" - VANX = "VANX" - VARA = "VARA" - VASJ = "VASJ" - VASX = "VASX" - VAUX = "VAUX" - VCAX = "VCAX" - VCBX = "VCBX" - VCCX = "VCCX" - VCNB = "VCNB" - VCOB = "VCOB" - VCOX = "VCOX" - VDCX = "VDCX" - VDYX = "VDYX" - VEDX = "VEDX" - VERX = "VERX" - VGBX = "VGBX" - VHDX = "VHDX" - VICX = "VICX" - VIDX = "VIDX" - VIJB = "VIJB" - VIJX = "VIJX" - VIKX = "VIKX" - VIMX = "VIMX" - VIRX = "VIRX" - VISX = "VISX" - VJSX = "VJSX" - VKCX = "VKCX" - VKSX = "VKSX" - VMCX = "VMCX" - VMMX = "VMMX" - VMUX = "VMUX" - VNSX = "VNSX" - VRDX = "VRDX" - VSBL = "VSBL" - VSBX = "VSBX" - VSCX = "VSCX" - VSSX = "VSSX" - VSVX = "VSVX" - VUCX = "VUCX" - VVCX = "VVCX" - VVSB = "VVSB" - VYAX = "VYAX" - VYPX = "VYPX" - VYSA = "VYSA" - WACX = "WACX" - WAIX = "WAIX" - WARX = "WARX" - WAUX = "WAUX" - WBSC = "WBSC" - WCBX = "WCBX" - WDCX = "WDCX" - WKGX = "WKGX" - WNBX = "WNBX" - WPAC = "WPAC" - WRCX = "WRCX" - WUCX = "WUCX" - WZUX = "WZUX" - XJKG = "XJKG" - YADX = "YADX" - YAVX = "YAVX" - YCBX = "YCBX" - YDCX = "YDCX" - YESB = "YESB" - YLNX = "YLNX" - YMSX = "YMSX" - YNCX = "YNCX" - YNSX = "YNSX" - ZBBX = "ZBBX" - ZBSX = "ZBSX" - ZCBL = "ZCBL" - ZIBX = "ZIBX" - ZILX = "ZILX" - ZIMX = "ZIMX" - ZISX = "ZISX" - ZLLX = "ZLLX" - ZRNB = "ZRNB" - ZMMX = "ZMMX" - ZSAX = "ZSAX" - ZSBL = "ZSBL" - ZSBX = "ZSBX" - ZSGX = "ZSGX" - ZSHX = "ZSHX" - ZSJX = "ZSJX" - ZSKX = "ZSKX" - ZSLX = "ZSLX" - ZSMX = "ZSMX" +import ( + "fmt" ) + +var bankCodes = []string{ + "AACX", + "ABBL", + "ABCX", + "ABDX", + "ABEX", + "ABHY", + "ABNA", + "ABPB", + "ABSB", + "ABUX", + "ACAX", + "ACBX", + "ACCX", + "ACKX", + "ACOX", + "ACUB", + "ACUX", + "ADBX", + "ADCB", + "ADCC", + "ADCX", + "ADDX", + "AGCX", + "AGDX", + "AGRX", + "AGSX", + "AGUX", + "AGVX", + "AHMX", + "AHUX", + "AIRP", + "AJAR", + "AJHC", + "AJKB", + "AJMX", + "AJNX", + "AJPX", + "AJSX", + "AJUX", + "AKJB", + "AKMX", + "AKOX", + "ALAX", + "ALIX", + "ALLA", + "ALLX", + "ALWX", + "AMAX", + "AMBX", + "AMCB", + "AMCX", + "AMDN", + "AMMX", + "AMNX", + "AMRX", + "AMSB", + "AMSX", + "ANBX", + "ANDB", + "ANDX", + "ANMX", + "ANSX", + "ANUX", + "ANZB", + "APBL", + "APCX", + "APGB", + "APGV", + "APGX", + "APJX", + "APMC", + "APMX", + "APNX", + "APRX", + "APSX", + "ARCX", + "ARMX", + "ARYX", + "ASBL", + "ASBX", + "ASHX", + "ASKX", + "ASNX", + "ASOX", + "ASSX", + "AUBL", + "AUBX", + "AUCB", + "AUCX", + "AUGX", + "AURX", + "AVDX", + "AWCX", + "AWUX", + "AZAX", + "AZPX", + "AZSX", + "AZUX", + "BACB", + "BACX", + "BADX", + "BALX", + "BANX", + "BARA", + "BARB", + "BARC", + "BARX", + "BASX", + "BAUX", + "BAVX", + "BBKM", + "BBLX", + "BBRX", + "BBSX", + "BBUX", + "BBVX", + "BCBM", + "BCBX", + "BCCB", + "BCCX", + "BCEX", + "BCEY", + "BCOX", + "BCUB", + "BCUX", + "BDBL", + "BDBX", + "BDCX", + "BDDX", + "BDIX", + "BDNX", + "BDOX", + "BDUX", + "BEDX", + "BELX", + "BFUX", + "BGBX", + "BGCX", + "BGGX", + "BGUX", + "BGVX", + "BHAX", + "BHBX", + "BHCX", + "BHDX", + "BHEX", + "BHGX", + "BHIX", + "BHJX", + "BHMX", + "BHOX", + "BHRX", + "BHSX", + "BHTX", + "BHUX", + "BHWX", + "BJUX", + "BKCX", + "BKDN", + "BKDX", + "BKID", + "BKSX", + "BLGX", + "BMBL", + "BMCB", + "BMCX", + "BMPX", + "BMSX", + "BNBX", + "BNCX", + "BNPA", + "BNSB", + "BNSX", + "BODX", + "BOFA", + "BORX", + "BOTM", + "BOTX", + "BPCX", + "BPSX", + "BRCX", + "BRDX", + "BRGX", + "BRMX", + "BRSX", + "BRUX", + "BSBX", + "BSCX", + "BTCX", + "BTUX", + "BUBX", + "BUCL", + "BUCX", + "BUGX", + "BUNX", + "BURX", + "BUSX", + "BUZX", + "BVNX", + "BVSX", + "BWCX", + "CALX", + "CBHX", + "CBIN", + "CCBL", + "CCBX", + "CCCX", + "CCMX", + "CCOB", + "CCUX", + "CDCX", + "CEBX", + "CGBX", + "CGGX", + "CHAS", + "CHAX", + "CHBX", + "CHCX", + "CHDX", + "CHIX", + "CHKX", + "CHPX", + "CHRX", + "CHSX", + "CHTX", + "CIDX", + "CITI", + "CITX", + "CIUB", + "CJAX", + "CJMX", + "CLBL", + "CMCB", + "CMCX", + "CMDX", + "CMLX", + "CMPX", + "CNRB", + "CNSX", + "COCX", + "COLX", + "COMX", + "CONX", + "CORP", + "COSB", + "CPDX", + "CPSN", + "CRBX", + "CRES", + "CRLY", + "CRSX", + "CRUB", + "CSBK", + "CSBX", + "CTBA", + "CTBX", + "CTCB", + "CTOX", + "CTUX", + "CUBX", + "CUCX", + "CURX", + "CZCX", + "CZUX", + "DAAX", + "DAHX", + "DAUX", + "DBAX", + "DBSS", + "DCBL", + "DCBX", + "DCCX", + "DCDX", + "DCEX", + "DCKX", + "DCMX", + "DCNX", + "DCPX", + "DCSX", + "DCTX", + "DCUX", + "DDBX", + "DDCX", + "DDDX", + "DDHX", + "DEGX", + "DENS", + "DEOB", + "DEOX", + "DEUT", + "DEUX", + "DEVX", + "DGBX", + "DHBX", + "DHKX", + "DHUX", + "DIBX", + "DICG", + "DICX", + "DIUX", + "DJCX", + "DKCL", + "DKSX", + "DLSC", + "DLXB", + "DMCB", + "DMCX", + "DMKB", + "DMKJ", + "DNSB", + "DNSX", + "DOBX", + "DOHB", + "DRGX", + "DSBX", + "DSCB", + "DSHX", + "DSPX", + "DSUX", + "DTCX", + "DTPX", + "DUCX", + "DUMX", + "DUNX", + "DURG", + "DVDX", + "DYPX", + "EBIL", + "ECBL", + "EDBX", + "EDCX", + "EDSX", + "EIBI", + "ESAF", + "ESFB", + "ESMF", + "ETCX", + "ETDX", + "EUCX", + "EWCX", + "FCBX", + "FCCX", + "FCOX", + "FDFX", + "FDRL", + "FEKX", + "FGCB", + "FINO", + "FINF", + "FINX", + "FIRN", + "FIRX", + "FMCX", + "FRIX", + "FSCX", + "FSFB", + "FZCX", + "FZSX", + "GACX", + "GADX", + "GANX", + "GBCB", + "GCBX", + "GCCX", + "GCUL", + "GCUX", + "GDCB", + "GDCX", + "GDDX", + "GDUX", + "GGBK", + "GGCX", + "GHPX", + "GKNX", + "GMBX", + "GMCX", + "GMUX", + "GNCX", + "GNSX", + "GODX", + "GOSX", + "GPCX", + "GPOX", + "GRAX", + "GSBL", + "GSBX", + "GSCB", + "GSCX", + "GSSX", + "GTCX", + "GUBX", + "GUCX", + "GUNX", + "GUOX", + "HAMX", + "HANX", + "HARC", + "HCBL", + "HCBX", + "HCCX", + "HCLX", + "HDCX", + "HDFC", + "HGBX", + "HINX", + "HISX", + "HMBX", + "HMNX", + "HOCX", + "HOOX", + "HPCX", + "HPSC", + "HPSX", + "HSBC", + "HSBX", + "HSCX", + "HSDX", + "HSSX", + "HUBX", + "HUCX", + "HUTX", + "HVBK", + "IBBK", + "IBKL", + "IBKO", + "ICBK", + "ICBL", + "ICHX", + "ICIC", + "ICMX", + "IDFB", + "IDIB", + "IDUK", + "IDUX", + "ILCB", + "IMPX", + "INCX", + "INDB", + "INDX", + "IOBA", + "IPCX", + "IPOS", + "IPPB", + "IPSX", + "ISBX", + "ISMX", + "ITBL", + "ITCX", + "ITDX", + "IUCB", + "IUCX", + "JACX", + "JAKA", + "JALX", + "JAMX", + "JANA", + "JANX", + "JASB", + "JASX", + "JAUX", + "JBHX", + "JBIX", + "JBMX", + "JCBX", + "JCCB", + "JCCX", + "JCDX", + "JCHX", + "JCPX", + "JCUX", + "JDCX", + "JDEX", + "JGBX", + "JGCX", + "JGWX", + "JHAX", + "JHSX", + "JHUX", + "JIBX", + "JICX", + "JIDX", + "JIGX", + "JIKX", + "JIMX", + "JINX", + "JIOP", + "JIOX", + "JIRX", + "JISX", + "JIVX", + "JJCX", + "JJHX", + "JJSB", + "JKAX", + "JKCX", + "JKDX", + "JKEX", + "JKHX", + "JKMX", + "JKRX", + "JKSX", + "JLCX", + "JLDX", + "JLNX", + "JLSX", + "JLWX", + "JMAX", + "JMBX", + "JMCX", + "JMDX", + "JMHX", + "JMMX", + "JMOX", + "JMPX", + "JMSX", + "JMYX", + "JNAX", + "JNDX", + "JNSX", + "JODX", + "JONX", + "JOWX", + "JPAX", + "JPCB", + "JPCX", + "JRAX", + "JRKX", + "JRNX", + "JRSX", + "JSAB", + "JSAX", + "JSBL", + "JSBP", + "JSBX", + "JSCX", + "JSDX", + "JSEX", + "JSFB", + "JSHX", + "JSKX", + "JSMX", + "JSOX", + "JSRX", + "JSTX", + "JSVX", + "JSWX", + "JTIX", + "JTSX", + "JUCX", + "JUSX", + "JVCX", + "KAAX", + "KACE", + "KACX", + "KADX", + "KAGX", + "KAIJ", + "KALX", + "KAMX", + "KANG", + "KANX", + "KARB", + "KARX", + "KASX", + "KATX", + "KAYX", + "KBCX", + "KBNX", + "KBSX", + "KCBL", + "KCBX", + "KCCB", + "KCCX", + "KCDX", + "KCEX", + "KCOB", + "KCUB", + "KCUX", + "KDBX", + "KDCB", + "KDCX", + "KDIX", + "KDNX", + "KDUX", + "KEMX", + "KESX", + "KGBX", + "KGDX", + "KGRB", + "KGSX", + "KHAX", + "KHCX", + "KHDX", + "KHNX", + "KHUX", + "KICX", + "KJSB", + "KJSX", + "KKBK", + "KKMX", + "KKSX", + "KLGB", + "KLMX", + "KMCB", + "KMCX", + "KMNX", + "KMSX", + "KNBX", + "KNCX", + "KNNX", + "KNPX", + "KNSB", + "KNSX", + "KOBX", + "KOCX", + "KODX", + "KOEX", + "KOLH", + "KOSX", + "KOTX", + "KOYX", + "KPCX", + "KRCX", + "KRDX", + "KRIX", + "KRMX", + "KRNX", + "KRTH", + "KRTX", + "KSBK", + "KSBX", + "KSCB", + "KSCX", + "KSMX", + "KSNX", + "KSTX", + "KSUX", + "KTBX", + "KTCX", + "KTDX", + "KTTX", + "KUBX", + "KUCB", + "KUCX", + "KUKX", + "KULX", + "KUMX", + "KUNS", + "KURX", + "KVBL", + "KVCX", + "KVGB", + "KYDX", + "LACX", + "LATX", + "LAVB", + "LBMX", + "LCBX", + "LCCX", + "LDCX", + "LDPX", + "LDRX", + "LECX", + "LICB", + "LKBL", + "LKCX", + "LKHX", + "LKMX", + "LMNX", + "LNSX", + "LOKX", + "LONX", + "LUCX", + "LULX", + "MABL", + "MACX", + "MADX", + "MAGX", + "MAHB", + "MAHG", + "MAHX", + "MAJX", + "MAKX", + "MALX", + "MAMX", + "MANX", + "MAPX", + "MASX", + "MAUX", + "MAVX", + "MAYX", + "MBCX", + "MBGX", + "MBLX", + "MCAX", + "MCBL", + "MCBX", + "MCCX", + "MCDX", + "MCLX", + "MCOX", + "MCSX", + "MCUX", + "MDCB", + "MDCX", + "MDEX", + "MDGX", + "MDIX", + "MDMX", + "MDPX", + "MEDX", + "MERX", + "MEUX", + "MFCX", + "MFUX", + "MGBX", + "MGCB", + "MGCX", + "MGDX", + "MGRB", + "MGSX", + "MGUX", + "MHCB", + "MHCX", + "MHEX", + "MHLX", + "MHMX", + "MHNX", + "MHSX", + "MHUX", + "MIZX", + "MJCX", + "MKPB", + "MKUX", + "MKYX", + "MLDX", + "MMCX", + "MMMX", + "MNBX", + "MNCX", + "MNSX", + "MOGX", + "MOUX", + "MPCX", + "MPDX", + "MPRX", + "MRBX", + "MRTX", + "MSAX", + "MSBL", + "MSBX", + "MSCI", + "MSCX", + "MSHQ", + "MSLM", + "MSNU", + "MSNX", + "MSOX", + "MSSX", + "MUBL", + "MUBX", + "MUCX", + "MUDX", + "MUNX", + "MUPX", + "MURX", + "MUSX", + "MVCB", + "MVCX", + "MVIX", + "MYAX", + "MYSX", + "MZCX", + "MZRX", + "NABX", + "NACX", + "NAGX", + "NAIX", + "NALX", + "NANX", + "NASX", + "NATA", + "NAUX", + "NAVX", + "NAWX", + "NBAD", + "NBBX", + "NBCX", + "NBMX", + "NBRD", + "NCBL", + "NCBX", + "NCCX", + "NCOX", + "NCUB", + "NCUX", + "NDCB", + "NDCX", + "NDDX", + "NDGX", + "NDIX", + "NESF", + "NEYX", + "NGBX", + "NGKX", + "NGNX", + "NGRX", + "NGSB", + "NGSX", + "NICB", + "NIDX", + "NILX", + "NIRX", + "NIUX", + "NJBK", + "NJCX", + "NJGX", + "NJMX", + "NJSX", + "NKGS", + "NLGX", + "NLUX", + "NMCB", + "NMCX", + "NMGB", + "NNCX", + "NNSB", + "NNSX", + "NOBX", + "NOIX", + "NOSC", + "NPCX", + "NPKX", + "NRDX", + "NSBB", + "NSBX", + "NSCX", + "NSGX", + "NSIX", + "NSJX", + "NSMX", + "NSPB", + "NSPX", + "NSRX", + "NTBL", + "NUBX", + "NUCB", + "NUCX", + "NVCX", + "NVNM", + "NVSX", + "NWCX", + "ODCX", + "ODGB", + "OIBA", + "OMCX", + "ONSX", + "ORBC", + "ORCB", + "OSMX", + "PABX", + "PACX", + "PADX", + "PALX", + "PANX", + "PARX", + "PASX", + "PATX", + "PAYX", + "PBGX", + "PCBL", + "PCBX", + "PCCB", + "PCCX", + "PCLX", + "PCMX", + "PCOX", + "PCPX", + "PCSX", + "PCTX", + "PCUX", + "PDBX", + "PDCX", + "PDNX", + "PDSX", + "PDUX", + "PGBX", + "PGCX", + "PGRX", + "PGTX", + "PITX", + "PJSB", + "PKBX", + "PKDX", + "PKGB", + "PLOX", + "PLUX", + "PMCB", + "PMCX", + "PMEC", + "PMNX", + "PNCX", + "PNMX", + "PNPX", + "PNSX", + "PPBX", + "PPCX", + "PRCX", + "PREX", + "PROX", + "PRPX", + "PRSX", + "PRTH", + "PSBX", + "PSCX", + "PSIB", + "PSRX", + "PSSX", + "PTCX", + "PTNX", + "PTSX", + "PUBX", + "PUCB", + "PUCX", + "PUDX", + "PUGX", + "PUNB", + "PUNX", + "PURX", + "PUSD", + "PUSX", + "PUUX", + "PVAX", + "PVCX", + "PVVX", + "PWUX", + "PYCX", + "PYTM", + "QNBA", + "QUCX", + "RABO", + "RACX", + "RAEX", + "RAJX", + "RAKX", + "RAMX", + "RANX", + "RATN", + "RAUX", + "RBBX", + "RBCX", + "RBIS", + "RBIH", + "RCBX", + "RCCX", + "RCDX", + "RCMX", + "RCUX", + "RDCX", + "RDNX", + "REBX", + "RECX", + "REWX", + "RGCX", + "RGSX", + "RHMX", + "RJCX", + "RJJX", + "RJNX", + "RJTX", + "RKCX", + "RLUX", + "RMGB", + "RNBX", + "RNDX", + "RNGX", + "RNSB", + "RNSX", + "ROCX", + "ROHX", + "RPUX", + "RRBP", + "RRSX", + "RSBL", + "RSBX", + "RSCB", + "RSSX", + "RSUX", + "RSVX", + "RUCX", + "RUKX", + "RUMX", + "RZSX", + "SABR", + "SABX", + "SACB", + "SACX", + "SADX", + "SAGX", + "SAHE", + "SAHX", + "SAIX", + "SALX", + "SAMX", + "SANT", + "SANX", + "SAPX", + "SARX", + "SASA", + "SASX", + "SATX", + "SAUX", + "SAVX", + "SAWX", + "SBBJ", + "SBCX", + "SBHY", + "SBIN", + "SBKX", + "SBLD", + "SBLS", + "SBLX", + "SBMX", + "SBMY", + "SBNX", + "SBPX", + "SBSX", + "SBTR", + "SBUJ", + "SBUX", + "SCBL", + "SCBX", + "SCCX", + "SCDX", + "SCIX", + "SCNX", + "SCOB", + "SCOX", + "SCPX", + "SCSX", + "SCUX", + "SDBX", + "SDCB", + "SDCE", + "SDCX", + "SDHX", + "SDSX", + "SDTX", + "SDUX", + "SEMX", + "SENX", + "SEUX", + "SEWX", + "SGCX", + "SGLX", + "SGSX", + "SGUX", + "SHAX", + "SHBK", + "SHBX", + "SHCX", + "SHEX", + "SHGX", + "SHIX", + "SHKX", + "SHMX", + "SHNX", + "SHOX", + "SHRX", + "SHSX", + "SHUX", + "SIBL", + "SIBX", + "SICX", + "SIDB", + "SIDC", + "SIDX", + "SIGX", + "SIHX", + "SIKX", + "SINX", + "SIRX", + "SISX", + "SITX", + "SIWX", + "SJGX", + "SJSB", + "SJSX", + "SKCX", + "SKKX", + "SKNX", + "SKSB", + "SKUX", + "SLAX", + "SLCX", + "SMBC", + "SMBX", + "SMCB", + "SMCX", + "SMEX", + "SMMX", + "SMNX", + "SMPX", + "SMSX", + "SMTX", + "SMUX", + "SMVC", + "SMWX", + "SNAX", + "SNBK", + "SNBX", + "SNCX", + "SNDX", + "SNGX", + "SNKX", + "SNLX", + "SNPX", + "SNSV", + "SNSX", + "SOBX", + "SOGE", + "SOLX", + "SONX", + "SPBX", + "SPCB", + "SPCX", + "SPNX", + "SPSX", + "SPTX", + "SRCB", + "SRCX", + "SREX", + "SRGX", + "SRHX", + "SRSX", + "SSBL", + "SSBX", + "SSDX", + "SSHX", + "SSKX", + "SSLX", + "SSNX", + "SSOX", + "SSSX", + "SSWX", + "STBP", + "STCB", + "STCX", + "STDX", + "STRX", + "SUBX", + "SUCX", + "SUDX", + "SULX", + "SUMX", + "SUNB", + "SURX", + "SURY", + "SUSX", + "SUTB", + "SUVX", + "SVAX", + "SVBL", + "SVCB", + "SVCX", + "SVGX", + "SVNX", + "SVOX", + "SVRX", + "SVSH", + "SVSX", + "SWMX", + "SWSX", + "SYNB", + "TACX", + "TADX", + "TAMX", + "TAPX", + "TASX", + "TBCX", + "TBDX", + "TBHX", + "TBMX", + "TBPX", + "TBSB", + "TBSX", + "TBTX", + "TBUX", + "TCBX", + "TCCX", + "TCHX", + "TCPX", + "TCUB", + "TCUX", + "TDBX", + "TDCB", + "TDCX", + "TDIX", + "TDMX", + "TDPX", + "TDSX", + "TECX", + "TEHX", + "TEMX", + "TESX", + "TETX", + "TFCX", + "TGBX", + "TGCG", + "TGCX", + "TGDX", + "TGMB", + "TGNX", + "TGUX", + "THCX", + "THOX", + "THRS", + "THRX", + "THWX", + "TIDX", + "TIRX", + "TJAX", + "TJBX", + "TJCX", + "TJDX", + "TJMX", + "TJNX", + "TJSB", + "TKAX", + "TKCX", + "TKDX", + "TKTX", + "TKUX", + "TLPX", + "TMAX", + "TMBL", + "TMBX", + "TMCX", + "TMNX", + "TMPX", + "TMSC", + "TMSX", + "TMTX", + "TMUX", + "TNBX", + "TNCX", + "TNDC", + "TNEX", + "TNHX", + "TNIX", + "TNKX", + "TNMX", + "TNSC", + "TNUX", + "TOCX", + "TPCX", + "TPDX", + "TPSX", + "TPUX", + "TRAX", + "TRDX", + "TSAB", + "TSAX", + "TSBX", + "TSCX", + "TSDX", + "TSIX", + "TSMX", + "TSNX", + "TSPX", + "TSSB", + "TSSX", + "TSUX", + "TTBX", + "TTCB", + "TTCX", + "TTGX", + "TTLX", + "TTUX", + "TUBX", + "TUCL", + "TUCX", + "TUDX", + "TUMX", + "TUNX", + "TUOX", + "TUPX", + "TURX", + "TVBX", + "TVDX", + "TVPX", + "TVUX", + "TYCX", + "UBBX", + "UBGX", + "UBIN", + "UCBA", + "UCBS", + "UCBX", + "UCCX", + "UCDX", + "UCUX", + "UGBX", + "UICX", + "UJSX", + "UJVN", + "UKGX", + "UMAX", + "UMCX", + "UMSX", + "UMUX", + "UNAX", + "UNIX", + "UNMX", + "UNSX", + "UOVB", + "UPCB", + "UPCX", + "URBN", + "URCX", + "URDX", + "URMX", + "UROX", + "USFB", + "USNX", + "UTBI", + "UTBX", + "UTCX", + "UTGX", + "UTIB", + "UTKS", + "UTKX", + "UTZX", + "UUCX", + "VADX", + "VAIX", + "VANX", + "VARA", + "VASJ", + "VASX", + "VAUX", + "VCAX", + "VCBX", + "VCCX", + "VCNB", + "VCOB", + "VCOX", + "VDCX", + "VDYX", + "VEDX", + "VERX", + "VGBX", + "VHDX", + "VICX", + "VIDX", + "VIJB", + "VIJX", + "VIKX", + "VIMX", + "VIRX", + "VISX", + "VJSX", + "VKCX", + "VKSX", + "VMCX", + "VMMX", + "VMUX", + "VNSX", + "VRDX", + "VSBL", + "VSBX", + "VSCX", + "VSSX", + "VSVX", + "VUCX", + "VVCX", + "VVSB", + "VYAX", + "VYPX", + "VYSA", + "WACX", + "WAIX", + "WARX", + "WAUX", + "WBSC", + "WCBX", + "WDCX", + "WKGX", + "WNBX", + "WPAC", + "WRCX", + "WUCX", + "WZUX", + "XJKG", + "YADX", + "YAVX", + "YCBX", + "YDCX", + "YESB", + "YLNX", + "YMSX", + "YNCX", + "YNSX", + "ZBBX", + "ZBSX", + "ZCBL", + "ZIBX", + "ZILX", + "ZIMX", + "ZISX", + "ZLLX", + "ZRNB", + "ZMMX", + "ZSAX", + "ZSBL", + "ZSBX", + "ZSGX", + "ZSHX", + "ZSJX", + "ZSKX", + "ZSLX", + "ZSMX", +} + +type Bank struct { + Name string + BankCode string + Code string `json:"code"` + Type string `json:"type"` + IFSC string `json:"ifsc"` + MICR string `json:"micr"` + IIN string `json:"iin"` + APBS bool `json:"apbs"` + AchCredit bool `json:"ach_credit"` + AchDebit bool `json:"ach_debit"` + NachDebit bool `json:"nach_debit"` +} + +var bankData map[string]Bank + +func LoadBankData() { + if bankData == nil { + if err := LoadFile("../banks.json", &bankData); err != nil { + fmt.Println("there is some error in banknames.json file: ", err) + } + } +} + +func GetBankDetails(bankCode string) interface{} { + data, ok := bankData[bankCode] + if !ok { + return false + } + //data.Name = + // data.Code = + return data +} diff --git a/src/go/Client.go b/src/go/Client.go index 06ab7d0f..9b931a41 100644 --- a/src/go/Client.go +++ b/src/go/Client.go @@ -1 +1,63 @@ -package main +package ifsc + +import ( + "encoding/json" + "errors" + "io/ioutil" + "net/http" +) + +const API_BASE = "https://ifsc.razorpay.com" + +type IfscResponse struct { + Bank string `json:"BANK"` + Branch string `json:"BRANCH"` + Address string `json:"ADDRESS"` + Contact string `json:"CONTACT"` + City string `json:"CITY"` + Ifsc string `json:"IFSC"` + District string `json:"DISTRICT"` + State string `json:"STATE"` + BankCode string +} + +// LookUP fetches the response from ifsc api for +func LookUP(ifsc string) (*IfscResponse, error) { + var respStruct *IfscResponse + + resp, err := http.Get(API_BASE + "/" + ifsc) + if err != nil { + return nil, err + } + status := resp.StatusCode + if status == http.StatusOK { + respBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + err = json.Unmarshal(respBytes, &respStruct) + if err != nil { + return nil, err + } + //respStruct.SetBankCode() + + } else if status == http.StatusNotFound { + return nil, errors.New("InvalidCode") + } else { + return nil, errors.New("IFSC API returned invalid response") + } + + return respStruct, nil +} + +//func ( ifsc * IfscResponse) SetBankCode(){ +// +//} +// +//func (ifsc * IfscResponse) GetBankCode()string{ +// +//} +// +//func (ifsc * IfscResponse) GetBankName()string{ +// +//} diff --git a/src/go/Entity.go b/src/go/Entity.go deleted file mode 100644 index 06ab7d0f..00000000 --- a/src/go/Entity.go +++ /dev/null @@ -1 +0,0 @@ -package main diff --git a/src/go/IFSC.go b/src/go/IFSC.go index 21b34114..b7c66eb0 100644 --- a/src/go/IFSC.go +++ b/src/go/IFSC.go @@ -1,10 +1,12 @@ -package main +package ifsc import ( "encoding/json" "fmt" "io/ioutil" "os" + "path/filepath" + "runtime" "strconv" ) @@ -29,33 +31,50 @@ func (d *Data) UnmarshalJSON(input []byte) error { return err } d.Value = value + return nil } d.Value = strconv.Itoa(value) return nil } -func main() { - if err := loadFile("../IFSC.json", &ifsc); err != nil { - fmt.Println("there is some error in IFSC.json file: ", err) +func Init() { + LoadBankData() + //ifscPath := BasePath+"/src" + + if ifsc == nil { + if err := LoadFile("../IFSC.json", &ifsc); err != nil { + fmt.Println("there is some error in IFSC.json file: ", err) + } } - if err := loadFile("../sublet.json", &sublet); err != nil { - fmt.Println("there is some error in sublet.json file: ", err) + if sublet == nil { + if err := LoadFile("../sublet.json", &sublet); err != nil { + fmt.Println("there is some error in sublet.json file: ", err) + } } - if err := loadFile("../custom-sublets.json", &customSublets); err != nil { - fmt.Println("there is some error in custom-sublets.json file: ", err) + if customSublets == nil { + if err := LoadFile("../custom-sublets.json", &customSublets); err != nil { + fmt.Println("there is some error in custom-sublets.json file: ", err) + } } - if err := loadFile("../banknames.json", &bankNames); err != nil { - fmt.Println("there is some error in banknames.json file: ", err) + if bankNames == nil { + if err := LoadFile("../banknames.json", &bankNames); err != nil { + fmt.Println("there is some error in banknames.json file: ", err) + } } } -func loadFile(fileName string, result interface{}) error { +func LoadFile(fileName string, result interface{}) error { + pc, fileN, lineNo, ok := runtime.Caller(0) + fmt.Println("values:", pc, fileN, lineNo, ok) basePath, err := os.Getwd() + fmt.Println(filepath.Base(basePath), filepath.Dir(basePath)) + if err != nil { return err } completePath := fmt.Sprintf("%s/%s", basePath, fileName) - bytes, err := ioutil.ReadFile(completePath) + absPath, _ := filepath.Abs(completePath) + bytes, err := ioutil.ReadFile(absPath) if err != nil { return err } @@ -64,3 +83,9 @@ func loadFile(fileName string, result interface{}) error { } return nil } +func validateBankCode(code string) bool { + return true +} +func GetBankName(code string) string { + return "true" +} diff --git a/src/go/Makefile b/src/go/Makefile new file mode 100644 index 00000000..8fccb263 --- /dev/null +++ b/src/go/Makefile @@ -0,0 +1,3 @@ +.PHONY: build +build: + go build -v -o ./bin/main ./cmd/main.go diff --git a/src/go/go.mod b/src/go/go.mod new file mode 100644 index 00000000..1d57d356 --- /dev/null +++ b/src/go/go.mod @@ -0,0 +1,3 @@ +module github.com/gyanesh-m/ifsc/src/go + +go 1.13 diff --git a/src/go/go.sum b/src/go/go.sum new file mode 100644 index 00000000..afe7890c --- /dev/null +++ b/src/go/go.sum @@ -0,0 +1,11 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 167602bc2b851c81e47348b7256bdc08ec64bfe1 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Sun, 14 Jun 2020 03:24:57 +0530 Subject: [PATCH 03/24] update go.mod. --- src/go/go.mod | 2 ++ src/go/go.sum | 13 ++----------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/go/go.mod b/src/go/go.mod index 1d57d356..ada3eefa 100644 --- a/src/go/go.mod +++ b/src/go/go.mod @@ -1,3 +1,5 @@ module github.com/gyanesh-m/ifsc/src/go go 1.13 + +require github.com/gyanesh-m/ifsc v0.0.0-20200613204348-f54518a9f0ce // indirect diff --git a/src/go/go.sum b/src/go/go.sum index afe7890c..2dc09af0 100644 --- a/src/go/go.sum +++ b/src/go/go.sum @@ -1,11 +1,2 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +github.com/gyanesh-m/ifsc v0.0.0-20200613204348-f54518a9f0ce h1:QWJflxM8qIt3xsl/LnqffJlIioIcx9ESMNhiTb7DOEY= +github.com/gyanesh-m/ifsc v0.0.0-20200613204348-f54518a9f0ce/go.mod h1:EPfbubZIihFGaZeAIN8pNP6ffuOQSHSMza+S1SYtfQs= From 09ed0be15e39043657749458464c5e2f548b03d2 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Sun, 14 Jun 2020 12:05:45 +0530 Subject: [PATCH 04/24] update loadFile & go.mod --- src/go/Bank.go | 2 +- src/go/IFSC.go | 31 +++++++++++++------------------ src/go/go.mod | 2 -- src/go/go.sum | 2 -- 4 files changed, 14 insertions(+), 23 deletions(-) delete mode 100644 src/go/go.sum diff --git a/src/go/Bank.go b/src/go/Bank.go index f1641cc5..65278a83 100644 --- a/src/go/Bank.go +++ b/src/go/Bank.go @@ -1447,7 +1447,7 @@ var bankData map[string]Bank func LoadBankData() { if bankData == nil { - if err := LoadFile("../banks.json", &bankData); err != nil { + if err := LoadFile("banks.json", &bankData); err != nil { fmt.Println("there is some error in banknames.json file: ", err) } } diff --git a/src/go/IFSC.go b/src/go/IFSC.go index b7c66eb0..a2ead3c8 100644 --- a/src/go/IFSC.go +++ b/src/go/IFSC.go @@ -2,10 +2,10 @@ package ifsc import ( "encoding/json" + "errors" "fmt" "io/ioutil" - "os" - "path/filepath" + "path" "runtime" "strconv" ) @@ -39,42 +39,37 @@ func (d *Data) UnmarshalJSON(input []byte) error { func Init() { LoadBankData() - //ifscPath := BasePath+"/src" - if ifsc == nil { - if err := LoadFile("../IFSC.json", &ifsc); err != nil { + if err := LoadFile("IFSC.json", &ifsc); err != nil { fmt.Println("there is some error in IFSC.json file: ", err) } } if sublet == nil { - if err := LoadFile("../sublet.json", &sublet); err != nil { + if err := LoadFile("sublet.json", &sublet); err != nil { fmt.Println("there is some error in sublet.json file: ", err) } } if customSublets == nil { - if err := LoadFile("../custom-sublets.json", &customSublets); err != nil { + if err := LoadFile("custom-sublets.json", &customSublets); err != nil { fmt.Println("there is some error in custom-sublets.json file: ", err) } } if bankNames == nil { - if err := LoadFile("../banknames.json", &bankNames); err != nil { + if err := LoadFile("banknames.json", &bankNames); err != nil { fmt.Println("there is some error in banknames.json file: ", err) } } } func LoadFile(fileName string, result interface{}) error { - pc, fileN, lineNo, ok := runtime.Caller(0) - fmt.Println("values:", pc, fileN, lineNo, ok) - basePath, err := os.Getwd() - fmt.Println(filepath.Base(basePath), filepath.Dir(basePath)) - - if err != nil { - return err + _, fileN, _, ok := runtime.Caller(0) + if !ok{ + return errors.New("it was not possible to recover the information. Caller function error") } - completePath := fmt.Sprintf("%s/%s", basePath, fileName) - absPath, _ := filepath.Abs(completePath) - bytes, err := ioutil.ReadFile(absPath) + dir, _:= path.Split(fileN) + jsonDir := path.Join(dir, "..") + completePath := path.Join( jsonDir, fileName) + bytes, err := ioutil.ReadFile(completePath) if err != nil { return err } diff --git a/src/go/go.mod b/src/go/go.mod index ada3eefa..1d57d356 100644 --- a/src/go/go.mod +++ b/src/go/go.mod @@ -1,5 +1,3 @@ module github.com/gyanesh-m/ifsc/src/go go 1.13 - -require github.com/gyanesh-m/ifsc v0.0.0-20200613204348-f54518a9f0ce // indirect diff --git a/src/go/go.sum b/src/go/go.sum deleted file mode 100644 index 2dc09af0..00000000 --- a/src/go/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/gyanesh-m/ifsc v0.0.0-20200613204348-f54518a9f0ce h1:QWJflxM8qIt3xsl/LnqffJlIioIcx9ESMNhiTb7DOEY= -github.com/gyanesh-m/ifsc v0.0.0-20200613204348-f54518a9f0ce/go.mod h1:EPfbubZIihFGaZeAIN8pNP6ffuOQSHSMza+S1SYtfQs= From 30ddba621543050f2747fa95e6efa965f147e6fd Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Sun, 14 Jun 2020 13:06:16 +0530 Subject: [PATCH 05/24] relocate go.mod. --- .gitignore | 6 ++++++ src/go.mod | 3 +++ src/go/Makefile | 3 --- src/go/go.mod | 3 --- 4 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 src/go.mod delete mode 100644 src/go/Makefile delete mode 100644 src/go/go.mod diff --git a/.gitignore b/.gitignore index 0fbf8056..0760a1a3 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,9 @@ InstalledFiles # One-off scripts *.php + +# IDE files +.idea/* + +# Temp files +.*~ diff --git a/src/go.mod b/src/go.mod new file mode 100644 index 00000000..a6eeec89 --- /dev/null +++ b/src/go.mod @@ -0,0 +1,3 @@ +module github.com/gyanesh-m/ifsc/src + +go 1.13 diff --git a/src/go/Makefile b/src/go/Makefile deleted file mode 100644 index 8fccb263..00000000 --- a/src/go/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -.PHONY: build -build: - go build -v -o ./bin/main ./cmd/main.go diff --git a/src/go/go.mod b/src/go/go.mod deleted file mode 100644 index 1d57d356..00000000 --- a/src/go/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/gyanesh-m/ifsc/src/go - -go 1.13 From 04dddb65f0b333452b58881afb4d27d290e56a17 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Sun, 14 Jun 2020 18:23:06 +0530 Subject: [PATCH 06/24] add validation, sublet(custom) support. --- src/go/Bank.go | 2865 +++++++++++++++++++++++----------------------- src/go/Client.go | 38 +- src/go/IFSC.go | 93 +- 3 files changed, 1541 insertions(+), 1455 deletions(-) diff --git a/src/go/Bank.go b/src/go/Bank.go index 65278a83..0c6e9875 100644 --- a/src/go/Bank.go +++ b/src/go/Bank.go @@ -2,1436 +2,1437 @@ package ifsc import ( "fmt" + "log" ) -var bankCodes = []string{ - "AACX", - "ABBL", - "ABCX", - "ABDX", - "ABEX", - "ABHY", - "ABNA", - "ABPB", - "ABSB", - "ABUX", - "ACAX", - "ACBX", - "ACCX", - "ACKX", - "ACOX", - "ACUB", - "ACUX", - "ADBX", - "ADCB", - "ADCC", - "ADCX", - "ADDX", - "AGCX", - "AGDX", - "AGRX", - "AGSX", - "AGUX", - "AGVX", - "AHMX", - "AHUX", - "AIRP", - "AJAR", - "AJHC", - "AJKB", - "AJMX", - "AJNX", - "AJPX", - "AJSX", - "AJUX", - "AKJB", - "AKMX", - "AKOX", - "ALAX", - "ALIX", - "ALLA", - "ALLX", - "ALWX", - "AMAX", - "AMBX", - "AMCB", - "AMCX", - "AMDN", - "AMMX", - "AMNX", - "AMRX", - "AMSB", - "AMSX", - "ANBX", - "ANDB", - "ANDX", - "ANMX", - "ANSX", - "ANUX", - "ANZB", - "APBL", - "APCX", - "APGB", - "APGV", - "APGX", - "APJX", - "APMC", - "APMX", - "APNX", - "APRX", - "APSX", - "ARCX", - "ARMX", - "ARYX", - "ASBL", - "ASBX", - "ASHX", - "ASKX", - "ASNX", - "ASOX", - "ASSX", - "AUBL", - "AUBX", - "AUCB", - "AUCX", - "AUGX", - "AURX", - "AVDX", - "AWCX", - "AWUX", - "AZAX", - "AZPX", - "AZSX", - "AZUX", - "BACB", - "BACX", - "BADX", - "BALX", - "BANX", - "BARA", - "BARB", - "BARC", - "BARX", - "BASX", - "BAUX", - "BAVX", - "BBKM", - "BBLX", - "BBRX", - "BBSX", - "BBUX", - "BBVX", - "BCBM", - "BCBX", - "BCCB", - "BCCX", - "BCEX", - "BCEY", - "BCOX", - "BCUB", - "BCUX", - "BDBL", - "BDBX", - "BDCX", - "BDDX", - "BDIX", - "BDNX", - "BDOX", - "BDUX", - "BEDX", - "BELX", - "BFUX", - "BGBX", - "BGCX", - "BGGX", - "BGUX", - "BGVX", - "BHAX", - "BHBX", - "BHCX", - "BHDX", - "BHEX", - "BHGX", - "BHIX", - "BHJX", - "BHMX", - "BHOX", - "BHRX", - "BHSX", - "BHTX", - "BHUX", - "BHWX", - "BJUX", - "BKCX", - "BKDN", - "BKDX", - "BKID", - "BKSX", - "BLGX", - "BMBL", - "BMCB", - "BMCX", - "BMPX", - "BMSX", - "BNBX", - "BNCX", - "BNPA", - "BNSB", - "BNSX", - "BODX", - "BOFA", - "BORX", - "BOTM", - "BOTX", - "BPCX", - "BPSX", - "BRCX", - "BRDX", - "BRGX", - "BRMX", - "BRSX", - "BRUX", - "BSBX", - "BSCX", - "BTCX", - "BTUX", - "BUBX", - "BUCL", - "BUCX", - "BUGX", - "BUNX", - "BURX", - "BUSX", - "BUZX", - "BVNX", - "BVSX", - "BWCX", - "CALX", - "CBHX", - "CBIN", - "CCBL", - "CCBX", - "CCCX", - "CCMX", - "CCOB", - "CCUX", - "CDCX", - "CEBX", - "CGBX", - "CGGX", - "CHAS", - "CHAX", - "CHBX", - "CHCX", - "CHDX", - "CHIX", - "CHKX", - "CHPX", - "CHRX", - "CHSX", - "CHTX", - "CIDX", - "CITI", - "CITX", - "CIUB", - "CJAX", - "CJMX", - "CLBL", - "CMCB", - "CMCX", - "CMDX", - "CMLX", - "CMPX", - "CNRB", - "CNSX", - "COCX", - "COLX", - "COMX", - "CONX", - "CORP", - "COSB", - "CPDX", - "CPSN", - "CRBX", - "CRES", - "CRLY", - "CRSX", - "CRUB", - "CSBK", - "CSBX", - "CTBA", - "CTBX", - "CTCB", - "CTOX", - "CTUX", - "CUBX", - "CUCX", - "CURX", - "CZCX", - "CZUX", - "DAAX", - "DAHX", - "DAUX", - "DBAX", - "DBSS", - "DCBL", - "DCBX", - "DCCX", - "DCDX", - "DCEX", - "DCKX", - "DCMX", - "DCNX", - "DCPX", - "DCSX", - "DCTX", - "DCUX", - "DDBX", - "DDCX", - "DDDX", - "DDHX", - "DEGX", - "DENS", - "DEOB", - "DEOX", - "DEUT", - "DEUX", - "DEVX", - "DGBX", - "DHBX", - "DHKX", - "DHUX", - "DIBX", - "DICG", - "DICX", - "DIUX", - "DJCX", - "DKCL", - "DKSX", - "DLSC", - "DLXB", - "DMCB", - "DMCX", - "DMKB", - "DMKJ", - "DNSB", - "DNSX", - "DOBX", - "DOHB", - "DRGX", - "DSBX", - "DSCB", - "DSHX", - "DSPX", - "DSUX", - "DTCX", - "DTPX", - "DUCX", - "DUMX", - "DUNX", - "DURG", - "DVDX", - "DYPX", - "EBIL", - "ECBL", - "EDBX", - "EDCX", - "EDSX", - "EIBI", - "ESAF", - "ESFB", - "ESMF", - "ETCX", - "ETDX", - "EUCX", - "EWCX", - "FCBX", - "FCCX", - "FCOX", - "FDFX", - "FDRL", - "FEKX", - "FGCB", - "FINO", - "FINF", - "FINX", - "FIRN", - "FIRX", - "FMCX", - "FRIX", - "FSCX", - "FSFB", - "FZCX", - "FZSX", - "GACX", - "GADX", - "GANX", - "GBCB", - "GCBX", - "GCCX", - "GCUL", - "GCUX", - "GDCB", - "GDCX", - "GDDX", - "GDUX", - "GGBK", - "GGCX", - "GHPX", - "GKNX", - "GMBX", - "GMCX", - "GMUX", - "GNCX", - "GNSX", - "GODX", - "GOSX", - "GPCX", - "GPOX", - "GRAX", - "GSBL", - "GSBX", - "GSCB", - "GSCX", - "GSSX", - "GTCX", - "GUBX", - "GUCX", - "GUNX", - "GUOX", - "HAMX", - "HANX", - "HARC", - "HCBL", - "HCBX", - "HCCX", - "HCLX", - "HDCX", - "HDFC", - "HGBX", - "HINX", - "HISX", - "HMBX", - "HMNX", - "HOCX", - "HOOX", - "HPCX", - "HPSC", - "HPSX", - "HSBC", - "HSBX", - "HSCX", - "HSDX", - "HSSX", - "HUBX", - "HUCX", - "HUTX", - "HVBK", - "IBBK", - "IBKL", - "IBKO", - "ICBK", - "ICBL", - "ICHX", - "ICIC", - "ICMX", - "IDFB", - "IDIB", - "IDUK", - "IDUX", - "ILCB", - "IMPX", - "INCX", - "INDB", - "INDX", - "IOBA", - "IPCX", - "IPOS", - "IPPB", - "IPSX", - "ISBX", - "ISMX", - "ITBL", - "ITCX", - "ITDX", - "IUCB", - "IUCX", - "JACX", - "JAKA", - "JALX", - "JAMX", - "JANA", - "JANX", - "JASB", - "JASX", - "JAUX", - "JBHX", - "JBIX", - "JBMX", - "JCBX", - "JCCB", - "JCCX", - "JCDX", - "JCHX", - "JCPX", - "JCUX", - "JDCX", - "JDEX", - "JGBX", - "JGCX", - "JGWX", - "JHAX", - "JHSX", - "JHUX", - "JIBX", - "JICX", - "JIDX", - "JIGX", - "JIKX", - "JIMX", - "JINX", - "JIOP", - "JIOX", - "JIRX", - "JISX", - "JIVX", - "JJCX", - "JJHX", - "JJSB", - "JKAX", - "JKCX", - "JKDX", - "JKEX", - "JKHX", - "JKMX", - "JKRX", - "JKSX", - "JLCX", - "JLDX", - "JLNX", - "JLSX", - "JLWX", - "JMAX", - "JMBX", - "JMCX", - "JMDX", - "JMHX", - "JMMX", - "JMOX", - "JMPX", - "JMSX", - "JMYX", - "JNAX", - "JNDX", - "JNSX", - "JODX", - "JONX", - "JOWX", - "JPAX", - "JPCB", - "JPCX", - "JRAX", - "JRKX", - "JRNX", - "JRSX", - "JSAB", - "JSAX", - "JSBL", - "JSBP", - "JSBX", - "JSCX", - "JSDX", - "JSEX", - "JSFB", - "JSHX", - "JSKX", - "JSMX", - "JSOX", - "JSRX", - "JSTX", - "JSVX", - "JSWX", - "JTIX", - "JTSX", - "JUCX", - "JUSX", - "JVCX", - "KAAX", - "KACE", - "KACX", - "KADX", - "KAGX", - "KAIJ", - "KALX", - "KAMX", - "KANG", - "KANX", - "KARB", - "KARX", - "KASX", - "KATX", - "KAYX", - "KBCX", - "KBNX", - "KBSX", - "KCBL", - "KCBX", - "KCCB", - "KCCX", - "KCDX", - "KCEX", - "KCOB", - "KCUB", - "KCUX", - "KDBX", - "KDCB", - "KDCX", - "KDIX", - "KDNX", - "KDUX", - "KEMX", - "KESX", - "KGBX", - "KGDX", - "KGRB", - "KGSX", - "KHAX", - "KHCX", - "KHDX", - "KHNX", - "KHUX", - "KICX", - "KJSB", - "KJSX", - "KKBK", - "KKMX", - "KKSX", - "KLGB", - "KLMX", - "KMCB", - "KMCX", - "KMNX", - "KMSX", - "KNBX", - "KNCX", - "KNNX", - "KNPX", - "KNSB", - "KNSX", - "KOBX", - "KOCX", - "KODX", - "KOEX", - "KOLH", - "KOSX", - "KOTX", - "KOYX", - "KPCX", - "KRCX", - "KRDX", - "KRIX", - "KRMX", - "KRNX", - "KRTH", - "KRTX", - "KSBK", - "KSBX", - "KSCB", - "KSCX", - "KSMX", - "KSNX", - "KSTX", - "KSUX", - "KTBX", - "KTCX", - "KTDX", - "KTTX", - "KUBX", - "KUCB", - "KUCX", - "KUKX", - "KULX", - "KUMX", - "KUNS", - "KURX", - "KVBL", - "KVCX", - "KVGB", - "KYDX", - "LACX", - "LATX", - "LAVB", - "LBMX", - "LCBX", - "LCCX", - "LDCX", - "LDPX", - "LDRX", - "LECX", - "LICB", - "LKBL", - "LKCX", - "LKHX", - "LKMX", - "LMNX", - "LNSX", - "LOKX", - "LONX", - "LUCX", - "LULX", - "MABL", - "MACX", - "MADX", - "MAGX", - "MAHB", - "MAHG", - "MAHX", - "MAJX", - "MAKX", - "MALX", - "MAMX", - "MANX", - "MAPX", - "MASX", - "MAUX", - "MAVX", - "MAYX", - "MBCX", - "MBGX", - "MBLX", - "MCAX", - "MCBL", - "MCBX", - "MCCX", - "MCDX", - "MCLX", - "MCOX", - "MCSX", - "MCUX", - "MDCB", - "MDCX", - "MDEX", - "MDGX", - "MDIX", - "MDMX", - "MDPX", - "MEDX", - "MERX", - "MEUX", - "MFCX", - "MFUX", - "MGBX", - "MGCB", - "MGCX", - "MGDX", - "MGRB", - "MGSX", - "MGUX", - "MHCB", - "MHCX", - "MHEX", - "MHLX", - "MHMX", - "MHNX", - "MHSX", - "MHUX", - "MIZX", - "MJCX", - "MKPB", - "MKUX", - "MKYX", - "MLDX", - "MMCX", - "MMMX", - "MNBX", - "MNCX", - "MNSX", - "MOGX", - "MOUX", - "MPCX", - "MPDX", - "MPRX", - "MRBX", - "MRTX", - "MSAX", - "MSBL", - "MSBX", - "MSCI", - "MSCX", - "MSHQ", - "MSLM", - "MSNU", - "MSNX", - "MSOX", - "MSSX", - "MUBL", - "MUBX", - "MUCX", - "MUDX", - "MUNX", - "MUPX", - "MURX", - "MUSX", - "MVCB", - "MVCX", - "MVIX", - "MYAX", - "MYSX", - "MZCX", - "MZRX", - "NABX", - "NACX", - "NAGX", - "NAIX", - "NALX", - "NANX", - "NASX", - "NATA", - "NAUX", - "NAVX", - "NAWX", - "NBAD", - "NBBX", - "NBCX", - "NBMX", - "NBRD", - "NCBL", - "NCBX", - "NCCX", - "NCOX", - "NCUB", - "NCUX", - "NDCB", - "NDCX", - "NDDX", - "NDGX", - "NDIX", - "NESF", - "NEYX", - "NGBX", - "NGKX", - "NGNX", - "NGRX", - "NGSB", - "NGSX", - "NICB", - "NIDX", - "NILX", - "NIRX", - "NIUX", - "NJBK", - "NJCX", - "NJGX", - "NJMX", - "NJSX", - "NKGS", - "NLGX", - "NLUX", - "NMCB", - "NMCX", - "NMGB", - "NNCX", - "NNSB", - "NNSX", - "NOBX", - "NOIX", - "NOSC", - "NPCX", - "NPKX", - "NRDX", - "NSBB", - "NSBX", - "NSCX", - "NSGX", - "NSIX", - "NSJX", - "NSMX", - "NSPB", - "NSPX", - "NSRX", - "NTBL", - "NUBX", - "NUCB", - "NUCX", - "NVCX", - "NVNM", - "NVSX", - "NWCX", - "ODCX", - "ODGB", - "OIBA", - "OMCX", - "ONSX", - "ORBC", - "ORCB", - "OSMX", - "PABX", - "PACX", - "PADX", - "PALX", - "PANX", - "PARX", - "PASX", - "PATX", - "PAYX", - "PBGX", - "PCBL", - "PCBX", - "PCCB", - "PCCX", - "PCLX", - "PCMX", - "PCOX", - "PCPX", - "PCSX", - "PCTX", - "PCUX", - "PDBX", - "PDCX", - "PDNX", - "PDSX", - "PDUX", - "PGBX", - "PGCX", - "PGRX", - "PGTX", - "PITX", - "PJSB", - "PKBX", - "PKDX", - "PKGB", - "PLOX", - "PLUX", - "PMCB", - "PMCX", - "PMEC", - "PMNX", - "PNCX", - "PNMX", - "PNPX", - "PNSX", - "PPBX", - "PPCX", - "PRCX", - "PREX", - "PROX", - "PRPX", - "PRSX", - "PRTH", - "PSBX", - "PSCX", - "PSIB", - "PSRX", - "PSSX", - "PTCX", - "PTNX", - "PTSX", - "PUBX", - "PUCB", - "PUCX", - "PUDX", - "PUGX", - "PUNB", - "PUNX", - "PURX", - "PUSD", - "PUSX", - "PUUX", - "PVAX", - "PVCX", - "PVVX", - "PWUX", - "PYCX", - "PYTM", - "QNBA", - "QUCX", - "RABO", - "RACX", - "RAEX", - "RAJX", - "RAKX", - "RAMX", - "RANX", - "RATN", - "RAUX", - "RBBX", - "RBCX", - "RBIS", - "RBIH", - "RCBX", - "RCCX", - "RCDX", - "RCMX", - "RCUX", - "RDCX", - "RDNX", - "REBX", - "RECX", - "REWX", - "RGCX", - "RGSX", - "RHMX", - "RJCX", - "RJJX", - "RJNX", - "RJTX", - "RKCX", - "RLUX", - "RMGB", - "RNBX", - "RNDX", - "RNGX", - "RNSB", - "RNSX", - "ROCX", - "ROHX", - "RPUX", - "RRBP", - "RRSX", - "RSBL", - "RSBX", - "RSCB", - "RSSX", - "RSUX", - "RSVX", - "RUCX", - "RUKX", - "RUMX", - "RZSX", - "SABR", - "SABX", - "SACB", - "SACX", - "SADX", - "SAGX", - "SAHE", - "SAHX", - "SAIX", - "SALX", - "SAMX", - "SANT", - "SANX", - "SAPX", - "SARX", - "SASA", - "SASX", - "SATX", - "SAUX", - "SAVX", - "SAWX", - "SBBJ", - "SBCX", - "SBHY", - "SBIN", - "SBKX", - "SBLD", - "SBLS", - "SBLX", - "SBMX", - "SBMY", - "SBNX", - "SBPX", - "SBSX", - "SBTR", - "SBUJ", - "SBUX", - "SCBL", - "SCBX", - "SCCX", - "SCDX", - "SCIX", - "SCNX", - "SCOB", - "SCOX", - "SCPX", - "SCSX", - "SCUX", - "SDBX", - "SDCB", - "SDCE", - "SDCX", - "SDHX", - "SDSX", - "SDTX", - "SDUX", - "SEMX", - "SENX", - "SEUX", - "SEWX", - "SGCX", - "SGLX", - "SGSX", - "SGUX", - "SHAX", - "SHBK", - "SHBX", - "SHCX", - "SHEX", - "SHGX", - "SHIX", - "SHKX", - "SHMX", - "SHNX", - "SHOX", - "SHRX", - "SHSX", - "SHUX", - "SIBL", - "SIBX", - "SICX", - "SIDB", - "SIDC", - "SIDX", - "SIGX", - "SIHX", - "SIKX", - "SINX", - "SIRX", - "SISX", - "SITX", - "SIWX", - "SJGX", - "SJSB", - "SJSX", - "SKCX", - "SKKX", - "SKNX", - "SKSB", - "SKUX", - "SLAX", - "SLCX", - "SMBC", - "SMBX", - "SMCB", - "SMCX", - "SMEX", - "SMMX", - "SMNX", - "SMPX", - "SMSX", - "SMTX", - "SMUX", - "SMVC", - "SMWX", - "SNAX", - "SNBK", - "SNBX", - "SNCX", - "SNDX", - "SNGX", - "SNKX", - "SNLX", - "SNPX", - "SNSV", - "SNSX", - "SOBX", - "SOGE", - "SOLX", - "SONX", - "SPBX", - "SPCB", - "SPCX", - "SPNX", - "SPSX", - "SPTX", - "SRCB", - "SRCX", - "SREX", - "SRGX", - "SRHX", - "SRSX", - "SSBL", - "SSBX", - "SSDX", - "SSHX", - "SSKX", - "SSLX", - "SSNX", - "SSOX", - "SSSX", - "SSWX", - "STBP", - "STCB", - "STCX", - "STDX", - "STRX", - "SUBX", - "SUCX", - "SUDX", - "SULX", - "SUMX", - "SUNB", - "SURX", - "SURY", - "SUSX", - "SUTB", - "SUVX", - "SVAX", - "SVBL", - "SVCB", - "SVCX", - "SVGX", - "SVNX", - "SVOX", - "SVRX", - "SVSH", - "SVSX", - "SWMX", - "SWSX", - "SYNB", - "TACX", - "TADX", - "TAMX", - "TAPX", - "TASX", - "TBCX", - "TBDX", - "TBHX", - "TBMX", - "TBPX", - "TBSB", - "TBSX", - "TBTX", - "TBUX", - "TCBX", - "TCCX", - "TCHX", - "TCPX", - "TCUB", - "TCUX", - "TDBX", - "TDCB", - "TDCX", - "TDIX", - "TDMX", - "TDPX", - "TDSX", - "TECX", - "TEHX", - "TEMX", - "TESX", - "TETX", - "TFCX", - "TGBX", - "TGCG", - "TGCX", - "TGDX", - "TGMB", - "TGNX", - "TGUX", - "THCX", - "THOX", - "THRS", - "THRX", - "THWX", - "TIDX", - "TIRX", - "TJAX", - "TJBX", - "TJCX", - "TJDX", - "TJMX", - "TJNX", - "TJSB", - "TKAX", - "TKCX", - "TKDX", - "TKTX", - "TKUX", - "TLPX", - "TMAX", - "TMBL", - "TMBX", - "TMCX", - "TMNX", - "TMPX", - "TMSC", - "TMSX", - "TMTX", - "TMUX", - "TNBX", - "TNCX", - "TNDC", - "TNEX", - "TNHX", - "TNIX", - "TNKX", - "TNMX", - "TNSC", - "TNUX", - "TOCX", - "TPCX", - "TPDX", - "TPSX", - "TPUX", - "TRAX", - "TRDX", - "TSAB", - "TSAX", - "TSBX", - "TSCX", - "TSDX", - "TSIX", - "TSMX", - "TSNX", - "TSPX", - "TSSB", - "TSSX", - "TSUX", - "TTBX", - "TTCB", - "TTCX", - "TTGX", - "TTLX", - "TTUX", - "TUBX", - "TUCL", - "TUCX", - "TUDX", - "TUMX", - "TUNX", - "TUOX", - "TUPX", - "TURX", - "TVBX", - "TVDX", - "TVPX", - "TVUX", - "TYCX", - "UBBX", - "UBGX", - "UBIN", - "UCBA", - "UCBS", - "UCBX", - "UCCX", - "UCDX", - "UCUX", - "UGBX", - "UICX", - "UJSX", - "UJVN", - "UKGX", - "UMAX", - "UMCX", - "UMSX", - "UMUX", - "UNAX", - "UNIX", - "UNMX", - "UNSX", - "UOVB", - "UPCB", - "UPCX", - "URBN", - "URCX", - "URDX", - "URMX", - "UROX", - "USFB", - "USNX", - "UTBI", - "UTBX", - "UTCX", - "UTGX", - "UTIB", - "UTKS", - "UTKX", - "UTZX", - "UUCX", - "VADX", - "VAIX", - "VANX", - "VARA", - "VASJ", - "VASX", - "VAUX", - "VCAX", - "VCBX", - "VCCX", - "VCNB", - "VCOB", - "VCOX", - "VDCX", - "VDYX", - "VEDX", - "VERX", - "VGBX", - "VHDX", - "VICX", - "VIDX", - "VIJB", - "VIJX", - "VIKX", - "VIMX", - "VIRX", - "VISX", - "VJSX", - "VKCX", - "VKSX", - "VMCX", - "VMMX", - "VMUX", - "VNSX", - "VRDX", - "VSBL", - "VSBX", - "VSCX", - "VSSX", - "VSVX", - "VUCX", - "VVCX", - "VVSB", - "VYAX", - "VYPX", - "VYSA", - "WACX", - "WAIX", - "WARX", - "WAUX", - "WBSC", - "WCBX", - "WDCX", - "WKGX", - "WNBX", - "WPAC", - "WRCX", - "WUCX", - "WZUX", - "XJKG", - "YADX", - "YAVX", - "YCBX", - "YDCX", - "YESB", - "YLNX", - "YMSX", - "YNCX", - "YNSX", - "ZBBX", - "ZBSX", - "ZCBL", - "ZIBX", - "ZILX", - "ZIMX", - "ZISX", - "ZLLX", - "ZRNB", - "ZMMX", - "ZSAX", - "ZSBL", - "ZSBX", - "ZSGX", - "ZSHX", - "ZSJX", - "ZSKX", - "ZSLX", - "ZSMX", +var bankCodes = map[string]int { + "AACX":1, + "ABBL":1, + "ABCX":1, + "ABDX":1, + "ABEX":1, + "ABHY":1, + "ABNA":1, + "ABPB":1, + "ABSB":1, + "ABUX":1, + "ACAX":1, + "ACBX":1, + "ACCX":1, + "ACKX":1, + "ACOX":1, + "ACUB":1, + "ACUX":1, + "ADBX":1, + "ADCB":1, + "ADCC":1, + "ADCX":1, + "ADDX":1, + "AGCX":1, + "AGDX":1, + "AGRX":1, + "AGSX":1, + "AGUX":1, + "AGVX":1, + "AHMX":1, + "AHUX":1, + "AIRP":1, + "AJAR":1, + "AJHC":1, + "AJKB":1, + "AJMX":1, + "AJNX":1, + "AJPX":1, + "AJSX":1, + "AJUX":1, + "AKJB":1, + "AKMX":1, + "AKOX":1, + "ALAX":1, + "ALIX":1, + "ALLA":1, + "ALLX":1, + "ALWX":1, + "AMAX":1, + "AMBX":1, + "AMCB":1, + "AMCX":1, + "AMDN":1, + "AMMX":1, + "AMNX":1, + "AMRX":1, + "AMSB":1, + "AMSX":1, + "ANBX":1, + "ANDB":1, + "ANDX":1, + "ANMX":1, + "ANSX":1, + "ANUX":1, + "ANZB":1, + "APBL":1, + "APCX":1, + "APGB":1, + "APGV":1, + "APGX":1, + "APJX":1, + "APMC":1, + "APMX":1, + "APNX":1, + "APRX":1, + "APSX":1, + "ARCX":1, + "ARMX":1, + "ARYX":1, + "ASBL":1, + "ASBX":1, + "ASHX":1, + "ASKX":1, + "ASNX":1, + "ASOX":1, + "ASSX":1, + "AUBL":1, + "AUBX":1, + "AUCB":1, + "AUCX":1, + "AUGX":1, + "AURX":1, + "AVDX":1, + "AWCX":1, + "AWUX":1, + "AZAX":1, + "AZPX":1, + "AZSX":1, + "AZUX":1, + "BACB":1, + "BACX":1, + "BADX":1, + "BALX":1, + "BANX":1, + "BARA":1, + "BARB":1, + "BARC":1, + "BARX":1, + "BASX":1, + "BAUX":1, + "BAVX":1, + "BBKM":1, + "BBLX":1, + "BBRX":1, + "BBSX":1, + "BBUX":1, + "BBVX":1, + "BCBM":1, + "BCBX":1, + "BCCB":1, + "BCCX":1, + "BCEX":1, + "BCEY":1, + "BCOX":1, + "BCUB":1, + "BCUX":1, + "BDBL":1, + "BDBX":1, + "BDCX":1, + "BDDX":1, + "BDIX":1, + "BDNX":1, + "BDOX":1, + "BDUX":1, + "BEDX":1, + "BELX":1, + "BFUX":1, + "BGBX":1, + "BGCX":1, + "BGGX":1, + "BGUX":1, + "BGVX":1, + "BHAX":1, + "BHBX":1, + "BHCX":1, + "BHDX":1, + "BHEX":1, + "BHGX":1, + "BHIX":1, + "BHJX":1, + "BHMX":1, + "BHOX":1, + "BHRX":1, + "BHSX":1, + "BHTX":1, + "BHUX":1, + "BHWX":1, + "BJUX":1, + "BKCX":1, + "BKDN":1, + "BKDX":1, + "BKID":1, + "BKSX":1, + "BLGX":1, + "BMBL":1, + "BMCB":1, + "BMCX":1, + "BMPX":1, + "BMSX":1, + "BNBX":1, + "BNCX":1, + "BNPA":1, + "BNSB":1, + "BNSX":1, + "BODX":1, + "BOFA":1, + "BORX":1, + "BOTM":1, + "BOTX":1, + "BPCX":1, + "BPSX":1, + "BRCX":1, + "BRDX":1, + "BRGX":1, + "BRMX":1, + "BRSX":1, + "BRUX":1, + "BSBX":1, + "BSCX":1, + "BTCX":1, + "BTUX":1, + "BUBX":1, + "BUCL":1, + "BUCX":1, + "BUGX":1, + "BUNX":1, + "BURX":1, + "BUSX":1, + "BUZX":1, + "BVNX":1, + "BVSX":1, + "BWCX":1, + "CALX":1, + "CBHX":1, + "CBIN":1, + "CCBL":1, + "CCBX":1, + "CCCX":1, + "CCMX":1, + "CCOB":1, + "CCUX":1, + "CDCX":1, + "CEBX":1, + "CGBX":1, + "CGGX":1, + "CHAS":1, + "CHAX":1, + "CHBX":1, + "CHCX":1, + "CHDX":1, + "CHIX":1, + "CHKX":1, + "CHPX":1, + "CHRX":1, + "CHSX":1, + "CHTX":1, + "CIDX":1, + "CITI":1, + "CITX":1, + "CIUB":1, + "CJAX":1, + "CJMX":1, + "CLBL":1, + "CMCB":1, + "CMCX":1, + "CMDX":1, + "CMLX":1, + "CMPX":1, + "CNRB":1, + "CNSX":1, + "COCX":1, + "COLX":1, + "COMX":1, + "CONX":1, + "CORP":1, + "COSB":1, + "CPDX":1, + "CPSN":1, + "CRBX":1, + "CRES":1, + "CRLY":1, + "CRSX":1, + "CRUB":1, + "CSBK":1, + "CSBX":1, + "CTBA":1, + "CTBX":1, + "CTCB":1, + "CTOX":1, + "CTUX":1, + "CUBX":1, + "CUCX":1, + "CURX":1, + "CZCX":1, + "CZUX":1, + "DAAX":1, + "DAHX":1, + "DAUX":1, + "DBAX":1, + "DBSS":1, + "DCBL":1, + "DCBX":1, + "DCCX":1, + "DCDX":1, + "DCEX":1, + "DCKX":1, + "DCMX":1, + "DCNX":1, + "DCPX":1, + "DCSX":1, + "DCTX":1, + "DCUX":1, + "DDBX":1, + "DDCX":1, + "DDDX":1, + "DDHX":1, + "DEGX":1, + "DENS":1, + "DEOB":1, + "DEOX":1, + "DEUT":1, + "DEUX":1, + "DEVX":1, + "DGBX":1, + "DHBX":1, + "DHKX":1, + "DHUX":1, + "DIBX":1, + "DICG":1, + "DICX":1, + "DIUX":1, + "DJCX":1, + "DKCL":1, + "DKSX":1, + "DLSC":1, + "DLXB":1, + "DMCB":1, + "DMCX":1, + "DMKB":1, + "DMKJ":1, + "DNSB":1, + "DNSX":1, + "DOBX":1, + "DOHB":1, + "DRGX":1, + "DSBX":1, + "DSCB":1, + "DSHX":1, + "DSPX":1, + "DSUX":1, + "DTCX":1, + "DTPX":1, + "DUCX":1, + "DUMX":1, + "DUNX":1, + "DURG":1, + "DVDX":1, + "DYPX":1, + "EBIL":1, + "ECBL":1, + "EDBX":1, + "EDCX":1, + "EDSX":1, + "EIBI":1, + "ESAF":1, + "ESFB":1, + "ESMF":1, + "ETCX":1, + "ETDX":1, + "EUCX":1, + "EWCX":1, + "FCBX":1, + "FCCX":1, + "FCOX":1, + "FDFX":1, + "FDRL":1, + "FEKX":1, + "FGCB":1, + "FINO":1, + "FINF":1, + "FINX":1, + "FIRN":1, + "FIRX":1, + "FMCX":1, + "FRIX":1, + "FSCX":1, + "FSFB":1, + "FZCX":1, + "FZSX":1, + "GACX":1, + "GADX":1, + "GANX":1, + "GBCB":1, + "GCBX":1, + "GCCX":1, + "GCUL":1, + "GCUX":1, + "GDCB":1, + "GDCX":1, + "GDDX":1, + "GDUX":1, + "GGBK":1, + "GGCX":1, + "GHPX":1, + "GKNX":1, + "GMBX":1, + "GMCX":1, + "GMUX":1, + "GNCX":1, + "GNSX":1, + "GODX":1, + "GOSX":1, + "GPCX":1, + "GPOX":1, + "GRAX":1, + "GSBL":1, + "GSBX":1, + "GSCB":1, + "GSCX":1, + "GSSX":1, + "GTCX":1, + "GUBX":1, + "GUCX":1, + "GUNX":1, + "GUOX":1, + "HAMX":1, + "HANX":1, + "HARC":1, + "HCBL":1, + "HCBX":1, + "HCCX":1, + "HCLX":1, + "HDCX":1, + "HDFC":1, + "HGBX":1, + "HINX":1, + "HISX":1, + "HMBX":1, + "HMNX":1, + "HOCX":1, + "HOOX":1, + "HPCX":1, + "HPSC":1, + "HPSX":1, + "HSBC":1, + "HSBX":1, + "HSCX":1, + "HSDX":1, + "HSSX":1, + "HUBX":1, + "HUCX":1, + "HUTX":1, + "HVBK":1, + "IBBK":1, + "IBKL":1, + "IBKO":1, + "ICBK":1, + "ICBL":1, + "ICHX":1, + "ICIC":1, + "ICMX":1, + "IDFB":1, + "IDIB":1, + "IDUK":1, + "IDUX":1, + "ILCB":1, + "IMPX":1, + "INCX":1, + "INDB":1, + "INDX":1, + "IOBA":1, + "IPCX":1, + "IPOS":1, + "IPPB":1, + "IPSX":1, + "ISBX":1, + "ISMX":1, + "ITBL":1, + "ITCX":1, + "ITDX":1, + "IUCB":1, + "IUCX":1, + "JACX":1, + "JAKA":1, + "JALX":1, + "JAMX":1, + "JANA":1, + "JANX":1, + "JASB":1, + "JASX":1, + "JAUX":1, + "JBHX":1, + "JBIX":1, + "JBMX":1, + "JCBX":1, + "JCCB":1, + "JCCX":1, + "JCDX":1, + "JCHX":1, + "JCPX":1, + "JCUX":1, + "JDCX":1, + "JDEX":1, + "JGBX":1, + "JGCX":1, + "JGWX":1, + "JHAX":1, + "JHSX":1, + "JHUX":1, + "JIBX":1, + "JICX":1, + "JIDX":1, + "JIGX":1, + "JIKX":1, + "JIMX":1, + "JINX":1, + "JIOP":1, + "JIOX":1, + "JIRX":1, + "JISX":1, + "JIVX":1, + "JJCX":1, + "JJHX":1, + "JJSB":1, + "JKAX":1, + "JKCX":1, + "JKDX":1, + "JKEX":1, + "JKHX":1, + "JKMX":1, + "JKRX":1, + "JKSX":1, + "JLCX":1, + "JLDX":1, + "JLNX":1, + "JLSX":1, + "JLWX":1, + "JMAX":1, + "JMBX":1, + "JMCX":1, + "JMDX":1, + "JMHX":1, + "JMMX":1, + "JMOX":1, + "JMPX":1, + "JMSX":1, + "JMYX":1, + "JNAX":1, + "JNDX":1, + "JNSX":1, + "JODX":1, + "JONX":1, + "JOWX":1, + "JPAX":1, + "JPCB":1, + "JPCX":1, + "JRAX":1, + "JRKX":1, + "JRNX":1, + "JRSX":1, + "JSAB":1, + "JSAX":1, + "JSBL":1, + "JSBP":1, + "JSBX":1, + "JSCX":1, + "JSDX":1, + "JSEX":1, + "JSFB":1, + "JSHX":1, + "JSKX":1, + "JSMX":1, + "JSOX":1, + "JSRX":1, + "JSTX":1, + "JSVX":1, + "JSWX":1, + "JTIX":1, + "JTSX":1, + "JUCX":1, + "JUSX":1, + "JVCX":1, + "KAAX":1, + "KACE":1, + "KACX":1, + "KADX":1, + "KAGX":1, + "KAIJ":1, + "KALX":1, + "KAMX":1, + "KANG":1, + "KANX":1, + "KARB":1, + "KARX":1, + "KASX":1, + "KATX":1, + "KAYX":1, + "KBCX":1, + "KBNX":1, + "KBSX":1, + "KCBL":1, + "KCBX":1, + "KCCB":1, + "KCCX":1, + "KCDX":1, + "KCEX":1, + "KCOB":1, + "KCUB":1, + "KCUX":1, + "KDBX":1, + "KDCB":1, + "KDCX":1, + "KDIX":1, + "KDNX":1, + "KDUX":1, + "KEMX":1, + "KESX":1, + "KGBX":1, + "KGDX":1, + "KGRB":1, + "KGSX":1, + "KHAX":1, + "KHCX":1, + "KHDX":1, + "KHNX":1, + "KHUX":1, + "KICX":1, + "KJSB":1, + "KJSX":1, + "KKBK":1, + "KKMX":1, + "KKSX":1, + "KLGB":1, + "KLMX":1, + "KMCB":1, + "KMCX":1, + "KMNX":1, + "KMSX":1, + "KNBX":1, + "KNCX":1, + "KNNX":1, + "KNPX":1, + "KNSB":1, + "KNSX":1, + "KOBX":1, + "KOCX":1, + "KODX":1, + "KOEX":1, + "KOLH":1, + "KOSX":1, + "KOTX":1, + "KOYX":1, + "KPCX":1, + "KRCX":1, + "KRDX":1, + "KRIX":1, + "KRMX":1, + "KRNX":1, + "KRTH":1, + "KRTX":1, + "KSBK":1, + "KSBX":1, + "KSCB":1, + "KSCX":1, + "KSMX":1, + "KSNX":1, + "KSTX":1, + "KSUX":1, + "KTBX":1, + "KTCX":1, + "KTDX":1, + "KTTX":1, + "KUBX":1, + "KUCB":1, + "KUCX":1, + "KUKX":1, + "KULX":1, + "KUMX":1, + "KUNS":1, + "KURX":1, + "KVBL":1, + "KVCX":1, + "KVGB":1, + "KYDX":1, + "LACX":1, + "LATX":1, + "LAVB":1, + "LBMX":1, + "LCBX":1, + "LCCX":1, + "LDCX":1, + "LDPX":1, + "LDRX":1, + "LECX":1, + "LICB":1, + "LKBL":1, + "LKCX":1, + "LKHX":1, + "LKMX":1, + "LMNX":1, + "LNSX":1, + "LOKX":1, + "LONX":1, + "LUCX":1, + "LULX":1, + "MABL":1, + "MACX":1, + "MADX":1, + "MAGX":1, + "MAHB":1, + "MAHG":1, + "MAHX":1, + "MAJX":1, + "MAKX":1, + "MALX":1, + "MAMX":1, + "MANX":1, + "MAPX":1, + "MASX":1, + "MAUX":1, + "MAVX":1, + "MAYX":1, + "MBCX":1, + "MBGX":1, + "MBLX":1, + "MCAX":1, + "MCBL":1, + "MCBX":1, + "MCCX":1, + "MCDX":1, + "MCLX":1, + "MCOX":1, + "MCSX":1, + "MCUX":1, + "MDCB":1, + "MDCX":1, + "MDEX":1, + "MDGX":1, + "MDIX":1, + "MDMX":1, + "MDPX":1, + "MEDX":1, + "MERX":1, + "MEUX":1, + "MFCX":1, + "MFUX":1, + "MGBX":1, + "MGCB":1, + "MGCX":1, + "MGDX":1, + "MGRB":1, + "MGSX":1, + "MGUX":1, + "MHCB":1, + "MHCX":1, + "MHEX":1, + "MHLX":1, + "MHMX":1, + "MHNX":1, + "MHSX":1, + "MHUX":1, + "MIZX":1, + "MJCX":1, + "MKPB":1, + "MKUX":1, + "MKYX":1, + "MLDX":1, + "MMCX":1, + "MMMX":1, + "MNBX":1, + "MNCX":1, + "MNSX":1, + "MOGX":1, + "MOUX":1, + "MPCX":1, + "MPDX":1, + "MPRX":1, + "MRBX":1, + "MRTX":1, + "MSAX":1, + "MSBL":1, + "MSBX":1, + "MSCI":1, + "MSCX":1, + "MSHQ":1, + "MSLM":1, + "MSNU":1, + "MSNX":1, + "MSOX":1, + "MSSX":1, + "MUBL":1, + "MUBX":1, + "MUCX":1, + "MUDX":1, + "MUNX":1, + "MUPX":1, + "MURX":1, + "MUSX":1, + "MVCB":1, + "MVCX":1, + "MVIX":1, + "MYAX":1, + "MYSX":1, + "MZCX":1, + "MZRX":1, + "NABX":1, + "NACX":1, + "NAGX":1, + "NAIX":1, + "NALX":1, + "NANX":1, + "NASX":1, + "NATA":1, + "NAUX":1, + "NAVX":1, + "NAWX":1, + "NBAD":1, + "NBBX":1, + "NBCX":1, + "NBMX":1, + "NBRD":1, + "NCBL":1, + "NCBX":1, + "NCCX":1, + "NCOX":1, + "NCUB":1, + "NCUX":1, + "NDCB":1, + "NDCX":1, + "NDDX":1, + "NDGX":1, + "NDIX":1, + "NESF":1, + "NEYX":1, + "NGBX":1, + "NGKX":1, + "NGNX":1, + "NGRX":1, + "NGSB":1, + "NGSX":1, + "NICB":1, + "NIDX":1, + "NILX":1, + "NIRX":1, + "NIUX":1, + "NJBK":1, + "NJCX":1, + "NJGX":1, + "NJMX":1, + "NJSX":1, + "NKGS":1, + "NLGX":1, + "NLUX":1, + "NMCB":1, + "NMCX":1, + "NMGB":1, + "NNCX":1, + "NNSB":1, + "NNSX":1, + "NOBX":1, + "NOIX":1, + "NOSC":1, + "NPCX":1, + "NPKX":1, + "NRDX":1, + "NSBB":1, + "NSBX":1, + "NSCX":1, + "NSGX":1, + "NSIX":1, + "NSJX":1, + "NSMX":1, + "NSPB":1, + "NSPX":1, + "NSRX":1, + "NTBL":1, + "NUBX":1, + "NUCB":1, + "NUCX":1, + "NVCX":1, + "NVNM":1, + "NVSX":1, + "NWCX":1, + "ODCX":1, + "ODGB":1, + "OIBA":1, + "OMCX":1, + "ONSX":1, + "ORBC":1, + "ORCB":1, + "OSMX":1, + "PABX":1, + "PACX":1, + "PADX":1, + "PALX":1, + "PANX":1, + "PARX":1, + "PASX":1, + "PATX":1, + "PAYX":1, + "PBGX":1, + "PCBL":1, + "PCBX":1, + "PCCB":1, + "PCCX":1, + "PCLX":1, + "PCMX":1, + "PCOX":1, + "PCPX":1, + "PCSX":1, + "PCTX":1, + "PCUX":1, + "PDBX":1, + "PDCX":1, + "PDNX":1, + "PDSX":1, + "PDUX":1, + "PGBX":1, + "PGCX":1, + "PGRX":1, + "PGTX":1, + "PITX":1, + "PJSB":1, + "PKBX":1, + "PKDX":1, + "PKGB":1, + "PLOX":1, + "PLUX":1, + "PMCB":1, + "PMCX":1, + "PMEC":1, + "PMNX":1, + "PNCX":1, + "PNMX":1, + "PNPX":1, + "PNSX":1, + "PPBX":1, + "PPCX":1, + "PRCX":1, + "PREX":1, + "PROX":1, + "PRPX":1, + "PRSX":1, + "PRTH":1, + "PSBX":1, + "PSCX":1, + "PSIB":1, + "PSRX":1, + "PSSX":1, + "PTCX":1, + "PTNX":1, + "PTSX":1, + "PUBX":1, + "PUCB":1, + "PUCX":1, + "PUDX":1, + "PUGX":1, + "PUNB":1, + "PUNX":1, + "PURX":1, + "PUSD":1, + "PUSX":1, + "PUUX":1, + "PVAX":1, + "PVCX":1, + "PVVX":1, + "PWUX":1, + "PYCX":1, + "PYTM":1, + "QNBA":1, + "QUCX":1, + "RABO":1, + "RACX":1, + "RAEX":1, + "RAJX":1, + "RAKX":1, + "RAMX":1, + "RANX":1, + "RATN":1, + "RAUX":1, + "RBBX":1, + "RBCX":1, + "RBIS":1, + "RBIH":1, + "RCBX":1, + "RCCX":1, + "RCDX":1, + "RCMX":1, + "RCUX":1, + "RDCX":1, + "RDNX":1, + "REBX":1, + "RECX":1, + "REWX":1, + "RGCX":1, + "RGSX":1, + "RHMX":1, + "RJCX":1, + "RJJX":1, + "RJNX":1, + "RJTX":1, + "RKCX":1, + "RLUX":1, + "RMGB":1, + "RNBX":1, + "RNDX":1, + "RNGX":1, + "RNSB":1, + "RNSX":1, + "ROCX":1, + "ROHX":1, + "RPUX":1, + "RRBP":1, + "RRSX":1, + "RSBL":1, + "RSBX":1, + "RSCB":1, + "RSSX":1, + "RSUX":1, + "RSVX":1, + "RUCX":1, + "RUKX":1, + "RUMX":1, + "RZSX":1, + "SABR":1, + "SABX":1, + "SACB":1, + "SACX":1, + "SADX":1, + "SAGX":1, + "SAHE":1, + "SAHX":1, + "SAIX":1, + "SALX":1, + "SAMX":1, + "SANT":1, + "SANX":1, + "SAPX":1, + "SARX":1, + "SASA":1, + "SASX":1, + "SATX":1, + "SAUX":1, + "SAVX":1, + "SAWX":1, + "SBBJ":1, + "SBCX":1, + "SBHY":1, + "SBIN":1, + "SBKX":1, + "SBLD":1, + "SBLS":1, + "SBLX":1, + "SBMX":1, + "SBMY":1, + "SBNX":1, + "SBPX":1, + "SBSX":1, + "SBTR":1, + "SBUJ":1, + "SBUX":1, + "SCBL":1, + "SCBX":1, + "SCCX":1, + "SCDX":1, + "SCIX":1, + "SCNX":1, + "SCOB":1, + "SCOX":1, + "SCPX":1, + "SCSX":1, + "SCUX":1, + "SDBX":1, + "SDCB":1, + "SDCE":1, + "SDCX":1, + "SDHX":1, + "SDSX":1, + "SDTX":1, + "SDUX":1, + "SEMX":1, + "SENX":1, + "SEUX":1, + "SEWX":1, + "SGCX":1, + "SGLX":1, + "SGSX":1, + "SGUX":1, + "SHAX":1, + "SHBK":1, + "SHBX":1, + "SHCX":1, + "SHEX":1, + "SHGX":1, + "SHIX":1, + "SHKX":1, + "SHMX":1, + "SHNX":1, + "SHOX":1, + "SHRX":1, + "SHSX":1, + "SHUX":1, + "SIBL":1, + "SIBX":1, + "SICX":1, + "SIDB":1, + "SIDC":1, + "SIDX":1, + "SIGX":1, + "SIHX":1, + "SIKX":1, + "SINX":1, + "SIRX":1, + "SISX":1, + "SITX":1, + "SIWX":1, + "SJGX":1, + "SJSB":1, + "SJSX":1, + "SKCX":1, + "SKKX":1, + "SKNX":1, + "SKSB":1, + "SKUX":1, + "SLAX":1, + "SLCX":1, + "SMBC":1, + "SMBX":1, + "SMCB":1, + "SMCX":1, + "SMEX":1, + "SMMX":1, + "SMNX":1, + "SMPX":1, + "SMSX":1, + "SMTX":1, + "SMUX":1, + "SMVC":1, + "SMWX":1, + "SNAX":1, + "SNBK":1, + "SNBX":1, + "SNCX":1, + "SNDX":1, + "SNGX":1, + "SNKX":1, + "SNLX":1, + "SNPX":1, + "SNSV":1, + "SNSX":1, + "SOBX":1, + "SOGE":1, + "SOLX":1, + "SONX":1, + "SPBX":1, + "SPCB":1, + "SPCX":1, + "SPNX":1, + "SPSX":1, + "SPTX":1, + "SRCB":1, + "SRCX":1, + "SREX":1, + "SRGX":1, + "SRHX":1, + "SRSX":1, + "SSBL":1, + "SSBX":1, + "SSDX":1, + "SSHX":1, + "SSKX":1, + "SSLX":1, + "SSNX":1, + "SSOX":1, + "SSSX":1, + "SSWX":1, + "STBP":1, + "STCB":1, + "STCX":1, + "STDX":1, + "STRX":1, + "SUBX":1, + "SUCX":1, + "SUDX":1, + "SULX":1, + "SUMX":1, + "SUNB":1, + "SURX":1, + "SURY":1, + "SUSX":1, + "SUTB":1, + "SUVX":1, + "SVAX":1, + "SVBL":1, + "SVCB":1, + "SVCX":1, + "SVGX":1, + "SVNX":1, + "SVOX":1, + "SVRX":1, + "SVSH":1, + "SVSX":1, + "SWMX":1, + "SWSX":1, + "SYNB":1, + "TACX":1, + "TADX":1, + "TAMX":1, + "TAPX":1, + "TASX":1, + "TBCX":1, + "TBDX":1, + "TBHX":1, + "TBMX":1, + "TBPX":1, + "TBSB":1, + "TBSX":1, + "TBTX":1, + "TBUX":1, + "TCBX":1, + "TCCX":1, + "TCHX":1, + "TCPX":1, + "TCUB":1, + "TCUX":1, + "TDBX":1, + "TDCB":1, + "TDCX":1, + "TDIX":1, + "TDMX":1, + "TDPX":1, + "TDSX":1, + "TECX":1, + "TEHX":1, + "TEMX":1, + "TESX":1, + "TETX":1, + "TFCX":1, + "TGBX":1, + "TGCG":1, + "TGCX":1, + "TGDX":1, + "TGMB":1, + "TGNX":1, + "TGUX":1, + "THCX":1, + "THOX":1, + "THRS":1, + "THRX":1, + "THWX":1, + "TIDX":1, + "TIRX":1, + "TJAX":1, + "TJBX":1, + "TJCX":1, + "TJDX":1, + "TJMX":1, + "TJNX":1, + "TJSB":1, + "TKAX":1, + "TKCX":1, + "TKDX":1, + "TKTX":1, + "TKUX":1, + "TLPX":1, + "TMAX":1, + "TMBL":1, + "TMBX":1, + "TMCX":1, + "TMNX":1, + "TMPX":1, + "TMSC":1, + "TMSX":1, + "TMTX":1, + "TMUX":1, + "TNBX":1, + "TNCX":1, + "TNDC":1, + "TNEX":1, + "TNHX":1, + "TNIX":1, + "TNKX":1, + "TNMX":1, + "TNSC":1, + "TNUX":1, + "TOCX":1, + "TPCX":1, + "TPDX":1, + "TPSX":1, + "TPUX":1, + "TRAX":1, + "TRDX":1, + "TSAB":1, + "TSAX":1, + "TSBX":1, + "TSCX":1, + "TSDX":1, + "TSIX":1, + "TSMX":1, + "TSNX":1, + "TSPX":1, + "TSSB":1, + "TSSX":1, + "TSUX":1, + "TTBX":1, + "TTCB":1, + "TTCX":1, + "TTGX":1, + "TTLX":1, + "TTUX":1, + "TUBX":1, + "TUCL":1, + "TUCX":1, + "TUDX":1, + "TUMX":1, + "TUNX":1, + "TUOX":1, + "TUPX":1, + "TURX":1, + "TVBX":1, + "TVDX":1, + "TVPX":1, + "TVUX":1, + "TYCX":1, + "UBBX":1, + "UBGX":1, + "UBIN":1, + "UCBA":1, + "UCBS":1, + "UCBX":1, + "UCCX":1, + "UCDX":1, + "UCUX":1, + "UGBX":1, + "UICX":1, + "UJSX":1, + "UJVN":1, + "UKGX":1, + "UMAX":1, + "UMCX":1, + "UMSX":1, + "UMUX":1, + "UNAX":1, + "UNIX":1, + "UNMX":1, + "UNSX":1, + "UOVB":1, + "UPCB":1, + "UPCX":1, + "URBN":1, + "URCX":1, + "URDX":1, + "URMX":1, + "UROX":1, + "USFB":1, + "USNX":1, + "UTBI":1, + "UTBX":1, + "UTCX":1, + "UTGX":1, + "UTIB":1, + "UTKS":1, + "UTKX":1, + "UTZX":1, + "UUCX":1, + "VADX":1, + "VAIX":1, + "VANX":1, + "VARA":1, + "VASJ":1, + "VASX":1, + "VAUX":1, + "VCAX":1, + "VCBX":1, + "VCCX":1, + "VCNB":1, + "VCOB":1, + "VCOX":1, + "VDCX":1, + "VDYX":1, + "VEDX":1, + "VERX":1, + "VGBX":1, + "VHDX":1, + "VICX":1, + "VIDX":1, + "VIJB":1, + "VIJX":1, + "VIKX":1, + "VIMX":1, + "VIRX":1, + "VISX":1, + "VJSX":1, + "VKCX":1, + "VKSX":1, + "VMCX":1, + "VMMX":1, + "VMUX":1, + "VNSX":1, + "VRDX":1, + "VSBL":1, + "VSBX":1, + "VSCX":1, + "VSSX":1, + "VSVX":1, + "VUCX":1, + "VVCX":1, + "VVSB":1, + "VYAX":1, + "VYPX":1, + "VYSA":1, + "WACX":1, + "WAIX":1, + "WARX":1, + "WAUX":1, + "WBSC":1, + "WCBX":1, + "WDCX":1, + "WKGX":1, + "WNBX":1, + "WPAC":1, + "WRCX":1, + "WUCX":1, + "WZUX":1, + "XJKG":1, + "YADX":1, + "YAVX":1, + "YCBX":1, + "YDCX":1, + "YESB":1, + "YLNX":1, + "YMSX":1, + "YNCX":1, + "YNSX":1, + "ZBBX":1, + "ZBSX":1, + "ZCBL":1, + "ZIBX":1, + "ZILX":1, + "ZIMX":1, + "ZISX":1, + "ZLLX":1, + "ZRNB":1, + "ZMMX":1, + "ZSAX":1, + "ZSBL":1, + "ZSBX":1, + "ZSGX":1, + "ZSHX":1, + "ZSJX":1, + "ZSKX":1, + "ZSLX":1, + "ZSMX":1, } type Bank struct { - Name string - BankCode string + Name string `json:"name"` + BankCode string `json:"bank_code"` Code string `json:"code"` Type string `json:"type"` IFSC string `json:"ifsc"` @@ -1448,7 +1449,7 @@ var bankData map[string]Bank func LoadBankData() { if bankData == nil { if err := LoadFile("banks.json", &bankData); err != nil { - fmt.Println("there is some error in banknames.json file: ", err) + log.Panic(fmt.Sprintf("there is some error in banknames.json file: %v", err)) } } } @@ -1456,9 +1457,15 @@ func LoadBankData() { func GetBankDetails(bankCode string) interface{} { data, ok := bankData[bankCode] if !ok { - return false + return nil + } + var err error + data.Name, err = GetBankName(bankCode) + if err !=nil{ + return nil + } + if data.MICR != ""{ + data.BankCode = data.MICR[3:6] } - //data.Name = - // data.Code = return data } diff --git a/src/go/Client.go b/src/go/Client.go index 9b931a41..1dc1f925 100644 --- a/src/go/Client.go +++ b/src/go/Client.go @@ -9,22 +9,20 @@ import ( const API_BASE = "https://ifsc.razorpay.com" -type IfscResponse struct { +type IFSCResponse struct { Bank string `json:"BANK"` Branch string `json:"BRANCH"` Address string `json:"ADDRESS"` Contact string `json:"CONTACT"` City string `json:"CITY"` - Ifsc string `json:"IFSC"` District string `json:"DISTRICT"` State string `json:"STATE"` BankCode string } // LookUP fetches the response from ifsc api for -func LookUP(ifsc string) (*IfscResponse, error) { - var respStruct *IfscResponse - +func LookUP(ifsc string) (*IFSCResponse, error) { + var respStruct *IFSCResponse resp, err := http.Get(API_BASE + "/" + ifsc) if err != nil { return nil, err @@ -39,7 +37,7 @@ func LookUP(ifsc string) (*IfscResponse, error) { if err != nil { return nil, err } - //respStruct.SetBankCode() + respStruct.setBankCode() } else if status == http.StatusNotFound { return nil, errors.New("InvalidCode") @@ -50,14 +48,20 @@ func LookUP(ifsc string) (*IfscResponse, error) { return respStruct, nil } -//func ( ifsc * IfscResponse) SetBankCode(){ -// -//} -// -//func (ifsc * IfscResponse) GetBankCode()string{ -// -//} -// -//func (ifsc * IfscResponse) GetBankName()string{ -// -//} +func ( ifsc * IFSCResponse) setBankCode(){ + if ifsc.BankCode == ""{ + ifsc.BankCode = ifsc.GetBankCode() + } +} + +func (ifsc * IFSCResponse) GetBankCode()string{ + return ifsc.BankCode[0:4] +} + +func (ifsc * IFSCResponse) GetBankName()string{ + bankName, err := GetBankName(ifsc.GetBankCode()) + if err !=nil{ + return "" + } + return bankName +} diff --git a/src/go/IFSC.go b/src/go/IFSC.go index a2ead3c8..afd143f1 100644 --- a/src/go/IFSC.go +++ b/src/go/IFSC.go @@ -5,9 +5,11 @@ import ( "errors" "fmt" "io/ioutil" + "log" "path" "runtime" "strconv" + "strings" ) var ifsc map[string][]Data @@ -37,26 +39,26 @@ func (d *Data) UnmarshalJSON(input []byte) error { return nil } -func Init() { +func init() { LoadBankData() if ifsc == nil { if err := LoadFile("IFSC.json", &ifsc); err != nil { - fmt.Println("there is some error in IFSC.json file: ", err) + log.Panic(fmt.Sprintf("there is some error in IFSC.json file: %v", err)) } } if sublet == nil { if err := LoadFile("sublet.json", &sublet); err != nil { - fmt.Println("there is some error in sublet.json file: ", err) + log.Panic(fmt.Sprintf("there is some error in sublet.json file: %v", err)) } } if customSublets == nil { if err := LoadFile("custom-sublets.json", &customSublets); err != nil { - fmt.Println("there is some error in custom-sublets.json file: ", err) + log.Panic(fmt.Sprintf("there is some error in custom-sublets.json file: %v", err)) } } if bankNames == nil { if err := LoadFile("banknames.json", &bankNames); err != nil { - fmt.Println("there is some error in banknames.json file: ", err) + log.Panic(fmt.Sprintf("there is some error in banknames.json file: %v", err)) } } } @@ -78,9 +80,82 @@ func LoadFile(fileName string, result interface{}) error { } return nil } -func validateBankCode(code string) bool { - return true + +func Validate(code string) bool { + if len(code) != 11 || string(code[4]) != "0"{ + return false + } + bankCode := strings.ToUpper(code[0:4]) + branchCode := strings.ToUpper(code[5:]) + list,ok := ifsc[bankCode] + if !ok{ + return false + } + branchData, err := getData(branchCode) + if err != nil{ + return false + } + for _, data := range list{ + if data == *branchData { + return true + } + } + return false } -func GetBankName(code string) string { - return "true" + +func getData(input string)( *Data, error){ + var inputBytes []byte + var err error + intValue , err := strconv.ParseInt(input , 10, 32) + if err == nil{ + input = strconv.Itoa(int(intValue)) + } + if inputBytes , err = json.Marshal(input); err != nil{ + return nil, err + } + var output Data + if err := json.Unmarshal(inputBytes, &output); err != nil{ + return nil, err + } + return &output,nil +} + +func GetBankName(code string) (string,error) { + bankName , ok := bankNames[code] + if !ok { + if Validate(code){ + bankCode, ok := sublet[code] + if !ok{ + bankName, err := getCustomSubletName(code) + if err != nil{ + bankName, _ := bankNames[code[0:4]] + return bankName,nil + }else{ + return bankName, nil + } + } + return bankNames[bankCode], nil + + } else{ + return "", errors.New("invalid bank code") + } + } + return bankName,nil +} +func getCustomSubletName(code string) (string, error){ + for key, value := range customSublets{ + if len(code) >= len(key) && code[0:len(key)] == key{ + bankName , ok := bankNames[value] + if !ok{ + return value,nil + } + return bankName, nil + } + } + return "", errors.New("custom sublet name not found") +} + +func ValidateBankCode(bankCodeInput string) bool{ + _, ok:= bankCodes[bankCodeInput] + return ok } From daa852637e3c5355683f3a352331dd1a85ad72c6 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Mon, 15 Jun 2020 20:22:31 +0530 Subject: [PATCH 07/24] add upi, update GetBankDetails signature & gofmt. --- src/go/Bank.go | 2857 +++++++++++++++++++++++----------------------- src/go/Client.go | 12 +- src/go/IFSC.go | 80 +- 3 files changed, 1475 insertions(+), 1474 deletions(-) diff --git a/src/go/Bank.go b/src/go/Bank.go index 0c6e9875..3c4bb67b 100644 --- a/src/go/Bank.go +++ b/src/go/Bank.go @@ -5,1429 +5,1429 @@ import ( "log" ) -var bankCodes = map[string]int { - "AACX":1, - "ABBL":1, - "ABCX":1, - "ABDX":1, - "ABEX":1, - "ABHY":1, - "ABNA":1, - "ABPB":1, - "ABSB":1, - "ABUX":1, - "ACAX":1, - "ACBX":1, - "ACCX":1, - "ACKX":1, - "ACOX":1, - "ACUB":1, - "ACUX":1, - "ADBX":1, - "ADCB":1, - "ADCC":1, - "ADCX":1, - "ADDX":1, - "AGCX":1, - "AGDX":1, - "AGRX":1, - "AGSX":1, - "AGUX":1, - "AGVX":1, - "AHMX":1, - "AHUX":1, - "AIRP":1, - "AJAR":1, - "AJHC":1, - "AJKB":1, - "AJMX":1, - "AJNX":1, - "AJPX":1, - "AJSX":1, - "AJUX":1, - "AKJB":1, - "AKMX":1, - "AKOX":1, - "ALAX":1, - "ALIX":1, - "ALLA":1, - "ALLX":1, - "ALWX":1, - "AMAX":1, - "AMBX":1, - "AMCB":1, - "AMCX":1, - "AMDN":1, - "AMMX":1, - "AMNX":1, - "AMRX":1, - "AMSB":1, - "AMSX":1, - "ANBX":1, - "ANDB":1, - "ANDX":1, - "ANMX":1, - "ANSX":1, - "ANUX":1, - "ANZB":1, - "APBL":1, - "APCX":1, - "APGB":1, - "APGV":1, - "APGX":1, - "APJX":1, - "APMC":1, - "APMX":1, - "APNX":1, - "APRX":1, - "APSX":1, - "ARCX":1, - "ARMX":1, - "ARYX":1, - "ASBL":1, - "ASBX":1, - "ASHX":1, - "ASKX":1, - "ASNX":1, - "ASOX":1, - "ASSX":1, - "AUBL":1, - "AUBX":1, - "AUCB":1, - "AUCX":1, - "AUGX":1, - "AURX":1, - "AVDX":1, - "AWCX":1, - "AWUX":1, - "AZAX":1, - "AZPX":1, - "AZSX":1, - "AZUX":1, - "BACB":1, - "BACX":1, - "BADX":1, - "BALX":1, - "BANX":1, - "BARA":1, - "BARB":1, - "BARC":1, - "BARX":1, - "BASX":1, - "BAUX":1, - "BAVX":1, - "BBKM":1, - "BBLX":1, - "BBRX":1, - "BBSX":1, - "BBUX":1, - "BBVX":1, - "BCBM":1, - "BCBX":1, - "BCCB":1, - "BCCX":1, - "BCEX":1, - "BCEY":1, - "BCOX":1, - "BCUB":1, - "BCUX":1, - "BDBL":1, - "BDBX":1, - "BDCX":1, - "BDDX":1, - "BDIX":1, - "BDNX":1, - "BDOX":1, - "BDUX":1, - "BEDX":1, - "BELX":1, - "BFUX":1, - "BGBX":1, - "BGCX":1, - "BGGX":1, - "BGUX":1, - "BGVX":1, - "BHAX":1, - "BHBX":1, - "BHCX":1, - "BHDX":1, - "BHEX":1, - "BHGX":1, - "BHIX":1, - "BHJX":1, - "BHMX":1, - "BHOX":1, - "BHRX":1, - "BHSX":1, - "BHTX":1, - "BHUX":1, - "BHWX":1, - "BJUX":1, - "BKCX":1, - "BKDN":1, - "BKDX":1, - "BKID":1, - "BKSX":1, - "BLGX":1, - "BMBL":1, - "BMCB":1, - "BMCX":1, - "BMPX":1, - "BMSX":1, - "BNBX":1, - "BNCX":1, - "BNPA":1, - "BNSB":1, - "BNSX":1, - "BODX":1, - "BOFA":1, - "BORX":1, - "BOTM":1, - "BOTX":1, - "BPCX":1, - "BPSX":1, - "BRCX":1, - "BRDX":1, - "BRGX":1, - "BRMX":1, - "BRSX":1, - "BRUX":1, - "BSBX":1, - "BSCX":1, - "BTCX":1, - "BTUX":1, - "BUBX":1, - "BUCL":1, - "BUCX":1, - "BUGX":1, - "BUNX":1, - "BURX":1, - "BUSX":1, - "BUZX":1, - "BVNX":1, - "BVSX":1, - "BWCX":1, - "CALX":1, - "CBHX":1, - "CBIN":1, - "CCBL":1, - "CCBX":1, - "CCCX":1, - "CCMX":1, - "CCOB":1, - "CCUX":1, - "CDCX":1, - "CEBX":1, - "CGBX":1, - "CGGX":1, - "CHAS":1, - "CHAX":1, - "CHBX":1, - "CHCX":1, - "CHDX":1, - "CHIX":1, - "CHKX":1, - "CHPX":1, - "CHRX":1, - "CHSX":1, - "CHTX":1, - "CIDX":1, - "CITI":1, - "CITX":1, - "CIUB":1, - "CJAX":1, - "CJMX":1, - "CLBL":1, - "CMCB":1, - "CMCX":1, - "CMDX":1, - "CMLX":1, - "CMPX":1, - "CNRB":1, - "CNSX":1, - "COCX":1, - "COLX":1, - "COMX":1, - "CONX":1, - "CORP":1, - "COSB":1, - "CPDX":1, - "CPSN":1, - "CRBX":1, - "CRES":1, - "CRLY":1, - "CRSX":1, - "CRUB":1, - "CSBK":1, - "CSBX":1, - "CTBA":1, - "CTBX":1, - "CTCB":1, - "CTOX":1, - "CTUX":1, - "CUBX":1, - "CUCX":1, - "CURX":1, - "CZCX":1, - "CZUX":1, - "DAAX":1, - "DAHX":1, - "DAUX":1, - "DBAX":1, - "DBSS":1, - "DCBL":1, - "DCBX":1, - "DCCX":1, - "DCDX":1, - "DCEX":1, - "DCKX":1, - "DCMX":1, - "DCNX":1, - "DCPX":1, - "DCSX":1, - "DCTX":1, - "DCUX":1, - "DDBX":1, - "DDCX":1, - "DDDX":1, - "DDHX":1, - "DEGX":1, - "DENS":1, - "DEOB":1, - "DEOX":1, - "DEUT":1, - "DEUX":1, - "DEVX":1, - "DGBX":1, - "DHBX":1, - "DHKX":1, - "DHUX":1, - "DIBX":1, - "DICG":1, - "DICX":1, - "DIUX":1, - "DJCX":1, - "DKCL":1, - "DKSX":1, - "DLSC":1, - "DLXB":1, - "DMCB":1, - "DMCX":1, - "DMKB":1, - "DMKJ":1, - "DNSB":1, - "DNSX":1, - "DOBX":1, - "DOHB":1, - "DRGX":1, - "DSBX":1, - "DSCB":1, - "DSHX":1, - "DSPX":1, - "DSUX":1, - "DTCX":1, - "DTPX":1, - "DUCX":1, - "DUMX":1, - "DUNX":1, - "DURG":1, - "DVDX":1, - "DYPX":1, - "EBIL":1, - "ECBL":1, - "EDBX":1, - "EDCX":1, - "EDSX":1, - "EIBI":1, - "ESAF":1, - "ESFB":1, - "ESMF":1, - "ETCX":1, - "ETDX":1, - "EUCX":1, - "EWCX":1, - "FCBX":1, - "FCCX":1, - "FCOX":1, - "FDFX":1, - "FDRL":1, - "FEKX":1, - "FGCB":1, - "FINO":1, - "FINF":1, - "FINX":1, - "FIRN":1, - "FIRX":1, - "FMCX":1, - "FRIX":1, - "FSCX":1, - "FSFB":1, - "FZCX":1, - "FZSX":1, - "GACX":1, - "GADX":1, - "GANX":1, - "GBCB":1, - "GCBX":1, - "GCCX":1, - "GCUL":1, - "GCUX":1, - "GDCB":1, - "GDCX":1, - "GDDX":1, - "GDUX":1, - "GGBK":1, - "GGCX":1, - "GHPX":1, - "GKNX":1, - "GMBX":1, - "GMCX":1, - "GMUX":1, - "GNCX":1, - "GNSX":1, - "GODX":1, - "GOSX":1, - "GPCX":1, - "GPOX":1, - "GRAX":1, - "GSBL":1, - "GSBX":1, - "GSCB":1, - "GSCX":1, - "GSSX":1, - "GTCX":1, - "GUBX":1, - "GUCX":1, - "GUNX":1, - "GUOX":1, - "HAMX":1, - "HANX":1, - "HARC":1, - "HCBL":1, - "HCBX":1, - "HCCX":1, - "HCLX":1, - "HDCX":1, - "HDFC":1, - "HGBX":1, - "HINX":1, - "HISX":1, - "HMBX":1, - "HMNX":1, - "HOCX":1, - "HOOX":1, - "HPCX":1, - "HPSC":1, - "HPSX":1, - "HSBC":1, - "HSBX":1, - "HSCX":1, - "HSDX":1, - "HSSX":1, - "HUBX":1, - "HUCX":1, - "HUTX":1, - "HVBK":1, - "IBBK":1, - "IBKL":1, - "IBKO":1, - "ICBK":1, - "ICBL":1, - "ICHX":1, - "ICIC":1, - "ICMX":1, - "IDFB":1, - "IDIB":1, - "IDUK":1, - "IDUX":1, - "ILCB":1, - "IMPX":1, - "INCX":1, - "INDB":1, - "INDX":1, - "IOBA":1, - "IPCX":1, - "IPOS":1, - "IPPB":1, - "IPSX":1, - "ISBX":1, - "ISMX":1, - "ITBL":1, - "ITCX":1, - "ITDX":1, - "IUCB":1, - "IUCX":1, - "JACX":1, - "JAKA":1, - "JALX":1, - "JAMX":1, - "JANA":1, - "JANX":1, - "JASB":1, - "JASX":1, - "JAUX":1, - "JBHX":1, - "JBIX":1, - "JBMX":1, - "JCBX":1, - "JCCB":1, - "JCCX":1, - "JCDX":1, - "JCHX":1, - "JCPX":1, - "JCUX":1, - "JDCX":1, - "JDEX":1, - "JGBX":1, - "JGCX":1, - "JGWX":1, - "JHAX":1, - "JHSX":1, - "JHUX":1, - "JIBX":1, - "JICX":1, - "JIDX":1, - "JIGX":1, - "JIKX":1, - "JIMX":1, - "JINX":1, - "JIOP":1, - "JIOX":1, - "JIRX":1, - "JISX":1, - "JIVX":1, - "JJCX":1, - "JJHX":1, - "JJSB":1, - "JKAX":1, - "JKCX":1, - "JKDX":1, - "JKEX":1, - "JKHX":1, - "JKMX":1, - "JKRX":1, - "JKSX":1, - "JLCX":1, - "JLDX":1, - "JLNX":1, - "JLSX":1, - "JLWX":1, - "JMAX":1, - "JMBX":1, - "JMCX":1, - "JMDX":1, - "JMHX":1, - "JMMX":1, - "JMOX":1, - "JMPX":1, - "JMSX":1, - "JMYX":1, - "JNAX":1, - "JNDX":1, - "JNSX":1, - "JODX":1, - "JONX":1, - "JOWX":1, - "JPAX":1, - "JPCB":1, - "JPCX":1, - "JRAX":1, - "JRKX":1, - "JRNX":1, - "JRSX":1, - "JSAB":1, - "JSAX":1, - "JSBL":1, - "JSBP":1, - "JSBX":1, - "JSCX":1, - "JSDX":1, - "JSEX":1, - "JSFB":1, - "JSHX":1, - "JSKX":1, - "JSMX":1, - "JSOX":1, - "JSRX":1, - "JSTX":1, - "JSVX":1, - "JSWX":1, - "JTIX":1, - "JTSX":1, - "JUCX":1, - "JUSX":1, - "JVCX":1, - "KAAX":1, - "KACE":1, - "KACX":1, - "KADX":1, - "KAGX":1, - "KAIJ":1, - "KALX":1, - "KAMX":1, - "KANG":1, - "KANX":1, - "KARB":1, - "KARX":1, - "KASX":1, - "KATX":1, - "KAYX":1, - "KBCX":1, - "KBNX":1, - "KBSX":1, - "KCBL":1, - "KCBX":1, - "KCCB":1, - "KCCX":1, - "KCDX":1, - "KCEX":1, - "KCOB":1, - "KCUB":1, - "KCUX":1, - "KDBX":1, - "KDCB":1, - "KDCX":1, - "KDIX":1, - "KDNX":1, - "KDUX":1, - "KEMX":1, - "KESX":1, - "KGBX":1, - "KGDX":1, - "KGRB":1, - "KGSX":1, - "KHAX":1, - "KHCX":1, - "KHDX":1, - "KHNX":1, - "KHUX":1, - "KICX":1, - "KJSB":1, - "KJSX":1, - "KKBK":1, - "KKMX":1, - "KKSX":1, - "KLGB":1, - "KLMX":1, - "KMCB":1, - "KMCX":1, - "KMNX":1, - "KMSX":1, - "KNBX":1, - "KNCX":1, - "KNNX":1, - "KNPX":1, - "KNSB":1, - "KNSX":1, - "KOBX":1, - "KOCX":1, - "KODX":1, - "KOEX":1, - "KOLH":1, - "KOSX":1, - "KOTX":1, - "KOYX":1, - "KPCX":1, - "KRCX":1, - "KRDX":1, - "KRIX":1, - "KRMX":1, - "KRNX":1, - "KRTH":1, - "KRTX":1, - "KSBK":1, - "KSBX":1, - "KSCB":1, - "KSCX":1, - "KSMX":1, - "KSNX":1, - "KSTX":1, - "KSUX":1, - "KTBX":1, - "KTCX":1, - "KTDX":1, - "KTTX":1, - "KUBX":1, - "KUCB":1, - "KUCX":1, - "KUKX":1, - "KULX":1, - "KUMX":1, - "KUNS":1, - "KURX":1, - "KVBL":1, - "KVCX":1, - "KVGB":1, - "KYDX":1, - "LACX":1, - "LATX":1, - "LAVB":1, - "LBMX":1, - "LCBX":1, - "LCCX":1, - "LDCX":1, - "LDPX":1, - "LDRX":1, - "LECX":1, - "LICB":1, - "LKBL":1, - "LKCX":1, - "LKHX":1, - "LKMX":1, - "LMNX":1, - "LNSX":1, - "LOKX":1, - "LONX":1, - "LUCX":1, - "LULX":1, - "MABL":1, - "MACX":1, - "MADX":1, - "MAGX":1, - "MAHB":1, - "MAHG":1, - "MAHX":1, - "MAJX":1, - "MAKX":1, - "MALX":1, - "MAMX":1, - "MANX":1, - "MAPX":1, - "MASX":1, - "MAUX":1, - "MAVX":1, - "MAYX":1, - "MBCX":1, - "MBGX":1, - "MBLX":1, - "MCAX":1, - "MCBL":1, - "MCBX":1, - "MCCX":1, - "MCDX":1, - "MCLX":1, - "MCOX":1, - "MCSX":1, - "MCUX":1, - "MDCB":1, - "MDCX":1, - "MDEX":1, - "MDGX":1, - "MDIX":1, - "MDMX":1, - "MDPX":1, - "MEDX":1, - "MERX":1, - "MEUX":1, - "MFCX":1, - "MFUX":1, - "MGBX":1, - "MGCB":1, - "MGCX":1, - "MGDX":1, - "MGRB":1, - "MGSX":1, - "MGUX":1, - "MHCB":1, - "MHCX":1, - "MHEX":1, - "MHLX":1, - "MHMX":1, - "MHNX":1, - "MHSX":1, - "MHUX":1, - "MIZX":1, - "MJCX":1, - "MKPB":1, - "MKUX":1, - "MKYX":1, - "MLDX":1, - "MMCX":1, - "MMMX":1, - "MNBX":1, - "MNCX":1, - "MNSX":1, - "MOGX":1, - "MOUX":1, - "MPCX":1, - "MPDX":1, - "MPRX":1, - "MRBX":1, - "MRTX":1, - "MSAX":1, - "MSBL":1, - "MSBX":1, - "MSCI":1, - "MSCX":1, - "MSHQ":1, - "MSLM":1, - "MSNU":1, - "MSNX":1, - "MSOX":1, - "MSSX":1, - "MUBL":1, - "MUBX":1, - "MUCX":1, - "MUDX":1, - "MUNX":1, - "MUPX":1, - "MURX":1, - "MUSX":1, - "MVCB":1, - "MVCX":1, - "MVIX":1, - "MYAX":1, - "MYSX":1, - "MZCX":1, - "MZRX":1, - "NABX":1, - "NACX":1, - "NAGX":1, - "NAIX":1, - "NALX":1, - "NANX":1, - "NASX":1, - "NATA":1, - "NAUX":1, - "NAVX":1, - "NAWX":1, - "NBAD":1, - "NBBX":1, - "NBCX":1, - "NBMX":1, - "NBRD":1, - "NCBL":1, - "NCBX":1, - "NCCX":1, - "NCOX":1, - "NCUB":1, - "NCUX":1, - "NDCB":1, - "NDCX":1, - "NDDX":1, - "NDGX":1, - "NDIX":1, - "NESF":1, - "NEYX":1, - "NGBX":1, - "NGKX":1, - "NGNX":1, - "NGRX":1, - "NGSB":1, - "NGSX":1, - "NICB":1, - "NIDX":1, - "NILX":1, - "NIRX":1, - "NIUX":1, - "NJBK":1, - "NJCX":1, - "NJGX":1, - "NJMX":1, - "NJSX":1, - "NKGS":1, - "NLGX":1, - "NLUX":1, - "NMCB":1, - "NMCX":1, - "NMGB":1, - "NNCX":1, - "NNSB":1, - "NNSX":1, - "NOBX":1, - "NOIX":1, - "NOSC":1, - "NPCX":1, - "NPKX":1, - "NRDX":1, - "NSBB":1, - "NSBX":1, - "NSCX":1, - "NSGX":1, - "NSIX":1, - "NSJX":1, - "NSMX":1, - "NSPB":1, - "NSPX":1, - "NSRX":1, - "NTBL":1, - "NUBX":1, - "NUCB":1, - "NUCX":1, - "NVCX":1, - "NVNM":1, - "NVSX":1, - "NWCX":1, - "ODCX":1, - "ODGB":1, - "OIBA":1, - "OMCX":1, - "ONSX":1, - "ORBC":1, - "ORCB":1, - "OSMX":1, - "PABX":1, - "PACX":1, - "PADX":1, - "PALX":1, - "PANX":1, - "PARX":1, - "PASX":1, - "PATX":1, - "PAYX":1, - "PBGX":1, - "PCBL":1, - "PCBX":1, - "PCCB":1, - "PCCX":1, - "PCLX":1, - "PCMX":1, - "PCOX":1, - "PCPX":1, - "PCSX":1, - "PCTX":1, - "PCUX":1, - "PDBX":1, - "PDCX":1, - "PDNX":1, - "PDSX":1, - "PDUX":1, - "PGBX":1, - "PGCX":1, - "PGRX":1, - "PGTX":1, - "PITX":1, - "PJSB":1, - "PKBX":1, - "PKDX":1, - "PKGB":1, - "PLOX":1, - "PLUX":1, - "PMCB":1, - "PMCX":1, - "PMEC":1, - "PMNX":1, - "PNCX":1, - "PNMX":1, - "PNPX":1, - "PNSX":1, - "PPBX":1, - "PPCX":1, - "PRCX":1, - "PREX":1, - "PROX":1, - "PRPX":1, - "PRSX":1, - "PRTH":1, - "PSBX":1, - "PSCX":1, - "PSIB":1, - "PSRX":1, - "PSSX":1, - "PTCX":1, - "PTNX":1, - "PTSX":1, - "PUBX":1, - "PUCB":1, - "PUCX":1, - "PUDX":1, - "PUGX":1, - "PUNB":1, - "PUNX":1, - "PURX":1, - "PUSD":1, - "PUSX":1, - "PUUX":1, - "PVAX":1, - "PVCX":1, - "PVVX":1, - "PWUX":1, - "PYCX":1, - "PYTM":1, - "QNBA":1, - "QUCX":1, - "RABO":1, - "RACX":1, - "RAEX":1, - "RAJX":1, - "RAKX":1, - "RAMX":1, - "RANX":1, - "RATN":1, - "RAUX":1, - "RBBX":1, - "RBCX":1, - "RBIS":1, - "RBIH":1, - "RCBX":1, - "RCCX":1, - "RCDX":1, - "RCMX":1, - "RCUX":1, - "RDCX":1, - "RDNX":1, - "REBX":1, - "RECX":1, - "REWX":1, - "RGCX":1, - "RGSX":1, - "RHMX":1, - "RJCX":1, - "RJJX":1, - "RJNX":1, - "RJTX":1, - "RKCX":1, - "RLUX":1, - "RMGB":1, - "RNBX":1, - "RNDX":1, - "RNGX":1, - "RNSB":1, - "RNSX":1, - "ROCX":1, - "ROHX":1, - "RPUX":1, - "RRBP":1, - "RRSX":1, - "RSBL":1, - "RSBX":1, - "RSCB":1, - "RSSX":1, - "RSUX":1, - "RSVX":1, - "RUCX":1, - "RUKX":1, - "RUMX":1, - "RZSX":1, - "SABR":1, - "SABX":1, - "SACB":1, - "SACX":1, - "SADX":1, - "SAGX":1, - "SAHE":1, - "SAHX":1, - "SAIX":1, - "SALX":1, - "SAMX":1, - "SANT":1, - "SANX":1, - "SAPX":1, - "SARX":1, - "SASA":1, - "SASX":1, - "SATX":1, - "SAUX":1, - "SAVX":1, - "SAWX":1, - "SBBJ":1, - "SBCX":1, - "SBHY":1, - "SBIN":1, - "SBKX":1, - "SBLD":1, - "SBLS":1, - "SBLX":1, - "SBMX":1, - "SBMY":1, - "SBNX":1, - "SBPX":1, - "SBSX":1, - "SBTR":1, - "SBUJ":1, - "SBUX":1, - "SCBL":1, - "SCBX":1, - "SCCX":1, - "SCDX":1, - "SCIX":1, - "SCNX":1, - "SCOB":1, - "SCOX":1, - "SCPX":1, - "SCSX":1, - "SCUX":1, - "SDBX":1, - "SDCB":1, - "SDCE":1, - "SDCX":1, - "SDHX":1, - "SDSX":1, - "SDTX":1, - "SDUX":1, - "SEMX":1, - "SENX":1, - "SEUX":1, - "SEWX":1, - "SGCX":1, - "SGLX":1, - "SGSX":1, - "SGUX":1, - "SHAX":1, - "SHBK":1, - "SHBX":1, - "SHCX":1, - "SHEX":1, - "SHGX":1, - "SHIX":1, - "SHKX":1, - "SHMX":1, - "SHNX":1, - "SHOX":1, - "SHRX":1, - "SHSX":1, - "SHUX":1, - "SIBL":1, - "SIBX":1, - "SICX":1, - "SIDB":1, - "SIDC":1, - "SIDX":1, - "SIGX":1, - "SIHX":1, - "SIKX":1, - "SINX":1, - "SIRX":1, - "SISX":1, - "SITX":1, - "SIWX":1, - "SJGX":1, - "SJSB":1, - "SJSX":1, - "SKCX":1, - "SKKX":1, - "SKNX":1, - "SKSB":1, - "SKUX":1, - "SLAX":1, - "SLCX":1, - "SMBC":1, - "SMBX":1, - "SMCB":1, - "SMCX":1, - "SMEX":1, - "SMMX":1, - "SMNX":1, - "SMPX":1, - "SMSX":1, - "SMTX":1, - "SMUX":1, - "SMVC":1, - "SMWX":1, - "SNAX":1, - "SNBK":1, - "SNBX":1, - "SNCX":1, - "SNDX":1, - "SNGX":1, - "SNKX":1, - "SNLX":1, - "SNPX":1, - "SNSV":1, - "SNSX":1, - "SOBX":1, - "SOGE":1, - "SOLX":1, - "SONX":1, - "SPBX":1, - "SPCB":1, - "SPCX":1, - "SPNX":1, - "SPSX":1, - "SPTX":1, - "SRCB":1, - "SRCX":1, - "SREX":1, - "SRGX":1, - "SRHX":1, - "SRSX":1, - "SSBL":1, - "SSBX":1, - "SSDX":1, - "SSHX":1, - "SSKX":1, - "SSLX":1, - "SSNX":1, - "SSOX":1, - "SSSX":1, - "SSWX":1, - "STBP":1, - "STCB":1, - "STCX":1, - "STDX":1, - "STRX":1, - "SUBX":1, - "SUCX":1, - "SUDX":1, - "SULX":1, - "SUMX":1, - "SUNB":1, - "SURX":1, - "SURY":1, - "SUSX":1, - "SUTB":1, - "SUVX":1, - "SVAX":1, - "SVBL":1, - "SVCB":1, - "SVCX":1, - "SVGX":1, - "SVNX":1, - "SVOX":1, - "SVRX":1, - "SVSH":1, - "SVSX":1, - "SWMX":1, - "SWSX":1, - "SYNB":1, - "TACX":1, - "TADX":1, - "TAMX":1, - "TAPX":1, - "TASX":1, - "TBCX":1, - "TBDX":1, - "TBHX":1, - "TBMX":1, - "TBPX":1, - "TBSB":1, - "TBSX":1, - "TBTX":1, - "TBUX":1, - "TCBX":1, - "TCCX":1, - "TCHX":1, - "TCPX":1, - "TCUB":1, - "TCUX":1, - "TDBX":1, - "TDCB":1, - "TDCX":1, - "TDIX":1, - "TDMX":1, - "TDPX":1, - "TDSX":1, - "TECX":1, - "TEHX":1, - "TEMX":1, - "TESX":1, - "TETX":1, - "TFCX":1, - "TGBX":1, - "TGCG":1, - "TGCX":1, - "TGDX":1, - "TGMB":1, - "TGNX":1, - "TGUX":1, - "THCX":1, - "THOX":1, - "THRS":1, - "THRX":1, - "THWX":1, - "TIDX":1, - "TIRX":1, - "TJAX":1, - "TJBX":1, - "TJCX":1, - "TJDX":1, - "TJMX":1, - "TJNX":1, - "TJSB":1, - "TKAX":1, - "TKCX":1, - "TKDX":1, - "TKTX":1, - "TKUX":1, - "TLPX":1, - "TMAX":1, - "TMBL":1, - "TMBX":1, - "TMCX":1, - "TMNX":1, - "TMPX":1, - "TMSC":1, - "TMSX":1, - "TMTX":1, - "TMUX":1, - "TNBX":1, - "TNCX":1, - "TNDC":1, - "TNEX":1, - "TNHX":1, - "TNIX":1, - "TNKX":1, - "TNMX":1, - "TNSC":1, - "TNUX":1, - "TOCX":1, - "TPCX":1, - "TPDX":1, - "TPSX":1, - "TPUX":1, - "TRAX":1, - "TRDX":1, - "TSAB":1, - "TSAX":1, - "TSBX":1, - "TSCX":1, - "TSDX":1, - "TSIX":1, - "TSMX":1, - "TSNX":1, - "TSPX":1, - "TSSB":1, - "TSSX":1, - "TSUX":1, - "TTBX":1, - "TTCB":1, - "TTCX":1, - "TTGX":1, - "TTLX":1, - "TTUX":1, - "TUBX":1, - "TUCL":1, - "TUCX":1, - "TUDX":1, - "TUMX":1, - "TUNX":1, - "TUOX":1, - "TUPX":1, - "TURX":1, - "TVBX":1, - "TVDX":1, - "TVPX":1, - "TVUX":1, - "TYCX":1, - "UBBX":1, - "UBGX":1, - "UBIN":1, - "UCBA":1, - "UCBS":1, - "UCBX":1, - "UCCX":1, - "UCDX":1, - "UCUX":1, - "UGBX":1, - "UICX":1, - "UJSX":1, - "UJVN":1, - "UKGX":1, - "UMAX":1, - "UMCX":1, - "UMSX":1, - "UMUX":1, - "UNAX":1, - "UNIX":1, - "UNMX":1, - "UNSX":1, - "UOVB":1, - "UPCB":1, - "UPCX":1, - "URBN":1, - "URCX":1, - "URDX":1, - "URMX":1, - "UROX":1, - "USFB":1, - "USNX":1, - "UTBI":1, - "UTBX":1, - "UTCX":1, - "UTGX":1, - "UTIB":1, - "UTKS":1, - "UTKX":1, - "UTZX":1, - "UUCX":1, - "VADX":1, - "VAIX":1, - "VANX":1, - "VARA":1, - "VASJ":1, - "VASX":1, - "VAUX":1, - "VCAX":1, - "VCBX":1, - "VCCX":1, - "VCNB":1, - "VCOB":1, - "VCOX":1, - "VDCX":1, - "VDYX":1, - "VEDX":1, - "VERX":1, - "VGBX":1, - "VHDX":1, - "VICX":1, - "VIDX":1, - "VIJB":1, - "VIJX":1, - "VIKX":1, - "VIMX":1, - "VIRX":1, - "VISX":1, - "VJSX":1, - "VKCX":1, - "VKSX":1, - "VMCX":1, - "VMMX":1, - "VMUX":1, - "VNSX":1, - "VRDX":1, - "VSBL":1, - "VSBX":1, - "VSCX":1, - "VSSX":1, - "VSVX":1, - "VUCX":1, - "VVCX":1, - "VVSB":1, - "VYAX":1, - "VYPX":1, - "VYSA":1, - "WACX":1, - "WAIX":1, - "WARX":1, - "WAUX":1, - "WBSC":1, - "WCBX":1, - "WDCX":1, - "WKGX":1, - "WNBX":1, - "WPAC":1, - "WRCX":1, - "WUCX":1, - "WZUX":1, - "XJKG":1, - "YADX":1, - "YAVX":1, - "YCBX":1, - "YDCX":1, - "YESB":1, - "YLNX":1, - "YMSX":1, - "YNCX":1, - "YNSX":1, - "ZBBX":1, - "ZBSX":1, - "ZCBL":1, - "ZIBX":1, - "ZILX":1, - "ZIMX":1, - "ZISX":1, - "ZLLX":1, - "ZRNB":1, - "ZMMX":1, - "ZSAX":1, - "ZSBL":1, - "ZSBX":1, - "ZSGX":1, - "ZSHX":1, - "ZSJX":1, - "ZSKX":1, - "ZSLX":1, - "ZSMX":1, +var bankCodes = map[string]int{ + "AACX": 1, + "ABBL": 1, + "ABCX": 1, + "ABDX": 1, + "ABEX": 1, + "ABHY": 1, + "ABNA": 1, + "ABPB": 1, + "ABSB": 1, + "ABUX": 1, + "ACAX": 1, + "ACBX": 1, + "ACCX": 1, + "ACKX": 1, + "ACOX": 1, + "ACUB": 1, + "ACUX": 1, + "ADBX": 1, + "ADCB": 1, + "ADCC": 1, + "ADCX": 1, + "ADDX": 1, + "AGCX": 1, + "AGDX": 1, + "AGRX": 1, + "AGSX": 1, + "AGUX": 1, + "AGVX": 1, + "AHMX": 1, + "AHUX": 1, + "AIRP": 1, + "AJAR": 1, + "AJHC": 1, + "AJKB": 1, + "AJMX": 1, + "AJNX": 1, + "AJPX": 1, + "AJSX": 1, + "AJUX": 1, + "AKJB": 1, + "AKMX": 1, + "AKOX": 1, + "ALAX": 1, + "ALIX": 1, + "ALLA": 1, + "ALLX": 1, + "ALWX": 1, + "AMAX": 1, + "AMBX": 1, + "AMCB": 1, + "AMCX": 1, + "AMDN": 1, + "AMMX": 1, + "AMNX": 1, + "AMRX": 1, + "AMSB": 1, + "AMSX": 1, + "ANBX": 1, + "ANDB": 1, + "ANDX": 1, + "ANMX": 1, + "ANSX": 1, + "ANUX": 1, + "ANZB": 1, + "APBL": 1, + "APCX": 1, + "APGB": 1, + "APGV": 1, + "APGX": 1, + "APJX": 1, + "APMC": 1, + "APMX": 1, + "APNX": 1, + "APRX": 1, + "APSX": 1, + "ARCX": 1, + "ARMX": 1, + "ARYX": 1, + "ASBL": 1, + "ASBX": 1, + "ASHX": 1, + "ASKX": 1, + "ASNX": 1, + "ASOX": 1, + "ASSX": 1, + "AUBL": 1, + "AUBX": 1, + "AUCB": 1, + "AUCX": 1, + "AUGX": 1, + "AURX": 1, + "AVDX": 1, + "AWCX": 1, + "AWUX": 1, + "AZAX": 1, + "AZPX": 1, + "AZSX": 1, + "AZUX": 1, + "BACB": 1, + "BACX": 1, + "BADX": 1, + "BALX": 1, + "BANX": 1, + "BARA": 1, + "BARB": 1, + "BARC": 1, + "BARX": 1, + "BASX": 1, + "BAUX": 1, + "BAVX": 1, + "BBKM": 1, + "BBLX": 1, + "BBRX": 1, + "BBSX": 1, + "BBUX": 1, + "BBVX": 1, + "BCBM": 1, + "BCBX": 1, + "BCCB": 1, + "BCCX": 1, + "BCEX": 1, + "BCEY": 1, + "BCOX": 1, + "BCUB": 1, + "BCUX": 1, + "BDBL": 1, + "BDBX": 1, + "BDCX": 1, + "BDDX": 1, + "BDIX": 1, + "BDNX": 1, + "BDOX": 1, + "BDUX": 1, + "BEDX": 1, + "BELX": 1, + "BFUX": 1, + "BGBX": 1, + "BGCX": 1, + "BGGX": 1, + "BGUX": 1, + "BGVX": 1, + "BHAX": 1, + "BHBX": 1, + "BHCX": 1, + "BHDX": 1, + "BHEX": 1, + "BHGX": 1, + "BHIX": 1, + "BHJX": 1, + "BHMX": 1, + "BHOX": 1, + "BHRX": 1, + "BHSX": 1, + "BHTX": 1, + "BHUX": 1, + "BHWX": 1, + "BJUX": 1, + "BKCX": 1, + "BKDN": 1, + "BKDX": 1, + "BKID": 1, + "BKSX": 1, + "BLGX": 1, + "BMBL": 1, + "BMCB": 1, + "BMCX": 1, + "BMPX": 1, + "BMSX": 1, + "BNBX": 1, + "BNCX": 1, + "BNPA": 1, + "BNSB": 1, + "BNSX": 1, + "BODX": 1, + "BOFA": 1, + "BORX": 1, + "BOTM": 1, + "BOTX": 1, + "BPCX": 1, + "BPSX": 1, + "BRCX": 1, + "BRDX": 1, + "BRGX": 1, + "BRMX": 1, + "BRSX": 1, + "BRUX": 1, + "BSBX": 1, + "BSCX": 1, + "BTCX": 1, + "BTUX": 1, + "BUBX": 1, + "BUCL": 1, + "BUCX": 1, + "BUGX": 1, + "BUNX": 1, + "BURX": 1, + "BUSX": 1, + "BUZX": 1, + "BVNX": 1, + "BVSX": 1, + "BWCX": 1, + "CALX": 1, + "CBHX": 1, + "CBIN": 1, + "CCBL": 1, + "CCBX": 1, + "CCCX": 1, + "CCMX": 1, + "CCOB": 1, + "CCUX": 1, + "CDCX": 1, + "CEBX": 1, + "CGBX": 1, + "CGGX": 1, + "CHAS": 1, + "CHAX": 1, + "CHBX": 1, + "CHCX": 1, + "CHDX": 1, + "CHIX": 1, + "CHKX": 1, + "CHPX": 1, + "CHRX": 1, + "CHSX": 1, + "CHTX": 1, + "CIDX": 1, + "CITI": 1, + "CITX": 1, + "CIUB": 1, + "CJAX": 1, + "CJMX": 1, + "CLBL": 1, + "CMCB": 1, + "CMCX": 1, + "CMDX": 1, + "CMLX": 1, + "CMPX": 1, + "CNRB": 1, + "CNSX": 1, + "COCX": 1, + "COLX": 1, + "COMX": 1, + "CONX": 1, + "CORP": 1, + "COSB": 1, + "CPDX": 1, + "CPSN": 1, + "CRBX": 1, + "CRES": 1, + "CRLY": 1, + "CRSX": 1, + "CRUB": 1, + "CSBK": 1, + "CSBX": 1, + "CTBA": 1, + "CTBX": 1, + "CTCB": 1, + "CTOX": 1, + "CTUX": 1, + "CUBX": 1, + "CUCX": 1, + "CURX": 1, + "CZCX": 1, + "CZUX": 1, + "DAAX": 1, + "DAHX": 1, + "DAUX": 1, + "DBAX": 1, + "DBSS": 1, + "DCBL": 1, + "DCBX": 1, + "DCCX": 1, + "DCDX": 1, + "DCEX": 1, + "DCKX": 1, + "DCMX": 1, + "DCNX": 1, + "DCPX": 1, + "DCSX": 1, + "DCTX": 1, + "DCUX": 1, + "DDBX": 1, + "DDCX": 1, + "DDDX": 1, + "DDHX": 1, + "DEGX": 1, + "DENS": 1, + "DEOB": 1, + "DEOX": 1, + "DEUT": 1, + "DEUX": 1, + "DEVX": 1, + "DGBX": 1, + "DHBX": 1, + "DHKX": 1, + "DHUX": 1, + "DIBX": 1, + "DICG": 1, + "DICX": 1, + "DIUX": 1, + "DJCX": 1, + "DKCL": 1, + "DKSX": 1, + "DLSC": 1, + "DLXB": 1, + "DMCB": 1, + "DMCX": 1, + "DMKB": 1, + "DMKJ": 1, + "DNSB": 1, + "DNSX": 1, + "DOBX": 1, + "DOHB": 1, + "DRGX": 1, + "DSBX": 1, + "DSCB": 1, + "DSHX": 1, + "DSPX": 1, + "DSUX": 1, + "DTCX": 1, + "DTPX": 1, + "DUCX": 1, + "DUMX": 1, + "DUNX": 1, + "DURG": 1, + "DVDX": 1, + "DYPX": 1, + "EBIL": 1, + "ECBL": 1, + "EDBX": 1, + "EDCX": 1, + "EDSX": 1, + "EIBI": 1, + "ESAF": 1, + "ESFB": 1, + "ESMF": 1, + "ETCX": 1, + "ETDX": 1, + "EUCX": 1, + "EWCX": 1, + "FCBX": 1, + "FCCX": 1, + "FCOX": 1, + "FDFX": 1, + "FDRL": 1, + "FEKX": 1, + "FGCB": 1, + "FINO": 1, + "FINF": 1, + "FINX": 1, + "FIRN": 1, + "FIRX": 1, + "FMCX": 1, + "FRIX": 1, + "FSCX": 1, + "FSFB": 1, + "FZCX": 1, + "FZSX": 1, + "GACX": 1, + "GADX": 1, + "GANX": 1, + "GBCB": 1, + "GCBX": 1, + "GCCX": 1, + "GCUL": 1, + "GCUX": 1, + "GDCB": 1, + "GDCX": 1, + "GDDX": 1, + "GDUX": 1, + "GGBK": 1, + "GGCX": 1, + "GHPX": 1, + "GKNX": 1, + "GMBX": 1, + "GMCX": 1, + "GMUX": 1, + "GNCX": 1, + "GNSX": 1, + "GODX": 1, + "GOSX": 1, + "GPCX": 1, + "GPOX": 1, + "GRAX": 1, + "GSBL": 1, + "GSBX": 1, + "GSCB": 1, + "GSCX": 1, + "GSSX": 1, + "GTCX": 1, + "GUBX": 1, + "GUCX": 1, + "GUNX": 1, + "GUOX": 1, + "HAMX": 1, + "HANX": 1, + "HARC": 1, + "HCBL": 1, + "HCBX": 1, + "HCCX": 1, + "HCLX": 1, + "HDCX": 1, + "HDFC": 1, + "HGBX": 1, + "HINX": 1, + "HISX": 1, + "HMBX": 1, + "HMNX": 1, + "HOCX": 1, + "HOOX": 1, + "HPCX": 1, + "HPSC": 1, + "HPSX": 1, + "HSBC": 1, + "HSBX": 1, + "HSCX": 1, + "HSDX": 1, + "HSSX": 1, + "HUBX": 1, + "HUCX": 1, + "HUTX": 1, + "HVBK": 1, + "IBBK": 1, + "IBKL": 1, + "IBKO": 1, + "ICBK": 1, + "ICBL": 1, + "ICHX": 1, + "ICIC": 1, + "ICMX": 1, + "IDFB": 1, + "IDIB": 1, + "IDUK": 1, + "IDUX": 1, + "ILCB": 1, + "IMPX": 1, + "INCX": 1, + "INDB": 1, + "INDX": 1, + "IOBA": 1, + "IPCX": 1, + "IPOS": 1, + "IPPB": 1, + "IPSX": 1, + "ISBX": 1, + "ISMX": 1, + "ITBL": 1, + "ITCX": 1, + "ITDX": 1, + "IUCB": 1, + "IUCX": 1, + "JACX": 1, + "JAKA": 1, + "JALX": 1, + "JAMX": 1, + "JANA": 1, + "JANX": 1, + "JASB": 1, + "JASX": 1, + "JAUX": 1, + "JBHX": 1, + "JBIX": 1, + "JBMX": 1, + "JCBX": 1, + "JCCB": 1, + "JCCX": 1, + "JCDX": 1, + "JCHX": 1, + "JCPX": 1, + "JCUX": 1, + "JDCX": 1, + "JDEX": 1, + "JGBX": 1, + "JGCX": 1, + "JGWX": 1, + "JHAX": 1, + "JHSX": 1, + "JHUX": 1, + "JIBX": 1, + "JICX": 1, + "JIDX": 1, + "JIGX": 1, + "JIKX": 1, + "JIMX": 1, + "JINX": 1, + "JIOP": 1, + "JIOX": 1, + "JIRX": 1, + "JISX": 1, + "JIVX": 1, + "JJCX": 1, + "JJHX": 1, + "JJSB": 1, + "JKAX": 1, + "JKCX": 1, + "JKDX": 1, + "JKEX": 1, + "JKHX": 1, + "JKMX": 1, + "JKRX": 1, + "JKSX": 1, + "JLCX": 1, + "JLDX": 1, + "JLNX": 1, + "JLSX": 1, + "JLWX": 1, + "JMAX": 1, + "JMBX": 1, + "JMCX": 1, + "JMDX": 1, + "JMHX": 1, + "JMMX": 1, + "JMOX": 1, + "JMPX": 1, + "JMSX": 1, + "JMYX": 1, + "JNAX": 1, + "JNDX": 1, + "JNSX": 1, + "JODX": 1, + "JONX": 1, + "JOWX": 1, + "JPAX": 1, + "JPCB": 1, + "JPCX": 1, + "JRAX": 1, + "JRKX": 1, + "JRNX": 1, + "JRSX": 1, + "JSAB": 1, + "JSAX": 1, + "JSBL": 1, + "JSBP": 1, + "JSBX": 1, + "JSCX": 1, + "JSDX": 1, + "JSEX": 1, + "JSFB": 1, + "JSHX": 1, + "JSKX": 1, + "JSMX": 1, + "JSOX": 1, + "JSRX": 1, + "JSTX": 1, + "JSVX": 1, + "JSWX": 1, + "JTIX": 1, + "JTSX": 1, + "JUCX": 1, + "JUSX": 1, + "JVCX": 1, + "KAAX": 1, + "KACE": 1, + "KACX": 1, + "KADX": 1, + "KAGX": 1, + "KAIJ": 1, + "KALX": 1, + "KAMX": 1, + "KANG": 1, + "KANX": 1, + "KARB": 1, + "KARX": 1, + "KASX": 1, + "KATX": 1, + "KAYX": 1, + "KBCX": 1, + "KBNX": 1, + "KBSX": 1, + "KCBL": 1, + "KCBX": 1, + "KCCB": 1, + "KCCX": 1, + "KCDX": 1, + "KCEX": 1, + "KCOB": 1, + "KCUB": 1, + "KCUX": 1, + "KDBX": 1, + "KDCB": 1, + "KDCX": 1, + "KDIX": 1, + "KDNX": 1, + "KDUX": 1, + "KEMX": 1, + "KESX": 1, + "KGBX": 1, + "KGDX": 1, + "KGRB": 1, + "KGSX": 1, + "KHAX": 1, + "KHCX": 1, + "KHDX": 1, + "KHNX": 1, + "KHUX": 1, + "KICX": 1, + "KJSB": 1, + "KJSX": 1, + "KKBK": 1, + "KKMX": 1, + "KKSX": 1, + "KLGB": 1, + "KLMX": 1, + "KMCB": 1, + "KMCX": 1, + "KMNX": 1, + "KMSX": 1, + "KNBX": 1, + "KNCX": 1, + "KNNX": 1, + "KNPX": 1, + "KNSB": 1, + "KNSX": 1, + "KOBX": 1, + "KOCX": 1, + "KODX": 1, + "KOEX": 1, + "KOLH": 1, + "KOSX": 1, + "KOTX": 1, + "KOYX": 1, + "KPCX": 1, + "KRCX": 1, + "KRDX": 1, + "KRIX": 1, + "KRMX": 1, + "KRNX": 1, + "KRTH": 1, + "KRTX": 1, + "KSBK": 1, + "KSBX": 1, + "KSCB": 1, + "KSCX": 1, + "KSMX": 1, + "KSNX": 1, + "KSTX": 1, + "KSUX": 1, + "KTBX": 1, + "KTCX": 1, + "KTDX": 1, + "KTTX": 1, + "KUBX": 1, + "KUCB": 1, + "KUCX": 1, + "KUKX": 1, + "KULX": 1, + "KUMX": 1, + "KUNS": 1, + "KURX": 1, + "KVBL": 1, + "KVCX": 1, + "KVGB": 1, + "KYDX": 1, + "LACX": 1, + "LATX": 1, + "LAVB": 1, + "LBMX": 1, + "LCBX": 1, + "LCCX": 1, + "LDCX": 1, + "LDPX": 1, + "LDRX": 1, + "LECX": 1, + "LICB": 1, + "LKBL": 1, + "LKCX": 1, + "LKHX": 1, + "LKMX": 1, + "LMNX": 1, + "LNSX": 1, + "LOKX": 1, + "LONX": 1, + "LUCX": 1, + "LULX": 1, + "MABL": 1, + "MACX": 1, + "MADX": 1, + "MAGX": 1, + "MAHB": 1, + "MAHG": 1, + "MAHX": 1, + "MAJX": 1, + "MAKX": 1, + "MALX": 1, + "MAMX": 1, + "MANX": 1, + "MAPX": 1, + "MASX": 1, + "MAUX": 1, + "MAVX": 1, + "MAYX": 1, + "MBCX": 1, + "MBGX": 1, + "MBLX": 1, + "MCAX": 1, + "MCBL": 1, + "MCBX": 1, + "MCCX": 1, + "MCDX": 1, + "MCLX": 1, + "MCOX": 1, + "MCSX": 1, + "MCUX": 1, + "MDCB": 1, + "MDCX": 1, + "MDEX": 1, + "MDGX": 1, + "MDIX": 1, + "MDMX": 1, + "MDPX": 1, + "MEDX": 1, + "MERX": 1, + "MEUX": 1, + "MFCX": 1, + "MFUX": 1, + "MGBX": 1, + "MGCB": 1, + "MGCX": 1, + "MGDX": 1, + "MGRB": 1, + "MGSX": 1, + "MGUX": 1, + "MHCB": 1, + "MHCX": 1, + "MHEX": 1, + "MHLX": 1, + "MHMX": 1, + "MHNX": 1, + "MHSX": 1, + "MHUX": 1, + "MIZX": 1, + "MJCX": 1, + "MKPB": 1, + "MKUX": 1, + "MKYX": 1, + "MLDX": 1, + "MMCX": 1, + "MMMX": 1, + "MNBX": 1, + "MNCX": 1, + "MNSX": 1, + "MOGX": 1, + "MOUX": 1, + "MPCX": 1, + "MPDX": 1, + "MPRX": 1, + "MRBX": 1, + "MRTX": 1, + "MSAX": 1, + "MSBL": 1, + "MSBX": 1, + "MSCI": 1, + "MSCX": 1, + "MSHQ": 1, + "MSLM": 1, + "MSNU": 1, + "MSNX": 1, + "MSOX": 1, + "MSSX": 1, + "MUBL": 1, + "MUBX": 1, + "MUCX": 1, + "MUDX": 1, + "MUNX": 1, + "MUPX": 1, + "MURX": 1, + "MUSX": 1, + "MVCB": 1, + "MVCX": 1, + "MVIX": 1, + "MYAX": 1, + "MYSX": 1, + "MZCX": 1, + "MZRX": 1, + "NABX": 1, + "NACX": 1, + "NAGX": 1, + "NAIX": 1, + "NALX": 1, + "NANX": 1, + "NASX": 1, + "NATA": 1, + "NAUX": 1, + "NAVX": 1, + "NAWX": 1, + "NBAD": 1, + "NBBX": 1, + "NBCX": 1, + "NBMX": 1, + "NBRD": 1, + "NCBL": 1, + "NCBX": 1, + "NCCX": 1, + "NCOX": 1, + "NCUB": 1, + "NCUX": 1, + "NDCB": 1, + "NDCX": 1, + "NDDX": 1, + "NDGX": 1, + "NDIX": 1, + "NESF": 1, + "NEYX": 1, + "NGBX": 1, + "NGKX": 1, + "NGNX": 1, + "NGRX": 1, + "NGSB": 1, + "NGSX": 1, + "NICB": 1, + "NIDX": 1, + "NILX": 1, + "NIRX": 1, + "NIUX": 1, + "NJBK": 1, + "NJCX": 1, + "NJGX": 1, + "NJMX": 1, + "NJSX": 1, + "NKGS": 1, + "NLGX": 1, + "NLUX": 1, + "NMCB": 1, + "NMCX": 1, + "NMGB": 1, + "NNCX": 1, + "NNSB": 1, + "NNSX": 1, + "NOBX": 1, + "NOIX": 1, + "NOSC": 1, + "NPCX": 1, + "NPKX": 1, + "NRDX": 1, + "NSBB": 1, + "NSBX": 1, + "NSCX": 1, + "NSGX": 1, + "NSIX": 1, + "NSJX": 1, + "NSMX": 1, + "NSPB": 1, + "NSPX": 1, + "NSRX": 1, + "NTBL": 1, + "NUBX": 1, + "NUCB": 1, + "NUCX": 1, + "NVCX": 1, + "NVNM": 1, + "NVSX": 1, + "NWCX": 1, + "ODCX": 1, + "ODGB": 1, + "OIBA": 1, + "OMCX": 1, + "ONSX": 1, + "ORBC": 1, + "ORCB": 1, + "OSMX": 1, + "PABX": 1, + "PACX": 1, + "PADX": 1, + "PALX": 1, + "PANX": 1, + "PARX": 1, + "PASX": 1, + "PATX": 1, + "PAYX": 1, + "PBGX": 1, + "PCBL": 1, + "PCBX": 1, + "PCCB": 1, + "PCCX": 1, + "PCLX": 1, + "PCMX": 1, + "PCOX": 1, + "PCPX": 1, + "PCSX": 1, + "PCTX": 1, + "PCUX": 1, + "PDBX": 1, + "PDCX": 1, + "PDNX": 1, + "PDSX": 1, + "PDUX": 1, + "PGBX": 1, + "PGCX": 1, + "PGRX": 1, + "PGTX": 1, + "PITX": 1, + "PJSB": 1, + "PKBX": 1, + "PKDX": 1, + "PKGB": 1, + "PLOX": 1, + "PLUX": 1, + "PMCB": 1, + "PMCX": 1, + "PMEC": 1, + "PMNX": 1, + "PNCX": 1, + "PNMX": 1, + "PNPX": 1, + "PNSX": 1, + "PPBX": 1, + "PPCX": 1, + "PRCX": 1, + "PREX": 1, + "PROX": 1, + "PRPX": 1, + "PRSX": 1, + "PRTH": 1, + "PSBX": 1, + "PSCX": 1, + "PSIB": 1, + "PSRX": 1, + "PSSX": 1, + "PTCX": 1, + "PTNX": 1, + "PTSX": 1, + "PUBX": 1, + "PUCB": 1, + "PUCX": 1, + "PUDX": 1, + "PUGX": 1, + "PUNB": 1, + "PUNX": 1, + "PURX": 1, + "PUSD": 1, + "PUSX": 1, + "PUUX": 1, + "PVAX": 1, + "PVCX": 1, + "PVVX": 1, + "PWUX": 1, + "PYCX": 1, + "PYTM": 1, + "QNBA": 1, + "QUCX": 1, + "RABO": 1, + "RACX": 1, + "RAEX": 1, + "RAJX": 1, + "RAKX": 1, + "RAMX": 1, + "RANX": 1, + "RATN": 1, + "RAUX": 1, + "RBBX": 1, + "RBCX": 1, + "RBIS": 1, + "RBIH": 1, + "RCBX": 1, + "RCCX": 1, + "RCDX": 1, + "RCMX": 1, + "RCUX": 1, + "RDCX": 1, + "RDNX": 1, + "REBX": 1, + "RECX": 1, + "REWX": 1, + "RGCX": 1, + "RGSX": 1, + "RHMX": 1, + "RJCX": 1, + "RJJX": 1, + "RJNX": 1, + "RJTX": 1, + "RKCX": 1, + "RLUX": 1, + "RMGB": 1, + "RNBX": 1, + "RNDX": 1, + "RNGX": 1, + "RNSB": 1, + "RNSX": 1, + "ROCX": 1, + "ROHX": 1, + "RPUX": 1, + "RRBP": 1, + "RRSX": 1, + "RSBL": 1, + "RSBX": 1, + "RSCB": 1, + "RSSX": 1, + "RSUX": 1, + "RSVX": 1, + "RUCX": 1, + "RUKX": 1, + "RUMX": 1, + "RZSX": 1, + "SABR": 1, + "SABX": 1, + "SACB": 1, + "SACX": 1, + "SADX": 1, + "SAGX": 1, + "SAHE": 1, + "SAHX": 1, + "SAIX": 1, + "SALX": 1, + "SAMX": 1, + "SANT": 1, + "SANX": 1, + "SAPX": 1, + "SARX": 1, + "SASA": 1, + "SASX": 1, + "SATX": 1, + "SAUX": 1, + "SAVX": 1, + "SAWX": 1, + "SBBJ": 1, + "SBCX": 1, + "SBHY": 1, + "SBIN": 1, + "SBKX": 1, + "SBLD": 1, + "SBLS": 1, + "SBLX": 1, + "SBMX": 1, + "SBMY": 1, + "SBNX": 1, + "SBPX": 1, + "SBSX": 1, + "SBTR": 1, + "SBUJ": 1, + "SBUX": 1, + "SCBL": 1, + "SCBX": 1, + "SCCX": 1, + "SCDX": 1, + "SCIX": 1, + "SCNX": 1, + "SCOB": 1, + "SCOX": 1, + "SCPX": 1, + "SCSX": 1, + "SCUX": 1, + "SDBX": 1, + "SDCB": 1, + "SDCE": 1, + "SDCX": 1, + "SDHX": 1, + "SDSX": 1, + "SDTX": 1, + "SDUX": 1, + "SEMX": 1, + "SENX": 1, + "SEUX": 1, + "SEWX": 1, + "SGCX": 1, + "SGLX": 1, + "SGSX": 1, + "SGUX": 1, + "SHAX": 1, + "SHBK": 1, + "SHBX": 1, + "SHCX": 1, + "SHEX": 1, + "SHGX": 1, + "SHIX": 1, + "SHKX": 1, + "SHMX": 1, + "SHNX": 1, + "SHOX": 1, + "SHRX": 1, + "SHSX": 1, + "SHUX": 1, + "SIBL": 1, + "SIBX": 1, + "SICX": 1, + "SIDB": 1, + "SIDC": 1, + "SIDX": 1, + "SIGX": 1, + "SIHX": 1, + "SIKX": 1, + "SINX": 1, + "SIRX": 1, + "SISX": 1, + "SITX": 1, + "SIWX": 1, + "SJGX": 1, + "SJSB": 1, + "SJSX": 1, + "SKCX": 1, + "SKKX": 1, + "SKNX": 1, + "SKSB": 1, + "SKUX": 1, + "SLAX": 1, + "SLCX": 1, + "SMBC": 1, + "SMBX": 1, + "SMCB": 1, + "SMCX": 1, + "SMEX": 1, + "SMMX": 1, + "SMNX": 1, + "SMPX": 1, + "SMSX": 1, + "SMTX": 1, + "SMUX": 1, + "SMVC": 1, + "SMWX": 1, + "SNAX": 1, + "SNBK": 1, + "SNBX": 1, + "SNCX": 1, + "SNDX": 1, + "SNGX": 1, + "SNKX": 1, + "SNLX": 1, + "SNPX": 1, + "SNSV": 1, + "SNSX": 1, + "SOBX": 1, + "SOGE": 1, + "SOLX": 1, + "SONX": 1, + "SPBX": 1, + "SPCB": 1, + "SPCX": 1, + "SPNX": 1, + "SPSX": 1, + "SPTX": 1, + "SRCB": 1, + "SRCX": 1, + "SREX": 1, + "SRGX": 1, + "SRHX": 1, + "SRSX": 1, + "SSBL": 1, + "SSBX": 1, + "SSDX": 1, + "SSHX": 1, + "SSKX": 1, + "SSLX": 1, + "SSNX": 1, + "SSOX": 1, + "SSSX": 1, + "SSWX": 1, + "STBP": 1, + "STCB": 1, + "STCX": 1, + "STDX": 1, + "STRX": 1, + "SUBX": 1, + "SUCX": 1, + "SUDX": 1, + "SULX": 1, + "SUMX": 1, + "SUNB": 1, + "SURX": 1, + "SURY": 1, + "SUSX": 1, + "SUTB": 1, + "SUVX": 1, + "SVAX": 1, + "SVBL": 1, + "SVCB": 1, + "SVCX": 1, + "SVGX": 1, + "SVNX": 1, + "SVOX": 1, + "SVRX": 1, + "SVSH": 1, + "SVSX": 1, + "SWMX": 1, + "SWSX": 1, + "SYNB": 1, + "TACX": 1, + "TADX": 1, + "TAMX": 1, + "TAPX": 1, + "TASX": 1, + "TBCX": 1, + "TBDX": 1, + "TBHX": 1, + "TBMX": 1, + "TBPX": 1, + "TBSB": 1, + "TBSX": 1, + "TBTX": 1, + "TBUX": 1, + "TCBX": 1, + "TCCX": 1, + "TCHX": 1, + "TCPX": 1, + "TCUB": 1, + "TCUX": 1, + "TDBX": 1, + "TDCB": 1, + "TDCX": 1, + "TDIX": 1, + "TDMX": 1, + "TDPX": 1, + "TDSX": 1, + "TECX": 1, + "TEHX": 1, + "TEMX": 1, + "TESX": 1, + "TETX": 1, + "TFCX": 1, + "TGBX": 1, + "TGCG": 1, + "TGCX": 1, + "TGDX": 1, + "TGMB": 1, + "TGNX": 1, + "TGUX": 1, + "THCX": 1, + "THOX": 1, + "THRS": 1, + "THRX": 1, + "THWX": 1, + "TIDX": 1, + "TIRX": 1, + "TJAX": 1, + "TJBX": 1, + "TJCX": 1, + "TJDX": 1, + "TJMX": 1, + "TJNX": 1, + "TJSB": 1, + "TKAX": 1, + "TKCX": 1, + "TKDX": 1, + "TKTX": 1, + "TKUX": 1, + "TLPX": 1, + "TMAX": 1, + "TMBL": 1, + "TMBX": 1, + "TMCX": 1, + "TMNX": 1, + "TMPX": 1, + "TMSC": 1, + "TMSX": 1, + "TMTX": 1, + "TMUX": 1, + "TNBX": 1, + "TNCX": 1, + "TNDC": 1, + "TNEX": 1, + "TNHX": 1, + "TNIX": 1, + "TNKX": 1, + "TNMX": 1, + "TNSC": 1, + "TNUX": 1, + "TOCX": 1, + "TPCX": 1, + "TPDX": 1, + "TPSX": 1, + "TPUX": 1, + "TRAX": 1, + "TRDX": 1, + "TSAB": 1, + "TSAX": 1, + "TSBX": 1, + "TSCX": 1, + "TSDX": 1, + "TSIX": 1, + "TSMX": 1, + "TSNX": 1, + "TSPX": 1, + "TSSB": 1, + "TSSX": 1, + "TSUX": 1, + "TTBX": 1, + "TTCB": 1, + "TTCX": 1, + "TTGX": 1, + "TTLX": 1, + "TTUX": 1, + "TUBX": 1, + "TUCL": 1, + "TUCX": 1, + "TUDX": 1, + "TUMX": 1, + "TUNX": 1, + "TUOX": 1, + "TUPX": 1, + "TURX": 1, + "TVBX": 1, + "TVDX": 1, + "TVPX": 1, + "TVUX": 1, + "TYCX": 1, + "UBBX": 1, + "UBGX": 1, + "UBIN": 1, + "UCBA": 1, + "UCBS": 1, + "UCBX": 1, + "UCCX": 1, + "UCDX": 1, + "UCUX": 1, + "UGBX": 1, + "UICX": 1, + "UJSX": 1, + "UJVN": 1, + "UKGX": 1, + "UMAX": 1, + "UMCX": 1, + "UMSX": 1, + "UMUX": 1, + "UNAX": 1, + "UNIX": 1, + "UNMX": 1, + "UNSX": 1, + "UOVB": 1, + "UPCB": 1, + "UPCX": 1, + "URBN": 1, + "URCX": 1, + "URDX": 1, + "URMX": 1, + "UROX": 1, + "USFB": 1, + "USNX": 1, + "UTBI": 1, + "UTBX": 1, + "UTCX": 1, + "UTGX": 1, + "UTIB": 1, + "UTKS": 1, + "UTKX": 1, + "UTZX": 1, + "UUCX": 1, + "VADX": 1, + "VAIX": 1, + "VANX": 1, + "VARA": 1, + "VASJ": 1, + "VASX": 1, + "VAUX": 1, + "VCAX": 1, + "VCBX": 1, + "VCCX": 1, + "VCNB": 1, + "VCOB": 1, + "VCOX": 1, + "VDCX": 1, + "VDYX": 1, + "VEDX": 1, + "VERX": 1, + "VGBX": 1, + "VHDX": 1, + "VICX": 1, + "VIDX": 1, + "VIJB": 1, + "VIJX": 1, + "VIKX": 1, + "VIMX": 1, + "VIRX": 1, + "VISX": 1, + "VJSX": 1, + "VKCX": 1, + "VKSX": 1, + "VMCX": 1, + "VMMX": 1, + "VMUX": 1, + "VNSX": 1, + "VRDX": 1, + "VSBL": 1, + "VSBX": 1, + "VSCX": 1, + "VSSX": 1, + "VSVX": 1, + "VUCX": 1, + "VVCX": 1, + "VVSB": 1, + "VYAX": 1, + "VYPX": 1, + "VYSA": 1, + "WACX": 1, + "WAIX": 1, + "WARX": 1, + "WAUX": 1, + "WBSC": 1, + "WCBX": 1, + "WDCX": 1, + "WKGX": 1, + "WNBX": 1, + "WPAC": 1, + "WRCX": 1, + "WUCX": 1, + "WZUX": 1, + "XJKG": 1, + "YADX": 1, + "YAVX": 1, + "YCBX": 1, + "YDCX": 1, + "YESB": 1, + "YLNX": 1, + "YMSX": 1, + "YNCX": 1, + "YNSX": 1, + "ZBBX": 1, + "ZBSX": 1, + "ZCBL": 1, + "ZIBX": 1, + "ZILX": 1, + "ZIMX": 1, + "ZISX": 1, + "ZLLX": 1, + "ZRNB": 1, + "ZMMX": 1, + "ZSAX": 1, + "ZSBL": 1, + "ZSBX": 1, + "ZSGX": 1, + "ZSHX": 1, + "ZSJX": 1, + "ZSKX": 1, + "ZSLX": 1, + "ZSMX": 1, } type Bank struct { @@ -1442,6 +1442,7 @@ type Bank struct { AchCredit bool `json:"ach_credit"` AchDebit bool `json:"ach_debit"` NachDebit bool `json:"nach_debit"` + Upi bool `json:"upi",omitempty` } var bankData map[string]Bank @@ -1454,18 +1455,18 @@ func LoadBankData() { } } -func GetBankDetails(bankCode string) interface{} { +func GetBankDetails(bankCode string) *Bank { data, ok := bankData[bankCode] if !ok { return nil } var err error - data.Name, err = GetBankName(bankCode) - if err !=nil{ + data.Name, err = GetBankName(bankCode) + if err != nil { return nil } - if data.MICR != ""{ + if data.MICR != "" { data.BankCode = data.MICR[3:6] } - return data + return &data } diff --git a/src/go/Client.go b/src/go/Client.go index 1dc1f925..10fde951 100644 --- a/src/go/Client.go +++ b/src/go/Client.go @@ -48,19 +48,19 @@ func LookUP(ifsc string) (*IFSCResponse, error) { return respStruct, nil } -func ( ifsc * IFSCResponse) setBankCode(){ - if ifsc.BankCode == ""{ +func (ifsc *IFSCResponse) setBankCode() { + if ifsc.BankCode == "" { ifsc.BankCode = ifsc.GetBankCode() } } -func (ifsc * IFSCResponse) GetBankCode()string{ +func (ifsc *IFSCResponse) GetBankCode() string { return ifsc.BankCode[0:4] } -func (ifsc * IFSCResponse) GetBankName()string{ - bankName, err := GetBankName(ifsc.GetBankCode()) - if err !=nil{ +func (ifsc *IFSCResponse) GetBankName() string { + bankName, err := GetBankName(ifsc.GetBankCode()) + if err != nil { return "" } return bankName diff --git a/src/go/IFSC.go b/src/go/IFSC.go index afd143f1..071a8d47 100644 --- a/src/go/IFSC.go +++ b/src/go/IFSC.go @@ -65,12 +65,12 @@ func init() { func LoadFile(fileName string, result interface{}) error { _, fileN, _, ok := runtime.Caller(0) - if !ok{ + if !ok { return errors.New("it was not possible to recover the information. Caller function error") } - dir, _:= path.Split(fileN) + dir, _ := path.Split(fileN) jsonDir := path.Join(dir, "..") - completePath := path.Join( jsonDir, fileName) + completePath := path.Join(jsonDir, fileName) bytes, err := ioutil.ReadFile(completePath) if err != nil { return err @@ -82,20 +82,20 @@ func LoadFile(fileName string, result interface{}) error { } func Validate(code string) bool { - if len(code) != 11 || string(code[4]) != "0"{ + if len(code) != 11 || string(code[4]) != "0" { return false } bankCode := strings.ToUpper(code[0:4]) branchCode := strings.ToUpper(code[5:]) - list,ok := ifsc[bankCode] - if !ok{ + list, ok := ifsc[bankCode] + if !ok { return false } branchData, err := getData(branchCode) - if err != nil{ + if err != nil { return false } - for _, data := range list{ + for _, data := range list { if data == *branchData { return true } @@ -103,51 +103,51 @@ func Validate(code string) bool { return false } -func getData(input string)( *Data, error){ +func getData(input string) (*Data, error) { var inputBytes []byte var err error - intValue , err := strconv.ParseInt(input , 10, 32) - if err == nil{ + intValue, err := strconv.ParseInt(input, 10, 32) + if err == nil { input = strconv.Itoa(int(intValue)) } - if inputBytes , err = json.Marshal(input); err != nil{ + if inputBytes, err = json.Marshal(input); err != nil { return nil, err } var output Data - if err := json.Unmarshal(inputBytes, &output); err != nil{ + if err := json.Unmarshal(inputBytes, &output); err != nil { return nil, err } - return &output,nil + return &output, nil } -func GetBankName(code string) (string,error) { - bankName , ok := bankNames[code] +func GetBankName(code string) (string, error) { + bankName, ok := bankNames[code] if !ok { - if Validate(code){ - bankCode, ok := sublet[code] - if !ok{ - bankName, err := getCustomSubletName(code) - if err != nil{ - bankName, _ := bankNames[code[0:4]] - return bankName,nil - }else{ - return bankName, nil - } - } - return bankNames[bankCode], nil - - } else{ - return "", errors.New("invalid bank code") + if Validate(code) { + bankCode, ok := sublet[code] + if !ok { + bankName, err := getCustomSubletName(code) + if err != nil { + bankName, _ := bankNames[code[0:4]] + return bankName, nil + } else { + return bankName, nil } } - return bankName,nil + return bankNames[bankCode], nil + + } else { + return "", errors.New("invalid bank code") + } + } + return bankName, nil } -func getCustomSubletName(code string) (string, error){ - for key, value := range customSublets{ - if len(code) >= len(key) && code[0:len(key)] == key{ - bankName , ok := bankNames[value] - if !ok{ - return value,nil +func getCustomSubletName(code string) (string, error) { + for key, value := range customSublets { + if len(code) >= len(key) && code[0:len(key)] == key { + bankName, ok := bankNames[value] + if !ok { + return value, nil } return bankName, nil } @@ -155,7 +155,7 @@ func getCustomSubletName(code string) (string, error){ return "", errors.New("custom sublet name not found") } -func ValidateBankCode(bankCodeInput string) bool{ - _, ok:= bankCodes[bankCodeInput] +func ValidateBankCode(bankCodeInput string) bool { + _, ok := bankCodes[bankCodeInput] return ok } From 8a64dd20f1c6bc746b260b5da31edc653628be2a Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Wed, 17 Jun 2020 00:50:31 +0530 Subject: [PATCH 08/24] add test cases & makefile. --- Makefile | 4 +++ src/go/{Bank.go => bank.go} | 0 src/go/bank_test.go | 47 ++++++++++++++++++++++++++ src/go/{Client.go => client.go} | 0 src/go/client_test.go | 30 +++++++++++++++++ src/go/{IFSC.go => ifsc.go} | 0 src/go/ifsc_test.go | 59 +++++++++++++++++++++++++++++++++ 7 files changed, 140 insertions(+) create mode 100644 Makefile rename src/go/{Bank.go => bank.go} (100%) create mode 100644 src/go/bank_test.go rename src/go/{Client.go => client.go} (100%) create mode 100644 src/go/client_test.go rename src/go/{IFSC.go => ifsc.go} (100%) create mode 100644 src/go/ifsc_test.go diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..e1c9d1a2 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +SRC_DIR="./src/go" +.PHONY: test +test: + cd $(SRC_DIR);go test -tags=unit -timeout 2m -coverprofile=coverage.cov -v ./... diff --git a/src/go/Bank.go b/src/go/bank.go similarity index 100% rename from src/go/Bank.go rename to src/go/bank.go diff --git a/src/go/bank_test.go b/src/go/bank_test.go new file mode 100644 index 00000000..ba39a8f0 --- /dev/null +++ b/src/go/bank_test.go @@ -0,0 +1,47 @@ +package ifsc + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_BankGetDetails(t *testing.T) { + assert := assert.New(t) + result := GetBankDetails("FINO") + assert.Equal(getFINOixture(), *result) + result = GetBankDetails("PUNB") + assert.Equal(getPUNBFixture(), *result) +} +func getPUNBFixture() Bank { + return Bank{ + Name: "Punjab National Bank", + BankCode: "024", + Code: "PUNB", + Type: "PSB", + IFSC: "PUNB0244200", + MICR: "110024001", + IIN: "508568", + APBS: true, + AchCredit: true, + AchDebit: true, + NachDebit: true, + Upi: true, + } +} +func getFINOixture() Bank { + return Bank{ + Name: "Fino Payments Bank", + BankCode: "", + Code: "FINO", + Type: "PB", + IFSC: "FINO0000001", + MICR: "", + IIN: "608001", + APBS: true, + AchCredit: true, + AchDebit: false, + NachDebit: false, + Upi: true, + } +} diff --git a/src/go/Client.go b/src/go/client.go similarity index 100% rename from src/go/Client.go rename to src/go/client.go diff --git a/src/go/client_test.go b/src/go/client_test.go new file mode 100644 index 00000000..ac8b5da9 --- /dev/null +++ b/src/go/client_test.go @@ -0,0 +1,30 @@ +package ifsc + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestLookUP_Success(t *testing.T) { + +} +func TestLookUP_Failure(t *testing.T) { + assert := assert.New(t) + response, err := LookUP("KKBK0000261") + assert.Nil(err) + assert.Equal(getTestDataFixture(), *response) + +} +func getTestDataFixture() IFSCResponse { + return IFSCResponse{ + Bank: "Kotak Mahindra Bank", + Branch: "GURGAON", + Address: "JMD REGENT SQUARE,MEHRAULI GURGAON ROAD,OPPOSITE BRISTOL HOTEL,", + Contact: "4131000", + City: "GURGAON", + District: "GURGAON", + State: "HARYANA", + BankCode: "KKBK", + } +} diff --git a/src/go/IFSC.go b/src/go/ifsc.go similarity index 100% rename from src/go/IFSC.go rename to src/go/ifsc.go diff --git a/src/go/ifsc_test.go b/src/go/ifsc_test.go new file mode 100644 index 00000000..7de50d91 --- /dev/null +++ b/src/go/ifsc_test.go @@ -0,0 +1,59 @@ +package ifsc + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGetBankName_BankName(t *testing.T) { + assert := assert.New(t) + actual, ierr := GetBankName("WBSC0DJCB01") + assert.Nil(ierr) + assert.Equal("Darjeeling District Central Co-operative Bank", actual) +} + +func TestGetBankName_Sublet(t *testing.T) { + assert := assert.New(t) + fixtureData := getSubletFixture() + for input, _ := range fixtureData { + ownerBankCode := input[0:4] + actual, err := GetBankName(input) + assert.Nil(err) + expected, err := GetBankName(ownerBankCode) + assert.Nil(err) + assert.Equal(expected, actual) + } +} +func TestGetBankName_CustomSublet(t *testing.T) { + assert := assert.New(t) + fixtureData := getCustomSubletFixture() + for input, expected := range fixtureData { + actual, err := GetBankName(input) + assert.Nil(err) + assert.Equal(expected, actual) + } + +} + +func getCustomSubletFixture() map[string]string { + return map[string]string{ + "KSCB0006001": "Tumkur District Central Bank", + "VIJB0SSB001": "Shimsha Sahakara Bank Niyamitha", + "WBSC0KPCB01": "Kolkata Police Co-operative Bank", + "YESB0ADB002": "Amravati District Central Co-operative Bank", + } +} + +func getSubletFixture() map[string]string { + return map[string]string{ + "SKUX": "IBKL0116SBK", + "SPTX": "IBKL0116SSB", + "VCOX": "IBKL0116VMC", + "AURX": "IBKL01192AC", + "NMCX": "IBKL0123NMC", + "MSSX": "IBKL01241MB", + "TNCX": "IBKL01248NC", + "URDX": "IBKL01263UC", + } +} From 5a3434b7122c6cd725079a2bde0e4e605c40f0c0 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Wed, 9 Sep 2020 11:23:25 +0530 Subject: [PATCH 09/24] add test cases & fix bankcode. --- go.mod | 5 ++ go.sum | 11 +++++ src/go.mod | 3 -- src/go/client.go | 7 ++- src/go/client_test.go | 104 +++++++++++++++++++++++++++++++++++++----- src/go/ifsc_test.go | 31 ++++++++++++- 6 files changed, 141 insertions(+), 20 deletions(-) create mode 100644 go.mod create mode 100644 go.sum delete mode 100644 src/go.mod diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..a16d4f87 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/gyanesh-m/ifsc + +go 1.13 + +require github.com/stretchr/testify v1.6.1 diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..afe7890c --- /dev/null +++ b/go.sum @@ -0,0 +1,11 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/src/go.mod b/src/go.mod deleted file mode 100644 index a6eeec89..00000000 --- a/src/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/gyanesh-m/ifsc/src - -go 1.13 diff --git a/src/go/client.go b/src/go/client.go index 10fde951..9556f6d2 100644 --- a/src/go/client.go +++ b/src/go/client.go @@ -17,6 +17,7 @@ type IFSCResponse struct { City string `json:"CITY"` District string `json:"DISTRICT"` State string `json:"STATE"` + IFSC string `json:"IFSC"` BankCode string } @@ -49,13 +50,11 @@ func LookUP(ifsc string) (*IFSCResponse, error) { } func (ifsc *IFSCResponse) setBankCode() { - if ifsc.BankCode == "" { - ifsc.BankCode = ifsc.GetBankCode() - } + ifsc.BankCode = ifsc.GetBankCode() } func (ifsc *IFSCResponse) GetBankCode() string { - return ifsc.BankCode[0:4] + return ifsc.IFSC[0:4] } func (ifsc *IFSCResponse) GetBankName() string { diff --git a/src/go/client_test.go b/src/go/client_test.go index ac8b5da9..e0244883 100644 --- a/src/go/client_test.go +++ b/src/go/client_test.go @@ -1,21 +1,10 @@ package ifsc import ( + "reflect" "testing" - - "github.com/stretchr/testify/assert" ) -func TestLookUP_Success(t *testing.T) { - -} -func TestLookUP_Failure(t *testing.T) { - assert := assert.New(t) - response, err := LookUP("KKBK0000261") - assert.Nil(err) - assert.Equal(getTestDataFixture(), *response) - -} func getTestDataFixture() IFSCResponse { return IFSCResponse{ Bank: "Kotak Mahindra Bank", @@ -25,6 +14,97 @@ func getTestDataFixture() IFSCResponse { City: "GURGAON", District: "GURGAON", State: "HARYANA", + IFSC: "KKBK0000261", BankCode: "KKBK", } } + +func TestLookUP(t *testing.T) { + type args struct { + ifsc string + } + ifscResp := getTestDataFixture() + tests := []struct { + name string + args args + want *IFSCResponse + wantErr bool + }{ + { + "success", + args{"KKBK0000261"}, + &ifscResp, + false, + }, + { + "failure", + args{"KKB0000201"}, + nil, + true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := LookUP(tt.args.ifsc) + if (err != nil) != tt.wantErr { + t.Errorf("LookUP() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("LookUP() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestIFSCResponse_GetBankName(t *testing.T) { + type fields struct { + Bank string + Branch string + Address string + Contact string + City string + District string + State string + BankCode string + IFSC string + } + tests := []struct { + name string + fields fields + want string + }{ + { + "success", + fields{ + IFSC: "HDFC0CADARS", + }, + "HDFC Bank", + }, + { + "failure", + fields{ + IFSC: "12 B", + }, + "", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ifsc := &IFSCResponse{ + Bank: tt.fields.Bank, + Branch: tt.fields.Branch, + Address: tt.fields.Address, + Contact: tt.fields.Contact, + City: tt.fields.City, + District: tt.fields.District, + State: tt.fields.State, + BankCode: tt.fields.BankCode, + IFSC: tt.fields.IFSC, + } + if got := ifsc.GetBankName(); got != tt.want { + t.Errorf("IFSCResponse.GetBankName() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/src/go/ifsc_test.go b/src/go/ifsc_test.go index 7de50d91..9b7cdaa3 100644 --- a/src/go/ifsc_test.go +++ b/src/go/ifsc_test.go @@ -25,7 +25,7 @@ func TestGetBankName_Sublet(t *testing.T) { assert.Equal(expected, actual) } } -func TestGetBankName_CustomSublet(t *testing.T) { +func TestGetBankName_CustomSublet_Success(t *testing.T) { assert := assert.New(t) fixtureData := getCustomSubletFixture() for input, expected := range fixtureData { @@ -57,3 +57,32 @@ func getSubletFixture() map[string]string { "URDX": "IBKL01263UC", } } + +func TestValidateBankCode(t *testing.T) { + type args struct { + bankCodeInput string + } + tests := []struct { + name string + args args + want bool + }{ + { + "success", + args{"ABCX"}, + true, + }, + { + "failure", + args{"Aaaa"}, + false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := ValidateBankCode(tt.args.bankCodeInput); got != tt.want { + t.Errorf("ValidateBankCode() = %v, want %v", got, tt.want) + } + }) + } +} From 57656e65e462c1184bf73ea107dbb46ba126e63d Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Wed, 9 Sep 2020 19:03:50 +0530 Subject: [PATCH 10/24] update readme and make bank code constants. --- README.md | 79 +- src/go/bank.go | 2844 +++++++++++++++++++++---------------------- src/go/bank_test.go | 4 +- src/go/constants.go | 1426 ++++++++++++++++++++++ 4 files changed, 2928 insertions(+), 1425 deletions(-) create mode 100644 src/go/constants.go diff --git a/README.md b/README.md index 66b6b036..befc68b6 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,16 @@ The minimum [PHP version supported is 7.2](https://endoflife.date/php). `$ npm install ifsc` +## Go + +`$ go get -u github.com/razorpay/ifsc` + +To use the go pkg, the import path should be: + +```go +import "github.com/razorpay/ifsc/src/go" +``` + ## Support Matrix Only the latest version of each SDK is considered. @@ -91,10 +101,11 @@ Only the latest version of each SDK is considered. | PHP | ✅ | ✅ | ✅ (✅) | ✅ | | Ruby | ✅ | ✅ | ✅ (✅) | ✅ | | Node.js | ✅ | ✅ | ❎ (❎) | ✅ | +| Go | ✅ | ✅ | ✅ (✅) | ✅ | ## API Documentation -This repository also hosts the source code for 3 modules: PHP/Node.js/Ruby as of now. +This repository also hosts the source code for 5 modules: PHP/Node.js/Ruby/Go as of now. The API is documented below: ### PHP @@ -277,6 +288,72 @@ Razorpay::IFSC::IFSC.find '...' code = Razorpay::IFSC::IFSC.new '...'; code.get ``` +### Go + +```go +package main + +import ( + ifsc "github.com/gyanesh-m/ifsc/src/go" +) + +// todo: change funcs not required to lower case. + +func main() { + + ifsc.Validate("KKBK0000261") // Returns true + ifsc.Validate("BOTM0XEEMRA") // Returns false + + ifsc.ValidateBankCode("PUNB") // Returns true + ifsc.ValidateBankCode("ABCD") // Returns false + + ifsc.GetBankName("PUNB") // Returns "Punjab National Bank", nil + ifsc.GetBankName("ABCD") // Returns "", errors.New(invalid bank code) + ifsc.GetBankName(ifsc.HDFC) // Returns "HDFC Bank", nil + + + ifsc.GetBankDetails("PUNB") + // or + ifsc.GetBankDetails(ifsc.PUNB) + + /* Returns + (*ifsc.Bank){ + Name : "Punjab National Bank", + BankCode : "024", + Code : "PUNB", + Type : "PSB", + IFSC : "PUNB0244200", + MICR : "110024001", + IIN : "508568", + APBS : true, + AchCredit : true, + AchDebit : true, + NachDebit : true, + Upi : true + }), nil + */ + + ifsc.LookUP("KKBK0000261") + + /* + Returns + (*ifsc.IFSCResponse)({ + Bank : "Kotak Mahindra Bank", + Branch : "GURGAON", + Address : "JMD REGENT SQUARE,MEHRAULI GURGAON ROAD,OPPOSITE BRISTOL HOTEL,", + Contact : "4131000", + City : "GURGAON", + District : "GURGAON", + State : "HARYANA", + IFSC : "KKBK0000261", + BankCode : "KKBK" + }), nil + */ +} + +``` + +>>>>>>> 5ff434d (update readme & make bank code constants.) ### Code Notes Both the packages ship with a 300kb JSON file, that diff --git a/src/go/bank.go b/src/go/bank.go index 3c4bb67b..081e5207 100644 --- a/src/go/bank.go +++ b/src/go/bank.go @@ -6,1428 +6,1428 @@ import ( ) var bankCodes = map[string]int{ - "AACX": 1, - "ABBL": 1, - "ABCX": 1, - "ABDX": 1, - "ABEX": 1, - "ABHY": 1, - "ABNA": 1, - "ABPB": 1, - "ABSB": 1, - "ABUX": 1, - "ACAX": 1, - "ACBX": 1, - "ACCX": 1, - "ACKX": 1, - "ACOX": 1, - "ACUB": 1, - "ACUX": 1, - "ADBX": 1, - "ADCB": 1, - "ADCC": 1, - "ADCX": 1, - "ADDX": 1, - "AGCX": 1, - "AGDX": 1, - "AGRX": 1, - "AGSX": 1, - "AGUX": 1, - "AGVX": 1, - "AHMX": 1, - "AHUX": 1, - "AIRP": 1, - "AJAR": 1, - "AJHC": 1, - "AJKB": 1, - "AJMX": 1, - "AJNX": 1, - "AJPX": 1, - "AJSX": 1, - "AJUX": 1, - "AKJB": 1, - "AKMX": 1, - "AKOX": 1, - "ALAX": 1, - "ALIX": 1, - "ALLA": 1, - "ALLX": 1, - "ALWX": 1, - "AMAX": 1, - "AMBX": 1, - "AMCB": 1, - "AMCX": 1, - "AMDN": 1, - "AMMX": 1, - "AMNX": 1, - "AMRX": 1, - "AMSB": 1, - "AMSX": 1, - "ANBX": 1, - "ANDB": 1, - "ANDX": 1, - "ANMX": 1, - "ANSX": 1, - "ANUX": 1, - "ANZB": 1, - "APBL": 1, - "APCX": 1, - "APGB": 1, - "APGV": 1, - "APGX": 1, - "APJX": 1, - "APMC": 1, - "APMX": 1, - "APNX": 1, - "APRX": 1, - "APSX": 1, - "ARCX": 1, - "ARMX": 1, - "ARYX": 1, - "ASBL": 1, - "ASBX": 1, - "ASHX": 1, - "ASKX": 1, - "ASNX": 1, - "ASOX": 1, - "ASSX": 1, - "AUBL": 1, - "AUBX": 1, - "AUCB": 1, - "AUCX": 1, - "AUGX": 1, - "AURX": 1, - "AVDX": 1, - "AWCX": 1, - "AWUX": 1, - "AZAX": 1, - "AZPX": 1, - "AZSX": 1, - "AZUX": 1, - "BACB": 1, - "BACX": 1, - "BADX": 1, - "BALX": 1, - "BANX": 1, - "BARA": 1, - "BARB": 1, - "BARC": 1, - "BARX": 1, - "BASX": 1, - "BAUX": 1, - "BAVX": 1, - "BBKM": 1, - "BBLX": 1, - "BBRX": 1, - "BBSX": 1, - "BBUX": 1, - "BBVX": 1, - "BCBM": 1, - "BCBX": 1, - "BCCB": 1, - "BCCX": 1, - "BCEX": 1, - "BCEY": 1, - "BCOX": 1, - "BCUB": 1, - "BCUX": 1, - "BDBL": 1, - "BDBX": 1, - "BDCX": 1, - "BDDX": 1, - "BDIX": 1, - "BDNX": 1, - "BDOX": 1, - "BDUX": 1, - "BEDX": 1, - "BELX": 1, - "BFUX": 1, - "BGBX": 1, - "BGCX": 1, - "BGGX": 1, - "BGUX": 1, - "BGVX": 1, - "BHAX": 1, - "BHBX": 1, - "BHCX": 1, - "BHDX": 1, - "BHEX": 1, - "BHGX": 1, - "BHIX": 1, - "BHJX": 1, - "BHMX": 1, - "BHOX": 1, - "BHRX": 1, - "BHSX": 1, - "BHTX": 1, - "BHUX": 1, - "BHWX": 1, - "BJUX": 1, - "BKCX": 1, - "BKDN": 1, - "BKDX": 1, - "BKID": 1, - "BKSX": 1, - "BLGX": 1, - "BMBL": 1, - "BMCB": 1, - "BMCX": 1, - "BMPX": 1, - "BMSX": 1, - "BNBX": 1, - "BNCX": 1, - "BNPA": 1, - "BNSB": 1, - "BNSX": 1, - "BODX": 1, - "BOFA": 1, - "BORX": 1, - "BOTM": 1, - "BOTX": 1, - "BPCX": 1, - "BPSX": 1, - "BRCX": 1, - "BRDX": 1, - "BRGX": 1, - "BRMX": 1, - "BRSX": 1, - "BRUX": 1, - "BSBX": 1, - "BSCX": 1, - "BTCX": 1, - "BTUX": 1, - "BUBX": 1, - "BUCL": 1, - "BUCX": 1, - "BUGX": 1, - "BUNX": 1, - "BURX": 1, - "BUSX": 1, - "BUZX": 1, - "BVNX": 1, - "BVSX": 1, - "BWCX": 1, - "CALX": 1, - "CBHX": 1, - "CBIN": 1, - "CCBL": 1, - "CCBX": 1, - "CCCX": 1, - "CCMX": 1, - "CCOB": 1, - "CCUX": 1, - "CDCX": 1, - "CEBX": 1, - "CGBX": 1, - "CGGX": 1, - "CHAS": 1, - "CHAX": 1, - "CHBX": 1, - "CHCX": 1, - "CHDX": 1, - "CHIX": 1, - "CHKX": 1, - "CHPX": 1, - "CHRX": 1, - "CHSX": 1, - "CHTX": 1, - "CIDX": 1, - "CITI": 1, - "CITX": 1, - "CIUB": 1, - "CJAX": 1, - "CJMX": 1, - "CLBL": 1, - "CMCB": 1, - "CMCX": 1, - "CMDX": 1, - "CMLX": 1, - "CMPX": 1, - "CNRB": 1, - "CNSX": 1, - "COCX": 1, - "COLX": 1, - "COMX": 1, - "CONX": 1, - "CORP": 1, - "COSB": 1, - "CPDX": 1, - "CPSN": 1, - "CRBX": 1, - "CRES": 1, - "CRLY": 1, - "CRSX": 1, - "CRUB": 1, - "CSBK": 1, - "CSBX": 1, - "CTBA": 1, - "CTBX": 1, - "CTCB": 1, - "CTOX": 1, - "CTUX": 1, - "CUBX": 1, - "CUCX": 1, - "CURX": 1, - "CZCX": 1, - "CZUX": 1, - "DAAX": 1, - "DAHX": 1, - "DAUX": 1, - "DBAX": 1, - "DBSS": 1, - "DCBL": 1, - "DCBX": 1, - "DCCX": 1, - "DCDX": 1, - "DCEX": 1, - "DCKX": 1, - "DCMX": 1, - "DCNX": 1, - "DCPX": 1, - "DCSX": 1, - "DCTX": 1, - "DCUX": 1, - "DDBX": 1, - "DDCX": 1, - "DDDX": 1, - "DDHX": 1, - "DEGX": 1, - "DENS": 1, - "DEOB": 1, - "DEOX": 1, - "DEUT": 1, - "DEUX": 1, - "DEVX": 1, - "DGBX": 1, - "DHBX": 1, - "DHKX": 1, - "DHUX": 1, - "DIBX": 1, - "DICG": 1, - "DICX": 1, - "DIUX": 1, - "DJCX": 1, - "DKCL": 1, - "DKSX": 1, - "DLSC": 1, - "DLXB": 1, - "DMCB": 1, - "DMCX": 1, - "DMKB": 1, - "DMKJ": 1, - "DNSB": 1, - "DNSX": 1, - "DOBX": 1, - "DOHB": 1, - "DRGX": 1, - "DSBX": 1, - "DSCB": 1, - "DSHX": 1, - "DSPX": 1, - "DSUX": 1, - "DTCX": 1, - "DTPX": 1, - "DUCX": 1, - "DUMX": 1, - "DUNX": 1, - "DURG": 1, - "DVDX": 1, - "DYPX": 1, - "EBIL": 1, - "ECBL": 1, - "EDBX": 1, - "EDCX": 1, - "EDSX": 1, - "EIBI": 1, - "ESAF": 1, - "ESFB": 1, - "ESMF": 1, - "ETCX": 1, - "ETDX": 1, - "EUCX": 1, - "EWCX": 1, - "FCBX": 1, - "FCCX": 1, - "FCOX": 1, - "FDFX": 1, - "FDRL": 1, - "FEKX": 1, - "FGCB": 1, - "FINO": 1, - "FINF": 1, - "FINX": 1, - "FIRN": 1, - "FIRX": 1, - "FMCX": 1, - "FRIX": 1, - "FSCX": 1, - "FSFB": 1, - "FZCX": 1, - "FZSX": 1, - "GACX": 1, - "GADX": 1, - "GANX": 1, - "GBCB": 1, - "GCBX": 1, - "GCCX": 1, - "GCUL": 1, - "GCUX": 1, - "GDCB": 1, - "GDCX": 1, - "GDDX": 1, - "GDUX": 1, - "GGBK": 1, - "GGCX": 1, - "GHPX": 1, - "GKNX": 1, - "GMBX": 1, - "GMCX": 1, - "GMUX": 1, - "GNCX": 1, - "GNSX": 1, - "GODX": 1, - "GOSX": 1, - "GPCX": 1, - "GPOX": 1, - "GRAX": 1, - "GSBL": 1, - "GSBX": 1, - "GSCB": 1, - "GSCX": 1, - "GSSX": 1, - "GTCX": 1, - "GUBX": 1, - "GUCX": 1, - "GUNX": 1, - "GUOX": 1, - "HAMX": 1, - "HANX": 1, - "HARC": 1, - "HCBL": 1, - "HCBX": 1, - "HCCX": 1, - "HCLX": 1, - "HDCX": 1, - "HDFC": 1, - "HGBX": 1, - "HINX": 1, - "HISX": 1, - "HMBX": 1, - "HMNX": 1, - "HOCX": 1, - "HOOX": 1, - "HPCX": 1, - "HPSC": 1, - "HPSX": 1, - "HSBC": 1, - "HSBX": 1, - "HSCX": 1, - "HSDX": 1, - "HSSX": 1, - "HUBX": 1, - "HUCX": 1, - "HUTX": 1, - "HVBK": 1, - "IBBK": 1, - "IBKL": 1, - "IBKO": 1, - "ICBK": 1, - "ICBL": 1, - "ICHX": 1, - "ICIC": 1, - "ICMX": 1, - "IDFB": 1, - "IDIB": 1, - "IDUK": 1, - "IDUX": 1, - "ILCB": 1, - "IMPX": 1, - "INCX": 1, - "INDB": 1, - "INDX": 1, - "IOBA": 1, - "IPCX": 1, - "IPOS": 1, - "IPPB": 1, - "IPSX": 1, - "ISBX": 1, - "ISMX": 1, - "ITBL": 1, - "ITCX": 1, - "ITDX": 1, - "IUCB": 1, - "IUCX": 1, - "JACX": 1, - "JAKA": 1, - "JALX": 1, - "JAMX": 1, - "JANA": 1, - "JANX": 1, - "JASB": 1, - "JASX": 1, - "JAUX": 1, - "JBHX": 1, - "JBIX": 1, - "JBMX": 1, - "JCBX": 1, - "JCCB": 1, - "JCCX": 1, - "JCDX": 1, - "JCHX": 1, - "JCPX": 1, - "JCUX": 1, - "JDCX": 1, - "JDEX": 1, - "JGBX": 1, - "JGCX": 1, - "JGWX": 1, - "JHAX": 1, - "JHSX": 1, - "JHUX": 1, - "JIBX": 1, - "JICX": 1, - "JIDX": 1, - "JIGX": 1, - "JIKX": 1, - "JIMX": 1, - "JINX": 1, - "JIOP": 1, - "JIOX": 1, - "JIRX": 1, - "JISX": 1, - "JIVX": 1, - "JJCX": 1, - "JJHX": 1, - "JJSB": 1, - "JKAX": 1, - "JKCX": 1, - "JKDX": 1, - "JKEX": 1, - "JKHX": 1, - "JKMX": 1, - "JKRX": 1, - "JKSX": 1, - "JLCX": 1, - "JLDX": 1, - "JLNX": 1, - "JLSX": 1, - "JLWX": 1, - "JMAX": 1, - "JMBX": 1, - "JMCX": 1, - "JMDX": 1, - "JMHX": 1, - "JMMX": 1, - "JMOX": 1, - "JMPX": 1, - "JMSX": 1, - "JMYX": 1, - "JNAX": 1, - "JNDX": 1, - "JNSX": 1, - "JODX": 1, - "JONX": 1, - "JOWX": 1, - "JPAX": 1, - "JPCB": 1, - "JPCX": 1, - "JRAX": 1, - "JRKX": 1, - "JRNX": 1, - "JRSX": 1, - "JSAB": 1, - "JSAX": 1, - "JSBL": 1, - "JSBP": 1, - "JSBX": 1, - "JSCX": 1, - "JSDX": 1, - "JSEX": 1, - "JSFB": 1, - "JSHX": 1, - "JSKX": 1, - "JSMX": 1, - "JSOX": 1, - "JSRX": 1, - "JSTX": 1, - "JSVX": 1, - "JSWX": 1, - "JTIX": 1, - "JTSX": 1, - "JUCX": 1, - "JUSX": 1, - "JVCX": 1, - "KAAX": 1, - "KACE": 1, - "KACX": 1, - "KADX": 1, - "KAGX": 1, - "KAIJ": 1, - "KALX": 1, - "KAMX": 1, - "KANG": 1, - "KANX": 1, - "KARB": 1, - "KARX": 1, - "KASX": 1, - "KATX": 1, - "KAYX": 1, - "KBCX": 1, - "KBNX": 1, - "KBSX": 1, - "KCBL": 1, - "KCBX": 1, - "KCCB": 1, - "KCCX": 1, - "KCDX": 1, - "KCEX": 1, - "KCOB": 1, - "KCUB": 1, - "KCUX": 1, - "KDBX": 1, - "KDCB": 1, - "KDCX": 1, - "KDIX": 1, - "KDNX": 1, - "KDUX": 1, - "KEMX": 1, - "KESX": 1, - "KGBX": 1, - "KGDX": 1, - "KGRB": 1, - "KGSX": 1, - "KHAX": 1, - "KHCX": 1, - "KHDX": 1, - "KHNX": 1, - "KHUX": 1, - "KICX": 1, - "KJSB": 1, - "KJSX": 1, - "KKBK": 1, - "KKMX": 1, - "KKSX": 1, - "KLGB": 1, - "KLMX": 1, - "KMCB": 1, - "KMCX": 1, - "KMNX": 1, - "KMSX": 1, - "KNBX": 1, - "KNCX": 1, - "KNNX": 1, - "KNPX": 1, - "KNSB": 1, - "KNSX": 1, - "KOBX": 1, - "KOCX": 1, - "KODX": 1, - "KOEX": 1, - "KOLH": 1, - "KOSX": 1, - "KOTX": 1, - "KOYX": 1, - "KPCX": 1, - "KRCX": 1, - "KRDX": 1, - "KRIX": 1, - "KRMX": 1, - "KRNX": 1, - "KRTH": 1, - "KRTX": 1, - "KSBK": 1, - "KSBX": 1, - "KSCB": 1, - "KSCX": 1, - "KSMX": 1, - "KSNX": 1, - "KSTX": 1, - "KSUX": 1, - "KTBX": 1, - "KTCX": 1, - "KTDX": 1, - "KTTX": 1, - "KUBX": 1, - "KUCB": 1, - "KUCX": 1, - "KUKX": 1, - "KULX": 1, - "KUMX": 1, - "KUNS": 1, - "KURX": 1, - "KVBL": 1, - "KVCX": 1, - "KVGB": 1, - "KYDX": 1, - "LACX": 1, - "LATX": 1, - "LAVB": 1, - "LBMX": 1, - "LCBX": 1, - "LCCX": 1, - "LDCX": 1, - "LDPX": 1, - "LDRX": 1, - "LECX": 1, - "LICB": 1, - "LKBL": 1, - "LKCX": 1, - "LKHX": 1, - "LKMX": 1, - "LMNX": 1, - "LNSX": 1, - "LOKX": 1, - "LONX": 1, - "LUCX": 1, - "LULX": 1, - "MABL": 1, - "MACX": 1, - "MADX": 1, - "MAGX": 1, - "MAHB": 1, - "MAHG": 1, - "MAHX": 1, - "MAJX": 1, - "MAKX": 1, - "MALX": 1, - "MAMX": 1, - "MANX": 1, - "MAPX": 1, - "MASX": 1, - "MAUX": 1, - "MAVX": 1, - "MAYX": 1, - "MBCX": 1, - "MBGX": 1, - "MBLX": 1, - "MCAX": 1, - "MCBL": 1, - "MCBX": 1, - "MCCX": 1, - "MCDX": 1, - "MCLX": 1, - "MCOX": 1, - "MCSX": 1, - "MCUX": 1, - "MDCB": 1, - "MDCX": 1, - "MDEX": 1, - "MDGX": 1, - "MDIX": 1, - "MDMX": 1, - "MDPX": 1, - "MEDX": 1, - "MERX": 1, - "MEUX": 1, - "MFCX": 1, - "MFUX": 1, - "MGBX": 1, - "MGCB": 1, - "MGCX": 1, - "MGDX": 1, - "MGRB": 1, - "MGSX": 1, - "MGUX": 1, - "MHCB": 1, - "MHCX": 1, - "MHEX": 1, - "MHLX": 1, - "MHMX": 1, - "MHNX": 1, - "MHSX": 1, - "MHUX": 1, - "MIZX": 1, - "MJCX": 1, - "MKPB": 1, - "MKUX": 1, - "MKYX": 1, - "MLDX": 1, - "MMCX": 1, - "MMMX": 1, - "MNBX": 1, - "MNCX": 1, - "MNSX": 1, - "MOGX": 1, - "MOUX": 1, - "MPCX": 1, - "MPDX": 1, - "MPRX": 1, - "MRBX": 1, - "MRTX": 1, - "MSAX": 1, - "MSBL": 1, - "MSBX": 1, - "MSCI": 1, - "MSCX": 1, - "MSHQ": 1, - "MSLM": 1, - "MSNU": 1, - "MSNX": 1, - "MSOX": 1, - "MSSX": 1, - "MUBL": 1, - "MUBX": 1, - "MUCX": 1, - "MUDX": 1, - "MUNX": 1, - "MUPX": 1, - "MURX": 1, - "MUSX": 1, - "MVCB": 1, - "MVCX": 1, - "MVIX": 1, - "MYAX": 1, - "MYSX": 1, - "MZCX": 1, - "MZRX": 1, - "NABX": 1, - "NACX": 1, - "NAGX": 1, - "NAIX": 1, - "NALX": 1, - "NANX": 1, - "NASX": 1, - "NATA": 1, - "NAUX": 1, - "NAVX": 1, - "NAWX": 1, - "NBAD": 1, - "NBBX": 1, - "NBCX": 1, - "NBMX": 1, - "NBRD": 1, - "NCBL": 1, - "NCBX": 1, - "NCCX": 1, - "NCOX": 1, - "NCUB": 1, - "NCUX": 1, - "NDCB": 1, - "NDCX": 1, - "NDDX": 1, - "NDGX": 1, - "NDIX": 1, - "NESF": 1, - "NEYX": 1, - "NGBX": 1, - "NGKX": 1, - "NGNX": 1, - "NGRX": 1, - "NGSB": 1, - "NGSX": 1, - "NICB": 1, - "NIDX": 1, - "NILX": 1, - "NIRX": 1, - "NIUX": 1, - "NJBK": 1, - "NJCX": 1, - "NJGX": 1, - "NJMX": 1, - "NJSX": 1, - "NKGS": 1, - "NLGX": 1, - "NLUX": 1, - "NMCB": 1, - "NMCX": 1, - "NMGB": 1, - "NNCX": 1, - "NNSB": 1, - "NNSX": 1, - "NOBX": 1, - "NOIX": 1, - "NOSC": 1, - "NPCX": 1, - "NPKX": 1, - "NRDX": 1, - "NSBB": 1, - "NSBX": 1, - "NSCX": 1, - "NSGX": 1, - "NSIX": 1, - "NSJX": 1, - "NSMX": 1, - "NSPB": 1, - "NSPX": 1, - "NSRX": 1, - "NTBL": 1, - "NUBX": 1, - "NUCB": 1, - "NUCX": 1, - "NVCX": 1, - "NVNM": 1, - "NVSX": 1, - "NWCX": 1, - "ODCX": 1, - "ODGB": 1, - "OIBA": 1, - "OMCX": 1, - "ONSX": 1, - "ORBC": 1, - "ORCB": 1, - "OSMX": 1, - "PABX": 1, - "PACX": 1, - "PADX": 1, - "PALX": 1, - "PANX": 1, - "PARX": 1, - "PASX": 1, - "PATX": 1, - "PAYX": 1, - "PBGX": 1, - "PCBL": 1, - "PCBX": 1, - "PCCB": 1, - "PCCX": 1, - "PCLX": 1, - "PCMX": 1, - "PCOX": 1, - "PCPX": 1, - "PCSX": 1, - "PCTX": 1, - "PCUX": 1, - "PDBX": 1, - "PDCX": 1, - "PDNX": 1, - "PDSX": 1, - "PDUX": 1, - "PGBX": 1, - "PGCX": 1, - "PGRX": 1, - "PGTX": 1, - "PITX": 1, - "PJSB": 1, - "PKBX": 1, - "PKDX": 1, - "PKGB": 1, - "PLOX": 1, - "PLUX": 1, - "PMCB": 1, - "PMCX": 1, - "PMEC": 1, - "PMNX": 1, - "PNCX": 1, - "PNMX": 1, - "PNPX": 1, - "PNSX": 1, - "PPBX": 1, - "PPCX": 1, - "PRCX": 1, - "PREX": 1, - "PROX": 1, - "PRPX": 1, - "PRSX": 1, - "PRTH": 1, - "PSBX": 1, - "PSCX": 1, - "PSIB": 1, - "PSRX": 1, - "PSSX": 1, - "PTCX": 1, - "PTNX": 1, - "PTSX": 1, - "PUBX": 1, - "PUCB": 1, - "PUCX": 1, - "PUDX": 1, - "PUGX": 1, - "PUNB": 1, - "PUNX": 1, - "PURX": 1, - "PUSD": 1, - "PUSX": 1, - "PUUX": 1, - "PVAX": 1, - "PVCX": 1, - "PVVX": 1, - "PWUX": 1, - "PYCX": 1, - "PYTM": 1, - "QNBA": 1, - "QUCX": 1, - "RABO": 1, - "RACX": 1, - "RAEX": 1, - "RAJX": 1, - "RAKX": 1, - "RAMX": 1, - "RANX": 1, - "RATN": 1, - "RAUX": 1, - "RBBX": 1, - "RBCX": 1, - "RBIS": 1, - "RBIH": 1, - "RCBX": 1, - "RCCX": 1, - "RCDX": 1, - "RCMX": 1, - "RCUX": 1, - "RDCX": 1, - "RDNX": 1, - "REBX": 1, - "RECX": 1, - "REWX": 1, - "RGCX": 1, - "RGSX": 1, - "RHMX": 1, - "RJCX": 1, - "RJJX": 1, - "RJNX": 1, - "RJTX": 1, - "RKCX": 1, - "RLUX": 1, - "RMGB": 1, - "RNBX": 1, - "RNDX": 1, - "RNGX": 1, - "RNSB": 1, - "RNSX": 1, - "ROCX": 1, - "ROHX": 1, - "RPUX": 1, - "RRBP": 1, - "RRSX": 1, - "RSBL": 1, - "RSBX": 1, - "RSCB": 1, - "RSSX": 1, - "RSUX": 1, - "RSVX": 1, - "RUCX": 1, - "RUKX": 1, - "RUMX": 1, - "RZSX": 1, - "SABR": 1, - "SABX": 1, - "SACB": 1, - "SACX": 1, - "SADX": 1, - "SAGX": 1, - "SAHE": 1, - "SAHX": 1, - "SAIX": 1, - "SALX": 1, - "SAMX": 1, - "SANT": 1, - "SANX": 1, - "SAPX": 1, - "SARX": 1, - "SASA": 1, - "SASX": 1, - "SATX": 1, - "SAUX": 1, - "SAVX": 1, - "SAWX": 1, - "SBBJ": 1, - "SBCX": 1, - "SBHY": 1, - "SBIN": 1, - "SBKX": 1, - "SBLD": 1, - "SBLS": 1, - "SBLX": 1, - "SBMX": 1, - "SBMY": 1, - "SBNX": 1, - "SBPX": 1, - "SBSX": 1, - "SBTR": 1, - "SBUJ": 1, - "SBUX": 1, - "SCBL": 1, - "SCBX": 1, - "SCCX": 1, - "SCDX": 1, - "SCIX": 1, - "SCNX": 1, - "SCOB": 1, - "SCOX": 1, - "SCPX": 1, - "SCSX": 1, - "SCUX": 1, - "SDBX": 1, - "SDCB": 1, - "SDCE": 1, - "SDCX": 1, - "SDHX": 1, - "SDSX": 1, - "SDTX": 1, - "SDUX": 1, - "SEMX": 1, - "SENX": 1, - "SEUX": 1, - "SEWX": 1, - "SGCX": 1, - "SGLX": 1, - "SGSX": 1, - "SGUX": 1, - "SHAX": 1, - "SHBK": 1, - "SHBX": 1, - "SHCX": 1, - "SHEX": 1, - "SHGX": 1, - "SHIX": 1, - "SHKX": 1, - "SHMX": 1, - "SHNX": 1, - "SHOX": 1, - "SHRX": 1, - "SHSX": 1, - "SHUX": 1, - "SIBL": 1, - "SIBX": 1, - "SICX": 1, - "SIDB": 1, - "SIDC": 1, - "SIDX": 1, - "SIGX": 1, - "SIHX": 1, - "SIKX": 1, - "SINX": 1, - "SIRX": 1, - "SISX": 1, - "SITX": 1, - "SIWX": 1, - "SJGX": 1, - "SJSB": 1, - "SJSX": 1, - "SKCX": 1, - "SKKX": 1, - "SKNX": 1, - "SKSB": 1, - "SKUX": 1, - "SLAX": 1, - "SLCX": 1, - "SMBC": 1, - "SMBX": 1, - "SMCB": 1, - "SMCX": 1, - "SMEX": 1, - "SMMX": 1, - "SMNX": 1, - "SMPX": 1, - "SMSX": 1, - "SMTX": 1, - "SMUX": 1, - "SMVC": 1, - "SMWX": 1, - "SNAX": 1, - "SNBK": 1, - "SNBX": 1, - "SNCX": 1, - "SNDX": 1, - "SNGX": 1, - "SNKX": 1, - "SNLX": 1, - "SNPX": 1, - "SNSV": 1, - "SNSX": 1, - "SOBX": 1, - "SOGE": 1, - "SOLX": 1, - "SONX": 1, - "SPBX": 1, - "SPCB": 1, - "SPCX": 1, - "SPNX": 1, - "SPSX": 1, - "SPTX": 1, - "SRCB": 1, - "SRCX": 1, - "SREX": 1, - "SRGX": 1, - "SRHX": 1, - "SRSX": 1, - "SSBL": 1, - "SSBX": 1, - "SSDX": 1, - "SSHX": 1, - "SSKX": 1, - "SSLX": 1, - "SSNX": 1, - "SSOX": 1, - "SSSX": 1, - "SSWX": 1, - "STBP": 1, - "STCB": 1, - "STCX": 1, - "STDX": 1, - "STRX": 1, - "SUBX": 1, - "SUCX": 1, - "SUDX": 1, - "SULX": 1, - "SUMX": 1, - "SUNB": 1, - "SURX": 1, - "SURY": 1, - "SUSX": 1, - "SUTB": 1, - "SUVX": 1, - "SVAX": 1, - "SVBL": 1, - "SVCB": 1, - "SVCX": 1, - "SVGX": 1, - "SVNX": 1, - "SVOX": 1, - "SVRX": 1, - "SVSH": 1, - "SVSX": 1, - "SWMX": 1, - "SWSX": 1, - "SYNB": 1, - "TACX": 1, - "TADX": 1, - "TAMX": 1, - "TAPX": 1, - "TASX": 1, - "TBCX": 1, - "TBDX": 1, - "TBHX": 1, - "TBMX": 1, - "TBPX": 1, - "TBSB": 1, - "TBSX": 1, - "TBTX": 1, - "TBUX": 1, - "TCBX": 1, - "TCCX": 1, - "TCHX": 1, - "TCPX": 1, - "TCUB": 1, - "TCUX": 1, - "TDBX": 1, - "TDCB": 1, - "TDCX": 1, - "TDIX": 1, - "TDMX": 1, - "TDPX": 1, - "TDSX": 1, - "TECX": 1, - "TEHX": 1, - "TEMX": 1, - "TESX": 1, - "TETX": 1, - "TFCX": 1, - "TGBX": 1, - "TGCG": 1, - "TGCX": 1, - "TGDX": 1, - "TGMB": 1, - "TGNX": 1, - "TGUX": 1, - "THCX": 1, - "THOX": 1, - "THRS": 1, - "THRX": 1, - "THWX": 1, - "TIDX": 1, - "TIRX": 1, - "TJAX": 1, - "TJBX": 1, - "TJCX": 1, - "TJDX": 1, - "TJMX": 1, - "TJNX": 1, - "TJSB": 1, - "TKAX": 1, - "TKCX": 1, - "TKDX": 1, - "TKTX": 1, - "TKUX": 1, - "TLPX": 1, - "TMAX": 1, - "TMBL": 1, - "TMBX": 1, - "TMCX": 1, - "TMNX": 1, - "TMPX": 1, - "TMSC": 1, - "TMSX": 1, - "TMTX": 1, - "TMUX": 1, - "TNBX": 1, - "TNCX": 1, - "TNDC": 1, - "TNEX": 1, - "TNHX": 1, - "TNIX": 1, - "TNKX": 1, - "TNMX": 1, - "TNSC": 1, - "TNUX": 1, - "TOCX": 1, - "TPCX": 1, - "TPDX": 1, - "TPSX": 1, - "TPUX": 1, - "TRAX": 1, - "TRDX": 1, - "TSAB": 1, - "TSAX": 1, - "TSBX": 1, - "TSCX": 1, - "TSDX": 1, - "TSIX": 1, - "TSMX": 1, - "TSNX": 1, - "TSPX": 1, - "TSSB": 1, - "TSSX": 1, - "TSUX": 1, - "TTBX": 1, - "TTCB": 1, - "TTCX": 1, - "TTGX": 1, - "TTLX": 1, - "TTUX": 1, - "TUBX": 1, - "TUCL": 1, - "TUCX": 1, - "TUDX": 1, - "TUMX": 1, - "TUNX": 1, - "TUOX": 1, - "TUPX": 1, - "TURX": 1, - "TVBX": 1, - "TVDX": 1, - "TVPX": 1, - "TVUX": 1, - "TYCX": 1, - "UBBX": 1, - "UBGX": 1, - "UBIN": 1, - "UCBA": 1, - "UCBS": 1, - "UCBX": 1, - "UCCX": 1, - "UCDX": 1, - "UCUX": 1, - "UGBX": 1, - "UICX": 1, - "UJSX": 1, - "UJVN": 1, - "UKGX": 1, - "UMAX": 1, - "UMCX": 1, - "UMSX": 1, - "UMUX": 1, - "UNAX": 1, - "UNIX": 1, - "UNMX": 1, - "UNSX": 1, - "UOVB": 1, - "UPCB": 1, - "UPCX": 1, - "URBN": 1, - "URCX": 1, - "URDX": 1, - "URMX": 1, - "UROX": 1, - "USFB": 1, - "USNX": 1, - "UTBI": 1, - "UTBX": 1, - "UTCX": 1, - "UTGX": 1, - "UTIB": 1, - "UTKS": 1, - "UTKX": 1, - "UTZX": 1, - "UUCX": 1, - "VADX": 1, - "VAIX": 1, - "VANX": 1, - "VARA": 1, - "VASJ": 1, - "VASX": 1, - "VAUX": 1, - "VCAX": 1, - "VCBX": 1, - "VCCX": 1, - "VCNB": 1, - "VCOB": 1, - "VCOX": 1, - "VDCX": 1, - "VDYX": 1, - "VEDX": 1, - "VERX": 1, - "VGBX": 1, - "VHDX": 1, - "VICX": 1, - "VIDX": 1, - "VIJB": 1, - "VIJX": 1, - "VIKX": 1, - "VIMX": 1, - "VIRX": 1, - "VISX": 1, - "VJSX": 1, - "VKCX": 1, - "VKSX": 1, - "VMCX": 1, - "VMMX": 1, - "VMUX": 1, - "VNSX": 1, - "VRDX": 1, - "VSBL": 1, - "VSBX": 1, - "VSCX": 1, - "VSSX": 1, - "VSVX": 1, - "VUCX": 1, - "VVCX": 1, - "VVSB": 1, - "VYAX": 1, - "VYPX": 1, - "VYSA": 1, - "WACX": 1, - "WAIX": 1, - "WARX": 1, - "WAUX": 1, - "WBSC": 1, - "WCBX": 1, - "WDCX": 1, - "WKGX": 1, - "WNBX": 1, - "WPAC": 1, - "WRCX": 1, - "WUCX": 1, - "WZUX": 1, - "XJKG": 1, - "YADX": 1, - "YAVX": 1, - "YCBX": 1, - "YDCX": 1, - "YESB": 1, - "YLNX": 1, - "YMSX": 1, - "YNCX": 1, - "YNSX": 1, - "ZBBX": 1, - "ZBSX": 1, - "ZCBL": 1, - "ZIBX": 1, - "ZILX": 1, - "ZIMX": 1, - "ZISX": 1, - "ZLLX": 1, - "ZRNB": 1, - "ZMMX": 1, - "ZSAX": 1, - "ZSBL": 1, - "ZSBX": 1, - "ZSGX": 1, - "ZSHX": 1, - "ZSJX": 1, - "ZSKX": 1, - "ZSLX": 1, - "ZSMX": 1, + AACX: 1, + ABBL: 1, + ABCX: 1, + ABDX: 1, + ABEX: 1, + ABHY: 1, + ABNA: 1, + ABPB: 1, + ABSB: 1, + ABUX: 1, + ACAX: 1, + ACBX: 1, + ACCX: 1, + ACKX: 1, + ACOX: 1, + ACUB: 1, + ACUX: 1, + ADBX: 1, + ADCB: 1, + ADCC: 1, + ADCX: 1, + ADDX: 1, + AGCX: 1, + AGDX: 1, + AGRX: 1, + AGSX: 1, + AGUX: 1, + AGVX: 1, + AHMX: 1, + AHUX: 1, + AIRP: 1, + AJAR: 1, + AJHC: 1, + AJKB: 1, + AJMX: 1, + AJNX: 1, + AJPX: 1, + AJSX: 1, + AJUX: 1, + AKJB: 1, + AKMX: 1, + AKOX: 1, + ALAX: 1, + ALIX: 1, + ALLA: 1, + ALLX: 1, + ALWX: 1, + AMAX: 1, + AMBX: 1, + AMCB: 1, + AMCX: 1, + AMDN: 1, + AMMX: 1, + AMNX: 1, + AMRX: 1, + AMSB: 1, + AMSX: 1, + ANBX: 1, + ANDB: 1, + ANDX: 1, + ANMX: 1, + ANSX: 1, + ANUX: 1, + ANZB: 1, + APBL: 1, + APCX: 1, + APGB: 1, + APGV: 1, + APGX: 1, + APJX: 1, + APMC: 1, + APMX: 1, + APNX: 1, + APRX: 1, + APSX: 1, + ARCX: 1, + ARMX: 1, + ARYX: 1, + ASBL: 1, + ASBX: 1, + ASHX: 1, + ASKX: 1, + ASNX: 1, + ASOX: 1, + ASSX: 1, + AUBL: 1, + AUBX: 1, + AUCB: 1, + AUCX: 1, + AUGX: 1, + AURX: 1, + AVDX: 1, + AWCX: 1, + AWUX: 1, + AZAX: 1, + AZPX: 1, + AZSX: 1, + AZUX: 1, + BACB: 1, + BACX: 1, + BADX: 1, + BALX: 1, + BANX: 1, + BARA: 1, + BARB: 1, + BARC: 1, + BARX: 1, + BASX: 1, + BAUX: 1, + BAVX: 1, + BBKM: 1, + BBLX: 1, + BBRX: 1, + BBSX: 1, + BBUX: 1, + BBVX: 1, + BCBM: 1, + BCBX: 1, + BCCB: 1, + BCCX: 1, + BCEX: 1, + BCEY: 1, + BCOX: 1, + BCUB: 1, + BCUX: 1, + BDBL: 1, + BDBX: 1, + BDCX: 1, + BDDX: 1, + BDIX: 1, + BDNX: 1, + BDOX: 1, + BDUX: 1, + BEDX: 1, + BELX: 1, + BFUX: 1, + BGBX: 1, + BGCX: 1, + BGGX: 1, + BGUX: 1, + BGVX: 1, + BHAX: 1, + BHBX: 1, + BHCX: 1, + BHDX: 1, + BHEX: 1, + BHGX: 1, + BHIX: 1, + BHJX: 1, + BHMX: 1, + BHOX: 1, + BHRX: 1, + BHSX: 1, + BHTX: 1, + BHUX: 1, + BHWX: 1, + BJUX: 1, + BKCX: 1, + BKDN: 1, + BKDX: 1, + BKID: 1, + BKSX: 1, + BLGX: 1, + BMBL: 1, + BMCB: 1, + BMCX: 1, + BMPX: 1, + BMSX: 1, + BNBX: 1, + BNCX: 1, + BNPA: 1, + BNSB: 1, + BNSX: 1, + BODX: 1, + BOFA: 1, + BORX: 1, + BOTM: 1, + BOTX: 1, + BPCX: 1, + BPSX: 1, + BRCX: 1, + BRDX: 1, + BRGX: 1, + BRMX: 1, + BRSX: 1, + BRUX: 1, + BSBX: 1, + BSCX: 1, + BTCX: 1, + BTUX: 1, + BUBX: 1, + BUCL: 1, + BUCX: 1, + BUGX: 1, + BUNX: 1, + BURX: 1, + BUSX: 1, + BUZX: 1, + BVNX: 1, + BVSX: 1, + BWCX: 1, + CALX: 1, + CBHX: 1, + CBIN: 1, + CCBL: 1, + CCBX: 1, + CCCX: 1, + CCMX: 1, + CCOB: 1, + CCUX: 1, + CDCX: 1, + CEBX: 1, + CGBX: 1, + CGGX: 1, + CHAS: 1, + CHAX: 1, + CHBX: 1, + CHCX: 1, + CHDX: 1, + CHIX: 1, + CHKX: 1, + CHPX: 1, + CHRX: 1, + CHSX: 1, + CHTX: 1, + CIDX: 1, + CITI: 1, + CITX: 1, + CIUB: 1, + CJAX: 1, + CJMX: 1, + CLBL: 1, + CMCB: 1, + CMCX: 1, + CMDX: 1, + CMLX: 1, + CMPX: 1, + CNRB: 1, + CNSX: 1, + COCX: 1, + COLX: 1, + COMX: 1, + CONX: 1, + CORP: 1, + COSB: 1, + CPDX: 1, + CPSN: 1, + CRBX: 1, + CRES: 1, + CRLY: 1, + CRSX: 1, + CRUB: 1, + CSBK: 1, + CSBX: 1, + CTBA: 1, + CTBX: 1, + CTCB: 1, + CTOX: 1, + CTUX: 1, + CUBX: 1, + CUCX: 1, + CURX: 1, + CZCX: 1, + CZUX: 1, + DAAX: 1, + DAHX: 1, + DAUX: 1, + DBAX: 1, + DBSS: 1, + DCBL: 1, + DCBX: 1, + DCCX: 1, + DCDX: 1, + DCEX: 1, + DCKX: 1, + DCMX: 1, + DCNX: 1, + DCPX: 1, + DCSX: 1, + DCTX: 1, + DCUX: 1, + DDBX: 1, + DDCX: 1, + DDDX: 1, + DDHX: 1, + DEGX: 1, + DENS: 1, + DEOB: 1, + DEOX: 1, + DEUT: 1, + DEUX: 1, + DEVX: 1, + DGBX: 1, + DHBX: 1, + DHKX: 1, + DHUX: 1, + DIBX: 1, + DICG: 1, + DICX: 1, + DIUX: 1, + DJCX: 1, + DKCL: 1, + DKSX: 1, + DLSC: 1, + DLXB: 1, + DMCB: 1, + DMCX: 1, + DMKB: 1, + DMKJ: 1, + DNSB: 1, + DNSX: 1, + DOBX: 1, + DOHB: 1, + DRGX: 1, + DSBX: 1, + DSCB: 1, + DSHX: 1, + DSPX: 1, + DSUX: 1, + DTCX: 1, + DTPX: 1, + DUCX: 1, + DUMX: 1, + DUNX: 1, + DURG: 1, + DVDX: 1, + DYPX: 1, + EBIL: 1, + ECBL: 1, + EDBX: 1, + EDCX: 1, + EDSX: 1, + EIBI: 1, + ESAF: 1, + ESFB: 1, + ESMF: 1, + ETCX: 1, + ETDX: 1, + EUCX: 1, + EWCX: 1, + FCBX: 1, + FCCX: 1, + FCOX: 1, + FDFX: 1, + FDRL: 1, + FEKX: 1, + FGCB: 1, + FINO: 1, + FINF: 1, + FINX: 1, + FIRN: 1, + FIRX: 1, + FMCX: 1, + FRIX: 1, + FSCX: 1, + FSFB: 1, + FZCX: 1, + FZSX: 1, + GACX: 1, + GADX: 1, + GANX: 1, + GBCB: 1, + GCBX: 1, + GCCX: 1, + GCUL: 1, + GCUX: 1, + GDCB: 1, + GDCX: 1, + GDDX: 1, + GDUX: 1, + GGBK: 1, + GGCX: 1, + GHPX: 1, + GKNX: 1, + GMBX: 1, + GMCX: 1, + GMUX: 1, + GNCX: 1, + GNSX: 1, + GODX: 1, + GOSX: 1, + GPCX: 1, + GPOX: 1, + GRAX: 1, + GSBL: 1, + GSBX: 1, + GSCB: 1, + GSCX: 1, + GSSX: 1, + GTCX: 1, + GUBX: 1, + GUCX: 1, + GUNX: 1, + GUOX: 1, + HAMX: 1, + HANX: 1, + HARC: 1, + HCBL: 1, + HCBX: 1, + HCCX: 1, + HCLX: 1, + HDCX: 1, + HDFC: 1, + HGBX: 1, + HINX: 1, + HISX: 1, + HMBX: 1, + HMNX: 1, + HOCX: 1, + HOOX: 1, + HPCX: 1, + HPSC: 1, + HPSX: 1, + HSBC: 1, + HSBX: 1, + HSCX: 1, + HSDX: 1, + HSSX: 1, + HUBX: 1, + HUCX: 1, + HUTX: 1, + HVBK: 1, + IBBK: 1, + IBKL: 1, + IBKO: 1, + ICBK: 1, + ICBL: 1, + ICHX: 1, + ICIC: 1, + ICMX: 1, + IDFB: 1, + IDIB: 1, + IDUK: 1, + IDUX: 1, + ILCB: 1, + IMPX: 1, + INCX: 1, + INDB: 1, + INDX: 1, + IOBA: 1, + IPCX: 1, + IPOS: 1, + IPPB: 1, + IPSX: 1, + ISBX: 1, + ISMX: 1, + ITBL: 1, + ITCX: 1, + ITDX: 1, + IUCB: 1, + IUCX: 1, + JACX: 1, + JAKA: 1, + JALX: 1, + JAMX: 1, + JANA: 1, + JANX: 1, + JASB: 1, + JASX: 1, + JAUX: 1, + JBHX: 1, + JBIX: 1, + JBMX: 1, + JCBX: 1, + JCCB: 1, + JCCX: 1, + JCDX: 1, + JCHX: 1, + JCPX: 1, + JCUX: 1, + JDCX: 1, + JDEX: 1, + JGBX: 1, + JGCX: 1, + JGWX: 1, + JHAX: 1, + JHSX: 1, + JHUX: 1, + JIBX: 1, + JICX: 1, + JIDX: 1, + JIGX: 1, + JIKX: 1, + JIMX: 1, + JINX: 1, + JIOP: 1, + JIOX: 1, + JIRX: 1, + JISX: 1, + JIVX: 1, + JJCX: 1, + JJHX: 1, + JJSB: 1, + JKAX: 1, + JKCX: 1, + JKDX: 1, + JKEX: 1, + JKHX: 1, + JKMX: 1, + JKRX: 1, + JKSX: 1, + JLCX: 1, + JLDX: 1, + JLNX: 1, + JLSX: 1, + JLWX: 1, + JMAX: 1, + JMBX: 1, + JMCX: 1, + JMDX: 1, + JMHX: 1, + JMMX: 1, + JMOX: 1, + JMPX: 1, + JMSX: 1, + JMYX: 1, + JNAX: 1, + JNDX: 1, + JNSX: 1, + JODX: 1, + JONX: 1, + JOWX: 1, + JPAX: 1, + JPCB: 1, + JPCX: 1, + JRAX: 1, + JRKX: 1, + JRNX: 1, + JRSX: 1, + JSAB: 1, + JSAX: 1, + JSBL: 1, + JSBP: 1, + JSBX: 1, + JSCX: 1, + JSDX: 1, + JSEX: 1, + JSFB: 1, + JSHX: 1, + JSKX: 1, + JSMX: 1, + JSOX: 1, + JSRX: 1, + JSTX: 1, + JSVX: 1, + JSWX: 1, + JTIX: 1, + JTSX: 1, + JUCX: 1, + JUSX: 1, + JVCX: 1, + KAAX: 1, + KACE: 1, + KACX: 1, + KADX: 1, + KAGX: 1, + KAIJ: 1, + KALX: 1, + KAMX: 1, + KANG: 1, + KANX: 1, + KARB: 1, + KARX: 1, + KASX: 1, + KATX: 1, + KAYX: 1, + KBCX: 1, + KBNX: 1, + KBSX: 1, + KCBL: 1, + KCBX: 1, + KCCB: 1, + KCCX: 1, + KCDX: 1, + KCEX: 1, + KCOB: 1, + KCUB: 1, + KCUX: 1, + KDBX: 1, + KDCB: 1, + KDCX: 1, + KDIX: 1, + KDNX: 1, + KDUX: 1, + KEMX: 1, + KESX: 1, + KGBX: 1, + KGDX: 1, + KGRB: 1, + KGSX: 1, + KHAX: 1, + KHCX: 1, + KHDX: 1, + KHNX: 1, + KHUX: 1, + KICX: 1, + KJSB: 1, + KJSX: 1, + KKBK: 1, + KKMX: 1, + KKSX: 1, + KLGB: 1, + KLMX: 1, + KMCB: 1, + KMCX: 1, + KMNX: 1, + KMSX: 1, + KNBX: 1, + KNCX: 1, + KNNX: 1, + KNPX: 1, + KNSB: 1, + KNSX: 1, + KOBX: 1, + KOCX: 1, + KODX: 1, + KOEX: 1, + KOLH: 1, + KOSX: 1, + KOTX: 1, + KOYX: 1, + KPCX: 1, + KRCX: 1, + KRDX: 1, + KRIX: 1, + KRMX: 1, + KRNX: 1, + KRTH: 1, + KRTX: 1, + KSBK: 1, + KSBX: 1, + KSCB: 1, + KSCX: 1, + KSMX: 1, + KSNX: 1, + KSTX: 1, + KSUX: 1, + KTBX: 1, + KTCX: 1, + KTDX: 1, + KTTX: 1, + KUBX: 1, + KUCB: 1, + KUCX: 1, + KUKX: 1, + KULX: 1, + KUMX: 1, + KUNS: 1, + KURX: 1, + KVBL: 1, + KVCX: 1, + KVGB: 1, + KYDX: 1, + LACX: 1, + LATX: 1, + LAVB: 1, + LBMX: 1, + LCBX: 1, + LCCX: 1, + LDCX: 1, + LDPX: 1, + LDRX: 1, + LECX: 1, + LICB: 1, + LKBL: 1, + LKCX: 1, + LKHX: 1, + LKMX: 1, + LMNX: 1, + LNSX: 1, + LOKX: 1, + LONX: 1, + LUCX: 1, + LULX: 1, + MABL: 1, + MACX: 1, + MADX: 1, + MAGX: 1, + MAHB: 1, + MAHG: 1, + MAHX: 1, + MAJX: 1, + MAKX: 1, + MALX: 1, + MAMX: 1, + MANX: 1, + MAPX: 1, + MASX: 1, + MAUX: 1, + MAVX: 1, + MAYX: 1, + MBCX: 1, + MBGX: 1, + MBLX: 1, + MCAX: 1, + MCBL: 1, + MCBX: 1, + MCCX: 1, + MCDX: 1, + MCLX: 1, + MCOX: 1, + MCSX: 1, + MCUX: 1, + MDCB: 1, + MDCX: 1, + MDEX: 1, + MDGX: 1, + MDIX: 1, + MDMX: 1, + MDPX: 1, + MEDX: 1, + MERX: 1, + MEUX: 1, + MFCX: 1, + MFUX: 1, + MGBX: 1, + MGCB: 1, + MGCX: 1, + MGDX: 1, + MGRB: 1, + MGSX: 1, + MGUX: 1, + MHCB: 1, + MHCX: 1, + MHEX: 1, + MHLX: 1, + MHMX: 1, + MHNX: 1, + MHSX: 1, + MHUX: 1, + MIZX: 1, + MJCX: 1, + MKPB: 1, + MKUX: 1, + MKYX: 1, + MLDX: 1, + MMCX: 1, + MMMX: 1, + MNBX: 1, + MNCX: 1, + MNSX: 1, + MOGX: 1, + MOUX: 1, + MPCX: 1, + MPDX: 1, + MPRX: 1, + MRBX: 1, + MRTX: 1, + MSAX: 1, + MSBL: 1, + MSBX: 1, + MSCI: 1, + MSCX: 1, + MSHQ: 1, + MSLM: 1, + MSNU: 1, + MSNX: 1, + MSOX: 1, + MSSX: 1, + MUBL: 1, + MUBX: 1, + MUCX: 1, + MUDX: 1, + MUNX: 1, + MUPX: 1, + MURX: 1, + MUSX: 1, + MVCB: 1, + MVCX: 1, + MVIX: 1, + MYAX: 1, + MYSX: 1, + MZCX: 1, + MZRX: 1, + NABX: 1, + NACX: 1, + NAGX: 1, + NAIX: 1, + NALX: 1, + NANX: 1, + NASX: 1, + NATA: 1, + NAUX: 1, + NAVX: 1, + NAWX: 1, + NBAD: 1, + NBBX: 1, + NBCX: 1, + NBMX: 1, + NBRD: 1, + NCBL: 1, + NCBX: 1, + NCCX: 1, + NCOX: 1, + NCUB: 1, + NCUX: 1, + NDCB: 1, + NDCX: 1, + NDDX: 1, + NDGX: 1, + NDIX: 1, + NESF: 1, + NEYX: 1, + NGBX: 1, + NGKX: 1, + NGNX: 1, + NGRX: 1, + NGSB: 1, + NGSX: 1, + NICB: 1, + NIDX: 1, + NILX: 1, + NIRX: 1, + NIUX: 1, + NJBK: 1, + NJCX: 1, + NJGX: 1, + NJMX: 1, + NJSX: 1, + NKGS: 1, + NLGX: 1, + NLUX: 1, + NMCB: 1, + NMCX: 1, + NMGB: 1, + NNCX: 1, + NNSB: 1, + NNSX: 1, + NOBX: 1, + NOIX: 1, + NOSC: 1, + NPCX: 1, + NPKX: 1, + NRDX: 1, + NSBB: 1, + NSBX: 1, + NSCX: 1, + NSGX: 1, + NSIX: 1, + NSJX: 1, + NSMX: 1, + NSPB: 1, + NSPX: 1, + NSRX: 1, + NTBL: 1, + NUBX: 1, + NUCB: 1, + NUCX: 1, + NVCX: 1, + NVNM: 1, + NVSX: 1, + NWCX: 1, + ODCX: 1, + ODGB: 1, + OIBA: 1, + OMCX: 1, + ONSX: 1, + ORBC: 1, + ORCB: 1, + OSMX: 1, + PABX: 1, + PACX: 1, + PADX: 1, + PALX: 1, + PANX: 1, + PARX: 1, + PASX: 1, + PATX: 1, + PAYX: 1, + PBGX: 1, + PCBL: 1, + PCBX: 1, + PCCB: 1, + PCCX: 1, + PCLX: 1, + PCMX: 1, + PCOX: 1, + PCPX: 1, + PCSX: 1, + PCTX: 1, + PCUX: 1, + PDBX: 1, + PDCX: 1, + PDNX: 1, + PDSX: 1, + PDUX: 1, + PGBX: 1, + PGCX: 1, + PGRX: 1, + PGTX: 1, + PITX: 1, + PJSB: 1, + PKBX: 1, + PKDX: 1, + PKGB: 1, + PLOX: 1, + PLUX: 1, + PMCB: 1, + PMCX: 1, + PMEC: 1, + PMNX: 1, + PNCX: 1, + PNMX: 1, + PNPX: 1, + PNSX: 1, + PPBX: 1, + PPCX: 1, + PRCX: 1, + PREX: 1, + PROX: 1, + PRPX: 1, + PRSX: 1, + PRTH: 1, + PSBX: 1, + PSCX: 1, + PSIB: 1, + PSRX: 1, + PSSX: 1, + PTCX: 1, + PTNX: 1, + PTSX: 1, + PUBX: 1, + PUCB: 1, + PUCX: 1, + PUDX: 1, + PUGX: 1, + PUNB: 1, + PUNX: 1, + PURX: 1, + PUSD: 1, + PUSX: 1, + PUUX: 1, + PVAX: 1, + PVCX: 1, + PVVX: 1, + PWUX: 1, + PYCX: 1, + PYTM: 1, + QNBA: 1, + QUCX: 1, + RABO: 1, + RACX: 1, + RAEX: 1, + RAJX: 1, + RAKX: 1, + RAMX: 1, + RANX: 1, + RATN: 1, + RAUX: 1, + RBBX: 1, + RBCX: 1, + RBIS: 1, + RBIH: 1, + RCBX: 1, + RCCX: 1, + RCDX: 1, + RCMX: 1, + RCUX: 1, + RDCX: 1, + RDNX: 1, + REBX: 1, + RECX: 1, + REWX: 1, + RGCX: 1, + RGSX: 1, + RHMX: 1, + RJCX: 1, + RJJX: 1, + RJNX: 1, + RJTX: 1, + RKCX: 1, + RLUX: 1, + RMGB: 1, + RNBX: 1, + RNDX: 1, + RNGX: 1, + RNSB: 1, + RNSX: 1, + ROCX: 1, + ROHX: 1, + RPUX: 1, + RRBP: 1, + RRSX: 1, + RSBL: 1, + RSBX: 1, + RSCB: 1, + RSSX: 1, + RSUX: 1, + RSVX: 1, + RUCX: 1, + RUKX: 1, + RUMX: 1, + RZSX: 1, + SABR: 1, + SABX: 1, + SACB: 1, + SACX: 1, + SADX: 1, + SAGX: 1, + SAHE: 1, + SAHX: 1, + SAIX: 1, + SALX: 1, + SAMX: 1, + SANT: 1, + SANX: 1, + SAPX: 1, + SARX: 1, + SASA: 1, + SASX: 1, + SATX: 1, + SAUX: 1, + SAVX: 1, + SAWX: 1, + SBBJ: 1, + SBCX: 1, + SBHY: 1, + SBIN: 1, + SBKX: 1, + SBLD: 1, + SBLS: 1, + SBLX: 1, + SBMX: 1, + SBMY: 1, + SBNX: 1, + SBPX: 1, + SBSX: 1, + SBTR: 1, + SBUJ: 1, + SBUX: 1, + SCBL: 1, + SCBX: 1, + SCCX: 1, + SCDX: 1, + SCIX: 1, + SCNX: 1, + SCOB: 1, + SCOX: 1, + SCPX: 1, + SCSX: 1, + SCUX: 1, + SDBX: 1, + SDCB: 1, + SDCE: 1, + SDCX: 1, + SDHX: 1, + SDSX: 1, + SDTX: 1, + SDUX: 1, + SEMX: 1, + SENX: 1, + SEUX: 1, + SEWX: 1, + SGCX: 1, + SGLX: 1, + SGSX: 1, + SGUX: 1, + SHAX: 1, + SHBK: 1, + SHBX: 1, + SHCX: 1, + SHEX: 1, + SHGX: 1, + SHIX: 1, + SHKX: 1, + SHMX: 1, + SHNX: 1, + SHOX: 1, + SHRX: 1, + SHSX: 1, + SHUX: 1, + SIBL: 1, + SIBX: 1, + SICX: 1, + SIDB: 1, + SIDC: 1, + SIDX: 1, + SIGX: 1, + SIHX: 1, + SIKX: 1, + SINX: 1, + SIRX: 1, + SISX: 1, + SITX: 1, + SIWX: 1, + SJGX: 1, + SJSB: 1, + SJSX: 1, + SKCX: 1, + SKKX: 1, + SKNX: 1, + SKSB: 1, + SKUX: 1, + SLAX: 1, + SLCX: 1, + SMBC: 1, + SMBX: 1, + SMCB: 1, + SMCX: 1, + SMEX: 1, + SMMX: 1, + SMNX: 1, + SMPX: 1, + SMSX: 1, + SMTX: 1, + SMUX: 1, + SMVC: 1, + SMWX: 1, + SNAX: 1, + SNBK: 1, + SNBX: 1, + SNCX: 1, + SNDX: 1, + SNGX: 1, + SNKX: 1, + SNLX: 1, + SNPX: 1, + SNSV: 1, + SNSX: 1, + SOBX: 1, + SOGE: 1, + SOLX: 1, + SONX: 1, + SPBX: 1, + SPCB: 1, + SPCX: 1, + SPNX: 1, + SPSX: 1, + SPTX: 1, + SRCB: 1, + SRCX: 1, + SREX: 1, + SRGX: 1, + SRHX: 1, + SRSX: 1, + SSBL: 1, + SSBX: 1, + SSDX: 1, + SSHX: 1, + SSKX: 1, + SSLX: 1, + SSNX: 1, + SSOX: 1, + SSSX: 1, + SSWX: 1, + STBP: 1, + STCB: 1, + STCX: 1, + STDX: 1, + STRX: 1, + SUBX: 1, + SUCX: 1, + SUDX: 1, + SULX: 1, + SUMX: 1, + SUNB: 1, + SURX: 1, + SURY: 1, + SUSX: 1, + SUTB: 1, + SUVX: 1, + SVAX: 1, + SVBL: 1, + SVCB: 1, + SVCX: 1, + SVGX: 1, + SVNX: 1, + SVOX: 1, + SVRX: 1, + SVSH: 1, + SVSX: 1, + SWMX: 1, + SWSX: 1, + SYNB: 1, + TACX: 1, + TADX: 1, + TAMX: 1, + TAPX: 1, + TASX: 1, + TBCX: 1, + TBDX: 1, + TBHX: 1, + TBMX: 1, + TBPX: 1, + TBSB: 1, + TBSX: 1, + TBTX: 1, + TBUX: 1, + TCBX: 1, + TCCX: 1, + TCHX: 1, + TCPX: 1, + TCUB: 1, + TCUX: 1, + TDBX: 1, + TDCB: 1, + TDCX: 1, + TDIX: 1, + TDMX: 1, + TDPX: 1, + TDSX: 1, + TECX: 1, + TEHX: 1, + TEMX: 1, + TESX: 1, + TETX: 1, + TFCX: 1, + TGBX: 1, + TGCG: 1, + TGCX: 1, + TGDX: 1, + TGMB: 1, + TGNX: 1, + TGUX: 1, + THCX: 1, + THOX: 1, + THRS: 1, + THRX: 1, + THWX: 1, + TIDX: 1, + TIRX: 1, + TJAX: 1, + TJBX: 1, + TJCX: 1, + TJDX: 1, + TJMX: 1, + TJNX: 1, + TJSB: 1, + TKAX: 1, + TKCX: 1, + TKDX: 1, + TKTX: 1, + TKUX: 1, + TLPX: 1, + TMAX: 1, + TMBL: 1, + TMBX: 1, + TMCX: 1, + TMNX: 1, + TMPX: 1, + TMSC: 1, + TMSX: 1, + TMTX: 1, + TMUX: 1, + TNBX: 1, + TNCX: 1, + TNDC: 1, + TNEX: 1, + TNHX: 1, + TNIX: 1, + TNKX: 1, + TNMX: 1, + TNSC: 1, + TNUX: 1, + TOCX: 1, + TPCX: 1, + TPDX: 1, + TPSX: 1, + TPUX: 1, + TRAX: 1, + TRDX: 1, + TSAB: 1, + TSAX: 1, + TSBX: 1, + TSCX: 1, + TSDX: 1, + TSIX: 1, + TSMX: 1, + TSNX: 1, + TSPX: 1, + TSSB: 1, + TSSX: 1, + TSUX: 1, + TTBX: 1, + TTCB: 1, + TTCX: 1, + TTGX: 1, + TTLX: 1, + TTUX: 1, + TUBX: 1, + TUCL: 1, + TUCX: 1, + TUDX: 1, + TUMX: 1, + TUNX: 1, + TUOX: 1, + TUPX: 1, + TURX: 1, + TVBX: 1, + TVDX: 1, + TVPX: 1, + TVUX: 1, + TYCX: 1, + UBBX: 1, + UBGX: 1, + UBIN: 1, + UCBA: 1, + UCBS: 1, + UCBX: 1, + UCCX: 1, + UCDX: 1, + UCUX: 1, + UGBX: 1, + UICX: 1, + UJSX: 1, + UJVN: 1, + UKGX: 1, + UMAX: 1, + UMCX: 1, + UMSX: 1, + UMUX: 1, + UNAX: 1, + UNIX: 1, + UNMX: 1, + UNSX: 1, + UOVB: 1, + UPCB: 1, + UPCX: 1, + URBN: 1, + URCX: 1, + URDX: 1, + URMX: 1, + UROX: 1, + USFB: 1, + USNX: 1, + UTBI: 1, + UTBX: 1, + UTCX: 1, + UTGX: 1, + UTIB: 1, + UTKS: 1, + UTKX: 1, + UTZX: 1, + UUCX: 1, + VADX: 1, + VAIX: 1, + VANX: 1, + VARA: 1, + VASJ: 1, + VASX: 1, + VAUX: 1, + VCAX: 1, + VCBX: 1, + VCCX: 1, + VCNB: 1, + VCOB: 1, + VCOX: 1, + VDCX: 1, + VDYX: 1, + VEDX: 1, + VERX: 1, + VGBX: 1, + VHDX: 1, + VICX: 1, + VIDX: 1, + VIJB: 1, + VIJX: 1, + VIKX: 1, + VIMX: 1, + VIRX: 1, + VISX: 1, + VJSX: 1, + VKCX: 1, + VKSX: 1, + VMCX: 1, + VMMX: 1, + VMUX: 1, + VNSX: 1, + VRDX: 1, + VSBL: 1, + VSBX: 1, + VSCX: 1, + VSSX: 1, + VSVX: 1, + VUCX: 1, + VVCX: 1, + VVSB: 1, + VYAX: 1, + VYPX: 1, + VYSA: 1, + WACX: 1, + WAIX: 1, + WARX: 1, + WAUX: 1, + WBSC: 1, + WCBX: 1, + WDCX: 1, + WKGX: 1, + WNBX: 1, + WPAC: 1, + WRCX: 1, + WUCX: 1, + WZUX: 1, + XJKG: 1, + YADX: 1, + YAVX: 1, + YCBX: 1, + YDCX: 1, + YESB: 1, + YLNX: 1, + YMSX: 1, + YNCX: 1, + YNSX: 1, + ZBBX: 1, + ZBSX: 1, + ZCBL: 1, + ZIBX: 1, + ZILX: 1, + ZIMX: 1, + ZISX: 1, + ZLLX: 1, + ZRNB: 1, + ZMMX: 1, + ZSAX: 1, + ZSBL: 1, + ZSBX: 1, + ZSGX: 1, + ZSHX: 1, + ZSJX: 1, + ZSKX: 1, + ZSLX: 1, + ZSMX: 1, } type Bank struct { diff --git a/src/go/bank_test.go b/src/go/bank_test.go index ba39a8f0..5ea36d2e 100644 --- a/src/go/bank_test.go +++ b/src/go/bank_test.go @@ -9,7 +9,7 @@ import ( func Test_BankGetDetails(t *testing.T) { assert := assert.New(t) result := GetBankDetails("FINO") - assert.Equal(getFINOixture(), *result) + assert.Equal(getFINOfixture(), *result) result = GetBankDetails("PUNB") assert.Equal(getPUNBFixture(), *result) } @@ -29,7 +29,7 @@ func getPUNBFixture() Bank { Upi: true, } } -func getFINOixture() Bank { +func getFINOfixture() Bank { return Bank{ Name: "Fino Payments Bank", BankCode: "", diff --git a/src/go/constants.go b/src/go/constants.go new file mode 100644 index 00000000..bbf4a43c --- /dev/null +++ b/src/go/constants.go @@ -0,0 +1,1426 @@ +package ifsc + +const ( + AACX = "AACX" + ABBL = "ABBL" + ABCX = "ABCX" + ABDX = "ABDX" + ABEX = "ABEX" + ABHY = "ABHY" + ABNA = "ABNA" + ABPB = "ABPB" + ABSB = "ABSB" + ABUX = "ABUX" + ACAX = "ACAX" + ACBX = "ACBX" + ACCX = "ACCX" + ACKX = "ACKX" + ACOX = "ACOX" + ACUB = "ACUB" + ACUX = "ACUX" + ADBX = "ADBX" + ADCB = "ADCB" + ADCC = "ADCC" + ADCX = "ADCX" + ADDX = "ADDX" + AGCX = "AGCX" + AGDX = "AGDX" + AGRX = "AGRX" + AGSX = "AGSX" + AGUX = "AGUX" + AGVX = "AGVX" + AHMX = "AHMX" + AHUX = "AHUX" + AIRP = "AIRP" + AJAR = "AJAR" + AJHC = "AJHC" + AJKB = "AJKB" + AJMX = "AJMX" + AJNX = "AJNX" + AJPX = "AJPX" + AJSX = "AJSX" + AJUX = "AJUX" + AKJB = "AKJB" + AKMX = "AKMX" + AKOX = "AKOX" + ALAX = "ALAX" + ALIX = "ALIX" + ALLA = "ALLA" + ALLX = "ALLX" + ALWX = "ALWX" + AMAX = "AMAX" + AMBX = "AMBX" + AMCB = "AMCB" + AMCX = "AMCX" + AMDN = "AMDN" + AMMX = "AMMX" + AMNX = "AMNX" + AMRX = "AMRX" + AMSB = "AMSB" + AMSX = "AMSX" + ANBX = "ANBX" + ANDB = "ANDB" + ANDX = "ANDX" + ANMX = "ANMX" + ANSX = "ANSX" + ANUX = "ANUX" + ANZB = "ANZB" + APBL = "APBL" + APCX = "APCX" + APGB = "APGB" + APGV = "APGV" + APGX = "APGX" + APJX = "APJX" + APMC = "APMC" + APMX = "APMX" + APNX = "APNX" + APRX = "APRX" + APSX = "APSX" + ARCX = "ARCX" + ARMX = "ARMX" + ARYX = "ARYX" + ASBL = "ASBL" + ASBX = "ASBX" + ASHX = "ASHX" + ASKX = "ASKX" + ASNX = "ASNX" + ASOX = "ASOX" + ASSX = "ASSX" + AUBL = "AUBL" + AUBX = "AUBX" + AUCB = "AUCB" + AUCX = "AUCX" + AUGX = "AUGX" + AURX = "AURX" + AVDX = "AVDX" + AWCX = "AWCX" + AWUX = "AWUX" + AZAX = "AZAX" + AZPX = "AZPX" + AZSX = "AZSX" + AZUX = "AZUX" + BACB = "BACB" + BACX = "BACX" + BADX = "BADX" + BALX = "BALX" + BANX = "BANX" + BARA = "BARA" + BARB = "BARB" + BARC = "BARC" + BARX = "BARX" + BASX = "BASX" + BAUX = "BAUX" + BAVX = "BAVX" + BBKM = "BBKM" + BBLX = "BBLX" + BBRX = "BBRX" + BBSX = "BBSX" + BBUX = "BBUX" + BBVX = "BBVX" + BCBM = "BCBM" + BCBX = "BCBX" + BCCB = "BCCB" + BCCX = "BCCX" + BCEX = "BCEX" + BCEY = "BCEY" + BCOX = "BCOX" + BCUB = "BCUB" + BCUX = "BCUX" + BDBL = "BDBL" + BDBX = "BDBX" + BDCX = "BDCX" + BDDX = "BDDX" + BDIX = "BDIX" + BDNX = "BDNX" + BDOX = "BDOX" + BDUX = "BDUX" + BEDX = "BEDX" + BELX = "BELX" + BFUX = "BFUX" + BGBX = "BGBX" + BGCX = "BGCX" + BGGX = "BGGX" + BGUX = "BGUX" + BGVX = "BGVX" + BHAX = "BHAX" + BHBX = "BHBX" + BHCX = "BHCX" + BHDX = "BHDX" + BHEX = "BHEX" + BHGX = "BHGX" + BHIX = "BHIX" + BHJX = "BHJX" + BHMX = "BHMX" + BHOX = "BHOX" + BHRX = "BHRX" + BHSX = "BHSX" + BHTX = "BHTX" + BHUX = "BHUX" + BHWX = "BHWX" + BJUX = "BJUX" + BKCX = "BKCX" + BKDN = "BKDN" + BKDX = "BKDX" + BKID = "BKID" + BKSX = "BKSX" + BLGX = "BLGX" + BMBL = "BMBL" + BMCB = "BMCB" + BMCX = "BMCX" + BMPX = "BMPX" + BMSX = "BMSX" + BNBX = "BNBX" + BNCX = "BNCX" + BNPA = "BNPA" + BNSB = "BNSB" + BNSX = "BNSX" + BODX = "BODX" + BOFA = "BOFA" + BORX = "BORX" + BOTM = "BOTM" + BOTX = "BOTX" + BPCX = "BPCX" + BPSX = "BPSX" + BRCX = "BRCX" + BRDX = "BRDX" + BRGX = "BRGX" + BRMX = "BRMX" + BRSX = "BRSX" + BRUX = "BRUX" + BSBX = "BSBX" + BSCX = "BSCX" + BTCX = "BTCX" + BTUX = "BTUX" + BUBX = "BUBX" + BUCL = "BUCL" + BUCX = "BUCX" + BUGX = "BUGX" + BUNX = "BUNX" + BURX = "BURX" + BUSX = "BUSX" + BUZX = "BUZX" + BVNX = "BVNX" + BVSX = "BVSX" + BWCX = "BWCX" + CALX = "CALX" + CBHX = "CBHX" + CBIN = "CBIN" + CCBL = "CCBL" + CCBX = "CCBX" + CCCX = "CCCX" + CCMX = "CCMX" + CCOB = "CCOB" + CCUX = "CCUX" + CDCX = "CDCX" + CEBX = "CEBX" + CGBX = "CGBX" + CGGX = "CGGX" + CHAS = "CHAS" + CHAX = "CHAX" + CHBX = "CHBX" + CHCX = "CHCX" + CHDX = "CHDX" + CHIX = "CHIX" + CHKX = "CHKX" + CHPX = "CHPX" + CHRX = "CHRX" + CHSX = "CHSX" + CHTX = "CHTX" + CIDX = "CIDX" + CITI = "CITI" + CITX = "CITX" + CIUB = "CIUB" + CJAX = "CJAX" + CJMX = "CJMX" + CLBL = "CLBL" + CMCB = "CMCB" + CMCX = "CMCX" + CMDX = "CMDX" + CMLX = "CMLX" + CMPX = "CMPX" + CNRB = "CNRB" + CNSX = "CNSX" + COCX = "COCX" + COLX = "COLX" + COMX = "COMX" + CONX = "CONX" + CORP = "CORP" + COSB = "COSB" + CPDX = "CPDX" + CPSN = "CPSN" + CRBX = "CRBX" + CRES = "CRES" + CRLY = "CRLY" + CRSX = "CRSX" + CRUB = "CRUB" + CSBK = "CSBK" + CSBX = "CSBX" + CTBA = "CTBA" + CTBX = "CTBX" + CTCB = "CTCB" + CTOX = "CTOX" + CTUX = "CTUX" + CUBX = "CUBX" + CUCX = "CUCX" + CURX = "CURX" + CZCX = "CZCX" + CZUX = "CZUX" + DAAX = "DAAX" + DAHX = "DAHX" + DAUX = "DAUX" + DBAX = "DBAX" + DBSS = "DBSS" + DCBL = "DCBL" + DCBX = "DCBX" + DCCX = "DCCX" + DCDX = "DCDX" + DCEX = "DCEX" + DCKX = "DCKX" + DCMX = "DCMX" + DCNX = "DCNX" + DCPX = "DCPX" + DCSX = "DCSX" + DCTX = "DCTX" + DCUX = "DCUX" + DDBX = "DDBX" + DDCX = "DDCX" + DDDX = "DDDX" + DDHX = "DDHX" + DEGX = "DEGX" + DENS = "DENS" + DEOB = "DEOB" + DEOX = "DEOX" + DEUT = "DEUT" + DEUX = "DEUX" + DEVX = "DEVX" + DGBX = "DGBX" + DHBX = "DHBX" + DHKX = "DHKX" + DHUX = "DHUX" + DIBX = "DIBX" + DICG = "DICG" + DICX = "DICX" + DIUX = "DIUX" + DJCX = "DJCX" + DKCL = "DKCL" + DKSX = "DKSX" + DLSC = "DLSC" + DLXB = "DLXB" + DMCB = "DMCB" + DMCX = "DMCX" + DMKB = "DMKB" + DMKJ = "DMKJ" + DNSB = "DNSB" + DNSX = "DNSX" + DOBX = "DOBX" + DOHB = "DOHB" + DRGX = "DRGX" + DSBX = "DSBX" + DSCB = "DSCB" + DSHX = "DSHX" + DSPX = "DSPX" + DSUX = "DSUX" + DTCX = "DTCX" + DTPX = "DTPX" + DUCX = "DUCX" + DUMX = "DUMX" + DUNX = "DUNX" + DURG = "DURG" + DVDX = "DVDX" + DYPX = "DYPX" + EBIL = "EBIL" + ECBL = "ECBL" + EDBX = "EDBX" + EDCX = "EDCX" + EDSX = "EDSX" + EIBI = "EIBI" + ESAF = "ESAF" + ESFB = "ESFB" + ESMF = "ESMF" + ETCX = "ETCX" + ETDX = "ETDX" + EUCX = "EUCX" + EWCX = "EWCX" + FCBX = "FCBX" + FCCX = "FCCX" + FCOX = "FCOX" + FDFX = "FDFX" + FDRL = "FDRL" + FEKX = "FEKX" + FGCB = "FGCB" + FINO = "FINO" + FINF = "FINF" + FINX = "FINX" + FIRN = "FIRN" + FIRX = "FIRX" + FMCX = "FMCX" + FRIX = "FRIX" + FSCX = "FSCX" + FSFB = "FSFB" + FZCX = "FZCX" + FZSX = "FZSX" + GACX = "GACX" + GADX = "GADX" + GANX = "GANX" + GBCB = "GBCB" + GCBX = "GCBX" + GCCX = "GCCX" + GCUL = "GCUL" + GCUX = "GCUX" + GDCB = "GDCB" + GDCX = "GDCX" + GDDX = "GDDX" + GDUX = "GDUX" + GGBK = "GGBK" + GGCX = "GGCX" + GHPX = "GHPX" + GKNX = "GKNX" + GMBX = "GMBX" + GMCX = "GMCX" + GMUX = "GMUX" + GNCX = "GNCX" + GNSX = "GNSX" + GODX = "GODX" + GOSX = "GOSX" + GPCX = "GPCX" + GPOX = "GPOX" + GRAX = "GRAX" + GSBL = "GSBL" + GSBX = "GSBX" + GSCB = "GSCB" + GSCX = "GSCX" + GSSX = "GSSX" + GTCX = "GTCX" + GUBX = "GUBX" + GUCX = "GUCX" + GUNX = "GUNX" + GUOX = "GUOX" + HAMX = "HAMX" + HANX = "HANX" + HARC = "HARC" + HCBL = "HCBL" + HCBX = "HCBX" + HCCX = "HCCX" + HCLX = "HCLX" + HDCX = "HDCX" + HDFC = "HDFC" + HGBX = "HGBX" + HINX = "HINX" + HISX = "HISX" + HMBX = "HMBX" + HMNX = "HMNX" + HOCX = "HOCX" + HOOX = "HOOX" + HPCX = "HPCX" + HPSC = "HPSC" + HPSX = "HPSX" + HSBC = "HSBC" + HSBX = "HSBX" + HSCX = "HSCX" + HSDX = "HSDX" + HSSX = "HSSX" + HUBX = "HUBX" + HUCX = "HUCX" + HUTX = "HUTX" + HVBK = "HVBK" + IBBK = "IBBK" + IBKL = "IBKL" + IBKO = "IBKO" + ICBK = "ICBK" + ICBL = "ICBL" + ICHX = "ICHX" + ICIC = "ICIC" + ICMX = "ICMX" + IDFB = "IDFB" + IDIB = "IDIB" + IDUK = "IDUK" + IDUX = "IDUX" + ILCB = "ILCB" + IMPX = "IMPX" + INCX = "INCX" + INDB = "INDB" + INDX = "INDX" + IOBA = "IOBA" + IPCX = "IPCX" + IPOS = "IPOS" + IPPB = "IPPB" + IPSX = "IPSX" + ISBX = "ISBX" + ISMX = "ISMX" + ITBL = "ITBL" + ITCX = "ITCX" + ITDX = "ITDX" + IUCB = "IUCB" + IUCX = "IUCX" + JACX = "JACX" + JAKA = "JAKA" + JALX = "JALX" + JAMX = "JAMX" + JANA = "JANA" + JANX = "JANX" + JASB = "JASB" + JASX = "JASX" + JAUX = "JAUX" + JBHX = "JBHX" + JBIX = "JBIX" + JBMX = "JBMX" + JCBX = "JCBX" + JCCB = "JCCB" + JCCX = "JCCX" + JCDX = "JCDX" + JCHX = "JCHX" + JCPX = "JCPX" + JCUX = "JCUX" + JDCX = "JDCX" + JDEX = "JDEX" + JGBX = "JGBX" + JGCX = "JGCX" + JGWX = "JGWX" + JHAX = "JHAX" + JHSX = "JHSX" + JHUX = "JHUX" + JIBX = "JIBX" + JICX = "JICX" + JIDX = "JIDX" + JIGX = "JIGX" + JIKX = "JIKX" + JIMX = "JIMX" + JINX = "JINX" + JIOP = "JIOP" + JIOX = "JIOX" + JIRX = "JIRX" + JISX = "JISX" + JIVX = "JIVX" + JJCX = "JJCX" + JJHX = "JJHX" + JJSB = "JJSB" + JKAX = "JKAX" + JKCX = "JKCX" + JKDX = "JKDX" + JKEX = "JKEX" + JKHX = "JKHX" + JKMX = "JKMX" + JKRX = "JKRX" + JKSX = "JKSX" + JLCX = "JLCX" + JLDX = "JLDX" + JLNX = "JLNX" + JLSX = "JLSX" + JLWX = "JLWX" + JMAX = "JMAX" + JMBX = "JMBX" + JMCX = "JMCX" + JMDX = "JMDX" + JMHX = "JMHX" + JMMX = "JMMX" + JMOX = "JMOX" + JMPX = "JMPX" + JMSX = "JMSX" + JMYX = "JMYX" + JNAX = "JNAX" + JNDX = "JNDX" + JNSX = "JNSX" + JODX = "JODX" + JONX = "JONX" + JOWX = "JOWX" + JPAX = "JPAX" + JPCB = "JPCB" + JPCX = "JPCX" + JRAX = "JRAX" + JRKX = "JRKX" + JRNX = "JRNX" + JRSX = "JRSX" + JSAB = "JSAB" + JSAX = "JSAX" + JSBL = "JSBL" + JSBP = "JSBP" + JSBX = "JSBX" + JSCX = "JSCX" + JSDX = "JSDX" + JSEX = "JSEX" + JSFB = "JSFB" + JSHX = "JSHX" + JSKX = "JSKX" + JSMX = "JSMX" + JSOX = "JSOX" + JSRX = "JSRX" + JSTX = "JSTX" + JSVX = "JSVX" + JSWX = "JSWX" + JTIX = "JTIX" + JTSX = "JTSX" + JUCX = "JUCX" + JUSX = "JUSX" + JVCX = "JVCX" + KAAX = "KAAX" + KACE = "KACE" + KACX = "KACX" + KADX = "KADX" + KAGX = "KAGX" + KAIJ = "KAIJ" + KALX = "KALX" + KAMX = "KAMX" + KANG = "KANG" + KANX = "KANX" + KARB = "KARB" + KARX = "KARX" + KASX = "KASX" + KATX = "KATX" + KAYX = "KAYX" + KBCX = "KBCX" + KBNX = "KBNX" + KBSX = "KBSX" + KCBL = "KCBL" + KCBX = "KCBX" + KCCB = "KCCB" + KCCX = "KCCX" + KCDX = "KCDX" + KCEX = "KCEX" + KCOB = "KCOB" + KCUB = "KCUB" + KCUX = "KCUX" + KDBX = "KDBX" + KDCB = "KDCB" + KDCX = "KDCX" + KDIX = "KDIX" + KDNX = "KDNX" + KDUX = "KDUX" + KEMX = "KEMX" + KESX = "KESX" + KGBX = "KGBX" + KGDX = "KGDX" + KGRB = "KGRB" + KGSX = "KGSX" + KHAX = "KHAX" + KHCX = "KHCX" + KHDX = "KHDX" + KHNX = "KHNX" + KHUX = "KHUX" + KICX = "KICX" + KJSB = "KJSB" + KJSX = "KJSX" + KKBK = "KKBK" + KKMX = "KKMX" + KKSX = "KKSX" + KLGB = "KLGB" + KLMX = "KLMX" + KMCB = "KMCB" + KMCX = "KMCX" + KMNX = "KMNX" + KMSX = "KMSX" + KNBX = "KNBX" + KNCX = "KNCX" + KNNX = "KNNX" + KNPX = "KNPX" + KNSB = "KNSB" + KNSX = "KNSX" + KOBX = "KOBX" + KOCX = "KOCX" + KODX = "KODX" + KOEX = "KOEX" + KOLH = "KOLH" + KOSX = "KOSX" + KOTX = "KOTX" + KOYX = "KOYX" + KPCX = "KPCX" + KRCX = "KRCX" + KRDX = "KRDX" + KRIX = "KRIX" + KRMX = "KRMX" + KRNX = "KRNX" + KRTH = "KRTH" + KRTX = "KRTX" + KSBK = "KSBK" + KSBX = "KSBX" + KSCB = "KSCB" + KSCX = "KSCX" + KSMX = "KSMX" + KSNX = "KSNX" + KSTX = "KSTX" + KSUX = "KSUX" + KTBX = "KTBX" + KTCX = "KTCX" + KTDX = "KTDX" + KTTX = "KTTX" + KUBX = "KUBX" + KUCB = "KUCB" + KUCX = "KUCX" + KUKX = "KUKX" + KULX = "KULX" + KUMX = "KUMX" + KUNS = "KUNS" + KURX = "KURX" + KVBL = "KVBL" + KVCX = "KVCX" + KVGB = "KVGB" + KYDX = "KYDX" + LACX = "LACX" + LATX = "LATX" + LAVB = "LAVB" + LBMX = "LBMX" + LCBX = "LCBX" + LCCX = "LCCX" + LDCX = "LDCX" + LDPX = "LDPX" + LDRX = "LDRX" + LECX = "LECX" + LICB = "LICB" + LKBL = "LKBL" + LKCX = "LKCX" + LKHX = "LKHX" + LKMX = "LKMX" + LMNX = "LMNX" + LNSX = "LNSX" + LOKX = "LOKX" + LONX = "LONX" + LUCX = "LUCX" + LULX = "LULX" + MABL = "MABL" + MACX = "MACX" + MADX = "MADX" + MAGX = "MAGX" + MAHB = "MAHB" + MAHG = "MAHG" + MAHX = "MAHX" + MAJX = "MAJX" + MAKX = "MAKX" + MALX = "MALX" + MAMX = "MAMX" + MANX = "MANX" + MAPX = "MAPX" + MASX = "MASX" + MAUX = "MAUX" + MAVX = "MAVX" + MAYX = "MAYX" + MBCX = "MBCX" + MBGX = "MBGX" + MBLX = "MBLX" + MCAX = "MCAX" + MCBL = "MCBL" + MCBX = "MCBX" + MCCX = "MCCX" + MCDX = "MCDX" + MCLX = "MCLX" + MCOX = "MCOX" + MCSX = "MCSX" + MCUX = "MCUX" + MDCB = "MDCB" + MDCX = "MDCX" + MDEX = "MDEX" + MDGX = "MDGX" + MDIX = "MDIX" + MDMX = "MDMX" + MDPX = "MDPX" + MEDX = "MEDX" + MERX = "MERX" + MEUX = "MEUX" + MFCX = "MFCX" + MFUX = "MFUX" + MGBX = "MGBX" + MGCB = "MGCB" + MGCX = "MGCX" + MGDX = "MGDX" + MGRB = "MGRB" + MGSX = "MGSX" + MGUX = "MGUX" + MHCB = "MHCB" + MHCX = "MHCX" + MHEX = "MHEX" + MHLX = "MHLX" + MHMX = "MHMX" + MHNX = "MHNX" + MHSX = "MHSX" + MHUX = "MHUX" + MIZX = "MIZX" + MJCX = "MJCX" + MKPB = "MKPB" + MKUX = "MKUX" + MKYX = "MKYX" + MLDX = "MLDX" + MMCX = "MMCX" + MMMX = "MMMX" + MNBX = "MNBX" + MNCX = "MNCX" + MNSX = "MNSX" + MOGX = "MOGX" + MOUX = "MOUX" + MPCX = "MPCX" + MPDX = "MPDX" + MPRX = "MPRX" + MRBX = "MRBX" + MRTX = "MRTX" + MSAX = "MSAX" + MSBL = "MSBL" + MSBX = "MSBX" + MSCI = "MSCI" + MSCX = "MSCX" + MSHQ = "MSHQ" + MSLM = "MSLM" + MSNU = "MSNU" + MSNX = "MSNX" + MSOX = "MSOX" + MSSX = "MSSX" + MUBL = "MUBL" + MUBX = "MUBX" + MUCX = "MUCX" + MUDX = "MUDX" + MUNX = "MUNX" + MUPX = "MUPX" + MURX = "MURX" + MUSX = "MUSX" + MVCB = "MVCB" + MVCX = "MVCX" + MVIX = "MVIX" + MYAX = "MYAX" + MYSX = "MYSX" + MZCX = "MZCX" + MZRX = "MZRX" + NABX = "NABX" + NACX = "NACX" + NAGX = "NAGX" + NAIX = "NAIX" + NALX = "NALX" + NANX = "NANX" + NASX = "NASX" + NATA = "NATA" + NAUX = "NAUX" + NAVX = "NAVX" + NAWX = "NAWX" + NBAD = "NBAD" + NBBX = "NBBX" + NBCX = "NBCX" + NBMX = "NBMX" + NBRD = "NBRD" + NCBL = "NCBL" + NCBX = "NCBX" + NCCX = "NCCX" + NCOX = "NCOX" + NCUB = "NCUB" + NCUX = "NCUX" + NDCB = "NDCB" + NDCX = "NDCX" + NDDX = "NDDX" + NDGX = "NDGX" + NDIX = "NDIX" + NESF = "NESF" + NEYX = "NEYX" + NGBX = "NGBX" + NGKX = "NGKX" + NGNX = "NGNX" + NGRX = "NGRX" + NGSB = "NGSB" + NGSX = "NGSX" + NICB = "NICB" + NIDX = "NIDX" + NILX = "NILX" + NIRX = "NIRX" + NIUX = "NIUX" + NJBK = "NJBK" + NJCX = "NJCX" + NJGX = "NJGX" + NJMX = "NJMX" + NJSX = "NJSX" + NKGS = "NKGS" + NLGX = "NLGX" + NLUX = "NLUX" + NMCB = "NMCB" + NMCX = "NMCX" + NMGB = "NMGB" + NNCX = "NNCX" + NNSB = "NNSB" + NNSX = "NNSX" + NOBX = "NOBX" + NOIX = "NOIX" + NOSC = "NOSC" + NPCX = "NPCX" + NPKX = "NPKX" + NRDX = "NRDX" + NSBB = "NSBB" + NSBX = "NSBX" + NSCX = "NSCX" + NSGX = "NSGX" + NSIX = "NSIX" + NSJX = "NSJX" + NSMX = "NSMX" + NSPB = "NSPB" + NSPX = "NSPX" + NSRX = "NSRX" + NTBL = "NTBL" + NUBX = "NUBX" + NUCB = "NUCB" + NUCX = "NUCX" + NVCX = "NVCX" + NVNM = "NVNM" + NVSX = "NVSX" + NWCX = "NWCX" + ODCX = "ODCX" + ODGB = "ODGB" + OIBA = "OIBA" + OMCX = "OMCX" + ONSX = "ONSX" + ORBC = "ORBC" + ORCB = "ORCB" + OSMX = "OSMX" + PABX = "PABX" + PACX = "PACX" + PADX = "PADX" + PALX = "PALX" + PANX = "PANX" + PARX = "PARX" + PASX = "PASX" + PATX = "PATX" + PAYX = "PAYX" + PBGX = "PBGX" + PCBL = "PCBL" + PCBX = "PCBX" + PCCB = "PCCB" + PCCX = "PCCX" + PCLX = "PCLX" + PCMX = "PCMX" + PCOX = "PCOX" + PCPX = "PCPX" + PCSX = "PCSX" + PCTX = "PCTX" + PCUX = "PCUX" + PDBX = "PDBX" + PDCX = "PDCX" + PDNX = "PDNX" + PDSX = "PDSX" + PDUX = "PDUX" + PGBX = "PGBX" + PGCX = "PGCX" + PGRX = "PGRX" + PGTX = "PGTX" + PITX = "PITX" + PJSB = "PJSB" + PKBX = "PKBX" + PKDX = "PKDX" + PKGB = "PKGB" + PLOX = "PLOX" + PLUX = "PLUX" + PMCB = "PMCB" + PMCX = "PMCX" + PMEC = "PMEC" + PMNX = "PMNX" + PNCX = "PNCX" + PNMX = "PNMX" + PNPX = "PNPX" + PNSX = "PNSX" + PPBX = "PPBX" + PPCX = "PPCX" + PRCX = "PRCX" + PREX = "PREX" + PROX = "PROX" + PRPX = "PRPX" + PRSX = "PRSX" + PRTH = "PRTH" + PSBX = "PSBX" + PSCX = "PSCX" + PSIB = "PSIB" + PSRX = "PSRX" + PSSX = "PSSX" + PTCX = "PTCX" + PTNX = "PTNX" + PTSX = "PTSX" + PUBX = "PUBX" + PUCB = "PUCB" + PUCX = "PUCX" + PUDX = "PUDX" + PUGX = "PUGX" + PUNB = "PUNB" + PUNX = "PUNX" + PURX = "PURX" + PUSD = "PUSD" + PUSX = "PUSX" + PUUX = "PUUX" + PVAX = "PVAX" + PVCX = "PVCX" + PVVX = "PVVX" + PWUX = "PWUX" + PYCX = "PYCX" + PYTM = "PYTM" + QNBA = "QNBA" + QUCX = "QUCX" + RABO = "RABO" + RACX = "RACX" + RAEX = "RAEX" + RAJX = "RAJX" + RAKX = "RAKX" + RAMX = "RAMX" + RANX = "RANX" + RATN = "RATN" + RAUX = "RAUX" + RBBX = "RBBX" + RBCX = "RBCX" + RBIS = "RBIS" + RBIH = "RBIH" + RCBX = "RCBX" + RCCX = "RCCX" + RCDX = "RCDX" + RCMX = "RCMX" + RCUX = "RCUX" + RDCX = "RDCX" + RDNX = "RDNX" + REBX = "REBX" + RECX = "RECX" + REWX = "REWX" + RGCX = "RGCX" + RGSX = "RGSX" + RHMX = "RHMX" + RJCX = "RJCX" + RJJX = "RJJX" + RJNX = "RJNX" + RJTX = "RJTX" + RKCX = "RKCX" + RLUX = "RLUX" + RMGB = "RMGB" + RNBX = "RNBX" + RNDX = "RNDX" + RNGX = "RNGX" + RNSB = "RNSB" + RNSX = "RNSX" + ROCX = "ROCX" + ROHX = "ROHX" + RPUX = "RPUX" + RRBP = "RRBP" + RRSX = "RRSX" + RSBL = "RSBL" + RSBX = "RSBX" + RSCB = "RSCB" + RSSX = "RSSX" + RSUX = "RSUX" + RSVX = "RSVX" + RUCX = "RUCX" + RUKX = "RUKX" + RUMX = "RUMX" + RZSX = "RZSX" + SABR = "SABR" + SABX = "SABX" + SACB = "SACB" + SACX = "SACX" + SADX = "SADX" + SAGX = "SAGX" + SAHE = "SAHE" + SAHX = "SAHX" + SAIX = "SAIX" + SALX = "SALX" + SAMX = "SAMX" + SANT = "SANT" + SANX = "SANX" + SAPX = "SAPX" + SARX = "SARX" + SASA = "SASA" + SASX = "SASX" + SATX = "SATX" + SAUX = "SAUX" + SAVX = "SAVX" + SAWX = "SAWX" + SBBJ = "SBBJ" + SBCX = "SBCX" + SBHY = "SBHY" + SBIN = "SBIN" + SBKX = "SBKX" + SBLD = "SBLD" + SBLS = "SBLS" + SBLX = "SBLX" + SBMX = "SBMX" + SBMY = "SBMY" + SBNX = "SBNX" + SBPX = "SBPX" + SBSX = "SBSX" + SBTR = "SBTR" + SBUJ = "SBUJ" + SBUX = "SBUX" + SCBL = "SCBL" + SCBX = "SCBX" + SCCX = "SCCX" + SCDX = "SCDX" + SCIX = "SCIX" + SCNX = "SCNX" + SCOB = "SCOB" + SCOX = "SCOX" + SCPX = "SCPX" + SCSX = "SCSX" + SCUX = "SCUX" + SDBX = "SDBX" + SDCB = "SDCB" + SDCE = "SDCE" + SDCX = "SDCX" + SDHX = "SDHX" + SDSX = "SDSX" + SDTX = "SDTX" + SDUX = "SDUX" + SEMX = "SEMX" + SENX = "SENX" + SEUX = "SEUX" + SEWX = "SEWX" + SGCX = "SGCX" + SGLX = "SGLX" + SGSX = "SGSX" + SGUX = "SGUX" + SHAX = "SHAX" + SHBK = "SHBK" + SHBX = "SHBX" + SHCX = "SHCX" + SHEX = "SHEX" + SHGX = "SHGX" + SHIX = "SHIX" + SHKX = "SHKX" + SHMX = "SHMX" + SHNX = "SHNX" + SHOX = "SHOX" + SHRX = "SHRX" + SHSX = "SHSX" + SHUX = "SHUX" + SIBL = "SIBL" + SIBX = "SIBX" + SICX = "SICX" + SIDB = "SIDB" + SIDC = "SIDC" + SIDX = "SIDX" + SIGX = "SIGX" + SIHX = "SIHX" + SIKX = "SIKX" + SINX = "SINX" + SIRX = "SIRX" + SISX = "SISX" + SITX = "SITX" + SIWX = "SIWX" + SJGX = "SJGX" + SJSB = "SJSB" + SJSX = "SJSX" + SKCX = "SKCX" + SKKX = "SKKX" + SKNX = "SKNX" + SKSB = "SKSB" + SKUX = "SKUX" + SLAX = "SLAX" + SLCX = "SLCX" + SMBC = "SMBC" + SMBX = "SMBX" + SMCB = "SMCB" + SMCX = "SMCX" + SMEX = "SMEX" + SMMX = "SMMX" + SMNX = "SMNX" + SMPX = "SMPX" + SMSX = "SMSX" + SMTX = "SMTX" + SMUX = "SMUX" + SMVC = "SMVC" + SMWX = "SMWX" + SNAX = "SNAX" + SNBK = "SNBK" + SNBX = "SNBX" + SNCX = "SNCX" + SNDX = "SNDX" + SNGX = "SNGX" + SNKX = "SNKX" + SNLX = "SNLX" + SNPX = "SNPX" + SNSV = "SNSV" + SNSX = "SNSX" + SOBX = "SOBX" + SOGE = "SOGE" + SOLX = "SOLX" + SONX = "SONX" + SPBX = "SPBX" + SPCB = "SPCB" + SPCX = "SPCX" + SPNX = "SPNX" + SPSX = "SPSX" + SPTX = "SPTX" + SRCB = "SRCB" + SRCX = "SRCX" + SREX = "SREX" + SRGX = "SRGX" + SRHX = "SRHX" + SRSX = "SRSX" + SSBL = "SSBL" + SSBX = "SSBX" + SSDX = "SSDX" + SSHX = "SSHX" + SSKX = "SSKX" + SSLX = "SSLX" + SSNX = "SSNX" + SSOX = "SSOX" + SSSX = "SSSX" + SSWX = "SSWX" + STBP = "STBP" + STCB = "STCB" + STCX = "STCX" + STDX = "STDX" + STRX = "STRX" + SUBX = "SUBX" + SUCX = "SUCX" + SUDX = "SUDX" + SULX = "SULX" + SUMX = "SUMX" + SUNB = "SUNB" + SURX = "SURX" + SURY = "SURY" + SUSX = "SUSX" + SUTB = "SUTB" + SUVX = "SUVX" + SVAX = "SVAX" + SVBL = "SVBL" + SVCB = "SVCB" + SVCX = "SVCX" + SVGX = "SVGX" + SVNX = "SVNX" + SVOX = "SVOX" + SVRX = "SVRX" + SVSH = "SVSH" + SVSX = "SVSX" + SWMX = "SWMX" + SWSX = "SWSX" + SYNB = "SYNB" + TACX = "TACX" + TADX = "TADX" + TAMX = "TAMX" + TAPX = "TAPX" + TASX = "TASX" + TBCX = "TBCX" + TBDX = "TBDX" + TBHX = "TBHX" + TBMX = "TBMX" + TBPX = "TBPX" + TBSB = "TBSB" + TBSX = "TBSX" + TBTX = "TBTX" + TBUX = "TBUX" + TCBX = "TCBX" + TCCX = "TCCX" + TCHX = "TCHX" + TCPX = "TCPX" + TCUB = "TCUB" + TCUX = "TCUX" + TDBX = "TDBX" + TDCB = "TDCB" + TDCX = "TDCX" + TDIX = "TDIX" + TDMX = "TDMX" + TDPX = "TDPX" + TDSX = "TDSX" + TECX = "TECX" + TEHX = "TEHX" + TEMX = "TEMX" + TESX = "TESX" + TETX = "TETX" + TFCX = "TFCX" + TGBX = "TGBX" + TGCG = "TGCG" + TGCX = "TGCX" + TGDX = "TGDX" + TGMB = "TGMB" + TGNX = "TGNX" + TGUX = "TGUX" + THCX = "THCX" + THOX = "THOX" + THRS = "THRS" + THRX = "THRX" + THWX = "THWX" + TIDX = "TIDX" + TIRX = "TIRX" + TJAX = "TJAX" + TJBX = "TJBX" + TJCX = "TJCX" + TJDX = "TJDX" + TJMX = "TJMX" + TJNX = "TJNX" + TJSB = "TJSB" + TKAX = "TKAX" + TKCX = "TKCX" + TKDX = "TKDX" + TKTX = "TKTX" + TKUX = "TKUX" + TLPX = "TLPX" + TMAX = "TMAX" + TMBL = "TMBL" + TMBX = "TMBX" + TMCX = "TMCX" + TMNX = "TMNX" + TMPX = "TMPX" + TMSC = "TMSC" + TMSX = "TMSX" + TMTX = "TMTX" + TMUX = "TMUX" + TNBX = "TNBX" + TNCX = "TNCX" + TNDC = "TNDC" + TNEX = "TNEX" + TNHX = "TNHX" + TNIX = "TNIX" + TNKX = "TNKX" + TNMX = "TNMX" + TNSC = "TNSC" + TNUX = "TNUX" + TOCX = "TOCX" + TPCX = "TPCX" + TPDX = "TPDX" + TPSX = "TPSX" + TPUX = "TPUX" + TRAX = "TRAX" + TRDX = "TRDX" + TSAB = "TSAB" + TSAX = "TSAX" + TSBX = "TSBX" + TSCX = "TSCX" + TSDX = "TSDX" + TSIX = "TSIX" + TSMX = "TSMX" + TSNX = "TSNX" + TSPX = "TSPX" + TSSB = "TSSB" + TSSX = "TSSX" + TSUX = "TSUX" + TTBX = "TTBX" + TTCB = "TTCB" + TTCX = "TTCX" + TTGX = "TTGX" + TTLX = "TTLX" + TTUX = "TTUX" + TUBX = "TUBX" + TUCL = "TUCL" + TUCX = "TUCX" + TUDX = "TUDX" + TUMX = "TUMX" + TUNX = "TUNX" + TUOX = "TUOX" + TUPX = "TUPX" + TURX = "TURX" + TVBX = "TVBX" + TVDX = "TVDX" + TVPX = "TVPX" + TVUX = "TVUX" + TYCX = "TYCX" + UBBX = "UBBX" + UBGX = "UBGX" + UBIN = "UBIN" + UCBA = "UCBA" + UCBS = "UCBS" + UCBX = "UCBX" + UCCX = "UCCX" + UCDX = "UCDX" + UCUX = "UCUX" + UGBX = "UGBX" + UICX = "UICX" + UJSX = "UJSX" + UJVN = "UJVN" + UKGX = "UKGX" + UMAX = "UMAX" + UMCX = "UMCX" + UMSX = "UMSX" + UMUX = "UMUX" + UNAX = "UNAX" + UNIX = "UNIX" + UNMX = "UNMX" + UNSX = "UNSX" + UOVB = "UOVB" + UPCB = "UPCB" + UPCX = "UPCX" + URBN = "URBN" + URCX = "URCX" + URDX = "URDX" + URMX = "URMX" + UROX = "UROX" + USFB = "USFB" + USNX = "USNX" + UTBI = "UTBI" + UTBX = "UTBX" + UTCX = "UTCX" + UTGX = "UTGX" + UTIB = "UTIB" + UTKS = "UTKS" + UTKX = "UTKX" + UTZX = "UTZX" + UUCX = "UUCX" + VADX = "VADX" + VAIX = "VAIX" + VANX = "VANX" + VARA = "VARA" + VASJ = "VASJ" + VASX = "VASX" + VAUX = "VAUX" + VCAX = "VCAX" + VCBX = "VCBX" + VCCX = "VCCX" + VCNB = "VCNB" + VCOB = "VCOB" + VCOX = "VCOX" + VDCX = "VDCX" + VDYX = "VDYX" + VEDX = "VEDX" + VERX = "VERX" + VGBX = "VGBX" + VHDX = "VHDX" + VICX = "VICX" + VIDX = "VIDX" + VIJB = "VIJB" + VIJX = "VIJX" + VIKX = "VIKX" + VIMX = "VIMX" + VIRX = "VIRX" + VISX = "VISX" + VJSX = "VJSX" + VKCX = "VKCX" + VKSX = "VKSX" + VMCX = "VMCX" + VMMX = "VMMX" + VMUX = "VMUX" + VNSX = "VNSX" + VRDX = "VRDX" + VSBL = "VSBL" + VSBX = "VSBX" + VSCX = "VSCX" + VSSX = "VSSX" + VSVX = "VSVX" + VUCX = "VUCX" + VVCX = "VVCX" + VVSB = "VVSB" + VYAX = "VYAX" + VYPX = "VYPX" + VYSA = "VYSA" + WACX = "WACX" + WAIX = "WAIX" + WARX = "WARX" + WAUX = "WAUX" + WBSC = "WBSC" + WCBX = "WCBX" + WDCX = "WDCX" + WKGX = "WKGX" + WNBX = "WNBX" + WPAC = "WPAC" + WRCX = "WRCX" + WUCX = "WUCX" + WZUX = "WZUX" + XJKG = "XJKG" + YADX = "YADX" + YAVX = "YAVX" + YCBX = "YCBX" + YDCX = "YDCX" + YESB = "YESB" + YLNX = "YLNX" + YMSX = "YMSX" + YNCX = "YNCX" + YNSX = "YNSX" + ZBBX = "ZBBX" + ZBSX = "ZBSX" + ZCBL = "ZCBL" + ZIBX = "ZIBX" + ZILX = "ZILX" + ZIMX = "ZIMX" + ZISX = "ZISX" + ZLLX = "ZLLX" + ZRNB = "ZRNB" + ZMMX = "ZMMX" + ZSAX = "ZSAX" + ZSBL = "ZSBL" + ZSBX = "ZSBX" + ZSGX = "ZSGX" + ZSHX = "ZSHX" + ZSJX = "ZSJX" + ZSKX = "ZSKX" + ZSLX = "ZSLX" + ZSMX = "ZSMX" +) From 69299b4bba3c54e7a213fe3a5eb411ccc0cfb390 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Wed, 9 Sep 2020 19:42:40 +0530 Subject: [PATCH 11/24] update makefile --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e1c9d1a2..12f778e0 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,3 @@ -SRC_DIR="./src/go" .PHONY: test test: - cd $(SRC_DIR);go test -tags=unit -timeout 2m -coverprofile=coverage.cov -v ./... + go test -tags=unit -timeout 2m -coverprofile=coverage.cov -v ./... From b1b7fe404ffc58292a4db236e327220f3e1deaef Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Thu, 10 Sep 2020 12:32:26 +0530 Subject: [PATCH 12/24] add validator_asserts.json tests. --- src/go/bank.go | 2 +- src/go/ifsc.go | 18 ++++++++++++------ src/go/ifsc_test.go | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/go/bank.go b/src/go/bank.go index 081e5207..24d56de8 100644 --- a/src/go/bank.go +++ b/src/go/bank.go @@ -1449,7 +1449,7 @@ var bankData map[string]Bank func LoadBankData() { if bankData == nil { - if err := LoadFile("banks.json", &bankData); err != nil { + if err := LoadFile("banks.json", &bankData,""); err != nil { log.Panic(fmt.Sprintf("there is some error in banknames.json file: %v", err)) } } diff --git a/src/go/ifsc.go b/src/go/ifsc.go index 071a8d47..3ef0f148 100644 --- a/src/go/ifsc.go +++ b/src/go/ifsc.go @@ -42,35 +42,41 @@ func (d *Data) UnmarshalJSON(input []byte) error { func init() { LoadBankData() if ifsc == nil { - if err := LoadFile("IFSC.json", &ifsc); err != nil { + if err := LoadFile("IFSC.json", &ifsc, ""); err != nil { log.Panic(fmt.Sprintf("there is some error in IFSC.json file: %v", err)) } } if sublet == nil { - if err := LoadFile("sublet.json", &sublet); err != nil { + if err := LoadFile("sublet.json", &sublet, ""); err != nil { log.Panic(fmt.Sprintf("there is some error in sublet.json file: %v", err)) } } if customSublets == nil { - if err := LoadFile("custom-sublets.json", &customSublets); err != nil { + if err := LoadFile("custom-sublets.json", &customSublets, ""); err != nil { log.Panic(fmt.Sprintf("there is some error in custom-sublets.json file: %v", err)) } } if bankNames == nil { - if err := LoadFile("banknames.json", &bankNames); err != nil { + if err := LoadFile("banknames.json", &bankNames, ""); err != nil { log.Panic(fmt.Sprintf("there is some error in banknames.json file: %v", err)) } } } -func LoadFile(fileName string, result interface{}) error { +func LoadFile(fileName string, result interface{}, fullDirPath string) error { _, fileN, _, ok := runtime.Caller(0) if !ok { return errors.New("it was not possible to recover the information. Caller function error") } dir, _ := path.Split(fileN) jsonDir := path.Join(dir, "..") - completePath := path.Join(jsonDir, fileName) + var completePath string + if fullDirPath != "" { + completePath = path.Join(fullDirPath, fileName) + } else { + completePath = path.Join(jsonDir, fileName) + + } bytes, err := ioutil.ReadFile(completePath) if err != nil { return err diff --git a/src/go/ifsc_test.go b/src/go/ifsc_test.go index 9b7cdaa3..60ebdc1b 100644 --- a/src/go/ifsc_test.go +++ b/src/go/ifsc_test.go @@ -86,3 +86,35 @@ func TestValidateBankCode(t *testing.T) { }) } } + +func TestValidate(t *testing.T) { + var result interface{} + err := LoadFile("validator_asserts.json", &result, "../../tests") + if err != nil { + t.Fatalf("error: %+v", err) + } + type args struct { + code string + } + tests := []struct { + name string + args args + want bool + }{} + for key, value := range result.(map[string]interface{}) { + for inp_key, expected_val := range value.(map[string]interface{}) { + tests = append(tests, struct { + name string + args args + want bool + }{key + ":" + inp_key, args{inp_key}, expected_val.(bool)}) + } + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := Validate(tt.args.code); got != tt.want { + t.Errorf("Validate() = %v, want %v", got, tt.want) + } + }) + } +} From 8681ec6690c627ffc725ad9d70775c48ae2fe95a Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Tue, 22 Sep 2020 18:10:28 +0530 Subject: [PATCH 13/24] update go.sum --- go.sum | 9 --------- 1 file changed, 9 deletions(-) diff --git a/go.sum b/go.sum index afe7890c..1474045d 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,2 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 84c71f2fcd31ab4a2446d35f07966cc79b935940 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Thu, 24 Sep 2020 09:36:57 +0530 Subject: [PATCH 14/24] use struct instead of const for bankCode. --- src/go/bank.go | 1437 +--------------------- src/go/constants.go | 2848 +++++++++++++++++++++---------------------- 2 files changed, 1436 insertions(+), 2849 deletions(-) diff --git a/src/go/bank.go b/src/go/bank.go index 24d56de8..0b43cb3d 100644 --- a/src/go/bank.go +++ b/src/go/bank.go @@ -3,1432 +3,10 @@ package ifsc import ( "fmt" "log" + "reflect" ) -var bankCodes = map[string]int{ - AACX: 1, - ABBL: 1, - ABCX: 1, - ABDX: 1, - ABEX: 1, - ABHY: 1, - ABNA: 1, - ABPB: 1, - ABSB: 1, - ABUX: 1, - ACAX: 1, - ACBX: 1, - ACCX: 1, - ACKX: 1, - ACOX: 1, - ACUB: 1, - ACUX: 1, - ADBX: 1, - ADCB: 1, - ADCC: 1, - ADCX: 1, - ADDX: 1, - AGCX: 1, - AGDX: 1, - AGRX: 1, - AGSX: 1, - AGUX: 1, - AGVX: 1, - AHMX: 1, - AHUX: 1, - AIRP: 1, - AJAR: 1, - AJHC: 1, - AJKB: 1, - AJMX: 1, - AJNX: 1, - AJPX: 1, - AJSX: 1, - AJUX: 1, - AKJB: 1, - AKMX: 1, - AKOX: 1, - ALAX: 1, - ALIX: 1, - ALLA: 1, - ALLX: 1, - ALWX: 1, - AMAX: 1, - AMBX: 1, - AMCB: 1, - AMCX: 1, - AMDN: 1, - AMMX: 1, - AMNX: 1, - AMRX: 1, - AMSB: 1, - AMSX: 1, - ANBX: 1, - ANDB: 1, - ANDX: 1, - ANMX: 1, - ANSX: 1, - ANUX: 1, - ANZB: 1, - APBL: 1, - APCX: 1, - APGB: 1, - APGV: 1, - APGX: 1, - APJX: 1, - APMC: 1, - APMX: 1, - APNX: 1, - APRX: 1, - APSX: 1, - ARCX: 1, - ARMX: 1, - ARYX: 1, - ASBL: 1, - ASBX: 1, - ASHX: 1, - ASKX: 1, - ASNX: 1, - ASOX: 1, - ASSX: 1, - AUBL: 1, - AUBX: 1, - AUCB: 1, - AUCX: 1, - AUGX: 1, - AURX: 1, - AVDX: 1, - AWCX: 1, - AWUX: 1, - AZAX: 1, - AZPX: 1, - AZSX: 1, - AZUX: 1, - BACB: 1, - BACX: 1, - BADX: 1, - BALX: 1, - BANX: 1, - BARA: 1, - BARB: 1, - BARC: 1, - BARX: 1, - BASX: 1, - BAUX: 1, - BAVX: 1, - BBKM: 1, - BBLX: 1, - BBRX: 1, - BBSX: 1, - BBUX: 1, - BBVX: 1, - BCBM: 1, - BCBX: 1, - BCCB: 1, - BCCX: 1, - BCEX: 1, - BCEY: 1, - BCOX: 1, - BCUB: 1, - BCUX: 1, - BDBL: 1, - BDBX: 1, - BDCX: 1, - BDDX: 1, - BDIX: 1, - BDNX: 1, - BDOX: 1, - BDUX: 1, - BEDX: 1, - BELX: 1, - BFUX: 1, - BGBX: 1, - BGCX: 1, - BGGX: 1, - BGUX: 1, - BGVX: 1, - BHAX: 1, - BHBX: 1, - BHCX: 1, - BHDX: 1, - BHEX: 1, - BHGX: 1, - BHIX: 1, - BHJX: 1, - BHMX: 1, - BHOX: 1, - BHRX: 1, - BHSX: 1, - BHTX: 1, - BHUX: 1, - BHWX: 1, - BJUX: 1, - BKCX: 1, - BKDN: 1, - BKDX: 1, - BKID: 1, - BKSX: 1, - BLGX: 1, - BMBL: 1, - BMCB: 1, - BMCX: 1, - BMPX: 1, - BMSX: 1, - BNBX: 1, - BNCX: 1, - BNPA: 1, - BNSB: 1, - BNSX: 1, - BODX: 1, - BOFA: 1, - BORX: 1, - BOTM: 1, - BOTX: 1, - BPCX: 1, - BPSX: 1, - BRCX: 1, - BRDX: 1, - BRGX: 1, - BRMX: 1, - BRSX: 1, - BRUX: 1, - BSBX: 1, - BSCX: 1, - BTCX: 1, - BTUX: 1, - BUBX: 1, - BUCL: 1, - BUCX: 1, - BUGX: 1, - BUNX: 1, - BURX: 1, - BUSX: 1, - BUZX: 1, - BVNX: 1, - BVSX: 1, - BWCX: 1, - CALX: 1, - CBHX: 1, - CBIN: 1, - CCBL: 1, - CCBX: 1, - CCCX: 1, - CCMX: 1, - CCOB: 1, - CCUX: 1, - CDCX: 1, - CEBX: 1, - CGBX: 1, - CGGX: 1, - CHAS: 1, - CHAX: 1, - CHBX: 1, - CHCX: 1, - CHDX: 1, - CHIX: 1, - CHKX: 1, - CHPX: 1, - CHRX: 1, - CHSX: 1, - CHTX: 1, - CIDX: 1, - CITI: 1, - CITX: 1, - CIUB: 1, - CJAX: 1, - CJMX: 1, - CLBL: 1, - CMCB: 1, - CMCX: 1, - CMDX: 1, - CMLX: 1, - CMPX: 1, - CNRB: 1, - CNSX: 1, - COCX: 1, - COLX: 1, - COMX: 1, - CONX: 1, - CORP: 1, - COSB: 1, - CPDX: 1, - CPSN: 1, - CRBX: 1, - CRES: 1, - CRLY: 1, - CRSX: 1, - CRUB: 1, - CSBK: 1, - CSBX: 1, - CTBA: 1, - CTBX: 1, - CTCB: 1, - CTOX: 1, - CTUX: 1, - CUBX: 1, - CUCX: 1, - CURX: 1, - CZCX: 1, - CZUX: 1, - DAAX: 1, - DAHX: 1, - DAUX: 1, - DBAX: 1, - DBSS: 1, - DCBL: 1, - DCBX: 1, - DCCX: 1, - DCDX: 1, - DCEX: 1, - DCKX: 1, - DCMX: 1, - DCNX: 1, - DCPX: 1, - DCSX: 1, - DCTX: 1, - DCUX: 1, - DDBX: 1, - DDCX: 1, - DDDX: 1, - DDHX: 1, - DEGX: 1, - DENS: 1, - DEOB: 1, - DEOX: 1, - DEUT: 1, - DEUX: 1, - DEVX: 1, - DGBX: 1, - DHBX: 1, - DHKX: 1, - DHUX: 1, - DIBX: 1, - DICG: 1, - DICX: 1, - DIUX: 1, - DJCX: 1, - DKCL: 1, - DKSX: 1, - DLSC: 1, - DLXB: 1, - DMCB: 1, - DMCX: 1, - DMKB: 1, - DMKJ: 1, - DNSB: 1, - DNSX: 1, - DOBX: 1, - DOHB: 1, - DRGX: 1, - DSBX: 1, - DSCB: 1, - DSHX: 1, - DSPX: 1, - DSUX: 1, - DTCX: 1, - DTPX: 1, - DUCX: 1, - DUMX: 1, - DUNX: 1, - DURG: 1, - DVDX: 1, - DYPX: 1, - EBIL: 1, - ECBL: 1, - EDBX: 1, - EDCX: 1, - EDSX: 1, - EIBI: 1, - ESAF: 1, - ESFB: 1, - ESMF: 1, - ETCX: 1, - ETDX: 1, - EUCX: 1, - EWCX: 1, - FCBX: 1, - FCCX: 1, - FCOX: 1, - FDFX: 1, - FDRL: 1, - FEKX: 1, - FGCB: 1, - FINO: 1, - FINF: 1, - FINX: 1, - FIRN: 1, - FIRX: 1, - FMCX: 1, - FRIX: 1, - FSCX: 1, - FSFB: 1, - FZCX: 1, - FZSX: 1, - GACX: 1, - GADX: 1, - GANX: 1, - GBCB: 1, - GCBX: 1, - GCCX: 1, - GCUL: 1, - GCUX: 1, - GDCB: 1, - GDCX: 1, - GDDX: 1, - GDUX: 1, - GGBK: 1, - GGCX: 1, - GHPX: 1, - GKNX: 1, - GMBX: 1, - GMCX: 1, - GMUX: 1, - GNCX: 1, - GNSX: 1, - GODX: 1, - GOSX: 1, - GPCX: 1, - GPOX: 1, - GRAX: 1, - GSBL: 1, - GSBX: 1, - GSCB: 1, - GSCX: 1, - GSSX: 1, - GTCX: 1, - GUBX: 1, - GUCX: 1, - GUNX: 1, - GUOX: 1, - HAMX: 1, - HANX: 1, - HARC: 1, - HCBL: 1, - HCBX: 1, - HCCX: 1, - HCLX: 1, - HDCX: 1, - HDFC: 1, - HGBX: 1, - HINX: 1, - HISX: 1, - HMBX: 1, - HMNX: 1, - HOCX: 1, - HOOX: 1, - HPCX: 1, - HPSC: 1, - HPSX: 1, - HSBC: 1, - HSBX: 1, - HSCX: 1, - HSDX: 1, - HSSX: 1, - HUBX: 1, - HUCX: 1, - HUTX: 1, - HVBK: 1, - IBBK: 1, - IBKL: 1, - IBKO: 1, - ICBK: 1, - ICBL: 1, - ICHX: 1, - ICIC: 1, - ICMX: 1, - IDFB: 1, - IDIB: 1, - IDUK: 1, - IDUX: 1, - ILCB: 1, - IMPX: 1, - INCX: 1, - INDB: 1, - INDX: 1, - IOBA: 1, - IPCX: 1, - IPOS: 1, - IPPB: 1, - IPSX: 1, - ISBX: 1, - ISMX: 1, - ITBL: 1, - ITCX: 1, - ITDX: 1, - IUCB: 1, - IUCX: 1, - JACX: 1, - JAKA: 1, - JALX: 1, - JAMX: 1, - JANA: 1, - JANX: 1, - JASB: 1, - JASX: 1, - JAUX: 1, - JBHX: 1, - JBIX: 1, - JBMX: 1, - JCBX: 1, - JCCB: 1, - JCCX: 1, - JCDX: 1, - JCHX: 1, - JCPX: 1, - JCUX: 1, - JDCX: 1, - JDEX: 1, - JGBX: 1, - JGCX: 1, - JGWX: 1, - JHAX: 1, - JHSX: 1, - JHUX: 1, - JIBX: 1, - JICX: 1, - JIDX: 1, - JIGX: 1, - JIKX: 1, - JIMX: 1, - JINX: 1, - JIOP: 1, - JIOX: 1, - JIRX: 1, - JISX: 1, - JIVX: 1, - JJCX: 1, - JJHX: 1, - JJSB: 1, - JKAX: 1, - JKCX: 1, - JKDX: 1, - JKEX: 1, - JKHX: 1, - JKMX: 1, - JKRX: 1, - JKSX: 1, - JLCX: 1, - JLDX: 1, - JLNX: 1, - JLSX: 1, - JLWX: 1, - JMAX: 1, - JMBX: 1, - JMCX: 1, - JMDX: 1, - JMHX: 1, - JMMX: 1, - JMOX: 1, - JMPX: 1, - JMSX: 1, - JMYX: 1, - JNAX: 1, - JNDX: 1, - JNSX: 1, - JODX: 1, - JONX: 1, - JOWX: 1, - JPAX: 1, - JPCB: 1, - JPCX: 1, - JRAX: 1, - JRKX: 1, - JRNX: 1, - JRSX: 1, - JSAB: 1, - JSAX: 1, - JSBL: 1, - JSBP: 1, - JSBX: 1, - JSCX: 1, - JSDX: 1, - JSEX: 1, - JSFB: 1, - JSHX: 1, - JSKX: 1, - JSMX: 1, - JSOX: 1, - JSRX: 1, - JSTX: 1, - JSVX: 1, - JSWX: 1, - JTIX: 1, - JTSX: 1, - JUCX: 1, - JUSX: 1, - JVCX: 1, - KAAX: 1, - KACE: 1, - KACX: 1, - KADX: 1, - KAGX: 1, - KAIJ: 1, - KALX: 1, - KAMX: 1, - KANG: 1, - KANX: 1, - KARB: 1, - KARX: 1, - KASX: 1, - KATX: 1, - KAYX: 1, - KBCX: 1, - KBNX: 1, - KBSX: 1, - KCBL: 1, - KCBX: 1, - KCCB: 1, - KCCX: 1, - KCDX: 1, - KCEX: 1, - KCOB: 1, - KCUB: 1, - KCUX: 1, - KDBX: 1, - KDCB: 1, - KDCX: 1, - KDIX: 1, - KDNX: 1, - KDUX: 1, - KEMX: 1, - KESX: 1, - KGBX: 1, - KGDX: 1, - KGRB: 1, - KGSX: 1, - KHAX: 1, - KHCX: 1, - KHDX: 1, - KHNX: 1, - KHUX: 1, - KICX: 1, - KJSB: 1, - KJSX: 1, - KKBK: 1, - KKMX: 1, - KKSX: 1, - KLGB: 1, - KLMX: 1, - KMCB: 1, - KMCX: 1, - KMNX: 1, - KMSX: 1, - KNBX: 1, - KNCX: 1, - KNNX: 1, - KNPX: 1, - KNSB: 1, - KNSX: 1, - KOBX: 1, - KOCX: 1, - KODX: 1, - KOEX: 1, - KOLH: 1, - KOSX: 1, - KOTX: 1, - KOYX: 1, - KPCX: 1, - KRCX: 1, - KRDX: 1, - KRIX: 1, - KRMX: 1, - KRNX: 1, - KRTH: 1, - KRTX: 1, - KSBK: 1, - KSBX: 1, - KSCB: 1, - KSCX: 1, - KSMX: 1, - KSNX: 1, - KSTX: 1, - KSUX: 1, - KTBX: 1, - KTCX: 1, - KTDX: 1, - KTTX: 1, - KUBX: 1, - KUCB: 1, - KUCX: 1, - KUKX: 1, - KULX: 1, - KUMX: 1, - KUNS: 1, - KURX: 1, - KVBL: 1, - KVCX: 1, - KVGB: 1, - KYDX: 1, - LACX: 1, - LATX: 1, - LAVB: 1, - LBMX: 1, - LCBX: 1, - LCCX: 1, - LDCX: 1, - LDPX: 1, - LDRX: 1, - LECX: 1, - LICB: 1, - LKBL: 1, - LKCX: 1, - LKHX: 1, - LKMX: 1, - LMNX: 1, - LNSX: 1, - LOKX: 1, - LONX: 1, - LUCX: 1, - LULX: 1, - MABL: 1, - MACX: 1, - MADX: 1, - MAGX: 1, - MAHB: 1, - MAHG: 1, - MAHX: 1, - MAJX: 1, - MAKX: 1, - MALX: 1, - MAMX: 1, - MANX: 1, - MAPX: 1, - MASX: 1, - MAUX: 1, - MAVX: 1, - MAYX: 1, - MBCX: 1, - MBGX: 1, - MBLX: 1, - MCAX: 1, - MCBL: 1, - MCBX: 1, - MCCX: 1, - MCDX: 1, - MCLX: 1, - MCOX: 1, - MCSX: 1, - MCUX: 1, - MDCB: 1, - MDCX: 1, - MDEX: 1, - MDGX: 1, - MDIX: 1, - MDMX: 1, - MDPX: 1, - MEDX: 1, - MERX: 1, - MEUX: 1, - MFCX: 1, - MFUX: 1, - MGBX: 1, - MGCB: 1, - MGCX: 1, - MGDX: 1, - MGRB: 1, - MGSX: 1, - MGUX: 1, - MHCB: 1, - MHCX: 1, - MHEX: 1, - MHLX: 1, - MHMX: 1, - MHNX: 1, - MHSX: 1, - MHUX: 1, - MIZX: 1, - MJCX: 1, - MKPB: 1, - MKUX: 1, - MKYX: 1, - MLDX: 1, - MMCX: 1, - MMMX: 1, - MNBX: 1, - MNCX: 1, - MNSX: 1, - MOGX: 1, - MOUX: 1, - MPCX: 1, - MPDX: 1, - MPRX: 1, - MRBX: 1, - MRTX: 1, - MSAX: 1, - MSBL: 1, - MSBX: 1, - MSCI: 1, - MSCX: 1, - MSHQ: 1, - MSLM: 1, - MSNU: 1, - MSNX: 1, - MSOX: 1, - MSSX: 1, - MUBL: 1, - MUBX: 1, - MUCX: 1, - MUDX: 1, - MUNX: 1, - MUPX: 1, - MURX: 1, - MUSX: 1, - MVCB: 1, - MVCX: 1, - MVIX: 1, - MYAX: 1, - MYSX: 1, - MZCX: 1, - MZRX: 1, - NABX: 1, - NACX: 1, - NAGX: 1, - NAIX: 1, - NALX: 1, - NANX: 1, - NASX: 1, - NATA: 1, - NAUX: 1, - NAVX: 1, - NAWX: 1, - NBAD: 1, - NBBX: 1, - NBCX: 1, - NBMX: 1, - NBRD: 1, - NCBL: 1, - NCBX: 1, - NCCX: 1, - NCOX: 1, - NCUB: 1, - NCUX: 1, - NDCB: 1, - NDCX: 1, - NDDX: 1, - NDGX: 1, - NDIX: 1, - NESF: 1, - NEYX: 1, - NGBX: 1, - NGKX: 1, - NGNX: 1, - NGRX: 1, - NGSB: 1, - NGSX: 1, - NICB: 1, - NIDX: 1, - NILX: 1, - NIRX: 1, - NIUX: 1, - NJBK: 1, - NJCX: 1, - NJGX: 1, - NJMX: 1, - NJSX: 1, - NKGS: 1, - NLGX: 1, - NLUX: 1, - NMCB: 1, - NMCX: 1, - NMGB: 1, - NNCX: 1, - NNSB: 1, - NNSX: 1, - NOBX: 1, - NOIX: 1, - NOSC: 1, - NPCX: 1, - NPKX: 1, - NRDX: 1, - NSBB: 1, - NSBX: 1, - NSCX: 1, - NSGX: 1, - NSIX: 1, - NSJX: 1, - NSMX: 1, - NSPB: 1, - NSPX: 1, - NSRX: 1, - NTBL: 1, - NUBX: 1, - NUCB: 1, - NUCX: 1, - NVCX: 1, - NVNM: 1, - NVSX: 1, - NWCX: 1, - ODCX: 1, - ODGB: 1, - OIBA: 1, - OMCX: 1, - ONSX: 1, - ORBC: 1, - ORCB: 1, - OSMX: 1, - PABX: 1, - PACX: 1, - PADX: 1, - PALX: 1, - PANX: 1, - PARX: 1, - PASX: 1, - PATX: 1, - PAYX: 1, - PBGX: 1, - PCBL: 1, - PCBX: 1, - PCCB: 1, - PCCX: 1, - PCLX: 1, - PCMX: 1, - PCOX: 1, - PCPX: 1, - PCSX: 1, - PCTX: 1, - PCUX: 1, - PDBX: 1, - PDCX: 1, - PDNX: 1, - PDSX: 1, - PDUX: 1, - PGBX: 1, - PGCX: 1, - PGRX: 1, - PGTX: 1, - PITX: 1, - PJSB: 1, - PKBX: 1, - PKDX: 1, - PKGB: 1, - PLOX: 1, - PLUX: 1, - PMCB: 1, - PMCX: 1, - PMEC: 1, - PMNX: 1, - PNCX: 1, - PNMX: 1, - PNPX: 1, - PNSX: 1, - PPBX: 1, - PPCX: 1, - PRCX: 1, - PREX: 1, - PROX: 1, - PRPX: 1, - PRSX: 1, - PRTH: 1, - PSBX: 1, - PSCX: 1, - PSIB: 1, - PSRX: 1, - PSSX: 1, - PTCX: 1, - PTNX: 1, - PTSX: 1, - PUBX: 1, - PUCB: 1, - PUCX: 1, - PUDX: 1, - PUGX: 1, - PUNB: 1, - PUNX: 1, - PURX: 1, - PUSD: 1, - PUSX: 1, - PUUX: 1, - PVAX: 1, - PVCX: 1, - PVVX: 1, - PWUX: 1, - PYCX: 1, - PYTM: 1, - QNBA: 1, - QUCX: 1, - RABO: 1, - RACX: 1, - RAEX: 1, - RAJX: 1, - RAKX: 1, - RAMX: 1, - RANX: 1, - RATN: 1, - RAUX: 1, - RBBX: 1, - RBCX: 1, - RBIS: 1, - RBIH: 1, - RCBX: 1, - RCCX: 1, - RCDX: 1, - RCMX: 1, - RCUX: 1, - RDCX: 1, - RDNX: 1, - REBX: 1, - RECX: 1, - REWX: 1, - RGCX: 1, - RGSX: 1, - RHMX: 1, - RJCX: 1, - RJJX: 1, - RJNX: 1, - RJTX: 1, - RKCX: 1, - RLUX: 1, - RMGB: 1, - RNBX: 1, - RNDX: 1, - RNGX: 1, - RNSB: 1, - RNSX: 1, - ROCX: 1, - ROHX: 1, - RPUX: 1, - RRBP: 1, - RRSX: 1, - RSBL: 1, - RSBX: 1, - RSCB: 1, - RSSX: 1, - RSUX: 1, - RSVX: 1, - RUCX: 1, - RUKX: 1, - RUMX: 1, - RZSX: 1, - SABR: 1, - SABX: 1, - SACB: 1, - SACX: 1, - SADX: 1, - SAGX: 1, - SAHE: 1, - SAHX: 1, - SAIX: 1, - SALX: 1, - SAMX: 1, - SANT: 1, - SANX: 1, - SAPX: 1, - SARX: 1, - SASA: 1, - SASX: 1, - SATX: 1, - SAUX: 1, - SAVX: 1, - SAWX: 1, - SBBJ: 1, - SBCX: 1, - SBHY: 1, - SBIN: 1, - SBKX: 1, - SBLD: 1, - SBLS: 1, - SBLX: 1, - SBMX: 1, - SBMY: 1, - SBNX: 1, - SBPX: 1, - SBSX: 1, - SBTR: 1, - SBUJ: 1, - SBUX: 1, - SCBL: 1, - SCBX: 1, - SCCX: 1, - SCDX: 1, - SCIX: 1, - SCNX: 1, - SCOB: 1, - SCOX: 1, - SCPX: 1, - SCSX: 1, - SCUX: 1, - SDBX: 1, - SDCB: 1, - SDCE: 1, - SDCX: 1, - SDHX: 1, - SDSX: 1, - SDTX: 1, - SDUX: 1, - SEMX: 1, - SENX: 1, - SEUX: 1, - SEWX: 1, - SGCX: 1, - SGLX: 1, - SGSX: 1, - SGUX: 1, - SHAX: 1, - SHBK: 1, - SHBX: 1, - SHCX: 1, - SHEX: 1, - SHGX: 1, - SHIX: 1, - SHKX: 1, - SHMX: 1, - SHNX: 1, - SHOX: 1, - SHRX: 1, - SHSX: 1, - SHUX: 1, - SIBL: 1, - SIBX: 1, - SICX: 1, - SIDB: 1, - SIDC: 1, - SIDX: 1, - SIGX: 1, - SIHX: 1, - SIKX: 1, - SINX: 1, - SIRX: 1, - SISX: 1, - SITX: 1, - SIWX: 1, - SJGX: 1, - SJSB: 1, - SJSX: 1, - SKCX: 1, - SKKX: 1, - SKNX: 1, - SKSB: 1, - SKUX: 1, - SLAX: 1, - SLCX: 1, - SMBC: 1, - SMBX: 1, - SMCB: 1, - SMCX: 1, - SMEX: 1, - SMMX: 1, - SMNX: 1, - SMPX: 1, - SMSX: 1, - SMTX: 1, - SMUX: 1, - SMVC: 1, - SMWX: 1, - SNAX: 1, - SNBK: 1, - SNBX: 1, - SNCX: 1, - SNDX: 1, - SNGX: 1, - SNKX: 1, - SNLX: 1, - SNPX: 1, - SNSV: 1, - SNSX: 1, - SOBX: 1, - SOGE: 1, - SOLX: 1, - SONX: 1, - SPBX: 1, - SPCB: 1, - SPCX: 1, - SPNX: 1, - SPSX: 1, - SPTX: 1, - SRCB: 1, - SRCX: 1, - SREX: 1, - SRGX: 1, - SRHX: 1, - SRSX: 1, - SSBL: 1, - SSBX: 1, - SSDX: 1, - SSHX: 1, - SSKX: 1, - SSLX: 1, - SSNX: 1, - SSOX: 1, - SSSX: 1, - SSWX: 1, - STBP: 1, - STCB: 1, - STCX: 1, - STDX: 1, - STRX: 1, - SUBX: 1, - SUCX: 1, - SUDX: 1, - SULX: 1, - SUMX: 1, - SUNB: 1, - SURX: 1, - SURY: 1, - SUSX: 1, - SUTB: 1, - SUVX: 1, - SVAX: 1, - SVBL: 1, - SVCB: 1, - SVCX: 1, - SVGX: 1, - SVNX: 1, - SVOX: 1, - SVRX: 1, - SVSH: 1, - SVSX: 1, - SWMX: 1, - SWSX: 1, - SYNB: 1, - TACX: 1, - TADX: 1, - TAMX: 1, - TAPX: 1, - TASX: 1, - TBCX: 1, - TBDX: 1, - TBHX: 1, - TBMX: 1, - TBPX: 1, - TBSB: 1, - TBSX: 1, - TBTX: 1, - TBUX: 1, - TCBX: 1, - TCCX: 1, - TCHX: 1, - TCPX: 1, - TCUB: 1, - TCUX: 1, - TDBX: 1, - TDCB: 1, - TDCX: 1, - TDIX: 1, - TDMX: 1, - TDPX: 1, - TDSX: 1, - TECX: 1, - TEHX: 1, - TEMX: 1, - TESX: 1, - TETX: 1, - TFCX: 1, - TGBX: 1, - TGCG: 1, - TGCX: 1, - TGDX: 1, - TGMB: 1, - TGNX: 1, - TGUX: 1, - THCX: 1, - THOX: 1, - THRS: 1, - THRX: 1, - THWX: 1, - TIDX: 1, - TIRX: 1, - TJAX: 1, - TJBX: 1, - TJCX: 1, - TJDX: 1, - TJMX: 1, - TJNX: 1, - TJSB: 1, - TKAX: 1, - TKCX: 1, - TKDX: 1, - TKTX: 1, - TKUX: 1, - TLPX: 1, - TMAX: 1, - TMBL: 1, - TMBX: 1, - TMCX: 1, - TMNX: 1, - TMPX: 1, - TMSC: 1, - TMSX: 1, - TMTX: 1, - TMUX: 1, - TNBX: 1, - TNCX: 1, - TNDC: 1, - TNEX: 1, - TNHX: 1, - TNIX: 1, - TNKX: 1, - TNMX: 1, - TNSC: 1, - TNUX: 1, - TOCX: 1, - TPCX: 1, - TPDX: 1, - TPSX: 1, - TPUX: 1, - TRAX: 1, - TRDX: 1, - TSAB: 1, - TSAX: 1, - TSBX: 1, - TSCX: 1, - TSDX: 1, - TSIX: 1, - TSMX: 1, - TSNX: 1, - TSPX: 1, - TSSB: 1, - TSSX: 1, - TSUX: 1, - TTBX: 1, - TTCB: 1, - TTCX: 1, - TTGX: 1, - TTLX: 1, - TTUX: 1, - TUBX: 1, - TUCL: 1, - TUCX: 1, - TUDX: 1, - TUMX: 1, - TUNX: 1, - TUOX: 1, - TUPX: 1, - TURX: 1, - TVBX: 1, - TVDX: 1, - TVPX: 1, - TVUX: 1, - TYCX: 1, - UBBX: 1, - UBGX: 1, - UBIN: 1, - UCBA: 1, - UCBS: 1, - UCBX: 1, - UCCX: 1, - UCDX: 1, - UCUX: 1, - UGBX: 1, - UICX: 1, - UJSX: 1, - UJVN: 1, - UKGX: 1, - UMAX: 1, - UMCX: 1, - UMSX: 1, - UMUX: 1, - UNAX: 1, - UNIX: 1, - UNMX: 1, - UNSX: 1, - UOVB: 1, - UPCB: 1, - UPCX: 1, - URBN: 1, - URCX: 1, - URDX: 1, - URMX: 1, - UROX: 1, - USFB: 1, - USNX: 1, - UTBI: 1, - UTBX: 1, - UTCX: 1, - UTGX: 1, - UTIB: 1, - UTKS: 1, - UTKX: 1, - UTZX: 1, - UUCX: 1, - VADX: 1, - VAIX: 1, - VANX: 1, - VARA: 1, - VASJ: 1, - VASX: 1, - VAUX: 1, - VCAX: 1, - VCBX: 1, - VCCX: 1, - VCNB: 1, - VCOB: 1, - VCOX: 1, - VDCX: 1, - VDYX: 1, - VEDX: 1, - VERX: 1, - VGBX: 1, - VHDX: 1, - VICX: 1, - VIDX: 1, - VIJB: 1, - VIJX: 1, - VIKX: 1, - VIMX: 1, - VIRX: 1, - VISX: 1, - VJSX: 1, - VKCX: 1, - VKSX: 1, - VMCX: 1, - VMMX: 1, - VMUX: 1, - VNSX: 1, - VRDX: 1, - VSBL: 1, - VSBX: 1, - VSCX: 1, - VSSX: 1, - VSVX: 1, - VUCX: 1, - VVCX: 1, - VVSB: 1, - VYAX: 1, - VYPX: 1, - VYSA: 1, - WACX: 1, - WAIX: 1, - WARX: 1, - WAUX: 1, - WBSC: 1, - WCBX: 1, - WDCX: 1, - WKGX: 1, - WNBX: 1, - WPAC: 1, - WRCX: 1, - WUCX: 1, - WZUX: 1, - XJKG: 1, - YADX: 1, - YAVX: 1, - YCBX: 1, - YDCX: 1, - YESB: 1, - YLNX: 1, - YMSX: 1, - YNCX: 1, - YNSX: 1, - ZBBX: 1, - ZBSX: 1, - ZCBL: 1, - ZIBX: 1, - ZILX: 1, - ZIMX: 1, - ZISX: 1, - ZLLX: 1, - ZRNB: 1, - ZMMX: 1, - ZSAX: 1, - ZSBL: 1, - ZSBX: 1, - ZSGX: 1, - ZSHX: 1, - ZSJX: 1, - ZSKX: 1, - ZSLX: 1, - ZSMX: 1, -} +var bankCodes = map[string]int{} type Bank struct { Name string `json:"name"` @@ -1446,10 +24,19 @@ type Bank struct { } var bankData map[string]Bank +var BankCode bankCode +func init() { + val := reflect.Indirect(reflect.ValueOf(&BankCode)) + for i := 0; i < val.NumField(); i++ { + bankName := val.Type().Field(i).Name + bankCodes[bankName] = 1 + val.Field(i).SetString(bankName) + } +} func LoadBankData() { if bankData == nil { - if err := LoadFile("banks.json", &bankData,""); err != nil { + if err := LoadFile("banks.json", &bankData, ""); err != nil { log.Panic(fmt.Sprintf("there is some error in banknames.json file: %v", err)) } } diff --git a/src/go/constants.go b/src/go/constants.go index bbf4a43c..ebb663c8 100644 --- a/src/go/constants.go +++ b/src/go/constants.go @@ -1,1426 +1,1426 @@ package ifsc -const ( - AACX = "AACX" - ABBL = "ABBL" - ABCX = "ABCX" - ABDX = "ABDX" - ABEX = "ABEX" - ABHY = "ABHY" - ABNA = "ABNA" - ABPB = "ABPB" - ABSB = "ABSB" - ABUX = "ABUX" - ACAX = "ACAX" - ACBX = "ACBX" - ACCX = "ACCX" - ACKX = "ACKX" - ACOX = "ACOX" - ACUB = "ACUB" - ACUX = "ACUX" - ADBX = "ADBX" - ADCB = "ADCB" - ADCC = "ADCC" - ADCX = "ADCX" - ADDX = "ADDX" - AGCX = "AGCX" - AGDX = "AGDX" - AGRX = "AGRX" - AGSX = "AGSX" - AGUX = "AGUX" - AGVX = "AGVX" - AHMX = "AHMX" - AHUX = "AHUX" - AIRP = "AIRP" - AJAR = "AJAR" - AJHC = "AJHC" - AJKB = "AJKB" - AJMX = "AJMX" - AJNX = "AJNX" - AJPX = "AJPX" - AJSX = "AJSX" - AJUX = "AJUX" - AKJB = "AKJB" - AKMX = "AKMX" - AKOX = "AKOX" - ALAX = "ALAX" - ALIX = "ALIX" - ALLA = "ALLA" - ALLX = "ALLX" - ALWX = "ALWX" - AMAX = "AMAX" - AMBX = "AMBX" - AMCB = "AMCB" - AMCX = "AMCX" - AMDN = "AMDN" - AMMX = "AMMX" - AMNX = "AMNX" - AMRX = "AMRX" - AMSB = "AMSB" - AMSX = "AMSX" - ANBX = "ANBX" - ANDB = "ANDB" - ANDX = "ANDX" - ANMX = "ANMX" - ANSX = "ANSX" - ANUX = "ANUX" - ANZB = "ANZB" - APBL = "APBL" - APCX = "APCX" - APGB = "APGB" - APGV = "APGV" - APGX = "APGX" - APJX = "APJX" - APMC = "APMC" - APMX = "APMX" - APNX = "APNX" - APRX = "APRX" - APSX = "APSX" - ARCX = "ARCX" - ARMX = "ARMX" - ARYX = "ARYX" - ASBL = "ASBL" - ASBX = "ASBX" - ASHX = "ASHX" - ASKX = "ASKX" - ASNX = "ASNX" - ASOX = "ASOX" - ASSX = "ASSX" - AUBL = "AUBL" - AUBX = "AUBX" - AUCB = "AUCB" - AUCX = "AUCX" - AUGX = "AUGX" - AURX = "AURX" - AVDX = "AVDX" - AWCX = "AWCX" - AWUX = "AWUX" - AZAX = "AZAX" - AZPX = "AZPX" - AZSX = "AZSX" - AZUX = "AZUX" - BACB = "BACB" - BACX = "BACX" - BADX = "BADX" - BALX = "BALX" - BANX = "BANX" - BARA = "BARA" - BARB = "BARB" - BARC = "BARC" - BARX = "BARX" - BASX = "BASX" - BAUX = "BAUX" - BAVX = "BAVX" - BBKM = "BBKM" - BBLX = "BBLX" - BBRX = "BBRX" - BBSX = "BBSX" - BBUX = "BBUX" - BBVX = "BBVX" - BCBM = "BCBM" - BCBX = "BCBX" - BCCB = "BCCB" - BCCX = "BCCX" - BCEX = "BCEX" - BCEY = "BCEY" - BCOX = "BCOX" - BCUB = "BCUB" - BCUX = "BCUX" - BDBL = "BDBL" - BDBX = "BDBX" - BDCX = "BDCX" - BDDX = "BDDX" - BDIX = "BDIX" - BDNX = "BDNX" - BDOX = "BDOX" - BDUX = "BDUX" - BEDX = "BEDX" - BELX = "BELX" - BFUX = "BFUX" - BGBX = "BGBX" - BGCX = "BGCX" - BGGX = "BGGX" - BGUX = "BGUX" - BGVX = "BGVX" - BHAX = "BHAX" - BHBX = "BHBX" - BHCX = "BHCX" - BHDX = "BHDX" - BHEX = "BHEX" - BHGX = "BHGX" - BHIX = "BHIX" - BHJX = "BHJX" - BHMX = "BHMX" - BHOX = "BHOX" - BHRX = "BHRX" - BHSX = "BHSX" - BHTX = "BHTX" - BHUX = "BHUX" - BHWX = "BHWX" - BJUX = "BJUX" - BKCX = "BKCX" - BKDN = "BKDN" - BKDX = "BKDX" - BKID = "BKID" - BKSX = "BKSX" - BLGX = "BLGX" - BMBL = "BMBL" - BMCB = "BMCB" - BMCX = "BMCX" - BMPX = "BMPX" - BMSX = "BMSX" - BNBX = "BNBX" - BNCX = "BNCX" - BNPA = "BNPA" - BNSB = "BNSB" - BNSX = "BNSX" - BODX = "BODX" - BOFA = "BOFA" - BORX = "BORX" - BOTM = "BOTM" - BOTX = "BOTX" - BPCX = "BPCX" - BPSX = "BPSX" - BRCX = "BRCX" - BRDX = "BRDX" - BRGX = "BRGX" - BRMX = "BRMX" - BRSX = "BRSX" - BRUX = "BRUX" - BSBX = "BSBX" - BSCX = "BSCX" - BTCX = "BTCX" - BTUX = "BTUX" - BUBX = "BUBX" - BUCL = "BUCL" - BUCX = "BUCX" - BUGX = "BUGX" - BUNX = "BUNX" - BURX = "BURX" - BUSX = "BUSX" - BUZX = "BUZX" - BVNX = "BVNX" - BVSX = "BVSX" - BWCX = "BWCX" - CALX = "CALX" - CBHX = "CBHX" - CBIN = "CBIN" - CCBL = "CCBL" - CCBX = "CCBX" - CCCX = "CCCX" - CCMX = "CCMX" - CCOB = "CCOB" - CCUX = "CCUX" - CDCX = "CDCX" - CEBX = "CEBX" - CGBX = "CGBX" - CGGX = "CGGX" - CHAS = "CHAS" - CHAX = "CHAX" - CHBX = "CHBX" - CHCX = "CHCX" - CHDX = "CHDX" - CHIX = "CHIX" - CHKX = "CHKX" - CHPX = "CHPX" - CHRX = "CHRX" - CHSX = "CHSX" - CHTX = "CHTX" - CIDX = "CIDX" - CITI = "CITI" - CITX = "CITX" - CIUB = "CIUB" - CJAX = "CJAX" - CJMX = "CJMX" - CLBL = "CLBL" - CMCB = "CMCB" - CMCX = "CMCX" - CMDX = "CMDX" - CMLX = "CMLX" - CMPX = "CMPX" - CNRB = "CNRB" - CNSX = "CNSX" - COCX = "COCX" - COLX = "COLX" - COMX = "COMX" - CONX = "CONX" - CORP = "CORP" - COSB = "COSB" - CPDX = "CPDX" - CPSN = "CPSN" - CRBX = "CRBX" - CRES = "CRES" - CRLY = "CRLY" - CRSX = "CRSX" - CRUB = "CRUB" - CSBK = "CSBK" - CSBX = "CSBX" - CTBA = "CTBA" - CTBX = "CTBX" - CTCB = "CTCB" - CTOX = "CTOX" - CTUX = "CTUX" - CUBX = "CUBX" - CUCX = "CUCX" - CURX = "CURX" - CZCX = "CZCX" - CZUX = "CZUX" - DAAX = "DAAX" - DAHX = "DAHX" - DAUX = "DAUX" - DBAX = "DBAX" - DBSS = "DBSS" - DCBL = "DCBL" - DCBX = "DCBX" - DCCX = "DCCX" - DCDX = "DCDX" - DCEX = "DCEX" - DCKX = "DCKX" - DCMX = "DCMX" - DCNX = "DCNX" - DCPX = "DCPX" - DCSX = "DCSX" - DCTX = "DCTX" - DCUX = "DCUX" - DDBX = "DDBX" - DDCX = "DDCX" - DDDX = "DDDX" - DDHX = "DDHX" - DEGX = "DEGX" - DENS = "DENS" - DEOB = "DEOB" - DEOX = "DEOX" - DEUT = "DEUT" - DEUX = "DEUX" - DEVX = "DEVX" - DGBX = "DGBX" - DHBX = "DHBX" - DHKX = "DHKX" - DHUX = "DHUX" - DIBX = "DIBX" - DICG = "DICG" - DICX = "DICX" - DIUX = "DIUX" - DJCX = "DJCX" - DKCL = "DKCL" - DKSX = "DKSX" - DLSC = "DLSC" - DLXB = "DLXB" - DMCB = "DMCB" - DMCX = "DMCX" - DMKB = "DMKB" - DMKJ = "DMKJ" - DNSB = "DNSB" - DNSX = "DNSX" - DOBX = "DOBX" - DOHB = "DOHB" - DRGX = "DRGX" - DSBX = "DSBX" - DSCB = "DSCB" - DSHX = "DSHX" - DSPX = "DSPX" - DSUX = "DSUX" - DTCX = "DTCX" - DTPX = "DTPX" - DUCX = "DUCX" - DUMX = "DUMX" - DUNX = "DUNX" - DURG = "DURG" - DVDX = "DVDX" - DYPX = "DYPX" - EBIL = "EBIL" - ECBL = "ECBL" - EDBX = "EDBX" - EDCX = "EDCX" - EDSX = "EDSX" - EIBI = "EIBI" - ESAF = "ESAF" - ESFB = "ESFB" - ESMF = "ESMF" - ETCX = "ETCX" - ETDX = "ETDX" - EUCX = "EUCX" - EWCX = "EWCX" - FCBX = "FCBX" - FCCX = "FCCX" - FCOX = "FCOX" - FDFX = "FDFX" - FDRL = "FDRL" - FEKX = "FEKX" - FGCB = "FGCB" - FINO = "FINO" - FINF = "FINF" - FINX = "FINX" - FIRN = "FIRN" - FIRX = "FIRX" - FMCX = "FMCX" - FRIX = "FRIX" - FSCX = "FSCX" - FSFB = "FSFB" - FZCX = "FZCX" - FZSX = "FZSX" - GACX = "GACX" - GADX = "GADX" - GANX = "GANX" - GBCB = "GBCB" - GCBX = "GCBX" - GCCX = "GCCX" - GCUL = "GCUL" - GCUX = "GCUX" - GDCB = "GDCB" - GDCX = "GDCX" - GDDX = "GDDX" - GDUX = "GDUX" - GGBK = "GGBK" - GGCX = "GGCX" - GHPX = "GHPX" - GKNX = "GKNX" - GMBX = "GMBX" - GMCX = "GMCX" - GMUX = "GMUX" - GNCX = "GNCX" - GNSX = "GNSX" - GODX = "GODX" - GOSX = "GOSX" - GPCX = "GPCX" - GPOX = "GPOX" - GRAX = "GRAX" - GSBL = "GSBL" - GSBX = "GSBX" - GSCB = "GSCB" - GSCX = "GSCX" - GSSX = "GSSX" - GTCX = "GTCX" - GUBX = "GUBX" - GUCX = "GUCX" - GUNX = "GUNX" - GUOX = "GUOX" - HAMX = "HAMX" - HANX = "HANX" - HARC = "HARC" - HCBL = "HCBL" - HCBX = "HCBX" - HCCX = "HCCX" - HCLX = "HCLX" - HDCX = "HDCX" - HDFC = "HDFC" - HGBX = "HGBX" - HINX = "HINX" - HISX = "HISX" - HMBX = "HMBX" - HMNX = "HMNX" - HOCX = "HOCX" - HOOX = "HOOX" - HPCX = "HPCX" - HPSC = "HPSC" - HPSX = "HPSX" - HSBC = "HSBC" - HSBX = "HSBX" - HSCX = "HSCX" - HSDX = "HSDX" - HSSX = "HSSX" - HUBX = "HUBX" - HUCX = "HUCX" - HUTX = "HUTX" - HVBK = "HVBK" - IBBK = "IBBK" - IBKL = "IBKL" - IBKO = "IBKO" - ICBK = "ICBK" - ICBL = "ICBL" - ICHX = "ICHX" - ICIC = "ICIC" - ICMX = "ICMX" - IDFB = "IDFB" - IDIB = "IDIB" - IDUK = "IDUK" - IDUX = "IDUX" - ILCB = "ILCB" - IMPX = "IMPX" - INCX = "INCX" - INDB = "INDB" - INDX = "INDX" - IOBA = "IOBA" - IPCX = "IPCX" - IPOS = "IPOS" - IPPB = "IPPB" - IPSX = "IPSX" - ISBX = "ISBX" - ISMX = "ISMX" - ITBL = "ITBL" - ITCX = "ITCX" - ITDX = "ITDX" - IUCB = "IUCB" - IUCX = "IUCX" - JACX = "JACX" - JAKA = "JAKA" - JALX = "JALX" - JAMX = "JAMX" - JANA = "JANA" - JANX = "JANX" - JASB = "JASB" - JASX = "JASX" - JAUX = "JAUX" - JBHX = "JBHX" - JBIX = "JBIX" - JBMX = "JBMX" - JCBX = "JCBX" - JCCB = "JCCB" - JCCX = "JCCX" - JCDX = "JCDX" - JCHX = "JCHX" - JCPX = "JCPX" - JCUX = "JCUX" - JDCX = "JDCX" - JDEX = "JDEX" - JGBX = "JGBX" - JGCX = "JGCX" - JGWX = "JGWX" - JHAX = "JHAX" - JHSX = "JHSX" - JHUX = "JHUX" - JIBX = "JIBX" - JICX = "JICX" - JIDX = "JIDX" - JIGX = "JIGX" - JIKX = "JIKX" - JIMX = "JIMX" - JINX = "JINX" - JIOP = "JIOP" - JIOX = "JIOX" - JIRX = "JIRX" - JISX = "JISX" - JIVX = "JIVX" - JJCX = "JJCX" - JJHX = "JJHX" - JJSB = "JJSB" - JKAX = "JKAX" - JKCX = "JKCX" - JKDX = "JKDX" - JKEX = "JKEX" - JKHX = "JKHX" - JKMX = "JKMX" - JKRX = "JKRX" - JKSX = "JKSX" - JLCX = "JLCX" - JLDX = "JLDX" - JLNX = "JLNX" - JLSX = "JLSX" - JLWX = "JLWX" - JMAX = "JMAX" - JMBX = "JMBX" - JMCX = "JMCX" - JMDX = "JMDX" - JMHX = "JMHX" - JMMX = "JMMX" - JMOX = "JMOX" - JMPX = "JMPX" - JMSX = "JMSX" - JMYX = "JMYX" - JNAX = "JNAX" - JNDX = "JNDX" - JNSX = "JNSX" - JODX = "JODX" - JONX = "JONX" - JOWX = "JOWX" - JPAX = "JPAX" - JPCB = "JPCB" - JPCX = "JPCX" - JRAX = "JRAX" - JRKX = "JRKX" - JRNX = "JRNX" - JRSX = "JRSX" - JSAB = "JSAB" - JSAX = "JSAX" - JSBL = "JSBL" - JSBP = "JSBP" - JSBX = "JSBX" - JSCX = "JSCX" - JSDX = "JSDX" - JSEX = "JSEX" - JSFB = "JSFB" - JSHX = "JSHX" - JSKX = "JSKX" - JSMX = "JSMX" - JSOX = "JSOX" - JSRX = "JSRX" - JSTX = "JSTX" - JSVX = "JSVX" - JSWX = "JSWX" - JTIX = "JTIX" - JTSX = "JTSX" - JUCX = "JUCX" - JUSX = "JUSX" - JVCX = "JVCX" - KAAX = "KAAX" - KACE = "KACE" - KACX = "KACX" - KADX = "KADX" - KAGX = "KAGX" - KAIJ = "KAIJ" - KALX = "KALX" - KAMX = "KAMX" - KANG = "KANG" - KANX = "KANX" - KARB = "KARB" - KARX = "KARX" - KASX = "KASX" - KATX = "KATX" - KAYX = "KAYX" - KBCX = "KBCX" - KBNX = "KBNX" - KBSX = "KBSX" - KCBL = "KCBL" - KCBX = "KCBX" - KCCB = "KCCB" - KCCX = "KCCX" - KCDX = "KCDX" - KCEX = "KCEX" - KCOB = "KCOB" - KCUB = "KCUB" - KCUX = "KCUX" - KDBX = "KDBX" - KDCB = "KDCB" - KDCX = "KDCX" - KDIX = "KDIX" - KDNX = "KDNX" - KDUX = "KDUX" - KEMX = "KEMX" - KESX = "KESX" - KGBX = "KGBX" - KGDX = "KGDX" - KGRB = "KGRB" - KGSX = "KGSX" - KHAX = "KHAX" - KHCX = "KHCX" - KHDX = "KHDX" - KHNX = "KHNX" - KHUX = "KHUX" - KICX = "KICX" - KJSB = "KJSB" - KJSX = "KJSX" - KKBK = "KKBK" - KKMX = "KKMX" - KKSX = "KKSX" - KLGB = "KLGB" - KLMX = "KLMX" - KMCB = "KMCB" - KMCX = "KMCX" - KMNX = "KMNX" - KMSX = "KMSX" - KNBX = "KNBX" - KNCX = "KNCX" - KNNX = "KNNX" - KNPX = "KNPX" - KNSB = "KNSB" - KNSX = "KNSX" - KOBX = "KOBX" - KOCX = "KOCX" - KODX = "KODX" - KOEX = "KOEX" - KOLH = "KOLH" - KOSX = "KOSX" - KOTX = "KOTX" - KOYX = "KOYX" - KPCX = "KPCX" - KRCX = "KRCX" - KRDX = "KRDX" - KRIX = "KRIX" - KRMX = "KRMX" - KRNX = "KRNX" - KRTH = "KRTH" - KRTX = "KRTX" - KSBK = "KSBK" - KSBX = "KSBX" - KSCB = "KSCB" - KSCX = "KSCX" - KSMX = "KSMX" - KSNX = "KSNX" - KSTX = "KSTX" - KSUX = "KSUX" - KTBX = "KTBX" - KTCX = "KTCX" - KTDX = "KTDX" - KTTX = "KTTX" - KUBX = "KUBX" - KUCB = "KUCB" - KUCX = "KUCX" - KUKX = "KUKX" - KULX = "KULX" - KUMX = "KUMX" - KUNS = "KUNS" - KURX = "KURX" - KVBL = "KVBL" - KVCX = "KVCX" - KVGB = "KVGB" - KYDX = "KYDX" - LACX = "LACX" - LATX = "LATX" - LAVB = "LAVB" - LBMX = "LBMX" - LCBX = "LCBX" - LCCX = "LCCX" - LDCX = "LDCX" - LDPX = "LDPX" - LDRX = "LDRX" - LECX = "LECX" - LICB = "LICB" - LKBL = "LKBL" - LKCX = "LKCX" - LKHX = "LKHX" - LKMX = "LKMX" - LMNX = "LMNX" - LNSX = "LNSX" - LOKX = "LOKX" - LONX = "LONX" - LUCX = "LUCX" - LULX = "LULX" - MABL = "MABL" - MACX = "MACX" - MADX = "MADX" - MAGX = "MAGX" - MAHB = "MAHB" - MAHG = "MAHG" - MAHX = "MAHX" - MAJX = "MAJX" - MAKX = "MAKX" - MALX = "MALX" - MAMX = "MAMX" - MANX = "MANX" - MAPX = "MAPX" - MASX = "MASX" - MAUX = "MAUX" - MAVX = "MAVX" - MAYX = "MAYX" - MBCX = "MBCX" - MBGX = "MBGX" - MBLX = "MBLX" - MCAX = "MCAX" - MCBL = "MCBL" - MCBX = "MCBX" - MCCX = "MCCX" - MCDX = "MCDX" - MCLX = "MCLX" - MCOX = "MCOX" - MCSX = "MCSX" - MCUX = "MCUX" - MDCB = "MDCB" - MDCX = "MDCX" - MDEX = "MDEX" - MDGX = "MDGX" - MDIX = "MDIX" - MDMX = "MDMX" - MDPX = "MDPX" - MEDX = "MEDX" - MERX = "MERX" - MEUX = "MEUX" - MFCX = "MFCX" - MFUX = "MFUX" - MGBX = "MGBX" - MGCB = "MGCB" - MGCX = "MGCX" - MGDX = "MGDX" - MGRB = "MGRB" - MGSX = "MGSX" - MGUX = "MGUX" - MHCB = "MHCB" - MHCX = "MHCX" - MHEX = "MHEX" - MHLX = "MHLX" - MHMX = "MHMX" - MHNX = "MHNX" - MHSX = "MHSX" - MHUX = "MHUX" - MIZX = "MIZX" - MJCX = "MJCX" - MKPB = "MKPB" - MKUX = "MKUX" - MKYX = "MKYX" - MLDX = "MLDX" - MMCX = "MMCX" - MMMX = "MMMX" - MNBX = "MNBX" - MNCX = "MNCX" - MNSX = "MNSX" - MOGX = "MOGX" - MOUX = "MOUX" - MPCX = "MPCX" - MPDX = "MPDX" - MPRX = "MPRX" - MRBX = "MRBX" - MRTX = "MRTX" - MSAX = "MSAX" - MSBL = "MSBL" - MSBX = "MSBX" - MSCI = "MSCI" - MSCX = "MSCX" - MSHQ = "MSHQ" - MSLM = "MSLM" - MSNU = "MSNU" - MSNX = "MSNX" - MSOX = "MSOX" - MSSX = "MSSX" - MUBL = "MUBL" - MUBX = "MUBX" - MUCX = "MUCX" - MUDX = "MUDX" - MUNX = "MUNX" - MUPX = "MUPX" - MURX = "MURX" - MUSX = "MUSX" - MVCB = "MVCB" - MVCX = "MVCX" - MVIX = "MVIX" - MYAX = "MYAX" - MYSX = "MYSX" - MZCX = "MZCX" - MZRX = "MZRX" - NABX = "NABX" - NACX = "NACX" - NAGX = "NAGX" - NAIX = "NAIX" - NALX = "NALX" - NANX = "NANX" - NASX = "NASX" - NATA = "NATA" - NAUX = "NAUX" - NAVX = "NAVX" - NAWX = "NAWX" - NBAD = "NBAD" - NBBX = "NBBX" - NBCX = "NBCX" - NBMX = "NBMX" - NBRD = "NBRD" - NCBL = "NCBL" - NCBX = "NCBX" - NCCX = "NCCX" - NCOX = "NCOX" - NCUB = "NCUB" - NCUX = "NCUX" - NDCB = "NDCB" - NDCX = "NDCX" - NDDX = "NDDX" - NDGX = "NDGX" - NDIX = "NDIX" - NESF = "NESF" - NEYX = "NEYX" - NGBX = "NGBX" - NGKX = "NGKX" - NGNX = "NGNX" - NGRX = "NGRX" - NGSB = "NGSB" - NGSX = "NGSX" - NICB = "NICB" - NIDX = "NIDX" - NILX = "NILX" - NIRX = "NIRX" - NIUX = "NIUX" - NJBK = "NJBK" - NJCX = "NJCX" - NJGX = "NJGX" - NJMX = "NJMX" - NJSX = "NJSX" - NKGS = "NKGS" - NLGX = "NLGX" - NLUX = "NLUX" - NMCB = "NMCB" - NMCX = "NMCX" - NMGB = "NMGB" - NNCX = "NNCX" - NNSB = "NNSB" - NNSX = "NNSX" - NOBX = "NOBX" - NOIX = "NOIX" - NOSC = "NOSC" - NPCX = "NPCX" - NPKX = "NPKX" - NRDX = "NRDX" - NSBB = "NSBB" - NSBX = "NSBX" - NSCX = "NSCX" - NSGX = "NSGX" - NSIX = "NSIX" - NSJX = "NSJX" - NSMX = "NSMX" - NSPB = "NSPB" - NSPX = "NSPX" - NSRX = "NSRX" - NTBL = "NTBL" - NUBX = "NUBX" - NUCB = "NUCB" - NUCX = "NUCX" - NVCX = "NVCX" - NVNM = "NVNM" - NVSX = "NVSX" - NWCX = "NWCX" - ODCX = "ODCX" - ODGB = "ODGB" - OIBA = "OIBA" - OMCX = "OMCX" - ONSX = "ONSX" - ORBC = "ORBC" - ORCB = "ORCB" - OSMX = "OSMX" - PABX = "PABX" - PACX = "PACX" - PADX = "PADX" - PALX = "PALX" - PANX = "PANX" - PARX = "PARX" - PASX = "PASX" - PATX = "PATX" - PAYX = "PAYX" - PBGX = "PBGX" - PCBL = "PCBL" - PCBX = "PCBX" - PCCB = "PCCB" - PCCX = "PCCX" - PCLX = "PCLX" - PCMX = "PCMX" - PCOX = "PCOX" - PCPX = "PCPX" - PCSX = "PCSX" - PCTX = "PCTX" - PCUX = "PCUX" - PDBX = "PDBX" - PDCX = "PDCX" - PDNX = "PDNX" - PDSX = "PDSX" - PDUX = "PDUX" - PGBX = "PGBX" - PGCX = "PGCX" - PGRX = "PGRX" - PGTX = "PGTX" - PITX = "PITX" - PJSB = "PJSB" - PKBX = "PKBX" - PKDX = "PKDX" - PKGB = "PKGB" - PLOX = "PLOX" - PLUX = "PLUX" - PMCB = "PMCB" - PMCX = "PMCX" - PMEC = "PMEC" - PMNX = "PMNX" - PNCX = "PNCX" - PNMX = "PNMX" - PNPX = "PNPX" - PNSX = "PNSX" - PPBX = "PPBX" - PPCX = "PPCX" - PRCX = "PRCX" - PREX = "PREX" - PROX = "PROX" - PRPX = "PRPX" - PRSX = "PRSX" - PRTH = "PRTH" - PSBX = "PSBX" - PSCX = "PSCX" - PSIB = "PSIB" - PSRX = "PSRX" - PSSX = "PSSX" - PTCX = "PTCX" - PTNX = "PTNX" - PTSX = "PTSX" - PUBX = "PUBX" - PUCB = "PUCB" - PUCX = "PUCX" - PUDX = "PUDX" - PUGX = "PUGX" - PUNB = "PUNB" - PUNX = "PUNX" - PURX = "PURX" - PUSD = "PUSD" - PUSX = "PUSX" - PUUX = "PUUX" - PVAX = "PVAX" - PVCX = "PVCX" - PVVX = "PVVX" - PWUX = "PWUX" - PYCX = "PYCX" - PYTM = "PYTM" - QNBA = "QNBA" - QUCX = "QUCX" - RABO = "RABO" - RACX = "RACX" - RAEX = "RAEX" - RAJX = "RAJX" - RAKX = "RAKX" - RAMX = "RAMX" - RANX = "RANX" - RATN = "RATN" - RAUX = "RAUX" - RBBX = "RBBX" - RBCX = "RBCX" - RBIS = "RBIS" - RBIH = "RBIH" - RCBX = "RCBX" - RCCX = "RCCX" - RCDX = "RCDX" - RCMX = "RCMX" - RCUX = "RCUX" - RDCX = "RDCX" - RDNX = "RDNX" - REBX = "REBX" - RECX = "RECX" - REWX = "REWX" - RGCX = "RGCX" - RGSX = "RGSX" - RHMX = "RHMX" - RJCX = "RJCX" - RJJX = "RJJX" - RJNX = "RJNX" - RJTX = "RJTX" - RKCX = "RKCX" - RLUX = "RLUX" - RMGB = "RMGB" - RNBX = "RNBX" - RNDX = "RNDX" - RNGX = "RNGX" - RNSB = "RNSB" - RNSX = "RNSX" - ROCX = "ROCX" - ROHX = "ROHX" - RPUX = "RPUX" - RRBP = "RRBP" - RRSX = "RRSX" - RSBL = "RSBL" - RSBX = "RSBX" - RSCB = "RSCB" - RSSX = "RSSX" - RSUX = "RSUX" - RSVX = "RSVX" - RUCX = "RUCX" - RUKX = "RUKX" - RUMX = "RUMX" - RZSX = "RZSX" - SABR = "SABR" - SABX = "SABX" - SACB = "SACB" - SACX = "SACX" - SADX = "SADX" - SAGX = "SAGX" - SAHE = "SAHE" - SAHX = "SAHX" - SAIX = "SAIX" - SALX = "SALX" - SAMX = "SAMX" - SANT = "SANT" - SANX = "SANX" - SAPX = "SAPX" - SARX = "SARX" - SASA = "SASA" - SASX = "SASX" - SATX = "SATX" - SAUX = "SAUX" - SAVX = "SAVX" - SAWX = "SAWX" - SBBJ = "SBBJ" - SBCX = "SBCX" - SBHY = "SBHY" - SBIN = "SBIN" - SBKX = "SBKX" - SBLD = "SBLD" - SBLS = "SBLS" - SBLX = "SBLX" - SBMX = "SBMX" - SBMY = "SBMY" - SBNX = "SBNX" - SBPX = "SBPX" - SBSX = "SBSX" - SBTR = "SBTR" - SBUJ = "SBUJ" - SBUX = "SBUX" - SCBL = "SCBL" - SCBX = "SCBX" - SCCX = "SCCX" - SCDX = "SCDX" - SCIX = "SCIX" - SCNX = "SCNX" - SCOB = "SCOB" - SCOX = "SCOX" - SCPX = "SCPX" - SCSX = "SCSX" - SCUX = "SCUX" - SDBX = "SDBX" - SDCB = "SDCB" - SDCE = "SDCE" - SDCX = "SDCX" - SDHX = "SDHX" - SDSX = "SDSX" - SDTX = "SDTX" - SDUX = "SDUX" - SEMX = "SEMX" - SENX = "SENX" - SEUX = "SEUX" - SEWX = "SEWX" - SGCX = "SGCX" - SGLX = "SGLX" - SGSX = "SGSX" - SGUX = "SGUX" - SHAX = "SHAX" - SHBK = "SHBK" - SHBX = "SHBX" - SHCX = "SHCX" - SHEX = "SHEX" - SHGX = "SHGX" - SHIX = "SHIX" - SHKX = "SHKX" - SHMX = "SHMX" - SHNX = "SHNX" - SHOX = "SHOX" - SHRX = "SHRX" - SHSX = "SHSX" - SHUX = "SHUX" - SIBL = "SIBL" - SIBX = "SIBX" - SICX = "SICX" - SIDB = "SIDB" - SIDC = "SIDC" - SIDX = "SIDX" - SIGX = "SIGX" - SIHX = "SIHX" - SIKX = "SIKX" - SINX = "SINX" - SIRX = "SIRX" - SISX = "SISX" - SITX = "SITX" - SIWX = "SIWX" - SJGX = "SJGX" - SJSB = "SJSB" - SJSX = "SJSX" - SKCX = "SKCX" - SKKX = "SKKX" - SKNX = "SKNX" - SKSB = "SKSB" - SKUX = "SKUX" - SLAX = "SLAX" - SLCX = "SLCX" - SMBC = "SMBC" - SMBX = "SMBX" - SMCB = "SMCB" - SMCX = "SMCX" - SMEX = "SMEX" - SMMX = "SMMX" - SMNX = "SMNX" - SMPX = "SMPX" - SMSX = "SMSX" - SMTX = "SMTX" - SMUX = "SMUX" - SMVC = "SMVC" - SMWX = "SMWX" - SNAX = "SNAX" - SNBK = "SNBK" - SNBX = "SNBX" - SNCX = "SNCX" - SNDX = "SNDX" - SNGX = "SNGX" - SNKX = "SNKX" - SNLX = "SNLX" - SNPX = "SNPX" - SNSV = "SNSV" - SNSX = "SNSX" - SOBX = "SOBX" - SOGE = "SOGE" - SOLX = "SOLX" - SONX = "SONX" - SPBX = "SPBX" - SPCB = "SPCB" - SPCX = "SPCX" - SPNX = "SPNX" - SPSX = "SPSX" - SPTX = "SPTX" - SRCB = "SRCB" - SRCX = "SRCX" - SREX = "SREX" - SRGX = "SRGX" - SRHX = "SRHX" - SRSX = "SRSX" - SSBL = "SSBL" - SSBX = "SSBX" - SSDX = "SSDX" - SSHX = "SSHX" - SSKX = "SSKX" - SSLX = "SSLX" - SSNX = "SSNX" - SSOX = "SSOX" - SSSX = "SSSX" - SSWX = "SSWX" - STBP = "STBP" - STCB = "STCB" - STCX = "STCX" - STDX = "STDX" - STRX = "STRX" - SUBX = "SUBX" - SUCX = "SUCX" - SUDX = "SUDX" - SULX = "SULX" - SUMX = "SUMX" - SUNB = "SUNB" - SURX = "SURX" - SURY = "SURY" - SUSX = "SUSX" - SUTB = "SUTB" - SUVX = "SUVX" - SVAX = "SVAX" - SVBL = "SVBL" - SVCB = "SVCB" - SVCX = "SVCX" - SVGX = "SVGX" - SVNX = "SVNX" - SVOX = "SVOX" - SVRX = "SVRX" - SVSH = "SVSH" - SVSX = "SVSX" - SWMX = "SWMX" - SWSX = "SWSX" - SYNB = "SYNB" - TACX = "TACX" - TADX = "TADX" - TAMX = "TAMX" - TAPX = "TAPX" - TASX = "TASX" - TBCX = "TBCX" - TBDX = "TBDX" - TBHX = "TBHX" - TBMX = "TBMX" - TBPX = "TBPX" - TBSB = "TBSB" - TBSX = "TBSX" - TBTX = "TBTX" - TBUX = "TBUX" - TCBX = "TCBX" - TCCX = "TCCX" - TCHX = "TCHX" - TCPX = "TCPX" - TCUB = "TCUB" - TCUX = "TCUX" - TDBX = "TDBX" - TDCB = "TDCB" - TDCX = "TDCX" - TDIX = "TDIX" - TDMX = "TDMX" - TDPX = "TDPX" - TDSX = "TDSX" - TECX = "TECX" - TEHX = "TEHX" - TEMX = "TEMX" - TESX = "TESX" - TETX = "TETX" - TFCX = "TFCX" - TGBX = "TGBX" - TGCG = "TGCG" - TGCX = "TGCX" - TGDX = "TGDX" - TGMB = "TGMB" - TGNX = "TGNX" - TGUX = "TGUX" - THCX = "THCX" - THOX = "THOX" - THRS = "THRS" - THRX = "THRX" - THWX = "THWX" - TIDX = "TIDX" - TIRX = "TIRX" - TJAX = "TJAX" - TJBX = "TJBX" - TJCX = "TJCX" - TJDX = "TJDX" - TJMX = "TJMX" - TJNX = "TJNX" - TJSB = "TJSB" - TKAX = "TKAX" - TKCX = "TKCX" - TKDX = "TKDX" - TKTX = "TKTX" - TKUX = "TKUX" - TLPX = "TLPX" - TMAX = "TMAX" - TMBL = "TMBL" - TMBX = "TMBX" - TMCX = "TMCX" - TMNX = "TMNX" - TMPX = "TMPX" - TMSC = "TMSC" - TMSX = "TMSX" - TMTX = "TMTX" - TMUX = "TMUX" - TNBX = "TNBX" - TNCX = "TNCX" - TNDC = "TNDC" - TNEX = "TNEX" - TNHX = "TNHX" - TNIX = "TNIX" - TNKX = "TNKX" - TNMX = "TNMX" - TNSC = "TNSC" - TNUX = "TNUX" - TOCX = "TOCX" - TPCX = "TPCX" - TPDX = "TPDX" - TPSX = "TPSX" - TPUX = "TPUX" - TRAX = "TRAX" - TRDX = "TRDX" - TSAB = "TSAB" - TSAX = "TSAX" - TSBX = "TSBX" - TSCX = "TSCX" - TSDX = "TSDX" - TSIX = "TSIX" - TSMX = "TSMX" - TSNX = "TSNX" - TSPX = "TSPX" - TSSB = "TSSB" - TSSX = "TSSX" - TSUX = "TSUX" - TTBX = "TTBX" - TTCB = "TTCB" - TTCX = "TTCX" - TTGX = "TTGX" - TTLX = "TTLX" - TTUX = "TTUX" - TUBX = "TUBX" - TUCL = "TUCL" - TUCX = "TUCX" - TUDX = "TUDX" - TUMX = "TUMX" - TUNX = "TUNX" - TUOX = "TUOX" - TUPX = "TUPX" - TURX = "TURX" - TVBX = "TVBX" - TVDX = "TVDX" - TVPX = "TVPX" - TVUX = "TVUX" - TYCX = "TYCX" - UBBX = "UBBX" - UBGX = "UBGX" - UBIN = "UBIN" - UCBA = "UCBA" - UCBS = "UCBS" - UCBX = "UCBX" - UCCX = "UCCX" - UCDX = "UCDX" - UCUX = "UCUX" - UGBX = "UGBX" - UICX = "UICX" - UJSX = "UJSX" - UJVN = "UJVN" - UKGX = "UKGX" - UMAX = "UMAX" - UMCX = "UMCX" - UMSX = "UMSX" - UMUX = "UMUX" - UNAX = "UNAX" - UNIX = "UNIX" - UNMX = "UNMX" - UNSX = "UNSX" - UOVB = "UOVB" - UPCB = "UPCB" - UPCX = "UPCX" - URBN = "URBN" - URCX = "URCX" - URDX = "URDX" - URMX = "URMX" - UROX = "UROX" - USFB = "USFB" - USNX = "USNX" - UTBI = "UTBI" - UTBX = "UTBX" - UTCX = "UTCX" - UTGX = "UTGX" - UTIB = "UTIB" - UTKS = "UTKS" - UTKX = "UTKX" - UTZX = "UTZX" - UUCX = "UUCX" - VADX = "VADX" - VAIX = "VAIX" - VANX = "VANX" - VARA = "VARA" - VASJ = "VASJ" - VASX = "VASX" - VAUX = "VAUX" - VCAX = "VCAX" - VCBX = "VCBX" - VCCX = "VCCX" - VCNB = "VCNB" - VCOB = "VCOB" - VCOX = "VCOX" - VDCX = "VDCX" - VDYX = "VDYX" - VEDX = "VEDX" - VERX = "VERX" - VGBX = "VGBX" - VHDX = "VHDX" - VICX = "VICX" - VIDX = "VIDX" - VIJB = "VIJB" - VIJX = "VIJX" - VIKX = "VIKX" - VIMX = "VIMX" - VIRX = "VIRX" - VISX = "VISX" - VJSX = "VJSX" - VKCX = "VKCX" - VKSX = "VKSX" - VMCX = "VMCX" - VMMX = "VMMX" - VMUX = "VMUX" - VNSX = "VNSX" - VRDX = "VRDX" - VSBL = "VSBL" - VSBX = "VSBX" - VSCX = "VSCX" - VSSX = "VSSX" - VSVX = "VSVX" - VUCX = "VUCX" - VVCX = "VVCX" - VVSB = "VVSB" - VYAX = "VYAX" - VYPX = "VYPX" - VYSA = "VYSA" - WACX = "WACX" - WAIX = "WAIX" - WARX = "WARX" - WAUX = "WAUX" - WBSC = "WBSC" - WCBX = "WCBX" - WDCX = "WDCX" - WKGX = "WKGX" - WNBX = "WNBX" - WPAC = "WPAC" - WRCX = "WRCX" - WUCX = "WUCX" - WZUX = "WZUX" - XJKG = "XJKG" - YADX = "YADX" - YAVX = "YAVX" - YCBX = "YCBX" - YDCX = "YDCX" - YESB = "YESB" - YLNX = "YLNX" - YMSX = "YMSX" - YNCX = "YNCX" - YNSX = "YNSX" - ZBBX = "ZBBX" - ZBSX = "ZBSX" - ZCBL = "ZCBL" - ZIBX = "ZIBX" - ZILX = "ZILX" - ZIMX = "ZIMX" - ZISX = "ZISX" - ZLLX = "ZLLX" - ZRNB = "ZRNB" - ZMMX = "ZMMX" - ZSAX = "ZSAX" - ZSBL = "ZSBL" - ZSBX = "ZSBX" - ZSGX = "ZSGX" - ZSHX = "ZSHX" - ZSJX = "ZSJX" - ZSKX = "ZSKX" - ZSLX = "ZSLX" - ZSMX = "ZSMX" -) +type bankCode struct { + AACX string + ABBL string + ABCX string + ABDX string + ABEX string + ABHY string + ABNA string + ABPB string + ABSB string + ABUX string + ACAX string + ACBX string + ACCX string + ACKX string + ACOX string + ACUB string + ACUX string + ADBX string + ADCB string + ADCC string + ADCX string + ADDX string + AGCX string + AGDX string + AGRX string + AGSX string + AGUX string + AGVX string + AHMX string + AHUX string + AIRP string + AJAR string + AJHC string + AJKB string + AJMX string + AJNX string + AJPX string + AJSX string + AJUX string + AKJB string + AKMX string + AKOX string + ALAX string + ALIX string + ALLA string + ALLX string + ALWX string + AMAX string + AMBX string + AMCB string + AMCX string + AMDN string + AMMX string + AMNX string + AMRX string + AMSB string + AMSX string + ANBX string + ANDB string + ANDX string + ANMX string + ANSX string + ANUX string + ANZB string + APBL string + APCX string + APGB string + APGV string + APGX string + APJX string + APMC string + APMX string + APNX string + APRX string + APSX string + ARCX string + ARMX string + ARYX string + ASBL string + ASBX string + ASHX string + ASKX string + ASNX string + ASOX string + ASSX string + AUBL string + AUBX string + AUCB string + AUCX string + AUGX string + AURX string + AVDX string + AWCX string + AWUX string + AZAX string + AZPX string + AZSX string + AZUX string + BACB string + BACX string + BADX string + BALX string + BANX string + BARA string + BARB string + BARC string + BARX string + BASX string + BAUX string + BAVX string + BBKM string + BBLX string + BBRX string + BBSX string + BBUX string + BBVX string + BCBM string + BCBX string + BCCB string + BCCX string + BCEX string + BCEY string + BCOX string + BCUB string + BCUX string + BDBL string + BDBX string + BDCX string + BDDX string + BDIX string + BDNX string + BDOX string + BDUX string + BEDX string + BELX string + BFUX string + BGBX string + BGCX string + BGGX string + BGUX string + BGVX string + BHAX string + BHBX string + BHCX string + BHDX string + BHEX string + BHGX string + BHIX string + BHJX string + BHMX string + BHOX string + BHRX string + BHSX string + BHTX string + BHUX string + BHWX string + BJUX string + BKCX string + BKDN string + BKDX string + BKID string + BKSX string + BLGX string + BMBL string + BMCB string + BMCX string + BMPX string + BMSX string + BNBX string + BNCX string + BNPA string + BNSB string + BNSX string + BODX string + BOFA string + BORX string + BOTM string + BOTX string + BPCX string + BPSX string + BRCX string + BRDX string + BRGX string + BRMX string + BRSX string + BRUX string + BSBX string + BSCX string + BTCX string + BTUX string + BUBX string + BUCL string + BUCX string + BUGX string + BUNX string + BURX string + BUSX string + BUZX string + BVNX string + BVSX string + BWCX string + CALX string + CBHX string + CBIN string + CCBL string + CCBX string + CCCX string + CCMX string + CCOB string + CCUX string + CDCX string + CEBX string + CGBX string + CGGX string + CHAS string + CHAX string + CHBX string + CHCX string + CHDX string + CHIX string + CHKX string + CHPX string + CHRX string + CHSX string + CHTX string + CIDX string + CITI string + CITX string + CIUB string + CJAX string + CJMX string + CLBL string + CMCB string + CMCX string + CMDX string + CMLX string + CMPX string + CNRB string + CNSX string + COCX string + COLX string + COMX string + CONX string + CORP string + COSB string + CPDX string + CPSN string + CRBX string + CRES string + CRLY string + CRSX string + CRUB string + CSBK string + CSBX string + CTBA string + CTBX string + CTCB string + CTOX string + CTUX string + CUBX string + CUCX string + CURX string + CZCX string + CZUX string + DAAX string + DAHX string + DAUX string + DBAX string + DBSS string + DCBL string + DCBX string + DCCX string + DCDX string + DCEX string + DCKX string + DCMX string + DCNX string + DCPX string + DCSX string + DCTX string + DCUX string + DDBX string + DDCX string + DDDX string + DDHX string + DEGX string + DENS string + DEOB string + DEOX string + DEUT string + DEUX string + DEVX string + DGBX string + DHBX string + DHKX string + DHUX string + DIBX string + DICG string + DICX string + DIUX string + DJCX string + DKCL string + DKSX string + DLSC string + DLXB string + DMCB string + DMCX string + DMKB string + DMKJ string + DNSB string + DNSX string + DOBX string + DOHB string + DRGX string + DSBX string + DSCB string + DSHX string + DSPX string + DSUX string + DTCX string + DTPX string + DUCX string + DUMX string + DUNX string + DURG string + DVDX string + DYPX string + EBIL string + ECBL string + EDBX string + EDCX string + EDSX string + EIBI string + ESAF string + ESFB string + ESMF string + ETCX string + ETDX string + EUCX string + EWCX string + FCBX string + FCCX string + FCOX string + FDFX string + FDRL string + FEKX string + FGCB string + FINO string + FINF string + FINX string + FIRN string + FIRX string + FMCX string + FRIX string + FSCX string + FSFB string + FZCX string + FZSX string + GACX string + GADX string + GANX string + GBCB string + GCBX string + GCCX string + GCUL string + GCUX string + GDCB string + GDCX string + GDDX string + GDUX string + GGBK string + GGCX string + GHPX string + GKNX string + GMBX string + GMCX string + GMUX string + GNCX string + GNSX string + GODX string + GOSX string + GPCX string + GPOX string + GRAX string + GSBL string + GSBX string + GSCB string + GSCX string + GSSX string + GTCX string + GUBX string + GUCX string + GUNX string + GUOX string + HAMX string + HANX string + HARC string + HCBL string + HCBX string + HCCX string + HCLX string + HDCX string + HDFC string + HGBX string + HINX string + HISX string + HMBX string + HMNX string + HOCX string + HOOX string + HPCX string + HPSC string + HPSX string + HSBC string + HSBX string + HSCX string + HSDX string + HSSX string + HUBX string + HUCX string + HUTX string + HVBK string + IBBK string + IBKL string + IBKO string + ICBK string + ICBL string + ICHX string + ICIC string + ICMX string + IDFB string + IDIB string + IDUK string + IDUX string + ILCB string + IMPX string + INCX string + INDB string + INDX string + IOBA string + IPCX string + IPOS string + IPPB string + IPSX string + ISBX string + ISMX string + ITBL string + ITCX string + ITDX string + IUCB string + IUCX string + JACX string + JAKA string + JALX string + JAMX string + JANA string + JANX string + JASB string + JASX string + JAUX string + JBHX string + JBIX string + JBMX string + JCBX string + JCCB string + JCCX string + JCDX string + JCHX string + JCPX string + JCUX string + JDCX string + JDEX string + JGBX string + JGCX string + JGWX string + JHAX string + JHSX string + JHUX string + JIBX string + JICX string + JIDX string + JIGX string + JIKX string + JIMX string + JINX string + JIOP string + JIOX string + JIRX string + JISX string + JIVX string + JJCX string + JJHX string + JJSB string + JKAX string + JKCX string + JKDX string + JKEX string + JKHX string + JKMX string + JKRX string + JKSX string + JLCX string + JLDX string + JLNX string + JLSX string + JLWX string + JMAX string + JMBX string + JMCX string + JMDX string + JMHX string + JMMX string + JMOX string + JMPX string + JMSX string + JMYX string + JNAX string + JNDX string + JNSX string + JODX string + JONX string + JOWX string + JPAX string + JPCB string + JPCX string + JRAX string + JRKX string + JRNX string + JRSX string + JSAB string + JSAX string + JSBL string + JSBP string + JSBX string + JSCX string + JSDX string + JSEX string + JSFB string + JSHX string + JSKX string + JSMX string + JSOX string + JSRX string + JSTX string + JSVX string + JSWX string + JTIX string + JTSX string + JUCX string + JUSX string + JVCX string + KAAX string + KACE string + KACX string + KADX string + KAGX string + KAIJ string + KALX string + KAMX string + KANG string + KANX string + KARB string + KARX string + KASX string + KATX string + KAYX string + KBCX string + KBNX string + KBSX string + KCBL string + KCBX string + KCCB string + KCCX string + KCDX string + KCEX string + KCOB string + KCUB string + KCUX string + KDBX string + KDCB string + KDCX string + KDIX string + KDNX string + KDUX string + KEMX string + KESX string + KGBX string + KGDX string + KGRB string + KGSX string + KHAX string + KHCX string + KHDX string + KHNX string + KHUX string + KICX string + KJSB string + KJSX string + KKBK string + KKMX string + KKSX string + KLGB string + KLMX string + KMCB string + KMCX string + KMNX string + KMSX string + KNBX string + KNCX string + KNNX string + KNPX string + KNSB string + KNSX string + KOBX string + KOCX string + KODX string + KOEX string + KOLH string + KOSX string + KOTX string + KOYX string + KPCX string + KRCX string + KRDX string + KRIX string + KRMX string + KRNX string + KRTH string + KRTX string + KSBK string + KSBX string + KSCB string + KSCX string + KSMX string + KSNX string + KSTX string + KSUX string + KTBX string + KTCX string + KTDX string + KTTX string + KUBX string + KUCB string + KUCX string + KUKX string + KULX string + KUMX string + KUNS string + KURX string + KVBL string + KVCX string + KVGB string + KYDX string + LACX string + LATX string + LAVB string + LBMX string + LCBX string + LCCX string + LDCX string + LDPX string + LDRX string + LECX string + LICB string + LKBL string + LKCX string + LKHX string + LKMX string + LMNX string + LNSX string + LOKX string + LONX string + LUCX string + LULX string + MABL string + MACX string + MADX string + MAGX string + MAHB string + MAHG string + MAHX string + MAJX string + MAKX string + MALX string + MAMX string + MANX string + MAPX string + MASX string + MAUX string + MAVX string + MAYX string + MBCX string + MBGX string + MBLX string + MCAX string + MCBL string + MCBX string + MCCX string + MCDX string + MCLX string + MCOX string + MCSX string + MCUX string + MDCB string + MDCX string + MDEX string + MDGX string + MDIX string + MDMX string + MDPX string + MEDX string + MERX string + MEUX string + MFCX string + MFUX string + MGBX string + MGCB string + MGCX string + MGDX string + MGRB string + MGSX string + MGUX string + MHCB string + MHCX string + MHEX string + MHLX string + MHMX string + MHNX string + MHSX string + MHUX string + MIZX string + MJCX string + MKPB string + MKUX string + MKYX string + MLDX string + MMCX string + MMMX string + MNBX string + MNCX string + MNSX string + MOGX string + MOUX string + MPCX string + MPDX string + MPRX string + MRBX string + MRTX string + MSAX string + MSBL string + MSBX string + MSCI string + MSCX string + MSHQ string + MSLM string + MSNU string + MSNX string + MSOX string + MSSX string + MUBL string + MUBX string + MUCX string + MUDX string + MUNX string + MUPX string + MURX string + MUSX string + MVCB string + MVCX string + MVIX string + MYAX string + MYSX string + MZCX string + MZRX string + NABX string + NACX string + NAGX string + NAIX string + NALX string + NANX string + NASX string + NATA string + NAUX string + NAVX string + NAWX string + NBAD string + NBBX string + NBCX string + NBMX string + NBRD string + NCBL string + NCBX string + NCCX string + NCOX string + NCUB string + NCUX string + NDCB string + NDCX string + NDDX string + NDGX string + NDIX string + NESF string + NEYX string + NGBX string + NGKX string + NGNX string + NGRX string + NGSB string + NGSX string + NICB string + NIDX string + NILX string + NIRX string + NIUX string + NJBK string + NJCX string + NJGX string + NJMX string + NJSX string + NKGS string + NLGX string + NLUX string + NMCB string + NMCX string + NMGB string + NNCX string + NNSB string + NNSX string + NOBX string + NOIX string + NOSC string + NPCX string + NPKX string + NRDX string + NSBB string + NSBX string + NSCX string + NSGX string + NSIX string + NSJX string + NSMX string + NSPB string + NSPX string + NSRX string + NTBL string + NUBX string + NUCB string + NUCX string + NVCX string + NVNM string + NVSX string + NWCX string + ODCX string + ODGB string + OIBA string + OMCX string + ONSX string + ORBC string + ORCB string + OSMX string + PABX string + PACX string + PADX string + PALX string + PANX string + PARX string + PASX string + PATX string + PAYX string + PBGX string + PCBL string + PCBX string + PCCB string + PCCX string + PCLX string + PCMX string + PCOX string + PCPX string + PCSX string + PCTX string + PCUX string + PDBX string + PDCX string + PDNX string + PDSX string + PDUX string + PGBX string + PGCX string + PGRX string + PGTX string + PITX string + PJSB string + PKBX string + PKDX string + PKGB string + PLOX string + PLUX string + PMCB string + PMCX string + PMEC string + PMNX string + PNCX string + PNMX string + PNPX string + PNSX string + PPBX string + PPCX string + PRCX string + PREX string + PROX string + PRPX string + PRSX string + PRTH string + PSBX string + PSCX string + PSIB string + PSRX string + PSSX string + PTCX string + PTNX string + PTSX string + PUBX string + PUCB string + PUCX string + PUDX string + PUGX string + PUNB string + PUNX string + PURX string + PUSD string + PUSX string + PUUX string + PVAX string + PVCX string + PVVX string + PWUX string + PYCX string + PYTM string + QNBA string + QUCX string + RABO string + RACX string + RAEX string + RAJX string + RAKX string + RAMX string + RANX string + RATN string + RAUX string + RBBX string + RBCX string + RBIS string + RBIH string + RCBX string + RCCX string + RCDX string + RCMX string + RCUX string + RDCX string + RDNX string + REBX string + RECX string + REWX string + RGCX string + RGSX string + RHMX string + RJCX string + RJJX string + RJNX string + RJTX string + RKCX string + RLUX string + RMGB string + RNBX string + RNDX string + RNGX string + RNSB string + RNSX string + ROCX string + ROHX string + RPUX string + RRBP string + RRSX string + RSBL string + RSBX string + RSCB string + RSSX string + RSUX string + RSVX string + RUCX string + RUKX string + RUMX string + RZSX string + SABR string + SABX string + SACB string + SACX string + SADX string + SAGX string + SAHE string + SAHX string + SAIX string + SALX string + SAMX string + SANT string + SANX string + SAPX string + SARX string + SASA string + SASX string + SATX string + SAUX string + SAVX string + SAWX string + SBBJ string + SBCX string + SBHY string + SBIN string + SBKX string + SBLD string + SBLS string + SBLX string + SBMX string + SBMY string + SBNX string + SBPX string + SBSX string + SBTR string + SBUJ string + SBUX string + SCBL string + SCBX string + SCCX string + SCDX string + SCIX string + SCNX string + SCOB string + SCOX string + SCPX string + SCSX string + SCUX string + SDBX string + SDCB string + SDCE string + SDCX string + SDHX string + SDSX string + SDTX string + SDUX string + SEMX string + SENX string + SEUX string + SEWX string + SGCX string + SGLX string + SGSX string + SGUX string + SHAX string + SHBK string + SHBX string + SHCX string + SHEX string + SHGX string + SHIX string + SHKX string + SHMX string + SHNX string + SHOX string + SHRX string + SHSX string + SHUX string + SIBL string + SIBX string + SICX string + SIDB string + SIDC string + SIDX string + SIGX string + SIHX string + SIKX string + SINX string + SIRX string + SISX string + SITX string + SIWX string + SJGX string + SJSB string + SJSX string + SKCX string + SKKX string + SKNX string + SKSB string + SKUX string + SLAX string + SLCX string + SMBC string + SMBX string + SMCB string + SMCX string + SMEX string + SMMX string + SMNX string + SMPX string + SMSX string + SMTX string + SMUX string + SMVC string + SMWX string + SNAX string + SNBK string + SNBX string + SNCX string + SNDX string + SNGX string + SNKX string + SNLX string + SNPX string + SNSV string + SNSX string + SOBX string + SOGE string + SOLX string + SONX string + SPBX string + SPCB string + SPCX string + SPNX string + SPSX string + SPTX string + SRCB string + SRCX string + SREX string + SRGX string + SRHX string + SRSX string + SSBL string + SSBX string + SSDX string + SSHX string + SSKX string + SSLX string + SSNX string + SSOX string + SSSX string + SSWX string + STBP string + STCB string + STCX string + STDX string + STRX string + SUBX string + SUCX string + SUDX string + SULX string + SUMX string + SUNB string + SURX string + SURY string + SUSX string + SUTB string + SUVX string + SVAX string + SVBL string + SVCB string + SVCX string + SVGX string + SVNX string + SVOX string + SVRX string + SVSH string + SVSX string + SWMX string + SWSX string + SYNB string + TACX string + TADX string + TAMX string + TAPX string + TASX string + TBCX string + TBDX string + TBHX string + TBMX string + TBPX string + TBSB string + TBSX string + TBTX string + TBUX string + TCBX string + TCCX string + TCHX string + TCPX string + TCUB string + TCUX string + TDBX string + TDCB string + TDCX string + TDIX string + TDMX string + TDPX string + TDSX string + TECX string + TEHX string + TEMX string + TESX string + TETX string + TFCX string + TGBX string + TGCG string + TGCX string + TGDX string + TGMB string + TGNX string + TGUX string + THCX string + THOX string + THRS string + THRX string + THWX string + TIDX string + TIRX string + TJAX string + TJBX string + TJCX string + TJDX string + TJMX string + TJNX string + TJSB string + TKAX string + TKCX string + TKDX string + TKTX string + TKUX string + TLPX string + TMAX string + TMBL string + TMBX string + TMCX string + TMNX string + TMPX string + TMSC string + TMSX string + TMTX string + TMUX string + TNBX string + TNCX string + TNDC string + TNEX string + TNHX string + TNIX string + TNKX string + TNMX string + TNSC string + TNUX string + TOCX string + TPCX string + TPDX string + TPSX string + TPUX string + TRAX string + TRDX string + TSAB string + TSAX string + TSBX string + TSCX string + TSDX string + TSIX string + TSMX string + TSNX string + TSPX string + TSSB string + TSSX string + TSUX string + TTBX string + TTCB string + TTCX string + TTGX string + TTLX string + TTUX string + TUBX string + TUCL string + TUCX string + TUDX string + TUMX string + TUNX string + TUOX string + TUPX string + TURX string + TVBX string + TVDX string + TVPX string + TVUX string + TYCX string + UBBX string + UBGX string + UBIN string + UCBA string + UCBS string + UCBX string + UCCX string + UCDX string + UCUX string + UGBX string + UICX string + UJSX string + UJVN string + UKGX string + UMAX string + UMCX string + UMSX string + UMUX string + UNAX string + UNIX string + UNMX string + UNSX string + UOVB string + UPCB string + UPCX string + URBN string + URCX string + URDX string + URMX string + UROX string + USFB string + USNX string + UTBI string + UTBX string + UTCX string + UTGX string + UTIB string + UTKS string + UTKX string + UTZX string + UUCX string + VADX string + VAIX string + VANX string + VARA string + VASJ string + VASX string + VAUX string + VCAX string + VCBX string + VCCX string + VCNB string + VCOB string + VCOX string + VDCX string + VDYX string + VEDX string + VERX string + VGBX string + VHDX string + VICX string + VIDX string + VIJB string + VIJX string + VIKX string + VIMX string + VIRX string + VISX string + VJSX string + VKCX string + VKSX string + VMCX string + VMMX string + VMUX string + VNSX string + VRDX string + VSBL string + VSBX string + VSCX string + VSSX string + VSVX string + VUCX string + VVCX string + VVSB string + VYAX string + VYPX string + VYSA string + WACX string + WAIX string + WARX string + WAUX string + WBSC string + WCBX string + WDCX string + WKGX string + WNBX string + WPAC string + WRCX string + WUCX string + WZUX string + XJKG string + YADX string + YAVX string + YCBX string + YDCX string + YESB string + YLNX string + YMSX string + YNCX string + YNSX string + ZBBX string + ZBSX string + ZCBL string + ZIBX string + ZILX string + ZIMX string + ZISX string + ZLLX string + ZRNB string + ZMMX string + ZSAX string + ZSBL string + ZSBX string + ZSGX string + ZSHX string + ZSJX string + ZSKX string + ZSLX string + ZSMX string +} From d32f126a2b3107b09ad2ad76a4256db62fa0a5d4 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Thu, 24 Sep 2020 09:45:06 +0530 Subject: [PATCH 15/24] update readme.md. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index befc68b6..e2cfaf35 100644 --- a/README.md +++ b/README.md @@ -309,12 +309,12 @@ func main() { ifsc.GetBankName("PUNB") // Returns "Punjab National Bank", nil ifsc.GetBankName("ABCD") // Returns "", errors.New(invalid bank code) - ifsc.GetBankName(ifsc.HDFC) // Returns "HDFC Bank", nil + ifsc.GetBankName(ifsc.BankCode.HDFC) // Returns "HDFC Bank", nil ifsc.GetBankDetails("PUNB") // or - ifsc.GetBankDetails(ifsc.PUNB) + ifsc.GetBankDetails(ifsc.BankCode.PUNB) /* Returns (*ifsc.Bank){ From c82ca8c8a990b374cd96e6cb83aceab5e0b45b82 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Wed, 10 Feb 2021 00:56:36 +0530 Subject: [PATCH 16/24] add constant generation. --- Makefile | 2 + README.md | 4 +- go.sum | 9 + src/go/bank.go | 12 - src/go/bank_test.go | 2 +- src/go/constants.go | 4321 ++++++++++++++++++--------- src/go/generator/constants.template | 13 + src/go/generator/main.go | 82 + src/go/generator/main_test.go | 29 + 9 files changed, 3035 insertions(+), 1439 deletions(-) create mode 100644 src/go/generator/constants.template create mode 100644 src/go/generator/main.go create mode 100644 src/go/generator/main_test.go diff --git a/Makefile b/Makefile index 12f778e0..58bab3db 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ .PHONY: test test: go test -tags=unit -timeout 2m -coverprofile=coverage.cov -v ./... +generate-constants: + go run ./src/go/generator/main.go \ No newline at end of file diff --git a/README.md b/README.md index e2cfaf35..befc68b6 100644 --- a/README.md +++ b/README.md @@ -309,12 +309,12 @@ func main() { ifsc.GetBankName("PUNB") // Returns "Punjab National Bank", nil ifsc.GetBankName("ABCD") // Returns "", errors.New(invalid bank code) - ifsc.GetBankName(ifsc.BankCode.HDFC) // Returns "HDFC Bank", nil + ifsc.GetBankName(ifsc.HDFC) // Returns "HDFC Bank", nil ifsc.GetBankDetails("PUNB") // or - ifsc.GetBankDetails(ifsc.BankCode.PUNB) + ifsc.GetBankDetails(ifsc.PUNB) /* Returns (*ifsc.Bank){ diff --git a/go.sum b/go.sum index 1474045d..afe7890c 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,11 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/src/go/bank.go b/src/go/bank.go index 0b43cb3d..27b1e84d 100644 --- a/src/go/bank.go +++ b/src/go/bank.go @@ -3,11 +3,8 @@ package ifsc import ( "fmt" "log" - "reflect" ) -var bankCodes = map[string]int{} - type Bank struct { Name string `json:"name"` BankCode string `json:"bank_code"` @@ -24,16 +21,7 @@ type Bank struct { } var bankData map[string]Bank -var BankCode bankCode -func init() { - val := reflect.Indirect(reflect.ValueOf(&BankCode)) - for i := 0; i < val.NumField(); i++ { - bankName := val.Type().Field(i).Name - bankCodes[bankName] = 1 - val.Field(i).SetString(bankName) - } -} func LoadBankData() { if bankData == nil { if err := LoadFile("banks.json", &bankData, ""); err != nil { diff --git a/src/go/bank_test.go b/src/go/bank_test.go index 5ea36d2e..1d186624 100644 --- a/src/go/bank_test.go +++ b/src/go/bank_test.go @@ -2,7 +2,7 @@ package ifsc import ( "testing" - + // TODO: change "github.com/stretchr/testify/assert" ) diff --git a/src/go/constants.go b/src/go/constants.go index ebb663c8..08f84805 100644 --- a/src/go/constants.go +++ b/src/go/constants.go @@ -1,1426 +1,2899 @@ +/* +This file is autogenerated from generator/main.go parsing the php constants from +Bank.php +*/ package ifsc -type bankCode struct { - AACX string - ABBL string - ABCX string - ABDX string - ABEX string - ABHY string - ABNA string - ABPB string - ABSB string - ABUX string - ACAX string - ACBX string - ACCX string - ACKX string - ACOX string - ACUB string - ACUX string - ADBX string - ADCB string - ADCC string - ADCX string - ADDX string - AGCX string - AGDX string - AGRX string - AGSX string - AGUX string - AGVX string - AHMX string - AHUX string - AIRP string - AJAR string - AJHC string - AJKB string - AJMX string - AJNX string - AJPX string - AJSX string - AJUX string - AKJB string - AKMX string - AKOX string - ALAX string - ALIX string - ALLA string - ALLX string - ALWX string - AMAX string - AMBX string - AMCB string - AMCX string - AMDN string - AMMX string - AMNX string - AMRX string - AMSB string - AMSX string - ANBX string - ANDB string - ANDX string - ANMX string - ANSX string - ANUX string - ANZB string - APBL string - APCX string - APGB string - APGV string - APGX string - APJX string - APMC string - APMX string - APNX string - APRX string - APSX string - ARCX string - ARMX string - ARYX string - ASBL string - ASBX string - ASHX string - ASKX string - ASNX string - ASOX string - ASSX string - AUBL string - AUBX string - AUCB string - AUCX string - AUGX string - AURX string - AVDX string - AWCX string - AWUX string - AZAX string - AZPX string - AZSX string - AZUX string - BACB string - BACX string - BADX string - BALX string - BANX string - BARA string - BARB string - BARC string - BARX string - BASX string - BAUX string - BAVX string - BBKM string - BBLX string - BBRX string - BBSX string - BBUX string - BBVX string - BCBM string - BCBX string - BCCB string - BCCX string - BCEX string - BCEY string - BCOX string - BCUB string - BCUX string - BDBL string - BDBX string - BDCX string - BDDX string - BDIX string - BDNX string - BDOX string - BDUX string - BEDX string - BELX string - BFUX string - BGBX string - BGCX string - BGGX string - BGUX string - BGVX string - BHAX string - BHBX string - BHCX string - BHDX string - BHEX string - BHGX string - BHIX string - BHJX string - BHMX string - BHOX string - BHRX string - BHSX string - BHTX string - BHUX string - BHWX string - BJUX string - BKCX string - BKDN string - BKDX string - BKID string - BKSX string - BLGX string - BMBL string - BMCB string - BMCX string - BMPX string - BMSX string - BNBX string - BNCX string - BNPA string - BNSB string - BNSX string - BODX string - BOFA string - BORX string - BOTM string - BOTX string - BPCX string - BPSX string - BRCX string - BRDX string - BRGX string - BRMX string - BRSX string - BRUX string - BSBX string - BSCX string - BTCX string - BTUX string - BUBX string - BUCL string - BUCX string - BUGX string - BUNX string - BURX string - BUSX string - BUZX string - BVNX string - BVSX string - BWCX string - CALX string - CBHX string - CBIN string - CCBL string - CCBX string - CCCX string - CCMX string - CCOB string - CCUX string - CDCX string - CEBX string - CGBX string - CGGX string - CHAS string - CHAX string - CHBX string - CHCX string - CHDX string - CHIX string - CHKX string - CHPX string - CHRX string - CHSX string - CHTX string - CIDX string - CITI string - CITX string - CIUB string - CJAX string - CJMX string - CLBL string - CMCB string - CMCX string - CMDX string - CMLX string - CMPX string - CNRB string - CNSX string - COCX string - COLX string - COMX string - CONX string - CORP string - COSB string - CPDX string - CPSN string - CRBX string - CRES string - CRLY string - CRSX string - CRUB string - CSBK string - CSBX string - CTBA string - CTBX string - CTCB string - CTOX string - CTUX string - CUBX string - CUCX string - CURX string - CZCX string - CZUX string - DAAX string - DAHX string - DAUX string - DBAX string - DBSS string - DCBL string - DCBX string - DCCX string - DCDX string - DCEX string - DCKX string - DCMX string - DCNX string - DCPX string - DCSX string - DCTX string - DCUX string - DDBX string - DDCX string - DDDX string - DDHX string - DEGX string - DENS string - DEOB string - DEOX string - DEUT string - DEUX string - DEVX string - DGBX string - DHBX string - DHKX string - DHUX string - DIBX string - DICG string - DICX string - DIUX string - DJCX string - DKCL string - DKSX string - DLSC string - DLXB string - DMCB string - DMCX string - DMKB string - DMKJ string - DNSB string - DNSX string - DOBX string - DOHB string - DRGX string - DSBX string - DSCB string - DSHX string - DSPX string - DSUX string - DTCX string - DTPX string - DUCX string - DUMX string - DUNX string - DURG string - DVDX string - DYPX string - EBIL string - ECBL string - EDBX string - EDCX string - EDSX string - EIBI string - ESAF string - ESFB string - ESMF string - ETCX string - ETDX string - EUCX string - EWCX string - FCBX string - FCCX string - FCOX string - FDFX string - FDRL string - FEKX string - FGCB string - FINO string - FINF string - FINX string - FIRN string - FIRX string - FMCX string - FRIX string - FSCX string - FSFB string - FZCX string - FZSX string - GACX string - GADX string - GANX string - GBCB string - GCBX string - GCCX string - GCUL string - GCUX string - GDCB string - GDCX string - GDDX string - GDUX string - GGBK string - GGCX string - GHPX string - GKNX string - GMBX string - GMCX string - GMUX string - GNCX string - GNSX string - GODX string - GOSX string - GPCX string - GPOX string - GRAX string - GSBL string - GSBX string - GSCB string - GSCX string - GSSX string - GTCX string - GUBX string - GUCX string - GUNX string - GUOX string - HAMX string - HANX string - HARC string - HCBL string - HCBX string - HCCX string - HCLX string - HDCX string - HDFC string - HGBX string - HINX string - HISX string - HMBX string - HMNX string - HOCX string - HOOX string - HPCX string - HPSC string - HPSX string - HSBC string - HSBX string - HSCX string - HSDX string - HSSX string - HUBX string - HUCX string - HUTX string - HVBK string - IBBK string - IBKL string - IBKO string - ICBK string - ICBL string - ICHX string - ICIC string - ICMX string - IDFB string - IDIB string - IDUK string - IDUX string - ILCB string - IMPX string - INCX string - INDB string - INDX string - IOBA string - IPCX string - IPOS string - IPPB string - IPSX string - ISBX string - ISMX string - ITBL string - ITCX string - ITDX string - IUCB string - IUCX string - JACX string - JAKA string - JALX string - JAMX string - JANA string - JANX string - JASB string - JASX string - JAUX string - JBHX string - JBIX string - JBMX string - JCBX string - JCCB string - JCCX string - JCDX string - JCHX string - JCPX string - JCUX string - JDCX string - JDEX string - JGBX string - JGCX string - JGWX string - JHAX string - JHSX string - JHUX string - JIBX string - JICX string - JIDX string - JIGX string - JIKX string - JIMX string - JINX string - JIOP string - JIOX string - JIRX string - JISX string - JIVX string - JJCX string - JJHX string - JJSB string - JKAX string - JKCX string - JKDX string - JKEX string - JKHX string - JKMX string - JKRX string - JKSX string - JLCX string - JLDX string - JLNX string - JLSX string - JLWX string - JMAX string - JMBX string - JMCX string - JMDX string - JMHX string - JMMX string - JMOX string - JMPX string - JMSX string - JMYX string - JNAX string - JNDX string - JNSX string - JODX string - JONX string - JOWX string - JPAX string - JPCB string - JPCX string - JRAX string - JRKX string - JRNX string - JRSX string - JSAB string - JSAX string - JSBL string - JSBP string - JSBX string - JSCX string - JSDX string - JSEX string - JSFB string - JSHX string - JSKX string - JSMX string - JSOX string - JSRX string - JSTX string - JSVX string - JSWX string - JTIX string - JTSX string - JUCX string - JUSX string - JVCX string - KAAX string - KACE string - KACX string - KADX string - KAGX string - KAIJ string - KALX string - KAMX string - KANG string - KANX string - KARB string - KARX string - KASX string - KATX string - KAYX string - KBCX string - KBNX string - KBSX string - KCBL string - KCBX string - KCCB string - KCCX string - KCDX string - KCEX string - KCOB string - KCUB string - KCUX string - KDBX string - KDCB string - KDCX string - KDIX string - KDNX string - KDUX string - KEMX string - KESX string - KGBX string - KGDX string - KGRB string - KGSX string - KHAX string - KHCX string - KHDX string - KHNX string - KHUX string - KICX string - KJSB string - KJSX string - KKBK string - KKMX string - KKSX string - KLGB string - KLMX string - KMCB string - KMCX string - KMNX string - KMSX string - KNBX string - KNCX string - KNNX string - KNPX string - KNSB string - KNSX string - KOBX string - KOCX string - KODX string - KOEX string - KOLH string - KOSX string - KOTX string - KOYX string - KPCX string - KRCX string - KRDX string - KRIX string - KRMX string - KRNX string - KRTH string - KRTX string - KSBK string - KSBX string - KSCB string - KSCX string - KSMX string - KSNX string - KSTX string - KSUX string - KTBX string - KTCX string - KTDX string - KTTX string - KUBX string - KUCB string - KUCX string - KUKX string - KULX string - KUMX string - KUNS string - KURX string - KVBL string - KVCX string - KVGB string - KYDX string - LACX string - LATX string - LAVB string - LBMX string - LCBX string - LCCX string - LDCX string - LDPX string - LDRX string - LECX string - LICB string - LKBL string - LKCX string - LKHX string - LKMX string - LMNX string - LNSX string - LOKX string - LONX string - LUCX string - LULX string - MABL string - MACX string - MADX string - MAGX string - MAHB string - MAHG string - MAHX string - MAJX string - MAKX string - MALX string - MAMX string - MANX string - MAPX string - MASX string - MAUX string - MAVX string - MAYX string - MBCX string - MBGX string - MBLX string - MCAX string - MCBL string - MCBX string - MCCX string - MCDX string - MCLX string - MCOX string - MCSX string - MCUX string - MDCB string - MDCX string - MDEX string - MDGX string - MDIX string - MDMX string - MDPX string - MEDX string - MERX string - MEUX string - MFCX string - MFUX string - MGBX string - MGCB string - MGCX string - MGDX string - MGRB string - MGSX string - MGUX string - MHCB string - MHCX string - MHEX string - MHLX string - MHMX string - MHNX string - MHSX string - MHUX string - MIZX string - MJCX string - MKPB string - MKUX string - MKYX string - MLDX string - MMCX string - MMMX string - MNBX string - MNCX string - MNSX string - MOGX string - MOUX string - MPCX string - MPDX string - MPRX string - MRBX string - MRTX string - MSAX string - MSBL string - MSBX string - MSCI string - MSCX string - MSHQ string - MSLM string - MSNU string - MSNX string - MSOX string - MSSX string - MUBL string - MUBX string - MUCX string - MUDX string - MUNX string - MUPX string - MURX string - MUSX string - MVCB string - MVCX string - MVIX string - MYAX string - MYSX string - MZCX string - MZRX string - NABX string - NACX string - NAGX string - NAIX string - NALX string - NANX string - NASX string - NATA string - NAUX string - NAVX string - NAWX string - NBAD string - NBBX string - NBCX string - NBMX string - NBRD string - NCBL string - NCBX string - NCCX string - NCOX string - NCUB string - NCUX string - NDCB string - NDCX string - NDDX string - NDGX string - NDIX string - NESF string - NEYX string - NGBX string - NGKX string - NGNX string - NGRX string - NGSB string - NGSX string - NICB string - NIDX string - NILX string - NIRX string - NIUX string - NJBK string - NJCX string - NJGX string - NJMX string - NJSX string - NKGS string - NLGX string - NLUX string - NMCB string - NMCX string - NMGB string - NNCX string - NNSB string - NNSX string - NOBX string - NOIX string - NOSC string - NPCX string - NPKX string - NRDX string - NSBB string - NSBX string - NSCX string - NSGX string - NSIX string - NSJX string - NSMX string - NSPB string - NSPX string - NSRX string - NTBL string - NUBX string - NUCB string - NUCX string - NVCX string - NVNM string - NVSX string - NWCX string - ODCX string - ODGB string - OIBA string - OMCX string - ONSX string - ORBC string - ORCB string - OSMX string - PABX string - PACX string - PADX string - PALX string - PANX string - PARX string - PASX string - PATX string - PAYX string - PBGX string - PCBL string - PCBX string - PCCB string - PCCX string - PCLX string - PCMX string - PCOX string - PCPX string - PCSX string - PCTX string - PCUX string - PDBX string - PDCX string - PDNX string - PDSX string - PDUX string - PGBX string - PGCX string - PGRX string - PGTX string - PITX string - PJSB string - PKBX string - PKDX string - PKGB string - PLOX string - PLUX string - PMCB string - PMCX string - PMEC string - PMNX string - PNCX string - PNMX string - PNPX string - PNSX string - PPBX string - PPCX string - PRCX string - PREX string - PROX string - PRPX string - PRSX string - PRTH string - PSBX string - PSCX string - PSIB string - PSRX string - PSSX string - PTCX string - PTNX string - PTSX string - PUBX string - PUCB string - PUCX string - PUDX string - PUGX string - PUNB string - PUNX string - PURX string - PUSD string - PUSX string - PUUX string - PVAX string - PVCX string - PVVX string - PWUX string - PYCX string - PYTM string - QNBA string - QUCX string - RABO string - RACX string - RAEX string - RAJX string - RAKX string - RAMX string - RANX string - RATN string - RAUX string - RBBX string - RBCX string - RBIS string - RBIH string - RCBX string - RCCX string - RCDX string - RCMX string - RCUX string - RDCX string - RDNX string - REBX string - RECX string - REWX string - RGCX string - RGSX string - RHMX string - RJCX string - RJJX string - RJNX string - RJTX string - RKCX string - RLUX string - RMGB string - RNBX string - RNDX string - RNGX string - RNSB string - RNSX string - ROCX string - ROHX string - RPUX string - RRBP string - RRSX string - RSBL string - RSBX string - RSCB string - RSSX string - RSUX string - RSVX string - RUCX string - RUKX string - RUMX string - RZSX string - SABR string - SABX string - SACB string - SACX string - SADX string - SAGX string - SAHE string - SAHX string - SAIX string - SALX string - SAMX string - SANT string - SANX string - SAPX string - SARX string - SASA string - SASX string - SATX string - SAUX string - SAVX string - SAWX string - SBBJ string - SBCX string - SBHY string - SBIN string - SBKX string - SBLD string - SBLS string - SBLX string - SBMX string - SBMY string - SBNX string - SBPX string - SBSX string - SBTR string - SBUJ string - SBUX string - SCBL string - SCBX string - SCCX string - SCDX string - SCIX string - SCNX string - SCOB string - SCOX string - SCPX string - SCSX string - SCUX string - SDBX string - SDCB string - SDCE string - SDCX string - SDHX string - SDSX string - SDTX string - SDUX string - SEMX string - SENX string - SEUX string - SEWX string - SGCX string - SGLX string - SGSX string - SGUX string - SHAX string - SHBK string - SHBX string - SHCX string - SHEX string - SHGX string - SHIX string - SHKX string - SHMX string - SHNX string - SHOX string - SHRX string - SHSX string - SHUX string - SIBL string - SIBX string - SICX string - SIDB string - SIDC string - SIDX string - SIGX string - SIHX string - SIKX string - SINX string - SIRX string - SISX string - SITX string - SIWX string - SJGX string - SJSB string - SJSX string - SKCX string - SKKX string - SKNX string - SKSB string - SKUX string - SLAX string - SLCX string - SMBC string - SMBX string - SMCB string - SMCX string - SMEX string - SMMX string - SMNX string - SMPX string - SMSX string - SMTX string - SMUX string - SMVC string - SMWX string - SNAX string - SNBK string - SNBX string - SNCX string - SNDX string - SNGX string - SNKX string - SNLX string - SNPX string - SNSV string - SNSX string - SOBX string - SOGE string - SOLX string - SONX string - SPBX string - SPCB string - SPCX string - SPNX string - SPSX string - SPTX string - SRCB string - SRCX string - SREX string - SRGX string - SRHX string - SRSX string - SSBL string - SSBX string - SSDX string - SSHX string - SSKX string - SSLX string - SSNX string - SSOX string - SSSX string - SSWX string - STBP string - STCB string - STCX string - STDX string - STRX string - SUBX string - SUCX string - SUDX string - SULX string - SUMX string - SUNB string - SURX string - SURY string - SUSX string - SUTB string - SUVX string - SVAX string - SVBL string - SVCB string - SVCX string - SVGX string - SVNX string - SVOX string - SVRX string - SVSH string - SVSX string - SWMX string - SWSX string - SYNB string - TACX string - TADX string - TAMX string - TAPX string - TASX string - TBCX string - TBDX string - TBHX string - TBMX string - TBPX string - TBSB string - TBSX string - TBTX string - TBUX string - TCBX string - TCCX string - TCHX string - TCPX string - TCUB string - TCUX string - TDBX string - TDCB string - TDCX string - TDIX string - TDMX string - TDPX string - TDSX string - TECX string - TEHX string - TEMX string - TESX string - TETX string - TFCX string - TGBX string - TGCG string - TGCX string - TGDX string - TGMB string - TGNX string - TGUX string - THCX string - THOX string - THRS string - THRX string - THWX string - TIDX string - TIRX string - TJAX string - TJBX string - TJCX string - TJDX string - TJMX string - TJNX string - TJSB string - TKAX string - TKCX string - TKDX string - TKTX string - TKUX string - TLPX string - TMAX string - TMBL string - TMBX string - TMCX string - TMNX string - TMPX string - TMSC string - TMSX string - TMTX string - TMUX string - TNBX string - TNCX string - TNDC string - TNEX string - TNHX string - TNIX string - TNKX string - TNMX string - TNSC string - TNUX string - TOCX string - TPCX string - TPDX string - TPSX string - TPUX string - TRAX string - TRDX string - TSAB string - TSAX string - TSBX string - TSCX string - TSDX string - TSIX string - TSMX string - TSNX string - TSPX string - TSSB string - TSSX string - TSUX string - TTBX string - TTCB string - TTCX string - TTGX string - TTLX string - TTUX string - TUBX string - TUCL string - TUCX string - TUDX string - TUMX string - TUNX string - TUOX string - TUPX string - TURX string - TVBX string - TVDX string - TVPX string - TVUX string - TYCX string - UBBX string - UBGX string - UBIN string - UCBA string - UCBS string - UCBX string - UCCX string - UCDX string - UCUX string - UGBX string - UICX string - UJSX string - UJVN string - UKGX string - UMAX string - UMCX string - UMSX string - UMUX string - UNAX string - UNIX string - UNMX string - UNSX string - UOVB string - UPCB string - UPCX string - URBN string - URCX string - URDX string - URMX string - UROX string - USFB string - USNX string - UTBI string - UTBX string - UTCX string - UTGX string - UTIB string - UTKS string - UTKX string - UTZX string - UUCX string - VADX string - VAIX string - VANX string - VARA string - VASJ string - VASX string - VAUX string - VCAX string - VCBX string - VCCX string - VCNB string - VCOB string - VCOX string - VDCX string - VDYX string - VEDX string - VERX string - VGBX string - VHDX string - VICX string - VIDX string - VIJB string - VIJX string - VIKX string - VIMX string - VIRX string - VISX string - VJSX string - VKCX string - VKSX string - VMCX string - VMMX string - VMUX string - VNSX string - VRDX string - VSBL string - VSBX string - VSCX string - VSSX string - VSVX string - VUCX string - VVCX string - VVSB string - VYAX string - VYPX string - VYSA string - WACX string - WAIX string - WARX string - WAUX string - WBSC string - WCBX string - WDCX string - WKGX string - WNBX string - WPAC string - WRCX string - WUCX string - WZUX string - XJKG string - YADX string - YAVX string - YCBX string - YDCX string - YESB string - YLNX string - YMSX string - YNCX string - YNSX string - ZBBX string - ZBSX string - ZCBL string - ZIBX string - ZILX string - ZIMX string - ZISX string - ZLLX string - ZRNB string - ZMMX string - ZSAX string - ZSBL string - ZSBX string - ZSGX string - ZSHX string - ZSJX string - ZSKX string - ZSLX string - ZSMX string -} +const ( + AACX = "AACX" + ABBL = "ABBL" + ABCX = "ABCX" + ABDX = "ABDX" + ABEX = "ABEX" + ABHY = "ABHY" + ABNA = "ABNA" + ABPB = "ABPB" + ABSB = "ABSB" + ABUX = "ABUX" + ACAX = "ACAX" + ACBX = "ACBX" + ACCX = "ACCX" + ACKX = "ACKX" + ACOX = "ACOX" + ACUB = "ACUB" + ACUX = "ACUX" + ADBX = "ADBX" + ADCB = "ADCB" + ADCC = "ADCC" + ADCX = "ADCX" + ADDX = "ADDX" + AGCX = "AGCX" + AGDX = "AGDX" + AGRX = "AGRX" + AGSX = "AGSX" + AGUX = "AGUX" + AGVX = "AGVX" + AHMX = "AHMX" + AHUX = "AHUX" + AIRP = "AIRP" + AJAR = "AJAR" + AJHC = "AJHC" + AJKB = "AJKB" + AJMX = "AJMX" + AJNX = "AJNX" + AJPX = "AJPX" + AJSX = "AJSX" + AJUX = "AJUX" + AKJB = "AKJB" + AKMX = "AKMX" + AKOX = "AKOX" + ALAX = "ALAX" + ALIX = "ALIX" + ALLA = "ALLA" + ALLX = "ALLX" + ALWX = "ALWX" + AMAX = "AMAX" + AMBX = "AMBX" + AMCB = "AMCB" + AMCX = "AMCX" + AMDN = "AMDN" + AMMX = "AMMX" + AMNX = "AMNX" + AMRX = "AMRX" + AMSB = "AMSB" + AMSX = "AMSX" + ANBX = "ANBX" + ANDB = "ANDB" + ANDX = "ANDX" + ANMX = "ANMX" + ANSX = "ANSX" + ANUX = "ANUX" + ANZB = "ANZB" + APBL = "APBL" + APCX = "APCX" + APGB = "APGB" + APGV = "APGV" + APGX = "APGX" + APJX = "APJX" + APMC = "APMC" + APMX = "APMX" + APNX = "APNX" + APRX = "APRX" + APSX = "APSX" + ARCX = "ARCX" + ARMX = "ARMX" + ARYX = "ARYX" + ASBL = "ASBL" + ASBX = "ASBX" + ASHX = "ASHX" + ASKX = "ASKX" + ASNX = "ASNX" + ASOX = "ASOX" + ASSX = "ASSX" + AUBL = "AUBL" + AUBX = "AUBX" + AUCB = "AUCB" + AUCX = "AUCX" + AUGX = "AUGX" + AURX = "AURX" + AVDX = "AVDX" + AWCX = "AWCX" + AWUX = "AWUX" + AZAX = "AZAX" + AZPX = "AZPX" + AZSX = "AZSX" + AZUX = "AZUX" + BACB = "BACB" + BACX = "BACX" + BADX = "BADX" + BALX = "BALX" + BANX = "BANX" + BARA = "BARA" + BARB = "BARB" + BARC = "BARC" + BARX = "BARX" + BASX = "BASX" + BAUX = "BAUX" + BAVX = "BAVX" + BBKM = "BBKM" + BBLX = "BBLX" + BBRX = "BBRX" + BBSX = "BBSX" + BBUX = "BBUX" + BBVX = "BBVX" + BCBM = "BCBM" + BCBX = "BCBX" + BCCB = "BCCB" + BCCX = "BCCX" + BCEX = "BCEX" + BCEY = "BCEY" + BCOX = "BCOX" + BCUB = "BCUB" + BCUX = "BCUX" + BDBB = "BDBB" + BDBL = "BDBL" + BDBX = "BDBX" + BDCX = "BDCX" + BDDX = "BDDX" + BDIX = "BDIX" + BDNX = "BDNX" + BDOX = "BDOX" + BDUX = "BDUX" + BEDX = "BEDX" + BELX = "BELX" + BFUX = "BFUX" + BGBX = "BGBX" + BGCX = "BGCX" + BGGX = "BGGX" + BGUX = "BGUX" + BGVX = "BGVX" + BHAX = "BHAX" + BHBX = "BHBX" + BHCX = "BHCX" + BHDX = "BHDX" + BHEX = "BHEX" + BHGX = "BHGX" + BHIX = "BHIX" + BHJX = "BHJX" + BHMX = "BHMX" + BHOX = "BHOX" + BHRX = "BHRX" + BHSX = "BHSX" + BHTX = "BHTX" + BHUX = "BHUX" + BHWX = "BHWX" + BJUX = "BJUX" + BKCX = "BKCX" + BKDN = "BKDN" + BKDX = "BKDX" + BKID = "BKID" + BKSX = "BKSX" + BLGX = "BLGX" + BMBL = "BMBL" + BMCB = "BMCB" + BMCX = "BMCX" + BMPX = "BMPX" + BMSX = "BMSX" + BNBX = "BNBX" + BNCX = "BNCX" + BNPA = "BNPA" + BNSB = "BNSB" + BNSX = "BNSX" + BODX = "BODX" + BOFA = "BOFA" + BORX = "BORX" + BOTM = "BOTM" + BOTX = "BOTX" + BPCX = "BPCX" + BPSX = "BPSX" + BRCX = "BRCX" + BRDX = "BRDX" + BRGX = "BRGX" + BRMX = "BRMX" + BRSX = "BRSX" + BRUX = "BRUX" + BSBX = "BSBX" + BSCX = "BSCX" + BTCX = "BTCX" + BTUX = "BTUX" + BUBX = "BUBX" + BUCL = "BUCL" + BUCX = "BUCX" + BUGX = "BUGX" + BUNX = "BUNX" + BURX = "BURX" + BUSX = "BUSX" + BUZX = "BUZX" + BVNX = "BVNX" + BVSX = "BVSX" + BWCX = "BWCX" + CALX = "CALX" + CBHX = "CBHX" + CBIN = "CBIN" + CCBL = "CCBL" + CCBX = "CCBX" + CCCX = "CCCX" + CCMX = "CCMX" + CCOB = "CCOB" + CCUX = "CCUX" + CDCX = "CDCX" + CEBX = "CEBX" + CGBX = "CGBX" + CGGX = "CGGX" + CHAS = "CHAS" + CHAX = "CHAX" + CHBX = "CHBX" + CHCX = "CHCX" + CHDX = "CHDX" + CHIX = "CHIX" + CHKX = "CHKX" + CHPX = "CHPX" + CHRX = "CHRX" + CHSX = "CHSX" + CHTX = "CHTX" + CIDX = "CIDX" + CITI = "CITI" + CITX = "CITX" + CIUB = "CIUB" + CJAX = "CJAX" + CJMX = "CJMX" + CLBL = "CLBL" + CMCB = "CMCB" + CMCX = "CMCX" + CMDX = "CMDX" + CMLX = "CMLX" + CMPX = "CMPX" + CNRB = "CNRB" + CNSX = "CNSX" + COAS = "COAS" + COCX = "COCX" + COLX = "COLX" + COMX = "COMX" + CONX = "CONX" + CORP = "CORP" + COSB = "COSB" + CPDX = "CPDX" + CPSN = "CPSN" + CRBX = "CRBX" + CRES = "CRES" + CRLY = "CRLY" + CRSX = "CRSX" + CRUB = "CRUB" + CSBK = "CSBK" + CSBX = "CSBX" + CTBA = "CTBA" + CTBX = "CTBX" + CTCB = "CTCB" + CTOX = "CTOX" + CTUX = "CTUX" + CUBX = "CUBX" + CUCX = "CUCX" + CURX = "CURX" + CZCX = "CZCX" + CZUX = "CZUX" + DAAX = "DAAX" + DAHX = "DAHX" + DAUX = "DAUX" + DBAX = "DBAX" + DBSS = "DBSS" + DCBL = "DCBL" + DCBX = "DCBX" + DCCX = "DCCX" + DCDX = "DCDX" + DCEX = "DCEX" + DCKX = "DCKX" + DCMX = "DCMX" + DCNX = "DCNX" + DCPX = "DCPX" + DCSX = "DCSX" + DCTX = "DCTX" + DCUX = "DCUX" + DDBX = "DDBX" + DDCX = "DDCX" + DDDX = "DDDX" + DDHX = "DDHX" + DEGX = "DEGX" + DENS = "DENS" + DEOB = "DEOB" + DEOX = "DEOX" + DEUT = "DEUT" + DEUX = "DEUX" + DEVX = "DEVX" + DGBX = "DGBX" + DHBX = "DHBX" + DHKX = "DHKX" + DHUX = "DHUX" + DIBX = "DIBX" + DICG = "DICG" + DICX = "DICX" + DIUX = "DIUX" + DJCX = "DJCX" + DKCL = "DKCL" + DKSX = "DKSX" + DLSC = "DLSC" + DLXB = "DLXB" + DMCB = "DMCB" + DMCX = "DMCX" + DMKB = "DMKB" + DMKJ = "DMKJ" + DNDC = "DNDC" + DNSB = "DNSB" + DNSX = "DNSX" + DOBX = "DOBX" + DOHB = "DOHB" + DRGX = "DRGX" + DSBX = "DSBX" + DSCB = "DSCB" + DSHX = "DSHX" + DSPX = "DSPX" + DSUX = "DSUX" + DTCX = "DTCX" + DTPX = "DTPX" + DUCX = "DUCX" + DUMX = "DUMX" + DUNX = "DUNX" + DURG = "DURG" + DVDX = "DVDX" + DYPX = "DYPX" + EBIL = "EBIL" + ECBL = "ECBL" + EDBX = "EDBX" + EDCX = "EDCX" + EDSX = "EDSX" + EIBI = "EIBI" + ESAF = "ESAF" + ESFB = "ESFB" + ESMF = "ESMF" + ETCX = "ETCX" + ETDX = "ETDX" + EUCX = "EUCX" + EWCX = "EWCX" + FCBX = "FCBX" + FCCX = "FCCX" + FCOX = "FCOX" + FDFX = "FDFX" + FDRL = "FDRL" + FEKX = "FEKX" + FGCB = "FGCB" + FINF = "FINF" + FINO = "FINO" + FINX = "FINX" + FIRN = "FIRN" + FIRX = "FIRX" + FMCX = "FMCX" + FRIX = "FRIX" + FSCX = "FSCX" + FSFB = "FSFB" + FZCX = "FZCX" + FZSX = "FZSX" + GACX = "GACX" + GADX = "GADX" + GANX = "GANX" + GBCB = "GBCB" + GCBX = "GCBX" + GCCX = "GCCX" + GCUL = "GCUL" + GCUX = "GCUX" + GDCB = "GDCB" + GDCX = "GDCX" + GDDX = "GDDX" + GDUX = "GDUX" + GGBK = "GGBK" + GGCX = "GGCX" + GHPX = "GHPX" + GKNX = "GKNX" + GMBX = "GMBX" + GMCX = "GMCX" + GMUX = "GMUX" + GNCX = "GNCX" + GNSX = "GNSX" + GODX = "GODX" + GOSX = "GOSX" + GPCX = "GPCX" + GPOX = "GPOX" + GRAX = "GRAX" + GSBL = "GSBL" + GSBX = "GSBX" + GSCB = "GSCB" + GSCX = "GSCX" + GSSX = "GSSX" + GTCX = "GTCX" + GUBX = "GUBX" + GUCX = "GUCX" + GUNX = "GUNX" + GUOX = "GUOX" + HAMX = "HAMX" + HANX = "HANX" + HARC = "HARC" + HCBL = "HCBL" + HCBX = "HCBX" + HCCX = "HCCX" + HCLX = "HCLX" + HDCL = "HDCL" + HDCX = "HDCX" + HDFC = "HDFC" + HGBX = "HGBX" + HINX = "HINX" + HISX = "HISX" + HMBX = "HMBX" + HMNX = "HMNX" + HOCX = "HOCX" + HOOX = "HOOX" + HPCX = "HPCX" + HPSC = "HPSC" + HPSX = "HPSX" + HSBC = "HSBC" + HSBM = "HSBM" + HSBX = "HSBX" + HSCX = "HSCX" + HSDX = "HSDX" + HSSX = "HSSX" + HUBX = "HUBX" + HUCB = "HUCB" + HUCH = "HUCH" + HUCX = "HUCX" + HUTX = "HUTX" + HVBK = "HVBK" + IBBK = "IBBK" + IBKL = "IBKL" + IBKO = "IBKO" + ICBK = "ICBK" + ICBL = "ICBL" + ICHX = "ICHX" + ICIC = "ICIC" + ICMX = "ICMX" + IDFB = "IDFB" + IDIB = "IDIB" + IDUK = "IDUK" + IDUX = "IDUX" + ILCB = "ILCB" + IMCX = "IMCX" + IMPX = "IMPX" + INCX = "INCX" + INDB = "INDB" + INDX = "INDX" + IOBA = "IOBA" + IPCX = "IPCX" + IPOS = "IPOS" + IPPB = "IPPB" + IPSX = "IPSX" + ISBX = "ISBX" + ISMX = "ISMX" + ITBL = "ITBL" + ITCX = "ITCX" + ITDX = "ITDX" + IUCB = "IUCB" + IUCX = "IUCX" + JACX = "JACX" + JAKA = "JAKA" + JALX = "JALX" + JAMX = "JAMX" + JANA = "JANA" + JANX = "JANX" + JASB = "JASB" + JASX = "JASX" + JAUX = "JAUX" + JBHX = "JBHX" + JBIX = "JBIX" + JBMX = "JBMX" + JCBX = "JCBX" + JCCB = "JCCB" + JCCX = "JCCX" + JCDX = "JCDX" + JCHX = "JCHX" + JCPX = "JCPX" + JCUX = "JCUX" + JDCX = "JDCX" + JDEX = "JDEX" + JGBX = "JGBX" + JGCX = "JGCX" + JGWX = "JGWX" + JHAX = "JHAX" + JHSX = "JHSX" + JHUX = "JHUX" + JIBX = "JIBX" + JICX = "JICX" + JIDX = "JIDX" + JIGX = "JIGX" + JIKX = "JIKX" + JIMX = "JIMX" + JINX = "JINX" + JIOP = "JIOP" + JIOX = "JIOX" + JIRX = "JIRX" + JISX = "JISX" + JIVX = "JIVX" + JJCX = "JJCX" + JJHX = "JJHX" + JJSB = "JJSB" + JKAX = "JKAX" + JKCX = "JKCX" + JKDX = "JKDX" + JKEX = "JKEX" + JKHX = "JKHX" + JKMX = "JKMX" + JKRX = "JKRX" + JKSX = "JKSX" + JLCX = "JLCX" + JLDX = "JLDX" + JLNX = "JLNX" + JLSX = "JLSX" + JLWX = "JLWX" + JMAX = "JMAX" + JMBX = "JMBX" + JMCX = "JMCX" + JMDX = "JMDX" + JMHX = "JMHX" + JMMX = "JMMX" + JMOX = "JMOX" + JMPX = "JMPX" + JMSX = "JMSX" + JMYX = "JMYX" + JNAX = "JNAX" + JNDX = "JNDX" + JNSX = "JNSX" + JODX = "JODX" + JONX = "JONX" + JOWX = "JOWX" + JPAX = "JPAX" + JPCB = "JPCB" + JPCX = "JPCX" + JRAX = "JRAX" + JRKX = "JRKX" + JRNX = "JRNX" + JRSX = "JRSX" + JSAB = "JSAB" + JSAX = "JSAX" + JSBL = "JSBL" + JSBP = "JSBP" + JSBX = "JSBX" + JSCX = "JSCX" + JSDX = "JSDX" + JSEX = "JSEX" + JSFB = "JSFB" + JSHX = "JSHX" + JSKX = "JSKX" + JSMX = "JSMX" + JSOX = "JSOX" + JSRX = "JSRX" + JSTX = "JSTX" + JSVX = "JSVX" + JSWX = "JSWX" + JTIX = "JTIX" + JTSX = "JTSX" + JUCX = "JUCX" + JUSX = "JUSX" + JVCX = "JVCX" + KAAX = "KAAX" + KACE = "KACE" + KACX = "KACX" + KADX = "KADX" + KAGX = "KAGX" + KAIJ = "KAIJ" + KALX = "KALX" + KAMX = "KAMX" + KANG = "KANG" + KANX = "KANX" + KARB = "KARB" + KARX = "KARX" + KASX = "KASX" + KATX = "KATX" + KAYX = "KAYX" + KBCX = "KBCX" + KBKB = "KBKB" + KBNX = "KBNX" + KBSX = "KBSX" + KCBL = "KCBL" + KCBX = "KCBX" + KCCB = "KCCB" + KCCX = "KCCX" + KCDX = "KCDX" + KCEX = "KCEX" + KCOB = "KCOB" + KCUB = "KCUB" + KCUX = "KCUX" + KDBX = "KDBX" + KDCB = "KDCB" + KDCX = "KDCX" + KDIX = "KDIX" + KDNX = "KDNX" + KDUX = "KDUX" + KEMX = "KEMX" + KESX = "KESX" + KGBX = "KGBX" + KGDX = "KGDX" + KGRB = "KGRB" + KGSX = "KGSX" + KHAX = "KHAX" + KHCX = "KHCX" + KHDX = "KHDX" + KHNX = "KHNX" + KHUX = "KHUX" + KICX = "KICX" + KJSB = "KJSB" + KJSX = "KJSX" + KKBK = "KKBK" + KKMX = "KKMX" + KKSX = "KKSX" + KLGB = "KLGB" + KLMX = "KLMX" + KMCB = "KMCB" + KMCX = "KMCX" + KMNX = "KMNX" + KMSX = "KMSX" + KNBX = "KNBX" + KNCX = "KNCX" + KNNX = "KNNX" + KNPX = "KNPX" + KNSB = "KNSB" + KNSX = "KNSX" + KOBX = "KOBX" + KOCX = "KOCX" + KODX = "KODX" + KOEX = "KOEX" + KOLH = "KOLH" + KOSX = "KOSX" + KOTX = "KOTX" + KOYX = "KOYX" + KPCX = "KPCX" + KRCX = "KRCX" + KRDX = "KRDX" + KRIX = "KRIX" + KRMX = "KRMX" + KRNX = "KRNX" + KRTH = "KRTH" + KRTX = "KRTX" + KSBK = "KSBK" + KSBX = "KSBX" + KSCB = "KSCB" + KSCX = "KSCX" + KSMX = "KSMX" + KSNX = "KSNX" + KSTX = "KSTX" + KSUX = "KSUX" + KTBX = "KTBX" + KTCX = "KTCX" + KTDX = "KTDX" + KTTX = "KTTX" + KUBX = "KUBX" + KUCB = "KUCB" + KUCX = "KUCX" + KUKX = "KUKX" + KULX = "KULX" + KUMX = "KUMX" + KUNS = "KUNS" + KURX = "KURX" + KVBL = "KVBL" + KVCX = "KVCX" + KVGB = "KVGB" + KYDX = "KYDX" + LACX = "LACX" + LATX = "LATX" + LAVB = "LAVB" + LBMX = "LBMX" + LCBX = "LCBX" + LCCX = "LCCX" + LDCX = "LDCX" + LDPX = "LDPX" + LDRX = "LDRX" + LECX = "LECX" + LICB = "LICB" + LKBL = "LKBL" + LKCX = "LKCX" + LKHX = "LKHX" + LKMX = "LKMX" + LMNX = "LMNX" + LNSX = "LNSX" + LOKX = "LOKX" + LONX = "LONX" + LUCX = "LUCX" + LULX = "LULX" + MABL = "MABL" + MACX = "MACX" + MADX = "MADX" + MAGX = "MAGX" + MAHB = "MAHB" + MAHG = "MAHG" + MAHX = "MAHX" + MAJX = "MAJX" + MAKX = "MAKX" + MALX = "MALX" + MAMX = "MAMX" + MANX = "MANX" + MAPX = "MAPX" + MASX = "MASX" + MAUX = "MAUX" + MAVX = "MAVX" + MAWX = "MAWX" + MAYX = "MAYX" + MBCX = "MBCX" + MBGX = "MBGX" + MBLX = "MBLX" + MCAX = "MCAX" + MCBL = "MCBL" + MCBX = "MCBX" + MCCX = "MCCX" + MCDX = "MCDX" + MCLX = "MCLX" + MCOX = "MCOX" + MCSX = "MCSX" + MCUX = "MCUX" + MDBK = "MDBK" + MDCB = "MDCB" + MDCX = "MDCX" + MDEX = "MDEX" + MDGX = "MDGX" + MDIX = "MDIX" + MDMX = "MDMX" + MDPX = "MDPX" + MEDX = "MEDX" + MERX = "MERX" + MEUX = "MEUX" + MFCX = "MFCX" + MFUX = "MFUX" + MGBX = "MGBX" + MGCB = "MGCB" + MGCX = "MGCX" + MGDX = "MGDX" + MGRB = "MGRB" + MGSX = "MGSX" + MGUX = "MGUX" + MHCB = "MHCB" + MHCX = "MHCX" + MHEX = "MHEX" + MHLX = "MHLX" + MHMX = "MHMX" + MHNX = "MHNX" + MHSX = "MHSX" + MHUX = "MHUX" + MIZX = "MIZX" + MJCX = "MJCX" + MKPB = "MKPB" + MKUX = "MKUX" + MKYX = "MKYX" + MLCG = "MLCG" + MLDX = "MLDX" + MMCX = "MMCX" + MMMX = "MMMX" + MNBX = "MNBX" + MNCX = "MNCX" + MNSX = "MNSX" + MOGX = "MOGX" + MOUX = "MOUX" + MPCX = "MPCX" + MPDX = "MPDX" + MPRX = "MPRX" + MRBX = "MRBX" + MRTX = "MRTX" + MSAX = "MSAX" + MSBL = "MSBL" + MSBX = "MSBX" + MSCI = "MSCI" + MSCX = "MSCX" + MSHQ = "MSHQ" + MSLM = "MSLM" + MSNU = "MSNU" + MSNX = "MSNX" + MSOX = "MSOX" + MSSX = "MSSX" + MUBL = "MUBL" + MUBX = "MUBX" + MUCX = "MUCX" + MUDX = "MUDX" + MUNX = "MUNX" + MUPX = "MUPX" + MURX = "MURX" + MUSX = "MUSX" + MVCB = "MVCB" + MVCX = "MVCX" + MVIX = "MVIX" + MYAX = "MYAX" + MYSX = "MYSX" + MZCX = "MZCX" + MZRX = "MZRX" + NABX = "NABX" + NACX = "NACX" + NAGX = "NAGX" + NAIX = "NAIX" + NALX = "NALX" + NANX = "NANX" + NASX = "NASX" + NATA = "NATA" + NAUX = "NAUX" + NAVX = "NAVX" + NAWX = "NAWX" + NBAD = "NBAD" + NBBX = "NBBX" + NBCX = "NBCX" + NBMX = "NBMX" + NBRD = "NBRD" + NCBL = "NCBL" + NCBX = "NCBX" + NCCX = "NCCX" + NCOX = "NCOX" + NCUB = "NCUB" + NCUX = "NCUX" + NDCB = "NDCB" + NDCX = "NDCX" + NDDX = "NDDX" + NDGX = "NDGX" + NDIX = "NDIX" + NESF = "NESF" + NEYX = "NEYX" + NGBX = "NGBX" + NGKX = "NGKX" + NGNX = "NGNX" + NGRX = "NGRX" + NGSB = "NGSB" + NGSX = "NGSX" + NICB = "NICB" + NIDX = "NIDX" + NILX = "NILX" + NIRX = "NIRX" + NIUX = "NIUX" + NJBK = "NJBK" + NJCX = "NJCX" + NJGX = "NJGX" + NJMX = "NJMX" + NJSX = "NJSX" + NKGS = "NKGS" + NLGX = "NLGX" + NLUX = "NLUX" + NMCB = "NMCB" + NMCX = "NMCX" + NMGB = "NMGB" + NNCX = "NNCX" + NNSB = "NNSB" + NNSX = "NNSX" + NOBX = "NOBX" + NOIX = "NOIX" + NOSC = "NOSC" + NPCX = "NPCX" + NPKX = "NPKX" + NRDX = "NRDX" + NRMX = "NRMX" + NSBB = "NSBB" + NSBX = "NSBX" + NSCX = "NSCX" + NSGX = "NSGX" + NSIX = "NSIX" + NSJX = "NSJX" + NSMX = "NSMX" + NSPB = "NSPB" + NSPX = "NSPX" + NSRX = "NSRX" + NTBL = "NTBL" + NUBX = "NUBX" + NUCB = "NUCB" + NUCX = "NUCX" + NVCX = "NVCX" + NVNM = "NVNM" + NVSX = "NVSX" + NWCX = "NWCX" + ODCX = "ODCX" + ODGB = "ODGB" + OIBA = "OIBA" + OMCX = "OMCX" + ONSX = "ONSX" + ORBC = "ORBC" + ORCB = "ORCB" + OSMX = "OSMX" + PABX = "PABX" + PACX = "PACX" + PADX = "PADX" + PALX = "PALX" + PANX = "PANX" + PARX = "PARX" + PASX = "PASX" + PATX = "PATX" + PAYX = "PAYX" + PBGX = "PBGX" + PCBL = "PCBL" + PCBX = "PCBX" + PCCB = "PCCB" + PCCX = "PCCX" + PCLX = "PCLX" + PCMX = "PCMX" + PCOX = "PCOX" + PCPX = "PCPX" + PCSX = "PCSX" + PCTX = "PCTX" + PCUX = "PCUX" + PDBX = "PDBX" + PDCX = "PDCX" + PDNX = "PDNX" + PDSX = "PDSX" + PDUX = "PDUX" + PGBX = "PGBX" + PGCX = "PGCX" + PGRX = "PGRX" + PGTX = "PGTX" + PITX = "PITX" + PJSB = "PJSB" + PKBX = "PKBX" + PKDX = "PKDX" + PKGB = "PKGB" + PLOX = "PLOX" + PLUX = "PLUX" + PMCB = "PMCB" + PMCX = "PMCX" + PMEC = "PMEC" + PMNX = "PMNX" + PNCX = "PNCX" + PNMX = "PNMX" + PNPX = "PNPX" + PNSX = "PNSX" + PPBX = "PPBX" + PPCX = "PPCX" + PRCX = "PRCX" + PREX = "PREX" + PROX = "PROX" + PRPX = "PRPX" + PRSX = "PRSX" + PRTH = "PRTH" + PSBX = "PSBX" + PSCX = "PSCX" + PSIB = "PSIB" + PSRX = "PSRX" + PSSX = "PSSX" + PTCX = "PTCX" + PTNX = "PTNX" + PTSX = "PTSX" + PUBX = "PUBX" + PUCB = "PUCB" + PUCX = "PUCX" + PUDX = "PUDX" + PUGX = "PUGX" + PUNB = "PUNB" + PUNX = "PUNX" + PURX = "PURX" + PUSD = "PUSD" + PUSX = "PUSX" + PUUX = "PUUX" + PVAX = "PVAX" + PVCX = "PVCX" + PVVX = "PVVX" + PWUX = "PWUX" + PYCX = "PYCX" + PYTM = "PYTM" + QNBA = "QNBA" + QUCX = "QUCX" + RABO = "RABO" + RACX = "RACX" + RAEX = "RAEX" + RAJX = "RAJX" + RAKX = "RAKX" + RAMX = "RAMX" + RANX = "RANX" + RATN = "RATN" + RAUX = "RAUX" + RBBX = "RBBX" + RBCX = "RBCX" + RBIH = "RBIH" + RBIN = "RBIN" + RBIS = "RBIS" + RCBX = "RCBX" + RCCX = "RCCX" + RCDX = "RCDX" + RCMX = "RCMX" + RCUX = "RCUX" + RDCX = "RDCX" + RDNX = "RDNX" + REBX = "REBX" + RECX = "RECX" + REWX = "REWX" + RGCX = "RGCX" + RGSX = "RGSX" + RHMX = "RHMX" + RJCX = "RJCX" + RJJX = "RJJX" + RJNX = "RJNX" + RJTX = "RJTX" + RKCX = "RKCX" + RLUX = "RLUX" + RMGB = "RMGB" + RNBX = "RNBX" + RNDX = "RNDX" + RNGX = "RNGX" + RNSB = "RNSB" + RNSX = "RNSX" + ROCX = "ROCX" + ROHX = "ROHX" + RPUX = "RPUX" + RRBP = "RRBP" + RRSX = "RRSX" + RSBL = "RSBL" + RSBX = "RSBX" + RSCB = "RSCB" + RSSB = "RSSB" + RSSX = "RSSX" + RSUX = "RSUX" + RSVX = "RSVX" + RUCX = "RUCX" + RUKX = "RUKX" + RUMX = "RUMX" + RZSX = "RZSX" + SABR = "SABR" + SABX = "SABX" + SACB = "SACB" + SACX = "SACX" + SADX = "SADX" + SAGX = "SAGX" + SAHE = "SAHE" + SAHX = "SAHX" + SAIX = "SAIX" + SALX = "SALX" + SAMX = "SAMX" + SANT = "SANT" + SANX = "SANX" + SAPX = "SAPX" + SARX = "SARX" + SASA = "SASA" + SASX = "SASX" + SATX = "SATX" + SAUX = "SAUX" + SAVX = "SAVX" + SAWX = "SAWX" + SBBJ = "SBBJ" + SBCX = "SBCX" + SBHY = "SBHY" + SBIN = "SBIN" + SBKX = "SBKX" + SBLD = "SBLD" + SBLS = "SBLS" + SBLX = "SBLX" + SBMX = "SBMX" + SBMY = "SBMY" + SBNX = "SBNX" + SBPX = "SBPX" + SBSX = "SBSX" + SBTR = "SBTR" + SBUJ = "SBUJ" + SBUX = "SBUX" + SCBL = "SCBL" + SCBX = "SCBX" + SCCX = "SCCX" + SCDX = "SCDX" + SCIX = "SCIX" + SCNX = "SCNX" + SCOB = "SCOB" + SCOX = "SCOX" + SCPX = "SCPX" + SCSX = "SCSX" + SCUX = "SCUX" + SDBX = "SDBX" + SDCB = "SDCB" + SDCE = "SDCE" + SDCX = "SDCX" + SDHX = "SDHX" + SDSX = "SDSX" + SDTC = "SDTC" + SDTX = "SDTX" + SDUX = "SDUX" + SEMX = "SEMX" + SENX = "SENX" + SEUX = "SEUX" + SEWX = "SEWX" + SGCX = "SGCX" + SGLX = "SGLX" + SGSX = "SGSX" + SGUX = "SGUX" + SHAX = "SHAX" + SHBK = "SHBK" + SHBX = "SHBX" + SHCX = "SHCX" + SHEX = "SHEX" + SHGX = "SHGX" + SHIX = "SHIX" + SHKX = "SHKX" + SHMX = "SHMX" + SHNX = "SHNX" + SHOX = "SHOX" + SHRX = "SHRX" + SHSX = "SHSX" + SHUB = "SHUB" + SHUX = "SHUX" + SIBL = "SIBL" + SIBX = "SIBX" + SICX = "SICX" + SIDB = "SIDB" + SIDC = "SIDC" + SIDX = "SIDX" + SIGX = "SIGX" + SIHX = "SIHX" + SIKX = "SIKX" + SINX = "SINX" + SIRX = "SIRX" + SISX = "SISX" + SITX = "SITX" + SIWX = "SIWX" + SJGX = "SJGX" + SJSB = "SJSB" + SJSX = "SJSX" + SKCX = "SKCX" + SKKX = "SKKX" + SKNX = "SKNX" + SKSB = "SKSB" + SKUX = "SKUX" + SLAX = "SLAX" + SLCX = "SLCX" + SMBC = "SMBC" + SMBX = "SMBX" + SMCB = "SMCB" + SMCX = "SMCX" + SMEX = "SMEX" + SMMX = "SMMX" + SMNX = "SMNX" + SMPX = "SMPX" + SMSX = "SMSX" + SMTX = "SMTX" + SMUX = "SMUX" + SMVC = "SMVC" + SMWX = "SMWX" + SNAX = "SNAX" + SNBK = "SNBK" + SNBX = "SNBX" + SNCX = "SNCX" + SNDX = "SNDX" + SNGX = "SNGX" + SNKX = "SNKX" + SNLX = "SNLX" + SNPX = "SNPX" + SNSV = "SNSV" + SNSX = "SNSX" + SOBX = "SOBX" + SOGE = "SOGE" + SOLX = "SOLX" + SONX = "SONX" + SPBX = "SPBX" + SPCB = "SPCB" + SPCX = "SPCX" + SPNX = "SPNX" + SPSX = "SPSX" + SPTX = "SPTX" + SRCB = "SRCB" + SRCX = "SRCX" + SREX = "SREX" + SRGX = "SRGX" + SRHX = "SRHX" + SRSX = "SRSX" + SSBL = "SSBL" + SSBX = "SSBX" + SSDX = "SSDX" + SSHX = "SSHX" + SSKX = "SSKX" + SSLX = "SSLX" + SSNX = "SSNX" + SSOX = "SSOX" + SSSX = "SSSX" + SSWX = "SSWX" + STBP = "STBP" + STCB = "STCB" + STCX = "STCX" + STDX = "STDX" + STRX = "STRX" + SUBX = "SUBX" + SUCX = "SUCX" + SUDX = "SUDX" + SULX = "SULX" + SUMX = "SUMX" + SUNB = "SUNB" + SURX = "SURX" + SURY = "SURY" + SUSB = "SUSB" + SUSX = "SUSX" + SUTB = "SUTB" + SUVX = "SUVX" + SVAX = "SVAX" + SVBL = "SVBL" + SVCB = "SVCB" + SVCX = "SVCX" + SVGX = "SVGX" + SVMC = "SVMC" + SVNX = "SVNX" + SVOX = "SVOX" + SVRX = "SVRX" + SVSH = "SVSH" + SVSX = "SVSX" + SWMX = "SWMX" + SWSX = "SWSX" + SYNB = "SYNB" + TACX = "TACX" + TADX = "TADX" + TAMX = "TAMX" + TAPX = "TAPX" + TASX = "TASX" + TBCX = "TBCX" + TBDX = "TBDX" + TBHX = "TBHX" + TBMX = "TBMX" + TBNS = "TBNS" + TBPX = "TBPX" + TBSB = "TBSB" + TBSX = "TBSX" + TBTX = "TBTX" + TBUX = "TBUX" + TCBX = "TCBX" + TCCX = "TCCX" + TCHX = "TCHX" + TCPX = "TCPX" + TCUB = "TCUB" + TCUX = "TCUX" + TDBX = "TDBX" + TDCB = "TDCB" + TDCX = "TDCX" + TDIX = "TDIX" + TDMX = "TDMX" + TDPX = "TDPX" + TDSX = "TDSX" + TECX = "TECX" + TEHX = "TEHX" + TEMX = "TEMX" + TESX = "TESX" + TETX = "TETX" + TFCX = "TFCX" + TGBX = "TGBX" + TGCG = "TGCG" + TGCX = "TGCX" + TGDX = "TGDX" + TGMB = "TGMB" + TGNX = "TGNX" + TGUX = "TGUX" + THCX = "THCX" + THOX = "THOX" + THRS = "THRS" + THRX = "THRX" + THWX = "THWX" + TIDX = "TIDX" + TIRX = "TIRX" + TJAX = "TJAX" + TJBX = "TJBX" + TJCX = "TJCX" + TJDX = "TJDX" + TJMX = "TJMX" + TJNX = "TJNX" + TJSB = "TJSB" + TKAX = "TKAX" + TKCX = "TKCX" + TKDX = "TKDX" + TKTX = "TKTX" + TKUX = "TKUX" + TLPX = "TLPX" + TMAX = "TMAX" + TMBL = "TMBL" + TMBX = "TMBX" + TMCX = "TMCX" + TMNX = "TMNX" + TMPX = "TMPX" + TMSC = "TMSC" + TMSX = "TMSX" + TMTX = "TMTX" + TMUX = "TMUX" + TNBX = "TNBX" + TNCX = "TNCX" + TNDC = "TNDC" + TNEX = "TNEX" + TNHX = "TNHX" + TNIX = "TNIX" + TNKX = "TNKX" + TNMX = "TNMX" + TNSC = "TNSC" + TNUX = "TNUX" + TOCX = "TOCX" + TPCX = "TPCX" + TPDX = "TPDX" + TPSX = "TPSX" + TPUX = "TPUX" + TRAX = "TRAX" + TRDX = "TRDX" + TSAB = "TSAB" + TSAX = "TSAX" + TSBX = "TSBX" + TSCX = "TSCX" + TSDX = "TSDX" + TSIX = "TSIX" + TSMX = "TSMX" + TSNX = "TSNX" + TSPX = "TSPX" + TSSB = "TSSB" + TSSX = "TSSX" + TSUX = "TSUX" + TTBX = "TTBX" + TTCB = "TTCB" + TTCX = "TTCX" + TTGX = "TTGX" + TTLX = "TTLX" + TTUX = "TTUX" + TUBX = "TUBX" + TUCL = "TUCL" + TUCX = "TUCX" + TUDX = "TUDX" + TUMX = "TUMX" + TUNX = "TUNX" + TUOX = "TUOX" + TUPX = "TUPX" + TURX = "TURX" + TVBX = "TVBX" + TVDX = "TVDX" + TVPX = "TVPX" + TVUX = "TVUX" + TYCX = "TYCX" + UBBX = "UBBX" + UBGX = "UBGX" + UBIN = "UBIN" + UCBA = "UCBA" + UCBS = "UCBS" + UCBX = "UCBX" + UCCX = "UCCX" + UCDX = "UCDX" + UCUX = "UCUX" + UGBX = "UGBX" + UICX = "UICX" + UJSX = "UJSX" + UJVN = "UJVN" + UKGX = "UKGX" + UMAX = "UMAX" + UMCX = "UMCX" + UMSX = "UMSX" + UMUX = "UMUX" + UNAX = "UNAX" + UNIX = "UNIX" + UNMX = "UNMX" + UNSX = "UNSX" + UOVB = "UOVB" + UPCB = "UPCB" + UPCX = "UPCX" + URBN = "URBN" + URCX = "URCX" + URDX = "URDX" + URMX = "URMX" + UROX = "UROX" + USFB = "USFB" + USNX = "USNX" + UTBI = "UTBI" + UTBX = "UTBX" + UTCX = "UTCX" + UTGX = "UTGX" + UTIB = "UTIB" + UTKS = "UTKS" + UTKX = "UTKX" + UTZX = "UTZX" + UUCB = "UUCB" + UUCX = "UUCX" + VADX = "VADX" + VAIX = "VAIX" + VANX = "VANX" + VARA = "VARA" + VASJ = "VASJ" + VASX = "VASX" + VAUX = "VAUX" + VCAX = "VCAX" + VCBX = "VCBX" + VCCX = "VCCX" + VCNB = "VCNB" + VCOB = "VCOB" + VCOX = "VCOX" + VDCX = "VDCX" + VDYX = "VDYX" + VEDX = "VEDX" + VERX = "VERX" + VGBX = "VGBX" + VHDX = "VHDX" + VICX = "VICX" + VIDX = "VIDX" + VIJB = "VIJB" + VIJX = "VIJX" + VIKX = "VIKX" + VIMX = "VIMX" + VIRX = "VIRX" + VISX = "VISX" + VJSX = "VJSX" + VKCX = "VKCX" + VKSX = "VKSX" + VMCX = "VMCX" + VMMX = "VMMX" + VMUX = "VMUX" + VNSX = "VNSX" + VRDX = "VRDX" + VSBL = "VSBL" + VSBX = "VSBX" + VSCX = "VSCX" + VSSX = "VSSX" + VSVX = "VSVX" + VUCX = "VUCX" + VVCX = "VVCX" + VVSB = "VVSB" + VYAX = "VYAX" + VYPX = "VYPX" + VYSA = "VYSA" + WACX = "WACX" + WAIX = "WAIX" + WARX = "WARX" + WAUX = "WAUX" + WBSC = "WBSC" + WCBX = "WCBX" + WDCX = "WDCX" + WKGX = "WKGX" + WNBX = "WNBX" + WPAC = "WPAC" + WRCX = "WRCX" + WUCX = "WUCX" + WZUX = "WZUX" + XJKG = "XJKG" + YADX = "YADX" + YAVX = "YAVX" + YCBX = "YCBX" + YDCX = "YDCX" + YESB = "YESB" + YLNX = "YLNX" + YMSX = "YMSX" + YNCX = "YNCX" + YNSX = "YNSX" + ZBBX = "ZBBX" + ZBSX = "ZBSX" + ZCBL = "ZCBL" + ZIBX = "ZIBX" + ZILX = "ZILX" + ZIMX = "ZIMX" + ZISX = "ZISX" + ZLLX = "ZLLX" + ZMMX = "ZMMX" + ZRNB = "ZRNB" + ZSAX = "ZSAX" + ZSBG = "ZSBG" + ZSBL = "ZSBL" + ZSBX = "ZSBX" + ZSGX = "ZSGX" + ZSHX = "ZSHX" + ZSJX = "ZSJX" + ZSKX = "ZSKX" + ZSLX = "ZSLX" + ZSMX = "ZSMX" +) + +var bankCodes = map[string]bool{ + "AACX" : true, + "ABBL" : true, + "ABCX" : true, + "ABDX" : true, + "ABEX" : true, + "ABHY" : true, + "ABNA" : true, + "ABPB" : true, + "ABSB" : true, + "ABUX" : true, + "ACAX" : true, + "ACBX" : true, + "ACCX" : true, + "ACKX" : true, + "ACOX" : true, + "ACUB" : true, + "ACUX" : true, + "ADBX" : true, + "ADCB" : true, + "ADCC" : true, + "ADCX" : true, + "ADDX" : true, + "AGCX" : true, + "AGDX" : true, + "AGRX" : true, + "AGSX" : true, + "AGUX" : true, + "AGVX" : true, + "AHMX" : true, + "AHUX" : true, + "AIRP" : true, + "AJAR" : true, + "AJHC" : true, + "AJKB" : true, + "AJMX" : true, + "AJNX" : true, + "AJPX" : true, + "AJSX" : true, + "AJUX" : true, + "AKJB" : true, + "AKMX" : true, + "AKOX" : true, + "ALAX" : true, + "ALIX" : true, + "ALLA" : true, + "ALLX" : true, + "ALWX" : true, + "AMAX" : true, + "AMBX" : true, + "AMCB" : true, + "AMCX" : true, + "AMDN" : true, + "AMMX" : true, + "AMNX" : true, + "AMRX" : true, + "AMSB" : true, + "AMSX" : true, + "ANBX" : true, + "ANDB" : true, + "ANDX" : true, + "ANMX" : true, + "ANSX" : true, + "ANUX" : true, + "ANZB" : true, + "APBL" : true, + "APCX" : true, + "APGB" : true, + "APGV" : true, + "APGX" : true, + "APJX" : true, + "APMC" : true, + "APMX" : true, + "APNX" : true, + "APRX" : true, + "APSX" : true, + "ARCX" : true, + "ARMX" : true, + "ARYX" : true, + "ASBL" : true, + "ASBX" : true, + "ASHX" : true, + "ASKX" : true, + "ASNX" : true, + "ASOX" : true, + "ASSX" : true, + "AUBL" : true, + "AUBX" : true, + "AUCB" : true, + "AUCX" : true, + "AUGX" : true, + "AURX" : true, + "AVDX" : true, + "AWCX" : true, + "AWUX" : true, + "AZAX" : true, + "AZPX" : true, + "AZSX" : true, + "AZUX" : true, + "BACB" : true, + "BACX" : true, + "BADX" : true, + "BALX" : true, + "BANX" : true, + "BARA" : true, + "BARB" : true, + "BARC" : true, + "BARX" : true, + "BASX" : true, + "BAUX" : true, + "BAVX" : true, + "BBKM" : true, + "BBLX" : true, + "BBRX" : true, + "BBSX" : true, + "BBUX" : true, + "BBVX" : true, + "BCBM" : true, + "BCBX" : true, + "BCCB" : true, + "BCCX" : true, + "BCEX" : true, + "BCEY" : true, + "BCOX" : true, + "BCUB" : true, + "BCUX" : true, + "BDBB" : true, + "BDBL" : true, + "BDBX" : true, + "BDCX" : true, + "BDDX" : true, + "BDIX" : true, + "BDNX" : true, + "BDOX" : true, + "BDUX" : true, + "BEDX" : true, + "BELX" : true, + "BFUX" : true, + "BGBX" : true, + "BGCX" : true, + "BGGX" : true, + "BGUX" : true, + "BGVX" : true, + "BHAX" : true, + "BHBX" : true, + "BHCX" : true, + "BHDX" : true, + "BHEX" : true, + "BHGX" : true, + "BHIX" : true, + "BHJX" : true, + "BHMX" : true, + "BHOX" : true, + "BHRX" : true, + "BHSX" : true, + "BHTX" : true, + "BHUX" : true, + "BHWX" : true, + "BJUX" : true, + "BKCX" : true, + "BKDN" : true, + "BKDX" : true, + "BKID" : true, + "BKSX" : true, + "BLGX" : true, + "BMBL" : true, + "BMCB" : true, + "BMCX" : true, + "BMPX" : true, + "BMSX" : true, + "BNBX" : true, + "BNCX" : true, + "BNPA" : true, + "BNSB" : true, + "BNSX" : true, + "BODX" : true, + "BOFA" : true, + "BORX" : true, + "BOTM" : true, + "BOTX" : true, + "BPCX" : true, + "BPSX" : true, + "BRCX" : true, + "BRDX" : true, + "BRGX" : true, + "BRMX" : true, + "BRSX" : true, + "BRUX" : true, + "BSBX" : true, + "BSCX" : true, + "BTCX" : true, + "BTUX" : true, + "BUBX" : true, + "BUCL" : true, + "BUCX" : true, + "BUGX" : true, + "BUNX" : true, + "BURX" : true, + "BUSX" : true, + "BUZX" : true, + "BVNX" : true, + "BVSX" : true, + "BWCX" : true, + "CALX" : true, + "CBHX" : true, + "CBIN" : true, + "CCBL" : true, + "CCBX" : true, + "CCCX" : true, + "CCMX" : true, + "CCOB" : true, + "CCUX" : true, + "CDCX" : true, + "CEBX" : true, + "CGBX" : true, + "CGGX" : true, + "CHAS" : true, + "CHAX" : true, + "CHBX" : true, + "CHCX" : true, + "CHDX" : true, + "CHIX" : true, + "CHKX" : true, + "CHPX" : true, + "CHRX" : true, + "CHSX" : true, + "CHTX" : true, + "CIDX" : true, + "CITI" : true, + "CITX" : true, + "CIUB" : true, + "CJAX" : true, + "CJMX" : true, + "CLBL" : true, + "CMCB" : true, + "CMCX" : true, + "CMDX" : true, + "CMLX" : true, + "CMPX" : true, + "CNRB" : true, + "CNSX" : true, + "COAS" : true, + "COCX" : true, + "COLX" : true, + "COMX" : true, + "CONX" : true, + "CORP" : true, + "COSB" : true, + "CPDX" : true, + "CPSN" : true, + "CRBX" : true, + "CRES" : true, + "CRLY" : true, + "CRSX" : true, + "CRUB" : true, + "CSBK" : true, + "CSBX" : true, + "CTBA" : true, + "CTBX" : true, + "CTCB" : true, + "CTOX" : true, + "CTUX" : true, + "CUBX" : true, + "CUCX" : true, + "CURX" : true, + "CZCX" : true, + "CZUX" : true, + "DAAX" : true, + "DAHX" : true, + "DAUX" : true, + "DBAX" : true, + "DBSS" : true, + "DCBL" : true, + "DCBX" : true, + "DCCX" : true, + "DCDX" : true, + "DCEX" : true, + "DCKX" : true, + "DCMX" : true, + "DCNX" : true, + "DCPX" : true, + "DCSX" : true, + "DCTX" : true, + "DCUX" : true, + "DDBX" : true, + "DDCX" : true, + "DDDX" : true, + "DDHX" : true, + "DEGX" : true, + "DENS" : true, + "DEOB" : true, + "DEOX" : true, + "DEUT" : true, + "DEUX" : true, + "DEVX" : true, + "DGBX" : true, + "DHBX" : true, + "DHKX" : true, + "DHUX" : true, + "DIBX" : true, + "DICG" : true, + "DICX" : true, + "DIUX" : true, + "DJCX" : true, + "DKCL" : true, + "DKSX" : true, + "DLSC" : true, + "DLXB" : true, + "DMCB" : true, + "DMCX" : true, + "DMKB" : true, + "DMKJ" : true, + "DNDC" : true, + "DNSB" : true, + "DNSX" : true, + "DOBX" : true, + "DOHB" : true, + "DRGX" : true, + "DSBX" : true, + "DSCB" : true, + "DSHX" : true, + "DSPX" : true, + "DSUX" : true, + "DTCX" : true, + "DTPX" : true, + "DUCX" : true, + "DUMX" : true, + "DUNX" : true, + "DURG" : true, + "DVDX" : true, + "DYPX" : true, + "EBIL" : true, + "ECBL" : true, + "EDBX" : true, + "EDCX" : true, + "EDSX" : true, + "EIBI" : true, + "ESAF" : true, + "ESFB" : true, + "ESMF" : true, + "ETCX" : true, + "ETDX" : true, + "EUCX" : true, + "EWCX" : true, + "FCBX" : true, + "FCCX" : true, + "FCOX" : true, + "FDFX" : true, + "FDRL" : true, + "FEKX" : true, + "FGCB" : true, + "FINF" : true, + "FINO" : true, + "FINX" : true, + "FIRN" : true, + "FIRX" : true, + "FMCX" : true, + "FRIX" : true, + "FSCX" : true, + "FSFB" : true, + "FZCX" : true, + "FZSX" : true, + "GACX" : true, + "GADX" : true, + "GANX" : true, + "GBCB" : true, + "GCBX" : true, + "GCCX" : true, + "GCUL" : true, + "GCUX" : true, + "GDCB" : true, + "GDCX" : true, + "GDDX" : true, + "GDUX" : true, + "GGBK" : true, + "GGCX" : true, + "GHPX" : true, + "GKNX" : true, + "GMBX" : true, + "GMCX" : true, + "GMUX" : true, + "GNCX" : true, + "GNSX" : true, + "GODX" : true, + "GOSX" : true, + "GPCX" : true, + "GPOX" : true, + "GRAX" : true, + "GSBL" : true, + "GSBX" : true, + "GSCB" : true, + "GSCX" : true, + "GSSX" : true, + "GTCX" : true, + "GUBX" : true, + "GUCX" : true, + "GUNX" : true, + "GUOX" : true, + "HAMX" : true, + "HANX" : true, + "HARC" : true, + "HCBL" : true, + "HCBX" : true, + "HCCX" : true, + "HCLX" : true, + "HDCL" : true, + "HDCX" : true, + "HDFC" : true, + "HGBX" : true, + "HINX" : true, + "HISX" : true, + "HMBX" : true, + "HMNX" : true, + "HOCX" : true, + "HOOX" : true, + "HPCX" : true, + "HPSC" : true, + "HPSX" : true, + "HSBC" : true, + "HSBM" : true, + "HSBX" : true, + "HSCX" : true, + "HSDX" : true, + "HSSX" : true, + "HUBX" : true, + "HUCB" : true, + "HUCH" : true, + "HUCX" : true, + "HUTX" : true, + "HVBK" : true, + "IBBK" : true, + "IBKL" : true, + "IBKO" : true, + "ICBK" : true, + "ICBL" : true, + "ICHX" : true, + "ICIC" : true, + "ICMX" : true, + "IDFB" : true, + "IDIB" : true, + "IDUK" : true, + "IDUX" : true, + "ILCB" : true, + "IMCX" : true, + "IMPX" : true, + "INCX" : true, + "INDB" : true, + "INDX" : true, + "IOBA" : true, + "IPCX" : true, + "IPOS" : true, + "IPPB" : true, + "IPSX" : true, + "ISBX" : true, + "ISMX" : true, + "ITBL" : true, + "ITCX" : true, + "ITDX" : true, + "IUCB" : true, + "IUCX" : true, + "JACX" : true, + "JAKA" : true, + "JALX" : true, + "JAMX" : true, + "JANA" : true, + "JANX" : true, + "JASB" : true, + "JASX" : true, + "JAUX" : true, + "JBHX" : true, + "JBIX" : true, + "JBMX" : true, + "JCBX" : true, + "JCCB" : true, + "JCCX" : true, + "JCDX" : true, + "JCHX" : true, + "JCPX" : true, + "JCUX" : true, + "JDCX" : true, + "JDEX" : true, + "JGBX" : true, + "JGCX" : true, + "JGWX" : true, + "JHAX" : true, + "JHSX" : true, + "JHUX" : true, + "JIBX" : true, + "JICX" : true, + "JIDX" : true, + "JIGX" : true, + "JIKX" : true, + "JIMX" : true, + "JINX" : true, + "JIOP" : true, + "JIOX" : true, + "JIRX" : true, + "JISX" : true, + "JIVX" : true, + "JJCX" : true, + "JJHX" : true, + "JJSB" : true, + "JKAX" : true, + "JKCX" : true, + "JKDX" : true, + "JKEX" : true, + "JKHX" : true, + "JKMX" : true, + "JKRX" : true, + "JKSX" : true, + "JLCX" : true, + "JLDX" : true, + "JLNX" : true, + "JLSX" : true, + "JLWX" : true, + "JMAX" : true, + "JMBX" : true, + "JMCX" : true, + "JMDX" : true, + "JMHX" : true, + "JMMX" : true, + "JMOX" : true, + "JMPX" : true, + "JMSX" : true, + "JMYX" : true, + "JNAX" : true, + "JNDX" : true, + "JNSX" : true, + "JODX" : true, + "JONX" : true, + "JOWX" : true, + "JPAX" : true, + "JPCB" : true, + "JPCX" : true, + "JRAX" : true, + "JRKX" : true, + "JRNX" : true, + "JRSX" : true, + "JSAB" : true, + "JSAX" : true, + "JSBL" : true, + "JSBP" : true, + "JSBX" : true, + "JSCX" : true, + "JSDX" : true, + "JSEX" : true, + "JSFB" : true, + "JSHX" : true, + "JSKX" : true, + "JSMX" : true, + "JSOX" : true, + "JSRX" : true, + "JSTX" : true, + "JSVX" : true, + "JSWX" : true, + "JTIX" : true, + "JTSX" : true, + "JUCX" : true, + "JUSX" : true, + "JVCX" : true, + "KAAX" : true, + "KACE" : true, + "KACX" : true, + "KADX" : true, + "KAGX" : true, + "KAIJ" : true, + "KALX" : true, + "KAMX" : true, + "KANG" : true, + "KANX" : true, + "KARB" : true, + "KARX" : true, + "KASX" : true, + "KATX" : true, + "KAYX" : true, + "KBCX" : true, + "KBKB" : true, + "KBNX" : true, + "KBSX" : true, + "KCBL" : true, + "KCBX" : true, + "KCCB" : true, + "KCCX" : true, + "KCDX" : true, + "KCEX" : true, + "KCOB" : true, + "KCUB" : true, + "KCUX" : true, + "KDBX" : true, + "KDCB" : true, + "KDCX" : true, + "KDIX" : true, + "KDNX" : true, + "KDUX" : true, + "KEMX" : true, + "KESX" : true, + "KGBX" : true, + "KGDX" : true, + "KGRB" : true, + "KGSX" : true, + "KHAX" : true, + "KHCX" : true, + "KHDX" : true, + "KHNX" : true, + "KHUX" : true, + "KICX" : true, + "KJSB" : true, + "KJSX" : true, + "KKBK" : true, + "KKMX" : true, + "KKSX" : true, + "KLGB" : true, + "KLMX" : true, + "KMCB" : true, + "KMCX" : true, + "KMNX" : true, + "KMSX" : true, + "KNBX" : true, + "KNCX" : true, + "KNNX" : true, + "KNPX" : true, + "KNSB" : true, + "KNSX" : true, + "KOBX" : true, + "KOCX" : true, + "KODX" : true, + "KOEX" : true, + "KOLH" : true, + "KOSX" : true, + "KOTX" : true, + "KOYX" : true, + "KPCX" : true, + "KRCX" : true, + "KRDX" : true, + "KRIX" : true, + "KRMX" : true, + "KRNX" : true, + "KRTH" : true, + "KRTX" : true, + "KSBK" : true, + "KSBX" : true, + "KSCB" : true, + "KSCX" : true, + "KSMX" : true, + "KSNX" : true, + "KSTX" : true, + "KSUX" : true, + "KTBX" : true, + "KTCX" : true, + "KTDX" : true, + "KTTX" : true, + "KUBX" : true, + "KUCB" : true, + "KUCX" : true, + "KUKX" : true, + "KULX" : true, + "KUMX" : true, + "KUNS" : true, + "KURX" : true, + "KVBL" : true, + "KVCX" : true, + "KVGB" : true, + "KYDX" : true, + "LACX" : true, + "LATX" : true, + "LAVB" : true, + "LBMX" : true, + "LCBX" : true, + "LCCX" : true, + "LDCX" : true, + "LDPX" : true, + "LDRX" : true, + "LECX" : true, + "LICB" : true, + "LKBL" : true, + "LKCX" : true, + "LKHX" : true, + "LKMX" : true, + "LMNX" : true, + "LNSX" : true, + "LOKX" : true, + "LONX" : true, + "LUCX" : true, + "LULX" : true, + "MABL" : true, + "MACX" : true, + "MADX" : true, + "MAGX" : true, + "MAHB" : true, + "MAHG" : true, + "MAHX" : true, + "MAJX" : true, + "MAKX" : true, + "MALX" : true, + "MAMX" : true, + "MANX" : true, + "MAPX" : true, + "MASX" : true, + "MAUX" : true, + "MAVX" : true, + "MAWX" : true, + "MAYX" : true, + "MBCX" : true, + "MBGX" : true, + "MBLX" : true, + "MCAX" : true, + "MCBL" : true, + "MCBX" : true, + "MCCX" : true, + "MCDX" : true, + "MCLX" : true, + "MCOX" : true, + "MCSX" : true, + "MCUX" : true, + "MDBK" : true, + "MDCB" : true, + "MDCX" : true, + "MDEX" : true, + "MDGX" : true, + "MDIX" : true, + "MDMX" : true, + "MDPX" : true, + "MEDX" : true, + "MERX" : true, + "MEUX" : true, + "MFCX" : true, + "MFUX" : true, + "MGBX" : true, + "MGCB" : true, + "MGCX" : true, + "MGDX" : true, + "MGRB" : true, + "MGSX" : true, + "MGUX" : true, + "MHCB" : true, + "MHCX" : true, + "MHEX" : true, + "MHLX" : true, + "MHMX" : true, + "MHNX" : true, + "MHSX" : true, + "MHUX" : true, + "MIZX" : true, + "MJCX" : true, + "MKPB" : true, + "MKUX" : true, + "MKYX" : true, + "MLCG" : true, + "MLDX" : true, + "MMCX" : true, + "MMMX" : true, + "MNBX" : true, + "MNCX" : true, + "MNSX" : true, + "MOGX" : true, + "MOUX" : true, + "MPCX" : true, + "MPDX" : true, + "MPRX" : true, + "MRBX" : true, + "MRTX" : true, + "MSAX" : true, + "MSBL" : true, + "MSBX" : true, + "MSCI" : true, + "MSCX" : true, + "MSHQ" : true, + "MSLM" : true, + "MSNU" : true, + "MSNX" : true, + "MSOX" : true, + "MSSX" : true, + "MUBL" : true, + "MUBX" : true, + "MUCX" : true, + "MUDX" : true, + "MUNX" : true, + "MUPX" : true, + "MURX" : true, + "MUSX" : true, + "MVCB" : true, + "MVCX" : true, + "MVIX" : true, + "MYAX" : true, + "MYSX" : true, + "MZCX" : true, + "MZRX" : true, + "NABX" : true, + "NACX" : true, + "NAGX" : true, + "NAIX" : true, + "NALX" : true, + "NANX" : true, + "NASX" : true, + "NATA" : true, + "NAUX" : true, + "NAVX" : true, + "NAWX" : true, + "NBAD" : true, + "NBBX" : true, + "NBCX" : true, + "NBMX" : true, + "NBRD" : true, + "NCBL" : true, + "NCBX" : true, + "NCCX" : true, + "NCOX" : true, + "NCUB" : true, + "NCUX" : true, + "NDCB" : true, + "NDCX" : true, + "NDDX" : true, + "NDGX" : true, + "NDIX" : true, + "NESF" : true, + "NEYX" : true, + "NGBX" : true, + "NGKX" : true, + "NGNX" : true, + "NGRX" : true, + "NGSB" : true, + "NGSX" : true, + "NICB" : true, + "NIDX" : true, + "NILX" : true, + "NIRX" : true, + "NIUX" : true, + "NJBK" : true, + "NJCX" : true, + "NJGX" : true, + "NJMX" : true, + "NJSX" : true, + "NKGS" : true, + "NLGX" : true, + "NLUX" : true, + "NMCB" : true, + "NMCX" : true, + "NMGB" : true, + "NNCX" : true, + "NNSB" : true, + "NNSX" : true, + "NOBX" : true, + "NOIX" : true, + "NOSC" : true, + "NPCX" : true, + "NPKX" : true, + "NRDX" : true, + "NRMX" : true, + "NSBB" : true, + "NSBX" : true, + "NSCX" : true, + "NSGX" : true, + "NSIX" : true, + "NSJX" : true, + "NSMX" : true, + "NSPB" : true, + "NSPX" : true, + "NSRX" : true, + "NTBL" : true, + "NUBX" : true, + "NUCB" : true, + "NUCX" : true, + "NVCX" : true, + "NVNM" : true, + "NVSX" : true, + "NWCX" : true, + "ODCX" : true, + "ODGB" : true, + "OIBA" : true, + "OMCX" : true, + "ONSX" : true, + "ORBC" : true, + "ORCB" : true, + "OSMX" : true, + "PABX" : true, + "PACX" : true, + "PADX" : true, + "PALX" : true, + "PANX" : true, + "PARX" : true, + "PASX" : true, + "PATX" : true, + "PAYX" : true, + "PBGX" : true, + "PCBL" : true, + "PCBX" : true, + "PCCB" : true, + "PCCX" : true, + "PCLX" : true, + "PCMX" : true, + "PCOX" : true, + "PCPX" : true, + "PCSX" : true, + "PCTX" : true, + "PCUX" : true, + "PDBX" : true, + "PDCX" : true, + "PDNX" : true, + "PDSX" : true, + "PDUX" : true, + "PGBX" : true, + "PGCX" : true, + "PGRX" : true, + "PGTX" : true, + "PITX" : true, + "PJSB" : true, + "PKBX" : true, + "PKDX" : true, + "PKGB" : true, + "PLOX" : true, + "PLUX" : true, + "PMCB" : true, + "PMCX" : true, + "PMEC" : true, + "PMNX" : true, + "PNCX" : true, + "PNMX" : true, + "PNPX" : true, + "PNSX" : true, + "PPBX" : true, + "PPCX" : true, + "PRCX" : true, + "PREX" : true, + "PROX" : true, + "PRPX" : true, + "PRSX" : true, + "PRTH" : true, + "PSBX" : true, + "PSCX" : true, + "PSIB" : true, + "PSRX" : true, + "PSSX" : true, + "PTCX" : true, + "PTNX" : true, + "PTSX" : true, + "PUBX" : true, + "PUCB" : true, + "PUCX" : true, + "PUDX" : true, + "PUGX" : true, + "PUNB" : true, + "PUNX" : true, + "PURX" : true, + "PUSD" : true, + "PUSX" : true, + "PUUX" : true, + "PVAX" : true, + "PVCX" : true, + "PVVX" : true, + "PWUX" : true, + "PYCX" : true, + "PYTM" : true, + "QNBA" : true, + "QUCX" : true, + "RABO" : true, + "RACX" : true, + "RAEX" : true, + "RAJX" : true, + "RAKX" : true, + "RAMX" : true, + "RANX" : true, + "RATN" : true, + "RAUX" : true, + "RBBX" : true, + "RBCX" : true, + "RBIH" : true, + "RBIN" : true, + "RBIS" : true, + "RCBX" : true, + "RCCX" : true, + "RCDX" : true, + "RCMX" : true, + "RCUX" : true, + "RDCX" : true, + "RDNX" : true, + "REBX" : true, + "RECX" : true, + "REWX" : true, + "RGCX" : true, + "RGSX" : true, + "RHMX" : true, + "RJCX" : true, + "RJJX" : true, + "RJNX" : true, + "RJTX" : true, + "RKCX" : true, + "RLUX" : true, + "RMGB" : true, + "RNBX" : true, + "RNDX" : true, + "RNGX" : true, + "RNSB" : true, + "RNSX" : true, + "ROCX" : true, + "ROHX" : true, + "RPUX" : true, + "RRBP" : true, + "RRSX" : true, + "RSBL" : true, + "RSBX" : true, + "RSCB" : true, + "RSSB" : true, + "RSSX" : true, + "RSUX" : true, + "RSVX" : true, + "RUCX" : true, + "RUKX" : true, + "RUMX" : true, + "RZSX" : true, + "SABR" : true, + "SABX" : true, + "SACB" : true, + "SACX" : true, + "SADX" : true, + "SAGX" : true, + "SAHE" : true, + "SAHX" : true, + "SAIX" : true, + "SALX" : true, + "SAMX" : true, + "SANT" : true, + "SANX" : true, + "SAPX" : true, + "SARX" : true, + "SASA" : true, + "SASX" : true, + "SATX" : true, + "SAUX" : true, + "SAVX" : true, + "SAWX" : true, + "SBBJ" : true, + "SBCX" : true, + "SBHY" : true, + "SBIN" : true, + "SBKX" : true, + "SBLD" : true, + "SBLS" : true, + "SBLX" : true, + "SBMX" : true, + "SBMY" : true, + "SBNX" : true, + "SBPX" : true, + "SBSX" : true, + "SBTR" : true, + "SBUJ" : true, + "SBUX" : true, + "SCBL" : true, + "SCBX" : true, + "SCCX" : true, + "SCDX" : true, + "SCIX" : true, + "SCNX" : true, + "SCOB" : true, + "SCOX" : true, + "SCPX" : true, + "SCSX" : true, + "SCUX" : true, + "SDBX" : true, + "SDCB" : true, + "SDCE" : true, + "SDCX" : true, + "SDHX" : true, + "SDSX" : true, + "SDTC" : true, + "SDTX" : true, + "SDUX" : true, + "SEMX" : true, + "SENX" : true, + "SEUX" : true, + "SEWX" : true, + "SGCX" : true, + "SGLX" : true, + "SGSX" : true, + "SGUX" : true, + "SHAX" : true, + "SHBK" : true, + "SHBX" : true, + "SHCX" : true, + "SHEX" : true, + "SHGX" : true, + "SHIX" : true, + "SHKX" : true, + "SHMX" : true, + "SHNX" : true, + "SHOX" : true, + "SHRX" : true, + "SHSX" : true, + "SHUB" : true, + "SHUX" : true, + "SIBL" : true, + "SIBX" : true, + "SICX" : true, + "SIDB" : true, + "SIDC" : true, + "SIDX" : true, + "SIGX" : true, + "SIHX" : true, + "SIKX" : true, + "SINX" : true, + "SIRX" : true, + "SISX" : true, + "SITX" : true, + "SIWX" : true, + "SJGX" : true, + "SJSB" : true, + "SJSX" : true, + "SKCX" : true, + "SKKX" : true, + "SKNX" : true, + "SKSB" : true, + "SKUX" : true, + "SLAX" : true, + "SLCX" : true, + "SMBC" : true, + "SMBX" : true, + "SMCB" : true, + "SMCX" : true, + "SMEX" : true, + "SMMX" : true, + "SMNX" : true, + "SMPX" : true, + "SMSX" : true, + "SMTX" : true, + "SMUX" : true, + "SMVC" : true, + "SMWX" : true, + "SNAX" : true, + "SNBK" : true, + "SNBX" : true, + "SNCX" : true, + "SNDX" : true, + "SNGX" : true, + "SNKX" : true, + "SNLX" : true, + "SNPX" : true, + "SNSV" : true, + "SNSX" : true, + "SOBX" : true, + "SOGE" : true, + "SOLX" : true, + "SONX" : true, + "SPBX" : true, + "SPCB" : true, + "SPCX" : true, + "SPNX" : true, + "SPSX" : true, + "SPTX" : true, + "SRCB" : true, + "SRCX" : true, + "SREX" : true, + "SRGX" : true, + "SRHX" : true, + "SRSX" : true, + "SSBL" : true, + "SSBX" : true, + "SSDX" : true, + "SSHX" : true, + "SSKX" : true, + "SSLX" : true, + "SSNX" : true, + "SSOX" : true, + "SSSX" : true, + "SSWX" : true, + "STBP" : true, + "STCB" : true, + "STCX" : true, + "STDX" : true, + "STRX" : true, + "SUBX" : true, + "SUCX" : true, + "SUDX" : true, + "SULX" : true, + "SUMX" : true, + "SUNB" : true, + "SURX" : true, + "SURY" : true, + "SUSB" : true, + "SUSX" : true, + "SUTB" : true, + "SUVX" : true, + "SVAX" : true, + "SVBL" : true, + "SVCB" : true, + "SVCX" : true, + "SVGX" : true, + "SVMC" : true, + "SVNX" : true, + "SVOX" : true, + "SVRX" : true, + "SVSH" : true, + "SVSX" : true, + "SWMX" : true, + "SWSX" : true, + "SYNB" : true, + "TACX" : true, + "TADX" : true, + "TAMX" : true, + "TAPX" : true, + "TASX" : true, + "TBCX" : true, + "TBDX" : true, + "TBHX" : true, + "TBMX" : true, + "TBNS" : true, + "TBPX" : true, + "TBSB" : true, + "TBSX" : true, + "TBTX" : true, + "TBUX" : true, + "TCBX" : true, + "TCCX" : true, + "TCHX" : true, + "TCPX" : true, + "TCUB" : true, + "TCUX" : true, + "TDBX" : true, + "TDCB" : true, + "TDCX" : true, + "TDIX" : true, + "TDMX" : true, + "TDPX" : true, + "TDSX" : true, + "TECX" : true, + "TEHX" : true, + "TEMX" : true, + "TESX" : true, + "TETX" : true, + "TFCX" : true, + "TGBX" : true, + "TGCG" : true, + "TGCX" : true, + "TGDX" : true, + "TGMB" : true, + "TGNX" : true, + "TGUX" : true, + "THCX" : true, + "THOX" : true, + "THRS" : true, + "THRX" : true, + "THWX" : true, + "TIDX" : true, + "TIRX" : true, + "TJAX" : true, + "TJBX" : true, + "TJCX" : true, + "TJDX" : true, + "TJMX" : true, + "TJNX" : true, + "TJSB" : true, + "TKAX" : true, + "TKCX" : true, + "TKDX" : true, + "TKTX" : true, + "TKUX" : true, + "TLPX" : true, + "TMAX" : true, + "TMBL" : true, + "TMBX" : true, + "TMCX" : true, + "TMNX" : true, + "TMPX" : true, + "TMSC" : true, + "TMSX" : true, + "TMTX" : true, + "TMUX" : true, + "TNBX" : true, + "TNCX" : true, + "TNDC" : true, + "TNEX" : true, + "TNHX" : true, + "TNIX" : true, + "TNKX" : true, + "TNMX" : true, + "TNSC" : true, + "TNUX" : true, + "TOCX" : true, + "TPCX" : true, + "TPDX" : true, + "TPSX" : true, + "TPUX" : true, + "TRAX" : true, + "TRDX" : true, + "TSAB" : true, + "TSAX" : true, + "TSBX" : true, + "TSCX" : true, + "TSDX" : true, + "TSIX" : true, + "TSMX" : true, + "TSNX" : true, + "TSPX" : true, + "TSSB" : true, + "TSSX" : true, + "TSUX" : true, + "TTBX" : true, + "TTCB" : true, + "TTCX" : true, + "TTGX" : true, + "TTLX" : true, + "TTUX" : true, + "TUBX" : true, + "TUCL" : true, + "TUCX" : true, + "TUDX" : true, + "TUMX" : true, + "TUNX" : true, + "TUOX" : true, + "TUPX" : true, + "TURX" : true, + "TVBX" : true, + "TVDX" : true, + "TVPX" : true, + "TVUX" : true, + "TYCX" : true, + "UBBX" : true, + "UBGX" : true, + "UBIN" : true, + "UCBA" : true, + "UCBS" : true, + "UCBX" : true, + "UCCX" : true, + "UCDX" : true, + "UCUX" : true, + "UGBX" : true, + "UICX" : true, + "UJSX" : true, + "UJVN" : true, + "UKGX" : true, + "UMAX" : true, + "UMCX" : true, + "UMSX" : true, + "UMUX" : true, + "UNAX" : true, + "UNIX" : true, + "UNMX" : true, + "UNSX" : true, + "UOVB" : true, + "UPCB" : true, + "UPCX" : true, + "URBN" : true, + "URCX" : true, + "URDX" : true, + "URMX" : true, + "UROX" : true, + "USFB" : true, + "USNX" : true, + "UTBI" : true, + "UTBX" : true, + "UTCX" : true, + "UTGX" : true, + "UTIB" : true, + "UTKS" : true, + "UTKX" : true, + "UTZX" : true, + "UUCB" : true, + "UUCX" : true, + "VADX" : true, + "VAIX" : true, + "VANX" : true, + "VARA" : true, + "VASJ" : true, + "VASX" : true, + "VAUX" : true, + "VCAX" : true, + "VCBX" : true, + "VCCX" : true, + "VCNB" : true, + "VCOB" : true, + "VCOX" : true, + "VDCX" : true, + "VDYX" : true, + "VEDX" : true, + "VERX" : true, + "VGBX" : true, + "VHDX" : true, + "VICX" : true, + "VIDX" : true, + "VIJB" : true, + "VIJX" : true, + "VIKX" : true, + "VIMX" : true, + "VIRX" : true, + "VISX" : true, + "VJSX" : true, + "VKCX" : true, + "VKSX" : true, + "VMCX" : true, + "VMMX" : true, + "VMUX" : true, + "VNSX" : true, + "VRDX" : true, + "VSBL" : true, + "VSBX" : true, + "VSCX" : true, + "VSSX" : true, + "VSVX" : true, + "VUCX" : true, + "VVCX" : true, + "VVSB" : true, + "VYAX" : true, + "VYPX" : true, + "VYSA" : true, + "WACX" : true, + "WAIX" : true, + "WARX" : true, + "WAUX" : true, + "WBSC" : true, + "WCBX" : true, + "WDCX" : true, + "WKGX" : true, + "WNBX" : true, + "WPAC" : true, + "WRCX" : true, + "WUCX" : true, + "WZUX" : true, + "XJKG" : true, + "YADX" : true, + "YAVX" : true, + "YCBX" : true, + "YDCX" : true, + "YESB" : true, + "YLNX" : true, + "YMSX" : true, + "YNCX" : true, + "YNSX" : true, + "ZBBX" : true, + "ZBSX" : true, + "ZCBL" : true, + "ZIBX" : true, + "ZILX" : true, + "ZIMX" : true, + "ZISX" : true, + "ZLLX" : true, + "ZMMX" : true, + "ZRNB" : true, + "ZSAX" : true, + "ZSBG" : true, + "ZSBL" : true, + "ZSBX" : true, + "ZSGX" : true, + "ZSHX" : true, + "ZSJX" : true, + "ZSKX" : true, + "ZSLX" : true, + "ZSMX" : true, +} \ No newline at end of file diff --git a/src/go/generator/constants.template b/src/go/generator/constants.template new file mode 100644 index 00000000..b4bf3267 --- /dev/null +++ b/src/go/generator/constants.template @@ -0,0 +1,13 @@ +/* +This file is autogenerated from generator/main.go parsing the php constants from +Bank.php +*/ +package ifsc + +const ({{ range .Value }} + {{ . }} = "{{ . }}"{{ end }} +) + +var bankCodes = map[string]bool{ {{ range .Value }} + "{{ . }}" : true, {{ end }} +} \ No newline at end of file diff --git a/src/go/generator/main.go b/src/go/generator/main.go new file mode 100644 index 00000000..d13b58d3 --- /dev/null +++ b/src/go/generator/main.go @@ -0,0 +1,82 @@ +package main + +import ( + "errors" + "fmt" + "html/template" + "io" + "io/ioutil" + "log" + "os" + "path" + "regexp" + "runtime" +) + +type bankConstants struct { + Value []string +} + +func ExtractPhpConstant() (*bankConstants, error) { + re := regexp.MustCompile(`(?P[A-Z]{4}) =`) + _, fileN, _, ok := runtime.Caller(0) + if !ok { + return nil, errors.New("it was not possible to recover the information. Caller function error") + } + dir, _ := path.Split(fileN) + phpFilePath := path.Join(dir, "..", "..", "php", "Bank.php") + bytes, err := ioutil.ReadFile(phpFilePath) + if err != nil { + return nil, err + } + matches := re.FindAllStringSubmatch(string(bytes), -1) + var result bankConstants + for _, match := range matches { + result.Value = append(result.Value, match[1]) + } + return &result, nil +} + +func GenerateConstantsFile(writer io.Writer) error { + cwd, err := getCwd() + if err != nil { + log.Fatal(err) + } + templateFilePath := path.Join(cwd, "constants.template") + fileBytes, err := ioutil.ReadFile(templateFilePath) + if err != nil { + return err + } + constantsArr, err := ExtractPhpConstant() + if err != nil { + return err + } + t := template.Must(template.New("constants.template").Parse(string(fileBytes))) + t.Execute(writer, constantsArr) + fmt.Printf("added %d constants ", len(constantsArr.Value)) + return nil +} +func getCwd() (string, error) { + _, fileN, _, ok := runtime.Caller(0) + if !ok { + return "", errors.New("it was not possible to recover the information. Caller function error") + } + dir, _ := path.Split(fileN) + return dir, nil +} +func main() { + cwd, err := getCwd() + if err != nil { + log.Fatal(err) + } + constantsFilePath := path.Join(cwd, "..", "constants.go") + os.Remove(constantsFilePath) + file, err := os.Create(constantsFilePath) + if err != nil { + log.Fatal(err) + } + if err := GenerateConstantsFile(file); err != nil { + log.Printf("error generation constants file, err:%v", err) + } + fmt.Printf("saved to %v \n", constantsFilePath) +} diff --git a/src/go/generator/main_test.go b/src/go/generator/main_test.go new file mode 100644 index 00000000..7ef95907 --- /dev/null +++ b/src/go/generator/main_test.go @@ -0,0 +1,29 @@ +package main + +import ( + "bytes" + "io/ioutil" + "path" + "testing" +) + +func Test_verifyConstantFile(t *testing.T) { + var buff bytes.Buffer + if err := GenerateConstantsFile(&buff); err != nil { + t.Errorf("error generating constants file. error:%v", err) + } + dir, err := getCwd() + if err != nil { + t.Fatal(err) + } + constantsFilePath := path.Join(dir, "..", "constants.go") + fileData, err := ioutil.ReadFile(constantsFilePath) + if err != nil { + t.Errorf("error reading constants file, err:%v", err) + } + if buff.String() != string(fileData) { + t.Fatalf(`There is difference in constants file. Please regenerate the constants.go file and commit it.\n + Use make generate-constants`) + } + +} From a5f6f8e93e7122e4a1538e2690f9565d970c1201 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Tue, 23 Feb 2021 23:54:55 +0530 Subject: [PATCH 17/24] update ifsc client. --- go.mod | 6 +- go.sum | 4 +- src/go/client.go | 94 ++++++++++++++++----- src/go/client_test.go | 181 +++++++++++++++++++++++++++++++++-------- src/go/constants.go | 18 ++++ src/go/errors.go | 8 ++ src/go/ifsc.go | 10 +-- src/go/mocks/client.go | 16 ++++ 8 files changed, 273 insertions(+), 64 deletions(-) create mode 100644 src/go/errors.go create mode 100644 src/go/mocks/client.go diff --git a/go.mod b/go.mod index a16d4f87..426a62d1 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,7 @@ module github.com/gyanesh-m/ifsc -go 1.13 +go 1.15 -require github.com/stretchr/testify v1.6.1 +require github.com/stretchr/testify v1.7.0 + +replace github.com/gyanesh-m/ifsc => ./ diff --git a/go.sum b/go.sum index afe7890c..acb88a48 100644 --- a/go.sum +++ b/go.sum @@ -3,8 +3,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= diff --git a/src/go/client.go b/src/go/client.go index 9556f6d2..5dc144a6 100644 --- a/src/go/client.go +++ b/src/go/client.go @@ -2,59 +2,113 @@ package ifsc import ( "encoding/json" - "errors" "io/ioutil" + "log" "net/http" ) +type httpClient interface { + Get(url string) (resp *http.Response, err error) +} + +var client httpClient + +func init() { + client = http.DefaultClient +} + const API_BASE = "https://ifsc.razorpay.com" type IFSCResponse struct { - Bank string `json:"BANK"` - Branch string `json:"BRANCH"` - Address string `json:"ADDRESS"` - Contact string `json:"CONTACT"` - City string `json:"CITY"` - District string `json:"DISTRICT"` - State string `json:"STATE"` - IFSC string `json:"IFSC"` - BankCode string + Bank *string `json:"bank"` + Branch *string `json:"branch"` + Centre *string `json:"center"` + District *string `json:"district"` + State *string `json:"state"` + Address *string `json:"address"` + Contact *string `json:"contact"` + City *string `json:"city"` + IFSC *string `json:"ifsc"` + UPI *bool `json:"upi"` + RTGS *bool `json:"rtgs"` + MICR *string `json:"micr"` + NEFT *bool `json:"neft"` + SWIFT *string `json:"swift"` + IMPS *bool `json:"imps"` + BankCode *string `json:"bank_code"` } // LookUP fetches the response from ifsc api for func LookUP(ifsc string) (*IFSCResponse, error) { - var respStruct *IFSCResponse - resp, err := http.Get(API_BASE + "/" + ifsc) + var responseStruct *IFSCResponse + resp, err := client.Get(API_BASE + "/" + ifsc) if err != nil { return nil, err } status := resp.StatusCode if status == http.StatusOK { - respBytes, err := ioutil.ReadAll(resp.Body) + responseBytes, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, err } - err = json.Unmarshal(respBytes, &respStruct) + responseMap := make(map[string]interface{}) + err = json.Unmarshal(responseBytes, &responseMap) if err != nil { return nil, err } - respStruct.setBankCode() + responseStruct = NewIFSCResponse(responseMap) + responseStruct.setBankCode() } else if status == http.StatusNotFound { - return nil, errors.New("InvalidCode") + return nil, ErrInvalidCode } else { - return nil, errors.New("IFSC API returned invalid response") + return nil, ErrInvalidResponse + } + return responseStruct, nil +} +func NewIFSCResponse(input map[string]interface{}) *IFSCResponse { + response := &IFSCResponse{} + + setVal(input["BANK"], &response.Bank) + setVal(input["BRANCH"], &response.Branch) + setVal(input["CENTRE"], &response.Centre) + setVal(input["DISTRICT"], &response.District) + setVal(input["STATE"], &response.State) + setVal(input["ADDRESS"], &response.Address) + setVal(input["CONTACT"], &response.Contact) + setVal(input["CITY"], &response.City) + setVal(input["IFSC"], &response.IFSC) + setVal(input["UPI"], &response.UPI) + setVal(input["RTGS"], &response.RTGS) + setVal(input["MICR"], &response.MICR) + setVal(input["NEFT"], &response.NEFT) + setVal(input["SWIFT"], &response.SWIFT) + setVal(input["IMPS"], &response.IMPS) + + return response +} + +func setVal(input interface{}, output interface{}) { + bytes, err := json.Marshal(input) + if err != nil { + log.Printf("error marshalling input. input:%v, error:%v. Setting bytes as null", input, err) + bytes = []byte(`null`) + } + if err = json.Unmarshal(bytes, &output); err != nil { + log.Printf("error unmarshalling to output. bytes:%v, error:%v. Setting output as nil", string(bytes), err) + output = nil } - return respStruct, nil } func (ifsc *IFSCResponse) setBankCode() { - ifsc.BankCode = ifsc.GetBankCode() + ifscCode := ifsc.GetBankCode() + ifsc.BankCode = &ifscCode } func (ifsc *IFSCResponse) GetBankCode() string { - return ifsc.IFSC[0:4] + ifscCode := *ifsc.IFSC + return ifscCode[0:4] } func (ifsc *IFSCResponse) GetBankName() string { diff --git a/src/go/client_test.go b/src/go/client_test.go index e0244883..a2880e19 100644 --- a/src/go/client_test.go +++ b/src/go/client_test.go @@ -1,61 +1,172 @@ package ifsc import ( - "reflect" + "bytes" + "encoding/json" + "errors" + "io/ioutil" + "net/http" "testing" + + "github.com/gyanesh-m/ifsc/src/go/mocks" + "github.com/stretchr/testify/assert" ) -func getTestDataFixture() IFSCResponse { - return IFSCResponse{ - Bank: "Kotak Mahindra Bank", - Branch: "GURGAON", - Address: "JMD REGENT SQUARE,MEHRAULI GURGAON ROAD,OPPOSITE BRISTOL HOTEL,", - Contact: "4131000", - City: "GURGAON", - District: "GURGAON", - State: "HARYANA", - IFSC: "KKBK0000261", - BankCode: "KKBK", +func getIfscResponse() *IFSCResponse { + bytes := []byte(`{"bank": "Kotak Mahindra Bank", + "branch": "GURGAON", + "center": "GURGAON", + "district": "GURGAON", + "state": "HARYANA", + "address": "JMD REGENT SQUARE,MEHRAULI GURGAON ROAD,OPPOSITE BRISTOL HOTEL,", + "contact": "4131000", + "city": null, + "ifsc": "KKBK0000261", + "upi": true, + "rtgs": true, + "micr": "110485003", + "neft": null, + "swift": "", + "imps": true, + "bank_code": "KKBK"}`) + var response IFSCResponse + if err := json.Unmarshal(bytes, &response); err != nil { + return nil } + return &response } - func TestLookUP(t *testing.T) { + client = &mocks.Client{} type args struct { ifsc string } - ifscResp := getTestDataFixture() tests := []struct { - name string - args args - want *IFSCResponse - wantErr bool + name string + args args + IfscResponse *IFSCResponse + mockedClient func() + wantErr bool + err error }{ { "success", args{"KKBK0000261"}, - &ifscResp, + getIfscResponse(), + GetSuccessMockResponse, false, + nil, }, { - "failure", - args{"KKB0000201"}, + "failure, invalid code", + args{"KKB0000abc1"}, nil, + GetInvalidCodeMockResponse, true, + ErrInvalidCode, + }, + { + "failure, invalid Response", + args{"AIRP0000001"}, + nil, + GetFailureMockResponse, + true, + ErrInvalidResponse, + }, + { + "timeout error", + args{"abcd"}, + nil, + GetUrlError, + true, + http.ErrHandlerTimeout, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := LookUP(tt.args.ifsc) + var err error + var got *IFSCResponse + tt.mockedClient() + got, err = LookUP(tt.args.ifsc) if (err != nil) != tt.wantErr { t.Errorf("LookUP() error = %v, wantErr %v", err, tt.wantErr) return } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("LookUP() = %v, want %v", got, tt.want) + if tt.wantErr { + if !errors.Is(tt.err, err) { + t.Errorf("error is not equal. want()=%v, got()=%v", tt.err, err) + } + } else { + assert.Equal(t, tt.IfscResponse.Bank, got.Bank) + assert.Equal(t, tt.IfscResponse.Branch, got.Branch) + assert.Equal(t, tt.IfscResponse.Centre, got.Centre) + assert.Equal(t, tt.IfscResponse.District, got.District) + assert.Equal(t, tt.IfscResponse.State, got.State) + assert.Equal(t, tt.IfscResponse.Address, got.Address) + assert.Equal(t, tt.IfscResponse.Contact, got.Contact) + assert.Equal(t, tt.IfscResponse.City, got.City) + assert.Equal(t, tt.IfscResponse.IFSC, got.IFSC) + assert.Equal(t, tt.IfscResponse.UPI, got.UPI) + assert.Equal(t, tt.IfscResponse.RTGS, got.RTGS) + assert.Equal(t, tt.IfscResponse.MICR, got.MICR) + assert.Equal(t, tt.IfscResponse.NEFT, got.NEFT) + assert.Equal(t, tt.IfscResponse.SWIFT, got.SWIFT) + assert.Equal(t, tt.IfscResponse.IMPS, got.IMPS) + assert.Equal(t, tt.IfscResponse.BankCode, got.BankCode) } }) } } +func GetFailureMockResponse() { + mocks.GetFuncVar = func(url string) (resp *http.Response, err error) { + return &http.Response{ + StatusCode: http.StatusInternalServerError, + }, nil + } + +} +func GetInvalidCodeMockResponse() { + mocks.GetFuncVar = func(url string) (resp *http.Response, err error) { + return &http.Response{ + StatusCode: http.StatusNotFound, + }, nil + } + +} + +func GetUrlError() { + mocks.GetFuncVar = func(url string) (resp *http.Response, err error) { + return nil, http.ErrHandlerTimeout + } +} + +func GetSuccessMockResponse() { + mocks.GetFuncVar = func(url string) (resp *http.Response, err error) { + var successJson = `{ + "BRANCH": "GURGAON", + "CENTRE": "GURGAON", + "DISTRICT": "GURGAON", + "STATE": "HARYANA", + "ADDRESS": "JMD REGENT SQUARE,MEHRAULI GURGAON ROAD,OPPOSITE BRISTOL HOTEL,", + "CONTACT": "4131000", + "UPI": true, + "RTGS": true, + "CITY": null, + "MICR": "110485003", + "NEFT": null, + "IMPS": true, + "SWIFT": "", + "BANK": "Kotak Mahindra Bank", + "BANKCODE": "KKBK", + "IFSC": "KKBK0000261" + }` + r := ioutil.NopCloser(bytes.NewReader([]byte(successJson))) + return &http.Response{ + StatusCode: http.StatusOK, + Body: r, + }, nil + } + +} func TestIFSCResponse_GetBankName(t *testing.T) { type fields struct { @@ -91,18 +202,18 @@ func TestIFSCResponse_GetBankName(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - ifsc := &IFSCResponse{ - Bank: tt.fields.Bank, - Branch: tt.fields.Branch, - Address: tt.fields.Address, - Contact: tt.fields.Contact, - City: tt.fields.City, - District: tt.fields.District, - State: tt.fields.State, - BankCode: tt.fields.BankCode, - IFSC: tt.fields.IFSC, + expected := &IFSCResponse{ + Bank: &tt.fields.Bank, + Branch: &tt.fields.Branch, + Address: &tt.fields.Address, + Contact: &tt.fields.Contact, + City: &tt.fields.City, + District: &tt.fields.District, + State: &tt.fields.State, + BankCode: &tt.fields.BankCode, + IFSC: &tt.fields.IFSC, } - if got := ifsc.GetBankName(); got != tt.want { + if got := expected.GetBankName(); got != tt.want { t.Errorf("IFSCResponse.GetBankName() = %v, want %v", got, tt.want) } }) diff --git a/src/go/constants.go b/src/go/constants.go index 08f84805..9eaf3cab 100644 --- a/src/go/constants.go +++ b/src/go/constants.go @@ -45,6 +45,7 @@ const ( AJSX = "AJSX" AJUX = "AJUX" AKJB = "AKJB" + AKKB = "AKKB" AKMX = "AKMX" AKOX = "AKOX" ALAX = "ALAX" @@ -80,6 +81,7 @@ const ( APNX = "APNX" APRX = "APRX" APSX = "APSX" + ARBL = "ARBL" ARCX = "ARCX" ARMX = "ARMX" ARYX = "ARYX" @@ -441,6 +443,7 @@ const ( ICBL = "ICBL" ICHX = "ICHX" ICIC = "ICIC" + ICLL = "ICLL" ICMX = "ICMX" IDFB = "IDFB" IDIB = "IDIB" @@ -778,6 +781,7 @@ const ( MSSX = "MSSX" MUBL = "MUBL" MUBX = "MUBX" + MUCG = "MUCG" MUCX = "MUCX" MUDX = "MUDX" MUNX = "MUNX" @@ -1035,6 +1039,7 @@ const ( SAVX = "SAVX" SAWX = "SAWX" SBBJ = "SBBJ" + SBCR = "SBCR" SBCX = "SBCX" SBHY = "SBHY" SBIN = "SBIN" @@ -1045,6 +1050,7 @@ const ( SBMX = "SBMX" SBMY = "SBMY" SBNX = "SBNX" + SBPS = "SBPS" SBPX = "SBPX" SBSX = "SBSX" SBTR = "SBTR" @@ -1197,6 +1203,7 @@ const ( SVSX = "SVSX" SWMX = "SWMX" SWSX = "SWSX" + SXXX = "SXXX" SYNB = "SYNB" TACX = "TACX" TADX = "TADX" @@ -1270,6 +1277,7 @@ const ( TMTX = "TMTX" TMUX = "TMUX" TNBX = "TNBX" + TNCB = "TNCB" TNCX = "TNCX" TNDC = "TNDC" TNEX = "TNEX" @@ -1282,6 +1290,7 @@ const ( TOCX = "TOCX" TPCX = "TPCX" TPDX = "TPDX" + TPSC = "TPSC" TPSX = "TPSX" TPUX = "TPUX" TRAX = "TRAX" @@ -1492,6 +1501,7 @@ var bankCodes = map[string]bool{ "AJSX" : true, "AJUX" : true, "AKJB" : true, + "AKKB" : true, "AKMX" : true, "AKOX" : true, "ALAX" : true, @@ -1527,6 +1537,7 @@ var bankCodes = map[string]bool{ "APNX" : true, "APRX" : true, "APSX" : true, + "ARBL" : true, "ARCX" : true, "ARMX" : true, "ARYX" : true, @@ -1888,6 +1899,7 @@ var bankCodes = map[string]bool{ "ICBL" : true, "ICHX" : true, "ICIC" : true, + "ICLL" : true, "ICMX" : true, "IDFB" : true, "IDIB" : true, @@ -2225,6 +2237,7 @@ var bankCodes = map[string]bool{ "MSSX" : true, "MUBL" : true, "MUBX" : true, + "MUCG" : true, "MUCX" : true, "MUDX" : true, "MUNX" : true, @@ -2482,6 +2495,7 @@ var bankCodes = map[string]bool{ "SAVX" : true, "SAWX" : true, "SBBJ" : true, + "SBCR" : true, "SBCX" : true, "SBHY" : true, "SBIN" : true, @@ -2492,6 +2506,7 @@ var bankCodes = map[string]bool{ "SBMX" : true, "SBMY" : true, "SBNX" : true, + "SBPS" : true, "SBPX" : true, "SBSX" : true, "SBTR" : true, @@ -2644,6 +2659,7 @@ var bankCodes = map[string]bool{ "SVSX" : true, "SWMX" : true, "SWSX" : true, + "SXXX" : true, "SYNB" : true, "TACX" : true, "TADX" : true, @@ -2717,6 +2733,7 @@ var bankCodes = map[string]bool{ "TMTX" : true, "TMUX" : true, "TNBX" : true, + "TNCB" : true, "TNCX" : true, "TNDC" : true, "TNEX" : true, @@ -2729,6 +2746,7 @@ var bankCodes = map[string]bool{ "TOCX" : true, "TPCX" : true, "TPDX" : true, + "TPSC" : true, "TPSX" : true, "TPUX" : true, "TRAX" : true, diff --git a/src/go/errors.go b/src/go/errors.go new file mode 100644 index 00000000..0374652c --- /dev/null +++ b/src/go/errors.go @@ -0,0 +1,8 @@ +package ifsc + +import "errors" + +var ( + ErrInvalidCode = errors.New("InvalidCode") + ErrInvalidResponse = errors.New("IFSC API returned invalid response") +) diff --git a/src/go/ifsc.go b/src/go/ifsc.go index 3ef0f148..71c2e4d2 100644 --- a/src/go/ifsc.go +++ b/src/go/ifsc.go @@ -12,7 +12,7 @@ import ( "strings" ) -var ifsc map[string][]Data +var ifscMap map[string][]Data var bankNames map[string]string var sublet map[string]string var customSublets map[string]string @@ -41,9 +41,9 @@ func (d *Data) UnmarshalJSON(input []byte) error { func init() { LoadBankData() - if ifsc == nil { - if err := LoadFile("IFSC.json", &ifsc, ""); err != nil { - log.Panic(fmt.Sprintf("there is some error in IFSC.json file: %v", err)) + if ifscMap == nil { + if err := LoadFile("ifsc.json", &ifscMap, ""); err != nil { + log.Panic(fmt.Sprintf("there is some error in ifsc.json file: %v", err)) } } if sublet == nil { @@ -93,7 +93,7 @@ func Validate(code string) bool { } bankCode := strings.ToUpper(code[0:4]) branchCode := strings.ToUpper(code[5:]) - list, ok := ifsc[bankCode] + list, ok := ifscMap[bankCode] if !ok { return false } diff --git a/src/go/mocks/client.go b/src/go/mocks/client.go new file mode 100644 index 00000000..60a989de --- /dev/null +++ b/src/go/mocks/client.go @@ -0,0 +1,16 @@ +package mocks + +import "net/http" + +// Client is the mock client +type Client struct { + GetFunc func(url string) (resp *http.Response, err error) +} + +var ( + GetFuncVar func(url string) (resp *http.Response, err error) +) + +func (m *Client) Get(url string) (resp *http.Response, err error) { + return GetFuncVar(url) +} From 943ac6f71025e3d7892ced0e8a606a3c4df64932 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Tue, 23 Feb 2021 23:56:13 +0530 Subject: [PATCH 18/24] update go.mod --- go.mod | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.mod b/go.mod index 426a62d1..ad95335b 100644 --- a/go.mod +++ b/go.mod @@ -3,5 +3,3 @@ module github.com/gyanesh-m/ifsc go 1.15 require github.com/stretchr/testify v1.7.0 - -replace github.com/gyanesh-m/ifsc => ./ From fc04475294c7f82e76be694e30c0fe8fba306d29 Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Thu, 25 Feb 2021 22:01:35 +0530 Subject: [PATCH 19/24] update owner to razorpay. --- README.md | 2 +- go.mod | 2 +- src/go/client_test.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index befc68b6..44b2d964 100644 --- a/README.md +++ b/README.md @@ -294,7 +294,7 @@ code = Razorpay::IFSC::IFSC.new '...'; code.get package main import ( - ifsc "github.com/gyanesh-m/ifsc/src/go" + ifsc "github.com/razorpay/ifsc/src/go" ) // todo: change funcs not required to lower case. diff --git a/go.mod b/go.mod index ad95335b..d1b1dc47 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/gyanesh-m/ifsc +module github.com/razorpay/ifsc go 1.15 diff --git a/src/go/client_test.go b/src/go/client_test.go index a2880e19..709591c1 100644 --- a/src/go/client_test.go +++ b/src/go/client_test.go @@ -8,7 +8,7 @@ import ( "net/http" "testing" - "github.com/gyanesh-m/ifsc/src/go/mocks" + "github.com/razorpay/ifsc/src/go/mocks" "github.com/stretchr/testify/assert" ) From 6cbbb2c86e7b0d55e0a5ffd4dcf3cacb5d13b0bb Mon Sep 17 00:00:00 2001 From: Gyanesh Malhotra Date: Thu, 25 Feb 2021 22:06:36 +0530 Subject: [PATCH 20/24] typo IFSC.json --- src/go/ifsc.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/go/ifsc.go b/src/go/ifsc.go index 71c2e4d2..952569aa 100644 --- a/src/go/ifsc.go +++ b/src/go/ifsc.go @@ -42,8 +42,8 @@ func (d *Data) UnmarshalJSON(input []byte) error { func init() { LoadBankData() if ifscMap == nil { - if err := LoadFile("ifsc.json", &ifscMap, ""); err != nil { - log.Panic(fmt.Sprintf("there is some error in ifsc.json file: %v", err)) + if err := LoadFile("IFSC.json", &ifscMap, ""); err != nil { + log.Panic(fmt.Sprintf("there is some error in IFSC.json file: %v", err)) } } if sublet == nil { From b2fdce5d132529d48464a0041e4242e6e100c596 Mon Sep 17 00:00:00 2001 From: Nemo Date: Thu, 12 Aug 2021 12:41:09 +0530 Subject: [PATCH 21/24] [go] Update constants --- src/go/constants.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/go/constants.go b/src/go/constants.go index 9eaf3cab..b3c8c640 100644 --- a/src/go/constants.go +++ b/src/go/constants.go @@ -563,6 +563,7 @@ const ( JSVX = "JSVX" JSWX = "JSWX" JTIX = "JTIX" + JTSC = "JTSC" JTSX = "JTSX" JUCX = "JUCX" JUSX = "JUSX" @@ -975,12 +976,14 @@ const ( RBCX = "RBCX" RBIH = "RBIH" RBIN = "RBIN" + RBIP = "RBIP" RBIS = "RBIS" RCBX = "RCBX" RCCX = "RCCX" RCDX = "RCDX" RCMX = "RCMX" RCUX = "RCUX" + RDCB = "RDCB" RDCX = "RDCX" RDNX = "RDNX" REBX = "REBX" @@ -1076,6 +1079,7 @@ const ( SDTC = "SDTC" SDTX = "SDTX" SDUX = "SDUX" + SECB = "SECB" SEMX = "SEMX" SENX = "SENX" SEUX = "SEUX" @@ -1272,6 +1276,7 @@ const ( TMCX = "TMCX" TMNX = "TMNX" TMPX = "TMPX" + TMSB = "TMSB" TMSC = "TMSC" TMSX = "TMSX" TMTX = "TMTX" @@ -2019,6 +2024,7 @@ var bankCodes = map[string]bool{ "JSVX" : true, "JSWX" : true, "JTIX" : true, + "JTSC" : true, "JTSX" : true, "JUCX" : true, "JUSX" : true, @@ -2431,12 +2437,14 @@ var bankCodes = map[string]bool{ "RBCX" : true, "RBIH" : true, "RBIN" : true, + "RBIP" : true, "RBIS" : true, "RCBX" : true, "RCCX" : true, "RCDX" : true, "RCMX" : true, "RCUX" : true, + "RDCB" : true, "RDCX" : true, "RDNX" : true, "REBX" : true, @@ -2532,6 +2540,7 @@ var bankCodes = map[string]bool{ "SDTC" : true, "SDTX" : true, "SDUX" : true, + "SECB" : true, "SEMX" : true, "SENX" : true, "SEUX" : true, @@ -2728,6 +2737,7 @@ var bankCodes = map[string]bool{ "TMCX" : true, "TMNX" : true, "TMPX" : true, + "TMSB" : true, "TMSC" : true, "TMSX" : true, "TMTX" : true, From d3a0339d4ca122fe70236089ef31c35aa8732cca Mon Sep 17 00:00:00 2001 From: Nemo Date: Thu, 12 Aug 2021 12:45:10 +0530 Subject: [PATCH 22/24] [go/deps] Add dependabot for golang --- .github/dependabot.yml | 54 +++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 27a80647..d958fac8 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,26 +1,32 @@ version: 2 updates: -- package-ecosystem: bundler - directory: "/" - schedule: - interval: daily - time: "04:00" - timezone: Asia/Calcutta -- package-ecosystem: bundler - directory: "/scraper" - schedule: - interval: daily - time: "04:00" - timezone: Asia/Calcutta -- package-ecosystem: mix - directory: "/" - schedule: - interval: daily - time: "04:00" - timezone: Asia/Calcutta -- package-ecosystem: composer - directory: "/" - schedule: - interval: daily - time: "04:00" - timezone: Asia/Calcutta + - package-ecosystem: bundler + directory: "/" + schedule: + interval: weekly + time: "04:00" + timezone: Asia/Calcutta + - package-ecosystem: bundler + directory: "/scraper" + schedule: + interval: weekly + time: "04:00" + timezone: Asia/Calcutta + - package-ecosystem: mix + directory: "/" + schedule: + interval: weekly + time: "04:00" + timezone: Asia/Calcutta + - package-ecosystem: composer + directory: "/" + schedule: + interval: weekly + time: "04:00" + timezone: Asia/Calcutta + - package-ecosystem: gomod + directory: "/" + schedule: + interval: weekly + time: "04:00" + timezone: Asia/Calcutta From 6d0a2e5498964f089ca3a181a58193c5ca17a7bc Mon Sep 17 00:00:00 2001 From: Nemo Date: Thu, 12 Aug 2021 12:49:18 +0530 Subject: [PATCH 23/24] [ci] Add golang tests --- .github/workflows/tests.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cd645a81..bafbccf4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -43,3 +43,16 @@ jobs: bundler-cache: true - run: bundle install - run: bundle exec rake + go: + strategy: + matrix: + go: ["^1.16.7", "^1.15.15"] + name: Go + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + bundler-cache: true + - run: make test From eb2d8092fd0864dc73130d82da1e6c1f0e229de4 Mon Sep 17 00:00:00 2001 From: Nemo Date: Thu, 12 Aug 2021 12:54:24 +0530 Subject: [PATCH 24/24] [go] Fix tests --- .github/workflows/tests.yml | 2 +- Makefile | 6 +++--- src/go/ifsc_test.go | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bafbccf4..522f2b0f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -55,4 +55,4 @@ jobs: with: go-version: ${{ matrix.go }} bundler-cache: true - - run: make test + - run: make go-test diff --git a/Makefile b/Makefile index 58bab3db..4970a816 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -.PHONY: test -test: +go-test: go test -tags=unit -timeout 2m -coverprofile=coverage.cov -v ./... + generate-constants: - go run ./src/go/generator/main.go \ No newline at end of file + go run ./src/go/generator/main.go diff --git a/src/go/ifsc_test.go b/src/go/ifsc_test.go index 60ebdc1b..95858037 100644 --- a/src/go/ifsc_test.go +++ b/src/go/ifsc_test.go @@ -39,7 +39,6 @@ func TestGetBankName_CustomSublet_Success(t *testing.T) { func getCustomSubletFixture() map[string]string { return map[string]string{ "KSCB0006001": "Tumkur District Central Bank", - "VIJB0SSB001": "Shimsha Sahakara Bank Niyamitha", "WBSC0KPCB01": "Kolkata Police Co-operative Bank", "YESB0ADB002": "Amravati District Central Co-operative Bank", }