text:
export NIKON, OHARA, HOYA, SCHOTT, ARCHER, ARTON, BIREFRINGENT, CDGM, CORNING, HERAEUS, HIKARI, INFRARED, ISUZU, LIGHTPATH, LZOS, MISC, RPO, TOPAS, UMICORE, ZEON

include("NIKON.jl")
include("OHARA.jl")
include("HOYA.jl")
include("SCHOTT.jl")
include("ARCHER.jl")
include("ARTON.jl")
include("BIREFRINGENT.jl")
include("CDGM.jl")
include("CORNING.jl")
include("HERAEUS.jl")
include("HIKARI.jl")
include("INFRARED.jl")
include("ISUZU.jl")
include("LIGHTPATH.jl")
include("LZOS.jl")
include("MISC.jl")
include("RPO.jl")
include("TOPAS.jl")
include("UMICORE.jl")
include("ZEON.jl")

const AGF_GLASS_NAMES = ["NIKON.SF9", "NIKON.J_KZFH7", "NIKON.BAF3", "NIKON.E_SK16", "NIKON.SF10", "NIKON.E_LASFH2", "NIKON.P_LAK13S", "NIKON.SK16", "NIKON.E_BASF2", "NIKON.J_FKH1", "NIKON.LASF01", "NIKON.J_SF6HS", "NIKON.NIFS_S", "NIKON.E_SF1", "NIKON.J_BK7", "NIKON.E_SK15", "NIKON.J_F3", "NIKON.PK1", "NIKON.E_SK2", "NIKON.LF5", "NIKON.J_BAK4", "NIKON.J_SF14", "NIKON.J_BASF6", "NIKON.J_FK5", "NIKON.J_FK01A", "NIKON.E_LAF02", "NIKON.J_LAF09", "NIKON.E_FKH1", "NIKON.BASF4", "NIKON.E_LAF010", "NIKON.J_SF4", "NIKON.J_SF11", "NIKON.E_BAF4", "NIKON.J_BAF11", "NIKON.E_SK5", "NIKON.J_SF6", "NIKON.J_LAF02", "NIKON.J_LASFH17HS", "NIKON.E_LASF09", "NIKON.Q_FKH1S", "NIKON.BAF10", "NIKON.J_PSKH4", "NIKON.LAF2", "NIKON.J_LAK04", "NIKON.E_LAK04", "NIKON.Q_FK01S", "NIKON.E_LAF7", "NIKON.Q_SK15S", "NIKON.J_LASFH16", "NIKON.SSK2", "NIKON.J_LASF05HS", "NIKON.J_LAF3", "NIKON.J_BK7A", "NIKON.E_SFH2", "NIKON.J_LAK09", "NIKON.E_LASF015", "NIKON.NIFS_A", "NIKON.SSK1", "NIKON.E_SF6", "NIKON.Q_SF6S", "NIKON.E_BAK1", "NIKON.E_LASF016", "NIKON.J_SK10", "NIKON.E_LAF01", "NIKON.E_SK4", "NIKON.J_LASF021HS", "NIKON.E_LF7", "NIKON.BASF7", "NIKON.J_LF7", "NIKON.SK9", "NIKON.F2", "NIKON.J_LAK13", "NIKON.Q_LASFH18S", "NIKON.Q_LASFH58S", "NIKON.P_FKH2S", "NIKON.E_FKH2", "NIKON.E_LASFH9", "NIKON.NICF_V", "NIKON.Q_LASFH19S", "NIKON.Q_LASF03S", "NIKON.J_KF6", "NIKON.J_LAF7", "NIKON.J_LAF01", "NIKON.J_LASFH13HS", "NIKON.BAF8", "NIKON.P_LASF03S", "NIKON.J_F1", "NIKON.J_SK2", "NIKON.E_LLF1", "NIKON.P_LASFH11S", "NIKON.J_LAK7R", "NIKON.J_LASF09", "NIKON.J_LAK02", "NIKON.SF4", "NIKON.E_LF5", "NIKON.J_LASFH21", "NIKON.J_KZFH4", "NIKON.E_LASFH13", "NIKON.LAF7", "NIKON.NIFS_U", "NIKON.J_KZFH1", "NIKON.J_LASF016", "NIKON.E_LASF017", "NIKON.E_LASF013", "NIKON.J_BASF8", "NIKON.SK2", "NIKON.J_LASF08A", "NIKON.E_LAF09", "NIKON.J_LASFH9", "NIKON.NIFS_V", "NIKON.E_LAF04", "NIKON.SF03", "NIKON.LAK09", "NIKON.E_SF15", "NIKON.J_LAF04", "NIKON.J_F2", "NIKON.E_SF03", "NIKON.E_LASFH15", "NIKON.J_BASF2", "NIKON.LAK011", "NIKON._7054", "NIKON.Q_LASFH12S", "NIKON.BAK4", "NIKON.E_LASF021", "NIKON.E_LASFH6", "NIKON.J_BAF12", "NIKON.PK2", "NIKON.F3", "NIKON.LAF11", "NIKON.E_SSK1", "NIKON.E_LAK9", "NIKON.LLF6", "NIKON.E_LAKH1", "NIKON.LASF010", "NIKON.J_SSK5", "NIKON.J_KZFH6", "NIKON.E_BAF3", "NIKON.E_SF13", "NIKON.J_LASFH22", "NIKON.LASF02", "NIKON.J_LAF05", "NIKON.J_F8", "NIKON.J_SSK1", "NIKON.E_LAF3", "NIKON.J_LASF09A", "NIKON.E_LASF01", "NIKON.Q_LAK53S", "NIKON.LAK7", "NIKON.E_LAK8", "NIKON.BAF4", "NIKON.E_F2", "NIKON.E_LASF010", "NIKON.E_LAK14", "NIKON.J_PKH1", "NIKON.E_LAF016", "NIKON.J_LASF015", "NIKON.J_LF5", "NIKON.E_LAK12", "NIKON.SF6", "NIKON.J_BAK1", "NIKON.P_SK12S", "NIKON.Q_SK12S", "NIKON.E_SK14", "NIKON.J_LASF08", "NIKON.J_SF8", "NIKON.E_KZFH1", "NIKON.SSK8", "NIKON.LAK04", "NIKON.Q_PSKH4S", "NIKON.J_SF2", "NIKON.E_F8", "NIKON.SFS3", "NIKON.E_SFH1", "NIKON.SF2", "NIKON.E_LAFH3", "NIKON.J_LASFH24HS", "NIKON.J_SF10", "NIKON.Q_LAF010S", "NIKON.J_LASF010", "NIKON.J_LASFH13", "NIKON.E_F16", "NIKON.E_SF8", "NIKON.J_K3", "NIKON.SK4", "NIKON.Q_LASFPH2S", "NIKON.E_BASF6", "NIKON.J_BAF8", "NIKON.J_LAK06", "NIKON.E_BAF12", "NIKON.LLF2", "NIKON.J_LASF013", "NIKON.J_LASFH9A", "NIKON.P_LASFH18S", "NIKON.SF1", "NIKON.E_SF7", "NIKON.BAF11", "NIKON.Q_LAK13S", "NIKON.J_BALF4", "NIKON.J_LAFH3", "NIKON.Q_SK5S", "NIKON.LF6", "NIKON.LAF3", "NIKON.E_LASF02", "NIKON.J_BAK2", "NIKON.E_SF11", "NIKON.J_FK01", "NIKON.J_SK5", "NIKON.E_LASF08", "NIKON.E_LASF014", "NIKON._5859", "NIKON.BASF12", "NIKON.E_BASF7", "NIKON.E_LASKH2", "NIKON.KZFH1", "NIKON.J_BAF3", "NIKON.E_K3", "NIKON.E_FK5", "NIKON.J_F16", "NIKON.J_LASF017", "NIKON.LF7", "NIKON.E_SK11", "NIKON.J_LLF6", "NIKON.Q_PSKH1S", "NIKON.E_LAFH2", "NIKON.E_SFS3", "NIKON.J_LASF01", "NIKON.J_LAK9", "NIKON.J_SF1", "NIKON.P_LASFH12S", "NIKON.NICF_U", "NIKON.LASFH6", "NIKON.F1", "NIKON.Q_LASFH59S", "NIKON.E_LAK7", "NIKON.J_BAF10", "NIKON.J_LASF05", "NIKON.J_LASFH6", "NIKON.E_LAK09", "NIKON.J_BASF7", "NIKON.E_LAK13", "NIKON.J_SFH2", "NIKON.J_FKH2", "NIKON.E_LAK02", "NIKON.F5", "NIKON.E_SK10", "NIKON.J_LAK12", "NIKON.J_SK16", "NIKON.J_LLF2", "NIKON.Q_SK52S", "NIKON.J_BAF4", "NIKON.E_PKH1", "NIKON.Q_FK01AS", "NIKON.LLF1", "NIKON.E_SF14", "NIKON.J_LAFH3HS", "NIKON.F8", "NIKON.E_FK01", "NIKON.J_SF5", "NIKON.J_LF6", "NIKON.J_F5", "NIKON.P_SK5S", "NIKON.J_LASFH17", "NIKON.LAK12", "NIKON.Q_LASFH11S", "NIKON.E_K5", "NIKON.SF5", "NIKON.E_LASF03", "NIKON._4786", "NIKON.J_LASF02", "NIKON.KZFS4", "NIKON.J_LASF03", "NIKON.E_LAK18", "NIKON.E_PSKH1", "NIKON.J_SF13", "NIKON.E_SSK5", "NIKON.E_F1", "NIKON.J_SK4", "NIKON.J_SK15", "NIKON.J_PSKH1", "NIKON.J_PSK02", "NIKON.J_LAF016", "NIKON.KZFH2", "NIKON.E_BK7", "NIKON.E_BAK2", "NIKON.E_SF10", "NIKON.LAF9", "NIKON.SF12", "NIKON.J_SF03HS", "NIKON.J_SK12", "NIKON.J_LAK01", "NIKON.E_SK12", "NIKON.J_LAF016HS", "NIKON.E_LF6", "NIKON.J_LASKH2", "NIKON.J_SF7", "NIKON.J_LASFH2", "NIKON.J_LASF021", "NIKON.Q_PSKH2S", "NIKON.Q_SK55S", "NIKON.E_LAK011", "NIKON.E_SF4", "NIKON.SK18", "NIKON.J_SK14", "NIKON.E_LASFH17", "NIKON.P_LASFH19S", "NIKON.BASF2", "NIKON.E_BAF11", "NIKON.E_SSK8", "NIKON.E_BASF8", "NIKON.J_LASFH24", "NIKON.SF8", "NIKON.Q_LAK52S", "NIKON.P_LAF010S", "NIKON.J_SF15", "NIKON.J_LAK7", "NIKON.SK15", "NIKON.BAK2", "NIKON.SF7", "NIKON.J_LAK8", "NIKON.E_LLF2", "NIKON.NICF_A", "NIKON.E_BALF4", "NIKON.J_SFS3", "NIKON.SF15", "NIKON._5742", "NIKON.E_LAF11", "NIKON.E_PSK02", "NIKON.J_SF03", "NIKON.E_LAK06", "NIKON.J_LAK18", "NIKON.J_LAK14", "NIKON.J_LAK10", "NIKON.E_LASF05", "NIKON.J_LAK011", "NIKON.J_SK11", "NIKON.E_BAF10", "NIKON.KF6", "NIKON.BASF8", "NIKON.E_LAK01", "NIKON.LAF09", "NIKON.E_LAF2", "NIKON.SF11", "NIKON.LAK9", "NIKON.SF14", "NIKON.J_LASF014", "NIKON.E_LAF05", "NIKON.E_BAF8", "NIKON.J_LLF1", "NIKON.J_LASFH15", "NIKON.Q_FKH2S", "NIKON.E_PSK03", "NIKON.Q_LAFPH1S", "NIKON.E_LLF6", "NIKON.J_SSK8", "NIKON.J_LAF010", "NIKON.J_LASFH23", "NIKON.J_SK18", "NIKON.Q_LASFPH3S", "NIKON.E_F3", "NIKON.P_FK01S", "NIKON.P_PSKH1S", "NIKON.E_LAK10", "NIKON.E_BAK4", "NIKON.J_PSK03", "NIKON.E_LASF04", "NIKON.E_KF6", "NIKON.E_SK18", "NIKON.J_SFH1", "NIKON.E_SF2", "NIKON.K5", "NIKON._5165", "NIKON.E_F5", "NIKON.BASF6", "NIKON.E_LAF9", "NIKON.J_K5", "NIKON.SF13", "NIKON.E_SF5", "NIKON.J_LAF2", "NIKON.K3", "OHARA.S_TIM28", "OHARA.S_LAH98", "OHARA.S_LAL58", "OHARA.S_TIH53W", "OHARA.S_LAH65V", "OHARA.S_NPH7", "OHARA.S_BAL42", "OHARA.S_TIH14", "OHARA.S_NBH56", "OHARA.S_LAM3", "OHARA.S_LAL9", "OHARA.L_BAL35P", "OHARA.S_LAM54", "OHARA.S_LAH63", "OHARA.S_LAH95", "OHARA.L_LAH53", "OHARA.S_NSL36", "OHARA.S_LAL12", "OHARA.S_BAL3", "OHARA.S_TIM5", "OHARA.S_TIM35", "OHARA.S_FPM2", "OHARA.S_BSM28", "OHARA.S_NPH1W", "OHARA.L_BSL7", "OHARA.S_TIH13", "OHARA.S_TIL2", "OHARA.S_LAL8", "OHARA.S_LAH52", "OHARA.S_PHM52Q", "OHARA.L_LAH84", "OHARA.S_LAH79", "OHARA.S_LAH71", "OHARA.S_TIL27", "OHARA.S_LAH92", "OHARA.S_BSM15", "OHARA.S_LAL54", "OHARA.S_LAM60", "OHARA.S_BAM4", "OHARA.S_LAL61", "OHARA.S_BAH10", "OHARA.S_LAH60MQ", "OHARA.S_BAL41", "OHARA.S_BSM10", "OHARA.S_BSM81", "OHARA.S_BSM25", "OHARA.S_LAL20", "OHARA.S_NBH8", "OHARA.S_TIH57", "OHARA.S_TIM25", "OHARA.S_LAH60", "OHARA.S_LAM66", "OHARA.S_LAM2", "OHARA.S_TIH11", "OHARA.L_LAM60", "OHARA.S_NBH53V", "OHARA.S_BAH28", "OHARA.S_BSM2", "OHARA.S_FPM3", "OHARA.S_LAH53", "OHARA.S_LAL59", "OHARA.S_NPH5", "OHARA.S_LAH63Q", "OHARA.S_LAL21", "OHARA.L_LAM69", "OHARA.S_LAM55", "OHARA.S_LAH58", "OHARA.S_LAH88", "OHARA.S_TIH53", "OHARA.S_LAL7", "OHARA.S_LAL13", "OHARA.SK_1300", "OHARA.S_LAL19", "OHARA.S_LAH53V", "OHARA.L_BAL42P", "OHARA.S_TIL6", "OHARA.S_NBH52V", "OHARA.S_NBH51", "OHARA.S_FTM16", "OHARA.L_LAL13", "OHARA.S_LAH99", "OHARA.S_NBH57", "OHARA.L_TIM28", "OHARA.L_BAL43", "OHARA.SK_1310", "OHARA.S_BSM16", "OHARA.S_BAL14", "OHARA.S_TIH23", "OHARA.S_BAL12", "OHARA.S_TIM22", "OHARA.L_LAH85V", "OHARA.S_PHM52", "OHARA.S_NPH4", "OHARA.S_LAH93", "OHARA.S_BSM18", "OHARA.S_LAH64", "OHARA.S_FPM4", "OHARA.S_BAH27", "OHARA.S_LAH59", "OHARA.S_BAL2", "OHARA.S_FPL51", "OHARA.S_PHM53", "OHARA.S_TIM2", "OHARA.S_BAL35", "OHARA.S_LAH65VS", "OHARA.S_LAL54Q", "OHARA.S_LAH97", "OHARA.S_LAM73", "OHARA.L_LAH94", "OHARA.S_LAL12Q", "OHARA.S_NBH5", "OHARA.S_NBH55", "OHARA.S_NPH1", "OHARA.S_LAL10", "OHARA.S_TIH4", "OHARA.S_LAH66", "OHARA.S_TIH18", "OHARA.S_TIH1", "OHARA.S_BSM14", "OHARA.S_LAH55VS", "OHARA.S_TIL1", "OHARA.S_NBH58", "OHARA.L_BAL35", "OHARA.S_NSL3", "OHARA.S_TIH3", "OHARA.L_TIM28P", "OHARA.L_LAH91", "OHARA.S_TIM8", "OHARA.S_LAH55V", "OHARA.S_LAM61", "OHARA.S_TIM27", "OHARA.S_LAL7Q", "OHARA.S_LAH96", "OHARA.S_BAL35R", "OHARA.S_LAL18", "OHARA.S_BSM71", "OHARA.S_LAH52Q", "OHARA.S_NPH3", "OHARA.S_BAH11", "OHARA.L_LAH90", "OHARA.S_FPL53", "OHARA.S_BSL7R", "OHARA.S_FPL55", "OHARA.S_LAH60V", "OHARA.S_NPH2", "OHARA.S_FPM5", "OHARA.S_FSL5", "OHARA.S_LAH89", "OHARA.S_LAL14", "OHARA.S_LAM7", "OHARA.S_BAM12", "OHARA.S_TIH6", "OHARA.S_TIH10", "OHARA.S_TIL25", "OHARA.L_BAL42", "OHARA.L_LAL15", "OHARA.S_TIL26", "OHARA.S_BSL7", "OHARA.S_LAH51", "OHARA.S_NBM51", "HOYA.LBC3N", "HOYA.MC_FCD500_20", "HOYA.BACD14", "HOYA.NBFD12", "HOYA.M_TAF105", "HOYA.M_TAFD51", "HOYA.M_LAC130", "HOYA.TAC8", "HOYA.MP_TAC80_60", "HOYA.TAFD55", "HOYA.BSC7", "HOYA.E_FD1", "HOYA.MC_NBF1", "HOYA.TAFD40_W", "HOYA.FDS18", "HOYA.TAFD37A", "HOYA.MP_BACD5N", "HOYA.M_BACD15", "HOYA.FCD705", "HOYA.E_FD80", "HOYA.E_FDS2", "HOYA.MC_TAF31_15", "HOYA.FF8", "HOYA.FCD515", "HOYA.MC_NBFD130", "HOYA.FCD500", "HOYA.M_BACD5N", "HOYA.MP_FCD500_20", "HOYA.E_FDS1_W", "HOYA.M_FDS1", "HOYA.M_BACD12", "HOYA.BAF10", "HOYA.MP_BACD15", "HOYA.TAF3", "HOYA.LAF2", "HOYA.FCD100", "HOYA.E_LAF7", "HOYA.NBFD3", "HOYA.M_LAC8", "HOYA.MP_NBFD130", "HOYA.PCD4", "HOYA.BACD2", "HOYA.MP_PCD51_70", "HOYA.M_FD80", "HOYA.TAC2", "HOYA.MC_PCD51_70", "HOYA.M_FDS910", "HOYA.TAC6", "HOYA.TAFD5G", "HOYA.MC_PCD4_40", "HOYA.LAC12", "HOYA.LAC9", "HOYA.E_FD10", "HOYA.FDS18_W", "HOYA.PCD40", "HOYA.FDS24_W", "HOYA.TAFD65", "HOYA.FCD1B", "HOYA.M_LAF81", "HOYA.MC_TAF1", "HOYA.E_C3", "HOYA.M_TAF31", "HOYA.LACL60", "HOYA.MC_TAF105", "HOYA.TAFD5F", "HOYA.BACD4", "HOYA.TAF3D", "HOYA.MP_TAFD405", "HOYA.E_FD8", "HOYA.FDS24", "HOYA.M_PCD51", "HOYA.NBFD13", "HOYA.FD60_W", "HOYA.MP_TAFD305", "HOYA.BACED5", "HOYA.MC_NBFD135", "HOYA.E_FD13", "HOYA.NBFD30", "HOYA.LAC14", "HOYA.FF5", "HOYA.M_TAFD305", "HOYA.M_NBF1", "HOYA.E_FD7", "HOYA.E_ADF50", "HOYA.MP_FCD1_M20", "HOYA.MC_TAFD307", "HOYA.BACD16", "HOYA.PCD51", "HOYA.E_BACED20", "HOYA.MP_TAFD307", "HOYA.E_FD1L", "HOYA.TAC4", "HOYA.FDS20_W", "HOYA.BAFD7", "HOYA.M_TAFD405", "HOYA.E_FD15L", "HOYA.M_TAF401", "HOYA.E_FEL1", "HOYA.E_FEL6", "HOYA.MC_BACD12", "HOYA.FDS90", "HOYA.MP_BACD12", "HOYA.FD60", "HOYA.TAFD37", "HOYA.TAFD30", "HOYA.E_F2", "HOYA.FCD1", "HOYA.MP_NBF1", "HOYA.BAC4", "HOYA.FCD505", "HOYA.MC_FD80", "HOYA.NBF1", "HOYA.M_FCD1", "HOYA.M_PCD4", "HOYA.NBFD25", "HOYA.E_F8", "HOYA.E_ADF10", "HOYA.M_TAFD307", "HOYA.LAC8", "HOYA.MP_FDS2", "HOYA.BACD15", "HOYA.FCD600", "HOYA.M_TAF1", "HOYA.E_FDS3", "HOYA.LAC7", "HOYA.NBFD11", "HOYA.FD225", "HOYA.BAF11", "HOYA.LAF3", "HOYA.MP_LAC130", "HOYA.BACD5", "HOYA.MP_LAC8_30", "HOYA.MC_TAFD51_50", "HOYA.M_NBFD130", "HOYA.MC_TAF401", "HOYA.M_TAC60", "HOYA.MC_LAC130", "HOYA.M_TAC80", "HOYA.MP_NBFD10_20", "HOYA.FCD10A", "HOYA.MP_FDS910_50", "HOYA.E_FD15", "HOYA.M_FDS2", "HOYA.E_FD4L", "HOYA.E_FDS1", "HOYA.E_FD5", "HOYA.NBFD15_W", "HOYA.MP_LAF81", "HOYA.FDS90_SG", "HOYA.MP_FD80", "HOYA.MC_TAF101_100", "HOYA.E_FL5", "HOYA.E_FL6", "HOYA.TAFD25", "HOYA.MP_LAC14_80", "HOYA.TAF4", "HOYA.BAFD8", "HOYA.MC_FDS2", "HOYA.M_PCD55AR", "HOYA.E_F1", "HOYA.TAFD55_W", "HOYA.MC_FDS910_50", "HOYA.E_BACD10", "HOYA.E_FEL2", "HOYA.TAFD33", "HOYA.MC_FCD1_M20", "HOYA.TAF2", "HOYA.FC5", "HOYA.MC_BACD5N", "HOYA.FD140", "HOYA.MP_FDS1", "HOYA.MP_TAFD51_50", "HOYA.BACD18", "HOYA.E_FD10L", "HOYA.NBFD29", "HOYA.BACD11", "HOYA.MP_PCD55AR", "HOYA.TAF1", "HOYA.TAFD45", "HOYA.M_FCD500", "HOYA.MP_TAF101_100", "HOYA.FD270", "HOYA.TAFD35", "HOYA.NBFD10", "HOYA.NBFD32", "HOYA.LAC13", "HOYA.NBFD15", "HOYA.MP_TAF31_15", "HOYA.FDS16_W", "HOYA.M_LAC14", "HOYA.E_CF6", "HOYA.MP_TAC60_90", "HOYA.FCD10", "HOYA.E_FD2", "HOYA.E_BAF8", "HOYA.E_FD4", "HOYA.MC_TAFD305", "HOYA.M_TAF101", "HOYA.TAF5", "HOYA.E_F3", "HOYA.FD110", "HOYA.LAC10", "HOYA.MP_TAF401", "HOYA.MP_TAF105", "HOYA.M_NBFD10", "HOYA.E_F5", "HOYA.TAFD32", "HOYA.MP_PCD4_40", "HOYA.FDS90_P_", "HOYA.TAFD40", "SCHOTT.SF2", "SCHOTT.N_LAK8", "SCHOTT.N_LASF46B", "SCHOTT.N_SF5", "SCHOTT.N_LASF46", "SCHOTT.N_FK58", "SCHOTT.N_FK51", "SCHOTT.N_LAF32", "SCHOTT.N_BALF5", "SCHOTT.N_BASF2", "SCHOTT.N_LAK12", "SCHOTT.N_BAK4", "SCHOTT.SF56A", "SCHOTT.N_PK51", "SCHOTT.SF10", "SCHOTT.SF66", "SCHOTT.N_LAF33", "SCHOTT.N_SF57HTultra", "SCHOTT.N_LAF36", "SCHOTT.N_KF9", "SCHOTT.N_LAK22", "SCHOTT.P_BK7", "SCHOTT.P_SF68", "SCHOTT.LITHOTEC_CAF2", "SCHOTT.N_SK4", "SCHOTT.N_LAK14", "SCHOTT.N_BAF51", "SCHOTT.N_KZFS8", "SCHOTT.N_SK2", "SCHOTT.N_F2", "SCHOTT.P_LASF51", "SCHOTT.N_BK7HTi", "SCHOTT.P_SK57Q1", "SCHOTT.SF4", "SCHOTT.SF57HTultra", "SCHOTT.P_PK53", "SCHOTT.N_BAF4", "SCHOTT.N_SF6Q2", "SCHOTT.N_LASF55", "SCHOTT.N_KZFS5", "SCHOTT.N_LAF3", "SCHOTT.LAK9G15", "SCHOTT.N_PSK53A", "SCHOTT.N_LAK10", "SCHOTT.N_SF1", "SCHOTT.N_LAK7", "SCHOTT.SF1", "SCHOTT.LASFN9", "SCHOTT.N_SSK5", "SCHOTT.N_SK15", "SCHOTT.N_SF6", "SCHOTT.SFL57", "SCHOTT.KZFS12", "SCHOTT.K7", "SCHOTT.N_LASF45HT", "SCHOTT.N_SF6HTultra", "SCHOTT.N_FK5", "SCHOTT.N_LASF31", "SCHOTT.BAFN6", "SCHOTT.LF5", "SCHOTT.N_LAF21", "SCHOTT.N_SF6HT", "SCHOTT.P_SK60", "SCHOTT.N_LAK9", "SCHOTT.P_LASF50", "SCHOTT.N_SF2", "SCHOTT.LAFN7", "SCHOTT.N_SF57HT", "SCHOTT.N_SK5", "SCHOTT.P_SK58A", "SCHOTT.P_LASF47", "SCHOTT.LASF35", "SCHOTT.N_PSK53", "SCHOTT.N_BAF52", "SCHOTT.N_KZFS4", "SCHOTT.N_LAF2", "SCHOTT.N_LASF9HT", "SCHOTT.SF15", "SCHOTT.N_SK16", "SCHOTT.LF5HTi", "SCHOTT.N_SF66", "SCHOTT.N_SF57", "SCHOTT.N_SSK2", "SCHOTT.N_LAK33A", "SCHOTT.N_LASF46A", "SCHOTT.BK7G18", "SCHOTT.N_KZFS11", "SCHOTT.N_LAK34", "SCHOTT.N_SF64", "SCHOTT.N_LASF45", "SCHOTT.N_PK52A", "SCHOTT.F2G12", "SCHOTT.N_SF8", "SCHOTT.SF57", "SCHOTT.N_LASF9", "SCHOTT.LF5G19", "SCHOTT.KZFSN4", "SCHOTT.N_LASF44", "SCHOTT.SF11", "SCHOTT.P_LAK35", "SCHOTT.N_SF11", "SCHOTT.N_BAK1", "SCHOTT.F5", "SCHOTT.LLF1HTi", "SCHOTT.N_BK7HT", "SCHOTT.N_KZFS4HT", "SCHOTT.N_SF4", "SCHOTT.N_LASF31A", "SCHOTT.N_ZK7A", "SCHOTT.SF14", "SCHOTT.P_LAF37", "SCHOTT.N_LAF34", "SCHOTT.SF6G05", "SCHOTT.LITHOSIL_Q", "SCHOTT.SF3", "SCHOTT.N_LAK21", "SCHOTT.N_SF15", "SCHOTT.N_SF56", "SCHOTT.D263TECO", "SCHOTT.N_BAF10", "SCHOTT.P_SF69", "SCHOTT.F2HT", "SCHOTT.P_SF67", "SCHOTT.N_SK10", "SCHOTT.N_SF19", "SCHOTT.N_BAK2", "SCHOTT.P_SK57", "SCHOTT.LLF1", "SCHOTT.N_ZK7", "SCHOTT.N_BAK4HT", "SCHOTT.N_KZFS2", "SCHOTT.N_PSK3", "SCHOTT.N_LAK33B", "SCHOTT.N_BAF3", "SCHOTT.K5G20", "SCHOTT.N_BK7", "SCHOTT.N_K5", "SCHOTT.SF6", "SCHOTT.SFL6", "SCHOTT.LAKL12", "SCHOTT.N_BASF64", "SCHOTT.N_FK51A", "SCHOTT.N_SK14", "SCHOTT.N_LAF35", "SCHOTT.N_SSK8", "SCHOTT.N_SF10", "SCHOTT.N_SF14", "SCHOTT.N_LAF7", "SCHOTT.N_BK10", "SCHOTT.N_LASF43", "SCHOTT.FK5HTi", "SCHOTT.N_SK2HT", "SCHOTT.N_LASF40", "SCHOTT.SF5", "SCHOTT.N_SK11", "SCHOTT.FK3", "SCHOTT.N_LAK28", "SCHOTT.AF32ECO", "SCHOTT.LF5G15", "SCHOTT.F2", "SCHOTT.K10", "SCHOTT.N_LASF41", "SCHOTT.P_SF8", "SCHOTT.N_BALF4", "ARCHER.S_LAL12M", "ARCHER.S_BSL7M", "ARCHER.S_LAL13M", "ARCHER.S_NSL3M", "ARCHER.S_BAL41M", "ARCHER.S_LAM60M", "ARCHER.S_BAL3M", "ARCHER.L_BAL35M", "ARCHER.S_LAH60M", "ARCHER.S_TIM2M", "ARCHER.S_FSL5M", "ARCHER.L_LAM69M", "ARCHER.K_VC79M", "ARCHER.S_BAL42M", "ARCHER.S_LAH53M", "ARTON.F5023", "ARTON.DX4900", "ARTON.D4531F", "ARTON.D4532", "ARTON.D4540", "ARTON.F4520", "BIREFRINGENT.CDSE", "BIREFRINGENT.BATIO3", "BIREFRINGENT.SRMOO4_E", "BIREFRINGENT.AGASS3_E", "BIREFRINGENT.TAS", "BIREFRINGENT.CALCITE", "BIREFRINGENT.CAWO4_E", "BIREFRINGENT.MGF2_E", "BIREFRINGENT.TE", "BIREFRINGENT.MGF2", "BIREFRINGENT.CUGAS2_E", "BIREFRINGENT.CAWO4", "BIREFRINGENT.CDS", "BIREFRINGENT.LIYF4_E", "BIREFRINGENT.QUARTZ_E", "BIREFRINGENT.TEO2_E", "BIREFRINGENT.BATIO3_E", "BIREFRINGENT.LIYF4", "BIREFRINGENT.AGGAS2", "BIREFRINGENT.CDSE_E", "BIREFRINGENT.ADP_E", "BIREFRINGENT.TE_E", "BIREFRINGENT.LAF3", "BIREFRINGENT.LAF3_E", "BIREFRINGENT.TEO2", "BIREFRINGENT.BBO", "BIREFRINGENT.BBO_E", "BIREFRINGENT.KDP", "BIREFRINGENT.ZNGEP2_E", "BIREFRINGENT.LINBO3_E", "BIREFRINGENT.ALN_E", "BIREFRINGENT.CAMOO4", "BIREFRINGENT.CDS_E", "BIREFRINGENT.AL2O3_E", "BIREFRINGENT.TAS_E", "BIREFRINGENT.CAMOO4_E", "BIREFRINGENT.PBMOO4_E", "BIREFRINGENT.KDP_E", "BIREFRINGENT.YVO4", "BIREFRINGENT.ZNO_E", "BIREFRINGENT.AL2O3", "BIREFRINGENT.PBMOO4", "BIREFRINGENT.CUGAS2", "BIREFRINGENT.SRMOO4", "BIREFRINGENT.ADP", "BIREFRINGENT.ALN", "BIREFRINGENT.BEO", "BIREFRINGENT.AGGASE2", "BIREFRINGENT.ZNGEP2", "BIREFRINGENT.CDGEAS2", "BIREFRINGENT.AGGAS2_E", "BIREFRINGENT.CALCITE_E", "BIREFRINGENT.CDGEAS2_E", "BIREFRINGENT.LIO3", "BIREFRINGENT.ZNO", "BIREFRINGENT.AGASS3", "BIREFRINGENT.LIO3_E", "BIREFRINGENT.LINBO3", "BIREFRINGENT.QUARTZ", "BIREFRINGENT.BEO_E", "BIREFRINGENT.AGGASE2_E", "BIREFRINGENT.YVO4_E", "CDGM.H_BAK4", "CDGM.H_LAK51", "CDGM.BAF3", "CDGM.D_LAF82L", "CDGM.H_ZF1", "CDGM.H_ZK14", "CDGM.H_FK61", "CDGM.H_ZLAF52", "CDGM.H_K10", "CDGM.H_ZK9A", "CDGM.ZF12", "CDGM.F4", "CDGM.QF50", "CDGM.H_ZF3", "CDGM.ZF13", "CDGM.H_ZK1", "CDGM.H_LAF50A", "CDGM.BAF2", "CDGM.H_ZF12", "CDGM.H_ZK11", "CDGM.D_LAK70", "CDGM.H_K50", "CDGM.D_ZK3L", "CDGM.D_ZF10", "CDGM.H_LAF62", "CDGM.H_ZPK1", "CDGM.ZBAF1", "CDGM.D_ZLAF52LA", "CDGM.H_LAK67", "CDGM.H_LAFL5", "CDGM.ZF5", "CDGM.ZF11", "CDGM.ZF1", "CDGM.H_LAF53", "CDGM.H_QK3", "CDGM.H_LAK8A", "CDGM.ZF3", "CDGM.H_ZF11", "CDGM.H_F13", "CDGM.H_QF56", "CDGM.H_LAK59", "CDGM.H_K6", "CDGM.F2", "CDGM.H_QF6", "CDGM.H_ZLAF66", "CDGM.H_ZBAF1", "CDGM.H_BAK6", "CDGM.H_LAK54", "CDGM.BAF8", "CDGM.H_BAK5", "CDGM.H_LAK10", "CDGM.H_ZK20", "CDGM.H_K7", "CDGM.H_LAK52", "CDGM.H_ZK3", "CDGM.H_BAK2", "CDGM.H_QK1", "CDGM.QF5", "CDGM.H_QK3L", "CDGM.H_K9L", "CDGM.H_ZBAF21", "CDGM.H_LAK50A", "CDGM.H_ZK5", "CDGM.F3", "CDGM.H_ZF50", "CDGM.H_ZK10L", "CDGM.QF6", "CDGM.H_F2", "CDGM.F6", "CDGM.H_ZF7LA", "CDGM.H_QF3", "CDGM.ZF4", "CDGM.D_K9L", "CDGM.H_ZLAF50B", "CDGM.H_ZBAF52", "CDGM.H_BAK7", "CDGM.QF3", "CDGM.H_ZK2", "CDGM.H_LAF2", "CDGM.H_ZBAF20", "CDGM.BAF4", "CDGM.H_ZK50", "CDGM.H_LAF6LA", "CDGM.H_ZBAF16", "CDGM.H_ZBAF50", "CDGM.H_K11", "CDGM.ZF2", "CDGM.H_LAF4", "CDGM.ZBAF4", "CDGM.H_ZK6", "CDGM.H_LAF52", "CDGM.F7", "CDGM.H_LAK7", "CDGM.H_QF14", "CDGM.H_QF50", "CDGM.H_ZK10", "CDGM.BAF7", "CDGM.F13", "CDGM.H_ZF5", "CDGM.H_ZK8", "CDGM.H_LAK2", "CDGM.TF3", "CDGM.D_LAK6", "CDGM.H_LAK12", "CDGM.QF8", "CDGM.H_KF6", "CDGM.H_F51", "CDGM.H_ZK4", "CDGM.F1", "CDGM.F5", "CDGM.H_ZF10", "CDGM.BAF6", "CDGM.D_ZK3", "CDGM.H_ZLAF76", "CDGM.H_LAK53A", "CDGM.H_ZLAF55A", "CDGM.H_LAK11", "CDGM.H_ZBAF5", "CDGM.K4A", "CDGM.H_QF1", "CDGM.H_ZF4", "CDGM.D_ZK2", "CDGM.H_ZBAF3", "CDGM.H_LAK4L", "CDGM.ZF8", "CDGM.H_LAK6A", "CDGM.H_ZF52A", "CDGM.BAF5", "CDGM.H_ZLAF3", "CDGM.H_QF8", "CDGM.ZBAF2", "CDGM.H_ZF13", "CDGM.ZF52", "CDGM.H_LAK61", "CDGM.H_K5", "CDGM.ZF10", "CDGM.H_ZF2", "CDGM.H_ZLAF78", "CDGM.H_BAK3", "CDGM.H_ZK7", "CDGM.H_ZLAF53A", "CDGM.H_ZLAF51", "CDGM.H_LAF10L", "CDGM.H_ZF6", "CDGM.ZF50", "CDGM.ZF51", "CDGM.H_F4", "CDGM.H_K51", "CDGM.H_LAF3A", "CDGM.H_BAK1", "CDGM.ZF6", "CDGM.H_LAK5A", "CDGM.ZF7L", "CDGM.D_LAF79", "CDGM.QF1", "CDGM.H_ZK21", "CDGM.H_ZLAF56A", "CDGM.H_LAF54", "CDGM.H_BAK8", "CDGM.H_LAK3", "CDGM.H_LAF7", "CDGM.H_F1", "CORNING.C0550", "CORNING.D85_25", "CORNING.B11_60", "CORNING.C23_57", "CORNING.C97_55", "CORNING.C89_31", "CORNING.C57_57", "CORNING.C58_51", "CORNING.D88_47", "CORNING.B18_65", "CORNING.D01_41", "CORNING.C90_55", "CORNING.C23_53", "CORNING.D28_28", "CORNING.C48_46", "CORNING.E37_30", "CORNING.C48_34", "CORNING.C39_56", "CORNING.C04_64", "CORNING.B48_46", "CORNING.E03_47", "CORNING.B58_72", "CORNING.D34_26", "CORNING.A87_70", "CORNING.B16_64", "CORNING.C78_56", "CORNING.E00_46", "CORNING.B42_73", "CORNING.C13_58", "CORNING.B69_56", "CORNING.B72_57", "CORNING.C51_39", "CORNING.C07_57", "CORNING.C24_47", "CORNING.A86_82", "CORNING.B29_52", "CORNING.C51_56", "CORNING.B18_60", "CORNING.B64_61", "CORNING.B81_41", "CORNING.C17_55", "CORNING.B19_61", "CORNING.C13_56", "CORNING.B96_67", "CORNING.D23_38", "CORNING.D40_28", "CORNING.C52_58", "CORNING.C99_30", "CORNING.D17_29", "CORNING.C06_44", "CORNING.C05_50", "CORNING.C67_33", "CORNING.B29_77", "CORNING.D34_51", "CORNING.C37_35", "CORNING.C38_42", "CORNING.C90_50", "CORNING.C67_48", "CORNING.C55_40", "CORNING.E65_40", "CORNING.C20_36", "CORNING.C72_32", "CORNING.C79_80", "CORNING.B23_59", "CORNING.C04_38", "CORNING.C23_58", "CORNING.B58_53", "CORNING.C41_60", "CORNING.C97_56", "CORNING.C42_58", "CORNING.B48_53", "CORNING.D62_27", "CORNING.D20_50", "CORNING.D13_54", "CORNING.C09_59", "CORNING.D96_43", "CORNING.D56_27", "CORNING.C26_36", "CORNING.B39_59", "CORNING.D17_48", "CORNING.B10_63", "CORNING.E78_38", "CORNING.A88_66", "CORNING.B52_67", "CORNING.B89_61", "CORNING.C97_36", "CORNING.D85_26", "CORNING.A63_65", "CORNING.C70_47", "CORNING.D44_45", "CORNING.E05_25", "CORNING.C13_44", "CORNING.C16_44", "CORNING.A87_84", "CORNING.C20_60", "HERAEUS.HERASIL", "HERAEUS.HOMOSIL", "HERAEUS.SUPRASIL", "HERAEUS.INFRASIL", "HERAEUS.HOQ", "HIKARI.SF9", "HIKARI.BAF3", "HIKARI.E_SK16", "HIKARI.SF10", "HIKARI.E_LASFH2", "HIKARI.P_LAK13S", "HIKARI.SK16", "HIKARI.E_BASF2", "HIKARI.J_FKH1", "HIKARI.LASF01", "HIKARI.E_SF1", "HIKARI.J_BK7", "HIKARI.E_SK15", "HIKARI.J_F3", "HIKARI.PK1", "HIKARI.E_SK2", "HIKARI.LF5", "HIKARI.J_BAK4", "HIKARI.J_SF14", "HIKARI.J_BASF6", "HIKARI.J_FK5", "HIKARI.E_LAF02", "HIKARI.J_LAF09", "HIKARI.BASF4", "HIKARI.E_FKH1", "HIKARI.E_LAF010", "HIKARI.J_SF4", "HIKARI.J_SF11", "HIKARI.E_BAF4", "HIKARI.J_BAF11", "HIKARI.E_SK5", "HIKARI.J_LAF02", "HIKARI.J_SF6", "HIKARI.E_LASF09", "HIKARI.BAF10", "HIKARI.LAF2", "HIKARI.J_LAK04", "HIKARI.E_LAF7", "HIKARI.Q_FK01S", "HIKARI.E_LAK04", "HIKARI.SSK2", "HIKARI.J_LAF3", "HIKARI.E_SFH2", "HIKARI.J_LAK09", "HIKARI.E_LASF015", "HIKARI.SSK1", "HIKARI.E_SF6", "HIKARI.Q_SF6S", "HIKARI.E_BAK1", "HIKARI.E_LASF016", "HIKARI.J_SK10", "HIKARI.E_LAF01", "HIKARI.E_SK4", "HIKARI.E_LF7", "HIKARI.BASF7", "HIKARI.J_LF7", "HIKARI.SK9", "HIKARI.F2", "HIKARI.J_LAK13", "HIKARI.Q_LASFH18S", "HIKARI.P_FKH2S", "HIKARI.E_FKH2", "HIKARI.E_LASFH9", "HIKARI.Q_LASFH19S", "HIKARI.Q_LASF03S", "HIKARI.J_LAF01", "HIKARI.J_LAF7", "HIKARI.J_KF6", "HIKARI.BAF8", "HIKARI.P_LASF03S", "HIKARI.J_F1", "HIKARI.J_SK2", "HIKARI.E_LLF1", "HIKARI.P_LASFH11S", "HIKARI.J_LASF09", "HIKARI.J_LAK02", "HIKARI.SF4", "HIKARI.E_LF5", "HIKARI.E_LASFH13", "HIKARI.LAF7", "HIKARI.J_KZFH1", "HIKARI.J_LASF016", "HIKARI.E_LASF017", "HIKARI.E_LASF013", "HIKARI.J_BASF8", "HIKARI.SK2", "HIKARI.E_LAF09", "HIKARI.J_LASFH9", "HIKARI.E_LAF04", "HIKARI.SF03", "HIKARI.LAK09", "HIKARI.E_SF15", "HIKARI.J_LAF04", "HIKARI.J_F2", "HIKARI.E_SF03", "HIKARI.E_LASFH15", "HIKARI.J_BASF2", "HIKARI.LAK011", "HIKARI.Q_LASFH12S", "HIKARI.BAK4", "HIKARI.E_LASF021", "HIKARI.E_LASFH6", "HIKARI.J_BAF12", "HIKARI.PK2", "HIKARI.F3", "HIKARI.LAF11", "HIKARI.E_SSK1", "HIKARI.E_LAK9", "HIKARI.LLF6", "HIKARI.E_LAKH1", "HIKARI.LASF010", "HIKARI.J_SSK5", "HIKARI.E_BAF3", "HIKARI.E_SF13", "HIKARI.LASF02", "HIKARI.J_LAF05", "HIKARI.J_F8", "HIKARI.J_SSK1", "HIKARI.E_LAF3", "HIKARI.E_LASF01", "HIKARI.LAK7", "HIKARI.E_LAK8", "HIKARI.BAF4", "HIKARI.E_F2", "HIKARI.E_LASF010", "HIKARI.E_LAK14", "HIKARI.J_PKH1", "HIKARI.E_LAF016", "HIKARI.J_LASF015", "HIKARI.J_LF5", "HIKARI.E_LAK12", "HIKARI.SF6", "HIKARI.J_BAK1", "HIKARI.P_SK12S", "HIKARI.Q_SK12S", "HIKARI.E_SK14", "HIKARI.J_LASF08", "HIKARI.J_SF8", "HIKARI.E_KZFH1", "HIKARI.SSK8", "HIKARI.LAK04", "HIKARI.J_SF2", "HIKARI.E_F8", "HIKARI.SFS3", "HIKARI.E_SFH1", "HIKARI.SF2", "HIKARI.E_LAFH3", "HIKARI.J_SF10", "HIKARI.Q_LAF010S", "HIKARI.J_LASFH13", "HIKARI.J_LASF010", "HIKARI.E_F16", "HIKARI.E_SF8", "HIKARI.J_K3", "HIKARI.SK4", "HIKARI.E_BASF6", "HIKARI.J_BAF8", "HIKARI.J_LAK06", "HIKARI.E_BAF12", "HIKARI.LLF2", "HIKARI.J_LASF013", "HIKARI.P_LASFH18S", "HIKARI.SF1", "HIKARI.E_SF7", "HIKARI.BAF11", "HIKARI.Q_LAK13S", "HIKARI.J_BALF4", "HIKARI.Q_SK5S", "HIKARI.J_LAFH3", "HIKARI.LAF3", "HIKARI.LF6", "HIKARI.E_LASF02", "HIKARI.J_BAK2", "HIKARI.E_SF11", "HIKARI.J_FK01", "HIKARI.J_SK5", "HIKARI.E_LASF08", "HIKARI.E_LASF014", "HIKARI.BASF12", "HIKARI.E_BASF7", "HIKARI.E_LASKH2", "HIKARI.KZFH1", "HIKARI.J_BAF3", "HIKARI.E_K3", "HIKARI.E_FK5", "HIKARI.J_LASF017", "HIKARI.J_F16", "HIKARI.LF7", "HIKARI.E_SK11", "HIKARI.J_LLF6", "HIKARI.Q_PSKH1S", "HIKARI.E_LAFH2", "HIKARI.E_SFS3", "HIKARI.J_LASF01", "HIKARI.J_LAK9", "HIKARI.J_SF1", "HIKARI.P_LASFH12S", "HIKARI.LASFH6", "HIKARI.F1", "HIKARI.E_LAK7", "HIKARI.J_LASFH6", "HIKARI.J_LASF05", "HIKARI.J_BAF10", "HIKARI.E_LAK09", "HIKARI.J_BASF7", "HIKARI.E_LAK13", "HIKARI.J_SFH2", "HIKARI.J_FKH2", "HIKARI.E_LAK02", "HIKARI.F5", "HIKARI.E_SK10", "HIKARI.J_LAK12", "HIKARI.J_LLF2", "HIKARI.J_SK16", "HIKARI.J_BAF4", "HIKARI.E_PKH1", "HIKARI.LLF1", "HIKARI.E_SF14", "HIKARI.F8", "HIKARI.E_FK01", "HIKARI.J_SF5", "HIKARI.J_F5", "HIKARI.J_LF6", "HIKARI.P_SK5S", "HIKARI.J_LASFH17", "HIKARI.LAK12", "HIKARI.Q_LASFH11S", "HIKARI.E_K5", "HIKARI.SF5", "HIKARI.E_LASF03", "HIKARI.J_LASF02", "HIKARI.KZFS4", "HIKARI.J_LASF03", "HIKARI.E_LAK18", "HIKARI.E_PSKH1", "HIKARI.J_SF13", "HIKARI.E_SSK5", "HIKARI.E_F1", "HIKARI.J_SK4", "HIKARI.J_SK15", "HIKARI.J_PSKH1", "HIKARI.J_PSK02", "HIKARI.J_LAF016", "HIKARI.KZFH2", "HIKARI.E_BK7", "HIKARI.E_BAK2", "HIKARI.E_SF10", "HIKARI.LAF9", "HIKARI.SF12", "HIKARI.J_SK12", "HIKARI.J_LAK01", "HIKARI.E_SK12", "HIKARI.E_LF6", "HIKARI.J_LASKH2", "HIKARI.J_SF7", "HIKARI.J_LASFH2", "HIKARI.J_LASF021", "HIKARI.Q_PSKH2S", "HIKARI.E_LAK011", "HIKARI.E_SF4", "HIKARI.SK18", "HIKARI.J_SK14", "HIKARI.BASF2", "HIKARI.E_LASFH17", "HIKARI.P_LASFH19S", "HIKARI.E_BAF11", "HIKARI.E_SSK8", "HIKARI.E_BASF8", "HIKARI.SF8", "HIKARI.Q_LAK52S", "HIKARI.P_LAF010S", "HIKARI.J_LAK7", "HIKARI.J_SF15", "HIKARI.SK15", "HIKARI.BAK2", "HIKARI.SF7", "HIKARI.J_LAK8", "HIKARI.E_LLF2", "HIKARI.E_BALF4", "HIKARI.J_SFS3", "HIKARI.SF15", "HIKARI.E_LAF11", "HIKARI.E_PSK02", "HIKARI.J_SF03", "HIKARI.E_LAK06", "HIKARI.J_LAK18", "HIKARI.J_LAK14", "HIKARI.J_LAK10", "HIKARI.E_LASF05", "HIKARI.J_LAK011", "HIKARI.J_SK11", "HIKARI.BASF8", "HIKARI.E_BAF10", "HIKARI.KF6", "HIKARI.E_LAK01", "HIKARI.LAF09", "HIKARI.E_LAF2", "HIKARI.LAK9", "HIKARI.SF11", "HIKARI.SF14", "HIKARI.J_LASF014", "HIKARI.E_LAF05", "HIKARI.E_BAF8", "HIKARI.J_LLF1", "HIKARI.J_LASFH15", "HIKARI.Q_FKH2S", "HIKARI.E_PSK03", "HIKARI.E_LLF6", "HIKARI.J_SSK8", "HIKARI.J_LAF010", "HIKARI.J_SK18", "HIKARI.E_F3", "HIKARI.P_FK01S", "HIKARI.P_PSKH1S", "HIKARI.E_LAK10", "HIKARI.E_BAK4", "HIKARI.J_PSK03", "HIKARI.E_LASF04", "HIKARI.E_KF6", "HIKARI.E_SK18", "HIKARI.J_SFH1", "HIKARI.E_SF2", "HIKARI.K5", "HIKARI.E_F5", "HIKARI.BASF6", "HIKARI.E_LAF9", "HIKARI.J_K5", "HIKARI.SF13", "HIKARI.E_SF5", "HIKARI.J_LAF2", "HIKARI.K3", "INFRARED.CDSE", "INFRARED.GERMANIUM", "INFRARED.ZNSE", "INFRARED.IRG100", "INFRARED.NACL", "INFRARED.CALCITE", "INFRARED.F_SILICA", "INFRARED.PBF2", "INFRARED.MGF2", "INFRARED.IRG3", "INFRARED.CDTE", "INFRARED.GEO2", "INFRARED.KCL", "INFRARED.GE_LONG", "INFRARED.AMTIR1", "INFRARED.GAAS", "INFRARED.TI_1173", "INFRARED.BAF2", "INFRARED.IRG2", "INFRARED.ZBLAN", "INFRARED.IRG11", "INFRARED.MGO", "INFRARED.IRG9", "INFRARED.SPINEL", "INFRARED.IRG7", "INFRARED.LIF", "INFRARED.AMTIR3", "INFRARED.CAF2", "INFRARED.GE_OLD", "INFRARED.ZNS_IR", "INFRARED.CLRTR_OLD", "INFRARED.CLEARTRAN", "INFRARED.KBR", "INFRARED.ALON", "INFRARED.SILICON", "INFRARED.ALN", "INFRARED.BEO", "INFRARED.SRTIO3", "INFRARED.KRS5", "INFRARED.ZBLA", "INFRARED.ZNS_BROAD", "INFRARED.IRG15", "INFRARED.CSBR", "INFRARED.AGCL", "INFRARED.SRF2", "INFRARED.ZNS_VIS", "INFRARED.IRGN6", "INFRARED.SAPPHIRE", "ISUZU.IIR_SF1", "LIGHTPATH.D_ZK3M", "LIGHTPATH.C0550", "LIGHTPATH.BD2", "LIGHTPATH.D_ZLAF52LA_M", "LIGHTPATH.ECO550", "LIGHTPATH.NICHIA_MELT1", "LIGHTPATH.BD1", "LIGHTPATH.ECO550_E", "LIGHTPATH.ECO550M", "LIGHTPATH.PBH71", "LIGHTPATH.D_ZLAF52LAM", "LZOS.LZ_BF16", "LZOS.LZ_CTK8", "LZOS.LZ_TK12", "LZOS.LZ_K100", "LZOS.LZ_NEWGLASS", "LZOS.LZ_LK5", "LZOS.LZ_TF5", "LZOS.LZ_TF10", "LZOS.LZ_TF1", "LZOS.LZ_LF9", "LZOS.LZ_TK2", "LZOS.LZ_LK6", "LZOS.LZ_BK10", "LZOS.LZ_LK7", "LZOS.LZ_KF6", "LZOS.LZ_TK17", "LZOS.LZ_CTK9", "LZOS.LZ_CTK12", "LZOS.LZ_F13", "LZOS.LZ_TBF10", "LZOS.LZ_OK4", "LZOS.LZ_BF1", "LZOS.LZ_BF7", "LZOS.LZ_LF5", "LZOS.LZ_BF21", "LZOS.LZ_CTK19", "LZOS.LZ_BF25", "LZOS.LZ_F6", "LZOS.LZ_K8", "LZOS.LZ_TK20", "LZOS.LZ_TF4", "LZOS.LZ_F4", "LZOS.LZ_BF28", "LZOS.LZ_TK9", "LZOS.LZ_TK21", "LZOS.LZ_KF7", "LZOS.LZ_TF8", "LZOS.LZ_BK8", "LZOS.LZ_CTK3", "LZOS.LZ_F1", "LZOS.LZ_BK6", "LZOS.LZ_TF7", "LZOS.LZ_TF3", "LZOS.LZ_TK16", "LZOS.LZ_BF24", "LZOS.LZ_LF7", "LZOS.LZ_BF8", "LZOS.LZ_TK14", "LZOS.LZ_BF11", "LZOS.LZ_BK4", "LZOS.LZ_TF2", "LZOS.LZ_F8", "LZOS.LZ_OF1", "LZOS.LZ_LK3", "LZOS.LZ_TK23", "MISC.SEAWATER", "MISC.POLYCARB", "MISC.LAF3", "MISC.BASF5", "MISC.CAF2", "MISC.BASF55", "MISC.TEO2", "MISC.TYPEA", "MISC.KDP", "MISC.WATER", "MISC.F_SILICA", "MISC.SAN", "MISC.CR39", "MISC.CDS", "MISC.SILICA", "MISC.PYREX", "MISC.ACRYLIC", "MISC.PMMA", "MISC.QUARTZ", "MISC.COC", "MISC.POLYSTYR", "MISC.N15", "MISC.VACUUM", "RPO.EKPC", "RPO.H_ZLAF55_MOLD", "RPO.BSM16C_MOLD", "RPO.IG6", "RPO.D_LAK6_MOLD", "RPO.N_LAF2_MOLD", "RPO.S_NPH1_MOLD", "RPO.IG5", "RPO.H_ZLAF53_MOLD", "RPO.D_LAK70_MOLD", "RPO.H_ZLAF52_MOLD", "RPO.S_LAL12_MOLD", "RPO.E_FDS1_MOLD", "RPO.D_LAK70", "RPO.IG2", "RPO.L_TIM28_MOLD", "RPO.SF57_MOLD", "RPO.IG4", "RPO.D_ZLAF52A_MOLD", "RPO.H_ZLAF56_MOLD", "RPO.S_LAH60_MOLD", "RPO.K_CSK120_MOLD", "RPO.N_SK5_MOLD", "RPO.K_VC79_MOLD", "RPO.N_BK7_MOLD", "RPO.S_LAL18_MOLD", "RPO.H_LAK54_MOLD", "RPO.N_FK51_MOLD", "RPO.P_SK57_MOLD", "RPO.L_LAM60_MOLD", "RPO.S_LAL13_MOLD", "RPO.TAF3_MOLD", "RPO.D_K59_MOLD", "RPO.TAC4_MOLD", "RPO.VC78", "RPO.K_VC89_MOLD", "RPO.FDS9_MOLD", "RPO.N_FK5_MOLD", "RPO.TAF1_MOLD", "RPO.VC78_MOLD", "RPO.H_ZLAF50B_MOLD", "RPO.BACD14_MOLD", "RPO.N_LAK22_MOLD", "TOPAS._5013X16", "TOPAS._6015S_04", "TOPAS._5013LS_01", "UMICORE.GASIR1", "UMICORE.GASIR2", "ZEON.E48R", "ZEON._480R", "ZEON._330R"]
const AGF_GLASSES = [NIKON.SF9, NIKON.J_KZFH7, NIKON.BAF3, NIKON.E_SK16, NIKON.SF10, NIKON.E_LASFH2, NIKON.P_LAK13S, NIKON.SK16, NIKON.E_BASF2, NIKON.J_FKH1, NIKON.LASF01, NIKON.J_SF6HS, NIKON.NIFS_S, NIKON.E_SF1, NIKON.J_BK7, NIKON.E_SK15, NIKON.J_F3, NIKON.PK1, NIKON.E_SK2, NIKON.LF5, NIKON.J_BAK4, NIKON.J_SF14, NIKON.J_BASF6, NIKON.J_FK5, NIKON.J_FK01A, NIKON.E_LAF02, NIKON.J_LAF09, NIKON.E_FKH1, NIKON.BASF4, NIKON.E_LAF010, NIKON.J_SF4, NIKON.J_SF11, NIKON.E_BAF4, NIKON.J_BAF11, NIKON.E_SK5, NIKON.J_SF6, NIKON.J_LAF02, NIKON.J_LASFH17HS, NIKON.E_LASF09, NIKON.Q_FKH1S, NIKON.BAF10, NIKON.J_PSKH4, NIKON.LAF2, NIKON.J_LAK04, NIKON.E_LAK04, NIKON.Q_FK01S, NIKON.E_LAF7, NIKON.Q_SK15S, NIKON.J_LASFH16, NIKON.SSK2, NIKON.J_LASF05HS, NIKON.J_LAF3, NIKON.J_BK7A, NIKON.E_SFH2, NIKON.J_LAK09, NIKON.E_LASF015, NIKON.NIFS_A, NIKON.SSK1, NIKON.E_SF6, NIKON.Q_SF6S, NIKON.E_BAK1, NIKON.E_LASF016, NIKON.J_SK10, NIKON.E_LAF01, NIKON.E_SK4, NIKON.J_LASF021HS, NIKON.E_LF7, NIKON.BASF7, NIKON.J_LF7, NIKON.SK9, NIKON.F2, NIKON.J_LAK13, NIKON.Q_LASFH18S, NIKON.Q_LASFH58S, NIKON.P_FKH2S, NIKON.E_FKH2, NIKON.E_LASFH9, NIKON.NICF_V, NIKON.Q_LASFH19S, NIKON.Q_LASF03S, NIKON.J_KF6, NIKON.J_LAF7, NIKON.J_LAF01, NIKON.J_LASFH13HS, NIKON.BAF8, NIKON.P_LASF03S, NIKON.J_F1, NIKON.J_SK2, NIKON.E_LLF1, NIKON.P_LASFH11S, NIKON.J_LAK7R, NIKON.J_LASF09, NIKON.J_LAK02, NIKON.SF4, NIKON.E_LF5, NIKON.J_LASFH21, NIKON.J_KZFH4, NIKON.E_LASFH13, NIKON.LAF7, NIKON.NIFS_U, NIKON.J_KZFH1, NIKON.J_LASF016, NIKON.E_LASF017, NIKON.E_LASF013, NIKON.J_BASF8, NIKON.SK2, NIKON.J_LASF08A, NIKON.E_LAF09, NIKON.J_LASFH9, NIKON.NIFS_V, NIKON.E_LAF04, NIKON.SF03, NIKON.LAK09, NIKON.E_SF15, NIKON.J_LAF04, NIKON.J_F2, NIKON.E_SF03, NIKON.E_LASFH15, NIKON.J_BASF2, NIKON.LAK011, NIKON._7054, NIKON.Q_LASFH12S, NIKON.BAK4, NIKON.E_LASF021, NIKON.E_LASFH6, NIKON.J_BAF12, NIKON.PK2, NIKON.F3, NIKON.LAF11, NIKON.E_SSK1, NIKON.E_LAK9, NIKON.LLF6, NIKON.E_LAKH1, NIKON.LASF010, NIKON.J_SSK5, NIKON.J_KZFH6, NIKON.E_BAF3, NIKON.E_SF13, NIKON.J_LASFH22, NIKON.LASF02, NIKON.J_LAF05, NIKON.J_F8, NIKON.J_SSK1, NIKON.E_LAF3, NIKON.J_LASF09A, NIKON.E_LASF01, NIKON.Q_LAK53S, NIKON.LAK7, NIKON.E_LAK8, NIKON.BAF4, NIKON.E_F2, NIKON.E_LASF010, NIKON.E_LAK14, NIKON.J_PKH1, NIKON.E_LAF016, NIKON.J_LASF015, NIKON.J_LF5, NIKON.E_LAK12, NIKON.SF6, NIKON.J_BAK1, NIKON.P_SK12S, NIKON.Q_SK12S, NIKON.E_SK14, NIKON.J_LASF08, NIKON.J_SF8, NIKON.E_KZFH1, NIKON.SSK8, NIKON.LAK04, NIKON.Q_PSKH4S, NIKON.J_SF2, NIKON.E_F8, NIKON.SFS3, NIKON.E_SFH1, NIKON.SF2, NIKON.E_LAFH3, NIKON.J_LASFH24HS, NIKON.J_SF10, NIKON.Q_LAF010S, NIKON.J_LASF010, NIKON.J_LASFH13, NIKON.E_F16, NIKON.E_SF8, NIKON.J_K3, NIKON.SK4, NIKON.Q_LASFPH2S, NIKON.E_BASF6, NIKON.J_BAF8, NIKON.J_LAK06, NIKON.E_BAF12, NIKON.LLF2, NIKON.J_LASF013, NIKON.J_LASFH9A, NIKON.P_LASFH18S, NIKON.SF1, NIKON.E_SF7, NIKON.BAF11, NIKON.Q_LAK13S, NIKON.J_BALF4, NIKON.J_LAFH3, NIKON.Q_SK5S, NIKON.LF6, NIKON.LAF3, NIKON.E_LASF02, NIKON.J_BAK2, NIKON.E_SF11, NIKON.J_FK01, NIKON.J_SK5, NIKON.E_LASF08, NIKON.E_LASF014, NIKON._5859, NIKON.BASF12, NIKON.E_BASF7, NIKON.E_LASKH2, NIKON.KZFH1, NIKON.J_BAF3, NIKON.E_K3, NIKON.E_FK5, NIKON.J_F16, NIKON.J_LASF017, NIKON.LF7, NIKON.E_SK11, NIKON.J_LLF6, NIKON.Q_PSKH1S, NIKON.E_LAFH2, NIKON.E_SFS3, NIKON.J_LASF01, NIKON.J_LAK9, NIKON.J_SF1, NIKON.P_LASFH12S, NIKON.NICF_U, NIKON.LASFH6, NIKON.F1, NIKON.Q_LASFH59S, NIKON.E_LAK7, NIKON.J_BAF10, NIKON.J_LASF05, NIKON.J_LASFH6, NIKON.E_LAK09, NIKON.J_BASF7, NIKON.E_LAK13, NIKON.J_SFH2, NIKON.J_FKH2, NIKON.E_LAK02, NIKON.F5, NIKON.E_SK10, NIKON.J_LAK12, NIKON.J_SK16, NIKON.J_LLF2, NIKON.Q_SK52S, NIKON.J_BAF4, NIKON.E_PKH1, NIKON.Q_FK01AS, NIKON.LLF1, NIKON.E_SF14, NIKON.J_LAFH3HS, NIKON.F8, NIKON.E_FK01, NIKON.J_SF5, NIKON.J_LF6, NIKON.J_F5, NIKON.P_SK5S, NIKON.J_LASFH17, NIKON.LAK12, NIKON.Q_LASFH11S, NIKON.E_K5, NIKON.SF5, NIKON.E_LASF03, NIKON._4786, NIKON.J_LASF02, NIKON.KZFS4, NIKON.J_LASF03, NIKON.E_LAK18, NIKON.E_PSKH1, NIKON.J_SF13, NIKON.E_SSK5, NIKON.E_F1, NIKON.J_SK4, NIKON.J_SK15, NIKON.J_PSKH1, NIKON.J_PSK02, NIKON.J_LAF016, NIKON.KZFH2, NIKON.E_BK7, NIKON.E_BAK2, NIKON.E_SF10, NIKON.LAF9, NIKON.SF12, NIKON.J_SF03HS, NIKON.J_SK12, NIKON.J_LAK01, NIKON.E_SK12, NIKON.J_LAF016HS, NIKON.E_LF6, NIKON.J_LASKH2, NIKON.J_SF7, NIKON.J_LASFH2, NIKON.J_LASF021, NIKON.Q_PSKH2S, NIKON.Q_SK55S, NIKON.E_LAK011, NIKON.E_SF4, NIKON.SK18, NIKON.J_SK14, NIKON.E_LASFH17, NIKON.P_LASFH19S, NIKON.BASF2, NIKON.E_BAF11, NIKON.E_SSK8, NIKON.E_BASF8, NIKON.J_LASFH24, NIKON.SF8, NIKON.Q_LAK52S, NIKON.P_LAF010S, NIKON.J_SF15, NIKON.J_LAK7, NIKON.SK15, NIKON.BAK2, NIKON.SF7, NIKON.J_LAK8, NIKON.E_LLF2, NIKON.NICF_A, NIKON.E_BALF4, NIKON.J_SFS3, NIKON.SF15, NIKON._5742, NIKON.E_LAF11, NIKON.E_PSK02, NIKON.J_SF03, NIKON.E_LAK06, NIKON.J_LAK18, NIKON.J_LAK14, NIKON.J_LAK10, NIKON.E_LASF05, NIKON.J_LAK011, NIKON.J_SK11, NIKON.E_BAF10, NIKON.KF6, NIKON.BASF8, NIKON.E_LAK01, NIKON.LAF09, NIKON.E_LAF2, NIKON.SF11, NIKON.LAK9, NIKON.SF14, NIKON.J_LASF014, NIKON.E_LAF05, NIKON.E_BAF8, NIKON.J_LLF1, NIKON.J_LASFH15, NIKON.Q_FKH2S, NIKON.E_PSK03, NIKON.Q_LAFPH1S, NIKON.E_LLF6, NIKON.J_SSK8, NIKON.J_LAF010, NIKON.J_LASFH23, NIKON.J_SK18, NIKON.Q_LASFPH3S, NIKON.E_F3, NIKON.P_FK01S, NIKON.P_PSKH1S, NIKON.E_LAK10, NIKON.E_BAK4, NIKON.J_PSK03, NIKON.E_LASF04, NIKON.E_KF6, NIKON.E_SK18, NIKON.J_SFH1, NIKON.E_SF2, NIKON.K5, NIKON._5165, NIKON.E_F5, NIKON.BASF6, NIKON.E_LAF9, NIKON.J_K5, NIKON.SF13, NIKON.E_SF5, NIKON.J_LAF2, NIKON.K3, OHARA.S_TIM28, OHARA.S_LAH98, OHARA.S_LAL58, OHARA.S_TIH53W, OHARA.S_LAH65V, OHARA.S_NPH7, OHARA.S_BAL42, OHARA.S_TIH14, OHARA.S_NBH56, OHARA.S_LAM3, OHARA.S_LAL9, OHARA.L_BAL35P, OHARA.S_LAM54, OHARA.S_LAH63, OHARA.S_LAH95, OHARA.L_LAH53, OHARA.S_NSL36, OHARA.S_LAL12, OHARA.S_BAL3, OHARA.S_TIM5, OHARA.S_TIM35, OHARA.S_FPM2, OHARA.S_BSM28, OHARA.S_NPH1W, OHARA.L_BSL7, OHARA.S_TIH13, OHARA.S_TIL2, OHARA.S_LAL8, OHARA.S_LAH52, OHARA.S_PHM52Q, OHARA.L_LAH84, OHARA.S_LAH79, OHARA.S_LAH71, OHARA.S_TIL27, OHARA.S_LAH92, OHARA.S_BSM15, OHARA.S_LAL54, OHARA.S_LAM60, OHARA.S_BAM4, OHARA.S_LAL61, OHARA.S_BAH10, OHARA.S_LAH60MQ, OHARA.S_BAL41, OHARA.S_BSM10, OHARA.S_BSM81, OHARA.S_BSM25, OHARA.S_LAL20, OHARA.S_NBH8, OHARA.S_TIH57, OHARA.S_TIM25, OHARA.S_LAH60, OHARA.S_LAM66, OHARA.S_LAM2, OHARA.S_TIH11, OHARA.L_LAM60, OHARA.S_NBH53V, OHARA.S_BAH28, OHARA.S_BSM2, OHARA.S_FPM3, OHARA.S_LAH53, OHARA.S_LAL59, OHARA.S_NPH5, OHARA.S_LAH63Q, OHARA.S_LAL21, OHARA.L_LAM69, OHARA.S_LAM55, OHARA.S_LAH58, OHARA.S_LAH88, OHARA.S_TIH53, OHARA.S_LAL7, OHARA.S_LAL13, OHARA.SK_1300, OHARA.S_LAL19, OHARA.S_LAH53V, OHARA.L_BAL42P, OHARA.S_TIL6, OHARA.S_NBH52V, OHARA.S_NBH51, OHARA.S_FTM16, OHARA.L_LAL13, OHARA.S_LAH99, OHARA.S_NBH57, OHARA.L_TIM28, OHARA.L_BAL43, OHARA.SK_1310, OHARA.S_BSM16, OHARA.S_BAL14, OHARA.S_TIH23, OHARA.S_BAL12, OHARA.S_TIM22, OHARA.L_LAH85V, OHARA.S_PHM52, OHARA.S_NPH4, OHARA.S_LAH93, OHARA.S_BSM18, OHARA.S_LAH64, OHARA.S_FPM4, OHARA.S_BAH27, OHARA.S_LAH59, OHARA.S_BAL2, OHARA.S_FPL51, OHARA.S_PHM53, OHARA.S_TIM2, OHARA.S_BAL35, OHARA.S_LAH65VS, OHARA.S_LAL54Q, OHARA.S_LAH97, OHARA.S_LAM73, OHARA.L_LAH94, OHARA.S_LAL12Q, OHARA.S_NBH5, OHARA.S_NBH55, OHARA.S_NPH1, OHARA.S_LAL10, OHARA.S_TIH4, OHARA.S_LAH66, OHARA.S_TIH18, OHARA.S_TIH1, OHARA.S_BSM14, OHARA.S_LAH55VS, OHARA.S_TIL1, OHARA.S_NBH58, OHARA.L_BAL35, OHARA.S_NSL3, OHARA.S_TIH3, OHARA.L_TIM28P, OHARA.L_LAH91, OHARA.S_TIM8, OHARA.S_LAH55V, OHARA.S_LAM61, OHARA.S_TIM27, OHARA.S_LAL7Q, OHARA.S_LAH96, OHARA.S_BAL35R, OHARA.S_LAL18, OHARA.S_BSM71, OHARA.S_LAH52Q, OHARA.S_NPH3, OHARA.S_BAH11, OHARA.L_LAH90, OHARA.S_FPL53, OHARA.S_BSL7R, OHARA.S_FPL55, OHARA.S_LAH60V, OHARA.S_NPH2, OHARA.S_FPM5, OHARA.S_FSL5, OHARA.S_LAH89, OHARA.S_LAL14, OHARA.S_LAM7, OHARA.S_BAM12, OHARA.S_TIH6, OHARA.S_TIH10, OHARA.S_TIL25, OHARA.L_BAL42, OHARA.L_LAL15, OHARA.S_TIL26, OHARA.S_BSL7, OHARA.S_LAH51, OHARA.S_NBM51, HOYA.LBC3N, HOYA.MC_FCD500_20, HOYA.BACD14, HOYA.NBFD12, HOYA.M_TAF105, HOYA.M_TAFD51, HOYA.M_LAC130, HOYA.TAC8, HOYA.MP_TAC80_60, HOYA.TAFD55, HOYA.BSC7, HOYA.E_FD1, HOYA.MC_NBF1, HOYA.TAFD40_W, HOYA.FDS18, HOYA.TAFD37A, HOYA.MP_BACD5N, HOYA.M_BACD15, HOYA.FCD705, HOYA.E_FD80, HOYA.E_FDS2, HOYA.MC_TAF31_15, HOYA.FF8, HOYA.FCD515, HOYA.MC_NBFD130, HOYA.FCD500, HOYA.M_BACD5N, HOYA.MP_FCD500_20, HOYA.E_FDS1_W, HOYA.M_FDS1, HOYA.M_BACD12, HOYA.BAF10, HOYA.MP_BACD15, HOYA.TAF3, HOYA.LAF2, HOYA.FCD100, HOYA.E_LAF7, HOYA.NBFD3, HOYA.M_LAC8, HOYA.MP_NBFD130, HOYA.PCD4, HOYA.BACD2, HOYA.MP_PCD51_70, HOYA.M_FD80, HOYA.TAC2, HOYA.MC_PCD51_70, HOYA.M_FDS910, HOYA.TAC6, HOYA.TAFD5G, HOYA.MC_PCD4_40, HOYA.LAC12, HOYA.LAC9, HOYA.E_FD10, HOYA.FDS18_W, HOYA.PCD40, HOYA.FDS24_W, HOYA.TAFD65, HOYA.FCD1B, HOYA.M_LAF81, HOYA.MC_TAF1, HOYA.E_C3, HOYA.M_TAF31, HOYA.LACL60, HOYA.MC_TAF105, HOYA.TAFD5F, HOYA.BACD4, HOYA.TAF3D, HOYA.MP_TAFD405, HOYA.E_FD8, HOYA.FDS24, HOYA.M_PCD51, HOYA.NBFD13, HOYA.FD60_W, HOYA.MP_TAFD305, HOYA.BACED5, HOYA.MC_NBFD135, HOYA.E_FD13, HOYA.NBFD30, HOYA.LAC14, HOYA.FF5, HOYA.M_TAFD305, HOYA.M_NBF1, HOYA.E_FD7, HOYA.E_ADF50, HOYA.MP_FCD1_M20, HOYA.MC_TAFD307, HOYA.BACD16, HOYA.PCD51, HOYA.E_BACED20, HOYA.MP_TAFD307, HOYA.E_FD1L, HOYA.TAC4, HOYA.FDS20_W, HOYA.BAFD7, HOYA.M_TAFD405, HOYA.E_FD15L, HOYA.M_TAF401, HOYA.E_FEL1, HOYA.E_FEL6, HOYA.MC_BACD12, HOYA.FDS90, HOYA.MP_BACD12, HOYA.FD60, HOYA.TAFD37, HOYA.TAFD30, HOYA.E_F2, HOYA.FCD1, HOYA.MP_NBF1, HOYA.BAC4, HOYA.FCD505, HOYA.MC_FD80, HOYA.NBF1, HOYA.M_FCD1, HOYA.M_PCD4, HOYA.NBFD25, HOYA.E_F8, HOYA.E_ADF10, HOYA.M_TAFD307, HOYA.LAC8, HOYA.MP_FDS2, HOYA.BACD15, HOYA.FCD600, HOYA.M_TAF1, HOYA.E_FDS3, HOYA.LAC7, HOYA.NBFD11, HOYA.FD225, HOYA.BAF11, HOYA.LAF3, HOYA.MP_LAC130, HOYA.BACD5, HOYA.MP_LAC8_30, HOYA.MC_TAFD51_50, HOYA.M_NBFD130, HOYA.MC_TAF401, HOYA.M_TAC60, HOYA.MC_LAC130, HOYA.M_TAC80, HOYA.MP_NBFD10_20, HOYA.FCD10A, HOYA.MP_FDS910_50, HOYA.E_FD15, HOYA.M_FDS2, HOYA.E_FD4L, HOYA.E_FDS1, HOYA.E_FD5, HOYA.NBFD15_W, HOYA.MP_LAF81, HOYA.FDS90_SG, HOYA.MP_FD80, HOYA.MC_TAF101_100, HOYA.E_FL5, HOYA.E_FL6, HOYA.TAFD25, HOYA.MP_LAC14_80, HOYA.TAF4, HOYA.BAFD8, HOYA.MC_FDS2, HOYA.M_PCD55AR, HOYA.E_F1, HOYA.TAFD55_W, HOYA.MC_FDS910_50, HOYA.E_BACD10, HOYA.E_FEL2, HOYA.TAFD33, HOYA.MC_FCD1_M20, HOYA.TAF2, HOYA.FC5, HOYA.MC_BACD5N, HOYA.FD140, HOYA.MP_FDS1, HOYA.MP_TAFD51_50, HOYA.BACD18, HOYA.E_FD10L, HOYA.NBFD29, HOYA.BACD11, HOYA.MP_PCD55AR, HOYA.TAF1, HOYA.TAFD45, HOYA.M_FCD500, HOYA.MP_TAF101_100, HOYA.FD270, HOYA.TAFD35, HOYA.NBFD10, HOYA.NBFD32, HOYA.LAC13, HOYA.NBFD15, HOYA.MP_TAF31_15, HOYA.FDS16_W, HOYA.M_LAC14, HOYA.E_CF6, HOYA.MP_TAC60_90, HOYA.FCD10, HOYA.E_FD2, HOYA.E_BAF8, HOYA.E_FD4, HOYA.MC_TAFD305, HOYA.M_TAF101, HOYA.TAF5, HOYA.E_F3, HOYA.FD110, HOYA.LAC10, HOYA.MP_TAF401, HOYA.MP_TAF105, HOYA.M_NBFD10, HOYA.E_F5, HOYA.TAFD32, HOYA.MP_PCD4_40, HOYA.FDS90_P_, HOYA.TAFD40, SCHOTT.SF2, SCHOTT.N_LAK8, SCHOTT.N_LASF46B, SCHOTT.N_SF5, SCHOTT.N_LASF46, SCHOTT.N_FK58, SCHOTT.N_FK51, SCHOTT.N_LAF32, SCHOTT.N_BALF5, SCHOTT.N_BASF2, SCHOTT.N_LAK12, SCHOTT.N_BAK4, SCHOTT.SF56A, SCHOTT.N_PK51, SCHOTT.SF10, SCHOTT.SF66, SCHOTT.N_LAF33, SCHOTT.N_SF57HTultra, SCHOTT.N_LAF36, SCHOTT.N_KF9, SCHOTT.N_LAK22, SCHOTT.P_BK7, SCHOTT.P_SF68, SCHOTT.LITHOTEC_CAF2, SCHOTT.N_SK4, SCHOTT.N_LAK14, SCHOTT.N_BAF51, SCHOTT.N_KZFS8, SCHOTT.N_SK2, SCHOTT.N_F2, SCHOTT.P_LASF51, SCHOTT.N_BK7HTi, SCHOTT.P_SK57Q1, SCHOTT.SF4, SCHOTT.SF57HTultra, SCHOTT.P_PK53, SCHOTT.N_BAF4, SCHOTT.N_SF6Q2, SCHOTT.N_LASF55, SCHOTT.N_KZFS5, SCHOTT.N_LAF3, SCHOTT.LAK9G15, SCHOTT.N_PSK53A, SCHOTT.N_LAK10, SCHOTT.N_SF1, SCHOTT.N_LAK7, SCHOTT.SF1, SCHOTT.LASFN9, SCHOTT.N_SSK5, SCHOTT.N_SK15, SCHOTT.N_SF6, SCHOTT.SFL57, SCHOTT.KZFS12, SCHOTT.K7, SCHOTT.N_LASF45HT, SCHOTT.N_SF6HTultra, SCHOTT.N_FK5, SCHOTT.N_LASF31, SCHOTT.BAFN6, SCHOTT.LF5, SCHOTT.N_LAF21, SCHOTT.N_SF6HT, SCHOTT.P_SK60, SCHOTT.N_LAK9, SCHOTT.P_LASF50, SCHOTT.N_SF2, SCHOTT.LAFN7, SCHOTT.N_SF57HT, SCHOTT.N_SK5, SCHOTT.P_SK58A, SCHOTT.P_LASF47, SCHOTT.LASF35, SCHOTT.N_PSK53, SCHOTT.N_BAF52, SCHOTT.N_KZFS4, SCHOTT.N_LAF2, SCHOTT.N_LASF9HT, SCHOTT.SF15, SCHOTT.N_SK16, SCHOTT.LF5HTi, SCHOTT.N_SF66, SCHOTT.N_SF57, SCHOTT.N_SSK2, SCHOTT.N_LAK33A, SCHOTT.N_LASF46A, SCHOTT.BK7G18, SCHOTT.N_KZFS11, SCHOTT.N_LAK34, SCHOTT.N_SF64, SCHOTT.N_LASF45, SCHOTT.N_PK52A, SCHOTT.F2G12, SCHOTT.N_SF8, SCHOTT.SF57, SCHOTT.N_LASF9, SCHOTT.LF5G19, SCHOTT.KZFSN4, SCHOTT.N_LASF44, SCHOTT.SF11, SCHOTT.P_LAK35, SCHOTT.N_SF11, SCHOTT.N_BAK1, SCHOTT.F5, SCHOTT.LLF1HTi, SCHOTT.N_BK7HT, SCHOTT.N_KZFS4HT, SCHOTT.N_SF4, SCHOTT.N_LASF31A, SCHOTT.N_ZK7A, SCHOTT.SF14, SCHOTT.P_LAF37, SCHOTT.N_LAF34, SCHOTT.SF6G05, SCHOTT.LITHOSIL_Q, SCHOTT.SF3, SCHOTT.N_LAK21, SCHOTT.N_SF15, SCHOTT.N_SF56, SCHOTT.D263TECO, SCHOTT.N_BAF10, SCHOTT.P_SF69, SCHOTT.F2HT, SCHOTT.P_SF67, SCHOTT.N_SK10, SCHOTT.N_SF19, SCHOTT.N_BAK2, SCHOTT.P_SK57, SCHOTT.LLF1, SCHOTT.N_ZK7, SCHOTT.N_BAK4HT, SCHOTT.N_KZFS2, SCHOTT.N_PSK3, SCHOTT.N_LAK33B, SCHOTT.N_BAF3, SCHOTT.K5G20, SCHOTT.N_BK7, SCHOTT.N_K5, SCHOTT.SF6, SCHOTT.SFL6, SCHOTT.LAKL12, SCHOTT.N_BASF64, SCHOTT.N_FK51A, SCHOTT.N_SK14, SCHOTT.N_LAF35, SCHOTT.N_SSK8, SCHOTT.N_SF10, SCHOTT.N_SF14, SCHOTT.N_LAF7, SCHOTT.N_BK10, SCHOTT.N_LASF43, SCHOTT.FK5HTi, SCHOTT.N_SK2HT, SCHOTT.N_LASF40, SCHOTT.SF5, SCHOTT.N_SK11, SCHOTT.FK3, SCHOTT.N_LAK28, SCHOTT.AF32ECO, SCHOTT.LF5G15, SCHOTT.F2, SCHOTT.K10, SCHOTT.N_LASF41, SCHOTT.P_SF8, SCHOTT.N_BALF4, ARCHER.S_LAL12M, ARCHER.S_BSL7M, ARCHER.S_LAL13M, ARCHER.S_NSL3M, ARCHER.S_BAL41M, ARCHER.S_LAM60M, ARCHER.S_BAL3M, ARCHER.L_BAL35M, ARCHER.S_LAH60M, ARCHER.S_TIM2M, ARCHER.S_FSL5M, ARCHER.L_LAM69M, ARCHER.K_VC79M, ARCHER.S_BAL42M, ARCHER.S_LAH53M, ARTON.F5023, ARTON.DX4900, ARTON.D4531F, ARTON.D4532, ARTON.D4540, ARTON.F4520, BIREFRINGENT.CDSE, BIREFRINGENT.BATIO3, BIREFRINGENT.SRMOO4_E, BIREFRINGENT.AGASS3_E, BIREFRINGENT.TAS, BIREFRINGENT.CALCITE, BIREFRINGENT.CAWO4_E, BIREFRINGENT.MGF2_E, BIREFRINGENT.TE, BIREFRINGENT.MGF2, BIREFRINGENT.CUGAS2_E, BIREFRINGENT.CAWO4, BIREFRINGENT.CDS, BIREFRINGENT.LIYF4_E, BIREFRINGENT.QUARTZ_E, BIREFRINGENT.TEO2_E, BIREFRINGENT.BATIO3_E, BIREFRINGENT.LIYF4, BIREFRINGENT.AGGAS2, BIREFRINGENT.CDSE_E, BIREFRINGENT.ADP_E, BIREFRINGENT.TE_E, BIREFRINGENT.LAF3, BIREFRINGENT.LAF3_E, BIREFRINGENT.TEO2, BIREFRINGENT.BBO, BIREFRINGENT.BBO_E, BIREFRINGENT.KDP, BIREFRINGENT.ZNGEP2_E, BIREFRINGENT.LINBO3_E, BIREFRINGENT.ALN_E, BIREFRINGENT.CAMOO4, BIREFRINGENT.CDS_E, BIREFRINGENT.AL2O3_E, BIREFRINGENT.TAS_E, BIREFRINGENT.CAMOO4_E, BIREFRINGENT.PBMOO4_E, BIREFRINGENT.KDP_E, BIREFRINGENT.YVO4, BIREFRINGENT.ZNO_E, BIREFRINGENT.AL2O3, BIREFRINGENT.PBMOO4, BIREFRINGENT.CUGAS2, BIREFRINGENT.SRMOO4, BIREFRINGENT.ADP, BIREFRINGENT.ALN, BIREFRINGENT.BEO, BIREFRINGENT.AGGASE2, BIREFRINGENT.ZNGEP2, BIREFRINGENT.CDGEAS2, BIREFRINGENT.AGGAS2_E, BIREFRINGENT.CALCITE_E, BIREFRINGENT.CDGEAS2_E, BIREFRINGENT.LIO3, BIREFRINGENT.ZNO, BIREFRINGENT.AGASS3, BIREFRINGENT.LIO3_E, BIREFRINGENT.LINBO3, BIREFRINGENT.QUARTZ, BIREFRINGENT.BEO_E, BIREFRINGENT.AGGASE2_E, BIREFRINGENT.YVO4_E, CDGM.H_BAK4, CDGM.H_LAK51, CDGM.BAF3, CDGM.D_LAF82L, CDGM.H_ZF1, CDGM.H_ZK14, CDGM.H_FK61, CDGM.H_ZLAF52, CDGM.H_K10, CDGM.H_ZK9A, CDGM.ZF12, CDGM.F4, CDGM.QF50, CDGM.H_ZF3, CDGM.ZF13, CDGM.H_ZK1, CDGM.H_LAF50A, CDGM.BAF2, CDGM.H_ZF12, CDGM.H_ZK11, CDGM.D_LAK70, CDGM.H_K50, CDGM.D_ZK3L, CDGM.D_ZF10, CDGM.H_LAF62, CDGM.H_ZPK1, CDGM.ZBAF1, CDGM.D_ZLAF52LA, CDGM.H_LAK67, CDGM.H_LAFL5, CDGM.ZF5, CDGM.ZF11, CDGM.ZF1, CDGM.H_LAF53, CDGM.H_QK3, CDGM.H_LAK8A, CDGM.ZF3, CDGM.H_ZF11, CDGM.H_F13, CDGM.H_QF56, CDGM.H_LAK59, CDGM.H_K6, CDGM.F2, CDGM.H_QF6, CDGM.H_ZLAF66, CDGM.H_ZBAF1, CDGM.H_BAK6, CDGM.H_LAK54, CDGM.BAF8, CDGM.H_BAK5, CDGM.H_LAK10, CDGM.H_ZK20, CDGM.H_K7, CDGM.H_LAK52, CDGM.H_ZK3, CDGM.H_BAK2, CDGM.H_QK1, CDGM.QF5, CDGM.H_QK3L, CDGM.H_K9L, CDGM.H_ZBAF21, CDGM.H_LAK50A, CDGM.H_ZK5, CDGM.F3, CDGM.H_ZF50, CDGM.H_ZK10L, CDGM.QF6, CDGM.H_F2, CDGM.F6, CDGM.H_ZF7LA, CDGM.H_QF3, CDGM.ZF4, CDGM.D_K9L, CDGM.H_ZLAF50B, CDGM.H_ZBAF52, CDGM.H_BAK7, CDGM.QF3, CDGM.H_ZK2, CDGM.H_LAF2, CDGM.H_ZBAF20, CDGM.BAF4, CDGM.H_ZK50, CDGM.H_LAF6LA, CDGM.H_ZBAF16, CDGM.H_ZBAF50, CDGM.H_K11, CDGM.ZF2, CDGM.H_LAF4, CDGM.ZBAF4, CDGM.H_ZK6, CDGM.H_LAF52, CDGM.F7, CDGM.H_LAK7, CDGM.H_QF14, CDGM.H_QF50, CDGM.H_ZK10, CDGM.BAF7, CDGM.F13, CDGM.H_ZF5, CDGM.H_ZK8, CDGM.H_LAK2, CDGM.TF3, CDGM.D_LAK6, CDGM.H_LAK12, CDGM.QF8, CDGM.H_KF6, CDGM.H_F51, CDGM.H_ZK4, CDGM.F1, CDGM.F5, CDGM.H_ZF10, CDGM.BAF6, CDGM.D_ZK3, CDGM.H_ZLAF76, CDGM.H_LAK53A, CDGM.H_ZLAF55A, CDGM.H_LAK11, CDGM.H_ZBAF5, CDGM.K4A, CDGM.H_QF1, CDGM.H_ZF4, CDGM.D_ZK2, CDGM.H_ZBAF3, CDGM.H_LAK4L, CDGM.ZF8, CDGM.H_LAK6A, CDGM.H_ZF52A, CDGM.BAF5, CDGM.H_ZLAF3, CDGM.H_QF8, CDGM.ZBAF2, CDGM.H_ZF13, CDGM.ZF52, CDGM.H_LAK61, CDGM.H_K5, CDGM.ZF10, CDGM.H_ZF2, CDGM.H_ZLAF78, CDGM.H_BAK3, CDGM.H_ZK7, CDGM.H_ZLAF53A, CDGM.H_ZLAF51, CDGM.H_LAF10L, CDGM.H_ZF6, CDGM.ZF50, CDGM.ZF51, CDGM.H_F4, CDGM.H_K51, CDGM.H_LAF3A, CDGM.H_BAK1, CDGM.ZF6, CDGM.H_LAK5A, CDGM.ZF7L, CDGM.D_LAF79, CDGM.QF1, CDGM.H_ZK21, CDGM.H_ZLAF56A, CDGM.H_LAF54, CDGM.H_BAK8, CDGM.H_LAK3, CDGM.H_LAF7, CDGM.H_F1, CORNING.C0550, CORNING.D85_25, CORNING.B11_60, CORNING.C23_57, CORNING.C97_55, CORNING.C89_31, CORNING.C57_57, CORNING.C58_51, CORNING.D88_47, CORNING.B18_65, CORNING.D01_41, CORNING.C90_55, CORNING.C23_53, CORNING.D28_28, CORNING.C48_46, CORNING.E37_30, CORNING.C48_34, CORNING.C39_56, CORNING.C04_64, CORNING.B48_46, CORNING.E03_47, CORNING.B58_72, CORNING.D34_26, CORNING.A87_70, CORNING.B16_64, CORNING.C78_56, CORNING.E00_46, CORNING.B42_73, CORNING.C13_58, CORNING.B69_56, CORNING.B72_57, CORNING.C51_39, CORNING.C07_57, CORNING.C24_47, CORNING.A86_82, CORNING.B29_52, CORNING.C51_56, CORNING.B18_60, CORNING.B64_61, CORNING.B81_41, CORNING.C17_55, CORNING.B19_61, CORNING.C13_56, CORNING.B96_67, CORNING.D23_38, CORNING.D40_28, CORNING.C52_58, CORNING.C99_30, CORNING.D17_29, CORNING.C06_44, CORNING.C05_50, CORNING.C67_33, CORNING.B29_77, CORNING.D34_51, CORNING.C37_35, CORNING.C38_42, CORNING.C90_50, CORNING.C67_48, CORNING.C55_40, CORNING.E65_40, CORNING.C20_36, CORNING.C72_32, CORNING.C79_80, CORNING.B23_59, CORNING.C04_38, CORNING.C23_58, CORNING.B58_53, CORNING.C41_60, CORNING.C97_56, CORNING.C42_58, CORNING.B48_53, CORNING.D62_27, CORNING.D20_50, CORNING.D13_54, CORNING.C09_59, CORNING.D96_43, CORNING.D56_27, CORNING.C26_36, CORNING.B39_59, CORNING.D17_48, CORNING.B10_63, CORNING.E78_38, CORNING.A88_66, CORNING.B52_67, CORNING.B89_61, CORNING.C97_36, CORNING.D85_26, CORNING.A63_65, CORNING.C70_47, CORNING.D44_45, CORNING.E05_25, CORNING.C13_44, CORNING.C16_44, CORNING.A87_84, CORNING.C20_60, HERAEUS.HERASIL, HERAEUS.HOMOSIL, HERAEUS.SUPRASIL, HERAEUS.INFRASIL, HERAEUS.HOQ, HIKARI.SF9, HIKARI.BAF3, HIKARI.E_SK16, HIKARI.SF10, HIKARI.E_LASFH2, HIKARI.P_LAK13S, HIKARI.SK16, HIKARI.E_BASF2, HIKARI.J_FKH1, HIKARI.LASF01, HIKARI.E_SF1, HIKARI.J_BK7, HIKARI.E_SK15, HIKARI.J_F3, HIKARI.PK1, HIKARI.E_SK2, HIKARI.LF5, HIKARI.J_BAK4, HIKARI.J_SF14, HIKARI.J_BASF6, HIKARI.J_FK5, HIKARI.E_LAF02, HIKARI.J_LAF09, HIKARI.BASF4, HIKARI.E_FKH1, HIKARI.E_LAF010, HIKARI.J_SF4, HIKARI.J_SF11, HIKARI.E_BAF4, HIKARI.J_BAF11, HIKARI.E_SK5, HIKARI.J_LAF02, HIKARI.J_SF6, HIKARI.E_LASF09, HIKARI.BAF10, HIKARI.LAF2, HIKARI.J_LAK04, HIKARI.E_LAF7, HIKARI.Q_FK01S, HIKARI.E_LAK04, HIKARI.SSK2, HIKARI.J_LAF3, HIKARI.E_SFH2, HIKARI.J_LAK09, HIKARI.E_LASF015, HIKARI.SSK1, HIKARI.E_SF6, HIKARI.Q_SF6S, HIKARI.E_BAK1, HIKARI.E_LASF016, HIKARI.J_SK10, HIKARI.E_LAF01, HIKARI.E_SK4, HIKARI.E_LF7, HIKARI.BASF7, HIKARI.J_LF7, HIKARI.SK9, HIKARI.F2, HIKARI.J_LAK13, HIKARI.Q_LASFH18S, HIKARI.P_FKH2S, HIKARI.E_FKH2, HIKARI.E_LASFH9, HIKARI.Q_LASFH19S, HIKARI.Q_LASF03S, HIKARI.J_LAF01, HIKARI.J_LAF7, HIKARI.J_KF6, HIKARI.BAF8, HIKARI.P_LASF03S, HIKARI.J_F1, HIKARI.J_SK2, HIKARI.E_LLF1, HIKARI.P_LASFH11S, HIKARI.J_LASF09, HIKARI.J_LAK02, HIKARI.SF4, HIKARI.E_LF5, HIKARI.E_LASFH13, HIKARI.LAF7, HIKARI.J_KZFH1, HIKARI.J_LASF016, HIKARI.E_LASF017, HIKARI.E_LASF013, HIKARI.J_BASF8, HIKARI.SK2, HIKARI.E_LAF09, HIKARI.J_LASFH9, HIKARI.E_LAF04, HIKARI.SF03, HIKARI.LAK09, HIKARI.E_SF15, HIKARI.J_LAF04, HIKARI.J_F2, HIKARI.E_SF03, HIKARI.E_LASFH15, HIKARI.J_BASF2, HIKARI.LAK011, HIKARI.Q_LASFH12S, HIKARI.BAK4, HIKARI.E_LASF021, HIKARI.E_LASFH6, HIKARI.J_BAF12, HIKARI.PK2, HIKARI.F3, HIKARI.LAF11, HIKARI.E_SSK1, HIKARI.E_LAK9, HIKARI.LLF6, HIKARI.E_LAKH1, HIKARI.LASF010, HIKARI.J_SSK5, HIKARI.E_BAF3, HIKARI.E_SF13, HIKARI.LASF02, HIKARI.J_LAF05, HIKARI.J_F8, HIKARI.J_SSK1, HIKARI.E_LAF3, HIKARI.E_LASF01, HIKARI.LAK7, HIKARI.E_LAK8, HIKARI.BAF4, HIKARI.E_F2, HIKARI.E_LASF010, HIKARI.E_LAK14, HIKARI.J_PKH1, HIKARI.E_LAF016, HIKARI.J_LASF015, HIKARI.J_LF5, HIKARI.E_LAK12, HIKARI.SF6, HIKARI.J_BAK1, HIKARI.P_SK12S, HIKARI.Q_SK12S, HIKARI.E_SK14, HIKARI.J_LASF08, HIKARI.J_SF8, HIKARI.E_KZFH1, HIKARI.SSK8, HIKARI.LAK04, HIKARI.J_SF2, HIKARI.E_F8, HIKARI.SFS3, HIKARI.E_SFH1, HIKARI.SF2, HIKARI.E_LAFH3, HIKARI.J_SF10, HIKARI.Q_LAF010S, HIKARI.J_LASFH13, HIKARI.J_LASF010, HIKARI.E_F16, HIKARI.E_SF8, HIKARI.J_K3, HIKARI.SK4, HIKARI.E_BASF6, HIKARI.J_BAF8, HIKARI.J_LAK06, HIKARI.E_BAF12, HIKARI.LLF2, HIKARI.J_LASF013, HIKARI.P_LASFH18S, HIKARI.SF1, HIKARI.E_SF7, HIKARI.BAF11, HIKARI.Q_LAK13S, HIKARI.J_BALF4, HIKARI.Q_SK5S, HIKARI.J_LAFH3, HIKARI.LAF3, HIKARI.LF6, HIKARI.E_LASF02, HIKARI.J_BAK2, HIKARI.E_SF11, HIKARI.J_FK01, HIKARI.J_SK5, HIKARI.E_LASF08, HIKARI.E_LASF014, HIKARI.BASF12, HIKARI.E_BASF7, HIKARI.E_LASKH2, HIKARI.KZFH1, HIKARI.J_BAF3, HIKARI.E_K3, HIKARI.E_FK5, HIKARI.J_LASF017, HIKARI.J_F16, HIKARI.LF7, HIKARI.E_SK11, HIKARI.J_LLF6, HIKARI.Q_PSKH1S, HIKARI.E_LAFH2, HIKARI.E_SFS3, HIKARI.J_LASF01, HIKARI.J_LAK9, HIKARI.J_SF1, HIKARI.P_LASFH12S, HIKARI.LASFH6, HIKARI.F1, HIKARI.E_LAK7, HIKARI.J_LASFH6, HIKARI.J_LASF05, HIKARI.J_BAF10, HIKARI.E_LAK09, HIKARI.J_BASF7, HIKARI.E_LAK13, HIKARI.J_SFH2, HIKARI.J_FKH2, HIKARI.E_LAK02, HIKARI.F5, HIKARI.E_SK10, HIKARI.J_LAK12, HIKARI.J_LLF2, HIKARI.J_SK16, HIKARI.J_BAF4, HIKARI.E_PKH1, HIKARI.LLF1, HIKARI.E_SF14, HIKARI.F8, HIKARI.E_FK01, HIKARI.J_SF5, HIKARI.J_F5, HIKARI.J_LF6, HIKARI.P_SK5S, HIKARI.J_LASFH17, HIKARI.LAK12, HIKARI.Q_LASFH11S, HIKARI.E_K5, HIKARI.SF5, HIKARI.E_LASF03, HIKARI.J_LASF02, HIKARI.KZFS4, HIKARI.J_LASF03, HIKARI.E_LAK18, HIKARI.E_PSKH1, HIKARI.J_SF13, HIKARI.E_SSK5, HIKARI.E_F1, HIKARI.J_SK4, HIKARI.J_SK15, HIKARI.J_PSKH1, HIKARI.J_PSK02, HIKARI.J_LAF016, HIKARI.KZFH2, HIKARI.E_BK7, HIKARI.E_BAK2, HIKARI.E_SF10, HIKARI.LAF9, HIKARI.SF12, HIKARI.J_SK12, HIKARI.J_LAK01, HIKARI.E_SK12, HIKARI.E_LF6, HIKARI.J_LASKH2, HIKARI.J_SF7, HIKARI.J_LASFH2, HIKARI.J_LASF021, HIKARI.Q_PSKH2S, HIKARI.E_LAK011, HIKARI.E_SF4, HIKARI.SK18, HIKARI.J_SK14, HIKARI.BASF2, HIKARI.E_LASFH17, HIKARI.P_LASFH19S, HIKARI.E_BAF11, HIKARI.E_SSK8, HIKARI.E_BASF8, HIKARI.SF8, HIKARI.Q_LAK52S, HIKARI.P_LAF010S, HIKARI.J_LAK7, HIKARI.J_SF15, HIKARI.SK15, HIKARI.BAK2, HIKARI.SF7, HIKARI.J_LAK8, HIKARI.E_LLF2, HIKARI.E_BALF4, HIKARI.J_SFS3, HIKARI.SF15, HIKARI.E_LAF11, HIKARI.E_PSK02, HIKARI.J_SF03, HIKARI.E_LAK06, HIKARI.J_LAK18, HIKARI.J_LAK14, HIKARI.J_LAK10, HIKARI.E_LASF05, HIKARI.J_LAK011, HIKARI.J_SK11, HIKARI.BASF8, HIKARI.E_BAF10, HIKARI.KF6, HIKARI.E_LAK01, HIKARI.LAF09, HIKARI.E_LAF2, HIKARI.LAK9, HIKARI.SF11, HIKARI.SF14, HIKARI.J_LASF014, HIKARI.E_LAF05, HIKARI.E_BAF8, HIKARI.J_LLF1, HIKARI.J_LASFH15, HIKARI.Q_FKH2S, HIKARI.E_PSK03, HIKARI.E_LLF6, HIKARI.J_SSK8, HIKARI.J_LAF010, HIKARI.J_SK18, HIKARI.E_F3, HIKARI.P_FK01S, HIKARI.P_PSKH1S, HIKARI.E_LAK10, HIKARI.E_BAK4, HIKARI.J_PSK03, HIKARI.E_LASF04, HIKARI.E_KF6, HIKARI.E_SK18, HIKARI.J_SFH1, HIKARI.E_SF2, HIKARI.K5, HIKARI.E_F5, HIKARI.BASF6, HIKARI.E_LAF9, HIKARI.J_K5, HIKARI.SF13, HIKARI.E_SF5, HIKARI.J_LAF2, HIKARI.K3, INFRARED.CDSE, INFRARED.GERMANIUM, INFRARED.ZNSE, INFRARED.IRG100, INFRARED.NACL, INFRARED.CALCITE, INFRARED.F_SILICA, INFRARED.PBF2, INFRARED.MGF2, INFRARED.IRG3, INFRARED.CDTE, INFRARED.GEO2, INFRARED.KCL, INFRARED.GE_LONG, INFRARED.AMTIR1, INFRARED.GAAS, INFRARED.TI_1173, INFRARED.BAF2, INFRARED.IRG2, INFRARED.ZBLAN, INFRARED.IRG11, INFRARED.MGO, INFRARED.IRG9, INFRARED.SPINEL, INFRARED.IRG7, INFRARED.LIF, INFRARED.AMTIR3, INFRARED.CAF2, INFRARED.GE_OLD, INFRARED.ZNS_IR, INFRARED.CLRTR_OLD, INFRARED.CLEARTRAN, INFRARED.KBR, INFRARED.ALON, INFRARED.SILICON, INFRARED.ALN, INFRARED.BEO, INFRARED.SRTIO3, INFRARED.KRS5, INFRARED.ZBLA, INFRARED.ZNS_BROAD, INFRARED.IRG15, INFRARED.CSBR, INFRARED.AGCL, INFRARED.SRF2, INFRARED.ZNS_VIS, INFRARED.IRGN6, INFRARED.SAPPHIRE, ISUZU.IIR_SF1, LIGHTPATH.D_ZK3M, LIGHTPATH.C0550, LIGHTPATH.BD2, LIGHTPATH.D_ZLAF52LA_M, LIGHTPATH.ECO550, LIGHTPATH.NICHIA_MELT1, LIGHTPATH.BD1, LIGHTPATH.ECO550_E, LIGHTPATH.ECO550M, LIGHTPATH.PBH71, LIGHTPATH.D_ZLAF52LAM, LZOS.LZ_BF16, LZOS.LZ_CTK8, LZOS.LZ_TK12, LZOS.LZ_K100, LZOS.LZ_NEWGLASS, LZOS.LZ_LK5, LZOS.LZ_TF5, LZOS.LZ_TF10, LZOS.LZ_TF1, LZOS.LZ_LF9, LZOS.LZ_TK2, LZOS.LZ_LK6, LZOS.LZ_BK10, LZOS.LZ_LK7, LZOS.LZ_KF6, LZOS.LZ_TK17, LZOS.LZ_CTK9, LZOS.LZ_CTK12, LZOS.LZ_F13, LZOS.LZ_TBF10, LZOS.LZ_OK4, LZOS.LZ_BF1, LZOS.LZ_BF7, LZOS.LZ_LF5, LZOS.LZ_BF21, LZOS.LZ_CTK19, LZOS.LZ_BF25, LZOS.LZ_F6, LZOS.LZ_K8, LZOS.LZ_TK20, LZOS.LZ_TF4, LZOS.LZ_F4, LZOS.LZ_BF28, LZOS.LZ_TK9, LZOS.LZ_TK21, LZOS.LZ_KF7, LZOS.LZ_TF8, LZOS.LZ_BK8, LZOS.LZ_CTK3, LZOS.LZ_F1, LZOS.LZ_BK6, LZOS.LZ_TF7, LZOS.LZ_TF3, LZOS.LZ_TK16, LZOS.LZ_BF24, LZOS.LZ_LF7, LZOS.LZ_BF8, LZOS.LZ_TK14, LZOS.LZ_BF11, LZOS.LZ_BK4, LZOS.LZ_TF2, LZOS.LZ_F8, LZOS.LZ_OF1, LZOS.LZ_LK3, LZOS.LZ_TK23, MISC.SEAWATER, MISC.POLYCARB, MISC.LAF3, MISC.BASF5, MISC.CAF2, MISC.BASF55, MISC.TEO2, MISC.TYPEA, MISC.KDP, MISC.WATER, MISC.F_SILICA, MISC.SAN, MISC.CR39, MISC.CDS, MISC.SILICA, MISC.PYREX, MISC.ACRYLIC, MISC.PMMA, MISC.QUARTZ, MISC.COC, MISC.POLYSTYR, MISC.N15, MISC.VACUUM, RPO.EKPC, RPO.H_ZLAF55_MOLD, RPO.BSM16C_MOLD, RPO.IG6, RPO.D_LAK6_MOLD, RPO.N_LAF2_MOLD, RPO.S_NPH1_MOLD, RPO.IG5, RPO.H_ZLAF53_MOLD, RPO.D_LAK70_MOLD, RPO.H_ZLAF52_MOLD, RPO.S_LAL12_MOLD, RPO.E_FDS1_MOLD, RPO.D_LAK70, RPO.IG2, RPO.L_TIM28_MOLD, RPO.SF57_MOLD, RPO.IG4, RPO.D_ZLAF52A_MOLD, RPO.H_ZLAF56_MOLD, RPO.S_LAH60_MOLD, RPO.K_CSK120_MOLD, RPO.N_SK5_MOLD, RPO.K_VC79_MOLD, RPO.N_BK7_MOLD, RPO.S_LAL18_MOLD, RPO.H_LAK54_MOLD, RPO.N_FK51_MOLD, RPO.P_SK57_MOLD, RPO.L_LAM60_MOLD, RPO.S_LAL13_MOLD, RPO.TAF3_MOLD, RPO.D_K59_MOLD, RPO.TAC4_MOLD, RPO.VC78, RPO.K_VC89_MOLD, RPO.FDS9_MOLD, RPO.N_FK5_MOLD, RPO.TAF1_MOLD, RPO.VC78_MOLD, RPO.H_ZLAF50B_MOLD, RPO.BACD14_MOLD, RPO.N_LAK22_MOLD, TOPAS._5013X16, TOPAS._6015S_04, TOPAS._5013LS_01, UMICORE.GASIR1, UMICORE.GASIR2, ZEON.E48R, ZEON._480R, ZEON._330R]

max_stars_repo_name: rambunctiousapple/GlassCat

max_issues_repo_name: rambunctiousapple/GlassCat

max_forks_repo_name: rambunctiousapple/GlassCat


text:
using LightXML

if length(ARGS) < 1 error("L argument missing") end

L=parse(Int, ARGS[1])
# L = 4
N=L^2
nbonds = Int(4*N/2)

# Build square lattice
println("Building square lattice...")
# nearest neighbor square lattice
sql = reshape(1:N, L, L)
up = circshift(sql,(-1,0))
right = circshift(sql,(0,-1))
down = circshift(sql,(1,0))
left = circshift(sql,(0,1))
neighbors = vcat(up[:]',right[:]',down[:]',left[:]') # colidx = site, rowidx = up right down left

# site positions
positions = Vector{Vector{Float64}}(undef, N)
pi = 1
for x in 1:L
    for y in 1:L
        global positions, pi
        positions[pi] = [x, y] .- 1.0
        pi += 1
    end
end

# bonds
bonds = Vector{Vector{Int}}(undef, nbonds) # from, to, type
bondvecs = Vector{Vector{Float64}}(undef, nbonds) # to_pos - from_pos
ibond = 1
for site in 1:N
    global bonds, bondvecs, ibond
    up = neighbors[1,site]
    right = neighbors[2,site]

    # up bond
    bonds[ibond] = [site, up, 0]
    bondvecs[ibond] = [0, 1]
    ibond += 1

    # right bond
    bonds[ibond] = [site, right, 0]
    bondvecs[ibond] = [1, 0]
    ibond += 1
end

# Create ALPS like xml file
println("Creating ALPS like XML file...")
using LightXML

# create an empty XML document
xdoc = XMLDocument()

# create & attach a graph (root) node
graph = create_root(xdoc, "GRAPH")
nedges = Int(4*N/2)
set_attributes(graph, dimension=2, vertices=N, edges=nedges)

function addvertex!(node, id, typ, coordinates)
    v = new_child(node, "VERTEX")
    set_attributes(v, Dict("id"=>id, "type"=>typ))

    vc = new_child(v, "COORDINATE")
    add_text(vc, "$(join(coordinates, " "))")
end

function addedge!(node, src, trg, id, typ, vector)
    edge = new_child(node, "EDGE")
    set_attributes(edge, id=id)
    set_attributes(edge, source=src, target=trg)
    set_attributes(edge, Dict("type"=>typ, "vector"=>join(vector, " ")))
end

# add vertices to graph
for (vi, pos) in enumerate(positions)
    addvertex!(graph, vi, 0, Int.(pos))

end

# add edges to graph
for (ibond, b) in enumerate(bonds)
    addedge!(graph, b[1], b[2], ibond, b[3], Int.(bondvecs[ibond]))
end

# s = string(xdoc);
# print(xdoc)

# println("Not dumping.")
save_file(xdoc, "square_L_$(L)_W_$(L).xml")

# Create plot
println("Creating a plot of the lattice...")
using PyPlot

# plot bonds
for (ibond, b) in enumerate(bonds)
    src = positions[b[1]]
    trg = positions[b[2]]

    # don't show pbc bonds
    b[2] > b[1] || continue
    b[2] - b[1] < 2*L || continue

    plot([src[1], trg[1]], [src[2], trg[2]], color="black", linewidth=2.0)
    gca()[:set_axis_off]()
end

# plot sites
for (s, pos) in enumerate(positions)
    plot(pos..., marker="o", markersize=13, color="white", mec="black", mew=1.5)

end
# scatter(getindex.(positions, 1), getindex.(positions, 2), c=1:length(positions), cmap="Blues")

axis("equal")
savefig("square_L_$(L)_W_$(L).pdf")

println("Done.")

ext: jl

max_stars_repo_name: crstnbr/dqmc

max_issues_repo_name: crstnbr/dqmc

max_forks_repo_name: crstnbr/dqmc


text:
module TreeArrays

using Base: @_inline_meta, @_propagate_inbounds_meta, @pure

using StaticArrays, StructArrays, OffsetArrays
using Coordinates

export
    TreeSize,
    TreeIndex,
    TreeLinearIndex,
    TreeCartesianIndex,
    LeafNode,
    StructLeafNode,
    @StructLeafNode,
    Node,
    DynamicNode,
    DynamicHashNode,
    HashNode,
    TreeView,
    TreeArray,
    StructTreeArray,
    continuousview,
    spotview,
    eachleaf!,
    nleaves

const THREADS_THRESHOLD = 1 << 13

include("utils.jl")
include("MaskedArray.jl")
include("PropertyArray.jl")
include("AbstractNode.jl")
include("LeafNode.jl")
include("Node.jl")
include("HashNode.jl")
include("TreeIndex.jl")
include("TreeView.jl")
include("TreeArray.jl")
include("ContinuousView.jl")
include("iterators.jl")
include("show.jl")

end # module


text:
function DynamicGridVessel(::Type{q},::Type{B},::Type{K},::Type{Val{p}}, ::Type{N}, ::Type{C}) where {q <: NestedQuadratureRule, B <: GridBuild, K, p, N, C}
  DynamicGridVessel{q,B,K,p,N,C}(Dict{K,FlatGrid{q,N,C}}(),Array{Float64,2}(p,p), MatrixCache(Val{p}))
end

MatrixCache(::Type{Val{p}}) where p = MatrixCache{p}(Dict{Int,Array{Float64,2}}())
MatrixCache(p::Int) = MatrixCache{p}(Dict{Int,Array{Float64,2}}())

function MatrixVecSVec(x::Matrix, ::Type{Val{p}}) where p
    MatrixVecSVec(x, svectors(x, Val{p}))
end
function MatrixVecSVec(x::Vector{SVector{p,T}} where T<:Real) where p
    MatrixVecSVec(mat(x), x)
end
function svectors(x::Matrix{T}, ::Type{Val{p}}) where {p,T}
    reinterpret(SVector{p,T}, x, (size(x,2),))
end
function mat(x::Vector{SVector{p,Float64}}) where p
    reinterpret(Float64, x, ( p, length(x) ) )
end
@inline convert(::Type{Vector{SVector{p,T}}}, x::Matrix{T}) where {p,T} = svectors(x, Val{p})
@inline convert(::Type{Matrix{T}}, x::Vector{SVector{p,T}} where p) where T = mat(x)
@inline convert(::Type{MatrixVecSVec{p, T}}, x::Matrix{T} ) where {p,T} = MatrixVecSVec(x, Val{p})
@inline convert(::Type{MatrixVecSVec{p, T}}, x::Vector{SVector{p,T}} ) where {p,T} = MatrixVecSVec(x)

### These functions update the cached grid in place.
#LogDensities' Model() function uses heuristics to choose Benchmark-based heurstics (ie, >13 ? dimensions) to choose whether iterating over SVectors or a BLAS call are more performant.
@inline update_cache_grid!(nodes::Matrix, cache::MatrixVecSVec, μ, U) = update_cache_grid(nodes, cache.M, μ, U)
function update_cache_grid!(nodes::Matrix, cache::Matrix, μ, U)
    cache .= μ
    Base.LinAlg.BLAS.gemm!('N','N', 1.0, U, nodes, 1.0, cache)
end
@inline update_cache_grid!(nodes::Vector{SVector{p,T}} where {p,T}, cache::MatrixVecSVec, μ, U) = update_cache_grid!( nodes, cache.S, μ, U )
function update_cache_grid!(nodes::Vector{SVector{p,T}}, cache::Vector{SVector{d,T}}, μ, U) where {p, d, T}
    U_sm = SMatrix{d,p}(U)
    μ_sv = SVector{d}(μ)
    @inbounds for (i, j) in enumerate(nodes)
        cache[i] = μ_sv + U_sm * j
    end
end

#A sliding view evaluates all the grid points.
#This saves on any reading/writing one may have to do to memory.
#The advantage may be negligble for functions of simple vectors, but could save a lot of memory rewriting / object construction for other data types, like those offered in ConstrainedParameters.
function eval_f!(cache::Matrix, weights::Vector, density::Vector, baseline::Vector, svf::SlidingVecFun)
    set!(svf, cache)
    @inbounds for i ∈ eachindex(density)
        density[i] = weights[i] * exp( baseline[i] + eval!(svf) )
    end
    density ./= sum(density)
end
@inline eval_f!(cache::MatrixVecSVec, weights::Vector, density::Vector, baseline::Vector, svf::SlidingVecFun) = eval_f!(cache.M, weights, density, baseline, svf)
@inline eval_f!(FG::FlatGrid, svf::SlidingVecFun) = eval_f!(FG.cache, FG.weights, FG.density, FG.baseline, svf)
function eval_grid!(FG::FlatGrid, svf::SlidingVecFun, μ::AbstractVector, U::AbstractMatrix)
    update_cache_grid!(FG.nodes, FG.cache, μ, U)
    eval_f!(FG, svf)
    FG
end
function eval_grid!(FG::FlatGrid, f::Function, μ::AbstractVector, U::AbstractMatrix, ::Type{T}) where T
    update_cache_grid!(FG.nodes, FG.cache, μ, U)
    eval_f!(FG, FG.cache, f, T)
end

@inline eval_f!(g::FlatGrid, cache::MatrixVecSVec{p,Float64}, f::Function, ::Type{T}) where {p,T} = eval_f!(g, cache.S, f, T)
function eval_f!(g::FlatGrid, cache::Vector{SVector{p,Float64}}, f::Function, ::Type{T}) where {p,T}
    param_cache = map( enumerate( cache ) ) do k
        i, j = k
        f_val, p_cache = f( j )
        g.density[i] = g.weights[i] * exp( g.baseline[i] + f_val )
        p_cache
    end
#    Vector{T}( length( g.weights ) )
#    @inbounds for (i,j) ∈ enumerate( cache )
#        f_val, param_cache[i] = f( j )
#        g.density[i] = g.weights[i] * exp( g.baseline[i] + f_val )
#    end
    g.density ./= sum(g.density)
    param_cache, g.density
end
function Adapt(::Type{Adaptive{q, p, F, T}}, f::F, l::Int, n::Int, μ::A, U::B) where {q,p, F <: Function, A, B, T}
    ab = Adaptive{q, p, F, A, B, T}(Dict{SVector{p, Int},T}(), Dict{SVector{p,Int}, Float64}(), Dict{SVector{p,Int}, SVector{p, Float64}}(), Dict{SVector{p,Int}, Float64}(), Dict{SVector{p,Int},Float64}(), Dict{SVector{p, Int64}, Δprod{p}}(), NestedGrid(Val{p}, q), initialize_e(Val{p}), f, l, μ, U)
    construct!(ab, n)
    ab
end
function Adapt(::Type{AdaptiveRaw{q, p, SVF}}, svf::SVF, l::Int, n::Int, μ::A, U::B) where {q,p, SVF <: SlidingVecFun, d, A <: SVector{d}, B}
    ab = AdaptiveRaw{q, p, SVF, A, B, d}(Dict{SVector{p,Int}, Float64}(),Dict{SVector{p,Int}, SVector{d,Float64}}(), Dict{SVector{p,Int}, SVector{p, Float64}}(), Dict{SVector{p,Int}, Float64}(), Dict{SVector{p,Int},Float64}(), Dict{SVector{p, Int64}, Δprod{p}}(), NestedGrid(Val{p}, q), initialize_e(Val{p}), svf, l, μ, U)
    construct!(ab, n)
    ab
end

Adaptive(::Type{Val{p}}, ::F, ::Type{T}, n::Int = 1_000, ::Type{q} = GenzKeister, l::Int = 6) where {q,p,F,T} = Adaptive(Adaptive{q, p, F, T}, l, n)

function density(ab::Adaptive{q, d, F, A, B, T} where {q, d, F, A, B}, ::Type{N} where N, ::Type{C} where C, ::Type{Val{p}} where p) where T
  n = length(ab.Grid.grid)
  density = Vector{Float64}(n)
  params = Vector{T}(n)
  @inbounds for (i, (j,k)) ∈ enumerate(ab.Grid.grid.w)
    density[i] = ab.F_cache[j] * k
    params[i] = ab.cache[j]
  end
  density ./= sum(density)
  params, density
end
function density(ab::AdaptiveRaw{q, d, F} where F, ::Type{N}, ::Type{C}, ::Type{Val{p}}) where {q,p,d,N,C}
  n = length(ab.Grid.grid)
  nodes = Array{SVector{d,Float64}}(n)
  cache = Array{SVector{p,Float64}}(n)
  weights = Vector{Float64}(n)
  density = Vector{Float64}(n)
  @inbounds for (i, (j,k)) ∈ enumerate(ab.Grid.grid.w)
    weights[i] = k
    density[i] = ab.F_cache[j] * k
    nodes[i] = get_node(ab, j)
    cache[i] = ab.cache[j]
  end
  density ./= sum(density)
  FlatGrid{q,N,C}(convert(N,nodes), convert(C,cache), weights, density, Vector{Float64}(n))
end

 @noinline function build!(GV::DynamicGridVessel{q, B, K, p, N, C}, ::Type{Bc}, f, i::K, μ::Vector, U::Matrix, l::Int = 6) where {q, p, d, B <: AdaptiveBuild{q}, Bc <: AdaptiveBuild{q, d}, K, N, C}
  ab = Adapt(Bc, f, l, i[end], SVector{p}(μ), SizedArray{Tuple{p,d}}(U))
  GV.grids[i] = FlatGrid(ab, N, C, Val{p})
  for v ∈ values(ab.Neighbors)
    expand_grid!(ab.Grid, v)
  end
  density(ab, N, C, Val{p})
end
function build!(GV::DynamicGridVessel{q, B, K, p, N, C}, ::Type{Bc}, svf::SVF, i::K, μ::AbstractVector, U::AbstractMatrix) where {q, p, SVF <: SlidingVecFun, B <: aPrioriBuild{q}, Bc <: aPrioriBuild{q,p,SVF}, K, N, C}
    GV.grids[i] = grid = FlatGrid(Bc, ind(i), Val{p}, N, C)
    eval_grid!(grid, svf, μ, U)
end
function build!(GV::DynamicGridVessel{q, B, K, p, N, C}, ::Type{Bc}, f::F, i::K, μ::AbstractVector, U::AbstractMatrix) where {q, p, T, F<:Function, B <: aPrioriBuild{q}, Bc <: Smolyak{q,p,F,T}, K, N, C}
    GV.grids[i] = grid = FlatGrid(Bc, ind(i), Val{p}, N, C)
    eval_grid!(grid, f, μ, U, T)
end
@inline ind(i::Vector{Int}) = i
@inline ind(i::Tuple{Int,Vector{Int}}) = i[2]

#Oops, the ps for dispatch here should be pulled from R when R <: Static Rank.
#This would also allow for soemthing cleaner than "Dynamic Inds."
#Instead: given Val{d} ? use d : use i[1]
@inline function calc_grid!(Grid::DynamicGridVessel{q, B, K, p} where {q <: QuadratureRule}, i::K, svf::SVF, μ::Vector, U::Matrix) where {p, B <: RawBuild, K, SVF <: SlidingVecFun}
  build!(Grid, B{p, SVF}, svf, i, μ, U)
end
@inline function calc_grid!(Grid::DynamicGridVessel{q, B, K, p} where {q <: QuadratureRule}, i::K, svf::F, μ::Vector, U::Matrix, ::Type{T}) where {p, B <: CacheBuild, K, F <: Function, T}
  build!(Grid, B{p, F, T}, svf, i, μ, U)
end

#This is probably really bad, but these indices "K" are used by JointPosteriors when a dynamic dispatch on grid construction is necessary.
#In this case, these sets of tuples are generated for Dynamic Rank models, where the dimensionality is reduced by variable amounts via LDR.
#If one has an idea of how many parameters they wish to keep, "Fixed{p}" is better LDR because it allows us to avoid this dynamic dispatch.
DynamicInds = Union{Tuple{Int,Int,Int},Tuple{Int,Vector{Int}}}
function calc_grid!(Grid::DynamicGridVessel{q, B, K, p, N, C} where {q <: QuadratureRule}, i::K, svf::SVF, μ::Vector, U::Matrix) where {p, B <: RawBuild, K <: DynamicInds, SVF <: SlidingVecFun, N, C}
  build!(Grid, B{i[1], SVF}, svf, i, μ, U)::FlatGrid{q,N,C}
end
function calc_grid!(Grid::DynamicGridVessel{q, B, K, p, N, C} where {q <: QuadratureRule}, i::K, f::F, μ::Vector, U::Matrix, ::Type{T}) where {p, B <: CacheBuild, K <: DynamicInds, N, F, C, T}
  build!(Grid, B{i[1], F, T}, f, i, μ, U)::FlatGrid{q,N,C}
end

function eval_grid!( Grid::G, svf::SlidingVecFun, μ::Vector, U::Matrix, i::K ) where {q, B, K, G <: GridVessel{q, B, K}}
    haskey(Grid.grids, i) ? eval_grid!(Grid.grids[i], svf, μ, U) : calc_grid!(Grid, i, svf, μ, U)
end
function eval_grid!( Grid::G, f::Function, μ::Vector, U::Matrix, i::K, ::Type{MP} ) where {q, B, K, G <: GridVessel{q, B, K}, MP}
    haskey(Grid.grids, i) ? eval_grid!(Grid.grids[i], f, μ, U, MP) : calc_grid!(Grid, i, f, μ, U, MP)
end

@inline calc_baseline(::Type{GenzKeister}, n::Vector{SVector{p,T}}) where {p,T} = sum.(abs2, n)
@inline calc_baseline(::Type{KronrodPatterson}, n::Vector{SVector{p,T}}) where {p,T} = sum.(log_sigmoid_jacobian, n)

@inline transform_nodes(::Type{GenzKeister}, ::Type{N} where N, n) = n
@inline transform_nodes(::Type{KronrodPatterson}, ::Type{Matrix{Float64}}, n) = sigmoid.(mat(n))
function transform_nodes(::Type{KronrodPatterson}, ::Type{Vector{SVector{p,Float64}}}, n::Vector{SVector{p,Float64}}) where p
    @inbounds for (i, j) ∈ enumerate(n)
        n[i] = sigmoid.(j)
    end
    n
end
function FlatGrid(::Type{<:SmolyakBuild{q,d}}, seq::Vector{Int}, ::Type{p}, ::Type{N}, ::Type{C}) where {q,d,p,N,C}
  grid = NestedGrid(p, q, seq)
  smolyak!(grid, length(seq))
  FlatGrid(grid, p, N, C)
end
function FlatGrid(Grid::NestedGrid{d,q}, ::Type{p}, ::Type{N}, ::Type{C}) where {q,d,p,N,C}
  n = length(Grid.grid)
  nodes = Vector{SVector{d,Float64}}(n)
  weights = Vector{Float64}(n)
  @inbounds for (i, (j,k)) ∈ enumerate(Grid.grid.w)
    weights[i] = k
    nodes[i] = get_node.(Grid, j)
  end
  base = calc_baseline(q, nodes)
  FlatGrid(transform_nodes(q, N, nodes), weights, base, Vector{Float64}(n), q, N, C, p, n)
end
function FlatGrid(ab::Adaptive{q,d,F}, ::Type{N}, ::Type{C}, ::Type{Val{p}}) where {q,d,p,F,N,C}
  n = length(ab.Grid.grid)
  nodes = Vector{SVector{d,Float64}}(n)
  weights = Vector{Float64}(n)
  baseline = Vector{Float64}(n)
  @inbounds for (i, (j,k)) ∈ enumerate(ab.Grid.grid.w)
    weights[i] = k
    nodes[i] = get_node(ab, j)
    baseline[i] = ab.baseline_cache[j]
  end
  FlatGrid(nodes, weights, baseline, Vector{Float64}(n), q, N, C, Val{p}, n)
end
function FlatGrid(ab::AdaptiveRaw{q,d,F}, ::Type{N}, ::Type{C}, ::Type{Val{p}}) where {q,d,p,F,N,C}
  n = length(ab.Grid.grid)
  nodes = Vector{SVector{d,Float64}}(n)
  weights = Vector{Float64}(n)
  baseline = Vector{Float64}(n)
  @inbounds for (i, (j,k)) ∈ enumerate(ab.Grid.grid.w)
    weights[i] = k
    nodes[i] = get_node(ab, j)
    baseline[i] = ab.baseline_cache[j]
  end
  FlatGrid(nodes, weights, baseline, Vector{Float64}(n), q, N, C, Val{p}, n)
end
@inline function FlatGrid(nodes::Vector{SVector{d,Float64}} where d, weights::Vector, baseline::Vector, density::Vector, ::Type{q}, ::Type{Matrix{Float64}}, ::Type{Matrix{Float64}}, ::Type{Val{p}}, n::Int) where {q, p}
    FlatGrid{q, Matrix{Float64}, Matrix{Float64}}(mat(nodes), Array{Float64,2}( p , n ), weights, density, baseline)
end
@inline function FlatGrid(nodes::N, weights::Vector, baseline::Vector, density::Vector, ::Type{q}, ::Type{N}, ::Type{C}, ::Type{Val{p}}, n::Int) where {q, p, N, C}
    FlatGrid{q, N, C}(nodes, convert(C, Vector{SVector{p,Float64}}(n)), weights, density, baseline)
end
@inline function FlatGrid(nodes::Vector{SVector{d,Float64}} where d, weights::Vector, baseline::Vector, density::Vector, ::Type{q}, ::Type{Matrix{Float64}}, ::Type{MatrixVecSVec{p,Float64}}, ::Type{Val{p}}, n::Int) where {q, p}
    FlatGrid{q, Matrix{Float64}, MatrixVecSVec{p,Float64}}(mat(nodes),
    MatrixVecSVec(Matrix{Float64}(p,n), Val{$p}), weights, density, baseline)
end

mats(mc::MatrixCache{p}, r) where p = get!(() -> Array{Float64,2}(p,r), mc.d, r)
mats(mc::MatrixCache{p}) where p = get!(() -> Array{Float64,2}(p,p), mc.d, p)
@inline mats(g::GridVessel, r::Int) = mats(g.mats, r)
@inline mats(g::GridVessel) = mats(g.mats)


text:
using FixedPointNumbers, Compat.Test

@test isempty(detect_ambiguities(FixedPointNumbers, Base, Core))

for f in ["normed.jl", "fixed.jl"]
    println("Testing $f")
    include(f)
end


text:
@testset "Genus" begin
  Qx, x = FlintQQ["x"]
  K, a = NumberField(x - 1, "a", cached = false)
  OK = maximal_order(K)
  rlp = real_places(K)
  sig = Dict(rlp[1] => 2)

  p2 = prime_decomposition(OK, 2)[1][1]
  p3 = prime_decomposition(OK, 3)[1][1]
  p5 = prime_decomposition(OK, 5)[1][1]

  @test length(Hecke.local_genera_quadratic(K, p2, rank = 2, det_val = 0)) == 8
  @test length(Hecke.local_genera_quadratic(K, p2, rank = 2, det_val = 1)) == 8
  @test length(Hecke.local_genera_quadratic(K, p2, rank = 2, det_val = 2)) == 16
  @test length(Hecke.local_genera_quadratic(K, p2, rank = 2, det_val = 3)) == 24
  @test length(Hecke.local_genera_quadratic(K, p2, rank = 2, det_val = 4)) == 32

  @test length(Hecke.local_genera_quadratic(K, p3, rank = 5, det_val = 0)) == 2
  @test length(Hecke.local_genera_quadratic(K, p3, rank = 5, det_val = 1)) == 4
  @test length(Hecke.local_genera_quadratic(K, p3, rank = 5, det_val = 2)) == 8
  @test length(Hecke.local_genera_quadratic(K, p3, rank = 5, det_val = 3)) == 16
  @test length(Hecke.local_genera_quadratic(K, p3, rank = 5, det_val = 4)) == 28
  @test length(Hecke.local_genera_quadratic(K, p3, rank = 5, det_val = 5)) == 46
  @test length(Hecke.local_genera_quadratic(K, p3, rank = 5, det_val = 6)) == 72

  @test length(Hecke.local_genera_quadratic(K, p5, rank = 4, det_val = 2)) == 8
  @test length(Hecke.local_genera_quadratic(K, p5, rank = 4, det_val = 1)) == 4
  @test length(Hecke.local_genera_quadratic(K, p5, rank = 2, det_val = 0)) == 2
  @test length(Hecke.local_genera_quadratic(K, p5, rank = 2, det_val = 1)) == 4

  @test length(Hecke.genera_quadratic(K, rank = 2, signatures = sig, det = 5^2 * 8 * 9 * OK)) == 27
  @test length(Hecke.genera_quadratic(K, rank = 2, signatures = sig, det = 5 * 7 * 8 * 9 * OK)) == 36
  @test length(Hecke.genera_quadratic(K, rank = 2, signatures = sig, det = 2^5 * OK)) == 5
  @test length(Hecke.genera_quadratic(K, rank = 2, signatures = sig, det = 11 * 13^2 * OK)) == 6
end


text:
#  ------------------------------------------------------------------------------------------
#  Copyright (c) Microsoft Corporation. All rights reserved.
#  Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
#  ------------------------------------------------------------------------------------------

module TestRuntime

    ENV["AZ_BATCH_TASK_WORKING_DIR"] = pwd()    # use AzureClusterlessHPC runtime
    ENV["CREDENTIALS"] = ""
    ENV["FILENAME"] = "test_expr.dat"

    using AzureClusterlessHPC, Serialization, Test

    function __init__()
        global azureclusterlesshpc_runtime = ["core/test_batch_runtime.jl"]
    end

    function  runtests()
        ENV["AZ_BATCH_TASK_WORKING_DIR"] = pwd()    # use AzureClusterlessHPC runtime

        for t=azureclusterlesshpc_runtime
            @testset "Test $t" begin
                @time include(t)
            end
        end
    end
end


text:
using Pkg
Pkg.activate(pwd())

# # Bank account

abstract type Currency end

struct Euro <: Currency
    value::Float64
end

struct Dollar <: Currency
    value::Float64
end

#+

Euro(1)

isa(Dollar(2), Currency) # equivalent to typeof(Dollar(2)) <: Currency

#+

struct BankAccount{C<:Currency}
    owner::String
    transaction::Vector{Currency}

    function BankAccount(owner::String, C::Type{<:Currency})
        return new{C}(owner, Currency[C(0)])
    end
end

#+

b = BankAccount("Paul", Euro)
push!(b.transaction, Dollar(2))
b

#+

w = [Euro(0)]
push!(w, Dollar(2))

#+

[Int32(123), 1, 1.5, 1.234f0]
Real[Int32(123), 1, 1.5, 1.234f0]

# ## Custom print

symbol(T::Type{<:Currency}) = string(nameof(T))
symbol(::Type{Euro}) = "€"

Base.show(io::IO, c::C) where {C <: Currency} = print(io, c.value, " ", symbol(C))
Base.show(io::IO, c::Currency) = print(io, c.value, " ", symbol(typeof(c)))

#+

Euro(1)
Euro(1.5)

# ### Exercise:
# Define a new method for the `symbol` function for `Dollar`.
#
# **Hint:** the dollar symbol `$` has a special meaning in Julia. Do not forget to use the
# `\` symbol when using the dollar symbol in a string.
#
# ---
# ### Solution:

# ---
#
# ## Conversion

dollar2euro(c::Dollar) = Euro(0.83 * c.value)
euro2dollar(c::Euro) = Euro(c.value / 0.83)

#+

eur = dollar2euro(Dollar(1.3))
euro2dollar(eur)

#+

rate(::Type{Euro}, ::Type{Dollar}) = 0.83
rate(T::Type{<:Currency}, ::Type{Euro}) = 1 / rate(Euro, T)

#+

rate(Euro, Dollar)
rate(Dollar, Euro)

#+

rate(Euro, Euro)
rate(Dollar, Dollar)

#+

rate(::Type{T}, ::Type{T}) where {T<:Currency} = 1

#+

rate(Dollar, Dollar)
rate(Euro, Euro)

#+

methods(rate)

#+

rate(::Type{Euro}, ::Type{Euro}) = 1

#+

rate(Euro, Euro)

#+

rate(T::Type{<:Currency}, C::Type{<:Currency}) = rate(Euro, C) * rate(T, Euro)

#+

struct Pound <: Currency
    value::Float64
end

symbol(::Type{Pound}) = "£"
rate(::Type{Euro}, ::Type{Pound}) = 1.13

#+

rate(Pound, Pound) # 1
rate(Euro, Pound) # 1.13
rate(Pound, Euro) # 1/1.13 = 0.8849557522123894
rate(Dollar, Pound) # 1.13 * 1/0.83 = 1.36144578313253
rate(Pound, Dollar) # 0.83 * 1/1.13 = 0.7345132743362832

#+

Base.convert(::Type{T}, c::T) where {T<:Currency} = c
Base.convert(::Type{T}, c::C) where {T<:Currency, C<:Currency} = T(c.value * rate(T, C))

#+

eur = convert(Euro, Dollar(1.3))
pnd = convert(Pound, eur)
dlr = convert(Dollar, pnd)

# ### Exercise:
# We see that the print style of currencies is not ideal. Usually, we are not interested in
# more than the first two digits after the decimal point. Redefine the method in the `show`
# function to print currencies so that the result will be rounded to 2 digits after the
# decimal point.
#
# ---
# ### Solution:

# ---
#
# Promotion

Base.promote_rule(::Type{Euro}, ::Type{<:Currency}) = Euro
Base.promote_rule(::Type{Dollar}, ::Type{Pound}) = Dollar

#+

promote_type(Euro, Dollar)
promote_type(Pound, Dollar)
promote_type(Pound, Dollar, Euro)

#+

promote(Euro(2), Dollar(2.4))
promote(Pound(1.3), Euro(2))
promote(Pound(1.3), Dollar(2.4), Euro(2))

# ### Exercise:
# Define a new currency, `CzechCrown`, that will represent Czech crowns. The exchange rate
# to euro is `0.038`, and all other currencies should take precedence over the Czech crown.
#
# ---
# ### Solution:

# ---
#
# Basic arithmetic operations

Base.:+(x::Currency, y::Currency) = +(promote(x, y)...)
Base.:+(x::T, y::T) where {T <: Currency} = T(x.value + y.value)

#+

Dollar(1.3) + CzechCrown(4.5)
CzechCrown(4.5) + Euro(3.2) + Pound(3.6) + Dollar(12)

#+

sum([CzechCrown(4.5), Euro(3.2), Pound(3.6), Dollar(12)])

#+

CzechCrown.([4.5, 2.4, 16.7, 18.3]) .+ Pound.([1.2, 2.6, 0.6, 1.8])
CzechCrown.([4.5, 2.4, 16.7, 18.3]) .+ Dollar(12)

#+

Base.broadcastable(c::Currency) = Ref(c)

#+

c_ref = Ref(Euro(1))
axes(c_ref)
ndims(c_ref)
c_ref[]

#+

CzechCrown.([4.5, 2.4, 16.7, 18.3]) .+ Dollar(12)

# ### Exercise:
# In the section above, we defined the addition for all subtypes of the `Currency`. We also
# told the broadcasting system in Julia to treat all subtypes of the `Currency` as scalars.
# Follow the same pattern and define all following operations: `-`, `*`, `/`.
#
# **Hint:** Define only the operations that make sense. For example, It makes sense
# to multiply
# `1 €` by 2 and get `2 €`. But it does not make sense to multiply `1 €` by `2 €`.
#
# ---
# ### Solution:

# ---
#
# ## Currency comparison

Dollar(1) == Euro(0.83)
Dollar(1) != Euro(0.83)

#+

Base.:(==)(x::Currency, y::Currency) = ==(promote(x, y)...)
Base.:(==)(x::T, y::T) where {T <: Currency} = ==(x.value, y.value)

#+

Dollar(1) == Euro(0.83)
Dollar(1) != Euro(0.83)

#+

Base.isless(x::Currency, y::Currency) = isless(promote(x, y)...)
Base.isless(x::T, y::T) where {T <: Currency} = isless(x.value, y.value)

#+

Dollar(1) < Euro(0.83)
Dollar(1) > Euro(0.83)
Dollar(1) <= Euro(0.83)
Dollar(1) >= Euro(0.83)

#+

vals = Currency[CzechCrown(100), Euro(0.83),  Pound(3.6), Dollar(1.2)]

extrema(vals)
argmin(vals)
sort(vals)

# ## Back to bank account

balance(b::BankAccount{C}) where {C} = convert(C, sum(b.transaction))

#+

account = BankAccount("Paul", CzechCrown)
balance(account)

#+

function Base.show(io::IO, b::BankAccount{C}) where {C<:Currency}
    println(io, "Bank Account:")
    println(io, "  - Owner: ", b.owner)
    println(io, "  - Primary currency: ", nameof(C))
    println(io, "  - Balance: ", balance(b))
    print(io,   "  - Number of transactions: ", length(b.transaction))
end

#+

account

#+

function (b::BankAccount{T})(c::Currency) where {T}
    balance(b) + c >= T(0) || throw(ArgumentError("insufficient bank account balance."))
    push!(b.transaction, c)
    return
end

#+

account(Dollar(10))
account(-2*balance(b))
account(Pound(10))
account(Euro(23.6))
account(CzechCrown(152))

#+

account
account.transaction