_<t>:=FunctionField(Rationals());

// ell=2
G2:=[
	sub<GL(2,2) | {[1,0,0,1]}>,
	sub<GL(2,2) | {[1,1,0,1]}>,
	sub<GL(2,2) | {[1,1,1,0]}>
	];
H2:=[[],[],[]];
J2:=[
	256*(t^2+t+1)^3/(t^2*(t+1)^2),
	256*(t+1)^3/t,
	t^2+1728
	];
W2:=[[],[],[]];

// ell=3
G3:=[
	sub<GL(2,3) | {[-1,0,0,-1],[1,0,0,2]}>,
	sub<GL(2,3) | {[1,0,0,2],[2,0,0,1],[0,-1,1,0]}>,
	sub<GL(2,3) | {[1,1,0,1],[2,0,0,1],[1,0,0,2]}>,
	sub<GL(2,3) | {[1,0,0,-1],[-1,0,0,-1],[0,-1,1,0],[1,1,-1,1]}>
	];
H3:=[
	[sub<GL(2,3) | {[1,0,0,2]}>], 
    	[],
    	[sub<GL(2,3) | {[1,0,0,2],[1,1,0,1]}>, sub<GL(2,3) | {[2,0,0,1],[1,1,0,1]}>],
    	[]
	];
J3:=[
	27*(t+1)^3*(t+3)^3*(t^2+3)^3/(t^3*(t^2+3*t+3)^3),
	27*(t+1)^3*(t-3)^3/t^3,
	27*(t+1)*(t+9)^3/t^3,
	t^3
	];
W3:=[ [-3*(t+1)*(t+3)*(t^2+3),-2*(t^2-3)*(t^4+6*t^3+18*t^2+18*t+9)], [], [-3*(t+1)^3*(t+9),-2*(t+1)^4*(t^2-18*t-27)],  [] ];

// ell=5
G5:=[
	sub<GL(2,5) | {[-1,0,0,-1], [1,0,0,2]}>,
	sub<GL(2,5) | {[2,0,0,1], [1,0,0,2]}>,
	sub<GL(2,5) | {[0,6,3,0],[2,0,0,2], [1,0,0,-1]}>,
	sub<GL(2,5) | {[2,0,0,1], [1,0,0,2],[0,-1,1,0]}>,
	sub<GL(2,5) | {[-1,0,0,-1], [1,1,0,1], [2,0,0,1]}>,
	sub<GL(2,5) | {[-1,0,0,-1], [1,1,0,1], [1,0,0,2]}>,
	sub<GL(2,5) | {[1,2,1,1],[1,6,3,1], [1,0,0,-1]}>,
	sub<GL(2,5) | {[2,0,0,1],[1,0,0,2],[1,1,0,1]}>,
	sub<GL(2,5) | {[2,0,0,1], [1,0,0,2],[0,-1,1,0],[1,1,1,-1]}>
	];
H5:=[
	[sub<GL(2,5) | {[1,0,0,2]}>, sub<GL(2,5) | {[4,0,0,2]}>],
    	[], [], [],
    	[sub<GL(2,5) | {[2,0,0,1],[1,1,0,1]}>, sub<GL(2,5) | {[2,0,0,4], [1,1,0,1]}>],
    	[sub<GL(2,5) | {[1,0,0,2],[1,1,0,1]}>, sub<GL(2,5) | {[4,0,0,2], [1,1,0,1]}>],
    	[],[],[]
	];
J5:=[
	(t^20+228*t^15+494*t^10-228*t^5+1)^3/(t^5*(t^10-11*t^5-1)^5),
	(t^2+5*t+5)^3*(t^4+5*t^2+25)^3*(t^4+5*t^3+20*t^2+25*t+25)^3/(t^5*(t^4+5*t^3+15*t^2+25*t+25)^5),
	5^4*t^3*(t^2+5*t+10)^3*(2*t^2+5*t+5)^3*(4*t^4+30*t^3+95*t^2+150*t+100)^3/((t^2+5*t+5)^5*(t^4+5*t^3+15*t^2+25*t+25)^5),
	(t+5)^3*(t^2-5)^3*(t^2+5*t+10)^3/(t^2+5*t+5)^5,
	(t^4+228*t^3+494*t^2-228*t+1)^3/(t*(t^2-11*t-1)^5),
	(t^4-12*t^3+14*t^2+12*t+1)^3/(t^5*(t^2-11*t-1)),
	5^3*(t+1)*(2*t+1)^3*(2*t^2-3*t+3)^3/(t^2+t-1)^5,
	5^2*(t^2+10*t+5)^3/t^5,
	t^3*(t^2+5*t+40)
	];
W5:=[
	[-27*(t^20+228*t^15+494*t^10-228*t^5+1), 54*(t^30-522*t^25-10005*t^20-10005*t^10+522*t^5+1)],
	[],[],[],
	[-27*(t^4+228*t^3+494*t^2-228*t+1),54*(t^6-522*t^5-10005*t^4-10005*t^2+522*t+1)],
	[-27*(t^4-12*t^3+14*t^2+12*t+1),54*(t^6-18*t^5+75*t^4+75*t^2+18*t+1)],
	[],[],[]
    	];

// ell=7
G7:=[
	sub<GL(2,7) | {[2,0,0,4], [0,2,1,0],[-1,0,0,-1]}>,
	sub<GL(2,7) | {[3,0,0,1],[1,0,0,3],[0,-1,1,0]}>,
	sub<GL(2,7) | {[-1,0,0,-1],[1,1,0,1],[1,0,0,3]}>,
	sub<GL(2,7) | {[-1,0,0,-1],[1,1,0,1],[3,0,0,1]}>,
	sub<GL(2,7) | {[1,1,0,1],[3,0,0,3],[1,0,0,-1]}>,
	sub<GL(2,7) | {[1,-4,4,1],[1,0,0,-1]}>,
	sub<GL(2,7) | {[3,0,0,1],[1,0,0,3],[1,1,0,1]}>
	];
H7:=[
	[sub<GL(2,7)|{[2,0,0,4], [0,2,1,0]}>], 
    	[],
    	[sub<GL(2,7)|{[1,0,0,3], [1,1,0,1]}>, sub<GL(2,7)|{[-1,0,0,1], [1,0,0,3^2], [1,1,0,1]}>],
    	[sub<GL(2,7)|{[3,0,0,1], [1,1,0,1]}>, sub<GL(2,7)|{[1,0,0,-1], [3^2,0,0,1], [1,1,0,1]}>],
    	[sub<GL(2,7)|{[-1,0,0,1], [3^2,0,0,3^2], [1,1,0,1]}>, sub<GL(2,7)|{[1,0,0,-1], [3^2,0,0,3^2], [1,1,0,1]}>],
    	[],
    	[sub<GL(2,7)|{[3,0,0,1], [1,0,0,3^2], [1,1,0,1]}>, sub<GL(2,7)|{[3^2,0,0,1], [1,0,0,3], [1,1,0,1]}>]
	];
J7:=[
	3^3*5*7^5/2^7,
    	t*(t+1)^3*(t^2-5*t+1)^3*(t^2-5*t+8)^3*(t^4-5*t^3+8*t^2-7*t+7)^3/(t^3-4*t^2+3*t+1)^7,
    	(t^2-t+1)^3*(t^6-11*t^5+30*t^4-15*t^3-10*t^2+5*t+1)^3/((t-1)^7*t^7*(t^3-8*t^2+5*t+1)),
    	(t^2-t+1)^3*(t^6+229*t^5+270*t^4-1695*t^3+1430*t^2-235*t+1)^3/((t-1)*t*(t^3-8*t^2+5*t+1)^7),
    	-(t^2-3*t-3)^3*(t^2-t+1)^3*(3*t^2-9*t+5)^3*(5*t^2-t-1)^3/((t^3-2*t^2-t+1)*(t^3-t^2-2*t+1)^7),
    	64*t^3*(t^2+7)^3*(t^2-7*t+14)^3*(5*t^2-14*t-7)^3/(t^3-7*t^2+7*t+7)^7,
    	(t^2+245*t+2401)^3*(t^2+13*t+49)/t^7
	];
W7:=[
    	[-5^3*7^3,-5^4*7^2*106],
    	[],
	[-27*(t^2-t+1)*(t^6-11*t^5+30*t^4-15*t^3-10*t^2+5*t+1),54*(t^12-18*t^11+117*t^10-354*t^9+570*t^8-486*t^7+273*t^6-222*t^5+174*t^4-46*t^3-15*t^2+6*t+1)],	
	[-27*(t^2-t+1)*(t^6+229*t^5+270*t^4-1695*t^3+1430*t^2-235*t+1),54*(t^12-522*t^11-8955*t^10+37950*t^9-70998*t^8+131562*t^7-253239*t^6+316290*t^5-218058*t^4+80090*t^3-14631*t^2+510*t+1)],
	[-27*7*(t^2-3*t-3)*(t^2-t+1)*(3*t^2-9*t+5)*(5*t^2-t-1),-54*7^2*(t^4-6*t^3+17*t^2-24*t+9)*(3*t^4-4*t^3-5*t^2-2*t-1)*(9*t^4-12*t^3-t^2+8*t-3)],
	[],
	[-27*(t^2+13*t+49)^3*(t^2+245*t+2401), 54*(t^2+13*t+49)^4*(t^4-490*t^3-21609*t^2-235298*t-823543)]
];

// ell=11
G11:=[
	sub<GL(2,11) | {[-1,0,0,-1],[1,1,0,1],[4,0,0,6]}>,
	sub<GL(2,11) | {[-1,0,0,-1],[1,1,0,1],[5,0,0,7]}>,
	sub<GL(2,11) | {[1,-4,4,1], [1,0,0,-1]}>
	];
H11:=[
	[sub<GL(2,11) | {[1,1,0,1], [4,0,0,6]}>, sub<GL(2,11) | {[1,1,0,1], [7,0,0,5]}>],
	[sub<GL(2,11) | {[1,1,0,1], [5,0,0,7]}>, sub<GL(2,11) | {[1,1,0,1], [6,0,0,4]}>],
    	[], [] ];
J11:=[-11^2,-11*131^3];   
W11:=[ [-27*11^4,54*11^5*43], [-27*11^3*131,54*11^4*4973], [] ];

A11:=(t^5-9*t^4+17*t^3+20*t^2-73*t+43)^11;
B11:=-(t^2+3*t-6)^3*(108000*t^49 + 23793840*t^48 - 413223722*t^47 - 5377010368*t^46 + 230799738529*t^45 - 3137869050351*t^44 + 23205911712335*t^43 - 90936268647246*t^42 + 33563647471596*t^41 + 1631415220074871*t^40 - 7744726079195413*t^39 - 3218815397602111*t^38 + 236712051437217644*t^37 - 1686428698022253344*t^36 + 7984804002023063554*t^35 - 30444784135263860996*t^34 + 96849826504401032248*t^33 - 232064394883539673213*t^32 + 210175535413395353857*t^31 + 1609695806324946484826*t^30 - 11768533689837648360109*t^29 + 48291196122826259771817*t^28 - 143943931899306373170309*t^27 + 315827025781563232420857*t^26 - 421596979720485992629121*t^25 - 234929885880162547645306*t^24 + 3668241437553022801950917*t^23 - 14221091463553801024770599*t^22 + 39148264563215734730610917*t^21 - 87534472061810348609315974*t^20 + 166474240219619575379485393*t^19 - 275040771573054834247036345*t^18 + 399144725377223909937142938*t^17 - 511840960382358144595839458*t^16 + 581656165535334214665717816*t^15 - 586206578096981243980668654*t^14 + 523465655841901079370457175*t^13 - 413200824632802503354807972*t^12 + 287270832775316643952335709*t^11 - 175049577131269087795781453*t^10 + 92916572268973769104815620*t^9 - 42636417323385892254033027*t^8 + 16754292456737738144357709*t^7 - 5570911068111617263502302*t^6 + 1542648801995330874184236*t^5 - 347819053424928336793068*t^4 + 61683475328903338239178*t^3 - 8117056250720937228985*t^2 + 708318740340941449799*t - 30857360406231018655);
C11:=(4*t-5)*(t^2+3*t-6)^6*(9*t^2-28*t+23)^3*(t^4-5*t^3+74*t^2-245*t+223)^3*(4*t^4-9*t^3-t^2+21*t-32)^3*(25*t^4-114*t^3+167*t^2-86*t+20)^3;

// ell=13
G13:=[
	sub<GL(2,13) | {[2,0,0,1],[1,1,0,1],[1,0,0,8]}>,
	sub<GL(2,13) | {[8,0,0,1],[1,1,0,1],[1,0,0,2]}>,
	sub<GL(2,13) | {[2,0,0,2],[1,1,0,1],[1,0,0,8]}>,
	sub<GL(2,13) | {[2,0,0,1],[1,1,0,1],[1,0,0,4]}>,
	sub<GL(2,13) | {[4,0,0,1],[1,1,0,1],[1,0,0,2]}>,
	sub<GL(2,13) | {[2,0,0,1],[1,1,0,1],[1,0,0,2]}>,
	sub<GL(2,13) | {[2,0,0,2], [2,0,0,3], [0,-1,1,0], [1,1,-1,1]}>
	];
H13:=[
	[],[],[],
	[sub<GL(2,13) | {[2,0,0,1], [1,0,0,2^4], [1,1,0,1]}>, sub<GL(2,13)| {[2^2,0,0,1], [1,0,0,2^4], [1,1,0,1], [2,0,0,4]}>],
	[sub<GL(2,13) | {[2^4,0,0,1], [1,0,0,2], [1,1,0,1]}>, sub<GL(2,13)| {[2^4,0,0,1], [1,0,0,2^2], [1,1,0,1], [4,0,0,2]}>],
	[], []
	];
P13:=[
	t^12+231*t^11+269*t^10-3160*t^9+6022*t^8-9616*t^7+21880*t^6-34102*t^5+28297*t^4-12455*t^3+2876*t^2-243*t+1,
	t^12-9*t^11+29*t^10-40*t^9+22*t^8-16*t^7+40*t^6-22*t^5-23*t^4+25*t^3-4*t^2-3*t+1,
	(t^4-t^3+2*t^2-9*t+3)*(3*t^4-3*t^3-7*t^2+12*t-4)*(4*t^4-4*t^3-5*t^2+3*t-1),
	t^8+235*t^7+1207*t^6+955*t^5+3840*t^4-955*t^3+1207*t^2-235*t+1,
	t^8-5*t^7+7*t^6-5*t^5+5*t^3+7*t^2+5*t+1,
	t^4+7*t^3+20*t^2+19*t+1
	];
Q13:=[
	t^12-512*t^11-13079*t^10-32300*t^9-104792*t^8-111870*t^7-419368*t^6+111870*t^5-104792*t^4+32300*t^3-13079*t^2+512*t+1,
	t^12-8*t^11+25*t^10-44*t^9+40*t^8+18*t^7-40*t^6-18*t^5+40*t^4+44*t^3+25*t^2+8*t+1
	];
J13:=[
	(t^2-t+1)^3*P13[1]^3/((t-1)*t*(t^3-4*t^2+t+1)^13),
	(t^2-t+1)^3*P13[2]^3/((t-1)^13*t^13*(t^3-4*t^2+t+1)),
	-13^4*(t^2-t+1)^3*P13[3]^3/((t^3-4*t^2+t+1)^13*(5*t^3-7*t^2-8*t+5)),
	(t^4-t^3+5*t^2+t+1)*P13[4]^3/(t*(t^2-3*t-1)^13),
	(t^4-t^3+5*t^2+t+1)*P13[5]^3/(t^13*(t^2-3*t-1)),
	(t^2+5*t+13)*P13[6]^3/t
	];
J13_7:=[ (2^4*5*13^4*17^3)/3^13, -(2^12*5^3*11*13^4)/3^13, (2^18*3^3*13^4*127^3*139^3*157^3*283^3*929)/(5^13*61^13) ];	
W13:=[
	[],[],[],
    	[-27*(t^4-t^3+5*t^2+t+1)^3*P13[4],54*(t^2+1)*(t^4-t^3+5*t^2+t+1)^4*Q13[1]],
	[-27*(t^4-t^3+5*t^2+t+1)^3*P13[5],54*(t^2+1)*(t^4-t^3+5*t^2+t+1)^4*Q13[2]],
	[],[]
	];

// ell=17
G17:=[sub<GL(2,17)| {[2,0,0,11], [4,0,0,-4], [1,1,0,1]}>,
      sub<GL(2,17)| {[11,0,0,2], [-4,0,0,4], [1,1,0,1]}>];
H17:=[[],[]];
J17:=[-17*373^3/2^17, -17^2*101^3/2 ];
W17:=[[],[]];

// ell=37
G37:=[sub<GL(2,37)| {[2^3,0,0,1], [1,0,0,2], [1,1,0,1]}>,
    sub<GL(2,37)| {[2,0,0,1], [1,0,0,2^3], [1,1,0,1]}>  ];
H37:=[[],[]];
J37:=[-7*11^3, -7*137^3*2083^3];
W37:=[[],[]];
