Awp_attrib 1 1 Opasnet base connection Interface for uploading data to and downloading from the Opasnet Base. <a href="http://en.opasnet.org/w/Image:Opasnet_base_connection.ANA">Wiki description</a> Jouni Tuomisto 9. maata 2008 10:42 ktluser 28. Augta 2009 23:15 48,24 1,0,0,1,1,1,0,0,0,0 1,8,2,684,499,17 2,102,90,476,224 Arial, 15 0,Linkmodule Op_en2676,2,2,0,1,C:\temp\Opasnet_base_connection_with text_area_d.ANA 100,1,1,1,1,9,2970,2100,15,0 This module saves original data or model results (a study or a variable, respectively) into the Opasnet Base. You need your Opasnet username and password to do that. You must fill in all tables and fields below before the process is completed. Fill in the data below from top to bottom. If an object with the same Ident already exists in the Opasnet Base, the information will be added to that object. Before you start, make sure that you have created an object page in the Opasnet wiki for each object (study or variable) you want to upload. 260,84,-1 252,76 Username 0 168,244,1 160,12 1,0,0,1,0,0,0,142,0,1 52425,39321,65535 Opasnet_username TabIndex:1 TextAlways Password 0 168,268,1 160,12 1,0,0,1,0,0,0,142,0,1 52425,39321,65535 Opasnet_password TabIndex:2 TextAlways Study or variable info 0 112,564,1 96,12 1,0,0,1,0,0,0,78,0,1 52425,39321,65535 Data_info Copy-paste a data table. 260,464,-1 252,120 1,0,0,1,0,1,0,,0, 2,693,146,476,224 Advanced upload ktluser 1. Aprta 2009 9:38 48,24 792,32,1 48,24 1,0,0,1,1,1,0,,0, 1,553,17,661,543,17 Writer jtue 24. maata 2009 9:36 48,24 184,32,1 48,24 1,607,51,633,439,17 W Loc Makes a table to be written to the Loc table. index j:= ['id','Std_id','Obj_id_i','Location','Roww','Description']; var a:= Locations[.j=j]; var b:= a[j='Obj_id_i']; var c:= textify(cardinals[table1='Loc']+a[@j=1]); a:= array(j,[c, c, findid(b,Obj,'Ident'), a, textify(a), a]) 440,176,1 48,16 2,156,83,476,245 2,642,68,606,278,0,MIDM 65535,45873,39321 [Sys_localindex('J'),Sys_localindex('I')] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 100,1,1,1,1,9,2970,2100,15,0 [Sys_localindex('I'),16,Sys_localindex('I'),1,Sys_localindex('J'),1] W Loccell Slices fields that are needed in the Locres table from Inp_locres. var a:= Loccells; var b:= textify(findid(a[.j='id'], Obj, 'Ident')); var c:= textify(a[.j='Loc_id']); b:= findid(b&'+'&c, (if Loc.j='Obj_id_i' then Loc&'+'&Loc[.j='Location'] else Loc), 'Obj_id_i'); a:= array(a.j,[(@a.i+cardinals[table1='Loccell']), (a+cardinals[table1='Cell']), b]); textify(a) 424,312,1 48,16 2,776,90,476,487 2,178,73,453,537,0,MIDM 65535,45873,39321 [Sys_localindex('J'),Sys_localindex('I')] 2,I,4,2,0,0,4,0,$,0,"ABBREV",0 W Cell Slices the fields that are needed in the Res table. Removes duplicate rows. index j:= ['id','Obj_id_v','Obj_id_r','Mean','SD','N']; var a:= Cells; {index i:= unique(a[.j='Cell_id'], a.i); ivar a:= a[.i=i];} var b:= a[.j='id']+cardinals[table1='Cell']; a:= a[.j=j]; var c:= findid(a[@j=2], Obj, 'Ident'); var d:= w_obj[.j='Ident']; d:= findid(d, Obj, 'Ident')[@.i=size(w_obj.i)]; a:= array(j, [textify(b),c, d, a, a, textify(a)]); if a=null then '' else a 424,240,1 48,16 2,799,214,476,379 2,85,264,505,368,0,MIDM 65535,45873,39321 [Sys_localindex('J'),Sys_localindex('I')] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 Wikis Names of different wikis used. Table(Self)( 'Op_en','Op_fi','Heande','En','Fi','Erac','Beneris','Intarese','Piltti','Kantiva','Bioher','Heimtsa') [1,2,3,4,5,8,9,10,11,13,14,15] 248,24,1 48,16 65535,52427,65534 [Self] W Obj Selects relevant information for the Obj table from Objects1 node. index j:= ['id','Ident','Name','Unit','Objtype_id','Page','Wiki_id']; var a:= Objects; var b:= if a[.j='Ident'] = 0 then -1 else a[.j='Ident']; b:= findid(b, Obj, 'Ident'); b:= if b='0' then cardinals[table1='Obj']+a[.j='id'] else b; a:= if a.j='id' then b else a; a:= a[.j=j]; a:= if j='Ident' and a[j='Ident']='' then a[j='id'] else a; var c:= Object_info1[varinfo='Append to run']; a:= if j='Ident' and a.i='Run' and isnumber(c) then c else a; textify(a) 424,112,1 48,16 2,524,183,476,508 2,89,387,1023,259,0,MIDM 65535,45873,39321 [Sys_localindex('J'),Sys_localindex('I')] 2,I,4,2,0,0,4,0,$,0,"ABBREV",0 [] W Resinfo If the result is not a number, then the actual result text can be written into the Description field of the Descr table. Makes a list of text values to be written into the Descr table. index j:= ['id','Restext']; var a:= Results; index i:= subset(a[.j='Restext']); a:= a[.j=j, .i=i]; a:= array(j, [textify(a.i+Cardinals[table1='Res']), a]) 424,352,1 48,16 2,674,46,476,259 2,670,328,416,303,0,MIDM 65535,45873,39321 [Sys_localindex('J'),Sys_localindex('I')] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 W Objinfo Makes a list of objects that contains some additional information to be written into the Objinfo table. index j:= ['Obj_id','Acttype_id','Who','Comments']; var a:= Objects; var b:= if a[.j='Ident'] = 0 then -1 else a[.j='Ident']; b:= findid(b, Obj, 'Ident'); b:= if b='0' then cardinals[table1='Obj']+a[.j='id'] else b; a:= if j='Obj_id' then b else a[.j=j]; a:= if a = null or a='' then 0 else a; {index i:= subset(if sum(a, j) = 0 then 0 else 1); a:= a[.i=i];} a:= if a=null or a=0 then '' else a&'' 424,72,1 48,16 2,210,49,476,340 2,34,427,690,274,0,MIDM 65535,45873,39321 [Sys_localindex('J'),Sys_localindex('I')] 2,I,4,2,0,0,4,0,$,0,"ABBREV",0 [Sys_localindex('J'),1,Sys_localindex('I'),1,Sys_localindex('J'),1] W Res index j:= ['id','Cell_id','Obs','Result']; var a:= Results; index i:= subset(if a[.j='Result']=null and a[.j='Description']=0 then 0 else 1); a:= a[.j=j, .i=i]; a:= array(j, [textify(a.i+Cardinals[table1='Res']), textify(a+ Cardinals[table1='Cell']), textify(a),a]); if a=null then '' else a 424,384,1 48,13 2,629,191,582,297 2,58,276,609,375,0,MIDM 65535,45873,39321 [Sys_localindex('J'),Sys_localindex('I')] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 [] Object info Additional information for each index and decision node. Description node is the name of a node containing information about the locations of the index. It must be indexed by the index. Table(Varinfo)( 3,'code_node','Op_en2693',1,'Age',1,'') 176,280,1 48,16 2,140,217,476,224 2,609,96,352,216,0,MIDM 2,939,520,288,303,0,MIDM [Formnode Variables1] 52425,39321,65535 [Varinfo] [Varinfo] [0,1,1,0] Data info Table(Object_info,Object1)( 'Testvariable',0, '-',0 ) 64,72,1 48,13 2,102,90,476,349 2,329,457,355,329,0,MIDM 2,184,194,660,316,0,MIDM [Formnode Study_or_variable_i1] 52425,39321,65535 [Object_info,Object1] [Object_info,Object1] Object info ['Name','Unit'] 64,96,1 48,12 ['Name','Unit'] Loccells Makes a list of all locations in all results in all variables. The list is as long as is needed for the Loccell table. A subset is taken then for the Cell table. 1) Initialises local variables, and slices variables from Object1. 2)-4) Does the process for each variable one at a time. This happens in function Loccell. 5) Makes i the row index. var a:= data_table; index h:= a.j[@.j=1..size(a.j)-2]; a:= a[.j=h]; var d:= max(data_table[.j='Obs'],data_table.i); a:= if 1-proba then (index itemp:= copyindex(a.i); a[.i=itemp]) else ( index grun:= 1..d; index itemp:= 1..size(a.i)/d; a:= a[@.i=(itemp-1)*d+grun]; a:= a[@grun=1]); index j:= ['id', 'Cell_id', 'Loc_id']; index i:= 1..size(a); a:= array(j,[h, @a.itemp, a]); concatrows(a,h,a.itemp,i) 288,328,1 48,16 2,643,26,526,596 2,614,260,552,488,0,MIDM [Sys_localindex('J'),Sys_localindex('I'),Undefined,Undefined,Undefined,1] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 [] [Sys_localindex('J'),2,Sys_localindex('ITEMP'),1,Sys_localindex('H'),1] Results The usage of local variables: a: the temporary variable that is being edited. e: cardinal of the Cell table. f: cardinal of the Res table. j: output column headings. i: output row numbers. NOTE! ONLY THE DETERMINISTIC VERSION WORKS AT THE MOMENT. 1) Only one piece of information (Observations) is included. 2)-5) The process is done for each variable one at a time (this is indexed by x). 3) Several within-loop local variables are initiated. 4) The variable is given index runn which is equal to run if probabilistic and [0] if not. The array is flattened first to 2-D, the value only is kept. 5) Variables are concatenated to each other. 6) Index i is made the index of the implicit index. NOTE! This node MUST be formatted to Integer, otherwise Res_id will be stored in a wrong format. var e:= 0; var f:= 0; var a:= data_table[.j='Result']; var d:= max(data_table[.j='Obs'],data_table.i); var b:= if 1-proba then @a.i else ( floor((@a.i-1)/d)+1); index j:= ['id','Cell_id','Obs','Result','Restext']; array(j,[0, b, data_table[.j='Obs'], (if istext(a) then 0 else a) , (if istext(a) then a else 0)]) 288,384,1 48,16 2,634,23,581,615 2,28,187,469,411,0,MIDM [Sys_localindex('J'),Sys_localindex('I')] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 [Run,2,Sys_localindex('J'),1,Sys_localindex('I'),1] Locations The format of this node MUST be integer, so that the id and Roww values are stored correctly. var output:= 0; var in:= data_table; index j:= in.j[@.j=1..size(in.j)-1]; in:= in[.j=j]; Dolocation(in) 312,176,1 48,16 2,100,58,476,581 2,482,15,746,348,0,MIDM [Sys_localindex('J'),Sys_localindex('I')] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 [Sys_localindex('D'),1,Object_all3,1,Age,1] Data table var N_indices:= Object_info1[varinfo='Number of indices']; var b:= selecttext(Object_info1[varinfo='Data source'],1,1); var a:= if b='1' then data_table2 else if b='2' then evaluate(Object_info1[varinfo='Analytica identifier']) else analytica_node; if b='3' then a else ( index h:= a.j[@.j=1..N_indices]; var c:= Object_info1[varinfo='Parameter name']; c:= if c='' or c=0 then 'Parameter' else c; index j:= concat(h,[c,'Result','Obs']); index parameter:= a.j[@.j=N_indices+(1..size(a.j)-N_indices)]; index temp:= 1..size(a.i)*size(parameter); var conv:= if j='Result' then @parameter+N_indices else @j; a:= a[@.j=conv]; a:= if @j=size(j)-2 then parameter else a; a:= if @j=size(j) then @a.i else a; a:= concatrows(a, parameter, a.i, temp); a:= if j='Result' then (var d:= a[j='Result']; if evaluate(d)=null then d else evaluate(d)) else a; index i:= Subset(a[j='Result']<>null); a[temp=i]) 176,176,1 48,13 2,225,120,482,434 2,533,168,703,527,0,MIDM [Formnode Data_table1] [Sys_localindex('J'),Sys_localindex('I')] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 [1,1,1,0] [Sys_localindex('I'),1,Sys_localindex('J'),1] Varinfo ['Data source','Analytica identifier','Ident','Number of indices','Parameter name','Probabilistic?','Append to upload'] 176,304,1 48,12 2,90,166,416,303,0,MIDM ['Data source','Analytica identifier','Ident','Number of indices','Parameter name','Probabilistic?','Append to upload'] Objects Index j:= ['id','Ident','Name','Unit','Objtype_id','Acttype_id','Page','Wiki_id', 'Who','Comments']; index i:= concat(Object1,['Run']); var Ident:= if i = 'Var1' then Object_info1[varinfo='Ident'] else if @i=size(i) then '' else i; var a:= Data_info[Object1=i, Object_info=j]; var b:= sum(findintext(wikis,ident)*@wikis,wikis); var c:= if b=0 then '' else wikis[@wikis=b]; c:= if b=0 then '2664' else selecttext(ident,1+textlength(c)); var d:= if proba then ' (probabilistic), ' else ' (deterministic), '; a:= array(j,[ @i, ident, if i ='Run' then 'Observations: ' & max(data_table[.j='Obs'],data_table.i) &d& 'Cells: '&size(cells.i) &', Indices: ' &size(loccells.i)/size(Cells.i) & ', Analytica '&Analyticaedition&', ('&Analyticaplatform&'), Version: '&textify(Analyticaversion) else a, a, if @i=1 then 1 else if @i=size(i) then 9 else 6, if @i=1 then 11 else 1, if i='Run' then '2817' else c&'', if b=0 then '1' else b&'', opasnet_username, a]); a:= if a = null then '' else a 248,72,1 48,16 2,610,28,479,524 2,59,320,889,315,0,MIDM [Sys_localindex('I'),Sys_localindex('J')] Object concat(['Var1'],data_table.j[@data_table.j=1..size(data_table.j)-2]) 64,120,1 48,13 2,59,17,630,355 2,857,175,416,303,0,MIDM [Year,Who_country_code] ['Var1','.Vehicle_type'] Observations 'Test1 Value 1 2nh 2 30' 64,224,1 52,16 2,586,79,476,465 [Formnode Observations3] 52425,39321,65535 Data table var a:= splittext(textreplace(Observations2, chr(10),'',true),chr(13)); index i:= 1..size(a); a:= slice(a,i); a:= splittext(a, chr(9)); index j:= 1..size(a)/size(i); for y:= i do (slice(a[i=y],j)) var a:= splittext(textreplace(Observations2, chr(10),'',true),chr(13)); index j:= splittext(slice(a,1), chr(9)); index i:= 1..size(a)-1; a:= slice(a,i+1); a:= splittext(a, chr(9)); for y:= i do (slice(a[i=y],@j)) 64,176,1 48,16 2,98,65,476,362 2,761,412,476,386,0,MIDM [Sys_localindex('J'),Sys_localindex('I')] [1,1,1,0] Testvariable Table(Time)( uniform(0,1),uniform(1,2),uniform(2,3)) 536,40,1 48,24 2,40,50,416,303,0,MIDM [Time,Testindex] [Time,Testindex] [1,0,0,0] Testindex ['item 1'] 536,72,1 48,12 W Cellsec Slices the fields that are needed in the Res table. Removes duplicate rows. (if w_cell.j = 'Mean' then '' else W_cell) 536,240,1 48,16 2,782,213,476,379 2,85,231,505,368,0,MIDM 65535,45873,39321 [Sys_localindex('J'),Sys_localindex('I')] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 Cells Makes a list of all locations in all results in all variables. The list is as long as is needed for the Loccell table. A subset is taken then for the Cell table. 1) Initialises local variables, and slices variables from Object1. 2)-4) Does the process for each variable one at a time. This happens in function Loccell. 5) Makes i the row index. var a:= Data_table[@.j=size(data_table.j)-1]; index j:= ['id', 'Obj_id_v', 'Obj_id_r', 'Mean', 'SD', 'N']; var d:= max(data_table[.j='Obs'],data_table.i); index temp:= ['Mean','SD']; a:= if 1-proba then array(temp,[a,'']) else ( index grun:= 1..d; index i:= 1..size(a.i)/d; a:= a[@.i=(i-1)*d+grun]; a:= array(temp,[mean(a,grun), sdeviation(a[j='Mean'],grun)]) ); a:= array(j,[ @a.i, Object_info1[varinfo='Ident'], '', a[temp='Mean'], a[temp='SD'], d]) 312,240,1 48,16 2,54,15,526,639 2,608,45,641,493,0,MIDM [Sys_localindex('J'),Sys_localindex('I'),Undefined,Undefined,Undefined,1] 2,D,4,2,0,0,4,0,$,0,"ABBREV",0 [] [Sys_localindex('TEMP'),1,Sys_localindex('I'),1,Sys_localindex('J'),1] Analytica node var a:= Object_info1[varinfo='Analytica identifier']; index j:= concat(indexnames(evaluate(a)),['Result','Obs']); a:= if proba then sample(evaluate(a)) else evaluate(a); index temp:= concat(indexnames(a),['Result']); index i:= 1..size(a); a:= Mdarraytotable(a, i, temp); a:= if j='Obs' and proba then a[temp='Run'] else a[temp=j]; a:= if a=null then 0 else a 64,280,1 48,20 2,53,195,476,317 2,56,66,416,303,0,MIDM [Sys_localindex('I'),Sys_localindex('J')] [1,1,1,0] Proba var a:= Object_info1[Varinfo='Probabilistic?']; (a=1 or a='Yes' or a='Y' or a='yes' or a='y') 104,384,1 48,16 Reader ktluser 3. Augta 2008 18:31 jtue 9. lokta 2008 14:01 48,24 184,96,1 48,24 1,1,1,1,1,1,0,0,0,0 1,785,211,477,355,17 Arial, 15 (vident:text, runident:optional) Read mean Reads the mean data about the vident variable from the Opasnet Base. Uses the runident run if specified; otherwise uses the newest run of that variable. PARAMETERS: * Vident: the Ident of the variable in the Opasnet Base. * Runident: the Ident of the run from which the results will be brought. If omitted, the newest result will be brought. if isnotspecified(runident) then runident:= identfind(newestrun(vident)); var a:= ' SELECT Var.Ident as Vident, Var.Name as Vname, Var.Unit as Vunit, Cell.id, Ind.Ident as Iident, Location, Mean, N, Run.Name as Rname, Run.Ident AS Runident FROM Obj as Var, Cell, Loccell, Loc, Obj as Ind, Obj as Run WHERE Cell.Obj_id_r = Run.id AND Cell.Obj_id_v = Var.id AND Loccell.Cell_id = Cell.id AND Loccell.Loc_id = Loc.id AND Loc.Obj_id_i = Ind.id AND Var.Ident = '&chr(39)&vident&chr(39)&' AND Run.ident = '&chr(39)&runident&chr(39) ; index i:= DBquery(Odbc,a); index j:= dblabels(i); dbtable(i,j) 56,88,1 48,12 2,585,25,516,589 39325,65535,39321 vident,runident (vident:text) Newestrun This function checks for the newest result (according to run_id) of the variable. The function is used if the user does not define the run_id as an optional parameter in functions Read_mean and Read_sample. PARAMETERS: * Vident: the Ident of the variable in the Opasnet Base. index i:= DBquery(Odbc,' SELECT Obj_id_r FROM Cell, Obj as Var WHERE Var.id = Cell.Obj_id_v AND Var.Ident = "'&vident&'" GROUP BY Var.id, Obj_id_r '); index j:= dblabels(i); max(max(dbtable(i,j),i),j) 56,16,1 48,12 2,678,59,476,566 39325,65535,39321 vident (vident:text, runident:optional) Read sample Reads the sample data about the vident variable from the Opasnet Base. Uses the runident run if specified; otherwise uses the newest run of that variable. PARAMETERS: * Vident: the name of the variable in the Opasnet Base. * Runident: the Ident of the run from which the results will be brought. If omitted, the newest result will be brought. if isnotspecified(runident) then runident:= identfind(newestrun(vident)); var a:= ' SELECT Temp.id, Obs, Result, Restext FROM (SELECT Cell.id, Res.id AS Res_id, Obs, Result, Obj_id_r FROM Cell, Res, Obj AS Run, Obj AS Var WHERE Var.Ident = '&chr(39)&vident&chr(39)&' AND Cell.Obj_id_v = Var.id AND Cell.Obj_id_r = Run.id AND Run.Ident = '&chr(39)&Runident&chr(39)&' AND Res.Cell_id = Cell.id) AS Temp LEFT JOIN Resinfo ON Temp.Res_id = Resinfo.id '; index i:= DBquery(Odbc,a); index j:= dblabels(i); dbtable(i,j) 56,120,1 48,22 2,700,47,516,612 39325,65535,39321 vident,runident Enter variable Ident 'Op_en1912' 168,83,1 48,27 [Formnode Enter_variable1] 52425,39321,65535 Enter variable 0 288,24,1 176,13 1,0,0,1,0,0,0,170,0,1 52425,39321,65535 Enter_variable Newest run newestrun(Enter_variable) 288,60,1 48,12 Var info read_mean(Enter_variable) 288,108,1 48,12 2,56,66,1205,308,0,MIDM [Sys_localindex('J'),Sys_localindex('I')] (a,inde) Makeind The input table a must have a structure that is also used as input for MDTable function. The function removes one column with location information and makes a dimension (index) with the locations in the column. Inde is the (local) index that will be added. Note that unlike MDTable function, this can use local indices in the output. if size(a.m)= 1 then a else ( a:= if inde = a[@.m=1] then a else 0; index m:= slice(a.m,(2..size(a.m))); a:= a[.m=m]) 56,176,1 48,12 2,283,62,476,224 a,inde (a) Get res.id Makes a multi-dimensional array with the same structure as the original variable that was stored into the Opasnet Base. However, the indices do not have original names. They are named In1, In2,... The contents of the array are the res.ids of the variable. The input parameter must be a 2D table with the structure that comes from the Read_mean function. 1) Slices the necessary columns from the input table and converts that to a 2D table that has the same structure as is used for input to the function MDTable. 2) Defines the local indices (up to 10), and changes a location column to a dimension one at a time until all columns have been changed. index k:= ['Iident','Location','id']; a:= a[.j=k]; index L:= a[@k=1]&'+'&textify(a[@k=3]); index m:= concat(a[.i=unique(a[@k=1],a.i), @k=1],['Result']); index n:= a[.i=unique(a[@k=3],a.i), @k=3]; a:= a[@.i=@L]; a:= a[L=(m)&'+'&textify(n), @k=2]; a:= if m='Result' then n else a; index in1:= a[n=unique(a[@m=1],n),@m=1]; index in2:= a[n=unique(a[@m=2],n),@m=2]; index in3:= a[n=unique(a[@m=3],n),@m=3]; index In4:= a[n=unique(a[@m=4],n),@m=4]; index In5:= a[n=unique(a[@m=5],n),@m=5]; index in6:= a[n=unique(a[@m=6],n),@m=6]; index in7:= a[n=unique(a[@m=7],n),@m=7]; index in8:= a[n=unique(a[@m=8],n),@m=8]; index in9:= a[n=unique(a[@m=9],n),@m=9]; index in10:= a[n=unique(a[@m=10],n),@m=10]; a:= makeind(a, in1); a:= makeind(a, in2); a:= makeind(a, in3); a:= makeind(a, in4); a:= makeind(a, in5); a:= makeind(a, in6); a:= makeind(a, in7); a:= makeind(a, in8); a:= makeind(a, in9); a:= makeind(a, in10); sum(sum(a,a.m),a.n) 56,152,1 48,12 2,669,44,476,545 a Var mean get_mean(Enter_variable) 288,132,1 48,12 2,547,35,416,622,0,MIDM [Sys_localindex('IN2'),Sys_localindex('IN3')] [Sys_localindex('IN1'),1,Sys_localindex('IN4'),1,Sys_localindex('IN5'),1,Sys_localindex('IN3'),1,Sys_localindex('IN2'),1] (vident:text, runident:optional) Get mean Gives the mean result of a (multidimensional) variable stored in the Opasnet Base. The procedure is simple because it utilises the variable structure (with res_ids) derived by the get_res_id function. var a:= read_mean(vident, runident); index o:= a[.j='id']; var output:= a[@.i=@o, .j='Mean']; a:= get_res_id(a); output[o=a] 56,200,1 48,12 2,665,82,476,428 vident,runident (vident:text, runident:optional) Get sample Gives the sample result of a (multidimensional) variable stored in the Opasnet Base. The procedure is simple because it utilises the variable structure (with res_ids) derived by the get_res_id function. Note that if the Analytica samplesize is smaller than the samplesize stored in the Opasnet Base, the extra samples will be discarded. If the samplesize is larger, the remaining rows will be null. 1) Brings the data into the right structure. 2) Chooses whether the actual result is numerical (in the Result column) or text (in the Description column). var a:= read_sample(vident, runident); var b:= textify(get_res_id(read_mean(vident,runident))); index k:= textify(a[.j='id'])&'+'&textify(a[.j='Obs']); index runn:= textify(min(a[.j='Obs'])..max(a[.j='Obs'])); a:= a[@.i=@k]; a:= a[k=b&'+'&runn]; a:= if max(runn)=0 then a[@runn=1] else a[@runn=@run]; var c:= if a[.j='Restext']='' then 0 else 1; c:= sum(sum(sum(sum(sum(sum(sum(sum(sum(sum(c)))))))))); if c=0 then a[.j='Result'] else a[.j='Restext'] 56,224,1 48,12 2,641,28,476,556 vident,runident Var sample get_sample(Enter_variable) 288,156,1 48,12 2,86,111,476,224 2,226,324,416,303,0,MEAN [Sys_localindex('IN5'),Sys_localindex('IN3')] [Sys_localindex('IN1'),1,Sys_localindex('IN2'),1,Sys_localindex('IN4'),1,Sys_localindex('IN3'),1,Sys_localindex('J'),1,Sys_localindex('IN5'),1] (runid) Identfind Finds the Ident for the run (or another object) that has the id runid. index i:= DBquery(Odbc,' SELECT Ident FROM Obj WHERE Obj.id = "'&runid&'" '); index j:= dblabels(i); var a:= dbtable(i,j); a[@i=1, @j=1] 56,64,1 48,12 2,732,65,516,589 39325,65535,39321 runid Var run info Describes the runs of the defined variable. This should be made a function. var_run_info(Enter_variable) 288,84,1 48,12 2,136,146,1111,285,0,MIDM [Sys_localindex('J'),Sys_localindex('I')] (vident:text) Var run info This function checks for the newest result (according to run_id) of the variable. The function is used if the user does not define the run_id as an optional parameter in functions Read_mean and Read_sample. PARAMETERS: * Vident: the Ident of the variable in the Opasnet Base. var a:= ' SELECT Var.Ident, Var.Name, Var.Unit, Run.Ident AS Runident, Act.When, Act.Who, Run.Name as Method FROM Obj as Var, Obj as Run, Cell, Objinfo AS Act WHERE Var.Ident = '&chr(39)&vident&chr(39)&' AND Var.id = Cell.Obj_id_v AND Run.id = Cell.Obj_id_r AND Run.id = Act.id GROUP BY Var.id, Run.id '; index i:= DBquery(Odbc,a); index j:= dblabels(i); dbtable(i,j) 56,40,1 48,13 2,678,59,476,566 39325,65535,39321 vident Use these functions to retireve data from the Opasnet base: * Newest_run: finds the newest run of the object. * Var_run_info: Finds the run information of the object. * Read_mean: Reads the means of each cell. * Get_mean * Get_sample: Reads the whole sample. Note! These should be updated when we get experience about what we actually want out. 280,285,-1 168,101 (a) Textify Changes an integer of any length to a text value. This bypasses the number formatting problem that tends to convert e.g. 93341 to '93.34K'. If the number is not integer, up to three digits after the decimal point will be taken as well. a&'' {for y[]:= a do ( if istext(y) then y else ( var x:= 1; var b:= ''; var c:= if y<1 then 1 else floor(logten(y))+1; while x<= c do ( b:= (y-floor(y/10)*10)&b; y:= floor(y/10); x:= x+1); b) )} 56,248,1 48,12 2,102,90,476,371 a 2,F,4,14,0,0,4,0,$,0,"ABBREV",0 Details ktluser 8. Decta 2008 3:01 48,24 64,96,1 48,24 1,30,113,495,453,17 Object types Types of different objects that may exist in Analytica or Opasnet Base. Types that have the same number are treated equally in these systems. Table(Self)( 'Variable','Dimension','Method','Model','Class','Index','Nugget','Encyclopedia article','Run','Chance','Decision','Objective','Constant','Determ','Module','Library','Form') [1,2,3,4,5,6,7,8,9,1,10,1,1,1,4,4,4] 56,408,1 48,20 2,56,132,476,224 2,674,34,416,606,0,MIDM 2,636,151,416,390,0,MIDM 65535,52427,65534 (a; file:texttype) Tablefy a:= '"'&a&'"'; a:= jointext(a,a.j,';'); Writetextfile('c:\temp\'&file, a) 168,368,1 48,13 2,44,303,476,224 a,file 2,F,4,14,0,0,4,0,$,0,"ABBREV",0 (a; x:optional = 1; e, f:optional=0) Doloccell 1) Size(h) is size(a.j)-2 because j contains 'Result' and 'SD'. 2) Only the deterministic information about variables are considered (therefore mean). Makes a 2D table of the locres info. 3) Makes a table with fields required by the Loccell and Cell tables. 4) Reduces one dimension by expanding the length from the length of Cell to that of Loccell. index j:= ['id', 'Location', 'Cell_id', 'Loc_id', 'Obj_id_v', 'Obj_id_r', 'Mean', 'SD', 'N']; index h:= a.j[@.j=1..size(a.j)-2]; index i:= 1..size(a.i)*size(h); var c:= Objects[@.i=x]; a:= array(j,[ i[@i=@a.i+size(a.i)*(@h-1)]+e, a[.j=h]&'', a.i+f, h, c[.j='Ident'], '', a[.j='Result'], a[.j='SD'], if c[.j='Probabilistic?']=1 then samplesize else 0]); concatrows(a,h,a.i,i) 400,280,1 48,13 2,627,78,556,561 a,x,e,f (a: prob; probabilistic; e, f: optional=0) Doresult index runn:= if Probabilistic=1 then copyindex(run) else [0]; index i:= (1..size(max(a.i,run))*size(runn))+f; a:= if Probabilistic=1 then a[run=runn] else (if runn=0 then a else a); a:= a[.j='Result']; index j:= ['id','Cell_id','Obs','Result','Restext']; a:= array(j,[0, a.i+e, runn, (if istext(a) then 0 else a) , (if istext(a) then a else 0)]); a:= concatrows(a,a.i,runn, i); a:= if j='id' then i else a 400,256,1 48,13 2,687,174,476,526 a,probabilistic,e,f (a) Dolocation var b:= [0]; var c:= [0]; var e:= [0]; var f:= [0]; var x:= 1; while x<= size(a.j)-1 do ( var h:= a[@.j=x]; var d:= h[.i=unique(h,h.i)]; b:= concat(b,d); c:= concat(c,(if d=0 then slice(a.j,x) else slice(a.j,x))); e:= concat(e,1..size(d)); x:= x+1); index i:= 1..size(b)-1; index j:= ['id','Obj_id_i', 'Location', 'Roww', 'Description']; array(j,[i, slice(c,i+1), slice(b,i+1)&'', slice(e,i+1), '']); 400,232,1 48,12 2,671,164,503,486 a Concatenation UDFs This library contains functions to make various instances of concatenation more convenient. Concat3 thru Concat10 are generalizations of the built-in Concat function which concatenate from 3 to 10 arrays in a single call (while the built-in Concat concatenates two arrays). ConcatRows concatenates all the rows of a single array. David Kendall & Lonnie Chrisman Mon, Jan 26, 2004 8:49 AM Lonnie Wed, Sep 05, 2007 3:23 PM 48,24 184,328,1 68,20 1,0,0,1,1,1,0,0,0,0 1,50,200,488,454,23 (A1, A2, A3: ArrayType; I1, I2, I3, J: IndexType ) Concat3 Concatenates three arrays, A1, A2, and A3. I1, I2, and I3 are the indexes that are joined; J is the index of the new array; J usually is the concatenation of I1, I2, and I3 Index I12 := Concat(I1,I2); Concat( Concat( A1,A2,I1,I2,I12 ), A3, I12, I3, J ) 88,64,1 48,26 2,56,56,986,596 A1,A2,A3,I1,I2,I3,J (A1, A2, A3, A4: ArrayType; I1, I2, I3, I4, J: IndexType ) Concat4 Concatenates four arrays, A1, A2, A3, and A4. I1, I2, I3, and I4 are the indexes that are joined; J is the index of the new array; J usually is the concatenation of I1, I2, I3, and I4. Index I12 := Concat(I1,I2); Index I123:= Concat(I12, I3); Concat( Concat( Concat( A1,A2,I1,I2,I12 ), A3, I12, I3, I123), A4, I123, I4, J); 192,64,1 48,24 2,30,30,986,596 A1,A2,A3,A4,I1,I2,I3,I4,J 0 (A1, A2, A3, A4, A5, A6, A7, A8, A9: ArrayType; I1, I2, I3, I4, I5, I6, I7, I8, I9, J: IndexType) Concat9 Concatenates nine arrays, A1, ..., A9. I1, ..., I9 are the indexes joined; J is the index of the new array; J usually is the concatenation of I1, ..., I9. Index I12 := Concat(I1,I2); Index I123 := Concat(I12, I3); Index I1234 := Concat(I123, I4); Index I12345 := Concat(I1234, I5); Index I123456 := Concat(I12345, I6); Index I1234567 := Concat(I123456, I7); Index I12345678 := Concat(I1234567, I8); Concat( Concat( Concat( Concat( Concat( Concat( Concat( Concat( A1,A2,I1,I2,I12 ), A3, I12, I3, I123), A4, I123, I4, I1234), A5, I1234, I5, I12345), A6, I12345, I6, I123456), A7, I123456, I7, I1234567), A8, I1234567, I8, I12345678), A9, I12345678, I9, J); 88,232,1 48,24 2,27,120,469,638 A1,A2,A3,A4,A5,A6,A7,A8,A9,I1,I2,I3,I4,I5,I6,I7,I8,I9,J 0 (A1, A2, A3, A4, A5: ArrayType; I1, I2, I3, I4, I5, J: IndexType ) Concat5 Concatenates five arrays, A1, ..., A5. I1, ..., I5 are the indexes joined; J is the index of the new array; J usually is the concatenation of I1, ..., I5. Index I12 := Concat(I1,I2); Index I123:= Concat(I12, I3); Index I1234 := Concat(I123, I4); Concat( Concat( Concat( Concat( A1,A2,I1,I2,I12 ), A3, I12, I3, I123), A4, I123, I4, I1234), A5, I1234, I5, J); 88,120,1 48,24 2,160,160,986,596 A1,A2,A3,A4,A5,I1,I2,I3,I4,I5,J (A1, A2, A3, A4, A5, A6: ArrayType; I1, I2, I3, I4, I5, I6, J: IndexType ) Concat6 Concatenates six arrays, A1, ..., A6. I1, ..., I6 are the indexes joined; J is the index of the new array; J usually is the concatenation of I1, ..., I6. Index I12 := Concat(I1,I2); Index I123:= Concat(I12, I3); Index I1234 := Concat(I123, I4); Index I12345 := Concat(I1234, I5); Concat( Concat( Concat( Concat( Concat( A1,A2,I1,I2,I12 ), A3, I12, I3, I123), A4, I123, I4, I1234), A5, I1234, I5, I12345), A6, I12345, I6, J); 192,120,1 48,24 2,644,94,602,712 A1,A2,A3,A4,A5,A6,I1,I2,I3,I4,I5,I6,J 0 (A1, A2, A3, A4, A5, A6, A7: ArrayType; I1, I2, I3, I4, I5, I6, I7, J: IndexType ) Concat7 Concatenates seven arrays, A1, ..., A7. I1, ..., I7 are the indexes joined; J is the index of the new array; J usually is the concatenation of I1, ..., I7. Index I12 := Concat(I1,I2); Index I123:= Concat(I12, I3); Index I1234 := Concat(I123, I4); Index I12345 := Concat(I1234, I5); Index I123456 := Concat(I12345, I6); Concat( Concat( Concat( Concat( Concat( Concat( A1,A2,I1,I2,I12 ), A3, I12, I3, I123), A4, I123, I4, I1234), A5, I1234, I5, I12345), A6, I12345, I6, I123456), A7, I123456, I7, J); 88,176,1 48,24 2,580,98,551,565 A1,A2,A3,A4,A5,A6,A7,I1,I2,I3,I4,I5,I6,I7,J (A1, A2, A3, A4, A5, A6, A7, A8: ArrayType; I1, I2, I3, I4, I5, I6, I7, I8, J: IndexType ) Concat8 Concatenates eight arrays, A1, ..., A8. I1, ..., I8 are the indexes joined; J is the index of the new array; J usually is the concatenation of I1, ..., I8. Index I12 := Concat(I1,I2); Index I123:= Concat(I12, I3); Index I1234 := Concat(I123, I4); Index I12345 := Concat(I1234, I5); Index I123456 := Concat(I12345, I6); Index I1234567 := Concat(I123456, I7); Concat( Concat( Concat( Concat( Concat( Concat( Concat( A1,A2,I1,I2,I12 ), A3, I12, I3, I123), A4, I123, I4, I1234), A5, I1234, I5, I12345), A6, I12345, I6, I123456), A7, I123456, I7, I1234567), A8, I1234567, I8, J); 192,176,1 48,24 2,12,98,561,737 A1,A2,A3,A4,A5,A6,A7,A8,I1,I2,I3,I4,I5,I6,I7,I8,J 0 (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10: ArrayType; I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, J: IndexType) Concat10 Concatenates ten arrays, A1, ..., A10. I1, ..., I10 are the indexes joined; J is the index of the new array; J usually is the concatenation of I1, ..., I10. Index I12 := Concat(I1,I2); Index I123 := Concat(I12, I3); Index I1234 := Concat(I123, I4); Index I12345 := Concat(I1234, I5); Index I123456 := Concat(I12345, I6); Index I1234567 := Concat(I123456, I7); Index I12345678 := Concat(I1234567, I8); Index I123456789 := Concat(I12345678, I9); Concat( Concat( Concat( Concat( Concat( Concat( Concat( Concat( Concat( A1,A2,I1,I2,I12 ), A3, I12, I3, I123), A4, I123, I4, I1234), A5, I1234, I5, I12345), A6, I12345, I6, I123456), A7, I123456, I7, I1234567), A8, I1234567, I8, I12345678), A9, I12345678, I9, I123456789), A10, I123456789, I10, J); 192,232,1 48,24 2,542,93,632,744 A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,J 0 (A : ArrayType ; RowIndex,ColIndex,ResultIndex : IndexType) ConcatRows (A,I,J,K) Takes an array, A indexed by RowIndex & ColIndex, and concatenates each row, henceforth flattening the array by one dimension. The result is indexed by ResultIndex, which must be an index with size(RowIndex) * size(ColIndex) elements. index L := [ identifier of RowIndex, identifier of ColIndex, "val"]; slice(Mdarraytotable(A,ResultIndex,L),L,3) 320,64,1 64,24 2,499,85,478,348 A,RowIndex,ColIndex,ResultIndex ODBC Library Lonnie Thu, Sep 11, 1997 2:15 PM Lonnie Tue, Feb 05, 2008 10:03 AM 48,24 56,328,1 52,20 1,1,1,1,1,1,0,0,0,0 1,20,272,499,462,17 Arial, 13 (A:ArrayType;I:IndexType;L:IndexType;row:IndexType;dbTableName) InsertRecSql Generates the SQL "INSERT INTO" statement for one line of table A. A is a 2-D table indexed by rows I and columns L. L's domain serves as the column names in the database table. dbTableName is the name of the table in the database. The result begins with two semi-colons, since it will be used with an SQL statement preceeding it. 29.8.2008 Jouni Tuomisto I added the parameter IGNORE because it ignores rows that would cause duplicate-key violations. This way, there is no need to check for e.g. existing locations of new indices. 6.1.2009 Jouni Tuomisto I changed the A[I=row] to A[@I=@row] because the original function does not work correctly, if there are non-unique rows in the index. (';;INSERT IGNORE INTO ' & dbTableName & '(' & JoinText(L,L,',') & ') VALUES (' & Vallist(A[@I=@row],L)) & ') ' 184,32,1 52,24 2,591,203,487,469 A,I,L,row,dbTableName (V:ArrayType;I:IndexType) ValList Takes a list of values, and returns a string which the concatenation of each value, separated by commas, and with each value quoted. JoinText( '''' & V & '''', I, ',') 72,32,0 52,24 2,642,360,476,224 V,I 1,F,4,14,0,0 (Tabl:ArrayType;RowIndex:IndexType;LabelIndex:IndexType;dbTableName) WriteTableSql(Table,Rows,Labels,dbTableName) Returns the SQL that will write the table to the database table. This can be used as the second argument to DBWrite. This SQL statement replaces the entire contents of an existing table with the new data. 'DELETE FROM '& Dbtablename & JoinText(Insertrecsql(Tabl, Rowindex, Labelindex, Rowindex, Dbtablename),RowIndex) 328,32,1 88,24 2,728,341,510,476 Tabl,RowIndex,LabelIndex,dbTableName (Tabl:ArrayType;RowIndex:IndexType;LabelIndex:IndexType;dbTableName) AppendTableSql(Table,Rows,Labels,dbTableName) Returns the SQL that will write the table to the database table. This can be used as the second argument to DBWrite. This SQL statement replaces the entire contents of an existing table with the new data. JoinText(Insertrecsql(Tabl, Rowindex, Labelindex, Rowindex, Dbtablename),RowIndex) 328,88,1 88,24 2,559,127,510,476 Tabl,RowIndex,LabelIndex,dbTableName (table:texttype) Card Brings the largest id number from the table defined in the parameter. index i:= DBquery(odbc,' SELECT MAX(id) AS id FROM '&table&' '); index j:= dblabels(i); max(max(DBTable(i, j ),i),j) 56,272,1 48,12 2,102,90,476,331 39325,65535,39321 table Tables List of such tables in Opasnet Base that are being written to by this module. ['Obj','Cell','Loc','Loccell','Sett','Item','Res'] 280,256,1 48,13 2,15,594,158,227,0,MIDM ['Obj','Cell','Loc','Loccell','Sett','Item','Res'] Cardinals The largest id values for the selected Opasnet Base tables. The table is updated by pressing the R_cardinals button. Table(Table1)( 964,759.928K,14.282K,2.111994M,47,146,2.04294M ) 280,232,1 48,12 2,634,394,476,332 2,193,270,416,303,0,MIDM 2,87,329,416,303,0,MIDM 39325,65535,39321 2,I,4,2,0,0,4,0,$,0,"ABBREV",0 (in, table; cond:texttype) Findid This function gets an id from a table. in: the property for which the id is needed. In MUST be unique in cond and it must contain index i. table: the table from where the id is brought. The table MUST have .j as the column index, .i as the row index, and a column named 'id'. cond: the name of the field that is compared with in. Cond must be text. index L:= in[.i=unique(in, in.i)]; var a:= if (L&' ') = (table[.j=cond]&' ') then table[.j='id'] else 0; a:= textify(sum(a, table.i)); a[.L=in] 56,248,1 48,12 2,636,101,494,519 in,table,cond (type) Types Finds the objects that are of the object type "type" (the only parameter of this function). Based on the information in Objects1. var a:= if Objects1[.j='Typ_id']=type then 1 else 0; Objects1[Object_all=subset(a),.j='id'] 56,224,1 48,12 2,551,191,476,344 type (var, table) Write if size(var)>0 then dbwrite((if platform = 'Lumina AWP' then 'Driver={MySQL ODBC 3.51 Driver};Server=193.167.179.97' else 'Driver={MySQL ODBC 5.1 Driver};Server=10.66.10.102')&';Database=opasnet_base;User=resultwriter; Password='&writerpsswd&';Option=3' , appendtablesql(var,var.i, var.j, table&' ')) if size(var)>0 then dbwrite((if platform = 'Lumina AWP' then 'Driver={MySQL ODBC 3.51 Driver};Server=193.167.179.97' else 'Driver={MySQL ODBC 5.1 Driver};Server=10.66.10.102')&';Database=opasnet_base;User=resultwriter; Password='&writerpsswd&';Option=3' , appendtablesql(var,var.i, var.j, table&' ')) 56,296,1 48,12 2,776,65,476,457 var,table 0 ODBC write For Lumina AWP use the following should be used: 'Driver={MySQL ODBC 3.51 Driver};Server=193.167.179.97;Database=opasnet_base;User=resultwriter; Password=;Option=3' For internal THL use the following should be used: 'Driver={MySQL ODBC 5.1 Driver};Server=10.66.10.102;Database=opasnet_base;User=resultwriter; Password='&writerpsswd&';Option=3' var a:= if platform='Lumina AWP' then 'Driver={MySQL ODBC 3.51 Driver};Server=193.167.179.97' else 'Driver={MySQL ODBC 5.1 Driver};Server=10.66.10.102'; a&';Database=opasnet_base;User=resultwriter; Password='&writerpsswd&';Option=3' 168,232,1 48,12 1,1,0,1,1,1,0,,0, 2,102,90,495,346 2,168,178,833,303,0,MIDM [] Opasnet username The username for Opasnet wiki 'Jouni' 168,161,1 48,22 1,1,1,1,1,1,0,0,0,0 2,102,90,476,398 [Formnode Username1] 52425,39321,65535 Opasnet password The user's password for Opasnet wiki. 'Add password' 168,200,1 48,22 1,1,1,1,1,1,0,0,0,0 2,102,90,476,520 [Formnode Password1] 52425,39321,65535 ODBC Contains the parameters for the open database connectivity (ODBC). For Lumina AWP use the following should be used: 'Driver={MySQL ODBC 3.51 Driver};Server=193.167.179.97;Database=opasnet_base;User=result_reader; Password=ora4ever;Option=3' For THL internal use the following should be used: 'Driver={MySQL ODBC 5.1 Driver};Server=10.66.10.102;Database=opasnet_base;User=result_reader; Password=ora4ever;Option=3' var a:= if platform='Lumina AWP' then 'Driver={MySQL ODBC 3.51 Driver};Server=193.167.179.97' else 'Driver={MySQL ODBC 5.1 Driver};Server=10.66.10.102'; a&';Database=opasnet_base;User=result_reader; Password=ora4ever;Option=3' 168,128,1 48,12 1,1,0,1,1,1,0,,0, 2,149,300,508,420 2,56,66,918,303,0,MIDM Dim index i:= copyindex(D_i); index j:= copyindex(D_j); Dim1[d_i=i, d_j=j] 400,160,1 48,13 1,1,0,1,1,1,0,0,0,0 2,89,98,476,224 2,635,328,556,489,0,MIDM 19661,54073,65535 [D_i,D_j] [Sys_localindex('J'),Sys_localindex('I')] Ind index i:= copyindex(I_i); index j:= copyindex(I_j); Ind1[I_i=i, I_j=j] 400,184,1 48,13 1,1,0,1,1,1,0,0,0,0 2,380,47,476,296 2,490,110,649,655,0,MIDM 19661,54073,65535 [Sys_localindex('J'),Sys_localindex('I')] Loc index i:= copyindex(L_i); index j:= copyindex(L_j); Loc1[L_i=i, L_j=j] 400,96,1 48,13 1,1,0,1,1,1,0,0,0,0 2,370,45,476,445 2,43,42,1147,516,0,MIDM 19661,54073,65535 [Sys_localindex('J'),Sys_localindex('I')] 2,I,4,2,0,0,4,0,$,0,"ABBREV",0 Obj This node checks the variables listed in Var_for_rdb and makes an index of those that are NOT found in the result database. This is then used as an index in Inp_var for adding variable information. index i:= copyindex(O_i); index j:= copyindex(O_j); Obj2[O_i=i, O_j=j] 400,48,1 48,13 1,1,0,1,1,1,0,0,0,0 2,378,21,493,501 2,21,103,977,421,0,MIDM 19661,54073,65535 [Sys_localindex('J'),Sys_localindex('I')] [Self,1,Sys_localindex('I'),1,Sys_localindex('J'),1] Standard versions 400,112,-1 72,100 1,0,0,1,0,1,0,,0, D_i [0] 168,24,1 48,12 D_j ['id','Ident','Name'] 168,48,1 48,12 I_i [0] 168,72,1 48,12 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34] I_j ['id','Iident','Iname','Did','Dident','Dname'] 168,96,1 48,12 ['id','Iident','Iname','Did','Dident','Dname'] L_i [0] 56,120,1 48,12 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2070,2071,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140,2141,2142,2143,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2155,2156,2157,2158,2159,2160,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241,2242,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2502,2503,2504,2505,2506,2507,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618,2619,2620,2621,2622,2623,2624,2625,2626,2627,2628,2629,2630,2631,2632,2633,2634,2635,2636,2637,2638,2639,2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2677,2678,2679,2680,2681,2682,2683,2684,2685,2686,2687,2688,2689,2690,2691,2692,2693,2694,2695,2696,2697,2698,2699,2700,2701,2702,2703,2704,2705,2706,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2729,2730,2731,2732,2733,2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784,2785,2786,2787,2788,2789,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,2811,2812,2813,2814,2815,2816,2817,2818,2819,2820,2821,2822,2823,2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2857,2858,2859,2860,2861,2862,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2885,2886,2887,2888,2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901,2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,2944,2945,2946,2947,2948,2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,3173,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188,3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327,3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458,3459,3460,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,3512,3513,3514,3515,3516,3517,3518,3519,3520,3521,3522,3523,3524,3525,3526,3527,3528,3529,3530,3531,3532,3533,3534,3535,3536,3537,3538,3539,3540,3541,3542,3543,3544,3545,3546,3547,3548,3549,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3560,3561,3562,3563,3564,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,3581,3582,3583,3584,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,3643,3644,3645,3646,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3689,3690,3691,3692,3693,3694,3695,3696,3697,3698,3699,3700,3701,3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3712,3713,3714,3715,3716,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3732,3733,3734,3735,3736,3737,3738,3739,3740,3741,3742,3743,3744,3745,3746,3747,3748,3749,3750,3751,3752,3753,3754,3755,3756,3757,3758,3759,3760,3761,3762,3763,3764,3765,3766,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,3779,3780,3781,3782,3783,3784,3785,3786,3787,3788,3789,3790,3791,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3802,3803,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818,3819,3820,3821,3822,3823,3824,3825,3826,3827,3828,3829,3830,3831,3832,3833,3834,3835,3836,3837,3838,3839,3840,3841,3842,3843,3844,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3857,3858,3859,3860,3861,3862,3863,3864,3865,3866,3867,3868,3869,3870,3871,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895,3896,3897,3898,3899,3900,3901,3902,3903,3904,3905,3906,3907,3908,3909,3910,3911,3912,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3992,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038,4039,4040,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055,4056,4057,4058,4059,4060,4061,4062,4063,4064,4065,4066,4067,4068,4069,4070,4071,4072,4073,4074,4075,4076,4077,4078,4079,4080,4081,4082,4083,4084,4085,4086,4087,4088,4089,4090,4091,4092,4093,4094,4095,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254,4255,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4294,4295,4296,4297,4298,4299,4300,4301,4302,4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4347,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,4519,4520,4521,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682,4683,4684,4685,4686,4687,4688,4689,4690,4691,4692,4693,4694,4695,4696,4697,4698,4699,4700,4701,4702,4703,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4745,4746,4747,4748,4749,4750,4751,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782,4783,4784,4785,4786,4787,4788,4789,4790,4791,4792,4793,4794,4795,4796,4797,4798,4799,4800,4801,4802,4803,4804,4805,4806,4807,4808,4809,4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4823,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4881,4882,4883,4884,4885,4886,4887,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4955,4956,4957,4958,4959,4960,4961,4962,4963,4964,4965,4966,4967,4968,4969,4970,4971,4972,4973,4974,4975,4976,4977,4978,4979,4980,4981,4982,4983,4984,4985,4986,4987,4988,4989,4990,4991,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5008,5009,5010,5011,5012,5013,5014,5015,5016,5017,5018,5019,5020,5021,5022,5023,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,5113,5114,5115,5116,5117,5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792,5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000,6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6313,6314,6315,6316,6317,6318,6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394,6395,6396,6397,6398,6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6480,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6570,6571,6572,6573,6574,6575,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6602,6603,6604,6605,6606,6607,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621,6622,6623,6624,6625,6626,6627,6628,6629,6630,6631,6632,6633,6634,6635,6636,6637,6638,6639,6640,6641,6642,6643,6644,6645,6646,6647,6648,6649,6650,6651,6652,6653,6654,6655,6656,6657,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674,6675,6676,6677,6678,6679,6680,6681,6682,6683,6684,6685,6686,6687,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6741,6742,6743,6744,6745,6746,6747,6748,6749,6750,6751,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6781,6782,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6794,6795,6796,6797,6798,6799,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6810,6811,6812,6813,6814,6815,6816,6817,6818,6819,6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6834,6835,6836,6837,6838,6839,6840,6841,6842,6843,6844,6845,6846,6847,6848,6849,6850,6851,6852,6853,6854,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,6878,6879,6880,6881,6882,6883,6884,6885,6886,6887,6888,6889,6890,6891,6892,6893,6894,6895,6896,6897,6898,6899,6900,6901,6902,6903,6904,6905,6906,6907,6908,6909,6910,6911,6912,6913,6914,6915,6916,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6981,6982,6983,6984,6985,6986,6987,6988,6989,6990,6991,6992,6993,6994,6995,6996,6997,6998,6999,7000,7001,7002,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,7029,7030,7031,7032,7033,7034,7035,7036,7037,7038,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7086,7087,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,7296,7297,7298,7299,7300,7301,7302,7303,7304,7305,7306,7307,7308,7309,7310,7311,7312,7313,7314,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,7354,7355,7356,7357,7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369,7370,7371,7372,7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7401,7402,7403,7404,7405,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7423,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659,7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,7671,7672,7673,7674,7675,7676,7677,7678,7679,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277,8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368,8369,8370,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,8657,8658,8659,8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8681,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,8734,8735,8736,8737,8738,8739,8740,8741,8742,8743,8744,8745,8746,8747,8748,8749,8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8761,8762,8763,8764,8765,8766,8767,8768,8769,8770,8771,8772,8773,8774,8775,8776,8777,8778,8779,8780,8781,8782,8783,8784,8785,8786,8787,8788,8789,8790,8791,8792,8793,8794,8795,8796,8797,8798,8799,8800,8801,8802,8803,8804,8805,8806,8807,8808,8809,8810,8811,8812,8813,8814,8815,8816,8817,8818,8819,8820,8821,8822,8823,8824,8825,8826,8827,8828,8829,8830,8831,8832,8833,8834,8835,8836,8837,8838,8839,8840,8841,8842,8843,8844,8845,8846,8847,8848,8849,8850,8851,8852,8853,8854,8855,8856,8857,8858,8859,8860,8861,8862,8863,8864,8865,8866,8867,8868,8869,8870,8871,8872,8873,8874,8875,8876,8877,8878,8879,8880,8881,8882,8883,8884,8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8895,8896,8897,8898,8899,8900,8901,8902,8903,8904,8905,8906,8907,8908,8909,8910,8911,8912,8913,8914,8915,8916,8917,8918,8919,8920,8921,8922,8923,8924,8925,8926,8927,8928,8929,8930,8931,8932,8933,8934,8935,8936,8937,8938,8939,8940,8941,8942,8943,8944,8945,8946,8947,8948,8949,8950,8951,8952,8953,8954,8955,8956,8957,8958,8959,8960,8961,8962,8963,8964,8965,8966,8967,8968,8969,8970,8971,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,8993,8994,8995,8996,8997,8998,8999,9000,9001,9002,9003,9004,9005,9006,9007,9008,9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019,9020,9021,9022,9023,9024,9025,9026,9027,9028,9029,9030,9031,9032,9033,9034,9035,9036,9037,9038,9039,9040,9041,9042,9043,9044,9045,9046,9047,9048,9049,9050,9051,9052,9053,9054,9055,9056,9057,9058,9059,9060,9061,9062,9063,9064,9065,9066,9067,9068,9069,9070,9071,9072,9073,9074,9075,9076,9077,9078,9079,9080,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094,9095,9096,9097,9098,9099,9100,9101,9102,9103,9104,9105,9106,9107,9108,9109,9110,9111,9112,9113,9114,9115,9116,9117,9118,9119,9120,9121,9122,9123,9124,9125,9126,9127,9128,9129,9130,9131,9132,9133,9134,9135,9136,9137,9138,9139,9140,9141,9142,9143,9144,9145,9146,9147,9148,9149,9150,9151,9152,9153,9154,9155,9156,9157,9158,9159,9160,9161,9162,9163,9164,9165,9166,9167,9168,9169,9170,9171,9172,9173,9174,9175,9176,9177,9178,9179,9180,9181,9182,9183,9184,9185,9186,9187,9188,9189,9190,9191,9192,9193,9194,9195,9196,9197,9198,9199,9200,9201,9202,9203,9204,9205,9206,9207,9208,9209,9210,9211,9212,9213,9214,9215,9216,9217,9218,9219,9220,9221,9222,9223,9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,9246,9247,9248,9249,9250,9251,9252,9253,9254,9255,9256,9257,9258,9259,9260,9261,9262,9263,9264,9265,9266,9267,9268,9269,9270,9271,9272,9273,9274,9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,9286,9287,9288,9289,9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,9303,9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405,9406,9407,9408,9409,9410,9411,9412,9413,9414,9415,9416,9417,9418,9419,9420,9421,9422,9423,9424,9425,9426,9427,9428,9429,9430,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,9449,9450,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461,9462,9463,9464,9465,9466,9467,9468,9469,9470,9471,9472,9473,9474,9475,9476,9477,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,9489,9490,9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9588,9589,9590,9591,9592,9593,9594,9595,9596,9597,9598,9599,9600,9601,9602,9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628,9629,9630,9631,9632,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643,9644,9645,9646,9647,9648,9649,9650,9651,9652,9653,9654,9655,9656,9657,9658,9659,9660,9661,9662,9663,9664,9665,9666,9667,9668,9669,9670,9671,9672,9673,9674,9675,9676,9677,9678,9679,9680,9681,9682,9683,9684,9685,9686,9687,9688,9689,9690,9691,9692,9693,9694,9695,9696,9697,9698,9699,9700,9701,9702,9703,9704,9705,9706,9707,9708,9709,9710,9711,9712,9713,9714,9715,9716,9717,9718,9719,9720,9721,9722,9723,9724,9725,9726,9727,9728,9729,9730,9731,9732,9733,9734,9735,9736,9737,9738,9739,9740,9741,9742,9743,9744,9745,9746,9747,9748,9749,9750,9751,9752,9753,9754,9755,9756,9757,9758,9759,9760,9761,9762,9763,9764,9765,9766,9767,9768,9769,9770,9771,9772,9773,9774,9775,9776,9777,9778,9779,9780,9781,9782,9783,9784,9785,9786,9787,9788,9789,9790,9791,9792,9793,9794,9795,9796,9797,9798,9799,9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,9810,9811,9812,9813,9814,9815,9816,9817,9818,9819,9820,9821,9822,9823,9824,9825,9826,9827,9828,9829,9830,9831,9832,9833,9834,9835,9836,9837,9838,9839,9840,9841,9842,9843,9844,9845,9846,9847,9848,9849,9850,9851,9852,9853,9854,9855,9856,9857,9858,9859,9860,9861,9862,9863,9864,9865,9866,9867,9868,9869,9870,9871,9872,9873,9874,9875,9876,9877,9878,9879,9880,9881,9882,9883,9884,9885,9886,9887,9888,9889,9890,9891,9892,9893,9894,9895,9896,9897,9898,9899,9900,9901,9902,9903,9904,9905,9906,9907,9908,9909,9910,9911,9912,9913,9914,9915,9916,9917,9918,9919,9920,9921,9922,9923,9924,9925,9926,9927,9928,9929,9930,9931,9932,9933,9934,9935,9936,9937,9938,9939,9940,9941,9942,9943,9944,9945,9946,9947,9948,9949,9950,9951,9952,9953,9954,9955,9956,9957,9958,9959,9960,9961,9962,9963,9964,9965,9966,9967,9968,9969,9970,9971,9972,9973,9974,9975,9976,9977,9978,9979,9980,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990,9991,9992,9993,9994,9995,9996,9997,9998,9999,10K,10.001K,10.002K,10.003K,10.004K,10.005K,10.006K,10.007K,10.008K,10.009K,10.01K,10.011K,10.012K,10.013K,10.014K,10.015K,10.016K,10.017K,10.018K,10.019K,10.02K,10.021K,10.022K,10.023K,10.024K,10.025K,10.026K,10.027K,10.028K,10.029K,10.03K,10.031K,10.032K,10.033K,10.034K,10.035K,10.036K,10.037K,10.038K,10.039K,10.04K,10.041K,10.042K,10.043K,10.044K,10.045K,10.046K,10.047K,10.048K,10.049K,10.05K,10.051K,10.052K,10.053K,10.054K,10.055K,10.056K,10.057K,10.058K,10.059K,10.06K,10.061K,10.062K,10.063K,10.064K,10.065K,10.066K,10.067K,10.068K,10.069K,10.07K,10.071K,10.072K,10.073K,10.074K,10.075K,10.076K,10.077K,10.078K,10.079K,10.08K,10.081K,10.082K,10.083K,10.084K,10.085K,10.086K,10.087K,10.088K,10.089K,10.09K,10.091K,10.092K,10.093K,10.094K,10.095K,10.096K,10.097K,10.098K,10.099K,10.1K,10.101K,10.102K,10.103K,10.104K,10.105K,10.106K,10.107K,10.108K,10.109K,10.11K,10.111K,10.112K,10.113K,10.114K,10.115K,10.116K,10.117K,10.118K,10.119K,10.12K,10.121K,10.122K,10.123K,10.124K,10.125K,10.126K,10.127K,10.128K,10.129K,10.13K,10.131K,10.132K,10.133K,10.134K,10.135K,10.136K,10.137K,10.138K,10.139K,10.14K,10.141K,10.142K,10.143K,10.144K,10.145K,10.146K,10.147K,10.148K,10.149K,10.15K,10.151K,10.152K,10.153K,10.154K,10.155K,10.156K,10.157K,10.158K,10.159K,10.16K,10.161K,10.162K,10.163K,10.164K,10.165K,10.166K,10.167K,10.168K,10.169K,10.17K,10.171K,10.172K,10.173K,10.174K,10.175K,10.176K,10.177K,10.178K,10.179K,10.18K,10.181K,10.182K,10.183K,10.184K,10.185K,10.186K,10.187K,10.188K,10.189K,10.19K,10.191K,10.192K,10.193K,10.194K,10.195K,10.196K,10.197K,10.198K,10.199K,10.2K,10.201K,10.202K,10.203K,10.204K,10.205K,10.206K,10.207K,10.208K,10.209K,10.21K,10.211K,10.212K,10.213K,10.214K,10.215K,10.216K,10.217K,10.218K,10.219K,10.22K,10.221K,10.222K,10.223K,10.224K,10.225K,10.226K,10.227K,10.228K,10.229K,10.23K,10.231K,10.232K,10.233K,10.234K,10.235K,10.236K,10.237K,10.238K,10.239K,10.24K,10.241K,10.242K,10.243K,10.244K,10.245K,10.246K,10.247K,10.248K,10.249K,10.25K,10.251K,10.252K,10.253K,10.254K,10.255K,10.256K,10.257K,10.258K,10.259K,10.26K,10.261K,10.262K,10.263K,10.264K,10.265K,10.266K,10.267K,10.268K,10.269K,10.27K,10.271K,10.272K,10.273K,10.274K,10.275K,10.276K,10.277K,10.278K,10.279K,10.28K,10.281K,10.282K,10.283K,10.284K,10.285K,10.286K,10.287K,10.288K,10.289K,10.29K,10.291K,10.292K,10.293K,10.294K,10.295K,10.296K,10.297K,10.298K,10.299K,10.3K,10.301K,10.302K,10.303K,10.304K,10.305K,10.306K,10.307K,10.308K,10.309K,10.31K,10.311K,10.312K,10.313K,10.314K,10.315K,10.316K,10.317K,10.318K,10.319K,10.32K,10.321K,10.322K,10.323K,10.324K,10.325K,10.326K,10.327K,10.328K,10.329K,10.33K,10.331K,10.332K,10.333K,10.334K,10.335K,10.336K,10.337K,10.338K,10.339K,10.34K,10.341K,10.342K,10.343K,10.344K,10.345K,10.346K,10.347K,10.348K,10.349K,10.35K,10.351K,10.352K,10.353K,10.354K,10.355K,10.356K,10.357K,10.358K,10.359K,10.36K,10.361K,10.362K,10.363K,10.364K,10.365K,10.366K,10.367K,10.368K,10.369K,10.37K,10.371K,10.372K,10.373K,10.374K,10.375K,10.376K,10.377K,10.378K,10.379K,10.38K,10.381K,10.382K,10.383K,10.384K,10.385K,10.386K,10.387K,10.388K,10.389K,10.39K,10.391K,10.392K,10.393K,10.394K,10.395K,10.396K,10.397K,10.398K,10.399K,10.4K,10.401K,10.402K,10.403K,10.404K,10.405K,10.406K,10.407K,10.408K,10.409K,10.41K,10.411K,10.412K,10.413K,10.414K,10.415K,10.416K,10.417K,10.418K,10.419K,10.42K,10.421K,10.422K,10.423K,10.424K,10.425K,10.426K,10.427K,10.428K,10.429K,10.43K,10.431K,10.432K,10.433K,10.434K,10.435K,10.436K,10.437K,10.438K,10.439K,10.44K,10.441K,10.442K,10.443K,10.444K,10.445K,10.446K,10.447K,10.448K,10.449K,10.45K,10.451K,10.452K,10.453K,10.454K,10.455K,10.456K,10.457K,10.458K,10.459K,10.46K,10.461K,10.462K,10.463K,10.464K,10.465K,10.466K,10.467K,10.468K,10.469K,10.47K,10.471K,10.472K,10.473K,10.474K,10.475K,10.476K,10.477K,10.478K,10.479K,10.48K,10.481K,10.482K,10.483K,10.484K,10.485K,10.486K,10.487K,10.488K,10.489K,10.49K,10.491K,10.492K,10.493K,10.494K,10.495K,10.496K,10.497K,10.498K,10.499K,10.5K,10.501K,10.502K,10.503K,10.504K,10.505K,10.506K,10.507K,10.508K,10.509K,10.51K,10.511K,10.512K,10.513K,10.514K,10.515K,10.516K,10.517K,10.518K,10.519K,10.52K,10.521K,10.522K,10.523K,10.524K,10.525K,10.526K,10.527K,10.528K,10.529K,10.53K,10.531K,10.532K,10.533K,10.534K,10.535K,10.536K,10.537K,10.538K,10.539K,10.54K,10.541K,10.542K,10.543K,10.544K,10.545K,10.546K,10.547K,10.548K,10.549K,10.55K,10.551K,10.552K,10.553K,10.554K,10.555K,10.556K,10.557K,10.558K,10.559K,10.56K,10.561K,10.562K,10.563K,10.564K,10.565K,10.566K,10.567K,10.568K,10.569K,10.57K,10.571K,10.572K,10.573K,10.574K,10.575K,10.576K,10.577K,10.578K,10.579K,10.58K,10.581K,10.582K,10.583K,10.584K,10.585K,10.586K,10.587K,10.588K,10.589K,10.59K,10.591K,10.592K,10.593K,10.594K,10.595K,10.596K,10.597K,10.598K,10.599K,10.6K,10.601K,10.602K,10.603K,10.604K,10.605K,10.606K,10.607K,10.608K,10.609K,10.61K,10.611K,10.612K,10.613K,10.614K,10.615K,10.616K,10.617K,10.618K,10.619K,10.62K,10.621K,10.622K,10.623K,10.624K,10.625K,10.626K,10.627K,10.628K,10.629K,10.63K,10.631K,10.632K,10.633K,10.634K,10.635K,10.636K,10.637K,10.638K,10.639K,10.64K,10.641K,10.642K,10.643K,10.644K,10.645K,10.646K,10.647K,10.648K,10.649K,10.65K,10.651K,10.652K,10.653K,10.654K,10.655K,10.656K,10.657K,10.658K,10.659K,10.66K,10.661K,10.662K,10.663K,10.664K,10.665K,10.666K,10.667K,10.668K,10.669K,10.67K,10.671K,10.672K,10.673K,10.674K,10.675K,10.676K,10.677K,10.678K,10.679K,10.68K,10.681K,10.682K,10.683K,10.684K,10.685K,10.686K,10.687K,10.688K,10.689K,10.69K,10.691K,10.692K,10.693K,10.694K,10.695K,10.696K,10.697K,10.698K,10.699K,10.7K,10.701K,10.702K,10.703K,10.704K,10.705K,10.706K,10.707K,10.708K,10.709K,10.71K,10.711K,10.712K,10.713K,10.714K,10.715K,10.716K,10.717K,10.718K,10.719K,10.72K,10.721K,10.722K,10.723K,10.724K,10.725K,10.726K,10.727K,10.728K,10.729K,10.73K,10.731K,10.732K,10.733K,10.734K,10.735K,10.736K,10.737K,10.738K,10.739K,10.74K,10.741K,10.742K,10.743K,10.744K,10.745K,10.746K,10.747K,10.748K,10.749K,10.75K,10.751K,10.752K,10.753K,10.754K,10.755K,10.756K,10.757K,10.758K,10.759K,10.76K,10.761K,10.762K,10.763K,10.764K,10.765K,10.766K,10.767K,10.768K,10.769K,10.77K,10.771K,10.772K,10.773K,10.774K,10.775K,10.776K,10.777K,10.778K,10.779K,10.78K,10.781K,10.782K,10.783K,10.784K,10.785K,10.786K,10.787K,10.788K,10.789K,10.79K,10.791K,10.792K,10.793K,10.794K,10.795K,10.796K,10.797K,10.798K,10.799K,10.8K,10.801K,10.802K,10.803K,10.804K,10.805K,10.806K,10.807K,10.808K,10.809K,10.81K,10.811K,10.812K,10.813K,10.814K,10.815K,10.816K,10.817K,10.818K,10.819K,10.82K,10.821K,10.822K,10.823K,10.824K,10.825K,10.826K,10.827K,10.828K,10.829K,10.83K,10.831K,10.832K,10.833K,10.834K,10.835K,10.836K,10.837K,10.838K,10.839K,10.84K,10.841K,10.842K,10.843K,10.844K,10.845K,10.846K,10.847K,10.848K,10.849K,10.85K,10.851K,10.852K,10.853K,10.854K,10.855K,10.856K,10.857K,10.858K,10.859K,10.86K,10.861K,10.862K,10.863K,10.864K,10.865K,10.866K,10.867K,10.868K,10.869K,10.87K,10.871K,10.872K,10.873K,10.874K,10.875K,10.876K,10.877K,10.878K,10.879K,10.88K,10.881K,10.882K,10.883K,10.884K,10.885K,10.886K,10.887K,10.888K,10.889K,10.89K,10.891K,10.892K,10.893K,10.894K,10.895K,10.896K,10.897K,10.898K,10.899K,10.9K,10.901K,10.902K,10.903K,10.904K,10.905K,10.906K,10.907K,10.908K,10.909K,10.91K,10.911K,10.912K,10.913K,10.914K,10.915K,10.916K,10.917K,10.918K,10.919K,10.92K,10.921K,10.922K,10.923K,10.924K,10.925K,10.926K,10.927K,10.928K,10.929K,10.93K,10.931K,10.932K,10.933K,10.934K,10.935K,10.936K,10.937K,10.938K,10.939K,10.94K,10.941K,10.942K,10.943K,10.944K,10.945K,10.946K,10.947K,10.948K,10.949K,10.95K,10.951K,10.952K,10.953K,10.954K,10.955K,10.956K,10.957K,10.958K,10.959K,10.96K,10.961K,10.962K,10.963K,10.964K,10.965K,10.966K,10.967K,10.968K,10.969K,10.97K,10.971K,10.972K,10.973K,10.974K,10.975K,10.976K,10.977K,10.978K,10.979K,10.98K,10.981K,10.982K,10.983K,10.984K,10.985K,10.986K,10.987K,10.988K,10.989K,10.99K,10.991K,10.992K,10.993K,10.994K,10.995K,10.996K,10.997K,10.998K,10.999K,11K,11.001K,11.002K,11.003K,11.004K,11.005K,11.006K,11.007K,11.008K,11.009K,11.01K,11.011K,11.012K,11.013K,11.014K,11.015K,11.016K,11.017K,11.018K,11.019K,11.02K,11.021K,11.022K,11.023K,11.024K,11.025K,11.026K,11.027K,11.028K,11.029K,11.03K,11.031K,11.032K,11.033K,11.034K,11.035K,11.036K,11.037K,11.038K,11.039K,11.04K,11.041K,11.042K,11.043K,11.044K,11.045K,11.046K,11.047K,11.048K,11.049K,11.05K,11.051K,11.052K,11.053K,11.054K,11.055K,11.056K,11.057K,11.058K,11.059K,11.06K,11.061K,11.062K,11.063K,11.064K,11.065K,11.066K,11.067K,11.068K,11.069K,11.07K,11.071K,11.072K,11.073K,11.074K,11.075K,11.076K,11.077K,11.078K,11.079K,11.08K,11.081K,11.082K,11.083K,11.084K,11.085K,11.086K,11.087K,11.088K,11.089K,11.09K,11.091K,11.092K,11.093K,11.094K,11.095K,11.096K,11.097K,11.098K,11.099K,11.1K,11.101K,11.102K,11.103K,11.104K,11.105K,11.106K,11.107K,11.108K,11.109K,11.11K,11.111K,11.112K,11.113K,11.114K,11.115K,11.116K,11.117K,11.118K,11.119K,11.12K,11.121K,11.122K,11.123K,11.124K,11.125K,11.126K,11.127K,11.128K,11.129K,11.13K,11.131K,11.132K,11.133K,11.134K,11.135K,11.136K,11.137K,11.138K,11.139K,11.14K,11.141K,11.142K,11.143K,11.144K,11.145K,11.146K,11.147K,11.148K,11.149K,11.15K,11.151K,11.152K,11.153K,11.154K,11.155K,11.156K,11.157K,11.158K,11.159K,11.16K,11.161K,11.162K,11.163K,11.164K,11.165K,11.166K,11.167K,11.168K,11.169K,11.17K,11.171K,11.172K,11.173K,11.174K,11.175K,11.176K,11.177K,11.178K,11.179K,11.18K,11.181K,11.182K,11.183K,11.184K,11.185K,11.186K,11.187K,11.188K,11.189K,11.19K,11.191K,11.192K,11.193K,11.194K,11.195K,11.196K,11.197K,11.198K,11.199K,11.2K,11.201K,11.202K,11.203K,11.204K,11.205K,11.206K,11.207K,11.208K,11.209K,11.21K,11.211K,11.212K,11.213K,11.214K,11.215K,11.216K,11.217K,11.218K,11.219K,11.22K,11.221K,11.222K,11.223K,11.224K,11.225K,11.226K,11.227K,11.228K,11.229K,11.23K,11.231K,11.232K,11.233K,11.234K,11.235K,11.236K,11.237K,11.238K,11.239K,11.24K,11.241K,11.242K,11.243K,11.244K,11.245K,11.246K,11.247K,11.248K,11.249K,11.25K,11.251K,11.252K,11.253K,11.254K,11.255K,11.256K,11.257K,11.258K,11.259K,11.26K,11.261K,11.262K,11.263K,11.264K,11.265K,11.266K,11.267K,11.268K,11.269K,11.27K,11.271K,11.272K,11.273K,11.274K,11.275K,11.276K,11.277K,11.278K,11.279K,11.28K,11.281K,11.282K,11.283K,11.284K,11.285K,11.286K,11.287K,11.288K,11.289K,11.29K,11.291K,11.292K,11.293K,11.294K,11.295K,11.296K,11.297K,11.298K,11.299K,11.3K,11.301K,11.302K,11.303K,11.304K,11.305K,11.306K,11.307K,11.308K,11.309K,11.31K,11.311K,11.312K,11.313K,11.314K,11.315K,11.316K,11.317K,11.318K,11.319K,11.32K,11.321K,11.322K,11.323K,11.324K,11.325K,11.326K,11.327K,11.328K,11.329K,11.33K,11.331K,11.332K,11.333K,11.334K,11.335K,11.336K,11.337K,11.338K,11.339K,11.34K,11.341K,11.342K,11.343K,11.344K,11.345K,11.346K,11.347K,11.348K,11.349K,11.35K,11.351K,11.352K,11.353K,11.354K,11.355K,11.356K,11.357K,11.358K,11.359K,11.36K,11.361K,11.362K,11.363K,11.364K,11.365K,11.366K,11.367K,11.368K,11.369K,11.37K,11.371K,11.372K,11.373K,11.374K,11.375K,11.376K,11.377K,11.378K,11.379K,11.38K,11.381K,11.382K,11.383K,11.384K,11.385K,11.386K,11.387K,11.388K,11.389K,11.39K,11.391K,11.392K,11.393K,11.394K,11.395K,11.396K,11.397K,11.398K,11.399K,11.4K,11.401K,11.402K,11.403K,11.404K,11.405K,11.406K,11.407K,11.408K,11.409K,11.41K,11.411K,11.412K,11.413K,11.414K,11.415K,11.416K,11.417K,11.418K,11.419K,11.42K,11.421K,11.422K,11.423K,11.424K,11.425K,11.426K,11.427K,11.428K,11.429K,11.43K,11.431K,11.432K,11.433K,11.434K,11.435K,11.436K,11.437K,11.438K,11.439K,11.44K,11.441K,11.442K,11.443K,11.444K,11.445K,11.446K,11.447K,11.448K,11.449K,11.45K,11.451K,11.452K,11.453K,11.454K,11.455K,11.456K,11.457K,11.458K,11.459K,11.46K,11.461K,11.462K,11.463K,11.464K,11.465K,11.466K,11.467K,11.468K,11.469K,11.47K,11.471K,11.472K,11.473K,11.474K,11.475K,11.476K,11.477K,11.478K,11.479K,11.48K,11.481K,11.482K,11.483K,11.484K,11.485K,11.486K,11.487K,11.488K,11.489K,11.49K,11.491K,11.492K,11.493K,11.494K,11.495K,11.496K,11.497K,11.498K,11.499K,11.5K,11.501K,11.502K,11.503K,11.504K,11.505K,11.506K,11.507K,11.508K,11.509K,11.51K,11.511K,11.512K,11.513K,11.514K,11.515K,11.516K,11.517K,11.518K,11.519K,11.52K,11.521K,11.522K,11.523K,11.524K,11.525K,11.526K,11.527K,11.528K,11.529K,11.53K,11.531K,11.532K,11.533K,11.534K,11.535K,11.536K,11.537K,11.538K,11.539K,11.54K,11.541K,11.542K,11.543K,11.544K,11.545K,11.546K,11.547K,11.548K,11.549K,11.55K,11.551K,11.552K,11.553K,11.554K,11.555K,11.556K,11.557K,11.558K,11.559K,11.56K,11.561K,11.562K,11.563K,11.564K,11.565K,11.566K,11.567K,11.568K,11.569K,11.57K,11.571K,11.572K,11.573K,11.574K,11.575K,11.576K,11.577K,11.578K,11.579K,11.58K,11.581K,11.582K,11.583K,11.584K,11.585K,11.586K,11.587K,11.588K,11.589K,11.59K,11.591K,11.592K,11.593K,11.594K,11.595K,11.596K,11.597K,11.598K,11.599K,11.6K,11.601K,11.602K,11.603K,11.604K,11.605K,11.606K,11.607K,11.608K,11.609K,11.61K,11.611K,11.612K,11.613K,11.614K,11.615K,11.616K,11.617K,11.618K,11.619K,11.62K,11.621K,11.622K,11.623K,11.624K,11.625K,11.626K,11.627K,11.628K,11.629K,11.63K,11.631K,11.632K,11.633K,11.634K,11.635K,11.636K,11.637K,11.638K,11.639K,11.64K,11.641K,11.642K,11.643K,11.644K,11.645K,11.646K,11.647K,11.648K,11.649K,11.65K,11.651K,11.652K,11.653K,11.654K,11.655K,11.656K,11.657K,11.658K,11.659K,11.66K,11.661K,11.662K,11.663K,11.664K,11.665K,11.666K,11.667K,11.668K,11.669K,11.67K,11.671K,11.672K,11.673K,11.674K,11.675K,11.676K,11.677K,11.678K,11.679K,11.68K,11.681K,11.682K,11.683K,11.684K,11.685K,11.686K,11.687K,11.688K,11.689K,11.69K,11.691K,11.692K,11.693K,11.694K,11.695K,11.696K,11.697K,11.698K,11.699K,11.7K,11.701K,11.702K,11.703K,11.704K,11.705K,11.706K,11.707K,11.708K,11.709K,11.71K,11.711K,11.712K,11.713K,11.714K,11.715K,11.716K,11.717K,11.718K,11.719K,11.72K,11.721K,11.722K,11.723K,11.724K,11.725K,11.726K,11.727K,11.728K,11.729K,11.73K,11.731K,11.732K,11.733K,11.734K,11.735K,11.736K,11.737K,11.738K,11.739K,11.74K,11.741K,11.742K,11.743K,11.744K,11.745K,11.746K,11.747K,11.748K,11.749K,11.75K,11.751K,11.752K,11.753K,11.754K,11.755K,11.756K,11.757K,11.758K,11.759K,11.76K,11.761K,11.762K,11.763K,11.764K,11.765K,11.766K,11.767K,11.768K,11.769K,11.77K,11.771K,11.772K,11.773K,11.774K,11.775K,11.776K,11.777K,11.778K,11.779K,11.78K,11.781K,11.782K,11.783K,11.784K,11.785K,11.786K,11.787K,11.788K,11.789K,11.79K,11.791K,11.792K,11.793K,11.794K,11.795K,11.796K,11.797K,11.798K,11.799K,11.8K,11.801K,11.802K,11.803K,11.804K,11.805K,11.806K,11.807K,11.808K,11.809K,11.81K,11.811K,11.812K,11.813K,11.814K,11.815K,11.816K,11.817K,11.818K,11.819K,11.82K,11.821K,11.822K,11.823K,11.824K,11.825K,11.826K,11.827K,11.828K,11.829K,11.83K,11.831K,11.832K,11.833K,11.834K,11.835K,11.836K,11.837K,11.838K,11.839K,11.84K,11.841K,11.842K,11.843K,11.844K,11.845K,11.846K,11.847K,11.848K,11.849K,11.85K,11.851K,11.852K,11.853K,11.854K,11.855K,11.856K,11.857K,11.858K,11.859K,11.86K,11.861K,11.862K,11.863K,11.864K,11.865K,11.866K,11.867K,11.868K,11.869K,11.87K,11.871K,11.872K,11.873K,11.874K,11.875K,11.876K,11.877K,11.878K,11.879K,11.88K,11.881K,11.882K,11.883K,11.884K,11.885K,11.886K,11.887K,11.888K,11.889K,11.89K,11.891K,11.892K,11.893K,11.894K,11.895K,11.896K,11.897K,11.898K,11.899K,11.9K,11.901K,11.902K,11.903K,11.904K,11.905K,11.906K,11.907K,11.908K,11.909K,11.91K,11.911K,11.912K,11.913K,11.914K,11.915K,11.916K,11.917K,11.918K,11.919K,11.92K,11.921K,11.922K,11.923K,11.924K,11.925K,11.926K,11.927K,11.928K,11.929K,11.93K,11.931K,11.932K,11.933K,11.934K,11.935K,11.936K,11.937K,11.938K,11.939K,11.94K,11.941K,11.942K,11.943K,11.944K,11.945K,11.946K,11.947K,11.948K,11.949K,11.95K,11.951K,11.952K,11.953K,11.954K,11.955K,11.956K,11.957K,11.958K,11.959K,11.96K,11.961K,11.962K,11.963K,11.964K,11.965K,11.966K,11.967K,11.968K,11.969K,11.97K,11.971K,11.972K,11.973K,11.974K,11.975K,11.976K,11.977K,11.978K,11.979K,11.98K,11.981K,11.982K,11.983K,11.984K,11.985K,11.986K,11.987K,11.988K,11.989K,11.99K,11.991K,11.992K,11.993K,11.994K,11.995K,11.996K,11.997K,11.998K,11.999K,12K,12.001K,12.002K,12.003K,12.004K,12.005K,12.006K,12.007K,12.008K,12.009K,12.01K,12.011K,12.012K,12.013K,12.014K,12.015K,12.016K,12.017K,12.018K,12.019K,12.02K,12.021K,12.022K,12.023K,12.024K,12.025K,12.026K,12.027K,12.028K,12.029K,12.03K,12.031K,12.032K,12.033K,12.034K,12.035K,12.036K,12.037K,12.038K,12.039K,12.04K,12.041K,12.042K,12.043K,12.044K,12.045K,12.046K,12.047K,12.048K,12.049K,12.05K,12.051K,12.052K,12.053K,12.054K,12.055K,12.056K,12.057K,12.058K,12.059K,12.06K,12.061K,12.062K,12.063K,12.064K,12.065K,12.066K,12.067K,12.068K,12.069K,12.07K,12.071K,12.072K,12.073K,12.074K,12.075K,12.076K,12.077K,12.078K,12.079K,12.08K,12.081K,12.082K,12.083K,12.084K,12.085K,12.086K,12.087K,12.088K,12.089K,12.09K,12.091K,12.092K,12.093K,12.094K,12.095K,12.096K,12.097K,12.098K,12.099K,12.1K,12.101K,12.102K,12.103K,12.104K,12.105K,12.106K,12.107K,12.108K,12.109K,12.11K,12.111K,12.112K,12.113K,12.114K,12.115K,12.116K,12.117K,12.118K,12.119K,12.12K,12.121K,12.122K,12.123K,12.124K,12.125K,12.126K,12.127K,12.128K,12.129K,12.13K,12.131K,12.132K,12.133K,12.134K,12.135K,12.136K,12.137K,12.138K,12.139K,12.14K,12.141K,12.142K,12.143K,12.144K,12.145K,12.146K,12.147K,12.148K,12.149K,12.15K,12.151K,12.152K,12.153K,12.154K,12.155K,12.156K,12.157K,12.158K,12.159K,12.16K,12.161K,12.162K,12.163K,12.164K,12.165K,12.166K,12.167K,12.168K,12.169K,12.17K,12.171K,12.172K,12.173K,12.174K,12.175K,12.176K,12.177K,12.178K,12.179K,12.18K,12.181K,12.182K,12.183K,12.184K,12.185K,12.186K,12.187K,12.188K,12.189K,12.19K,12.191K,12.192K,12.193K,12.194K,12.195K,12.196K,12.197K,12.198K,12.199K,12.2K,12.201K,12.202K,12.203K,12.204K,12.205K,12.206K,12.207K,12.208K,12.209K,12.21K,12.211K,12.212K,12.213K,12.214K,12.215K,12.216K,12.217K,12.218K,12.219K,12.22K,12.221K,12.222K,12.223K,12.224K,12.225K,12.226K,12.227K,12.228K,12.229K,12.23K,12.231K,12.232K,12.233K,12.234K,12.235K,12.236K,12.237K,12.238K,12.239K,12.24K,12.241K,12.242K,12.243K,12.244K,12.245K,12.246K,12.247K,12.248K,12.249K,12.25K,12.251K,12.252K,12.253K,12.254K,12.255K,12.256K,12.257K,12.258K,12.259K,12.26K,12.261K,12.262K,12.263K,12.264K,12.265K,12.266K,12.267K,12.268K,12.269K,12.27K,12.271K,12.272K,12.273K,12.274K,12.275K,12.276K,12.277K,12.278K,12.279K,12.28K,12.281K,12.282K,12.283K,12.284K,12.285K,12.286K,12.287K,12.288K,12.289K,12.29K,12.291K,12.292K,12.293K,12.294K,12.295K,12.296K,12.297K,12.298K,12.299K,12.3K,12.301K,12.302K,12.303K,12.304K,12.305K,12.306K,12.307K,12.308K,12.309K,12.31K,12.311K,12.312K,12.313K,12.314K,12.315K,12.316K,12.317K,12.318K,12.319K,12.32K,12.321K,12.322K,12.323K,12.324K,12.325K,12.326K,12.327K,12.328K,12.329K,12.33K,12.331K,12.332K,12.333K,12.334K,12.335K,12.336K,12.337K,12.338K,12.339K,12.34K,12.341K,12.342K,12.343K,12.344K,12.345K,12.346K,12.347K,12.348K,12.349K,12.35K,12.351K,12.352K,12.353K,12.354K,12.355K,12.356K,12.357K,12.358K,12.359K,12.36K,12.361K,12.362K,12.363K,12.364K,12.365K,12.366K,12.367K,12.368K,12.369K,12.37K,12.371K,12.372K,12.373K,12.374K,12.375K,12.376K,12.377K,12.378K,12.379K,12.38K,12.381K,12.382K,12.383K,12.384K,12.385K,12.386K,12.387K,12.388K,12.389K,12.39K,12.391K,12.392K,12.393K,12.394K,12.395K,12.396K,12.397K,12.398K,12.399K,12.4K,12.401K,12.402K,12.403K,12.404K,12.405K,12.406K,12.407K,12.408K,12.409K,12.41K,12.411K,12.412K,12.413K,12.414K,12.415K,12.416K,12.417K,12.418K,12.419K,12.42K,12.421K,12.422K,12.423K,12.424K,12.425K,12.426K,12.427K,12.428K,12.429K,12.43K,12.431K,12.432K,12.433K,12.434K,12.435K,12.436K,12.437K,12.438K,12.439K,12.44K,12.441K,12.442K,12.443K,12.444K,12.445K,12.446K,12.447K,12.448K,12.449K,12.45K,12.451K,12.452K,12.453K,12.454K,12.455K,12.456K,12.457K,12.458K,12.459K,12.46K,12.461K,12.462K,12.463K,12.464K,12.465K,12.466K,12.467K,12.468K,12.469K,12.47K,12.471K,12.472K,12.473K,12.474K,12.475K,12.476K,12.477K,12.478K,12.479K,12.48K,12.481K,12.482K,12.483K,12.484K,12.485K,12.486K,12.487K,12.488K,12.489K,12.49K,12.491K,12.492K,12.493K,12.494K,12.495K,12.496K,12.497K,12.498K,12.499K,12.5K,12.501K,12.502K,12.503K,12.504K,12.505K,12.506K,12.507K,12.508K,12.509K,12.51K,12.511K,12.512K,12.513K,12.514K,12.515K,12.516K,12.517K,12.518K,12.519K,12.52K,12.521K,12.522K,12.523K,12.524K,12.525K,12.526K,12.527K,12.528K,12.529K,12.53K,12.531K,12.532K,12.533K,12.534K,12.535K,12.536K,12.537K,12.538K,12.539K,12.54K,12.541K,12.542K,12.543K,12.544K,12.545K,12.546K,12.547K,12.548K,12.549K,12.55K,12.551K,12.552K,12.553K,12.554K,12.555K,12.556K,12.557K,12.558K,12.559K,12.56K,12.561K,12.562K,12.563K,12.564K,12.565K,12.566K,12.567K,12.568K,12.569K,12.57K,12.571K,12.572K,12.573K,12.574K,12.575K,12.576K,12.577K,12.578K,12.579K,12.58K,12.581K,12.582K,12.583K,12.584K,12.585K,12.586K,12.587K,12.588K,12.589K,12.59K,12.591K,12.592K,12.593K,12.594K,12.595K,12.596K,12.597K,12.598K,12.599K,12.6K,12.601K,12.602K,12.603K,12.604K,12.605K,12.606K,12.607K,12.608K,12.609K,12.61K,12.611K,12.612K,12.613K,12.614K,12.615K,12.616K,12.617K,12.618K,12.619K,12.62K,12.621K,12.622K,12.623K,12.624K,12.625K,12.626K,12.627K,12.628K,12.629K,12.63K,12.631K,12.632K,12.633K,12.634K,12.635K,12.636K,12.637K,12.638K,12.639K,12.64K,12.641K,12.642K,12.643K,12.644K,12.645K,12.646K,12.647K,12.648K,12.649K,12.65K,12.651K,12.652K,12.653K,12.654K,12.655K,12.656K,12.657K,12.658K,12.659K,12.66K,12.661K,12.662K,12.663K,12.664K,12.665K,12.666K,12.667K,12.668K,12.669K,12.67K,12.671K,12.672K,12.673K,12.674K,12.675K,12.676K,12.677K,12.678K,12.679K,12.68K,12.681K,12.682K,12.683K,12.684K,12.685K,12.686K,12.687K,12.688K,12.689K,12.69K,12.691K,12.692K,12.693K,12.694K,12.695K,12.696K,12.697K,12.698K,12.699K,12.7K,12.701K,12.702K,12.703K,12.704K,12.705K,12.706K,12.707K,12.708K,12.709K,12.71K,12.711K,12.712K,12.713K,12.714K,12.715K,12.716K,12.717K,12.718K,12.719K,12.72K,12.721K,12.722K,12.723K,12.724K,12.725K,12.726K,12.727K,12.728K,12.729K,12.73K,12.731K,12.732K,12.733K,12.734K,12.735K,12.736K,12.737K,12.738K,12.739K,12.74K,12.741K,12.742K,12.743K,12.744K,12.745K,12.746K,12.747K,12.748K,12.749K,12.75K,12.751K,12.752K,12.753K,12.754K,12.755K,12.756K,12.757K,12.758K,12.759K,12.76K,12.761K,12.762K,12.763K,12.764K,12.765K,12.766K,12.767K,12.768K,12.769K,12.77K,12.771K,12.772K,12.773K,12.774K,12.775K,12.776K,12.777K,12.778K,12.779K,12.78K,12.781K,12.782K,12.783K,12.784K,12.785K,12.786K,12.787K,12.788K,12.789K,12.79K,12.791K,12.792K,12.793K,12.794K,12.795K,12.796K,12.797K,12.798K,12.799K,12.8K,12.801K,12.802K,12.803K,12.804K,12.805K,12.806K,12.807K,12.808K,12.809K,12.81K,12.811K,12.812K,12.813K,12.814K,12.815K,12.816K,12.817K,12.818K,12.819K,12.82K,12.821K,12.822K,12.823K,12.824K,12.825K,12.826K,12.827K,12.828K,12.829K,12.83K,12.831K,12.832K,12.833K,12.834K,12.835K,12.836K,12.837K,12.838K,12.839K,12.84K,12.841K,12.842K,12.843K,12.844K,12.845K,12.846K,12.847K,12.848K,12.849K,12.85K,12.851K,12.852K,12.853K,12.854K,12.855K,12.856K,12.857K,12.858K,12.859K,12.86K,12.861K,12.862K,12.863K,12.864K,12.865K,12.866K,12.867K,12.868K,12.869K,12.87K,12.871K,12.872K,12.873K,12.874K,12.875K,12.876K,12.877K,12.878K,12.879K,12.88K,12.881K,12.882K,12.883K,12.884K,12.885K,12.886K,12.887K,12.888K,12.889K,12.89K,12.891K,12.892K,12.893K,12.894K,12.895K,12.896K,12.897K,12.898K,12.899K,12.9K,12.901K,12.902K,12.903K,12.904K,12.905K,12.906K,12.907K,12.908K,12.909K,12.91K,12.911K,12.912K,12.913K,12.914K,12.915K,12.916K,12.917K,12.918K,12.919K,12.92K,12.921K] L_j ['id','Std_id','Obj_id_i','Location','Roww','Description','id','Ident','Name','Unit','Objtype_id','Page','Wiki_id','Newest'] 56,144,1 48,12 ['id','Std_id','Obj_id_i','Location','Roww','Description','id','Ident','Name','Unit','Objtype_id','Page','Wiki_id','Newest'] O_i [0] 56,24,1 48,13 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404] O_j ['id','Ident','Name','Unit','Objtype_id','Page','Wiki_id','Newest'] 56,48,1 48,13 ['id','Ident','Name','Unit','Objtype_id','Page','Wiki_id','Newest'] Sett This node checks the variables listed in Var_for_rdb and makes an index of those that are NOT found in the result database. This is then used as an index in Inp_var for adding variable information. index i:= copyindex(S_i); index j:= copyindex(S_j); Sett1[S_i=i, S_j=j] 400,72,1 48,13 1,1,0,1,1,1,0,0,0,0 2,378,21,493,501 2,227,134,319,515,0,MIDM 19661,54073,65535 [Sys_localindex('J'),Sys_localindex('I')] [Self,1,Sys_localindex('I'),1,Sys_localindex('J'),1] Item This node checks the variables listed in Var_for_rdb and makes an index of those that are NOT found in the result database. This is then used as an index in Inp_var for adding variable information. index i:= copyindex(It_i); index j:= copyindex(It_j); Item1[it_i=i, it_j=j] 400,120,1 48,13 1,1,0,1,1,1,0,0,0,0 2,378,21,493,501 2,298,216,382,519,0,MIDM 19661,54073,65535 [Sys_localindex('J'),Sys_localindex('I')] [Self,1,Sys_localindex('I'),1,Sys_localindex('J'),1] It_i [0] 56,168,1 48,13 It_j ['id','Sett_id','Obj_id','Fail'] 56,192,1 48,13 S_i [0] 56,72,1 48,13 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28] S_j ['id','Obj_id','Settype_id'] 56,96,1 48,13 ['id','Obj_id','Settype_id'] Dim 0 280,160,1 48,13 1,1,1,1,1,1,0,0,0,0 2,89,98,476,224 2,604,56,556,489,0,MIDM 39325,65535,39321 [D_i,D_j] [D_j,D_i] Ind 0 280,184,1 48,13 1,1,1,1,1,1,0,0,0,0 2,380,47,476,296 2,232,242,874,303,0,MIDM 2,12,22,876,493,0,MIDM 39325,65535,39321 [I_j,I_i] [I_j,I_i] Loc 0 280,96,1 48,13 1,1,1,1,1,1,0,0,0,0 2,370,45,476,445 2,518,523,725,303,0,MIDM 2,404,34,750,516,0,MIDM 39325,65535,39321 [L_j,L_i] [L_j,L_i] Obj This node checks the variables listed in Var_for_rdb and makes an index of those that are NOT found in the result database. This is then used as an index in Inp_var for adding variable information. 0 280,48,1 48,13 1,1,1,1,1,1,0,0,0,0 2,378,21,493,501 2,152,162,1057,343,0,MIDM 2,573,21,700,421,0,MIDM 39325,65535,39321 [O_j,O_i] [O_j,O_i] [Self,1,Sys_localindex('I'),1,Sys_localindex('J'),1] Sett This node checks the variables listed in Var_for_rdb and makes an index of those that are NOT found in the result database. This is then used as an index in Inp_var for adding variable information. 0 280,72,1 48,13 1,1,1,1,1,1,0,0,0,0 2,378,21,493,501 2,529,143,700,421,0,MIDM 39325,65535,39321 [S_j,S_i] [S_i,S_j] [Self,1,Sys_localindex('I'),1,Sys_localindex('J'),1] Item This node checks the variables listed in Var_for_rdb and makes an index of those that are NOT found in the result database. This is then used as an index in Inp_var for adding variable information. 0 280,120,1 48,13 1,1,1,1,1,1,0,0,0,0 2,378,21,493,501 2,529,143,700,421,0,MIDM 39325,65535,39321 [It_j,It_i] [It_i,It_j] [Self,1,Sys_localindex('I'),1,Sys_localindex('J'),1] (var, table) Write1 if size(var)>0 then appendtablesql(var,var.i, var.j, table&' ') 56,368,1 48,13 2,284,58,476,224 var,table '' 168,280,0 52,12 1,1,1,1,1,1,0,0,0,0 2,163,375,476,224 [Formnode Writerpsswd1] 52425,39321,65535 Platform Choice(Self,2,False,1) 320,328,1 48,12 [Formnode Platform1] 52425,39321,65535 ['Lumina AWP','THL computer'] Object info subtable(object_info1[varinfo=info]) 424,336,1 48,24 2,599,363,416,303,0,MIDM [Formnode Object_info3] 52425,39321,65535 [Self,Object_info] ['','',''] ['Ident','Number of indices','Parameter name','Probabilistic?'] 424,368,0 48,12 1,1,1,1,1,1,0,0,0,0 Variables 0 416,152,1 160,13 1,0,0,1,0,0,0,72,0,1 52425,39321,65535 Object_info1 Platform 0 416,100,1 160,12 1,0,0,1,0,0,0,142,0,1 52425,39321,65535 Platform Writerpsswd 0 416,124,1 160,12 1,0,0,1,0,0,0,142,0,1 52425,39321,65535 Writerpsswd C) For very large variables: Upload only the object and location information. Create csv files of other data to c:\temp\ and upload them separately (you need a direct access to the Opasnet Base). 416,248,-1 160,72 1,0,0,1,0,1,0,,0, Detailed help for Analytica use jtue 8. kesta 2009 14:27 48,24 404,32,1 116,16 1,681,15,586,564,17 Follow these instructions if you have Analytica Enterprise and have an ODBC connection to the Opasnet Base. Read also the simplified help; not everything is repeated here. 284,36,-1 276,28 1,0,0,1,0,1,0,,0, 65535,65532,19661 Platform: You must choose THL computer if you are not using the AWP web interface. 284,92,-1 276,20 1,0,0,1,0,1,0,,0, Writerpsswd: You must know the writer password for the Opasnet Base if you are not using the AWP web interface. 284,149,-1 276,29 1,0,0,1,0,1,0,,0, Object info: - Data source: 1 means that you are copy-pasting data to the 'Observations' field. 2 means that you have a 2D table in an Analytica node. The node must have column index .j (note: it is a local index!) and row index .i. The names of the columns must be in the index .j, and the first row must contain data. 3 means that you have a typical Analytica node with n indices; one of the indices may be Run. The node is transformed into a 2D table using MDArrayToTable. - Analytica identifier is the identifier of the node to be used. The name must be given between 'quotation marks', i.e. as text. - Ident: like in the simplified upload. - Number of indices: like in the simplified upload if data source 2 is used; for 3, the number of indices comes from the node, and this entry is ignored. - Parameter name: like in the simplified upload if data source 2 is used; for 3, the parameter is implicit, and this entry is ignored. - Probabilistic?: like in the simplified upload if data source 2 is used; for 3, if this entry is 1, the sample mode is used and the full distribution is saved, if the entry is not 1, the mid mode is used. - Append to upload: like in the simplified upload. 284,357,-1 276,173 1,0,0,1,0,1,0,,0, Enter anacode "index vehicle_type:= ['Bus','Minibus','Car d','Car g']; var Car_maintenance:= Triangular( 0.03, 0.058, 0.086 ); var Fuel_price:= (var a:= 0.95*triangular(0.8,1,1.2); var b:= 1.22*triangular(0.8,1,1.2); array(Vehicle_type,[a,a,a,b])); var Fuel_consumption:= (var a:= (8.7/100)*Triangular(0.75,1,1.25); var b:= (5.7/100)*Triangular(0.75,1,1.25); var c:= (8/100)*Triangular(0.5,1,1.5); a:= array(Vehicle_type,[a,a,b,c]); ); fuel_price*fuel_consumption+car_maintenance" 192,368,1 48,24 [Formnode Enter_anacode1] 52425,39321,65535 Enter anacode 0 416,392,1 160,56 1,0,0,1,0,0,0,182,0,1 52425,39321,65535 Enter_anacode Example code index vehicle_type:= ['Bus','Minibus','Car d','Car g']; var Car_maintenance:= Triangular( 0.03, 0.058, 0.086 ); var Fuel_price:= (var a:= 0.95*triangular(0.8,1,1.2); var b:= 1.22*triangular(0.8,1,1.2); array(Vehicle_type,[a,a,a,b])); var Fuel_consumption:= (var a:= (8.7/100)*Triangular(0.75,1,1.25); var b:= (5.7/100)*Triangular(0.75,1,1.25); var c:= (8/100)*Triangular(0.5,1,1.5); a:= array(Vehicle_type,[a,a,b,c]); ); fuel_price*fuel_consumption+car_maintenance 80,368,1 48,24 Code node evaluate(Enter_anacode) 192,424,1 48,16 2,104,114,416,303,0,SAMP [Undefined,Sys_localindex('VEHICLE_TYPE'),Undefined,Undefined,Undefined,1] [1,0,0,0] Providing upload data: 260,332,-1 252,12 1,0,0,1,0,1,0,,0, 65535,65532,19661 Uploading data: 260,604,-1 252,12 1,0,0,1,0,1,0,,0, 65535,65532,19661 A) The default: Upload all data directly to Opasnet Base. 128,676,-1 120,60 1,0,0,1,0,1,0,,0, B) Upload so that the actual data is not visible without a password. Metadata is visible anyway. 384,676,-1 128,60 1,0,0,1,0,1,0,,0, 2,693,146,476,224 Observations 0 264,448,1 248,80 1,0,0,1,0,0,0,366,0,1 52425,39321,65535 Observations2 TabIndex:3 Basic help and explanations jtue 8. kesta 2009 14:27 48,24 248,184,1 120,16 1,684,5,586,824,17 Object info: * You must give your Opasnet username and password to upload data. The username will be stored together with the upload information. *Object info contains the most important metadata about your data. - Data source must be 1 when using AWP. - Analytica identifier is ignored when using AWP. - Ident is the page identifier in Opasnet. If your study or variable does not already have a page, you must create one. The identifier is found in the metadata box in the top right corner of the Opasnet page. - Number of indices is the number of columns that contain explanatory information (see below). - Parameter name is a common name for all data columns. If omitted, 'Parameter' is used. See below for more details. - If "Probabilistic?" is 1, then each row of the data table is considered a random draw from a data pool. Note that it is assumed that the index values are assumed the same in all rows, and only the index values of the first row are stored. - Append to upload: Typically, each data upload event is given a separate identifier. If you want to continue an existing upload of the same object, you can give the number of that upload, and the new data will be appended. 284,408,-1 276,176 1,0,0,1,0,1,0,,0, Data structure: * Data must be uploaded in the format of a two-dimensional table. The table has rows, one observation in each row, and columns (fields). * There are two kinds of columns. A) Index columns (also called independent variables in statistics) contain determinants of the actual data, such as sex of the observed individuals, or the observation year. B) Parameter columns (also called dependent variables) contain the actual data about the observations, given the index information. * The first row must contain the names of the columns, i.e. the indices and parameters. These names are used when creating indices in the Opasnet Base. 284,128,-1 276,96 1,0,0,1,0,1,0,,0, Observations: * The data are copy-pasted into the field 'Observations'. The source of the data can be any spreadsheet or text processor, as long as each column is separated by a tab, and each row by a line break. Note that the pasted data should be between 'quotation marks'. 284,640,-1 276,48 1,0,0,1,0,1,0,,0, Data info: Fill in the additional information about the data. These are asked for the object, and also for all the indices and the parameter. Note that is an entry with the identical Ident already exists in the Opasnet Base, this information will NOT be uploaded but the existing information will be used instead. All information should be between 'quotation marks' so that they are not mistakenly interpreted as Analytica node identifiers. - Name: a description that may be longer than an identifier. This is typically identical to the respective page in Opasnet. - Unit: unit of measurement. 284,788,-1 276,92 1,0,0,1,0,1,0,,0, Follow these instructions if you are using the Internet interface (AWP). 284,20,-1 276,12 1,0,0,1,0,1,0,,0, 65535,65532,19661 Uploading: * There are two ways of uploading data. A) 'Upload data' is a public format, and all details are openly available. B) 'Upload non-public data' stores the actual data (the values in the parameter columns) into a database that requires a password for reading. However, all other information (including upload metadata and the data in the index fields) are openly available. 284,944,-1 276,56 1,0,0,1,0,1,0,,0, Providing general information: 260,220,-1 252,12 1,0,0,1,0,1,0,,0, 65535,65532,19661 Data table 1 408,565,1 96,13 1,0,0,1,0,0,0,72,0,1 Data_table Check that your data table looks sensible. 356,540,-1 148,12 Object info 0 168,292,1 160,12 1,0,0,1,0,0,0,72,0,1 52425,39321,65535 Object_info2 View the uploaded data The largest id values for the selected Opasnet Base tables. The table is updated by pressing the R_cardinals button. get_mean(object_info1[varinfo='Ident']) 248,760,1 88,16 2,440,279,476,332 2,193,270,416,303,0,MIDM 2,43,59,735,421,0,MIDM 39325,65535,39321 [Sys_localindex('IN1'),Sys_localindex('IN2')] 2,I,4,2,0,0,4,0,$,0,"ABBREV",0 [Sys_localindex('IN3'),1,Sys_localindex('IN4'),1,Sys_localindex('IN5'),1,Sys_localindex('IN6'),1,Sys_localindex('IN7'),1,Sys_localindex('IN8'),13,Sys_localindex('IN2'),1,Sys_localindex('IN1'),1] <a href="http://en.opasnet.org/w/Image:Opasnet_base_connection.ANA">Wiki description</a> 592,40,-1 48,28