htmol
Version:
NEXT-GENERATION MOLECULAR DYNAMICS WEB VISUALIZATION
516 lines (496 loc) • 21.9 kB
JavaScript
/*
This file is part of HTMoL:
Copyright (C) 2014 Dr. Mauricio Carrillo-Tripp
http://tripplab.com
Developers:
v1.0 Leonardo Alvarez-Rivera, Francisco Javier Becerra-Toledo, Adan Vega-Ramirez
v2.0 Javier Garcia-Vieyra
v3.0 Omar Israel Lara-Ramirez, Eduardo González-Zavala, Emmanuel Quijas-Valades, Julio Cesar González-Vázquez
v3.5 Leonardo Alvarez-Rivera
*/
var identify=false,center=false,distance=false,nameatom=false,numberatom=false,detailsatom=false,angle=false,alfabeta=false;
var AXIS;
var ALFA={
'GLY':[-16, -18, -18, -29, -41, -51, -67, -85, -105, -64, -42, -37, -30, -33, -26, -21, -17],
'ALA':[18, 20, 23, 25, 32, 40, 45, 45, 62, 58, 51, 45, 48, 43, 37, 30, 32],
'VAL':[1, 1, 5, 9, 0, -2, -9, 10, -5, 4, -5, -3, -8, -11, -1, 0, -7, -7],
'LEU':[17, 19, 22, 28, 23, 29, 37, 37, 51, 48, 54, 59, 41, 36, 34, 28, 15],
'ILE':[-21, -19, -15, -5, 0, 2, 10, 9, 17, 12, 8, 12, 6, 6, 16, 18, 9],
'SER':[-23, -16, -18, -13, -20, -25, -27, -31, -51, -41, -47, -43, -35, -34, -38, -34, -36],
'THR':[-13, -21, -16, -16, -14, -11, -7, -14, -28, -30, -33, -30, -20, -17, -18, -12, -8],
'ASP':[16, 20, 18, 14, 23, 22, 19, 26, -1, -5, -26, -35, -21, -6, -3, -1, 1],
'GLU':[19, 24, 31, 35, 39, 36, 36, 45, 52, 40, 14, -17, -13, -14, -10, -7, -2],
'ASN':[2, 3, -2, -6, -6, -9, -16, -22, -44, -29, -24, -13, 0, -2, -4, -5, 3],
'GLN':[7, 9, 6, 0, 7, 0, -3, 10, 23, 35, 29, 23, 16, 10, 0, 0, 1],
'LYS':[25, 24, 22, 18, 14, 16, 16, 25, 28, 37, 44, 54, 49, 44, 39, 44, 47],
'HIS':[14, 0, -7, -6, -14, -6, -2, 1, 2, 21, 24, 25, 27, 25, 19, 25, 31],
'ARG':[1, -5, -19, -25, -16, -16, -7, -4, -1, -1, 3, 6, 0, 0, -6, 8, 0],
'PHE':[0, 7, 17, 23, 23, 18, 29, 26, 32, 40, 34, 28, 12, 3, 15, 6, 4],
'TYR':[-8, -9, -10, -18, -13, -13, -31, -26, -15, -24, -18, -23, -28, -19, 16, -18, -23],
'TRP':[8, 18, 11, 9, 2, 26, 37, 29, 30, 17, -1, 12, 13, 11, 31, 13, 2],
'CYS':[-77, 71, -74, -74, -67, -60, -71, -61, -47, -46, -56, -58, -67, -70, -71, -80, -81],
'MET':[2, -12, -9, -1, 0, 21, 33, 25, 34, 41, 39, 44, 29, 15, 4, -2, -11],
'PRO':[0, -6, -7, -6, -15, -22, -35, -47, -68, -179, -95, -72, -53, -37, -28, -22, -11]
};
var Sheet={
'GLY':[19, 27, 27, 37, 44, 40, 36, -8, -36, -13, 17, 33, 44, 41, 30, 23, 26],
'ALA':[-11, -7, -6, -10, -12, -25, -32, -33, -37, -33, -24, -21, -15, -19, -24, -24, -26],
'VAL':[-12, -12, -13, -19, -10, 12, 48, 64, 81, 73, 42, 9, -7, -16, -16, -14, -4],
'LEU':[-24, -21, -32, -30, -40, -32, -3, 11, 23, 21, -4, -27, -37, -36, -38, -27, -30],
'ILE':[-21, -23, -27, 3, 8, 16, 38, 63, 67, 58, 25, 9, -16, -21, -22, -24, 11],
'SER':[39, 32, 39, 34, 24, 17, 2, -6, -15, -4, 24, 38, 33, 35, 38, 31, 24],
'THR':[16, 5, 19, 18, 14, 15, 15, 36, 33, 21, 5, 14, 11, 29, 32, 40, 37],
'ASP':[-7, -11, 0, -5, -2, -26, -56, -88, -105, -64, -29, -10, 9, 0, 4, -7, -16],
'GLU':[-17, -12, -18, -30, -21, -16, -32, -33, -44, -50, -42, -27, -16, -4, -13, -6, -3],
'ASN':[0, 10, 17, 20, 7, 1, -33, -83, -65, -18, -4, 7, 15, 20, 24, 25, 19],
'GLN':[12, 11, 9, 5, 0, -3, -5, -4, -8, -45, -37,-27, -16, -5, 0, 14, 19],
'LYS':[-20, -19, -8, -9, -17, -12, -41, -33, -32, -46, -48, -36, -37, -51, -43, -44, -43],
'HIS':[9, 4, -8, -2, -8, 0, -16, -19, -16, -5, 5, 9, 8, -4, 0, 12, 26],
'ARG':[4, 12, 11, 1, 15, 11, 11, 24, 10, 6, 25, 5, -7, -9, 0, 4, 1],
'PHE':[-30, -31, -39, -38, -34, -28, 10, 32, 39, 32, 13, 0, 2, -12, -18, -41, -13],
'TYR':[16, 14, 22, 18, 22, 18, 37, 41, 48, 30, 12, 5, 13, 22, 26, 20, 24],
'TRP':[-21, -26, -50, -39, 12, 28, 39, 46, 43, 22, 0, 10, 7, 8, 33, 27],
'CYS':[9, 19, -9, -40, -28, -29, -19, 17, 43, 38, 25, 3, -8, -5, 1, 8, -28],
'MET':[-18, -39, -58, -69, -34, 9, 12, 15, 32, -4, -25, -45, -52, -39, -61, -46, -36],
'PRO':[14, 6, 0, 15, 9, -8, -40, -71, -100, -78, -34, -6, -6, 2, 5, 7, 14]
};
var Turns={
'GLY':[0, -3, -3, -3, -1, 8, 21, 65, 95, 56, 20, 4, -9, -4, 0, 1, -4],
'ALA':[-7, -11, -15, -14, -19, -19, -19, -19, -33, -31, -30, -26, -33, -25, -16, -9, -11],
'VAL':[7, 10, 13, 13, 9, 0, -27, -45, -70, -53, -28, 1, 15, 13, 11, 16, 10],
'LEU':[0, -1, 0, -4, 4, -4, -29, -40, -62, -58, -45, -36, -13, -9, -5, -6, 6],
'ILE':[31, 31, 30, 3, -4, -11, -37, -58, -68, -55, -24, -15, 6, 9, 1, 0, 0],
'SER':[-9, -9, -13, -12, 0, 9, 20, 30, 49, 35, 18, 4, 3, 0, 1, 4, 10 ],
'THR':[0, 14, 0, 1, 2, 0, -3, -13, -1, 9, 22, 14, 8, -6, -7, -19, -19],
'ASP':[-7, -8, -14, -7, -17, -2, 16, 23, 53, 41, 40, 34, 11, 6, 1, 6, 9],
'GLU':[-4, -12, -14, -11, -20, -19, -11, -19, -20, -5, 13, 31, 22, 15, 17, 11, 5],
'LYS':[-7, -8, -12, -8, 0, -4, 11, 0, -3, -5, -10, -26, -20, -9, -7, -12, -15],
'HIS':[-17, -1, 12, 7, 18, 6, 13, 11, 9, -13, -23, -27, -28, -17, -16, -12, -9],
'ARG':[-2, -2, 8, 20, 3, 6, 0, -12, -4, -1, -20, -7, 7, 6, -8, 0],
'PHE':[20, 13, 8, 3, 1, 3, -32, -46, -57, -60, -38, -23, -11, 6, 0, 20, 5],
'TYR':[-3, -1, -6, 2, -4, -1, -1, -8, -22, -1, 7, 15, 14, 0, -4, 1, 1],
'TRP':[7, 1, 20, 16, 20, -31, -53, -55, -61, -47, -12, -9, -16, -13, -32, -34, -20],
'CYS':[48, 37, 60, 79, 68, 64, 64, 32, 3, 6, 23, 41, 54, 54, 50, 50, 76],
'MET':[10, 34, 41, 40, 21, -23, -37, -31, -53, -33, -18, -11, 5, 11, 30, 30, 32],
'PRO':[-8, 1, 6, -4, 7, 23, 52, 78, 105, 158, 88, 56, 44, 27, 20, 13, 0 ]
};
var LstAminoacid=[
"GLY",
"ALA",
"VAL",
"LEU",
"ILE",
"SER",
"THR",
"GLU",
"ASN",
"GLN",
"LYS",
"HIS",
"ARG",
"PHE",
"TYR",
"TRP",
"CYS",
"MET",
"ASP",
"PRO"
]
var LstAtoms=[
"C",
"H",
"O",
"PB",
"TI",
"N",
"S",
"P"
]
var LstViews={
"Front":{name:"FrontView"},
"Left":{name:"LeftView"},
"Right":{name:"RightView"},
"Up":{name:"UpView"},
"Down":{name:"DownView"},
"Back":{name:"BackView"}
}
function AsignaColor(atom)
{
//
switch (atom.Element)
{
case 'H':
atom.ColorName="white";
atom.ColorRGB=[1.0, 1.0, 1.0, 1.0]; //Es blanco
break;
case 'C':
atom.ColorName="cyan";
atom.ColorRGB=[0.25,0.75,0.75,1.0]; //Es cyan
break;
case 'O':
atom.ColorName="red";
atom.ColorRGB=[1.0, 0.0, 0.0, 1.0]; //Es rojo
break;
case 'N':
atom.ColorName="blue";
atom.ColorRGB=[0.0, 0.0, 1.0, 1.0]; //Es azul
break;
case 'S':
atom.ColorName="yellow";
atom.ColorRGB=[1.0, 1.0, 0.0, 1.0]; //es amarillo
break;
default:
atom.ColorName="default";
atom.ColorRGB=[1.0, 1.0, 1.0, 1.0]; //Es blanco
}
//console.log("HTMoL3: assigned color is "+atom.ColorName+" for atom "+atom.NameAtom+" of type "+atom.Element);
}
var LstColors=[
"yellow",
"red",
"orange",
"blue",
"green",
"purple",
"pink",
"gray",
"brown",
"white"
];
//lista de colores
var white= [1.0, 1.0, 1.0, 1.0];
var red= [1.0, 0.0, 0.0, 1.0];
var green= [0.0, 1.0, 0.0, 1.0];
var blue= [0.0, 1.0, 0.0, 1.0];
var yellow= [1.0, 1.0, 0.0, 1.0];
var AtomsBonds={
'N':['CA','CD','H1','H2','H3'],
'CA':['C','CB','HA'],
'CG':['CD','CB','CD1','CD2','OD','HG'],
'NE':['CD','CZ'],
'C':['O'],
'CA':['N','C','CB'],
'CB':['CA'],
'CG1':['CB','CD1'],
'CG1A':['CB'],
'CG1B':['CB'],
'CG2':['CB'],
'CD':['CG'],
'CD':['CE'],
'CD1':['CE1'],
'CD2':['CE2'],
'CD1':['CG1','CG'],
'CD2':['CG'],
'CE3':['CD2','CZ3'],
'CE':['CD'],
'CE1':['ND1','CD1','CZ'],
'CE2':['CD2','CZ'],
'CG2':['CB'],
'CZ':['CE1','CE2'],
'CZ':['NE'],
'CZ2':['CE2','CH2'],
'CZ3':['CH2'],
'H':['N'],
'HA':['CA'],
'HA1':['CA'],
'HA2':['CA'],
'HA3':['CA'],
'HB':['CB'],
'HB1':['CB'],
'HB2':['CB'],
'HB3':['CB'],
'HG':['SG','CG','OG'],
'HG1':['CG','OG1'],
'HG2':['CG','OG2'],
'HG3':['CG','OG3'],
'HD1':['CD','CD1'],
'HD2':['CD','CD2'],
'HD3':['CD','CD3'],
'HE':['NE'],
'HE1':['CE','CE1','NE1'],
'HE2':['CE','CE2','NE2'],
'HE3':['CE','CE3','NE3'],
'HH11':['NH1'],
'HH12':['NH1'],
'HH21':['NH2'],
'HH22':['NH2'],
'HB':['CB'],
'HB1':['CB'],
'HB2':['CB'],
'HB3':['CB'],
'HG':['SG','OG'],
'HG1':['CG','OG1'],
'HG2':['CG','OG2'],
'HG3':['CG&','OG3'],
'HG11':['CG1'],
'HG12':['CG1'],
'HG13':['CG1'],
'HG14':['CG1'],
'HG21':['CG2'],
'HG22':['CG2'],
'HG23':['CG2'],
'HG24':['CG2'],
'HG11':['CG1'],
'HG12':['CG1'],
'HG13':['CG1'],
'HG21':['CG2'],
'HG22':['CG2'],
'HG23':['CG2'],
'HG31':['CG3'],
'HG32':['CG3'],
'HG33':['CG3'],
'HD1':['CD'],
'HD2':['CD'],
'HD21':['ND2'],
'HD22':['ND2'],
'HD3':['CD'],
'HD11':['CD1','ND1'],
'HD12':['CD1','ND1'],
'HD13':['CD1','ND1'],
'HD14':['CD1','ND1'],
'HD21':['CD2','ND2'],
'HD22':['CD2','ND2'],
'HD23':['CD2','ND2'],
'HD24':['CD2','ND2'],
'HE':['NE'],
'HE21':['NE2'],
'HE22':['NE2'],
'HH':['OH'],
'HH1':['CH1'],
'HH2':['CH2'],
'HH2':['CH3'],
'HH11':['NH1'],
'HH12':['NH1'],
'HH21':['NH2'],
'HH22':['NH2'],
'HZ':['CZ'],
'HZ1':['NZ','CZ1'],
'HZ2':['NZ','CZ2'],
'HZ3':['NZ','CZ3'],
'HOP3':['OP3'],
'H1\'':['C1\''],
'H1\'\'':['C1\''],
'H1\'\'\'':['C1\''],
'H2\'':['C2\''],
'H2\'\'':['C2\''],
'H2\'\'\'':['C2\''],
'H3\'':['C3\''],
'H3\'\'':['C3\''],
'H3\'\'\'':['C3\''],
'H4\'':['C4\''],
'H4\'\'':['C4\''],
'H4\'\'\'':['C4\''],
'H5\'':['C5\''],
'H5\'\'':['C5\''],
'H5\'\'\'':['C5\''],
'H6\'':['C6\''],
'H6\'\'':['C6\''],
'H6\'\'\'':['C6\''],
'H7\'':['C7\''],
'H7\'\'':['C7\''],
'H7\'\'\'':['C7\''],
'H8\'':['C8\''],
'H8\'\'':['C8\''],
'H8\'\'\'':['C8\''],
'H1':['C1','N1'],
'H11':['C1','N1'],
'H12':['C1','N1'],
'H13':['C1','N1'],
'H21':['C2','N2'],
'H22':['C2','N2'],
'H23':['C2','N2'],
'H31':['C3','N3'],
'H32':['C3','N3'],
'H33':['C3','N3'],
'H41':['C4','N4'],
'H42':['C4','N4'],
'H43':['C4','N4'],
'H51':['C5','N5'],
'H52':['C5','N5'],
'H53':['C5','N5'],
'H61':['C6','N6'],
'H62':['C6','N6'],
'H63':['C6','N6'],
'H71':['C7','N7'],
'H72':['C7','N7'],
'H73':['C7','N7'],
'H81':['C8','N8'],
'H82':['C8','N8'],
'H83':['C8','N8'],
'H2':['C2','N2'],
'H3':['C3','N3'],
'H4':['C4','N4'],
'H5':['C5','N5'],
'H6':['C6','N6'],
'H7':['C7','N7'],
'H8':['C8','N8'],
'HO2\'':['O2\''],
'HO2\'\'':['O2\''],
'HO2\'\'\'':['O2\''],
'OD1':['CG'],
'ND1':['CG','CE1'],
'ND2':['CG','CE2'],
'ND1':['CG'],
'ND2':['CG'],
'NE1':['CD','CE2','CD1'],
'NE2':['CD','CE1','CD2'],
'NE':['CD','CD'],
'NE2':['CE1','CD2'],
'NH1':['CZ'],
'NH2':['CZ'],
'NH1':['CZ'],
'NH2':['CZ'],
'NZ':['CE'],
'O':['C'],
'OH':['CZ'],
'OD1':['CG'],
'OD2':['CG'],
'OXT':['C','HO'],
'OE1':['CD'],
'OE2':['CD'],
'OG':['CB'],
'OG1':['CB'],
'SG':['CB'],
'SD':['CE','CG'],
'P':['OP1','OP2','OP3','O5\''],
'C5\'':['C4\'','O5\''],
'O4\'':['C4\'','C1\''],
'C3\'':['C4\'','O3\'','C2\''],
'C2\'':['O2\'','C1\''],
'N9':['C1\'','C4','C8'],
'N7':['C8','C5'],
'C5':['C4','C6'],
'N6':['C6','C6\''],
'N5':['C5','C5\''],
'N4':['C4','C4\'','C1','C2','C3','C5'],
'N3':['C4','C2','C3','C3\''],
'N2':['C2','C2\''],
'N1':['C1','C2','C6','C1\'','C39'],
'O1':['C1','H1','HO1'],
'O2':['C2'],
'O3':['C3'],
'O4':['C4'],
'O5':['C5'],
//Aqui empiezan lo enlaces del CLR(Cholesterol) y Todos los enlaces de Carbono
'C':['O','OXT','CA'],
'C1':['C2','C10','H11','H12'],
'C2':['C3','H21','H22'],
'C3':['C4','O1','H3','O5'],
'C4':['C5','H41','H42'],
'C5':['C6','C10'],
'C6':['C7','H6','O7'],
'C7':['C8','H71','H72'],
'C8':['C9','C14','H8'],
'C9':['C10','C11','H9'],
'C10':['C19','C11'],
'C11':['C12','H111','H112'],
'C12':['C13','H121','H122','011','C1','C23'],
'C13':['C14','C17','C18','O14','C32','C11'],
'C14':['C15','H14'],
'C15':['C16','H151','H152','O14','O16','C17'],
'C16':['C17','H161','H162'],
'C17':['C20','H17'],
'C18':['H181','H182','H183','C17','C19'],
'C19':['H191','H192','H193'],
'C20':['C21','C22','H20','C19'],
'C21':['H211','H212','H213'],
'C22':['C23','H221','H222','C21','C24'],
'C23':['C24','H231','H232'],
'C24':['C25','H241','H242'],
'C25':['C26','C27','H25'],
'C26':['H261','H262','H263'],
'C27':['H271','H272','H273','C26','C28'],
'C28':['C35'],
'C29':['C28','C30'],
'C30':['C33'],
'C31':['C30','C32'],
'C32':['O33'],
'C34':['O33','O35','C36','C45','C23'],
'C36':['C8'],
'C37':['C36','C38'],
'C39':['C40','C38'],
'C41':['C40','C42'],
'C43':['C42','C44'],
'C45':['C44','C46'],
'C47':['C46','C48'],
'C49':['C50','C48'],
'C58':['C59','C45'],
'C59':['C60','C53'],
'C61':['C60','C2'],
//Aqui Empiezan los enlaces de AMB(L-2-AMINO-4-METHOXY-CIS-BUT-3-ENOIC ACID)
'CB':['CG','CA','HB'],
'OD':['CE'],
'CE':['HE3','HE2','HE1'],
//Aqui empiezan los enlaces de POP(PYROPHOSPHATE 2- )
'P1':['O1','O2','O3','O'],
'P2':['O4','O5','O6'],
'O':['P2'],
'O2':['HO2'],
'O5':['HO5','HAG'],
//Aqui Empiezan Los Enlaces de POPC(1-palmitoyl-2-oleoylphosphatidylcholine)
'P8':['O7','O9','O10','O11'],
'CA1':['C31','CA2'],
//Aqui empiezan los enlaces de AMB??
'HAJ':['N1'],
'HAK':['N1'],
'HAL':['N1'],
'HAZ':['O16'],
'O16':['C40'],
'O17':['C41','C37'],
'HAA':['O15'],
'O15':['C38'],
'O14':['C37','C11'],
'O7':['C9','C5'],
'O12':['C36'],
'O13':['C36'],
'HAH':['O6'],
'O6':['C5'],
'O4':['C31','C1'],
'O9':['C1'],
'HAI':['O8'],
'O8':['C7'],
'HAF':['O22'],
'O22':['C61'],
'HAE':['O21'],
'O21':['C60'],
'HAD':['O19'],
'O19':['C45'],
'HAC':['O10'],
'O10':['C23'],
'HAB':['O11'],
'O11':['C29','C12']
}
var indicesSphere=
[
0,17,1,17,18,1,1,18,2,18,19,2,2,19,3,19,20,3,3,20,4,20,21,4,4,21,5,21,22,5,5,22,6,22,23,6,6,23,7,23,24,7,7,24,8,24,25,8,8,25,9,25,26,9,9,26,10,26,27,10,10,27,11,27,28,11,11,
28,12,28,29,12,12,29,13,29,30,13,13,30,14,30,31,14,14,31,15,31,32,15,15,32,16,32,33,16,17,34,18,34,35,18,18,35,19,35,36,19,19,36,20,36,37,20,20,37,21,37,38,21,21,38,22,38,39,
22,22,39,23,39,40,23,23,40,24,40,41,24,24,41,25,41,42,25,25,42,26,42,43,26,26,43,27,43,44,27,27,44,28,44,45,28,28,45,29,45,46,29,29,46,30,46,47,30,30,47,31,47,48,31,31,48,32,
48,49,32,32,49,33,49,50,33,34,51,35,51,52,35,35,52,36,52,53,36,36,53,37,53,54,37,37,54,38,54,55,38,38,55,39,55,56,39,39,56,40,56,57,40,40,57,41,57,58,41,41,58,42,58,59,42,42,
59,43,59,60,43,43,60,44,60,61,44,44,61,45,61,62,45,45,62,46,62,63,46,46,63,47,63,64,47,47,64,48,64,65,48,48,65,49,65,66,49,49,66,50,66,67,50,51,68,52,68,69,52,52,69,53,69,70,
53,53,70,54,70,71,54,54,71,55,71,72,55,55,72,56,72,73,56,56,73,57,73,74,57,57,74,58,74,75,58,58,75,59,75,76,59,59,76,60,76,77,60,60,77,61,77,78,61,61,78,62,78,79,62,62,79,63,
79,80,63,63,80,64,80,81,64,64,81,65,81,82,65,65,82,66,82,83,66,66,83,67,83,84,67,68,85,69,85,86,69,69,86,70,86,87,70,70,87,71,87,88,71,71,88,72,88,89,72,72,89,73,89,90,73,73,
90,74,90,91,74,74,91,75,91,92,75,75,92,76,92,93,76,76,93,77,93,94,77,77,94,78,94,95,78,78,95,79,95,96,79,79,96,80,96,97,80,80,97,81,97,98,81,81,98,82,98,99,82,82,99,83,99,100,
83,83,100,84,100,101,84,85,102,86,102,103,86,86,103,87,103,104,87,87,104,88,104,105,88,88,105,89,105,106,89,89,106,90,106,107,90,90,107,91,107,108,91,91,108,92,108,109,92,92,
109,93,109,110,93,93,110,94,110,111,94,94,111,95,111,112,95,95,112,96,112,113,96,96,113,97,113,114,97,97,114,98,114,115,98,98,115,99,115,116,99,99,116,100,116,117,100,100,117,
101,117,118,101,102,119,103,119,120,103,103,120,104,120,121,104,104,121,105,121,122,105,105,122,106,122,123,106,106,123,107,123,124,107,107,124,108,124,125,108,108,125,109,125,
126,109,109,126,110,126,127,110,110,127,111,127,128,111,111,128,112,128,129,112,112,129,113,129,130,113,113,130,114,130,131,114,114,131,115,131,132,115,115,132,116,132,133,116,
116,133,117,133,134,117,117,134,118,134,135,118,119,136,120,136,137,120,120,137,121,137,138,121,121,138,122,138,139,122,122,139,123,139,140,123,123,140,124,140,141,124,124,141,
125,141,142,125,125,142,126,142,143,126,126,143,127,143,144,127,127,144,128,144,145,128,128,145,129,145,146,129,129,146,130,146,147,130,130,147,131,147,148,131,131,148,132,148,
149,132,132,149,133,149,150,133,133,150,134,150,151,134,134,151,135,151,152,135,136,153,137,153,154,137,137,154,138,154,155,138,138,155,139,155,156,139,139,156,140,156,157,140,
140,157,141,157,158,141,141,158,142,158,159,142,142,159,143,159,160,143,143,160,144,160,161,144,144,161,145,161,162,145,145,162,146,162,163,146,146,163,147,163,164,147,147,164,
148,164,165,148,148,165,149,165,166,149,149,166,150,166,167,150,150,167,151,167,168,151,151,168,152,168,169,152,153,170,154,170,171,154,154,171,155,171,172,155,155,172,156,172,
173,156,156,173,157,173,174,157,157,174,158,174,175,158,158,175,159,175,176,159,159,176,160,176,177,160,160,177,161,177,178,161,161,178,162,178,179,162,162,179,163,179,180,163,
163,180,164,180,181,164,164,181,165,181,182,165,165,182,166,182,183,166,166,183,167,183,184,167,167,184,168,184,185,168,168,185,169,185,186,169,170,187,171,187,188,171,171,188,
172,188,189,172,172,189,173,189,190,173,173,190,174,190,191,174,174,191,175,191,192,175,175,192,176,192,193,176,176,193,177,193,194,177,177,194,178,194,195,178,178,195,179,195,
196,179,179,196,180,196,197,180,180,197,181,197,198,181,181,198,182,198,199,182,182,199,183,199,200,183,183,200,184,200,201,184,184,201,185,201,202,185,185,202,186,202,203,186,
187,204,188,204,205,188,188,205,189,205,206,189,189,206,190,206,207,190,190,207,191,207,208,191,191,208,192,208,209,192,192,209,193,209,210,193,193,210,194,210,211,194,194,211,
195,211,212,195,195,212,196,212,213,196,196,213,197,213,214,197,197,214,198,214,215,198,198,215,199,215,216,199,199,216,200,216,217,200,200,217,201,217,218,201,201,218,202,218,
219,202,202,219,203,219,220,203,204,221,205,221,222,205,205,222,206,222,223,206,206,223,207,223,224,207,207,224,208,224,225,208,208,225,209,225,226,209,209,226,210,226,227,210,
210,227,211,227,228,211,211,228,212,228,229,212,212,229,213,229,230,213,213,230,214,230,231,214,214,231,215,231,232,215,215,232,216,232,233,216,216,233,217,233,234,217,217,234,
218,234,235,218,218,235,219,235,236,219,219,236,220,236,237,220,221,238,222,238,239,222,222,239,223,239,240,223,223,240,224,240,241,224,224,241,225,241,242,225,225,242,226,242,
243,226,226,243,227,243,244,227,227,244,228,244,245,228,228,245,229,245,246,229,229,246,230,246,247,230,230,247,231,247,248,231,231,248,232,248,249,232,232,249,233,249,250,233,
233,250,234,250,251,234,234,251,235,251,252,235,235,252,236,252,253,236,236,253,237,253,254,237,238,255,239,255,256,239,239,256,240,256,257,240,240,257,241,257,258,241,241,258,
242,258,259,242,242,259,243,259,260,243,243,260,244,260,261,244,244,261,245,261,262,245,245,262,246,262,263,246,246,263,247,263,264,247,247,264,248,264,265,248,248,265,249,265,
266,249,249,266,250,266,267,250,250,267,251,267,268,251,251,268,252,268,269,252,252,269,253,269,270,253,253,270,254,270,271,254,255,272,256,272,273,256,256,273,257,273,274,257,
257,274,258,274,275,258,258,275,259,275,276,259,259,276,260,276,277,260,260,277,261,277,278,261,261,278,262,278,279,262,262,279,263,279,280,263,263,280,264,280,281,264,264,281,
265,281,282,265,265,282,266,282,283,266,266,283,267,283,284,267,267,284,268,284,285,268,268,285,269,285,286,269,269,286,270,286,287,270,270,287,271,287,288,271 ];